From 636e0840d83872f295caf8129176eeb0d15fa876 Mon Sep 17 00:00:00 2001 From: metamaskbot Date: Thu, 13 Feb 2025 22:48:27 +0000 Subject: [PATCH 001/473] bump semvar version to 7.41.0 && build version to 1554 --- android/app/build.gradle | 4 ++-- bitrise.yml | 8 ++++---- ios/MetaMask.xcodeproj/project.pbxproj | 24 ++++++++++++------------ package.json | 2 +- 4 files changed, 19 insertions(+), 19 deletions(-) diff --git a/android/app/build.gradle b/android/app/build.gradle index a052644afa5b..0d721ebcec70 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -178,8 +178,8 @@ android { applicationId "io.metamask" minSdkVersion rootProject.ext.minSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion - versionName "7.39.0" - versionCode 1544 + versionName "7.41.0" + versionCode 1554 testBuildType System.getProperty('testBuildType', 'debug') missingDimensionStrategy 'react-native-camera', 'general' testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" diff --git a/bitrise.yml b/bitrise.yml index 39c671de4a35..56575c37a309 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -1827,16 +1827,16 @@ app: PROJECT_LOCATION_IOS: ios - opts: is_expand: false - VERSION_NAME: 7.39.0 + VERSION_NAME: 7.41.0 - opts: is_expand: false - VERSION_NUMBER: 1544 + VERSION_NUMBER: 1554 - opts: is_expand: false - FLASK_VERSION_NAME: 7.39.0 + FLASK_VERSION_NAME: 7.41.0 - opts: is_expand: false - FLASK_VERSION_NUMBER: 1544 + FLASK_VERSION_NUMBER: 1554 - opts: is_expand: false ANDROID_APK_LINK: '' diff --git a/ios/MetaMask.xcodeproj/project.pbxproj b/ios/MetaMask.xcodeproj/project.pbxproj index 93e2c6db8f50..4297fd6c18a5 100644 --- a/ios/MetaMask.xcodeproj/project.pbxproj +++ b/ios/MetaMask.xcodeproj/project.pbxproj @@ -1380,7 +1380,7 @@ CODE_SIGN_IDENTITY = "Apple Development"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1544; + CURRENT_PROJECT_VERSION = 1554; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = 48XVW22RCG; @@ -1418,7 +1418,7 @@ "${inherited}", ); LLVM_LTO = YES; - MARKETING_VERSION = 7.39.0; + MARKETING_VERSION = 7.41.0; ONLY_ACTIVE_ARCH = YES; OTHER_CFLAGS = "$(inherited)"; OTHER_LDFLAGS = ( @@ -1449,7 +1449,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMask.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1544; + CURRENT_PROJECT_VERSION = 1554; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 48XVW22RCG; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 48XVW22RCG; @@ -1484,7 +1484,7 @@ "${inherited}", ); LLVM_LTO = YES; - MARKETING_VERSION = 7.39.0; + MARKETING_VERSION = 7.41.0; ONLY_ACTIVE_ARCH = NO; OTHER_CFLAGS = "$(inherited)"; OTHER_LDFLAGS = ( @@ -1514,7 +1514,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMaskDebug.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1544; + CURRENT_PROJECT_VERSION = 1554; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = 48XVW22RCG; @@ -1551,7 +1551,7 @@ "\"$(SRCROOT)/MetaMask/System/Library/Frameworks\"", ); LLVM_LTO = YES; - MARKETING_VERSION = 7.39.0; + MARKETING_VERSION = 7.41.0; ONLY_ACTIVE_ARCH = YES; OTHER_CFLAGS = "$(inherited)"; OTHER_LDFLAGS = ( @@ -1580,7 +1580,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMask.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1544; + CURRENT_PROJECT_VERSION = 1554; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 48XVW22RCG; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 48XVW22RCG; @@ -1615,7 +1615,7 @@ "\"$(SRCROOT)/MetaMask/System/Library/Frameworks\"", ); LLVM_LTO = YES; - MARKETING_VERSION = 7.39.0; + MARKETING_VERSION = 7.41.0; ONLY_ACTIVE_ARCH = NO; OTHER_CFLAGS = "$(inherited)"; OTHER_LDFLAGS = ( @@ -1739,7 +1739,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMaskDebug.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1544; + CURRENT_PROJECT_VERSION = 1554; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = 48XVW22RCG; @@ -1776,7 +1776,7 @@ "\"$(SRCROOT)/MetaMask/System/Library/Frameworks\"", ); LLVM_LTO = YES; - MARKETING_VERSION = 7.39.0; + MARKETING_VERSION = 7.41.0; ONLY_ACTIVE_ARCH = YES; OTHER_CFLAGS = ( "$(inherited)", @@ -1808,7 +1808,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMask.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1544; + CURRENT_PROJECT_VERSION = 1554; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 48XVW22RCG; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 48XVW22RCG; @@ -1843,7 +1843,7 @@ "\"$(SRCROOT)/MetaMask/System/Library/Frameworks\"", ); LLVM_LTO = YES; - MARKETING_VERSION = 7.39.0; + MARKETING_VERSION = 7.41.0; ONLY_ACTIVE_ARCH = NO; OTHER_CFLAGS = ( "$(inherited)", diff --git a/package.json b/package.json index b5a84527f424..cc51a1a092c7 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "metamask", - "version": "7.39.0", + "version": "7.41.0", "private": true, "scripts": { "audit:ci": "./scripts/yarn-audit.sh", From 20a58d3d21e7de29d7796126ec3f577efe723e38 Mon Sep 17 00:00:00 2001 From: metamaskbot Date: Thu, 13 Feb 2025 23:16:59 +0000 Subject: [PATCH 002/473] bump semvar version to 7.41.0 && build version to 1557 --- android/app/build.gradle | 2 +- bitrise.yml | 4 ++-- ios/MetaMask.xcodeproj/project.pbxproj | 12 ++++++------ 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/android/app/build.gradle b/android/app/build.gradle index 0d721ebcec70..0a9613ced5df 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -179,7 +179,7 @@ android { minSdkVersion rootProject.ext.minSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion versionName "7.41.0" - versionCode 1554 + versionCode 1557 testBuildType System.getProperty('testBuildType', 'debug') missingDimensionStrategy 'react-native-camera', 'general' testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" diff --git a/bitrise.yml b/bitrise.yml index 56575c37a309..b6216af65ee5 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -1830,13 +1830,13 @@ app: VERSION_NAME: 7.41.0 - opts: is_expand: false - VERSION_NUMBER: 1554 + VERSION_NUMBER: 1557 - opts: is_expand: false FLASK_VERSION_NAME: 7.41.0 - opts: is_expand: false - FLASK_VERSION_NUMBER: 1554 + FLASK_VERSION_NUMBER: 1557 - opts: is_expand: false ANDROID_APK_LINK: '' diff --git a/ios/MetaMask.xcodeproj/project.pbxproj b/ios/MetaMask.xcodeproj/project.pbxproj index 4297fd6c18a5..d2716640306e 100644 --- a/ios/MetaMask.xcodeproj/project.pbxproj +++ b/ios/MetaMask.xcodeproj/project.pbxproj @@ -1380,7 +1380,7 @@ CODE_SIGN_IDENTITY = "Apple Development"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1554; + CURRENT_PROJECT_VERSION = 1557; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = 48XVW22RCG; @@ -1449,7 +1449,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMask.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1554; + CURRENT_PROJECT_VERSION = 1557; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 48XVW22RCG; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 48XVW22RCG; @@ -1514,7 +1514,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMaskDebug.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1554; + CURRENT_PROJECT_VERSION = 1557; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = 48XVW22RCG; @@ -1580,7 +1580,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMask.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1554; + CURRENT_PROJECT_VERSION = 1557; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 48XVW22RCG; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 48XVW22RCG; @@ -1739,7 +1739,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMaskDebug.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1554; + CURRENT_PROJECT_VERSION = 1557; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = 48XVW22RCG; @@ -1808,7 +1808,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMask.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1554; + CURRENT_PROJECT_VERSION = 1557; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 48XVW22RCG; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 48XVW22RCG; From 14bb044e8a1e208fc30dc45ab6ea7da395b3f993 Mon Sep 17 00:00:00 2001 From: MetaMask Bot <37885440+metamaskbot@users.noreply.github.com> Date: Thu, 13 Feb 2025 19:58:50 -0330 Subject: [PATCH 003/473] chore: chore/7.41.0-Changelog (#13511) This PR updates the change log for 7.41.0 and generates the test plan here [commit.csv](https://github.com/MetaMask/metamask-mobile/blob/chore/7.41.0-Changelog/commits.csv) --------- Co-authored-by: metamaskbot --- CHANGELOG.md | 605 +++++++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 544 insertions(+), 61 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0b7d785b425e..d49565ac274b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,5 @@ # Changelog + All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), @@ -6,8 +7,88 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +## [7.41.0] + +### Uncategorized + +- bump semvar version to 7.41.0 && build version to 1557 +- bump semvar version to 7.41.0 && build version to 1554 +- fix(13491): update wallet creation flow styles ([#13501](https://github.com/MetaMask/metamask-mobile/pull/13501)) +- chore: UI improvements ([#13463](https://github.com/MetaMask/metamask-mobile/pull/13463)) +- fix(action): handle edge case of issue that can't be accessed by access token ([#13442](https://github.com/MetaMask/metamask-mobile/pull/13442)) +- chore: bump `@metamask/base-controller` to `^8.0.0` ([#13460](https://github.com/MetaMask/metamask-mobile/pull/13460)) +- chore: main stable sync 7.39.0 ([#13451](https://github.com/MetaMask/metamask-mobile/pull/13451)) +- chore: Rename ControllerMessenger to Messenger ([#13302](https://github.com/MetaMask/metamask-mobile/pull/13302)) +- fix(action): indicate working directory (again) ([#13425](https://github.com/MetaMask/metamask-mobile/pull/13425)) +- chore(deps): bump `elliptic` to `^6.6.0` ([#12979](https://github.com/MetaMask/metamask-mobile/pull/12979)) +- fix(action): indicate working directory ([#13419](https://github.com/MetaMask/metamask-mobile/pull/13419)) +- test(ramp): MMQA-195: add on-ramp e2e test cases ([#13265](https://github.com/MetaMask/metamask-mobile/pull/13265)) +- feat(action): Improve bug report creation ([#13397](https://github.com/MetaMask/metamask-mobile/pull/13397)) +- chore: Fix lint warnings output by `yarn lint:fix` ([#13400](https://github.com/MetaMask/metamask-mobile/pull/13400)) +- chore(ramp): upgrades ramp-sdk to 2.0.5 ([#13379](https://github.com/MetaMask/metamask-mobile/pull/13379)) +- build: add SENTRY_DEBUG_DEV ENV to turn off Sentry Logger ([#13407](https://github.com/MetaMask/metamask-mobile/pull/13407)) +- feat(ramp): sorts ramp quotes by price ([#13339](https://github.com/MetaMask/metamask-mobile/pull/13339)) +- feat(ramps): updates useQuotes interface to include some quotes metadata ([#13335](https://github.com/MetaMask/metamask-mobile/pull/13335)) +- chore: adding e2e for SIWE signatures ([#13353](https://github.com/MetaMask/metamask-mobile/pull/13353)) +- chore: cleanup and deduplicate notification types and constants ([#13381](https://github.com/MetaMask/metamask-mobile/pull/13381)) +- test: Add Stake e2e automation ([#13180](https://github.com/MetaMask/metamask-mobile/pull/13180)) +- chore(3663): removing the isMultichainVersion1Enabled feature flag, and corresponding dead code ([#12831](https://github.com/MetaMask/metamask-mobile/pull/12831)) +- chore(ramp): upgrade ramp-sdk to @2.0.4 ([#13318](https://github.com/MetaMask/metamask-mobile/pull/13318)) +- refactor: utils/signature and deprecate utils/signatures ([#13347](https://github.com/MetaMask/metamask-mobile/pull/13347)) +- chore: Bump selected-network-controller to v21 ([#13109](https://github.com/MetaMask/metamask-mobile/pull/13109)) +- chore: Revert "fix: SIWE detection on mobile by patching @spruceid+siwe" ([#13333](https://github.com/MetaMask/metamask-mobile/pull/13333)) +- chore: change cicd to commit ref hash ([#13303](https://github.com/MetaMask/metamask-mobile/pull/13303)) +- chore: move metrics identify to state listener ([#13203](https://github.com/MetaMask/metamask-mobile/pull/13203)) +- test: Add e2e for app restart after adding contact address ([#13273](https://github.com/MetaMask/metamask-mobile/pull/13273)) + +### Added + +- feat: Add gas included swaps ([#13430](https://github.com/MetaMask/metamask-mobile/pull/13430)) +- feat: remove unused package ([#13395](https://github.com/MetaMask/metamask-mobile/pull/13395)) +- feat: Implement staking deposit `TokenHero` component ([#13418](https://github.com/MetaMask/metamask-mobile/pull/13418)) +- feat: Implement staking back navigation header ([#13416](https://github.com/MetaMask/metamask-mobile/pull/13416)) +- feat: Implement redesigned staking confirmation entry point ([#13361](https://github.com/MetaMask/metamask-mobile/pull/13361)) +- feat: MultichainBalanceController ([#12599](https://github.com/MetaMask/metamask-mobile/pull/12599)) +- feat: remove unused push notification environment variables ([#13270](https://github.com/MetaMask/metamask-mobile/pull/13270)) +- feat: QR hardware signing in new designs ([#13261](https://github.com/MetaMask/metamask-mobile/pull/13261)) +- feat: SIWE signature related changes on personal signature page ([#13329](https://github.com/MetaMask/metamask-mobile/pull/13329)) +- feat: Implement confirm layout ([#13331](https://github.com/MetaMask/metamask-mobile/pull/13331)) +- feat: customize fetchInterval for remoteFeatureFlagController to 15min ([#13341](https://github.com/MetaMask/metamask-mobile/pull/13341)) +- feat: create release pr refs ([#13317](https://github.com/MetaMask/metamask-mobile/pull/13317)) +- feat: STAKE-808: graph with historic vault apy tooltip ([#12804](https://github.com/MetaMask/metamask-mobile/pull/12804)) +- feat: update notification codeowners ([#13269](https://github.com/MetaMask/metamask-mobile/pull/13269)) +- feat: Adding token value field typed sign data tree. ([#13223](https://github.com/MetaMask/metamask-mobile/pull/13223)) +- feat: allow override remote feature flags ([#13156](https://github.com/MetaMask/metamask-mobile/pull/13156)) +- feat: add user earning history graph and list on history button click ([#12746](https://github.com/MetaMask/metamask-mobile/pull/12746)) +- feat: shared-platform rls process ([#13280](https://github.com/MetaMask/metamask-mobile/pull/13280)) + +### Fixed + +- fix: typed sign message display in dark mode ([#13479](https://github.com/MetaMask/metamask-mobile/pull/13479)) +- fix: simulation Fiat precision and Fiat flickers different value before decimals are applied ([#13371](https://github.com/MetaMask/metamask-mobile/pull/13371)) +- fix: Permit Simulation loader and value modal UI/UX ([#13398](https://github.com/MetaMask/metamask-mobile/pull/13398)) +- fix: Fix missing `networkClientId` on estimating gas ([#13466](https://github.com/MetaMask/metamask-mobile/pull/13466)) +- fix: fix duplicate native entry after send flow ([#13413](https://github.com/MetaMask/metamask-mobile/pull/13413)) +- fix: Fix redesigned e2e tests ([#13364](https://github.com/MetaMask/metamask-mobile/pull/13364)) +- fix: use global network client Id in send confirmation screen ([#13363](https://github.com/MetaMask/metamask-mobile/pull/13363)) +- fix: fiat estimates disabled in send flow ([#13359](https://github.com/MetaMask/metamask-mobile/pull/13359)) +- fix: update marketing traits when tracked settings change [PR 1/2] ([#13254](https://github.com/MetaMask/metamask-mobile/pull/13254)) +- fix: SIWE detection on mobile by patching @spruceid+siwe-parser ([#13334](https://github.com/MetaMask/metamask-mobile/pull/13334)) +- fix: revert NFT grid view ([#13292](https://github.com/MetaMask/metamask-mobile/pull/13292)) +- fix: check isNative to determine if a token is a gas token ([#13315](https://github.com/MetaMask/metamask-mobile/pull/13315)) +- fix: SIWE detection on mobile by patching @spruceid+siwe-parser ([#13314](https://github.com/MetaMask/metamask-mobile/pull/13314)) +- fix: Currently keystone lib will throw `KeystoneError#Tx_canceled` which will crash the mobile app ([#13313](https://github.com/MetaMask/metamask-mobile/pull/13313)) +- fix: send max main branch ([#13279](https://github.com/MetaMask/metamask-mobile/pull/13279)) +- fix: prev network eth swap send main branch ([#13283](https://github.com/MetaMask/metamask-mobile/pull/13283)) +- fix: Adjust browser display when multiple tabs are present ([#13294](https://github.com/MetaMask/metamask-mobile/pull/13294)) +- fix: bump @react-native-community/blur to v4.4.1 ([#13293](https://github.com/MetaMask/metamask-mobile/pull/13293)) +- fix: fix sort feature ([#13277](https://github.com/MetaMask/metamask-mobile/pull/13277)) +- fix: metrics call during onboarding ([#13226](https://github.com/MetaMask/metamask-mobile/pull/13226)) + ## [7.39.0] + ### Added + - [#13030](https://github.com/MetaMask/metamask-mobile/pull/13030): feat: ""Unlimited"" value Decoding Simulation and account and message modal UI/UX updates (#13030) - [#12994](https://github.com/MetaMask/metamask-mobile/pull/12994): feat: Redesign Signature Decoding Simulation (#12994) - [#12606](https://github.com/MetaMask/metamask-mobile/pull/12606): feat: Create Permit Simulation (#12606) @@ -25,6 +106,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#12811](https://github.com/MetaMask/metamask-mobile/pull/12811): feat: add detected tokens automatically (#12811) ### Changed + - [#12984](https://github.com/MetaMask/metamask-mobile/pull/12984): chore: Update assets and accounts packages (#12984) - [#12822](https://github.com/MetaMask/metamask-mobile/pull/12822): chore: Improve Keyring/Accounts error handling and logs (#12822) - [#13026](https://github.com/MetaMask/metamask-mobile/pull/13026): test: Redesign Signature Decoding Simulation (#13026) @@ -51,7 +133,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#12830](https://github.com/MetaMask/metamask-mobile/pull/12830): test(3615): E2E to check the labels displaying the default account and chain (#12830) - [#12915](https://github.com/MetaMask/metamask-mobile/pull/12915): chore: remove dead code that had been added for multichain permission early in the project but not used anymore (#12915) - [#12762](https://github.com/MetaMask/metamask-mobile/pull/12762): test(3615): add ability to check if chain permission is checked (#12762) -- [#12809](https://github.com/MetaMask/metamask-mobile/pull/12809): refactor: rename multichain e2e pipeline (#12809) +- [#12809](https://github.com/MetaMask/metamask-mobile/pull/12809): refactor: rename multichain e2e pipeline (#12809) - [#12807](https://github.com/MetaMask/metamask-mobile/pull/12807): chore(tests): move multichain assets test so it runs as part of the assets bitrise workflow (#12807) - [#12791](https://github.com/MetaMask/metamask-mobile/pull/12791): chore: update js.env.example to include examples of chain permissions to true (#12791) - [#12714](https://github.com/MetaMask/metamask-mobile/pull/12714): refactor(tests): move multichain test files to a new folder structure (#12714) @@ -72,6 +154,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#12643](https://github.com/MetaMask/metamask-mobile/pull/12643): chore(ramp): upgrade sdk to 1.28.8 (#12643) ### Fixed + - [#13027](https://github.com/MetaMask/metamask-mobile/pull/13027): fix: Fix disappearing security alert response (#13027) - [#12694](https://github.com/MetaMask/metamask-mobile/pull/12694): fix: small refactoring of the latest migration script + add a new migration case (#12694) - [#12929](https://github.com/MetaMask/metamask-mobile/pull/12929): fix: Keep latest 50 history instead of first 50 (#12929) @@ -122,11 +205,15 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#12853](https://github.com/MetaMask/metamask-mobile/pull/12853): fix(12849): alert toast blocking tab navigation (#12853) ## [7.38.1] + ### Fixed + - [#13067](https://github.com/MetaMask/metamask-mobile/pull/13067)fix: remove expo changes (#13067) ## [7.38.0] + ### Added + - [#12427](https://github.com/MetaMask/metamask-mobile/pull/12427): feat: implement remote feature flag controller (#12427) - [#12507](https://github.com/MetaMask/metamask-mobile/pull/12507): feat: activate portfolio view (#12507) - [#12540](https://github.com/MetaMask/metamask-mobile/pull/12540): feat: migrate Base network RPC from https://mainnet.base.org to base-… (#12540) @@ -143,20 +230,21 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#12431](https://github.com/MetaMask/metamask-mobile/pull/12431): feat: multi chain asset list (#12431) ### Changed + - [#12623](https://github.com/MetaMask/metamask-mobile/pull/12623): chore: update bug template to include feature branches (#12623) - [#12538](https://github.com/MetaMask/metamask-mobile/pull/12538): chore: Chore/12435 mvp handle engine does not exist (#12538) - [#12617](https://github.com/MetaMask/metamask-mobile/pull/12617): docs: Update README.md with new expo instructions (#12617) - [#12559](https://github.com/MetaMask/metamask-mobile/pull/12559): test: move remaining modal pages and selectors to their respective folders (#12559) - [#12556](https://github.com/MetaMask/metamask-mobile/pull/12556): test: remove redundent tests in quarantine folder (#12556) -- [#12558](https://github.com/MetaMask/metamask-mobile/pull/12558): test: Create e2e tag for multi chain (#12558) +- [#12558](https://github.com/MetaMask/metamask-mobile/pull/12558): test: Create e2e tag for multi chain (#12558) - [#12531](https://github.com/MetaMask/metamask-mobile/pull/12531): test: Move files to Wallet folder (#12531) - [#12511](https://github.com/MetaMask/metamask-mobile/pull/12511): test: Move files to Onboarding folder (#12511) - [#12512](https://github.com/MetaMask/metamask-mobile/pull/12512): test: address regression pipeline slow down (#12512) - [#12513](https://github.com/MetaMask/metamask-mobile/pull/12513): ci: disable security e2e tests (#12513) - [#12602](https://github.com/MetaMask/metamask-mobile/pull/12602): chore: Additional e2e test to support `PortfolioView` (#12602) -- [#12321](https://github.com/MetaMask/metamask-mobile/pull/12321): refactor: remove global network from transaction controller (#12321) +- [#12321](https://github.com/MetaMask/metamask-mobile/pull/12321): refactor: remove global network from transaction controller (#12321) - [#12536](https://github.com/MetaMask/metamask-mobile/pull/12536): test: fix mock server (#12536) -- [#12288](https://github.com/MetaMask/metamask-mobile/pull/12288): test: add e2e test for security alert api (#12288) +- [#12288](https://github.com/MetaMask/metamask-mobile/pull/12288): test: add e2e test for security alert api (#12288) - [#12597](https://github.com/MetaMask/metamask-mobile/pull/12597): test(3615): additional e2e scenarios editing permissions and non permitted networks (#12597) - [#12488](https://github.com/MetaMask/metamask-mobile/pull/12488): test(3615): add new e2e test for initial dapp connection and non permitted flow (#12488) - [#12532](https://github.com/MetaMask/metamask-mobile/pull/12532): refactor: de-anonymize insensitive properties of swaps events (#12532) @@ -174,6 +262,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#12551](https://github.com/MetaMask/metamask-mobile/pull/12551): chore: Bump Snaps packages (#12551) ### Fixed + - [#12650](https://github.com/MetaMask/metamask-mobile/pull/12650): fix: fix swaps button on asset overview page for multichain feature (#12650) - [#12659](https://github.com/MetaMask/metamask-mobile/pull/12659): fix: fix token details navigation (#12659) - [#12624](https://github.com/MetaMask/metamask-mobile/pull/12624): fix: add new translations (#12624) @@ -197,18 +286,22 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#12630](https://github.com/MetaMask/metamask-mobile/pull/12630): fix: hide tokens without balance for multichain (#12630) ## [7.37.1] + ### Fixed + - [#12577](https://github.com/MetaMask/metamask-mobile/pull/12577): chore: bump {gas-fee,network,selected-network,notification-services,profile-sync,signature}-controller (#12577) - [#12694](https://github.com/MetaMask/metamask-mobile/pull/12694): fix: small refactoring of the latest migration script + add a new migration case (#12694) - [#12664](https://github.com/MetaMask/metamask-mobile/pull/12664): fix: mark transactions as failed for cancelled / unknown smart transactions (#12664) ## [7.37.0] + ### Added + - [#12091](https://github.com/MetaMask/metamask-mobile/pull/12091): feat: 2020 Add a performance test for iOS in Bitrise (#12091) - [#12148](https://github.com/MetaMask/metamask-mobile/pull/12148): feat: Enable smart transactions for new users (#12148) - [#12442](https://github.com/MetaMask/metamask-mobile/pull/12442): test: add a new unit test to cover for multichain feature flags ON (#12442) - [#12420](https://github.com/MetaMask/metamask-mobile/pull/12420): feat(3598): non permitted chain flow small improvements (#12420) -- [#12198](https://github.com/MetaMask/metamask-mobile/pull/12198): feat: custom names for snap accounts (Flask only) (#12198) +- [#12198](https://github.com/MetaMask/metamask-mobile/pull/12198): feat: custom names for snap accounts (Flask only) (#12198) - [#12396](https://github.com/MetaMask/metamask-mobile/pull/12396): feat(ramp): enable buy button in asset overview (#12396) - [#11613](https://github.com/MetaMask/metamask-mobile/pull/11613): feat(ramp): improve amount editing formatting (#11613) - [#12393](https://github.com/MetaMask/metamask-mobile/pull/12393): feat: Creating data tree for signed type V1 signatures (#12393) @@ -224,6 +317,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#12452](https://github.com/MetaMask/metamask-mobile/pull/12452): feat: updated staking events to use withMetaMetrics helper (#12337) (#12452) ### Changed + - [#12356](https://github.com/MetaMask/metamask-mobile/pull/12356): chore: Remove unnecessary event prop (#12356) - [#12425](https://github.com/MetaMask/metamask-mobile/pull/12425): ci: create ci workflow for multichain flow (#12425) - [#12350](https://github.com/MetaMask/metamask-mobile/pull/12350): chore: Bump Snaps packages (#12350) @@ -238,15 +332,16 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#12238](https://github.com/MetaMask/metamask-mobile/pull/12238): chore: update codeowners (#12238) - [#12416](https://github.com/MetaMask/metamask-mobile/pull/12416): chore: Chore/update accounts controller messenger code owner (#12416) - [#12366](https://github.com/MetaMask/metamask-mobile/pull/12366): chore: #12184 MVP split engine file (#12366) -- [#12362](https://github.com/MetaMask/metamask-mobile/pull/12362): chore: Unit tests for tags approval controller undefined (#12362) +- [#12362](https://github.com/MetaMask/metamask-mobile/pull/12362): chore: Unit tests for tags approval controller undefined (#12362) - [#12332](https://github.com/MetaMask/metamask-mobile/pull/12332): chore: do not show staked eth balance when balance is zero on homepage or asset detail (#12332) - [#12413](https://github.com/MetaMask/metamask-mobile/pull/12413): chore: simplify cicd rls script (#12413) - [#12334](https://github.com/MetaMask/metamask-mobile/pull/12334): chore: updating filter icon (#12334) ### Fixed + - [#12313](https://github.com/MetaMask/metamask-mobile/pull/12313): fix: Remove run all tests section (#12313) - [#12489](https://github.com/MetaMask/metamask-mobile/pull/12489): fix: replace end of navigation init and UIStartup span (#12489) -- [#12331](https://github.com/MetaMask/metamask-mobile/pull/12331): fix: tags pending approvals receiving undefined (#12331) +- [#12331](https://github.com/MetaMask/metamask-mobile/pull/12331): fix: tags pending approvals receiving undefined (#12331) - [#10486](https://github.com/MetaMask/metamask-mobile/pull/10486): fix: limit ReactNativeWebview message size (#10486) - [#12478](https://github.com/MetaMask/metamask-mobile/pull/12478): fix: incorrect event source in analytics and connection (#12478) - [#10786](https://github.com/MetaMask/metamask-mobile/pull/10786): fix: added icon to walletconnect metadata (#10786) @@ -263,7 +358,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#12375](https://github.com/MetaMask/metamask-mobile/pull/12375): fix: breaking selector due to missing controller state (#12375) ## [7.36.0] + ### Added + - [#12015](https://github.com/MetaMask/metamask-mobile/pull/12015): feat: 1957 crash screen redesign (#12015) - [#12110](https://github.com/MetaMask/metamask-mobile/pull/12110): feat: display staking transaction methods (#12110) - [#12290](https://github.com/MetaMask/metamask-mobile/pull/12290): feat: STAKE-827: track additional pooled staking events (#12290) @@ -286,6 +383,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#11836](https://github.com/MetaMask/metamask-mobile/pull/11836): feat: upgrade @metamask/eth-ledger-bridge-keyring (#11836) ### Changed + - [#11898](https://github.com/MetaMask/metamask-mobile/pull/11898): chore: New Crowdin translations by Github Action (#11898) - [#12292](https://github.com/MetaMask/metamask-mobile/pull/12292): chore: Allow for higher versions of ruby (#12292) - [#12291](https://github.com/MetaMask/metamask-mobile/pull/12291): chore: Remove notifications logic from wallet view (#12276) (#12291) @@ -310,6 +408,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#12225](https://github.com/MetaMask/metamask-mobile/pull/12225): chore: bump `@metamask/ppom-validator` to `0.35.1` (#12225) ### Fixed + - [#12166](https://github.com/MetaMask/metamask-mobile/pull/12166): fix: remove SmokeNotifications tests for android on smoke tests pipeline (#12166) - [#12217](https://github.com/MetaMask/metamask-mobile/pull/12217): fix: e2e: use different wallet SRP for non accounts tests (#12217) - [#12197](https://github.com/MetaMask/metamask-mobile/pull/12197): fix: E2E: quarantine import-wallet-account tests (#12197) @@ -330,15 +429,19 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#12282](https://github.com/MetaMask/metamask-mobile/pull/12282): fix: Lock ruby version to 3.1.6 and bump pod to 1.16.2 (#12282) ## [7.35.1] + ### Fixed + - [#12331](https://github.com/MetaMask/metamask-mobile/pull/12331): fix: tags pending approvals receiving undefined (#12331) ## [7.35.0] + ### Added + - [#12107](https://github.com/MetaMask/metamask-mobile/pull/12107): feat: Add re-simulation feature (#12107) - [#11770](https://github.com/MetaMask/metamask-mobile/pull/11770): feat: enable Security Alerts API (#11770) - [#11812](https://github.com/MetaMask/metamask-mobile/pull/11812): feat: network value component for re-designed confirmation pages (#11812) -- [#11608](https://github.com/MetaMask/metamask-mobile/pull/11608): feat: enable sentry performance reporting on local development builds (#11608) +- [#11608](https://github.com/MetaMask/metamask-mobile/pull/11608): feat: enable sentry performance reporting on local development builds (#11608) - [#11190](https://github.com/MetaMask/metamask-mobile/pull/11190): feat(NOTIFY-1096): add account syncing (#11190) - [#12138](https://github.com/MetaMask/metamask-mobile/pull/12138): feat: update staking eligibility and unstaking time details (#12138) - [#12084](https://github.com/MetaMask/metamask-mobile/pull/12084): feat: enable mobile native pooled staking experience for users (#12084) @@ -348,7 +451,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#11611](https://github.com/MetaMask/metamask-mobile/pull/11611): feat: STAKE-841 build unstake review confirmation screen (#11611) - [#11891](https://github.com/MetaMask/metamask-mobile/pull/11891): feat: add live staking data with geo-blocking support (#11891) - [#11845](https://github.com/MetaMask/metamask-mobile/pull/11845): feat: STAKE-805 integrate stake method (#11845) -- [#11668](https://github.com/MetaMask/metamask-mobile/pull/11668): feat: Add StakeSdkProvider with stake-sdk (#11668) +- [#11668](https://github.com/MetaMask/metamask-mobile/pull/11668): feat: Add StakeSdkProvider with stake-sdk (#11668) - [#11963](https://github.com/MetaMask/metamask-mobile/pull/11963): feat(2808): edit network permissions (#11963) - [#12060](https://github.com/MetaMask/metamask-mobile/pull/12060): feat: add favorites to browser menu (#12060) - [#11965](https://github.com/MetaMask/metamask-mobile/pull/11965): feat(3417): sensitive text component (#11965) @@ -361,6 +464,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#11451](https://github.com/MetaMask/metamask-mobile/pull/11451): feat: Remove Account Snap Warning (Flask) (#11451) ### Changed + - [#11911](https://github.com/MetaMask/metamask-mobile/pull/11911): chore: upgrade signature controller to remove message managers (#11911) - [#12150](https://github.com/MetaMask/metamask-mobile/pull/12150): chore: upgrade nodejs to v20.17 (#12150) - [#12135](https://github.com/MetaMask/metamask-mobile/pull/12135): test: Move files to Settings folder (#12135) @@ -407,8 +511,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#11983](https://github.com/MetaMask/metamask-mobile/pull/11983): test: Refactor EditAccountNameView.js & EnableSecurityChecksView.js files to follow page object model (#11983) ### Fixed + - [#11768](https://github.com/MetaMask/metamask-mobile/pull/11768): fix: fix non regression tests (#11768) -- [#11947](https://github.com/MetaMask/metamask-mobile/pull/11947): fix: Fiat value displayed only for the native token in simulations (#11947) +- [#11947](https://github.com/MetaMask/metamask-mobile/pull/11947): fix: Fiat value displayed only for the native token in simulations (#11947) - [#12126](https://github.com/MetaMask/metamask-mobile/pull/12126): fix: Reuse main logic for migration52 (#12126) - [#12125](https://github.com/MetaMask/metamask-mobile/pull/12125): fix: revert the nvm update (#12125) - [#12112](https://github.com/MetaMask/metamask-mobile/pull/12112): fix: Update TransactionProtectionModal import (#12112) @@ -441,13 +546,17 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#11769](https://github.com/MetaMask/metamask-mobile/pull/11769): fix: Fix the mobile crash due to ledger bluetooth relative exception (#11769) ## [7.34.1] + ### Fixed + - [#12205](https://github.com/MetaMask/metamask-mobile/pull/12205): fix: add contractBalances as dependency - [#12236](https://github.com/MetaMask/metamask-mobile/pull/12236): fix: Add migration to fix NotificationServicesController bug (#12236) - [#12228](https://github.com/MetaMask/metamask-mobile/pull/12228): fix: Update transaction-controller version ## [7.34.0] + ### Added + - [#11578](https://github.com/MetaMask/metamask-mobile/pull/11578): feat: 1653 first feature flag poc (#11578) - [#11705](https://github.com/MetaMask/metamask-mobile/pull/11705): feat: Transition from Multiple Networks with Same ChainID to Unique Networks with Distinct ChainIDs and Multiple RPC URLs (#11705) - [#11685](https://github.com/MetaMask/metamask-mobile/pull/11685): feat: multi rpc modal (#11685) @@ -472,6 +581,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#11127](https://github.com/MetaMask/metamask-mobile/pull/11127): feat(1702): enhanced onboarding settings config (#11127) ### Changed + - [#11852](https://github.com/MetaMask/metamask-mobile/pull/11852): chore: readd date time picker (#11852) - [#11831](https://github.com/MetaMask/metamask-mobile/pull/11831): chore: Add conditional for api specification test (#11831) - [#11838](https://github.com/MetaMask/metamask-mobile/pull/11838): chore: revert tags commit (#11838) @@ -508,11 +618,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#11525](https://github.com/MetaMask/metamask-mobile/pull/11525): chore(js-ts): Convert app/components/UI/StyledButton/styledButtonStyles.js to TypeScript (#11525) - [#11385](https://github.com/MetaMask/metamask-mobile/pull/11385): refactor(1702-5): incoming transactions and network details settings into reusable components (#11385) - [#11381](https://github.com/MetaMask/metamask-mobile/pull/11381): refactor(1702-4): ipfs gateway settings and display nft media settings components (#11381) -- [#11614](https://github.com/MetaMask/metamask-mobile/pull/11614): chore: Update UX CodeOwners responsibilities (#11614) +- [#11614](https://github.com/MetaMask/metamask-mobile/pull/11614): chore: Update UX CodeOwners responsibilities (#11614) - [#11709](https://github.com/MetaMask/metamask-mobile/pull/11709): chore: updating codeowners to remove mobile-devs from component library (#11709) - [#11617](https://github.com/MetaMask/metamask-mobile/pull/11617): chore: chore/7.33.0-Changelog (#11617) ### Fixed + - [#11787](https://github.com/MetaMask/metamask-mobile/pull/11787): fix: non deterministic date in test (#11787) - [#11762](https://github.com/MetaMask/metamask-mobile/pull/11762): fix: snapshot of test to enable ci (#11762) - [#11632](https://github.com/MetaMask/metamask-mobile/pull/11632): fix: add custom and add popular network detox test (#11632) @@ -532,7 +643,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#11603](https://github.com/MetaMask/metamask-mobile/pull/11603): fix: await for detect origin before logging analytics (#11603) - [#11595](https://github.com/MetaMask/metamask-mobile/pull/11595): fix: fix signature requested analytics (#11595) - [#11592](https://github.com/MetaMask/metamask-mobile/pull/11592): fix: fix walletconnect source validation (#11592) -- [#11802](https://github.com/MetaMask/metamask-mobile/pull/11802): fix: persist token and phishing list (#11802) +- [#11802](https://github.com/MetaMask/metamask-mobile/pull/11802): fix: persist token and phishing list (#11802) - [#11729](https://github.com/MetaMask/metamask-mobile/pull/11729): fix: support for batch of signature requests (#11729) - [#11771](https://github.com/MetaMask/metamask-mobile/pull/11771): fix: Add `preferContractSymbol` to Name components (#11771) - [#11730](https://github.com/MetaMask/metamask-mobile/pull/11730): fix: Use domain for origin pill component (#11730) @@ -542,15 +653,21 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#11431](https://github.com/MetaMask/metamask-mobile/pull/11431): fix: refactor notifications unit tests (#11431) ## [7.33.2] + ### Fixed + - [#10952](https://github.com/MetaMask/metamask-mobile/pull/10952): refactor(ramp): update ramp copy (#10952) ## [7.33.1] + ### Fixed + - [#12073](https://github.com/MetaMask/metamask-mobile/pull/12073): feat: Simulation re-trigger (#12073) ## [7.33.0] + ### Added + - [#11507](https://github.com/MetaMask/metamask-mobile/pull/11507): feat: 10550 Re-introduce test for measuring cold app start + JS bundle load time (#11507) - [#11318](https://github.com/MetaMask/metamask-mobile/pull/11318): feat: app event manager and attribution id parameters (#11318) - [#11445](https://github.com/MetaMask/metamask-mobile/pull/11445): feat: add the abilty to hide the disconnect all button as well as showing and hiding the accounts row when necessary (#11445) @@ -576,6 +693,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#11069](https://github.com/MetaMask/metamask-mobile/pull/11069): feat: react native fast crypto for notifications (#11069) ### Changed + - [#11379](https://github.com/MetaMask/metamask-mobile/pull/11379): refactor: rename the feature flag since it had a typo (#11379) - [#11615](https://github.com/MetaMask/metamask-mobile/pull/11615): chore: exclude temporarily sentry SDK advisory (#11615) - [#11577](https://github.com/MetaMask/metamask-mobile/pull/11577): ci: disable swaps e2e workflow (#11577) @@ -631,6 +749,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#11352](https://github.com/MetaMask/metamask-mobile/pull/11352): chore(deps): Bump `@metamask/accounts-controller` to `^18.2.1` ### Fixed + - [#11512](https://github.com/MetaMask/metamask-mobile/pull/11512): fix: android firebase docs template (#11512) - [#11430](https://github.com/MetaMask/metamask-mobile/pull/11430): fix: refactor Logger usage (#11430) - [#11250](https://github.com/MetaMask/metamask-mobile/pull/11250): fix: push notifications (#11250) @@ -638,7 +757,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#11467](https://github.com/MetaMask/metamask-mobile/pull/11467): fix: Reorder prep_environment (#11467) - [#11367](https://github.com/MetaMask/metamask-mobile/pull/11367): fix: Update steps of the methods that are no longer valid (#11367) - [#11400](https://github.com/MetaMask/metamask-mobile/pull/11400): fix: Stop crowdin action from creating branches (#11400) -- [#11348](https://github.com/MetaMask/metamask-mobile/pull/11348): fix: splash screen image on android (#11348) +- [#11348](https://github.com/MetaMask/metamask-mobile/pull/11348): fix: splash screen image on android (#11348) - [#11346](https://github.com/MetaMask/metamask-mobile/pull/11346): fix: splash screen image on android (#11346) - [#11554](https://github.com/MetaMask/metamask-mobile/pull/11554): fix: Fix/use portfolio home page (#11554) - [#11443](https://github.com/MetaMask/metamask-mobile/pull/11443): fix: react native quick crypto ios build bug (#11443) @@ -654,7 +773,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#11518](https://github.com/MetaMask/metamask-mobile/pull/11518): fix(11482): incorrect QR code error (#11518) ## [7.32.0] + ### Added + - [#10294](https://github.com/MetaMask/metamask-mobile/pull/10294): feat: create redux slice for featureFlags (#10294) - [#11314](https://github.com/MetaMask/metamask-mobile/pull/11314): feat: reject connection properly (#11314) - [#11132](https://github.com/MetaMask/metamask-mobile/pull/11132): feat: Add performance tracing infrastructure (#11132) @@ -671,7 +792,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#11175](https://github.com/MetaMask/metamask-mobile/pull/11175): feat: add product announcements toggle (#11175) ### Changed -- [#11148](https://github.com/MetaMask/metamask-mobile/pull/11148): chore: remove animation and add new splash screen (#11148) + +- [#11148](https://github.com/MetaMask/metamask-mobile/pull/11148): chore: remove animation and add new splash screen (#11148) - [#11306](https://github.com/MetaMask/metamask-mobile/pull/11306): chore: update @sentry/react-native to version 5.33.0 (#11306) - [#11144](https://github.com/MetaMask/metamask-mobile/pull/11144): test: E2E Mocking Setup For Detox Tests (#11144) - [#11212](https://github.com/MetaMask/metamask-mobile/pull/11212): chore: Update CI workflow triggers to support release branches (#11212) @@ -697,13 +819,14 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#11235](https://github.com/MetaMask/metamask-mobile/pull/11235): ci: avoid running release pipeline on every commit to the release branch (#11235) - [#11094](https://github.com/MetaMask/metamask-mobile/pull/11094): chore: chore/7.31.0-Changelog (#11094) - [#10788](https://github.com/MetaMask/metamask-mobile/pull/10788): chore: Add `@metamask/selected-network-controller` & integrate (#10788) -- [#11122](https://github.com/MetaMask/metamask-mobile/pull/11122): test: e2e for auto-lock (#11122) +- [#11122](https://github.com/MetaMask/metamask-mobile/pull/11122): test: e2e for auto-lock (#11122) - [#11143](https://github.com/MetaMask/metamask-mobile/pull/11143): chore: bump react native webview to 14.0.3 version (#11143) - [#11284](https://github.com/MetaMask/metamask-mobile/pull/11284): chore: add notifications state awareness inapp badge (#11284) - [#11082](https://github.com/MetaMask/metamask-mobile/pull/11082): chore: bump network controller 20.0.0 (#11082) - [#10821](https://github.com/MetaMask/metamask-mobile/pull/10821): chore(deps): bump `accounts-controller` to v18.1.0 and `keyring-api` to v8.1.0 (#10821) ### Fixed + - [#11117](https://github.com/MetaMask/metamask-mobile/pull/11117): fix: add feat flag (#11117) - [#11084](https://github.com/MetaMask/metamask-mobile/pull/11084): fix: locks api spec version for api spec tests (#11084) - [#11310](https://github.com/MetaMask/metamask-mobile/pull/11310): fix: quick fix on feature flag & notification state (#11310) @@ -736,11 +859,15 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#11098](https://github.com/MetaMask/metamask-mobile/pull/11098): fix: badge count and ui polishing (#11098) ## [7.31.1] + ### Fixed + - [#11631](https://github.com/MetaMask/metamask-mobile/pull/11631): fix: Fixes UI issue in token details (#11631) ## [7.31.0] + ### Added + - [#10747](https://github.com/MetaMask/metamask-mobile/pull/10747): feat: 2805 grant permission to network with missmatching rpc url (#10747) - [#10715](https://github.com/MetaMask/metamask-mobile/pull/10715): feat: 2795 disconnect all account permission multichain edit account screen (#10715) - [#10347](https://github.com/MetaMask/metamask-mobile/pull/10347): feat: refactor WalletConnect v2 and add unit tests (#10347) @@ -748,11 +875,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#10562](https://github.com/MetaMask/metamask-mobile/pull/10562): feat: New token detail view (#10562) - [#10876](https://github.com/MetaMask/metamask-mobile/pull/10876): feat: js bundle size ci gate (#10876) - [#10847](https://github.com/MetaMask/metamask-mobile/pull/10847): feat: add pooled staking feature flag (#10847) -- [#2796](https://github.com/MetaMask/metamask-mobile/pull/2796): feat(2796): permission settings for multichain +- [#2796](https://github.com/MetaMask/metamask-mobile/pull/2796): feat(2796): permission settings for multichain - [#10727](https://github.com/MetaMask/metamask-mobile/pull/10727): feat: add ledger live deviation path support (#10727) - ### Changed + - [#10749](https://github.com/MetaMask/metamask-mobile/pull/10749): chore(deps): bump rexml from 3.3.3 to 3.3.6 in the bundler group across 1 directory (#10749) - [#10794](https://github.com/MetaMask/metamask-mobile/pull/10794): Release-update-BS-URL (#10794) - [#11088](https://github.com/MetaMask/metamask-mobile/pull/11088): chore: add new track events for enabling/disabling basic functionality (#11088) @@ -788,7 +915,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#10325](https://github.com/MetaMask/metamask-mobile/pull/10325): chore: updated avatargroup to take in all avatars (#10325) - [#10616](https://github.com/MetaMask/metamask-mobile/pull/10616): chore: upgrade network controller to version 19.0.0 (#10616) - [#11001](https://github.com/MetaMask/metamask-mobile/pull/11001): test: Fix swap smoke tests (#11001) -- [#10953](https://github.com/MetaMask/metamask-mobile/pull/10953): test: replaced TestHelpers function call with equivalent from Assertions (#10953) +- [#10953](https://github.com/MetaMask/metamask-mobile/pull/10953): test: replaced TestHelpers function call with equivalent from Assertions (#10953) - [#10897](https://github.com/MetaMask/metamask-mobile/pull/10897): test: Fix Swap e2e test failure (#10897) - [#10874](https://github.com/MetaMask/metamask-mobile/pull/10874): chore: add new `keyring-snaps` code fence (#10874) - [#10913](https://github.com/MetaMask/metamask-mobile/pull/10913): test: e2e srp reveal regression update (#10913) @@ -798,6 +925,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#10714](https://github.com/MetaMask/metamask-mobile/pull/10714): test: Refactor AccountListView Page object (#10714) ### Fixed + - [#10518](https://github.com/MetaMask/metamask-mobile/pull/10518): fix: refactor blockaid utils sync functions to async (#10518) - [#11020](https://github.com/MetaMask/metamask-mobile/pull/11020): fix: Fix broken unit test in `Sendflow` tests (#11020) - [#10385](https://github.com/MetaMask/metamask-mobile/pull/10385): fix: no insufficient funds warning (#10385) @@ -839,7 +967,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#10792](https://github.com/MetaMask/metamask-mobile/pull/10792): fix: refactor notifications utils (#10792) ## [7.30.0] + ### Added + - [#10748](https://github.com/MetaMask/metamask-mobile/pull/10748): feat: Add yarn flipper script (#10748) - [#10739](https://github.com/MetaMask/metamask-mobile/pull/10739): feat: Feat/add redux debugger (#10739) - [#10589](https://github.com/MetaMask/metamask-mobile/pull/10589): feat: Feat/10521 react-native-performance mvp for measuring app start + JS bundle load times (#10589) @@ -855,6 +985,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#9950](https://github.com/MetaMask/metamask-mobile/pull/9950): feat: QR-based add NGRAVE ZERO Hardware (#9950) ### Changed + - [#10746](https://github.com/MetaMask/metamask-mobile/pull/10746): chore: fix another batch of TS errors (#10746) - [#10735](https://github.com/MetaMask/metamask-mobile/pull/10735): chore: Add E2E folders to sonar exclusion list (#10735) - [#10697](https://github.com/MetaMask/metamask-mobile/pull/10697): chore: Add more typescript fixes (#10697) @@ -910,6 +1041,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#10539](https://github.com/MetaMask/metamask-mobile/pull/10539): chore: enhance Source Detection Logic in Analytics Parameters (#10539) ### Fixed + - [#10649](https://github.com/MetaMask/metamask-mobile/pull/10649): fix: Update test dapp favorite selector (#10649) - [#10641](https://github.com/MetaMask/metamask-mobile/pull/10641): fix: Add missing pod lock changes (#10641) - [#10613](https://github.com/MetaMask/metamask-mobile/pull/10613): fix: useBlockExplorer hook (#10613) @@ -935,16 +1067,22 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#10693](https://github.com/MetaMask/metamask-mobile/pull/10693): fix: notification second round fixes (#10693) ## [7.29.2] + ### Fixed + - [#10965](https://github.com/MetaMask/metamask-mobile/pull/10965): fix: gas never loading during send + high gas fee after deep link (#10965) - [#11005](https://github.com/MetaMask/metamask-mobile/pull/11005): fix: Add missing allowedAction NetworkController:findNetworkClientIdByChainId to transactionController (#11005) ## [7.29.1] + ### Fixed + - [#10831](https://github.com/MetaMask/metamask-mobile/pull/10831): feat: Update Polygon from MATIC to POL (#10831) ## [7.29.0] + ### Added + - [#9578](https://github.com/MetaMask/metamask-mobile/pull/9578): feat: type `renderHookWithProvider` (#9578) - [#10277](https://github.com/MetaMask/metamask-mobile/pull/10277): feat: New nft details page (#10277) - [#9469](https://github.com/MetaMask/metamask-mobile/pull/9469): feat: nft + swap metrics (#9469) @@ -960,8 +1098,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#10363](https://github.com/MetaMask/metamask-mobile/pull/10363): feat: add notifications UI components to be used by Views (#10363) ### Changed + - [#10531](https://github.com/MetaMask/metamask-mobile/pull/10531): chore: fix release action (#10531) -- [#10471](https://github.com/MetaMask/metamask-mobile/pull/10471): chore: Typescript type coverage util lib folders (#10471) +- [#10471](https://github.com/MetaMask/metamask-mobile/pull/10471): chore: Typescript type coverage util lib folders (#10471) - [#10507](https://github.com/MetaMask/metamask-mobile/pull/10507): chore: core related files selectors refactor (#10507) - [#10508](https://github.com/MetaMask/metamask-mobile/pull/10508): chore: abort on fail smoke e2e pipeline (#10508) - [#10417](https://github.com/MetaMask/metamask-mobile/pull/10417): chore: Dapp protocol qr code scanning (#10417) @@ -989,6 +1128,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#9589](https://github.com/MetaMask/metamask-mobile/pull/9589): test(ramp): add `useApplePay` tests (#9589) ### Fixed + - [#9744](https://github.com/MetaMask/metamask-mobile/pull/9744): fix: fix/9350 Use consistent commit hash on Bitrise e2e smoke tests (#9744) - [#10511](https://github.com/MetaMask/metamask-mobile/pull/10511): fix: crash on reload fix by patch (#10511) - [#10481](https://github.com/MetaMask/metamask-mobile/pull/10481): fix: Added parse errors to be caught on vault corruption flow (#10481) @@ -1007,12 +1147,16 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#10303](https://github.com/MetaMask/metamask-mobile/pull/10303): fix: page navigation during QR accounts selection (#10303) ## [7.28.1] + ### Fixed + - [#10637](https://github.com/MetaMask/metamask-mobile/pull/10637): fix: swap button blocked by SwapsController polling issue (#10637) - [#10654](https://github.com/MetaMask/metamask-mobile/pull/10654): fix: hot fix for ledger account select screen to provide disclaimer copy information. (#10654) ## [7.28.0] + ### Added + - [#10252](https://github.com/MetaMask/metamask-mobile/pull/10252): feat: regression label (#10252) - [#10214](https://github.com/MetaMask/metamask-mobile/pull/10214): feat: Partially local WebView for Snaps (#10214) - [#10103](https://github.com/MetaMask/metamask-mobile/pull/10103): feat: update walletconnect se-sdk (#10103) @@ -1022,10 +1166,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#10109](https://github.com/MetaMask/metamask-mobile/pull/10109): feat: multiple accounts support in ledger (#10109) ### Changed + - [#10278](https://github.com/MetaMask/metamask-mobile/pull/10278): chore: disable snaps feat from main temporarily (#10278) - [#10329](https://github.com/MetaMask/metamask-mobile/pull/10329): test: Disable bitrise slack notification step (#10329) - [#10172](https://github.com/MetaMask/metamask-mobile/pull/10172): chore: changelog release automation (#10172) -- [#10282](https://github.com/MetaMask/metamask-mobile/pull/10282): chore: update Android SDK to API Level 34 (#10282) +- [#10282](https://github.com/MetaMask/metamask-mobile/pull/10282): chore: update Android SDK to API Level 34 (#10282) - [#10241](https://github.com/MetaMask/metamask-mobile/pull/10241): chore: add Sentry snapshot with masked data (#10241) - [#10289](https://github.com/MetaMask/metamask-mobile/pull/10289): chore: Download state logs on login screen (#10289) - [#10291](https://github.com/MetaMask/metamask-mobile/pull/10291): chore: Update webview to v 14.0.2 (#10291) @@ -1045,6 +1190,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#10274](https://github.com/MetaMask/metamask-mobile/pull/10274): chore: New Crowdin translations by Github Action (#10274) ### Fixed + - [#10308](https://github.com/MetaMask/metamask-mobile/pull/10308): fix: correctly get current PR number in bitrise e2e workflow (#10308) - [#10232](https://github.com/MetaMask/metamask-mobile/pull/10232): fix: fixes missing analytics data for non-web dapps that don't have a url (no… (#10232) - [#10264](https://github.com/MetaMask/metamask-mobile/pull/10264): fix: skip blockaid validations for users internal accounts (#10264) @@ -1052,11 +1198,15 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#10279](https://github.com/MetaMask/metamask-mobile/pull/10279): fix: use ACTIONS_WRITE_TOKEN in attributions workflow (#10279) ## [7.27.1] + ### Fixed + - [#10438](https://github.com/MetaMask/metamask-mobile/pull/10438): cherry-pick: update @blockaid/ppom_release package to version 1.5.1 (#10435) #10438 ## [7.27.0] + ### Added + - [#7759](https://github.com/MetaMask/metamask-mobile/pull/7759): feat: upgrade react-native-webview (#7759) - [#10000](https://github.com/MetaMask/metamask-mobile/pull/10000): feat: support security alerts API (#10000) - [#10039](https://github.com/MetaMask/metamask-mobile/pull/10039): feat: enable transaction simulations (#10039) @@ -1068,11 +1218,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#10121](https://github.com/MetaMask/metamask-mobile/pull/10121): feat: enables snaps feature flag on mobile (#10121) - [#10040](https://github.com/MetaMask/metamask-mobile/pull/10040): feat: edit networks UI redesign (#10040) - [#10120](https://github.com/MetaMask/metamask-mobile/pull/10120): feat: add i18n to for the add/edit network ui re-design (#10120) -- [#9961](https://github.com/MetaMask/metamask-mobile/pull/9961): feat: adding search to the network bottomsheet as part of the networks management UI redesign (#9961) +- [#9961](https://github.com/MetaMask/metamask-mobile/pull/9961): feat: adding search to the network bottomsheet as part of the networks management UI redesign (#9961) - [#10112](https://github.com/MetaMask/metamask-mobile/pull/10112): feat: Add the ""is_smart_transaction"" prop for the ""Swap Started"" event (#10112) - [#10086](https://github.com/MetaMask/metamask-mobile/pull/10086): feat: Add team label to pr (#10086) ### Changed + - [#10153](https://github.com/MetaMask/metamask-mobile/pull/10153): chore: Migrate AsyncStorage to mmkv (#10153) - [#10071](https://github.com/MetaMask/metamask-mobile/pull/10071): chore: New Crowdin translations by Github Action (#10071) - [#9441](https://github.com/MetaMask/metamask-mobile/pull/9441): chore: Convert initial background state to typed background state (#9441) @@ -1098,6 +1249,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#10063](https://github.com/MetaMask/metamask-mobile/pull/10063): chore: Refactor Snaps integration (#10063) ### Fixed + - [#10168](https://github.com/MetaMask/metamask-mobile/pull/10168): fix: convert Sentry messages to log (#10168) - [#9918](https://github.com/MetaMask/metamask-mobile/pull/9918): fix: hide amount in simulations for testnets if its opt out (#9918) - [#10164](https://github.com/MetaMask/metamask-mobile/pull/10164): fix: Stop running fencing logic on `node_modules` (#10164) @@ -1124,11 +1276,15 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#10064](https://github.com/MetaMask/metamask-mobile/pull/10064): fix: Always mark the STX Opt In modal as seen (#10064) ## [7.26.1] + ### Fixed + - [#9724](https://github.com/MetaMask/metamask-mobile/pull/9724): feat: remove selectIdentities in favour of selectInternalAccounts ## [7.26.0] + ### Added + - [#9937](https://github.com/MetaMask/metamask-mobile/pull/9937): feat: modification of the network bottom sheet to use the new UI redesign by adding the popular network section as additional network (#9937) - [#9856](https://github.com/MetaMask/metamask-mobile/pull/9856): feat: new attribution github workflow (#9856) - [#9768](https://github.com/MetaMask/metamask-mobile/pull/9768): feat: add MetaMetrics delete on Wallet delete (#9768) @@ -1148,6 +1304,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#9473](https://github.com/MetaMask/metamask-mobile/pull/9473): feat: notifications details screen (#9473) ### Changed + - [#9884](https://github.com/MetaMask/metamask-mobile/pull/9884): chore(pr template + readme): add link to contributor docs (#9884) - [#9863](https://github.com/MetaMask/metamask-mobile/pull/9863): chore: Revert ""fix: swaps quote nan to bnjs (#9848)"" (#9863) - [#9915](https://github.com/MetaMask/metamask-mobile/pull/9915): test: 1454 refactor modal pages batch 4 (#9915) @@ -1186,6 +1343,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#9234](https://github.com/MetaMask/metamask-mobile/pull/9234): chore: update the 'CODEOWNERS' file to include directories relevant to the 'sdk-devs' team (#9234) ### Fixed + - [#9903](https://github.com/MetaMask/metamask-mobile/pull/9903): fix: upgrade test failure fix for 7.24.0 release branch (#9903) - [#9844](https://github.com/MetaMask/metamask-mobile/pull/9844): fix: confirmations failing ci tests (#9844) - [#9831](https://github.com/MetaMask/metamask-mobile/pull/9831): fix: Fix audit ci (#9831) @@ -1210,7 +1368,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#9934](https://github.com/MetaMask/metamask-mobile/pull/9934): fix: flakey CI asdf node version (#9934) - [#9584](https://github.com/MetaMask/metamask-mobile/pull/9584): fix: @metamask/swaps-controller v6 -> v9 (#9584) - [#9867](https://github.com/MetaMask/metamask-mobile/pull/9867): fix: only remove SES from exception if exception exists (#9867) -- [#9870](https://github.com/MetaMask/metamask-mobile/pull/9870): fix: yarn deduplicate release/7.24.0 to fix dupe in #9864 (#9870) +- [#9870](https://github.com/MetaMask/metamask-mobile/pull/9870): fix: yarn deduplicate release/7.24.0 to fix dupe in #9864 (#9870) - [#9842](https://github.com/MetaMask/metamask-mobile/pull/9842): fix: error validating wallet connect signature with security provider (#9842) - [#9999](https://github.com/MetaMask/metamask-mobile/pull/9999): fix: new locales (#9999) - [#9826](https://github.com/MetaMask/metamask-mobile/pull/9826): fix: add migration for linea goerli (#9826) @@ -1219,39 +1377,50 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#9746](https://github.com/MetaMask/metamask-mobile/pull/9746): fix: render images of networks removed from popularNetwork list (#9746) - [#9970](https://github.com/MetaMask/metamask-mobile/pull/9970): fix: error 'Invalid character in NaN' while gas editing (#9970) - [#9902](https://github.com/MetaMask/metamask-mobile/pull/9902): fix: Update PPOM controller to fix handling of HTTP status codes (#9902) -- [#9943](https://github.com/MetaMask/metamask-mobile/pull/9943): fix: Duplicate accounts (#9943) +- [#9943](https://github.com/MetaMask/metamask-mobile/pull/9943): fix: Duplicate accounts (#9943) - [#9974](https://github.com/MetaMask/metamask-mobile/pull/9974): fix(ramp): memoize asset before passing it to balance hook (#9968) (#9974) - [#9882](https://github.com/MetaMask/metamask-mobile/pull/9882): fix: edit account name screen display incorrect account name (#9882) - [#9891](https://github.com/MetaMask/metamask-mobile/pull/9891): fix: bug report template - remove reference to recordit (#9891) - [#9755](https://github.com/MetaMask/metamask-mobile/pull/9755): fix: display the DApp URL in connect screen for MetaMask IOS-SDK (#9755) ## [7.24.4] + ### Fixed + - [10064](https://github.com/MetaMask/metamask-mobile/pull/10064) fix: Always mark the STX Opt In modal as seen - [10088](https://github.com/MetaMask/metamask-mobile/pull/10088) fix: Swap with unapproved token - [10099](https://github.com/MetaMask/metamask-mobile/pull/10099) fix: stx on ramps missing origin ## [7.24.3] + ### Fixed + - [#10045](https://github.com/MetaMask/metamask-mobile/pull/10045): fix: Update ppom package to 1.4.8 (#10041) ## [7.24.2] + ### Added + - [#9687](https://github.com/MetaMask/metamask-mobile/pull/9687): feat: adds "data collection for marketing" toggles ### Fixed + - [#9905](https://github.com/MetaMask/metamask-mobile/pull/9905): fix: remove metametrics redundant calls and improve compliance ## [7.24.1] + ### Fixed + - [#9943](https://github.com/MetaMask/metamask-mobile/pull/9943): fix: Remove duplicate accounts (#9943) - [#10006](https://github.com/MetaMask/metamask-mobile/pull/10006): fix: Fix order of accounts (#10006) - [#10004](https://github.com/MetaMask/metamask-mobile/pull/10004): fix: Synchronize account names (#10004) - [#9974](https://github.com/MetaMask/metamask-mobile/pull/9974): fix: Fix freeze on buy and sell flow (#9974) -- [#9980](https://github.com/MetaMask/metamask-mobile/pull/9980): fix: Fix initialization crash / login error "Engine does not exist (#9980) +- [#9980](https://github.com/MetaMask/metamask-mobile/pull/9980): fix: Fix initialization crash / login error "Engine does not exist (#9980) ## [7.24.0] + ### Added + - [#9767](https://github.com/MetaMask/metamask-mobile/pull/9767): feat: push Privacy policy date to 2024 Jun 18 12:00 UTC (#9767) - [#9707](https://github.com/MetaMask/metamask-mobile/pull/9707): feat: adds strings for the opt in toggles (#9707) - [#9661](https://github.com/MetaMask/metamask-mobile/pull/9661): feat: smart-tx opt in modal 2 (#9661) @@ -1259,7 +1428,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#9442](https://github.com/MetaMask/metamask-mobile/pull/9442): feat: smart-tx-small-logic (#9442) - [#9204](https://github.com/MetaMask/metamask-mobile/pull/9204): feat: Add new privacy policy alert toast (#9204) - [#9651](https://github.com/MetaMask/metamask-mobile/pull/9651): feat: Upgrade signature Controller to v14 (#9651) -- [#9394](https://github.com/MetaMask/metamask-mobile/pull/9394): feat: Network & Gas & Assets & Utils controllers update (#9394) +- [#9394](https://github.com/MetaMask/metamask-mobile/pull/9394): feat: Network & Gas & Assets & Utils controllers update (#9394) - [#9625](https://github.com/MetaMask/metamask-mobile/pull/9625): feat: Update signature controller v13 (#9625) - [#9129](https://github.com/MetaMask/metamask-mobile/pull/9129): feat: setting to show fiat values on testnets (#9129) - [#9740](https://github.com/MetaMask/metamask-mobile/pull/9740): feat: Update checkbox to be able to override checkbox style (#9740) @@ -1267,6 +1436,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#9572](https://github.com/MetaMask/metamask-mobile/pull/9572): feat: notifications onboarding wizard - [8 of 10] (#9572) ### Changed + - [#9612](https://github.com/MetaMask/metamask-mobile/pull/9612): revert: feat(swaps): enable Base for swaps (#9286) (#9612) - [#9735](https://github.com/MetaMask/metamask-mobile/pull/9735): chore: add swaps team to swaps domain folder (#9735) - [#9683](https://github.com/MetaMask/metamask-mobile/pull/9683): refactor: the network name and image utils into selectors (#9683) @@ -1286,10 +1456,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#9609](https://github.com/MetaMask/metamask-mobile/pull/9609): chore: add deprecated tag to the websiteicon component (#9609) - [#9619](https://github.com/MetaMask/metamask-mobile/pull/9619): chore(deps): remove unused react-native-v8 (#9619) - [#9599](https://github.com/MetaMask/metamask-mobile/pull/9599): chore: update Encryptor CODEOWNER to Accounts Team (#9599) -- [#9734](https://github.com/MetaMask/metamask-mobile/pull/9734): test: Added swap ERC20->ETH test case (#9734) +- [#9734](https://github.com/MetaMask/metamask-mobile/pull/9734): test: Added swap ERC20->ETH test case (#9734) - [#9712](https://github.com/MetaMask/metamask-mobile/pull/9712): chore: remove unnecessary patch imports and change the patch branch name (#9712) ### Fixed + - [#9301](https://github.com/MetaMask/metamask-mobile/pull/9301): fix: flaky tests issues template skip 2 (#9301) - [#9774](https://github.com/MetaMask/metamask-mobile/pull/9774): fix: unit tests (#9774) - [#9706](https://github.com/MetaMask/metamask-mobile/pull/9706): fix: QR scanner crash when user dismisses camera view in web view (#9706) @@ -1316,7 +1487,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#9616](https://github.com/MetaMask/metamask-mobile/pull/9616): fix: fix the issue 9560 which QR code accounts has been reappeared aftter user `remove wallets` (#9616) ## [7.23.0] + ### Added + - [#9595](https://github.com/MetaMask/metamask-mobile/pull/9595): feat: Upgrade to react-native-svg to 15.2.0 (#9595) - [#9305](https://github.com/MetaMask/metamask-mobile/pull/9305): feat: Update SignatureController v6.1.3 + LoggingController v2.0.0 (#9305) - [#9546](https://github.com/MetaMask/metamask-mobile/pull/9546): feat: fix logs for 1709 (#9546) @@ -1325,7 +1498,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#9286](https://github.com/MetaMask/metamask-mobile/pull/9286): feat(swaps): enable Base for swaps (#9286) - [#9495](https://github.com/MetaMask/metamask-mobile/pull/9495): feat: url bar no longer shown in the tab thumnail list view (#9495) - [#9474](https://github.com/MetaMask/metamask-mobile/pull/9474): feat: add localizations for the browser tab (#9474) -- [#9435](https://github.com/MetaMask/metamask-mobile/pull/9435): feat: sdk async persistence and protocol upgrade (#9435) +- [#9435](https://github.com/MetaMask/metamask-mobile/pull/9435): feat: sdk async persistence and protocol upgrade (#9435) - [#9119](https://github.com/MetaMask/metamask-mobile/pull/9119): feat(ramp): add activation keys labels and DS components (#9119) - [#9372](https://github.com/MetaMask/metamask-mobile/pull/9372): feat: Add `useTokenListName` hook for `Name` component (#9372) - [#9407](https://github.com/MetaMask/metamask-mobile/pull/9407): feat: Add `useFirstPartyContractName` hook (#9407) @@ -1339,8 +1512,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#9401](https://github.com/MetaMask/metamask-mobile/pull/9401): feat: updated styling in badgenetwork (#9401) ### Changed -- [#9571](https://github.com/MetaMask/metamask-mobile/pull/9571): chore: revert feat: notifications onboarding wizard (#9392) (#9571) -- [#9610](https://github.com/MetaMask/metamask-mobile/pull/9610): test: Fix flakiness caused by the notification permission dialog which caused confirmation test flakiness (#9610) + +- [#9571](https://github.com/MetaMask/metamask-mobile/pull/9571): chore: revert feat: notifications onboarding wizard (#9392) (#9571) +- [#9610](https://github.com/MetaMask/metamask-mobile/pull/9610): test: Fix flakiness caused by the notification permission dialog which caused confirmation test flakiness (#9610) - [#9577](https://github.com/MetaMask/metamask-mobile/pull/9577): chore: Chore/1742 remove vault recreation log in (#9577) - [#9576](https://github.com/MetaMask/metamask-mobile/pull/9576): chore: Update migrations with Fatal Errors (#9576) - [#9529](https://github.com/MetaMask/metamask-mobile/pull/9529): test: Refactor browser and testdapp page objects (#9529) @@ -1363,11 +1537,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#9484](https://github.com/MetaMask/metamask-mobile/pull/9484): chore(devDeps): @actions/github@^5.1.1->^6.0.0 (#9484) - [#9454](https://github.com/MetaMask/metamask-mobile/pull/9454): chore: Update Jest to v29 (#9454) - [#9475](https://github.com/MetaMask/metamask-mobile/pull/9475): chore: Fix handling of generated ppom files (#9475) -- [#9388](https://github.com/MetaMask/metamask-mobile/pull/9388): chore: initial *.metafi and *.metaswap URL migrations (#9388) +- [#9388](https://github.com/MetaMask/metamask-mobile/pull/9388): chore: initial _.metafi and _.metaswap URL migrations (#9388) - [#9455](https://github.com/MetaMask/metamask-mobile/pull/9455): chore(iyarc): remove resolved audit advisory (#9455) - [#8557](https://github.com/MetaMask/metamask-mobile/pull/8557): chore: remove unused @metamask/oss-attribution-generator (#8557) ### Fixed + - [#9525](https://github.com/MetaMask/metamask-mobile/pull/9525): fix: fix regression tests (#9525) - [#9411](https://github.com/MetaMask/metamask-mobile/pull/9411): fix: refactor mechanism for sending analytics events (#9411) - [#9575](https://github.com/MetaMask/metamask-mobile/pull/9575): fix: Add missing wallet_addEthereumChain to unrestricted list (#9575) @@ -1397,7 +1572,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#9143](https://github.com/MetaMask/metamask-mobile/pull/9143): fix: Yarn 1.22.22 (#9143) ## [7.22.0] + ### Added + - [#9329](https://github.com/MetaMask/metamask-mobile/pull/9329): feat: Added log to capture failing exception for getItem (#9329) - [#9271](https://github.com/MetaMask/metamask-mobile/pull/9271): feat: update phishing controller v8.0.0 (#9271) - [#9254](https://github.com/MetaMask/metamask-mobile/pull/9254): feat: Update Gas fee controller v10 (#9254) @@ -1421,6 +1598,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#9030](https://github.com/MetaMask/metamask-mobile/pull/9030): feat: Extend blockaid validations to base network (#9030) ### Changed + - [#9393](https://github.com/MetaMask/metamask-mobile/pull/9393): test: Fix failing regression test basic fun feat (#9393) - [#9386](https://github.com/MetaMask/metamask-mobile/pull/9386): chore: Revert #9263 feat: add notifications onboarding wizard (#9386) - [#8909](https://github.com/MetaMask/metamask-mobile/pull/8909): test: 1453 refactor modal pages batch 3 (#8909) @@ -1439,6 +1617,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#9093](https://github.com/MetaMask/metamask-mobile/pull/9093): refactor: migrate Encryptor to TypeScript and increase PBKDF2 iterations number (#9093) ### Fixed + - [#9302](https://github.com/MetaMask/metamask-mobile/pull/9302): fix: e2e test permission problem (#9302) - [#9395](https://github.com/MetaMask/metamask-mobile/pull/9395): fix(translations): Fix hard coded repo name left from testing in diff repo (#9395) - [#9337](https://github.com/MetaMask/metamask-mobile/pull/9337): fix: show banner alert if account balance is insufficient (#9337) @@ -1472,7 +1651,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#9283](https://github.com/MetaMask/metamask-mobile/pull/9283): fix: missing walletConnect prop (#9283) ## [7.21.0] + ### Added + - [#9065](https://github.com/MetaMask/metamask-mobile/pull/9065): feat: Update network controller to version 13.0.1 (#9065) - [#9166](https://github.com/MetaMask/metamask-mobile/pull/9166): feat: signature controller update to v6.0.0 (#9166) - [#9194](https://github.com/MetaMask/metamask-mobile/pull/9194): feat: 7.19.1 (#9194) @@ -1488,6 +1669,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#8701](https://github.com/MetaMask/metamask-mobile/pull/8701): feat: notifications (#8701) ### Changed + - [#9199](https://github.com/MetaMask/metamask-mobile/pull/9199): chore: Chore/resolve xcode changes (#9199) - [#9197](https://github.com/MetaMask/metamask-mobile/pull/9197): test: Change instances of messages to enContent while importing from locales (#9197) - [#9181](https://github.com/MetaMask/metamask-mobile/pull/9181): test: fix rpc test on Ci for Android (#9181) @@ -1510,11 +1692,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#5093](https://github.com/MetaMask/metamask-mobile/pull/5093): chore: Bump pify from 4.0.1 to 6.1.0 (#5093) ### Fixed + - [#8958](https://github.com/MetaMask/metamask-mobile/pull/8958): fix: unit test metametrics at app startup (#8958) - [#9206](https://github.com/MetaMask/metamask-mobile/pull/9206): fix: fix nfts displayed on account and refactor collectibles component (#9206) - [#9174](https://github.com/MetaMask/metamask-mobile/pull/9174): fix: change CUSTOM_TOKEN_IMPORTED tracking mode (#9174) - [#9148](https://github.com/MetaMask/metamask-mobile/pull/9148): fix: Tokens disappearing when updating (#9148) -- [#9123](https://github.com/MetaMask/metamask-mobile/pull/9123): fix: Revert Update controller utils to 5.0.2 (#9123) +- [#9123](https://github.com/MetaMask/metamask-mobile/pull/9123): fix: Revert Update controller utils to 5.0.2 (#9123) - [#8603](https://github.com/MetaMask/metamask-mobile/pull/8603): fix: nft detection running too many times (#8603) - [#9125](https://github.com/MetaMask/metamask-mobile/pull/9125): fix: add display warning for mumbai (#9125) - [#9150](https://github.com/MetaMask/metamask-mobile/pull/9150): fix: wc connections and permissions system network improvement (#9150) @@ -1524,11 +1707,15 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#9075](https://github.com/MetaMask/metamask-mobile/pull/9075): fix: Send ppom metrics when transaction is cancelled. (#9075) ## [7.20.1] + ### Fixed + - [#9092](https://github.com/MetaMask/metamask-mobile/pull/9092): fix: check HD keyring ## [7.20.0] + ### Added + - [#8982](https://github.com/MetaMask/metamask-mobile/pull/8982): feat: Update gas fee controller to version 6.1.2 - [#9079](https://github.com/MetaMask/metamask-mobile/pull/9079): feat: Update controller utils to 5.0.2 - [#9036](https://github.com/MetaMask/metamask-mobile/pull/9036): feat: Adding blockaid validations for sepolia network @@ -1544,6 +1731,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#8986](https://github.com/MetaMask/metamask-mobile/pull/8986): feat: Updated Assets Controllers to v11.1.0 ### Changed + - [#8967](https://github.com/MetaMask/metamask-mobile/pull/8967): chore: Handle async migrations & add migration tests - [#8826](https://github.com/MetaMask/metamask-mobile/pull/8826): refactor: update Ledger connection instructions - [#9038](https://github.com/MetaMask/metamask-mobile/pull/9038): chore: Consolidate and simplify isTest condition @@ -1562,6 +1750,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#8959](https://github.com/MetaMask/metamask-mobile/pull/8959): chore: Migrate another (3/3) batch of unit tests away from enzyme ### Fixed + - [#9000](https://github.com/MetaMask/metamask-mobile/pull/9000): fix: Revert "test: [android] run tests on the first emulator in your list … - [#8998](https://github.com/MetaMask/metamask-mobile/pull/8998): fix: Revert "fix: hardcode emulator name to fix failing android tests on C… - [#8995](https://github.com/MetaMask/metamask-mobile/pull/8995): fix: hardcode emulator name to fix failing android tests on CI @@ -1584,11 +1773,15 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#8932](https://github.com/MetaMask/metamask-mobile/pull/8932): fix: breaking change from `@metamask/transaction-controller` regarding Ledger transactions ## [7.19.1] + ### Fixed + - [#9193](https://github.com/MetaMask/metamask-mobile/pull/9193): fix(ramp): default networks state to array ## [7.19.0] + ### Added + - [#8935](https://github.com/MetaMask/metamask-mobile/pull/8935): feat: Remove powered by blockaid line - [#8908](https://github.com/MetaMask/metamask-mobile/pull/8908): feat: add linea sepolia network and deprecate Linea Goerli network - [#8881](https://github.com/MetaMask/metamask-mobile/pull/8881): feat: patch for assets controller v11.0.1 @@ -1604,6 +1797,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#8768](https://github.com/MetaMask/metamask-mobile/pull/8768): feat: state logs in the exported file with app version and build number ### Changed + - [#8789](https://github.com/MetaMask/metamask-mobile/pull/8789): ci: 8253 - Add fitness function action for enzyme imports - [#8919](https://github.com/MetaMask/metamask-mobile/pull/8919): chore: Include env variable copying into yarn setup command - [#8964](https://github.com/MetaMask/metamask-mobile/pull/8964): chore: added platform team as codeowner to component-lib, patches, bitrise.yml @@ -1639,6 +1833,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#8802](https://github.com/MetaMask/metamask-mobile/pull/8802): chore: Remove `glob` resolution ### Fixed + - [#8774](https://github.com/MetaMask/metamask-mobile/pull/8774): fix: normalize transaction parameters before PPOM validation - [#8838](https://github.com/MetaMask/metamask-mobile/pull/8838): fix: Rename DAPP_VISITED to DAPP_VIEWED - [#8784](https://github.com/MetaMask/metamask-mobile/pull/8784): fix: update usage of OP goerli to OP Sepolia @@ -1667,7 +1862,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#8496](https://github.com/MetaMask/metamask-mobile/pull/8496): fix: redirection issue after chain switch on sign request ## [7.18.0] + ### Added + - [#8729](https://github.com/MetaMask/metamask-mobile/pull/8729): feat(ramp): add event when user expands quotes - [#8787](https://github.com/MetaMask/metamask-mobile/pull/8787): feat: add MetaMetrics custom flush vars and log - [#8680](https://github.com/MetaMask/metamask-mobile/pull/8680): feat(ramp): add previously used tag @@ -1701,6 +1898,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#8673](https://github.com/MetaMask/metamask-mobile/pull/8673): feat: new trackErrorAsAnalytics for segment ### Changed + - [#8803](https://github.com/MetaMask/metamask-mobile/pull/8803): chore: Remove unnecessary resolutions - [#8792](https://github.com/MetaMask/metamask-mobile/pull/8792): test: Fix tag in regression test - [#8791](https://github.com/MetaMask/metamask-mobile/pull/8791): test: add contact us e2e @@ -1717,6 +1915,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#8644](https://github.com/MetaMask/metamask-mobile/pull/8644): test: Refactor settings page object ### Fixed + - [#8801](https://github.com/MetaMask/metamask-mobile/pull/8801): fix(ramp): undefined payment method - [#8798](https://github.com/MetaMask/metamask-mobile/pull/8798): fix: remove unnecessary post message stream patch - [#8572](https://github.com/MetaMask/metamask-mobile/pull/8572): fix: fake native tokens need better UX error handling @@ -1742,12 +1941,16 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#8615](https://github.com/MetaMask/metamask-mobile/pull/8615): fix: Fix add custom rpc detox test script ## [7.17.1] + ### Fixed + - [#8870](https://github.com/MetaMask/metamask-mobile/pull/8870): fix: update PPOM to v1.4.4 - [#8892](https://github.com/MetaMask/metamask-mobile/pull/8892): fix: Tokens disappearing ## [7.17.0] + ### Added + - [#8520](https://github.com/MetaMask/metamask-mobile/pull/8520): feat: Feature/1300 dapp visit event - [#8354](https://github.com/MetaMask/metamask-mobile/pull/8354): feat(ramp): add Terms of Service provider link to quotes - [#8579](https://github.com/MetaMask/metamask-mobile/pull/8579): feat: translate fake native tokens need better UX error handling @@ -1769,6 +1972,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#8413](https://github.com/MetaMask/metamask-mobile/pull/8413): feat: Update SES lockdown options ### Changed + - [#8457](https://github.com/MetaMask/metamask-mobile/pull/8457): refactor(ramp): add routes folder - [#8510](https://github.com/MetaMask/metamask-mobile/pull/8510): chore: upgrading design tokens package and typescript conventions - [#8478](https://github.com/MetaMask/metamask-mobile/pull/8478): chore: bumping code coverage thresholds @@ -1781,6 +1985,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#8514](https://github.com/MetaMask/metamask-mobile/pull/8514): chore(ramp): upgrade sdk to 1.26.2 ### Fixed + - [#8348](https://github.com/MetaMask/metamask-mobile/pull/8348): fix: update nft metadata on page refresh - [#8556](https://github.com/MetaMask/metamask-mobile/pull/8556): fix: improve native balance fetch logic on the UX - [#8605](https://github.com/MetaMask/metamask-mobile/pull/8605): fix: Update ppom_release to fix fail ppom security validation check @@ -1814,7 +2019,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#8476](https://github.com/MetaMask/metamask-mobile/pull/8476): fix: Fix title color type in settings drawer ## [7.16.0] + ### Added + - [#8093](https://github.com/MetaMask/metamask-mobile/pull/8093): feat: decouple account selector from qr code connector - [#8383](https://github.com/MetaMask/metamask-mobile/pull/8383): feat: add translation for privacy toggle - [#8412](https://github.com/MetaMask/metamask-mobile/pull/8412): feat: Blockaid experimental settings should be visible on all networks @@ -1831,6 +2038,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#8030](https://github.com/MetaMask/metamask-mobile/pull/8030): feat: New Crowdin translations by Github Action ### Changed + - [#8452](https://github.com/MetaMask/metamask-mobile/pull/8452): refactor: Replace SheetBottom with BottomSheet in WalletActions - [#8451](https://github.com/MetaMask/metamask-mobile/pull/8451): refactor: Replace SheetBottom with BottomSheet in ShowIpfsGatewaySheet - [#8450](https://github.com/MetaMask/metamask-mobile/pull/8450): refactor: Replace SheetBottom with BottomSheet in ShowDisplayNFTMediaSheet @@ -1876,6 +2084,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#8272](https://github.com/MetaMask/metamask-mobile/pull/8272): chore: adds snapController selector and initial state ### Fixed + - [#8460](https://github.com/MetaMask/metamask-mobile/pull/8460): fix: typos in en.json - [#8453](https://github.com/MetaMask/metamask-mobile/pull/8453): fix: show only blockaid multichain on whats new - [#8421](https://github.com/MetaMask/metamask-mobile/pull/8421): fix: patch handling of missing token price @@ -1904,9 +2113,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#8278](https://github.com/MetaMask/metamask-mobile/pull/8278): fix: scanning dapp QR code does not open in-app browser and navigate to dapp #8277 - [#8247](https://github.com/MetaMask/metamask-mobile/pull/8247): fix: fix inconsistency in the popular tab - ## [7.15.0] + ### Added + - [#8080](https://github.com/MetaMask/metamask-mobile/pull/8080): feat(ramp): add sell quick amounts with gas estimations - [#8204](https://github.com/MetaMask/metamask-mobile/pull/8204): feat: update blockaid dependency to latest version - [#8215](https://github.com/MetaMask/metamask-mobile/pull/8215): feat: Android sdk dapp icon support @@ -1921,6 +2131,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#8097](https://github.com/MetaMask/metamask-mobile/pull/8097): feat(ramp): keep region always up to date ### Changed + - [#8231](https://github.com/MetaMask/metamask-mobile/pull/8231): test: 1328 refactor modals page batch 1 - [#8229](https://github.com/MetaMask/metamask-mobile/pull/8229): refactor(ramp): update callback url for dev/staging - [#8217](https://github.com/MetaMask/metamask-mobile/pull/8217): test: fixed Swap smoke and regression test failures @@ -1961,6 +2172,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#8044](https://github.com/MetaMask/metamask-mobile/pull/8044): refactor: Updated navigational Navbar Headers with DS components ### Fixed + - [#8230](https://github.com/MetaMask/metamask-mobile/pull/8230): fix: refresh ownership status for nfts - [#8248](https://github.com/MetaMask/metamask-mobile/pull/8248): fix: update PPOM validator version to fix validation after network change - [#8233](https://github.com/MetaMask/metamask-mobile/pull/8233): fix: enabling blockaid should be possible only if user is on mainnet @@ -1987,7 +2199,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#8029](https://github.com/MetaMask/metamask-mobile/pull/8029): fix: blockaid analytics code typos ## [7.14.0] + ### Added + - [#8016](https://github.com/MetaMask/metamask-mobile/pull/8016): feat(ramp): add sell deeplink - [#7962](https://github.com/MetaMask/metamask-mobile/pull/7962): feat(ramp): add sell notification texts - [#8047](https://github.com/MetaMask/metamask-mobile/pull/8047): feat: Added RadioButton to DS @@ -2010,7 +2224,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#7861](https://github.com/MetaMask/metamask-mobile/pull/7861): feat: enable Blockaid on iOS - [#7864](https://github.com/MetaMask/metamask-mobile/pull/7864): feat(ramp): sell what's new modal content - ### Changed +### Changed + - [#7908](https://github.com/MetaMask/metamask-mobile/pull/7908): chore: tranfer the DeeplinkManager file from JS to TS - [#7972](https://github.com/MetaMask/metamask-mobile/pull/7972): chore: Replace local code fence transform with `@metamask/build-utils` - [#7925](https://github.com/MetaMask/metamask-mobile/pull/7925): chore: refactor the DeeplinkManager into smaller parts and add unit tests @@ -2033,7 +2248,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#7689](https://github.com/MetaMask/metamask-mobile/pull/7689): refactor: generate nonces using nonce tracker - [#7896](https://github.com/MetaMask/metamask-mobile/pull/7896): test: Remove duplicate methods on Gesture class - ### Fixed +### Fixed + - [#7953](https://github.com/MetaMask/metamask-mobile/pull/7953): fix: correct proptypes array in WebsiteIcon component - [#7886](https://github.com/MetaMask/metamask-mobile/pull/7886): fix: Fix `eth_signTypedData` signatures containing `0x` - [#7935](https://github.com/MetaMask/metamask-mobile/pull/7935): fix: bitrise cocoapods issue in bitrise @@ -2056,26 +2272,37 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#7976](https://github.com/MetaMask/metamask-mobile/pull/7976): fix: blockaid mobile performance improvements ## [7.12.5] + ### Added + - [#8156](https://github.com/MetaMask/metamask-mobile/pull/8156): feat: migrate to latest Token rates controller ### Fixed + - [#8155](https://github.com/MetaMask/metamask-mobile/pull/8155): fix: OpenSea V1 -> V2 patch ## [7.12.3] + ### Fixed + - [#8102](https://github.com/MetaMask/metamask-mobile/pull/8102): fix: prevent bad svg urls in react-native-svg ## [7.12.2] + ### Fixed -- [#8057](https://github.com/MetaMask/metamask-mobile/pull/8057): fix: Disable SES on iOS + +- [#8057](https://github.com/MetaMask/metamask-mobile/pull/8057): fix: Disable SES on iOS ## [7.12.1] + ### Fixed + - [#7991](https://github.com/MetaMask/metamask-mobile/pull/7991): fix: patch for token rates controller with coin gecko endpoint ## [7.12.0] + ### Added + - [#7037](https://github.com/MetaMask/metamask-mobile/pull/7037): feat(off-ramp): add off-ramp feature - [#7734](https://github.com/MetaMask/metamask-mobile/pull/7734): feat: enable code fence capabilities on mobile app. - [#7754](https://github.com/MetaMask/metamask-mobile/pull/7754): feat: add a return to app modal only for ios 17 when an sdk operation is done @@ -2097,6 +2324,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#7708](https://github.com/MetaMask/metamask-mobile/pull/7708): feat: configure metro listener port ### Changed + - [#7860](https://github.com/MetaMask/metamask-mobile/pull/7860): refactor: Updated Toast story - [#7391](https://github.com/MetaMask/metamask-mobile/pull/7391): refactor: Convert Button stories to csf format - [#7393](https://github.com/MetaMask/metamask-mobile/pull/7393): refactor: Convert Badge stories to csf format @@ -2123,6 +2351,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#7704](https://github.com/MetaMask/metamask-mobile/pull/7704): refactor: logger.js to typescript and optimize for dev ### Fixed + - [#7859](https://github.com/MetaMask/metamask-mobile/pull/7859): fix: microphone and camera on webview - [#7776](https://github.com/MetaMask/metamask-mobile/pull/7776): fix: WalletConnect requests should show loading banner for blockaid - [#7838](https://github.com/MetaMask/metamask-mobile/pull/7838): fix: remove unused .tools-versions to prioritize nvm @@ -2160,7 +2389,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#7642](https://github.com/MetaMask/metamask-mobile/pull/7642): fix: action view btn not able translate ## [7.11.0] + ### Added + - [#7251](https://github.com/MetaMask/metamask-mobile/pull/7251): feat: #999 - RTK consolidate reducers - [#7628](https://github.com/MetaMask/metamask-mobile/pull/7628): feat: sdk batch rpc calls - [#7655](https://github.com/MetaMask/metamask-mobile/pull/7655): feat: node to version 18.17.1 @@ -2173,6 +2404,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#7419](https://github.com/MetaMask/metamask-mobile/pull/7419): feat: Add metrics for provider calls coming from ppom on mobile ### Changed + - [#7349](https://github.com/MetaMask/metamask-mobile/pull/7349): refactor: Convert Form stories - [#7414](https://github.com/MetaMask/metamask-mobile/pull/7414): refactor: Convert List stories to csf format - [#7468](https://github.com/MetaMask/metamask-mobile/pull/7468): refactor: Convert Text stories to csf format @@ -2210,6 +2442,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#7574](https://github.com/MetaMask/metamask-mobile/pull/7574): chore: minor bump on react native dev tools to address audit issue ### Fixed + - [#7692](https://github.com/MetaMask/metamask-mobile/pull/7692): fix: sdk and deeplink init process - [#7687](https://github.com/MetaMask/metamask-mobile/pull/7687): fix: refactor selectors and fix request token test - [#7491](https://github.com/MetaMask/metamask-mobile/pull/7491): fix: Warn users when connecting to a website on the eth-phishing-detect list on mobile @@ -2230,13 +2463,15 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#7540](https://github.com/MetaMask/metamask-mobile/pull/7540): fix: token decimals fetched from the chain - [#7546](https://github.com/MetaMask/metamask-mobile/pull/7546): fix link to testnet faucets - [#7557](https://github.com/MetaMask/metamask-mobile/pull/7557): fix(issue template): encourage recordings -- [#7813](https://github.com/MetaMask/metamask-mobile/pull/7813): fix: Add microphone permissions to iOS +- [#7813](https://github.com/MetaMask/metamask-mobile/pull/7813): fix: Add microphone permissions to iOS - [#7737](https://github.com/MetaMask/metamask-mobile/pull/7737): fix: Use custom controls for iOS video - [#7811](https://github.com/MetaMask/metamask-mobile/pull/7811): fix: Lock yarn to 1.22.19 -- [#7733](https://github.com/MetaMask/metamask-mobile/pull/7733): fix: silence PollingBlockTracker Sentry +- [#7733](https://github.com/MetaMask/metamask-mobile/pull/7733): fix: silence PollingBlockTracker Sentry ## [7.10.0] + ### Added + - [#7154](https://github.com/MetaMask/metamask-mobile/pull/7154): feat: incoming transactions by network - [#7541](https://github.com/MetaMask/metamask-mobile/pull/7541): feat: Add EIP-6963 Provider - [#7256](https://github.com/MetaMask/metamask-mobile/pull/7256): feat: Enable zkSync Era in Swaps @@ -2248,6 +2483,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#7584](https://github.com/MetaMask/metamask-mobile/pull/7584): feat: re-create connect_sign feature ### Changed + - [#7574](https://github.com/MetaMask/metamask-mobile/pull/7574): chore: minor bump on react native dev tools to address audit issue - [#7354](https://github.com/MetaMask/metamask-mobile/pull/7354): chore: New Crowdin translations by Github Action - [#7542](https://github.com/MetaMask/metamask-mobile/pull/7542): chore: @metamask/test-dapp@^7.1.0->^7.2.0 @@ -2281,11 +2517,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#7372](https://github.com/MetaMask/metamask-mobile/pull/7372): test: reorg signatures tests to maximize efficiency - [#7356](https://github.com/MetaMask/metamask-mobile/pull/7356): test: Add dynamic allocation port for ganache, fixtures and test dapp - [#7130](https://github.com/MetaMask/metamask-mobile/pull/7130): chore(deps): dedupe semver -- [#7128](https://github.com/MetaMask/metamask-mobile/pull/7128): deps: Dedupe `ethers`@5.* +- [#7128](https://github.com/MetaMask/metamask-mobile/pull/7128): deps: Dedupe `ethers`@5.\* - [#7366](https://github.com/MetaMask/metamask-mobile/pull/7366): ci(bitrise): trigger smoke test on every merge to main - [#7364](https://github.com/MetaMask/metamask-mobile/pull/7364): chore: bump Node to v16.20 ### Fixed + - [#7540](https://github.com/MetaMask/metamask-mobile/pull/7540): fix: token decimals fetched from the chain - [#7531](https://github.com/MetaMask/metamask-mobile/pull/7531): fix: depcheck@^1.4.5->^1.4.7 - [#7483](https://github.com/MetaMask/metamask-mobile/pull/7483): fix: android os connection issue @@ -2310,11 +2547,15 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#7362](https://github.com/MetaMask/metamask-mobile/pull/7362): fix(action): update fetch-depth parameter to fetch only the last commit ## [7.9.1] + ### Fixed + - [#7653](https://github.com/MetaMask/metamask-mobile/pull/7653): fix: revert nonce logic in transaction controller ## [7.9.0] + ### Added + - [#7341](https://github.com/MetaMask/metamask-mobile/pull/7341): feat(ramp): add webview debug by env vars - [#7345](https://github.com/MetaMask/metamask-mobile/pull/7345): feat: remove unused react-native-webrtc package - [#7212](https://github.com/MetaMask/metamask-mobile/pull/7212): feat: extend the time we resume the session without showing OTP @@ -2324,6 +2565,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#7052](https://github.com/MetaMask/metamask-mobile/pull/7052): feat: Ipfs implementation (#6968) ### Changed + - [#7028](https://github.com/MetaMask/metamask-mobile/pull/7028): chore: New Crowdin translations by Github Action - [#7159](https://github.com/MetaMask/metamask-mobile/pull/7159): refactor: custom network component - [#7277](https://github.com/MetaMask/metamask-mobile/pull/7277): chore: 5.8.1 Sentry SDK Upgrade @@ -2340,6 +2582,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#7225](https://github.com/MetaMask/metamask-mobile/pull/7225): test: Signatures refactor with fixtures ### Fixed + - [#7309](https://github.com/MetaMask/metamask-mobile/pull/7309): fix: Fix Podfile.lock versions - [#7308](https://github.com/MetaMask/metamask-mobile/pull/7308): fix: Fix e2e smoke tests caused by failed pod install step - [#7197](https://github.com/MetaMask/metamask-mobile/pull/7197): fix: Key the address book by chain ID instead of network ID @@ -2353,9 +2596,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#7276](https://github.com/MetaMask/metamask-mobile/pull/7276): fix: handle overlapping add network requests - [#7278](https://github.com/MetaMask/metamask-mobile/pull/7278): fix: Fix console errors upon switching networks - ## [7.8.0] + ### Added + - [#7068](https://github.com/MetaMask/metamask-mobile/pull/7068): feat: Adding blockaid banner to confirmation pages - [#7186](https://github.com/MetaMask/metamask-mobile/pull/7186): feat: translation ipfs banner - [#7038](https://github.com/MetaMask/metamask-mobile/pull/7038): feat: Blockaid preference @@ -2363,6 +2607,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#7107](https://github.com/MetaMask/metamask-mobile/pull/7107): feat: update README XCode and python instructions ### Changed + - [#7213](https://github.com/MetaMask/metamask-mobile/pull/7213): chore: Normalize transaction controller patch - [#7226](https://github.com/MetaMask/metamask-mobile/pull/7226): chore: add script to patch transaction controller - [#7140](https://github.com/MetaMask/metamask-mobile/pull/7140): chore: Update confirmation page layout for Blockaid alerts @@ -2374,7 +2619,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#7182](https://github.com/MetaMask/metamask-mobile/pull/7182): refactor: Fix documented return type of `handleNetworkSwitch` - [#7168](https://github.com/MetaMask/metamask-mobile/pull/7168): test: Screenshots on failure should only be done on the last retry for ios - [#7179](https://github.com/MetaMask/metamask-mobile/pull/7179): refactor: Add tests for `checkAddress` and fix types -- [#7118](https://github.com/MetaMask/metamask-mobile/pull/7118): deps: dedupe @babel/*, babel-* +- [#7118](https://github.com/MetaMask/metamask-mobile/pull/7118): deps: dedupe @babel/_, babel-_ - [#7032](https://github.com/MetaMask/metamask-mobile/pull/7032): devDeps: @lavamoat/allow-scripts@1.0.6->2.3.1 - [#7124](https://github.com/MetaMask/metamask-mobile/pull/7124): ci: Add depcheck test - [#7156](https://github.com/MetaMask/metamask-mobile/pull/7156): refactor: Refactor `isTestNet` to accept chain ID @@ -2390,6 +2635,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#7100](https://github.com/MetaMask/metamask-mobile/pull/7100): ci: Add type check lint to CI ### Fixed + - [#7187](https://github.com/MetaMask/metamask-mobile/pull/7187): fix: sonar coverage path - [#7106](https://github.com/MetaMask/metamask-mobile/pull/7106): fix: rename signature events and fix failing unit test - [#7077](https://github.com/MetaMask/metamask-mobile/pull/7077): fix: Warning when rejecting an approval request with id XYZ not found @@ -2409,7 +2655,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#7096](https://github.com/MetaMask/metamask-mobile/pull/7096): fix: Fix Engine `controllerMessenger` type errors ## [7.7.0] + ### Added + - [#7090](https://github.com/MetaMask/metamask-mobile/pull/7090): feat: add translations for new contextual sheet display nft media - [#6727](https://github.com/MetaMask/metamask-mobile/pull/6727): style: Update Button's pressed and disabled states - [#7075](https://github.com/MetaMask/metamask-mobile/pull/7075): feat: incoming transactions translations @@ -2419,6 +2667,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#6983](https://github.com/MetaMask/metamask-mobile/pull/6983): feat: 940 e2e migrate senderc721 test to detox ### Changed + - [#6998](https://github.com/MetaMask/metamask-mobile/pull/6998): refactor: use block tracker to poll incoming transactions - [#6872](https://github.com/MetaMask/metamask-mobile/pull/6872): refactor: Update controller packages to v44 - [#7091](https://github.com/MetaMask/metamask-mobile/pull/7091): refactor: Simplify Engine constructor @@ -2437,6 +2686,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#6898](https://github.com/MetaMask/metamask-mobile/pull/6898): refactor: Update `@metamask/assets-controllers` patch ### Fixed + - [#7050](https://github.com/MetaMask/metamask-mobile/pull/7050): fix: Update terms of use header to match new copy - [#7086](https://github.com/MetaMask/metamask-mobile/pull/7086): fix: ext contributor SonarCloud - [#7029](https://github.com/MetaMask/metamask-mobile/pull/7029): fix: crowdin action upload @@ -2449,7 +2699,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#7024](https://github.com/MetaMask/metamask-mobile/pull/7024): fix(action): octokit not supported on MetaMask repos ## [7.6.0] + ### Added + - [#6938](https://github.com/MetaMask/metamask-mobile/pull/6938): feat(release): 7.5.0 - [#7026](https://github.com/MetaMask/metamask-mobile/pull/7026): feat: new translations for nft media - [#6779](https://github.com/MetaMask/metamask-mobile/pull/6779): feat: Add security alerts settings to experimental tab @@ -2461,6 +2713,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#6832](https://github.com/MetaMask/metamask-mobile/pull/6832): feat: add support for template and header on result pages ### Changed + - [#6913](https://github.com/MetaMask/metamask-mobile/pull/6913): chore: remove unused Jest preprocessor - [#6840](https://github.com/MetaMask/metamask-mobile/pull/6840): chore(deps): bump word-wrap from 1.2.3 to 1.2.4 - [#6930](https://github.com/MetaMask/metamask-mobile/pull/6930): docs: Update QA section in PR template @@ -2474,6 +2727,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#6936](https://github.com/MetaMask/metamask-mobile/pull/6936): chore: remove onBackdropPress for signatures ### Fixed + - [#6653](https://github.com/MetaMask/metamask-mobile/pull/6653): fix: #893 fix immediate lock timer - [#6910](https://github.com/MetaMask/metamask-mobile/pull/6910): fix: remove translations files being pushed up to crowdin - [#6947](https://github.com/MetaMask/metamask-mobile/pull/6947): fix: Fix TS errors in `component-library` directory @@ -2491,7 +2745,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#6864](https://github.com/MetaMask/metamask-mobile/pull/6864): fix: custom position logic for badgeWrapper ## [7.5.0] + ### Added + - [#6865](https://github.com/MetaMask/metamask-mobile/pull/6865): feat: Create a performance E2E test for warm starts - [#6187](https://github.com/MetaMask/metamask-mobile/pull/6187): feat: Add guidelines for contributors - [#6732](https://github.com/MetaMask/metamask-mobile/pull/6732): feat: add missing `wallet_requestPermissions` and `wallet_getPermissions` to the mobile API. @@ -2507,6 +2763,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#6755](https://github.com/MetaMask/metamask-mobile/pull/6755): feat: sdk protocol update ### Changed + - [#6884](https://github.com/MetaMask/metamask-mobile/pull/6884): chore: Update `@metamask/controller-utils` to v3.4 - [#6876](https://github.com/MetaMask/metamask-mobile/pull/6876): chore: Update Jest to v28 - [#6784](https://github.com/MetaMask/metamask-mobile/pull/6784): refactor: Use selectors for token list controller state access @@ -2514,9 +2771,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#6752](https://github.com/MetaMask/metamask-mobile/pull/6752): refactor: Use selectors for currency rate controller state access - [#6687](https://github.com/MetaMask/metamask-mobile/pull/6687): refactor: split approvals into separate files - [#6848](https://github.com/MetaMask/metamask-mobile/pull/6848): refactor: Use Redux network controller state -- [#6775](https://github.com/MetaMask/metamask-mobile/pull/6775): refactor: Use selectors for preferences controller state +- [#6775](https://github.com/MetaMask/metamask-mobile/pull/6775): refactor: Use selectors for preferences controller state - [#6808](https://github.com/MetaMask/metamask-mobile/pull/6808): refactor: Updated constants structure for button to remove -access + access - [#6814](https://github.com/MetaMask/metamask-mobile/pull/6814): refactor(ramp): rename fiat aggregator folder to ramp - [#6804](https://github.com/MetaMask/metamask-mobile/pull/6804): refactor(on-ramp): refactor quotes screen - [#6820](https://github.com/MetaMask/metamask-mobile/pull/6820): refactor: Use selectors for nft controller state access @@ -2531,6 +2788,7 @@ access - [#6080](https://github.com/MetaMask/metamask-mobile/pull/6080): refactor: TypeScript ~4.8.4 and ESLint deps upgrades and initial type fixes ### Fixed + - [#6863](https://github.com/MetaMask/metamask-mobile/pull/6863): fix: misalignment issue for multiselect cells - [#6600](https://github.com/MetaMask/metamask-mobile/pull/6600): refactor: accept SignController approval request from frontend - [#6844](https://github.com/MetaMask/metamask-mobile/pull/6844): fix: Android filename validation when downloading from browser @@ -2546,7 +2804,9 @@ access - [#6903](https://github.com/MetaMask/metamask-mobile/pull/6903): fix: Fix crash when switching to Linea ## [7.4.0] + ### Added + - [#6805](https://github.com/MetaMask/metamask-mobile/pull/6805): feat(on-ramp): upgrade on-ramp SDK with apple pay support - [#6679](https://github.com/MetaMask/metamask-mobile/pull/6679): feat(on-ramp): upgrade on-ramp-sdk to v1.22.0 with abort controller support - [#6799](https://github.com/MetaMask/metamask-mobile/pull/6799): feat: prioritize resume over deeplink to accelerate reconnection flow @@ -2557,6 +2817,7 @@ access - [#6755](https://github.com/MetaMask/metamask-mobile/pull/6755): feat: sdk protocol update ### Changed + - [#6804](https://github.com/MetaMask/metamask-mobile/pull/6804): refactor(on-ramp): refactor quotes screen - [#6784](https://github.com/MetaMask/metamask-mobile/pull/6784): refactor: Use selectors for token list controller state access - [#6758](https://github.com/MetaMask/metamask-mobile/pull/6758): refactor: Use selectors for tokens controller state access @@ -2565,6 +2826,7 @@ access - [#6752](https://github.com/MetaMask/metamask-mobile/pull/6752): refactor: Use selectors for currency rate controller state access ### Fixed + - [#6754](https://github.com/MetaMask/metamask-mobile/pull/6754): fix: sending an ERC20 token with an amount with more decimals than the token decimal, results in nothing - [#6790](https://github.com/MetaMask/metamask-mobile/pull/6790): fix: update snapshot for linea mainnet - [#6587](https://github.com/MetaMask/metamask-mobile/pull/6587): fix: Improves handling of missing WCv2 Project ID @@ -2573,11 +2835,15 @@ access - [#6753](https://github.com/MetaMask/metamask-mobile/pull/6753): fix: Delete collectible media reproductor ## [7.3.1] + ### Fixed + - [#6833](https://github.com/MetaMask/metamask-mobile/pull/6833): fix: invalid transaction data used for approve transaction ## [7.3.0] + ### Added + - [#6220](https://github.com/MetaMask/metamask-mobile/pull/6220): feat: Upgrade React Native to 0.71.6 - [#6596](https://github.com/MetaMask/metamask-mobile/pull/6596): feat: Memoise token balance controler hook - [#6639](https://github.com/MetaMask/metamask-mobile/pull/6639): feat: approval flow for add & switch network @@ -2590,6 +2856,7 @@ access - [#6499](https://github.com/MetaMask/metamask-mobile/pull/6499): feat: `eth_accounts` return all permitted accounts ### Changed + - [#6662](https://github.com/MetaMask/metamask-mobile/pull/6662): refactor: Remove dead network controller code - [#6664](https://github.com/MetaMask/metamask-mobile/pull/6664): refactor: Simplify `isMainnet` utility function - [#6723](https://github.com/MetaMask/metamask-mobile/pull/6723): refactor: Updated checkbox style and icon @@ -2601,6 +2868,7 @@ access - [#6641](https://github.com/MetaMask/metamask-mobile/pull/6641): refactor: approve and reject transactions using approval controller ### Fixed + - [#6741](https://github.com/MetaMask/metamask-mobile/pull/6741): fix: onPress prop added to SelectItem component - [#6722](https://github.com/MetaMask/metamask-mobile/pull/6722): fix: WC2 error management and SDK 'authorized' event - [#6729](https://github.com/MetaMask/metamask-mobile/pull/6729): fix: update multi select snapshot @@ -2610,7 +2878,9 @@ access - [#6637](https://github.com/MetaMask/metamask-mobile/pull/6637): fix: Support Decimal Comma for Token Custom Spend Cap ## [7.2.0] + ### Added + - [#6632](https://github.com/MetaMask/metamask-mobile/pull/6632): feat: add linea mainnet alert message - [#6496](https://github.com/MetaMask/metamask-mobile/pull/6496): feat(551): add Linea Mainnet - [#6494](https://github.com/MetaMask/metamask-mobile/pull/6494): feat: Update banner component to show/hide details section @@ -2627,6 +2897,7 @@ access - [#6486](https://github.com/MetaMask/metamask-mobile/pull/6486): feat: Add disabled prop on base button ### Changed + - [#6612](https://github.com/MetaMask/metamask-mobile/pull/6612): chore: approve txn when gas estimation ready - [#6054](https://github.com/MetaMask/metamask-mobile/pull/6054): chore: Improve TagURL - [#6520](https://github.com/MetaMask/metamask-mobile/pull/6520): chore: improve variable name @@ -2643,6 +2914,7 @@ access - [#6357](https://github.com/MetaMask/metamask-mobile/pull/6357): refactor: use approval controller for watch asset confirmation ### Fixed + - [#6549](https://github.com/MetaMask/metamask-mobile/pull/6549): fix: Networks text alignement - [#6634](https://github.com/MetaMask/metamask-mobile/pull/6634): fix: disable next button if custom input is invalid - [#6491](https://github.com/MetaMask/metamask-mobile/pull/6491): fix: refactor linea testnet implementation @@ -2655,11 +2927,13 @@ access - [#6473](https://github.com/MetaMask/metamask-mobile/pull/6473): fix: fix for swaps button displaying on unsupported networks - [#6464](https://github.com/MetaMask/metamask-mobile/pull/6464): fix: bug domain not shown on signature - [#6517](https://github.com/MetaMask/metamask-mobile/pull/6517): fix: remove duplicate ganache steps definitions -- [#6299](https://github.com/MetaMask/metamask-mobile/pull/6299): fix: for from address balance shown for ERC20 transfers +- [#6299](https://github.com/MetaMask/metamask-mobile/pull/6299): fix: for from address balance shown for ERC20 transfers - [#6471](https://github.com/MetaMask/metamask-mobile/pull/6471): fix: Approve default ERC20 ## [7.1.0] + ### Added + - [#6351](https://github.com/MetaMask/metamask-mobile/pull/6351): feat: use thunk to handle processed order side effects - [#5829](https://github.com/MetaMask/metamask-mobile/pull/5829): feat: order of browser page load events - [#6230](https://github.com/MetaMask/metamask-mobile/pull/6230): feat: Asset Overview / Token Detail view redesign @@ -2678,6 +2952,7 @@ access - [#6334](https://github.com/MetaMask/metamask-mobile/pull/6334): feat: Aurora Token Detection ### Changed + - [#6406](https://github.com/MetaMask/metamask-mobile/pull/6406): chore: Use core signature controller - [#6427](https://github.com/MetaMask/metamask-mobile/pull/6427): refactor: Refactor unit tests for React Native 0.71.6 upgrade - [#6192](https://github.com/MetaMask/metamask-mobile/pull/6192): chore: Show account balance in signature screen @@ -2695,6 +2970,7 @@ access - [#6345](https://github.com/MetaMask/metamask-mobile/pull/6345): chore: es.js file ### Fixed + - [#6439](https://github.com/MetaMask/metamask-mobile/pull/6439): fix: remove invalid accessibilityRole value - [#6442](https://github.com/MetaMask/metamask-mobile/pull/6442): fix(ci): Remove `restore-build` steps - [#6311](https://github.com/MetaMask/metamask-mobile/pull/6311): fix: token balance displayed in approval pages @@ -2702,15 +2978,21 @@ access - [#6350](https://github.com/MetaMask/metamask-mobile/pull/6350): fix: ENS name displayed on confirm send page ## [7.0.1] + ### Changed + - [#6558](https://github.com/MetaMask/metamask-mobile/pull/6558): refactor(whats-new-modal): remove onramp content ## [7.0.0] + ### Added + - [#6536](https://github.com/MetaMask/metamask-mobile/pull/6380): [FEATURE] WalletConnect v2 Integration (#6380) ## [6.6.0] + ### Added + - [#6325](https://github.com/MetaMask/metamask-mobile/pull/6325): [FEATURE] Add development environment to onramp-sdk - [#6165](https://github.com/MetaMask/metamask-mobile/pull/6165): [FEATURE] Edit account name view - [#6093](https://github.com/MetaMask/metamask-mobile/pull/6093): [FEATURE] Account actions on wallet view @@ -2718,12 +3000,14 @@ access - [#6085](https://github.com/MetaMask/metamask-mobile/pull/6085): [FEATURE] Update account section with card ### Changed + - [#6228](https://github.com/MetaMask/metamask-mobile/pull/6228): [UPDATE] Checkbox component - [#6226](https://github.com/MetaMask/metamask-mobile/pull/6226): [UPDATE] Button's icon props and button org - [#6255](https://github.com/MetaMask/metamask-mobile/pull/6255): [UPDATE] Onboarding translation updated - [#6210](https://github.com/MetaMask/metamask-mobile/pull/6210): [UPDATE] Extend the readme documentation to cover E2E testing in more detail. ### Fixed + - [#6249](https://github.com/MetaMask/metamask-mobile/pull/6249): [FIX] Terms of Use checkbox test id - [#5866](https://github.com/MetaMask/metamask-mobile/pull/5866): [FIX] sturdier check - [#6340](https://github.com/MetaMask/metamask-mobile/pull/6340): [FIX] Missing network name onramp @@ -2732,10 +3016,10 @@ access - [#6246](https://github.com/MetaMask/metamask-mobile/pull/6246): [FIX] Wrong to account information on confirmation page - [#6253](https://github.com/MetaMask/metamask-mobile/pull/6253): [FIX] Confirm button should be disabled if account has no balance - - ## [6.5.0] + ### Added + - [#5743](https://github.com/MetaMask/metamask-mobile/pull/5743): [FEATURE] On-ramp: Add buy-crypto deeplink - [#6166](https://github.com/MetaMask/metamask-mobile/pull/6166): [FEATURE] trigger walletconnect modal using approval controller - [#6223](https://github.com/MetaMask/metamask-mobile/pull/6223): [IMPROVEMENT] Update to Node.js v16 @@ -2756,19 +3040,22 @@ access - [#6056](https://github.com/MetaMask/metamask-mobile/pull/6056): [IMPROVEMENT] Show Identicon for unknown token and if token icon is unknown ### Changed + - [#6157](https://github.com/MetaMask/metamask-mobile/pull/6157): [REFACTOR] Change Password setting - [#6173](https://github.com/MetaMask/metamask-mobile/pull/6173): [REFACTOR] Auto Lock section ### Fixed + - [#6201](https://github.com/MetaMask/metamask-mobile/pull/6201): [FIX] [SDK] Missing redirect breaking backward compatibility - [#6232](https://github.com/MetaMask/metamask-mobile/pull/6232): [FIX] bottom margin for detecting end of the page - [#6185](https://github.com/MetaMask/metamask-mobile/pull/6185): [FIX] remove pubnub package and associated sync with extension code - [#5718](https://github.com/MetaMask/metamask-mobile/pull/5718): [FIX] Nonce Too Low for Approve Transaction - [#6076](https://github.com/MetaMask/metamask-mobile/pull/6076): [BUGFIX] Fixes WalletConnect deep links (wc:// schema) not working properly - ## [6.4.0] + ### Added + - [#6144](https://github.com/MetaMask/metamask-mobile/pull/6144): [FEATURE] New Crowdin translations by Github Action - [#6143](https://github.com/MetaMask/metamask-mobile/pull/6143): [UPDATE] Crowdin token to use METAMASKBOT_CROWDIN_TOKEN - [#5627](https://github.com/MetaMask/metamask-mobile/pull/5627): [IMPROVEMENT] Refactor remaining `web3-provider-engine` methods @@ -2787,6 +3074,7 @@ access - [#6060](https://github.com/MetaMask/metamask-mobile/pull/6060): [IMPROVEMENT] Refactor send transaction v2 ### Changed + - [#6134](https://github.com/MetaMask/metamask-mobile/pull/6134): [REFACTOR] Reveal Private Key section - [#6015](https://github.com/MetaMask/metamask-mobile/pull/6015): [UPDATE] sentry version and enable performance metrics @@ -2794,12 +3082,15 @@ access - [#6006](https://github.com/MetaMask/metamask-mobile/pull/6006): [UPDATE] Upgrade xcode version ### Fixed + - [#6109](https://github.com/MetaMask/metamask-mobile/pull/6109): [FIX] linea network order in dropdown + remove feature toggle for linea (#6072) - [#6058](https://github.com/MetaMask/metamask-mobile/pull/6058): [FIX] broken erc721 approve token link - [#6122](https://github.com/MetaMask/metamask-mobile/pull/6122): [FIX] TypeError: undefined is not an object (evaluating 'n.find') ## [6.3.0] + ### Added + - [#6039](https://github.com/MetaMask/metamask-mobile/pull/6039): [ENHANCEMENT] Improve Android setup instructions - [#5996](https://github.com/MetaMask/metamask-mobile/pull/5996): [ENHANCEMENT] Add document to refactor signature request code - [#5958](https://github.com/MetaMask/metamask-mobile/pull/5958): [FEATURE] add consensys zkevm (Linea) support @@ -2817,10 +3108,12 @@ access - [#5327](https://github.com/MetaMask/metamask-mobile/pull/5327): [FEATURE] Verify Contract Details ### Changed + - [#5669](https://github.com/MetaMask/metamask-mobile/pull/5669): [UPDATE] http-cache-semantics from 4.1.0 to 4.1.1 - [#5959](https://github.com/MetaMask/metamask-mobile/pull/5959): [UPDATE] @xmldom/xmldom from 0.8.3 to 0.8.6 ### Fixed + - [#5962](https://github.com/MetaMask/metamask-mobile/pull/5962): [FIX] Remove select address as a prop on App index.js - [#5941](https://github.com/MetaMask/metamask-mobile/pull/5941): [FIX] bundle video in app to prevent crash when not available - [#5839](https://github.com/MetaMask/metamask-mobile/pull/5839): [FIX] Clear Hex data when Token Transfer reverts ETH @@ -2830,7 +3123,9 @@ access - [#6025](https://github.com/MetaMask/metamask-mobile/pull/6025): [FIX] Add url-parse lib to our MainNavigator ## [6.2.0] + ### Added + - [#5807](https://github.com/MetaMask/metamask-mobile/pull/5807): [IMPROVEMENT] "preview build" support to Bitrise - [#5870](https://github.com/MetaMask/metamask-mobile/pull/5870): [IMPROVEMENT] On-ramp: Add buy crypto home button - [#5529](https://github.com/MetaMask/metamask-mobile/pull/5529): [IMPROVEMENT] Network Controller refactor to use the same selector @@ -2844,6 +3139,7 @@ access - [#5374](https://github.com/MetaMask/metamask-mobile/pull/5374): [IMPROVEMENT] Authentication refactor ### Changed + - [#5924](https://github.com/MetaMask/metamask-mobile/pull/5924): [UPDATE] the README setup steps - [#5775](https://github.com/MetaMask/metamask-mobile/pull/5775): [UPDATE] Security Privacy Remember me feature - [#5803](https://github.com/MetaMask/metamask-mobile/pull/5803): [UPDATE] Sentry: remove DSN value from codebase @@ -2853,21 +3149,27 @@ access - [#5901](https://github.com/MetaMask/metamask-mobile/pull/5901): [UPDATE] assets-controllers patch ### Fixed + - [#5890](https://github.com/MetaMask/metamask-mobile/pull/5890): [FIX] Swap with wallet connect - [#5750](https://github.com/MetaMask/metamask-mobile/pull/5750): [FIX] Enable clipboard for private credentials - ## [6.1.2] + ### Fixed + - [#5925](https://github.com/MetaMask/metamask-mobile/pull/5925): [FIX] handle all ios biometric errors and create wallet - [#5906](https://github.com/MetaMask/metamask-mobile/pull/5906): [FIX] Add try-catch to recreateVault ## [6.1.1] + ### Fixed + - [#5848](https://github.com/MetaMask/metamask-mobile/pull/5848): [FIX] Remove default eth sign ## [6.1.0] + ### Added + - [#5461](https://github.com/MetaMask/metamask-mobile/pull/5461): [IMPROVEMENT] On-ramp: Refactor Payment Methods view to componentization - [#5813](https://github.com/MetaMask/metamask-mobile/pull/5813): [FEATURE] Add copy for portfolio button for translations - [#5797](https://github.com/MetaMask/metamask-mobile/pull/5797): [IMPROVEMENT] Remove phishing list update engine removal @@ -2893,9 +3195,11 @@ access - [#5218](https://github.com/MetaMask/metamask-mobile/pull/5218): [IMPROVEMENT] Improve deeplinks experience ### Changed + - [#5768](https://github.com/MetaMask/metamask-mobile/pull/5768): [UPGRADE] Segment Analytics 2.13.0 ### Fixed + - [#5657](https://github.com/MetaMask/metamask-mobile/pull/5657): [FIX] fix the RequestTokenFlow E2E test - [#5675](https://github.com/MetaMask/metamask-mobile/pull/5675): [FIX] Fix eslint commit hook - [#5608](https://github.com/MetaMask/metamask-mobile/pull/5608): [FIX] SRP recover when an error is thrown @@ -2922,11 +3226,15 @@ access - [#5729](https://github.com/MetaMask/metamask-mobile/pull/5729): [FIX] Bump react-native-reanimated to 2.14.0 ## [6.0.1] + ### Fixed + - [#5799](https://github.com/MetaMask/metamask-mobile/pull/5799): [FIX] Browser: handle unsupported URLs ## [6.0.0] + ### Added + - [#5062](https://github.com/MetaMask/metamask-mobile/pull/5062): [FEATURE] Implement Permission System - [#5659](https://github.com/MetaMask/metamask-mobile/pull/5659): [IMPROVEMENT] E2E fix tapReminder step - [#5641](https://github.com/MetaMask/metamask-mobile/pull/5641): [IMPROVEMENT] Use Set when filtering blocklist @@ -2942,12 +3250,14 @@ access - [#5559](https://github.com/MetaMask/metamask-mobile/pull/5559): [ANALYTICS] Add analytics events for SRP reveal ### Changed + - [#5594](https://github.com/MetaMask/metamask-mobile/pull/5594): [UPGRADE] bumped ua-parser-js to 0.7.33 - [#5580](https://github.com/MetaMask/metamask-mobile/pull/5580): [UPGRADE] Bump cookiejar from 2.1.2 to 2.1.4 - [#5471](https://github.com/MetaMask/metamask-mobile/pull/5471): [UPGRADE] Bump luxon from 3.1.1 to 3.2.1 - [#5450](https://github.com/MetaMask/metamask-mobile/pull/5450): [UPGRADE] Bump json5 from 1.0.1 to 1.0.2 ### Fixed + - [#5626](https://github.com/MetaMask/metamask-mobile/pull/5626): [FIX] SRP Quiz content and translations - [#5612](https://github.com/MetaMask/metamask-mobile/pull/5612): [FIX] Make Prettier work in wdio directory - [#5605](https://github.com/MetaMask/metamask-mobile/pull/5605): [FIX] Handle ENS Address Error @@ -2957,9 +3267,10 @@ access - [#5714](https://github.com/MetaMask/metamask-mobile/pull/5714): [FIX] Importing private key via QR code redirects to browser - [#5709](https://github.com/MetaMask/metamask-mobile/pull/5709): [FIX] Settings networks icons were missing - ## [5.14.0] + ### Added + - [#5535](https://github.com/MetaMask/metamask-mobile/pull/5535): [IMPROVEMENT] Add content for "Add friction to revealing SRP" - [#5506](https://github.com/MetaMask/metamask-mobile/pull/5506): [IMPROVEMENT] On-ramp: Add NavBar tests to GetStarted and Regions Views - [#5495](https://github.com/MetaMask/metamask-mobile/pull/5495): [IMPROVEMENT] Copy update for metamask fee on swaps @@ -3000,9 +3311,11 @@ access - [#5430](https://github.com/MetaMask/metamask-mobile/pull/5430): [IMPROVEMENT] Remove Text as any occurrences ### Changed + - [#5496](https://github.com/MetaMask/metamask-mobile/pull/5496): [REVERT] Onramp - Remove Text as any ocurrences ### Fixed + - [#5219](https://github.com/MetaMask/metamask-mobile/pull/5219): [FIX] Update selected network when delete network manually inserted - [#5440](https://github.com/MetaMask/metamask-mobile/pull/5440): [FIX] Approval error when insufficient balance - [#5468](https://github.com/MetaMask/metamask-mobile/pull/5468): [FIX] Screenshot deterrent analytics @@ -3019,7 +3332,9 @@ access - [#5444](https://github.com/MetaMask/metamask-mobile/pull/5444): [FIX] Fix unecessary executions of useEffect ## [5.13.0] + ### Added + - [#5424](https://github.com/MetaMask/metamask-mobile/pull/5424): [IMPROVEMENT] Add Screenshot Warning to ImportPrivateKey - [#4670](https://github.com/MetaMask/metamask-mobile/pull/4670): [FEAT] Screenshot Warning - [#5376](https://github.com/MetaMask/metamask-mobile/pull/5376): [IMPROVEMENT] Include L1 fee in the Send flow and on the tx detail page for Optimism @@ -3028,6 +3343,7 @@ access - [#5083](https://github.com/MetaMask/metamask-mobile/pull/5083): [IMPROVEMENT] Component: Custom Spending Cap ### Changed + - [#5381](https://github.com/MetaMask/metamask-mobile/pull/5381): [UPDATE] Bumped contract-metadata to 2.1.0 - [#5422](https://github.com/MetaMask/metamask-mobile/pull/5422): [UPDATE] Add custom network and Import custom token - [#5200](https://github.com/MetaMask/metamask-mobile/pull/5200): [UPDATE] Update Controllers to version 33.0.0 @@ -3036,28 +3352,36 @@ access - [#5351](https://github.com/MetaMask/metamask-mobile/pull/5351): [REMOVE] On-ramp: remove old on-ramp experience ### Fixed + - [#5400](https://github.com/MetaMask/metamask-mobile/pull/5400): [FIX] jest expect type - [#5115](https://github.com/MetaMask/metamask-mobile/pull/5115): [FIX] cancelling transaction when user does not give dapp permission to transfer funds - ## [5.12.3] + ### Changed + - Hotfix version bump for iOS only release, no code changes ## [5.12.1] + ### Added + - [#5307](https://github.com/MetaMask/metamask-mobile/pull/5307): [IMPROVEMENT] Remove RPC URL, Block Explorer URL, Network Name from metrics -- [#5355](https://github.com/MetaMask/metamask-mobile/pull/5355): [IMPROVEMENT] Sanitize privacy settings before sending to Sentry +- [#5355](https://github.com/MetaMask/metamask-mobile/pull/5355): [IMPROVEMENT] Sanitize privacy settings before sending to Sentry ### Changed + - [#5362](https://github.com/MetaMask/metamask-mobile/pull/5362): [UPDATE] Copy for Opt in metrics screen and enable custom mainnet RPC - [#5366](https://github.com/MetaMask/metamask-mobile/pull/5366): [UPDATE] On-ramp Refactor wyre authentication URL approach ### Fixed + - [#5360](https://github.com/MetaMask/metamask-mobile/pull/5360): [FIX] Onboarding wizard automatic update modal ## [5.12.0] + ### Added + - [#5335](https://github.com/MetaMask/metamask-mobile/pull/5335): [IMPROVEMENT] On-ramp: Add useRegions hook and fix availablePaymentMethods - [#5333](https://github.com/MetaMask/metamask-mobile/pull/5333): [IMPROVEMENT] Only fetch minimum versions if permissions enabled - [#5238](https://github.com/MetaMask/metamask-mobile/pull/5238): [IMPROVEMENT] Browser experience @@ -3072,6 +3396,7 @@ access - [#5194](https://github.com/MetaMask/metamask-mobile/pull/5194): [FEATURE] Add more granular killswitches for swaps ### Changed + - [#5237](https://github.com/MetaMask/metamask-mobile/pull/5237): [DEPENDENCIES] Update Segment dependencies - [#5220](https://github.com/MetaMask/metamask-mobile/pull/5220): [UPDATE] On-ramp-sdk@1.3.1: Wyre Apple Pay auth support and inAppBrowser hook - [#5266](https://github.com/MetaMask/metamask-mobile/pull/5266): [REMOVE] On-ramp: Remove disabled button in amount to buy screen @@ -3080,6 +3405,7 @@ access - [#5331](https://github.com/MetaMask/metamask-mobile/pull/5331): [UPDATE] Bump @metamask/swaps-controller ### Fixed + - [#5264](https://github.com/MetaMask/metamask-mobile/pull/5264): [FIX] Date msBetweenDates test - [#5268](https://github.com/MetaMask/metamask-mobile/pull/5268): [FIX] On-Ramp: Fix typos from payment method icon and contact support - [#5269](https://github.com/MetaMask/metamask-mobile/pull/5269): [FIX] On-Ramp: Fix 1.3.1 creating undefined custom order ids @@ -3091,9 +3417,10 @@ access - [#5169](https://github.com/MetaMask/metamask-mobile/pull/5169): [FIX] Miscalculation on toWei func when passing valid numbers in scientific notation - [#5337](https://github.com/MetaMask/metamask-mobile/pull/5337): [FIX] Send ERC-20 tokens on legacy networks - ## [5.11.0] + ### Added + - [#5088](https://github.com/MetaMask/metamask-mobile/pull/5088): [IMPROVEMENT] Add no payment methods screen - [#5223](https://github.com/MetaMask/metamask-mobile/pull/5223): [IMPROVEMENT] Add payment method icons support - [#5198](https://github.com/MetaMask/metamask-mobile/pull/5198): [IMPROVEMENT] Improve loading experience @@ -3102,7 +3429,9 @@ access - [#5188](https://github.com/MetaMask/metamask-mobile/pull/5188): [IMPROVEMENT] Networks-flow appium feature file ## [5.10.0] + ### Added + - [#5202](https://github.com/MetaMask/metamask-mobile/pull/5202): [FEAT] On-Ramp: allow Harmony ONE - [#5195](https://github.com/MetaMask/metamask-mobile/pull/5195): [FEAT] Onramp: Add exclude from purchases to onramp aggregator orders - [#5158](https://github.com/MetaMask/metamask-mobile/pull/5158): [FEAT] On-Ramp: Provider payment method custom action and custom order ids @@ -3112,6 +3441,7 @@ access - [#4888](https://github.com/MetaMask/metamask-mobile/pull/4888): [FEAT] Extend popular network list ### Changed + - [#5096](https://github.com/MetaMask/metamask-mobile/pull/5096): [UPDATE] Update audit list - [#4835](https://github.com/MetaMask/metamask-mobile/pull/4835): [UPDATE] Refactor SendTransaction Component - [#5113](https://github.com/MetaMask/metamask-mobile/pull/5113): [UPDATE] avoid using Rinkeby in wallet & import network test @@ -3120,6 +3450,7 @@ access - [#5064](https://github.com/MetaMask/metamask-mobile/pull/5064): [UPDATE] Refactor Approve Component ### Fixed + - [#5142](https://github.com/MetaMask/metamask-mobile/pull/5142): [FIX] Fix high severity audit issues - [#4235](https://github.com/MetaMask/metamask-mobile/pull/4235): [FIX] Delete contact on android fixed - [#5116](https://github.com/MetaMask/metamask-mobile/pull/5116): [FIX] Updated EditLegacy Component @@ -3130,11 +3461,15 @@ access - [#5217](https://github.com/MetaMask/metamask-mobile/pull/5217): [FIX] Send to the wrong address ## [5.9.1] + ### Fixed + - [#5172](https://github.com/MetaMask/metamask-mobile/pull/5172): [FIX] ENS name being resolved correctly ## [5.9.0] + ### Added + - [#5077](https://github.com/MetaMask/metamask-mobile/pull/5077): [FEATURE] translations for permission system - [#5040](https://github.com/MetaMask/metamask-mobile/pull/5040): [ADD] Component/4721-card - [#5065](https://github.com/MetaMask/metamask-mobile/pull/5065): [ENHANCEMENT] added shadows to useAppTheme @@ -3146,14 +3481,16 @@ access - [#5025](https://github.com/MetaMask/metamask-mobile/pull/5025): [ENHANCEMENT] Remove all "Ooops" copies ### Changed + - [#5024](https://github.com/MetaMask/metamask-mobile/pull/5024): [UPDATE] app name for release-to-store step - [#5006](https://github.com/MetaMask/metamask-mobile/pull/5006): [UPDATE] Bump @keystonehq/ur-decoder from 0.3.0 to 0.6.1 - [#5033](https://github.com/MetaMask/metamask-mobile/pull/5033): [UPDATE] default iOS simulator - [#5058](https://github.com/MetaMask/metamask-mobile/pull/5058): [UPDATE] patch vm2 via resolution -- [#5039](https://github.com/MetaMask/metamask-mobile/pull/5039): [UPDATE] update shadow tokens +- [#5039](https://github.com/MetaMask/metamask-mobile/pull/5039): [UPDATE] update shadow tokens - [#4804](https://github.com/MetaMask/metamask-mobile/pull/4804): [UPDATE] GasPolling refactor UpdateEIP1559Transaction Component ### Fixed + - [#5035](https://github.com/MetaMask/metamask-mobile/pull/5035): [FIX] On-Ramp: Fix autolock dispatch for apple pay - [#5079](https://github.com/MetaMask/metamask-mobile/pull/5079): [FIX] Network switch during QR scan in Send Flow - [#5034](https://github.com/MetaMask/metamask-mobile/pull/5034): [FIX] Wallet Connect PR#4934 and PR#4861 @@ -3162,11 +3499,15 @@ access - [#5044](https://github.com/MetaMask/metamask-mobile/pull/5044): [FIX] evaluating ‘transaction.status’ ## [5.8.1] + ### Added + - [#4286](https://github.com/MetaMask/metamask-mobile/pull/4286): [ENHANCEMENT] Integrates MetaMask SDK support ## [5.8.0] + ### Added + - [#4833](https://github.com/MetaMask/metamask-mobile/pull/4833): [ENHANCEMENT] Implement new QA builds for both Android and iOS - [#4993](https://github.com/MetaMask/metamask-mobile/pull/4993): [ENHANCEMENT] On-Ramp: Add scrolling to payment methods and make logo property optional - [#4997](https://github.com/MetaMask/metamask-mobile/pull/4997): [ENHANCEMENT] SRP Reveal Timestamp @@ -3180,6 +3521,7 @@ access - [#4938](https://github.com/MetaMask/metamask-mobile/pull/4938): [ENHANCEMENT] Bump git-clone version to 6 in Bitrise machines ### Changed + - [#4755](https://github.com/MetaMask/metamask-mobile/pull/4755): [UPDATE] - New template fields added to reflect newer requirements for PRs - [#4782](https://github.com/MetaMask/metamask-mobile/pull/4782): [DEPENDENCIES] Detox version bump from 19.6.5 to 19.7.1 - [#4941](https://github.com/MetaMask/metamask-mobile/pull/4941): [DEPENDENCIES] Replace "@react-native-community/async-storage" for "@react-native-async-storage/async-storage" @@ -3187,6 +3529,7 @@ access - [#3438](https://github.com/MetaMask/metamask-mobile/pull/3438): [DEPENDENCIES] Bump metro from 0.59.0 to 0.66.2 ### Fixed + - [#5018](https://github.com/MetaMask/metamask-mobile/pull/5018): [FIX] Vault corruption error log - [#4972](https://github.com/MetaMask/metamask-mobile/pull/4972): [FIX] Unable to Speedup/Cancel legacy transactions - [#4430](https://github.com/MetaMask/metamask-mobile/pull/4430): [FIX] Keystone: Pagination and missing addresses @@ -3195,7 +3538,9 @@ access - [#4958](https://github.com/MetaMask/metamask-mobile/pull/4958): [FIX] WebView Origin Allowlist ## [5.7.0] + ### Added + - [#4897](https://github.com/MetaMask/metamask-mobile/pull/4897): [IMPROVEMENT] Automatic security checks settings - [#4902](https://github.com/MetaMask/metamask-mobile/pull/4902): [IMPROVEMENT] Deprecated networks Alert border fixed - [#4885](https://github.com/MetaMask/metamask-mobile/pull/4885): [IMPROVEMENT] Implement warning for deprecated test networks, kovan, ropsten and rinkeby @@ -3210,12 +3555,14 @@ access - [#4809](https://github.com/MetaMask/metamask-mobile/pull/4809): [IMPROVEMENT] Component/4779 Audit ### Changed + - [#4839](https://github.com/MetaMask/metamask-mobile/pull/4839): [DEPENDENCIES] Introduce @testing-library/react-hooks dependency - [#4595](https://github.com/MetaMask/metamask-mobile/pull/4595): [DEPENDENCIES] Upgrade react-native-device-info to 9.0.2 - [#4748](https://github.com/MetaMask/metamask-mobile/pull/4748): [UPGRADE] Patch bump for SoLoader version on Android - [#4896](https://github.com/MetaMask/metamask-mobile/pull/4896): [DEPENDENCIES] Upgrade on-ramp-sdk to 1.2.0 ### Fixed + - [#4905](https://github.com/MetaMask/metamask-mobile/pull/4905): [FIX] Update send flow - [#4407](https://github.com/MetaMask/metamask-mobile/pull/4407): [FIX] Add browser cookies support on Android - [#4898](https://github.com/MetaMask/metamask-mobile/pull/4898): [FIX] Test sanitizeUrlInput error @@ -3231,12 +3578,16 @@ access - [#4799](https://github.com/MetaMask/metamask-mobile/pull/4799): [FIX] Reveal SRP or Private Key wrong password error ## [5.6.1] + ### Uncategorized + - [#4966](https://github.com/MetaMask/metamask-mobile/pull/4966): [FIX] Add http and https protocol to webview origin whitelist - [#4967](https://github.com/MetaMask/metamask-mobile/pull/4967): [FIX] Correct url parse ## [5.6.0] + ### Uncategorized + - [#4821](https://github.com/MetaMask/metamask-mobile/pull/4821): [FIX] Staging env redirection url for onramp - [#4742](https://github.com/MetaMask/metamask-mobile/pull/4742): [ADD] On-Ramp generic error view event - [#4743](https://github.com/MetaMask/metamask-mobile/pull/4743): [ADD] Payment Method logos @@ -3256,11 +3607,15 @@ access - [#4636](https://github.com/MetaMask/metamask-mobile/pull/4636): [FIX] NFT transfer with big token id ## [5.5.1] + ### Changed + - [UPDATE](https://github.com/MetaMask/dapps/pull/137): [UPDATE] Disable iOS explore links ## [5.5.0] + ### Uncategorized + - [#4475](https://github.com/MetaMask/metamask-mobile/pull/4475): [IMPROVEMENT] Swaps support for hardware wallet - [#4627](https://github.com/MetaMask/metamask-mobile/pull/4627): [IMPROVEMENT] Add typing support for payment methods to be used instead of payment IDs - [#4625](https://github.com/MetaMask/metamask-mobile/pull/4625): [FIX] Handle SecureKeychain failed access while passcode enabled @@ -3278,7 +3633,9 @@ access - [#4612](https://github.com/MetaMask/metamask-mobile/pull/4612): [IMPROVEMENT] Componentize Token Avatar ## [5.4.0] + ### Uncategorized + - [#4604](https://github.com/MetaMask/metamask-mobile/pull/4604): [IMPROVEMENT] Change quotes error to individual events - [#4497](https://github.com/MetaMask/metamask-mobile/pull/4497): [IMPROVEMENT] Add amount to onramp analytics events - [#4496](https://github.com/MetaMask/metamask-mobile/pull/4496): [IMPROVEMENT] Add currency destination symbol to purchase submitted @@ -3317,7 +3674,9 @@ access - [#4531](https://github.com/MetaMask/metamask-mobile/pull/4531): [IMPROVEMENT] Add delete wallet step spec ## [5.3.0] + ### Uncategorized + - [#4506](https://github.com/MetaMask/metamask-mobile/pull/4506): [IMPROVEMENT] Add OnRamp aggregator translations - [#4389](https://github.com/MetaMask/metamask-mobile/pull/4389): [FEAT] Easy delete data - [#4510](https://github.com/MetaMask/metamask-mobile/pull/4510): [IMPROVEMENT] Update RPC URL for xDai @@ -3347,7 +3706,9 @@ access - [#4367](https://github.com/MetaMask/metamask-mobile/pull/4367): [IMPROVEMENT] Make text hex data selectable ## [5.2.0] + ### Uncategorized + - [#4349](https://github.com/MetaMask/metamask-mobile/pull/4349): [FIX] Subtitle mapping - [#4344](https://github.com/MetaMask/metamask-mobile/pull/4344): [FIX] Fix homepage scripts and env import - [#4345](https://github.com/MetaMask/metamask-mobile/pull/4345): [FIX] Fix check for empty tokens list @@ -3367,7 +3728,9 @@ access - [#4183](https://github.com/MetaMask/metamask-mobile/pull/4183): [FIX] excluded audit because no available patch ## [5.1.0] + ### Uncategorized + - [#3929](https://github.com/MetaMask/metamask-mobile/pull/3929): [IMPROVEMENT] Defaults to current network if chain id not specified in QR codes - [#4159](https://github.com/MetaMask/metamask-mobile/pull/4159): [IMPROVEMENT] - iCloud Backup Restriction - [#4035](https://github.com/MetaMask/metamask-mobile/pull/4035): [FIX] Issue #207 @@ -3385,14 +3748,18 @@ access - [#4113](https://github.com/MetaMask/metamask-mobile/pull/4113): [FIX] Add ticker to SelectQRAccounts - [#3980](https://github.com/MetaMask/metamask-mobile/pull/3980): [FIX] Patch network specific asset modal (Token detection) - [#4154](https://github.com/MetaMask/metamask-mobile/pull/4154): [FIX] Update react-native-webview+11.13.0.patch -- [#4135](https://github.com/MetaMask/metamask-mobile/pull/4135): [IMPROVEMENT]browser improvement +- [#4135](https://github.com/MetaMask/metamask-mobile/pull/4135): [IMPROVEMENT]browser improvement ## [5.0.1] + ### Fixed + - [FIX] iOS Hotfix - Add LinkPresentation library ## [5.0.0] + ### Uncategorized + - [#3971](https://github.com/MetaMask/metamask-mobile/pull/3971): [FIX] Fix issues releated to deep/universal links - [#3925](https://github.com/MetaMask/metamask-mobile/pull/3925): [FEAT] Allow ApplePay in Transak webview. - [#4047](https://github.com/MetaMask/metamask-mobile/pull/4047): [FIX] Fix attribution url @@ -3403,7 +3770,9 @@ access - [#3948](https://github.com/MetaMask/metamask-mobile/pull/3948): [FIX] Update button on WebviewError ## [4.4.0] + ### Uncategorized + - [#3910](https://github.com/MetaMask/metamask-mobile/pull/3910): [IMPROVEMENT] Network Specific Asset Education - [#3877](https://github.com/MetaMask/metamask-mobile/pull/3877): [IMPROVEMENT] Add OSS attribution - [#3731](https://github.com/MetaMask/metamask-mobile/pull/3731): [FIX] Fix formatting of gas price for all conversion currencies @@ -3413,13 +3782,17 @@ access - [#3969](https://github.com/MetaMask/metamask-mobile/pull/3969): [FIX] Fix typo in network modal ## [4.3.1] + ### Fixed + - [#3946](https://github.com/MetaMask/metamask-mobile/pull/3946): [FIX] Fix error boundary SRP - [#3947](https://github.com/MetaMask/metamask-mobile/pull/3947): [FIX] Fix gas carousel price estimate - [#3940](https://github.com/MetaMask/metamask-mobile/pull/3940): [FIX] Fix browser crash ## [4.3.0] + ### Uncategorized + - [#3916](https://github.com/MetaMask/metamask-mobile/pull/3916): [FIX] Patch Android clipboard crasher - [#3776](https://github.com/MetaMask/metamask-mobile/pull/3776): [IMPROVEMENT] Enable dark mode - [#3899](https://github.com/MetaMask/metamask-mobile/pull/3899): [IMPROVEMENT] Improve WalletConnect checks @@ -3444,7 +3817,9 @@ access - [#3638](https://github.com/MetaMask/metamask-mobile/pull/3638): [IMPROVEMENT] Upgrade controllers to 25.1.0 ## [4.2.2] + ### Uncategorized + - [#3841](https://github.com/MetaMask/metamask-mobile/pull/3841): [FIX] Fix custom network icons on Wallet Overview - [#3839](https://github.com/MetaMask/metamask-mobile/pull/3839): [FIX] Update en.json - [#3838](https://github.com/MetaMask/metamask-mobile/pull/3838): [FIX] Fix onramp BUSD address. Add wc_description string @@ -3470,11 +3845,15 @@ access - [#3690](https://github.com/MetaMask/metamask-mobile/pull/3690): [FIX] Revert svg crash ## [4.1.1] + ### Uncategorized + - [3810](https://github.com/MetaMask/metamask-mobile/pull/3810) [FIX] Avalanche token crash ## [4.1.0] + ### Uncategorized + - [#3741](https://github.com/MetaMask/metamask-mobile/pull/3741): [FIX] Potential error message from missing transactions details - [#3738](https://github.com/MetaMask/metamask-mobile/pull/3738): [FIX] Error message for missing chain ID in deeplink - [#3725](https://github.com/MetaMask/metamask-mobile/pull/3725): [FIX] Login decrypt bug @@ -3500,18 +3879,24 @@ access - [#3672](https://github.com/MetaMask/metamask-mobile/pull/3672): [IMPROVEMENT] Bump simple-get from 2.8.1 to 4.0.1 ## [4.0.1] + ### Fixed + - [#3658](https://github.com/MetaMask/metamask-mobile/pull/3658): [HOTFIX] 4.0.1 - BN crash and NFT Improvement ## [4.0.0] + ### Uncategorized + - [#3509](https://github.com/MetaMask/metamask-mobile/pull/3509): [IMPROVEMENT] Upgrade to React Native 0.66.3 - [#3623](https://github.com/MetaMask/metamask-mobile/pull/3623): [FIX] Fix swaps slider button re-rendering - [#3481](https://github.com/MetaMask/metamask-mobile/pull/3481): [FIX] Fix confirm button disabled on txn confirmation - [#3495](https://github.com/MetaMask/metamask-mobile/pull/3495): [IMPROVEMENT] Reduce png file image weight using TinyPng cli tool ## [3.8.0] + ### Uncategorized + - [#3457](https://github.com/MetaMask/metamask-mobile/pull/3457): [FEAT] User review prompt - [#3465](https://github.com/MetaMask/metamask-mobile/pull/3465): [FIX] 3464 fix login bug - [#3430](https://github.com/MetaMask/metamask-mobile/pull/3430): [IMPROVEMENT] Add better initial state for swaps loading tokens @@ -3523,7 +3908,9 @@ access - [#3443](https://github.com/MetaMask/metamask-mobile/pull/3443): [UPDATE] Disable Sync with Extension ## [3.7.0] + ### Uncategorized + - [#3405](https://github.com/MetaMask/metamask-mobile/pull/3405): [FIX] Remove Metric Opt In event - [#3412](https://github.com/MetaMask/metamask-mobile/pull/3412): [UPGRADE] Android SDK and dependencies to support SDK 30 - [#3371](https://github.com/MetaMask/metamask-mobile/pull/3371): [FIX] iOS FaceID Deny Handler @@ -3539,7 +3926,9 @@ access - [#3357](https://github.com/MetaMask/metamask-mobile/pull/3357): [FIX] 404 dead links in readme ## [3.6.0] + ### Uncategorized + - [#3301](https://github.com/MetaMask/metamask-mobile/pull/3301): [FEATURE] ERC-1155 and custom network support - [#3343](https://github.com/MetaMask/metamask-mobile/pull/3343): [IMPROVEMENT] Add IPFS support for NFTs - [#3352](https://github.com/MetaMask/metamask-mobile/pull/3352): [FIX] Fix rendering issue when viewing data on transaction review screen @@ -3547,7 +3936,9 @@ access - [#3290](https://github.com/MetaMask/metamask-mobile/pull/3290): [FIX] Fix lost data when using wallet connect for ERC20 token transaction ## [3.5.0] + ### Uncategorized + - [#3340](https://github.com/MetaMask/metamask-mobile/pull/3340): [IMPROVEMENT] Reduce persisted data - [#3330](https://github.com/MetaMask/metamask-mobile/pull/3330): [IMPROVEMENT] Refactor EngineService - [#3325](https://github.com/MetaMask/metamask-mobile/pull/3325): [IMPROVEMENT] Isolate persisted data @@ -3566,7 +3957,9 @@ access - [#3271](https://github.com/MetaMask/metamask-mobile/pull/3271): [FIX] Update React Native dependecy links in README.md ## [3.4.1] + ### Uncategorized + - [#3260](https://github.com/MetaMask/metamask-mobile/pull/3260): [FIX] Turn off token detection by default - [#3261](https://github.com/MetaMask/metamask-mobile/pull/3261): [FIX] Fix blank screen on fresh start - [#3254](https://github.com/MetaMask/metamask-mobile/pull/3254): [IMPROVEMENT] Isolate LICENSE file @@ -3596,7 +3989,9 @@ access - [#3115](https://github.com/MetaMask/metamask-mobile/pull/3115): [IMPROVEMENT] Update README.md ## [3.3.0] + ### Uncategorized + - [#3099](https://github.com/MetaMask/metamask-mobile/pull/3099): [FEATURE] Transaction state improvement - [UPGRADE] react-native-webview 11.0.2 -> 11.13.0 - [#3101](https://github.com/MetaMask/metamask-mobile/pull/3101): [UPDATE] update swaps-controller and send clientId on fetchSwapsFeatureLiveness @@ -3618,7 +4013,9 @@ access - [#3057](https://github.com/MetaMask/metamask-mobile/pull/3057): [UPDATE] Remove SwapsLiveness checks for non supported networks ## [3.2.0] + ### Uncategorized + - [#3046](https://github.com/MetaMask/metamask-mobile/pull/3046): [FIX] Token Transfer to address - [#2878](https://github.com/MetaMask/metamask-mobile/pull/2878): [2783] Change default account name for ENS reversed-resolved name - [#3029](https://github.com/MetaMask/metamask-mobile/pull/3029): [FIX] Video Subtitles Not Loading Properly @@ -3627,7 +4024,9 @@ access - [#2718](https://github.com/MetaMask/metamask-mobile/pull/2718): Switched to sslip.io instead of xip.io ## [3.1.0] + ### Uncategorized + - [#3026](https://github.com/MetaMask/metamask-mobile/pull/3026): [FIX] Fix edit button - [#2981](https://github.com/MetaMask/metamask-mobile/pull/2981): [FIX] Delete Message - [#3017](https://github.com/MetaMask/metamask-mobile/pull/3017): [FIX] Fix deep links bug related to branch updates @@ -3645,11 +4044,15 @@ access - [#2973](https://github.com/MetaMask/metamask-mobile/pull/2973): [FEATURE] On-Ramp: Add on-ramp analytics ## [3.0.1] + ### Uncategorized + - Patch to fix Wyre and Transak ## [3.0.0] + ### Uncategorized + - [#2959](https://github.com/MetaMask/metamask-mobile/pull/2959): UI fixes - [#2957](https://github.com/MetaMask/metamask-mobile/pull/2957): Fix gas information info modal on swaps - [#2955](https://github.com/MetaMask/metamask-mobile/pull/2955): [EIP1559] Improve time estimates @@ -3666,7 +4069,9 @@ access - [#2890](https://github.com/MetaMask/metamask-mobile/pull/2890): Bump addressable from 2.7.0 to 2.8.0 in /ios ## [2.6.0] + ### Uncategorized + - [#2865](https://github.com/MetaMask/metamask-mobile/pull/2865): Added support for custom network gas estimates - [#2854](https://github.com/MetaMask/metamask-mobile/pull/2854): Fix time formatting on transactions - [#2883](https://github.com/MetaMask/metamask-mobile/pull/2883): Swaps: Fix isZero undefined error @@ -3674,7 +4079,9 @@ access - [#2709](https://github.com/MetaMask/metamask-mobile/pull/2709): Remove Picker deprecation warning ## [2.5.0] + ### Uncategorized + - [#2809](https://github.com/MetaMask/metamask-mobile/pull/2809): Optional chaining dollarBalance - [#2776](https://github.com/MetaMask/metamask-mobile/pull/2776): Fix: empty state when using fiat on non-mainnet transactions - [#2777](https://github.com/MetaMask/metamask-mobile/pull/2777): Add isInteraction: false @@ -3700,7 +4107,9 @@ access - [#2727](https://github.com/MetaMask/metamask-mobile/pull/2727): Add missing required prop in tests ## [2.4.0] + ### Uncategorized + - [#2618](https://github.com/MetaMask/metamask-mobile/pull/2618): Collectibles experience - [#2698](https://github.com/MetaMask/metamask-mobile/pull/2698): bugfix: navigation routeName is null - [#2692](https://github.com/MetaMask/metamask-mobile/pull/2692): Fix custom gas crash @@ -3715,7 +4124,9 @@ access - [#2628](https://github.com/MetaMask/metamask-mobile/pull/2628): Feature/use toLowerCaseCompare ## [2.3.0] + ### Uncategorized + - [#2674](https://github.com/MetaMask/metamask-mobile/pull/2674): Fix deploy contract and create token testnets - [#2669](https://github.com/MetaMask/metamask-mobile/pull/2669): Key off accounts - [#2670](https://github.com/MetaMask/metamask-mobile/pull/2670): Bump hosted-git-info from 2.8.8 to 2.8.9 @@ -3758,7 +4169,9 @@ access - [#2568](https://github.com/MetaMask/metamask-mobile/pull/2568): resolve isENS without case sensitivity (#2545) ## [2.2.0] + ### Uncategorized + - [#2547](https://github.com/MetaMask/metamask-mobile/pull/2547): Include decimalsToShow in balanceToFiatNumber - [#2554](https://github.com/MetaMask/metamask-mobile/pull/2554): Bug fix/sync import time - [#2546](https://github.com/MetaMask/metamask-mobile/pull/2546): Fix analytics try catch @@ -3785,19 +4198,27 @@ access - [#2381](https://github.com/MetaMask/metamask-mobile/pull/2381): Display correct number of decimals for 'usd' fiat ## [2.1.3] + ### Uncategorized + - [#2548](https://github.com/MetaMask/metamask-mobile/pull/2548): Hotfix analytics try catch ## [2.1.2] + ### Uncategorized + - [#2538](https://github.com/MetaMask/metamask-mobile/pull/2538): fix/connection change handler ## [2.1.1] + ### Uncategorized + - [#2520](https://github.com/MetaMask/metamask-mobile/pull/2520): Check provider status ## [2.1.0] + ### Uncategorized + - [#2487](https://github.com/MetaMask/metamask-mobile/pull/2487): Fix/analytics v1 priority1 - [#2456](https://github.com/MetaMask/metamask-mobile/pull/2456): Analytics v2 (priority 1) - [#2408](https://github.com/MetaMask/metamask-mobile/pull/2408): Fix/gas estimations @@ -3819,7 +4240,9 @@ access - [#2431](https://github.com/MetaMask/metamask-mobile/pull/2431): Update BN import ## [2.0.1] + ### Uncategorized + - [#2430](https://github.com/MetaMask/metamask-mobile/pull/2430): Fix/send to style - [#2426](https://github.com/MetaMask/metamask-mobile/pull/2426): bugfix/allow seedphrases when locked - [#2422](https://github.com/MetaMask/metamask-mobile/pull/2422): bugfix/delete wallet with random password @@ -3828,7 +4251,9 @@ access - [#2156](https://github.com/MetaMask/metamask-mobile/pull/2156): Translations with update script ## [2.0.0] + ### Uncategorized + - [#2383](https://github.com/MetaMask/metamask-mobile/pull/2383): swaps/received destination amount - [#2379](https://github.com/MetaMask/metamask-mobile/pull/2379): Swaps/fix decode tx render amounts - [#2377](https://github.com/MetaMask/metamask-mobile/pull/2377): bugfix/dont modify local transactions @@ -3849,7 +4274,9 @@ access - [#2265](https://github.com/MetaMask/metamask-mobile/pull/2265): Fix input state ## [1.0.11] + ### Uncategorized + - [#2257](https://github.com/MetaMask/metamask-mobile/pull/2257): bugfix/use bignumber for transfer deeplinks - [#2256](https://github.com/MetaMask/metamask-mobile/pull/2256): Fix account list scroll - [#2243](https://github.com/MetaMask/metamask-mobile/pull/2243): TransactionController from controllers @@ -3876,12 +4303,16 @@ access - [#2142](https://github.com/MetaMask/metamask-mobile/pull/2142): Display boolean values when signing typed data ## [1.0.10] + ### Uncategorized + - [#2164](https://github.com/MetaMask/metamask-mobile/pull/2164): Initialize NetworkController.provider with chainId (#2164) - [#2161](https://github.com/MetaMask/metamask-mobile/pull/2161): chainid migration (#2161) ## [1.0.9] + ### Uncategorized + - [#2149](https://github.com/MetaMask/metamask-mobile/pull/2149): update tests for new logic - [#2145](https://github.com/MetaMask/metamask-mobile/pull/2145): Add missing brew installation steps - [#2146](https://github.com/MetaMask/metamask-mobile/pull/2146): @metamask/mobile-provider@2.0.1 @@ -3911,7 +4342,9 @@ access - [#1994](https://github.com/MetaMask/metamask-mobile/pull/1994): Feature: Initial Swaps amount view (#1994) ## [1.0.8] + ### Uncategorized + - [#2040](https://github.com/MetaMask/metamask-mobile/pull/2040): Update vault error message (#2040) - [#2034](https://github.com/MetaMask/metamask-mobile/pull/2034): Fix asyncstorage limit (#2034) - [#2038](https://github.com/MetaMask/metamask-mobile/pull/2038): metamask wc deeplink (#2038) @@ -3920,7 +4353,9 @@ access - [#2008](https://github.com/MetaMask/metamask-mobile/pull/2008): Add Apple Pay correct label (#2008) ## [1.0.7] + ### Uncategorized + - [#2005](https://github.com/MetaMask/metamask-mobile/pull/2005): Fix activeTabUrl (#2005) - [#2003](https://github.com/MetaMask/metamask-mobile/pull/2003): Bugfix/android choose password (#2003) - [#1992](https://github.com/MetaMask/metamask-mobile/pull/1992): Android api level (#1992) @@ -3929,9 +4364,10 @@ access - [#1968](https://github.com/MetaMask/metamask-mobile/pull/1968): Add MetaSwaps feature flag and initial nav stack (#1968) - [#1967](https://github.com/MetaMask/metamask-mobile/pull/1967): Add Keypad component (#1967) - ## [1.0.6] + ### Uncategorized + - [#1990](https://github.com/MetaMask/metamask-mobile/pull/1990): Fixed importing accounts when reseting password (#1990) - [#1988](https://github.com/MetaMask/metamask-mobile/pull/1988): bugfix/protect wallet modal (#1988) - [#1985](https://github.com/MetaMask/metamask-mobile/pull/1985): Fix seedphrase handling in QRScanner (#1985) @@ -3971,15 +4407,21 @@ access - [#1861](https://github.com/MetaMask/metamask-mobile/pull/1861): Get e2e working for seedphrase and login (#1861) ## [1.0.5] + ### Uncategorized + - [#1889](https://github.com/MetaMask/metamask-mobile/pull/1889): Fix scientific notation string not convertable to BN (#1889) ## [1.0.4] + ### Uncategorized + - [#1882](https://github.com/MetaMask/metamask-mobile/pull/1882): Error boundary (#1882) ## [1.0.3] + ### Uncategorized + - [#1865](https://github.com/MetaMask/metamask-mobile/pull/1865): bugfix/login (#1865) - [#1863](https://github.com/MetaMask/metamask-mobile/pull/1863): transak countries update (#1863) - [#1829](https://github.com/MetaMask/metamask-mobile/pull/1829): Improvement/browser refactor (#1829) @@ -4011,16 +4453,22 @@ access - [#1787](https://github.com/MetaMask/metamask-mobile/pull/1787): Add missing currency conversions (#1787) ## [1.0.2] + ### Uncategorized + - [#1812](https://github.com/MetaMask/metamask-mobile/pull/1812): Add logger on login (#1812) ## [1.0.1] + ### Uncategorized + - [#1795](https://github.com/MetaMask/metamask-mobile/pull/1795): Update react native aes crypto forked (#1795) - [#1796](https://github.com/MetaMask/metamask-mobile/pull/1796): bugfix/mixpanel android in app notifications (#1796) ## [1.0.0] + ### Uncategorized + - [#1790](https://github.com/MetaMask/metamask-mobile/pull/1790): Bugfix/payment request and wallet connect origin on tx (#1790) - [#1791](https://github.com/MetaMask/metamask-mobile/pull/1791): Fix send receive buttons style (#1791) - [#1785](https://github.com/MetaMask/metamask-mobile/pull/1785): Use @metamask/controllers@2.0.5 (#1785) @@ -4048,7 +4496,9 @@ access - [#1727](https://github.com/MetaMask/metamask-mobile/pull/1727): Bump json from 2.2.0 to 2.3.1 in /ios (#1727) ## [0.2.20] + ### Uncategorized + - [#1751](https://github.com/MetaMask/metamask-mobile/pull/1751): bugfix/payment requests & deeplinks (#1751) - [#1732](https://github.com/MetaMask/metamask-mobile/pull/1732): Copy edits (#1732) - [#1750](https://github.com/MetaMask/metamask-mobile/pull/1750): Don't allow for zero in custom gas price (#1750) @@ -4100,18 +4550,24 @@ access - [#1640](https://github.com/MetaMask/metamask-mobile/pull/1640): enable-apple-pay (#1640) ## [0.2.19] + ### Uncategorized + - [#1661](https://github.com/MetaMask/metamask-mobile/pull/1661): bugfix/Use eth gas API - [#1653](https://github.com/MetaMask/metamask-mobile/pull/1653): Add ETH_GAS_STATION_API_KEY (#1653) ## [0.2.18] + ### Uncategorized + - [#1636](https://github.com/MetaMask/metamask-mobile/pull/1636): Add padding to CustomGas back button (#1636) - [#1637](https://github.com/MetaMask/metamask-mobile/pull/1637): Bugfix/incoming notifications (#1637) - [#1628](https://github.com/MetaMask/metamask-mobile/pull/1628): Fix network color indicator on transactionHeader for connect screens (#1628) ## [0.2.17] + ### Uncategorized + - [#1629](https://github.com/MetaMask/metamask-mobile/pull/1629): bugfix/custom gas modal (#1629) - [#1625](https://github.com/MetaMask/metamask-mobile/pull/1625): Bugfix/wc connect on app closed (#1625) - [#1624](https://github.com/MetaMask/metamask-mobile/pull/1624): Wallet connect update + Support for simple notifications (#1624) @@ -4148,7 +4604,9 @@ access - [#1584](https://github.com/MetaMask/metamask-mobile/pull/1584): make sign tests great again (#1584) ## [0.2.16] + ### Uncategorized + - [#1582](https://github.com/MetaMask/metamask-mobile/pull/1582): Instapay deposit navbar cancel (#1582) - [#1570](https://github.com/MetaMask/metamask-mobile/pull/1570): Disable confirm screen edit button when no tokens of a payment request (#1570) - [#1574](https://github.com/MetaMask/metamask-mobile/pull/1574): Ensure collectibles that use 'transfer' method show a fee in tx history list (#1574) @@ -4173,7 +4631,9 @@ access - [#1524](https://github.com/MetaMask/metamask-mobile/pull/1524): Loosen nvmrc (#1524) ## [0.2.15] + ### Uncategorized + - [#1529](https://github.com/MetaMask/metamask-mobile/pull/1529): sentry android production (#1529) - [#1528](https://github.com/MetaMask/metamask-mobile/pull/1528): Bugfix/sentry in circle ci (#1528) - [#1527](https://github.com/MetaMask/metamask-mobile/pull/1527): env to production (#1527) @@ -4203,7 +4663,7 @@ access - [#1449](https://github.com/MetaMask/metamask-mobile/pull/1449): Use setTimeout hack to get paste context back (#1449) - [#1450](https://github.com/MetaMask/metamask-mobile/pull/1450): Fix remove bookmark functionality, closes #1396 (#1450) - [#1376](https://github.com/MetaMask/metamask-mobile/pull/1376): Replace Fabric Crashlytics with Sentry (#1376) -- [#1441](https://github.com/MetaMask/metamask-mobile/pull/1441): Detox: Address Book Tests (#1441) +- [#1441](https://github.com/MetaMask/metamask-mobile/pull/1441): Detox: Address Book Tests (#1441) - [#1447](https://github.com/MetaMask/metamask-mobile/pull/1447): ci: Update CircleCI config version (#1447) - [#1439](https://github.com/MetaMask/metamask-mobile/pull/1439): Update README.md (#1439) - [#1436](https://github.com/MetaMask/metamask-mobile/pull/1436): Update mkdirp and minimist (#1436) @@ -4217,7 +4677,9 @@ access - [#1425](https://github.com/MetaMask/metamask-mobile/pull/1425): Detox: Upate dapp-initated-txn tests (#1425) ## [0.2.14] + ### Uncategorized + - [#1413](https://github.com/MetaMask/metamask-mobile/pull/1413): Fix accountsChanged notification (#1413) - [#1411](https://github.com/MetaMask/metamask-mobile/pull/1411): bugfix: payment request (#1411) - [#1410](https://github.com/MetaMask/metamask-mobile/pull/1410): bugfix: ios close icon (#1410) @@ -4270,29 +4732,37 @@ access - [#1252](https://github.com/MetaMask/metamask-mobile/pull/1252): Bugfix: cancel and speedup insufficient funds (#1252) ## [0.2.13] + ### Uncategorized + - [#1250](https://github.com/MetaMask/metamask-mobile/pull/1250): Bump excon from 0.64.0 to 0.71.0 in /ios (#1250) - [#1246](https://github.com/MetaMask/metamask-mobile/pull/1246): bugfix: wizard back (#1246) - [#1235](https://github.com/MetaMask/metamask-mobile/pull/1235): Detox: Request token flow (#1235) - [#1234](https://github.com/MetaMask/metamask-mobile/pull/1234): bump migration version (#1234) ## [0.2.12] + ### Uncategorized + - [#1224](https://github.com/MetaMask/metamask-mobile/pull/1224): Bugfix: asset ens tx (#1224) - [#1225](https://github.com/MetaMask/metamask-mobile/pull/1225): update bug report link (#1225) - [#1215](https://github.com/MetaMask/metamask-mobile/pull/1215): Detox: Fix Android e2e Tests (#1215) - [#1223](https://github.com/MetaMask/metamask-mobile/pull/1223): Bugfix: contract deployments (#1223) - [#1222](https://github.com/MetaMask/metamask-mobile/pull/1222): bugfix: android show hex input instapay send (#1222) -- [#1214](https://github.com/MetaMask/metamask-mobile/pull/1214): pass metametrics context to homepage (#1214) +- [#1214](https://github.com/MetaMask/metamask-mobile/pull/1214): pass metametrics context to homepage (#1214) ## [0.2.11] + ### Uncategorized + - [#1212](https://github.com/MetaMask/metamask-mobile/pull/1212): Provider missing properties (#1212) - [#1207](https://github.com/MetaMask/metamask-mobile/pull/1207): Fix typo on Import Account screen (#1207) - [#1198](https://github.com/MetaMask/metamask-mobile/pull/1198): Migrate to SAI (#1198) ## [0.2.10] + ### Uncategorized + - [#1205](https://github.com/MetaMask/metamask-mobile/pull/1205): Disable speedup instapay (#1205) - [#1204](https://github.com/MetaMask/metamask-mobile/pull/1204): Fix injection on Android (#1204) - [#1203](https://github.com/MetaMask/metamask-mobile/pull/1203): Update support email (#1203) @@ -4327,19 +4797,27 @@ access - [#1146](https://github.com/MetaMask/metamask-mobile/pull/1146): fix instapay logs app version (#1146) ## [0.2.8] + ### Uncategorized + - [#1145](https://github.com/MetaMask/metamask-mobile/pull/1145): Support URLs on QR code scanner (#1145) ## [0.2.7] + ### Uncategorized + - [#1143](https://github.com/MetaMask/metamask-mobile/pull/1143): Minor bugfixes (#1143) ## [0.2.6] + ### Uncategorized + - [#1139](https://github.com/MetaMask/metamask-mobile/pull/1139): Fix onboarding carousel dimensions (#1139) ## [0.2.5] + ### Uncategorized + - [#1136](https://github.com/MetaMask/metamask-mobile/pull/1136): Select correct profiles (#1136) - [#1135](https://github.com/MetaMask/metamask-mobile/pull/1135): Fix fastlane config (#1135) - [#1134](https://github.com/MetaMask/metamask-mobile/pull/1134): renew certs if needed (#1134) @@ -4405,9 +4883,11 @@ access - [#1044](https://github.com/MetaMask/metamask-mobile/pull/1044): remove uiwebview ocurrences (#1044) ## [0.2.4] + ### Uncategorized + - [#1038](https://github.com/MetaMask/metamask-mobile/pull/1038): Fix Approval (#1038) -: [#1037](https://github.com/MetaMask/metamask-mobile/pull/1037): Fix walletconnect :#1037) + : [#1037](https://github.com/MetaMask/metamask-mobile/pull/1037): Fix walletconnect :#1037) - [#1036](https://github.com/MetaMask/metamask-mobile/pull/1036): Bugfix: browser crash (#1036) - [#1034](https://github.com/MetaMask/metamask-mobile/pull/1034): Bump 0.2.4 (#1034) - [#1027](https://github.com/MetaMask/metamask-mobile/pull/1027): Improvement: approval token transfer data (#1027) @@ -4425,7 +4905,9 @@ access - [#1008](https://github.com/MetaMask/metamask-mobile/pull/1008): bump walletconnect (#1008) ## [0.2.3] + ### Uncategorized + - [#972](https://github.com/MetaMask/metamask-mobile/pull/972): bump version (#972) - [#989](https://github.com/MetaMask/metamask-mobile/pull/989): Bugfix: Fix mobile sync & Security options (#989) - [#1000](https://github.com/MetaMask/metamask-mobile/pull/1000): bugfix: tx edit dropdowns in small devices (#1000) @@ -4456,10 +4938,11 @@ access - [#957](https://github.com/MetaMask/metamask-mobile/pull/957): fix timeouts (#957) - [#954](https://github.com/MetaMask/metamask-mobile/pull/954): Bugfix: onboarding navigation (#954) -[Unreleased]: https://github.com/metamask/metamask-mobile/compare/v7.38.2...HEAD -[7.38.2]: https://github.com/metamask/metamask-mobile/compare/v7.38.1...v7.38.2 -[7.38.1]: https://github.com/metamask/metamask-mobile/compare/v7.38.0...v7.38.1 -[7.38.0]: https://github.com/metamask/metamask-mobile/compare/v7.37.1...v7.38.0 +[Unreleased]: https://github.com/MetaMask/metamask-mobile/compare/v7.41.0...HEAD +[7.41.0]: https://github.com/MetaMask/metamask-mobile/compare/v7.39.0...v7.41.0 +[7.39.0]: https://github.com/MetaMask/metamask-mobile/compare/v7.38.1...v7.39.0 +[7.38.1]: https://github.com/MetaMask/metamask-mobile/compare/v7.38.0...v7.38.1 +[7.38.0]: https://github.com/MetaMask/metamask-mobile/compare/v7.37.1...v7.38.0 [7.37.1]: https://github.com/MetaMask/metamask-mobile/compare/v7.37.0...v7.37.1 [7.37.0]: https://github.com/MetaMask/metamask-mobile/compare/v7.36.0...v7.37.0 [7.36.0]: https://github.com/MetaMask/metamask-mobile/compare/v7.35.1...v7.36.0 From 25a2cd7781419c748e67422a8ade7f33398b833c Mon Sep 17 00:00:00 2001 From: "runway-github[bot]" <73448015+runway-github[bot]@users.noreply.github.com> Date: Thu, 13 Feb 2025 22:06:55 -0700 Subject: [PATCH 004/473] chore(runway): cherry-pick chore: remove SRP videos (#13512) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - chore: remove SRP videos (#13507) ## **Description** Removing the SRP video (saving 7.5 mb) and replaced with new designs [here](https://www.figma.com/design/pViOUcmjwhEzFsdrwknpNc/Onboarding-redesign?node-id=1-117&t=SrTBBEz0dgAQsaoU-1) In the future we are doing a bigger redesign. This is a small step towards it ## **Related issues** Fixes: ## **Manual testing steps** 1. Fresh install of the app 2. Create a new wallet and going through onboarding flow, make sure the new design is there and fits on all devices 3. Afterwards goto settings and goto "Security and Privacy" to make sure its removed altogether (no design) ## **Screenshots/Recordings** ### Larger Devices iPhone 16 ### Smaller Devices iPhone SE https://github.com/user-attachments/assets/f2f45941-1b1d-4f2b-8151-c0028183f1f0 Pixel 2 ### **Before** ### **After** ## **Pre-merge author checklist** - [x] I’ve followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile Coding Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [x] I've completed the PR template to the best of my ability - [x] I’ve included tests if applicable - [x] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [x] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. ## **Pre-merge reviewer checklist** - [x] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [x] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots. [a1d4e5f](https://github.com/MetaMask/metamask-mobile/commit/a1d4e5f578cf2f7fb4efdbb2349d7a0327daa87c) Co-authored-by: Vince Howard --- app/components/UI/SeedPhraseVideo/index.js | 50 -------- .../__snapshots__/index.test.tsx.snap | 10 +- .../Views/AccountBackupStep1/index.js | 13 +- .../ProtectYourWallet/ProtectYourWallet.tsx | 6 - .../Sections/ProtectYourWallet/styles.ts | 3 - .../SecuritySettings.test.tsx.snap | 16 --- app/images/srp-lock-design.png | Bin 0 -> 70755 bytes app/videos/README.md | 18 --- app/videos/recovery-phrase-source.mp4 | Bin 5724756 -> 0 bytes app/videos/recovery-phrase.mp4 | Bin 1992670 -> 0 bytes .../subtitles/secretPhrase/subtitles-de.vtt | 98 --------------- .../subtitles/secretPhrase/subtitles-el.vtt | 98 --------------- .../subtitles/secretPhrase/subtitles-en.vtt | 116 ------------------ .../subtitles/secretPhrase/subtitles-es.vtt | 116 ------------------ .../subtitles/secretPhrase/subtitles-fr.vtt | 98 --------------- .../subtitles/secretPhrase/subtitles-hi.vtt | 100 --------------- .../subtitles/secretPhrase/subtitles-id.vtt | 99 --------------- .../subtitles/secretPhrase/subtitles-ja.vtt | 98 --------------- .../subtitles/secretPhrase/subtitles-ko.vtt | 98 --------------- .../subtitles/secretPhrase/subtitles-pt.vtt | 116 ------------------ .../subtitles/secretPhrase/subtitles-ru.vtt | 105 ---------------- .../subtitles/secretPhrase/subtitles-tl.vtt | 115 ----------------- .../subtitles/secretPhrase/subtitles-tr.vtt | 116 ------------------ .../subtitles/secretPhrase/subtitles-vi.vtt | 115 ----------------- .../subtitles/secretPhrase/subtitles-zh.vtt | 98 --------------- scripts/compress_and_add_sub_in_video.sh | 109 ---------------- 26 files changed, 16 insertions(+), 1795 deletions(-) delete mode 100644 app/components/UI/SeedPhraseVideo/index.js create mode 100644 app/images/srp-lock-design.png delete mode 100644 app/videos/README.md delete mode 100644 app/videos/recovery-phrase-source.mp4 delete mode 100644 app/videos/recovery-phrase.mp4 delete mode 100644 app/videos/subtitles/secretPhrase/subtitles-de.vtt delete mode 100644 app/videos/subtitles/secretPhrase/subtitles-el.vtt delete mode 100644 app/videos/subtitles/secretPhrase/subtitles-en.vtt delete mode 100644 app/videos/subtitles/secretPhrase/subtitles-es.vtt delete mode 100644 app/videos/subtitles/secretPhrase/subtitles-fr.vtt delete mode 100644 app/videos/subtitles/secretPhrase/subtitles-hi.vtt delete mode 100644 app/videos/subtitles/secretPhrase/subtitles-id.vtt delete mode 100644 app/videos/subtitles/secretPhrase/subtitles-ja.vtt delete mode 100644 app/videos/subtitles/secretPhrase/subtitles-ko.vtt delete mode 100644 app/videos/subtitles/secretPhrase/subtitles-pt.vtt delete mode 100644 app/videos/subtitles/secretPhrase/subtitles-ru.vtt delete mode 100644 app/videos/subtitles/secretPhrase/subtitles-tl.vtt delete mode 100644 app/videos/subtitles/secretPhrase/subtitles-tr.vtt delete mode 100644 app/videos/subtitles/secretPhrase/subtitles-vi.vtt delete mode 100644 app/videos/subtitles/secretPhrase/subtitles-zh.vtt delete mode 100755 scripts/compress_and_add_sub_in_video.sh diff --git a/app/components/UI/SeedPhraseVideo/index.js b/app/components/UI/SeedPhraseVideo/index.js deleted file mode 100644 index 6b1f6cd86ced..000000000000 --- a/app/components/UI/SeedPhraseVideo/index.js +++ /dev/null @@ -1,50 +0,0 @@ -import React, { useEffect, useState } from 'react'; -import PropTypes from 'prop-types'; -import { InteractionManager, StyleSheet, View } from 'react-native'; -import MediaPlayer from '../../Views/MediaPlayer'; -import scaling from '../../../util/scaling'; -import I18n from '../../../../locales/i18n'; -import recoveryPhraseVideo from '../../../videos/recovery-phrase.mp4'; - -const HEIGHT = scaling.scale(240); - -const styles = StyleSheet.create({ - videoContainer: { - height: HEIGHT, - width: '100%', - }, - mediaPlayer: { - height: HEIGHT, - }, -}); - -const SeedPhraseVideo = ({ style, onClose }) => { - const [showVideo, setShowVideo] = useState(false); - const language = I18n.locale.substr(0, 2); - - useEffect(() => { - InteractionManager.runAfterInteractions(() => { - setShowVideo(true); - }); - }, []); - - return ( - - {showVideo ? ( - - ) : null} - - ); -}; - -SeedPhraseVideo.propTypes = { - style: PropTypes.object, - onClose: PropTypes.func, -}; - -export default SeedPhraseVideo; diff --git a/app/components/Views/AccountBackupStep1/__snapshots__/index.test.tsx.snap b/app/components/Views/AccountBackupStep1/__snapshots__/index.test.tsx.snap index 1d35832e1386..d0e1c768a75a 100644 --- a/app/components/Views/AccountBackupStep1/__snapshots__/index.test.tsx.snap +++ b/app/components/Views/AccountBackupStep1/__snapshots__/index.test.tsx.snap @@ -775,17 +775,19 @@ exports[`AccountBackupStep1 should render correctly 1`] = ` "fontSize": 24, "fontWeight": "600", "marginBottom": 24, + "marginTop": 24, "textAlign": "center", } } > Secure your wallet - @@ -805,7 +807,7 @@ exports[`AccountBackupStep1 should render correctly 1`] = ` "fontSize": 14, "fontWeight": "400", "lineHeight": 20, - "textAlign": "center", + "textAlign": "left", } } > diff --git a/app/components/Views/AccountBackupStep1/index.js b/app/components/Views/AccountBackupStep1/index.js index ba4332f770fa..3950fe5bbdd2 100644 --- a/app/components/Views/AccountBackupStep1/index.js +++ b/app/components/Views/AccountBackupStep1/index.js @@ -7,6 +7,7 @@ import { SafeAreaView, StyleSheet, BackHandler, + Image, } from 'react-native'; import PropTypes from 'prop-types'; import { fontStyles } from '../../../styles/common'; @@ -22,7 +23,6 @@ import Engine from '../../../core/Engine'; import { ONBOARDING_WIZARD } from '../../../constants/storage'; import { CHOOSE_PASSWORD_STEPS } from '../../../constants/onboarding'; import SkipAccountSecurityModal from '../../UI/SkipAccountSecurityModal'; -import SeedPhraseVideo from '../../UI/SeedPhraseVideo'; import { connect } from 'react-redux'; import setOnboardingWizardStep from '../../../actions/wizard'; import { MetaMetricsEvents } from '../../../core/Analytics'; @@ -33,6 +33,7 @@ import { ManualBackUpStepsSelectorsIDs } from '../../../../e2e/selectors/Onboard import trackOnboarding from '../../../util/metrics/TrackOnboarding/trackOnboarding'; import Routes from '../../../../app/constants/navigation/Routes'; import { MetricsEventBuilder } from '../../../core/Analytics/MetricsEventBuilder'; +import SRPDesign from '../../../images/srp-lock-design.png'; const createStyles = (colors) => StyleSheet.create({ @@ -59,6 +60,7 @@ const createStyles = (colors) => title: { fontSize: 24, marginBottom: 24, + marginTop: 24, color: colors.text.default, textAlign: 'center', ...fontStyles.bold, @@ -71,7 +73,7 @@ const createStyles = (colors) => lineHeight: scaling.scale(20), fontSize: scaling.scale(14), color: colors.text.default, - textAlign: 'center', + textAlign: 'left', ...fontStyles.normal, }, buttonWrapper: { @@ -115,6 +117,10 @@ const createStyles = (colors) => ctaContainer: { marginBottom: 30, }, + srpDesign: { + width: 200, + height: 225, + }, }); /** @@ -221,7 +227,8 @@ const AccountBackupStep1 = (props) => { {strings('account_backup_step_1.title')} - + + {strings('account_backup_step_1.info_text_1_1')}{' '} diff --git a/app/components/Views/Settings/SecuritySettings/Sections/ProtectYourWallet/ProtectYourWallet.tsx b/app/components/Views/Settings/SecuritySettings/Sections/ProtectYourWallet/ProtectYourWallet.tsx index 3a16fcf86b4a..e79a2eb0d6b8 100644 --- a/app/components/Views/Settings/SecuritySettings/Sections/ProtectYourWallet/ProtectYourWallet.tsx +++ b/app/components/Views/Settings/SecuritySettings/Sections/ProtectYourWallet/ProtectYourWallet.tsx @@ -10,7 +10,6 @@ import Text, { TextVariant, TextColor, } from '../../../../../../component-library/components/Texts/Text'; -import SeedPhraseVideo from '../../../../../UI/SeedPhraseVideo'; import { MetaMetricsEvents } from '../../../../../../core/Analytics'; import { useTheme } from '../../../../../../util/theme'; import { strings } from '../../../../../../../locales/i18n'; @@ -58,16 +57,11 @@ const ProtectYourWallet = ({ ); }; - const onBack = (): void => navigation.goBack(); - return ( {strings('app_settings.protect_title')} - - - accessory: { marginTop: 16, }, - video: { - marginTop: 16, - }, }); diff --git a/app/components/Views/Settings/SecuritySettings/__snapshots__/SecuritySettings.test.tsx.snap b/app/components/Views/Settings/SecuritySettings/__snapshots__/SecuritySettings.test.tsx.snap index 3ef5a5f21dc9..a4b5224776cf 100644 --- a/app/components/Views/Settings/SecuritySettings/__snapshots__/SecuritySettings.test.tsx.snap +++ b/app/components/Views/Settings/SecuritySettings/__snapshots__/SecuritySettings.test.tsx.snap @@ -76,22 +76,6 @@ exports[`SecuritySettings should render correctly 1`] = ` > Protect your wallet - - - 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�ixL5yC=*mf#;kyyCBiA}RQTd`toflM% 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μPja!`-5x6la_NIlh{lb|vv{R)C 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

_TlU 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 z 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 z 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 z zwN85pth_0s#&S0fMsL~qwb8o&m2OZ)xnFvd0Dd;iEt?}cLvT~uot{OBb-pR&xkt@g zbqfvdM0w?wAT7k4Xc`Et65Y+(e(I#)HvuN928Q=wNLf%*c?OH#&0h?D!UuMpPkDvM z?XVy~Wf2n{6#icr%O%oYda{TJfnFVl#Hsn-+d7FeDnRZi0yAdiOc(gf;Xp34T?XQ- z57RGJ2C{C3_|!UNS>lyQ(N(&kUspZ|Q(fE(;P9s$^BP0+AGFL%O{PzN!9c#hLsn!i zWloO~D{QM!a-->%-PSUt(*#w{u5w>ui@y$eL{obXNM|K7ln(Nfy0$%7 zb>vr8GU#(V*6Qt$ZEfd0!1BYY_c-3oTA_dR^R^b|p3q48G2V2TJ{gJv`6Q>B66=nV zT)TCO8Lu5&Ct28^^eTSab818(=n#GV9KdAH%(M3eX81&kt5N6?cERP;G|!>sF&E)Xs;P97+bO z_{EBkD;qU$S@OOJeJ)!Z454-2ATJT0gI-Ge5sGF#*zN0DUggUPcH$h4iRo?GkR!s+ z^U&Isv|+M=uUPaxH6o`et35yg`PX)nyO5y~Jz15rk%{LWK<-HLH?6LG06W!$sFWBC z;FyByun6Pbpt`PbDy;DR(xanx3`NdQ5?ziIcPJi@^to%<7FE4I+V%pPeEoaUjhZ>|WAu&n0*LVNulp!c1 zKvsk7?%hJZzbS2~y5D$QJoWJRd=j;I?2Ud(^0+;F3(l7c?z3P6tj&gzCwhR#OBpnQ z7fQQ-xk*%W_Mt3C0yX`{VH2gTgNVhuL+d0Yrf0df%YJLqEjxEI7!J+s+>(UcE%9O2 z9pnfB?Optr0mx)i> zsvTnj#C&)GL0ImB=2(sbHbQPr935fj@>eBs6L^tk;;Jnh+~I51dNgvcN>gM2H|!_& z14R4IyTt~0rXS4*$mKEO$t+4Gpip|vpD#*5dMt@OytU*}J(fbgox2wq@P4wSua1g|m5XwPX%k z6@thlpBI|sA-7eLJ-`vx+miGpKSGy}aAM{pU}A6yz_d2vQ_fB#@#$1YL~C-hr=hvg zw>h4LTJMM!?=#2|XkJ4hB)0ePM!OZ#pKBJ#mNrh>dCAG}PccEAq{M&9g8!Tej>++i zopTP9EL}YH#sk`8IOh{b{GT^4)N07<2zbBS=3Xyh9qaQTNCp#!j(X89rpzE_*6N;S zL7DT5FosIloAcI9kHaPWmq`=Ebi~Y9mA1x(pbI{c?&>ro%xmj;GF?ZHUR!a{5xs@( zZsS)H#PWC2GLWqD*g#%3Z*fCu-6jGxx3NeJNJ7!IR zQ<0i1*V3GZf~+OA?z(BNEgi4nkPJL zQRh71{H@8V{UTZ_bmS6O6cCk4@1eVn(FJGyPUvuz0o4pB94 zH%1GVVa2OP$1kuO{$u`Ke2$1_(^^|`acJUBHgQbgwB=k85Hl%XMIseH%F_z6;JJl~ z>yZYZw@9V&o*(auOViy3!Gcmv97B=jkseOWzd<1O;uYJ@6_%d;+UgOJ46gHNen_kzCDmLE&Q5bc*pxZVj zO$7eF^oY6rsjT&{AhUo}+MG&7{=hL=n7kmr9rpZb&YxYmlf-v*i$Y>2Fm-`;>Wh-p*nh5q z7JihSFrx3nzV~ngs%CPiTACQ#)wG&EKjt#{?FVXjvE+0f7wb3T$IZT#{5B}odt!JG zVFP86W*YG?%ZXgF`#`K-nSeZ&*%x5u!$Cr?i_HDZKRu*N*Hts6&a5FF6mkV}kOpPJ z%Ik9gQ-E*XCG9n5sO^B5lln`8rQ(Ct#0bYTZR5%@vzDWR{9g&Yxi3jg0GSRoziNPb z*W%@G8q4dw?a_CUMZ`J&@NI+bg5_woXBXSs;yUgXErywlK5y$5hvuubrGm5JlU+d4 z<(5~)>;rmZ`W&dY+qV(ptCx~1(@pzQIX`-v-@@=`MFOv0=$H7k^7{+^G1FD4`qBdT z6IQ_8jADj(V5!91T9c8EwH=XZynXh^qhaXndG{@f{8@Q)dQ`s%>&`j(>MKd+U8WfBNj1c7Krsxp)T%GP0%f>2`hT$AiY zF=7>JO9vQM*8A;pOMDk8<-6mJ=#P%2)vbPKFrkUz>D=SyvDU7#Gvw5V(L+3g4?$bT zg#L$6i29fu`;j%9lNsP2@mJc7<2Ra3Exs@!Jjfp*ZOpmsV<5|`%o?M7a~@S=hCQ1& zX)_V`snK*%jmT}Z=c%Z)&J@cEuU#@`o!$^|()vq9tDzJSqvJX2ekh@3`ociRJIyof zJ&&nts%QCd_G!JeG<3+f+|+N;+WQ%qy#9W4t}v6C(~;AzC{GRNmZ|zgQpY&(N``#g zfolpdBc^n|Dl{ApP@nha+>B2oQ>(G<(k;-oBt_KNx|qN~8+dsN5U^^FGWS%c zz@S!cA|Z&4%ph>LMSTpi7)p1utXW0a8#e{Dx7K5aSrxn<&)%u|yDR;8&$#8~BHOY= zmP(Ww&YJYVC|ZYhX3g!C{VzkmzBRrC&D+1uMhY8yUd znqU>&exdf7+7O`#TL1aAf7cMn%h3E=-U>du=XgZS-#wX}n=L zcGMxpzPtxhlkpZ!N`wIbv`HW$cL%tHq6qZ9FkK_Pw1Mhnx}09Ay4_?C=rv9}XD%%% z(=gq^@OY?*7I)cGSEN_B8H?GFEdN>Yo`w$+@{wsSajU5rIfV9t^gdG!zkFvGpx=<% z&SpK)bWM@_{@v7e<)_cnv7rJQb)rF)ix}$ZoB!rYJ-MT0^*%OFKl!8_m9rsHV(eWU z;AluK7mkm>EM)YaZF9o0byX`w>f?Sv%__YzfK+$C zg6u7R#84t*#dIp<2uvXvJ#QF|l(+FOFPZxQ^OXdsjHyIh%EMEyH{t5^_rlt*&r(~- z)y(>~>G-tN1ctFDRQfO(bNmXjVOvD6agIKM`hAcwM!n7D&xF`hDe#bPYSLlye!bQM zEJEDy2_9qZkOv$KlG84eYELW>nggjCtL31JX14i-_&EMwUv6)2L$_(9(=ZUF9?&f; z_1d_sH6qt;`W!Vy$21qFu8xpRyJr$>Qgnk> zn{pPtKJd{sl(>+}BgHd8#^9aLBO{(hePuVQWNBv~v|UCBZ3&|H$)V|vX6pMCm#e4{ zd-+myo;02ms^)pZ?t|kt{+iB@d`%k~=F$B)NEnW%erN(LnX%Drg0q$*Y?A-3GL`ne zmax~o7P*HoV*_{m8+m#b=C`wSDr6L207|ndqp*m|BI& zW<%v;Xy0p5VAq49r!*~OcD$0!oApz{KtMAb2k8Qg^?=}5!qk&jrCCP^cKb%!P}pNy zR<4TC#e+h#?7tV=g1&GZDruFzR4&ij2v8+{Zy7;w`)T0{-9tl9Bx#}rxTwI!`|>7z z>B#!>L&6tHypX38mTeB<32UKT(3m&>20FdZSS=wl@3B=m@DGizF_9kAXiI3Y47ENN$Ug_tcn#?vG&D(%t3m` zjU&}k5IYc($+NyEjvDIc`dmQ!vU^YgSt(y4kZX@P#*d=n90}jz{26KGA%$jOi-auO z!v?tpONH;Jd!VCQqs#WRmY7N}rN#;kfCr1J0UdJ27n*2$x_-!V6PMX8+^Ph%F<*!cc$8IwizOl&TgEkE=f}q3K+(vK zQd77DQ?a}6*_lX1QdQfGxgelc^E6=Zbk z(zaVw@v&8SK*as|PFA%qf}#$AZd?;!hM=jtD3U!&v~G*E*atv5$iOzWeO~bg@Cs-T z(EWC|gi-iu(#(a`VQ0kh=8?wdcAsis}HfPXe#f#YupTrGs11zDuP;IFne z{)>-aKcfP@#`ERM%K|~MqTJniZPz~@I^`Q9^-e$5n~S)pAUWsA;q~c2+AGY z-{U&F@FF|#IggfVv|LF{f>h|3#hH4mC@a62C*xs>i+qP{rwr$&X8r!yQvvH$_P186}`hEWQ z@6CQaGskDIHEVF42i3P;{$viY+&bKqEGH-{PE`~Ea@->nxN0@&J3h1xY>%YYr;=`KySN{TRQq<+uNpeFpXoC!g9Sydo$x|7ws+9x!You+HZmqXdq;5a<`PEPf_>BRy09NF(fq;+g_pVv1K_` z$)0cg8Z6qq@g|6YrgJI|G}XkF#Z|G-n9^K&#?lmV9#RNl`bb#aPW(cWy}gp8BS#C< zfj3S%WqB*cnS!uS>o*Y=x1Cf}BzZw1bL=JDMbjV3FB>ifD0?J)2hUeH$sB@}u9j6q zqGV{svbq*1ZKV22-+A@K(}V<~?|=q~9VsO}8|76c5TCs|D>#*v64ql8{JFpQ@UrjQ zF^ea{*37a5re>byUDxwOwywf$k5lt80QqrE>t{$kttHHax4+zi3>XURkGmjc6PZA@#4_6`imZKmP{Cm7} z&Y;3v%gGw#)AXFbq}Dgl<0Bo^c@h)%`2C4tuXi&kM5AI47+f%_&NmYHxut}l(T4ke zW7aW3Y?wI!E1NE2J>OG@p!g;An|w5+neB&XW?rj{BgKbvAzRDRYFZ_d&ssXXE2s5-;8-KIF?ex#4 zxl)}tc_foa`ik!yp-cjF+sr7BSr96syY61&aq7>>3~Q6Q~<(yrf|kY)DxrlObSYA8KOnSUeqQ999R|GjdQ=;77Bx;XPKp zIcA2WmCyxswq~Gi(+P+DmZ12nb$^AOqE~#ryvs8$o!_vkCWVhdG(7Ysc#gRFf%0qP zd~8%l>KO+X@VxAmkTc^n6huJnA%+H){g}t#7z9rFEKF-*j>iO|K;fB8g*CWXfED`x$PGH!u!<@Drn>hk#yW(gHEUhIJk z50PX$7_I8!_aL<2XGRz|Ry@XxXFZTa-@!$yrLaFOW}%JV-BRy@W7^DT<&vRPLNYF9 zM6ggV11~SzD9bItIA*fc>InT}w+xtPbtab|zes)0xC=5|g(=Kd;vB+}@M;U&lbVHn zT~D1>>*Oh@h?2*t-5r#bl1m0^X5=e2hW>R%N=%5uE0fUp1tKEBg1;aRuAw|0pY-LB ztbPLAR`ty<*$^Y1aPjhu{yUPCzJA9*^1&e%$@>8as3MYOg0>?E4~Smvuh1kjdCnm`|fd`j!vd3Oh;; z_DN*5D4S|+8B`(>ipvL0LY4Zn>%c|7dwD=ZryyK&zHf|XUx?B^2r|c^9eyH_Cf08s zHixBX#&#S?+nvQz78kWc(@ zqnN(!0<^tc7-@~Z{)go-BY~)I-47$B*%uw#!eyeLe_@f}lVn1#7h5Au{`9c#esqDr zEfghHRW_&LPJ~pLUvOF3fm?_Wa+f`uH}*K-CCV<$d^JYuA>l4r-BgNm5cYKY%yCFwP{W{%oK!*iS;LQ?K~mr!kX`NnBsN+BvS*G&w=q_FLSE~Z`IZZING6HnXsI}jao#bTP#=O5@)H~XcW{60WeiMLq0(#OX6 zQC|WNBWBeCA9=|jX0ZK4@Qw~SgamOi0ibR>OHzXV=!>I=U+-#S?bdnfbBL``$@ z`Hx-GshI7TgWSEYo&SVC0{)pSh|TQiC}7d7cVEb9eX1lLzI( zK#B=G^Qy6N;C+d-<}au9;GcL}Jr=df!mfubR(+kQOe(n9J2}+IO(t?cq#J`=SeD>v z<#$|cZ^hZK+R)b&+tLrDZ&;WWZ!t{kq-V{0VlCNINYx&Y62E?bVKX4I;qKfJA#h+& z5^inW7W@NTiZD=Vrm~01t+Y?v4`CAf)#t$#$HJwol-2y z0*czTe{a*ZfV0BSUxlD|Ydw&n>|-&_EhwqDD2wxs+BU{qP21!V>wHo9=$-F_3DPXP zuXo=0IkAejo%(7mA9ztP+{hf!06GgUW@2#$!1X>|nZ?ekl6D_#mczhT;m4CU6m;~l zEVUHnDvy^2rY<|c?HgY!MDS+1e+z_1qfh;fm8v)Y6vc&8L=Nh`+NRZy#?K2DWeSmU zE@oPX2qeu4{J+Blgz$@P_#e<5AvOj=DReP^8fkcn_fGL@>@1(aD156Pjqe(nGstq9ppM+~1+VpE1SJjWpD31_V)JV7Rx z*#JGX}|ubbcYGzy!LxQYpisl1H^L!h8#glAPm<30)_Y$sQ+NQ2yu*^ zf;F4H`aAK*6t(a^+nfID4Lp0Mn=5k&FASayF#!a|&A4fDMX9*yGN>7tzOSS`naPN> zTt^b4Ihb!ahR(pi2h1fKjD9c{0H0s1`Pt-@ zZoZabtmZF`3;kwb)E|dAn!}XI9C4%fPRmidShpA>hOp0DN#siyJ`p<38AeyBH?Az! z9N~9S9>cr0i8G&PTTQFjl<35g$GE1MLI(Y9~$ZOet}` zJKz|Di&#;#Aj(+nqe2-=7Cx2st!6K3lz3*fab%#`*Lr=6!IjToYW)BU@ zP23D+;~z$&3kqk#d*({-Abes${{jC)TiR9S)(9<`tc?f~H>Wjjp|-NNnVvK=hVR_w z(CTI9Sqx@)QSLiQjXTlKH6yrt=tBpo9Ot4Ub_H^oRg05|mQh%y5y^p{+y$1&woz7^ z9NUVY{4=2{NykU3RI^9JBo|-?y-3}~9QRbbYNdj!Qix9$4pa!43_!sU2^vGKErG4% zmABTqVTZXe%&S()@qAr`JlOCcM8+hj#FKzPBp+Dg=%OVB0Klb10^$KgsmIY;lX{?9 ztQK8T^dvoGboTB+p$UxZlJ%GXKbM~_B`5Fkv=+vx=>)ZrD*BqY$83n5c09r*m=1!4x1AY5Lt&;i)`{@;>J zAL_7hgI=UKGKlX35CNpELIx8x8H5iY272!aJ<{sg12mOyudG9*TXK4q#v{3~6mwC2 zO-!v+-S^kT|F#E)|3HSmx02<5iP^9jRBM~m2%Q6z(1ET=1;VxdH65ap|HhyDC$8eA zN!l&-F~oP+7$t8SB$Sh4Sdg(S*C^eI8v={LIVOUJEPS{mi#SWNEu@M|~Ym(1LrKn%Ip)L3j8$v^5d?gcP;bs=>DU33s!( z-U%CX*O9u9Z=P+oCig~Hm3DRvSOMg_OU4VSRP9WB^3E}X2^|PGy*!j$b5X0R+py2- z!_hP$?y3+V4@6lX+89d=T(~SyPeuy-7KD97i%Kxt7I*cJ2Ukzywfh<)MZY|xL5z{f zN~7wM3ANgXpk#T%*vNvnSt>2n=07;b)nJ?ma)Z(@GF)g-O5EyMOYGC^ZV*P$;5`-? zzCK{CB~bW6$if{Jp0A2Tks8kp6vth5!S?Zj+w}c&HWA00CqMt^>~iV^m0qq49XTBo zNCJe73>ilNc;SsMD^zS0f>=>^(@L8$El zK>;PDI^lPLvOW}n2;5Eee)qX+NyYUwWPzff`ygd5{puAwrVTK3pIU zS>XBVn&gKHFL+IO8O*e@M)`&Fk||Ho&#QQ#(ZxODuMEcp?b}oG%JS_eb3Vy?{x}(_ z7@^$%4%E>w5o4~z8a1jgJxqmo_dIChk_K#*m^A2zVAytH%8YS7)u+%RB=AV_p_;h7 z(KI}nzzeAoSVO8)nLz>aYzp|hDl_3NkcS)YUj!^~KgUA+*nk6Ih|;A|8HSa+n2WiS1X)R0 z;O@^Fo?ZO?(H>jM@!cNZZKON<)4(U=>yzi>^sVo-AKY_08MhGyoQLc}H9i#NV&(2- zhGIVTvquM&kcK5m1;ry6XGi-2gBs})GG={UNiVLc&j&Qfq3MI?*lPxMp*Tr< zRgoQw>gG<=Xbi~q9X(J^v&-EG>lSdvV+A%e~8%OcSdO32GUd6-z4tt?7k4fnnVz> zkSm5949$`#Hwx3$xbpfI`Cm9@1P-J=Qbs8l5Sc}0TKCx2&Z*2;?a-vWxfb*$BE6$% z>sOpm<79zdk)fb0sQW3jng*gUrwt<+qu~Pc;-WEQUmaV1KmKrPj)YSI}xQGp%~h70=O z>6j*w-Xh_K3pO7gNu}pih;);OBmbgr^%VrGXGT=db1Q#A)zo&|l81w+GpS6V1Izxj zrMV4;Hq)sUb^;SY$eiaMBDug%Po$?Q)`%l=MO?0PxiMM7q~X(?*)32DMy`m^0Bs!G zDj5+z0bH{`n#MQ#A?QHIkm9a!ybOiaMLdbXoAK6qmSo40x8BH@GvVEJw9K-je42t- z+AQ$voxSE{Eq^0=-x~dnab+<6RnOi1X(+O48@1xMRDH3A4B3WBocJE$Q zLhp%uG3)KwJ0{F{dKc=mPLRGvUD8nyc1LtnS*%a#-lUxLCY+jLu6@o=1KSU*fW_Yy zT@3bx5H}4HBW8l;!X!xskj2ZhaJCDE7Crx!j{&rXPazDnOsyb8dl2tRV8B##6?{c; zwJCM-3u*NYS&6N&b#XXPw)RXp`@|`YjG)4JvttPx?||kZQe_3rZIcBAyJ>PVR+@{% zvk)Z-qb(uE+x5i;Xm@#Ol0QMZ(4}(?b^3T(>wihs_Wfs`Ycg=Fljqweu+v+bU(0Fz z(SBFIJAi+II5CUGLtz#IO1rY_rbs;-9uNo!Q)|P@(mtIeXW?r9(mq5*Wo3~Z=j(C@ zuCPHkDR7Qg(m`oLlV}LxglbJ!mCeR&ZDTh|lv&H*VYr;QCc}P}uCcXZl2UxrBnIJ; zW{>dSe(+;{C*&8Vk$0A@JIYgCO4bY}!(TL@m$d8oV7n-ivT!5Gkc1uGL+wHA`l%N~ zQD3y{KO@WHp1Lkx_r(v@P*?gA=K+Wb{|iIVp6U!{FD`O~9#T!y$phaTa{c_p`K<=y z^H12Z!eW1y%`YzFzefwC|2&*I(L}Hih-Nl%GH!R=g*qI@^VT_DOBfnXOhh0{TdNrC zE~DhJt@`S~4qr;>re)K&+RGBSoXV*F0!fGfV!|D8+ zSx*G>BChGzU&+!`ad^mn8h=jHo2=3fhHhCa@Z=_>3KIc?v}|VLkZ$I!v1VaA5z_qf zt|blDb3~S|!syV2DF`fAz2AP)+2Zl_^Zdjsm?(ttWFw;BchjKp{g7dKC2EMIF0?Kw zwShPPg!%O}f@I;2=61>7?-fh66MsnoON5?}5%P^xh*Ud|v()ihTOX*(Jp#2uX z3H9`{x)Aj0Dw4Ym2h+6Gl^fmHyPF{XnVtQpa6XOWeUH$AwIEhq1zt~w48l}3wkX$w z6g-f>vbb$CR_z7n6}Zn`}}fGN~_es90>ML#2iW;4uoz z!X%!3b({i1HI5WsrvPM*Ejlh7h*P$)$qFn~!TWYK2*TLUkY-MyKd0;q9g4|z`{;79 zB0lQ~ZOqA{o2%?-`mK;MEN~`09Q;Os*Lrf(;?i{#is!}6y)6oka;p3IoS*BLO`C;t z&qA>!HIs&_43IT9P@MHLN~d{`QQb3B^vK?WAN77+f&C%c0Xs|CDt}YOh5@o=5J2Nz z$1pERqrDg@E{zezmLZ-^#2);IbaBJr?=(QUZ+OhR^x1w2WH^0+eai&M{zKo1{sRFL zRjmj_1vyaI8(zw~?2p>i0&N6aE(Cugr_r7BIiaNeo@K$9)5q;E4UG71{AzcbnJu`bt{RM0o7NLkI}2@A zvX&QGUx@EPREjV>u2ms*$p6U^bS8k9ejhOssS06lEE=Gq>x3;tQdoH)raYUV=Lm)t z9Z6w|iUwYxDid=zzrzt=etyWV=c?OUqvNn7Nsogu$qCSR6L(z2de^w#P*UQU8>Z$o zC-dghTy6f?rqjY!+pk3F={-n$bU8W1wry*P%UpFSpzwwkLs?2JJE#LWv860mant(U zwLyZ)4FlI~wV*;$IbS7Sms%)`(S$4t9feL_nXiJ1!d&@Nv$u-1fCaJVm^B^#8K&xT z$3khWohmTz%E_@e+!k#$J6@ljdltf`;T=CG1tsv121nAAbVPuR z4S}HRgz_tdCd;G>jHcT-$4CU@}${LaIT8^sNfFbHA0~4)QM0Kz?kZKUx&Z#ujO2!t3Bnfk5`ugcEs;T4SV768n?(t zH-Krk zo)TY+^TSl6U#VzC(py2ROzg@V12Pk15uxQlD{s!x*jRuWBePP9d1y1_iO--Woq$-Y zblgAVyE?oo_V>Bcq@Shp6%246>{kaPN0y!cPR7Iy6Z*QCw0Mv~C4nFV%4|XauP=0j zQ^8ofx0mtEyY@af!DNtiQRS(KFj%|?cR-1#4iKxD5GprH|MdEIg6~u5_FUvb?VuaD zH%(1RNl>p+3YQ!J;0FC8xz?z6v_f;_ON8Y;J$FVpD$UV;4mA$lrih42>s_0gl0=U| zl$qm~xs2G?ilBU*KzhZuwtilHj$mcIx2C(xmH(@fK**7) zs)$2IG}2BxB%g-RyBfXa2{aJ$hmjSTEImrBgjD9TZ_u`C)>;)utywCn2+P!jrqb_E z$)m@rU5kBDzV^w6?yDBvVj?^ki0^L5&fhq^wp*d)HYiNB>iQN+5s-6tR<-ZlbN{@h z#jY=;yr^2#KaSSerA4a2lXGboBh;af19Sy_+ z1hb)Mj6JNaOICX_hp)iniqNBx(k4JmY_L;`MIwpg`Y|KqGTD1{b)Sl?L?kZyjLvs) za2KVxM7128>_v7e^3s=5+!TDRu!zlW=V7Ae{tTJ^r(u(yW^7KB8Y%?ltWR9jnxrxS zl6INW1FF>r#}XQgs3+$vh02W^N0f4Wdxw9u`SM%HZqzCC4^1QISXo1r^4}b?@UBY@ zFCRJ53HHI&MgBj07^J3Mr)8sl+wyfb*6l@`MWOGkJ;nPT6V|oHOX}sszwQ-_uUhDX zKv5i-%)2h-a5PMtyu0joHsUe}{aGu);t)30ij96z!5c$j)cH1TyT3RlUI9cneEI`n zlbx-!(G`N>NAB*K*fvEiLrb|z(WQ1OE#xg{KsVt{;TvfNH!0pd{!lm`3_lCw3ms<% z=7DG%RUHXofuq}-RA|R=DXHSGBHp@07XQtASgf%M4|svM5ay5(z+^Y58&(fQBW}Bf?*G86zntz;#}_4CQ!n*Q-(Mss#I=92<%vWK9K5OV5~1K*IPB*FlVu8y5Dfr7%qR(HI@6+Cw10|+$CJbkCja!Vj( z8rjyTM#$)s!*LSbtV{s5Gz*ctrQD-!uht_Ll4eUMXh z(IPQ==zxly6(>(Kr9CnctHtCafy|L&o9$i%1?UJri$12mtAV1VD0r>7&LqCMY2>)3jD_+dPl~1B!)5=} z``MXxMgNbGTOUF#vKBK&mOojjD$U(B71RSG3BNP4?Ouz!{CY3cMU)KnY(V|$EG=<~ zd(WzWuy5P2(NA98Usl9+i%^j;%4in&DGkymf}g=gk4c~aM3AKbh1R2s?wuM7!utg? zMh2KKHC;Ip1jAad-DrEIQb?w{tj%|tHgd;_4+__31J_@ut+@(on}O9u8PkLqrGt?? zC1ZzS+i0qO<3qv>%feG7zXx$t0}vbN4q_U0gs$kJz(%SWV_f#`F0xX4JhQ5&%4`YL zR0a)xMtisF8Y@(Isa71V$nRCy4{nd7dQ#W!8?%)040Lvz|{GZVx1z+jb{pDnL}3`^t07z9VjhHqCf;qom@Q```0@l zn<|`@Vn}O0=JeG^KgdXV1i^3`escb;5;?{3uY40(ve*?df*5L+TY758XA-ouqMnAL z-}1PH<5QoPr#d<)*bT45jq7ALD(Es*{Wk6>Sp~*I6rh9{yo-2eoPNgPCe?>1wjG_b zUZUJ?JxwcAm|2)%g1SK|qJ#7hd0&c63kNiKgRtNPHs!lMr*bz8R@7eWB7*0+UJl`= z(J};IQK(=qz~XTnfJY&Mjl_z%9a}H;9MotTRj;si{a1X5*jsJ44|-aeSS&Dvs7|@6 ztGgOS81zKP^V|^%Ehws><@hdDT1%SjtVYiNmJ$|9Q(yROZi!MaG#pifGI4y46usS! zASF-t6wi!Buz4aH>cjmEnu|;Ul*)>03Ho~ro^>+2!VtKF<(tLf>z!^@&9~O6em9wL z|358;_1fJ{!-|Re6Gr+&+YoSh@^7t^T5>`sgStPDkA$#WPg2(4f@M@6mKi|#+TWfzg#+nUrpYl1q*_?Gy z7Va;7(a^wRHsrvudwF8uWb?xxWq#XbV zJ}v}V(pGkT^T^KIG6;;TfE(Xh8;BC%O22&>>42 z2c$AXy^$7=?4g6)@7xZmkSH}z>f1}_tknk3_(U&VpWD*{bQ)CEkJNb04#H!R6G&JM zO7+L}b(h&h?zI;dJgZ4RmF_xyE?dsPB{%tR34dF1RH^k!;yG9xlQ>W=8~kjAT-XO7 zP5fu?*BAvvi*Pn1vn`YZKsng|!>Uq>bcXc1YO8QKQ>qP;|5x6v0W3zG88fp#Mp==b zduvU%Wz&g?a;VjAOCXimMr-{h7l~6EaM72&#aYR+46! z7rH5v%G|h=Q_76(pM4faUhX6(6e-`&j9fB zf|whEe~=GK+&aFUFpJ-T=iws#+JGM+ROlhr(tLwd2Pf&bVAxaj#2#Yz6aK3W>gIeV z-#x~LK2gc_Km>s3;mzS2z<$ac#m^-W>SQHit^}s5G`w)kQ0-&FKNy5M**BK>t87^#^e&EMhRD}ILY!@NUDAA>A_}5px z9lpOepuE>I*!42Q&l>XmkR;gos}U!D{@%OYAmA~PBzTpITP z;k?}}NmRH@$2M#t>{(o6a5TGWI?m7_|7xRTT72|=eD>^`jErj8-XSkptyqRnSVmh~|M6oh=6t4dn9QF7f6|*5#ok@` zc_`PF@vT;(rT+GPJ6iK~SWO!<$^JpD>DywJ*|ke7V#y!YF&!}lkz2)}F@Xkin{%gf z=peD}#|oncHhy{gkLy?^?C9_}q)a zY5{s3CAkRrT*5JBm{6BBIvP-X68J=%Ua|>ZJhM83!4o|LI5P7jV@eFpmAj>K4OSA3 zeD`h4 z^hCt!>2NXs6lU8u|BsVGz>Sz2K$dp3Cg5G?(z-bIoMX+t`f=R9kv#ByJb@fYoGE(U zu5rPJXFuw$-GwTLdJLJ|M44RHwXSKhIRxjMJ05ACLK)Zg6MhXdtvg-mE?GvIv2k!= zc3f{Wjatv-sKEHe8ALTX)!v3TAWq6VlBTx5=cQ zd4DFp)ox>e0`1#_As@@{OScVOz(@p>uVYpsYGI5M}Kb50di%7 z$xTvYt?cR3@JcIyxV#3`fADlQk^pQs8mCTqukV96b?a%o6~g^n_FsWN8;#h{eWAE} zQ<(zF{$kRRhvVr~>m62pjzO#B58VROe12}LybVknk*F&YM$lUSGkfaG?Eg@g2*-Zc z_1H`nmXlub&1cDsFLH7-+)OxTVkO|#uvbNK1w#6~MI_JbzI>1(nLHJCO)LHIwZZer z6GI%4k4&|Mk5-MZ>Lov|Uhh5A^Q`bKwEpY03WaO1Do) z4D2b?y|euGYbDMYc8TC&hUPp)STJ&PtW6~eSIi`fPJ;vD@mQeXb|kap0-4Ht&?n-c z|~ z23T!hV=nJ|3BKw3gp1>oz|)$CL|H8;$#=mRn{M%Tv6u&ok8-8 zm$C^A$-%HFj>SW(h?k%1onN~2@XrV5<5qooVu@OIoD10Ph%L2g2-SDay!t8C(~9{{ z^5^jxw`$uq7U8C7_Zd@EZhLA1nkD^Oq1V!WzdW6T0jZztTjuR{SiXM~%C-Vbh=+!S zK2Vy6+PE%kdi-3d*Ox-j2~iZOd#WnP3sf=2`$S@?1FQGhsAanQ@qVet{%BZx6uJKL ztIX{XptGP%^bL`*aNnR6N|_5|JpYT?q3W4(l{nihL~Y?0$0hzcw=%T6yuE%Py&$F% z9CK~u$(Ee*h`_(3YxVMR(eBlzk~Z@(84UwCs!`eKL%cn;W0WJZh6vQJsK#>3U9)KW zAo)Ba2QemOVnor$FJ2TVm5ZG8Z>*cR71<^hK{kyXEK+Y-ZLpQ{JNe4mC$|GKpIZZ_ zxEPXgTyZ4(%X2uSCv|xg0CZzT{S~l_SI;e&y(cmD0dDy>g>4eiXNe-mA_aL4-cS~q z58`|1+SiiNn6wfSTKT9C$Z9}Z`kBcDaUNCBd4ed4yj1^LHaZ)D{Sdp5Cx3oYqN0(A ztOZVoZ3}eOe7?%NH;>MOSy<$*ml?99(AgkyRY_7t1FE9R(Sv30dfe|RncPgtAbD!+ zTt+U%KDoqtGZ0eSK$>CMuvx)bT`tx@JWqF~WfT?B?J{NoNl?!emt(2xA2ZdG>bEs8 zQ?oy8gFaQ14e%X~hY7y+uJbn%?lBgz4jw)f8+5B)l;rnhK@(N_=%f*GRrl#wY3xWB zsxyxFJsX{o_$-R~FgrF|0c2jIYlnRFT^K2gJKmo~dN}Fn-Wf&m%(3H$+1DFO-o~oe zJFu$cdE)yjIFns!Ks_?JwK0Ry8tNd3Vb)NtIeysbKT2uGMJXJ)a`&w43)CK9r^TzF zoP@*nd8bc~aeKJgP|uhCYn)doD)w&gOAJ<6aWh9tI&uKX-H(eXVNaO!_7iUVRBq1n z$}u=iB|F1>MV}Yi9?tWlXE!~CqUUll^m4r)LhL5qmPE3Jt#fae2#p{(3HHqO*6%WG zq_1IAX54%%jT?3Kv>4qA52NEtM|sErTmvc9bIoy|n337R?g6;UjlGP;k;bS;m<20? z?;hwpcj-V<;9r6(+-}8Iox4rod_>t;-MZlO?Lj|oSygvvk-UN^6lVL=%omThb&{NBNsuMEnDvBqx^6@S zU!unq6W?28+;9#XET>;dBpk>iLR_zQ|Nley-&NiCe?VA7@DA}2OxW*{L?allT)VPz!Z(t)))(95Z=X<{BCormJOw9$cFDn(9h2KGi z$;m80x*DUxHYg1KaIHQGByPr3kzauVktiM%2D9_z?5$Vo>E$# zglVb)-jqi=Y;{sf+sh}5h?@A(Z2mcGa>f)K^+{PoJ*KYnQ zs^c9F%Y39}kvlUJumJo!h?ChegTf+Z!4YX!5V_n~tvU`Tnyr1pG+kxcTS!!~q+A?F zq|;_CHNgiR%0BR&sN=Vl*ORYaNtA3wS0B{6e*#5+JrxVV40NiBX$pU~oLIF5a`xem zP7-ubV%KAhPDEdx)ks$&2mAy0NYS>Y9I)SoAe{e;mBRnAYY}FNj3tpBD@Q(o(1Yvq z`sQG*uCTGB%5AlVkvRciz?2%*?4+^yDIq&irpt<7WexmL*h_t@(D(I?y+r&QfOAe( z&SC3C*Vf|WBgdNe#dLCM99~8ommHyRq3q~J6!H$yX@@NwMMWZA2WPlZ$To#$rx@XG z8P)T7tKc=IQiZn8{NWgV`kM$+e*lboA-VgD|f9QvYq&!s6 zv;XBt+)h1~Q#nQ49&G6!*qheZ>YTMAKp43L!7I`VS$MyxXgIB+Uj;3);E(v%x=lDY;x2J#hYxvn@l1X!FO0Tl9|0>xhL&So-7FIBX*}_MItZE3X#hz$EW9;l*!UmJ~PXO%G ze{ubn!=U~TeCx{l6OKnass}mm`hFeP?~}Q@561)rmK)$O4Ke@x+6vWS(kHuR6lju< zAQOVlb(y`iPa;;m`l(o$p3s|Vj7k0J_PO>b>GLuc$w%wYog3n^mmIh+xQf0G%7{MN zuZ;0a@HXv;ajD`=jjy<#5Lh444XvF_WZ&g6Z)Z2O!*QLL??R7w1g>b)wy3}JCwN8t zcAVsneGE4hg|}5a`x%>9WRxH)_QXXb{4ZtsLBhZfzRI53NaLI>!HL{Ff*daElP3w3 zUZLT=ociFgtpE=!mls}KGW086MeHgjiI0{R4uTsqaeYjIf__`$hr>g5vp zU+AlhX-G-C$N6qm-nrSi-0Rmtb_276f;Md@XJ|B!S+JIDwi(*eB+gHLi|5<*jWL(d zvcdWp`>h19=S&wG2x#)_9g#cYvb%4gj>YU~&D=!vd$<9sJI(MSq;NrjmR zYnfKXJFe==^oNVP{28HKhK95KNB#b=kv!)rC(0*X_Xo;$vhscxP zKdG^7H`aVetmro`mtchd)EZv6tAUg-(p_)ZamRXLz7t29J>RIIx^U!Y_RfkM8fPr# zTKN+8aFK(kLrTL6!cpAg6Rtg{U|22DbIU{5B zi!N`j_LEv-DInj~4~;CN&xt21Gh=#Nbx-c2=AdPCF^hO_n5g#=fV3spTrWbOw+1iI zoNYrWkYbS7rOf%N-Sj(+1dfgT>2WO6Nt;seWuLZ4L&aqgMNSFCNa z2~9NB^We=*Cr{aG6enJ2MJ@Y7H6?0<@KcX_8sYL|Vs;bj2l=(Fv)T}rDNV!!PR@-G zBRQOKMeG%5zKiY~1FYH)oU7%;*DC0y$<@-PWc0e<+@PPXWkKAc;f$*i_K}XnNCjvf zZE&4-h$Z1X^pHP)|5U{zC-;ZZ^DLA47V-@Q`105X9ml;^91j8AOf9LlxfN90xlbbt zv^e0X2}ohj*eL~llDZo#oj1v3i9>a~b_9Nm^RDu4ocCE&>v6dgR`>?7OC|v{)k_3L zHkQP}Px=%c$;apkO`A6cZQh1Z@42|mJ+SF228B9)I|s%}9l4n&_<_!=tuo%9C4br) zqOJzU;SF5Te#}&BDvY@AZ*qaIQ2Zo}utV1#I*hgPZ|ypt|9dw)wHCj_n%T}$#b<=p z7KrbBM>FpIlEM|i7yU8$NifVs$@+Ktnc59bv%>zs0VNHdQCUdrQUCtZ4p-r}j2uk1 z>u3=&x#fzIpx`gTd*2TDHlxT=9q1d{m9LwqQT4u}e%sviucvXsJgwnYKF3AAb&Chz~+NO+TqvS%-NLKdgD55|F*}CL0hEPukqfqeP34I>7vi z`c4PfMZRj1RJ6^tAu?AYhW4;xgP2u!IHyw{i6oto0$$C*#ozfkd1szRr9Lem5ef*u zlxD<<56C8BI`fMap4f&Jr5^0xIucH&HgXS626=o}5%;Z|(srz~5px4|b}33B5v7;k z-mH;pWkaQ8uS6Vuk)0ac5d=_p#7vkIaKqCtJ=TbkT^caX(&Va)hBW&r%s{+J`I*mYjCPpwL!;Hu0(V*GDV z9J^TeD=MS(q5>Cs%q=LoF#O8pMyzYu24z#`kJ{bl*zR%7^AQAWR4JobHH8(5_C7H- z$3~X%qA&~J<*)+S?Y6>_Ia237eqF9`#05Kg{Ty{-F4TMY8GOLdWbW--NePa)Mw}+( zZC_j*+47z)OHbF3wXRc9mVN&Q$aM~xAQl-q(Ls803~=_IlWA-7ECib)t;}o4_?tS;=Cc^1!GDXnQW4>A$Iq?MO(m@i0aT?$_2DD z(GwrPikKYOgllQj|Agbq{rx^C{)8%mc#smKij_1d40b?VY%gG3T(;GU##yloGh$1x zLdSaEqqM%NC#y+VY*GvEZWx**A{+W0zKW)H0ju(o!(G`wl8H%)7}<-dcIB|D^}7YV z-#T79XH8UtS`rH!XxTD3>QXWUvG5N+(WP(NJ|ReCnQBF>R1Na3OP5WaRK9U&ocyM= zBNB0}s=43kMcCD2Q4i@;g%v2Guv5ciShlDpks!Oi-?UtKlB184&2sm0Wt0(Lop$f! z@!OLZy1}}&%j2S&g0s(@GE+iEi2wkd8owvs0D0wm15f2bib#`n11Om>9*pZ>BhLT& zr88oI8l_dGadjl*t1z}gU*8#CA;|fbTOZ6ir)r%lHTdu^Mz)8hb|5AU2_&;FcrbKZ z-WanX?OGq&N)Imir)-I@X^f_`->b=vfb1j}G_i^d8+S@_6U$()=d^&9c&9af^QNm_ z5*Mv3%```ez7^-eucPJ)@Su#uFkz$z~>0D?lrbYJ8QQ26^CmY^hQk3`q z0`I9k6x=u;gM)D>{<`-P<%8Jl7OEb|N=gZk*-RccY(?A*X z@5*VwMS}+tRAHOv&}ghjJG_CfLt89gnBaYISh^NFVvvK9&oo@vOZZdGjHuMvB{Zg%m{r7) z?E(}hCWHYR1P4=z1zoFSB7PF^deSf-W(`)19&xuDP2c%;-AFDyiJ3KV0qjEgl0|by z8EA{cJ^nBD!1A+=0~zB4P(-q`oK&SXWKBgENfjgAuXzAE(XoNTb&XYuDij7z*h##VMB^&}b8<&;6bXOkFtSIHFAelPc5wOG+6$GWC+01xG)ArwXQ2CD$aaS8Cec zcBw57uk8nPao~MV6}cic{7HMl<(*v_j3ycpM_VfnwLH2wnt*u@hU{!^o#sEB*YOdl zaR|nqGx#m97fbE2FL=Vzt~8ER_a` zyaD}OOj-R#)kTbsNr!4_&Mh{Vty}IXa~^+DW&ZE{TcO$L|_gxvQ|2mG4o6N;$Hr8 zUlXZur`cvI3=%Y@sU-kluzw(hq&vC>V@MoZd*cO#VK{8vDSkazKlW-`A~^CWWF67x zhiTmYF`Pmm=Ilu&Hu2wIPAeJP@EcPPaG0Evw3IeLSH$o1G9kxte!~qm|+f9Zxd~F=^kpVPcj>(;kr~L zfEB=!EWtPJm~D@D`#04N(IH2AH`gvrv`lLnR4&tXiOC~Ei>XT|byi~Q9%+!(g0Tym zBUlWWDB%=k%tO%hL&gSHH(a|$+&K|%c@`X&_wfx1?(SdU3r>ObC#!w(byb$3GI(0I*o~}P4iw3*wL755QOFbXX632Dy ztJ%g7-};)xg^Uaf1 z)KkT%(22=e8f)|>iqc_qd~|?@1^gZ1ilB-TErZH_W+Z5U3AR=h(z#ZNQWCZiKR~<( zOKXiw$xK(iO3qlMVBLKEeH(&p>62@J-fZ`UYFX#ifQQE~1(~o@o>L}!a^jBS(u5%| zsI9lmLTNz&cxXa3wIJ&HDOnX7Ne@|l@h>`<#KnQ2Z;90JG3R=hUZ@XR%mh(pBt#NH zm>?!m+geoc1Y(7WT`;)Zg&kf(woj>?H5J7t&tJ)pLft5=54nx@k94Gat7Bd}y7|Px z!}F0egru$1xP}QFKrCh|T#30v3xy0#*8J4q=7C9}N?B124QgsjfotiMvS^KxSu|I> zmQk@m^C=W;MAyzTD?Ls-ZMxO)rX1vP@n@|Q$7KWRJqCOkLg>7E(*j6oK_43Uf4X}A zqjG#o$O$qa?j)>twl;g1J#LLST zq#PBivpN-FR~8vyU}|!WmRr`aBgiUuho{|GEenvTk$wM6JCza%_a8i~KO|af)qZi3 z0j5cq?))}ZxB;JLG7wWPc_KB+4}PbbUnzUFm3L~oB})PsmJaKD+!%Xl6uODL@~@QCQVP)qs7j=j=#Dq&Oh$ z;FpEac(Y1w>)}ZU&grbz7Fi!{XZ0FI_op%ypowkKBoz=>A(*nL8X%?YOFR$KRz^w} zmfs}iAR5!R8H4EIYbR=HEcQkney(eN$j>DNd1T-wC#-&8ovg@!ajyfo97-+K9OGyw z=*!&--wcbaI`NLM|*+OZXcSP57My zVrStENT>#F>83crb|JG8{!&*o(nfYFGjgkkU-Bw#1RIG4TX4{oeSEYOK^0K4rf8`` zQrW?MYvW0=iqE<%bgHLqG_-*(Yvl{)A-00C5o(2gx!oKzQ4;m15fxqr>&V(rTE}iC@C1V>Djw(J8gFEe6d^ z&&dsG3-C`7LjxKVQ1GV!gz-lHXP3R`6Mt=dvfYkVu0vGKrxIiQ_3yZ&?1+Ug4jGSJW%&4Z*cl0hdT)c`UXRY8O? zcTeX`EX&-ql?T(i0(0Ss3569oAEh1zvL7pG9A20tPc>Ihxe>!A?@I?dD>4=Cy~A5k z#!qC;hVPi(B)V~}NYi2QO4{L6sD3X9hn570)V6pP*T{}COtA%NQGmxv_|`{ByRviT zJu@sI2dWWSM?l_4a0&#-bdGlT|>SyaA+9^1t@1ml?f{;J~3J^H}t&sRIab*NZM~Rz*Ku8N`+y&?C zB#7}t@i|@NH$wv3oiU&FEIh&?{330A9#p*mCQi<9zJK;x8p;UK&+8=sAR11gISa9j(EjUf#{hdP=&`tj-Pr3)|_Bg(czGOx#@4^%2 zGG;Itr_!hWg6l5H#j?fsVt$#IA*PBEfHTU)*-?PH=WEySz>45l!S5?2HirVf(Ryn>i3!~2M3r}>Xf(xP~QTs z%Ihay9Z?VW>_-&>k}X8E>n6p;yuEPdx_GlUDz{G4`@VEJGn7_Nys+F;Oz~zh38-Ya z{u7JsAp`jWK{O=TNRWL5egclWhK~k{1pu&d6+bUo?>-y~lMj*EzxYP}X&DV9H30$Y z*-lms12{rr=MFi#J=!?BknehLHyuSJIYPn~*vQ3Zx^SzyeQ^j2m5FNr3AyrgWr>u> zQs}MAa2z5n^n-By@(VdTw*8d`IAlKvnvDC?-RDHf{Pbz4*BXU5VPv9!F*&YchteLf z!tzNp=`P%DwGlM5zox3#dh1;qCaKa#7>bZYX!@KY0!X7VSyU$xLIi|mFu;gV+3mrb zVQ8{KKWj6APuqD>E14%^MQnLW4o65wzh%YO|-r{)2L?X_Ak2)rtvEd zxVWw63^e(BAlGeu*q5!6@b-U7(B9jB9XGz)QHF#;egPGgQ>ZXIXfBaZ)yof9JrI7J zvWw}Ij@5<~1{4H|%0it25**;Iz{K$Z9Hu zR%#7S=LUpkeHlvaHH6}fhRQE~-l_W(S51SfN}tF}zG8qYHUn;Ucf(AW3$xtpS^qDf;Hc6)*L7C7uf^4Tdr zUqM9?Qb}7-F=@qAcY=i-c^8qP4Z)kqA5j*+=DE+%b65^{uh1d^pyYj!f$^P-1)ndw zm6h>Q@^qu8elE=kQ%($tX9c2u*Fgqhh<^e*`K>SRxPXueNfd&x(^}{akGb^KQ=nQj z3qV82EsP|xyrN7taBx}vbqL%LP+!-mx+|DjwROb7 zbP3QC$AeA|=t|L~bfY~j8~tWX$S8uQN2Ax4T-31irOZ7G^r@nz4}OjLc2-1h1cJ8it3hO{z#07Qlc<)H)(K$~0wNvsrR3DAvZmfhF{Z)eQ8+ z${gR(ep5dHQ`4Zy$P4=kP+hI3>(dM)>aHI`$H4faO%!-JRQD>o+G7W~y4S3(>lZNU zZwm6x_NdwJHxQh!5_Xy+$>t|F?U$*M7b(yUZcCnZ)JphUBmuZ(^W~e;>7`CYT#P8S z80ZCkw{!#T)D7d%f1iJ}xo|o`u$D7>F%*x~LXINmICWDX2KN^4VLBjK0=gU!+rdzk zIYM$KGqRqD)Cfu{t@BR^spJIyQ~WfXAEqD-iYRq3&ja^&N2hv)rKU06%zun5l2uVO zIgyk_`j{eXG`pmokr<+$>B4}WM00nSV|DyVLLU(Mk ziB;8}y{m{Qv=vW?VU!%PE1JQF?c(-H_n=*c&#bmqC6@|{LWwF9Z&W7Y$5$pucP>6(SK!P#WV?GBM&@o}qF4gU0K90gL7bX|My47`#LV1?R^OK8%PZVN5c2$cG&A zl|%C((rv-_AHhW6Cay#x5_wBJ;2>g7k`>7AO=8<87isZ(cqbx6SpoICA^uA}wa89; z2E{4viOor0bcf-$=_h%XQT1PwW|0OzR2?4;SRV-lFl;~pNz$8~W_=Wv>*#>>2|5N|>+((^cLy3B zBw~$9Oi0MABTY$?cCtH!q?gIsYeZ`S@>pG;QK+th7BSb&ItrI-QNU7t*tn-8p>`QUjj`49~1wBMK>=T>vJ2}V*b2%r;rALSa^Ghm{nUOBx zM4VNq*8g=7?LP-e{?|c5fzMoC=AKV?Z{-+5g_+B2DcXeKF9EX*g@cJWq8I!84fj}B zmKmr~?lC%N_o$P6FlCX~A#39)u_=ifeHrn4cL7LPG-l+D0>yjlb|{@AO}T1Ru-qv4 zXdQY_+ZP1JKT(%J~yL z9hS3eeZVJXvHV_GeCbC8%J7&PA)y!0JK1cVOZ=AK= z{{Vskra;$$Etb2x+d4s(KK_ABTVT>nUc6Y>alvQYEnVig+Vy9djWIVK8~#G9E!4=z zp}~wsh1pd!7#@$&n0)O$Yb|@?rQGPG+S#!N*O7cAtQ~m?lU&CEI5ZNJq88S9?|nmrre3vn^9yk~b#OtV_D_5YZgCHu z?3ub&MirsIRnCLhbHLCvMMw9XaKx1Dg>Ab+uJ=|+u*P&gE}_=%gSy0peegTrxC(f5 z$}on;iMXrLg@3sqR}<{`UzLH_MDi9(g0uZX&t`9Yn??8=wAfi0oCgexNLec%4>u~^ zx)vX}3+D{w!#5a2D(L&|X@Xd;t}_{)M>7DWze22Qo>T2F9?_0)eDE&wXv5UHs7; zDZxBo#Ivhv+#eHpv1*LnZZ#o|3strP=##W``&11ZyZ{$VzK#`{m%?(S9IEPx~SwQZ-)}Y@;DX?svuHKPSgIuCWoXe01Vxnx^4j;&(64uXN^z2IvsRWjr_*kkOl%oBSR% z`47=So%IAjhLZb=*~4QG`)XEG4HyMtynZfMWRHTEe`< z=S}_<)}I?=vk_SCGq9;Y7-zM9sOd?UBczn=wthpD3xNnjO2BdfphY&&Ep{o&ecDCp-iTX>WR*tCI)#E)r$py{u*k)S)?_AQCb z{tb|%KLZg|=R(6qcxy@fw0iaSVEBnQ%B-yX6kX4so8}r*5T7ojIVCV z3($(`OOw%N+tb4V{;p#0+xGG8y-^h81>pG+KaB#uO@$d6AU);6`oRe_)-G-_qu+r_ z=7d(OU)*%}33fZCMBaD6qIF#B`w37K{X5wXWEnsW+-)>PxCej5UEqX z1iBsogKZuFh{d>zOFq_+AZ|ac&kv%H+B0GyLg?1-M`SigD+ssHkmNC?0>$A}BZ8l( z>K9_3v%rpYRT%6l)?fr3NHSKsZw-il6hU9R?(@V)?+w&iaYqUp@$yh>d>57Zt+f#E^XjmdR2Y3>tYzdv#Uiagwb zJKR>@sR2^efk#dna$nxo9dP*7s-&mj^VSTq_MQN3JSf^}?QvrgFg0CN{SzZa^ z29usr%<$=8;OLeh-niZ%+vX{CGb@H2dyo|R@lZ-fHB$IJfX65S^U&suqF%0@NMb4B zZ(=gE;&ASu@GF#`|I+q1X+60wTuMTZ2E;@#U&^e6MC*E`a~|LJC9|9gK&4z?E#8!C z!m@z6lZF46uTV>Ddb9YOb}2SFJ&^}YIkba*$|B0iY6aVJ19s45OH=}Ryc%6cey1o- zo5)7OsTLzp?O6eD8-!4tQ1Z?U_52Y4$0-AqcbEqgwx;>w9WthT=vrUSi^EL$h-hzc z^d!cvV4R@$y&zP#`=ii^qGvW+yj;n3S{fq+*RjAcrw)Ehd~fh1?}At`cDUZ#?56BV zFYndi8GbohDpiykaX{6KWj4+6lNjuNCh^b`{lSL8A~h(5gaA9>hL})<*h=}r($(qx z&RI0kY`1sWsCwJ|noZZJIf{j%XA!o@NyZ`1Xc#I_PSt_rB?adryPTb>u>Fk1p{&B6 z$i<2BFFCYXX(yjEJWRfPf!Ab~*+qc8ft?))W{Ko~LVitG%%z-;oB)a}0yeVKn?K7cMsdEPZR4)pDB z4bdPIB*a&7PA?Y9{Lb(LPBROaC+$HO_W6u@$9%-QvUqty&&nu0gk&1V4ot{k{hU_q z++Wcs6^jMUqqS}20CO($csT*A<%8=d+9-m43Zn^FkJfq^z1KrJ`m0pSM$=}7lY^s1 zYu>=T#QwWn7{A`Aw80+V7pG%&=s>~1=c9*PdT4jeqD>WeI4WzQZU!Z~Kg^38@ z*OAXCsyVkQ7Gvj=8C_TCHxRtYW6HQC#T&qDOhKup8I=(%ecxy95Su?Hj%9K{3^l6D z9xfDIC@HNw+4dBcu{I^=2yK6_U|Ps1`!4&8Jgbz$&d@b|E@cOfJf3kAec}XqjwXt! zw(FT8c^{kn6P%8JQOR?%ny)hHSSTvOi+3pQA+`dG|7Odx{In`aSW}y*(c?R6J2Ky| zLNS2Khi@?}u2}=y8>ObE)PP>TT}8$!{v|F37LQ|vTHf#iBRGvWnEVQ8DPn4VO_KD>qOV0_4e_Th=7N(pRwkp zMF9P}Jf%n)^t~t1#RuLI0{!4(vl}e}wY;1)2%JBUh@Zi9A%eA&)_{4Wn(PT-10D<) z#i3J&K)?(lRL(=gWMOCJP1lm|Qg zVg{B?>F~%w%9{T>3;Q3H)hhF*21bL-d5W&eXCL5A=B{Sq43}o}8w9Ab=|=!ogO~}R zMOTKV=a$42lE;V%{>RYjeC>uTVn=tT1wtGWF0!v(Z8_PsVhr8pyh61Yov-fh@!0NSd9*JnJVlmI@7xzlKen>z%ybFGF}#2(dKucW zc&bJcufLq=>xnJqH;^x>!Xu`PDWR?343cV|Xw?h~cazxy9eiI*N+?3|8K((ck9-tj z&4jywH2tiHe+-6cr@ALbQR>^^s|l`i2kpV%MeL4M(sdTnXAZ4WsBJiwR&WuOKiyjQ zuxN_b%Tz!+iJ7!zRMCkvNuem^rZG`CT#sxx+m{bCh(%W2=)oPNl6T0!jl|+L>G~*K}U01G8 zyXX>cL|we`-IJUX3AUKf)CRhDmFoC8AJy`kO2p|-R=j~?`79|ZSCoEg(vL7>?wq|PtM>I-en??kOp?~|qVGN=h&5+%x1LAu9p z{>%{%+lAaQ-o9zLf|9NaEQcg7U*;wP!Ok-;M81SEG$Ev`&n{17{(3-8itPBIrA} z%qLK>Vn6$L6Z$m`xJ_GgqHP=m-Ml)I%B7N>Ikqh~?bq4BWG7aVf5*`YF4gph6LK;@ z9WPj-*wm=}0#AKhY3_i|FtZV-4VY^&f+IRxo*^;@e)!W~pY|22GKma^8(CASMv9sp z=dt84<$cgeoj7O ze*0Bk2O-hQvYAEo7Zd;cE+0jCI%7E=n>61%Zl-Os9Crl+fk{E8KB zOF_T;##2a2ctBMe6pzLz()g%H`dXNkngePV0SWZPRfq+8RB6ML&f~;^Cfb`TXd)fC z3fGVfUgvK#Fbu-cxbT#!y}Qpr(^_2#*cZ{-^|p3ttK;H_NAW+9?dqA>{5g;6Q&2DB z!PrWrD;46PfbzCQqS_cgL4XtW)$88&&aVlfSS(Vg35=WzA+=odZyc|7>0sQvqaQbJ zwvh+ChWKZ0vD)uCq-7ZVLE5Kek4!l1u$ioQ%vElT^=+Yoz&4A~p6bx{xiHp6uj$Ko zct7GTp2sebe)t=(*mSx@f86y2`U>{fcx`Ti^N$>-J&=;R$;g+D+DYgddr4F7f#_KF zC4H-4ohZpBEDoa3c>n1q;^=69fw&%{_tik=l@QLp2#h$pTNdA(&Z~|poAj3?)BfQ} zkgUQSi5L^ny{XcbNr@4y`44Ri6g5_!5#lx2EbX5hay!^V7+7mbg{VI;4#|)CLuELO-`lkvV;cHFvaWqemmv{S+$q>&{j(z}=Ek1km5ZA8(QwMD-(0uR zeMiQiGx=fasYjwtjAW_FWj5c8>T*{1vA~?{7a1tXu)n|_x9cgZp;%d@nS5g10hx;y z6Ki}{-bEDf@w8ra2gc)NcTa$5|@vbEU2mVGyt0$=yCM2vh?$@gLe zqTB1pptqGrhM@gv|MzUrw3WDCs>66~=;NO@Y+!km``FO<8V+T!>(yW;_{9jsiWG8H z^-p&e8E(cF@!Zk0xY#BQ;9AWcMoZMYjcZyUb+jD&hOuf67)_I!q>-TQJ}%pHG#?RtijIP z8a1KJvn0CKZ-G6wW$PGcj!91D;rRU|LR&^~?ij<6d95!zuZHqQJ2avob?PM$XSTed zrs_DJAcd)&Zu~sDT`ppU$K1!7bH(IO@1O%cAT85}dGYTt6!3Y&Ai`&}S|cl{REUfY zgAuH$1mH9e*H0|pV5gx4?0awR>nzQgn)`7S6!Fh&?YtrGfJT?_ujUFzWsPry;x>BS z20C42YVN|mZ-%(Jt^jys0!W`8Q3dq~FYgR^Ci`0VU6^)$xGxrXw;^d{mHMz+rh&@bcu8oNR<%x9$BsPaHsz@9w+vi!)z8`rq4$PbYuZRwop96g0oNjONWK zK;$w+KR73RxYdz%9SI)+2%3h^~dTy zPu+DKZ1`agf_(2_|G2&X|2+A9jmSDjFXEF z?#}x7?|qadZu!0ckWVPDU8AYgagea-?Sl2EVN`qYxaFV(@VHO)F-K`S@wYms9*7OaJ zh2Mtm!J#+76 zG7#3}u$Npjj!YDtP^1N(&6zXN><$=~?fEmfVCzrslbH7TVNQ#i-*QwoP&hp!iG3pO zS6RtpiRfk*^Ollim*`YMxj$W>@F@WX;7JP|xo3Eppywm|nW;Bu>U2yVM!*I_q>X_X znQwPZ2DN^-@70S#G3-SFx6VH|SpoXkKEAg6NNn~1C+qI;fpUIuv#tisg; z11OqNX#0pA=G7zkgji#!sO*B8f~otj(YqBK1cCiCB{G?4WmxdhJ+M-m{#+%5YhYk~ zf?1WK`o-IA3Gi=T4#2C~qV@&=j~Y04=%rZe@@8*2K1+w6h8L8#GdlryTq618EsT95 zl?&LVwJ-b2J~YB(Ah-oPS5OdORHKI1poAKFmyTnl-}nZ?@h@NlM_dhbquVHbxQQq^ zd9+l3Ymu(xQeYwn9#0(9#xl0UG~5iB568OXKRJ4($n%fIE_NY`S0B@;kX;=_*S zRZ-d_MPS5N`O{;_B`}LP8djgJafNA87Da8GIlZuPACB%!3mXyn^fj>@p;E#74<3YV zLN}|Ahq5@Jc&CK&(B6aLA%65gLdiUBw0%iyx#ZiQ-(X2n;rk}K^N;?w*aYD3Cc zuv>Ha!1N+b!(Jam<6viXL82g0WL=E7Pi!<4Tmr!&9PNwMoP;UPu$T*L=gkv3@ zHsAu^`XFp*j>aJZ3ZN}~jPxb~^VFM2M_?o-h~N*rM~APgZR8o)FEi$=y9uJtDP!{Q z!G=9{&>+S9&K_ONPZ-D)D<%%tC()Zq+4GoeD=>>NqhpDVytVqklubGBofu;$hlD7; zEvK8y&fT~QTI{0EpgRmb$gf>!ssG+b9x(ZJ@gYceuFe>#(e|oKupdTDm+HZRy5bx; zXg&q|%cYc8=0pe80LsGmQ4^Y0ruVvK2Nt8h!lo*w7oqzIMsjIyF7IaEg>>0A<^6f~ z;a>fS^`6S{2vW_hYb)P8^fFP7YIxe_M7+|m{@r}dm|5N%jWpirASqWEwCJ6#o#mT6 z*s^w7xY7;9%fZ}Q7_zP!?v9)Ll$DGkEhEM>1KHW^*81ac2%@8t7YFlNwHP}_B?Of` zA7V(Ew4r2HysiwzJA!MIbXx}wf>SYtfZAKHscoOs=A7~+C!ueTi*}-3@leSw zq=^Rb$A{)%7Ghh~rmf+xGOhYPwm9E+xvnu|dXd;Dbo@Xb`F3Pua)of$mgrxmjy3#A}YTMmzDGu)gWpBC34R z_Bc%MI%&w&9mT7bEw)O?=`}t~>We~HlLMfUzvKfmfVF2T!{yFANnc{fGQ*e0*nPzI zpgIx@=R}V5SFz7lZ|>#mW@AzE*u3}m`{unFnl9>}JKm|n+tc#X$gHJ@pXbjo6yZg1 zIP54$#s0jOH`*U;O)AvduGM?V)1Ek_TY#?FQ6kSuelGEKZZ)dq4M9Q_u6nk-f_F=L zS6vvKoNpkCi%Gv;u`r=gq6#TfLMx!pHQa4)j#p7x$I=(gr2CAKV(hHHbT=J+*o$nD z7Av{&X!q-OwyEDFyAmftZi+R+$~!|0wWQ>`-C)<;X1>*?HNlv64R-3sML-RB%x&jz zE+#%QN2{&@{1McinFtzk)py-ywKor1$9NKYurI(EpmGeHsVH>3+w`xLU(w#TuZfjb z1l65XOp}b|e}$lK;2QVOrG6W^1qrPgducQDJF&uT8yh~2)1%r;=yR1M@oB$k+2Ix- zoK04(GleiLojo(MEbu}xaOzYu^Zz9Vz44GMYk5s~EDwZYPB72!Hm;Txh{5xRXkCfz zl|&f^X26}PI1zkY;al0_gvodwr)C=SVbiDzl>3fa`TSekpB6o*P;rZ4I5veor{|#+ycD~iQ?C+WS ztYZb8=&FMY9)tO8q(HS+9w7%Ac&%={CgE5npqQs~>l?S*kxdw{%BOn&0SX%AWm5#n z185eS$f4;$_zHsnH zFGSA*4s}jVyu5KeyEV2f%COD4FJM`FRuo~O?mW~9dCS_tU$8u>1-2Vzs21%%%8o)? z?FI?+Bpq9u3Ub$*EaLGr{J~3e*-fQjsum?nzg!2|hm`lA2`QZw3VBkDMGQrPo|jv3 z=+b&Jf7rp><4+NfL_CyuGg+^N;R|x@v#e z?a>bvWAN#xE4UAU_qI(dNr!&_rV`dGt$wpof#>25tbz_8{0MEgu2M8L<>*;TXWj5L z{(_)FdatNq2u=WcE!!$-ibLw$BioI$Ss)|q*=olVw2AillW!171DZKJ+Kf@iCZ)%+ zm*qQx#o&@icQ`_a`kyNEe43Z%w}xiV$r~WL>X4VH;RR z(cSZhM9NsO%$91)k}d7EgLMp3JP`J8-vGF3b0}gR)kM*0n|xzv_6IcLGSKktEHo67 zyZCZoms$(rDO)CkH3PLSEKP5rToVNXdivz;ONA+D>FZ!%=<}*_O6xnqxMxG}Sizs^ zu%(k#NO6~zgt47^k$5(PF^Z`L%QX=3eKKId5yu>8aR*l*?WbQ>4jJIW0R?B@+FGm% z{jYk?ts6+SRdILc-g8%u5oX$NdkjIm#KX_Lj}Ct^U|C*Xa{DS2iBwPbF3za$lIPDK zpz9+vtHC#u8cJlnf13yn+}R$Jf@}5tedqNX2hutYVh#j5ZLfHI6$q>ETlFe{0>Nv1 z9T%9oId8PTFu&V~#(9EV<^rqC>=NlIf$vs!iCgxOkfzWqh!?>e4rKKDcp zPEUhHl+Ye?R!iw?9dWdEY(2}A_t-FCIw^0ycMzbWgT`ZQFi<_EpWfl1-HX=m(MOe+ z5f!zIVI0KFE)ROKR=E2%L2=VGx|9|3>w2^a<2LHO7Pl4UUq1c+XH%B`^W1-d*zn|l zI*7ZQ#MUIk)SImk^cvhID9&HNLWCJGKt`)`iRDvRvmG~#3)aaMR>>di0iwZ05fZfU zBE}B|GWF>7xmAoG^0s&nz{%^11eXxE-Kt+1-+A!P@#6lI(YF+G*$ zzogb*t$>YJkdzWcCol}^Pt`vnX)>_IJ8*8NlK3P_Km5KXve>M8J(;WI$-d9Z-u*yI z{%66!=>Hb{U(7W;wMJtKb(w%89*k$;M~yYv&R}R83XwpCo>X<7JBFPoMCJw0--r$* z6CVPp(!zqhi1-+8h}8L677+4byTs^d4XLK=FcN1+<7f+$i#X`HlO+x?yr3$OcQIu0 zI+sC?IE%t*<-Ys=A5CthY*tT5LA<;&*`LnJf!OML2@RuNoCqIk?}~fOe>k)964f-!ZI*M+}VesW})O8%!DxJTBH+n zND;&x3z?SIzuhDF5g=vxmkh;q?Tltls6tR3iRdsRe7?H#*&tkPO}4t_+LbTwV~k@uYOT!N0YQ7BjNVK|HIQeutyed zZMPNMwr#s(+qTiM)fL<9*tU~S(y?tD9ozb{_c{Ch1FN1jue#QnRr8)>{Ft3x9|bO| z+vKI&+g6<%{7P7iKy`I$Rq^puTX*<3)NzXIq#$5GS@8_4>a`6x3f|#@Kc$P}vBtYt zzss50vzQ>K&?P@%i)n@;xHN{Oq|{M!XGhO)jk?5_T_J93X67;aac1}uOMwr?uho^= z1@_~$S=1UQJT9XBryAyC={Q&5aF~-TS3@>f%(clE-KpCb{sWUL`QF0T`V(ffqoEu# zKU9M(>GTQOKmv2kJnpIx$R>&01P}l;Y}4abW(|L{+AtUUTuw1>?}=A#gjy; z8BPI8S}4B46zVs4j-B&28J2|%bVr(fLqxJ#`-y-o;km_HB<3$pN8vJUSeDmX3FWcZ z=wU9xj|`qgKEni8?~SEw-_v>$vP_iy^9zw*hOYPOq%a`sR`@=2lsAD+nX~Au__kUalYR;uzx!{l zdmF$xZd;L$9bq3~C}wwDx`tG=@3zhZL~RmCrXn5t4G~}b!brT)536G&P4m*j*|)+t z%Jo;$5u~Vr2!BFbw$q^cmx)`WbO!DXn|gFH$5*m~-EFuI-A)q)R+StuLwW>{QK{wiEzvn*83~bC~%B1dH{;4=g&f%Dv=Oj|;?BNa3 zo@4Y6%5|4V-!1+@;bE)X1VMcfr&&cWbz6m3Rav1h{G_2=MenpojNzL*&aBFu(6HY} z5_|B_IJ70#H1)tRu>AQE;m`U4uI1cAu%$hqrbfY@I5w#P;gO(?mX(_Fs3^!#Q?B=< zjk>RQ1PbmFLFa*A*KqJ56;1QFze0&5d||z1vSa}VbkX=`2+~G&Uu4}1nuxjS4dk*D zqM$}%rp*jOvF+(G{X(97u>a;23>GJu6tD%$@ue13(J`=Kp%&BALc26j3v{))wHYr>R^^GZGtc1Q+ce*;|8d(djc)$; z7p#GDrM+MF{qgN&l}0k1jfj_u8@;Q14o|fdH+e-q=|Y505gEPshdxDDUZN?7Iz)hM z4@5?I%R-?QHZxFz8cbU(P6>@C>041-LuQK3U#vGS9gLlFhyedaddCWz0dHxp3?M~y zXHJ6c!ZGSbNI8}c!bpiNgabOK0-n|&&S#yqisRVudk)5%J7t!<jZPDF2R3);SLi^8-vAdMnix_ zDhGIkd)`FPzgj?`pJc*`hh~0Jyi6h@E7?q>zJ+Bt|Jkxt>BoS2m-=d*)_A`q&x|Tb zKQvm7MBW!Yf`g$6D-9xNFmj5%{%F;LficjEAUE4xDcgIFCvQ1@-(-x7h0-hfGoqq| z0WjZ!UJ}mJILN*lustBC8!;=nO)`_mN7Ts>^e3FQQs0M&l^YsrY@}pBErnT6WDy=P z&^`90a{Hl@nZ`#1%g9lBj&2iy$!uKDEvJ3p|fJ)ZM^*-G+VMkY`g-Up_vp0tX%jZJ^#t zz9fIuz0ColR!R0|(*7P=622lNJg%G1@%NNKv-jn;YTc*GoA@YCs3}Af3_q4DP1693 zOs_$tW&(6E76PnTxU{iKE_sk713rdOjCp+ujvK$-60m=fif85$ZX$7Y%T|XURMS!i z(@8G-G6^;mhmzRNIwOSG*fz)DoI^A*oDaZbC~FctfyGKZ0v*U*-;g5l07l2K$fEKC zMw+Ji9ESYzzz&X;xhDv}S((q;fL0<>p1NF4sD~W@au(7L1NFy#c5&m!qL8=w7%hIf z#IOZheL7Bm3pJXpg$Wah+@zegO}G|bLWp*(HcZnhPW)i1B$WbHdxQL@UX7L7B7I~O z=qZ%sb?}r6-`jTC3F874Pi4Jv3Q&@ForI|0w47{-{X!iM=~+R9XKTJH|h zKp_DXvrtQMb{DN*1Plwr2C^*q04&1w**DI_7$&{R{cb#`2Q599q;aqgdaRxfkx|l( zatZXnkbEPekP6bgS+5|?w)MP3RiQUx!apI&6~j@#uU8SBnRZ!(Yn4Fn)?7nHvDkOm znHRZJ`nSAv`wY4xU4WU!(5rClL{0+OR1hy@qL&D09}CM3FM``ARLl93O*&AI;9wll z$qeL>Uw@GD#D14~g4c|oPs&<4k6|Y@V5RTej#ykg;4ckF?R(FgR!F& z0x46pb^E9(@xg=En>Z0C?Puim{TlcvPJj|+L5@a+hGm14X;9Cr1kDrkcK=hJLj2ZL zOr7O%AA_7jFR|_>ghCVy+xn*zY&H~vlwKuzfnyKa5(~Q>i3dxhb)Xb6mUPZe)_f@5 zil-eu^5R;`(*4_=9!nP4iY4~IUj#&vxR0b|(F3Y@PILb?5BFT0o(MGYh^MMLB# zmI+_+t~h#8EI35SgK&TQNC>2u#rpj;mAQ1Jzo(y^wPXk9Q!H(W$Lpgf=%Pec(f-DX!n>%H02TQKDrQl9NB9N!}X4IdtAln)^J z)`fxy(*h8-Sc33A{CORgWb4x9DJ!NbqIf6yn)+WF{1M;6Uw=Yy!?NKW1GowSAwz+6 zQq*~niJvLXv=P#y5^@nUmGIcDzYr{uek}d`uJXcAd3?8Nm z>~nm~3s_sNq%4oeWLeOG7i#<=SNe9^aP?bwUE2H%%69d`Lztz0_V6@vULvLkQ%l1M-S> z8ZTbH9qm_Fec8UYyI8p(~0eLy9y7a!fq3mRf?{mTI7$o8)<-V^#%E<+q22T^-Q<=%pKQeqw@$NH3y%7AYy3^s z|8?VU7DztvS9{SGTW2MYU^5ToOnB7P&A{rBR2e##nLs)a@s~(?zzfyS<)FkT%%*W~ zu7pMFe~fzRJcC0y4HEU#m8niTq%?;adu?#!X91-9)%_JAH_(L?8pNx1=sYU0A=FS{@Z(3z`i`DkYHcf@n{)cn z1?`k=VOfK{NioN^j90j|UM{ujxTkvc)_rwyFm)IhGw{gy(4nZxuHMR^@yEr9>??LxN>gjL^W#s`zndm8q40`sn>{|?C?Sgc z@ZkJj6mn5IaVv`ykUuf>0G-~R590cBX;!n2Gxk(tpG5m~d^%3*aG?z zVH76KaMJk<*3EX&L1ytLijh=u>hwusnTU$`_f0zjVb#yv>DoMeT&jLomIN?AYiavSEA=NS>a9SyK?BQs14V?Q z0aoDO>8o*xBBJWo0fD(64wXZByZug{ingMt0S)QIGD4E@KeLg+Q7`yE3fb z_Pha!EjWI&suUw9Q$U5oS24VI`1Z_ahb>(hEuOZBkGfZIL9IGzJhRhpB#=5rahymX zb9_+%DaH9+LF^*(q7^bCb-P;JGdQTbck95h(X0h!0542>H=cU3wUS~Lf9v{{P0wiS zeDrUpqiBwr|p~EfIzj4#LA)D zXR6IWb1%8hYtw>S=@kA()lIG24b|;4A1LyFEUQ3#`~x9D8I}{bUzteKo*6>X<5?#O zlG>B&gQy%Kq>K0o_?K@2RLRjirYd>`&L`fSNIs|lC18GDpU`h7b$fapWXgQ!a-wT! z@ICaUrb9F^Q^y`pS4gK_|02b*fY?M3r#OHk7#mt}wJ^Z7Xyy$^Qf^}QQ!+gnGB(kt zDESo;KDjn_t-tKWL*xTI+u`xA7Hy5zpq=w^*!E-GY%nLwtl}LV$mxHG6$NPGrUe7U z^EOLifg-l-YN$Xx2}QgIptKwbZUp%}397$F7*h`kVRH9aZMGXb%DkY+=_ZT=&|bSm z`jPwoXv-Dz{M+k+H-LJR02S)7mI*FckFGk=@zn_;X zS0ubb9k+bLb`qYwQy}Zyp=VreAkLV<02mJf>fv^`{wjGTPCrPdho!>DyId(D;R-}t zGEN-FTBI5AX`($lT(o+1-LNE=;^#Fba>R^KZ3?( zhBvwhtyjF6n=5EBs_vqrGw;4uC3GIWT>0%BOr2xtxO9M*5*EfGy2cobHJW{il0=rd z`R?VNS33==*8By3W86wq-#?A2-*Sbj!sFNW4v0)97SG*z6qs?``t{B)Rxubkb2{|0 zS%GRnm=%)5^u$B2^^j;VIR3^4%AKa#Nc)7WS;`e9iHpi7egkOw4^KAX^k*dSJz$AhcwOd5Rm<(mbhL!#lpLRs^Lz$_Rg zm?(nWlw8F(1_>YKRxM~wB!dNd#Ba0E76L4HJqvrhfN#^W{S|i-fmyYXgaIyAIH2u_amSCrcG4piEMA`;SoNJZ%g3m5mM8FP%4L}S%Bct(ECk&f z7*Lqvh(}UjnLeHCVwZ(6O@SqU-lIKubYOn=6Yj~RYFwtqBVBK|9QS4%zfOM&K;vaP z=F+~XTu;ly6Y{!$$j>SPs%C%7uU`Z5&3%$!N-8p%DUlXd_UJR{Q^iJVXc4 zM!0`c=ml(p{K+vpa1;uFwTHgOO>T71vKU4pyr>Ee+l&zwe zN=m(H`P%uMrg*k@hy+4cBq#J59Ag=}-Vrfhg!~Y0NoI&#eN=eLELuvDRX2A}@E#A6 z^^3`sf%}b!`ctxbRuE?TCT=I;Qvm|Kof zuDGKC|K=4%ydRj<3_1D2xTtH&?yRnOJXhyQsC?$+ywseiB5XP5b5ekUwG|aG)lmZS zyivEn&v)>tNPC;OV5(7-WI-HQP1u_V@i6|k-umV*QwKuEAB-esa;(t&OkD$$FJSlt zu}>GZ5Ko~P0iAbQi|ktE7jWU=*jTT(zrBr6-2S#s8%k{`xTrjVF^JNm^kbk zO+k%py%u~Dij=27y&#h+Way3M7eDQ%UrJF_@k%H9$%6Q65`OPsuTTg#kQ10BJI=0B zUyoo{wk%>T96rKJ&qwg6tVF{j^~~OVyGD#6TxOrL=GpirZ3!o}rjr&_%Um72CjOke;p7^l8gBm3;>BBG+NM+FcA7CRQyewOGH~jJpm>Z#2kN9s&A*E>K@etmTPxSeY46XWEEd-kFkw?zX z&h*}q`kupCCb*_W-*%muT@IT^Yre>q^=Q7fdkS1ZgNt@?5B^EeqhD_}!>a=zKy1=W zw2%xoO^2jG=cJyiU@zhOGQ#SnRQ~{|v27w=GRHILeA(ZU#`himi2oj1sex1_#QV#9cPNgsmU)tCw$DchswN*{wab~;w)2?9PMU6LVu3)j{Cdu1+_l=etdlI zUSnGadV@IUO&UFW+7_gqYNZtSt0e!e*x7MI1t+c6G6Kx@ReuC&h$yb85j}nPH|+8T z;foB9j!IlOcy$G21O`Y;!Ocwwj0*Zo*8E#15Q2U+i!e#8`)9U}mTV zD|q7l!1G}+u85xz^RSfN{+~a=tgYp0llke^|1^4}l^hcS`&CF)0VyoOu;?iA{ZI2- z&yO=vrLkYEQZMUEwTLx4{Z38#HufJbH0Qpz9%x$Tzgx*L?#I@0w>it9_NLU>y37yW zSzbM5PDax8S#x=qg$PJ+k*d-h0PxKP$YG?c@gkU(_B{HL^*HVTRN!nYLi~1Ff74zY zN_WP1hLrGw40!gW9Y+tfInoo?iqU_)_2 z5iZxlp&n{9`~YrzvRQz_8T{!y3V5TYM!Eh;<0R&2)SMO{K(n}Pj5Zx}3m~#mApyHM zNuOYUy4LX*o&HLec@frB{4u-L#DRH%jAzw3h0e_dfsMh@Xyq;ff5@a~9PXXkTjbBx zzJDm(mV4d-va&6QqAZAn(j8fSgCd`qhSnwvqeubJXvB?`IFjJh(oaPU5C~ly6o+=w zzsW7zZgt-D2L-hE9fXqrd1`QOqhw2F`?nA`UdOG$-RzTj1A&T$x?~8!A{K^G7fyPu9)JlN6>-Lz4-q-5cL1 zB8l6Td`YLp3fA-p1SF^+sr&D>oh8rNS3`;R@Qx@QPeKzf!)wYpDu0+%tp zuNw*h6=p>HK=MSTBUrVt<+*#DuB}>Vcw8BiQF(pZt;-cA^7~sWsdytzkaW#7nQoAW;JDrnQ@%4C)c7>gsdLw z^|UZ=Os4oV%@>%Z1>dJg)tuojN`@l-M-R~Yc&y{$;pZ9sNw_6~7pJUVFmzpQy7b0k zS{qb$d6)`~lHY62)-p;50u}R9GiBcqrrcQ|&>949TfXKY9um4xuNewrL@i(}&#~_O zSJo9@jUuS6fk2f)_RBVNR|l^1JzBNLFk=%^41!(`+KjxoCc5T=UFSyfn(|66`&4cu@ zF4T!|G%o8ZjK{nAP^Q%7+19@vw zD>ccRj(Y}8wdJ4JBgNXceqsP8E$*{gTvDjr>+Dd%>r-ZS6!Lzopihdp{;iU7ZtT{6 zG;OJAVeVR^7zO_cs0nk8m?2eh#@gB~1)-rdUBn~vDHrZTJk<|U0`Q2)!J zzeIGLS`?X&_jUuBHnIT-xbQh#*d$YY+R?}9((BX>(D=-3Ft z+z#`p=OgM?8Z`IK@?hNBFo=V_-yQeH+=%;V-qSI$(b4DD1vaI1_{vuuiQ=4q^No|o z6XG<$7mrZh`+@`ZFy>ET#=8$k)nWJE1Sr&nf4tH$^c4-faZu90Utp5#m~#mR2w zL>q5`-MlMsmBN4j;Xy?3Ontb6d|eQCg70E+l4H+CI+Kb@7>yb-az{BP4$tk!zA?vh z%6AEjcVcM}V zgZmQroT5AB;yd_W>5cF}!p<5il8ka{c95S%t;IJAS$Y+MVuO}>lR-P6b?IQ8mdA^c zJs|y47j!j~;xZ2rWw*?ih^5D9e#D>!{A_xB3kwOIe?6b!a=f{){k#?irV&PEg=_Mr z4%u(YN}(FPa>;)<@Jq@=Em-Er{k&Y*YnBJyi$%>8?2mQ^f&~2ENx#D`kU0N6Y0Fhi z8h49O-6!Zmuwv0gw(E+dJi&{3qWRY261*c=U(1JgZ$aQe5k?%$n)~=~r5gDf9F9Ak z8^n}TJ}-CqH#q(-<>BC%uYJP6lu>I3AQ~yBpU|{Oa1EA64Mj>ix@f#7HX`D6xTa}^ zK+MZ8y6{zmQJyg!vN5w@JZ(d z-<%cn_jow!|2sL$|FqYLcyK^~kQD6n#T1+p^eiY`q*U4qeqF@ETHaUU(NlYek&J4~ z902D3lYxFeUDe*<-Q1<-91pIlTN_3USEoe(R_j2x^9`ihzQe1o0$0VBl4WDb!c zWp@xov#5SFa{G*j8dlH9nd9jf|9Vim_C#a@PzLSrB7L0HT2bvMCWtBCeDIOccr^-I#0np3Jf7*2f00ClN-T+^pRc z*NFa2T+rr*r~Max`;fg#!jAJc@TR5*+kPGHj1}9wy0Sz_tlm5K^W~2}xlUVmW&^Jq z!gD~@_|idNP=PadIlN8w{%b;7)0eV!XajR!7y}%=$@&`kl@dk@$-xn-_{M3|+^#z% zErP+lhHPsEzXZKVR#{EbTWE9&%?Eq46paP3HCqg*9I}ZyQ)y@5*X+8W_>t#mfBuv* zTHqLwUcyCm@cS!a1TB@dcb4Y6Vl_QGcP0GzC>*epuC8`IW># zUBJFm9L$T>;TfyZqBj`xXDn{l&5tm#yi%qyS+MLqpAC;n+CfOHR;5n9mKxW)+;Ukp zXg_B7?&%)g`zs)#6>^AM(GTwlx)a)UySy_X-@7-B1Q6fww%b~?PDDw>t4`XZdI-x= z{neVCTCxXEkzat4aVE04ku@Z}py(G}ur@z3 zak&W+5`*z|_fG>ZwqhF($O~jd6@F);?!3VC#Y{MJ^Xr{7j*+N-pB13v9sY*NU_0%N z`rUVI*#@V%qo4h;H*E7sWr!ooZtz^Vppf`S@_juleC$wHI+L@}E|ZyMfRKEMS>Jo6 z@&MY_P7ogo_=@ zg5xpvZQovn=B3-jA;zQieR*-OVEkdWrEu$48}Z&C5Kn>R-P*Z5 z%cu8P zA7`oW)3bX8L>Hi!OPXn&M7UO}epC*|Y8o{&W-oxuhe=|zt-j*tXMQ@~_UuJWFbG~t z&FTS6dj5NR-|r7-zyH~dL3jsLq4kM^kvvim3cFy_uKlm0&jE`K;7z{ z1`KU}ThS`dnb&3U11-1*nk*->A=@ls%1V9Iwkg?%qi;|b=0XxlhHtnk?=E!5av#`h zn&E^CH<@Fj`dUwky7w75mnTH z1p_?JNlTv(bcmK_5X@-Q-LU-J6*rDev0MJI@f3&ZX@KKde?m%RT;0i2I#XUpGYa{5 zLjEA?F^^ZCDoq4*FAN)?9NB?NZBzlJORJX%6%z%@4Sk@|supayFN3K}hK^t^-XQ3- zsHiK_Y_O7Y|Fmo=baI2GY33yuOxZ^fn0D)fzO`b4pd?oW5X~{cRym!FC5C%g6 zsH%w{-cl_7^Rky1TpoTVf7I9$5^iR?CK&OgyFGPrTkaB}P8_r3n*V46z#m<$C?*P2i>% z3SKG)I#$KxH9hgJIwx7D2lla&qHps> z(r2@A&IBYVvYcnhLs6NSP zM%0Syw5}qE)zJbM5y5^jwe~fQFSXsD4_|t~mdHMMEYhzySKS?M`9(k(aRM5W*DA1G z&r12V$1L;!6nx^~aK&IZ&2aJZ*7QVHH!70K1SJjs8zw*214xx#rD_)j9q)qZ*3dUP z&4wv55FXgtLsnvN0sqqI51Ct_o!OJYNi>W-!&igx`FFB*`1HYGbZMiUBN%@s_6Z8b zmkAbDG5B-Djd}H@R-bBDot$pxSyrEabK8Xv|+0hY1?ewhCG zh-ETp9jSjuIDLQjht))B`1S0TnQn+@y|zex~u#I(J5ejV;tN@_QbaO`~82Ahsu z=0q!-nU)HVi|<;MNL7S5PEgcd1|-B!`*oN#LS-o2c9QDbx}*c+g-=85s|S^o8lPAG z<)2+e_}M=vMXRay`pOs9H<2`wQF_9Mi1=U47EjmuTla#TN<(83*<(4nNKp?RlIr+r zdJ4-ii|u{`8srTv172(xw1e0PF)8&8dE&J?^h)g8yBvElP1TZln|xD)L(ZY1BV9keuc1$$jE zZh1c60a^PR&22czyQFCW#O%iw}OO9QG8XqyQv4xjp4j|0S9$-Vm@B1 zk(HAq(gVF#rV-egEp)+LG#k%pa)~;41~Q4&^ggnNse{p>iq?l;v%Lnh(rAg4EfNAs z7k>6{#XFR~=4LHTwIOKVeCT=?drxEN`oi|@PDGY@gQG9SWO}_~u>erJm`635=l1-Q zRQBzwn6Ie_PNnn>TR>Kka?pUn0P&7Hi%&ji)l)f4rVTua7^6DPgG*0|lKs>{@e{r( z9Mr%1?up&ewX~D4Vj`gRtTnYwE%5beAha{tLeLY7GYP4vJr%4AZK8kc46q*q>55b9 zT@Psgjk_F9FDWcD5jP@pk7{qxnz8@-sEW5ODlQx!2&XTsgiThX&f(4QBO&x}Fz>%A zY7oAnQtKCr?#M|bqSp3Tckzk=mU|(s{+jHOoMfchy#1&0}niq@p7KxX{MKD|km6M*UmqlR#bJ%*D>ZXy1SXJFDPSoT42SQBaI) z0)#1cyyteLr0Y)2KMtan8u0+=DZu|yrb^2a@x%QSG*|&bZ99gcpZh<}6)rGa%_7s> zV2Ch|aTK`k$A4ynhQMg1V4#fFl54y9w0tRN&$3_Xw{@|vR%|HGUz=-QA3Kt8-&qfA zo>=wlNeq@W5kKuuZ3`s&%>1T-H(C|2*(M0|N`S+N@5Qqa@9^y-N$^)}TroJnBbRQE zVC2mD=P@C4O}ratVcS3(>wvj@i^MoH>8QCWgcQ3cAK*P;pXl2!SW-*WzLZ;0&J9NU zzb*@O=zo51?&CX1tDYCV#l@PO^-tJKzJv0~BOv=Mc6)<}X|#1%AY5egIO%V!vAbti zA2l$;ic8rqWUQypO#0pceDQ8+g|twQV_ivC0oeO1`oPZLSh0;wHV0RxGNR z)mki@Mv#s?wnU~)?i!6ts}AM>kKECC^s*BXDcS4qQ4GRrPL#_)I34`RdkCd%&GP3sWeXPYzFDoaDC4W%<8Lm%oHQk zC^%{Dd-@)s`*TZkpg)r_q0Y)h9dJDh-;y7FscS#;)#C9FZMiHtWuj8Th6o!yx%CNB zyCnr>4xAjXoi%?pvS;ct8daviMA}=k*)NCNl;`aZiyGy z^INf&AK0OaCkO3OrNP2u(jaG+m;8P~7v9`Fa{kjI+O z#i@xII`xn&Ll)Z)nil(t#L6&xITE9qW#{GZqBGaVdy06xcK-*;4XU_2A%iBv$CrXm zDiS|XFo@t3NIY=PSUP+rB6x5BA_ciLmVtsrEBMSI#W=_TM6mPWl{HZ`4{F$kBK0n#-eODF8jRz2JZ* z;%SxiBMEnDw7*2iNybUFw0rIC-3hu!Rlpn!RUa8_Bs8*RJ+$jKiC1A%8CFcCdC3Q< z1Q_qr{WG6hOmv~SExv5tVx5FloyIDYn0`M9W>(F(b9K|ys#UfvPhfe;* z>2WpLTQXOJ+9cW{dMDOl0ODuJPU+2|LWWY9%1}42F7d5^V5;Z|ufa*2sQisd%G3s@hQEk1k&tU52YA+*RUjVsPfs`BhV8-Q=(~(84gE=ew-gTDv6tmupnb34=A@` z=Z=pg1p}T40pT#~F(D16vvE9iC`zca(d&U^pd9zS#v3Ea_+ENFt@V*DU20*1(g+Ob;spu#_i(&`)=>*rj2b8R8?NK|Qd`w)Y$Ff>#fjO_M$ z5x5P0{bZ?98%}#~>FkD+BtPp@8&2sa zb2?b;&OSw@sE03hqpO{zJ=Nv$h%?pOoE*72mfI-hMU?}K?%JF|FS+V2KpJ(#{HIcv zJ-~TKXdXPw2yMt;w6_*7XitXT;6QU&Wu>z_CW)5wL0$d!iJ+Gl#I&6&ct8_x@5EpSov5`M88vp4t4=}kE`%2tTA3eQsfI|Hk< zrx1b!9iQYubYT2I?6D588U4_x>CUj!QrdL}vl zh7R&_1BT=ifnX6=5Z8Inn(?mC_{Zo{qQLtN3Wq;Zrm3^6-dRLPOg#gp4bnhd4~!QFvQsD!EbZz$ zqbcrG;~Cf7=h{;^^D}j>+nkfSVWx58xr8u8g~nX;HMbfK&G*)m0H6yl$Fts3qZ;UCjdpz zjGS0wR{&+&H20Xe=`Vi`r>JeT4lg)f>?DozFm~{fr%u+cJxz- zfcR>~eue(C@Q(j$s>y~vCWcEmyS@zN)It0xGwf|$yioClQ6m%8!FZrv!>fS%O%wLu zx1AhtU5%7B>LHJ_QlJ6vl)^T%%mcA`%Ioq!ck#UI`t_YidE5R1K>E+@1>}udp^`>N zk~qS{qEkbH*mhYvhltXR{OPW$Ur?Z-rOsA&z|{|9{=L6TFE)SVml32%8XX69u!v*iO|{3+GxFXNFkTED~&mLEBtINFTVeF z-JP6v)G2kYRooFEtYymD5Ua7c%~df+GJs^g5BtW=F?K}%rKcBhyEA;Vb)UA1aV{}) zBIA(0C4;6EQ!6Gl5&^@s0D;G%!N;Q4%U7OV5?0szEiA8xsdxVR4l}g`Y@tR$&AQmB zeG;EH&RR^B(q?7BGmJ7ait3}r?EQhIH%JPXtLG|`cnob!^+8I zsq&j1m+%@k|G2Q+jI+{3wlpIciZ#Koc~Q~4cYGZ@QNq@+3Vx_yC{baIOPS`u$DlFB z36!1Hz}al)V^=k`@{`_)!_h@*XY>?4_%88R?H3TzerAB144#UeL0Z+Ln;t+Nnq@^% z%bBroLkBm{FvDF@spj3HfGCCei1avEgs!lLhX zE?UXixW`s#h5|{`K`@1>rIKEj$%EWHP0=T;%AtmiyQY!Y4_SL;&H9YKa6ZJJqX&=+ z&zB)jAUCQ;R28xa#VSc|fCuxj+ioJ6N(^*p63+KpI+HMi^C`%pU?WnmW7p|srIPf+Ay~ny_6ft z%MYkj^S`5h`01s9_t=Q({tL-j5b;#d-x$BtF>L4%n`0H)dgSvtG3j>9&jOJvv$Vp7 z;R<{!4*)jzpRcd~-<}`#GgYFf$RZj53|tVbs9x|Hl1BG_uTvR#t$Xrdh7;?+V0A4q zhXipyglEI|WnbTV0WV3OzU7*e3=4Ctak%nf$>^oHYW|cRHi#xds*o&)z<}uUlLTRR zG${?tkpt|kUQ!FselvlM$z243N;7JhHQvn`vzUsp`D|I=?(|A$X#&{kP3j!-hz}Mi z(8juI4U=jtzPDX^G#uf;kv_p343_j_B`OLva@KrkapCYDUNAOYTudD?0K`iS<4OMx z6qdt^z`x{+9eSkfzu3VOg7D^E*Ddh08-ZIL_po<16DK|ml}oHKbTM&t-^q0J!2;+AnwUT!J$*w@myw&E zL?~Lvh7*-o)rh$03(rTxK8Af+8ZwBpD7d+uXt1b3=nzDhX<`HtB_GdxZ@oqxcm=-Q zHX4PwAyaAG4~G1a4njZ2OMe6Culd%{j{atDRw1sU?{hi?`;XA!33ha zWO%n~vbAUVf+$o=kmhESsz8xU18|Ma+m0fO4cx@ILT9VxHO#F#jYr5rFmTE(?v4qwrY*T-hJnkueFamH}kHb%--tpbK91K5)Z2{b5H7wnNM$nzLIUp(Fu;re}besZqX zx1>eCeEJJ7nz{*Bpk?m>;_h3Iw|>~%+BBDYWuNmYebk|mw*U)D23a4)?J@O@NXcz( zLTv5_{cN=by{=U_oeC~ZXfbIBaUOhU6YU7O zkV`H~&(1gTLL6;H6p~Q_TQ46#d(_)tqF);GEWB;JV03H~SsYCe(&8jiEq_^q$kP4h zaoR>BL#VG^o(*kuB7ezJl!RfE2ve$`MgIBSoDb%}Pl%$5(dLb{HIY^O07@np1t<1izP z;%W`87B&@z`fimV2^}&n+HP)ELA>5$?T0!7nra|Z0UZMME4)FQwnas_jH-W8VLz~I zOiOfWbcq9tJJE)v7orMwc#CgyWcN1~c-KmcTE2EwB8muY2?%mt%uVU}4~e;N_Kn8;lW0vYuk^<3Cx7w^Wt^@_3Zx~+0OCZE}L(5i+`oOO2xh)@On$=eif8gd0T30GNrGTCuZJoeF~43J2aFo)w-2{*!Fm z310*{sek2h{i711kzyZ(HJ-0v*~2nOhOUCU;hq|trT05}We&y2BsVODH1s`%AENx2 zudx8fuICxh34$A68+xuz#hGrM;a?O7DTh247CB~p=VePwz?BKE?%G@zI1nJ~0#GS< zNd<$5I21I%;UhW;^@B}!y3las4j;GQ#kmA1r66!fm6QqFDD_)JJkD>!j)UE}WwkE@ zOD6kDMHSdXM#dGs4)1;D)B&(va_Vby-w1D(s7lW_cKTPWf2!7Vv1q;+{Fibo0MdkZuS*1?jO+zN~3w_8OssJ}P(N z(|{e%US87QR?u`(W!h8^?@<}jUp)dLdz*5?cjmw{_hWVQ@AT@gk`k;X9aqBwv{$Sd zRHO=60))$DVvE znlfK%(H_*sr7tyymX7XW()a8f{itIch9TKEGK!QaBB*wvCr;Lt&T9*EEp$NvQyj^W zsB^n@PWBNF`kwn_MOL%CNpDSMieOag0)_)ZUG$4rGqSP)5S5~<2~7_*Nrhf*4<1La zM){VNyEM(dRxa>%iM^e+)5c4}#NW!yRQM-B3$#d~NUXxWiG3j&6xFE`Vk4l4<~Hh- zk^mMFh!Qjoz}FguxhM*qmPLRH|0styD*kn?>~Wb72`W5qOI#=XL+kRYQF;xYt61h% z#Qy>vIR8p)9XT+5`{;0y<6-pn`bC|u-h;RwIl0lYgoAxXo1VkIoqQ+Tu;)}K!-vv+ z4}KqozAjDC%-%f8ceRr>KJR-mRwJ~X(FyBe{X*V+Ef}hQWy714mr2cKEvYRkP&7%W zBqdNvM1ZzLsxb?tmO3LGJFplTXX!u2`>wVnHohidF4^${3=A}##P3{}bCrwjSD zmbQ~MzgcpoZ%uE90{M=rwO%AEmh-bmyZB^j$(y4MCP1lqR?^>bt3BY`??K*ozfePW z)n7LG+O3rsS6bA?O72-GG=*Ggz4r7id@J$E0^%S(o0!L`CmGtZ<@o1E&^JCy_2ZKE zse1{)6cv!DB_Rl4P6KcSt(Z%)MH6!o2mk`=51C@X{wP$C6~)h#`_r33vgT0sCNFFK}H1CJ}RHR1FtfVhTnnVTmH za31lSTolx=D)s28KngCAmgEWZn?c5tWgF#ED~C^olqwop+6*y4r)ErC6(>}fH&J>G zr9<(P?Q8sHzPYjJvew5e&kR$7wyh?&k-H@}J z7R}GWD9Any?pB@@8j?JJbhh*04~HIB(EEwSXX>EG=uw*Ih4n3vfUu$TAsSTWot}&n zfL>}wNSUZ1Q4|1vj+EW-sX-XI0D~)@y^~QZ0OWcrVwxoTH3ZXA zG62HPchS0|qji)yT%bVX5LK;n_i)e@wLiV+BE5}i%69t}6?c^Zp@Vr6vS?FRK%f(hV6K-5H6TVw#mS!&1nJcD%lj1TdU7QpQO< zG0a}c$qG<%0hj2R8Ky4)OaQ4!h6)T;1_UVI3We2ypauV%BJvt(I%a=_IA-E-`*!L? z2TRk%q#wU<01!LPoU;gwtBU14rO^&{q471_C_iF`grLt<)q}PxFcyvdY46))eEMk~ zk;B?HM+H0jlWFq3%+X17?Kz1+0Fn4!gU zN>b!9G1Nd3@Qj-dR+Gxu{$7o^nl)1Z?^mLMAHeTi(z zz3y==RR&E47z~4q$c#-Eh32yK!?QT;SBs}CuAFWKxA_mO9G`P%wHs*+GuMSItxZT( zYV1APW{_$pL!0WdveKv_KVC zKwIV_EVu9{hl%R*c8z;yphYRU(>sH5?teDxz_huvtY5)I+wi<;F%uHN- zX{9Lj^?LFvu6ttme++iAU>N)nN#^{&000022~Yq40yF`h3OTY8TL3uc^918p{r_q6 zGNPs^AK=en`CM1L{+gyMo;S~OEFn{&yu@onbRogIGX3Olr|AP3p+V4uDRd|1OgPB- z+6hh=s-CKr=?GiB5Q!Y{((ltT^8<1_A{Jx~ro)Ihh|^EtK@j|bZ3urK0R?mKE*n1* z0iPN?u$^Vtqc%6?H>f(oGV&ijG{W{U@FcQw^M(S0_p?9$t9}1ZR{2UBB;s^0wdADC z7dE(*L00H3vsgFFubjJ9ju$qjkmAvZs!WYWuNxxX#Fb_{$}+A^$>u^Z&VRo9ONAuZ z>%)d*WEUT?{raxDLFKVYvs6BZVE%JP8EjmcY@Dap;?ISGhxxWZ9p#0@z)wXte#E%$ z>Z+|xiK>UyTG~~m_|BCAlHpuKJ`k9&dC~gl9a|To>xFIZ<@^VB0K0I{+WJph$4PS& zP&PKZzApd&-2M0mE-f!?y9MHm`=@^6&Ma|lRhDg$V&9kcGv?PLhdnGq<|6K(HvFC` zZPt-B$Tr`>9aCiM=;hN8wC05X=xc69yvR&5E9Ny@%%~Pdl)WqNQKqtr%f~4E*nTn9 zMg6H>TP&Lm&#b%~bcUJoCq!t!m2xb(W=DBrJ)!*t)$S2RMXl$HG(@1U4`K(>?56A< zcZ#&aRg!#~tZ4#yy^VeZij+h*$Lu_FqH`iaUH-~m^y8(vT@M+OYA87!n(*xrh4Vdd zu(#~S9gn)1z72JP-!Fq<;O`%xr(vc5A20v_00Ie60004a0iFsyvJzVWIOp=JKq{gv zQP0Kqvgb~yE*)p9O=mOj-62~6Km3~nx5La7Ql0!ym}k`YgvKI~-!EwRi+{TkB*X9l z>2?VS0w_lJ5`s48Kyz0hmH7$om`#|_eONvuj|hc11j@uzPB9`5353_uu6JsjM9;P9 zAz?A>0*?lGmfdb*Y(mfXr%;WhA@b7Mw$Irs=TE)PYyfCuFaW*8Xsky7zOI?|{+L5wOuDw}apyFJNus9hLN31Y)cz*&$<$d*ju3Zt^^xjSqOsD z-4gX#O#S_giVk}nJ#)uQtv1rOT1CyMo@)jhvqtLAhdD>kNX*ZUnr7O>XXlNT!k+}> zNaOU+xs{ZlDvKfxR5pn+Gka4`clz+vt7c0+>>5XYbW5!eH>kOJQ74~DhSv^M%cZqu ze!)EL7nZO{^V|a4H_s&BI81{ zaT|q#>Y(@c{hIsIl?}5(I6_?IvM3<;Sb2~R4!MOjEB0{#NtR&QRE}(mXimK~llRtl zQ}>%3J`D1> zYODl!I`k~Mr#2@ZAi-@ksk21qQUGNv1d|A$x?D>Ahjg&FUxK$j3Y&Di7`O0)*VW+9 z+@c$Eveh~O0&$M`s)s>FZ5jq;Zqxv+2cOp?lX2jEcRGK~kltffX(bfL;g-J zZ76N&^~%ExcUZV4O%bRE_CT8=OATvE`TC>xYw7#qeM<7RsX@f3xuhXSb@hyi^UDI~ zht93O9aUjk)(Mngry!DY$7!$WxK+YkInc?GPBxQSzUFgYN5JJRX0h8I>lg zN@SL~bQ&Pu^V6}&EyJXi((xk1%hM_SVM`hW^{;6>eixdY=kwkBfJ@da{8$>wZg!CD z%HadRlv9`Xo*Vw?RxCPtjUP9*@kG!26Nj2H2jf5HXSX2?+)Hu>oVI5pu+v1fAclG>EQUIhRA9%6W3p@U&s^**^%-G7oz) zX06@$gIS0r%0MA;y;D($yW5jo5TB8aOL&N&t>)=}^9T(KIE~U=IWNw^Wuvx~3V9P; z3drb01nt;lO>{z?lP#eD$okrrt5AFKx`?KV^B;P05PQUi@J74{+P(9V8($4u$qnuC z|6s}{Ua5cHI~}B7Y;W0uB&p({-tLI&!Yor{Kf z55G45VZ(F^#jjp>@IutS`RhHm#6Cnyc zMLzydwobkpMqChFT*leHs#GS+o|3IfBjBKU9l%^3MX-40f@5wxLrvh9dCg-*(_ z=Kk2yKvkix?;APAZBl~{YpnCJl#W`e(;`7OeP?H!YFo)&`^VMNwW&L43> z0m@lZ_V{gxV`^hq2$ag`2MQ}HhkIz9UQzH9_%S`6(LMa6`cBHl zje;s;!)jW!sTF~(e%C|xY{tFK6K(Sxh#zoeSMN;XQW7>mmCDDvh2o`~JAVa;#kqUA)ALFJ~oSs&TQc zvk1{}mi9+#cXw12OHu@n=l|SD123^eW^NK-nZCn$pZ=E{PXT@mNU=(iROe?Ad+pKe z&K~1$KmaN9%HnFq<2-qU!BIAebvBqUaM6@~2cR7@9>V5sh;Ay1z@hFGrCQW#ZM=<# zTaKstIYrv%U7E!+(rnmMCNLcf=q`Plnk08&O-Y+O@yDxtlzPzTA$?ok@=|<#P9aq< z0R&`5vd_7oOEZBHZSZ)f>3=YQ(TGkm* zbcPI{_7T3wXbFH3%N_d08Zv~ut0lFXh$WJkZ5cP-sjQFlI1PpxyBT{nq|)6i~DqP+Dj{Yw1|EI${+rcxA-%s<>Z z=?EmYsD*ptUocn%6Z@B~VhWSkE{xMiv^tB?Fz$xyu+Eh`p8kSu@&MdgFdErjNtd9v z{+x2y`!>PQ){oEW*j0&2;Q~zI3KoyHi<<#rOiN3=w>vJ+Pd*9(-rq)hI9T|_cIvi~ zn6OSiH=#F`-!fU{6&c4cg_kSLcQp4f$EYvHkO7jJH;q)y7hI*F8p+@*U;)Qux% zu-{tNThwpbW68NM@ZLC$WB`cheMPKV{cKU!q8 zoAeGWT_ss8P#?bz2#f&fGW11yb_l)<`X9jQo*(D!-TN!%(e|J_Ik@R8q{z}&`@$Bu z&vi{T7fY4$b{_W4D$m7d*-xG$NdW8pkwEo!rL$B^n~vmlu4UL-%}GCE=fU#zBWGZ3 zA2%Jg^-9&Ok}f1EdbC~L?^61fO*MXzG#ml)!8E4iyJ|i|&CiTeWp$;!FL?;XgiX+{Xpt zU$MGxu|UvIc?6r}Y1IZLpKz~6wdH&}_=C9^p%l14(-~|7uxsLBK&8hBZx)#2-|ZvI z=s4I6m6`VRAH=f)qf`e%+YZeo2eaRgKZH#CCr-5vwU z(wtG>Gg=TE^9b=kSAm@?LP$;mF}PVVqB&f=!M&?4BKzw5^tXjYIUV!ouLSA%@+O&F z?6pEN`yZ2#)S**4*B1jaURkF;{gnGmnxc}@ld*|CaNFeKyHNh9^+x9}51QzPeuCIE z7!&UrsAqJcF{aYU3NeBb|lT_Q4fb0g>M4q}Q%J@G~yz1y%euiv+BA+0k5Vr-B z6?Ux&%<2?nxb^1rh_p{T9s<3`fZ0vb&-}&QN>2Su3mJLcyaJi`KWuz8HtpDGtGQFA z`HXT>lqAcCHn-EMmDuq4(ZqTc4P!1Mci?5JCb@PdX>ZN3(5WH=%PJqytVc{k=YkWXi z_-mnKQHFjG;(ehpKMIW-(spE=z;&{4wx-wlBzg9?T6?2q8fGX>H4p1}FYo$FZYg}8b{HUhwER&QZ+5Qnay2!s>B!*MtP0m+<53=0t z;tL=q94Y9Vrbl(1AXm6>NoPS06>mXURh4;W=I2hhfz601pObifVKoM7_bH+uvOQ&| zd$4oAq`fFLHLsK(LOaE*odkcD8&PQ2b#C6x%4u>hFX_lN%lRTao`_li7q zH(Z@@)D_IT@XGkJkb2JE62&AC03DvV9N6RpwVi!~e{EqfjrbsJiA`Y|$)-cKU!Dd) zkTxiB)>(}W#aHFmLibk+7xp%2Li0w}+XB{WL7|=9m~Q$vSiHT;w&5+~v>;CZS7Esg2j(}OE~ zB%s;@3Y<~XCB$RFt_{T4G(Dry7jMOL2#wE6TC+i(i|PWFhonCkc36YC<`%ODXMf z<*fdJFC2uFO{^g`CH2NGqRl#KrT;aM;>9Qwm~Kaw=)Wpw;y#2WyeHrF+IR1>ZQ)Z~ zHt#t2j9HZDP*h6_8gTotg6`@~W488hI3wPtrb< z72x#%f{mOXb`ocOD?fqD74J-$ws&eJfJ{HowLJkEo}5NWSX0NVD^-Gij=2SV$d4VZ z1STPI;v;BVl+aEcBK7q9VXSGnVRO8Vg-Dr_;%WsZXR2}oh$|}iPSpfwMkH>xIWlg@-dAiX)R1>q5a`}X?nD8REK4(pn+GdabC(V zKISc8#J_<&SRgDUJudwlDkM=ghH#u#GIJe~9ZR?eLiA-fAx%Pofe?N^46NsY0I~&+ z7io5OB&W<`56p^YaM^Yy-f%Bu>|$t?`8f&T;ueutJrK5TN&Gr@npnMSLSif{VmF7V zB3|tD-9_s(xo$iRyNZOh!41JX8M;|3RUWm{m{61B);@CIuK*=Q+*^88M)+D#x@HG5 zf0%}Y;lb~(H4DUF4*y@0j+xW>^FGS>j;4QfG!E6Um&)#8V-=Z2)v47qo7UE~H zw47PIKUB`xo!h96x_Qho@WSh8w^_ReMLbuiy)E3CQdR?0Ob(2!CF(pS^ekwa7{Qb4 zSMM*YD`Ke8RS{l4#m%uJ#%FqyN(%U0;KMS<^5Ip7o^sS<_AN&Tyq(;4f1*xJ@hi^+ z{kF?no`*w4#VuK~IqC#SV8^dxZbC$-(Daha5IQaSAVRHAP7g-FW&BjSP^pW4)Al43 z>ERg+l+J1TG^;9?u%1Vi8mIHtP-++0S9XdObm+b9yOnx=HA*un+aELbMfn`HS!PM} zUOAW^E-LP6OIhQK837@>(e7WJ)%^XL*u|^<1pG(e+D&Q^n(ZRzIwG^6HqBNtV?`{v z*Kd4lv8~xrmpYDcqW|mSJU9iyA$4QRgy+)xD1%)QuFAZ(zM$pDy=E}R;h&snFR;LQ zS_*_B-9@byq=}Mf9pB6pi4u)k$Dj$(jJIIn+F*0^yq*Rw${R{4d)1o54Q!n1W{1bi zR5@;%j7>KyIe%SMbZ}zNH4=j^RsaA10trw600!j&o(x5@5?cU^>bVkoW*HQA@UKHE z1UJXCBiZ&}TByFHkCE#mXgz^7Yb_@_-^M{~Hswb1Qc$ko@t3AxUo3!QTr3<8Y*CDMvf+Ic$wI|<_&tK1mkMVn zng6%f_Qa|CEWU(}A+4OTh&u9-B(ovQQnwX6)b*ts|38t+InI^md156dq5wm`O!I#? zDWYp@(IjO4A5=*lz0dOM-3llo=E+@6;hu?NimdT%C85&`qp1?=@cV&qN_r=ge z9d_9!#z$9P@8}^pWW}IYGHIhne~3=J@0ZU0P6=gM>k$-rTh7U@2K}LN;C@NuFFf-ZqpIid=DtBl{Avq zfi*wmyJZgAm}%5lOU?mddfRYP(&M|=IxPljD;7c5QIWq~a4oP_7i4@x#X-7srHT28 zyUF;!vlec!@u3&W-&UV7d_flfORtAp3hBGG-iD8Gn?}J})k<^hAl(=0RX-;xqJ0d8 z)F!ahBtaEb14S$LIxAZ>d{<;ko@#UJ^gGA6OC(lPC^_n&6E~2r44@=6FbHzE&72C7 zy%aR+4E8Ddb{=JXdKdE&?Z}iatUx!u8Vsm^Ba0s(_5DJvwm35K<19KNh4^r7My2*? z#G9#he(xm8}XE%D~t2`#cT+twF~a_PXLXudCHq zeEQViGffL95)gx{CGJV%+fEbfMPtz;;KFHk2igA&$zXM6@ zApFoFj_^=PT{y4$nFwhpJorJz(N4oF`MbHWom`_T)ja)GwTwdK6wv0m6Tu*DRT%Fr0kk z!&D5bhKp@jGO#cSXT=s24-I^`luYEdvEXhb`75ixy7r&HInan!JMJ^FpbjZsn(SB8 zl1GBN#c1=EyBQB?tt8M%cz!2mg%uc;w}ORc;nP+Rw`SvyUdY%Ea^o|7>jqby)EUe4 zKN~g#tw~GTyaP07;WfD|*_-&xQ|yWzDsnWeG>~w5pE2ItmW>E825=~CRa8yN&_{{! zp`%37t{?zxUAhbL!edUFR_CJT=0zt$N{Uf3y=l^}F%5_~_2= zZz#moanZdRK4AkTQ_9?@eD67_62_FBc%R209fxzbt642{w+S$pG<{7@?$t_sw)B1K z@}oJMrUZ~>q+Ea`wCl#*Pqc5p++SHIn?`@;O`NjXi$=}23a!ckt*wbW)U_dfz`{Yw z-Y*y;LA|T%=*z^rmA)N>Etbw71yO&|x30-7G94<-_3U}TGPf#;Mni`t2BwO55rWE4 zNDg-Cn*Hh?ruFSrGC{J{8;^&cV}2LUvjGuSBV79(J*Sgc`slNq5OigQ|4wayZY$^C zaYe@s2;SK3c*w#m;H?4>ZR^16n?npW4^31nH{UUSdOV7gF=s)`HxI4WkWpq+z66x5 z73s#*t5*MGDc%DLd{939%^k%3HW4Z8ADj&!rmB%F{ZL2A3Xn}Qc8~sw+>cOZOSWb| zX0n*lP$DRs$R6Moxk&krJBbAXee9BD?CfJW4t^pnkL4&iS+Jji_Yk#Rb8gg4^gAjp zRxYEuQM)TFFkFJI{aZlbH(B3?Shj zF%E>5L))BvM-3}>te&Ee?yuEcyE*6$EFOyFOBc81gB-$1$79-5`Qo=Mp>0|;^UOr< zg>Do(8*9b0lnFU4`0?~eHGLPa|5g`y&G+|=u0iBqcWu$pI9h>7M)isHLzwjH)m|(2 zd`_bEq{0c>CrGmMLAcsZ?HH*=Gc(=w2c%%|vXq*!4+A%jkOf000022~Yq43Ize43`w#QTL6pf{Dz=z zt_*P!JV7y#a9ZcpV@Jst3 ztWf^@#Yo?-+qKl9Qv6=GizMjW0fQctW#>@_R7~IG=Z8f4)O)Us{&In+Ig2e%Ws6lT zdtls*62@kx`iaB7-cQ)jpzbq4-)lSiOI5Ai-fMFw63FHKM|@7tobyZTU+5%ESQKf7 zSe3<7in#en$6{EpN`z#6-Fz8`w!P(sE6})Z7sY;btC=))k{2iX=rev#kaNa7)>|JrS<*)Y}wG|ccTl}S77LpI2UP^Ma^`F&*(DxqIO}* z&4hgNgFn`AYG#%g;DeB;NbkEIKv49l&FkEQ8D3@p1=n1l>%%2TTua|BKdFi|jT}?>$OoRdqO$j;XfV_2D%lz)Ej{ z@>^9c@v8bMOodKMGx092_*Q|0;vYR!Vxw^B2`GX!-n>lS%DtORQc}>teO)}tM$izZ zykhe_NKw>fEnM;U9hGYXZNp%`K#0{$VV!WGA~(3@I2}|DIOZX^HUd0z`b--{wdOwoG&vbC6z@i}*%8G1{z70VO!)w)9RK9LZ{jzD{_dDmZY)j!+T zDhfI74Go^N_+^);+7gRt+ZuRhtP#n+DFU*6xzW?)9>3DCF?OhHtI`md6*FLgW{%@2 zv8Rj2_1cp+Rbh)4Gw`8AG@9i|gSOUAx=03G9M-mPDNxR^`J25T;SBX9I((J}$RLNCMAP?dg41u-vV#qAeLxNyhE-i6$`d@ zhMmG&_`4%3sG64Q3yOH-{bqgadq3n>A!&(ZgYK+fL=HVek-|XYhW-K1On@v;!*~Nz z&m0*&&UULtba7%c_=#5FQYWvnTAZ@C*p^x3V|_9FkZv+~jwGu?XL2D98=h_R7NlO5 z5(0By$Kgs-*vKCIzSn22P{Je&%eCn>gTN-(;K1wSOp0aR0EKQ1mgj47Ri5Whs)YdO z7xZZ6EXO5UZzFnei|o;r$K?&gmCbYU-z9R@1E^r9o>2q&REL*)9IkRahhl;^7(+RoWW#fARlL)ZB~G z6mMPn$S6Yt*8fGRi&_7e1q%+zP;j30y<^#_fF`%66L+;c_rD9QP*OgtK_g4a7T=Za-&i{w-%$2 zVJX+$jS-*)fzzh&=QEDKrEJAdsr1I`_h=|!y>Nb*E@9GzJcOnS`*+|306a--kr7CK86v=w zOSl^vkex2iee0n_2CW|o>GnSggu>g#(JnZu+Uj6lrSV)8#a(4`A3`gbGaY2MVveW5f z*=;~gDErD=;VlgtC3xm@jn)u>2g?X*KN#JssqpI5f~tcYp#71huN!otD@F>Cu%G1=hXtxjBqb%E|VgBKdeHmcMRBD(ctcqo=u5F@wnh&u)Ad3g94t-Z5Dnb%z+B!PNpky&S|>T1rew8qLmQ zg8If7K){lKq*5}+e{Ta*gG?`l;l^*g*v6?A#htj`x~I))_?cV1~C|Y=QId z;CM*>fL8zVUKq%G5H4{gQ}6mu{#D?<`09s=Jw}|TNhxF#p)DX!Dq?3b|Bpj7{u7qP zumRHrZuEMrGF^%49PUEPb4?$~R6h|WhbNj$4M+EM3U8DfO<6&q1z0)79)RNbzX18; zn;E?u<2=tbDomyg1+6mT*5aAnSi9P`3V5Ap21!1@hnD@*)RFs{Y4ZCV<-XD-~Mb3A-_n2MGnz`i+eQv4YvOFDH~BDL^Lq7 z1aAm=vA!TJ%>H?A1Ny8yGs)Eo8kQ$BMTV6F+|}e+1^0k@n=2wncFo`4C`M|X?aTZ$ z)!N)p$qh8Ygc#E&X{exL5>{TV)}q@{r0v||RG-}=#F*pc6w2RipNloQ_?Lre^(vIg zV8=$xK)VK*v^bI+c+dDzV$?sGxt!a;P(E)jp|7_t^!u+hvY-99Nz6G@2#=j=#oPQ9 zCvj*`M+mL{*pejGI&X7{{IAfGkBDOWDvAHP?|IWH3HI;>8MURSbuY46#jMD-WA)A3 z_*`ihe4*B98|+~OOFIwN%qK-51sP8ViVkt^JT<;8*7g>TqzMXUEltc@u({tCLax>G zXBPKzzt4*K+{UqM)-qB&UhNeQ-8$w8;@ zPrIN10006BPyhf2;{l!wO|lYO0E-=#0ds_z+L0^%zz_Zb@{rHfs-El!4X#xTR!d$t zO2YN5hds4h+7KEEbmf2TOSL3l2SCZDnd{!^%#k3wSU+{kw~EpVX0LhXJ( zylAP`Of|K|RZ8*EEq&StgN}EpJsW7{@(@gVVEY14a9A*SJ!$d02&xJZtat~ztbOtV z^bti}g9P(Q32&qz$pWhcSyQHNKxPk%J}6Kl;$BtEmq$vUSBh4Ui%@|LNxMDQhP>Ybr&Q8}H4iWP>&6hXV=hqa zqw&WA{nz5QKR=5pD53S`TwZM)Xt;XJ zKQ3l5NAQZTb8WnTe1i%hL%ZSoZ&jKjj}-IY27fSMuAeHiRb!N2?*FdlF(D(R_G{Y= zk#KIyQs!K_Kb@Hma^2}*?dkRUk6chhg?@saGGIUQWZ>*I1y-}bEC`1Te-0eB0|;+OK@;>J?eGmk`18J2lZ^X6y*|P>56v8vMOGwP2aZ&^|2_ z{v`z&B+8RF&}sC%k%lp&{#+I(I<0acx+Kfy>!k2Opr=ppg%60=^-<&2rl5M0Lye(z zG{~RHX^2~6a4QTbgS~AZpNTJvX*m6!ze7~O0g}X7jKnQI<9R8347daD@Q)vM^zDWv zOUXoceqKnk^>jV|inBF~*AhG1wSh!Fz37I|Si%>^Fq#vr!eQ+i)uj3HRUt zI&mmuJzrmbn8Uh%QUSgA#m}Um09kGuHW1jc=%4 z_wT=#pu~xrhC9+$zoyfsTvx4f>RdvMR$pXwXe?o{U$z0TI@$2Wgy*iNOr*n|&N+I# zCupB$<;0i%p&A}wfk3+6@2_n`U83l^9jFt|kyg2<0~Hk&{%y}Nmy98)TOa1b?`sOu z7K+w-v5NSwW{*;R1uX>{t;@Yau+<|$$jn=r_T3ur>xXS-P@c3z%3Km^ONXr!7>)L99yUV*5GaM<(c?TV>qjqc zJ{vw>WttuqRoxQiK2-0QqUg7IJWLIcqe_h9;hM?Dj`+r#LL(7VQ7NAC_xz2AnoN2n zs@Quy;T7q=j-G9Ur^w`DzVYaKRC9Y};twc~hJoy5p`wg)@=vG7pl@4MT||^dSN=lk zy|pa`@6=vYAVcf2N_C_tGLT3LAvl5JS=)OgVUST7brk-6)6#hDopmIjHEwXmN>BE? zoSJ#RJIoyq1s@JQlSw+rrQTD&;$plG+f!*Z;CapOsA*iwsum3q#_vm$C`H=fesC;- zJ3?^}ylbQ22KE@&efHt}@EX=Zi!1?sdTR{l7Eeg{(5fV=!ESi_rBOORSAcU68VLye z7u8&9n%ljgx+d5SQvt0%Px#OtH>`Q!cM``?)|;rsygUnrh*WxbtrssikAXd75J-wU z*ej55g@cQycn9$j`%|sZ&B5v8iYuk*s(Yht$zic6^j|$EQ`LIobBLi8#-Cfwxz`{$tE)<4p*VZ zcP+wDXr|?2$G}fL3iCXHMM1^EQzVD))8=jb zw~fw5000022`~Tv5a~gh3|L?e-vCl`UVwDk2$~+69Ildl8ul;fp<4t?2_Y-yeTIj3 z5;f4n--G!{;jEC4Jl#Sp?+d&0OC$M@t`*oY$YB~3g3g--!1n!@iJeZGE)WL7#C*gL zJlrar@f7GSWAjK&?f=rxb9Yb-7+9`+yxs9=2ok8KP z+fKSiJ;|2w`mpCJs)<#MSwEJ+w7i91Je1a$lVqza>iqlEp;K*1z?;XZ`Si{_^XBQX zF?&qWak01u@V={U`Mm$$}X<-RA%|vYQ$7AOgLKaA(8B1XuYQ zZgLpi*mRlVkkEOtYJw*_8}l8yzC=Ni%MUCCyn zY-%W1%^B>TT-AENJWQf!m>lG|hv{0qmr5fpzcG|(yIVi|a7i#5^HTbv6B8~Pv_OXQ zaMou*jg6`;xGY2=Nm8XdQF&*)8*_VPhUjjiDP^~QH}tD zGKstt?akUHuMzehbVTc1CA)$V+^vCEgg#dTj9>MPuNlO&OPsS&EC2xDh6mhx8N2D!`Fs#TkND&^7zYt~Qc9 zy*NieJ#n}Mgz6{tKhAp${Hw>(ZkwMI!^)Us`_i7XaLuWuu+!1)6!!TIwOGU|{rCYD z_EsjDV7yr2UR?umgQ1v^+7GJw!niKXv-MMq+4K}3MDp-fL1IGX7Wi9}rSESxF}=ua zx#8Inz5#tk1JiRDaq(uAjcPk>3kacp7OPJ{DV-%36?iu(4a)M~#|jeyRQ7dB);jcS zK){p^LPt7d+G)6vO>dglRpW1iu0v#vQ|&4Jm==4k8s*2qz73Cdb{sSaE*xH92AbSM(JUScSay- z!McKvm=OSn*2tL0CY3_De&$^X51I0}M?gaWGMOkE7Pv47=Hy$^C%%>ey+Rl@sGCZM zo~qsTN{)^Zmy(1#!#E}FQ?v*VM*dCfw%p2`ix~2>%r;Cp_;2D6#b`q4R8HhWq_4j@ zD}d`1b_?FV{!=P}qqwb7ZhB&!P2AEdYLRmapaZD9sH-matjAu0 zFjNUwCu# z0)yExvUioz^8&lTa1u*7b)$;KYoUN(D}(G9@e`o1m?NoZJQ4C)q>hVsnoE9mE?lM9 zZlWUa56%>@jM0e0X($+OV1QnF@vyxZ;>U?C2-}~VD5-On4sPVa1lL7j4I4{wfiX$N zo0oIV+G!_NvM5s1KL>in6;SB5-qiZP!^K56GI8rwjnu+OWu^mVvj}xIf2An=a_Dp;$*t9@t=rArxr*=vIV@1x4OWmAIh{h z#~CN7Y=lM|NZ}7qd?8=e{-UOBxkFzFR_Oyw>i0jPv{bbL8836cGq62|$Lxc=Xk8?< zkvLeYtI~FwGMOC0&JME!fo3iBF@C3Sslo`2V%Z?Py6|t-A$Bu`3drh6W@eP9SZ88s(VW!j0#bn5PwF* z!V0kr252s~P>q>g*K2n&N+SLZCPhmwp$V`lQ*>vmKL@_J+6+5%L}^MKUu$Xw_7`o7 zncTRjr}8BdvV*%FQ-v2bob{Lq*%kY%C8JiCdB$f?*47SvO?OqirvLPd#+#sBNc9)B zSx~uj9y8q}+@Cy2*qG$^+A37o2fb-Io4vM{fA*TUyu2?`p#pUuzgl&o{Mr{ z%08@e9AZy|XRCToA|LwPK$4O~Gq@Vux^+e{aR4i{dpK_5$=2A*4ZG7$C#IdJZ{sXy zFI5;pQeu3gV$7`+mcKmMIP{%5*COQ^_Ex5BzvqFPX()c-&Mo;E62W7fqT0>;0NQPp zp{_W6)JjxZ7EthFJ&N>N{*lN)t#*t9{0=EDb~8lOH!h4Rh{KKs&yBbpQf-7DpNb^ z7wnvoSw|a~4BQ6@4N!PPpL!9<$x%8xs0gZE`QeEC%frM#suqQ6bxp z%%zB_tXUOa1f)~oVBEEKIlnrRV{@HqSs)Qqn5h&CMO~pE|5|?Yefr)u8~2f_FGD$? z9Eu=2DnYaF2zK+AoDbEPsu<4EoT*XO!|cRVvQuBXsa}#7DB3hr+0=?)mr(sD^1S>l z(84kYpFS6mKxl>+&n-uY!N2I#P>)rH0|ime=Kgx?O-3D{%A#Xti<4$73uhfu{r7+2 zNS6JG;0pArtNX%K8L@lF=UTv^S+~0RH#42Uwn3AP9B7JglHtDqRzRu04bCXM>$ltj zC*jbv!hGNcDxAz@CE+C^S%c$m5j{ALPbHC}J$*|hgU{DOQEW-Q$NgJqb|9lq=|}GL zQUYE>1%1YmZXZTKHJ>Xk1s|C?WR+~pcnuA>7%|$@Q(vIIyjVe zp!qj?dT%_h7o&zX0edc2yCzlz{>I%Lw0RcYf6-lF@G&cO-7~F~&-XwumS}pl2$~sJ z&=YcV@52*VNh$HEyRN3AwfKR1I-e0SpG;^Ez^xedV2M(lN22S&Z2)F=`_0?6X16Z$ zLw*?XxiE(=a6b9}P+I$!+;M4yKp!XV`Z#%?RyP|~)bnhr`fy&P0=Xm<>kR5a>u;Wx z5~hOc5?{c_xhk4F^`_;4(E8k-3D26u0Y+4o|td znQA(Ix99qi{kK1)U1Us1aS9;4JLl*qS#v5|(p=Va_}FFxl4(Ns5swQph|-YB>4{;x zWs!s1%h%->%5KHIP4mC=k>Ioc%oAwAbgs&~%mdhKnTOyjo6VUoI`iLY6tUJnMM|R= z7OClg`uVZwV~WYnf)sl63YA~#rEH%p{zZo29Clq|B^@e5SX;3rIr_dRRVg=`6xCOB zzP@uz=}aCUp|TqX6h9q|9@S2c$GH-Ov!4eLrQ7I#A|uTxi+}{(bd1iS5q?DLAnwwl&@`^vrFC$8s6`3&6`r|EXm=>G|cqkejofbdRlC z3-5j4Rp`1Qgi>>m4PD>^RYgB_Ku!#Ctm$ytvHC0T z#FhI+%)m}V2gv013&W$2j<9tYv2VF=DBCNTs4WRWYVv-M-5RqF8@r9{(TVDYtJ1@NUa*o}-d z=&%Sjx9KMHx39H^rqC@Z>Mkp^dP~G1`^2eUfXYEJ#aTwA7wMX7Y;eZ7)ODN z9$@4|-L=r->H9!hZ_y|mOWCnb%KOX7FEjg(DMiMRGcbn@78l**e2G(g@0Kr#RH^ir z=T$FHN9QmsRHIP8{vaX0AL3WptFFE=<$byN`M|hpYGiUd4#JkfN5IpY!j@ca~f>+S9@}b>l8+V7COf^}ANlxgc6J@OfWQuL6qIX)@(bSX2;vXj>45%)|Fpk@)ukGc>+v%s7i`AQ zgN6g_E%5!OSpFkZkH^)L6x^7>N=7T5OmHf+l>9((iAuaUbZ=-y~Y&+P%%$NIarhzw-{UkJb&Ts?rL?Dwp+P zrX$=W_b(d1IstjbMq@{=)*5r!*&&49f~=s?rk#IbaCq-5oW$6pz)0tl0qAG2U`cwI zO+-ueGBG8Gzdb}Qs^#OY@RrkxV9;~SxPBmtO%O{n&W0WiEQxS!|A^e+pqA;b*@ue>+F)MO{zAv3=z#wd6P?939!Uz@moP zv7iRU0qg6VwpPG$z7Ojk@x3R>(cV^BGjc6Jg7_mZoV9&?WJO_$S40Qf*Xvui#s^YG zeGs)ngwh zOR8Ga-89IqyjQ>;i1wK=?w^r<*`aG4I@q;+z6w*5A=rFw;cDzZ5aR}6i_^SMCZ@q!)@$l{MD%)~&FHZ|O5 zfeucK6fl6>xbD1$-_*(>(J^5xgYTV~wm)@Pu)cPy2fnd#BLM0nfLBK`*#NJ!z3sC) z+=J_a5&9O{L=D1#1bWYUQ(@(=LGqSCmVE&onfGzDpDXXo&|Zj7EniAy*mn~JR!=ZI zfW>P3NHJC5FyFDD?sQLc+d#O@!-@q$>}O~k(#D1fx?gF|wGbJ-5-3oC7=;-ZQo%W8k*Z*CEGjT86f{)iZKsx0JGJ(7_S-H#QKX@H*`V zpYo;-Q%vGWn2K;PiA#w=*AjI4ossHr!i7&W$>XptnDKh|Z3V<<(lb&OEiDlqo>CV> zM^P;{WY3F9vr-p|c+l)22yB&veM?t- z&Or4)uID}CfIwKsscotET)e62dCx(ZW~VkjhRu}_P-a};l}S=V3V+BP5|~4Rj#WO? zzy{zGgpAX24&bvZXyT+Rm55@ho$$wa5@{^CVR7`Hj%2Hg8b^10m6n}H6vp_}h)yx; z(yWJSP@={Ie?01bN{L17p`$?Lc_J9B&Y(nSJd~+vaZKi4_2K}LC@0ea!CRKa33V7c zK%1hgFvTEXoMNZv_NNjUj5M~P1u_4~p+viW?!(Hemg)A+?xqH|TD0~8P_lJc(RpU! z&l|135*7h7Hg-?G=i3BVLAlhbQE>{aFb7xc`>8WU0RJ5!5fkGQ}^JMzJTK55Wm z37pm7=sFvqyE76G(<>0$7_Onr@X~Zi*ZW1DtlQj-)TnHW40g~oVo{06U8+b*5N{xL?v8Xs=rbkYRwE2JlyJ_R_DdyL zeQO}H?J%Zw*@yrD00IdR0000PXH7sKmQsOWXUi<47#JA<00RT*006syga7~l1!(CB zH6Q>0E=pyHfItJ={v=1hr5A4&%SqCgu6*5qntqlzagNsjuRD|lpNxGFpZl_$3>O?~O1r!EOJPImPArspu{C6+LK+yqZ2Y*R?CA;Pb z-@(Zt>H5Xo6!j78A;_zmRUs|*ku=O6_Tyu@%b#b8^a)B)=Ck%C?)l<4eR*qsk+Vr* zABIlbAmVty9(NqN_g`SB4}2*I@FhLJHe64X5`gb#vpi$>(fSo7;K)$zWMUw84J_SN zIeE3O7HkBRf?S{>`5=Z=?gA*<`3Dv?X=gdnDdV1z%*Uv=sT)V-NFXPx z9a1I)Oh+EwSidgWlA}c5W4=^E^00;WV0k(p)Qn_v#4yjtyyJU>^Q6oYM$Mt{M+R zjA+X{ZrSo!pKzb2!BpjOOGo^zZ!@H>_v5NC?s)e;Ii=>S7X<(+Da&d~w%gtEBSbY% zD;T^5m!1ZwmT9o55+qC|*IE{qcEOyn+=6gZ`zc+m1RqxBmJw@|R6lkcY;&j=`jldEk; zH*yBR2$8}p1eKRiZQg^EvVB!zRG)wTM}IvXx@?txEUXG}!<+nrXYCtpnTLJ>uMX>p+nNML+ZG=?Ww8NKOW$IDZ@cCXY)| zNgTigW+4+*^V`TAD|lJLQ}p!5o$OZBj%Za$qA#Ma0V?aNJ@11Ydg`r#`>2Ukukc5q z;K)$&stWB{f#^4H&=ZVviVvBbX5gHe9eUPY9N`AE!{RP(%3V298TJ`3HqMxD2)qeQ z5=}wKSX5=;REH`6FU2{Zikwu%iiqJed3D2%H!v(m&ed=!D|NfAt*OWJ%O9O_$Q=uN z_&Bla|87`gG;i`UO!Moq`?D5QC-mjq6B~GErRnIeGYv1uQxzh|0g3s#i1Y#D*P|eX zDWZY;h8xr+%Ahg^Bpj`P>z6JWGPk}K&SZ+a@Kq)fX_s1Vi_f)!9=s!(O=2wf0F1oU ze6OH^e2Kob9sb`DSKXpm>x3+6xVk_TwXqtIJUL_Xwp@{q$~}+`f$I|4k5%9q=Q-rF zzDwh|I3(^`CFp!nE6uUyWA(gd`;vBz%bz4zG+vgjzs&3=|b zn!){q*WBtG!Z~q|M6NM|&G+4{nt`=Pk=FSr{UZU6;8q%blqWbhdXOa2=o{%^dbnGy z*4io+Cp96f5w^tIqxw1FH~BldB$ivkkfwo#**5K(<+E!PjA{O@VVj2v-|l3H5xgC6 zW;^~zp?UtI!aVh`RusPBLuX}k(xe6GIZE1+GafOF!A}kEG=!(+;1n0gcd4Mhv0par z!i=3OTQ$xq`-hqJVdeHTxZfD%oFY0s|4L30kT+Bu-ayUW$R2B(LO>A6(Rnp`rb#cfxvP4Hyx2itA|rB2#@7~7H!MqOZp&z5x-qEM*WkOB+%D}*Wl{Tdj+wCP=>=q%nelFw-fSNP# zQio9!8U83~ICUc{np|QwM_@#<22-nI=ds>tY@l=dDV{+J9z{%aI24B6d?SMAvb~+V zidB!9a;_H$(PYb;TOPaC{8n2am+Cy4WVhOw9}l;}s2+GwWUdic+++34&%9YIkx|>s zl@`qn6n>-k(&ZGn60i;XeDoAV&)8#zu$Bp|+z?pB;A1Wj-NoIEHdi+#{1$1t80m7J zo{E6za=07~INBvaO%M!$V)qna7XV(e|9=ZtJo*DWDqXAaY&Guz9APw+`*`mmzFCdy zMl}VG^f%D#mP?D1^d&+imVvQzf--Qt|MYS>JX!Uyd-7PSQj%4=VhJOh>#f5z*f!h* zE^zB{)GhwfX5DDO%_U!)cVSAJnm>$+%*B zQ+KSj{otc-wOKSmDHPhp(}_4vZk$(hD`OG3qZFa{7THsz74*B%kwh$YVHqOw<|%KR6bKH?QVew2pW7AqY+uYQfC znXJe81FP(l81KeunG>eG0Ue=-@Ig59OfkP_1L{N@5!x;(K7A&ZOb?Rp*(!sH)>5u} zJq85ulM#x4qDGK`Tr}q=Pk0`xN+@SpbK?@(d~qPTb{I4qSlF?7s@X2?v6Z1Do^5o^ zYC^nRBF#v=y-aj|nKcK@Vg0y)AQdWwCXqkFUDyjG3BX8hA%AH1)KAX)#Kb%sO3=sq zPPe>6F~QKvPT&rgc#xcN{}XWsFaB*;^!7C3HWf#bWYvaIr6mW>B71RmkP#VOkryqQ zMr+TT+HkWw5i2~^cEZgvVCuIxqGBP@WiO|8j8BF}?Dz~0?U{oR(s$NgUF_3YaIL?b znv71bT>HxelO1Rbo|MGG2A@}p+-sbErEysnN z#~}2KVoH7AY*yozE!nO0eL)8M{MyqN)#}uXh4L#R&I3|~joPflvYY7

hU3f&K=$ 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

RT?nq@$XF>P9MZI5g#w?k&$Pw7`v-Be8f6mpQl7 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

qI>n8XE(B*B1$-P#*6;_*{ztX?p+0#a_20- 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

x% z<@6qR1XU@Mg5k8~MV)&;P0AJk+#hcO%)Y~65{LD2*-fTd>s?qIDW2rw8p!sRM#Vy| zYf#2(##6miDV#PP5RM>vPMI3nb?>-nT*jjvqwIy!JLpJV*gv75Q2GrlOA$UC#~bzG zx+ewPLn|m#+mx3{xu}>4j-L=7Q1Ioza{ns^oVK=mlK}gaD}5wERxEoauhanc2EVS4 z8cd-Em#!DM<;h#%X`_LFVUS1ZMm`5hq)0nzR(dSQ&402yW{@TGE}}vR*6ulq(fpm3 z-&H%KSo2-tRIjOsZt)nS+FA)*jnp`Qf_)iPJX6(uxY?nR&JU|rI8KKOt8M<8d|y7f zAL@U>Y4WqKw&$U2i-?+e??BRc6o`o^G06FiQD&PVdWARveey00o{#;*V`ty;KBHb9 z_mJ15;9=zY?ei~FifV2Y-x*?h*d5xs8ftOwMKi zPSJczzTTfPI9@U#N()wEvxB^?-6|+!Wn*tT=CS6Ne(LRyyyd<|h`2kDhnXOGP%F!F z76L8%0QQ(T{uGG8%9Nv)3_PmNt#B*=1eMcQSZbRst88#sxIikDSmTC z1~T$Yr>v`c`odb67pK{Mw9||iVn<2R)#~bb3>Xm(XI=o#uHf?S+dNmLyC}|tYM=-X zT5Uo|7bwO&GDDX*njS%4fEuDI*xl&%LLta4$T8j@{R|19%gATN88{n<{rjjRPs3O{ z=Tc!RdkT*PKw_cc)qA>Re9D&wT8c4R6pnyIgQvD39nRiyE#3CtAS2hEo@v98OZe}V z1e^{?%GUCk;s1%8bxx_!mo9Gj9~+1{WElg2Gv8+@y9;u9w6Cxt_&CgS8J;atMOp&g9@0bzuOR*jP?}*C@L)s(vAF zj^;Nxt&O}Tet&SaY=UHJ%!4gY;L;oeBmDm0kV*{(SI>;oWmT#zyA((n2}fflz;>jO zq_o!xgf><2=sfbi>~fmManLG~#8}cuzZ?BPVJBpCZ%~P>mp&%O7f#7f-v4gr;lIxZ z#1=KZ$=Em~E|l1<)P)^VyVR_-uzs4GjamxaDMWqe20L8nC z4?{h9E;NJRY{pcc7&{tU>felB1`p1>OJ~@?h~aX^UDMKQMbXZOgbHIHM%wdP7^8%x z)GjkOt>(E>0}KOMxOw*HMj=SU*-m!xqB-wdnox`pGs%MMKQ5*Jbu$Hh^Q%!9;anGJjBJ z&|C}WL#=5i_>XIZ_$sR^RZH04&$jAi48Tc;KuB`)dz z-n~;eEV1A=&Hy(t8e!4z*W}j<29O%%V&Sxnyy?K*XLWG#(rAm? z|EaG`4Y-hLZwWm*mlNo=m${hWv=Esp$_}oEmPo)fbR!$);|(#DgH`sc;`2+=jX5hk zS8dH{wI>yc%Z0iV5ptaw=q7|5Av?MJwe^T%x_De8o)&V5Hky*C8l28q5nwV>*~QO!?(I6lKqA?=5!AaNF&WlPk1vEbBe4k~bs z7WuwBaC~&jF8nSge6ilh1J-x%be0TmXThOna9q;q=@hn|i8e9)FuGq_NW2w z<>(N2{b{~AKjAc=6~W?P zZ!dP)q90B}tWt>w>IU8|~N-E@5#6h&ofL5_v#ek>4xFSvgvcXRt$)BCrLwdi26L{Ipr7C0BmX zyAilTT~HQFm$Y(KoZIUXj#;++i@iX}<--6BIZz#_1s~ZR|g+*A*@yAWL zV{=CsQd&0h#8a*tCiigJ;ej70a|_NL7z7f{#~r93gv;=oe=j+V;H!-hVAt9Ar%dDrAO@-`J`7JWdD#D0*G$Z+&i6=6{}B4=z&V zb`V1#2)fA|>3uGLFedSSx&A6h}iT?d-YhJP$wP&bR318 zH9*O4+6ZXV5ssIQEzAs3w|iAY%JI($=={7IUZMZ@#$(ZHW2<##_N7z8v*k1fYP;^X zzlaYBcdZ}6cxsJ}ENuovr**xfCR=kF|1cz@hf+)mQ!W!#*qy_{fg;a>(? zFRNbVB`DT*W_o(HJ>KKw&a%uR#B>b8YSWZMj0p42A7e})^FpQl8zkQh^c>v(=Fjd1RX^hsgX-$tpGyvXo!yZe!W$n9}5VBwiT zxP?-S7zMj6m0PMNO3O!BV@>xs?YWxf66LjsBS9DgFtBTsfmbLFo ztG4#Z$`ok7ph~7zdwu$WQ1)3!U8B{TpaJ@?tP5}f z(r;W3xF$LsNfd#;_4Ivmr05R5bCR#x@k8xsOO7O00cbEG;~ES4TX9YSeN(mWkSa{l7k{xNOkJ53jeIYz;=ZMFq{=c`8Z!1(qv(1z#33zvod+UQn*k*L;J4a* zXTzRf%|){l;;LXmIj(`8YLk5b`#>>N%nr}FEJM!$Rxn&a_lrfg2vQ+3K5_HKAFP{K zk@!P1+e9slABzULl9mdc8GCA(4V`T-TT^T=~+;|KwzisNswTTE6C~ zZzuM!J|_GcWe)p5;75Y?yb|?Gy~~+bJlpeiIjCY$&=in(XlC`NZ*sL>PCP-8yNc^V z7+12ki3ZdAskj(w8K~D96;=iKj-1l&wEt=WmbHsjwY`-TohE`~rV-eHK~jl-cWs!I zS7&$m1uq$lcNG-rN3!VJALKr(=~B>Z>gvBbC61|yzG;xD8;vFR;SP^vp)t@XyDG=& zC#H|G>*IuQcq(uW^%?Hp%!BXr?`r*ys@53#!xbDNWb6GO0-Gj)K}k&eFZe<&=<;sK){5i@rvOf)1tB%PH4ef6);>%cExJ znC}SUM5$CtD54)dIY)E69dGo0G5iv2E#x4pGhvbF;Oq$0n1Zf2p&T{zMoLm=50f{b z7N@a%YhyeF?fvQo|H@lJ|9YdBN7`FK#zWG$fYRa8t$u)p7l9(kNaAx+He&L*gCRNr zs2zT_V&!AJ>~~`<2EL9;2VU$X3WQuC5ZC@zhfJF8O~F^KG+mEyi?Og!uxAY9Lx1bl zIv1T+E*X)~QPF6^DSvDVbKT3EQ0h$_6i!Kia;q)-I)QJ$-N8iPav_%+E$#<7V>(hV<@Amf{5+dOo7z%@D0=k5dZ)GPVpA-ffXfsaSdM% zzMP%$@`xnZ&cS1unL8i<*p)o0)%*beKQQ@`)OVc+xSmUE3s6;t#iy!{)g}fQbG`)F zOd)EyqQnpNX^5>pp*Pi#y0+aDpX1Q#Kq*>BGgh4(d7gBTE$*fo-F%~di@S2u8aby8kPeffl@hREohUm4QU9=2<5JPhOcUsu*a z_sHxMzS0Xsvsse+Shcz@a`!Z!%HtZyIxNfiicH-@6Dn<2)NX`fRMo9tyU8TAy_lN2 zCk|`(bX^rkzTp;kXF0`)u2unTN&0e+Q=L4N0JO$Nn(pbp(0K9$96njAj|KdMypuOs zQAkV%heaL2G|ddTdOB(kIy>5!be2pdnKiQEGKxXmmqbNRi^_}3>51$7sMdjpcj%Bjt+r-EtnEvP!;JKHyeB4sr8^50H z4RVb00D2EZwMZEw|$-3P?bYeqy%p< zA72#^r3h`UVe#Hb)+AMdwx@PA-Zi3AGsQ1FzlB73c&-9OcV=7=M0In{-D5{p?x; zyU7*sVO*mLSQ{IZDLt^-$V*jpRGGa6v)yd~uVj+yu2sDkpeTnlC%@CHF-bvt5e^D` zlE5rHieKR=>>ey$fnpzyygR=%a_-;6wbTila&9MX+{y!)O(#8_WqJF0 z2|6IM301xIIQTwq~MpPJl9EFfy(kzVVi*LN`@kX{_#UsMomYBuGK?| z#JiWAWgZZo`a7mn{5JbB*FseAwv2#Lj1!g0H82}s(FEq*q2fZOH)9En%Cij4EO==M zyh+%aTeVER5s0Pv)ZK?w-n)x(SMc*r(oWiuPCD=u@*`{>0z9Nyv>2n@-{Pr+37F)9 zscPi!1MW7Y)5$5N#gZd^pL_0SQwM+#)0iJ3CF+-^UU#M4rf6IfNk?tooeK9~Ml|xu z6jZm|&6+zdGr}4UTA=K4y;r+cc(&G1iJ7nBHx#6^zCa>?;)u~-3J7H|LUjWbc}>_; zf`qV@w_LcrFYA2lr|XhG?IB?3qWElYb5h7;rxI6df#Y3_v*>mzhdumZCVro}J%1|2 zj=5i_s-+f|#+-2un->uh3U>sCtL&=&fa3*;%d5Y(X>hh{x#qw|0#u$V&*dYisAsGV6XYFNd!EUR(=d z%cnO(OJ2~*OA~v(dN|G&f;*SuxA(eXf4ZvZSFoZDZ3RQEGM`iS&i7`!13&osdWN=b z-{wQkl07fdOb{tVv9$BUN|R14)40_Yr9F%~zXH2|1Lp1QzcrUym2MGBv3vj% zORJfT^%t*YS+@k`vZ|1Vg^FX7!Y^U1=!$RG%ptmUg6tSNR<5+zXLy(FZWiV`2QI)) z><^<*W=9E_$Wg*L|3$7zC?b31!_o6KZjHrWVG*`Uc_grn0)LBO`4c3&>&E(5le~Zi z&KMiz-upQi%@d+#0JXnaeQ;ag)Es*04}MlHu4n3xG~*pNw7LwMplt61q5dZ~j6USf z)Ssc@_`vrfqr2v(5Hks~K3X*7D)gda!bgLGSIFJsau7RC+~eXGUF|QatCwLyO$;PK zGN_D(QdH`B1XI@%!y0LNV%qjuiTe#Og4dl_VR`VsH3pQn+)6=TxfCM_9ku=X(!D&q z)ur|*9*C{Nw|J896Bm+`-Y+S0BTIXJ`u0Q_nKVZ*Z3muMqd*-i@MWC}?`i|i52OlD zOa`x_BAm3d6y-z5=k5|qY0gmJ5)WzEV8Szk>bH7@ytuqBve^Z4ntBIYE_g)^u& z=-G@j;&H>B4g5c!nj-cuOuo)I?l4^zIl0iwrZfKJDQ02*It%!8u@1}{ajr+2@kVB9 z4P0g~8{gx0;ir$g3__u=g<4zx#c9k8Vh066Ie}x*5_1CLc++L@KW+xU%sWbZ*?$cv zSjYA|q~DlM#v7I0Y$!zXu~hU*-tz!OBsybb_)G$xvw&o4g)WI^KsoaD44z9;IG6^X zUgV$7)934!37^Ma_P~S;0-V9}5||mc`LhufYwjK4!w8zK&1S|m$qu--!xc5wzWuYw zjmN+c#F2{SO!mAl;$;3{vFo%8?OhX=i$!14MH&6c)tpzj@|um3(Be4^+TVoP;( z>VA;SNIT6?xxvf%hP%8+1Th(Gva%)q_2 zeVEf1bIP{ZxHoRMG$1bXsU0G1pJ^Z)lH6mRm! z70PL-haNVXrbd|~3#mZzL*=u3&k3^JruSNYChEDJ$A%aeF~?J+b&U(Q{uakw*P(la z+VuV^1?bLRBVI-YdL9z$!N%#KoHfrT0G@l6inOxf4!Y>- z$DM2YB^N~GE7wLd>d2h^sYcu)5!0t`MUR`k$%h{ntmZzs)c(fvm_cf_^6-I)rzV{f z?}BU0m0%f^821A~4Kk#-HRH+?BvaH~QABMG8(s5m+j%u!~boTM>yCu@Cb# z=tOxbDz@TUe-YSEjsQVXKvu`12mV;10P?+Gu#4pJy9?~`j^xS+&L%{^<*1OwZGgFH5blOS=zvr!)Ue7Wcp z^8_K={xfqHQ-$pd`XF_+6U$^jmF>`Py{w6{B>IMuyGxkU3gd0fpGxEQ*Yl%AvNmSH zd#5CXyibX&{@BpdI@uA1vrMtfL|C9EDIdeGKki4noZ5%IrqOKQ?r2mXQ%uv%2y@HXEBdI||K&?lVc5_qAMB!4l|KjvjEpkutVe@>A zG7Rqf!RZiu`JGvi{uX%1@`MxrbU$xKrG@dG@+u-AK(j@qV6svMnhL4daEO{YqXxCK z2cGeR&HtXn#o$eY-O@LCt^zBjG(W6QNB_1paib(n+X;c}&ff)vMs$TYS6_iC=OnE7 z$LM+z0r9rZAL$3hy|w5-lc~)E(7ahWfvgJS@_JTNJ6;9)E@}2JT;Aj(h9~NtHN-S8 zaftl^X%gs;>J~Q9HnrwDNbMp0$lr!s)DNjq5uV$v>fSFKTLS9{SeN|4v!zKbCzKz0 zF_$Yu##C^8ojc=`V1e|HpsEw-V!Dt3;U#np!_*3jlfzniagPgybfQ}5&14#7BqeB7`F6MM`4z)Vft|;i{fD;E zE8@uNzUGn__}FJtt*Fn}!Bog&Vs>r&u0Af*LBRtMil!Tm4MTmi)oFgVx`h=auw?Ir zur?9}jLd$R9q{#W0|en@{l6f9j!cc}b_wH)P`mw*hk}C03$zH*dh+_`;;#OO5@Z6^ zaarFy=lH#Dc7j`WuIe;^yHy@(5C?L8JY3eEwYW~<5YNQ0bZ=mbKk2}xJLH=ZQ2&77 zMW$7+k65y4aU_Qvd1ZQF8ZnIYcgq8l6RpuQaM%`jT318kPiM_%RE)zp!4|l|5YF^^ zw?$v{0|B2tt#0|qEiz9ZeO6n(g4d#VMGM?2A3}xt@E!G%n5MZkS7$29V!*e(-mA%L zyDw@~Vkd3sko2xUdytXo4y!tk&%}3`4@Eo~+Iv@=gA0dM_Fde0>=- zPoKmux#qs*gXjZvad-Dp5KWDMcxnEqmA68`O;mT)vJ>&uPpN1=Ee*ocuSh{&65Ypr z^bm)*4S4eyCYo~8iw+-92y%0T5z9Vh@n)*mT5*_XpM2~Uf*f_HZaskz!FrK9n>ivs z@>>LL-}_v2A@pEDXaM%g0sh^J1Sn>0Ta}@MQ}U0?5otl${}5C z4gb|8&RHf`u^n4q>nD48GS>iCyD4N}#(aGn<+O+SEG{9RnhuWhiJctTWl8pFKHE|$F!)e z%Jz$^f;>k|W|DQl{AqsoR#3c&J^L2ldf^@s65^me#~&897yfpc{RdMDtYiGl-*2$> zW>$@5V`i911B^r^8Wf_e>m>vuU@H*a2J{2MF`q|^s6g^V+k0k0m_C>Iy~jWOhAw6^0_Jt(3g{U$KO!@T)zCQEMC>X-i+i`%D&nIRvdc#kzz*2jeK&5@$dgG2 z0)&icDBzeVVbjcuaW(lghPdz@X3rErrkQYRNVVAEzjps!dA~j#dcDD1Bw~r!|F^6p zITV0eEHjP^G4hd?@#}#V*!nVyyi6$t%=kGictA?Ch@6!cP60B7ALlV80tgt=_%Rx3 zqLF$gz62mQL5R!~&>?zF)Bpeg0%q2cVj;jsY67MApui%k!2rk7#xK7KgnqKG*8by; zabB7F;~Q4LaFnQkXt9w^-}<;b9>#*ZESq%FXLL0aka=*gi{mrmxoaAnC$S{jsbO#a zPYI!>@9|t}k~LBAOPEfkDTiz}TSg%pWZI=$hdpOWBc&V@pkB1LBt@eqM@1Jt$( z2HL2!Nt(9ja<9gBOWYI(J`CwtnuSMR)ojGQW+;md3w?q~>Iw_ik63S;JcFBA zOQlpcTDBe_FIX<^(T8p7BM}JHU_x)BusM_TiMz$M%~%i$I)*Y-njySqV8106teK`2 zl=)EkmcbdX2Pak!uxoSuX<G8RZhOjvh%1UE}!&2JLmZy<9}w!`EiRj~%B zp9DcCD3_Aiz(yH~klai`^gP?!Yg&KH&`Ac=>2n6?-ps{<`@xWhU(kKcGt@wj{^sNh zC|;UZbhqu>dJfr=PE$WQ5n^oqNU6TVyqTHuysg+*yv5%hb-cjLn|~H3(E)cg_f1iG z<^3t`4eL>%K|0g4?3iq+fb6hZ)PZ0mMLL3oW;mj}n&rq6K}YAWtT{j?u*AxVs)TMb zyxNV_4qVU#mPs?vauf4;VaiDSArt@r0c_C96Nq@ohR^9A9BmSRgeQN@<#nh`-n$Ju zY_R%KTOy;68T4+_H}P+AVJ!vbIr4bl#ZO7x=*#Ns&fm}!kKQmS^IRucucp~0rc{+l z#`aS=UEbqbg(J-Vx7SJ3QmzChO%pyp` zC^z?CDgrv!%xIlGvo%n?fk$?E)3F*OfbMXAgDi#qKTkw6<%fv~12CNeK>I^Ohf$%- zuOAx_0HRPkoie{2J;}dKXeR(-;3^~dVqA^*2v+El0nT+ao>F*@&MBWt!q?%ti-8rV z-=jKlS(RxMLNG+#dE^UdErw`USnE6nyhV9*kB=cJSx#`vui8MG5s=xH00&4q&&|KQ zI0$GLnVRSx#R4k zoL9mCfIq9bW>G&A|98R=(e>L=8SmO)01h1)|$vvf20L6qMPU~ za+!h3CD-j59J+fGS(kKFC?J&DJs|Q}FT*yg6JSBQ+(?X_n)vTeb&eN&pIcfXB38JB zyDcifpWll+RU9G2lrJ2m>SL$nN1z4?2jHJSvhWj7oxCHH)BSz(f^4A91@P~9e8z7Q z6vBF&6;!X8CCg!fj=Z2Qx~t;@x=!0#$8G{1IM+22h|(_oY$V|@0WhLk*IB&8?C(?U zoTUIOPf~L4%Jw&w;o+#r^=7KWqDGR`D7xHi$51s*ORd^@uCQ)f)^FOjISGMK9zY&t zH53h67BD|j_0fvb24P?MroE_&5w?KP^Y(nPZP|-iPN$V{>7GYC*{`jlR(NA6ri)yx z)C(;|*hS&px79P<8Fr`HeA4@<_1(W`$7&Pj^^VSau6sOA$#4iu9Py^9fy_4OqtA*3 zQW--f@Z)?!%e%=xNC$&0s-R$X?4>AqB`BYg+E$=JjCB)3;yHM~r_@~>6swRIv^Pco z1PGX?hSEi_z2_H}wl{NlXzSM;b0Az<$C&F`Hb(H}`eBLUJ7oPKi;>BG4-9dlz%5?# zY$aDePABK3y<|dw74_3ssZ;k1MH7XoepOqjco9Y!Bs5LtQmHi?j-Bv21RZu^<4TZ# z0z%Fw*rUWyk50}W7RD^2w)hj}VY>6ifwrm%5v0_eFx5YWBCSNNyHQGdEcsWi)X+I1 z6{QK&U>QpgppdIS^i6v>+*e?3@pBcQ6Vp4|js+ZPLUaBy2;{=7=lXNRhRgs zriLdBp%f2~*dV^^hR3AGr-sXsI+YB2nCT!&XjZ@kK-RD}urCW!)tb z6+P$R#OA0{LY`XWl$Od_Wg86upcNzk=>OlRU;_@dQAQ>Z0HtyQqF#VH#QDKbOf_dh z;!!YI_Nvs1x3}Ls*3@fm`o14<4J>tbZzQ=bDK{GKcw-jS6N5PoVd-%y03~3vAd{r1 z{A#I>Du(@GR_M7~$f;G`q!{>E0~ahYJ+(qy))B1$2!k8T=gBa~;5|=hjw0UsaXCGZ z2qX&<#VWXTYF<~Gs<(_Ye)hFN)TR> z6b4lexrpj|Wr~~#V&Dkbx{jr6!u*1LB?0ADh-jdOVGJ$Sf=aqt$Ofl7Ct1MZ@Pabj zOYj0`{g~H?Tg{(X&EKU|Y>R=pI?o3ZNTya1{r#%4l5p)UXRD$bOGy*I_UKefl@1AZ zO&>B|A?J-!@Pt%i|4V7i@gPG0asWVAc0h+jeq^m5sh1AB;V{g3vzl?ne$NLukyKQW zC}lwB1~zPKd6>TQVon`_#`Ms_z!x(0Ny-jK@3bH3uwJS@ACa%Pg_w=9DP5+f9u(PL z=Q-6ZM?m!rnITo}uSfN#cf*(my=Dr?00~eVG!_Cnc7g9(lQr*}OwZMvG4-OtB&sOf zMS0PLSqgPw0I5xk%3}EfTL7~FEI1$yK&~65_YS+9>#vmJ)NuaoRszBV!F)42SB(U1 z|Aul>*&iw+oX?ZfGo6qb{&qI0k5wpzp^?_sWx;^PuSE9H(MKp#G?y#g?6V2T1Saj- zJKcIV<34Cpr@=}xav7$3j5YXdUSVuccYL+_Cu3pUKx<<6Hvy8A9pQN+%X^aPiFz?d zH!mRoo)AhcNUYN^&Au47qnlK*iAaM*>mEXKoZSfaUQ%MMf!qz1b7}D`tRqi;>NZlP z=QUQwI^^c-zeDZf|wd$4~XR%iV|-OA!QIKf;d>Ru?f_w6KdxJ=>M`NMk6}G)u(fX{00B z@xRKEoFQYtB?#o1lW{^))Ct?M)_SOEZah?t{$0Dj)0;<0Rmx`bIpX$z#ANc%=2eV- zvP~@DKuwY07Dg(HhH1D8iLZWbf3W7e4ZykUo0BoXhnuhm2aX=*2B4)96s+f}Q@cs@ z=7Y`j?&qselu|*4_T5{(UQnTJ!#zy0DthvI9c@4u)wX_w+1w%YP$n&a8kB&9ZU?3+ zD*Tb&uOEfT_3_R@n9*y2{UKs#~^5 zuUM5Fa;U~kirI&8tK;mCCL7zKs!d^%V%xOMsS1Qa*vjb9dkJaJy5lj)F3W%m5p3y% zMy)Aq93)%VcVc^SB|fo=?(A-bF9Zv%D%Qxdp$mEvC~xZ&Ag_O<{cxF8V-sT4_dKS9tNvttHVd>8fop&n4%_`ND133FFufM7>NCXo6 z2&c+3q5!}GRzS20RK=4HN4^H6t$ieO;4fC6AkCc!=n_^k)B<}WLB1`$&zw+(uBD~+ zXVh(Ef-Ye0qZ&_^_rY|Q2^tIQ*~#$lxO_M>*+ch&$xCTgH+oKz3pXqy49@EXw5NxI ztP7nfsBI^rw>$RBB6Co!o;2h5ciq^FV)uF?adnk6fuX$8X5swK284=oPYv^caS$>A zXXg2zeiV-;C74Pao2ztKudE${v;0F!rZ;g^pq1RC>VI*{9+ zImX&%XtJEQL5T~{aad;Asn9fI!#09U-UOLiS}vZb+)Sg&wU|uI{T(}YsKzJ!>YeKw zDGn*5#k(#bHBq!@^@bt3@MUiy%=!lik&;!@g9o2 zxy-4Jj-&{h?JX-TSW(!p&$7%wQ541v7STqxf^|c7VJLXg|5P>Oit_=>RnDyiO}UIT zlkHlonw^!J$~!TLg&ByBRG~#&5CjUS9~%8Dc-{d40GOxM1b9f!h#VLpQcFwi^uYs^LYjH+v)+UEI`jLG3)!@LtR9yk1PBL93%wpv-}z_nU64 zbX849{_7D3K~twj3UO$dpso#omp(Rn9gV*3bzJin^N}8{NWmASkBLfV{icxhknun( zbbLEWj~At{kA^y_|9xD6dLYo2e01CPq!6ZC>9I8hj%YPiK(M z(#Hl=z=T9%hv8b0N&tWZ5()ZJIjy-o(XS%8)Klnjv#*6yD4?`I)@#W7X(>5*-wLWwIS(8%`xmkBC?7IAo4BkQDu5C7#hmUvxcStYJ#>siIRs9T8Ehu9=p9z zPLOV}VKo##j!H_jQ$G30_*GIAq<~PWQTYkbA)#rwyaUVLj}cmKPQhsbz`0kL`J7{_ zl@j!!9@LF;kQG*>tWdO4^wH<9`NN7MIuwuw!=)i|jDH1{pD zmQ6U7c00*;N>B~oGu%_qv+PP!N$9v6b3v<4&d{gJediDXO6`fim{$6VNf;C=k27&% z(ta4q)OnnxGyw3EDj}xKtnGSpnH7ruo8{qZx)A1u>_o-IuFT!$csGE()%jw+#d)Jv1Ghe1 zUlVF=pw8aC)TSD1P`2G-@xrA|;ul91C3W$~pSKt9Pb?#Q_U4=7EC(tp(9_&V8q1i`dHr^7qEN|wVT?@dKrDt|ofcJ}Ip6u%bueXsa}#-N@~(6P`-(#@ zrze?ecB{GtP2(HH7S*WwMbQnHEU3BJT7%c`Q5_Xm1rdeu19M0;RQWA~@FVk_gN=~_ zYfc`JIX#I~bfkPp-`L*IDzv;Aqj4|f=7H3-W$`;@5jU?(6Zy07S6~7T1r`tna?0re zs%gz9=Bo<|;Iel{t310z;Di}Ms2oXx5b8?BpoO7}WSex%g4d6Z(wjJRkO8MCNun$l zLxAp6D?;?o#;8=OQ__t7u6c&5Dk>0Grmnf)lYLjfDYR76>UKD$!FlkkKdkrzlfqr3 z*6-|Q$;3A4JCkCDF(gR3*(dDj(-7moBZKrp%?=7<_4Wd$fIxu2-OEUVR7R-(g+`-=Jyvt8edLoxTMv_~^!#+Jl6B=69rP z8LVTQx`6Den5+Lq?-67O)*60yvlw@HE>6Ro7-XGgAv&R9DYk$R;;GF$srG{nP%IUG zUE#2LqR@}rB$w4KIw39Zj!$d2D~SyWVW!s%qxCrV5di>KO%zrR$wRZr^gDqZ=~vby zl9;`o*zvjhj{VX=*7X=9ypoX=Xj zeTP+;SH0@-{nG*>mQK;+0@hkxnP+Uuy6XBTxo$mOXUo)|!v(68yrj8-=|!?=yF9ce zn!h@MJX6!SJ1HU2PeGRg%FClfP!GS)*W&ADamqz@3Q(=;2-xRw2+%kcECd;c?yjTu zTk}^yNeW1I-6cjO?>O#pc>y&l{i0~fW<=zGW{_g#s8r4Ub;wY_*4s&?we!@`-*tBY z{4`uDy!@)ypfHnTI0CRcqYjxEnEXnqo^U&?Y%)+CL}okz;{wvxF?^ioSN=*I(lq>p zh=RN+b1*!Wdt+<7{#0ePu`fEec`jG6q^Yc9=8P#s+v`mWw}1o^^YuPb*zjGmfU7lV zQ=Jld5^FuBn2lIpIQ)%O*S^n>iY^=dlg)qOI8tS3`Shat!uhaodzymZ$=S^dBk9-T z&nt5{h>@0s?xWsK-9tYtsBBD4Dg7^R1*? zsF``32{*K-T8>&f!h2~^EVeC+>!K!mPRROIMj+v&!^a#Rkp|ffemGG4uVjx-hZ1Ve zb)b(Kka_X1eW048n)Lw5C_Fnd8KzJ(*Cvg-wPi|wOKaHjkYr*2>BL}#H9#Sv;NIZz z;1~{E$rny0jx4hjKQ7;7PYL`&XINfB6Sw(w%b0xYAiYl6P}{F-F2ndSv1P#v)+D1r zNSu}xfeDj8iL`kQiq=Q9%BtMhS-pDXn;KH64|%|E`3zeWDZ{ZaW(2YY2nB~xD<7xF zQ9(N+1o_><*qUu+`GExISy^CtACm%hIN+|Q-cqRVY@*PpoA_LO#kE{n+$0Kq>%X#E z=Shh&q|Z)Nw<3{nfPMuc93iZDm^x5|NbOWAG>%>jFmTayz&xYA`rGe z^QJtlrAKzq&ANE8(|}c5-TQ`)=bsN=9*jZk1lNZ%@oSmsY8$%&iftCv$uS9C9+^ja zUMH=Mo^O%<^X=#A&sbPrtFn)tc@`(;D^H?*|+9a=*EH?;iS z3^h73jj7XfKyuiyyV^m92!bRdvo@f@rwH0APsPDO0)z0V^nR-qae4XM>N{2+=1uxL zTLDu#U03UDDqtsmA|~|ayMIgkboFmz0uR7Ewo1Frb`~PP@yij@5f9 zgZ>!{_WB-*HZ3ya_uVE96{pn4q9sI;I5=dZTi60fj{ro9hYeAS+1QToClHv>uchtZ z*FUeM`=RgOk%Y`l0^SQx+8{sr74oRtxe3U9-Ft?jf|eN1)+`~i^WJz+zHPWNJbNdI z-_lP{S{`DQg-bF`xiO(h=Ht7O4mscKy{CmU7Gsj8N8`tRpPM=Zp3Mb;B*Q{Eu;=4E zig>-={q4*;C^}eN;(he2@+yd;>TIH?H+eZK7+wx4du;hWBj1j$*haC zBuHP8x5^&?q5ld;r~h6Exo`+0wMaa{O}y9oJ3|_;%CoR=B*8j;#Dxi!5byAuFM=)t zmasM@C(=OvEjq3cZ1lG4GQztRQn>5FheU)BgZA+a|C+EX8CSlDf-`gU?&v+xfk=#S z#=e84$hlP%>7Qu(q>m0SnWFh)AJk0}aYLlCmsV&>o87{%3riP~@ZB zA04NP2Oz|kXiV{)M@uq-ULatS5o~t#Q7EwWhtGh_CYAC8p+AWaH@feq*K~_u@K>`6oh{<4A}6ZRk0dyV~ zY{9@2LWt0m67<~sogPJ70%d;T_OtT=u`~mHFs-kYli(5fF7|@{#ICS#WQUUarrX6@ z`vhKo+uydcLD}>pC+K}L`gdwp|LvSuw&NhU`THUmo}y*Z|0tk}jSnult$U2@Qm#|` zfki)9?~8+Mw1wg^rez|fw0b(y(-y!o?V(^#ag(%S>Uq2W6P6r9RzY-o)OOCeLUxXm z&eWdy&o)bE7Zz%Qj2K49g0}M}u}HpIM96j)8EBI=vw+_Jq7H=Q7j>}zp)ODa5uaH8 zn*&wsS3o;qOHs%aone$PZVZz@r>`Ae{KC-LknsXxW!B(ep0z}6V%Wkv^UuoA$T-BG zPAj-mB5;aqw#mZmkMKt%5{xf0_)EwNyF2K~3;@zi9mH4zOTlNzaKfd?B~CV_=SzgW zs8@^6K#8u(VDwtJc#gIX^=et`P2AJF(;x2z42qF}Jijc`#Vjn1|5qZghCDt{r2!Z{7#jQKqi+75*j>Q?|1p{xMP` z5};5ITg^_n9z2eRbs)aK)0c5K1w_C)Bkx|7VXax1g|=IAcN^oF$RzqEf6k&>_lVkN zYqM(JMkNOmgv&Z4M!9>ukpaXsJUz+uQy$-7#Nr#uiY-nmdU0=MC1uiq;r;N;4E3c zZXRvKD}cY-hyz!?OhhCeP(4BXR3(ez(HR46Q5;a}$UvWlzaJYo?(q$rPF6Bl^7`o9 z!(rG$-~#Kr+3RFUapKp3M8_cn$i9$H8vhNCyZ-J_Z zOl5%x&UO52ASgPfK8H;xA>HcwHh!ia+#6W0u#i`60v%nStml>I%miUY?!&-O(m-=| zu#Das2%_?oQLfmL_L#f)(0Zgkp?vK9r_Yoe&GNiC%R;}cdi}532GD`3mdrJ|!9mf7 zN2rkerV4YpVHV9;K4PA^ObelIdH5T38q)-7vR`U_0qYA5)pj9NZZYT-v z@nrohFDahCNUcA%13)I^V-CTSO-l2>2HxwbPruqyC21H^A2VHznu3S<%nR&6+1{Ws zW#2!EeE_Lw@-R3MXNSBnpysP4r2@I(S}Lv^=$Yj5IL4CGi`0Mg2a0g?poqpAtQ5(` z_hvc+6_20ol|d+d;RX0q!=@@rGmub~6S~jbI}`lLj`a%Zt??LmRoJZK(3PadXSXHi zc6l5Am_$zKQJv$PrsDZAy!!{o5993Kd7&WD5chIhr{QJLif@Bhf&^=@3sHvVP^7_w z*>%NHg#`ckAGY`vX+Y`;WPlJ#;r=cb*>juv7PM5_#z5TZdWkCwGpYhVCSx1AeK3|Q z$s%i9qSr2CnZfw9>{tg_)Cqg5b2-OkMy27qWRJe8LiB>YCX&rG}+A*%Jx4vjG}JAOgg$ciw< z9Uh_Qy$F`)Da_MhbTm1sk7qLA#&c?dAFO!^Yd%Z zONdQ^(x6MVN7mm@fSTFps97riyUgB)W^bg=hS)y)}?irUXZl%UkpQLkvjY941s=p&$uyAe|ZYa zA?_8UC$x9^WSz>-lSYDSmE-!rE}a8QQG5xQfb-0mhTrs}7(5S|hk4uQX>Q%`d4 zq1Z;m?7QmdfhL;xUkjdlpE%wxBHNuxP9BaIs~~}+nZK^5rD$|x7atGLbpq9B@1dnc2I zg~fz`51V%0@6p$Z`#GNRuNldP{<+ZR!r4~@-tBZrdALAv`jiby?W^LXuGSSJxG>b+ zZvO!H9@OY7v^YjxZQ%8AD6Pl+Kov|@!=GnBNcg}RrIxlH}}q>27HlDT@X zT@pI^_wzNww5~C;ceKD4r4hbam-4Wjs7WWWVA51{caPhA0pG`EZIV1LO}7k5-RBI~ zGXsLtGn+mP=?_a#A?L8P1-uvv#JxKi4VC%5_j%x*cV3P&ycI?V<}muCP1_v` z&=`AI7p4Mm(qV={;L%|eyLtz(iv6!*3V#2GhCSYbu-)z6bp&FE>7W=65BMIT3^!=+ z%YK^RW#@_cazzv-LLZ!F!O6z(hq^*=mHu;2Mmat=5k{xtA06>4O$13t8(3d%G`%8U zN-%a5QHcBml`F$kPR#N$riiN6T7DhuZk6dqthDmI(K3Fzd$(&dW5{H+$b@x*S#)-i zB>ps$0ms!+NYH}|)WOo~`B;9EO0aO4hvA?-^T@I`?9$Bf}AcAix_fue;*XaAzBy4E2})gu@yngc1NG0TfOR$ zuAbDQ5mFj=Vyj~Yw+FI_Hv;KXWvQn@>J^HfqXD@Gncxm+=uzQCGtie$6_wir(v*wh zr~*}X3?*|kQ2eFvK^&|%k_~(n^>sWECyyiPdkTKd(wJx`Oz+NPxffS1kX$73m#eX` z5p**Lpq8%ipW3SdWc;!>=UaKr1<0?Bf`6uX{8lowYd;izc}^@fgECyeM>nS9 zM3-e7Vs`{vyo*8t$fzMTUnSLUi2-zclIBIfol#*5SYz}n790s@ll5_PY zrXElxGQO;N*NKmny3i9HU)EZ;mZT!xae|)L5f@ioUFFw}lC!8=Y#R%Oo*KzvY2^w6 z{;3P_{IZv=l;mzk!4}zLLR6(X(A3A$FIcu~5SnZvF$}YfZIKT9fNgkK4$R~pEB!f& zPkM;9Uhf7*V?Tt^joK`oPIbLPx0*=FodO{vDpak@Cbg0Dg;dKG08Z8ByQlyi&*}GwJ%_Ad$%>wN zOVP3(Z3`U%u!HlmvF9$|!3@Rgl~){oVK!``95lO4N2%qwBcL>tzYZFh#j9e^y9#HB zU#y;(68sd&Apx5cSIa@wQV^O$#PDMoeF1>%jqj!wh20D>D6n zfEk-ScO)ga!rLuTzK-izN_bh~Vy3<|f*cFPUEw(vl-1L^C3)d~=R?3`hN}qV>AJ60pBVESa8IRI z3{Cdt^{7S5Qoa!6+rtBe?8#!MJR;ea<61+P^lR=dMRq}D)^;A(heVaK;r|=~b3;F( zd%n*)j$d)x>lgEHm^AKzQ<*~z=Gn&A8TszfGJ4j+*2*{sgYixUTb}6qVbs-io|c|& z>}w{_Ud=0IzYFQSJHheDi%4bUrc%Jj72ODMxDF7gY)JpPEM0A?gj|^^$O}(=|`J{L>{9#!aBfmKYd*dv)J6 zhG8|TD@Kej?*UK`$WTqmM0*^~bYGD~MMLx~@@N&MeONNQ1x->-zLt)gW$EbO{=v_l zlF$YHVIt*|B*)zXHaLS4nmMLfMVB#(dUIgI0 zgAA!DE8*S61wfqet!U^_P&Q>ae8$8n`dKlPgla=>*q=9*u~PF zo)8gWdlH(}bbUt&d)^%T?*V)%lbMCNQ460D@r9yxws`n25&Fz#JGVCREI$5>}IO-u{O6l&|ReIWHwcsaaW3~AbfMPa-_ zT$bdHQq2Ky7njoJ#C{tT=|GFPTliTdSMS$BhB5eF7v&Dyzcf#L6aCc;2>!d~ThaJu z*$I-4xH!Gfc)?`8rkC54=})P)Gbv>o+k=_IDc&Iem!V&4Y!KdU_TX84omn zj%KK`6abcE<%!E}nhw{do?fX=8YT9=m9-bu+anBrFfwb6S(TnCTH$?5lc>luJIr9T z($x$B98%6cu#C6QqTg-khfp&d+uyoodhFc;Kt{sLgTdIs9#lIwzko7qr?>=<(3&Q3 ziaa~s#NCn8-Wu>W<>e}oXYHWsN=Y8xZEwEsDe1=6-Ve;uF8}aDKU({D*AHS zAd$rT&zzkbh}xYc{2Z6ix9Tv1Chh*%Qe8pk8l`5&%coD4WI*Dr`zE;kBT`rZ6J4-h zh9n_i_08Hm5_ekP^+}P?5Yc#+{HKw#gN*$WTY?5-%q>2I)>;EQw?N3jrNY%7Af>u# z#03<&%5+g`!=$!82L}gg&Fuf=d?edQVY6Y&s;@IdBTcFCWVbIGvN%ZDpH4BdP0;5X z=Wz>8M7HGdT&&UpNj4qf$QGIDM9%pAmtV`SwxFp5fk;9crl-WQ(~g{?M@E9qTUCac zI#$~#sfG`O7}vhHZpyVy@*<3vr$eMtH{Cq(|5$@?wZ~gXI1J+UeAiSSr8Y<=#lH61!ljR<*;6|?VIf+Hw8-Bx^ zI8Q5Vv!lw7f59oi@PSfHSRmp8gr(mmI2xw=oXwM;BB4Hgi2R|A8*~Vu4U0$s1j&q% zNCT^~9?x39g=))lC5;&ZwYnwD`NqmXs&X6x!0ySIBU4k7Rcb~1^>>8(t0f>{` z4~d2-pBPG(^v%Rej!%s9)m^<+v~od44@u`2>Hu)y@&nRQ2!V--9BC`%du)(DM(?nl z&?Y;sD%>jaj`c64)d$SiQ(o0@`M3XcN)#YC`ptOc$}|IM+oyptxIFWn~Xev@wlz|ZYdkJ*Bh!9hp!O>FmUiT1d5FSCh-qgjAz131?r2&JBG($QayYUTwhG_Z8+X9y3 z{N3cUyYR>O*UD`XYgg5C0|cne#Ql(m%q#AIDTSy2Se!*G-Dl8MGw&ZQ$4p(KCxTYo zjH}xKpsFPjmLAV{*H-ChX?G)1&grU;9WyqNN)ytsQdGq*u2bnEM*UsG>KO1{9BSQ( zHGS)Fzu2b1C9?pf=J*>ldXI@;w+bCFRxvCkitE1gQii96iVm*j^s5u`JD!W54K=ks zNg_^T{Ip$uPX!JkfAPmHyR!fIV!km9+%;r_ za4BdBHlHe(6y6v+y)1slrYD+PF|R4())fOwE?Y;Ju7r(1%bRC;l!hnDdv62A5kS?8 zcf_c3eTpSNz@r4>-a0`ZT~~;Dj-p#)^<}I%(4}2e>g)Y}6CV~hbcv%4IwYX91{&Wq z&%c~^U1FDBuAkMN30pZ?qF711x%c7Bg6Cicj7`uD=WolPHM{1I9H^gVUS_;J@yecz zCLowIH)HPZBt!li`O?>`RzcM=yC23jv}-}3xNhCeinsDG)G%82(gYD<`0bB!wa576 z8fF?(gGxRFIZWb%$Y`RR5|cyOTWmoi_rm&|`4p|swi4+^7KWKEh&I;fu|NKHc(pmc zf3$(phV`UCD|c>@=*U$l`_GMDoZJw6*CHPfpqsijB|^W%Oj`s;$%9_kttoZD*A)vl z#{Q=D5)qNsVdn9DrBz}r0mWfGvL`Zxi+8(qpbXR28?MEv(&(mpbftd{R)8mZd#SFf zY<89SRCG?n$B&M2MtH-k)FS=xks#S17Yqta&Z*`xK3NQFyKp-~jF?>EV`s$4s%o4H z_;T`p83Xt~#=!lLG2k2;3s{$zI9=r_$K9N5;kbfOFOiTv zG4!+No^}KdL5+u{lkLHu;YNjEnyJIAR*7MsB&m;)TCs2af$7w`(ClJw3h7=;-cv!+7uoIolU&^7`oqM28wiixbGb4v{(=|`<3Zd@HH?zQPho7Ohv;@2PorBuex@X$e% z4n6waUsW&dR3jSWt;Z{iFUroOwUS#W!gq%+aeRY$HiO;<#AtweRrjMH3Gqj&Ax)-x zI}L*M^<2}3g(Q0$1N$XK&DO+*YF@a1O1sGYCiw08&{RI^jex3Qd2I-T{WYSc`X~+Z zBI>xjBhW?Ne7R4105bs_cXMVU%+3)U5KwvQ0H@#vNqTI!6!g3xEkne92>7hub7wEx zY68h82iNrR!fXAABP;?P~rD7l*33u7gnD|3(1TaMUBEmPRK z%Znfx8NLv3-(kUu#PiJr&9MP5ollD{(xuF5YyY^+u;GaD`X8RboWpL=IrzS22y<^` z?Y?~$)8Wizx@!41em5EpoTA&|-G}M&8Fa{lM?~-%9?XMmS{N~c4g_M<8cNZEY|W_z z>5-fN?YKn4oSDf!TP?V^Yr-&-A9%-VZ8o{-gqr=ELqkp|>C0!`tyTDQSut!Y@V0&X z3bCZ3nZ}GBMZ^HB1#}lVarOFBD6=P}aqqtEt!s09;qLz+=J$;gJXIhAjL{1GxAL}& z{d1NyoQ;=`q}3+&UHdC`<3up1K}}b5tjNnS)y9ZX(K3Qvw~GU3b_MLVu4a!f_dzb1 z3aIlDZ;GOQ^vn%8_~%)k$-JOl6#*(z6!)>b9I-S?hzwb*W%;f+4&-WdrWObHhTqg$ zVpJ~_PvA~*u>#R zj#gRQL4?j-QV7R(l?PCF?!qtjlJFj)y6aBD?RvpsP-Z;n1(oI{aryS%+K_|~+THIzKV zeL^iT!IR79KnW&Ks!nlJ%aohv&T*y|G5gc{spnt$&IQQl_yMK*8}SnLJ>rpsyQUzo zi!76`@V zGbbqneWq0-mOijV9c=5(KlMrLd6CM@ZB9;+3~Tbx@a%PxPxn)Z5l*=?*8o!`TP2ijkJ1 zJ~-?5^h7l#$lXsMcZoSvr*m~_{P{l}ShjKXC>Ko^i0Fc%w{O^UlR^wn1S~N<53Qds z!-)#sx?`jOr6m05d4><9jsWg-OpDr&A()+FeRu0Vq6iM?vytyBMGY5}(@9dFpxjJDmDoBPpq+&tVs zbLJB!&33r(dkK=5`6L?`2{T*YClyaso9-@V1U}Q}VRs!o6+Vf-i58>pO>d3S^#B2K zATQwf74xiC?@#6c2a){_=1 zhN%;N*A{6LMGABqY+Z#&2X9i?uUR`}ZeMyg+0AmTH;i|-K%3^(&0ftUy4AEcP z!?RpC?DCk!8aywbSsf%o#>12<{fJxIR5@=j^|QKmGLG=twA_clHoHFT#0wgBM-hLA zgPEhwqqFCIwKHEkjn~hhS(EtP^-Ke%qrPcv!Z@Q=!;Z-z+?qzJxQI*=Fh1WS?2UsE z`G2kAJh54TjQS+L%P?%kyMXuZRay;V1Ak@dEJ~(KE#Z~`u-B8j-@a~LCai`b2&EZ< z?p0}tSt;>i7724nY_70{hX6}6Zp@r5@i~yeMBE)vM_5E~U|U?EkMpal@PRkCsmGW( z4&(f!v2hidZJr6F=3=lBB_*x3)0~wI;2Dz~^alFnmGD@jgpPX*5kHEY=9tiqlCa?0 z17jJ+SLr&xoX>5q9fj_iIoquVmJn(^Pmf#3v<)$CIzDga%u*=0I&_XQ9K~Ok`H9~* z#rNS%D$O~(4Zcvwh*cVxCc#y)!y&sIoMEc+V>2iar`}unsT-y3!8Ym{@@6!1ehTj7 z_&MLFPvj@!bU5Cl6)k`CE}vIY(QK9fo#;kk>5=_FfASovTDt`*AYvM=G$xkBm>j8( zC{C}Eyo8u(bV`%~z*Kr^p7!eXuqmzTk3pWQ9}fWYijdR6iZqI4nol==grJm>>9jJ}h8U`*$a^j~~6! zc=2~L>;(Y@+nMu3G)oRiRJYpIeJ#JPN2TMt@?LoPNy`Bk4+xy(kAQk738oDlz7yC9 z_{eK}V8uT(WFC(828#Y%!E_SED&W|rx0%-8l9t3N#D|KxX4tBkeD&jjdt zvMBj{E_+6$$_7nbyoC?MF&Kpsr^hXUd4Xu)2NflWW~`X8Z%U#u1(M7_v+hD0jl>~z znS7Zu(B21;j66#QvINXAY-B)rqJK_IA&fCv-ah31D*6qJ{4>wX1nkC?=2+(aomdiDqJ0lBqHr@k6vMU7(s zhpj?;GbhVQb8Grj14M&#nZ5W0>t zQ|bkystp!BG&9{pplPXB2@&*T&=7(+OpD9anrY={UJ)XxIHx~f(#EvDP=^Q6IJzh; z{zcrxnS(tCG{_34gv%|K(7wJRL_X= zxmRz~X$<7RBu^ouPqk7~a@j{N$VC^afP<0~wi6cb2i?o1t1w2l=Uvi1e@)U<1*ybF z8cjjA3hE}5(yx_&YCxGMC696NXZ$IsuACzS;ZpJ6qqbuhHbu0sYLghe>plOA99N9q z8cqotT886`XDJYn6nT?XukU^n`F=YC7UZqV=dkQG-vzhV;WhFhGZCR3t)3$zZe_)a z5s-TBUrs|{p}QdlCiOvP%Dx){sz__G6!aX10WraL`)@>*xK77*?s}HsA#>3ch<5N-Es~jY$a2kto(;H7A6x-U+8{8~Ur(K2m zQ`eeUG=0p~1+6$Zx>KmRV&eNU-xHak%-d^K1M!w+AzCzT32GRF8xrYTUCj>Qy#biV zG|RQqIioV!*t%SRlL_+D?mO@>$XD@$XKv>c#>1px477&$@=qYKFY$pl$}->#EQsti z4B3@HIEEa*?o;>#8o;pDiCo~HP!Yye7gkIF#r`79!vG;a9tZ%E0B*{axF)#Boy3O) z<*Y`N2zX3HVmbH{7I|Q0f>i1QPi6OU0z|rJ z#9T#*MIvOf`**W~SWb}Ap36+bgYy_+U~`JI*=$?w3(P3z#<_I`V60f6w0Zswpfd&c z{1xu+w2NPdy8qqJoBxF!<$tjIZ$A&vdnZ2FA+%nMzZx=@ktT{X*iBS8t%sMHvYK`3z zPDLS`(Tfi%GdRH}i_T~~=f{nmbZ|+^1{{oLuDk;X!(QE5HP8eL$Jko(yDefoC}AR; zh=LWu@d-}zo@a>t9d(XFi(=e+q%VF#HphTB=$j`_qY4}y|mj69QHFuIC_Ky!p-kJRP?@sEXTePfI7wQOWS z6KCzR4?i=z6nTtF?Cl9T{g#$6wv=XyyRlQf{3NdMSH#W_a2#v}$UqSpCmscin);e!1cPJ53f(HNm0wO$Sv zMUfpQUBWUAbvFPaqbcUq?8&dI!1eWx1zICmw%*B5;I6CP*?ug#+i`zY!7Lx?9d8mO zNu-2=#ZDk|PYPQ^sJg9qOyD&+u|E<*`0EeCNRIL>!U=^f{;MQt0}Xww?e|M6uW)d$ z2;Z@I$uJ%SiHkh2h1J z$5i#AAp!ifsGFL8a>s1+;S=>6==+S<^_X`^71Mwcv@vbh5C`Xi+LuDjM zHG{Y=f2{6Hnp6y|90BDcoHceE-pGWZtMhFM7#zR<2dqF-zY?rqO5|_91hki@FnW{2 zZC)_1LX+_d4MUH14m2YEs`vN`Pwus}8m0$Wi)AhTI!k+Ewh)-J*NR|sr&-ToISszc z=_>$O@{c!ZK(!(b^)NP7QC*rkBx*^l?~8rS>>13x`c+3SOE{hNzZHjouyT)p6yKIp z{n#fs`9IT4uEUE5`)tlReQzugq|YOR_7)m9E^Z;vjk#3Of}c^L$@6)=eKvGBBM$Yw z1pE5YuAaHGZ%=+3PH_w@8#bf$k&P(Nr~ZRnsgbgt!`@+j%BDyYLrL`ur=s*F4K?HsrQ3dQV)2iFo|(M~%lTnyXgWk2pKJ^|K?9 zp6n}9ubQfx$@W17`nx^J_1%gjY`zsg9}1!8J~u0_Ww_G;8B{h#zp$D&?Z))=v?4K{ z^!H=ZXkNeo0006BPyhe}Tmha4EwU0@0D^)a9iI>YE3vvnjwJEaZnjWjw&M1aCblXK zhXieyfY!vXf0F;YRnlz-^)=EH17reF*&t+Uf*qqG>fFKN>R<0q*9O#hVPbHOo9=g& z=Fv#rZ$X_x$K-&Ust9H0_+Ffwz2bej*(idUv*h3ReMp(K$@SM>#Mm3kRv+>D9i*U+ zoCYehZsv=NFTlT6UL0RGt#QVN%sX4=Ia|s#vK>J9EZe zJ>4Iq9PX@!+f%y9tjo9j8;XWLh=zs`=v;h;q+Z5L$^q@&iL-%l*@_O&SIYd*s7lny z$qU!Ux<8uYV>sqXA9P8t3cR`dwJ%9`w5e8N6muFlyoU6#z%fMfF>>{^tO4Q#>KWh* zL<2h%vKyhU>nWfL8BI-Y4M9*+PA;;jE1grJdR1>kw|u)HnBM+2aGB8rW`iOzd+*R- zPue*;*@BPV>VvoHgGq>O*a;|(l_Q(T66vDR<05uG^r_ny=pFnbO%d{#`7MR&Y({KXGl^@cI%Xt3roL741vaJ!hKcT_8)L@*Xg?}W|>+h|j$ zr-_v3ZSgALxmBkvXtbP?Ug-6(@+D=c=OOIl_fJ1Lcd-}ZX2;j@@d6xjlA*US_+a5> zrfQN}1T#4c=5gLv^VM==Jbt7tN3#Ho&2#?v z@Jy1)Bz89K0ZSBEM}dAXbV)g)$!JKvjJhUAkMq-w>AMa}*PF5?uo!g6eL@wBgdgCF`DD|KL1sDP8Js*e z1qPG0eCqd(X=Q>ff4h9}C9mrlTq8)-x$DR$pyFUqodie?6oC{p!r@`K+nFy>8SBbn z^Oud7ziU8V+v22YS<&xzm<_+I+M&WZ%3bSHn5-7ccc!}~k!G7Kd7YB7Nfjo4PG^0{ zIVj=qxKsiHJU}F^M43Z+GQNA3H3*5V#0&`{#RZQc8Wjzt2WNq?;4Cy4kmpvFcaugy z5mMA80RLTOjmqiB7o;jS(=R(Oswwi;8WxOMIzpKV6~4NJB9*-Anx!8~l=H14S7g&S_iYw)s;B96`Uz;Q#hupDqI`xS z%8NAg)pYh%mNdy-vZj={qIA5J9hKF$ax1%06}T&#E3ywQOo&%|z7459S0+G= z?mm@yQKLQ_^QHf8FqCV1;A1O8NmSdcASMBc01fa9Sb2Scj}Yk2G_L@gAuDKRwqP9N zDpV_I$E^H-7r*EvvckS?$Po+>FWdvVAsQ70#u~#yuuvlyBVVd0)goGL#zZit z=uAud)g}sLvKf+TUU~(-s+s741SH?2L1qec<>Bn^>D$JWf(lk-#u#NWGi^hWUs0|o zj1e!+NT|&LB$IH+OJzN$bhbl@LPG0nCP$qEDuufJ zfF={zwq`uc0&zvKTQU#R)J?-5v0ppTdH%K+WX~k9cZZdV+?z;xsQpQCzEC68dYp5w zmo7{(nzt26J$P#_?vy8=PVeVG{jaBA!&tg?b)cgy1ZU`VkR6)5tTGsKL zaUhx2VymmGq=7m4!qC$tg>8BRRkkN$DJi|ztG*nH4)7zB2 zw8B#iZs@i1|18j|%5iu-R=qg&%Pr1Yv2#mi3yzKSNk>arL^QAAMzCrma~_1ImwE*x z)GZ#IR85QuH5T-n65ALLD|^n%9kB9QR~E5#V`~WT4$-<5KI9^+TR%e_8J_I z?>@fl*$cD4g3>l7stt6D))5r)oFFL#1S|jqcpl3yB)!=R%Kc@ibetwyV{Y19tFM!3 zWB>qVzabhG1->51AeCa9;=_eZscBVYr~v6%Q5B#F3q|(lRRBA;Z$lb8oze6LK>PLvDTGO=v7Q(lV%~8@J233frpertE*sUsX_<7U}tblt{fe7{-!EVdQH!&!0K`u7O{Cvm#At~0G`Ypfpj#O+bV+C{`Ca| z2&MgpTCvY7DzlWYs1pPU>FS-&JY%DCPO#6^WxOv()=4r~*RvG>9-F4)F64*fk66Z+ zk!B7D7OJp?(|W*}`&#KZ=&`caq8y1Bbpa0!3t4grrPXa&+2o22#PN?zsRyw% zg2sR6y%vVUQ5C#=y|l-Z$9?CH7#t}qe9cr&si>3EKZV)a_LMIV@hc+_vD#VXva+(9 zpsKveL}l?~LokRRatNW2L?Cd1zm(SfJQW2#Ay`DPi&(n(q-tYZQC0|yT*oc_4OKeJ zig&_A3S{4U*ragZZyxGpXmI=uld)p9<-4MXe@Ca21sJW{T?au|7JU_Hq~ofs>nc$~ zfZ{BqV}{xgAeAn@R~BmaE2X#BG)?vIx`@==>Wbh_vKs}EIoB+*wr`)=VYl)|XF|;A z`8PXGJej(B1W=`U8WcSYF+={jPrJsQUxffofT-wD*bML&Aeu(~3gp|TRImdlp|hxM z77e65-PjKhW2PY*RTYw$#iBvbWHT5gHM77*-a?3=)yxRa+VsrmURuec^^M*Bzhw#4 zV{K)}NaCqvs@gti@hdfBR$Lw2IzfyWAQDnkl?WWCEU~#TlAC(`8v0t8gFqmrZ$J5X zTrD+-+o)>Q$JT1x#a*gL60zc@hK=2TlM^qT-zsy%P}g<~J+8E*F@2enHN_60^eQDm zj3rP)-;IeTNeJVXL^54-8H)QtkW>tI_E_lT#;Jmi>AW#)ekqBjYWMtArnF(`(Oc8L ziv}sdET=6634^?Y%BI*y!P0BL%4x<+=M`<>{H^|>m%s%d9l>o3YhCqx92&cJz%lU| zV%`<)qqpTWFf;MPu1`K8)#;)NDpMFv4H1Bhxuw(5hQRz-4l@noJD3G=f`*i=*3!q~ zboxWi7R!0vXi3##6>ud40<4tD$OVOaEiMb88bU29eD=cC1Yq0AAsSTemXL^H!Wc+V z5E;3Qb|S5pXd?(9P+;qfmBHmueX^6=4}5kXrsG*)wOGS88G|-(*q2eFxS~~kqVLNm z;Y1~)e_Cv>%eK?d-Ye*hUODn1@>J`9#QLO5sogNn#fe{|SZ8P~Fj&pfp&>3-*5M75 zUN`PY)br!~Q>I*GAGo4Oan~C+MRVKjD!~?~D^o&Rr8;%3y~Pa_iNQOmaQb@2FxxlO z&Ds8>Na$PlJc`c`oW(iJL&(J&4VZE;mxkPO7()_irMkYsJV0?G@s>B!b;-!r2y3ah zx{>L2|CARoQJJ#%fE~g4a>!HSUYdQmLT{fSJ=?jY6rmW?$3Y;MxC!eVB@6>VgweaY z%HK~w0}p6y-&FOtmE`HH|ExHg=Q2qOC~>RhX!qh))8vIS1E)ufuCv67%0jsBAsQ6* zrI18oQJ{!YBMi)=kPC%Nz*Si0Ui8zvXSIaFxtqV^8)uSZ*wSn+8nGw0ZFjcUz*dp`(o4 zcqu&NnkZ7R0e77IlO(YsnF)<_c0>Lz!Ln7siTVbtCHp;M6s%kH!+Es124iev7hOHa z4z*c6b99DKSVcuuZm0lMKO1-xsbl|jJR?V4YR;=(y6dyLF8=G?rQ&(0z3OLb4kmiB z1w$}!KOq^^{TYyngVIN91TXJ>5OErfz)PYDS!Yd80mD4>`HBt|NcL*?T)EZifvr-FA{$N({T|JtbX8i?X9k_1(le7o1ZF z%7HqYdxH1rQpO_+P>@K*8x*AwxQVockW&mYqM|b+JtvbgpDiIfz2fM8hj%+7v19fE zJD)W$5DmqPuA)XJX^3E`2PIGe$@!m=oV4j3$J%#Q_?q6-!uDZ|qFwXr)QSq0pJmWj zx6q5fp9ADTIRrD*AsQ6*nUscMQEXH;AqW*!kj#yN5eUIXh7K+;R%KP_NIsq5ulGU` z(Uh{GHTScGgEP@nxS4rp- zz_H8lmF%jvhH}0>fEp@Id}A7xmu~-IPRW>}e#PETidw7LSTKF*$ZJIPgxIzpkzD-5 zX4%qwBhkDDIU4o_!M3$K3fB&(>(#Y4z@(O?Es#_&C4gwjm8sZQCtPqV{2UwjsE;XP zTdZ~Wcvnwd+N`3NMzny*?`cIbKm=^@B|BZI758k;*U&RH#&4iN=$!z zBv_RnjF?VB^C(Uxsm=+rMUKr+!mJg~C;A~8RTZ6&P-39OYY+jF_j{#Cf}&(WZjnG2 ziR@<&7L#2XE^UZkm+fdLsoCX$UKwrq1AFST064;-8+w^-p~iP}cqU8yAJA)+n0xB= zuw>X*bGn5PFkUFmj|~?Nn~n%?MFb>eY)b7zIIA|%yYds;>mtG z>1V&d&QlsIIBLd%tlDUi|FXqhCFPl=@~#T**Ls)pUcBoyTP@bwI=9!uuK`ibFa+oZ z5QPnZWD9hP0ExAZ{5Mgf)gDzHA&N-iZ(H}(Fb01i8Wi=O5on|_6rzJORxr>EX>yXR zu|AGwA1>22?4min5j-+lhy)wIw24C>f;(Hf;Z(l~2QD4nI4Uh~%a<-+kc`mKMwlOkxHC(Vi64XI2%3n)7Fiad&e$ z$35*tL9d-oWGN3qO5vlalt`$L_3Ra>t*J^55%{p!Tsv8F3Mdsb6$<U#*U%m|A(;qh8^W#h7 zHq5n48Q@)gixgj9cBfOyk~^-a;dt39Ng5`t?kcNRB^P>$-H3WP#Bv zG)5_q0>xEOg<8dG0MN)TCk%CfJ-SR$3ORc}jY`QT5NQ7y`wY6)({v2i9QIj8(`2eL z;l3_(!oyq6B_weO1q+(8AVE5wS8`}Vo5Z{gSR`H)m#52tKrmj9pYOAQ&*_K zZ)Ad&vu37#cQ|HFLp0d<>VryJUm)?xKO)6ZYONw9cC$F};9*h$oak;9jta|dhBb(_ zRK}m18h+g;T=gAyV`U+2UuBy>HC!v87e(6$Vp|>lI$P7L%h~axVtcEnsiT7{9qFofIC2H^sGlQY2DJk`O;FQlzrDXiRVWso6N34CT-!Es8dT2?L5R8FOkxQb&q(pBkA!DP?bQs2f4k~g<~ZR%1~*PUY&zN4f7NU!}MF|Yc945Cv(7{P&Ar%Qrz z2Y&vJZi&SMLOy_CoI`Ey3vMg;-wHhx!XLOG3&|lWRPC-RgJBTBC5~rT8<)D39AFBv zB@2ZQ1MoP3R!v2h&-v0}ePNE9C_qq=@y0lQEJv%*O^){RW7MZlyyK79vLR%WbY+in2Ag%YJg&j|vM?8MJTJx3DI|Y$eim7gfMd0BJCFKnV^65P*TL zB_&j$FJW~KmkJ&S;BX8k#?6mjATOGy2bKE@#aWI))3=#;ddM_(`Gk>HYAzUKLQANy z`JV!b&at)+Pghn__HgMfL(jpe7#~YmeLw@-^Y+9Lw)>9{ z4?hR;1_y`007B64^XqvX!~i_+WV9w7AxzmyS*F;C8!+0U18y=PH(A31mD3Wnm?~<_)Gr7qbI^2hItS3fH(UEzV>ii6QwD#hlaKQAPeV>VOWWMMZHWuAm|y$leF z;%uyWT;Gewn2DXg-8n^9MZwAlRlOFQGN&U_Pyjm$Xs~DiL>j2Ob(F=RAkXBML!%T; zD}E-2{KDC!sVgAu1v9+d7Wg)*sBwP-9N=~_?fMD5As~~7Se-c8_Ws}h_W5;de@gXJ zC@~2ts9rm1>2@4LX>u&2P5|g3WE2sH3+NRpA;N8(VZ~hIEt9_(W{oe1*gleVjtaj+zyuQh2D@%q$?2=OAAT)xGqj+BLDwcz{&Rg_c{1O#`IjUxjWLf7kH6-F8S!f=UWv zQX2ndwQaj?&Y)jam2?l)r;uG>16piYbnJD>m9kqS(D~cd5s8*97n*+d{HGcJ~^wGC!{u|BalYK1b^b}RFVCI5v#DA{l;`pX6n zRpu%__EwfsQ`FaM>b=`ZcQn!QhNg7LvNbea3JOHy9HFT>ge^5&K&#ibV{z`i4{xmQ zE%~~n50}}=RzpK&B_Ypt0hqnjGl?v;9F^3bdb^Q3#thYpt7xWuj`v-HtODfZ@J@qD z&BH9-Ra%G?J6J(auS-st0rwtcVYWf4gqW|&f&dFoSnJEu2gI%hpCp|EZR&rtIchg5fbp4?wj;O{TM6t8Ws)WY z9sVN9mA!l3#zp_)Y|45(E@j+&W9ZgsR;fQ!|}!*>zU;{}}_v z;`o!$GEgOJExrIYrbpi|i4as`1G-8U7+~r0pEvu^g;)-X8yzuAy#lQ%EXIG+VUg(E zlsNe;PwP+PKuKX)woPIUX^Yzg z7Zu3d6?eh96Iq+ZcWQ{#E^4C(j~kZ<{EH=@ZkC_5fk`z8Q>^YIWb4l#AxJEN{RkI1 zt;i?=XAAls8zE$p{Eh}0210p39N^EI=#dooq0zqI4ej2C$(M-e80Wb3SCqM~33e5h zgtB_<`==}nmWyCQ9r;kOo-4toHo^drTTCOxw-*wN*Q&?i}D3 zt;)(14p?BN@$yLLMYK2#m0i?=@>v|h@eFwc(b4(lC@y-B`RD?h3bmO*=Gr+^`8|LY z<3Q&eWa+^)7BJO17UQIYb2PGht$MJm{PD+t4p;gST<+hHD}d0j6NxXjI06sM^6n%#Ee1TU+GzhLQne9pvsGgqIuO&Iz6EBYz~Zehb+| zlDGB%CLvci7GUu?D|V%_#?A z6qK6ySo@;YKf>!4Qo%DEa+j+>M2378#1NZ0Yz{##vhzi+#oMkONkd$R8Ym;wpM?(~ zy&69={n0aVG7JTe3?hM z!3txa&zn=x!-g^yt|4mhp7%>7#^Vt3L%?plkibo58rky^U)c{lKNP8KY}`V8MtRKR z&2-YrR<4@JR2%YR`LbcO&!8U%DGh-ze~GX*PC@B)Uoal1;8n*g>~d-a{=2;+C58aL zgs&=BPJKyutch%o{@E>fgw#i8^%vAjy{gPzTQq5rp#D#sBMf zfD(OGQ^eFz&e=#rEIjdO`nMm-71G9@f@htk(Mi8+UjS#^}fjJbc>xtT;Z7?XS ze>u!JhzK9FV84+1cI;izc~#Y@C1)^5obfl6#YHXZc+^MJOriL0qfaO3R>S0T*|x*B zQEYm((a=}K1I%$tS?0jd5a+VMnTozf-M3v^g(mCk-N8i^gxzS+~I0;Vtrr_r zn8yxnM))pX`7QMh-66z&@5)kzlMOr>8jaJltZmqL|DYWtd%T5!H6YFOk&589^JwiQXA^`ylrV5VKam$77F5Hw$lt_&l;&jFi(d} zlc0RJ9M97hd%Itaz3BZ5UxQ!22X5t*YNNkOw z3bREnLA*&kUI1b8T}6<9Ff&@g0sK7t6Jkb`zm!gR=vRnbFdq=nyB#Vy{d+uw)?i^n z)u#(zoE8EvbAZs!yO}`CbM5&r;uECkRweUhw0=cDB5T9o+M_A6K$VOp z8;><2mCe0q!!Ct#D3COMCT`Q{!pbj4^gC$rFdUk#OH}Jyzot_l@cQ(e=A}B^%eH9- zcD7wB)@O zpv~`BNY!ys$)@OhmeHZ`rAGHFC~J)TM{%Fb`C2aiXLJDpdFdS8N$vKMN^OBikktfb zJrAd2+*x^mB!rz2Ha(r1njd&s8=9sZkv z2?KoJAu2$@dR@~2_=Jr|Y#$af8yD9&fykBYlHt%x7`z8&^Y0C9HhR{lUnXY^a|6z? z4n9>H%;4?g`qWG>k%$p3YsZW>S>PFkiQSss{#G?HJ98>?Q-|qEc^?fKX5raFWJ1gt z2d-xD0Al2sEeO8O9Qkt#LnNI*RQ!fM7@J)4-AZ`RHX^Me=kZPws`2v!&k={L7Bi__ zK#3>oYvkhh9JnN<$P7f|@y{i`5yk`C*|W*o&2MBknMNS=u#z^kcY-=2dzJ|+ce`v| zUZZJC7Wiey@#n;f3SJ!$))Z7XC|CWsP-DMHU)H2~RhzO#@b|jl5m<{MZW{PW%(+}37P`u2NvTH)fHh@+i2l!hkavBoMGWFcE%Nk)UgFRwb+ zaZ!upErd*2TZ&~%ctEu`5~x9e(itFAgHE9}`DN~d1HNxQaoaHIHVdDCDUtUEK}!+n zf349OgHX|E2I{BTWcfrZO#&+#9WLkT^+VDrBVWC5Zw^2YJoXDbD=U6D=ld_!potN1 z000022~Yq41K$Cj3N^A4TL1tvwa50=cGUsxr9JnXFte!-g?9Bzwo_H2#W{~Z{o>JW z$909FxmpDdzN~A@#p_j#_>vGM@l^xbUee5f$D)t@ROC{|i48YARv!xsR%~KeY&A2S z8oTiP5LL&jI>j5iw3t9ZUj3xDQ?P`|GNQD*hFj$qv=6Wgk~it@JP4Q`;itmw?V1%F z^(zfKP2a%1Ge=xEJ8A)^gN8ngmSu%K?TUO&u6z5RNzH-m!yQSmTj+?c&sc`Fo%n$F zs9Ur8;bTmA&<;C~+(OLr9{q3qcj}J)wd;k(uY>7j=1v2?EL ze|%2oL@8=8_f~k`A0ZdLM5+fi zZ!Y8rA-z6LLkE^T%p{qJ5P65|L-}kk4`EBF(=+toZ89{jT`%wdM@F*AlYNzReu`(u z`jE4Bk8Lw^UG(-bG^lSikRb)GK*)>h00#lXI9b^}jqO&}nmw!BfW;cUg$5R}<#MKZ z=f6m<2c#-n`O$CqcE~ zfIbZ9UegroiS~X!T*V9+@`Ntfx%2ML_7XuC`)SEdaX{7=MW5AU5q!D1_@#wp__g2T zS3Gn2;goX+Cl$$*!WhUyqHC&EpJIrx$A=g({UM@~RvTPNg6i`@o;CLBg7Q$ln_vrYR_T z&8l0nct?)cin0k>=opU+JMpDSA5SR;P*Z|oo|tth{Y8mX2%VR-xyDP7hX)QkCh-d@ zZ~Z2=yp|`zVsP4sy2Q=^|6Qc>dD7Sj3Y zy6Zfu^oi#^Iv4*jX=C$59bV1Q|Fq+AnH1D^0L0DlAn*GCd(Z0W_b5AbPtkP8dga2w{a z;M8FMfT7lD=8^gG*y6kHH13<2FIayB)}-4BzwHh}cBWl_N7_URJ+z)~`QkFb7Zn%& zL>&%*3?-B%TQAd*D&=czfyB%Zf0^kUc7tJ&$%IycUdj8)Kk21tAN8|>u&J|n5aL=i z>X3Zldxn~Abw^GqAOHXW0trw600XQ6o(eg#5?cTbBSVDL=70PY+RPSyo-(wZqH^y| z=^?eLKfe&g(n5s32;r{N&#OZ4I>w&fu)gS}!UhP6LPfH4Z9V?FdMan>jm7adSeB`( z#cv@b{xuTsfE<|{uLT1qI;lAqT&HkU7t%oba>qq!l=t0PPZsa}KZwiDrf!B{u2>0^8qN@$4DC>o8^%x~GhAlHpK zskfOOw{_54?>_wnXk~%N$+v5n;zHzfd={Kdx`V)fno&DKIVx*ue|9pY^>mBh z-uTcJsmwlgXWV*O(hQXMFo7T%f0L4hvx^vHuE0m@Pg}I&9R3xA987ztq_2S`6 zjh0+Ur}g<{M#q3VR61~46d#}v7l8uU{-0P80~oGDKVL91q>eft9s+C<$BO)vipi>bR8+%5;L}#cXV*AeO^hm$nfL0}>5$i$#RWdzwkV=IF2QS|yl5H!c)M?np0Jq{w*iz)E zMEi)Lky>o-HFJ+$&P9&pftn_k=5Djk7LLVb@Ll}2XuvCYfx~}LD_t8=96=hR=j)?m zNLa)M!eFmPK8!V@^48oT-u0C(kSDp>5%Ssq0006BPyhe|UICs8J+cy806EM7)f^?C zpkf-0QZ)ZAIf_YgI&yLq)DqHxcX7Z2%Hmv?`N`3(UcyFJ-g!(3m$GbcbD5Qpud(=i zoue$A&a3>~-DKSZ9FgA(5mB1G0r}f$cx~RfHDjI=(SgwkMPCGIqUK-qqR{e;Je!&slz@)R~e_ny4$cL{x!XpG* zVYd=izXl6SUZT6heeH6ev*tQ{$_B|)-PZ%ZpHIy2qL`6i%dhF<7sx1}nz3Ar`;zo^?6V1qN%jZzATsm%=aZM~#%AWe1U+%L-~i(6Bc7yFTIy z49l8Lk8<{>{qm3=9Lqnl(eoh?&y{w>nTUrz`Hw8VNIyZV6V z7gDAK|9}Lz$PWWmjfO%j(5yQOg|Yj~fGG!x%*Jyi=6sEFx~#MsOU%B(Lo!=;Wi9L=VIotLO9h>h3{Q@5gINZW9>Y$>sfH0iuA@;^zEvh=gMX8c=MG~r?~fFt!UKEX zIu?D`96g<61S z6OxR+6BmyKyf50rInCGKk%w>{|fjYWOd>zNGs9g za=ZfO+zAlU0Dd7U>`5nrC4alakG+V^k2LQ(Sdf}f zK!Hc6%A4^kAc189t|7=$=JNrjY?UZ^2q4#?hoFpcFxy#ku0p4e9t+H?$P9XfX9>hg zp5Y%~>a|6wa(Z<PQjl*_00k^#goZ)x?DE z^Ty*$45Ut@b&v zaY4{lMr4z(1w!J-wx4kIX#Pi)2)P~+QT%b?V2jgy!a@n?I2nS`LL&DyGgk@oEK*zi zJME!Rg7XH@LcXY5RpOd3i&|Ix6QMiwY91R-*pC^AOqQWop`Pw~Lr1jL_EYrX$@UF< zamMcc_NPFxnpL2xva{0H#g#M`cmLK5&ed8Hq$vs%89MxGROBlK7Qt~YU30lM%2%tBhC%W z1bq%RHb{eim(U*L|9}69j&Ro;AMGUcw#YIRuTirhp_c6NLf~Bn0|d1*a5U6p*8nb* ztA1brrFF$W0sS{z)k7<3YZvz}-H-PWGV!g8FmucMJuczYzwRG0(4X{AN!dm!ZlYmv zOl2Y_Pv8CS0U9=@BCSI{%0(oF@L{=^84V`XH1-uvEUJ2!Y_|3Vsn)1F zVk1{T2UCa;(wB1KVoz^h5I(@#J)^pK3}2(Z?BRW)-L!mdrkQmS4{A$j!w!?-i>xYT z_6yI3`E!}v{vDkr*H#*o{&WN(LFvTY#f- z67tD+7jHNZPm0CpL65+ka?Yho#?gnmsAM`Xr}cErK;Ck7uCw1=7^8 zvFsW)i+NZ;V*{Pe^{D8vw9FYlG%RJB?d9sAu?6}I5hj++9)x1B>`)vN^Bkua>(Fd% zNCPAxGB{oAISW|rON(jW16i`ZOw*rWWIxjhp^~IRi zc*-?|{pLK*Hjg&hOIWrlE=Hw7>j-C!EsT1Da}5W9prWAsd{F4}Mo|>bStQZhrZ1uY$)z$^3^HJk^56UO9ZQYkF?1_gN;9Q3NEA_)=Jj{hBamdc8&rZD`jI zr4hq_NI|w8PArmdG$5u5T!R&=0~{mNyrn=*?yHtA_ueaTqmd{vCCJLFVk&w_R#k-l$8B&=B3aCM;pFm2FzZ{gUK>5NEOHxByWU&YO z2H&$mi zUIvic*=V*LG3(l;V+yo>$nQMB7q!+_hm-LbV*6}Z_%efMa3o@ZWkf{V@6r}pxV?&! z%&K@EO0+EnHWt3%I*WqKwsjflK+ld+s(s~su3s8|c(7lg*N=QJ6Obq84vOH5utIqE zHx=vW%u>KaCfvs4EHp75DV2mDl=5}gP+|O*r~LH)O;KY0gUcXYf~20%JC0541~19B z|2hDg@QGVUGfLWh;{zB8#)5&%a!21FY`RX?fT0b)7V;Fl8ll>uNg|QN`EnZ%ZZ<@g zp8Ik51*9X-4~>gmUnmkjRIqtS#^M9xI%1+DP!d>?=YrS~v!F?XBQQ}^gfq>T^i@8! z>eoVMUDWlZYkGU=u1iYyxp1fLPpA{D&Ds8LPJtu(o2>-GZ$a6h2RBl86GRpeAykRo5m`d= zK=`S`03)55#o-t$#wuu~a2V(?O6#H^?aPR6x@ZIkv=;*dpe4+751msAgHOWL{~f&Qaj0(Yb^X{aU5^b)8C; zHyxBV&$_{5QAn+J+nRzStg-nCVCRUBM*d9mbna}@8*wv?jUY4Aa12wXK%$b$KU~4v zE_cZimEJr%&$dhGvf2)Ynm!yQFKIWtL|FtBz7C!33C;thlqnZ9pbr&t>!(uHf4qlw zdR7bQoB6%wy%=)3&=LN|K+lxtIuim2t+(l>8iznYI6 z!6?}AzMGs$OGVVC?w@Co$U-eKPZd$7^VxYp)-LDB^{fP6BFt~k4L^fpWYYWod*hTJ16Tg!dZb7V?G z;GU8}K#e8rRRt>fP(qe>$A`<7T2)axA1=pbf!QXw{_iQ5?WeDYA9kpc$gsaO;}!Ul z4QU91jO7wW$eUatnfY+#9i9R7bF{~wqq&e=J<(xmlUdPMQ&l2H>hLlfBnc%Q4j}_BedlNgG?E!TbWk(sqn>4 zJO=!V9unQwIn!R#^c+I-hokz$*eTn@mdaHCLlIHB1frA=rKtr%fd=kVhAjSXeu-lQ;Ts| zf$yiFTK}^EonQJdOjWjd`XRt0A0n2Snrlv14+AHE(VLm<;W|_24(uCl>Wuhhz*N>| z;p*S34qjjMn9)_!Z<`+aViDOqFvID#hju$&KojpZlsKgsOyE$%l9X7IKfJf?pVwr= z!cr>jLXJF57J&PDs4=(bL#wCx+CYV5+UMKQ&mZN>vOrY#`pR4P38L8)9Ds2rgAHj9 z{N#n4)?$zpcMzX(;QHpd4<@X#Jj1RCXfoDR7*8P28 zgtg*7zB(+?yj+5%+G!1<7zC7C(|Fn#bQ{K}r)`k3=+Tpu+M_&?LH}}Ge~msETf__T zNDYWPg8;KYOuxUf)MC7W3%Dj_R%}o%m{4~|oCSe4h!8St_|mwMx-D>?EMpP3MqEmk zK@>dU(O-Mm$^n2Nx8X>57`fWZdh^L5JLUYUquS0#x9Td;!5-Udqi&~xe5D+kxaHSS zNzfE1z5f!y$}S{Hk8*2-2_j(;6=qTr(t^OZ)l{#>V{3B{Pwmh{uhFN|e^?>5!6&ZI;A;y-Zi$7F)z)NW;c`IRM(ZrZqy2D@ zgb8`!Bl+NFz1l}jr+C!hQ<}(g7+PGAr&__BPkIzswX}J93XZk1zHkxF_D}P=L6)^y>6q}LeATW)1wtrt{bg|hsL_& z$2n@(DG;M+pQJ!2@ZMYJHtmbkPu=-va4z!~@d%GiD~yvul3|EX4OZ~%5vL=;y3EEq zKW#+lu}3k*w$f>P*g=wDGSsjqtd;k5SPA<_73y3L zVXSfw>#p@#eLU9r9y(ul=xwoB_ejowTM?75a<>!?aQ=@_OC0Zh_^{m z5CEe z;Eb86aSnVTWgQ>=9i~sa?#!A8v;8;ailT#;M`9#CM#i@q4TEZ^5{^}n?33*=Ni2&l zd8JNCAFHYLYAb|H%-xJRpF14sCg7}~{aRVyBJ+0J41*ovV`bwh=UD(Ow485bI^jf2 zmR2axiGYq|Ge^N9@CtX!K;8geE}Eoa)E!%?WwOE?#~%!Plpcoz)Jv{aP%(IZk19eA z@NBuk^azpkWUiCR;$5>J&oq+#Nqf=`cpIrhSW|fKK=qKs2K?Ml{xOLq+m$(O2CBW{ zVbF1?>iBZ`MZPOR)=L?{r%m!!ts|!fgwQi%h*(ebVTE7J)-Is#?t#G#efRbyyswDus}FicPe?@lPb^@%m)e#$s_wB4BAAdPO#Lzij2L&RF8Er}Bzs-^6df^x0?Uf!Os;N3)o z@2H%@Df=|PwUn}q({FNx1c$~j{g=z3cfn{uU|a)_J% zLo%h6N!fNw<Df`5HaGzJ-m~d@m23QEh2zWxd(<(Vr#XqM$LE)V%(hL zBaS*YtX2Y3Up|Gk)_+v*KNDahp7I>rE>jT%^-Utbm?$@VrizbpnFD2GTZWK`JBe{G8}o9zWN6zA;=-~!Bg5e|Ga23qGg8O#;gG4(vZH`+ zxTIBJr~?OD|B+v#yWBd!!dsje0R!JWxWOZ(w}@VSpu=SNju}i`F+l>}MF!RY>E4#f zXw3|~(~rcWmH<0+@7#c^mMJ9V0`Fa5U_vIulNS$NZx;O0(62AG(R)#MmsF@F#9sWA4f)pP;0C+Cn9qJ%6YpV66=Z3 zvR#_4HouS=j`Yxd(Kdw6Imv(ptSBHA=?^sLQJL9rh^Sh7dXg}YWyI*@b}Ez_JzVslAnwJ8Z(i+TY+!$oW$ zNqg)B&Z*=quJK#thg6yKTZFKqh(l>RQ@+v{RlGh!5ByWt9Qtvo0A1RDJ*hQb<{8KI2#h`jau{6N?rxmx5c( zuWl?e=~xZcY;P&wvs>veQ6G1@=^$_Am=(CX{$_1P)z9QcsVY)6mIHm?VLtA@h%n^Y zR+y-mov7rM-snB_z&ZDtS)v)V4ERpvqIzNXVpFNxw^RtJ!+dCz9>z_+M*$}`evOHx z66}+tiNOnJmOl5lq&QBKC*{Mn3mH|sIcYGh&x^5Gn~|;U!(4lA$8~@GzAz;is#H;$ zwaxq6mI*MN_#7vn-M+Hngr_lhfgxX|2~A^7qtxI}OW4LbIr+E+zGH|)bfH&rJvORc zq@0Cbo8WenFN-ST9_qk!F9U5?I4ApB_!7KM5Ya5&-B@KUXuvv_#j+pVDw0Mm7+Uq9 z4?;*?h6$7C`@s{^jl0X{-Ytl-wV^}8dwhox25=Gj%lG<iuGNit8GTmb6h$fP!nVmU?o8P}w z_7@1DE%WrUQ|RNCpM_>Uk_Zg21{r1whipo=j7mge(aLQVA+YWQ>2LWO7e%@FHM7di>8bZ4(`Vhx6o@2vh58Ia!vc&s(?lU8oY8hE_`)kC zA`+|LobyMYng7l`gaPxYR=}uC#aEM|vN}rrSl!=g{oTAwcJ#d&wjvFdP~l7CcV=RB9f# zFYPp}zAJw1x(*;96@^&NTo$dSAe&El_ylFWsLpl;@}8giQeR2Vu@5@|bN!!*m*Ba! zy6BNob&Y>a-0iZBchK*ONu1eJx#=HNtU%A`E6I6#vmp+eJhl8zE=m0uL6l(@zh5yYk^6v8sDDtD6%2 zim?VMBst3vp27NQw$jcjYyRBtH0*z1x{4put>O*4o9PL@q=GTvrlDyxY5SiORDXy& z_9@o(me$Sp23fqq20+-awaXjnpq>s zWCLOB;FUgE?{|%QK7FnyrnCx|;h{O~2&>V=n&6>k^Q^OhEtvRo|kD{o1!jYOoSVg3Ar zxI1O1b(Yrf=%^mc-Y^{CWH?rU*W*h%D*a9>4?7Vim}CyQiT&9#P_a?P!rI>QDAN4tXi7S+D;` z+L-gm20$YXCRK>`KK|myh)XDyiRQ?MKJp0%`Le9NVyhRWY;|RL2B^;zT{=z~4(QO# z*u4=1eg4eIYF?NpK?_c;m0r|7Ksx=XrvY7vMMbymruQa(HhK>uol#pyQu$?G~IGvSgbj`d@;S@o+7dh`-iR5>Q|LT z!^HE24LN10*w(Ctk1hyG!$FDJy9-U-OQo;>%1EDMKt3<#)`KqEFJ4`E{fdD;WY(=c z2|mQGTtUw=b4}q~a5=K~fM{DO_Nd$q}lb(o%1RhLq{@GtL- z+O2=xoonM*u_>PKpu-~#Z5>#KghUx~?C;O31>0GB($c45T5%(i_Lm8e_Zxn}OFhbb z?bZ03!G4ZyYu;;r&A^Simu$5qIy2%Q{bUf!rk_qI5Gi2y@R>bUBu2gZ|7Kt#YYL+d zU+#81)dB{I>wzZxT(fkCiV0TGi>mq>e}F7dzy}`}KziIh()ANTa`|o{LyXUt>V2aR zEbSaRZr^o@gWg|W4cY6OVLeWeh7&dhTGD0GJx)`CV5|Ah<_3ya=cSlk-RuY(J*R`| z6f(?KYWyAJB(3uPm9jEBD1`HH<*(>?If;65f33fbZ$YHQhPje9vo&MI5ncj`0^l`I zN})NYg!<03ZXq@$7K^M9Q}+|iFoeDh`YFiI^E_;lD1uDinaHMZb*9>c)#qAGaA`K% z*HxbTc13@eC@Ax51iP3!V%*OK$SzXjD@t*-AIoGYUDOkEQe48RtH4qW6!>loc|pj2 zfZ$wp{dn)ZI@r8 zod^`&9>8w6cWbk*Bmk>N9wPVxSA!RSLem}??9@rxH+8$$*3;MQw5A?94W4ds*|l(k z=v+CmyNVGHXy13hl5ln!KCZ*`b5;DE3%*XY^4U$^I-~sLDI2k9CTVy&wB!bXattO~ z7mG_?$X@UVgY^););>s|Qqe>_ciIX`^Z|7Wh(v-SPwC;4O^f3Pc-k($cmpBSxU-f$ zbkA`ZaB~@5rQe1=D8g0V(7=z&k~r7f>4%SL!4P34z$7^rJMIo;RnyMouQ4j<6zRDMS=$UC?qSwLMGBB1H$>6a}!t24- zA-Ue3N)DkbZEQVsiLW&_A`@Gx)#E^0Gq%FmA37(gKOjXNf6btqqJiTJOX*8X{#h+F z+e|uDOW<>by3VjuoiISYlnAZda|oneVLO@Oxa$q>$z!aRyeu~Qnr%95z!K$#c^~pPmV4NM7i8?cRD%go#tcY&zT9nY9S-KL;I|Rb_2{IQNPixbePRfp?tgo$G2by zxNfp5Hm@Z#dD4G@2APqe>I}F{^5GalC{A-ezynXU(QK(y7GJekCUo z*{odEoJW;TMemM2QAW1TmrHx@JI%e%uW1ms$`wj-LM_$Zdjga1HdBLg_yB2dfcAl~ zlS507=7a=lTNQNK5Yk|)b_G*U6XJ+gt~twq%k3A?s?6>4Z1f?ccRI$c!xwLp#M)eTChq_@Twj+IM|eba>J;>NxLKZJW?BzI zd!qysm9net+sXKF$rw5AcEGz+IZ8Y!dPvsW%2_5L9TWVdZRMcb4}XBb`7gNlqfoEb zDHU1yNb58x$qR5ye7WOpW(~g5e1-nHw^M~qsu_zN821LU+cwyD21e-D-Pv^eiL{#; z@n#vr%Jk^0#lsw8c`qER`Ec_9nlZ>G2DWZv;Q}Bg*bG|kzUQ3~{7^RL5Xt1j^lK&E z(qsW}Vagix_$12t){M(v1u?nmGa7ciVHCN0zcdZB zcXYtt6G_IPU8AhXBCjE-hHrd>KBD{eHE+kMiSXUc8n07w8RhT+8g!thAN>SS7L-$X!O`kRw*(Gdyug zVAQ2>+9m$MYSteV!0+e@?df zvF`hYQg*vHvShCxQ%B_D1kB$-wkCR+tYi(%y&7bA-l9aQ$z{m6m<(}?AwUX^wQr7- zUr>G-zq)3t9FIbHG?!MW){&_pQ7{BnUPXj6ejUY@5Xgh=n)e z2-Q(3VXRIXG3e*59J<}a!R}FfGo-zP$qB(Dwy9&3*SZMH2dcAymCG;{^t&C~DWXHb zB!VZ>UH6MU>_0lcGQO8%znG`c8Y_s;Zh)S4?ZjeCnaARvs+0|(fiznRgBxD7i=g1y z`%$+&&a#Og3lg*XmEktq>cy}kTrZmt7oy3y=Z(EmI4vagiu~f%Z=FRr+1sxP^Q1QK z-v(&*etYd+daPNWsAmaOQ+m>fzb;Dua@^~P7e3!cr;eOlHfSE+Hs(SU;?Jb#AZMG5 z{Nb_e@4R$kns6DC@>IS79cWn^jUWI300Ie6000960iF(3vJzVW4I@L2|A!T2GoW5& zX?IG0*te!=V=md7&irETa^v)>olT(Q84KiAAVXf*T@WC_MW zTwg|SoOh=jEwICm)|b=Yn_bQLfo(}{66#kr)nIREB~=VRejM(u{!cXusum&d*}U)5n11w6$mjTKgm zZqs0bMwlIL9tJD_KJp>KIk5U|Ye5()lvQ#_XF?`5QEU`sq-&QSDjGj z&&EJ_KmcJTZPOv0sh=c?@rF60eE<<>u4{}flLV3Bbc#LaHza!P5{UX_mZKSLvhkqw z6-=T)wwo?fL|g5vLRNo96`H*A#Wu@2@T=ae5D?LdtU(0&0m-5-ju;nthYNuU)prma zUDV89@er!Ak7=0=0zH&TBSh^-{=jka^LlWJ>`SCVlCw=G+GC+OnM;6Z$p;;Lek|!h z?+o4^p(cH&f&={jNAyKw(__OP{R&p9JS`UaC99q5^UkXCz|SHnU8h4i*W;gv?6d;2{nS;r z^>Hw$((9ebEK`vHF!x~P&V|+M#Z`bIdQ}ycqR>GIS-|I1Oq<~?QFUbk3I+&X2-g2I z0Uf~G<%NgZ+^u-A!F0w1LgHhcXgJn7XN-??*K)cWI2IYfjE5y-H6e7dgT%z-yL^zC zAk2zV2xS`u!XS)J9Jh#i_#-dwN>hCFEIjk&dW#8(MCwUw-&eMb)?W6MZR(=QQA;ec zZyJ_VFjJ{^Dr)bp&C#QQVH5i*9d+h0Im#C=^-p%pvsgKIZkOsS)%lV7`0Wnqk+fl~ zf~1;zC&ROsx8wE>uP2vRGF)p~1WJJd0XJl~ZMHOD-A*-{5s?zxs<>n~JWvWs3LgH| z(01vISFH+s{MPN*v%T|SOBF!8dTN32+&f1Kti4gB;2_LOR3JH18N<1gvmDJ?U^Vq|W0OyQDA)}p58 zTs*sRE~Q;7c%3yfHsL}n!E&_5<~s2Oh+23B3latZyI>b6RJPJk$@@(~$G!Z17vaIz z<>r&-0nqOPdY0fLxBej-6%E0S0cAj#Xd|XpT$;eO<1b zHFexq_Mb`V0wG5V1qT!bZ<*-_63gYO>g<_IVI2AGUvreF(11>_ynIxXAoPNgGMU3G zd8A$bj0h^7!gU6=KVoM%$qj`oz}p$GeHMQB>yM(nb{CW>o8#5Lt2j*=6&YdZ zulKY;L3qlxNPFaxx+CW@jA4c$(6E0+wuFicX#E&2C>FFNB?>%15xI3B5LvN-zky7h{m%5Up|SPvb>aeXNbM2}YYKve%MRwbsC+!|6wp zuj%GvP$o8mb)P9$z>C8G__#g|R4ctogyvTH#VnQVNm3+~SWTfsUEGNf7ytpxh+6If z%vMc3<_tpME@&Vr9Og&0WE#NaZ2QDCf>*+~IZV+2!huOqK>^Zerk{!xD3=VWF$$96 zF10gdxFK-Rab*{l(daXmWI{;7;>kp1oX1^PJJDq9C>aFy9;*$`=nLqr16uGyfl9V2 zl}nTgDl-%Yg%blnTn-isP#)t2JXP}Y96}SGMsjp#^W8%J4)O2~HkAapI2O7gW1Fc< z@;N^b{Agv;46y#uoMo$k^gwwbDiqzliveOGn5ZQX0S7#5SqiyJK%oGeV3Ev6=F6>Q zrqP!qkczD7N2c!R7WyfF9OSv`ZaCd{WeE+>(rw)1$p4(grWxy+xS#5}?m*Ygx9ey< zY=>PH{5Fj0)w5A>_sGe6Ahcl0X{c;g3=)(K+-j;Vu0X92U>ca-HMH(#rrOBp&L%rs z8Myfz6GUD+h!3N_B~tt7tq70HJ}aI>_r$;lY!$CQ-dk~MB0vx&5E>+|`)Z{C3j#DY z)1_sUXTXF@gx?Pp5Sl!?!S9N_C z#FtEq^dU^yN?T-a9-(s)BCFrzomaiqrRPA3Bjwj?SZ>{y=0;E!BN_~TmZPqT9 z9WomuQ+5s@>wBJ#?6utlH>$5wBTROL%v$JLKlQZn1mUcx;~LjxcUp?@)ZNe2=zD!b zcUC%u^Cj2blJ9h}1eGAmjChzYBNh^qR6;>s zh$`DsU{P%|w7Xfcpqf1nR%b{RB9V*9GAzP(!Bj8Tgk8w$(dPPD&QH?yY+-QSw#!FN zff8&W|MuDTl&eWGCk~A>Ou!8Q@p%Q9h(Sy<&YQx41fs};&jqWhu9nUt^@9%gX<@AZ zDS?>n-0XbS1a=7a?~$U;eVeUEBo#-ewZSg6!Xc>98n2+#BOFgQ{r!01a6(G;o3BNU zN$;K+msjHPGOpOKA$k=RmKKR)q5#ecPytdIVzq<|O#R*LU7?C^S09*ldq;M4J$* zTA6&_6zx0K#Q>O+{ARUtN&3oQc-GpV4%pZS4fj8}+|{}dpo{1}5Kg%QWR{)aO;XbO zOs1sTwOy0VG+9S2!YmljTOPX$<0`UYV8)(sVpL))N*n@6W1&POvw-DDYy?0E3Z+v} zgcR2D|H%A#yrzi?fx98i=X(zl8`%V#!9jE-6#|u!LeUtpS0K}xADr|GS~lS#Qgs{v z4LO|{pvi(9&efn4uePS39iEbUa+ZxzOxDWHcLqaB%#8P5kA1pv3@@0ZT4wGUp^4NE zHF>S6f$u7>H@>>5XKMA_v|9YvXqL4zhUo&&3rY*n=iAWQ=8~5p-h`kP0PMFxdA(&L z1z@ZxVi5fy8dWWtl9>>w)tPlHQI@R?wIxMBxB{f^Pm<@lm=wf^D3aDUn?7v8JWcm4 zq{$Yko~7n5$l~KTT;nH71e|f0I=iCM%T2fcgJJjvRv59Jd{)6#*UD+$)}|5kZ}ybk zb;m^BD{k7m0M7?W$J-gTn#$t3!-$8g8ou^*f_Z)PK%Xl~*oJ(iPHbQG^p#XuRo_CH z?>~uMKB3b(u;0=2PNTWk+7Ui822d_P?cx`Y|0I1ATI0YsF7C-UD847zyn4;2iXcfY?oCx%Cr-K=_(n_9;r148z-`nZS-)U9M=O7iZ%k8Wjb$2Gv2E zY`eDg0>Z!noCNz6lZRL`fXFpx+<2-8#_mg0Q$-Cj=Pm%Kd!9WGM{Uons@nOHD|X@_ zK=>ztm~*>%Pq7+v9Aa6ZmPG`RmjPMW=Q0AiD@8GC#9%GXDzsMW7IdJ;SUr+A>W@>?ufOv7p^(c3B0bYUfwSC98h_nsA3Og^J7 zf8iS0HFOUfn`F5A*uu^{D@mxlS=?OxWNO`?V%2&*yPLn;|Qx$S0mv`z$ zkP4Denx?)KD{@##Uq91}Fs|q1q`~YKQr>7&6N=Woj$O%|u9*Y2mW{i6ZJ|ha3CQ## z+3n(9*)!0#G6Z)TEUM$(D|Wtw!`>kp6!pP~ier$#14Auay#y)%3v@c#xUf$FYnW)D zlCg%)z?Pg!8L$|i;qVf=Gk&J5!8B;C1+t)8_PQn9Z0-_CZHNswDMlp-SO`cRGpr5a zm_E<+cHD+A@j)dlvLm8N4X(85VZ8u0dOBhaj`m8@Jo|Xjy7NMgk5glh8PFXS+kh*`iW){Yu{CS@#b%0I!?zAsQ78mX?KMK-nY}B}%xa=B!nSmr4Yv7rJbi z(o(^|C_8nb0er!uN8J4D_98G&nO zICzzS?p9ofb3Nh(0EA`9k0iqB>re%PCj<%rpa3R}3jhFexg?A3LW#E_6-)=0ISb(u zqUQ6rmaqr5vnRT+)%n4`!fIL7ZI-X$anjL|4!uO;uAv2Ku2v*pd%htWPXGV_00Mr^ zNMVtX>J%9m0xK6<1y}$G1(zuj2R|kvLKdRHgFXlE@(iX4wh*5CfuUSrbX3NJIdL4u z9sT+>u=I~I#u)8cNSPws?wu!QCZKpReF{uU>729b6`d-AqSkj%uuw`eT1q-zZZCvSzQ0JQ=t0B8b>1Q58) znS+0nRrMJ73_s<3=3Q)~w&tuwfVjJLUu_(u(RYbXf^d9li6~++L5xsOi?xw_ugz=F zy~s0nWYH>6i8(PK$VgLV2;Nop*`=P#s~Tt$cA(ny#u=0%TFwEhm}Z!fBx;6a24pak z4J@ee_K{P%i^AjtYsq!dJG$DSt!a3+^A2(fVNN% zAu3eerHYXiC%>HNrKudvgg((3dl%y!evndh>>BO9S+7t(HjV+SgPu5NW-aVb2 zzYm0CT+0jWm2UVUV!1kib|omr+@`u6w#;nW9Jw9j9m=-h;Vy=%Gq}ZuZgCMSV|;H* zp+T*RzGA0wd|GU4P|34anuMMQXV|8DFT3evQo<34d7#=WzUV`JS#;;77P{( zG!ih33F#$)U@s1!3K1$yU|I`Is8se0&4=9;m1Kuln>Gr2H)ZCW-D}VqJWPpAlOxa3Vq>Oc#L)FGb zK;4II$SgGMG=P-B7(JUh&US%RaA{7m81v`pB}S71rO0h;%>~d&P88C}AF(%UWLd># zk)umAmh1GFX)CR`h;u+27pU5p3JZ2E5^t*WZdO)=c|5xgo|P4%jl0-mqB^~pqmslf zg|*&sP2-osSe&evm_YASNoKIT0Q!cnx(jw6sJUK-fpVyM@9o~oI-w+&)KKMf z6A1`goudi0GGQuG_5A7a5vN{~f}P`0m&JliNWsr78byHFqn7FHbM1O*(~OI3_$H5@~e*&bA3D<+*Km2c6K=>_;*DGPy#=w`Z-qzYU69(<|m7OxaD|Y9`z^plY=hc_Dn*bVG zm5tn9ZiX_+=c?rrLARw!EkUM@)To<_z^6MUnF$h^$c5m%1*${?EP{a*0>(gPDU3wX zXNTLN@Ww(+HQnD-SC5)_GWm9R|9f}U^xy8*n*1m2MB^9V?;^5skmq`)!qr0$SpFga zkl(H4Lvbh)cFw*Q1sS_|8#(CAQHB9;&qDqUv8f)8<<41WG#f>_c!8U-08dR#YLpx+ z?1d64T+pc|MNrO8{{|VPQB3Aiy(ScfD#(u}sSqy%U~Ux)ho)9SqFN4{_7VxNDoCey z5E^DtMUZ1aOyH0wHdEyr8sk$o01kA?I1`X=Km6g`m)`-YMZDw( z65*Y>G~1%U7W7t&klXREB3FfZKDWAsQ78rkMp} zAxvddkf?XWsSLX%RI;Ff$plKWK(mttGaVv=kaR_-xk#;|`1`G`4Xqg3*0RmCD*^{-GT;=j zcggIlLpy!9Z29tL@M0@c2y9p$Y}L4uZ#=~}jq%zq&o zRQiDmAs z>C|>z_dIHfLUWLX-W_2iTjH_Dt@1c^Jq`LuLje{G;DUsi!^IvKJ>PtzJ;%Qkm=lpw z;Vhs@FdNqeLjz#XS>_XEa<@og*4oKP1R4`4=THPVgJKSSTV}-8u!S|~FF8dZ#C~3I zESMmGn1cm5=K({Z?Z)dC;ZkryDaa6oNF7NThs`Y#+hm>B$>-~udLX*5>9_mX{|=lB z(!FsPjfink%>X?U5#7s1DPNwImu87BLLn+7=!pYd)kPw*nv*}_X8p|m3B-uTf1JIc z4_aWPRfmB9Imqtg-Oqj6zmJ%!4p7g0I4pOr~t8Yr2qg2;$pN) z{Hs_Wi6e}gM1!~_@Dq=Zpj%JY@2&R)q|d8!_6+h_NIj{Zb6Ft1WQUy#6xSc1Fv1od$Vhs<9I2ciJ2V_t3xk;wl&&{(GQ8b9)SXKb8i|m)mL&x0y zH?T&U@Kj)|AUc$>nP=GPx6`G6NxGamnxqUcGg3r-&ku##z{PU5O!`cPkRpQ+qRoJS zC2JMCfC-@iuoK=i0tw$WUq0U_wtu6a?ccWY*;JB6D&P>{2vR1NW2!KfRMNdCavpw^OIHvTmS$70tpZR000?hO+X)(Qh{J+%PgcA7#RQn0|V&*0K0&M00005 zXz2+xAOHX`gk^|;Km*(UBuBud7jG8JNz#|DeBFfgY#F6BG1mhMygT&12y^S9qJc0r zMbsuZ5u!C3RfhElAp7~^%pWAGIbLJJA;kgqSs=$zQke*z{rT8KlJgu_5;AXL z5BDXWS_N0-dItxE?$k#l!YlIS1N zzkXVt-TG0vgMs(8EG<&8X@JqMH`xc2;#={Dks#1>iG##^+=akF?Lopf_w4`{zRHbW z;fa4-YrwGScIn>B&pfkEL81(&x_th=DuKGJxBW?m_+=R0wB)eR_}&>yj23LvUPI25 zTAaAxH)}!XSSM3{_T+*z+MwRjn-rd2QJU^nJin$9tSjCG-UGE|mn=KrzJ?k3Fx0DV+zbgyPb~OXRSjeM{0~d`mU~N{SQk}sn+K`^ z*HRDw^x;J5Du8T9e1NB+DIyZWHJVx0o`^?PtG1sAXy91QB)7Z|LQHvLnR_~39l)+? zMSfp|C;C~~CeG3R7!$IU9tehQDJJzu#V$4%%?$7P`YePy;zFF$Mq7nUrc%8gYNSiT z9x+ULg&ss_C=D`=bz9y$MEg`L&VT$81}gcSNT2ymN@Kn77UFOHvjpL6fXkHQ0}Y)0 zsCwOaG@A%+&!&@z45MD<<(38tD=m#FHG`sr7c!u}Mhq4)Sj5m_%M{)hwD#;!4>-&J z70+0h4`ODu=J|j?LwV|p`L?CaDWF{Fo1_~-17AmEtaUJflB1}y&}U?$-O5J|;|+O< zRW-`hvZ+?WyfE(kcw}UaqRcy3@CO`yx)eRe$ zw#Xv1#!0K4Vxv+dldI)DM8e@7f2|+SADxq1%#uZ#xZ^eA`HludGh+_)blYs1-;ow1 ziCGgL5PLdTICfx#tmut?#4A8oCo1dQIs!cOI)UXhAqrW`Bnx{bq-1kB&F%YYDtkqq zGqM()}4r{lzXXGubA6D|eW$H}XJztwlh_9G{N$ zqmrS-YdlbRG>vp}<0|MC=y>TxPW#Q&7;CC#lH!-oeWjs5xICvmY|E2($hV>D&GYu;2hb6gjXP7)Nj75S zx0p5RiHgH!g=G<;^xQW~eVUVWbQu)+p7FVDKlJ!>YFQHiF?${7s<*C?Va{>?PHMWF z_3!2}hWO;YoZ8JC?M&Q9sC!3pL>fwcEV~JV&ah3s%-7!;tZ5jHzW3x;z6!bB^*#LF zv!@ma^*|rv#()q{$P;J7KzAZcUyg?eU0fzW^Z`GfB`y5Wf#*~AZ{^UgpJ8?cU~n-D zaOt7;Mmu;Sl9thTEa3VtL}ECWcm>4QH1mzeUmMTpUC%Z8-~q@7MN^e; z4mKL2CoQ`~kWJ85{B+2?U*pKYSYmdVtM-j@o6O#Wv4#=>=KGQ7udwVLcm_=yxLaxY z<3oDIG&=6XR6&hNI>QBer$Wi1)=oz?(c2cMQqFcS_h7cLbiU@pPVhZ=K0@)T8EKaO z_)xVE@Lez<2jCh{DXf+;o&D|Zk%qxT0fR|i>A*~7bvZrYVZeaNAzZ554`q=;o4bTl z=5O>@PU~=9rj)*zKSk=Kp3HMy>jY-w;`%eTz8L#(evHbjzhCdC0dD?$f$_c;nw0lv zrPU?7t}P?KVbLWmX*Y^!p_eBV$WoBX8T^8arDo=#DVUU6&bU`jf{0Ewy%|S00}2bQ zvgH6J6V5b>vBQw=Qsd)SXH0DhLGBtI-lSj71kd%1QkNp)p=<OhT$ePVgO*nJ9m{GShoWZ@6N~ zK%A@L!y?0^*7&G)+_XFBnq@FEfcOspU1}Jf-2TTP^uIOd)n?v1;-00W^qKDx4c)kZ zzGOR#E0MXN(LGdnp91ZtmcPV#kx%b|fu;RT4Kr^^uk+Arxue+=X-89rvo~AvsSY%5tGQCk+%PAstQzX6g zaNkhT-uz`E{e%(4os(q<-~>`r>xE3DI$PKm{pI(Ctz7h1(q}0vsy} zDCnT0+a@Ss0nyHDG!hk>H{gkj90Yj~VCxHUM=6!HFchzU!@#uOd1Fv4QXSRg$_8AJ9`sXo|7QkkZjg~%Zl4d!#%#ZxDhhnJQ{p*s&l2?*ds`s z9^I+9YZU+@hS96MKWPn9DO}89IstxVLDvPWM*XjOT#C{p>v#xA00g7;{lB&dU1O|L z{*h3(aQxPD=((!>jrno@9RXQ)Z{3}Ba+@X2Tk5LRug;(Gv#b-E(>lxtU#s&?A^{SB z(F0?oV3spE)8pdBwui5cX~!v91~<=c@TTIyyO0U2yWs(&=Vl2YSZSt$TxjrYVGll0 zfv>0r>c3qhY(w_{{4@MWdm^4h#_7gvvM~D8yubDEz+nlc7eSxvKe0qrx)H#G~;bD63z9&+o4R1f<(_x%Io{9U@h|ZF0UpjRIhLN%gN&)jN#%oa>EQ%dOvAx1mLvCIgh0$K!10XC3jWN)5 z{d|Lef*AX9MFo%_{|2;a1gl@I?@<@$Dk=ku(k~i>_arQLvcs(W1p-$91C8)rAj$!d7q`G_7(92|eIbxkDIOfI3PIJrhk z^%HoPV=?H^V2b{&n;B!n0!T_4)?H>Q7Qq40Tls`ps~-4pdG&>DFb$h?)}ek($Kp?c zJ|};ucWa!;n+;x5ln=Nzyy0T6O2A&SW8NLzz>Fawpi)6sx_rJuh&1$UJzc3DoV%_y zNTbwk{l+sJA%s-tblE-!Qrk8QBG_eMdd;h3%TRTb)*#i@bP~_x9fMMDt(k{RqG$e6 zfp3A+|C6_t_;pp#%lt`KsNukJaGiD)1-xUWqV&0V&IAo7C>8M zX^r!GbCw`AUqDu6pg|q&#IKukq2ttD>W9@H{;$2Y5y|*SO&5T>D_nRV_`_mDi$<5! zKcIBU6u^q`Pgo7|?wJF{v(zB1ehjkUzj!`M*#dV=As!rrSr-c@2r=J3-GxqnHasFn+pY>zLwJ==4%E5NDkc$ zWe_@7Z`rb&p+1WrTdTMb!8u5BZk-ygrM`Vfx60qXz!8*8!pM-z$h-sQhk*&P{M%pR zgRM?N=%GbTchp@^v#D1jPeAfXyCQB(a@)u8vf||0S~%YO37BRcY|{N$4uX6d6u-|~ zlyX4ec~}If@f~`_(v4@s+ts9s#oIJMCqX-Z0lS-fX3vd0KzQYdr# z70VYndK@WHW)kXEchVQqe^2YAREQHg*-$ZXN6RiPixq-=&5bj3F+z#|f|k&DCSqYt ztj3}oM}ysz(Aoe66F9WT&F*?V*4-122H5c~#W_`nl(*jDZ!ML$i{m?4PQo>@OaY74 zo29+dLYx{sK1562DsldBk@rGGZmiaIn?Z^n+Y*sztZ4mKIKro-pXphLS3?hc0O`+Q zt{aIE3Yc^J1*yZUx8t?BF&~P}Z7ri4v^e*D+`IrGHIJ|ILX}o|ETV zjO4Q@=P_8?_{q*=TvcCvayNPi3kLNFwq+Cei<17Z&o#;+E|9PFW@Lrp4Q*XebK3`| zzV?+CBqw)sV$X4txJM?xA>WrYE_PW4OoQ#$@|ZWpfFe$c?LOs?u7C3?N5N_(_ThdZrZbH;vt4uP zY$!WDgMu^m*&cNpc=9w&ngM`PGj!&j>u-jHMa|$&TT@vLb5;|t-w*e^=GPfg8kwoV zRiijoM62R~$NQFSf6F1QZkg9@9IZh%4b5*?zEG+X_#l?qu%4-X;-0RRgJa8Xi}ubI zqj+OBP79j-NB}{^`4}MfVFjRIrej#dqFPuMuQ=o(cUh)MNzxD#ESIdG@6fG3ND>E9 zIfECLl8iQF*9<3hRt}DGKTEW1?LbpLKy72HeI1A#-MSkNGN1oZ@``x|44}}eRS&(v zV?et)7*(pgfy3Lx`qsMG(90Tc{c-KMRBrp~jEH>N&*ROdM~1zu$mRxX%FdewYbeJC zG$Ti+K}tE}xf-9&l3X6p=o2yZt-pwOkujYWh}Mi1;It^{??Vb^s=aMSFd zcdi|y13>n5cAW~}e@5!EofLQXDV0fiV+_(p|9l^IA@=}stuM!Yd8Lawf*lvv1vPE^ z_>5Mw#l&lHsio1a4h($Wn)@ z`~2}YUuk;+XGsM({AC)0)QYZ3jtuHZ8ogS)*rMsOcG0-iziKTmQK4iqSr2FZ4@W_3 z!*3hpyXp&5$WqMqHCCSiFDR#Bsvi?ZJuZ1m=^Sfw2WYns`&K`{mTcq z7@$v2G7(7&jOp?loMA=^K>sSdzXhNgGJ8<$CA0ZE10J2kLs|AE19320DbfCV4+>8%XQ%13?mQmis5XHu{ZQdjM(X?c@%{eZ!=Y0C=cRKk2!!l)dRotVFSxb&Q(;m{wKb?~k59 zjlkD!{pebd**Oau)9YipPB-Ub5K8-6eHRHm+HXm4w^SZus2Z>6+RW2f^1M(x25nMG z79(n;(5kbW_en7YrP1u55lkB-gHX3d z4qDB7YA%senDaKJDq&s##>U*_Jy;O=v8xANk8Ve=(;9wFR%dS>RLTkqA?8JhT_#5&4@7uan&QVvJ5};%= zw`hJ{+$|yi%l;CWNBUITTkH8-9p(%yRC$`aBaE#p@t^$P9~-q*6s$9U9Jhz6Eg^X4 zBL9iIXXtEEuVC+m3gaM){2Tgc#hKK#ffT54dW87f!VgXW$?(s9w$$c!y&)>a{*GXm zrM55nM|pKFbCLiRkFO5*Lz>pGTNM+TAKE}C&>|@-ILGu4wpr2X=q!UhIi!OcS&8rf zY#uW&FUmlL2PD@lt7Y)w(0;;+#1i2dY;Ym}s2ehQ6a<0PV?>(O;SAve99%m<=EXsU zk518`3Uz@i*I3sDIfpni_7W3STdn0*heqPlMXE*Ven{jnm<*H*UFwxbN*NbD=~xZg z(N-CDVc=ga!ua&@plqXdz@+1O=DO(-(5L`L&?f5%5+kQ1JJz&r2dlUCg|SdBf9Yxz zu1mdl8-#xd%i6YmOO4oi#>wtUq7b5?4NRSU3qB+8cM&NEUUmT&gbrC79y)#xCAx)&6p-17djE0{k~_Z z_jv91?sxMZYtOQf+=&$qrMQs-f93ev3%!J_cblOC?OfXixaLUDs7W*1{HSfG>BoRQ zl8BwEn;N){^AIC+wFdx2jXdYjkY{}OCY`=Yw7Dbt5z^;ZC6Wo?^V?tuPgf;BKWj$a z$`_@$im`Sn-AH0t+p=Fp`})=q?TB7&U%I2TV@0Ej+!PA(P8v7=_pefQ(ydMSaz#8ZoJRyVr0E2iR!Z)XrB@fMVJfjq5{OZx(DxDi1a zD*mw#xRyHEvMbHGtgR_n#H>?Bjgg2REphsV$zoI+Nj-9-K5WY*K^Nhe*CZixp`d$} zB_+_f&*)wAE@4sp`Y%niY_qKAL%3p#BiJSvMj-%Ym7$=XP2Nc^-Q0#995M`lLV7;mEDAH#L%ADAOb<%B>8^9F4?^M9TfAZ(aU;+@>4V+siYL6gK zl;kncxW3}$$~6v<9mN>4d0miqLv#!bXRXwfmjH&_7_tsrb@)cOwq2sS(af~iz#=8! zM8ckMk$AnjCc6oAaDGK~*g^`JOV9HPg#j^LgIx0RXUdVjzpfTI3r%6@d4{USXtX8) z=nt=+cF1H*0u|XV-c9T(EaSH>FYjcE*&14Ynp}zhMq+L^Z+!W!*>G;D<+R^puQ( z@VGIKSy@Ly)z-8{Sbw>G>F!8cgHy=2X!0MIz)Ic7+VJEwAAi~2zI||3N7(MJN3mJ8J@(=5PWIO7JbH>L94y$&OVs2ruzX+`;nOXay9z)0A z`^#IjK2>z^sPc$|6t1ehK}hWEbF20H1@roG8Dh7lqW1BB*fmh9w+wYb{u(LhB7Z1O z?g2Y<*zf-?pSB=j4>v0?%ra^SBs8@L*&Mt>t@G3+4)AX4%-3Uq`#x`r*bBPiULaO8 z$+%J=8(wE(|fZDLPabBTB86{bh_4LQQd=weU2KVcLh~|y2&{N}d zj21{4B?q_)Ffg+~*gL^yV2Q^fyWnd)uT>ojue;`TScaY4{l?@A8vVj;rzM}fNp!xZ z5Bxgfm)x6BLU0%^WJa4fkUg})5O-nKuJ}`7Anwc4?l~LwZM74jdMMyy8^>S~tUKJW zhPM8dM2iECQ4*_Qy$8FL9sbpW+q;J|=D<{+rgrdNA|RmcXH>q{a?VnPd(a zliMPdyNkl1=jXb^C84S4FYxpVyrZJ%u2ncks}W$e~qHVoiNfW9B!_I*%sc? zhYJpg!PQG*MARSdRQ<~4ScZLS-Hct176y%Y>$$|r;>5{m(WhYOycQ>|O=S)~&3CQO zkm_uL;fp-LxZGzJGN6{TVT6rP8?Y|y=k(v&U`mAep67B_G|zz3@TFBNavX6{^ff^O zu;+7Ogj8NURK5Rp0_RefAcOQBf=WE)khQaaorQKVDf4>tsWX$Mu3&v;ZwP6+m1+mK z6E|IsZTy$t`r#_gRdLAueKor=xbgE3qQ*7s75@tmBDryHiQ*FIac?uGWm{C%Cw!m+ zkGaX9$nX{Ce(dze55AuOdb__a&9=v^NY#LpEq^CK60CgX1N@D}k{1eM6{qYT6;+ea z32h1(#?&&xsG!^WZxX}mA)uYP?R!BlZmpdSm;0@}$IswJ5mMmu(InyiY&lLz$;8|* zE^Oy-1Dk~0B;q-m+@#pW1Vnk1y-Zct&uFqkJw66~8tG;v0_a4wD8TnGJK*}cG46dd zIv^$O=3#j7z%dgs`|^SqiTvqF>hSFNFHG-_WQ{t}0rWS?2;e}xr5D+gAm};Z4M4H3P8#O1$RieYV)nKD2{QMmfWHkyull6m+gtCFIqq6IAy@ju8{rH=3)`O|w67 z(E(Ck@-S#Qbc-gE+}WZ1Qp0)Xa2{qh-~*VInqY2ZEo1h$v?yy$D-8Lxyv{(3UQIES zq0OV=bE4Dn)TOZ}?kYRADc5O#$lxI!a4`n|<1NoI$)@%|!%uSLsmlYf*QuM0omT=w zNd_Xj`E(F=Znc(n<)`1ygM9>`-FvUmw8_!HNQ14QR*mhl8?Gx{U$Y4_z6sqtQ9MMi^2oj1qJ|PU`smE2sP4{|}_MC~Cf6){OYMF!E zg(GWYU80lGg^jx2FIc^_ytAWu`QoH?(=&4gO(Y`QEVVqqeU(2nQ}d`qNiCX(4jZ2 z#}>&{4?XU|;LK|CqbD3NC?Z^YEjW~;rQDmIWXs{%3pb~kDI>OD0B{`?Mk>x};oDgY zEY-rY0+HYiZ;nB-`sU@Kb;_SllMx_kRnRfupT+DqaL;U+-gG*aG&TR7#f+E`Ex(-1 zIAP87X_<(9&{HWM-?V0CW_9^ucC98^hr*Y5Ox+;GHnG2;ZTWiQc%R(3q*Fn&s^x)& zY^4d+IBJ8}9)wX2@6o0c6UcR^9pg>1UlCGhf&-)aXe^<#i0?eG`)9P1^iFGZkgbgM zCcq@W*mQ1p$;DZtE0*y~ZYrn#d1vL{Si(6EsX0Cq?ept3Xq-EnjbvOd&%iQQzvjgWYC9h}m zfM3!(2(9FVsOBDDTWMNt!Vk6Xy{_6yErdAyu2uEVE{ zIF2-m4EkrhYHfA2*kMFzUIQGJKcFV!o1LUCKkd;{s2=-wy1Cz){Ly+)^{DI*e!||M zP#H^G9wKB8=h|Qt7G$*Gn%d<8lRd%Mm{lNvDFYqU%}(ybqQnH8HP>a?NKoqG_9uKC zql7Y4XxiwswTM~cm_D{2_FJw{h7ixy=V1)lsB6q;&}(v2GtR(g53`2I-wz9_>q(H( zI!C>dcc;r@ZHIFU1o3V|;^~~f2I^{Yy$nKcS zKFnrqHcHD{Tv8?#C^x3!`ef^}FBAkq>PZRJObnKZTQhLDl0C%yeF&DVIBn08$~*P>cOQeNI9YaI0)~YR;CVgntifGBV~j%6?w_xRE@-sdUCiqFfG@dyz|; zq(59I=2*UDU!s&}MvP!13Cg{xGV5!uq=w@MZ}qet=|rq29}!aS?&X(x3zUzV5Zn_wdorrt-Zr`QEmQ z9xt%}%kt#1##v&4=Z>M$y^45+(Pe&kY{rOEd`kCd*gt4pOaC71G+D&Qql7ZFkGs09 z2RMT+pKn2NvGXjXxL1QGPP9AqG?ErlYTL@biv$)Upg|bVOXw5&B?ZBfC`Dvu@7|78 zg(7E->Zv2uR2YAp8QZB1^`gm(i2;TeMUQAC7_9YZhoRTuzvMG=XfE~2wg(`oS(CiU zDmTreME(sVu344Wzr{^6=r|MB`4QeyBe@_sMly7vwgRR^3uo)Kh>~G>utwHh*&XV- z)d8qmlDTv+T!u_l5IGsmDnmkl>ixN*eHA25Q_LyUcJ)qJOlO& z(CH}Vu86^*9tzF#8_(;i?(A*LJ{hej=|`VWfJm?#*djaMWFT~+vJAh%pL_|VHt9p}udqHrsW49S z2^Z<_D_@2(G|(d1} zIf0A6Ch?hWFeZ^8pY%3&v#P)lT?nev90mbg%r;QyhC&bhxG{nJTfKk$d0QR8HGCT1 zM|?!?E}Prcql?ofQ?e{Bv{HC?zrNuXrZaL49_}xUZ4B2AG?r7Vf;kBvACca>>9mO6 zA9@RD?uZ#{XwNt=Kp6mysQnfJik;un?|*x!LvikXw`Jv{CMaw{rN7yH4X_cz)BY`i zKeV{Y;lJ`%KEu)mO(-w)8l;^--?%Y8=PhO#N_JWR3H`w*oZdM4k>k%$aJXq&wC_~F z5lgyrnG6pWD+NrvNWGRSD%4Uf{Jyaw-6O z&H8qgc7#6G45Y~lZT7_t&`?Ht_Z@|KF0NT5*1jIe6(716_j`zM&*NcJ2sC&PiyWm= zdyl%=Bs(|HW188HSUzEOK70;)Usq2z3}7Ku#$Kt8U0FAXL-FxEPx&-5`W#Jdj=}F9 zcT6?c$i|SAqKg?+zTF0hu2l-~ugoafTC>FqPBu_->KGXQWITz2+WZvZ%FTnY>zQn;PT4!Rv>e$CK72Ci52ile4xRKTs zQ=sH$)z30Bxc;galp~VyaN^L)RbNKZ+bB8cGXVVqK1Mn|1$sK1H}$IQ-F6kD zE?JX7vB?U!PuYjawA$N?zYp~{)b4>-1Yjd^&A(BsphVAusvXv211KRp+!ZWedWiOv zmZ?P^Wa58xe(RPB(dU6@Ewn7Ehvs*(S%ZT~&QMp(Fxxa$c69ld?A_m-b43a`VB&6Z zdFmGnYOl~!Ap4m{_o5T$R}a4)_EEHWmzG1jg5iMLNP~2WB#ys5b6a81`w)t8|i({jH=kv5BlyB5( zBP*mG(E$dH`RQ#9z|2pa7n=|ZgP#qh`>ORYlaDZRM=0PtrmsqMk=;FE-$dRjZ`M_P zDH_ZjU$}qm8IF@M^N9VqdMjOV-b;8=ok~bAaKt=k@K@}9#Oa|mX-ok)$76fM$kF72 zmmvBHM-t5@m~%zt*beNF-T=|hnGt%C($9GKIF6b4WpY7~T#Xgd$O;VsCQ5j<0QXFA z$M0+%%H_=9Ll+{5{#>Q8Kh@YcwMhZ-#ql&;%>U)4@Z2sXOABGVRP-RQ)6VNUiNEQ)9w`fJZN9jHd9LbV=Wh`MpR?cjLbf zPpe|x zAn?bkY48qsP0<$!H+4xt;4@Y>usB);f<2vG7E{+#+wc8Isv93}ny?B_t%x9^I9gv* zyIf`H9){UnOMj#0kHv|!E(b^Y`orxvErF~S28XupWe^a;0Jlql{|Efinh9(ieDT=U zNF)DLd85)gN3ZKuDyiqa~ln< zU_Nm)o40kT$w_DU2DDHq)pqldwr7x)diA9s>SK)x+4o^5mma zG`V}eO)o8?>1p-*PPi>l5G8K&v)=U-S=2whq2i1FoMW07>R{8nA;lC3B>n<1zil$0@)#7I(hw<7sTUC8k_-_3p)hBwg;+t2}o0(%$-lf zAH)=pF}p~H7w_~$9?mZku&tXqsGcJ(8q@{hY?N{h}uwgXWr9ap7vIb7 zO3`RbOTbpM+s+4intEvr+%ftOHh6)t3u`#MdF5c`*&{UHl$D4yPV4Q^->L@vH9aI! zHkPJxC3mqLZHy-q9gSzGyL94g9n!ZqSiTwc=tO2z#0OAZz#o%bIUTA*sI^y6o7_b|g?1M=GP)%BMJ%bhl2dw)w zoHWlVlC%4^>~Ks=MBtycuf>{1Ip2)Ejlpt@+7NV43OSU>TS^JP(ki2u-FnaCp)Axp z$2D{!67X&J%MS7|91#6)mL`Isa*xjT-(nR{@OM8#y$Z`X)1X*KxrB=VY{ zocOV)jNWE6$oF|<31dd9s3#1u->5jV2&Q%07*?=qjW(hL**<9nHb$O5t z>HfE*2dTx8kGJ|P2@RmWTu_k+=&o?7YS9;L1-@oYr61#?&}>)7l95|!`IuP z#>R$lN~5%sCrid*C}l1$Yb~5ol_8E`WypTQc&NsFDKPf+IA40I70c`U1E8Z ztN;K50apM300Idx000NhL7D;)vD*LvZ}bHbBP$W|X}qSrv*N2-oDg>>7_>3T-ikcn z6zn33V<$3rDyMJ}qOn;MGY**JpJPM~B?z}9*0~?MX}PmINfth3VD~|`sY?PFTuP^Q ziyj3lP!@sWG%ZU<0u8gY!CkKV3(QSzKfsKojs6_lJX%*EMk5hIB~xe!1pc}vy*n_V zq3b}G)3LTZnf5S5H?P8UO@TKbuP(|mxc3~FSP!LF1O$v~bJ#G1NPJwX^&r8)y?7+Z z&Khs9G#m~a*@V(0z3;j>eOjabndaWdc?J$wP1Zu$c=+dMe{zl!$loxb6nG3+i>s2q zM;NtKds5-IbmYc{Jlbmk~QmgzlkWPuFMjBMlh>(@P#a(>lnKIOyC78-s}Nrn2G z4p|koPNnXP^Kr46FcSj^c=p~NUM%8F9N9SMTbjr6eZmgVyrOWG8BYxkW434EwXzMg z23}KauLjOF>9iZ30H(IjHt3891sCS!14wwzWU2w54rmMn7ZlNSrX0Hn9@jIHv|OD7 zTX54?FZPs&-eb8W^Pt>`$$hRw18cNka=bjI)(@ED&B;N%i!7@q|AIzA4w0ESU#{BM z!fTb*9A<*^lep-%nYl=}Z=e(ah&aNkO#pxO?W_8*$^H$9^?Tj+xa)k84yIJ!xtghq zYQGKzo%ry38{i!@fQ6%hxNO?w$kz=U^Ag z8O(^dhTsEK4bRN8u3SiHF9^@~B(bCGmNzIJ${vh-02Pgv%=I~#qSZR;=FDQR}*C9p#V>+>px@G zCr_z`p<5X;C_y8>C^hGJ*`8qy^a4eOR4e=JPA!!wp7jlBSsuF)m6b^ zApeuqjU(mU`yv4nd9tworiaYgu0)As_^PxhVTj1`11Ajy!;+{0aA?Mpq71RNUvb_I zhoQRK49K#Rdr|(;T&IA~$k&GI3&*5+2=)It%2k5#CGl!suFmAJc%vg5FZVf~FIu;q zWKl_#2&!rIhSB{v?mv2ek$%+ga zX5a6xx^cozjL$)m=ge4(Qf0%`pmj9I=t`Xrl`FCk`kB4VDd#5xk0*5)uoWatmkkaV zD~YZK|KHF-k&?m&(BcK;aucX|f8mxnTW2DA@iC&;0u_vo`d1FU8# z%`9P_8Cl9W&*CFKPfJ?kIA$L<+8D>Pf}P!SHc_+WL|-ZE)#@w~SUu zqU^0?Sh->ojoGj5h# z;+3@U^I}%?W}Ay_l}ZOh*L4JJ>V_+08G61Zi6vg6EEiHr+;_U%ukIm9K%l?oiWBMv zUg&W^GU+!7HL|;@Wj;&X5%ZWjd&x2S7kMHCZt|e=HEQS2dXJfyNWme+OG%A_V?6Zf zJEsOwaYLi$Z}jOqAdDUYBv(zksCrLmEL>9-3y#=AA=0(W|7Qb)q0Mmg9rJ~tF_y#5Pf9x zFi{CCDOgJv*Z?ya!+{5~+UZf(L)m1V2TwQQ9N>O@-Y@_F00Ie6000BO0iFZ} z(IvkC00mdk@T9!^J&gepneLDFS(Eil*OugFqqD@SF5%K<+y0`%dd2A3-OoMrhpl>| zKiYAYUJ`7m^0JdXdunU_@8gJ)^DnBb?wK2p`NyyMo%HQ40F}5KRz4S#A4!WW?L%En zY^JG;rVQCgeA}>&PRSfCNo5}V;;?D2Pu1LvDcKWKF4>C_Z}Fp_wi;mpwb&9A1%R#@ zZA>@;g<@rLPLi#iZX@tK$f%ughc?gCn(`{{e6g`p>?Nt9!vnShT3~?oMc7fh+AlO6 zSrUu%tBotUI>*y=ul2-|#;Je3F|99hkJh2UEI&Fmy=9&W5Vf2$jo^xk2|kP$Un_b>0O!>L zM_4Jug5y;0Qz(YOGgsUvO(5Z7)R*rMd8X}zfkwX7t(#4 zQH>Yp$oA|&GHj&8cs}Dki>_uCV%Vj}YDzXeWex!NQwBuCU}mHBq<`>SV-Sd0u5En- zdLlo6gRouVhP-M0v^2QMWVL?Qi1eC%o9O7=n~kNtny3H({}{H!W_~cBuqr*#Cx}@C z6X$7+kVC)6Y}NjeC49o0=eCU#Zd>}v!oqZfft4>#c%R_=e@{ox1KbIw_xp2!Ok_Zy zX;P!i7D4_0scdv!%tMT2C6Tg&zoe_KM7R+eLmk|{FuuwimW$t4{H!E~=vi~5pRK8~ zAJC&=uO>9FQg)B?dIiJui7|X7^M=!^Ac#$E04j43(X~o+>TSmhz0__L8|%;~p}eA^ zdhZ2vdG@Dy-T&=z#Z73wDpQTm-+H1zTOu}o1n{#b$S2?-G9YzU;H2?dVeOORGTb=& ziISNz>u%yjY8lh`rV!Y{oCzQQg@sgC#vywNy!K} zu3r{=Q2XTHx~^w$UEUxz(*E{FoVQ9EgYl2oPlM(qM_cq)&x~}VmN`=8>ZW*j6Mn@uNRzn} zy((4WgtV}2vuTWQH4x%#T)*JEd<*7PFo$;7>M7Zu)mc4m!Z|x6aJ3w~dJiji&h?@D zZ;x44-oFLE%WSYy8Th)+cz;3JP_U^M1VhQc4`qa*JM0kl2pyB-bQIJGsKQ%ddS3wS z3UL=B_K1xkGhf{B7N4>+&bDiVhFc+B1XuKe7;Jn0d48_>yfo;#nsFA==5>#9QF1){ z(UX`UJNZK&&Vv>b7M%9ReDEJzqR5JrduE0?P8GXZ-;pPcph8o4-~1w zZWkIB^L$9SLJ;W=y#!L6hu(V*h1{5V$-GMu@MzP7%Y;5;BOB;luVTjzO4kDyW#5CY zt=2(s2T5rS0nn~J!ntN7g?9V0$2no#ozbmj!?Q-fW!PF4S8p*2k%1W-?bVbcg0eYs z!2dFo_7Xzma63NPxPG*8q~uLHr&BxVe#>0vO?$=T2^x0#iI3!@u5tg4(U=j5*+_54 z0F%Wv3fgr8egW(q8@>q6O=Ze8MiqlD5tibEu3Fx}G4FyHzq&gr{6LM9d)J{L1lCi~ zn&3dN5+IeN^PPg(+oDami^A8T9sSf2>2fyc4GypPQ}T@h!D8`Kw(e$#3TQg!v8 z-m4~swU3qjXDGUb!0wpN7!0_gri_lV{oha#kS_+7Uq2(y9k@z=VU?-MNev5wIg z&laL)m$8ef73HH5v6c*Y|eoG@02Lf8Z|cIV6Yx`U)2Lf8F)V!v{?ujSQ)@ z4#w()e|Zq7-dsz89p*=A0yv%JZ1a?@NVj3=W-{jR;>Mp=jt#3RvwU7A@Z0N7<6LS)n^Q3*a3f8af0{5P8)pBp$NYiGFRcZ@}oD& zHW)R?LaS(@i>2o-_ZINAFDh=&mjkLA&%?=l*QZs#wm55BRqCmO&XLfnE+AC>p|g3( zN*-FeM9-3YW#XXiG!IXs!6rsltSNYL6MXXV9Vd{-B_1Q5wg1`4!7n4JvnA9x^yUM6 zADjlHf=%4_T&mM}1V*ik2KRbf)Cn2JjhIS<@|Ir{pCKIh!;a@bLxBCzRTIMt;gx$v zaZ%JfmmVpP#}cP})KnnVF-olQwAVZ(a+a%D9%z(GD>A;NBP~A?q>9uHxM15DX+8ZR zjAm3;1|1C-IaPYS{|5XpL8D<0;VI&7l~79amC9f}Ym5GY-^r-I~>VFB56{V*zY-$U!K zVFQdnV%)Tt6^MNU%)0PAf&ew89ahrhL){ zEh6`gW%1xsNgWw}SG^<-OY6ATq)h;-@YY;P>E5*%$(fi*UGWwLu<>TT-Sa7FXmq!f zU)Y#J3+8O8ZWKdSP!nV2|EjJwD5+$X!8r6f4ek|r%2GuXR}%F6a2q?arq7pYVk_cj ztwx>>eM8syPws;jk(~Ps9jtX)jHAU`9$|nI>Vt$|0g$(@Q_>RAyJypjAbt?kF$I{y z1wY0APNhDX17x9ql$zbERwGx&?l2``<_(d~Cxhapr>+hGa=vOhSoVJbMW10NlXhf` z{X!x{Ax$G`Bt9e#ot%3JxBc}I>}86XtHQCSPyuk_*e26>CP@XA{ zyFWt;I9He;sG90^9y<Ei(D`ALc0v0}mq8QZzORR`ovBt5MIjEKAR)_h0O$&iA zjxYl4Xy)pwMAT$R{#W)-E$t1gG4%NcnHNKx+}2+Ba|IoszT9 zbmAtUg->l9Af`c)7#7l@kf%Git2VW7pFu3 zyi{{bsHo}W00>dQz^$z)Puj<%3g_nL0nS&jG=lL8?*AEpA4d9AZH{hBcp0mj+YWK8 zp#Q8A)bV5RUi<{7hpj_bVOPOAY2e|NrxfF4qmfCU#|1nWk)If_9?>%W)GdFv3hG4@ zpKLC{r8(0U`sqyccQsKnEmEK_Fnzv}XUKihZGFc0-mP-yr`T@%tq%<)Pn`3I!j$Q? zeF9#2X5s0&)wyZs4=Lwhfp1(0PM}-91R(w{%3%Cd617>_21riKi_iWpL0e<~6i=ZV zOZ7^@UZaZfbN360V*9POM6_DsD|=YQkCP4XLaaLT0`m_RbzUg25jG{3f(!m9P&aZ{ z!q(L`i)%{gQ0SY+PrzT0sakziZcWu%Z$W|jgPRVFYwG08{|X`H+{TI7ls^#pYx>&dR>Fb8t%*vXo3+^<-KC3Hu+ z6=klc8?DzcJEri%X8>PxvsM4sIdhHXpd^rn*{^C>^5eVNng+OSb0s;4Xlexu0Zero z+T$$-25!cGVt{9DTaF&9H^}U}3G}pS>IL!a%#-Kz`^r9qZ-D7Yl;KotO)9UxKpa{L zw>Q_Mai>NIXn$Y+My~ZF2Y>&^QE$SVx_jz^bp|PRWCAB>>JOvM~`vO z+_Gy5*3L{ z$;oakrV00qhgqul$+7u7b9vmRevI+t$Y_yn3}ah}+S_Yan%eU=mby2VM^_A7rt3r> zs)R(?FkAWiA41^rAmJ1WW#RN_n3qx_P6>|SieL!AoIdEDjj497rZRFijV(}}4EXG6 zgu9t(e1~_yD#HzTg;1Ck4Vyx)y*urm%}glzQta^ZS3I2qcV^Mjt>4(TZJQk@9ox2T zc5K^r(y^V6ZQHh;n{)2?&QI9S*t6EEHLB(m7+X4T;A58m(~&2(p(ESK1Oxve5AAT8 zx`8wnQf0GHsmvy948t@dPDc>2(9Kzj=zf_zjL1hIPB^}|$k$mExZDm*3Qr3I*bnD6 z|Jg^sLGGDZlMfURK*w@oF%MYk+{~0FQI?>Mw* zuu5K`rlC5?F2%^yRmjlrW+*xn1(rjj+ryA=QBW@PXy{)wg8pMbE%2Ox*uxp*;vClJ znHjvU>Xw9jzP74Mmq9k4PTUXgfP04>C#ELY;P}jdF<$!^RSFQQt5uDl_J^Gr^o<8n zv+MXbcS{q2|H01(=;XMNno7VO_S$)`gfF+M_=gC%dOLXlGV$+N9=R1F?A~lXuu#H` zq|-IdZ=wtiu)Vio{2fhbw(Zg84EtT`c@hOh4BG`A!GoN5$=AQ2{SLdq88=irwDniH zF`~un#fqNei{fwt91}_)`o5%VDC3MH$fDopUa)3$yohh?+2xymCp@v^SNe-Xj%Eab z`5kT##FLGdbg65dK#EM1&6%_AIlaG-ae20zkCO23?%dI#%}JC~$37XJd=asvl?5{* zwk%=ko?OAa$3s*cy~SO#A@&rLWs+Nb*;dR+uM2(ybQb@8;vmUObX55>$H5X6W98T9 z6l1?Z*Ea_}jgPoBYo8)x;hs_sZ}IKcKf>Xb&UtINffTib7L)j#G9SLBOp zK7-_S9istYo!D0#vH0B2sf;zYUg>LRFEJC?po+L^GP!p=aeqAQ_COHb2tGiUm@Hc; z88DKCg0u*?z2?zSz1tFWpz^-ds>ZE$K~DtRT|Vd=MuY9~q^JMVF_Es#Un4#6N5GPN zH%XyGKVl1lDxgC7)~R)V{)BBpcYRc6^Zh%1cXVqH1=qS9#}`qT#SrY7Lnre&uC$$m8$rj5Im-Y}{p_Y+XRZ7zI984VKvV9$ za_`_AWLW(d+s0JUqy}8RKrCUwb{TLD2r>%w^d)kKiKV*KOcS?w?@)97r(lz>Ongni zE48j(-drJ`jqsCr$o$Biz&C|4L#?ZJG#Ycjf8C%gXjw63Z3ms(lJnUT4MaOpxdIugVgqoF7C1^iCj^#Jj~ z9C|?&y>{mjl9s}QUz$fqNH=(kHVze2y)0r3zjLhR5Q`_B#xlX~GMnlte^TKk~WW)lZb*pi+ z30xzr;$S!t4qC>tQ9iD(J6u-HSFkyUF(-YMXSZ{*+~JldV>5llOSY?WuXa!Tl^@Zm z9`v1#)x?@v{&YN*+JC z8!<+msxf!N<*RP&iQ1DnPecV(W!fH9CY&UPs95n~CRt9Z+IOoai_~?gHV~$GQ5>!> ze7005-!>7)OJHS6%UZyAYbS;^aLviWQ_drzs>JCD3VGSD(<$5WTCO81Us70M7HqVt%<~>>2updI0&nadgxS%ycO1@%}?+k=MP3<(v^%^=EG`w-k2%9B$6gk<`WUx#+J6FW@e(f z!~5thaKyb7Ad9ZdcjmO89+e*2rYqQA8tu$(!n@}T1E(`SR#tOCVVE0X_E3KX--gz9 zNRAs60F*@N1xu8_^J;2Rwh%9@PQ6C-gJ5(Y!bvrG<-lI-x6)~AXTxnQje$#mS8R+g z-utJ!G0=l@HsHR!6GnU_i}aF8J>GE{KzEL8eq*EdngLO(-m=a0B6sz0>r~#2GvQ@{T%3P$F;mxY}7_mJ-iRilfz2mT_q0g^eoL z-PYqIUFw8E%9}8XnkSTx&2etMFr=Ut%pcgNfxvsfblx`9i9jNt71w9Hm*yo@r0{1M z*BX;gdOX8mcA(P3s6B8tW3#w|Q5sc8Yih%h;6M_%vQQCqUrT5VynGl~pJTfwQs8=k zfqhQF^q7yBD;DE$0oKhV`nQQXtR{WVm`qml=IIE40G+@f0dV50Kz**+59BlH2Va*O@$`mWOf(mS+~HoNCCVZ*Uc2I0Xm zf9PV^YKPVRBivelBdXyg>TYXZ#p>TjfPYTP5>7tL%GB5U+WDZUXqK@BK@;vZ=Vfz( ziM@oV=hj82*&ixwl_13-#_}HNp6Bt9<4JZm$0iG}ha&uLF+d9a)Am{yl@yGVv7oH9 zo>grZJz3OPfTQthpfk_Iq&_`SKL|-Sim}J6c|M*D@;Vq;NwS_oVG&y&X@S!mX)0*u z(}bj!9mTlRxKp34e|$2Z!BSKtmox1LA`m8;8UAWPPbQ~157P>tX1#*su)8&O=&GlE zjfNQmO!w`dd6@_7;sT>wQI;<3YZ!fyhI$NgxNIy&3Ji=F@f3;}ej~uW$XrTBMSQ9} zauwd}R1UF^$M+XQ8oWP?HoCKWE8*sUV&C}@JJx^1{xeZC_F#4H@+Hiy}ccQe5l`gB0#Z>&S+U8GsO1hN%!$4YZ* z9}ftVbaRvSFz1%v)C%8)xSi%*;9mRkFquHSmpk&6J8fgQrJQ`e3r?>aGtKj{U*p)$ zbe`BAXN)HkUUJ1U8i_?%Kl}q&RGi8&ymCdJyw+804rt3NuVE+cl0cDXh+w&FniVRC z;NOrIwaxXZ)3wJ4^p}-&ovrHl zQNPO<*7Di$R-+`Oytp`W0B;orVTuiG+jf@Q!@|0;M?ig~>*dDWKz|K{yu7A|brd8m zIKCV3iqv7ajWh8H34L@wKaKk>lb*v;$x*-KynU;|8dW)uHJ=yujKZw2!!v5JZ`Mtq zsQcYqcsKNh%tI#oC2j+suZf2UZ?}Mo&ln()Mr4cPJd%fsGoMvvH89JBC}qZ7t~SAn z?n2-$9LX`tN7C(IV&-+Q_1b_RTiuH*he5;iGN6~dLw1tZ9l)}My;w;s0?u*ZT6TK{ z;zt`U`HHHXXw-YHKKq3Dcg-dyqCqe*8fnvx1}CnkbD(S%;g6{k|yVe+Y| z8AtTRW+g7WN+WWmRx8eHSyGFZ}!=ug;xgKU1 zm;SN_`tc6a5#&$Na!SZFqf19h8-0}E0CMDa`sK0hPQ6@fweSjCvV(c5mM$0%*{_Pj z>Z6r2N4(ZP^K)2usAH+dL-u`6o59cO5Edn*HP^8y4*y31QfTlbJKfkJ1sj59wJJ>JHNUCU>F%0^`82t;mA_+u^}U+yd!Lgqj0D&r~M>* zi}AlU;`9l6cv5F)voJh&^?WEXSz4yxLfERnn0 zuPB9=${P{imZ`et4bls{s@FihkZfutd#`drvHzdabAObM_aCMI$<4jkjx%bBn711) zY*M0}K*;6EF&D(YtOlxIt(4qL@%UB%@nKK-yuVOlI7H1KN|IKRzKx18-TBw=&D!e9%~%%QYTl zHape}YxBK+3@^Gl(Rq8eo9ft$W+zLnOF8DJ<>pLmx{gJqy683bHBQ&d^3>~OD#uF{ z0zX4AcE=F5SLOAKH48!btk47EZAx_FY)5FsI%k=Ez?fk)}>HY{QNwjmE7w2+=o z*ZDLlc6H&XPb*T1Ljp5zZj61kB*!@S z@u+AX+M??@X9*>3t-6Brd(RZ%wT842qOL~IpDkYxMuN)&0qP$+-_BXnkfe7v4Bg!%3^3wl^hHWZh%jWZx#BJ+SW@G2F})+Swk*J9!kV zl7bH5&mI`8tsqKES9mDU%B#-L%rTu*kW1!s2wGR{?6j^~NzmhX>*Q@SbUu{IGiP6; z&wfyNJRwc+4C(D`!tcLpTAzf&VF*^!M*Nq+Mic*@-A9Qd@wviVZ431)3swasL{#^` z-&nwY5A|2$i)Pq6dFoHWn}>1=e?rB6Y>2NJs?dMztShUz5NLwbiSq z+=nl#tQ8>A9r=45HqEkCxq6?N_88(%hoIlrACwfPKCa~!?^6F2`nMuWgUI@AX%HZFR3LVm9c*ifN&xlgvl&e}&2j0Ki2GW`HwUL;T#oU5xMA726YEaf3G8 z?HG3V;MO(bb3;cF)7!3UfR~P(92yC3YuU*XM_@6vQ)w*=FQu%1?T6f^Uq>po^kxa! zTy0geu~L}aD}&T#=x*TIzRB8>8LC`)9wefUnVrZhK*bh8ZA8`U$ZQ8ujvPoKBi=88Xa}Sp=owRm8a; z4$YX;HO`d^pGft;3USobKpK^(3Q=4l1tp!iMsD&XLER_gk2=GpGx)qMDuo8x`-EDt zY;{QQ%a{@5Ow2?Z5O3X{1#rP=v2^7X|EW^MojW2kQYu45UXXa-NIw5(Pz&96MHbQX zG1Xo6BzqSNbkb~gzW>60suWf zcBK7D0aBAC%Xjfzra1o}6qsk{L#2gL^uQfGYO>i3_H2_;f##>_ak2-uR1Gsb=?wub z4j03bI$IIlo=P7k<;MaM{8m`5Lb#;kTueAF1gbX)BqcqTZY453Zwvk$s*|oyeRA;Jd$SVTkv;(>XTQ`x*8)Wn+mla6Bi$taj++d47X>?Ln)E6G0rSjh2d+JnFKC@V%9Mcc#BQjgK(@OO^oo|fxK zDtCd=I%dNZj%qVBRtApKF|p74TPDM`UrmB1XuT(7ghV#I9_a>E2qn2<%B+R&U5M>sTkq5 zYeFr8^~LN{_GEo6RLBpW*)S*W^QWe=cCdL!p}SHbIwfu&TE|-$6%BVX++ET|G0$WgLv<5e|!7JN5A z2#tHGpfiS)gTAW6xI!0$;2y7|=NViRVwnz_zB8E?Z9F|E>Iz)TQj~(Pz!;w?bQ&ZCJ0od_gU`^`DOD<@fVQKV^RT$qO@3x1f*Nqm4wDss|-;ttt zk>Ri4dVitj6jmKfGmt$zU=m^1Ml|4Y3Qn^s=U$61NnLX?xdJ3s?Xv3vhCw!SGg zgEn5F+ZZ-r;g}ly8@ZvBAB1)c^aMz4fLQAyfZTy{KDH-@S{v#X?`=_q~(K0IXDh4BC@MzlS zWe`0F?qu0A$>M%-S1!FPx5BbKTsMtx4hE&UNOS&aAj(RS-zomWvFW%kxir_*uMPvS zeJbc!;_vC8955E2yB<;G2=Do=g)V+omDq z6$lGA93ughhd#;#+yk8Cgyih7%|hfX#Cgd1%ajG!FvyEch}a*FgG0k?&?7gsCqc2k zd0S4e!Xp1XIKk;yaaj7q9$s(Cb`ONIJ0-G%Yu6Y(813q8Jja*eoRc3D+L}aKf<^rO zVyqc%8w+GdlANGEH+o^#@q+7d(yGR$CR^UIK@~*KZ`1DgfHyszjs3(}l_r!P6KNvTUsA^hg~%Hi zN0B()B!wl>SY0r3B^pObj;Jo?&o*R6I_n;q_v(?u*-0I~z$Gqln-y&>tE{F{nc}5b z1hl`vIqgw7p4sITrfaorWKK)PdT}wN)IVmMtA|7b48DmNIhttR(FDtJG^@{Nuk*zD z13%KFDHVKLVvbknyCYV)5r4zOzv>=eciQnqJGMhScq}=Kalls(t%4FB?ETe=$_T^? z?!gsnTp3wHYNpLV#2c`wG6-{Sj29ap`;Z~*f!&z%)>lkrxKZY*U??{at1N^;%{hPS<vX&qAqA>qXq%=%3=i@c5HWz5 zoJ{^`^nLidU9&>bdURSyrT{J}%aNHyJC>>y{_>Q=aH8$@)`Nuv@%xDt^?T4$7;)Hl z#Zy#*yU0Tf=W6v}MEXnim`&Mv$GK z(;q1C!V1B@AQ>0EFTlBJyt8JA>vX=>WPP~^J8l*^dD2pe-=In&u^l}Zbu!1^rlT;0 znLJE+$-3p}~_0SN|?p)tZB> zCmfIOw$A}NNAcU_zHCJiHU@t;*-1WNfLFPVZE7zXHX7x|{Bb-(#W%7vEjat|7{yIX zt6ngy59rB|(}D319HEWe>{>Dzt`r)RVzf&Z1M-4uILYo@F^0Q!5K`YGCbATfO1&Fm zO!c`EQ4)>=wiUP@>Sz)nN^jHZXHtTIGy*&>*o1($|0Rg3)_KgMF0;`fhrt8N$AHAZOwf&8M-j6H508R|LB-CDOU0C) zJ7Q9jHPS#qHhgHBnzWtn#x>dOA<&d+KN1;(~I%$Gw@WM#(JxLXsF9JdWzJ$ko-o21e4) z@4ew0hr)7iVh!-m$F1IcsIK1hu$2^^0XY$|d`32U`^0_p$;JAVgT9JpbCSizwNJ4c ztbBA57I4z3)wyM;u|LBycBzJW#WDNS8?JV)YcZZ(twtDif@@_785?Z}>RTY4{0~8W zSfJ4zek!b$sO_}bp|SM~tyeciFtw-o0&ZeG=pJ_v$wyl=S})Tld~Xeu5_p60A;)$9 z#s-2Hq!jIb6&_in1f1^g46^>@NDVee4f>bKOFLtNBANgx?kyCbJHke27m8nmb`jb9 z309&_K`@p9NseTWimC<(6On64=iG70lK+mmVHQr!YT1}-`$QuopP&HdQ)AdQy%WNZ zNtbdz=vMq>w%o20)Xp`Y=-yiCt!v$=7(aCWI;iJ+)sO%j#8Rzm-*UZUj9=|D@N0d6 zw|WFYp^i~k)+F1!qRkjCB&?vaD>I@yp{9&+(wu@a!sYXqJo#o;4HzIv);bc)cS)`Z zY|{>+{8mS&M@d(m*XGXzrL1Vb*i+-G_rr|V&vzM^u8lek12?4vS0K@vs7TiK7a$I( zv|+(6V0!^>b}L$T*Hhxf+-?(6hv@b6@byjJ;_~x{B%nrZXraaQrc5^21FHDJaBR`j z?32}0jrHK>$QacAL+r91c0jmRUYQaFu@6kya=lVX2t<8XL!4fqO=q$kbG2nsQR`g} z;feF^676-9@rx!x=+)Qa@?w<9_M+c?j4FP&^*g0Bi%1<^n*1mBCyh$BJAQCwubf*&M3!ICb9yaYVuKRKwc>FYXF@=!G#2IPy|9 zc$(#M$5NtECX&HMk~1H@X9HM3ia*4K1f%XENk!sWR6iEoHKD1_mV-%YO~a#iUpE|g z*b7pco+|Q3A)*O}bOowjFVH_|fdSfRQq^%G_r65?ULLY!D}ieU-#35ap~@N@8?I`? zx+lp(W1V;$II#V_RxYCTtv60o03}x*qeW{OjJCf$n>!s8{e}D-O&Cp)`3Ek5 z)$2dFQsSn9Yl8?YF-I-Q0wg<&g^cM{IQ;-5MGxb_)_)3ts;;*3tsPwHy(IAzeUgaVjVpE-D4N?*(Jl%}(IS}jG)(*I%r8euNx{%2Q0NCt$nW9# zD^B!xXP3M@(wYaPP!R`XwVk`-;oWze4HOc>YE)pvj{6u)j%4wUV$j~`g$kx;In{GA zbC2jNBNU3!q&p#m=Ch;<`>bOS0+DwdRY}U3w75lv!=~)j*-4gfq0{jg1Oohv^k80W zEuwR!lI7W_3vQ#io?|XUJT9~apG17gAogj<)Ryuz*f*+5d8Pq2J)MFg#6>Ux6u3Z} zqJH&#H5ng`0e&t5$!%;WRDf)gkUHF>8d2Cla}Vt2aX_6 zwxs}Z!f@a@)I?AXO>1>3&~95dZXI|e(iJK6WEPvNj&VtuBxF)9lofOG&8pDMVvB;! zUu$KQ^(MhVDt{L5<$FBdPI7Ig8eY?JYLY7wAK`iS`=7a2s3vr9??JZhnN^PUq`%2Fg7F|L zO4pWY#<4)}g^~9v2Xg8ow+PVxmq9h=M07_^oZkVb?4MW(9Y(CW!TdL2eK@-xaF6Yf zV}5mrL5xt5MJdST8E7TCIvVkYdy@PBe1+=SX1;&s2ctnr>bAEip+?{)N#DWd)6e{5 zBi|)CyLfHcgh-g#bUoch3$NKN7z1Rx+mh#K%?(GZ#shdUEc%u;SM zq%It$3EVvVXwVz}j)b6Xt7(u@O~-rHN)mv5QpQAoGUI1G2|!W=xubzvBDc5Bdke`r zmQygNXboACu=VHCH&IPL%2=a|J2+wQNrthIa4s`+i@j2gYIVkW4Y*KK{LLkaFwimkRrM`a%o%KGVy4sA$qt>+Y{#aj$#kasX#Sp?M)^Ffc<@px!a6 zg1=A&|NUlZ9gV#~_CkKa?7%Dywz%5oUH#9R@I9=RyZ=_9xD2q=p#AtF zVzk@!(-%YP568uJ@F@|1e^{6@wQ0F?lS*R+29`=M!+jiS0&0+)-hhN!FLEgUMxM~o zO)TS#D%0QDQ`)~4F`cJVCJWFF!@UYtjq5H++1MW3@hqTedC2OtBgVl5gaj|q+4Vn$ z3StFxR2v@_3+eNhG{xy_PhPKP^)IgUjDmFPDx?Tz(p540sn|O0w*!y`)EX=a!jc-5 z?C}v)8B#}G4*M?CSv6&lMC_Q$i))rf0xwJV@3 z`p>J&kEt4=1%aUi0f3p5+SajZAU%TXSHZr8wK~LKHJI49ybnZRyj@gXiOU}yf7+k? ztnCtJ@i%t|f51)tOBOUF+z}Um1j5TvU1=;y3W#eHy5-jB(+KVJ&%p`$o&yqaN>UoAxFV?iY}B4Q+ursiYrIfZN$!cI!wE0vN&y1o1{VoN|culElvy>?&7ega$)ObPHH%M!_6Y2m&zx7=WkIcL+1{2TrNcWGX679&pcP zbW?wrmRXy``vdOqU&x+eue>}d3^Z`RAf%8YS%cVvkwh{*nBwW!uBO1TACQ^1Ae>Br z!p>&8p}7HVu_F75koTOu(*Pu2RPK<-&ud`$TV3C0Jrk_3v68l4ox@G#9AlUW4GB2H za<fC1EwanD(>yzRAn>KTAYSj7dGa<2BT7 z=NV_HhA=c++8|h9V^Z>VlWMYzvxW@1M?V=K)D+i_F;uc7G=o#+COoF>mJ_6qH|G4* znx%Kt4r>Mh)Ooj@433iL~R;?7oM;h#5i@ z@c#$m3+8qu^zomvH-uW~7p5*Rf(WX-GbxGc>e4TuX!JfVpxO3_9o- zK4mqB+>rKiALHrZ!@xN^Q`V62^*GsR$9#ohGY5CbgDlwUKE@Q=&J|)iP?ab$* z$U?xI7Q5&&`|Y*(z@T9`)+MomPrF2zh&e_@IBhwcxL{-^c_U7?6MUEy@{eany43G5 zXhRITFPXmfB(KZy^v;W^JUk4mqa(z_S^B|cPhCggIZzF z2-xw1X+7^fyPxqxCHPORTa5>D5X2-UgsjU~hE`V%4^Qy7O9v%dY(|W+LY5LN|G?tf z=#6%FI`WRCm>wr88_g0&^{z?jK>@lpE&p*A9+&LZ5cB*Upq6D~t%0)sRtJZJI@6Y! z-8B6GHGzcMn2s{{>+o)6_J$m_h)aK{XF5ISB~UmOU{4e3h)Vs0Y+1si=0TmgWW@XiC7bA=ksu$B~91t3l~!;{eev zBz%++_=jmx7Hwb^#?_mt75KAQgnn8E`ag>&XhPnP0gCX^CY;< zR0Hn?XdMYcx?Ow@{eoD$d#P+hBHrs=efWVmSP*Lz2&q0qNdg5-1dz(1tgPlxyjo5~ zPSU}kk_Yq&4sxKQBzTyM;g=C5kJ#MZ2|Y z*F}}9WEhw>Ge!+n9VPq>&uJmiZ85h)OnVIm@)fw`@t8;LCb5QzGh&(_Uskg5vx|xg z|9a%Kg~spw=shv9jZL| z10u;42Lwk9E^;@$Tm#Fkg_>SYV)&4>ly-je{qwsspl71|Q!KC$NBf6FhZGT~N!4yq z(!5Vm06iqS4_equB2J_cL7CZ3XP*I^rl<|Xogq<^P1C49=WjA{z-9QAxkzE`ah6Rk z_t!;vw*^41<39sja7YcnIyh!|icLIRm>-`lvh#NdcKiXjITQ(ILO4K3n=}X~zn9w0 zK|`p!OpWJ9@hHgXR|{%2JC-<_%$_!~+4sO-W5Va19*C|`SX(-CB$CJ(L>R}fIk zdvEe-usZ4MzVE5`*a}I}bFiVYq7iHVC~CLh*n30TRSCEOq$MY!&Wj=|#_zga^G$kF zS?J-CYuWUsA!_gQ-Ug6hHRc#_y48WCXov{hVaAe(!d=3}6aCS-k&Yh(Ec7S6vb*3s zso#&?XThSLrhXK#o!^Xs}CZo3^v4KN0(c>LuJHnQEh$-Dr=0Zu5XsrFBw@8I&0t(%@Ue_ z`{{|SRxluW3gm)a#za}MZ1W0k<4i@!=OgL4Y47b)h%zu=#@uw1<>f@^B4M`#0x^PQyHX*#?OYzp{7O z5iv8;oe2hLsMh^G;O2}0%hBO&qCon)f?O6F`pZQli9j8OXjddWjT?o{RW-p#di`S4EDptk)=@Axw=~ql-=3}6T>Sc1jRqFVBcNV*5rlm?C zj}U52QeOF7q<0cH!ebf=fSM|c9ca{Vb7*?hV{hrme~F9f`Nm7e`n=^AAAZy7|N98u&Yku$EmQYR4k02j!L!IJgj_4fP-~uI=&Oa1N zgR+Q_wgt?qDXy*8w|{%H>dFNq8dFfILb3#x)O1H12Cf$j3dzG!`(z*)!UGDUNqZMG zs1$>9DDDJE^D7EEHar)O3SCU~89+{d3yJCm8+iU9t78!nG}c41@`C~15xr56h9X zz05%#ED}`jbx~$wY>#9vu>^qc*G;d$e|5czZ{Ck8=~VAj-5?i0;h0DZ7f_JFM!#?^;Kn4} z#Kz3mO8HVBixEfbuTo84E`$e#t!_e=nI~DVsycNPt|$1anjp*uT_tE*&99KctBn zJbgBc=9@B5W139Qg74e`$Tl_tBy+bz_83k%Cl8@wu-w^o`=x*+>MR=>fng zL@|!PFP@FIqZAPD($ZuRjgNz}JIhHN7L##r4q)129A}@$lS6E+Pzu@4#K{&rTz>l~ zY#TVaf>!eQ!85pbUR%-hwfPq4z_%q75oV4+`|^8~AELUCS>AeisC>z(Ws1(Iap!~g z>Nh3Rwk1EIz>u`Ig`8nUiW$8jk08~MFVc0obYo2QLZjWKLaiq$E7$m?K)Sarhvn6B zs0NRkmUV4~r|M4n%%U-y8n%m6_t-)jnU_Mp30r+8M5h|J6l^-^6zIa&!V%vI}$oNVp*3csC6qwR_3v6>1P8e=7Ygp zRG=iySoN0bRE35ZD~kv0!}iMQmfjGDTO&#*#h@;@dt4Iw2<8sXPCNe?>LGwoNQ_HN~0;>~!c|fA)4QDzN9c2Fjh4=0avJ z*)~sJHY?_VyCu8-?cF77ae3n7n(J%Y^oVB$rG&0a(IPJmP67Bk`FaRrn6xWAEk zo*ZlDQ$$K(*H>_R%=xM*jwz#$a~X8*L(=kKAz3RSHWYvqv#AhI#=5){R$_9#Iz1t) zU-~U>#Xeq{>t5(-1%V*hmWZLijMe*ab!Ci|hPw3fcdTs1Akb~qdRtdaNvuF8NqUkf zBTK)~q}VGVub1an#MlxJEfltqkY#(tplLBfNXFP?nEoD}D~3%4Dd&E&H%o5iUo;I> zDBNKTK(~^TWzFu@^HenilW{?J{`wB+2=q9(BUFF@v7frOs2pewLc<%4WszY?RYmO^ zC4?6ec{Qt9mNEZQ5ypic+uIxIGLF!{{*OMsV<7m6hR?jS|BY6r0OdfE)gx;G04z1GC_zOlMC6TDSmzEcwqg)F7P^y zfN~!X26cTZf$go=wC*jYq+!3yaVq@FSZs?3FYT}Fmaq5+me59q+Nm`qqOSwmnkfwz zZ_MGz^Pg!5udv5_Ia2oKM5}6qjQW?Ob??^pf#2JECf@r?P&PM@Ei1VH}5xnpqlf#K)pTeF^ALWcCHV{&^G^A?_ z`T$b@pS52%>F#<7QJVqheE5SzdPH|pKv3D-*yG&(Tx$6^{iAndjmf5_^K=3au!L8J z{Av;V1T`=ViLA2tWitSP`lZa8Zfo8g$cOIz2zrtrptdgGrHl1N3%xw%#_8%ecE6jv z#d)C28GJaHS1P6jRWgNZrTuYXJ#^tTg*#?x1`-I>b`bM8HpbDo(5CQ^&?kdpH_*3G zHG7>qT1Gy!F2ORev4U4U5{bdzN45IP`iTz)#f%C}aR(MF3K|yE@66IN>lqzv*!--m z`FmR?R;-s`M^RCe=eT{Ku?BTrFkK{{iXb}1mI`#)wsqIYFGevrD5$<6|BW8KX9$e= ztP}+Ykh6&SeHH83{sjPNgP#ie`|B}x5T`3a<4`v_uk$u$;zN*=6SjU_6Uq2cR$?YE zw5xZy4G+OL8E@E$8?Zzd-DDJe8BJ-`IwW|=nyw%VRIBsM?3e=nwQ?>$_tDh1QG#Fo zX^cdiz;WG6g{S9MKL)v3Vf>&r;j7+0Mxihu6E@s>%$yytkHb=CZ)OOEtzzkZVXQm| zqnn*OuYJR|nL;2#GrSa|TR!p4joKyzzfG&hWzy%ex-T`qJ*KMe;(3eLWmuE6ft+=I z|7d_CtYWavoi@+|BoUi5saU^$4iM&6cBN@G6f;hw`C1gpw9B+mFqJ@tW}?|EW*a34 z!N&X7#J*x~vvu;NCi}Rzjx)BVW#5)YmTu1>9u1%Q*|U1GuOdegnATQ?g_O>6wn=ww zEULxxpbShnqsSk}H!O2(AAVxVWIjT8MtOaT+w`A`8?#(@lr`~8dey1i@{H z{gSSSV@Css$9eQRcl7`r1c6vacjk>nvMvM(MM?G|9unpfj)^d?79f(?#af_JEUjbn z8*~#jDkD%?nrh&O+I>}=a94Rlvb!~7CKrOzo7#r#ZR9$LJ~sc|&2rULyT7xifYj#G zK>WAp6z@c${Ey$<9L$Sjzdw*Z52y5}Q*uT#~DzRX_7~>4z zB`j#*S+7yI&@PUjcv&QWGBcD-NuZ(gFF!Sci#mw%AYG_2|1Tpef;Oth} zFn1qD*SI734S3C;p716UC%Sv+zU_#iim%Dcq;(8v@- z9de33-n9}G$gaiq`P%g z;|4)}xCz9L1xh|ymh<&%{xNUqwU~~i1-b~Bc_BFTuh-3}O}-Jf^0?{Pq_G3mfY(l2 z9&}n2;Q8uO0yHH8WvP$hhC-E>l9w+d+YN=ZM@klwUsD^Rxbj-eQL6u(R5C=KX_pba4=BH=eBVyGj#GNMIbIQe zuAch?fw4;50Ou^&qcXP&i{Q@)2jctz@$!|KJc?EIe!fuDa=NcW>cpvw4osJ~IP zWOLG7LJ9myJzP3)g)CHB^wa(_HEU+6>EbU7>&1Y3cmFD|GHU9zXK|=5kC^K z*nMJXP~d89?WsQRGK?7dq)p)A`Ac%1AhL$ZC&t@?-A1|7%WQV1$BajVZCB>m7wB)*C;p~Je$}4Zqs;7uQBrD=teKq$$L?#Vn6N? z=Av0ESn3?@QuF!|^jao~X~#|C^k_R3G8fbT@Of^ldZ>nX2=b?jd{Mr%th>B!((wNs z>cuE*-NhpcCD-6JK7>qLud7X0taQ0RzM6@lF21b%R`YLQ8vyi`Epx?+Lyf^HjsDw3 zI(VNf{6T7)Hbj~5aH|E01Y=|(RZ|9#z5*m07VzM-)4Rwq=ol5?vY z(O-@^|KO!o_cUJ<$U*>5|d> z?_Q~ZS@A%X(*FZ{K!m>$64+D9 zbChPYKY?bqxj5zsfh(pA?SKDAlTS2EsnD7D(9fytDfZZ?9~(5UnPgpCJl0$_r%BnRASVf21KJ zcGzCYO?N&3EgQ9yGHm)+mYO!PHw8EKXM*WRK3Rw+EPGg0fzA>-Xl^DA6v@u`rc~1! zeceIWM-B)G0vjJ6Z|v45nVDj}vUDasy2|}g2!7bVx|7%%P9u-o785KNva+5JKiUZ7 zEqhdRS(5?m)+4(xL&tmWPX^80LaHv-YF#kdr)jnJs`9_r!jf{ZaB@>*+J`_g0dx0Fq)*|y%J3au>SeKfm;`TcpFm=Opo{~<7&p|kAqxG?BIi_}LSmym z2{0f>>DANM8BJ~WQn*q#eysHQ8Ks}Au)03jIyM2ZRyq)|q6a^4KDp3@PX4>pV^BhV z9;Ek2xV(ozl$6)Ee?3^G=hOMi)z-0{t}w3v-24~Dvg$-0&9T@Qe&n#1Yqm{7-BGeq z=PPNf?15x&r*;C4AMGol$w$ZTsUfV)pz7S9&)_z0jL?rBM;@N;gpx}k5pVO~u=N~q z+qjS`eYbL2Wp98NGK1LywPv@L35qW|nud!BpN!v~JpUCv{ElS|< z__bN&kQ(TvZkJibg$W>piqdt6s`+T>(@O=Fm#jZY3d!8!9k^j1g7o8Mo>)Rw!_w6e zd@{yEqJhnyl7AVC@Tk=D6?Cr1+<)xk|FcyfHDu8ATSLC%S$?YFIXV|C%k2DWO2sSk z@}W5V$rrA7^EW_J?y&T>s5?29vX-x@6sz|qymbMshL6h1n>5X>{}b-DH*TMcX>Nf6 zqq|JKUUdH{Dj!j>m%5?M4s*aDSw$+)FW@mLBOE|SfF0KTJhKDu;1LX5@8J)#?J-?|ZyJy;ESlc%)WXtjDN@h@M zN@6&b)dW1M#4NL1uK~lVcNBSZlq79b1UtjB`@SXH0_S6I7iJI0NTgE<%jX)v(*c-J zpmsVS$L+vb^_?6oIv@+9>jMm6h%)l+UAJS;D}cWKBC`M6r5(!CDM7QrTnBAp?~N#% z?`hJ)glqpa5Fw$fpm$^pY08YOKpl00YPTpISMO7ny3%W`=HJ8_f`wFmhpYP8RyHpH z+}=pHAp442uos^Hv|cUTiR|Een33$-pxv#j5Q>l(InNbB0T(IZ#T> zOpa7t1mkDH>NwlI#F7?3jA#$L0ziho>U>xP;&5iAGKGfI739U#7ZylBpnRpNFT`Q$ zVhTtLZ9V0o+h(=S<(^aoE>>VzTz^yo17Ix*C1-(St+TiVaUcmHF*fVXwrssu;$6*A z64FDKZ2f`%)07)8l+hrfii?s4p^k)Q{e!pVD+Klhv`56-wdep@RW7Ea%^`6XNpuNl z$+0&J-5j^{Z8ibz_Ah9f>cdBbq)C(s*wt%R$4UkZR@aW$A4Wb;dq`gURa zgo_Kj&`6NROrK}Q=4P?F5@fnr)xRA9Kh!6f{c`n_1M9lCVkYcnsG(aPyJ?S+b6Z;t z+=x4mkzd|!w)`(PywSXmV8?++Oyz3{C~2)-~03l^J20RCic$9G!;I z*(N^*KGX^!Mii1iDGt}+Nt{$Qh+KY*)0;jRkXecgRv1SfBv9~^h$hcb~o-BJ9#UP zw)OCwu`tGOF+sP9f;c{6DW!>0W`WHT2+!KtENjyLB`X&%-$q_CSPmCN9U7@|4XRFc z7d-hZd=Dy^krhB&(&)Ms#YH7ZJ(q)dk(ykpvvriAQXbcf@Rr{Pq!~S$P~iK5d6S2Z zHrxw2T1njJG~)DBv=xNQ+cBGX{p9C-p;y9vO-eWsLpH$pT((HpEHVzqyQLCE)X+_7 zC~da?kkaGKpEMmAEg&CI`}>LrVG&b@{8j*kobI9!2#X~yx989ClsXI+?ZAf=FebrM zbSp}p&Dg-3vG8-E)!nVR1X3YOUH#>9i^V#N#YnOedk>{;bkFEcz9sF6zPcrbUd&>g%S<+52u*gGWkI z>SL|Su%RoZ2Yp8NGpHZmwSEGW)$q^Uf~X50g`MiFxlx%lze$6q(Nj|KMf8!(I!MM6 zj}@j5f`KPO5h(JKDsAmm`WpIH{XZ?rI;Q`)Gw~we2{^HCWsWb3Uc@9yG+{>8kIA)& zj?YpEA&twQt-%`RJ()vp38)?wrpGeouLGr3aVb_N*1oA;}L`7r@rE4at{f; z+IC0{kKrwI&v3e<<31DbIOfa_3!tLN3rm*^%{17g$EaV<8}j}C5QRni+{lv|>;_us;Zq{J(ECHLebTO^EE6gK@#JDb-MB-IWUm21EH;Rt8w^b= zh9$n~T;}fJ)+T8N5WhWfG7W1K0&bPI0#~wIz~>6mX5Qu8JRNh^NV`vqBX+kXY${=d z8Z=3W<*{b?g=Mu1$C&UpQ*zUu`Kn9OY)y2!-CtOU`h5Yv(zm7(>hii*3SEE$I{TvuaxvUYHM3!GS~UC$w%Tl^SAIMW0Vr^ z-pm8I0J<~KxXd)8nW(g2cDJ&hn`_%^&Y$mB}mCE zHcuY?)TSQEO@_pI!fx~aFM&lq${{Vm`!uejO3q`Tw)`A9hdl77V8{-faxl$4%qiph zB?0D45M{}{?TpM6n-gBs@`r2Q6(Xz&PT>1ZI36c%C{s3Tb9{JvxtX$->7lO_NNaSf z;wdjr({%r0HGyAMa=a_v`ZQD{zWwtE0kR%`7sQI2W_#cPVoyO4#NBV;B@@Xbt6zv? za?Bqq)JHO$bsvibX%2IP6$L9kXwe<1CC*H5E)~GUn9-NVm+Yv6uI>gnirqhiKK*Xl z=iDrw*ExM!S2{FSBv58H@S)+ExrohG5^9O!cw8N}L^SC7>Jw?yrk&q0Tg}**CL_HM z<8ggD0YpC$W%tA2ePRC(O!nTI=F%?8A9*6CyvWMrrgNEe5zbeuoz10ue_GJ7t0AsR zPUHx)g;2U~GY$W;rh)oDUVQ)3GjWHcXQ$;Ta0hO2#LqboB?7HarDn2~PYA#yXE|po z_ox{d?ToYGf-7bC&v=K}X}Zq7(6m{PMR`B6c1EK}18$K{v^)sVmm^W>NrBRBu^#zx ztjV4*oEV1Ou7UYME{Mx5^BI)Frfa(T!Z|P6>iNTu<}H!ojvm8Rlw!q`YO;oOPbQDO zZNvWMqyX7frD|jCjjytXTA>$BG*~_Tc(czl*FXf23(KN~X zepb*qa+?q_eHOiD9O_)GcUn?D1A`J{bL2`r_V`c#P-dRdFEC-?jVWn^5O!3F^xAJT zs&H%qtf}{8_wU6dkHw9J|DUX2Nr=ITA8s=8-kAx{FLtN@AyXErbMNje8c5&I(jtN- z`s20iF6)*RC3SypwlC|yc7a{@+0|vQBkH{7A?A~IBIyoq%v?M%xJSpr@oU52HYPzY z^X$6$tBiSwHYv&;QSApMI4#4>6iHNjS4-{_9@n@Wqi~E^G7OAm%2M;LD=nSQI!2$a zUB?yJuQJg$%?q5@7qYbMg+SZx8$JHoXCt3JO(D-Qeb3{v$KL;w`wN3Bu z(fJN)W-?cN)(@)Nm4M-gz{xHOj2M&+)zHqHu(zqFez`Q4zaJy;sV(W5KkS-_vNDs4sBx#$=*;KD zPpj<8oQhC2YXV&(F79bT1ZBsWB!y~;pG(CCiz0sC(XRO8ExT@3>>0YOmCM|k@C1X|GA^y+6{d#5t@Ge8)(8yORgmB_~m$>W#z`V zYAGJoM-`!mEZ7$H{+k#F z`gf!SASX~w|4VIfw0CEwxIWOv&_U=lRv4RotVd& zA#Yp9Fs!OlMN6I1_{Mw@`^Q|BkkH@8Lxn2Z_Nc3>Sjifqb}_GiIvyD-{eMB>K#IsX zlE~d?z?fimk=M6^S(+bSnvS!%HD3(p^%CpyFP!%PP8(KH2UTy37&(5zJR1hwF%ap2 zqQq6}`r|490006BPyhf0#Q~lQHL?<00i~-)0@+jGtpAOeHw6uCYCd204uVK4rqJ|U znQ5z*asqGVW+R20tO~D6Q>v@~8LWo;-X@jpl**yD<1+WAwCw8uD+!>rq^(%JN;L^( z!`rZahA3H&U(=d;c6ixm&pOp92)d095N>@A4$Nm#dw!|mgjd)?f#l8S{%|tfs9WhH zM=By3|EIv@5_uE2&0Skf#{*R}L^K1xCx3kJw5}s9GB-^|gcJKxEHn&P;-g%e;%Kd3 z#3%7GmkTTAsX&*upbudwAsxq(am#hbFla?i`d}KnRude2kJFn>odZW#2h~W}N*%YL zeEpdDan0KR!VrS~qdo40On5udmq%+Y5?Mr8Bvmz9VvzhHhSQP~rmn-j!f|5C>IDP31NQGPjUY1e zFYh|^%E!V#Wm;A)`bgvrT+D9s^0t+xoxm|eL@BE_I zlJE7w{Jio_Z4k1~cN;G-y{nVb!5uxsm^kx@q7RMH{_<8bER1|N`6^%4XTY)Iwbhck zhinnG7k{LIC5STkPat31MtbQf5Sg56;SPd5mGQF=Ui?cF#yxhNIxdw+nN$S+JK^So z0%EZ;ln3fw6uiZ@D9p7neu0m=!GKGuR*lm`erKXkH&erlYP<9U8lAmuZ_Gk6Oxeo) zRV_!zaTnF7J|N(EkLkZaD`TBlQX6_pJ{pBlPl?JowW0`uHj@>KB%b06V?;Bk99i|{ zCOqhvn7-aBFVTQ}xS zoCt5u=Ad6-V+`^AaGS614C;KcEy1X=;87GxzS#gH#@y4@sx$Vw(TS1P_K(9jG&c^e7G~`l=+2s1U@WF<{^3f!OO( z8vVrly&pOovW()9C}4>RP6VurKsyTg+s627pIco1MTBzE%NTi(i*NhLvNbaMv4SGB z^$oGpIJ!2O)2Q|ibkukHZy4l24N0m76eMBMeZr>OI)CuBf>7MC>Ek-73+$#=yWAVT zDx(x^dy^u3v;CZ*TS&yi_W^iQ!*xif1G@sh&2q9K&@??R)gg9UF)=E%mV=B|fkuA3 zcRP$?`E#F@EUELk-O9WbJ5_PXHt=sUcHD++N8{KCX#}ejQ zJzZAfgNpp}PP>jOG3=J&rEKs5l?ROqn7_iEYh=x;mR)Ziu{rfx>{buO>hcE;Ntp=8 z5J`mv^n;VS%RvIF7Wco0(#gV1On`8EpFGji)6NTZEpYzGVMfuj_32zgpK=3NeT?VK zbjk9y>X4FlkLrx1^lxu${5xgdure4Mw!N+i)q&@aM043yN4Q*tsZgIetm;5XqaVD= ztJJ&SAntn6m_5t(DQ676auQDPbpPFFL?uDYSc}IT(yq1S{ce_H1Ab=dW#d)jbK+PC z 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 z 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

!d*TFHsRUkwWVb`>eFJS=bJ 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 Qw*bf_T_ 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 z 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

X-^8`&B?|CZR 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%0A}w0=O5E9X}WJx>7%vHq74@cPdu+GMtl*T z7{i#AcqQ`&{Snqg2Zq4BRRd0ejC;`U|vO z@wiI{9vY}NvMo5sj(S#gq|4s%;_A~ov?~@xdwAYUw-rY^r0&A-i)s5ZVBEa9~*k zR(&6b3ftxyB1`jeU&?uYf0e~9L<%8r#b1Lvh8i0x zbSy?;q#WG(UaISpRnQOL=3Us$4CqWKlzLud0EXE|suVwAX6_5X5ug;v%alkc9|t_` z&a-ERzOe}<^4TEI+m^Hpi;b~HP+q?b?}LOC2nvJAZA#9~MvG{-x)}P&U>}LpqPf6B zaVHH;Z;CXCa85Yk9?~0$OQyI~*21dVeTMG`eqdJ$S5}_Ohh=joJnX&!ubLYNkO~kU zfG)qLOr2XYwHAQ;WQfW2@%EWt1y&X3`&U}t(c;Rwry80w-g?hpGk&3+5VVE%HhVNR zhhOU@lUs`uy6Z?5vln(PSf;NUELv_K%5A}R%O5Xhzk9&U_I7lt-A^LH=qO#`F(ph) z^{dkN zPwATb)+<4{U#|7Hanzz^1%XeRf)t>A@n?P%gAZJ-45=MRUGloayMh|l{v$$;7v*Dx z88yEe>Q221HMDfASS46PiR19kZ^*rUNpgR@Btm8(f2A4MT55W^cFm_egSfA~#z6-y zkxUR1<^d?$s%|-CR0c+lgl6Q%bv$`1d+RkF#Ou`W?ahe+rqx^-fvSehvZw@yj$~?o zw=xuF_!$MgYAz0FE{tsB%y-wa6MVuMAEizrfFNPhb8?@K<3sGsr5^!S0G$_U2D&?LgvbZ5~pgNIFaDH-MOKw;x)B z^M%-#wa1fzA?P@%+ujfpGe}XckJ`-pz=DjAZftY#nnjxP%Ox>XMoIaY?)kI^G z8u}kDn$&#^KeT{*Z3*D0;t(X3Xq>LOads9`&}xlVx0qi)dcnzY)&kDsq8n`}JUK8^Md{=!bfk;G2E$qgIkpck&iR(01 zjUPcwhGv-$nBq6N_VIt@Q={3S=OiErr8#`?Y2J)E)~@1ak$+C9c6(v}C7YqBX<_1Jx}I5vJpBb|oEkun8ij}sd3~fvpzOqDESB9SoZuf#tZd&47japv6Ng+a7rPji3+X zazqN4t$)EN)w$UBsu5}!Q9Pqqxq0!Q>Y!(IyKNx4L5S5KC@@%Dbc390s7;CEVA(cK7b32#mF$Y!b+-39s{&Y|s zDEYHLz~vX*Re2zX0F_`DlraT8$^zl}gobK$V@KNP#R}I6`!fVKWAAPpq*{^}(Gqx8 zg*i--(dONf?Ej7`W!cNF4f?AazFl(y?7Zm^-tDvwkB3Qb%^bt4RY3O~BgdEJ62THd z;t}P*Z~dGCSdyvRp5*sZl!HcylO@{MSIs~g0NpS9)Spy5ohXqLfn1aAftO-g$IjFV z$9k1FluXOwVwWb47Q*4cGoZkr9hRY=>AW(0h1|t*15%I;%;xka8c@1X0LTVi? z9u605+=0$)Bwzdr=!KKh6^o<#gldd$6fbef7xWpPRefvrhO2w<>)mSE;J$rHoVrmJ z)+^$l5({S|Q=O#Tf{nYEPYzW@zpiq6BzIxa-LKkp8nXS>e+|oVY~q~&V1ZZhz>ZDB zCe>3arLqo^g~2+f;I}+;Mkm0THd>dwtW85nPK4MA^nT=z3S-Y1;xJB$C`XTL>8qRUm(uB&H4Q-Gr%z)jemUic#6G zt;B{y0^Z(X3e&c3sa&C{@_`=4&b(Z~D&ysfR=GI-3XaqOfNoOPlf?Lo8qVDa?*Dl{ z0fx+^0e;)=rre%xk(xRSPmzcdUquL1M@X0!^TrtVp;~evAb6Zo8EE-_3(44Z;(NOM z1eJUVJ?mMQcoS4 zY2);#B*+mN=}R{?SrWJuN_MK3JwP3%zV0Nb1yug1Vm}?qX_=Y;2cnx9rd@G%obEB= z(}mGZGHEK=zShXQoIQnG{5qjXI zH;zOodsDzIr#V|AfP@5vm_F6q@x8Nk_**XU5QPoz}^* zG)f}aQWXWS6|07E)ND&R(IVwng`(Mq1aJQkz7q9ru)3dRD-1;u>(brB+lDIo1s**y zI=_mW)+@tb)BP%E_!VUQin?${M?9oXuUgLXxB9{z>S6)ti0C7a@&EmJ27mxr-&KBX z;|Bo~^rv}1UpG9wywlD)a(uaY+ua<(z*R6zUtCE1s0M{}+5SAw;v5OoCKagK0cBX$ zJJ8#R|ELhcS_^JswK?3oPD&4n23^8uLjp$W+m@!(%9Vqk$dSkXgJ2Nw6gv}OtDyAQYs+-AQfp0iL8X3gJ$1-j``B;ygAQxke>RZ>qauKBLX3K|(7%|HeB z1vMX)D!eVK1WEYHPyl&xoqn7983@Eh{8U1Ryi6n_?7kF}3KrQOe0I?Nc@U84|F&ZZ>L zmyjrxxo?EFo?3X$K|zRP!0Kb=f(e>r!ZBD(b}$Mv&1Sirrn3x&LNV9djT+mU|2{G@ zu9IU!r;e#-EUry(fBUdIML}s z_50i?)kivou}Qz7KkG(s+n3!skovVA=Fr(^sCzOe5f-Xu4t zZD_>pYEt_=z~g`sM9ce(UGazGCd3W=M7VICo+s25pJoQ3#FD-}ugMZI=eshGw#6G? zFI*O1C41;X7kbh~J?MEQfrH>+87Uxzmd6?)>PQshT4wSiA$n_AOALQ+F~}%sG@Hm1 zfmfSCCsWTp8HC_wG=b>_PJ;k`GQaj3@sr|mJNi|oki=aAuL%T;OrDD6Gf!8=@uz$c zXw~CUf-Vo&;QZ=Hf^~HAnWiuMZpP?onLzqJ@v-u{pg;>)kvUt2c5K-BFakSW41NG81&> zQM@o)npAf{`;@hU1b8_)J`-R}ef+F0M-Lztc{I{ivLx!bOm(XG>!ZZDYfiWBxw-%C z5_k}V!{P=vE9x_?c*V{Xoa!jo0HIg68(0qB7PcNtcjf@~rZy&>Gjy7sNBFHX1ItJRiB1i@F9y}9kYuJ69Vu{|$e3>%uGe|~aO`bH#}Qvh5kVxgO(~3=FLO6R^{vK2*1Q>^`}-w5-^Gv_JtOqM?I0$cg#90SnsovSAS3cK#wy zX*>~-+#$3V&~r3oQ6H0!qN;S3;Z}0~MQFyQioy9J_$?QvVZ1{H?!7P)4hha@X9}Lm zC0x}fZM#g^g7unx8kZeij@Wob2Ez8$Ni~kE(SIc&{7N(2IaGEw$rP^*pXIXJBwp$>_-t}~P3on+pC%f9~r=|LhhJ3Yatw+3KVGqFOUQx*c z7(5epSMd*R^Sei10m?X} zDVzl2Jl8S#K3&r`>`ZA7lpn|Bm#M=xT|6G4ke9u!8R1C(3~ssK;E0N6$C0^uLqPG~ zN#v#aEu>{ozweNJ*DuyHTo~$>k`Ag>MN%gB1teAKiOd&1q_ih)InA1;kAS#M1SFvv z^v_Hp&5&QMdnEr|`+22R+5g~*b1)n+g$F-5^Q>Hy1u*Nyp6BR>%}9G4In&n#_zyVY zkWH`Bk(q$vkmPwIbwY4QhoC%&XKo5EvtfMoA=xms-_fzmdZK_qNT|om2NU~_r_-YE zywr5Oo{TBga*w7sb@Y^DrK_@wHsI=Enj1 z_Td&ie0a~#{+P<}mB^Q!J(Dl!xgYquv$o)Rc0%KG$USG}IskY`tO9+h{^i9XTs`ov zdx__8mw_Z~qqMZ&hfAAzMgi<_mpV73stFI|Wk5n0=nM>WgQeRk zhMZdW7BAM;bbTa@+>B;kDk3D4L@MT)LyJW#+XbCDOkT_dq z(at>JBdIrdb4LXK_ha>HS-gp}cA|)tiOohHP<3-!9frhSf3bVYIqU?`JO9@X{ssW` z-|Vx!q6f=qF|%U4(Zl%21A8-{ggW%J1!r$drWndTW=e6C2Q4hDgcO^glI&s{GqYoo z`&$EWSp||fJ2G(1WsM@$?S|0}|0+KYHMNR%)CpR+sZ%-RtTAABwd~tfX){BD{b*wm zq3_bviTQ&kZu5Fmc+US8?Ac>3Uc^bg{Bkz(MUn=3O~3U4KqI^LbAX=Z^|J_6l?;8C z<^4W;(vKY+QRGCW6^=|x_j|vB{?OKu_=4`lc(98obujBwFX3n?9bcA~mVw0EZOHO# z{5yjtxn)+I?zSkJ-9GHEx|-u4M_@}dw#LGO7v*3;v|t%Pt|U>&Bw^!-uf!Bc*)fVQ;R1?%)`!NxNlPVJJE>T2?n z{$1A_7zgz2t+U0GT=0+zOkRcprR274LO*R|U2Q#FXqYOf#1sbpuYYORb8tr-KV}F2 z`GPlUPMKQ&f{7pQ~RvyhN+pWtxwo)pStD3VdfVC2A^)w4V$um6*$| z43A>f{RlUagy))B*4u8FR1!7?2)5h=z3DJWf>?Ya#Bv#IO}DAEK%35yX}-*H0YgFL!0;2eg|uRa$2cdKZlZkgAWET0)o+a!eSC`Tqb_XlBQ083 zBP(R{M=_sv(XagTWKl9}2pUdGgi(!_j;0%P`5=$@Ppf}Bz+m`l^q~J++?oHAq;$Eu z|0nTOfN=X^)xdw?zm4IM_f{HJA^idX8muQzLd~ClfD|G-Lztim1KV*lVP2#)D~b_T z5e2S1&f2xf2Xx34h;|T6H7!q(?RhKolhRNPun@NvUU>L>%<_~AE!jf zqAd=lWJo!Ujin5L%U{w^aP87gsSBpEg9x@7yHg4G198aK7Kim)>Ru@~KRP64YfiCQ zx;BLXp4d6w?KwamE~&W3Z_=9pa@u(805B73>H+;QOhkubc6DFbyZ6p*mx z(@;5j31P$eb1EWU z;vw^9L^8{scdueUCX%Y8s8__HmM7eA6zn1r4m0jwDn_f1UZd~E?nGS@!e6F?E^`8 zrgDh0+&!idwL{i?o8bj5!QsN!Ie$?PgPHeM$Wc0{92(SEu%JQ~n@UqL24utstiTv> z5GuAU3^!$yk4H^{U`gac-DZ+4bULD25uoaeM0dP|h{LMMlsf)Go;E*4`a}{UJ3Rt@ z&jCoO8NZkm_6*db)rgdPQ2NhYw5E8imE1kAC4Po6YKv$~X36FfT==)?OygVna56f& z4V;{jTq+4>kEYugB)L*!9C0C)%AuC-B35^poQL2-Qg-Z9Vju5VscA_~{e+?YfsHQ~ zT)Wg|q$_j|&2uR`psK>8VeDW2C(2YYl~+K_bKSv50j`IF155IirHu(#Ee8F^{*ktQ zE;r?&8J+@u2NR^mY-meM_}c6>bYTj8T_|zg2Uv3OMm=4gdVxM1U?NIpM_Eb91VU#< zwc3Cn8zo7kkC4oHw0Z#k*;HI-Bh~ivJkyJl;noXp*C zaCIW)RbcoHc#<&zuQu;~7dF>km@+s?9cJtbb5kVHaR<49B#s~Q%9i~FsvLcFfxQPkf{&a|FDf()BL@7jartRABLC@wgg~>-$HY@I z$KsuXc+xOI+8y@9!R4LB*2)~~I6H#dVsBSJkUmdE<@&fCv4Tgra-h*10OZCmAe`rT zSL_#uL=%@64yh4jeoLvTXc?ASygUdQ|3a*WEF}sGXr~lPtiF5>75x@x#t*pJ`Tia~ zm)(}vYcNhJFA2idpVVPIx-%13=~v2$a|-p3bn;(EaUIJ7Ok!kB)NxlU{UN)Rx0SIM z3l!`4n_M21yn!|a8ju69I6Z_-i+et;0zb#4gmbXcjZuDA%IfXk3v0|?P)ejuUJa^J>Ue@3|9)< z$V>Y*YU1PCLs+oMGJ|CfSPaODcwxY)e9DL6XSd?M|Fs|CVc>`h*iddgo}tzsAa=I~ z`?J^%il70&g#Oq`Y*sjIcnC*~Z-#VW@+H|^*HX6W0;*Ki7C5AT$!>65i=DOd$D^=4Jp zJ(t^a;yjT=(_`cHgHn+axl$}u=(Mn+sK<}l81#C3%V@tZ%ICJ3Y3&#YkWHWVQ7|*f z*7$VI$0=jq?}E@DHvj_#yJarfyhX5ym-F<-8v?U(ujZ=kG>=g}kPFBBmH^#?O@gz6 zNHP#*5T{Hu>XgMp-n&=aH@SYFqEL{DBX%50`g}6>$sxrrmRX)_r>KR`_XhJyHi>2} zX)ZHaMcP^J8>Mm(3&`9ofeZ_WdEFv`D5$;Iw;Z&e5*&7oDtSfkuP;TJa({@5>o^i|F7 zUqU)#se3PDn?QQAUWh7yIs1dc{ z1un{j#5{FxX~o^ELN$%&b>O8G^Xh@~0vJG7tsPkMlw~w-4dX9EQi`cZmiwG@@Zo&gpw6~YDS~JB@p$MFd5%R* zyxc^yk5TTB541sqkj4rgIQjEFP{Fdd&m~QZfd$bziSL>W=tP73F~+DNn5DE1uFh{t znHwRGjQBIjOE|6Lv}gcmq7AC-P;AVb90v|NS=f&ybaS7oA_Ayq-2ukB_?3)1BGrB+7Of8iQl4pQfB*j^z9O7C;PKRPJh)sY>uVt7w?*s4u#CKZIyD6MC*I}2bc_{?R5$-9!jVJlb7I=sdRD>4#@M?5i zorL6je7JuE(wNo{=%7Wqw-b4-_Q-s{4iRIg_L<42#$FXPw1-g-DP-$6S=mBFJG0$w z=7@tsR&t&wvz%`H=cUNhyDmO2{W@;JLDubL6+E(Bp-BH(KH|$1k``JOE%7HliAU?x z*Y$^Vp>WoPpBbEumwa@#Ww%lb$igu8H;gN$oeK_?>Qauog0Q))@p;-g?7Yzz%# zh+63PX#`uMG7(zTt#*Hac{q6+q}Flx2um?`9Cbx$nQR!vEEN8)(A=fV0#dBH4|P*r zuo27bEL9tVrpUsYAwa81{()(?A z)+dmA44@jjccMnse?Ye|+l9-uJsiVo?<4pC`nEwc#yMUvts=C+XDi1E_D!LbOMmXT zhS#Ky==PqtlaH6oV9Sl(|4DakpjZ0se{#YU- zVsdvk3^OE|TCg}ee>*4$TSirqJhQ#aO=W`dyzg z7P$cxpYmj=nm`f)p~j3khlQB@p>-TvJ4#E&zcrCB9~X9c``jAIuFiFo2JJU-=UH3g zZ)nhRs!Mzh!93`{1vAct@VUm)zat)oz`+GkmZ%Esj6~uG*@v&A`3z+A66TDCmw;p1 ztUH@oZ$e2v(vOY&TLFIbdRoQ@h&CXCzt0Wa2K#5!*+z9|B18C_RFp-cUu?X%`gt4m z?n5Z_5bF$({?8t2G@~aZU@T}wX{U1mfFbU9DtUUCZ00GuvBt$4Fktkd%TKmJ5oqd z`vNm9p)|f7?sCh`G&+noKzM?q5{sgdqW;|s*C)DrfhnFE$!5`1q`-C~b-$77T|6h) zyIe=IHIHzfb<7kkDvf?pm^{V*Ui=^hNa@4T;sXubmd-hrn(F#k@I~m=n;2T4M1g}QmbW^BKK4QlZK2Idrwb0HT}Pt z&tm#)p7~R5J_0I2f*!1={EEc;qr8a~`LZBwYIM;yL-zx`*FV^@DLkbg>af-=$0x> zTx_>;uwkK!r-$B$@J{tTAASEeJ}0OtA^f0T%-^LnX(UH%1LE(L`~J0hO13of+wqj= zFMs}3URPTtGH^kq=q!PPsb9(&GC4uX-Supk^XKzO~SS^eqO07=1 zZJMUGBE1v2qcL8C6Vu|@&#XJJ=@psI)OXq2&0S(-YdkN_J~Ww0m@O;TyqK9)LzJ4AJ~K2} z1Q(idOH$oCaI63J!UzBUS2L2Q%0-#F%`}s^5L&-voS%T-NDAE+eG5~Ra2u_RAWYE| zgVt3Nd`gmX8N5}5Z8p>&?jVN2o*+oM@U8Y20Dlb>7#xufG^*#H7|n%fyWui<7mmWh zQ}c2q#jyWDBRGCA2jyDR&!lo5NTMExLeWm6pyIQ-9Xay zqk7{EYLY7CT{cku6JSVyhgzjY!^D@)AW_}QSD2b+A4TdpaQ+y0Ye2fq*>w^Q4iheA za_S5*K3x1dZGymDR&b;3rZ5kDIBNdyJ-QZk)M*pgZR4IDhv=u~VJ_Qj3wf05g-lHdK zntlY99$fG21{iHm-3lb94qK2=${qyytW*dt$YjCPO+cONPh_%I=nf13c88Z*GVymX_zZ%{nPN3B0Xg7N9}Hul$VhBRDn-9S z!6}h9SszaBrdPCIYRSab2lxR3akf>X|1*Nd!R}i_db3XEsm1BJpTwKoSwm+%``OE!h?=fu$in^*%VY#u@?cLRFK)=6 z_q)3sm>R4wDgRQ~1O5%z3sQaUTK?tby@RuY7~9pNi1N$oOgS(5T2BTWP9q$-E^^pQ zP9)04`72IG41E+uj3hbLvmpy$M#_B&@Ua5f;6n2)-q!G_YxIBWXW&*W#&wtP$Ucw7 z5S}$Uz+o$b=%glSRMpMm>zM#IE5|0bI9ZI5{gVomzenP(o>#j-V=GNK5?QMkiATjW zq$^;wrZtU>TOkF`+Tm^sTq*B_Q)jigYpiA}5E?%q`QD%ws&qWAHyJpte_?Z-=mQ^s zwc8iOcHj)lhe}D;YnmQAdPeS0=pltRhM8Lc3>00-ovu;bORyf>KvI_va_jt8SqbDL z&~`cA3lsS7Ez{LQxcAvW5u#GF{*iocxv3bkaDZ#m2w$xd7mJ{^j5hfDu{QKA8==>Nahha_Y^|aMMDp9Qg8%@BiZD*RU)F8GohXr~syD?O2bm6u6hL z7uE2DUwpm<{GcO-qG1?i<2XlTCqG}}FLt&bCdzcP0t7#44v>W6sx!CBP4PquH>|2q z@l;27+3AMfkwFAQ)e7t)RBIwXtvJCyF>U8I1O1Fw=%wGCdfo$a?P~j##P7>(u7g(5 zoAHxofS|C_-s!<_gANU#@t^%4cd3_HtRo?V39R#=01h)Qku|B0nk{foZ)_ioT8$!cZWxk6mu)dMai<5a?zk`L5f{yv^?OV&R0F%_zKOV zPAQTwz|4!6Aan^cPo(%nlafDn3ik8f6qn}5XlUVZJdQN~glWFV(2r}9w8Oef7Ft1; zlT7%-%2d^ll*?R<7w8AZrt(?Rdf%bCb<%Iq3ISpj6mC^@U;qFB0tqkx005gongS8A zcK-toK~=)x;V}PmAM@tLgtJ7v{|cTBkC8@w)VB{0fT%+EkG@2J7z$C`OuIoF1&Szk zqBBhv_YsWHCgaJJT~!TwoqDVBUx1B6eQv~?dcTQ^xW}xQ=$DU=6;sdI2T|A7O(&S00Ie6 z0000G0iFZ}(IvkC00RI30{}Q6000022~Yq401yG51PRe4zW@LO00093I3NH300Ie6 z0000G0iFa6(IvkC00RI30{}Q6Au3d@u9m}sGDu)*xT`(objgis@}!k@MJQZ^NE}Ht zh>M4j#O+D9K1ZVDiC3L&yp%i%D-jec;%KFU?bFjZpL0F-x1i$1qJzlF99&c4{_g9wU47+euJr7BA^kwFWx^wg-e zu<)ZqlfTk?(PdPc&dwDxS3I8C^57^MQAVrzZ~BY z6s;{pt*baDsv=^d!5Vh@fR@3u^_rT)9lKTVVc%LPAn&a3M)YFZ z`kLUPc6y|QOJI4NC5d|pOaO)${1!U1L{m9Ib$}Ee2eE0XZTRYXm1SJU;u)TK^xg0@ zGErfLqM0Ezpb*Mth=`k3pvo*deATsL|@yt%0#nia{nZw4bVK9A!kqLNgURTkz zgXl4RlZ6zC8(oQrZYlu$7RX%gftKEdTEOMrj+=gJY+zj(x>g2tV)0vo*s9c(6H~%p z^?z`B{&3jcQn3=e=GQ~0YYE7C;a7{h|Ku}#$SIsE(T5>W+hZfBp~~nAwsC2PSY??R zX<5<*D~>p(2sf9F0GohRfJ<`{#ZesEZ3D>KdM#J5w4P6CItlC+oP2)kvLp`|=8nEB zOysag#sN=HQc@KRE41$m?_SJMZ2(eT9tBL`+mz7su>q_ zu|uC1g&xPX`K9^oH;ECFQ86~kB*^zzNdOk`Y{2uprXLPtARy^N2VeZ{oPGb*tv+a- zD&sIxrb{(jSxvrQW(@*z&0f=GtU6#LsJsDB?~nUXr3w-+w}=l;dtKk}sr_e610X1p zCnj!?LthX18haMux-dTNc6a#SjfQwspa(&-tW<2sAdzv(a>+67d+@`y$vl3|eT6_w zrc|DM6aWyAL{cnOf(nW+6CtFGRq|`)C}osxy6NE{Ehc-x*l7cv=d5m@jJJy_xi~5j zyG+fSY>~!lTnCeW0>mx~1vq?S!rn{32!KIc>(%LLJ(+3uJJ@P z;F4DEQngH6hDZl-A&8y^fdlM6x=B??=9WZ{Bpy6MN~d#@gxJcrQ-(Lz%P(){!jFoeF@bLg> zPW+7`bm~a_Vx48gU@tm?895vP6J@WsWoI*R?oj;W+snpBSKgB%LUIdmdM3{mF=et) zk@7W>V#lq`?W9!@fdQ0AkR6dgP(Y2;7U$+(+tB+)wuVU#{4V~^OzNoCEpyl3n$TCf zoKT$sKu(S|OWrE_{?#opI-cTnyk8yBtkla-YSe1-2`z1%Wg{KKI^jBEF_f_ZG!{EX zCp-v(m71vS6A-{+mYS1OB~XHb3~=bpfG~>joc-Sz0+7xh7_!$Pk^$UH&3+w!AsSTO z+=B#VkU$`7No99KC3$h&ySC)1d6u}&ph_K4q=2jwwOoxBkdtJLB#;pZgK9?Vx&EtNz`NX>^w8V+4!5m-R%rma2+z6gp!VqlUq z9SWZ`Wq$2FP~{?{l_5{5%dVtnKV>5zhBi}kX0|oM%VHI!T{adMtrk7deH5n!1h~ZE zZ_6J3Zc>V{zOh|%_3^H6n&D)SM)vPW&OMaFdk zP~fi3&H31HfGS5J8dSB;639XbKygcq8`h>=yjrX_C<7*DaT;&nPmZsfL8}{{Q~Q4hW!omF9pi*aFrGn9B-ju#Hkd8n zP=X!yMO=*-HrGWpAPuez6(BV`$rjD3B~yzlOMsfv^ze@H(LN6x+H~%z@;1GPAm{`-`roq;kNh;1RM7jJq$R*l0{z#*kqh19EAu1HbmZJz`Apv?^g>55&brw{L-c^RqC4N~b7+FHC z1_F3iR%;?;-KR*{@=~bI6ICq_kdg8>`##rlWHqM3&2H0Pk`*h*MUd2>)oDV`ar|E= zJG8S;q)L9MoY5$}YBxo!(1ibwHO_G>cG*6BOe~B`)TfGCM?CN_ltTQ7ca6rsBBIw9Ba`m?vAs z6d5SK>zYa3=4&onkAJs>)CArQ)x*tpwDhn`e@kg^E@k?{>og$adF{(Y)orDlyY)Hu zNlcE^eIt*DUzR^UOgxV7GpI_QW+m)qP{X}EB-phRK(%eV5$lrTgw0_!+TS_~6cWmS zsHQ;ZOmGu8w;pMmyekaY*j^V0koO@>ZAo29D*1$jO~}MV+lsLI8zwfj*uL;(@U35N z%zP>aiufQI3Pk6`KgdEnG6)wa;qEoAGEJ4TAKrc2S~ zdUqF`ZcZ$xR%oJ3=Z5n=`D@|b*A|Lq+l`Lz>nBKQ2?ee@rU8RV?_uEG?(UWqew0#>ZNhbjFF?NSK%pA4F62(!|DAN=yOssn{t7 zDeCY`j7ejPlS51MinRG!v@!y4EHEfmG#^rk;ddt zRJ-XcnWqj`7G}BS3Q?%Mw35oFdbOZwi2`f;uwJ7*8nnIP*Z#km#vB7xT%2*L&ZGdXcx3_j#Wc2xc{I$c zmcj&`3=JB5=@P)PEx=xyIE{r&6du(vYGlmOyXBw1se9w*ONmp%ATr;nwM$S`TmoW#`s?1Z9W8}`ob zesusE0tpkk+wV~+gW~`LrlYkkAsSTGwu=Q}&|vIf3Il|7$WqId5hyC4xm55E;1aU} zL>CEO(8;i?ej-3HGqkdG@^WM%1GGhnCIb>tFi?|B-C_7^bQ7ctLUA`3gV0E4z)nuK z8z0D*iOCqIP}uz=n@pK>qCYuyhQ*1ekgBNG_`g8Fm(t;b2!>KtP@3r+x^QHnRp{4v zcl=c>#ozTuQ9!oO&eEYx5`_miav%nn(Sft>roy!XgRJ4xVLAoQT~I3~Ppt9t(iMLd zg$>6;?PAyOX=KoS8ms6jGB)=Wb1rc=>v;jB(byVQ5oQCk$D3A#R4F2jsh25)I)E2` zo+>oT5=Aii1*kz&gfW2wK;x|RK`NY|&6RVur_r*1HoC)Q?{N+}+hWdqC!li1`ttGq z_*&i?`A@%0Bc4r)xjLBuusTDCIw~yyvep12bHJ7MX&}i4<`I-<)Zy`j7b>0s`~pE8 z7~|;b6VxFZRK>cG#DX!Ph7bZ5NRqQ!R^_T)RZGk8xm18ZAaawyN-dH+lUz=bPWiE#GeyJPrImnRUP~oCQFPdZqsU~A~ z{hkev9Vua8DK%Oq|AVgjkH2C(AT*Xu4!@62qkGct`~R49yjC-hJn%Gvgcxf=Ks6q+ zF4}QwtYOzw#{py{0ILX4)H3m>5A!#i{w6|lI9=;mR<%1cP)BXOy!}@ktCV}f!o&0v zva3!rCx}H&V+^wcW4{GG6yy@7nR|Wx!{f7H4s*~q2__a{-JZ?&)59UEtgW&2$kpR) z*Hd)$DWtC@vNiJn%@b6D+Gr+8s>d|8e%bK9N%ZKV$;NS}IAmVb5Cp7XLTIYuWF)yo zuyX;1$+u#xOLA*8C4lN7fQDsd-hJ_58!uiG6s@nz|Hbq;fkb5wlna$e1M&wW)}F5+ z8dTlUjRa(nfnn2bmA<<;8%wBR7+c7BWO7!_sN!572Wb?J1mv~QNu>l{mwdYhe;sN9 zGEGDV(JbcD8R@0}vKVx}w&{+1rzxn;Zlshx-LL*99|N%RqKSnBLK^5j?e~&J6yM{P z%?2-(xx2rxdTads<9&QQ+tAk97tXDIo@Mj0biHGcXu;Mb+O}=mwryLdZQHhO+qP}n zr)?XjyQlBO#EU!ez4^QI*Uq(e)vm}@nY}ZWrR4$!3nW!ISB)cOZM8iOq~PAsS3op| zt-lX>7nMb{EmF`*Cr6{FAtBFHFeE6(UzAU7N8(c-Y!E|+G{WSD%*FEDq!EKDR1Rhm z0_{KoeUS9SzUOil#@ec^VcwSEOW=CNu+5lY%TO5U?dD8K?wx< zWeT-M42N=4C#-zY20M5jIm)woZcNWyrYBeh9GN*oj1~Hm_>9P#s~r4lFZ}_OA%%~z zqCDVfVkK$_kAGP#nS~V!CKMq6l387;Ohi98uka8!wqpd2l?1q_gd?YB5g+T8$O8zM zW}lz<)J{np3~k%fK%MFlsl!f$NEF>b#s}IakMUG>h3uoM9Rx~k+sl*I)!T}^dWqD_KBl23@NEE6Ed z#aMjeWnu|0Vs(eONY;Guf>3wNxl%bZ*!bEvKi{t7G~Sx+tI5N=1*acL!uW&?6_7aR zO{@BbFCp{E3a^^Z8go45dYx$98rkY!K$PJ#dLn=T(J{l3>$4*fn(khU}17fuu!GaKiucd1=+t5ehR>mi2+9P;sP!g+(Sy@SjpkCpsG#HH~feY@33Eu zjQIL?nBNASesm1LAfA5VE+kw2qmbEyMYQ>5+JV87_!MZ52pmW8@c0H(dcWNEOkzzS z_{$;~^k$40s}@f%DKG9S@dG$QQx_-0B+$X`+RiXyc{1tdWlAPN_IvQOL;90wMZ&bf zZkpaSZe?OM%N|0O2QA|20_pT;K~$C&?^Pof5mE(e@PWmd1m=%ILQC`brVop=imgy}*Sg0;zXDpcL_^_dKbkuO3h)Q%m zOW=#nPTq&mgS0qr*;XUa!HI#PaZk}C(8W7Te2C1aR08oYo1?$}d0N}jmAhN)q|#`r zG1Ny{a_(^)#93al4>6N$67?)8!*z>s=Vdu$Q74IAUW|W$W?W2dFK0|g=nP`$_}wb=A~p`{na%GrvA^W

jv&rGzSMz-49($rU>@a_C097x;mz->+@#y>2A$-hxoLErE|X<%${w<9Ng8Uz}k_EiVhU zyg4(ZQ$zrSeap>XC!_PusnleT1Ptt>s`)mwJ5R5ZDnw6Lr zawIdzjOq-t>qg^HvYg+vG&*GxI0<|-ulXTMum3dVPKaPY!+aZ25iExh8yldLS zsq4BfefE=&9P}ywUch)(RHu=AlY{2p-i#S(xw9;j&V5D?AuO&@3D_bZdq;zKuZCgP(9)!?u`5X$bReqviWDC*;gue~N%C6z~xMVEy>!;vI-1ez_dk z2op6BL@*^lpBvzw>}^SRs5z@ZF;s)oCCqFUrks?tF-1;B;>Cv6+}>9a2g)s2Lt)f- zqkeY{DXwAW7>oZCz%id^TNH&~*hKvb0I9IIyD% zU}L7s+KI+%mNBLFV-XrK4QlmF7T1V*YAkbo&_F|o2Df6G!$le|C(UGON11wmZEf@3 z+jOygzwQ*)R9P1%9*Fj3SJ1>?q+>{kx}&5K4qagDek6hnWA9apG5u<)3PeeDwDi zw(Ah&Bb$#=ALO$vT&?FnRE|b~<*)0@s1Sg_6)@9fvLlYg)^wo?w9n4-gHj5S`wt^+ z+G`PU($GHWSTHq7Qt@2aAWvszRo)34)A^)`UFB{znU0m-!*THTJ7C!WUOKY%1Yw{-bNRsIiD+2|*MKw~7b zF`I6(^ps&utvj6RgG9B)4ylKEVMpgOCCplnw275?ilm}Ru~8fXz{9SOL?#Tr7V?>O zc}7K&0#aGz6%Dzs)RL-E7u{LQ3#fLEc|0{DiN9@1xM(R+SI^D0U$hjU9{~l_M+V$l z6@?bF`>1R^k=sV*Ax>c_HdgyccA9IbADWK28GZo7x6EYqxC^oufr9J*6L!7@GeHPt z(CvWqbJPHLdb~IwHg72cSeJB%L#$BH)#QFAsKB0H`6UOBarnNRRWdJWtk(;4$LEr_ zHOmBs*ws^F&(&C?SA_P3-VVUlc#k31{~lpbSp2}o z3iORn<)p)-aG%_v#LAA15w{a4ybsRpnC+kcy{W2H%jm2iH?cC+k;T}y zlH;C+NS9~SqOn>14o9DFJ*L;}e$FJ7;$?~oZu6)j-$@8xNA^Vm$v)f3AcBcCueN^& z$5leC1zOHSUAo3UXXu%>1lqdd5fyEI1ywsNSt!MGM7Z> zq1wFrwa;B=WTHa$H8i-T`*M1|hqe2^QzhK7(;CjU_Z=_WyLItyZ8qz^%98dzmT+4N zY_oQvLKz9{_gSU{x{oppRoZ4p8O*6qZJ9)vJk{W~P&DKgxtmp%B4l@Rsn)#@Hp|I9UL~yu|6c|M9 zaSc~(=>ic)Npqru5T6k{64i}@&!_U=uR@|XA`2@I@Cuaw2=*Tkk%!&yF96)@QQ1u%F{N^L$WM`-xysjQr5;;Baj4jYYC9<*92thQl^(Zh>-ESr*GF%>$?~VkT6%G` z%{}JO{deUcNdHG3;{VYDAt?W!2<`ts{!=+$!AuB&|D;jchWrr%ZP~41ha^FH7|sMO z<(RQheH;OL@??A>#O~@+I1Jw~li@I;>355s5!u+5$^9_bqu0^<)iB`QQH$N5q9ABh zrmKl8r)u%yAjqL!5RuqdK2+Yw%nJ>n9K4Tg0hn=4G)KMSiu@CqZGnj2$LF6GqaXF{ z1M4&s+rC$_*TQCvjxqL)YiZXnuo-dhicSe6z*(?BApG>L;#tDLsl~`(i!}P&WIRPh z*Us;|g3?q236i9ug18voV|qn+HWWo1)OExFg*}i*5O94zrEiLx@Qk3`+Q)hwY86zZ zuPgBfJzkF~Y`k=l7AuH%-Q0W)+|ctszsH)jmo1NUXm7e9F#QP@dsNz4)Tw;ffbQ#; z-xTkqG$l4aHl6N;Q;iWva9C?;J|8rYqnod-XfRta1`?bzRDuyKLQfA%Jju6e4+Lz4 zLcf67J!3d_QBO?ImVz(;7$aR#h{5H$peIlBKxrFqlicK+X0jKt=b7c4YW#Oqp;-UB zLciO<%3z8?v7ih==3lVmFgi%|EiI_R4xMlZ0EZ1QNTNkzeljr@M@S3ek*=Y*98~+! z*j0)dB;qkm#i}}JFc{P;3#^OG60Q4<=By@-@1oht@Km$9@~`em$+_j@W(sv4)e9i= zJF$gKYq#VFrN*dKAfH>qobKZ_z))jZ(Cv(ihBsn~cO_Fd!GEAn;X^_Qm1(j++sj|Wa&zRV0`DhqS->vHh(yOm7#y=vDk@Kb~{v z#yDNVAgQh5cE0||`!=4+uD5t5T)n?v)UM*K?y!zSo7*)}WnqHAes-RNoI-(JBmP$;CrxQC#9((xL>l{uQn5 z$WPrBXN;~_|2&c+B0@Q2w@k4NF-|K?dyZ+8rVRVw{AQKqKb#0@)*w(}NCpy(L&Hd1 z3|JryU5}9rbs`e_LQe>qNmOD$0TotLmK@fFID=fQ+O1YAck~Zr_jpk`(>v2-QhH;( z@e&{N>0;TBTcJ%#-ByxU4)Z|<;&+oM#W@P1Q18w#<=CbDARC1NP+I1bLtNyn$lCb$ z#Yk*zY>eEZMl*;v%sQuSqL#r8wyo~4_jeFxZ=f?}rNS7!m`VmSd^5PjhvL>~^`PT4 z)B}~#L;<3k0T_MRKodSpQdNJ^jYvkk4>HRKL#(DRwW_e{AS|4!3qR6){3Jg}1%=As zqg|{4KCMdIr&YfQu~cD`qo)EFG3-$wf<>Z`QVaz(%!`SE-4y0|ot}4;;+z@?5izu~ zt~;rT45?xz%b^>B1X%~)YPu>RZE6pg1zIJkPeGM;coHwSRxl!qW51+Q_sU3so0tO= zK@^21dCHpT+!Kt9v|Y*y6w0Th;Hvg^ORWGF_I1|(kR`{6b3Vh~Z7Frw62=N|nwx-J zrMpXMFVb#Pqe&rIKN_X5m%kr|nI|`j3=xq5Lez8ZpXdGsVNg0;$egFeB3m=Qs-!9%Iud>iM#07L$29MX|&ui&0E*Q15w@8OX0LW-mD$YJBUDOjmyg0Eqv2 z;jrZ_O9M#d{M&mw2^ByE8s-cI5D?faCiYcODiMjbRE{)@@jXOJWfV;6I(2x8^jM?v4lH4hia;u4fAM_CARR)hm%ahC1PRZwlyvU59+{KE%? zwJCdV{>GM0%&y6sqKz_P zM2q%NfwzkLx;b*Pc3Ml<_}ysZ&G`JYqhf5{1f{}ZgG4nCLFY0ioDym&24O12V3bu! zqGXFn`FIyVjKU3GNJp*?)gmPzDlgp(Mb;$aL=lq$VfdinO_3#%NqV-8S2*BE=X&?g zbOs*=@;7+Li>tI7@kF`&rSCeS1T=rZoPmrW80n!(MO0G>NLQv>*F!UBWAo#xkSv^c=CJYH zCyUK9op?lWydGo<`ZYP?jIVzqi88Ag0deC61-!;S1ts;4%nRBfSk_W43k-HcqINDu zLYRlea@LPq@Yqvv#iDsd{VJ_25*x_4`O|YJzar6+yVXLvxpa3X)xaPFk31A5(F6uu z_QeXJUb~+TB;0Ha(%e{723<517qLUiJy!zf1kEMOy2Df2*{pR;otkgMdSL`uh4qw>Aq zrA{#_A1QW5Qr^*giQ&FNzg}b9`ND}eE{j0PR zR845)X~(JP=Ij1^mO% zKq`*=keDn*Rg`fxriMs?QGdwg(i$22gUZ{e1vuXHspaL-!tc0D&fSl3xfwxrK;=uO zaCO;*dnq42nZ%cRD)s#|>UF2PJ+t7-c4b+h#lf_G^7sT@K+)@$uOsbK=p;^+mvzNpX|$sPEnLXu)EQN@tteotp< z4jNwEU}oI1jEOy5BsJj*Pivw%iDp8@z`V)o;Rr|vR8SB!AOQNV3r|l6pXPxN=LT$) z{5ynooR~Wv$RtCA1Z=33+TDUKf^3ys0pJQj#71zm9z00{gfrXeyCPmG_?#^m{FU&% z1W8iJx|ztBYGFXfIkDZ?naLO@uS(U|ea1r+49 z4<<8*Cz4qUm#>VGL@8WhNgG9S^J;5L1`1*m6tm@$S}n`mhE5|CQ5xBh$@`77++gH<3I=aUpkpcl zoLxp%On=4vkfE2~@hh>dGQ{vKhYZLz%t!>bLn5S+5n6vl@2gt66ff+-=}~1D4yZUNq$hnimGsbE(jom_COfk2GOk$qIG`~J6U!&_?}Q| zjb+2;$48rN8+Shh_*{%^9)lMH1dOkaE)r2ImraO+M&gI$2GYfN9t8P6AO%{5fplRS zgriTtS1$f6v=?5rIwzEGIkueAbp$W%pJll4J!=oa%E_kJ7T;N2G`E9sWJ-xVlP0c$ zMDDB9%PwNIU1um7RBOnU^fE*!uhgZP`V}az7RcKV=V3&PH8XMHHt?)WBb}3=1U`~b zPbVU87U?Ar`Vfmy@hpoA&70$#h{jKpAat3?O0qAQ72uF9%r|1vSiDP2*rk3&C00$b z2TMv29w9tHc!=kO13LK8DIwS8v3B2?Z#T5q#`5p zYGj0#8)OEyS1F4gJj1H`xh|;LG=YXl42cFUX@!Z1o=CZ!(iNw5V((oYAbA|Q8pRBc zRN_e34A3n^ZUrc= zb@+2;oU2@`UOkvrb~HOiA!3&&rC6uLxvPk7v+6kMxIrg3#Ivk0T4_t*NFFNTB;`>+ z14VO2W@==`EP#tkUu)?kO&7vs*cZq znF5k&Yuu2u1p77u27NX?P}oo~P=FQiMW87rrQ-FZ;@yBUs8RKuBQ+DJ7%6-wrJ*t* zQOJ>DOF%z>vaBB7Z%z)%n)oE56SLYDPt z7Pj`>=R!rvzh+Rf!G=o{oKHxM^-ZFF;y0`!hp#fkT8PPXWkJILAgVe$D@sz+;ZJ!2 z2oY15iHQMH9!!pw(qw7Mykjvfkx!jThyI)IW9zc=($iG5mhBKi5DNg&f*Z1#%f-ud z0>7U z5-Z1|7H&C85#CIOI?!kV#t0oO8EL3&#=yG%oGi~~02~Akn=M_bytOKeNgM6g z0riXlQ5|AJgE|uT+3@qcLI0(mQ?2qHEZKy~H$1tNN z9&lXfrCfvlqpxz7C5E#MG;k6vhH?RSrU(fblCd#*=VJ;vK6up59pi^hK#;$BWgsVj0Zwd-WPb&U zf+EIJLL|$rubH@r$wcb36Zw$|2SgyEy%0e+=rGHRtkzD_&E>Tk2Fv@~o1vDe)xo9^ zDdv$_Rtl&7<7uoe_oiFtm%RgswLFa2`R- z5KX)YU3P(7$85cO=&Qf;pXq}%LRUw`eA0<<&CRE&UX(&Lq^9oe1ODnj^y8k%Uck7L z|NIu&CH&&qLOu9Fd?(igKw2Pe6M<(w<%5TKvI%>N?!r1s-xwnh>(UPT)vFgZFNKv+ zf9%aRH~^NG8bQ&4OiS&m*uvvxgc z3p0`PZ`mUq=dB|1pNMk79dtSMfC3v`8A{R5_yQi&gJu^)|f7CMzj zAM)SjEC?{{`Ul(5BIL9Wg2hE_;wRzS(AM|>? zX^&tR>y+I`S^tJU<%PCU4G&K7N~@IKGf$Kn#X#uA1lg(ZTL|uiM|W;A7KC-UR4lvk zZQZ{WtyJE&)V!gH!&G2Gkm-=f6XFhsrb$vpnyfDZy5#I5Is?Ak9}b+3uO{Q4jK#)`%+Y%wt`kH9o z1ImdDCu{BX073H=*RGCLge)ubI?v%_zqA=%7bQL)IgEd>h4)YS z*Cb*tf*PM#$v_f~UkJG)TS0Gh03Ej~U7NJ>j7#cFfj3HyeI?`_77ibXNtE-X2;6tl z>J!wfcGoT;7RpL$98?KId_NY!peQ0!X(9j>8**C^sW^`~W*)Jp1N!(*UiphB3cO~B zz{qz`ebS_!%!E8l>J*l2g()2oK_8H0$b`fK1ihk`@RB%dQ=%z#LD`6<=~5A;Qlr-2 zzz?peh-OsZ>e(qmHaGb?suqIE9`ol__ia8+dlTEZcqeUqoR=I2VD&={aI!7KM4MPP z&QOvPAI#0=0q~gM43gfr9HnLLW?pDE1m~^i;1OfDXvy$PX7@t6A_pb=8l81Z_K?wW zWvvFS8V+OzhDbdFLlv~ha7El?!h;MaK?M+ajN27L!3u7n$mgvV%3(R94=LGVn{)Xy zy^w**7(sW(ETR{iGF0yXsx`+>7yWK(LA%GoyN>dQ9L<%SAV}bTsrta7=~gd{l4djJ zo7mIe15`^UzO*62v;d^6ilVbh3tgsCg}!XlxV!B>u8ku{dGmJhpG{LJ6rGI*INiau z)3qg=5j!d9&8d;e4r~)#PDXK#&OkXKRfhG0i85ctI9P)Tf%}X0*>(F`*qil&cm%)e zn>-V@V=ouoENz#>C!{|Z`y0OMY5X+n&M5+z+KAm_0W1$w0?b%8jjr$vbgLAVaoEKJ zrKZLP!GWxzMO}8xp0Nkz*JG7A?-Ad=A3bg7*q}C8$-KIIwU-i*X_W(mwZm2NVoX|> z%a2CPSn!+QVIWD>_BgqPP3N(zRS93U-eyRQ)gvJMNtMR=`ikuo; z)xLEWJfX~z*k+Vy1fp6|fZH&MkjF_30f-~V+^=Ogd>E;pn;dGTDJ5YIwNkP_Q|hvcAl<>Ehw>{4M2sO4rB}%wvP&J& zjHAl}{BGmg(F0BuxoP=x`lh5WI79Cre|FwQTvdB^(fG4ca{hTqvS&j8NY}+qNe635 zM9}TFnj%EIy~X&a7foypX6Y?sn`5LECDb6Ghid)a35FV=Zk;DInNQQ3eus<$76^1`N$%3&mh9o? zdrP;ezK;G!sHgQ556zxY@?#_^i1-_b_-h5%a&F`WD)IVHkD4Kf5OTFo$o~(!t`2B2F*B8F2b#)s zKCbMe((2xBE&nfiy1#G?OG3gC*%P6YQ^+1b$4Vg<0ZusWE?*H%>RTaelfw zMimCNT02eGT97tsDoF-z?LG*}4b-bMMA>P%law;+pl~KT_}TkYVjKwEpXk(Uk64~Y z>VtJ)ldUK%`k(!7CeM)&3r&i9*2oap83jtjpgNUAq^4ECAVr#+e}&maMc*KKf|?3Q zNT{SdD*l3*InE{sxh-im28I_39&6dO<&-xFN+^o$rhB}o*KRW&wCbqKcjzJH^sl?j zYUreI--F#tuwMQ9#B}A@bOm$N9EWb2dO!gvQ%Ay zuAxCMUHNM1EgEq8WM8|J?Y!Ba+lEzWNSyAjvY6oH&pk%^RG0s1v-94!Zsm5_Mjp;H z78xc!2D7b0H}FzI{qQ_V8MRd1R@IA<)18anZQ~~UF*D(cs95}qOg*rPUokVj&}qu- znpYJJ&nN_BPdPA0lQ}}NZ?_^-11JvStz;{s#>iI9cRybO6z@7x2W6yxTBw2d18meEF%hH4lWWY z*qO5{dk2Kjy6hzq3=X#ZD?^0Ho3=5M=0?CyikzL@8MtcUMM!|BrciohEci}H9V*lM zqQOkkP8nwBB6H~1Tx3(U(HX9${0k%?5yKWj?-8BX0j0HdN!0e;&hSGr7?$IAp{btV z68p{E)$ZRn^jRP-(2Z&ROB)F1?s+P|FfM) zt0gSW;I&r8E!cof`7xqZO1CGA_~Ou$%u(Sn90>>gT^aJ|$sbrm)`TN+9=$#_I2@9+ zYSF#;_S}J|?om0eSD(5PUjy(aO;*1;m)G3P6)~2{{3T41>hE|_-e2=Vj(3YV;Z!Lg zM1>d@4>e`ud&8+$XA`r2jYA>qNh%Ibh<)-^;XMeM3r0gje@>ml6i1nSRco2m?fUfJ zRfQ4#A65N73Nwu4{}Yk@AINVf0Bi|n!f5=b6RgT9fr|N6QNtAkF@J=SSRBmhBfL7| zBty6fn)`mNp~uR?zwJy{XK|lcXlr$?dWmoGLE&^8Oy>x6ht;!&QfOZfeE;oIY7R{9 z?l0)kd6l^4G2V_V-U<1Z0i5PSMlEC92hJt6T1$K#W??sifzK+9_X+YHvSYIUIwQ^h zc;+wUx?q5joz7piH+m3E(do;YIiZ&OvS>GJJ{h6mus;>OoF`5SxM>`+?AIUk(ro)3 zJT$JsVsM8V&0=wo-l8Co6%fh0P;Jzdk-Q{QLUTEe{5NHAs{iBl5q@z@Gg$%rRHXoY zvniTl3=GWQfeYYs0Dvz4;9n5b{2Y>%002Nm%Ou=i0C?-0M7+O*`va21YLSQ8=m@Ns z>WDS{2r#3RISYu)(1x3||DtHhEVHqKJ1N8BkvEK%?wNqX_FU}Ng1V02S>uecA$qql zB%xD4{C>eO7T7f?_e=g$hZTJIuq)Cre9xBm6B8$ND>(i)J_MvuZHtnNjWTNcXvVa` znpf}~%}y;QN1sIM(5)|9CP~8@Ev)u&fbOkxFnkX{=1dn%PpC2poFq}D4>mp9nCW^- zCU)p`5>*=h%sAiQ!bZEt0|cRn0LeT^C>u*h^Y(?f;vTqkPH~Niw8pz z@uNq|zi?h}NiyPGMHuVsapx}~ebePU`4i@bkV{z<$otn)_Kckm6MLVaADBWppDk9CM%fkNc7(+49PKGCW0s@gl{$?FR_Gc6DV0kkz1 zgV{MTnfQ5wTjY@?p6s4i zL!tPGpnK5nHB2=nL)O zn%K3(5F5umUjZjs;LE6JAIri&ZVrXjLI0lXHas<+Tj`<6eFW4~Q!K6-F~Hz(TrfuH z`YM->>X_gPotXe=6m{@c?c4YqoPVW6a?WYzL8KRGR`XTJv_xXvG2@zpj6J-Fo|b(% z-}gvDb19kOe-cjbw896@_bD~(htDo7E5T$QU=XC~)>SYAii`H5sa&)Dn2@=?ABMEL z9x(HK2-6z{jotKFrBS{rMuwLfQb+PHK4Dadhf?9;U;FA#vFg|rVpjCcZVVE z7vZPTUZ|P_0jd_bL6@vmN~QZ)Ag39_HPbY_>o`*uZJ@|G$V2hQHjXGma}*QDmh{c4p_ zcBgsvO@K3mKmBNkmXok4(NhysnW`2z_sNceo2|9oWPfP(>)EPMx}#OEX`$jXcH$&q zzigw89(UnWO6FjPB7dXy{`#UI*80~oLYoE~nSSJrqsL~nR`$_{EEg)`aUO=w_Z=Z6 z({B#>PG{qV4U?u<3>WOXrkj+*ztJ_eIp(_3`s`rd$$4*~IIiRIDD`H%#bd^04Z?|S zIYNw=)6=`EnNn-HdF;m8A|2WtZweu&?ZeR5>}vn$_Q`JJ4p=Tj+F!tvTGxIb~#C-t81>uV_Ex;m1Mh#PQr-sMz%pdwI z?9ajJbfr;pHEDf>&DasU>A1u9mnbuSJ;l2I;)4i1CZp#icFS+c{whtYeMwd z5bl}>!%zy?X1RZkNEZs<*%+GbVK$F?*EjJ}ohIt=M&QG0AV7?CmLK6hh75|K4l#(d zji#?Knzxe1p!U$+WHJpBvd4Nb>w8h3E7*_&Xq{R31%Ga0Ib@T6*HoE)Q`@fPxq^V4 z-E;MHZ;MkV?2>K28FyHF35?xza0dE9QWRjR2g>=M8bDRMNQQ9t%Dvj2T;;K}&Ia|L z!rm^Ps05Bgk0`Sb8jQjbYDN&Y{o_QsGAIq6a8auL`WH}yLV|&x_tW^N=Xb{Q9ip$? zp>jhrcnT?_gxzC#Tdvb=D!Z4fFD$A*Kvh)8u0spA{C4D_`){n>9bmeN(vyX;?fYjIKAVc|yIY0YK_f(zdB0BVV1wgv?OD9qFXWE+Tpmj<}z(b zpMQpd+QjEAtsg20>O$<^C|ozbx&s1Riz70$!H<@Z4_kf;>t5D_t0PDg1+W(cKp}u+ zhDvHIXZ9y zz^dIww_egFFt5tfviLUXyX~0*nTw)bZ}2`8I%NORtR~ZFWG&Xo7!DknIJ8Z&@96_) z1u4zwjE5XPVxgnV`N6&wUrC+JQxOgVT{EaqCH=dUVeX(h|2WZW+@bcVd$iY#=DDrd z#|&cojgtT`*gtQ{5va(UAquy~A%)afe-!~R{j&DwmcRRzX}xrzPvDHvy*Yn7<+j^j z)3^wX?}6of!G5qKqY|@SMZ#-3Px8elX6oX6#&H74drVkww)}E*2;8DAw1yxnng?Dr zxfc%7QI9RG8C7*x3O!gO8`35h1(!P8gmj1$&J2l z!e{aMeDadGk_w@@b1}t*Ba6lLc(mo3Y*HOreUB5<*)VGhCob~tq|O6hlRp|6Z>jw6 zR)(2(QXLsW%=-&CRW51+B69G-R#`&+Bc5j_5`?6;JkhMV-%+!@v8dD!XU72Y)7-lwm{ zvlSBg#cGn#ZBO?AHbd=6We=La*l~T1UVN${^12sB4%`C+c5ht3r>1|q2v6i{F0cIS zog=9XSkr&ftt!dw3l@F`Io071al68+k!=jVwgjrke*4Rq02gm|Y#L6K^4q-K>Aaj~P0wDa=3V*XjU9!7^E zW7k)z17qle)(Yhe8|y1eWQf`b{9F)>WLu|GZQ2xlc$uLsiy7l&T8@$N9jkGBgb za#}amp1h5(jr!g#;*%pN9|CtjamHtsVv66+RTr{!Xj6%ZWVvJmqQfHO-CAqB23He2YZ!xz68lj=oE=!;-~QI%J*$Q}jB1f$88(0X37iyq8h1s+4Mx4A0>0Sae_J)z>!34}8ElSIl9!3I zXZvX?QRuzOrX&p$sTSGHGKHzR6L^~I@`X9aAx!5wibpt(u=tdIw<0_=+OjsK;(J>5 z5Qtqz+ZEj?D6%EJ* z9i7{=O6468$Q^0MLNHt8SRCC~6c~=qOFobTtDyYPUw{i*5$qV>!86U+h%J84l#^H9 zmy#&}3P1PKJECD<&aD-*`xe18tv^}TIkF&u#~s=agMS+(a&PxgWc2JDnDxDssRn{~ z$0*QHDx;j+yw@qi?gzHI)Jh$h8!M1CDVzN(#lXy#U=nbk!TN3O?JWB(Sh+-X(4RMw*2<+q4z2#0HPKuYa83H;&xCp(`E2N$$Ne;n0GMvZ~v zGtvojZozVA*MHgto05q=eVmYhB5(_gB{Ij<}i*IFAEZOLc^4T=1orYVx2e+2Vo^2IbxZiUcS|70=4N2E{!$O-Qrlm1_mcUC(=}F|p zl70YW5yDapV1E1v*Z&KcSUBx+rWL_Mpp0Yr2(CO+X>k3?5uNiIgt^@ zMoA|dO3iM^E~I>bW)Wd5h2mNzYRKE#X)OWB0=)`_>re@Z5YmQZ=>g4w+v;oU)?({UJcS|&Wy?gjr<0)MK2<7mLMyB!%1-aITy zZEy6zpOyMV30_wqks<@RwO@~lL;0mY*l7F>>Vlv@0# z`LIM$rUkEt$JeW1&Ek=Ng^@|N3P16Gc9XeDL~|^gZ%PMn<48u_7+s?IuZF^BV;&Z~ zXJNVl%!rH?hKL~#M-x#dcfAY!QZP>IrbB#*c?cQYu`@hUa&k!qaDSJ)u zA|=(dI{;zU`~V)ciP-!67MhTz<1m*W)5UM@$wCiXxx?1z?%V#6;!H}T9dkwTtmdn# zi^jw{Y%kf;T_}}cYZa`%+M_hK|m=C?;aNkLTJH%2z2>=hryXY_Cn% zPHbGVubs^P!=9;s8@KBb77boN{o<5a(QjU+;naz8{h9m6K^bkj%r_wJAnIIbk32y! zNHG-I*s`AahO|o4CgW7#A%m59XpEyYgNbHv$7M+@dTI-zn`{It)ZI2NKgSRdg5o$pW#Y3B8FN7 z?AMwcp2fS2TZ)S)@C|3 za%;_Lu`5R5Cqn)8{bH2A zud)f7Msp(#11L-P(c?GvhF@ak*`HMenl)ZWUf+jdDJ3@hMv{$Lyfn!rAr|-w?4w{uPdj~syX$1UDW)=rQ@dRGQP;wIeuwf7F5 z&Mqkho#tL-aV#gP#UBr1vQvy#A6+vy9LbyC)OOv_u${vLwv@*V_0XLDt?Ihn2JukD zi9U-`#%4`|j2jhpu}^Q~R{L$o9cCna*9>Qj%vwg+zxM$~(P==5Zbo&kek6afDh+Le zlWswtCSn_ng1bJBli07t0~EBvSm;mbmUSqfBo!lx=K8sx9!Lh7<56%w-a0gJ{T=)x zGi&PQ+F0q^-FB=RY4E?h9UexWA-i)`P~ft(b=be8vpm=9K;RV8i5Ktf&Xej#b;j+~ zHfANBpZNop*h`rMl~u|V`8vZyq+0F@*vsw~qQ{q9)<)$jeQ5(>-!G2e66Ofn{Fs8_ z#!S$CcGf3lHdiBy;0b#4PxwR(V6C&~3gc)c|L{8I&G5nN{%W~$X?rz-Gikge=vtl* z*12VPT`)BeA!Jv*dDfExJ9|J9mD z!3h;Zi;;?(_PJXS+OR}^M%_p@gcPFI-35{}4=Y~O>-KtW!MtJEgLfds(YXS9nAUzJ8O%9eU z%bco+D}A@7YS79>m$c_YKfZuHuQ!4KaE=ZS@nl7 zy4n8)MnJj07kI2^-D?)Oawh#67P7?8$;M^X%j@`*_?pwc$U3RP@oSEO$tZ8oJ4X!> zYqMi}vqR_+*&WDWlyc5JrHlu1Hbbf~miTtkSwL!G8AMz!9p0^hG1V^q-f0_=u)K~2 zbe!XYPymb}Uw!x~46k6+bVu^Q%?HHpM(t}0#0X)9$3cChis{J25?!dYI5jh+MGdno zCu*bl5jgE_$lWc1s8fA<45F2-DR~HKeq=oe4Uvh92>9DrgHiWCc5AM%zeM86`0b1YvG;@z7gYm$rwZeF0`zs_}s3G+jEZiXaBV)I1X6rHaI+XHrVZn;RK?Oe= zLs-@PJx0fW;y7NX`{iHJm$xa6>JOq$J6;{1VpCZFY*}I*=KL71QZoVz|2xKmD2Tq4 zUZuP)0QVZ{PchuZTb=lYCd}?o2X?5(-2nBOm3Mu?gdh!16K1=IUqG7^xwcf-zbfQe|gwl+X|LV=vSRf&(r*5siR%AKr*8+ za@iUoEer{0xlP&=tzPOTZV=Seae|(ql>v2LQdGo}BeK07yEFuni0@%t&f1g)7nfml zrJKgMo*QLKMo&5L8O)KmDJUj4jxI}+7WJ3iV2JyT_pWIir}hgMOwCRxwV)UT5pM^{ zAEEcDL0RjK`dZa38-4nk(A6mmTK^7Qeo&6I_*0WWP^YO3hU&CxZZnqTS_ImZ0{oS+XuKN7LE?F2;pWyz%4w=;p>6HuAQ{YseJ)&>kJmbFXhYDO=v+OoPV zJ7j%~pD>I~$JIQtM`rmAcELL2zvQ>>qP&aU`xk}wvV!`0{SJ|Y*Xl=V$y+&7*fqe0 z2`^*>->_Z&n9xck=zDM2L?SBpd)N*UHPEtRAGaFK796w65=I&D!$3jFMUK@l)eHbm zPOOOiVroDGG}Y?QdkJm|_|Bv8^}Va1O=T@xj9$@)s-P7@#%`(-byM4c$33sIeUe(D zjb8b%lka@IIL>I&hK<~K!-MDou`FQ+Hou!r2e?w1O!{kx?G5zV-PO~r5B@=N>kmJUBVId+>K*W00>uU0Z! zUXD>SAGKjDDRiWTDdh4SgowGjx;cd3fuc-gQl#^AWj2b*z6C&vuRm{<8Kw`gSMv~n zEj$~hugz%&g&Q~l-*K+*#c-;3pq3xK&XDJz1_iuk{sfhOX&)+QDJuH}{-QRu%?MA_ zL-9Q*?^C8I;|@ts2)hxMxmrC~Ec}*h1BDAD;8@N$*=Q^=JKIa0LV`4qX!W|S?r~>) zUj`pOA#nR?E7Q)QU30sPIpxG9jN})S88-qYIITv(`G0+69;qn-(Nf;+x%pr4N(YN@ zpoirI_6aj|tczcC<#=4KcJQb3D1ER)h9f%HDzmkYYYPF{j-mlB$ktL;(nn1?MK77% z!)~Vb*w!v#Eg1yW-}GnJ+bft*>ZQWJf0AuH1lc!#D>MPP#~w2qEdSv=;+RA;=V+t8 zxeW1KRmOynTnc5e-AcnlHU|MATmcKU zI2oq=CZ!++?beJN2wbR)TYr>8g#1N^07=M-*ldkCEJo-v?M1)EAZ1hazozNWm|(ld zQ(6hA1LIGfz_x}-#!HGPpFUFc8tR0tTAVIvyOF__A5XbzkWPlU$bvTE|uV=`=iMO$_q^PNWU`O z7Hb));1V&{b5M{wQ-Kw3Y%2Z)nzT&fuysJck3`#l7-6O~Q6Ne<15^pO>GzsU0RZ2O zzg)ioW)Sq2nF;HdLztsGIsv-wtbmZuQ%f-9blC zT~8!d9T_w}7nNrRStAZz%AnfCWA?0VoCR@v7u52Y8iOEe=HsFZ` z`r!3?DEJn-jijqf?40BKTDn_ACIw45)^YS>l}(nHo|oVUY3OMBJY5`!yDUEagJZl> z%4KtJ8RL1Io`l$1J9`om&0_P0;l8CL6TD z0VmyCVPg*3waU{6uvUoz#zvC3k@KeLpn_ddt8VuDWfu|eB@&9B$ce^K$h$c5u?huk8{i-A-`o)+4;N^A z)uGCG@kBP=qxOd2>+YK6Ao5E2E`SgWL!_dt+#rY33B2(smD~S=v4-v}8y z#BpFo0UKSedtvXXU|ALAZ!;AGXKwXP28I1;Zv5S|dJz|;-~px$FJoR`z_Y$r_Z7c% zi3)Y6YmOBM<*9QZ`NJ7!-?juuw&QImm(5we*P)4npvIY$o*|-OHekwsvkS5t{V1Gv zN!A`=000~cHeCMTnq|b{nS^yUFNGclK+)4fkuxAKA=_zb(4qqssjv4j7cSMl6fgfE z?UuyIC3$%CDnR0Y&!siVo>e!(hxfF3J?S_pP0%Fc%Vs4}M);rvVS^UKS7ZyW?R|q%UXntEqtHMujn}Vmazn{=MQVzqIuyL8hB7y*B1{w$28rbo+d~CuE~OAkB|!H;3$$}y#kZ?Z|AyS(sQ>wwiAjVqS1-zyROs=Ky4}}!m$=Ip zUL=?pF3<|NB;|^Ox^n4|&H=YrOD1Z+x0zHj;;D>OEUcQw}+JX?TMeXiW+gu!|vnpbI(uy|IjUjfg&E1DH^rLkE9DD4PX9|)|hut zT3w^7WH6p;FmU&LH>U-_aKlH}jqH{v0qyxJt~#b$v`#*p{)H2zil-Kd&oPBfTTRO) z$V=T>Mks&&F~ow6bFvhe<(@nmQEgeVf|YYTez88=3mIA+6DqsBRdM#*uq~}mzyrux z+z}nZ{GzoDPyS)*(m+nko-XzRJk6BP`5H*iIt#s=x(1TaDoigp$_t(WE+}f! z8R6cE@+v|wtSf445y2!-6kQz_&*+b`Ars#=0g~+|4p?ZCo>&>zbCO~<>@rM+z-XR+$k^IyWhg0 z66-qX8#P9l&Wtilq1SsccD5a?#wDhO`B>n}DtW-lDLeus%#CsfSCT5W7@y`h4|Vk@ zH6fnc{a#rP%x@O&O7 zbr{@oXo`k)tuTiuGbk)*z{>-g9Y?`HtZNwE&wJwY&SXqBv8X7S!6rK&`M_QPeQ(VP z&)dOcR1gB=b;N+15KCTf|1*fCECv>_tTWu>KQzGW)K@gTkj~pOgpBjC;U81HEm2$> z4IhX05NO6>&+MvEmF}v;!c0SWc%<7vZC{_&UNhlWQaTuMLA1S%Y4*swHL>S(q{-j3 z9{T|+xIQ<;R6S*-8wt3JUy>eB7^gu;@Zx-@Ep>YF-1k7Y0D}Q?ToRZQ)K_+=_jz&_ z)v+NIxR89zq+fn+PRCINn_;8Em?I}&XnxeTz93|=;AMIcETezW3OgOOz~szZhOGp&bY&rp(($m6`>Z`&&&7*Wt9mVVmiohsh0@=b+5E_QF9?U>)k*ry5s=;J}rJcr(9& zOP-K3$S<`+TS}S98|EXAARv%bCwKaBW4dv2u11s(8)4BWxeIDwVPIDOR0_)>`D_2EKK7+|U$DbpvpR^W&mkwr_t%A>KM@H*s zhZXFl>VI=ho+?y;-X{*^qx3)wiF5`c6M&!xeOT^n)WDcwoW6;6RDXbRQ|TZL7Pytq z&pJ`{ZYbIB#7EsmUQ)bNmf%AE1?k)rXFg`Jn(@NI_C!-v-B zhOwzvjV+=9*TdAQhQ}rZ$1i8?u@dlLgvy6|SbPB$z21DO6W!e+ey{7*iMu2b7x%9G z`);6qe&V*fk?6+j<%=3jqkKwy?`)GZWh1`iT2YdDl$u#4X8`y?gb7{eMZia7^qeCI zmx2=I6;q|RDTQDsZxpx?xJa)mK9|5GnrF@;$P@Fz}L-`3%TKE zzH5>4(@Tq!Q5`aApRf?WQUrlz9v-(OHiqq9*&+o@R$#lCZx#>D9NpAw8B6v9tb~$P zP`^VGn1uutZ*g%gbR;~Wt2*U*qvC=)tId^(X?PBdgjs$Kg22JCD>k01%sAlJ<(`H2 z^&4jPV(oA83spI*_l=|npxaH3^M$Yf=NnIf)N$Wp{s44v0y+2ogmw7!#l)!$&c*Xd z_`l^hom>p)jDuiEGm24*L+EwD36*H5T-zN~y|GyYtd|(2MV)4~cYZ0{nEWf_snK+> zyy+0$?X;s4X9Y^NE}%H9+7)Zco$cg3`zF*{d--rr{?9LlcnCoTn5fDTeJY|P$#%fi zrSuA+0?YpOUOOX9993scJ0Z~C&sjI4d429V7nB?KA(j^4w#$gU5UJgYo~SMJl9}H}SlYe_GOW$jNX9m!8cYs!-$3vhGlu zstV?}Ix+ajNf@3WkB%;g++PI?&gH&p6Hw`B>oz8VO}rWL|8ZbfL@b`25uG2@BUEX5 zJXzLA)8u~lGAnwQE-Swdz0|GtE9cai%cUB9V!kQyAhzsknR&*vm*;k~?HC?bwCEi5 zBf5Xe>RT*muhH(pkETM)Gm3Npg9vBPrjA5MC90j$$5+zj3`m6f$-U&k6{o57z7e95 z_HNsc7~&Y>F;cN#Oi_m5ET{)yKq&4B)IWlaTYZ%9BU%T4oH6L&e@_kw#}`30_*z)k z_mb#Pp(uZtvG>fz&8sgb`Oyc_@~psuWDOop3c{09a-8PV;=RvC*UBW>FyS@DD^1q5 zCLM|E%N0RbQc1i3PS9R0y$d~VJXH1$6L?{Q4r)?KB-VxeAkeT&41ibnE90qRR~Xs1 zv>0Dcs~0Z9`bbB*WBAtZu*CBjl)Vf*O0ha%8GRzL$k}I>l(cHkz2v}IaauUmE1(@; zm%4I5)MRK_P|Wwr>H0tXgKd3j;eE74a^{h-?2I8Yh-~E_=%rYJ z$SRsrxT>~LVIiHa*1-(QchIuP&3m_P1(+1f(m5kE{QRk7R1C7@0_$)txCYRe?XI8Y zCuT>A@_fp4cwg@nbDScL{v7UhP~7SerR|T*s0luCU}VY*3DeJ18Vr2X=)1Q%c_7&0 ztHek+;rn<0l+|o{w_4I_#Q1Nz!E4%yOf!ROL@vD4AXJvPV%7qp{IipwpCSGoPwGJNp491pc(C#{;|v|oFO zl|QsXh*NLc$lJj%tJWtiIpr~#4-I}_lh5UOE2L0k=6;3qfouo6YB^yWZK}hr{Bync zW6~nsuLbJ+rOeaPPI^WkkWXshIu7>DjoSXSX|=e(IzzX4r=unjokVu= z%LGOoEI=y;`R)Ri&jH$PxgNwgzXJ7muL~7S=cfFTU$5@z2f&>A(gpuB6a=M z^>=iGCuiwsxg*r{BW$$yUl+7pXs1&nYIc6PbnB}oq$^(=<*D6O!(Y5RD6A0)S+0uS zmmBbo6v59k$I1)?^5)R)O9KCVrhNHlUs=ZQC~~;W&P}eFU#4+(mgHcyxIcPz{i7}& zw(ETOt6~Taw@Q5rbMtrmYQun6{7fAB5tD7=uJOc;Lc`-dIUuuBhq%V@B+_n`opfuE zG>zz#h!7*HUK~?m=3M>LmgHJKrq}C`@&Woe ziLA{8C`SL`1KkOr9r~qfr_FXqX7%Q6APium6!7Ga&GRkatKjM6smVGL8 zNeg=-D*~AA`pS3&QDer9Kw*Aw>aQb<9gWCC{Qm6JQ=K_N$aDO+(*28wFxMlXv4-2b zi9J*QasrC7xmn%jVdu9AgrqqvS$qdK{dYoc$o-7^;@HB+j^~|}Xs@DdS}#ksmH?@I zN&LsXKU0W8CJbRg8qwF_Gq*r;{a^k}0K@F4=;WG>=uFD~r=U=#*~(1n8{e4B{db`y zi*k~P3j6fkc;UWg*lY!#upHFWm|NW<;Xt3Ftqe>VeH|;JKHS`8O*HO^JpI52p;^%7 z0N4KUg+M?D`yRBgg##eK9N+z4<)*~L_2RqEd9U7)6>89viy+y%#iGR2&XxaFf@(sY4s7?eoa^r0CS5vTD4X%|4OI?1V!^2eP5Gw}vwiZ8i2 zu)`6TVSNfICcH+Uhb+L|dWU#U_KgP7p<+lm?&95!NITDx>+AzdADhVe+Q`NFFA%ca z=M*wW{3GY9vLzAuN;(Ax(+x<%N;2<^84y1is|fX?)*}v-tlO;?hZ~#UUa=g0JmwN^ z5>PTg?53JLnQ`aX06DAPX4$}-Eg^I(`Bee!yHB0mBEu=3W2g^>cRNXU@gR;}xG*ffeTgpeEgT-z#sQ}&k=Sig{#_w%0QSBQh?EkM2 zaC=&IksruY^Y|(yV&#%R64YbmlAZ}6nERX!D}#dMdX-8x&FUY;V6oiMyq?J;NLeU_ zQtlpfx2Ve6Yh_&i%G*+JO!Vh(=}wUOpc%wsJwZTfqy6=ii2Ws7(z*|iY&TzHM-I?5 z)e^5wBjFqpbX;D!@LG5mynI`vL+GONsIHqx6k{3|D(dyAblphfcBZQt>=gEtfGs1m z99Y?j{wETJWhUdoDFj^6xce8S9JCilpFU9?7j7xYkYq1g|BKLxWfjq+b< zo-m7HXVE>SQ5^RT9Fqq%SGsA5Q3wZpRss#OzMTBEB0^-$1{ zpYh9C!$ul@-b_6yL}VkLCP@Dy;>qy$5G4t}o>}Vk=7xagRvKyuy36ZpWaRLeM&ttp zYY!1knF075KuhCI07LJK5wk%Si&EH7&%rvT$K|_N-piv}^cql>@unXcULd<4Sqn|= zV+%6W!aZObULq5ZVvQB^81VBSoo0}4dqX(A*=od`M@PAGQv-A&5d*nAAtN)ckAF_y zjc@XwMXz4mYEbxc+Qe;L(p_3HTs}+9loxk_N=B`}^Gu&c42q1uOR!JzgMYsDo2?gv z^b4si@B9Aha?oFf{w7QcOATt9`@N|b3}}4|+U*$1SN_^Xg%${q6^Nh+bsr%auU8Jj z3QD#I*klxPdZ|5np+h(HKm!;<&W$kde3dBWf|6deH&R*>P0t)KG3rBLA8@UsZ2Y&W z%c~fII>i#|MF*uSwl;Gx95IDsL00puT$DcJRP;k(eq495w#s?i#Mxq&Md;Sw(KEouHCV%+$F>~nfmN&Ajb>)=c&srbGw#)I70*L4$ z;t7Z)rW~CLWJ7d}rB+#jSEh>JO22nc;O>v6;z7d*2TdX;V5t9e_$xg)0s2V*RYS9+ z2R32Erq2O6_MKaHhg)(_C4g-2{EGthz}8FostUhuXe`-J##o3FIKFQw^@8J_yyC|H zw`^Wf9dN;-ca*B8nqD6MuOBIvIAkynV>YzwHs;HWP+^;_zhFYQ+YaeQJW{|L^)pUx z+o@jS*SC??s5@|g_R*ZAd4nI8E@Ev}g{5EFuoyHO{8a_e7?%0^p|+u^n_KeG?*kS%B1shcg6J<^$8*@eT=Y9Eo zftA&J1h7nNohrKWpc3?!XB|BNQ=TH%9MPE_>_krdI;44 zH}M4FthD{XZf#-LiSkKdJ?e790`V|HlL`o@tkz6)}pdk|9tEhZ3fq zu%Nd!BW`>JpQoK@=v0qR_5GI_6X8%CCwrp36Q`37}7XOw0^F|!xRV1vHrBZ*jHabv@U z0SL1m5~~3h%jPq-h9&a|mzRV;rv38_EgGUA$dG+6jqh9|sph{9FF_$nY2&o|o{+wo z4l367?Wk8-^F+-yjvF0XQ^VOlCKdjBg#2pQA~Y=a3}CLW!qq!t?9#my3_Ih@P#4qi zsF{}va}}{+!*IVnzADE_Z�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%0Dox6yb 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

w9=0F}_hCGJ zu!G*;*h8D+Wnt+e7#&|Dwb1J?(#~!);PTLD7P1S?TF+xbG#f|$ThtQE(;&cf5|b}V+*M1uqXht zu|~fa&&+$}$XXM12oovqd~dp4HYt4@JzGXIn9cs*RDhm}W>3Zk<`^I&ba^o4wtDL@9nVtXrlM$-~Y0u^+8q!v0ZJnllJ%? z7~ZK^0mum)ThM-3_#k_Y0%eZ+zw!TVcfp-KXRBAZxp$-O{=ib!W~M?QlNOkg7{#NE zCCG6ules0>EBe24-)Up)nn@@n<0C9+O-`XLUqsQb9uFLkNcp1`3B$Eg5Tp!wphCP472a+?A`J(wiMUB zJa5VnxgE=C#A#16LlGVb`|2X4_RNdE&qwW)YhkGSF!cr->E2yE0R6H~Jnw^+QZlIW zzyJCoS z->yvEN~9tCw9lz^QoL}geRWj=RXWVVVc~s1xV+|}zoXchrh!kknx(Z=m^p>gT!Lo0 z@B#|=_ZS%dRg`0zW^cYx0Jg&8u^+ozxn5KvM$c9W)jsxR%^WQ5j-+%iFug4v+!E(M zFqS8W7*@~Dk+#<=T3FGd_PH!b#N%^Tik*Z?6%CNBalr0&DE~CiNMO6kI=UV%L^$vE z0^rkY<2=y{KG?}f{N>L9T3i`%pkSIE5`pC|;cvox*vbgzJ_uxQm`sz8rwj1mjh04+ zsVL(H$Aejz-C`BdKlLX74+jCG@gQecRRoF8|GeNh3Q@d>q$Y+0f%*_!F)wVZsS!8nYvfaTA(%z{rNDgX<#$DWy>Fae78m`l*y}3zgG|i_%mRD@&qc+2 zMyyvvF2|z4j9@J=a$&6%$;s1IA+7mFk~{TV-0fgXLr7(Xn)CjWuQ)EmMZNU-NcZJUkdL%DnCVBIJFFsMW^- zeS`YlhS4!eWn}gpN@q?BRUjU@Cx~RYre3dE9A+090vsEub#@|N9#`k@dR643rIZjc zt-=aW8x=3lOl&)Z#Q#$Y$Ul{-U48!ua3BKwti{&m(@S@o?-1Kh7dqNX6C!~^#)VAG zC~o;@q7Ug@Vb;J_R66XS9)kRoptK5*3pQ)FOG%~_=E|oZM13PQ!$j(jNLd|lfr>Tu zmrMKH_~TaYlZI4DInhT%&U@ujimu3rB)vd{+^Bi<>3;)bT^UcK+{zBoBDoc@iz}!; z^iW8j2h>J#Lk=tgR3V)%#kB}t=6N>7?6EHIZ;>N(QnNWbt?aUL3v{y<7CMjPaL>QN zs?HvTVrt#Ym{S5`zX8A-(qGHRDEZ`}(7E~|BjiX099Z3#L$|u`5JNP4uQot)rY#)5 zJ2)rSE8}urb5z|LJdENIV53oahKGw zVRbNg=>e+YrByR3E{Ff;0&eQm;6D|47+E3tWjP(ZQAp@#y&icejoL9yQ`oz_w^s{b z{>|P!Pq0S9W?rr>$7FOh(9QURf*P@f000022~Yq44zdBB2pzH#TP@ML-=Kyevf=hA z%!SLlX@E*ks79Qv43)ceSmg>wLkZDc2*g;U|GJ>3Q?g*xplq85+kGK#){h`Y<6R6d zT^;{53%|XL!w;og;2;110{{R600Em*g@^@j#sZ>dItr?F7vfy~(1vm;VL#!hThKw> z7FzcbwM63Q7qAT8raSWw0%cgjh(j|#UNh}MAj`0@AwKWM7eGaG`bnLszekK{Ff zgHL(N5DvVXWjQx6{z|5tF)JgQ`29u7sTF_BBlJj52P2a8q>j`iNOxN~9P6P?N`#89 zSg-w>(|9mLl{MCRe3IcGnSs4~^02~0uRt91JpCR{5KyPb9W8XK6Cb|eBj;cQeDMnfcNP>H40KCQILfJs^Xq{{K zAn^i3jf;!X6iXGE;ll@qzM0JY$LsZ&gYT|DgKsd2_+u437&uC+?YK<6-32+- z(>cq9ZBU-0<6?aNIBfptKw}VCzesLA^|zT1Mb(n^P;D+I)YvuX=qnIulA6g%Lm+*# zS_hIi;UDjeLpEKzyedus2>x9MatDDbM|oMd+s*EqTCc%VMW72?bjk|`6m-1tS?J{? zppm~98gu#Rzg!~8KMu%nKOOz@u7zC$(X!w&n6!A;tg{#{3{!CYMc$=Xa|!SPA^vxB z2Hs5cvg|>L2sBmCeb|F(T_h^(-gcGG)M!umc#p{_4Q%S5DjH3sX2wM-v%4hdzi7is zai%6k#c6M{Swo<}Lb+3rCnHJNzxxAZF*sG&^epyPhalIqj5DcoJ2hq(w{=o;al*uW zT1eO%#Tn+^)0;TIdBus_5YGC{1M(fDU(SVpq!JQ>>bLkjmw=oLq_eL$sQ?aC_ppfe zM?(5kf=!%4iwv}lGtMa-{*}+pAASg1f|+q8htC7m;;2eEMfYT4-MW2Tc*XccaEP4< z3Ei3Lq=9OLq=02`_iRe9BFEkpa!P}`WPI9}8c+DE3GhcwBz_d^1IwKScyy%FwRdn_ z(mr(uS%$Bu%#K?TLLE=ZA%&W0pk+>G;W|;nc}DsQ1Uh?}G6RBIhrC~*BhCufN7vU> znz!y_WrLinJ{Dfq53-gZyVcgQv^LCspkvQ{BCD%M&j@r5K{-55u%R0S49P-H6z-7L zef=?FT{;kY_U=2Qp=CeLl6V9~T$zLKIO*-hyzBY!3xyEj#_5l*Wmrl_{-M^|$sISRYQBEb+w!iK`sCSJ!l9I{*F#& zJ#kAD%H{p=4x*XPsgNbPFRzz(Vnt)JZyA3sSd{Bq&o1uOSY#Q{NMt97xcQIR+0IhH zt?#7M4b zDL-T&jn)^nAi$Vs3MLo5{jCr}h^g;m~`WJq-b|GTD{Ec%EtKs5QBl zfaws&6=vWAVErA`5uahyfB^RuSbCA36 zCq4{|v?i4)k83AaZ}`Eji^AGonYE6kxy>S|w3Tkw!5_F&yRDy)IjcV({{{07L9M7gisL`Bk+7PNnsu)v>nQ* z`=nYEEON&$aJzcJfOyrAA|J)HY=cU7Px#I+7if>hi%bQMw67bG_9a}?l=S_llSI7s zGn~x{CBlKm*IgYMv4lB43=oh84@@CJ9{&5vOWuArl{KFlvrsdkHjQ6SR{`wFOa|ME z!O9Al9hH=D-r46m@?th@UU{J;iHqs4N@TI>K%DJkro|FSw>h82lUzOyzo=v$u32?@ ze#L$widXaBQTkvcpU9OpshZKus7JSX4ne+S=qM`Mxpo|Fix5K_ zDKnOT6W)4B^Wpv%chmP4Vw&G%SLvgjLSKp+>P%GDFflPn9nMy{*8_mzUPMrcLWxNE+qk zJ?+QCO-(hE4iZ_MO-Ci~FEW>AVuIdPADv{>O4JTQ(W?y*&7~P_A>XT)x}w01R)_ zrSY`A4S+@L)6clMpzM}euw;Fh;Zop=#e~dXcc`x?ON{LB-SWZnUQA(63m9; z^;OGL@pU{T<1l~o?vdtT-Bqa$G#_qs;mqjOa~aZjnSH;>k!2+j#TEoDtHJ}{(Dvtx zN}oh>GQSVLz6L-~F)x*Ec)~OQ%q}z3_k$dLtp1!fPE@TNfLDB=#|4khern4&bt3Om zTi16xLMpA39SIw@FMQ0G=r+$m(?!-uD%F%tR&LxUAD3WO5sgs0(f?DXKalWt7N)^D zGHey9_M!dpa4qfMfLV!w#M73$`@o~OI;7g`gUkJRR0I&?E*(R2!yC8W7CJV2^FJET zv>quu=o>jxHM2)!4F7U0c97hyd56jIC5g3!hF;u+$qhAZPXoPNLHD1RlqHdslAvx%@vJIT&wRrA~;z; zCR=)NR@)!9*AM)jPJrpM)Is<317$Q~Y1wvJ&StSmHrrABUG6qZEz6R{rq9JA44cfP zERx9za!x3$o}tilj$Oeif}>s_ijp!OtuIF#a|$<;WFt>&Yy{hhCnvi_THkEaQYBTu z94+^@vxlp%Lili;&&4Ayqiig9q*7n_OMW09n>B$MV7Cr8kI{$!^Jej8A zu(uoEsdHEIJIKL!Ga?-$Z52gN77qQcQZo^(H~3sa2>J#jWraJfiUH$)N1|eXkgk|= zRHZ@i^a4QpZzr8t;j!mv<+ef|@ho%Aq_NtxW7|%W=adN{lU-S@E_5kzt0)J_#io29 zyBE71_}Cjr)M@QZHj#)GQrifWDk;Bt+^FNEY9#;B!#sckE^t=v`_6B0~$m9zf z`TX55%Se3f=E6keS?K2`k$kU6%(VP<-f}Gp=Rj&v(K{(@}IUb2etA;1qn&A+DXXx9A&m zAsSUJq9H?JA_$45?!fO9l`fYnEdfii-*|O2V7(0Yegsw2fy7Tp5L5fVgH*Zbq**W>d4W)o}JkgpI6=qN~Xp(&-s1 z?-_3ma2&%9mWUbKHtRXDCCwgZ9RsOq+% zihaL}^FGJ5=@67Yv^b}C?Ow5u@sq%r8Cy0vChUf+neG4qJ_4e$1wdg4Bo}Nw#Q^fT z0;I~jcpklA!&c-wFSV%6I-cHRPr}RRAXU3HJX^m zfg(hsMJnp;TNxG!5R6`nkSS}vuI7pm^3f-fU_m&l-W_*?qK7-o#tIyba6l5~sl8@q zyI=kPn)V-;>p!T$`*njUrco2PHScMp>t(pHph>xGaiUqfXWcCqoYO;Er=A&#LPYPJ zO}PqT00DNzs0bUWtT2hHS?VkaGg2nFfOQXRWYOOy;axS#4GhY@qrU9jD`jhEdoJfB z6$w#`ELv%JFP9WpU1lr_cudo_S7GA2ktDOHSf>TT#4iv~$(3tJEF}RcytY%26ksYU zoYn&r0Z2jE0cNh?EnY5cTx@AzIh_-gW$E zNfsI>hnVeluD@*k^*Xh^@)bXMQxm{(ITp$#lCg)p{4n8&WfW9|@Q6Jgi3zInqKl0_ zumJ8iIc=SS{^1fp5TX>0c*)vn@7^Od4Ou)=GqDO`S27jC+0<#II5yG*BALf;zW0PQ zGvdPN%WgK?Xy~LDSL8s?7bwa)i0 z^`Y;k3Y@}!xvJ8;eWs3BwG)d!dn+SF@rLC(;kXFG0NtFol`<5+FP;p#@gaC00))x1jj-R`1~Mp_I>mCEt0CQv|Op= z4F^B(>8h=Rh{logsfZ31jXd%w&Mpalwjx!m!Hz;93aDrk5OHxZVUpWEuVsZEfv!Dg zq9B#QK=;h%$bmXkFB1rcA}HPr4Fw~JqVJO>8St}8u@_DFZ0}yW_~LgYyn(9%sAB-4 zsB^J7l-JjQ{1;eJ(vLvzVy0(x0DVA$zYOhr#rr(QaK`-9Q*5EtHx=!;%z=lT+T~=T zMOK+W4b9z4qz1^r%$`qAh@GvIKA6TotkKPX3O zdJer^A+i3Ur{B=&_6&j_N7x6PPmXFTg{X6YkN{fmAsQ78o(juEiU2a`HqfY9qzgzA zm}pmI=o2gXqboq7OR&j=bs~|zJ|%w-Yl815or`(l*%nx*aZI(#2?zjnD+mY#o6itr zF-j#F-dm=f0Gtx?fq`iH-*lD%Y^7_p?C$Sh3Rt0uJR>EvjUCKyMPpR?Dyf^~OuyTa zra;@?f)&u~ORYxG8o{;~4FiH_bhI$q@G(10O+jlsh{n4slixen;Rr*{{80I-pGs-T)q!?Na{QJ3JnTmmd2 z`O%!7#s*%jebh_MY3t2hyVZp0-DPS zWI$Mmu^UV-&A==WAz)ZHB~e`ml^|Od@N7ZI_1GiKI)8Lt&!@Yo#<+PX%AjOU5Da=> zZIp~1SI>}QB;jWY9-+u1!qC2D1CcnY5ds977+#1kZqzk%oYYl_EL;0}!Y!(Jf{3(!$7JzD3dZet*OPTvtV|PSm=02@=umJlTrx?|lb5@N zi7MOy)=bkNrE@Sm0h91mLnvMwCEkm;Awghbt7t_5A#xc81YWxPr*JZqL54ywc41>t zUfl;cF#$4GEy5WE>19gkf}63=CP4G#W1&vsK*H4#M<|zOMm5V${JM((BNA~z)q$>V zT-0KFJ{XuZR4q*wnAP3q%X=uy>dcXUm~p%&0I+5dj)Gjv(3ya_IUyPq9jXk*fT9H> zo(~*c6r+Gr$N|uUF^+7Glqp6qcO_KqLWn%XPIT*mgB(U?=nCjiuZZk}GD%GXA z{+z+{r%{3NmLZ(#KKCX!CDuc$>vmEGXHuqIA9Pv_@PcYqn=!)ytft1Rjx^HQg6!AN zTX5#nhwbor_JlKPap~tD)_z|rZ767(*Q73lMBzUn8dW8>49r7_#4;tTa+U&BqKhD0 zqe1UJTlk`CPp|hLRxWDU$w?@_9OoqjmZGm;p5{nbl4JGgeLlKXVpt{AEO@!3GwO9% zGoVJo81D(DY$iCC%9?qdjOqYES!C6F2p!@tSP&^PWvst$JG!>HUd$B2u$WTD27&-p z8;DCR25wyB9J-FLFV;Zx_qu?5%=>&Eqay;u799jk3@2G(5iCZkF0RP3c&eLkyKYM` zh)k$~iwnTB%Rt-MF}T-d{GgW+O@xMFcui3Y{!Dq!g+bMoe8Brsl7vfvQa7x_WYSH9 zykNY5DF9GYsT=}A0gNa>1*|P-mbpfQ%1s4nLP9Hw(FA*L#~d>SwRC_9=r#Q}!PDla zXMw4#N$IC`DBDI%TLSy z#P^8Qg1zY6>fCuhdO|pVvT_VN@7hC2XuslUj2J}N4UybC^8*Fu=Z5R&Zm8AEnAun2 zChAbj+VTFOdtkDofjXC$H{uk#OE+vEd>F)1Wjg{OxJ0*FWjUkG#cM71;i?y!!I`oM z0Fa#oF(70IAd=$4nl!*6gN}NcL<(T+E#At(0XpMMryOyM2j`Os zYPlLa(+vIg*_3$T^goZM#d5jK$^}Ov1ki4Aw3})PyfmQ00N5J1w{(LKmx0A0;Q^=*0!Lz zSbzWoa5~>H2(0!=m^LH`Z6|jshzmw~qRg?uJYG#lp}N2CSOOcxKC9~*rTO$U-6Q`J z1P8Gt_!!yb;1exrS+H_y=aZgvd^c5 zhqd&ap91(Ejrm6K9i8$y*pBi#q9`PwF#Xn3zN#BnT-h!(4L%w#xxgGv0V>*2m1FTUJj;|qY!E%lEk?kvYL1^*O4|1)SWSO&)%*Z`XL$> z9l8j|fgp`$N?NOgs-}oo5LgAEf;EY^e}`B=hGTx)E(uXBfMD$l)oeU*)f%JLs;=dZ3yL-LWNgK zUnH3NzunVaS@F;`P;on=#j`DTT~n2)TvbI*Rjs3SKIa?JJ8SJeI17eo!F4Gv!s4+C zw;&Qr1nnYsCWmi2>Q~rC@n+!53eHThLUYN*)ARa|JG7VaEu~4LQuC$Euy&ba)J|MG zcxMTkBWmIj3N#2nMuhS1<;4*3AsQ7Wx`@d`iIVD>ZhVx91!zDBu#_Rm<&N{g z6-n9bS!=YYf;c0oNHU_Y43XkE^zpjdlvd(9-L(h^6u3lRihqGssnMBOUB9oxNmcI) zGc10P?9`RE=O>Y@*5}K*%*|;kD^{>z?~d-y{{6#t2SN>0FrqY+lBFS}#);;Yycyua zNhI$4tyOcLgvFtVE7+59@R>|PjNs`9Du&Pm)c zPY*O4)oix2jICH9+7C@{z5B+|@mRXiQr`%pjZB2Z`;CSRRFO_M@*)AFVpkR_Py!~=Z?v{u(7zVC<_XT(mB<6EGh{_1~hQ^q1@kA zoJ99saCbOux#MA+urUrH8Wk0~h{-~!1cD4i$j~Z8kN~i#BGBl^P3#h%8Z5&rL(vrP z2RElyab+wyC1Uf#nhR`5CmXVwI<@w(Lu6O9lKIy zE3vim`u;p4xgfhSBv(o3k+5`TvptDJU^A;Ho44erD$KC>SAKnEg`-}PZ zjSI@9{R8et&*rusK{YCM1?{V76EGyuaZBB_Vi-_{np@~`#*vq@Jgvpc2EJxobKiJR zOy5oR&m{;~O&B5-4-t{l^f~dULmJ#$A-pjeT>{8-G$3Rkd|g)Csz^UhayncvLdzC` z-9>P5TL924I2f2-M8p-KyO@AiGr3d2SfGFb$N`m3@(^zEJo=%MDBn`+79`N zL6ez5Q}f_ds@2k?iX_RQVXjpVBRvwf)4MNvYR%Wc5#_#k6(V|w=<7->fWY0MVW&yz z1lBRCe~BER6)AJ3TeJqEw)@cN4P{m7V^YL~S)J3-bFnegDPLKUl9Z+nE+pnI5WJ~D zh7pWaowTEBll>Ra;r(=+c4(^tnWUNm*Oz|^MXaD0<1yvg+`*69hjOV}wCo-D=+F2; z4$vjJI`k(=MfWL;1sdTHWCDa(0D++pY0v`W(FJlU?pe?RH8_n-0A0F~pvcb)ol;ci zz8FN@amD;O`(}x083h^acNXw_gDzT|3&#nB`MD|8+6_S9&Fy%Jd!hqF=drBtWCS9! zpSUsQlE?LBG@~LEoMFFgC1ghc!%g$4Au1IWosC9fA_XgRz}}TwRfsA`R2o@7M?%@9~8Gcd&(a`X#v6zp`;U+(VlFy+_x3 zi&*Ps?ArUGTA|mO8k7{Ou&P86B^s(VN^6YY!Q`h5z-f*Z?q`X#+uFE0&cDqo@77B# zW@|d%6`t-V(S%Qc*o0;Xm4^XDiGV-=2o@tqIs@CRsg!LSrhd>U?BCfT0qFl4L##Q| zj7Xr+>oC$N00d{TFWmd3Xl2T+=;~bA+P{ZC(2zr1@=_|w)xH>@FiS>0Z;*^b?j%(b zPl$Cx4(rA{k()Pvg?^m?h6`dtc#7Zv40bjSAxxW2Sxk28A-3tWLMqfmf|;X7PM!xL z)7$Ob$*Ptcpjb+i;-raynYWLMu_$0?+iT1XC>0-B>=!bpr$@B4y%AX{3F3qZ)Jzer zU8+O+&oAL=`;HFW%_lV#iRQMQ_P#=v1f#&S;1QcTvw%v4ix^%6?pdd4PT{TxmanPj zTH99@LZ_RCgtK3h4?Tm8k*hXcSVBp-6O8cBrvkQ;M9pfN}s7k|o zs#g`pXUI#JFUI<85s$L70I(vA-p#bJv9~n!yo{H*yYTe>_mQy`3OK`h&kOQoruMz> zwHmnj8Pm<)!6~}A$nCkmKw-Hijm(9P1IEqArK&1&m~-Z_7quR@)7m(+O-C8X*hx3lQZ*El7!kjz>lnKO*57p>B}os9aMNgDrVq zKpinw34N(1QBonW4IWFI2Ew{kGSbV{{Vozz1f_H}1PPhurpTt2`kt{0uB72319lsJh% z75$O*G>J9#Bnr;R{a!LV=5!t_oF06O@0LomG}Y?bH%`{&c&=P4_yPSP8dVLJ497wd zkiu{WEGPn68eA5&g%-wSpDGcRBeH3aOsrh)OV04?=x?NfY*4{*5|Kj-hgE9}RWX&` zy_tD@4RCS1FvmK$N_L07wlrBbhKYAX{Y)bJMT4i+RX3E;`<5aB?(sZGODrM6YQ9xe znwLxg+HXxM^S^F2X24WbQ&ky2{q9RXC&|4OM_$?>`bCoVoE^z)=PD^|47_AvG9c|` z5X37WC}8Y?It)ll5S64kDL@N>ri-hoV6oM7EJ~H@kv9Zf{MYAZFu_H%Uu!WPu~{fA zAb{~aKIqs>oh6lI;_h|W&s1bUa4|uYnAOnqaO_;HkcU;PwgqYW z?(XkL>;XwjazefM>}uT=@Xn;k!D(Pe>gt&Pmagm1!_e$mz<=SfEhHA&VOz5S{{R30 z0tqkx03}pGng}pp3%3GmFMn%<-Z+?_GG-cKNMR#gJP?13bzx7iMdj6`IiqtQ2m%my z+S`5D594wL;hOGr8OMRQn905$5}dS&};l*pZKQR?FZ(2i>MP0;JMf2g@ErO-wG+`@~LLtF(r){ zi}VURE1*c9BP@T3j^shE&@A6(DuGIbL~yN&I$5_wXdACvo0R@??aS3-=>r~KR>Zs7 zvMrlpg0;ZLr_&oYw*zAtOGIyQ9aKWJ-CM1yg@a;lE$a`oU3^I$4ZLA_vI&j>CX*!T zmnSw4v=?5fp_g}HY&a}`ZX)_tWpHmkp$}RfNqK8o6q&iWZOcLQOb&tSGEeliC?d;m z^+ervM`gI(?CUy$3Ch;_%rUEsv8KgX@W!?pYZp_tQTLvWbS~n|1nkXXG%7@YM)u#1DzZ~&{Bm!G(Js8bkDw1C z)xeMP>lew5c`*73p(u~0Lh-)la&V8M#8Q%8#7rN(G}T8%^?e^7%Wf-GkX!ME`JYHf zG%8p#7^O4pGjMEj0@KsP21p3~I)~#GEhDX8dUIhS=@UACyHo!Li`APbBFPA(X@mw& zese~qQ&NG;2lz?iFnz-%T-bWtCTWDCPAW^whCRpOAp|d%KbXw1y7)RyU70W+PH6{q?uz7T8u?T zy5S*)kTLf>sXU$AxqI*fVlE)wJ z-y7_Pi?^T>JNr7MC;~|v2+~?ShVK5iv1W-&b4hDYEaS24u}aZe(gVee#pU`Pwb!k( z@>nvW^?_`(4dS5J>WG)*NDNI8?css;0do!b^Uu68r>rWDA@R0_KIW|JMDvdCWl#5F z-%^u?tudcou3Y?_R4$ujD$pcJWnD8cdCF?aL$5&uM=e#wUfUM&?I!(iuL?&`)qzr z^P0lHNDJN3u&r5GIkHRZVn7TcO!um3Xg#0U@<#sl97wINCZO9HbYo;bdYt2CI}Ev$#E1y zK5IfWNt%gcG7Z7XmBoIA<;gvuMH>lwGdRtmSkkS@Iv6hZ^V6mdu z@xd+$)BSomWGUoPpRJpLtwrUCQIt4ulqs!H>lX{47(X&mjoLgHmk!P*DuuWu#BlvN z)?bEU>affS=}Q`n=mYckl-*xoLWv`z61eRAuOLFp4=~vZ@WPoK?GIzPxZg6l{n{!) zZ}#NO1#c{?cfJWhB_@fKET5!1r;RUeOVWMv;-PEphmF=-_9I`_+uP*zgX@TS2GL2|LG>kJ%Df6B=Yj{x?Ze}l<{?3c5%!S9OBzZJ8y^4w zCl4Q*by?^yEC`L@tqU%I^UbO5FI?%^J0P#zo+DK{{aZKpg0RVksWZRD$k5~cRSp9p ze9koak3hgYb|VP&Y}x5-r@o-w`!J*i8lWIy-z7~mE|40^!V&R4%l(GETG%5R3P1&k zQY*!K&Z+1F5MOW$pqb2UKa$Ml3j}-pA|D!>{avg*FEHb*#;$%?jU5`eGYc?-0eb?Pm+~R7CUd z$kFKk;U-ZNqMc`ik-uJSvu^$SYsGJ!MgHM_CW9riik-^IHM>?$m9wAlxjN4#{l-rb z1l#ufGU*XlkDQHlBNr!HVP1cT6_ zvEgtLCOtXpRR@k+Ne^Fj@xvCrsIOD*UsyP82HuF`|8|xsmBxq#Mb#$YNZ{qM$2*i+ zBBdO30Iwj1j;|V9`%kuf{|aL&={8Nyger_4`p}JAuTt}Qs9tv{&YX$4){Ew$r#>>0 z;v0|uX|F(41o%*3kI?yLDc!yqe$IMObqjE8Ln+CM;`VjK<_eqa%5Oe7CF?_tiWdJlL_dyTtcIHcm>)5u`Ntm_u5= z65ybMQip?2qs=AWEDOYiT~gT&Frk{h3))F5Kk29~n1_wyCIq+~EgU4fg*i zRxr-I*_iuHjZ&5G{iUFlOzmC$FalE}T?&*N>+r!E%x4nDfhhSi8l+;+x z>Sru%g|r_f|56x7yZ-xwrD+iv6nq;|9A9WGKBlw2b5+U@sxcr`iRKhowT!K0t}5Z4 zj2gtF{i^2N^kUb|clPWzuHcDh_7t#&P&=VR&W^@0)Lzlcni%1Zu4j?TrLaah^W?#R z|6Fd{XXPt|8RxFZ!*X-5%S`{1o^&`8clG7mMtB(FG=0fJ$2?;7a_N($#5giM;S~VVC zO*i*o;cog8Eqbj!@$RouV-VcF{;7x=25ST za=LMEh@hXg;08Zh@)-(%biT4oXoHqXU8Sa!F#}y=3{@6C97W|~9t~#=rA6cvrCKig zn1Pa8-rZ-HTI=*;zx;&8$8kbNxXYVuq-R z2fqP~d+#0@5qb=PxZzXagg$c)v|5gGF*1hera}wXYDLnrYR@W_ zp%vXCx$-w;q~2y*RH>mkfZ#*Nq4iDw0;>2cJIvQV+P?FM%l>GKC{Ke<5WD}(>R9dg zEupF_+#<9->lO4lOjTs=DADn+S%tOvT{H+=?vtNv_{JurqyOMqLGF0Cfth$rkCcxg zkz6$rBR`7}NgCG9g&m_3saz7#MQ(9Kn+AMO>q(RAoxn#S(r}pc+mOhe;0MitybH3w zI*4(7mEEl&c#L6J2LSS3>F`o=l^EB&rJy=Fr*ePDAFQERfxX7t;YfNtoNAm1gR*+f-CV%9I%^kH?pcpo>xnAF z{%x~k)~kA~S?1KP^X;{IO4v36#^X+Ut5RElviiNU#fMU>=G8A@AIBWF@znutmPWW- zeeE&iX5K}7fFd%pUeCM-ky5eVR zcB27~0Qc0b&5Z$O`S^w-FrPQ>kbLd==nO#BT{EeJFV~m)PAY_G;Zka8kzw9n8m%Deyf^(rmE`}=cImL zT|+!)@8ggr8XjRgN`d5n|0SG(Aop$kg**K`-0bs!Z43><@1duAq;HwYMi!30avK3| z@A#hrnR0q>>^o(y));VTeJ>ug+z|Nz)76MTK&zXfWDM9a{^GE?U!T$-)_3zm=n6Rs zZI3O~X!_z26boBR26uT7VUTCJ@iHkI4%{LC z?fy8bl{6A8aOqWuv(uWB2QjrCDtjlgAo@xUJ1klIsa%S-x`(E7m!KjDTlggJnH(kl z^~1Ni78eb4Ed83Z`0p*p99Ou4r4xR~(p)Vcd#uj3VjXQE^|vc3!|u<$ulejQlGZU$ zIG{8{0{8a?H5BhlJzHimp!Nes=8~#)A0&x48n=m zM$D5Dq)v!mq|%_33+vE>&i;$n%+)Fv(wu&~fe5*ebZht?-_IM^WYDt+2mA(|QVI6s zn9YbYay1R746CCZQSJI3ty!*Qiubt$3b?8Ex5ldJG}=IYP6ZXBXtz%LEr!Bg5cG67 z250bRp{B3RS=j-8c5Ajq+b_&6XxzPcupk(40Eok9-(s9B{t})D7~<8FW2p2mO@KPt zOF2bn3^lzQojc{Rrv7VgUzF_!V*C*H+8K_I?_FxLXC%Qv*5=wNij+h*X}=}^ap3>{ z0;GtqF3Y}1$~%f|QX|%<9XqIUH%E{6`p*l~#>-IsZ* zg3Z{*-#&-Qc4nu!L^b`b?`~)a5+kT13khm}hZFgcIpS~PAOKNOlO_xW5+Rv)w+|h7 zeoDmxkkz`&nH=TM%bw+Qe8FJ(_kOD_6Ibp*r%8>V;ScKPA4%&~);+BP$^i+k{wI9) zFhQE5!EhJ0<6PaRF{ecUjl+_&8dEj*txM3_k}2S&#xrBVzqg;mrRW_7nY_sz{4Xb5 zzW?yqA#x$lgA8YH?>eftCGX}gsN+>Dt+F`LiJi8;T90~d;P&dr_>_ia-STU9Q}SKZ z7X2gWe@|$Cm$x@oQy8y@Q9%+cW&VI#N@qWxnk0PyQii;(UOEy+@9F89o|A(%=I?o& zzb(Xa17UYW?EWBPNZ~42_aVM@QTc32pjUPcBYArItb=g{>KFu*rCdIVGeUd!iB$A9 znD7_AnUNza-;Y+iRfpF-)B7eiOZbMeG8ZvD>|)8QFv8}n)l4yF{OJ;UV_w-3uUi)5 zTUB||(W!6FX1a||lByb?8l#7R7WHqkQ$mgS$xv|JJwj%){fIge7?yC^b(Nhy$+N2o zF`wxhCD5_Bn`h&1n(Wp!ex4r~CcI32zAOgJ(d2+>u!Hlh34OBf0Y5hM^kXrJNgQmlkii?YWT6T= z4=wf7rLQXB_FdY!mUzzb$gll`$1)Ur&j9JLTGStf28iJ1_HY0;E4rcYlEx92SnAi$FFeliKT`#__QLo5jC0ymnijA>w0b#nJAq(q^1KE zWX9u*mNx|c>IeIIh0rf^4o3(GJWPPXY{k_1u8nrR* z7>MbTk5T7M1#6vU24k422GM*xPuncaAg#dPIOE-b3>h#~bFEXYmqRa-rW-{RywFQa zrq5I0hoc8raa+A?FJYw`RHmu565#?at zh43d~=~d!_ik74Yqg{#K5#Cuw6#Qqqx}2&e`axAp z7WRMm(bpSde;ZFN+04_8w10A5cJ9@$`w)v-&NW5X7+$3#fa&S$oBWlUN%&n9P9Q{6 z_o@(n9+IQaF&6ER)|XT>A@3WU@%X-fwVMhHER5giYcaIk;5oxyfPjHKG+;sQdaXeq zOTr^CrKuwr-{+<*AF|-@92^-84WIDBE1?g`Xx%Q zfj@Mgd2lWg5shDBo$kyRZBNV%rKIK@^STBDFX0%$HK>+5iGK7tXUWW#o{(J~Q11Z+ zUOR8oa%<$t--!f{<*I+W#m=MH-k-lWx-E4 z@%x*O?1w@V?^Q_4?dmSvCDNWcn_Py^)BaJzU%Iu)r`mK}YyfA(xdEe>$ zZl1X{jUQ^mrn0O$(kNCKlP6iF52W0xik95JO{k5mTn~kNIuS#p-kM(ptBitoiE7-w ztyv6k|715@VVCbNJY4jEmaz{uw--b0t1YUtd72LG@_6G&bLEZxjG}MiSne-bid+Je z=$ywtrc?{5cLk=U`SHiNJV50og&j}l82|S=w1$bg9QDdzv)Q=a_9G+$2RBpbFr~Vc zCg}q0rrxa@r+^z#8^%=+t~=Jc!5WS#SG|{t9DWz*X+Lml-aNX|80ZW*OpK_0AO}?s zD@zfGqhcF6`bGl8r0dprfwxbbuM3GiHM}0a4z1kRwXIaYs*R++NpHIYe{?VKqaa%e zV{#d?41ZoaJoa5dg|eQTD=iTZXHxF5jXzmF8@ql(TAosTbIP>|Z(cB|JO%f_O_Ua( zz;f#++mWEkm!Hukbb(*;?$8jA)A!B;9QLW@G1))NC1-N1Qo>)l3$PO3?6s=qV>EW- zYfIwa#;;ZYLi~4)a~=j1PO4f)DZC$gHly7D=B>*A_=py34;jAj4ttu`KQ(pAUAvjzfpSn97EDb%EZh`xxM5a*NKVq933G2xE?9U+@|IJ&qT(C z{`z^Cw^mQu>r-k=dlwtp;APZ|H_>F}v!xJ!&m14=&k!f>IK&%}=T;hqDba$Zj6Z*I zIc2T!cBnuuK~g>(N=ZVZJgE^rv;$k6cC{Ep<*aJ!f6%)*gT00P14~0!`c`VBV!A54 zQqmXBZY1-~v%0U_o!lHuA%HCAD7eeP2PrH#sph;>W+OussS%V#THuDHPB%ivTcAF8 znF3(2;LosL*QN1as4`7BdDmVe`|VAEdlOTNgn>$X&|<>HnE!B??bPVv>xUv7*8lv(9j^F)%2r-m3Da|3 zs-PTaO2G(wpUrW6Z|K(EC?TN1Bp(?(vnui=iX7=OG`xFS(!1|+>*-FptL)_vyI{D{ zaR+cC3YEPb2Ar_qJrZrenJeVk3}IH_yY#cSJenT8v98bfgeT@p^413fmmd-3-bb~%LIiV z>Yx{3MGP^kE*@?n=>s;!lumOV_d6vhf!=zNcLrUSFz=O0;@6u1a~SkcDQdem94B!@I> ze660WS$W~fa%cgS?}>i26SJ^%2BD_1zqL?`&0t8hvKj?;DTg(oK8qs4%94I9BIv-m z@8uSJZKeV?kk-p5paU?|_8smwUq+S`c5S3fnm|L)AkrZ|(REBBpU7uEp-R(0slo-Y z(F{^}6qaKp8u7z7QFrhD7*0N&Z~rD9)+e{=6jwqPlp%QNMg+>TxV!EyZUM>u62wrH zlP9C_{fZ2L$Hw#`H|KLPf*h|h6Xf2lkix~v$?Ao1(ESDT?rL>4inn+T3(rl@{a4i5 z9wK0UtdtU&mtHl4HeAyf8*6vr%b$q4`O;=r3g81}^O^y7ZOO|r^al&F2BDPH5%8^e zckF@lL4F1xOsNCX9bGk?CSl8UgRGJdXXu-NN`JZRT#Z)I=?h82ae|W)UU+QBS>Jqk zHG)3X19-8=HB&#!T-z=CoQ-Y6{QVKw#Sc+~5RhJc8&t`rp6z^@5Uqw8$n47L*9kj^ zzAV(1tpmwJoo%ZG`|MMaikw!FAYnrfWb~(>q{A<-6U!1)bMHglX$47z{nH;l=(W8R z?j(2h)TrP;2Wb>D-XFpsu9`Ylyn)enjE(Ibr~?%T*mRsLJ7v`gGC9z{ie^ZqH9_n+ zP)uY&G6W_wT>;eW=Gnla8>+-2U0c4otCWdc@Py~`f?Lq!HC1kwX%nNYTD^jEsTs-77vcM8#p;kGsb2+zLYYa zeGUlVB0mn1VR_{FUCoU|wyq~Q+@^6@pV`@IBT)34jsvs z@XKqcmguvPkDk~2x8dC!5Q4+jf(#a!?8tNLgzAm9iHY)FP}|~z^<;&JSvyhdhQM}m zEuwEtSV;025B&ctwU|Gm|6$jfn?4QZ@X_h#75{<&toqAsKdU&`@n#bceKB{pTOuD8+oAFw2&1ltCt?>CU!Gd%&{zNi^vviuG@u zc;SX7mprcGC}iK&FOtg|4>Kwo=J2)-P+h3U3nTgsjOFu4Q+k=Haxh}0e?qW2Z=DEc zeKGB^Inxgp@C~4*GP^K0*LBOD)5Sl?w$eql(nq73QBF`En*kv&5&-YKbJ85;x}V@z zraT5I0q@aLNx<4RR;NszxJ*$W`!wR1&Lcxm(6dgRX z;yvQ-aDOI1*TZ^)cR;Ah7GLT<02FWN9Gl3>vA70)7@TDl&b*p14qJ%nv>GY^%Cn9w z%nw}AB53mV<)(uO%PiSDZ5J#Fp`kP@UbOPhG;sDvEvW34+wzxUL=3U#5||1N_4Y7i zMRvhwjH@Omy@VbShh78gqvPT#sjj{cb!7|D2x%cgh7x|`54)6nfOD0Cf?jDH%uWK@ z$?~!C)=?NGr)sqms%*Ny1SoxlzMxiY#z1R*hA8$b&F#?O-Fu7P|9h4zgghZT}U8Z2RZ1d zh3aiv5;^^@ze8r=h8$!)h-A5QkvaLAmEv-f%NrlGs1IA2aLoR#4~?{F?ZkxE%Gin+ zFa29|jE9VH)Q8c$7r50bRWS|He(hV&VZh%fboMylpbk`>3H-s63IxPPbB>XTSp#s~ z3IZ4=;!%W3a7ZZ?^%uAHJkvFM=#1S*$4TpTh+6!b+hLQy*KdBf2E zzsPAFOSpsD{y4|YmbCrD+QIRbD`4PdWay=Qb{qLEt|OqH9d9{*=%Fp|k0EwnpBqx{ zDYN(1w=7!lM@5bYJ-}ujf6@Zrhem9Fl>QzRgUz&JXr}?ecOINrxq+{io{Zu+C5cPT zig^q+8$ha|PdQd@cKcYJ{+kyKQ^Yoo%*F0fq((V+>S6JCr)wQ{9T25j(-D` zKjEDjE|Y}J>L@{kkzQHj$nYX4C@KYZ`Pxo#Nu8fZe6O_Nxzrf^>6@!2$~-$IpL01W zyf75BT;|uqtvdJQe&VMWFS2xLm<4Yl^m*tB_5*Fgbx}ZA^JOves7rexyB9YAuJiIDCMu)lK<*WE7tO4Y=_IaX%!RG>2_Rc_@5xc@l5)48+v0=b;7w5ql;x9 zpc^RsLzLX_LdaVL`^4&=<29w_z;oRgfQs-F5ux}Ux8FKXjLEd4Dw*n#Ep0TQV4$_J z`}+dOF72OkeUwCS9DjDU0qFAJk-MdHd3^-kBagJBp@*pH`_ktMMh1haKMIC_&z>y@ zVb%*0p0U&KMO(k|n1$7ow-$12aMAx4D-)=tkLZNz){n_673r5Zzp=lXZraXo#h22f zgFz>`peec9tcMUDxVPlMJ;I=A48OZsV^TMCQi~I;<{&+>MwaH@w{PcrT1YoZgp&Fv zmFY&6z?6kUCjiF;S-@4)$1swJocDDBriK~C>p_FWJ{V8ILwKbXIPgjC?Dq#_JbQ%2 z29Zr*0BtJ=HO5w(1y!qLL+%)BFc*(IJSm;iSLkH>#|T&UV+Xg5-5z>ZgKxO z2Ly1a{U!Jx@px|qYxs62pHA_%l|u3xbIREe;y5hAU&zZSf?Za_<|jLliZlT@~*Mn<0006B zPyhf8Ujd#9C9)D*EoX2awsB|ns06_d=H~UqZv&5`o$QRl4I28KBBB%-d-w*r z`Y4B%Dv*W>Aj%#Ymy9H3de$XuhVl)l)6)U53xp$F@IHZ0rzX90_HSC&!D z2oUAu7-~*AwLh)v09T^Uir|*L5N-U3A>w%EZy@BEGcgtkSJif`n;r%0olptx>Cm?; zF@0JJHz@q2{i3`O0Ehe6w@N&WDlOoh)%s1(${BA2NY*n$%Bjc$lw`nAfPSW;Db)C1 zM#u2o&>Vj{z@0Qze3ejv!%KT5XU(Iei%j=e&io+Wr@J|%t~MbI+393>nxL}cLMi#S zyQ|i9{!qCnsZFoejwWGDv;*eHZ`}E)^?OvI=di+YS}h)_1=dyd2`)e5BXC-IMFg@s3iQlEJV_Lxq}JfSL6GTH9YZY8}S)FR#q5If_3 zurs}~781SMyAX*yevjN|6nCZi{xI#4??L}#)`Rm#pn*BhkMq_3+8T&O4^JtLY~uj3 zq>PHs-RWC7d#syL#CBLBlcL_i>(gZ$rOp_w%Jw}{qz>xyYW~|+jY{Dti9;rqj#z7J z$_GmTd|V<-#N(^qcu({GS}<(@1pQFA(QQM@%~!p=qcToN^&JLj+zVG8F-%C_nGb2o zsph7$0Kgl)o+;X4G;pupp>E^!LFP1J<0XKAn+~056NrsvY0V-P#qM|GT26G}y zKiZ~os3i0@wvMdoe(e}?ojenUTEIrgdJ^C=5EQFsVeo|Exy#Wnb8$|d{`ACfd^v!P z3dWN)+f=EyjRR(=1z6qgtFBRwB|s6`^z?cx10^wN{YaA`m^WYkTezL zQqbF8br(+N7emF)epialIoQ_|MkGqwnd>&t!ms!<$uG{oY&G_fm<=kZQE^j5LvXKQ}uC^^YYIOr6|0)R<>A6AS@3qg8zWAk%gTa>#{mZkktN zN@oX~(bGqOH)k_^wl}y~l1Wm)5a%#_1W#`hvhK&PLxv1c^5DWdN6#k5m;lb9vGO>H z`y|%1wXi>ym=$=vAh}wiF$GXtTP?2Yos3e4eROQs+Bd=9aH#(msk<*nL(~*3!Y5b7 z0)M%Uh~wW~f%MYFgPz(`7i8D`ITc72i{nKRc3tyTiJgVk(?H|f1pf97M z&;S^?qE5o0@uM9@b>t^cEScDd zt80WL!)}(gjx@7qQL}Ny4oXyMCARMYmSDA70Bu^Sr~#4r>PTy9Q0z;b31~>5ND2>H z)EH&Y{i(%KR;888b*N06%V*v2-DY?@QQyc9xhO%?|!n(k;bAa>Ccf7rab)vD2uWVV=^Q>AP zB~nr3clF&TE~qv@^7sB-r0FckN<={PMi8Zqrg{+^z>)-gvmroXu4u}>`L`p;?Zv|W zQ}qvSZ6S941MyKUD?-HL{#J~$nu=niVvpj`m*e`h%yv>u0=&s0Dn#GO&QR3JRqjA| zO@Lk5(=&)`q$x_8nx&~Xy6#HCSTPe;bi0CmHX}w2_#J)PIIoa_W-arj-NIKR*^wL1 zMZRH=C=T-Epk!|FU>@c*xmJ5Au2+$9Tq_5&gZPk%8R~#g&QKDk@@bn9(#5BvJjaCN z5p@0>=U3!SMW0RBlO^Z3jQmpM#J3SSR%~V!0jnp6ve>4-7eZk{kK1EVa@kef0qdXF z+`%&OJZW}gO3C_JQ-tfnk=3^FbT~{C<_3L(H_jYd1qv1WVJ9{0M1hS?;Z05w+@vlM zt8N1?Rh3dGS?PA$W+8!gY9Y%$R|p(|I^PKPrcB1K-m=6`fzcj<^w>T9W@E;n$+Rnv zHO!(+Y2au1`MW@%<#nNYS~&|C*2F7+-wy=kQBS=syCAE>mcJs5KB2~vfZb%{PG*-0 zgWpuG!BR+@($)EGr-ND$kf&^FhCyDOml+{kMMdghq^(U%@Gb5bRhe+pI<#n3&Q_t& zt2cf2u>H#pN|?gbJWGqAt{7hjdWl$WzIY@DByBUuPqYA!`=5%fhlOW?UC$+mMd+n+go8$EhIWR>gZ z$o$`(R)Vi_tvexFo2QGgx%z8AcSH!*&wSVvhSEm?uXr(4-=!&(bU zE2Ay79G80&NuyHH3!ivra&*?QIf~l45~&GYJFQo%tZPX{>CSH%AgAFz9eocRg^SK- z+%+p>PS9K#FDJB8oF5o31p|51v|agMB!*2TH@VbEO-~`ne=AGU_5T*$5N-mjfGZj` zZTM7;6!WobOXBW^$|31Gh|9JjHb2!S#uPFR0IJr6yrY#cD~}>xsu-vfOkH=3oWiAC z1E5=1ki{Qg8WnF>NuQa|umfYENw){@7@=NTRfX04rm%7T?}fDeCXO$o5l;z?n$$|p z1ZwQ2sU;=~O4k~V<~_a=M!rJ8+6FZ7vSJQ_g-&bplQI+0UUAvFIB!td3B@vz)25$_ zU-3pGj8)@Y1cxBa9tFV#?|*s)V|c@~Z|)kVrr#Y#7uV90M=f8Unka!PV&2$~XWR8U zOaK4?0trw601V#&o(d_l5?d{2a38jDXZB`_fY`(sIdB(z2I|1cPul0Tf>25Zio+tTe+LF{ z#jtffQAR{rHJ%8y7a0d9iUuK?=q0*ru~i;mpl&?nfLCe^C`LrI3lI1;Rx5yDP>rZQ zM?Vrmc@)ENlFoPV5^4GKftKn3I{Hxl^6zcQC5Gf~po{M3A)72-*J^Y(<6YMMMx`6s zDV+3gMgHn%LUv`N5~pPs!Y2^(R>&BW#E`)gM66@ugDJp#Krc$LP&Z9Luf$k-X(|na zy@|D>49oYH!A@$wf#{6urXk zbwKOWc%G7z%@%r5gm!yH^SlvKDG)1s1MY>}Yao|1LZ-Qghpig3rP#y72XG4i5niq| zhJxxq$-HCNN9Kv{+K1g_4r{)LXgLB}DgJYMve3-DXAV%E@6huT_pk^#i{SZX90cQ4uVh7AnBB8$#A*p#Wf`Et5xash-BuF2@O@mnDx|fF47s# z4D^=fOQ)7&71xEte$3qIlpKVO-fVgQi%X|S3omwhA*$wQBY`4I1j}`lSnMA zlsbu9v)BQ8q=JD}Vc!)T=$cW;Lt2v_`MSWS0V_#s$&|>ZY+C%Qx$rDP%weYnw0Mb1ceDK66MpeO%W5qK9?*pwrc)raY$i(&2CL}j3>aQd2- zs?_tp+3ssgBZ0no5~S^ujp`A8Ag2MqLSVG3yd20|Iy8`myiKVrFfiTBW`r+;$aJ26 zN(Wdf+o)qs@s0#yyNu4KKkxf+k&Y&T4!oMWkMVd^t(CH`C4;&{9dclBfYG)J6{w>m zn~pbpGD}Z$u=-ZRG|=wh;JsRc^(oe$+wuZ}JaihhuHL^K&{eoo662C&F?9rLPIP7c zKRCnko-HX(lKQ6*hQyhcZMSeOBPTj-UISju`4yr3gY?yN4Cc-~#4=gOp*FFUrw62! zY&*v%9Z8O@d`F;siAWdlP?;@4r}939G&n1|RMz`VT89l1o{2T`V8&>9=EIVMZwU!i z8_@C5S-{v`9I{8zC7LH;ounFU-n$_64vUf6UwYMqedpgR8|Nu+Wk9P&O6HlSJNLCI&o} zGg{Yl-4Qu-0mdsDD}3_kj+)0T>pN7eWMW&0@(DUMz{KJL1Hy1^`Zn)u6N1NWWIg7V zL(R_TX;KuA*huRwghL!w;uN%%L%Qr2xmTZWk&bjWiCI3=8vWNW0&I@Ti8X&)+9%(J z|5Be^m#|*f|W0JSFysP!4bx49g^#|u7T0wGofW6;vU>v{k&IIXLl6`F4CYvbF&hw&j1#=uFaz*$`NKPJYV?C2aH3-h`WZ4k{Az!Iqr#;k)}9w7p!=#T}| z3!hnCE2Sx;yXr>LfrcvU6hbztuc%L1e(u2-Ciri+9bhoiH_ZRFIfb$-vhIo;dEb*T z`)4I>s(ifE%$nRNp+||loyPI3OBfi{pc&)w5h=(Vgx2;W08Yo&Tn z%z~RD;zO6`kzIl97-_@Vg|dw*8&Es=qqa4!q4<|2y5UR2n+@DN0IFmc_W9yXUns_@M5Hd6(R0jR| zc-w#eC`M3CS;euMvR`Iek(S`|u)yKS57|BL;$fxWs8HT?@hK~BuT5izBW4V`elras-)qRrbo?|I-xi%bdF=<2LG$M{=s?PA;~1nua5IsQ{;!&M zGq$>N%v_f#8|-|*b3*t6{F&F2E)xIN3lL=LX_Z?2wpWRzIL7C1y5FOLKa}$GrgBxr zJbMS}iWD;aRI^#(Mj5a(YTVwm08`_p8o3bv?I@ywf5QCf0&qOy|3T=SYf?u-nYGRI zzXnSrD1((0YyMj*efMw%)>aATK?&2_#4t`HsPRb-m$o7Pll0}Cb^^3dvHP>2V)v>8xIj0LO$06GR< zmF-6^mkRR8zAQqsERsUfOxAYz;K8JSQxtR*ksgNq&TyfU1DE%Ux+W02l|>?W;3pD~ zOep-miLKHaAOGXhnhN{dS^FEpe-xP+8}h=NcYac z+c}rOg5Bn1wk)8DGN^N|d!ED>OeDa}pO$h@dP* z0mrFzmdA}Uf`ASPBMZ~pgTqwp$_{T#KF;6d-Cq2{*BdQ8nZHaW1Tx!M_Hs6D`MkN< z5jYMjvxzBtJBG0hYFqqmeqXOGvA(#lRo*h+uRKUm&@VoK5BBJ?WWjjWw(d1JDw$%t zb?x5zmKp;pGo9_h490lULQvst(rAJX$vSrc(2IAFq_4XP(aZq zAZL4j6FN*mZ79^ateP=5hE{$~a>X|Uc)_vHHpINvIM_eypsqo>zxSrJEnwwi;q9Ua zdnK1vyMeVd%Na=0*5OhBw*QQ=V2z8(K0c;Hrs9NiZc4<>OP4}Z`iV|HmLN1;Koz3v zkrzUHk2n7`S(yrUFFk?VKr~NPg|}X!7y_YAN5S{ z3H2Jf)*)+5y_<QN>>kCrdBBl^f}Hbw$hCv%40Kr{xPT6qAyLAeMs#f|qwb9d zO0*a$#j9Xb?EAn8hct)W$67^m!QKZg^mnVUKD#cRY4vqOSYcEWV^l~jD|w-K0H@__ zP`Fl>zaq0a)wS0Vm=VUpg&IwyvZ!q(F+O`&H)yC^{~X3WhM%b|xILquEl+){I`*8m znx61)0Wib@*bJ;zOnJCaSx1-TQhp{ALHEwOB~P%CtriNU`jiq9;CH8+&62mqH#W$~ zfD#@iyP1-HfBHusak2fBXaJy1@x3cn%q6kfB>3tKgy!^$-F{(zJetZGY{#t~Vb6dz zEBj1w(w+Ry77)egRl63U3t%6BIn`tGOHea0#UmL$V+AgeU+$b~R4*Nd#8~An{P=@2 zf3swdAef9}s^1!*Zal~123LC9W~+m>W28q}Lg{x%`{=$=LLS@t&wHa2(&5&hi#Q`00Ie6000G+0iFsivJzV@XK)|1 z{3C!_6B10ii#4?zg#1N-tAEkUKXK*#m@N^+Q~5O+gie7;cKk1<>D9(_PU`Nn@i0>+ zH!!c%%eYZeL#@tOBm~nsWdQx>;vMo=y2nVU@E$5b$GYPXs-|zK>fwb`=Y)hTV3~=-@*X zoxjc)oh*uWi%tU$>$6CzCDqr4SYZ?j`xHgul~FW6nDPh(t?~`JRnao|y`%E#7-rTu zv~)ITPcb>bG>X=dZ31TM2Iz{teAsv~r>4BZ#9&b`J`s7M)VK;4$tVz*WEzb~Aj@Rg z5;}=)hbZZ?pM_2aUlF&I`e+s>73uJ2ZULO-rjf`jEIoJc4rFLAGDf2nb2>1h$Y!Ry zGBCoI3Oz;BVX=w{)qx`QGuTnYJ+HA@^GwWjVLgjw7rhOdQfQ#K=`@=?lh|8|t`AR` z^KInwL+@`RIPDCQUf|vQ@DqQuDl_I=x%r^N1zrMnEtrQ|gFbh}$!ourFQO0}2t{BN+gbNQT*K{SMRik+0PoRXvribdB1m1s}wWH6@*a-pF z@cvTVg)g0oq$v;wRwGJoNC0+Ho~?aiGToa|Pe41zK3Iucj*EM-lQK!HiE5wlpdWCR zVS-C7F|!Ro67e@vAb=46n~%5}s~WEbIcg52wP9rnb?w2-CjmyeR`btk>&3xOaF=qL zF0;+JVN0)MQ>Zxc^9QsF^qGQAtxza$9{Q{rhf2MT5CC|#lB7Gmik$o+ZMqYP3$|Ca z=dR|yX7w50?H9)eiz(}BAv{y$pda>oKqh;Or2jiMf8P+Y*$iYXQ_{QlNMLCB9MBod z3OMu+m$_o?Q!zv1U9K8)i(^u>jgTj`{tgBJt_cL)Vjxp^J)D{*zPS~;^nyJSn3Y>p zVi8jQ{QjHFT(+RAGY$?G6NyTPk0=WXADr+PVoj||_t~B7xLzcd(VeLeZ!&ql<`<73 z=pu%^?38Rc)bIkOWR59lspRyLaA=$fUoAIHt za$u$kwpjo?))jK6(h5|<D2@dpy@uzP&90f zfAyorb17pv2lM3Z{IXIJj6&knb4Ip=R0OwSh{UQ*hC%Wj4O^A`cwQpp2!xZvV#q@@ z1dxtRN<1;^Ct)$1^!w%uQ`=a>R^(U(Y|PHwmGC4n0ediSm|WXLnLLw%cVqS3sumJh z_Vuyc*2Nc+h+m5P41X{6dFt5wX+W~R+yKfdNKka#oX({X_DYdtupQR(t4dHmdasQk zy9IkPyY*+v1seN5rWT}5Uc-|w(JWTwp2ML-w@SS@rR@;~+Fz)LcPadnrdLJX^wPp! z!HuVwwr*>&N_r(rZ}>z(@&{xGBbQIJSF@`Gt^iG5+(G_A^NmF$@ca^`Oon*{+<3EA zmMN>`rZfBJ<*^9oKy>i>t>OQIbwej3-2A^}b8+<^X5NIFxDXO; zorBY<`*$~>+YDo_J^Bdk47rIHvUJeZi?ho1qQXz8sM3~WP$y=Xr?#<-FpcyoY!`ga zB>|=#%=>svyHS{$zpme$Khh~??kBE`!WJwis8KG}pO5A`HMQbWJo406SRl05>lDN7 zbfxJxX8YH=c=xe-lb`?q00Idx000gKL7ECcU<2iO#mC2NDoAkc~6!RXcC1PL}1&&>`Cy{jxU(IW0#i|!OR-C z(m^wjYsMP<1sWVw%x{@CPu0$C;+vOv8TFmDZDcoHltrA{Li&<*J)Uqg%#pyOxD|%d z@9?c^Z-~AZ7zD#y{++Aztw^T~zD@+6>p`|;O5*|pQB#og>1uV&a--9IzZ5Ok$3wB8K5Uzga}qSPczH3WIwq_ zu8FFYcIQY%iwSbo5Ea*J2leMeE_9tp9KC79Xz3}K!+n) zkpFTEb+Vjs0=!*nblk4|huJHhTj3^BPj^K0F=AW_g~iITRNV;HHg5V)Lz7#R@tQIOjP|~WTUov7Y>hSGNc6V z`3omf_txutfA_IX&OjY%fB{^Y+pr4|orzsMrYFX+a;X-Q5bVDrI3G<^(Dw29Qu zuRpBo#rs3Sf-?>#zm1ELb!)BbBuwp%kanf*TL zaPA1ifzg`Gm0Q_xpVx)4CfrHXUMZS2FFrP;K(b;pMc0viqkIIRkZh0*g=lD_yO|k6 z8pIm%<*fAFyy=M~cCMJiHhPz5ae5l~4Gy(n6?N+Xdb?z1`?v^!T}z=$xQf~##ag|K zx9%`l8t`Ct-Z2h>H>fxhNBZ6`W7wq6nJiTvxN4)_*`_2BqWZw+Fqo)zIn28Ge--oWKH?j+Rvjp(K6OEnw}ZC447s@W(Le|Q zI&UeOF+|9FUp6icm+KhZQ;t5tv7ZhGrTiEDdEaYV!4XO(6_&Ve71Hm*dB|7izOSDI zYz6|DIHq>X1O!2MaD~6Y;_$86U?hY3N^-e6kuRGDEpRRh6*0D|*(y-wWgOX^C7ZVB zd9k&d-dfPMtK#BDjs~4vL9iZMEM{QXj)J2%Fa@!aOh2?6dHK$6Q!c@q82AB}?DH^# zuLn-gpw-w(Q!^=wmQA#;f$SQwGcO#QE56gl3Y=fK?R2pVf2*?7Ov?osm;q98pG>fK zVxx=ty3egg5FdE*3rBpVe=-gaIzG@HCk{Y*Bz%G81J8}qxivzN%KWAem+Z7Qk zcfHg{Ke>u;>Iy9x2wATIs7`}e*p;qUA=pP*TYo@Mb;L2~<2ab9_hT08k|%L7=8mU6 zO-_^!@`OQHebi|H!0;bPEM+)OStSQaO(5zxLUS+CqRRg^9BqN^H}01KF3P!rKG8aq z7jhf1@S`!%{&mthWza+@4W;#H2>YmIpZf49WX_V-+*z)%gaJgdZc468y4d>KtW5@* z(mAMoI*KY@z_D^w6Jd4=1JH2a65l(ebZlO-qQA+n<1adTmhjyC57Y2pCxFMEKXk5O zd&Tw(;<$5+OW~YviY>%Ty z30FvV2)cBiGooOuw=(6-cNCBbVp$x0UUl%nOj-IJS=SNjMyf7ppv2HtHSf7t9AVWS zD!_Z;+v{tc{t|AtIZQIXqIC(V!2;KAxDnT(M`VAV#g>>Vxgrv6)MjWRPiW8H)FC5e&|i9jLT@Q0_Z_p~uY zcFBQ_;8sOXD;ghXw7X>wLOh5v60bsLF>gp20c&=vY8{nPS0D7CEbzm%kw;%=^ZYO) z;+ z(|J>=(RRe~X*&%V7Jxbp8fgQADZklJ7Ho5Dg#lW=Tp*8V-(&^#yK@9y*H!FHCk;M| zu&5tcWzsZ5NBuu~ki^vypC=q&Cerm#Pf``Z>o=(+G-vo1^|?_;SK1wn3;|O!P(PP4 z)buF4vnW{Xu8^(5NeG4ee)Vu{gYlZn$qlpChf<5>IJOe@{@o-t&_>LrUtw|mU5>5^ zN;AK&Ikp_9buuJNmx_Al&M~QekLqvQqA$J7X(UNkH+md>(AGUdW0tZ{jUjF%o^&4J zWl_mH0V>%8723i>O^z!vgEhK+gGw$r_{->Y3!T#tmNerl=d1cikbtOpe497LhyhYX z5#tD_ZG3ONeWwk8(j`iGm8DZBn*cYqjN=C`U0VqM)VFjiKn?j^K1p zwo!6!IZ2?4qSg;Nc+C@?oRVq^5wIU8jwnPC$q}PbS_I<{TTOp_HSc;r(+s}a3lO6l2jDfzb8QTrTK zCm1sz9=fyA4A@e{eGZ^WZFQFE+?$j?ilw3hysX(Y#zTd(lBWpgs89dgh(n6UlXG%Q>Q5cw$rnvvW`ba21gSLkVpXseU-v*WEqz;v@oM+%gJtHs$jUYGD}$2BSnizfb`}a zL7{7n?q8B?J0EN1VCunku(U6Y8_%!vy7zGY%NNd~DQEXdsoazQowe|LF#bL!JCM(% z<#D%yX75}HUWNgX4S>`*0J1Q&a&^@Q@SC1nJI9AIv~CgoEX-p;lN!Rlxdvf?CuY@i zqg1fM11P4`^P&PV(kfa^N8RtLB?MP$NdCXJn$Fv_Jp=00Ie60007d0iFysvJzVkIyKbxNQG-b zPRd10>Dc29$;--y?J!mk8;TC%RXL|h83J0Nfa&Ro4aG*@HO>wDj}37qLS!7VIXFD8wp_YA0^dQ9#`hh$f_;%&9 z7|^gA<%9nu^x0Spbg9XMU@SYMI>VSS#Wt8TCj+L|oajY=v+aiXx~!MLFF+F)Q5Gr; zrcqiwsfAGib9GGv(*xm|(=tVV3HrA>q+|XnR_9^l;xArROyoH~&x4 z{SdONYnN0`&cY-wpEylXrlpNN-<_b+M-_t4cdrE=t@*4--pG+65k@LocrEReZh1l6sNNA$Vv@G=Jp%i}Y226-=+jtg`fF zZvR0X+u=edq!SyUuo_(n8$`SQFXBv+rqn;QtDoE$RH9kJ8CkS>K;ef?;2g2YECA(r zyDdQrQ@dq=&gVvbX*C_V+n7?;9*9$*v3d_iTAAFhb&vVkwW$IyplFodk}v=O00Ie6 z0006K0iFywvJzVkB|HfSOw_~Yjf4q^$KZ^l;{Z^ZWV#Z@T!+^|QP5+Zq#}#W@_Acj zTZGAyeqnDPx(uu5g<#$dw>65rA8V}qAiA+SA&rst-dVFN090-;BAB!_i}EN~JP>i3 z(>OQs!Ql}>mAv5|pIi%l%o@eZIk3+0_pP#3VOiJ&V!lJlpneWhtMSne7dNKkZJ6Qt zLr6#U5Icu97mPgh%(R<=0*OrSPN?Mleax&{ERTw?0CTW}Nz!DiR7B&Xgy09q0Ug_B zx1qHPLG9aZxkH|AH0;lonp4qz`$&uQ5C~Z~cr_#5#BiD;I=q-v}6uUVmNnPwbeUB7PAIrZ-p>lO*hg`x`$|vfx;k zGVd3V=k2?miUH*i5J#00ZG8YDHv;-~xnpHSgqi=J!G>)!{~l|1t?_JTeL*a@r+IW9 zo^Zul-rF>**;a(>FlB2I@i75w%iPs;4i+GrrDPSM2#GCCZE)4tF+;?0ywv9h0yCVFMBBs?K(!%<-VO$cHG)M?mA zTv*``0%hIu^#!@w~(Wh|LACg9XM zYIMuiy>0LHJL%f&O0vT?3{y%ZUo`T#5V0006BFaQ7yK|z`fP+$wU0so>Tbg<1&iVqcgGjvv|4}ws`=qHsm z)2RG=5-?@tdg|G%9jJ9h=3qe5k;Jb`8@x%?<0eS*IUoCf;S#<@3Awa`K#^%`1lPKi zgk~FxsrUO{nCKHm+oHTe&M@K=Z%&FKHM;bFgB+OEBKW)ai4im2r6H#1!71g0y=PQs z1Q;tuTfB0eKW5MfS*v2ud_R!0<48olA6f1c2NW2zi0Y3187?v#{0Qh=^7LRkzX%h2 z8>ux$PXm(lMh)`T>Ub6kGH^4&Bd$nn0xx7jhBINU3D{QL=ROQd%Tel7ZrA7<1-D~e zTYsr)!Y7#iKD=;I!vwP(E9gEbK(6WK4V<9(LR@Hr5&!u*HdK^P-fd73a=XU1SPK0X z@G(q?+kk0qf9X-7c-cYWfKi)o!1cMY)aBlvj|h*orWJAP!|jGA@kq;<44qoH|B$nF z*z8;LU%CuIF`PI*YH0*yVfrpXNx_)=Tg6MLM?8K#F|Cj>MsXMT?2Fi)p)TJrP7wa5 zY@_!b!$OZaYP)!g_tE9WpBC)%=jsx3e3bpRO1(zY`!FB_zaOoPms-cGWVCg#x=WCn z2k;9Ll(1s^Z{(B~NgDC2mn-9>UOMq!yTLS7H0G{1P?pR*5dV^d*RdRkax`CViG=*k`TFIE ztze~u{urAf&~n_4uE%Jb_&3s6$==k>jaovPNaE$=$AS-D|9r$=MRB)?U(Wxto zYuU^e#r&6c8x>o#QQl*l-JVL!pe8eUwrh_A z`m)rI3-FT6E`;zDs|QSr={GC-Gdf+mm3&z_rG7aAE&-0n(7l6QpB~zmL{4HIAk~hB z;!WD?XcP16<=RY-59~sL>xxs{N^L}4)uHbCGdP*QKp&MjrJG2W{21lppE5lwkmPPG z))!HyaGq@ZvvVc4?a!9H>KF&2tpUk3T!bm~TmWE2DQDm2td767AidZY1HKD0b1B6gD`{63q69D{fAdFU}52MN87#nhNLrwN^?k4AIun_ zgtSz}`UHnk%VDz}^px=*$8}8sdWHcTpaHoGF}Glb6Sfw}*uqx?u6JeJOSdjs z85JyD8mQ}1T;oBB>9yvV(YvkfKcmy1?xw$Q8{{-kajZf^UoTbryAWxS9miRBr43f8 zH4Yq!s%Y58 zO6Lpp$8XNQduKvW9I_muc=qtzi>96^>6aHOm`RUf`y>wN41x=qMRkb8yMvTE?069b zF)s)RMDWlPQCjl~5uraiR@%C9FXgb6=Z!z_uwoQw=DA{JX_CWhBeaQD~sHpb&Iag*Vc;=3s&wy7& zVcf{cM}jcr{U}o#f7?n_M?&YXda&h4&Ej)v*H$Ya%*Bt`5q#p_`hv(3}Y@CS% zwV?=(fBykR06Rsj-fJpwE=5?>zlR#gcP*vTQE}C{L7b9R^;Xx*K5(dgf?O14H3Her zh^0(l`_8i~@>wzQ4}~xIwcL30fgg5owaNJv$^YE0TU^7l1mdf1`(XLzd}BsnSk5@> zGsVBU59aT`{%o$wPEo?Shm2xCVfIib6b>zEnue86B#7aaAJTECV~E_^di7e}^<8+5 zuLVZHr&~S+5;o`g7KY-auQN&*|F<8y2j}0YaQPrzjKup;m~yRIypC{b%#gDba5)%B0M19k zY@3j9gu>6A=oJP~1u&)ABfs*^j6Zx_e{r9FnhD9xsF*x0wO zEcbFf;$wz8YiDfv>1CP-ot3LBG>#N}m8^jH=Zw1jC!R7qj_D*s7O=a{i$l^bv(6k2 zK$E=AQg#uKpFs_L7U z#iFOh<4UY>SR6cXWgE}LToD0ElL}~plx9(~1OKVSsM>JfojShTd0qMc#j;>-T^#Uy zw1153uEWjO3?wGZ3i{_}&TzCy&CX?S?}B&$OW|M(!1oh$t&){u@Hw5;NG?>>8=9ah zbVKZra%qe_jR|&_sm&&OG~vXBNB87hTKU_D=cE09-127ohmW!8}C7$Lk=Mb{W}duvYpcru&?K#cAW&SLL&Ev5$5nw z%w14wQf7I~DqN>HfUplOw`8u|w!Nyw{wuX|9iM?)Q_Z)^|yisLs*7L^+K z8@8s?@3`jz{}b9S{n``S0^?>5DAANDi90ECme^2NcN}8j2fJ=ej?P3o7ob+GqaafhV?9yK!)R22YhGf8#WW>>#k%I3wUXF)}BMC`AwT7a(M>#s-&<6MIK1WH)v>cJTMvwU(RfqVo}@_o)9>33dd@E76@m#(d50 zo5yM~Zy1(0fYQ6QM7a_{ER%aa*$PdM42-dyS;*4G{dh}x!1SFLpu%qEvD4o4d26dq zZqXL+Cxd@({LSsoFW(-Gttqz6k+5Hd!z&=tRURqLvgLdNH!U<1gFnGeM7DX&Wb#!5 zb(GyPoE=tY=-m#Jp$(c+UCOI?WT>9C&53yQb|q`>jpQFoFfR!JxfaB|7|)NS|5*M6djPG9Jwe_=@!nH4#^IL$(y?hUG_EaBzDwL~& zrJL`prbz$*00Ie60001g0iF&; zvJzVkMS7ZTtZ9y}hgYKITe~VF?o8UCOtG{>A7RpzY+yBmD zxlpf0H^n^wZuzuI>2Q4xOe^saavS0#o|En@VYY~%@Dc4cfPBCq8dW8h7{^13fl_5^kf=fgA!Dro#!;MdEuRvvcjY2& z3GmPC61bsK5JLF?zJw+1f+R^B$)#&-Aa^yfo})Gra$Kaja$5A2^-U^7!EB^Nh)~Vs z;4@NUQ%e@!m<$P7u1*yN1q;$eF|a$M_2=jX8dVHHNOV1hxw794LUDpOjw^v@T=gCE z+)mA}hW2Eq`1h(qXTnrFhCMv&mC3BCI%P?(Een*2cBB$3@W7jLSRe`q8!ZwjB!ECl zfye=NI3zf@4kv1NdpqyKxyZ00x=QxjySy{38#l2sj7yC^ zh00JT`4soT4T{zm$g#;w+L^7RL~JPRtzKAc;{F7yP{ELWLLd*DnnEdDbD}O~ggKds zO2YtJ+Y|+`TOA<#&>FMQUrHBS=2)2Z_8}Ti&;$Sg0+P#2WgtbNrB!CQ&2lO%yezUp z_%1M{jcdYW$(D1SZlVZLDWj{JWje})iX9gap`xX50!YUQDN?bX_ub}{w(O`!Zeht+ z2&-KYW2EAC(*{(dlclN$Bv)%lQdI0mTV`%&RFR4W=(fdI!m9!s+S8PFLGId$Wa_LB zhww()Td=S7oc4N~vGev@Iecl)6`7P$Qj9g?;MrVvnzvaQc7mcXj3_<+EmiiMy?2}h zDnLrDsHg!*g@rQ^WRwU592`@{CTNI3X#sb@eb6K;bKz@7EhR<0j<-{{$o_ie5k*ig zb*#%D#TKH*D^w)NAUNnrD-Nj?sk&=bD=Y|72B3E>(DGKtHT_)*)R>Bjc#}=ShLMb) zOR|N$1Wt{gDd##?>Le78jVvdmx0z21g&CW8JW~3?`HzX?EY|5|Os%9) zY)a$iV&&6t$aJM~jo3^C21(<)xB{AsY%A zp}MFRRI3d{90Nd$N)m~}jV6O)<#1#6?Cni#%@!5(w)K$?(XK%4^3^;IN4mf3ESI$f z!sjKKLG9>EK`=Nk@aRX)h!62UJ-`f)Mfj`;y`Nd%^WdO$O&^?*;hh0X39;stMqF0= z4vu88R`5rAr=!Cz-^ugJxFp+N>_RfqwPV%K74&Cv#V$)Vgrb!spD(jSBcR7dMoK4i z;EIyNM~I0cz%yzp$XH&Q8iAcwS0&Ne^W)D;xB^U!P6t$0_BR+xlv0hq+>qT{Zsgyw zhj+Ps~Mv1bKfg||SVnaeqi34sCV>lg=ez9AY_ z4U(9~Ly*NNM&)Q?_h5u9Lspi#MC6hqAB(f&e{ZQj{2(%Yc+R%)QFsj@5Q>C1Fp~J)F*!p02v%1KN0648dUwkmZ3q4 zfB@R;gsTG3wt*dgCdMELdL~y1I;fr7Fpwd#R6@e?2LCF?g($m@BI5Ua5wlPBzXR1B z`yFzyoEphw-_6chweb2)Mrazd)xs-bP-+A_l2+v;<7BdB;pD!0JS!`6z1rU?q}b2| zMidAuy>6RO7?z^52CYzLb8GJyNmI|Gu};f4mC`4%OsO-b@;@D8?M6xXO^QzRkyyoi z9d#+!#S2Q>r&o&pop>R=8DC}C*WWo8cI#|hV>cA93LebxiFj=95Kn-iKo|&_4rl`i zpa3moIDnMV6*>U&G%)d~XL#@~!(u{Jf<+yp>IinN)~6GJ?|oDRa5Sy(Ki}BHtMY~7 zCwVgc++jJxS<5LqOKV2jNn3x##ZSP>>oxP&%Q<^IY+atwLMvowJAbx^1!QflrN*r) zlM~S)8dVLJmdQd34eDvUN`>X#MQDMbT!5_iKayRM4V}l(6R>zCjwk30Umf)Q1j#8~ zw2j)AeFXKlbM%?pe1O}g^u8G|PTwj|%rOKv+mkRTp!jC!6*+fs!v3j*YmXJ@4g--J`=o@ign1PQzM*YvZ%KUsGV*KAQToz%v2D>KvkMx0tJHZ z;(>6BY&Z2)ZLnvBYDON`rv(8*wYBh=#SE;V>i~p6d%s{qI^e~`1cVkrJ7J;RVJIb< z6$E04?&-$jTqZ1W>!)KHpq(b=O1Yplcc$dHsi!$b#ua%esG)np9H~fioURH8@}ufF z2cPepq%r1)%}1F@>WMM}OTHl*RQ$nteE#?Y3mtw)lgbp(-sADykwLw*&zQ1Q39b zcq~1t%vQJofkB%R(IC3G!&r#&!7D(ip)j$m?qD#p<_88OZh~SJXo*3by(~uKsn^zn$QpvXA-!|91`(i`S*e9pW#1BY70)iH` z1$;j3$27%USonOpjRu#Ume%3lJ(y7{LQV!oJ!V!h7#4vXbp%059~}`i@Al}z3BVO9 zM4AwRR4Rc`s~1rPxGmE-{&-9QyN@2aj`DC<5>Kdx3y@~jiaF2=LqEwUASM8&_2E~F z9Ja{uGDo76zKaibq+I`E(x69eWxGdCXzovL80PN0@Hdkbp+mEXu>WojP?_=k^Ysk? zKY-Ho!5A`;SP#1g}#rA9w@%AsSEr|9_Bzj@pzXfLydt3xQw?0@?|5 z`TQLKhEoi-Pm;kK$q69skj$^7hf69jd5Q8=fbp9Iui^$s-!};8QX}de;swsk5H0K{ z;a0|eem;ZK-a33IrVm8gu_cr@s64K)O6*m7RWVB)3MP~ZBX$%AYO5AD2PtYI)yhJ} zEc|dj5k5OvakjscH|X`NHG+H*c=*n!=DzVFylG@~E?iujgqgqa<-*xL&xXhl% ziUUkXWiQuQYq6$TrYhiAb{%aiOx3hoyShrJR~4PJoYBEXw7){ow0`x8Ei{(!u$f~2 z7Khkd2F5&sIw3SQo{3x2tz2GkJRuqt4Y`DeBcTXlFaQ9I&@4(!t^|LXWjc`7#S&`C zoN7v8I7t_TxCKo=LEX^n%*@G}Tf81z1%Yla>M=TuT?0H+2BuzZv-$KJLR;5C;l;^Z z&cUqWbCh&6#273Pi@bVmxao{%YcFY`N_>bh_TL0XQNy}Jb3_Z^a#}xcb5*JgezF=` zlEl>N_()ZL#rkJOWTN^M6DNGlcR{#^FgH-3EeprHEYM3fe2HH8LI5y6lnM|O70`+! zph(CN009eAc=Ld?5uBFcQq)%~S{N!7|G&YgDqJ^*M+FlWqv*=%BarSRubAPDR$+ zkfl(2kanqaZR;c7WhVHy-naf8^cAT84lz0dbe+H7Q&neQAsSUBy^uvwijm!=NiCO9 zfFN0IU=`l;tU4Vr_6+BAj70|LSDmLM)AWmpRm7ewD#np|bP_4NTh_=eZW`emCYb74 z$Zq`Z3a!4OFX~XV+{U|s$v{~QUZ^*Ef;j5Qp{=0jn1(-nZ4H0BqFL^ z;AOnrsY3g6&JmfWU3s@PqH*B0z~o3{%cx&DbKU&SJrYTn{s%T4H`4r%L zO4r_;+m@6%5B@N2hg$a-=j1hZ%dP0L&l>WzEZ+{Iv#CH#gplhY8Wk162*XDR%8K6x zT~T_?0>s6L=o}qCP)e7JwCfY|ZgxHp!`j)Z7O5C%sQBo~%4Xz666rg}$ct+}xYSLs zRFC7H>1-lt8CcDWE_sV;urPgb9aPP-O#T6xrzV+(`=onyfp|7X{j!Rr1lVcv>;4Z+ z#c~-RZi>T@(k(_9FAT=pP6y^S$ZL7VuYxmy@a(>vXLun;8V2&u#%r z$u!-4esq3OQR=E8F%z5ArEU(~dvWvjiPM5f2*@d_cOwwn5)jyw-ys?l^`el9G?77j z%ITFsu5=h(~d-W03nRByY<&hdCv1tletG-tI9kw zMN}w6FNxi26CPt0riAlXCo7^1l(x@}&}5Tui=oe#Rn9DHHuJ30>CKd3v3=S1Z*2^5 zEr)C1X=lq;&jup6qivmcMb~VGh8tI@`Y&fXn+nbh&8xH$%4H`%xN!NtKPj+-%du)o zlPCd#hAwCYWppG3B1by_AaEA5j(P%UvPx6e*5obs0*R5!YhwQ`w5oPQJZ?t_4eT_) zt*`lv>^jo5-{kN^>(xI?KMgawheh=Fjz0r{Mp-eIw0e1&uVc)n9~Iw)bE6~GW+p`| z+agLY9QScWg>~3+VjS!1gjp{Vx{wiC^{0vI!jBm$1u*_vutsJI+H!yc-XR)JhyVZp z0%p+$V&VsDJzYY~J)FCm zVO99ECSPg*FlxT;AaL726?R$xX6j{Jr3QDZ5rFdiyFnMA3^lH_cig%yVOC|76$DWC zNWa%%;|Gsl`y{|E~Yn zT{7cz0B<*XRBTP{n)v46#@CNkYVUaxDU|Y7HLQ#?DjKygq&7*Al8^zjG=N7umfSvl z^_#$m0h_cP{zFR>>aLI%0hvzKuNQiUX_BGaM+Edy>EHJ#!)wC^yQM)&!(>aP+upj8+f>t_q?*wxGzll0q#l?h zOLaxLX`vO85RNo}!ANc@fC~*RrHhucGK3e$H-y2>_I|*@mk|4Me0h*DE%7k`+Q`jq zJ~4-yF!g5s^2@vpVcz}t9Wlb(luteK{+}XOk-V)Zgm}=TNneuVs|b52s2YpC!TCxX zkL0g?RBVWhJ?~ah>Nq4TeE~ca6e%u>0M=a&1?WB@Oxa7>q|9};W3IIob+D8ab#dFf z3*z0ZfSu%*Wj;oqsr8kx;3aRr6h7pWS--AOQSM$c4~^gI+dlE ztb=tsFX~u`vU(L4fB{DPE?~(suTcW{K4jq&WRUs0<0#|tei|VA%nwZ~wuyNhb>G<@`YBmrcQxmXq0g8Ji)O^M= zr#GYI7IpFC2A2zmAGNlP=9YyJR6D3q-&!BqNd^%Avlj2w9p{{!&+zFLAPc7Jgo6%Cv#<=#(r?wM#T^1ax2PfV9b@NLo+Q*B;&yNWgWjm1CZ6Cd*oLRrN>QwO>fb&{D^BZML2Pio(#!?@TAE zgBQZ!u|Grpr}?>PR;6k6VF!M`d_STYnO0L1@|3hB*)^DX2OT-1)b!iJfu=H23g2+| zb|s^0$2{=rUpAF~rx)wL>Co(J!7osZRO6Gi+oP_i2O$~M{g#r*M-bMgOru}{Rsf0z z&ew8gtD2z&F|KaHKM2I%Ys80(d&9iw;&cT`Q_ZHoV7uFPBQ0fCWl`Hy5x{_jB_%IQ zBMcPmKqldA4>{z;-+<9Fq8=}3>w3INWtF#R|Ag^Jy!2qkU=jCB$+;A&O1pe5YSUk9 z5+jWii$?R3Hz1g9cb5X$tP}GfTyqyC73Y{J6>Ht2b%frN72HRf%_?`T?}buqD!$VU zR)#ie_#?NqN)v)AD!5KXK?u+w8&(4r0T@aw8%d8Q-u;KLctpQlbK4i|?d>?^J^0*% zI;x1t5nw5;M!K@AkpADoeo%79=rQk4cm)=$d4uG&ysU1+ApbAV!*ThB1n2br`5X?D zY)<87Gu7T>G9ae6pLLWv@EH|LxQZM6I=vH;taY#ET4iBXXe zB?`>I3ISp+LhcP?B)4g)8#)t;q~Ka1eLI|gX4|;Cnt6XNyq~aoK9ghVWt}}Hl{?Xr zWJsvbJE4R?3}RPCT*0ZW^1cDhKLibTxVW0yroe|_Ff3lN>*Ut!Gi}dJw5l9cZ5RZ- z)|H$bg4SauWUW*4x6`_JXEvnHbku^gvO%hRoD`K)%5KB1emctg>%C{1npG;uY&BY^ zT!jWP-=ujP*0C_9&^ijs(ZX~C22(&#hEO69lFFQ8V4zXJEs3iRNV~~{L*x3oAR=|R zGq1Bj%MA;vLM*wmlc-xtEN7H~vf(ReIUXswagKeN6_~#Jwx>LpH2cS{6$<7op4g z5=vJ%*{Ui_N-RNf&YFHO3MscJ2^-;pHl~v0SRK&OK?yoFvov{{l^0mBHI?u<%ydXz zSfG-@V_usgk4paeN+j>*Cpxx?J$Zt~%yeB_#}>!}a0NzGiU34q5g7yA4K@SH&=+z&4Cm#VehtkZx_(Z}JP_Dj z)yFqZ_1V$?=l@S8GPKnX_SRTRu12qsj7^E=nhnjttfrr2?Qo8@+>~z0pF`*lu zsAY3`@WQ+n(Yav2>k~FcD(@@vw!_Ki#;YpFFA7!HrP{(EskWWtdz|z-#)*K)m=ZVktCBW@ZUdqAstW) zCH`mI9e~*&V&1qXz;HETtOS7~2~z+OfCjwM=4k-&v5436t4BH`&)4k$`uFx=CgZyb zwdQ#Q?X{<=P{mvQ=eLQf)QoLl-GBi+(7el*a_r)&#j7SsiQ5?sqQ#n8k7K z^EcX$dZ2DRbm#HAM&5?-d4Dk7$|3U^hGpj+&Bh5fpRBwF-@Pn0J4 z5p&WY*;?BQY2$e|@xo?iEJO)tKEx$_Cu4GH0#(UK>25@zmw7^Ao|jMv?hkh^bMLBA zi2upR%v$@{-*og2KOU+tT00soK(LosBhKw?j)2784WE-9Lnz5k(Z}!~pmdP!%|Lf{ zABW6oN3j}NV1eYd2c0W`U%Ai7kp+955&b;MO0Z<8=qx^tU!xYRF4m~>pHQx|TE?qz z1D!Zb+TYu&ER*j!B*4LV7l~7*v{-}E>isa^(ZBaUwCbVr7wx}vy7iFnBme2)i{N#Y zh_leP^MR{?`N_>|)giGBB;%;GzI&gTYiebySE(If8Rr*n^_N%E4SMB@yge4u^8u9xvqal1IUwuji18TK)<5aU;g+}^ z+K-hlhsi;X)!Y2eBy%`7nSbz#6F0x(Xn}XFrTu`J-9A+5KnA4jQ*+PCi_czmqZd2a zcwqIUKp0Q=|K&r39Z6+eFb@==*|(=xHR2F4(8Cwf-?GXaA2w_yH6cypNV^Oz8+Btt zusQAP$nl%YR;4P3XJ_pv0N905hBm0%kV3C_Ha<$(t#SMSv{sF2rN7z>0eZoTg^N;r z_J4DnC>=R?eLgUS-p1DVSBnQHB~Vk(RXdFh_!NeGP|PM@{wA4#daiXe;W~i7y^7y5 zb+=|d#&yN08Px7#G8H?@;Hl5^lA;)?pE#r5NJ=uoPnA@O`dJJG+j{nUVmsPIFbP1R z9*;S}Qn@tWriQmH08Cvf1FDX9tlPJSFN|{J@!NHaIMrw^2sP;3Y(N(g$5{BAAqt@- z=5T8vfLcTet4v?ig796=$k3puQ>7X8UrJ)$*M8J4Ch5h@3iL*GdPGfM{~fGkj<7(e z3^*TA1Iri5OG(s@Hkk}wJx_f?;|x)ytyA_S`~iPi&U;=N7FYu+000022~Yq41IPiM z4o$KWTMifkK$=T-9~3;z~bXYCO`tl+;Z zpFFJ7?gO1?E*<7g(rsRvi>`*k($lAm@lrg>oEacOKa;g=M7_NzG2GCv$(=-b6|mb> z(w5xG*@Oxk2U?_Or>FCh3QuSM?M_mBV%x`F6;{jih6l>IGm&>Lq(H16&RtGuQr9SJNJKFhoy=gRRTGU6X|`^ z&bt^yQ^b0{fJVIhADti7uboC&j~IiD0sLVDb5Pj+>`8wZb>0|0M$P87Va|CWFnm8mgUAV&t7XQ zh(o-n_aETLu^B~^dqT22z>s=37V#G3r<_O8M#AidN(%m`?D>N%<>(Sdn!>cd`ObxH zMChv}*$R$m;y?Pd#lCsq&)Wi)1n+bD22mTk8z|`-y9FQ(o|631=?wznzR`l~Wpu@C zpt&_KrhQJ}E}8;LuM$XR-^T{V`8^Th{rcKrD|a3%m+`N;eUb>^hs7^=oAuVfd4HH?$Y0cNZsuX^#w~ zreIg<`7i!XtZR@@7e8>l&Z}yo$M5J#X^<9ETEN0gW}??V`H8zEIit-OTYhC2+y*b+ zPkkWMia^MQG~abX?YRfx2g>6l@lpV&QDrgWb||vz&U)&EPrrD&aZ7Qn1IbmRydoJP6m@FS6M(=LJ zaowPAR%VX6Z?8AxDCk!c4lLWru#x&6bCH|n_`q7#p`#!<*_UJL=`Ur9@->AYMhJBQ zO<`6kqg2z%C6d()^xHo|Xv3C^LZ8vGzb%U{GyUbqu$?$=q3W5w#WpnPu$1e!Y%C9EB$ z8zsScqebi>g?W?)3C5lfDq>On7Twz0-sIl+>#yJ#AT!jbq#(b2cq-l|F0!69015_e zQStrHaia($(Iy%nOod`x1Fc*%Y`~~18SIJ zP1UT4?%V0vzQ|@52~o;Qy()x1dnwCUsf?%wqdY4BWSOL&Q5Lo%MH3nGazJ~WL@!ri zJxsgfuMmtDKQlKRcn)yAwDe4e9H(n86x3$%i{18PwMP{KfMKp(m=GOBGOh%aRrSGg z$NHs|5~W7#Nl;u??vysUXo=i<>~|A{(%97F$&bLv1{qt{ppesh-BgFr?rCr3T=MFQ z!LQhutH|?=x=Hg4VDeWD4j&T}^Imdk{IepgSPnl8g9>ax zWW+EFk<^w%8N=tY#@Amv(+!EgI%zV@tNRfx{In23CYNX&sSF`bIWrv$5j3yesnd$F zsGEYj7|!gaN@A8ydS*WbZ|Hl2b?GDt}Q%RyI(Is#cR2 zN9MdH7J|fKxC{fP;(*_Rg2_oWP-SakxZDNWWm9DVF9qb2d>1I*-Rk(AMqy7QjBf3t zqrlGud9m-b!iA%nu}>ubfBs};K6my)SJvh5#{*$5@C=Ux4AkV_f`bGnY(yx|;Q43p zdkQ9<@IK+C*CkCGTGf*!Z&4pXo+@Y;L_FoL_=H^@A7*)KQQrOQ`3PZ14KRl%MHQ$8 z%95TcJDSn~LQsVG6eJZH`pi{&aI>kIlE{22Q27?>k8wQ-DLlM6u;V9G;i#!R0rwZS zo`#{f@6A4p$WFi{L+dHOin^o%wATL*Z&ZkzwMgwffy5bZ(r7fG%jRita zsa_o~fPkd@l{8#6s7Rb{8a;;!-K_$LhM9`-kVaIZ3JDFPcSc+&a<@O-qs+@LHMsTW zwS%TIWO%wp4>A!PGqTl5JIzM-iDv`6r7MW|#zS&h3*=O{O9G*M$J@~@q#X~HtEv~1 zKw+WnkTmW5m8?=c8jvd3ayqA@8e?yN`*{cBg>5-8Ejd6npz(EddLU`Wy=VW6*cR5Y zGWisk3~D=}^Z+$@_~4Fpa`en#Kx^AKXR6v|y`avcH431ny3~ptw`TccC+3ZWi#2rN zQa8SMDOv4v36)M7{f;dT-J$!3j(`q^F|t7f{Jp_9)qZs+q5M`v4Mdj4es%OUMh^wm zsP7vL^pRg&8*cg-w*J_RlbmrLuj#UeRpBT5;?(rk4l^s7#ZRzY$)z>}hZe}Pp+m;_ z1J< z5X(6pY@4+|t!lN}j(*Zbg&l9`ol1ioG);!E^*@k9?r?*D1xd$9G}JEV`3^}>Nh{uc zFo(^UwPXd(Sku<*D)GY>u|+IMntD6i)OewCwS@b!(n{Z&fhS70<>B#0m!kiRo~*ie z6|w!sJ{#H2jGO~!8gj5VJq1ttC_6#9<9os0;gCz84?pg8c~?GPLrdv8JCw+6Gdx}5 z1RaYKr7n>q-x*K<0006BPyhe{gaMuqRk9LW000930xJmNfp6s{V2OK+Pab*e@fte? z65UkP@I9_DOc9tYW>&6EhUu48YEOKm*(UBuBud zJNgMEYtlS3W8?;;D&#eo_-G8ZurcQn;qQOaJ&-4(^=GnY+;pdJ*uBZrfUxpprx)Qox^0E1i)i31bA(y`($+b# zS~H|lR_SJI`~;*#stl2WiAom90>qaVJ)w!xJ_1upn7^Yi#h9nPs8f|83Zw)L()Mw) z1cbU{xL{#=)$Cjx{AuS*Jk^^t=Yo`@)8P)Tt!ybD@2iCiG*A0)+0$cB4}pjodaZl7 zz7e@k-=A6g+1L*^SpXv=?^_a|^u*ycUDFWmv+9IDP$0t+m)cIQ1XMH(gy>~Evy22DJ;u=Xlh)uB~7etcBcW&}3iBTqb2BpbzA1O_>5&kqHqvVp)X0w0zWcZ zC2jtI&e~X|@X;aPF2)Z+LZQu^eXU);iNw9_^O3U#*x|?b#g@pAT-PC}&Tn-Y`qWiU zm?nmQjMD`VFuz$y@03rJrs+kjpQ$+aiPjgd$1a|UJfrX{1=bdT zq;wu4&=WfMTsu!63VoDmWVjUzlN|r!74@l=)1ad({j6K#rVR!cOJqE#v}cdm5SYy5 zzr=J!P7J@GDOB06ro2>hxv5eRziSs=gL8#n0Lmsl{m9VlLRHp9o@?epA)S}j4x(6$ z3&DxF0>ub0YZvA5N30-B_CU3d=^;`^moL7^^J7&?7<_txFu;?;VVYst<&$s|8eucqEdFDXPejermT|(!sraYy8KL$zBvS@%hb&wCAg>8Jx9?zLfa)n z4Y;r13p7VZo_`}ut6&`(Q}mG`HzSOapuGN{hkAMCaZ*q3;g}?~>SSC7K&Z4|dtf8F z$w@>2Y@^|_Enbgc5vQF9b7z-U6nZY`6#f!Za8rjothmSn@^f% zUo>w||5E*Imfpu1OIUQ`x*ZwL>16euqk<42#4NTJato38Kp^0aF@lylg0|ty!|);- zhpmx*38;37CnLsCOH5{>YWB8Vmiv$%M^L0I`N9P>ZqW9^R}JXH^Sx$jmKu5T zW&#rTzzbkbUFJ&!@Z$xx%k&0_3qkx>ERkY}+YJ#M%4q-4it>7A-yaQ()$)VWp(y^Q zVO4$DbDvmS^#$Xlj#>&bcO5kStBh7mEbV?FRv7-4(&6fq^dY4WF-z>XmP>U8FCY&&o!A> z)5`{72eH-=E`eqA_S{cdfcTocvp_Z?6E2?r-YXI#hm8Q3o|4@u-NR713yWLda_hBez-P%1GiC(Ib) zV~54)1;E_y9B;N?0dj*`%0)OP?L0u{-Pdo*BlJ_*>l%7g8H_$_#NucJDVs&A?xM=@ zl;b8Gf&HGqd4&cB>sY&>`Q{rMGS_RAGsufHZ5}7Yq2hL|L8XDg@NGq`@3kBSKVjbI)8&>%7R=y ztpVl#74)@KqtbXz(@{;8R;8FVS>iawl0-LKyjvOtx=McOi+#>a|B^6;jsEaanrNrO ztUdvS%zGHU4f>$5g1nP4xj;q*&7pNYJ?LEoLKl~T5$_1>nHicZh)62WTwzEw9T;P+ zyW`9&u2J*w!>@}Xk8!qHid2FE`b}QqKVl$ohko-K+$rDY+~6Zn{EyTyHldwls1wY4 zZ;(ckJl5gr2ni#Lp>iA<6C4v(a9AXI9+p9P1e^z9HEC{T=33`g*(dZ!n%tRQ-BiiH0E927+Qx?0iNLKvltv~TejbCF`88wnvM?{e{)-D z6$EB^XUA?eW-swza_}pt!k2{EjYkp^BkvvNIF;Asp9&Kv1@LAW%rLX&o5Tv1Hj#W>qaWMddSp#LpCnAq397N#)*qf?+KOMONRq z%mnbAr_rmSH3NhT_}#^PsT`ob9#rm%ulp>HUaCJGE*ZDRxdW$MHiubg1OS2?tm0ad zW~*{jU>FvCqRPFJvPT_m36}ny4`06N0RC!N;7vo3G=^MnD|Hq_^*06=Ka3OhRL}f{ zJ)Jm)g&o}-lVmoZWwa=cFiupU3tH%#x6Ej4BPdbb;&GZuk5P&uM|+jMR2U}7%K|P~ zKG{U5LI38hC&&w&UA8A?pybZ%>9)Dn%Q~><^SD$0a^Co*dr4ss+Q4xK-!#J1o^j~R z;jwXgcjJo>pcDSsUKJTX53_O4kKu?ojD@)%u(Q|X2nmV@+CHUuLm2~&=64`>Q_W*c zh_}!z2{&8@w9kmH5v|-Mox2%1dD>R)7lpD?tgnvU3&N8mAur3rG-tKd&M50&5%ta} zi~6fhU_$u?nPlTN*cs+fWrj9rt-v=CcFdztKJXC0`H2|USpFc0uqw=+IpDDnLKYa} zy^<7=_zQcEFxG_@*+jLyq2$#?bMwN3!GjM){?l88Q>UHAHo8eTS$CUJbN=s$VqDr` z#2?jvi!MkkL%UW@BAm}~<)qV< z(vlbyf@vf!stq##c;B{*V+_oa14NOv&@8&n(0Ta9tG^z89XFBU$q%vOZ#Ji&I~!SF z+LmPKAND|YkpZJbFq2T$*Sxl@5|7ptNhry-_wkGY;cX8ri)ZmCC74siEECD$HNto{4u~ND4(4OA; zwTJ)z|DkZ1H%M;m%oTon)Y!DAPS8MdZHjPl_DRD_`e3ILgh!&sJPN@>{Yt!OiB%GAq+sO5w^dnFcjXEj<=Jbo|N^bZe>W60=TnX($xj z^1nuR`o?OF8gtmOy!32*!_1O5cNY0DiC1)P4AY}ns1jTg z_qS!$kMinsu7?@PMWKw6U+c_t_|&R&msEvxq?_a@yTca+1z zx@LBOc~x0(zVo08+pjN`hSC0#$85Un!#J}gK2_I3`y2mQWoBBIN3*Ahru_Q}=mtBp zTjbz>ILHAFG`ky6Gx(qZtJD0c<*-t4Hg=yT)0(!Iq81PbJ^MW zbR^-5A73|eTjqr+r0U=yxIS}^whwg2oe^( z^BY^B48z5nxsO*(Z2}_wCQ$tZWEsP{w_5HUu}{^2v~;TOkvT3s1qqG{r#;+I#t)_J z59cfEh_*>J>eY%&3Z@cMdmuKv2n0}GdF71p_0M7}?$etCU?(9xx0Y&~`BSNpAFjf| zEpg<)T>&Ig0->qGid3A+O9u=@-%aouh1PNr+{xM@|B;1^auW!Q=H|^}jw}ckhSgDn z&oiwyY$CrfD^fMKTa{n9c&{0K!qeqRCdnCvG>-*$HdAXXf379;veBLa7vUnq!ylS)L$RiIJ6gPWM7gUq6owtI^e#rKl+$SCFtCyq4@PyCkjChG==cDp zEH$kv+BP6TisSsh-LTN^y0^c?g^eBpWs8MX0G=>@a+Ja zNL;rPi>u@`?KgVbp(i;vCD9$Zeih731eoV_pdS_>Zyk9dY%&v^aNrBJ31eIwYDrzs zytn=;W~Pl9zC`IWO-x%MVd_UZGZ*Vg>szKvsySaxrme-kpL5=ed|i1qSa-ie(lLf zLAes$QLHtY@|v|h`I&;Moh=b2Hu>4(4Qd4n+iUq@cENtKW^2?NnE(l9qGy9_RsEDcX!>9}{lbfN1Ekq8l43_K1x>6Mjtppo?}k`)X#@-IceW zOoVxl^YNf4(gUNa%1Sp~;R%1+v-s$WgalPTZ;Qo>vgC%PGDsN0_7&DMQWqvwWGXk6g*l ziVdLH8bSR=EoT-6%gJas#-X`Ru!gI8jX+KcT&AUWSA-KY)YjT?asBg0&iJS?4Bc=Su~QG^chn z#VuxnJP;KvYXK#l3i?hLVSvDm_cEvMS%UlJD)N~|{4o8@j5SwHNl}Ck%*gc|==I&Z zpS)@?v%C2KVI3WA{aEpNrF>%n><)>WVE?G~QjW}+B3($1B>&|(?9|jOo z)-!rp9F(uIU<)XVA3usD$-2`{7ZeO<6-ongfXeOaNN%#}jc0@f2hS-MM}S`QdbnCl z~j-8)Eij)BZmK*sK_?JtO-${D zu|EJz#}X=8pOt^m{~`Bvy!%gp?YNtFzuk^_Le12|41@`&9z`jcfvDBm`|LaSH)m30 zh8ulB1#bH!iX+}^%nHTQ@OiL>ye=54hI-6(2#SV~yZR^&T}Pr7IQX15PTPnY02OI@ zz3=;REpC%#tJ``6dbO{0CN|6NqXf(!ixI{p;)O8ZOA!S2Q>AHhE)W^#m^CsM-W)P{ z-3tC$LR3x$|H$~JL)y+(Y0WFF9J;+64Wn5+Ced>KD~?#F4xDD*HV!jY6 zJz4V0XSEVEJ@~dzC7VC?pw)6&t-5sJ-LM9-Bepnf1)D3nOHhm>zi4lNH@@{k2u0=( z!(5)Qh!NpqnRn_;i9ZeE`_?_IU>wHu>3zfd>nd5t8h_cG{eDvDAN5AU1)MJ& z1ksi2bSx=-An%N_x5<`nAH}J`o_0|7ut0z7d*4n?@YIFT2$VmzJNkqsW+CGxb^`+H z!9N+ij*=qUm5Edbn+<}&2@(USgs|3)5ng2pB7nQxkw}9tsMY0hP~D3I>14U==YcB` zruklIfZKj4?3^1>Gw}SM0&nC+F`}gO3*u6OjSeWL)9jjmh>);ZS61*RrluKBmat5x zxIKx!Jztt(39)|kjaHz$!&YGbN8)R`{!9X_Nw?Cq`7?sCRl`v%$=T@Vt%?K$1XUw6^9iq2WL>%XOvt*C|e%lai{KD5(Yt z!5Zirlb2pq=?A;&deZjeQ1|@Y_z`Ra`*r8X+eM^3JB;@<<<{Ni-H^+@$_I=d*!?|= zn;pxiDnPmap5Z0+e!%}JGVFHOFM<9c2`S@2fTSD`QR}uuqj$=R89Tq}$XT%;rV-$Q z=0{>42v61Z`)#G~ZtFo`W9#?5xb@6wbB(-`-^CU_@4;22Z5KM-NfFrMKLr&RpW*LY zZ7?slBs^kmBQh(Pd36LMc`CEvn>wM@^%Uh~(MUh2DP5>M1`|k7)_y01C-K8K*{uTL zOv+va34H%Q!tn|hU7|sbqYxaZjcJKsWw}poiy+c3m-s!VQ-6D5%oRA`DjtG%m0XJX z=+UqCXalVRc9*b|L_qo667vnD;h&P3#$;KZgn(@5h1n_@XNi_C83K`n4^zY^0T+`RJ1PW<;X3`D7&XGU8 zqix`NOFQrJBz{x<`IzbvLF#COxR}ov4?UM$cZV&@m(Qf2|63LS3#M4>V=SpII|xy- z?|$*9s$|I9)8+0{iVqat=G2k5(Yy>+FNM3OcMqpOq*ODO`O5&11naW;olYz~phQrz zwe`rvNCjvaO=N?#Y97WPsO}3&(Fs`~XHf^Ta~bE!tvD3z0EyapJ2A^hINwOMGTIx> zbu~E^I#y7+8jPuIX#PQa=|*niZEfeG50C%+hyCgM{zCwRVMzKP?fSSNEc~y9On(r) zyp-EUHa7+191oc~{?lYzT*y=(71-X~5-6muZi9Q15fhWRY*|Hs6x3;IsJ1G-SyJ z^Eis%QUxTIL7zirBio2n>NECCFS?;_$x79ot6J_8XU?Ce4@QiV3OAhP2bU_(c5Xa9 z{ljP)VpkjchatJWV*udCj1J$PtLmmDvLmdNe<|P&FgUrPHiAKSWvW{W%3>IUdi;o; zqHWV>)Kqd(KK3mk3?1}5&JZMlGm)-Q(}%3njP{~^ft^(v!hM?aCf3QD%?#2us9Gv;s{>?kguq z_NCuB$@_KODtCU%@T35JK!U$Yl&Y@#KJeXCbBy8c0^a~Kp*28s3^kut>xiZE)^~6*S-kbgS=P}bo!6KW zM_vD2)zjCGS>M9HDCmcsmD z^ft4D!8>`x6WCV=g&N0kCB?=LmONlcHn}w{PjFhG8$={OHNk4KAB;pvGbbWkKYu5J zbUXZCBtMnHLgMN!HahJ0FfSj~rJ`tm@!r(XXlAny4?cge`c|!#7B&imV%7sJtL609Cy-Z3`Zu=fx5F7yXzA*q?u__ z$f-Vyht_04T1s@|QB~?OA&1n}PZGK)zoyAbmKt*Y#wE2~%$vg1Fk4s1zE%Q+#)~AG z(~W$Px)mVkG#DM9c;+K_)WHuI_`zPRB~da4=jl#XlC;oj1tGApjR)WM(Ckl0qJ5nMMPA1+#)?PNH51gpE~*v8g^EaF<`Wk$~tsVEsD?DLX0| zvT%g$2Uj<A-4@3nE!4u`j^}P|LBQ5q*zk}Sa+TH z)|j3uD;b#-rN#D9+v5!8VsN)h^6%ed!=o`=;+JjRtha?l9f}5*gxkTPXV=KeL4E8& z9}H^eDT=e_pQhTb=1&?c)zP$#D}}rm!YuOF&FPn*pu;A?U1aOZxQCPaIKFSiD^y$b zJAZ4|$>>A*T6GyM<)fVujyhDdz|{QKw`xn*;kUVIi#yAmX0QIl($O!hWcL#}RHAq_ zEqhbaiTI_bA`1F^EEx6mwvZ9gC4cFgaY-!Z_4vJ1lMI2*Y-7zBs-WtE8c`B1NGgcP ze|3HrBS3fnSV!@Obfe-Xlk=Ki=^6Ve4S>-NSk;G{O5%ljf``Xx@D0n*yb<-u3V6Hg zhwn9{ZU^gAunZ1L)w zIhFpdmp968wr7%#$6ok@u!b6^SOxB#@f_{}lHf;>Dydg9T5Ry93O0$qZMs1z3S{-Dr zKlD82@smEHK;t&bha>^wp$f{%bMDfvQj|AZ?h#t9kL|zFnhVF)5Z_AboFY}SM$&Kkyb zek#H{q zR*5m#+BiLFxHJh13Y*Ovnjpuq9w0bli#G6heU7x7-nTq7{o$608m6}Y%NiXZpS-`5 zdlO8!aX_Tn*RsuT_9xb@ zu}_TVQyz6tIjZI^VEkqz1K$yk$md1|_oGDHI$0lMb!x1er@))05AnCo#c9FgUK1u+ zx?R4y`Tf>b_`xRSHT#H#!r1=fM}e{dyJtAUN$%;0GqS-L6bKZMr%u=Ho(VDK%Tn#A zI(68?dq;?(x#N{JNWyZFLFIeKhY_C+WX#SMXSkmul*`GuiJ=s#_&-`q+|g*j@7o@B&kV_5H9RHhtqH z651k`?U8W1G&~_nU7NkK&1BnSGskZA8pn@9J5mF`Ye)anIelH<>#1z`7j%#Y13U+MFmJ zmAQ5jvBP53GX+>Q(iU6ca-Xv0r>t8QB+K+I;(Tig5MJw=xTH{QkPAOoFF#v+SVv>q zURk})!g2G%^RGP#ujnuYh3@8bMzzpXn8^iz$ikIw45o8`YrotNZ{Ye>$Wt1!q|{)U zCQ!X7hP9h4Q#?Y0-EahSd4yIw`lE!$E6vUYi2SB)Rm@Wk0{?9lVg!-Dg`p|K^-7M) zn~a-YxvtG7P8T-@t!!&UPZ5@k+^mFfu?5f%V1ObI)9STSGc?4#kiU#2Xr8O<01#7M zaX5kQo1j;8R-1XymelO~MZkLXS>DNDMvf2e?e`(y=%2)3-I_hm?Ky2L62R7lDz|)Byhmh8Y#^&00@vNc4nl$ezRH$=OL9#- zAv-aHQ(kWZJ%b%*p~T(!9i#2$UB1g75|KQ8qrr{HXd?6N;%CA5Qo$=j?*72l5e0+c zf<@b4pV|>;ib|D0zK_ky=F~AfjVAsssa~P0lWrqy71mJLX3BBf@L&COk;e- zS0CmZ-%iB=hBOTQJ9G`b_WF8!5Bu6Mgws)7M^T)wVGK-xu%Ph^gdmyg9CGkn0B(BU zbc13WtqKxQr7Pw15lx|$OqieA?@IrbKs?yd?lv;slu4G&B`EKtUkMJuqvz;6`W09g zs2;^2A6RFN^m*;j;PYQ7m=+KsecpP!s5u%M(*W|NrnA%{b#$rMXS54;8g)pN-`{8M z^}4%~000ME4Ka3-1!*iYa^b=j1}58uKKJC6?^W@h>yA@fK_xCzY~5D~Vr2XK@Y@QU_1rgq0HfLy7ZFnKq% zp=pWI0DrR(kB820ccBtSh*24W#m&+k#5y`22`1<4^RRW#ocwGA6%#0lDqm+2lc>Eo zHn6)vPv><)hckn3g$+CTb3OY!o4f21CP)Ij987Hj13*H{1@KDs;_N+ptaLe7-C*a# zFEh4TK2#Z|m)qhGgS9XhjpUHjq|E}@xr`d=QBUGiY0YiamHFY1@jMPAw&eP++x@h7 zDR^=W5~V)66VPsw>8_!~(gBY{85NUoG-6F^B}%49AUe=eqo1J8Dup6W0-at3jt9{B5L5G9+%JUD8AYxIu zM?|I}=0~ky(C{;RKWA%c(P@cm`3_@t*q`=8;2T%bf%sN|?d^~X8nv*vXebO{{jH;t zkIdSPw5pp`C{Mm&!jT$P{B#VGT2tbFNHLJ#B}l^0k?v}1WAkV?7cNi$>1Me2Ltv&A4t!i>(w6bd}3aqlWN2HIG}OA^Lz3&E3jHOgIz*FWD8&$;*Gp= zz)XQ5YM!qX)Y?xKQ|^Yv0q+Q6E-+Z&!BHIiqLYf(hu2ur670&b&Db`b(Fl$Gt(FBL zK0u>uN4$@;goguCm$Ta|vC7M>=l?WY{gBo)m7E=z+Nk-FKZ=Wb#xqN3F{rEo@Qd5? zSG5_4C)AH#+t%dR2*`1)%$nAc!cP@NOl!LtrB9PB@+4)V3#iZRV6B63tpr1JR#;OK zKDV6WL0*fpd{m-r*6PsON*)DLOq?gUZF+it=)-K}C*I$(+O$S^4IqgvF`=muNdh%2 z^iPwKjLMyP+iT7qoR8@0p0KUhA~4hZ_my}rfaI-FkSE#j;`n%w*RepQi&feH6beCq ztWJ7%(Gdx$u7_HN8Ehx9KFAuF3q)aFS*}?Zv0%l^i7ZL>hMuBVYt;etHV9*hEvc1?>W?UR0Lh$^84GM7`bWW5u8E^tH{i zlKF%jXoG{wZf{AmK&QK~*z71`NU`FD0&n%*@)f1zfneoo`7Ak5G;M$Q7se+`Ia#3` z#-kl8odtIL3F}Gt{sotGwX}$122}T~fO2jflR2W+SgiMf18*a`BsV4aJm!3w!71To z&{>UJnl7OdPAowR)BZtq6OuTG ztC)yWzq_ply)^m!R1eB5Q62JcfdUe7Sq&#yUrgGrTh%ASjDSDqAHx^Y& zXAh!EMAC7FT5|R|Ldp6w2})>DT3sW-vzrTx1hIGF^$!bK7WTc}8nv@;t?$c<=@oU3{G7H-8`I>2Vw8fz6cqgD zdomw}M^oX?Y5Ah$#yk;}H2`7vsN^yFV~q8W|A*3+USY`~XFjh=%Pala#agZ0+`}9@ z5VYDdQN)&O*O07N{kJo`O7!q&naZcVUEJNN@X!jmX$UBZ#d!4UZ`6I+;0Y9sQ>xQig%g2oY0mC%_HRw7LsA}AqYnz)*RvZuqp>6a@)DSXN_1) zxpZ*Z?s|(&Q02lZv-vWf!tz${v^q}7LJ3f{Mm%U?1m2pl304P0ZFa1Jge;K)3aZT; zvNxl(Gr#+C^+NnBj)-Tyik@l_n8LpL@S^{!UKntsI~%qZz{NA1XYG))vyVJ=n5rv@ z{=yTcc2(-~3?>xSY%O_As`ldp4PgmgoNNlx)Gs(lsd{Bh%9G^OkbW#g*%3yG$?9ut z2Ht{lou*hyC&*X1o4(^#9{o%O#SRJ^sUB3RA}bveY9dVQ2vD1cXA5o*CW&i3(mySy zXg{cV>+SRF+l`_DV$1t1_VO6?<0-a%1#rUftzEna<}-g5XCm7{dwO{dQbs^evESC` z@DXM+f~;A%#^&=prif=eH;bEQsIl*{-F8m#Z&vG}iDo3x6oi0?S)dwT zw8K72kxXcGW>J@3WK_^Mz~8yKBGcxWNLs*wd7*J47IStzB+4VbF2G2-6Q`l;w{l}6 z=`F2W`;$@IHAum>$x@aR;)ueg_UKz#kS2o?!DAR5NKyyR6%G;972OjGdORc}n`Y`d zavRP*mBOnK489Y0@yG9$lYD}+aa7`{liOvY;gkowVc)7C!7_`|2@MBVT?q+mL>B5> zA5m--l0x5-Iuu8&1t_GSrc*aRj0aMSqIlOSHUd34amB!R21`y{KcPpcV5Rr!^>G3@ z+--JpVY20hB7T{XCq1^1ukS%KOWsnW4(7l(fvkIu)Wp4rOPyMt-y(yVLP^}3bbs&S z4$X*uy<3z&Z{EpC&##Vo+uhw?)4WLA52PKhO`WvMcmzGp-pDQJVQ#kOU*1j`eBY;{ z^IiVJXBAnm2sX;@Ff><+e~=?e9S?~_6d|B|WgvQMowd4IN^CdmRc_=Cw|*=o#ke@| zC#snA^S89wjPH2mu2XGRVo7)lpnuY64W17(sb!US7~w*@J4&=ljOop@bL^dSkg zxPI8#kPn>0-f*YqJ=%<}3n89JYXC3+q3L7`!uCO}b_*`1=dF#f3)Jy&Kj4>?7x7Pk ziQRBAG$VdUVH5w#mRTlaCw{U{f;jia&PRmPCCK@WGC{zx{A<`TUHUFG6wO;9O*u5M z%}+6C4@DDJBzLvWkk(B#AQ_uuae5*S?(-&E8ISdVxhCD^x5&rXSmOZ*5Q`@A|6o|? ze-u!9R^mPRF}6m}qTA>?zHBQLQvTccG)H)UpMnm!e`o zi-=ZkpV_P!;!gyW8EyM+#RC^5FNQ$FJE4A){HCsyq9|cJm3bQK=2;wn2rBaQ-Oc?# z)tTi*l8*AubD`1T%~&wm!>y}u{^ZwuV|?H*$2xSA3FziP;ev_un<9VAQ3VFEfW!$u zjB4SGW|0{)RaX}wOPP7mEkTU#V-Iea`|-R$b6Q2NjvD_(;h1tWV)Nxpxk#32v=wi( zy~w7{Z_tKB+P45$VV#G-Es%qV3{U_3ql5E%2p3v|>o$lF{0xm|4o!<}E=le@o8sel z;s>qgFVGl+z@qgg{>u-RW;82s{kE+|WpmMKTN z*OU^~H)XcF-=RMT)&VoYNsAQN&`Z~z$vDXChlCv21UaP6xT-NU6~WQ~2?iC2z#8@u zD^!C^VUOBNcx>L3_G3?AxJ1ESSPf1!ZEJy?(w+pMun^ge`1YJ`CE|btIQ55`nNK{nb>Z(GvLd(TZfdOOc^&Xx^86zt`Nd01xXNNM8Z|{Ssz8MzbWo zp_oRPfxrG#HwYv0;YS0@3)RH8|An8Id>Io#vCmLl5mmwO`>0`OlXvcwG`zQ)`YybH zb7u-dZ|wOUieCoAHC%=wdSOaFC!0)Bp&Olufxpy3tiy+%KK*6$Q$fw5-_!RG$<(O! z@u&V@H)YAd$cE&FXCzmi`RfRjWOI)NDH?V|n9ZZsRRqW`gV>*d!iRP)v6&5X-kXV( z`M-adtz!9xdZq%^tk?P(63wgz)XDdE9FtoUu;i76vzcdS*RboyIx08)<6VE=H(!v!;h`!hVHo^?@Pn_ z(Iu386^s)Mfu!&H=Y_XX7=euly-{q@KQCsnC}N`Jv`24y?sU%Et}-F~899%kJP!B7 zWDT44NJQ9rqgD0d9x#Tkg?5b@YC`ng&6NVQSCWyz@&>jit^$dCLTAmfAvw2I&FG0G)fRbIZ&Zg*uInpj?2*=j{F7sP=8rMGOR3xM&m-emGy ziTLH#=FMBMb4TrR{UDjMmA>)r?R+BcCt`1E``J7S+p7)#fayhg9ZqxE;>Y=R>A``V z9KFC_a63XPg=bYk7fd8x0vVW`Y5|=qU8P^jEYG=g5c&7o&6fP0-H9M#HEHwt_#_g; zb5f*Jr}t)wlfXYZ$SzO##$zA+e_N#EgT=$*(g$Z2t6ydl4JQr7X) zRfL}}c&*lGbfJnKV(*=M~;pzh+NE+_X-N=gbYDEL%QBq)B#2F?P6vF9j*&wOSKSshScZe zdZWbM4R3~CJ2l@!4k-5;TI34DL8vB`(*>Co|FxT%-a4)bCEgP5ICk6>i-fSX17oLqO*LzCYB)Uf>S=Lp3 zyz;M?glKlif*i)( z%dYr3!y>D$bdOD=97}7^x;jcb%_sp%zR&zlrm4h)2cvRx zUa}=2AEmKI`{Im4-6?GufvDG`0eClGp>qFsu!>giOYmpa0j_vIqCmB(NT!Pw4u}^t zN=k31^BelwH*tBjl=ZzLb^;tC6-6JK1Co{62ZL0pj1$(pvn9W8s-3cSa1L`z%76a5 z*oU^}>_lb*!RM5az~ z3yd{tc^;|?6l=mF7>wxScP#s1b!#Ee;1NWrp+&Ot?j7sx8=Zo-zIEcJs+JP1+Aq7X z@g9B1Ao@O-cwHT+cM}U}HD<_~s`Sj+`2UfsyRMbU14M&d#L^U`$&L`MF8?3oUkMEV z*Sote@i4on@q7>X{Z132HogC4<|LjU#UqM_o)q%=ZUK4g*-;mlUtVqYtka?>LENJa z^CF#AjoV}ICED4nIqe`Gj*O!H-MIZi&oFuUlx7r0Brk}R>9g{NU2ZkChaKt=;v?}meLYi6&){&S^ zIzKA!BCU)ebTw6A8^n|c!fyS~5FDNWCzSlFb@`&gWOmbMCb(>YjQB3h!c=TV`HIM> z3A7||h?lGH-om9aYNX3HDGz_X;7-!b3mZ^teNbo|psQe#T1Y0E0KldG10#BQEOfk@ zCLmkZ4Wpdoq&puKaemErA4HDSj*{@C#{ z^5!<->Z=zTW-otMaL?=d^HZYWgl2rb)UPBz*0h}|FwdH{W9H8`5431ry{AU&> zfezQRU-#D$RtF`Npa0T;wR1^#b`aYtf7~bL)PcGnmBz4W@9`8C)a_uk@W`1(u(WQU z#kT$)YqP*TR&0nJm#|59;U~z^V>tSBe@DrTg~9P6+M+{dlz=cE2D9bL*7SQnx3v0^ z&PC$~ku1ADnV5md_cP-dsRm-uql%l|SXXgAS$(TQsF<8r1Y&PN74%QdJtgFbWQn3N zIvi$XmDT}%I-rh-n>ZnB82Nj+NBCdmz8h_Ua=;u`~ z`aYT;tSPDQf+kwQ3ZOX+r&-)GVG!pY2DcP_mzBWIZK@jFa)W~FR&J7myghyr4FSk^ ze`g93*z;!by8VJXBP<)Sxw>Jr5Ewx$L?yzvw_h{)r+))ZryP%8VQAq1Bxy!q&&*o_ zdOp!hjWH6jNY9_c&+hgcr)hY>J`J#59h)g;dur)dKm7f2J)cNRZ%oy7G2)X+b{c}w zuqwifh;95DLs0E0#%z>5SWzo+_O8BsemC@?azFeu5HFSKLL<#8gFjIQCLCB`;@Xps;+XeH!TbZw#}2^XPu!!xJ$xO8}vMV%jGzlJtVu*wYhMx3(HqnuMwc~<`42ai_~#PM(7uJH{RFjQnY^LM+`NYP1j^wuR3=|K z{UXbatlVW^WndD;#>9#9Dkb@MwPScy4u*CO=I#B8t;zUlGc29^HmMQs-B4px+C=(a zI#v0c-Sw%GY-E2#+{2tWtW%CmE9)H#ZjB z=dkld+v-*t!dV^562|aG6B_ARfOEcf9l`Il|FxWQSo{aO<;VlRpg*#8qbvKDSRC7) zf)Fis-plOX?;+bf?b!O+xfo06?IO9jz{S$5STeB4KHmeVYdLJ3R?C@9q}I_v6K~XMEU^Q-f-a(cyl+I5FO5lUVcgt(j)RNIF{q)TFv_y1 zq+7?=j}6@i%)-3k5g^!*VGVb5Lf)}vx4GS15-F++j=$qOpQpu_@%aY`Im68vl79G3 zomcsiJQ7)?rlfXTup?U;K<^lXJMKRNcZV&JTtJLb%9mm>?#$~@o6uW;hE6gY`!!4o ze44(S%N{t}%>Yc$ew{S=*$@K)RGM}yE|~7trJ~!6_p3}&&7r{X-4Z{&ybsNY1u8** z5@fX%DoW@K=tf@`tk#Z8Mb2f;#tLmvNbj+U9brtJ#dW*+ZUyu1caggMl(_JH9kuLa z%jv4>I=p?NXLxw5)PcM0Q_u~(cU=E9TDKXG!89y=F0UA?TVhI?9!~^U|4A(Anw7kA z&GZ1)W!Wt)0@XXTeke%70N~hCQBrS7|Kqw%a;^O511%FV9OMbmw$}+zqM84QNYUzb z=o!yw?n=3J-*+R%Kr0#>AQ7*aq*@Cgx0A0k4VY5tT9Ex07ogt;I?sdChBJKcn^r?io@ z>25_&LNZMg9E-(@hRgOFgOYMxq%1N$LEZH_ZT>`FPA_b7pZDa)(Z54MhDX%HnAH9I zK$QS9kR|bRA@sSTIJzwtq&g$ z;`oc$hKe-mq1e3pj_QG;u((=A7Dm3Fzl&s>ossQg_Oyi8e}D%J6~+#oVOTc{0)y2K zD0Z9iaRu@GX|p?pZ6PJ+#6d|oeX5pxwED|6?422R+M)ZoflFSaQdL`78=&{weRplA zut219&#)6Yx;i&m^u!F{d1N@bufP@k6Gph=L|4-uiM)Dnak>0SA9j`~KNnJ3l*atws7 zpVzlJy>@C9Z=SvtAMq!Wj}Oi`(3DiqRFZCf9h!I>8W5EIBZHDuYh^Drdvw@;)Bvkp8?jT^#@`~|i zaM3n5h18r0%F)ES_Qt-gY&-i4V{YmHi`^br9bT3J@$Zun%me%?oPcq}FVL0=qaZc8 z(`9Jr{skJ^J#ZY->qY$`QwC~8XJzGP6a|UZAxhT@?7)m2%*~M=;pKA)W}F7d9@~_` zIG#u>5%Z$9u9m>@7JElUP-M(GpyX$pKTS1T4$W`h;T++CC{oN85ETS+^|0Vyeu$6&zdv^Rve7c=scf$O|Nx{RlSIHj?XGr6~H0XYaU@euw!!7i`-aNB>`MAR01- zT-`IF`n(o(0re9ccbN1B=c$p-E%YU?fnuTS9G}eTJP#w^E7ZE>TiF}D^;Tgq`>YxQ z*1D;O(iGr{o^yR$*JDmooVn#W-+`7YMk-~xwl2#d0iq>6ACP!}j>r469~`mJRMr{- z*}J0H;n0jdDTQCmP&!d6_^vQK~<2134vUSUX-tIg~#yFpmuvDP7ZG zbkK_NbDiN!+>F(-y4x3o5pdJ3uf%kPSR>1hx23EBcUq%iWvN;RPKJYHWf9o-y<$CA ztm%S|D0Q?1(O_7b#I)U3i^O$AgXS^>7HuUrn-!?|g`Wbis>Sj3z^QZ|D%!&2`}FF@ zWCjd;0llpIQEz6*EdJd*&Csk(UJbT-5T}(2_Ir=Rca+U zL%=v7n1bywc{~!-AHx}Cx<(vV3)ofSa>HMd)*DhdmOuai00Idx000E8L7D;)v3CCf z_E$!3Ytq(9$*r7h@*^V%F4s4w{Dh?tvgdV7ak5aMl(WFe)HiS{rOM0zoOaY(sbq4t z70_g`!90JzRWASX)i%2j7O};QQs3T<R3-ngNJTTKICcpuAb8GO^Zn$ zud(YnisCEDe*KYpZp05KsLnj`6y6zOmis2EtlT0u;7$GKVMgmyd3joAO*)o(x6XaR z*4+8dC_B>0yOvTl!N>lb{dwG->nHLv-cg75i6eZ zx6AvCZf=!YZ!euO2Lk^W6+`3K)Zxw4P9b}rgz>WhAmEZ z!vY@;Q8V%p{&@y*7L-MM?w{pq|IY5D*kPT|tvJ1F(!MTSUFVOqTQTy|KZ~pv(bMLy z4^>yfo6aic^FQ5uV?oPr;BR$H}@4(kT5dGr_;rcZm_dm5`d=O*xQz zgh_~n>TG7h(UWAh!4J|1FHv_xF2LGNR3%J!h7U*I2?Y5z?urM(R))v;lTL{>fRR~ zSGleSQYR4d$4#?R^G9LzuchvxD<}y*9Dh0{{iql@W=^ zDfX9G7v~vI#>}$1NdK}TX%ZQIDEkiM-5UpW^&=-qvZ}*b0&zCq=-Or< z6z<}ZtJ{73bU8dgQc?sC>xikrJS(TxBTeX$R^rZ zfmv)i==KdSx4A;WbBiuOFW{4HBAbNbd~<$!?5WWW?Kbt`wWcQ1M(-BZmMC&;?p+5j zmH~t5>ekIK^W47H@VInvWPH_1@+mSF5OuxdN9b#fv4Br3R^VDb#CK;o2@pd3-c@EO z_F4I*0DZ7OogaU%S6z0xk(<2zuE%<(BJL!w2mIUQl)iN04Z4721w)tYMGEb@2Z@@b z6he7@!sCZP27XtKnd!MA*jJ@-V+Kcto5DC(ONzYB12)c9DQ|9#9A2Z2tDdICbP{r z`G$$2y@_RzhTj+0bV}nsz93b~zT`}DUldu2)00Ie6 z0004#0iFZ}(IvkC00RI5HS^6gw?mQr{f7+m^MW_P8z-6toY;$ZzPE1cNCd2{CZR5a zBYe1_02@-_dE&FIFKr7qv{CpKoGhi#yywwmK&YaNM%YlGoZLqp+E#Jsxy4f0-VjQ| zHbyT3bGM6J4Md!cl%*pcJ`v?4#@I;xaDwuZn=T)9;PNrRSL zA6R!TfiDy+xWE(N_>kO!s8*R-z}+iMk|BaB8o#4*FL0Yv+99}8?+3U#$D}Sc?>P4m)Wzb-Vf3#R0Glg0006BPyhe{ zcLAOR3DG6L000930yC+P8Ir{t`TP)gNL;AbAAsRVPsHUJrzy;EIj6X0@q9q+|Kg$N z^QO7#M=8K|eCiT0Bz<+j2a{|pFNn=;c#IY@n=JOXq;zmQk({k0KIk3O05yjIO87N& znSSSv?z>>TjJN19g{tj7QwykTJKc@>1UG$b`*q{H`;V-J&ZG+CbTnRcDyVH^PXHy( zr?#>qy`heopB)ad4ErW!-)1GSlnf5QwdKEcoY1zm2z&fjA1(Ue;8wH(OOwk={A@VX z68T%C;tda`1z6L*7^%bQqyPVw0>=XYnF zhJnsk*7Umh@+U2WewWKd+Y`+UdD*qRo`mbVDaH4b+xW%-%EX^2Q%@b}t)dp_uraD; z*E$WCT_w%bDV72T000022~Yq407LmH|(3+Dksuz3DZLA=?Dn6)RRN!5;yh((>p^ib@{c$ zv1VlCGDnSOFc_uM481c`P#jV!e?CJ0w6pVM-cng_3!F1v^2W+{LpF;3Kfu1nzh<)! zEGbGqcX09>!zInEjY4G-)+X@LhVv#e7tg7V;_0WS|vz7zr*k1;ghO==X-{ zEBrE5^HD>SUqVdvR$v$#GT~W1jSBwc(Qdpf^Hf&*rD11@VOu-<2c#hyRVB8L%M~QL zikU4%US-PG;NpWsvgJZY0AgBa!APd12AL0^NJGG7IVHSKg!kUWokf8T2JhqUbv*3I zCFN)a1`>2bM1mK`{)p*Kh)Pm?tQQWNIT$%{A}NIdLfYb=;qi~bUW^(NBf_nO3D+3T5no=f?5XPk_TsoNiqzAPG)QB^Aq5v^N; zbm95m@bWSSi9mn=0>B>%7b+4s0}vP6_VxZAXJqW-!#{qmr$O%fJ-hcVuBxdA zek&FNd1|N6cc_U@saTC|@#fE3qN<<-4Sga3C|FW78^0HaHL3t&Rqwnl4&f;P|SvC`NUagQU))L3kj-YPH z(aa(%WdnQEs~|GELo$z1H%H}@vH7@w7+(@FJa!rcCRk9o%S0JgD8ZUO#z#Z?pZI)T zw;wk;DM`YU6h0fG9wereYLM12V%T6(p;uLqdV9 zK0(4)q~ZfivDZ~R0SX)lf;PrP=bS;a$e0MTBg6>82;REA-SsXE_h22A91N9EUCOtk z$yA$fZ)RZNP~ix23yxCUhE9UigpT>;BM+Z0Atp1sxT20*ymKeDB=FRhb9PpouR*zY zCrKX2y`*nAll?XR&GH9ASEeoZ3T;Xr8UH;wKWrx<8dUYN497(YfC$Q#%L=l{z!x;&+1Gp#W8bL7%mfk1D=cJZpzgydtv+Ky)2QeM zzZ##wNN?c$Xjx_1Z42sr-u5!2V(mQfg{OCd>&`xqvdg^mX@`f0;<66(tw=mQv-*eG z`Of`u7G|tIJ^OO%qUyQQ&`$X#3P=R-3KGmi2*Dr@Vl)IHc3h`_{0@Af;O)-&Ai^M! z^30c0xsKw702g`s2-JoJVa!N|X)#`KVo0b)QzdG^?u@cpj9RE*a<(oZ$L}kH_Io22 zX(}6dp)_!*k$SDopszh`V1UOhP+?^%(v;vpJT?Us_0VL(_!APB5g zmA(oJR*+eeT`0JO?l}DW2^k>lo3u){*Ve{m^Cn*xcIhNQSaFTT0Hmttlz0J;a%LL1 zteUV{KG)_PEgy4=^&S!&mhL3Alan$F=BgXDEInG+5}2LBCz*x;31VGc!tEoA4uz9Q zFqc%_-3#aClsKxMU;|e-(OggL1;@*=CH9^@Lx|`tAwVXIRBT|a<|4Y|RV606j?b$V zS*4#{WU0G2CF7=<=Ga83xJ&CIY>a*9|l+$*OYUuP*)X~X|UjFtdItqQUJnQ^uOqE+myzyeB!iFPrPe3~ny-_K&;;OJInMza;IW`l^HMvWb z@d;_EG_hi$%2>VlCC1&m7KdK!Z4g72kJ@mF^Rlre&4S)wv4x~xy{|%=LVE?CWMR5; z6H;WB8dd-#A)ZzifOt#rGGq!49PUYGI?d@EdaOCvh^4&Nx#Xv-wR|jZo%mIbWYsj( z=-tCrb3Xb$d?86A~uqBW6zY(@PH|j03d-VhzbbL4#d@LSTo{-xVIe-NNkMcSJmNZz3L^S zDbj~8ex9Yc<)y0`gYUmaQp>ho%lV9N3oQ5t0${e>Sh=L8oEp`8TvgDM| zaEi#kRfqJ%U`>{`jJHw!ZAV#q=P!k3Gz%sGq>{x@-73WARLCqJuPfZfjRZ=EKN#Us zajswRZ*mAz<~7}nsnvj}+x6Osr_6XY?X^4)gS*>dF|q(lpA-wERq?-@+G#UJYedwQ zR@KW*CA~z~gHbkoY)WO|_L_-ovK3DJ;EssNBOw4JG)RaB8v=p>Wfoa-4IsZ!HbW~~ z)6Pp!!~Fbh8XIAONWdab;sP)VHBeAfP6edIZ?ZXp2=-;b;5bJQ0AYbP&}EG7=VWm> zM-+f#6|88(9|~)hvqgTDT|k2bsBI{p3?KAz!N10v7l0oo?5}~U1KeO9SUk1e?X})B zNe>Ezm>8_M8*)ZKug`uyty4ZQE-nG?AsQ7umX?NKp;Ra`IE3I~V3NY30s+7XDDjaq z-plhz8tZKU8lnfz>VuFP!B9Qs87rK}{2OijZ=j`Be=5f;CQ@Ue6fDj7+CsS%K6IgF zfk8wPtZdAxxXZUW0<2HrS~B|!KNIk@sdw~h>Y(h}fN83F)iXZU_rh#bQchK*zsvrU zyk24^8>HZWg+pkscxAT@zQNm&duDVtvKg^bAqZmgjEYh`{WQ#Bow73$MJd2#3iNTH zTPO(70N`m6K_nc&StB8M}FR7LXUG$Md* zXpeRak0iJ1+A%Alp#5suw4FzZI=ilnZGW_58I31K-Oz1i&!50)RmZQ~##W!i{!ulz z36nO>s-ogyMVqZ07R$}$i-WyEye_%iaY%%qKEI{uJjcS8^>4hmN22D-({{#Ia?K7d zQMwT^q<)GaQFBO?J_w2%TY^V&8i6tQ*Rd7XX;8`&Q|Rd7eMLtf>U;&KDnuPWnRw;0 zKHgkTi;goPsc6Vs2)>2!XP>+Hysg-;wEYn|v8K5}oYh&A&COLB!o=6@9SZ4X5Wpk4wc?_g_{rgBN*&_wc@8PL(n{?|Q3^jj^Ikyr+DpYER^ zI9XeJ&eto(H*Y86UBzZ|`?z=sJs5X>XJ&`ni{s?e>ZOx+=nR`7hDtS#OI zOklfK9B}63%qj_ik-$HQXuW53tXT9{zZ;?4sqT!}KV*DcnNG4t$*;yAS^IJh^$$jw zdXD&h9nGJ!B~22}WRIWu5;;^xi~v+K<_=DI!ISN!9syrL3ui|Fj5MhlFJ^^T+gBQo z*c%*fls`cd0!b>^y5_O+x((qjy6rJ;Vif>C2Jg_jNNk&dmEGRh9?Q*?@LW z!m0@B83n*I6?0a}k}Q1hIi0hSV(uZU-T?iV#D7+6UvzDTK$p};@xe_sBdu`ve`70+ z7AG~Y4^KxUB`X@E|89HE5R|B1WGV;f!78V?-WT25(DJ!|B&f!K!3YYngQ0@e(4Bva zy?FM<4V0X(o5<#Q@3=!9aF|D_gKDB~ZpJMRpGH7REzL|tP5oF&LxsoehBB^`GOo*l zyS#F@##|AgxuDL|d?a8V|ZCU#7C8xoS)Nnv8KF@%5Rne$vBT0baTd8oOM3&7U zR`+xvYq*=TD;x=EOV>SEaqdL#X+dY-r&kg_RHAW$kGif5*)3JvE3qr;05a_@FM_n< z5zC+>86~yUw&h_q_Lr`}A04OsPhF$~7Z3#|nA=im=#-?g0XbP*W5mqnBjyT&=?J7ZnGiK7j{nIvdt*a>M1%mq)aYCn9Rg=S7T7~%=YJbyiByz`h=`t+od&XOS)YK1 zW#G8L7?c1sHl^&7V5Qh?`w8Ck@YW>Y==+;8H0g@edz9=l?{ZKi_Hu|MS;Z8UARfZA zcWF8u5un(0eX&ydgf~b4q`p(*9mZyrv;La*nZxl?AAl;dZcw%Tr&T>QFf8Wcd+u1^ z2O0;BGbxDI%E``y<4nMKMU1HgBtk?G=GJY=Yp}nS8CjT+V5o9)A1j-ih+6C&zzrTq zjeL$qjUWpl)Qsm?M>IDKgF5y>`?zAdL2w%V_8B~F7s#)O^l8GoAb>eH%LmqIUi%Zw zY

1M(p!Me^Phkq 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%0AA!07T=tEQNlK$OyvwtMJ7sPCoo~m2-ICb|&P(^_ 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

sPKMYxSKQ%R$81CL+}MtqFGKoABDv; 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

)$;JWJ+d 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�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

w?9-TUtLlK&cQ|j}u(F$* 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

(Mco<4kdp_+I8ml7r_)Cb`>x29iev>989&o z&gD`{|2Q3{|7usZtxqwu%K4MzOdU}km+1q*EuVIlb`2|D`WW+?)n5r;4dyBlh6aVM zVicw++Lc*-gONh<7veUik~n=Y0yj)&J=&}c4|u?nh~4kaCpO$-7mnp42liLS&r**z z?@F{m2`cZErG7g?lWzP!Je^~BCehNa-`M8Fwr$(ClZkC76Wg|J+qP}noMe(Od!Os< zKmEI^x_b3mwW{tXnsbzobg`UGh%vi98Y6>!=;LzhP3}cxQQ8zdaIfI5&Xu3V`*XH3 zAqW=(V2Eh7>o?0&pa`FTQ02Ko@f>kp>}hl~As{}iZeJO>AtrHUMr;5q!Xkv(2HX%q z!OjsK_ch*$Kpt6DW5k(qE83G6dhP5oh1A1L1QW9jalSk+B$-QmC6d{md6)?M>;&Sq zLLuQLTTWr&)^bVUrM-JyPGqoNqw32=9*uFa&@t>*H~}^lfQxeVR_KfsX1E5}OOhJP zHZ$iX+3S}1`U*FxO5D*vjtLpG`Bc(hNAh!WV_4E~N>GauaLA_oz#rT)q>2hsuBZBJ zgH{x=K}Fo`1H7L^Ef3rB(6OB@`cSV~yYJ1osI+C?BpsaUL7JiTd9|K<5b*i`8~7oAEKoi z59OeZk5}+|8Tt%D>4TY|C$Azw>>#P|X@r0;;ket9mt?19!n-WbmBX97SasR?Z*y?9}VE3Jt-sNxl%RQf_^)MF$ z8(V4`5vH8t34g4aq0@#274c^Bk71c^FJ1$N9_ME@mH~fVDJsc~fMs0Nn{&bhDQ*Z% zC|unn_Rx(jABrz8ttH-ZTT7iY+{o1!qC1ocIvjt&o)Ka7W`MvpkFxJRu(Tk}i!(CM zr<0veH=}QhMAAww?W!2B64IL6Hl~+&{SLlW1RvHmur6wNHwUuCJefg6JB81ZQaUtd z^pZ~p4)CC*qPml0uj|Q>*ffYNjS@oWhRn{IM3fR zLti=Vuj+gF+q?K>if;hSnX7`Z*OEti66Ui`r0&kF5C#gNe+5S!wCaq5l5?Oy%v?4} zx+!XZ=8Z>%Udb5n(EVJ6XB}Ph6w{$2$BcDuOYi5j|5XpF?c0C(D7cpz0XYBtj1H0Z zPQj~u-1?+^*7hG<+VxU_kJMbaIS#D7d(K?l9h8-|^DsVHcb~6uM>eFua_66+o&J%$ ze*oIuJA}cd@a;1%1BYk?0X(P#tOi{&f==fe& zp?`WyCpEY;wqzPrCaIIV{siFx3;aHnpAfZI=1C{o!VY?e20q*gVdbwD8_N)Kj% zxb;3SEvX^f1Md0!FIut<$#4z(8@X(tI&G-o!Bx#2@H) zWs6BrX{O2u5oQcMoC-w0g9_cx1Bhn-fL=i9@>(p#r}b2BG8F(PTfi&=71^< zS~9+9hPxm1qbKEPg3#tWtfr;bC#5-4>fR)HZ~~_!jAwRl{ED^X9P*Yw{54kUV{0!b zL_C=ta^rd?yw8)o=-JP?Rk{AQ{Db95hGhz@^iM#OUf4KQ8%fOUv)r~`m0x(a`@7;K zxF!c`LtGUUMf1YrBEjBBsl90)VjKq2@Pfd=HhyFuf&wM-PvWcMN`lt z3nPK&Z!$OfsHrjkFVx(Wjsy<_VJcHK+&?oVW=*~95MgH$@LeVHyMIEaew&|sJlP!h z5GMmUyk}xFWV&zeCfHAS?sM6V7R3%JJb3vOl|M(kfak8gM^iC@_X-m5GNE0Ridfn*J z`z8H9orF$dhdfz6*Sb@7CT*D`59PCA2@QxSaOL@$o-O_XQq2A6q%eeVU{A$hv1-&AyUOP z{>|n_$j_kI8>eMha)~Gusps{_*ube4@67Wz%EO+RkiLcyiuP?W|9q}IXh4_gp1Bvs zi5k^D*wfwp&tH`b<(=c7ibKAHLin3YQd6a=aWAj>A3_vbm~@|)KD>nXRx>U(j%u6BIH)OIVBFCSs#Z`HOO-d zK^e97E{dPYC6vz9s{O?%NUPo%qgm9Kyia9BVXXi?#eElogwqw^ZCsxE4 zE*5u$5(zbG#n=u~n4b@{dx2`#qTI>Ldl<0X;(gXxNF7gd^8=1{hJckDoD)gi_|vd; znc@JhI8q2j;{?(990J~bEyn7DK=pT(%|U-l!f{4`TSk~{m!jFVzjLsAbz>2q87SMu z_zd2@<<}GWS3y!b--Ff%V()Nehj^p0*ler}^kz=Nqs%FQM?d1rqSmiXCjI8{3u*Fj zHp%P6`>XT1i&=nLQ?Xu$xO7);%4Y*!6KC&FC=Z#1lTgabvEJ+IgKmL@DDv>CNuKJ+ zvjHule6?HZ>2{fl*g>r(Zk7cxzzp!2DnDSjg(=0~s^xSX0IkB+8 zu7=NbFQro~E53@I3ANUXmIisNCxg21mqUC^+OXdQ%n>S5!=9b@M?k7L z`6H_E!%lW??~;M`Vy6|B5)qGDHi>x0uF6){92)vklCwjkZ7a}M9^UNqA zTSh4J5k6tj-Bm?HpL{EYA3orc03iJ_@Z3|x8B9bgk*aPw?p|4N)gQT08$lvK*gK{# zlJQ-(1sg`AoqmI+EM&XcCgDeq*MHe|%)c&7btacKQ#Gf%VRDr(_f~sdadc>t9ly&K zYTYPn#vNB}0^wL)k z|KK_Z-)SG4b}tf2UImN7bBUz~D9$+1(8WGPbJ#8B z%i!HMb6TU|hbwg4xaW?J!2 zJuVjp#hC=y(sh7-wQ512wRK%8*1h`SJ8dWPr{G0f`!!sl!Kw3PJbSL6#=e|FlKhFN z`kR8kd=9Dp!?Gj3gOV&i&xEUvgcIut;#oNior1!+h$v3-_fMlFNRuv}!OBYXY6k;B z%`GVr_2=l5@{hiae-gA#$I>F(j@xg3E2Qia5hSjPw+sDJ-@@^tZV;$8OzT*+ebCRw zC)BCtq>@uXUGgl(jTO>XT{k*R0oh$rtNQFy-^-T|Fm_Lzpdic|BHk{>SArtGQM-}_ zq-TjlQv1QJi)0}}8mCGW`0amp4t4udNlrM9DmPtl-UXL=!iteO*tjnjMby&wYtQAb z7Yg8yTtfBbJah$2bytb3F!SYzjgd+!kfK?3RKB!0w=|W0G(H2RaRVdE@65@Sh;Bo zuCpVYSikm044NbsxcbIynVa+AlFwtvpN3TW_j-TTq7%0wT!OL)9m)=`^doutE88tB zV7(qwL2u=6QG|`z+ewXSbz2rBpRt1Op&IB?o+?^KmmB_D<&!=HXIwF2J2bs=X4lAm z&oY%>=>CXXB-N#q$@ClfiZm`%_3Og5vz{m~g{j)LCwHl&>HP~M0@!WYChl%}0G0sq zi<3^*A8n~jEpbk23AD4bauw3qs$!eYV{zwVzV2!kE%11Nowq5`e*^zlneZK^)|F|- z<}(o}qxg^=GDVV#j46;ZMbZ-Qn;NTG8-;>;&g17BHG9+`4nYb(QVaZQ-r!kTbRypo9ae~bOv7?`OI8RwW3x!tY%H$K?O#op zb2nOyKLVEIoHGxxHYRWy(bzd_MdGtGD2IkNr(`+v!0gaNimc1Oa)Vo#ym#_i^5iX+ zrtfLJaF)qQQjKiby~A4mui>pNY6E?@at-6h4x2G-fjF{rk_$=0`eH;4h*E#`u}!7R z<={AsQX$+jOL(vJN0>dg<(G5I)RYwh6APC4X0-93@Xi;>f$s?e6@G&#k`!P*&t?AL z-*J-idAFWpkJlzXrwed!>Rd%S?CXc%Or1D^04x;76FMZVICvUTz|SkpacEiEs##BP z5npM%?KJ2OT~D5`d9_6py4hHRB%)#C-XkIq5xb5-A8r1)!uOaQ_{|Ly(3fr$E5a@| zmZkwYz|?2z8qVEekksA-LwVXHY022div6KqexofaW@Ht-S3W^06h&{)B{!@(Lu-!B%QID&qP@W#6~B&GE?=b0x<$KTv{912z>Kj-*|XL+i0hT8T$>tYbcK; zn5cqQBz9{J(X$bOm)zAx^SeKVMA^16Bl!F>E0*8OGF9;$8IcOI(1sTK6pNA-I{;)O zQI9HZqJpT)&Rdt<0*)ofYY2|`-qXN>R+}ckrX`ylGx9d!h785G&_%{G=v9gZQLj3^({k0YM3$!uR;J#`Qhz_sslH66L zD-}VandX?%T<%{MZ`=i#R?_7!5h0C@WhTzk_1z__>oMh0{j41p$=!n54ZR2J?W`7#Y->_7euLiPi@>A-rN z+<*;wZl&Z48#BR<$V{-+NTN@3!SE=OR1e1N?fl1M9B@!lx31W0xq6PS*^E*o6sR}` zy;W`D$7~laTMFPEvpv<86RdQwqEfRKC8)T8VlB5g*sQTs_Kt0vIOV|hy)r130IDp<3Jz1Ja6Nv9hOeU9KmJCWk%)Ha+H+* zlFUcvBLzD|0Ds8|Uc+Q+Gz1cvwG)2Ee0zZ*=4Nm=%5%fg8+oIzf_^;3M{uDc!Br6W z=}7ul^=pww19(*g^`X*+Q<~`ZVJxIEJ%)F;{=`aKK3?fL7^_o zqYMw7nbzH??9|+6sLar7Zwn{0uVoGH8JzKzk`TVAI=;pnQ2vdb8%;{_c6jo3MVZ5u z!9Y{0^x-D^5rX2sf+s@^UH9A}MOqP^2|#=#(rgGN$K`J1M}AN=P#oX4?<^DFo*B4Gw)xsrg&VX_~;X{D_v z=p!vqHgXM7z(L*Uo)tq?$|8l%4tpr&u;Tw)zyG=31acP407k0c1OSk8mg>B{IH48) z@?Vp;DOE7aAeh-BCrY@xZ-y*-2Q}V`K`Se@0N#F^eJGtQqlTEW3XH0&`@`yK1z$)O6g4 z(jE)46uMhwzn%@_dy)YoT(8gAl^%o^Pz{1~K~7un<7q2jjkxCYX_;F^nE?K7U4Nu% z%&bb2FWMkW;V_t)v+wrI1gbL4ytmsOLf`XF^Jq=0gqF9X6>9+_&w2=@T1l`PAkM?L zGdMn{(9B&23UAQ>Aw#J7HJ(*26mkU43R9^A&#tFyqzT#~E3{6EyB3a%AT3>}pc5h} z-9aLI%(@)}4$T%ICCu7=!=tNV0#Q+u9%(Y6eermaIzu3H@y1@ubJKfov9=LP%9lnP z<6G@)w{Z0Uq?9VRkKj0JV2olZjMWngQfi7EhVSqas|dv1rtK-82g>s^(7YXz3t?1< z*xAY>pd2hh8?R;neVilieUszyMB#tNwrHT$S7f%0e zP74cOYOSuJiGGSQJ|LcPeg)kCJQe-DM#E8U_|YUJ^~DXzFNbo$qAt9W|$OI}{_rS(4GaJKkJ!(*}iCjMSU45RTvwQmG7Qpcv*i#2X=Mt13Fo0@F-_ zmP@fgB_-3ssZMLzh9jW+?4A(xT@G|~M^AzlW*!>R&ll%V9bLpj(A`=v37VQ82Rk*$ zKm$flmQDNPm_Vb$WOH>p_d99U^Iy;9TwNh38Q=9czrl5VS#KxACXusGZk3C%(gl(# zldlm0T!bh2u`aX516^fk-Hy6L(^tn}dcjgz@&nXDL~OU}-*BIV9S6O8<^FT7b?CC9 zpLja-odW9)#&48l?MI+F2Vu(_;`$b|Li%WyS}G~_M&u9GKbS7!nk5X!`h5G4 z>;);!K}fZ)+f;+_DnezaVkQQVUhftGw_f_Jv+a>L{+Ju5vvhZr<#-&Ou=bhAaexG2 zbimYo+;X$!h=sw6QfIB`TE&ZJE1B~eJAcmWMvLynt3Y*_L?wU{v1KLl>}V!XML zQ##|*GS3y`a%95GuJmxY*~@_3k?m779ppt)!2h1I2+9J2NsJ6MzjJj&Caxed-Ukf9 z!j{@HvB_6u1dS4Us3 zV(KKHwOE-qEfqIsTX+_$^D1Xhv{XJnIkz>Mo(vai77%lxPcX3%_?UMcCPE^MUi{gZ zFO>pti~^1fK;UBjxXAAa@kBsiT^M!gS>j|BV6?Zxqfb;kTqH`D&0|I)Pb4fIWIO5H zr3^H;#;&Vx!>UC=eTMSez(cx%+a0=RmYH3d^2a)KoL9fm5m2ujU6GZ_VyVd)35*neN}t1x zXwFz7XG@zdWxLAh_M1n!2Gm=go4J-Y>3TgXb1;?s3{I}0dfFa17MqBxhD$4#R$>v| z1XWx8?%7)|^|sqBmD)(lc7S@&ulP88Hv&g+6;J(QuV1_!AcG~C*oyitb>;TTd;P&F zf@L61iDL>>h_l*kAORyUY-mvEY%PCULx!{a@YLorTxo4+ekK|y11U3uG36Q=rrVX=KP3Xi-0uW zv3rQ6Xv?L+dwft&6bsAfKK1HB6Hq8{NFbHJU-pd2Da!2~Td7pUn;GiROuN=Mx`-Jj z-D|rgZOS+p)>;>qjyq^uldqFU*JiMA9tNc3w{O)zsDWMPi>objMi}%frFW&=?t_8R zBFc&YR4mO)$ABP!S1e}$gz_4#=xEmzzSXT{^{#6qbDqZ$r5d5N9jl*IK2kSDCrHPg%2H=xg(FODBWNFGXgtLXX8F8ej|{X3z3Em)UYl%|!}z7wCim!3wP9g#L8w zyY-~hb89PV(d{MWhHBnbl_azisLI%S^^8-jp3nG#q^XPp9uD$8^>R6zZ7bvIcMYiW zySQjMc!XGzfS*kVu;nB?Vm;ze9%O%FyA%X_UZ7w#O*?QZvl%rARg7+U+~_ET5U?3> zCGpO48`dqp|Ho0W8{675spG@XUG;DgmNCy&6}Qx1CNQ`otUM4lS}Th^?mz*70yap@^QwFe&&@LDO_o{71S=g@80i{!oI*P0A<7tWa~ZX~JILO2+tM zGR<>Dk#g{|8}M1DCc<)Un%>3b&x90K+LS}uozDCDXG!{L(WJ@r_>NeGgo%2z%X zw;(}uXgYN?raOq^JA@gH^zqxj=5KR_Nn?pNpsEB;{xA%|FDKAMVq`w!r+(Jz!~9*X z>G9Ubwu*igXVs=+EO+mc?!Eyt2866NMMzX4h2TsPbyrKyvg585!;PG4el}Av-v|Hb zkb$PFt1}fSB|wg+=i1KQh!aF&C?T^*=1v8PI*uP%*woizB#(C#8cRs2+3N6H^ z@2$K{Qd<}$AqlW&U8_x-_;Uq{)~X;g4wl6~4L4SO>sGa~)-zh7kC&RVA4za{NN)eO zsL3eB>SmF;`CjNyk63!fY8!*CG4E<}QMR0JOC7@!V}JpnfZ>>P=1hs$3j8j0sOagi zdPX2zmV#?Bv5zP>9$GSlAYV>`W~(#MoDRXO8t+}9(unnWiWI+rPS!#kHw7I7Rh}tjY^MvtVbPmjxVVY-I_Z0f&W3K|wZPRwQ9lWkx`s4~; z?#n8I2u<0A^wuw-2U)U5B&2=BM%71DQ$>=Y08)Q-aaw-@kOFh9eaCD9e+~vq-^OKj zTc^=(bWVvH!b!Dr9F)HX<$s`6!hQ)7MgbpXdYmwyzFSjiBzbTNKSY>mk>XbvfecSB zDd0G2S#n!spzTYGmC)G&(32fJ!kE(fnzQ+0p9ixX7&L5cAZz@3IV`ri%fut*lIV%* zKQjq3BdkmTBv1^Jlv}bo$CSSd85T$kA)z1* z?k)SMR!v%xEdjKRYyV=7XM4XC#v=b+q^53saa}kU_0z2j^>k9!x1Jo6VI!k%IT87E zPSvdEXa-CP+<|Pv6!FQ}&Zdf`yK-cSXjGuEm^Q|clgJ(Gk9ccL-zyW>jg+`Gwvei| z(z_l%nXAy{bdrkRw#MmBbwEykCpjqfF~~E%pHO3^Lyvx0$4Hd_5SLM#Q;=AiCN6ese0 zGK#44Xi#q_j?p5s#lnJAnlW>7w1Qce2XD`bWhiBdOR;otgf^_+jZy9Dz6hy9^}qSo zq^Q-fB`L1%d~FtnnUp@cj=P|w@2J+=u^IM@2}**C<6>_)|Ms4uMhX|`VImrDRF?yB zO=#u~JtINNfB>sqatjESm*iOh0A1S7mgOVb9}Qt3*ecW&tzvl$?N1>G+|e)c(|TBT z4~6RlE}G0dq5r4=cy<6+6$eHJ7CMbo+I*@I@@gqM47E@d8;t|r%T}rkD8b6(IhTWm zWh1_3ka_R~ArSZ@_VJqBa)xAGo>~Kofpntw-p7s!0l~kP;i7o)uG;x?I zxWvw)6V44X2TJ~BYFbNW$$mfN*Mumu&7yWH9zY~#W}^9JlFKXX7Sc>WMy`cS6kY=o zaF)?IYZzxZev{@@V#mOYGHqCTPm<@c^*VzV{f{-uwd1qxcme|&yN@vS_BseFIj8d#jN+EolL@MlH{^864%22Zjv()jkozPcpjn9< za#OZKLz9#ipn|N#g`$Br$47`I*9QO~0vjzt3)jWTpbCUHsg3Q0GN2C{Lg7a544 zL2&G3`S-e{9~aCefbPITLBp|s7k7vo0-XXQ=^PmEqNISDUkn{nf|@^Ki|!$}5)q_{ zIaV>hp(1<#eO|**i)fC>5qg5u@p?7-As;A!IKXI4eLBskh8a?{*MMBzr(7kB(tZX6 z(%M`wn!9`4zsfs;ifA5w^Y^5mX5zm-T?8s%dimupKb;a9BiNk&32k7Xst?;NHv-4; zc-1W*oDCbKj=IVfm9!i5%vI7pz z2gi&8fbG=txa)xE{;4*tk(9r54If8*t^s2LJ` zzdzNxx%8kj=6%=JaDD;A817zX>kUAwOo4QVAktzUQL}jJL*4A3J9{y{a(4Il_OgVL zLc;)fbq@?QfR9fnki?&4o=$-;B_SLOBY?bOE@oRJDg#!ScLbAOG?Hi~<7F@VycI$+ zB*U{uUC(V$vF;eAgMqim&NOzKhjiJkbwVs@#)7`gKc9i@wM>l6kwN$WP1z(Pqw%Vk z9iCLz@7jIstTNY5AzpNDm|$3$Fmq&rSsKa#QG`gtCR{t!k|FS}r)QVty6w-c?IxR& zJw~2tIKIk_)*ul$y(<9;JOt8&hff&|7I0OaknKUuS&zn`6-o?{aTapreF78%8jHu! zsFf<{mfxVHBU+4wqt;wl0yd-=DDH)l9FA~q-V(ya#RjD8BYoONU!+_YGorQe`5(W! zeTaKtQD}V8f1yl@q!1+ClS;yAO8wJnwCefCR98{Z#M5Q6lMy$k`5ORx(uCDl0sAL# zDK%rl#&_3b1~U(_V?mdF^r0-|hqc+Vyz@&WNlSRbWGo^`=Refk|J2I#W*)==(V-;$ zKU!XxfO&^t@|CXCKdX)n91q^=)hHd9E@W>%=;F>Qv)GM+zbvf99I7t&St$pn0^I`S zIuf%2^-5_Y>aHqPM8_5+Fs6}G6<77GPMfodj7G_*EYYIe#|CQdjlr*y2Y42WR3`W~ z6fs(_Dg50h&%oMy@+ zl+#wih%iIVux>K769V*5fjsND2*f)E@CIC<*E1>YGm^9VR53?gZ!W!uFQw_!nwDlN zBVFKdZ!P&#H=UY&{by+!=c{@kqp4+dh?6Kd7bi{b))qx_c+OsFxz1QxqK#RNfEz6j zD8pq?(6o>PP>Y;>zO$3LWk&;6?{_)o09{D(TLdQO|f-Sh8UX z>8bEA_)6v=2(b{(cbEM^r^^q-gyXou`=MP-2c{PDOGn%i<$xgc6B%vOijcI60qD)x zgomy1nnTS!rVcXuz0s(;g<536PHbgPCgo@aa^OaR`bHA|h!s*Yza3mS$I4`G!h;kq z)q|Y4FBZwa9xI{NxER4PkH@hb7olG8SCu?L)`ps5M5n@{+UII@M}~j91g4KVDpJm^ z#`IX}(uiuSBWW~QPTa^HmdDG3x1c1yk|uR$zy@Fx^c}XeMn~t>Aa~XUYJtEjv);33 zs|!bf18x1C4jk3?v{voAVoc=4;k_pCKEFStfd7c-__&vTaT%nx$fW~c=UZ6Myc^lg zV1k~OZHnd_Bkwz}Y|cP`Bjw2H+ac}fA+ZWf^tZuP3)VF8l~H-gj?CGCl1Z2xT_0k~ zQLot%RthIdsuhE!JxgdgHlvkvB=QKEwrwY6lb0|0$N${Cc*3fixR^A)mZDmpgR#-VkDOJ{zgE zr8hoGeZ`XB#c3Tn=eN91x%gtAFjfn#$6Exeb&8Ifq4lJIO))D_0`_ye3FUKK{qHui>yU8O{H)y^w_CE{XW zC{_a|_JGr&P(1(6?#I>^(CMY}Y4apQt(~U2Ft=JR$pj2l|1CGZ5(wg}+zNx{sALy3 z!r+zCsJa5fWrC@!vuCYM=|QugR&`qhpbh<`pvrQ&4kMUR$=g;$BzhfK3QUMa4{^s? zBK~J*TXut{6;&`HxB_uWt3hnQ7Z*R84{mLj`pUBEsC%IWUux8x*wVg)pixb%sK|Wu^0W6EwI4 zYAO)yr-sb82`+z1e~$1Y15b5Y?HxM$ zz`syQ+@^D4q%6@@dO1quwJ=iG4!!?Xcl#v6o4S4sr!y31APP9Ke8*~s-t!c3Y0EXp zVV3kL!pU?lL-*UuVfRhWTMzsPS2~?SP>Rk;7NJlX^m_m-pr6;m+LrmEHhqaHOadHB zdTLNF-6u;u9Xl66Z$$wfr3NcBzzo;k$<#2+ZRqMHRaF%j}rn^m!6$*>&s4$*hRKR{1|%oaxWR_OE!czQ->o-#3yQ_IF5iFRo_u ztRN|n?7Z-pWH7n=1o6H+kz@dWfvLpJpW&EI*^k6O@cIKl2CI`ghcFf_%4DS8#aYxNOMpRxodKBkopk1rFHxJ( z0ABC%bpObhroW#u&DHj56X}~Ol_cJ(B!YB+AD$PD)6D!iHN~yYb1TPcF++JUHYqc; zSXW%Qevrsq?N6nDIwcm|C`p9iN4j`gz#Ilnv0l>d!xCC#@8#Ww%Q^*eOJiIp#h-Jd z96F~1uxHnXAh)iy+8uRG~p60PFmi61{9~ zLDMfN;>K_6st}1KXN^irn!K%+rxjx{PV0AoSQ=pD0be2+>lEA!{tPmuAxl>%MkMn$ zw}UZ|>5m%t8B2BO>dEt*!P8zOAbO!yS6DVgBnwjsu}q7Afad6fO&Ez3ZThv*GSHp+ zyOolVdQfE3rmBOkvJB?k(y=F$H%PKV)H#uIZv(mt{UeXu17sS zXBf3@xQ`bU&&DO3$X~1y-sKMR?SBTh{um7PUxR1N5NrzDq(JHnyc<9r$@=Q?qFaXlU=;y=LdH!yQrnS7pu0%Pb2r#t8N5nS03Z%{Jw1V3=re+rMXR66uUBkCk#|GWFtn z-2l5vPr_W$9EkqECjaNI_m5x(D4`6R9RNUV1dP?=U2a&fO8rVW5F^3rS0;1=cB~G1 zXRwBg+Fpi15u*n3G`!GV9EhcL@BKlAmaNwe_TfXKGAHC~%iXoA`+JnvqpZM8A39E>S?O zKdEEiWPFHBm{D+2^Ai$F^cd?81CDlmd@FX ziP&0U-?gM3aCyI4!;ihwW?_Ac-+Ugr09@r`Cwn`f8aEtoCQ9VO!-}&uIdjNXrEXyY zv-je%d|KXanmMFWw_WzL5E&=n+85aGw0;lMKu4(-C<4 zHqw-WUm6bse*SxGcKu10Y$oORmYO29M!%bpCN9B{M}Svvp* zWA`g}0P>^dzQM%6ov-uIc7n8zxG9UM_Do^4zu3sB@XP^g3;dM9ORiAspAkNmT9#(Q zrJUp9w#ps$+SoEnIE_|oI!LU8$(c=GQ>7=z8%#lW!|u>9=(H^fRF8d>DW~SdRnQeg zKX7m;;p^iiby`@lMUnp2AtdIY%pp;L#9DGBL<#m0IpER?t_>jG_dgrIe{B5qUmKa^ zj^D_psO2w|Hmtho(pFzQu&wBs&YRG!Lk0zN$0r37b;dhHW~fOT)>@OJ0^qmSH+`=0k95 zaGjCp9hqyh1L#xZY_wb5i`VLqJ3^L*g%1upfSpS`nip5voV@vx7YQCKrxDpcqAlXG zpHuoZ=%gJ>mI|{G6*?_494jI1XKniNhN+`(2q!9LRmW}&MD`t<&yIO*Kax(bXW@Z2!gmw) zK$&S0SYhXKel{5?Kqc`zG{i`Zk7?mqfd-C;?&@&FaWA-REh0^aF9hI~sT(f@HKCjFeU3wg+J<;yO2K(bh6IY&i>CdqRUP zXi?|P3%vX5Dt`OvNWpuHg2fgdGVACq&_VE&)a=}QYZtqDGrYgZLOf%lD zZ1-v`jKSJ97UQ`i{!mu)&tre2n6x@>qL#^B+=dd_B(`~AoqnCFNqkH$!`qb+J4G|4nn3DGSsh*AX$-4_3 zcJrfYP~QAHLR_IsKB#`y4Z_XePxNX_Qh)dA^4NyI1WSb!eF1SAE}mJQr4c6esvfF~ zVyLpTBl|b(XXxTAg8oqz*3=7kBkeWK92rvk&cP4D1K;ljQZ^v#Rv*)0nX7j>Y|Bw> zCj0VdQFnH448o$X|GJMo?|;d843q;&`k(1ycq?Y_#sgDv$3wC53C8T|Bk#w$UR4DB zzwa&rVTP?FwVs>Q*R}1+ih1n_D)bf?br4n>6rMo0i@l&Gl*YMrf04VaYxIJiUUdi% zhQu7`IB*N9lYCX^ZSI26YKs~VkYw!N_Si#bsL0wSzJAm_7jHA^f5(E$Dxmm7vOJ9{ zxuO=sd%5o(FuWLWIN?vI{mI|CiowUIO4@H_U`Sw6GlFuoqaUn++b#RP6`Ujn^*K&H zp~u|3$}U{y8*YCVe;=TTa4#hx!TN1+|I8FK1?7!$lmUB1Cryv&=l?%<$9~+U{QvGE z#KA%YAR@8Y-D?qF&@Ae!T11Et>k@N+t`&TXVl(r8;rRdJy(tBkHN~b9_D!sI2P<~$ zV8O^()3w!&h^o8!uHE$d0Vj`2^jE9&i`R;WT2eT=`!9+Ee=Tv$!ep$!L+KRzg+`eH zngiJn*QXajcAkWFLw*lt0pPEv9DkuD*|$O_lcMT5$OU%i+t5{Ncq+z?CkGS0+A21= zT{f~Y>8GUp+rRGs?W8EMiTL5#PjAL18`l)^#iC(~Rf>=dj(KY+ z@uYB_$C_7JfFjfZxhxZ4S$C^r`tAh3pT%3}lG%Hfk*EuT)&t0b*4 zOY_F@3FT8IAmniikGHcNXc8v>8qondh7=-gb7BW%ft=cK1eHhwwGHE?4jlo zVZlKW2Hb{%KSDAzFqgx)vW_RQ)b5VX?GJgN3fams{;cY5QBB?Cn6FD0YFj2x1FJhhkaYuV4Z%~NW;kPGq^VUe3Z1tQ7*W4K)|(@p zUZ55;(jl0`Y-x;k)RW=IoVYZflI~rnJjAH**6hf^;pM8=0)t+(ABj$D9$ogMUl*$X zS66qV8M&W?ZY7Ky)jo+(P>6yV$3fF95W5cAfM^SYVu@o1Z+|gnmkEaQvdq@tQw`Y6 za_m$ZrEUGaY302;JorF+JP{<=jhuOKZhAFldL2nl-JjsYU(5;nq$Z0287)po; z&9Iz#y0`8e$1JLjlcKv}?EEcX*j&TfaT^pQ&6qzlQ}J`WH)^-6wGyosGm|2qEe8q^ zbjk>jv=(QG%K6YiU#DBb45k3=JI~Jt)H%|AZgv&4PcX}X{qo#Lhsoe7nCB#YGj~9e zbX6=*U_p%vBw)`{JapyxaPk<stJl)*4UXZtif-%`*}k4?FViFHX{Cw2bn?PiIY+fwx&>(7p$CFg;Il!X4&d&AoL zHbEW$C^EjT3n^8}LI01$;1odiwt=jyH%Fgvu%tM!$tm02Utc2VbTap#=W1iMF$}IC ztV@0`!0~wj&zv@QC<>_yaMbo zNFq?a&nWXGWy~B?0@*94H)kE^HX@{}Ih(9n%?FTtEr?E9!K&MR^#VM08B|84sG2(w zcU)9~C39vWa6}OhV!XS;bdxo;?0wFaUidk;4r-)}&&}o@2`lr`nnASizSWCAE^F{@ z1ud9==vEIXO43nT0x``4bXe=NiCLT94Sfq7J|xM#KI^_f&z&GWG!K^BXsan-~SQykAaakT^lIc zv29H{w#|uc+qRudY}>YN+qRR*#7-v8WaoL$+28)t|L>~mRjbw|`ZE+K2-0}Q^f7v^ zJDP=8DaDFytqzNIy!~P0(jNt??KSD;0Bxvzx?v&ea#8mnRxN4h7mZj5R825g-;|{N zANPYaoetV+rf|j>AMU>t9f}vV?cCnxWy+!t91w5|D?A?wPQT$lnG4 z+GHvKq~0Z;eF2qq{ijOag@<1rtGfx%lL>k<4~&abii`y{d@HNwDt~G#slE-$&-f0{ z-N86WB0MT0SfKTDSw%UOa8{>@taB1Yl%S}A2!F@Zvx&Vp@ymaBrgdip><65`?UVDN zJB#Fi$@)X&SUCIW?d|jFV}d&EgJWt+xymF4)^VQHACh!3eHv$b5mI6!P=CS;n!;>T zZ&{*h;oCJvI2GpVW4YU+j)WGBY%9g{AvW>yzmso#+meo5Jj^joSTyN_zebbuRL|V0 zQS!*f`pdXl2N1z~g2`gfvo9h9XhmX3l+GV7o}n;U1L<{T*e5*_AyIACRE`R+bZ)MhV=h5e>-aPQKOymgq%Z!lWd7H<8IsRsoM+QMvG!p<@cF`-O`W@=938edCv+Q~I>UMg3 zs1CXIo4U!l1re=N08tYR-X>E6QC)d!-`?3YCN-g5pHb=|!~+2&TDFi1^)Sg~P>HD_ z+O(mJ>Q|w_!IG(Dt|T^dj!^_fWua4)Rvq??+5MHDt?iW%P}){EU3)FivN2UliKj{! zCbb&J_dBvMN<|Rp_Y=wa*!Z(Pwpn>|qdprg(#&{{?K010MgXPbkLldPgzVA6_&vTT zoWD`dd)v}ziC0AyF_mYH#N2vug)kKIJY8UNc_#8g|I9=$32sm@B6BYardnr2rD2mO z2d$4`6O+)GL_i0s_LC^0L-i>vufnN;XZS%v2247+YViSd_RzSdmxTVF=umi%PO@+n zCu{C-wGH#fj)$*6a;ilm?iR=<_s4;NeOAo1FU5nj(8x`|!+@p8W$s4PUHG z{Yt>o*-0Y%OOY=wsKXy4IXawdm7hv-Iy%pbB>`CgqUMCt)2?;+7e{BK7FtT9k(AGK zch}E267+D09NdZk5%6yZR7}~U#$LAs;eCM-dka3~CC*ikf+Q%87#Yxf$_!o5I;$cO zZs~mI1wFmxp9qEZq>7&>@Cy03@U$p{jb%Xhp?+z+tT(P1OD%B)VU;@UV}nj}tgpH9 zqDgt}yYIpOXXlS$q40hxWJpHR05#h7*jy0O>rgc!3X4|=b&o0|`QNESaZpirX8l#$ zSFKX#LVYNyPZ|3^;7}otNB({i^**^_WX&z^jXzbXtM+n>D)W`)rc(6bp0_?w1Wg#ZMT?Rd3DMKGQ`vJ21Isub+WNF)38{@IjRpx_L#DaVtJ>50+hkiWxGZmU7A5${9F-nvt>>>6<7ls?qrPYNVLX-<3 zEvJ2ZZ@+SJ8AT6C^P>;H9nT;w12olb?0%~3?f>OI9rf(V)g#pkJ$Il{zeCJu$Xyx| zFubSioMgyo&63e_ByCIKH4aD$twsNRX4Phk2CVTom#uOEI?HnRJOo&SDsY)foAGf# zL|~~L@EX8!x_|B9xIpK1#<-eN_}yn<^$&TPJ3ZduriLp^x9U>pr*__ZlU1Qh5T#Rg zvp`Z46j&d>Q4F2(&>M~piacC1{>-R)B55}5m{3~WU6*EoPcGpqd#~g@;)1R0`J! ze6s~q-SFGXubso;MCw&LW~^P*U%5l+s&j=5h)!&(?y82c9Bs?+LsxB6cby~F2q2lm zdu@8eg14t-qO&Tq;zYhWfb%lpgq-$Lz}HlE+kr9Xmakdko(dDsV`Qx6P>Ew#N$T7B z*KT0ob`_doU`FW5v6D61A2Ek>bn2)OipQqLL;pY=A>5qi0ZGU`lc1duMVpjqa9uDX z2#veTc9s1(6mv)7&E1e1g-(c-Y$taC7P;j_o$I!VUM)vY9+`*$h5~~@8w1+HiAY@j zzJf#5JbMjF_-38irT|rg^O(LiLdqI$vclCy7L!N}2a%PvdJ7;qB@nvsZ^ge$?%DkJ zH2tJpi~Gmfy~gr3!@sn%k>|+aKeBR0a%kbYg$ySg3^Wl}@?n9>4v3PbD3BJdbYQ|f z@ORik?LP%ZFc!tZry6BL-f@Bah|A2VsNPpqkk>OdDTt*ghK1d z!Wi=-)0vk;5#NN@yR5yAW(T!=H1RPx1HHe$DjHAnhb}fljLJv|H9NL)Uk`LBbmeks2#ir}f&s64Q)QzJ>rU$3R$6LRBv~Eq!fi^AvhQw| zC|cS4Vu@iAezs5Lyvd>Z1>b8xAXxDcYqWut=yZxAVlDIr$jM={BZl}=_MGHh;K~GW z#W{@Hv9d)wcF@M;&ifzXTY(W&L`1OIO%jQX3f3e$9=j!yswJXrV7=mO_$6FsL0N>Y zx-l1yR!`LmU2SMKydMywAOWzvqOrJBEE#45qf zY5L&0%RSkiBV&O;siZV1na93xAW@L0B6n%WV9XBl*-BfOO#LJT_c%SLCEoo1RsmG^ z-^^_+zwUFbbTDTZDa{rt*7MVaHT?nK_qoFujDa*F3bt^Z`Ln6mk)#sYSdv5^;8X)d z=?4TnNkQlnl%ayBtqu9)%WN1(&5!GqI;`SIs9UW2<50gwvaMpk3_9 zf?o2C6;tD0@mpk0Y30P4lox}*NFuJ{;UCD;P99R1xN-}^TcoUCRguY3RgKEhpwibX zaS0Eog=%80!;RKAM;L#nw@XO0uh2Ojuvxhz8L=vaAh-ykOF110$Lx4}GPjZpuGT<4 z+L8D*W$CDX^a4^>-5IBpda;u1H^MmQfL8q=a<46l!d`NzB}L_dk5sYIY7(GQi?E;J zyTz+S@3F=9KnR`2Yeo=meo;^bWOn=zV}7 zw{qP%56GU`xs%m`G8iX&@q;zC2}IoYI4pWAPkQ*$qKt11BUUAhfp)3K+{856!eDasB#7_tYAFd% z3_#&8$P6*8Q2vZVbs;R!S_r>+Z$R#aGMH3RP?DVBIJhUx#@p_ZZ3FerQJTPAA59$O zzLU3u3TXqCwj60-kWB=zlHpFA@PomaO99KYKtceI{GzEE@Qv52%;cg@`Pa`EDgd&G zn^C~0AOf_JNT(spB2&fG(5H!+gXKi3g3tRwoqr7%n?WZVO-{5fhl#%M zUB5O*;jrgA^j`C2$2&w~e^{;Zm6vAuP~NuulFV+@PM$lmu?yp)yHkju^RU}qyg))$ zs=P#Ttr#XBgGwR-r2yK12pJl)e20j-UlUgvM4qwkmC|~`eanizs8}bHmXX-wXp;No zk8^GONuR;-mF3ZS3qkE~hW7ISB=0wQcG(MI>j)fTwK^4mIM_>-vnXg_+lqdD*lJ)p zOgt-kzO&o@3Z^s{zT8u7Vt@(SFaA@bt4FHo_YW0#2JOJ~wsF4yQ2vrAaMOa}e6H2M zN`uUjCICQym_Ett9LLqi`J%NaRpR{^rV+Au|DS$zY@(z(dvZn>+^ga+E;!FLg6Q!p zEG13aZjleop^2zHg9k*(Y8z+nU{2T(B0-g0R#i#&^ffkYTceE4TL3BrkIi)xK;4-l5$|FT= zseT8qZkrbW6Ynl?zpp`RIG0TJsP*3eXW z@%aV`Tq7FI@OwQ;d$#BX$OL4N^wDYZ{S+CYZ{E#qWnoBFlm|6pk<>)yzyO;jP9^+FIgf9sw$W%j2- z8>bVJQm|D#8l5bZXLiRU%9a4P*b1hGbd?qAsW!;G{o8l;XU(<$fQ$AY=k{zu(JQ_NjJrVF?F?#=1c(iC7OSW$? zbt6hD!`Q4Fqqd7}#Q@^pT3fnkIy=MKlMKInIHYT&h5|gssh=MSH6s9<^M85-`(6#O zP2xxGrBh*Lpu#43h*^sO3gZtAP)h3E;eo8fUl~y>vsVu*_>W^a7J=r+-_pHr z*EuoM0&oKd12ghJ65RaU`hXTZ-8%u{jWgXkOISg7^kv8D zWIS3inlhNwZ6`~s?3X*#CYIJp(?QdkEquKSi#yj=cKJs8fh|Gl!=Gog6+b`j&u+`8 z8m@{DM}AZsPf4wz&BALMh*3M?4VegF63DuS4FU(6@XOjOw}P97Qw#mUQ5q^Y(XWzu z-F$WJViX75)F3@zO6R|gBC<-YU1jH+ok#CH{(a&Zh){j1R@U5=tY}%rM ze{(6&MR?skc0v1Wu&8j3#E=fb!00)WG_CZDJ0Jd@_t@5F2>&Gedr%my0)Qa`camaj z2Y>{Qf0p?A!%nq@`F?9@zdH#Sh40_lZ}5xm{||oolH&k;Zu)dt&BAGaJxF78{X{0> zc55(&FLKNWIlv`v*K@`USU%Adm3^@Z_NM*zFw(z?bh;O*24x@M(NgDkS?2*rVJ;2= z4rHk+5b5_4r)w5hVHNhDdGY?TJ1i;UeyCQt`h$m(>@^83kBYlVt=rKO?;HKrXVaGD zd@V&epJgBae05Yj3V-R_j*V9mI4|WrrQJL-h!{e1`tdw+f*qc2!_Dw}+k-QyXKFYK zTb`q51h&#yBKp&F0Q@FHKP2Ph*G!}}hU^Nj?0-apDz`*3nD|Sy$tLk~ z^3YL?(Aau#9 zVIeveL!A5PI+cypFwJ}h`+|R{#qRmTVo#y%Fa9%L=)j+#II>HvTO23Mqtg2&w&ddH zf_01!gl1Rrgm^MMvx_v!TuQo?29pJ?!IZ@eqmZtxs?UH(m^~D8TdNi052OT3i=l|V zU&oRT=ZUBZP>yPJ`W`$+==#7x8eW!ag)1oqh2 zi*&}j=ykr7>peQ2Q};`ix-Ryp#bx8_~+O5|4zH zaM&UstV4Iq!jT~u(F{T}4!FMbX7o5ByEzYad-^ZBoCJ>1pXmq={%3kQSUebe64!YDL{-s*#7y)nQEyd| z;?gT~j2v33TGUo3QMPvMGR?>$t1CX*>Z#h8PSu6&f2&nW{F7tKEChLUsl+Uxk_N?sM4If5{nV+!M0&`TV+FiLh=I(AciSEF~ zwV~64uT@`ZQcpnig>=l+jdq=){CUVwV$3!YI$>dvl$anuulve~kptZ-SX*?LE0^ghZ_O zP1Wo7TC^bnCuLQ1TK0)GU7_D@Ps4q~Z^bDt@*}S@dlIl9jE{0~85OVuIzx6da$ah( zmmuzcm%o(o;o*k*DTsoFfW0Vc)h_Y#@%5#}-_HzPV|Ns0jwE+w6458>#KXj=e@nW0 zS{U{NfwH$Ezl<&dd71MaF5`L*4I`xAP6YOhqTx5pdYGc>SiB#*jB{RC^y5(tam}>V zLiipns~Q7yUnwWsD&Fvc^*&izUTIVp8M4E`lD6C>l|ijC;1;g>?hCh zQV+7f8beQ&%c)z*qR=#Bm2ZY`n&@fBGeI-!#hEGf#AxbH*HR-&bUK>?9>qJW z5kc6rIzOHPHV*K7 z5m21YoA$qJmR_6P!)6y2cC6N>~aBZyN$%^R# z+_A=rqDUfwnMVA8!nu)zrm9nENMPN=#QG&Kr_CL*wolbq&IXjVU>kNSpS!dUZuW^2TFfrhyQE7A_X&H75>+J3AWtn z?mXt_73p=)a9FF{Bj;Ov1Wt;YHHa)zvhtq_?<62M&jv6aVhG&pL1SzU`>bQf4`qkBL4WT0pp*LmgZ~g zG{r4J$~zfFx;`8rQwqll#L0aC!un_4J=Do7ZGn$5yHVv8fXjQB&&V)Jnool)DRG^= z9~#o|R^nL-Cat&Kc;_qYGHK;nFB7UaSQPR~0ksB#dz?Wb3L4|Ay62)=*ixsaI&L46 z;)%#H{M=Dr*QA}y#eV#v`Xjj_?~ZdE$5Gqlf>16AqdUm5;f7Fo&d>i?1Fkt;eJhxU z+?+hc@1KNcL9}C7R6kK>?_U6ZK<;oUpoLy=`r*u2_al6yKcLK zsenvHg${~lWtyJ|lD{|39K_s|B4-G1&ss_9&W}{1`6AJ9)+!M^n3o}d#4WK= zeh?!5K*!2*m5ZKHqE65Sd^gwFg3@x;xhYz_u%XFVD%?B>^^6*!$l_d$q}*vq`}!X4 zB%m{acv7cd*TuUo+4vrVneF4ai(Q(rwff@nUpWt|PAm>B3Om@+-!ju@p&j}8; z2~PwCh2%%^g@#xLL+ZcK+ZV}yXDsfP>IqHlTXe3QHN_ml@B8085lA?j1+UA;uh9;H z??2VD4efNwcsHDHSgP`MwVu^3>sWo#jKf|3d}IW4 zjJ)>(3!=_n4GC9$ce1plO>7=do;?wDDR zP5soCy!2ue@znds4CH>k%=QBn|8Bs5BcPUl5ICgK#Q%6NFtqG9T(lj;?=9EZ*Y~XO z7nbhoD~;a*5$vvnq)+pX$mBQAXo=6^3wSMjeaN+9-+nu$$g#}TWK4pYm zKd}tc;nKIFB;Wr~bc^bq{rlG>Nh9U-8MuI|0C4{Q)^+83UH=zj_`R;yuj5Pwcup2$ z9O7)0LRuw-2;em?a9~auhZ;tyNZ|KmK_?5ybScD1*(V{1HlH{L(+=0AZq_zrY4!tlKW%y8RY7wR zC+CHB)qc~*a4wdMNIS^g$dr}cm9*O3yq{~$uMaMvV}OE{TUxO$4;N8Z+zkxJV=@A0 z5%^Fjt(eI$w{3>2WxME51|vKeU(WKw1=!e7o~=?5?SpIl%@53<3(cEbXuJeg+s>m!z3ti4*So5)4tA*LoALfl0VwNYv0@NyUQnXI#UDTB;~dA&a3q>+ z!Pc(DER?|zY9EHv6o(;NIX4PJ#yu;Ag2RvXu8+JbS_r$-?4t~&ZsL>Y>7DG1SUl8R zB(#X zXnJIo?jM+**m3*-LbM>y{E*19mI`g#z5m*oh9;}NfF_3jhiQ9H`r;Z}TuWWDWf#MCjrZz~(ON=)&gf%A* zKkt2t3BtMff$q_NCi3BWIo9>__sRp7w1Jx%;~lOGXa;A%HbOZ57~)*DWpT*dy+6+X z@5RFSJ#7%6^ zzpgm^-o-o&R^~3hB5a?1v+9~}hlW(Nq5+KxwIkDOyAMiIV5t5xMI`IrtU1)b*&I8? zTxyh0+@$-BkA=Z4Q2|A$bdD6v4Y4+hm!mp*+ck!k3j0r7`{LB~6E=6Hha!b@U%2GX z`^!lj)41RLh$bDJIG)cOj!uC?2!oQ3jQs%{ANX&kTf6i~kdJQu8W)S-rcGC)tDgJu%~BHl+U!Hq%NKD#Hb@IRP7r^XL`qTvd==g0%d zBGdM~gWU=Sxaaz>Sp9l*xSD+a$WJF*- z^(c-qD3+VVPV(;kFsBxH90-A`{1f@)789GWENm2M?wnF~w)FrBl`I5Gs7$%;)yA;5 zA@#Y~LMWX)BvtA=tO)ob_!lH@rQuyTp6JREE&P#7E3xxatUUq@rWoAi-B&xo1HXz zrK!q>fNiTwZ~mkjo#M5?qm7uA=QH=cTzt}H9RvuJXv8BI{6g9#`WR#@j|FzGbvY2p z9fgsZGX)z>>w(D0ZO>9#&%x1IyuGRpCjUTSA{`^J(xB4|vP0}(uPY$%e%Y?Q}5G!ZTpXsA$<3HRP(b~w;Y}K%Nejr76LJOP%8RNO{4rm2*emLge z@ux_?qrn$3vB=Zqb0*9H3;6ewEbiO-Wbt_UyuM{tlTIOKWpEA1!VSb}B%bCi7G8-@ z+A?h@CJcVrB62Ad1(^4(X3{omXly)wRCTo6!9vOl^R+&a%vMJ!nNkbCEy#4i0|;PA;zgy5$IJjM>(v z9XW332vF$u8*5O48k7ST52^h>P}XtzTXUy9tA6yE=(e(1vk(oYY3d>KhVcRltEjZu z`vKrxXbA~hnx5abh8P&V@Zn5 zJuVqlL{D3~Bd#tcfd>IB+ekh(jlPqGd#Q`Akc=;Q&HbB~G55w((@23XcfO^rzW&Z^ zX-}5avaK(eRwhMCI!gVg&O3-2DJLyCCF*J9(W=aiff$4Y!7f4f+{RY-k_m>dtKmBS z9)6t;nk!~AnET;HOAY@Xc24c`?RUmFPpbm+5b|}I_gW;f% zVcHCIoeW(UbYv)xm>{726~zD#dk;$=weS9Gp071wtko=lem2ztF12?=m@9A}cGd;Z zc+T}7gRd7c$dCw|91|B_BpV|$I$BafH!(44QX4M*4B#Z&^kGkDM1O~@A#p7)8&BrM zgMbMMdIfCY;U2Qgo>Ubo>z#4d$2*L;#er8UvPN0?f#;l4F*c%)ap^!+E9oP1w$idy zoqlRXkwjEq`smnEjvI*yH*xLQhh)W?iX?Wg8)_ z&T^!HI)^MY%~FTS;K5&HDStLkR+hVi&=b3sP6v4O?$DvSH`oNg7Bf4N%<% zkjKmnuu1^3!T~Vrb;2aT5`Pj2Ss~~CIktqx#c}2A{l~U^f@skjkjq_}KtP99B2&Ye zrE-Q~p-hVk8V#*Up^^7p)vh|BCk2_}jfhInl9e@ARb$)Kq)bZ6J7nSk!2ND_fYb~e zHhA)&4<6g^qwqi-!k>XCyD}2@lgxfthV3gw%B6oB)~h?=4}e=IHrv{h4In-sLGl?6xcR~=tB^-Vs%t}0cog7<62MGAL@XaX$2oQKR&eK=f%iKZA-3@-DPH&s zk@ncgQPat&Z{&f`)Dlz|3N6M?bf)zEZgP&RbDZ3C!3v(dMEbySw%3w=mXQCKAF`rdIFWK%N~nS-z6kq|S~>y&Cd9Z+ z$%%`sOnlnD(4#Cwt#=)%!J|rFmQ;{Vu3&18Y6l+5<}}#*+la1lh(9ETc8d|cggrV< z^TkBmWxb$bq33H{4)*%~#Bk#T$hZ$!d=(n6#5Li}!V`wAD{8agI$CnJ5;L=xzFT#e zYpwDdpH%1{!2FK?`g)n%=D?`zrRa0)^hvQPJ*VOwJc7V>Y&Hx-&gJ-M^}_u3U;scTq+s39%2#9bt4CQP=V0SL}K>&a$gc8i{F ziS@LFAULnAP!$-B-yuGLW&E3wM-C7hhqI=3Z^Z!*!q~G{Yf&)^RB^6~_W&R;SnUJm zPWj{L`=E;O`D4>E`T-z1;eE+-Q&D~q47xA%v)~J)s%`gJ+5XHB^8fWFgUEtG-|7Km z0JT>A%F!&14-F`skL?Z|8B#w_L?GcY+z#DhLN+rxAHXdLNq;I2yyL5dx72O(R{ zCiXsg?Xr1q+5Ee$KUZP`#^WbC7yc2OVyqp<=Ct~kV+!SZ+CrH+Lc3gmy1t#$}{{1}x_}B5%MRh;&7m!n@8N3iZNA zGG>Yl#Ixns>vckIP(+L2PL;x0WeM98l)!ok6SXB>j(iglqN8uv%f3B}>-iDqk5cY|ceGQUo%(iL zI{vY{XvP#Nwlfy9bIBxf24i1nkgta#AcPDI2C9ZkDL@l<*W9%^@W@SZcg497+mWyc zthVIm`T90>GpsEsuc7X|+O;cndE<^>3=93y)ovFyEVmPiR|Rn+MJ{l_J&n2XlF9hl zrcWV(mBXhF0KmNdwXACzdg+IRB}kc<7Bip4`gSYApi4;*781~yH)8^Cfm1>NK~b$4 z4+JS_`F?#o;3()4%RkwI@@tH)le$<3|pWZM{jlJhD8q8%q zcpsi7!I0~_*tz4P!a(dF-W$-fE^$_ggjZ+>@HVOH{kuGqaJs(wc>RH4DMPtAk%dkq zW+!J2R5<{*B>1xof7_j$>cIB9Ta?E7vLHacj2#p}2H(J%+EI)wvS2SmN;w6~7(p38 z*Y=o`vcbHr*)Ac&gw0Nh-HhY*U{gd*+HZ4cw zjVeTgGN?_>XT-tzt(d2GXzE@JXj86g1Ft|kf3(JcC;HA`50LaE5&1a4&hOSCuds6tFpo@TR3ke56emm4?;tR+^Usr!03ar_@NVbi?vlPf~q7 zNOu5S*X3UW7>GZcphLG|--#p)0Ia&SOtwe$gg}GvYpZGhx%4t`7bW_e{}{6=2}Z^R z8smz%McPeXik>v*OhqcRj*6VBkcEvkvpMHk@#^wEP zjZFf=gChH>TQF-BMa5WGoNAmbsw9y61ctA0sXG%YLXu)=?IcbW)g)`aDRTPbe?$|b zWd<1ZqZW9i+6Y-89OW&RrkAQPpy?~Bkpk7^OQa||MbrqXL4)`SPI}An(t`#@hNj4+ z8Nxy_V9Rev^Bi#ufiMLf-k);GE5xtv20s7_=-rnXQ3p&`*f%dSFf;d`yexO@Sb0_e z@VDt$5HWuNY~p?(a9-1(ZDf-1k{5PRwSN-lL+#;HM|`r^vc2bD z+i8$I>Q_5ueyAz?|7^ed_iGd4b4n?oDn`YQgsxtxn?_BvfD_C;b+wxO(*dtc6xDUv ziM?74$xH6LetixEhZz?P3xKhyVrr@(1E9(>Pfend3+)uaUwcG^6ncp{+=Ve@f;mFj zsET4!u*dOgn~lXCUVdmTzT8NeFeyTn5XW1|NsVON_PDyfkPL&9)8$=u$4Tpqu&eLZ zA#+yRtby6BGj8ZIopzaq#;b2idW2K!j6mt|>9(d(=@u-TiCHlw3eEbvd&cC9h(Q)Q zkaSB3S-B?SHpj!sL_XzMeL9OoUHTmTblLSwIYkEyrP;Rd`J|QEBi8BdGIYO|#H3sD zp&$6ZqIUjZaIb;Qf$bjAu$#IBc6P^8G9n3y^Pprc5W7 zDO{^F0`qNFEYJvaIcl`&^+Jo9>A`A=aF(w|B8!FM*C_=6wYF7-)OXg{=;Z7S>!h@2 z_$u7eUyJY^O1Cl7U%Ohxjum1JvgWZ15ggagNuL~_S}_#lcY*2 zVzNkrGqMfrc&Z)BfOYnkK*{SyK?tzacWTIsPCmTw!#x@ug_ftMyN-7sOx2Sx1JgDS z>nN;7_8v87oXYe5_Q0z%Th>7sFX;Bi;2$n@!4pZBV>lfA;=(=(ZLjqqV$>OEjhZEF z()nx%7#r=-m6bSj`z;TDa=sp8;|c-CF?LUf59f~p$P$650Dk~0r2iOzP+z?3K=@=0 zdrP`ZixnNJQ6W z;0l{%mCtc8j~ONbnIRaQ0m#8Gn71=8m;Wk8PZX#aW4sJ1G=vwk-V0L!J zA!>pIlTtmZdN132;zX*ZS)X)pfrCDUUjo&L!<(}KiL@3Y#H{At?TI}rPT`G{c5>(e zKa~f=4Gu$scj^b~m?m$Ff z#Tj|36{JFLh#iZ+DK|x0MMQF*B4)Ch{ZdeZ3>Gv%jq?BjK-~O{ zSibj8WARF%5z3%?Tzt!ucuYR3`zF}Gf6wVqz4k}MQ3S{=P9(uWSKz46Vhq|t<0TVx zjwE!(7n7Co|LWC$5TRh%W5ri--{u zkr7HPE<%dCH}s%K7jU({0XNOw77dqh9t8y-6wVwl8Pe-$ga)=W48sh`nnc5Ix@~Zn zO0ndd?>ONdK*p2eObDEy3^VTo2W-w%8$-L+H@Jh+dqQ}gv~K4O7K`yB&ka6kuqD_$ zTbL5v`W@N25>^FXyPea)2$r&lzQbTZ7;#-7z=ZwxX;ql>LqUN40w~$cx&d&Tt2z?$ z0LQVT{E^K>zbS`>k55C$&lxznGG?uezq3?AiP>8#(SNd{=NbEA#=ZR?W%Ih@v0_IP z2Vzf;^)RK8V}?k*j4NZ*b@9*)Xd6RG=!jQKNKp2ox9f>z#n3xx(?yTVK>svK8bb@T zbjeB?IkiUQIhirhleg)^2aLR&*f29rFoZpTbpEfvhJhLrL5PxbPuWR_>ZX*K`lp5r zCTF*k7Se5QlOA8zZhGstLaWkN>wd;Ok&557Jp+}(%HlFjf_PR8s8z*J*E;G1rb}>eimnz@#?;f9 zd-ddLPCdOhIbWx?0}?i8JZFhO`s}!xGTsl22-%L(c=w=crV`Kogl#1eE_4V_Kj@wR z?j&OoqeT~2ZM++9&;%b&dKbHw0#6lV&j&y6h@}LH7X)A!V6s9r9!SaQpbC6u^T%~{ z>6CgG#fUS`ve94p%dA||{J{&^_BS&FEvq+J#x)Zli&e@yNtw|fedU40?$7{$YF=oR zTwPs36Z|)?8Ua5Lsvkcz6=I306C=ZfgM(X1L)Ovy$^V^rJPV~K_FAY?<|HN(Zz>q= zdF5oZfY`m=`YEAuDGU8lR_!!ig>K!#J>tSpQIT`RbXUY3n@ZZiQOh2qZ*8gX8l;-H zVIGM;t&R%ThA62vfZy+Zq;zRqc2A~9sS-YVu7HEjDOe7>aE!>i(wGPB=2SHK8$CpW zjFya;9=twsw>p~6XgZW>rzb6rkJofJ#{Zgyl|06yR<9@dCS{f4#6g}8xsaKt7@&mO zZ`#gQx@i>^P7n6w*Yj4?mq>$yqH=-UKk}I386Cgois?hA_8w2{{|Q9!@oQ z??|x#?}LCpAdtFg!=>R9Zt9SCMYrJMsn!|rhV#CBZ{km>9R<{uhl7~D_=Ay6=q=4F z0KQ`(z6Dw#!iED1jF?o>5TewZOfChqQyi6W0dm-&&{R?QT1G@-5wr`Bo=oM@)p^n0 zP&m5az{N*+$NePhDPccru2q)|8M*WRM%rkB@UgJdG0`(9XNU2LWT=_HO5$IMkHJH- z-lf~FXRCv|H7);)UVV?d8jV=Gu->^r)fo`5fx#w5qWM#L&*;nm?(9>V^uWK@n)W@) zzhHB1aymuDC}msGo2oqODZw+%K#7a=_1=`~b?#O$iB#0kofaGiK$cri?}1WaIoND} z!|`2?=1MciaBTM;Z!U7cUuwXcj4RL**&+e;j$N6FWJw+MauOi04}t1eFS5IM6wbzg z0AXV2K%q$@+T88N@N!~c;@1B|*FObW)-`Ro@G9H3ZQHhO+h&(-+w8JkUAAr8Mi=_8 z=iL$CAF(6$$vjynBS+-QIp)aw&g+4EY^;d>@+-ylxSNTntkk0qje?a5Nn98?U^J<( z9(oR2IcQHM3=jl4{;Wb?*9rVK^Nk*pUC1R}vTD|m>_yk;q%Ob|W ze!~dr`v%rE*<%7gj_B09ut_4OV2zjrcHD71eNBrxCrl@07XpmGYybcpWdc7H_WS#% z2a>f7DG`ZT10%v=f(s>z7#hlU&;};BT{9h@v$%Xe044i0wIDu4VSxcM{plvLiR3+W z6^>>4=nl2};Xw`NhNF`iLv~a%G04juJ3dW#2s6nXbWCNhtw%AQlGzV(8JkWVOM*GM zp6dFk`Uk12cezb_cRGDc7q$1<2VFmf)JFG@2)y?x1KJJ^#zm+T#WL^0a41jYlyKNK zTZT$cCseP?V{TFnW~%mPEd3T=s|g(K=T8~~r_yCcRxpuL7 z&78n*?azPEo$NJl4n;FQZ8}I#)%Tg7%*1j>CFpc~W7bYrBuDGelf6BTKMK3i1;s5o z=Y&Ho&@b`sw|!0dhTMl#1+*lL5g$tniG0gVA*YnR@+zUWnLJSnmL*gFQspwooUn8iCB-dGEFPB*b8jbIU~&~a&>gL zc9B(bCT2Ry?F3AQTi*fZE?b>zbD<%|Y#%NJY`EIf{i(mjxMU}WUAB~&;>HkSMt;J{ zXe&iugvAQf8_d^?(;6ge<36$>ZRA-I8*H`jJNJ1tYEh>F%`O+K9PdXi&dE!Nxs7fy zCi}=inb^Qs1F8)`gG&%AgOp2sY7}866i6=kry%h<>{LU7PaX;u6J7pEh9H{3cvW3t z*ySD+vfyrsq#E%w_B~xupe~+I(^vk5pG{p&RrR~F2>{3sj08F%WQ>6&2C}k`PNf0> zeo-HG&r>3>OdXP2&Ox6k42e$i+SIrc0{;Ip_;#Q?c(wnvIpNTQ>YrzSb*5Qz8Ppa+{t37}fa_X#o=1TI{EKzDkr>2h^D z;Ko7Ick;RtqkTo*>&BVNp;V^9T?H)%I5n#azpk{$llkcHWS@`7Ne`yiS`T%RZ6Klv zzt2Hp{;yGs`18cFkP{?GQw}t=n4~Si#KZysKtRp`fUba$pC7?2&!N}|0RXgAvxope z;LUGHicDjg22r+Mr?gM?c5dVwf=1Qh1Rr>92CyLjBmJtRdA{smt@*$B=1!CZgXF z4|%@e0yG_~(SrZp|2A(rV%JlvA-aXX>jjU1^BP%^KHJKwfYV&PYbktc=CVe4KOw47L5B~%cb8+5X41VGC`$=P;ioX zQODYr-ZXU?7;sz1qXn=?qrx+FbU3b~sS|Y)9of8Mzja;#> z6rIERRRg*KMGY-DLmjg*g7-G`=08*ckAN`wx!|Fmey-R4RPgU8Nqwcoh?c_0+q3aW zAQ{0qTSwtsQmfbMPFp$8LM!`fyQ?HoSZ#`YQ!qCii%pWnjgBF+o8!FAczf z#xA-`_M7(%!t5(Fx{+$v*=QjW$7%R0pc3yzGhtVK=HHsEdc=5NufiiH#e9xKqHK() z2tjBcKdC-xKG;c@V*4&7{t5d{BNATgLiI%J2k)6P!a_bAZLJ`vj@aeb@FAW8H#Lw# zg`+jGr2DaMEtg>eUETcz88OTbp=ogPSXu;lrJ(u487Ur?`D!2wNL%hcU*2^<@`kG} z*=dU5MUj-7ka`k>))D=0_kBarxLj@807JjUHAlrXTuu!&Ddhd#obKp3<_jIGD4QX# z5D<|Z&X@FHgxU+Cvs@!@uuB4!P+p?+!S_CgV#NSqmG7t zABnu%;=ZorOtFSfR=;Oywpe}UO@=B>N*c8c(W{%%3zpqy#5M@r+5O(d=G%n4LM^j!^7 zZMk9JNQ8rPQTh>Aj;}XPL`$lAAWNO94j1N88lf__jIXFF<}@Rh6P-Nv*Y2%()w@rq z!tD9fEM?m5LEJlOu^~9O5)20Jv6C)(5=`m&$%LQ3^^HhVrZD~lYCw`>K8%(ys@ePppIxH zN;n-LC2C5Tw5RmCQ`-6hLsz(#8&lY7!u-YrU!2l(OiE2a0VEf*e3i@aZ3NlD1qa#wUUhUkd1IG7WR*>}$};gLV<$HMV$u9!L{ zoSp(jt;lSDm^Ezn1{I7~pVGH4{<&jn)KdV-JybR|m@K-5ke%J*YxSz;1IscMX)4fi zo_@pmD(;os50m)?1C$E2JAE^U#Il{df62HB+l7avb{}3C!s}Bfc5Rq_Uf&YI84@5Y7$WLd&21;z0a`IX``D;jae5h(qrnCIjVKVm2Yj%Ix zYq`tSw~OSlmNA#S1jM}U33In3DCB+V!ub1a4zDmH>!_;Lc|yM1U&e#vdk<$drF}j5 zn#J*1aq5Pe=QscGzFk9G=>9d!04v>cZhz)@ZJnUs4hwHizD9y0*Ww-J*JIs>E7AB| zU8JQ`a8W8MDLdw>#y9LikVEc>lB#05g*dXQ5Cgp6Z%K;Ee?-mY!W0h*{F6uS_vM@l zd&ADx{XIzVg~T9|FQFpr5OE;5Th;oHc^7vT@B0u<*U-@3Z6{(u_8^n8QBC0vhJaXC23t*^Pq1oXk~(oGc$i>w2$Q$Y~w)KjH?3jOQ2OL_ke)l}GT7shjWZ`tS7ixw=LT$L9>^yP>(p=ycqW!I)|2H1STw?6kdb zlKnbOCylnh95AuRsz}??X_Ctb>}9FHVq=)pyf!ZMY9UZ*2ODODluko&>id>vl(xYo z=6oHn*XbJ6cBkR|JraOz9k6mIl!57oR=3$@MyqK>QS@hYB4Z{G1i^R^A|p|aycmiV zrwwRVC?;1Uqo$RU?#EZ%Vc?s^Kolv*ErF9aLXaeJ1U43#S*!udDopK3KIpQ5}cE;zs%9&sFC_ZFUJxrnMe3Usya9@VhMFg-84j zTUB}Y7F629=1-Ylnjb4|-S~A(0aayIRh3wDLu&lMiFX0>()vU*wSq~zjijYz+;wTR zl?!!E$5-O5=KE7(H_=nopfE@439Q77+JBRFTbyGTVnLg86sOe_mhlnB?psFh7XDF4 z%mklu3p+DCaO_60>JvYfw8d}(ub8d0l7r_unb#epuZ+loIB6#QiT(#tK}AouG@%)Z zA`4D;QQ%k_$Wl5v-e>p;wMZfZ?fPXp_(^OD{ewVpZF%wIti3fa&OJ>7Bbp5$KtV z+)}7z6mp8U`fnqVy(m~855XUFT7xdiJx~-F3tr;&ZReNNgMtg(2b>~TEIf)bYCq8) zh6YBX+46+*X%pNYShVA3Hn54vG8sV!{)p|# z4QzG#&{~r&aWOiLdX9pdi5)*};OQ-35L5G%;%*hCFVG6L6kRF|({`K6p#bJoX0 z?n0$g?bb-ee9&j-eE9~=DVrhIi)!s+2+jmCxYzqMpsIeFx17DYBf*a^>$hbtmA5?k zUd~?W(=8Ik{yYY{b)J`q3i#OK*x@+~^01*^_`@A<(`37l-7nFiKr1mT?U|?ifM-aq zbxoX!H8zn!>1IT&UgXFyEf)=R=J{Vv5G(_~yOwj%*$ka$VOfCr-~i+JyR_;5L>4tp zOa`LW;N#3L{<2_j<|r)pS6j>~S*iEowfPj2bZ(StHNHC{Lip7ao`plKf6RC|~h5`(eZ z_!W6y)==JAipi<$ZF#^sVef;#Cb28qN*|4oXtGdLF*LXS8s4vKL-eBAdzdt|j2dc43uSiG-GOHyP>`9^fAqBe*_i*7 zgFBPF4dKOA76xw*lWDBF@M0`9fu=l=RJ;#B7z%+PYdIcIRUgFXO8M2GUe(n^YC>$^ zqn5A7uNv$=YvO+&WGDp(Fwr`@9A9O^Mat(Np3v-{7;)dk4bo-I)`hBMuljNmkGB@+j<4X5 z?*aD{QWdvhgWe}jf@CLj-2<_ci40t&ydH*%leE&!fneeUvMx{N;37s_?84(RP0}|rsaDRsE?d^sOG6W6#Frs~;b}8iU z*#!z2b-;Dn1C?&*T-MkuS6AUA&1Z}^mP zdo@f?7QhCq_@(gF%RMy}?0{D^2MPP=ar-NALJH5t(9}A(6tP7AEZ;2{Ze#kEM9vFR z228|K12rlNa>&I#xrQ||wL!-k7acV>2si`*BM zoiaesm6wJW7ATR-M!)fxNvVD(KmVy1zG!}^!^z$@Gj8cub$k~{Yo^6oE>uNVfwd9h zeQ;vgew12x29LYDgx5ckLWmf-1Od;6nYsJE?6~7=6a)II<4m!{?oorygA*3^5nLSw zT)WCTA>hk8x8zX3EM&qp<@$i~?zdSjr8RfrrK6H?+kw-wZy^tyia)0#{&1{m{C?RT8(bay+3}+(>T2CA-lX=0&@7U8K z9a7h%^#%#vvg+KSXIe-Td$3+R7TlNDozBQ2PAGbJ?Uo85rL z>{~Ru?|caI{`YU7C6nf1Xw8G8`#(|Q=@9e-P2WuXe>oMHd5$dp3@hV}?_({Kq17IL z7aoZLIe#7`y^O)+_7sa3VlN$Fo1X8Qjcc>MPPHON|Rx4Lh zAF3qqQoWpUD=)CJ7?tu~)?ywS=5rwLZ!p)*gQ0>4o?l$g9jZX4(uh4bzIAI6oI952 zkq^`S2@CKl@}3+Mj!OsRm$U(%rX+g~$BHJ;;?8|9L~z~DuxkyL{Z4el9}Q{lnXz@Q z-nU8$MM3=Dk>IMJiUZ-$9ZtX1*>5>?)GBCw;{d;~B14X4M(26x$d?4SKdH*IN?xJ) zJZp}dD$_jFrn57~Yk*g3v@v)3g?BR-eHd`czUI>MI+qu_R$3isO{&+jMq2}HC%YR0 z3GNE|aO6D|QpdczRSHZ|;208#ogTG$&KNge+LA4zpMEC#R^OTsyEsps^G0CZHaUI# ziUh|{rcQY8=-fIugu4=2Rj#{)#-cjMV+%*&N4OhCN$`4sHD$j1A&kk_(HjkVB#9n* z3lS?iBcTGu%zAeN0=G!{05B$OH+d)aq8#y#(3h$cZC`SB z8sga9PI*yQ3B-b_y&$z;;RtDfy1D_iyr7Zih`{SqwSPHW$tkE@QLTBnm`-xG-HVxgViP$9vn#P#(r zo2+ad3X4y-M0yt!hZcJda(b1oH3v6tZ}-Ho-4v%3FC1YAa+^RbkC1+{EIt`s`R5Y7 z?6^ZYLS%Wm*wg4+)6rfngF&%T-}noCd+TkJC-eOuy_nUrZ6^iHhl=aG(}O}Q zj|Ruk9ub7z@LS6d@&q16-XRAoT6F=f%05{{PM02O&6pnC%_(Mj8%?JGf%f(OK+|Km zG9e$~a4(il(Cz&#a7-v}*v9^IIeg~?JI6N7+RRQ21UZ{l9;POx=zIELuH=^Y-q$g; zLL@{+E*Ex+vLRr9Yv4KEpY&xuU!-a^2+B}xws)JXeg5rbV zp;Q^Og!Z+jl!gYhk+)6w)Rco(ngUe2nB`yeARpeH zzxOH$75`m|u!3v;a+ioG43O>RGK)KF88_F>Kh&B*p#;)9mDJVn14W1Hn50~NYn$@a zX!>*$6rh$L2o;lSbPM*3O!R6gDjL?hN zTt#4E2@cv?bxk|l-;vIDbX+DS$*}uiSV%RaJPaw*SNl`r^lZzW}_B9=Y|5CWQ2>TyobuM{(tpj@Eto{|KsdOLUu~ zzDD%W#NiN(B1CVL6i|On(JX_I;!NGw* z`2_qgEfs&BS3h7Xuz4hhXIXF7Z~iu@)-#ail#7j8ELxLqaQ-_*o9&~h$nSp(Y_|Z1 zGAGnsLsdqLn)e!8sc1u;RH$A#G41rZz(fm1BW%C=l;~WpIgD*lQ@CcyMihL!KaMl2 zMv#RQS6tq!7TD^yR{C?R%qI0|fDCdWHzy1fPDlW1)~R@;>$3 zkIWz5Rc_(BCy;U``$Asst!w)3=em3x`7-rvJQ%b4o+l25Ug=J_KFF5B3tKW7SvCyJ z*6+WdK1QEqHBYh;Vdo~hMT%C$bW5TH8?sGET>lsK*8g~7|BKqdqkzxY ze%St9vkUf2qX$}Kc868~zs7@Z;NbWhw{5w&p=4z)zEzgHjX)`Hv7g0nEZVx6pfyCJRUCEGUPa);GZ2ST~|M?IX9C zPT$*)*pC150JPS+!!AuRaJd=WrKtU|4TFuZu`sy7-ZRf^Ft#VmCc#&Sv%a+)J5LK# zDsMfr@;)sfH56{{-O^Wd9fC zPsstg`5}1W{Sdq~OX!osf4U8S(~Lba6X&J5g-JQNa=h#`6J}W6aK2rV{@gw(0v%t^ z2@jO7g`fuiz4Su2!=1{)`*R9t?B#GtELr8q%|Ch8E*QYZ93sO?u?^EW6bxJgVsS>h zEUWv}(R+DbD^E0>2qFH25OP#^ud${82%2@{6qS}$0bQ+gqV(F6DEg}TzsBgu8Y=9w zVKJDeZBa0caHM92O!gp3Peyu(4+U<(Or7OUNBii7Bb; zBzO3rTc0L9<7I#~HByOQY@vqLJ;|wzJWLh*lTgx6*WbiOI4L_EVTf`^N*_%(dL6hm zS(_FH0Uux3PTG6FlwL&R5K3Ng>YEk_s#oDHjEWI;)ngiz`PWZu83TKMI# z)uKWo>NK6CKnQ329NaD9(#x{QadgJ%nS12OwM&?cU2(6}ggxc8 z!t&ZUt6o%L_|jU(2;FXVB7;1KwsrweF;p<`mFl^6(l9ui%Up3gGh){^MzAd( z9Tp$NuP08FJ%)^xgSKw?25waTidAcpGhKmt&%SQTf5L#Ge< zfrQ8z^p?Xx&}oPBfy;`qDs0-PdKcu<7q>ny~t;Zr8_(Fj7Ily^ZcC(2&vhC#Q{ zO|IL|CA#;dw^X0e-+`p?B3ZgtVNF#X5G_1Oe}dHUDl=t&O@aDkfMFv63A@HXWZ|vb z!SW7TQY-tWh!>YRp9J!A(ys8U0aVrXg|jE{LGYl9-oyVF@qYzM`Uf6H_dj?Ty44`i zK-!#gWyFe7!g;0q1!i=oT8tN^pel3?wHM7Cho|{cYP+O zzDdGPifGY07{1;we8Yqw2=P$Nv+J?cwKb&ldx_dr0)e}O!Y`&@;$ffd{waTREv9^V>OBI%burVj^~cf;YC z=st??r^FL{r4(S_P4i`dy~2xDD)^w`Wj4EFO=A`Y_oxiuh3>{%sW~E?nu_Yn;2qEy zB-@05r%4?`&6T?{9=KngUjt+qdN@_YbZ<|%^@1vo7|wQb^6lNGk&oiLoJo;admz~t z?-~Oj-hNb3$J4POf{l>Egv*zE93=EFb&SR#tTn{K}_HC{Sz{ARq9$9dnYQ0%?+l#Xty%nPO!|V40z(pK#L0 zY|w;PtZl6Eg~JXqonWUc1du7!2jvbgN1$wdof=mJncrKlvy@vU>EG8qEq>CSVe&M@7kuk)F4%Fg|S zBj(`n!Do2+uS?PR1t~;UC`>;Ds~zNM3BU@dXIN0Yb^2*{xwjd=F>gNmHa=p{hMaJn zc$MiI2{r7qcepj-!p)9Tot^AB^rBz0)KdA)ErID>+nc?Pn+2cVnnD>wfAY3MQ9gh* z*A}=}W#;$ZNPm_=ilZIMw`M*hMx@OVKwt`VzIJoIK44+h^_BB01BGNj3C}*tH=e$0 zqs4@CPQyCmAUA`aNa|S2yFalu^3^<5Na+X zBeENUKq_8#1*rG8qM$eDtw-<}K=$>!UO{zE&^vgy_yS<45@pZRED ze&8`J$q-EES!pM(pQeI;w|Gd%t$ejCKfd=EV8DK_J$HiYl9G=OKj;A^*=NFj)RL##E;}V-|z} zg5cYc{WZkD_qq#9CrlIj5!Lm>)-6mC7o3B^8^4#_D zjE2jf6$t|zKQUKXqfNr5dC%bPUc3;A`zV1|iQ-0XNQ#yg2=1 zO$Kl$%yj=Y^%@Z_4bpi>1jMSWBk85@kuUa!J<yTY@$^VIoHQoG93=GyQ*UMI@hW9Gl#hNjA`}n)g;KKoCDfNy9YXr zYSAn=8r2%Wm!zxHCd)VOkMoQNPz(BAYP||rtd%B{tJv|suo7XLDocBe=u?m-y(|cX zTB)u$6whvq&9{HO&vacMoFz+IN{C)8P1^UGT^`Obpz1t61sXp6;UZ$9ozq5u9?6bw8#q)$PWZ(ZGhe zAVPGiNDbQVRO5*hAl$Y2V@^_`>BtTrcoiW~y9g1KQ`8If7MZ{R!Qdez(qSE?B@3-q z{>EqhEV?ERZ5Lc3!qUkx-wT2gPp@%e%)nH(uL=(j>_#XxR|7z8TLfjhjv135>X^n} z(Gy!=pQ>(*B_>SDo;@Uz>~f)nqcq#PH=Qaa2)%`Y%^$%O077xB0 zvtIZZ(wevh8cxtm9o8%N8EQ~-SL)PxT{3IpqUHrgGPG$n*jTk%ScqED2p#2hd81Cc zV6#qQmqKLLcuBy@fRmKZ=we9UBNUAZEha_oSAS%$0 zDbWzzK=p+;=oxxMT`XturWF^rVn#M)iv=IhP5`Iq`k{QNyPwz*esgzmem7p1Cd?Xo z5lU3UMI$Zz3%$#&q@Y@>o@nr=)Tx0@L<|NtA_gF_UKFfhQ-Z1;&*@rP0UVXwAfIB? zwihXlk5!Uonb``x%u4x}vZRlc8Ho^clZg*5JMKhhg)QjqJNJ@sdZ#T*0vHTAiRBVg z=Y(5jfCAHR0;EaQM?7ZLB)%~a=W247Nj*>;#Lvr03@D`7CK+upiVW!1l*j%YEvDA| zD*fH~bry{djao;66|1Mg)P3WBOPYSKIM>qRsUeFZ82uMZMcRwicmW8;Q&tBvTq(${ zp4#}JkW1NgIv^ldSuG@pf;R(tHJ6dvvdUYHdP+tT#;O7s4;(IXA|S*nM{vs=qn;=R z=x>qkgHYq7sl5?+nDSspeqb2vA7^~{bx9JcBQ9%Gf=^nlCWw97uahA&PC z`o;>LTd;g(f01B>DA-6?0t6@m=j*fLu|@(g2glE$Lk(^Qen>PT=(-Uaz0$C;0GnQw z6cJ);t5`24D zIUNEXG}1IH9VL5jqG*8*^5pOmY7aK4olD%l_`^R(S-j5Py4!+}HYKqvqOcqhk_ij{ zws#X2`DglKqM>9&KXyK?KatpBHJ$)HXwh)sIgDKL6H`d4HWBbMWyevEUTJTt&0}r{ z+AR&{$xNADt88Z%?YAh2LfSYhq$8U8JbGJ>8itdmZ#PE3NykP0;JpcBcvU}Y7f)Wu z_Yef9W_q^H)>uN#vmt!Vbj%08CQ} zG%*!*^SC-~Jp{czMFI%8Oa%gi!rTFJuxE&n&n#f{EF_*EW_Tc$RMX(Dl_bdHlRJDrBELr%+2I%=GRG{b9uLrw3JZ?43_Exkw%5pI|k_IPr-Yh3{D z9a=;De#)q@g)iK|_5;XxXMbaqjtK4)(_FTJ$X@DR+rX_5dG@^$pYs|>6< z-cTyx6j*&~wbw@GQ>W}b2xHyL8UG*={7Xnxa!T9XP*0|!qOem{v{l`_zx{7D=o2b4 z5f}v6#E-63cW1^FCFE3BNRO%S!0TDVuZP zWtHbG%F>qQpGxR9E)Q>-R-$I$K>^(gf|BX;6jUg;RO(7)&r@}Iw69WWtfsYW%J>&q zh~G1p9I2B>(TVFRyJsGB%u03ZIpD>Oof_4B_|SX{8))C{xxjWfMUalq$qgE9{RvAo;7HufYvi9dr@3a3DIJnDTsWhG(hZ+0o;NpgL4*m z9~w1L$dzmDQEfogajALnB1NeLnvHqZp0mX;eM4WGoo?B8@aK>bga63g?y(ExuTW3% z;ZY~G&~Sxhm5X|x(d7ZA`Fr??Rj&j>L;!Q_TpLzUGC&LUGKG{3C?XIP$ZRA89s=s} z3|qG;SkvK1eJK?n-8fXDB!3hblOpZ@Kc3ADW{?q)AT1jxTokJw>knKt6%qi_oRCj0gu-0lCr|KdfN>bvA?$T<`Rt zTQ^}j7w$9!f!<=&(8=>4ay&}hl~=+U5y10or)x^``%9@SyHp-dWO^BM(H1ZMiOa0T zu!cM#lM>Q`<}1zbJ^+7IRH~`3WacP~@J%*`5%ae>5oIr-wYgYvi4!btphQ&2!yT9V zO~?dku!39Y$$6fW72)>AhRWG?6aR#gCu5^xbt-Xp#AwMSj1P1^ZZ}~D1fHNvT?CnC zmariAwaLUV4OQQ?q)ntPrh9!qBB}Py`I`lup8YePmWoLV%_C5)%V6z9>eQfn{efO$ zrdFKX#?xznZz|0klecuNlGRC0K{F)pf13y&2Y{-3CwrfT{@BjFOd0$k#i7AfQruoU~wp2~5t&0r`o|NbRA5vvQ+PT6jfNiKN0=#|+r zwF;$1<}?A#IGk*wn!QSf_-Hng^(AX!2qnFyrty61V3&=<1k16dQ>cl|32xLOHef~` zLX9(rY=)I46_aue1lD^GK_|=$ZUP;7;eOXBJw}@X;V22y;^mO2^4mTs^#%3Xr>}%* z<$;m% zOj{$B#VxZw9wZ-*4m0sdK8Wi?%b~;bzrQykf&Qfp!5piSG} zr|hUyl+@G@!uG>Hah=yEmIy>(%?(Df2`g32X1KD=3{!7D8J##%v^; z=A3nuLoc&54W(N5`~0^}M^$kqRFx{3WEnz&wU0-_k)=|Ya!^hkrE2SeeIq0t>4cOC~f0D%U%j#tn(DXmY*hbVP7b#hsf^)flU`twL zAvTJB<}5-ZbF;2{hqgR;M(W(=<~DK6V0gp^NvNvNAo~T7{nGVhsK7ejNm}h)7Bbb= zEG3Le;AtPtN*`kSph`fD^^4}YXv=ltAL=>LsZY-eIrrAX{>Ymg605pR`c|tE@hCdA z<`CK`hADF#o%Lb*l`V#jy2b&}-w22Qb`6TwGRB3p%KuBp--yG-Oo+Cqn4l=$zehM~ zm_mN1DzXF0cPXht;Zmu#&Zag$E+Q20H7r7vtK{u#aJP3*} zG(~xmB3Sz|6CT@lv3x(?!oie<4HOxOg2P?hycE5)0;(lhn?cVfqBi?B&7^@=6NU+T zrh;bpO(9k}LrW1u9G$|oqUGmpXIvJV&9Uz+)}^V|#1VF5cuU%uMYfJrII8FH`YSoQQRK; zVa?Os>0BXi0gcXUWgOLQLsGy*-9@)pF{mMys1%hSHm)7ijkHCPrI7E@&G|S~QZ22; zox9>UE9I3Jeq#*5tMBU+vOlnctn?RRdkCTFF_*sQ5Y*RU$ZoKvz`f90o1n0}470V& z5IGOB*E>7Bk9%(#G!c_1jfWQtCBR*>C3j&kT*;eT2Mb>U&dS|y09=UWE)u2vL+$0 zk(){U#_>alUf8~JLwx)MGBD{|4HpaD3@5v+>?9F50n~*eDfTy@_rHRWM?5M5*=K0R zQJQKt@1|S;X6@7IF2saX4u)@@{WkiN5l1w1qjmoJA-}p|A3MzFsy~)I(-s|Hvut7C z)=(jXsgo_PcSZyj`UY)9e6}K=bEZwFdg+KF*O2I8{@i0D6&rZwTw6Igu=9cGAOMy* z>y7pGhwV?YejLWTjEuiqOjAYJnSawM5MLm}l-2z9CY6b|gCk7GEDf7Fv5wnKEYt4D zg=zK128;?8;z3jMaF7HXBDp_yti!EHd&r>OW}OFA<%N)sj7@}WJL<5w z!|J%k_C7f`%`?QQ6)$wtDSJ23^jV>|7mp_il;AQJqUtcO`D0x`IaxqSyc?XSm-=~N zql0in;LUAvamm^-y5Ebni+1&nRUwpj!#dJ5#m_NgM#G$2UKjvgdBH$( zDt}!!D=c7+wLo!p!MX!zLkGaBMX9;m^mnm#ZMz>DP48jV_Q^iLG(rsfJ?CCpX0Q`n z^Z)*KnueC~TPTVsrK(*{T~tFRlU~sEfMM$`uod=tfngq9T3$YO)ABl-ODX zgI^`7E$+%>c>BUHTx$#e^v^;9W)xo?P&5fAkrIFcY(NMwlRuwkFqw#1@q*kI+CeTM zP156+1I{)6`}og_n-WO^5XROntI#7>A%YY-htds_S_mQvlLbDMQF;DpA|Eb2bMdO) zTmLiGY(p7*sVbW<(PhSyS9j{0WuQX0wvAndV^b|G;QNTb2)G`bgTYhDlo` zmT(b=I%~TK*FfgVlKgHM)2geY9DSCM3bMw#U~u-f+ka_;UF^(oxSt2PH0%&G=&h*y zc2cdEb9N@0{?*@ym0ncUyIF3yT1+)WWRa&{2$%#?4~|1v%oYd*To(k}YK2lLJD>tE zjTr~z0TCg;3lPy;LR;v5Vt5};`ATEFG);vhqBk+acApm#%Y-5US@(%v{d-0FLfy?? z?Fp!z8@vxTs5c~c2l-7-sifziujsii#h@-1c8N(yDVwOjh}M`V%eqiTDrx8Y=bFiV zp#4ThI+FYj#R3Qbj)w?u7Ah5P1p4ZoSzK5npMSAQD z|Fu4Ve{zNFm99K}IkxQVhm!^NYZFBN^Bw+77Y*r}qw}TG`(C+m1?;R7+@5mdMRvYB zwHmUNJ@pPugA4&C0{(9W-ajiK``-$H8%R+uR0cdn;Ju!awop^yzO%jPZ>X@H%Pfams z{68D2)_%+Jxw%XHEJg|TV_*8i$`wxJW!w0@SRr5eVJ`jsVPFFUgxSS zQp9RTuwPNH-kc2DEIJ0?o4kMECcPvFQoXbKvc146OS*=%IGCMczd=Skc9y^7eBiG2 zon@qh^dt8)Qm2-w51sxoi3LXExKWsfhULb%E@Etys4@y{XfsZqd8b!HhkWCBOHH*? z{(&G!a+s6RuaQVRBW9M;^#*uwv(uJub2R$3rzEDVXKhkI@>Nf7-6408q3OM>cTq&b zXr`2tW2}5#FhIBP&M}g4Y9Xp&eGgua25+i|KnA`cNe?iyWJ15#q8iR1iPdcfrkRR4 z2cE2^=7_2|;&V8hu`hUu*#799Xv3#UvSJHOrg1>4k_@9H#W50HX@)BW)o6)?#xU<;^r=Lsm{3Y&g!tV`^Jmr@E6*$^oK*}Yk80sdoyLr3}+ zQYIdgdZn0u1?zhnI&wF}Zn^#TS|9X^m9M&e|(2`a3^P2YwbFah~gEr{kurp^Af#y}e6kZkvM%PlSPba<5ij3v5N2Bm+ zW~{h5IFu)ne~Z*~v3LFI-J` zvUmfmYcYAm{5)$4VJt#0rGZS!U>az9^QofK?d2nqzO_d$*(ztU_Uzqsb5YHXjT8lK_8 z=EA*J1vzJ9@S~o@&1*jFkkBPwG~Gp#>liRs1mSc-4107f2c;!*EqN7NCHlpI$?v@H z39)kevdU4(aZM{KnoBgsLmk8(-E_(KqtRt`c9)8sVf1d=71}8VC@=s&cg>SX@Q@n_ zzTWjO6}^8o3VL6HC$j&S>W#2*s8pMT@0^ta{i;AnClBaVDk*l`q=%P?r*i?@HZdNr z{LSc#T7~};rS)e8{-LBfN0do%s}mxgfGSEo)}PqR+)hSJmA#w}uRw7x%`@U$qrL)4mG zIxkDKO>n*Q;H0q_6_6aCy%NgPCQCa$7gtCgW}Bd9=X7rG8VVJL4NWU8w%;L>x-f<+ z(Ld6Bwq?EHdaqDVTj*64K@AOm}oOyW`F%DCkr(HzDJp9J3KW z5&v5omi-7Ouu7$Es2q?aUi{dA8{d}eA^jQNukTW=g`Y)=Jz8vzF5IQu|JqC60;q1O z&{|^m58MCoA?(tpb(r~sGE^YR^Rx9@c$p_okfuaZ;ImToRes8i0>HWVzyIIl3q~*W z-xmgK*=IpPItUuJ9642O|6nl>?nTZ8R`B+mbW8g*<_Lz_zP%3;ZlFGgO02w}rI_CI6azl@3fXAH3W zBYplxgG!YQyBZl6O={%8M)MYCgc}`r#cPl(1KVQFv$}Jfmi|_Bw078iz3Y8h?Nba6 zE9#dnyXtmT)QoV#$N(^kb`As#{EPic3S0+ZFxtp5A;}WoArNM;`L*xL&#v;sNL`cTM@kH zce23tU*Xt`4a_oKd=5HSJ5L#$J6{3m@exXKL^&NJ9hWq?S0c{A^GM$_ir^HpgD}T` zG@AeTAI__@;+X&-oMuvK0Dv^pbEMGJGF`Ed3_`Spz?~v0@X-djN7|MU@>u{fKeC~r z-Bs#uB%k7991&}L(YZ)888@kw?bNC#&QvZ=$Pu%8B=M~l^r9LeSBr`;U%>N$+a|H% zl>5i9PhWW9gbKnRIzj6|jTbZItZP{)zt*#YcirpB}F^Tok1enqDI z7P~L?qLCmH3qIf^e3%BV-2MuiBbT$l2LJ#DP1X+-m8}vn!yfc-7u5IBWyi1gfmu0j zb8U-~3yV=v7v%etX>e2G01}8~Q6dPjF>FUC+^xhO5H}*tD=G|m1#`-8VR+xpmlKlP z?4(?0l+D|6hl)6r3v2OG(zwb7XbC1{K@LZjq&*3vNG^Fv#H{2}ptwwl%Is)CVFlVD zwh#cl1*o0M?3p!F{RJ0>_rfF{Nhuf2;jm?c10k5)W=o)eJ}JeH>f!Dfcr`1GlZI4c zHk}KU1Q3FZdok)OZo<#}vA|n0o?Uu5Ou>S6&EZ8@$v_Au!RFhb@c#D(lqHOaH6$1d zV$~rlwQ3VW0Xkp;K+IfB_feD6h{^W$Dj5>FCF5ejBU4v$>ye6#K`KO`wg8^0TJeYr z(_6`q@B;MxsgLeQY2aBt1{(4HbW^Sb`zK|}s-?W|Dn->XNHCqBja{KUy)Q4*ZvsV7 zgAMo(jixQVsW!F0MQ`}Naop)~bR9T#EbZ%%%lWj~2cwrVQONCN)%az(neS2jMY#OV zY)6VNe?W^%+lQ@wAYD30U)s#EM)_1iv~zIPje!AIPBLHs={}$7cjG6aPA%bDdK1J- zg9Ku?Fe(xy6aXkHU;{d$1Hcdzk{RaV*wIRrGGD}pH*>YH93yCvAFHsxKE|=O7@1`-v_ zqcBxVAB~!DBZW|c6$fN!iguF+fvzNv-_~R?qq-iEOc8d9GCoD{E};>meTKyP;){lO z57Kq4Oio$aVchQ)+x#|{%9od!Njl1-3XlX{hn=p_(|XoZ)Gz5$jwYj5+!WI{>aEuC z`|TJPMhVlE;`Wxrb2@6;p2ue@@$beei;J?Qb z%Gc@dfY}e6yJ*yDJ!wj+zN&{ioc(h-5%|!B_tkcSy?O>nr9I^1ts|ehxj2RvDH$=0 z8Isfc7Y{#Pi3AEWCKL%$nN^k03EQt&BQmY6B5+%ihh z5(+gFAgyTA7Cca)S&&6lexrCrV9>=Nfl&;!(XcoM)pOOh>jH=FFsKfa^b=kg@#pS! zMVDVe>InAC;t)pGNCS$Qnw-5I$B;GQhpF=&y+J51S_ij(;Oi|Ff6d_n?($unG{ z2q-)A^F1Sp(^%pWf2>z^?bSoR!2=aP>JjB}VmQ4v1EE9{Hp0Xq+R)cw$2^}b@~o)~ ztcgQePV+S5^)Hc4e(|PQuPx%OIWDUF5?6`OgMcEJw&T0?)z@PfKAt{k)EYPsqOQ)F z0P-L42LZs+;IU|F+g5jgdjO$Qoo>|mE~8<1Zd;wJS(*pQmdb;R%JDyZHN@ZSx+bTV zOAd4jTRkvq}&}F5z2jz7L6) zjI-%$SbslH9XslRD=+UG+>&jr)Mz+Mu~U7Bzdw8F2+7LGBUr<|;aK{Vd7C#a-3VZl z04*RFG%2$vvm6a6ZRc^!vSpyUTpRyYXwE=lSvTwVdsJMc?$Yu12P!NV{#Ioqg0q)} zUY9D*YiTlX)#z+w!A3R5lY$%S>0fWY--;aAr*7E5E?`!g^5K}0dv87$w?W_!Lrw7n zV>rH;S^|v+DG}?m%gCvO3UII-XfUg&#$cni`D-x@K9@rj9SPm7WnV0J>F98$Za1zWusyiORD+S^3 zpBnV8k#4$ld1>e4uZQ{y@BLLhso?`Kj<{7SVrPNbnRDxA(MB`fAya4PiXjK+KtWbh zGV&|#3fk@_^J(*S_bJy?8X0=3lzqG12zZXKhzoulQmA4>A}JGcrk;+w=yU|@1Qf`y z=lis}y4Bb+=@3B;t-W5miPo(YRmik`v=9+yRo&nQO*`^ViKs$G{cWA~u$|&>fHiW+ zh0a2b1xyAqyHCMNnYIu!<={`@_q@8e_$PFp=A@dG4ECE>i^tC%x0c);z6^v7(Ec@7 zP$*)c=`A!kja{Fx-ii~Rl}0sZ`PiS@6zcuO_ZN%=NQ7U`cD8FSZi91)OT5ci zrrY7HVb3w?xdA_`xAU;qHLL6#*BYzGN+HKow3uY zQq@pCnnOz3*6y*!p+-w$O4(l?mO#~UXssha9CxWMa-8b);J#`;s}Vf?7rJUqAvQvq zHMCMxLnnkt0Tn(pR^TN7P_+ffUSWHM)=;Q+r9+^}kq)1FfH7k8IA-=mhSL?50Xc!) z2X7wxl;n^DRah%uOw7N_+ z<#KfPZE5NvBB`^@UYP|N?)Do?uc^mt8yjoucx9ApFKYq+<;v@(GHF@{5(CMY!s5vu#pwrXOi)pmyEG)tpcll@vov7%{b0aq=wwH__@BY)%_hRs^IVRZnF)GPDyfrSm~R7+;fMhyYm?K zQt@4wI;bo~aEUHGs(!BwWx1J--v|%WFsFlw_+GcWHAO+7DSREgu1U7$Mh?%z)o?e! z{v74QC|&MHAGE6aS2E##*H!T$9n0F1OC_b+skO~}G*;)&AR$a!wvBSooMYg%!qL3=2peA_)RS*rkL;dYux~@p;GHF&P zZk?Ppfi=5Oq1NvFmORR7`NV?TGR=mSm8#Pfzsi26ADt!UK0HP&j4R()q@b*Z2Hep2 z`B<42oVGPcX@lS?Vh!t-VA`|Z0~r{IunfXfHJ7W}r_dV218u>-DjFd{hGk#@y$<^y zIkJCLVGuZmgc#{_dFjia7+hEe5F}A=i8R-U)LP=>4ajdU$!g*gSEEs%ms*a^XoWqc z_G|5P$ZBC+{+$L}qd}AhCc>Pdz`#UWLM3;##w-iywZB?_0ghVy$W#dvu}6%nQu^pS z#MVT7-!-z{c~hiBpX3JCGj0_Z!sa>MJ$+fYL!vN*|CqU1hYG_e?BF6;dfmQl*c9Sg z0BlC|rV6K;&eHm=c+63mW;bbKttsTnobvrmFDSgx;uaTPc8YeY9MaY4 z7=uMg#++|%=QpoCyVP8a(|bA{zQ5h3+YQ=iTFfdH!rovug*>`(jjWy!<~4`IPqs$j zac^O<@-Z|f2MN2bpYlCx>+{vJ5CX0r&;(Yst_ZdV01!+~p~(B!#dSnmp(9U~kNJq`1;-Qa zDv00yoq1-%A%qwekG_u1bUl|SB_-NQl-h^Fo_jtMHbj!1+`e`LbWDCsD5P=ZRJ_t$ zbQFv*% zkuf}RBb?aYcH*Ey$ zreck(j26ztH;5RGUZp?~j239vv5@ES4dmp_AhFwI&J|&vA=BEBOS`eJJUJHNDn7Rj zI4e{y^8K2+UyB%H%m9!T;p=+RqyzwsIC6@tmu+r(s>+ytZ!)&~sSmfd=nMV$=+_DS z^v@r$e6Bq$I*G7bh~aKJ|JJkYUF2An#~OZsuuF}g7z+n?R*-no>U55l)mYF4k>(>E zh9*zHnD+vK)i>x6o&ohw$3QOj2rSw(+FCm<7k%tSxprw8!qBx&+)1E}VIv*K5cGH9 ze(|ImwJ`=!DG*lol7t^gXpp!mdD`mz{JZV9REN`*e|`0DEN^E_Do!2o+&B+d3OSeL zPOe|P1>uOrJhzQDMc0z~p7GOIh?^#ItQ4asf)v4OtU=tAl+=JYo0bk>zDK;4ID_cN za}z6hH68p;0pK8+Z@!4x{q$Jg)DP4Sb{tYQhHhpzK7axslic9Huw|{^=O{1QDbF6z zfEcjw?>hbV32+1nI++!Y1j?@Yn&~>Ip_gKcEf@6Y)c6-CK=C~W*&!35d@qredVU>K z;-W4)vUh)WRuaGPPWrwV7U6_)#K<;WD=9<5`^fShMMj0-h8ioP&NGcR3kJ`_DXO|T z2{QxF0W^O0Ez=yNrmPS>f>t#S9-+*S{Q|&yWh)rxp#ET{|$wO%T2r9Qjk${Moo zQMwk!{IYA&EL3`PYu3Y%h82D;l|%|^Ph^C`9t04fDQHbax5{U|DsZz`hghYxi<}5r z2qS!Z*Y4B1YJ2hWj?*5p-n?B!F}OVs(kBeh3KVj&@1Vmw4eG8_CM}&OCoKwN_&ymZ z4rU7cNg05H6k*KzqYHzGN|yoSH*NzM2&9t~7!{zz?#0*h=?0u|`zcS;1!6hcn8=^J zmw)~+>KnLRwDk!#W*LFakaY$!K=@p*cp60MJT=1y1psj#H!_MO!GFV7{SCLnM??>HrDz5Cfv-g2^ReKOmN1GFhQ(tYs;lmrnCyf8P z0BbNQWSoR0O>rx9s^@wPo&+K!K}GaHI{SvyEeSFVBvHT@ z&sdN;0E#v)=y@5ow87tjIx8WfGl?gqOJLQ%S2rgp9YuIt%uwFY#q?+EgSNO%KGhYE z>fh>a0<(s44McseQI86BdHb-5OK}~pzdKJ<6f5CeJs@x~aPGocuM`>M$~DSKf!gi( zLNJS%D8aD*)ulD2C4y#aAXuu_0ReKD#srrmy$bfaT@HAL5~N0_*qDOiy|AfmI*X5# zx@s22!%BeMhr^R-J}hfEz7}X$Lg#_{zgIm7FK`P%kGF-HV8D@7JiCj`LG(0enP#=# z*uR4!;zX3oaU%8)`bWQA*A`ll^U59|(IKFMlodi@AGBt1RAPb(E9JMcT&&Y*oz9u4 zvJdv;sc?J0GwKh`+Gu%CLk?{*?Ay7rI%bE^wk|qVh;GZtG&ViDw7P_SVc<=IBngQF zzyXTgEs&Z_Ye8&SXA`>YLXsRF-K>5(%Vvj?~ZBu9Oid~Lz2 zJJLzw14epd%WJNgubBg2wVnluU_7@4m2-8asBWU|FSiNig7vXPqLR7;I@qywU5eU` zog!#8JXG~(!I`Y|{$BxKt>iX@1DD0os)>BY1y18XZ2d?^FVN3qpvA&JXs%DgC<*jn zf7lniZoMvf&#HxWrB-`s)zsB;KSZh2)O`e&bL5YQ+l7(;HayDCn>U zqSKj)7_}uT&5$>0RRdETOiOW7U0pA{1B)xdFT7?IJt~Uc_s^ui$}JXT-D)s1&j5fg zWV7l@8NygVf+nStq-}?72|8sHA>CI9xFB))UN3j1-LRM8wC|5t*rPRCT!!7=Y&sJ= z`f`i-vbN|^g&-xknE^MZd$NVYPCgAlq9404bC&-4yDKBL(Nz95im8!?fD;ZUdje-HbHh0P$IE{!q669f;O~H zGP-4!q)x$C3Wb@szf&1-0{xU|-545X6hsL3xkuo)y&uEt6{QL{TMVh}KEEi&f`}WO zHvxlaG~qF#4-eneF5>Ujq5QfNoF872nwxO#i(}N4Y4BJsNdjGqarCg`2EXWnI0}0( zx&RFGCFtbJQTnN-X5l93pcXM$I#-=ZMS&o0FSm_msHUJKM(PkiT6 zOE7(SF^;W6Bv)j+DU{pr0mEQ8di}C(j-4^AXX(XIe8g|kWbk^t1>D~T+~IvXx+Rm& z79Tr?4U`fiXVlE0qcz9pTZNorFoWu@qhyN-iJRYw!POi?6Hr5iv?%&d83B|k(9$Nf zb&WC1qD%u-PRRslIynBha_0Tt;s`U4wKJ*=k&%UM04fk5>FPLIAUo1hZ^(=CR;+0| zY4y zZE#M&YlY{!V?Tr+P#i*7 zmK9}wLwTfsHr|3R{%7r9`YicBQQWVDIRJJ(t_NvO18wMl-R8plai-7Cyxo*vS#cx% zU_xU}rDvJy-7~^JEDX4*;z=`yg5cQ|=${coB*Y#(TIeS_C=4?asc@36pF;8mr} zKvf^$>-dvtC6DaMHMI`#dR)?KcGJuwD_ zoH=KV)6$o&&L>31t(NL>$85#{%P=p-M6b{Q;$P>gSjwSp6U0CDmpY(`9yGw~SF>JLWHmG_ie>0RJS};pxiY z8301Y|CWO27aCpZUr7Z(42PdfVHJk z`~Ql5juQSwKPLpVeg6OW^Z$?H&*yN(Q^lP7lb`i>A;2-Sp7V^Y-S=ufD7JoXCD z!h?+WJ+DEzVT^ORs7NPx%^2i@{K$*r6r9Ct@$A2mvzN^8H!0t&_|xmTO+R{a?Av(p zfX`&+X{qY{7xyKn-al<2zRex3&UVeX?Af;igIDe?pLDevdi{WTuEtVaRp%L5&~x=A z5{P=xrVouL+VSSzr8b9W9AFV4Zb<7p_8ufFUduR~kp~8`E7?v=|oPqbb==e=e&SHB{ zP^77t{ChliagIU54hnlfQ5yY-)J+lQvweAkd(o2HNt2l34Xs8>rsWa!bWr~!36&Pb z{w=&Quk4?dB#4Fl%lDRkXgZJ#D=Logqe!O+dJ>tgu_|SLJ7m9a4&GVs@F4yvBU9&k zr6b|}o>4MMY<|TDP{T&gg}H}Per1k75mkb1Y0AkYh~vyx87R7#cEp&f-slWFOD5+V zmdYEG-H*Q&{tf3yR6lzuHUs@aPa1y88>!JAhJ1exufwEsTpZluuO6r8mIPBcV`iy z1bh6r5mGE#gD}-)K4k^O@p7s*4eGkm2pUVy>-!B5iA2>c++=^P{#>*J__ z&%m0fYV6QV?W&Yp`F0BWlvfbLt@muCjyk@=x`_VMpF%VuE?Cbse(&+zcbIUN#dv=# zOI-fSXaVt5++ohIQPLC61?D_=^s6lCNct+M+XKM-I4=fkjoCaV-SaSb<<b36Q8TPOBBz5Lw6^Ons4ik2;02+eW;kR$BCSSJN7SNUKI9!IjI4W@ zKi~t6JK5dpPO8GW`zo+HM9n$gOz-S;>pZ}7ib@Ffr{P>{?R_YkLw_^y&wDVY89j;Z zWfrc=wtqI^$e2%cCJRT9N2kT@{ux`V5cPuAv05olr4?Pywdb;!%G#~IXxhW6IM@VV zFr!zvGI5Qmtre&+V)ZY~m^vB>kn7@2N_~Nr6K;lein?ZhYVsO`8VI1(vV=ruoZaZm z8^*yJJ$_p$^nR%$20UKecT9EVbfXg`w{a;n4O>_^vhE}ok}qnBa{8n?$?%zy!w5cX zfDHYh_Qe#Y@P;Q@hb@&QkpA3qgM{f#i65OFpmh^FsGr4L>2o*Yc~e+1OMyI3x{+b` z8X&)KKu7-NR0Nd1%skllr2w1Xl$KuHkviPFylRu2C2`uOfMq&uQ-b1wakO?=XoE1Y zI7N}gU=a8dOZr%JcJ-@*J#8>Xm;0@~a9GOOk5>gEqY%94RtU+LC#hWsqdRju!}Nt? zY3L_;fIoBDxc1@<|29NJn{&RHKJ;+uIRNB&W zk^HDR&CgvtDlXT25D;PQUa%Wsr9njM?+hO4vrF`d&cDNjakqS{#T9~`&wcn3$+Yke zTmg65fBxQkC@D}LiP~f0;?nE6$o#0}1Vm^)uBD@FD6z|9|A@>mK8WPOv)NA}W2U1L zJS<%}_7d>nrefP*osE6JFBQWLZr;fOYqzLgoPR~uzB8!^h0dWdO7wxA|GSM8|48xx zl`92Q%qHr*^UiT$=fU;w*!6Y{wCfwy;O0ffQMu_&^(e?laer!yp+NseyAIZwRPEGY zTIS2o6|YFY3G(Lqk)b6c+=se!YW@gSM6`LP)ieJWJIKLv@4k^03A6HB-Dck{gUa=u z>})pH$`3X zlKMF-;LdmWulNoe5)H1&?`>kS6VfDYiH%={E)VgZ+T4S<6@X!-EhprKDjPI{F!xu8 z!~2;SxL$kuJLI};sI!LGZ;=v)#)0$cxPASnTkt_IF^}Zv?N>VkYsAWxET)#pf65LJ zBuJkm+gEs^n~}PpwDme%Gs+}+yOXqRFc*WA-khX|jq*`JAn2ut)V><6rds7-w_5Tiw#2*N`@c_RmjcviM4T54o zJA=(1W)7}5pSdA%^r$44?+Y<#;A*59j1xP8M~R_13WK!Y!9R~~+|C1uRpJ-fpz}%y z<_RLULfGM((tGQ$KtR=*Ul(Fkr79RtU-c$|><2iC;{eX(pC@=zL?|V`+SRkn)=|*` z9)TfzAzO~9%nn9U^!n1u8@9=N-Ie?Et=pQY#|f0SJF9z8)qfL+f6$W|M0BMY76_KX z`BmWFOph&`bL3X4Ye46vDT^GFG-_}#V*=yg0?P+MIG7ZcXM1XK4(F)K^U&T{?$|FkIjzT&g1^;6CodMciO=0xv4O)Qm+cEK}` zP4q~6)l(;DKUcVeVeZFq-h|~s{$MI6nRRsh@sy^4m{q2;{m-x@t1JwjhlXAm; z!xWPeYv*y%)(Azu=62o*DGRvrZYZn?l!sF1`OXk9#khINT9+7=QC^kb=V4ySGzn6k zCPLq=$pU2|tU|I=?O~YwNd?HfZp?3}-8OYT`Qh`P)4CH#EWJ()tg{^m@k^vBf*$cG zKlKyPsMrv{ZkILVKxK;w{I1i-e7r`DE#)w8fd1Q=;ou&XANpQOx#NB3P&1o+t;KHR zk1QgWQ*{g{$9imzmn9bNCI|9L^B<^Id>k04q(9=Y<`k}5>g<#qXI9~N2-D96g?KN@WBcF1@Sl*JDYEv`7Afu!!QeF2meu$+z^#K8nQG8?_Wl?UoqXT-XcRV;DR^O1OG_N( z!^|y-c>U56O0Qh=;}Q*`sOi?u(;gE}Ck$6Krta&8YlvEan-TBoV2DD0vk%V6{u3*b z|5MWaW>U~NxUYa@C5(Jv8*}PbE79X5;h2rA$wyf*>ai{*TTK&s!b!sU8VSzrBG@~j z0jwB4l!NzMfl`{0KvA_2)Niy6j*EjXUahf)t{K(wz>(wRZlA@3RR_(yT#6`3*SN-6 zB64hz>6g3k$SCjp{yS*Z@uFFX*8~4J(VDDb-bK{(GQ3_hS*_oi8JbNea1;=myGSEP z;;eVF4G_1t{JFMRHwp!1u{!&b{E?ha`jdDBVN?^2IJ6~&H`XR*c3?*R7zd8Y5wg&W zE9vbXplD!xBT)Q#rdlsY4Q9Isj@ROCK}HCQVR$*jP$JMVo{VpHJT`}%m{=A=hPWH< z6O7<6R#q9J6?x{(vtU7oIw7xx*9T9c{$~B+I)ASq8-30&Bgy?q`1h!xE_DmJDeYy0 z%W*v>n|1UFeFxwDJz&h-oitK&a;@FF3B%Z1K8G8dc$#=r4hvEZ~8W(dCrnHOv?!?U$7 z@Z_^MYbPIv93NG6=Gh>4aZ{B-5o|NYi$!QNPGtDNcb7*ty zRQycd%1BI@Hq>04?DwB8)O>~m#=U@BFSvLztm~tresqfmSVuRU8-bt~s})pyBW1L) zIWJD%hOrbEjEmnPzSPx80IOMg%qa@}1tihL$Hii?oUBcNGR=erGx=Cl8M&py*oQk; zU2}8*_e4~T=0LMuzGVroC-abcsfY=I%EGFEAdYFJ22-+hoZhDjLU0bgv~JU$LMEOm zR5C-`Q9|T!)wKGFim=4YDRv|0Dp0a26*lbfHY@H$=Sz4;ZEIB55ezzShU(RQuU_H| zY#KRN51u^gSV}d(U0IZMM(XM?-~1M?D#t*q$xxuP$w9K~zxJg2rx}~V$s6yccA^ul z09^O3pTPwzKfmqOzjZ_|^p_T<;CdUXk2Kdt>JgJUMWcBkL6AHC%DOtgRc-yl!DIdK z492EfGlX+EU_@yH7@TSRutz_ExJzTY#<0YJ>?e*2w$Q+)pGTMp-NWki8tNIrO7!!Z zL1j`~ei#X^c7mN!Y*T>lEFUt!IBxBgh2Mdb9VycC`EO(bF%B~P3sJGDg&yN;1D5{} z8JC}e@w7+}`VW^|@`9^z6&}^&5?FqOXKbuQ>yS#b@&=cSGkkFn#tSs&vo5Cd-A$>8 zuR=p51SP*)8PZhUnKN6+@$9JoNKQ+`|N7s(OLrEjD@&l>P6D6_~lk5w)G}Zx6X6=)?qSoF7CHaXyt%b zVYp^({_4ZT2M}lQbS-~j_^Yq}ZEOIf)|Y$v9($u2It?{{_SNLqcWOZh-J=OUv~6Uw zZi@zETWq$`S_r~cFQG+oqz);m$+0$Pcv10MVv{yB#EN7aOW5$1C`QZg;T+S4 zQ?WuWRLU5$+Ht$Ulo>4AB#O8I365h9disPedv%HnIB``X`T>GGKV-+WU8$YEEh4j$ ze2}=>X_CYiN!~Op`DqzeL% z-294r2LHmxdZYIaxwV5XyMVkW#uXVis?=<&3EhIx{~N(A&@s&Eps(MC}c-i~X&I7}y|4e7Se;API=jquh^ShW@AY1Qr0ste9sVN% ze^~^G)tBxuzM)C-Meyh_CTP2$X5@pM*eiw%IPlyRU66>)(h;(w&T_HLu+H7!P&>o;zFe^TT z`tv`-Uu|t*@IU?;7EKQgyj_QhO}7SnY=Bo)2&~B=U4jFcrgo+SS8zE)JEaRC>Kc}D z#RNuowXJSBmg^I4d#I~6i6_3}577EWMPRTkT5*_1)jodSONM=CDQeYyxo+^v_k^d3 z`o<}x_fuc20#{i|`MVI0!wXRR4K3mSE>^(R7b%!X7XQl$6f|$9^gxlG1QYSB%$fUr znY&Y~<+){yM}eX5vE_N8?+qhz2~NPR8s47oc_IJfnR|e$p9~ozU%~)SKM_i-O4@p_%r> z5{hBh#GmJ2j^U{8_+;?B>&5jw-#RQN3t{=K{r7(k9n^i8dtC9d(unl_jIy*QCj~7a zU^`PuB>t*+BN6GNtYsosYqK|Sg~xKZQ)i*hZyEL>0p>RPD%|MOU@EVQcj1&yp6XyA z0gxEK@^GWuAp2s-qJ+5VsHt*~iZ*l_jI{JZEPY%C!%dmw5M#)oFzz8j$$ox%@o-6< zzJ;w=P_&4oEosS#^`U{`Iaw<24a*mdPC{rs2zIt5tS-`RR;9*cl<=bO{LA-5!IdXw z*F@2HihkA1ctx=cS~{iGzv3D@6Vt)dPmf^wJs=V1MV`WgpKUf)}Dzqugldr4Nxf zG6|^q=vHFq{8B7f#GsPKak3SU+mnSVf)YfkfdeeYP~xap?CAzsNTz4Ovp7mvD6Iw2 zf$Q2<>8=791d}aDG0#ynLCPjLU{KV+@1S|6tI~GJigSIYsh8KIxje|!$$ms8Wk+LB z)nRiJ4^lXB!jJ>PDwbs$CrND}AO2M%%}yzg1ylymRyCOvqbZ85Bq(AMs>b7OVBpfm zw|>uGhMM9n(@~UV$-dy6^2bD^mhj23%(1gCEK#6ltZmlaSEU_>7k8;45qAK|fNLF5 zYcY(jTRP|Wk7T^@@+H$Xnt1eOtaWhSJ7p;j)yBkqaPx@nN)9fm>@thT)Q(`Da`XB| ztgJjMy#cLT3-YriUgvSnh3Nnxq!yatJp*jODNo7==cXAsXEu(ICd;*;m4IpE^he4iTSHZ zmUj^-4BN1yq!f}vnatz4oA$7>OQ6CosjhYpaTKT-r$N9_cenBV@)e#wjL-xu!42fG z`lYno#>D?QNRC4oHi0aVZ=5r&VfXmHMZeiTEOqO8!V}8>B>)3U#rx>95Vdqx1!;*i+44v z{UHS428sh=6%H?yhVn068tj^^@U0W|b;ri??0^dWYxeCgq{8&{lCmb0ZxmNYVY8d` zNeCIIf{KW-A-J@06;u$RWB@Y|dISJIs@|$3hLh)@Nmg>nv_9pEeLXf1jy}in_dMYg z8kM6^zgdIK>lf_HE2s3&eXHCtW0+nEaSp+xf_b2swfJFFwyp~gl%2$$;hS)ghcJ*^ zN{Xq&jYxJ~T04S!mRw#!SCaWn8F|oRqCMlAZHFg5|7Np6==CC>JpSeR|B^xMmyzbl7ZjtXjavAI*A6%S;= z#K9p1l8u#!(n)?tb=U;zhCtB84xyE|`o*(HZ^E=FoLQImng3QtB<0<~cwedFsrQi3 zt3*dQKGOfNoa$m$)CAA@h}lGl$!+*~#eTA&T#G&)-CrhQZ2>=D>ueFASEeSveLh+VoLnUiID@p_*yhPss%2~)l7VGD7eb5fi6=@-+bHU8MK92K9wkQv=fSZ4$Vd{PV za%X$|_BGWq8&+}&*|JGZEM^&P=9P5jl(PjQx}lg6jBu@*U@%p{)DUe#=N2i$KY5e3 zb$09rvqdEkv7wC9zHV7Vs4vKrlXMLy?j9psFvo%o+Fqc%I|{%}_G?kYHe~r*Df?kf zTCo)Df`pVHgz;`KKmu%&AgNt8l@YThBmF5@PwxQ#KoH1P>r#@NTe5e?A@WB@hN(q7 zGhNC4^yy^Gx$Vl`k<_n zVDFB#Fuu#g?vBk<{r>PNK<%XG@eY;Y-&l@|k5*on zr1Tlzjb=9TOfJo3{qEmsRyG$Ysy?PE4^gwd0dYk_@ZSsDt972!XgCcds!cH9^&n6E zheB#Ge%b>If{c+m%yT2y6<>@+&vBSO$C46!A}=-cJg6C_M5GYMX7;G4K$!qg;(?D+ z!ttweBR~*i`1jTH%{givuD*Jlt?_LwSmtN_nSkWgBOwddqyUUpZPO4ik$PsEE$v_T zb8&%vrl4q>F4Pg2_wXk2qmFl?ioqKZ$QPz%{tFWv<^t@tW&Ec&V%c`#Qg_-qPaEj{ z@_Uxwo2i;b!JRxFi7WXCAkUf4=CilPj?*7nFTL=##!#6xxUx(9D^6a$(?<=h`g5}DTDP~mATFxZRzj;=wQF$G@rN;z z(p3SpIlN*8kC>=CZUZ2lX7w2m3#)BiklvYpn#c-eSEG13S#b^R`q5q#9lW1v3dIUx zpx-f{1C@RrVp`up%10^7h4qO0l>u+s7yiOsvNRV?gH5MpvHO4fKrS<(Emwp_VYyEZv)(lN9yQeSjvFcQ&po5Y$_1+Bb z)s0)Oh^Mip=5;m0!^84A$Cs89F-`X#WzE4V!3TzWUz!wQ^%k2^pelk4Foy;)SQ(@wiELg~<0&b3U)F#qqk{=_*K7;>h4RyEzqTt1<F+PRSsH!r=?@JJDMaIC|SA zA2@aDj)aM*K=wcK=)SwmHqYKcU-pxUL+237`IcI30_zp_N z*$X8FaEsu3lrw=!5%N4k(3Yp#3{#aeCB&)`s%4?j+2Uwt-~izgn0&%YX~pQHlr%e^ z0=q>FVM0pEqJ$LY6qmJRbc<0hRVFytBN7=bT&XRRBZN zFKz%(%dkx$1asCMD38EB#(XOH z;A_s%CnJGEj1$JCF&0Wv0U^jhcqOMs00I;sh3hN?N`=o-iES|x-U=%Zirp05PJQ5X zIn*qp^I3N>eRYFnz)J2YZ(yj-^n&^wFxo; zS#mVqR=9KhOion7hX*xv6+&zBY61|qA^d^AtNr3Jw;WANR&#|twNP|*#rqj;wrZ?b zR~islXSAuX$3A!on>Y}&GWVmHS7oh9MxU9@_;FLNZlDIN5zC)s*hY{*f}bORQlHQX z3Mq{U0GV)5Z@fy+P6!+Xpg`n($-(8Oy5tD;dMZ1D+w2P>>y71_D1{C!O$w-qGpein zS=K3;9_By;Mw(K}qR;Uh`1~3yM6=`sF#b%ea0-OTth$v$YCvKJMVTn$7rOrIN4xir zBYHd*H5w3+AQ}J#P*SX@WxlAz#&B)V_#6NOz=#}P;Swmw4%slF89^!Lh>;T0uEW)oZr7IPWxP>g~)+JbXgZO+S+o% z9l1naWSV9nus@+Kr@%mW?jJ`-6+QYmi72`tu{?og0fNHYL#OVSB+bDi0AJO`sa1#1 zLTleF=6Lx11@iukBxXNqe7=e}G#=RUrvQZal~LSML1xe>fC++xK;RXOFWrg2Ef4?# zc<_UuJXCOp^GeU)9I6t+jN*oyQtoqmP$*jaWeET{hY&jhkgqpkRi0Zr<~EZN5@iN< zzBW9zDuk&(<_LP8-w|dLBMU@SmdbU8(tKqos?eNciDLhUtal90r0K%7?`UG%wlgvB z*tTukoY=NKF((}Mq){WC4 zK8;T(REi)B`a(=C&$t3$lEMy&{P9~Q5~UE3MfsEhg97O7=Tc5(8NVRX@MsF)u5#9@ z&jF_ty>(Yq_)s=AI$xyV3Sk9v=+@|!1t_z>Kdt)-q-Sf};>ijNOX(BF_kNwDy6!`w zs{-wgfs#Ihs$@!mtmW-*$U#_p%3+|eB}T-cE=Uc&?$XdC?$`$PX2j7=T90hlNwA$( zm&oq=+dzB6KyV;ARWSgx&!Di^vnNWR2KU3hh#YPm7}=hBhKwir@gf}u#bBV70m;A8 zDM#{qJ&qAKs}e0ps4`ntr;03R*0+6g&O?=(>i(`BP7~bZZOc$GnzU!4ur=NE$BeAo z?0-7ZhoJ}|rn(&}3K(b+5oE4is>;yQQcY_;5*mm!A|*$v3mgpp)%!pY;i}ugq8bGV zFb^3gAvEqB%`gbY)L*1|XxTi4stWhsF~NW5krT+Ugax-f$T*pWOu+{r(CpI#&ucT? z$r7Dkr$%_(R~}*d!jX0uwoq!F$Y!Wvdcu^ifAmnRASl?MLq^c$%nfTGxk+YE@X_9N z_)959&8xop{ALWxi{ytd!-0$A%u3@5^R30&ApWqy{Z33=TLuk45!ebv3<|IU z0nUTZAHWEzzLqo!;Q>%XoKncq8h@w|Re^%=XG->dUqzoDj<|mgV1LhtHlzUQYyy() z?+(Bd0iacxb?OL2U;Y)Y4MhnW6buO!aKrS`v@B?VTV-Z4d~b08ku}GOG^_d89)w_+ z4tYncRTO)aKN=ga`a$Xvd+s9kT87!LqE$<~mxW$FaB5f$)`$$}zF)nJQSyzhc!B@D zL@xKym(Q|WlAa?xWun7Bi5nRlWJcVCRZ-0Ty9%?4+`j$F(hALWQo0cVKLn>DymWua z>F337{#>T(=582o;~}1Tm_X31=Zlv3M(5*n;GfmQkIrijm%HQ7HLtghv3B$%`{kKV z+!ig2V?lZvC8xiV`wM{#z4CyJV*pX`H^6)y6*u}2W67}FC4lHb_e|bo?+y6HN_S%7 zGDoTrlxPD4U4qw$Psj3O_xrH20>_R$h~RxRFT8QEuC8>v~b)J>OTnZI4ZsjUG2<_&%IK^ zl!@C%nT$}uwYL!_T;I#tFUje zlXTqvkW(jE350@|#eOLzzZOZL1E{c094zXZvE6BJSC6O0~Ce+e4M5`!ZBsg09o_9xE6SN2;M44GJM4J{kD)=VPR16M%zBJ2xxwn+r$Y_ zYbQYS#lK>8!ryl)RKJJl%I^n7&tMi2BY=XPo8vfTPg+_JR^dB3H-9jqc*aqciP-9qHUp)nA;eJ=kB36wBMleP6Yd$^1PF}3 zHC{Y#77o>~2+i>W2BIfZcAljots)eg?B$gACt|a+aKSV^qi-_EVI6E5-4e7>YV@t; z$+SHtkP1w(yHnZF@lImN6b1Rkip?3{wsLcrXAY*weJ%@|qtU1;c5*Xqb8&buh{gi( z*@~(ImP#fK5pq6$7PrVZ8ZAo3Sy6NIhD{7Gcp zKiW3}w9(W`Jn11`s324_Hn|4Rw|3Sd+GLZP<+eXnKW)G#=u&?k*fnSgf}4aJW7C1k z=tIRStR2kzVyri`0&Cu)kLoy%c8ROgz!dbd=!@U}rVw~=B>NupgI3_dVKI}c1I@%@ z<6korxma8XV+o&JSK{-`4%^{BY~mh@=0&Lc-!2GjVy?#WV+BIO_$Z1e?*c`ieD9Ti zm(1W%Hi35lm255_V2TmM4ViamDDb<+Hd%?tpf{5>4q(EbF)-V<`QvIh#-}BOK!25$ z2Mk&+fFijf=(uC7H$LbdH1%6(=5OMYIHcK34aZT2yEDjHfCk9+Tfep^f1hf<%s9a3 zg`}VnLY-Dn2xfuRDF*@^bi?T2S@XWaw)rb@pnxe~#s~`>SGf98MLC4ExHG~7;~xf` zG6D=noGCj~N$p-0#7C^9NJJ{ODT5q_c%;}^f-*Sl_3K}+n|u!Jnn?Ko@!ZieXkVcA zNaL9F93a293zEGmW33X>i$I|s!3TBpj`I%HxSwO2h(T3oDv5rKwwI+Z13;}yZdHY1 z*c@mYb$mEBUZm=!CL9L!O_VY#^vc5Oyc@JE)CZCE5-&`6r@E>PB^~Gyg~v(CktlxY zZuzs421gLJvse;9UHY0xld7f~Q@y(w8zqUBi71gN;gY&!=F7`7EHuu?5l$M9lFtMp zahtFtMWL=10+A(aFOS0kn$o4R;vSh!gvLb#O7I=K5V1_wxd=oE1RPXUXD(qG3k3lw zv;pp=JGt4HDVbks`M;pl7Z05L3tW2ygrP$EH7gc4x;l~#F?}0nu_BdDxj4WfgWC{i z>ecegIM#q6gaitlAyoz8orJ5Ii?Ty@uqj>z7Mm@P8cB5DbdW37b5 zHvo~c$0HB~nV>)<`Mwpyeyx62#=MdANgs8V7RZmGiYd!T&FO@is145Yz)gVs;ucM&*kILYO!T z07$2`^h07m{~2)^N`}XjUNa_4>|H8QT)>&IDEd`NT_r&gkbUrZ7k&stCEyKJn*wD2 z#Bl#{qs^iT0WLQ>le)!B)Di=f8azj}qbn*txy9qw*FUMY*R0jpi}6&b`V&x{yIcWX zjp8>mi;-17EUEVm=Rhz313WVSuwA*b7xS8{m!K#&{`sLh#>hL_0wn|j#Z#|uBGm+m zoF#ogK`?>`{M9K4sSX1_%kmy1K?*C=w z(7zhsmwq)sklK+*-pOuSK>|<{{dfJp{v5u z>mbNm1I|7iqvr}%N`I(+UKV9gC*oM~7O{kg1W~Kw*D^Y8u(VKDYxg;41GA~+=HdG( z{4u+%1sgV^$7`#gzs2?Cyeqh6f-JJF;>DDguS9Wx&A*lD<;u>tkxX17}|6Ir^ zzw(wj%LOp^YeNj{g)swD#nWLYSQN6DcXr5~_wSlN@~Y4{d*IZweEsxkJwc?qrEn5K z_Nr#eK_jih{fsnyOuGf0n@9E8(I6gU@l_=g$WmB;=f{!1YD6<9m^qIdQ2Rx4yg3a&M4<>egr~SK5E4vxaDv#nO`IK-8X4X={5nI36iS|| zh~h@>CET}aRnsX3GVU0b*x^xxxj`~B_b^JmYWi=$j ztMva;MgLE~9vPdE-5uZrCUW&?=Th`JjUQ!vYC}-8JumP(gU3TZq2)a^&xS99^ zjLj~C$`k$KN?)Uce%PuVGpajEnqp}!%2+OIAppWpf8;t=lBk4H`XqEYFhIoSVwMLI zumel=zy79u^_Tu%$qpu~UQ)*P2%op#9t^^I*K0de0m^Bp8e?u2Ez7$X_TZDYeFuLM zqhrpqrD<$^){;8jKy~(Z26#|KD=sq)lmgA-y8Mm0Q^eXtFO!dT&?BR?w~BR*08|W< zCM4{K_KN^Quu#n$iX!)bE)nm`TnkfRoNZIeGw<3VX(_28^t+>|KxF8k7juwlc09lp z_+JOVrUrQ77aH zdWzt;vTDEc=Yzpm>yK}s2Bu&a*UK8%W!xiqErFyRY6&I>Z+4`uy&B|`5l_vr~>3Dy?M|cdAz6iNvk>x(N z$y_b?n(9WTWbH+W7|LL=vAf5jze=`Y@*HV^jGd|PV+M%sK@2)8 zoNo#etco$Yg0tXE((uXn@Ap-zQ~u+ujR^iHP6HfVFUr_IN(&%H5fnrjD6I(of4 zmNj*!qa*HjNjTIqL~N{!=SB7&75f9V_CEp^JT1*m`4dwJe>YOt!f@B_WWDM5U(o)X zOHd!IcouaqtEAoylKXb0R0%^bF2g{${UgCogH-3?p1>CE=EQ`}!+?^`$Z~y~s?lGA z8*+%V&K2w$4fA(Oi_fAiJW+ByY7PxfdklTMz&sdw7sF)C?u8YZ2}0XwLt=UY0hl{>ukZc5MmBV0%z_(EMMcgG-h$_j4lZAP~sQ7-qAfVw;U|UbwQ%G zSHxhkdsiLoPZ~{k1_h{unR56L$8%_?Ct0M5=)Y1#KP{1d%*|Nn;03z3*9%_lium$Y z@6|dY{#|37#SH%jz14;!wc}=4422{h9*<)Ij6XWu`Z}_& zKgU|`_qZg~Yn7S3FdOT*mMv#9n1eFKCP2O=WYx4x5^ZO7#;$I167w=^HN;gwr44ZC zSM)SuC|M3kkEi+LOKr6NN|ePnP*9PT>Wx9agvU=vZPH?t=W7!Do(;)5 zv|UxIYEb1mmv`xfn>dM3$)dq1j=gB>dnE<{M{=C)81S)f)y!Sv9c?Hb{dSrR06F=; z#dPlfpl|^gFGn9<>n~=31|4X01>nc?WX=|991s|zH(g0D4lD>i``x?DGwP(;)tu&BZIA1d zelsufgA3cuJP}gI~Tj!+Zi-Qej;jE zNdNcIKzi_}*~xRnxQ616!s$>0ltU+z3- zLwy8ANy$WI@}e5X4(Xy!tvt0=Yfmn@8LzQ{MbEid`9Di$4vTdpz49D7gun8}#DW^z zI%p`6FmkXWbH4iBZyP$&kkF#|Og!e}R9Fbr%|%MyPs>X{lJB&#Nz1=zrQNf5-KEBC z(9-^fIs6EJnFFL6&IxQ{#7RUd+Efvl1V&hZei=oMTe1_g_)aX6eeb(nV4en;VI=foM`+a!&;S*j$sh0F2zQ@$hY&z{$wXgp^ zZH&n)0;#uSJ35`NW52S*Lh;1lcFMQ|dcEN1u7`|@6>{(lQsD|o z)pX+Jf~(e;8zO(#A1+8FK1?K)Z3pMp<9r9S-(>&%T2|sigwPa38ppc?(cN8dYCbdHR=4f@K>GlNO&ngSCWstkZIWo{}4utE1`nGvNp=Z@cckQ`8YznBGdigH2K zFZ+66`O(33OU6v0tok|u5tH1RxdQ-v3tEK~W>F|5CEv7{Htj`$SYjxL=uTz; z;uZ07SCXx&K<&^^i8I9hj0Bn`+0}Fvoxt5lyQFe^$($9F8}Db7@l|eM1$DQ4+c3s> zHkLJL?=elb8T_HZ)A<|}!fI4))u)^k_(GVVV3Y2*RQEZdLvOuYEGX_fq!Yl==k8iu@b*FWU+6xIoVJuqdQ68PR&2+wPUN}0cP}42c?P&w6sfUSDFr%iu;fY*4oZS^28|w9NIj?`HfKsG#&@uHK_)!PyB$`@ZPtx+^lbi{OE1=#&(BLnayb`Wm6YF3BT4Fc z7m9(EYE+=^ib>f|@N__+TvPj|cgll|P^cR9nyF7QG#DgZ<4!1e)uGSybN@!M1VFt_ zFGWKwBbhGy4R0#dEzfF6&>+-ZR;h-^Wq0nym#&qCb`W*E?RV;Kn)=I9GkMYt_&r;5RB6?CU%7EMF8QBj^63g%T#(My+@IR9gt5LE=yC@W01Y=of&{_^G(kx!l$E9IfFi@jSD7kU9A(tB zNiC?R41h#&G&A7L2dVNr{6=*IMv87Kp>m7uY0$n>W1uBI<9(bUSQzhQ5SZVNhhk`D zMonG39#YZ|weP^pes*IBzSpZ3g&Z=W7ytsIs3T~A7+Zh0{BZA?(@N8|5qgJ}gY3u? z<8#?v^6n&}1e@{z)tJM_tMpDW=QNi$q2Q&lj^?0_TkBK?8Y{Ln=z^Qh3pa%tf6|wE zmxXuM;I!I}2ywo;;^{%42T@{{FC^~XFrJ1{QjIAw06Is7OqFn>Q=v}IYtBe6nLH1` z`;y;CE=ml><1%CSvzb;XawO4V8%34tT?53$I^7NU5&Gui5NyvNdBWhE^9P1YnR0ev4R8S3t+%6cHg7}vahdpO&-%8pz*)kFol&6V;O}pz+edXmRWj|s zqcqfD)2Um9wD&gkyyA|v&bqqC#jxk{|YNU9k zq<7W@yCs$BTy?ZSzd4&suN zTJlf4(n3s~VH2N~fG5hoJ|dz?w5?&#&KW_Zy}uDJVnEDh3GOR?bu73CRcXLdS)I6WX<7ND4%Zjug&rN?MRL){2B`x%^K{8rtvIcR&7#rP3HDQ zA*aVDHdTY_#Q;aOD|&;2^Svl={(&Kf^mBqhaYN<6njRGtaw|5=#jSUS^K)L7NAMEL z5QfW-$#KAv4(sjxiyX6L&=rqgv-e%7fM@IqnzdvlgM2GtZ}x~ z2GywAh^T0(u2D5bNg7Eo3^2a{3|A`1(eOK3Y&YHrnXDtB2;I|J3{NnIq8C8V%TyaK zZF<-EkNkBDy6q~9qcFf0)EL&DUo~!~&n2Lp@k}#qL3k{OH3zddW$S|2P`P0;+eJQz zd>-gN)UIU)j$Ixjc#m)z3Wi(A&OYh*T>JK*3Jyit15g{W?W}u(~4Y5A$qBaHBZlvk)J~^qdbxO1e z&E!tPHG?jf*h}RilWIgb065-k?P;|?l(k!xXgb*tGEVjg1L`o-JC;E<+&+n(Sn6Uw z{N%dodg$scD{^psuL|~{J0SxIoWSEUwej_rZGefwW8xg!^#W_mHCX~LPU2fkDb+E(c@zTt5q#bx|0u0JNH zA%6lW>8$VfOAXU=1>LNB8@PaeLD{kY}!2PAwP{aNPf;0-uH}6wwk2bf4R=?2qyNfg`B7UTdsl8`ewP5%!kqs${RKdE=rF*GVUBw5h-3;R}McCm7 z!bMj_`o5Lh(AW8HKzw+q8vfLy5*KNjfViA}u?w_XpR;>A;tq8~v@QU32fB2!L|s@` zw)BO*g)_1X4BI(cQ_K;1$gJB)!9wgE9aS{qX9-?YY_I~z*~8}Lw%JjHGbo0&H_W~Y7i93rtnrdNU%7ni2ggy$`v&0IdoWIE>eDm|bDf!Hd@}HXw z2Po*y?>R~~(1&6-gtwnd-nFtwA4`}lXG6Z0zg%eQMbH|T?3eYxhjq>B`;>yh^GIX` zv#dA3pP@q?U;qjLLgiz@o;{nptFRVl?)HFNGY7ga35Y6wX4Qaj_?oG#hC01!h}L-Z z*KUMy2V_hO^c`1+j3PDY$Ev0R_yA&sl8c&MfMWi1qc%CIquOo2Tq^l#%Q}rAW#t7S zpH?=QXm>uRI0kLqqC91vY2LD1m#IY>nIvDl45NE# z6n(A!Hyw3B%G{3@y{yrJ+QuFle+FizIUe!4jI#$kf(O<)UX1KYOZU za(4o}4nTcmG#t}vvJ-09uWzME}{6Q!otTO-0mcp_*ToLy~J zn?d1hQmnUY;q2A%J}^jyQ|Z(X1k=WqhLx!$y2a=`H^)(VVEJXVp26)m{c<{I1Fxw{ zzo{$rlmO?E|Nh70?AUln+jf~ge-1~!I~$bk#uEw^?7eXh{RI=tApZ}U4C7JQVd zO`}3w{y(~|Y(Z>9aDB8Ko|ZUC9f%T4vycK0YP=XSd0T8G)eN`>-ic6 z;j%tT@ScUZRA6Y1V_b)4+zWT?8198BO@H)5aeoGjCdj58Vxgyb(RS$+DEque$X71# z{W7EwTDNksLv?76q=?6{j;J1%JF01==4v?R`neUF4|;9rvMPq`XO&64nAGj0R_+#| zE*x*sZ}iyd|Kmto2)$MUG|+?;26W0M9RT*xvL4kFv!P$AI=g7}@I4wo5qd*fSB66Z z3=QuqXy~bMF$S|cRVqj!NX<&IKow1?W=x>E^b2CA2Cnz5BPD&bUz&8Uko z{(2d3Yy5Wmv*h9Jltz78!nFi*`=+4?p``@st0JLiWbP+q5;Er2^8LE2zEx?1S>~l{ zEk)&+B#xD}gd&%7T;WWOlM7WR15HuLerrkJkCccgW4(UF;$}l3A8S}Iige%@!z)?9 z_fVF}RU>dw>F=kTn2KT)7M3uD-hSUgZ7M}ID+2b&`q0(BI}Vj(Z`L{fI)d7zi#`2y zh2w->(YXa~%XL027Uhy+R0SV=Y)dl#=u^DFQ|r^TjvkU`^9%5ktW$7cc~=9hevZFv zWS8>^5{t{f+dv*rKxNQZ2xkB|Nb$*!r7{wYR+&xO#sL@H0;}ZGy?5;7*84YuQ;{YM zdsjx0p#bB|3a~I4P@wawQj!YlVJ${ZJ10sOVl+ToK3lu_a&;Z-M%PCU>Lkk*sYGU(kYQ&MB2mCHWL~9!mZYD=Pc1iYe9BF|G6z z5w5~;A|fPcyXa*)Z)Hi*t(Z(K1W{4} zu{EAO!a6SfzC^3}BZ_AE_HPpP3`7j^sp4J2a7^s)t~XVNHm1!zVFBOf4!^I$eeEb= zh$v&U1vD~T@(9_*EiechroTl?ryr?`Rr!^F7FR!O8(pLA#Aw`qROYg; zFHYr2BO$%#W-AxIsi_*tsA$%aolUjq+25OjKYZ zQ9o(2x4(cr{E9ljG_fI<69;cza!3m>gc4gn0Q#o^`b5w1V_EkiA zzf)`rHp4i|Z*^es64;;o{@!inum9F<^1P3F-|PI|TYZ#gIY!{p@iV>>X6~VJ0}ZQ; zMGvizS!(%P7v9pY@ZQwpf0D}QOPgm9Yu)qYVG63Bn)@HZTLs3rJq>R zfpJBp7@I{lECp@8HV#Zod3BE{5m{Av-3m~432D9Zx#I6Xo;5sH)z!1Ir92DUBoX^{ zh+Vh0nE}1)a;4%b5UHcyzh|nH$z*N4*y2Tjh9SWvSzfu$GDLAgpJt-St#^nu{-s=O zG1h_$wBfugKC1fEHeknTp_~h?wwgH37?^qN-5sAn3?<5QW{xo=YJ{r;w82&P5-q>o z@r}?)k`Wy;v1rxpt~`AdGA}yFa(4W;yTv`_^3OnT5wCPsVVR3$?yn&f2 zE^(D3TW!gtQ!QCIo5AIZBxJvLsb3qbB1BIMvx#uoBr;iAF(ypdVRt(wtCj zR=r9n-H+`TeX18BBI0UOM_XR1*p=DLpwyh=X-~@UNU5Ru+o#CHoEsIu>y?#Q<#=5-8ILD=I^A2~&xBR8@6h!jkW)xhvB%%*-If!Y_`*jM~k21<@g;xi#5NKQV(3mHwbs$2%RkkvKHpA=a ztt2m|aknw79&*$6K15W2H790h&Sw0|G)UGr-M?jSzix zwsDn%B9MS$0D9|dHgQHc0%3jR09E0;Y<0^qf*o}OiHwYddx zH|UryfkGu@KJerd?^r12yEIdU=Cnp*$VK|JKB(?4MI}w}{$XAf_ z0dQSul*yRuj+1>a#v&edeNbZ&?<_=3`TvNSW`#coW(*w=5-q=)vPF!aG6j5#V`FpL z4HlmGM?yvK|8ixSfGuK40HA#5+*|>T5=2%?!617`1fe`d+40H__QV;Cymsbd&>JR? zYe>%`1G!48K%U{U0W>FyC}5-*4^DNa6@K>LWh*-0n)g(8C(Wem#hkH4!yQyw?@!`J zKJpWA@(NQWb@OV=5WyOYcx>h{A*hPTwjZazL-=jiN~O?Qs|Za|-x#Nxz1AB18;5qi z?MEtct1L@(r9wlE-PsCEjhVrI#t9?2eU#RG@_uuf zO~i3F!InmE_;1xQT^iLc(B5bi8JBwuzT3!q{8+UmQX{}GArZa)3&Bvc%efz&cRATA zvL5ST(4cpLQGYq5!}xd)Uw>R_Wj!|R4W|U0BnmdBs%jvC;+)h zS%REPcAaec$Nc{kMd@1M}&Ujj?+t2$&5w}k;{#;BgiW6}hf9heM6 zNA&VboAw`nGjJ+n_QrqxLmZD5Ik1{&ELKiAYeQJ9cwQXubMta=lak3U^QIX0BNzHu z9v%wDm_%gW4D*Kw$$5%-BBcVXZ2v+P=e@q5Y{k;UH$&Gx2;Q?=z>Km%c55Ua7LjK_ zOn-ov4*@Dtn8V*<{%;M&7UrNm6BQwTDH3LeJh0i)#qgSOfmqi7Wcs^I%0@F`s zafzf+JO{y$gWAhpNuXsX<$r#BGqqo<+smFw_Gi9a zk^QpvECpFzGtzn_>u&N~iG*Ma$FOs2xH%#n$vV{I!TZEkH}4SbegX$OACN7_ zK{f9mI#Pt3!s4d~UNxw?@h(uorE_J-8cWh9BX8-k^}2Zb-05D3xn(@g(D&j7Z~Vgy z7i?vfa-w6FsmoF&q(NGFrdE`3j0}m>c*&yJM^R3svDhOak$gB9S^kMe3**A_DntEi zG$YiWn1x&*e_?uI=9|tRv;sd3thL}k>#Il)$-X1ln9Qq|#4P3~$HcgwNoBZly~gyM zr_gTQS*jM88QrQBf`qdRfWX*Hn?1Ivu$-xG&b4koZHu%PTcYIb!xm z^e2aM(+gV(y^#>qmj)3>hfNtH$lKdfi&m4h?Yvq+fDxHhFn6hV)WbUD}RfG=GU zbWVz$ejM-e0Dpv_qx{U??V$&i@c4n;gfg_iEZ6*vcvlJ02F0}+F`>*JG3W#kgxJH?x) z6@`Tzm|=)1kn0|(#+eHU+@)lo#Fq8M)+Z`)`D3G^zm*G-d(W3^nsV?|wR@^PnlOxf zX)5}hK6d|b>U)9G&zE4$CxWG2mlU~z@4VaEl91a~iAS)TqjX!{1jy4;?B=pLuJA*%xRu0&p?2U!- zHH!Df;_32{Ct4M!;=Ab34;i+RJvqKD|Gh*E#Mocg?Rd&&rjv>}JDRSnk&d+@#M()o zk(BoMzbM_cs~0Qu!lsbzW$l8_)=!?|4(UR(Re99B2$&_3?sMAXi9 ziHaz?_Oy$K;=M&gWg4Nm_GxY_HiNnHvJL-0+hkLAZg2guc#CleRQbUmQhV+1WG4a$cl`CDhARxR3@HhNrv}8<_Ap-OLgJ1El)9F}rHq+9 z&0~nLLBf%BvXwO5{pX9d^S4aJ6?MA3dhK{@QO8zcjMJZ(DZ*|lPLTta%cY?y0j+CTwVZs z9Cgc^&HM80wiG+vS`qWM_~TV&>K#MMakaze%*N>e0i!>3-7c9Qum{D{)`4I?G}Zwj zgZQ`i6b%UG<-EL$^Dh5g|XUFE>~?as&PV}fEX0Z zC|C`Pb&G57oamuRm($?^L0DW5ywAB_v~yDFZj;Va$rK*5K*)=;L(MDz-?==bc)ihE zt#?q%=Cs{2mipTaa*OM@R;V1O(yG1{=9vA94AOg3-`}si<_h`ZQa_C$zvv&CYk~O@ zW-+L{M6+IKER+ne2eNOWWMJY{+O;cK%p2d>$zBH8QrY{xmwme1n{ONFdj#%7384hK zBU0A5=UvGUT^0K$%LU`-LB!BC>ACdIj1XW4L~;16fe{f6J&HM&?EXEatnXopCc%Pw z_lz@12c(>Vr9=2rv};{qOc)r@g*!uSzsTUspIa+ZJwZ9NIzMdOoic7x55ri7J}O@~ z^Cm3r85flFoNx6_s*s&hYS~CyVL0-3CjVYr%ncC@K;n1iB~cGaPf}A!sDDBwg5G2r zl%n*vCar&!Oy}n`1|2fad}e1jcep&)5IVZZ4G+IsaE8g$+G5e&u9^~?BDS$|_<{0H z_aR^F?ETH=XnX~a_+_q1c6MGei=~8&Tqx;kzJ8eOly-lD&778UHMv{7R5l_Vf{yw{ zv+{=aj0U6x{BIlL{GU}Ys&<0r9FY(UO{d+!F8{0WK4p(i9(%5nW3x2a6&rdUx^`eK zZuaZG;QCovsLL13rRQ#1dQrYro1@;yJ@pK8%WGz%`+3B6%)1^BjC3SR-g;9PeRxFj zz?1UDbF^~xM49=CK$VB)b zyI9dh4I!A=@xBmy;LHnrI&(OCoAQkPV*XXQ^@rIBT3-D_GgF3hu_hu!pkj_Q=L;s8 zj~YXlAALBHRnY}}`z@|eaQ<}SyyS{BCP~a#L7lE4hS|~2JbW~QnF}}p_CEspAEO7B z7al_ixg)OXbVTKbIT8Y6#%+}HwT_v!QurFB$mXomd-jYIuCTP z{5o29x-#$$(Gr7yb*EcUzoWm?uAwKq^M}e}CxC}2u_(B)<6qt4VNF&=X5O&MVu3Eu z5;E$wWJiBWGy9#b54XdwQ+M)xpNLej81@vnR96KG%SWM~*|+4^i3OXnIC8n?eWC9@ z#sKGTa&6tdMvl5)d%P)V$L(`vwxntfo0qhlnAZy-e-_U*{#sbzL;NeqS9|`g0}iT0 z(P`(J=|cGznXl81f7%LnLgeyY0b7au*v#pwGM@T2uTkJGq;j!-s)fgb=SHZ?=i)AP zp-2uB_v~+E4?|cZ$k6Z1Rw)gaPEg;n%@^B0u@yDZANiuNS0SkgeJQZ24zq)CZ|Fa| z=X|Y9uv7@dTB(Zl73PPBiF2}(;79rSed#Zu_#N3yC26u*nq7e?9R+yMDP*W@a$%SX zIU#SLng4fQLF|1Et?d7X_Pf6u=15>oq2j=S>iZVB?8io;-a!JOk)S1gu27J)p;8m^ zny0dSUR5~{jqevs6Qz0<^G%7>n(YQz0o?pU^YdxZGZ30Z70gf=PJ(B30n%mu9E^QF z*D)zSFVobewTiy|l?&(13h>)XyUYJ!m(L`0drRQw-BGK_k{U9r0~_<^@!^UcV0+1r zRpg1AUo1iYP#Z>yPdj6i$(N^A!vmG&90M+IwD(0fd1u84 zeiE-~G8i^(8Vl<~i#Upl`omoT6{=AkPsqRWMpp|FHlGo7t_+^;eMJmLKe!(``E!^Q zSI|Jjh`z7ThNyE_y&kIMSm9j<3O1y1!O4U_F;?#w8Tan$lSbDkaggW2APiLsZrQ5+^M|}qZjCT*rD{i2w#19kshvtD)s1~$Z-j|xGJzw=k z<|M1$6R*N9gm*s$G~HxGi=;?6MHy9|pvY)AVVC3IG&~sAHCGlIPz9{Lm$O<6u9zSq z+h>O2YD~(2C=Fcya8h3iQ7d=Yis@g0tRWC0^7I`Xp!9JS9Pz3#iKfK?R@A~HZS=2T z0^xcmq|i786|EIxN=>>kLNW~bk3E$U6)mgTWuiZxu8o;S?yF;!qSQ6i5Kc)Lfg=_& zF!2WFsAle}F~k)7rtgbGs`?(LspM}7f#4D(b0M+-+zr{Ie$hR9+{fyh~g6 z*VZmG0r@g@KJ*|*`TB1$J7$dXsRMl1G$_6d$45^*_(rqwM)oTS!ph`!C>!`c3%$=|iTS`dE3K%Ao&_u*CZzJg{>O zX7*wHCb@jV=(;_m9FKR8S(!eCdVdWh;ke*K5RPC5RJ7ifu&W0U(7@j@%nX#%I{7-( zB;dNtAe@M8NnfOUsH&+x+EoK7Lv_OZOZFn)A^fkH=b$U(v0%;g?O zc){k6s;tZEIHp7Ts~HGA(sYK_f@(NZ$!3c(J`{AD)%w+=-rL{n8 zm9L^0bo8Nd*{o*ucm;x{z-p_Zp!v3n^{uh zDhQQS>jt^9U5ovGik%alcqmy@9OQE|5zvlvp%4ZBK9PMg*YcId4@Wi<)u0md0AU=N0SV?W$#fd`aI;fp4G+lpV}yBbj%$6U zpcriVI+Bvv0 zcR#*?o|S2K)GQu_rj;me0Qi=jG&`rl+XpDNfWa`kEvdjdd9QZiAV4tTe-2f5J8lP9Qpqv@13G6 zZMv}C6?Safwr$(CZ6_Vuwr$(CosR8v>~wbC@89D;-sk&d9jr0dc&ciRs%O@m_q;Dh z@S4;oU}6020hR8l1qJ?2@s*2Inu_>xx%hiF zCbhV~54~-Yq=mb)D^&AhZhMT?np$o9$-tz{b%Yi_hoXbsL=So-GDIhgB{H#YcP_rv zsuMKf7w!j#v#@GvGV#ieAIR~y&D6(^>t~kO7)pUpL#ToC+tvLOV?;n8{!puLU6T$;fJ}oMCfxny4S*wFQu>@8Lm!UW|@+d^i zl!?7Z7&l=calO}PvJypvim%Q?=D=w_JMqE^=5dYK3YU7-UgGo_?=|mp;jU7$7vG%; z6*@tQaqt#3<(<5ov`;B!B|$C#YUQAJ{BPrfB=%JBM%Gqn^>cP(x7yy@u|`ZI!7` zbhF>~f%0glthqK`@GZoWrVFqWLPiD+Z9cVLS0i(y^kI*1m(@;MZlY+nQ|CXYmsHE=> z;(SJk94z2q0F0u~U zll0XOcO833mqbAB>Tpl(U^*Cqbimyjv&M}}+9Rbw8~S+bi)n`1l4FyPGn&!BGB%^g z$X2J+@GSm|zi^sB+usyP{#`T$M0FPs>mQ23F%+=5^3T&JxHYiK?q2|8QwjI#HqQHOGqarD1Gj}TZ8J_OY=-i1m?ti*XusW-W`>qmcAOlD=*@eCP=o; zhg*Z5jS(LnaVs?d=|aa<+?@@=JOc410RPTo0)Vm($cGWmv5y1c^iYo&7{}jkPZ%m% z)$l1D)2G+bS*AWxn|q{_&$?CJX{QLC6oV>xJ8bmlkI&gh3iytX9%Sx7EuXiJ*Q~M*-C3 zZJ+wr{#z2sZol^HodL@aue|UA6a^CzfneG}HO{{Rzh~acUmgv5PEO^09{Dtf**4nv zh)S|DvZ7p<_^)%6B?T`-U(0(Uo^|;{F|WEA0wjai=VHAMNLzbYUk9j`G4eR_hx;6| z0YL8mJ4pX)?fCzM!uo~!gTfL3-u(X)2}=%&W@fWKnpm9`)7n_`b^n%&#ue3(rdn!l zScHopVQ1YF9bVGN-1=E{IAUBhZ6)oOWvOH;|9Ie&3f@jY1xqrSK;<5hU%vfzr8=)g#q-Xd#0*(ImogQR*G{>q$L;A5Bv?v7_LC@GpL?% zMi1>tqLig)(Olz&RYzyqU1P}#ZDSa~d3G#ILImt#w55R#G!NjU-z0|%Ry%Hn>kpf& zC1fD_6Wk`q>`9QzVQW}Bz+~-nSeG>@2_sbh;4GC>`t2yzyC+*=Rkta2k1|D0uO@`1 zy5Bxfmo|AFKRimM-1+o&usS^@&c1dHq1HXWca{B@*TFIw9%1z%x((SR{*pNo zVKINw_D#c0mTW!HE2g|{$=`UR~h$TK2ds8IF#o!5^*crsYXA6|Si4v;7_S=7L zG&iGst>$N)Lw%iolGyX-^3?wcBq;X>mw&K&-ygqY*;&c-HfGq!ux=`4j@2SoaM*n@ zLM^nl$Ed~PJ*o?rSlU24jx%huzl+HTp4c1L%;$DyRL$%xa}f|cM8A-EtW3T3`9c5u z_BZ_g0$_vC&LMN=5hCSjMI0i&x(+vG4~b_Is_?fn(&5PK&CcWA%|r^%B;1IIIqA^8 zW;M}wZH`MXwU?(DfwrColEBD&kmz;ev1e3s**=AYhmtqTUUzx2qpz>@z?RX|O!Ir* z%lo@Tf`lf1ML8dT!(jGh89Xn-o`)fMs%h>aD^0?5v6IW2r9LQ!pn12_`JDxrd54CS zUOXT3$%lcjxoC+dkiE#grSGZ+&RhmAe&CB~!Yur`qWn9q`AuG^12w0pHBsrM_YKBt zDE#v6w$SyeS&@`H@(n~M)UCDPfM^{3gaPJ%J}~2o2O+5Yub(CUADRnp2?n)sPU{4X z)*mAcXzS+iOMy(x2yRKOMpSgQCGou9bSYuPwsU)FgZLJBfyDXALaOMz+Z+m5APK6-o*?M$Y#B&NUF`rSvay z>nLNCf3z#T$MU-HSzcKlMhy4{Q+XU3azRSH7ghW{$rP1a3b-e2vQpJo*UBg1^9rG> z&~-%+tS5{2Mr!$nI;9!Vx4vz$?xr4Tsg@E?K0YL@j zPxs5na}~mgDjji86NRAH2wNLeo#OuY##2^;Ci|CS79%zW6aejR2o2<5FjvokUcts- zcL=gJ<5eL8)J(z*tEkS{7rvYE)IGIYleqw@ed7$yz%Zmw0#Dkah4i@Asx{DOHlQkGRSswXSp%OT-cLCaUm`U&xgf3CGt> zJWHl6#MIDQc>&^f48P7p{3fe6@NEMa&#pc0%Po-a@VU2>H@-p05dXmF9zubPH4vzP zu3|2Rv8PYT?6uM$dPR{-2-(zlZZ zR+@R=P9>dk1iJu{Bj82LoiRZpJuBUT%qSW*&(O6%T?8@xtB$F4bsdw`2@F-{C`}rl z?zN}KUc62aztxwjsvI7;PVYMr#zjFF{iLTa&6IYWRn(-otpl;78RsoeXSMz1DDhs% z4oT|40(<9Ca{OJpz25OLlsui}_VHCeMr3ddKqa&lH=9%OQY<~3V`h7^&CbJ_`;BDRNfbP|XMN>Omx zJb7|*1q#x!ZYHTFIlAePj*7=1FR8%Z5^di{N0f)sJ!lFtd*`mnnOy<&Ho`5Zy02JegtlM;!0Q(S{|kX*6O7in6ZEV}9f_El%RZ87QqBt|Ek$ddNLYLP@EoZrqI;csBbx7;MCV=$9sZ4v00*HYkO3AqR$NYA{sB<>#4cHcV&x~1%*9-X`Kwy z)n0eq3V@+dJ|rx{xn4PH9vQ_oJ1_|lirdYnA3qT_%Eb_MyYIXn;J+=dSL?8COOv!G zA>RdhMg2fQ^ykSUbd8W^#2AS%u5&t9UyahRM%zn2+m`c-r77|?;p5)SfjsPK z_tOfrx>QI(^cRLOq#dA0IjcF(;U2^U@t!w~bYTtH0v(u`GKfqSaokgKW{i0~ypA2# zWBhORGw;U0pzzqG!n&?`WM^82M51w@W_&a&$*l9Dc#_}i_EGRBwln_C&Tw18s_P)u#DTZ z=QL*y8R0tm6KjkiEIat7j-=EtX)mfY%Uc8~!EgvSa0c8lR*+tITXI3pS|4@6QzW+` zcwXk4g{k1cUWXV1rlgq_ivR%D{J+Ci;pg+G4ILEhe{>6R`pIVf5@Pque~D-ECTjQ$ znz!>cj4zS_QBVbSGMN~D!kuXJ7!&Xxzdi&}wsrobTz3Hyv=fVt) zPqJl9m@^l2Ncbp(zbNYeG>h09PXAy-Fri>U0RWr+|J3f2kwGSeA_8hDrrMdvT!dhI z&?yoGz`v-AMGmMG8)(vcAcjNCiMg}W6@`*e&RoU6{8eZDM<1^9f?1laV5cpY;>OZ- z9v9>syWO4L$rs5L<_$i-@jWzyPPJQntOnFhb^ax1W0+=;+JNS7!?*qba%^tTIRye)YIKjVy|0Vy@?XRodQV zv9aaH9~;lP@VHBeB2~sK&zH#L9s{CulRAYp)r$|Qk;N`inC zNT*!vFK<3$Cu%qV5R5wSD?`NMe=!P5Eq{mo7D)0*!56?hh$N`oK~Cn{kV^zLV}YV! ze&&)!w+!-QCD$#l)rVUV5NiKnpuv=29dXen+0v3XhS8N&-dHIMss)hDfesjpVg;jr z>gF1%@LPXRiFohrf~o%$dUe=eW##R6(ko^J3rZ?najp3?*BWmdaP7Z)!%iQovI%_v zGjcp;t>tk!q5eejz1rU9ZAjkcn!B^Xafu2#1hMPxR_Q76nD}jJj1%V*OEwxktH2$8 zmKFjs{TdN)BtZT;_0S4BWs-ng8L@hBMM}(J`uQ_)V6;f$NPOx!8h<1%DaSTSnQqTX z8kOgWU38ZiP??@OFgw}|nw{*{qcY67I_$`1kqA*;jFdICCcj_+yo*&%y7ccKAAswO zB;i1oU{WR|wKi80P)Q+}&X_>RaG_e5>}f=-rt$<8pt(191iLORe3-h;eL^bEX+>v3 zWIfu#pC+4)(eWnTGY?5>w2as0i2?uT>JfWjFaQuRSaEZLQ1V~tER_O^5QG)n18_me z^kf8qa%v>tbQf3bM(XO`q>fmW+D&gsZJ@OnQPmRP3kBxV7 z1=lUn42SxvMrV2$Z|?8wIfXYDGrf*3ZRlFXlMXtS;L>yD%mWZtp;J9;<(5#yr#l))Zg!5W28Mig` z5|m^d`WsG>e&)Y`CkP<>22WD%PQ`Vde%GKDbsdTWV#uzP?D$!&r&yw~zy<{~1k=*L zv&*LnBo!zsWP(l={k{-i6owPMC-1LXFxck$i`&lP3KGM*L@L6Lp?({OAG>6q#iAJ{ zo#koRKYeFL(+yw{T$LuNgOM<73?N9JD#-cH2~f3V4S(r|O*$<>{i`EIb1Fzi=`bq0 z=*2Jx#n5}-sJ9v9yzqI@3OAxr8c4=Op-Jn-(nJMA2D2oFH;uYpCId^SJe+Ad8Z$vV z_p~|^X3A~m@p4W#X`S{h2}NvcQZ5`0$foxml5AHp5!sP^mvkE~I;$zEL{CO3GpHH; z3#Eu++QO;hwISlT*WLC*I)Rh381|;tZ2n=U$dM7tSA}%085dJOvHdQaVoL`kT<#-U zL-^7I$Tf=N*9Cx&mHj^vKhjMgWEw=S?ZCH&f5{uqUMpL<`q&Z=)XQ37aQZR`cD7t8;&CKOyfq* zH=8#)RnbQ2bX;YX_z{M!dhkT{+l->t1fwKTqlAG*?FY|YLZ`vB7EzHl_M@_vZP@@5 zkJh}P)nT@(xvU)D7V*0-$mzhvo^a-#gW#%BgVMgw{*&~&L$wHog#!{{Fmw1q-BAh>Tp{Bq2nN-h=NT?AGzgV0o5I)G zX%uhvbeB#*5&7Mf1)xAR+@}FLZiw2l0IL7drK@bGRDc@^XoMmhn{;u(F^%7!~=<4n0OD%4pGWFV1 z&jyQI1oSZlsZbTMb~@$}Y2ZL-kbxUZ;L&Xpw4A3&E;=`r+Bn>%(@Jlz*kLephLlfa z{-LltakS{5zvV@1w*q)Jk|(!usY=h5O0blnGek{DfWvtTT3rAF z)+`CmXQHsDrW%rDgRO3LiVrEdv8Z~{rnZw-Zkj{Q)#fcw#??D3qcQ7xbHV456`6gA z`-NusJ`s2VZ4>sE82B*tQXb_l+*M>!vS^h;DIwJ+xfRs$h!mpaf#8T-zBv8au0arj zKn7sr#eo1Ebn~6qDR}wRUR2HW$!Nu0*?xDLm!EDOm66mK2xEcu3k3+sM776aDkexO z)ev-|Wx$a?H`N)WA?cNp$0sC)MAL=2#1=`GF1tayY*S5vc$X!XO%q&A2Qvi}D=9CO z>Rm=H_8>*3Y?;59OMa^YG__=!91M$OVs=0-h}2D?5qF&z3T`!qw>{Xe)|iLk)#gPt zfsrer2HWOf#>ZCJ>_^g3i|nx3baDkMRi%%P*JvZ0@>4Evle3R<%GC z5d#Ohy^EVz=cK(S-4F^|S%TDd?(hjX5<3_K%@&Ku$HNHg5_9fL9|fQs$l$gpS-Og_ z;APPzN3{a1%&q~58&$zTQX0~X?a3lY;H794571~3gunnqGgW_RohSv6M8IV`0KdEA z_K3tWv*;P9*biXXNVvRY%dD>2Brf#6U=E0I%za!5Y#q=}QuxA(`d--<;<7^C29qWK zSbC9>RFnIzd)sQP5voaV&5Dj=FF;4JpF5yMlHrP>6Q&3#o|B9`7{#-WDW^Rmbh$j6Rs=5I*mrh+#TpAMewFC z*}#ZvZ5JK_Q!B?q9CnH-9ru+@=R?qnQRQiS;pN58LP}Z|&^sTSYNKZ;H>A3d669=iZ`N?uM>)4Xmw6Z6~)rq;abB~q#Iet<4DQwuTW?B(3E^GD+(fuRiN^)3 z8((c&-X@daJjx3~NtTT?Tlx5GiKHtt{m80mnP*_{p@PvQPAnR%N`mWKXhAXJ^ErlO z=xlLQvtRx+%FB!0xmwop@*}8nH2;C_S)N{bUQilAUoqfZWrogLNvtTb$Bn0WN^aaP zb-v8>DKSAZEUlB$`MW^vf>qml``m1f<4fRnFQJw|KGMKtAM#W)%c?Pf|T zvM;Md+Hluw`SDyg7Z700WH4xe=tif~^ZUFfoxHT{QTxVO^_;N_pM<(>%muvrc!j&% zGFTqv@#nh%!O7fpxr6UEA2qr{IIj-GopUu?b3D$#O?H2X=L;)oY=eZdL`(TIhO~D5 z*D;lvWf;N`e?Tw>6V@Le_Mpr?v%#K#w8s6a@|gu*slTFea{WP-4xO5BDW^jM?r*Z+kVDsP zDjT7~Ss5KAtYS1G4pRPibig^n6FY-Qb}uDm9HBB?MXs%3PUOoF5=uZzra;_}u*A+a4U}k{ytcg%zgSF)o=W$Zhw;xAWR2m~YA8 zr<7D<;Y0-?2AHx418Jo2CIt{S7XGw54^XsUz%$BzE>CYCAKtxboA%rx1X-N2HX8l` zUeX{}TMRIvw3UeOSW}<-*z#j_K%Rg@J2apZOeGB#p77;@x~hwdJs8F1*@6^CuAx5t zb4e%C7PiwVKyR%(WUY6iMef?89Y!)?{kAsQ@x1F zW0i#8S?TqPDf%61mDn?ps^u3|^M=&=qTse0NyTd#@2o;zDDbYPKyb;@B4E~Ch7d&_ zt%zCr^j<2gR@2?DHJc3=P$#1Ar%@Jz_&>e$l&bM8vXbiP#avSg@P62}vjI~)Hrq&? zQ%p@&O`mUr?U+2&Rn`w!7Ds^It%UsBs)MUWDs6Y5*ZEuvAntdD@ji0-?M6Qt>~$nF zh=jCU!WOqknu*P@03g*`S_F9|j36c=P$^*LwBTYiEM$?xEDa`V-3@-_Hal*iS*$`S zTaqOl7Q+L{AHh#`>YM&~Pu#~s-tXl(&Dt00&w6XGOSTOl&v_TKj?!iii7|9`m?fqZcLqu?U$QY@YjNJwP+S2WVu#DE6)5}6xdc1*N2w*P zh#Q)B^DbUAIFSkax7h*uU$L6QXLi))L(LR5Rcm@MX^2Eq(9?vyUx32v>(xh(h#|($ za0epwYcp9@58%wer6a8n0hk@&~*%_4$wHf~C+|0oRQ4G(eo%_I=Hoi??I6%Xc zD-!ElRZ8gXl6SE5@lReA7|s~|hL+@%;Ry&5EH&q|cK*=GbfQ4lt6DlPc2$x<4i$zn z?XjrksqvBKFbWD~4qX_-_4Tl-yAXz8U>>C;w)?QjC2xdSDA$EB;f4zNXO70G@|XZr z0#Kmb+d9LQPs7;oWL(?H4{t~-??|DcG00jQ;&~}dPIgMA-)xe|pRM1{A|6!4t(R1< zi{7{%OfURg)Uub8N`xlishw0JlLR3~rCpt|l`J~3UjSXNVIZd)$#TicFY&mHJv0i) zjvvGFApJmE-m?woFy%3KyaqJ#9CcTFD_aB4WdHdie=F_iR@yB?%rT70eMa|59eJea zBa-CEKWV{FO5jo%5ZM6$=J<00eLsDNljwv(nAxXS`lWK>&t{m%ZsW+vqb~X#mkTPG z?b}Z8!0z8NXv&r;Cy9=?8x;%b+%@to+_J_>FJ=6I|XZ`A`B#S^1y!I!=WfCa$-LXQM)7BJ4SzVF0SmFi;ui zYg+kCXed-qTCU`qw^&_eWm*oFL~JXv&9kaJX+u99KCLv4#;G)%S;_Z$AjFH{YX$m+ zI$q!CRajJ(TMy{8CRO1!N&fA&@37wT67o;4PNPDk=LRg$Ak79Wv+d zd5D<~Z?YgJOQS{{)!?X1B+P+}jfVjS(UB_C$R?bK5to*kTK&GKKa86`5;oZ%FG$Bk zJ8LdmPwv!6sEgwU*1tmN3F@qciu+tN&B~HnuKIGU5?~_Nxjv=wr=g){8C>qHq}_Qt z|5Az-80VYfLCZ>lIA~dpb9wY}#Ag@h_l-5J3pxR!&`wuNRTTbIA=QbW0+G#{*eCsc z-i}+|Qz9X|g;nK!2_#2QKSm}f*D2AVO8r+V6v(I$3`>roK#5TmnvfC&)sAm=GAo{z zwQ{RpfqHm(m`shZj1xZMxS#4Ua+_dxl@WvL^; zY>*ahH0 zOY*x-o#jsD+_=G`&IWOegr->+6Z39VD2)+*N zO}+GOTA)QQ4OS6_XX2ugQ`Z}tnkXh@S3*Xk=qUGniHLJcz*8i|9-*)2R>6y_gLrNF zDgB$D4%n-PGF3nkLqLh5NX}0DS&9{8&`K!%!PdKBuEI3IsG8wQ{1t3%L^`6N{PEV| z&m1>Ts>-clL(J_PGM!9KC9i%i^Qy2J(UAe`7B)@LWW|(Hn>~Q`>Od2J^4JG=-UH2l zQm;}N(5v`OXQpcvaabN3Lu0JPBA(B$Em-nN`_kcj?&_vC^|iKIoc_t0=oYvy?CLtH zB-*fO9er;^MIC8JKPJg)4_5tnl+KR614mrxpLa#Pu=w;3bP?Wr-TLae*?#~7Us#bloc8npEkCpXR( zWnRtI=^~dbXP2T$`V8b&5ec_DC#D6K>|J)EAkxDIc&Ec5fmA=cj%E?1CuZPmi;@{; zYY5U<>I8Ao7?M+@P)lH&t02`Ap8eufgnGi%@msqM;3P3F1nv)V_Xnz)-th7ZOU0yp zbWN5Z7rYD~!`IIUNZlTQ>ApMMI6nD#QyeG8js%D+Z%Dutn^Xj2DdB^e|{#MQ9u( zfVjcT29$mV>X<0f88$yJAYsyn$UsfT$Qsord`7XvtGdcfb=*xmws4fe?qI8B3~y!1 zC;g7RfQKz9cokn`Z4rm*|~#e&y|ut7PrwGlfXgnu)(DuPg!cvY_`L)&OXtVw&k_ zxwNKIcU*f@)RQ^O#6IqpbOZz}w85`VSPCivU1!6KQn!LF`{hYp72I^zIMe|SC@9{l|dw-BeYk^={kktcBld>zaVpDhBhlF{j;3|tk6|aDzCaC>!ryxJroVTh@w#X4T|lt zPP>cyU}BRj?ifKBF9Z|)$EUV!o6TYV{$;SfRPV7_CA4}R?bq*{M6&DUbaDX&GKpd` zVCo-3u>Yn`ax?OIA$8Gll5EgA+cPV(S4{%Ob{r1F;MQ!q{IhJNxripl0_o*!m=M4} zz3<6X3@fa`G*ZyX=L8P268THa&&doi#E4oC1(IWZfeB3?H37eV>5lH0`G+0yTbUX+ zksVT{nR_+;v-8Ow(gZ;tE2s!D`_+ipj$>c-a55fOWaoX*N-PamA1mk~z$YD4pa3<< zyT+0z%E8PdOpH~%?Y`y+vXMqYvOR5z5qDwx*Oo!StJx?XQKX;qc6&2M*=Z4N%-*%C z>?_jKlAEWIk}_g|BZalYA1jy)D>>rC%Av0Jq{4_&f$^BRaAZGUomyx_GtM2)t@Hr6 zW=-9DsX{$_xhch{_6kBsg`0T7iwPQ(6E@ixN(rM#qv-Y!#NQnkT1@hV3kQY?=%>K0 zWet4HC4qyWPs}g5syKXt)fiwD^G^45fHU7+UJtBuY5@QlUGAR|>rN-yzZg<6&-#rv zKXf^F)|qx@yFvL*zrz^aM<3?xm2*hS$%JtSO}SLfpy~s$dGUYiNyb0*B*_2Olf=Bq zJvLIA%oW*R0KK{ojNG;KOG(LVBdhg4fz%30$*ADFA@IcwCkS0A%`qALjA%u>XT*7YjJhH~h2v z8jYzzEr3mEQn_ka{Ad9HExueIbn?tk1_h;wDt(#xLo0m)D>`|D|0<Q+Sd(3dZXti`$`cTgf%n4UprRa zGSWLOlTssqvbl^Dd;$u7NP{Cz82xKEc_^|_Rm#P!)@a>WUrKoV4%*D(UkTGXxj)=P z_B$rW-fKdoYL@ZEw${M_4&a)sMB&FUVW-P_j&+l5@+F9+Ni>W4;$APhbVyUn{1jU zLX0aDZ3#ohOz)Ag5RuZmtZ+^qtzSJ?HZi;ZM{CNd^4D1V978&Gy0Q8r;vO zI=ZtzQ}61{pTYGd8q$=u22jS%fA}ErQ!Qy@3yY6Ej|DG>q3>}ziK0%P^%V~LNLJFj zi&<0k^wnQf<`$1nvf1-I`|GUzk^YjAI%EWpm)KOFcb1q|1J3*9hG+ErZv0&vet??Y@Hcg>4eyfUR)PvFN(^*9t0pv@(_OKBIKhw{9cUdFOC*^xn{veU~dvI8q2w zSf>OkDF)n1&KRC)4Gcxq_lDd37J{`+dw^RZ94-uG5ecqX)l*K=baTuAOSknR z@yc(oG&EbH`feBn-+o3#rBh#F80}|9n|2wz8vbuhRP_F8axOHVhc)IT%;ntD;y`?n zPQeo`hYufZanHF>pcVY&s=GgFEf2I0Tjh3vsM6Q;lDX{+8?UAp`SU;Z`_I~lCy0x`ygti8NR(T{A~9bZ5^ z&U?39BD14xQO`PgqM|QORj)9DX~xF{yI6seL3F;b?G(>n*-XH8m_v62QpV8MV3RwD zs`VTC&$#Sg1vb)Fd;#;D-=xZz!XgiDU$CGomp_o4RQba@B3S`m!@D#ImP{tp+gvt$ z%*V2KP=9FofjJSRL`OtFNs6S&4eh<&d{V5b@}7aSc>B(#6-MTJp%$+Z}e7tK2H!7D(ZS5P4@s?r=g_f{8;)1E9gS&+hjtNlK zTC0K%Fz-JmFaBhKuj9(rnekLElFQxgNe3XgE+2s*shNP5wLt`l7h(M5qm@aP<46b^dX*B zp%#WSJ0ut-y~Nl#BmB*U*5`>AE_iP|y6RpvratbtfqJfsL!c>S5RBM>5Kb~8yFB37 z)g9F5ZT1frtz??9(rMy6oGhCY&sM=D2U*dT;CfG*eZ$BQ(XZ7d&mkk=EOS5)%V7jq z`h3F=8$tKYJrax*m{gj%k2-~n+dxTFmqAC=aJ!hzlSDb%x4fiyXuP_pTH-M&VnE$p zP}(;P5h!;2s8tr1Wkb>-K|k+ZK6p_X(K_;OxVobbWOro8QU2)hW^shz4XFMkzoju+ zR!Ro6Qr4*g>|u3sD!+=CZN-p}L5UXfh6f$Xx|2zk^@iX7T@X4>j8I*|8%$iN8GK9! zaaMsOEh{K>-nwQzl(j36ID4MPO3G{`^#{v^u5kMtwYQ21^a1N*z3`s?6RDfEbNA%@ zq;P=QrI)CCenAo!6_^j52>hzKxo7#~TMenHR!DOIAI_%q?MjCqLW6A9(JR8$C6`GO zx_9jdmE@M_TFjJJ>S7Vdllq=a)QsIV-S8^y%sa+&>d@y8xz;40%^(JBn-O^NmwO!y zL=IEFkVIv$i*t#te|JlT5Js(0VV}S#=Mv*=M{@vtxTk12ZZan;EcGRM$9G5(U|YRa zQ&?j~3KsXn6AyTVqdiD+ceH#ep+OG2=IUaSeNj1sq#mT0IHbU5*x-2+8KnR7FV;kc z2mN{anek9NV_$VHX>N!^e+U}W5NDW8^!#(rEifNh`D#zK-OMT z410?}6DfpMo7AX)Au>-tN4jgvk0OC{jW^z>i2JQ{LCBBRY0@6YXr{MJT zy;xXk&I~*zy8FXQ7;4VRRTM4sjeAHbh` z)gvse7`IQ~Zl@kQ8==1j5F6@IPhR(nPP8!V;t9jfx|qf#aQhtcYGg-fJSw+-Eu)iU z#e^5*_j!i~e2rSxCg-dWee#KWGW1P4DO*2o5x0E=-Tg+yK~`KmOHUpx=UkRw-{#_hMF@u_C0jc!dZq0fpPdmkr6DT^p6_%8 zu@GBIPiiTIWFw(QkNb8^!AOQP=S0RK(QfN&)0QL2`ZW6vNO%d{W?$tSgKe6nrc)J+G$YtU=V+hY;q&z zLs2kIm)i~Jv8)AklY)nv^6E7X!)bO z!T!C^UOu~o?&R@Oq`Q{Hd~l=?gnO&5GcB3J0Raa3)`p_#_f?ehDX zv-Emr8ZdZ7Xw*??Re!Pp=c@m-o#y@jcTBxMW5WF3m{$BddtaAzL0L?$B8q^6Minv8 z-lb2?_J?a>@|p_3!zzvNl-D9tvWDqePV?;d`!x@;Z5|O*Vht|uNB8{HWPaiHz}jX>y;+^s z%KXgX|F!@5PfgYRGmrmK$p9;nC4Vnq3tG9=XHwZ_b+?>TD9f7pZZQ%Ey{~0rQ)d0% ziH_b0B67AqvpY6EV&I;Qs50#J8RFrK4k`P~kBEL+fPAEt>V?|Fcv^YtT!C8{6nFE9 zO2%`JbWS<_!&XEQMn?XO`9}veF@<4!7TEZyr!K&22478-Vq-U&0)S;>5L7L^U=!3q zDUa*ToGvou;*c#RNv^q_I$Zp&Vso@@?m!;~yKpFB#$Vy5djtR=X#e{+eu7%at^dK( zz_kAhYGsQ2A2m!yl0DB0|B+IC{(HuYQ~-xC3s{r$zFN}A-hDiyqm1z_JLWs^cbq%folpTp!f1G;9fxM8qX-qdQ1VP%URx8);LT=l zefK_PnuO&!F?)4x$1AVJXv-Ke=YV}#*+(z?zk_2m5^3rs6eQP7DirvI-!G~ zyA`oTI^WFyb*?i{7i%K5-hA)|qqRHDwTtb*F&q4>Msn1EOmC$*+&h8?-;4F5mJ5wjip~6xKMs}KkRZGe55@hcR zVOpK1bNt+PI+B|BK6?(RhRMchjjbNNX5T44-8C*NeSt5LIMIqr)wx*&^7d>IzV?5` zI{VW9&;)sdqqXrmA3&mro;7vs#{y&n%NH4a>=5PH-{;)=$iw+~Uhi*oKm|MdacHVn z&$n6^i8ikKmL@2NoZvt}uiZ_};nlO=%(8i0^@cg&4Q)B!370_BaB!EwgpeiXTecu- zmO4raw_Xq_(^ih!12klVhhM*a-sgb$n`wgUnyV_77*q=uPjUH40xK`p69cT7v)wN2 zUYQduThp0OC(qi>YFV_vrPWBWA$4YsGQ=)51^T+M*mc5y`>XNpOYRF=$ zHL_-c3qAIH(HqLA1tT#4)reh&eh7#TCxuuj-+oCc-DLp2*UYH&tL6ehY+-p!^KsXV zkcUQ{S3E6EPT5m(G=qqq#iHieIQ$Q4lHWpJ0c~0O+rFuhJDAxQFJG#vZ7o#>N@sY!S$tLaV8}miy&@kbCRP|d`cUQ- zt~>x$L+}?;(!`eH%6N~Rok8cS2be}$jixy(UV|O!Mnh8b9v=}zp$}X|j;{|@nNpSEele{VWHaRSA3HRr^MYf?f*zsQ|1 z%N$|EV8u>u{5KOV`y%zL%!i$20eY`|GKi2^SfB_l*Cx+45xljA_q7t4&Qp3rpT$po zKadt(r0E|QUY!E&w_PPH492iS{Dy_k)jMV5A5l*I?D1g&5Nv!}&02iL!$nS)BHGR` z1m>sa35VNKia@BU&x*nAfak&WPV=^K!>H5sHtX6*Dx`$H(I9(hbEnAi3L@7om-7Df z!c%lo)iloTa_gYyTp%THAXTv-uFhXZ?N=F{5}R|5tIDjs#cF?)uTB8KEN*8ZFqOyz zQx7vyW+iN!%paad&9&MgN>%UKEbtr9i69yZnqNz~t^ztr`*k2N#P0$*=S-TK+-!}m zQEf>lsAzKc`o%cirO9c1|8fjIzIU&;kjkin!teorvHV{#prT$@JX7W0`+tn;R? zuWqNFZw%1AOa(zi-3k)<-Afued>!R44Yhwi_jI&_DGuxt;&`TjbRPfJ(Fm0ksFuvM5z4XjZsZZ~#_-tN$_aH$lI zg=F2q=@FBVs#jLtV~N~GWHkngFa&EIs7u>xW@jg=FlspYaFQGEmU|-`EZb$5mM4jE zl!!g&gc!ahx-x>hpG+yBZmnY&pFE`vUwlpPFn=7lqNeg_vYDi)lnX-hYRG{4SbQ;{ z<)6+>M<{9Jf*Vpi_H|uW1bLsYf*?!16vi47N38GeY&nqIeac0JTUp-Zj^H)Y$rG`} zWJtBcqDbdMY7UYy$_AOqd3u@m_a#B@-F<7Y1Y(r9@%d(!u`4_cI6@Ee5VD>+gBEk) z3GW9sER~7*l?HUEBe=kHYQB(;+BADbQ_*s&3j|>vT z5rf*x)}(s%C;K>P&_3CzrO^JjXbpyx_*1i-arN)er>CzbXpuffftI<7Bu)>aHJ5x9ya!W=)Jy^T7cN%D zw3!@F?mg^G)-_D_1PnHAIzi z?MQi_v?XFTjDGtZr%913N}v~&5<{N~4rXoVU~&u;(y`sFTbjka=3_yH*qtR3f?1nAr*-PPSDG*M9zsOK8=@PrP| zj~G%KSL+uX%arbdMFk#WqK`TkRZY4_i7ZvatBKOJmzV34voW{cn zZ_&0=WUWNCb(^1@pV&CQv<2h%V)>4wDZpE!?|sKk^$L|dg-DKAo!Ss2QF?+?aOrwa zPgRFmTY;#jd%s#nx`Ep@%T24-llqtsu8n!ch$3A>R zwFpc@OZLq)sTuwugRGlzvab!Zr-w2Ro(w_jNgzm=O+4z94z16}Y7FEajKRH+SK(mb zgJu_#@wPQlQPX`SUZhO!8p1TxwOfmYy3A^C(UkD`IF=Fcx=KQ=kH-)jaNTVn(jqmn zg0)4!nBH)`u%@VOrQ|r2cEX|R^(4ok@urLXKRmr-V`kCPwR^|5ZQD-Awr$%<$F^uVdyLUOo$I13jB)aH0FWO4J97ge{SWvGSQE&YI2CO4m4Pmd!Yiq<{yIUBv_J00hSMq=k=7S!s-wu`e~370#G z`tI`jniYb`X;B)e(Zk+pi~ip*LM}fMlPIhc_A%ARHwKKJJQ2g@1=wJVY^N6Wv!0x7Earic4uXEC4zFK5rfpWkR{Z{ zg_rBCdScQYT*!H{pn5fPGtK_mu054>9mQR98JGhZ{|kV0|NoXI{(sC_z*@G_aTO{b zZXpB3LIhinD>~~*a62j2*7y)!HN1S1<%8gF8pPSxzvxw~JIFGb+wIH%2u za(TC!j@L3Fo-jQk^P93g+OaGWUBoDHx9+y4$SnSN$tuYX9~clKY~J?M1;(h4wqfuF zZtuaXxUHj!2!{hwQ!RsflukFb`=8Y_A0@{`)g*sreA&~i5SPnrk}rYRVy71-JcI?` z*T_FNGa#<}6CP$MFtIv|kq?=+vU?7+J(e-WZR0Oj z`__5oi8ZrGaOmJuPY=Db1lRQ_40)qqC9-5;PBh~y=M~DAUsTfc%y3Xjue`&K8mbp- z?qFX}W-;yBIEL!kl0dGYB>ThNc9r_f^8a&9MyMkPquWO_S#Pf_+e3(;POo^kBkBtt zNKI-lE>n=-WyEsqusP0?JOm zp_B}}vn`!Iiu!SziLy-rjibuhtc{f6RC1Y9%!iphv{nCO6h<1DiqM0R$0M|K2tPS4 zSu+YNwk+(4@QRkELU-0hLI#^nPZ#$w^;Is!o|oIdf~@Ast>}D7))jom{AM$)5eH)2 z0PHu{J|Sq_RM1Xm1AMgN%X_g>OHZ4!WLSxDu>C?%)env=7Ms!^*@Ier( zfLHKFV;_OH45N6c01hM@^0KiW2o&F6mWJ#FD=5do{@dHH;XA3lHvX=VE|K%p0}m%y zEvZXB5r-0iZ~y7VN%3VGnqofcS2hC3zH#h)*pvu7{py-9pB78tv8+Kqh?gYw>;N=U zL2FlU>-jJMKK;L99VFurCP)clLQq2c>JsGCl2k=kuv!&D0Q{wCU<($=a!yct1P!nd zkgfdM#LHf5b>VO+ z#17evf4lZS2H>l7A3#9FhmeP;(UR*psO(@!{bl8^ugr^GTf-K76Lci z1bm7PIUO#@1`$TaQaTZIFTMU+_~h9pQ7{9E%!!MI+}^TMJXRba#12=a#r(c5xcCCC zA|_Z{@mAqw{WASbkkAw${sQQlP6YsfyI6hFf&+M;CD}MQnFq6`a0XCMP)(Q+hET-w ziUHaRd>%A808r+mX?D*f4yV%gpEdk3P4{n5kU^#dQ+jnZaLaGfju8atgbM&%WXrTQ zS!L516G4WMYT~bbv_woV|9#OY;s48QH9-Bh;gp941EK?g)Sd&8$>2__CWQnHbs;A8 z`sZL|Tl()Wg15AiaM_}~oO2#jYBTx2=KB%sh&FfvgTMyP;IJ7DJ%4v=vjB)V zk_p#Ve`nbKxvL}@sJ3q_Ng261v1xJ5LRY8`XW`ITAwl%da=k0YGR|SHhRji>7?eW|b$@$4?4_i!P5vGR&6BHso zck-GZ@Cu}w&LcT!3^9@u$5##xE>5C(u!=!rX$c)M2ptOnKnlTe`O>bSIxXAi}{=LKOvOD%309pg;zGldP~Xr9FSTEqs$7}Co)>*mA|AjgW&xZ5!Sa3JXuOb! z*b%ZQX@oA9d%X+Tz_l}=ti8|4dlK>{m+1U2ay zc_?ncNKKEZ-a_nu{iJaVpGJV+e{>T&iN(nN)bjwTk>mzX^dUq5$Q=ZiOPd>FSTGqD z-q0?nJ8pb-+9>DYNMN}gizRFCz9~P7PX7~&$uKk`+r-t!a`jr(gG_wbT+ZmW2&8`K z+7c3^*|dUO=7-FH3?hpKiFuq$i~Pw34y`ZhQ4_yeLw2~E(qd3fCWns?f}>lH2n|Ez z<2&j~f*_<2h(z)mL*w2By&h4(8um>k+ZL9W-*CT!^qFb3Huq(D-}s;I(OZPJe_GVH zduubw1L51l@q!`3mNRy_Mmu{gyLR{+)qnq*mS*QkU@@{4r&d<5MP@ig%#x^I_1K50 ze(KP(@+I6Dl_m!oS@>7;(*CnB#M&MOTiaqs)y(F zI#%VXW{1L-vCFp4wt66>C_Q6R0)o+-cm&3 zv6HTH80P1;;}QPWZ}MIDhkfsLzJ1|WMMUg2;LWk&bPK40pulHu%r+&Snh3N6mOVyG z+g?i)jO-j8&f)*l%r?9uPG{|$d{TZRGKP{kX&WIyBAYw;`*k_o+-ok+)s=SNvfnWp zZ$TnTCoy@DhHb`_4kBD+NtrHN(?wrTmd+?gsO4W}bc7*1iqq7ufO5F7x)0|E?`WfH zSy^2ci!fcPJ2E(UbErTd0bbUDC`iNc(0Z4mufx{&D~p49r(H3`J<5I7T1iBH(y4MGOy7teF1 zZ%2+C)}rjhPX7^+mBJYn2x>wqVS;w*B;r&tXOrp*AY#xULJ0s(kZqgnBdh9rqh#Uy zY30Q-g7;i~Cy$TUk!*i@YGu*r6SX-A%+!7k)C^&bj#A9=yH4XRogf$ep1LfkvPUr~ zr+kb;uK)&?bl~#oJ5D=WJJ1g< z@dqw9O)5h>b_mx!8f9q)1v_bmm%?aPFNf$Vep(FM6(e~kQaN2MJD4%bGMbYFQnCUP zxEfxb102u_3nXJ|sSX)Ru)?H-gXRN{!ytkf1oZIo<4MiJgre8ReAml)5?K)=_+3;e z5kTH%>>|qiZej-((#CXOkS~fV>rWn{1pwO1Kd2a$omt3X|3<_>M3~e{l?sQO39U29 z#6t8+7NA>k(qUUHX|pUP6!k67<(0rTK_hZ%Dtk)l`Y<+T-#G?YSx%TJ`!7r z`4#2b8$}bg-?T7gf`l4|qNs%VwWayIkFI@OBn(j1>@2A{tU;i{8#iNooQZ)ssSI&H z^EO9YLKb+}6yDGBdxf1q5~N;a7j!$y{-NEa{NqbO26G}!<>(UB4LZ&e;YFK?- zROr~jN*dvvz*7=bIVFPYER#-4CC#ypm5o-ggoHoKn!xN}40sg+rY zCt_Jh`;oaKkwpbum4`1~J_8{6>Z%8@J*VRXPZb)MRoL=HkV`+ox#H{Vbdy)?_`ebq z?-Q2;*cD(Pi+{$F(SBfW(ME#tw4|6JwwSO$XbuddJCz^}_pjv=7@BW|;Rp)`5{p*c z^Who!$EeY^Ko&T7LLjR?JdC^g?Vs;o-ygkgFH}*galMUgAV>=FZ)1@20)ZLXRXcht zUD_&3F~H@e&xfm5qQvY&j}O+v=$Sr!(amLmw$xWP>{P*TTB+& zWuX*ZLZ-*;m<=Vm?jyyMthp*=y18Uov*!mPHFrSH3ri@JczVMqI zph3*hR#GrnAoAq=4Sy)F<;rr<3=DeDQno9jW}!pgxN(cbh1}MWt$uavr#~E)u+erk ziIA?)wn}OjoDrAzvpx3AQdWWhOZm99Zmye%RI7NR;v%($R4=l^KKN@qdRpryDvH}# zP{?$d!f_3~n)(k{S=$)BUfuXw%oXN3!#-+MaHv1D2&bNL(m^}#vlZc37@Ir_&Gl`j z?Lv7)E5=xY0X1ILM*2MIadn1WJD&Rm5dRrxiHsi?sZS6>JQAvc21F*);d%g`oJAS$cLiO9vU|6FUMjw#UF(aB?#>OATZDsMg1KZvUbpfkWk z=4)trmH=lqaX(+3EECm<3RRI$6XhF;OJ~y6LCsQgXqmvRp_CN=)#mN`nDJHR^J{$0 zZ+b5N4vl*)4Ml`~O&bkt?H>V33m_a1y>@W4FG9~Myrf2(u$^=%O3UO)EM&tLf??i4ZJf?KoH5PRO znQTa!y4Mu7$+W;ou}n-dnz@ZWmrcx|s+Rt{>fN_sxtqK{uZtgJ!U$=V95Gqv_iV?`uacR&x~Q!?OEKLN3(0a~!LgFqy=7w5gMp)#8Cp=RqzFs`tmOQ43rp?yNTb`dI%))9Y)ApRigu`I@l>NhUIIRkU2I2 zuO;?0=&Usu!0=7a?q`@OwI?J{;>Mi0!TSCzC0Zt70dYa_ahG9gMF@Q}n6#E6H@yle zJmBh2yr5FvQ=5?`un9OnMQ2%$E~3|Mm=cF(z#%MAh=8U-k&H9_FN%OzeTFV~H*YS~$G!f6)*+^lr4n1{-Kj05>FKC9wnaUkXIys*Yjuimik zrak$Ef)&Poh1q+9{i;5#peouE=OkS&R*AhF6}Q+R$8A~NUUrY87l$9UGuU?7DJl)C zXCYN@njA(M_Z6U+S#Z|G1Tk8Uw<0YWAPOD>pUWz!5v4zXHZ&eELc~3=XWiHB?D4pquE{SSty<-`S{dN8 zEqIi>f|BN(6=k9?*Iwhl`tD$T}pnN}yll2Fl)-SL&xmVn+k zw28V*uVwi~@U-j8{~ll0D0^tZhl^{6Px7+o%kO;n6vDk1YPGAqBfm&JT5+l896V7W zn!;PTrB->@kuexsOx|8&Ng1T)xVn`o;EfF{sps7-9moc|K{`WZtGly?kAUma)FUba z|4#{Wf3lu1I~)v8$K-Y#r~pHN6HR~iZzA+d0V}vX?BT+8EY|eXJ%rd>F(7)x5PRQ1 zb}3DR902c>yAC7Wec~{qQ*QKoYvXR666vs{m7Ixe4BfRcb%5x<2aMj>2;%x+1DsmA zS^9HMRSTgInB)qOG)LsY`s_875X@BK859Te|E3zrbD$;1EAlK@Rya;=3Y3#y#&E*t~KF`mGZ3M?ZooFS?P`C z!Mny}`VdN2VDe(0y?EZA_qyU5T2PddfwPnT0qe0qq4B-mZuAsUAwYl;1Ju6Z7w2++NmjJ0HPlCfKM1sXoar3CR49a0R*hjEJRSLTHQra?WJ)UcJy5aN%9nOMM6 zt!a?32XIR~bXK!R6d?c>0U#0pXb`bg&1iUqJ~;KS--nQ7Bd zw-}rIsepK$5zqxh5{0N?;7Z3qH_%zX;bTuFR@4ut0`Qw5e#U+9UisO^k} zLUnKh=|@|o1ZhT8NLw)AgwMgQAj{zZu!ww)o~{BnoaJg7xD_ZWLaGXM4N_exNp4%O z8Wy*!zOM?=>IXD6hyOVL9Ci(zk22W&!6Fd1DMAxc!G+n;*Xf&@h79z*g$Eid+nKZi zH6?&gHHhs&*?WLck~M=p0FMD@iP$^TikyljfZxF+hH?R^|6n1~_oHX3Gj2TN^t-Xm zo*cc4wfHsaPvNh^$xZp=LtqwZ008SxO?ch+hy0xxU*L;LgzSjm%BqcS5-@WW)cKZ? z_*EYd#BMma@)~a_nzFitM%uCiZJG_hLIeOF-e!MFB3mN#cxitESdOh5UPYTo!CVWf zKdEo!Vgr2H{yzkPL(*Z!_yWsZT8(aU#9>-=>aDx#W!6IC0f$1wTehuIK_X-%Af$3K zCBBr93B7=SRnK_l(#Fk3e7(b^3QnjD#p-7pfnOl&5xa+So+9vp1_cW;r&v{mZ!>!K zyl*Jff$l@m9Bi1%NTHGxVC15L(OH>Nnx(qz;qQ%TnTSL06S+Kpw&9nIhOXME`)KYl zBb-w`_9Qsq*0dH41Lx~K=c@u23snW7X}cWsShD%)7BK1`2%ytWI%XIYgncgtIDNQ2 zDTgqN+Tl4S8PcYhi8+gt=hl9iS8h~;WRYz2c;IhLYb~u2j{M%oLrTPS00THGZ$fx! z42@npe*i4GP7ABn-vG(`_m-;MP#!wj}*yGW7A50!fOOlV03LyyeV#6(3RZ-Q2y&h&|T?~$(GbF+wYpexNo&k-hk&uCWL z#~R5&H|8!fx_ytZ|Ea9B7Q!wFq}O1HK|EsGI?%$sc~;_-I1kIoc4Kuskorqdu(DfE zKD@-P0SaotaFtOT0H%_(NKc}FbxU7vjaRwnaZaMFQ`c{x4MhhdwqYO`Pt%#;G-{?f z?C)qAv^bDXl|OzQP}h-uNx~6W3Ewz9d-0w@;ocdJf3IL@hwhT8kCVa0j?EQOl`1K= zZ=_7jH<8O!3k;R>3$q5v8ot!gTHERGwSzq1ygGoARt{LFd%Q)JDknyO$8_VAhd_No zA6~@$3uM@=%}}}nGugochLRXzrxz8=wN_gnGtL1xSBDdVvQ|msSEP2G-+|QD!U5!B z%U$k&e**pJ(_nxEGa&{3<7@q+Pm_h*rKyFL5SpO>SjRW&3_C8))#+eJmj5IRD4Y~S zVw58zyz?2ezO1<|To96^lOFq_sWi<}Ijl;D0At%f(r1*{w{(xo=aS`R?XHPp^NFn&z z=Z#w8jSTUxv4Li$`kyA=5)_P;z;Eo3@gvszB)s2hve2|Yvpn@^O+L_6{uaiYpQrsD zPvIb*LTC-UedcmwH^+9F4A`!JF~YymF}X*flX#t$ZqRSPg-ml79yk~3=n_z`&m0Sc z9(e}>Pf3Ya&`{S8d|qq18^r|0AqheUQgLt?_@`~?r-9kL8OV&AABazf&m|`hIx@5N;*Cm#Xmny#K27-mex zuVOcVscd~qwX6M*re+z@gHB$#i++hs={K0gK~g5Ja|HW>qFJ(|NBfu z!P^8)Bho^m_cWlUk}SeDUu&y)eJnjKO%GiYrNMwd!=GkmfVE#UiP7{REJE+PMHEiB z0!lz+C3HJZNUV~$IL;V?`vaz_AxbY&`r6%S(-|p#i6iZtlPU#RHMZr!0af zZ}N%0n05oOkM8<(Fo|PVsp*9E9J6oPcMF0j#rrL9Zp)_5?ArPRp7egCSi+Kl z>Ooqd#S~x9U;Bc`!mGWu+@S(Z{0&Dka8<7Z402u}=-mR@qj2P?mjtbGoz*5Q!QfmL zxpTi2l{hPwL9Hd?rGAT&UITY`eT>!5H#*p8rbkBay*+_}F8U98_lNeZi3-!G}Shp9HOdw{5ryyNjXR+_R?r zJX}^$s_qRN3PD(*sfuc_xQ2v7NiE#O`xZggAi3rG70!8`v+2qqfUjYb+@Zx}gc~gO zr69Fi3MZRKQ5Lb&0gwWVf}`^Jt7U&mp!W%)!+KnwKz1R>Mn^p*R#ielU|2~5ahBC9 zMRVFdTi0xvY~NxbM^89$+J*a-H(Tt5*YacSm(-})=;q+Hz^^FG@yo5P?l2IfqaHhy zFr_^`Q$2n2r=CEx2&SsJGE;L@*1d`bRHs8*%&!SUbg!v^}gXeC~f4doiNw zJMalg&42m5Gubk&Klg0^i0l|4G{hLodeI`liAOBu$bFfHn|$B{l_UkcJR=~N4ef3; zu&+-E_A_8QOQgeHa9Z-t8%=>2cy}iK8P+FL$HNZum**$t&9M&h);%LN$QuPYq2?v0 zHI!2y77J3j;JaoSydf)RYZg{IgwF2m z?P$(_G*i&vo7r+)bU#7UbyUTnW#@CLh)vE9-hfr--cht*T4A62E-a`C&?qoTs^u#p zI~rzzXF*h6zgC@bFWu~sMGb#c2jhBGoRTFY_%5hnG1x}`NS7{1^N5L z1T)!c5k*olk-Z`(+{tC9gGX$ofTt3B&PUaa#pkblbsG{^2P8Vpc)={Hu?jdpCiOgZ z9Ftiysztnu7Hv~5d}8%2YKw+^Ta*0<-FRE*&^M5PpquYKAm4{FJCBxYu^na|jLhj^ z*x7WhUNTklTAvi&{5; ztL{ZO7IA=N&<>WB5Zs*~=c;;GHPWzMjI_T?b<8S~zWBhU@!TV8Ov1D*e0_hBOESb0 zNYo$ZsW+glcnj-mRm|5@Fz>r|A%Xt;Q)e+y;rBK4)`|-@PvT`3nv^jSP> z1$L$ipPav7z1&*8mn9Ix%|VF0O(X5qJ4pTe|EPUzypC~{w0}0b61Gdw8jJcq?q3i5 z6QQkm>5A_zY>og@^LDVR{|ZE>=B8mo%7-9nm7?LPJV+l<;SZ%Zo;=J8wf_JY={9Ry=dq8!+8!YMk$vK3)`u5@fD2a7uiA!a$zzdc11m|YnFl>WD9+a%^dG2V zt)hp`eKKo31~@}0bKlu{;Uh8z_UV&^PVqz9@GX{b1t}aYg3k{BxxLFW0l}(Hc zc``v%y%pjzQHT$xWVpt){y8YDD-*oNe6xRZes{}lpn|`n5$Rw^={Rh1lYsELx0Syq zF(rlM5P2UmBd39o<4%sGXq7>vVM+!gwE6nll-+!$??`qGQs;Wga6B6qHEbNMrJD-# zdHEW5-$qz8Rdwr++zk?QKlE$nAlz*Kfp7zMo`t;+ceYDH!0kpS z6Pol2Q}TG}_z9ouX|!qKwR|^Nmyts;U$sT$(}4}Jqc0ssydNE@zo(+Qv}Jy+;rOQ& z9Cm*5GMoRS-@FGC?mM+mq-|o@7xXFuz1A*T>z&VN+LAZ)kk}2CqoI8b&yZvjj}6ww z2!UZ%rlS1v+rm`2ZPtfN3c>yJEY-K$1>SvWTn2kMeeaq*;ApW~(fpB~hD_{o7Otkh zzznfpZbBou2)|vsNHEbnjOs?Y?O2WwVURFeWUOhNI>hoy@)RY?h863p;z4T@J=~aV zBAJC97#&E#!Bp6lik%S#oAsSP`BkYRsr&FN(;^D>#SyM1s{2J@0qv6;?)l*AfvMt` zJe97li1^X5)RPYNgVVg|Ln~QG|B7dn93_zrw!Nkuj%PekH78L$`quN_P5$-O1S70* zOeY0bG0$DggF=B;5Ru9x&{DDcM~wh83$F(vS%mQP;`01`(3Rf9WOgA2_L}0(vwjfY z2Td32%yUdj9E(-=C2$-4H6Z}!=aTaO;uH20AFlt#XEOx33?+YNfyVA&X=X&fcc#Nm zYNV6cAQvv@B+XYebuUk5%PDct762oj)QY!%+rUHc_Yt~yAYb>FNvgyiOGI~;0O*G^ z2ok6pE7s@dfworOQpzfXP^+XI{v)E>)o4To%ARz?x)9i*--un`j>x%$cld=3i9~hv zg28~47z0>^lCC)0?kaSRluV68a$dIR37r}c=EelZ@yYbyKN4>1IxTSdlzG`U3;}|J zzW0Z+?Z-*>&tH5m4^FwepgMEe7TvNsbLb91lQ$}7NCZjB@KwjNQHRFdPt$Mpx6k;O zL`5~$wit{#xY86tFG8cLxVEGP5=1wPp^tnRV+wYL%6Q#FtMKOM_xhhvVZ-ONI0#p= z9e-YI@>&iW1P;?PU7)pP1OHP%& zHyatVb@1$cIh>QuFgK?McEIQ3(Q?3y)GgE$c$SosM*d?NRqy2KTpL6C1(V_XXB`5=6H&TWr@clnC?bEZw)GzRM-j<#{uc@OKx)W;qD!=riB{XBYH2>3bL_#@xFv``Ihfha0KP9J-s z&PCX)0*El#PDS-F?11V_bQN)>8Xxi~)1d|dag@t+y<*}?1~Nl+fhf%^`TogK;;xJy zCLN?9I&MKyw2cF9x{@uAgAkOG(qef92RX}uz6r|J zHW;I;*E{+g0C@8MZ>WEEAY7$jCbYu;YZEBQl+{n7Cp4fgdrXt_7KWJ!mJz20CE|NOfz@RTMwf-}jp-)rm> zek54j)H7qT%QT|B-F?vYLQyOCJYVoYNp%>OeI9=T=c( zp&&c>qYuu=s&2dcdv#hV!+kF3Xu!+k$`8aH;YuA?lPk~_TCMSx@&})#irS9QX=nb| zhuAN=CrMflO}Ns}FH-PHciN-hc>H+;V&>}XmyQa`9g$VKJbV4b{73!o3TP>h5T{?hjUFu7+Y ztq68Oix#iS4*Go@_SEpG@k2tV@M$WHS)I7oJy=lpuXj0{p&3@1kD5m&U*W)N@f{E; z+oB_$D}jq*qY?kez}o!HQgyV=*&r}DkR@V>J^0){G>|ZZoa}&`3v{dT2IU{`FNnp* zPOfn{k`%W0qTDZk+|Yd!@hq6m2_F40Gj*FU=|>LMr}X<2DNn?xF==9N!?#Z=G|&Hd z=4Z&RMWpj%y~=Oxt-QOllD-5KGkrid8a=iYf2^G_W`$~%Li2{VHh)w)f|cl@)Z_LS z3<^Z)&<-s-Y0bIp;eLN>%c)nxiydX(@8-=$yD*+ysg`lxvbd; zOY%|ueyq06v`aaU6Z-JjtT|X!E&`RHxgRwLR2vp7;Zq3bVdJ<@NQ7n?*c|M}l2M3f zgf13aXq7Hsh^kweIxyb$^9l3Yl!stS*aQ~l`wS~lpM7%rgnF)HNQa#DtP1Z$MP$~k zf`u-pId^E(?1+JjsRTz$wV6)em(KJ^niY{d_Pp_a`j^34I6_)&1c)mMCI-|? zifg}&Hw`Emd&Ls4h0OjaONWp#dLKd`OH#z|__&2BzQRMU3K>U)1*vyyH{5EtVXBy+KX~XY15mdqTg^$xHEUfoP&cS5g@~7PsGK z-MOOq4Oy_Rwb$%%f3uA`Ia8L05El24By9Fw*cW``VoS~SmQ@&oElhr-*XaF=F zWr7B%{s4*P&X1VC^R(GwQof?@UGCS}xx>rlF|hVHUPGzXc>!5c`225k9o`64E!)_Q z9#HD$(!zKCUR}jc7nxABjITHz-z4>jPRSE1CYgUr_P^d;q}Tavk^6M;fBq;V3x4y@= zj42hCA~+;ZQLN}^k*Y{=O}gEd>T2hHU#=u(X7iNErA8>=DVy~uaU?FmBneQ6>-jHa zMnKR^pg=8LTyPQYUdqyoE+S`{SC;ZxMz0QGw?IkaVIZ}xrg z*i1n8sqa$BY!RN=u~?VPa7cfjzN4Xsw=$ok;hPEsCgvMW&>Ptw!{L3q)|jvo^C&ya zh$7@x2a2wLzXVG7fS49Njlh+At4X$HYTxWQMFM9PaqvbAUXe>GgZ%4!|3}ZNDF9}qs)a=Lx(R5{VKuLxpEs04c1NXAamPS9y| z4SI`)Moys@V7#`c1nr)tPoJFp*9lbt0uvv!9_DA^vOA?x6nxX8 zQ)<(8*zneB+qkyy`(jWfy_GILk!*Uc|1Ky`ko^9xS0|ac6mv!OCrl~3=EmO@kHlNP zdQ>C+>!yUoaR8pbXQja!$O8v=TH4j+XI7rcRG>eyPAwxpR|N z_D9!Sad1g(lAemhFe4mTy1dbzdv(pCHQr=TF4EY+Zy9Ohf9hbIam0su29bHJ$}@X9 z7iM0S9Uxwruc6-k$X7!#%eZ%J9G|-QH#Y{LTlbU`QU+@(*fn^Mf_+5LoEIY-bEj$D zMeh28wc^#iLOHpwArYj>UD{h{MI~roX@>ar{lu#*pQ)jr^IJq@o{sY4kzSEZ2Nc5h zb;(E2-PUi%-<7B{Jrv%s^w*r#5YS5fi;Z<86_4paO zrnw1bmEu`{_)ndHeuPOJXNsG52Q(xJ^{ApfJEzG{dVkvDoZgmCG4%|~^sO$+S+`1; zWypb@65>;-M$$}9mkcE+vXx_`=e&p`e9_^Y$2>&3@jJyst+D9Ra`l>>g1% z`>7#qyOzsR{rQ?Y!SjQ15eLA@>3~_!)jHiK>lkM7Nj(azADX}@sGEcOhW<=Cb7<4# zDJx=9t(XihF2|!_3pR){&I^%Uk4%gNr{)SlTwGh0@Y(Yhv4S5xMUVWOPULL2A~-B_I;3|qs9 ztp^X&hkGNmC4cXgj+ICLvTk9uhf-$-f~8ypc}U0I-Hbij9)fOj8ENaZralQn>6Z@0 zA9LA75hv}Qstr0guLHSYuP@5iDnnG;Kx)iW{JgFe7O9~$h zb4+t>e(H(UjMCFF&f=X*HX!Rh>6hjS;fv7E>Hz>?-v7Iv1ET=t!ixU?{gP|niaM&l zWokHjGqK=8wv#~8m!C}D^+?*cALihip1?XzUx~Mp-aOkL$SE41{+yH6IudeCC@{T2 z0=%W*#@6M!+Gid}JSq^qR5|;5CVIicG}*IHgcl_9+1Pn?Rtf`irvTEA17-fiIGJdfCYUt*U$IQZHG&JfV z@*#p2_2AQ%tsY2#U}-5Lb=%V@@-^-kzUskJc28WYC^Byls{_;2#WM{@EfzCsqo`OG z!3TS0dfz9tmivxRX&Ok%dXn9$^`Q2vI%O8BhlN5v;Un#GfmV=causH$Qu|2R1bkKH zxqpV4SCtT!v%@ArSTySn@G{3l9ker|&?rIZMrj{Qg{Hf@cmvLn_QgvCsBcg*l{5;E z_u{Xe5Ae9o3%@@cQW`&$Uxu7>phI6~PobVPw6t|k2~UE6t7ZQDzRBe72e=FTUvfzQ zB!}dGlVh6`Z{XVpTd*`Zp}Q3$1*0YJ!!Yr-#w&AU>#AcQf%^po)tGISIwjCR^Z>){v96SOdyBCZSexX z3bxIsfSHg{m6RM$`<9cHS<(V&PRZ_@2v2=&;$?}TqyFJ8f$Fjfbk5K&r*#Sze9^%&i4)sbNuVT)Pj7o5M&!Oxu;WwQJJJ2*<>#_LqG2>pwB!EObY-Od8b zZq}NmOAeGcrmtngYIb!c>c)&27IGYUc1Yw0Ul3{Fpt$i|TYl1Z`KXty4~^Ot{JEs2 z?SI(-)`r&?DXs5dr>+>CxC-in!_z~OzLfvZI=fsJUHo}|8q0%uMpulIGN_Vn`?-7$ zTk{8^b}-_GPjBVJHD*EBv(|6a?*h~0IH@TXie(NJEI5uA5$nPs66R)3_=mBkX=oP1 z7G?(uw=UQW7I(JJ`H|9}9^{+dDYoXok;*o1aUBGF7=8K}pVJuJ@ID)Z$bvz>TOX`L z6~HLWgepRSbb_B$bo{gjPIgkDi~m_@&-NFD?*y;uh%sd~L^2G@X>-a(fG6LyP!n0V zh^VHnOP3W<R_EJl{+gG>5<L%@UGa~?Z{{NDS;U}qN|C>}>Tu9Ge(K|1f8Gp5P869?94P=eA>E51gco+FY z=%bKRNGtwCZu#dN$E7vnS_84n{I*-6L(?hpl#;e6>5orlA;&PfwmN%EhA->~FODp_ zte2|%7Dg~xL6aQ)NIX4ghi(P&n1?Ex$EjX!g{#JB$f&V#ZF8rxDJxN$?L~|^4DtHq zYc;F48;Aq!Nb{m*?&M}5;#TSz+8AdfvI9gj)(|7ucvj=rWh*8Le+m6Npr-OroA3Ai z5Lo7Cy1InSfb?5giU@Cf7-)cCBqe(BAazJW1(DWoUwHbw&IqZp#PuLhulaw3ev|c1 zl#i41X22SAp)qwa2&uDJl@U5zA{=AO_vX6|!6VJp zM{zlnXn3H$nB|hJ^L%n^NaiiUp7%{h%E9-lOJr%nL*Woim&X&6K=qr&b9G87-=7B~ z4r0rpWr#)<85m}XJW}VJ?i0+<>8(}3GhbzijvL-&8o;huZwg;Ea2Njn0G>c$ze4u! zcINi*5uYgoPnmiNI2$z>Ua6^>1D7ocIv_Sq-3@BXFVD!6AmfOlAVf5rTHG7sxn?OH ztSyW?qi>54Bsv3juC)3k81Z21vlXATlzXZDAYB_zCJXbP(J~Q{f{vnOgYK-qR^epK zg8osRjz9p5fB*mh0tqkx01LoDnhaQA3bz0N0|8AB{?7(9v(xf~dznbmZn6bw%*IIT zQCbWw;ch(B*8RnZCVBf`P$ zS7V(Ii*@$0IvKxP*BN+(3jgD_2W)Cb4o2vp1{8fv4FLC_PbZaNJ{D*T&sLy2zD<6c zV}*bJ^!6RTtsp($zUoYf z8gr^W-em*vn0n-|L(3%!AfD0zhmFyi<^#u#rR54BYj8^=Ek zcpTDyjeR5$!j+JC@X-I!5C9we;ot1!uu*4aY^qSrz04NJXLwqC@`W{1z4DS)iAncw zGU_SYMoKLeb12S3(w@%h=Zv)~p0keAu{HBBJnbOTy5-?tHCCIYCZ@$4v2P;&}10PXyDT^4!(kptwz{QngYcqKf%Q zTW2IGlab%_prQ+d`8(ZifC+BD0RXeNIe9eMCmzJH^!vJt$QKhKQsez zQ!`{zJifo{#cdr8m5fzCzB<+J?l_Qk?~-w8OZLs0zss%{x zGkLQvQEuDA&1}HT6Dz4XF+)1i&(--t;a}c&(R;GY^Gd8WgRrkqtd^p!{GGg1g zl2cn*3Yl)p%g`GyWu92Lf6(U8%v81%pwNh17SJdeMg61kn;)>9gnXF3$4eb=xWvG| zsmYvKol_^OZ|1@CW$v}mMGkAs>*VRzEg{mK&6f7JbT3Oj1X%PU8Dj3OY6*H1gif=s ztPP9+S9OD{^*GnYglQst{P2qWz6)&P$D8Fiv8BHUBt!J?$tvAoBR6atUVy@;R1XxQ zACx7Lg^Me%fm>rS(GD~F4!>FJFdJMTtO=rd4TqBa*lcekY{(KZQt{D_gVmu$sK?C) zjSPft%HUI!EoO9^pyiNVJ;~$W>eP&KWfOmfaa^99d`nzwOjLf8*5(=inUh-ZSe0~M zOuHvjE#jc;4ViY_L0$NbyVMi3YrakApa79z01%xlW}jQBgfnrSxA35ZpnEGU2vauo zu)^K^f^OXOnf`Xz^@ay(Fyw|?3fL!u-NX^@b(_B#P-^dtpQI3VoiBz!lB2znm zZeJl#X>h7{*vyMUa@^xRSJx&3j!9+cyJcwAp@Ua%7Ek=tzaeF~xae&#oqSnRFKp#! zpvYQc;2ck_22@@V3hvsKZOWj=d@(4hX#m`9c#|j?} z8>|xK!oPmqsr+(yZvehcC?f+$bIyO6|CTOWOtVr0k2A6$SE$^CUn|Ks8R_3561hp!EoNinrL}!M&O}S#_ zusK{YFp=$t8CyfhUt^0NL{-R5SzRT=D8`?q#Du0pO#}O-ki~F$x<#hZca6zqHwlZH zZ-k|9jiWhFnYF8qY5sS?bUd8Bul_5IOb`1GK8w3|WBisJTlh%oByS#P{Fv9#I} z#&4Q)X}|irLyTD;psB1x;F*i<`=@>Rv-G!02Nva{iR9HNVm?ulbT|tWgjnj9x?DCB zf@QBr#>XQ)#-1I`{!Eo-n$WIs+{-i@0qH{|Z>sE3)-9(~BeDs9fty>YvmIvuIEFE0 zoNRl$iRrl5*2~Cmr*zhPP2jrefKyd%XuiQ&bosb2L~hhnf(H43 zEb;r7FnQGU~=pSw_++Da>2}%2Suk%&BhO4!+ zjgUa7Fx@*%_Vgl*1f(evFi*648+^QQ5?&hsIt}=vVR6dUg?5}4`j(IO;WGA`&T%8d zP7ljl2DcuiDlAHJv_!yS!SM~7U8Ste=i8GSH0hczn`c$Jm|aUwTsHIO$FO9qcJ&8t z@Uosq^-jgcc*EHV2Yu$1?V#YW%$^CnZxR+ghtVHUJ;~dwac(A&kqp)*VA2!WtGw8i zl{nWcOAu!dd{wS7?`6f`((v~}_BR|oRcBYD0}Vula}M55Q0B$ckOCtfG9-G$d~0Hx z)^d5YH?lWfLpR-4+<`R@K_>|ZA0%NzNii}6q>>z1#HN7Ps+pM#qjWvx^mR+OK18*( zDIF$T8A4o%CgepabK9jy=|uVZf|ckcF>-ziw*6ssqx`ZIA8XoM*XhuGbKX%AZntux zXD~1fS;BjjZ?-cUc?|Fsgo2!R(v`_j^M{}cz1tKWJ>a|kP68vq3(nTuq-{J7IDP13 zlv@3PupzhXJ=bdltB`EMxZ>wEknW>D)&`jvxQl*l3to@M4tedX@foTqm_dWj$xSkU z{_d{TA|JB?)j_ToU)Vt>3OFGi{y&v^yVl)SEs^3yGp}n|`=o!HA9*lyKosFUFkB<7 z;P^6w*eek$hnehCAaZTyE5wh9auWTF zbZuPY+f8s__qT0Kq$G}Id@T82ayshx?OlZ*OjzIFBA}m*50HobN{Yr`lX-JXA@nNx z$(t!`rygVg03qN20006BPyhe|R{@?5Rk9OX007wdi`p6cM6JeKb!zw|C6~F)qDQIg zqCKlk(0|J#^|T%wqMH4u6HklTkJ?=bMdk^!jcbe<$kqVy;Gxkx!T+$C<78aaw9Y#D zPxR_6!DC-su8We_Hk6-jLdm*<4o5hL#iWA~nc)uZ{R`F3zFN7s4RmwD7et`Fm7&O) zfXB(#f#%{>_S0nmQRL{XywDZt?ihXLl;(o&tBhVr(u}Z;BmylARXY&T3&mRB>;*>a zJ%6P^I-}QpaU?iNZgWYVQ;l7RYX_M|L(im64m>5)jn<^lTe7-vzu?-U1ujzjV zMbzqf%L==w&`zRodk`SxknGK9o2ULIMLjb0%q%iRF5D^AV^iOQa>Qvb79i8BGk=HW zdaFbTEGI53u0gjhZU#1bnstJkEi&_-LUVCUmPOpw5G%9uv)5EvP0{LQg@I+r$;~pXeXM7U{~qzRPv};L_dBTQYcki?mGyJ?WE~31jTIi#nEQ>L8k8P$XUeO& z)5e0L#%?>}bR=^2pbp^7R1AxW<_Y$ZwVa?Y7q2%BM_ z2k=}%r{MZDV}Ekk%ONwVo1!WX@K~8|>YjHHxY6&;zQ zNMoRabxO+>fK;mtwd5)a^4%VPy?!U`*9P@$oqrh>09KK%qV|(RObHOcQk#%owVV_f zgfncnrmOn|s|rcf*@jJ%MD13&B)(rr)BesGW*hmw7#H#5syQw(b$8IN)k2eq+jCwH z0;Pn4dCIUVYkN*`Vg+=)DojqTHWI-HZ@#~j^w&p3Q5mZfL&m;6$Ppfx!FUg~S~3;! z$!r)W{7-p)MLKp>SK&!;wgd-6oP+r$1EGnp&cAQ^cYirP0^)R|&rg-GrVURmbK6yY zDVbbYmFbO-MQq0JN=r2BGS8WnnBOiJwUb=wT`hd+3hzQPV%Fh78C_bHiC$9N%ZklP z;R>cQ!kjnfz;s4Bj4r+ks89jA?uO}BB*5rjbkC1Vwo6={Zj&VmB7kR(qp40I8dUv~ z4uqyMkY*AR`LGStpfc?tQDWl?n(UM!Nuu=(nv8}z;8LhGqRUcPh_1#s-@NO0p+`rM z^3UjkdENH30dYf|DH8@XUDqG(t z4=MP1hMOjsLG)?DK9$k5n~bSU^^CP&p~n}u$SHLzTVpouRNal)J_@&I)nhWt6u}%j z$ypQG+b~-0CWmRx@({JlB#LlGAQKxhF_4bh5ZT3<&9tk99ZC@1Ae8xs6ieCf9c@Yk zoM~CASL>(=@D(ji6+Fi>Lz)8P3W$tx9*_Js*9-b_M4JH=>Reg{1$@^4jW7tT-O~VQ z1Ha?7ZuD#4AsSTOmM+9Z06^T}!wYl3BCJ>ol?VWiI|(C#oJ!1+NKrWX@>k$l(FjmQ zHJ9-=3@rk;K9Hfsz4BMW6$yf0R1c=`3TXG~$nh7S?Y8~pFva$wY;s@r-@`nkt+WjY z@-1Y>XsNqc^sW=Lg%KGQDDZN%(TrxE)$4LAtgXChY;^Jy;#|kZs7l{* z6*3&n39ng^ZuBNPLkSQR99US`1I%aUAupYLU#> z<~x|`YqOph1p>#` z2q>{Myo40WVhJmE+tr~)fnRuL(Iu~!+t+U zl{r_ONylCiLalQ&3#Bd?*0Lr%2qM;T+mCiz@0F&aT(6{AwGOV-dZd|}pt6i|r!URi z|L?Chi(3>Is|u;a_0w++m^X!=JPGxRtC~K%FFh;4vxYrd{oIEbf|nKehuQw|_Avf@ zvl2UT3~QhVstvMQ30R;2vyRW1kL{(e>UB9E7R;s@XUx>X4&w=+6^@L=5wj3NFc|~{ z41;>WQ6T}QmikZtz!FN_Ly~e5JqnBDSnksc!z@6_PN>xFZjYRlJ4RHh7Je|U(N!R0Dl)_3^|G0d|CLiTGqy?0giYpK0KJp*6 zr6NtQ{2>}t<)w{7gRxLTBp{3kW~N0|u)C_Tx+qz4sXTxH<@%Bd!I7{6D+wC--fJLx z)scA9Q^Fso5T-`+eg#p-j(t*Slv3VZa*XAa@#hZ%2bf_yHV-Kwr80X)=K*`M!Lf_S zg7qX)lWi7WLU&U&++4v(YOeA|lmZ?h0?cNBc`Rs|ffF4a#P(?_pE0Kfs_dOEmUYCh zz#UF1uG@Je=|im6=H|vvLT~g%AwJf*sODA=$jNB8X@EfOOqESOjtq8Q{SE zYntEyE?E!)_9roH9N8xMAu1H@tqBI8ve1Sw2)ruTN|tCKlm<*b0>X44^G-rxDJ&#- ze{bu2bpnH$sH}dMXh;WHxR7X>;)#88UE?NrH?ndrY?+NxBzLlED83!HCV;@T5)$ZB zU@MEY8Wm%l`+xp_n;>Iy5w(*_z$R)3Tbdy}PSC8IbT%sjZbiM-DoM?ji`pV#zbd4? z$3h?w1u0CxPRvR$x2Up2Asf|9kwX;++Ve|nCGwFIRSc?ASov74jIm1m&c&=yCD3)x z?0?Hd%P_~-9zjfjB)?1i*D~m$aiL4!bLY~8v6q#Q-w}=En*mbP#&Q^t4g^7z146(K zcvm6It;Ux`Su)F5g|)#=OLkiHs#L0SoM%ez#;r=*Yt-JoQV(mdr~%4)f=+xl7$?W_ z_^B$iU9?<#rBcvJkb2858Jqs4d3pAVfDYxyAxv#cTx=@LaYc|DP0*NNTAM*s3chZx ztBa~-RFx#JT~rFQQD6*wOqQ~UMFs|*qS0tsn&e$TnZ{Ep3@RwE^}3KhJlWPQkC3V) zM7W^;z@m)FO;e&c?~Vp*ins-ZOOcktH_S9!{O3vF+ ztYlZ0DarlVSvEB5n{{?}JxIYp(q_davN^7}si*rFqI-e z5X$#fYdB2vzeO{?%36>K3h-dg;dcP@K+ZjLsxk=~$RzP_LMvB?ASX|ZL%r79G(@9d zV&OGN1`~2>B4JC$>^R?bd0a+$-o%STmexa2U<{i)`L6R*b$mP@okXH|+LK_M+PO7_ z{B+xL>HB5|I2DYTX-KK7%garf?HhZ=)RqqBRnw4=;!Z?I&w9=$Yo zjJTRPi+t?ilR6iITmLt~t)QDU&ath`P0iJGn@wnlfhm~auL9tAGHg{V>!#^r87xcJ z(@rEwDezU0H{1%2dr(1Q;DC?(-lfj0JANuaUL~S+`Mhw1l!bo_D)a<R&7lZIX zav^$8fB*mh0+!U(M1Wi$0a?w^8`1$P%3DC@m{H1Guh*xpqn1HsRRTZz-M)e_T3r`k zH<@4!rR6dowipN|(iX@e4^Up$iA}}P@<+BHz#SP0$RPsLc?3n>YFa@F99W-pnG(u* zI{}dpA$b>a%$AJSSdc+jV$DN`bBIKf2?R0<6EaJ90<{PtyBsNu9qV~!g1?Hh`1Mz? zNhzbc>-tsp9b*@bTA;WlM#twRE5nJE1x}iXkrxAWXh{O4f(qW!X&?0v2NpHv{Noxxhf{~bwoj#KB$%C$ z3uyagp=_VjU^!w};6}8;hPkB3I;=8ofRIsnhieW{mi5`aRK(X|?^^%&SMKDnU5KfzAAOf!~6o{pU9goASBYF)I)H`BkJz8p#uzj;Nue}Hp%R(68 z`i6iFQ^W3(1iUGSn*Jhy8IHSBqOo{Y}%lzX)+w&=%R7qVx zhO(kjRpQYguFx}FUGuWJQPzCV}3f2q<|<(*W>9 zc*sb?pt^9jaINY>_igE1?kK{Sgu{G%6^$pOEgLG7r8XRwFoL%)?N(r=ntDlYl1vj| zDnl5S0YZ_0DQj-AxC<2m&|I*M>=k~OTi$ArGnU9=q8_@9>jx#JFJ`?FVIXQUE3}~1 ztVz%DcT%<&LLq2O*CZ(pEjmht*YM$t_j}*t271S@cdw`tJx_q863hLS)ef*yzg|*fCFrvq%bhAKO5%u^j$X_0QAsQ6zqL9Nx zuux=C7+F{W5t?L*ur)|I449$$Oc_OSuF<<( zb(CJLZ|Q96;p;4@TGheJK%s@&P%FaMO3C#hjRbN-@cR#KTE@H}P+z+Eyp(Xp^@I?E zOpsHL=j@BQW4AtJm3OSJa&~pu#Da;;Hgp1D!!>R|a&#VH7-_$@kn=>*WjbZMR$ ze`Oewx$mgROB^vN+S5+9hw+?QWb;CvWGClRfQc_Q4mXB5%giAfPvGDH00M&C%0nII`5vy{9^rwD5}Z zsx|R2D}HOt&!(ww3{vI1Ik~=y&?W(}0tN`_Bm}#Kpzjx8m;N?AH35M`h!CB0q=9z)pmtx-tWHnQfi23jWjK6PpXM{%9o0PgCJv1 z`|O)TY)3ty60?k_W8h(a_@9rD`QbeRFu;s$Ty}ies4p8p6gpO^NT@Pq3D6ZKmXQGn zWnKi*siGHIWh?=%J_YuoQNLiRypWasz?W~TJ9ELEaJOZcWh(I^p^+2~` z5s&1NoP2e3+VbZo;8Mv_3Fd~%1_lupEtH8eXgVH$4b=;6QnQiS9MN{GThne5^13b} zU3n^E3=mhaBNe}ro;_PqpknkoY`Jllu=J{8h*J%Q%f;%`9?+CVx20@kUm|q`g zD?*aZG80!ecYQzNf6opuq*C%x7t`OU>8(H)A}R?amwk4~g@Fu7W6MZcLhD4trpiFL z?XDr=#N@JGmRYs|qBJ^g(Bw@lLl1N)n(Mr+5ZfA%jYnI%(5k?wQAj8(Gy)+24%qJB ze?G@usP*u_j0?vIu027XuT(BY*)!=0?}JdGoa+aOzhHIsuHl~HT{-``1!p;u>i|-(|;SAwL20Vbp9#x}7D}c2Zhfj?KzI zgK#^}*?_`8E-Wh}RWO1QK`rR$XS&2lmm+^XIdFCt$WFYy_aG5VmD@?P#EI}H zujV*1c95+)CrRru43>@^Eq!UG#sEPJ-NGww6t(^#Dir0Gl#vmzkU|g)fuT~DMZryM ztD%$AQAguC#B$UrHDuhH*#zYRjWMW6TBW)&8MmiIuq1d8c>aqkdfZRi#CbJ&f)l6@ z;L7~+njTPUJqWVCF+w9iaD1y_gnj7iWqNjQH6tCJ6U$IU_;XI3cCr{3NmX92dhc;m zmv+l)-?^edYUyTKY2l_8!jwX{w1Hp4Uy8nI!WS701STzOTrjAqQ(H~Pzd5t;z%WLb zCaNmX)sz=fV0AyiMSZu$jfx^@1qel|M1Ww`E0DCMS!J&f2jvmw<^Z=-_Oc83W2bX} zq%4B@JzU~FKj2imNM&wTA0^!Dx2ssdNG^$+UC6RFiE_}jHKTQffY&XGoMyM2<7vrw zXLL~%UU3aAv_}4ufif4AbdeX67>6NDZA@8gHq0bZ840$Du$x7hfdGLyrl}WL1ucLD zG`4UFW!jF9PXST^osb+`Jm2GAW}MtMU12_+)&aD4owhx%vb?d`63gF9@Vw4A`r_T1NBJIwH$n z5L(boZ0hYbRp&to+oUs)cZ|bOCKy{QV)TD<#iVVjo0^VeoaVc)io^|ZBebDBL@f=p z$Uvm%U34aF!p}6B;6LoUpY`W3VH&MX_1_`!q=vrW z%sapgdT9)E^_L16W%_&CgIfl%*+5w_5He0D17WWqQwfB{2$b*&?BHnoef)AF*b^&? z8dG!)Et~_*rCRek)eoy<2M=e&X9yYuT+E$EGih^@W1W!-*0zO;2Jd39sI6Y9LP`1~ zt||(Eud-U!u9t}wPm6n=yNt{$3OY#M>(uAmu7x(rFykvVMDiO41R>PDbu7wC2r`+Z zscR(fQ@Y0S-=k8CG+QEC14#Q$s*dOKcoLQR91R5dn{jp`sZ+4(0%Q4ZgmguD9?HIJ z%F7qe*fs{aA$nB(o)Cf*Ay`Op5Dlnv<^UyHkx&>XxtbPqlh70cXpobPJ9yY6rf4r+ z+O_M&ab^L#iPu2e&+?XE;C6BGADioV^Q(M1|DKztnK1^Dr8`B*YBcklB z*)xraa+IlFauWv@`>}4vKHJ^AXnO*b45}2#9&y|Cyxq7 zmyi54dO#Q?1Ib;8?PK}QsAt8wCspX%wEw4&YJEI!jG{}n?nJk(+u6}QFA{6IXCz?Q z2xt1w=)0qaE55{IZdGG|6Rt)$5R@cE2!J-=9DqQmKnAaLcv9Rqdivgx08y4)n(;!p zx_hyg_2NfKz0CTHHaRfEUYesiv5v1usMg_0{WRjgS$|_tkCCLbMc_n<*Q>CimNfN#(S`dE)+?LcRARtO3WtgUrdpC*R29D?4B=y1l! zN)yHqpj8^k=)g#zqR<*(ARPdHymLDF`u?oXJ9Po}YKE0H&Kh*CvJvu}6nR1hBt-J% z0b2Ombt(VEq5uX`;jh)=+Z)wbG3YT~*55v#D#!0m29Y4mSXX<<|C3XRU&G;C+fr`0 z)3;XBX_DmChhXH!=vX;9j7I+l^gN`g+Gu#^EDV15r|0?ai*&l_5_j{Rey9tRx4^(ny(Gme;4Xx2k{V1uVkyCuE$5jx}{p{nc_BjHF?_` zLu$nLcBoAwxe66#c0DRI$;@R?W>!gb*5yS4RbT%3e9%U$f@^l0b%7FuPyh%B09!yK z{hFNTQO~RWk$7cXn2w4avUGkzd)7x@{j$&mIA_#Peb}H8Mne6mp>+x3@dhQt^@}!2cvRj&|N&MukvXH>+GJ4nnH5 zir3?6w1OCb?oHYs==A$Fy_KG|XsBhWOtTiS zmO|+{{8@alLA&!lOSny6D8M{sYhP>r!?i-?yOWWOlp{}Zrqjl`T+!py1yJHDMxVVN}M-K&U!^c_c!OTMyR{ z<1a8He_Z3fz;_qbiupcXzC$LzCxwaH9Ja)UgZ{3@#^sCj@yag#srcG*`}(H2Kd$8Q zk~EpOQUqpwOCAp#rc1F@u~he8EfVkW-g$6WKIB3|d&f^T*}*ABd}E$^9YCb_t66Bl z(!s0qRO5{Cf{GPG(44l8$t%95;Cd`Kc%4Z<)dR(|F7NRV=fUuYp=&hO?$5_FNH6Wg zVUtcsTb#xfD+!Xbd?`f~L=Cc=K(c#LgjmTDRShQw9Hb}92hkQB5%EN|ChnhATF+w6 zART-LMnaL)YPL4B435e9maBcxGn44)8;nhtmpQUmtzON6CFYeJTB=mU!Od2K$ck*}(kwY~UI4*%ZlKqiaYUT*z^2gjo z0!cvS&&~=ndU1+$TBup%LJy(*Rf;eUx<;bS6*=D9-AFI?e-zd03?jPUJS)EI6EZkN zQEFV#U^&3QkPu~K$GIyuq{7}>#y&=*vn@By<7Yvwe{Cz_AO>B3?J7_dU=R92W1Rn% zo3Fjk8f~Z{9g{zte6dB<#Ezvi#KAJ#$uz98v^>bgxlv3m@bPkllT-|ix z{Zo?m@7DcV_{{ZA$!yESOq2pk;5SK<3wwykVNbX1Mgh;nOrru61kK(+&cJ}W?5Cy?S48YKXFGR9J|386my+xCrR+hXOM;jA|kb3*Gu>u*kskDUn-aSrH? z=%nURb_7!Hb@w?|go6rU=*nu)ZZPDY*mu)-u&|FhpM=#AC*nOMZ zkl4#~z+9uFZ8~mJZ2Vu9)`!yQ9;?#SQsd%w9G#&La}I-lIH%md0?b}Wqyq@rk(CG> zY8&qV>taIrk<6sHMl9U)ll*++c?I`+=~_16f44vN^kCo)dE4I{)(>&?1S@4r zu%{%%$zm#YlU`_v>$ruUWJ4wPMn=qMWruDujwd65($L;l|FUw8-`a7n~MBI#HMUDc7zI^iMdlq#nprv+o|hlRuk;CnApjZJqD zKG*FrL-97Dmvk6F_7is0{@|XO{K!`_a~E(hMVD_eai^B3Mnk|Z9`&013sBP=a{s~V z@UBN{;U$I{#ac6Y?sWRL|BzF#BqIq51wmvzoW)&H2&9! zVuk+xOas!#!zE5x#nouKb-f8zxhwB1JX=n((Devn6k>j5eLVRHu&3-AH><1rLW3uV6!M{b2!EYsO7!|xKvbNlGB zpwh0FVeh2llp7|{>IUkZ%FZyl-KVo*#$66;7=pA=Hvq&8wkJHUL2RE?h^zGkpU7Aq zsnHuYGH(ipa~dZpdct8I(D}JEz3s%#t+Y=?YC_L~n)8U60jKhELT2BXOCuBb|84rm z+T3_G3s;{_KG~4qF)J;w2QyLq#LGh*xxji2oz}^X{>2t_7E@(3&aF|ya-&+GsiRFd zUSy>m>1WaPG>SXC)*xiwYXv|N9ULNc+6XS7k#a;LE0K;5$St6@vC2#4kkQ&m<(x5H zmcCP{gGFZB$#xps8{ZB(ivB*`PBM74@evkC*|o*kU4>^-JR7V7>B?(7P$+O@uCNu# zf94xb)N-d)*<-`JsV>DY_jaQ+W*e;m)6}h=1r9PP1-6`4I$P!~;lE7j|LGH_jUR`^GgUsTK`&>faH=aigMKA6(W!dC&}#;MsYkIno-5v~z%LD*AloslL1dx& zKpyg9{pezyOFEAXaT#CitcF`@9uL}<9HRX?_8FL1q|2qW>(U5#E<6e0)4+T&3z2b>NF7_-r zdRO4%95ek0@V@Awfm^c85PVXetzxj-ipci_S`ah4f2NGt){n#cHMl$W zrW5`yew)T$Mv({}r3I{8K|*r%>l9zPAsdE!DQG^6RK9w^s;n)qY>QnNiU) z?x<#U4Z8VD`yOYZP8n}i2nKB7RcMB=GKWRvjSS@x&|{<`HkT`UcG}fo@O|qXJ|}wQ zz14rhQWk7Z>Hi4+QAnfVhcIXanrJqbXKJ_hA<|V{A>yFbQ;nZUpgusc=)B!cfpqN- zf4BWBUp9SX{XJov)sM=BLT&FqRBZf0y-9RD4sgMby05t}Bgj=n|k`u8|O|ndc9fFj$powuduex-pK|Q85 zQh&8vUvA&Tt7`;kL%5wwvm%vEp~#BY%+}NW_*_oImR-A$d>!64uhIL*yWL#bp`2Xb zzNOL^=Nru^;Pj;$CMCi1N-%#5ywy9^mNcsH-11lBT=6@G7r~Q|q~FA%ysH5y0x(vc zCa|UsUmKZv$Rqpg(?6&gP*9b~vqZI#iQEJw0ngC->tMC9`i< z11m1sNJ;`M2yJl4PMNt9nV}f3%B`&(24LD?)xi)33Qf^*Z;km|p&dkqLLD;yYw#I?spANAs1BR|0m8SG04941He zb-u7H`6y8!t(!rKafX)@>ty4GA=Zqwp=uG(v;H)>p#kTsBhnJkE+QF zE!b>}uM}MyrUmmJr}Df>Iz>VvM9*;~#-o?eQt-iYt`q&^_ zDBddR-5bbw;ur6igJk1&#nz#l5hD(d+iJvylY%v+hn7V>lu&939ZSpwAprPNk;%$H zvDKhMRwE-yg<~O9pur}CAUvd9YZ}}`wlpAkY{$o}Q`i}?k8Ah8sJ$bvbPq9%|rZx5rtm#;_CmQv3MtSAV^(L zu>DA4G7V+9)Yu=C7;CpjKKDTyC_)4PSIJUkJ2k|fbw=$O%+dh4=EUu}p)jQ4%<^93 z`$SVpkAHP8J`5>d?7Yn?FB_DP?o`x6Vi3 zPZ_hwV|%qGY~&RPgi<3hB;pZ*J-4RllC2ysUUU2PRo%K<^V?kmE+r)gX#(6u@^x}w?#b@^Xjj~&wp=t<43=R}hUKah*aa0q z4x~V#-2dd%{I5#nsmn?80E|1eahl)pbF2V!6Y{e-CE1?iwvo8{RXZ4d^>hLaw!DA6 zOmewLy{yocX(OOp&&c*!mNpEh1%x#vB4Pc_Yet3C zw2`Rl$6kmz-<95wJWMf~J1RDi^y*QCQ$*#h9zLu99uZJDmG%rX zj|ZaQ86I7AzaLQ`jLT*I-e1V2m;FLZBwO@I2Z`7-TR8bb+nC;Qa<37UZPYsm^fW3y zummDbD1>p?|CQ@!*(7E15)y7%#5*W0$Ec&s-D*y=%er?UhCt;+hmu78l!!qB3;Fy> zsBb;7R6jPNZSUVaT%5RhPh7rMU846jwI1p%hm^jfQ5X-s3Bp^gzKz%04($yS#)-C+ zs^(@RBD5=5a|mNoO3Lh9T8c<;lowB(g*a)hZff6;dY5bd6KfC zJy)=?d;R(EpXfECaGBUsKd@&+^|(?JaIR_h!aL%zF99ze8KyywaPoboYDjmn=dgAR8A({J z9`%GVQl}{D5VrYAibf8ZJMHNuT{La0#h9StesCLi-LD)or4`v0!}euHO*I^@%5(zw z{k;H8M%6${rFql}EFgDmLtqzy6cyV+IS*%a%CtsXkvgpUJXz62N-d-Vh0JwzkT!d! zQ0^g51(z0iX6>ed9Rhng2$ktM>M-iKXju~&dN`b8v2(vJ9oCIrya}pu^k#eY)om#? zyY$V^xmT<@y|M#svV02cCiXDu`ZS%K4gW&#DAhFB4t6iEjzXjs6e^f|O=y!3#Z%Hk z&51xzzAc|&Hm2<%bzo=B)xzy^t-Gf1?itaLJa1s~`B)DtZ7W>X%Pf^?9uxQ48Y+D8 zros)#@;34y2!|_u1#@!KrJ9IS?imnzem>!|j9$$4zs? zLxiR0#v1ZF&j~-7QzQO<&d?5hp0oYz9cRSUO833QU*|z0(gN>tF^YD_QBkU3WAdO& zlppw#0{hmJs$H+Qg;3-Wf61Fu@NJl*Cq3g)>7rx(f)m2#@t>yOFkU$A++B}2c%!<$ zF5!a?1m(dJnZan~&GqarG8{sPKx2HhPtm$DiGh$(D;209CD0=Qv*PMGrP+3x3W`-Z zLgjzkfJ4x!@@1jF(FoJBv8-Mf#?%>*5Od#8fdi2`WUY*dkj=A6bx1w8GyXDSA%jp` zidVgGH7^`8R6Jc=iDWti#m+=46#!htG8isT&HNz;DR>gDP$Nw8)yt%_>^soHjw&|N zE=8AOf*45FI5vx;%k+J8*`;1p|#NZ!3i3TP+v z_xxIdUwh^FY@Cwz=?yT?rU>8kHM7u0Es#b?y+D`WnsVMJAnylu)FgMAVyxj!uRZ0- zkeETdWqBgWmpQOLFnu=jq{=0?sd*N*`|0_MSt?&Na&}wB&h3l zl3yM3sp#S=;=0n^L7^A~p`Ix;lcO6<*R!iS0>F{Cm@h25eFv{x;RUePZ@??O5>iEE*ZXr0mvn^lL!wh{r@X zOJ88|XH4|lgRObNbtyal_`2oTENKcp)R<^!eYX#hF_W#w%gQflfpdob#XK6mMAVs` z=E-o}$Ol6|Ett$fiYDnVpUY4nYyUYphlxw_Kg#zh-`br!bTmWu!FJ%l%5(wIGm)B2 z9TyG~ih9gQJ&M*VcN9cV!xlcQ)lEVF>za7b< z;~Kh%9d4XF14J5}yEfgZ=)I5+QZdni2%tJ~tHJAZQv*xtp5amtS@1HAFW+u=a@TP( ze`M$|ZVsYU{cff`_$R7Ra}{J3>Ms!>(J#F%nT;ycmbW)!RADLlF%a9TlrZ##OWywe0pvNYL7Owcoz3si<8qj-&SzND+V$4Ohl1UFJ+N7O557~>{t=uq_RZ(|B! zDg4fgs|8Tmu>aq+8V4)U?a>dfqCJk^L}o6)HU&rSjvR(FyA*J|?XNvHzMa(@OP^-d z37n=iFWgJY)YEv?{aR0<5#am6<{0x;eKviz4n3(l)8B_outm4Gi;>Whq4j&&jEa5Z zcy9AR*?kkIGuQRBrm8KW5V^hKNWy^p_V7C#%af253a_VurX-Ac5s1}vY^op_sMz`nv`p>>mZeMXDz$Qmq3xghCuHoQ&xT3%7A}rfTla?-*A^t#_pw9(a2uH$Ahof6om__6ZEnZe78&w;*%! z?qWwLH=t>@TMqRP$}f9BDVDoj>YL?BhxCa*vQK^ZG|KPoIRGGOufmy}v!CiQYT=(U+aDCF(ALcK+6=BMa?ajfo*w+XoRFC1yH8wC zmG;WQcwJ$Bvt(=qD^oIiDZ~iE;6I&|&-rP)Pq*&z_=x26bfbuv@y(V1n@TphIWHh{ zy@J6`zgBMcVkEtE@Cc^t2!JN+jvoyYi5oNWXZ~wB`dQ<^Vj-~X2&0j2m5>agQ)|KG zM9bT2se;1S-EXU`TKa7OW2WZV&qN4SoL8<4l3xqpAulgdysH3 zVM>>fiR%dip@5G$(@WK|QVO@>&C3ZPBL&a{9E5C4_WI2V*@)>kJ zC_7I$id1X868%~5Uuj6iQzxi}cKF9lQmVMtee5vC#iNSCL=>^m~ zhDo8^r6`Jl7g!<}hM8GD#yv{lmBo(>HAh)MuIsMTGE)f2t2Dv37JWYyQj6d^$tlg< zZBQo``FghU3l<=PKZ&vV+Mv>{%Z*dsH7{CrF9+-INZ1SC+WJhAZfop|O69PQwk(){aL$BHXlx+Fh87B^K zIR+z!c#g=IzBrz1T*gPr;TnuYqYO+znHEPm;^avH&Ay9QR-)k@tXMstj|@e_iwl*L zB+-0odje+vBDVwN)eYI8zmF4f3E!zFepa-${i4u)3Va~h7<(-)1Bl6)#F4{4*1k=U zS@6=-K6ZBE1~_8kL1v61pR&c)$C%|rz^f%^Ge5*{4nU?4jt(R)f7L@?oyKwj>)%0` zxm$ym`6_wL%d89cNM|KU$>V8?q1f7**OpO7h$MSm?J~{^51-sN+3)|jrt-+mmv~OY z6Xt+7%lY`k9JxkB7@>5q6NLR#hQ|Xxt*l$w?7F|OcX30(K}h~Sup?uf){61kDg3H| z3{zLgr3>+l!JmH`o&@RXaCcN;j21opT?NzP&1;0b`~+y&CWv@>`r*qZiN?ui3L}~t z+_=?>ZI2A%8-cp1P+nja@phIxShHn#(1m$y|J}BMqKraen@=$TO{<{uQ)MWF3iw(_ zI-FoY{^zl%H+x~{jVcEt4K)@BE5s#Kw=&(%DU9O<4(F^e-b%VX5i>?h zDpf8Kw zSQm)RBCzt_In@dA$a6NUjyvw3oH{fg&8$uIf!I7p{8yZvKc^DZF+HTOm)9AQ>Wxe2 z%Rgqi+kr#5#dc;+|CcL9U8yj>7Gr9+hu8`zktYI}!KJ{zjj^pa0Ocg_Vi8iOXw41b zc6FsOk(ZTM&lLG(C>;Ptagr8r3?9s7ynA%l=Is?99C(TMf^|1Ywx`rnx|^Y3^OD=B zz9fYvA2gZ5!y`=;d6THTWfny#R$laEdFA_){w05LK^oekn*`X8#LqqESxj_q)J9v# zE19Kz58N7|! z2C|}#MmG3?>a-*+@9A8ceL{YZJEozZmBRkC8T_&{qtP0d&BzCfXXq~*y+ER|Q+bR6 zFa8j1Ps7GkHZ+6h{j*c5Tg7>@GIW~7wmdm~aHX^WYRUUE&ecy8^)at@_1cg^e7#J# z)_|b_dHyi!d4%xoK@L}CEVERfzMyB(mLwKPFEVfVYR0cP);wyiE$-G#9ZeulHXvscK_&15&uK z+)aGSXbaPhob4{MU%D9Gcw54lU1f}s1cJ)rqIoBCS&w-T&?!lSoahO_B$uYySAaaq z7Y)Zo?{__JO8I=~uiYPz-mC%;Sf+5~>iWR` z<84@Lkot)gQkSED(P&b8{P8}TYbmdfGJ2cN`Hyw>LVjwndt4uxnC0zf=cOOZx%DT~ zya-4FvOA*L5u&s`wyM0;5y7k`@nio)xFCaJGy|r;AR57F4hZu|s`g2Tc^UWuR!JIQ zpGEID5;!zlW%m#K$;V*Ia+)XcOq48Wtcv}+!-$??xy-M8P*WDj0gWl{Hy0HW3o~*3 zvDn?DhJ)u{F2EPi2KB=_Ft&MAon*xp5T0D=9Xg{&PxU!zauI?9p!q#|lA1FCcJ1X* zR4yiq-?*w49X_N@#(wqQ;N$SZWe&&o*a9+@b^;>RdKb21H?Gd%kCUC|Hu9@OkQegwc&djltSXeq zB?kCkKZgjS3)SNF*zVNbft2R396Nnj5N4170006BFaQ7(2SJ(w5wTYP00094P4+z; zKMx3J3$SVvJl~)nA1{+W@0!_Q1XM?bxVTXyP<;9du;OBI)gK)xQs(|1p--|bMq-;U{PFzc4c3@&a(w%Xw z30GMRKN5wU(%9Oz{+ewK)X5eq6dLG9N@~4--dm-SQN6#-j4-814aQaQ*&L5+BEHpV zjp=Fp-WW6O;qAPSaiOk|%RU|8fQmx8>AaG*nZ}X%wcI^)orA7#$gg|2!_8YDL<;g% z0b8$>wd29`H~;l|tB-xBL3_j~dE|zlPMb>;q3^QNBB|R#40up--B*)>4n|_o3`Nctn;u)r%p`mS#mB{G6lz<(Ek?5{&1oY6VKu{5yAYzjDznRH-d0eCCz!~z2?&EMtjI-

S4j(+{HCYviVLsGH}q;hUh5>SG`u%`hWmCLIRebC}uQR&ANexPpk@ zR$^-sB73ok;MrJ~SV$UkVe|Z-f@!$%keGhDi41=!&yK3k2c#43kDWybA z(xD?bFXeAy(#D8&IrF_pB9_yHH&2+l2HvN>vM^z3T&i zd#fl`{v+`4nkT#@@BGWZNZMF~?}>!>2!o~nGEfpP>|Kc45Ys^glEh6YXXGbVQl}Pp zhMdO~uq`vz!$x6Xy!F;^MO{f6`r*u?SLy+>1{#;_Pu}V>vHYmIdQ%s7tjD5d#K@}Hc^Sz~rBfY$vmS9OF3Pkkez$iI(S3$JW9bD`c(4%ox&%zC$w zO4NjB_j-)VtRb%};(J4;w(+s11_+C}>oKoomiJth8y{ys=d=|iBLQ^V@!A{A9lTW8 z6~zG+Jk^4A`O`$FWv{BcOE01!o!_4fvqO#iR+4`m6>;nG+vZZ)?ctoBUk7pqmuWMyXt~g96FXCs28&r%c`%QCP2zIX!^$dv$x@@!69zJUDBHk>z8R!?l{SX`zBY*j%m17U@gU^>!HI zC!_srPAOnpP2=aU=o_VJMr$3>7FX|ew8XE%pN!P_&T!*24Qtn?B&!_u(`PG5ANxT?X~hybNm&^6AYmu!f}Y`<446s`^U9 z%@^AIOQ~d5TX|&Ahw0@-@u8`m_f^)Ojm*%H*^(mY z3Pkx|*^xQ#b&^{N_JtY2T(JYti0SUeb@}9Zp^en&${p;AQNZde z=YwVlhJGG7E$_hZUEdlDwzIQV;Ov6jBZ#%4s<)(*9GM&>ka88^cXNbn`UocyMZT_- zX34K)CuHUUb8{()?lZ%!_q2>zZpcu80G^^5Lj{<5bK7C}w#U0O{?qwF+vWL1CdVrc zxhoGTt-@hnsJi^VS@cxW@!wzKPF7995!%81=hbO%x6d-tRAa)XtH+xroZ;f4-5aE? z-nUskrQ47iY{2K(9KOV1BEA+P)4aUz;YEqc>_2 zD@XV;ITc2Ohh3m~Qv?-C+~xr{#9K}dVk%;oZx|XSmh&}btx{ewXR@ zcXCgllNwv_Zx#z{)59+&q2wWaQ65aT7*y98-GL|oo*uR+BXC`eRIw-~t)YyfaaPq6 z*Igo7U~jp=0Z06y!y6g}{6p$TslT`xSurAI;_>*I3d0Zl`r&Q@eR z)8e(Xna0+KFB~e_9YNl=nH=PCh_t0a@I#;=v9w^jWc>mt@J-7d^atI#vN(2}=9FL5 zLe6&x$|5or{&J zIHfeecWPPwoF|5ez$y+5X7lm1ls67ZSfIdsB z2@khHJH-1`ts)Vul^e^jIx_`@=CV4H!Y%=B+L9n@15AwN5{W64?lv6y4YfN9pM1ur zB;F()zNa2BJ1a9jb4nL*SL4-21$OArOza&Sw$g}RV=dA4et0LB1p(yIN$sfiT=XuR zfyWz@3NXlOo+_7#@D@9UjoQnfbyTlD5Hp{Hftx>SOsT*{4$xwE9_EIuM&iS6dR_g4 zf$F?z@^rO5pvLO1*sSMT#XSqA<-SzVGx?*1ySUpi{5WjJ@$!u$iFsd5wBL^N8me|wOQH$;dB>w1?OG&#y{K-o*L=ADVe5DB+# zSzHHU(3=n2K(vFC=f;H1BF(*yKfA`v3Elaftm~xukI^{dL5*9i`x4a=AN>q0IS4-y z)72%O5b?!#ntX{bR-q^3OPA++I<%z;V<|mro`8W6%pDn~WAu7JJD)X5)$o_a(nahV z18Ju=HkJ|t6Yg z=Q%jBk5_&+He4NP`;X+ZO20L&_mbk0EUKnVtFxTXP~jrdmk<~KM2J&ooZU>OmQwC~ zsufM(u?)BJv|ms+VDQKswKJ08@<*O&hkP6CzSIm!7|68B+}{^88t zxAbF_g+WQm>(EM1Nb*c?;W4K|?7#_d6oARy;yN+AXuCqj&E)4v zogxa9BY|n10yitkk3qC+O8nsc>0=CQ2&Kb2$yjGW(Rrmc!bLxMXzO;n^6BvS#QFoF z0VdcMeBMhA_Z)U>v9bbbfF`hSw@E~mu7>OtW{dT^`GRoLNj1v4hYH~iQ9GT+mQsTJ zHGhF5rN0PO7N@Ls8y3(hhuA#s6ai=mXJE^p$cGqjrRk^W_Yv2UKQjrNb>EtF>L=6H z5^fP0s9T0?_X`S36UEJ4v@kaHK9{1l>j*TmwD=HOWu5KFaunN$nG6moZ{>al+=$7F zNy4W#po`}A_dLJXN6txm5X}!dQlb~^B=_MCiOKevr!{D17(Cn&h1Do zX2A4DW@!YJc}m~`%Y-1-Q-kB*NKL#gk$r&z-6Ow{l)firf_7#11-`Ffuq!YRtsu}r zILG(|#7P{K0GoidaIkZ7u~G4NVQwjsPzA(Glv%1O);YQ z)KQBzR+J;NgxEMTH3ZR_KK0OHN$YWIBnmUw!$aOp!)f?z#=-hfCYix4R;5b>@A6VV zZ4$*ydW1M3Wb%{5;#Rt;T$6oi7DrEU3}hBZ0H{!$XpbNken12ZJnee`-s}7m%|GnR zE2(r-^uMSTSd#!{X!`xxvV3rKpd%XVW9uYHL2y-4S2FR!-H-%7jQArCvsd%$JsiR- zE;UEOu0KGj{eg)|#pMW@_Jcs$U0`iIwen+YZ$?fwNW~$MqK*=lizvC)m{rtxamT+c zTFOf3uasEB(|{^nFa|$J`y)?emDxlUc#u@(ADBj_-+@oRDno=MQjTq`Z ztSXBgzDFqQ@A7=AtdL?xmmTaL$AMfN9Tix+GmiEcQo@!@1i^qC`)M=cqA6J6YFpCS zxQ~cqd`qz;cL#&j_3%q?fddfav!oQ4k&8XqF_Z9MC;eNp+E-V%BY_gR`8>sk2zf3g z0ryIF!4tqkZwb)@8<*jO=NYk~Opb-nMi3^wpq_0juQolHEdb|!0;ZpbK-~G2g7O-M ztxQ*!*=vx$2 zXMI-~|9MjF8C`FIT|IZ?&PkT+i(_!G^&3wF(9@oA0f}&1g=P#zqko_m6QLs7Yl&HL z^yuu}a4g>TE#&B>+~r-A461KMvb)GmS)g7L_ayX^(ip^JnQs$0RM1BRfnw`thnTj3 z4oxZ#bh;8RxIgc#5%uQ45g-0<5egsA^dao7zSaW9{i2>qgVGpm%SNC*2d2@3mF)BOog7IfOO~Tj z#;RoF5i@447Kz+e<6K!_L9i4mf0@Tka$n5E*}~ak3tpk5*G1S*A~krz!>@2VE0a&S zaI%unjm0`_WKs9%?YA_=DN1Rq`h~UB)}7$p;GeG-%E(%F^jhlpj7<^7i0k}?wyOk6 z(p_77QjuGo3u+6QuLdo874K30l1WePh3sVLoI`JvK;$ zroM6JJvnZZ^%vDa9ChD-0ta_WrPVXmP+kXYdS0~>^ZGNTrFXt2goYq{MfuszrwkhZFK_4;B}Y?Y#`9EZL7zGK6I+uOoxDl{>BNMWIWzICcbub z{~I69G1sp%4=uVU*hO-0`JZv?MED6USYZS7kQi@2F0$0CIffJHVl9n=>y?dbe?NfR z;bv^M$l$$E82OU(Y*zVUm)nf#lg9eZf&@e;U9U8bUSBnesMHtV5b9ZSPIv=(=hE8W`bbFq3 z1i0Zr{TSH$SfO}F(k(xqfH(AP!Px!B7iAl{Fy)3|eToMuNA80S&rI{o- zw5@Hyj<#j?!+zME`ZhdGZOZ^EWMdTGo-DZuZh3>1;3BSqN&s9CAq>UhaC`73i>A$~ z*fbGj8V?pYWm2Lq8w$mtBA3Y>zQ2M|j^kPkzk z>j<#bkj{uqhA#ebUFitE5WEVC0gWV>I(K75UQ5_g<~3)aZH*_@!pAB6Mfvmx5#_&?d5C zR8VJ37{IsjQ4rVB8^rGgXehQo(;|U7eurrS2>j$}b;?^@$&_K@WSilq^$}4J^!dk3 z^iX@*Q*&zT8lUw#%D*N6(=I(Sc!@Uuawu*a&fT;wB<{}(SqMqQtGW45kOkZT0006B zPyhe|;Q^im3DGsb007y+wAe`p+njUVW3Jyr>aGt#Jj;MXYFR@Ui=RdwQ9g0a2`CJ38OA<)Z z{Pbw1rN@|l6HekM-e{82<*dLrpyA@yVQ++%T=HWXo#U>)?c9ps-;b}kV#XByK!#;5 z%s^4Tk(pq~s6r--Oj1hTD-ELgvL844rML>G$)~sJz*5~?n*Z{U2H6sm$@az(DllQb z2|&t{(gP{ep`*K&ZIFR14KRC>TwSN@@h_-bhsUoYIjotSvT@-gx#J_+(|~&gr4exZp>;{>ut+LXd{>RDA=Y3+#|FQE zkv;}yQ6;Y2L^WYlSXDOuEAh1|8FROO=;sg0YJ(_H;@^)f3g*U);a<6^T zM>y%0%8eHc?`Ms`0@?ro00Ie60009X0iFa6(KWvS0NQrbydf#xmqvSM)&q({|+v#gdyAYs<-OVP4EdkvSREtOxXwgp#yeN z20dcL3Nq|e$|QU3#Vgw?oE@m|;!@{!*>fxFWcW!6 zRUU;m-BTE^y7>@+Qd^IM6rGg^@BHzEH{G%ZAzczCn5#Gt1atIW3wuk&st-q3l4zIW z6!mi;q`&E6nAPyRgEtlmHbZY6q{2o&r7q>O9F%zIET8Zr4!K!dW4u$GeTcRbhwbJ9 zF2-*b-qRj(TN-QW;U__)wRMcCC~&TLKR^ z)UtKMv=F~g1W0g2Q0B-+%_Tx-n=Yr`HaQ$sn774{xsfS77qtaPG{|=nh*`UUR!{H_ z86y6*h!;MCS$Ad-Fg7Btb^|d}+$(Wczc>j|;kT!|6=VarFaNc{JDr5%If#8je{{z~ zvCGtGD1@g<`Q}6 zbnP49@Oic0UYikC@RJtKDeG(wQA7;0x1S}`ehxDy4xKbdvY3|`BY<4aC{&Fw`P^Jw z3?|@spg650c3hpcC#sgc*wCQ#;P9G?AV7g8)Ar4c2^E8CI66~KU`#kV7N7o5zp=;8Y29#QA(^gS5iP%2P7*a6q?XJGK~6=x+nR)kO)~NI8KLh}EZh z*q&5vyLo;&j%*n!V!~;(Ue$eO%oUZ1WRz{u?=}5Xyl11IBi7jJvz?gkkM-N9PK7~l zwpl|Re&eS&x?Ls_vqYng{$jxiFGlYWK7#4XwnG&{A_dRS?E41L$?ro&xRh&R9yLKO z-R?1coCpe+)gtq+A3UT%Q&hnRAg8$sz%di|0}DA8TF>;jbO3SC0qFn$00Idx000u9 zL7D_1Ociec00RL{y+jUgbXfm&?mwZ6b#z&;Cj3)Z+DPZ)kzxaH`@f!W^axwf#yPdl zd{CXu6$Wr+!TV&zBVH#@1^V94#}=jVw2QAoPM{;;WWqlZT74k~9;Gdy2mjbB37NV# zS^`sKU0qFHr${{tfJz)I>;L7g_y1*F$6bjU)o5}P8)R$`s*U?p%#9$=nnE6*A*Bc2 ztiPgZdBq_C% z5I@YtkzP?7PLSlMD5vF{%h6Mq8iN6l)j1`p7v!~P%>o1`6Lw?(p?nrx&0tHG;Py`- zfoKXKFJ5O8RcpBL(a7sdsy&hFDDUV#LfVxqrv7RP0_ctrpPKnO<)9%JG|OS(c4d;Z zbFY11Fj??Du1FsHrl91|IJJIW1_QocpK9 zrY$lmhw$x(-D*cCjd_~@St&5f8~ZUyfM{a+I4?!k?|qGcr?fdO(M-Vz^w>uOaixG3 zO5tauUnDimHn^TsI@{NRlD6)1mq-z+&B)1yuW=l;J|!sg$vE$Z-tkD4M-AsKzky5WVy+S5-w7#_<1XP;Qg{33|cH{+MeN zfQz|6CKzsz0d`S*Gl%5TQovwlTUb2$bKO2buwh2-M1bl2tBiwVlyQEvLdz?6Q z(6hD$`0; zgUCY%?R?=8lxm@U4nrxuvI%Kbr+@MtLCa0awV^euXsOq9wlpIEjXnpS7i{{+@s?J@ zU9j`ZV$mQz2tva@blazUoI*uX`HF9vvns#rJJt@J>@OrII7hNJKvMj)y9inMD_fO3 zt0h~7Q*d-#Vig`8gTs?jIBG7Iq)IHqX18}3M>$?wuNxXsQsD<46xQz$qU0TgArDc- z7!=-o;msnqHf-GM_*(BL=``-drJ!z4c@+^M4++{Fi~5{`G*tI*wvj~W;oOgSZacYK zc{gN!)FAZd1% z9%H*bv}!ogDoY!lWpFCP6>jv68cF@q(A$?Siy`2yw|k=g)1rT=ea;AJVwX|S=C46&^C^~TUrp-pGkthXJtALko{0*uURFNbfIW92)o##$uQ>LOpeRY z%ORr*ec4`Vi$8tO?hs4=7nJ&5NaaWNX+xVlvsfBa(C@a7{@0Q7+=jx89b|SsbIwYR z1vT!o{SuO>)_Pe8a*Ge}qqDtifbdbp*VgcS8osx9XtHcK&K!mR)>(jjX(Lh;=|9#= z=8$g>1GH_45$gY#%GDRl zmes|MgNt86v0~moqt?O0)kbfiEpB@(2ye6@AxVd zW<>M-^$Twu=dhy^;#)vBe)LBJ*QmMmjRN*ITCYTLnCAOS0fhGQV&NMd(6k!3#f%myt!-AXrq{FOfh6YzJ%2S%$Nv*kD$9Z)1c+58VGQN z>`-DnT_TJEc3dA;z!htmr^B=Bs>%hx_RSfykoKlf&+W4gA6!{~{$LFA5kyf8p;^J;+$fxABQQNIEaVZ)oFbj>Q=bDw;s;QD!J7Col7DRtMT3t zt8)h?!uk*DEE$Q7!OiKrW{ZE`@l?LQ@dDp-GyMd9?9m1!Z)>f+vwX&82=+LKK3hMo z^>HD;3Kv~5wxW6e;_HWU!q#yV--!I_Z9dR``3PU&LzOtnH9Pg8J%7oHtY2-S`lb~# z<&%hp{1!GCCXwjN+_%Jkg=+g*EQEllJTg-nJZL2qoGP9plhm}4G#Qnf(HyM>v$X2R zL6X?i#Tkk22kgL0^wWVx^Xg-TY~ZmWtTBse|0tl)fG3aTFVa9utUl*%yat_ zWZ2@?bMNqKZtY7U52+m^@o=GQ|6Y+94$oph0hTNdyf} zh>ycCy|L$>P&Zm>wgbc`E8s^(mM7hQn@G?s{pL`fJ1ntIvnXA;HQ9W!m$?lsrQ8gK za7G7_R*sv!;h?&k4vn=hz(NK`!A!pt+(wbdrf;oc4KuORssddvB$r8$@;7 zj8q1^g0)Rd;N!uzXse0QbWOx~wJ7hdHl5*|U4Jf7^^5P*dO%(1BPf{2`Q)!eVUq|!v=l>fVwNY5}>Y%LewiXy!yDnZ22(Z^EK>c z{#La}9Fl&6+$z=ayuE>KnNR=E?qc4iU%9a16#NNEL~Z#9u#V!C{Wbx;M%~C3pGV;Y z!t{d|Akg{6NFwq-WtR5_%9kDFN#f@n#O%T%c@sWK$GyI_roHt_j5nOvY0G`LvA8Lg zN4?UFpMUTE58O6tm5-a$969sO|NX%zD`C%dc$3F0nB-DFbDfjJOT`qClM{pFt+t6? zj`5I1`j$ua7J@CKCMCMfe{=!O!fmbgwT-GU#|imcGv(~D?s%zpB14$Yh=#E`SmOkH zX&$|SL>EvYnzC(B{2=QIQVJq}^`VJ-VaMEd)lk2Cmd{vhFJN%{^W1`;$Qp!b4+Mse z>xh5jUpvD*T@oxb=9??E!id5B9brp_p$Gs`M3HnIP%_wZ!^3b zn&M)DtcK0ewjDh2RvPD8n%x z_oUTq*~LL8s$F^L?aJ&;6<8#pkX3Hj+cd;$MBOcUrP$xC>K3_$!O1_KPFeta8Bk3k zU5^=2Py?n!F?R9PA{#P@U(5%e`L#S)t-<{kdS-;r6!hk-z*Y?;Ik0$-lpI()O{{S< zMN8qSw}1R@Y<&57RN|`O_fKR?Z8PQ2@0G z!9Ze!g8x|pF9RYouf%rEJl}n@0FR@LZ+E;G}45^)XN*GHBqk!K0Pv(f;cmMq$L5W8vKj6 zdHQcq{gBQ-(HjP-uD1A@wk@H*Y`=J5W>WtLkcSB+)kx}zxa5?{+O$N0dr9XI{k6~f zEeWH3GlqC`O&3Y@1FT6du~18L8FE$5p<|xKlcrRxzIp7u=9$3l?!M_Vo*cI4t{oT@ z!w{3eop{PHGGm%&!Zd4SoJGL7({2KE*V}N(+ecJ$qDwW!bwWn`8nI|ovErgLw4Cc^I?-(k9?W*FCM>Xk92;BOJ?I6{F;Q*%zl5#kT zy6PrmZ#<6i_s_B}H)iF6%weJF9;a%FY0q0G*-`rx=sVWSI7iPU_2%YVY`_--KcDYz-iH~O5 zLcV`%)cJ85CIoKGGWfid1J6?L35+FZKc{x)7ZAl1BL#JzQAUbU&dAM*Mz{PKedJFK zCdt#ji`?&{7B)vx?S%XM$~((xR!)d0i}|_cCOSCu4M~ME(j^;KpE}`4J<0PB;ojf( z|ID=4zBeRfH{b`jDX61Yc7!av!jjObpist{on-k@fWY3)K-k@Le_nHQf`h$Scih&r zVnHZMVGlhEV^`&y%RKV`Ac;thFlIR9J2B}Es+3-CKTbr1bQMP$m>B>bCwur;Cgs#Un^DuY*Mgut>A=yj0 zDSQtq6_^JGAR^|)E8sxaS8}2byZ*NJCjHyC-}jxlgQZ#|SkU^8Oaat^b3(Z8->qFE zq2xd?w3NAfz9Ph0gKG@rhHPg$^F@phX-nC8%$lLjFM*pY$xShZK(hUK8=CFdUA`Ii zRxDywSCzjTxjv#w&>=nataNJORInLad36regAIch&cZT#UUQj^eMq6J#bV3}9;HDj zwa%quVBoj4c+t_`FNmYJIzMvIW3KCyjeNrl>*1=4^LxXQJM`l#l=cTL1t60trw600UzIo(2`B zO>Y1I+!kR-kK#6zYXe6D^H9P*nG&m$3X2se13qzt`LRT!5t%fG@8C8U=d+j6RNlQM zGbXt!wlPb|mbH&rn@k*Ot=okT9TLjX@Lh!SFGKV$?X4fr)5s8mJyK;C^1&(gZCIo= zY_VA=7|9*npkYp5ogcqqldTE^^^Bx*(dml&FkWs)r@TH~z;HWjhuci9Vm8HO3L|h5 z8A=mOzpv%r!jIZ0vT;r8hC+Jcrs z8P&XxZProul-MY@GZU=vQkFO49i!hZd$aiH%&B%(4B;gMsj=dl~3i@MVVILq@dq>N_p!?FFTd{EJCS6O(VN>H&i4uNu} zzgcP*%rPLXjPlBl^ zW8CYOz!Q{j>9u&(Rc!B<8b8+a<-}oA=)e_GW)ZVtubF-Pv$_3K% ze4tQt2odGP;DbKYGKaIrV;+99a18xHX8~<}Y0>Zv`t=(d67MSCBprrMZGX$C(#n&6 z${knC`|JSgB$4~F)3wt1OB7wvun19YSS#cnRe^XnnBmH;vToQDUW!g{{$Y1X<84*- zA*9jwXdDk!Nn(q05Q^GR?9MUOm!jTd?g{#$=!WO?PF?FM%MG0Bz?$?EZUv}1wzbe5 zYFfZ28^g|?2za#ZnI>kVc1~Kw!7tH4DGxuv_4Q!u*kCyGqLZC%(>}m<jYC;c)obiQYa2Si4hokYT!7No9JouJ|s zrmRJ$5O4IK_po--G?3+zA-)~eD3OyE#(RnY8SnrA00Ie6000Be0iFgKrcG}E0NwnC zZOONtxou=D5z2Z*9R53?6+V^}7LT!UGH8F-OS12Y8t_9Bqf7oTqV`8|{RC9>E5ut| zMq*CgJm50Lz3OFmsK+}!{(oG0UgflI$aGdysQnLNpd_$R@n!bV0Mp&cA*;2^kaB$s z(lL0uws6?4*&}ec5~;GD-#>pY_{#{hr^7hpZL9-^ZQq4;8F>i52rRbaZ#gM*!|$>096-eY;x!w`bchqQlp85i-Ic>H z4xHr+oG|H1{6q&`pG7V3v)@unm|Wq(28{$4!;vCG&ZZ4R2<5eA!4O_UR^zraJaZll z(k2?6hw>bpI9n!?6$C!(1pVBKW?80U=12fYpGa{~TrF7=`rn%T7S8?Q_AgbOzq914 zLCg1SZG-G!h|e1?HXZOPR9dZihICEO^a}*LaUp|EbPEu(v`TdLO}kMlcnB0>e_6$p+#WGWZ znoB}ULvs@;>oV2yt1+pj59A1Js@GgN)({)HtVe+;nMwVgjRsl36s5MlY5ie5>oG(} z5RTcd5ZuR)TgfYZ&!ZLXJe$AvnF;WeJ)?*Ta}?x_u(#q2-bd3K3~4u_-~b8-{*&Ao zr5^EOlRai}-Uc52=T%*qu-0hxH+B&Qdk2M~7?Jaw^%+$+I;pvF?Bt$-bd5I*rcwoi zrSYvYYU&F4SMK%U@!Q}0=L%cn^l;#HtN0|LgkR33oaIF!=nAcwpZsi^FEw|DPX|9M zJyQw)-H;)6udv*+R%gaEd^6mEZJI8v#H|2XNdO4A000022~Yq41C9Zn1|6nNZvX(@ z{Dx&YFF5b;Lgd}-|BTEpzj?Bg8ReRNhfBrD6P}wv<|=3-42V4#uTJJ1HBD$j^B062n+f-Ycyql$Oq?3W(~tJ7jqJDVf+omAa%zf)!f=a_j? zYRUYS4OB`ildNr=g1QYj@?~LeT8Jb$v`=G&fq+{+k@lUSjg-+X!tt~mdTG?`xy!?xo^)(ALFogg56-B3X9NP`LHjRqR+kowVv>oZ>Bc=6cU; zWUD1J5XOjjBKMw~0~+!aHvbf@O1#-td39bc=OPQq{E}(}3}r`n)dYot{ zb9!3$_U<*1fw8~*qTkafBUN-GcHCVCg6LW|(gD-i^eDsJAIjoOlE{0sH+|2)MFVG? zSoijjJ+n&a3YsSdbtXxCg(T+x^nCpTRrsQdgNHMWbr)%P!_GmBNAqv>o&v_Mnx!Kh zeuC{$=52#d?5i1SsY^R0Ta`#wgT5#%b8&j?OzR?%B~Ct(?rFHGUqTB!N2zLq+|^v9 z0}h1_Kfb_HGEs#9J(SbLYVV9p?2ZY(;m3j6@Y#seKj8(yauIBLML2~QV>p|}fH2&5 z$EPAdr%D!&%Yf@Fr!-MMs+ydKR8M=~>ZfS&(u3O=rfZOpq0h6H$+|i&P_-^=DrSdD zs?cor;0F`~@PJzvL=kNt=rS&rfh$FKNlTqjFuFy0NA|(y*=`8pzAUnEf^F(ag!W`+ zp}tlLxK;O3XP*A`qwZtPSc+lMI~zUCI=%;ZwfDKwBLc|*T6qP3A$}gH7tOHVHRlwO zU1H@bbU_5o`z^BHZ2k<4`?00%n1~Lk`?|cA61i9@kT+z2b}hT9g)otH?)@m(B7Aa5 z91}YNbGqRL3FY4?*8)o1+>w~IW;;i6^<|)D*M~gTH{0N;d zIJD3z+r<(w;?NQg#z+}S^NxtL=UEsl(XA?J+Y4xYuL$H^GLsI}C@B(7Rfsnne76V# zNMC@VG)q9|n{XSuzyK&9000022`~Tv6H`H&1~F^}TL1t90Zto=p0j`Q2(5?mJQ%*s z*M2uw7Y#-HXV#O?(@d9cVV?Qh6$uyi)y#UrVRKzbv$EAc+s z#+T!}o-`e)dHr>r#U-cl+fv_Or8>u82j9X(^g!}$oW0e%V8W5jptQqjbI57oFlimM z-VJA@4H-mThd=OiUCuF+yHyaL8(4=8JrYKhaXOuE#KnpwzN8ivG2w7UuRMHV_~*lJ zOC3uQguSEteal_}5EZ_n3C4Pc6eo(Rl=2&rf0pJ|;U%0*dAl%1rfWtsEEE`NpqF(g zuS@`mXmrn1-mv5xw2bPcNp8RQ1-(1_&^C%*FGOr4iAai#2*lnqvuWo^EqaTy7mAX4 zH9;w*G?;oYlsd#*Q5@W1GMaaL$s6211sMFuDjh}8E{6Hc5KEeNN^!B+k9N{}O$|IM z3od1e;YT`=Xa_@Af?)Q#75}%2<<$wuqQu_exEs>)}+#p-!TT$H(50zGp)v+ z90sf{fDdxfCh{ls4Nf1hshDyBlgAc5&4l{B9fFb8tGnEnuL{bCXR~cZ;Kdsu8}bk> z6^ha6(vm)%wHT2qKhm;=RpoXS0CHeQ4HS_ScitG&QEn01tR?VmmlC%3Y9~M#aS&Nt z5WvdGUYe(V!9J*TyJE@-vuT>LOZkVrTV2K}gV4UR-p6rfMG?ZBOIQ+gh`B@5l`Z(d zxaZIkneO;(fHaUx;vBaqp~sfkb zraf)5Cuj{oFt%@faIydh)vb@M3|nw3P%KZV3<3v?+c+HkBTuo>@OT z`J*rUGk5wRu%Okgz7~rdTU@n!6bTh3E?eU*Z<5Xkz3e~dP9A`#APa?iywW}>V-?zU zT!_NfqQ(5Lw>sA+w7vK~pw4`e;M)IDpko;j1`f>&Sekp8m2m_?#dbZ`%$|sJTKJuJ zH|IcWa%rBlv@0T0VUDqEAeF&uNkJ~|RSuWj*n1%XVknkws6H!!>z6DaklA}*mFGB)!*5qnNdkVJ@S6wd)^C|4OT5WW;ODbqB>e=DYIE{V7}vo zq;=8b+FGr>`Bor??*{#7*0Lh7B&b8wtrr5F<6u=L2a>1LnaGREk@=WzC8*b%KLsj(*U)b8WYxJ%><6=FHZz+cwP>>H^&Z}J?YK#Fp$ zdfzMOG4fLi-ncc!c(Y!G{m1uOE{W!HzOj<+e%(!)upbb8*k8CS4H2sgN%QhfA)~-M zMlP~K!H5xL@;N9Zp?%1@gVOL|k^mk^P+Hc8;t;mW@aO#ucF64aIPk?XghN7mfL(9u za=xS13x^XQ+P|8N)>B;>+HAS4OsDTz-dU@$Ywt3%CTqHd${6t#*ze(~j}VtPhwe=+ zo$LkLAX^4(1}#P}SA&b$>tRIMkVQ-*70+zYZe4PmL9|}Xh1A&=i#Yh`LytNKB7ShmY3T_m}Pyr}@=9~}dE%M^h1f0IG zN<1q4F)F-azNnmPPyhbA8LyS!l4kH5h8N;oH?Pdv_ysQT0~P+_v*a!U zT3i*EmQmDlU9e-e1@%a75KO54ShbDn_5uN+=NXQq_2gjZD-`myt?|j$RtIKg0@#Q9 z*k-~6x~*!#x9lK+Q=S96L3Z-#ZBANk?(>1er5q-G zMJa7q9*(vD{F_*<^Nz`WfZTVRmR*(OHg%xc2zMG&RWa38pqc_ zoUjLJ94REE&oYTP#z^p|^J^l7e?>E{-aOG$oQBfhh{~Z4L*4!MD1UQ>9{l)f^N**V zrgQ~o!Pi3IZ2o6m@lEHD(Vcq%Y|>+BxkLBQWjcwdxJ-0-IXK^8c{O@U$9+`Cy342q z$(PE`5?d5&&W;TYzRSb>0Xtg>(^lS`PtCHi`-H5%6C46M`}PUmOu?*CN7!CKdGrB! zBxx=Px$uyp3(=s=DnKTB&gqTLk(MO3cYp}qvkJPX)hwxdJiK&NOeU?v+kTCQMx%M- zjD!t%5BNdq%sZ9$eymMO4zyk3G(pcSBqfa<%a-%DVcFxYQUDqV=I#bIazpAZ;h#sk zM&B+TmzO^Vum5SyFuWa&(!_8o3M3Ef=4|w?Zq-qy)xb%30B-@4?I2ilSId6+Sgc9A}k0H|V31AWG&rL1;A;CV$VtI`gOIqV@)mS@W zt%2XRSA+_a?xDJv*{D3%0y;NAkLV80tM?EurB6FB9&dt^KmcpcJAL&9`X_e-9hBSe zHLJ|m;)no)XmUQWK6QwWCW>Sx9)y96Dr>4}x_P#$NzQ9xZ}iKYJ>zDEa+>z9{|^*- zl(Bo;<2T%Z*~&NGNn!fDXO?|B<$Jd(%BxeNosA#6S(rfEIWedjJ$@EY4i=-c191_? zBp=A{4SP>B)1^)BT9>zttE;Wz?iPzOi5=Wq^B1R4D2fYS5}{(@0VfGLk7B6W5A%BZ zE&W9uQ!-BE2gg<vPZ!#hO|R?W6XrdLGquHhZTIrhBEf|Kf)s}~Bg2Vn%YG6>dWDqtu2l@Hn~PE?JukIs@!=}eRFUM7|F zu{z30;PDnYtdeR}&DiPExkLDlO6OVvw9^0hS~=FE)?kbzcv5I)_#sSO>>X{>#lDRZ zGmh~KPF=$l!a*wufas9qbLoT0Y|08BRV$*AZEFdp%6$TBe4 zx9ehOJx=3~=ae24v8Ssy;=v>D95J^3F(LWN*VK9-e&OQ(q;Q3E)(9Y-J z4UeItk-8d!^TnRoO;bXrS^!(VPYDRm0WiNw?P=27)?B&wp{qu zYq)Dl5kAMATA|5##OWI~mCOVVBw@>5Y|Ov3Z)|y3zBaP#+n^I=nsESALC$wB*L6H{ zb&>y(qHClSAjwo3d#!=w!l@<8t(TY?@Zd2L9)uwS>W9jPA3y8?_$zF~D#%G}ro&e+ zQpz{w+@d!(tMr6pf$;{(Wc(^gAx2UkK&3e6N^UjR(H0oRQ|28f4zM|q`dtgautj(@ z1l>pPm_UDJESHRPMnqR4wA76sKoL|qQjvvHuEhgdGGYO}h%J>krcT3qYY`N~F2sa# zpTd2F9NHF-=Uu;j8b!ICHWAP_35)NtmALLhA(uhvj=tF+)wcrJ|0FymFzOZ-a}<)` zI-ult$I{x)ZK}*SCacgDJJ(v`G$_doCwZVHI8;*)^=Bupd2upGvV6nwlRF~!RI(plv<2*ouHa6d`iOsRk9&94ba6Z|{s%`GX zo0V36lr$24^-W^Ql&YJ8hja7V(x%Y&GrWwK`$@Qg*$6dQS3*0-4X5Yjyg)+6G)e?* z@hRdO3mg!|0*k@{bI{!NW$J?t>+A)tuae{6`=D?V<>HTQjMqF&{Vr7AoiJdLy*e}g zeg1x-avoo_R0G%(Y8`gJ#zbk@k{8;`H6>FQ&tR7jIw-cP&+p6dB~Q z_Ghoy5I^35I*&=&FdOJRZ3G0fv#F|Tj$2hKh?UH;>6Xr+m5R<=;7&3G9=w(&Zn$Hs z5Nn}gX1}!t^N+wN-zEO(&024r+^nV5PBRdKophes2<>M&yKMJw-HVguIB7ZCUgA-d ztDj{#Eb8BcDOjyZ57jt}Q?^DE%41p@UfcGOUgUsNB2Ueo3=s5KdJIxu`#)=S?`itk z>LM?ZP=N=&ibAk+Vo7mOR*KoB3%cfEr!0lEjfle&Fl4DS_sE7kiIE9`TvPTL_~)JK zMZFyR`4Uzletr>vAXR11PM10iSMmY6j57ChU8%J%M9kD4c{LzzeilqZB@TZ2T}q7` zK10%9QoI3k@?2ifi9naXE;t)>N-W4X%wLI!B|9=L1icMSgVtqlL(YSnrQXUn%lAAp zca*dxC&muBh6S}N??)0_B{vHd41?fMr^YR^J!>2hp&6>U*p#LZi`a)uM=Ble*#l9n zz4X?>&qc$9z0y96^~pzGW{6N%%uZj`{Ambg>h;=VtU;PAJ<`u3+fT$D#gsX+8LJVD z{byeZqK(#Pq81G?;i5pTlzU01H>5mbaITyDafg;Qz^kvufOgyhnRN?;38jsQ`O($P zKosGAR^2=`bVIbJ9#!`Lcoxx>G!H3`G=Ey7#W0z}ovnS~T_Yf%4{#AC1Yox|)r|yh zUnGf;9*coDCB6I8Mh*nzAjHV#&-gT9*Qce%`tq<*_+Cb6KR8C8=DfN-ch6C71VL@! zYdgOm@v20-iZJpkD@404&x_>;zP0j8sHb_)#yDbW4od+iBF^%OK@pq`r2$XMEHpM? zZhfXICstcbvV>MsoJ0sk<*?D4At@T~(C(1X?xih>Xf>IJ?h+HV)Xdys|5RD{i%vGq z(I~e8AZho1ET_JCMnYtcaEoxf&r@D(+dRc%MDo0kfE`NQ*A?!JJM>d+t%X6;BuxxwjG^ZW612t5 zws&hE;+fCiMYdx8F0SVYwfm@&QNeW`*}$b~l>h)XU?Cb*?Wu@+7D`t&6=q(V%rvJI zA$k+INfIq`k|Y@*k1G>R%#a~dFdc5KJ`CGFymPWr2`gXHJE;`ylA-P-&|aZRA=8k5!1Y+V3v zOGj$l){c|0vap_{VkVtqO|dx&6)P(afdEob1mFq~j586?VlwzP+N=bweW@udSzt^1 zjwl1#BG>P%z*NI(H=Z;s7kCrIK;89Ct(>RT1$h$ZdzOjgaBqO34o|i25zShxi=I@%VsJL2kFn7Uy}NJ;#Wb3E@^I# zWT;`S6HO}o}+?YzN$K3i zrFJPnC3= zCOy4LVl@V5nL2BFk)qvm`dyQk67SXt);hbRo~3cgX5B1sbE-3ix$O#<(Xff^gCb064#t`V3 zjW+ad`8xPH+T9nJ48lDi2pBZ^8U?+xqWLRrZae`9zMZV^w83a`xnIxDn@vdSDGAoR z`&u_C2jMy+0BzNifva*Npb67`jtrHM1IZ3g^n7K<#r|Ib&Q^6LUPaHiK=Jgxc!EYB zp!ba-k724m+iL79+H#6P@mSI#V|2IE9~H&&=^#(A-cEv6A<%IL0;qTsFzLf!@8cUB zShr!|K&Y`epBlIwIkL77SlJZyHYrRK%6J5gSJJqdfYD!lwt-MmdRd5QbKA@DU?%b; zzDPhy(GQ%DcX!JOxWKvshyt?_^y;Ff6%tL7{M2yZGMYAb(+WeBbYF0}-uNDEw|QE?ImM|^fSHf<_XOy(V%Q4TqP$Ys~p#CNrE%zmhG~ftWUSRuDSUAcBCFRK1ke7}m#7aJCIGVKCF1jvPEGQLzjSwLC=S7e&y8Ja3WS zYHv}z2@xWB(5q&ueJd^I783)5tEn+ja5!e1O5hVdcO%7isZi5TW^N-T%YE!s*qnw= zp7@0mTz3*G4U*20a(9J?k!j}^CP$xADX*k9*^rSu0-~NlAOHYZ7Pt=J2qYHtrdh&{ zN;1R$^c&Y*uWUMe;XR%QGT;F=3LX|LpaDV1g30y(00DwiXV!cn8dVjx4#lA|kYEs0 ztm00|ps0W>P+Y7)XL{EAPxwD5E4A_FB(QPAYbhz>G z>Gm!d{ClcXnu^aJs9m(h=QjKC6f&qJBWH>4gQStMn57|D!iEu*^q~~&R>`-DPAN)L zvA=_}!^v)`dsl?r-mWxgrh=&~ufHW{sY-o(rCE@-XHm^f&}JY;!(!Z!tTzigQ6LII z+SCN#D}`ru2&|=BzCw6{I7+k0!i5xxYJ6k~8J5eeYQtO_$2O@>uU%*u)3{YtxZIN* z!20VE$wHjwOce>BKmf1{LIuji4mbyZN9658Y0&v@x6vK9#Lr*uXm&#u&<;7{7X)k8 zKYV^)D1B51CilJnpDBxg6S?Q2uGSK2^oZrE2jq0bRtwpjls|`*LR07&Po@_M6Cp%K?E@v z5C9!$3yA6fa6zy7-Z)WtHw51RHMmEoF3a_P?;U{e*SXvf49jw?3L7{AaWXm9IVGys zhannN^|p-4MSwsz3V>DH7OTqyqUACP0J$if;9#%G(uh4iK1x&^(Hvwsy+=Kg!R{y` z?{4_dNIn=`*d|pD&&pW}OsE&R*flVgKbz34E#Y`^@22n50Fc{*mW6%xsUvZ=DIpe- zhIdUtT2nOL@c*Ul?x_*03Xo;K42dbK_NfD}!<4Dy&Wet`P&fy5chkaM&t%=@ab?#v zl;W${`w0`+@)f0)pEHMi9i{jLT>N zQC5qh@CC|*fCmMxNHH~_>`IhEw>-$7%Kew@*CgLl3)m;EB;7jB<&9M!u9sdyC*qgK z_k&C>>YFL5c}*6fA%H|A*qMWcb(FCvN}KLU5%?JDSUu|M%ox^G!hK_f8$4$r+B8nV zZO#N?=S}AWU%g+UV=tYX-#d8hcy9fJX)q zo05-y9hqI3HeN;&QP~qy49aa)CQtyKVKsqd1FRr`iU#Aj#YLQ8GCgu|OyjEO{$jal zW%i&1PVhfGZm+NkUoJb`9I87fX`btu*zudQe7vF`+NoH67=q=SS8V~dzI3F&Srl&F z%)^ldDZ1$_!u)4x4jhz%t;-L03@Buh^`eSU$vOH|8!JOlx5Ry)-Z7%M z&zYe7)r-1XJHeWmU0+P0sePgdhq^=;&XN^)zmP`#I#=rbqMK_8z^KI{w;9kCB-wL9GtNBVz42YVk=EPZ~aHu}4cW3#ho zR_d8t6X4w?w?5wU8|}RqX5MkT@Y1NwhjVD_4F?42!XX+}C6;7qQ#)=S@T_{T+llTheFhbL;>tFeTZkBQiZzYRf(iJp=)(?j6|< zH|nr;zJJds=8}uGFPK~{)kOO1%kDOFk;zOBC~u) zjx8Y141T}D%Z4$ks7oZtR(Z@2;V#Y~!g>g!WzCMX4ihsgb3Wfupn%Wt_}r_WAN^Ox z@OZyM|JRG^E>dG{htVZFt1yP@53+aW1o8vU(4s8Z56iG4L?yMyRz`76HCxu)00Mjk z14@v=i87i{27n8dNB|N5<@%AJ*9+bReJc;Gy4>Fjz6EmusOKoRU27=X?W3ONRt04E zJ+xl?t{}3Q<(-4+b>>wq?L9y^zJBJy=Sgh?w;>u;4aF40LKcGh#l2ailBnLxlH^qC3>!XknQg`BXnnpcUA4KU7M92D zwTx0YH6p^QX3QwyXW#gqUv}j6|E~d;>AR2QJ`9Tp4S|7@t`?Ag23%=iV66DY%ugP$ z1IS|o&IN4NP@r{CS;+YN8o8Nr`Rupf=(3fq>+N7cuC7nQ?K{}thN96$`7*sQn&uM5 z_f|RzwBjH&9E651^{>5zbuT zL&YYWH&u562Rhz%iYf<;i?&4wKtzk$`eP~Q4sW(a06RlBwwHxNK^KuG2WgQc8jJW| z>bG{)gc^3-bXiOLrx|YPVfNbaOFYCln8({0C{Mh2p&H=7>FO3cV916 zDB#CZPY`BEY^R-nlQ zx+$`vN)04sX<E*C5Q40Y~1W?3Ppv2S=;0OrZ(nP#! zQ8x5MI5g&WNwtFX?*%_q#2UYsOmkza0t~M;A$oI$ru{OFH%)OM3GfsR4mJaT0boEZ zE>pY!IV*2QCA#X2tDkIK%-zrj`u;g#tPk{KLay&7eAeOVJbhBtuTd41fCRF~y$TeA z7wO&!%n-Vpiv$z-S{PF8AsST;#S+JWu#kWf8K99tTi_N_*gD)5y7bkg1{o$InogpN3>6T z)(rc{SN^li7o>%li%0KYx#>A48J8>-Z|F3f%bpvgy9*v{X)h)FBo?BQ z!RcWFhMmOCPb&G|`$gKR`6~cp8Q_Sv2p$A;*E1=1wIIt{5ndCC0<_wN4Czq=RW6Q$ zx4D#xE;$7E%r8ko_gaacDz0%U^-$T3I&m|X^ji+u_pemH)<6l;JBrGd4d z5=S#tfS7_3&uqy#P!<&95_1nSx1~q<{Gz-bI)mzIay3N0Cl_rYn@QSewf^f>q+wNd#}!?ADN|Qwa7kMj$~=c8tP8Xpa*upyC^_c9t8lU`@lexJl9{ zqTp9EVnZM^bpbocT*l!fCSYfS7f0RXa<;SR!tn_5=>ywT7}?I6;iVcNAt0dO?Vnuw ze2_M+W#p{kE?3Cs4hZo8PP;)upg;g13oZqq06+tg`hG5#wsyK0>f@t`GDNP(f)hhE zyH-^AS;lDo6Z?QvWuemH+yhY8T z;|N!*NXR8q3P|t>#ga%-iGYJsa4A^m8AS<3IS>@)jRRJ5H)idv_#0vReogBx$)qbV zzXnr0brGjq0G44GgU$I^l5FtVQ#U2O2Y~Rf})yakMO+$R=*F+^kDy@ z6x=6SQb$twOpdo!UGsX9!gyLf2aOK$_&L$_d=J}BW}P8GH1u@3hxCElS(dyY%=Wlj zkIOD4wuj}zujPGDaG_b1EOEpB7%umb;vUNnX2pGH4-`}c3%*3oc4 zUb&cHzii+3R_$o)jqN44FM zIB_0nINDXk;B`i2H)ic&XqQx7 zi!vn!65gg9%o|ql=JL*uYxm7eFX&k75*6|1Ck7LdHM-wvYo2P?=-+(;XcQMe2P;ze z6s_g^M?!m(PS8oL4gdfEJ>Q}Owy+rq*2XEjTSH3>GK06lt&M7bOUB&GX8Lo_mra%t zWS>yz^KY|CtW!rCGm=|aD#QT|o7AKIAsSTOmKM@O06+ydrdWnrDk6f{0UQTUpvU|y zi^uz#fIADRGGI7$vs=Z*YIqYV6a;_`7MX0KJV@-*?7MB9O`#EIb-HD=wsdBC)NCaSCXzfA};9m;=|3oK^CNd0{se} zRhH)5^0X8x1OO}mg5V>7@57{fqv+|f=EA8!uG-nMIE=VqzFXx!O2Rn}`F+ZJKyImF z3Dy^ploj_GA{+n!00Ie6000C}0iFmYvJ+bX0NeFN{2VaCcs|EQ!;BfCvzKl3T=VIR zsuJ9*W1Me;YDJ!nC{y{x!Vk+1gYdZuaFmJ%rMC98UC~C|ZVGh%P|oy@;mhR#M`4cI zQ}%0+gpFjv+4m36c(Y4cZ#m2jl0sw2O~B%fpT#oUjRSWjb`xh`zEmva{->70r88$) z{=er1C3m{+mP85FNMSk3UJ+_X?XceD>qZM6y?DUCq;JOu1|jMy>|!||Z?^Y@W5~*Y zHmaXGR9^TJyYd@_d~l{S%^d}uiVm+Hk_-Fd5;}J}OfAok$b|i#sQT8V%DGgCtMoRWh;E!dWxk^}-KYZw5#KG(i*X-2}VPsZv_J}P3Rx;2C3JBwgIcr(v;L5?> zxt2PzLl=Zs=TtAwI4wnesj^7waSZI#gb!jY;nq~<0fG@*bj%AAj;qw=@2uSwz#2@rRO~9E_6h>pCJd;Y zPTKISEikXyXAkMls^XsHtz$XLOcQK8b`zTVah6^BZ&kz_dQRK6eGwx{w#U+{;WUb+ zPsqZK_#>36{pHRRU9Lq`UMk8hf+B>Qgyg*IU$s59dLrxkS#$E{;WLbIQdK_`2sC{W zD`P{vVzeVB>H$p%G@dtxbCtH;tA=G^U93f54SYAJ)+$?)Ywu_+hE$RoCT#{*RV+d) z*K9kmk$vr;2CxUjq6@}oY z|NnOQVzJkQ{L<_s%^Rkq5*JGLx!E@CKe($w=W@n8h*;CnY}wyUn6?CU|oeqHgjnpjJSf8FrbJ{V?!N?E&Ie5QhbxB$zEX-#bE51ws7QzLel(h)PN zIiqyk#I@MecF?JPJiU1?)R;K0Cfa{Dv^133FGh!RVV64IE8g?;R=_$A{N-+nR~ z43J=g^);yZdgXtZ-rOvCW`OKFEjy*&`wQ)wA+OdxK|qc15x5IaD0yEcGj=ayDR`b7 zZLCxkWPsI3Jq`|UXctdNN@5@?W+U9x({f=X*edtNxLS>W6}dFNch5p>hWekU1R~I1 z-?=Z9N{)5*?lz*3Rcj5D$s4J^o>GO=dl8;U07ZrQCQ^n}2@lDEiTywY0bkcao~9D# z!jDwH`5J4VF{xSCd07~vQy{{(<|tNPU<1qS@mW|@Tf~e``U}_);P_Z>gr8f|RrMWz9mt59adSciW63UB zKUktrvn;O`48}t2F!~V9&3XwcSG46Rd1iM-q6P1RX z?-ECYQevjaP+IqDkYOGZ0Ty?B<1W$U3yg!n^9MZe`eH1?$P_I}GkOjxw4UO_X8scv zN$#240H3(i!f~4b08bDHosuTW9y!QEGg;2b{5&!lk>`AX=xaTRo&5DcW;=OU%1ici za#YP17mu#^ZcuH~Ps6u|t)7i3N&_;pau6!MSz0^EtPmOCe}iofmm(>p>zJR;3Z8{+ zEn9#9%76d>00Ie6000DL0iFmgvJ+bX0M$$O8Q2@^xIA~*k~vwrHsJvpE-38dmLnkX z2TKaogksR~>72GhB}8IRM~~OjTL{grefB}Q2R8_c_T-|O z9-17gkt>NoJ!?hS8{V*Lh2!EE+)jszf@>fbf)|Bv~hv+0r6}^jsyMV9NZSe z6m(o|7=_Q{4^VcpJ1Y%|a?pOJq-`je5Mt2GmPZy{$|Q$r>kqg5+ipjW*E#?H-GtAi zc1C>LE|_IArjz~#z}`aO9dwwAX#{)clQUcqG`N=}F|W zq)Z=~6-=?;%fd<%p;1yBD3Vu$NSjh0KyZ)&0JVxZ0#q3NiOdT|-HoO@D!E&elZI-Q zSCCpcJvPI2qZpW%t=1hnwl$}^1|2j14FU>sx?WgXxUtjVV(?4D)gp@!lYc0rsgCWmE zbhnXG$FVljaa7N6nL~5zK3!!>xzibnRHDT zewPXKon3*-HE~KHH$d|RX7*Hgl*p0;{6y7GXVnNYYJI@88a>NsrqLrAbEwe2FLP!< zFH9J8TG>hgX&cKZmmo((u>X`Z6U$0jvDg#bw8gl$1pL?mMBD*%ZMd4m4rUeHFXkeR zVslYCv4b{blI-Iijli>nW`fCTDs5qZDcAdorv*zTM(GPOQTr=h5r#78HX3D$91y+J z(A>PTl!gxC;bc*?s8KDV6Zu}l10S`E1Ung(TUx}lP`nz(3m5^e3}!eNZ-KnAq;6@@ z$me1q3;1A%IYgp2+V^S%HZHRS7&duULUO2gikb5_>E#WU0NBjcxm>1Uy3J0gM=Mx2 zJkrA&JTN&*KhVE6e-v~|Pv)G=?H}UwNEA1!)+7xZXIlVN_@qr^bo2lMbj}C>G#~%~ z00Idx000x`L7E6aU<$VY00RL|8;+e}>yf8@I)z+FCw*@&vyG}Lbr(PxiB+Y8G!nV9 zxe`Ok@8v{@oW&eeE0xrZwInz`TKNR)7)<^z%UZzO1K9_gyXOb*;%16qB1yk=m0!|9 z{Oy#)m+G32P@C#cL%)j&w)s$oX#gBm=_@6&9L8waQL138ILBV^y+I3Ih{N|~1huX@ zIu>(LY74(IVtah|iAIFxq{eUl4PYERV=Y@)E@WG5si_DwzFBma2CLm_Lj{%q6@0@d z539~tj!=w81ftRMKvtDKCL>SGz7FO8zWW4R~I;g%dYBo38Gw zI8me2JBoQ!4vQLtp55qKJW-qHC2mC=ak;Ni5Lg^*Iy-9quFKW zY0J5^DZr_)%!8tqPvb5ssl|jxmsPM)_d0+;3YGAjTw|2Bx=*;fP6%!XknB0+5hY{2 z;G7qLJv8e_GP?ef4MQt$wg)`?K+69SaTL!KE@Q+Nx75U{seiuq0Fyv$zbQ*$#xYG7 zDFi<>9RN6?tbJ!L>Lnq!1h!@_wcsjOvPP6xHZ#XnlUbTLZmOFa;^|0#wiS{>*Ebt^ z55wn>5tmv0tEj8v{5@`s z+;~d9{MDd|3!^h*#7}l4m2Cq1%(!VGz*CFmn9Hyxo(%*>|Op|R!mVWk3UBP9cKey%KtsN)t368tgJpmY&KIN zEFGCB#o~n*Mp(XILPN4)sFBf?mkP=e8xkWDIR`zwhTEyPf zvY|SOq4VmX0x3YvDlgjAx!qRigLcqYh04kuxqG9}pp$Or5%hHqIlg*DN8a28?IsG^ zrJn4?@AJg_vp^wc4Pm3FEHR~lk!CI(9o#ty69nHktkgj?8!_)=>{h{0l)cSGvED$l z+uL;s4AF^E75>o9O!H>E;88?p62yFzz744uO0pOtU6^^4+sY${{%FEKd5k3dt zn3a0`&CFlFj4WwyP`<>M{@!SNJOO+Y+_@bN9|C$SHfOeVDSbO(>;euzcbGt+);mGvHL7 z-2j-~7zQ8(YmyHou+;sAY@u>WK)*n!a?<*V&BY0Ss=a>!cH2Ixg~G4rA>zp!-PMo< zt%x-(yHwqDrWGs>^9qLiEn%{j!dnBX6b$+c7UI#R*~z6Yh0b6yT(06R?HGg2ZBg<{>gRQs8Ezux(ADI16Q(n3;%wb>&(t_ z>!-0kQT$flZ`*Y4ufBW;ppCOjo^Wg%@ctXet_jDabbz1`a0M#8_y{o&<%cz;sIg&` zMv-yemq6g}W-TFJ6iyu~dUneHl+$Ut1pRV3I-(FlC}Z*?7fXUoxW(w{24B?)uvF}j z5=>WFSH5RTj|@@JJT%r?EcbLv^>Na96dZzez$iI(S@5pN-J9)usLc3ASwprX(p)p= zyyBM%VEtAB)s^qR!&7hy7( zsEI7NHxvC&!{S?YtUKuy;f#kE%wdCgq=GG9I4D%WT3jF6ILUZ$t^=MdCS4q|urXry z1&P(izW^M$!NHE3lh|sB484-YtLGf{K_+?({|pf{*21i(nP&m<@O9a3k1@M-7x}^z zk{El8nJ6OVak79PX)rg%{y~Fx_!$H>7d{<@%c1m%j|Hy-e1w zmzTV+I$qhiHHd_*<4KM=_)mS8$dO66fLr>OA5QrGxcF~o*)=Y_jJ@#yDh#bVL4M{$f~~S( zl)G0)!m+ps4R)or6?2n{(~L%H*KAB0NO$)=fBA=eTVydHVjbjidDPVlJu}M5T@VyD z!}vdZC0-Lut(hXJde^>%|t8tEi-C{_E__u{qP(?PC$lMj81 z9iPDfNyo)Gb&E77_v^xRWMsLplTbuDP;CHB z%w*VrHFJ`Q;d9tLz%fF!5_w(q_JZ56tRTJ-%yv%Z_$ClIk{JjMv2r_D`nrWT=FZPR zr@v9gN?io7ZWavubs6Xyj6 zsx<6X=zhgi+GZs&ALX!lB^3w;vgmngMRj2KIQ0S750!kX7pY%%d{4lE`vHl+T(zYTK=YU8U-$^qqUV8SH+}i@wt1m zhxx>HCn|p$6{caMf--@VfZc|^MjEifEc4D>YoAX=5LD}$_DOdeE0g3ha{W|4XYM&L z-3hSMmOkKeQ$sN9Bw2abzmE4_Ux6nXJ^_&#DHDZJaDq)tQk}@?QS-)HH9q{>uef|3 zTIt_yE6nPr4e+hsd)bj-n-lio%E=vvRsxYNOzk+D@wnf=Iq5=~70=HG#rKxXJT;%R zOrP_hPB8ypKjBP9v_`R>3h+A-ehZ#Fnj`HnRN+}}xA;kYOLae2gqLfUqDif16_MI<$ZqtmVTSP$_>(pBFiP2=pD)LX? zS4qzY7&HZMK>PAZFzq9|dR^VLL?{4Z&zlHS%Fs&CZi)a}(Pp}|Twak>RWV_&+41Aj-XP=?4H=8VQZigf)e5l_*%b={mud`M0w0!PM z4)sOaDZY`maw{VD&@ZXhCvL@-RRJhBtLf|X>E6^bn^uvh?t6^gZl=;Y|?fl&Gh(FA>x>`MlR zn4v>$pA;)Jych?w8356t8%B+Zl^o8|f*zuWxap$Hwgc*&57dAA%sk16kG+>Q?>&T4 z5ULb~&w469>);>QIEl%|fE}vf-tKhzv|yl>9?x%+%Y`4l&4Fp1n{dap?eur>nCbB2 ze8Sm^aFll`=@f(?m*LhmXa44dsB2ZfDZ(iCx5TJT33<6qAN(953v7Twco~o|wdk6H ziXC5@D`5K0Sc#8L?*`}j^K(~1ijF6ug#1KX4e#D;X64G;vpcmSM&etynWy(gGioqO zp81Rne@UDfYDvZTdsj-(??ZmVQzxHHbPkF8Jllow1&mF~VgJzT>Zg1fUp?hbW@@TD zR;sVIZ>;6WDWleQK7OGB0%hP4V=wVV5HShyb{q#;&Tp z5u}?i834ie$)wuU3IJ5)osaL_dRL_VF>s!ZGKET)S}aeylRuVh(`DF|E46x?uTdHl73WB_HG$h?Fc-bw^sK|9NKI9! zK(T%3`SNLESZqh?^wjuP&I9cKVmhlHTPlWyil3agA+-kNJsZjxBVXH}4a{E_`e8`7 zI+9YxjB&q+CBvIF;O)J_cde+YUWz<(sH6%W;F&tu7l2NI(ZTqoZ9@{F;HoavF89*p zE9+vm-a9IeA0lxtAwTu?!o723&rKL7hv8L~$4~R>%Z5;HU%Y!VNX!bXU@SsM=bTB`Ef1_>Zg#kQAXVA0_zA-aH_#G=E7$6ei!ILYEt98B0~Nm%Z6hyH6{IIn1}d zX=u~}yg{0u7%Ymx?_&7=q)DGfnk8^m>0M(~XAlYQ&lEtoC}&jQ&nh+pbW|R3xXiTy z+07>zxp9^|GE6zvtfesKDWuaMW_z^t^3mo0A0w+){@BF?fcP$6K@p%IPGzY*lUfYD zqTAnmwd&ag9~c}sKOjc?i&=-3{mUQ(NQWq@2z!ufXnFFIwzM96J6>!+P|>fr*@O;B z!;~3^JEQY6v0VPe>9OYfM{YjLwzQx*t70za4M9^7R*azm&|Qi{=x)VvQr;zpBmjtB z@HRet-mFT7sGOy&vDw*rGj%X`F*eEE!9O2Q`tiU2uBL*Y7oqhRTMR#w)&A<^K%$*- zP#WG|zK+`h5JpS{pGLDFLfJpaz-+ue>3y)7{Xqgzb# zO)j=}tVkW|sB%aI5&Pc^Si|lIC#NYKo69ICq)8Y8BZ{BF6Ok+M1q4CAjK!Kn#GQ01 zKPM=8+A1si*n9O2WeHevk!YiL48!R%as$7Nl8q}_9N;rz0Zc$=XXUb!E{&%nVAC0;Xz zD*CCNC_=D%T$wH!`jk09GUi0l0i(g^vyU+tc-KY3J%7?B&~;8cg`|pCGh7SIJ(-p` z$731y7ItU;vcG#a%oSviiR)etaAU#7R@vHHMn2Jm$naSHrOiYN0CJe2Gs!7SghaY| z&P^7DG|j=%m=o6>f#>MErgdI#9YEM)s&u$x^t`z3<2aZ!`f?0cm$!qrSP~LxnPA?+clYzw`#RX>t+L?P%B*|QJJ)e_yA{nJ6H~P!dE2dKoCx@-giH~A!n|~)a z6+38BxAh!RG7BBVaEbo^ARw|Mki7U&_QC6YIurDVyozDDKSD=+{Pf4P1b_?K?mhhe^a`ZEUss|(6tDtH9t~w^atEn;6;B#m{pGp|@N>}_Sp^3Zx zUUG}z76B|d(RD1Ljh`7#wg;h*Z>}|~0Q5PA&O|GEVa6jvu6&?b#$wtT9(1q(zWi6a zGBsjIiKII&+9q?&(zg4DS63+1h-^WB>4RJKEPYvA;TRMEyr+079qIC4tWMg-x`ZHn?uA#Mbbr)ZB1SdF~WeU4V`d(e5#RW%n-llSzxu3$(*%z zCxoV*2 zbcD$n1|jsLbD{`QlTQpO@8n~15~PH~oB0a1_S1h;c&2HJHB_u1R%?Hr-qkA}@w;To z`g{`&!kOCV%Eh5g+rB){=LnM`GX5nV_|EGc7@ax5R|k4QWk5>W601CfQ#lRlrDAD( zo+tuv$PXS;`EhT(5ZMIKa!5d(K~%S?U?;pC@45~OvH*NcF*L;>nh?+{p^o7EVmgeG zo&w_A`0R_Nq?)vtU>zzz_}m(GM?p0kEYZ>cDL+1J?iV}XafmyXVb+rM@W}~s#p|Wq z)oCxWvD9lk%TOpsJ#CXosX#R|y7=JTj%s{);^X(Ba2O82IaK_0h2Df?S>}xIv`ZXP zw+P$}^n#Orr#^-vE9TjXbF+N)yqiqv>w8=q>E{}$^9VXGz9i}I<-Q5M(FezB*6%G8 zLMo+eoU)g%-qmarAnV+BkQLA%?H3sOF!Jr|;M`oT0VzHf0f>_XY3trduUC3V?k`D0+onod&&-fduvk zWZ;jkgEIb(7^_X^@VtGei$g8tRdZx|wxGgNx$!JkWnWdK+5!JzFC<<9)wC5Kr2(Zj zIv&n@7t-$LYhM`FS(+Yi^pgLy#N!qVY-IZ(oWA2)4A(9CzFu>q4(=SgJ>-W9yr^#f z54L3|m?)d25#xwP+kjy_5{cyWTC}+$LQQ{}#km{}q>K{0rQ3-K7%x>~Yk2`qm22y5 z;Dyw85TF1VkN^Mx0trw600cJyo(eg#6I%cP)A-;zqWo0PD|dcKr{F#ICKB;Cb|@J% zKj68vN=Gh8dptadD4&eWsTQ^PZM6f%?)`t-rM*yTw_v}!pu7u7IaPra%8fo1QoA(* z&Iw7WkXwiz>9x`j4)?%OwI7AB=M~1BH669J)JM<$@;I!XAqc;9*R$+*SeJl@Jorpr zde)4%iJdBnA^k_}UgE4Llz+2Q=GTordR!kE)}2$iWa7td-GRs#R@A9ww=@?NBuh;D z=2kcoTvE*R5>5s{cysZ@we`gq{$Iq_r`F$gY)js^{+UaCY^SD0#}Dc)8m2n{EFFN-7(JS&Rf$6XrV@c8d-dVxV`iN}?bbcg zebkdW#F2)RVj`g#-|yHK$^_KVQ!mHkzd!oD=UHPt*qd{B615K`_ zn&EC=2Z3{$liLIzY(r9&q@M#q)Tx}rBJpi_Cis|XvnAeej$}hoK~zdnp8LYBe?Q6O zILjq~jMuO3)8)=9Sz(`EfWL0jl7XHLQr8iY!saLL{@zZxDS0Vw4@W`9I~t{rwO|lw4w)?;7Ngb zWvNzR)UNM))m>VyQnBoiH(3!fBT7$!*TojP-Toue(g*UdLv@v}!;W8hz-d+P44Tqi4SGFf>Zo36FeM7vNnR^(!yVk1jSt6&YtK)i3*d zr{>q7Hsp~N>>VrCYMh`{R5u92+5^mFNSkfs78LecJLGt1E;pA*hnKYl9+}6%VQ_(BV5o2B}SX~f#OIXv>lL2 zvcg1C`8`%Qnh8efS9EN1jfRsI)u_3Aw!zR3(cLpB#3`(KQm<~2SMUe!g$UtZ!TshI zvw8c(wn5aVrp^->3js;723nT}=C8bY|GhTk2GG5PHj(MI!Db`rDK*wrRUg|;=0p6&|NapRujoXC0*v>s>xyTo;2T=WDYb zWVhS^2OIzZ00Ie6000C60iFsyvJ+bX0NwnCnXUp)xgq&QYycoE+QUG#pW8hQ0Ru^G zSvJ0Y1)x^oYy2@jih196(B*2{$#c~yT6GV_Le^EW+$wV#32fP}fG)JwC8&BkF$XoCXZL? zV_tFA!-E*>(VcR&qn&_L;qmam@8r6{dRrhlg#o7^TKOj-uRVt+*nUYyE znu)98ldeYVJ%sijD8um^-A=C3b?BSCM?v2-Yxm_$wBC@J7O>C&IMu`ODP3ePm&I+d z5&aH2vp%QEL=;S$3qO*neovn5gxM33CNcTH&44079!1xcxKZF_+5IB}V>S8|HZ*f+ zq~J>e)fF;Yr7uhy5P^_Xf|N z^6qQfD!VijZ#nf{u@xA8)^LkYNF~T z{zsMz!DXb#=`#BV%!lM!fZyqW@_fW)v3ELk?ArYLo<7LFL9jd6C2^~5fUQACLC#Qp zK}Ows_I3Q&w2SJYLDk3pD&5?|&=z>gq#_3E!T4vccj%fg?TGv`l~%V3VCndm2KtX@QrvL;#fAj#U?h#otV zsdKjdnb3`AJ^wPc*JQFP;Y@3;9yfJ?+LnqGg;5{c{b5`8 z?Uj)OrzOhej1RO)ENfD7U#&ek5JMsmV3`Fu)o*Ad=SpUzd>XlbZ32cqRf1^HCuEx- z0kZ%A00Idx000?VL7ECsU<$VY00RL`bfnuby8IeR3cq~>yu4pI`R(E@w89Fw@b!xz z7UDxe2{AF|I&A^%0x*=(wj0O13wDX+lkTKS5VbsGPF3>xrBuNj#>)mu1Uyi}GDwEK zZj-oRnLthh>2Yl@Vs4TAM`XnRQ_FVh&n5~Ec;=oo7Kf+=$O|E33d5TB#k$0Tp(AAf z{foQ}L68lF)U`=EC_Ff|v}@7_?5wTxGB=#JgJyN=#3do2;=#SQ`}q&ool54#7-|@; zIqnO?Q}iWB9w#YWUDuqih-TvA^^Mn6%hXN4ok;Y?Im@eAn~#NBlO7FGc@%>p*ZUKTPXeg9=H@}PjK zJ)B{z*?1nU$MaXB^z^1w9u`DSx+Le211^i}8l$n?|5UNf3`<$17{?w$g*CSzjzAuu zc8N3N)}cOa^e1S|VgtyZ$H)Nvf{oho>YhtXfrqW#PqzYIHJEKV-mqeHRG(aVI}{~f06c@$;q1LoJ~xn?%X~Q(u{cGmjaI{grcLA+GV|tMvZ1(+u=GkD#SY6NS0~w zBig07imYERhgWZDa?g(y3$Wg%P3g6{bVD`sZ?esRxl>;)JAQndnU{k;zS+Q1)*l6B zlm(%gmsP8&6x`#*&U@aWwJxMUp%f{OKSv8S;z-%iuBRD^5mVVc@Ab&N zhP$gsf_9t_0HvR!!($Xjd-*cYr}jtdS5lA=8J*KA8b{8OT6Ku&r0juu28)yW+9sv6zv5*L$==gM190(ZgkI2n8i+ zepc|$LoC?cMzLwx0i9NDF3N>6R2f`eAFV`I8Jywdo! z-^a3Fv)H`}9YeCjPTcG@ikw;a}7%+WhAmA1Dct z;B7lvwA(U&TIg(BT8ZxA;J)#}iy>Md_)xMm+z9JBGA@6sQ;pbXi*JG4Y zh85T?uNS~ZgdTH&xGbXI+vzQ*T`xa^#n`>hCAufwPJ!TPnN|byLelf<#U`?>_|8;p zm$33u5^#%!t^uQ%lR^XnuQa9)1m?N-96H8ONWcD zN@dk(8`u(iA^z*#gv}ta`D747VzyXRv4uuxnzRuJHX4J=jkqxe#(N@NKHZ5ABc(4h zYcHpsN~bU*s^k<%ROnnPhJJP8$T7j_sE^_d?(BBNq!oM7f)&jZfEr{=y&E2}jz9%wX(8Fq0{`cE@`TW4}S*Y=A}hP|U)M z{kZGZABs317^ZU?(a_eRNd-)+Rd2fwtfaxj9iAIWAK^S!!8mAAFT|}7 zb(-TMy9K_ZEp`oaP)~7(?vTO{^`wCNH7i;+kRZ>ogb*t~XJ{Z-3x$cEh&5==%BKM* z**T@Ed`wGo65mq+pi^9#^hi?74!^Efa=;M%(K5p-e1KH0d|x%xO_PP=vK<)@t=++h z;1}p(DUOL6q&fLrnipbnCR>9Wmf$Kb+IlxETvdAybsQZpv;$#fdvlmnP)hY5wbdn@ zTWs_$N0|EtWUz?5f+q1YamQXVXUd5eookWG0~T%;I4CmZP6xM!St3@GT-y-Sl`e zg_YSi1fUy0_sOE4rCaCpuK;b5j(*Fza(3!OldK|^T1NzjxuaKMW9Z;(%8JDz+jlZ* zzol;(A5@qNm$AbNO<4X;YK3KS@f%c?X-~EqXYROHz9v7p8`yYv`e~}rPK$R|x9KblCEQXPoB1!>% zPk=Uf1UVjN{Bj@9F)GTN#*a|wq_?p1nmcsn;iY{Yz-n#exXg4&0zn?oow6<+_Vg6{H#g zsz8P5Vem}t=aA#)Y38W5n)Bg2$Dg;)O6Bn_qbTAJSW+=mzF1oE?8l0 zwbx%Ok=w19IlkD-e+LN!Ku_{*=U*7l80?M;$f9k#&Z)#r28F5~~!b_6&5oNM{S447z5{Bxqkm zjMR~@mnMl1JE{uLBMc2Ns#dw0j+pe#B39w#YA&9%qv#n_cw`(Cvgz6X z@90@*R6u9*r#0-9zgO3V^S{)KKxQ_@_E?_pf#rA43<*?jXx$K7BpV?WzQa85a{7r_)smlcc-Xxd-gtrR9nhdyO!Kmr5C=>b~u#`}wd_ zSwd-EmV7tLAq~HhKP>QwL`@WC6H0zvFlUlqIt;ycwWYp@^=Z@URUAUnXFr+DUBV`a zfs_%$DwMcyp55FGm2aI^`4a5iQJVu?hqe2sJ+<3fxOmhDW!_&m^DW(W-id*>7P<>% zT0!}QmXf7jCo102)Y?xsbp+D+sP+Kk`E2%r9AY^S^T8Oqc_yyE%EiM+2+%g#)K(sj_uIs%zA07H!lE6D6%L*>f#~yuhW&P)gm36!pYEzQ2CA9#U%`MD7BAui4;t z>Ksy{r-7VbMBhqLjh`aM6J>*8oB9(Ss5o*rLK7XEZVMYf9-8CdGuXX;DHr4s$$53& zT|>>Ykev8)E7_L&{P2p4g?^^f9Ym&5+TioGzmJ9-X%wl81k*m(qsC9Q7A%sYONU-x z*gKZr&HK;{@1Brx8F#eQrM5Qf)sg8~T>-|w$j{p`Yk89C=Ie#PSt1P03*s3xe>lVX zUR;yCnablI8f?KZT5rQreMMLtC%DovpvCK{-rVwU($3Zhy6cA6Cb^`@)s_|Uo@C#_ z@-7gyTg2h4q+`cn27~b<2$O5|{jKBXdY|zfXG5@juxBO?eoR?oXziBkS4guVM5s}P$=H%koe?A~X_K^Q4pYD69&O3%a`0I$tRI}15qCixw84x&E@cea?& zBq*IssK4ji_}&bzl$`<2I`aFB1h~L z=S{xKX~g*6=@(iCv|KXYhCH+SJ(PhNmqt?TsJ@o9W+4|BX0J)2&Ik7Q^wyXP8V9Vf z|GwhK1KXcy*+HaR)sQxuqz8aBR`7ldo!!3pVUeDerU8QriD_;CHaSkyM0Vq%fEZVN zL4#4%Bl$Gn-^Q%2QKzlZSx;Qrg^5)mPW$tSE4o>H=0`dhcet_nnfT?sFaWASOt={A zHm(S`O?4UyJl1}8$)pk9gif?`v0j`Y7A7<@ah!%TNHx4ex!f1Gj)4xqnNQlXM%WRy zdo6|iT%ngTJK3|cd)YgXeCI}{H(YQ2<&R1L0()UzTQ&PpWOh9M^xs1q zdY~XgO;B|PPo~ig$|aG76KdQ>vcSuMMR;?s$Ul@KT#$y51~ODZqcUTKvy*_PU$#BcMpziSpa zwlaDI*)D%MytG#h+ews?4!&Wgp<+C>vErL~A7%fFss6uC28G#+j8H-=TVPq2tW40C zDME>i^A*)3Su&M{>p)WQ&Gf3X)->igN;JE*61Zos=AiIey#Wxe#~r@@R=$vQ6Vs^_ znIarg3aEZ6InrbBV^up`6_ntpY3Mu22h)_!`T&*Np&XROmnXoCuL#d58g?){k%u&; z!3=nS7r2{7pfi#0Dh{F-k@o-79=Cb93p>N&FKJxM>BZqGoKUy`=g{LE-n~T{Z<3F{ zLMd~27*g8^t0qtn@IrOIM%=#3SvB^hB?3W+ie_x)pNWAnnrXuxFOS(D<2pLN-tAF` z_cVmU%D_6X1L(f~OeGh2)RGq5A|TE!eb7R1Y2fyo(#XjHnag-ni1D&KotXjPoQ_7V zBLkG$qC02D@O1SNR786J+cQBeJI<(`-A1#p*Z}DXJw^~Wt5ceT z<%vuoftlGOR^)t1X8F=@*}G0gqo#)VXMC;e(I22!6)F% zry8@t4E$3;zAj%M)VZ9z&$$eCudM}O;l?acOy_TAWDKv_hxsnaoW!|$U`qoEE5%pn z%_dGP(7!CD(TwckdO_*B=)`DZ*WL1* zvO88rJF0OMZa7+Rc&Mz(JeI-||J-g@KPb7es|@pDMLLHd$~o=s$`Mu6YTOy`CPd1g zNCGg6e`c4bQbxyL!~FI2uA!#XK@-W!Efaf6H!Vb?qC;s_`740r*i*IQ<0O&%@*^0x zJHT0093t((7FYlQCH0yzn0bM>F~b0$QK^?tgo#chH|^2h zu5L+2?=K5cx|y}fF|qrl)iw8(v?Ogm!-p*^(@K0q7$#*l4B;6_=_*m#r@c&4IkNy( zlgUs?)J2o~b2pmcoXv&DBW|d~liCsuQhgCtumCtOLaWezBNm7<03>`NK?{D{{l#ZQkDYax1L0@r_htuDGw8djlHI%P_ zj0FDP>qg3A(=jo6c4=L|yz<@SC!M>Kjv8@sSHn67Vz~TxJIp{|)`oC=rN-{O;90%D zPi$xY)UUCBD5D7WisK#kg$^&3he*rcbBQAxc!@l29kC30gldd>x{7pudr=0#YNE$3 z@k_)5JFn)k;QRmdNU&ro$$^6HyiyMA8Pbk2$OlUkC$>K4F;aOYwEQ|$<(I-&{Qw(b z)q?;BEA_2|IYS-*PjZ1)FOtohi227~}wBaf;(B-(d zVh3e;tcIl`v9Zn?6y1rr2{C-xClU~*(mFsFjjp(gaXLLH27kTq+wv$F#LR&jFV6r*mz|U(>8EaZL2RTxpuxUpjp!$+>0Yiv$R()DwMN zY=~+z!WRoadj-NNB8!$PXe$H*w*Z#&jw28QU>DTXeCSZgfYXHS?4#HXj9Dtbpc3LK zvVFo>zI~kil_Gb+SpjTwy3p3m%^N!pa($9{p~$-Di9%C2?~-1H7&uR7z^?iyzlb{Q z)HAkCtcutRr!<6a#hczEgCCrNT+&;SVEqH`Fd~npua&GYSp~uc*m0KY8apO<(H6vB zrz(Q-;mUN^+;m{IQtt|4w%v6nnh@mH>=Elph~4Z;+!#>(WE83|>RlZwU@1H+9JO9q z)QPn_2`b07q0&yH$dUhVAK!^$lSOuqh&lzwwhyWdmvF|f<9-!&tn;IZ5vgd)V}TibYZ`o$`PusCP;x3AnZ@yNnZhu_28BQSjgh@*TKIj2pMj=w9YOVPW_Xy z*JXg;=(cNr9>HqaRwt({bh<{dD1ntj7tFcvM|9f=NzjIc=Zr(F?r4q?C>>5+)Nw5U z06)M00006BPyhf0q5+-^MY0oH007(O9BGrGA*Y}x^GYM_NK4-QOso*4No+Ytsdzkl z3(qNXF^T-%=b6+d-uo*=LRpXGi?*PbCqD_(5MuG}oeMp zgNyta#5lL`Y7Vg$8<^%yZRFQ|--d+Yo=4qj-A{N0luq1_|Hqi)d% zW-?Wm!)ZP_Er?9=W1WV@rnZPs`gjrvZMf;!+pU)FNOX}f z|3dMXBI|dB9&81cYds{`ohObS?%ZpAQePY%cMmO0!rVJ%-7|!y%AHCn&mYGteOaEe z6e;%&yeEaro~>J}uAGPPx9^X=uWgGkKNU9Du#vvTqKt5L>Evp)x*ZN_ZWSt3Z4Pum zyXxRxRyqJYl!T!n_jkOxSBj_T2_OcaAr)PyboQ?^VrMI%B8pG)r&}Tq8D+}puuZ?Cv)+FIe>V|5gu!UaSB!VvJ_@_~8>aFnhVI<#?JusT z$dQF+#5Y<9JnPXov1v!^j|&t}A82Y90xp7p#cgm_pm}p##a#$bcV8}NK+0~=8j5C^ zXKsGsD>VxM0?kK8A#il)ts47iWuQQMHAVCt$G)G!R>;=ohia*^9?#SHJ@rD_wxq4t zg6*&+LWw9y=?5S$qY`WjYy1&050QS6@@kG&r5CE4TU&W2mBA9Pa5e!pJvnaNC z6S8?%3yG@vj{iMi^!w%3!oH!f?wL7Ff~z}jbfOisZ)tD?2c)1m*iG3h!08|1-%#5H ziu$IHZ%R9k>fRd&MyfrW7G!NfS(c2;`SrM8$TeAt95MZy(&!REK+Yp}Uj-J+F2^_8 zBlsHXX`Juxnuw7^>^pR|yl?UFXgztskGujmbn(l3cu(EwyY@w6WLz1vc+Fg6=xEWDkftn zu4fxEOxx`oE*O?j=`-AHNn11>qX;cFPc}OPBr*-jj`Yq-jdEd6%>Yn!IBLk+NlK+z zGueSFH)0-mPmas`ufOJaZTXvA#u`r1ZhXdqv%)XEaJD~X9nA@uxFdi?B+4}P4PG#O zF23S%BFB5@uk^x>qv6BmcmikI?Lj{=+chT_;Tk$9e{%1T;(9@c`GD{;A`1W;y9g2- z!TzgW$bVlCHb?a_{BmdhcMJZq3|_Iq;QHTm_5lq^IGN^Bps8Eab2@kLgzZuU00+zf z0006BPyhf2_yL{_NwO1L007*Qs6=AndhH5g<(k`*G08s64}bVxqyNv%cC2QZ_b}^t zXlkkzt)Hh7Mxc#GEo&SMDWmwD?y^;iPpwG1=D6#+i(t^3^FqO#OavbQ#ssof2zy55 zJkfEgR~^r4!tl^Ao%djj*fu|Gln|ugD`GlhUiXLJGVvAV=3ek9g8hE%`f*E>c0~J} zAH@6E>|~?3m|v(BhVa&?neyEa&D3~y1$*G9_y_x(Pyh*F@;WDQQ&G{q&F)#9sAaY+ z;!H$hYMf;oxdyyBi;`}Mp@_TPo#i4boG0@}gH&MJVW<|3MxIFPVo6!n4Lp8uhJ zHYIJABQ0BUv(H@7aM)vX0*&;S~h30n^RCIRXw=JNtokVLj-uMZaMJXr24 z!(bxk0u-a;T04Ypb4dZ)Q>;axa8ikZsoI z!mwios;BLEQ(S#;)d;xIjTuCUEbQLhhE53KUO&h=I8ane4o5zA@~)?(S~iLI2V@vd^x~-R*SagId_)N$)U&qp%C_*h`z*P z4f$Nam_`b$C5H&pjumnd;ISt~M~!;X1AdYjxEgj7N=s12TSLmemh?uU_6qFL(7sIM zeNexX3(w}AWm~J-Rnu@BJO*9*&B>@OqH_Bb8o*PQir?76C)r*nvfa#7%V0f2%Pk0C zo0=Jr{?w={`hfPA)NX9T`AGu{y2)e4|KGysd#IqyIf`%RPFY3`27MUC-D(bnufgxC5Gw7Usalf){T5zbBa84ehaDFS~gYyF@69jlBlnVLT|5URw8-Tb3UtDGRh?b8?zh=3T#OeYE@CR5{``Tq= zgk5rPGJhoT!e7K_Rcw?SdtJ^cd@@8*O7&jmW=$;00Kh;$zhW0sS=qg@ zgkN63;G(t?^FB@e=xzrTkj-xN26U+p{%;(w((K>gF=h8##F|jhjvJBpG0y;=eB4wF z>Z)&jsOEFd$Al*cYCZgWe#x}SFn%XE>6F8v2DZc4o|``l&?iAml{@k7u|(>mg2$_R z{jxxTg__V^{999!(5?!k=FnqVCafPai=#dmt4gxT$@s5E&=$eH8T_dE`VrsWDdw7M z5O@pl+Zd{7Zmu)!te*@p4@AIp6mJzL&JN>?;6E?Uea=#5^VYi z_wq$-btIe)ncZP7Vr8KsHMkS)f4$*`Q6;z0dqCa^25_ZMv!u2&;eQY=RB9n#j-rBu zO>1rTK=Ml}T?sxvG;RKILh`w!7j>zUw+vh5$8EhkSG9HB6?e7_aZo7jhN_?ha-agB zs3Z!mfZL7J8V&*`GwPKL1{jq-c_7_F-cz5H_bSqu#_Foq>4LxCpB@7h_71R#H@R1U5!G%suV`- z=E{p=NJ4ea#cTi)F)oQfS!E1;q;62A)pJO!hG_0ivJ@Ge1_@t}V*E|tJ1Cql(hqtq zO5?A!zf8wFPn88Q)#B`KnA)u6$lzTzbqH!{T9huRm@js7GxBPYafq7jjT#!{+)2*p zFP!MwRc$v%O~LM@_4yVm&c!zkD12+yIz8lmj)2(=ef$*<$TcByBXk zeZg!5BGMe8RGizZKuqw*qcd!qiU8U2DE^;Q=n2X5SLL*oj$Lf!*EO)#?Ti+gqq{KU z@85>x#Td2=3|SCR9vaT#Z^1j9PF#$v*Oyj{0ve0(89h^ZpYl;==Fb=!t)-mp&%I9U%MO&x-k&N&8KH8>jW9((lMXhBVIG zwMUH3MgC{4Qb-uaSm^T&>TA~PadQU~d@*c;qdq*L)h_VRGfQyFGpvaIS>xjkooGRN zdHwAKfMzQ5FKg=_8GByZs--z`Ep#2PlFCq!Gf#ZJ%HU=@CVz3c8G=4ylj64z@me;A zDV@JW*{hB8@xnwNUSFvOZIM+2urL4sBj6z#RPB|Ph=S0Va5NZ&Y_$gJ5mhZB2~?7* z0Eihg+WKA-BJ2q(zu_uL;XO4#(2BOpaj?lG?0D<$Z=vYE9!WK#|7+O!^UcP}?{CIc zn)qU#PMGYbtmS?&`j7S>17{^jwh|SD)=wU=E%EPWWNRJ@Y#sW#136769;m&zFcYWG zzDQrm?Cp8#2&*Xdx*96pD_DV#dpVi4rWb+(v9OmCsrWmCN%V`voWc;BmkYa>Kk||w=gtycB60mQW*1jzA3p3ShFK+=dG;t?0iLafhz!Zrq z0%0JEabRl3XyGve2x9v({9Ha0Qu8mqQZv&E@->CEd7%5jWTxx>o(Y10#REiwL}2sG zih`Sf_C@uc?l!VZ3;x+>e*z+&DT=i1!$c?!Psa{NAsSTem8(T!AxtQBOsF$(RIo}# zURZcJ)N{%s3C%YZ&bqt+xaG9Odq*BHQ2x_oNIG7s< zEY_0_cha_y*6BJjdLTOK-E@*r*iULD(xBmB*MSN451#LDU}GpwUHNcT$H})+*N<&m zt5x5GBUKKuO?NtXtJi7I$o=OuzkngNr&2#ExiGSX5q zq9gWimvx=2yt%v|HC`%wwWKPxKigRwl%7ttyo2&+jZFs)EzpwQP({+~U zyP(|E|D*#NJYeZAyvl(*NQ7*-^UJ2)x`?lPIMfn=Dl-(y1rmcvRSK-$00aH*6P5bf zT^Yi!cwY1Z@IO7PJqn3MSL^e{F^?UngmS|Hi^WO+Sj&(3AsSS*mXL^HAfRld5rhdw zJrGeC^i|Gl4%~Huw;ap)1hjy}O;-^YJ75p! z{F8X@@ZQ20(U(V&>l=eIiaIE&C$`0lo>#hwlCo(RGwYWG9FSg*u}cgjA;m1gRN2AsQ6zL57E+K^TZarQ<`^Xc#2K zNGdAAx6QlM6z^i!ApdXL^wO3`!L9{fK3@ThtTtlJGZo|sSWy_ASmaJd8E#1KIp=-H zDd{e(vGMUU_I2(w04&G`>3^6sUz1$eaby9Fe^#Z@D&ygrWWwM`2q@&@!D!m1GaHHJ ztzY(y0giA5jAL%wiz3yNnkqbxkA*5-s@Y5)eI%j26#9 zbzhL%Nj7sLw~Lh2C*mw&(Wy-3CdUob;^VfO8p+ReowRwYt*rd^G@BkP-7OVYJgA@+ zSJ^+Q@o#l%4&|UEH`B)hErQjF!jCeh31-D^8GW98fJunU>&cm0ZN6I z%gr6jqBp)Lk$OvDbjoE`{dMZ;jR?(h7w}fC#>f1>D{GA-is;aPvE$2Xq6~!B)Y>+g z+$Dug70P-}H$=-kY^AHMVss?RlRZs$n-p9dAlmrpEeGrL@D{9D-XZV5MzS(j#Sq2| zL&DQ!1Z6v{(uBSfx3*mOt$TJsiphlFw)4&qdOltWXZ3xeD%KJi&n$%$i-reTd( zleOfkh})gWadxUZm6x3*IBmMZm_}B{uzDIh5g0`=5)eSM4rmqwMRY3700Q8ybJ)w) zpkhAKBAVX|YMPEKB@So7;JVjgU5- zfhy^3UG489o7Uv;rtqpSWI=l-(z5s58u`pP<;JG6T8; z=WdoIWX#gq(=-`L2xcB#ja;pyx2sha7rG%DPT+U|00M^K$wm;sAPQz%5fKO@Lcor5 zxw%HQhorm5y6xdk!pi8k!--R^bwbN@^0V=c{Mdh`cDhrJ{*j#iuOm_|5*&2lZmPIr zcV(gyTq>#rb>8-_WlsX|>89zLLZ=w5?{t*ugKczYILm!8HLbE!q2K~v{Iz2mDH`m| zkh47CEB;VOR~J8_e#DqgBp~i;T8GUI><$J_CMiWn(w-SV3WSvKmh^0D?UyRt3SB(c zda*2Sp=5JL}M27cAb(?>?-*94)~^ifOflq&#aNmpI&g&)XL&=v2*WFu`D`o7 z@U%08sJt}vxu%jCp0_g#8I-2KDQ9^{nFXiBRw_aOZ?QLzRxR&N;b!y%NvcJDBVVdN z0~o0b35^MeGzTEUcx+W%RZj%?0JA;_huo`ad{c!Le3)3<%1s8{oXX7O;PtGy6IgxG zRWPGd5%Z8$3o)d5cUgjlTj4bX4iiE9AsQ6@x(n4*j?h6YBgI?uVYN7&O zg#X=kE}*C()=+Y(^fxgrZ-~a7ZB8a36C7$M0i{8ds$rvUq5Pp)T=X8E-qTkgMQz^h6> zj@Ptu7(pl5Z+99uq@mAofhjC7rA;0@GTB$~ax6`aqr1^0B%669d$X}T&GxHTnta*Z z0W1VguU-%Hk?CjaZcn@1#{EWqX2e+nL`>Fg0E*B_W2{O1F?8-B8Wjz`j*B6Q00m{m zXdqa0tN@3MKHc{IG3D+*a{Zf{@Fd8qGZtNJL>?C+I#SuxBQdx~cv30K_>cEz6;z{( zM79Z)W+J_YT@2V{QyGaN3LPw1X-g&ZS@k#G4!`ztcfC2{f`guKpIy)?^~L#$lHLs0 zN2NrZs)Kc<0E<>~EcX>U3&D9r6Q-aB5Crg|%^mltJ6ov%Jd zhG|oVI{H`8?mr34;mfeM!h&QSj(5H3g`CqHIXCcrZpO%^hrgo6o%E@?rEq{HV#+@u z8dVL!ivdCsM8OQbFfa`)nk{^q7b(&R0HOIf8ei~Kx%uY{qC?+3P1Pc9h-pvhq9-BY zk1Cb|ij+|prwvLJ_ZxYaU*auHFDpfwJdoWee-6PKO6-@KP|S?1<(_nX)t!+L|nj+FEp zr>+BscldPn@n82KD_CUfo_4fizjg0>*0}OnP0+0-fToayF#++j`Pr!#F6ehlUp^-E74!1=GxSZ%2VdwO-AyWxjM{?{W?mX-B z@=8_JAsQ6*qLjozsEMEis)dDFpjm~3ToF;F7WtR&y4$NPQ%VK>_p&FNn}wD{*+f}tKDz`!kF02F-a-8fPC{rp5p2n2^6KgXs$UJY?##N?fhb^-yQ zasW6HW`I|M=f*zm#?UbKoHTeM+dTaq^Mly{uWd+?`m-=dQwW{5;W@nsSWE{cah0|N&Rer&rybKos;c+|cZ_e*yvcNyY4 z!9ywfov9YZ6((%nR4nR~|L^jP9LM9Ea?%g+=8A)dHbb^UX#+ytR;v4d5m4+}8v?zj zk*#PjA_RaclR~%({>{>YzuL)h!9g}Q=-Y7*UHO%FVY@EXAT^u%at68C1|Q`+&+2?e z`*zVvaUj-G1leK4Rtamg!4IJ!a=?*j5Meye4L z$u_DTyzrtidFgxjs!JvkdczX~fags!edaFq85vgPu*!=N8tRT8KhSk2_xn<)N_tks zXh)?X8c%cp0007x$47)RkivCbD}g*YD5`eHHoB%TwE8W@tp!I#$th~4`rP0}U zr2{3rdF2T3DL0HzRDtQ-R71Uqa`^$Bdsciwy%K(NpzEo@8K(Hz5{)>xoo)u`q$PB- zmjWNt{0EN^lZ8S3lQf`)EvUg9@^T7l~8Pm_tU~Pap@)LESUcP)vL=LO|iQ=#R&Y> zp<6Dn1lS7F&qn}3XvJ={kPu7ATG4Wq;1YOW!MRc3#03D~+rpVIQc++y*?kJ*j}dz* z%d@*K$!puElIpJ>-Q&U~T&cB)o~Q%jERzG%4<+XYm5{=`7{{d*?PUOwjrK@DXpGaI z0Jhvp@)!U#P4N_*JCIsXE1LdjKCugJfWfxzTgm(PG+YR^7YFRP`Je_Do!jZ&hAY3E zs2E2dxet=@I(Q{=Es(lec(qUeKqpJ|-;x9&dA36v*AsSC?00002 ze%6hFsF5Nt5g8bu7aOwL0J&1q2OxL8$Zgl$2kn>5AJLtES9Ffd7DVl}d;Wksu4s_e zz;(Dx_2?eD3;k7+OVXmE6!wgK`7`Ak1zvk1j|?z824>i9M3%<97<@PxuG(UEnzS>} zP$6l@P64I_Z*_q0&ZkV{*iowucFd4E{ zamO!-?%GNwzHbmm6q3;21yo|NR4J{L*T99tmuT)-_R$~BQ z0;xj4Jm+pc%elqvvZKD5a2+4Bw?dsLxpAF?4|fHvUPdNh@*)`a^t&ndwY}#4igwom zHF-VRHF80yuVwdoIh7NtkO`ri)UeA1R7P-sGOl(l@mV9W?B28Cs9Z&m2LOIks&|7$ zP9xnpFx->ByHrh=L9rVw?5I*p{8vqphOOa4YTXxG*BQV((AP-fR27;KV80<66$Pn` zh=MVYBv3W))vvn&lqJ>T=q84Vw~gZZ)4DLFJpy2NQXJy^VXKF@(Vc+NSR{Zh?FN0- zLX6QXBDxaqo3?8MvGQCE^HbK7+H5FPXg|K0G$Bt=q!XF!a23q*nQKR<>_1pOdYV%0 zeq5T70(%|hmm=;Rom>`I&RGMB{;fB1$4z`0rOO^4w!AvJ`wEL1OZK23L}Y!uYoT;k3b@9)Vcxbs`Htxbf_<=*EZg4$}QZ?bkl*ZO$fr}@?0 zy*?Ugn8~J4WBJTzJS7x?)kFe=GE9Jh5GCzP-a5z)s0IZt>~hE-RjF@Q00-B~VhrY@ zLm2w9ge8{21p{%fGB#%UaFt9lorp)LJ|P+v4W)#Qu|b$+9@&jwyw-EK(!9T* z_8%YKOgb@wIbkiGO7ee8I#|6lSOoPvQ@<}8vLJceUIzv*_4a%krxUf(Uj+S~w3cmxSD(&B>bFg0xT+apf1 zmHHzzkp`ib_P9u0QoKy@ntk@)Jx9Fniy0LS*dIeMZbN<+hOBguo#+;S5y$7F`kOBm zv7}_Nr9e}H7@dL6rOyDNNT8EK22=napGL~r?l_407B|3A(j>LU_KKzM}4&poqO=KcYe}Emdbew_C5PG6=frNsua2k>vXsp>w z{+i>z?B15yFCoq zZV7-CC5%D}fH!3US**(bKIZ~8tuC#foor%@Rvn^3T!Kt3xvz|dya_@TS2G(rmm4`D z8dVLcn?hrv03=;OWDFFkD?nRTTn1186c)@+92@`gT*BDX4O`7xXAUpmeO&c@x>()g zcjGDJEf#4v7n_xS5=P14(q6<_Xb^K$096JM0#xVRgsZXw@XkqHNaiZy(C}(_Lu~t!nrI=PQawarco-VYK^Z~3q8~>%=zxkmbq|l1uwQrRc%-2<> zXj?`bNh`UyUXsF=FV&6Y&9B{8A(Itg2X^e%TmupXK<1+o0K!lhhzc}x4S=B63xLW1 z0tTM{zT);pA8x?vP;mgTG?cecKuiu@eZDm3{f75R z((G!6=rtn->yd|%;F97-y1{@;vDtaFU7JcOl46+!(7`Rs*wntr%L?`_UGME>yl7wQ zt_;9NHqKI``Kn96vM8-oc3xQMrZ(R z7hRf)t11TIvh8))Hu>>vujKY_8w`2>V~x9zRnzm#9HNv>M{*)KVNlhcHqCJ(%qp3B){uCWw2<7V$It`})3!OOQK4@KTpxd3&uon$UjE-UG_ z_FVY!ojB3PADP<%7tEEgr(4_UQi2F70ooxN6z!>wM`0mIW?%v;Au_@hXdD6BIXZ2v z67awS%&k38=aPCKSTpH(Q!WVF8yJ^$h=mm+8YLlPLu;80OePgf>$mu^4DY9E8QQL5nG-K$L2HKzNTnv%%S~p%q)S0_rQS=jpCyqUU({CPs-cD7AP$ zy7cmE5?S!V4sbKprof@wJ-ZcGYp*X$Rb8hVcCejo!)Q)6X`E5Y!9NVDo|3{gm?p#!iyDlaEnXOA_)$vp`#+Ym_D2zyKk&v3>f`g#*I! z5#qQ2=KXc|v$o}}Tk>2lk;r||Lp(@XI1S3PZ_t3!vF-dWFNPP^6O%B6TGg~sOrq}y zb-*lIVOBI&qa9&Ov)*oT_9Kr`T@iC9dUv`xeiOd#(yS{RV?%|Qzz@M+A>sf400Ie6 z000R}0iFy^vJ+bX0Nux6JiVwVc;3)BZS)O?s?d(8eFQyp*M>}Nmbc|$;5eiL93M)< z7MJiy3ME@t!NXu5E{P*`7jPe1l6=aYh!8JadhA2nMD9Z&EGmX4t3}oPEtb6$$HY?w zi8Oj7yfFIpCFpP6L|)lhUH9tD3=8-(6{H|X7w!k`5=lB~8DI%P?H}IBT8>z6$0P4L zc2_s_tKhrru^u_dbb?(}3!aoziM#78?V5=JL+)>T@9S}JH~8jT2I;g_YBu|wf%y5!@-gjZ%g=#u_yb0ms&Nv>uVc01pfTkb0D!%-cbar1cIn!K)T>YX`#-RI>J;SX^D`vHX zLqU#)s4qh_)9Z|F9H3Na(4si$<1jKZKpKfMW_V$)?F`YL7%-LEPnb(SNtb1tuUAE` zncm<5V|T|%ke^L;DGy7gS@eHEc-^+CE!amq*)vXcYFQD9jt-kgt#8h0scg5w>U&}x z`rVkci5j)ey>p)CbRMjI7nmj%WWmf_6eWB?4MR0iH2wHf#eLd?xO5m1pVzfoj-5sG zHiL=j1Y~!*E041$gsljF9sbS-?#4!6qH}UrTUDsz48YPE&=KDSs`Bx&Ma$8=MWL~2 z2KO@XUct6&@62791{4<2olJp#T2xfue=LNN&R}#5YD+{FRueXoe^DZNp<%>ykvts;3fL&Dp*f_* zjP@9jevi>+lsH(d$?c-At+KOtN$^YJ8rIPxy9tc`TCq8Lf>FDq&%OT0hfjT5NCmQd z7{#Mbz|z)b3|*G~?V0*r{10K8N6q|r5To4guHRM`vsnKnJ5P4jey}S+P<2ZXE96X* zg-L$x*Gpjm-U17Hg;(YP;QV4pL%F3oE-M@WF`W@dw4BvDm=0XqPp*ihgYwSha9?+o zS08Czo>y@}Pm7W~MqmI`f#HDV@B7uA&jT52v_=0RLr4i9R}eEj4J{YLi;tMX!}#VM zbs%_+g^8cgsS%(dbfSR))KnDa6e9z!Y?*U;rdd2Mqq_>TC!%?_lUGOQb) zQjJxhah$k(idqY@CU})Bcgl_KS%PIMv4Di=4twpRzXz3_I7zy|bx5X@B{!!vg5~=l zn?(+!vfnY_Rqqle1U_+Hjc6jjF9KOG*xXM%bGMq*gLGl(&71;Oa!7EZzzg->a#ve} zp@`zuxx(b#%zX=H2d?!c`;06_&yqZgN~G8p;|lw#WOg`MC({~XN4pnD2QOwW1p$2B z?LqD{9LVvyi*A^*Y|3aL&(BqwLfS<(rB;!`VRhqMr2Sz$%noLy!21!WsdQC-F7eE? z&zSUvklq!70amzR0!r@#yR@EXI}a-3!-I1pf$(;VF@ zd8;~@F|Ht4INlL0y49~X&hm6q(^g$KTvJLllg7kwsGlq>fb2mmE1n=GD0Is*`eP9F>fZ_7J3sjCWV_S6F5XQ;$^T*d;Mx8jzlw=b@xFD z{0~-i?Pfg9{=t+%hHmJBl81tu-LzO)6F`c6DF~WIaVmAZm@HtlK|zY^1!Lk&VS%E( z992;O`e@dbW&1*_uet>EEy>mdiXu&OT$xG+)oJP+0;Y*dhc@JHIQH=4<;fV&yummy zhZatR6Fd}ZQ&fn#G2knLuSaKq`z3X1$2W^~_~V@bM47Sm?6SNb6$UTB&58XHPe*JCax(=7uC)c@MgeS27MI4r&s#5r#L zcXG2Ph;;4Xb6$MkBOy|`ZvX=i9C6~>q?Efh*h+)7+ZIzm~?In4b(tcn13d8D-q1^gll_fU;uK7?y##9TcoB^FsZ=Lo!yIEI+*DcZxClBQu!4=iruxV`XVl&Fze>>u|D(F|;O7 zyKP>BsRf$X9T=d5fcZv`fsfY!sUJh#8G|Dl zw2!VD_dDfwHZP-Dt=C(51R@GxntMT;&_P`0J?=<_ z1`*&gdx{_xeqrst+DPM)VNGU5C|RWgoBE%>H&HjB*%jv=RtwYs4fp^600Idx000Vt zL7EI$U<$VY00RL`Tgc!yiX2uzOyrDUN#MukxER4)_$&i5SGddJYXrZ?vYkAr9ge(l zX+LBN{t%mWd|Js>c;dR?C;63ecum{`Snu+leBYG-XX+`)kHQ69n~Px|P8a|ma#O6can z9k?$ct98}a-GI5S`)vw2AxTn@KJ(R_Tg@xMxzq}M;G&Lxl@$5--IDWN*;YCqT_Id2 z+R2U;4012NN)(b5_&nP;&F4k&9JeE`YZd+<8a}+a_gSZ=6B+83zo@8stB)nNvPd?) zA(&%<*5*Dv@MVZkKN@qP>3(Qc1JP#~6K(3y5GHD6PLpD^S4yjM2ktYk=I*507E-(~ zi=&*cSPi3#M|=O@UbDWA9(vI(Y@4WZl1~yO%-=15lSk&v>JMort`o~_qGHeF|NU`D zxvOkk-W>GUpa$tKn*yNoDnF5763W=ign3=9P-@5SURXF)NR))Ni1~ zy+4CeP{0Z4cY_&n!bc&1>~l1}=^F@Q@sF(Bte^N-R@D+*%hwS8K(JbJ6G2$>x6SJO ziZ+SzsjHSqL}PBkHz7nhYl=ALa3M-l1;x30Vs7SdUr&$% z99mR3r#-{{CrR%<=Z+;vY8S+O4Io+078;JeW47X*=Z$wue_X%zqMr+)n-MuD&A%CQ zksjC2WFy!<&lR8WNfH8PViS{0IeGh!CaMqr{$=IWTtwElO zfx-=cbW}86)iy!elV#r}4KaQif>IoTPQ|CmU{N0HqOXE;atSdai9;PB*^gKplPlSE zZcyjjTYhzWK>%aF=6<(RLrV(y$1-HZ8FdGURr+d)-A@wQP!{Uty%$BpIYk(L;Rp*b zrhE^`7jK-TNYDx&-O{pBT2Rkd$O1-1&~n?Ht^wdhYIm=fPMy=RJ~AhQNAe{GbkZ&^c>sR%p~7PYyS~826u{RoToGY>C+L=JK|Jupb$<R3fT ztQ@vleK?tD?_(Xkl_+5B-kJBsWsiNnXsluozaPzjx?=1niXuX64&L<>$)G@y6A16f za3|DKr9qoh*BIvCaG*Uc_;kV^qPRrd8>K4WmNNR-HR@812nTl#uQ7lGIA_x$U1FUT zB7>Ah>2XNNIT)gujqtk+`V(*OS4pF~Wjxai%$*)m014THL>l9sP7b1d z36G?oC5<`iZ^nYrn1cVMg<35pL%K&-6l(gkIwv_sS=JoXwKUkN(#fEz4-x4FrbArr z`Bwcew$?VYYxe45B$jF>o+=f?pxT)cA93O$vm>QB7xk(4r6p|@NX-ONrwk85X`eUl8{mnYq)^OgINC-)wQ(^4sO)eeP%ilwAB8WMYJvrj0}j4Aq_9A#0yu`nh@|!KqYqmtoFqYO0D&Z zlw+*vmsRMPzppiS!N8f_)NUSgz^}U%!C24XqFp+D+aBbXoV5E!^-=xPUvTt$$JaRs zd>RR|p~0mWB9g(qBR{1&wK{yD+Z5+dV-FK@g}QLM z79<|T{udy7p$u~%!>{MWdl;B@T-P{Uedc$uGkR+}Lw;>QZj5lu>KCHy^RprI4Lkfz48f5nWp zw9F63YY^3;&JE?$$?k}B7dboY9Z7*Fy$eqo1B%gCG>kCn=u}o&EML>}VYJnp0}-@L z@CQ}LH>K0)Y6pu7&K-?|4FJ+t$`jxP3#Z;v4b=sF)oopxP9(8gkQ zT~h}lyM@MUW@=^4-)2p7lgE>3j5I?7^CP4e8QdZok8G!IcyuQRIQvqxmpA$p{)#3F z#UZ>CGbs&v1hLi%HWWmoNU`s@$Q(SwO6ZlPtEz2HKR^AiEGO&Xv+tJL^)};j4Hnhx z{~3Q#>viOL7>5R`gEpbof=$QGp#)m#otG=!l;q4S684SN|D_Q9Y3HnJ({BOaM&XIJsa*E)XJ5 z3*10}B5CdnprgcaK%ff`n}t~B&_B900DbNbJJ-jxpFKUV_?W0(nToX#gQyxhAYqPX zNzp!D>(kfl^DEXZx8otj);=;mzd%N?Gp71aBwp`CPp0=4`pro6Jo)JLz-b{&t38^o zSk@c?`|s&_u(iPGL|ifP@fwC-!KO{;JbRo%bNWD_`%^y-BW-$FP`!ss-~jSgA)0&LRiP`KrNtg|=CY zlys60*#zpu7NLB09n*i4k-5IBS$1h~F(Fd-gk5tGqdy#HcvZy)1(ZU70NYTX5p(u( zPPJt8yq^_F-!C^dmgM;og&T>`=FrQOhqWENaXD#_8E=aK1}p#o00Ie60003=0iF(3 zvJ+bX0NqlHo02C$&z65Pz*J$h}l;YtS{5xyCHz__x`6#EH!&r z?47OIA%;F9&pD|L1vbbuy34zF-Czlf&hUJ14bO}PSa}Qy4sw$kv7xtdpxUz#XCs=@ zU#ezz2$YkgKH-07Jtm>%cTrA78=<-TBOILL+_A zLq^gO+n(+c0r#fqQE?wk@fjXPW8x&k6h%kwZwv5^NS1;XALWfG?sOw(ZT*B{;+Tb| zyBfS;bHLI%Wq9Oa=>Px#0tpZR000?hO+X)(Qh{J+%PgcA7#RQn0|V&*0K0&M00005 zXz2+xAOHX;O=XCHKmyzT2q&3hE3rg1gz$uvrKnL^=6%Mzw<-y)6-rHD;s==A$Fy_KG|XsBhWOtTiSmO|+{{8@alLA&!lOSny6D8M{s zYhP>r!?i-?yOWWOlp{}Zrqjl`T+!py1yJHDMxVVN}M-K&U!^c_c!2b`Z?X_PBotf5UH(zOp{)y@Yv|Vt|avM8Cpb$Z8%}S29Fj)T6 zC?kb4NuTC(VP<;}7x;d%#3-|!TGDOie&ANeEB+5xX6(TbCr#_P74tuibIK1lTd@ja zj4UTn^~-Z4U&u_Zim2$djym;kY>@0xL*iWiJ!o`Vh>93u3oVAw=9kD&A`xBtXq?J0 zT)`3P&cGL#E{Ziz7D9VfA=HThF9p5Ay?hNP{~5BVGjmd>96-I+dDAhJ*-s+yd;Paf zCYwI9Y?I3RoAZUYR<>Co6FWRMq!vc=XMd?Sn}`tVT?W|1kkYFvMR2V;_$UEin+aKW z^po};Dj4|*!%kUZJjgF;I-oEgGASFylaqjuJ(u=S`!IesE)eh?U+C*cj-}*!)0t;3 zwOaWH`!Mn((xv|~xR1$Clv!z<5B)Q|LBx0wU1Zqt;ETZ$&F!%3PNxG1aUJZiToB9F z4F#@Z87JN=4f9T6c)(KP)#v5$m*fk1x&gn7EjqLIUB%UyZ5ZBs(JBZ_n$u|rV^I4G zR7230!-gOK_*>BBIu7yhXQD^PL^^|Rh$cr*dd!?0GlU%Mv)K2q=pFi=mN^`ekV00p8*}?;nb(xFD=sh}ZKXob*yw z7?LM=#wE)J0Z=AGo|972j%$P!c!FMBA1eSt4RNaH82|bfx9lkrnU(#$unE;EU?QtZ zO=uKl%wh747GurrU-K@qenj=WA(N7U@s$MRE1v1|PadXWT|&AeQAL#5!aeUa)6|1a z|Noq;$?=c@Tu~cGHo-z4hb=5(p6Yt-Vf#ffg9`(U?OsW<=&AeHvg5xXTnUv!g}SR! zH{)eH7*8HtI{HMEIN9m>YrFB>6ra(<-%y$}IkDs!z;ZL!$D+bN+q5HAmP)W=wUE`V z;7gDE+~dh^-!8V}e3$b>LHcc{kVp&fDP>JdF)=Gu&clt$t-$B?zKb*>y}TZ4GVynouQpdTsFh1|MlOXCJl{7&T+A%kfJ| zw_fzHOC@jMU3KOrZ(%XmNll_n5zW;tR+eSf4WjItao`}!X{MT~#&ied27TBHa=^6H zzcNktH|QQ=vS6iUUJ~|8KU>Hoo&i+nvuPs80Lo1e#gE=H# z^9<-?Ezii{)jJIul^#<=#@o#cqICVIU*uc56vRbIcHOnnutb(wIj?&Yuaul_yacfS zg|N5bLyt)(2O*TvZ?4o)VerEqk;TnEhSDfPJ9Z9n60pW)CIJ8llv>2!c`y6%xwc9N zw^`>K5u8_c`oC{rGWj5RyKhjKt(<}Ff!=z9G7j`2N;dq;md8-IL!bd#vv9-0Z~*KJ z{n2U$u3S`<_?_5&6`VsDvi|eqgDL)62dgipNWE`d1BF~1vwImN+NQ7lZjVgjU0D`g zy*=uOO920I(QO!dOLrxtOk<_;tBwhYKav&XE*fALOC=+jA-L`=an7}6EaE|DTR+fx0P>N*e?b3|aAt z&95su5$$gEW6SxMCV;h@fBLIq%>B8PxKlbUswCo6#yTVURyDe#^37Jw@i9@fVar`e z!XM;+8RR#7lhtBBRju6ORFTZ3S>0Jm#^}`v1PKJ&nF~7J+_85*%tz*2Of7Ilg|{<5 z+6)u3e}(-dQ=F3M9|om4-7qlc&Ts7sKQDA)viB#j8AlxfeEz zqTe?Jc>ysUx`~*S1xMv0Z*e6IQ!jB3(_VA%4sR(~XJmhPNrY^W>fzh>01G)GFI!YP zo6Kg`Mg*rWmSgO|a;9xZJlp1J7FB-?+)Zd>6XNjTe|{X;{7x@lm=`UAAC`M7z61(g zcbTh4>B;VqKM3Zsq=%_2Xeuo#f}Q!%=_Uv!4gFM$%VpZ@Y%ZdWD=EJqH&yjMUn|pY zill=nTF>I^sfuE7AV8(K4`@9q9L2+=eYuw9xBdp22nC-gl>Nkwm3U0&#L|W=|EO5h z2IDO62qQ@^eoG|+B^}C~(UdgVBMK@~T^8)a7?5^Yx49Ol#>|qsR^wW0o$7nLD>9=o zdRqc2Ll@qVn)*pHRC@ZQfguC!Q`%R@G>%sD`Z22~h=$}cMwOpK>jIo(pNS$A;430} z8*7{w;Qb}S0uS?4fg*zwJ&plZjg-}|%c5b|gKw~S`dN9U495V;^_6%Zq~o$)s`sF& zn)L4AUDe*bm_2<>2)b#+OTyGDS?J&>rlp4ZQ%KpsEQ&=I=*lNL=R5>ZfJ0GUs4)My zbW(beU^cuF3U`_e9pU{mYya1jxZT7c-)96ka7B5G4%pFdOz>mkL`6ELHerkvk9_E~ z@j?}3X_z$OsIAEfS*(W8$Y;PDr>!(Gffs0PINM6~5@sY_N||uK)a(}$Uf}zW>e5;D zfRG2AeIy!A@@@SkA=tWcea?exmO-+HU7z4M(h4J_B}ZKlfg{8x=7(qm+gu@CocOC8CLXeu@d)BAEMJb`S>>#kiD>dcVR-nq6!I6C zc|uU1g3c=HN0Fd~)tIG0z}*L!y(81-ICAd_J{Bdh8b0QLF`S?$hKy?RYIruqjslom z&xoSS8WO9a@r}8_kRP{nQ|RHEl4QP)na(b=>yT~z(B#)W4h}?=)l{NI&J=L zo{ux_%mN-}IbU$_d`cRq)5c{Yh&iQ(NX4(Ycoi6lkvoksqGNxPi*2soCs;B}n~Mjt z&fWW<7kPXt&EqZtVLma#o&Yi!ut7nIsiXFz`sQKmYfYPqp+YL%XJ|1 z^Q19bXoWLeB3n}A&26gbF%`%{N+v2A5P3kLg5EJSKZ~>&uH{2=0SUX5{8CW4-a7NG z>Km3kD-+*y)4eq!{9)TpgjYq$KkxTpf+xLdI?;Sn1mdaExAz#H91Dj^o&j3n=xuN;&p z1<$;!msQsj=DbUGh+#!lKv3Atl{Z)E)FnpN93n8rT~`zMq~Tv(Qn(*G7$oJ#)cD-w z9L!QrmENQX;}gbY0Zu%jb0XgL03nq>*8H4}?T=o~g>mu~iUNK4CIF$_E32ZG4W>*N zC&Q2X6BqyDS2;ycPiP){A&zq>H^P6t+3Xwm-DgGD(#ARSwk$gxGsGx6kx+wwCbUy*u-T~CrO#yt} zR4X`(!z1&?Y&^7o7+(25ZR4asD7nisGPbSzXi@JscTUx>0#a*l6)1f5Yvdl2G2Y>G zX&L1Ru=dLvn0v*Pp16w96J7N@fYMS?5HY8K(JdMFdqx25;+#j%cAa~&9-aRU=nb@0&&mNQ1{2@N=C6p*)9QbWGJxKyGQ52GJ*32hl>Rm2_0^Vn>u=4%)&W9@$tY;yYELUi0#81=l+RLF=H z`lz1Ho!t14*%2fZW5^EWr8^62e4$6aZn}uZ2bCp~sVi-ti-s7CZ#Cu*$1n;I9nhX` zr#O)l{%X2zjG@%i_H${wj{OylOVnh(*eK!6+x62~o*#okc;7Yke9;PvEr5WBbq$>O7DJ4^m=ivxDL>sFBp+ZJu@IJ~%E8EWWMkD6gVB_I*#F}EEo;8#s_tv` zMlOS3H~}7%QTlj14$xWax}FVITysxWo`w<|k6GkbkJ#sWGYP)1y>mtg3$7{2NQ-2j zzCC1=fMuBl`rL4xr1pS%jh8|h0yN`~qXYh2p_l%?c&Yfs+|`k&*fEB@&rj_+Jyem) z8`B6P|HCu(*)enZ(KQ-eH`W?N>XeQ8%abkJe~I7Y0gsDA8AOpXOMRfR+5s$Vv9}H6VfPM1c8|5_u72j{U zg}~@S`F(&Azv*r>Y$r3Wx$)^0t@{7${@1>hvaA~A+@P+9DNGv!hc+9nsx#fR zwj?7U_x!@_F{DxsvyeHEbha)HqZLm~-MiZ)ekBS%g1{zB)`oG{+WqcsP7MHw*$B@Z zV;pAJz9%rh5u`m|`64I(DVRYrPrW?4ba-q~O|-{lo4e0YM3l_}ju^rmg8~TVcDh&O z<{wfQr3kIRam4ArwZG@9GovPN5QbvE$(xe%YBn`JSm1URyl78J3=wW-)I1nvabd)6ih)lQ8V@ zR>mq8|KA?r6^b}JZEM0|5bo?(6_g1_#@tgPHey>NGWUmYRB>E}{R}V{HT)Ah+@ulr zbjspYiEW{I%+`h!Cf>N}|6x2l;xTKL= zj2hku4AZ?-O66DqIgx&=c|ICW9%@eO!$*UWejiy&*_zfni#zZMH;SBHiz+H?1aui7*CU2vk)0o>$eaxkacgnlsxwR8F#{{r3zjB}25_HWafR!HBfmbw=S9?mPgPw7 zx<5S%;I-c6t*Z+tT$)M=d$*NWF%f`)OGBdtu~ zi?Js?tpA6fx-Y-GI-@JGgweLaU%Lw}kY}^et&!|U7zIUMcrC>?tVdlG@m++7l57bz zQ-$ZMN3<8-e6HR^OkRyp{dchk?i|X40)VCla|2?YX6^KT&2vKN6zgbTKL91lmZPTS z+tQTEf*@m&5+&O)aO1AJ9fy+xhyHQ8KA9d4dxZ51TD%mxn0^I=qkig^g#F6-l?3B{ ztdJrBuk=T*BWVMa8Rv3u%_Uu5tBS0Q#q=S!A@+X6-7x=IUXs zq6d;m5J`RxB+F~P@55#)5agF(+NV2cCRxdZA^h&J5;nsx4&}%KJIQW$x5jY^mx%9j^v!8Eku3_e|re{PtBAmkVT$+{IQA($za+4t**dlIs~UMA@xMT&ae}4N03cGPtAUpTlB4vd8)zC z?vFZCM+(k)kA)$2^tdZ{NpkKAB!4Db^`@XsyCl^_X@)tIS_UAfrp_(EsFcVv47+C> z^g=UOGnf-VR-Q#Ij6z*~^H~i;rYD;YmtL02;>4GN9D+5Du;_;sjqR<kQZrPdL)q;XgWA( zL}vL6N0?g~k5B3l$wAHg$L_Ve8cVy}g+fa&tlOM_V}P9Mr346r0g#`)?AveXraIoS z0$^cZMLOx{K55~r8i5Fymz!w5vvCk4dt%(Ty_0Np$t~n>m4=`PBzKz>dkO0-q8yP|0_v2A zNbn1G7TmG7`-r%j#fRI@;L@Gw4V2Re$S;u5{9 zhNz_>vJK&hh|?ws(^?R;macd-OZ0CLLI>0D3L}HQisEYr3?OMf#G`*|Az)iX;A~+c zwnT1V{x+@fnt7P6gp$!wK}b8GeWDqHwgQrmeQ3NE=iM3B+Q&QvWE@+tt$GtcT??LmB#e)8CDy!oIN9rn=P-C$N=<_bW(T2O!&2ruho37^6{1>2>vuHAGo$s?AZ z`(_{&1H?<x0tOiUZ74yW^oW(Fkj-D=ntN&a4l^zIBp zy4B<jV4phV+9<2*_!g~E}%2Oizt5Y^d`A4C@5}=-8<0r z$U&2=C1V#ErnkTdv=ZyG5M-&neUv9~X%rjlBtvOw@ct&HN5aXe6Of714QRYh-w4z) z{$w)Q=T3m()flgQ2Sao$zxDf=1g9LBo%Sd#g+Wtk;g2=FNpqdeohV~p zS>`Tez3~4J#mJYA$y1#F?;4k>A#M%f(JWk(2BW^)E-rdLB#ytHhWQ?58*A_1aQX{s z-G8dwdonP|DB=!{wi5bBaJGPAD}2ySq?0N++HIX}%L4*s1lWk!lqn0Lk=8XE?3bX{ zYLr5#yW)zsp;|0gOS!#yN=JDr^UciG`?tAD>Ip8>s_lLz?TgiOcZUyjFas9URjK_t zVlsDF=FZ?z-C@nm-M)+rbT(~A4oTNGL(GJT?Ok*L15&s9p|E;TMXPe?ovJYO91d`! zHVz+#-8iIM$+(<`Y-m;34bN$U9KV{`nk``P56T6ywon3LOZWZ>?@oSAnuY4jy>Xlo zCz6Rew2KzfD#bzbMUHu(lcdaY9QpF~gy)lu^;01arXvC1W$MP45xFNQVf&mBd#-1S{-xP~py8 z;p|QGsN#QRb7GX6wFQZQxYZe&*`VG#Lo~yqzkIlkGp&t_>0P?*ID)F_d(Y(=kEiS! zT3!v~?zCuBsOu1+K%Qw*1Nv#=c%iJRS7f}hW)TjQzOs!Y} zR)+Qs>=uNCW0dhhA+-CA=WK_IjqdSKn#@}4W1Imyj>H&rrDR?-i>CY+^jmf=oWO_4!RPQjV+)I}+|p%`x^zYw zU8*DCg5DdGb$+A56o^}|=_%H{LOdWJ>69DaYBH>-M@6;)mQ>5*x5UpRd$_kT3%E~l zg+`)GiRKPIr<9=;`~=&u588j;fUnlT*iR>fbPEs2e~tof^C6D9sR#bm99hufaiFx#zt`NnJRgmY``2cKxXj+q%_yV%smNUjm0_3`(MjK@NM|2xLOU}aw^|`C95u2)MT<62 zVjer_$lgJi4v|CgdDZQ~Jb_rHbX&wB@n4FC`xi7ZA9&U@J+XE9pRe65aZCmh9zJ#o*-g}wjlC`cw?dY3zZN<8p@-mdV0M@9VRs4Ga8Gnc_| zOG%j8=`>$A%DzKYZ=M|`oFQ}9#3Rs}&LGykcHm%NeHN4zSm8PQ8znyvrj!(=&Ky1Z z1BSNkZ?v~^tXmf5Wmq6FwxQ8BL%GC}i5|ad*=@!8DNE(maVzZEWbj#S!@!}fz;FDI zDn=YHbB0T}3G@i?#->c=lTW$4!P^zGlcx~$;t|CX2c0jaImbD~e4i!jsV;KtU>Mvm z{rAkToP+R(BTpQJxHl-*shpBx4y*T z$C~%9n$nPd4^2SD9w7_=?!SsOYhe*fZ5fxhO((}M)THkk*ec$_8gk1*P3}6K@rNkd z+?OE^T-Gf~5$u5g^S{>Nu&WLvUN4jYslr8!NTTV6&tha>*}A;wcGSJADubvb8=LoN zs@Kl1Rz>C|vW5EswK3oH$sK^wKIVOfcYxn0l|#T#o?kt#^;)5n!42nzj|z+Zs>CKe zt*vYzepg1UGp}w}%`D5V#I9W`Zp@RwL_TUD<*0^ZCNBwWa+|CUhaK}t2_*|j!G#?<`h^d5xaReV&6{2hG*o z##YNJv(wYYXum|x7j)LS$kJvKjSTpkbvBfEuLnp|V0BpeQxE+#K{;4h1iN1Lkott1 zesz<0>Ev}WoqV2PMzFkB@GiD-;cmZyQ@?1oazIHtI@BDc@6fhpfJy`DTZ1oFuAKhV zsb$C}pPzz=;yLSwOuoB9*Ub_`%H{u;0(FdM`xK=mMYlY`HyC;l+c6Cr!0?W$x!UyO z?+}$0MF$o92{SVG?MyPy=!jR{@jz*IduIE~==lg7b%l>TKK>ih-;?6yzs;pI2um15 z1=q`A2`^>1hj-Q~n%@u~f@u96dxzv0 z&8$P*DHvLlAeVXKN&(NdbeQ$vyLAHdMa$AiGO#x6!2#JvFaz;E2RA)?HgdY#0)4XW zX7+ad$9P;Q85Gup0J<&1`ZuN5NqIL-+Z63Vzj==V^s&;%N?NV@W91RF$!{w6GJvP> zZ!CsghpCR!{23FQwH4728hU_S9|Z;dU#MD`w|ur8!>~)rvQ5d6oDtmh)-Bwwel+^Z z8q;RF#fh}U6;LAxm;YPJ5%3UtC62#sej6N^etE7ivP$Gl-y@0}T(QCRoGBDIRQDmf zv>!t5jnl%>iMdMUXLtpx4(2Z@8#yvQUY2|Va79sx7<8ii*_6F4=L?3Q#oVuB-VT^J zz%e#ggubWZGaWz>R_>5i8;^O+d%K~t2zpRSAUTQlB+3%0!oL_bI;Oa_qg?(2B!mhL zHt?0}&&`3U!}?9P0}q6n2*#L~z0)>As|E&G(`HM%Dq+v<`%a{c?=V}_IjtmpmpHLH z?AF*E?3@ieNk-M+2g7X`q>DFVYoK%7w*F?-8bprV zfJ~u>LrDkA5`A~&vvPE22Xiq}X_Y5<2H7L^y|{oisZAfvhLiWMLrHf&;^E>?yK@cr z6rXBKh;AQ+zS~~08W*9+=4Tt7;LFyQ*S&ji^pBSv2zcFMogDzkTK?GSG>?Oy4!EH~ zk5?!9CWz7C`hKLPfx zYPwlcg-=QCBczS#i@cKp*8xC{tN>1TEkM8IpX?R17y_R8H0a!>JU!fZHIE}u{%hFX zR@d&x>F)UPTGXE;!-LaVrTl*+;JoD92bc&ftuU5MDANNTzI4JPQisJsf@APWW_VGx zJWP%h`)(fcY%Wo4qhBYniH}I(Aj-2%Kh*iAe#BXzE>FE_?Inz@EFeDT)mNPYKi z&Lx6)sSEhe)mzbkoSM^NS3TWHt*(OBZsQ2?d6x38G7pcDOW##d%V^QHXUaoR0Pn}# zcu@)E`oOwPbAumhMb|i!>ud{;)gI>IQC#Q)KVf%*(prA0*rWsCn!ioBtUpK05_#LY zg}*@CYj2&2W<77$F$xmvE0H(+017cE70k8_^a5?g@WSB|`Gt+KW`L>~8ixcS6X7*{ zHIe~8C@DVb$Ac*JxnzbSfFmL*-rDdlIw~xQp8CNs6RjHn0006BFaQ7|KS7!T5wTYP z00akD$LeJ;nmwMbED%R`xh`v&1O6Yk>sm9zjR9hNV*pNr108_ck(t*LrKD0==Y6(p zP~FBLKLDlSj7LC$xIetG_Ne_>Y%e$NF|-0!H1mlZxBOh1x2xjMZ{=w*Z7% zGI0WxAAqTjp#xGOnc4!}vdj*{`*aa6VHY|r{Gm~uU9ifz)E^Ghf!f%37&%TJ;7U<1 zYh7qN7)Fkmw{=MGu*9*QVY)UNUqS&GL*1f9$#u;2PTH?cM09rcMOu)OAYd}f5>%l^ znudKw$#~?DjPnrK)3LNFrv^|0i0uj8qW8cpyne|s16D2d>bsk@jom#7Asgawr!LAa ztqhr1Hyf*4|B41LAHE*VcJ3l$yiQ=nE{1>{9Isv;i-k+lsF2NF=jGKDVTv4zqy$xL z@kxZ@#e34WH+<#4qgFjU!YorR94i?7G$P%Swy{bXwxqij_CzPl94>dvV*|qmDR!^w zstu2XBzhkZO^hEF_TDxN_XRAzm)d;eu@``V}7`t&TuCG3N#NT;S1 z$0l_ffF#;dq;Twi&x;QCH0V}BM>U#j8${lz0P2vQ;M!v0APW1!egxKnRfxyE6X+oj z-mad7D4?97(F}C2t#y7Bl_DtO#yROe9S4SQ7iC%VOnE_P0iJR1H^y&L1fEvF zFePzXnv9N@JSr>c^%T*0u_uJ7s2iOk_DD&7Z5j#|MFim2cepe2J`VP6%R_1d4iLau zWi4swqAs$DhAc}LVejbO$|`D4Er5*HV)|+S_n@7Wd!?DyY?g*g(@Uq&g-%xsJ8=vVv>lK{@hi#Tm8^ug(Pwi)Tyr$zu@!~f7P0my$?dC@(>Kq8Xk?B z+c9NIim==qiCLpXls{Y=Cj;#;eq2>aRIf79Fj15Pg|}u6{4bT5e>+4otxzyY?Jwq<&|vq z0QuwGrO$qJ_c1#IIU1`1FOm~5Sej0K1U%e^}LRGV~_NG0bhnqvertfury^l40 zNO&?YGdij$iMYdDj6G&|yF8siy5g;qtjI(oGd-vKE&|x%kkAO2T!kyl)9YNEoFx4; z1k|#*UfkrDTeVNGNm1e+tts+ru%4dQnT_39*)8@w$BeZr7G-rg-f&v#VaunJPH{TK zkZ2YE&>{Ga2^?{lg%)7cKhV?j>9z%w+^$bB#aQ%9Yk`AJWW~)t#DkozpWUk`Cp|GW z=a5n5=Ng_2&9Y|vSixu&3U!f(C2@r<9ap1^f8hJcw?E7p$Bv7N6U~r#JWu49azG$l z7+)4#x%}JW3RrCgRt>RM>8!^UFiXvPoQ)FLv0Yfbvz|-+fA6U9tX3vtK5};N^uu>* zMkRC(1sWs;>HFt|43KD&Mf{UAym-PnUGsIAa8(6)jQ~~pI7OoiWp)RP+fId6xXD>| zBCTHuZ1*TWHsK&Y%)&zvNssPzpb63sHKQk2P^SNEE$uYY1dC!FHV1_5N}9hd7Ibg^ zdmUOCWiF7BaT=t#Ud9;nm)Gk$+xz+5R4=`BQlH^P2T0CJPj@c}NIs_v&NQHN~dsVBQ_(#aykMa5N8LyD=y3k&%M~+0dZ*g4xO3pRRl3L{i zWf-n`Iy@*aPV5uLh?^Z*O3zqpBIr?~8*lT<^#^7c>7#mo}AM?n0SV znJ`vzOO64>C95?Asrbk(F$$2@7NN}E*l|+erUzRtIL^5Gr?`F;%Vg`3p6c5i%7ZT8 zy*cU7QhhbdOu@GMC8FIrabvJnbXiGwpeO07Ui_*qE-WQ-|AGf=y#%_)750A6{IG_? z|M^Ve7{;86mK^jA#30eT+y#R$>-Vv2vA|K$KE-BIdm^5OvJYLDdsVVu!b56?F}qr? zSl|-7M<}e&(Ad(uA$5v6DO=Qg4DQp5@|s zE>}^XSu+J)L(U@>cxGEB`8%QdF>oP(>;75A z;o-NE?*6M0`dcT!f8^hb3O&S$c~!bS)L}ooLadjPkc$gPzh16a8k^I831en?O%xntE~aVXsQmE8`X{{aDaKduHw zA<}U9$b{<2o?L$-ENt#^T_qsDI;~Gn`s1-bfH`6-jMJcU6P`^r*}Mjpx$p?c&~kJH z-|mPG30)`RIpr+=XpO(Pn}v0m5NfBE59-WnN^Vz&X}rXa7Z)Ao{RAMd7d0-^a)y&{ z<+0h0KHi7ufgwXYAwo4m>nAs2rkk)5pPvMVIWa1Ga56;tA<(%Eij&~&aCnJIx8k4{ zMRYF;vVX_Cd^3ufZ+%9<8E7BW3IyM%#?HJBr4)v6VBYxIXiD^dU(#as?#C=r@UHfz zq*yJz;l&^{4fjutt@*0jj9FJ{4_NmvRdD_CjKmP;PHv83o&J0!`LZ}MaOB+s+OE`& zwMC0<6R{MPm$mf6|Hw$Uh!u1I20lGY%W8>Rdo#3eUamumey-*<3hG(piBa*x*}_|T zF+EY9Axj!ca=!%Zq>*FsFK*{{gQ(&?R-_WLAECNpjTHH_ZiJ4?P9X$Om zCG|Ml1%a%&7eJ%~(s!PpktV7XvyVWJOY{C?$V~s-6{+etxQ4G?cpy98WREUL3ZA{d zB0!?>mqQ`Rzh4>`v(^A;5+{UYzG3}7Naqg#@xq&{#ujTIdJB&Et({aDuMcynmM@GC zrsP1n#z?|C{x2uI})bWo_{EJF@;Fv>Bzsl^_FsGdh%LW%KIj(*K}mcE9V=ap23 z%UJ&z;-3<=-?Z#zWHqCX-?A{-@?;nWm_JXAKlU2K)>NYEXhK#-NA2&BAcB65tG|>S z)Ks?Qc-yJ3$VCgj=KTnj?W8ohUU@bK1m}E?5y?`XDjJoBSm{!XhjVoFSo*L|Tb4d4 z+L0}Vr#&NNQGk=6Ksf^vJ;GlAu}_8rA^b3nEat2o=~k#m0=OjmR_N%m3L)sakPvm1 zQxkYvhY4gEmk8@j{r{L=0zt$+)yaT+Gz&OL}3l+L&gqS{~*{T0$ zk6Kd5L`AmqEZw-Q^seq8mX(ghJ50hZ3xz9tW|`ALfVgTH*4Jy8)kMJxL-Bmu`Rp|Q zf#1t>0&KH?>Kf<*vCn;&>oc>J>{pYK6`zHu*$mqh%T-3^j#3io3NKb}vllNw84g7| z43s!aeS@Vgk{Jpuj=`&(3{}zW3tC5&^G<10qmwUe1NgPo0t3oah1#42HnZL& z%GvuMb-l0rdA*P8%E-PbN^(^bfQ<1@U!a~w56-J0x)zRjj9&R*%1L;>-o5egsxkxVu{XZ znmNrxBTmbT2Z$ZnCXDHCfq8E@n)>YL4-jZ_G7~z!$YN9^%&|Q1Q)jgc?(n#S z6=9R^=v8bY{-mp(%8MG;oZZs}K>UN0r~~HszX5h`qfx>+x(#+@6z?IvjI!p;?FM&{ zy^M{JU`h{KAvdH`H3VtK0CrLFTk%P^K2D6Xgcel8>7wzGBnZYz5c^}SlXDE^M$i;P z2HGyt5=ZIs-e5sIMue6ck4&lLEg@S4{}^wd#r?WP|^=luOUj* z0|`gVmgAg4-1c|WsfoNEr_aBD6^Km3z!mC7^ABphTcY*1Nc4Om62~qquvDhc!O+ty6~H^;zUBT zDm+(N<=5X7{@m@*iR4w;0xn! zZbvN(RjA2TF!QTj>E}m0RB;9#$|(95-3GX-TVp0P0lD4nI^<%*nKR~YUNo%+vp4l) zOnsxppzB#EO}VH>uJc@laTk^O^RpzjIi@DCyyYgM2!%qqfymFMvpm}5Rg2wZ6J}dC zZSUA>LbPv7T+1o??mJiN*YkQI¼(qPTK=T6XF+DEXtxrx1$lp>33!)Jpjs)_Zq zy1a`=m6_=D<;vd$mZ<67$>h?EPc{2oRnu5U4y~}LrgoYP>HBI=sC9@8Rk{PdXM5t7 zX@)${MHj}Do!o`{kLCe-bA|kS(F=h|)aXf_j-E}hfT9AQMpjmPLd|}-Xi)^k!IVY_ zMY>rbtv0WOfHCmMXX~dAGhQwrjP4;#?27-nRl`=(8W{J_ctEL`KO9HU71T|#4$tm* z9so!AmHLnuI*_*~UO87Y( z(E?^VQ{a)n+(&`Qr1#9b^*9+y@s^u)+*x~VzWAZ-L$S|(YXZM!t`AGW^k0NKnkIyD z(wh8(sAX!SUbL?tMOhDd-Hj6pex(nM`{me`m6PuE2Q$tF-g0tfT?o(ZF3|uSnc9H= z?2RGqMeo_b!_nZ&j&X_fZ4VpR!bJ3fZ<>#Lw122JsbY15ja6g%uL95aQ%7eaYU8*@;cZRP zo9+cv0wGncnse9X)%M_fMA>!oc(?6zP;U;oob)y$dtIlB4X1YeLDz+E5-(5)F@o+n zZ0|TK0sZp-i7qPhh1~UIr<|?~EgOmA+{sG<%oHx+i>d%KVI_?&UM0jF7o8M8ULijb z3zw*ltdb~ig~8bb3)*u*B1pTUNqx|Q#F14Kxd`)Y#_sQKeCmZ)CN@27;~;|8k7rb2L9W70&Fuq8|1Q1v2+O{4LnQ6C1b%DNzf<)iSx|4~W);`S>)bWF;HSl~yfm;a72&S=4s%Q zoS~%6%W{~G*t|e`4KV~3r!=qbawMZ_D&-M3)2;nO4-TJZP>$}n?$)OeAd^cF5{dp( zw?)2GJe$d^qipI~Td+F}fO-JM3u2-E`%({opYprI-qiVjVzK~m_3l}S`Rxba1pk^F zy&%V{yiB-DAlpSbZm#bY7RwN$D)4PXgL>UdWF5}6G6i&w)T@`aZ7|gk_x%lvn4FR62&hieC!U%sY0&{c^56$+r==gffCGQ$g za|Xhf$&N0|NS?yxL6(`bnX}I#eAQN+t4g$gW#x?i%9)!$SE%1Olt=m8+>~~`%{g3M zo=!&tO!@H!qP5jl!^8U55^IpX(&JF^W}Z&UaS!v7yXmmEDsAB(^uocgi_MJA_UtAM zDeY2<`b)d#-wxUQ7y86I&*fVjlSy|Z&nMrNOy_1pG_m-$^E@cV?2sjdpSj>XG4g`; z)v8`qS6$CASRiRp|DL~crAlfD8)s2(MPbCo(o_ha>Milc_|JhU#m|SLgS{+uRB;{Z zWTR-+?0Y_7+Dq>Hr=kW%_OW=XPQ-}cGFx>W^wY^tyv^rV@v_mc)KT&}lMrIuv6LCx zB~6Z312RkLO~%e$-@0Hof@!hv76v6Bb>3bq-Xw0UXY%8#os6)?dP{li)zsOyN?U)Xd=(WIPK=W>UIEfd9_%D1NtVt1wid+0U|j* zr}#Z2BSpIP2HU~tq~p`UroWXEXU z?p{)me9AMz3$PLa~*cLJX2-~yp zAJ-=>KRaBagdX6fYgwar&&qn#*F+DR`NtmC!LH0=t(x4tgUPH7RyS2o#YO#bkhHz9 zn>~fq+9?CR$esXouWBE|0&k);0g3Dk4Y9&j&RP%e`wjFna)lYs)E9ys3}1|gH1*QQ zSK9Dj$RdFBhCGhT$6B#o4Cac-a;IhcA@iU~K5OtX_#)`RkFbrSbXZcD*$P_0!+_rH4H4Yd4_Y$ z$&AL~hhf;UV>gN!E%^`N4*5~^&WR3(VD(L6tu+p$JB1c>Mr^q@Jhe3OKtFJEHzS_bP~zGItS(7u|AOXn?0ZGTmZ78 z`bvBss)SIu5PZxRCMLe@cGAx_l+XpoogciSXf8y;8AL)bDf$V-ce6Rfy=qLa zc|XFxUTvBIf|jsKkcc|2$%Wjs4ZY`WTzrXYh?1Eco{EQ1SeY|7NCSMWgnU+rLiu)q zwp{Lt57S>m_Obejofed?5AX3FC3ZLp3aM_#tK>>I>)Wc?DN@6X$~E_eN4-?M!hrSn zd-lYu8ew1$k$3~|*==`>B7@k2xP9UgFRqe>YfW%YEn7(G`U~*mNS~0_@V&bZpXUfO zoVDRx_YHgo#%3^3nYfhKm+HyP5FqHgK@87+R(uZmB%-3 zll!~7M1djndRE+~-^mV`nl`oKIyM{C9@yx0+KBOLq5~5rtP%94bSn64;|^GpnivmXx4&nDZL20>-&BTAaz-7{IQ`lA z{qt;{#LXGM0jFt0sG|PpBnb!FPp#Dz)z<x6{fh$d3r< zy`a3i!imW%1<|HVdk3r$&x94+m@-sLt&{EoBl^A*;{yi&q!dq54jwj|haH19YpyWy z6d z%lUTwdM}acXK6XsM{&P&v^Haxx|3S?p8&Lsp!S&cV^XhSaz+~lF3e9Sgv-8$VHaFT z;6j*V$j>VzlASMFT#%jg9!vcERCb0LnK#irz2v1x7AT+M^7P}`lax&fYg5j6|Y2T z*Pr2$A!RyZ_BCuNQMbw5XUYygxM`Wx+DrN(+{h~>a z21`>RT{OLE9(EjgpM4b}pGnQK6jN^TtGEmx=R1O8K2OuKw)A6?3UH;5JogXbeu(&5 z(?!sP=X5$Y$O3FhI^rU;nWSLi&`wrR000022~Yq40}}zB1O?GGzXHJlG{2ZydL>0CQhYubfw2Wxqq{g5u$;sC8x=R`KO#*zFUzd^X8lmIO89{^(7?K%z3P>iEhC`~ z7WG|m>Vf#hWsQBN*QIN!*-Pmx?<$sQt@F%=P!GV~v!rT(#C;JcNt(}^g@bN-TVn)r z!V9xvj}4%|I`AyS86vuLH1FRSRBE%6!>J?qot&44$s{YDu!{ruM|mPOw%=o}rMJE| zO#acc7LP#YPf^ZOx zXDR>OmhEe}D^*_riPTKTGw=ZA#$)}GY(-RXp6Yq0-d;uTi%^tY`lfon_!;-++#q?y zdEg&o?2|zOUH{DaZ9gf&Y}B_wIgGrrQl!~eEkICmEm6+9-4KDq9Q`Ja!*z8_Rcf3O z(7BbQcbzJ7v+Co1h8E-M_)|8ubCaKN%a|#daCC`7Ho{?Me>MSvuwpp%dN8S8I#xH+ zdnpvk$*J{UV@fjFNseJ@g+R%Dy8OdMp_eL7209RX_$rtCuzx9}!a?_|nJ9ziRGN>7 zlK_K2e7_DNcJuw?EyDG$zMW7dc zPwx-ncD_=u4qHnY(#o!ZoM@SLBBBShIzqZbG~v5J+L>3aB9?yyTi0at zU>RGU?soXRbGlK;Q12Ifo!8eGzJ^IB!rg865oBTOKDCvx1HmumD?NORRkl zbKs9LLzf3~-yt2Q)5t~5p}Y)$7f{B>^RebUbq$uV51o6wqy;H7%^@k#OQdei$acX=AB{KhdURc@ML*sr2?VQldG@9DHoZwX@4&IQPL{R#DfY9+G_e z>pV!rZZ~r<8fZQcxUr94yU}FF`x{5bOLim8%2_CTY13k3M{%adQZrT9E*TUiBEZUnW~Zh(a3!t(`EFV+FGZjW zTHef9b#Oe_`LX&a>C%bTs)2IIUaBLI;CdKYg6n{{cAJ|;@bqcBGDgA#!ydgOq|(P8 z-4jT2XtZ-De&vIG!eswy~9KM_}DE*T74F^frY1Fru#6e}=1D zh|CRRtlnk6ime)x+Idg$t{A0h;5b%$71$%4oQ2n;#vsck3RJm?2wZlyEoHrLgZrtPLovE+iSeWgCcO@?rUJD z>sgZEm;i2U8UBCk=7NEYUtz^P#1&YWpLYUXzIVG&?5!y)jM#4u-99wCSz(WFsCDm8 zFScTIzHVut$HCj=J}tGo|44hFnZ*W+%?Hm-#QsfzpyJn-@+=u{@{#$Q_G-RXbpMu^ z=}g%>EOJ+E;0Q0q8>5Oo0G#1IY*T4g(WGbQvOh2>9hN`Hm}AUU@GtxuH2l;IL$^r) z*Qj0uZ6T3}%$^?6RK;swp*Y|FOD@tnNl<*tgj0dmMj#;l{e(tTlrxeR3%b-O6#_YQ zHiO`DuL#{l=B9_$@F*@AXEX%58v3kcAhiS$Yp&#IvsC1zpgj9*|E+(;tTO%waL;W| zi*mLtt4(`7ZStv&D9lgG#yxhr2!J+0?JkP}pY31s=uBD7K#sb#rep~;j4LFsZ)B9S zy3c%x79rfAOCn&g_UMNs}oTo;gksOK|LHvSt}L(8}ouJ{{J4*_NfASX1;3 z{<}Gp)PTGdXY5NI+Gk6rb;Vt9#d`h9zmNu}laxcu*tK+OHuFB7=*h6wST1On`}+-Z zwLs*?jM?cSvYrjj7?wdqh*aWbSG*nB6hd+A;)bAz1&aOd0;RqP%$AWICB9GN=LYE) zsj~4YjioB0r!1?GBU*t&CE4QReLg=P!9P)}WFN`+O`G0ML`iS&3na5Oi_tg8>H$w% zoOD>Z)WZ({URwaUwPk9QF`oTg@c0C?t#s^mwv+@BW$0co8HGv)FJ0|~c^EMF`1<#8 zV-d{oId5YzMTMikWL?72ugq2h6G~ZK2a+RTM&nVz0&gnp;Fm+)#MjeRrhvY|{Gu>^ zKz0rn2OY}(4UvWQ5x;4Zi)J=B;~;FEtCn;GiwGe?JwC$xsUD2Kn0Wf19TLt|!DV{) z)AbI=JKqbifwB{6>QGAacf;wH!+HcP-fZ0ItEW~*@Hmgskun0+m>|o?1^)j!IuCAy z?x41D)0J1!6x8WHd60;JfNVMe9PIx${?hjtdBviAM!NI3T^MX zyx_YF{S^B?H6W1Yp_#%c`}dMascWaOJm8bRC|1@JbMcieEv7&S;zQZU?U00bF!oDFvO&uePy&T-zVJUDL z6mxfdG=H7%ZGY?(ULa=%%I*bG=vAN!C`9e>uWhXm=$ee*w_GX!uuIr)#ovq$8@5*i z#AC}Y!|W&-dl8A$lOEvoPIeAUtx6;6z)(0E<019RWYCCvlTa$&WZ`!eFP;?z;O`GvK1;f|%(^Ligmaiyv_7s7Q7GxJLlL zhxVjB{Ck_?k~BN(nI0o+y$l?ziIH&9A z(=i-ab3*JVl5gr0s^h@T-NADCd0$x7@5pP_p7r1{RgpBP*nWhBizp=Ym0vZWj;mu$ zaD9TDFN2b#rjc38g|se8R;su6=dah!Bm89pTs#sBR{W|dj*`WbV6aT)oY$9|ak7-8 zL^mkHLScFB2;JCaY)m3~?0NAJxqOY$irC(uH+R+l2{?U-Wv)gr6Ou#QYe~6+pz_ap zp98ZO01yk1%U{ErgV}?c)E1-EE#6^Be661xrquVcXIjlDf$LUYbY7<6-+<4V7Y-)h z2~kvSdVm;K-I?JVK++=vLoIwa6ghL54M}vNRH1oam*{ca(>7zwV%Y#2e#FX=MP(?5 zOOlbCmx<0d6jEjkH%HMRiz1r}NZ#AbdN1r^{eB~alRJ#38Otid zbq)0*WVp;B(*OVf0trw600sL2o&*iiHNOJE0W`mQ)^X0pgPhkdHjqf4t6q8RcFD1G zuIQ)P)t-soc{oRN3TOkHu#}i_HnQxrgSQ;{z96*D$U=^eaL9jkm8W%bKJ5KWduxgI zknlO?{o3d5cC=t~Vf`7Kc~S`^N-`;><5^ntgFNNAPxP;OwM+AOJ)JH&MfYhMf0MJD zFWx}y09wcT6@>6uM!yJS!=gceDVbUS$cmiQ1_@Thi!R^%n&4yaonTLW7F0Lg$k5ToJL zbF{yd8F*{QB99jm-W zB>%K}ZZpLQiIbtLi`58EspB(C4!l+e2pz6#-dF1??x_W6R>h-~e4NzNr_K;QaA-28 z_?0g$D(gXZ;F2nP6y$DG$1tWS4khCb{E4GVoQXfv0%P?VIKdq(pAJ09XVLd z$XdffJ%Jzr!!}2fIm#Zh(oZ6>+4=Z}01HNq=Cj&t-UoR%+((kcu#xf_r|4}F8mkb08Z znI`Fb;ykW0KxBZE`I(OctKMTY(X_}~P7av$wXaI1*@oqj#6*@ePo4M)lv^HctOW|j zj#{f+M`y}SrAQ0fBhh`6&7HM4jNV#afUAfN&kxc@eBs%#;BxJ zf#eZX75>o4G^#HHX$&FwR zc&^=Wqg#t!^rLXvNv(UFW(B=&xH_a)U{~l}ZU|ut8086a0LtCK*<8ZDRWyR0_~FoB z(lIT~gF~>rkos@u=k{ZBU(#vfN6HmB;*(p*O{THms=ldfFCfl+q=}TJb3%<7%FwFg zf~kcKpJ&yuh7kMoUW}Duw7bk7g<)i7GyI<-BQAgj77wJaT`hGRYXI5RT2`T~^{?s92}1Q&S<|c;e17RKUSJ_)wgFaEAf&u=P;{ zpo{=Qk3xSnn=c{WWLRptzYH=kUjdYK)H<4>DOx?k1a{DT0oUUj%AWF> z4|bS2m!_1Lz(k5Pic4hm&+~)AZVJnqSTI_aIgHw)9woBWtUTd1C)UTDi8xY&ib4ip z;6Vsd2qBa@J_QkihfCwR)w}RPxAptvbFyu7X1;U4F&9!Bh5V=$qKV;2nK8t6CA$y( zB+l*(EadG`zTbp6WJ6K7a`c+ppycq|X0Q=Q7iDrWheFBM3VQ)z{Q1Fgv_bVJj2fSG z(7T68Cbk0KjcuxlkKMs;qeMvUD6>2*(A*8k`M-wa!3s$BiCz6rO-9O8o4Qt;$UW@@ z+ob!6aR6uAm9K100Idx001WB zL7D_1Ociec4Fz|r{JY4HdO6ybL%Z=UY<@sxmn3v&)=+RhX=lW8sL6cOLA#X%S;Opz zEd{CVy=q163*$sPOxpxF$tq>VQf`ppvB7YOFM@R~)0hUFSlq%d=XX`~!>3{~wZ0PO z_Qr{h#n|E_#fs3RHprrmB~U%~JQWeTm;&QyaNLztHCTE3O#{u3ai0k{k8^Jxrj;c6 z!6S)VUB*c+yS>1`fKn9`oj3fQ_@~z;@Rane7QqRm$pGa=yR@3Ag5T z5Fk)nlZ26}y$t8reGK+lqR4X~V6Tqo4Z12~Pf0g8VJ|A59Mog>4qGSnA;FRYGg2aJ z0#WD5MDJlz@rY-JRYEZe#wRn4<mfzg20nMfHgek^!78U`G+h8bgmP$Exj%$-%(wHIZ)$3{OJLeme6)*?~8!PDD z5|pknM)O!|@Im^iZySO}tNLMfeKZu|#pdNwkKtU1==tLpBE<871ms0{DW z`JaP$&xIZ3lHUN47bq+vChkGhV6q5{**ui&j2B~Ml7_VU9)IQ*ga{G%j z9V#i{bS2?VnI<$~ePeypvB4=lAAS$p7}3y0C~6yqY5Dck(+Z&wWF~}GVnLG%CMsrd zI5TFmVYK|GY4c1#i9=%{+eTc~k6Bgtu|USr3*RZ@>Gh|(U6=5Ux!@9j4ug(Ng+xo2L^Z}AnyBr(AeLWVb4?26nZ4^(*^#&Fm ztUFxy+o=!p^@I&OX;7T< zaxr@Z_pxz$FGLGyXTLfY#*(Xbf+FfL9Q+8D zdI<0?tzZF&127jFvBh&*L|w0LOAocAMf!Q=3!fjis;F;)HTlB3NEcO~Gt6Gl@(KaQ705Ya zq(8%1(THjUXdrce$K}pDQ4iw+NV9*}m5doG(WdsBADi+E%}Zj#vHoF8p09)ZHHTEl z#gzP=q}{^ymI&WjBUyk)C?C12QF`1vPBw-Ih*YCxAdSN5xw7+XPHbW4T#I+PQVrWq zolAGTAn_qw8}lEnSEK@LS_!T zc@|A^KvrhPz{85v*H7D%Q7x?f>x(em%I(`zk#$wAyqEH5q zaHc!d>LVEx@(!$^3tm9qL@(w>g;F=Pi<88@<~3f@+}i=TyBK(H5^C~aowFPJ1}CkJ zbmBZ>_w?`9E1q6m_IMOBh#fD3MhBSLAx>7a3IH~JxkmY!RNUBJLZ`q3e4XyJPWb{*$%9X4opv;AY^Iv1FjPxQ<&*;o?Vryl2zRGM$9K6VugPRfK53yxXB;%7v`Wj zC|c18Zku$tRBf;h9E2Sw6G#W0G<JA6O>#8$)&@bbl`jM?_LhWfniC z0BU-IoEenHItb%uowfDOl9!%PQlBwJ-QmHU`RoOZPYwCqi=a_`0j{td^+_yMMh+B0 zTBiAgg%G=epE@#Y7vqW%@FE`z4#Qv>gI5iKHx1RB~OhFGdwGeR9ZU(O=%s8;aZ)u9Y@(R z&T4lWpqaTSYx(xafk zo9+pjb{(aE%ace|2aMdkrlkxNkcQNO!&q}rNimZkg%P#OG4*SVauXUG~Q}~fH zRM4FKw4jQmA+OiohB5a8vOfUFIk_VAIllhk(EE%Tl8So6-9JJ$|x5 z*?T>02((sY?4_-?vQi)tyI^B2c!geTht zldIv(&<4sn02g= zC!xor7u6oW4}B2bR1jAtg8)d?6$*;$GLqyj8pFHqV43xLpKggM1y$O5L0 z3K&lOABAS(xihC}v>2TYy#QBYh`?F^miQOweHo!iv&$=n+4i(|jv^yOPyo@Sbd%t@ z10lanB9VC}Gmw`tGD3$oj%a^W%)M>tPUU&*~rjvIVyD?h0I^-OUiFD7n_ zzmRuyy>3)Qa~DxUNfQ>3JC-dj9k$H*`^TF^Qdgk6In+&d(N9+%%<2F81gFA4xPXug2* z07v;dfgZs-0@+edbs%UgO5xEB!$gdqz_mA03yTF7IY^Ng(|NPsE{Rz8lK)tVF7MIrm1Zi>j#97R@%^o+YU-gCChYKczbU&AOBlc{lcVaTxP>lko$ ze1~ncpMdy_&x_!decm~V-&;J`9e@e*ZsXNMt>o<)3ps_WqRDN`snjY;fJ#h-9xSP7 zWL~w}Y@AjhbZV6A@~dcews_tA`<#r6d@IM~MbiSln`zB$imsOw={QyMm^hQj3S@}D z_vJHiF*6u)S2})J@@ooFhnbQaqVfI&g&XOd!Lt|k4Ni$wk6uJK5w(G1!m2%-g*237 zM;HTS*c4kh0SylhRu>lRvSIFu9Uojh1G{hU>LZ}ASz;A_nF!K-8^_~H`z(WBBls(A!tY4n`lS(R%|tu*X+BRBdJKr zwjHAW1cB2B)Ve64t-h$x4=p#bkG1s=uKGIUmnpuFB1WuBI!y?jN$`-0-OEF61&Eyi zad@YrvRiiaw*4_f-L3|K`Ms6yH$Z{5ZJ>8Sbn^ACx9cTds?vG;Y!kS&S)>r!+g1Sj zq)sg1+sF@EyrXlf(Y!=ziuV~9QJltDjf`2LCXtJtYJXD&9FN!>>5P$sL08y?y;x;a zR;-CO55652rPk^4e&bB5GAspyKQ8U4apel?Ur78)+?TV)LMtd72@N<*Jr}Jj|Maiq z-=+DoY2S}4i|R;wY`wr#B7@=MOlGkRr3J#fH-s_nkmt)mARCsG{4J*vy;R=roEaIy zdt)@zBVz$LI*fZ^X|mjh;aG=Kw5x;`KXXURc=M!J(BIkUA*I z092@_XXXbbKA~l(KT;kmoH{AoBjGGRZGLIkP=#PHR`eAy1@6vjU3}ovKHoeRr0J@) z7uU1=K4dy)m|cpVSS1jFj-r1PY|6AHN2HbZIUP4u_5=JXP*=<$JSw-Sb!6$)PYdTH zl-E-MgT!ccvX5(szw{#}Te0*6;S7jsS+U-YST=5`>L9Dj4Tw4*7q_pE0Zoy^g}R!r z^^k4_-3>~JL*K!al1J&3cWzsrK(VZcdv1Q@eEN7vy7Ge4AiVz!#fp2{Z#p9Ri){>$ z^H$wyrd*fG?Y%Eos8f0EOPb7JEwm)L2mer;E* z?mceH+8-|l-17=z?%L8+C?v2Ri9c9&X0ZVlEl6L9bSzDXAgmi3;3CH&knLrBYqgQm z1SmcDT5l}^aHg;t$7!#Wh?JCShRQ(H6J~j8=}fK89Z=AD161Zy=?XLyHY8zYT&>ae zHJfNFVBWf5l-@-8ToGUf%pT*PodMM8X6la+VMJJD#}(-a&^P`|A*P)YEe`qXK987V zuK-A~&7AH5gXmRZ-VMI$>e^XIjo*$gnd&olDR&Un==^WpNtS%ObMfnSdXVbsar zL%1s`f$sBzVPy>NZL&si8@Mx|&#%7y}>H zU^<=&*wST~0t(Qk7&kSFA3GMYE)Jvu+hBM(9s4*8#w#7StK)#C$ad1XLF2wAm*(!yPTkt82|4E(R&*MKx&gP2Ew! z_o1T{a#`eWI~v4%lWYPU&3iIV^nQOZ~yqok8v zV<;*u$4(zeo<~MawY;p}h_{4RA#jsjz2j}8FA99!9%YnuSo6Q;RMxeb1))X2%97-EPAh2M>DC()j>tpwm<{AfCQTD#7!r=kSc;hei!& z8iBuAP_~5%X3c75IzuyeI~b#gh}lq7^ZiVc#5;`&Tja9|ATpD6G~kyN*G&7&O0kLg zrrP;4DEKI#99(oBSydn%v!rP8@k+o&XM&eYtjx8A`ueM?GfuF0c=S9c3pC-NBirjY;JLyOD;_V7sP@or*r+P+dc`KpM+zz$Jawg$QliW%!Rj5mYE*uii~I1*i)eA zdzKUj6%*O-$pPxDiLrW%WwY>TE)Yo!*oYXjAUmd@ugF>uZ_kNe$248ia#!jniu4aI z?$BW%I3BrDPWD>I*jSG1(cO-iiy+MT+87bU+fa2c^T&Eu6{A%lN!~A;8mj(_3?jwO zNv);kYV~--%!7zurN6;+;8@^_nX}|h=Bwt5VGxJp_J>^`TQM4?tDA{Wtp&(04;Loe zE-ZHZiTpNb?llCkXAz_4#nFtw(~#2&^8fHJrTL)Q#lJB$#f6CiaHwk;<5m@=gglcO z-}C@u|JW6EIivB+x!CWSE+g3Wt2Qf@qwk*2BsN~-(Y*EWC*?dsdTv^$A|?FZz)s6f zYLUh1tg6w@cY@0p2PZ|@(|ew=FEoWWnhrjpK?udlYFA(K(a6X7M0T#|hZ+?;eo8$; zg>SPt(07#{Roe2byeV?>x<=6F)_H z_oed34#z`o?#1ZtJZLlCc(-iH=FaP^)-M-Q^x;M9Pr*UAFDRAP(^VHR_jPLKo ztHM>Qg|8*|<6(j2!yL@0IPMEeMS2u{s6<26v}^@(l&R+16|ikpuH%R3G&^eFFSG#; z`(@A7x~f~asq-Q6y;DUxkRCGJVU}y1KTXlmmZ&iJt%Xs@51v$`PW&!4%_-Ol8L0-J ze+V|lv7%Lr@1o<%JWm8Q?@GMMFiXI(x9lEA$y*3Y9$gIKBft@!_Wie9^-hP0j~o7) zC$-KDvA4mx!-!hjbnL#Q1Y4@vC<~|-0f_!SZ`yKZo;KVU>-(1xqHsp}2ye@UDp#+% ziug5Th_QVd|ynfSptLYvLm=@AB5D6EGWcdr{ydxF_t2)s*d)c0FAB1 z^)Rs@r`@ZaG6Wd3^N-&nqusQr*c<>67FXD4LRn- z?fkUcL^~hyX9C!4FPb9x*rhhw9@?br(B<$l5ppd!K4z7Q3tuA5qGS2fH(pcUR7t{k zsRK3cV$6;I7_RX*tf4&Fc3^*9G=zt*~Ef4%^J-_Ae zhw+YzlLTcT2ODSk$?+3IC41~lGcRQ-#J`nwg4b4caVB^!!G)eu9yz+W)jnZtWy+xt z+hAVw#HvxrCj0WKo{u)d3qV1*GVjd;MQs8?!%DdTr6`Fhb|s^c*dfWwF(cZms;%nZ zhwQcD#-7bJ=38{HM`NWz(Z9TG(5!h!o`bc9;Td&oInf zpT6d5*YSTGIywYq8SUmf68k8ZnbiRmE={%Bv&rfF>$pZk5>pQudAiv~B-Qe18ifQ# z_lsXJV&()d`6QgRUAa8=_&0w>A*p9RaEPh+Z3}({@sxOiW_4%Ss$BAPDmsj5%uMi2 z*b@~Wa4*!0mcK(+pyO^n4db1Z%c(RmwCNOz=b;j}l2p9XKy2Z7WQxB>yjyr?jqFfX zv(K}kZ@~7FDRy(A_Ckp_UZp6wi6!a8gJkuGoOe)nKl%JlE6hw zKbQOYDI`D>FeINzpVy%^+j>-de0-o8y{M!Uk|JM%>oMU-a}ghhG1Fj3Uj@JDma*6qzQFmSxQDs(=pOnDTgS>H|l#kbBiG$Qi=M3O=CG`EEd8b_xJIx zP&>DWD0a;M1yXw`D45w~3&Q%~2tsl^%l*hb)rt0qQS(|5zW>iyuDce7H6SZUCN47b4NZKI3p@XOX>H+!yFO%hdr(rB4kD+?zBsTY$jDW;Q~UmSxE z#02<0RVP?m3ciU7mFeqkgmd0|1ZYbBc6Xw#t)J=pye#56NMP4)3wsQ;E#?J+d zFArrLF0A#Y;UO6towVaA6iEd@F{4T1s9bR_x95c?n-rELqS>4CCG@a-Pq2GnMZi|& zDT%4ionN3klVw_1-`xKtV3ath#?&<&@b3O)Z#&MePSJj}w$$DS7ssf7LityV`%CW< zo^J?)I|G!&u+mBdy~afO*z&_+pcK3q`QyOEV#|Jk9Y%CE~i^g34ut z-08dL{Ojm3y8sO9iPAQ2E>enb?k*oqhi^emo#z_XIZn3Q#f;J{+@QFS^Q{s=P8z#P z+XVk3o#s|o?)cDKcgpZofvEiat>grfj0A7)>woUpJD+UtSt+{cDlmv^Qo2Z)?&(;V-DSRJ+E{u0 zlQV0yvw$>QFeI=yMgCW3<0E7B45U9NtB~zsIJcdgY{_HS?cfRQKL`c-A0AUEXv#x8 zJL{SD1uSuEcp!eO3*wc$t+3mAH#Y30YXe%rq$XotIAAm3Y?LF6w&5Q15L6GOJ@cOA z0RUWA>BW%r4D(u0K64IR_yxQ!L3`+YO{mTuwjyW7L*lQp1vIUC00?z^lP5E(;<*mn z*+G#j9L*#&Ck;S`#KmL1y>^NX*^JzfJt4%=Tw6ndln-3F;+HJ4XyYs&HqwpJEG+5i zJLP?QSaU2`)-IKN7PIHTt(FxObwSbQsvSp5h{ORZ7!p7K74?3?%$9h^iA2z89SmKY zo2IrVIRN}?v8_Xjg>T1p+!!7LwPTkTub;%?S$VaIeZ=MJ4-?LA5ijK_2#dm4@dm2& zV#ZF;`XCje#3M!GFv{te_-(Jc@b9HmX(VL6Kc3HP^3q8ZRS`{HnciCMC=XXpT(*C- zi%2q0VnKJeOXFcW4$|`ToHbuto}2?UuFcRv`Iy1j%MxLOc4d=eaArVU7$ zx+8gjn2ZPMuQm%ez;P{iWQ*Zqh$2?xPRAbf8aGj0#(0}xd{-Ifw2yO>G1lQxcwjX1 za&@Z2$w@o7n8t8EaRzD+$zgv~FOb#bn6@(MB0a>l1?meB zfiw{|YQb160yxh^=?shJ2RxC-3;#T@BqK?b>E94)^(!IbS@YV>H8-mpMVEu0JsYIf z7=m+<(ewVsr{gsq?C*iL*njU7i~}=6MH0{)n@%9xl+7g4 z11WG_qE!-vyc2Zn27wAgR|{vk7Cs1TJ1aMt_Zsil=YgK&zoPl_gRCmiNuw&TVp@vS zM2g2J_7gZ8!}kMp@YgBr`P+x3VHwzS*f+CIK|0hdrZG4^GxTWcMFoeoA$a%*1go<_ zRf`lAt82rRf@L{=RaNH(%aK;#xj_C|9)UXs{x?e4#8Y3cqcJ^5MB-%MecujI zD0sLxI}P`OFusGgY=)L$K4BANTj)n+>w$gchAB#pg+v_x9Om0=`ox)qf~l+eUUyh; zaZavznQe2gJnlClnjyr5Szt!Bh(UTwGtA0+K+T4vha;~(d){R!!Jd7P9eyUndsFfs z7bbdOFUbsX4j^CFm{lyXc4M5;md9)rGah6 zi+NtE@SHIrB=hLHgw-H9mVLPgM?KVNT5i&!Y#{R8ud`0I)`=C%)qOa6Y#_A(vJ;<=F<8>*?7w+}auORCfD$N_M<<&nQ;cEws z2j04M9~?NDR1Db<4X1}sKQ$fg1mDoD@BC?TzIiK0#JaZaTOB(;o_Y>R#wPqtIC)e3 za`c^SV0*REM2inZ2ESrx%ti<%Ev)#S0hAE)$q+FF16vcpph@Hu1EEkskiSbpL=lBUPD*W>Ut%LgtNTIMH2Ikwpp#-w z^1i#bn~3tjQ_ON}39p2=lpL=yuXg|?$^qt@lkTTrT1kY6v7@s^z>%P^`%( z{Z`Pe@dP%W|NoZ!N2m|L!-lY)p5F=jWb2Y~ZzGX~%qE^w$JpFVy3Fkaop)}f2? zzr>OX7JaDZX8unD(}?Mv6{3C;kah*>K~O!P3eAVfiHx}+~5xd;LgJRQVL$WB#_ufs?NyAxWF-_dBO6$ z+#XG|9$6Ud8UB(hwGPGoQdXliVNPorqX(-EmpB9*%s2ZLN-_Z}AS9f-BBZ`O8G8Iu zD>Xcv851cz>q4#j-dXLu;`(N=}w()7ovrZ2*< zr|XD;)(L#dPaWHmy%3n@onCuRnO=LecFN%j!gEXywKutfQY>X#uMQ!95NFdYiR?6knBg?}Sy?a#=w7lAeUyZrb9CMD<MmE8fXDDE_aP+vFbrM~{uUz)7@{am9plvW&wY&BAH_Og000022~Yq42HF9h1{J1FZwRm|U%QvojB{2B`gL9UlAryI0NH!HFUm=pxolST<&B8ko}C@$Kubgu5a}?%M!+?S>zSh^ zRwjd5%Yf3%@}`XQxNB6mk@bl`fw<tYP#JY{RAK8Y_p=#DyVqZbs%j>QAGE)5m?(mCfAJB=C0AhS9r)zM$wqXB;vI~c#4jn$fFI;RH=f?U^}Zu#_a zROt&A$#*M>$}O|;+@@6K+P?ijlOPGuCprCBiOH@!?>_0eGD*@EvG3_ z&MK;^jx)l-M1ec0;NH696-Up;t2w;s-!hkc7nUhTc`a)xz6j^gtEDOxy~#kipXqL1 zZj#-DL$pv3SO3GFM-&Ui^QE`LBPZYmxOISpD1sVn7)5jvKcvmwao*~iC3A$EME1wQ zA!Z?ZO;n8WPSZgOC-u=RU)Z$%ijNTLQu}FqYZUr11VsI*Tvc4}d{pE@Wl!%h#@+si zJpE3&?E}2iWXgc5IVmi66Yv3uJJ~ffL}$>g6_<749|uwT)AW7N9oPCGiB0-OF*lW_ z8Ii=iPts1KxRqmPr64_DMy?2th86Y)D)uXuFB;TIta_08@V}4-P~6rnx>zIc{B z&eyo};Cil!$P>7Q{SH`Ctf1SoIB+VgK=;9gdtEb#7x6~ijk9g|N*?wwa50Jp8d(%% zv_SYesQH^Y?bQ#X-X|20Z{Bs5M%wocEiid9%88%EO$$7&8w&xAHNsV9=Xr_{3guq; z>%*uJgCJjh{dz_jmt$-k?xRL0H=LS(kPRnc_7o`uL%?U?5O|QlwJYP#ncdh+w3$N^ zZG1IZryqo6fKr!_XvbK>=e~_cJ~zNO#W|gIWTa6jc0>HN5)=ZYOb{|mo-Z*r7C-6i zsH3g}DJeqGlT(K|z~5{0w$_C{@eePsS62PzOP4}2DlC#>{lr``x20GLAf6!xjdu;6 zv=2wnFEC?3;ZHjB5=whmZua>=6jEY+uFO2#;46;}0-`y+^C_8>e()@C`-8e@Mw61? zVjt6#iVXvoaVhN%HWkBqpYd`36XktFRhxPCJtj@2ANH=U0-Kh6g_*E#Da^$y=^=-{ z$U0N$qpvc?bpiXm^(eg#r@S4Bfz$Ru?_Bx-X`S56Jm4F|I6qeR8y}x!tKV-XvoG)j zUL9c9Wqd~=d_qxSSq_znv{Sk(RH~o_hwxJq<*;;NT%9voA1)in?QXDA(h!$uT20I# z5}d*A5w2OCiXB=ve>*vO?#ujWZ%KG^_#qtrZK$j*`C{+~7T!3A6On{RA*GD1HIClU zyTmH2iLb_PfqQZ4WJwnWxsd@| zN;7M#Tvx#6NXx>*<#%L78fcNRd85$muL$75VIy5;CrNf_T9z5#E@*Miy2@0ctU?D= z^_eoIjliZdgkv%hg_7sh6S!N!55OAQI`T^meMYumr)vow?r)mYq#+SN7^~8E1*btv zUYe8}qF>FEOi?{Aac4H@9DIRIx7UfyYUa4Pwx7Z;>h=E_)MbD>Qo6D;_Z_?;C2#dh`~0;Yta7UT5kwCnUu!F5qQtc$UoQswb>! zq>vW$M#VQosio7r_1%A^dGpE{CRMhx$ftlOwoDzge;e=8f}&Xp9bmJAo+;mJ*~rGv z!7;+wjIR_4CEBOWOq|{d_%os;>m0_5A8^ETa8@vaQ%%xBO1&wr(?J6?TgAA+erfxF zoBnE>1!-M<_Qsdy_FImA61!li2UjVoa6oF+NZ;mucX83`8 zht9v5Wf?jN$VyXoS%trFf$J8LQ+{*klEg-ZkU3`+IPRUtA~^8aF#Y=*BJutkYR6@h znnoVxKQ?389Wj0e62?a&3EKpGAsST`tuQ7f!zF4E1R0^h1O_wEd`6n8Isy@)W-M!d zSOU*IDs>65|ux8WG?W{2JDpfsvdHpALTKOR()6+8e-fUOKtQkfC~0B(W+7P(ccngrIB zj&`tU;-lD#WdrmATs@%O4uGTKL5Yp&wytjpT(Jl`bi4|?)E88>FiZy*8$d%xw zsrtH?KMdyEOkrE4q@vNX%)+hT^Hj{$Atj_GrSdc-9pS+aWm{h@G!`Fz$axobq z6W08@SrpU6(N}nIHISm&xJ~g=dX0aIgqctGSb%rHUIUyQVHI9_iLx_{B zo!(O828AFh=$W8gs6gkCNh(3^K`3zkHs$ym&jZClkAu9*s+1V41BGs^QJ^caElEE| zMeHE4jAytZWJr+i3L4j&tA@cVsgnIWVx!Y|qG2X6TdqCw_!-I4_muFH3HBKub4=J} zv6@SoRk~J%NE$|KY`zxs9a`Hi;WL>PVP&SIQ@t-tM)w(oge8wtQ*fe5Ry*q1NIhy7 zV62S6d8kRnZP0th3fcx@w9$wEyZ2;_qW*)m4e5n(oUYk}O1BdN|Ancxtr7-P5yl90 z%^VA{Y)M-j0@?cCq_0^*0G$CcP{0yE1r8?}VwgINe}ybbg2)MrCz7M)FsL>}2~D)jv1NW4OmOs_R@s5BqTfA zHk;6-DjVOUxBGS|8j0G#rJlf|@3q3V1_%B;Z$|h8-erm!Jk6OfqF&6D*qxLvb!rHM zIwxc)-n+HlR>33K&XnWbaqO|ua0LlMl|*MX*4KCx$^k8o2tYl6s?ec*((@5HoNO-x zD5IA`u5NWr^a}zQAWH%O(`t4^tqD912tiiF!WM=FgR!v5Le}gde+CHO{%>3m z_O!Dx@BoA=@bN0TKhPo8WOeML@zh=Jy_KejEbt7PJ>9$9jMj969BhTB2k~SL{{ZPB z8dVjgj*lY=5+z!sDun<*y08}@Qc@%l)L`8=k2)flZc6dB{H{13xEmvm_R#vP!9XDF+C|ZUAZMqdHrkffqpB?=92Yf|^Q_oDf+HyxrlZ z_=eYI=|AsSDp z00002deFusq6sDtRbkrHoPR0&H(g9RTjwnql9sYErq&P>0+0QUt?aL2tX734K+rrEW6d)TS zGo$-vEOwO1RjTar+);~@h$CWJ%+MSV3ZXnHe=T`S#_=eb!BrCS{Y5+K$!@8%ew6vl1I z88Q@d9Pqq{Wt=AAgBMUmZ=ZiMoC28tqP1(d+mjqdQUKoK+KdB(F%;v zkaU?Rj=(^NfdZ4;LV&8T9U|j$YT-Kb&a&~B8s1kBs@&%6UnKDNAsSTusfbHQ2!wa3 z!LooT5Q`cFn44XkW%w!dU7M7gxz762;ffCKjY+{3(L$%s!Y-C1W3WpkqqQ%Z1*X&1 zV_RD`DuT|J)R1X=SOPuf92a^Y3Fy(8R$aojMLz1K*?mf^?z`8J=S0?~D$^>mo&vlm zte>$&baBD8O3(`PWw5eWgh;t-1OZ-;6xiEBmRB(drAWOMX6CA1W|%Hza<#!u`T|M| z0lIKY`CI+#@#X~33JS<1AqBxymZ~ZRK|!F60J6u8^LJGzv7xMh5_EZ|e08nSDwTpp z6r2zXB13fr=3AQu2|>01+C3&Mc5N}n4a(5?bo1X(0^s%_Qoa+POx`~Fs4W8|B?|NE67k|9%>uPU%G5lJyWNTQR4g&gX7{LmzJCVZaeBAx8Y?SicY z0poEhM(xSe6$0pr2n;Nm>ol=k7q3tf}@!?$N1Ieje8w{9U&S| zAOHXW0)C!JNB~>4hODPxPz144h%P$4-Vgt}{X&0a}C8N;`b;?_0=ZP&34TrEt?y$#tfzBEm3cc8`G z&WXRWXASxW!9zfl-Aw58fXjJV&PsE$9OZaNBrec1M}LF0x` zd~>fR^U^ZTeC1M)-=S3wG;NK*3(?~UsIbU^Wy3Ajh^(MFuL`vYl7@nUMaUV&yej=& z(B9yliJ^x*w?=Z6oDH|iSGvmJR;G!)EeU2;^k6QD+%it2fc0#xejr;NC|Kp% zx2mKd^6Yl2m7~g!3IlW`$h$iYwZrD*ZYrDyCVoRVm-8)-r-{k32MNMxutpozN;8C0 ztbjiu8dUu`9!n6aSKRz6S8wEhPMsGF`3*dr)3UPdgsx!V@<8Q zb9|bhur|g^*oXGk(+IN&-RWZafRM#jV950e$K* z@BM)cWcBj~p8Pt~puq)M*VUQC%D6!=0} z23jf@Qti(qgDOg#Nsq5sLYzOUg;OUps*Rvcg+Q4wt0n@#tO9a-Eqi^+c0ARdl91rL zp1elAwq<1Ooe#uXVSi>Cb^fFmzE9Qtw%F9of=>) z)(5k^s$Glf;h5TchlRo;%{^DPCHZziPPKXMJmW&%wRQw5otLS+wBIFr?P3*^+m33^ z2xhV{)*-8j{8Qxly}o^6sm&XQ9nk$X7&M|X+r|{qj$n%?;G7=Z6w4-rRF*1W0GVJn zL1RQ*abd(LXU&)J9v7Dbq8$(%h6!nO$k(dCqMOO4ltrCh`@)b-L(4bob^~zOYOf4p zcYF3r(B)ge_+~2GkJMRlBEyvcQ_{hSs$Z+z`@R=hUWK!us%k9n(i%3jPnkRhnT@E2 z+)@0%@Bp$(8Avw$+}+{68lFFVrb9<(i&(5uu5=o2jyb4hTG(8v)PmKQrDg2Oh`Zrt z?_T{O8WiQ47HT3I2qhb+umM0_7X|BqFmumC{tly%PAVrl4Ol^grvkV-{pEtm2jc3} zhye(|1(aYcgIZ_^(tdi^I59J_l}Rb-L3>YIInCw&c99^1qQ+8T5dt&ZAE_@g70BKx zV;aou{`G>*Qpwm|!? zfg;*7ELZ?QENNiK3zlcTc2d2slC}CW<_gKZMCm{Fy^fZA z!pq_F-2Q>m4?cKN2@&6BphbLC&7l~Sj8^x|Uv`jp_+u?a-o)lR{g~a{qEfS`ABMqL zREHZ>xwl6(K3T489h>D&fkC62tAx>1#qq5SB^~B#h!x7mTJgL=WaE`ay>0WUY1hy4 zLKAcd$O2-`2S=z#Xi*?9cbbjoZngjxhLA2+KY#!P0ymVHnwo>oInoouc0I`})Zys- zP&12fD{La!#ymrr9Qf^nZ=mY0GID2tY4^MVhz@PoVeiF)wUf(jT%YQ|nBk!>T@qQ^ zwr`71Xxa;~FL_#?v~GGVccz`KGX5W@N&58haOekHLkF_P_>ZeJwTle97A~0)6=yK) zQ3B;^^k!A__XWICty7P&Z4rJjuR%-%00a6V8c(1A0007p(1s&1Q3Nq6<1JZrU<)$D z1(#u3Q6~Y>JT)c!c9jCt-;7AE2LsljQ0PjD;XQvFv4Mje=Q)hofjwmGc+-s!%gH0_ znvgXBCwhUA8G*aS#+M-p31}7rbg{qFUpJ?ldRAzhJ=ew>GMHMl5?0R0O(Q!=%A)wtLan1f>$E>sX7)j*Y1GO3usb(PdtrH?I2@i#=JeqM zrv>JL$x=O`GJ6a{ofI?#U&ORH=DBOxlx#T&N^^G1y7h8Q*5s$#ImUPFNC?u7ZSN1% zN^x`uPc*{7lQHNBJiZ|s6(xock5G`%L^KeUI7m=f00>yNtXBb(~eZ>7?ushDgXmiH6ugItTWjj_p#bPBR3(1Y&^pXPY?{qUfy9X zp~|>Xb#OY)cp<`;eXQU#ZxRBl8j^BhxA`|v0G9mgX40X#tk_e9;91V{^=Ia)JLi{c z+&*=M@PK#MIhdC9rhAC3F;Wz^7gS-b<>O_u$mdEU97{JDURN1I!lV+nzRP_@iUyq~ zAR!)fBKD2_AsQ6Tr4C9*0kbp!DN6;G0D%TeIxlOZe>s}n&xX4D!aqdDHq3<;T_(x3 z+1m&A;!3xtY2)OVW$QfAI=u~^V0BOJ+LJ^gA_!Z7m=~lk` zp2j(*aNER2OeC^Xy&hgkw99%3vl}dcELSCJOykTU^}7puUF%T_v~3TyL}qt7r01(2@7TS~Y0U)*kDnZ`LU4WrIY?@l&;E^_s`60#R zIA*JYj>{y&g~K`!wD(kqC{PkH}Js?R^FKVImg|F(xI^VRbdQK%ZDO*X*a@pBp010bi z@TZRY#$5sZ9&eoNdw41!6n@jQuhY5EdF|9nkj4Vp<822m(DWg6^Tih-2F;^Bi9NEO zW=4D3(C9*Y&i_Y0oMwa?MwmfYO2RQYW56XW3Io_$nH4h}VN2JAqVQ6thCd?%W zv!?lx0o0_vEmR=}MUdf`aLjb3#P(nE^x$+IYUI(hXx4*Ey_T;Mg5kMrC(7eS{;LXu z8y8%(;xMn&Ol{uLu-vHvSBp8+4PHb}dHLQJo;YR`d52k1OPHGosZTE>g1cCVF?Mrq zzf_>?SqLl1m=XLH#Y9bj`}8w{R0T?73DJTyqO?;puqbLQnAWjiIYjlkuBdXN>LZ}R zBAIBz5U8Y&jQSIAD-7$xP67tZ!p~cPop~Pr6!B>lE88wnODwRVkXJEWBP^*3Sa{hi zPPES1JYWN2bXl1lX%hid>Hy=(DqOaN7mh-;Krgjy)&~u^L5D_HDO+K z?Y&FOx~Xk%;>Nl(R;a^6?sy|#Au3eOrH)BLiogX1;DW$e5*H~G|6pUHz)oH7y%PgI z{eTy^Dww=u*hbtMiG9I;9XVAc(y?PP+V`|FN_UlFNZaGq0u-Hh?Jm#H>{xV0lDQK> z>^SzFdV6wNP>lU7K~UFOJZ8t;kX`n%47mjx1=ktF;^Q`-aGy-hf#DN=f~MourL=WMo~86 ze*$3Hz9mPZ^v6<6nvigiB2qgm?v9Y05Nx-#m0MRC3YAz!!HWv+lCqiB4`cW_ThjNs zT*!v%l=-Rgnp#)j#KQ6Kn>D-ObJWa>)lyh>dH3(SfVZ;xd|DP>*N{cZER0fdx?|OB zxpvpD*i_v2)p6h>az#tTy~n?_(GRAC1cKX!ljj->iC`$9)5*9$T9Jkn z?Et(!r=TL7xZF#jVS!$$h|$rp+8Yyba%HVbhKo$ex+#DFJhy&KPlSGX$^pU`XQRCE zBVCB=e^9v+xYNh-?L1<}HL~K9<}O_C*|_E;%k0H>)Vf6lV?)Anh2xnuvi=h9^opxl zEY}QrTV6DCRXuvi;~rT^B0`85MM8uq;w6D2q#l~@vfj1=wQ@xBl_n`KT-A_@FMNqwyVto5B}lf0E&xe&XbrCPbGb*Y zY-;Bp-^3^yW{vte%_S}6u!vp^koyrVRilM`P1sa)<;EHStLC(OBBI_^Lq|7>!xu(N ztp^M?zF9qc14Y`+Dz79(+GMV^!E4)KeROQ?oUvS!0#Zbt#@zi3g=xWGBXU^9)1MV-{Kf{CbTK4b=)tRIPe4$?sf104WvHk zrd>$a z(jrUM+>L`4hAPolPT;(YoKNb)I@~58nXyF@NkSMCrp6E+xjOj(kWcHK$e$?KZd^WC zE+vw8*DH-N?Yvkm;m2v8Vx#jrXG6!X5xNK)%8a{Ueh|@jnjS(plDXw^FEp!5$CjCAQOr6J z*T+yQLd>+U?ye8<;)(W(y@BV4EVpu^U8&Yrk41l(wpcv-Pvq~e61a-43z>V_mY+Lj zuNM=yGVvJbfHr~&=-w}SOE(WiAQ-8)G1)vYN&n2{>$(rArxiPh9r5*0(C!tI$w6|p zAWoIlxwhMZ4nKvjaCUX$@W*3zD9wleeMBqHUKai@HM$I8Xl$rq_PFP4dSkNC|Xc9)>wha>_L~=^sE|l#uuneJ`(P_pRhC8{yKTjTC z{8(o&5grE5!h|VNWgxCz;Y#G%kqme!y}Cy#T6Ta^BCdA518L(<_mD=0^ERi456Qz# z+|L-}7omp)r>u*ylQTc+ndIt$Tk@4rxYMQ3r`}*#m`1a#%Kf-<+!p={cq#R`Oo~?c z+Lg?ajk(@J$jES`U-qdUsQR2NQd2u}KBQ z(P1tB&*W;RwP*X>d6y3GE(=L3s6KPl(Qubu@56IX&s~#ZHlmeHtsxMngz1o-9I`IL zw@EDn^pI$-b0E@f3D`=x#8kqX)`De`{cz=fyz;~C;q59dDdj4!T%z|)g@2$D3yW1&AbeqU zV1=iO){0U>g5p#At+Kk*I0IfDwt#FhIltf$Ni7;w#n+j; zZzk*`bv`1VfPJ@q@K*XHNc@-TDXMz%4a5@xR%|5ZgelAH1rlFn!=e0*S%Q zV%W|)Dfd{ahW3roEI$VBY9+1#VUd)i1(T2_i35tvv!2}o>g&`{>d6uqr-*b^s+SIc z8C^1DOgOpoY`Pkitl=mC&@#JctB;Q>ev@4-88m-^0zU+=l_Qnuu2WUs9SZxG1vXQ= zwZVRTBi|!v$XgT6%mb;hs;IrU!+Me-O7Zqk}&S@MEgZ|6x~Q-buuYqQ=t~| zN%aNXY9GK^;OgErUD0$O^G=9ehH)p7eXRv2=S z{%BkD);CZOJ}QC<<+7bRbpk5t?|z4+>b`chkn@5rG!Lher3Yph9yK<%NSfB!SU5zx z-J&iSkJ=rNGvxoqu303J=<(=V1zq=F`!q}yW23a}!1j{S|A53W;hmC9lC>yR|Hp7jqA!wZPgnh zq#xqU*WE${OmVr6X!VPP|M)NeN~*&eDx^ksl&F4BKOR zimVb!^g@G4nOEeL^|Ip|+`P_#IS} zrxSTeNm81Xw00Ie6 z000N?0iFgOrcG}Mh=Ebb&W~{jlu-z1^SiBj zP|!o3%0-cX)3fDkZ=ltHEg}Fjt|db`Gmp!V8aiu9ZDrE=m690^Y+Hf9`KO+OM(l$> zWkAY#ffZvP*_1?Bz;!E06ltmSNP2E7oxlyZ=YGZ5@Kh-bt@!VCSQT$v8uv@>geFJl1YlKVqWE>S`qZ37>kYD;_ke>Y4q$L=k};^#a3Uu)$mcX&Xt;Xu6!)fK z5(bx-Z@8&Le%_*6r6gUKGr`JUg=D6UVTh_b`P1FciV;S$C^% zzLOn_FM~$sh7RQ-WPQFlMp!Y2+f3G~xWP2IVITBy&H@L+lP#W*KOq%niJFi-dH(?} z39K|dOwXW-vVel6C9or5!6$_8F;ZwlXR$Ql|4x^T|3_hyFm2V{=2)0q>>T$ zxf*~+32BF5IML8aRSBlm^ltln5g|w`l?kPOsiz0mc_564#6-D%~pv?>+`oI z9C58GL_;&Had&(KhUnRE*ND{8Fv&2Ve_NE~yb|b7KIr^0l9rxZVE&CaaMeHdKhcd9 z(%AH4W~y(nCZ9Y7q68^p2rY5(s;i;%2jD*i9lHYIA37{ zkuH-UD@9r0#&Dq~!uR)0s-nBrco!M026xQo5H;tT4`=F%T;JljJ2J<@wO++Zx!B@( zTW}G=FlmhBzdcDj($!_>!3A<-u+}2#a8d6Tcs$*)6%T2)?3pUKL%K`dpf?bP8lG7K zu@}*y0*${URb;h9GN0#e@R z>7WyePl0;~Scy>q^~a(Yw(@lMv5lZwOy3N36k@6%`y&gv;h`4`Ak@6SmeaIs413<~ zc2O4#J0(7@AH9?y_boweW?SXQO)s|ZK}CA(Ca@3pOY`%vy}oe)f-b&t3ycy-U}9q^W0%n z%eL~)Jnuc$NPLKKi;%Jp5#zs|1w058&h7Oljx>X3_r0kmP=M|buY~lXw4Ul~0>7+$ zhq)h%cSbPY{+dH&2}onIcd#eQXw4&+g;V^Wfg}-$o|~WYIYnC{o;t!hgWzLF8Fb^$ zS=z}#k(~q}r}rRq0EfKei0-A>pXz)ox;Im*?^JVQBo$QJi&p!*I#tt_IG5dbH8kc7)8paI4Z{$I_`?h#ybq71KN5;2MWx@ROKrUq*2 zzQUnZAT4JaR&7>|CfanUE(k4qLnohB?)izriEDjedW+vI%vp9t0)3!qC(oD;c}M&b z9ZcOM;3ePy0006BFaQ7_i$R(OF>D1}01XW&Uy)$D2qUXN`H&#U6nhUyR7}v$5u4Vz zvYoooA znZPYD7n)*{nLG9XG_lyD7Vu^4AhwUD$D3|ZJS`S|FV38Lj8wnG6-pDm|6U#udAErI} zdctP9Hsz1rk*@s;y|=6IcHm#J0Hm^mpHuRZ2$oeI2)<012;g!82ZRZ;PL#@lWMR)LQZnJ-}I~r`8xC>Lv8)?Q` z94JX(7*_#hrNLn{;FN4fnR>U#yC5Dbh@Kyr@4JavK-Wkn)kBmEWzzLTsXG56j%K{v zUB*Wm1OCB2=uu{%99^_iA}>?Q5p%Y6!T|hUS>;ISjjH>}69A8WvO=K!&fngj)6xFGvq`CS6qp>%`Q5_XW zq_mj9d~c4q#?9l5jq=gK{XxLfvOTU?Fc%#%Gc5zmU@-d2M})`ZI$M_G#-}e~kfO^( zhj4M#^1a`fH@&<(IC5n3y;FrDuzh_r0QM09_8p_VRPLxQ6rr*X417+Gd*{%d=`EU( zEG(=kYQ>GWhycE4^z^VL9H>lO0?R|SG#s%fu=JE`=WL`T%7~PoBellNaXubS2H6tj zvzUidy%LcuB4-eb81V$Rkc4#vLmjB=AvUJ6ig>BI`}4wQp@eUpYJ-#N_Dzxdr=-k9 zUUJ6xnx_3oYGnJ1pd57$JyRXOpSv8%M4YiqJt3w^^)V;&kI&-i$6L2(EF;wpK=RpM zATW4NIXATo%eLUdDNgwk)+c|RcOZ)tt&zNLO{6CSu0GE|Gmq2}cZ9$vDRk=)n77Fb z^knUQ$3igx>#Z$ZWCTy1hFbCj(ajc0=-uRnz`p_ zc021?P-6p$AP?C5*a02Ep79kl4*WGgYzt9ilAC@We@w&5LiLb;K){CCPr-pGGgKU0 zBUcn@GUBgfRXu09+*~s|4j?g033Br67P~E4U@PTs1ORytIof)HwH_Zx!cy%BCTi=x zahJ)R_gG{QPA*{r^-U6MULkP=4`^@)plM&(2dQZe4S{vqwX8CR{3N@9*VrGuWs`75H}r~xqZeI{rr&%_ghbCa#Oen zSR0!x^nuKXXxlyB$ft*(qSJ1LnHyjc5KEn#EvC0GS>8CAZVo_jx+|AH63qpY=yh%2 zcyw!{c-o(jG-79R@>6qp4%2LIG8t2H|S&$uq$Gf$(gxd zOw7R+T~vF1&t_N<&#WrDVZ2XRh4@7u&1Xp#%)vVM;>ar`PDTjsIYjh{-@$Cz53F_F zleiK?eE}&NxFaBN)dCG0ytx#Gq}&YOv2aYPQ#DzS=3sG4YarNE4!zXx@gaYm>LUNP zG@?GuzwY@a3-sd1+zaL{c>rLjNjb>pfrb7=M;UO;msC45*$hT?PkM_mvZ1+@#CVD} zOpd$+5qG?(kt?333jO&$*gh$+P)6^ubxq;<GG7vEc0W3Goo3qS`9e8res?M5NL2l^ z>D#!62r;$f(6Z{(Rq#!QyVjzL6{wEL$)AR$aC{O*%UXMG9e!E_(;k>G`fn&B=*rH*`-w&fkIA>E#i7suy%rnjVg9YgDKZo&+8|$h>sjSs8 z=4}-8!J#qsV@QxLZs}Ou{D{R@L2WB=+04@PjvOa7TM6)sel0C z;F``bBJn1QX2kOEjd3G~8y->5@1koCJ;ss<(v_x-!T!C^ zgolX=92>fiz3B%%bI!+y4;&q^WU;8F>kdZ#FO1-0@6(&f;4V`3WtmeJS8N6Dp1G)c z&kXIy8gDTzxs;jq>NNo-24|7x_p93j9e>}jZbVbjZ{CI79qK?Drk=N^RzGqdfvGx0 z*(boJaKoVNr%&r$PqSM>YC!?#!z;Ow7o}koj{`f){9cp9bor+ja%?fF|(As6cs&eg7vm`MxNim!u?&aO+t1foPa(8q4F# zkAIgH`-*Zgal|dkLDm|9hOe0XcPCXs>5D;$!y}5ZDHR|^#&}s7R4`I>e33>(B94Q> z2+ul!zugj+Cb)NMF;$>|wY7fZn@CJA*S96~{Y_G&b}U8;JI6kBgzxKY@2Owj8_Voe zuYWP8b(`V9FQbDcE{i6u;D~~IR)qoSaS!7I(oET_93E-OrsG?MI?3b zlAJMC@_|S%7k;0XskS=7RGOHcYad=n{3cpMtcb4XkxM9^Lq`|;lR$z6xeNKZ80&S< zFkw+O_B{Bk-@3Pp`>kg-iA~up3BWLarbgEf$e%0~(xFx;R@&btjm33LSr{=a;f)*z zXYB^Kt+pMd2A-JSmTE;4S54RY;N7|c7EtcQaE=#YaarjXZ{f;pf9=B_qhv3XOl;5B zZ%xOrmSKNAE)GrQ(WEjht{nX>lp>BCB3%F0)d`I<1!?vA8N1wUM>~tCPGq=z$B!Xh zGdXo5{-edxa7%sqwGE;Tw29ue99f=g2X+;<)ck!XQNcKaPdKm|0jt+j{!veeY9>Qy zV2EB-Ko0}>Ha%duI1?aD>K{K-8d?tMHdNZK=pGRKmJsRa2RYv7Wv_fA=)0J9itW z6W?)1aKVcySxIPKnv(-5N@4BFDUG`XedgIh_~q>!1{&7@kh?2I^8s2!mg=tsswFas$fbrSQbe0>4P{w(A>CJM zfF#APR{u{$iwMx4WwtKkq!wazfcczs3M&ahaasoKz)Q-O!dmM`jc-6)2`zM48f?+a zJ1#1F8=;U;;c0Ke$DO&h?MZY~@sKc{#ghx0eFmfVjQ;XNb|6d78N;1W9cms(D|puW)XB)WF~!vU214=Ku;kwFv*EbbW{BE z?@T2&KY=Yd<1{NS+wgWOiy~2O`Gq`;l%kXqNCD<_-rm5UQo%AAi|$A_#S>7jmGly) zlT|8)!V8dm11B_-Z=U2pWGH8?fkGQZSy}kW_*-d`N~(YJG|ooGw!c9pqNTCwhfX(2 z3+7eMsda%BW^l!=n!?Dom0kqIcVn%xR7EZR`(0o-J8tJ6t*xd5bz(?Pc6Mf0Yeo4; zc8E5zf-G+D)m)ep{*bB5{U;;K^Ny^q>W7aCUFntX>$)-JU(UYuk?G-3aaSGG&4;n5 zXMq31PM!vB)O#}x1emAaD2>zvRrc=)6^_)P20!4O3i|wIAL?BEv?@A5@g-aDn3;N7;;8qX-p8;qa|{sAea{FZ zT>t6DO$H3CJ4>g=beU~;6S%#(hWl`0%$!_o>Ujq8u41DiQtcG&I8{20sIpgw6^?X) zOB4ktPwKHcXc!6)rt*dt674V1;-ckJ7TzJ-S*%Z$#Pr%)=O9 zWlLET2_bcFe%f(i%YjElu6u+e)-c=$T}G&fM(#Dh~;Zc~#&0 zs}>yrt(JO~X=i6D4d*6(y!nuT1XXqsP$G8`3>q>{Wg2ZT#j+!{%TBIyMnVl?$bXp< zN$3OoFMM9B5O0@r7P5$Z8#Fy-GX@ByISX0F<15}MhwCb?X`1Gl489koc9CHP$M240 zjyAYu&YAjmQy_Je-Jpr8cYVh8#NJx%lq#lHa+{=fIrUoI0VWW&%50nHN^zCOmVy4f z5s=gMO!Ki(PftSmfg*eje~#5eUoXCg=f++4OjL9zdD09fKn{71nLx~y3?&u_DAO=Y z_(4n3HD&#TIZr$<n!oF2HXDcQX9X6FlX$t?{I}hv#FQOl3&t82s>9W#a00;RWIjcMC;fv5k1%*y)s_A*$`}ZsfqV? zdksECS3F(EY2mN4y3I>JO1?IW}EEaVSmJD!NS_PTByqTE`-&%Ogb677CT1HZl zohEPm&e4yuLsW!u=BpmIw53V{Y*7|c|8Bql1A#u3t*cp8DkfcFCw6IF;{^2=k#Qus7jLW$9Xt^iXJ)`F@(o1AfPl>L z()a6a*}6lD6DVhxg3^3m0(Ta*qq^A@0KJM0 z+7DXqvD!Gwl8*l zULU^P&0{7;@L-LN_$v7<$%L?AQ5`+Be?0w(=c)AlEB~7m^`Hq!$3^JmTveLL@onrK zQP_I!y79i=1lWj7&8`w&>fs^Khj=wtgX+;*fl!>TzJEan`fde|s_yzDjz4asA#cMH z1y*{P>pVmp@evR=+EEIDH?^QEP~#4IMDrC01zqxi0&G8~ch_2qn@?Q2u}Lm0v(Bv4 z*7SZSqqpciqBU&A2RYJ^5UXCcuvZXF8q)hS*o~!J)8g%t01=ATtKgj*Sa2@}NBE+? z=3f6Z5|Hp2gV0L(W>mHP|3(LFezZi;-R&7k>p2dKrRZ^f-juW=`kFmKliQdo$lLRRGe zO85?8!P=ak5~kitu@9rs(ACXb0wshTbv#XBPLDzNg4Ia09OvmXL_*aw8r)bOWu!D{ zGcY!jZ5j^HjBWb={NknPg+!CUpi=z>!ZM;9-?qb2U-jl9l6`~qeOGu$Gfr@OI<=3y zsQ_D`YAlf$3pjqps0;I^b>)D^4;dC7=u`4p-iInv;_)ob!Nr@_be zmGQN`G9ybp3LM?KHSn7XATIG$8X&-#c_8ioD=0x zf^Vg3ge2Na>{?f3uW(e!9MYG`&xb8ggtauAj|sefS0}M_i^uosXTuc%#v5Vq>k?T}$W|Dy5jcPAsT=`)gMxenDOF zsPtA|N|Nt*!wmJ>L7W?AWEDS^5uluY?@DF0a|C#VUM>( zuW7J^Je;Xk^?Jkdts3?xw{z|Mwaqjs8|s6(*eq(RP(2KF_PpvfEbtUlR>r*U*Wcp6 z^r175fank&Y%=Wg-7y02^^!nc3v6-UjJ+(xIV8#PXrE~G_6&fe%8d%M*PF_KZ3l7rs90=k+iT(boTBcgUY1%F{)P($@Y1qBOmF4R|@G zQ*t4n1lVd38SkrmcKuF7^TcbQzK^mjdvV>cUMZ0OZ4>T`JFia>TNzA4M&QjvAh|dn3t|leJmzfKt2G<#52`Iy9KpMxmaXB zXMrjgm!oUfL%_`GoF9dv*~!ODJo-9jIg-Nec$A3SwQ7=pQbvrb!4{Lu6vLy1{pee) zlS#G{;#Bz59MJzz(F}d}xuZ&vRmMJJABV1CEx<^N@$$>^Jh8JthZH1}DCtYtI?rK0J$L=PUo7$13R$~G`YlQDUa7gi;Vy_7OQV)#RbRu>8)6B7M?!yerYsQ*#CpZ^~Zq~nRKvn&eheY+XH07)n zHj0+owvqMmNUWP|hArpuZ)<6M@At#2vgDQR0a=c!c|zP>j=5MYYccC6y0U-sUlHwO zj&Olfem3lo5W|xYF^KmWmD2)8u}9Hbo~2Bl!nE|=j4Xp(G&EF&oX0|za=(QiG$#eA z)mloCSEv;rnYr_MqTge1Sfy)DaOpgC4=rpM!f}@6K;RCmEJ|nd;|W(iYg3qObv^Zd zu@tIF*bgrX>u^y`QzFC?*@+AeCP^uzK*8 zC0!>>vtReXt_o0EIhN_MkPhy(#=7o)6%*a9rTQ8I^E&kV8d!l@#MUXAv`S=@c4qkI zTH`u?5y;kbR(h%Zw!e@f_E-Q=q;zE>l@Rmpx}&6+hV1UzA5_7L0wrhYL&HvPs!Z1` z=136CAv9Tcb;~P$6~N`YjDMJV$KxBp)l=p{{9KFto(pNfCn3_J(yEO>=cyGFY^*hE za)tT#JKOR9t`zI@*hbylv$WY>C0c!Io-kxwe@xr+bYTRyPn6L1mC}w#H7PMLNI%o@ zY#9gv8K3MgQZdxxQZnr{PVYiiVEt;~fzKZ9xt{{xXdW6d`Z#lTnnMGd&lb(H3&>vH za6Hjc(=HV+A$}UG;hgVWqY`tb`t!_zy<_F&c^wUngx+aB(n{&BWcB$s`tv!-tp{h1n(DG#g*N?MK`Iy?+rc_+X zV593M$TIOD<^TT8k216}fnA6ETGbTDG19rDU%{*k7JB^{qqhMXvL3T*W-$>MC9p!? ztm%u3Z);!;XAK6u^8~?T-yARUhle_f%zwRJ{eXT0|HTpEBmz{RW&W$j+7xjap3V1Z zgR^5q6~jWSIBWc9g%k^AyDs zADJBW6_$XKHmNMZ<6*g4WkALwOHaJY17-%c+JE3|$HA!5n_?C4^A(_P zaG_7xQKr{IPSDNrook2X=Ihw9u^XG9?NHV@VgR?x#Kk3b+|cmalMA}vJOxpf5Lp0G zLt@k4@kOc`w_+Iu5_nitDOHxu{496_O&2qwOtduZ`*`b?basf@0uS*Ld=$EO($x}c zqVX^kD_nj=L#(m{L^GF~orcaur^A_zWaROhmL41v8Ah7BfB*mh0trw6012J}o(Ltf z6I%$N#F^*Iv()%_#EjRGkmV<=J)~F()+av%ji#j%wi|h#RIV72JpwYwcmi8v<5!)mpIS!_-jE)}--C zpC82;9cNfV#pW-P${u*q_(Y6zjv=taQ^j`&)Ub6oKA%;l(4X>;-lh^#mop_Hw;DaS z4**VJ6^{vk&cc(Z2ZE0?yy!^xXnYs{2Fxh0?)^aF$Ou}*1T6YmiNEbMXES6>C!Bnh zvjZ2gj#yIH2AX3Nq%xj(=S85u*;UjwtLk>Ww3B;ZP1fQxj>Ji=c^QGW*LE=WRR4UnDhp}?2hPn)q>#-4 zP?$C;n~jiY?JYd!!L?Puhp~Z;nZ%wGyv%|bmzg5xN-FMTrRDa-$suatku2-uanYWl zlr3$7=1kBOteTD`feNt0G~<4xirHM3M-09?9w8JGdxV%Zs{0R9AWl_?N;mLYM)#th zbT<;MYH;m@`y3rkSiHw7z&U%15lSjbzdl}UfEjoZlGiI6agjJBlHbloI)@t?=@X4c zlv7pP>|}9ev6uj!_7Y$U+-$J*LA+>Pl?=%EOpAF1iunyF)2NMG6krN&r3rNc4*wN4 zXARt91zoiHfFeX8bJZeB-K3LrUWM`(>p4!%U@rtka103Nx^s$kJh&^S-NYno-bOi1}2QlfcPJh!5?kk~3 zdOf!$rY*xXPQwt49miesYk%k`4`pPWm#kR~Pgv&^rp&0ssLpx&{3ZYz^65*aa3M(d zmlw_Qk;s@NZQ*a?K&jv)R3x2Ix#LF`F}VKZ%+d54si!HD@H7e$TSDwTbx2`nq`a|U z2+>;pTS0Y?U3chEao6tBWChl5@Z@K0{#BYOE#verp)jFP`KsI&(%Omd%uvexNLHE) zbV}xS1$@RxICq1lg|zjy@TiL>U~nhk>xAp&oPZ0z{>4^l@SJQS;O@IHX4G!sys>39mshdCBZtkh5UFAW6uMBtc;>w4 zdBUmpbY^uLzY;c?Qf5OENC$DG4p?}2Y8SvPn;JB8DUNc9e0jp2`$k6H=bz}cVM(Ty zoN%D0BsVI9RYCWd z4|?R&$ZlD#G2OR7zP3nqC&r~z1M?Nw_3!(_(S+O!Panh|;VqJbiGAfIT&KeRtFr_1 zTwNRsz~GGRr(`>t<9Opg&wYyvl;J8*T=-)X zM4fUKk*0PYpZ^c+LweIbG3#@UCqgzvYod6!fQn}{xjcMRGq(qXG)2p1Q7yv5=~JCN zdo(PCAB(9C_Apgldimp{Ehc4z^kQZnLk@R-2RLM2XDZE{7;eG@Ss72+oYKk2rCp{owi697c z34%@sfY(|cvdR(wIiJo?yg>|8I;M^WW0_afq}MCVeF^t$4C&;zr6hR*kL!w-2Hw5s zx%i3bfm|}^*oxd86<9D7<=$9n3CD_xWA_AWE1es<64h8EW@!a0w5#u>Q!Q%3mo?|d zV>SimHtjT&?$7p;H&QMr<)l1Y3dn%Wzw#`?SMSk8slrS@RsKJ<%1 zExFb2#S;js|AVKtqsYyN7g)GvhH|bkAw>R=4i7Srgdm=Z=?ya*CjmX4tU7QVYgCzz z|Dv9*kQ7oS>S0p#@(9Y?Qpxr%?3kL-Wmc13!5wM0TZ72R3WCPQpSyL0!z+v7EB3qZ zN(aXf<<|j6Qm@cq!QibGR{4NIr(w66s;1K5IreANdyxJ}q3v77DQEz>Q~C2qh;= z*Y4dOud?wytOkMvaSjfUAYtQ6k>NGe>idZmTWpx`*gu^5OETa%1jnu#D2ji|WR@kC z9zVN{>fTBXr6~@nU=G>w#^DW8FE;(jN7Jklz3;K%` z$8x&FNn`wB98CC37eZb6$C$zQ8XH`9ZlM*YKh5MUY`iwRcl1-$aXtGyqxQ<=NO_}F zeN`AU;qFB0trw600zSWo(L(j6I%#V?@AbA32Y!?4vv1DrESNqnPYgi z{vi?a!cMww=inGCw{-lg__kDX-;`cXN!&locJK?F3N8&ninFGrO0YV zXh7WZ^~L`fQKEqI+Fe{&Hxymdivx=qzR~=4tWT-f{%d;$5`f=g6Gs`8 z@;tc*3|E9fa;_lO8oed+81 z1Q!|PkVe%GrZMr6v&w}Kc@OCq-)>Uam_Z6A$=Xo1~Rp3^{(Pjo?GIp>Ut?#ud| zmK{x6)}qOpx1W^T#SurjSKX|~qwAbG?X_64E18=iW9T|pSQzqvGiFO_R^<_Cu^d3* z0z_K9%N+>VXp^TZE zIz}P+SvY*|cX&1%yea$)C#(+o56*Ng>rl!Gxn>Y#9G`RS=xoON@xa-nF_C`+c6#V zCie4Q$f^n=qUffU(gA!1S0>}hhql9){JF=88cud;ul(!mg!=mh+OOu*U1_mPhlb$5 z3n8qRg#(KxLAy0(y6R95zEe$p#OU!5CBu<(?HPMg}`@Li)~uawb~A7|G5$@(OO^ebx6}N%hAQZIG&tc zv?5MW9TO;rEf)<3#*TPum8*2>y{n({1wg&^xFw^3J{jY!FwgO_ACcKWKrUKT(w@-% z37x8rV9pfEX-LWwN_0#6e=^j4-sJf{3Py;Zsz$lPfJ-$^5UP3=3T?)Dt*# zV1a#w#YXVHI>DXlW;VhXZ>LrxLPXDL8#^?xi*Cr%)oA}GZ-?=XC{=+GZaXbsEMX2+ zTi$byU-jz2y)8%wDRR(X)$QVnSat|QXWGgd8QhV)Z7@OZq%g|&46}>7faXB>?Vw$( z5=|zhoaXmXL%ws~KS8~C&UOu*2t$J*=7M00c&iqJf=zd{o6I>C==K$CO=UuNa)k=L z)%a+8M96e6P})Hz&o@D%8~uW;F)CTPjl%(!bp$@u4q_z-y7wwHQ0TXr!>c3E<2~*` zk@TvsOT3o$AYO=0ti^xDO6+$2b%=AKC;Bn+IC&3J!%nKO zTa(M2XIXuNl5tKBo-M3I<9-)`=$(pIWCXJI9%ae+hoE(h;}OIfj^RK7P_`dL`aQ(B z(HZoj0W`6}VY1T6+E{UMVrczV~n%ytJv9vp^}8+sAgR&MJZ2GbJfEzbesA9(ikZFn0} z);9cs56P?kQ@Qe$EfW{18zNiRUO`EI&h=(V_Pm31o(+FBDc+_<9AY*X{tdPoF>ZnVTc~f&88fBu zG2lTrtCmtfqOqdm+yWTZ3w7(entLGSM6C;-X*MpUo2km63upiU00Ie6000K90iFmg zvJ+bfQ4~asOQR4B08>6@rPQCim@p07^IbWaSQDAQo`aTpv3VJ;zQ8by9-5Cgw(5Xw z4`VCB0f%ZL21$n+lF`;~sDq=p>$XAGk)%1HBWrCpDP?I9FThi50LGo-1-x@(1b~mQ zwvEsjf&Yy6j`_A^Wg7~GbH*@PvUGhewyv0(+S|v)JXah~N8zm*#Gm2DfNyn4toawO zAwgc8Jz>D{%CKfoRRj!l|5Z2FTyolU@mpYBNk_Rqxy9*SX=c+L6&*v$ANmPHZD^ht z9zmtS8amNM&58t=s80Qxh;ZG^!FHAB{G!;1A4s;oeBMRTqpVJ?h8z?!HJ&z_m_T-w6Qgx@i;px-bGLnL4C%*Q*)~kPS4P%g0GOT zE$^0WqCGA37aZNhy&%Vv7i>IJc)|@krmYASS~eb>`O2Kz~xw7pd2PA#&gMu zu9ZD)x!t-pHV2`$=6RUKMKc+c+(7a@l4b|zO3MlpATYGX9F%lU@iPP$Uk|G)GPA>l zF@ECg1OEm*#&K!5k58PCtfV2F!TnAyf&|!qqYH25Y=0Ti@hM3XDaEINjEC8{jlik1wV%==hf`FGyE%n^u#Et3pM)Ia+rv`+CKi*R_uyElWGm5uo+B> zc}nE>636U)sUNX4Gh^>v!rg<_(o%wm%qXI|5Z&XaISF>KF zkj;}1D~(Hj$P%zth>#=gf3zoho(DYGW2k?!>_iwQQXScydQv;?FGAdoL0ZlBYid4e zsc$=pBu-rz%Rtn?NA$Rt2@AgD-oyvIqwH~Zz>(dO>&n^}IrPnpPHoK7G3Un-AJ+>v z#zAmtcS`tqv2Val*q>L<#3>R##S+!={{%#`p;B&1QNs!1)o1w%D>5Ue8A6~wc;QQ8 zi9%vYb5|kOVJl$d17uI*YEU~RVLpSQfuu$m{qcrTcPrJyXgFg7(8HWwb?*-=9_VAd z+xQXlVAnxIEWxMxU6N&5c^)Q?rXm< z`D=)R<_8$CWT2SS-F<%S#<=v5|%>1uKlKo$Z#mCF~%oe@Iv(}2ViWqO^i%FH3enn1Opj4r9Av0;po)_3O+!%aPd zO;*XjX||1W-`zO~(gnHagH+7fN@`H}#jt7^ID!#+O$XvkYHwU0Y5G3c zB`W4Qa&9_qrOCtgWKL-~%cnxSXh2}>J(m@^ zbjv~B{hx%j-(9-*#f-_M&93CfT5#L%=_)Ms{n7Wr9EXg2!6WB68tc@Knc!tuwHQh} zh(73<2d#AQ;C#cqfu=V=rg>?R)B{R>A9X6A> zWnTaAZd}Hn^}l}=v~b0=9jGs3cX|HBQYvHK4!@hM+uM|K;B#EBWE*-Ef1Yc3JN^-o z%zoer?NMr`^?PQL?+Bd8x{6Wy^)e419Mnz0e*7ux>Pr3Q2VKu@wwXv;oA-e{2dEn* zaG=t2z8%mH^%wD-qumWA zuId`fdiTuNb~TspaGq9V1rBpMhd(IUcx?Yg7w#|g9OSCZwG{UU5G-*tjTos~gmJz^ zAwUTOd^%K@Tx^d06Kj_@fzx*Yy*>tbmsW$;sbAOPope8wRY@L09jdevO7&oX@}4M9 z&KdE&t4t3C`~Z%wv54pz`OnjjNWx7tNPmM|>op6)b*1)8Ok=+(KLAFuK*tkOu!dW$ zMx76{LmjOq`KRFX!TuxAQDF}Hla*}I;E&3*7zp9&^1NEocJ+-1LZ~)$q3q?9wk-}p zs7ho6oH(56Cd|~sre)+4nToiti=I))bZ3WxKmgWmqdDCzb|lKco9lnd&seP%%QtPz zKX(@foiK2aOtI&^5g-j9g_U@>Ko-{G{Q|O z5*O3BQmkx5E^yE)_EKGZm%(53x-?}Nu`=hW1#{I|aI4EC_ zGNIEpqEz^L9m-UXQN>e$G?ZcV*~A*VATHO)2?K~4$H9k-)Ff%QzVfSiMakm74{cP7 zkXWJ7^WDWS&^4_?iry3vh4Obvr)fwz{7E^khD90ySy_8NqY>pFW`t@30#MNucpRho z5uDn@zW{8J1c}2&F98>yj-YGTE$rq)Y|2}8B9{?xB2)kiMqjaP^M2y>T%2s;pk>fa zhXFE4f0St){pnf)r*p|M*tcwB9(Hw#k~OZFu9hGp5D=4+1RUmpb-tx-g@AmGo6%DK zX{}V-^P&syM2hJ2gW)g)GXYUy9G%Oeam5SH;p-Z6ZwGSP{W|4YE(a)LqdwR$+wsq~ z$kOG~)$?%`@793?B}5^yMSBU)}_0c zG6F1W7sMdYUUS52aP&pcRvL_%f|Z(?1zh0;I0Fwf#kq1gJ4%&<22!+)OLf7v9j}CU zY+4p}-uHu2D|9-6NLR%0mAEPVHC$=@JB#x5d`y3E{%^J|0xo~OnqlZ%T4#M^*XD{seaM+eHED`o7r6+x?t%fQ$DHuO2ITT z{bnWJvsjdxZ($ss|I;}1(988+9G|+jH>>=c7sg!6xO=h6^t&n4F27sVmd^N9Za-Q5$HAYic~#c%SH@$*gD9#GGT3|(N)>@i>2Li(RX-(xP^Sf; z8zA=Z6q0XHH8hEBK`o{`TH~5OiRrW7qAw2W4@v-c1-i=KcZ4(6ZZE171tPrdPPDQ# zyJnY?pL-Pa<0MgAZY-8Svxc?w^zh=uNi3N!x~Q`Z-XF8)#+K+0o4LjEgsAdjVsh4j zJZx}rhnmgE4T=wb`%8F7+1ebxe<-jet;BZc!%~sXFIOY1Tla;o)N9GMC}0hnFFfbU z#a(r5wJ5OgMcNtA>&G}U)HVEanJzPWISGV!0lOvga@ncOamBhKqS<<-Z)0nyz$6m| z`0#JvG>IuEAEq{Z%O`nIJA|(z2|~yO5-^55eL{^opoUn)wt4(K=sYs#cKB9iuHC~# zDK;_CUY<-Jb5g0ErjGm^v^TZQx})DiMewGiD8s+zvyNWX*;nL|Qb|BuL>6e{z=J@_ zfezgTm}TL_?2C&B#QZPvnNW+qm~@CIX;>vRma(R;XC4%$H1IvCgxlK2iGAZ!CY#Ly z2$4u=MYQ{zFSaOiAb&ToskleEQA<>9$O;EKJ_bjfOSXAZCd(W&x}9l@JH%^}P3?0J zPE27Mgh4``#O(_Uc@;%D9eMCxj1c!)ilDqt;YX>ywqr8U>gfU8&jUU2{&$!@-N4Zm zB&Arv;pDP;+Mf9{a;rem@GBs|pe?KbCM^m(ZLN5&l2BVKcn;$XKhO^8DB$|3Wzot| z)ck?VX(5l7z!kr3k{+kmOMLPGaTQD=S82rsQ+{i|i_14ZxL?qUzPT%($rc;fT_+*H zG!KqDfZV&TG4`L$^Epx74uT&P1w)v1E8LG4d1_Z>*2Cfy2Dqnr`~E02k%h|YpP=VxAeJ#EUl-d87Mn3x+t8hnXH*|KC=CiMISWb9 z?DNti+b2ct>F08^8=xFlt({(087WSSLRMt;XVUIuq19)@zRn`z$7P9j5ASUKXB9F|97&8Y+KIH^m!0rM+9$zRC=Q^YovnvbQb@~Hw zsM1d=zD2+Ce$6N0au+=>%egxdWA&55P(NQ?)nJ(8+RNvsn!RF2R8>xXaWqNn%N0KP z5-`6$N7uF+HuVUu$YDyD935izg}IxO$`^!~&#v|rUf{i1tKZ3~aC z+8zgFKbDZwQyCuFWgViJE(Fyli_f$#8yJS3kPUt4J*&Wvyme(F#4m;*i+BPK8Ce5H z1)GHqN*k5Q&tLUuxOWP_9K(l74cK^1JK+Bn$;Jrh^e2eRpY+|M7ZyWg=d0X|E2~Um zr4j0zNAYsv{`=OsY>HRgz%zgo8Al2=L8Z<#5ATd)p9YBiJR+1!Wz>A05{jumEQ|1*X^ky6I~8_ zx+9ovVzmNwZ=;y8YJIF(x0AEPuCC4>v;o4b{iY3ivA-DDYQ<))ZX&1%>47{q#OC!WTOc;$7)_AKC0S50%R7pt^Ge@Iizz8n8|ZziJD+YoRENc)Dzdc3j|EmiXV_ zY!V>f_4=tlVSwdbsWVjKWKhsJ+%#>O`uciE)h(N?*A=~<$E0b-b*LasL+9t@2&eLF$Of-b zUU+38V8WN*ChLC;e+0JPo=@Uf#4B1Wso|{aVjV?8Zzzb*v49+h;b0DTOynK(GNy1% zr!i$7Uzu}aXU|vbXUN6j=9$@5q>fsCNl;X?Wrd#jQ z;!|l(Fi4vNShKQ4PEV?Hnk)`BGP1zZc1;g&Ef}Mj6J#ryjZn;+I!_;J$)^`&E&P8Z zx#pohvPkYO@2I!~?2>(jxnO5`tOTgnlbx1`mj$Ukvr>h-7CFdxMAj4a2)bHgHEGMEC(+up&#Qil`^! z!qqq9el7%F#|wnlOZ5)^d?&1j&7jgT3Y7N#S9Wv}&s(tfTUtr_W=}HW!>pRX3tsgU z&j4_(WVmR%JJT|$>*7F~{hlsHZB9*iQ;aTp&kU@%g@^LOx%B7Fa&i;%HH151ZZ2nXP>DQ6l?_ z02KG%!R@4W;*t0lg9(?OID}wmpNCOR`Z3)0I%4P!ZhRrD-2Uc=pPn$$S=gVnbh}vx zBMJwY$P=w9wOEA-BWJY}AK%tGQbDc^HoNd}zA>NyPbvYo^@+1W2Yso%(&*>x87628 zj;QbFqv8n%Fj(u)Z(qc{?}N(AI~xqB`!Qo=uO6i0Q6V$Vk)VdjKXK>N03n`XnMw1;ZvHGvb@?r~s%aiL&JHDtfcZLW#avIh#p30eKuW0eFP}ZQwo6{{bZE_y1hQ)7 z)H)^`9V)=|Ku0W%T@Dhv{{%FrQi^D*p)`V%O`a+FS(QzkLdiC4+N7S3uI{sDfJX3% zRVX~e{|E=4C%u99}YDq~gwf*1gM3JZDX`Mp%jm+jsLxamYGWYU z`XMARl>>iX%Y(3Dm#CkapfNH$S)nMc6zss1zTiUV&XC>px5Ew&`j`z|=vq5JNqOsz z&$@snp{;81O3TPXFrm`?49v8$K7Jv{V;*b-fIC#Bqfql3y%b<0`yoPWL&|HGvnkoQ zJ%Kiwk(Dr}B8tY;pl)sm4cdTfC%JbM3}aYRWT~NNzHpo;=Ld-^PviBAuGycd!sg6j zG8E}8?M!mSa7-@C=iT-+4OrkS+o*j|+n)E?2n+|&jcPPhm5kH~6C)icy{*<~i^^*D z0mCy?kDsmN_1+D5FMJ=2n}M+3OMuC)T~jvSVDr?sySi=~!pY+^xvQ-;#*G`0Yv++& znEL<3LnK<(;BRnv+IX=Hi*(48@yF*2Z=`!$Qbb3S=b?S03H{k3edy`W+V%T)vJoyS zwB?_bq?~|iX^&>O8g#E|ig|BH2)u2hy;#?QO&LgYzox4P)yJYJ{mPEGwAchFBBZ}z zI&Ajv{Q3YO>Y*e(j#Icq{Y`?42voRVy~Jlns@bSN2zgMbe(&`wiC;1lV4<^c?N`8lvbmeh$60XLcK{&9& zu6OaNnFIgF8yhUF0Wm!+r?hfD{}IWY&|>Mv3V1opc4bRC3XdCzHnr0|zZ(}nh4%;u zw`*dDPxC6ys8Lwx+2<&TXVtZ8>X)b9CUfbF`)v3d$(w{`g1{|-C=~>ft=ARPUiAv| zaW4-wU?zo<#8w0~l`YPiednQCUx1#Nu?85g_Bp~V9bvHFYtiK{uxHnMrIZ+dFHrk;XoHt^@US(X(q1)d z_qrJ>FG+3%!U0KMZH-{&`H2-_bw=Rqo1b&H+R^hhmvb1SMZCX}uKNm$!|;1A9-Uu% z=!1qk(f7o&1hDf_rJHBomVlI(wd8%qO9ET_D5FVd0Z#}^Pz^1AizQIb1A=ZD=LEN# z*3845Iu6Mix>VqPMc9U)K2gk6a;QxgjsnN)N)CC{lq5f?U>9@?xN*QEh0i?uh}ZK& zHV^BMxK^Ye%A8;hZOO1cx+X$FhdI_2Q0`ZphbBFUjcedZ@$4GQiA1ehOL8Qx*b6^d zuQ~(AwA@zGfFa-*2bki>WVi<4(d=0;31AUFyi&deLqH4-8@$k11q271XZ5mf%|2Z^xmBA29hJdtC7IT}$6swO|~7I1Q$W-)QcD zU4oCC6RWgD8J$SsB?VtUjlRoR$kZixCP@9}4@{;9kqBU_c*EO{@uZFxkfWCYEUPPY zYP%XzN0rJ{ZNT4EC6~`qGfTr4?qN|XEG_fVZy|ND`vlVxrWm9z>b^uxTb?!~a~QEP ztH)0pMio8gtxqV{uR{F^I@53iu%Yham2}SYM+7pTwFGRsbYYw<(XZ7&l0LZ_rHiVS zk0f00G~Ndoi@8pr>#1jDS~Mo#T;Z7pbb}~Ut1jakTppuRi{4} z*3{r!waUzcsU4B62o1uiTzx1rB8ZeW;)t-_-`NtMN7xasYf=yZtV%ztxSt<3KL6C{H=yF z)W7{7w_%C}4o`T|<(savMuJ&}RC!}8h6)%u0L$51;wx9@s(jqeSS?DBX{Sc&GaDj4 zZL$eM3{{A2+`)JbB|e{@*Fx1_AE!{5#7Gc`-t4CJBgU4EXyjg)$nd4jeUrmbf>`&) zaA2`_G#R_&kHE}pr<1+r+)It9bLJ2`Qt zHi%kN!}#g>DLZI9PTJfqQ}1oOZNvq|cmBd7+_~Qe%!-5JOcEcA1UpEAIp-$VA#UEI z=IsEJ#Yz2x^%`PF-RD&1X>l8fZ)gvSZWoaUKaW^&gSqLjv&K8dE4xbM6rdD(0SwXB zCVNrJMmrn-t=fdXenrf+gLt28F(ylNGZc}P#Au}*L3lmj6!)-PL#6K=T%8iIUzaCU z7NJ{kpU7GZ#jp}ftik(MRL-HMcR@D%q$#pXFdPl7icQB>iSl@CKaaR32(BkMD0LQ@kN-PI!|{;iX=bEj>bR3&2!iDYFaQlja_VApHwP|+dV^vkkd~D zfS;5G<`xJjT}q1;eWbeu;iMI>rDpH=+ywko_t$SpTFpHx7AK?T7T}qp$JkoHFu;b0@ZoG@ZuEz4!|82 zsarcM93y!ax-W7@sXWId^l%tOK^t=rw(p>Va%Vr>12`p`6nFBE(5>)Y+qVkAgpP-V zt3+0XWAr+?Yuhb2SdK}N+SrI8Ho9%)FFhjb$2(7y2e0YUzi%nP_my`gfRP|6hB1bH z=fRfP7}#1YEH-{HtFGFhpIDSSdH`u4Lz-6}+OD@Vt$wY6(`3B~N!!{jBc{JrKk`4j z7V=5Q*ZE0R?__xa|Kz>@#cyB(a`P8*TXIa>X0Y%Ah<7css+EBXx#CM#|LD*SRVWMM zsVM2#5dke1=Kf(dTCH21wxGiSQrzZoD;P6ipY%8pUx~&+#LQSo)5p_OijR)5t31iu zvb6@+{!H;(Me&-D!Q{RhKQV3t{R?_0M}aGqG3Wh?jQ6EsikTysuJZrd(nVFIv1SeZ!3XA$0yvqq_eyk|HOuZWor zO?;TBTVWvP`yZ7r6xVrQ8Qdd3W!WiIAx?7Cc1c`Hm4)<)fRVXExf01@T3^n)sschq zvOq%8gk}s-L*OU{fmrU^=W9Kwq__pWr4v~8rKlX=i>zhN2o6kbciGyQhw3O^?3UV9 zT$Zyty$6aaRD@LrCu`LL056LV6m_{O4!E?Uq0RS^&6X6tv4GnWmBHzmm$PkQ7b^g>@?w8|EuyvWinZQe9}>M%#L)UJ=kZ@E+aLK6_~_ zt|7f{*;UXcg0N!{k#raZLJj~*jU?>`U;!Z;lQY%D9LI;<59DJv5+UiRaolut0O!qUW ztKb|VJ}L^KwmK}0sqP^fRQ1LR%R&&qB^NYsr8nNCTS_Zfy09)Iq=0`}!6&FOGua_t zA7&6FEDkOIz~%*+<@ULNv*=A`w3!o~Gus4rOXxIh&#(FN#0TJTFi86`)5a}a6MaEy zoXs(AymY+Wg;(^ZfE0<4jM^kdE&gm?N2j;{HUhy6N*4xEd{WRe$(43S9WSe;k{VQb zQ7vnoTH;@4yojynqD6b95o>6(ZK0xBLj&*NIMVohAkKZBq{ z3E3eQ)tfy^Qk+th7;L%d@nr%W^Ya?)rHnIJ%-UZQNw2ysp-dhv3lLj)x5@>Psm zf=6}|-lX=h7&Wy$NBgoFsi@a8<6ErAkp*7rl0Yl^uQqklSY>y<&gGU_3d8ZFFu2<= zJ4IJWSap=QNmizI^B_pouTL)b#4ASFULcxukieu?3Jiz?5P`s01XXA>xloV+0Jr`? z9acIMdQCCHwsSMFafJm-;9l6@`rBlrd?I|=E?X8Zw)dU!k9!l~OZpL_%9Bb`p2{GO zlK^DekR35DQlEDrDpbvtmjYs=M4$-Wpk*Y*63YlQt%R&$G5i8-N(|^eg z_VA_|X{5*owVmQPG?e@apsP;=>m;)@*6+IQR*(RrKwQ5QHKlU39A;t{FyF0g6DZ$O zeEvN+(V_FNtMR0Z-a<3~Z2zN*Dh$T>k6s5vSuap&#RIJk92=%5WbspZpcHqx;?b5f zQdhi~F^4L6e_q`7=Y$Vu_Gci5LPlR4kH!g=D%2=LCX&@B&5_p98q);|#J~i@iHweb zqkw<_1~dhYF2R@Rm+JY?+vs&JnVUXdR;uOJs%kBKT>VQb|kQO{>9;hKR=3~X5i@T~CMk({`!Yy~g+yE#+QzueL*6LcF zGBIOKM+hh8OqhqDNi{WtaU#jOwCEzYDi_)gzdvc1(2G} zK$U7~aNdsvgR)xLh+YImQPTzh-J>o|jcQry6kA2MjTBJvLB4B0irS?rWX6@y(9_(C zZt+}uB01XOb$3O&w3L;O8NrrG+jV940H7m1Sm}cZt;@deno8N@e?w5Tkx0NHIb7Gr z1!>hu=pZGe>Ux?qZ!JfWki_5))(G2H@`Z=VZBmg=oVENwn?z=Ev2U5y^T;(tTP_Es zunhKNC7iv^Y}@5PmBSFMMj(jvw-Mqo3?SCcX#}?Hcb#p(uMi@ziVRV<6>_l37>`|^%V`pu0kXMB z;pRizsNZY%A$nBR zmKQ;UGEl-4hV|ODT7^y9D$e@FFEULP|dPdhr9e>~VRvgAVa1U7A(v(?}JMUS~3PV9NgrU`7WDdzy{Xt0rW4udcYEZD>D=lBM1Sr zZ*WJ^T~%y)EFTWe6OR`{=zJ_4h{81^2$IbVfX{M%AsSTeo}9`;5kMd}OK#Pcu~Ak* z0J%=^2L!{@w)#ouGXx+uia7{1NM3|Y=O836)+;}Ms(Nev={K(RiOEsv`3@fVCIhX%R*_`^h{*&(7Jm6L|F`h^BgO_P$|bWO zg@J`s_4%VZ^Ga#;79=FzL7S__iT2;yd&uI*KtwfIaX}PO*|jXSr!TCcX$aTegWqgH zi4wKwH!-Tj^^}rTQ;Ys8UTf3pH5CPd@nWjaUgm3IRa}0N7Z$PVff=6P|kiF6+FRrs0KSbxt4q zsefNtKZkB{K6fs*(0}#k zTLkjJlnZA`vnkPFsFy1r0zc~YOksRBT>153)m|(uslABFiRFZ}?M|gXsOC-m?Rygv z$6VCvxL9FJ|B51>(21-&l(JH)si}T(;DHkv5wekKgZc-HUyTX+o7MMueA8)m!u#q8 zgCX7zcBczm+C9*o%iKNp{y+Wgo9+$IkKqr70N1GXGpjHa^eo+G#D44Ds_@?(eUe+W zshSjyL?k1WQhm4cb@XHS6+m1Gyph2>qhzWaOcEEzn&wm zyUa%X;wl7ZQyNN1Sm5F|r;J}ZeEU9gi?P%3BTV@!-R$<*9b;b}1uws_-^CgvndBiF z6&0EhMPnfpVu87(6?!T{pn?J(Lcg}K6U*{DEShWmmIM0c(-%N9)Vp-Hin=q*2~g36 zs^|8$;!1J39brv*ETJG5#;Fyx=NZzC zS4`C1EE*$^K$o+(#CA{Yzh_O%e|+^EXp5jwAp?o(?gJNl@#TNM z)_LW|w>?U*BCTfVTdlg2F>w~J>P|7^qm11N(BAffGqq zI&!JzEHszMmXJg=7~Gg`k!DyYSH}4$Yi62x^2f-NRZ8D-Ko|P=npRC-`;HIo<}nKm z`xinYsq8U){G4uv$q6vZ`>i@Yc z$GYoP-FI^{yUU$55e3=~35nX2DI;FyqJrtuJ&sR@-29}l}@YY^g2zHH)N?p5Z~?h z_o(n(>x5dXEfpSk`bH>8I?dMBbzWQGdXUQxjO|jffeTC=AsQ7el9I@QAlN8DN?jHs zAhMv&2o`C;Pxg$0c#NMXCXTf$v+(+J{y9t}=$fjQA%?wkx^`B*s!m4AR<=4Dbx@>2 zY?ck46G$*_;vjx4Pbq2$1Ur(Je)^zcqoXJcFgj$_c_)Q?eWxSYW_|#LpT2V|%0w&k zG01SuWep16ebzt?dv{8d1sL#jS$4;xAhG#o)y)eQN3ID$4e#4h4;?L%S|wSc1ZH#~ zMiFdvh!5WZ9#h~dDpf>6LXg0wZKxdaR%k9SOISfl!9Mmvn!-@qANB#>rB|fy+Ehlj zg}g5FS?qitA;u-K#rZL5E80JQ*lErcPd-*L^ zu6B#$LX}KF&oovNznn^yP$}1a!xwL^r0w6v81u%HmtyaTUtuKge-Hx1tni>MjnL#= zq>DBz{T(>0dv&o+m3CAAH4ZTW9U&SO1(pzoVxvT0ByB>ZRZSVfS!)n?W!U?;AN~5q zW4aB$@Bk+Ny%Ou{figE83DFXxM*A$YQp{hq;m(fXaqDydxx6Y%a49bCG7|wHLAy!0 zC?Gu;Y^kfLsB)LdpK5xFf_%LfnOq= zKHXuknse`;JM0F;qPknlMnKa0W0GTfBF*%TEaN%Yh(=H8yUjgzkvqYa7-j6PssRcA z&vWqW-Z51=fY?2k2Tmm?gN(Q+8~6{?4#C4>q+NOUT2NN*no|%YjLpSRh#Vmr6&7OoBo$S+XcsdjMuo2ux0C$e#Tnof!QH zV7j{+lubB#6RR+nGI7rMafQmIl?KNuH{2QZOc3o2v$Xh5B@2a0X3c+{A>o4JtQ2y- z+jxnThq8bLN@1axh_WCfh6-Q;$4hBz7j{_D`BVGRG#gpxr%Gmy6aY{LsL)CdS`TtO z^4k`oyG6I^X2Qq(-kD`~sDt)dBc39^M6cHqD$-TQbQj#x~{6db*gZ+H`Efn^)PRsb1x&y-Z(x9<@Rf@jgt%)88iBwUdMt?~&Qi znxdBSOjWoEe_s^^n;ESZ1IBl%LkF7vAsQ7OnvR7~vJirhaW|?NR^83sa3b)F(?L28 zqXevLYNH25$fbfHKpxgz?bX}_Z>ppEm<0IaJ7aSdy; zJX|e63qtiZAQdMO((Qn%nnRoWnk(s!9=R3U8;wjn%bo9WJmz@C>t03ZUT==)-|6Wp z&3yRt#~dR&-FP5Xfo*XAmF7_xZFY>ijazZX8z;Cej7b_NmK>PHT<~EocO&hH7NX*A zscU+0*!ObIv~9+6#l8%=y{)HEgiYY9mla_O+4tw32`IYy>Y}1#k6102(YPPn7AM|+ zv|)g9AsSUJy$Zu|AxL6`Lzx;yEXxIGSl~eX%%$8@)5$H;fb$7-0w zQs0sfybcJS9%&R%UL!vU(-h9SFI;wgW8H;6k5PH_4$*jcD^MtaRD((tf{GFVfT#kl zp;`?zU6u=j)280U3hr&e!VZQwQ{?+2(%=@RuY-!{-!I_k8EO>obns_^toJ-L>+?Sv*VrD^N#M;=EK6@(Fdlt*uXt=BLdz5#Pr{8*4Ln414)XT3;a=6(zz5$wH9?O|=z^l`5r$BGQ7(pm-ggP3!#h zb|JDdTV^qTXUUuy4DzV3#}rxkD6hv`nk4&d&m9HU{s~MsIRa&8J4?Nk0-Ks_&*5%) zt)v(bqK+aF$0p_5341&DxU@?0+oJty!r+N6dEb6EOW!^9Rue6bm#AHJ#lrHU*{r2x zbx;cN211L6gicFrm0t7&!Y^@ZsOyQ=T+4U>DgKY5X?7PI74p3l491}cwgiROz;W@E z;IkFetBmp%>aAl^lq6~s?%s7o&(4E?V3c9ehR&umjOe6e?(cdDL{5YSMOUy%ND>&0 z74Fr*0RqyF5w+`0il&}TQeOG* zMOepshL|U3nB*M;ptbX2Pws=K;{zc_{a0utlrRlkz%L28eEnEpe2R@9N`Y&YS z1`(9I(ag6YxqP=FT;)jpN7-u4ZdFrH-ff4Z9w8bPJ)#oDMTymV=PdyMywD9x3l9UT z^KR+Bqy8mU??Wen`G2)~!ML(_*(KIdg?EaROWAj~UVp)>w_^2@sz(7`ci_r}by zj0FW!flWk{2@NO{aDdVlyNd!uSf%&QTv>TQ_hwUdZ-4s~4Su74%)ZW!Hx8!DMecHlXu6Tnw7Bm9xU2j%Ll1EOnvET`B@))cv`T-!SHj zHAy?6nn=Xdv3!;!`zdRTy&j0fKt3yVP^{)VvXDsS000022`~Tv6njCM3Q%AQw*U;h zJxWP-mb8r&11A1dJj4}l)z_XczpB|l0@@ZeoZa-2sorh$?D2u(c^-H-%0KR-r6hZM1oC7ASfalZyyiupfw?0KI@5LAd2$%cQlehn>RiE#r~ zDtAUT4jXEsqbUsce$N~ROmQ=kh%no$I1>52K1XlD2^AcEL(kO84~$B0#jqF+3|HzX zLjbx@-u|f6th{H7TLAgqf15?cSVf%f5m2IMN3l@|s2!%Pi+Gr!n>l$Yl-wp$GptA? zi^I!)%SzlMT;8e~fw_yJR5c>kbYKvb1Ztk>9kk@86C|Ff%Gvs{zs@`0~nHS*w| zBOS9eo^?bEqbp}C7`lOkd#OO7_V`swk`Lj7iK6CGskqqrQjqY4Sv*Lx7 zZn|4~C@%NBS|q%%L^micPbjyMRir2GuLEeu#loH15Bf`7p?!pEyMEI>7^vbeD`w|P zO9as0Uuy15IewgN&44T-)Ci-*k#Hmj; zWbm8&;@^GBnxUqKYb&wu@$2xIQVq6k7Tgw5iB?XB`HH}JhOh`l=vH2qNGEI9Bhf^P zN5}r5`vCEO#g1x4nV8LOND38+YlC8^j-sx1hxsdSl=+A`yWmWWjpW)= z=#NAT!mYUk<)kjh{|3jZxB~H{;Y5(_*DKA4M>r0Tu!3DE8LwbU6)`ffM;o@KMM}n^VmmUm zH_+!;dS$QiLtscWS1)LW$C0^O9}kzEkxN4YP3BE+(7XFqZMp41b{djB-W))W#)T1& zX14?QuInDf;GRkydW5cq^nMbTO~&iL(bn1TZ(Y=8R0KkLyR(_TOT)+V+KH%4Xo40NHgtnqYadgH z2Hg#8#Tnu7AgGh0>7k3Q8MndKed15*op>|)Y&8&4RIoB;KU)!laCen^+#M*>AK`(X$T^>(Rz-gp-lowXp- z2X(dD>S>lMr;z=vwB{-TlCmN_ucLau+UY;!O^?AeS2Nw)Li#xBsREooMLgV-isTOW zLd7+6FmOoxaJOc@pm`i*gO1~72m3Y>xVnt#KVhO`LR+Tgo<|tGK|INA$}kbVQV48} zX7A#@TEs<5xwkpguFTXFZ4JQF^BiS|p!^MZ`nY=)_{#1S4r*YF{{8)AJ0dX^B4rQ` zVEk_ZRnUxkyUindbRAord7X(#9$MEB_&wPS?L=Yhj7ZS>-V$-EQTTVTY8NoS(>O*>8=f%IP9+F8~m{osA(>4k=r(gN3h$ zO>UAr>DDMKTcLn8vxeMh4T;QR&pkQ#TV{?8ie*%ji_hxU9f_1`SP(8?Q%hY@vRo|MM4r3$yYEW(YyF$UYZB?U2^h07Ea1I2uk*|+!{xlf zI-`U~qP$D1>qA^puM=*&hElN%GQ)OSJ=ETHolmFMZ!Sh2li+BV9hTq%4-V*}U>^cQ z3GE^B9&Fgqyezbb^Au7j!}2u3;`$)5TUT&!g1ug`pdA=16*OOw=NgnBlFQGLt*BFs zVGsY6S|9M#nZhbOQ5RR~zb)?hF*fT_%oB*;NUaKoG5@>dk}T9xb+ud{#>V8r z`I*X@g9mf~LCc$j9J$qQ$r{)2HbrbX5q7v_eYBe&?}KhIP`fAob8C#TvS&5mEQkE@ z!;5%&%}Zx#(Pz1p7^6i`bSm1O1+D;&eEVmWZiZWZ)E*^0G@8la62~~yUs34peAoJi zQa}l?i~T}RbzFnTwNPX;XeBhH`%6W2)|3Y-iT?UM40bk4NvMHbeFIEv?5aonLF5zPlPF?ij-QACO%s zn<^CacYnFhE-p;wE9MJc9ljVxo5xkfS}H|&8cYg&it~)erv#GFn3js8BvpvT80v=` zD*N|TbW(w4uFJ5}Toh!k=-3oF5;?5A#37y%T>@0G-e}Rb10ZvFIL;xh^*XW1#qa&% z!mRjBN6WF$YXh`sh1cFMz>{?70a~(fO65jdjRfLmelv>dmUJ+{gRtt_6Us7OwZl+f zeYmib>Moy%D{jF5o}(66ZxRcsqDeerX+R#UJ{P38)7$zC;1BqiHi1Ok=k~btu$`}8 zRXNpV-omC~FZrIk6vSdz0H$^=gKLxE40{(?NED|=E?kf+^6U-hcjwoCohCRdp!egSH3Y0v%y zreA)ll*aR?;`hrI=L9i{WfV+Bz^0btXt3zECs;*zXc|`7us{n_m^H5w3^$CJ9PM#e ziXZ4u7eFLd$CdMjSwp}a)@dT!=pDO=36lF0t1tQ$~Hc(`|=Q{Z9@C5fSlz(eyU9C zgR3_E(`oTnaMWI8MEB&$C*eJ)uJCxLN!V@z$N}aYS9oSg1Zp zXT>Nxdb@+2RAcpX!N;4v=}@_H4nvYK#1`#Hz6us_tbB%k-@k^53DAVt*C}3FDD6X> z$gb?l6QQMhf!h3GxT)vhc>yj_LO5WZRwZ=L{kmP@oTH)a9c)X3rNL(uP7e}`J84h!K6;o?=DkLXb@^=y*TUdsmi z$H}mr`auAI1Qm9M(V4YM*n;WLSf<7f&h+7!GQ9ORg3?plvtPFMH|-YpLpj2y`Q3Is zl$XFF6Lf4#>SuUR$U$gI@nW!32_@O}231fMa2C9sie-SOyW@>_9rhlmwj)HxmG|YMfx3_EhzQsc z8-L{z3ysP_%Cr9nm)<%qzH^iF+cySbBfx1Ko!At!lY%4*#57Dkv|oxwyBIv1o;ENG zPV$(b*B3^{*h&uIMl>qP^Aa=WNoCiK1L7q@^UWJUwhDMtw!fEZy+;KA5I=p&ylr;1 zKi5~+-#ncfy$Bx%4Wl$4A}`AanFT=MkQJW~z_ogCr4M(8EH|t{bU@M-c&?J)|&#JO4-Z( zVHZ1XqQ?zmzvDgl2p?*u`HQ|)1U^74FG_t5rD%X;te#r_0WNvL6{1AXf@&E}>C~*; z&TvQ0t}iu0J_gn?Q747uVx?lJprFdIPNJiqC(3hG$I`089+*}z#$HqLFROg+5Y>6Q z-x;j3Q1x;p_;nMt+heh4N8Ou4j81R~W#`1aL)Hv}^CP}NrUI+_Y2Ut#ERIHHe<`RI?uI=3wC-N|HBz=?{D zf%keGE~VGJAYpPZ{|HsnI)_A)s*UK^p4{NGA(_3Ig&p#e(|@Y|3m>xG-q5gk}O$L~d22!Xi^ z>-i|%_p7>1%@)7!Dit&@Cu@;JdyGKM*iy(9xZiMi49-R6b#F6$1n4-jBBq@u4O){e z4}Ozbzt@_W(ItzU@yU#_lAO$IOF!mL0pRCEQuaikf0PrQ=C7Bj0P{kGQMxAt5G#~D z+9#iPu`gfQs4TS2#9$@|UlK<7dkR~2^hXlHP=f!zS+WF#vq|h(?EC~mQ8}5FiFZd_ zT1XZWTIez+JxyD7qr1{Z2pMYVHqA64zwrSM4WDCc3KTamBPNV$XXVS(_^x_eDS(@_QZ$c>%kAKvd=C?Vn1B64H`25nk=Zz*Lb`7J5pfAQWA8w zUbPbyzX0D4&pyBrn^Jkdk917YSny4%`yJTIral>HxEU8#yLlD zkyVGyo^9TA9AB4ffT?HaFcZ0Z0pc*Dw$j`q7|Q^EfB*mh0trw600J%no(x5@6I%l3 zDZ0mwv=(`n)C<4t*ea`@z{}!evyP9sPrqcDQNdQtaSy5={2WXxLV~l2wCca>rZ>mf zG5D-QO{5)CifZgD{3h9NFj#0n9?WTx{!E}}ume$FgQ|6C>XH49-naxolhKM{PV>a> zznjFr52ftcnh6gT;@IzC7~KIazh4E1&}g2hm7hh`;tgRyA(02z5^OK@&jO^lNthrW zj-l`sAlku@6Z(D3lYaYgR|}riH0-Ge))xw1fQawo&XOPB$8F$n&#fCs^$t4qOE(s| z!@0dDG)-{JN@92XiUX>jn&Ur)o!NRn7B6+okngI~YY6PQ7bX9(%9ba`vZ2FYOGVth zHS4u3j=^EL6HNpim>XrC*ey~GUthQ>^3#_&*+qF}H-M*OF}mMs2=H` zqa&3Es;~p8DJBUlhWhHx=@>TSA7&7h!5n+2yxp7XKs+Vrul-?*XmrZh|H@9z?-LG; z&ok(E&-^6b)I8~8^l6y*?jAFnQ3Iyus^AcVj`HTqa;kS{e;hOrvWI2WN~7IRW?FQe zI@iD!u^@-1DN*a2#n0vR-=^BD?Z|5TuAFOnol7Sc+vr#?Aq*HBD%me7aULlP$=rHV zafb#cj2fGCwC9)ce}i6@W?U*7*|{%b1MW_^g#!Myd69$cXKmTNWw?=w5WHz;p+5n^ z?tgD3)ggDE5QE$kO~z&e2BQ7H2!2O}l*|+rFaQ7m0trw600IgDo(xH{6I%l7;nz07 z__o|lwD0?AF50Q*MsUZ*`-9+%C8$(7{L%u@TtZU=7t^w9!mOS^9Y{VcmpEyf>F$|c z4t%`3^Fw+rwgbj(0$MP#DQ#Gy%|X3EXgc63uv?tR{aL=pLj+938bEH;#mq03_GQL3 znQnGX$->a*CS9Epw1^~T7#41}M9&rPVGbTvzl1djbRF^(-P9wOb)Q%O9S+`xZS5eT zDwI?(o`3_+;V`#8yMhAna=gjMY^oEI?xS8ZZt%aM0*6I3i}rd?WmiBDU*uSFXSlrl zuk@A*MMy2*r+z4pr2q4MKh-;~{lUDhVi;FK3EN_+Tu?8fsy#6#&n~p@ zkd1r0)pdrdFZDi!RAKb;pPby^RCQ|485cV#W@wT9E!~QKgdl1BXMJ<8vi;7cNg~zd z=^`DVv}r~BkGCRJJj|J$KAj5q+ZMxPaFZ8<9R5KJh;(+VZCyLJIrEUGjJ+Z}ozzdi z)*W7ZUI)>Wia^t|br-IloKh+F1aPC11|VU>jW*h2rOeP1z2P}C!)Pk<-~2P)m%YKh zWSDqjH+RT=wTYKkq|G9+EDcGXbj$0kQP5;yU(Jr7pbmJcB4Ge9AOHXW0trw600I61 zo(xU06I%l7>(Ft-wgnqAuTm;gVbVb(ePVfZR5<^yfX})px{vKaoB_CQWA#xAZ28On z_AbCW1_6b(*X$xgE&C@R?3um{t!=&q=>aAoXiy^49^pi6|0^*Zd4;ZhcV!`HIbY82 zwr<7;nHwlsVaQMk_6LzsXmPS=8K4RSrj`9+3uI-SRN4_zQ*ULIx+Mv?Z|4p;kVxf$ zL~dY{{nKiSO#3>rk1ofxJY=r(oND}yJILgO&H!}F=$^sRrZ-{q0r>l9AK@;-8cLs) z+`$3cCt5jwH7t%VA{|u(DvSfsnVfVh!3G~ zP!+FSKw;JiE3!1HHQ?zGIKAPTgR%&PHZi_oy3a@Qb4W()4a;!1n>412Z-w-u38D0 zS@`gqF+)Vsi-|xENtJ4)Uc?nT5?I^3s1Ri##7$wIQA7(TohU*Wp~uWJ!qUvMR}xXv zYtlLevv(Q1`V-L!wsxTo*9K~#Bf*>fFGiAQJU0s(QNTFkxv(g&$ z>SAUk8A(EJ-DGzm0@2ccX=7X3JG-jF4WY^S^|zM$rL~?s+W9SndSDCcFF)jUPK$gA zZ&wtm*qy#rO)8y78K&~JMF|0iWoFppf==z-zWHpUjLX7_n1L_kxg720gm|AuSGY=v zS5uqVR2u$Gw{Lk5N7VpU{ea~U$`#)J{i%YsjQfa_+xb+m(Hryma;(j&6x{Z7OUXyp zalb00ew)v63D+4?&CJb$slFan&X}0H+DlmG!3;}kY6vo{&J-wVCU*f`YGdg|&f!4Q zFdhk=(gxf~)%gQDlE7wq$kr=%Hn30+UEvuRxvdLeP!lIqmx)J1Cy_3Ac|67};o@8| zKONijV|O)xU=ll);FqoNv!{%OIS*Ty1P)>P*}IVbGVrL1Q=cb;t~RY4KW&fi zQ=r$VRVCC6aY#5uS$&7cf%Q{}1^dY-#7Wt#G7&*xY}5EJMS`yh$X9Tc+M@up#rIBh zzB(nffYQ9UWhh&F#8!Ym{K+H8k9lF$GAGs|u;R&Fu`UNBIkSg_4q#Hs_wr}K4SjEU zc0fljxQVS^%D+UxbRHb8n`8^bC{sKA)~>4j|2bx*^s+WyQKBM~lh_zXKCkKAr<&LV z|FDyr^A=z8Xynx7{!eG860=X*xQ{x3_?#o8)tO-1I3H3t0T9d_yrQwdu_bx=Fgg~2 zm0ry=oEsWpd$gq zl+C(1H%t|(ubNmaMt?aS1fc?(ngJ))coW0Jo$J3Ck@ZJc_5L``Tx{FuIHpKE!>#gBXWSll~wKuNTZWu0)3`OvB+PDN!tq(= z{<~)x2#LMrm$C+05PG2Go0mwxhgHC0fow~yl`hbl#Bg(!qZ}HRw`9Ou<b-&jqxpcT~dl80O2_uZu_^`1@Y5Ks^!Kxk5rWo}YCt2_zezmx8VExW3eLO_jPxSQG z{do%^DWS>LZ3l!v%7|B*US!u?E@iOFuH{n6P8}^dj3f|8zEs?i>CKA55xpam-E9jw zrMyz)Q&E#xE(0R+?2nz8?k|`OlEW+CmyPEN)G4w6`-5Gh^HPT%owIVuLTBNyBui4l z%-t<04>K|N3Xz+$j1CT;Lqg7SaL;-FpCM!|{}&5HJk@T}wk ze6v!t{FfOvTNvV-re+tl8I_trdwaPqhI&W}UWQtn_kVtHThGf!%Uv{dQ!4PGdzN=y z8Cht5GrCFxs~y`rsHWPam*CSX2y$~22=1AA%6jk5TViYEfTKb#^Dr}FlKKX*Ggy2} zRdOM{N^C@q?l}|1v_wLP>Osi*Y~~usG@K~UQ%d$M9@kVW1qTd=4UxiI2PXIq)h*8M zcC8@Q{=UXgfn&~Xv+b9)mC(U_<|9hwxa>CG^MG>-*6An1b(*FB+rMUEHlT-Iez~=W zzTmYW&_0E-o3-REC?OlK~YMY-?i*ig6)mv+PX2(kotw9c_0U`;~%< zijNv~)X2;KK6wnzw|d!6}UNXP8ZzcY0$`}DgfvESQ%`InyEh& zJ_bmW2oRS}RSR|F#dxRJ{5C(A78Dt@-@>uOHis*E+9s)uHZc+~T&u35Pq7TyxT$x! zdYpJ#?CCqPoj6P|i4na^4pXclhI^P?>@J;f5qc3OcN}Q1unNWdU+e7HV2&oz;lw#H zU1}OS^ZY*<48PRfUalEC7Jh-1v@}-x5*fUXtg23On@o z^btr1GT=R-P7_;6={NnacJ>k1xi{8ztYT(*534l`S7lVp$}-1mv02G@nWJnq#=rs<@$-caF=LgLJETxS7@pv5iC|B=LM$SV z=g}OQ=lx@A-Q|xWl}SvKCS&k0n@i0hW`4WT`&#T`K6AVBIVHBXX~og{;J>bqhXEqF z4uuKD`*=-;2&#mJ(GzHk&I4Y_A&@%}wf3nZiM(3yW?IzX>4_WJj3QF(r_Yq=#R;yF z>;Vw40#8?5%HJf8Qk79_y3#LA!9c%)5y^EDq{5;_G)3GbKodMRJ(k#%gqf?J50tEx z1*O-cm$?0oA&HJt#3ymTdh;BNz_>#gdZPiu;Ki$yTJN0yFgxk`hPu6QZziJtPis0? zISg%vxYwO26dZ3|DB^Vr7-*?I(35S`Ci#Q*#;A0{g^HYi+5~*m%N4d4Is5ujMRol^ z7x?aU%*ZI}H@A{TYkp#pqpg<0Atnv=Yc~{9wIwR`qUAXMIouIoDnmPKiMYcO5Or(H+tw!WorxCie$W^#U`Z4Q{n^rh9)eBl#v$u)DQML*A;(gy4 zpC_sy--q+iHd6RpJE%;XAMxQTTqmJlX;{Z9NJue+O0xgL0ej@?jv$ z7_Hp~*e6$W4A5v200zha-r))a7l?0sQD;Uwy|Wde;~#Bk-|s?FF)XXzRCYZAwG*`y zj}f?lDjUSuD7;%#>(UrPtYEmT}6nce=8MuK2#2?)l$;` z>b#l&R_w`$&<)-nua`IZBvP10sZAS&`XaB)>ieEvzK+E)kPA1zM@M!DpJN_-wy)2! zRxJ(VhdQ!G;pnU@&uh7v`mxuKGG!|JUl!-Hhod1ur*FFw8r@%|(>C4=zKn>d4T_Df zyTqYobp?SH%k)${r9|phsEQlSUZpB(ntVB01d*VVK^TiLxmi{r%oU(dn4H`{RkJ>W z)I@F!-eSsfvnygS#L6&^II9r3w`bfMH9DO_X}wplfhmA?p7OXr3x31gyir9c1*8qm~$000022@n7P02yaZKp&P;fnaCLETkA182|tS1L*(& zyMTlM000GO=?OI;002nDWr%%@(YmQ8|kuQVOvlrkgU>{VnzA5(8thCgD9*;S9cr|noCEVuq08CYd z$)EBTAC{lCe$4@eOw+~JVU@2NHlFzH|MIo0g2>v<0$2Y~>EnRc$UcDl{N9q6dt#u5 zhvi3+)*BRm2|I?e(DnL{r2X#oC4z%vhh1Y0f~5-7Ir4Hx%|2p- zvZyS;G2~^Fp89MGktu!DY!*y$0F#7wsMNiZM=Gy`>iH>aAHoz(M{v#LZH7(Oxb%fl z3e9lrP%ci3nrTh%z)1&!*RZfxz%N+FNPzwXaXjSpa`H`bkL=gP^4{^qVR=E8`Iu{# zNy!*gH0DOp65Ies%$cb&POR}uL9#@0jdnx`{Pd7!wrd zN!%>FCq7ELiXT5RmcSzPqiRcA%E6>e3xI$gaIvS68Dk39#5Tf$Aif}p8+?oMGQmsy%cnhbYlXsyq@lvGkQkcbG z@w_9l7T6;Q7l|k0T@Ul@R)A4dvd2!x&Wb!oa6VwDxtbW3E2_%bU`V+WHLzE+&)*AE z%;(-HGZ#gd6=ymr{k~h1)HEwe#?*@b_2G1zme1e)TH*CyXLLIz%~s$H@_>*0MQbN^ zn1n+LlIXIX(@$6@sgYxQiOgGqU!iMgHB+}NSE(66tOQ^G@3S}N3jQ!JU)&>JTG_%; zneha*A0nOvKa-3|_+nD8FjP^4kG)o0+$e-b22+lXna*n%02)c;f-ApK5)2he^Sf7W zNX%(^P*f<0@T}I>Z9)&Oy3(!dTWk(>SLtE<{+AQ^7(iU3|2F$Xtu+zqGJx=zez;B; z9jz8UY{ZU3Z#~{of-unlbllqqyd5Mmbihfv3TE)~MXTI7LC*t_VI=$#R}NUZx92ao zcdm-+6f+?v`5t8%wm>o=Dg+G&6RfA?x4xF9AlUPn!B6SzY<$N9MUL zF^E{?Ytz1-VF90@k~-z*8iAs&)|3+W2khQQ6a}Vg=j-=O7k>i)!_@$WXx{F38K^>R zSu~-#w4$rBx~*+tWSyCNmpdMFWmcIGhpXWo4Jo4rtR_dd2MT|-OFyb5LY5AwXg6qP z52^594{pR2q5O!$_mqWM;j06hy)ccEpZDYMRfn&%HYHZCoIO-3P6+P0QIUwVU@l|}7n__50R$}{P^EQ3A9X(*}20odh4 z?ujk8+>nIS=`K-Gj|D5v+gjR`^PSIxp6%6j^{^{*q8);v8-_OOwf+Z=Id6n_%bI~# zI}j2dqyrxrCcxqS3Vbp01!>0I>BM7l`8d@b=D%>jKt&PQK7_YDBC@exMmmM|w#nF( z?(KW~h#GCPl7aqvrDV3`mId`|O$2@WpefNrtsDS1V4tJEkfb!9K%iIaR@@;A$JG34 zgxyV$gyO|j0Cm89Jj=*0N?+No*g$(P$}?+VY0{2FIdRIg=J;Pjhd;5uc<8(<5(Q-5 zj32~%MHS0$naR{+W<{0VF`*{WI=6nPs7R^QJ_x+ar2qp=f|hnFmp%!;08MJMUf@G` zkpGEj(Mk-UPTX>8eS>8P0^F>rVJE5}H?2T7K-ay~(O4P9<1Uc3v1dH=Vzfbs+A@nU zUHaUqm4eDZEv%HFG@G=AwB|{=pGxUZ(BU)0-bwgA>UiL>qqsLkP9-T<_GPYzn(-h- zZl8O6%iCZHWaAzHWlkO-SxdTf2=WkeFd*aZ#^!2(lxq=HV$L6G5FA+K2{G~$Y5NsxU>CY^X&99rFjdbjq%pS z@th3bf%0Ev7#1@<&*=Y6Xb~Z3O(-0vy4nncSten~b>4LZWS$(@_y&5yLvO7#+w+Gh zoI1BgyBh-tW1C?2DORK)+0?Cz*JwcX202j*&;8Zbb4Cr%qS>(wWSaORT|(=MDW)lybHF48{H?a?U6w$>U97R%+r*r zHMoYEUa!{yXXiV~njvip49y@YL&wUSZ-kJ`4tZ01b0!Gt@)Ogws{?0ENS2}XD+5>* z_;B3(RP6>9+ME4j+1Rz4_FoPkxl#Q~6}aR^kl6muQO^3bmuR+8nh#BFf-J%X%M6Q- zLFjm^&?In86&rQl3odSBUObnF;VDe&iQkN_>DF>VBDHfhUEed`gqT@JFUCM`KWj!y zw)NdGZ*l(Zy{Je=(@1QvL?33nm^AeO`n-#IFu{t& zBn1aeIrF*vVpPA<|HMmG0Af2JbSQ3Es`jcX%NGXFSGaL?4O#bqSyFRv#fnphuueAL zv#{9#+i{hpG_-0Ql|@~QF4-U007I8` z>g|?cNG!%`$3Tb{k0c6Rb3+TWB&AMqv2Ih5xXG-_gQqSR+GQVcs_$J6W};e@3D=f4 z%J~j<0fv^Vb!60{iWVnbyS&ecPiyPko;)Tt6D!5shiu7 z`XKl>$2%n2om~s%71}#hyn^EeRdW089#lJt^Ccy8^$UChfY>-)`dwyk1{K()tPn>% z%Ws!4pG0R4buvE%uK4pBv&<}R2zDJ*<*5&IO$$YgO=~2gNm`^}L!y*^bR@^d1Zv4v z*33!D@o2!Z5y@as0YW9f8sxOSntdP{--_;qf`%EnmVS^(CPN{ZJ?Pq+u=0wjT=j{m_`oUN`PVMbW3+D`sSsUM z5Djvs1jgSI09+3L*l%ii5T5D_=OziUZX*WLF;C9+uBVUt+X84~Y{GH{g9(CucIA4_ z+#^y?6e!S|%Jhxc=m4HX-ZjSRB;M&++}HgEJA$|J#v-@-R?(%Lfg)9#BU;rEkVjO- zmhL-Csun9XpZ7NlOCqS;=!TQt6*$S;w72DNc5RvQ{=Cnp7FV41k9vRwC<{WWsA~eM zh=f*T<3*v!fmUJU>t=7TuvJ0ntGKEHA>OcOcs# zaS4zVTQ~5smC4c33+kWPkL&)FbOjt>q*i1!62M5or+~0;KO+bYYp(^Y^yq1B?`d@` zWe2_AVpFiL%eLc-CIY<>!{TY4(1R0c#v3Hs8epy~`E_1XKF9u!ggq>@i_B&ws>|CG zRtV@gItowUi`UT-%Uu-w=m#v5Z%A@x9WK=!c48iWFJBt+wHjA^b=9aT>pbtuFsQrvnR=ZV zhqHw+=#Q|jYJ8JU(jOZT1lJxwT#CG~v<1BD?jQ;QD6W-QYtowB^kF3;X8>HvGiwT) zLf^4GE9N@ZJ)|Y31}4VLdv{r;Lbg$H#mH1^qI;QRd@zM0O76SQrqsLt-TcQPi+CD% zhOI!*Z{9o zvG1_B;E^Go(^fCjO0<2}ycX=ZzsT{hQ=_AgzjE$|y@70FA`vyM)VS;Tm^`X{0U1%X z{^R3NhMq53@I<@0N(dxD18d`d3R!UrnwX0xjLp&zmitdCCx!_pkkz8Vo_a#jJ2 ze6w0h1n~gKeD02wc^id~5{uomhj;|!YQ&I@A6-VY)NKRHcI*5EsU05p9;Td}4vX}-a4D?ov9dCbCdI~!e;GLiK7!_&>PS`f-dw@}A>UJfyNaIOFSl~TXN@&sIs ze(-&Fi$@mQ(>uBeLbo`LJJXQ*>#Fq=9@=p&vRe}zVE!k1ZF~3wMZz3JaXjTa;>2mq z1-fa?0+8mA=dt~2nPbY|4_8~Dv*zlM8N>uLe_K)U3es4sa{BJjDud!YDHAvJGn=xV zK2?c|?R&EH!%Cc&s9TnzBRPNR@r@YrIN}tCSYQ}s zU8$yxQI4hSPOMi|05V;dfH3vg6drlvbrjZlSE=70&$2v}y{MmFHk{iC!_AXd8puv| z{uE{Mh$qL^JI9K7H}C-Ap?P~TY>5Zk9^<0-hd0H}!tZy zV=H5yXl*HIhs=v%+*f_SEQAV1u~Z9iR9MuhG~A^|VW~Ta%c6_Vn}xKVeqGOrTCp5> zF9S~1A+h1iOAcGsm$X85@;Ki%jSK%LP5Y;o6EhZUB9G8cyz>bucb{xAAov{~!{&ON ziAnB7$R4kXF% z#x3jGET&W`dlk~Bpf#Y?U_3%9hH&WZ?Ka9M@19AYRfDB1L@{e4K$MNi-+$fc#8++m zmm_cqR-~8*dCt4q^G2&|_>W{9_ScMdtkMfRnBTZj^BfHqxi0$0=5c(`#7B!B7n)7{ zamdB3_1p?SOt+d$q))kcg>ivT@nF!uO-nF9cwt}a=`_tIl&9bW3K{_l`9Siv?H! zduk!9sfHILm6ED>#X+u6__~Un;W?3_(tckQ89d$eeP19W09F}t366!>G{)#dE%J_g zwSQpt3|EVjBtxQ|r)?vFbXW+*ZkdfUKLTUPZAYJ0pOcba+TB>=sb)R;cp@uHpE_2K zqFg&&$|@-g3_gKq41U*ui`|9LmcEzQc7j}}Z^|~bYQK@+arKxLqpNGxA(ULc5{qou zA*Rqo%xbsni}ABOUlMfOm&Kc9o$8-aUzGfS%s?I995Kf%Dc;CE0{j0!>^SMr=LqgQ zR16kw8v}e9pUrHr-*&JpT{aRX_mXBCD4ePNM!pa~O$`ImImsT~pIU)4sR2w%+|Na1 zW4v|p`|Et-x`+S!D@nIdO5Lo1nhnVW&6?0?c-ZZvqCIMk_gV=+v%5kY4)`n%8dKCg zUBwlh^ReLIaSqPLgde*r#_Xm$dEJ?!Xl`y&C_^TYL zreK12U5AmSjIXolK7={)-dXTR8k>1N(;s6)0%AsfuPr z)9#i1t%=goEg4bm%3^FrucDDtH3U$PgmGH(eMVvh`An#NYDmk-S7oz0)`5~6m~|0v zC41bZ;6a1C#lZ~t1Kdn?&@A+~l6YlYFc(opOAuZ-l0}M!im%~x9%QbjlD|A^gU!gu462|JoU#P4NN%*b!-p_ zNa+_zS5wI{p1D8S3T2%S7|$A1F+NT-?FPVYN}UD3H(?Do_<6$qOL0sl=JU=@K6Jq=my_(fqjqFicvk_ zTrR=|pu>??kit?icRzrz#=Sunv=p1NAX|qg3g?|)slAquCta48-`p7?WhM{qt~@u; zrzqZ!5mBjc5IHG&sMjg}-46rE$*xgn9!IfJ=dbtbo;MK(XOff=K3)Qh_h#iFW-54S zQ39*3WZy+7461)WB98C$J~zeAlya1odzJGwC|5LS6Fx4vh;|Al+h=gkSk&qSb?jCA zC0-uyegvf6OZ zZPJMPQQKJx(2pwSubb(4$1W-$WwnRI3LDHAKO7_N=}u9T_OL&fVQQ(~PXnPTD#BJZ zN4t9B2tT3pA>D`Ag*>}RzFbR}s-8Xg*18@u?CvYR{xc(E7E5L4CBY#j-BL|bRkkor zN`P}06fiJcHHu(DJr+PGkevqqQ#a`61dcjDoT9>c_KlAMfNYPwFXwIwy5tb_^%vSuoWJ2vg|t z;)*658A1-i>U79b_7BxEKr<&b0hhg{us5?x1t&0!nS&$7HOSp_!Yk2fl3eM&`zVqd zgIOz}r>SouzHWGrmd(35fff7*b-X(4?7L83$Zh|JDBt&D*Ot~poKUsS$prZAl4k!Y zf0=kixLu$GeL{bnPp`l{jzD_SPjBS-k{oBgP|xg-B=A{5r~E-I#N%X)h1BCO_vW}6 zIc*HbZi4cn#;MoDL+w)cqn^Z)`^2J237uS6kDUTLa7swyEChzo-fVGp5xfV1u#CiOgzaL`d=j&e19V$3x8{(L+Lh*(m_d9>hX?cfLpe1AN6DXm;YyPq0EDu`5>MPua1RQ<= zRyp9wc^U2LZ5$ONqS#_jNfuJQD^#d3UbZRjt@^rsJP>;uP3?$aITY+&K`{Ruc#o2`Qf#;xjfpfkUB>qvu8 zYqvhxM$=bhg`?OPf|P&MHZwO`e91u=-{6vd`^`vI8JKL!aQE-N!t@H*$vW`$QLZ+v zalNzkpUP(U<;`172gt<_9B`~A8LG}_Rsze1qIp?Ud|BHt%YTDgBL9xVyouRf351Hj>)2(a8-PpDs_Vfqd-vIyNVg88f>(7htdAU0jF_K7obQ znBhzILPli5%g{C_(YYo3^T)y2IigvBtT~>tni|?GQ0ilJv@ENL_rjg*n#l1EazeEt z=E*GZ94bslJ`TPeO5~v4G8`a}&&1k2W8upIZz$@HK<$&#By6w|V^P8fHU?sSAA&>{ z#OfW%__gfv>W-G`xKag+cjbH9w9)|v3A+E~7*WO~eHN7TO1Wk_jy-kiY0qoMBlNk@ zRjG@nO@npSw8rSa4HIG(X`$HcEeKK4>te`_(hbKklQL(lx3vFg0cR+j^bh*ew+~x> zs|b6T*s_dDrMt8+HU1ebd;O^Wq7WpPz$Yi2V=(fdBzL_GZL`7pVK^VG=r}4kYmdo+ z$T2Lbp@w(Vd!-0z6s<20jZ?r&Cx?ijUb2O=q7_MMXBAPFrf0FX-qi3D)NE|bq}gZ8 z@}ch)nC|!^L&hv)zUtD95+Wo?vwQ4!>0a)d!A-Z+D8{1ja5UyXM|g-A^L74gdSYF5 zlhtz~9&k^j-Ehs-CD)HT-1MhBM@*8&?g5B0jkv*iIs>S?*)?7NW(ZV9;`4?t@^y8! zl0cGNUgbHY=-Bdt1Hpg`kE^m5?IdaX7vXp>OsE6 zKCM^(blnQ%`mj=#_);9CS{KGNfGPB5Xx!GLEup%VK??U|%;5+7%Y`(8dTeRrv^VcN z@2V}QBJ<8{;~_jF7^46pxs#205rrR_X`#y-6c5vV^I&I}q_K{ZQIsPQx9cM}N++l$ zr4;81wtJ&4sL?158mZVG0$|#l&ER3E6oP-9Fmrg|qvlV|z>-PTS3W22Y4<5l?tjH# z>UL8JdOkT^HN~X6UC0c?L6@?4k@(KGgXB92^S^6(+8BSPq}vcGzus82!Sifvi6wyC zme@;Y!GO@DtdOD(bkt%WrMJ<2!TY^Yg|v{h_72q5^(n>#6r2M-Z8*ibz=)K{;j(;N z0u`#h`X!~8L=-h@>24+4xX-u%79l>5Zt*lASH7k#((GsFag|&I=iSFQ3SV#QOlIG~ zNA0A19jc~hf4(?_`78y9IRoZE*s&bJ%l#po#i8%eb+v*>mZ<_1RmT-3Cq{@Eo%)pt zd*gbDhUsXygTb{!X!wioTwQn+(gtsUEhmIn-!D13m{E)n3>q zlstasrq|^(?M5pJq=7F2km{gK>P^G<*&0j6Q_T|6WNsyK_;#>D#=A{S8Ci|d zH>1SA7qnfOsG_%Z%t!#~pTek>y4>9lky@$@phlz%`TgZUcHpv-o-#`M6r@un{oTY0 zBD8k^@}6RA#&GiSA~@{wzLT;PB;}{rTfXTEA~i34(2Q*W@!Dj3>!qzQ<*e(Q?2^7x z=~4sl+{IKi`8XKrK{WUQF43Dki*p{;3!KS9GdJ0YA;AliODTJ0pOiSkzf{%P;8yI7 zQZt&V1Aeh1Lw@})KI}e>S~+fr-9WyR9yvMe*j=$DNr!3Vv+QyTY|Xq`Rv7J<$M7MN zo%Y~zt0Mznvqw}$P?yn}!4a6;dktW}lb~1)1VolF7B)U9Mv$~i2z%_-9a9Pc)`4$T zcd~oi0xu}6cZJoi6Ls+DUGQHGW1Bv;V#RW_uq#!pyobc}-LHeCvo2M;#!W#(IFyhM0XbQVY;vC+N|G^$BRKzox!02;MM;eQCxHOa2(ng0 z&;FZ>qSfEsQpYsx!6cp6yRHeeTwc{RtqH3X`ud!$+y+hM@};1q$$;v=UHRqE7Pk;O*P12$G}JJY6Ngrc6UWf|xMCtm&aZ zSJG_m`WoxcH=I;;#i@D%rQge+ggCYIb64z#D!zWxB(i#G&j8>fC?)5L#hiD zTat*~N2)!!;wnS+B~B)x~aXIe(;U%MjcyCdrA#77^nGSK~e z<5V#!$p$S}Qz3GX=wxM!!0jV2CQ=lFHv2sT)*h2T{FSXJ zZfrQLLQ9huO!E>nuYQKJf0teT2dOaasxEq_p#V~&ZEdd7Z499R3?KieJk)bqLHBX% zPw$^a33rX)l0ghViqr`ZuWia9kVOO^)f(R%2pq{s&QNwCyBfBj+gx#QT{AfGjb&}q zIqM8PluFpN{RR61C6<9|9TUKlGKeGKH5v3` zTvF$5t}pY0gnt(Mc4FbZ{Y}u|P;?J>P5Bc}nyRxvP6uZ*Ep9k|v?@O0gXK*@zzC?H zI`2F05mir)H!qZ$7FD6wn^P2@FdhMFmc~YgK@XMG#{YQ*ztKy)+7>o1UxXU-dBV{6{EfKatL=_^U+W0J!`9&5 zQc*7JFNoj}BHVyXlm8SueVWtN;&%#h|Kfamt`t#U zJ-g+kM++a3gBQ#VthZckX)i+1O*mX@lWilR2lbzmG5vTSEH?KD5(k?!nxaKMiROe1 z+CD8A324Fg@ZqZ4$f|Jm4SABnB%O+vRZ^I@t`Q_VFD!jzV=O zCcg8Z7r&=s9lnfFVNaee30#8WZWku0H1pd|f)nl=ADaigyJQo)9n6B2$brl2wYH(! z#;ekZXGA*~< z7b~j%Khs#IjtU~3Ho;xd9H;4e|E?Td-E@J9(K26!Y||`w9CirNu+?-x)R-wlbu&r~ zku1DJYX^T1n-SK5ucq7@)G6REjJ60+^Ts%0TP{p+4d#@cbx$>E+Va$DDNYi`S+M!3 zBki=8e8?Vi5oBUKNH7HIR)Ti&3>I^!Q}UlYY|FDO0=l^su!GkTQ|v&71UeBM*kJ0a zF17f)3|h*6-%a4wx(;et7LH*_3_Gv-UrEY!^^7w?n=fzZK};S37T(2Up$B5vb&`0j zL+&T@QGE<;4QK{<;YGG9^ZaBe?;{cY7gKWAYzF&$5kMRvJA}!3*(Bt(r+Y#v|M+BW z!d&V$9lFNl2n*L~G)>>5SW^2+L3;p=!7)-bNiwSWrMmM#-@*vcQ?e7i@irMT);m9U zQBxAq>y3QCGC8Y4F%B2`Vz$R@6jRfH@)sD;P&tOG*5hqK+?;j?*>;Kp@Y=4NlDoSt z)@xSvU1C)Aj!dcX(MXFaRxr^6g)PVc8hGby#i@PbPGy}YX0&<=0I+N+zWp#YfdS3`ZY6?5Luh3T*P5+mM|vR9gZZD%38nImhS`RT-?o_vRQ!3t2nA|ceXg!-s=uo z^%r{#^2b-W;UYV|ky{{}^XfKL5XGSmn1TWJO}MzDPdThjJfazWy!ybHr7g@C;Q^;A zgUX_QU{0zLmZ~%kuOjG%eV%bPX}#synO(5$3&j@cZv2o; zeC6_>0EhsWJ2&T? zbWNvo7Ypp9=>aWZG$`=9w5sKi=?hTQueW5)!RLCzm?e)bF7}p#4-Kf}KrZusjI}O0LUs>c0q#>XnYh*|Y zo5fC}FgUM6(;o2iiG6%5>`Vd}-`vZX!~=00cXI;f->5+k8k&=+%dl!icz}cG9PBtB zh&>_km+SuoCRcAu=HTT^RJiBw`x8~Tnd-pbCMDnmzqdM zM;4(&)>ZbS^QIET0CNSD?-5;w7DML9`BTcP-sL)moakb=t7fqrT5AXEKJq`upBy&W zM`prBx9Q*QB8mU*lT?X6`zJ_4=8ICvFDu;D2V@Hfv4gv;OGr#i3zQJ(3MRAvlzC;I z)`}A;%4EEd5-#iYFf4fjq8Jk)g@b&9T>Zm32K^EG2?Nsatb1FEXqc1@#DUhURl!9s zDcKZ*4`X?|iCzD26Cmme#M(92n^?IyVqzs_IU-K!7~X7o)nSpELyFgbCmFQFxo3>_Tf+?-?DGRY3`yIr<`hPNI~lzX#|)hK<)F2itRbUPH^0702{0_DjDsDx-$e(vlOg3-}mPghi#8(y}LYL$c={$@g&M(PE;ZB6eU})tUE&|_a!SwG2^y)s4_SU%2KNunG>*> zLHu-;saHoSSuU&QxuZ&BOBc77LM^dzod`nX>D%0WiC)ttnG+9MOW<^wQvr^Q9+%Bf zj6uh}QoVtJk7Cc&n3f&sqB|E@N=?Q0j^;?BX&jqhi+KxR;EHWuZ8m0SX6iR!QBG0A zCn*E4U`}@$4`FQUN?`v0qd@#ligkhxO(*2dG zP|mh_3o^O}CM!f?`{64M%{Y~xHH!a`HP<=^8)mNtonawdT|7xT{i_Q{Y0uvx>-g*K zVppDrs7HENH;6EuSy1@RC;}xak~FgBvUD+Il}0!=*NOHR&oXiIzU2WqAp0DJeTHLdiEq)iFN{$6_*)0V$odvU@p5Gu)3;>(WvH=IhQA?Ek-f@D! zcp&b+7WlHg=4{&U@7!d69h~VVAK|587uTxVAorkbtEsT;Z&=Sb<&PmqLZ{6o!oZdf zkgTTrnhTz*qAdl0i`JR5Wi#}Nk`tefC}6Onm~*q)qw7d zyX7^V$A?+d5y?emB07K${&|~MC{?qgSLw=`GimaCtF47N)q9V$<5V|X>}gIF5Obc$sSdLQsX-R-7kT4^_zf4fhKCy1hwoQ}r}o*K ztdePl@u)Ikh>zVj`5&A2UB2`^yIHG7zzbqxmX?a`c$dI@s~eXYd1Y4V?=V5-wUIE6n4_aXmX8}LwTRIBjQQw6Ctn5+)xa(I$(P%M0yTL7orSpm zg&Y)`hwyTZZx%jXXu+E41u(oPHSh? zaYaX&&dW4DozO!_C?jsY@a&dY zX_3P4i3E5Ev7-aH)|fZ097+Ba?V@bJ zbdGz6&^}A4=vSAI!AHt=1kK=AmKQo9)oOVE$y8toAiy}?CK~2-igmRp^%7mu$rn}U z7sSswKEf|dG~|h{E8cVXQPI;hP0^~|rB8s99B$a4oiZ){M7Xhq%1y2;PG}t1o#sat z@9rk18EFNmL|=#LX8{P2GwTjlJUyyf#S?j7Xp=cj=_SKRuveNqoSmb`*@M>{eDy?q z2p?|Y!EjfxF}e2D)W0RqfPSxyQjIXMVn&Fo>j8$S_WSdY9GANbZp6jrOZHA@r~(RW@oGMs9C^+46kN2si5pu5iPSes zd<(t@_44R$JH-R4{w06WM}Hxcx3qo{{*zSL{sF;DAM^;FvMlgdU%|3%z0q@G+KA`F zV70T>u)Oo6$&q(DV7|q3V*Hz)nZb*dHuF8xB4zaDl7-b1L>w~A9|)L}bk9@TMoUTw zg&}1Ki(j3`#%0b`V=~CL?^u&SPA%0E^AYl!DJi9EER>#8G`mf<>9KhO!}UTm&uS2x ztj_8K?seB&A&TJR8!!!k8Tj6Hpu14WPV4SW1{fsicrcdrX`4l>F(^I(+9n06hS>b= z0HbG88bz-7xDt_U-Azc;j0eaYX&)Wl*ew|^?m;KnrssywQ|N@Qqcy6}a~Tyl-_&fh zVbp!n)bT-lopzhur>2P#kJE1B7**#^SCUlqSWgPJ@8i*r#%g96V-%f-^!1unQF%ki z@2%=Q6PS#n)=%1uCUdBc+Ohig- zeOcemK%?t(6XCXRoH8w41%bG?f%DLzPu)Ib`%=GeA4Qp3*Zp?+9JAJsAS=Oe6s9jJ zg<(|Bv6+`@!2C5=x2*k5(8bne6ewt86`}HB@%;pfBLlvEu$?GQsdC8|MsmG~)##go zzs1oXMTTW;p0VB6jM7g6!)owXy15{f>$F@tAI+gEn8>n5r8;ypLDKTjs5zjq${SXI zsoRW9M-gp$)Gmot^961ZJB4z&`3}Vk$aKIH_{{zsoiVmnCV`6U-7>@9nB+?!sgzyNpt&27;Z^y%eu|LvvyYnP`(^oMY4? zhrL>Dx z{|As*PLYl|zx}pFp7?_i^3;W$R3c|z{fbI4x)D3nOyQ+R#aRsERF5&>y6FvWcYV>o z_BDrMH2TWWCCgc#ISFFG8&^;cTElL z<+%maL-Xs6#q5v6UA3wf{7fK#{3(25re&n2*ZTGT*I4C|@qVB@A9axela{0yQQjuq z;fg9i5RagtV}?Fe$xy0Vu``(&Mb9`KLWTh~#TpD^C+vq8;vtZTJf<8H7{aAG*O>+k zfRN6dX_@g~@P0=-h7Ap1f)km!tl1r&Jo;0ni=4dSa@%F0E~n^L*UsLHDlME;bL3aaXE zvPCmyFC*?|dH!~JZu5|A*~mK#apzDBOJB0^h)u^`NN%IbHM;y5(>-VMCLy4mIoIZ~ zf6s$*Gz6wZ4dNQqfWch7LNn}x%Nw+#L^_g^b^g{eJvM*&n%1KJ{QKX_zA9r)$x-F{ z!V7#06OK9Mt%f4T0cYtFFP=C<5M3v?|LXwj13zgvs63t1yE8K$G_C20pEdGi#f&*ZV`>UQ^H`@O0)GG~kxi~Rs zEMLUz4<|NKlu|E@rK}4^i|moc+Z_54rl+SeP*K{nMhNV-4ol-Qo)MoFZ_u^;4n%`CJO+s5OhBQg`+=Wmt=Rf`J~J*NHmBm- z8=TUV+R;(n21rTux0tO(WoIC@faJh_X#7jky$QE_w!rb>-jWP)?HBDPmdS2Sosd6n zvNPeO8t#&<)$QJvVt5(21qsGa3uYtOLK7h^Idtv&@r^zjz&AEgudMZkxdj2 zTK?|=dPxBc%=^E@0h8>$x`)p!>vVheU=DW;9jNWR@hlNyHr`$?I>e7hYjJ=#X30qTAPh_vX&0!7*)7&N3?@*nFuW)I}w zz_E%#!fR2{VX7yr(LI}|2M^0 z&9=58Q@`%=iD6W1oLa^60c~rxa?fF`IfR7-sF^VEfd?{WdV4U@3q2?#hy>BC#-x=~ zG+Gxh1-SjC!ZDL>P|4vEg*sbW zS>mJ0r)GI9(0qJ@N0=9J2QHdNg5o{#XC<0j@_3ZiZ7<~*UlYA zj+ex=w8OuW+U0ab!SEbRnr|O&mqZPIXbsl4_>#eSUUFtr!_;tEh#C5EG}ohR=|~&r|p^kB{d(tnVM$E z%#{mjBIgU%+G|6gsElWBkw#tbmxaX77H%b_g(Z0?n}w-c;14M5;$?mJF?(B@&dMLg zyzyi^jxp}f)Z&ixNCi@YcxnBc2~;w}Vm$(G!AbHlt&OlRQ;)L8FG2ebjzX4*dirhj z&bsUH-YNLwM)h(^zwUVV5-=83T)gyj5`aFz*`@}!uuQGJXFUuX&CR6vZQE}kKw_s;R9q-D%qEP8*7{7HVu$9? zZJ^D5i_U*Y{_l~T$uW3$nJJwp>$hO$L(6`NywPjUT9Fe@T+K4hK|b8>Ej%obfJaRP zMJDI~O4S#a<~R%>$jFFn023MJ#CR%M%nMB_1`}erXyyn%y0h_Qq}y{Xuhqx>uG`O- zfNk<=Bwd>I1%yB!c4E}^*puRdPc-6^151TKPj4&m_2GCmKk zoq4a&`=&(|50`7n09q{?AlLy_rMXI15eadmNQhJggP+7b`X*Ao~t`I$#>0UaZ>?Ux+QMZhw=^i`K zq#{rGvs%C08KOGq9$Fj_ATpI(JwL$xdU2AWFMMrICE%q$SH^5bpOtrZ>JE04EtbU$HO zUAOFQq1i}0$z1M}E^Y@l{%A5S)4A{H0w*~i(JZL>{s;LoD-v6=(e5TBESfEC!(d+( zna@0SJli`;LCh+AvS~>K;NViUpZ8{ZP?xQRB(K*2E|^;-EI4+%Iu97MZ8Ned7qxTk0GEF=j z5}|JTM1-8iNtbk(ykW_#H=`@}!h!S^FsLE4lN>C&IW=lOkm6n>YDB&xJmxi+9} zZ-BAZPcPe5Ycbq3UM?*C@THxUG=80 zAThH@pTefSo4H*n2F?>Sv4WuDpqlCfi)O=C6HQjQ0y3+i}oU1*CPcWB`pZ9+Xd@g zO1|T*QWI|${RwqLuMqcpp;@`bvgj(eGI0Unn)CxAp(E57)3jq4$`z>D;rH)vZ{e0} zL0g*ayl@G28tq|>4v+a*zUA(0Qf}06nbJ=Z8$Qy+cRf?5i+FNOK5I*s8wApXt_&kA za-V#PVZ6Pq2@EMlk^rn{E9Vxy2x!g~T)#f0i9=*I=S{pE-PITw@?``WTOwQ$Av|dJ~>5+bRx{Ufcm;H?E)>uSRgug0*-Skgl3$#n8F$ zxPLiy1iY!rcDs3~Ft!)$ivp(`03v{QYOp&aBdgir>T3bAQzDQ=oK<=hPDS<*8Qs>g z4MqR$Tp+jkA)UliA`q10ChZu|dp+L{^C@n1^-C>F}I{1p`|xOPY>#V=KkSk$>-(9;8^jsi0+;PyPh zTi2_MturDBxyG4@;$(yqhO*Ocvos(c=sE6BumZgLNtGEG8D+g8m=<7~Cfd*C`C>U+ zfvUV;gk_{8GY>rdwk?mms=tj<8KUofzbo!U%y*Yu{fLh*u5eaXm9x8GXxS8v+e$SY zQFZf*#f<}hu7n@-+cTZl)wR~qso6lp4S8G)bJclfO4Y!LN9x*`{UxBW zwTL&A!E9|#GEy!5Z9D+H_bAAQ@qxczvZTIk1Iwx+#?;)&&0^bhsa$}xqianKh!DIb z_pRZIr2v-2XDjxREqWt~Owa;f_C!%)Ggl4-@zxl3`5c@b0)OLJ~_u=&4k&Kogc^`$58-xPJ+NPz^S zM@e>S*wZA&^6xvS(%2^KIc3zI=#6U33!7nvX08Wu_-ncL!`oD}lftkjj_XD1zhNUs z0+s_$)!e%GAeEFSCSF2WmzGIChq(=Y@axN+?>sf{T{sM)w>3yF4oP6waDjFgh(Ana z(oqyd*%nRPcZh0FjYkHs832+nn0t{hll}Y#2;Yp}Fpm+JHWNWpD`^WEgYP|asfALe z@q=;m2WcI>^eUY*_EIM8i<52tjHE)A;ux!L4iq8N@eiGUPsjiO00Idx000m-L7D;) zu~z>848X$DbYpLTL*yDDT~Se1Ck{?{Cw~PD-??~Qc2y1O1b5f>pVZ~y>B}dtqd`3} zb$R+cgVDeM!dnC@lB4cC(pUUHiU2(NMr-C^J4^<^kThyfrn68Yao?4b?4bzsb>-!m zrxB@J!AhUx?~A9n;1HG|WK+NF_O6UgV{L;bh$Rfcw?jAc#_Pq}XMqZ;qi@eEbWkvH zPE?B=lhPD{E*&Aj>nh#h+Q5&|U&m3eYlSWmy>t2Q52D-t>*@KzqT4hR#Kvwq|7$$| z=5Vw!X25TB0-1{BHnl%k%EfM6p+zF|I1dA<)Q$L)byHnSC5Eg28G_O0t2J9PCCv*D z(XxnqCf?UI%fVEKgoX@dw!x6zOBNYU;G%I~w9f;k2-u0Fk?}%l1Rg|+>CxupyR>V6 zpbOG?I?LMeJ03ZgGz&_;EK8H<{)A_u)s1W8hr^1yr#6N02G_R(7Q?u=jCowC`tFX5 zl>I>(e1dqQTt;8J>6-ET3+1%TrO{dOJb$Ze9A_4AwwKH0hDsLCqiSvH_TmP7g_k5j z?8-a&_aOZ#v}y<%G)AHD1Cf6X;jVlLasD+atgVh(%MQh)mhcDmOArblmy4_fes48D zk1c^{b?e$NU`SN7i=qYc8biJ_?-fo-uIMv9Hb47+P+OR|*iA6m+Jsa>7|cv@?^2vi zI8R4G2Lh(q;RV1f+a!lQ!JeW`?Iz1&w3eA-+;?JMgCuV^xqP#JWX>?WnV_bMP$KBI zoR$7-b+KQ4NSO@25zkAN8&Q3Cl5DbRBR`{UcGxUD<|lh%To(A2qe{3od4F6;cZPWZ za0eW8P*F)|#;Kp92AgO}x%;4H@v;Nk&WPbI%8>gdI)d$T)0Lm!pNoarEk?*Qn%od) zler;UBE`Cv-!94dOO3jlHKlo>_kvwrNRfAD7A(;+lq&;J(l{-KfPMyhXvB}%2n7P^#|zqh!omY{FUdFc%vFedZLd0RKX>n{m| zWwHaENVBtX(oE;wys`9l+@41^N0*1G;>y+m{(bsPq+jW}RcYw^?^m}x%6r!PXe&ZR ze3zS8n-W}}k9^BOkIv^0S%{CFff znq~tgBUgY;_t|y4c8_S_pa#-c$JY&WfZ^&$KDpQUr=xt+Hiz0SxQF_iqMdnl7S4nx zK7S=`1D^~SJmi&8p3uz472$$!c|kxlBYl3lYZDE%i~=p-$CNk1<&z(-(zgyAl~%I_ zr2$JrD5XB#K=-6x9a)0+B-@ye?vI_0n1dS*Q&KXRpN>PV{GuN+hJIqzS5;+i?|Gq_Vt4Hy!d9e3gxvQ~0}(d-yU zN5lN2!P{r=43ETueG2M}a57n3t$$9x*gHIHvf}PJC}29Zy4cRuV(Vc zu_L{EiS+Ig5nGQHelL=5mX4Qc#y?(a5%p#~gN^uP_Fl{}bLaZ)aJmS@FeKi`B#6RO z$!!)5vA%;d=~EyCZB9a+{idV@PU~F-MHYGm93krR=nHVwwooY^lg~Bd21EhnNrGTt z9RebFRboe(KRoqb*B$1zTcvPNFi*%CLdu6B&(>_smeR5SrY0-FOI`HJb?AHA}?bmJniX02A$zKEnx*40$<8 zVu%T4^NEVNOms@FZ%tgpBog~f;AJ`90)baTgljNDvGWL!7oR31!|CI%a7=3cqorXu z<`)3&1#{UAp}j4NhM%KAYt>aQlFpOqBu0(Mcwyud@tC!eM_teKC_C7$p3*ThNIcC% z2_UWBbS(3FQ^8eaCpFGEIOsNhPK~C+p4LvR~*PjdfU6& zIh)!ukB?-U=SiE?In#!GDO&uhbTjDVIO287%QuG!F3vrn%AXiOFR?_wC8*0wKCJIk zR0~rKXN27yvgXka7o_P<)GYuWKs&Z*hB=>t;O%;I3$`i}G)p?@Bn`UH)3k~_y-w4y zenZV4RM)N_ZSS2FbCCfoVCxwA^F1@;Ki$O_2>Zd4=6>696Ty21g0#b+FP9uYFHT<5 zF&yiEr&R74YG=ay)cA0xk5pEu`=5C?2l(1bkS#`Ef=eL4gKlYtf`EiH*wB79)epaxc*(%L3b8Zrc$$bNJ^|ljOPhq;x zr#9$Gs7;Q7MI7iS+|Q!JLRitq(`tn>h$uXktw`2{o?P+Q(Xs>jzd21DL5-W9x!IG0 zUSE1rRtaE5+Ks?K+4Z|;1y;xeOEkdzZB!DB%zE*1U8q6?2I;{p_)7c2FRVh81$uo> zptcV(V0PN{s$vy#01*NVnR74yY-x*}@!5v<$@P_Z-COn7%(MH4JOEUj>Kc@-pL#@r zE>$f$HiNF&&}Mko`0}eJTY`5N(0Tym@C4{?*tQvTA0Hycg#91BJg5G6$4)3q=1wKq zUA-pWbz1s^kFX6W2w_k$9z&H~>>%JE@0j!QLPG&yz&$dQdjA8($sni&T^sfO;iYz0 z2}q@d8h*Q_G2fk$>9P_03;_#+6_(R5ByYF&YMSL|wAk%qyLGcH9$iPh+&%h#eC$;8 z{}4$`Kp}R zR~vySjl%{zIlY^l!NedJG;@QQ59whWNTs|{VR!IxC=w+1stlwTk@u8E&8?+ZHx|zO zZ9npsSZt}eR4>bvQbY53DXZ3nrjU73kElEdv~}6abEX5x!oT$OP**%3G$Qwk0*bfz9~B&i6vp-Z-INHn&dfmMltBL5PM_btzSNSXxB|S8vuYSE^lw# z{}xjRSYDu&sxSh)Nq)t74Cbncp5skt;RCZ(jI-959wHcP_4n|RqZn}z-SSb$_};(Y z&G4MW??|c}|3enTVAgv5wB#PPk|h}=C}s=k^TwSph<}bXS$JntHDqi4TGwHUYWwaO zKP5zSLAqDlP^gd6x8)~IvKH@uGzn<^b5#t$n90HT`+uSoDA8lmJPUSEh7Lhllx?IL z;9C0a*hZ@E=S(d-SfBz@EO1QW&-dTJDh}NrR>>TBK#4FxK2jf(2268se z(03HK3SA|XhVc6w!|q1=Nc0(&ns!R0$a)w)K=w_w7HIPLxQDD2bjaW5Wv-a`2xhGhPfn<7Nh2RX&6KtXqfBq)#D2 ze5(0^RZcFly($c*QlYyuwSgw71V$TCfjj5`=Ma#1*D^&Or3ZTG&=x+Rx2ue#U z8qZRSs6=y_vc&4C)iX5(ix33pz`s0%LssUO$sXnm_;v?ChnMZ~Ek`3h#BVRbb?-ob zXq4#qtv z1ug*JpdSSdNip<|n*TfrZAE6Of+9FoXA&r zzm!qC6JBY;o=KyBFL1CE#u!?|PUb(d9@Yx8cQdevRb2~!CxG+GEXYIeBOebP((H?m zBgo>5m(ZO3CXlkpWgtEgOKC4mvsk@S8Fh{jVA)f>ZonM|aIgWOzN{;~LeEffhIu1< zo$&DA8BWHpO%zB0Wszp~L5OU+1AiDRd7T0U#LwqERxT^^JqI!S^;PK_3~L_)U$*>rDV2+!m|^=z~gwBNEPj0&{ISR+b`57ZIL zfz_O@qqF9%Nty%U(Y|p!Ppi1gUZ=Z%6&y_X;8wvXk5j4?a}+Ck>)sMJbXCPv7YG}& zRIhr(2!7tY*gAK1uk*VUAwl{xYYojFyVOJSmyDp{ht0-Q<-v2;oE%H|k8V_p1z|ye zwxOtkvr9N@+>@3Z_J}(Qi0abkvi%`t#HQ#zCST=?}@Zyv5ad9Qq8p0c|($&tQH(-Cpb$xJO~9+w15s+ zGsACsiY-|kwPG#_uu?Y|>Jr-RpL5>aZrEooNws2rIE~GDm95n=&W=If=Iwp^j!-Av zeYJiZEU9Hlc!V;h=0PBOjq=Pk^>5n=u+6$wl~mYm=Gd~(SbU4@ZokLFtj5-eV#ZaG zOYatX5v|}*Y3ebfd#B=^7L!SrU`cm?Zjc`+AlhtK-aOVh<2SCVO)4&ImP{J0-MM2TB|Egq{)Ew`V8b)Vlf zO?LlYA-bs^IrEZis3GAfEKIZYAtrkA6h~Yqg(6rqCO@kPMUQ-Pw^qfhnCc8Xgb9v? z>sDam92gr0{7Ajrh)!1z3mulfOc~st!yvX_X~k=~f38RX>KDAZE2R&Fxz$|(Y&j0& z4tYnXBCHd6M8@LXkQIEl5How6mQP42xdv0X8cPm{+Nlvzc#N?oJ%vBm;Tb0a~=8wy0xBHqX zyNc##!3{fzPc0do?Do5->xF>y1(#-aqfLJKy-=Qo(_(4XT>F~<1qN$@djB?NP8OlJ zfRwLI#k_+_J8g$9`BgJi*R7$lnqcQ7x5!-rU2ngHEHIoZfFR%i0006BPyhe{3;~`5 z1<^IX0_bLF{4?0?+jBi{1um)UKUN1Qrd9VDlKV%!)eh{Fc1J$R!-dIxZG{sqQ~hOn@6~2i_BNZB2Pdj%~1f zk|K&W+eic>0M38Kn8;eI@>mgGnO9ts&>8#HOU|xR*ivVJZ`qcfd(PL5Rxy9 zLrCa@EQxm>26CQvP5dvH58%t6A$G~dtlEa@W>kf8>rOrGhjL6b8j$g*79#Isi2S4f zoVeiPYnBU)m&F?e=go4KCc<%+i#^|yBa`} z+RQBKvn|3JXeXISD!r2XT3pUuv{2GFUdI9QPgAi<_FVUqB&A5=Eak?MODanKpV`{}iE?9YM{zRg?o2`T=gEi^fEY=iD;|CqN>fhOer%q`KsgS4 z$RLRXC=>5gImnzGTd~c8f&B{2vgQgPC#6+*y9NAnS$Vw$2RaJx`vf`Gr&ZNO@qACW z1^dck*|zA3nmHIiB{vV8^JDWyA#cC?^7-@rx4LsDJ54K5Q{U82ii`zCg8>nyfD&*P z$08Z41+`!#B$xithNv+Y&HyP*QRMf;=i$8}Wd!HPTQtMkwHMN8qH#VnrMMu!>{Q9% z=8g#Ib5uD}`a>C8UTf&Q$DZFgc#GQ?=vkggZqn)~+Za}t4qV-^7UV#k{8&z^qe#~F zOJ?)2TI5SLtN=}=jN9-b8dW8p7L*Z$s^PviGSq=#r~{(lW557#2=C3Y3o3^_PNI;X z6COi1;-F;}Iqjanb7x8ZYxg(O z^5Y#H_Agm)V8N*x$NMU9UufU@P}uKlsO!FR&F%wRThfr3vKT$N0$(sUn?2h3 zu*jHz7Lltn!8~F2!EmF692X=2bvsm#yY;<6nbwsm z0YU$GLpc))S$}R>x00#h$j1ufWX-G%9@twu9Cda-qj;MtP)vwprHW166 zg1D#!of}5Uon$=&-!|0PR2X*tDx;ImR9mL3?u$I`o#QZ?i=v72n9GDHSK) zW_ilKc%{QT_%(-S%c9+3l=R^l(s!yW-m70L`XL$B4W$c3W57r(6i9>vGV4GPC0JU3 zqbOGsfK1VoBYcieSv7*ufJqD71cVtEFxASf#D4DbWYIs^TX$#)?SyoP>#@2~>lvQq z(2JQ`o~*_VL<%GbzQ%+Knc`_|d8gb8^J-T^oYrF@Q(J0^)_8yfi~qT5O3@3=r=$!p zCKm?TmclxDPOw2!0Gr8AJ^cIaKvP->edFkbKr^lj(;HSQdM@!@Zsc>`du$Jx7|El; z?R+P}SF*$?9Dr?bz5o;oN*f$X#}xp=3N6?)6=E$o*bh_6K4@ol zxqn}Yaw31B8Q3H`6x?h;0=+PU8OiRUC=g%(T3m((ETOx&W&%J2geR&P3{?aOSrG>5 zX+S6akY;?A-)O3)`d9q#U0ysb4z-2#3;ghbTKQ|F@!o%-aA{4%AsST$p^ZUgAw{4u zNe$=*_$tw3i{Q7=p~nNN1K=>oNQJ)%L_L^Gwf}&V+mB*?MnsIRSHVqfrBRSRo6@FO znwS!b$dT3pBo+m$Wa1C)2pUDgcxAe3m=Q*}sDbg3oo^mLN`fn@cbWtKeRsxM+)Rxg;>;GN>19COv700Y->oAR2Ov)< z@TJ|aa7%EUfVFp|GP&nr%gcKLwgZ@p?Gn4G@i>z7V&Jd2JC1mD=2I%+Gz zkH{z&AsST;o*aiGiGm`s$_{1KS|wXR)#$lK@Kw_e6M+6Ty2?dum5Ynd!rvLiyJgZ@ zs))eddA5TZWR&IwGQj9TLuq&R{5kL&4Y^MpR4y-BmVpKXoa7;Xq3GlmHy1gi>=sLE z^jj?S96>W^-tiH4q+R7S;Y+_L3J;t5!|se;k1qVC@UKJ4QOt`!+0j4X=jK}iUyHT5 zL=tA%Vn=y|hEdjGffar=1qTOr27M4!Y9K#*Fn}n4RE8;$3`I4i*ihsG5}I399TzCx z2tiG}duxQR4<5pBa8V6_^_mE1$R>Kse2h-0!K3xOVGvzHc*UQ$Qb3EHYmbI_ppcSZ znWDjsWJ^t`=1^iP{ODuB1RrTGAcD*?%Cl&U=k_fr7i#k3QI=n6!wOguMj%YFhs-dA8C${`$dx_)h)vy>u9O$6)FD_)!k|hQV zPRLS;v9KQ2; zxVUf2f!ZxP95n?*%?d?OkpSX+SykA(3bUo`p|>Lr!j zlX<6FnN5Hyvbq6-W9zF6q{8f^nOsLhjfGj$$KRbzNKD&yDJ3vQ=h=^hr6;`g10hoy zF?@6GuU?&|+g7fhk~fBoQ*g!L9|$xBda( zj&glIQ8f^}Hh)G!iI%F;FqH*}^61K;IvG?*0WOkO0Loib$X1nZW2Ba&TA%6D;~7)P z%#kwBG_bw#F!e|k#nc5#1fW@@8O%9`Gp4K2*Yjj>nkMR1y8ctMF$Q_X&%!{~BP6^I zK1%EL*okSAwTKKB+?J%&^ZOK(UWqMT#22y&-St9p$S_@)W8u!w0~#dy4wA*Y61LJ) zi9Xh}E5-htb<6)#-yJC@OPnwqTcE9LPfV?{N*e(QU#0+1yTFJ-AOwsD0?dJwSZYCX zt^a^{BZFIxeGS^0Jb&Uiu{=u`g7Q=aZ{4LOIcQ-Mzm-<;9ut`em5_JskT`S_T)GAu zS&xKdVfq|EV-}#>4PT$tmBCLINVd;=_Zf#U3lD@Oc_A84_!s~H0+PT+46wNLjN;MTJy`Z}t2+2P&r!$zloEe}vVPjs>K*sy_&}lri8*DBe{>KLlYj*pmJ$JiAmAug3Ji_{ z27>9}s2T(jXA6wVLy|SFW9C9V8pk^(+k;LZuZw<`uLa8_mNkhp0ccDvLV%$es+rnZ zRyFFKtx`)2Dax|dT?Z;JIkd@C&r3o?v_j_%nca{7JfQxM4i=5l;gJ6VUh zc-qJz0097uJ144dqrM>;RP~k|$U_K_BtQrP3Ui?pSV0bj$|Mm1EQ#b2rC^j5Lbc%% z2#bx#Yan*QXk>wuk%TWEh*63vkfO_pC9^8ag+3Nr64tPRXr&DuP77k6Y*;%UYhhGe ztL|EG+JSa{oj6n=MhpyKRf7;ADk~G4l@euf2|U{(Xi*@+7-^z*6W{wRFP@~ckKJ>8 zXQy+R7e^2Wa%RQPLnYi0-77sQh%Mimeu#~E zmX~o7LP7-u2`K?Y834d=6rcqyY_vtnBolM%L%%;DqJ{bG;~?;W_K|`tm(1PFWCGCF zcO6U@kOT#nuf+8vhbeHAAI|$}x}`0BVaI7if@ri3oE2no+A^u61r`>3D(oRe?s^ZM z7%IBt1-lV?Z!Q*Kwecu*I$hm+%t1RYX2cF58dU9_4+LVOg#Z8u!DNEw+G$~9AfEy~ zrd%0#^7Ikkf(jtk|v^4G|=&#q7>Hbpa_wZIJ6{4dyvWggQNmXI>4DMQzA)kz{Az6%9RTmO zhlCImaGuy^sIou;dW#da2yKaS$x;6hS6UO4{|W5@YpXC%qMtDLA09d7r{c`&K@v&I~4ahy0OWL*B)JjumvFafjRPC6M%0n24VqgkX8D&<15}LK37(PsdvSapq^!PqL*c)P* z(%usPY7L#W5I$^B<`rucOdjm1cPlRvK{cvOt~4Y8V_!FTpM-?n=`mjH>3YzLFTHvl zh1@{1;Qde@dj5eE!^gFfsL{S$u63)IRo@)S6gl6Xx1z~{OlpJPRAoqzBSB}tN4q;P zDAZva0v))g0H&zJKuFTr6a=eu0X*nOFj3+#(x9m;6bMt290zBJz*)5Lv)4r=n08s*8O`0coD`)~Cz1pwP5T>^L z&(No`)q1&Pr6R_>a0F6=Ars@n<6^(x-VgC|lQZ`KI3XHU4V9?`VIaik1yq!cmxwJF zK`3x8R5Snx?mH4#X#tig`dT3|S-(HHzhbs^v!`c8TagCsby8-+BSLWC<-dlBjmumCS+%pr{m)~RRcmuN= z6(0da2>{PFb7m_eED$V0|%MANFcRQVV(t1B{Koiow7W&hD$1yCSe(^jePJB_Yt%NlpxVjIM4 z#N{W41Ss~a8WOjAAjj?qMINRF7)!b#8dU|JmdAoHkV-)yBBj(*Bq^6cb9@5yT%<_- z^^yr5O@CqMc6QHB{*lpc1Hn8)WI86Gl(t3&Apuv(m;%Vb;Q9lyk3DIFt4u)j!Il8! zgmOs?i}ro@7i4&YAFepnC+@+jJC0{ zUz@+MrvCF}Y2GT-l;CNw%_Z%Q*K6RK0aBJxiK%&T!phi9J;P(!*0{Eop4g^KqxamOs7I7)4TqO*piR}~F#?WdKY z3CTei&z7 zyouBK;joVXs{WDC?x(MiiLYg!AsSTusDnpmpp3u*p-O0}B2)mo2n^~1SI6qaVj|o1 zdvv)lbtr$TO)$Lnvj)o55);c}31+nJOO#5a`~;Bk+uKM->8r#_?E{=IbR>5r6M@kH z5CrV`Ph+GrHO9IcYf6JUs+7$EKm_WE5N@eyypf2&pTn<;SLx|RlV3$Uf9P?qx`*1N zb=QMqam^s!Et&xc%+!Ps$$&t$aZ0=*2AUAX3`V?W6|^c12Psyw>0N+oMhdhjXJ+)* zgj+OJ*;#?Pkegz*z-v#Pn-xf`lr;ZoOYvZ;?Jn35laGRYX;vViIiTQ3AwV1ehyp_+ zQ~)<0A^mqz1>oMZ?~cb1G`&bCXOeR!_={J+j@gF!!k3J3$`h7z7)SHL$>Ucl^Pu)f z$yvdVvK~l2UOl?>{s=Ql+Tkq|T>t<8L^~lGRQ0`>h!X%Db4pe?$S#Wr92X(o`QWlm zcQBJhDK?7*1`8bCwbs7|NaMhpQVvjTPe;(KD|rFnaF zxVr)wexIUwev|OSpL_P|(x`!USyN*9elw&R$}v1Oun{ZDt2J?GC65#s72=?_DuSvj zO?{lFI`C03C<||fZd&-#Kmnu;Yh6mKqCE4Zw*fl`>z|tYm-Ss~uCJN^+A*(?Zj6%0 zi4TcxH8VJsSVJS_otCSD>q&Q}dwcJ233JNpqc8o3%HNm<%M{5F1o#P zRVWICrLIG}^TAopTL)+cUq3JY^7T-?Ix8rKQ>J!ia-K2%{ZsQt?PN|xU2XvYKv%sm zV(wKP-Fn)TIbFV3JuTQG`(WL6AIG~_eZ_i9!=!O0x;-Hp6*ZQe%R&*2w5u~v6j=a+ zLIZp6f%uo>bJRWe5Zy^JFPCUdt0TC zI(pTH3W9avkcAesi!<==+*fv8UGyzFw0L^!!%va(8VD`~vaF==(Pcm1cXyKfua{Nm z*PPUpRYcdptVz+R958F=VKuY>WD%|bP%kL32$>oUS;!0^6S$DVzO18I;7U}-HYJjU zkxgJCH+yel_d+yga1CJDP5!a%AJ0gknmiVP=e(wy%6FytGa1_|1r zc`&Ou4skJn@azQ+Hoz6QO1!E$Hz@a))uy6Y*?Qf=N*L2q~{6}#DDZ%{aKN)L+CF6(B; zRxYQBtg8(HN@uUZ-h%us^?>`4!{6`i`JIi_O32YXX?@nN(+g?$s1y`dK*1Cu3#suu|;IbohS`cxfzH z{1T=du>L1wpJ=0XM3<>gz$?X>Ov>G2v6m?>NpQ?1Qz)Zb+Emd!CaULVR$9%@i%zhC zM*&H@*3N%%(Y>aL;_~DTU^ks~_4F*bM9}MzO*57xr%H@KaUmL26{Ze~Fp$v#HAyos z1G=Q(16JT@upLerX#Yjq4juE=I^DM6jAK6ea4lYq=+|*8t81aJE`v1~9}^TV;;t8q zAn0wkXh@i5kaXa~+Ps#ovN9Nsjx;Q^bnD6xs?C6Fm$N0%TDZ-w8J0?U`n&n%bJ0T9 zK^HuC;b5X_F`=Z(Vl`6m+&Q?B*2ZfA^K#w%=k*31oPq-k*S4vVBI7BrjT<X#OHoYRdI&PiwGBBy$h6y0G4mmJAMj<6Y)RX z{hCHu{(0*o_G2p~!QIF=Gg%OmMqtT)H;iq(+)?%+(-s)m)7-8T!aZ+TfYET=voIiG zzJ?5BieAG``sKVS%UydNY^fcrSP(^)Vo8aqyy7{-5&*&w?rd?_I$MR8yQ5D+{VY>r z?0c;c72U8*4aVXq+tBRWKo_2Cvcb|?J~=Mue{NnOcob=;UhM%Vpb22{#_FdIOqwfT z3Hn<-5=K)cTb`Z^rvXtAS!=b>i5vAy$}VTQVUqe7?=^}o1=y-`gOk{78ho3={-t{w zgW?u=A($RMuK7xdic0&R3act2Ctm;~ox)_zo+)6hFc}nr1<7i$ErzkKOE*k6y32{4*RMuFd9&TbUe32dIRR&<1Xbt2s2|>R3ol{H3A}$?!SiYq zc?b#C8!pu_>=YcGgvD0?=ow=;{^~QRDT;&bieIfv3>G5Xt$gS=Epc~EZyc{meohZw zPWT>8;NcAv(5WBa1{z)>$C&2h)Tin3J5OihvOr)iG-qfC?4SDvrS4RPJ zX4TW!DtFh+Avt;wMfOs|0GN}Vd4~N-|Nl9(i&m>f%x8(1Ja z=<71szx3$Opt@7w1=!*7$nkIR4)^f4?5R6<;=^m0AuJN>uxPj!UOT zCEzve$Q}-dE_rF}bv@i)t9IyfeX7Ybu~9hl2pw&$Vr?HTb#l%tVtB?{1+;>gKVY#1=~oQE_;)0355Ns#-^F7K`hX{d6bZ z#$s68%Ml9qc`YS!ig0^(`E+rv#88uH;Oc{Bo@1-#^x$FzK>hF^HuHQ|g_rd($6;u3 z*Nl?5OL>F$zZdm{AWbtNz8U@zXEZdyG3eqPLrYT*ro@D_;zDhO2RQfJ3N3qcurOcA; zuQ^Wa*%_HQ9Fg4Vu~7x1Y{Xe|kkYEA(%LcdRW6apfntF3L7F3;aKMHl=@-ee*+$s zIx>vqb6L^%il^CfWJQikI!#CdMN#x<211|oDT^dbD60f#jIu!S00CfhY{(>x0~c&6 zHoETt5Nvec%+_f8nRx&Ibey{VO&pZGxOk_fC>m zW#?ciG- zckyufhr@6S_k?3S$=gHmT%(!Ff2ZjPv@tLhTIC7dZp7UvibiU`o%Ug{p^w@7C5Uu& zuk$;WdsG$J4@}IKUF=i3Kzr`H@&=SZk2H<9cekteUuCXtn?VNMCy=lPGNbtR)$21* zS-@MikSGJ-ovQiS`z+a$k@`^A;5|+i2m)2fnfba%NuS;!{i{Dx)AmB~Z*&!ID?6Ze zO(tIEY%j#2nYxW8FCMoH$*$4#v9(E_L*1kS?@VrAF#up^0Y{f+Y|?mRzCQ=|u@0`> z3!8Mve3OMQy7i)#qe#Ols;JEP!d6ghRfi2vZ-Cvy+J`4RN2;}}8m9SJLY&Sd+35o% z@`Fmx$nDD_bE-@lgKPN%qrbq2>?b~T$b?`G@&!~-Rk~H3B zg$fhlh~m$_9&_MG+3$vx@EhtV)z_(yOK|k|7V9Mo5s`Z5S-x@!21IUYOZ_~c_?ppS<;6r?Kf4dHF=DQ<`OyX*hg8L- z(8pi0&tFUG+QvBKagE_cCm~}X=06(C)Zo-8qTbzbf!tPaW8jHo-ihn=BOAn*N4lB) z4fFO2EPkdYmW8GqXHCx&v5h}!y%7%)AkDa-lZ`I)8>=Kz8L4HRbDom$#ofVuwm6KK zhwQ9*6<5F@HWh(u%f5^8{RzxhXY|Ig_zK500rd1m878)Uv%p(xl*e>I#%Q>O&}9x%U1W!=0*WDI8#(wThp zq1u@-#&56ES!i5fjgJ}nhn!yzz;CwzNI^y3wOmNFsUlOXstaJ?OLIa=f0=}Q^cQbQ zVxrrm7#}^zOI;2|O`l(T>FQI?pp{cWVD`H-b7#cZ7|dCgS(^S!AMxu{7JoF>V4rcv zd{v4Wz?*N$ZGZX;(UH`>QP7SE3^QuDEWxiRw{U4>@o)EwD@D$ZeXQpSV*}C$_2$Z zd*&;_9p&1pIJmP)UE4WAe4Z>t#p<>M|2kMI*Nxz9=9K|(M_tZ~`ip2#<_ z&8!u{>k%Fd8A9gm^H8uW5Jh}POzDyX;{~@|tc$6u{+sFsK@fa<&!=_XKn5=iey$O} zck>8w?QDResRE7_>R+mAhoOk@Pr0~2h5!uipjeHpPWf_X8Vb@+R$XT`PL0(9$+Z-|XPJI`GmRMk^fJ9_NJi$AXDV?BS=vwey zAG^=VqC{tbN2;*WA=a?OK#f%vnlwe^bJ2pkKST7xpay~aLF^)btAlH>=5Il6T3M4V z#b2lm?Yu)7vyB=fyYW(Dj2nn=6N;NY3Jb}Hm^5B^jKo!0crq(Sn1|nRq|PUbi45n) z3MCdJa{+7Hbz-Zc6xrPl{k)sL4q%DQ(kK>XDqDqNfHSo6xIm;d`&HJa1|V`tBc&zi zgdV=G3tx=l#Z*O<2T)U4+3XgWl@W7o5zyV+4TXXOB&*gN**(%eX-g@>IDZDUdDvV_ zC8_=`*Ovv&9p^RSsO~l}Wd_CqZs`T_DnbSkz487Y(vW3|H|%KVfMvXhX3_C2;yVIZ?PD*u1!*#<5OGQCDjDt`W2vz~UmgXU|`=xgjlXOBAKV zTP6ON`hNzu?UZa>P1kl$!xwy==PS%|j(Oix$uHl30ZY&3-CVgY<_H5Hy#uYsQM_+<)7 z0>M|a`jbK7qs42+D5NCW3f%aEYN$(J@IJ&)zG-$EX_(;|QeW{8Q`KEP=d^Yg8&Ul8 z3fDTgm;Bhq#F#Hy466<&F0qA+%`wwqd;`nWHCY3Ajj;Lc@l`JPYdDvK@GR`4=_%^R z4Pj!h0C?s-#|QI$wsZ6Ye*wB?ZFnz+5LEgFqQ*`IHPjNxh6aX6PW6k?YyMz!3 z#W#+7&T%kIBgoi!tA^_U;#owI^yg*hl;yk<9vx~P>GQ=TQP;m#1QEGwn?*zc6It+~ z6>Z;vU;^A=L9=s=3Y#bMTZjQ*JetKjFY!(3 zr+zkNIg4Q8U%q^!yEI(d-((zN*}{Gz26h0-Ljpo#j+MLRq>?B+Q-|~-!ZD|%HGx-u zB6@1%?=(GY8#>NBodb7f!J0;6+wL#6ZQHhO zb!^+VI!VX2ZQHi(WctpUxqsp8b!yd%+K(kBMhP)o%s>SIsHiXF0LzMg8B<@V2|659 zpBwsVqzU4P4sbPqj;bz72TrNYpvJI6hC0_2H>eRp7_EaBkCyZ(k+PH)s4bJM+D??t zB+5W8&xG3ttwT@TH6g6YU+vyEfsBnaepY52x^t~%;qNp@otVcD`_>nugjLQz`MjHQV@ z8cKNCZXWY?-8H?#De!~O@6H*-Ls-ArE2~V6G(G6gkAP7?$k;$xz7@dl#2Vh}+pD96 zmb9_YYhqX{eHY2l(w{u23Z!I|!Go5}0xaO;05Jzi8kitSVRLS!dH>h9g>bbXFbTV# zqi`yja}L&0!sodyKY^rSwb{iKS0Tf0TfbP?h##tQ1NP*C<|%UXcIUXZyQW&xtyQhX(>JR;H|)tqd1TrfEwIJ60Nxc>&Q&0Ne1~lhpLp>_g3Z}y zpT{jPH2uvHr<4$&|1Mr`w1kSUWPS^WCUH^cn;2&%z`nL~@+eGM#8V@L#D3(<3!$q* zj<8IxALjG{<_$1~mkPH!0YLE{a4E;TSeGSuOo)NCcp_|zv?$Av{hTZzLl`H|fG!uI zTgR0|T(bgUW7ClgMPjKS^N$62s1tfk@64Lqpdb;kE%LL8E-NzO zaEuZ!n-Y2xc`UHLA|%kx#yhEGiI#K!9q~%_M^8fV)K1M=AY*w)0d|F0Purjw$(e<3 z6yo?kA;XjTD8J_iXJhacd0U9(+CCn|jVGMKN4o9T4BJkdFCQg&PBO2lvazQ!mg+XH zGi-9Fs0-cME^IUs+fN{mvFKffAI#%yjbN|j!aV=%h~Tm!N~G;|B=JUwc-&g6kK>vV zPg}I&cxXGquz+)&h8SLtX|+nVb&O2&g;nq0r1z9K^t zGXEWMchwQrfLnmu<0Ikp-&_mbGD4_aEhdxwARq z%OS!;4zUg4<-akUPC}E=E2xGA(ylf+48S)#+-ww2?m^`r_2jxmjOsieiUMcEB`i=d zkS`Z3vur}tqef0oGo5v!L-B~JPi5T=BX;v_@a%gI} zLvTF&nQkG7#Q7V_m5H77E8a^DE<$8yuELK1Oi3*CEsMLzw=0-}RVDq2Ud}J|Yzbt4pKh8~I>>g`^&soeT}&+5(l`Gr zuJV3qGfHp|OSol&(fp-XLd%xQ;Y|W-YkfT#aFg?eMykVXH5=#~ikz7sG!Zj<;{_b0 zyH-~31Mf@h%3gPIJlZuQ?qhWxjjk~=wY7Rj;%2-V4HRoT%ymb-=a8r(yn2i-D0H*= zc0-xJ9eDiXw|-APIA_&mOaR`%*nXTJX*)E==irll(Gj~gb>WqK3G#^}p!ys4PY2o9 z`tr;o6Yi?(Ma66~g9z58Gz{SnKqj+y^cV|ia~?l3am{{XR+k`u=&VF}Tw(S}SO&x$ z5>o|e&Hw*9$H3XZxe(|jBHEy+xc^!#<%q~ETQkKEfU)B3D!tU~NA%AZR2fMYK<9pq zQL97KdNOQ!79djl!k-zt$1soqhN4%s_co%>1gT;F4_2V>pdk_}bIw;-!$Xbc->LG? z3h5Irbd=R0mX>e1P0$ku!<86FReIbJFjw&+&1lO)u}eerTiwRe8CIzHa0hREo`Co> zm@EY;NV}=mhbhJFTZKbxP2X!m%`BnIIljC9&s^xHurz4l7;@_rV8`G1U93act zg>iJe7-WZQa)yq446a9K==T@~RCcTT@7JF^X9%M3im(sS5_$@QFSHVngW<~T7xABx zbD7T1BB18GVanI&dKM{?;3U_m?&-$>RoOc8!a0|sNKZ@}Y1EnpZFH?w@m8_(PE{2e50uw}?GswknmEx?;jdtXaxGh2Ff1=(-z4M<~#2XAm6d=C4 zZm+R*ma$TnS-O6y@+dU5o0uJtfSrSu_;@Y#6H*Vh z?K0~tkiEcvDRum#gk2(Q4{~v_1m02fF9)GOA+&~&d9g3i3jjn%6fz@4=`nZ^cUEMW&q-`+bzS0jay#kDLZ(-bziq;d(VAB8R2La|9EDR_>9l4FKy) zR`=kGRs`b8ZEXJTUrxjB5A1-hX^El_^EpsG(E=V{n9W~2s9+knTfrxm!UYPw0l-9| zr^_IZb8B1jHhRO*Sla6cahB`NqK)bjyDH!_eymcXr9#Y?e6AEy zA9x11-ZR_cPf=7+J-djAlh)I2228oc#O->z*&=@jW!^26J81YMD0qk_`2{4u#-;>32`F z@kw7K>h*H^91DSccNU`Mk}KXh_JSkSC~F@~e4Zur(nUf750W{Vq3kMsUzeE<=dc#> zmjFAx2D!A|IhA~5DNDSRcnkXH%NJN&(-v&Z)Ag*(=(M}pE(g#@nVVwN)64}33yu(` zq5@I>IGtyH4mdB{;Vt^?paOo=ykcFlS_>IFi6yFZNBqpHhPTIkcb1;m5Dt68DAG`4 zT|Oyhri;?}SHNj{7`FJ4IsmAQ${@_5ewl1oBW@WPhO}uzqk9ToUH+A_AW?h?a)}qY z`91uyh@C#m(4BXzvH#_8%hEEo#osbljL+1;@*cVjgsvsQI+o@Z0~9)3yR^Cx*C2Fa zLJl8)$4u9g^7(U1t0Tv+5hvSCmH36Y0cMI_Z zRjKw?wfG^OLJR@K4&&J$51oFqU!AWsD1iRH+#y)&(J=_)8wBgnLWQT@ z1&UUa2%USc2xMzU*$`+4y}Yf=K<^*zHCe7suFL?%$<@6A>!O-3L&nlusK>p)F*c$t zRe_QD##LdTI#-JPM9IEEY{O)%$7q$dOwfPPlEg$L!EyaU!*%_ek;A;4@IF%{3qUhzpU2gkUXk zfI+F7+nXp$0Et*Z_jOf@^wNBUhLy)<3A>z(U`rEpL2id};D`#em`P6M@%P4tnr*x0 zn+v27IptWH3(V~!F}p5)Cm*SOuC?vef{LWHNsbw+S?tv<2>+))e<4WrpNlAxpRx(Y zfgEe{8O1fVjWnkcHFN`Dk1jq`t8cBBP>4`OT5|ZGrrIjj6u zORzE*I-llA`>Q%r;YqhO6hS`z?8Mt(3)H6oYf0G8Dvx&zt5`xXHWzna{<^FXnWQD^ z#|6&$`R$M9T%2z8BXJF3X z64!JOXxz!uFNfj^Nl$I2j}n*&xgw=c?}P>Q4JuIB4b4&>7UV(WfBAV(=wnLYPUH|F z&Q4igOt1T%JLSYCaMcMG$_vpf9$nLYXzLT{aMCMmVVf$c5 za;40R$93YmgX;Lg!I3>eN~nN2vV6JU0Z#mjRb!-_LS<&GELnvYfT8W5X4#U2;&y-|wXBS(z|B{V3 zP*BR%X|Q7x&CvT<#og0q7HK{TPt!=RABiTXLTt$F#lRU<^>e>eE3>5n0P8$SI3Hgr zF*yk%z;*>JeY-}&`8tb}Ewq`8zvKKIm7X_P^;q)|yAm;Vm?^`$V@Z_emb`h>Z{n~v zYh|EtT?5td0#{NhYm&g^lA6y{mvjsHG^N};!#*v)&)rs}#2z-3p{%@gX^ebLrlRiM zpp5Dz6t|2>6m82m#3U(#J8w_2RC-d$COXl!wJ`wYY)+7~UIW-_SX2I2JA|kDC489m zy%R)em^D2b|Q>{&#GUkUA}=X zt0Ir`c##&#q>NeN1~vRi(a8z)%A>|ay&gQAzB^Ev)ezsByPizQ`GKZ#2d)-wr*C5O zWB*Vj#HeWZ(Rc?BQb#zyu_9cX zj}RB?c;HS}qZrmHGU!>;7A*-@q@{RGtAob$HKdFiKq6U-JUeP;R?X znVEP&rt6txm>-{z@arsmuqA-hA;YpQr%QEl^Vp8%YU3*mzX~E6&&O$gc6s!af1=O- zUq8f(16^~#-_0`xQCzhw1$%|o$W5YnL*Ya9ApNkIHJk;q_u98v5h0@wf1%@ionQ<( z(*X~c&=N#8^){10FJ3O+fAq)q4&-?Oxk-Y|jTK@=w&Zk>C>(l!I%scg#DM)%x%LjA z_I0dOIcM;!8bbM3IY}61vWA0O*Q)sqJjc>KCSC=h|F%hknqWDxm2Bbd!i;-s?vl<; zd2$Q(cJC_ug(GT)(*SLeB|i#c=>1Te7=BLeP8f#U-p%BoGL`FODa!O`iZI^>TTyd! zSXg>S1l1WBS>4U6-%u+3?{0l^sKKX&w?SI&A5J=J%k|Z2#*j)~6ZIz;8I-~!9U;8! zO=#v*om6z|M2a81&AG|QXM-j-7Q_W=Xyx4rJeyVvzz=b;89pvU@-x zxh#Z{C2^5n{2X`Ws&4#>80WSWzpwL>$s4O|4*yc7@hiiWlw~48)l^+Ov@=e8k{hc^ z1j1pT*y+~u*4vp*0H%0KPt2RqdHQkni)Hip%2DfW(=f^WS z|4^PY{oW20qLEa*8z{QzOVSY#l*@Qy(wYT7W}@TZ9HRAx)72_?WAoE<9Kff4mUcrM zk&RhCeypO*)un0eR*dBZsK*VZ-FQff>p~}aAxFV-@eN`D6vr4Z$YUlo@w|gN zNGX1pkplcrT4_XZGGc(=-WL_fmDbn6m=u!rC*Sio5z8eFDoNbX>wCH2@qDnWja=~FE`0?eh$n5#)o4ChY5!BrGILLcGv806r{#s z`GF{r3Yd%g1Qjv%Zmmq9Kx&v}feMlIE?}=F*4U|DpkF`wPwY+tD}3thI4f9AG!QNQ z;TT@{;1{XTVtDZ`Sl!CC(rsV|1-Y!aVYlCwuCqJhRrX zrjHF&He1=sfwhCc$GxOkacGgC}Ag4oV-d{g>JA7aG({=? zxVGfW*i?v$pq^lVL;ABMrMSzLjUEAz811H?TBAg}QD$ooAYVxz61Yw_9e3vi*pA)- z8OYa&+C=z0i8%#-?X8uQ315vq2BSqp)Su4x{JN$2NhQb!=%!zOnbR4;G%H1^w`&>> zK=DMww1;o>{$ypD_k0w-o5}Kxz-X?osWg4@6L9ixPLqupXGCrQ%?95rz5e~f7_@C| zgz+^CY4E|4C}^wAV}yJF0Sd>RcH-)75bFuI!RNH*oTA@c^q3iDa7Z^)5`b#i8BIPR zUs2G9eX01l*aLoAChwyU8Hwh}V>3>AI%F>v>LoWW|0$B)k8T4zMJom?JVCfpf2KrO zY;rajk#Nas84&umGz){C*%r*qlooyM-}dw2{(Ik<7S)+VsQDslhrMI`8^)9LXL!_{W+H>G)437dmr>bGO8h`4`NT8>`=$g?WeOW zM2_H@f3*rwuA+HB9A5t^09v7WrwIS9AmRmPQGPk_fPa(2y8$IYq zTS}LkC`ThfAoJcF)@*(2K_ntqlqw4kVi;kB1M`~HMcxmZ_*0xO9}xK*%kzXX{6xK_ zrJvejJK6>k%!7j}k;>V&4rFL{tXH+hpInSLc0iJ~Yzbr<*onVED4y(GLq}cugdn~d zo4*la>_mzMo(VJrMP^4lP(|O~n8J`;33vyKFVx8kmvzEZ^v7#vI@o%f1?`LRtqclE zb&;*~9Hv61Yi{Bs9&ykjW!TDVC2nV9@LV0b+Wr1({T@{*Z}#_@ zS=Bx@o#u7pNdQ84$pXxjjc{^$BfzT0S?;J=D(-eVrRK;PK=Rc!3%H zT_?p#_mzQ9fUjxdrVNcuAC{6c1dQQAZ6Q0|P195ECc|H}ct;z8fVDoJF^}ET&Z}eg zc!^woKLw^mxMA0BQVBsulGW$C;FZ*w=uf8C6>J?^;vgy!EGl_=q~)GpT2rfDVrJ<+ zjeEUm;WgETqYftU3hN8K=eot{=K6qeeONPQ8eM=;y)9y?en*8OsmBE3UUAO7-p9r6{c z-{z(S+J8pP?a4D$wGN(@f+tth1OBe!4-*3 zP1AQne8+iw_-5lHE4i2Uctw~Pp*P9mBDBxP(qjzW-OCWQIMt!{0(A|s<)T6sLyD}v z&U%J{nua;nbr9oRp7ZSs*w(^3Ou7v1CxQ0puNWV(H8;T0sr4zWlUrQq0F9W-D%tYU z?6!LSv6VY!%(+3*M{DSC;wEY}B{E$O-Y}y;fi9)9Ebd)qzf$dU%!@g15p(Add_;}l zwKGOvNNiH(&!lUY1fVyEWZ6&)bF;=X^;w z?VF43@8AWVc(hS$uUreHsOL9eiv6Jo=m9JTzUpvgIJ~APTvle?s%2YE)yCP2uT$zB z?ilRWl7u%-8PVg)s>MIOX^5X9q@XrXIv=&iYB8keWhlr~gVn*Q?)bHY@9T_4pb}*J zuc)Jwf2zmLq+!NXA3%MBbx?#-gG?hw+oz8IO5v6{&5nCEL!~jkaL^p3(grqJdk8q^ z78#3XYH;DBUyWqT|IMUT>(@^LM>6=8-mPV5`H|Uy@W)x?l(x7{;$T-&(rcn6%?8cT z_Z^M{y2yI1$z(;FG}LN0(X&uD^Z~mex6L*y zOK3tg2i4}1ppP0nC>}CyV7aC@D<@!(nDc%{zdIG|wF zi`99hg2#8F!YLi9x*R}8Vs`Aj9pKg7GKJ)b;)Y``CgxMzrWZIU5udq;aUA^W+u4(+ z|BjZWW}E$|qs9;`-#QF6BB_z!7DBYXTRqgBcMa0~9UXcjO-FpPArDI?W$RQ~KR{`LIF zlwr*y2*vhD_C6U}7Gv5-TItrTWRLxe#Tj2WeI!}0LI~y1JKraM^v3$?${Gewi3>-E z)KoMtuE2b}<0gg@L!Zv$kW;w`~~SeBN5=pj#vN^{zyHsjh>-FN9bOd0&!OuVE@{QlRJ z6t^=(C(g7jmh>frkU|+d4C{>teiRe?v(z5i&H2btliV5TTlop`_T-SpW z){(EI)fSPzjxK9EM7s>NQdF*15)7;B7&&z7!8nmtapiJZ)Dg3iC&28XORRE!ko81@;L=LnL+@kKLwq1ULxY zP!lxu{fde!L)eQ2s>5GLLB^3G;b>0wy2o4Q%zPaU)Si~Qr^I@A;f}=+QVhqTLeYQ+ zjIrXkKHCQbBiN&_u30dd)V;w#tgYm;>I0t`!{|vmQokj&OhBEtSDvm1{K;_DgtKu3 zMkW_b8De8dFj@h}{n_0-=P8f>IDzVcGu08Q;)2fWe_Y*sctg{2(N{T=<5p$MBFs7|D$2T3|Xd$YGLj2KW)5cEnNOj%$TYxR=9 zRf2R>og!%3~$boNw$OB)M=(-TQ{ibiSz|XcANkt$2;&o^Q9Zu?m%+gyhky`8B#bMJ%Kd zVC*D&Iw+*WZY)B=SiFD-c>jX>{*bQgElnekKiC+FDzGr%Y5MpV+))SRKCYd^&vM7snH-_K z{LrW0ztkPZ2b5E-5}uSQ^2783Yw_n|*r8hIl2jRf)Mzb*4^;9MxudSr|r zsFt=xGh<%YQV{R?Ty4-b2K$WbuAHxs?(64?sY^a-s2^tEOt$rVo{O7IPD=$Y%)>0! z7J>HN0w0h{E=58RZc9vKJ>22)KqVHM+E5k#O#`M<|5@-xS3gpIAvA8N)? zw8fLRp|t|aMMqOBVBE=0cKs}MdZn^0M+KA7=U&bW*0`#vaeHh<0F)rHdG=d(keRvz}wdpXA(&@O>vUZu{bhBwg&(} zY5xD^-2RUHKjhHk7Eb)P9G9u%P1l6Snm=avqU~T7 zcvvVN;@r2MFu8+X+(?S3%LLv%VKDEZ$>RmeJNI=-&p{O4{tEm1Rjw7r8dCxg@;d#; z=a^g^J$o-5T8eR2bZzye*k`*1f)VUOBmhoYgXxDO1?YvItb@(qf?fZ)8k8Bhth{dE zkT5b1;HUUTm~mL-sd2Lvsl65h^9Pt?+^wh~%8m*5uvA<)bZu~@pU8#ZC- zdn`1cl7!s~yyKS0giZ*{F61rT`w2$>V$qci;%FCp%X}3UVxSXgj=*hqStnC>!lh5r z%w*G4fDUWn{G6CG<12u&lRN|Almk{co6Jv=l1T~w?O}>!$|}l?`3I(HkM*rEM&IP+ zOn952tRm=KuxOl%n%};bp3;3QZki1JTNOh!6aZTI=1q#w75895*r zDNd}6hCgKsPlH>Vc4*ItQ5w^avutmQbmi}3J7eTQsmG323aY>)Lxfoy(ljtjna9glSPhTElux|$f z8qcC6%&qyu-XaVK1{Lc;T0s=(rL$L^KZ6;nrD zgN4_S_;i91f8M(iGm}^-(an&zB&&qiX@rXaSHoh%-$PdX@BFh&lCPRQ1c{CHD%X%d zFhqrZ3|MDC<~VR_^lBM_1bx0g#~K{@cr0ke>on2`iIvW9fp(eOn_-Pc$f_PYR>INu zD0}K`Pp4rUzE@Cb{d0-sqTH%XNpL5@)CD4PB`)DN7L&4r1<21Ws{YXK|BL$HL=4SI zFcV6^0Hy^99*&_UPGYeYZu;D6z?j+-U%JeZXT&;LQVMC#GzJ*0Z`FE#GEVo=)WRy# z{136I&h`Mz;V~`u962JZt8pw}2}9yom&H7R!TZPzclZ(TzjX5naKR$H@bFYJCRAtn zQp`~n9%d~W&=%u!15lg7hq3r|aNI#rWDql51}a--Hz`i#ua@V!tfgi;N6TY!^bcT3c%1MS1W+P-@{GwOa_6tC;%0IJGN7jpby%;gXR@x9F#B zLMWaB^83K|L9Dfr?$-%(o89mF6kevW#@w9Yeq2`<`O-&DTo!pS<}q7hpq?7UWi!TV zT59J-;v4i^>)%Y}&f_wLgV%mbRA&{&<2<#*Ogj90vpPhi$V-SPmwB_zBZ0<7RP{Fx zVvo0vW&V~eG8)hu7B%~OH4r5Ag07;+&=zuKC`3i;hwynLTxG`e>H8lY81q(fZ;lgx zeDy`5#)&5j;mvEkB#?|9-xvn{m&3}Nn%FI1Ccq==?z(lXi&cHc{4*13jTUqj9Me@T zF*`U!$n4ET9heywM#Ko&c(LzqMfNf$+4sI%Eat063O3zG&z*{4{?d^7NZw&n!x6b1 zu-?LKI_0Yu>(p4>rL5WA-;ed}GI)??@^@el@595~?O>eoI-G$o-Jd8#c`LotT8RS%tR6d@5XR}-`v zpI37}oiJQdJDxNnyz`TLQpJdxD{=vI0fClGg zvYvcQcX6gop(tvq)aJ^xM@(Gi()D=7esi+HCHu{)<61f5n0{n$ZocjZSPE<$DamEM z3iERf?hmHG$@WmHl$lh=AG%*Z7J3g^&hS3VHDs&CbTkR`wAqXmk3(ilaLj%G7W zP1wjx!VwiA778}zXWRzWY#dxLwVJXwiw6gg1^nx(@;0=_FG*!c4`J~ z-x+{9o%=VQM@}kFL)cVe3s=d;_qNm)>7x!>%x-bVjHq=(oQTy4h)c^P132riXJVhR zfJR%_*eH=t-qsPruWy7yDXJXB(J3*jXDAEg{4$ z)k9hs!c50!vHOiRl814%l)54GPTU-5LgVYK`3r^cn5F=AH(%a5K}MH&KQkce5v!Rw8!bbLtq*3} zY>_&}D>rN(MymFi{bZ$+6F9iVB+lRyk(ecXg&2Vx;m8S89%>aNBY6{pq)<4|s*QpD zD@AkX!s`WjZ_4yRCU;Bs>209zw)}D-ugUF~C{v_lSi8I#_~N2*P+~Pbmqch3$75G> z?LU;6ASi8Am@glnb0P)E4ikYANlT60xYyZIK=$0`iE4Kr=aO*Wd^bJnYk%D{_$Rpp zZUyrEzc5RQC#7xM+Fm}daJg7#cKIpT$7PxrbTScqk@@Z46oFVNU1OOZw1%@!exiN* zx=>L^avQcmC9y3v6dtZOHAry9jPbbmZHBP@4A_^UvtMsW`yoC!#r`@vsxGDF9|_XV z_yX(u=6{=^9@STQNSa2uWhJ-nk@Q0o24to)DhzB5cX@K7;fr(2!okLUt-*5o=W%#? zP}zITsu;!Qp>z8D_|7|IV_C9EfImp)gJ~M6ZUW&6%fI!|^mqtcsSUFSoRDE;Ad4T^ zHT~hO=;WWE)gEH=e%3PXnz|zMQ-$cyy76%)kFF_y(a8;<$fxGU?M2D0Z<#1leFI@y`b;JP^o5~>CSED`qEX%+~Z1|k+QQKMY9gk0Arl7Gq9 z%%(L1!uRId0szu|K{{eY0zW$n!O2p9Tlc5K>2F3>j|qGZ$RevB&q#H{ zdfldGpPHXAgC>ejW4J~vK!;xQ7GXf|jPiRzAwv=={a3qIK#Z)jh3uzt;SFRU;=JWj zT^~LpYfnHbPyf4zuX8dg?(w9%c!1Ise@W$rAp0WMr83zW73c5XQj(x!ioW#wF!(O#^B;Zdhm+2I|UG#O&ptU2Gq&o*oceZjp$e& zGQ6JihD@DEPpalYbBGD0+I)`bLc?4?3fsC#Z>-8MeaDacrZ*s^#c&n2#1X6dz`*6T5jKsd zfG9{3Rq?pI}(@~(b!r2^icp~EvW!@O_VhO+B%T4swl^+IE+eeh)m0GM6 z*(gMYBsE>NHfFZRQrz7f)g;K3v+Rsq zrV^Pvq@%hW-;Bol>wux%?_WJit?Av^mhnrzT6dqc7XH<6Aw=O+&6sJEVX7R&o01^K z+?M;Kc`8|#z2&tSj!)Xqi&PENDK1lkb^( zzIXm-d4YpvPY3FKFCqvVL;9Vo>5^t^Rt#g_&qyhip5xLrvH_4srPiH$ZK3rD7E|-ZH_;!AK441pA zO2ALWwhWk9^K>LKQb_QD;if~HB}gVVO!*{Bt}|DGqq?(m*Ud8eBX#cHTGS7y44L zobWB2V`BgULTu&N8I=)!Dso?JmGrX97<^`V2 z?eZ>crH^R?+1Vqg5(wsCgz_bCIAtckcHLZS{<J9&gYShdlM}t4KgpG$^-bs8(_>jYUYhlo zqTgO)XOTbk_67&|L8eW55Q#q@o|Cs}HPRY|zC6J6aU9eslFF^Xy3I3`sT>Oq25Vow z=_O96?;qr|@hb136SZLp6V5I*ba>n}y||-*o3DbJs8`w+bAr02s1~6>o48E*nCJs^ z02z~;2p=(JWwR(S)88r+iA=1X9{^k#@eSLgH59~3)oYw9{_#y=F#z_1p9!5(^@SVA*HgIS(kyd))nNZ6@za1QBg6-9@v!rY%x)j+q@(0`}2=Dqt5+!a5(4IXWCo$CU z>vkx9z|4oZDPi!ESnKXba=!V{7WD?MGRMN$k@fh0NWL8%y% z7z}5K6x1pU(?^@u|x~U@%%nW!4kfV#;&DKo? z%b%yn|K)kXzDyQ)9CKD&{<5Q83eO@7H6DJdrCOWH3O%CrL-uDF(M~f0H7P+)& zAIV#$9+ve{SsNl1^G8xLSZyBVap^daQE1+3K~>Ny#&ytWt^5x|RI#K0%%8C-H?V;l)AID}-Qq(J{8!*H;=0$b~{-bx2@3+LAw|Pk)vjKdY2+Lt; zrkURp7_tTcx)vPpwr0V?rKAm;DMwD9BC$Z|8O{9yhi<$o zIuL!0TYO{_3ETlkk%-DSby4 zC8B~2Qpkrs<;L-dUT@V2CLd6C`qWuS$YFW$W_XOO(8mjQUxj0WeGB`eh`ldEXZ;N7 z@mhHnc!faT;z8Ao8r>)BI>91~9h03;)@l>fStHKqMlZ|hI@&Fzsd=ke89sm(u(27& zzcxrruM#Yi|0?IdVeowLd{?QY*W=LKOW7<^nX;OLmg<5~6y8#;)Mo>;K z=HQK&R1eMV)>pCE-Sn9JGX6HKZNk<2w~mQ2 zE3RLg>#Ga29VU=NSlj7CsK3DS4H+^%bd6|tA4F`ZE4>} z-bCmYd-1DCPAXE6XZ!D#UAq3=Hz*iJM;>U^a_V4uXH@LIr;O8hxOOU6swO|!Mtoic z!*2t4o}Ij~BKw3}CK;1=!XVh=z~@O9EB3)u4=plXEv{idQz+4_!@T>V5aiK|b9fqS zvqQc(8B;%cHwgu;tHGQQQ$=@sS$y^1EI92;mlX4gV2@`$8d4Pf+S_&$bZ6l{Pa&tq{?1bhAXRB0YYOB=tnlDSvU~%awaQiP z%M7?NkM*5HPv9hTUQ?w=w~4&W>(<$}C@xx0Xc#vXAlYjf5~(>quCe1`>SVp|>cJ4o;sO2Jqy?qWJ*+{G2u7_`Sd{yu(5(9dUxlA=&i73?yvo8Q*Zf&53)okn+-J+4Z zY(?-56t;3V-amG@3q!zE2(e>EIe9}XT>1F5FzrNI2>!tq=|7P$m7~9ljX>;f!)&bO z{<(!dTLjZnKTG<2A?fs9sH8p-ns5V}NQG+sZ zas(FF0cshiVisYq{(*dNnZ6nIRJS+(2lNiNba3m&AknbRP;5hgqwFAdQmu#S---xs zM{aVE=lKN>}d%*2Ei9>bxmb^z6S4CEgU zmQ4TBqb9-143j1z&I0(fZYDBrl=TAm5TPt$7^&Pw7?gXHPmeLH_|#Qs6P;(LWMBc{ z5S;iDMJ1YHZ6mm*Li#|AS!BvK=fT`uYlWBL47mUJ-W3r^N5&h(ytk&FE`)_PLj0Rv z=Z|%|P?{K`et|0{KhU`$tCTR)!egIr<*wc}9%;e|KBuNN&UYVUre=!g-Nj0pE0gbb zlMpAWB@ICO0Rj7*Z*#U)B-%LsdmFfNaXNGwY{+R8n-O&X&)2rS`_I=FxH*gF@6Xvq zINbTcj^q3#jT?RZ7orqmd&6% zDtEXXYM3J5B>$&-!#4MGy*+{o5hF>~LC@yXNu|=ZpRs-HhhwT9qWxbAL`C204zI-_ ztt>O?T5mBKdJrp}u?aRD!@nhqN@^n9 z+Yu?kTlb1Jpf%aUBv_8ZEHF#bX7?My$iEmRaV6WR$?=TT@H(w zP--8NJbnNv3TXWgsuuNdzg=5h73bAdl;y=_=it<@ zN(z~M?K5A`>zh0^u+RgIpO{R5US{}A(D`9ru)Ykk?m98^t<1vn6VM!zIP&kS$NU>& zGI_2Dn-Yo&0D$t##DYPV3y+9^$QCmbA(S1G1HT4ZO!_@$|5X_+D%VGo%_F<=!Zxvn zi(6d@AD`$6o*^}J59Z?$PZG(kuCBBhmGxEZ!N5oW5Ot%Re72kmSs2!-?r(MJ*Dfs5dcf!TI8Df)u+64pas`4-DDYuVr zzlqhib^WFVfw7Txe^>>AUzi&^{ALA$<`xCPyF$X=5PiSvE1{bFL9uH*AoW?rG_!rs`WgkITA#<^A>tdT z)l_)r6gnH$M8UqV$@WXVVF!SQd<)ryOuVx9?1z#6?ERj-;>yl zSnTuQOC4f29b!43dw8p8QyTrLsV+nEwbnRcMxw=-8`TxoPghzwCTqaPs>mb%V ztSg1aLuF$s#15!E)#pm{Y~qc#-I|U>ce^THFf3OpEO z%Ciz`t)|QwxVb{fG+|6C4rfQGgJ(X}pI&BUvg)JbsUq=&$uaYaVqfuou4eOTV=CTA zoK{q7py4KfM+V||oi^wWh!v~=z5MN8{|N%C2wwv9;ON}6QY7-B+vK@00u(w32H|RQ z-XR$D!NVe|>MY>ARX_du-ti+bmTCNYgjzH%2&ioo8xbH6P*BAZSn?|f4Hc*YQ44@| zSUO_%4bEQ%POleHw0Vl-{d_MdK9{lj>C`LF)ogSaZ$tOtkj3cgN)!Hp-=1ozw09Nt zZ}s+qlOzSM4p3zgF@>dMIukc8 zt1uzPq+kFjLlc;$(lSzAaNYOZD+L7GMManyoX#H);V!WIDp&Uew_dHkY}SjBlG%w$ z?hm;ql$lwz73I}YjfG9Qgd5}sYb?$PJ*^*5aHRrjg8bm*6d+A07HFF5r zIlifkPTmes4-Cjb$oas~8x5S*%;acAC}-;@3o)&ANYZ+68svBnnNDEd+=xCi(8QOpp7HB2f zV^oq#2d**t(Aay3TlG%wVaZf)pYE?R7>MSy-ZAby28LxlL^F+^GWhCANfRC=?Cj*x|9Vy|mJ&c_qN>?VoK3^Vcuy##pk4^q|ltWoR zJb9MfG%Nc&OQ--F>0HotO!>ADA}G8hFSPt12;x9@(%CxK031(4sW4<7JMFJfuKfP` z&jD82!iZqf!ifWHw!4*AM}~ zcaCY9j}LMob;=|Zp$!&k86XD|B^XmTzYG)IOaU=A{^`@rKf96(F(cN&B%~D4I>#p<_In!1Pv-et-CEjrkvvy9qPBs1|a-Lljl&eZO>#8sd9) zq7p}8CSh8hsE>0;(r%v6-WFiJPWeRpd&i zc?qc|0pvIe3jV?X`V_Po&jf!~LSN)d&0+YtbpLWpbq4Dp<+%k#9?1!6HlSvvBoG5c z+Xe;I8Uk%WV2w`ton+R2j@Jh8I3-)hs;}=)UnO0gP>YSJ6<}!y zB?Oed`;Q)ZT-=CMWO!XM&+PWHD6oWBpskIt%7avz{j}~G(;7STHBwzv`<~FHx{!OPe2Ld%E>P#h{MjyN%wrZegQeMa)Cb}?|8M!@P^^*$BTNOFT?w@}m+P3E3H^e)t{6c%dfr}J^gcru&4AkUK! zMH|{?iZ9S@Yg3CF^}*F&4{pkmsg@*-tEg&KXi?P)vJRmw?5YcuQOfpreMm;r8uPdu z7w$~&45{ROt}S8Jtrh5Gw6*w)>(x`>(%(JWTN)!NoDp(Wu(h%=fJ5u-rHchOnY7() zE_E=u`c%>+9+>Yo35ahvf7L6%=I5eQ@#=bAETyKjE5jse)wo(na-s1xqx&-Y;@_l~ zhno8eA%$wH>L|09&keJ&73C#ftsGR7Zu>Hk=4Ez>vHHTSg@W$EhN&?^Ym7a6<+9bm z?6{ugQu3od3}Q0LdM)w3xXmMz`hy1KwaH9k!c23^Xl-0IF@Zz?Ky8L0EV{L<1ehtx z98+EnJL^^?ko_d;o3Bd@fK9Agj!0P4?{97hMt##e>4+UMn0Mq*3M<6S%F*+dqM{tP z+)3A6N8L~r9pth*G*b(+s#Ky4P0SLh(JV&Ygcj8Bj|#+z+B4O~y?{|V0d$~$k^JVt zzUM183HPj(DDSaZzp0Ofyv5HKj2|`Tt4OP11e6TIT>j&zWdz{t7sl1nuxQrA`QWPn4NDD3Fbn`7op^#1~u&&;8gkCe<0s8|t?DguFX<3`5j& zS0glqH&@GVt(gtb+OC3KSN)|HdOIAQwjHH6ALy5=P1as8mRxtsN{svRWd@^gFqj7o zOOea&oPRD0MtW=S&(fA|r%UZ?IGl7MHDhqV6~b;UQs#17Ei`}_0Szz_SY~l2M#Lx~ zhM21Rh@B*5ssIP972Py&0^qU^bq>0?gw+#UoBh05z9+I~SeD*-akbH)(#J6tzb%`V zV~8n?SV`DbV|ggDOZ#Iqg)rh%!&xzw_eQ`^?EL!uLA3!sNi9PH|b z@7!2A-)6n@X2vkK;>Ew|W}66?*e#+lkoDsiM4xtk2`yji9?EG*?q7MP3d$+NfB)Ht zl@UoO@XoC0Y-$5MVI7+#8h!XH6hv*2C+D-)A-ac2I?`b=x)^FS8vqNa&xWxfBL+Bkf zpcH%^urCEq$^*FvtS||!N)n8cV)o-YDMw^#vrkd4S=MzzY+Fj=Mvs%_`8t}&Xc1g7 zNnu0*0g#+SF`%1eX)6FM%6IfLTKD~VhnqssVzUFt$nl#m0y`{ah!X3YND~?c7{EcP zW0~%PzzPlAhpz^eDX&r<3gL9zX0~M_L!zC6$vVi5(`zPsltoorh-n%fvs)T-Nv@{+ zZo|DmA+&}4asnruACbKuOvFozWjIRANZ`%1Oi#*ND?hvy_J=3HFy3Y-*sp|CDy#oN zt)SH=Qw2sif~9C3Fq=quTi-ny@D|Br^PMCk++J)h_PgHn;iCX-8fr7iI8rw_r*wq@ zB+3;3``Pa8(P=Lht!AQieNu#QY~3BF?~x4&`;_nrXlqU7htuz0Fx3I6P~$h-Ei_8( z(pJ}y!Uj8%n7g|dh*(3_A4Jp;oChZ@ip{7NQ6~tss|8(=9+Yy;mAy(VT}^#2uXT{w z%7{p$f{7vqgi4%;ls#QrLCaz-Gz$oWa9xxhRFW!5ViwwHkH8oiFr~irDpqMS-(fT6 zN3}lYrt|Tyn@hEVkCha+wK4Rj$>O)e`9qgIt!nZ)@Cvs$2|Q%#tBmdqAW=JGi*M`*8HH$tnGN(r)sLIzOK#_1%8o|#)diB85&b^Sf# z1|)#LEc+6ZQN;yOv(~7}nbdju*??{#`8AmH-esT`e2hm;YW#~&RyZ(N%rmdWp%cU4J4V8FhE2-JMY9M4 z3Q2IykQf6B%fQ4#bWd;abhzc-S`N1=T%weWGA>%B;kU+i7gR+SJYA;Lrb?>3Z0QC{ zbC{z#=`2S>P0O1!mVp44WbPR@5UBAdZ!z^n(_SnT;L?_;byk9&i}#Ns(Y+FEsq(D) z?^ryH1#8*YA+EA}%DJqv2ZkaSA{k8h;$e$RfcPl28zv}c3Dl#6UMQn!2`R+Q*~k>T zoC1JqD$wwK!i~A>JZ;og!iBk5H?2XOHpp~~tHs5&LQ@{ALUr1D#q-(EeWK@lD_DwA zDb|9iDhp>SX=dGj|6C$W++WMSoMcE?L7&l$d2a&SqB-q+j z*Fibl_-O))i z<9dRQ)m5X-peB8l=X~Q4@;r5NzNXl@f%tP(aG}QQZ8J#SyP?!F2dL0Y+pefLKV#Ij z*_i}=a{p*yeeRrKNV^%hFhXgQ=~GX)GFHN17(seOA*4hgqVB9&1%>xOpnw*Oj*%kH zIhA|?99;F+(=$sysb_{wuk;yBikc`DV4o(4z(ut4Xe0td(a!0N)Ct-QE^Wntmp(+j z?=!maMCHWHHgV4Y)TspTOkVNnu)RtKVtNOh*fnx9-gmZaeU~hs08pI@NJ;w?al)}3 zD`5kgpu(+HMfp9)yS}MV3kr!?`ocBa#vopu1`p0xj3)drW(%3CRr! ziXcuI861p(N(kP#sle2(bS;I<2xc6rX)%OrX}Z&vD`RGg(d?*_?jCZb|NMIjMNTp);;wRg|D70|js(d&RASi<|t ziA^JR^CIlBKCb_!6G(c#_|o2{b~Cq-;L3BOiqwU+#v6tz)jF+@Z!74AfYDZ~bzaI4QgQqFy*wJU4>>uCtI0t-jDYmwrbvoos8l6| zK)q7n2;Cbkt04kGSIvuh?`L~tEo0H)SA6e!dgX1O@a_0eJjviv&Al$nO71YcgklH{;afI5{De7S8h_c=QUWZeTtr4y@84wb6X=4O)3eQGfHy%f!#l2i?r z+4e>$)<-Y(+aBAJx-mcvZ7_`wb(^8@%;G^<12tz7R;qgeP^bA@k7gXiN1< z%-WaS4Sar4y-h=rU`!4n%Aw{^Oc?`?hDCw}y<5enPwGD%q4?JjaS;3Hr=s=I8YZAY z&PjOr&L(9uD7EQ{{}1JJ41ND0sj3 zA(Ubh#UTxZTrXS%E&!ty0>wsn8+lSq?=#F5rgmr-aw0U&U-PwEKul~fW8DfEh6GG7 z@b)*RCN*Oo6Oaw4Xb7oDVJU*LsXeY$ER9xh@5FS20a#EibS5&|5l(wNvxli|SPBgl3AG+kcZ-rq{i5vEDG!4T?qcr9J`+GbC=0UOkhX(@;w=aJk1VbX>yUThIIycTP4O-1l zbG+(tZWpHXlnk7%S^Go);k1Ijw2D?PSkc^>Evs1auS1IFkM+FVN#|d(Cm@J4tIK~h zp;u}bFdN2QK+*S^_9!aoewuSqkc9F*0QGEN%?pJ1#pd$PWK&SNb{7Kf?r(J1FA;8k##lNmE{>N1RpV0icfL#kSUro}qXx(S5({X5gXjF8;2EplV#TID^g)e()g91q#V?<2*Qxi{#(qXJBmPu3Ef98X z>5E0eBJ8S)EUR=>1)Aljwv3<`(o0^bQWcJnqn%8qq&YKRpn% zcXPlTJkO70RQgM7kE;S#7K_nMaSL+eoYPv%@XqzP&0>uA&+k@(RN16$J?s^9bW`tH zZF%}zus~F@AuW>ILM{Mb)XQMG51bHoGCCQ;69oQZAZ%UPp^Ix zIM*%y!V8y-9p9@Bw?(I0k|c00#C`H5KwHKV$ksCFNJGn0#^2|V3!U} zeZctl2D+;Xqw+Kv?a&+ze!-{!rvK69-%VutQ>7?gq4dK0pGExn3DMWAAK=!6%dRC8 zRZ(bxd@vTqL;10GP0R}c2kuxah~rev-BpKru&$%`KhyU^MpyY>p7oQBhnd6os*}N> zilt{y2xgTOoMWZgv;Ys)0QzZY(&9~I=QL3yz)nKZqqUR>C+tbnX&Y6mR2p9KSAi$zM_ zR7ekouqsN?$xBvz?cjuaOa5Bd`giJtiW~cmFX*T0-{o-Gcri)7w+AzC}1 zeBH4Kq8Mlzxo?$}LRd;AkXNXoLfwjp3K|&{?H=45)eSUKL0R)f)Y_Um8a& z`;mH$ujD{2*ZWYS{nt3?d2#3O(PhLNU6hK2A*7nSiI5CeqfiurAmci4fNH>az<&c8gsU}+|P`}xRdJA9o-;KyDO`j%p2!b0U5QW;ry|KaLO6Ro~MIbpo+QI@zu#~ z=QF?;%YIEXB+(F1oYHE0MMYk8f4VVL@#{Ru(o|emr<8=8+aZcr-nNek603n>3btuO z8PecKE`82=a#W#2Q|7F7gJTAb?34Ec9j9E3CgVK`ufgX%FF$>USh+9ad%ojXEGe!9s2UXvt;}W=TN?a*3xb6 zr!V=+8R7oq6m!=)DL4lEZ)gVe4_=~doJn?dGRX#QpX$TQ0FH}UiU*p zL9W}7oFt(aB0GE!y9Q*;v(=IGkzo$Oqn|5X7(ZJ=#_QL5Ev{Ad{D-Ju9RE{R09&q}ZX0pq0cMrpy39cO$V3QCrioV{;ZLsxi7;fX4NN)e;vc#ryt5^{ zgLyq!E^2t=p9NitsIn}hX`D9#>_E`euHEpjo<95%#j7gPCHf{Tp?PP|RzBjKt=qAndU7e@xi}G%}N3?15}fGSoN6H+K!WOiAuMVS`OQ7}hGX?QlR=Z^>vXs`hma z;WlTr@m%C|?iV#1VB30suuq7fpd;jdys1j_SP_rJjql7FKsX9x&2-Qjc5AWm%p4~Wf7trcUX&b*2G=jzV9D3p(xnah6bf?8*kFl+l}xiYOdRx1_&5QfXBo+&O_9L*fy%?90CoNElRBVNxGB)Xb*JpsFjiEA0$S(ney zUa&0w%)<)NY5_*>ItK}|z3=TblYYf>s`Bg1^T$_hLIfkf8RUN-InL2)k^58fp(Mjl zh{MNeyELx4gPn9TBkmDYTU59vtq(Uu|1dVy`E&O_*| zTgp=I5z~N7r@~e5L^G&Cf0d|r7^ZOJoWzKJ0%Ye!-z3>TE?g%GUF@2RWP|)u#UT+PWkZJ0{Oba2*$aqq&KNPE?IA z<`Y3u`MY1Xvi@W!+cGh<{Ew2pI0-+4WUSEc6&BAe{P zaKl2wR+2SmY17?WX6>4!=1$%$P#$G5WM<(4=B zjFus#M^Gncz!~#tLpYAx%$^J?GGVy#I^Ak#0xlyOP?#>(rMwcpQ2wYehqU2xK4e9Luq9;=}y`7(Zy>$cTqln?%L zV2OC;c$K8X=zy*yIQ#01yYQXJ!o_+Ht|qQFAK}}1wO+0vD(=v-Xc}NgRoL&HO{xkg z+f+8?B=zjKhWBfm>6^ecSJ)Op zurfJVj)LDU^u8I+txH7(hPPi~X8TMhYQ`>K@JvJxl&y1Fk+V=)vAt%BfhG3nAJ4na zB*2)r6Ub$8jxmrsR>Nu$s`(QPX^If885B6jCYy-@RVzF9R}jos3-!YYrJKI{Wx{w$(#eld-)Vr2Z{r}9!{9&%5knc;Vt(w z&aPi_|L29Z*MAJc#GAGNmbwj45K0AKydYA)wK(k%oxZD+#iMWI!S8CJ+n6OTYCbZ9 zUg*?ThaMc@-K2)pvUnH=GnKxahKdN`bMKQ>)ll@Jpq%(56oH zC`7GvzDT^gp@#`ZBV!;63kZ}q*(qB^6WHEog_HvYt$u4}`4KC3>GbRQXO-=(zS|G; zgT<=0VtfXZG#uR@aK$8Fdr8HJkfO+Jap`M7A2>fM!=fw{BFVb(%{ExD43avhw0k`; z6zO1+DnYdZ6$1qurq26VUkU77vdcnfL%q4)kNzf?`?Srme9Ru%&UUjhD*%!z$L7{< zr_dGXU0utd9}MqyS_MaLu$FIgh+1EW7M}>-dU*@7hcy#yv33U71N>Fd#X%gtxD3?W5_=1?h3BcLZR2u8JCVJ!?Zb8oK z-FQdbE3elLg9TAEcwnwVhrxCp#G^$RIcN|M<1pWC6Pf)? z)Y1?pSw*i0G;WjTmm!m8jj(*B55`rOA4QKLheL$uN zh(4Lgl6-_$;@WFeqoOh%pUA6A#gZn!WX9CIKWU4UUPB)sql5xBqpz^3IRTD_>Lk?< z2lx7*PNxt@^ysIoCJ^WDny~+ac%DWbjwnYSzE%_8jm$u>hEGhTE+;u$*lT|`LiWn5 zAidwH?}rFCaa=N`en}t5gsoMODJJllWY)4uEMXixnH++#NPxxlg|uMG!dh($V_R5ub)lCuW^53xxE-1D~9@f-)5wyWOV{;->xF+by)gH_qnan77w zBiimmvJmbKBI4FIoFCo9Mx+hi`aa;B!Ivvu3MLma(pdLm!%kmEd3H%wcDmXuATzZe zwu4He81lPucoz!ZZ5Rq8%SA6l?-9C1Kd}L}=0LDZ=1+f+(CTO;xlph^3JSdXbRIX0 z;7i{g6n;HTX67}gr+TO?Sq0fa1qRZjQH*`#(XQ97m)P2;K`dGpU|hUG_}TDyaUD>E zP@Rk0GQ4&r5wKQQ|0Im0DtU1vLlp92ru-iI`Y6KC#Y6g3O3^{|UM-M=l}Tm%KF9>$ zezvL+YrCcdSlmr9hvs^Q zX&A4B1~%R7as4R#;r2ykuHTt={FGkQ4&`P~M2*P1!#xL@$B7YT{yX#+zJly7?N*5E z%T4Urc=r;bHMK8`x$gO+Yk|BDlf2SJ)Fx1u`;aL{_q+zUj!^vMiQYZuVoS& z3ESdCe=n|#Oi!Ac0Ybg`nbq?Cy84;yGlq7L}uqbsJRzUgRw`p+qZzQ{tU%Zwp577{f`pCYEA5jrUdBu)`38X)U zRIQw;{PE|SH2;P%mY=?jmw!v6z<0H0bbgR8kkijIDnch!NWV^Sp z#s^7r#}RA}Ivh(+iyT8ctHHIAU(g%~ttmY_MN_p#qSSlg6zv(1zEb zBH@y=`OkfxA+uxFM7oNuKd+9l6!sv$m{ zgE9`X#*I&Vr)^iA2w|u;R+loenX^|N=;|X3F4!u$B3ESB{akxU)S^i2ac(+bN;LX5 zpb*6MpRBM*Eg8Dv0ngGNQu{V0PeO~Cf6^SP;(8ZsA4wA9nlPcG{P(8|jEO{Ukr2iV z>uRF6zNxpx!K>H^VVx* z+z-xee2(cy2f$5(?Lqg0NrJ@KN_ z6!5-j)(3Hcn#6V*Q{;8kU{61z2iVLRIAD`iP#Kd4WPL>x!Dqr_iiqYU;S&+@JfdqUK9T@z;-SnWe{;_s zE;FAKpv)B=ieqc*6q)S65Uwn0KRbw7h}DzWuV1rp9LfT(?zyMn-;=F@4b1Qo>0M=~ z=2lH|XcugL^!E~o{TfO^?sZ)n1yW`3UE1<(^R1NYl|}CXhk>ssiY8%0~sfz{{lR76Vz7c+fMMQHje8h>Ymm;~C>);pPerhUbee~&6( z5C?6*=4@;Wq4rk>YuR6;@;`3K8|AT6YDdJ7Q%~$3E;q?rM zSuWQ!kkC~2bvNG;*@%W5DYl#A=yEG5UR&y4vfgQlkOprun`+_JliePz@?NFiw zPfHWu8cWC%G9$bzr-_U|ZMDvuJ^hZ18OuM3mfJ8T&Od=rXmQzc%qU2n42(VOW4mVQW5A%xO(Ni^qgCSibN%Cq?mH>G`rp~ZjhbT{8 z@zAwCRMrwL;E39UiZ~)igxI#kDoPUckwf%Fm{Blxmf)kF9~%ugxqE?Y>M_-?Jq z*j7`o)no1CN9Ctz*4G9fPnowDhDrvV^75;yPhjk(JjIt;!|5PdtsRIj=P;Z)|KDYq zkgICA>%E~@>Mw3wJw8+n5Fb7VU=$_RM~yJg?NAqtT@GM?6aVtre|GJ?TRH*WE8lK+!d6>@Wk=a<8g3Rk&}6o3 z6QbYm%k~K{AL|1r*~WmE|3&)uH-y6x%!1MQpBlXSNS>W;X;Q77t{+x#lN$X$+tp#- zRI`WWKI~7K?YaR+&ckChtJFAbgLKJi{mU+=3q{cHKh*ON$f4(QvuI}9B}OzXrM{#x zA86SWyrPhpm0$~yq+Ogx4rrH8!Hy*3w}h3qlOE)l{V~@6tbsISmUXPQNhil3Ml}~n z4n~EIsVi73zK(mRv9e>2omjnk$+=a>zxf}_S^i^t+HSZJ;+H^-Cp4cKk;+87*_5W> z@r0|kE>u9c_@&42XrLF(q`7Ki+s*&(S!a)>e z#+}Lq&$xS9rDsc}voUI!pG#7GbnD}Vuv%fjtjODrN=~dZw`vf2Mg^u|n{B(#1%+%u!Hl+k z2I`9c3(?l|Dz2i)}}d5*AS_?YHK?n2@Ih_ zuD;@fi*ND|5kM$=hdPR8O96Bl_Sm>|Ei?KpG8wztc_|OCv$ee2$B4;xynO5wxZNiX zF=ebY3&?kUOXmtK=5IpuP=`a<2R9z*Z(C!E%lT!E(21xbckKp2B_Q^yNS?*${+qlK zJPs3zU;*TS(h6SPhjDqQ;F&4=ctr;%(J||9#w@uMI5m(aN15^O9EUgRJ5kphQTSLWMutQQ}|W?q1x z*TiYhSo;SCA!vYY)=wu}}2%|Mn+c6ET~lP6JJg$x`W4HGtH1^u@Mp#V>TGcvs;% z*=7}^p9g5Tr)!aJ^||zU6N0kOW>HKOK9K_DrisEhk~Z@Fq)+Z8j?Ait$}!WW8N0TJ zg2>79Ws+p?PTXA*&w)?9Hy@wN2Vd{dI&+;5KZE?b(~pq&N+9d(=rFZCu%KRhO=vSZ z5lH@dijh#KC(1H&!8GGCP4!@btASJeQe*J`0y-z{9}bgn_X~2q&0E5(yk(OLK4o80 zz>AgfGah+$_zxyoperZK1&PCY?^=R>wCR*Qej*pMo{>rA&}rpCM@c@r6)tYw`f0R# zaYxUOl92K%%JF;9l7TZN6Vj?y*)}mPrtu6kX+cp^V`@hP>6opWMNqnaz8>V3u|^>Y ziKN;2mQ09bOF7F4DcO`F?rkpexCTga5b>c`w%I{yOmiZwo;?pA_c%U0B)i|pN)X736G?I`04#mcR^9@x?w*;qFyL=yv9KEEBo2P%njpS zkjf!h4GWXdNFAwb`?Cpym&bvA&a4ToYAg5P6_KA79)v2k*AjoeSseE{?1^e2jT^jD z3U4!3nt=R8E~kXgpQaY^+F9iZ-sW3WA@096pf5&Iz2r9H*G7g`e_6TMbAn1D<{9S8 zIp^ADJYpw&H^d*1!)&yIUq&DTHc5rrR*6tf^B_7#`tvIvPJor5viF7IWMQ3gC`89!5P`#1FACU&9a{3Q|SVS9XdYgcBwQvB`lh0lh$yf zA0uDw)}q^Sjjk^Nj&oyDZ=DSt%={%LkSNhZ{xZgj*H^Iw0)K{^R<|RfSxOl%0m>XbB8zIW3{$aFFo)( zqAYJRh$JTFy~7j=aG#HZcJ?6n%xbH7nt8?uc$hbCX^3P1JR7|)P9as@p7H6m#`qp{z`Z>P%TJb_*+_O|u(^D#O zZq^EdSIP`!6w61Jc)aq3|2+>mNc9rDI=3A2+gZPUVMHqUFdbYbHG@I}O;Njhq==xvDWCtCJs5l(9__ z?Yh<6-Xk>xkxx(CiJG|_$uNg!(@ZtDnt(8PODf~#b+9JhMl1nwP%RH$y<(&9aT6PR;RF(YoGh8qu4_Qmqd>l%W zt)3QMt@$uN29q?K48T$J0x(y@-r6X4nNc}yk=fsPGEW{tDCQ&lb9B%@60xjkhoU`P zP3gC*4KLf=jpV)7=tWccSB2-|4JQcxGQGG&XQQ5&p^? z`#ZBVN zRY6g=C|xkc)*t7N+BC#UYJGhTl=qW@A+aSiMHt`{tW{ElrwEP9Q{JHZ3bsnV%~9HY zOEPs0Q}B9Nr0+m%KFuE02z9CH5JC5(>+|4UEm_QIh1f-PpQr)NTA!V~FO2ph`Bx6T zhW(4oi%^1LDs^jjkr{(lOEF;wW3jE^6Kubb?RzN0!Q=p<;dBV_c7VZ$nlrV@QqIQP z!BF{@!CynAk_+e&G|~3r?HtQz&71r)w;gpvn?Xcw1tOd&PGc-3E9njNg{Hn6VSs)7 z^dZ=uZT`V_`2@4-60)tECeb#cLh>(AnitQO= z$#T>hG#AqPrbo^p`+g;98R5{rfB{n{0ubqXi^*3AGsY?saRO>WBdLlJWR^`t#=MoQ zW5(&8#~sKkXs*nM%Zuc&WGyCr5@y7B6>)t>s~$mdGb zMTeF%Mq&9aRrDkIU1{=*43EvRY@7~ja*DNA=i83Esi0U%Oey|H`!>yu+2W``Xd=0S@)GiEo6m9%- zJ`$jPrnnGB338%`^15gBV@OenIh1&gK|zfs*BE|)0lWuG;I%lEm;mmB8CXu|6w@f9 zeiT6!N1W?g0LC95E8`A0KEh6Y<`?4+6{XoZqD%ULQWhs=6)-j0*oOLA;fFP`g--4= zM=9vsHAImo6`aiCJQx1URBiwgEB2DKj?|&allQ5ul9=lwGc}DfC)h2Jo$ZA}sh(gG z253Z{p!APv$KS1&etB9-l~H|=lH}HTrROUAA`O);`b7?~rnhLUG20cZHX7QM;xbZ^ zm`7n55dh`cL5W0xB=o2p8ojbpY6*BvTN5(qr4ydJ*RDm5v(3tX2i2p70J`J<<>LVP zfO&Ag;|FLzK;K`nKi&CdP@TEqf;J2GtJ8+%ME&^<- ze-kGLt`%BMZ*;Z>AWTr6$30us;gQKl+ZGq5Tu$GK({%AMwx#K7^pUzFSUx+!c@*B- zu#nQ5w9E6X{+!yzC6F8wTVA{}Ddf%AWsNtXs_#RUl^M!dS85!jcDUx#M*v~D$G>R+ z0F(s$_eBwYS4?wR0sLRxBLnkkni32QOaK62;NN7oJ0RruA*jVABr5>`fCRB=M1TO$ z_BRB1rV(|c2y4hgNJ?piqUM?JSWnxF8>_~z^LuSoUk!zr^J<&`k4wTGx~)#&_lFh= z=1aj%rhJT*Hate4Dpz;EAi&{kZ&eBp-0<*V>8_tSQJ=+BL|~v0{n(b2Xo@ad@VtTN zAU`TSUOW2SyewLDvwF@HW3_>c&I$`kUvtrWUEp>6{UnYB4j|2pi{+gXMV)){o&qnfs85H_A>I!6PV<4gVdg2DsXJGky1!2@k= z6ziUl^(8rDeQ4VZpP}v|wR#m!M#{IUY!{=M?O|uRUA)F_ZI?)(nNjLwBG$zF!WUB2 zix%S|^JcWDbmqh-h7$7Njs5D5*!YG5HsfHs0VW%8MvpZ&oWs zPgrk!(`?Q8d3OYJ7X!Q>CJt1IA7um0c&y46yR}#ilU-Kcz@ic_rF`=7zXValiA)e5&V#lybbT&SG)S>b@x>D z{}lB5H_ZG*3N0_fMX1*@Ay7CdT zIp_%jm~@}`5r5lRhirD-ub#r2W%+!osqv?q6tyc4T#wwB&bO~#F`VBzR zF@eVRDRY;amNM&BECPJ~RML@stgoj9BMbqCePJ|;1nP&q{vQB2K*qmZE=yugcokh= zam?J4qFfW-ON6`TvF4q`AR?TS$MJHwmMX{OMv9zkiD+tCh_?hc38Odc*q84NK-{J0^~$v+ym0+C<5(+j@9K_k4{+wPGm!F zalG%QlDj5LbiR5##so*BzB@^Hdpl0=<^T#gKU<(Ukby$2qPCui!|K6Dvx@ZAqVP6B zkH`aPv6>=YS4gTZd-2mguLIj%o3v67za9&IUI`7u*kGnHIRML}S#e^z(O-_vb?iM` z?g6(Pxd1P!ovLRW2}ptph2A+?8KD1m%=Z^I zj^gdB%XI~q66NucB#QBF#VItz!FTuH(6n%o+dPwo;uIV)MuCIWAfH?-TtJT*cwu?P z;?#dY!cW;-n$80I;9n#cS?n)E?H9U|PO4R#5+v#$9+i{%*BM*^g&)TFq`fvEoc>gf zxwnf>K7cooi2n!8iiP_622rqW&dOH&2^Vr&#_7p|=rn0{F5nJ6Z;U^sx4#-hZ5Bd= zU{;<~g93k8Hr>Zp>{KzNx9YxIK%VOeEsy-bqFs)+NW(NOMmrYgoqd_lvThua*)-yc zJz6CJF%;i#R@BT=Y|h^P+W?;k(EL^-6x-){!(`WV8r*$9Be^hkr)V$gM|jx6rAR*n z9l`SQrLJ{o-0K4DoSguE#NVz_5XeDX9MMnL1HJ>363Jr@>BguCx-i~^{^umGyB947 zM_ZwDF`T2_vDRFo*$@%*&x_etBQiGCeFW)r&)+UYtatH6PaLouq@l(gT#`)}#OnKq zdXodfONEvmD1HFaJ`_UX(%Q&4B-bqjTW9zTs$39rE$0;lu^@Q8>_{un%=zq~=!(^% zva0GwoH=qszd#|RvaM>Es^s5(GOfQ*S#n@-2(wEdPsd8FrI5k}nFm1OrFpL#diA6E znnIUtEphP%k7RpAx&bzA?7&wH;7aV4%+r8NR`oVCwsb8}J@}q|alZJJb8fyqw3Gut zAY)pdI=^Kdcp$lJ6{zu0(sN-KK*N<|a^yf!{0EDsd7kSuVMH$e#y5Xvf!a=b{bR7g zmBe_XBpnFGlG>02J;Iv#D(|Mx9V?hJpCP2k0OY|w+zWt?4q7z^<%dCHkWaZj-&Yac zg}2km-vILd8<=4*__)a5mI}golbQNz7Sly4V0uJ;PS-qVj`9ho1a*xxiLIwBJyf%e z)JLN=cJEOW=D;3}-zj{TMFLQP|5Hauwm8Xi=o$TofnJ2Zj~DVrL~Z{A*}vZF)f_ce zc4~3G>+`<>?IZp(Uot&z_U0quUD$PaC4G9 z`i;%C&Ki z&BEz-ky7wW5Kc=zC^5M23mLmb+e0lyipkF|Q_{ibAoC8HlEgE$}wncr&I4G!FX{^?m) zr%z|EcdI}yJLFkeh>{G~s0B}%gktY*wZ*dX;F2t=;&=Y49Y8;3e{eF?EExatzY4F7 zo85U(f2o+;mMyQn5Mbx-G|MVJaffDfNh=($ zMXX<}(AtrlO1NWLf2&NaOaf!D9WdOManjcf+d4PHI%;eYU0qc-fLi*wP4$R`S3x-Z zkv3B^+EEjo@s$93K-gw|2CA(%48A2>e2tH!I@S02X`VRrF^~6|qGaMxI9&s>tzaPB zlfLQD7y+T(_=#1e$xtQ`3(ZG%Y%FPeBr>%8b2d{+9wazDyvrTEM@9#>PD!B;&zw@; z-7(3(O%kq$UYHyjW=S6|c#}AxdLU^{zJ8RA;K1gokE4Tt!=i0Set?k0VxL1#Ckxpc z<@$gv%o7QAW2*ovHjPmPk0b59q zmay~m;2^(-U|06*jv(ezo}$mTbwR!<>?EGwGN~e_P91H+Mup;`!7nktChiADU z-ydmkA5MM$uWrv!!MBf}TU{cT1w8SgOquL4&NK_7_BBY0hN~n*vnI9De*V{4@NR+~ zIjR>+>1c&CGFRBtJ2?Y@)o%gbJDM(5&3$j%<^lt^aqO<6WxGGBf~yPfR*z|dWLJss^n*-5YUrwW znL=Zes>DDfNGjJ`S6ph7*en=lEG|>zZ_T(1@{N0bDv;+>iZAUsgOZ%4zkfA4uau|1 z5G^XZx|vA^3#H)f>#M>F9(^8ftZ1Hg4G(a9LtF^mdoltoImyw*B$V0A0b|NxM3`hh z%kIaVuOGOgik4QF5Dqo>dZ6BaKysbS?em19E^nnFW|H|Q)lX|sJ2J0l_sB(spG9yy z_a&wCVPI%!<7d!j?v?Uqy&U-=GOwozaHb{975tH(K|bqd*(zz$PoC}bS%@IY)m@#d zHBts+mgW>uIdT|2AM>Jpl0sOCAT&(rHK83#=*dJqxfo^klxgXVZD})_Wya+6v%jQ? zelGU!lqL)m--*z0VWd*2PFS@6bT^xg6fLocCqvRr7cUvOay&)?-HoL(mPn)CoRWrY z@YsDGg+!Q)psDlzCF*&4E8vn2OFr3@OtS#d6x|8t2Me;&O9N&kGJ4prTOAV`M_o?n zlc#EuA6Nnuw($*R511PI6G~;f7So4vdvPDJ?8-o+_`l)7=N&dc?SS6FprpTBsy$up zBOZeQ{}lL6zXS5k;t;kYjf5E&D+nlS)5R1ieSyEu)*ByXRyRxUDU8n8U?h7Ki6vZ- zoslV$XtW>?Q6E}v$cGA8O2QY|O-g=j+f?gw9A&y1+IwJ`sIJ1^MMW*X^VIkH!34Q{ z$|HJa3$8ftviwp!(~OnF4Q)heO|4bO+_`aqT5?IS*Rs|i+T9Y=$-RfLV}m57NhVg4 zivI^)N(gacZjRKF>Dy@dwbx*2R_G0$4dbxu()*z?+EatN;J$hWR>{R)LO{_6C}jE3 zdVHnRxtP}@87RLa@q}mlJ?b)k+f*1WXQ&`h;k(j)t`!FVD&m*&6TpqHWQp+}Nt?!w zR71S@)wV)-hl(vG0vEJ!;(+ z@(gHwxY`Rfr1Af!#XgqX)*KrmI2@wYfDa8#2l)NiXewu9EP-|nn&r9b50cjb!#YLi zo577&+bPP+*rm;ELR#(B*hR)~&vsHNQ@jO-^}V(10)@J;rzaoRWteM1Ubl6gX)_xSFGgdRRM3>7#<*Wt8RZ*qbKx9Xv zqk{x=DQJd48F)a?eU{^)mA@-gr%TW8Vg}}Om=gliHB0ETKdqUb-ZPp90=maibmr<3 z-~UWWIb8L9c1znO;;uGVtmXN3Z~RRgNKakN+aThwBk<+B4J03jFLoDT)px=1#gRB~`B zosFQaHmHOGeSiC}yV&`O3{D$|lnj2~(NlG)x(AQtrL`N_((!e#hL2QD5BPFpXBqnT z5Oa=hz?qMG-6yVu9UNEgAB#TN<=*qit}a_689ETH+;XWi*vM;}nb_>HPvv06r>(Jd znBOM^DGS}W(G63`e8g%H6_pD5T{)53G-3FbUBvH~U8#$7cY^QnRO} zH6p^f=zzlh>`GLPcA!=D4X{Rt!W>M?4g;wLJTVo)_g&L6SgnMNn}+;xSh zwl#+;dlFuLXvH}KLl5B8UKf!Zl&5~zP+3)s=yfwlY(bOx_12YG)+Tmm;b+RnDrYFpS3d zqY_$*SCuyEA!unBghJjb{4G}i)%wBVr-|LcKp~PZm(D?zUc=c5pS~Z`0sWYwJeF;* z$7PzLgtqw7Pzr<7rYLaZ1!VbHLt6;%4agH*QqQQYxe}fY&E>lNjJP_}gcf3EU#R7H zy#MIuXBIF3WpnR{_^U1sSc2%4V8X-!+RwI|+nz64a1di2;_E4XrX-8GVpW#Zh3fqs zEA43m)|+h}-+$e0fZP@sd&wH&IZsdqp*<=-V+w_30y}ApVyI$9o&PR=igus+M5osB zrpj<(0HaT(<+!S~7LFI0~QR$u`D_xRVJy(H44;=4|~` z_Oq%m1E7I9fRvJEkZ>F2HPxd5NOMd5gSN%dE+Gf(dU(HvVV;2Uy6z!Aw zZzUMc!Lt+8-y1q8dVC)HNG0_cXjL|I#s_%U0~N!b{wTC%n3l_?-B2IJC7}`7KaBw5HpKm8hWGcoF2$Z*GNuQK^3xa^A=AS z>YviT<|pf`YvWJY_LQX}&UW>)q)(2b8xk7fmASKE_8PZe#SmuqY!d5u=xx`ypMe;y z;Xt@ucD0Q-B0!6F2|8oV1m=u6D=F~@;Vwi(jm@`oly~se3$yjB*UhoE#>o%s8>x_; zbkM`uJ(63c9^De@E_CYpj{V#|g6z(yDVT-4n}z1NjZd=(eEiG)9)0$iR&zeUU6Uq| z54W907!&0Y)$@QNOCfE3s$H2s6Oeee3kShkJwQ)JYhRLn*BmKPxC%NU1oOwJ-nf-C zfY3=IFB8vE-z=7;@3YBxB~~wfI^0HL{W3lbL%s^G!qM&d%uZjn?Q!b{$1&WOsd^6T z=u~CI4=CA2=C8Z>OE{p+K5M8ze|@I|lhf7QpGI>UsknYiJGb2sBX&=ysNGMO?0~zm zV5bmB%GnTT!SfoYp}r;cd58l~mKlKozbyLVy4_wBeV|{^d$o7iWKs zx%Fp5x>|Ba>UN9IoZb!ScQ;8xzF0`0@ja3a)fhn}x~}YhP+D=~B4%=Nq!b>_Bv(4AT4}2-uZ!8okd# zV)%pPNBX9J1hP3#@^D3z9~?P#K|uUjEA0A?Gj>=ng>w*Uq(Nkg_uubuN!McH+MX@f zy;#v!c9Cx5Xj=8ckdlb(-#uGNaAgDO@~R6?XK&>(2CkE=aMyJ1h@TMn>x*0r!f&1t z4z=#V1Q{QThVT{!&AW)@4levD)IPDP+m#mN?1%d!v}~RvoSmp63JbuRX`l1zQ#IEc z6-Su;BclJ{?Ioa?Q#&OnT1<+H{FH72Nz>n3h<3lv6GoB!&+`$436$zMf)|?XvEk6$ zM!?ojF_Fl_0N#qkzdA;7oqdA1wOEM{Q7=TnYP^wH;_JuqHe%o(!5SR#8(UQ>10u^2 zcJ8}2p(BXM`&&k@Kp#kMMo^Rnmu}tc@FGwy$4>2$9&VvH2!H6LMrAl2Jk*Jrv9`Y@ z)0pCrr^2oE&@8T9#0T(V!Skvq_a;`iT8K8$ta}pPoWlr6-TWvjS4W%IdY>mjD_-=e zXrW<|w>#CH?jje)Rn@O*OmuRql#7JytPZ$!b6_BDmT~c4xOP6W!D9b$?-~IHI_cR8 zDH($@-;r($c4|tSe1WG2h-4a1zY@vl4$5GA06%h2~2N|U++=B;Tfa!U76H*Nhj zy;vt3Rye0m4AgxCY(LgDMAZiiFwBMAoTiwaw-W#ZE4nuZePZ+!rBUEg+Z{}+j5QHC zhliYSz_QDKv}Ej)Dm$Zr%{4y=+i!B|@h7lZs^K3>E(TI0L&XW?L_lj%z&|EPUsoTG zq{-!4J3kl`-#sXNh{Vh84$y|I!e($JI^iU*7SWz>>tQru7y^uZ-FjzcTI$-3J}%ZN zGuYaIy3heIUZ9+1sjcEXtUdhp-0yw;P22MOD7$xf4_k!m3=#mNb5-xG>qK%0V9V3D z!W3ff%~oUZQdZ#co(oN?FJk`fbHbJ-#cBTs>a#N=MP@pBM2taUKHwG$7k^8FtJb$# zVlgFgh|be1FxM$rP*<^2JRX5#^yCiO_Wk@!m7ZAA%9SPq6Ky}lzvo5pSLxJkmIF6c z`d@e4meu*bmDDc!w7HS)JGGsWnRt+9K9k;zZVdVkj6fWwEX> zNg08=vM{Y)Vxbd!7UXeZ)<*HvaCG}gwCJ}Gk$ylDf2eLWWiXd$Z$W0kv;%b#TKA5a zf6=4s^2o8UK@dbSWH%>SZzPp)1M8ve2IMEE+^gk^71}J!gRh7jL%6MZ2H;aveq&3J z&qf(R!nZhT)w~TYY_RL zy}Q208uxq+!`S~%G!_z>Kp!)XgXKmD(W+?I@9w@#v#L0>=_Ot@&+0eE`X18>DkruwD)%>FmHgC34u#}+`G91veZ~`M zCLvT{l^Hr**S$U72aHh5b0;vmcL@M^l`+pUMgbfRF7m-DazUs1sbBJd|F-vKIJcef z=6p`pngAxkyG=RupbKR>ZNp?Af1)_TOdu)ev532a>gnKZ3Wq)<^4)4bu3MVLSS(bA z&iZDXuu-P0dvUB)zRakV~Ic8CbRlV_~ax+}7|v+;?}vzI1OeFi$eC zU#i`zX}nX$RFfPOyj8m$j)pJs%3&QeO-1Fh(>1VHSpZJsRnG2%=l-Cb*3*`5puak= z9fT7f``VJx-uu%82PuGcFkKDpuQw;gQ7eyG2?uM8o4+_c1<0e|7Kv$V)}|^n;$|hQ zCLzvTJkACdfKkU=sk&E!UU_@TwX znzpkGfYbo^evMc~RaPLBpv=OP6;AAXv_IxafBLCa8kisC!@k0(VH}(_+VL$8XV>dJtE+b#bUF7l` z@i=r0$nz8LK@$^M{+PJil|Ho`pqj9Q_)I{C48jn~#9R*aL5*A>i!u z2&HzH@2@0EdL9(0JNle+ZVb7&wrwuc#8v;Ei#M%xM8D9q!YdQ^>ZfkeeIrDRQBX-& zbPy~*HqAiEXcO}W0rymlrZUPitC)`rQSBbYz>Lm9{7+%8W0CF|s2$0#c z?o~gu0JPmt3Qu{j+XHWvV;@5}d=F$X9I}EOU127sZc;519#}nvYrc;J(w-N;_U|i`Y@3f!~|4F5`A zbf5FU&@K>36!)&4Xk1L%sp}q{tPqh*%w2P^sshg!Q&3=G&#|+mL!QTsUW8+k)z?hnG%Vt zUkJz~osPOPZ%^AE69Im?x}xK z`pFlYFZg0!c)Dr9T%}qsKg4Zv7Y;~F^qyMD2y>u~6BJ7AXE!?x?fv!9qOxPrZU&OP zxpoL6R@nX`ZzoNIx1GGvw&l&pLE`!DUjY>@w)m@H))Qu+a{cLi6c_tDW790|y6#?_ z{!(Kd;VBwZ?O;Duk|Gw6q&q0s3 z;7DkEL;(HfR#JxXX!zpz#{BDjLY>hytuFe+_guzD%|%PUg=`!DmR^K7Mj=GTER8Rt zX<`QkRy^65gF*^&fL|*}{A-EIIOuI+m9<1RsR9)4!$Vvr_#3x+p8}O0&X?DmG8b{CjT-d@TM8cTNfsxDc{~zC< z3XI+|_%TY=9<42l(_R*iuVd?~CAO_onQ_VRwIupZ#3{fr5VWOJM4@ea1ii4<7Q~ z6Z|5WA#&CG+YdKpeBm7!Ht$hkS6xf1dY5h-GegWB3Zkp$=IDTI<@Ydp!Nprv)o>x6 zRjS*%?>#-M?C4|+p8`tVaHDZGdXm(*yJ}DMb-1$s)-&|TGZ;i~4KW9lR;BWnI}gO{ zr#fbcf+)1K3*WwaaN)Na+Rc3gc9wzNj(OQQ zSBUBZpI9+1aEoMwCy%xE9hN$z@>~Mi3L$)16ZR*T^R0>l$k)Q|n)#WcY+C*uWi+gM zI)4}CrSjB+5DM^Y5)Zb_zfTqTY*O>@pLNkf#tJ5bg*IbmYUH&+GWAE6caFEmrY=M% zgOMjS-gSrFS`6@N8)z<=H&8Gmr)j9JrGkZ>pm#eK=n)ah6a?FV2fvoNnixN>heX%2 zb+Ii{>PGs7kNsmgNM7ft++aE!d_aS7sM?4Hrm%E+HvA4W*`;meTcOw|zZ+V3XG>>b zIMc!?7Dfzp{M>+dh^US^>vZrOF40*p@6iIU+Gz9l5wI-O;$Z2&03SrQHqs;^Xj9+(>gB7fh5I_J}p?8(?B1b zWwc~3FoZw(SF>n-$T9EXi_8R_Ji(=R#6ahCR_(Fi8udY%H9Q)52A>ixvv%g+vHkU< z3@i4G9P<`pn_R9+%V+yDR|3T<*95A_0EEog6G)mpY53tKC;zyem~mEj=&W#zl--pR zh8al0V@<=)X#Kq%bmW)`om$~&f0;E3vK=`uKqe}(zJg)o#o)`XpE|^t*Pk@W#9|)Z zW?&-+4DvU|gC~yVkYt)5DjWhHttu1o!3BwPt?F=G$8yiIFdViHJj&k3YL1h_1@7xb-seTrVMv?`HYe;w+Gf?pRzsmpOFCWYZw#n2xI zkzd9cBMMnA2|6zluGJWBtBflnaDK{`1qKLNiZTY3q`E|zC8{YidQTwS0$-@Qr`VC5}YJ#ajM8N<=M16PN^5E6)`+MJD z!s{1>WuY)vVm~@1dH_d;q#%(F&f>Pyg7tF4Fy#ET4^T`8wLUl$ludf!AA#wW31d6a5yp zvDL4Bdpip`+WxH*^x`*@fOQ233T%UE0XSI&XN=Z>hit+5A7&4@i1NK|ygW65^~Fam z?gQ=4a6hP0PDd$Temy=m`705U(A-KfBgtu00gq0LPo_?fVuzd zsd&PwS&X`fX8vm~$7U-{Oz|{uAA3>-U~V#ms`^;w@f0FUb#5+?tu8l0(wY3@d?e`< zMlc~iv-YtSA!H9=)@s$CjZ0xu1X08w-sA!lnfW2!EU&}R{a^z$SDO9~5IyKKn3$g+ zdny&n!G104QUrgD(j7d64rb^E!%HDJ{i183dXx`c2j`4;95Ume6G~$7zaw*psaQlK zSfxa;{rOnbM(GJL;cD`rMZWz;TNk?23E+d`Qa4W@ch{{A1jCSFysYiaVkn7`F%F`#gw*RHmVegbqlm%1;Eiu4kC^7Qn z@fzxs;XKZK)mapt{3i??mhIv_K+N?`HQoZuhFG)Yo9_?@Gc|ceU7YWH`hFwn}=O%I*KRDscrrm6H{~T8yq42LRE!Y3Dw}af; zp9p%a*)YixNHauj4-uVu-2q3s$cNVEkc+?R)Y-(OZ~t;KF%QjjUqWKsdC?KH833>oWNP8X<6ky=2iRRZUT3ZyNw_&;{_#0c{; z>7KxDn)XiqFm(gAvqWHR-7p$BoJp6Ek}LqMM$kmZ1XSH7%a(Xqh(T49a?6?SdIxy? zeP>B<`tQ3I;VNiOYe8(PQ*@A*m2crx&ia}mC)R~EHo|(i-nxyI>?M*BW`7+LcfTa? zJVCPv?ld&p(o?QEEiqycQ~G!$;`_;(B2K9@n-%;pzB0OUXB2>{F{!<3lPfk(URZvP ztk$-7FB`Czg#j71S$lJbNb#TkGBkT+!>R^ukYU%jgl6|BzyEn9MTg1&BCL(KV^a%51Hy7H<5{0$yEF#+9FgH92xU+EYMfSt0Xnbz&uQ^jJj+yebxZjBQ0?CZ=}r*J%8 z2dBnPaNlv`+)ilV!uV3LGtj6k`#}srW6A>`0dLiVt5{xs7VKLBI5*vyA8TTGrk5XI ztaX~=+uV;+a)cd9=V447&TEJrjHPGurK_1o9+^F2Q|^$?V#{vbSah*p3kC6DIxo+t zrs%4_Kp4&jz|mJ{BCT?fIT>ecXMjEziMM})1?XP|Mhg{`VS(g;)gVb=qCj5-)BPhwd*LR%BXWVdl@H302@8aH!uVc!@zdB2jDk{o2pC|eH{@|dP5A!|RXw|u#8f$H4$-=nYD{u(mgSXW6&903`Y z4(Qh`2vIZ++zqKSvbOtvTLms`#zUB$Evmc8!AL%8e4qw^&#?jCYr_kJUlZZQ1gn}U z-B_Y53aj@FZ{}EqN)rZ$oyF???v;2UE}xw{S~q{MMAO!DTdP}2o2JOrdH$nz2&~{8 z0g*7ad;$>2v6P(}fViYn947g8kzw*bjW2q~2(S$Q%?$l+s^b$hxFucxZyxuu45|MWf%U;pL5zjU2307qkw@&YfW@86D=zRaU4A5$4--j~cvSK+S`Kg7>Gt2T($Q!#R9+npa8eRu)Di*L_qGx`*ic`fS8?N_%VpW>o8AJ?}hIB zbv{{m+l6cQ`a1v2?axPP``3f;Qyj4cRCfuLN^gX2r5E9WCliJAHLOeUlYv=mwVJn_ zG!Q14S+rBuLQMIwJ5I|o1w0{DJp(QjzWa?v09=h>YnmWdFg`dx=iCjs`-9ZNBmuOk zPH}R!N9lRjNkK+mKv;b_S~J&x@%K@nyK5LuuS{LRP4%`-d{wdUeUU{eA|PGFCUT}Z z{=RY7m;y+;WQZro1ue+V@xcKxz}V=)vt@~R_vTtg&oM9tQ;P3?NUm9_E77QPzT$uR z%~ZWB$a5!^CQ5K{l@or>vef>x5Q{~^ihMslgJ2ncMm~>cF$cR3kiitmJNC?P$!8ep z6Wf`5ZLcAmpmodPB5wrL4D5c1W|+Z6!N+X3kk5^P%7CwB$DW!Xb*RsU=6CNMjkj{R zDI#^6abREWH8lJD@7W|R^yLenTn9=ULz!(v)YG5gz`eQEt;j>{RnQCaviixYGi{6VfU3Jk2-zo3_@o@J>7#l( z#OF)P(p_l0(I(5%)FKKSA$nYqp>5v+Si@gDDjw;!EOYdurUb7^&0Bu=3YDYETj)MFt2FJQf=1s$Dr)gbAa^vhGW^J5r28>H$8bVpi(@}QW|=IaH&|4S%E-&H(QusaR zthL%^=UZp2&wV{Q_rsknWV|PV&)%DY(`1Tp|30RtiVEFs2P%*TH^MAAq89>qfKTT^4pZ;0&T#xF8?iZlT1@ z1!&1+nJl8ngz+x~q(p)lmu1ON0L*rb{3ONdvbg=F`p|926zF-}mG)E(XTsU>j}P_0 z1bORWJ>+OQ*FfDWFaau4slIOsr>)pSZj~zvPde#ZqOWp|wB^@Nxb>?gm3@A2SQmq% zxBQ>;xGA`2x3q!Xi3e`(5I$haZZ7bmdeU}fuFGuvLk~~*OG0sc>vGd)FG3Qu+fJM$ zw09!0gfsc0$J=fLx94^CFr@DbUxaSUG+eoZLy z*qp3iD7r%YcBzxFK*+b|z&M2?C^Y>+?lM*cNG%@EtDs4BL_B!i;*pzgqIbN-$AR?K z{knIB6OoE=?JBaYf_ycEWge7!P#$}dnjeUmkPf|_6lfjyKJz3=K+WUp&6VwekCpZf zoA@024o;{V`4n1p7nma4BWVC&g}!B{PMCBKXa5$8+?p#CF>CRZJu@#_fW_r*?_MuZ zFHM}j_9*~fW~3hY1Po=lL`BgtJ)YnXogO+5RbhPU|xmf!D4`^cHe8G@&uDiY1c4S5Qb%wa_9gpszckP zkC7EnlkqgVDnCs_oIK@^(nSf6m?C*`w*EM|v8|U+l^XuPi3K|2XLi&MLTgIK&JxT^ z76}`R!p;O5yYB^$Ku@XKowAn8N?1$kE(9Z`DP2uDaR$yH11DFdAf-y?)CU z=>J?3aR0OiUiQ7|vln6#=RceHd2;GjF9aS`x2*VoF%_x^WVCW0+Au|7PD?j03%sBk!^aI_7z*6Tb~C4#NVpDLN&H-`@oxUfeq4U3SnaXrZhVt zy#yONfPThG&=OE(*Qo0XIdSVIo#A3JtE^xB55|k}j2`;I@kRO7!8uY73sQIrPh@X4 z>v}Xw)^&e~WMv=_=DL1sG%%`9qHk+S5|T#UP~#niJN>NsR-K*Q=?1FOlpT)7I@jt= z0dOzYBv8h^sLm$8W|KLQ`Vt-J;Txs58-44R)fMtMAx9^VE42Hv3CbFf@IR@b+aJ+q zSk^Q{tMpyT0;E9SvVH;SnYUm^O_TvfM@575euDml7EK+&4$0#C-UjwS-+Y{XT1~ zb!JtRX-3kOzqNqOPonq2edi5k@r;TYWwH#Sh-Mv)dnt7cw>-)u;XNI>W%3(Q^?+?< zITuL*-6bJ)5$ra7j3xQ*dwPZnx2Dg%3=2guDq)I`Vij4QzyDz%YW~qdIl?=)Yu2~& zyLb7LT=2&9UvMdw$8A1)hZ~P3T+rACk)}As34zH@L~_e79`<6zN$(RM?dR6N(Cr-# zg-dS+^6`vi=~nw$$+4g^LU)VRfZ>QQd{t|iGB+hm zo=J}ZtvJw`OPbgYfB>$t_Y%FzwS%lu@q_>uekKVK1MxH5FKg*wwja~?a@S*Si+12s z^=Vx!`BXjcpt@zS(nqr;c{Eu4F^bBj;O2ph2>LKpiroYglA3R-6pG_u3IWyLrja=% za5$2{O&36@zWUJo01vL%s?MS<{%_b5HMapesSq8lo%s13xcuIup}tgv38^E~TrgaY zIS?AlmAOxJqkT1qW_=zV%Xm3BiQ_q%Aw;PYFWe-NZs*-&n;Ybh~709tW?G1SJV z6&I@*x@t%n-fAZ0A2_^eER&^p3a_tZM)sC}C!H0&zx z_WGMvjVAX&2Gk5x*C!Kt4)NH#AJNZs#;0?4`f~*ve#A!Fcry{L*gJdz$E$Vk2v-6Z zK1$e0|EbltL=PN=sEE4=l>xtzsqg_CS8;&mwshS|glkEjeZ5CoB-d&KT4U~#!9*yD z9G;7Rf>QFQM~a+^#wQ0zyomOVLBn6lp~wwG={US0uC2GQoZ_$I2K`CG86@<7)g+J| zLISZEeMMwQiC5lT`wO=wflq(I#xf<%%?ZTi6z-uxf{o-0@+garVAD9iuZwYI_{@!n@3GN14dcaKN0Q1i5@n*q0XlN>P+k2S3B25zRXVdQ*Ps)~qejTPFooo$ z@gc=ifueWH;sPWmU={$O!%(WvK*YNLZYq1yfjvQrLEPBQfGBe?`K6;po6}-R7}T9Q zSG$h4?`>#>)NK5@@?0XhRZ?t~dYDn;l!+RCUPgr6hlz|1&@vNbP4|?O^41#%8VlOW zvDI!HD+n7E@oxC;qu3S%ZtJ#|-*xvEIE!EdQkzpAZ>C*{EJ4KSfU2G-6wGsHJ@(rv z=UGy9?(Q)%w5ru^aQwqjsfsP<*!Z=Fo|Nl(1MVIx$26GpQA_=N&L+@+RUxuiuab93 zNnsnX!>DNa=ePR&$96+Rwa|;FAIE!>P{yng{T@LR6gw_Z-fG1JV=4b6#_|P!E--S7 zsW~TrtCb;5ANn&JYVaY^;mlK^g z_c5&jJ_dKBHrspoj_)iR*hUk`X?uf~?f9t(uw>6*L3-W@iZ;!7M!EjWW1wj1`9Wy? zS+q0a{niFIwn5a1NQc_DC6G=sv7|~8KL|#xELB>Ga!G6!A0W#gd|AIj+zoGyH~&DvufSZE6+aQnd-pjosjlVAH<9Hv~fby1~9f z=njk04563_JbEaZt_}10l8A9!UXiGH!!)ukYY{A-rRCqeJcA}$&Xp%qC#!S`g|sCa z|8>!?H%pVH&q_v{e@yeH9>>720A-R2+R%&d=mhS5gm* zSSrU?#J=oL--5BF5r4_9${TX)GN(cCdD;Igngd>Pd;vVN7;5moktxtY>foK#xY9D^ zfHi`;7^#SNjSv8kz{#|5YL+EvyGqCTJ}%*Gtx|P9wwSr$3nexGWevrO+N^EM%fR@P zHZFgCk-sdRk{jTCiY(_K6ua39X8-@&u_Y|RB*_FN{zr02cVh>_Zh6$Rr-1N`#FXE< z=BS3q6=wPIh|=HbcvOhhJVW2;WI8-EPKnW^ zCqO@_r7Dkm1&q|12nc&rSfZY1B~_##3rKT?3lZM1P1^rgBKDfEd2;UP*Dk6G#Sv#y$1uT%THqC|S3IX0S+!h@E_n}jWLI?jnX!PzR?*Ch! z0D(Y$zm#+gXuK2$u{e@jHO|KQFlxdMS(U0`C{$+EFZ|j+O)O{c@hr#$d)vPI@1;eY znEl! zZ#34Brk%fG6Cs0FvS&Nfkgd44QRO9eTeXF@Yt;zw4R6wolP=#+V~@L`^F`EaIHuR) zs?oZjVKHs*}txMD8+nds}k*>xcb9-GZgt9-DoI!m$oq} zA<&eLuIykGlGU61g@iG$g&+)f;jkoaCB@!Qo^_jHVFl^V&^xtiIy2oz0Tec|D=~Ms zjzUHi^0iN~R#8FXX6-8rXNweJ$bofW0jT}G&x!_?N(1wr2h_+cI zE#43%4asV9Z0A3kiwY3DH@OxU3_7O1T|Dp-;w$p_l|~1qTefGXc)vN=65p^El+>ZKkcrp&vS~*T$fZV+BPf}f zsQcNS?d~y6QkTm|KVf>0am9sqG5?!M?Ncfk&ow=w`y zC(5x5*f09SY0*Q0qXwm-8}Pe|hHFBRz{O~*hv)F^OWFq{8w+N{@v;dGOkoigO)|ZE zRN8-BuG;Cvvs{-tc6jl+-)!AXap?m19q+Zk+aDcaU;%YXSU|IU)8>e@Kj79$ptmt~ z3a=-uD3Y8f@|+YAf<@{QRk4V|dr?&=$uPyVNEY!OWwzqLn(`qY!t{1C9xEKSD)!U< za70OOF8O}*31W0;)!(JD0==qV=V4e=RvA$Leufehhm_mui8dXPhWJkQ#8lC|g=rM! zk2=+!b)4bcfTaJda(A@_wv9_FxpTFWFRn7}d(2?dt~aUD%%LBtkH@n*&Q_3W2bb5` z&RTd$CXcF=Mm~Cx+hnR}`Mm%t=d5R=A$DTG)DTkv!CU~ zEl=@{4dA&mk{xKEpW)%$;K8`kA>hpb5sCG-2hp;#S0%4g@X&3`?o$dl(PBlfFKMRZ z&gmU4A@mYnmZg0-hSeW%safeUWV zE>=s{#hNjo#%AAf2Fcdnp`)WNi$oT|ScMhm>+9D-rahD0M`ny3%4&Cc+(I^J;p0Wc zUH?8*wH;X@n8ZTT6A>=t*K6pfDR;M|*`ygc3Q;^NP}Hr!07kSYk-WO0z*v;V@?>1j*;(?pn$4tQhSw z`nftf+?Yse+hr7u$EHn)*pU;-Tyuvk%{j6jUt@~i!$ptMc4)NfJ3nZ~SVH1yk3_nz z^~&UKD_jL4_=ut8^J(ufn9i{Z#q4gZ<53MRCn66ty_~Onle}nQNV&(Q#`EUfSQ&ecl!7_J3x<+NVdQ&Z6L|c3Rzb?DHYC@hN>sz)4(Y;Qc-_(bTE64Fm5F-3W(** zh9kcU)nwRP0ovM;Do1Q-;XEN46vd^8k0glAg)%2Op+M@#0M;OYYTsn0IAo+xH{+lr zRW@$1@@!;&1bJbj8M76wBkoKa%*)IXkDHt#3R~Fv^7z0F}^pWmR7`tOD()6{UesxBYUT zU@LlxBNY>+u1rAC=b~tc7i*C_^=44dvH+@)zz})hGD_`Vv?Ay@b zFin?=%u)RrHFP4hKCY>W?Sq^wD149Rl7T*-14R~b`8yIvQ^A~}6%JnBI>nUTmYdTp z(H$#?J?1BagR?AJT0^5s*Xl_y-RN8-QbSoZz{lg6HI7JR1B9!+Lct&=puJFfa{=ek1zov? zn+;=buQN>VIpiYt-l+P_@XMX`486h!kycVxW*$uBSpAnexYw^;s$9|V91G&9JGerV ztyM~{M+`p+PPSEB4Z%)_IO^BGl=DjY9yyKT&0~0)J3}qb*)d0-g2Zr?=}ytt3DdEc zMDE7P+HyW2Oxa0Ugp75VNe0p$?KHN;(_QQ}t}pcBwi>>lZE_lM<=eL3Tvt0FDXik1 zkt&xf5`hLbtdE!&&!hMU4GwL-WSHY_n5?R^6qlOp#r9#O=l4yo6x)7506M| zMq%^f+&Be5NvbB1GMXBC1w`!I*mkQ!i*g3kg!Xkp{df z-Kvy{7Kc;=^dU^x|Nr=ZhPcVuq)DO`B59;%giR#q3^c;Z_llKc@84xg7t!to-Esri zS;Cf+^qFb7(Dt&1q`8eA*mdQ| z+5Fl!iufd?6y}hjF1go`C}`ArzUOd{OLA|PZDIJph`YW2ZO@qW{~gq)tW4@+n?!q; zKYu|0U#H(PmN6P)gDZC&Anv8+6fmp5RW?>|6~LRjqDg86rj}yCFkx7o{dRi1@m`#h z^uK7F#bA3cF0zQ?(l>U@=n@g+dbt+)5@@RWE!?Gk~e1 z6o^O`Wylz1g}%Hw39r}Yx3b6ArtOEdGZ-|md9aWG7Xg2tDtX6Y9;B+K+HaOA@#AHW zEZj?oX>ITS5G-wTFai~ZaGHa3=-y8|>qh5!ag&EyFbwWDkmP3-6KGqp2W=btkSp2N znYDRZzcXatc3|N7{>LG@#8*nt>8$@7aTjZvy!) z#49340!MEhOMZddc08MWW+{v`NgWUZHd#hh>=i-5wu0rZK&XsCyIVjv73bzBBl}<6 zMHXr@e>Dt2)lj*1Md7Keno+8FHq2Uc4t*wNg;%G2t7c;ldIpC$!z)J8)UNNYSRfnB z;mY{nF3Q{+V81Q(E6OV1UjgGPZ~2=&zBsQlebmnd~Lc^fW_6m&JnWI z(dP;m!xE(zl$1qW#=oxkycJ~l4QaJq@gW*d{oB9525!>DMj1&0Ce>XtyaIFhTnKW zB7MM5LIpn{x!@LrY*s|(pt|N+IbIz#oYKeLuWfer$>Qm{=M}e<>azN41Hvqae>c-J zJQg`wGXao1SJ0wIV~L$qB2zOCcJxgZ-14^OW*TFtSxX^n<-7tQCGAX9aUljF1&Ve9 zkj}1#i!`tp-~s14Z-wHjdy*Bb9>M^gFt@&)*pY9dQ#kJlr;xCS8Tv{Vcd>nAgu;f@ z@?4`9V^k{O`xxPCLxecs>UWMhOB+^Im2~nw^bWk9Z*^ZxZ0%)1-_b`tl{Dg_UO(tD zPSZX9)xl1??f^un(HPBcW$%px@0r{l$mw-GlG+(F`B{)k?uyo-RiQ0Q09rKemvPeO zcGzt8UI6YP8dS}(48cQ*NP=UvgQo6mfZLN zKeMntl@#W}l#s!Lg3E=Zfq58gbpKT8`rNO|9p*1M zWTnf}13k~I@o97jNLBl%mLkP zLvBTT?cl$GwTFt9G-RFi_N3kwU7ptR})@XE2cs>U1y^0PzfYZY;`3 z!iAJ+uFUBfQXcH^tJ+U~*l*dEsYf10t*m%hKnUYW*mfF=xac| z>2itXWlvC7Errbz$OtfhW!baK^hZ8JT)GejV^TgjaO2g({D7YOZv0qn7I07uI&+BC zTJFYSYyE#>GM*gnB}SPkq7yO0%VOSO2{WmCpIn@$_4#yC%oX)RKdG}Ul;pp+T~?(D zD{f>RC(y!fv5<8uk8Hv%56+jW+8B|cDJPgkO6s7OG<7TIVGnt3T1walK0wgK`g8jX@q)@No)zK_tas7>IjM!0XBlg8mg( z;F~-P=e#pgea+fXA!3p`Y)bZ(sK6zAswPjRAsQ6TrU=bNh}GTO44IT(1h5gtt*~1~ zX7>~8^L}WU5j?)$cEh>;Q*SBLZ8+mZtBk6_{FE5rZZS6YJ6JMOCn;D{siuLNZ<2p~ z+b0g_f_e>ra@}oDJaAoi|3_nywWG130OHt zd?R%La-3{*1-?OZ{SOyh;1clp$n<;2$E*Tz-%NUPs2j`UyfIcnjtSYBzSj$aoS_kF zVrC(Ou1z|>`tzJFsn=#zMlT^6RPDNw!+^0+LU008Xi^a%2si|3e4sm`?!x_sqJ^oR zvNLr%1j9puc-NXUNDwIqjufv*gz7g+6*9OS+^0k?(l?-f4>wp}5c0whWeLT)G7!WX zhg@y_oQJ#C0G0^P$wv)SBw`!}4xe#)#O^zWsD}ZIY;tsmp7d(bbTlosRbJ@NQ%y9_ ze0a8r>%M+{!DTrVrfw=plA^tBdqg6!G7?9_3>kzjl0kJgMKaY@f+sV-MJ;2}!@li?s9ePXSX>`#1v}T59duDDzli@}o%9*cyxX59K zJ3teXkSV|xcH+hu05lRaKPd1Xhdm!CXmoz|fZXE{p7XEZ1o$<7D+dgVUVOlFfBq6W8LkP1v8tlL`y?9aY6al+y8W+W3hq!QN;8uhbO-uIc!8`vZU zc(5-l#ueBAfH*=Q6(}jCf{~rY@%`rW569A`;A1en^N79SAkqS^^-*>G_2-S7zk794 zcjNx(^AQ9Iniv2ZFss)VIHe`+ZL2tl~uXs`J@=(D}N~PvbLCyH3=d-4wM)BocdPAg5Z*fFo zIVC{a`&N$gG81VQi&@SBaVonmH#* z&C{*rNo*v|>U-QvsRr+EQd3ZitW~kqb^KT=j-3IhRm6;PWCDTM1u~#WU?K<*LI(f= z2y07}?&Fid)4e|XiI&!|H-*ew!q*#V^;qZ;Ap_P*S9u+&n^jsuLe2Dx?nYow2FXtY zzabh=zjgos0+Q27VZhK#gcy)zL^9c6trZX?zyjP3>WfZ)-ehwwO3n)$$o-vPL5o@Y zEDzRs1KY#81x{J5H7$+C#>TsqaligGf19L>lScDRXYYbTa?1m9f#Wj3+Elt;Awdl{ zZgg6_gr=C`Iv^6mHUb)?S~OyuUXydSW@+IT2wKMQD~d0j+~fskp68LN@Bw#|d+I(t znAdx?=UmcVWzKgz$agmy;T*7Z|Fk`5VmIE?IFyZEW~K(aC+_2>X&LOd7f?T+HO*!3 z$4*f|N^R50jAh5+TvVv^ZkWG6;&$J0l_czXV+c3fX1K(Ls0mmClu1DYH4wre5HXc- zt5{09T2ZCQ6$hKPT_=3BfB*xnHKm0g7wBPHHKf8DAmD(EP{h&droCRiTSd$r^G1+r znx;gqw<84;5JPekKmsyU3TzIrf`~)~kprpHy2fUt78OFV36LPv1)T0yxQzz%QD}4_ z8kM@?$c+R|4Yr-F&)~ABaThGL)t!>QC@xXXtzUS46~)@b4~9U~1-+$&*GEoeQ9U6V zRYj$VMM1ETY&1ZTY-xxrtkghNl@K@qLm{uoG9_wPE$Q^fCJP7edLth$8vK7hdt9di zuGb=cy-B4^;FZsL?%Ro;%kV%%xAvHEwzVGZmV3l=Hi0*B>?oZU z@y81AN6p&R^k;3^ZTg17BP{n!(MhfnJnLtp1 zASV)Gh=?Ho0YC&HZCFhxe2P4OHKX*p0053)AAp)kO9#+yE$iYA5}shI26BZVYp-+S zXFyK8$pgH(MAktl$Qlbm-j(xk056@U#)qAu&Ai@cXBFXEsu6eI+;uMA2zQyA7Nfz< zky#W3C&xx*u^w(f)JQOCK42iBxGpjO0`v3L0|@&0^H_xMi~I$ z^15_3LUmyZRTjzW=UaCCb!TCVxGmvwnn8bF@AzsJO>*~n`@kaY5@sej>QRQNXc*3> zj+&-Odldl9h9!{+=YGDM-6f!=!s?bzH&O)DjNxxqWt{=3^F*#tovk^-ovL2`7$NHP z<=2nK@;_YT%WK7sNSNBmA%_Y-QJuwZrR!OWw)t)T9wbYFo99Kr#c{ALdr!qPpu;rP z0H9St08k_-iG)Kz07&2v3pVC~60GAVfB{?&Y5ri}Y1Kj))=?$Cy3orM1(x|; zJs%t?CkZcM@9ER5PYi9XbItdQa#0Bp7cCQc6a>=pFcc$uR2>Nt4u%vKf%fc3Uxi5h zXF`I5s(dc0zdl45-KQ!#m=q%m$6n|XZwXXZ-BD#g!gGF6i8z1&1wqJyB{Bodc=shg zAsST`o)Kb!GaM*EDpCYWH*~2qR$g2$cGbe=VgLkS03ndc@d#BFH&MpHAo<0l%Gt~L$qI|ca62MIH>7zb5HAZri8*lAi@F` zAj!MY7?KS0;HmV0Lu*pGgXt;>qgn_7uNt(;K8`q0^qEks`t_deHBB!Vuolb z+QzdP6p8|bZ;Z)X$RN!EB&y`uYxMWK7^jn>ykR>jp8!^Zkl95gGRHX>#U97wAnI$Q z1pF8x`!*kWm}C>VrFq6`k0t(dongKBfk3YUC`h2OCzH5u>b-v01!vqdO^n+ z%At#^*_2jV+AvAW4CE|8+LJ1LLqQfIP+nx^JT^;=Q=UC|@TcUA$l}5Q+94WL<(?MA zMG8OxutHUc4HkvSH3Hkh`aJ`#+QdS_5>qoO-X=e*$r_G}c9`xx8pvW?4sg z%NWxDSSH5=5&N4T@74G@A5Fr*n#Cxv?mM8&Qm{%76w~7bC0`q5jso z5C8o?e$?B_Ww8lW94DeXZI~ZNpSjYOx>aVFJ&T_Owo4qyDE8A?laC5p)Cfgm{$iv) zZZ=8-bZ)66iwZ9}M{eaOi9QN}Jfuq*h+<#@tN0k|7qpvd1iNe=aw?yg$O-M~Urng_S+SPMF zyH+YyKmhC{2{dGfuy+sKAbS4seDN08=F~uCkjFt~)=Zf5(U>4N zbRJIHHt3Y|{?mlKW>T-og~CZ?naYH=2S9re7V+z%63}8(HrO}X3{#z7d!?wlx1A{} z>iZVA12xk`UoDQGAxh{pJ&s*h6 z20$a{g2xpG0E`*g!nrX#o(74NFR+*`THwCP1b%>dbb2U|m6bYeb5l^LBZMoM9qlT1 zTt*MFvkrszA|(X8Z?E%1ss-$sir9^QvC~vcJH2*@v#>g$)$h^CFSglLT_YGam4C_7 z3+VYruBz%`!5kUrNb9dwuQc7O1mQF5H6^=hyN_@k=;fG1=jxV-D*+imsJQ|a?cM9? z)#J^bx1mA2iVqMJktmBc-kv1NAs8lIZvyl~4Rvktf7kJ(s?Z8M3ECkLIXsGABy`=tt-3$2Ocmw@Ew+hD|7$=00Idx000ksL7D;) zu~z>84I4jag=T;=ZVCi0L35SN%@#}r;@kpqVqHM*)6=3(xv7pi(qUjvIJaV(_x^_j zom&xwJ?F^HBhqe*aOST$v&=%RInrWcXi9Y7m>JW?Tvfsrey$Q|I@ zR8!o5a=#S0@6gdzrDvO9&xrvIAJ(_tv07cFDa4hB-%eZuTr?~hVsMW9F}zlL^}Nmr zhSpo|bgKQR{9(R2nW3UzaA)YntO)YOvbTo`5;Vy++->Rg3|%&dKQOc0%W<;i6u~hw zMwCZ@k^L1eCb{wLMyVs)&l_4bHe~B6E$YsrjMQ zs6lO3R9#`popi1yKAAAQ31a;0NKb0|2x_Irk9b^^1fF4Q+qj{VcF-&=3b*Q|#6ydG z|8m!-l4W)JUvSBdfj_x#@u@#(peaf8BuU}>GdL@bs$w1A19n0Ji3YKYwG8T5}7p+>#ST@^_>y7^Qy=st!lUXrFu zUwm2}zX8mf*b<0=fj`&ZGhwB$Wx|sAf6a_qDaOQch{@y*vY6#%Lat^njHg{Jb%)+% zjLjx-qEVE-u%oIINgWnM(iDB%sy!ZEj=RCN6!j*eA_i^TfnR)U7$=zym%Q9r`df&S zrM*&>ea4FEu>z~UF!S$BI+7-RGq_ckGar_Qz+_;FNXzNC1N?ux>sxC3?lVJ=8pN*OkxBQ(+8IJw1uYLa<`z> z;}0sLzwz~);L2OJGk#o+hG5Z+o@iFtv1}45g1keu&xR1d0;}5U9#vCB z@l~&5k5z|ys|e3HdaF*%5r9**Xu}*>GzZ5bEZg}1y&i3F)SEpUYJ9c(78lw$txMkM zR?dW1#V1{pOg{8Zju@4FE0mOppATgjYM~{TiO!cXm)dz#=;}vJSA?>Zy_wvz1DT+d zdcaX~ZiG!7W;Rh;HKHsZO>rHEQsm9>B8I18Csk4pf6KMILe)D#2>T7j5H?_)$clDD zW@>`ccZ&8qigKwp2R@>|^~MW^pr{ww!DF#g>YU`(4B|Hb<}LJO8q!GO3XcL3R8BqU z2F`3E##$BdJ)}vk+vBVt3WRbSpWF;m1c^8|F1d1=e2aHXmbfEQO?V<1b*k#R&kbM} zCcF!)Cf0Y?W6rWN?m{@YGj9hxy=J#}b@-*0{o$zB&*ntPZIrWJ*pmr+o#is?mvY_W zXmIl#6`5bMET>^YWafhmz?P^uLE%Q-A<}Tj2D_Inb05R|WgZjvb4L-Vl1nMKcJLx8 z#|T{QwH8|`SZ(d~og5BRAu=wj{J%cxu465gy>Lp zIBpW4v%jBF&i9uV!i3_a3F0NpD{;ozlvAx{^}R%B1wP#Kr3B@@UOQtPG=fTk>g=$W z;4B-?vBJza)H(zE}ApLCo^~)DbgWE}?slx4jeV+0Iqn zn))u?;3IY$!U6iZOK!<8E!uH=8PRg_))`&knBzW)W&xg2L6o38YP0LgwhDQRUdrm@Ype+Y!oXW(xEoia6WO0|Z&MgeF1QF<=81H9o+-DIbd>G#LsGoME} zf!$g`t{#OTzF#L}`PJsEI}(|t9$|+hPF~yz z-6?*UVHwJSaEQpM%!86#5{I0O2rtu4R~=!o&&Xtyke%9AehroD@Y4y1DA;vGOrKh$ z7FN$NI5ppRW>3ro;@M7m>$LQWeZ@Oqcr#4(7YV^u^KsHjaiDxaPsgTIl+` zr>5i8#VC*~?O}Ad3uo@xl)jeExOYU}ChH+>UC(j#zD0Wto?$L85Cn_}( zfju6CPF(3;8n-34N<`_>mh#E;k=t??$mOQ%wJK9UOLcRh`MG7rnuemufGRDIulK|t z^MX@5hpPBu(r{}8iATkkMKM(Q9xgT7ikLU(I_ip{#3OR|csRZrK{GqrL)H_=qd@5c$MN!^37?_YqH%-L~wUJd;oR_0<}_;<`bFCgm)Q`7-7@B|X;nO1>GOPu=tO@vz{gUHtf7S#ks6&YN{*L?K))gB6uw#!lpRf?7$yV5}$uf09mqEF5r7`XJS zNgvW~TS&Bh_oB4b++|Jb=S)}#ABqL)zSK-cgop9c#x;vYi{^22#4X=A z{^v6-MKv{IV_apjsPzV1#Ne11fUqGf3E~$a57-NsNC~w-&X*p5h`Ay|^APVO?C>or zk^B%IR*I#EYX+DfByMkVk!!=N>b+1RY9$}a^0C|Fywi$ShVXiBJbxGGM+1WI(KOT( z>&dFKI_<+ui7His4POoBOR+p=3Sco=9{qxr3ag`**!=}nEXD_QNKi-b*eLCo$D`NU z3KdtMn@z**TOLR-76}MBZfohz0yo{V9lD!;B@&pH*}|hdbFige?G{(|rUT1JLbK8g zcDm4P-?EIs^jyzD%_)iyN?kW!p#!#w1}r#i+A6h?g$754KvZ}T-?^9e2^MHU9QB$6 zklzh?K$wCdOBy6dD&Ro9YhLx|ak+Y@9e|~B4dsL4qh+@dS@(}1<0i4fl7K!^* zpgOcf{s!-4ZXh&qKTS*>*r#lfwdhVl#+9t#b;I5#;nWE=q)MH3DFgyx!d~2IGMk3@mV?tw3UE$gP|r~ z$m=7qr<{-!)39m>eFr22!`nY~bOU*0L+-k9Sht77tGTYO#ZxMPC#lX;5H*%}z#idf zRg>QZ&?bu;CM0JlTCS}C1$p~^!;ysfgC3EM@w5wemb^piPq9c_qmQ{$Jf0f5?%g%kbC=#l{baK{ z%-LpA>a6S7ru?Gt=$)tp+%PdENP$ZvWtKiZ191VKQXzJwI7T0rR*8h}(3F-sV~f+a znv*8UhKS`r(J6u#8|$XX6qYm@ALZl9DIT?MBN4aZSfvPQP{t)lY<@<| zfMk5FwO&3UKZmzQSrY$T)v@BfP;hG3S=OA6C2TYKraWdQF)~(HeEWY9{t< zsjD7`q)D5x=b5tqjI(80l)iI$tt2WGAm)LpX>Fj(M3`nIe~1Xay|+F#MP&RQB7v|m zp9ZE`u>eBA000022~Yq40aF2<1O?F%ZwR-)1y=k?V4W1nB8C2dQn`Qs$n!4b&DG4M zUdQxh3(?N|uWyjvR?T;NhU$<7}YO zGpD-qajvRr_@b|S4#7wHK`(u4Hm_GgJl%s)utKx@S87$#8B&~F$|2~+&rtnktY^An zr`%)`mlLcqz9aucHB~3MvWqNxOseHY07sqlEW_HTdOFJRi>oO0`avAoeQT>+(FT zUId$Ac)cVCe{q#1-q!mxJXaudUDT3%WjM>IvCEM4%Zhtb`kvpOaMM)Xv*bMpge)Zs zY<eyB(_F^jPs8-eCqTB?gYC!?uidkU?B1gb>Lk9`r~;-kdj(*OVf0trw6 z00F51o&*We5pM|hs6@Up2x#&&CJEZIsk-y0`YO2rp-K@G@uaRiquKD7WKMU}8Ae-i z&#T##bay-8#?1)KWl}JwSM4%F;JQdn$E?_Av8!fRz~ zjm`D95j2s)+d9j}Z6VFd4}Ja!+#hI9tD5HdrXU~y$vODYZ+*Zppku%jam)uwO^&i* zM#N_N8xdmmI*W`A!Q-+>3y#D*G+i-M?-g(Z!sq#y0t~n(K1`iNTe%A*!c9f;Xw}PT zO~dNCB3UiDf^$Q^s^;^Z09|t`a71ZAZn_n$zJ~i%<%IAvvErxB3)R35R`(1cgptFZ z)F6WcwKVBOELPuVQ5RcnGpmQv@JkSi z{w&$U_!5+&j4|ZUCv(Bjc>d1_1biBK*e2;3k#4i21r_dC=ZTn`kvOQUBTYzd1`us& zDE$BNynwp-Q;Y9@2Y|5jrY~xvmGN)`-andOyEM}gepG6v$#6IJL40t_rcwQ83zQE@ z5!w&R+3SsR48hR_Y1%uQK_aDviRy$P+tkwnTHHt+vmMA6ife`u+y(L8d1Fv=TFU@p zgpF!%F%{<;Jv0006BFaQ7=3PG9#Axsr-01XXV{)IO^@@?D*V7uaiA^x2A zon+?ersRYQ>a>g`AA%ok4TU}pKq3db%T-lS8PIaNVvWydC)2sl=my+R zs>Vjagf)$R1*@DiCpfdNB#RN~LKh!0cYP;$2B<=UWOWukEvdN+QV9p8^ zbf=bT1NAGy`~?i>;BMF|!Nt0D)pz@Ye|pBy22IcJ#mm4<*s@Vgr4|MU@LK%_@T3E+ zRUQ*7>r3Bl?D-?y))JWvLK_0mhB>Q5`W}l`{n~2>H$kAh(jJa?)Q9<3Wyi>X`cdkm+SbT-9@q9o_t7LEr9`vh^>4az-p7@I|on|y9&Oqg6 z5kyjC(@j)=3_2^lW14fjWP6Diz_k4slyn*SUy!CNCz>QEIGU1XS4&tJaFQc@7M z-juazJ^QEkQKCEe%y)nyGj$b4tIB24f@}U6;=e~g>v9_|qdnOZbQV=HU9CKGvAH#) zE0^qhu+5q@w8W%m9g}${1O)xy@l9c#M5Nrw<{-GVpE#tdT?u_pUJGXl5olsHhr?eD zxl~^(94U?%-rhZ*Z$7SSjqIa>}ifTBPU(r}-hN@Yfa?byoDN z9X8n}lN(xbbVAOW!cQhL$;0ej^wBDJDSxU09%+A z2@M5I$|8ErSLA+$ac>CWD!es7Fep$lG^+$dP7mFo?0_-&o}_mZCGb0 zP|%;{8>sg}S4|zdDRemOzFs{W^g`Sd3Id)$5AXuvL!0BbQ1wj4n`)U&RgUK5J-$v- z+w`n_VsSqS*8HSQx{v`yJ1zKd4B6R!8WPEdxuzq|h)N4(QD1X>Fc>mBAl}@c9#t%s z9vnqu6hWt}3O3uBwC%eOWTI64N8v(M=V<#UJdJc73j>IJK5`uY^c8J=f*$`?eXaxJ z+~Bjn$&&w3_|L{Qw2o?(EKtd6c?{$5_Bs{=SB~w-1@{B1&$v=XI3MUj(t=$o&b~-p zbDrgGMa$4u_zUErWZl}lN8^pD;><4bR_+b30F|~&C!vQLd_2@4FjS2a_8}*fEf`ZH zaoDBGwmh2&qfhYjfOj2x^_~|8=D}HxG7qqR%SuCijx@%`aQXKB*!;wh{7t4+M`B=D zHD7jy3u>$osssJMCg^qr5araDweSaf z&z{7h@;y?r6NDR~5D9)uKMwsarrLZ4#w#2J)1X3v4J5otG3BsjuG{Ae$6_ug$B^?c zp)eTF;X@O=dpTPWHR33>ZMP#Et7yU)`;-IyZxY*+p7cnG!>$_mFJRg2qN{0PY{3*o^}*GAIN}{X!8)O&P;$MzRc`NdY(a#NwGGgGXo-P7KI*3uKH^ zc#(+ZfSS`MQnAVa=I*&q)hq%Eg&4=+Sn{viJ0N1J=mzDC+=luGG)Z+LH&?X@b~O`o z(mM6Z2l>Ko|0jBMD1mpNcwHPlbVzu_DIhahIT14{x!?o+75#iej}l zX7AJk;dQ(c=K8jS&JA`zo*$`wmeU~r>EBV8aEJJ)+S>pz5*hOk=az3R*OEctDbEpF zOXDPPo^2jtsY_|d;wXPh1WRf5>n%4FIpZMC*Vnk6eoJSG${|2^8U4@t(=vx;2Itdi zuz~oHAj+A1hJGY_P{Xc9h>N??{HHOn?LKL{GlnTyC`_i_rD*BY=q_a7;SNwM*T;Xd z4EpmE07d38XOsMc2gp9s(OUE0!TOiOS?n3&cccSeWxwJ_IE)0bM%}GmCjrrOVVSCF zC$jqL_1R>LYh`a4H!-K7Uuw(RpoOJ3X*v=@30cVGi&kFb#77G*Z_~{&c)JVB&lcyT zEmI0z696u?HxL?1Yb%%%a_gIZ%Y}vZK2)jpoSmQSN2ZUUlfdb~lMVK8?==QS9*Q7~ z$ObV>u)=AFN!9JAB}ImmuD|*Nk6RBAehs`h?cF~tmSVKUH3z|^CIdsoV2PeUQth9K z2%>X$h5g)LuBgAbYP4Yfi*`Fa#OJVMv)las|BQXD6~Lb}jJ(;?_+v2X#N^k;w&zZx zTTMvw*13I=f#%DE6N_z~XKX!hjKmSm$4ST`XJ!4`3!i70?oK*&Y4p!P)F;TLR8_`p zKQDGg4HNp}rz7W`zm047I}_AUt_=@oFu6wLJo~zuilu0vVDx}Uh%TD0WOHsvu^JPs@|c7T9(faIkK6Crzhd5y$CgJq9Y=zeYqJtst<^otmR2KOsd z=AfBfmZ4PYok)}YvTita(OyvCOMA7tV~))z%UN>4_qCDc?dvzuD=;D%BFs|=@L5gC zvX37roY3S&0-9Gj+hBp9a(X7gNGK>kk5{J8Kx1;A(qz(5e6<2wy>hicdx@XHXKrPb zRXnQ-6ZR6WQjf=fbebz9N%7Eb*8F6bk{IaTdqKmKG8Lx47;@Rrezv6O_y{|$Ofh>7 z?4t-cFL!vJ^wCNeZ*nD;xiDm_b2vM5QS>coavstY507<`&J6E$y zWPP6Lo#N!`gV;IZda$qIiwXiKZL%%D2U@A|I|J6?d*T;oKhE(xS?5oyx*6Q15UBTr z`_<%UH;UbJQS?TjOGb-$kcSudD+Bpuzg= zDV{}=pX+$!v|l?C`P{T_nq>ot4rU*e=}Kl}7M;p2rres^!#&H-3m%Fi65mV4otUW_ zHa}|1<3>++09{O%6bN-W-NyIhKs$3cJEWHjN0Ttl37{2KiQ7fVInhQwMiG2gP?acw zTjglIv>>2-Lg-a`Df!={<)2ppwQq{$MMkcT97ka>m>O-1G^|}5ffbe>54O2Qro5{m ztHt>%f@gV|(ruNI6B3`J3@ck)lGaFfI+H@ZWq}*Y>@MVMalWUJU#Q030QRS*P?OuXs~T-O|<148df( zLZ5!7#*A7?TkyouxujBTVhNKEBy11c1gd&iK$(wRQw*GcY|faxm|Z#`^JdD3w~&VF z{R{n^;tWU{OnlqRcsG3!Q;1ArOeB<;{&SK|r&c&M`~h3{daU1GS{9SQns?Oz2uV?{ z11|fOu=Trp097&&9Z2*L~apP+5NU>h>>f99t;#B!!!4{fti@Z;2;xH za?}To=VMA_*F6`^}+)W+9KrlSWAC2Lo5q?;z-_&01 z5jgA=sXh$={v5V;XP7sL16RgKx-{ov(F!fah5>o$use%3t>SwsW^h;Ff}GF zMi}xCc$u?9XL%2alnd@3z5`3B$0C%gmXaN%ln_YF}p^bZ2XF?K~8W$CNC_ zw(jdO3LauzR7rWtE)2D zFtIhI!h0(2q#>dhC)8uX+iWk2V|#)o4=7hnnvc9s<)EEQv1?91OU$=6iCZKlvP-|9N3-IQ_1^^&WjU!uoV7z_IvnF_n=}oFU0+tH7*-S> zX7pZvZ*Nh!Rp)cLy^BT!Fb&HhL`yl5Y`2xstRI;+cm&gIBsZy@_WMTZ<6Fc^>CF#H zR(zD(Fo(?9RtUhxr)Id14bH|*U)Z8V5sqL?VmYwPqm|I-A=mT(fa+D!O)l>oFc%`z z5E9?z)7a)BiS4Vx1uo@cXE9DCFjf^{LeT7Sgs@PwUXlcvl%ck^o2dePk^4$tR_pYh zn|E_JuLK3DgT^3dRxX=q+B8>J7`jqA=3|HoQ5&8Si}C+^)sId}s|@0qM;DwI7$XiN zB<}DA{OPl~5FvUy49>&EL;iY^$m#^~_xS-0F zx^o@PR>w2c>Dy?>s4Rcel7-S8L}~ z$;mj=P;rAH06SZb9HoQ0BY#D_;L>a)&{5>5c}O*u~Eoe z?(YMrAhHKe#*3IBUaIs0BHFkYv8#)(tRQ}4r{)!ef<(Z^(953yT&~J#b+5XfEN%#l zzggc_MIqX1K@ncZ!pElvp^Ppnn-9As8zBPSim_K`zV}0#NHJ1cvL2qG%w(HijgkyClr3^v@%;ALtiJc5;w_@Ya-qSj`WWWbpJ zzKP7wmd?FsYIlxXdq+P=?+-=H4-rhZO<=Ja7|+OmZM6 z2cRstfVC|=sHbJ0VDbgO#KPdb;Y|oBUORT9Z=asH0PKS{N&SW7kS$*=;}k;%IdoZ2 zP%xv%K?At`OH5!R14ca*vOTo+)@PaIv}QDX!iMR_v{J5m0Esl%bA3i;FTB$7XHRvP zOx)cuq+9;&apZn{BRyz10$_@H49D8lSwkB(uZ+1CnVm=PsZM~Vk;GqB<58m3)9emX zjA4Ln!r2hk%Cp6tjbjAFKKG&_08hhhGS${OlIY-dP2(1na67OIO$|zX+U}eVs;^5G zZl(?*QU@830z|Qn5Y0Ab{>l;5w{>?02^utAICF1(lPx~F5=|z+q0lcLl8kkM-^dfF?}-J?tk!@mDPWg zDr0#?Ry^s=I-051+8Cli?jt%C*CKlwed)W->o$TzF;u8lOS}G6rn+E)4ODNjnjM%a z&!1ERzdQgNVKVq@hQ}q;q((HMh|Bq}BADDfE}AvZ545}m8r<3iY{sjKqvsys(*)zA zb(-4@OvVNg6o!-vNRRND)|?vOwLCqQ?D;W=;ylcSZqz43?4gs08~{we$o^mU@NFlz zCLG1wHOT@bbX~blL@-{e5&tSS=IA}_utZuR5p9?qcmQY8_{OHa2*pHsa z`i*c#9qFQfnbI-B)PE5T)F}De&Ki^p-C!TR$?M}AF86hZowiI#N!O^*lpgj2@P0#` zscUq>D(P{k!Qb0y&N~V!GqD0aEIf<5TFkP_wQ?qyt5%be~ojTn;wT6PKuAoWDx3l)9N^??yE7%z5zEr1{0+v$-!{N+t|LsU`0+1Y6+l`204N?YE|{%nud^sA5zW^-c9WA>}afI zliDn&A@=s*4W`M$s+FKD5CO)!cUYXa4r1lND-xQ#%Eo1(X06>40gH@Ju~j|NPhS3y z;J>kgKCCR~=Z@!Wi_j{&-3FAp z+2-KEyG%`VdTZxc+?jxoQF>NcX|xil#=k7DYYJe?Zb-r1gUxV;(>OQeCt8GH0P?lbjc@_-Y{;B#FhXrh}60o^wl%9(*N%D ztglL};kiA=kN>s;>xg>qz0|AK$YvXrZoQ99OSkW=#`n$!PL34o z3Iy}DaWrn5`(RJ+od_m3q8alXagmt4AGkf%4tQb8f^o9*xseH^LHzN^ChV%b3E;sx%g~Ou25;ukB_+xVlB?al{ZT5Y}8Km0`8XI00wz7Tv4PQ2BbLo-!HXH{Wmd_mI8GUCbU zQovYZ3Srjja_(@&c^tQv^#KZas#KYJ|HO9r-Wnyt(z6hI1w@1^JGd2~`U6cOKgfn88joY4jH4+ zBQh!J7-Phdw%>L6bNSDD=-lcn=^Yw8_~i>oY$uZL$XZJDI^4#NwaNe(K`1*1b%FBT zKvaxs_TpDVR&}PKXlltw%Ncz!%NYo;Ja4leQqJ)9GbK|47Q_Jy000022~Yq40gC~i z1{J16TLzmqNTyb6L@c9Z=}dL($!FVnH*T{B^zsO0jx0&mF%&=_QdV_UR(vcjSN>m8 zz76(Xg;o#`y(YLz_3a5bIbVP4d)_ky%Y(c@yb`voQ*>zNXN`?@9<#08T^wgFpyg7x zSaH%(3y^~9k{4A)OaCSDru;>Ff%Vyv%_NxD9n4TVe^u=4m1ey}Ok^sS%8UogCB_)+R>y@H1f4TZxu9O(gy~3Fer~no-_3S))iI^s2zW7C1}Ek-b{l3Vy#Hm} zY}jRnXW|s&Z$l=)T~heA>Ix)rC=PQNN4Y*0fH)F3W|+y+$C1Ml5`oA8T*%Z!;HxLJ z^R@X1Lz}s>M6f*d7!yVJ{Uu&raxOV0trw600P(no(37FL|X=%H%O*d zY$6@=b~;mkIm#RI)HCm+dcpz9L8R`&+Myd@olTsD#}BMaOfg3SLf74by}LH40`5w* zZI5rUh0oqgDUK5m*HV2!#&smfTw%Q9Rmgc_Um7A+IOT3arbWtnzI7z~9xa0VL3^b#y?z)48%Dzj!Xt&aI z>!dck>Q~-@kLF}3zx!-u`C9BY&1_B(=dEmSMx@Lnzyh95GPDKE1Hm!OV|%qJ4QS@< zs;7?2DRi#s&8uA}#Diwpqr=K;KIl}R?(8;BT80l44*~Y1bwpj3Ej$#u5ua+}8(=Rq zHt&&i)RqfaUL2#jpc?FJ!~N4o=UB=E2C}^A(s8;_%Mek9+Q{Ce!xAf?JD^NgvBBuN z*ts4e3h^nI?(2R40S~9I`MZ9bdm?J{PRn!6?dU}R?McZZv-B~5_2V=(Vn;%9GC}1I zvKSb~A2^54rd|Oj29wdZ%R*0x*wnZnj^EI2ya**N=rH|r6|$WMrGZR^AMgbu|7h>5 zF|?|Ufp8RzX~sHlIUqsTk|`4Ww*yUct!^*_wCp~z^a^9%i9{i%{;_4;*8ztFZWuKw zpk|hHn>kgFG4?GHAv?ks{)2v$W{18grzT}Rc7!$1aZmB$1Wd-`pspLR_?ed*hFPkY zcfE+>iE5Q9uybgkQiS&qd2u_fF>R|852Fhf$7Z{*oZIZK{qf=PML&QxB;lPG;3z z1Lm?zmPc1?*l@?^;6|CBJnh$<6 z9i~KE2=~MfXjK6fjSY*h>!L(8jSodLZGAB>{J+Frzjna~n~XYgGR_6$!}r2m2)}iUX9^ z*5~wb>se?Au-%72&jID^=OUaMz9t84{#F(2jEQWts7Xs%O2@KphS$-5D#j;sk}p}o zkjm}W*c|%tkxy@#$mf&@2E1>2npr!aN>$FIjE*EjUbL4h(?~B_dnO)v-n)6WQN?YG z^Ke(daJFnhmT;2&7rb0m+TVj8CvVC|xb&(xAvL#IF|%%YW*3VJOhtyb7}=!M@fuXi z#S^7o07bc2LuShQJ3olZG9(-|0EfvL;Zv0>H=h(xQ+@J96s+zvwqWDyTkvpdsD($Y zr8C!E{HDArBr3Ig{hffH@u&g5ph6SEwwvmTW>q7592%A-k20rGZ!MS{S zAg1lxT;4BZj9Gg{t)Ya4H~pkdqC&aqID=9PU&RFxtD`xMDdG3yo9xBd$CghzqgSY;}J@Ck=j=6N`-!W=&?RyN}6M>_0%ViAks`C-m8?-Zi zj38`X4QteD=#rLFq_?8I89-ezMzE%;3Mxqj^zmzsCjeFONH{ABp|LhfWWVT(TK-pi zUupS(d}g1EuAb}1nF<&-iX;ERZ`u*5a87v5K-74SsU zGe223BA#F!4VC7qvsI92j5-C4+cMY>+D#h0{y$iwPASOH&esW^`Z*=Yj-cAr!gwZs zX*md;)e>JR00Idx001D!L7E0JYz12Y4Gb!dqqNSf>1K&ce#4Om09Mo&t=2&ITN&i# z#sSHWXt_+#;i?3uG8HW|ufga_#ze3#0IF$y*dccoUC0HJjKY zGcVsJi#IDT3rkP9TqsY&R<3rBs(_%t_vZAPDO^9)Ah9~?2$&d22EWrGA}FtadL@G3 zVDu4DL6rkmn4gd?sU-E}XEp7O=a|yl(Kc&A?St}h7PYc8Mr8e9v;81E@dC&?i#pep zJ)c@=4!CDn}BmoX?JYvtM05S!?A_509 z!KJ(3vwy8K2c9}Q4=wF`^dz~Mf)0v$Km4MLgLbMw4yyM;%MX3$i)#}$=_iTMcFwul z4%k6qN@P`#ZB|}P@OM73;`hP7AiiPLxG4r;supY)h z82p68(!Z!7lzEGr6x~b)PV_5u-hxZo!$n%hRj{0~g|K}ioelh$^A#rNHw1vwsnB6O>dubF}K7Vt1xgh$LgHAi!MsrWb z?lt_hV;6U$Lxg}`;jV;9#X&Lu`mM;ou%0iqZ4X|5+EDQ#264){k*5VkgR{3dKVd zAALnkt*5-Y&0+lrb41C>a!EYck5fu8+Nd{|f9OV6R2~ch4NDl8A(+ie--v?$H~WDG zEi|}tv^5EB4A^3CD6SmGAyK&9=x&`pVDm~*o6FbA30;|EiCZKkKB4>lwd8Zb z*%iX%wyVnCh00Ur ROhq4$?u^<|Bzn9!=y;J^TRHxn=)FeEQZXmV@G}3*SpGssr zc$e?wX*<7HQ_Z)VrYxe`jW!3loQ#b44%;jzVPc}o2b9+;eBZbxZm*z(oSy_x9zENd z+g>BOsCQD4F>=7Z9`oV#ik0;4g|HnBm#B?gN7ox!nNHn-=+VWht%$+N$IwWIndtuw ze)V`et|#hGtSRLV8(JdRWbUIfx9ix36pc8f}wR4T8o3t~bF*HA*}+=r)3Z$v>q)7aC0B8#*|+e5Bh z5N`!Se%$7h@w)eu4hc1QUH2wF?L;dU6tpy3TO9$C1g?B6&tO^(s2_SbHUFx_RC!kP5{^|^BVF*Qy@McbjsK4(apmArc)R9sg7c%y|aE4%Y&Sv zB;n(J#+N~jur|&E6gZ)c0hI)O3M3jhD49W(QDqkg6OE;Nw?o<9rc{`Y`YBcA=Jy3&B#K{9XFGGKDy&v~CwJ6ZNMbrq z=DJ3dbQ^Olr9LQG^qq_MO(nb$Nxa1I#A*2wAMm>kKtwavY(^y#`52k>e+UD#KMSKf z(ri5~N$)WH;M1PgMukT4t^bm78{nBa$CN}&la166AWERHmA0y3f2DpRBCV+zD=M|< zauG4RmovV(K&{W^zy~&R>X|4-S^tlD*NX+LVbwjo-ipFiaIU3?ae(lnH2pqiuupU~ zh0rHp#pkkCoxPNDW>rZ;{!9dxI2RUomJvLBRT$v2oCD?*6JMBFpLj^_)oVhubl!W~ z&i=b@`}0vYd$2wd^v)EqDA?L`p7ZtWk0UUr*^C>a#Vs?sy0V+um`5Q zLCc01?>^Hwr3=m?8a|o6CsD6%-|g#pA|0l4bdjA>Kqjq(bf`Ff>RFt2&MmQLDMh?r?;S)G8*0Yt8_^uTv_aK2P1y!+o2DGs2OmM#`B61`DW6>-_@5yLi zlNoK0PJbDF^PZCtxNZX7r|HO&6by{qZ8xq#7A~8gitBMK(*!?)SkkgH8KV~3L2@m@ z^P6Ru=age|EUeQp%MbX^5{|B0H+B|W6dY;1A>}1Noc^gqoJ3X~YDOqWX*4ag?D!~f z@d)}GKLQR7O5~?g2Nnz`E^1sAdSQxi{bkYL(HE7eMQDawW1^BX{f7nECj-0T{!Uzt zA3e>Xpz=z8g1{}izykH%lsY^TtPdD9*F52zKEPTDLKcV}LS;H$lQ6l4Q>&yBEJkvk zp3#*NSGgdscf?Xf3RA)WR%5~Wsc+zrm^(^Vg{#nW2>8h;q*!j~H|D24`SccFb)3Yo z{dg@P{OhzbC(~H@O7i$6KTDZ-J`BBUYJ#P2F{uV+ZS8}#5ke1jotr*qhN$9p9FNOW zd(E?5oZ9cQ% z8S3h*>*kG1%t6VR0SEz8s4g&EpE;o7V(Rq8|3YkWAA|5b9r$(MBT@#h^uO>*7J3o% ze8ZI!TeFCj<#bdx`zP_i+!f{3=kUA2HO-YfQe>;`1Zz;UwhdDGJM$^-U&)vS%tW&flm|(dk#z-3lrIxxV~7~7dV1%M;;g{t_4_J52&UzE)ZotrFow^B zTfhSh^e4U7v_Sl2UoX>T6fdN!4~k@}hn(?)l0$-c$oLvMkjYesme(A++inB*<`TfXM z=X{VEyg8$^ii*4lhF8R7VhRTUxHalgq_}ME+c?ea0^1AmAQ9OcQWjJ%dPCj~IRM8k zrtNr;V&e`9Zlt>16ClAbn}lJM zq*Y1dUxn^yOzUfE)rdsE=xxAEK~;eXL%$ycn+oe{h!BL^UhZ$EV37XDvZ@w5L;zBQ+7RDizD`yQ46lw9hh1Q6K|*Uu7Wbume=&hlA;MCB zI}%F#jliEy!%CL znFK<${cPW(zG{$w(*@s+ON{Vtxu++};t$a68ksYzY#T8FDdItE_6^vd@_3{o(%_4H z)r8p32zxCqmIWfTgeg)dA!~ow`cOcH5!NBpp4H~bkx+YlSi}B8O>n+?>U(mM)b`X9 zGfUevC1t8B#?}N0*zu^aKCTVIt?48O_E7Z4DP)=LL?QP9>QapWGJzfd`}?=r_XldJ z7;@;z?CSfbIAJ^&e- z^0?yCs9$vDJODbDPWb9Z4IZWJ?UAWEcC}+yLnRGt`FX}QiC~(KQfv;;N4~*{Q=X6c zW5H!cvR^52ZMtLb>Z|yVK-tqeS|Pl2n+Uf3|Vj6cJMeXm_G$z>8IP z9!)NuAt&cZBArgG3-&NE7e|DkUr_FE`nMKxWV?1TUdPdHPwAU#` z&T?%yJ2Yx5cyoOWfsYtXyyia4+b7WDBI>H-7{~%qOMuke2s*nxIi>{@D?a8oRO}A! z@)c~^cE>|==;$);A|`HQ0-Z!k+Oq4}1x3R21aWbc`(HAWC{}P7()&ZY&E1)xAQw6^)P__&RJkFeeXx-l)SKmO%f3Bw+K;T^~4bG|Uw2fVI=V3Ka z@}-Q7-bDxT;DlJP*VqF$`*>xpf~}3`781xEooG?-vFB^>@?nlDl6LGzgii#5%S7RL zIdC#|x)@NGTT>@axKK!y$G{RO!=!_lOuVe`otIH^y8qH-79-zL)Q+ouwh* zUj=M{KDxLf+CohV%^r=*p-LEXfNoYuug~=71Z8hPL<@a(^mv>9K74jHWDW}YF_7_3 z=#x?<&rAW<1*Z7VnQfjvN*WjIN}xB4L>spXKYd(OhEjrKNVyVZw3*WqRLfPO#WSM} zY`!q)?o+r0OvCzc=K3+B<`o0o1(j8widLbBH9IFl`5V_1UHF_bzx2A}^T-jo$@x(Y zI-@t5{bF_Pq_S-;68fu)N5sn%sqTF&GGTo*HIPLf<%0%h8V{+5%BXRZ1-EVr=O=a$ zymEa|KIB0D40ENu@d`ytay(?jkwk~5?MBQN#Gd=C8rFX^rwQVfrS4ZHBtZ!x2`=+U zvR|l*aFWc8-b;FeT-GQdl?C0-h#WMNi{e2(5Irc#xyXC=YX^-IKz_9AYgKrS%^IwV zSOSALi`Z%5NO9T%G7Nsb6s?y1IK&W||4#h*;_-@G$umkim;U!x>-dS+?p-~dhoe^d zDgPTQWKLFXSfT*K?&Hgl&G7rUCV$L49G^qH8+a%Z`SP`&l819H-k^)XOAXuI-1>6G zTi&;M;t@OpNk-iiNYXWu;V#jys?*Xae4W573C!i?H;zy%cHdAESWWQc0eiOT-4J3g zQ^@XHPi`9G=7Ea)umX1Y#L^=p!%@tcTM8F4Gk}y#H_z!cRNOL|eqytTURVH+a~}H> z1F$sJFp7s^(ON>bKfG6d#1az;0w`fFLZFe9;i6ICa@74i6!Ojb62%n&9jAc_x-|av z<}+RE-)7p5Q&O~pGohe>xoF)Awk=G{(9h9bjZ5!{&(K<656dl0*k`9qJ zWw+uh^EV41=L8CnD>MqzP6owMFYs0v{Lp_&Vd3Crhmu{37q72Ulw zKGs-mM!LX9W7cH5R)@jOk1Wpi(h;{DuWDF9ekyEGBL}zUU)Sp1Iiw*%+ zKUTXkaZmu%F>Mh2rwr5HrT#WW%aym9-h(k4M7`=!p=ayrq^wBr6(4LCuP}6v8ynty z)<_j_p=3?@yeAjN#Eag}0Z#J3F(b2iVCPXQJ47F|4Yv8?In<((frXdizT$hAQ#aP6 zfb>s*x%CNsr?H-~xnXZao24`;{{dY}Sbj+`BuZx2VX;PxM~Ec~NgDf}x<03X8kWW&lS8s}g83d46IJQ?e{vgBGySJM;Eefx<}0^=&g2FvNRk*8)E>KnfT;Y43YP@@aUjNQS~ z3s(f)`s$SWj><j^A;_OXP*R7_E& zAFD)xdXik>tY>hiq@ZhBh6Y698LPoX|&>O62Fg>amN6+@g6tk;bsJ7nHM3Xyplx?2! z?=ds#996~yL=Fh2{6Z`v7ERn0$ef37ZkUGEb@S(^{L=cBe#C*&q7!M8oa|}H#)#eLlf8&wVj=J|3dhEQKn5X=2i!jW+`s;#2d28;gJC9JTvv_)E*s1sPnCvUi$Y= z_fbr`4J6}L7*ckEuTbZy!s8z*Xe@;Q>OwA-^RAfXzGR)FdO@yKgxhl4?DofH7t>MJ zn9a+`E;+9vdq#^~3d6_URnnkO7eeH`tLj8w6KXOWTvSs4VJBfRqk}YFk}#*qx)B`= zTRjSXV_{SLq~3Wt`ai*>aa!O^$~X-Qw=QK2c;}kyvogT1LQs}%stzyYM8j<28* zyz|PL1#vUCEPbJ7<9***1m3)G1H1(sfbvS}>0`hE1vm8rvc(?L2W|n0Xa1hvgT8p7M+CE7Sn+g`^X?~dxgU7VJNagXF}{~0p@16Lt9W$)aN z)+7o_4Y5gfL9w4}m1x_V>RMK?nRlZ!IMHu~IRp*ZTh zr110(^fC$@u!c}e(2>wmnJ^6jJzlg+Qhz0WC9$CTcuW;6Oo{JIKt5>ra(?NrN4^1( z&jjyFTK^`iY9Pk{ZZ+reU}BkO_f2eC4ax!G-s;*Jci4XkkdMWwx#t?REK3@&FFpRNj+W z=P;jnrGQAAfpw#i(t&3`;u}aCcy2z8xpW!goVKbOP#UnK5vC7yho)a_7q+-rF5~M3 zCP1m1=f00Rexl!?fE{To8D4EJTSoXKyl{6nJ=k|?+H;sMY=z8QzBfk1*t7(eYArTw1Y%wV%1+86es8p;IB?%otEp;~F|6iri zW^8h-TY_h;@Ad8KyG4Q}N&wa=<=3wXS?FH8hh4*p$4`N)D{8kL#lTZ9F#1xDUgh)v zOE9Urk}!KPbGhMJi&LYUT^XoXl6-R5I+o9HVY>wAo-QB+EBHTIlULx$yHnbtovC9C zlBPV%m6$P$Q0K5S7`awAA2s7|p%Pz9z80{|A+62Nx$hsRCY>4ytw)8BkBWKIg0me( zt#}&1k;!b913QL{vK+^9z>+zMa%=7Im8Yr-g(Vsm`O}0Sm4QnWLFy5Gv0}lvOKiJi zT}O|-z!WEO{Oi1SYJjOA1}1{#vKmy;rPRF-spe?%h{SuBnQv#jZ+9JrnXs%pP}k&9 z-;Ldq7s^pG1qB+_E#3fq4KR-xZ=F-O8pcr&jZY5%#QJlV5kxyZj}E=J0;9>SAdRT# z@yxo$421#s%%y3~|2qg@DTE#nzxa_%m_9@RDQ40230`I5i~RXsRrV+wsZOR>oeYc+ zDI0Ez8xAas?~2b!sI{bNdAGoP*5Qy*!&U!?iE^5yfL|CG%;&V^lL}Q@HAg4O>?D9Y z2%Qu#>fM3g8^OO<;{Ha~ZT&#awiNck{J=!`q>BIl=j4lkzz~dp1fN=95 zm`uj^NgM8DASv~6H>`I&CFxgF(Vo=lx0oj>E|17qYBzjU|cat|@rCiM81?#U~k z45UUR7#1C9ZT_LW-Mabid;gq0#HMP_Jvkx_=XGi8|3i~YH+l%>M}=*kD>d+02;S81 zYU%|{Q2gFTLLaEzN~fB#i5h{+ zh*531jqQ6m(GvLo5i8V?UY@7Hpo#v$g^TqLSA0;-w2=eVvA>{*Y%N=Flx{3Lk|is6Tnyq*usSwxX* z#_5@%ExdB<87XKs%CczjN5l_esT|)*tPOF16ts;B!kfvAH(&4$2@dtFbH#khMw(n)|1FRW0}mxj5s68rjYzq}Y^yx={9rn=ab6*_qd2e46} z#%jh`9jFURx3kFlT{N=_+l(E)ylAdP>Z;#rzZ_Cvy>3+KroGb1BleL2IbHx_dHI3Jh@%=g+b&ovrB>>+pgGjhT6@k>x z^+d|ouV@Wopw=rB(;Ko_7|ND~WFqAEg;|YFY#IesQ>%!MhGA`*Jht6V%F&c>CabYY%8u9D@Q17BJ(5fWk5;$thtv6 zzZH}lrZZcJpr1r6Rt(X`ZoJvj`#kh2XRIyjVtDJRmiDVDPFqkUYA2eZE+= z1{Xl?C7AyGPHL0`&S?p`SnLCYWZmEY9`(Z{60?3>uwk?P^3)GzWPBqw#g(JB>Qz3( zL-v{Qnxg6mqK6~4qO4ndw0|CRC(l$|B2myZ49$-@QjyDo2hZdnK|2v$k|AQ}J=McK zKGUzC)Sw@2ZYR>YJOR94IUn4mk98MDk)AS%&^`DyL_75$4x7=rxCPau#a~sVQj(1X z+0$xP$DpdDfVpdq3-?yJ{+3fm!l;G>7&Qm{JO6*JJT>j+j;q`-9yf8_pnXLD*apNH zlywt!Kl}H?X@MUh8dVL-ih_W#kYZu0Py?H;6;-KmxU zBTboZ9&+8PSxJYCMj#L@%Q{2d~x$vqdYG zRWxF^V99gDg&ky?;8yT9f6Y8Xi2Y)yq6C_jFUv(xskCj0w*LVo$iD*>_pa4bdsdX$w^mR{@3#q@_d_R*fMfZ2Tk49f~7U^G1@{Q$ar=8dUAghe2eaM1ihy?5NDKM7ftpSrQitUIF}qeQq*I!ut0+ zkhu>5UA_`L4{k>bP@Gv3%CqNPbxa3cNY1y)M>J~pMkyzTAaP7LE~jIt!-+}&@xE9j za>x|a3T=DRk{XMKCl3D)G?T?3Xc6n;l6O-Vzb?_i$*t+YhFGzfY z988>%8rB)Bn$~!DRJQWJuXfpO@_V;``X$#&I3hhLNE1R@83Bmi6~cn9(bBi4PlzD8wtu2b~P z^y5>`ZN{f{y1Bl2y=z5iv0j+N1Lz?dRSljPLSZ1-C?+ZlND);bo4l6=G-QIoqUADq z0GKtw6Ng$^ zWI!Y_uJk84gF{d-&)x?D54sDsbw@buiZ<@>!?3{$u`!O3(eP6p@H<8S~a(=_L+d&czwN`!Y{C@~dN^+f;5a$Vy= z%W22X_Y}Q>>Uj=#dskjnJhIpSDG7gL_f4A+GAmvgP+kNG3j>Z4N=PZI^B(};Tr91%zexE1S3(uEBS3xk{o39<6O(B;|wfqOw|E z^aG0%O;d=}s|uvX^ySCWcoRJ%2y5IAf-j)Bf@5*Jf+JSPfvduA)>;_~1H14KjuG4) zLEY_Jx0Yj!2jJpTgj(6bh1OBmZP=5W5PcyU6#bo?iX#ZX2u!q8Ac!qSg7ffi z-jX5c5aiHN0qeYTXpgIp)?lhT8O=HB85HWRPIj`p^R4^>jWPt6NEMBEcvP)HsaoWW zC$?Y`K^SinjpKg>s!S?&8gPX1=VrgG0q?T+?~bg@}n<*Xbq;Ae|M zp_5O}AC9kb=iP&s^;3EHe$E1-i(rv-di@~r{D3k(p`b}_2V|j^N|l$uxf?-bV|&R9 zFF*oiqe-F@fYO){1<)>Ba0Ah#4;#H*e=?0|#~{fYPr$61WX45!vqbKnjr0Z*Yh--i z&L;d^po>V#yKjp{T|1~&-2>uk-bg9cGgy19j)*Zhfcd1|#ZXj-`y*-~U#T&9?7cuM zA85&qb2bjc_`ty1nfNxL2`Gk5J-+ldVbQahAqn|vT*g%lUu@NG6<;~}Tt6WiRMo8# z!AA*z2PA+j4i-^ho~PAXsI3R^L?E1sg=U@oCazve5-k*m2vuQf1J8jAXLiA}dwZ~6 z2%Rp237(1%)!)z5Fev)b5~tPwL8!aQGv2~$QY5exAG4Z&WMkX5ZQHhO+qP}nwv$cnK5x}`|H9PZoayQA z7KgwXUTkx(3=?yk_(d#J1wdO0#44Pc!Ag52BEOKNNC{@KNB`tZYSM&(l#s-yEld#~ zemQ^&2_W%!`)2)`eha9O7PNf6?8D9I~nBqhB-yFCt2|7OdQUMKMX1J0L2S+iehv}Y(w3}&S^5IB7X80$A zP&*VtO9nBfGo`Cwh~!)C<)zF`MkubPAzmO~fS^MwmAyOW_K-oY(O9X7#la;2;P!uU z?8!w6F(AYccA!pSSF4g&LN%!1Z#UN#G&72zW*(@fN_O?6F&1To{Fty^1cD%v7hZHm zq$%cCw88+>v_aDnlEVs@{Kt~g4MIXU4Qor8Tnp0d1W%VYbt_qHLaEQc@5{!6donrH zrd_q!3hY=zpA6@&5)fK+lh0VcAGH=f+&>v4CbcXO_0*Q<_opZ=rUAl6)-SWFlTVLI4P8;vlgC_TvXFzNUqzy?6Q(h zOTP9Z3i6RcLU!}2ikpdSGG7HQpc`BhJZIjG2ooE!GJ7 zZ>TrIP0clm;%@Mqv>uWhJfG&rOqN}3ute;Vui>L(@v#VOUO9AJoJ*IjKv@}&Lyu3M1Tfg&Pgb13}g-R+UMypV{S@ybjHEXF1mg8Zg zW5NKsXbM{wsw8ZxG$i?U;>4LzWqoMQ7%W)Pw;4yNUH&wTa{L5d@-BA%X?^GT#EXFS zdTI7x5JK2uga3UfWR17whc9$q(k9=Q(s=r5B?l}UoCg{C(yTZ0-leE#MYj)@(M{PV7P(d%q$-Px$(eko!zF%iVG zw`@L{=r1Jc>bAq!DxfPW*I{#Y8ukprctG+GnKuN-#TIeCSh$@|q^L$mQgJLHT)#eq zn;O+&(P^E%O;fO?ubXLGZ&!T1wj1j}652h9hC@;Gl z(K{?1FqU=vxn}!1(bF()_k`7_zv3tQkSF89Cr^%3cCiAP>&Unuz?gccYpD+aeB4qw zsTmYWvVq<6Ms40wdQ0L0LkpJ^hGDUD=Ryql)@S#>phbrpte;yuW6mD$Jo9LQK*%c- zz}W8W^1yeHXtz^?pXZj$jx)`^&EX~)*IqmD-YG~_yR|Y;ruK5wV0`;ED?i1`Egt>+ z{RlyjC}92KI!WAF1=${u)xajcLX}-X6i?9Vi4M zewO4r@{nI~@fCcSB#`C^5hK_ge*Gk{!BSBL0K8M+VlUK}cQ}=arPkz;PLxU8R@G@c z$FjKu&p+iF+a`}a-KcX=%3^1i^*BI#NtYTP(V{a_3Ub)Xb576*q0A5le z(S=Kh`nVz857APvjIUjcK2cz^hxy9)-&;MGSlEyVfShqoA(LCuV&^!5omK&~R*^ck zgl$H@DS3}qWdH60nH2pEX0OY*SsNrQ^`44C)XsEA`vulGg4CZHbJgYIOuF=}%zv)h zhzm>$UDEOnf;B3e4D>s>5LZQ+_TBG)3F8n7Hv~aELC1O>2 zzdRXUz>6!y0hYM4?UySWndXyq7Yo?VyBAaJJ8P$Wjgw}nG!)LO-C|5UHH%1P)M~7+ zxQe~2$!@I;vqM38X^XW^P`hBFI_Om4#~512O>(vG<^;4HIY0Ye5+A&DG1Z3x9x+)X z8`@D17gpwK&1ZQ=NJAr$7aS;d7STA=QNPkob}S0uV*`g`9t9Smk`vG|LEE11uz9AW z_DF97#Y#df@KHPhT)7%H$CPggBJJ=VaD41vzM-<_#;yv|Of{lxtD~aQK*fMGs@Q6L zlMLf(J(x`E95jCoWxo3n%h&jbD{E%@#gBBcR;zEy=wAdh213^GCk{bwP)kdUE_P6+ z%a0ZZ@yN%5V&_BKU)*`p6l91m$5?IR1yPa$Q>9sfb5=Ys75**=x)F6mtE0hiX^ zwrkRpS9~0yVE};NI4cy#KJuIw7rBjinHm&aPRzy7anV6{r8GAixRd_p-toIAqCO?~ znC)DlsdFf7k`hW_rMgqQRJMN-Ra3yRWHRu&dS+?ebltDJ)ArvZzBGJJAR#zvyhOOu zf2sljXn4V~fFD3WjFn^J;7YlCTx?=+4t@vui8J!F2A(=}Fw~HkTymnRm@~%>Kh@}# z^7af4o5?Q%@&L9haxs@_V@Y0-8kGsEi#evmLXKL?41hg%QlKJoJ+{TWxWA}TcJ->s z@#Q1;!(2nFI9Za0y_i(?5V?EW)!IUq9!Nf}Q>H@r16R~LNYn2q^9!q%`dep4H@ty$ zkCpu7VG*Z@Wjkr0zMsY14`f9bvO6}Y`uv-LP&GaOqBKL&dc_a1qW}7~ly*E-JU@3$RWFmDHbW!2)DD9hWS^S0qpKoF z+|Xbqrz}|RKt%*d0LLBCZo>t@#C+DX&KTZL938_e^vJO%)v2aiF4TDK!-s*2X#FIq zw7;2Z73aJ+Gc8T@Szp$tggXCaL9E zQDmCUg7uQrgJHF=mKN=r7DMjXAdls&wkP^cz4g<>NJCCv*5R|?P-^~m%WDq`6DLLZ$i|9CS zfiN5|$K}s$vi_HV&E6yh>9-x~bkw+jvp?r(mKQk*%6!%XIhhl{03ah7*oOG@zX{Wb zC}>0|erY2mnpmwogH-3{0ssV-DHOz9X77n-I$a^+-yf z^b%ofK0*Iby}M(CZ8;go0g{~&XaEGPLCB3RpQE`n&N(Pk7%5411e%~{z=WUx#%h`l z(!if3#abnCZ=+AixB+n$12&jhTU^ou4M5Z@RvA&#KtgEa3Q{%SY`XvL(vFB9MGwDo zHdb?6m2VCdw&OrIM52N$mOJZ`8r22Q%~ajwvz{h@O@QmF)l)ezs|504r}B2u)^yev zbf%7+K7EG%9#xv<5SVc2PXNFIn%Z#uVyepxAlhc;<~^N}yUDgmMDpH*XPnzF2zK>B z#xBB-2JxhbMD#K?1%9J3Mvli>0O^)PDQT$4BFM~rZ9XIdqC@CxPRgCZ4@7Qlxk-Ur@`c<|K zcC5%ymWm1&ADw-476qF+3Q%^Ysp(4yF4*ERz3jt0=sS%8;qq@eBi|5r{Yw^31o_FU zqIw-qVaN&&Lv4boNx{Q^{IKus%8S zP?=$HqZ($D&@jD?+Hv*bZhQa^mGO2;_s{q~7Pdjj_uWsB=1A2u^O!v{&8p&Hlik_c~-*8L&E9FC#QgEiSvLuY=HH`ozv(8 zH1h;$RJ103w%(N);5a1{@~jz? z$XpR0)i+2$U?7|V83OSrIw3IE@#1H1R&+V(qhKA%bYW7a+&8g~_bFo`YK~y6007~{ zc((~A5Y0QuTQwx2K>mP+iH`#&f!u~Yy0OW34E{j;4G`CAMmdjUq%F~SThTlQD9o3J z$4)v0LJrF*w(F3wvJ+9f+@W0~{2#q&-Obl-na3=Ay9Sn)qvB4dj|EoJXbiZ39F);& z4u{~Hs05;HxbX?#{CNKY`I3q=B?3fEt_Ub4nPMoPNOKw>CvBSb72$~J>V8Fkj^?HEl^bz9iAT#}hjGw6fK zge6kmDRL=nwXW*OR`nMxwwYDmZVu0vj|brTK<|Y-10Qd&{z_bXbjj*bC5Jk&Q6{mj zDNB7pBIRUa6=JLG%|iX>*KG zwV+y|0tJ$_;22L~5I*3qwhxAq;`HERmwsO3|JeImI(d#BA_&(vWmjkHMY6Y;0hK|L zN5=gr){3$E73zc!FTEsH@1Ls=X;Ii+hk`L}yO$3nA9>nYSUl?97zzr(QaF7#k`&W9 zxk7(!RVz{Tax+y2)VtE^j59g{J$^jYlUatIM>wNNB?oyizET5vWIW(mvh<&6b>IW8!uG$x>NycmJ5^eFI5kvF7wPnMf5a9O%#}nD zLA={ZJ$cJmMPP9lw9#9Xm_~b9&y83Cj={VPzIYwkZR83n!n?qm_b~jKVKtUMP%f#^ zmttGox?qKQN`!7O$tABku4Gu5I;_pCmRxx+zJ%RhuC2Kh7g=$!%11y+WmXK8cVB zwG0cE=Wx4}g@fl;(z`1sGq4FvG7^p+whS_qb3(S0cDq!_B}XPu#Ye7pqG*mjob72C zI5oz)i$9xNVLJVj=c>efxqPV9bE3|U!gz~u`cTCw`4>58q&qcvqsB}<(71_%o)DRf zwk3FD-%uieTBF5?oD$Z;R9JO>CGJFKRt2yPcj`6}gH+XZsA9_Yw3>HS^n?L!mIdzz z3qYg_U7$*=SQIH7=gyh9fX%6No*fN3v@H@)i<3QF&6~zMq=@cRj_=WuRaj^LLUEV} z;jiR3g5VF(w;!jlw}6X!{!pUdEQMA{B~F?2<-MoDdXUMBH<1+gLcHY-RtT`78tOJt zrkqEqzsaM@;D@~wE&Fhx;eH(05j*?rGt zorX;6J6Xy{?a)aC9RA)D_bFyiGScZTKtK_ra8CH8@r1~(VrP=_L29jJ^ZE-C+d0?n zO!E}11A!nS0V0iXP~?$6_|pHu|A*_F*@2hwOd*t4*LL1eB(L30vqHl!lIA>EQZ(XB zSuxQ1{hQ$rJ*eQyglX}b4e~#ZsRuY6siZ9co0 zj0IedaG~cQZWeY}HXo@i$;o>RS^C5l*DBD0o$&ziwQG7 zVfrV4#%}FvBE%`qzzNIa^!-Q;B-J~M zf&8zRj03JRd5wEyQs$092M9xis*iHIxj>)GXE&H%00BBS0OGU>GkQ+hh#xn9&ZpvMt$@FJPj;D*Fk>KWiQfQ`- ze%44Zw942%Bjx1}V5;NP$VP|F*&DxCi$mO3usHVA2f2rUpkzAv$c_yY++>9RYXCqu z{~7@8{~Ex&GQ*z7Dt4*oqjEnTOnZeLF1XH~6-%8i>)ip1#Z*@FNQo~~1gb+-dI3r^!VEI7a zdhOHewRS}zjzc9}NWSnKc8i6-I^5W=iMjJD14Dx(;=VHX5}q21WReT1HUkoBgNeHR zETov47vyNs50wVmC)byifZOfPY*B%tRk8+pMn}{Y^(@Euv+9MHy9x71(Q-ejT)Qni zUNw-I#D244&t3E?q@D7`&zAZVNG7Kyl5R27;zBvW)Dz+Cw}jHvPP)?36w804*NqwD zX?ToEx1T`Gk&CpehbsjMJ5b|Tk=#)1mp#RLnErMmRmrS#)m0AMhyeqE$nz*FJ)p6< zpGWZS*GS~(u8JApb#?7i9WTMd-b0(LwOejCvG#Mzh4QSh6(q*!^KW!Ey)=W@0q^U1 z(L>7Ri0!$ZV^=$OP$A!7z>B(6a3DD^e!hJkvYo0XO;~G6x;aVT!dMkj^gK)-$W(6F zHDa0z8`d!uqeV@#Ea#8~Ljv)b8D$9P!(O>Xf)fD5fHLD)81)+-q^N0`%2?hUD=AG= zHM?1}0sT1J0Nes5A+LUL3T`)T(xNSJuHPzpzRKg60Y_nW;2%lsPBRabi|y5A-jlaO zZI>y1MBjwp_0sV&9sBAC#mRHv-a1lQzqLe??*7iq#Yv4L)9~{hBUWfac-bWvvNV{} zsc39#X-n8lJD!9q^8FzqQl=+k%uKOY;56N?D#j{Lc|Ru|oivU;fq>rK0jChyPgYsg zr##0A3|!ob3{}41VGE!S@CQ=;U)ukZ&A?m}$b{h6hiU_W#gGr+GDg7Gqb8sxS5Mp@ zlH2m-jr0HoNWHRQtSMh0*Qz)G6o*N(8A!;S)EFI!*$x!pet**2Zy{_ufSI0tAJJj@ zWqx3=QW}^U`U5J(YCBw0F8Twi=Q0tzVPif3yf9muezI!9S&h_6 zjNo=EcN1qd%g)Z(L(#o%$C!U~r{w@LXCI_nBpjmn5B4-{<@A|}k<9WMli2amw)SI_rI%zlh zDeH!M?4t4 zPrB_52!rb1@6T~7H=?=_%*I)k6#o2ky_=udTo|-slfFR->Px>Hq_4^j)GK>LE92|G zNs&|e+ni1|1c+CIi>CTd`lXPIHGdGFC4Ge0;7Qm6K_~Ps(WAt>$n>_=e6kI&H;(Sg z4$#I!3ZZ%NB;SwQdrpPEmdF7|cN&D?Mk>3uK#rFs24>0BF#qHhDLQ032(|v@>f{ph z)g+_t3F>xufSY@H#lIEsJD09y65^XpqE)|em4w%MSXSh_I(={XpEr0OqM1nzZ5pbQ zTX_lMOY|9nrmGli7HYuSlqZ9lSpl|4c9M>Wjp#_HqafW5`s$3TSRc+c3C|FXYJ>NB z=bX!CpdgWW&MKI4!dK6Y}}r74{TH_g^!c0bHZu;oJ+D}fmv z?pWadd9;;BgRlKSDvEm;8E(umvF+w}3Y&-qzdvWqf`61_H-Tu52j;K~oh_k)^!PVfC%q8`0B zCwZ&i1&oD``vC4i2_01K1^bIarYwej|IR*b4%2?kU|qN3R`mE#T2OAT2)~rz9)eoU z7ax(~FYeD_Rm()~sDi7^*8fzc@%$lVuUno>3>B}g3g+T0VkUKnE?Lq>K4*Gr04al_ zU^UnP<%eUT=?w2HJ~>X~*%#$m`SunR&J^noZy?F;=)xQBXhgt8l?r*;taPemSE5kh z>eLubJK@9WJI{hK)+)PPd7b2l$gg_zsj!Ky{m@dRe-EYy2m5&3Nl{G_8>FmT2=gZU zY1~L;e@RDu-J5URM_k`ZPIJ{A6Rf(WLbiw$(qOVH)o>V)yxE9eS`&&ci&(<})oqC{))JuJj=3 z^Z403A@*Xjb_5`s3soJ|le7+U7frvA;An|iJHM0c5N%J-9tW?9pI=q;F zc{WOG*vIdPL-7K^Y((BF# zz$)D0v8l}i+Wb&Mg8(q??L|_0l$sg9Vkw5jxZx8z2l<(X6AT-uhB1aCYNA}VPsiu) zhcGfbIO16w0rQ>b6%UClSpGT-3YjXVL>Ba}d~9iU9VCeRWw2hv9bp|mk3^!bqtNmF zu~;&vmWGo2MIg>MJYK#hO*T>PxrkL8IM8_q^UJo}6HV~~)KRsN_u3^R#Bcp18^dfyTefW;gb?~y)Ys3M^mGDRg zBgzx{tK}z1_aj^}lG!srEcoRnMz&o(&xYc{WnZnf+PXU#&~Tr(J;GwO^0zhGH<|v( zXB-J9!vLj*nfwZwC2IjE`P$aYMoImk8_yFZ_TfYV29HBXoouoZXo@Ing7_K~5dzT5 zK)m%gybt2)-uR9p5yD4Y%9}I6BR7KwrVWsROwawqOgBLyJ!?zLf3$fYS$jssYFG{R zH&B@_v#^4FHU)2~Rf>PpdRK&2&bV1>p=oxla^1W?ZI% z2#_e-pR2!lDc3dhH9z4olgj(^XEEBID7W!ji$4F{Y`vAP}tx-u`MLri--`5`tBM)h&lZ3gq?bb4@G)#cxdyfYs59 zEDxrnhKn^2mL>gnOBshlPNq`K-79i661&Bb7jevCv#lEveVyvQbxsk*oL+`U87E8} zf-*iVJX6XldIbfw&I#wjW%XNO+4s*HmTb2l!;`k@sG6DHfhdMnwzPkR4LT5@;AG`? z>#h)PJ_hWW_@>YM1{K(39!C3Vig-)cloohM>cGz5%|)xnE!3Ne227`NZY3Icf!Xnv z0*IM3HD9@ORZFTs52&$sq6)mSjX!wydk!|1qW3cXU~j?*s$UR<*`81D-RhL0xnRd! zkgZ&K2ab31yq*FS3#>WG38!=C@p(+q9vuz%9hLRX1Jxm*1FXrFd+OtryQj_8I%@(h zARx8je2y4lW-XguPoy0gBRMV9w%j(# zQH@zQtp2jWcsZBLSt=-3n$WM$BDNaA#56;%A<%n{gYG=dDk!(`!M?Nz@%{Lq6wfJN0AFsw~GS5J6_kQC{zAQH*xN9hjjGaNFE*{dH*Rpck*h1puN zn$seJBmZ6DnO<^yut3Bqz0RCYbBi~|wMtbTvPpIV;hP&a0XPWG9 zz1c9P03zEIG*tI#;2s|Wk294-652U*UQyz~eZ$fQ5hmYIa%;S*dp+@P(NUYmOq0_^}iX)S9n+| z0LgxJKQL&YB#%bgi8RQz>I+IByNaBTJit;SRf61)k@BX?=GX#_y(xb+RDiTrdlhiC z6|*;B>VDyhvWZWpFxBDUNFu;6J>B2JA$DiuYtgRbPAN6gUk}~L-!^W0h*oyxLv_AY zSktE4i`#cP$mw^(FTdV2#E*goCIf;fRP7k9%9`><8JmAg4~U*8GQv2D=qI-*M)IJ#ZVcdYKs~)Wn z<$(JNr*UmHbD%wgVvk@q1Mi~!sbJS|ww)#*EX|HQRbhqN;p9kDwyxB;%Cd7@6Nv(^ zMEeijLuZ z${PKo1bk_2#+^*LM2$3)9jUy+Y7i~p3;h$qK@7%B!f9ifVN!?uuA8Q@hPW7{ey>CR z!_Sz)Hlg}wLnpdxPtv2^k~nhjvn&G)2?NUIG_*fhln>a((prG|z^QCb&i#uDdKjZ6 zbQy>?YRI+c29(YS&Ea{(6bUa;sw9vhWM{qUEmOGQt#7-z)lo2mQ8t~b>9?pBcWQ$L znv}SX6E94rt&Zemw=qP8T)j)&O&O3zwp?dZei{`tJ0+GT)0Op|MXua-VSLhlJrUA{6uLos(}vJ=`<6RI7! zQfQtuIb%RDnilmRwL-K}KFBMc-!_N3>e1nQiDCU)wmk^Kb_A}?%}u#QXYcl6lX9#? ziWIaRMn6N7VkXrCs^@fLS_jr*YE8VVO#;5HYfVmAKW726UgFAt!;xI9;v4^%N4SBkvOd9I_f<6?`aEyK9A|(e#1O3{9eQ{h6i4 zExHg=!O{?~A$x7m#Jm4`s|8SL^X_IQeB>E53+uXHlxEonHUYk&$&*}l#%VoO5sXUS z&Y1TJ%0~+$QI_@fXm>36lUpG+{6I$F>b4KMXCFEpe!_#)s@bn8aeV?vmoO?74iUo= zUpLx$lKFrZnytQ%qLmIaR@5FcXJjJU$Lfd33a zMB>0}*gJ8n0MdgtuOR8%1*Z;u;sUs3Y=oHS=vsgY3J@M3lrD-29=B_n^iIm7EmJGu zA)k~vGYi@nTK(*LSFipTiKQv=v}^0H%7&qu4n_fIc85?0{=<-Bt$uG0*Dj5qvX`px z%+j}$&Q@jE{Z}SHv|D5max0)b+c+yJ0Mf=|G}K!$lzcLa4_sz zVsTTuL7{u$OIz`$v**mJzH0xu{J|>U+<9qHPfT$I@EJ|!uYE;CYW}-3oP1m(tAh`D zuBC!}uB4cJGx%O8NbuXXr=wl{w@Z~nKurz*5|N|=6SfBw`;qvD5L2xycqGD9k-8gx zQ*9F|=(2qJ+d-*=Y1Z-$UbI$;IxC`m&4r?|t`hyQfaNtjOq)cv9^@(ud`ww2FKE`F zAOf@Fn#!s08I0~6<=%mD6ulJ?v-_jfr7bZ!j3d|@a*Qtpn1G=083!msp7&iG_4moH zZ;0!Ky8UtA)@ScGEH&SiM+9Y>OOL{@8SFpgO?;^o7<+kEF16ix2@d24V{}O z&wkv)GEkr{oNOB^taJ`QXp`c@u5f}>)E-uh^o?RLkyUWieK{I^@Ci3xw-xf}lN}5{ zb)wT>`YZ&ZkXaczPx{ebUSc;CzF^=E;dm&@$9rYTyuIAwZAz-)=LBH9F25v@Rbf{OtwB{k=@rea(9RbK zYuz}BM+4?iQ#|HN)f4;JT=6LABFZ*Q%&1g+%X4zceq~H*5qh7jw=X`ZI%>6bN`Lr=na0H-URK8O`Kdxa`MOY z?`5vh8iIA#J;}hmvtkhci;l&bh%Kp10TUv_KN68gRm0-p+7BxJ3dj_SW~qN4%IM?* z?ea<45(3=%r`9xh8pg*%3a|J|9FzRRzR~p05fr&;K1@0YYPCVE3T zn1A_SF(;mhqGJFOAIa?6t^k4>#X$jHro4XcwPdrQo}M%bx+Ho>6VW?`KuDwY+oe}v z?}8hFvYEF+*3bZmR3RIsb-ePbq+Q23^l!QO0|DPd>3aCe4k3OJf^dq~uU7Gw_cb@p z@4|i!@n2s)prd~_i$*L7B5s63PN7dRI7N8n7=V|_DYnLW>BWXkbm}Au8(X}MGBe6xv>~lgp0<8?J82BaOj10- z=$xdfbtkF4oToNC^WoPlLa=CwRTFjB`XUliP0OqE=|g`ITDm;5ziw-zod`d7jZ9H} z`p)3_ZqWoqHBX8c8}ShAd4xya-+4$|D^Kj#i;RB!yTlSa8Vp%-6JRsnK;3A%MqpR~ zE6K?OztW9LSXCmGznFX0lpLOo-mFd?86U_Z$vSTS1I5hGnLL_g_FL53eK6xx*Cz6L z?&*z5G@DpryUM;lDP?%%vh9BhY__E``pDN`L(dpSXic2V zbD;$cDNC|PCs6qnZBNb^R%3byt`=tDeCSU)CIefV0g;Jnv4d`(5<-e|8TTGXNb&ku zA3x|E7cs_2;48R4B0)UQie<%a-a>Q_FKH$KSV(j&6?=3fNo;fBs>|WWS6nh{Lk{te;}P(ft=M&ygbRCU}hloO;5OFDLTY#eNR5 zMoC6as_p}}=hVjZoUuO=%eS>N1NUlySEBi5L$4a%igLmAwHOMqUmTs#>)Z5V!MRg> zceN4S;l)`1cRt0xdH!?Xl43vK(R*>|!jad8MY8GIT5h~t!B$_>L{cAW%ycr@S^~x= zv;hKn7<>5oOu)eSdX_0TDf-jp3+DNFm=RfLEJX_3_K z9-pX*-xVoUuV0gD`RK=;HK*-*37BNm)7leT&?0A)(o7KI$KQZrg z)D)SX18qj0tBgeCVy~TR>+eBrXL_iFGDV`qh+p12HvI>!9c0sKQUqb6;oG4T zgiu7qp`E2oBj5qig)h^_$AF;JcScVQIiW8n=>3anda7Ko&KUFx$*B-!9 z=@DEzfjR1ld-2bVh#%HI^Hu#XBsWlBh)$w|^W>Fx!HlQNU@JJl%LD3~LPc5Gf9=p) z9XDvjVSrPS*YG|&rFrPof<1FfdY<22TBu3-1KE&nJtRp=VL>vePek_^3RZN4n*R_7 zkAK{Z$9+~W;1|}-=Vhg4xZP~hfFiNv63=X*V-n2%KCZmN&q$wzjLBNf^#&TuVO(0n zrvdXqZYPYTmV8yYW=e*Eq64)q=|-qg(ki}Ft0FQ4hEF@|G4G=U@jEv z|8UJ-bP=2>oWMN?QNjw^%|S9_Zdu)5s~`KwM?R>aXO>ahZNbO2m}f$f4JdR+5Z1|V zy$4>%OLYESj2`bGjb^~1@58+v+`fhV$GJdEvOG^*c@Bs%@=9~$qu za@A%klqqMKmY0m8TeSi=w`J!io|Acgc0*T_$=6>qhuR<@$9k)x8;}jTD z?AsX`dpNs0J+-7Y!fKMuRp8ATKQ)ECED1Hcb|1yAmFiuH<59eDjS@d?b1IUmVbjv3 zv_o)2bEew6%IXIh21S4;k*$+!`2BmiL?N&;-TJ;h^|{PXtVduxSxMuQw0}NGjX^YN z_p5H|r@4srIUcM{Az*2-kj%mG*2Y4BNty*%W_6w0?(Pn4l(5=#&FW>pJiG&Io`7s7CcKZevBp|m_4{M+bBRSs*)x?xh zVgvya;Y}y{qmQ?xcH-nxk9k$VA!T-Bqckr07Gn zTk5Mz9qVYhfiYPFEEAvhzTm7aRaX`jgOwZ-vnwe$*P6E`71ZX!N@^Otip`S9tf61I z^lh$t+EXCWom;cB!)Jjqf>O>$u4Yw00I3F=3|p$^WyO69fd}|oy40vX8AHd$bC>a$ zx(rqg6STYKu-vP&kps$hv+9+--2K+Z79Ly| zPL}O~Yp9~T=vQyW;wCZdj$y~_h4V{%suVd{{VJzl$Y&1Z$bNXWe#(?gI+a7C(6;oSGid^V`UARXA^3dwuyr9pdD=2CXDi`;0@09=QeX? zFU?UBIml3_Qo*a&(CXv?N%+P<`Bb~$G^{sTvP8{cPLEN*8aid62UAK4a6uky{=`Wd zTvm%zlCn)u>uMLi*II$a4w*9-_qdSPDHq)p;3^K+=1nC!=va?ZpkT3waICJ{BNj zqz&>QWZu=Hx>0fEuIM=lS2CNOkEE zcd8#&CZ1!|Q-G=aJ^XL04zxI^b-IEQ2YN!SzJ|$(@aIjIzM@If?<m%D+qD2Pu zvDNLVYdnsO7+Q$m~$Sv6I|-;hi7EGD1D|n;ZIf{Lj)<)EHCB zCaC+O3OcILT{qdwL}JVug9y3_xVmLcOr|gjC1(wG2Vgox&wXS5^jaH(QrWA_PoRby zCa@U({G@HNqhLKaKGzVtf0ojSQCT+Le=FM>Y6wcL z+l!}k#JhI5C0Z^5qdYVy5&5#Vg+SklbsH#*hD|bS+guZN{$u`_|!gm zq$PIQL$YMOpS0l|-bQjzX+Zz(T3j)p3q&X{oggS)U8~NmNILGjkY(UIa!$3nMM$+E zwnEh?xxKx!mTg_3@Wegz3Z2sCmEcTj)yV(p80{`G+5PB_(@1%>5RclhR8K12z-Ec= za^>7GcK2s0GH}(pc><-Vb{gL17lk;_8g%Y~HU-UZo)5Y)snc??kWT9|eLBs8W)k{} z_i7@nTLU1db?RYNYgrkoWOT5r%gyFI(v7K$VANov02dBIa&P=F=-{%gG&F} z;Y-f_-SJpB69E?`Pi3Mas_Wq+7(yDG&Xsb&dcu7|9-y0#J@5`!tJ<0sD)8&Ao(6nd zlXTLxj9kJswODyN#$tZoPq$De{6`C2V;5YF$;+6?1F&pdP%jw#v6xS;%fy|D~$A z{n^7FfmK$%2lBde1q!7uXXbQ0`@#SU`?M6*_r`fhZ=k6u$9apc}3s`%c{2I2UDaZsZiM9h5w55e_pN&#g9pQ-* z&t!6)>JZGgk>kp}1u~nc!`x&spxv4AConzri>@Esn~khrlL* z+G(4?j0Oh%5`7;xF04}<;N-YG^k1xh|LOkwCV`2kqPEEWErEL4A@jAHru|S>p zyyE4i?B%23XavwI1a4YOF)%WShWWSSPe#~nt^0_*<1gQ+`+9fo_@t zAK2NCJ^T8s8mpg$UZfD#!Z^P6rjOC%=XnGP@HnkKicfz!g8!A)zcU()Ac0IM`Tw2K z!0eV=eYwdGxxkZ1uh9OJBOrl_6&}A))BJ0juTUotZoNq>U(F?t*u~1&k1*blK@(in z1%25k@;$6;MxF%}h18n78y7Q-K<(XK5;6^)!VK{>uPfGI=P2Lh3b|aZAv7`T+28e7 z=#~uJ7Fd46l+~41oVGT!`QWSUc+xTEn*)d!Q#Bp;(9T>E(#_X2DdX@abgNBksXQPG zbL6^i40{ctO;pd*j$*?HSj7GFFAYH2A_u^#hh85I*)w~5K1btp{qK}Q+16l0J`yrX zgOlE#NJwQ>$NEHyBscg`BXulik|!)KEEHnjv#FND1S@i!SF8;>7+veD zpn@#$#*S7VqCNRpJgv%SF$j%p3|mlfnQDjRv^;V^`ddh$XitR_CnnaDjGIKg@^XIl zzw5y;5mg6aeZzHz)@7QlW>1V6!-XydS1XgEb9FH*;kK2ykkE3>+ z-I+`cA^J$4KX5QX1N)F)pH_i6`}5hN8i}t*ZaQ$^Fi=amjgAYBz9bis!B!5oHqw9hkqfB49C3?G9GDma)LTG7!C6D5p0t4%9zsA4LL!qbLcG<``q zAN%(X=_UD2n3gxl(Zu)gxeX}9f)A2f zHP&p%y64QgLYQ~-3r>X!+CCgfD#uU4m~hE$#d%;~c9B?r<7TL((x8ZlZ%sOSRpa@> z%7r$VFesYUrfVZ^I{J?be5xM6O3^v=z#-pSMcgQPS5m#hTg_KOU5bz0VSSVwk|eyr zXY@3zNVF6D$xg7575nC2wbH?~V+ zf_lNTh4UCt7f?9(IBQqkVgPxylml%a^5-W#vvaH_+|>g$FhST0Be|ZR-}4X76qGKG z#J}jHk1At1Um;Oy#>uw{oyu{&Q!StA;FE3I)PAo*|ROAQ_u=w0)cS zXIkcL>m$J(tPTL}O|jkeXGm}Q+&yEjQ7T7*!%%SJJES|I;C-Ixs7oCz&OJCC%GswC zx<^W?%pdeemU*s9=CU3F>kY}n{7_Dm*uHpL8^vx;hjy&%t1ZLAD&OEpOo-O>Xe8az z;j`|TZC(=N{NC7v92}*;)5J2> z-0XbQJ`!1Xozaw|1D;ZV{JWk0HfTT-mmhb-lBW|RheGI7Cn$3=oomTRb9=Z|;0e9T zzJDy6x0;~3&GY)em<4$kkdKp|)*r8l_)`oaL=eJnm@gg6O(F*KxlFQXoMdIOltR*Q5|hK@n^iq3r6kv8?{j`mF^SW`AX_T2s4=Pn;v%Ff zA-10qHN(sMPRLau5jddU)84uLQ23z$qJNlfc^D|boB=C>gejCVnIW4;5Ra-;I>sO} zX{(R4TiOLnxW)3c>}0IUO5oN34f-c}IG=eHT@&j)jg6FClpRWldnALKs2!yVCUm$ z;3=kz&YcqcmH~8*Yt(Y(+PQ6J;xtoOYbC0SFnC7xiHtE~LxGrT`}$rBUgMz(TZ)O3 zFYRS1f*tG)fM?6U81e=w>(%+y5pP7_Tz9A3!|O4i6Gz6 z=sMK3MHtl03<1sA?AT7#hlN9iI>;df1L~0dB@Oo7SvjX;uNck+IrWTO1&yaE%Bs;) zQ7P|keBU8etxBSvR`A827zD3zog5!db7_6kD>{~FZ45w|Y!u)>5oed9lOOlLMOGct z2&YFUAF;l?J$Sk7Q(TSG+ee;7H`PQ9Q+}}~aV7#&7WpYXZ7~6Lf=mVu!0(P>^m1!X z+k40#5=t<3KQYb05$C9+DntTOG!zgHTSE!Qgcou^E_ z6aeZAi}{`lnq+e|XCgDJG_}(V965E035|`AoLcwbm2ZowDf&5jIf+_yCW01$8b3_% z;m;?+39yj?(M-T7QKUaMvpAVz>C=R_{+6Nw*b3HcU?+J&;1{~&^Z{o!%=H4}F69jD zc}5mQD8Rds|7wS@?5y?O3Fnzr`Ws^p(h+p;ZRCABF2Iy~K}$vZGZPd=U6W}n9mxFh zh+DKY2%x8V;unHzzjxCO&lYe9u8<)$2YJNuot?1k^*kGOn1!{ru+l$*D2b&unMD^mVWY)o;A~&KB7yJ#+ms~tj~#* zm9SvaYnd5=+z*k6(%Or+JHyP;sj6H2c_j#vwNBMAPi&sxGLfHWgcAsVqH5V{@7Rc7tY6K3-Ku9a?gpG9> z*Y;+=Ok49}LbHA9Y|1qHH>|?zE^b#~{aWEor7#cO#%n%J5hAm2-)3z`hm8!$I;q>M zm0xFsV9d4z9k7?_Pf1zF-xgL3;B~Kim!yB^Lz&~lqA=fUnoH0iKLu{ZiaFF^)} z0Vb`RFqV1ZH|RlQ;eh9bQ8=o}>`bYyhLwfz{~P&6&hp*@#A_6j0Km25R)6=(5ce}3 zv71!n2nC8qCl}&aolRSX%Z$+m-1w0W$3YdK=d+2Rq&B90;=^*S?)ic)+JaV_EUX4| z-XwG8I11Y7j_sopg}1#)ZGKfioGu+ex5@4JJYXX!aT-j{1${^@MzC|$gEt!VA}CdO z5h^s~=EX8NJ%}t&XTn|~Kn-|d8(kU4zDYd&C9NsckDN9@Y$S;NIonM5*C7HM!NaKr zW>#cP3A0Cp7804n2#Ww8;dVWqA}-O&vWEHk|O`__2JyEI)hLljk|zu1MueD zpr))0+QLu!Wgy8#^ocsTA7-R~=yRKY&tb3UO+8v1?cQr;QB}Yq%^IdO;sy>#D0JR%B(35Giv@e$3{^9h@OmzO_xhofB%*SM+e@IGd6LC>X}7CT#6@c`gRu!S3;pKs z3Nt?;F2P`xbqGIfN~@pFbVFI)ZNaRf1}6Djm*d;8d+Sv^)c=MiG!yDup0G6f7LL$X znh=z^UA?JDLIK=Q#+}W@Uc$X;A^1`@e2oNfiz+p4G+Tj#=7i-Eyo1``$@s3_YU1 z-y|vRd4cC?RMto(em^mW6s49A+^*zQ9dk6A%`WMj8V;W2{Fu=^Megmr^V6Ckd-_plTL!5We2PNQhyguc+c zJ)#^D@sa>i-uPi=C=L}?XmNAlX_M}BDMsEnq?--sS0ekRD_lGUVBvo08=O^{nyy#= zLS&CXNZgO!5qW7junvv==FKTtignUH?~dr^B0f#_7*5#x>Jmdi&J`MN+aP5GA9%*S z&mn+X;FCrFuX>;VJE?X%>HjRw?+n0;yzTT?=%I_{asmLIFlB)ro4wS$&v(YWiDH|6 zh0fVw%5OYR8tu&2@0D`-r=!9>qe#&r(6PSa`ZFnn0jp+0I~$3g!EtzKX1*+flZh)2 zk~cQJvY|G zZW1@`cO_srxGqVqq2OtKM-F3lP53hjF}Puxy`lYDm6orC= z&YKiZq4jz$LH>>oN8)uFJ911dCX$3^WLee=9Yt+Ogg?m{idl;lTfz;5noST<;q_K% z1KX?|8pIh%VeW-Yp|27hcO6kEOOwoqS|`8ABzgkyt#fAr63&Lar$uV+k)8J_a{vfI zUSp2pBCgH0EcM5zA##zwvb6;C{H0Maq=8lQ*E>dJ!o{3OQL(##wC)z{p@^IM{|cxSRbF*knOOktKO!?R>Hjj@xSk5)f6pC48F{I zx7+1XGx>@;rclZL(us1#;p*BZI7Kq77zWE``$>{_!^1SRfKje)BUq^1IH}iM1jxJ= zr6L=odBywI$tdAjtH=zM?2Tq;Lf_Zh9xpGi1dRB0IR|Wq-jf!OEexNr0~HMKMV@FZ zRiLpS)LXyZT%?`j#$st%ZN^KJl9K0by>@r5@U!?~u%i0@rM0&INcn$ncP%wnPr5rs z?%7IJhN`tUvHvrzc%>S22LJz3+_i~#Yw9vH7skRdAW6D;i2}RKIchX~V3!Ytz}fY> z-b>>=o^i`uPNPk@hNf}#c}3_bf@Xf8X?Qc_CgCs|!%B_e?g6J%=ke++@|qM~2u%9P z+Y^%VL21T~KpzEkyhACtV#Po&BT>L$tJHWE7d3v)rm|`9G$EP+R(-)XtG$GYp)s+3 zy>tXQC|W#;l_1`LuD9i~RVJ8p7OOjCrY(YAz{rdERWjnQ4@L5G)o8X*NE2O0h^t#Q zpLD0^btF&akS_ZHLwO0$)0awtuw`NkXa#0TURjVx*c1?*+jLUzOYT`_nm#y+$i`Zs zLM;k)z*ejZ)6A|{MDMUXo+8QlCpz}huyJ|Gza^s0^ah!oNd~|6YBecHg&bMZ6b}{Z zCVm4kY`1|L9zoHLAz?rbLvZbG9T4?Fm(mW~yJ+_IIXu|ht_P`Fq~se-j=9|; z>G{N@0jM&{1MDafF3PLGWF}u_pZ8a_xuPBG7O|DkxMdui0qD$_BK}qK$iI#w;%P;% z|Jd8By_i{F%QZ>XZXXjlQ#EeUCOB@wil(eZ`uwzBj!>PCGVg$5&#cL3lLKK0g$7Ke zwKMGLisEF;H(ZUP_MPH@>vb286H%*BN<1iXtEd1^zg^4N;Hv%<-N2b^)dhoVj>kbx zn0))jI{JnU)0yxKL1*qMCNTx7^!UxhW7GK&OAp)x$$w5c*y?QQsly7{4K2Fe034sI zI{dJhmxoDMU!1QmGgfxukR;;@aL+mJfO8SfcYC4S-a>t3)cx^8(-sG@R^4?EPBCX8 zrJA0&={+hJAQ|~ZXdB6PTjW|pDp*Ixh_zShi1@6i07eaQ4Drh&fXk6Nz7qYdG?AYM+xtqQdnc>xDdfUvwB^1>D(<*+}Q_`ayz zgDrgeVgyumuLKT;4`g3&{;^{zG_zCKH67quc}UZTe>f>%dV!`kA#j^JsJ zYf{0wHJ*5EG&0zsmtxzx`XB9=NJ}v)qLhqT5$VeSY`_2j00Ie60007r0iFy+vJn>l z2)C%O8EC`kA(1XQdj=gG!)`hQr{sCChv3_=NtQU>zi0Ju{uBi^M5~Wo$t)>Sy%edMVhx8wAr` z#&++Ubh&3V-#DwnkCs3hdHV`SRh_o!yvddQ#wn!e#q0L#_@jf+yO4jWHI}kdY{dhV}x5tO1YHFm7e_mksFwls+H8x4tg5CQq6} zx%;iQuBBA$%IS(vhcumwB%5`*>N9zRIc%Khz^*xIiAqVPWV|w{6t|pP%x|u`^4xSh zGcZHkC-CYQ%GX!BZqGtV{}Oi&Z)}%ApTE%Tf=#7^UgSxj60&HHjXilm6<}@sRAe*q zf)th6_7C-o+COitRq7+H6YO=_yv@DyCZ@=I-WcSwuouzET&rrtcIorr=0BFTgE8rp zJTEOU8K@P}HEAPOMGbk{Ss&uMa6`98DP*?R=tfls0XaMqs40#pbh z(6c$~S!1mO000022~Yq40?q-R3`w#P7XJvhs6h>Lj|+mNUgQm-Aqc^` z!5t|{c$8o(%*;XwG?!YdARSCLyt{?#^QHm%OzvW;1$MI=V19{-nY*B&h(VPaP}%y%Vdl7v_-0Y6Jv@;yIq1PLoq^U8_@coHn!uDY8(}nzClLRa z5NfDm2oj%HO;0i&25Al4Z_AqP`}~oJV4+(!v2PEx7Zlk#yIdVwUIuNG=*C@eiKiLd z#ek6+Ka06ROj)QTQ0x}SusG0_wkQUwvFG({kV>Jff`e*Dshvumq6pwq?EtI9 zg}^BOUYoEU$IuVNEXVHI^0-RVJ{+j0wbqPTBkv-)Ma#(2U2==avp3O~f)(d*WZ+mc zUM%5c9X;hPp_1K)4bPE_$IUAMmdYF4=d?7Updkuje~bEOaGWnM>Y(M7OS#kNefu0t z>eYgl&DlAgb#~qzMZK48P6v3J=y=vd*u_{ry-!FEMMlCW8&T4o_|0(E>Yv9=hDo$X z;;+894s#UUMFkJ{vlxBy=-%_ z1_`BfWO-p;ol;cB!#BW%!%tlOnotnM_LY4+2;L-m`&%-(1A48C^LWPYozLj+Kxe{* zGCT?eQRC>h%E#mtv;~Z5M^SZclidI+JrNOiuHt-Oc*|E->K|Q+?Am3LmwxGV^JLt$y2ciZ&2}{V)#$ z0@9tsM19HB3Y(mTDKB=G6quXErh)*J!cWEOpGMo(vOQANP8FR8`LMgXzfOnU+X)pN@SJhtBIH+NJVD|wr z1F0pHVU{)UnXxsBJdR=E>%-bocVn)?-l9_$~^% zKY?``Uy4;#4M`to+~xUyBkiRAfCjIsHJ8(W`yj&qEM3MS>!~sFE$|9z5BG>qJsG0( zfl~+Thip_>P#h(P8$-ZsGrPx(g@r>L3$uPArF2HTUFblg*FaNn$jyu3ON_4D3vi_Q zS6aqW8pek=udt&(E`%D6SiLAelLxSF+RupV6fwKdqjVEWyTS=7eHO=wN;$uaLrvcO zc*SK3DI3O=uoKINuEjiOmKl{^?C1;6pq(~~uTk@fhBb1Bh_y8Dh}SV(;RO%9u``W+ zk|K@JOxd)+q_8;yoP5jdWKm54`XFk{wg6X}Vs}Kwcd-rX&6n&&7;yj;a3gQgfpH>M z`|nt&%T#$YHgxoJjdl2TixLImCoYeTLDt=(*>+P&82c!HV>RB}ktS=`M!LqS@!40K z9bL)gM-vb+92IHLZI4+daHU?ZFs=6hGmWDwC#(*|_RJfx;Mmap0@0MSlD9sP7Mmz) zoS~+)m{-FTCGbS364s6jhqpZ3l9SxxYgTKJ%tHBzf4pfV3CucDO`_yvy`>VQF+}hi zqR0}9?x@_w^xFfT;IAk~QHM2RwpH=VfCf2|7IG37JjLdj<}ttqo3ojw;r6s|kUG?+ zTL1pw<;JZM6%~33y~Bul-N7T$KcKtlF{~xOYv5r3hiO2{lcmThJ|Dp`3Sc!>iIx?Y zZwB>0w>t3v5pW?IRQ0K}LlFROc?w#jA}M(bz!mW`OuI!|(D5HW+a_Q@w(O>Sm^nzd zhPK}}4x`Tt7HHj7%P`eBReuGYT#~l25akt9wflY=C_uE=V+AX71t`XJ+4NZ zC4e`s{6*)QjzvSXgXjIPmdR_&2y2O=Sq!ay$p;0nhMH?5P19paC2dk26O5w5$Y}V2 zgP<|46Vu(1OG3Q(gIST76eJCaOi93sl<>d3swqW;jO}SBTA;!J*^Gpo2I#aBl?Jxe z>EC6AVbPIEx_C24S&;T}S}y%@y15-#HZrnJ1+_sxnqZo8fl(|(84OGY00PEX763jC z_FY}nsvXSdGk67AUCG`G^J2V7qM+o|P-Hix>}@d&T;g`rw&Sl;8@0_G3;x^d+x8_t zC$A11vpT5gJ3r$Sw??hC>%lNucFp1d02mat2O%0&1+I?LL5Pi*)%W)xjirjPOo#=0 zgT#kefZB9xr>tGtnRhs0iYaLbL#k^`*2CHvt+hC@{DKmI%2IOL2sy+OQtO3)8hbx1 zwG=_LD43S%X0#7pTBw=I0_P|wgj%jCp6eEad~kUUD-dp6lb!EyncCM1p*Wf)r0l|( z8=Zit{iuya*(+VTv3zQm1)UF*TTm0F#DU*+@GPmD$x~s1{VyFSC2nsMernan(nTH3WVvre%gVRL@P(E)_{^=?D2#cV~)JsvF ztq%ws1 zAL^z5EcCCOL;#yj2O%mI4YG>EL@^MCLl*{?N~J>T3lyl78(-?QIj!V3+?T&qX3jL- z7&wfT!0*#7N;=1Ox3*S`!Yy!Jhvvz@wbj^2NWI4z=#~tw&qqOv%U+e7B=y1}Ie;i2 zJYCuRQ!yk%cM{s9heSETcC!a;6YqcA4D9){fd0Mhzv!p+i!Nc={GCc9kA{+vj%Kb$(rRgnD49*;EHeP+f>19V^2kL6oQZ zi|=o?5JLfwK{4j2J_qo)r-3knBqBE)d?8HPN?TPgI3#tR@0FotHM_Ht}943 zR4A~)MuY`b0oHt5aU?1qc#$2dn2`wU6pwm0@9o8C1I1jiI-x9CA<={)Lb8wMpzkQXJMPV^gQ3RF<9k*FZNkh(; zeGc3yx_}eoWASQUX{(lFm@S?aC~QbVe|oD$^K}71Kt>#La+5&-fQwQR8%xi1GRt$5 zh47_7q*)h2Jn=#ThzSHln|qv#%C-V6ojM%N2teh?PO+s*6fhGh&^AC(lLo{aFoIGI z2Gle#ttcFRZLPE*DyRxdyKQthKoODnT`T?i4J= znt9q)gobp)a*WYhhw)H>Yg>D|+q7--3~|;9e`pZjL46*JZaNqs9wA}_xdnLVjQbfK z`XPE%9l-|7K`_iD5gPKVily)Z#gx72L;z=vnP-l-EwbazKS2nQKIK}Ein)|US4u*m zroF1R(8jKY?DMN_(PF!X_SxyPohi*qN=itNZlYn&8kaFubsP_KL`6{2(vBf}%ckIx zNeBysn5eMhOyyNQ#W%XK3DUteNrBDG5Kuv=z=vxaXZd8T6s*fx#!tT(%WfK+Q!k8O_B%rFU0uWWIsD@^Q5t-tJQ>rFX zf(Y@xVNz8txH9|2N*z8J^Fn27d4W0tfw91-b4VZtfB@EBz?+3HJunEDn2`ajSVfXyzG zZbC^aWBELc&)ZSsu;*6QA-vGIZ;2ADY$p38wQ)H;l2bsviRrs+$;9mw`Pf+z0cz9Q zfB*m~qB8m{g7zID8Wkmyn8|>$5X*+@y^&4|v3Ol7=>o%{{W^9RYS&=137qn4DQ}UXgr~!QnAl z>PoksykfD40|4{Hx-*1W?D)$=(r<LE z2wErAdZYBarUArz$9qQD>r5bONNTu%@{xRYkmliy;a+ z9o=y4Jc3YFOBwMiX_yneMA@yVEfki56a=i?P)uhqNoOUZ9_QEvj4Mcjpvy(~*2~jo z2WY`SP7R{q>5|2%>mgYH>TC|s_&mK%>k2wUq&ydWr&&)mZySh0Pg)JwbU5Jz+o6aA zL=i+_kO2i%g2n*R>tm??IwQ0xQlnL#a@QooXSvS!iS@oKP$|0bSX&dM?&xaL1?#Z8 zLB!WOlDS>9(!j$9F(eO*(BkuYbFV&z``$(20dSuoDirOWkkCUA!2kxRttoV?DFuv~ z1d2(M%PQ2!BGt0ts3Q5!#GysMNgx|#!AvZaqaj3YqX@o*;yy>QY&-^ET~OWkqb%F6 z35)>=jWL1*E9nANOfB3qIRKfh&h$mV*HdIwE?!v8)uPmv%IG;}E!pXUlKa5r^Dw=c z)6%>OyH4~4QyI}OrjV-I2uLKxx2)dCLR#e_du~IrXq18s1bieyX?{e8Ep60<17)t_ zJ3i~gyv@IYLBjVG3`QvGO&Jqy&=KBo`|u;$8e$Q3LHsDXAaL9?*vaZ}$HW1KxB@Jk zr+{#jd7KOlB8U(XKml%)3Ak;-=wUt>gV!L0DZkOqe<_2${c!&60MO+vhKgW=vy7Wi z=hzdR@vnc2f@I*0+?xXr3!ZF@d1FFQmaT91wf7xGSPfLyW?8z*-Be( z1zT#2P1Z#K+^Q{F7EP!wtx5~nIk(p|^PRXrrJ&MSOmiqelC=3;L{@#RyHaXcFsbCw zE!9uFNaN5OiEO4>!57REf}RE=WS1&Y-ax{65T5!yJS|&{(d1VBVH(2WrZB!eF7>M|SQ9(hc zeK0tBeOc->f&*<_;1(*?U2FokPBu!?Ex7u4gOJ1n~df^w_DnVFm$k}3LrqN!}JL= zDTD;2d_H!tu^Tp7WT*|D2{GXfe(Q=?u;vPWAxzm!+l+_}$V`!ewHRfZti`hGBUE_R zW!fh)fPe%#7$_*QaH5vaLlzF(TFtJwB=;tR;9l>Tb(#+9jct58Uk4C(b@~kxGg4K1 z($0m&b)OMr+hdb@{u~sAH0;%&1k*(Y6p2GR;@N$+5*T-tTm>v{@3*w1wZ$+9N-9aT1 zl(JZJa9;x%g0>-_iYBy-lW{VM^8^mDRpHMdGR>mGH&Ar4F8onE*@NmmG*nvGaW zjf|RIqp&n>LqmW}_9U1q#-5I1q*B^FHK-$15Tfu*EVZZ|mr9U`M$20bo%J*osrt@7 zUZf6zjV;9B3zNusep)OhjCsuAe3|B#ymKpsZ!W!+t>iM&J5gN{pY4AQTEhV{qvF?h!^b@Fk@X@yUxeRc{?3?b0f8E-3Mo%S|e;zDW#;a-!7 zkqmtH#Rfe@GThsemYdR&)R<49WN%-qd|HQC^5oXkUInPOoe1A zg;N?si2WHY9GN*?rD8i8u4o2|gA{T@YGtxw-U#SqrKj}6eK7(7Y z;?8`%FTV@#^kkt1Aais85>%x7?$fu2{Y-Q)eSKewAj=}Gwq-^u36*g(oW1P}Smv=P;ZQadIAAiL9GE8<5B|gFM*rUm*>_U?%!@ADC z`KCp_cM~6L>FhOEalN3Lv%yHl)Jj6kc&|z{1++_%W|jwTc-Cpyn>wuZpMM!>(AbwB zr;Xg=wc3fQSm@2JJ)HB-;aTR;p3FvTwT|qU-MXoM z$eXw~yLA0uXvkWy+O96XlBLz(Es6!IPQP%|w++Pr_VFqeEr@sHimSuEov(X>7D{3<6DJRyu1RQp@C7IO-fXyYSje zUWGZb&tUR&Q}7>3n1U6!jgrpU(-#sU#b zm>(2#n_9nX{ffWu*II*v`V%rNG|azT+fnkXNU;!+RE!BiM&hGo(&twPThv-5PTo&5 zHaoo)#8A5rXe2M%w45WCR1R)GAVq9Nz(7#kNbR^t1W)>?XT7t|do_4*g~ zb1JQZa}ALT{OezF;W z0FpWDm*3Il6~W2>0#BnR7qrwadpt7tDtY=^D58RDT4~u>0w|iN4OB(gL>0NrhH^%* zuVqISpz9jFGwp@2LsM@`aN$W-{|i=v{lb`N+bPh$MyEHhAMJgs^Fx&e{w8AsQ6bm6TZq_OgHuDAYqk zMGK0=A5(Yqm@YE0LEw_8Jw}}eswBZtE^|_936!W(8Lbj;gi4FOwsaK@k=7)1KcNRQ zSThoJ#XD&~KwaF>5z=vwPtV!Uc^hr7Ze_!NHfMAS-Ni_mQDqR(V04&j| zaJvL-yE5c#bEd)H`M@I3!Y%tzFte4ew%fdO^@wq52asF4PT|tuFzVd6q|T}YtYE}5 zlYM&)4sf87OlES;k0N#Qb!i=uT7a2VTO~pJ!xNI$Xn+kBrnKM<3+;4?e*ySmLNhs+ zJInIN<6}zPS-L|y2%%*1TKU&bhs))FxxFH%;#g>eW5+cN43U)AoX*x@U01yJm z%n270uo@CW?@r1gTa&f9fB@+s8dUw3 zl#C?_30Ks~+W>1}tUt^I?#Q1g8>9 zRVzqA0vhUY?D#L01q#I^R`^SN*{7X2a7Bu(cUE@bD$(METTeTyhmB0a8-pFd!|rU|7&wO$P(mc|bmivB4*Er{fp`F$Rc4vTA{IxJlwK zj-7H(ZE#-b^Rv&h6aggpC}688dg+fpeF;~}fEG{JUrgpG-om~rpCRs0{i?!hjUU1I z2}-y$_^wqret9Qah2749k+EGJJ@K~NRvVICwtY1Fa$82al>IF<%3yVuX?VFI8dS}# zh>{cm6etu#s7SlQx@fsd@4;Pg2~}Ab1C)hzGp6W8UEr5ZK9~7YyknE$1ztKKk!kC5 z+Kv?9Ru|?;LW1=iNz9d6To-k=zrb*|GVTMir(ls=N!7JR%*e%^+Ih<25F=R;x#L1S zLLkIGcI09Q!Rcq5uZ71|q2BvaHIv zZSuC>@V`65=Wt8_X^7!K7z+w)ps{9}3zV+>5)V**-VV>-g<3?0B~`(3Ag5N5V*@&3#5k=IHl8cORx@@2ANWI4k^m5>voWK4>7;KYG!O(VNT91mDAwTLs? z`LM+Cu_XYFR zZM@hDhb7xrf-q^w(tfN57bnU_-1}`9n}oy28*_>sX{PS-XErv;Wb0)Z*HKiRehFW0 z6-q^ZK5A%?Fh@A;r*|_R6qb6$GbkZ2(M6ZCyR0^}K4X;>-&FiE}qze z%eoSx-8}|b*@h;xn61`~^|dl)MFqOM*+)+W5@Zcp;d36c*(6L-NJ}$rFAM=P0<*Eu zq;?VzN&;C9Rd^zRTIgwRg8Fc`B>)C%o-e5p&iK>9>2xQ>UA@|nX|SMo{p6^f6Opep`H6o){VOz4Tdf8NUZ;NcFYBA zqevzRh93w2Bn#M`&b_@{x|%4S)Kd(>Fe@iWgu3o#`5mOjuZ;=YX(Mc#MLGOHk4}zp z5J32x5b%jf$I5DL#xsGY>6+xh{U6Tw^4YrwoImwgDZTZ}nw*MEE3Y0FJ{O*hJMx^` zc6-*%1GQ@gE#d;_R~b)-v7_t%V3;OFiS4@B?k(@^Qy_7cRU=gNM=G{;+2icQLG*L zFXrRm1WjBNT6aO!;T<(WTsvLZt5RhzbjH@nj}`9JS5C949)31&RI76-X?D=i@$cXJ zg0n=ZRTf~=*W*hk{pE4yoEKJH6U3V(i^lNMkZ5`0Nxau-1O5;9Ek*F1P#Jrl%dHP* z!*Gk_4lL*LOQnRs_^aBF02y_9=R<^&%_@E;u>=p{hX&%!|I}R-Qec{a2Ho$Lx04H^ zn|<-F5T0b~nfLM2D;pb37+0=xBfMHhb)?rwl-@=^EGu;R=&>KEiqWkQCs3|avtom* z*mXIH>t$I&$F>;InU23RYkR;UQ;#hEHZ;8()cnxrSdv7_BHtNXSy$YfnO5B{VE~B( z`__iLqON;6gNvpXUq!R=@s``f!6F(3T~swoa^#+mW_ zD4X~!76A%1J$`*REQ`OP@CeKto`}_V`~&_UHi+XXi+SwXUfCX)m{y5~|d%{E*VC$QMBRKtnJH3Czfi=IPkNdk#Le|&W$GLR(^qb3Tv3+2P{Xs^x!U}9)8jgrKk^*~0$6|t zoobG?ZjxtP%94EqRU@2CJxk&BY%j{J^@riE8XRJ-;;@DgBMOi2K!~!vUJ9sVSo!{= z;&GE=&~u~$!&ru6&e64L~t5Xi+D zn=k82#I5%KUCxV(?CxkPZX+MFXUPhDS)vUeIw z6hl&XI=F>tbA2K)Q9ApIVvJa(hUl{}jUz0jlr96*-B^b>4H+63-2H_tRs9Q|W6n5- z&vV}?+dsNmZ{S9;WSB;B;eRb+YhUwCLb29aRpt$2OrzY72D2BNb+dYN`*+cuUI{_{ zCbFR8^vyS~wNqW4T+)9&1#Phj#B2_=xkv7-uDDO9ERs9G^L|WQrfp2!LcQ09 z@0G*jT6Pl-9odE!bl7><7UL zRPLsx;h8)Vwt}uYyp!i9^D~=URHucG*`B8noistq8ko=(I3@H8)lT&(b^D|4?NS}S ze{%*x7*8%a0!>E*dCL;s8qlK+bD(51qPShr5NQ1I{&yC#5pLY+?_134@=dV!&OUy! zdHjJyZKxJdXtjWql3{}rkm2<<4A^~6cV z$;%!&S(vigv5QB;ns%bFvZ!0a(X>Gsv!1uY^dVaa9Cuo04ze^V`aD{!5h%Fww?KRq z3sEsnz;1okGO0Ry$|#W!$2}G>2r-YbRM3&?K>|GN$cb5iB-$`D_}4Cx+WvjS`I}-k zqilNJz3neXG3_H|&x9BFEDD&W4)Xh&Wy=f6Ay@Uad#ln$qqxI{Q?G);7XF zG%lMDS-@G!FbzS&)2jUsTfM2e(^`UjSD_ca-tU2A2Fm*6l%GR|7Gc3^#8@TyZE+?( z-e7ij=U;ffCla;m#O_kgC1E4T4%nrxgev_%-ESIm9OXk-Q%fQ%oa5?|No)inBpP7N z6Dnl~_J_W)k&(*`{sx_f^?y=OEmZYe3fB#ZDq#Mt5SvZLv_dMc-#&4i=@Ga$SDx)R zj2q(I7IjkR1p|25n|SN1DN0kU9Gn~GU6+wZuQwIGO1p?G`T>!n6V`hbUV< zRQGe}l0Y-YlZyeone^M`AKi5YT6OJ=4mWN4C!BBEj7(UU^RBhnX&(v!jE!y5{DI4oh-g`G_%z-K>dD_kQ}CH=S_w{* zAQz{JIv{k$+ApqAWB{PyEgM`j6e;vf1-WwV8|iPn#uA11cw;;cc$Xt9q>R+|S(cUh zF0Fp!%OpV8?{Vq!xvebRc4dXhOL~AWy)!TaLWmWi`-~PCJLrq=R6$o6{gW*Z0|R2_ zbF__q&Tg}qtccXVKQtrZ>|Gprk7!FgN#CNKNhND{r)?UG%jAnu=Vn*b@e5Oy!UC+w8y?>$@`;*M z`gVfOLeAg?NTw|Dn@6qaw2a!{E$Hj23*K#<6T?Zl!lVv)EZW9_vnQnHbvr*(qJ}zt|72wZ58ZaJo#qIIWEaPF=z29T#nN;x!sD=2O>*6M_#2&Z zdOsW1oMuKqgj~6y;?=Eo6C8F6@7A_+-n7h~VZ)!R_%0bF%w zD1O8}>fXrD6QS&>i~pm-Ill-s^~8LB_@R|;l}x`rwPS`BgM4St%>kCoXm|T9%7bIu zORK{KW7!tlA+(R_-SbyHRk4NcB0W#UGOse!_;9T1&JEibyK)!1Q7J#5>+R5sWL;o!UMaS@lGT&33` z$~NAYmoFpL-WM%4a-YOVEs>WFmk1*-{sVg|eQymkG4-7sib6<@Nq+*Izr_w1>d2U& zq`B2~=F;nwVJhbD#_A>BlnEA=e37=!24wgn(=7vQEd6f2ZrPen_4&URML@v~`va|V~W!EF#UmNTrN+GcEO zJt9eh>N+bQ3uGWbNFvak2_6*V;CSVK=!<{BZJ?yK z)dcc|iek0-_u0La8)@_mT*lRMoUR(R!J0t5MpS>9xL&^{4}8g(lB}eUemj4E(HxP3 z5}(Rk@yuBg(>fZM1`~k-Nfg2?-MmiS1EFtO3&CE9Ka-dQ-{|e8N2jW);IBOna3Wlb zMfc`y4^v}GATi2Ws;x}hsE~@+HE!xWskP5Aa{GeHvn)l^)1d_uyQ-TcsNb%4UrZlw znP?>;;0bv|(dcxV`n9(QjE`IeL$Y1}%Lc8osaQ`51LACS^bdEODmXOmwLoGPOkMvT zg*;Z^yxMRv<_Ky1;ziIf21dh`Sz;3fvF8?YNEcH~&6~<#sDpsUt^w4J;(0rih5NEl zFx0>3!AJ)vf1Z%`R_9qhXrLaIv>2&fUtUQvBY9S~Sss8Hlx)s1PP@D9QqE&?tM}4+ zeo>K=T{tDPJju~0wCnsA*sPhL&seZXp)%Y@si9GOYfJMcO+JPDdSrycg#iV5O^v4I zi~Ca!>fzgYILD?B(YHk=u+U-Ul0OT1r8+gqWO%&DM&F7Z`XM9{*aPI+1>dka=-YA+ zt8VZT$gbuiLmsH9!wDUH*&eemkM8hn4|acHzdv?(%z?!s1`@P(h2rGb=A^mw)}zBW zM?Eduueq6uQp!DG;41I4@Oai_)dMiOZ6B{FV$yP`1?=vN+^m=zYPZFa5M}PT9*f#T zz-LuX`>>h9^j@8f#@+5C*$xE+g}7oHa_khm(K)9x%|W09AbEW`g1J z`!EENqe@oO(EoMy?xd?1cRnO3)g z-QXRm9RrgGD5xDTYq>+bnUy33Jpq4Dc0WLGR{q;qHVP$n0VZ5IkHD)qsfl_oY3qhq zlBzCUb#d(-Yv^2YK#tRls2yY{ww~YDy$UQ12`LBD|CQ?Q z249&=31hRVdys^M{geTnY7zcp$FbOZkZ32=wlcb8i|B0kM(^EdWVlyN(&wNI@MO!S z92Pr}h4OMfUhYEgQ6>*uJ@wVLVwW4vK=yH$o z8=lDQOOWPlaO3(@f1#fP4%Crg&?Va%N{!03ll)yUFtE}ZiQ|hnb}qN_+iVV@ZGo~` zBm6Cxp;+6pJ-En=%g@PXYb3wfeq!~{tJb0H(eN61h|UTyVg}#=BwG^4b+}o^-YX8< z@Re7w5cmFr=1aT@=6{nddB!Q=YPk~apN)ig{g=?zE=^{9^=AF4Qvm895GP`=VJoe` zW3=AYX1k*MG+_lwgWq3>*F2sLpyk4C(Ww?AX8CL>^-{2;+llE41EA~Fr+Ghh=QJ1s zl&-262vOI9oeOM(4@lQUcMq5$OnetQB^c=Sf=wH^b|62C+d4Uf0X1z@T}AgirQW<@ zt}3t*h9_c~@HnQ>|7d4#NLcCaStFq^r?1XV`PRT#i?*`J#Z`v;NScSIMOi(|(4VzT{QB|h+w0@S`&SxB5;}^M@hZ)on$@4zh*#Jwmg&a8F;o@9N zC@mRNVrT#WGN1qe00IdR0000PXH7sKmQsOWXUi<47#JA<00RT*006syga7~l1!(CB zH6Q>0TzO@PfFJ<2|NaOknPMxkL^Xu)gp{SIQCa4F#=N%lb~RWH0SB$BzN{!lbJdPO zJamxm7j0aD{`p!I8T6p+nNN&rTMrn4RXV%BK>*?Py{eQv4#UI2rQLpKBED$Kh=GAZ zFUHzRMU-7OgU?`j!9Nu*9=8|H&rKGKvsawTF{@y7T-2taTAV7Ie4~M7Ovfm%raX5b z@||!z1)>LBpK(fkggRNSx5E^N+jpv@e5jcar`KU>zxzUsOcg(2@{~Xc zGHnE8jZb&20IXcu74qrhY=k)igSU*9oXWC?8xdL~kA*cOQxmUcW zstv3m>LPs>79my2tdq@kq7?WHr?q91;(k$}P*a$;zb#TbA;5bD#(S`BPTIKVcdS`I zMtO>;L zoC^=xqM!*>a_kjeLGyIML}IbS^8!LK0Yf%ErEfXV$DcW(cqP3SJ`cPTpu{$lgf&W zwl8ddN2F$Tpy_tPn6g39tDFGgntn+Y*)Vuu5rW3cHfz5Oe3T`J7_YHR3PP3`A3lb> zbk3t-dgEF*21tcU0c%I!D;_h&Ft|*ZYxmul+Grt^JVJYlB=MBhHB7dtDZSFtOpw786!HQ5H zDkz2A^D!N+;jT-Ws0LvgCwPVs$ww7=X>0EMwaztqJ?iH_nQCq~1i3rP4t7|$#?URD z(kZcH;)IqpqLLolQurmu*`n#CDjrbL^bmLs+EIe=gxXX1KT!UxgzT1QRB*^O(NpKG zH?m@|qDReH5=z#&zf~^(!+0sb13*{8)|}@$GYqO^>F?p#SL%VAhb&=%q5UV)$~mj@ zG&v%o(BZ#*$+d5+>6#F;OTDgVZM1L5^fZVDz{SRDB!dPHHj)!klD#&VgHNCSo)l9p z{swGQC=X>(i)$O*#Qk%SIfNayhe_|m0`S_!&!7{zF4L>eV{&c0M?wP?u7<|nchmQ> zB5a+ML3Tn`03@(4&`Ml%C|b$I$dn^k)6mFpbTKjmYxA6mq+5BeG1vGl4Xv@Xp#CvB zPDPU53GCQD6VcvATOKItVM%W%W|rx;>TcpUlHOsN*>67fV4MrkqeNwVulq%UzxUNx zPq2u-m)O`0$Y9iRY|4?SzH6cjcVOCkPK%sFs!rcL3QLcsw=Y`Z^zez~hbK^P_E@1O zk)+YXTFlaR|NKTKt+S{Xh+M4?loP0Jw0XAVprMMSQGfnxlt$j%A5+1>4O!BD%AE#) zt3a|CDq4XN+EQxfecyBZ%6x^txwdjVr?m)-;%fy9i>diSoz0NWH+W;vT&}gN z!B&D<_#mAXe08g~uz`9LIdN7xJq=K1D+%RgvX7{0CHO2j(FdGu0oD!jnu@0Nf1y%) zx*st_V+zTCK)&*Q9qjN!yRDWGt`&ni^A>phA)wiU4bw_PF|-M}R?OB$>V#)=qZNS>#|In}5&9 z_$2yV&pGumz~EgTdqNK4tOR?&=T^|UfAM~&6!_8KDJH>6K&+k&xi`Igdd4|y@cw8` zwcRxU807Td!uF^oDS+s|hV?QtXphaTW!t7wd8azfEn#y7W z<~6E-8q<$dP@=h zIF10mM=7fGk`Hcr2q>^06J@R{lW{_$uIY+aYCP?reya7Hc|gD!Pzl}cpdaF5bmks$GMUjSZy;~POH@(x)xW1Tm*QVuLr zpt+c2jV|}RSX3RGYoO4Fi*t7FfPg^LC+30$YOU6&3iBltva(R`Y3fpS9Oq!-w%Ebq zrlT^vv0Q=Ss_U8bAnV(Z1eZTqvJb{6P+~;ekw&zun zzk`Fc}LKHt0}2SMH6xQ5^0z zUL4p#M>7pCp{v4I6g@yXWm}4paGsyuc})1;8(#*y84J8y&HQ#58Bw@%o@G>F7#h!! zqhv@@tyuU3^cK-)he@bV!1&DV@jKaK@DSnr<;D5c-e!x^U!Y#WtD4+LR+Lu-!5=DY zGwKvJCkCDKa_aS@M+5u`%Jli@w1kB#I^7@S7K#TX=tF*eDE(|4{ON$br3`xwx$~(4 z)oV}*V6Rwp9E?^Sl>ICLyLLXEICPa6d|0!M5EhnPX9++Nq#Rx5MIGExcsB4Oo`K8} zAA2XXVlXjeP2+iNDTN6HNyE4s#X?(V7vLq;rhb@{)7}XG)+AnKN|k#E=-3x6>r}*L zP?Pjemi|NWav#z2@SC{4;aEh zQaO~1d%Q?Q%3J7$%x1=04n#yG%JSCGfV`C;Xj2Mn8ywJkc~rX_eo`-%9gD}=j9wJy zttGNLE9bP#|C1{SS(;(4*7!Gvr5CEl?g*I@1BUgP^it@*<@Gq2=#d4h8S5ltd+j)$ zw2rOp6A{~gp}WSi<@pokjHCP21I5KyDQ$LUDDYjPYGOV5B_lZiK$UI@G?jX`S(yAK~Q)Av?^27z|mAS0BaWR~7{ zAacRP>}F<`i0WC()?~KEw>|CPxP|wB%N3TYFT*$Hl*N0Hc^i{LO z&%Ys9$A#)|Cm-_u4lB$mRoPf>H*Z7+K*r~iOTry7tG&4duqoRteSVxPE0&H%5;WFs z{_u-Xp?`W6YDG7y0;+(&D}<^7yB;`}gr6KYNaMh)lyxJFHO+v=Z;KhnDRUfrh~xyp z?w!<4Xn~UZcvZx5{)&&uu>hK*iam_yz)!M8^4uzOmAGF!258o~cGvl5IF2-%aK6o( zn|J`00>^sZi$E0!vii!Cu8QtBa5m~VFZ;TnHbsyY`>!r~Go1Bn<91XyHg3S)quJ^WQ}K|#^)RSItKmPcTx855TP@M18gjrlCVYkKE1w@8)9e!pU{z5 z`j{-dPyDZCFfZ0-kI2HT4c_8mb?HHf`W0=hSuw7HDGc@%_CkR$y!!%^nJ~T(E=@*2 z03`St6G;8dVUrL$S6ue>Y@$C+G_(d&+kIEQmx_H_3h$(P`iW7Ho-UH&cGknj0Xsdl zw2A-aEiQ5|{8NKuIF6q@=#+|B!>BWg={iTT9)43k8%LlIGkR8_J}FpmqvEsRLopFR zs7uM93r{93#yzrS0YJGF!;)aM7WGo^p%Gom;Z`G`%`vQ4pVCgU&`kI+kUVpXcJ%7Ir~cc#9Ns&zI5(W(Q1o&@WWHKy#Xn9O^oCs;c72GkLa^yqsE8zN4po@>LJ93DO{pnjn zB=|+`K~+UXQota##{NowexffC+u8NnXh0=T8W$;>41B4gXfn4u1M|b971O;|58DQG zI%G=|T;wGjFky9>t292NXpSFr{?tBhuwM?}+*f3)>kf82Y!w|(5F?;nXNCJBmdkY$ z4FO@I(+`GjRpIy{d3;3>q&7H;p^dUBLZq;I?$i&I?+E!_htjn!kZn-%94QapSuFnZ zoE{F{`wIRgAF9W2FcaRaRvONumFj zFID@9%hYh^n2yG3{MEb-3Ly;J(%OQgBnawO z`=)ntL4T<-L>72#^g*t3>g$Ai$$*gl{Nc%mAyDi*@JJ}qh7=OR*YP_%EmRCT%zNe< zh@+S3dO8NI>FQKl;mVij{^_L`F=-Dykof+Vas}}jYpGI;ul=Nl;<%g>NyPoy6(wzx zDeqy54xb|~Bu`9vQJlP?Mdcasd-Nh4{JcvSc)xg#-E9mw;^)H12d%FOpG?g6YY<8_ zF1LSSL>cMWH|^gg@`<&(gBGNh;xvx1BQ68*bR^Ss{!_qbm|A0)bqNp-=;X0*AyC2< zbpbfP4`|rYV+e^ftV6W_+)ugxshKMK8|H#V25AMtwGr%cotD+~4`L27FZ8 zz`qcSo7_abdD+DIP)L8FpOUT9rK*O1eVs}iu51j-B_!?xxG4WcdE#sYD^BP{uPNDk z;4U}9ADi@aD!FtcCrQ4^-S*r!cQ<`?MJDvyCK1Y8w9vf_SxLiOL~hyUw-_fqWBZlH zXe-IVh?Fnvu=&_St9!I!rc}1zX<{5Kq6dp1vuVb#=r+hv|lwgGGK&Bofm)N zSnrUsVq8}Ayc9&s`YlE{5Ebati-PL0SO3#5kOY~Zun*`g2qWKu&NUMI z26pp@x!g!rfQOu(rYgn%4kGwn9oIwGek{Nq7o1HtEZwZ4w!-wr*pOJfoiQ*kVcdDy z=MGPdi1Xh<)ZiqXqigLHuK(4YeGKHtId$@W`(N7IDO{AedEzoM)kB&hn5U z?myas_v3_EabTx#CfQo9IcW0;Bq8`rISn^$X6+_inC`0gQPhThXpCRgb&x+g9oMRE zDLmn^^)GK8ksDhdH>A_j&OxqGLZ;-udXGUt5woXZ^%d^;u%u2@llN2^O9AK0nNtAYt2zjKJ7hx43KfK0F1ksWYt~re@S}oHR+Tdup$TNYo4CX; z&4!QC9TC_1(m6xoQes&M#0V%_IGuWUme|B>C^i6vOs8%CzsdJ#<~-Sjg<{*K1)cPC zS}?aiO+}9q)mmd9{i_LtI7oyB(=bJcv`su2_?ao{>myL*L-o=Ippm0ujtpQ+_dm|361Q>|V+{L3_c1F3bFNqP7D zIV?Xf3)E3Exl26T`tX!I-@5iRm@aEwA02bEoK=bb^mnOldlzdl6Id`0DKbEgdS8=tM(PU#r-M#=%1gPxZeW$x$BC4fPYO$El$l7&eY z$IELmEq^}FCUlgjK5h;_XrHD}SG8B&86QQCe^CX6*mupAUtYe1KXEn56rarNJx6?L zN(ye_{_$V0WX_;hv4j#s(fnm!ps?koOKko3-X3aTZFh$vU|J2@W2Z#@?(P#<`TOH$ zF5wcRfL@y$xwpOnjP?wwp~HANMfa51p#%BL1HdZ-eF|efOB6 zTxzpr2Lz5t|Elh77i`6({*=fmUY$r0D?X~z%u}hON_|+(%d5)4zxF-gX%n^(YYrw_ zs9#_k5G%yW2$RZbzdDHWfGh-ps0d}mZo@uHAag}smJ|l|jsFwAir54y0QomQThwMT z_k{#VU1^JiJl=A%sdl1WNZ+&odGFxRp8#8?~a zM)xM4d(W)&xds|kt0GPS;_sZm?re_6#+Ty#6DcUz*=lJA6C(@ZR1dVmqiPF(V*Z&E zAvlLS{r<(#WT4(=nvJla{6q29o`}1JMFY-jKgfoMgA!rTCi9ALzv{l&ENK{9l)eWS?-G3P=Q+!kSvdC5(GQo-B9B!;od zrDBjK$YDa&1HVaJ9G?-DWS;Pr>QVq53x>mH5l56-Qp*RYR=p;|n?p%tM)W$=Y!k-M z`NzY+9+jo1*n8d1Km8Zs&KXYbl~L&{pZD-jrG$>_$Ox{$CR*_sol4`_w^i}K<*aIY zzF=rmiKe@R(h7`D_8oNl?Bgb}v&$-#V*N}a+tV((VG6q$j|}LflkrM%AAKW57$#ge zh=s|s3U&yVi1?ihKb~a==Pj9hh#d24#fdiU-q^K>&&J5hdwzk(*`PuVQQxOk$WzX$ zTkyX%!TrQlUWW;KgTt*$mQ1=`472g+z_H#DlH-b1OdqeSM{8H!uX+FO&BbZcRi%0v zafU2<=Qc>ps=cG7`d!mLA>G5lRh3q2qUf2oV=N0@6cHbf5&U@lC>i=Dk59hEx_j$< zKW(Y`NHa$4ao%zS93i^Bq3|QKaNT$va;XJ4#JZQ2Y**K=Ye(QwTvX(8?q8p}ev_ak zR5C9QODcKHmO?_3m%<4jh|fleVIRR+-aI&~KPTP_7(?uT4P-mkBW4DcbBWU(>~lWb zL8Q+Of*@(-lqiyP>i?X#0D0!RsX>$fPyn`}hnOb4qEF6C*+ZDJO`N4ho3fRCOSj4$ z{8!kPgmi~i(p21)4@YtJRMvCgn0We`P7z384GSW5$2apDEpcNdCPM-90fGI!mg3E1 zxzO}%?T%eb-L7m;7Xm*|-?d3GBsS^YaH0E#!~a@i42r1N`WV@)I1|XB$+67?dQfZK z%3gF`!U!*9?nIpNb~}hVuV?EasvLXH_owSEl7MUMN>M5QwrtOw_QiA2-x(A|S%(*t zQ8|};;HF6dDL3@tSEU;Xjs3;K?`m^NVDx^iCchW<%I>uCoQ4G_SV%2hK*~dCwr@H( z*sfZx$A^Yc^#;`)bLMAXUwgMHd77&O9@3hg1J$u^KSwrVAB-9Y88SNc1|**3 z94@5}t9!kd)mu0#ZRrQ~Y|+_?5ULPu%4ofL^r^8X>Vy&EQTFXIZ32m}9*Io$+}--* z8I9J8FzqdvQz)ZaMz2)qA#5Fv>vd9N`7mZPni7d-UL+wZ2zuG~xr0%W)`hjNrCqu>W@>bahhC&~GG zN&Vo2>L_(b{)sYtm%w-&80IOzxBQR~#Ts~<^6woG_o@&UsKdk$N#n$o$tDVsr`>r5 zN~3M}1@7z}*F~ZkQY~u&Db^xF-)INz!pq~n;ED#SXoQ^Z3A0^NcDep zwWKfP${YRdK(A_fnIYm_lo8~Q9IS(L!ax#~7${w%@l(VS8<#bvI$O?+BfEW2~eDe?QzCkKO?MccK8dO2p03q zq0)ea95n_#&?PI4>eS7f5`WB%&Jdf<({q?!qUY%7 zUj!Ois?_tQ#?ZV>v?yd0>TJIF7gEl6NLXr&i#z zAR7xBU^FwJL5?O^w3Pu8@Hw54Y(Y94(1}%Q$q%n{37y`p4cPtHe-W%w$ao!(^`)NBo( zj@W}MF-F>>{RF537T3@^XWk-*w#M&QTdx7kz7l!MVXgmlbxSA53Ql-7@~ue)6(${x zV?xW=wagCDR07DiTwqbdE)T*pQ5J(?8dR((nspM*B@!z9`w~zgl z2JeB3_u!{{(#6=@2%wq%H4V_^iXr3anI635O+P~kDc*rBy74k+M-qy z1)rIK>lRnI^j!e3*S515%wc6b=Wg5_#o#Bqif8!?zV&nM1NZHt1nMH)&u`4H$C!gr zvD&Fx08ZT8N*Kga>4NhM2UvC#TU7k2d%tkQdlC@o3+cs)ifjjDPzqaBZuY!NB&(z> zA!JQf?ML2u$pV^fK^t7YEhZD>DCl^o0=ddbWMHv*V;iwp)E_4!F8>F9%4H5Ssg8f$062cG>8(>(dD6)nO`Sm`_-@vtXO` z!Uy4!g{+KC^vM3wXI<>MlKn|rw=n0aDDmn@H>m6UevN4b7xa6qd^>l)+wgG^o!%Phfh9x`pEm{)x>rN1`+!Ae^xBViU9| z<%*lpBT|?63eHf{X-C317KQ|0l7W1ty+pV}LQgGO8kpu8n+C(8=<4q@2CUb34rDtt zd)A&dQn9+oP;&vU)$u50i|6Gd)&vDkej}+!BOA(if#Un>@a8bUB}-sA z@@y3jU>&$#mrtnY6D=0gb@z-!wQdE}Hd1W7UY%v0OlGIUk`njeuI8pB+dG-{8HBx5 z?Wtv{;S%riMX-RuK9rkMIW=$nmHQeewXV()HJ~UEx}`V?CG16k{zeI^EXq7nBnQiE z8T$iv$kQd7b&(L+EW>7eY5XN1=W=zXswa@;{P(*D(hh2N=KUzVc4!LSk-3=SC-V>r z@3T1@ELI-k0W+0zv$tnSYR<*ilK9t)BF{!4ls^8w0Z}Xk;J#HK2Gbq$b^b%@z44@8 zvC^!Eb*UHp9Ylae?B>s|6f0k%cy>#X9N>j@H*^Q!pbwah@Th)iG=;H~?0 zWWpt9oRAU548jAwRO(G_ctz+0wi^-78|EhQ_(S8ht9|1q#+X1XsdwmPq;Tla=7+PT z#sq*yLd>R1^2`>=%i$0x`)l{j#>9PZ;u?vd0nX}k7MHh+|CNYYpC*s^UGE1g+sQ$s zPr#Xha#lr>g_^l*fPr0qI-=a@I?^xY4)y-m*-ppynS_KD5;Z{zmi35~#(^Z2X413& z1z0Kt8;|fUj=*In^Q|BIW$1GD%%VpLL!uCC2v-kyq8{ttACuCpycs=NrGu?MF{!a7 zuFGIiOm0Y_bv=jg2c2ReQ4dvo2HcskZda{Oty>6?&Y@u8dd@lZwV8uys4W#bhJCcE z7|ldMS6DX?+G3B{)=gQV* z%Gk96w29Cdz>)BSw;Lkg0!kn$hIEp16^yEdE@fnR{y75(i{Vn!j zml5vZ9q<_PM=8>#U|G5Ce5j_a4eZ$dnl4pLh{_y1T0BsabzK1y!T#aH17GoKCQ3Cl z%s%!bH(1%`b+9?vRH3W_>G3&++Eh7+nuHPSj=OOn3gSHFA=*oeQ7FC$m64Q`njzup z0ZlL!jY2OD{rJsv2#LpJ)MEQYPk%>~yHa9vqX>yh)>k5`*gJ5PmkR_)Nr$+mJGh2; z+lX;$SEL4NlZc^)TUy?wDACSrVG?nAYIys7I>bEj^WJF#5=TMfZU6ZOQ4`l-c~^yo z++Xlzx~k^DsV^#~`oKm#)9I&TT9`w@BU^M3s{5o=CXUda%JmU~I-RDD3tmhRNSnPe zd@yLgxxz^Ru+>K>i&2@$Q20br=zOyKaZ#FnXTz&@>Myn-W$4jww0BwHn|DMhpj0hhvzqWdiBMt=;{RVNyAuN z=Ysj9iWUQ)*ilZ+i2mWQ$PyX4@(+uR9Luj_!cIvz*W?;}Kr=pFdnTv9`~uQs+M?C1 zN615nM8OfK{S;$z=!(JN(MWtsG0e9&i_gktyaKiGO52OU8|SU)-@thB&7~w_OsRFX zDtMP)QUlh|?Qyq?M-L6oW%vj8yvzY4nyj7;gCK4;PkKtal*moE)-QS?S+{Tz_h(P( ztG=KKjpt#F52+&xpW~E*Ia$FZ9Hg%5I$aMde?cC|tk?yxD`a`dz^n7xqb}#(ZEa5E znbY^K1%lMh$_K2eH4Va8KMP!@GdgBEZ453yul2*&YmcD=0$eK|FYgOQlGn>}Fa&;l zFnk{c=gW|&=NIbtO)ge@%E)-S(o>VxDVpw$esMbMQZVXqEScnXCTTU@hP8``JV|}G zXT~+V9^T~$6IN8{O;9shPurcZ;E89i~@8k#Ep$UX`%+%w0RR3jke~ z{oLmXe!(62wxQY2b49_i;KlWErWQ{@B8n|j^e^nOME&$<$~pY;^xZs!6@cB>nVJ%H zT}Oi9Gb_G;3`ocP)=9ZFE^%@v@Z;|ajj9+XEEq4H% z9lZ`5@73XP3v3qgID8vIKBfbwkhYm1RW)1i2-z~v;`xvdqFRE`j3C$FRYChJiO@NY zv2apHCp{dMNKg4^jEXhGr)qyH1OQ(c^US@^$hA_v^`5p&lRz$s+1?&3KN1$!*9o2~ zXu_FU`OPws>SFfO+r5iS$?&X)C6^zX*QIpl+6A&LF$I(%E)|J;H9q}Xx1=0~;*oM! zSK`>Nt*tWg3nq(q7(FjkMGhw#276=_|L<}B_(HQhpgyMI@dEqo zSrD&sbi&I+P)FeA$}w8@?_#0ngE=4&?RfJ}2N~(}y4xeY8;fbZ0O-_-yu4Z*#BP~S zW}x$|`IBXQM@gkm1^C;2bt8;7ma(%4`Ah3pIT{n=TS#HoN*&@6*BZA)%8xwyPtc|} zZILmg@->!_Pdf1b&Re7@SO1SyczaS^wAl_6vUQ3ZcZ~n?&zf;Jgt!4yE)^+}Z+P>7 z>h9oLIa~&~6eI=&Tm358I26@Yjoz{*fgtQ0z&?3ZHx+;Ui*gY>h+Gu77)TTz|E zVGpQOzL;wWAvneV%w2x@-L^sBX8Z(kY#T!dN?&?sq+}zSy$O8z&c*H@Xv$Lm4MgM8 zfQ1^}*1C#HEbCIw{RLzcyC=vS;m*iT^`AFtE20E)m2(bY!~7C0u9_h|HnPOP@YOl1 z{Zt?DJ@{s-1GUNcp*De55mmvSC67cJE9uDT#joqts+xXQRhet%ijdXxtr?Oj+Z0n+ zZemlKjI;6SPqoZkw%os>9g3s8g(0+Abmg94#QFB-t-Ar!zdir#S%4${Ea}=<8+ToB z8^exN!g~bmV3q5i?L!|%*P_vPDx#Hos2>F=ri}Sh;HVv&D6`iSW$A(fKBefDht5DY z@s|KZsDbt2Mb7e!`owacTgvYfI8@)Q?jW zjxKKt&NhNEXDJ$V4)7QxTvWIx;1F3mapfQ1bHBwE#NgLv8xidnFrN%}vby+TR`h7{ zQ#m@lV6LS_#XYU3FBW0Rb4vYo=n)!4%6Xkp-tNj0oj&vad&RdZ+!F&>aRP)2LgjK= ztQg~-rXT~zrodd_*bZQbi@5>ZO13blb*PilUT2mvmKjBL)nJ=hj>fH7<4V+Opgx&; z!lG>#gXPAba^z|71A;C$5~DT@87H0p54{W5m$$S7{LARO?p}#AvR|jliK9q|UZ#Ep z_`>V%oPf|;s1KXgjEbLeI$^EiZ%5{qCmY~V0~-g<1L2!J@(|&!X*|H@-$t6kFyh|4 zc@fC}soC+22cRpEtQN>u4}IhUf0!L2CyQdtjncWy3d*NoV@XSMd3gsLTYr%u9mat2F!!{hoB>^w;I#0Czhov1#TM!ofyH;+v* zcu=>7W*pW8Q8RrqY|}qF`~xKLp2ne(1b-+w0RYKkA!_K*ZxvT}niI);O$|$XHHIh# zT~Kx`x4wXBGm*w1ni8Z1TIK&>bgMkFF{Y#3r7dvE!GCCC_LddPMVcy@$0HT7Kc>=+ zeXN=oxY=x?C5iEhRxSjX$E#y3y`KdorTX@EjHgTfJ#-O>{Go{ zt{bkIh-}dF6RQ(>D~C@YbFuZ^0&uHDxJGHtJ`-|Usn|2$g2It5TFz=;J1jKcza1#S zgQQX>)~~xQ|0;!SBCqemE#iudCgd(NA}mWv`1Iu zBy`u!9W1p|XGV<-*F$%BAFmQ|!fWUpv?E)_HB+Xz92xm%ERw6Eh$x|NU;T2+&1_%6 zK+;>_Wg4gg*0NnmfV9gjYvh~&DKto9o{BZ<6$#)1mq+AOlt*)W?X|tU>UuoYiVR|x zH0Kl}Shx`cnivk6&8tl>Y#zB_pot;4%2vS*%FJc$)P`GaK&^EPaGa}8sWSS$J&otk zF&66ZNPtU(9JUkAS;~AZ*qo!Dv1aO+wO*3>&%^f`6o#PGOF{bcAWXfcC*f~}rqsd| z=W}+s?~m>zZ45{^$vTmoc#BP%*eNQlULA$*I`o0h_IYHLdN-l{ya({okr+Zf@?4bZ z{TwuUe?PRC1j(2k$+X&hu4xN^`5(>f_@csZvqMJ!?H+B?&5PFoc(Z z5<^B49PGx5(!==RGW=0|C$B?p>(^U=Znl%@0a(hqa}`a~at-?o^%#er6J)Kf@li~T z`vDrto%`{s?gV|Ws;?UKUpb}NKs+JQBcoBBd3E}Us1@)|NMt+TKc^-<$ntbeBTDFF z#nc2Z6!vz*r$P$-O!u7&`tDQ})EKZ$J2PtpU_Uc>_w`zyJfU#2NdG&Eli=?ylE5}W zt!@@tv>{Rti<_Y7gIodS|06_olosPhmpi=u<5=*iY{b3lm@wJFK zEY+Z71oX5KAt?7^iBonA5L{$R++C_r==-~sggL3Lw97<5&g zL|gt5WHO<}>rRAd^e^EF8s0v><4)2uqsqs(D&8?YOoo5K#BxoBA4FVzlP#ml={Q(R z(37sL`L|Z5zftB(7lvHhdIzE5eQ3=@p=XQ>qE)e1wu7p*B59GA>@Q-LWvb}>Xeh_rLX0u6e`ipX>n#7JJBMWg4uXyk*^cIWO2k+fC>K56!mwZ!X zW}PlT9H$4~1#Q0JTY0!lpk2^-wQ^!hV!9Ayz~NR!3DK3c`;syezK)#!6B2#-_XEsE zf5fEJU{@aLUA=zIYmrFk!W(ZR!964c!=$ID^!g@m2@oB-SMaJ^*>L=d!XpoggQRt} zRzT0+&UXh;hVm?-uX8GPS$_|~>tc^F$D)GSuW9YziN9GH0o=GqYWeZqV5;#HzS53*IS!0s{X94|(FYME-@TwX;W~gn z8Y}AewPWpB?-Fd(JU@eV(-t?k3nhnO-%hOIAR&FJ=sp~yeL6EB&pr5qA6ERD?Yq6( zJrOk-9it8|G3ujD4OiJZ^lo85=nbcQ#?}ki8>VD;elK zRI$DKg0l<_INcLkzY z$Y?pft<26N6meAoR7vmyHs0nd-J;_wM=ABz-Je)1nSfko^Yy8Df|$!KkqKCHo3E@r zy4MlZdIB(rLSEY=t-u>HHLrTkP!X?~&2|C+Pt)ZG>Ui%r_+NoPRE#VU{E zBTnIcbS0OD(y0Ic@pZKq)&^>KN|{N(B;! zV^F>KBWF28F70ksQMEwpV|IL{MCvZPK~r3ymR^y>Su`3g`$}R>3BK9Om0fn#}8 zya+pQGe%NI3<&a!GWZJ51nXgQ&V{P|2=HzJ2wfDt% z)P+Oe>q;eRQWM`n@|EB4)2mt(0nYC^Me4{?Gr490r&daQO$f}3iN+bvgmtxQCSm3a zn*lA6jHR!;@@%TC$%(_>2=)Lb(UZry%pX@}4MhOl_Ry-P!^OYy#D{m;j!oc)V;p3LX*D+-2;##(J>Tk zBN>VVA|HiurrF~U@@C5I8p!!-wz%`?X&k@pZ zV4SiTtds5hn~(N913z6oO-^?M9(9#SdD);W5IOu?x=Z5C5)vjQKs`>e_I{OYsic!) zC*W7_7IC^CAEn|8n2=)CdFo(H5Sz7kS?Vhvybc=`ASRI46LSh#`#au+6(E1(-SKw3 zOh%;Pg`;Kn-Ix3qpYSM5?2YOw8b^Rbs_3o=3wVc&g&QaI?lrHYnrl&ubZcsE<3hHv z9_nfuU>7xBQ-`8%rUVNBsB;aDUC_iB<4to&xdsKgpXtv+FE_m_m&EeGg>4g+H4}!~_qxuUJcBUzg{Te}y{FyHi)kcL6+{-tn1B(^5_wt-)v) z%cqUXsY%C)X4QVXl5X75x1?sXkrOL6m!1}N&h^>yN4t)|B*5^8zgF*l6p?%B|oi=m^kDs5ituM*BY3ECMa2`A_BHC4?J z>=$E|D&LtFSL35B-|XF@8_DN^2u}J94_R_2As8uts;QB~4piLv1zE+UlN#6+zG&AD zCtsvwi|p2H&~ZNk->I-#mSc~C08?R~UQ3XtlBc~Z=2m?N@6$+RkFp-N+JN?mb3l5s zzPGUswY`E-FEldM;}}FI&#Z1f566r3q`a+0$L!pKodXvNNt|Ndex*WFzFBNVZ0o3d z9>;_CN@8B;zg4F(;>}7>Y}z{xFX>mOkq2zClGYX$L;)&(p#=Gy({x4eYA&5AiuSJ^xYf13b_h||FU}U1*Rf#AtL3w0O^ zp|YTq!Jh&|C@%C3B$w2ca+3j%oJsij`5ni+9^Q(e4$Y`tz1B|>MaCW^Zy?kRjm+gf z&pg7Kfx^YE1#|C+U~WA`s9kDSP3};)$D@mA*^ARPZW9OG@2E`oOmPWP?bd6ga*7|Q z`XC)msedESZSbYxoCQYlumFwY*mn&0P>%$ld1 z@IDaHY{qB0eJ3IFAcxK9`FOQz3*{fwGO)7I-whN{_9Y1B#l&O_@B=VR%=rGea})L_ z=jL2AvC1)nhro{>TyY~nSr4d4}>DHma5rtv8oYFq-wQ@bt6*jK(lob&DAG>G` zC%|@6h{Fgm6Vj!=1Bb^z%Cj2O5B|4?bO{-o;*tCfEEofwQs-!`gR z!n!51oM6@9O&wbnMi>K*<1OY|xtJTkDDP9A_+gWos6peTKfv6p#gb?&L1!e{XoT~wrF0kds!&PE&W0jMY<(3GdU+4hNzn|!|865!+vMgt&!-`(_Aw&>+XtBKaK^lD zD_QA((g7NOEASl_Rd$ok|J^gVghe(|#?^W`UkOZzdpKkxm}UUd`t(`JFM!8UI<{NR z&XQhpqvbI)?XfzLjXi%@3RJtQ2UJb-8=Lp&s#3gCrM(x%1!fOG*7U&8dzF4KKF1h3 z_#j&YkADo&kKs!=y4uGi*@C*JA%yc&r@2HCIPRnZo9Lvk?ob?4y@`=R;_>!Z zF5DD84%|#uG{~H7%;`)*^Q7|!8$qF7yRu`&ZRL5>5jZ5CQ{`!Z`D`CE%kb?b)Uwb( zd7~J}MyO`RiC$aI6x%hIEv2T8WXqPDrJ=?_#)*}hUSi5*QNp3gOG)d;xW;N)NxPy0 zZ#qk^bc$dIj+^Brkp(*}EY>5t^U2Q*~9tx`Y$__H9{ zc^~t=gHA8|X+3%7PSNL(L-x&C$RFX{@*f{Fsr$f`SM4nN zWOKx@^jaVtISw5DPw8y>0c23|t7IJh+G1i-&Ykd9p>&(bei{u-H0|C6Ae}Ss?4oF@ zi7k><>gznl*nRhC)*xi9(=im4yC|x>q-LiLlqB*hZw6*VSY4C~U;-%m7W`W7f)ZE^ ztV3l~$C$jq8UL>T`rMdrM&VsM-abfSN(iD(pCx7f&>-b`(*0`PM*^9*6J%5zBtYY+ zWPW4Rn<^2h)7yFf?y=4#JMJ%HT9?-s$0p<)AYuINUF;2*do??8M$`XBRZ*`>IB3iS z=hxK+eYCLjn|KY6&XRE#;drISQHF1aVM^t~g!E5Dh^Rv0xyzEN9*?-{yB2m9W=aWS z7ZwC0^dJ}AG8NYnymchamR81r6mfWXab&zDDvvj;QAim2jC}_QXcv}74p)BV*@s|? zv|iXtgaOT-5`?&eu^bQQT$~vTSXhF=1hlNb@0~UA5>^Dd%f?A^T!E2BYBWOipyjij z=>SxHS=5$Fz3#KgNoX+PB+BQmDH{l1gs`a87qBl4X=*_f`)bhWUhdxDCX8tM%`o61 zjf`K9O0R0ITq}4PG;Cs=%9zv*3$C+D%@R?cZscd2?H`Z(OEf#YBGUd2Uq_3J2V*^N zqK`A=We;3eKi_;6)oE){o#(*EEiZsCgZ!|{`O$DGiVELlZl4zMi zSW~1gTN&!^)t*JHf*aHryxSHCHV4B-y80yLSx0)(;yX;asjwSyc*$3_Nvv=|-f-0Q zp^6&6i`gq+RXiF)MCGF#NwgnH)hKV|?Go=B>E?1Iq+$6)Pb+xEHarxjJbCsVOUMBb z(og2TB}$fEwV*xEwI=hPz;b%>>IP^nhzU6`W0VT7!glt!E&FJ#aq*OSJ{vBf%|vsT7*lW zD-INA>Lg`&B)^x)`KiuxIzFq&W^_0iYS>d`Jru9h+C&Z;`u`?<2`hWlRI@aKx;WO3 zbi;=_!XFWb4|c2zoE4lhzbxHAqK$Zy9c~UxwMsbMp}4h3*rWtkkF8Z)bm&^Tcx*^d zDt<2gn1qwCC>)60aUN(ndcGF%{zmNL$Rq((XW&+*^zHLY(uIO}B!4~J`Vvg5y9%tnlBe&`FAAutvB7{?e!4|Jv5#me>gZ-%E{D|O7^Yzp zjiEjO!OfTNWflh)CA^|Y{GT>vlCkf^qY16)kVmdU(V*mt#N$3Y9<8F}3QU-;8JNlq zkO@Yo+Ou02fT9tlM|b3P*$k<~u7CNYqa(mM6Fjj=kCl~7W~nw{x_ZfQ66%GCB4Eoa zG9rzGJv6fa0yao*AiNu(W z&@<~R((!nNq~!oqO&$~uk~+8gGk>IC$$MoY#bj&w$XH(Ce_;G^PNP%@98286fFAZCz5t;DFG; zr~D%yfeIYLg8$B6)%Q%j?f`IPhcIEU3YYX%)|JuaJ8ZyIArUCrJ-X1Uz>>n<&*X5u zO~Anf4LlyCS!77T>)>y+4;A_nf-~!RAbLJy_?HKOksO)LQf_sSL_-WngB|JJ9}D`! zNn1kWF8@{9RBxcOF&<7V3ayI56#Y)w15wF`TsWX0D_4L4v!S=ltT*Yh!!q*icR$U^ zVn$QA>YxQd*>!7w&Jf`Eg3xdZB11vk>9b-(Q;7HA(lGF9Dk#2-)6(oT6)#7`@h2sa zbcTrs0wlxSt%v|?>xoZKDZxk_Z2NOVfxT6Pj&^0|nzATkaO>KGXdKxz&7k{_X1UodXk zNyW1Y`)K;yb!MIEF2UK4M$T}^!XnE6SQ556T(l488TIB%Q`cyq|4KC!QAq9F$>+TT zDldDLXzv5PGKk0xfPac&{)G6N=pmWh`fMsNNVL@GV%}Ba_saqBE6f=I6&76A7KV(S0#geB-;I256 zz1-yO*eXbwZvCmq_!>MDy6UAplE3;dlje?~@o^xm-&~?$`P~}F99fyEStIn`-c3Tt zj~Bvmzd|_?`r0;>s^ikHo70rse$O~PIk&Mtnv4QCBf|*VgQd3tq)TWjbo?q@`3|B` zI`<6Uwqqb8eUJz&4-Km{WG`K1Nmqdc_b=QOb%&$=Y!5ALB4Yc#DP+v z*gs18n!5q8ZOp(MotfrKSkCuAcy!zT9hF=J`&Jq=JWet#f(D-_caAwTcK_kNmoLRCe)X3k479yY>iD2H?=qZA33YVY&a2*Ku>wo83M0W`@!HR^}e{YkgtfYakm>= z5j|AACSo_Ai%$gF{*P{i_q=}}G`}O&S!9i2l!UHD>t67*FcO`<53BZFJE_NqK}9-W z!~hWT24c1{ZcJn~l-J~#Rlup*U!uDX8}ymM%D%artsiUo;Yvl6E78_?he{aOyFE>~ zK!rU@t4^at%RA_WK>K37vif}-0o|1x==r5!c~;S<%R&dQ)+kp6QaAN*#;^-)PnPEY z03@B?M1Kz-VbbQvez2QZ7k+(lf1~I`;eDx6ydSRayw%4rCW{H@6ztMeRs7CHn?dAA z>XJ4i*!X>UpktG~N+r4uaIie@=z4I9xx6ESdnPdpVokCmm4M@}iTI+QzIsP@v~U1w zvwGE_ipW&VSe^@0*(UEgzqnfR7zagSmZr@4a~Tq+Tu`#Rr`*Cb+Si<*!>mWh%UT2z z7yh8lc=`n!M-CY&(BPQ}OV=^?xkWnnX{cP#j86{6s zv|XZ?={)!5@+D(@sz~JG?SF7I0(z64J1g+t9ouad0UXn#v29Lr9zabx zO#qnl7z><9#OV@G`X%qSmN9sX!eDzeix63uDWLjjaP=LHy0fFy1P8t(csCbtLxuVFO)1)0>% z@u&w}aNi&>I*d=ZOoFZ5o~>P1;%?IWKln?`PErn)2B2BnzZ_t~$Abr~&EGErjK~92 z1UZGTZt^}-m~Zol!g-jL+ry9rDzOZ-pVj9 zGUvYWO|}4TfB$X`n}pqZ`#cpTP1tYx(}$xKHnnebCI(fbG*`H^)DE*7g_X2M>VZcg z53TPxoId=e_c6rdlCobyWjm3PL$WZ+p+euq^ix;JdTzu09}Xfo-mUkB-x@6kz%e4s zw2P{RfNIW}C1ko46s}K?NWC6XKDHF62sZrjw)6MbQzShw8V0)pW!}`ixXPy1ZtE~Ogv~yfbJc1f*t8x$AyUX1-_ixYiMUr=Gt+9bg zetBAilYBTY?GwAeXLk41II|#qbMn{KWRpt$!92ZIb z8~^ET8a7u39WgO+@YEd8tnPW|g;YZSVX?7C3;v3^$}8@bXWo5W7uYY|NTrR!&X#2d z8C*qC8$QC%|21(r&^^j*;cT0y+2q;w@b_mfKcFqryJ9sRZUFk1F3wZA@Bp5E@QAPv#URx~YO`w=A$21GM(Kbt z&*BOZQU?%9w`|(i+FD zOF%J--V6pWl-_WW%AmR9BxhiwF~w&%OX)1+L6V%;FSNY~&EQ+1!|2b+qA+D4u;8Zq zmap*i%phP!Q42glndr8u4}4hXoT5uCGzfoIBf_}(N*{mN4t@fC_3k|wx_7<9Q&JH* zXNls@TQ*yGMr%sund_J4FY-fP6JWcDz&0@r^Hv>DgK_GY608#ff6l(M8b(6~RaCJd z8*l-n7~)m)6Q$IkUSiYIqJ-P*n3J{MU_ebz#F@V7xxHmqImIm~ME76c2iGZ|k{Zf{ zf({1@Prue)$0X;~H_X*x$obG*CY8YQiJe^O%i&jdp4;uu)IIg*{nitKq8_>`M{aF{ zB51h2iP?) zo!Uk+m*kWP%#~eU!;jtngParU3?9{4A7zw?EmgUU@Fm_wjsz9Y$=##R~ zbqccsepczI%amUedvSuKA9npRgwYEBOR|+AzRE1pN8Qz-cpvNI97hjECoTTU&2}RA zFw3W^i`R?4Njz*)A^6wk2Hc!MRbJk*S6cYLsV|*}Sk>oLdzJ%ECaE8Jki(d}hLh$mQaKgx zr0@k9Q(kGeAw3KbPPs-w8{)`lJiL))SicYvWnEzYIRnD~;DpL@ETfT|kJjM%8*p16 z=GzP2&On7zNqrNht8i0QGptY=JhqPR&400KE9aNj^$k|5(OaQ>`L64-{tI$l1i!5g zqb~;|smvgTE>hvrXiJJ&)%<8$Y30XW4dcnnO2#XY8t09y<;$(s1g6mvP5d>SE?(KP0OARlkb1g@e)UK9KGdbI}M7r5keR?9!E$B*+K+g zYD46_z?X0ABs(RfOom(J7|}QfovLmmsc=GGZu@Wq2_)#;f3J*})4I5+ROTjIlZVrL zY2@r(gSV<&kK9X4)eX0c$~bh)FBx&JKE6>goz(Mvq<3kfC?I*I6*9Px%f~F@rLPeq zx!4Tmn%$MO=Tb70_h&~jb6ei%2-WPsxoD6y_b@5!;mO>yRB(pZ%9sWJ&>SnYm6 zy=JnN$8ZxErL@$3?>x;?ZypOJu2=v4#X00FWt0f`p0>!9nzPdY%E7T^w94Ql07Zw? zp-Zn*3Z8Dvw5H4zwPu#D6Mqyxt8;H1;|6U~rc#W(9{o0BbphHSj^Q@gD@kR-$u-i=~&e$#xMoeitsMagNp9eRk6Aw8!I=KB)UV{D7Joq)V{$MTEdnQB;qvgl-CH(dRztv8SKU{ev8mkZJ6?ZMi*#a)|YvU)hewZoTPq zo-Qnh2S^Ue1#c7(sNB&J9q#qYe&}#oHm%zAdU_Cp^`Gp&ZiV)1)r+K<7ly~rF*mEc zoUKJ(u1C#$hxQ{I7sD@zJR|k9YWG<{Lnq6L@NpIY6#J6AHL^-+*#JU}G>& z%MydK-2LvXN8L%yT30Iq=C zI^WuKaVFu>Nmk*VWa2AY8@E7Z1`t4@wDyna{3I^-Y1Bf6X?Rmu=pdH8=zp97IxddV zIcFXhlWf4PeQYq@XZ{pCM?b#N)a@~4yOL^0D7>;S0V-yip_7p=5lwVR+#PX| zp4e|$v3JZsIzDGiTPD9#JyP3rGu6XQK)$Jow-i1Ho|6~GqWHMebNAexSxSRVXWN@_eLhC0aO2T#s_?XHm22R zLJ`8IL@)8PCYEIe%CMtmh-sq1Z$p8F`-8kzujj{9@hAG2{8jG*E{!X;!xF?QjTx`| zcr?JY*XW_K)W;%K7ET$8(&V;`kPXA&C$H348*NI;`?vA`GDTD*`?XG)ySUfGhYY3) zM+IcGdw}PAV1q*Tdb^@%lv*VQ$r135*Ul-$x|@rSXZ)b|c<&`RcQev1>(x1gki-4UA+e=%-1kI} z{lXm13_JwI48>P8a65{?S%kBrax(q&n0WBJ!dCmZvtAPOfSYf?TvqddcX7G%B2PV> z!ZqTsNU;t~6kE}SDw%YC5iwHZK{Abr{>sahQ40mHhq8;s(ef3&aHZxDE--M4GD@9B z`d%TPX)(uzdPvS=NjM@m+@n$jmp8*{G)RW0e+Oi9hzNvzFKv^xR>Cd|eKTXVW*rf3 zKtfMquxTbY=wZtmOH{3I{X-P5WI5w8msIR7W?3pW7uio;mzu*FA{te2zA6MnGWrZL zGwTFH_hQS4Nns@?YZ|Km7%u{XlVG4EHA{Qy=3baF;gR@eJA2vT*#}p7mD}RCP+Ycr z&QFw<#Y6%IzW3yP$|Lug^&~<>f6mA!FK-_@u%DB|1}cJ*0LRX$vhD~m6ML*5$mTci z_XQT%;PB@e0fgtyyAg%B9qgy6Z{cNnQ00C0iHNgqXKWwe2HT>;VRFGs3bIjrXgWB+ zFQe!Mgmhx2_$uNaL4Dlov`8G%Eb@qResD`UsdKyNDA)-SgOj}giAgO#2Ie3`(9qvUfRnndT^QtGYU4*O3`7Dz z{=@l--Ye<<#vDRlF%6jy#J8QF=SZ`-;{;{ZHUO1Wr`!hGL^6fmX``xO6ZVBQ95LIM zj7?W?qwsQzD=Vw4KN!Im%gn9!(CMc?eAjw)T77)hBBB2YjxL&N@@%i=ArlEbT5e#9 zu#7&TR4`Ohg}@_DuWSQW{R*5+_;IK=e81O5b9SL!B^cH*-mT1YbyMSWnHL}u#tdTg zcgK)P&JBuOX?+HmGP2f2$YI&b)^eKY000022`~Tv6L3MA0uixR{{RgXMuHBU*ZGkH zY{!^_urh?J#)NAdGU7q=H?4WkW9RB&O6G6jUMoVWNKQ>gA_Y_a9jN}^-9HVLOs-ew zAn2wgs(N{dJOjF#s+j7MA3Td3+*p4wU{DP{)s;Mw5%|Af+u*tQCDcMj%hQdXtB@cH zm+C%A^QOZG)4#*SNFrRY=nJXwePtaLO2c;6X-<>nlyZWYbtbgU zeBF&4o~)cfiYd_yxtu76=O?xIb!tOR$oy!wBL<%jR zl?aZ>arPp83uo~*r&7t_Wa%(E-StQ@KZ!Rn_tQ)MbNN0Pxny+tZF6OXcl%P3C%k8f z&E-5Ue0C|;IQKU&bE{0Fjw+x?Emlr~Tr0pn93_olB;iT`FK`RH6iGpq90NM>(JR+uQ-XkhSSuB;0<%O^r8ZKB>3bfL{I0({v{y6oSeu*>$NhJB zm&P_0A$SEY{!o|M7!gGsIW{fLk)6BpIWG!Jxut@>@Ow0TIbz{A&vVG-jfI`j=($W& z2eV{`oSZCP-g171kwVb)?Vya9*mpN-C7*ioyNGatrd^A=j3AnxI;4DrL*)L_QCmOi z75mKXp#Kcn`2U`t8|ynb>+y6@;LN$XPDvpu62qe(MjE2~-&q$~BmjD#k|EtYqV|^U zsCoz|%RbF|Ki1y%3$eEQ1O+uvSUP4B*2#j>GnP<^XyqPIrhbI{>2q4@^el$ryy!wL zCo)G~N-<5z;h^m!zLcO4(5SI$I<`#Feh@cY`*RwC_Q0KYgO&HrL=(XiOe1(5@bvgZ z2QR+>MAY#M-)wlDT2r_u>U$F{7XpZL^1BFbvT6xG;l*F^-m42{=V;#2T%9S}ko&l3 z2wg*8WqhnRmh*tQ77w~CFe7S)0ph*5O85@44-4BYDqIF2llkz*l5jR-zo z$t%R!_{#Dz68jTPfWJM+q3GR^Rl)rE;bm%zl35H~67cBYa019u<&D?T+v;|yMBT(c z9BFxY)umqVoCah}#zus0uz&l}lU$AnZXc5iv+$oLd^s3F8pjXWl~b8Yp|=&87ZO6R zgOE3}hI!R`^c!LOLY({!6}~z1WUq2^6^k2F5btq!i<7`5YmB7jF(z@5dJ@gz4v%~5 zL_e9c7#WWCWZJw;#%99Bvf}S&an1Q+d5w)x%nj>6l%(W0o!O~+F9kP@hZdd^D^YJF zTiyCj@4P#x5C)@mZX_$rA(!xh7~2cKW8F`I7$FBkJsO6)0l!gH5-ua#_!(R4=KyD$ zf6|+{ef0kP<@v#|&iXWCs3CtdLRTw2@@_nO?Q#?nkg+9*xTMhWdY?r9yz6 zX#bPm9kI$VxmrFXf+%3fi1e($yz{aPip_@_~W$M;8)P|!e|`-rUece0&7wb?QGoBcJ_-ijwPK=v5kpAaR% zS&Do^^v5ESwh|-z=@3HlOy5Hd{abQA2y4##_xrOzR4}r+wCkv-vOQ`nw*}`m&#fRl zE#neAGsrh}xrGpSyG--u6dijiZT<{+6hdvTsGNbmLQzUQF!F>8TY}SRMl#`CU|H;) zGX=2XF{!xAR=08e(Ad;0*0G3O>hnvqCH1B%_mX3G=y5a+!v7iCFxJ(Ko1K#qTjUPq z`EdmP`NK%*{{N{HGP9@CZ;{=KU6S|(onLT<&Lps{srVHnopR&}8DEuO_ag=szfENH zt{$$SKvDMjB^s?@5ZfD1aw&|vRnXwWXou&Z7KdctwI7$fS^bRO+3o(^>8ppH*$yl| z=!C7ju9Dzo=7rh?t!)o`;y`Z%j|)4-&O%WYd>FMzS!##zAKs<=*wR~*MmJK=J9 zGoP!ON0P+{R8K>dw(W4dYZ&2=t)EAa8y!}EzZ*_Zt!bW>yo|WvF4%}@E z!6H`%uOVs=VOHmdE7VX3x2E3sePT;Z`>;V-4s3x`6PJSfj3}3es|I|Y?6Sr-qzB|C zhS>--Bx|$6W2^!aw;&CAu#Ko^r~Ym__ay2t^*qa*=w(Cp6uIvW<3}ZqO1X7cMk+p+ z`XC(Z#?>Ch80;IS+q)$Iz{J%9w~6C{nKKyH5=cfx9^>Hh7Rak%XzPty9+V%mBs?iR zv8Wk-1AE3&pEAu@%rCx-NO((TVd&|Y`n`Yrp;UM_Q zyp@MAY`nA;BmqCBBuUZ?-9SbbYmKUV&T>lSQW;5$JX!!$2J^g9GpL?yDy(j*ZurgdD00*Dm4t};OCka8l4MCz&1 zSkz2#^;Ad*`>|b>YWU`_E4K@l)JW}?bl=8N;MEuKXr>Ct3Vf-bubMWMH%^2d&s`K3 zzhA(1>Ek^PX9Q?rBU`P{4K7Wo_e!>+oxjzPqQD^j^#@Tk}+WQY(q3bD8bA)0O04TQ2xZ1PmjrbGPh_h08@l&Y!yw?Ba@OThKn;5s5$Fi+PTcgTr{upQ;0)#i2SB}1tWd!!66BmY2dJ!V-NlsWr zxdDh33=Sw^8U!f8S1%GOFEO!Skpc^(zemr|PId4Mr7%RnbLs(&s2(|}HOEY>bVEU+ z0f5zNuSmsftVAO>D8B4dg#xEy)MeMh#L$$->?ZtL&pJ^qkZaCOs80>r5#NCGslKHh zy#{z{#-Og>-_QuUXDP_S*lC5Ra^TMdKu0H)a3|G1F>nVE8VK=C%Rul8{A&7QIvk#? zhr%;7Zg2=5NQ)&=x!v4@EL7mGbC>-92>8KP$=x4Av{cYekRd064ae@5;O!m0kq9I* zmJNaE`GowzJ!DTV#XuBLm4rTG)-*Qlr|;VVHI9EbkrbHWRut}WgtF*qfo>^oN>dbm z?+&2=d-5-wc^zaV|Ab=y+e)egWXd}xc1EZ z;Y}#qzOK43U{9klXiMCp|DhlgUjVrh__kJ!G(WeHC3)KnnaJ2MVVZzj*=1^oRvU8l z0Q7*Hsnisu04-ShVsJEM+Sr-Z@P$Ngn3=vtCtB$eV7-R@0@TfE!3yBpjdLN`W7N~_ z6Y19wRNCclicG+520r6a9?tNEVj_WY+M?J0xncwnDXkgt1g;&TTH;Q4?Zr65M@wb# z@f1!c!yFSG)DwtlunO{|^kha?X9o6W;*BpEad4F2RJ(^khZ-A!Oe~cz5$ctn`mg+g z=$D(aw zjP@EL0ywH`JKC(w1i}xMZlwUhtPU`o2?~Ipyy^tk5{(cYP<|}E)OIyPn{K<#nW5nx z9iM%e$O`Q^M8Wj6OL@P6!vzHqb+sW>#~c$v?E^&W6_|+#-jQ3}?Nz@Y|1{yg!&^^~ zQwAL@3Gm06WW>>pK?>n)uTBq06`>59yeAi_WScBfE4~_M*kr$Z;2L1{uh9!NbKDYBGQ?e%eJ5KYauyoHLuaIrc0spU=;8j z2GPy~32_J}}Y0w23!IV&=^CRdY(IM|G^4#`=j>vhHI&=Zx?!=?D=) z;ZdB|GaZg8L@qt@F#bu={&NKvK^L7fuYS>EC1*3?$b3PUeS22q+g$)Eslr1z4zsn52?ud8jA1Ugs9&d6zmY;8z8_|yge(}g52!|`etY(7?lg8 z3fi@5D{TgF38P~Jn}-xZ=FP%L?-Xs?sn)-tGFEe>T?g7M_U8S@s2EennU);sn+qW# zG|0p|%M&NK{}8*cmK{yG%{O4H9yBq*f_9FalM}u8hlO@R1>}o?8cHbF^g>qHE5cyx z1(#ILS2w`Aq~I;{iXLl3YR|y|5gk=ZNTTRdFtnt@GdJwQ5UTye)?vasr}a_9n?XNS z`Z)*ttC%9VQ|K3-5*#LLuIbbdqW)&Tpc}Tjzxbh%z`Tpl!|D!1MMbaV2H%0$cO=^Y zpU~mlO`5F<16e*|f~VNIBpB*qyaIf*9EoPs(fs-eKA>fWHbYrSvmzODdwQw`kjp?Q z%nVwju>O#j+uRN1llO^$6bf867TfV;j9J~vc%74F?W_%Ri#NYAU7T{vSi{ToQmOlY$^P#qQ**~hqR8%BL zhg{TT&t3e-kOqG>*%I4APP0v@>Qr4?FH=1zSoT_bQ4X{3JST|DfR*WtX4M|1$BhW5 zlSPz$Abt~~B0MJmsoxiSCk93qxgt*x&D9FsGfaQ3j}fZ|O$g5i$>ldjzv2LmkhDiT zm4dXwt{HN&U+<>F{AnLpcZd=cuL{w&Ko!fp%3D$5A($I|)J>~V>{sFKxtI!>?+Ge z?C#`gst;OF)aWCC$#fWYFX_#*pCuxqB3yH}Hi<4#K25v8NL?PXBb>>z1KH%3ImTT- zFD+x!xL$Sy=McN&U?s^MNHWeSCqKutX}NlFyWnvLt%j0wxU;2vAI)qUO2DY7AnYSm zA2r$Q1ZPz0%Ek8ISOBJVgh@~6z$RFuHCjwaThBKM#%rh!M^3L8UH03}6y1!irg&<8 znC@nu+t?!exo`oH(N+XU29jY&N`%^=jACkexHhBeH|YK3QSm&nGh=S;YxasRxW)(Z zet3BWnwM1HniwW^kN2?m@zqnf0I)c&zjrc#i-e`vJ70oDi=3k1000022~Yq40$c%} z1PRd*ZwU9Mt=d5V{47jM)vVm}gZa;CM9Bz!C*>1djUoV87ZFM4`dUN0suWf9Lr(XR zN`n!kgzsB~G@idv@yR%N*svaAZ72Gazf^|_R^-`wuh_*dokJ$(#%(!bvN32?HIn{< zkNi_NGy=H?DiYMe03Z_G{Y@8T=nYJXg=pt{swrdtxt6`1tI*=C|IL){{ZyguY@$M! z;9aLsdMB@tZZzv>_dS}&nswV<`x6po7)&KPInNq<_uTZ{ME={le#%m$USSy2&&Knu z5Qx3O%0q(r-z$%e`UXXq7XpyjGe(xJ4D7&BpG&` zFK`I1_Y98iYFAhGvm3z9Bh&SU7sNTleOkJ@Q+!NPkJ#RURHiq5Iei+`l3J!yJ9ta= zf0l@@S*WE}ztvLJ^D{_*d;hqD zV*;=lKcxXHwzoJ!pq6LZO*aah4#Sl~BToFnJCD+&G|)&MZ%vY~wQggRRf?pgI(*}f zRf+Vp;0UMMA#2Xg5q<+eCVH2E%u$KelBk7~e7g&(Ecy6WDdZw%BCyl)5(_OI*~ada zE;i+AzjK9I)MnNR%H?7&GO!cKV*SV?OkZscMK`3a&E^Rm9|R(C(f>$v@P?bh2|hU3 zDnBOC9_eMCjUO044pymmt3?pxSP4?%8rVO(XHE+7B^00Ie60007f0iFa6(GhP5*UGAT zG8C^9k)y;67%T@eZ79g1o7M7&dL-%pYp{azwG5WIRHe?0EJ@^ZhgT8<2Ga3zijR1d z8M_WG{cmK@%FWX{D~`$R;PulP9*M@<0zQJkp@=!-{6px#lMP zrf2D5bMIjTUBj`DuIyKCxqA_Bh+uDJ$wU}++LfUHb^`XTtu+U^;|KzEyS<2`9hl`P z1DF+xhKWV)URIe&vEhCYsi~Gp`WI92ti1+0^=!z?>mtp9iTz36JWb-L;w5;V+$>$) zTrY?J^c;0%UjL4+Z?j3m@2MIeYF?z!Q}(FoIJ6e+0GU8$zmMi@E9Ohz$7fjfOIz7+ z002L8NJH`sZC3`NGzL*W*)Oi@owpi>URt;B0R?gFhRT}yiec}fxwWJb32-CQm{w12 zw{w_y_cTePVb4(&qgCe^65F?lWtqLQ(Z2B9hGFwHabHy1Y z(dXkbP~6}jQQ74%Jpv6mQr9E^wq){#ffR0Rm_*MrWg#NQ4hjxMkgRF!&l@~}*!C`% ztC0ODlA{B3V0`8j2BpN>Hl;ZtVqPaoBC4#m}M8O zF)84jZ@{!-B~&DoIUdD!1&_WUlf9a-9M_8WNb^FAXemTP$m)9W;(ufr2tRU~#fisL z^ioBapZPG)_MV`j;LNZIt3e65n%#6j#f}WRgmynY)03imwpzp+PH&o){*I zz|CJ~VF$E4Y^Mg>5;N>~k6yRSz%A^m_I}1|^%@jtS95DQ-zq7{3u$2S-?x z(Tsv-m)Wpx_>07C%y?^itUb3zzTCRczz*H8}a!^C?egk-OAR7v< z(dD4gs%_<2NRsa)WZ7bYVe_o(JEvp-WltR?dn4sjc5FHt+-}+_(d2$aySnmObrQ)A z_QLJS$mNaBFfpd>)>&q$@=rjvNW3`aD!(O50Gk(hnr{9E{k9;N0~|OwwZA^#@>~1ZTCEi9n+;v|>bX=^$v}P0lF2xmeO4MVFv8Jt5XX3}XR022u zY^(9Q2mn`YW{9Q%jdhCWVp9J(0{@y~!^ApU8pl)q(=0PSau;#)V&LD&Y`2J}@ucY9 z0b6SSVXuSCoWu$oFp0Coorqie8kuP*O+}R0axsuc7KKfephvo(|3>3J^#qaei-(rW zvCAqUm$9rkc}(R;&juVOO{=XeA+^9o75BD}_M zLXcnbKR_p4ci`HY)xS^UhsE$A+_M(@2Kuq+=sz~=LzEikngEgR-Z&!l*52>L)oqv= zY0!+`Tn_+_VwdHf`+r!{#?k-A70bSN8~XD+Mc zvjrALv5H)fb0I{21scdtevUHI}^P6cMMrFJjiZw;LlyH%h2L z>RGQr%ev^>OWO;JtXjUoj1zV|xlM9eaHNw zH0U@-wqoA|YDWk>zMWWgoK@?tl+&r)WC6f8ZFjD$h-2kEKZi~l9I+9yRs&=Xv01Cf z=th-yfbCN#*m9+lRbhWu{oNmo#2BPLQ zzycsend=ePebe2-9V%!%BK1A+_IyMe#`Y)>s?V6OSAU*|qcG%*EWu>Grb_ht%e zzt=2s5B8){6F5dnq?OIuQiys*Pn#a24rs=&I2P|Tsb=I40_k~3Y-bM_-2Q|yL#(z@qCvcD@op+6?q zZR-H)0}_D<52lH4a01!=5d)#Aw9i*fmQJ7Zt;{F>m#nv2UB?Ys0_Usmp0-i9yYYau z$249+D3Aj3%3WDX$LobLXad^>+c6>tI*Qht9sXlYP{)ds+4*7mj+u4M@1HCf_kZJ)j(aM91b13`!6#E^n+@)7#v z)Fto*ELn^f(UD2-tdU^3#x6tn*XkS5nQ%SE3$03Hs}w%E=TM6JK*)|lN7)8~2#fN; zQ_2*gsdWyMAcQ0p*X>>nBU>ad&dKY^Pt{wMEr^3xtx@L`Q}yAg816>FK{0z1*kh6g zHWL?(>|n(*4q*7yA*OylJni@nUdw(R&YoJFG{W0VkN0uekRKblHsn`k1i&M@OJrGi z27_AVyt*9z24B;ZHjF0J|BlWc_A4gf&Hn@4?r>)@-f~Br$^H~z&~!o*>b;g9XmBP0 z#qw$a-$l5QYGxZUC`G(kub^S)J*u^VMI*gvbJ{yY?+&n4QFwZh4I9eQ%7n!}yu0VJ zGHkW%fW!`>F+pgM2(V(e@{)%EA6cIpF$isRvh zr4pt~EjEh%=1Dx$N6Q#UDm^ail=o-y)W##^JJRQgf-7PzLshLE-xkV|D^*H5wS-W3 zY=V{3dhALgD7wpDIJ${?!P^b)c*jMx2ZMC@M-XAb#Ga89KPskqgNInG7MK47!6(EE z)=B|{UcSP?Y**7(siy>u+U7efMV07!L`~sAu~7_J0@tXi93q4QHPIeghalKo!f8HO zs7zeKDZgr5i3UV!y-4Bz0XJrHvVf-rePGxQ4=P;@-&#zbcm>AuBDT-ssg~;0*bFz3 zE%)HAIEz_#j{^<7uiDPyxppltxpd0nd|}d$zyo8)ux{+YheY*uZ67iYXwV@KL=XD7 zp9f?M)<<4?(*8P8@DA|KPv4lm#>o1p&_3VfSpmS}8>fCAr(&csA3MPv$+KzEo>2a| zS&E3Ho`_hkYK8eC+Yt5D-~k5NPS}b8HRPBX?aDfUSEE<_SWkUzRXrs^gsre%)(1dU^dp5d50v`to5jIS%7FoS(xz;|C4}UQvQ(XlK+y{sILkZ9KRP8u={d z8*Me{B)SK)kjZYZP8=vBYQD?tjtrX{pIemoA#UPd#1WxmV_f4A0RF-Pi)J{bpt@Xi zS}n>!goiUq&nx4M;fK6W#ZVAXFbouQ7CwXdrQXC{#wKw9x0`T;`Fa6Bs8OD4gN^ae zIT5$EtfeW=dyh^z;H91$rc1WI4ONvLG1A4^=F--`gObA+@S(_LML(!MUO(<Z!sL$PtIa8jJebKK3krBqair5SOqbGxh(cKvemKnvT!DKi>C1}N#~14 zMGik9Bkppb13jo!pVyRf!G4qS)QI|r=>fangz7ox>?wetn%QV5B?mfrkhixivz}$< z(Wn-Se&3(rYxKK4G3i2Ip)2a#rX4*Cwm*1>roT4Dli=t9%)5G!J~0!52}-}LAeZBR zlK9No4?Q!^x>B1TYbc`=2Ps2gI+02wDBmhj1dl7}7jzJxsq=hIpOK~}Dl2y5$uj}qd;oVbXAwC_xO?6wc5u~ichesN$oU`KB^GqRSWQMzR;0#g|7(EfP3$TcnrN5iRtr?cDa2P=;XC}dRn z0YH1fkuAOOZc(#b35&^T)AhIzc}reMN<~g#AF)h~yMERZ1G1+|QL?v)9%4dKTpxo! zg5ExOsNq7QP38IjT^#1-00pjCa_oY^nRd<60~ascEep+{60WB zn zoVY;ts~E&E<--j~<14pKnU2$oT_KGk(2iooYwdYJsIcqoCB0>pUKV=k%KFu=hA<_kB%I-rgK{{Lvr!COW?p*9$A&XWkH3^>;<_cnSnIGL!$$#D-6#tvi2GEEFAuyDy(PDc8G z2B6hL5xJ-~X=J9W_Ymg(PwCqtk;{6%Z!>-8VLhb)Cz-QbcI8KecHJe71{+;v0GIl{ zh_{J{?hZxU)ImUop8t^2soV;FXM#oe8-nF()5gCF>t}jLVzgei--_z9c_!WFeO4Av z9YkCw#*nb*Y#ycfa}%o0dmD4+zD0o%JZ5nP@VB&wSIy|MDpR#Y<~w8N=dgpP>UsSB zwb?`KU$kn+HaKWuqwA!CP|RvyP@77(gJM-B(HUc_7G({X9*}Z^=3s_Mo0q`3q0@xU z0VtBIvGIyEbA}Yud_H^{uNtB)H^345m|U@_>geX#66@fOvQl>r&x_m3eYQ%YTD;YJ zK}UWx&_)UrmN(G5V4ox*yfubS(43sIwO{OG0X_B`hi$gkSF0>0c7IFmb4SN-Fhp!-$tYd}9evt>;FBwT7h!{$nX&>^1|F1rC6kZXv#!dW zZB03|@S)Fu7Yi!K_a>COoK!%(pDNlW8)@}eT2!xH0|lVLze4h@O@f}KUE*y3EL)?y zXzyq~n>YFkRspC3)vc7MmQ4$@t{D>Z2cVPyMJxi2As_+2Cz!;A0zTLZOCdY$ncz9dH{-Ztj z?^9_><;m}G3uGjM(jo}(wL|fHnj)~xor#u6&zqTFNyg;IO&JoJ+EI6VJ6j4B7V51j z#T;B!19dLkR{3cV4>JzIxeY!?R*aXUI+ous$&2RV5e>1NYLf`Ik)En8UdhQ4Y1AXd z@tZNJT`JoO#X1#78SC$bh-bs#&Yg%ZU9E6Js8Aj?9Y33^`&gjIo^Hn29Q=I+lF}U$ zKrWlklmYhEaI1C%lOFUxD_m*|5dwFQesr`#xaX#D3e)%ZM<}FhtR+{Z>N}5>5hvLF50?^Ri5;IFSdiRzAgO$N=;l=kyQyZ#j&?~t3@3NM>Mar& za}duIP*Pb**VvwGiHGWBnDK#*Kp2GZ743>uULj>6v%EfrsSY0lo6o{;B5*(g!X{`E zDV1OMEv$f1Wb#!YK2jW^eq|yRG3f5}<_HH)TZ=0ZHOuO)>#glo{AAcbXxWRw#kecA zNxIguRV8*yGb^oeZ)|;bW88@g%Pr$=Gq7UgU)f!39XxUyEoL~uI)RzCa*8npW^R}* zS4#3+{ad@dS#DhkUu^qU}o{ypxSNJdCtct+KA6 ztviL|irt|*(=2VvH(R*|1G@6yeCYEp$#jyn91M;5AbjhN@7sj(SMLKL6(xT?6HqJi70E&J0JmIv!Am-)?3iW%m!Mva%{z!D*Bp_v4CmF z6ctKSX6mL|tkT3U&r<|?=<$av!9HBS&t}f#Z8D1&>?krqWI(=3xlc4QZ8lO5%&-+t zaET$HUQxR-zQe)1oI1S{!-fssQURQe<@zkYS4iyw(`uJPF4AW?x$l->H37xv8TgaL zC1E))=}}^N9^G8lG;zfGylm!=h{m6Lkov2 zc|Cg1%H0zps4C8FJB&)t=5Ne52U>?~D#mqkNtOnCdYN%V;aM5gkkHX??Kp|gxh8~t zJ1T+1auvB{Czzw?;OTPa_oRqE(tbSB$&|(K6oTi&23f=EqtSltB;Y?;K2~R^h@Y}$ z$PcgPpf1R6wXN>iE4M>yc%d!r>>hwrU@{rviI_NSuJ20-LWKj9(nR&x*2ytX+Zrr; zbjCtDyGnwc?e)+Gmkkv%-)UQ9K8p8CFa@C9eex8eM{(I%(1_oC(TE@>*G+SlFWF{v ze=n1{*)S`eEGr`+iqZD{CwX=?OH{cjwy;PIIv6?6_Pc)+1Iz)(lSQoqmN`#~F$ja^Ew)~v6eGE(=oN+>@GGR3Z zrARf`MIk}Ra)ZM;7B3gGfM2qH`u|BeFB32cA0H!fbQFk5G^N0qyAkYuZ--_k@ugJn zn<$ZGq^!1APXtGlhQ7Nw=d5EO=hVa|aa23JGHihIa z5SfUQvSM%UPga7-L&|baHlPh<_`OlTPy-eK0006BPyhe{-2t8k6{bX62PgzEdlp?*FFoC|~04prn@ zUuzQWXS(Cl`#vwr6~1VEUQKlKS;Y>;@dd}-Mx1jNq77Pd`;|yN(74GWsw!UTdr991 zf;DcdN}{Huc`U`)?UW4fQVT-rMdR)f_TXZtyddcRZmD7v6JyN=%hRCZEUU#Y4;4tw zO4W&4ME>2rTdWO)imfy7&g>>sFTz>cbczXRf+Z?2d8_qR%OgF6SD}1diVkq}K?dmF zglJfx@HYJwga~)SX$9u)tN08DK(P+9h)kS+3p2Z=B&QdBvf(MDqzK2e2n2Utk>3&g zhsplSJ|*5gs1*VuLTbCnX>WfzOqO|wn$23QpQi6;Gi#2kw?ojx;`XhKYI9oS~3WuZeMvJ=uB@Cde-e9&89o0zLo$00Ie6 z0004>0iFgKrbJr^r@|26vsQ8qPW#vbAvtPa?P*{2OqhvQN}HU+3+> z8*IvPzfq}6{KV4$rTz7*AO~t#0@WTZk4}fvD7sS{!&>!mLNyrifanJ`V!SRA^mm&m z`M&A#wZ7F1H^0^u)46}!U^~wfy99N7ov;}2uF5$FHs_6JewmtMgw*_1SUbca{g0Ys zXmuPkq@F#ZlV+VA6fEt&@eW)mkYqo(N%rz)KiGTF+3S$NvnD28Ccaj1ojg-%>v{AmI9(a zz*q(6c)CxL8@609d5(GQrs=(s?b3|Dav#TWB0Z-}%GQj;^zR!e&eqP#&2X?jj)ZDe zKFD?-ORFd+cVGV`nRq{U+*6%IoLAdg>j*BCFjkHt zI_gdJ8P65hwARUD1{}(zxE8lTs}8CQY*OiDZ0S@}UpL{8#^&T2`AyCA+$TZ(6ScpA zM>zq{&V`1pFm+!Jc9mXvid$bia6~MvOzeX^@D(UY!)w2NNYoM2cDDl6LY%6xb%~Nn z>&e2tO^d-BOoYfWo#p^kR&pSUW&u<{0JAMD)c_q0#zXdY_2IJYpTSu`OR~Pliof8T zv!MJI7*5hxHfc!!(&B_AD$qa<8>6F=%{UWEt`{g>YMH}GD5a34fC#Eusx6N$sH;YU zm^gZCqrH=_1^$go;B_Y~KfAPL%5S9298FufY~qmq?ONQ>w4QEmPH)9wv>LS&ggEtW zUfZs}4we}xQ!Ky(l_44w?U|INLy*NFOuV|dD%qe#fY2oa6KUpVX3s|AITMz;G8_2n z-TJ~f)DFO4#N@nX7vTqq$&R2qsd>4aR3jL5%Ic%v!Dlh<{{!jlTm05qzIkQD*ygb} zR4?OP^_vw`@04cTwexV8WzYRpb#{cL;tEmi3t;|BN_m{{SFrSVouh0#?4!N`V#1{$ z#whGAaz_laJ{Dt?P+^jA1w~{jiXbF~skV*Up$it8vcQW+$NW*srPMHEv7*nHg+6x* zxQNVQ%Qb?o4R};$VIm;QC@j%D}tF%X$npj$e|JSACp+|^>xqQ>Ni%#YE8VqB?_QOV`i;QfOQ!n2g7`Xi@A|r(nzbHmOB*6rwe;^UTv^2 z;)sS%)>d>%(%>sB8BmBKh`?Y1r~=mop{NnwN}EQcMewNdxBfQ;4iIvZYh=_9V&Meh zO?~!`jMf{fzg#M&YQ?j66~;eAW}s=6n-YR-tuf|+5weg3);Ssu0%tYVwh|PWs-r?{ zPltW1^SNY~A|ihL*s)&R{=nufy-EL*C%F3^CIbL$Z%crPM?gO@%Zs(Xw+dB!<9N~7ua=;)a(a$2 zBA&3MNl_3C3{ho7X%e|Fb77gSK^i(@g?dn2xmy*VNG!VZJaqYHS&{&~e1+q*^K)UC zPzG~M(~~j$V(WH8pFSlnC>p*s(X$?g?cPzAbGM?tpN}f1v55yE8c(1A0007V%+*2? zKp;Ue8Zub{2sBX1gd=oP#4dU9E;amD-(+r>>h*8eZT=kUJ7hm0);KyxVg%(9%i5F0 z*z>+O_t^fJ@Ms&vBI7g-9k*DrPM3z8?X{0cNX!@ZX|}h8zV&vp{lW?r4TecV%J`T>E|m>YhlNPRNniN&NfB|t4`6|mB+Y8OEFEtCScBdGNO zB3D2XaMQo2@YH4p0n`bVSgPf0;X;5ErAz>n{qDRP!Gk{+ZM4kI%HbQBsbw(Tmi_fUrQyp^nnUemj4SGW}v zE&2V>o!@n@`*FL>4S_p!66LP|M|&6M=cUvvDwc|QZb?-xz`yH*?UM}GwpH(YfO8=l zRP~vVj}`+!k-19I1ZYCQxXz)+Jy0N+*DI&8ILpv_!?mJ&leWu`sE>V5x#sXd)jL@A zRa31-d<{;YNZn0RM-^g!2d~lwFPq{rlF0!)(g4-lIy3W0zr21bM{2rt0N$ftHd(dv zojx5H<*5@X#?q$=f9Q9Ij?%01`Gq>W>yIu~iq9P7hV)*&xoEj3KI|AFGO<^d9@Nh@ zaMPs;_G6)_wt!0jtgv*5mJXNV z=`&;$I8cF29WAragfk@tzSB}3pO$gkOCoAsp*uFZq1$0xuDkiDjAu1H@ znVyIuiGim#BFI%*Rf53)#AvE@f_|m7yc4;8CyTtJmC@_KhFVv#czsHh@=!M0FJ}5e zLdvV;Yc1D~o7rSYU<4{e1r=AiLXds#Vx*h*Ht}`!u44{^$ZXoWUz7NGZ-1mZ+IOe} z*m_m0SvY)HE<_2}9lw2UD6mk~M8`&|K|K@a~>Yzc_pqx_SbK7DXpz`Y( zMn^_r6M!KHfRc;FP9OyouQ=QA4w|ryH5FP(z&IvjB_iEeN~F*iI_XPEPXj@|xA&5S zQK;2EGDz+<@54!v>Snjg9U|zS#djwj3EI*=7E{5aerfiCRvaNr*-F`lkY$)j2HHqE z%yKPq%HX$Q14kfP=jE=v9$xD}s-PW6$@itZh0&blz-Zx~McB(bPZCK&LE*pi)bJqj zWXR}`T^w_1!n5PNR06Nkh|+v*j&;(Gt|g-!(11js53S6pASG9~aeOm?qM*js)S9Fg z%cO+O4EHw8Sn@#=wycdx}!%F1Xn2obZAh1-L5)=xPQb6r8 zN(~+70{nb)khYD1XJeuQq-1eZsZV5STyM6KTiP+hKsTsUNR7968E~GF`!W?6A6b1u zYPo&vOgkRJr{qk7x#`szwQ;KkNxmK!9z?q-nz7LnsMQFwoEZXGs??VhR9yH_ue4sm zNQzCk9ZT@?iw3s7p(!03!V*77+Yr_CI3n)taSHZn(YAler7_3iAxzmyT4xcE8%>dk zw9zOUjfE%LS}RE8qS5g8tOmWc`C(Af1yumY9=FR{|M^d<_Wu&=npFMuOH!#%vQeeG zsY?z%kT@}W&j@pC5N8sgiWh8PrWVoLQM_V=Q;9K8AuoCtj|RD9v^GdYZ#ps_c7ff> z-S^Hsbed;4s07OI19OZL<(VtiG2bIU+}RcJeN)<|ecm|KYU2(qN~N3K61hyuc??!@ zw4QUOh;4A{^r0J(9n@QRFnA3^L&o#J2&9OMP z9^)x^6 zp3SS3JAZfhUw!qjbM_hh$Dy(qJBgzfgP|p35o)&O3GkIKbB9M@`X~nWtQWP7}vWE74UFLc|`LY;V<1K zYEZM7!72cDRZ;JfHmGea;i4ou;F%9qGQRaI(v>>W)a5?9c=wO>5iJ$tk=VCfrM-_; z-t`A2h*nrR5Cnr0BET!k=~uIADMIiTL=s z>mwlPV}$E|I6&j=zWAyExr)SEvz*UD7EcuRSMk$-B6PxIFtKCPHkRJ6ycUGvAY$94 zbm_2}v4t*NZjC$>)}+xa&Eb?>l{RqI&k=(}3E+cOGrfv-9p1qt!_`Semr)|B)uWr| zEl@TdqpkUUSgxsEAsSDB00002UdskVu@Ry{+ew+3D)C@ZY_MJ|xJL3(4PC)xoSuR} zzeK=;Xiqoh`-$wfUS!H)J>)5=g=t+i>E7CPvfY}z@9@k#pwzoN7gHKtX;^j0H@zeAjXQFC5#Ch_V|ZEs4!tV>X8X2+-r1 zFkd+<7C;1v!TCEF3jG@aH(@DjikcnVlv>Y5*TU>N6qzMr|AW!>Uc(ukW7jX9N+GQ@ zZEx|}bBF?F*26_HkmN83H^Io*fQSGV0B9i*@QSX?6&mwmr61D*EVf%{DQu7;^U+uJ zqD=C}ZI*$Onmx_^rKQCXd(+{k!WlntbqpzkWPYmSQuG@?#I zVE5#)KVeXaL})OAcAGP@&e1S}7!oj<140J#Rs)4FoiI)iKBH~N4(rBev5Z!?@KE5t z(fEljwJ>{D@vINfrL4|Z!0BdLn%A?3En@K_73|1o)24L{drV8Luiw(7fk^iu8dTk_ zAVd{5xT>P9Ko*23wt;blNCouP@07th#q55mj%3laI72wHT*%W;Xa=$cwkuKpJWnbV z@qN<({)q2$XIGanRM5}3E&HhL1=3QKF<0ZI+@x1Tg>NwWHsNXuaa_Ls zlq6kJOb!0^)Sf&2dTxO>(`EBXtyXR4d9Qjm)ijl6r%`R7&B`T1{dDmV-;n2X3%`a6Gw_oR}Q`?QB!Q&K&GIxk5tEi{~cMcBGsqbqtQI{Iyrta}601S!zO zA(7e6=m0QD00rFgxz-QOWE62!B^mBlF1)9Dbt7ICBVJ31@!CUfV%7ammXGNR(`x79 zu^E26cuVE`e@wuc0a{ro@i23AWg|2MC2FjyFGb3t{6GLa1j;eGga7tJ1!|`ft^YNF z*%8ptmv$7)rK&=jxkY=C1tnB46$q&vK_+>~67IX6hcB~a;wWHqBs4(Ydltm+SX2R17mi7ZkHn+*?E!AaO86VOTpGRxi0Is=KTI^6U;ie5ia%Zu`WIXa>wanuM zr7j$e@}@LeWiwT250rSy^sscH(`G-{kKOVB=^+|a^{SA`LNQQ+5F}JkIcOKSl28T8 zr1Ag*^t?aCX1ND-lY-k6yt~cW?*~+a4%1NgGq^y6+8A57_ju(NL_>nWG0|rx>pJ~% zs{5Ga&9`>ZRwTwE^V@_X3w(tMGITaX!QJXjnT1#adX)10I*kVs^FET+X^1f_q zSq^L#2%}BM5+x|I90D`aj7UZV1a_EEX8UY`bAY8RsotfF?h8!e`OV)Gns9(s>w^91 zo$pdlfNWEY)|G8=OliDS^BLsw0XPDovP6M!vkC&`Qh5LY_!dqiGr_Yhzi&Ke1KspG zoFY&O;0RRCl{IGZ_aPcp9g>#UA*^qpN+8mrR7`{bO8|^AVF(m7KxO}!5r>}SIFgvR*3FPexPFx_-7PTdxT(w&rzsHU~RkLc;506UdQHil~_F1Og+qkwIBp zfT)Hv2snhempO>0x)s{l)REmR5x6P6%+O3Gb8l^Im^DF0s7g{m)>l8Bu7w^19yk;%?l29O0a` zyH@|sc;bzoC{X>PjmHlP+K^Z6UwuwcR-Lq03KFoMYuVKHG!)xyWVs?IoG24>76M?I zN|s`1w-$RSW)`>A?13wK10a$VmW@(2C-BX6-Q2e_@nPNp)D$x=N5o;aZ^hLb+%UPJQ!Jl{^-^8n~7vdi|)Rnm1j*2%g<(N*Pyfujhmm z4)9on8~^~h4v+x+27E62aNBcg*4sG%D#GX)KOq`b4b_JPVWAjAFbhgpZ&h_H44}1z zFNLv8-ovNXS@`1a*QV&wjfTi%@TBsLz`eYu-1i`AT!p51*VliQhNS31CwLN?N!T+o%N zP4U_aeO$~T2q$!)Nbg-+2ABzJ5cuyWv7E4&vVtdt6&$Vpbpq#93g+0BjG3xVW{i8N z=xAq~A>EcTFwEuX?adjR*kj&GKKu4)Tvc zumT8zU<9!Rw#RS)Kmb5*_7UVWC(k zkP!p|07EDUQ6P}7WyoZJL3pw+eo69lMWj+@Jh1t*23Zgfvf^Kuz&v8|mB|koOv#PU z8{DnBJLzN`&lGk*-S%UJ&#+a{TGe>YK9e|>$IJn6so+}*PM0Ay!7`8svL6~3MG*b%v~i2ja9t6Ws$4(`g|qI4>$BvQNE z&vv8>SQ@gWIjJCwTN>&aG*=+B5u7b5E-O9Tm!0NIC3U|XQ7uSPg)=Fox{B5$q1xRQ zi*6h&>*KowXk==~y7b!>XzohqqU^nU3k@Gx<+v#4f<%Zj?k`*+a890fBIpzBe3Wj0 zQ&k#_Kn)GV)SmjUl_yEdvBD@K6bF~tZWG{J(W|?v>*`LImUUHkAsSEr|L?#8ip@!4 zAjD`A7_b0UKo-D61>TF0OD5e>--Kl=0TDDXiC9JpdArVuF&45KYt~f;$P_UQ#uQ~+ z(ehC88|Ohvh5=dCrI5sub!y}M=zD)}{hw^2>NA>&RT2N5mPfc!Fk4+|;Ws6yw7+1| zU#YOPyUo<6i4Wzeq1{Ggtgi@9Ei|l_%>Klsgdh~<2q!^)YJJw@3xdd5v0Dw4(t&zc zmRTSHN~;7R1jxX$#el;Q6{=i%yLi7kw_p-!_}^U5BeW3 zuiD4VmaD+TxvV*oo4~j%#%D7bm6j_i(<;5GFpsB(f~rD^-QC}(00002 z2~Yq40j>d_1|6nETM0L)K>3n49=rLhje`Hotn+>!pmey{W)6V2dPl8WDf8rHzoZAC zA~bjKyZ(`A)7Ou$#Xf{{1ooJ=9lhsB+G{GWuezo#X}dx0wKAoXq>=uUg5h>={qMJ{pVWE=ONSn zT_L~YxB6cJ*c2-b%uMhWDcJv4l#>zf=6h81#8@t~D7YO$#F8dvNxIfW%zlK!6JFnh zPp97#G4#0rOubemoh*d%I7^BFYb%FvUHDDt8}v!@FCDdF^e5H~cE#X894~Qnd&gF% zg!Fw&%0-5`JEM5riS(3+S`I&nhA(6Ab4qUnoL4&=>tywC<-zW7zx|{o4nW$Xm06Q5 zcoL zIG`bb;;-Wg{L~Ag^1H6iJh`)~tn*X<+INnk=tJ*_=Y`v^s(Gy|@*b|h*XM%x2Eq8i zYe}0w!h6d%hC`iekZcM#2dk=cPucHX{v5qUS&)Y^5KCtfzx=;^U^$|W4@5{l7N`IwC)$82bb6;{#(kR^k({)>g0}~JtaTacLQKKArkK$XUL`xHdD@z zSM;p5^IJF>KgcW;)zIpT^u+4nbgBa0KlpCTaWRh> zb0DcQi5b{dlGai2fTnI}iem1Nb(f6^cLEJZ{+u^#_QydmdWQe@Se-h{Vz*3;(Zw6_ z6TSLVO1P>=KZguG1R*J#H`f8)O5w8g7egpiiX>hp zn{neSL(5v$`vMfET2u8OgQ9IRY7Z}=d5zUT~a#1$e1~9B}bGD z#}zKr(4LI3+4&mMnnGV*F;Mdr($pKn3C0Z3nIQbhK)7Q^_8BQo!Ja}N%hk{l_Rfh@ z>xefkE#qI2spIWS`gooDqVTZ1bjMyKB$~sbYLsgy4li*Zhp=tu zzMPVVkLQ7NohNa+*{f#{^Pr5a*(xyrN<-%zah7lhSPUsXchSEJ3XnJZ7#Mw>4a#AO z2f9@SgX@cuFV?=Wiw@0O&yos@Sr08N!cH;oxY0Zjh9RhPX^1GRW4r#@-oj#Ztmmge z){0%lD3{jM@e(;ULTRaw9t9vr82oVoX=k*>9>ciVD^+x;sUnuKuZ?M;oMa6l<-kH7 zCBv-Y;QBY#^8I5FpSg{Tb&$|f z1yh`ziC#d)j7ef4(l^$kX%#m;E{(cs+D1m3a)w?Y=|PBHr{~sHu&lM;{MHN>UCfb; zYj!*W2pCz14j&*z#NR|o9i2c9QcY|T&(G>00;a`uCBDO{cbv^J&{NUqQ8YX*(*;Lg z`TUGte&m;nL+wN#WeZZ;>%M{GwqBwLNxeDQ3#nvqZUbs0vAj9kbm@xv@DMANrt}kU zv%R==OFyJ7#JvV; z=Tt4thIfSa?$Hni2w^Da|B(EJ9Eg<^-F(UI+%c?ky@d7HIJrH^tjdupW+(yz8XlUD zc>t`npbAm@#(4rc?Dn8d=$%w@fzw-tgA%Bh0O~|qz#-o(d1LHz1oax=KI~!G+V&c6 zl?{UF?ub`wGX*`YIYzQ)_#_vRhbQ5|=4q`2Kg6}lx&~=GIaNkKW0FYD8m)n4JUj}j z-B{-CNYLEUnZxiI!#P{%&KK^Y&sDRgQxK~gT;HjTxpOZLCwggo;4atcjleXFhyWqmuVysaD}jS_h0-l6C#Vysd97-aBc|Di3&G3i1DLD-za z7W^Yua&zt_<8U#~SZrZ;EqR$(r@eHy$F_(%kN^QIn_xLg?j+Eci%u6pq}XERumJ9c zlT$t^g90oX@0S%PQu%~09slNNH(F}$37fhNDV64O^=q}+4%LCw+f)sIp8tAMJiUsx z7ZjR*aLcZ*vJImbkl<%AF-Q)e4t-pI7ryeXl=+O!|wexuWOK$P& zwfq0k#aGpvYN1e$#PN*0bt<2Rq)f-OQmT-5uy2QQRR0B%%m+-jZSROM#mN;Jyqyk0 zy!$l!jqCTVUO1UmzEM+9{XC>=HjH42>&m@Pjaz~7&YZR4)^UE{#A+A{N>vnLcnI;e znPzrkEpeS<>&XD7cy5z0{a5SWRaOHRkS;bC2{5jdaHd^%sfb~Iypm{n3JkHeUByd& z!unv8DvwPp#!HU;#lvIhbH zU4BnAel^4|lDVtiKLxi8lcS9>qE+=qVfb>UCx^6hSU(!7BG%KZjlCdw;)D<(APq3$ZO_f7#!`sT32;K zb5(&4u^tYG(Dh&n7yRzKb{RITZRo3aQm;jD8jN6b1~9Q`^9e97XIq$)tWI}QLKF$z zW7>7I{ai;Bg8ysXx@k|Fmq+BgCD3|y>7JRk23poFk6(qxRvFo~u!I25H5M|`(a17| zegamTkin&lA(-!sbT}t!PKPDUM2HA?qcByT%v(B|S^r__P$fM_2bt4kgi|J}huv25 zWaX+tZz=%uvLp_3BawnYs5yZWCTStSM1P|#TM{H`AG~T$|7b}3hO154iv+nEyq3{B zWZi-tzEWEDcapC*)$BY`D^EVVEu8 z2}m*)!AdI=1{m9?{p8O3tHSIrO~(AjC@M0T;0eaHktpCtSF0{cZCH>*fhdI>;4tl` z+mGu6x`{Gc0%L#-)Ow-Ia9b&SjpwTqMm6>LJqNIQfQvwHR)$7cZp6oJ@ti-caVN|K z{`evVg>%k8%3;2i7%b=fN9#2?3Ky|#Rm5C>wd92t+=D0knp;-0PHE&jc*s<}Wz3Rif`i>M~32)bGF0KO!#a+q^l6b}MA; z%;!>jT(>nEB(IA-nyV8E^*Bb2>{5815TpnWokac${Eu^brlQA*Nvs*}%;djaND1IE zc8Q&eCfHAD3V6=XN6l63WOf@*>DzWP0g(Y319zj0ru&kN#ZIOEh<7T3PEIa_ zKY`uoY1;l{{<&{SH!hqZ(b%`;rMr&zf;gCT(i|r5UK}>R!1iT_$l&c}$CtORi@5+I zxJW!`VI^}e{ty0x0D0A<6&7_Q>MDR@vYcM@p9;32><7seuXxa%uF=bYz~JjjaBq6W$Rw?Xzlo%XwdP2S;RVAICAcsAC5gH7{ zk0?k!*dyK}Ot`4wb=<;P$pV1%vRNH;8pscnwk*lfa5h{A4%kDG*o!k;`*&as)6Ogh z{V%hN9GfKbg$p0*-Xp)kjz#!Q&_HuULU=r(Ejig##AWmwm3LBsWdv%oF9_AKSGf$z zB~TAYD7D}oo1x%B0k9ae$0rEKEe9Aof$-g2GNQplUgh8qTZM+B3>j@_sz;#S?wlbdQ9~>%$?UMd@r8AhAPFXf%ZC0l4_%(-^v0|4~U!f;e0zgj-4H5jfkVV zG+7LY&!tgW9@&ETed54a2o;f9Ekj$PWIXgTg~at&LIdfindGK#c|2Q!&2>BA_BIpW zd+=&>%9YlfPM({h!bZfrNybV{E3PLb2=y}AqnR!o9y@H|eu_m)kw+z!6y)_UFEd`F zqO=<6ww>O((~h0j`pLJ0kKxXr~1UMuhmD8?*$6nALa2u)wYivQC!$niwt`dFlkE&lNEr3l^laL z6QzZi)9Mq|m}xGjO}r0(XoMMaZ*2A?cjM*PlDA)vHDv*fm0g>#zW zKW+TzY>uko8j3BO4UHhW!q?dx+|@(?+96zYzKLic;iboCZc(_VYncdN=}FWkO8*1) z#bq+hX@!RrH!jiyU}@XTNnDZ;$_u`%n-A#^4zyQis#X!Cv+zEV@C+kO39MH%oe{WN zrAQG@UG^a)l7|?)SXH;pI)f4Qod2LyfOz9KAS$ZD`Xah*4tHqMw;tppZA!NO*SI4B zgXun@)Jrv`IY)Pt_+g&HQ%k6# z-zzA>+Il)NNqge(xCu{G%7a%b8OjJN}?#8=XMSOk*~qu1OqOZ_B;-G(Q}x9v9e-au>p96jrAaa zvF<<7fGIghzX791*k2Elfh5lF7k7H?hN(NKZ$<-zjzxO`(?YpZH*(|4Bx+NkhR!In zVX;Tz{efjoimuIF9yfy8;S=8AYJeO!EhC^I1I%5GVhhtIz4%eBREI zkc0ey*$V>yOqhYLq_~RUvwGu#5GW})!2b>aX+T>sjt;~^$@PT~4R3gb4pw8`Pv@n( z@}CL;g=l7$Ls7I#9y)IG7n;O1mTIKT2K>p|C2Mk@AvT1=Wkbkyr-CevOh8!-2P3~j zxOxG{>OSaczJS$>U*VsKt~8O;u*dMTJS2{gtxi%P>|%R=AWJ#w}$byCxBHWDv} zg6A`2U8kj0NnUxqJKPc4wx7(0B#Zw^$ z6ZeW|oNhM{@V8ot=;PSvopOv#Q5EDH(J%ZtiQIO#V`x6; znp?~;{@97bKT*$P-a;yHmxAvz`>k=ffyD0>sxnV@W0IgTQ~+LZheOQvkN`;AG@&|x ztE{XYpkg}^Wxn=*Q5RwJ$5(vXqTcrOB-TMUZMRx^K1AD$AqKv5W}g&EPqDr7O#nG` zzD#ILyR|ZKpl-jcy9w9GQ4}E2WeW0;7ddZm3>Peku>7j>R#EMs9|6b~Bl{w%I+4o* zSFNV#2Snr~^fQ@ItjTTO(8~)58xV@_TRnsTlmz~-cb^NG2SM6|i1r7O4EfdzLYGZM zzFo`@Ph>PMM=!@l1DJf;Q&A8t14N`_hL7d5EKE98ezQMwj8O&Otnw*dH+Fu-=*8U| zS`-5&v1nJDy!M@N)Px_T zSznFN)76GRTTIG|Bq2I*b&%2II1@cG`G)K-A zPf<^<>37pyv}M(}HJ}5UVz&G3%tFTA)jpVXFf>9qRUCW_U1~9V}_r&t9-&dkS1^Ift@l*$oO;SdT$k=w>K|O!3J2~%Ae5LH@fbG_!*S1{~I8)O&WxB_-8qNPz zf$2XLX#b}|s@-Pyy!%q>^2a=S_lc}L2mBuS`%?S^;W$5`zx@TTWpp&FHsA?4@A~pT zQPoen{)!zc)7;&Bp#`Ys&CuUBpxS}URC+m_)el;U?;faxhN;yx{Y(UlFWF5&wP{@E z76%AMz7>M&OROv+SM9~6l|4XS{9UJ+b?9aWyXUqBY^t5kCEj?R*TOc4Pp&gYo2D?^ zM@e=;o3zfmJbBm0<>{BnFDe7`nR%|Q%VVK83(Z13dC zh)?37`8*-KL4-Tb}c2bJf^NG47sE=>o*62AK%KxsIT7$6}zGCf0xE`Ew(H@c;XF|AkFx zmV#Lj0tQg+|6}Rx8sC1=4>0Q9R}^Vkupd540hIe&6}>}_M#t_&zZ||bx57|9^ z?JBo;f(G zyU-py#w-n01|s=sfmJgkYlz^ZbEczlV3)}xlmC3cdYaQWa`-ysJv zT5;hn=!D3ENd;o2CNr=vkJ+cG6e@VL?MtPr;RgMIX&9Xs@br-?Ge)hACPn(iaYO`PNHKrwq>G~Rs!8_@{ zv5BB(5xc#60t62jB2-zk@VV$jsN%;oQ>oEoQb1e4cms;mq~`J z+FGnaOUo^VX+3McX=G@7B#$@4&HC@JRgqt=E5-N3g@7~2wMVJ`+i$Z%=pnbR!f26k zrC!WOAdLxhQDKWANrZZNzb)``PP++s{8~=bZ3=THmLdPid6onRxsD9SR6(H46^uIs z%A97_HJME$0JNn!C-*RvRDb^^{c;$m&8C1}u2(c+z-ILiBooQ^g-)9^%83VO4RjX} zV&PdH9?DHv%p_RuoyC0V6cB^t@!5UuFhoNk`s~R5E8I1`X5eX}sjx zW9~ae=6-miE5SO=R$j^w3s+#WjYj}eC=lOE?vYt?0yp&jnaC! zYz2|XLvhF2{T<$U!KKu7EF8^X@e38I}HiAh48$-S_9M?Y&ZHYwVc8! z)>Z&;NGG)rlXXAxZVHpzTV}dGu^`0h1F8?i;(wtfUa}COJ>1`1rI}+ipToL3ygJIyxAHMZCs*|Xu)%5o zWO7HfiIGAZpN^MqJEg@2jq3OR?!j{2Sc1OIB}=nFiYiUyRwXTq--c=mLemuQcRBOcu_5n;ECYPs;=m2EMg*k?)WvR#v1supRU*X zxdJw6Lw{1 zbpoX-QeSTNYc6S0Q?kpUvP) zWWEJyCDsKUf8II)62&BC#RsF$NebD#Eh_dVH@in!)2gd?aCM`v?Esb(8e|s!adO53IU8XyA(-c5*nm7ggi^ z>vvjiyWk8ua>l*AY9+>kQW|XD`iB-DQz#4dL&Fy-s$QYD$_rL1y-Rk_gM> zoEx=%cenJ>*-sgJ`GaZw8k_Q}J}jcnhIGBCFF9OI`~v*o(R;4+VyuGL=|$W9pB?#C5e|zHg|6Cp7Pe_)SUT8jHTUcs_KX>${Jy}>C_5~ zVFIFsQAZ6yX%fdd36GGy9+e=EbTBo!w*m=_Kv0O&q3uy(dnf^tBkCAcoIu8F0}!XK zzc@I1SW4bvx3H+45He0)&TTqB{)uFppDW)8LS;+w(PxC=m60A=>}jjWu}#35DT(aj zpKV1LwMIe(p|mu)(?i;CgjSwdx*+>!z1$--Ut;GxG%AN{ zKp3w8fc%IW(jez)*66Z4-iS%4%|@LHmesLV^$qUbm}sQRSp)bXBAup&49HoOkY1Zl z1Li+BpWIpP5#`ke?^V+@w3#@AV8qE(`LVz3<7JdT1>;vH&`uhO1W@7SBFEP#r&Fr& z+1^qb!7AqlP$VEC8())k91$%cz;#sFKW$cSI{n&;*xH0~N8tmwWQl8t%J^r{skq%} zq1&^hk2G9i0^iW23HToord2Dc&n=gPBqxmtx;U{omddU=CyCmbQ{T~acwXh!jfsvN zpS+gwF8n~O(Y?Sz5@Y{C4r8xZNIh${y=GXDXH?4%5Qo#nk9l`V4rhNDwCguEAnOEC z`V5R900TYBgwb<^>zFua2>ApksLC(ojp;&cn zGH*+|*Xf=5az!pmfQ5!3xHFcpImH@V+TL#OvTRR6`_>Dvv6zCOGG$1}g6;`LV-hfa z6<1kaa(g88^PUT=7lA_i(0eeH+#c$P9;^0S zT_u;n!7hF);njuf^L3eTOKqfy`sXf#X7FY23yeLM)1QdQZnDPUE}ttg0I`g7J(E># z$uq3Lr#>!EXtID3v&M0Tdr6Ihr7bcT2lY%0LSCVjT@^$swb7~?G^>=IWYuWJk!|`U zA-8H2!AMpvU+%hKZv*&${Ni^OzguK@bj4AmMvRwSz1iS@pdHr1rG%OkF}1$|>CWhn z$NozB9s6Z&3=(t$vptRJlejB*zZ;7zOM&zpa+GYKQ#!@2Sgw_xD019;9Xkb@1VblFBWKzw`GFeORUGVnO6^ddP^?mN0DU>S|n;Vbd{03`sUvf_BX3K|EqM+O&JMWj4<(L?m`u#vY zrz~j7c*;{0wL-&TG?+m$%p^?Wc=Y==)_G(md+_PUz2hJdNMQ4BW@8p|3f@9*eS&Dx zW)0#8DUi1}daF`A;vJDo)u4fy2TFo3EsQ#*hID>{RK7%FYF*SH@6nE5QW9bbiT*}}@=*x{vUG*n=2u}%Jqx*}3_ud_;=C$Wb0~D0WGchjjJI_g z!zF>7Z_Nc-I@FKW;ZC&O>_pagWiH&w|0M6!=;!`AFbm!-56)Tx-4Jpby?BKmbjwhR zBq`Fq8NuOSh_DGtLfjl$wd|J7SnA&kee!;U@YJU7Qo3)hEpZv_NRoG>jP>x#C8AfR zB}Ga<;2u5j{*pvSc;dVN;r_-7u|D6!I2+;gXBDz!i_zBOhMu!t!tBi~^4~0IpfJ~Y z7VyDdqnt3a7x+wqopJ`u?vVxe5!>X9PqU@e17Y46UsfXNIXW`-;X)&Lb?eUH>=2sTH$@mjzbmI;g;k1* z`mI&N4u%lgIf)-R|BLJK@BO$HsuCU!t2El<9$fBHTHqFU%j=KYdekeo>?nZKf!x4} zp86tP&t))9~HO%Pi4fgg?Tp+Wi5@^og+P z2-TKtrT#?S5{USt7k85|MA!1|l|${yo(G321`po<=Wz5;P!mcFL_kGD8EDBCf;(?A z3LFM&2=Hs0=S~-i_cTJpN(umE7U7|9`w{^!Zy~k`*@B!cI;6m%a(t%&$dQj+>G`2r z#wxCP1!A@LG7TPH8Li9$O6S>vkfK~c30%%LV%Wqvp5MzEJ{RV@V6PzUhHO&H3f{&{ z)4Rp4&yhARG$B z<3frO27iy$K*{zp_2N0){moD*v5l9hi*qDk(W3vb#1{tjmoI=pu5apg>511y2%ONIivZ*C&^XMs%kco~@!e@WNJ@?tip)*! zzn(ZD8eUY%E#LFutKo}6`XE>5rG?ovj9~#xF)yMguK3Qv5nntAtwm#^0c-lipYB;4 z8f;S7u%0d<=Eo@LQ@nhHpjyVMzMCRVX_%SSzH^g>fJ~EYdNnjLr)nPFWc$Y|u7gf4-ukV+5o$wZp0*u#+{Zsh4$(d|+)VOT3)m|oLi`T^~ z?ruoBY>gJg?vUkjfQnm8vKXoB~UGknf^XSpSF7FUcc?e92^gHeAH)L_Q?*c#z zn8if@ISRg92_gAyQNDmL)^mQe?x70+x1~XAphpu3A=*6dQg3o)PyLdn3K>8gnfvX# z0@5$oSzBC{-prq+UAHDxvQrr+k>IPEGz$@D5S+YGN?OXMIUL-SCtnpnBzQm`B)`bH zIl6~WD$@QQq-c&V*_R zQy$sjk>^6U^p$e7Bb%D*r)YIwE1sRr!|9rL@PAB3$E5}@8UACUn|kL=)7T!K9jjlY z`vM+&jr4PJThqP`^fL1eg0FZEIPAGr_2_2I-Z1SnjsGDiIVsE=(pody-hU>MNYX8D z%SmC7;^adAfyyG%x`^zG(2T;GQ-~+zbzF(=PXG@X9i^{6XHr!h2^`6Vv?i$~0hN?- zj-s0@`=~!sT~8^t>JNHZMPNODxW0GP+;ma`gHURd0UTGJhPx}5bob&!hg_|@?4V9? zr&zHeu(v$6U+=>h>y}^d$b4%^Qc75H#l%hBG)pq~H4PWWsm4H0Yg%|ex%sTT8X8+L z#aIBT_YnMd1iH+4G51#lEaS0rML?kqiE%7NU*(js@?9(z%#^?vgaQVzAQ@ImPrB-3 zYxr;e*hzk0o7HB~(inmqAgN?3(psrXqK%M?{VHIj-5MyzlxDgXzT_)knRU1@?I<=# z>Uie;an_>+7aoSgDP z$NjcMYwPc_(Hb5c1}}AZt;f*L8I#`Sk;?n-rjnRuv7RlI|08_gu9^?WAVyF~D@U-+ zmM#YCZ&+Z9gRv|JFy8Lixg6yZ7OUb}zm=%kj^b6~poK5^Zb!<1VrBiBR+p1`zp_Ez zngI6dc9PWA)0C>>_=q0Gd2;)y338y49D9)8h6cM$B7qqW81>$d8870G?U||_ZI!Ll zpj-chJ_UyB*0}#I6#v}(RlgMJvF;9aq#d-Fn~OS`HaxMyE{p+^5=a~*{=tkpOq~}X zU*TXxJgRyWxWtQj#Fw&(Vg(bNixMO*K0lJPV28LiUkx(jXjd^CJNz9qOgwh7*m}Jf z)Zyx|Zg|!ODovsa>mAF%iTr!qDJCfD$_|xkkLT%|;Smbj2C$1+{)7Eg=hV*j{} zVZsZsCwMVrwY%hR{*NeIL`$hg5PkyoI(cO@Z>ujo&t>)RRGboqf| zvaR5;8+lg0onB5TeXnOoQnwv1WW^tFX^S5u8zaTpBzy=%smP;Ub-EC9NP!QCdnoM@06K+O%J^qUtu#|I+UUvxFoF%<$cHC0H%dvBSPDVrGNL^nI zOT;8P3SV>jk>2M5JEP@Yg#c9M|JwEc-K9XW{?D#|>jKufekT}s8Fh^H6gwA=LoOlgyk=$gpv!iQ%?HdK$47y2_^H)#`ZM!HFw6_S!ckzC*hau#LD=1cPM~diS zl1QK|&p9#+kmXD}epx|*$q5HT-6QW$U+Iv;*{=YK=+iH_IxeGE@Hmiu;?pstukYX( z%*P^)Aze!d68($>foKm+CtXu}k@k=1K}|^tjRfM)7WFQ8y`n$20esT4jTO^DE+T|D zO$r5R`D|Z(Q?VS*ww1INX)KxHUe(X&C&u2aS8JEm4#jXNbOGEC*7g+p=Ry`hHn6=G zF^1TV@k2^f{LrneBkVCveBDnlfyvNC5p-ov@X~1`0l6ylxTlhAbC|x8Ps~HtCJXe0 zLjXC=O4R)d0vpJmhTdkE4B7^FEko0%BbK-H(fL^BUxoWh!vE0?2;x88IRB?xc|TzJ zgvZG$fO?5sUc?Yw!8z9m{G^By?7alcN*|cN$2<3q+*3q@ka=g4mMsWK!a0OKFD}YB z3&PRCyuAN#XL#ea+lhj>6c4%KpCWs{xQnk{kw_TteD{OpgVkODPr@3S;v!N#B9A0knp~3+XiFQ?vv5 z(A!`D?@{eoV`>lY7W>w9w3~8uho~0Qy_ZC$-*$c;-#Ufc`B^$VcOd{1>P#EZhQ+rS zo&KIfTYlQh&%PYMZ4+iu?(EMioX&+mtQTp~C(x8uCP!iD2vvqLWe8A5lV9LLG<<94 z`hR;YAmq0|8Q~~PYT|iu-m>7j>O0x0r+SR6)gzurD;9o!-U1YHxs5VgLtN4I_d_u? znZpiU;Z-$_l;elz{dAOr7CK^Z%np_|t>rY_`xIN{pVM^OF+pM{rUvn6Hzel&WyiaF zAri9-;+7Q3$t5QHG%zEHl2lll)Ds)I})d*m|BIO`1> zbvFDsCKq7et({zCa$RB<_Df^<3Bd!YCkDWuI2_sCOU&p~rET_RP=aC)%XCeS^{+kHi|8F7& z?wp5?I1|^Z9IfphsL%*m%VQfQO?# zW5z1LF}^EA%|nvy_^BeY@U9j-b0-1!2;VzLp8-EGEOviox7dZ4QM4;Ubo1+f0`>fC zidV*50cvV&syt2Kkrkju_GMllEm(SwFRIc${&51p)21eMjx**wnkx^uPpN8dp|Kj~ zP^Ya_075fWbg9+Ov|{Gvi4eIuHjCr5mEquT&6XKrQq7DJyu&5M7;gsY889CzcQ7Ot ztmkdzx&LY)lkv_s{6(`9Sn26bYvPb;_N!;R@287}6nckk{b6LUIhco@z|56C+@;LN zScpVDgBkh7i2{Q6;oCK(CsN zfBY%!h_@BmG+!C3uJr#aYXEvgmWTxB!vEMaM%E@vy5JOV-*FU=Am7`jeI29TQgp92tyY1lFt=C(Wp=%BQBd3 zz@ruO1GOfw)^@gPs<9m`3LNwSyn$|g7zO7lp5dH(XyPH6?$CZ~_B zeq7D&7KNRDnEb;BgqmWOu1ADQ)0q(-Nw2AbFWAiB-}E zWuabEQAP_9HOF_-%J*YCfRdp^Tth~j=Re6JbHCX-M=XZ~CRo#Nvyx%g@$frXFjgLDyD%|oDTsJ7=UVLzOgD9#UkGYK}$3mrU4#j>K){RL{1Qa67b z8t!<9ouP$uQ++q*dRPBShIjR;u7;`#tuDMry7RSqq{oSGEOT{g9Qt$)Q90wqvIxsyRwtnO&*MF{6LjxG?}1uD}}d z%>av$!LBX;z_`|O{s7=w+(weZp-Ds4KkWbTntO?JLKlp=PegOmabuWcg5@?$B^9-> zLawGfsBim}HI9%+Bsy**U^6+%1-W$jJsn0saNmWVG~#PlU`ewgv1!1SGK3uoJaE?D zEWB~KwZf^G0pz^+kU>1*`Q0kh=l@u52ouM;J_?{%6|O<359xzyh!mq1n^76V^Ft>opKSn8-8kT2uu{EEZ%v zPYZ4z>w|}aP(spP>^V_hHP^%4)Q1>>F*0;mzK<`fI8d(`+8_338@D^= z?db-d%$lT+oPya2?Rt%{QiDaoD*072M>Ukdi{?%NGi4k{nNIr4XiG0xUIm4!18G98>0Mq-5*PdH-sb6CngKAjJ%~ z-b^Y!Ft`UM)oi>Yj8U$ZFXM&&EBq%PKKv&t=9oHBGL^NHWemz$^LlQ8>a zOwWQ3vuWfowFg&b6;LQkHQn=xB^*~p?5BDkXLg$)(%FufaM}?*z|owQ9OWcp$l9Dz z4Zv^oPo6tV_M5Zfs4*Z=HykoEG#yR_f6HEz+u|4I&3GD-95Cg>nNg?g5=DBuGq)9s+&5yh64W4O}R7tVR5*V;b7~-i(V+z>=RLABY z>EWbZlaM~uICMFQBU)G?vPYUEaNl0-954<@7m1XNn{f}_FQ7oIZF;J2bq}Vhg1A1? zUCq!!H)%mzGpP;X!8tv!A z2Y^O6nbek&i!B&)bI8D#mJ01pJ50g@@wK5AaZ{k9c0`h!Z;}SAE;zWe5PyWikq5ZV z#?3%&<((apIpHH>T_Gf?J5o&0fMW;_@hF)}I^rJ;H})@QQI)KS5%>eFIk!G?wjw8M zTA^)-tODJ_?#;4OgL&s2EDh5OqiZBLlg&`LVxbuo2btQE=!W~I1tQSAsp_5@Doqe+ zbrDdN=15-zzlJ~ie%WECJ1tnq)m(C4M2|CwHdHFKvB+ehrnxeu4oZFNLOFh}+Mjl0 z4eVn7*X#aX5YjBi$0ntI`Q{n`iC9_fCcAUM&Dq}wUjd)|v=a#zRaiN=`9J<@fCuCA z;cy}_8P~#Kl?lMcW3gjI?Pn_t58Bax@SEJk@)#*n^M`YtLq}unzQYqpzl0v<@^!G= z#e9?dAa8Tzq_-mJoV3{u>!*RnP%}&w5Am7me78@-j{wPXeD%{M%tOs$YdhpTN) z0zJ?N(em~LQDNGYd0DrZC`rPl8eT&NAPo9R`c6?EPBw$zVGR>mTL(N?}*vuY^KE=dpeW0 zoAnRdtRa{aFhKrRV9Aq|3sxphh#xZ+Mc+A$anGXy7EtwR%?I^kl`DJkQBvtpH!ssB zR^~{L=QHxTC*k6Q5?IH6uq=OA?-UQ8S%j!u%SZmr15tIHG4P~M5tSBf?=P{Phj=Zp z7qjB+j4+0LF6j>Aeo&E1MPi^+p+6X%=8!o`!*&g!IC%A#vvR?wK72(`aqGVh$bjoqt9 zJi&5n)Q5ca(fKzU0ebG>>DxU=UQ1T)v#qOlc`!!$FXXr|!ba;ei`u)IaX-vn5V8Of zl|r=M+~n6l`3Gbd*7k3GW5a;0{$w1KU96}=K(|yNa5aZWRM!kov>tyvNMzbfei<{L z82sdFO5yR6g%rFT@nkRiHxI3;>bWbwe_{tnhr&eLP2NV;n)t;e>Xm{`2JD+92{#@d zC@P}pMHXP$UpEP1nM)Bz;CqQIWy{@2I2y$zPi}TY67QO?(4)Ojw*3wf=?t4ZD2P~C zYWIewkDc^Ql;L{Ac?ZQAdgl6^QxP!<4Bl>yEYoQ*7;=h!ThQOBY6J01=#o#Ot#M!R}fn0D>>TD&QO=2I#8R-3N91-w z7tIW8ogi&VMxau33++g04;>AQuZYF!waIf;x867(ZF_9$?BAh=5D0!_R(ZUw$1eRl zhFEy77j=wkk0&7<`@|%JhLq~CnogAhmknkXgz$?CUg5w4sU=huBArnad20cW_pA#3Fj94>dK#*_RD>fH>JB{Gov*VnjM0l4jo7eUV$PR)=#| z(Fl$Yp6NVyq{a&hKI%%cYHhl-=WxaBqz{*2ZQ**U729?Q5njQ1T~IOnO?`K+&Nor8 zYjd_s25_W9QNTgL$v>5No!8)ZtB~n0(M&B07nKt^qHJ!(gin}>#kC_6z)Z`BR_xlw z{w&>wQkN<-c}K$1DWKD+bBJI<9)(SeYwCH~MLHNrSsFl0pVlEKZ+^ydxE3ReSzq?M^FXC)$mIG0`x4 zpHclLF@cAj0_-t2#I|CUp~V5j2bPvm(lWU(Zanqlx{?|h@zX1o8B1$T`iQcRl#NVh zf|f$e0OrvFbKT#JD21$cjJ+cVr}opLxu!8v|1NzJ#jifLzOo7_!`C?lrPHluf^C7a ztW-vzKM&BkH{7KV*KNb|XdtxeC@~17(_IW4nTqXD6$6iJQmwvkJ^61cv zq|N4?)-siL(>OS?N&oXSB(aO454lc|vG8}x+A8LQ+$JB3L!JuX%b}9M11|mGEDpAm zhTH&XSha$;TnJ}H;dqcPx5jF_9tRb2;M+?kX3q~@!D z1H~4k#lM~jfvc5wx)?jw6-H*btb%xFgb9L=8s(woXy(;&xS79!h_zICp|;2h0H1}X zH*&Ephqrnd4i8D|s0F}^&Z-^Y=^WzWg^6izk1ODr7gUI^9M_xAS3oMn2Y-UE0mH(cWMZ3yuVkMqD8^6+V&2i{nCE}F zav+9(>FY_Tfb?boe<-ia+P5?V9k_O`7a?hG%m;J@-?DRMa%O>)iHw`%JHH4aXJKYRVm+>r_)v4ZW#0fLPloIVRTf3}sA;jr7bj?zlN_0eaQD$`~HBZp*^+Y1y;h<@QdOy6)xC0+of$_D;{O+kOo1?+27x2W;Sf=KbYG0 z9IGu5gp1t>|5wKTYpMZXf&%$~6;_z2H6I5sBPaKa1gE$>!z<BR;oBKt7+f-pfM(!0L-=0VM<_&<1=D&}Rh z(<|+&rY#_J#<1m!4oDutJmhZFj7tUyRAO>@0@Fmg{`$dvOgjsZO>eJ1}hXp`z3Ukg==j~ zMXhGvtrbdrN-JpHUN{48>cB$5cXy9d?X;=mwh;h0%3L z8wwDU*ptDmFoK~VBB)SsQt*D%N>XsT3tN;fCt7$Y{0P-Z62$8G+hfoxLtrOcN1WbK z6w!9%v`k?+ZDhRf;!n&<8DI*8f*a5ZM5$gOU=3+Ghlgs1svGBx)yCq4?(eF)sm1*=5FRj{6<&yp z>-RQMS)i`*8O28L((A7{N@EQ)G&x`Y4^QV5ok_H9;Xigdwr$(CZQFLbW81cEJ007$ zZFO{W&K>u@)Jwh8o@3RjU3-oBO^D;hsMA&uUK=5=H7%L&qNb1Nld3mVBQ zY8Gus8cB_qxb5SehKO_@De(+{cg%G#EH6)1jcku!C#)|$1E&FdMCL}~To z=Y?Qn(`{KedLsUEgS$@VKV-Zt%j0kRnm|$>6xru!{o-gEx?3>(S|6$*-bWmQ(!x@| zZagS&7g!ViG{nurnx`3%u{2% zYo+~H?dgt5T9PGmRpNx$Q%_I=vS6O%k2^U|R zz}Z5q;bGHZb398(6kSjb z`{U#u89gYFY>t+mf9*~P=TbJJR{1IBXH$$XzL{QV5RJh$a;c1Ld#zTPME#BRT4$gnU$b+w%;4SQxDg@U14YDvDa2$l@>`GUhcX3OWJd?SAwAbDX?LLdhsRp=SoW+j?=}KuO$GGX&e}2 zAJKC8$$J$C9(K|PK7phQUMF&1D`f+RS53qQjH*KXq30_pMFc@blaRt50CEw?Fg=Ho zu^m!q3)+vpLrvb)-nk-6Hjy{17=lo)gA3$KU07g4Sv|6WK=L&zRkC zsgz!4DbDrzO#wFJpi*MMBc(C&hr^;35QFNEGt57@Uh!^Kukm(rb$4*hsZ}kRy_ErxMWGml2$8nzouamm|CF>Xl*|H zA0gWpqn2S!w)Rz@$YP-iQgt?3^XwF0NC71xj1VAz0--CKrbGQq>=>v6_Um_^<;$Gr z8i$?Svdp$a9n(*M8sBASlMf5;=Pa{#e4h^lfIeUeTSfi86M>rAES(^)K_O7dQCt^c z2@cgpD|w6sCStKcP&!1ou0i$1g#h>Jm$TW652P})OW^U?$`4=_Y$+)mkVseK+^?zy zWKz}1r0LeC6a&Cdyk?qTc)WMcX3D&FiVQ!EpY{$>0j+`|I&$iOHo^F5^k6OG)yxu~ zR#aD!osFq{Q@IJoQLZ{3yM~3hQ0s{&?^J~Uw0+nd3cC@B#qF{t3`8kQd7zwQ1XbcU z#2pmnD?a(a$XVi{!l1P98Wa?i%!J9~m6jq1u%Ker^P&(?acbh%vzfbH*KaAT#Ra)| zsZAH-{h$%bke~;H9_R~~hNWvfd;A8Y)jH&$CFpdjkv8)0sp2Tp+}Uk|90mEwB zry03$B<(A>O{aBuFK5gR`n8%!Oh9?@NBfw6>{I1S@)UAt#8R^8-c}^@<}aFd^1vTn_dUhZDuBvH0Lg%7wGlhB^zfb0G<8>} zl_fednGg`U>nyCil9mk3#}jQ`Z6ZK>03{Gms3Qvqus9YCck{n(5(7emxs zXZc-D!!q;0>ZGkI%Kho(SS12TSHSJI8IrJaQbVl7K?TT_dORS366&8qzL)y@A9}5^ z-}pJ5auY%if{SKRSQqe(ps#Qd$DmOCp}>H;cBMQ3L2|<%X(s*nN%a>8Jf8;{a1TTK ziPWuh1-Raei0_>A_2`!MlAvyV`s|(m^uHW*LBj%3k%lFrB=8DIzomd9E&;%!BvU=8 zQhol4-11*Dg0PiYTu$qRiJUkwr~!kD+yJ2XCYRZ$gCWl=xhj=sP%a2%8ThDiw(rt~ zypWbmsx_lepFm0Uz!)}%E^EdjY+z}4D3SFX0SsWtQ02rRCG8Y7T*H-ivNH`+8=+`j zF;o_oJCaJ}Zq`OPDT!yY9rh#m#ipirnIc;g4#cC?5J;X4_G`X2mnA|w&ar{i#+UK zjd}@vSoP9Z{5>PU^J35e*sRe!KELDP;F*O4DJ4l>4^K562c#o#_Wxph0w_urzkS3pb|$Ah@WOn5smz&{wg!1E!Mvo9Io7#3fH#pFLR@>LT1X= z&}UmPIHuL#j{l;8!7ZeAt<9M{i?j)A2>>~qS$tTV0bm-~6eaCk~@bDKy7;@G{Vlgzaa+x!Z- z@p!qcAX2yb(PH+OiZzb}7-%AbB{C6Y`&^5wb9vN2A!L9gXau?3LzdO>AUhd=s7!o= z*;1rQs=8S|vxD@`Ydq<3fsp5-V2kvZ)>PZpNqRI;afxi%d*{xANhuXsS`v^TBoc(c ztkEGC2Y}$?C!UShCz$qCO7cK0gzrbQrD^C1AwK~yR29U0N_8qUIusHB`o3c`NgJL^ zR+S?yAN;kLiXtcHJtZ0q~UdVbnea3apps^OTHb78h5E|nZ(n~mdbX65CC$> zCjj&szW|LMS)q?EuZlT(kRp!%x6;7Jg&{YBmZFkXfm{cYJ*`2S2V4O_m$_wxjTIuS z5@v+66uIWe10bC0LfgKrl8Bmw!LH<(5?S2UL>aWpMT59g1xc#ta)tG>+2Y(3 zNiEOl7=#W}b)#NIw!GqqON=Mk);rr%v>~>c4Nuz0X4(i_MVI_%U740krpf}`x$v;} zYW?~)3w^}UInt7PNGeO3^4(rl)w~$eT8o9Q0q3=Fx{M^1;<_23Nu4PFqUZ{`q-cn5 zzM7?b$i=0C6yf3qq%KMM6+PL~VN)37Cd1s!BaR!WjGl-YaR$zl$xa%aJHJKqAfy@$ zNR&(UoTyew+ijWME^)~2eX7Y_DN7fa**#7U0LT@y5^;C{R<(vbEA zbcPg}u=&UVETVA71H%a^+v;9njY)UTT|)y{KN@w}wuSBy2~T!a;8e7Ts&lx8A2GbwkI+8m_&-25gSNUpp>vNDF`}R)(*&ex&=#ug~(xT^JxUw)hQLc*mN9! zX z_bgdao0JXGlu{nPai5;j05B6O{yuu&moQ?z3AD>c`(LFHibXgaw%b(aNPy_oY^d-my^G8bt2hd$Vx3Q}{J?|uJ;TIb>M zeu7jB4OB#6yq*NDC~J~}IG^D!gjkzp`a9k{wU|hzGYd$#fsYXsWTU6BTV_L>h~HAm zCPK9W#`jHjH8k@oK!72vXuRFMagDIjA9YAtnz`Kj>9SrK#v_xG){+Y8gM3f3;nZKJ zo#M~!$L;hC{-50YC!Lf}AQ}ObpQPL{JYca7biy1#9>k@KGxJ)__70=#s)Z4V{w20M z%0zO^`~UVqgfT(LK9xwfOd>gShRP5aI#q&Svw%87gfJq`s51tFj7E_LPwpN`lAV7@ zfCQ053yC5MHBwVO-&F;>gDv(>!T3TH*M@c7hiR} zUjnOaetUCVe+ODBY-s`u8K77MHi_NC3erDLK)~`m^}jLREgsrtw%L$RI_*9jgsai8 zZh^h6Wo}c%r{|D80(=4rz(AzsaQi1Q!N&T_%^3PrOI^jaHE2RI*m3A0%u0GkewnB* zho-3+8M2IKlZzY8*F;Rx9u5|Wdzl#eu zp$CXsxq&1=3&bKId~Vw6;JU<{@7F7lZNMMBB{fp=DZk|GD_vP|;33 zZnv$)ZCVd<*TwiMA_!oaRsMvIzoYgX_Z$dzUs~BkUZ04l%o*1oy?DSX1-u_MbBG*Z zYqk_F*z*$IBVu-$=*H(Dv52Od@S^E5J7oK7Rh4&GBA%4&03q^XKJle7iNMclT&_FF zh8fAuZk@%h?{W3VTND?hAk4J#E(Y)P*aEVF1jGF2P|BrUX-IyHBj&oQ`#YVmf8Flf zeSwGm1k$J+l|vp0&Q`gk5C#D*89=SdZI&hS*mXwXnIji?99oC@KpW7uk4v)^Cw@lN zi&_Qmq+wv~(`-MZq4gmIIaN+w`&d~HZDKoY3EKy)%-4iw(s;9Q-dCc5R92RpGdvw^ zxDt-e*bny2j)Su`6*Lzek6!t&*c}JrA^y^n-q2~p#sJ0*UulES-b|bdI{93$rgt&d zD&zUg6Ag3KZTB?o14`;~cdbYpex~5_^lUL~yQRywpxM(v9eCEmDO zy-RECn*CQV!plX&8qRTG{^4MQyg~Kg`B&)Ob(Q3r&B79JRn~_j8n^it*9l|O6f8(u zmF-ctTA_#Ssi(wX{Qy?0)ox*97O$p`Y*Gso?hqtD=Noz`~7eEOi0|rd6 z#l}5((#*;=;WU=^6&u$I;znf$8@{Q-pz{$?L-0TUHPXK1#j6B#c^7aVgOTefU8Nid zv};&?&;O~?e7yYp)x1d-#2_ZAW)(v})T(lIg`{8ZM{vQuQ`_6sPI~66Sr$8!hL7~5 zdDtgV55KWXzR9(@;zjcPvliO>2lqkZwn0x-56Vz)TP|$1TelhQ?pUe>YBx>Tt4U^B zE$n*rNgp{50(Qg8moEn^fFRmXe}WtTeh%cX5AH2NILz%dX0h0gcX<=DcOVgp6AaAo z^~d|f!9z%~U{O3Fvlk?tw-u|cOTk)Lz-2B&j0lbZ*Y-kc+z6ep7n{ZPql3Q0C#E8) ze8k1|8&ho{q?rjk89OW@EtWl~zb>te6e1`r7&_7M#KDpVZ`-#dg?5)424QJ|TGWL_ z4Z9b?9#R$SBVcY}ZN_uK8J__R>62 zv0+OMYU<=W4|KsF@svH5ln=z?!g%{-HVLBS`=S1jv}ol(a_y;{(E3S*4fOD%eACp3 zqa1NXEz0h7^b3}vcG-r0Hae=bl(=F)`@{ew>4ZB8Fk^yF_WiL9#`R zx8Xi6H*_Wfhz2*2L6aW(f477YP!6o<|N5Q=7lQ^=f8tTr;k@vj_Iy*6&GWk0h9O8d z9v}p9V(2(~E^dlmz~auuRXV-S3C-Sk-W_JJ_hAI|+>)(t!uf+dmZ9iyi`_#ciAEJP zMKfShf0Nuz^VoHz;9UXyF&}w#LK~- zIfj`29u})%hLvXtF0LB!9I?3kxdlnslZm(T?WQ6O9DCBGTIzBw|CPom#b%Es{+ZyK zG`CQDYFp6dp4?WvZU+$Srdebrq*MB&EZ<=BG;tl&(o+KKm*95B-a}RD#m+E|WiUEa z$#26?FJGaCE3C-A*ml+g<{?DcU_;*jdhuWzP=LX+an?Rs(=n0Q3%v(zJ8@vZKY9fm zZjrQ6E?`HFwNH~y7m5N)XE9tL%5$b#!HP*A6Oq?!33fOUn(lq(~zt*}xT1);%>!0u=kzOmw){=@%YM3OJo0^3bK{RJy;bG2WZe<`g0xiX2q97tA=I zDYHn(!yaCw=WE)yidVt+hsP3Dk7)&(gURs!8>*Os$LSw2Q@9iqS~V;TS0KR7Eh~9(BOWUPwQ4B`j+_ zWbRu2kSd#&ig!|(4~NhH%iQ=Q zv+V!LTzM5Y-ke2PhR0S&1<@%@h)q*npkd!M$$1he=UQC2NAQP5M9-1SlS1V8$FK`t zjGOtV1;xILUco8Sa>NK-NOHw57UFEreyR30?S%$X-sPB)(MT@12?Y`hEQ#eh?g+eK z8*n&TH5)CK+N&t?0q;7JV|+P>Wy@vM7R7$m>*>58l*LG5vcQ6fyUUYbowvVK5`NV} zyZWTVwG{dno`R2CAvwun1_D%)oW81_Dq(Ts+(mw}Q7c*H7s&OMoT!$i5wAxG4fl@+J70GDB`Te!=~HyLN%Ek*NS2ym*r_$ac@8 z|69Z=r9y0k!!7e<+^lGK@SQ;_V3ruS?1xU!{8p8jZ*-&p#H#*!`(R0F#=^yiLT<8#WVxRlt z%aWi8#2ivIRp#WX`#tYktQzY>=645!gmwO2*S z)#tTUlYdQ^%abGaf8UWG8xI1FU(&)sWjC2{l|G{2_@A!Q{8S zt)c7Z=^bEs;GZ%flIL;!!yG=2QsJu$haU0>50}Hc`xv3vZ>LgAaPr>l@zbPSK4m!T{SY2yyC?k& zR+BV6@WVe5)xUD){=4wx5IMa&P4SR6)N9oZd`NZt5|ys05?!TQY{v;_=Mi)&8jSf( zOY0a)Q1C$|i2cNYvs%AsN?*?&j11HpN_Y_K3|#^6LX9Mi&z)3?jH#Er_nOA{(oKw3>LPh1pO`8Fk<&pyU1{MSGcU^s0KM*J!Hy~tE6Jw8~z1Z!Zw3vd%dv#`73 zv)wf}-%pr?8lGx|)Y0`=2Y6^V%$eDBhjJQ0lZ5wtp!B)3-%c%o?Huq_MaR_eK&_Hx zSoxSZj>Ee>Zk}D4(=qV9tSX(~3x; z^Ocl2dEJy$=LBH{D=$HItkn?8m)4bG5s}}b$xZQQB@Iay5s8vE{9@tz4Oygi%Vwbx z)sg=qO!N4vc0 zHDtdW)?cXz2AcHQt?iLt*%5&tTlmTB=yV^AKvjB<$#p%EQsB%@U+ApnU0=Lu>L*yk zn-vn4<2hJkUbpW1mUCSCKfy}o?7l6Xqy17PSsg=W&PTrkWDwUfTj|) zTZwvwT(XR0$%{o4b5D;%Z~UlA#5FU0`h#Zb(yDzpF(!X$_vLniK$y~CJUj^zmbUuh z30ZH$U>7&ef^!j{mPNV@`|~=oj>I|qXT}lS2YRRBwYMC-SpcRn#4KS_yHk1tocln%Lm^*{LclN%<0`GhW}mf%%Yq#??9eXTwAb(5a3}g!-8D z+(NT&gK^F$BXts+{xG?ofD98K>v&a^n)rqRABf1liol9M9@W%&m~v=LUk@Qa`y0$*sFmit|w zfg7G7mruDnKf^ESL?F(J5#pKYG4H`bG$MDhbpnyjz!4eD?-M>5U?>XCY8(wimb2ql z<#~_#^)omHpYIwO0=%ASPsI8HFjZBC3}G@$AAYp!lnM1}kQ|mw1rw5cl;l6Isfwa= zUb#@E1WRS|J1lhe2rna)|oEZ|WO4 z&=L7+WX}QPIBF5+A+yItzWX<%17A;6#SIJ~ej+q$*Z-taCiioPs7_B~#;;kGP3bM) zw4;XQw(%6s!sWZ?@kBQB$JeV^egb?42vy#~o0EU0if!4;SYOrcrgT`t^cO6A^hItE z-`}cAg4c=xc?_ER?%K}wKu!^%3?bBRZ>PftZfy3o=d43pvZ>cdVkdv^)T;KZ#?6#O z91-~=Cfr%Xk*~@#W2wGUw{P@IlQnM|QFPxZNWGakR}qB6{0^B}$VL!}GXvtPT$Y7$ zWt5c2SKULe_M2;r+0e_!#LdbJO3`J3_RHb!24XRcOu>8MM+)a=8u_VQu1UAO>Qi+4A@}(S$XqehzR7B4qcB4bt~-t^ zdaQ}JbGYyykGK=8++x!BFFdB};SsjcBIq0TJ~2^}c#~!?G1u6>E$IrJ#%t@xmYAZW zaPE$~fTbL$VQQ=Br?z!=-ursdLIw_?N`QbvJN-LRQjeDNk?bnPwq90*$4yuHcunoC zo^CHDzZd%8ps8CQoFlTKnEI8LPC2iuSskKw5A*$h>6-1$tS8+R2t&>5o-pJVx~ZOL zYdHmz1E^ztQ`?o>Z|BZ3QHwPt?@AH;W%%sUuq2@vZ9f9ScLos*p=#MFk&#XnFzjr7 z!ygPEo6B%Oj(+~8q+qRWuS;r@dw*oLO++md#v5n)Ry`f$b2yNHx zW7t5|=9;l*qaJdQv92oj!jV%?;irC0CVqN1AYV|&sFR*$4|5c&3zKjyY}EU<;dYmL zNLUJm9%G13>-lEm?Os2Tx)vQZib~x| zQzgaPNnPH$*X}1SWad%&(rY7uVT=2tUy#^=$u6Alz%4;NN>(h1jtUyIC1cOdm%Gcc zK2sxCK#W4Ai2XK8jYAh>9&YIUpimXU_bwmQ)@LxILP(sKD8SKn(VFx))aTK^@X>_% z4>yz-`c=0FtQP1TRaB=`m+bo`c173#H!_42{**Xe#4H|rP}VmE)F4aqi*6s_0#>Ya zf#bAaxLpcGfLCqQ>moIV8ys%Ev@qbKIk=J~l`DGC+MeYUh3tR}r0Q4$<%CpY;N83; zkeAm>J-&pmjbV*=?Jk z=)Pf4aO+=Q0&Yi~4FfdV>^T7Xh{GaWs_n=`?{zTZVzm3mjl^)mwMyQXln0yBfV5N2 z_)i9MgICB(_Z01pEHZ6@s9VTZ#8laj`Bt<+8%t*IQatN0dNBlUDTRXv`_|s205q~> zeKrNmu!@_9s_UMi+wr6)tu!dX*78MqJAMmscD(aCxrmRp}c{S5hOg?@0WkSlDOQPZ*QJjz!vIUMDA zudq?E!Z1@^5o@Jo%gHX)wCbe{+uPr z;1M*8!%Ir7{5V5&)J!9E)E-}D2eXBYV-+ZTmv&?$|1v^d)VBE3E|555BD8rssK{{H z{xttC9{mL!C~YGH16~nC>$FbcaXDDqS{LpoT(~-3+;t9D@K9|g;w+TeacSNlg^6G+ zz)76u=qc-Yr~7m@#dnqB-W%5wDA-Qza(UjqL`BKQ$hpKn$l&g}Wmg`L5vRem`!fDp z{?498<6oP=KLu5A2?0?#Op%F8WP=|2({o?3yUfBjQy9ZvLXGAPakXOMw5?4>(5j5h zi$Mx2$k58J2=surmsj78G8pi9ktZ&AwS#XL9+#6`PKOWmHi1ZlAJ7e-2U%4i@?m6@ z(b%~^hI({1XbMpg=}=GEv8J4Z%h+!f?c^{5DzP5-B|W&>mq_GajF@cLg#`NZht1$V}yf*9|5&e$jJsC8YM^mMY>(-&9sOblmslAFPBV<^vxDx-Y^PApj? z=9}7YT^J#vX>u;9R#vcoOb$C)d+{gW@iL_6E*%JAR0*a)=1o!s+{GEHFmJfUzFzL4CN;7D@Ed3XwS1Z6oR#HCk}#9Z+B9syaJJGTaK z4~W`2{yGhfoOu`E!xog@KU9a%JZN;>#sDZrK?N7YTZ4tSSH@a`H%#;^pI(;8s}vej zmOW-9Q)d!$c7I^^aTbU1unL;uz&S0>m0@U?U(VP85=tqbp*vvMqgo~ZS)FD)dd?Rh zH7}s@wLR5$NH4tF@k{u-JwHECoG~QdwY zYavp{Q=Etz%VuF$Ykf&$J&O8LG zD?Gsto!@NVSe;HC^-yI>jwoi-=!;#kt=npcN%46qY5alu^9;FXIq4>}SD7w~+*U(4 z1(o`O{s_9kHdxhG&j^voTq^~V|gm$>f8U&Y9z zg_N4@Q$_g!D#Se<-tPp8ENYva0K_b+!v@HP&~Rwe@^RI9&YanrCg4j@XDbqxs5_#A zy9>5ZoZX0*%x3rSoCU{6Bg!qJCF)-~j3GehHUzi7dZPkQu6IVS`}D?`ZqyDi-tLF2 zxidTrB_>)1$M-cnFg5GnQ+GLWj`KyCh8ph8d_^zJt z)Qzv}N2GAJ`nIwx5tSu6do6J5P2Qc4y~qa=r#ttT%!l7;!CGAR;Ie_YF5k)N_@L9z zwDmGN9s{>X3L>A8XS{a2QE3L5dthg18f`nl%G#F+TS8fLi)P2! zrbt6{J4qxwDrna%!vX%7zE4+}jjo)>?@T_Uq*Jv+rCGclq@@;s5Q#4GNF?6g95o5T z;fc779w4!a!;=WZK#E3CS-qV5(N351ElxyUpC)q{adwq<`jgjSLd(lOpjuiaL_2Je zIyu0=5d1QYeTI$1_kika-ac;AO~IUXS5Rp#-ljMmjZVrd2X8KRhmUno;Mzb84{SNv z(-4)d3+L@T0Gn=z#fA=Z9a?G;z;)M`ldQf*kN++=y4L}&=E)`ccff{G_ix5-m}hX? zP=XRnA3eLk;{Li42P$=wHxiD{g{bNF6&QKkEQu!w&MFTh&Ro{1MR^jC!zjuwbSp_| zX2FaG0qU9WwT8@PtVHf@URRdK+`<4WZwGxFDpRW{0+ah>Y8|j!6wBni9L{HmF#SGu zdE3a@!7egY!V7zIOL#`JnE9UfiaMS#Qk=kwfvctZ3c+`Z>33ZfL`Fa5pDxXDA?3lJ zmlbIo4NF`?PdI1VlJHd#yJYULA%cM0(r%P(pO*#48)&RR*l5=KS8^w70e557_2+mb z{o&M~Yr?`Lj^iiPI#_1O|nazf$Z8luq zU-L#ud+kRZP2{OAi9v#BmIuG#;&d>B^pHd-Al0hDCuE2WSF1cw-5>u_zBdT&cY?CT zUW~74sAdaps`BuvD-wJRH7B+f-zmLGjL6yiu8b};ia3Cfaw#|FbH<>HY9_#*iBR|q zt&=Y#SP$dgY0HG576tJ%geVNpK1h0k;^dTb_$=F>={glkwxL^i%D2Ep6P0XUK4c5t zZ6c82g~c06fpmB&EYt9$-2;Qy#N4@8;B^qs!S@W&hM$|o>8pZx2A8y`-EQ<&hl>CT zo{AiBu##DkohVTsHWm}Fd*I$=^EctHpq)C$HCH*a_n;@^?BS(Di6`9m`g|5=&__+N zgj3UG^Hnsc&hsn&qz(p*3i&0|FP4`$5V%{pt&ZL7S7@NitLj{;_>P|oVh;ppZ&#svJ|iytoeB$_U**n zgn^(Y4#Qq{oN-t)l1)=DqKGW>POtO4_Kk6U_qbo~8UwbS*Tf^~9`vzp%*wB&NBStN zwiUAumBi?`XFjQ@Pth>tOzrwq08;Z90VzX^&c^(+g_4(hHT@9p&`zLATxbZrrZPgh zEx|vXLD49rl#e^8w!i>&{BijQUR85*b$Ch?DOIJCkS0o>RXM#YaVQF zysR>(C0dQvb}Ne=)y^nG8LMerFY$u6xQnTe0o`*zWg;rB zxn{H^k&PG4>Npi(Dd*;AW#W+?+aa!-a)bTyW^~=KqYC*nQ&ZGTNUheIb5DnX0iQ|y z^3d6qcN5;qC^Sbbq%Ez5h>uaOzzjXPLkW-a+cH`}jottRb9Z= zGrcAp9q0l_JHF+gwckoh<%2sbBA5mJmK~*oqK*XYhgjHq`)g($oA~b1Cuk*hEiEsW z+`rLS5aHy5@v%0xMO^?!Yr*uwoI!-Hc6lQc(Rl28IfU407h||n zFjB3Ie1_{EeDSZk$H`xRC=w=$Xa0zc2G9+_jmSPH6JI%-K2(Jx?svVR)SW>;;soA9 zxbm~qO#~&!EyH!vkgj#ez8Wu$t|@fAD?lSz05!B{q>|_jD|f?R!4HLR>ZPbY1TU>> zG1|)Cdi;_1bWqeC52wjn1$^@}?u>Fvhe7Rxf2sRT3KwUklvNhiZOxasMiU`@s>Dw;6<`cMJZQ`|G8Sb(Ncr)RE11 zB)fRG(A=NDw&;2M7oMj%bA0~61_M&i$A_5%RAg7U;^BEh;^zYATBeh{UZbJwXm()9 zzRk49*17A>Psqy&4o7iUgK{^I48Vc|QfI@a_xriE4mM(NQ*(|9v$N|Zi4Cl zJ6*a{hx`c{?At^e@g(yL$}?qAR}PE5H&}t+Y3e!CPld&dvm~@!oCQksroo!7insCk zdGc?zLB)7ZwE%p8`;A!X>Aa? zrAib|@=^%7z6f=?>?hey)sZR31IXcUFVKqX?W$) zPTiTNTK>@yi9G$;OpwNj^$$*{D7>pD+KbrJA%D&Rs4uFD$Zm#R}h=Uj{W=1<+ zQpQzu1i;i}Yh}-bbNzOnL{#RQl1_^IIG5f~PFH)R2wYdVW5l*ihw$m zai=ER(%*)E&D#!nG2F@oW{fSf>WFK`%6&HpFO+&_#NZ@ifcN)|S*49~x$OwDNF%ZB z-B*=)mJnm!gEOR!FcQa zxY4V`Oqf^D5rTv#Re49c;Ox=jadGQ=SpqCTqF z5b`r)$;Y!iHjnEO|Q1BXktzsr>gw&L{wQG_N%u5uC4LVRLizn-~yix4-DT|=x)PO(}=4s+X ziK&a`UiR!W&7LMLisH-#cAoI^PZc0PYCveiQSIOaKXvwO1{e+j-`ZEPH7>u|2WVzQ zOHj4QWP(@!lA^2*)Qif{EaavIvXIRCnG(MI4**3#y1yjZmv*9a8da~~^5kN~LT^9y zl^q!;Mxz-^6L>}hb<#&2-*5~=1I&Bfxb>2gN6xuZz*n=5;vPC2T0fCCKC}gj_sfY0*nJ-IFBqyyEE5{h_RW3}uTfdGTW} z&*(=cJ&9Q8VqC;KT1u{imsC<60<6?F9&Mr7+}fOR(Cw}Kc*#LMuBt@SRHRGZ8xY;nu`QQ`GYg2PX4isqo=;iSaV=J898QIDK}#n-_4_-hc)8{}@>oCHSGo>(UbQ>)-Yp%378Ucli%NdpY6z zU!1-ltLDV(`g?>OVZ}{AA(=*=VAepKJgF#{HgTls?x6PQ+YC4uURu0`1@Z}d5oFWt z4IZ+$ToI>VwJjJloZLrGnUK;cNkf+VQ|E4JHzWdpG|g#Hs(mLjk?j4tpT82f2!Qol zLf@tnWDx&@qg!q-c3^g!h_N?*IMN1IL_wmln%fR)#;fzw0+cA?{+XTi0%7Ar_D%B0 znoai$j6W_qkPL=(b9Pxw&Jwr@-3i~!U8uxO1$_!1wy3&Vttxh-VD(2ai98%>O45pL zfR8Byo@x6?0sE`@J$y88VRbWZ$EL=_H-utoCqCLqON_0~+9F#=Nz?&^?mL#dlD+h4 zXjl0P#b%AEJPIuIi=8K@=ETAlzvs>)NOD0wa-2VVe~mtkyH1ilXrOg?*hevEls}aX z{W1?ZD8Yrq6EW3}=Q^vQ*LJ26Vn?Ud^gmVA*(q8c>D&&y$}`R4HGh)EnD}S^Qrwjj z=!56z6flPSaMa@o^=hlKVs_eY(d;v|&ci(pl7f zEk$}t;=7H|mUaoD5Q(&9Mp_my@I#bSN-q2{(>sWaZHc|2pnXp0dyRpoL$46ig2na* zTSFztCmSeR3BZt)iU zN$|v5B8$fLE@_N)W@uZtvGR=c*xn{p=$qj&keQgJbm1+=KbY_z?OEK0z4`R*@1Y;~*FrQb8 z#7U%z+D-Q{dfES{ZHw7P;}CXWO+Af{Ej%J{9HDR`Z)S%_^Y>cPO*38(T;HVB6Ginp zU-#c?XNyKN;49!*U8#7m1LfnNfy>nq4n3RPL|k;{+L_(ZKZoFC*@Zus0}q zFI@-3V=&9N5;iPSt>nwW=(A7Gw8eT$Q}uc)^^S|vD# z+4TmML zZ|-|}=!Fh(0V`|6Xek)fW@2?eZ=6TxA5U}w4en~S?9HE*2fY_l*?1*op4hJaJ#hZH z{5~}IV$l<73v{?fntp_CDoZTjtftPlgi81W+zrK`@SP#W^1cxr95UIS%zm@FN%eYt zLR;5S=PO_ICW;?~h8#d7&we7)e<&3V)n%2_Hj4X1ROGo-yNZm=c63UB3u;=1 zs{?ftE8+$4GClgJC@~myjVr895e`o&pUG7{H5v;v164kxfkA-rA#8B(l3+Yo_~}_c zbBxa9=0Wg53rv3n)`*K=ISro(Kj17fQ?RYC=?r;0J*i|04@NETV~(b~p}j){lcR~3 zN;78Fi0i4wIckrqPh}S0SrAt9c;I0AC@wf;l#(xBAv_?TXy}R7g2(v zX}xm7rEP2}!cU8>ct+VfI^-bx$m?pgse&Z!w@htldUGMvwGeg@?zRmiO6%F}#4Bxa zOQyD+n3Um|x@P&5!%Sr=51P2Zg%hNg#TDA)M<_zAAOO83ALqUu z)yh1=6j|WqpM1SKL;hOjjaPG8%d_VE#j}p#gGM)<4}f<#TZb@whWucCOZKdQmoXAB z0@JTPSCO)uLli_?-%XXuK}jq1wc-@%UtNKeI^aZdGDXbwX^%F zw(QvRQvbcvT~uY)fwt$L9U9xg#EY*6vgudB+y+bA%B1znkDD%8ib&x(J;Ma&gC(%C zFYG$s)MLv95=-}8iuV92TC0v6Zrkd!)#&AAnDpcudm4BQ^y3D*9Y1y0o&}uw>Axye z<%z`qW7W*Qtr`u0-zYJA8L6F}r6v&ftbx6y7xv-cL9mR(eZK0GLS(chDalo8r-Q)E z+Z&ot3Rsb*h~+ZCFTcGT|Cb`U6ReV*z-8&Da=Xee4f`v4fTqh7Hk} znrDA)%CFVp0*|MhyhFx{=j@x?Ax|{P>Wl6~@RLf&U_|EJKd3ZqeZJ|L?(1_ui4QYn zT7`}80dr9`Tge}X4Er}0F2ms8%key0LtWg44{5Uo8UyBR$*gh*V<6^X#)*+2vL$^^(g`>!I$Vv&%CJA5-7hbi94-ct_m+gyiTyA93SK0OGUs)0k79>6 zr+`p(!4|8gtIE^3$u(ORyH}s6U*wVhwyZO+--V1GzxZX1H}8((>0pjIO3wNKoyNi~ z|M<#5lIp-?2a6=l5fgWfYO1A}hhd71&B^2EXM zgf4w=QE-WzP+_KAb**HgM0S_`pc6i}Lr;BI{xcqs_FfwGt2||j>%)5PhC9NWIVIP> zbuM2;B1radL`!g+Q8)$^+L;`W^6!izB%+$SCeb&7qz_|~LYf%vZ+G%=iSlP00n$e` zA~bNqAY8wp`=OW@*$KwA>b6NS^D|;Mr&ckd?)18+Eg;|nsKY67y=6(eEi3x+zJ{@s zYk8`LH1K@D0%*>HE{%uihV2j)F`!eu7+`*c1Wl)&#I(mHSy>x%m*1xkd^!t+?JJGiVkCyM{vqN5T?MMT`<-lS8u;?Yoie&QaAi@3h8cFBgy^60~RO$7j< zyqNiZ`iW4~Zv~ zCrG`7jB@?T3sd{>n|e3rm$i6Q&a@RJ&5j6#&`BxXykxY$mhS_83d{M=7-os`au38+ z#;LiMly`9+_ie5ep+r-3P&qVWU}nla+CMe zCSf(k<)F%nQd0uflCafme%<+#f-pC0rwc>w31x3Lv(`XwSmSGn`*2l-S2j>>t|C_i zUJ;;G3Heut77M-Jp6c)+pnNeU4Sf3V<7kSquMM#|+uF?6gV5UD(mtVfm z@FPE64#-pT28ZiJz}vh0ybPXfY3~3k1<*z`K|B%TkqK%)tKY*w6c`jQKSiU$x=~VG z=a&so2Z1@x^9WLuHoM2 z7607r44Uk)k7-0LiCS6QnsI4s66=op>z4PL22C_e)AL-GuS{#FD&A~nDZ_a(u`L)b zo;A>RNzUFsjc60_Ry3xfevw7hXrx^1iMcaHMpa;$jI{Jcgt3NN;CG9)-Td#8ZLq zUI&YeCl@rH3P=3rt7w#5>a;;-MrVSFWwtQM!8>qaN5!0Trw|5g1u98iUHKz*o@kH8 zfxk<(H9hnEq9&&uNxlH`ntX3W0pyr3B*n5PY@62ObsGXyb>+qqfz)xCE%9fJYSd5x z!!@4wBw`6D?0*|9BC)#@(S#j0$Sn{F$E@*NpiH41eLO(#Z<#_vzMmBm z^b`n=53aiEe7PuZwqomF3*i<{L8|tB$L-UGOaRQF0I(n#Ji(ub)kPkr%|9gQ6OuFH z*xHw_g%GuFyLPR!qVpu0E&Ez9omEUEsskeH%*W8L$ld_y)T%)w(Jv}_zn*m+FPmA3 zL$jq}EX$L$mpoB7{*Fa3T;99|ajibLTy4?kRBQev`lMn1reV?2-?42}tf{@s2$HEz zm*IOMODyd~avIxj3>1A_qPp1q$G)Gx-jUW%IIOV}mTV?2Eyzbi^9d#I$t=sH#CMqw zN>}dFuCEr1;Zm7fCCr#ue-2GQjJdBcW~%fnt0^@pZW78X$1f@?ev)Oq*()pC2`L=Q zL0$-n$#tru{EEq~mU&t9Bhy-36 ztIKnNNP(Pq5cT-p4U3sK1ez|rGj!!wXS9y>%eOshmySzyKd$m)VLN~L+HCiFr_lpQ zhTY&iI$xdLEV9geg#qFTih1oBoY>l)F$4XUR`oYum(HkjU}t-<%jffby+}U#`sFnNN#~F`twF_w0uvUiofRQZq#X_~V40H>5p2U5SQJXOhJt8|2A& zYACcmEGjt#c7Vl8d(O~bLm>T|!3rKg(8(_C*AWmDn?ih|Ojx!BFh#fc?*^acpGlck zW{w-kY0}BbE`?Fy7eTa36-{Vg?iV~fDY*=Be)t`PDw~o$(r6nS~tLSo7N;trFn=aTS*={2RGsuY0ZN2 z%CMifr|EWr!~kTGzDMPB?Y!Z|SQNiyI!SHE`8Y#L?#-4N!vv@)n2#JF1lf=S=Z16LlQ}6yZL7_g z78!t_Au44Xd6}O>KTC8gZZWW=;#jBu=6kMT8M9K8wDn4=r6DBdRVsR|;r5N%yXrVI zLjH`k{!>Ao=!kyG4nuqH5s2+3-j4@{!qL6(q?d0w9mMv<~Ed~al{4++&p zfaem-r)OP7fA?+XwmcH|8A0NL7HCecM{M0Yn$8OwIJey7x&s-GPSh+~2TW-NJaG0N zC$ZBPkZi-%FIII;G9CsFw}}2c7S&zI-hlANAM$iT!fi#)&{pcFeez7Bjm|MStb7qN zFVnYlb6=LbLnunFBne0CE2po#oqE{zI2PuR;ouQIJGdOy+G_G7x@?X>k4H4_EvcI- z79lRsxvSVHjj9Bi)gimCKuhuY%j3of=}LgC+HhEKq#rG<@aj<5Cl1YuA&%VMZ@Ib$ z%bAiw)}{uBX*B&)zs#71daAOo4-~RW!v$lVCm{0Mu^b^wcL+Q;R+ZHA1zR&}E&Tf{ zlZZhO33%M6I%AZuWuD}})hRB~{^di_k0F)LzE^+KRIsOjO%q6(K}^`trQ)qkwR_bL zj=hLu+V=4EdM3)$;(zs8l7auX*=YgC5X*E?N&E)im`Q>7EC?O{a>oO)HEPt`&mPs* zWWD5l2!_6SnOLM~QPy5W7yNQYmm@_CG`t!V@Sac0t_r1GO_uYQsY)^?iIyW3wwi*1 z@N699y1JJW7lLgNf;6)KJBJlMB~6h04_wvtbqb>ONN5_34;r4Joqj(fTUWlvY9(i& zTE?;@GnRKjeb+%L-~0%R@F&mjTck8RgNd*XdT^yv`|s>?&wjobSHUfDV}O-UiIflu ze(HUCgf$H-hT?{@A>0m?r1YTLaozy70vonG8)&PcbS+jQV-I37SWZ#zt)?8mgMo6E z{hHCL2!|YXLTBtZ4C0C*4p9D0Kxbd82}Y02X?_$X-n>8btc5f);!8=8mTa&XTQt8b zGC`@+BW#PQ!i_bJd!jZ4+4|~q76~3E6lbl#!&=J=*{)+g^tK(|Y=$?$8!=b-I?)|c zqu`ItWAgZoxLsD|cGV%?CQX-H2FSPm*pDYrs46PfXe@yv2u_x|0t~l<4QlvAXooyQ zCNI8h7UoUsDS zXw4F_zU5dcbS~V4cy2O%n|~^bi(#*(L3&Mv>BQNP3?CJWDZocAk5-ux+cr>R(bJt- z#IS*YXcI*YYg=U*Zpi?49H%+VBBrXFSUqPTzjDbJMULV38dv2xtzC$h`L$qNVp4!M z?44ic2Ul(;!W}Pe6XT-xmE;y+sM5e6q)_CV7PNwy&F)FYpEpMp?#v1t;ptKZ!)*Rp zYDzjcSk;rdBiV0z)Nm%K$uqmPec$q;`~7HxzkEXy9==88*Y*@fN_f(TXB8bE5H}hc zykPv?)v%uiXw*nl>2$pp?Q>_Un{ak(2~`!&Mik8?XcKt7J~_)zu)c{k5!LgikZo z>W-c2YmZ~?gsOQqoh7t;Ox%c_lguYy?`ia@R{x3wpxYN!@oI*_3$CEnlxv*P^lr1u z8iD$~W9NFz-@u0CEQehS*-lq@>V+zO+-{d9Zwsx5ZWAT6MoPK=&rtmq?Vd0`4w?fA(T#xyQb*tZu1R#qOJ^uW_5&;vK%JXWrJR4 z3Zad57OXs+&2vfrtTwLg_Aew90<%N_2MoU}haHZ1Md1U_pAQRm3Itg;8H<3yF4>EC zyv=?M+V)MxMnzz(MuZZ?i8o6oqToO|aHCeJuw@(j(6y!%5yjcihfC?Reo?!}Z=v=A zIScI;ZdhwtrJRMcvKl85h1i)xf4pX7NaBVDc&xM)s5fT}^;1??z04ChR;Bl{YtDv0 zH2_5Rir5UsuLqh_TVqk=ipDUJG$mRKmMB1nBtsDeC3-(Sut6cKY8Ad3C7ZM=Ho70R zJtbAE%y-DIe;I7gjb?pL?(}{;nNJB%$n~Yvx(OnPS9qIfw%s&#?y9o;ZWPmK2oIYW z$vsB79l_foaHi25%TcCh4<({(z|GrUBeJL7IUMLOG4_mOU`qvksOw}MZcsCPN|{Jo zCm|WY602_L74VMntUue$MsH#)x^nU9OyZ#t)!xj^oILLXX{*%w@&mXKYX%w-(Fq!| zs#3z6-bD`H?{soj_4g{d{bBE#5qGfp@J`gR0`=T*Z{t1)Z`kthq*OI8=s9}wY&VUj zWRQ z_9pA1gBvDfrsY|$(J1roSnE(`v(uB0vxeXe$WI)kg$r3gPILYE{_=V6X+rrabnF3~ z)fY)j?^Id)#wV67KJn;l!t#`lku{GQ-HGro^o91e+#ym1!;q!Hga0mu(~jlIf?qorkE6K9SMX2@YP5STgRw$nN+$3Ry8SecSqkSIx6V8 zm={SoFi=_o5^6})#SI4tj8M96kSEa-duRIg{7OF(N&uDR?+Z)!U%GsJ1gk2Xb`iSt99n>uGf|(|PgJb;FMoxC#|akJ zdkWO7E<8~(mJMXzrh;%G%5E#=4Db!G2Y3Nqbo30K4uP#OB5nEN?cCcrNBb7EZ~2Qk zxIrn*`P4?@!7YOA3V%VF6^XvviY15U4C}ky7|Zz!nS{9lNA9LUJRE{T1n*gpCjj{$wCgb! zr9fDC5Zpbyk1lV91n+wQGhR0s0oi$v`D|}ktJx}l2^^&6U z?!}9_T?fyKyR`XpjX!7t0iagkc^1v5shjLq?Eb|<=)zG_Z-16H)=ER1GVOiQ9nKjP zyMORP4DDq>Y!9lQ4393OqJ#I}-+#cr4cljiISsHAvV4Vxo9^K1mlD#2Ok(T@CjWZevn{Y z!#~h6Y9m?Cg`{w0kRh3LIpog;<@>1jBBIr}gG0&xpY^ysZ;D4{(04Rbe#ihZ;b{z~ z$dO=l+ptyGLKD4(amn*Un@Z#6@NG2{xehrHQ9e&9Y+;s;HnZvHpHPz4YI87 zfWVpQ@WjM#f5kSz(C8?rM*z=jF3xHikK<)X*5#Jx;4)C} z>*mbkVzrXqL?vR35s>(*+X=Yq>wpqQC=@j0v$hEE1;Ed~`1E>&2y3Vny11Chi&T(S z-a7!WL6iM2AQO%l7fH;PDiDkwdwfOnGmqngiRE+^4;at}&(q6Y2e;>8@Ohp6W*+5# zbk4tp`E9epu<&F9c-B_lT6%SDPUdLsp9c8^MCijscMsEKlEE`56_5S!B^M$lN9mBK zgU{Bk#&rpZ;I`=*OA&deS6nJeuJOTs2z8%8rh7Q#EaZL;eMaPtFsnY|$l5NRYQG?h zngn5-uPNLB2e!70LHlTE7x%T8mJ=@6-$~&Z|;$CBHSr@b8rltJy}x- zbwb7?aP5?@3$N;KM!Z3!pyE;`^PT|tXVcsZY4-G^(j*toA@m;OEOD2jrk%lqaRyEP;uaaNl%NnYd_)#wVV8A<p34N2SLOWV;xlLpy%+i3D&pB_MhdD{D4>Q? za08+D;**EtmFp%QzaDZN1*vN|jzApOAzy<>#X9jsfnM+eG?22tUTbC$Nt$oD*$@EX ze5uz1tN!Mz`!2@7vC3xZv!f<*R>c*H>T)Cl&3OFgg#ZoLIIh9nqjxeCL{1cFW?Uvj zo3{U#Cybo(^NpFltBl2IEi8j44M{7O5~xaD_3wf>*St zd29g7h3IV)Xb+ixWUjTJ{S*L;@^A8>$)7XfS9fhz`fyyo8YuKb1rGZxaeI8KY_<7s zrO!+;is|?v74B2BQ_L1(ZW?_7^muA-ErLbMrvI2a`dPM0u|5CluYrsA#Sx0_+Vp@d zf?7_Q8A*wJWAKs%P;qCfkB}$yXZq7-LuC;6h1$sI?WfcP>2Q{Vq>__191f~xQNuAA z#jy1qk~l87b}OtE6J@P&@LuJJmk`t-HwVPyeF5F27JDg{!)C<_ygF#sC(Qa`k_nIW zv)P0|!bm9Dnyn7{#iyQpWn1z9I@0iQS#Yc`05nYK9~(qxkr<#ZUv40=Gs07#WeeZB zWFP^@)s(}3n&ZY>AGqscfRF64Vx5rQrZ#XtJi`+e14;E0K{c(KF`}N^Q6dCRNg);ic6qIj#Yevu@)!5wDRHg9?w9*MbbAP z64*tIo%R^JRwD{sft*Mxoo*4Z?hLYnCl=0I& z43F9`+(dWx9F!cZjk8;d!4CWhH@xZf?-**HG|@ZDa3(coD}gd2!)V0lqR7WS z{^_6a<<$g<2TPJE1`q(HPs@s|Ry?^%L)qaVFNShK*fwQxxh;Rwv|c$ahSMzEj{WgK z1^QODOvSVqEiE2(xV!#2=T|e6V9gcp2#+yCLl1oc< zN-O!cIpH=c`QH_hDw=|G%I&=L$Vrt=JnGDR$t<)tmkKUpqmVW1O-$suyVJUkuTOZ4 zLm`zZL?1yUEia+1RH-TAbQ&6$inat)>XWx{JkE0*?k1}^4`&Wh#v3F(FXUt5(mTAh z&pK~%EUaE-^H;>+y)?UkXRvz&Ym-MHx)h^|B5Ns|;dr%#$8nOaV5SIY4U+5RXhQon z5pFpT%9)QaKVEeCT?x2h{B+Wu*{PRk{7~w2{dJvm_Uk`qu_?z5oD0eD?n}P7niS$3 zd$NMemG^F_8x}D1P`tKTA}Qn>1jtI*5Z!Za9=Tnr5}n*~+V{DJ=wX0ZEi7M7X+vq< zA)?{OO&;MDg9n~1hV|PjIqH{cVHl|}dFe8s48UbjIBF)O{1p`wfW7tOrzk~O`OS|v z#y)s@R8{;b>auW4*a;*p{GlE~gU^nUk}3uew!VLpFSjLlaiM)ST?LMH3T*vo7M-(FhLN9 z3_7(lam7$Kf6QLWu){lAL6LqN3yX!MEs?}&%WRI$zL3`leC9p6={S@$Z2egUaY01j zCU&y0yk$gaa8ZiB#P;9UttmB6$R+j2E!)%{ndz&&;E-K%u!#0Dv^jy9n_GVANlNj` z(3>Gm#NU&nl1_XMkh8?czYrO;#@+!0Gl~+u@P8d{DL%m3Hn%RjT(22xoW|oHOuwCZ zujAnO-RD$cM>y;WW;|*l4%tn{)?dXzHr)ca9X~EmlDfoYZeKec9GBix5Sbt>jcoc@ z+}{Orxf@R}-D-TNqaNbjWzBJ#{hbA6<4FM{^(^zxMNIN_7o>tilP&x18Gw@BFQsld z_~^U3Mw6hC388hMrVVlAJv}Ytra`&E;W@p!^N_#*CLsg={X3BL#j_>lIIiVKmS}1NRz>q|tl@M4q>`7l>m$Y9BBmR4W>B{sA^i6WT&Q+Af zfDhk<=?#&@#Vjq6kDm|LN-ZM}CJQ69B>x9S37PiOYrxCG9rm6a>NFru!wa9c>PS>~ z$rNKfsupd}PM0L^h+&_MOC3V&DvN&JE-9R>0R3YSV=WV*Ys_L#h?IYlE+UMTE2lEF zj=W9G*+FoKL&7^Hh&H#E-p`YgAex7Ud^-py@IUzP0QvkE(#T@MXALXnTvY=vQ2qXvbU#}izJ zH8x*=vneGqIas$v*vKi|NMQG-qQ_H-xX1x2^@*8-87JXNr&G&!aLmoa7JU zfTHoeIjzcNQZ=8MBMW17Tl5VYIx5vod-)EZ$J+UX$Bg!7%)wDnYVV2uEVWJ*hoY)@ zX*dr@-HJ1a!JRYoB+#tbY)9U5RTgk>Omqk-7}YOuXSwF(%>+0wGfcyl6YK)oKp z?n2^CgotfuvoY-#jeG`Xz4oHS1_Z@E_rgUkr-mLHsCfPU^lYgne3!01Ph%e;zLvA* z*q4_sXF9w>zjD9#wkZ4P$%+73jfsr#Yu7#P0zX?u@=QYz1UEnW2=xS>n1tLnyJrdv zZsVK7TgWoK9snTPYE**|&Yk?qQRH9R_?cH4(NSoYw>)nF?X?sbx#j;&<_yI>xR)YA z(G-|`#!4zalr7R!uhg+QMZ~uM@xA0ZpdL4+Z?Po8%xrNlqurSK?7JeRhVJzh_!a9G z+9_{HlKBn*P61%wf6wtyP0cQ}c?8t-bW^co3K7hG$M!(*6YnyLT#ubfa= z__yFXD5ZH4+?*gS$g@3KntzlCO<>gu6WqmCRr!QV zx36D?Ei_gYR-X>N2VTg&*M4Wjo*uH2#7=a#M4G774b*+N3dk{)9kSXM1BwjqbRu#q z%MhO3IT!nagHk{{2Dk-mjDHC+S9AK3!=vRu3>=9HLDD}6sJrD-U*s&icAD0reJ1bv z5~~7Es#}(>!56W+CYxQ~ruzEbsCxe!?(ZS6Hm&BPP%S)8gBxYdSDnQGgNid;b-skU zQK+%vv_~IbY+sFn&`%wIJ+$Si7aeop1B1@ZQ+$Jq1OFcZttx?FSD0yibOoVQ#p1iP z(49vC?#c-KAz|9!rzf>J80z(C^m~t%3ev@wA^wz}Cu7`H$N+|g^&7%ZQpw|m2;U{m z3&vDtU`B9m+ohs^PQ^r+sNQJkw1DOhlEnYcn728&{SSs^6=kCE&&FCOjI!TI9;XWg z+ozT^4OFfIm#_NUCn!pJG!BDwBB2)NuEjJpXmeHb36QF#9GLwtPpf3vV7V!mS@u9$ z9SXYIC0#*-a(KUDaO-$qw^zS$Kl(eE$MEb~4ve%Kz=K=!HK zxRpagG~Uo^$ZcoK4$3fj;@&RM)^YaA@LbX`$BSpYq9FM1PAl@TZwL^0b@thoRZB$C zbE9Cu*SLx5CRy#nV^sT37Mv_5$C54I=ywBHI4o>(ocY*Og4JDmN z_bj2gk2H-1i;aOk^XRl3#h2X9!3ck6J5oxP3Nvp-K z!pN` zeUfCfL;d2;RQDP_2r;x81q^XlbmXL@AZY&yrw?QAZ2gE0x`;e%of2&3kfG%LHnY4( zA@@|jxvkzi0`pUzuqzjKzYzo$95+23(U4bWY#*%V^YDtI-^Xz^9sd!alovS51s`^ zi)mq9y_sDC`c+`6q}?6hGK~+~;Lo{R^DaDTZAh}tRb7TD8+uXzMP>7nz4FtbP1Yf6 zTAXdInk@WS%Yhx~EyvweI543l?QySMt*Z(t=YYmq70q2LWaq7qm1sLK`acpW0w4YyUg1LZg&hwie zr*La(ptEnznv-s-Sx!uC@2T5VXc6~|f0;P}RwIN{BRve(T)Ktt^r;kr&@l*1?P&={0%(rG}@yq3p>E{>*mo z-nd*X^K%KlFY^Ii%NvX+v|1K&8(aZ6DnQR1}^E7$w^?;R5Z^BD$+~ zX{jL7TN@(|N(gHiDasEwYs{O#YZoXU9;b1e4mop$2vy4uPsAvbtTs&k&vkR)2qeITy(PFtMV3j)Oxq4gOvmO%aYY)KU3kMh_? zyf#J9wojm50sHx;T;EwKN^obP1T$V3aY-nUU#DS zpa1r9uCsRqFX2b~N&jwd@lgZ6eZB2*A-~Jgt0~^nV~;@xz)lB#->pu&Kj7;|9@4Ywy)o|EccSb zu;;-5%pgGIU>Ds3;+X0~)i=17 z{7!{V(Xd^!domrg^VSC2+XB zMFLApOg`DBxoB4kJrf=>GLbA1&)XT22RZHP9pZ`1`I#DUCe$X8ZjwI9Qb&DCaB!C? z{_A+&9gI|C+TVc}CZ<(_baA=Xoo|z%@rGaj5s&=Tt|`ih!U}u%o6?Aa@JREBTmtDN zipfT~&XFZ)VT7OftvPW2C~}_if&ZT{onlK$G8=OA;%Gt1z9va$q~i}(@Szm^;rYb{ zbo0pb{;-8Nl;MSB;o_9^yqbP>d@Z127yT>V&L9TFC3%$`3WI7zhM32xqX502_Ljd5 zQQd{bzWsjL$jnMt@V+T�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

;M>+apB}f6HupNE)i6y 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 z

uC4gTC%j4O)lkepzoatVAB;};m9hJ>!T7QS+KTy9f>h5?wh8ZIFhG_O-XpGCVL zyuW-<^Q3YXQ4we=(AyiEj+9_%M+Wc-h-mO_aBr1(fs>GGW+Cego}M zQpN!U9;pLQ|E>7n)R9u>-!KuxsDuk?Az-XNUJ6Gw^a95>IuX5voO%1k-ThOR?(Wzt zG2#{L6j?B?gqJth7*h~R-3If~UqcGpsiEdB4!@Xt{W2AXC%*+xXLpow7u(m*Q`pcK zpYh~Waf7=X!}*SAo+bJe9|&x(F-Z&oprv6p(h_+G*u3Th%bm^oa+f(h%r;u_Dvpd+ zlX~DOHH!(}k!4g7P5P!V0ys3U{+mNw_>6$HSw7L{#5MHD>PK9s!a$+hkP+VG2QM>% z+o_e5-8efw@8X1OW)ks*=-#hEBuUB#A-U8kP;U2U83Y%QsR&kDr!-+z$ChfKD~#rC zqfV+WSE{e|M_Xl8QbTGHeFJcp135|4AY>lRp;>GI{_J31WR#kY$lFWaj zsZMb|8nXyQ{D`!_H;XODv)$^t#yZ>`i51C8SouH{-d*l~agnikM?oD>%)`zQ(R%fA zV}|5Jri;-lTujX5*gQeO6U1vQ08O3FU~fj&3EwT(()E^$UOhdu!E}44YA%Jv1h2>i zp$FOD5-A#R9+z#J1NJzx+zDL&2gD!=p^Mo9#v5#d$LWs?`&(NaO?KVe{Q@iztkO45 z926)m5P9TM&Tf}Qsvi)hF#LjQMf+LBiGTlWmunUDt8#pTzH#P}GK?F>hvaSRDv#k| z<=2E2$uRFF_e^8Jl4`;gHDX~KOI`e)7LRf^=Z&|$OVqGiAmF9Mq(Zf{f|NSAg^(#C zyvD1UkmzyxybZN^NC8I}JNuzho?&bEAUE#7YH0qs3Jru3Ep%8~*VT%l1d^$Vo%#;v zByd8bZlGpIb}~bI;eFIeB)Nf#BusOr-IO6aAG{kIK+@iM(CnV2Hi*yE@+z;}Pw~jzBkz2MWV)N5r;mZbNHvHJpA0$fo+I;I!a@1vLg{Kv;4A_9imB_uL;L>D>*Rd{%%vXIzBpQYaXG zgY#1nbgzEOxit<|zNVvL&2MHmxNH6ED8mmi}%Y%s#=_+T3>0AJ-Vz5YbVnL4l0xwUI(!(WLHEe5mi37q?giya3vJW7O_ zgI_guV(2n6fBHoYW?uC03&yu6z^h~ijsUow>Dh?63$CW*sma`t9`7MND3#Oa9i0gR z$HH%=HkrWu``?7W?hU`Fxq%~J$Kr1Dsm7tU8O~vY$r+HdlL!C8htti1D<+WE7>sI{ z2B%-yDXb5_LMAYu&dMJh@~hi?6bwh9Qj*{AYBhrPLk*t31uoiZaubcE6PrSu$_-1T z1pDG&D~t9XIUQ|-aBde+Ud7U#wM8l2DpvZOVKY^O^`vvE%s-9ya`#-Z0p90%4-B$T zlysEk@dOellpmV4#DCNAlOlKXgBz+?a=-xKwX*l?mmvU{v=<*QyqCy2(Z5odsx$A2 z3B2*1{+?=L5@{OAPOk2YhYx=yO-jSFfHES)OF3#*HmHYFhE$=2Wr@go8lZ<^g@&y& z=4S`-${u@isa8X&?d--$x*<#DCr;fps=`Ss$I$G9cV`mmzo zwgq`Xq#$&JB}C)%ZO2b;e~#F|SnzlCc~u?m%ERCd=PVZm5e^UedD`k%-W9zNmM*-# zZG2VEa{E&TND}UUyLIuPk6yyNGt8S$GvpyEdcHrm_BmoVSmI<;6QMg>Y-R0Zvoe#t zKkC2QLnul*XdfsXR0zH3e^IS11wr$b-=nTKh#k^h%UdF($MqDugt*|ng|exMTZ4!+ zJuMMiH{&?7WSfU3-gEVkZ5;oT9I@l=? zPx0~v(w*unlFAXZyJs}MgMH7IO%Cf%Jdfb}+SbP&2m1Fod8AFyNCsP*dS*h#dfmml z>*72S_DnH-dix-QTaV8>S@N65iT-}SdSerq=BMtk`7HLzth$Kmqfv^A2e%Q0z^srx zNdKkatB=Q;B3e0%UXP=+Ok4$Pz)#|!kZC0J9h=q3I-GI$lIxqnR(?$ksal1%7s${2 zNH7k+#TtWn*Z-q1{H5rW3@zAZ*QV@RnwC-7FOW#j=I@W(hPj?oLhX*b+{IKJ&3*D7 z=7toH`ly40e}ti63iQtRYl3r&GH6^UpMKolBVh!Q^HFp&xFkbCHG_szdS_m(rZqt9 zzjiXEpd?80pvKE-<5+fjWRR+s4Gw+;N)S9XvPAuap+HTkQk^c@&a#Z-?8M1FGjBmH zWox60>kKLG(gpmeS950>()4db!^NJIk0H)mO6)#3a&@bJVv)skoYML7USQE-Q>lL_ zZ@(y>Yt}mISXz=A)A9;%j>1siVn@lPc1iVReo1{)qg4-Bm2elFQ~G@TI@xQ5+=4@~ zTsqQWC@mPu;2+GWBcu$?0}$VAXebPYWiM*t1f$wGulum)t-ezQK(Bjz$*Z@>Cnj26 zMW=sWz_JlJ0NP{7@uGKIW1r*2npyrbhm_uJ`=e9=Rbx)cUKw5pnyTe6(R&M}o8(c4q!pbHlvpC>luuZqDO z;T1r60_2tEGk1Y1i8-v_a4k8iu(WPP0v*qT`UVP2xTE5-)WA3ijmp0ed5D)2luwI% zU&Q~r4)Yx!;A~ZU=rWP?SubL?R(4Nl>dDdWR1r2i>IBuAABV*OFB%e7CK2ai17&Xk zR2>SeSSGk$y1ey!=qKfR@gled7ZLI!ZOqbxlqILYonP>8XeGJ>LTQ1y z-W6ke1;ZKiRh0{CgiTbfxw3Ult51&%wdka(wN8L%IN<{Rq8Zm=Z0989`5C!a%ZjokZa)BZX?lMZh>SGGh);E`CcI|ETX+n zSGnXM*my`RU}vJnwRuFg?ePDxEb7|NLOIppT0(qbxogfWXj9gn3GBBnFrp z(_ptpEM$KK0iCC}K5u-2s^NBwLK?s61rS|Se)uFhU#O&C2YDVP0UxEr zGrg72S{<Gt4yvLKNhc`vmIV6K`D6k=jV|5yGb_@)z5S=3X9g!{Z&8TrnUyI=?T^6_yi zV}*W@9hFJ53e)`+%4&^X77Vhs#?m_OnwAQcJ!$CFVR*01!XDZIlA4stPk50@fD)4J z)%Z3T(bvh^S7H%+RQK)qF7WzfIwS4e*A@@?7?Gt9>d>%LTjzR%DO@O;L$!fq6ubon zQnH<2chwtb2S#u2VV2vJ7Sic?Sc5=0b=Z6 z>U+gaIpVE2ls7xtg|F)9RIz{e0wGqI+4ECbWkZj3+wut_cdvG5E7qX!T5;_-Q7?Q+(?HR=j|l-P!mYcYnP-`s~;fVC7iTl&s` zYbn5Fa}$!Vy9f7%d#=saqGj}f-)|S$@;3&vSV9_@KHz>p6G(Vq`dZ1eC&|MWHem_p zXP15O@{!==b{xM@#T+g*OM^fbk?I?YZKxlIOi+FmKXpZXC6;1jKCOkTS%`VQNFT2t zuk|?s-cKueTBjOM+Nc2LL;w65b-w(1(8kCfFzX25609z)TPrsp98V6eT}py_vlO2j ztxa-=qyAt84vSG{h#(ZK4M~1?8F2GLUe-c6pYVDb zYR;I~AsJ_;|LLTs#6g%+9|&9TLC@3czyvAmlPzrxbgfvyce|KKb7%B(u`th&k%pd$ zvZP?9HTOg28tT!fXT0RCXbr>C z-FBRg7sbQrX4w^oQ48eknQNx%)soXo7o$KxN6611w^xhgo}dagxz?v2H4=TBe%ra#Jq#Hx}*lWK|?qpcP_&s$_@ zxW$*Jn40k}S>zJH{jZf!gcbzV7F4)D^Ikho-e6(~celXn3|PD9FPL8lKSkkP(wmf0 zG(^s_s<1)h7fj+ANEj>%3O*95U0K3M{=Ev^ZA)$~iVlI5ixygr+ZorSX$7CT!L;52s-z;&R5|}!`BS^&Vhb{_<-YfacopD0O2dZa zX=3tD=->_Jx*|`lW+y%uW}^c39@hb>82C3b?l%Xu1j~;<#X6O7h$qO}@P3l68yl9Tv<1K>I44S?yQ zR=d_L1u0_O7LbX5r_&WscHIS5oQdYLBVCie`!U_cyFVi%Up^^gCR=f0zlMPB4?$%x zC}AEW!GeV+mV^GvgzXAaLRg@n}K$<~*byP?$e%80yW8?T{m;HhBj_tNBKC+FLi!xZWl~v+I}$&Q^`^*aFtobfPQeJ&4@62 zfE;>)yCU4YN6ZeSgVJ}LjD3ntLub>+;}vIzkJrT`LD{sMEfvmY4@@52v-u|<^AwB} z>|bhlQ_o(MhYdubIiUMvf_NmK*Lr9+ypv$7A7zse#P`%Twv%qfJHBCTA^hWqoADrf z9{|8D$>U+F5^B=aM(TZG686do!=X=;ZVdVC|yOmTp4olW&ApqN%c4VoRG|2=!NF_PFqN!o)@>Nd)SF!mzg zXu3$r-oI0Dhg8>(7QOBCn@5CnHqk~tAXT=EogfV_sZ?<|_aRC&9w>v0*q$;cEbOX# zO~S?dR*9!V{s1S3Xb831SP;m-C35KxgTAK}jR9oF#QNJT#Qq9WKnJo`%M*CGjO!H1 z_q6~Z=+u-dw!!tp7XAFNaykikL72EXN#zl7xC`c!AQ^Oaer+NRc&t^{xY@@2(+h#c zi|H;I-=pZqD6oO<*$T~$np5|u)w))GNiL(!mSOYhRY!HG*>u)&MUxA)*Fx(-JFZvH z1gh64hPFT2G!+vSk|oH1=t*`r9Ph-M%08okeg8Qb6^+2i^cI+svn@+u-lyZ1eqP&E z;+iI$5|nS2&f%FHb-OaRjPyWy;gI>xFg-<3s`ReuV!gG>Lx1m_wE z>-xB^!Xqg>WSB29puFWrh`HRT@UgL>v0T8z{iC%SK+$nlwjhr@6yKR^3P7^zV?$bk zbQ~kKXDL~pDDptDwmtF9Y;hBJWR^J2x)_xS_CgB0HNT8A^akLvR8q$Xjj(rhD56A$ zzg`hxo=o^}rjs5vmP@NMJ4b7TC8!y3zR@Mdu0}~;VC1;~kD~oeIK85iW!AmO6yYWF zhF}eF_*p8>;SKfz>#&((-?+wrsP^e{i>zEJxV>cGlrYd~v z_Gls8J#VQYtbCx4eCHOR(5&=M;pw)gL2x1Kg^=*x1P9|+sm z$AkdV5)a5k{@kn+N}G=>$?fS%wSKifU`q?$P7-FxTMa2ADw5lfNa>Y$yHTWgMz^&l z0UK+rGp}SO!7t-<|4#zT4Ss#=an zAAlg5*=iW4&}ZJ(Eyq04(SCK>GdlgxPDbXPt#3K-2M8U@iqs$!gK6IR6|_x0&hL6V z>_ybFPIU7S$k5@Q5EEE7lLt*-Do2{+PIRfPM<$S=UyH+=1a!wfH;!6b&l&2jovlI6 zY5Tm<2OuQA;g&6lMi2{l)s4OkF!A1`7KsM}nr_KAr zZFnLNOi#fkQ?k4h@(znwAr7bzk!jRZ4gX@71^r^KwJL}{_Y>Q-26_-^K4*x*H(+ZC zGJ3Pxl68n^mhd|sJC*OV7Dj6XjdwV60slQghSp~!A;McYPJA)td9sD;*}R3Jlbohd zFrs^MIPMmam`j{< z9uRA5xwY0aYy!(zx7qkhc+3bb7LZSZ7R^M}ESG|0cct4qCU{?#0Q7mvw|W9o7*UB8 zz_st31bN-74%aHZowd>7Y26q!CN0KaU;-6rR!de7869lq6ESA}Iju0VAkU~a7|hUMxjQab zfB+Ipr9gR66wb#PGcl%wsz#Ih;ABNdBA&sJNnRN+yG&NT=+=>PCNlUf z>WK~&9`MlNiaNeT`5_4U&n*q&ZDU!VN5JGgpS-ip$nJW*9`q@3j?fC(zhx8lh`g}+ zvim%DPsE7|_+0|vmN`4m?lH^0)bc}pSaFa5AzndoBdT>B71Fx1x|cMiOn*C;KOzbz z8I5&T1BJRsoJKbv+$QWk&kV-p@H(~k`Os@slZiEp|6zB=OBVE3TKW;iO=e+v`I7Ok z$3^A7;8Y<+@Rp@z11AcI7%vMhqsy_#WWQ+DFwD~!wyj84cc$M{D5p42Gm?PmahBQU zPc6`)5J@&Nvw{d-C*mV)*VYctQlglQ3t2h>oa7P@2vwnKNjz3HP{idO4LbIObozKY zsoU+mwJ8j2{8&ZGCak^CW@1I5LR3gr;HcWkcCtN~pgM8R`?(K6%8Ta1{^!GcE*#auB?BfH zgOk+o?=cXhJ-;*sE>_2|M$0wv?R8=qO>o2_6j8UjoZd@%z@B*ja{K4yCmb!hM);~% zW>XMk0jty!O6|l~0Q!6Gk9j+bvl!>^W?b53pbXLQw6ma*E**c3r60W;A1EApx(^w; z-yh$>1qWp_4>vyT6Il2YDKefpbi*wEMu`nW1ppHy0K}8(g7D2Dj8hYF9LQd%UI5^y z;reP;f)}#>w<^wEtFQK-|?gY8)`HH z>_Ab3UZp(;xwAX8IPr@48#P2ao#b$G~vTQ+$ zb-Dmn{js91GqYQkVT;;dRI1{UAuTe=u>LpHhn=YlQ9m~ArXDb`{(o?NU(f&YrbB(B^nSj%Gd9j`x8(y zUFn7obrw9;YP1LAkI8GB)KvSIHkf3qTUasbIT#Ydvx_hA>XY`>b?<9&FA_~E+?ot> zQgTwg+Z*0`AjWjPP&3%cYFX#?<2tITF;eeO)_@#o{<6Bb{gvaG3~^!KC;e)@@JM*Q z0{LH-MdYt^)A41PqbA^C4*+8Y9sq#ZR-U5#lGkOVavNYK( z2m~KzFyk5^BE?+0`bGTNi-747i1wobHQHvT-BvsRE2d8pL=p~;0cKr-7dCau9;SRz z9vTxL(r6VdL;9&%kMw-Ph#^0iL`J;mZ)~URM-H+&2P8nlPmFXZWzp(##-jB3W1={5o0g=C{LiUN^nldggG;9WD;-PA z1J*Eu;7zsV>l~|o$&f9Jd}ji-2f@)_e4M7+tc!KbH2nOhO5@d_%$&2_3~FN^x2Oe# zl=$eY7}ZBp1_s|U=`u|td$Z{w#Ch4GUGafLPDi)fnXIMnt#=hRgZ4}^yQDE0*$r}o z@#0}l9KESOn3Nwdfz8%e#HO@MfIjNFp=o@})ff{H z?^!sjC}IB(DREkln>8aq^*Yix%0r!Nu7v@0SPyd!iDM>X6w?M)cpv~sHQpms4ZQ

ENV;S;K5k7AafZDmFSHC?=*9~ahQXt#40 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

    TPO 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

    PH%@30U~v4|4xGJ1ke!UP#5oL1LMnecQYKstY} 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

      D_fy>7_0mjGePP(|6M04dJubikbW|dv|Davy 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 {C?g?U5P5EKq@N%`N;8@i?6;H$$IR|6^>0 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%0D?rA$4x>~d13rPTGo8OE`U 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

      Mbg$ibJBBzCVxBe6 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%0Dt)4HP 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[pW8wT*`?CzxY0`DDubb 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%0DIA!-tcU2d=p6iIDQ*I{&oK5z2_Wlm^rG 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Ŝa!`O2a9RD~_yqgt1?(RiPQnh^(+= zP?Zux2owMXuq6oK97m^_>g!pUw$Uz2;hkcNQm&&R=8QnHC^F(JHUN8WtnY~E#!Bw> zZ`Ur`)!@%HRTg^Nao_1?RZnS47uk1CU&2Mgt&5Mxg6@bnT+kHNO<0$L-UT83SLU=i z7t*Qe9V0lY5QcFcVr5DO!mYOGR!3a)-%9dJC%X;PGSRzLkiF@xE0!wp1c2e4o8zIN znIFs)$U{9L8Wf$aHX;BwM>t!EETjeNz672bm>of|iOdl+keguVQxJ-*_P6>mtU3oE z{%m-k%^z=d@&C-%)g31>2z!fiC!x!|UTJNr!7Zb;48yX=4hJ1WFgNHuc7x+UVZ zCQJse@&lRTfepZ@-(HTMbUC`L<#OZ~=Mp}fO-L-1SqZOOZXcu|`j4~p=Clm*Ga`*= zO$NyIuS}x4PUNJ)Ol?>+Z!crfrJiRDySYG>8m%3Bb9cesjtx0R*{n8q779)vrm1MB zEYg@jB?n49)R2eJv4>O%WyJt}BSK$q#b|(>GHD@E_jOUT=rR*+8K1b!oLYGA)w{Oa5jn{Stl)Tqa}Sone{LWAQgod#|wOOa2(b z+btXs&Q!@|_et%9ub*GYY#3oF(vjchQ3N3MnxWPR0|ybmcW*NBTHX|Ni7#v5ekik} z+?ubktc|z3$7we(Z&*+I^sjFoy>{C%d1OdMS#NC}u1up2&01l2H z(n?q{NSM5Ing)dMFSGnRbAXhs+A6ZgfG zCOUj7Uhgn`2rWxU^dU@a;D3Sl|G&xANG_7owuz4xVh;^G9S>*i=bT#33Ekm$ceMc1 zO-!JGf9mB@ixwDTmO`ZLJU13QJGo2yWPyZnwS$RlQZiak+Klz zu(35Py;rNbS&V|Lusd#|00;m5Q>kur3vN0w`R1=ErEQOTvdSW?#uf_GL_)yYMl==C zfX+Z0ple&>#&HA#LsKXq8=u{hkM0ZD4<&+}gKJaJ!y`kdBYGCdmmYn)N^ z(Ze#Xy-aKz|0sP>KX>n7pj$Qz>dy9ng z`~?;(L=Z#zbMkae>npbi*m2v;dsGTbPf~)hP3QNR0Rkh^*z7xCCU$Sq2pq$S638LP zj0QYBK~gpWQ6+FKbraZc1Ie#+C`67XKxEQOqUOD8h(_s_F~$DXMYmN@QB~^o9v+R0 zMWBc-Eb7w11ZrF7&we@4b>!#SchH@&_L@on>?CZ&CNkDYU~FUD?{(z;=ugnN1-HfNp1ob^k+mGm#z~Ia?AD_o`f0$?^DdW^05%9 zGbw-qBb2)SXU%99)XjTIF1RE>l`~P;CtQCBgbsV}T4TL?47(CpXQICACN76;pT0-JoXRR{FM5sLMl{5 z(f~9DMwIW}z02oy>tcLIi%huG+R9tvcGK@nrjm0HR_^J0s+yS&aKCMSkNJdRDeYCY z)lt`Z*;!^WPM}6wMlc;BgRRClO)xXHV^*Bj%X}q03$6ow_dtqT8mMK+lf%qCqg3k7 zsLSyAxyzs52Cqtbmo#tsj-G-uuVQ2g%T@%!kYThP(wopvU)8lajt%y}Pvl!-%>P&d z2A~Omt_hK%5(+V&K!S%h4=c_GfBZ;n_v`$gZB`P0etIJ`PfpKw55=yBmK2kR;*aE7@0+NV zb`fD^jpm(;ZErF$OezQo{>Y6cD5lj!b<}gRaK0b zFaRz!b^sR%43q;sf9_`=lrxIRyP!;zoeC#w2T(`kHb5_m9d6fWFk_m7hH1m{p)G6S`d z(mKiY%6$2;5VPzIbTG$A2Qsyq1(f)>j*3r2O%01-JTGaAuLhT zV|!32EI6Y`IfD$291|%haL%K3c-$UASV5s%;<=6=$l`q0h=)x4iV>VY!lF2a875@a zxHCj4n@RfMZ%khlyTt=s6v`yXWumN)RtC-zPN^Iyr$YykHda$`Qg#g{QO!L%er_)< z#!p@Ybj!3A0bJ#@Cmcy#Te|IhGOZ*xpw&VNfWA%uY(SI0&mNMjI%loNCEJut`ae0Gm9BuL6TqL?!m;d1rInl35t9%=^+|VfB*mh0#4S%NfD4B6Xj)CY!m_- z1>M2Dbnl6z{mXoJLf(Fi<5tRUOK+}n9zm=&!2s_xVN9itea;LsZlal(K@>9SKJ}}( z_zaw_EyuClAKCXS&#i5s)qt-J0REu}(nD6O@>7cCn8TH$Ya*eFD^+ete2POXUX|-w zw>p;tT8#x{>f~DOoGacmAt@Wge2NfJf|pM z>=I(^*B?}Dm?C#?1z$ZkvMHSRD?-lthPCp&VI8g-=r?WMKhI`3cK_WQN2Sdn?$HeN zbh)p#R%&%!2i@-MJ515&tg-LTi`$&lZNm>C8Wf$KazjCgn|y%aRqbHV&^2HU*m{!L zAfQo8n3Cj%64yPtt(kUsxVobTcCN`Od&=<@HZFp-(Tk#9HEPoUKt62_v-MBs_IBi64iU4G-P6 z1Sq)M$6R)9l@LvXz#D>tQC7P4gxHmj2lH4w7>zn05Q}%z|rxm;N8-IV|Gk*zcRk{Y5etxM#9Fr$;@VP3r}y81_=RAMC)fH zgrF}Y?WdR}u7wAb>OC098<^Pq(|ZZtMvSzpJRDV@Ns%>E?AbTy&ZDU+K) zHq8GF1B0b;@^ti0+0!ZB1nT+#0006BPyhf8_yL{@HL?-b{{kqO4AZ^A=)d^NPVak8 zXRjQFzqG;D^C?BJggjgo2TBe1gC?qdDjAy`r|E>)Jv1?p>2&byvOr43vllV1y;Zpc4?*3qsMF9ZDGp`QGCbZbL@Q^guVRbS_$Y{rr z{nTv;B8TTULcfJ?WvJ#46RA-=N%gS|Flg7&!G~wA5h-jYWrP#qkxfSu>+vv?fo`=E zkX%`52I;3)(N8PsFy;*p)nL$Duu14c(lEGMojMKfpdB1Nl(Am70aI`K)8!Zl|84Jn zFBZLY09dsF2qN6z2fo_SBlGSD`22>F)gRxMI%w%a3KzbjXG)PtF!HmUQMNrjHG!6k zRSS`#?jeKVM%Ei%k-5;WJ+iPXOAo%FVQ6dv>-6P!e$c&PRgb4c^=0bBwQGS99Qc?3mGdN2}l@LZovr{&C`@{Tkvo{f&{TfE34FRpkS( zR}{Qo99w&NiAf|R&DJj4;j0<`9KdMV!A&uk606MM&6>e~!BddpG>?F>AtE&Q?a9v! z`SMM=6`5efz7bRN4;P#DGW=`<3(fovV42wAS#e5fCo{Org~mht3Kv#}`%C z732!+cNOXJ;%nzO6YoPs(*YK73`{p{ZgRWjW`iZ)W8W}Mv&i$d{m5xzfXqO(sN_Z5l(-Z$#}XL-Q&vDNAIWLOGeYE&J+61Tlgqr_o;>$Y%^KpPm1K|@ zZtt>I=>QT0_6nA0RkMvrlV9riG29zW;ZjaemR~A+yeh#>lnP7u8dkgBi>JhPk6LCX z&)JM`R47YE(`z)qExS~JcGh;W17(1O3}{;7 zHPvfFwi^%&tGp#n_zEE0b=+koypmMRDmK{mQ)%tBaetO>^lxmbi|WJ%6Y1!yiW9E^ zmCuO?m}<&M9IYUjTi?xQ+4``nB-{z{lt0OezUjToj^bqjkUv&@$XzF9$>&J}$%G}< z;monH>EF|Is@CgRz9la2S-=a0cyLZ2$y3Da zC;U4l7?)t73!oDAP2++jk43pgVxED-VWz-FmyVQaiG{=j>sTe4C!mDc4_T^BdiC94 z!%+bbqn|+gH4-#8lXi@J#9`YnEzMg!@TwcZD%-Nd3U^IhPWrXTYS2^$jg$rmVa0l5 zAs_SPX(5;~vW$+|N0z<2Y+fbW_?!@!JV-CE}M(?g4XHTQ(Xaq|$ zhM7^fThrnB-i#RA^PaHXtA;WJrmgf&C%}#}4SO_H^I(3j^+D73wXJc)Opb<#cH(56 zEOXp7T~MkAz|o5LxXj3yhkTMbZJT0VD+3#>O%lPP8R@AyYBb5ySEYwXig=HZSDP={ zSkF}H#YFk(csgXlvwjnGL4)Vfna-Lkxo!XKf!A-sHoVhpDXRz389(ifWqLAQ--yn=5-w%XJ6ez7De ziEr{IR--2abCYKA>^xHIO!EZ(@edAzUbx4&X^l*~8L8T~TgQR^-JYy$cdrt(b5_~` z8yyh?E(!Qg3W_TXIJls}-Dr5uEb4Iv$``qqNTe~zh&PFWa30juHl;Y;LaU`GX3`!v zrtJs}<0Sp0aW1?Z=2hV*`enp;+JweHfLc7#`&5V{KhEA~V=z{*FT(F-zbVPHpFAKN zNIav=>c}dY1EoZ#&&p3+w^b#Q35hp)qEh=()?CJyg0)wF zLV*cy>GOvBENAG$?Uymsld%RLs!XdcWhqM-&cD*&F+QLwQ}ivS!LcAGIT&7CjK)8e z?NRoY&tNBFUbOVhgpL*e9h9)DyP*na4Z=A{1OQXp5veBft4 ze=*%XHQhAP>PqBha{Fd{?AdvR(91Ac;#Lv+AE-TNIH$FMJE<|_Xefe0bNUIv7RTt5 z-MdA$qvh;sH_*+LIN6wLl^m+Z`aVQ6nn2K>iIFu>ms^GrvS?!KvY)TpcpxU&G0?|_ zp5yGb4mg!YYSbY7^_R8&%CaAo%cYg-;3o)09PY$2Q`2oe$H9#ZFtB>+IPYduquUU= zvkD_@uUf=+7(NsR9_5;-U1-7&dKO!9erv!P@usV)pDNAh?cqBWUZq9$Nw)f?o1i?U zH^OeJGpEqAanVxn9XZ|a4(LDC>qak_3c!t;7CN5wIrglB3tQRyvz^FU#kJXA-nHff zF#vmUJqUwPkmAxXuL+|DTIj#f^EXt57qdo4a(iqmV(2y9+j-PpvIO9)tv~~BLxc~Vd{It)2rg*O6xCq z1C{{{HEPl2Z$yv%_^d60rqIh5V*r=BV815}0Gtsp+3_*b2 z+PG9*0uUkicB^gnp-FaFq#t!>j@8g8?5h=wS3}yL(XM*%4D^k~Ffxjbyynl2$e>+M z<_0QV80tSvKyDOOhrDQ6i>cJgt2v@QxL*HgJLm+aCC1?dNEg$np|7faBmLS9|0Jio zyiaV52I^3Mc`CYkL29q1Mz<(Lrd1N#kEaxlI;X`DX`4P$Q|@NNEQf)`XXK{n_D0 z8|9O9|E+F2D$>9PJ$6-G&O)KBL6p&VtV>8qVsN5j%seo&*jr7=)dM%7;m-`1FuPZr zQHbb;JOP0uFtALvY&Nd8yYrITqKTeIpgq$5`yS22|Mznl9Ga}M|F#N1l_Zg`acUfW z^IKhF0ZgD6j=Gb$!Y~l)7JL=K_4Zeu+1-S{94VhFm65bxhx9G2b}eMFeZk&;!K*AP zWwCk|6~W9@Uci>uXFy4CiOC*;$u!{W>D%$?6xsjU57goJmbG2~+XdJYvLi>F?lh~o zeSLKqfX7~B-pz4=B|~870=hQ(ECQx&IzTCBPYIr)W|l#3$Tj@dPf(viyVYZMQ*~%i z1LL65>;PtWub)8K>V33M`1i=Oia8ZXWG~Mgh|vyzrgceh!Yw`!&03&dxTs@`P7jSs*2z$n@aqR=0J5hH270=1LhP6 zjpT1$#G~zE4kPjAqMM(K>l9@?)0s3L;!A0h**c(oJo28zv$ZNG4s9+%hMLv zDHq$Mw?u&9bNV0qY7#qabmN(L3Etn=TePtqMILQ<8r6-npJM21N|}Q*l>SJ|;Suk` zcp%*@ zj8=jF>|b*50Ud`hoAW=2O{_Q{5qPz5&(Jmk;7%LJ>k%lI9{DZL-k#z8Q;W8ILGWNe z7dUY8F*2p zc}IdbfKD8r{#AD{FtvE+NY=DF9ic5`_6M=Vz|%aA$Ol^i(r1JEcH8GMl!s*tAgPoY zk9aDH7l`cbRwUf(3^^@r<-z0|+sRHKEcll23tMm%YJ#j4_q=_U0nq9F8fJ5KK6JVE zhDE4eSbG^2O*G4WIrW;i&J?=j0VT4#VKrwXS?S?6L)A<)2#bfrWz>Hpu87`8Sfhe@ z*74e!zmrr1zKmAZPOK*fn`_Qa1hx{)^S*QiqhoVRv zE695$i%`ZdC?}!22{ANeIbG&Ty)fd2^hwNVL-5Z#?|P#JkaL_M3Qih|rK%Cnf|F55 z-B9}m|GV{?-c%6N#949-CmSX8av@qdHG>i}Uw$S`O=ioce|K{6Ie|mVVoTh4jwBn5 zoX6(b$awpoTI{F^b&=|3+;C&JF8%!hk69_~;m#2*N8@`Eb#FXh&~Gu_ zM|KIrko!@A3rx8THwQEXLW*yDzc4uAQzJu3aqVBEu+!!MYR;Sb$PhML^MbDh&2L-D zQ}GlMCC(E|#Fhpe(lEuQa?)s-T#;yfr%pV{WyY^00`&L^`bS9jyFsC86g6jB^ZG4`ophvJIF(( zDNmUi8`-Td3T+Frh;ILzxoIp8vq050ek&Er8V1XSy;0;M+>AEUdIPT~UbSF}T*NvO z_~54G{w4{Yx^u)x6@UY2MzRn_`WB!trHunQXVrp|#7?)RhPFw?$rPBYr-P2?a_w~y zGW&A#$r(u;-Gc;Gb1qTE68E^9u)uE7qoP$1AVd@^mg6qAn`Y@g*LzS*;&fRib$axE%&q66bj>4uq5yR%#~>K z3w22l0O;yFM-~PVCRt2_Q^iQ=`3^?Yma0pu8^ZZ^MmlEiLXR6-g;zc@Jq5f=^fws> zr?Y4~5q^gf^EmqREvQeOd3@8N=9S5wUjxX|p@f7!Q@VR@?&Z_@J_}x%U|qV@4K&q4 zt($zLf208zW^k*`jwi#x^i4WJU62;~k_yd%sA%!9v{(DeUgf6)rHI-H85BG?B7by= zxxLfhLj6e#GP5=J1h@S+k{zL27IXc5St>t*W!*C4P2e-VpVV1-{O*3DzierfAhqQi zJZAaa`}~{wJt#z?DZ}c~irmV_VR;z{v@n?ICYp0y_r@Okv*5aw(ePQ^%AedVmsdm% z%@784azhX`I;FT(i$|~FwFGyQ7<$SUGCj?~{hbYkEe}^nGtM!PGImA>3!>t5p&;9g z*}bz}?$8zVJXXy}q)fqKw>IJ%@Ccdr z$|Z&jt=M#_$YpW|3#B$OVNy1Diq>=iWx8R>7Df3%abt=0tzI2nk$hsYrT7#0Y44dh zn=PORa|1kM(#~n$Bz;)-G)?av*8C51>IME{#KWW3SJbe%!=Q=`z&S(XY`L${J=8#h zdcnA%LwqB!$2zn4yuC2?5bdQ^#=!W%oL1jQl09|kK&qx0(h>{xr#N7`g`)` zS6;=**xcYtrqvdD#%R~&%p%uj@3VEv57r=6Xa*@hHP&&}lVLhtu#KgL1#)t%j=R0v z9L6?&XaK!MAeh`Z$y4Z}{<{$Zr8dOyrK+M(6r9ReD^Zm zG5Wx{Czy1HqU>p&HBEWK;yVD(o5bq>4hb-DK>ZpifR~z%upa2_?R%H!+(y>ilfxvW z-9J#1P8Ki-SnBoH(OTJd;)ITZKrHnlMX*q@Y|p=x)Y$osC9mk849&KeRHqei<_3Da zB}B@!wyp#_OZ{Kk_T1#Sd$f^C+VbZv+Uk2!@~dP2DQZJ9c>~c4FuH<4SH^@SpDrul z;(9M(jw*2FGAVqCIOWK(cAj1}e@Rr%kq7}oN+LF&VIyn+4^87}8&=YW?Z->YMZuvV zNr6l+4n=ej58$f))tcnZTl5}kzIXtbG_Lz*&6OG82{P~<@KTX9ioOSfc`&HfH?SZ< z)D|z(IMCJ!dFS!+lM`Z8-qu#FVnF=FvEqu8HQXme=7r~#ORC!6N;Ey8zXcXDb&n?% z3eiFqf?Y%P;+~j69Jy6DF6lsZFuCs}yR<4oyMx-ZwEmFl>GAQXdx}rucw=}Vf-@EV z5PxHKD@NrfO6hM%lpRodAGv26@-8J@?ttu;-fWsnf&FBF z3<`teqL4XlfZ3OfFHMzLF6(*!!G;nocb7zOY5{?}2M1v`<g5e@}b~z2^-Y*x+ZfhFD9!Q_Z&uP z^}vz=p&>BqtyQpnR#pXL6+Rfz016OH@_V@J3Po{gQl1DKJ)-7!wCM-;K>v}0>U;)l zM+TX|p-1?(L$$+t)>xt?7~?-rz+{Xo26qeD5Q5hWOka{7JPR<7KB{R=`J-<=l8(-? z|CmBr`3StHiCs$$$%{epiC=r;**=pWIZka%boEcls1B$K7m6O=0fSxceg4%^LeHqupS$ zxwl}B7cvN%`ZAYR%8n*lGUXMk<+_eoP2qjD|4vm>JMl%(ml~V7=hT1z-_(X(%6@(Y z5_XL-|5b}|wwqtScsB1PdP+u&oZTy5zFDWLg<%Q(z)6WXZD5-|iUT*wAc3J=pBri}1H+sGV729(iCKn+R-Sy%OKP)g~S8 zI`NmUr>2E|VN#5E6jxKcU*Hi`EtvyktFfGD!%TxePqJd*fz?!q=V2e9L$_6?| z!O%I?a02mAvypeOaald^b~zuZ^3Y`wb@g|;^f-y@y%j^LvUHLTB#>DOE@E<3 zfY2$3kz;=sFuH0+HT$Q1k^DEw-VwBY%VI&i*j7)aD=pVic-=ZQK3Ks>ML@+59^v}u*FB$?xS=XT{j~B|J^*eR0zs_Imow>h{nzp%k*aUg zsh3cd%cyGQ)Kh>^>(Xu}Qw9p%*h2n8!m(4A#Ms}dF^6E*0fEdoJRJv8E~ZU7&Ni?l z3$VkbKF2D^WOFiCTrkQz`|Jcsjg*2WjjDfFV*Q{lFB+XB!yWf8PL`n~&gRkF{CO^U zTSK<|UK$b^IqJm6+vW5kC$FtkzL>dBYID&Lbs- z5!uJd!rmAEC7$TRP~EL86Q+s>wv(ST{jJ@&Y}<%dLK2GmEF(&V$kEU-D{T&KQVOoq zK7O2FES+_T^1Svy7>PM5mQlfPW2X9(+|R+o_7?4&zTxVK$3*uDv+|ckmWR-?#wK7* zMDXcEIn-8u-I*nDj_(aZq>zfl93bH(5G%FJ)61L_X8KSFH{|XG54p+!A97O_}*gQwf zxG;GwEP1hV1Ju*hXHzmnD^M4-L3anQt4HIE#8DDATK*?EW=zDPn=|!HU!dcsr$W@P z8UOkC>COU$lv%A_p|Z8v>&b*zB;fwa4&E89i$72GL?=1Cazwwl5EuwRI}|gF-~^ib2CY+ zi_2#a8dJObHF3z0{Bv2Mgw=5o(&bd~7_(*P);-$6m&gQB_^TR#RguA(7c0*;>rPfQ zbx74g;>kWdfPZje`wO6^XTc#N!I z(E7$DDkQm^dQ{7OBKt5^Ph%n?D1|9 z6#(u_MRuw7JcjZxTz)|}1E$-JUeyxY=Za;8oF}kN>B}uWRRUhNhBh3o__u?-K*sCo zVix+&o32ARX|ZtWpea6~eZHtI75H2W%I?d%*WNo5u`7DG^d@h$L#9qG>ZhFiNXV3tJr8I0Hfzw(}`Z4gZnsZudg zeOZqq)tuJ{deX=sPVPh}eLBd!QxfZDgS`yS+TodFWYGJrXKr(DiC0vuU%h%RQ2o7= zF^oijh@Dmy%9-(kvJeGug3sLIE!ehvjPBu@WU7H;hCcyJYamA zBI*2J0}|34(>F?Fg7>wlwh_@81PxC_`H*pt^za*9qi?>{0*m0ZS0%{C38~-~es2x1 za)&bbwAnQRiLV4<-N>cpTKEMwP}q*JiS<4cyZZgzh=?#K<@fn9AXm)`fS|Hw4i@q? zfx#X2GOCgSLJT_Y{79PS7(;zmq_G}G*wsJ z8VaUd)X2syI6llKL&E`1E6WtA@qW_T4h{H|7lp@1h-wQVSL?)<_Kw8hwV6VT2wK^E znS73>$G={}PL2Y~Fyei}FoXgfV+0Q=c<9pdidXK3R{q1US$J1<{GN<Y^pZ`3$O0jA}chrMdfa!_3`qBrNR5eIFz72zyJUM0tqkx01y*FnhH>02&;bp zI<+DkTbSIlb);KO#O$!)c+%r_nxu4vs%x0m@P_S&-+CX9^Q|Ww6?O#{QQVlJWZ1p> zdw&?L8Hugxzy~39({GDuoaqDxOv+mGaoJF_G6|&jOE$kx)AUYt)NMul3UrIK{(ACr zY?0~UFXjG22~n<#{M;p~OoyW*w=OSv)o(;uris~yzvM!YtOq5iR^HdKZng4>tTZy3 zppswB7ELv04w0q;mgM2JsI_~rLD+pAW*%GdYmrnlPpE?!d_rODgh|GU)`1D&1sD;m z7MIRPK>Qv<5(fGJI<-y~rszKZ6`B?wS3*hv5v)cv|5@nd9GN2mk4*)0$bgXWj6mjd z+wK0uc376UvKUC^QmGceyuoMvnSR@Bvr7xj5jeblFn~%W#SeZQh`zl8%J^c* zihNZ7wmC$)f7h!RyD*c5^W-3dMsP|?I&y|WRhZf`GhUgD9OmplQYfLCV0oz^L(b1*;6Jj#238{tTo!)f!9u(zc&cAfc}m2{X5D?%iZ`(J z7sMSrTa~-D<+-l7P7hUL;$`BAay|Iwyodgi8(KH=$nd|JiQY9Klu$NpE9Ty|6*;fsH$+BMJJKYcw?b0$d7#fN);ke&@q(?&&tQI@|{_XQl}4>!`w2Ai4?+uzH|8K7Do z%Z zYF_G<91l=-d(XG}38-6tHd*d?%4+gkd@kBiTCOS-zBpY6KT`6mPjz|b-7&24ZlJU6 zSI%^;#dDGW2>naLTOCMkAct%P3}%Q7TUgku;Pe2AFW_0_A8yyj1%!`@#ICZcxJ;5EP8}5Q`Mu!-b7Xx<_c=>Rh?I_~E~J79=qR)3Ng7 zns(d}>Fk%dl=0K>4p+%e%};15myPS&`=Isx{+gSJ0MI)q_}eqsTr=Opg>%%v(zbjh zMEYfE&kAZruLq_!u%doWq&Gqriz4*vgIeL%AKFO&q(9Yp?pITe|5AF+`eMTF7U@B* z{zC7katIggM2}Ym!dA}^$!^9=7eSa+^{Su_NmgKWI|%J~`=8ZanT>DD&4C)NN63TX zJ{`%sLQm=AY=Q|29VYGj4!6k z?spezh#tq0)L-n>#%loJrLppS@tzwJ)wp92)?CO(9CYgkuIwjtytRtjZbBiFPVGyE zhc7{9Ic7qG@cRbg!wFxz|Pjj-zQr+@deok_c@hMPFX%?qM<>4&&s`$)e z3D-|T>YW!Z0ED*omqi||AdQYkTi5cRn}p^{^^JG9tWFn1YBzznHdCO_whnXeA%?m2 zCT;dt`T3#T2{8k%QFx)%761n#=lHCrrcGQ>UoVcOrcL+HXThRIB9H`B5Fj2H0uvda z0869=##3y`F}UWQ%#~)Qf@-g)aD+_hU4v>b&ivwe(f^Tj#a)tX;3oywlS8oa+1mXr z!_Gdp91uyib4ZE_ttGkroL&GZ?~CgCaLqr`$E&0-e7GUG1XZ!twm2}^$sNyu0mcCv z6xWQYOiRh*t0k^oyoaPFs2F@pl;QWu`VPSfx*&Xs>BK_?Mqm@yG@AEv94llXFy)S3 z^dd-)Dli8s5%0&^w@CXFBHcCng&@fy_%Mer$U(73L=4V%^;>(;zpa3iN4Me?vg5O* zkHz5Hk}c2>d@Jx4N^fL%ur8?0!YIyXc03zo0))v0#AVW|j6_|zJ<>OLFft@VZPi94 ziBiPT9E;*;tPX#~ofoVPe(b*(u{?e~h>{E16{)3%q)o$QCq?Joc=3)HZ=!=ceYD5pFS_R6JUyM6%ot^ z4FKBpE&`6Tgfk5k9U*tO%JoA+s<{iw7nHhxF>PZpKhkOb@^xDW8BfYOd)i&;?E%LK zJ3X_=W)<&uTrB_C+eL%Fyz5iJ|LUHTUQBA1A2OZWbA1oee6@ncMvAh-O)@p_T~p)V zB*?Sq{Ar}mP5a9_o&<1@1cLlvK3rqtXPYnj3wgXDQC+uRzQ{c8%Fmd8Mf#TnrNhaI zSGL0;l^X(^fq+Cxb=cB^J)texO=1*520GPBuz2;k@9YRonaban(`D-p0fPrN&R8c) zv}wck69apKj3Zpb6mSt1q&vdYdZ;o5ni7L_K#x(Ti-Ixv<-d(b7B>n?^NVyt@DjkJY4r{{~p8x(tS-%nRB*h?Nchi z*7r9OCGbz9DVuGj&-bL*yx2{?+n-7wa`i(52`P%dR$ms7N;H7FWI<7Od|wB zwC`=l7nqZBumZ;xwQe1(sj}*R0Q#%_@+Xw4344Z$JW?GppUv|Q@B8YupPg}E&K-15 zj`F!Z(tU>E^n%0+%G@dfzG1<}E6e9xOWZSph|_5N=oSmXGO0 zLP#{HkAEE`)xjAVXk4Cc3dN1hT8H=cCpXCkf1Wd-#2Sxv(G?RtCd)9iE;lZLvtG&- z;xj7x;gmMo@WwUm|ECV zi=R`~YuAf};QHTddYQs%eU(5;=PjK?bQiwqo%=J~;IAe+gVBbWV>J8neCgx*t+f?*bXBa@NY15VcNlsYcJM zKVkJ4+hH=vgE{QKcDc0^k8$E=Hn0S|PxZ&x-P&v&$k(eHtfn&om_TM8rwSwD;&C*g zoFUu`6i`&`r%D?5W0!FiF{<<$eIKB6lQjg7AKGjFkgGd6;n0xX;upnMXk`^>O{3&@H#j}kG`6D5zVyWpy%dkSjP+}%@7#NdjpL6AxW`=m*}??dSkkvZVLu~Tu~JS+RbN+ z7&mhD)J-LjwW03xnu>)sPHm8A?Ao%OACjS&y&MIl=D0YXYvqdkdWcWt<0j^FC)HUv z(3?EY1fXwToP3ca{6oXqKzl9 zY?wN+UMFlk5oAv>(ViMb$rg)dV*hGc5*-BC>&w`n6c0fYC}1obr{5_}4Mi?V$H>sm)$r?Rxa^K2WR z^)0K{r_U7GD&CD^eOD6z*b&n<*o7MA&Mx8YTNLiKrtL%s1~c{QO5=RPZTXu1uE^T< zqupyCc4n~w`O8yzCW;U1($P;9U~53rA;6D1JB|RC(CoRZO|)ou3mddUr_Ia+UC;mk z00Ie6000bQ0iFy+vJuw*0zLaW-EwD^Twekn!weT{P*}N|$JnE|9$677a*G*IOYHi* zqqmdYSTzKBmr1q@oHKFwKe_lMHR0m+&8p-O1zw(T9@(0O^ew0@;+>(Cu=3wG#b>3I zysGInnsCdv)(^3vw8uU0QcvpZBoUTowPHoN8+14*;B3n%FOKWzzLAs#<~3Z@V!q_> ze_hWNq$u~WX-swh?v$o^3@H$|r50~0x|loza_lXfcACn(=r+McaNJ4glmx9NJsvg=um|ayMsw zy>pqyQyE?6`COd-_8jLDVph02#}c~4^9*M-mgL!D3=uQU+ML6ZF-g!S2+1qLSRk)V zU!Y&{1LE3KiLMfoHY%T8)p9 z&T98UX%Gg>rum{hpyWHYWvyyeM2&I^mi`y(#bhA#O4!0s!!+86A&6CJ29u@T+oc(8 z;%;GmqqL)M^Q1P|A0e>Z|2eym_=nXAcNQNjJZP*$)GgGTKbZeZc0`TsMBBdfCP)x= z$hl57@3Vo|8`lZ1YSx(0LGS_3q7WG2qpZ02Et)ZxOV}|1=mFR{WaWI5*xtBJZgK>`ST9B*aZ`i2j$d{XbLYC?3Yf=Y}~ zMLhX|pdPu5t_lBQmKu*E|7nFAu#OdOXP?V9bV9lTl%O?QWKx8eBTohY{S+%GC+Clyrrw9 zKt$a4lMO^Y>O^5b2&UCy5@JeM8B2IaC*0P)5Np*1k=ma~eW^F!NtDp@lzpm^jepbw z4#xsn?97X4B)iTPIJ8+HGIGJl1Yh#e8-53m2Z)#ms9uxbcf2c>j_Gxv``dZ(?U#tKh;R4HaG&$2t%o(`)%W#u94`!vtH7*|Ko zRSy?+va+RxGr=InW1RG|=}OcModT4aInG~e>kw8K`|*$ z@rn*yXa@xsuw|h4lKDW`v{k-nhR<#iR0|p4haBUapc1|ygDQN3R3F@+hgGUpeUr_w z^t`0oBEHIqVh&6~Az*aO&Qwh^rG$ z8LAaVXZ5)s%)}E2eRe^Fx;Irjwyi(g^8WI9G9d<@y}Sf` zT}9kBK0h2{L)RhVWUAK_N!1{DI3gOigJqhU?H?1udQjfdWE0>r5FQuTOOv?TFa)cy zoB6({Rs{MiqsD@z(54?q_5}|p*!M)pnp6K>AQj30<#Xjvk$^LN$#+cwae6_icu5*U zYGKX;B&yX5#t*_9Yrp?kn)SROrK?eUH<}oNy(p7>8q(c+COhyIz2NL8g3cNBwO;Yt zzzEy3lD}i-WbFLj3p*YOEcR1eBzE9^IWGTMZ;Pz?J8HB~CMRK@StjoX=mFVk-*P{p zf~*%Q2Iot>Be~`$m1&NfS{d5lr1pO?#JiEcByQvlGZAgbcOn-nuV#zFWE%?pG5vm) zc|`r~aG#HhAQLTa<;GtsKapd8Dku($K~400#hs24bxTUcK_7<#+$;zSuVPAYR_D4Iqh!c7D-EPE-WTHZ23T^vfT%G-`?v=RB|mS(k;ZeCS5lc989fHZQ4#oC zF=7V1eU2f_{7{ZT3)Us8?$}FT&Y|skQwCu{DHu03Fajx`zguwCTc2T3KWx63l$V1m z`@9t2osdd;{uP8ag^)91C&=LC^P>e)+SP&b2=cfnEKU{q*#NdxKdwH}7{L6Eg73;T ze}|`qKg#p};TS7o{xn;$Oo+9C)DKeve3}`nkfeS)eoQt->ynj$X~E$XIpgIcg_@B7 zG7as0kqiL74gonO_ImPAnyqT^=EoM@Sa_5;<_x>^aS=#L39iR6Q3Zsa*A@ghY6WF* zJZWcqsK#clGDIjd%CPC68b=pGK|aBz zx{Jc;-&}~4X{?xb2?D&wcxS$PjsgCu-u_xk@P@^rc;iJsfte7aJrM2F|A|-5LmY`* ziNep;>TXthBixA_YW7dNMfhLA0naDR zl5FHvHeuB_d=MxJ@e`BEK+h^gkS>YH{$+a}-1B4nH zA*nDX=g-JdVwvAE{Lg<_GO^dKJy8-A+?%BheF#+}Ewrov!xG4h@Gi22jnB2jQO7yZ zqUOr?`@5bj6uTzul@Xm2J!HsXAA;qY!HtQ3UFl{j))y86?|h{iq;0{tHa7py;ku?F zYJd4AeAVkXf1kvdcTvV-dllryc$|9bbs|o)9A3zwf^KBkKb=j5sixorE|SaFXru!q zClF_kiAh-hqbvW`(DfYP=$OKC-PfEbAq#d;yzE%^TQs)1=GF^u5(9PSmG@xt|F)%G z>aT+!q?w!~dSymt(Kp5}OKq-EMxep2f&Jr+`Uv!*JF@!gwhnr1Sn_-Cqv3g0jUOBS zX@=^yG@E^2fJ6$I000022~Yq436=q#3`w#P*8c)M{^WnmcCsxSy1d?C{Nc`pli@4p zQ76jw*x@C|HLN9KY3gz|mQD*-$7nn)D40v{kA&$%GM#-!w-0bqZ9|s-SboJZFJA$a zShloG=t?V0T5?Q8cgTj{v@xpQ;GsD#5sf=05Xl^;XQbKh*0UlKOsC{wWG{hX*T@}H zfW0^QK)a8Fdc+8gI@Hk*eTn+dvdlg9=@HcmJ<<1=j*>S6lHJMG^`Dc(nsw z4TN}pt~4m`%juUrR%T|+esjZOTRrI<(e>NM#DX<@-j2E2I;xMdsUgii9GettK#u-` zq9s(*rAx{B9LZjH#4e8I_6Bq|di7arn_S%+knZzm>77TSH;LOVb7O7^{)3Rekb@ zQOnJT_&4AJIm|N^xae%8a(yCxF-2!!Ib;5Yk7u34AP^o5q|f07ougy8V{(W3gZt!s z>=~iPmzUpy*I{CI7Oya7D0PavIqG#1f-`;9iZFazt&Zq*9lDpa;?Qc-y%9sFLorwihU;O&t)Ir_;^s79%499LMv8C{qrd5}`3?W8VT?!laQaa@Sm%*9;HTm}^To zpUQ)6pZCB`#C~{~I7RbE3UDYeqC_a)y>I41AyFVwK}X@vG@$!9!SPfP;#Fm6w_rUP zXHfz6e~o%;6L{%g4Op`i)hLsNqH@!AfoHRd;35@kGA^Ucjwf-9mIyDDUKV?CO}hXW zHq|Er;-`wow#pm{b)mz&m?imEx}oB{y!Ob#B!8amII?M5L;`j^3>zPe35t1C$2@p7 z)rS^TqEvqMCdM4NIA!Ra6j?lsc^Bm)RaX%os7}W=Se1pTi)=fm1k^)*nrZ_@319ov z_$L;NtW=I|UZ9i5iVqG&BZ}m3PyI2!O9RRo~Uh)$KbnRnY+%`mtA4GI)v1t}9GCjxQO~Gy)){od>ChTG*O6WJHANoIg8z!!;lGniOU*)fi06%a1MNp z)_6rbL|?IO-==vI9VqB|o|_)M8JtEI5MMzzOJLvBAJqv6yuS1*Btf4AWP zzzm|Fz^Pm>zCpkmdgljrc@W8q9eI3LT_pWk5|}&pPb#S5Qni2`DJyMWmTWr6#+ws4 zE9;Y%zx4a1k?$hhf>`T@1d)QuOI1}GJWBy1#Vq#{Q;GZ`{^jHxw)WAf^knu2$1uW+ zz0v!e#u_zS5>-ZaR<9S%McI`yO2>mJa?fd-5Fi{2LTvy;c!#jD)BWbcgy!5_@vCoZ zcGnm>tN;cW5gEUIK_e?cp2$-wmgCw2qoA=m|17?*d=(;AxQkScWd_JXY}W`w4}Pd> z)G36n(!!L+f2D>+sR9;PsObwM1z!+xkerV#EPE>{t`z1Rgg)-_ENu{dNO8uoVtSTm zs=ug1aE&AX@}x4fkmKDT=hj`D_!LbBNX62kG}0!yj&Ne`#8$_M@AwrN4VA5OmTcom zw^2D#gKNs_HCfAaLm;MozrK<0#$Ggg>~78R`i2@=CQ7-r0G+zusCg?Wqr7T^u`<=9SDh$d;j=prP1qQsY5pUe27-s z`)_wpC7>&L6o9`>@-=@8e1?2++fmGc%|KpsJ5L>UbNpN9-aoN42`_bdFXSrVA+%ss zB7|@%Xp+kA`^1&gAs&!E^Qm4-KcY8*T{JC-(pE3Ix?{Y}djkv2|CNIa^7jy5S+< zB&Q;}NVpjdy9t4L(WQM_TbSzvx^BYVstkDF!0m6I#JN)a+|_rF(tu~18i!4m^REHw zxLo)8UH>ipXWEfb2RL`A$HQ9|nQ?-;k>=E(e^zS|ZRz1n_WGoEXN*OWu41h@5-I8h zT8OP}C*agO6TvB<+=bZ&(T=|&o&f^zc@48roff5l)rK7{-m zk$Wfz;2ekepC6}t*A3aQdlc|^rB(Ab6#ADE*ZR@k;--BsWE|yr2yT|fkh(J8`qaid z4=i@XFpQF#a5p*S1@<<;bQu{<=PK1(wMe-4t+wC%9JXr`*+-)5^LvQ1&FX80Y+P8n zloRaybCf%W*PaEiml7|(Sf*KeSkF4dh3L!hTaJ-XGe&pr^AVh=U$zRA2?y%Yue*1r zaQjD^FR5gYf4}r%YMFCAn+giix~9>yrY>ny}#H-^BN_%1Uh}!D%pcI%wDaC zu3%#Xv}c_IJ3)ViK8K3)O)SKjJ!KY7c3JbiW-hijs}B<+BqElm>D|0WLdot0$)!fC zoLDx~nCp({QQ~8I#9NiJI$-`?Y0hGIQ|irz+B99>$EwjzfuLl~hkqg+H-q)(1192r zsG&cgLgY$0Y}_dUlS|YCs_-5~F8^>Hreri`f@XgfGrV(C_WAV-n^C`9e_nz0>F8R& zo=fKnCvwJ?Q51Pn4uPzfJ=&OLH_OX6Cb|Y0%^-t-000022~Yq43QPf>3{A2T*8c)3 zl@04Y<+v5ck8cjM=j^&>A7o6m;Bs5){Vdn5liE5Bb+434?w;k*userCM){A+Mp#_Q z$VX%=*=>l`w8I!w=J&Zmh~n13p#zdaH63(+Q@!C@nT);77b1F$51 z@|JUCtp+N-#8a*1ZMRm~nPQIUyAX)cNfsp4O4Pe})xujz- zIx5po!!1`tBWPPmTOv`YAV+Q3=!X##9@|(;1OO$dMWxDK z4dg$!bs3R~@!7B7t7rL6Ry`hfsCXX?n6fUv_$5^3#>r5cQsmI!!nENDsSR@Xqzuw{ z18LTsXkqD&WKM3%Z{R3(giPR0rSBICE8uW@k5Az_{NrKg0FQgO5+`zSTACku zOC*qzfZdZ?%Wye5^+7$>cY!tww9^P1Bx17qH@&!JfbH7AlDSbI-Gj5^s#0CHkYCz< znqG2#Fm$a_fhPU5H|}q$OzuXgHeOfqJ-C9Ap9aNV{#|TWq1~>c!BwvHmak&!CkxRG zp=dlf{*E!g0SsJs-mcA!-|s;BNcyeoEK!2~*A4j>u1jJ<7y>#!H%0)mv{{(^2scyQ z-!u$Ql3D%|II3$w-WpB*s1DN|#B+1FFc&yj;$sZtXV@j^o_k~O>rhgl7hfAl*XKrW z2UO&+H{~9={_Ks$7jC0uVAxlIhqOR@wEoKPI9umcQRrGgdx_l7i6;JclBb43j>miW&|XTxdVGjJ%SH*dbJt{yXa=0`6sf0sBJ`YdyG$lIza(orQo+?0SLTUl zS508)`>N_VG<(BL7Pg{<8IT2@OwAeoK!Rd^pbXt!(14@#68Nu+CB=uft}Tc`R4i(Y zJe@G09r?YQ^H|~4&GYl+h8g3J8w&d4lsTi==8;xnbSf#=e1YSbql-Fyyr_@=+cm(> zaMwVUMLj1lGA|lI3(}EYDPo0$ixoOX6J!?X)b&6fxC(~DRwBYu^fCie4BW^r(d3?dKgx&b1|hvAY~l&Y++?%MeYl zZqA`S8Bjy#OfX59g~v4K6*vSX98`%$y|gzJG`)uy%+TH=JWcKd?q`=BaeY_^c+fwo zn`&q2OJ%=~ICf;S-DF?Q=r;6!vJ815?xv(j8x3})=np5` zv?dJIrTX`uH-#N6exF?tQT5?`Oi1hRidQ5$6}zG`$T(ErX=8yrLj58wcGvp~-zhgHDoR2P3OgTLH~Co}|+T74YxCSAthN7w8N(aa-v61tKgcA)a9 z`&w{pX~_FUe3KI0^R{@us`&cm@7oFE5M1F``j34ll$IOz*L^3C3jH?)b!G;h)%tz) zyfiRS*}7tcS9})!a0fG-b*qPEY`O)av^!vL$%Ai+Tm<6Q!5_HA_Og6rb|3Wv993U$#14PT9K~!Mzd&h zUg>;0yQWgVGol|xYNkS8y|H68@F_4t@*3qvb(DyaH^aj1*S3R~Xop>-7ubOR5&qzg zaWT42xv+S|motn^)3+q)8FoY)b*asIETC@E)QOPPwgct8tG=Dv|Ai#-$(a)n zUdPp#b;wETEHUfqw?h93Q(juXgsrr5@?JH)!@?fWxKPtY1t6DcdHuxj&i>VbP1U;{ zf;?;?9nDsgm9SxM29}(u(Fg;!f)$+c`TH{JB=Jh))PEL(V8w$Q=U^lmzj{D~>XtC_ z{A_YGhukMRin%Vr1I?wwmFkR7)HtGUaEUUX&O&!OxKzsr)0H(sV$NXd@D3=%z96Gb zg|~i%4I}4R})>4yy(7i{^ZBjj`V{Ah5%O+0@+v z6X#X1W`sFOL8~GVUCbO%{^B)_UKnJs>^{eZU(bzFuxJW^Dy>osFj+_O;8o(rZ=ZH( z;de{o&AQsKDx1`*Rz>4%Ry|QL$8cts(mQ;d1886Swgv~g1@H5 zw$GBuOo_NO*38-X4&6z_A$8tzcfW~D4o!NHG~ovv@xHs^H4CWI{A*j|bi?$08l|54 zl9LJS%RslomdgV(tsx>DQY9nVWnJQZfzOc4awLr-tni4=TO-=JI0N)#F1VHyHN*RX z9uaaL$)5tAL6g)`_3l&@u&n-Re=^rT8%0>cPo;hvZe3j-Km@4pP($omx}5HH<|3kA zUHwLeQ_v3YUbV1oMA7l%*+DI>4QgE$2 zbokh;IHzmfy5E&!0O(*|`GqZ!jk>WsoRdxRLW85_gigDu^ch_tDyCpxM}ty-+2 zwnEqAP0X0+D;bcsJ;@QGYXp*G3~G z`Xc~^Ot3zOw1@EgdffOpTPPJy)cKx7e6%<}OY^F~0FL2A3?-%Be>U>UK>EG5tGUOE z!LX>AtG1DXaYI&^4F)dUk>b}GIX;VWAGRHytHu^{YzLWvZw4cqwVU_Zj^iH{Kv+Eu zPLB4tK8VrmA5p05QS`hk%pj{MoMMN#cSU((4IRu(%F1muo=j8T?``hsG*(XDk&f>S zU#s(hLi=SZjU-!dAgR!rqKK*=(rEL?_H(j-{EriDpCix!zigjXTu-9qUCYxOnH}94 z=cZy$0dgkg-UrIoY?UFmDO?NYCa=$+?N*IkQ8)PZzrI?~_dw5KhPc?ez=_qLV4&}U z!sbY)nqn{4cYaK6hcuoPM(aR2O?NKy!ErIDnq*;DM%9p}kL%LX17>n@MKyQ6 zQrldZ@`wW3Dy!_O%-*bs1qWZM<-!HIQ`RHu*>_zi#%C)|Im&Knk4V7Ht!qm8Ct9mP}6#rLL(NH z#vsdF6A|WExh{RGdoO&@CB(V3aEgI!NeltIdx@Xa0HKz>yM;IO`|T%kQSPue`{K%= z-nIl#-*H(&k87xrU+9}`sS&=wKZPHul4g*5a)3|fyYafklYh>8BVs%9jfE=v4`!y` zL&DWJ1ii13yCgJ5Qeg7eY0uuG83!4Pd7qSWi4#Xzu>@rYDP$Lg9Wl@FG}5W%Tx%P; zv4=OHc+|afPR=TGMWgCm9hJs(uATZ09Snhq(0a-hKq9O(Zh>vY-y6%N(LeIrx%PnFACdD~5%cTj^y>OC9QqCGf>ksv zO19(gQ9}}P_L24R^uYio$7)a}3z=DM#>#lTT^{a_BDpYy<3HXbp}m|TouIN`wuvwD znKi-zl^;4+aYu?}f{x){!i@Ym*9Yh(D+2&mtUi?p{1MhAFU-0l{ex$lbOlZqw-ZG< z_h@IU^OvGX%c^8Sk4`cyvfgL53p zuq+3+B5g}>qFuJpT3*#Y1%cr8=H-#W9l`@(IMHD=+(Gl9-&yt>H+t%C4n-cC!XDwP z?wLEsqZGoZ9OuP7|9yD&&2;`69Sk;yOD#83N9bq9zoTDhiNJm;M8>e8Vyj`(-nx$D zb-V?zEl{G#z+T^#I;jGA&%clQwDr(2MEo5v&yg#L? zO7E><3Hs!f>Pkx>op$3-IAIwSfD-J5YG?-(gx>A74UO&i8if1Dmv5(2!!w?C{MRD- zDJ|c!Vl0=ZzRCLz9SO^BnrBl~vKfisY2l{>Bt&S7Yx_025Njc_aV!~Qj*>)Qh90&p zwjaLNIMah-9c5_C+md7$C&oZXx%&r^u_GpS{21*+B%r2XT1xKd((XXDu!0&-ReWBb z%j*?hYFYBO?>n~s^q2~%G|37VY8Er8pa|8Bd3cN&jG%Domv7C#^^`pBYt!EsY+Ou? z1P6z_&nYN*#u6C?B#pwOKBh<*hMV^eE*i_MI&)q~AK;-z`oGM9S4>|nuhKK2v5aulVUuGG z1DjMVW=+U$Lgshgd^RhvnS-bO`LTZ#PGGx7$F|MzVcVC6v#)Qlx|Kw!L**Ol zRuBKtblVQ8RwEFpc_bM&SlxYlu8sbY^T<xi0uPI-RGZvx?tM=&M77Kl_c~k zKf^203q;T*5OIZca6UjCw8%9(eyfiE3_T#(G(O=Mj}o)jiG;!`Fm>>(kBVqylCanALpTHAgUoN}f8;^>rjNNMdh;sll~8u==B>y^) zQs)I^n+})En@*Ly_*hN=h7Zg>w-yawqMMDPTK9vMt?U`by?km=VMr<+T_dW zYd9GP0IO0|B=wD}DoK|ozm_&HV9C59hx58&CWQ;<>wD*k!VJ zzbPS&jmjai5w$G^u{^xyRA%1nWr#x=88_%|zE?L5h3$bX^0KV`{bmfNx{uIJmK-s` z<{dt7A$E8%=rjxQGI{7yO|>gTpdn=3cnj71^XX-t>5olYFo;}au;J;ICnxjw-uwMM z$1-hP5FJfJE7qbajWbZG*~0cF@f~@{*Xz$)lm3G+LW>jRxI?3D)5$xzO`aNFOBJ`W zUv@~n%X?S>b^XfN2+FWkgVRhJK&KMdoppxaU03y@M`2~WVViDDfVUEK^5PxSbv82* z^>d{$qeZe&-R)nZWeq3tuJdy!r93o*a}X7RGt3&kgK>0!ImSV8mQ-mwcPe{)6h(*q zej6SjH;)%8Vd90QF%;IQ}#9kGOtTSJ@0l3dkCZSTJtE>J^Dqou~> z#;>oow*rCS1FOUqfPUVQXue+vaWal!pj^SVL^r0-5{mnl#DfKT5f{jgRpxGlNpUvZ zBMqPmlI;OvBRqs>D1sJ&Kj^Pdn(7k=({ncHzpAe#*MAE&I~Y+#v=`vNAES3&^Qjrc zdNuxaOq~|$afVG4C3QvaFF?#P2Wb72p5sE} z#kd!?Ra(8_E7$E2@9U4g0IvG(6{|UXi|*2tUtf;{IFxNg;xFOV%R$#Uh)O+&cpYfE z1sw&?k8A4{i*McF0(Ue;GLYe2c)#;qkoP3|YzSHX z0z4Zdsecp~b@PU466Ep$)cRVaSOS+FRZpGr z+eD%kP)>6}YP_r^0Z&lx1KO3JE+ApG4OC-=yyV6dVnwwVO#ox2=I7%_ch%UYYjHG` zTyaedMz7m%c*%Hi@-Q|z?XdLUID^WI&;~v08^fpWDqr9n(3m{4u_WBN$||h1oI-6k9C+KC`Ekc?`ng3I2PzdSCn%Z&2YC>6mus6 z1O3W3@or1N76WytDH`!PJINZ-aVv*Gc+ZpV&)-MztLy!tGh%Iv-sE4&>8kwoK1&%T z{xNk|P<>PqbBLn!ToS2%3z>ZkEb%y%rdft-f1xV<(v1s-IYq{K;>ntAC_2(dLYzr# zD#Hh7lZoAwp_ZP>f5xhq3p%1t)#s5sgW`;LX?fCQB*a`BdhOTEeiIX3md{5WvBk44iN5Sh=Tn5<-j=HNIsDb0emMl7JmwG2Q zZU>{YETr(pmY2h{b8z-h-o&21dblKyQ-Wb4KC1eJkOx&_=+qb)ky^&~=3y4%1~U7N zfam%S%z55Ac_Us;402-fy<6C6 ze$~?r**n5KSJ{S(8CznYw0~T08}$FTBT(tKIDK$$dUpSy;IPHTdg=J&gz5OA)Z$4z zuCU>4?!mHAaUu&!k~?BHpyOD=k51gn-CDd%(uVV13dRk%Ld_7$ksZg)MYieJ!smI* zvg+aIQNvTU2Fh<&!owuR`4|owy|B?qE~*O(s{2u@KIQC9%7byb%eOSWmTKpjX)Y(e z$@vFm=6snXG1*5?o7;zvLS8ov_0fiAdTycF%ZG;5M^_A#yzq)Sk&7_PQMiyXOkRqc zb5?mTiMhCn4ZsT2T05G?aA)&LJxc(ax!v4MMW1*du{z%tLMP`wPXJ94oeKaSls-xA z9Onz7;Xxzt%C2Qm0Gn&bv|rC2DQIZP2LU$`P{oCC21d^}cQ^|(8|*9615y-yN${om z$WyZjZt{$S&jG=b@G#fhadDu2?jFv!+!Vk+kdCUj_=R|f^`J^JE#pRO+1Q=9JOS#F z){#XLVQ?X-d2_xPuK8l>BK8AQJ(^jB$KWHm&3 z$yX)tEECfTeJ&qQ=PYB8Ib0l~OyNMJ3~$~!tQ~>P#s1=ThbS4vyDT0ir~sHjLq6}=6-;$F9MO&X0IZLdqR&- zXp&wecSlG%yV>i3sx_DdG6e;j5=9u=6RCgu(4Q#_nUH-Cv<&s1%H0NNtOq3Tf`akr zC6)=OiFnDg&sMSUcy0oAyv!m4dNujz7`ejIuA^p9fuYLvGT>vXwaox#-dpRz1urfc zdjef!L<;II$i}jm>_%3BL>;DK=y8FcT^U$H;}3{w)@Bwh1|WCXGjDMBT#?^3${WF` z0=`BqbKcG(3I#0w2FdH2hwY{VE4!}r+2|Z!OG2YYDJjsGhCfJKFumLo$*L)FIijME z718-@k3SzwJLgpZNw&3{=gULxHn1kwg{H&@$^5j$4R*#76c>KjU3eqQdPK1mY5qZT z@;KjO^<)4ID^lMB8`LKQw}!zP`!dq0iz{q!oei9^py5aDL`f`}DIU~A8?<8Yv&vK_ zn>3@9Bpikp5f~QxGZRQ`S&5hb;|Mp0KbAK;4e+$L|B<-_+PC-FHQzEt>OEZ7&uvOf zx!B;tQ-?VSMw4De1@SRlozs_ELW%yvL2bYe9dHcW3VP4S~;5}2+@mk}q%!;$1=TWtzbO0dND(XqhS7PC} zgj%~APw*T{c|8%N!N7EsYE}of^u#<83FZfu2ki|ENLI-ZzQo!!_imFm(=WG-Lb7u& zB*IrCZ%cO=!;^cnb72e9$+&&@7=mRrF85tYAVl{r0GDEvt-t@?@RQp9k-poyvsHF; z8=K}YSsl|xN&$Y24KRhi#wrryB4%nWZx=fD--|=}vbjhk$ z@a}eNM6lIOz5SFwErtwfU{Z+llntzy@@{eti}lxJ0{p^47{&7psy@`9000022~Yq4 z3Eu&p4pp)d*8k+_u$FXQGKZt|`$RA*R%4x_)*(g&>hak+ZEU&3LEY}u54AW{G3LNV zHCzh`rH*Bo*yHSsL7?l*x$k`ta29O&OotlV!t8IFKl1|}sFb#ixtfZ91{Y?Gvv5Xl zh`PyKzn_>E5o|v12L^d7r)MpWchS#;B3=nCaEqJ2H@frW1=+EjQq9i`JyPLI#Nt<) zuDZl*JiN*6TT#U^05&Yw2Kv#VZKpkv&zDlzAG=PgYWRos|2-kwl08=UKl3p1*z=Xo zj!fVre2Af)oK@L>?2#w;wvV6@8G=A_>fu8uX<5CYz`dYh+TQsf;1SkNz&{7>ERCY~rLYQUI$=JNIx z3PpdVyzyb^!n3m4^QahYtl4Lts?1_LRmseye4?`33PAHM;y2uS-;#;Q3&VLt{Fdn zzZmMl;^q|>x;lKjJ^dn;_)IJLt+vPVDBio`1~JQl2Vq%i1G)oVI;m*dMvD;m%juPXCU6L5@TD58nQ#(B!h1s$2!}`r7($)$ zjATuGUut!STuy<_|3r5m(Sbv-Fg9I0JVDBd^jz=&STW;*dWb7y)XP(g2YHoPzVbkB zlq8$fQ$XC+a`3D-CF2x`h0A`s`8P(fiT?SF_b$+z1uiYxfnBNaU`y-KWQ)K!p(vz{6mVFytS?QfA}r(@Sr@}CaT4or5?ICRBvvWdbGT53V{FM|kE<6eLK1xe!*VjI^c+`x}@ zLI#Hy0J^&{MS+?tW9~&PcdNJU#}yKpL)z{9362C^>@HrEpI?zJp0OqZ>9ch*$#H7Z_k_s&HUl z9a{N@RAR4`eb$1gNXhrk&T#AG#lk!Nsc0zmSyh*9D4hgEY$skux(ZBO3{fDAFFBrB z%B|W=VwlIX(ebzeK8~FvW)hxvs~bSutz0lc1nDzL>fFbW35P!gk8>*?%dd-LEnd$< zd79+vn3|;{w(rx_6jd}`|A^bbHG|1Zo&WdY9ZyZgRQo$T*Bcu_U6nLp%T&{93iE1Y zXfhXDYnJA+)N6<2=`dx>WPYE5+<08rK59T;sJ%Uzn&@#I+B%8TEL(6-SS?t1{b3x# zq2U7FSg81x6+9A|$ghCZ7X!l&9~JWY;J$c#&Y1Xf*8j5g8 zTVTVcL<~-@O%4M_8@mz>HRUSTyfXp4L9fM_00093NfC40&aqcF_I<#3{&UW#8w#NT z1^fJW0kHWwt_zDFF$6$d;%^4wB~c)u)cR2JXE^1*hy8dKm8Wd;aD#nT z9nL@5nB)G!aUX5Jfi2ZTHa?W_JCQ9F-0yWh_wpOXCExn_nnF=?GSaQ{d7Dj-wvX?B z(9)_g0C?Z}i5)N4_AegLbp|mp`|Z<1A@(fht8wG##ha1KuV5n=U8W=EmAKgjv2Sfi zs;)mQ(aexC^-q#bJ9)EGIo4s4P-!O=qyPT$f8Ws*WA)@(izv`tbwpr$D`tyZyrX51 zn1auUkeRo9XnMrns*aCK{VzNU{*A&#M3<<<43X%%rwc~r4{9Dn>>hziN95SzXs5kq z&?;Q=zinkmJb|L&AioG1xcM>yLG9b$S20B)4~M{jpE8vEAx2M)J5E20hU(j4BP%A#(d2r+yxTdi)| zt`>|@?~>FKox_#R#Inhe)n|#IJ!MmA@zPwKahEe9RZ@%K@>R-bi?$QK$MRiF z36qA}-eRf;uX#pmBxFCu{kI%MF`ero;$rp}KO%6GqrNwVw8SwtW}E!a7bp?8Sr$dw z(pK*UweVg8CJ}Jq#_Nb+|OpT+D!I$`TQ{=Q{N=A|4S@xxFnfj*hv$Vmf8)>CKt z=R=kF?cWbtmrh$60-E9TAj>hA}78XZWf|MCMkwt&}??d!=qqk>o9`cX%U|xxe5=b`^)9M@grVe<ILWu}$rb?Hd0KSl-Ll zE2n?Pyb(AbI)b$yVhe19B;zeCxi=1z5rn?eFe*Z6fizgh9;H`_?}AZZchE4ICrsE| zOFVf#{@(&>OF36vU<>g38gB^R0W#|R5kFCOu*qSyFnn}Jlxe4}ZgsBC@OP!j4FnFo z*m#4;O2?T^{s^fT)7v9^3KH9?)n7SeZ!tc_Vo5`r@A`nZ0yWUQ`gKy%V?S1vVn{ga zzlt&U)d?0C95qx6 zfCS-}wE;joVOwBeR&>nO1*-l!@fBFW2<#85kjp#RX6spzH_61f(eL&}61Oh{0e#@| zz)fcMKeGA9D7PMe7+>e$2KJ!_BdCn0kc2{jDw%XqaGQsAGctX{04~~LAwvqrWV!== zUD}naMDwPLLfrV1Ub9112}9B@5evZvv{JB>Cg9l8Wz27u?QV=tZ>afHE-)0 z2zXM(Kj_^MPkxFtnAYxoz%$*$bZ<(h_-E8g3HVq%=j|it?p>A=eH%NyN9%4y#as0A zL3Elehdznv#u|p@b7ciWPbb1Z_t5;eOq`j0u@~8^oC>1|MRVnzF&4uljY{zkD5Jna zzMKWkf+fE<=hC|AGGt}}xcBZID{;B5>ysa0m>7fe+U@=lJyn$fpD#MN$#Mc_ENJ`} zvKQYze&c#s{ez((O`jeB%QvnnZ$67AAbD5hp>Dk_G1h(Qm#-?QY5mLSfISJi-bPoo z72LUUaf6^HYxZSK%;qR35}A=AY5>pGemVylDl?Eu`YI!(_AE$R_kbToZOW%~byQ@h zZXduFb~d;6UF^cB7lq>E+XATj1D?$5vp_bWn$B@IMfM^is8)yVAiRd24Fl{9R_tzM z+}{v-3Yqk0U;nU+-GvYAm6@6OxFK6$2|eVe?XpaDA9S)O*#qRhf5y7sLQ~))EB^-- z;I|8Qb3&Kl=PRU>WqeBpE+G4L;c&e0hO4O(v|% zWAs2|AyYQ_6i(7x3{gV8p+m?NKu>}Y>lcx+WL4$ zT)USuoUGkBbv`*2>sB{zK}JOw@FISLJsBRSHK+1HGno=zV_Hi0JBP#J<9_UU>DkXkX>euBpVUXEbW z;to^GPD!~jQX$^WvW#zys*s#oTP*4xss z5tbvnQMt@Ewa9Ri=$wZk(E(9f=!`1R>y2=(LA2sD3R0JphUtnaJR|~od(yvZv&@ID# z*i+2BCMMg74EJ^qx<9`;H+jb6nKFYtJ>%o>O(LMckL*}^vxJvs2=B(MpfpVM@SNgt z5?iiLHrUo0|9`VznlDBW{RG|l0(oe%yVKz8-lC{eYwXTN*(Z15f{&@bIPj07`s^D~ zRnPT>HfZ*CvQZvH>fGt2UyYx)K}3$(b#vtdTlif62TqW8?EECY98mB<)A|0q3d7z% zd*)|Ad=~6qmooo(y=~96(Mz!7^l&pGgohSNzw_RF{{y5+C&`K3c9U0u8lV&bi>OC6 zn>KdPD(m4Pj)@!yN;Bk1dESd=BPXNB;gYg>86mP5W04&$W68=`wux}U0$T4fDps*r zlfGs+Lv(|M)@!@XD^b2nNtH&7D=Z^FlgAwJzd5f~>!P6cPm{vOccAAx?b>O>E~J2f zhvT-CY3OdU=Nf|}wO>b=Zl@Mw+A@!`-1On3o7>tbbIMkPT(m9FM8Y&ijTN*2OG|ax z4DHrICboCtoM=5&`+KmqAG#e*V#>m*W>v`8pnppzlE!X<0RxhSK~KU%7Z-l@86)!&&4-vDo+cv zRxDr?HjF0N!KHZXkx&BTi9S25l!Jl3b{%|mQs)rtu09!PjsERDOncy?G_?NPx97|Q zhI@%h5Zw;`@b)t6a!3ab7?*c2b?YBm;O`r5KM^4q5x zM{l$4z)i;heTF0i8DG8!vWhSq16#nAfsUy?asr9#n6HC1lLm zEI7Fj9_<~aW@yGd5{d2lS?}fZY@k2-JP>t{F~EJz-y8O z{&_0O#jg+_#s}LBCACN}_Nfa!HvyM<95w;EvGM?ydZjefS2(ltezQtlh1(jQT}!w1 zln@9Gt>@HNWsx zQzq*a+IGp6!dOyC_&vL`%gdzeBt_okc>)wBAcA52Gh%kvnYkD-3!VXDEV_Mebx1gU z|F%c{fR1|#*uCz7EKG931;jB>r@$0JQ1LpOw{jb0_F3GCOeja~76}k|ZhW8!;$+y4 zGEmZ!9$nrgpuEI^Z|dHwq%GW@)S!q&f_=6Cd~R42V=k3tPrq|~N0$}>Q~IMdHFg{S?HV!3$8ZZ0huEsUth_L1Z60DR)7|@*4zS;BO7MXjuC1; zx`_{1wN9T4h7G#4K^KvUZB%QrG!ClfYIJpJ3(t0qT2cHxo>F@ts#*5D{>W=fdpFk= zjB4U9tCNy49!z>nXP+p+D6W{!$(`JF)Vx=J-3EiH^uomL#V>75IW$ua`xcbv@p9`( z%8I0Ax%>vG^K5$F4}|hUgU4izP5|SpanrNrP@FZ_SP}E?&`rf`pLN0TeNZ=T<7M*I?$oz5b41j}B z^PV8a^q*y|EAu6Ggg(h6xWVe%@g0I_de58e-H5Pxikz$f2MWIVnB;qd7(4mgxk6@39>Z4|q*@Sx zs=M`F3#6WaE|o?@IIO5K3Do$8{n;>y#UP{Wz!A&*j7 zgqvq0to~Md^Wu;S96Gq2O<4NTrwhbg$<$}81^c?(sXCcyE)eWP_ubO}bW%C#U^-Js zB>Sl*F4P{fdzYsZ7yv9ebWd%-aaJ#7B0eG$J@-SKlIS<6b%!sdQ66Vgk;0pOfvUqE z;cQwWBh_Kz5_Uog6Ws(m&r;&IV+`_c4VG!d-x5Tpev1L?e>WZcSVnCh0>%Uy$z;I>zTE(MwXI%~DmHg=nas&ly zUQp%wOm^k33{;3O8U6Q{i2RkR11R5(VVnY@oTsMN=&MNPnwZrEiSdzlN;R664h@E; z(}bV()uAcvg8r&CQL}(QS0LZ0S4x(x=aLOWJ%w;bjg zXMzRe>lJh}bXn#x<=}wKXbVe=sdEG zU+ZK^wq8nXlH7E2ArA?>W-N)$8EI%%5`s8ILk$#zfJJ(3ykRSGe5cIa0Bp_`D2Ana z?aHymj+)-4uPUMSn!9h4YbtR;Wz#t=iSggi08a8T430}iA=1OsWAE~+RCElc+fP0V zgPj+XuRaa98jtJW5LM03{X6dp>P26mpq}?6YyKJp2WPIFW_SjpbSQVA^a%S42fGTo zo;LN)UZUJf?%q|DeIT-;l;y?MpsmUg9&Est*pPreF5~?MhyH+5ceiOPj6UJ=iYWr6 z^Ef9fd6!ZQa!%D(bv$X;`A~qT8e3fhs;N}jH^fbi;bG!Dv!9h@DhTef%4D>kR;NQ2 z%4j2qbegtUFq^xgf3R|tu~ zpwbtjQ&KCupcZEEnvPQ)?$wt)-_sw@fDOZjrd55g#gA30t^yj>96JTB|KFFd*%#kK zw@a5`vXb@@)EI)UGOHiR9Oz%6g&3EY=gReiXa+WZSzeIi~r()~&wu5+g2XB#%?cAr8`(Tao5BmMV;_sssC4ZZibiE2o^HxXE( zlyT8i8(|q8C7UZfx}&ysK4Klz@8aR5xoV=~Rpu`J!ix=CoO}O=X2y%JJN?BM-(@{* zq=jhW?&a;^ZkzgrXiUA?kHTb8bAxVmPDXPVjt&S}$S2g^Dbat~?@|&d(Bb{qTz+L^ zC<7hI@V6Rg(fefX%`BlOPegz|KmKaCDRtG4J7+{C_mP05;K-j63TpyB)HRin`&Eva z1<}2{zE;V1vRN_%f|nr`40{|>v=bY`f?4wE5P<>|gb8C__BLtkHbAjd>&#FCa z{cs!@Ijpb(H~Z`yA&McSlVj~qc0pB5D1iOe{>*X?5v1(?+~XZ^gVQ;K$U`%wzR3X@9cbSFHUlu$+PV|?%AX?ro4tOIyzNcv3He6}oRG?`g zYAflT$5(Sus86BKmzI?ko3w-WL`Heb#!Yk zY=Pg}zKO_E#DwtEG2H~geD~8idOu!wXAn+0_ulTD0D^uVbdC>F+N~-FoLDMc81WRi zmAVm4)swl*LuM){-7ELuPZm5i8nq;vnNVVpVEt~*>FIHfO6WSkJ&vVP@$R;#CYFa^ zo;Hsm)fD=C_^V|Y%Y|Z${bAhcFEBb=tybaZM@>FkoL;r`h_FaRO#&Wf1W^Y9@)vhtdfeOr?LQxx zOFoJiuFoxVNWLLP8uYzV=;yiK(AB<193lpiu=^h7re-AUL|bOId#5`em{mF{#KQ z{EvoaUlAMpMfj)U1*z?lKmrLbl(%frEmV)x@Pn1}8cRrRI;KQaWXiwe z)=%+PfMaXsOFN}YuoI0ONfoLOpm-C!CSV|YGxHO&Bhk~FjdP(qEN5S-Swy1o>{X>% zhiajRvC-eRNG?1);@PWw-XazWOSE1GVcVF<>-x08m8X@f(1>Z|1%E*%$s#c_#>0N!WMZNeCrDOyM%|NgIN5 z&39Kn0*^hkJ67Q=#w+=A&M}Q?ojM8NZQwe2Wc!Q@{v+;cNU#x9F=!Ip`QoFaB%)S$2! z!ZXhVK}Q5~!*zTnq^eAA?-1XUXUX17V?d-bUO_-OKr=E7rlMD3Y%_WvaS!dAo}@`P zPw#iK(9abXvOlc9rV}9-Wz~!nToIi#xH{5~zY)kNSQ=zq5-t(Zg$c{k(QyiIC*<|0 zSlp~=(~4a%dFOt3_R@4@uoS5p(SpJGgWLB8n*=yUN~Gkd>$^Fmj1!irVLK;3g!IJ) z-=q)Y{f5Uyc2^bjT5*qR32HPYxPG1!`cGGNo|1yNawmMM8L7Os_W*hx zgUv(nxQ7)43tZV`=*_VclbArMy=dv$NnQzKOAlHJT&Y~>KMqtzGU%`I@2NPikw2sbcu0HG%&p>b;EClWw-w2x zDq%kM6e4OPz7#7s^e`xRYf^+pwG~u+r>{WM4!|w0V?NHxX!+T~n^b4Tc2&qZ(^04} zLyJl9g!_ynhJJJv%#l>jCde*mCwf3E$p#$9r=80d-^75enE7YQMyG7g5S?Ie4xf`XOx?*qi(_@cQUpwy`g}R z8b;3+j95h^@S`I7L@En}1wqWqZH&{j7%Pad?={nmpWTF`za0h&^!-v5*oE(KL|*b- zf?Q`HT-~nj{kgs&!i*(y;W$bfipfMU@S~_dFU2Jy1nVG7P?GR?J+~QxRt9l*Jk`ec z8g3}hC{5Xr99MEi3E9ohVuh~9hq8xRxlIgJT84R5iQFI3wHWM$4l)Q6XFwUgY1t4d zsv{8TgVrqt#QqDBdh~i)R$-AVGLbjg6L~WXb-fODoVcc=oA1FVVsoDCy{>GkWJ9Y5 zsEsY*LnA)EM0QZ;fg1g(e=u-n`@Z*c4o@|zyiV!w2$Zj_ZNW+#otvtPWhQSm8iEK! zOmn-^ z1f8iI4<#5b6!3kNuzUG3W3V<0yguNy$^wLAH1X#L%V|Ah9Zj^&d3CQ#(U_P+%*(}x zO2gLK>L;|*%5Vwc4=OP=C)Hb~s*tlZeMK=j5nCSzsa7cI=7 zDzWFdQvP)}9GeDgrdp=tU_6iEwAF@^Ba9UcYR}|bcttcwV2S2|h=*>HjqQ2_XwH0$ zHxs!=69^u#AD0hRP2bE=j;bmx7UNTr@Qd34uIj%n@s~df^hgeL?$(2@xn&f0X_0gE zDLp=XZj}KHR9JQ@TEijSinioUvUFGh!9U5=#(?%nhjs3wULBRQm7)YY^+gNvaU_aH zgaV>B>h3;?PGbThG?tpY^|*tq2~CkHCiD#yU)NsHb3eYLVkGtlONi9$K>ayHf+HVg z{DY|f$sw%`x3~;2W-hEGYrFJBxNThv&>uTBm`Fz}pO* z@l@H(`YbY_D1L77En_n?fSv6J9{+F{sVyksGwWIc`_tauiJNB2P{s(?snY~jIl0M* z>WUMx{`V=tWJ%>&6e1%l^HzD#B}-hy6|@S zfA>~6QL1;k+bH0*2`F?g(c*P7e=Ne_*&4(rm{LMc_U-fn94u54NN-T7*^D*pB;~Ph ztl`Avzxk^mJo-hW8}hJ74Fb_)ZHyj)c|Q*C{!5tqs={p?>Kz(G6St1S%T|wZ$(bV) z|7le>TOH@RaX#FC`}w1V(`_jpS9AN?Z=+=&jhRXCzMv7(K1qx5`^2Y*e@sYtDkohz zb$M-4j}Pg~~gwd;TnI`12!ms7t z7rA%T{{N4Y;nH7Jnf$@|5oR&$Mii87?{-eBo~)KE8+u0Of>?>XpsuK}=}J0VJt8F4 z@-`wI{8#;9zHgllSM?meAQ6%+=Wj~>a50FF{wL4Q??;f+^+gD&vt8LfcuFjIsjYbgh!tY zLaYLFxq6Kw1caJNI3-=VcpRaW5-_{eW=pSHz^c!!C$+EqrRA-kTf;gdxe%-o;68P! zDkM#@R$xU=t2=Co7g5W;(%quBe|z$khzWS49}2{N3{tYO}tL!CZ<$0adHlrn%K1~jw2K~mPq!DrCa`d(%j`!27d?fd6L3B z6exc_-}Q~4xQ*rdK77}^9-NW|JLtTR_h&&SBd#rwZ!?TSj@3oT#USEOynVnlZsCG4 zQ8eXymEcjG{apm)3=crU`pL6oB<#nBHqZT3ca`E8xRd`8MP{h47L_v3 zE`lW6=!F&&<%mqhHVRYByo2!qS-HZO#R?1>-M|8*p9m335Oi)fNHLD;0*%%Z3OV1J z;@X!IE|l;d`eG8R*&-*exhfeBWJ`rFR*Hai)x~Th`XUqH=&dE$F$(1z+-d_rqXsDF zp(?TT$V;6yif*W9OU~m3O~iX=`1o>;LbRka<`1)`jvG37DRlnQ&|5zU5E6I&v`1dT+%kR6TXC~;&XtwyBb%9LRWVsfIe141(C+&1 zhc56b@54)HPT++p`MsgBEC((PxIw0SD&^X-e-V}F3uTM(eg*ERJ|kQ%{kc2<(lK{? z2DHfmHs|loW3V*2W306;A0zg0WD8>S7fhCC_|<)|7f`cF(Q;m=utz@}MVLP%H4XVO z)XQ+Sj06wH(o8_pZSaqk|MG?3*8xxI3A59JT3=VGRJD2HPn&Jq!z29eaC;`c-e@%- zofjJ^X>Z5!`g9pV${4nH3hCt|o!)rcrN>hQY8;V6UpSaloyL=m{}D!3D4^lDmwjSb zb~pY_7*rzOts4aqq5L3Y908AOXF;~a+INF<3;SWeKzwiapc%lb3s6U$=hC%t$w{-R zTg3o%>rPq?+f0)iaMLeA1@lzX=R>KF$k-y+!1i#OjaT8#09YvRsF{f3YrHibcl z_O9q^(b3@#9d6EqAAelsr=MQQ`fM|@I5BP3;2F*hy$fRZTBIIvJr0Da?lG|n(=HBTe5Uql zn8cL zDDnwKGtTqVD#t-?Rd~I7s4C?*we^q6ma|q6#}yny^MiB{;WMeB zonMpsrN@nMAKn>IJ|=W|m7xwtvJ-X67+-o(&t(3cXl;o{wHQ|7F#f=Gvxq^2mWZax zum93yXxQ(|s9I?lNq1Q0$x{i{i@rhC@&m*%n3~KWGzB4i90|d|&~Mm+ejg$@Mr^3A zZRZkIlmGs(^j^?4fkGc%Bqb33Y3fkChT0;3fc(e8x8_*nx@hcPC{n?=8ce^!Y+`wt z>*fWhb8S&E8m@JGD7)kF#&dB)^d$+A%X7nRUMW3>vRqG^=Pf}sh3}S0xj$C66B0mU zkm%6?bTT0^Y)>(B?fO52qu53zq#h10H+KZm6utUgg~$-VnuVR4*hyXbZKCKK4zVd0 za305f#z8ofR5>2r@Vx)u(8haDHt$ZA=NRXQO@Nbc&hjB)fBL5%}MeZ8az}4UI zDn%E+;PG=Y&YdnB)N*Yr{1l4{N}s4U+#6WUq2l}wf|Se$RvrJF$vd`eL~*yMr?4El zvy1Rc%f#W&mfKG9c>%4yk18A2G#O_66dB2BwyW-o@X)5d?V)q89{{40)(x)CZLc!}>Ip}JASc9mz}g**9aLO>60$R7I) zB${Pm#TgTYpbwDNh|?H1S%ejf!-}Rju+BXrti(($&=f~C$+?#Bb3D7%dM5s9|1pq>S;Bs-08DV z3Jph%%$;&TFOD@e8)!3sVXg4PaMeBOFJa*>*i7buIEVp}|Dr^B0y3G-1ZbOE@N_6e zN9KCkDI`+b#T1i7Lv$l>HG%{b@yjLic$rko&Wz5@GF?e(-}OmRIjS;%c(a++86XcA zBqcC`i{S9qtl=B>`zp4%mLUlQ1pKgV_h<6@Y3EvNSth_4&RSvTw@X@na`vWU zV1kqH1{ns)5S?evdbu?cA|0EP@wkL>$MPEw=YqG20x2c* z*m;^qXPYg#NK^;QRUZGVO1~F6bsu^KCDvh}svxV$EpzoW zGKhPehg!}c9ZEAG3d2I%>R&!sUz^#;a;^<4AFagd-51g=8aWeHXC*%u-v=P?y9I5u zCjfE5k+SDWXukl$#3&8Wq=v%l^FZ$d0Syy8u-l64_#I24Tqq zJ3pF@UZ0_T_CM8t^mUW_eCWeISN`oxXtBv-T(lNj3?$e^_awI>_V?FJMs#0ZQZxj> zu$`NDj1dJnW&J?6!c&AwK}cv-MyZ-Lx}(y#wg8e5gxd01>{mSL;v^Vzl^5u{=0D{A z39OqQ`L%rC3Wwl)+JX087yN_X>}etD=SiMhsu+fYPfN{JBv_sdZFEY#f+(c-lsHBQ~cm34nW^f(0Im^Obntdq7X8 zmb+Ksr@*vv10Uc;OvoQ`d9vDpVw>MzaGz0QCu;#xcmH-4-3; zXn>H32th4QgE44|JuWt63VJjUdhH&wx-51{nUam;yEg~X1O~qcd)JWmX<)f2+hx1! zcBd{bL~=RGSm&epuxOIv+)MF2POAk2l!>Y@)`Q_5nQ9!c;J&)VG5!$SqudFWS<;O@ zfg`VptW8%#o&YMIqgOLK={iUmCTp5P=SmG6o@$TD?=kyH zw>^jNpDeFkOQ|PGuQSSpUswpJyF6>}4=F82;!8Dx7ZAM%Wl;<_m)TrS^8G@1=;O#b z0pFNmZ#;RUpPd@9s@RW^mKi)qBj1jud$p>T7J9`ro@ zXL3UBu(^e}7{LX^C2a#GQ|Zcc@PB(68C|39h<5;6k*LRV`OJiF-3E5L8l--Sz_F3` zUMO?M$t*hWax5xpKowoWbdy3pG^Lt(HfnV$!$k+zzq`!#or5Dx@KKYSCj3-q0%#OK zwL-$GH=z*Nrl`>tl(xM?X2NLbTyRZk)ePW$U;O=E`lX-hBp>7G^2L>B*ev(5hf~b7 zqt-=q&tyCT?TMqDd*0Z_z(g5%GJ8cIX(8XRVwZq1 z|6Is>2U8>Cx)$8+$i06Okay6vcf3UsGM>=0UFOq1+C>gYE21#{-mbIhbX_t=Lvl`+Nl?~e zQuwQxTj?^yTxf4sxw{N=%3YMGoRb*^MF}w*ft5HlBnby2I?<;D;hgX>90p2}{>`Ki zv|*pom+Qi6$(esztp9CRCU~3Ueh`MA@6p3DJQb5l~2-r;`08erS~9*7isc!=M;7^qYVR(fHcm>&3g3f^!v}5X!S#4FClR zpiWKB4FLL#Hz9=sG5M*G#PZ01CRj83HUE3Hs0-8N%WiKI*D()7h~;L~Lw@C3=$U|# z+a^dbs7yX+q)^`8-1@&NP6@T%(ovR{oOhkMYJve<&NM)~z)siCfgm&|2mJ5NG>slR zo;iXI>lCp$y>%Y7KV>KyA}0rDe!yf)n3~8wEZw`U7&HI|xh{&NDJ}x7Y#+2|zw_}J zo9ju^SHDXmo7)UMucXPd{@#!8&)GDV`@GF+YC1V~P2`OY40_UM#v#g9_}F|gK3mL$ zM4pGhLDt72JPwvZoxk^8rc8bW?1IMn4P$VIJ#gt`{rok=nOZ|5TJ&1R?(?%di4Wa3 zx!rbdJ?*7O#>5qO?dKHE;H5V4)gdNipg)s?m^HFFYG|*;De|G~RMD9KFn_xsZIi7d z@-<=ulQ^?T0+4W1Go_B;82me}8i#UiwN}4X1ZDH$A#0-#G({jN$_sBiyOTLjj2?Tw z>z(ap{yF{`o7(8w`K5QN$FIV^rvZK~_L@RZ2uOOH7a{*?eEm=*1MS)VX3na0m6jjD zO_3PV#fTg!0H9I28<~Y3Vp?@!>weW5IA6s0@;)J}78ALXOJQA$vu5S5xM{#ziQ#l% zk~z0@^LlMW_HOuF{IsSxWuvyDwkVc9$Og;+*Cip%gonFI1-g^Z*acja*Ko$`v zEJx@)M4&~L2BHA>l83bRO^qv zfm(RMlYU^^;FOTj7t>o5u`*c5>9kSQz=!wh1L$)Qb@-=Hdt?v$Vb}}IR7eLu1hYC6 z?sG4*Xdg<4!sMMtt>&5Hd=z4jj8gRjIl4{P<}Kc;Ejc6^s!^ES*5nbg&6C6na{E2& zkiK6(l=aWcKrwEMqL3l_%8VpG|K3`870S2)b& zxiddnT|(a_4X9KuwjHoGGm_Sq z!O3;vM>P{&n%IX`F0b?nHm)%Rn(1%VT}B9gEp+*~ExU7#&_^NT<`vK8-D>OPi#X*I zU4W`)7YYgc5!>}-AVB5#O^>u6QvBd=w^SyY3}7RG#_Ru1t+2*sCWYCu%8axNl4j6^idS-c87Ym?+D>#<4TcFc%J-sn_R@Tsaye5z$-Yze~THM85UBD zwNS{UV8_=RO=8XLf!6{_sDg#C_rA@85e75JW+S^)JWKp5z-SkCV;bh~W{macX#?P(*Y2{)GPhz9|T{sIQzMP|~)x<3#>>z?@bzGh_QA;%3&$;vryN>#4;^4g|cx zdIEnjR@1yzMTmi97}L1;pjgQ}F&$CHQQyPznGIsn?uo!9G%>qlP70wK6+Hf$bc6G* z3UF7C%V(0G?J?aj0T3JAXACoSJI1H1>ra?Y4_BQQP%QVIo2fuRAsST0Ez)HpAcYF; z!Jrk$(6mJ1$-!Xn+1A^+U!MAG7h_WmD9^r7%Y$$Z%T;wE3`XhO-0Zyjd7NuQ9z-IV z@fIL2Uz!67+cqfNzXQd9k*j5rCiK^%pp?SZiXll<;z+mcwJi8gJyQe&o@ThQ37BENmUd?Xq@#G z%uov@HJZB`PzcH8QN;6#wcF#uXV`1&wsNMXR^|AyEh<_l7l z@O1XwoucJsD00-401Qc#1`XNBOskvZ~{(e#S;l1xQuW0^@pa07G<1A(DopiwpZ+;hV- z&lc_BT$_F09smsPa41G9^qn9&C8L-0AWT=_PjyLX8Jn41JSuuA!LT7lv3nGh=sfWI zTmBH1NrdbJm>SabKD^`+=!VmBXIx^+6-k}JCoq^H&Qz_sfQzc^@?%=-SO5Tr#sz>i zeE{tt8dSZW3g|(=SZE~@2vF~XhbS>qG)0nx0RSPl_o~#HRd#rGMzwN8qO{z+xURA@6D24@2ZKw!YaR3HrpLwLue za9@i10d|64B+ONbLg*iKsR9|nB(b5|nLxx98sL@GfqSFO1Pbb~pl6Po#0pMG#MB^I zjwQS$aWm?9X|@onUSC~0H09gVt=+;Ov#*9`b$e+vky%6&oS^~HAu1Hbt(2)D8Xg|O zFsikHET}Ch0t!*a@6umd$E4u-syK`r{PWWg1QH@5pf~c`m&K@-r9os8175)jcc{9I zi6)`~LJzQ-EqsMUQFc|P;|)yx-a4+niG-0#j4c_+_TDZcV_5m_D)j@YagF->>UgIZ z#au$L^rF!BOu*^i5 zhzpL*EvE~7Nb5Awr)glab$(R6JXM$D;iH(b22cPXKWBy7=Y~K5Adk~)5Ov1es)c3zvR)u0h9Tc@JztgiT3ijN$0w~TYTO5l6v)AD*iYhcoBA)j0Z^h1r4CERLKVifW02) z7puQPcx~6%K};(AS0UB3tTzw$WdU~^eP(-}3HxFK7#>7Jr0izGDC=T<@+=Yjp!Q!s z&MNP%w<3S`?a78WRRpBFj`2vOl{+up<7N6w3sciKa^o@nmurR+50A(;vF^7&B3ZCp z95wpsA$m{Ezh~~^Zq~y@iBQZE5s_56XKcKRhdS&*SA!yPP&3jC zsAPIiI-)2LP=GL#o4~PpEN=8av0M>WJ%=l&|63}8g+LO>Dq!eq;@W9JApzy!wR}MYTd^F$uz{Quc0@`mH9JPRr{(K*}HilPaPdUv1P@q74~hTA_T%t{T-rjH9LgF(^4-ETPBg-^`ah zMx8G%(x&IYhES9c$V&_Lv>QoOEpP?_J*clsX(kC5ATiT9#qf3V^DyZl8czZM0006~ z(Fa2jkc>1i1<9Nb0|Q_X0D*^f{W3hrQfD>-I2(SM!d z;yN2;E&r-;2B#^`zZ>d;o{(DVX#uZ_tgVuxwlI+>7ZU_FX%1jF3f(Jj3vj{su&TXx z1?LR~Jaq6<}y#WJpciY>2$2t%!mq zq6k0}4em@XuvNATz@e(Oyd@CGKn3p`wgNiXQ`7O@Zxyi{!Rsc+oXxdG0blC8A>yV~7xL>R2z;sncXA!2VUz z=?GM2dEVemeIXhT&)@ih(@Mlz#9G92l%F909_vDy32K#_@%1R63xW_`O#=U&jy zZB10L43DAZf9<>{%KIKzkMRHn_PnG~6eXZ^9t8&&d_L|Ui3jz3xfe9;3nSSUwh$EI zG;*PkCR(DB!&%0H!<0Ny&fL$8jUnQsG(nsEeGQ z48Aa%uPQ@@(qNj^FNvac&+bV0zW)NqgI9JR_`IaoHBnQ&q$21vQ#UIUP*Wz(Z%J~% zD?<@ZNJRiaY-Ghkfoj-6V1t>Q5A-Y;MODi`Jk4DI=%7V!?mXL+GubWND=5^OtDHG8 zLo$?XM)k>%K^;vbIzwO3!8u=E0wv5017=djK50&>`|hTBe^FM?9!D$}t-va^mK3C! zJ%=;oI-B2LB{hZAmJ*O_sybGV9Tm&A0_C0@En36uVFm-iCZ6z&@4CPstD1~8&vvVtq zZ9H02va*x4xppz2OnE~UHKi@=HmIwuMynYYtHESvR%ef7ZH-WfRIzp{mxO~#8M&Dk zqXx#3wPNZ6Ri*(pBxda58?^!A)^LsF^F4sSisRaAs`cnvV~Zi_Lt|SfB#< z0DK%tf%zjSiyBa{Qz|i!)oSKDb!WJJJ2C<{r?zY+U{5T19l%-`2tgy&0!AHstTI@Z zo>sx*0Sv8}AOP?=h~_~7V05AHD&}+)-;^vT(q|z`_ikk3vDV3OG~N$l*)e5gG!}Ne zSf;{z_XJ$wREdv+v_SxKglJv6m_gNCDaxk)Ag~PD0|d1GAsQ6Dt%iyvAV{DPrB*@% zio(z|0zw4yw$3f{5h<$>Wgpxqh&MfJ*j@S9u!mOUrnfR<$6{x5BX+=5A^q!47#vfC zI{sb8)*m>E7Tsl|^rF-&MD78IpP3rG1b=B`g;8Za$Y2A?G5qfmt95A>u-EnVm6|J(_K**u^ z;$uLSfCNht$^t{X)_`YS1b995T-+C(cewP_=wv4qn4nP8b%fh+_?w_UZkncw`KusL zWaTVGLc}PkZO{H7SLa{@L_gma@G&q4=Qq8XQQBn{NdOJN#_ySi98hlCHaO!OFnK7Z zW~rjrY+94={~;O_-K~zQ6A_A>T8?aB3TlWY#js|{0rcbH)x4A_JeS!(K?+r zoTimb=bQMuBea(@VhKYPhLFY<5X@vT5L;+Fpo+1g!r{eo9p$+^d&}C6<(?C&WN)F2 z1qJEXHUCV`5?H{TP?SKZD`x`~KXCk?l-ui?f5b*u_n zmYu(SUyU*EYHqa)*Yn0om&q%-SDJAzYbu#kc-R?^Au3LQ00002TG0ks5&$3u>nZ@D zp?0(+T%=b$EkD+~U14%LmBlq>HK0y7*5X>;2sfie{c>zqlJj-{~X zh?Qc}wwq1o7Q0QNQm}75q;3SH7Fh`Ex2(lNRx3*!kz*|CjuR~d5dZ88^8>Mc}i z%GpC?IF39u!l?+J^^%!0Lkqoj5Y~KfS@&8R%tCCV(17JOI%Q|AdIicUZl%sJtg*l! zAxzUp*@Qh?Hag{0Kxs5e1adA#<9&mU16|gRc6h{!vJ^C0tGkZka1s!19~Q5a2I2JO z*o4Shq3Y!c?&bf|qN-=%WnbZi9wa7{l=Jd0c}%U90wZXsg?syducl~qIgo z)#XO4)~o}#ut3rvYZ(DlFkD`mOn{Q4Y?uzynfxb2Gr1+?#>G;tZ!b3AF^}ZC`X3YR zc5E}~&mWnsd!EG$zx7Q!)p9wsO^4WGoE*Rc^(n416G#8jarzW36w0M{88gx{r;f7; z5WsZS3pJSLMh0IW_>E3$7%E^dWi_-JO(0K$C=M2Hnh5qhM$pYOy5(5up%(t}Vi$aJPn7jO5nODYRnYP< zyr?wmF~DN`v3c~rwnRSxkL&t4HO`+!)UWsxBW3}WZDNOSLn%lAFn;031fQsz^m|X~ z-}jtf%&Cb@Fdhbshx0Ejd5#1PKr4!0NT6qcPXM7PK{5zp)>`%Ho6`Y6v1WzfE1yQN zb5<2*cdD)D9X4>H=u=>JpTU1apMdHVl`Vj<}>35839!^Qq;1Ga|^<6TK=v`7JQkGg{3QzQOn=meLR056RqXi=_hDZV;Xd(gir#0 z(pm!BQLBeTrU$P@?U}!1(j+K`rIEUHlR=$&a|}UYqScPpb*X_R7@eZh;}e9(H?4yf zQmPOZwW=Trz;w+y>3{^_3WUjUnaH9v5fsW6flN>)8faQ63zRB2&lkwlQ2T%X$uB$n zX7Y3)%gBw4BfP!+GlyppN$1=H*f$&ZrjIGCkNx(*AQG1?>Lbb#GPcf?@s^TSoe8~S zwnS!y{1tw_R&YGuI#DRJ9ScGZrN#aJB9_ncpk81~EPQGOm`UfE1T1^yPR8nY3gv;j)bjjr~U zWe*x=5#9aAsE?6J-(!$q8;YzQvG*Tr~d<(?(yoJeHHt5l3p$c1krY31y3EOMj)l~b9| zwaAXJcOe=S<(?SJK@kjq5o)V|D(MoSEdex5BY+VI`BGT|lCLUVv1i95)5)YH2~QmF zOKDVq#iqxwVn`c|{5T5~SSU+CfTsM)lO_U3QzrgpjRt;xR$%2Wl1|Sv`w-r$*;$g% z8{x%Ik&`1_T2E^Pk|>qf$W2R9$eAc0K!ZvKg(0#Lqoq*+JYmKK41z9;Siw?^#-R~$ zC=G?k_X%^12ybh^+Oez>sQB@)F53Rht;{U~21sh`;zL5{D<-&>0)`)q9mAx@SmMOO^$h2tkhB;nPGwt%t^LSP zN+26RJ0TiR*e?Zd_&)SuNH@I9gxVjr$Hk)L_o!FN721;Ig`w0HuS88o}h+Hk@joOv+!B%_Z zdQd(O@j@mWDQW$VOM&d{xrbCz+`|$i&-tD+_ASUOZEJJqbSiZ0?ZkBfE~8YcHg91P zEG)Rbv!Q8)@C=4x#{vuRsh0YZMRdIvVQor9Y4v4bM)6Q%Q4CTe!T_EDL{Vf^2@nDc zQ$PR_Ru^^y;URAs&UF8K&CYX))qe8j6j=ayK!(4U2&N(`%9E^8!0Sj85+m3wX^lF* zJDBb;fS&nR#7>qwkFp|5T7dBD_B9yCH0Y4)Z@33y6@qocNxX3Pf9dnS_()dz9)F$G z2;<=G(e63+!{D$OaL4RJh(+yyn3!$mLuAGTUCg;xv(e_B*R6ASFhjulWlwTNMM99} zcK5aR9*VeS`W)=d+`j+-00Idx000xoL7D;)u@P?oCx!v^i^rKC9Yh0*nxyws7%98B zoWT|IjK)g1WW{Ovh6hj_g_b%U<|a2|gh(^dXUx5(g_BCQRDh%QzV zX!p%22K3crM#;f}Q>h_2>-iucDR?1`YaI6MF_T*Pqjx@=c281ncIKb=s}Yj9{njuMsm!v*KS z+nvcXwB^O)IvFrlehB3*i@_QFa$C2x01Qa)PJcycR%G5|YXVtpxt4MMiF4JgFrf zToetO#qiHBn-RZn^E6uW;a^8Un5ocOjfKclV;B>Y#3`9?Y0pHY>^;C$I5}aD!gMDu z8n5@U);{D#txZW0^scxsI0^$vuyMyJx26F@4&=;fANr7!@>D!AxI}*pMOHs|Ui#ackW~UKPI(}QnT>OGJ$Vf@LO75jnK%P&T;U9wCjr9U| zD3h>~aPFmdSWmw|p*ub1D0PU3%AU0_Frw#&9QEfr3abN7X_?u)<<6?&TF{BF^L57vAaiPRy!u_old*!fs*Lo0QZQga5*!YQ$nv z1BnVQJQ1U@>2Wa5oawWA%8asCXVJudA z%RuVHS8w#@G8i0Sm(bVSE@ z{^&27vR}^X)c@7Rr33SN>QE|00a z1Iem1x?n;)H`3i=%kf`L$F&H^TZp?-3CNBx(ul1z$y|M4QpSL1i8xN%5KI5+<#2D2 zv>(Ks9rO|qlSWOvf99V?FTqO;q=Y~V$S4Q@5%F!xiFBgCq5Le6!svG;>M4@+qg>2Ib27uK0ksAK)+E!v&Gj2io9*$y4sNmz7yFLiOy|ik z#yw(rY#F4wT86=v!S@H?37>3XWcox$XfD6tma%aZqD3-P;hMd2%0EL2jSJ|n4}|&> zVU7UQBK9%ho??Mkw&LcrnvOxxmga>EwrF(uzb;0u)*;g&&*_wVuIWLRpe#I>F6UC1 zTu^Y#TH>fq=zb0GRQZ{tfJ5l$P2Qk1!PIB4B)K? ziSe=^{SMY#qR`TXyY&k^nkXm<&jRcBUVJdsW$_dxfi{+1@|E#OqZ(-#?x4Ci*P;*- z?sXjF)YQbJr(=x9(dkKhMh0(+9Ub?&{@&9Ask1{vb|4WGzz{@!@|5VxbhojwH(52Rl*08d(&Y96E*W;$fmlYn_n z*gBHI!}2|*M=}(q2h-1PE_)iv&`P$JxE5}}C&OarIQaRRHZ+Oha%+EkQ_#{Woh(f{ z%YOHX=XB6?Wfqo3DePhVM2F)k-_aOM&GfK5yCp?d!mS7$GGgM24TrKeI7h-nvT%Gi zpgwjOT3X)G8xNC-f+r=RjpQPubXz*&Z_<|}%XKa*lYxHGVrO{P0W_aG-7$S*Z>od}}P>CtV zT|qqj??V^gXm=&NMUGlhhb$ps}^7%G7 z@3&MS`GqTC7!pw0^N+ILmw@u>BLe*zQSzF+s5%kMu5Ji;hMq8E$VAJopa2 z9MKnW>Gk$7$TJ6YOpL4zu8aRh-x>~{zKTY22{2X{txJkoec@S(5qSIZJ1!Y4H$%1A zaTG+mmH2x@4>+^s9An55*BF1g*3%{cn#8`WU-is1SKQG( zs63Ry!xN}k9RRqJ(~ABWz?V81H5;!?0VqQbK;&CYC~O9ut&(6LG7%#xSv=vwd;HbY z-TVxzhoWS*eyMD#^+O!B&M{7e&s59pE!Es0f%O^&O6WFO_BD9R*GFzg)JV;XjIvMlY~VtLKj0F~Bi z3pGL)wjUBJ1MeTBPFjUJNBD}lBqVYG<2AP*itCorj5B)_dEd?ZzX00x%2nGtZiu$S z?$Q_MH#j>$*&fX1#{q=1Y|iZ?`8~r$r%RAzI zGk381R!nJ--MMex&1h`yC4m=VdA5GE#@h`TC)hWWcY%~lmGCvw*2;6NX@qweBtHH% z$B534NtX^Fh-x2#%g7x@b2f(sPjC&!+@B%^FClo&d$i>%E0t~G`Z$0yGeb6i5k$ZL zkw@%9ISYIa#_~iCs2WXw167YS$cYIXoMsuf$mBPzmyE-mIgwo~^4k#@XEz6@-t9$| z<(Enk8bX3!OMfg_vx=v+UPI7oao~k)TxI*eKXP9~MKf|IMvFfv=JCTC=8PC292+Da zmS8z<(5T|}&t%ZMAkC$WTRy%aSEQDQLp0b!55>1yDQ+tFBypezaj0KDlGG5NBU>cJ zyZS*=!UeT;F`&`aJ(MU_+pe>x8;5WBG`TaL4G8^c1>)XmRc+mEnIV$GAWvhGtwYaW zJmp~vhkUPnQ7B3azX%R9Vo=(v7k;9VQ?Ot0IRb%3t;CN{YVOXvKNs7km0}|y#W?by z8^tGqe;r5+ik<3>*j`2Q(@AnBjey%TZhY$Pd8h*1*>;8K3szJ&aowUpHWIU>C1Hoy zJpGpnmSVJ1fA#XQl9J3P4oxng1k)_fcEo5mL!HtAPpG{(KCjC0Tg;lz4@>LP$F57m zdD;bB-~~3mbv2LyT$Pokt0f`<1=&=;I1-O@zg!g88+sZk`$2Mo77k!PQ#Z{p2nM94 zaP=OtB&|CNM`BAK)Wsrm8TI>wJX%xNY=i2Zf|;N8KIedqR*2yC_R|v^wQ?8uNU6RV zs`LrQWFWZCGav47o9#(+c;tk44+~c{dQUgyzpy!oQbTNuAg2(refLxgQ+2$PqpRS! z8PAsg9}z4wHB;yyN{n0fh>_UF^uW#akDVHoJXv6S_=$$@p7g!CurMsO|F88%wwA;2 z3)40>0d3;vsnA9vTvM`6D~pEap{b+jruw7H)_)tVE7BwFe}v82-%{p7sef^v=3K-T zZ2e~WuRHE!sB%Uqx_%Q4yU#zczLkqAvzkE4#gR*>e2FR8U%4=M;D>V^yLdz>TnW5K zm(@UwX;s&LS8BR$WPD&aMLGV@of4QhSP`{?MxQMy^@k+#$y>ONX&1Km%A zqr0rnE=_XZ`k|};YHwb0w^YkP)!KA@|A+|yRl!VnWz@i ze+lzc%eJ8YVTcA0J8)tX_(XeJ?h?hUlA*D?x+cug!FPVr7SUfUQ`O<%vg4SgUl6l= zaSf)yN)Pkp3hgJzYQoNR>4rdk`r2TcG?m(gTfGh?tm>t6;4q!;`3NUUmMVRx?{Byf z2lONWVt_Z;9xeI-jZ;+7jH<+blw>D=igUuZ8;3sNRa2fWI@hR%=G;;)%_lyqT0oV# zvhc)iLRJzja3zR$kXtUd14AJjI`Ab(9j9jg3A5+|h`O>}n~7#D#BfKNaeN<)@?$*p z&|IZ3mZv!*rUmV+5%i)V5NAbp&~&F&Y>xepMo4rVf-B0oX&x?Y-hCb>Z&!w)n%M0DL`dKjk2lt+%q9_-B(YtS6 z>l3)d#;J!DcKNpfzj8Ze{PcG%J%X`UCg(1poMfn_vamoDj4U44asE6h<1J2JhaK1=zy8SmgRsAf}Bo@-jweON; z&2RFrcBK?d00~6!T$Io7H6`A6LNSGib-VAD!QSKT4|C-M%QTwW#|cs|G!OK?d*PTD zyXoc;uOMK%iv;|Q3e7QzG^EIqX~Mtuf%Kv+l(gV?V0TCq?2t3XbaRBjdjcEkeRP#~ ztTO5u=!G{Y*Fr4;I)ErdXSTRs-rPQP%!JiZ{O=98<4Py4cxObJfGoeI5E6=^8|9G{ zIoC_*Ar{Lpzc3mDo>IWWYX6`$X!{Lu+Rxd`POod`^EX%eLb=9>^m9c@$=A?fC_RJJ z9!S9YztQGIkBCl&`EFJ~X2+)q={JDioTu8ED!NIU6%AvSwubG|^+G~@tozP*Ue>{x zjjuAqP!afSg?O&fW}06H=8RONWDKvTs9@A|=FGCiZm+iH)7|AGT%c0cPF^$TWr`E8 zW4p4e{2f=~nG?XAuDI5K$E^Hcek$8|Z6lldTr|t?DHk!(siuQ@RY%}|6h(RToojg!#`ew;R3C@MQ?9*T`r zF_A0&!&jYT+l7hQ0A*};;{5x0f8VbY?-iu#Fh^IXNsh$(6$jP|Kojd-5zaPX$6~hJ zKls0v??!QP`0E#^evfssjprP+*LVIJ*N@@m4=+Q;XUo5 z4%i~lYAJzdbfJsfK12eEjd#Ia0c?D6F;^}irvdMdO*$AY!^hQe6XD_@7+U}DVB76e zzn5;F?r{6CGIf+hqel`28xnpqx_H}zmZ^On zYVe`TJ2?r=u=>uTq2a^!3))nlyB@J@M_Aj$1-nn#Z4`)A9wd(;Pg(=$(R=dq^(sBQ zL#qgN zIVx(~EFcS`1+#8`;Cq`&vi@<2bh)BNH`o2EpTHX!5WocH#MZ*lLf$tz~G@iyTO~DAJ0Y@XB{QrB*&o zpWtWoRTjwfWSQCXDD!5>_g8cxJH;-k&9&|(4Q2%pfvmY{Qpp6|$&BQ7=l}o!0trw6 z01FKPo&*Ka9d80H`w)F!7*&i!Rsj$A+4vv-q6e_}?$Ozj^@omgYmKU3HbDPCGd&uV zLAzZ)srDd4;}tRxQZSiN-`D+H*2hx zO_o;!^y>gZ-O(J=uW_3Au^EW@Jw~Vy8+T_XJ8&dJ_$F^${yfae(*W7A`6|j~ACeN2 z)~0&`Svq(j!^R0ZCNj<}RespfM?bpi6C=>I4vffv$zq?;F6i!Fc31@cQM4|{$;I|K z0JH9)#~D=}_s$z1(KQFEgfHVq=Cv@XgbhWns@K zWKrku{VdNX1$6BT0>@x%5MDz9$)Wr~#JZ9s{6r>H3b{qd)xrMrF?Y)Ou0fOlP;)6=}|!5z&3mdv^UH2sPD4rt*tZ} zp{F&_mXG^mG5;b?+3$aYjbUE*S77)-o}Eg9L`<8Z`h03sw54%QAV#dt*Yyx@ee7gt z^`&$}g;$#@TN)s!W=&N?cllbkmLiXd=4{P4t^t1QO?o;7_wdiYYYEA=0l#+P)SnVN%x=M;^W~0#kFirNCMe?& z(418i`w$}~6su;0;n*0bwtb7_278Q1Ta@Qv>0AzmY2?V-57GmN5KlyU7D+uOWa;@m z_wf5*Of@5SA>7&11%I@mJAzKmCI;0%LtY;~9xuW;q#|yBT1N=jhCnDee8{duMN2wY z7G6xKVx-0PSrR;HQ(zp(99H*@9^RGSQ$bA&Agp055WK*2nvpPUSUhxe6WElw<4(KU zCbaUgp3ch9K^7Wl(71k+mQXh`b7m%Rl19|6weaI@9a&I>s<`n>;b?}Op1JP~5~czo zE!ymiz&2)+@LCi7ZIXJ5i42{o7ejyZ$*-wL zci_{ zVZrPOL%hEv?@20km)cbFU$-K%R_4jFc`>+=>EN{y z^X9qfac6ay1F^Frt-!U}Ce&={-Dt;s@4sW}LS!y?(s`6%gCt}~rcp;6Qj;3)#s%a} z6MCf5At~}`Lul0Zz^PATy(T9Bma6DeJX7r=VrB0)BoW&tVXN)}{D-^AdaUH<`=T&l ztpC(Iuix(a#j~xAR@qKvA1XP(6LS5>gOBmQG@^lc0$p%YW4e1d0Hc>LNl4Gh$lAt( znW}~n)yK)8mRRF@9l1*fEduk-W)|M$`t0l&$)k=%W0~tkwA5gS zObmJ@iH@m_t_(-!KH1I5z-KGQ%U7>%5nQG-e%$*MYC1JkemZIKPv};gR565P#xv{u z%9TSmwxW5Ac%eS;o`hfN!4cd)OlKeN0A<#1N1h(Gx@}O(J{o2~;czOM+}UYwUunMh zxI&wMt7HqQNTuw>WA^Ly#8tacfu(ZML|U_)3@La}$*Kwz2+|ytB6u>$r{W&-QO?1i zPD5u&q++gtorg!6u4~{3r~pJ*yZXKy$uz`$mtAno?!TUYW zi9%@VrLC~XVQTQnxMo;C!_J_=_I`f2wRey9?fMj|9MI|XEhqaQxW!5HgEC3Ti|Aj< zh|D5#EF5V8Ia)jRS0zQD4}2}Zs&ZGqX9BfTEt;A4vHN^+4q)3F9*FVUiI|4Tb{BD+LS`UZJAP2a!KZJ|(cD!W#8ukG~pf zT^2e|>HFcI3=}%i$=rZDy3WMahC8-S=O4ly#5^(kdFO3<93xjh2C&C4sd~k5r7HVe zL#xC0{3gFk>(`&7@O!f9r1EgzGJeH->#>HJMX0tKJv8M;iHh-rnuxB`#j1&`XJb3{ zQvRhy580!FZ;Dq=BgVulbp%*o$!|Yof4|JfpMBN!4VRU_y$@x|%n7iyNjO228PokD zQpj;D#UXQQgZ)WQL{&@oZ(<}`=hOF~mo6)~vR9?fN z$8^cm;t*C~P{Z~%!WwH88cCryPvI{zGX3a^sW!QTHA-9--xP}x?kfT>+tDy<9As#a zq+F{xp&_;aq$wFE1>mf><$o#ID)zPhMcp$FDIP%_DVwUre6j*_oO%_qJS?GKZ{Cjtd*I1@{xRZG-fVVBeZG3 z&07sPgX6sVSIn`VG>2OS98x3Q{u)=IIR!`bZsOm}f`~#8mPa)r>tZ1cHr^ilot)}V zj2fLz^ z0{r@~gnXZON(}gak62fm|F}ap7zyCCieZf67Xk3r<4e9KR0D80@VjQAk`+yzSqr=C z?Uk|*ux!r#u(^%~eb4pE4XFScu`+Kk2>U%55l zB6h4L#EZ(dTS-^8k)Dkl3M%FLP;A8)W4JaeitD1i_OBu6T``;iwPagDWxUCQSO3?s zc%^~IJg%N9(>O%75c3Xe!PnH(cBo3>5DLHtS#lx!LVWDUH_Q-Gs@m7UpZF@2ENkr5 z=a$q{x#gh#+dHrBF0CxMwkYRH8F~qclaRN+T-Molt8t!2iWzn1XOzaQJP~nKVF?El zMhzmeXXOfX_Wa1x@VRALtH42h6r^GNN z`%F|MQedq*w?ah8Vo&)g&H|a4z^NTgn-8_+bKRv0rCy}{e))61y<854cAzFY39x$V zX64*%J_20D7hGi^kG1`Q00d7Qg5zy}bw&kqVE~)+C_FLp1GrQyy{zC%| zD-DK}glX{Tu5^JVGqm~j18b1QlIuX8am1f%6E>g?)y^(dQ^`!)b$p6I0X~4foulwN zoY5;ivy|K_phS#3a7x+V6A4%6(lGwHVxklB&)U#+gfMoLF#yRPus>u2{dVQN5K4RU zS(CLwBDSmji0UNGBm4MB1LLD3f0RFsBs~dI|55^gFP1fUp$MAb&!EQcY+=Qy&~YM4 z+6vl%1k9(o6d*&*W*x#=6Ui+DZW?B{<9QPs(5xvS-OG7ELT_+3$K#&2c(`sL&}2Dp zJmg z$w-`pO)xFp<8Gzb-u~rA%BJlAj zo_T6kWlM;TDyHKbZ&<&L(uL#8){hnd*scPQ$b}%JeE*yW%r)w9#YNp8;m1j2Pu_boD?-UG?oP)BfTVvVtZ!(4OV8la%A8B) zGSf8UZ`l=g-So>$BPKX@kRUkQ46#-gYFz zJ#=KsN@;9}h_s68&lv%*13aR7J#bgVG{HYw}nZO}!<3gvzg3ZPE#BD)9$b8mD=VolX zJS5e>Ki6Vm_br^Hj&D)H)+xW08ZOPt@Lz!}2;zMeY?+E5x8t%Lnn}Ojfaz1l#@cP` zPZcBU{nht!TW@c46dVHc%qjOFv~__Lb}8EVn?;SmUW-)exrvyyXN#UdPYH4H4{ui0 zxr7DLqzc)98xFtcQvld{!lw0G_t*%CxdOJJe1i>r2cQimR+~JGJ;o9m5Kn3mSP(L% zvmE?n=4=9e{dGY>-WtE5n^KSd(`74SYONe@exh8opbJN!@j7JkhXg04zC?!J874G{ zzvhP1F$9zjrJ*`l5&AhABtzDVpdgdM^-fvmEGSm?shW4gdH>OBM@q$sjU&9}BrQmh zWn5&kkxKJ2kEAglc2*cApR~1!%aw#>IaNs^_icOuN|(HALB6+I{;}c#LX>Jg$EFJG zx%1oec)Y3v+u?3gscbpt_-WT-+75AM20XWmB#ETx^rBxAf;nyE>O2Z*6#O)*xi9Aa zYwa$@JkvqTHPuMD1zSo4f|xEFZv2} zn5-GgXMhIVI^0Rt8U;ObH9Nqp+rbJWJ#OBM_fa4F{*oc}i}sv)V<30m+l>Vv2+qSW?gMK)dD;!iep%``hOcxx%lO*@SryHNrVj0e zaWzhv`s+h>NVTzhj+7>*kEQ>2e@2j$yZso#daTaHi$Li(m^RR{Lhk7}j(u2Fd8jWA zZLn3h!l^kU z-@RA(RM@w!9giEh$Ad`|V*FxavyPtz$rNnd=RLbw5itZkUm>IN+6V!W(&){?L)aPU zB|byCc@>b$0eR5(^ja=hYj4$6t)wG8okT`>=nbB3cdS)^hZ(DUoQZB`i6LPjuCmH? zstb%$YD#}F=tYER=!9C6MSdHA&wx}>OwiR`iq$ie@k;e0Dld(VwN8|()#Zb_Lea;@#000022~Yq43=ILE1P#$0ZvrbdIK5uR zLI$wt-F}@u9INuTUT@^_3vDUDq!)|6Cq@!CE<^4yFfwv4BU>CH5Jilwl7O?$G;S<> zt#{%q7mFj-g^aEHu;V06bK$wpJ;&8v@Isd<_=T|wwlX^Q+i$?2?8O9yQr?jJ?p)JO zp$K_H#{+!z$7U$^#wD(KNKKn^%jRtGySrnJ_!}q1AIeCq3l28%G*9jl{cQp?^2}ma zq*F-@{QSqcl2P+TcTxChL7tf4JRbysSn5{&wtx&p{1VgN(SKEX5H#FEO@7Th0yq&YZXEyhLL})OSyZOPmX>Taq?|Mw|Q8T3vNP- ztdyhb;74GfYW=hGSM%8JerKgJ`F zi*iZ~)bKdsxsWJryn~&`K?q=MpBxxps_kN|ty_ot`B43iMzsL6{_XIhLhWrQrxTO* z57U?|`b`QVLc=78DhNW9txce&6Z1u&ON&SkrM14Sg7TT(Rp8J0-6y48|995&%imJF zdr(@IvX#hq(^MvBOCn<2ROOgCn3${*+^5Zz4kY?2#rqx_9|`=(Eu3c`QW;gQWRrDG zo-?!8pq+Odd2n)~-eTTZLm?d9mJ$w-um)I1%~U6$RDq27s73ZqS@$tUl*O{6Tv!%w zFUUS@dm6P?^C#4zHu_eW3j$Cuykv$#7;HFNl=HOVdmv~u-+snHdXjrWee8gGFGJ&1 zIK#K;x~t2O78ki1*~e7tKTgu}w>XDHX}D=o<{7vwNYd-^D_5~H>VI<&yL_$d)P7N$ zVX_3s-Xp@b#i}$&xyHuJ<~4g8;6{*OJg@5dkCwB7jwGNDH~4F#fmIeC!n{3h&YQYm z#h>C{Mz%g`Nu?JSS(`VYf!i5;1-&*xC_kpCfl6FLVO&5EREdKjAX1nb%A+8xBAB~|RNCcX)oC}3!^8O*&G(3q)lL@C91&WWF=T=@IRxYQbTE!Q+VTbwhpgWuhQL4esPt&A+qY1j%EPui=KEn5 zNaZk!)RS!vAEVa`SadQo#n7q01FgC9sKasZcDN?w4hJWzxWof!P~m*~=~oU5;vQ)0 z>VA99I*N2$p*z!|9r?j>N=Ymcqr0fC2`J!8fZBe>dbrBJCDGLMy}(kIk`EI{{KUR* zsz7gGzw?kOPJNn+T5XS%0m+uh3u2!3K| z?>R&Ua=$pk>9q9uA$~^m4>alMC6sPlMRFn{R*EM#8b3)5Z?o z3I$3ujTKY3`za^Al&wF@inI-u+ooQ6H-y zB!46#Zi+P)b-Sdp0UwiPO;>TN7<%gU?@N@sRC*<~9SfJ#r=eTwz^K%A>SK)F{~bw16#w$xYD+Abgm7l4 zrPn^*MZ&xr&w^BQb8MbUrH*SyWvf!qrtWQ~1A#hjN+}eg_%rEt0E&KH3QODc!#?J6 zf17`TC{ZotroipS_NOs}iAx-B*b6#$Z$W%mLj*hjRKGF(J6QcxA8bF^I|(VOVxSd~ zwhLEJXRl)=!Fm-U^iV!vv2@ru1P8Yj4MLX%#}!i>+)Je~e+|RZE+r_#zTMwot4eC@ zbZFrckpfPlBVIjvt(8zg&Htu^tz+4^^}0lk%qR+i+xTknq(u(0c#`m=Pmp~r6i9Zy zLKzYQ?$Vp}T^ms(YxMHLpU2ZCT}hurtL-@cW5vZF>w#y`t|MbkG%S|3M52pUFFyiV zc*~rXiGMn-$BN9+Fuz%MwWrCD*aIFhG|ka=Niz17|62QBi>8%7(-JKRp3;v9+J~>ja1eyA zdTq4g5;?!qWTeX^^6-4wy+B5TC5Ia;qE@2gmBA!--$j~CCJz_zO4glm(!nqc1)!a; zF;6h*S?Qq|K=iHgdx~LSr+mH2E|N>0ctG-49p)X4iAInVxe2I+L08Q`UM(s0^H)-- zd+*@?U7g2-e7xsU#^evmK$HYn**Rom4Tk z%Sv!YANLG_w1$VK5{)oB4{nq-yaSjkZ1xzE>O`tUJZ$8!-7mP@F=IRk$MV_?s z3!WKIp@em$w^(3`4;JO|a=Kj5SlYIJ?UbOcA%QM*4y9n+zP`zzoFP z4j9MG>MX>aR+W+?{XQMUZLJ5#*dbqv6XvUVSEeR5to!soSg1&2v#ax`7*&@f{>XBORc?jcdnJCr5}T%%NKH@ zUl|4s&3B5#8!yTv7+o2N=hr+uIQ=@82XG23A`KZ8$^0xI@gbg{Bi4&)8q$dB600n? zV8~HlR#dH3a}vpAJ0?#(D8D1CX9L&56wP#YZ{ zBubF_)E)Y(Znk!Iw+NL4G=_35NQxGI!t2Ey-BhyQw3C3qK%8jJsA!8rmyoVqFiH3X zYUy3?s6$#tuE~yRW%{eLf-k|gRv5^g&5;Kb>d-VRz@%%0_N+Qk)0*U1y%9}IIbYMx zz%{IBLJM$zM{Sv)|xJsV}e%Oi@y!|}B#^CO$g%g0ZT&7(c z*2RA!+rUiN8#=�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̠Qy)3eu*FVVa760+b;yo5L?UXMAq>kQPqeKfR`j` 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%0A=T;b#_c}|GA(` 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

      t?afjtCH=(BOyr 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

      =6=u`9~6vB<(05@-U9N>dHhtwaP)RhPYQ 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

      =xJOcNCK3Aci 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%0AI)stMh6#FxA= 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

      q~pYlvEKSGPXR;| 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

      9;pIK!>qftB%?&xQa5JGP%Ig`mQy)jVL)_ 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

    1. 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
      PG<#rVb``VgC!+TE&N`4@q&$tgC2 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

      V1v94<^4cvF>{?Om@|hn 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ⅅ9Q{H* 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�ObL^WGg&1)^B<{8v&|gvse{1)2N5>eT-0 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 o4r492bol#2Dk7@o8EB9TMfG# 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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

      99VKHK`w&U_uKpHb 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�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 z z5(86P*?Vu&wdXlCun;>ElEZbGNz7Lr zG56j2wWKXNNo_b7ZnY~{-6yG9M`ac=Kb&@CWU9glCLO@ykM zfl?-VA|u92uJ)%fkHw1bus*U==e`QvHJvm9L@-^BRGutkGO<66oSpz#50vpbv1$Jy zbXD(^FS)^u{iOtwP3nOtDn_8Nk0%d*gUGTgx$6SD9GPTEC3RNV3cxJ`wy#&EQ?G8X{B3a?!7OC=Sg92Y`s zi3;H{y0JZbcPIV#n?^i%rNB!BTHWi5igay7&Nk}0*~JccRb9^?REr(}bTYSF)j$bn z{fdv1QU~K*%!-7~dhfkup4M#rp@Hq0coo@4PPRmZ^Pgi~IM8_e{LLB{@w=ryBg61R zvXB+Ni^VE-`^=zJnV8P#c+$M|N%PE0u z%Vt8HM^DA``ONG(Xt6t2E~-m+37CKPx#X+3{*_J@74qPS4&f~w!Y=5~shJlx)9v@) zOLv5IXFe!{c}GEa6M7`JBI{lP^EmDgAeC&mzWfeGJCSkPp1fgwhEli*%Y;QL2QCEh zgR~X-?~jBc#=kocd?Qw|VCzrqAF(pP{5V>dD0VpLNbcsvjd4X-u1B=9vuUo-a4P6J zDBuvDIooh*# z-@?unnWS-MORV#CdWbaR#f{wN*5oe&NWffczKBdEM*3L)7$c<)j94sr&frGGqPM4U+k_=AAP;BYjOa}kT>ZFmQUN+lt zMzC`mJ2`HD4~y0$z03pHC# zxIy+^3^sIjR^S-kk~Kf*A$((^S2Ds^<9QujPpRR#llR4Uy|A4AY;ygh@I>e+t3sIx zt)R@28kdQN>wf3>?Z6zI6_dvqgUNmwYxYlSt0{mc>|(yHt>_IxDQ7(pHHh$DiNcD< z_V12jCzlO%)@%wlig$Yi=&g$PBy#~{E+^oThj}>M`zd%tb_c#C8snI^-%QC}B_Pm4 z(Mc=NVB`3K){UQd_B>5X9=<}s=MZ9fJmb)ntfe3%{}lRoRgZtb+sOhXb8n-$`wHfK zk}4$|Iv3pvT7%`}-J<;x=Bk^y`$;?XIo}$%Wii1+si+|A9%LWRHk<`~nH42=gH9L% zPeJ^h2t(pp$?0ixbV92aP{7%6pYpX1Omrb2B@Y`VFotMY;+Fz9Py+2Ek$BQ39i-XD zkY|{pXNG&UM*rDTS-y^L&~M0cLR;8fN_e2M9TnX5c6;@#v2N~;lam_;l0C(f(Z`3_k=vG zHY%EKmu1b0|I4a}jBENBCB@T0vuWeCAN96u)5w`9VYg#LrSMaE4PIQP=QeNTqI{rl zk-KdG;6+Ji_A>=WZwdhMQRaZdgZ1C45TF-WxSgUqa{fr&?wHR_MO$ZiF~AD)Vg;sM z7(m=HtBEuTqe^@8YpAUb;o_gX4&Hm~F~#5&IuYwHPcz^qU;%(0O%B{*^(T$+FAQxc zThe!|LcYG~)@)+VBGhV1>-nb$@`C``M6RXQ$?f8xvWK2GaR1rCR;cz&Qsf27p@ZsH zcrY5UTxU_Gt}jq#A9Tj30yy_$xhIFcqCxN}TM|<>Ovzgb^c}(C!HgXKwU4q z&)0PPHIzLuy1J@}y}PJ#B)jFMse_h7Iq_I!zWw^Ouf1qQX}0GvSx1RjNyignda3x@ z!DCPC&hf}|$?wI`p$GFOnXizWe{e9PaocLh*Zf)}2?9D|Ab+J~hYWt;lO5urL^vTs z;H(~M26eTUG5nK@rdcuJZn-PmNn#dx8F%mC+ z7RhqB0{xI|RNl-ag_CyZ`zl85ExL9_5Nw^ABk*I?#}alf?V7}hULPy#g*Cx za7JBp%76rO=X;VtoD|3Pl4dirf04Q)2Sw4Rv{i7*PqSsz?M%n0yhYSP%LCZ4ww z!r2(~5IS!YR+AmNqz(d6wJyRUe8H-5C7JRN!s0*pT~tEc z!4df~bgMCFw_lU!G*B6zuuXY*NnF!Y`xM5l_h4$n0vJ>xh^Rg`+p1q!eKL!#i#F%u zF|6%DuD0;yBYY*Pmij$;`9D7^)+%y0Lea-&e~4D|Ua z$yQ1mOfV(l%EC_gppZtu000022`~Tv3-Upl1~F^}TL4)%W*-_*!whm9Z3}|o?78;) za*N~1-De81tYQc=IZ{SYI$S=~hO|oDP)c$$iY|U_?7~ZNxu~cla!TdEs^KUwg|h-= zKFF>ujytGFEn*kcxw4mi)fJ5`$vHU>(0&h>t*L_NZ2d3{Gw@OdxGC%Ep}cYsLrV!s@;&fzjzzXgcn};qA>b~sh z*ih3lGiM;i153$TnoGe6vt3KKQ}vnxLHV9%xrUkKtU@xHoj?d*^kxe*ifCGeb}kI4 zDVZ-_6T|=)MWcc{ zYlTf^PSs*$!_)b&s!=K7tENF#^$M=(OrK4_43H5Ip^jw@hrIW-h-J>$_m zTWpo>y?XPRl?53>^LESF3z96hO-uo1A=lb}U;kbh(<^%>gSyT^gEA&QNyhXtlGhs+ zJpc0~>9-;Ut-nyMiN-AT!x>gjGP=pMCGYR~Fi=Ro|IW+6OO2_>`Lnz0c^xXGP~_=c znPPMIr2DyHo_P77D6HkavDFYv#QIUsSBlUALp>C@M_S0LPvBhTSnL2i(%iX~eP{^3 zzV#k{;okfP-mk;nHl=(A1yOEd%A^KliT7qsh}DxzUql!@&JwV-DL54F z;0d5?5EtCdzJ7F8rpCk9XuYcn7AXzSCgSRO>>nkGWMiL}yEUh$EP;vtvEg$#{b)BV zK2@?XMj{f-kgR{sSf8Fd53(3W!0b73NWC#Cdf*&M7{cf9>Rx`NrP+-Ia1c`H*<&xY zj3{HLVJnjtF(Yom_)lHn7D0F`z^S=9H}p!qo3$zi%RAFrB63qrI;m{8XA-_;bEc}) z16R%yh!-}CFCs|~mvT;pXsl6*57{}s=Gn)b-&@wrj$dtHN{bG9Eu?cjPt!WO3iLlJ^bU=#r%G2CAI?_iO#qu!S`c*i0mnp_4G;{B?A7~)XCjJ>chPggG-rjckGwDe;MB>C1v~>SqE>RskbYRp)yslji9G8PE zVW}v)hDWonhCll1!g3(me9lCywpBW8U!Hod*3i06jJ*?Y`k9Wg(~NNo*4C>?4rQ_ge9`t44*))8YyQ7^Bc|Ks#zGPX7EfD&sdKaWlD{+;L>(ZHJFKQFA7#Is$N8f@B|e`eB7lfKs|;>^pAthd%H3FpeHK} zKoa?H#ebGWC0t%ZICrPJ5g*CoD5E5i^8Jx?zB96>DM@%ll{3NmBoE%?gAHW{lhyYd3Dn0V{u@5K_C-0_3%DQ;`#ei_Lz)4W zt@39z9y7-!g}bED-MvidyJw7eBc`k4P>}$DvV16#)8KR6LnCWqf zfR@0P2oHodLX9#JjVfRsWTd=xC`*9(oHh?#su*zLlJpa#Pc_QN(HTT2$d`Gr7fBOR z3UA4?&WjX|)-BZ*CINY{rL>4dCpmYP3JB&shATU9eR|k^RtPxStJ0f!cTnch`DLfF zn2i|1Ben}?gkQg84>hB%_%=aeBcxOf3Qm3;DywK)=7*RM!OO`DkaG%3t#FD<6g3@q z%u0df2AvOKs2ZC6e|DEz18o7egR!7fm?$saRsZe?c# z9du8k(|G%%eWm%Sa4`iBGLs*mF>JX<{@(C>m2rJxS$j%xN0r$SxSiN7g79jsg(>7f zc5?zLq#t~{vpF8y^m=K~Cx!ZDy&kE}{V}dm$50r(^4WwYo>+4hh;+9uwWaZ$a46NI z#oU+1gUoKiYcWJ21iuvZzVAS@iP>regP1hOn;lYb&!z34*Ng4mq93d>ygg20p$W1O zcL~=LyBOBONwsI&HSc4nF3Kq<^}kehv*H#rWt~`HxL_Q7T^{_s5Q0f^6S!B_wt`dy zN?M_L_N=Ur6_Mrdl_#*8U!)l)r)0AWG8@sg>q-ERI7+Tq8a>~{eBsI?LQs5iOkvNh~`NrcEQG>RyI(3!Cw`Z0zawcq%<&vwdMPVYG`ip zv{Np}mFmspHZ{$r0oVw|#MD3?4HBG@hwItWuN}@`e598x3DrD};)GMXy5T z)2TJBW_W}rjS5U#Xe8pcichC;1&xst5-zSP12oKofVH!)6ar(!fBb*<-#lE|v=3Mo z7T1Vmz%g8QR<)2%lXT`~yt`7^cipOdW!Yepw~tt<%DM6M>Kk;e z_qhJDneA;29+Z_Av3rU^$Z3^3#ISM#&r{o1HX{jCXm1!@wCHc6D2V3F6eVafze|*k z^1>#ExrR!Ow_aSf8O$(-xtf;(e^*f;LM4A%NU}_jM5mK{o^clus-A(uL<0~W`Q8$< ztH>$nPMASvL*nO!gH2cH000022~Yq40{;P?2qm%;TL2tx*di=97HS281fK6ytC$|u z1077{ef}sMG{1;zEw;WW`y6n;k;o(VAZ&juAj{wZMDBx)RL+FiZytO!_yIEF6fc(np{Qo~Z3 zp;IHQ3y~z?o)F}mdKBa`xuph`JHl?xRVilVMX-1OWpHavB9C)=o#|^SkRX`&TQbN@ z8(gpCH|yg_S1rv8q*YR!*Xi<64!aKPXo1JWd-6GkQtI2)>0-i&khCBe5=(3(0kT;v zKnLl`%vfuIg#e&v+0X-lWC`j95gaJTe`T;bDh!W7QyQ@9^l7_@W2vbCX&v*U7LA*`bhBw?B!ES`l&7smFm2>b84!4b!`*-3v(Besi(dhp{5g_ zC+EDC0#i)$BFvy#*@qlt!62v8b<<~JN24lF6&=ebl0jKU9`FStZXkgVk3_vwcxA!b zg}Y+gwr$%sJGSjk$F^LmtZ_cF0J-*PljhH#wmRo^CzMM+!w69H0CUWbg+8 z9%@6d#x}UaWh9==@BC1Gr(iPmDtg{Oxf(3Xug>2-sf8j~m7JD6^bKdy3|WQATs=W% zLrhoP#IQBxzN^V^msJDOB)wG42Lg`AswU>y0=(`nX4d#Y^CGCmO{w0sJPv66Qs%&l z=Um=CE8O#X2&QnA(Nw+={gLacF$@r2$0F@>!4iD$D+>XsI=J1Ih8Urq`NQUMv@ttS zv7?d>C`e2j?}Gnl1dzNRBT)Uv2snyMGW@k3xw{~d2;Wo5(nTHEdIqcw;M9+m;~^az zluZoPJg9QodwCBoV(bV9)d1p8o(SW)(Pq-0=x)a3$>!-8qR?v{+y0(2;+gBMM z9h~!8Dp}1Zh5_F?$SpsJeT0~^ZY$(%#b@6Ps^c$O>bp7smjAFhx(O$}YEk5$Hjv^% z3LiuJo)Tc^nI^Q50%W!?wY6@s@*{z1AZuqgC9-FxxYV@e;d1{@7rMoV{9sJZhpEY8Da z%{SKfL48DCqRLFw0sFg!mdY6B>ge8r_3nu>1XA~bcjw&^t@@&cbkgo;uX&hLg{&xZ zF5Stp^~_^W=w9g4N5Zn&bw1q@cac!xvDETteb z^3!aXF3QWWu_J^MQ#13<6j5T>+Ae2$Q&VzsW#%O6*yp2dsD1n zYz1U9Xr)>vth~64KPfCu781XQtniF*VnaXI;w`4Bsb-rTjT=oK5>YpY@ReM2K~9J$ z!t5w1gbjxRE`nU3$Zhqk1tfP~Ok_V-g*wm!^rSj&?Wi!o_}Vh}-+|=A9fA{0(EYl6 zaX^-jfoiEfvCM3DTcFA>G+plzEA%hw$1+V8@4}Qp6a2?ig0t&pE9NFCCZE*ucoVB9 zxma5cJNT^IJl-}1?#(zD8Jq83b(&X7#Ms@fXg(Lfmf^%Mt1#ZPo1v_YAeXAs^-bR{_gLiP zoVDtM{wMJ?AJWa2ffYJ%n>C`h`j91i2|9F8X+lTb+#&U~7@dvvDb(T@aDt_2qiUgWp%xG+f|P_tLZ*W7*)U7S{?-hHX70@D+)*(e)zX-f=@|=Wa(bHtcx0gw zkqwFK|2Y-d=*Ova|8Xi2opGMp;f|a$OT+043)Ipn!Q8JGjtiB-JBU|tDX3J)9YcwHr8hw>@^<+f4U6N z>2Ie!LKv=`5B9!(vOR8h%oaD4$?(#oUVD-R7=*P zRv9h6#-U98Suz|$BZ(*Le6DUPJrh)_w>|RT;OeUhXOZw;IU9vk#i-opXpMr{;Kl-r zGlEz4yHV=$^ySfkLr;F4N3&j|Hq>R54j^c_QdYlaa8I4Gh>D)@1p(egp&SD(XYV&q z!yd-VtP-YQOOc&H(F|>qSoQ1=~8VjId5FZ#*L(aCqA;mQXY+#-$kNHo-DgiIAW|3qiGUg?}g;{~yEbTH>u`-PC$|aJ=F9+>5 zc-o$7tOWSPM8zFa+VtPkxrBp{RQ~-{*9rsD`dmR-S0be#R$t;Bjo48KsX{THMVf37 zWLcit_8YOK#qf%)J(~*^2T9gdX5~PxteK6`T^-y6FN1^mSIkL_=}c+naNmDdg`cBQ zpk<*9NI?VWR)Ff21E!<=R6L~I9f5{tYq+$@UXsGowl{}9W`a&FyHGys@@Z;vyGFt7 zD_fGpGT^CmF4`S|P_0$hUqca#zXdf>j5WoVy;5oI!s9K+ei*-8V+NQ3SuDE-3sBZ~ z?a@4eFRWE@l(}!zde}V>g95Q|5D58QsTI)JoWcBp&xuxwF zTn79vOsVOYAV1YKD6bKLXHzCh0?+M4%;oRVHyXyI6EQ2bw}Z9(598C)NVhHI$~<&a zr=7B(vOg2&3g2o)9V~rJ8GQ`$P1@?POfr4ahPT=+;)1WpMDY|m6I|wAXXYj>u0Z4aY<%pa4{(2*`JPAku`z^MhzH2+kFQ-*)MLGeVs)Kp$wbcs%iGOq zKUMKN$Yf4zCu~vzk8tN1F~9|zk6Ch81Xlu1s<{3pbG{K=zn{sAL|<-Jg;H3H#>Ca8 z7W9IjkD!1Rz4-N-emn!ApS?gwl1URA=eL?I=VGkAlL*?>#;=T5n-3I-$FDC-Xav zx;f*1#KOd7s9#a)SlVJ%Zu_)xlM`B4Tj;@|XuQ1i1Pwkif^-NmhHSrdEeI-pQP4zK zsz9j{VZ3ie#9P=r+Y@Mh)+YFVF6K;{X=zn>`34&BBNW)Oa2|iFF#`FiqD*4=rOr>6 zEGqq#AI%+g#rn%}gv4)yB28BD`AqCUGa~r+>`U%7VoO-Ht~%;Nq(JHO`1IRe4iG-umVhRc%6}*-iR*g+1nNTjkpD2`6ShuX(*EYDLLFl4)=H= zno^}WnH|Z`JU(K@mzTiA=FwvfiSxn&eEyTY?g<+ZLmDywfIz1z5yEIWk&PzyUDdpy zbx}FBVC#tULe&1SB8wyQ=~!e;{6FaBU?22o_4B4b*oJ6i#CPNen4733is8dJ4k=G( zd0TKmny;K*nYNkj-Y2r(+MoVG1G_xJ*mG~zY$WpUrfSGep3#j}n=%+ZHq_p?lKi`o zkc%!91p}U+Ld$IajIQs~RNt-AuT~FwJ5LE{xgokdz%{O&p=>`OI#b~T{wFfa3XDGc zN}0m521sdXc`Jv&o-(^#G008b&g5S^XmJ_Qdc-IE&*VG$F$0H!X1z9 zI63#bAd(BDeHEA84vv783^ct0K1?2U(%t8j#yc+*m+Nn0 z2cwCv+g=h#sNQS5(rDT1PP4l}n0(903{dlG%n$2<-9vX{c|QagHMseBAVZ=s17vi> z65yJ%hLjE>r+h-7aZ~p=C`tnqHEnPRxs^o7-9B@tR^Mzs5D@)J1 znpd3M7G!DNfWJZFt0 zqa;TMZsEH2HiI?iqseSafrTa|aQeYV(!TR;rzoVzz2)-lbZv5bsS`uJI>l z#vN#X00}qwrLK?XV^DI_{u+yeZ?)nN-kjdpgh4(sE?7Cy%eLz)Mk2*ZEu6=xCX0&J zyMsTw&8NG?oc>^KQbR3+8qWZLDS>QsNgqEcm{{jZ1e5 z7u@rr@4z&JU^>V{4c-Zch!?({BfY_wJ!3UC3YKCcpMk>w{DuS zMDN@f-m;RHpmM)++qQhzWBip|L1SB>46UfSKr!3FRZ*oOgd_{Xfm|yb952a~w$gS> zyL|RbdL^J)wOlp!9Tg;n0s(@V(eYIqOBnDlrGMd@Dx*CAVb;SoRof2)CEQA z#VhK)>gz_TwSi0?Zn=kEEvcp&^jl@nufO0(S}x3@qk4W!k}ke#O&S z6HnZ_o2iVF1&c^5#bJAN5rf5pn5cnh4}Jq)$dnxxLY5|`$g;2Z?V#(K|&Sbf@MA<%+{Hf(@{(3bJEn}>>c5U9ZFt4;GQ$RFb|@IZ2vR+ zwlmV^h5ZEcvHOsy2*EYm625={NXT_L_}QWxvlL>y38VbvO;Qk5Q`*1t`nH2mSVp*I z1Tq;dGe|TXFVvWvwCaP23uIPqdqVva+a_x*>1MwH$BI!Si%CRi zHzjd`)cK^+rObWR20=j5g5$99xQhN#3&@yy)^H1@^)_Cn!okz_s>c?j{d?p=pAnxT zngD%%oi`~ialgFF@oh{=&#@a4DUz*WI0T1wY5*$Z9*p))!@MF;71&Vf9V8$%0ogIx zar6A6GSHs}WCbZg<-is*-*Zj^rSYi`_g3~iKK1UIPI?MSqrqV#q0Ufw+tmortj#SG zfcpL)?@qu61Tc#d(wa6Dv|&{@RhB4UEVV1&0Ug}~CuO}J1t4Qyxkr4FHM7zM%L!L}HLe_aSq)_0r8h3}(Up~K<)jQ_MOdQ0eH432B*dLsew^v7(NUYyJ z#&iCLDJfIN^<=I(*X&{T07X!G!D`)%YPwiK&t+nOGKNJcF@ZD#$EP|PPyP!2wOTBm z4AHV*4p2G6lc!HHa=R`N!2!0qxF8iHCEFY@Dqsc^%m7!3G(#;nNtDK6waJ;D&v*WX z_uj$OB?5b(xV%(pcheVKm&}tz1%s__LrXfsk%BX z0KiwEQFTA!4LbBph3B>mibJoa%fTaHk#PhV_TbyoylT0*JZi@TQd&i(|Hs=M;h@HX znifigP^letWn$&((go(i$IJ@26~szHjUx(3B+<_KUO6+Z6PcCNN{v!M9St5WIKMTm zF_6{w^0s{;JO0Hk|90C#BQezmmx%8+m%O7@7F1V_iHA+DSB&S{_03m(T*Jp~NfPjpq9f+?dA zk;BVu#OCVG0kb6n6`+_vpk?;!89v64^t0JkE_=h*t3!>)x%jA$YKXFLJo~Zq>!;}k z{;q?uBP(A6-Fl{3l6=agh1n&%3-CfTO2sqxrZwr63RJ?BzEr*TU1&!0DB=%Ci#3zpykTIc1JB z7fQ)YqdsHHl$)g7l}L(-?tCH`T|!cn@j(g+dmxbKh_xlY+UnmQI@Wz)IPr}DL0qp& zfs71n!k;X2FZcGjc7q3kyl|;vu_4mrNhK6Vz~B4waWXwrAX2nyNR~p>f#yXag?-*3 ze#4xUfa|LDr8+|6-`M6PpxUxUYInuWYsb;d220eYk?Ke&1n+Kp>w$8^tq$&O_F@E) zTbfAhzYOgoR_jNXjf$4)>xzJ}#-QZ*V9;X#Rcs^ceo%X`u$)xrVpZ+(2|#?W`z*rN zxG3ssEoiOmO1l3vp->$Us)V3j`!8Q0#XHt{3Z>QCmH)eRe-@-n3qxrUf+4AQGy(kT z`WfP5apTtHr+yLu!U`qgfCdHl$0zKH2rxv5u7jHIiZ?Jj)F6+-sWtqU-$M_-9VHd$ zb^Nd5rSwuFAPU}bbgi-A0h(hK!N2sVN1P$)7W}z1g&h3-go5$RF#LrUrN@nDVBX45;ygv?pRc zSg6ZGcF3DTTlLWi_mwey;92BAlkUvY?1z=JK3pspB-wTPwyo>2XP0{Gn6Z-gzIOX9 z?tz!jy#vT`3JS_2Rs^L*x8M%+odA*1yw!}L?N$O-M^H{Z3K1%$o(hlgw@>3t28>S$ z(lao42m-)V-yh1rXu?QxypVtZAS_5FDwMAH0ts9Q|AEoAL=F1a#}k6)MI%y^NhcE` zn>ziL3|h5FAzu-11r|&CN6wi`P?Ptf)e_3s<$@fz%p437b~aHdncKuf1axlnX3)Kpii{`hO!9e~zpixBI7zSLLnkxsUqX+0$F3fIKo?KT6YqU4WM^2h|9 zM7pL#)mpsc+rB>XiR|8+_JRM34$>xc)&<;A^zbbkAKH+!&2t{dBj&v8KBM)>dLMcs zRi@$Uel=*iSIC=bx@K?RDL_CVl5GJ`@R{iX#9u0F{#W(mjp?7xV2>>Wo-Up=l!^;Z zYE25QQZf0ncMVcXkRn`@YD=CsBc`;D1y9@MqI{hp>dxMm;2F*2i( zvw)f;_gYIMdKHdu;}asDoO2k{lP8QUU_Cenp5Z?$bw|RaP+T7&jE12dl_>SpGA+GI z7eK;<4SBC_d}wJ8^ITND?aCJSLm5WTRS7662pZI~Eo;qWe=s?DH`|gXq<;kmqv>@r zn-rn_XkfGNS=pSF;Kt$1ls{#-fG~Yn14pw~ksR(U)9mR)pzYj6)@yKd{zLco*NhhR zAI<9%);gi?#yDVhw{U%a};h}p=HFw-|JZwCWO+PIb|?XAN|!S2J4L}Cwf z5OhwCS2Ri~=!wlDRB}y&LsHCzY7T0`P8sorrZPtuj7gAl)n4`~-8s0T0fXy)8huiH^N3x-M2qz~Iw!-&cL;$eQrg%V} z0j(-w8YmN^TEb+B1pvm?q!2Z#Bf&x{!Ji7*qF`^%Q0LE%j-o6Sp&N1uvIvQ@`#)Lp zuo4C6+9H#B*@cgK31i_?t>{J8h{I?uxB4(4A#9iMgW~Lf!|n8|>6Db`i6mRt1qkAe zO8Hp`tQy8DlXPz#!u>Rt7#BoZX-@+EqW1m*LCCmtu`2&YI-#IOT|(3$XLY|3HRB^O zbP^Q{dgVFqZ}szi-WUG0eUTz1V>aEHDhPiW)3-r#q4xX=-PLoh+P|E(r$fdrCxeO8 zjigUgzcN8GofQgvrc=j7Z8!L>3?pKed*p{7M&1ns0m@K9w2ZKbz@uUS;gQ!!UDafh zlxlhwQiMsuPr(`DtGn#>on$p{LUA`(DE%r@$$VX&KhD+(wlf<^zco8|HRWsL6E2gUAIz9vn<%gp&H_*U_2w>NQ2YkPfvQZ&b_)=Sai476{1d z1vi*Ue?MwPmKQ~nra&&EgBsW&KQ@LUais_@aGO$RuU-ZYX4Y8Q=DW~%g68x=P2m~COUy{9M#;F6fG-SCB45$!|B8E4( zN(lk2unAiqx5@N?;@G3yPocu}X>P}m2xiD8LQg{)Qz{<-?xS=?2TK8r-whp)rCzVI z-T5zYWX;vN40YAcum(}oB-niXI}C*!hn|xKK{Yp{mhFiw)%)2Zp|!wIi9iktg3+V1 zh)M&nTRK<*8#z;y)uv(ae#4so!ZE(MN)(FadvKvJ6Q4{CR5DmP? zkQ_Y~0zAd*swB$!jKGngCvCTC9CJ=j>}a^nL-J%5_Xw6!(nwA~jPK|llp=|n6y{W( z&z)`?O@Q+u>x;Fr`lyE_)UqJ29tcv4pZ2hy!fKXJl`h@~^s52PLVyxDvht9>1u-)2 zF>EvNY{h%m--)^DlCyXKAYnyW4HbciTJ@;~c1i>aw55+exqyLKZO*@5AQ1Yq*i1li zw^?mAc!qh?jENW&iIAg&b5BL&-E;2ZWr2O*=EglW_&DPyljf^On{X@R%`#VNliaPO z<3X{&ucK={()F&}*o!W28)<^KilhSgse+MmF=QU=@)fa_t5yHp`WvJOYKRW%yL>th zcDKOQN;f6OhPn@|buapTUCH&7B&Q{oXq-n3w*s%;?V{JZOz!!;VI5KpQU-ERdB_;Nt#4?g^;1uKuUTui{@u(HYx9bk2!0;m=~SC4)- z`cIoGv5iqVB3xctFj)~Vk*v)JoF4!HDz9oqKdmm=w-F{5!N{Qk1S}HrB0Uca<|wmX zH@A=tToUqdo%oXr->XISLQ^qPKwU91mLURJ8c_5MHj?pflByIlRPna~SRUK+jXrw^TZF(jk; z%P_w>2|8?-APdz|Y;dvrw{CzX#ZV>c5stDtpWp6M=*kdu{wz3V0?DFJP&!qLWhAAa z)J#|Q%>^F$kkM$pMjiDMN@X^4cNkvFbdG>wJSC;Ys^>Wz&#R6=CoF;tjQi2U^d8xO zmEZtsDh9f3?Ik+|Ds4h8-oF)&u%c>&bKM*PE(@7Csfi>Gl(ke4#U9@Sz&e8^)V(+S zkX-3525cRe4`M8ehRdMy#p;hbC7V}LzR9-*m) zb_vTHr*dkAM}JdPM6}foWc@zJ^Kup|DHX!*i@B~zu0za6Zf-3?gZIIPPXJ?#9L-BL z-^uO+W$J;d=#fHx&oQDtFG}H4@t(|^+?lk}o8YVM3K?QctD@baD{?wsOy{^YdM~2c zq2#VE?Nb8FRSa|~X>$22c$*N4Ixk8ox7^{J$O{cECSgb-K^cV_>pTwlQ5%C5_}d(K zhX7}VaK7#4<8qDd3wbi2%`X1Inr>Llv0^2poP_|Wou((w&4vN}x}r9nU)}YIfXm`U zBVx@LIf+L8A5ZjfhPg1bJQBDG1+U9?pp}pr-c!E$b-Rs$Ghb2k>c~z3CRL^^tKRk? z4)7P%s|}N=mE@>6E?3-%)W^!st?F|PelPwz<{$JYpJ>Q8likZ2Yy6X~F+tKaU{uA0 zG*eY9*i_omC z|Nj>h2}lIWfoA(pY4nGz2SKltWb$VxMK~~TAkGHLc(#&Hvfp;;6}&96#S`}J8~_50K4g$E!zoaVB_crW-{paXrVEAC`V3oG=a zL(D_In8<&fGWm>V7gsgvGKc#ek^Fo)kLUt(bYG|ra7)w^0XkFS*P{LNnR2rd{GT|o zA8}m&C(bs*4*<$WrizGt!Ukf$@P`%J6GoI>C*uDfuKF{a?|;K%{Qv++J%6>%z%I0DQ5)q& zl?`*}kRSgm=0AnKS)mMQ#s3!eZd|di80a?y!!Y5;_Ph2<+h*wJc;~l~SMU5=YyOZa zaADDq{8KbLUS37#IW25rMjo|I{QFSk2ZOu`=kmp=pR*cjb~AO?KN)xbmHPd zQp4?24<$V;su&YH4AH7ViGnm+`j$!ut8sflCZOwjU(E$|heKlH=(~*2Kd&(;4%i(_ z6|HQ{pmt727zm?o)yQ@8L9S#VoQGlnws+2&8o2QU9_A7ZI5vjvp^LDEWO6QCN#yJR z`U-`Oak5Aqz7bow(#smJ`7r-g0~a@3>?QB}%41+>_6(0_KH&Hzg*_K*K(9P0~zvT6xXjIKd;yB|Qa{YtVY+K1bx5%Nydv+()oD8Xscr_%)nuQ;y z0%BDfX01clXmjsGva)4j13UP=5Fb<~yp#V{I*=I8*j4e_ysYX|j5uz9>=Ex9c;^uG zb60y-uKUY6OaY3?BNTbbIb~0G9>_|V>ig{Y|I_hfMOdl-UkBtrqm=!!KO#J0xDy&& z(wt4|^av$TsKHk2WoDoeIK5f8 zz8mwHNz*|6cdNXbQf0K$I)yOel7SOg3RCAEl=goJB)@m{a&$zg74Qy*oQv@L7NlB| zgmu<$kUoxA!N)z5&?4LZCr;}}oZSD3bM62wyl$0|UBW|`jnKX*kytes)b5SL)|Lrz z<46eagtRnAfWUwq&)!$#sR(^J6}mfwjBoN(?1OPleG&}{>q~#)r1I08aW*PlD*r!& z0aArBU^V}1u$7qoh6_aBEMvXnD`5cgNIDyQ6wP~`NyXSh#>r_$h*4?=Z7?CoJ76%4fYkQ!ekN^|veO% z1PM}<{SC|~X^Sv1v3|a`Am;!;r{525003rj4#h?Y00=gjhWQBsZ+<~iq#GKkS>&=( zX?cjT*fqmrAFaLvC%9Xpdh>?zwu|0#bpp#|&)LEelLI|K<74#+!$GUWxt3Wr8 z5RNo~kt7F4Gw|X$g%tUFS>RB22^}k^m@GY;dNkQfsk)pbo1cvdP9~+YQB#IQA{F?X z`#CW{I-SUPMIHJbt}u2%gCFDjMd`2cNvnb}#~mkI^R1WScJpN4zgzW8nkZK;rT|`g zP;;)%A0&l|RsuhN%3_y8(>`waCLf?u41+@tmZFU+emoMCNkQ22w^%PZa?#4bY_uxB zAGD^@6(^X@e zj`9_WjAqvvXm8Cktq`XSXV!ZaH^S1vc_on-bxgekJmGNAAW0 z1$SZHS5ghAsrSXvqlnM6l3Mu%EF18=ezMv7Sr_687jPaTp+%(n?QWpM$KmwW7NNl`=poYc6Goq3GEmq_{&dAp4m?ROC-A2NGsx3PFNoAOwpZMJ?JXsC8QSKwe+`7tj#&hi5(q57+FGTCg`tMt1?Hmk8;yNhi@gvR%6 z1H_UiZ0)fnZK8|qpR_tePmf-)dJI#216TQV!0R|sI4@|#s?>&mkZD-3Pm??aD`9#w zNZzG2-kta(G2mncE|V>VUz4*TuKf7mq_=>?FWkd3uqUNiSK|>J?K5lX$e7-38#$3J zr5Xz^%{2B|9VqY!U!~b|Sn_zY`_M@f6mrW+~#{1e1J0>s?oCo?_`d*YW^lzl` zQc4W_?%FK}N|kwOQr_ir9#yZCR8@!kpx76UB&zQe?!qX@EvTHbC-cyr8{cBbZU9fFTv0-Sybc6!ey~h|+SvOB!92dK6A)N?xWgLMxhh z!|ykCv5e1i9C=VAB7@tAx%QU(#B+cHj)j#0JlP(+z;IMu>3>a>RR)wBx9YXEfBq8w z$

      sXv{MWh;A9t~nxC#VVUd%{w>}EY>Yc?RC%iMu!(|-(brBv}x!Z#aku*W7J|w zIl7}L?#O+-c+|KjudjemDMPnpnbej!g>agRjTKQgY6_aW4jL&3D%ZIoO!VFiPZprV z4m-9Q;l;aGVeW^Lv-604-*@pY%>!lr>Z-*r=GQjfu_zEP@laaOe@8|y$#swY1a*#m zne>mE)y+(jMUB+jnz$$iwF^r1`!7iPMKaA@v}CFl&huF9?9X4(avGn!Kcl8?d0;@F zyM1Ij;?O5;FLT#0MUo>fbl7i^Wq}(TLX71*Qwc6}sMbOJZ^z0BiIfPxVh$k3{MU** z_LbXSGDcke0DGxR7o*H_nBDG@EZFbm^^K^Y=S#*0tEVBC5gk)N&PTa3R$E{0^KBko zFJuc7DUO(XH_j2uXf>VJ0X7zse~jo(-q7{#XjRTgmnV5PKx!^nt}Juv&mc*itfD_2 zt2ynPB$b-iDsdMoQaamALQ*Ju@Y19W12Xkh?iM_M2}^NW&qQ{Ht{?V8(1@}eh=fon55D?P!HQ7S1*qPs^#cTPu!*qN^)dtX8FX5&*uUmoL$fXg-mscA%4Y9b6#-x} zmK1=gVtNqo6=D~Mir@}*4-dUr>`Z?IeYr=z3pL6o>xsN3Y(<*x)eoGF z^`KrLTt_FTvpZ4N3ZQlAW_8B3f|9SFK&EsM%_D#~F4=Yc*!P7G$z)Xf+tF@EVqbZ1 zlK|Qqv$pn6k^p_-5991tC$LJ#hg5-VWD^cjC^Qz7-UH&xIG8IcF2SvB*BuoTuE9GHHCEc52G=indGCu%NCt1R>D%(<6RtWu>g^I9d{YFEB zI*cGJ+kSe@lUtE(jsXqYFZb#$Dk4LhF2a5Ot_JnN`=oyBdWgstV$|Pujoq-*6-DOL zb)Syyffstgsr$5Nw5NJ&E(LJQ#*0NpQnVcfk}_(;vf`xq$>b`V5bP~1UgX|)<-!>$ zv3xdKmqJCTYRIYfZW>4mp!si1@2<_7P^7uu1ejFed{sxgeaw8M=1#t=S)2K((oJt` zL8EzEAK)FhWPCJ*!~`m*Z7gHie%bI+cbVK0Eh4?C-%WSLB2VC+?Ov!EltB52f<`M! zr8k2gKDf(gcZU;|?jK6^5tNEC&Kzj`XMo3SaneLgE1xJ3sls4CH zl&66^ufM~xHyILpUeY(Yc!NODZ;?;K2t0{Qw*AVb5>J9!eg(%Ve> z8cSp(fGlyx4%bJYvphULI9ym|eTBQO)nVUqdn^N*-c~@w9OAAdv95|tn!>Tr$6U98 zeoc)N(JpOUb*k*=I)8t7CUMnsE(a(GPW+?SVL3B^w&5=~D*YYgikD852k;3p0`ljS zvap3jrB5Z(4eTQ~nwsKIH4ipgY;498?C+O3m~UO3a!<2QP^13S3rsyBHa?Aoiwp0! zQJHj#mE7-NQ3;{po_7B>sQ%K%Yc7*6k|VgiSor}Rsj+EP$zmr?t^lTO0~+qi!UdIm zyvG&f?G6%~344`&r9pi`7%lhE4MPxxS(RlY96GHmg$P4U!snk{F&Bw!sRVyG?6iF5 zA#Xk{shLkfmrAlNBEbRC6kU-9fzq8E3+I_@h;B`m^dvJpeF;?d3G zmz9YN;Ibev({>|_pz^U;CM6=Z*gOQ?mf-HUIZ9iVz7gB+DUuHq4Qq?H(Do9jt%lqF z`-`QQ>H7M%Kpf2&xC5h(ll@(QclAn3tlkKbjeAjM!w^9Ph0Wz^a+u$fhoMvf`-yG+ zRz4O#AgI9fxViOPnDC0;&ws;yc_NhRuTSn+Sdx0smlK(ZeOJmeXf`}kx1?nzy>+lm zqJ{mO`>XfU`ZywBJvTZJ@lEBEAo-3%q?K0Qn?`Q!rnfTd?VmJ#I=KYN`l7?V0A(Ep zZYT4nS22aZrHrqR8~yRr?vx)cv16$?*JbsMsFk#Zpp^~1z=tyYN#vNUx?%Sn=OL=& z6}ZO_@)$k$CbLP`RtH5F;rTXV3x#*NwuIs%B*`*HN{4GV0nl|%0@?@m4@xE1$gEiw z#TH?SpcJhPw>|&U&;m)$?2A_XXgiYj=Pa8H!$UA*$NQwz74NS;#THA!tePQ~h#ccM6kXdxpS`ixP)?ZQ8Q z!6yeot?8df4t*~FOs?Y7Wo@A_IDYdOSo`V-LVA<~WXnT6CFK1VP76N-FX&~c8nX7* z$Zrt^uH|=e9%&$#s43C2P2@sU;I?SIf$w;ML@cRS>Xk^{gWN`-M%i7&@K0^k2G^g% zQxH@fI$e4i64ZYzMTmy{6EEVp8{rtY{B{4d@R(x@`7FT=qKt2j^ABILJFH~Y4USU?G%n2D%GOn> z7P#eWHOo9A5@r^j!ar6`32hEKmVYafk6mleOn**sXhckYf4ZCKE*6-JV30bvE|HFsRrv=}?V)FtP7lrT1H}hTJ)FE9{o#by`A6>jo|zc4#FP{nQnk%Q zk&OvHQRwimJ)zbbPIC?!z^Dtd(R{_YcCl0WO9Q4?7k%L`2Jkes&Z91@eJe&LK_FXs zl#M8<59f35jbOh!AhR7;ZD?fXy4K|0{l!S0WT-gIr-$rwiQzzyJ7Q9-$Ys%ZOiCWF z^rKVmCu<>?cy38GphTYqF1<)Hd*a~Tn1`fT1Qedzv9XBntY4Kj*Bg2MksKCs_WU=E z!{{U4%xoUG8Fgpd$*$3Cp}`D`tvd7`LT^{@bl0J4_=`gWcLCVvITV5}#XstNIz_TN z^>=G#>j_D+Ro&U8(3hd>d|Syt^a$_VdqAo)P~8Z2gVFQ~|0>BFVe5qdusx%G)UL~>Z{+$hMvrWoJ`BnzVc`9oty<{ zn6vwIlm+=Q!>9(_sR8@Uy#iQBW~3(i?T%oyc>c9oP7hWdAYHDiUGL}QDt9aDbmGFJ zc63allGj&t_y!i)#WU+!NPnw+thsAE)^)ByF4B<|&RAx@i<(Y!AE?$sK;)N|#DSp$ zmiz3d5`be2l$snR$cXD0dFOKcHqZKUZ0*3w5-3;Jqj68tElMj^V4@#ib%!0n^>1r5 z;+(f8{C1UDuBXem&rFAeLk%R|q$ZsPzeUj_`Dp&106J-W+#Uvv+hw&Kvpb4B)aNT{ z7u%KgmCs@;95mzdeXAj}#$GGoL5i#W-9fRXsZR%P^BFPnN!|sDDR-ih1ZRjvG!QR3 z(RTd=@o7zWqe)aIwM#vjSG>`A%-AepPAs`0Pig|q+o!+<90!AR47I;_^>R*#v;?-B zsNSvosd?U@e$O$qA%E*NZ2uw$BBD{_jKT|_mnqkOFkHCsZ@T5}91b z)%aW{$V(f+n+>b3E8d9t_&bFEt)tM)HHne=u_LsTBVh}Q=6zO^?QlYsc*;ldeHL$E`PI#gRfX;YFz)DG82 z%b)zW4Fd4Qxf~HU1q)X8Pvp_=467JHnwFgJZ(i+dOnajZyjg3;u0WEVy8|g*@hp!G zn03|yeW7lZz=PO0yD^( z6Li8cO|CT1Eyi{t7z2_r?qlI*cRG0qcnN^TklhNy0h-AM(_+~#)J7dkOo4}znF;PG2biI35CoWt@gcliZ$yrU?H+WZIRTj-P$ z;*PfHU|j#Mo!xk?ot9)%8bdlx2ZTgQTd1QBrI_}iH+zkMqT8$MLT{>|b7{Nc9)t}s z*58sSzL~S-p7?*drXTKkv$nKLy|@REI7J8#{T|)bWsdGW@yAX?U%xbMVBzYuT{49; zqVm*uz0a?owBK(xQhbc7u-#kK}`g%}9li4n9dg5*ZAzAzr!s>jjMQ1-Ks_cz8 z@EAJ5sPnLF^hm6+Z*!W&-=}y(=U`#t3GOK0x8X%7iygwvzTXb!(CYZeI5J|H9p61s zRSpfQA$+FVNS0?BE`_>EXc+B1+>%NZ0hIvX4m}t2UJ5K}`tM*H$Oq~#x9|Qd_D6kN zDGFeuG3?~~RyAR89+@o_ok6_Mj1PZLx@!B^nJT|k?iak495afeY* znb;+(4+v_(F^O-gJ>bF3-Qev&qGJhF&(@xz%@V?UcXea)FXJB|=f*U#VD0QzniqMB zIwWoYYJ%a&o@yVa-0hs?K!3@gds(~75u1}8{6L-vZ`(q%xsl0K_4mxv0{KC`AxE5; z0tjaJdEp=MT|O4dYi0roIh)EUw9r;01^T-D9isGfwA()4A-*E**nfMwO_lRwzVTr9 z*=M}6vikCkgcXyw6tdSy4DSocd6rs={4fU8pMLjSekFtBQlp+XVd1Rvsp9`~&Gf^e zscqe?j#~;ej(B%&RTjDh4uySUhbjhk;ira-aLMt(3r$-m^A*(28XJwQ>G5g} z47j~8K&4;Oqi^4coI_(tr6u_7_=E*3+}hj?3zl-63;mE`d^Bjgt&K?hh*l5CFez5E z8PX!CD8SvY*`c!@k}AB^l=fF&OvLmu1FGqmZ8hQen^V-hiC@k~r0tmvZDusnKJ2!I zA4b-#75^QWQ76Q$*EW5nAsm*;O@(ssnR?Z47wXz14AeXjWDSNQ?swEuoq*I3AV>~K z=|_?=enzgx3mvIVt1WG|PXk24%1e z9&i~<|1$E)rGj-cyfMW%X<6kUbbzccD<0qvUtj9^%iAO}Nk{R7M!X$W(cuZ2u)c7w z>S&t4-UVmT%1Dc+Z=SB2ND7Xfu02`~q}UiJA9vbwcS~#<$AJ;`F>$Yn?ayRQJcj4h zD3BU5Ze8dX5+PyN8i!2Jo$=*@hHX6Cl{+#m()GoGN1D1xRA+*W32;AJn1pE+;acbV z>nm|ff$s-XQdJy1$5q)pN+jBmqp3@fjK{mh7D9wWqDHthj0z-j-?!i{ zIp@DNK9Ex z9nfBh;XyAkNC-y~0MkqVKLBh%lfNc>gaxl3qM=vyLcB;gVW4lJOGnX#%OP=@*5W|L zVxvg3dL)KsWVlH!vv-))hzFP~`X#F``f1#&!&@(AWA0~Lv@!%*Tb6G{Z%7}A3$W!_ zOL;klzyD(~GwfRLtvcWPm040-$z|NAD{X}X2n6z)v{4g_cU3r9=|cZbP@?6QLcIMk z!|;;n+G)lEXW%pfqZ@H!jzV<`33232#-bPUMdiOrl-KCYv*QPw|fM-{_Uo=Ez~XU#u^FCFR30aQpq7J zV=Rz8ixb`*XPq^)dTg=sbpZW^7}GJq)Up@~&)pQ?3h13}PT#JM4htb8CG{)w+E9;S zfmpPo&n60d>Y$lDP1Sh$;YZpbCm~A}el`u-EAfUwPV1-tq(GJE6n=+2LOX(l6gY`)7H04;w@MN|9-s%$P%^lvm7R+Z3$@#|Mif!aX%B3pX| zyzy}u7j;Hi=$d|D54!S&D;wI~6H4AC1Wwf6egzC%gkwQnfP>At{FW}dXz)G(P8z}1 zQn@4&bfkpSNWq;66&tmXDrxZ9_YaB6Y^#g*Ot5aLP?3Jr73X-%#(}7Wn@S~PFJoj{ zgY7jyAXuhXw0!xj%%+BMeMT2X+Cu~T%p_&i39>Ums$%oOg91+_XkM_^nK62cv-#uq zP&BK~9TU5SE}aQZ38(M2W4eMkKd>AxI1AARe$=Zu<8Yw#pd8p2 zV0$1t7$KlMAw#x$1;6@z?|pKjT{|jaP`50)@5%AX+%2N?L@5~2Hv&c(-~lbglOY4@ z=Iw#lOCPlT1Q>hT8JrM_JB#d-0zd0-gq}nH0SQy%vIuy zg&z4+l&Z5pw-=gVj!M96&2}G?9|4CdZ-8i$H&`V2OpS^xxy+D0_b}5h|WkDZIY!r-HN6s2Yv6 znE(vBDT)ri0`d>Cj;*47KxVAbW=W=-r<<3yqS6IMl{TUS5 z@(Kh%pDq?Vph-4waX4*{&U8@^Yo$wuYTxugebMMPo5a(N3iN_H2BGx7zD68-Ov_Jd z(5)>dCXVU%X5hn{wY&VjQ`LRS2;R%u6$*e=L_$3{hJIM;$CwH%S^L^T)?Mk;*v1$h z%?|kYS>!QR+NB51D2{J$H+>4zU;q4b1M;Y2lvmx?C7dI|PiX*~t`h{{#N6VkIJn)d zs1L;ZZ;lG^w1jgm9t%qgtnSqM4tJudczq(;mZIpzJ2bK!gUwSO3Wu+tx(gkPrzT=is6VZwMWF8#?cqhKp1^4Glfyl)f>TCs zRHaCVk6=sd^1Y07bnh%tm-?hhaT_22Y$WTijxV>K%^K8Jl4ivWnCwh-VS=BTz~SDg zoc4|u^~iUDj5HLSCf|8-h2?JtpjOhf-N&NL$0>C&KWPCzh*>lN)R)%}zhMsQp<}fw zIF&_Ym7-q)u}b9><#jGd=rh|SeR5ER%cl18yo(VWSlb76;4Jtt9HystG8>DRefdAT%@NrS_!;p}sK}s+**q7~m zQvP<8Jbj@e>r0R^_Ta9)O`qub@mOvCNM5Czb~ctrKAW1vHyOiz0*KfM2U}-au!iUx zf@LDqU)k57u`Y0+O;Cb3#{)a)#_6b3mjT*QJ9-1#|9Dy_g`W|S=k^(0y@csZ$E=Lq zQVhSAoY9Y%^P!obhqDWm6hw~GVjZ%#Q-z#vf#~_w_SX1jgHrmb`4&3%1|58mz{8CG zzR(K?nYEb-U5#^1+1lhLV5KpLG3pwj>|$7`7hcL= z)J}tN8&hkTir&-_a!)8!$s;OY$fr}_=m*s;h(fjdQMx`QTS#?$cAjYZDux(#96CV_bVP z@vq6Qt%~iZ42`F5b7TJ)nsbvEr&6STy`qWEa5S(to9hrHuU>COsotJftX|8k)9M^V zlQXky>58tlD;)MewAx#&2L$^xb5y%$^@uTVYaQRuEh`oh;!$HH=Byr}Q>u7Cz|F== zyt`ujzP57>;}tGJY}%W@qwY%-zo$(sD&0E`2Yu$agY2U1bshhUYPY)X*c-Z2OU1c@0Dv$#~N4doV&J zR4Wir2M34ZXG|642Zq*`2<(B-zdBX19L&a%ZSMQ_W}+!7K0rr5PLz%Ugon(zoj%o@zlQm|`Zq7i>oIPd71-}LdFY~#CCoY1*mxd`K z>H3(ht4!iD3@-xNmFvcSVz(PY$`d~pD)PF6?E(aijHhCCA=ukX(8n`TF@w6&-w?ZZ zcDIQKIou=CIH!Ty&~XW2A49CFc+J>#_CruIDycSA@^TN)kc!9Fpxmd)L29dX0#l#6WA#NPIoM(t>GY zC+p*Qi)pwnMV{$EBRWY~DK$5q-{W8n=FV=r z2Uo0z3!pE%ptiKaweRerh<_vJLmB(^8){O^@Emt^4&deOebo(crV$ z&tMNyn7y6I*XcDm-@G-ruU#FKlfQ;lp6ucXO86rb+w(-x&vfSo5H6ARS=gSFYRv z_cpM{&3X}tzj*2Ivqrz(5$NRaE&P@9`U@;3V$RmH@D&SxP>G^{5C4+e*-eeZ;TQ(V zz0n$!J5jr}0HlzDLk$t9?8utD-h-9G;)h zBFsQ@x4@Cb$sEOhnmbX;FR}D}%CZM93n+b8b^-P0ekvt$VrP?<5TVJnAvuCxQ+!eC z&V)4!2~8IN{YC^q_!993_y*F-cqY>9?nG2D4BzPwkqFp;hE3^F4J0!}$fxKOjtyna zmT=8fH5VY*Pfol$^|jZ{01(wp*N06(I9qvFiNZ!Q@iX)YetfY#f_N%>JAw+xlW6_GXjKdZ?A+c_Gm)s6c&;Tn+=8tclDx5#mp`+ZUGK zVBdo!q5U#X!d>e&toqNtygL9YJrfEL;S#EJ9+fL_tW$~at%!OmyuUQe2PIrh4!953 zkYPF%nlo!mR2OO{*E~adqD6M?YyIUyZ4VBx3jC-P%{k`fuU2UBtxaC{*kiQDde1J} z|C;dmD>A`}v%Qu6gRNpdS z*EHRa1>Zyadj`=}41{h_E7RIOgW*r{1gdWnm>RNBc^AkYBolkhGY@|dSHB@u+L^5Z zPxjPi;&+HU?lZnJ`!JR<2OZ5^m25+%WALoUS>H2?jdi*l`#pl-5y=bcXD_3|;vsU9+CWL>_u z&CD=~w6UR-@?Da;LJ^8Dxj+o*Q#zGr1(!_^mU3>*JmCgU#Vj>`tlgi`Dnj8-@Zl4FDy9a`*%zbwh?yUpW=ypw&@;c92S@m_%Ecp^n%Db znxixrM}+pK#C}pnPPIz-?>qg?@4F8i-9TJk5(W*Fr^eTs>+WEFL=WiQOV_=r&d8-h_SdLJr9z23?MnsKL z>9?{h^1r&bWNb9xQD`5O^d!`r8p%K>MhXg7_7T48(!}?M1u;*{F&4kGUjcH~O>HD9 zn>l-Ei_xY^*O$AIrU3~#7d8ijq`v)^#?U8_WHT+3?Ex)SL;w9yS&yxT6G1KheXp;X zwd!TM1g&&Ndr~zv@PE$8A*gDOMisM^?pWX?Rt!+_cR>h)n0Tb(g)5?@`52pWvl9Vz z12vFSVc}ZfopC82(45zd^?`qtJ*)tKAUI*-rv{0#%#JsG+ydg4KT!E zOyIbFxRFMZddeN%q(BM_-5(tt`OY__%=N~y&>@9%~Iv}2nZKN}(kC9r;n#bhKjGm(8E{Ff&X_9HKh zMT>xH;y2Tdl63M$9g@Q#A84XaVI$5j`N(sV(VwpnjPI%AL8d*&hZH5HKsroc3%87J zSzIxTlo#|+=nVfrXwRJ4J}gLwHW>JsxoR2HFX?5 zuOZYJ7|A$r>?ra-(6|5f^kHBfGj)PxLt9YKJ`_Q+P+YhA%FbcLz#sd%=vn+-Al`Dc z<*&INJ;}cQv9;@|3?H@bs5T<_t%IF{0UgtjB>xOJ^!vUI?nUS(y~9N zz%t6SC}LABr5yi@t}b0iWG&(5Y^&XLv!ND#T7&?-9=axw4RAfK+sLBsO7S-ZUT{zf zY&os|wK2 zrcfr-EC2pap!zla>fXZoC>*E@N8Hm(>arsoQm6X-L6Vl0e+UyM-fYOXPvklH(Vl;) zkSgdRCf~gGYG>EaXhr$_jRMV;=BYyoH51y@f?bfTZb=UV)7SE~B7u;V?LZ4ufxevb zF&JL}DWboc0hN7AufQPIRc!JQr|q`2oExo9?PagpXrhfR(3dEgRy~nU*aZ9H*Nx*L zD~a)z`;oR2LVtg3MVqzoOMP_rbyh=eZ)NT0f#M*@(4O{xM|n1rV&qII4-H4QWhCy#-enG=j+#hTjNh(_mYJzh_Z z`0?8tL-ZSGq=1EFut+;rt2q8;KUD8DY-TF()%+b3b0;TzIvoAnqhQ@Za~%4ysno_- z{Xdw3ax9>BrzgV~|6lIH(mZ}1L=P;@!V!&^lMe>U$ML36T3s*O?HZR%AR74df7xql zOOpf*wHRQdF0uHqFkJINjr?*KI`00X9lSI~o{=|WwYIDob|_SXK|auX{D^?(+y*s> zHeCg}jkKXx75jFfo(_F_O))VNM{V!iT>rwLXhaoh<2*W2iI96p`qvALM`_Nmn6ZIF^7OGGm zsWve!J24PoO6^fF)>1O!JASB1(bmrgn+d-*H(VxvPuh+zIs~hp5`bUfG_lDFZf){@ zozKzsDs1oF+@o+bJ4)}|?lE8m4L5R>o&wb~!E&B;B?b8o{A`2i_PY8_&D#M$(kKdl zXLn@;B0GbkLEJ!-QCsH8+a?IOzW2$4bsBaG4`UzaVY6iywM;}snl{oc*6!zXZgZWo za;Ckoup9+8&70hyd)k1F!muK+&m`JEx+uw+wTa=JkG-6?`nwpE%!(L-Xz&=fT#MGpFWjQY0TbAj~>64c{^O6A|?% z&5q}9-zyLIW8Fj-m7)IF9sTNpcR8W;__MN6P=`AzmeFdqb3>`;dpC}7c3DkIERY4~ z3`3xuLPGx<))ljG)L2mEz+=L-&bPGD{tfmhWe_@67xMlwU71C;P)$4`C%@7azDIK6 zjG)H^bkJtps1pPA@`|zdDF7d$+q1~)<##u~OGAWG!xo^E5&x1lSp?&I14o4qYl0@N zH#67A-jS2yZBRuXRFoFw9-@-d8wCZ}KZNVYBN8vj1xCMRPi~)^v1BLvnUsG<8s7<@ z6LB(;spoixN;mox-W1@rog)6`ia{a3)&LJ!lG(ZTb*~)kZH90B$lIlJ%|jQy!@_3A z?b>kGtkg0ZG=aGyl?Z7n8w3Xgj++uFIxC81cUz*}ZhK~sy~=@uij6RKg5}@G5JGt@ z&~1X-;WJz_Vlyb;_KqiBC3jic3(xOKQ(CvqPS)eb8MP(5<|x*kjYzp=rsz|*is(UA z`O^I-^`9E4L{K7Z(U=)wgWGmm(?5mK7c28YT zV`O@Ouns)D4axEM=-hOTa4$N9@pnYBk&+w>BD zi!wl^h&k4wlYuZo1VGv~T*N_aa7Xnt^ETIa^8{Rl%k6Df{j-(qAsBn605Oj!Cum%WKtzRH{aP~D z2SolThHn~YCSG!am|?O%MAN7~Z}FzabBTjMDz``=YM~t#bH|?q_$SZM`<36mCFSWy*Cxk_ z9zjDqZ3FdOW)-_0gYjksT}ZC!F}!5hJwXy3`xhKsXIllAiqsPkro6^e<+7W~9PzWd zI+q=hm3Y@=+3=`~JRYxwl`|R`grchSs zq$dGiaBfqBuc%80x?UV3hf4bmJT@MbeNpD`i9EIL0aw7^MUq0L$D$8<7W!-53vl5# zppVT-W$#O8)IEhoYvrP`$rAOo?#dP{f_ZLkjb134f@MmcYFLB9#&1h+Ai-}72U(SxL6SILU*M>Dl6lrJph zuIV}_Pmsc0fEK2vi!QnI0#RUO9vxsM({}Z#-3LYcjF5I#$ygB{x8}Y?qA4krhW0k4 zQ&SzS`SA=zpzrL*8eK_OuTUE;ZU3zxn@?VzKe4~)DcD>@I#PDch8p<>htqI@#>rlUpyfv@H*vYjQt(Vl*Pjb`>b`}QT03!|H$tJ>B*+GU6 zi{5zP00hpSR>7v{Ror@x+4eLWwqO7L{gj}+2J8`04_wImms_AB7;JZ=9 zc2Zj~|GBq)9j=q!wd5YJM8#xNVM^cp0W?-g_r`>3OrNuzT^BejBDYZMMx+0t`qGGd zdu{O)&OXvKx}5ZU)8G|~zB)cVie%-JC>N{who}}TgO&Tu)BjH z5X==P7phCzpOap5lA)CwUh?$DANK<+P2JrI(LNHKx_KkN&SuyY*lnb9%z%v<`#9<~ z2f6%KX7dw#YB9^sQPC^o>%|i6KkZP_zjJyPKsEaHpYxtx-gZgHs4CVUp^{2Azw^0* zFMR&~P=p)zw;n+`qHlNpX3+`czO5#2m^M1Ekfp0T=A0piS_nuOdm$HK00Z|g|Lb;~ zFUXrFMaWL{dSL7)T}+@u^9_c=(e`wWbwe2kc!gjyCZjGur*HkS?Rnu1J|@Zf7_=eN z!JA|-=T8bO8aDpeXyV*yMj&T;6FG&Xs=pG0GFh%U_fVSZ&M4`I!cPjcsCVXUxE$&8 z1?^$$YD5y!E|g8{fqtFK1oH|z>789vb1TW8Ec%yEINGdr>2ng98a)(j3Lo~}>-BG5 z%`N?ZA9tdCE>#X*cq5OS|NFu>^}M7n4EP60)Ou!5@5h$t$Gp_4V2^8822LHB)o4ae z_-Aca3h;n4?5;)5IlmZ~AqS8k#-)kP_dRR1+v05)SW`{`XAc~f^cAeZ!4Pkwbo zU^$5o{;$Js734vJRtu-kRKq^*hey!HD()vpKfJgH`)VT@K;r-G2*p@P?^4=Qph@tK zflsLmj}oB6*Z{nEbTL-YK#e2b>OMPY`95PT$_p(B)Rw$=y|LnyXtDb1S$Oc41{QW; z3pN&mcgOfwnew4zM9y1}y2m~S`|=FV32pBdOTmDjd$WQ|<_{VhYlr~}A2_jkD4j62 zQTf&SEdP+F(Ohot9&~!G##hpLK+Gm3f0y?%gn@%vxSv!X)yQ5W%g3zSc2{##ONqL* zvF3Aw`2OovMFz9B%f1s@w{$L>TcT;ZGOms>d7V?Om7c%uWypgLzYkZ%s32f{+N+}Z zk(LM{MDSw%)| zG#3n%kYQN{1lZSUvWraxa>WT-j=3f5&egTDzrIJS@*fyiykydB8Sk(6JyU;LL~vuz z#Mh3s)qir^D_ur6_*c(EEtTjuNDeBnUs6tGYi4o&!%c>b8`b@vzcMo>d_C&LK}SDC z137cr9ss}AhB9bclRB5bAm~Uc1i2T`E)|9>;zs((yO+2_YM(3!>awONVGNSGcX6GD z3h%2-D6>GdY%J7ZoD2%>*rmW2Ib>$hdMD5B@3v(5l1h$2n+Eybzv0K%!QD}idZ=(* zPh%b9RK4NSdRd|-3MV%d)T?o{0N_RO5g{5B^@^6nMv??X8`n28eSilBi!K&AXO-oU zS|R@~Pkf&J{NI6)!(CP?w8Jri(KkXl*!e+0EjLd}G>o{{KV-A!Ogz?lAaGLzCT}RO z2VQ_2y6;LXCd(qMKx4i~)3)!!m$XS&A0&pU;=4&>4sU4r#avCz!p|;L(^W6Jdv!Tq zvOMgUs4@j(?=>}5{F*RitnJJZnh9Nu_nx`u#?+Wy+90rSi6IJFnkSa&yA>%4FGK>P zFCD6Y4HHWSv}9BJIGwP-?$o(ihpdqTLEf>|*3V!Ov-t=u6RO%MPFumXO`N<~o^ zNT3K?3Y2mHi7JS)?hiTpUg*}Ix2ScWZu&1313AvOhsZNU4)SVF4MOOQ*9WeEQc2}c zy{E}4=x&LkNqlWq)ivqLW|@H?(}L0q&)vLv_wH*5ZUHh-qcKYkAr*y^s6%@+jHfm* z#+)Z)5|#*Be4=DyHO40&S-CP|CDVK8mdb&1dJQvMEX;tEAPH>J!7v{-@60Z^x>j*= zFkGu&~{mxF+-ju-5`gtZ%{d@}>-Di3Zb zFs2wm@y>t)O+^V9AS6fyT3$?3H;V)Xp=~1L3)=?7iCh1||AwXO>?5kO$<&fV=BcEf zDu$U&;tkkV6e6OQ&^1SDF}CPHv9O8+*-3LVO$JDK7mXFoO)yi%J~Zz;~pp zAX%HtZDG>0i-ECZx)tjr#PhL9pei`N=0iGn$n>k=NGuTiB)Sc z!W{m7QS|M;|@Q*hWc28TvQjVxYnUC^EH%oI4Bzj$U#T9JlA;i;?Y2^moQQ&8g!=w_lTd{ zaQxZ=$&TP_Sz^P5fLQ6wlgu;)d$)8G zU>Z^!1Vafe*76b!PGCYcIicbX{zQX`e8r&1_f+ zMUN$}Js}!Y?WKl{p}|;aQ3wF405+D%6%c^Qhss_L!}qGK`KJx6kVyCcF_s z%l1b#e=QK^2liS*?Lai;>%mdkjkj^Hq=;77KP$I>^TjY|fCVm)U_u9G=`)sjXTxyv{n}Qq|lbALZ5wE8mO@aVP8zGwB7T}vEdPiEP z>1VwhqMu3Tj@8Hs0O-qt&40%#L9YwJ@JKgf(eYG-P$0(7tygj1?`S^QJ$|Ekj?*X!_6txVe- zX6|*@Ho0P@6k$PCbm-DgV%?D=xDi5A&MLhHAq-wO&%4W2OxTpADyi8_WU<+uS6#DM zTH5z2o5hndWovy~R5uxqUNhCv8+fdjhGYXz2Rw8w$b7L|06`Ha=>2NxdSzZ6i{;sH z({~Y~+oZrqio%Mowo7((*`?KV-?2k0lQ5pwsfv25fkHG{#;w;nSg)wVe#RQP(0#&y z0H1zn0lgx3o*IR253QAwE1X)l2OXYCg&ZhGz^bJgRz6q(LL!E#LZ!qcC;)AngH``# zN8WzVWy`%HmBrqG6bvS#5U>y>G%`Yg$gEA#ojc}8*#sBRAsST`rHY85*kFuAFa*vr zWu?keSj8D7)oB@RE>WZuq&}F@kS1I5ZggxckgEPx==9Gncgyabq!By}PEtMbe7%wq z4eIs&SC0Gpeg1NkZfo83qdELAiH{GDZN_#PK|?4J?14Mhb4UwnQ`CXQVU@%x?WMzdd~|ak?iMFB&SqeM{9_{ z6s9et<41V9k-t-y+VZD$mF1@2B+N}yLTbRlxC2+FVzD^Rf=5e|@r0T6 z*kJ@b^EBAWJ-AV2m@21bTL{Jy)=MHz<{;%XXd0RrY;QnSDq7;nA#(R5nKZ@D@}BWx3LPQdq=LDjbXf2!>n%fLt)@0rN1CMTXR& zd-ko;^>l@?fs=$a9O~8Ewtq(wSr+9BtO^#sCJrh2GfLKRy$WT??}{9)?Y3dDWoj>^ z=ZoP;jcbcrC0%az&}bJL3&v|!`IW+`y{W7_;LG?1H1p8Dmh>GCxJt=vDi1OCo9bRx zLgHduamCH_37Ly=N_$}PAsSBr00002deH<%v5_DUt5TL!sco*T5{oY2t%60U`_65} z?L$P7R-n*|ZVEDq3$!{p%JHc_GnsbiY#X-(Am=G1i++X@QM7MIo}@hm@{1R1lSfXq zw-KnYFT3DDq&B5BJ!{9VQ*4X3yU65eLE|~n&Q%kjGet-aHG^%aq&tnK!b7#)Q3b8D z!5qvD>m3%8Q->ngq=isLN<#+4MRh^dCh%&E z7Ev=%ai3mb(}h@JSqd9XIfW`167eNETD3P0GB1e62|1+OzRd$u#wl=qq*PGDesFK( zk{A1TN{CS*dHDJVx?Gs&I4)fU$xTRiGrE1el4STOZ32Q?484B(7E|_iVQ4GW&4j#L zkX%Yg6`b5k7)>(&AsST$rG%RiflSiKGk{T|)`S-rQtfgqHd)GAcjBTGT8t0nhRk)< zXT*gX@b>*he-`Q?;i9|R(Vo3ZPVbHr7o+dH#&KAv*29h%&_{}k#`Uua$GkOk(idW^ zl&zKCEa{Cd*V&|IjS6nd(ie4EEz6iD7ir91cybd>8Z0SdChIt&yfd0q#%t`;euWMt zxc+vSYBCVrGED=rHP<0GQaRo|Ws!By?`flR}^8_F#nFK{X z4^`1(ewsQ|?+7kr6gd=n4Q}t}-S2^tK5h+eYAs-0V60E* zTn|3v(|7v|w|zSt_aE(#8r#qlA=h`-S6+N;eOK)qF~`L>P5hClOjJ~Qa$Q{IBbKqa z#OizSoMUw?O;r8SSGF46#|>7Q_Gr9&2N8j~u_n6XZS##|XflCoO>x;8O;-ZKmYA*q z9J=Ey!eo|S1yPG%yKr+Loy2E8nsrp)%wt+u{x!senqz`1SB)(7PS)7~On|J=RG5?q z00#I3I8s=!rDH2&Wp~>f7NN=?O?>tH_J2<&oR6TW0f~aXP>=d?!#GCjytWew_Kzxk zK*^3gL3LZTJK2*l+kyu;7`rgR-Qxfzp_Q}nomahaoEwt-Rn1CRa5iP?;d&DzVyBEb zP@7GbYR4Zm6_;rBfLilHn+KCEBV?~UrH>&RROO}+#Y2)rU{ti{1_EZLLNSRf zIfu`x2)(KLzAd28+>EwG5ckG6hs~FsZV&eT`F*+K5mMWR*v3oeVg>;D5NMfV^(ll5 z@vcj!3I2VzU3Jk!&}llMu{{5WC(TxqM=fR(bMd^+-9jOmcd$xJ3Ywr0acP9{b%7lW z&Gg|YL-wB zR`A9(Mv=Fqp&B*>MA~2vigox@Lw5Ed&^*4xh~LVK>BaF6_f3DgN6@JyUqrv|5;!-| zLL^Yk3ulW*2=s3ffcHY$yLP$fFJ|N{gEc?a9FiY9djDW0Kw6< z+&-&?$Tk!~ZwRn%N&GHswDl=>UGc0XB!qK)y^RfrA`O3%ue-D=%8kBv^FmUMTeRaOu(lCZc;SuF>| zF>t|D)K#R~ekHr{Zx)mqpx&1i|#>Qck#)vNi1r-D? zBR9}T9AtMOyBXW8GK=4hV$T zJkh>-RG8kw{}}I)8HC|^L3j;~O^t*?M17kUZ+-67qU_Vu9j%fzQ^OU5z01KL>S{Cr zeNYk|Vfg>naPvuA<~SAv1*J;2rn7U3-EC%CIw2Yq^{tqOA&L~Lw9bgSxeAKX0D=iV zSt;a~MaFeZye!dkcm+_MB-=6qB8$Q(IODZIf0*sz*~5@qZrByUDUt*=66(2PbePpA zs>$vkfj@0%OcB8l0L`$fP?}98{!5lMO=c4rxm5bj^3Gpc^dG(Nh}`aK(C!J_qpDd2 zgtf6AP7LW)UOo@D6Q@in6#!2SCGb$Bvd5>*1aoTP)K@&&CE!7ZUc8c3BK%@m;=y0} zq5I*Q0Mi(VVmXWs0W8N1Nd|(zbnRlPt=InxFvRJ+)5QC?gcHo-y=biU219MCFIUAM zp9&G8HT1;hl1o1lWLo$Kztq&X;J8RPr~uc&=)(|rP}<&%!xa7AL|;368^+c##dwA_ zqFa9I3{kxM-clGf)aCnah|~doFnS>>RMoANjT3+tsT8Rh7Kor0TqZBT1Vl|VoVWxa znna<tNmD|$Xsjq{hbfADd`!!VikrT0@R zObm9b1u+-6QGNwHul4Jt2R}^J35edZ!ZpGYs}h0ELMm%4j?md5KlA-H(F!9iVXj}J z>@i;v02)o`HXli(E#zVCpBn@Kk4yjob?{WQD~HdTrdMjo$=|x)zd~gv3B$Z%&;BmD zeo_L6Z*3zph1+`(q)ihPrsH%oUqNmN?06`*8A~1CDo-WE zk4Cvm*7CH3<*EJByRAZ4gKZtDv0a+Vd(R5bh&Qp+HA)eHKOszQOxbQl+Gi1vn=o6U zHj|(!ftCO-aJ&u6mD9H9v81>M$y1+YQxGOn36v9z>|`c&gf_d#5xf^wy<{L|Ckz49 z#<7g*lSG3p9G6-1%4o^cJG4qv%tD$pqake+jaqin1$>ahNTz`R)dI+<$JF!jOD_KB z+^P`?+sPeKNG&R7d@Cj{7b$@bbBP6Zi7RVkQw;-vK=ukYfm)rK4OAa}w0YUo&q!M1 zYFh}R@p4T=VshC{34DGmZPq>ZE7of@*OUz=33*ZyIva_o1Q|0SxwwY0zXD7zNGt24 zazh-!Xsi}DKi((siOwhIvfJ*;)*MgIAz|o_-jBQi{)LaXdR9`jk_Mv4lHf4XGeRbj zbOi+~9ElFAbaTM!{Wb$hZ~;Cgr8h8iUpCp(Fn9c1TqmP7v#ktPYu)4WI{c#qjqj%w zL4-A|Lae7w)oUWqt!u0J>q7Hlt?BL7oXv$G`9|w=lgfg7sb^GUGcfT$5S^Iep#>v= zuV6qg?8x)ijVCB*j8!#>r3%;oc=`IM?vlJRgsCZHw930M`tMjeXka2YCW`K2y`EMg z1t2oXVp*C@46wh2^e7NZFK@vidKCSp2%80{H&p;YtEz^u0sw|hMWNHJ={elF@?qt= zVP-3&exRMj(7Ag!AQc>@xTsY{3{<~JIPW@7>*YHbG1y#8W^MV@DhpN|NHvZKP!;2- zbSfJ5WoH!oC{Xy8(j~+V#@wygtJ%Sr%#|i|mUHX9!(~fTxx1Zuu%ek?`E+al^+PP; zJC@SnlQRNq^p9?R_L7&LvN@|jvY0@zf0D~ znqlx&1o`2Uy$}kNgC?QKt`ti$fS>@O0F+G64T*22T9dZv;Ybzn^OFq-kxm&q_8ytm ze9~en5-FpxpZ>OovOFE#Gpwb&$AiA*8#bOUts$@i9ZbFowCJw=_21B{c=W>QhAysI z1k49D&~aeA#Tc=IIqj1Kw=O2@{;k5bTk))37)dx^f^A|SIaGI8Pxa=`ld#oGSA*LD zHY4xV{m9DRybfgmIUyQV4W){XVlX{fN47TD|JA z5eZCy(DRoM|I@t2)9@m*LX24ZBTKU6L}PV)wq@I+nt)bsXlNN9fjzFNfz9(D3_Y! zDymP^)T>rZh?K{`!U?bqF%oA*h(HAbf`EW7z~#I*ANt)F7qRVI-fjOM&&oZlmSLj_ zDdK@?4q6}+^hjuMbQO5=n!BB>y4RF-Vo2oyj*z2Yu9plYgEf-MXzE07Q*>t!(P;=2 zLn?qtbER$r)Gzj^wJ@gWz!xK$Da&+~_;S3OvqF5mWmH`4vNhUBL*wr5?(XjHPH=Y* zlHl&{?(QzZ9fG@C@Zb;#e7yUfv%ho3zW4s=KXde2wQ4+Cv#MqVQ;HhYl1RVU50)k! zxIdMct;40Y(EII$xymLwO6*<_y3&dn_)o56ppGs7pu8&Uxw1f2+0Du(| z1;8=%Vg+EEE_CU!^Wje!jWvG1CJuq#tl3j(Se;B=usXVjlyRg-XL-p(!SHg{snjGu zI?>DrNSN~@CDkhmlT>P^z-G};$G)JYSjy?@uLaJ?jMv;qedR>`J9=ejMS;oWkHYBI zW;kD0NZ0!6EXD0K}4$DHXQyG$g>(U!Ntif51;KH9lltZMOoX z7O}QUMsV15#X(AJPO9P*c1V5|upRfbWXSaVqo=7G*N`vMHK*QW; zkH|Fp@E7z?0z28F(j@2TNT?-&3>{ofS_^m5TRF^LT|?No)|44+!G5nJkI3hQ+wYtyy2B}xDC0AHNd#c)Z#X)3ymy!1yQUMWGg?X7CzdVk{+lt}jBjhdZ* zXRp3iKde(ay~{!(zSt8S3a$k%lmocDxMy>{Q5mo1J2lOma5x#noMb9i{$;50=PxQ) zE+lY{qYv;Y-~fPP1|#Sf{$Ci({||=n|APJV@v`! z|F#7gEEfu+RKf9Ic0vFIi2oOY^Z$tu{0H)17DBPu0rddt=lU(HO_LueYQ4GAEYlSh z$a&lnz`5DgYh48&gErX9IVEk(ExFNevj}-E-LW#|8>uL;Xp)WdLY9G2pgpOYy8meh zh~mH7yZ>Y1zhWKnvSO&12{UQ+>aYO%robb<*+Y*rJwLnZ8;i(R%JZGX_Roa~kU(Fi5u4F=+m41hiv1A?HqHXbToOJNA}luM4`CmQ-Wchf^kEHXn&fF9{^FX zpA7|w`EX$u{V1xVd(iNQrnw5W0N3x>W{|CYnu6_-&^N|0A_|tiS0&G^Su}+oEqSfE z=!e&`duHG4=5E#JYQr>ev_fsg)R=P|Q*Q@8X(Gi>R|BA279iD7=FC_?fQl9gZDI-$ zTXcDxej>} z_Ux0p&&*1bp}H%V@hohmJ>{CL1;TAYQYl}HQw=dO5z|2^Sio=_W!pb+zY71@bs;W@ z_aoo`kVX4VU0^B5)0KXwb}f&#oXW$13x=a<77jpGuQwQ;PzOl=gvvu92Y>vS@)Lv0 z7Ta?U8J0fP*zC3Pq~rQ-8j$T8gsl}p`1*PnFGEJG${GY^!Q7o_m}|xJ>RX=d{wjmU zW^P*;LWn%ld_IxE6!+&{MXVs4`L%~6F<@4RY9vhJ-E5B;Tz3%?H6u^d-?G+{jSYws zFR3Q8PMbNVZ8##sa~3UG3cUltmec_M^5q~kZUpuw#4>nQAd-(jzkp%rGj1|n5i4U{ z2r@!5Lh)AyWSC6)j`Ii3XVR?DMq0>UgO?x~9}NYp7Z+4&Rx7#P;<&wd{;WIv=xsKay>F%MkDb4~2542_LqW2hnYqT{?ra z1ht@@BKHm#;kCg{uPzm9(**5^Yozfiu4Xv|Xm3epct(z6pq^_^$WIY-{IR$$~IE`BA=x2yD}NpFb&PY87Cxqf5mH{kU2wv zJ_<<3LOVqd4nIg!ptINtN#)Ci1(a#|sVDDTTE#(WF{qG3Zw{-?dG^DdGcI3jngIV& z@b(E(BzJj$FRsIqU50X*YUg{%4J3WKq-M_Tr>3*|Lq)8UX!vS?5tvcF)lWv{@^{@Y zy9615uxEt2HDMJh^tI9GdD$R9=5tPk>t0#9r@99BNUy*|`9b9ox#&P9 zj5(wy5i)^6%7b}9%M&|m3=QM_<7{~vj|~>Ol8@O1x(zFMc&ADwG8eZ2|1SXO_6yIB zd8OoMZT4b@)_tIvQ8Cpmz3C5?*)ap*QttHzI>lS}K&#dEO^#7oi&pP7<)#iCcvlkX ziQ9E!?oN5~;h~~Jdy$CXcX}LbB8Yz?BA-#bAfrN{eITxEDu|dKz*w1a@n%?tex(%g zGdul0N0!gEmt&C&vDEo8jJUqUfL@|Uy9_ivYdtAE{%(}Pcbvs&hdaKRK~GS>>ZR1NVhRP;kbN0IqDefvqgx-pYaQu%uL+oWiB zcSzZQr}d@h`m0Mlf5ZzC;<93VBKs(P+LE4pnj0Rt%kqdgtnh^Sk9uuw9Zaxcj!FEp z2{kQqEP~;hp#tdHm=-KFRKNN|_58uGSwc$*e4~&Z`B^Z9PI6efoW4P`>`BidoPzu+xWIgrbM8)=l>OKwFNKRR}QKoEGlc(O%cv<@P(D*_c|$pBBw^Emr1GRbyMr@z$y=? zP2Sts7aSg`&fERc7kjy}&e^pn3h6bk#R7#x*c)R7RNYq0Qf!PuX9Qn1n=$*TQ(hkQ zk`?7~kuQGStxg=jD;B?M53!@8xH#SWoQn5UDNKq#ee^3Qs_sOmn@GmS)cx601?Q|aZ zIFYddEqB(#$pqM(VP}m&-^BRh<=HGv8KC6z0bs;9O6h$Pl$)2`jUZT z=k?WefTB`#PB1}qj)5=#+AiYb(fn~LQVk@uktIwk!BOvny}&6B5{-m-78)aXXOB&f zILtxOiF|=vj2ML^6j5Rl9Dy$2tc_!+q^0S-o|ew^fzA_ndJUdzt}d~DZbwM$7GHmS z$2&P3>e(3TbbX@s$#1Oj-+Lx8-E1vF0lAIIA9jZm=|7n_msE$R#)pM;*N;p*+_dw< z2@2R!2V0Im)!KK+4)g^HlEKuHn~DE|Rl6NdRY+9QMt!7Z!_EyL1?%6E80u*OGl2aG z$=?lD=jyn-=oxe9BdR^3OWc^#j|En&?-0nREtb#sicke4eGlqUtCo4c)5p#dM&3DK zBoN$qNzgtE1v1d%Isb9R)_zThc)q1Yz#2AbopuO;HuVpF5YNX`ok3ENq(UGfp;Z$8 zoT}g+!_a1^$>QWF$kJ0iFr;|3ATV4S;SNyJSWx5P@A+P)#rIsbKXuoq2lv#*W!6q^ zt(ULjR8JVJ(S$4_AuHI$qA^7HiQl)_Lm1IYM&>5JMcAKQttrsVUd-mok0ICZcILD% zXLDXoB;y=uEMduxkY#O93~P-usE^cl_PX^! z`I~!kzZz&hWjJp^Oqt*WQuBw5=P5giT=s_o5EJz$GA9xjsv-@YBs$$l(#t zS-R#(=-Ldp+U*Zx{a)WQ)rw$U^+bBd~W= z`A$XJ)3iBlIY#LoR}*;ia>|0J@PSjO2IYfH-X!vCQaZtFpehBG$o6!NrCn(<`!oiX zdi0;XJBGWkvq^_0zTF-u^vRWwf_1R%y%Xlu{VF3vgZN6PI$7B;sv5ZrR0~x{8A8bzqCq7T0%qsZNSN1BWM)RHpbo1?%4ZMMe6}kgu z^w;5bPFD(NWLElRI4-zkqKfb-B8)Y*vqZiVd&8CxQ2=drf{`0Btk=H%(_E zM~!BK6ICl`4nq?8X}Pt~pGQMMjN^e*OTR)BWpBY|38KDwm*H9UM6+{0k)|HQBRWbw zs-w<2G8(Gc`j33DFMGv{=dLSOHe>cmVI~<7MkXYN;S0E&>}>o9d_Wurh2WCme2p<| zRU2C^eiuv|rj6m)oyH5p2FL4G!A#?^!NPZFWBIkq=le%ReWnA+Fx&~!(gY+ai4>k< zx$Z~?N#HA)QqIzQ9=9@PuEkYeFcFio{_5>}-rG?)tp0mdVDJw((-T3OzOG=*jSy5c zv%$$y)y+tc`&4ESrB```#t-C(6LSf#tA`|!<^dRhB;o9@^);vLsB@S|aN=#WYTnZ0 z+A;asP9)LPAVhTpBWfJGLa)1m%w)EoqTPoXo%gDy0Ecd(yLZPzxVj{+3Z_#u=CLG+HrF4Y)-uju3fA(t#K*!r#Fov<`}mA5kZx58APb5d7p(y6fUh~`TQ-1 zbKsPC9Li(I*l)cxPDg(5AX5J!WPc_)c9JS>uZo_+q-KasAS1aXNU>0=}?)9W?vDhZ^eR;Z^m;-9CAZ%W@By2!8zf@a_Z zpqYX|qw0?%_Vr#HIp~(cn`W+&$TM9$GlO=~YC4_E+?;Sr0PGpGbOlAQlJri~Oa&iUj^!U~ZGT*EELF=6| z>M|RrrU*+mMwIUx1>-~Nc~~N+>Za>OYjX)}>F8=0begbz%HM!@QA`ZWz1hqZG&w#t z%ycLg>3L^r$^PkX9ye=+38tN34HqS0d7gxoal<7z2OxVee%r$}KE>-X@^!|0y#5Kx zj7}YlC&Lt3jzzOAM3osY-W;dJJE?W{G-n^b!nk^-AboKE(DZqDR)5GzmJwy%jb?+1 z!60o604P_bcY;%;HSgd9PlVuFeM4@#jH?i?Xu?-oDKgb2J{vkS7XOG)2gk3yUy`3r z7<(t9ct)fDy5SQS*{ND!PK@x(qPaOBL7oHPj6U;^y>!P3}|DV83=%H1%TId_LDfa@AVKoh@<5cr7fI>DTWFzZPFl8 z1qRn9YrozGlat)n^G3tt0)7F4JK+CzoPLfZf?W6rW8~F(3*_Kt*5An*tFp?;@`=ez z1Scsoil`v441P{4!C@|O{$tTnBAaibB+@|O$6I!=CVr zY8aqx(A<1Q>I5^VY3#O}QGwvKSyd0A{&2q#a$D2f;wfc?%D|)_EIGyL&e_QSJ8$7u%$Z!1MCH|Lsjm+Y(UR3S5~IGJh+*&6dnsR@C{ zUp+UkV}-1$1I3=^l10VV9KztEA9y|b)%kh>6s|XxV_{7D))< zJtx~$4z=4bXE6_KLR56d{uU9H#u@NBT>C#@exlQJLsGNKkczmgJoCjX@>EDsL9scj z(kKvM(0xuf^~;pZP*YK5N_43hRRADVLKUv?5bfE2TRgoHB~FYi{bm$#LZ>b<^O|w` zt!p<09)5Z}Gap!K%0rZ<0(0J>AOARLo9V{X_c1=&BkIJu-AgMcMV6 z#(YeUBJ>46c|I~*QiL2vJr9Edw!I*Odc=;FN3zot*mM&jJ&K}gAiJS}zqpW(P#>8f zM~BO)ugJitc*q(GM|WGhLpog1Sfo^-5GJ^90QWmnK9ZF@p2jE?npFH2#ky0R(|?e? zcptVY@cY9$PGy+wEH%tJDl;cJfKfy!qtDds!)f7_+dwDd(#ptv>q_C_(^JE-xeFrx z!u2}!)q9y4UMG>#Sj537Jj)SYfOb?6?BbL)y8$R~YS#V0?||joIe(GQx}{wkax3G~ zls2Az@=w|Gj~Jw}r#h*pNI@d+k=R2vM;(ufR&(vHqmr}t&S2Lg~euLDi#@eX-i+y zK?rv!eb<1LBvx(;4-^NI0V7udnV>MgmFYky@k|M{5U_w|JNJ14?h1v${=lVU8R}IM zJ@S02BcnW=kbIt!LHu#ZA?;L@{M{xNY)t>EBefFDmc#{~J$~xOU<+Gp@I?4M4WgLi zc#xt|6iGU3q1wYZL$TjsKR_{v>ApH{0=VP3!+e{#(BK|04fb zsr)~rr$39!O-Sr6Q^|w}z`eKm6BQF_a_9X_QkNf79GtGAW$B@1UQ9Wk`j`%rl@{vmB z;$1B==Ogw%SIm~w6q6!iBl=?MU@}FoC0NRe^BC=_6gA@@x}8FHP1=Jzs)|VQ;#FUI zHr8Jv4^ZZ(iRg8m(6zq}O2=|h^d`#Ee6N%XJGy*4Z~s2`8~WeOzAc%+1sWP6R?#H8 z!57(ek^R`i$8Th_QpE)4*;8>gEkL(T%!#$-!|ql!-aGQ81NdzJtnS z(S`Vm;e8$F-MELO^8k8Pz!p+~kt zt<4KT(D-vw@;p3kj09=k6e=ejoXji!`r^MJ;+{&5a=%Jj2-}56eV8L7OB|VVj?=Si z(n0eaZbGA=OVvA`in6|-?DSZuQ5WqX#a=^$rrh81q%k-A9Wvfi}P}ZGMY~khH zj@;F_&A*YLa#tFzBd=L0_%)0yyS684L>!C@qfr2X$qRspO*7Yb+=0@ZMp(k%4TvFc zn>Wd-rZp>WLvQ(3z!sV%s{lcL;L{D!a5Z06LhbD|Bvje=&y9c1BHVpqpjNa=AtEa! zhJm39-X=z)XKR&)$;re&5=KI1xxZNIdFR#BfGbCX{`a_g7hP|R^u5JFE0eAJnmlCA zxspK@Ht&?iNJ)PvC=w=ERL$r@h%Y`IkSxM)+R3qDQJ<69nzk6)8a9YvrW7 zQ3W%hu=nW10%1xG^KWtUG*s;8N_~SNQmNLG_02TqNCjV;9vsGIsw#E%?lzt`CL=5< zmMmGb;{;oeVzfq!j%C%1=dpWhdOw~>6W%v`38nlLGvoON7eruZGlHg{a^nltT+CWy z$jKpz^S7+*;xSpca@MwYiWek}^KA-0o)4HZQI*5Plm{#6#o9&I9m=o^sVOk1zC3Vu zG&LgAzDBR5G1j(lV7KK?2>i&HQ%*X&r7V5=j0GSR#+ih&Oy$c?!&Y$hSVYlOcM6A0 z6#D~+9yhX2_7s=Q)la_}m6NIOt+f+hMN`7UPlvd3-kxps;^+>HdyJ^2jA&NG5}q}Y z>s?6+NEz(eWR@X+n^26tf5WA`&J>N=kq zZlX48osowg*9okYho}9!73gMB8G8 zLSvav4xAuPeU(NtDXcQM-?54%S4Nqq2}<+YPF>l$|8iEjpu2oB)fhSH0Vn`t5idYd z1_2t(3y)NV0Z1>_Ww{y~qIRr%rZi>jng9S|H)%j2>V^&gz-#rl@B0|Q`bDUK@pJY3 zI}$qRU%yKqKn;c`JTBYL(P7l!Qu6tSE2fqoZxpD0U|NT~;Yn1QPyz4nfg`#lJbMC| zZ*$f7v=P*U=z-7Z#(N-@hJl2#veUAT5zY}VOxpLv08hNxzW2?}zqxbVr61azzN_w? zYp&Z_E5$SG(*{?f01hS+zYdE6mL2t$JC z!gvd(C1SA|*bD`Ylu!F;lW}+YZb#m&u;8K9&q7le*a94281iX4+#^KxNdORePFC9H zWcVbvEZ%PHe_tBp4?@$CZKXaZMiK#nLTl;D7Zn-#2=y**ef%$;lNwxx)ti(NB>*qy zdf78UeY*?SujezpAHQD|zOfutUc8$5uO9pO$Vs7LYYtp8#8ZW}Rd|I6b|yI&#)J4v zxD2NCo9GiI_JR-=k8IGIgErhxrM0^GPD@w-p9&lM#K^QimtGkhONhZHcFPAD;pL5| zn5h{;*rMXvZNz(6!|<^@lFz>UL!4}l#0~})fc%lc#L`jmU9*wn8;?X~h~3KfkpVKz zW|o)Z{PTOa-j?>=J^m^Efs$l~zLhhZOTE~+WLIkgFwClTOZ>h2_FQSklXBiVADsOH z21|dZ4=mv#4-g020#@W9I9Gx+#xOtAwoCL94=E;jzyo2aAchJNyb^d-sKdgwmeZc= z3aZ!c2ShW$R3_~UMJ>wMyWU=zc0Tx-sy;b2RURv}{BUkab3r3ggHpf(7kd!Tx*Lvt^}UP-%1jnaiI8F_;vRu2hsm+#)4^2>~)6 z-wk#0@&LJ`Uq*oY*(DIPS8`m#tIU*_lg>rvK!F-qpBc!w0#mYz`Pq-Fay=WNeHt@5 z-jq_nIP;I@Er+=#_Mf;#wym!*_j(RzHbp*P!u2WCcc1``?)(bbgl~K9LVw-F%yoCI z+ugJ0v2_KdDcT#_X%K;e2r-BGsdA9l6kKVjKlJx~B70bH$N6+Z!no|#$QNX!Q$!YQ zyAUM(A(hR;qp6fl#0Rofl5BvJV={cIGDwuS;vCrL5WhJ1i8V+QkYk-W!uq^aJ-*(> zTG6rXZb%DV1!3l^f5H8GRRX&xF=tvM^QHTnjfq+c6uR$rH2j;>E14pJpZo2teND(w z^wAhBGCKVfgmR#`k%@UWfPWQNa+FC$7G(Z9=wc4O|GcA0aLSAifpsV@NRaI<6^Hfx zp#%AZS_|HvEL1zZ>z{a7W4eebsW6SlI0vOzqE2W82+Wyc6CCNJau{jA3n)i_o1HjYoeVa0+Dk{7%5EU{vs)ITVs`=NY;Oy_!6|EUixDDZ78cPK~Je4;hn)wkU(|%e6xi%~iQPXYp|isejv=2B3Q8uI-opb!g0} zps>+^_V=4J_{&?xr_t+i_BkpaD&vfckaeV4ks;xXEzY^C6tdO3Be3C8U?2ki$lJqV zN2elh=pIajuW}+?rDT3{m=3FP!Iq(Swi9~w1vn68iPC@t*6_RDq@Bvyg}h~!)MAP* z+F$=%uzL&p;+fq{l>RW@R_K7z>qk`n^(sU+S%G9jbF>Z0%-39953kj+w)gXCA!6bp=Ve z{$!4ywP3elsO)sMKcy6-#eLXrA?pg@i=*wEax<-9Ot+!Ts{(^%pu?5vC&EjH;B0gB z5Y}uFwJ=rKQ{YszlnA@V*u3@F(BV~Kt+_+t@rUb=G=u`6U`k2@G7P*{OgA0=K*d|{ z((762Z^Ig^?o=LYDTE(ox0Yeeh0?ByxH&m6mk<8D^HQ|_h2=6SV@nAr22C&OU`f)T;t9-;@(V6+JAp@Y2Klf_&rOxDO zQ~)^=27*YDcMT4Rk&PVO#iLoa9>(ZpIx3nte2Cfw91&=w3hKYqZwr*`if|A6IFBk0 zhtG`i@qVH(t+arfdpQ+(?&+8M^+CSe7qi(RkNL%1p=|8@thnJP+T+oCS@CAgW-g{q z%96B>3SqYBgaJ#&(h&!-7V3CK=UqT_(Xo2{3OWi4x;WefG{6oErIJ;%%wyAOL%fE; zF3nUvS;K=*nAHLMtJ!RPbm6_6CT75i!O&BMNO74fkg_R`0j*Z1FOP77PxiuQoH%tO zTH!<@7}+G70qEZaOYccbc@bQLK4(jOsoMaB6`t6Tht+hmr(c;LOF&0&R6ZaQe>3(4z6y7ne?mu#vkL)7#TK?U$7ZX<+v6gB zn4YpFB1YSQ-es^>C~OI zc0qWBbHh0IgK@ddF$))mMiSy^RZS_xe{Hefx?Er}QUd^r&H9%97 zwi?os4AjqBg9!kxGEQ2RbKeGLWp95m7QxL~%prmqZcd`Gg&2UgrX6~76%0R-?s0|5 zfN+8lWv~#>PXZC7R$O|yBj*UFN91>+SCZ5e)gMrq(qJhoA){+%Y-+K~zOWTiQ^`eS zA`RQaqF)PKm;O3ch4IT@MIrOCt%v^Hzz`a-K35TtZGoo|zq2^GEIl%#a>dT=pK$Yj zcR)bxoSLl&N(^Z|rM%Q-EggCT;$gT~S@kKR`*3raqqH7oVgy#LQqb_Jy1I>$u)4Wd@vu_?+1+Pz0I#m} z>Q_!@%|ho+157|Zn2vEFrYgCphIshaar9&}jS(iJSa)7O1LwvZoD=5rh*r8E@$uFI zt55S;M91|G1*{mXtc)CsEbhW!hI-?g9%U8rG5taWRK9r51>+U`BiXE8oB`CPV`hVi zwx|_W0LV#Fi^L5XBWFn_TwCSmBw2l?!6_|qIBM`ynjgTF!ERq;4xSoH%u<9rWfcn2 zQQx1&bdtK1%0)KW5NJ>mY2alK1l=lyq{X}Vk+B4SGd@@O1yqdZ7ru0ekNaA4Odm6f z4Sxtr=qm&(PyaeXWUqj?`T_4 zcSc~=Pewv_ZU6?@)HqjQIs2O@z+fX(p1e0QWyM=nO7L34^R?c zB5i=q>J+iC4uOjm`hJ5?PDTU9BIgvJTujrQf(lH+poj{-qXNst$V z=MNer^KvMKLP8;;ZKv-3hKOa~i~$z~ljSwK0+WkEkBJJPBxh@F3^4k@$lw=VcN-~b z$Yyx7X$WZ1J0cGMC9JNlya)*+2LfgS{V{u+ELWlkFX?x8O7D7y$_^iu^xs6`oDbgA zk?`-+vFG617pGP9NX#rjhC~DD^DWAgqa}w=A5bKLEyaE)X3$*o=@sYZCy^W+{Y3l3 zQ4D)Fc1fs93|t+@f!~lnHwTT+?2ck%l0|9~v@s|d_|9ZC2_0&By-_E!+ngcsQVOf! z5W^@iu*gU%F?Fz<{%cm_@Ch(L>tyVUT3OqZ>1M8VgV9L~Z{h^nFGx#%#6xsvNS=|o zs*pni>==b2_#bE;jAx)>RB{o;MJpOx?qK#IR~)^_lPG9s?HbL|XhS>qyG*gvrl^vQ z=uPztm(odC+MT0f>QAb+-f|-=Kb@ce-swVcQ=v0QkdEMns8;qhzz6y>2EAQD&7W`_b*}k^w2i~Yr1ou`_`vUcW=59%!eVrIAvu(EjZmYRyLeT;-<@< zv_(2KK;7L7WC)SVpw$BijR&UQY=YhjPQu0JV1nEd_dg{hOpd~cEIXeW@F}9~1sJBq z9oE1GncFaQg@IRR9Kpd5RgU9KIlFR>V;tNBrhvTBS36%<%Z(}dy>|dZE1Lbhz+ow0ziSfq-b@S%=m22@$e6ifpd+G! zAtaU}CGui-(RGc%BC=YR(+AdTIh7-U8M1v!f~p9piR!HEVn6%q20 zR1@lC==cQ8p+#q2Lh(3}5P&U)JpO}fGg+AE@23|jI#EQ-NT%$`c+1PN=L=g@t0{yT zRr;R%Y5-kys%NFqh~ zt^P<>XT`blD#$~QN5JCmy8wq3*Iv+)p~7`$WR@*Ygv*G_7m$q00PMaAl#D+>0bOhb z`uI?bAlT>=bAYRO5C@*UvL4fBND{MtY7GkenlttA!u7a_@wJ)9b@@ zTQ;V23WEgjnL9(g4S^gWPHes?S0L-pt9yj^L1m86XLqY&wuCUZ0nfJgCrw0%dOD9% zfH(~cT^ItSG*(h9_~P%J_5Lq1>>rvNa^q<3NUiag|HgPv&y)1O9{67z8luL3 z@Q%ozIF6-)Fj1;%fRW`SeK9sR&SzB=#3=yKSkIJVF)oG{H!Z#4}sc#1)E@M*73*|jbn-UT#+IW8bIC-)H4)T$FLY6h_ zDjN>1%=IRnsBwr+@RJQov^O-JSUYuLf?C5sGOSb>3jqFWzvH@#FW#*PjnSx!`(|Ai zszf6;oE;?16{*-Q#z(K4-9VnzaUPM--Bk6^V&}7A5k&rokYi|fiQtU^n)9xh4)(Cl ztQ3TeP6a@$%<5MYg@>~`*@GybcOr+;v${DC$P1l zIcs&;R`?>r(i)j$x;GO5eIJIn>Ao89<($>W1vxD4N&h%*e&3|+s=x%kPWM!R9wL|} z#3va1E;OE69yRB1Y{Alq8@lym)GH!LaL#oT2W(@1FA}TcqA+DLteKIuxMr^egDAG+ zx7b=!I~7;mN=_r2@5XgMtr@)ty`&um|EomRAO3A8ua{t8qY>b_+whwvJJeGo?wO@I z7;n6Ol6o(d@^SHc4I;6g;11c5WWivmt1&O%W#7{``L+wMNW8u(Z<-1#OC;i05MHlJx3_EVy7G8hwI{X!z)9C8K-_%2Yb{Ei;?#iyCjo)!6DGbx6 z+1`#}`2c4L{N&SJNubEc;`{p-)jz%B0UO5m!jH71b7y4%@gbrQ1fkWpYveHq+WD@l zW7C9Ccbr%HlAx#;l}{CHQbd*`o+#6?p*ELe^<(tT>mfWfmQ^_+yR0|c@neE?rih3m zFkX?=*vlBCslvC9p?2tz#ze+NH47K1i6S9BXi(S^!{`&xZEz&vL?WandC5NoT(nnq zawzQzkzG%$TM2Ucj(6L5rNcn=H{enNa#y4Ldy(hen?i_ph3vy{c+anoFMlb`uz|!~ z@4_teGC+>c%AyGO2W0%6e9XeLhn{J6gNA$fvpr*BCTk~&4f0CIJgC0<&K(M6=Pl-$ zX+5i~`9UDP2&D_5RaGmt6sQ@b9~5Cot#crSMxgB{clhYF9dT}g@0_qE8#nuQNl@9Uu55?t2~*!}YH(84xtfL#3c5!ee)%Ymw4`yn)_%EfL9-j||? z0_Go2My|psMjWbC1UInYnZI{W+#cm$mbH-ZGbu(d$5@1l0ve*k^a5oCXJlb5N4@Di z-soNi=b^{U*W7lH$&!?g%q(HdikHu^G_20Ha+xL=v0wBmPnDwGl;qB#7P-P?Ka)!F zJ}`6L;9ZAW{2og9PaFvwMGZxwgZrC38^$G7)ImkHL5g3%rix>$>2?f-x`0FLV^7uu zdP4Wdq&z|^Se-`sVE~?sqw5&3t$V${$)d3&sF2Ud(V6H_>t5Umg$Y~uC8S2J@57Pm z%i3y*MMBNAxQtB;rm{HiLz}tfO|0+-nkV(4kxa{@P?`4hm)GS#U($HsW_&Lly&IsR z;LYrPji4d(lcCQ|7gJ-uI}^+7?Py&>C+D9(=A9I93|tS|5Xy6D6vOg#4K7{4A#|qs z`nS*|<*)dA522z8JpYuJ2vPld#FlRO=b!{9!fRi@UGy{-@c7jjZX2P-ccAJwyh-Ri(?y4HyK1%=l5uE3G9%I&vXwu1Vo!|e<5LMZ;TIGwl4LD%f7cpkRm^HV%6aL&dBkWb5D_!h z8*!*=YSnBkPD(9-lH2P1NyG`|K*LMnZU4sH)zD<-r}HjFINW>aI? z2<|8PyQ}8OU2n`(?lnW*{vSg_iDj8kbxmax2^l;i7<*qX#rj3#ipL;!RGXvphQKs; z)JG00a_J{I2A!a{6`YW-wdR_*Ng9&Xw+m3II%u}EaZccJPvB1^2VJsz1P?xfUKJ=J z($U90h~3mYzxckza50$mbcB(tz-x)Z0l~Y+Wrq98GxD2cGt?MRHS826m__m!>Noy8 z|J6W;t6B9G`2HS)ShPFuySoIwCB%6C>SNKtfT*lEzn({V{@u(W*rCX+3bGLKniX|m z=_L;Dl*N5Wk#PJRvZ?rWk8;idN;2&ID z!^?E7HT<&NYy#YSRWmU&+o98~ml8YPb;V@uQHgWF8Y_~U9+cM~9X72sG3BB(9>AI8oxNEDcB z%xl}W?cKY!ZQHhO+qP|c_pWW*wzv2D+Iib)|MYieGMQv@CMPF(o;wPb(+A+q3A75D z>$&+_g}(cA$12D75qIz=M@9ef1~fHMA9qxgmqJiqbJTDpF}ZV>%&Okru;!phC&ZMU zq*w|KsuX@A4M&`Ntb3hB_9vsC=smq3Jnv9Z33wT;K=N}iVPw!Ds3;h?(Cl26y_*d|^ss;=ST*@P&BqmS^6$S|&5qSCm|6B# zeS3Qs%I4G{f8*6b$rh@%eRd4n(-@VQ9&5NQL*P6>5K_=0E?o1V+XVnS#qdJ6nWY6I zri#Pj3XhgJHfuz8+|ofh;DRyHSDlQ-O(MB4F~mb?7??_ePoy6D6fmz~*7X-zvn8Wg zVQR-gZjl{$}CWM`gRb{4E)q`F7YUfn|-+JmEs6 z{nZRhTR`A+pa>#foKIY=zvP;HxZWx$)||JigI_qh1Z_$*vO%SmwXoNFhz?Gsx|wT! z^3xL=>b4*)*|*)=QqrB1${2ier=o$vpyx*;z{$77<)DE+gg!TjDt;~or%a2Xi?zL$ zUbNs^+q;#G!!uZ!09z;#4ktu#Mdv4tPrEo~TZG&?atlvZ4gRS+k!VOMnX2BfG_U-q zx|$UFrsjt-5;q(3es0aL0Lc7=pMyvM`GKE!JqO%OCFey+OA*5t>B-k6qst%@cE((E z2xsoH1b+-1l(*e!Xt0oqOcq4?2^x>~$vPf2z(|$Rm@Kqt+{Kt!)0TVn*PE`9PuD0s z_0rn|Bh9cV8aMr7GIF$?cWEZ6QbNDpm5I9~SIk!f%bl`gSW9eo8cq+gIJY%T%%r@G zEEi znE;t)GSer}^l#~b+E7SSGxW(4|Ir?{D@S<>1E9QYAt(N@C@b3N)pLYSfVq}J7ABbT z9A^o$6<4=Y24mp7&w;FtV98kTb^6xDyR!At4DcJPt4o!ea+gJ+ti>(bW)5y*S%vRw zxN&S^y02x$i&8Vij1AFHa5TW^iT=yULAxAT6OCF3=aYpbHeWU}Wy2O1R(N~xf7(WKiujQo2gbCtPs{LI^L4n z{z8W3!Hf5{)^9H+?PNpD$0I3=nR{9g#z50&9`)_YJnA6%}WRIirfdgX{~v z9*>Ui4^R7MD}_YtWliu@nZKq-=erW_(wIb*BzLl*(!%~Y)*}7yFaS#Dr`XFgp?;Kl zOK1PO>JL6UlgdLz6$YI?7}fCYH{}6F=uX;f`(l9Ep&e1MBQJF>-u9zQ^RuIl4wr^q z)QzWcSvmK&52IUd#~JmPQy&@I{zxSd5C`hzMEFfSqAdfdd)~rLu%?&{t0+kF^{HPA zW2*i^vk-4;Vm1a8_d$Fg;>`D>!sgKU3=3>QK z+1u7zo!h}5vKntY7o07u%OXd8Dt{gf*$7GPNr@?gO)Q@7t`v>IGuocn{w62H#ttN> zLs5|laTXeHMfmm!UXpe8vkiGoWtWjaX5z>*J4Lf}8)3dZQ?tO3t)EE^g?YUhieSE} zEg$ER2r=qBx3Udm+G+6qpn?up6@y|2ajbu?vhTNevW|dIks}5fo^3MwN!YlrDH87> zmYM%xzAcqN`T#PMM;*0INQmH0b2CJMhsdiy7oF{7=@~Jm4J1s(p0FDsQ(s+w1xH&F zCPghcVeVFccxVUf*6mgXbc*cB@k4HJHJ@$PIHh+6_pLTSw{qy8 zuq9}a|M=@ylN-Mo1TyGZ7k?dT`}?=xtbqEw^#sv+FWFxFsq9k)ywTaVwkWfkBer0X$E&Zi|y*P?KH7v~}q$c#Y=2+zwQvly8GdUOJj zB=SoQI75E6^fIXK{V{p&tEd-7>ojl_I|M%ZM*i-P<|(5FT1KM7&jx$jU}gv)|PSLUUp| zU|JX=@Ko_T2>m1=2KRfymUD#zn^#5wSIxp&p7QCjNDuDeUBVD1vz(8@dk_Q0&T>?G z%FvlE;Duu~?TyKMlZ=^R>$#*72nS!L9%y9-;FOfD`F*MRLj8x20g40^q_it#L6mRO z1=+y64X3BIq)A*pgrq-bjIBvRZUra6ZiKOZRLh^P@eDBd!*C$54VKZVjwk!(T6L*^ zl_vu}b2I-GL=*mHgTkVQEKpZM(n$TvT)xCW(CATernZq*Pf@iav$h@xiS)n#Zh|WR7&Km zrEP}llU*xwo9%`inOlG*u_gE0OBOFDdk(ey`#q3NsqQXrLyKm6==;IcFgT%$@tk5V zQdXd|5aS}Otb6iyPAHrURSo!a?lGtNm2E=N^@CbZJXQ6+A^={$Iq%a#k_{n7V5v5` ztz!1BtCA@KOsM?fxIomyhZ;2B{qBFKm=w5u2RTnlI5Rx_$UI(x+*>VAlF%{H4c0G= zNR=Nh8dJ{aRizSpl*)~~o*)o{K26sPsE^3Q^Yweb^=-a3ME3wK=RN=^9`29Ynv!*UlX%QY2x!zB5La3t)L;fqvW(Xv)6^cF^( zy5YC`PbdGO-=g#NeD3r*Z!SH5r|vk+A4{0td%`ZodfT^@N10S-)c z{lqL<@OgkAWdW4oI5+A6K=RboDL^KJ&(~A_m0{uUfu36t^^ur0Y6e?1Sf1u2O>()~>tCVIWYoUm+{C>islmdo?_C>$ts%KP8r^LB>|1lS` z<}!p1l-nd=-sRiivH||0Yb7z%4Gt)(NbS-B_IrJ&d2_h-YuVP}eOd1VtqxanRQ zBJVXVQx|@KIU3bzX*zyly2U6d^{Qhg43tl8gT<&|P(@ooi5;N#wY&3OIj{{63A`&v z6(nzddC2NdcC`OIk%ntO4PH7SYGHEX+jem@pOlQXHj}7xvpJs)GI22g-n4K#d<0q3 z6s3I?gsBcO)^_>?cOZ6b?&<^`#E4lLWM3J`3ccYu}c^$c5a zAM{Q`9W`3OP4Sbm4S#UqCPWAZUS~O2Af!6j<_N;79*lmisYLn zOGEO+0QC<8Q;wctW0Gd4@y)v>Kb`8_*edDF-*Y6KLa7|(rgVOxA)_~|J**Rz!kKe4 zB)H_?H?t>*DLVW#-nc@$0QRc+{}fq!78J-}oE`-+V1Q#evW>lOkq5;_j!vKPp|2n+ zL+475{CnLS8o*l>C1_U_6@9<+ZvBfzl>*Jl=f>*3bSM|3P1=F-%pymM>*FR{Hk`&G+1X_p*j_r;akKQCrSh zp!$*a%G6_1C^SgZ5c$bVhW4b0Z1L7FptXK;d}uuSQ!~x^qdMc&`R>O=>|o-hqR;m& zQ-BNFtglAQ2CrR@_=PF0x66iFh$WN*HLGNi8d7Xdz08oh*|0$`fn(?gjBd(?ltz5) zdOT3u(eYJr*?mDAuB8^-P*SsW<_- zgj&PTKI7PTq2Cr#BOMmh{3LUp`}H$XChdi~RpbTWClq6; zQBZ|318QC;WgpHw=SEJS4h{~yps3V^+G%sX?+~(?+Yzjndp3!ZII|szdE>m@lysxA zATBDIO>kaJaHN~P7cBI!Sf1J-AtRSPI<0e+i#^oD8JIt^G#t`-H7sG*v62;PJZR*pDHsBgTEQz?G97D zq#&|OJHDVW+QCKwI{rb^onNVRo#uDEfU;NvD~cT?NY2H<3zanV!ZZCzJ4hIguFmp6 zxhNTF!GzjXm@x}2Zw0cbc{max5aQ4MBO#Eje^d#|9Y%)Z`%j)UN9Svd7J9G!brAF$ z_&Bv4feg$oXu}JbfN@L3JpWXN2p;l?N&bRY2BN6s&j>gkE*4M@up-C7sMqz=#v(K? z;J>BJKDHgpZ3Jfv_#+^U-G}Arg)!751}vsm`V$E79pPm*6a%L8Mea@hu_{3O>?p{k zd$>7P%o)`AP9(xdTtWC{Y_^8a!kegQblh1%NwLSPvg|1BZLDf{ceDX&02 zZ`acE)AoCDXU}-t%5Np@R{~4-h=aRm=l%1xNG+F{=K(n(`3MjI$f#|mGwZKq{`z$# zd61qGYH*})*H6YN{akMmtJ^E8%(s{63SVAtdDcdtpa8Z9KSD;9)&{)xN+6dn3(qgm zJ*CLSw=p`E$d+zw{i0ujG?S33WG^N7hBG~26m>ks0x|cpKV-p7xdzv6?w!=>X-uBU z#WiAi5>vBYe(#bO^T}%fbJx5O*&7M&S1yf4VZ9mjGFO#T|G_i2*>w^e0$W$7%}2wC zaZYShQ&q;$Dtc#d3}cpkRZ@`cDgYX-LOkL#)~vUQzLB1MG+qiPP)LTutan30FS|3C zA#{uJ$a&x--v}wq)KD~8qRD$YlZrTmgPbDFm-n`U zuapzn#3(a1nSn7UrKb1Dz9ww;)v-<5Q?_Pb^a{yh@iWtGO|N9R92z8ba0F9e%3J2i zP{S&KGR|fm#w&+&R}Yf47&;KSa?(?i zG5T-tg>3@ft7A#blE>1!`DbYJzw(x7T_E0j78JS@+%)wePf!nlL?G-*GK@B_Bv^+E zwkNEQfL6GlS>OTfARrvXr6kp3GHYo1gA8dL!!Sb5-GVly!zG94kp6@Lt#_kKtOhi0 z5^`W9EswU|KJrafH)1}t8kvX@|FhnuDfH)$GVPJtAY)8b#KyRf_>OP&r^pl}1aE;t z?7C~H!k!I#=#TU167_`J73}c(=Ic$mE4xb`cd+aOdufXeVL_BpDNri`R*lifS3RK! z9S<&K_uu!jXtDYJeg$2`F5_XoTSF%BZ@6e|{nxXjZVml6Lp0%{s)vU5b`!4O-=|$e zKcIdHRrWhrB~8hsQg%pcb&!;B_yOtqlGka`r6L}Fn-KJT4%O!e5{Nm~Z$>1L@zV-J z6^d2t&l*h0fJP%l|1=j2B(X#R`h(eTuhQT$^WOx5dw4|R`st*ym+_-R#`r(c>i#cw zj>@^pM&@SOY5gldS!XBqAWnuPal4#)e!%vF4#$HUKU%cfUyh8_Mdb3Sirq+pMvrW- zUvzTJFVzGRRpLUkMPKWh)zP2^Wt%Br_JkNu4WtwmGT4SNH@^M@YqlWwrvC&qr26^B*wz%8fspm&Q9Cp8(xFX4v2LEaiG0G`!L`xUfiNi^_st zLpP_|nYASCLql=RBCW2NvV;f*n{c*d@LACk=jDO$Mbe9)t?Rd@-m(^ZNkMnfq~r1n zMNLi)^O^>oqOZNsEUxT9k#V88_Gj@>3IV0VeKvxxkIj{l+mPs*+R0BQn(&C|2~Van zQOQ;^WXD;GRNil}g5PD;lwQPCn`5XD;B6xY(4vgqx&DwSyNSShMh)RT@Oq7xV6L?V zi}DpFB#Xrc1;p7r0_M4B-l9VJ&M98f`Cx!WxkGMfuSsTuQE9|(Eg;%S6R1q$OKVJ& zOK+Tj&$6Tu3p(voMxybZ<4)8fI|sQzGnptb)W#`S_^DV~JeFZ%_i1^bDm};RQhoE`U35wkbZ$IALI-i*0`zexqeF#-o-P z8u@hRg-_cXigFFO^yq{wFbUt^B*bm0op#9B;D{tL)?58?kuh)H#Wtnss&u&meKP-4 z>I|$5W3;uzp`WIv3PCzhG$cByBKlV>a}(&B9!ibGaoF0T3xry^hf^nK_l+x|Fw7e- zE;69nmSVWpLHTAeKIFg4jZSYx`iO{3{4G_Uv{d)b*ni7Fi0ax8gkZVh?Tq4cg{aak z%oHoH9J=3#9kThYIxgxZ43eyyn)=(MJ5OzN#fkf6^wQ>$6JTDeNuCGZN|cQ9Mr4Ob zVad*gl(WP$o{_8l!DkYGW9-~HP6G@(W2CqWlJE`H*~^4^^1E?55LLTptFkL2Lo=K9 zLQyif{gWPxb;qY|PsD8f`HSZj{oP1dfpB$2Od24p5>5deG<45g4Oz(JHU);PN^qu^ zL$wxbY9QYF>hsC0fRchwK%7@5DTX%3oxY=<=yYfBORtnHv!6a#Duo`KbJv#!OnYB= z9u5{?2Ezfe6p62?7m1^uw%5OvmBUCgg^a43E2aaSJ&kLAEbJm2$~AuX+g^BY@#;a z1e1~k-1?xoK2kW@ToyT;GU*L&ytL!y7vs;K^{4YT0jefZZw~*gncvR_w=Y@9=^e3= zl2XL{Pj>a=Xoq4@+&k^L4SnvN z+;%0aP$h+spE#IaRdYRBD-76$1ZyayubcFfTi(zZx;I+)dEFPQPE(dRBr@_d2wT5| zT@uBMucfT@1K_V6JVv-6v=T3})}*DjXLAcFvA|g~9)BK5!xuMVz2c=)-@BEAZ)aCU z*&j?*ucmN9>b+h~*g&in+Cm@^LL;WboZ)4ndqnUtqf0v*T-7b6Zt&Jgk*0X=8@WZm+X{=v&v7)5z zwgWDSQ2L8v9dFiSXh(kDurofR&;_jIoWQm=a$uJ0AzZ3 z)}hkuY})Rsk$qxJ_lyk?K3)yk0d7=RloPcxC}08p$4yG9)$C><@`R;+Hk;`)e%!1hzD|Qo9L;#`ny4-1>a0^gF2UN)gQBc-CO`P z9hmJOz-ulJc0v+A#YeM3_qqMb9=?|HUr|}fZua;GCrKj-={hnni#O}2?_uxrR6Q&c*-Y~nfT*I$!|LInr+7O~ z@-%%wEDi?$bLP(Mcm_Xx>K1=13DaJ)yc1wZCo0(EU!pILwr76pJd(*HQ}^b!T}EK} zxgtMyiCU-%?^c;@vjfbV5u%@TZ5^ZMuZ?KbZIIAh^~s3_rnxgv1M_Yn)&vAS^2qj< zi5p26EURxhF0iIY;2zIyR2E<0Euj0|?pZ9zMjASsF)o1IEwJm5v-{^p267n3H>=Oe zp6(Wc-c3-8MxW4IsS)RsC-AfDt3xx9pFT4yPh)jz=X1+}syTp#>XP)gT|nq*=}bBF zsvAZdBZY6g`Rr2IrsZ;26Z7EtgmbS6xX`slCjFbt;PUtWWy|X>P^{Xc5jtF3jl@Y~ zM|h!^t;BNlVKwFfC1!T?IbYI5bQH5c0HCtU27jP^HlVK|DaMn12xc7_wEgDfB?@nb9?{b_sRF0xE3?=(*6@vPb+gPBKb=d%fY9$$xT?}`0vuK_%`_j1 zjh$|;Xgrcd)p}Tcb6DcBztfgL|63VWD72(ysaCgQbT)d&%fRfPegBx`+2x%;JDRQ~ z(2;!%?Yvy&%1pJ^OPkawCk7E7v|q7XXK5#E6a3$mTuDaqX_FRHnqCTMYpOLRH)`ym z>TXxbVav`yE-#b9hv6E}H0%tD7S3Kn35g0A0Di+`5x-=d*$im+stE2%$Q@hf4Ph=n z^&U@#$%;mQgezryQMc=kx9rxL>K0}QC*bpPo%D7YA?h@eT>o706jsu*{YqK%s+h#3Z#KczlsRC4S$yfg_Imn&lsXybTkKqLg(|7^ zkZWn6OKgeVX=(y~0le|PSx5ZpJt%W@l6sihdtipf=U^q{WT{90%z25w&A%8#+os`$ ze|@Idh0PignpeTN2KmK+nC9NHp>J!9%=Q5QMLi6CPGMusD!wj6?8)n-;%DIdt!o`9 zYL>rDT?#yb`Q`P^*|Mmhim+;T$p3z#7!^u$aOh~J!ngmsw)kO-`?ArqI4dPYqScS_ z4-n|rxx~>mEk@f1JetpLwtg$2k2uW7WEnXX3m?WfZ>ytAA^CHWP_Ov-@BYH{ktx+Kf5!BtRhRD@pz zY{|7Gr2r2%uzX@Y&G8f@mUbTjTy29WBQa!n8y?rbY{tDFDk&GpjZ13|s;Q5ucP=ns z>$QpbvpMTV1ya(nV>#AOIAyi=PoDLU*DBnJ(#n0WI?tPe(&=jNFRK%Sa_#V_T+)?;5` z`Y!x4!Y!n=ExrHF@{apFdT%klNiQQZ|B7D~8ZE_~Thj6S(`GB+%qM?u(ox-nyBM7} z1eKS=6F;gE4UgcSuU+uPRfkRMUgm8s?Cbz1Rp)qs;(T1Mai|OG^}c`;ghuKC?R=Qo zBQMp3KFsySag#}tq@dH|fuI>y_YXV7^vm=f}B1N0j5C2GRy_$=DYLUjK})W zDJcWtM6oTTV@-4&o5Mva4Xk+&OXML0Ew}qayEFptsRchNQmd90Y>DzguG<@N#XJV~ zFDRnA)?_PR(s6TVQCI`LYQ&=nAiqI(wg{V%8w(? z(UaNbFfrGK`XrKcN}y%EF!3b=T#qqyE#sbouZJaQQX@;baJ3g^FX@ z)8v~t+s+zojCMb?q8t(x`3HxH1zCA1Hsy#j2pE$b4mSi(>;vuhr#G4gxYV{@y4=bV z^K>wrO%giwS3_fpBOUnHO$WM0K^zX%v0MO1lyo>pHc4gEQ_jr%z*kuyugStJV!NZr zKhv&|3`m`+KHXSFbi%X?N7dpyZ21}p6bWk5bdO!pF$SOKrQ6t)2>0lCfq(R|} zlzyX+2F+IaRo}Ny(qWE}^A_BEjpm!~y1mNT={hX$#YPH6llFM;#ozQStD91BF=W;m z;KA~s@vv&?PHMAb0dqcu9CIcb*$fYfUFskz+~i`dY%x1UR-=a9wyeJ#?#H%B+|&J# zgdH`0Oj!=IrkczKG{6i9`_RN1LkIASyMSD=Q}9Z)SufS^WpeR5K`mhUa=k6wco^c( z{2pIyR!FU62W<~^e2UeK_CTjUGYo)?{@v@@_nHT1xMvW39euV%+`<7_RIMHmO1}lq z+1S;Z7wHgn8;3}7f719NDOaGx#eBF|?WJW$-h$1O`z?mT@8D?S ziy^4?)^(fkvo$fNy9U_F`zWuWkQjzW&(xuCu98UrNa`MenET1vyvu-`@cG4y7T47& z_DK=5^kBP(=&`$`pkX{``XUi9=m({#^#a z#hs~SDiQo82D%j`dBjJQ={{-0zfPm~e!*q-)^zjH;W8>>DXJPF6}KS%YAZ-BC8~2x zM4OKo##NoR3o8Fj9Qd%diKT3?+xFMmSBi=XRggR?F@glmPLK25OC2~9{7DWIH8T#O zvJ^D!m$J{flAFXAf@WG$CNguNFcLyU2{8wLv^9fEh)|I{( zSh&SXk6M1ZATCVMK~WKNEEL6ki2b6;&3iVgDYeloI!&&*6-=a9XXDTco46qk zjswz6!_nG3=Nd8^b$bgzeTq()QGmrPrg%e^rRR*y0%Q^kQ#K zr;8oCIq4nl+-MK*q(AJ_6{&cp=A^)g-3wLSRYjPkU>gg8lT4u8n^GijyL0`F3F3;29uOj4bDZfVZ2`|61fv2kZ$7m+Vhg)}YO)om>|WBFxlkMMuNXFDj{@c0yQmkE0B0jm+H zs@`<;GI)+Y9Tkf;Uy{Qr`)Ar(lF4pMr7r2|rq-|Y$DM;v3Q5`V*WrA zoQq5O{g=s1*&=;R&K)>BQ1q6zSjT=>_bt0@gXQ-+gJ58utZ&A|--Mcuj|}*1Qcy0) z1du=do+)+xQov9zbY9tS`f3_*g*uS-8>u%0BZGu*c< zABxEsK#!>^;k6l_qQ+ozAI@q$tc`1vQx}<#-c=sDGHx3r*8oq~ibaTB! zWJBKxa(mp733Yh}K#_WE*d%p>1~9L;xAdF=a*2d@tzKS>9aba+9tVt@TKm#V248#E zFjN7!M8l7MHQg@%G_M2QMii)!^L6Y-TOk=^FJftGGX+TBmuF4DeVMl=y!Gmq^Ic~~ z#E%4h^7%>a{;h2so2Fbgf6cK9oQUOu@OI^aNi>I!Vt3jGJXVBit|_3PB33!@gF(Hg z%T2ND@TZ8+M9wy^0k9GIduoEO2-c2eHljU4`~X4ppalB|&JN06OE$qTKu|w^&k8^` zDL+JwSwj>j_Udx-zT+~|B1pB9B_;R@Rl1sqj+k)z! z+I)Ot%dLp5xXpWn?7Mi)AhUTJ^5tF!f~t>q&J&||z_S>V5ZE+5{mGi^7Bmjfaw-qiD|_MabaFg^Mnm~izOTiC(T9T16J`=pB^lhcS2Xk5+@T>L&&0@`iP@tgwU9127gjXGzDi7)je zMJHrfR?%jFHq`IyASy_X)-L5!rJRLq+XGW1(Jq0vZnSyS(Gel#Ip3IgFhuyKRAgxl zTA!+%O42JJxE;dswn$}480{~JZ;~9d zjhi2X$e4ET%Cg^>6x?|AlnakF?Qh>yNWGAMzL5MAhfu78?=>&jO0kPJovBxm;;jfn z0tsQH9#LT4)Nr0g>cIKm0*Sz20|{5Pk7kovxQH(Wm>rfG>F#4th9P6$h%$Na-9wq^ zQ)DoI727D1SWhYYxcni&r-@Nr7>pyVsH4Vp&Pj9au}?B_zvDQvB~btut-lPcl`b@> z%fgNZ^qv(bv4v>|_1RN<Wl3~^&m_)!d07b0#FF^6OW z7ZCBcYwZVzoNF}Qs`=?LtS3x)w8=a2r!hJ6OYPSl0&Xq_*nzQ$%P^6cGbs=?M}1zA zQ<~sUU5pl=?cj%87+(yq?Z?ykPlpM?UQ=k>7a&L!k52r&N~COJOqtTax5+-xVO(vM zv+4gNW#P%MyU&jz)15z!ZG}6YgKzfH7BV$*^cPiXX3 zVu5!Y=8ckj24~egdXg>#43QNhE)Ln|3aQTP#pHl`_O?nvb>&jvlj&YM@}qxFW-hHm z+}JIF$cH*fOZ9-gF6hJyo$upR9`%~awZb5Kpj9HQ_*t+7kHQiFu3dbvPWpy8)m|-( zc~Ds=LayHrjHSYWLP>6@Fx0Z-^_knKt^HUDR&7x0M2%+({4lo=dOgGwG~zWD7$?0d zVc+BsNIRlSe=`>tqhu}zrlM!8CvYdlioFz^EpZOC)#vuU0%4)QbNqt~-K`lu)#HX) z8BDO|C`m4K1>yFp#E|6NQx+5ko?RbCx`j5RNjXzset|-ij*kyVBMzdF;J-IoLoL~q zV1f#QVYt5joTwQP%!cKN7HVJgentjpK>CJyU77*|yqipzB0PA~_ zK-g~opwGu)h@W853L9!VRab_V`PkJRwv+Lue-wc;j%BhRS&bX-_*I zakry*ft_OAI{7K4$8Ha|-=TXX>%>+AQ+{1ujXL>wKV?4T?fI%KhrkW9R9arT)-01$e^oxYr?$ zd2s0-@$39L#G<$Th_5o#0*Gu!&9QwrDk-tjoR;H$NWL zLrtp;AU1K-ps?3)JQb2PvJ(g{N1lQLh)X(uY`V=J`}7k$t(ZE5=#Iqbu+LNE;B2V2 zkeN?MLHXhja^UXKV^CL%>ku`DPe!(WHzHq@_HtWp3B9=@kz#8G(K}PWX8$fFDvUo+ zu(ra4**bg5G3@$~7$QnQP-bGnFU%+$O^B0Vz&fKiNsHSnG4|RT5lF0?CQ{$GyKjCaT%O4jS=gX#C8x0pR2;CEm$0rt)wViL4f0B#n4*%d>ZqHjTD&4NA;!_QP zf&>SG7|`A}BkUr}usyXE5^>$y%n^*|aOc1CRylB*_sa6!r5gY7+~IhlygkD*Nxf5> z7%GL)Csty1FY_}bb|$>H=?1Ni@@5IeM^&c;dH^PDp#zwjNpUJ1PFMWkrtDO;2f%eBF%o;`YwNk7H&)W1+2<>7J3x#Jj>lmZmGPLjTSI2Ih}(^Ui#9~ zK2#roPsm~ftmw7l#&5UUfMr$+UpIr2Z{&1owAralxF{#8RDw2NKZH|UP&|YmaUcL< zRiB(^n`mTTTJv^u{{6-%YrJLkm`ucoi$yg#`vhln1I0x}m~b1MRr*(ADWIkv zya=+%CiJ`V1J{yZ`#$Q(AgEo7%EEOE81xt8{=KT_mc_K@nu5nhwX^%@Ru3l1TCLVaxXVdY7xxM_)1xQ0@c zUa-51-a0JkKtd4sLHhh5%rMM1rEL0O1UWiUSe+uu43vewdkmf@5RzNKB>`mtiR0CNo8>*Q_eoG-PY3E$mOX~chU`R$Ty&;-KuqOE zhjwOpca?f4v+1#W0!#WU&AXNv#Cc2ktx0t3LQQHzEColB@^nQ%K@mPS`)qLKZ%m3x z!#}Aj})?&?jBc6j6aez9LUoa<`2q(i9 z+zipjxrQMB|L*O7aTWfz^Y;IytAqTDjf{Kt3upO*i^J{bPD?H0EWfKJf}4-JE+ zDlV0I{`VOi9-_vFNI!o}CD$pnq@(V0;y^+@6lDxXU0UK!eGO-W%|n*ZmkZ=enS^AR zNVx^vnS>kCs7=cyL5_>>89(^kgsnbqWGi%%e4PLP9QpsR1@|9S{W%wt#DE}QnuHh< z4B+IBS^+8%QQn^kq!89$27qk5HPWiy$#1<+WsG(4kot*6bistMoK#U+txn& zk<=VU`NYx}T6DMXP2&@XF7w(GZF1MBz|M>_U@;%-Wi+`oUXy=!a1qu_H@-4B&j-8Z z7aFWf*Hm_Zm@zl=j;z#ST$!JW8UthqF#wiC9y++d1OOf23=*v1aZS7pik_yD`xfuL zuHySAcjHN5XkB)P42Yz}BA~D&TqR*9i0+yGTKfXYW4bxmQmyC&@*%mm8>1a_rO9jA zl3hHLc^#r0B>Yo(+2A1VbkH-jXA5z!FAlB)1J5wI9S z86XKcB|;+)lrQZ$E~HjyhKjnqj`pT_(teg2xDxJ+JZwKX@Z4#ocYI^nFqSfwG###A z`a{?82-76I`+5g=Wk(KX{j%d)Kl3h|7#CtF>NjI_AQFflP#wl_RZ6u!+X(9l$vRa>PCh+SYdj0OYL&L-d@+VFLWHxorb-GBjE{vz2U zipOXpbifqa%PoKcKzX$}VLi;hV3dY6*bhLr4N#5#=U~!AZMhX0d@ZZAbdPV8loN>B z2{QDswVIR>caDBwyAZ9&Z~)_o07AX8 z0u)Mf0b!Efq+hr&opD?o-$0`OoyieW39Vffj;{7?*#ti2RK*z|t#fVeFWoa~D(%M|n{_aCR6= zlK!5T*^RcWv|BZhi1wZ)L{jT=s}#D3FpP3zMmJAc_^8a(1ha4-gd#%(V??nONbt2@ z2YGPR)Jzp8m-PqP)jS#12stn<_Y$f;kp;OEad?kNxECis5S`Mh5QiM;c>9met*trG-uGW4fIh1bQgGh#w|>q1pa z0fK-C$Pp?UC_hABA37i(Xuuwo07x~da@g`8GfL4%9QLs?Aio!*S1ZubW%1?bS0+aH zS$Vxxt5^b*gN_x)1K=P+;%LVO)2$bfg9u{+ZT6bmpUPXNW>4;{ z`*IjJxEmNMWyTBB?r<+2f+6uZ&#A0USsJk|}^n_XnWk_P)vOahoHPEME z_LH5(2InDZb#129>{`>UG8+Vvl9^u=a3BZ=0z&ZjE6FhOqmHI(M@j$y4)AzTo|B5k z8Wb=Y0?sz}XY@0L^&h z|J&>+EvYy|@l6o=GZ+NpbJxU*py_RT&wQ ztXPSy#!@8AgucR#bCQ(fR~CaB$>?zNR+tIQ8iQ>jf@W#JnoKp93k24ag&)5_cTu^D zqxSU=P*sHX{)z%FM9u)Y6coW0G-B6upBW>E`GQx&&8KjcRlQ!(B($#bhr2V(h zIZn&Q;m@rUaOjG2OF4yO;6SCaZY3s}f|DXtus-#5JWPq0vJ0KMl28TKi6yjI1Av^h zXQ7X-`uHh-%@VP^`*x~DDe43w!awX%iwZ>j{efWS<`970Ue5{-Xtc#<1=NyX>iByMmp|g!-dDAEZiO%w8ll{ ze@hyA=VM);3$av!yv5OnK`u6H7jLRXvNqa$iXeu%2CA7Ox2g{`U>-*M66-~H$E3uT zlwpaz*Op_UAyqi`e=JQ}XLD#~cK69M9@%76b z6NvTOhk0`g?d-9RnS(sdXmoz#y!Ji;n4^B9wVkPk64}f~%%{F<%yE*(HRVX?fxgu| zV6*4{C=(l2-eyupoa+cqW>+qRudY}>YN+qN+=CKKBeJK6mHi`uQ-+7DY>b?biV zx9XnvRNwAC{q%VrCVGKEwaVcsk#R$S&@`wXgijo<`z4Ez&a(|AOCUBey=Y5jAjIDR z5tsR}g13$h_t^>*!K@BtcG5&_0Zu5Ba8VTWcwXolRG!Z2q(QRsE_-h5e#_N!x1_+U z{Hu5cgOT(0U+L6(WGH%DUh?_sjyvsgkl!icupF{u?3u1h?k8|X_Te8~tdQujP6YjQ;ido&`uUDZiQmkb zSy$3S@=%vc!s%1)Xe_(c4?taflKpf@e&dPs*YUlElJ~Qgb8*|k3 z04q+iTV|GZIG-o$Ld|wmmr_u2#(z5McMK#gPCVGBa9LVCif>MBrVxWe!kSMfGEGLJ zb$U~RDoMgQhz9}11TGaVNkARo5?WS;E19B}))H zqrhwh$|XZBvE>f`a@KH@pDuSdYO9zcsH%9hq$@SD^`Dfr!H}`AK3%d{wK6pQzX-Af`4jvw^F0?_yYwqUB^!1%&|g?<1iKY3|5sl+{xi z-*oKZ#LPT57Sg+zP{hCSE^KluIndWOSX3cCvZT{BrKJQq8zeUTdUS8k^#741j7}RB z(*Zi^`o$IZy>B(C=*9u8$biPek_HU5EJ&C3Ll=h`lq4x z#sfh=wdV5{wiP)uBcukc{UdWB5JkeMYY5!gR(omiFLwZz@ImwA^HllD1)Aig<+)Yy zWwhMWp=o$aGr0+lxwDl9_Z2cItAaHv<5+*eEJ7ZJFEtEBgjGdUy^dqzX2+$YQCb8R zHL2OdBjs5ExZqkN7NY)(HN`EdztlC-84|E~ZrQK2hK(88%v7RW(bzR8UPc3LZ|X|A zIYwOANsO;qVnNi55EXo;38It`9HD8$uM#dHPzaPR9>8>Bw{Ri%DaQe%aRTnX!=DV0Dq!!>C%+kNOE5Y` z3SHVPf*i?qG5r;A)T(;EMR!tCQ;dxS6lB;GqQMQQkt)bFU;wo`lEP!G1E3TIiey<1 z3Y2!6w+gzCo;``Sm7td&+K?F3lqG;k8B${>*)BJP{g=!5N~4Mj$OEn&F-m_}i?0RB z!iSoL1l96t~yC@^8L=K(hdN zn@0&ta{E{TB#pE65mKq7zhEA&y#uifr<9V#k4q6DTM;pcWwF4l(u5lJcXoQ~Ft71> z_LK%!F?Nbyu_p*7CSCjl*(8IN!rpA1FHO!S(Z}(!*@m&STgn@`luqt;DqbUz*;T%m zkml&R1zqf=IXOskRa;%Mf3*XeR8L(i$HCV>IbE&VdlDvcikN$;!$s!bR`a0bN8!{B z7HGEW@c-G()%+&4o3ujyCNo}$-``IRFso8tWNq?Ti(%d1*!! z#A9?d$vKgngD{Y5ax6!ySn^QJABEDG+^eitA`*F+6%;sD?!PUY`=#pg>3bjvhz*6y zr;!a6mI0T*kx9$~{KG_BJrr~uJ!>gRUCOBB$!EuHAC1TV5N-As3S&LGb)kDOt(806 z#LQZjjbML1*WcG60h8{CsEHxxcq$Cc`M0XOqc*l(0C#Zuc6$=S`_wae@A1c5mE+)6 zN2%#tjW>>!i4_DhRsXfAB!XbeBrjL$;ICt?xPbcTI|P`kPYV~>pTAkFxp=&Pc$R{n zebsK}I#&(y`ZzUINRR;Ie8isU^qFYm!U@5@X1P>q+A^uVEImv#G3Y3qulY5nW=ikk zmYa@z)|5C2ASn-rGAia&o0?kW{CBV=Z*&uWrfrb+-pGe8%nnrqIFP5gm_fygFoLIa zi9__nB%ZPUca#UUJZKZ5@Xaed{ITl2n%8CZ=%ar@H`%A*Cd1lM(9bj3Em%v9a!B1F2z{a|7NSdk;PvZ^C#r8o8`x?O%suKML8P9pfqEW zgcxjtclhkj*m`29CV|T3NL8VE1)gT?It%TQyygg>HrlCY zc!n!uCfI(cAMz%!tU$!s*Yv$%Mk3?S^c}HsJT1@2ohL!h_)4)Jo`+P*gr210P-tt?>(&Y~J(nD5SMv^2Gu`TsY_r$u!WX#j%i`%X z&M9-yuvA9|D0hw*!&7J5;dTH(krAnXAQM+Qgi(P(J|8%PDiJ^)EP|&OjCsLA|50C9 zRd%%bT4rVN+BtC0H~q-I1{!-(R;ZZZbVGxC0}NBy2|o97rSd(8n<7S%PK&7nU+3 zC>0eBrJ4VXu~Rd7$TAI7IXeX5Mj+$OIXsm6KGIBc+159^ygz#AcA*xP>BiKI7~<$E zDI5%qY%kc@%9uLon?R6*?|Z(a%B{>=k6~DB;QJemJAa_Tw&04DdDnaAZ2k)5zkU(^s`Ff2|<2Ss_Lo#_l^K=WpC}?it_*_ zsDO+MY~TQjia#g5H5LFRj-Tz`CNfKDSuNy4yLQKrgP`-k`@hZVjU4fB@TXzH3Wqp# zoAnnJBF6wdRFVKog!z({?5BiDecOi%VFj4|Dw$Y`l_(>}F_Uj&jKk%45E^VYW_J;B z7^4L*)p4^Hln=<^mj^KMh={*#`WpaQAyd&@36qku*vX#Pm`FqMT!-E(xn;pBJ_ z!m{?V&UgwnZ%h;I#Utsj0g4)Enzuw4Q9pk@a{CpucWE)y*4-ZRf8$T5Y~872a;TO} zOit@C)(?S#?Bbv%Y9UdNq^#)jVps`!-PWE@vEkdY2{leD)F<%@ZA8h3)U<2|f9=}j zk^_hw*E_4@ZGFRSB_Z+0fZ8}*)%z*!8);d5Ux;HSw$KMT=#+)-m7V=e#BHM8R)_ce zZqYE)OtG<7Kh6Y3iG><-PKfMr@tO5^ebdufOAz{+%6FOMS$D58=!6p^K@M z1r{lEH?V4S359Gec66%CPM^=KR@QoTb)YwwuF5h;$gV6&BOyaUkU;ti2?^*(N&=9d z$8epl-smSg5k8u|af7QAKzMn&dY_W?Z3lG}cel5Slg|J1xXuWmQDLx=pafB+jx-b% zaFWa^<7cpJ$`7~8GzTi=V+CX!i5*5{e`;9q=^*QEdHG^Z@gfzBSC@M>ObGh4O+M|m zLeHX~w;EO=UMO8M{x?rRSDp37N-!y3XgWz@STKkD@qPb->t;PZ; zVKeDnb@N^%W7J1QqBl1c4~9H{$_Da^Shc(z{L`hjl~LRhF-`SJ#-Y2n>@F@m)EnR_ zc)9lG`;22s>t0Qh4*o{A2Zjvlj|CCnP+^rUu>*VlO_B6XEijtEk=Z97ju~t@&@{N| z)Axh*U=E(`O^0n#Rg{%xQktbCVO{Facl=lRXbc|{QH(c2shrvRH7ZaB2#pDFVBSF< z2cV$!+6p?ct2~{2WK9%$aO#J59ifET1Eztvu!qptzwx&8@|x!pb&mF`d{U^1mNV3! zRfk~R^poq^;M1a_0NG$!*aZ9J%@~>Y2w@+wnaMDptf*eo`x5EAutqsM<>bLp-iY8h zxR}|;9UDMQe@cbSI_4lptHpg|L|1H!R1Nyg4zpP!mq!i_Py5^%VVfkAMTxP!j#54A zBFo!4?lO|8G#*cHsu9=wW?XjD_*eLI%8XmO&5$gSjz43iHRu&8Tp?T<%9^n$$ZXW5 z_}m~KhY|Z%PWWLyU}=_}l6YaH1O2u%FsxKlYWAx#AXlZJo`+{r~u0WOP2W2(4QH<`tW%#4WFf&tu@P1WwG zWAu8xm%ULDEdRB;s1)v}*^^Tll3wIuMpa##np_`Y1vF$TbLUu1Z9Xp!RP9dXq~?lN zG8c)lW;I-@6;25ZBxBi5>gGCmPya|My88McBTu9X$}#s-L4y%rY92{H-dC|TbC+U^ z?Z(Q*WU(c!@%avs4am;Fc#ic+icwZsEn?q-$$$z_EE+n{L8ktGIy5Y3>+S|k01hJ@ z$p91CsB;(N0@2SS4Udp&%nB|LlO*VfTJOfu=MA(=7()9dVoUR~M~QSKxci4sdGMUq z93I|xkNvP zQI-L3ABL*(zl$rdG%rXW2xm-Vi&9cT+*y94y3Z za)211vHtHUJfPYu#WJ57;E-0cggk+qoGKGm4E5)k=Fe2sG8nb=ph##PDi=WWX*&WP zF8#=b$7V4E_gThgI<8vJ+Tmm7?yr6=4HXBhnwT&@jFt*zmbKO_!9O1$xZXHXYDran za$9=PY{d&BviC}&(%x8-R_ZK{JA~$0#F>Y+Y1AC@kK?&h(s|k10rg!67r79 z>;2Ip{Y&A2$h1`$I9my|rJ2DO*x{%%u8{oDR`eVDh22E`7XX6@y zJXu~%&K@KK^!z) zLKBUIUnnlk9EaaZZG7cyvG#*y0gA7KnQD35`~)bT=z)O@h}FA1N2IPqef&hT(_*&Kp|AFqXF-_Q1b6s1k}oTGbSl z_(lWMj|#cKLqkaX1uy^_MgR{TL&dfg_jxOI3358#vQEgF4U`+s-AvgF0-h}u$<;S3 zK(mOnw}qls{=&umpE#flqJvUc@7^5=)zxNQ^D(5*@31ZSA{&fVx9El{0&7rZ+)6k; zU(Y80fB;U&ICal{BnrFHb%$7eFq>Pw1T5ZB@z1cqT@>uUW8WICh+kiQ{-VHv&?Mw< zZ4){ua$uMe%#YTrII|0R=NzWuo&Jb^N|POy%7MPjCggh^p0B(8OUp-sZOPwg-TqZI z-xF>~*(#tRY^!t6!mMp`{ZJ9_=7rVVSIBRhab#9q^5ybd-H}xG-Zd`LesH$ut@{t} zPi56-c0dZd!BH6LHmhtMu5z9FvrYxjH_#XTjs(b)S8Z@uhJF}Y=FJ-DFp%&*stg7b zS?bQm3E|5^#$G78gX#daV9@A}So^cK>vz(^%H_s6AW62?0BR#rfC1=8Hnku%)f}X( z@vXkheNdnNP=uhev0S8`G7rxBd3)aL5v`)fy5Iv~Xcwhwe#jpEr~3u7ArqoxIF zE_vByiR+r=+Hhn&&Ix|#`5;svPpA_}19Nnfu1n3O%=8NB5x`okDT+@?zaW#s*k4mt zVm6}UGO;Cvas(vc*eDnK5B7{*=tbI3;(37EWPA zWNGX1gqafAA}Z0=c+bw??I(I8B>2CA!2q;Bk^JetWlVDQGp)6# zZy`2FQSpM0gQa*y)nqyEVGQe5l4|{xwgog{IhU!sTbaFA3G|b*GP!EYq4$%##tc3@ z&5F(?C4pPh*;^bh!`FmV-HyK^u&%W{liB+z00kcPJJd)}08j}*AQ5B8C|bbpFxA~z z9sCv4zy4q}5Y4mNDK;P7v+lT!h{pak{;5rbg@Iu?)6q6G^Ekix@p0*;A8b-KL|IzE zse$%LK8CZg_6_rBsLWeFjGd4n%<} z=ZjK^kwGin39Migk#WsAkRC@!h57$Yu6|WgN8UQS>VzTlK0fiYr&6aR%Q09bJStX} zz~1tcSPTXQrAWAK7<=W2utcG6t|{t8#{5;)7(o!KEeW>{KCI|pru#KEKqqv)Twd~^ z;`Aa44H2l&QiacYd;0gxRLUe6BR~~R>JVDYLZ!IK^PNZU;`NK;=uGI`APB{u-G1z; z4x;2;`|#P~(U7QgrXy38M`n7M{ z0NSL@RrhYvY8XBB5NP`_2U_Fu2s$*13fqR@0~UT23GQH*sO{*Wn{rnr2J;M)@T#XX z^6QK?xE3)@tl+-R8zTu!D2Xw$N&l7-!SV(H80+$E@JVBZK@Tp;I*P^^T0A3{c zI)eS`=~Bd@OcsyvFox$JwtHPFs`^QmEQ7)Z${-t zrr!SEcHcv)Dui}J91C>W-=3)Riqk0Vw=Chh%AMvf1&tqH1qpryRKbb)eFq6skES5Wd%dtJ=V+b&*>@l%}2+- z=6)%b&PGsgpr|TwaQ++sfk-zhc^qIX1_kDe^H2b1oioP8dNeE4z=7ZZ5~ON1QcY^6 zKL*7pSY6b!0Z*SM?1diLV$*EV#?2{&yGA;6^W9Pf_96-y5vNlzo!U19Jo(13H#0pv zY$?BsP684I$0302xt&)qKdhs3REUYoN(u7Z3eQ(1ZT03#Ewm=lmAx_7pg&6Yeh zXgbH=d)TpAka$ugr{-d0)_yG-k*1^InA)PuFtyccUakWxwNyWcYEk8`~e z46F6r1V#-|DZm-s`-u6@|E4#m5m74-H->QMvn>~`E<Z(lX#sbAY@G2srQd$?aY5 z9nWP!+IJC{3|NIeQ~|(EN?=c68nK*qLyyOQCcC0BS26<_k{#RS9aNjo-Q+pZ~ z1_a!HgFWBR!pp-kflGmp&y$HM`OmtCYIZ$n=G3`}Lpj4h<3=zCL?NL9{fR};pL>#3 z=E)~On?V%xWDT{N_s)yR7e}>I6``8?hJIddY|EiZ^Zkj3D@bh3QYLFiiPz=Iao&g# zOosy~>hq;c*RH4w6;znaCa&vgDhXC~C+-n-O;kwNkCnSPGB}PAA9n}Hz}Z4Dd%EgH zH}^IDj!a*@Fy=}EC|31{Q=r5|h7$V=DS(#K=~57nFtFx7{D$b9-KKZ;S6%W4)5TY8 zEW8LN14dx8w7J(Ak8Lxx&pS3&;!ZxuwaJ)^`jX4gYN6*-MCBTtaxSj+f<7NEFNgl}}<)LBA3P@MG+Zzf!Ze42M1DGopnh*HX!j#zd#C=Ws_R1cM*y zU12%b4&?INiIW|ZkDym--G1q$g}p3m{@&FicyCp@`VIq4Qf*41o>ZJN4%8{)<4LXk&$Ec%*~i&V5@yBb*+oEwXZxNZg!=4K`5A1K!@t?^ zgM=R$;5-kO`og~CQ5q=Tg`TIsmB*HHkvoi5LE4-sV&+nMqv$Hmh9#Jdkt%b=Rc4SZ zs%WMVj`rn&cTKz)vjW*SiW zG;?0UI0MQ8SqW;yK{ZI#2o$8SU-LJ<{5uNs(kRQ%vh|9U%EkQ%fmZEXRTgFNe)+$q3YuaT}Xg)?g(E#np-DN05tvIvjoe64zb&_eT zIWs&(^T!mrwjmRY0XiD2h#@o?tKzfc#qaxXHGov~o?%aLtQ9n{lZyH0xB z=sr^Grjy%PLTHC&kaa*LHK*CZg%>9lry6`gN(xxreT}h~3^@EQcphe-eB z%bgB5P{0A&(c*wu05HmsCAu37^>cUvDF}pl<>=-T(WN~p$rwU`nwzEx-vT@aRM^M_ z=La4C5ShtImyBxC&3UQPA9o`VJvBXn7-K>ohv6lnO?#hTheHQZM&h5CMotinQnoM` zzGdBe2^+W>iX9393Mg91I@-DwT7|u7^Y6(&DQgTp2?@>djLekMQ9x@edf+rE0c3E{fO|hJC?b2|8dn%)RZj*g?hHDT_S2^jJ=3%Djah=`Iv-VeB0W=~C>Uuf> z0LDIYKdCGQWu$`Xhypx66rxQS~`37oz!;3aUmB3 z008ow!}!@pyO=EiCdBt2;ND79V3q-dWm^d`vFbBvD(Op>zG4Kx)5njJ1yz9tY!OCm(rbQeL#@mu)k2snnD(~ zxSKLcporVdL{RE3K{5e}eK)LgvaO=T;(e)^tvi<^nh0BrI~nk^R~iuyCXq=*0I!Ef zrlmY!VN|?$Bx6oSf7MkC1A)->_jY!_WK2f80?!`HW^eeNy0;`Wp>>L^PCyGebfQL7 zutdW$Klefenk3fc9tc1-2^L=2`Fhghx|a4j&8#L>vvkV~pCVb^AC^q$nC#Vj`TTU# z&o7Pd9ihr==TdHl%uZl1YnGF}$&&7}^jH3J$_-P`^pA@_X&po^CsU(Ws`ZSxQJT*-Mx zqBA-qtbGT~zB`+y)M+}9$Z=SMP#cfHURc2p^$=aZWVdGH@@q7sTUMGF# z7z7h}M|Q&>%xAqP({)g{S=2FqV6zxJxzKp`Ud67Zsc0(gJiO*J8BWZ{>(tW%MC#z% zo>=o<;ku8qvg-Pu2{z~)@~nSh+ky8<)s@`ln(+*YQ?yAcH5OiTx2cwihA^W7Y_zgu z#Zk@2Qy7f}UmN$JCP3rh455CblzL$LZg!LvJY(`ShM?_<=x^_9epGR$5CA#E+sJD) z|Nc9Y>!i#70au}dSoGiXPvc})jJ@wJ|HfqzL{Mwd~$q*G=LAbqq2x$$WZ;t6n*S#0ArrK5pI86}kYmT{H_`j4^AXzzO!aGlc zD1t-m7*zz|If2=GXd@ErRxmt(Aqn4oAx`ECGmH8wBfmK&2XX382P)ang0OtTG+LnM zpDm9EhggtWbt4dfXy28iel_L`F0!feDWfeawH zX|nlAL8P*WFR4%GpK649D1Wza=3(ap6+MeyCd%^#=23Ro=P>jdf+E^L>HFRPHGPp% zcI{^DiX$A2L>LqnnX|bQ_XM{WKJ}~&Dw7?;&`g#SnRc{~CX`e`P3*7v7pxVT1ZnG< zW@-l-8w&{7->hTqe0TWRhLdiKQ~0neBarfDP+O<=eJAt!58OLevh9rC2x%`Z5aZ}j(Mg}s z#^v!4-V>y7jTYyxX8$*XCHhA9H3Tw9=4}N#{`}+3GwcR;hRcG%Yy(ZsXiU>@rD08Y zCESvGY_|1Eaa(0^MsGt+s+DvwkjMsFxb2Lt?f4H%EhfVI2{Ne~Q-0saU-iuryj(jk z-ONGEck*7d>b)Zmm$LTgcM%Yf==+c}p5cU{7%hI{-|9evhJwVa%8rGZG9t=oU8R=g z>|VyD_?eqIL?Su0>6*_ssK&v6iIty4A%@CTpsyfTJCZle;EYAe>K_-Rlk*pgi8YAP z;>y8u3h|0<$w0~E(glU@ml?gWU+$|iUZ#s5I*+U@zL$KWb)RacwdpZj!ps%FmR?F+ zTn(?&NYK2Zkm62(jiryE7hBd_e3|%6scum7r)qHCN~BZFD?D4&{* zjV|ij=_qSO-K@Qk@F2V992QbHH2J#atI8l+pH79EIeP}guZgUDV}Tf_pr$KaC@a*8 zT1A77=R^*K+dy3vhV-Iht0SIZ*Xf2R4!G*c>lU16``B>Cq%5ov8BANo=d~zCchr1u zEai`r@BbwIH!;-4k&GIKXSTCWqi(&^!)$rTy0PjW6XaxIDJ?v>Tfx~S2>O*X0QhCu zQy=IhKAJg8(W#3dWZqR~89}F2P1vE9lDgCK77qo)xmf!%t`~g%!85VAi=kke0X#>W zc?L?g;XXac!iG$a^Rm6#jOCEeMZGANeQ0o__?5&Jay7Qa4rq{y|@P{_CDf057hVsEF{yv3YPzn>4f1Zfc#@k zbL+|vR+sttvl;%Td5-?v0zr_;y3NR!&iuNh?%0bts|unua~kMCqHM0JUnt&zgprlV{kxZJ)cKuyxdC3F~IUM z9)Ps2k(I0pEY-&O33CmAIUo&08j0cY& zhBqCGnC%#!#q9s9Qgrnvvz0Xh{zp)^W4!BzPEB_6g=_0jfTs9AW60jQ?o;)f-Oc|DnwT5PcK4se2+%@;C=?g*BalFo!Z-(DR z0p!(-J@?L&9qk~ABb(&4wYqkktC->ysX;+p%kX7!#C?0_zd8y`))!Ky=C|Xi||r zRZK4{x_m)Yadm!SkB6h+DPF9-9L{hac4zeWq8 z`4KB6AICy=n3AH_BXX$n-I@%EuW^>y1ZqOGz}g`w!2{>1WBdpKg5XJo_+2iZz zxU)S+9hlf%mQ8a6jhR+n{Is6n1pJ&SZa0bKv2E~P%E1r>|8(&*sn^=KGBV|veCz&G z$E2(^vw{=wUl+(%@7pOB;>sN_p^I|d#xAOel0RGK=&u}{`;MHa4)1MaS#WeyLg`*w zvf4dUmGXPn)mp{WBd;kdUChc!ibY;@)z&+Dz#uK~FpKC`?nV{QW}|BwiR0)N&-&K` zI$E@u@-f{y`6MvL(48ys+=#NWM&r_p#7u6+{ zOX93gzl*%O`IgPn^w}@mon{&}&`m3*U-&#hk6LNPCJWaTNqLMb#Yje}B&=O`hscTv zpKOO(ME+QpCCz(8en2QOvr;cftD!2Jsk7`Npp;){X#3HEe9Isy!nTq|*kwZ%gRp{pACsUYz>zIBZ9YG}if&c@) z`ql1{o~s@lT;n9zo|* z44=oPa9`d2p8j?z_tf`b4&k4`F_(b7x!Nl365PsunlZ*ZTH zd2=Z|_#RwrQ1MV}WDD#5+umMaaceqtn``(emJ#3*5jBuh8MBgI{*Rrf^dhg9YIg~ zS%nK9VePf2h*DPY zqi{5dTt`6c>~TZkMG?o^NKo2j3Lyf%rwjXI^U(j^o360kI!pgq3$SMb0wpn(X*;bp z`H{yyC5}k#@$}b=d|0zV4ULmL_|ux4@w=c!vnq>f5)a5I)S8-$(wLg$a28akU+NiMWZofrc&C>1^Q!W(i~@&&jbT$+SYh| zM`MM}ks+;G{vHz{#9>OU`<@9}%SR`OmkH7d&|nBu#PhM) z3#XOmX07C3qj^_J26f>HbFaC_*^f7Kj|y;|yDQFq|9L1M)!=yDdzsBhx4D@sWL*xA zij4HG?=TT*UkE2^lhyOZb||~fq_bc{+8Rd?W!T~}k3Ou)HFGEH!$zEO-655`>NisS z(mD^;O+S;TZzg0FeyjI8U}{Z|#ba+m?IW)qJ$5~@c%0%Nn%;N`Rj%5nU;K)OK)gMD z)kPIZTT9FlzVeveAf7?~THHhD1ln28)|Ucq#XUU@D{!Z9mEhUU?nY$(;%5GQL&5ML zHT2mQ6-MYXWfyOg#HD7Bd9QCI5h%j=L{+X6y>K@pF|fxmf3Czc{UMY5Fa+C3g?{w4 zo$()|CdqKj?#Pg*gLT8Bh%NfuAZ{BLLE-e&pYF~0lSX+SGCGg-vMo0TclFgSWxF7T zeYbaj5HD!4SH?An!!g)SGLxAaD>!uqppu}p^TKGHBuAbGz9Yl?Ht%T*TSfNpjwpP3 zU)1_kr1*t>Y4(Kz_|4m}(jlwd)|=WJ|Fh6}JShL|7tCYN{br8`-6qU$CKz*)%Bf_f zA>LQjO^_abx%+*xue4yT`Yu*{^m_=|ue0V1)3kKNPYc&i+5R0(Hna65ja$kd>{)Gt zz^HwMs!ZGQvFI|qd^}1V>GnaM%>ouh!C;<+YgZ~YJ|!zh+kT1wvsuf~wR7?|n}$a5 zSmr3z;K_h0gZ05Iqte-AQ7WJ_DEX~?=m<~r%!9@6(BUZ~9?y_Bx8xAHsF-WIkUs2{ zXoh~R6KSXrVX7T5+S`zg9lK=U?LSV86b=UXpGWQ`)r=G%?ROz57IP&LsUSLe10rR?|4$hu~qD)`NK zN00Z1ttU1759tebmZN*5+(eJ*?mkI`EG5%jo?IkEurNg4Jh%)pbf z>3&RTc!vxKbjm!o3}o}HvPu{o#dgaMN&+dhUSjsWrlIUYOJk~cL0!)@4vV?)jGC_6 zG{BzgjN0bjm~f+?S?m+`83aXT{Mdj&L^wAM-4hxbgU?R1a_>JWTe35~Z1u(rP zyDf!lFGnl{Q}Qj&pv3F!2w5gty3+7`#U_nYjv!uevHV1!+x!4W*b6cJjLpjME7b#w z#N0w4KpE?#5%atgiMi^CLPWP3>Ev>ab>xhP>ney>_A?2IjQdgG9b(2K)qYTMpas<= zsLkp*wVbOAD|<<@N250L6zYV@Q*Zp;=TFHNjD!N#n>Cv9xx{kS1MpKg8vW#U8G5>Q z7co^jgw8hOpi}!}osvRMMEmxgmF?8i78Tq_&W8xs&Mv6AQ;bMq)EU|JseSJ&kA2ZC zhWxX*tb{S+sJzKq0`^{YCX|$dG4fpWaoC!PN-8jI$4rX<_YMcB5lAkA>VHiPH5c1W z4lou~=%$k2Zu$SsGQ%rdx`U04d&KS!Yh*s3n00BL*Rk}?S~v|E7z`Tx=!n*lRUP{ z3%>bHQZ6cofX^Un7;)%McXyzp5shXRe~QBek*_cdlj8!%P;6uq0;4Mz-owbH`a*3P zhYhy@>-mEmlx5?nS7#BVXtUQLb@eK4On=xGCTqQhuz3!#(}rd2Gq^L5hJ99Ayj@64 zmClKrMQ*!P55q)FR{ z8~&GcX(<*9%`p1jH0a9)DoYMuA1f3(Vi$3>?Z}R0#FrxZx@kaC$oE)`hPvJLVrDlL zE8`O0Mmh2hzn_2_n|sgxL3icaVv;L#NZ?0y&N|;2P<6tvQRC(OG;0^$&uJPbBq475*eAyQ{_OOc771c#4naXRX_OTjKs32%!3+6sl0snm>pR zZ`-qL5D~?bk*3M>M!8GU3v;z@g!la({K^0L8q)VSwz;eTVX9Jqf%z0&F%}l~x08XL z0svk9!QV!p#VIs95dgq%Y8vh@0J`xBMVVn}q-v4J9){Vh!wRuJCI3__f#Y3&(nRFS zKP3&X@+7L9Q4TFMwX`5jNISvkyrAToif*^VAp^W3T;Q{QJHI?YnyJHf5wru7r+#kN zVr1trsU5ju*D-Uk3h3V;G+N@u>`$jiih=G9->pE*>-{(1 zFLwY0`&72$Tm2ZnSH*;g5CbtQ;$*9}ysU01n`ZPE^J+z*TmHGYvOh`d z18jk3p%6&t3BF@inJa7^j%t0(J^Wt})Z(+tlOIDgelrna0*z?ldvc5Fu=9@GH9Su4 zZUGqNEheX*7K^I64;Aqsotz%^S;*#yv3zMUe-YbKa+q;sE|tBQ&kYp0f2%0LnDF!W z)$=lO7n2dE3EUZ5Lq?#9NxuVNooUTV77hYf_)oK>yV_&pYYaaKAKzy#y@i+yHPELn zydF5>IFLdIh}HRqn8M$b*LOvA+yCC}OOl$cD+C7|HK-7Yx9PM$C(KjEMk#fzp1Phr zwGzC~R@YJ+P=)_udnxhdQYg6Rhp}hcGBs80PMrbk>*yg!^dQn*MBy_86F=Ds%(0c-HKQ|S52%{?7`kEii?solvO$m!ec z%c6kGfr!DVU6QWj26Ul-E}%r}{a* z+ZsZmESkYH; z>#RpYNo-B3Zh&#`=fI6h!L4DrJ2aV#v(-W;%fXkPEwx{(rt0itb6HtE_c=RnI2(`Nyu z%;<)+*nV+=n(cQea)`4wnLo3c@abjPQNvA(`}|`;ggG?TX60zgZ7{#4 zBj7yzqk+OZfk*MH%(-7+>?H-lUat=_`e&YpOzt(mM+IL2cBS@qoFExd zgoGtX(Fz&6ylo1v7t^*AfF!!4R;(ec4!jdBK>f;Im7JUKwB(~wOsMqGrrWkxbg*_2 zYOviPj4ET&`P@(z8R)!_#@lG*a0Po_3sQ+U0^p0PyIytgkMDZ)IAjd(C6gGSchVM4 z25o^u|7SuLHdvA{i91VNFC3=5hLhyPRsr$)Dbfq`CH!2b1D5G@vEClsYm_-Li(i90 z6Hu$V|G7ZUIM5U}!+d!9Pq6)rU~8y+yrShzVZr*luKdj`7f<^B`_P0cltjgrcgLA2 zaSiyZWTc6hiSLxO5f&`R5Cu=8xUQ`ePQmw=Ge4SxE`M1H{}b+V8K9 z%mUnRUI)YTp<6-~NTZcOpsIcZZl8A=o0UhI#CcM0NP?0xPd9r2ka9dll+PJ@SXNpt z@ZWu>6exAuK3TF4^_VzFxH>iBI?U^xncHy>s?J9%xG_>@E=K-+2nys*Mx(edjb;F0 zU_TMFLFZCKEw|nH$K?v6yPBE^^Aj2qeE8}$1p0Px!g-Jf^o}ILPy5}=$i6S+b}MJL zc~hj;2Ej>Px#N@0m2;ZV&@ppWu(}K^dE4P)e8%kb>YBYskGv!lQjJavKG45yyV^5^ zuUkdoFAg4Svi94ykykPB5nq@^*daD;gr{tIqZ3uql;m+iwp*9pj5(jZtAa(}m`BBP z$RWV@V=5@K(z){t^Sr9(DGgu5L^kA=jl`L(B5M366#4c5aN4ZadCI&qtr5Wo1mX5T zRc;1FJe03ITuwF+UnkS8Dr#WD^doX8fHzT9W9A%>!FR1Uj~M~ zjL>}zjcuTgt`e;&KyM1CaCpD$R4@q=>)6wwb4E3^{p#I_>worYuL-V6AhJiG5b#jg zNoKnN;=siTf82`gdtlMJx59Ccnv%Ms9)d`xrwe!|@7f*h$#)7}KQ1 z7pJ^#FPr~r!m0ADP@9Cn2|82>xA{7lhd#sbmaTugpx}e&=xY~}0FW(J}>b8vt!E$&JL(Hm$ zzxIcL!7H|};UNGF822TP=vO-IVML$ui)`(>$Q6}TFAcSfK_18wzpdXJ*xQyc_MI?H z%($@>kerX90UV_(3>&y!`W$cnn}`_6XPqgw36cKr5fPq&$=~2_(Yu&boe5H@GDgH< z+$6<=(W{2LLJh!0p!lIPd_kI7L`{8XEYm%teH|Mq&o%wva!*0p+v=K_nN^yW>`Uy^ zdS6i>75mSuyW7+i*>@3_h6HEhV7sswmr(ir#^W~tnYOE^y>i$Idiq$KJ;HvdY2v!5 zCTM2!d)x4dbnY#F!a)O3rD|ppRya&kBF1p5t*d$ZcYcS@nP8%tqk-WZrACRL<)^!T~iMOTC-~j7{VPEuRHN9YD9uuoQ2& z84)#qS3w|(Z29t^th$;b<28lF9Z7UP$+FJp{(NCZb(rLSO#GzZRFU6-4iZ7H z(7U6r%&z`c!g3K*h@(Ayhd^e>TgGkxUR*+v0B>z<#Uh(p?R(kT0RD+n`Og#b-&+B0dyzowQ!P3162JK z1Nj0MSEbt3ThtbxGzjB;gbXdKHDL=J3K2i&5fQ#YIBdT^pE_8fn%7i#H9OLSvGgQd zE#X>Sz{JJ2<56rNBtWmizZ=K}#*aQ3R8iR^pC1=V>DxECQw33Mrehy(7yEv_FXdlU zJTf9QP7*WQpdInGWXTv)sqNx;>{8#6{TbC`k#v3oLIa_}l><;s?1y9=BK-Q?4E}vg zO0?)4Udy~t4ajg^SoeDr@@B-l%F0#0F^?gF|C0ZX!2ffwwiAF%f&NMc6hgIs_RIz) z|C8Q4_|=!oS=;^T#w5^R!FTOPpg)0Q&Ot2jMt#83V2(fu<+BS;;wI;II^6erFc#sx}=<;X3 zM|FaV?o0m*yEpFgPn*nLe_>%m#>cvL0l&oL>^s4MH0x8t@S(H>7pIZa3?JAZ8G$zc zIq~w3+lLsGOi@_kn(#*m4?F5x(6!G$t2P};LhlRwmq@uz@N3T|Fd6bIXu>l1RrkIt zz*Y608>uN>_Ed{#uX{fRg<;$-rbAN>s{fPp?Mx6{-g7t#8#5}A{u>H~qT?3+aieujkS-V0uP;gG*S^IQFsf5*T%Ta#rC}2gq2b2C`27 z*}-^>17^Mgnrl$TUTNY+8Q~AzvMXiFmE;4ZZnb6J)}48=v)PnTVECEYoO30~ehHiA zbn8hSM1ksy%vMvxVFC&!kwt$IW71t`inHe-DVG!vwqh--q z^+go@<&J=`w&B9g13^}>`oV8EsEc;f0L)T}t_hg)#r3ndvsYm11(ZakfsX&s1+q*; znZp&k8MwnhVfhb>5UrCCR2FP}1<7MV)%b)}<}WFZnAM_Ms&ER7<{C!nx>mIR5z^eo z#c3GaFZ8&cV&K2wZyNA*_wi@9J)&YvkWjieAP;tpWhmvO$J_E&&8Drk5l1UY0IRbx z`n_s+^bRYEB@`^O84q>2z#at_vi++`s)yyy1IknA=SF;v9`mRn_H&aG=u`fPv#kqX z^rQ@BI9*g6*L%==WXJ-(x?$)tMj|+50^ODf1a&4~a%Mg%D?0HvoQGSb0OSl{1BX(@rMz(i@k7?WtzvzQs{Me*T8*C z+!5_mue@O#uM_pu$gPr^uPAE4A`bmZ2K|7jXUDBAg~e2yuI&SnGFziq$~L#V#21Bd zk8G2c1Cb6&Z1X`-B%zz8!<36as`7o_rJUHAR8O>zRi)m}*$F$vxulXRWn`<0O+izUlf!!aiWX6iOGM<-iN?ZC96_#pk`38HvE;K6>K@+!! zcn#WbwvM=wc!xd1T+OHs4b$Y<{3%7qKv~h7;XxPdb@-HDS-}FNCb}H%`SrgdkZaTF zIXh%0YqWrc!Ao!nu|LgxUj`d6K;|WlEe%Mh5(GL3Z;fn^te*1zzl3`1D18-4ocXDC zu36)$xGdv4Gb36zo$d1u^~BeRMX%dIP7XKPA3I+wd$r!;>z;fvqoR%V5(ifWGKFVm z=bfgSBFzK6GoLuTX5_c;2$DWWHaSRgu=yI#q=ENR3(!CB-9pKUboi}9TZM!|ZVBg% zS>j_)=E0@%34TP%X-4p{GtlV4C#|jlF`}aKR zeN!Y~TvInicjAJ%t{3Prb9Mg`&}!drm8jI-+iELp!I*=iHKJEhi~Sa>x81k1rPz;r zq~0)tLq)~QyZ`?GBJS);OtX=VQ4?3d2&Jo1_YmxqBYwQERMIrc4B;nV-gugEWpm;z zo-zDz-?o339&Tk!rszrr@bZ(|eZ!O|!A(rISv}rJb-lJsv1BWuFgmY&IRyQy2~!F$ zlOLp@*1^^ur`512=S$!LDeI)u5$1Net}PUzI$@!JsV%(6TsFewkp#3YM|$97-dX+B zPIVe28^TjJjhFhG&BWKZ`|SzIj1o=5>V87>zg)o2ji}Wjo%`FhaH?3gonQcwPSDOV zlqxHR6uJ9C2S*lTMVXM|lvtYryT-MXA;k8z9&xbXIEvh_{6+~=4#pkf!(?j`&28_4 z)*g5XG08=<&@L|)vKs|vjQQR|bgW#anP(Yf` z#*0I^`Yzy{U=Ta0sVHe(9ukqX!YT-vrSqZrim|SBCZc7Bx0OT-4+oBQTdvPCoBbi6 z3YD}tmHRVd3C3`wt^f5pm;@$(DsBq8p5IOXZB~@G*N9@05-SZ4PjvHm{rR}J5EdYS z$IB%AMWuQL+TX+;u5v&C1qa_s?lL@{Zp(SQlrL>Jb)#L1CY06NG>P=z0If%8$ z968VUVAlksmTa`BmN?QIm6!es`mP2Yrk`l|-aG$@25}<|q8OlZ1!Kv0>tCVWp3txM z37*ma`=He$5M2{%PdncIqb_^6DdP}hP6{Qo#RZA9zU1uAsfgCNm#kj1s2l7DoTiZ7*jzn0uQM&5FRdZuEL>T@cVheKlw%n)O0- zy_zv=nY?F*;isQZfpPcR9dMf~XhTmHIy;&B$qP@Aka2Vdank^UapS1cyJN|>!4gLb zRA}@Yw;;$$ki6=OrxS;&R=DzxOR{mV!j2HGP&u0`#5-uVY7pb^~jalctTL!w2Xh9XTHs z)ThspS|` z4x;V0sFwytFvys{bLFR{`Nc&`;0cUiPqc}ERA`6R#yPb{ibv-Nyn=t`=bIsJ*dEfz zIln$<%vcQGOx&Ov-<_*#!`Bt>F@hl$8TjOUKLysT#@trrUl~-k2zZJ=gkFP{T7Sh# z8flW=X`N?kt+?xD4()rb!@y^gyfRvPKuSO|$J6}b^B#sj$^!Z`367-edqlwlD$YFa zRTB^3Vrly3a0q`vWl&6`0;p-hO|x+}AoZU=ZlwgbYQ_>!cF2kl_q>rbXmQWeRL5N~ zcc;>e^65|u_`E?g!)_u)Ek;rfw69Ne;`SrCy--mZ-vPNpznt2o2m!2_9i-|W!>Zi! za*XOP8JvngG_CwGCrCrQ%83-=R-kg>ZDFa?4xQNw@TN&@*jbYY-o`jCv3aX+Kh8d2*wV$MWvUU4wiJd=VoHey&;x-lp$^9FkhTq`sYl?# zem2^d?T82lJ|SSxjbm7t0^?Cgj>3cNjlH@5QLWtvF}%>1#_u?KiBC?xSiBDjyx|tE zKg-M%%1GCd4%RcMv2qm_#<nT&p7vX$M2P@aYNi$)@GZdK zBF3PClIB;Cw;V%j`{FWk4M=OisQ#$Z*$E3(bp3jQ@KGslb?TTm|IcxtUo}BbXT!>_ zFo17V^1TWr-GR%z(uBN=S!*J0EujDbP@Ae}fQEj9{i8g(sZVn*b3Ym60_EK2=(#lq zq*;%rI1nCLLK^ZPgEn|trYJ<~(DF6=oGKU^kn)uPp(Q7prxI)Z+#aNEDF72zc)9tzSF|FI)y(kNC!H|#u%YdX4PVX z`ZgYB?_03?j6e*eaS`R{0$g5^$Bq_fi5E717J6{5HKF;+J4^Hg-Fi1Bh5bMZ4%r=+@&-`NYV7TXddf zK^Lo+FPmm2R{i=)GB->&!;t$qyMS+a=Yr#8D$K59^i4# z=D+!4m8@*Kh2voQ#5at81`ydsa6gOoacXdCF2jifXyP{}I_O z+u!^H#$H)w-dFpq7$1U?ekmz?(hnCCd*BAlf2t>qU_taavzNPPKWHMtt^paS%zpP< zOw^hXVm(y)>?`lg`q?17Gg=vUo0QFcR@We1tD+}% zOec=CHe$;ESc844=vN{&bQQ-o`B~aRAUn;F;|1BB0CV(vAsy`NdVVjp&;lb z&fZ4ze7=Wgs+P9*bO~7YS0)JJ7i!P|)pB5#7I35TT}g(RSlLUz5%KUIfkQkr7x_Pvoj*k}@da??io zwM$%FAx(9ZYw{p`yGY><$D;+3-J_Onx(MFFr2 zdEs$GXDG708$Gw|;Hbr}x!6P6T?(3bS+FHX?GlqRDL0`sDL&IWNQGu2KE{4;t8nm- zRYm2j9fu4;IYy!}K`#zYt2>!M*?+MbC__KtVBFlg;0c2FlB6D!7T6I|@3{FGQ{})2 zZs*_Ye$mLonxIW07!ofPWzF1>;Ic`L+HVl_#b~W8`Af9Vyu_MN5V0MmZY6Y<+qR60}z*P zX?GOThOn^4+W6PP_tFbk>RB1C(E`|+Wm@DA52P>!5C&f%7@Z)5Cutw%)%)yp9BCn2 zC8r|_kfBByegUS#$UEXSTv98f<5=)QNlWBt5%7v#wuz7r*6gmG;%V{Uvp8u+{fKV< zOR`e%RRy@MTcMjRZ|e-0VS=Jhbt-Whx4j>i6ahpo^*$E%O!r&!-p_RGa1x>5I$O;eCVS|g3+H5ya#mI zS+O|Nf;?JgRmJld<;3%a@+S=URCy;!!{K1OTw~^u#qLxYNQa)H98Cq3j-`mku;_Pj zJiCRTZOn!!@{A&-7ia>H|48%>n5tkFc0RUOs7eM}?gRHhp{28Pk*@b{{zkthKlX$F z7_Zb`>f6ar9u__ENozXP7WYs;RRPh6<|4tLR8&pK;GFXrpmGNpr$C4m5HX7Ddat}#6u-<^mc93_O?YH> z`H?LYfagpsFV#%Umw%V&{;cV;X>NPbmFYkz7Sq&VjTxs6g*`EzTsEm=8or5%d5(t- z!=K*;eS)SytuUsRp7+dI4BM<0e@JNG^2xF%7zC(~xqUhna}hJu3E{Peu276Nm_6dB zp_$(KAD!x6fZKu3S2?v_ zTbq1~OjII!?cBti+_x5WMo8*sEcO(xeiGkpravbwhm+?`4LbW|WK-?m^xLRb(0vj4 ziI7S!3oU>|G>P_NZJAAk_DCm?k6`p~yV3DEl4mY_piH)(0!MILvaqDSp1s+~^nK0U$CCVlv9PMFNiDFZsLXMv9bnfPbt^E^ZQv!Ju46%?FXmnj zVpWTb>2x*XnGAy~O?c&3WESRipSL37oyN6EN(_7SZpd8Vj z1E0Hy&>&3PQri_)7MC{}bzztF#kQW{9oO%Eg{P$t7?=cy`z5-(61F$lN+GQ_E@z7^ z%f4@J_oq8A=lQf_&u;>l)3KMRwEn2K__e=}ZIFcKsG8)DYG|4y1VLlaCuGcZ6B!_@ z@9A&Cg4%JV0;kk|?Sg+CI;W>bt47}NSjpfh2*bb*M{Wn26!uYv_;t(m-#7XCQGxeh zYXb29q&=Ul3(Vr8sRod`O*3{ohE4RnmwReBXdCWV(Gv9r?4oZ^09ivBa`!P5wLc9* zvS_kBipGEZq(yq#*k7?IyZeHG<-vX7BjLy_LPh>CzM4w|t}GQG<4p{Ag+eTbVp%IvmN9bV^p7CW~AzC?v+3urB+lvBOMwV z=1!o8tZcI*TWKy|Vd1F>e@A-uwex$!EL`P;H6DXfC#t`dY@UQZgyypr%#W9y>-GI% z3HaDJ_?)n3*dy1**nlf;SA!Z74ZKgZM&_?iQgQyx@U^uE(tA;HAPyKy+VLJ#&#M|G zCIb>V*$!Fx$rT9dhWz-G#x92l?B|v}EWNZGBsl=DzGkH@=H+l*{$Tgsgs}uS0t(UXuX;4_2a%RP~}TJ*f7!3>@!79ea6p=6`qE%$T;0R6hpT zEx*woq;yMckkEQ2D^a)I-TSb6Dl9!+p5Tmy3=hJ!6h}AjpdziZsNKH+egq7ThB9z3 zGfzymbqzz%2zxc~A$(#EaZ2di_a|bxHp`ayi=woNfB*dDgVQu+2f`?H=^Lwk;^_rF zoSa@xUy~f6CJnVC^~z&$;-WF|7IOVXJZAF<`pY^Vk&8`p@WWWS#ja1Vo;70L$x(NU zkewd}T~@`!5T8XR5hxT*WoQ#8^siyn-5tcIM9)+o5BLSjldc9|zChQOgQDf=`+O51 zg-byb(m(e%GZPAa;P!J|{ZeXqy&zC$C5l@#;B3l`Xahf1>C=Ur*>pkrJaJtbAVT;? z1$3h`Vn386FO=E$$pNLf^j|Y#&+O*gYFp!3qlX+J$DTkc@D}at;8Nk0H39l(XzA)l;Y7`XEyChT-!-2_{_i5~kJ(XINjc&njvX*W;Kbtq%P<>$bZ3OO@9gdWU@$(6p-G3sdRmph6xE;kI?k<}tn8HhlER8zfz&j}fPb{Nw zd>~>dJ>HmHCeoz+>le-LgmsxsjeIO1{JZC1r&}h97HzN+pd0$7}NDebn;eDNr*chP1fuMMr zyh9K8rBaKAU~+YO3<+@sjc_z&BjYiqKbbZp3>6o64j1l4kEJ4h2SdWTV1tPC%n;EC zFtWxs$$M+Q7y_g-lkt&7k01H@9-Z^<=G?(PNXi6f2xkEMu~jVYu{U~SKYT<67W~cj zmUSLFO5jeCN?Vco4G0^c#LFZj)Dt$2Z zu4F>OGrRPly67~4Uv?W(mkM09K7|qp?MWs9m}XWXKy9Kb>R*y ze~&V36$TKlUvIsXB#mBe27+>(75uPIr#vOriKX@Sk!##x!VG4??Jx2>Qg3fY?3Hgf z)aP%0UNix+0Ih=R|eD4!~a5%Ma+VEeBP$O1gZjNkOfRN2yVj(|ia6+eAO^)T|rzowb8*}P)m6$|`-f5Y95 zD+w;kifX+)gAE6QwTpMwu`|h}{xJlZFO+`v&l?gDk7iaeWC{{}y5Bh%X_&}uo*j;C zcj=K!&`pyL!RN;`1puWFStOn0jJAcr-_1}`8i>yCil(9Zb>F7e`sBf9>|B7t^+5&vWA%-!vbc#%g3h0nc{qheiH*=FZF!1Mqn9?3@&_{z*X&u<9x z&BK-HeN|mm8R!P|RAa=pzsD$Un!ohGlGM=LL~eX<-(;>yLO)q~4~}_baqXrO_x3Vr zu*R~Y>?uDqP&Br%!*(;Y*938(nq;l^sz4ZKzSo=)bqUmnHDUE2T%VE76spDXCko3* zKqJicPJS^sr^XI!<*WYC42BIpHRkhS)}V5zF!gef22|yeOT)$DdhBSQ)clk6Q$0IU zQ_mWZV)zC-H-kCiz!yC9BE5uco7cSlOJyd-h{G<8qzlizTp$!Z=xqw|5YIHrh=GSY z#;>xE;AqVDL*K$<;b-9Y(L&$T2Si8A`(ry`ph)*`?I{(b2!?Q7`4ee$o_9&6?rGbk zW-WqL!yy3X1-b2{Y~Q#>DkLAs`_xi7UHOaoqd3}mBse@VaF%`I_YY#@=BRCT`=R|c z@Z$-XbWftH4-9De!XUO`$ee6o6Ix`lhG@Ri(ph;O-3MT|H+93&sDltW=u#96-t)!5 zt4BF-S#hmNEQ`|yGTG0u1BAgdzl5oRbXH}cQU@OpW&;UoL3CB`R+O$A0{ZNSf7T_!N z96MHwpLT0XqG%j%yijOBL|kGe!ib)vm2JGbg>QwHAAU;n3fbY6t226~&#*E*Ad+@$ z{0RY+Ay3(?Lk&q5;1D|J>Af6%H}9;E2PD}1Mkx-zM0w1mdMa~0BWBll!i2M*tC&CZ zR{e+f=Qr*J-vQ8~WSXM#FWG{floc@MhB0#hU|V9)|S+n+?~5yUn027_?=aF-%^K%>%VNtRxpA*gxu5f)y7YJ|0s% zp7*EzK>;VFsMZ0J1keq%R*UWt%%o}jf_XP=C7^K*lYKBM7|bw~1rZbLZ_2J9p(K_D zHzX85a17$TPV@iy7;p}eP2tt?mp>H)<*>jP2RyP27{ zW*!Kk-Qi(JT=?Vi|0?N-tdX-zVB^88|)_vWQ4sk+AIJf5=u1dGF!$Fn0RZn@k52KQh zFTV0u>9o1PAm$}yd>B9+Ca=`c=&&3$g5hH7;^dJ&Y3wz7kjlE@yPy9#h|9d&-(*s7 zMz~xu+5jR-%i&T`2jTAbREbu-Kyk4<$cZg`k<}2_dtj~Z0~Vi1&rjaGO6}p4y-Sc} zD~1+|AbX&K9$>qKuqTiX4(@ zio3rTOn(O|KT#&j79~P#G^`aF95O<*R@JaEl%_$h;xo0H&fy?_5#+JCA2KMG!+-Ay zy#dX`@htie^Uwl^@2g<6;q_ckEzDLv|K^_SPvUy@Du41F6Ybb{<6oBAcY226pvjuk zcx)dI{!(RI1HATo3IZkz^C zOT~}0+y|B3E;D!?(%OrCF~CfFM>d9;w|rZWriMN>T1@{p(;0C?1E;yo6qRms?H-e zef}@+g=ja=QPUT+c<*^Pe{>O%uOUe|75k1zSZ1%cg-PbUwPt@^ZWnNzdqR>v{236q zv?u!2C{}$BJnSe6;EQTXe&kDVvRZMsvq_Gspa7J*_~bTIo$qVpHTh)I^hll z@BO}~J2Ig{;ogR~OI0AMn!BAfnS<<<+_>cM&|<9CuIv@In?mT3@HSo!4Mw>E_|D)% zQokp2PdTP}vTA?U@LcY#b}y!i+c;5>?jIf0BBj*5U%T~y0J8*SF{)JvPk6gYNT1^L(=Z zI^9UqQ8O-@O8Q+lyBODqXx3Z6yJEJaB#r*9hl!z5c<& zI)uynQ3~pokY$#oUUVObINQQ+n0=UhiGYdbU)Y2>WRg9_GX+{2F`fcz7(4&w}orOyB519$S!Q`ZPc zY^+PR#R<26u5287w5*{;Hl8~Vy~*((449X-iLmE{X!eEl?qqkihI}{?wxbBc?!tEI zBp2{5nyvAKL@45>nT1P1RY9o+oUGu_{i%F$LZ<4?Z3T2QJXil6q}g}@ z2&KR-k1G}^?X+=hl4+7d=3To21{YXIzhVb;Pi!gTO`om zSgz8O*`fq0q^m6LTmXips>iQHTJkpv$_!#D^!4e#>*H$w-sUyL5rZZ{->w0TZw*Q!29{d=DKn`yA z(^HTWS7XD08`ht%VUl;PdUT_;bwF3^S-%#v|VRz4!jO)htCruu^% zYnw#(A(cD1RSZyN;xIz-RbSFR5^%&J6usXCHhDRf~pfkxvCCpm0P zQ31%ry0+5#hCwlDFu@=Ci>ylZ1@qt#ZQB^yc~Ud{nzjK638A1@9MpcHP0 z&0kILwpb?FJ&NX8f*n3WorBJRgpCECz zQO**M6r3S>@s)5YP`>{hi1E(&>)J^^Lh?tsFV+9P67+?t_rUn=b|ZYbbrlW&AZ_6Y zamLX5NowhGtM%Ij9uCarb;fJofb-NQ+*nV5{)ijjGS@pq*wnpM4*00@M^y87{-##{ zjzPeEYIQHECQUO%tK;>PNWpkX3uk+GocQW}6_)5f=CRmu3c~fSAT@~CJo_8udsPe9 z`Z{_{1{knS<&6MH28y(%g+<>=6?-Edts|_8f7W)T4|P1s!M7%d6QGIskWr~mwWPCA z9n=huB|d0pPF5>BfO|!g|No}Mz4u~aD0|Iq^G9(X{sI#q_@Xs_IWJ7S4}P;$>w$}6 zjYrNXl(tfOvHNW=*du3>4f)Zk{56L24V-&Uc4y`X4l8oZuG01F*XJTN?SOQa13qRh zQ%TJizi%&8eHhg!Uauo$-$xaFs0iv)FulwwL_(WQ^D=a=_FES=)@ll}4W5>38;211 zK!mcS&uX-gb6WB^fGy3Z$Vt@@bv)XPgrE1ROacway_{yJH1$@?YsnHYTb0%_bsBw<6^^HA2V_YRGGc#7ni@Q`ru0MVscea zy4&^r5m<=C75!^11$JFUWsDs-I2qS7CsjM0ZDek#!PhiaNP()$Fn@$eLGHbm%lkMo z<0Re!OepbkEh(w4`Fe2Q2;sQ6kamD^?6uOg+bR=l)E2n1Z$Il7>iKX4+e2o|4dSoy7L8x&@-v%vU4&d(Km{ZlF&G0N0JughM@~5@4d>$f={;+TXa2cy` z9dyUJK6d4sT7Cjg(C^%_bt$1iooY#M<92a={GmKDgdAjx+=F5Cke{^_p%;||^*mc1 zElm>5B*BdG2YTw9zcSfyG`SVOT{!o1<0pt)U)z#n8R&cMY(%#FbcOX~y%IIBOTvDc z&%aOw*RMGH155|3r?;T?3zlTYr!%EZL;B(!|GmQb3~It=1e8wa-xD|WNk#gNwMcXP zbfkg{*<13jRXhN-l#)rjQQGvC==Zq!v!a#v$DGq3@_al5Y7Vd$RhfKI#WV|KMq z)6((T7;f z>ga5;$ODglK*M#&+3y!fld|1Bwg81Ls$5Z&?|+N19DlA zB_1A1RGb=nJU_a>ojLNakkM+~t`t4ILnx%sT0)x8-pgg)wyY?hC#+K27mPnU{l35S z^R;sVk2b4W__<#OS!gd{R+y>~#SuZ;vUEa>;hb=>sYcHkZ-rzkrm|SGL8V#DS z6MGIl5*X7`9-IsY zAM#OlgytQ>8LX_$@OwhByIAI;N&!W|L4o3e()&m%Hv2Q04SYV^qgI39-|C^JJ1Q*b zrtUD4Cd~8rTBjAVN%7bP^3GV9;fWUgiacR}{-pr7 z7`wg4bkb{CwJ1iJgVL46dU8?1^6Jr8tiCqfv8u~F*RvYj+P-n(l>h=RXGRalG1R7o z9~Tql(tg*b7wYrbtzAfVIGM#MltN{zzlT>9Nrqe1)pie(7jA+nFYi3Y48cB;b@mmPWVYV#~9Ib6F!;tN5&=znb* zLAX)0EkKS}aCb5{nYe;~aPjtZ)?q*Y@aO}!4L{4t$PdbJ_*V|bL zfeP4yN+Wz|`Y(e&vGgkoj_ni)R3Id(%alQDodtZt=MWumfiaWHm|kA04kE^EM*X_) z18cbxRFB(zXjJivpEF8gr)4Z)0uAA-`5XHt3U~yjB5NgcXqH#-aR1x@eL#iTz2+(5 zSd25sLgaJ@zD9x@O_`dVh@fo71!&lQh;uUb50eq0D;loXX!sExzcRna&`}9veA2Wl zQ)uNMA&&Vo=yDIcuaEY`9f3cch%b6x?rO?huLLSqcN4YpoA|+LXfNnFubZm#O5JGw@cjJKd_rVgd~{`iBO)h&n$-v_y7O^0tqkx03y0UngS8AR{sE1V@1bE z;0bW9whiZw7-7TEp6XqcVC4G*w8|MvL55G?6<6*EErbE2e)3)NJ){wEd0@G2!s6Wx~YO9Db!W(|#JfK`T0ncB&gV!7u^ZGkct z^@;R_V<&(=G#At$i79CBlL-)8Ep(nz6f%%pL?PDVZ2#U4?Gaz{S-ha2e z^)E?Xx|+L-nV*$9FLZ+Bix}Dol#xzw|AvltTT9gH*8jBF+@yR8%6! z)Mhe5*PU3YnbkBl;-Qk*OmY9IvL6W3^sD3gyoytC4Sj!fCu%0(C#1!c;~nLUU?9I9 z*89M5vklZ_d>x^}x43W_#hDzbG*5Eas) zkJsqJT}($jAH%tM!tl0V%<@d>FK@^CaoEtnT7bWFTikh)t`$dCi(Z>p{vH`~zrVR| za8(kwMEjff&RW{nbO9*&B!>CX@<1NwS{kDI=jV4$8A}MrK`p!gd!A~AiJyDRRXW^1w*d1i$W zob1cJc@%iEmCkNx0}F)$gJwB_$#MOM=VC$aEdupbB@e3t)_Vp)-Da=C^6={z;ns9A z-3VJo{F*tyB zkzFw*3{PABI3?g}f|EfY8~dpN!wErHtcG4dH^B-Uh}ZHUS@^uj&gr)mY5E~rg4Vf| z=H-mJmI`GJw5IEd+&SxIk(UyU1V@8S7ycwD;N2f=w!T}wE$ywma+6A8i16zeVC#u;z`29odVAtE%?UdE z86DhfNF2Qj2C(`V@9`I~2}D9q5EE7+EtI#DpgCT+B;kf+wCt~G8$;ZMGCkEmV#tuo z(WPuWTy>AIXd}{ixYI}Pcs<2o3Qm5uWKl0&Rtbi&@4sSR*{C(Y0K82<*qN8?Hm%tm|**vNg4gUMSCWf~032ZM^|jL+u{5Kdde;WxTuVt){d z(X}b;j>E51?s;0^rD!nZZCE`NQ&UoHCJOf16xr)toM)np?}R3Gk*UfuBb!|joMoz} zR@tQp2m34t`U)qJ4`)$G3jQTziym)KToWgBkMfXGo=t^0Q`kQzJaPQ#qJH(9YHcHT zeO-`*r@N^pJ-tTOg+Q<<%hwV_5d`{>IzW7~fs!-|+iu!L{--y!N_0vArAd2P=pPrJ zrfV**(*ur4`BG~u0cazSy$gtkH}Ruw4r=BiYu;sjd=;?+KN&BPZe@kIFC{E4R>t=@ z)|DrUSyY6U<)e~S4>ct)Z`HFe{tqJ^Ju?8>^+48wYyolJi+}L!Cz4TH(j#Mg7tjkT zZ^F4D2J~wn-9X8XQJtoMPy}8wv7jOXYfC%LH1+jOD-IqXz)tGt+qSVO1OL@Y`aQLY zbsmqj%LD)h+uiz?hPwfz4ZQM8i)OO~|I1e)_=$Q}9S>*;j$Q@;kw9)(q@CX+-0K1u zYk4jSRojF2=>G;?_i<5*-czia>RVCSknc%R#~$O(r~Gtbu6=EwM{#hcW=G5Ss`U#9 zy+vQ0FM1TllPtSa$YOXEq@aRK-R09thl1`^AfF2}5C6SP!T~jDqjKc$2r9d&<0r{{w&y zUp_O0gMXK2*rsIfg>B5r@h4+oA?_a&3>+FSJ z9Bcg#R|iw!CxcXV;RLL^1QOq%Wkz@OsK;a4rsMzJ2iHsPmeFNMB<_82Sq5$0nL~(NAh3YPI0pqwEgm zk0WG3!JJ?_xVE_=Wc0bmHX2MA1T+f zNrPmg6<>^KFoI)HJi&`;a-2)JF-H|k5h6UF@)q{Otu;)HL2t6O2)x4ghM&mv=l({L zP%?3-C-%$yEA@z!Mh7UU&l)DZ#O>nGTsdj@a2JkUi+JkmfL{SEg2Qy!*(*@gL(Ac> zP5q2CS6lXvGo&T)k;K@K3`FSyG)*8?b(*0=9TA`9eh`H{MpLwP}os%ylrm z1?@}$g(#aSYKCX@2AchupE=(z6JMET5<6misR|SH;Vj<)dsl?Wdv%mpNVZfI&WhJH zBmrJs?&?x{VN4Sq?b8)bD#Wnh5a0L~;Iy&!YNmv1aN?l0`=uf#?lhXQW(1Qs07cq7 zbbSMz_f!ePq>_Y_veL5IW=HPLBh-|eib=%IXHHGjv63tS{`4Ps1UPxNb~I}>LnzNc zGmtRJn+>(Gw8~5CU2&s$IA!1s04^ zKHYu>1`lqavnPL=G#KOZL;c1d(FsN z#y5PIqq;OOVG>0gOP7ytaT1JAdZa$^6Sj=#qu4XIB=(yU$#5D+ME;0EG02q+mCEjd zzt>$1ssY@%UgXUREnA|Ar!Jb~H7-_u18_&`S)GnD7>qS&biSVY-UX%9)9g4>8AftT zmdL;I6W|wZ;X!lb((rgxw*40xZex@7bSLZXF_vU{{*C#Ogr-8NQc~g~4+$T0n5$jW zOflq7Y4gjGX7%(4uv{ZcjT}cjHN)=1QdL^c(;n&0MxYXzZnyYmxGyQz|D5nnfRb}& z`CbZL7@lqq%vsFaHM1{I-iU$NKhmBRsL93rLVRBKyY^pWu;A8&o5j z7W}!s6@*7)E_zRLyBgHiBs=9~)CwCAys6>$V#;;b&|WZS;X0R0eLHx9^|P$*Z;|sH z3Zq`3f0BJ!cFyQjI5cGgCp{Q4_?{ShsrwRj{n$`$j^46tUKnEd_zhN{=zm_35Umbd zO?FVKU}_znlh({oBIqc+U6FAiir993T>|_v6`~$;y1UJV%Ks^7-zS*`qhabykT#E= zW3EN-Xov(Dxr3fgFNX4AZlf6a)TLIWZJsN`f z{gmYNXO_5a2G9Hd)sHSV28ZEl#9{x*1F z9hD_QQ4F`!?}F*9EeB8MB)M8M^+)U}Sv3B^p+&M_DCcn8FR=)QnD6q;nSooMtT(&! zXJp>35C0VwX38X)GD_?J)scU!7Y)|@%BLMbzr1V*pHNhHko%yzS6O<_1VzD)DOa`O z_@}M|*)tk{W-Y|!a8->u7Cf*(tZs@fJ^pTCVnqD?-;?`x;xf8vzmyW$i4>ITodVOI5O7%w5}Ch zVk%bP=_K-h0eEOpr`I5H^8!D`)T3U~xou%UDzKfe3Mt&fQ^-qF#5keOSTV~K84KmS zre!s{dV+F?*Rt*DjHu7Nb6k~xxkOVl{ZEVL8+?6GD8VbG?2Xo&?#74xPTf?w9J;kg z-Y-gkYKy>dZo~ORVm90ocCH^<|DYk|O*=kup$T>kK?i@1{cVJ<%`T;3$`g2TjnESWCP12bw#Zx(P1B#BQ)Rf(n44o{Tg+DAB4$Al^HD0dY% zA!3?W?o-ajbNrbQ)>Bua7#rd)j%bq6A(xNMkC1X{^a)Dx*ct&8VP5}Jx(y@Ss77#v zQA^FnvfWL48(Ijoy7{IVgea0PibgRwU~=b1E0JjrpCaq~jN_OmQ8dvjL9h0(DL%NF z;a}s8Ls4bd)Nun<_&dRYg7($|*#LyqLsy-pOU+TV$)#!eSf545!p9~W#hMsCBTWQQ zm}c{n&TAC7=-*G(i%wkd52nSj)KGnyJ3n1g04O8kPK8|!L`%*SsswkWZW`&GmBd;6 zKn%R-8H1Y~dTe`qD(nTpDvM^9yk~hKmPOgC{9fLgnJjAh%cp8Wrsib{}R&%x=+{B;>hRc5Z5u- z0FyZG-?u?jOf7@OQx~VTy~Za1oA5~*IH>34V~cVvw9`!yJnAc14cidj0vZqJp{PDt z*<<*Gz%If}ddW1YjVB30zEcMVd$0J&2>+YAF!V;=RCU31mh5?ef5ES6LV?7rUmh1I zTp9$-2LD>0v>HEIk#ZD1(8gUd$142;|9MnU;W&l9kAR(`u>u#Eye!D;(!itt6p90U z#C$)&L)(r+TYoeU;r}Xu^eJW63S6UAprjSe0K-4ioy@)?SS1TlTn}X*!{bZ8sn16q zYdh~*(*65$#2;mt=z*Fn9-8Jr(bWa%x!Ep3G_}^}Q+>Nr9}8P>YAoH#pb`&xj$jqX zjk;AEmCXw_i0VA%Bbd!KxR(MiFXsJ)-_Yvy6xSHcE__`(Xkk_wt*?O_y-OgAH6kUS z#MGSQjlA<(uw2)GcVnVIb`| z4AT`~%YiW{lSCc0-&!M1`OU79Glo}|tpU;h4&HKEg$9?dq+iQQm|Wiv8_PkFM?sY+ z3sKe9^HG(PGi{JE*DaXj{03EK*hx^4gkQ|FHa?WEpM)&CweN!?zEhCYz33IWC+K>+ zautOwODBd+hJkc8&!UiV!}rx3XLT?wJWppJ{UiD6?I?74=wkXW{`9BH1DO3XQjHk= z&$5TNI>D%C5gZ!Nm=^}qrKtQdQ}`7UD|yTz@wWv$1~ynr15nWzIRtMM2B*cqZiV1wPg}{8 zCGcS+5|f8&dw|+}^9|gaxpvsz)WHd~3TN%xx>pTo`|^YsGNF}H7v_&N=EK=Qb(hqp zk;LXPz%EhX;bj10rZUwMV>4;O5nkdvsJ`p*WEOx}+mOXzo(5;IxLY`ip`6#NVDMYN zbWBKJ%~7;rtRc287`dXbI7|Ja;g-JAuN-M76Y$M}UqV@~T#r0Q>bV2( zL`4b$CcIskin#1yeO#}n0@OJwwnFeSSBZ(OPl8(>3&(R``BZ=IKb?V@^O#9a>BB)l zzav4wy_^KG|2jw!-fC6hyuc-Xp_p#CwN-lXgY+7bMVZysmO;0`t|wThZQn#06dr z@OlB2S*On(Yt{Ojij{yC7Ko%rcyEwPn>d*>ZPiPdvp>Ik?)?t9HncJqGot~pmp#Gn z4F^OdLU9J_mQ92YA1XOzTRcNcPsI%%hG8dMoTRmNb+-Xzp`-R!$xgGAd%u9v7Wq3p z#&X(`9LVQbiZ0!tp0-}ERY033k?sLp?0Ff<%AUT< zE!E)F}N(OyF6`ONuJ(>T9^$IYae_l2>Br`GJ?ywkws64wRn2)w7eCkRFj?W+kcc-3CXXuD6 zVMhGWBf`t9^GDIt56D_ms#{_UG0vi(m15K7)9%U^%!IjGktMA6w%q$SvP)F9*xe?` zUNMiT*OW*SYsNS`L88=>7nYm<+AKe2O9!l1rbDS(Jm{v%keJv+HCCIeksYUL&Rd3| zNa20AKIo4s*AlQSj)@P4j$}_Yu!)YMe6FHDEZkC`*CWva)fC|moGn2OxGG9JyIVii??%*nZWO6TndcWfDXUCJp} zwa|c}rnPy_q~l|fSNy(~hB-{YQ&^#v>k*^0VR;Bn370>Vcu~1y88k-{Dj@|_-XIPm z$I3mR&#BbV7a<&HV%qmTa^+jhp-(x6fkuFc;FGEEt%<5a;k~e2}+%Pn^Q4?rM{Qzm+8+ zEfWfYJsVNz*jgQPuJFU>1VD_e3v{7G6`ol%{f9bJeI!u0CC^>)el+EjXOr$%a*91f zOq{{3&yw1-zU*-DOD|W5In@121(#n~s;+A59UeNKz5>aqQ(R;JKGxr_ zQ*2BBIe+O;rze>nV>~$uAM>hGlTy0=1R7$XUe6jqF)KrNtRTbS=JcVX_hE zeNaLd2!s@L50T8FW4oX^?oC6l-yi$n8$dXh1jlwKCE&Tg00)ez-(036@sHI7L| zQYFl)8aGVv(+z!)820J0uJy~-B212~{U@h(sq`62%0tVv=|$cj+tjOR!%%f^Tb}NW zNgsN{7Q3I?P$3=^MqVkoD`+m8W97Fl9?JH^hP6p1z)t2OUBBHl@NCAQXbmX$y-x7E z6+ybLOM%*0>`wEZPlc!%0EWIn!b}JSP9PT7Ep?Ff3o3}`}A zi7+I1R;p4Nt#mj0#86NftPP*~_9eA0DGjk61Sa z$U-j($K5Sc7;7d9!h6Dq8r@0zT?@R-j6K=mGKpmH#-s!Zg@=Vw^fpIK5ZDZqN^(Zy zWy%`BV2YpYtwFm)`W1zGjl_eHesu&#E>p*?Edii($I;bMTj8RcgXtO3b}nZ`kMs#$ zUc)#?7E_LC2fHY)1#_dn#1WFMv4eg?IgN#H08ai2`w|J0 zvpklbAh9N!Q6|%&0f}j<03kGu`DnD#&UHLw9z(-o`bH3^XJ&TF_gMbK8HEptJT~SL&CL z1|2QOn*}*|`2Yg`BWq=N9BSU+x z4hYX7TUBL9?Q51f)sx#cJa4i6*!84=)8U z8||)VdT*7?9Uz9!f9Twhg;=Rmy3d4kG?6EeO#>wqUY`iS+XgSXHK@u})f8m+3`MTs z*oy{x1@E$L`8SWpVduQc-Kc$-H$gqjOcP7R^cW$G1YBIkZe<$YCTPB$|Jg;OSiII5fK- zXohY&PH9o&@H|`p_0aAEPQtqN+`E_3EUYOI_L8Um>aY9;?@8Plz~dXnH)LCuuQ;aS z`fK#RqpyVWH2+Vbl@QWLg1WW~n<8a<3m3k2_K4-AY3^lJ7)r+yE`t3LdjRNgxCD7T z*>e&ImbQhIP+MkA-WIdZpsF4h>+w=2MehZG$q{G9qd?ar2QvO!9}lT?UNg0+_0^Y~ z*^{M4z;5JEsK!-6(7Otnk{O3MXRmnZwb`aFEvKXBPVoUtVN2!1@e~7hw+Hm>`9rX> zP7&b|4%yVC;n#D(Vk8J}YrT~)C6>JAb>@143(}mV`!7W$ZGbLAr$WOItpdW@NSSrL zYYs_*SZf{*@$>?k-T-4Q7Zl*vCSEh4)Eb<56(h4Ho{RLTw0z=3 z&F11Vl~pGT&OQyCuVrOrR~5M^HZQ0JxE%vV5L835kcta4)MG?<4*sS9&sXci5izodUeZUuR0bSlcXF}8yZ`kVXf z;iw*>ztZFMa`sfwcj~{+^iq|u+g5z=E)oIM-XcgmFh^LIFGSR6SAPCO+_md@RWm*{ z@oZE|s#~B5-0U4-7j2AkO~n1K@@GQ_Ih5O^Ba^a{zJhxI@VWptFq8!mKC!zMda-vgmVO4#EYZaAgpRLmPY#! z=Cw2gyocwjRwehc74gw-1hcC$$ri-2BQ1LWVtKVras(<)!51bk@(Go^^;2BFLZBIY zC5#5^C(zD#G4pDnUoV1p^DuiQa005K0`YMzsjRuhb4Ra@T4m6Ar@|XxaQ^SsyAbEHZ)6mwtYod~)5E*O=GL$S7J{*s- zR$oMc07e#75WDI!hd3L}!;46K%S(cq!V+*IGs5+}jDg0_%lBfshY~Sf7c#X(VV!w8 zV}2b$h`d{LDVQZsh%*%L_BSGEB8WpBw`VijP+6xJmR!L%d4f1jXTdJa*tunVP#0cl zgn$-7({=gW6t~q$z)-a{yM~JX86c54{%X~zsf>&>Ve$q_69DhI!kcOaH4-aCCMb~7 z=KbP8EPp7xukL6q+#2GXS^8K$wR*EO;-b?>0~{WAwCi6M$@74nZda&xRvEiwHwrFK z5;N%hZvrm16{KTAf7j{vjayC)eQ8PnB#P{Aa#sE0mupD@WR06z_Blsm&SosUY^Dcj3i1=`KI8= zTv5X8;Unlzaei8%EHNRh8xu)jHs^wS1xNAKBXh`62+g!Uk0hcz%+4{4eMdS`2SrsH ze2@MF0UkFQ78G&M{poRUkP-!RZP|e)K_Bp{jb|{PeWoIkeLI(q#;fOq@$Rv`hVni` z;Q4-K$mx0e?4`b!CIk{v@gjPTA=vu`ME~0#t&aVFjj3x#)6h7C!=OE}6}NxR`OrGB zM{X!))`u$&oMw6d0w{e^7ou4MH9Cj08na+y$nnkF=ZsKNrmuIf^S=7LhOTPZtCxQ+ zKl~*1I~9pN3K*T{Kx+9X;cV=lfe^IK~tKCR8VyDPH2loVj{-PKPZ&xu-p?p*3imvjk3N9fz3sZ z^=I*6+u~N_~n?7=d5N3!DW^lP?CaJ^n!VNP5 zN0ju1ueFu|XnDJD01l=1IlV{~V+^VBcpguH!oh#tB4t`7++t@p-4bi>ur7x<7}E#9 zV^b;QknOPQLU#4M^Z4)Rfz0PJQ;&&pgz0qt8CP^N50SySw0<`bBLu?NVX2v-z~5WX z2j*}_UK&g7)XE-)LMLIe!6z%meI1pQ%oEd~I_S3Y`Xe`-&Fe7-YPR{qg~>CL)5$H5 zmUH`ZlKA?Gphf^HWFu=c%l$0CS;9GMlK3H79AL#f6CThzfi`s?XOz8e=W*q{8ZrA@75Xvuf-KmQE;xm zJ^$_qnWZLO%C}L(Tj0Jlk)^2V!LF=pHs$A1Ajb`3kS=)gjk==YA>OG#00GvQifp8( zIcyxFY*UmC)7%eMbJ$HrHL@9QA0$eePRDQXg3?&lEV^s{Sz>A9Zp9F#9i;5!X>W_X znQSR%M``(M=tqLwnJvt8?Ni07z7bR8W2b_`u>MWvIeA^mvb}2@+9z8 z4?q+Fqm+ljsx!*TDaF#C@Zb_eny`KDSOw;Vyj{fnJLXJr%zlft#bRH%Q(H15YkTC3 zIq@VIV#Zdg7v$qO1O|h-OG6p72pcx zcD~JqnJ8=(@(5}fZ=NnB9%3;Gt0l*5d_X4Ia3rl~Uvk>gmez%(_y7O^0trw600;{K zo&*WeHNPI~iY6o&0-KqE{682L12D}0GV@XUV($G-w17#kpE?^X(Qs&4Vw{tQ- z%L0u&87Yfv7cAR#m&?0jC#FgL7>Nzf>1#-qJT$bYjzpz%xb~C3_L&|32Na}hs69$* zCx`!Dhzkq|!dgaE$%g7_3~rqYRQXA2#%Gv2+{8@byG08&VUiW(+hr&8)qZmsS9!yP zgYj*nFE`2a5z7aoBpOtTXZnzW!ib+ZjMEl5Ark$gPi)PQ^qv@Ys!+a|o^)yz9 zI;;M@JuNHQ#TL=5ho36VI)TP^xwB=&Sq^uB*ICf}rx67x5^_*StqulS!pmcY?76H~;{)(Bqam7sh z506CQd8N2>S(*N_ud7A(Y>*fvaVt+nTkFe3e9tMs)ROlzQp;NX* z7Zo=B&a$KCp?5gOVb-5;8N8c=j#qX5rK1z@`R5eZXt?;*%5=|tQAN>)wZDNGJKZNO z0QgrELg>4=emLiSOlAt}sZ~vSdVV^dp1=vwZrK^6%v+QFU;zf8-eRfy>=s$S-ck2+ zA*t*(&c#oRVA4^@@tE3heIqoDP(-{yidtHRIjo?0`kEMTvRMO-jY|ZH@_YQ9|ELC2 zslkgD!w9%L`$e|W*s#ok`a7LOxZ)UNxy&x5Uhp#WE^`d`l?{dU1qsiduJJr`QwMlk z0qNC{)@&GV`J`f1WQ{+NPYNLB4V6|+qvZPj2{3=chHKj_7z1@(OGL&Ka9SjTp0r0v{)T3nDp=VR!+wSrnjv88XKBhdcU3ZUssL!; zHfkzA6y$(t%CY257852i&W-vOxAQ_asNxB73|Qahl#{=qb6v%mgVOHgL&j|dyDk>a zM4;lNoK|&44_bdegq`P!c%tG(}7++jZ~aan7Ab~+8#76 zFxFV2+f*tON};muJRZITLrnK!pd?==KP7)O-&*Kt|FQyt*OUdCcDqQ7H|Z%5oD{~O zbD!|!MB{gem}UleI_G(LlTzj^C&m1t7~iBi*?!xnz%N0tG`zrR1!wDv zG`KbPD*}k=xEu4C)P%1y>&z@PM2yFQ?_dH!(C_9fE%70li7OaO5K>(0ch^x(NEy47 z_+QM0KZ`_U$4T+*HvF1LteBK?sHRm*U_;Z;k0Yb5%|x0nB&lWz!4@L`^ysl0#~F&0 zuWhyOpi<7F1;DTk&GmiUlcm4eSnJ!(O=6~50A?DKt)t1V?()Eq^oLfKBoQs+7f1b|f`gv)ZxgYyy!nW>~Lz7rSSjrLw6ye;7Jz@vzi345WW()*C zPxctE15he0s_CxgZEQ;eNYCFUAu!_&Q*t@^UG{c=P3|Lo{m;TQ5uJo*DpM6MbRxgM ztC{^_ihND&8BvgIub!+jw!5j4f=dnnXaDa_zT&zfkJ}%V>1xj@rP0Yv#& zOjYhQ`?!y#?r+m`p*NIMN=khP#dk6O5^`@SQ@0Yr;*S4;M;K45f1pc~ml>ItOoWGiuk?mG@yPPoM_Z6)Oin;ONBf`Ivy$!F*g2=Aahd6Yq*OpIa@jbcUD``z_p%oq zRu~&!_h|CppNepec##SS6)FZzN+8$z?G2bN5CzT{ zZ*%V6jPH+14BzJY*lGEF%b^%&EQX%5l9%?gN7M7d*Ur+{#w-K2r);ndcu+B0m^~iW zH;bo~V}UKbiffGqH0Oz3qUfSlHYm&W71A^{@*LJzj(aJe@(mEwI7kAH74RQnA3TU; zh)GcXl3tsuB{vYJQKGf{9?jlvEObt53MFSBcepUW0Ggyo)Kuc8VII%DasuPH&or6a-WrrjwJHa4~aD zP}`4|0S9U%zyCO^PVt}V0r6m5#-Aag?on@dOav*$KO&^4Qwtd5He4dQ$aHZ%Ci^aU zPkW)rJ~!pXl>Etg9ROn`L8~O@5v(m*+5lf~6E=vVGa48;1~ex>sHeKSOB3@W7b6uM zD^@^rr*-~xY@3lHPzO|jms?63e8fl+8i%-@u++XXlKn%NiX7cTEmVf=P$n@O`1%P` z5Pag3Iw>f8j5N^(bs+4a^zc=ZRQ)5=zf@GZy%R8865`Ti7dByAo{dc*TYdx#v%c`4iUX7A%-|bU?(A6!D4KNlyt}m=1fl97);#94W*{N1InE7(~25 z%EnCyZddlEuTh2{b4+#)Zn<&~?i;O=E3)Vhz>J@Ev$Y@eHig?^JeQHnrOI3TMx#Zr zJq#qx7sj_hP3bNw(0J7*?_%cJy>09o(`gQPc;i%_zQs(?4LRTW8+4$~(4egNfMq8T zcOhMwawXP0F`+1UBTCG~S18v#l*d7)#&VDy!Zw*#e^v~^<-@M+KOF#jPFLEiy@#82 z@;TvO_r_mEVO-#KIEM6eP=OWU#HHF!aeHket+EKd-ObMsg1&V z+qS#r)v#o78V}`*sj!p0_p?lE)yS`oNIS`{PHq&8vVhSxEaK-sJC6mk#l`-Vi!2?~ zyH!7%Z&GNW&$&tb248lp!>{7kVM7#@;3YR7wHf7p&0#EvhWVYCxJ*V`g~=74P)PnC z`$9|95)@5z|I#YVeO_0j3xeM3#Vf~~O53}uz?LU(L3kXJSUB%#<2;Q{O&;LI!|chW zE*dd68yx!?fWe7W6(T6l5b%eJtT?z4S>)GX#w!!w*c|q(D%~I+DN;E#uB{}aZ^@nt zO-4lLWefEc?HJPOLFvoXk^7>uLBC=;}YADDLm_CRa58Me6G+# zk3r`B5=9S22b%$SHyU?sV7hQ41%!T&cTYHtP}u>@9-!{ZobQ{pw9wemNh_cFw_d)h z;(>|`$F2XehCCaJp*p^NaU|NSk8@yWm(>|6n@gV#j014fhMY<{O5CRDvtgov+#^kE zDLU;F)#Ng0&ocj7-7pnV;Np#=4E5sWnCR!L~&PbEQ^}rZtMr+Mh1@?^@`?# z9T|{JQ}w+tptn``*Le>ls1u+!nY3DjPBIa}+)=#+d^o!8&NUh|c$g5hKXOFg)pZqh z$&z&a^$_2(wZqcj%8TU(PlqRHqSNlEY1Vuv)e*_5RuKBW&pk+}=Q27@3uMk|U)F67 z)Ml0$k+LWvC4wH0qP?UMb~Q@ZU*4EvD!k~FV$}> zFN-~*6S|G12RygXnu}GCHiB3vXUvDibIMx(kK~(|>b0Nnr*{hj@ObuHbxnCvh>r=) ze$sGHSTc7ewCp|tx00i2_;|FWAf@rgv8l0E!W<7tq^3~&rKd_$lA__h!sP%D`-Al3 zIE_Gc=D^w08bf`1wZYY;$6tQw@Fc)k9;3$bEc73>Qvc=eF6eIBh{xLl0~rRKA|x<6 zsa4Yr>CAwVg2j^c4okyp;CLY0y)a8q=nV?`VW+iFA3RUmd zHNenpIDZ6713l(6(^IJ-QnhyMS;JKo&jE(|=^#oQ7V08tq>39tbAkR{pSgd4#95v6 zCWAqDJ0a%WBgg0if3B{gIn4mL!w}&pZn&~y=a2>|f+9d5Vp3mEQZ{V_TNv@u*+Ilp@t?e~A852vb zKzJD?WU$O4MaFScP8^d!B4c0%3Qw6V2o!m&+RE9gk#EN$#qto5P3^aHsY zy*zM7F13oHVa2J@6e&&>5fMt*0`e}IU7sSN8u?JkPSK%KA{Qo%chwbmuC3>lO1*o~ z8Y=d@ydfG??WP9If-#U}GYTI7_oYm5rzKkHs>nr)lp-cRNo+g16XG!#`esH;(z&)9 zskUzS-`I3tspds9dwkpo^b964dc`eD3t@7tDPbWfNy&sklIj%UI@(1 zGq38G7E7%G-2w!$nluK}$rNoo881GADOwyeWapx=tcYj{RdJ zOm6^H8GC=aKPw`qL3|g+;2cuiJ`7h`Xr^B)W;Uh596nEm@eadCNd^y0xVK-*1jVI} zhY1xkg;s0QzzdWj00m0A5T6L{SOoIK=e?L8RvXwi+D#-=I3cKonbgE*7;(>FKW6S> zZU%hDdW}o6i;|K0`dlFzRJE24#zI0^WN;*-!F%DmsQ`!?sj45k@N3STlaDJ3Om1+X z0_Vxi4y)GFeXN~r#gZ#+FGqP1fPMK<780>#()ovw2x2>t{hw<79W$KKXHc@PAW_G* ze9#maA~ICE5vUg5aK~$@%A08dV(T+1J@zMFW=3=AVnSeAihSraB@1aPmQq^Sj8BGs zdJ?Ly(p}ORNk+2?tQM&_ib=vNgwRnH1CxPE%ya{}MFN&)bH;AEDe9`8T8#b{yS+10 zzDn%ab|B1b)fd>ou~>o-XW<_{Wzt=f`^%rv1EMVjM?_X+tiqh|nTSM>8KI^gX0Psy ztyus7ml0XnDo~JGP2d0nu5d$sskiextX zLsv_cG@4`AFLLgrGq@OTYJE`bbO;q8Pi!Il? zN>@$OE8N{J$kjkUrqi}hyyI>jpVPpX0a@85P?7~zV8*ByDH;bPK6$rWg_~epN$y>(bf@Rx-T=O|G0;+lA zJWniUcr`VDpYYRlO@~^_D!F@c1d*8iBVv1-*!z3fxH_{+MXcN^GU!)Qa8C(k!Of38 z`)kN)8yZ_#r#O0gjm;qpruSf{cXW#qM+v~0Vjaa1moV{;fy9Kpd#R--cR2zNQ`_st zop&t~_If;m_;as1AqTr|I;D^;o)usSqJRZi?&`3B1_I?HrXfJ1n80k6T<`lTa4Bc^00 z8SOUM{IaGoTzAEHoqS?M?pP2&{LUKI+f^AV9*d%X(@O5Op< zeKam1O`Is$%9$wh+mlXoDQEy+(>D69^cfO`2rK8S<`XrVBV&t;wk1>m-p!$XMLXg)`nQOy?pzYNVfX z=(xZbvB*h4j&T4000%N;tf?4^AfQY@bdfu{h<8Sk@?D!5`59eug>0D(*;%`dMXw0v zNK{owV6ELDMFB5?CS6DJvrDu^Qy1~i3pqLaYT_m@7oo?0v$K668dUYAO-Hgp*ho+b znwLj6h@cExE-9r%T!BdLizYLZIeFY}@aB3^UcGcT+-b~^RN^~tq21ku{NPwk65}P#?&>%lR_~|epKLxiU*-%X>fJQ5bpW_Lsz$xxe@GTlg?u7wXkdpm& z=8vo$n}%kA7U?aB7@lp-pU3~V`yXKZf+f&7X)fZ2UbY{Nr8=OTijvN*iX59;E7m}V3}Dl zsYoNbcy&0#&}I^fmaQL%K2S2ShVrzaPL#zo4$ImkK~Hg(_iuPhV?9-RjCLaY);dT? zOfl-Apr3DWOnRZhyo^zAF1+=pI!8RuBJle_!?gnxPP)zU1lgpz20G9m9K<9M5y;t! zK$5{9UvnhB9U{=Z>JKkK2P~+6EK{iQ$~QHFJU~`(d@1Z@g>d`>M2OmyJQHy^0O5zY zqi8vYC?eljN?!}nLAuzoDcCc9E5Rpdch+D$JEthsZo75zWeZe#R~=&i=`_F%Xw8kw ztd}HkX~0>oA5=Fck<@y+5zx4Y;g^qQo%Lv7VmNKagEHXF@45a;P6jt25I01CbAc+k z*78`Cj7L)^Kr#j*gB4bEIB|wVZXi25r~P=Cp&9U8n8{NE^kC{39`Mqwh{VZgYEt%3 zYAx(lQ?e8yreOkU9zZAnT_=bT@_=QoB(d2WkN_yj)T@-O!>l9EiKd~Dt+(DS!Btrh zE)R{Yi@c~2ih2Z56w^*khIdX-krdnAT`5xAGBIsd;HgG68VIPwd&p-_)CtLJ1%Xy! zimGd5u*@hg=u*LqW^^^Yt-8a?IUUAX(5&#IJFZd@&LG_MrO0{vo9-lXJ^X@F!LhM* zlY?`qJ~5A@c|8k-fC8HsZ9p*e4_ylC&>`>~6`J}K&R=UqMbdLKc*}K8ylCBuz#sIC zJoG^LZ?9ea(XQIXQ*=hn%au8K9TRFXmIX(WzD{yh7$s;n#2PJ0(RdleaKX6Zgm%f6 zbRO5)tURb5s1t!iT^~@~7Q>;oNMNfU>@}%lYVq@oYO$q8CEyHAg0`Q_GUF}NMlt}j zpEk)=qRO`=ge@uM+V40b;64GRoIf5u09fGocoBg*xxz2dG`R|Nwq0B>whA|aSK!VT zT4T4uM0)nE*5~C<niL;wv7e6vMg6qZwC9hz6v$&Ot5(wCau1dV#83mjss7Bs{@ ze(DfnsH8el9%y-0gBI*Itas+J8{qtK0(Ie_=sVQm$c4OvSG5c^;`_2bvi!N%)|8nZ z(2RRsYIUb}hz2fzF=Si`TSIezIHkq;M_td#VGVlhVL%0Di&C6fCcBOop)>`pbe&ej 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�Oht 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

      ^NJvhoLUM z)Wk=L+hUnWg{J+Cdc04jEJF?IE%nBs%&;`@!E1#~_5j#1j>O%n>G-u5Ie_oOVdu$k zM6GRHv!9cpIz3wiu6n(0KOM_40F2e(e*uUyYR4Bey@FEHZF%yIFhvG%vWBRZm| zD7X)^`R|08Z4w;M?vYTTSKg8=CIT|=f=zERFPzxh<+c6$SIzxT)RTaKwQ`?CFnvGM z46ls`{XKJ5IqHz&@K+0OD6}tG{>8$HjW<`5!S6i6N*z$qOx;%oLV#sJ000022~Yq4 z29p7v3OTY77XJmAm(RBK`Fk_h7I;T?)LMpP1l$8<1Q zl^GgS*Cbgt3;WaKarDIn3-rcZ&j`>Q#Xg$0FdcQ&ylrAE(Y=w@13W!8dK4o^b+l5Xp$pcRwpm{Z!^xo0$QkmgZq4T}mOaDsgM6V66q0cS zguC@_XmEzq&WJ|`nJ!_?E4$Gi1S{9>f&eQT2Sn3qycL_4cQWH`Vav5jW8^rrO^5qK z>^Vtp@xUca$p{9T3NzM~`ya!-U!zb05f3)M#qGWP6gC9|{ zV1f-U1mJj$`02?%jY`kx9zfTr03-#<*fpaSQufZ2_gpve1&v0sOz=oCi22%)B#)(! zlDg_j_YDiisj{s=1dn;PCUUj}LyCiJkPd2P#J*(E%|e#V9GX7uwX75AkZPEmAP=lC zoPSEA;me!jU3;K^vYpdD-S0k_YAEkJ^@&WPOGm_(k@38A7GyNA4?e*-y7Gk0(PG7medxbv_D1N(wz}} zFYH;>I2Mlq5x3ecrV$>~bxpK^h7;YR5{|Q>oXl^~vn7MlGt$|lXp^ATL5*!8<@zp% zALWR!2|PkmE&vT4ljB4BspK3}uwhw&kU+cg=PRg-BkHJr4B*#}Z&0`X0}g(F_T-QV zu3K*HeTYdFWnqDxi(A%kDvVTy>qi^jP&hYPQv%ToHj(U2lHll*fvQ{N^AgF3CG;4?*`PzthHfl9wXfS4 zoHcPNP(WP38^K17g3H9raF-~|?m{tAcAC({s#`+VVqJ~>lnLD3J+hUK?)r1fziKqb z_a6bd2)coeG!0JGK1SGx@x+1#SMWwo;aM3EZWmrnvHv+)UfL+{Hp zB>kVQ`k7eT2J>%OBsx-GyKfLYiqS_%1|7BksUV4EN0zm*r4xk&g8cO8YJg%f2D|i6 z4VcO?#(j)TwMEW3ar^Dk5(k#$w+pd2d<(R&%}1`rcx!4kzbM+TmrNb_&9^yidq`O44(wJ3#J`H z8Y*Eh`kRqiOGn6g`7?40b!nZj582)CJ$zw(x%(%`E5epDWOdPP94UVxDlQ3osqZ+f z*_R?^YIsd@(lYFHSNZ^f&;hfOK&;EfB{7J4$#CNkHXkW1afO}uFbNutI?A`7dZ~LO zNjKF23FGWcUSrC)twn^|UzLDGzyJUM0tqkx04!udnhHo80$>wroC?4q>Wc!f2)d%c zm;~CUtADAYnS58ON>W}c=#f0Lfi2mv`}&u_po+j*+qUs7*Ch4gm+?H1^k>f_h`2;+ zL2mk9qk&>PuB0<74&7n3ASkOTt3KwS)H%(1#F7zKFYcBT) zJOd{Y6^j;U@0?&DRdbzA^JWHuOIaTnng1G{S<~S}8y0H^cTE`5GIz1Esu8e zLdi!Mvk6QoSV+Sz_b;F&$?wQCgYJ3Rxrrz}C`Bx<<-`kb;qN&9ym_{*xwI3~$&vZd z(GS{v>Y*+CJv{No5$1Xql$X)EC-f#t!ft7MG@pXDWR%_US176v?OI=cl-aT}P%G!f zbSYex?tCFa)0NQ^%o`@9`K@QQF@-`i73c#fOg{=pW0{KKyz_ZVlAm*!bG-GC6e0pL+Dc=+vF zaJALP0j}ZOGc~s7fg&)AeoLnU#?ZsI)0zT-oqCvmw^hp_C72e(!Fmn3qe*LT-a3q@iGY)1@G)7wm3KUN`Sw%2 z{3U^xH9A$^rDrtf#UNaL2)t;R`&cl$^qQy~iINK`DBt9c{WbJep}UE0fdF-VkRh+} zWCeANV927FraNbd5VH37Ul`4tWw2$=?k^A~@x`XDqR4u+-?3T{r)3UbN;}EaHui2; zlOTFkaj0sz#Dg6s4ZH~&#i>*`z%NOA5O0(34nY@05;idf910|W8)Lk85v;*BY?2^q z`Qhro%bBbRda|_k-zYU9+U7X}*Z%+N(^2NB5XVX8^yVY>}@I zLyBRjq-x%65^U!q+&Iyoq{H2phTgyXjG@~=0ba^w@NX3G00B7ndP_4$m1B@kN)dkU za8s##t^Tx;7xYTd9}s|VjMS#Qir9t0(!tz+v8I>$mY7(0{Au#GfPz@#khrVx72iRx zghg4ISvUX+j-+JVQ4+_yg6qiIn*~PrcMI;1?l;Tsn{+lkbcuUSG`4Z8DC@g^aoi51e`tf%xJ|B{Z^6dWVAHY%v;7r_?q_PAyg_4UB&OvfNl= z`%p!D91i9{yLf?x-J73`!I;~x>~_zP>IZf0F~;SfW5x6rAXx6* z#!Trj8Z{vtB5vtk{STwx!h50DqT za(b_eFYU!mhaCTV>$c>Ds2+1&R$|{&19v5)Tq;t|_)4$9$aA&v(#kNjAXW({QEE%? zfrZWBePq}UnG9~!UFEK|O|{7l2+@KQch-pLEHD@*MR5wtH7qS)A2zf2UL60!n+iwb zG+D<(q~m+zD&Z3X;@vgj&pMjIS+cgOa!CmrqLb@3yX|%h-cT5a1LB>UF~yQ*X}}7Y zT+m>JhK_bsO?2F+&h=J3gi14CPr&{vQ@(EOEjs-ux7_{ffh!T0s(v1K$E&7ZX&n9uj-FE1TCK0{qj!u;j3QW zo=tSoJ!!BhS07n$+Y>dPtY#}W2xZgl3f1E)B6W*Kd`Z^Da^m8kcijKpNOq?DoR`jB zepMR6bd|bnefqC+p?ULJnpi`q7Jn;mNGAQ6m=~K|O4vVzXn{<;LQw)7|PiuVY?9HmYE;teOG1c!u$@Mh~ z;PFB9+cVD00bq<{J`^=h=?vJk#tWr|)?=R9_SrX--4MxeU~>zct^2Ev18IrrB_ah5e?O;4j8y__6Aj zENS@;{PE@K1By?$E#oh!InGU8EgoyBdB|4vu*NOWxk{9js^qqOG`$ATuGa4WzM@U; zodwDtJmWOa;mv5+mENZIf7-5lkM*tTA|TGX5)WRz!>2n4%!+)(qmPihRD_o9a1{3_ zA1r=PdGmTnZT{v9Ac?Ap4Crn=oB!j>meYmZtXQe+P!^!vj+DoCe>9s>O=qUdQOHL^ z`$Yz)X@JAnBnz;Xw%3LZt_P^y6*@hH0&DPa7$g=lZ4P7t^FyA~dCH(RnV5Er;^SG|Ji29hv7Fj(e$GULwItr?TjT3v} z(gY@K8#j_R9tZL#kgK9w&J~s&XRRN*F2(jt!YX8K<@qbO1FTopH2Qbdg+DWN&5X@^v}8Y7O`W=eist-f7}5QXyCCHAypE@< z`A~5PJ=Vha%lQB=nyT;Z^bLCfE)#Y$<8u%)HVE$7_PUIVq^DJ>rWXeng4 zc`E_(!_N&AJJ?`I{BCrP0nKbgFT;W&6cRW@o@1KE|_;oOBSQ1c9103_>k&_J?@dH41fscKJw5!ucg ze-Qk-?lW^qOQC26(y7G6L;Va~A8nX)z=V-8#9r?_oa>I%9f~hc+shg2CM2^FaWJr2 zErMAPg!vuC3ts0op_j0g>?9@qIQ;zyPPsNxvgxJxxa=W5s!Xub5zjyw5YW*J8x__i ze3`d!`T5RgZx?tl`-|QQ@SZC+wJ6YiDj~ z+3h|iHtfIoi4jo=Y~U_9v;bDron5A8<-m?=Z_0FpRq!50oan)1rUmZa-n zJ%+pgBoT`Kf73Q1`sg=k&#`L6go8nKLdg3s%&ep1CSF|~^Lajk7 zv)1GMdwSx4R=#YTZj1_|XZU~t^{oU$Zf||tdhcKM_CJ|MMP>7HC5jqaS#lfX=ORX1 z8x=<3t()g~Fd!Vc)1mnEj%b7BA@Djn%Sy3av*pNjLwCIgM$V_k2tyxwx5zu`J zJpaL7WxI%k4huoZsaq={<&A7?Q%u7KgdVwqWKAWbKZf=koqhA1U?@+2F_^Hu&d#V= z(oVkXGb9z>0}Xk$Yy(>~NW zNn4GDpEnAHAfQjVM`>ddE2YNtw|jz^Z+^5Md(4h-zE(F%1rOsqlK-?1>nM6s_T&FmSS-sNUOhVjm4gH)ws!EzOe|J~J z++ZUQQ%Xe%XaB7t%p1QmilQ^tM*)S)H?EFZrmkN0L2(r`cfn|c2=5rq5IO-XGV_gY z(x!$>m%;~dwy7YwWS@ecm6A;zif;4bvL?=2Ic+X+Dh&0PzmV|}SH!0659Z()-Cq#BKwXn6CI_)saxc{BjTsObqGOe^G7gOYn z#l;y|ivF2qk0Idvuh3}Fy>%mHZPx4HUK~T28q+o$H!Nz? zVJbjO&~_knZ}NQTjt?WWRTR^1mfAne9?o#*d=e9V?=p3-Bsu~vY(;>@Rfd_o7l+fz zzA+GI)L#BPIfZKg?a7WnX1O@FAjlWNU>#9iG!zDzOygQyDqXUS{uu@uKaS$#wnca2 z8gRbXMA@Mdb;v(5{4fh&QAilXwN;iUd$2K%b;AFdzQ9fe5IhTR9Zb~b|FXd2*k;gN z$u6rKFiyWmWs`F^aFr>o?I9hL&LtMUDlI!GmU1BeN^ zf99(IY9CHvaR#%y?rsjONFCi79DW?6(O4W*bgdDNu3u{D`PgL9R~L$1jMkw8j?pfT zxGfhL#)gj~06tqY%=M)q*i=!T*Ar@;Z=ZRv5kQWm1q&-72927naCO#>3hdv^rxaN= z?)`2VwjL=@%{DQ-XxxU+fgM+btu>yRPd>wt{pP}W!GraUbQl`?w~~$sLahMK-EC~9 zh(4a=U_Hu(>eZyQG`aG2BxM+^kb{pr0;O-1iUsz3A0z>M&SBAXpgl# zn)qy~?b-BRc*4W)ukj>e5IWXVNZkHL=7D*F%Hs{#azBxu#1~5CCQnU`bjV~ZP%z*d z1*TZ+{c#SJxI#jeuU*7){*OD~2~;dr!t|G9gaSm~Zt)&M){DHfzGb0C=>42l>mkKP z-@_}t|L4(FKv-2&$n2>H_!{Zop0t7Vg%EJV;NG>Y_SA4=d`t5&)w&E@Ui|9K z>qSDNb0=$e(;WTc^dCh@ne*aWFos?ev^MMc)QHc{$Dv4$xmiRav>YVoP*xK z4yL_gBIlRQxvL-UIC9rOOpwu-|7pUbPP=!x z21%0MlvLvdVGi^jdNeLcyYa(!V5!%zR1s+W(-xa-MUXx3A+?S1c=8#ICNQpSR~w8% zs@iP{l+zz0cQH$G_W2d<;?LK$>dTb8n3Pc^O>+5fH1lVQAM`Y=mE9Dc)XVF5Y`y^| z^)6b3V~zEXFCXr*k<{s_y6D*-#-D*Q9|&lL1<=3siL5evuW_UE*-9m0%z?6%XT-0l z7co*PMq_Ze_W2GK-8tAbxeOHoi>eMYuJs~>5lc>KjLpXS{L!XcbdWjzUJpdA&u>nm#@JCOs1Z z*xWJh37k5sXi*}aO5}N=X*Vw_%g~X`0y7T&K`5u;Kug?xuzhDaKN3Z3B?KF#QkCOO zQH;p}`m^OK(`vQ_xK@Iyipb`Ejz44YQTZEhgmQa@nA#MS>N55%tsLR^W!w@*(QZmr z>3S`BLprla#jR-I9!Ifz?!d@h&4a;RUA5p_CaLTPM@74^1JmuShmtH9Ic_mGwTUl6TfjiW9WE(Pm+SWnXE+ zbuD}2DoXE+L(Z}y*Q!RJH1~3T0^43)*C|^(H!Jo!G`&kYo(_9*e^Xshlt6FfU$n@b zXUPpj>5sfIV+@P6&uF1{dTX^iZ)Y=4wCX+0Iw+OyG!fX5v_s;7OhID7T+3prL6p|a47TKB=MT^=~3rVlng zJrV@;0>6v&Ha2==-QP83yAxNOtNO1!y&BvtZ_8K)%8l*Tecc?zMv|dG+Bt3?L8a7H z=6;~S(C?>|B1=ec!zG9SPminH3SSmvX*L2@z`-+Y1L<@I-k2}FpB^TyY zlO!hP0Zq>&X{zHu(nMf!kJM7R(+-lUfovd{YZ#=g z%e1lli*|1;eI2b|;|IgfmAsYbMm|;AAzFzxTzo31sGJW9iP!b;mRP8wc+M%!Pn&)6Z7K@YVltqQ!jo+FSazrwE@|3y?+J0EU5)O0aB3^kMXNg4avw-xUj zKyP*0PdopI|!VR%4>fZ<7i7}M zR_pt2M1$hDuZ&Iah3Ygw))B?%@rc52@gPe%*>t^U-QMiGj$d8(u?Hr_V)c z_$NrT%2OUH zx2QgrQIf3jAzKuyp<+sPrY(PrQxtY@!atg)!XYf zIAzUyEM4QSK?+K7)Y&+hUX7|A$)p0y<4qd>9B(&M8aXrKb}o5nFL|#%B=kJ z)WHZM!T5Ux=2|)GkchY=xU@xVI@I*Ipza|n$$5{+l<1vpp;JX`|1l=c7~mn2KP-t= zZ~sB6G8V5}77|t6Dw!}Z4+P=jcT-|VUP(rK3H9IMMKr`|swcI7OXwGAE+br643OVH zTja|rrDsUnNFiBk%vYa*+LFrRRBr@S{F|8#fl%p%9U#lUX_wlIk$zQBt4p+>Y1Q3* zkD?esfl&(g^aE`#+!6`TF7GdX>+5H;xOfryVR?Bs&-UX2J$N7j=`71(kg=b7YUAOT zb(KGfbB$x6UF_P5wZiPA<|B^sKP|6SnJ=MP@2Ph}Di%&WMPn$2md((4x3NNDwIRw& zYm&ep=~DsrDs@EC*~JTBt2<$M(Rm-9EBCv$jIV!=6r>5vsVEbyz0XMT`J$&O+O{+{ zYgo5gWgd9%jY%3s>rCZ|Q$M{}&3@gRq8?3;F)c?iCb?FjCcxK2kkV3!Q2z;I_Mg1@ zT2VG4B-Eel7i&Sm+rxg8%$c`cLvEgeP<9mSxO8T)z;isi$>7CH;6URs@ZR|KN5EU6 zO)}S3s=U1t8L1}M)t=^xqs2<=I8Te(?rks{EEhm>Q6TUPApumLp&Ot62jIBSR1Nt! zdSpRwm46bO(d25KsT`~=J^CznY;0tumRzv>$+bEo_khnzql94N4sG9FTX4n&$ z?4o<`5jOYU`P&$;_P5Lu78Fn01pfe>8xwt4iprTKuFpGfc^W}23p@t<-*&kWn3Uv* z7S`CJeHAp!*oM`?mMV`+Kg_IqiIZ3P$@E9;eCOfFf}+KV1;uNSVv}zQB$P~X@7!9I z3LO(4X5xMMxAu+gkqLf$=XwbH8FKUA!i}?Zs7j{#*97j^njXq$-u@3|5D@bU92aa) zp)I0pBp%vpmm;+8abZe$*=z0{9Ol7s%iX%zJbXocOG87+sJfPf3m=lQ7L-x6pR>Y&tfJ4-XZ#N^Qx%LrLzk<5~7>^TU3s1 zD^+>Gx10?W6%NhfIJ%NjK;TsTpT{f@K5<@voUm2kDHh@98B0o`^J)#rBM%}9)s2XF z*Zk*)?7X?lM$TM)Dx)n8-a%ZoN~Q5qr>>UNsR5qT5Ul+`yaW^?P*}Hz!ux@RU$cvMg9V+cv)A+KX+!m4HWG+u0I?}N?v3Ed zTXSfZd*|eE2rt#*@MWy^3Xy37jkgzp0!R-ETHpqw0bWStg&@P?Mx*p10(AFN?-s8Fwos^&1qwHMQ6i;13gE&QE(}qBKoW5#>6X7oFAFmDIhN#g3`wfi=g;SzxOJ4! z!GmkgGD)f-Nv2=;qh}kM(#vC)ivd0+-clqP1Y;ox5^VtCK24ED`9Ewff=b< z$w1QqWwUPhuIO1KwBgvnGCIyr6%q#JvUcYrcb2`1BaPVFuGKFDrT1a)&4~jTec&vA zpM6XK*g0^Xd<~!RsBUA8Me%!f3+kZC5gz6SJ{HhR;1EK%*UbdE^M}EgTHO(4Bos zv~fbMh&FkeG1IZXl0HeqR!n!wsnb;E)58-fWW9h}2&lTSXSN8OFfM%3rFA}Y@A=~p z^PcKWYSo+{ugG59-2X8w0v@F5jYP+f=S5D&6QxmQ>LAM`YH#VsNZ^XvSgr#+Znx@of2sUNK6R{ z3hbkE>>_9H+pXo$tES(R7fj27-$&db{-V#FM>m> zjA?V5%dJnmmIRqw(Gw!{2bm$xYFv^^s%p z5g|Z4ky@0Ur04ZRGf8trW?!!~d33%?jDfA)=uE5Ivp}KD-v9XZ_F5x5d*#!(^*r%D zUVMAPSCP<_I1K}|_sLv2?un``MUjG@#12dvwC{Q^6*cGc1>@6>UW~Er&5+b?ibL#h zzq5s^Jc2YeyF5S!@N{-EF7SVg00z+!82Dgo(hV}xoT*XV6BF1OUDbu@8gOBD{3B&qN^$@hz!bbL!9_G;kOUb<`g9_<_XVP{qeJIWbh*JZ zFAHy1VIX7YXZ-80+KGsKpWZeFqnN^mOw=01f33zK?g>%_hxr6D8F5iHgcB?XvejGE z%@ z)Eavyn!}%sl9hlB z=>tWE`2ByPqg53{6=hxR+*Q!gK)D}b9{;Hu^&c#XS{R2IJU}wQkkf%ifi(|uk!N1J zXbS(EH5~GZK8--H$sO4@3`SXXE2$h$g0s<9WmoatGA{8JPWK1U4qK!*QS+0n z0*^YD%@gbCdlRo&Xjzv4;)ZQzq+U3VsUkgxBTjan>x(_Pc)kU8?jD<1(!~cn2b!3z z7@OE~A{WY?Qhb**&Dg7d`56jwlz_kNa{4o%rj_?#ib3B?`js_?OMrSUcx`|#jjzV+ zyHBZ1i8Ad`gwt9;&#d&3>DW^j)s8G3vdm2x+I7#+Bo1f8DMAZV`O(^p=e{}F04+ERBU*Rre?<}sGVjiC z4a>_>p?8)e!XtewtGa{V2q(2D*T+_lDWo}xFq~@qM628F%=d68O^beGE#n~pPcFyN zp6_V7Uk4qocV?|XHKbHAJWa;MMuGsly+T7B4-rg-t;tocA5Qnu0}f&l<+&PuwU>Sl z$6aNpr*#A(BR|~)7D&f{?1QSK=CljP!eE-ZP(~)nq00ow{uJ=GW-F;rzC42eFdBX} z|GSnj9h`+F%?`GL-Xp|ouU3-mL0RCHVJRYU{sB{d^MX-dK@EixR^X`MDr}PV{qMxG z6rkb2VFz3$nYb;lf~&P!$qf>VzmM|N;&3-kAr3AG2oUO1%P2KqNvkXI{TXf9pHrL$ z_i<>BcKGzXRW)x!_<*7>gAnG;4z-pD#d$y#12LZ)05v%0T4@!EF7vW*(Z1r?;q0>_z0z+jpms5RnKC*c&ey5DRI zr5qAf{it0WM>nm0w>4DH9-`iWXLY4)L!EnF_< zV*ZX8731;p*Vy+wv6aF&8;c=}K~DYdCa9g&m7Y<|wMp0fvwxzXT2H2BQ!%W)8~~o0 zR~}G?WisM@rRkoB2eU*r#u=9WBwELs`(s7;Bpao?;=mVvgnMVK&ak*pxZ4YI1jdEKS? zAUH3!ioVWqw6sXBYKAQ^jfd>7EVlhqLebHluLufFgyu4mk=>i1YL4PDNuS(6OtR#w z5mbM6cWrPdyWQcobGX4v8`?~wsFYu$_@q1pS(?t~GG?I6R6y;qk1-Ewhd%|KvO zx-n57REWre8=s6qVOj(3I&Y$Sl2pN6TP!w;MV(he5qe)!o7?LPZy=N_k%Z@i0EWy) z+Ov$a%UX_Icv@N|J0zsG_>FoK5HX#vex!`(Adqci^&-6L-td2AwzY|WudrqGXh5`V zR_NBbF^|67Bnto35|)Bk0IDUIdZd^(s=<7ljSX2oZJzY<^*aITz``b=P^^>}>L!m4 zBNle-C8v1=FY9f&*DG9DwfszpB#0dU4gDKB`wy~y4;0TszVZ@Hy@~h0 zR_Y!CJXH$a$@HaX)h{@^j|OI324qjXcYeK%cy-wShmluN#%g;D$e}r z`7vRrZrOLRm(7-zA+R#&K)Nok2snuMQ<*Pw?KGe1M-)FmHD^*GS51O3hnAP6(1Dr% zQ>?fBVX@7FMzxp_dK>*4yh(u=F>1Bbj$!-e0)4 z9fI=)I1ErY;^2%o$0NZTm_Mq-zFp%QLC?3PHP~rpoXt_6?Mqnm->$EY67aCWhjs*8 z5gRx+L+e=&SvT;i5ZD6lf4gaBhUX@W&29r!-@`9JYVjcoLGbP8$R9|7_BlIQVq}%N z3Bw<7WT$eTl-1My<5Mh&BiJ~sbqO)C-w&}jh8Z}DXs~37R8}c882&T~(q_@eT$sf} zOu6qr9aO&hPl(e@61;O2;C589Z&z`2erV(9;Mr8T`#lp|L8yn;`$d_e4?Yp#{@0ZP z9-ZR~8oB;j8F1c?*(I0w%qBut9#@vBRqSP$cRMV_p|JGv=OyX>X0=$Si2*d65b0?@ zeR);FyNE4U{2yC|=oeYhjOdWM_F`^`0H{^2{xMqCO0oo5Q=al4Pc>1i6m1AfsETNA zs3?-PGwcGvH>9axwp1*!2!WKVrCD#|OQ0__w(4(`B+CCkma zr&n~we+}u*8q8vBOiY*D)UPc4dG-a#1=jPS_};OqJ9}p!=8wFddH!2k6z3jD%7sJv zBkQf9#BWs{16!@2BR?HGDMv*&5C|`qoqDV~u!Iu7!;=mU3-GsiH)qEx?<-BLq3aOb zWqF_w#2#2pJNT3Dl7qh!_;3wQquSN`;5qo&#*@0r9_I!-om~-Yh_SAmtg_1j%|TJ} zub93`jT_GiRZ@p_w&HIWhO2Btllgi?lMuslw>mfEj)&7qR7Hq=c%+?{-u()I%r@l8$(R@D5I6Mas=RZ)zFPU_9HW7Sd0tF#4 z{AkpT5bIhvKcaCy#7tu^r;%5o^bw#<^99EKVxL&>hE^!X53}dd;k;r35wx<(eMGc9 z{@DVz-+6QsA7{~U&nkWrZIt`QgFau@RL>Y-pIYhJXr-EH_<<0Xb&9#g6AZ_8`quOz zNT8+Ey}(h11E7J3eov20+i=*sVWP-fG{Aiy>*;gEvnQpWj>dtO{Gjdbdief`)lW%v z4=RdF+DeV#faFCRFv6sW)$QcU%=R@|@7vZ+N-9>B@l`8QI_0}>rw|M`Ti0caKgpKr zHEIng-YktV%{S|ms{OA9oB4CQ13qsq9!X-HPsBrp3XJ%@&OCTF&Qe1cpXzj~Hg4}D zc&uU8+_@}zKOg~{R5Y^&>3%9cvwom=EM~%Q>N6?-)PwUDYIw4i&jUFT)eC@w13cs@ zahQ^>SkJHgnIE(hF&LlWcMNaal!96Jo20`##u>3mv}olCI)RC=Ysk%1nrS*_7KyV5 z+t&kTcNHN8LwEATIa&Of;}(HDg}^b-_ng&);Ipi(n+Pp_a*&AK(?+h71W*>K2&NHP z&B7t~EF&Bf)c$it{%6Ht{C~*7qOg0SeRMb7?ge^kY*28+@IVqn<<-#?YK0D7Pk-QM zvHGv&Y z4{hvMCq7N0ePXlZ4#=E*C9n4wrn%jiR=UF zcUs2H@zsg`VR^BmljXUvdetjgs<9WFw230Z3CM(%0xRU@`H_k#cT%QsIM8{cMPc+F zn$`}V(~~U5nCWR#LuB_UL{S2@|2LaX-vXm90KELUOC$SX*&hjCc)@ZaiIM4Tjq zDNb2N_T1Ww6g|+^t9Kn>Asum0N1{0)!tel>GrlfxGY`AKG7&RuzF;H_yk3fP+1%96 zWS><_t1jy|TkL=eAG@C^=CL^D4vSs9>TtQCw<-W9h#w3bNLRl?p5H^>a*$1`L%*=P zTCVItD9dZkh1JW3!;~EPwDE#I!IQ5U&2syz0gw{Ia zkKq5c88S|!6Tb;?07&h7e1Pv@7zO4-ytX;=apYdjE=S57=8|p=*S*F^KYV5jon7K2 zws(>m1|d#M*`w~qZkh$Pwh99dW@R5mRG^<`y0H=!rHD7{qg$|`o*26#Vl=2$EHHpm zU=EWMz{xGNuec^-z5@gtoOrQ{sC#HZ$Ed%wPAjTK^Q znLS;iqw6Phv6)}^OZLLcKQ#}!B>62r-DhfbfWE8Uv4xQAYrxfR@oa&2CdWzOESVAE zH+_SR7FH&4C7!~GBjN#w2Y1vDc4c|S^PW>cFC!n|GWff>onNLR=6B6L$Ny{{>h!5# zQc~+s!f=vs>B#&;f)=7VK5E&X2FLqC@RwqDMghMJ)Ytj`Nwub zDfdd^`i&W2Nzn?>0TF$=r}T|TrS+I zaDxHG?F{B}yG#rK$I_`O)oJrhi|}H*#ahr3yjE977d#GNW`?33-oj*N3w7x4H{)Ak zg3HF!l>3ZY=P9;;P}`RoBQ{n<%%NT-zy zso^w&<4F^QK7zFUF2z==L_F?r0~5g)eFAs*PMhXMlb zM~6DIve{9Ql?Fa1C_jLfn=UY+UYq~=vpiV}@kuq?sW~~F!mPjIl(%))TbPK}ywaTC zQaGw_0-Ki>!$xqgsBDp^UEA^w6etUsUDkDz4Wft!L2O-kwm808dg)yn2ZKw%C<8Z4 zYz3B_fd~i8h|*2+B-h**4g*KkK+)68uS!fG2vOl`2h7kbYakYR%1UoDh9)laXk#Qc zscmZ(gyOH8vhOM+7hHKVI;=VjpNk>q9aK&c;Y!(g=KWQSD-zv85%gbn8eWe*cfGVe zk0djlR7Bd3aV-xyP~jxbtPjW!1%g&dY{NL7DMV@=zKVSG>#~bPBDY$ z4JIo%uqnWYsy|0~UqHxhpE3QAQgn#mdMeM^)+m5K9(181<4_C5V)&vvUI!sytq5Wy&U(U?eCP9o@!$_L_W+fy(`sxbAhvSN-ze-9T&qUgJC_s8!l?NV5K^5|bDEDkz{SyVjD z(1?%#ZOFt+s3a5`jEw>)iszD630z7V_=iT>%tKaB%2yNrWdEag>A;}do)cI16PD|n z-0T^@f&=I7I37M+kDe*jq>>uY)X%}iO+u6_A2x_tJj3rKp}*;-0TH|i?(ZK$FORaE zrEyD@h8>~YHMDAJj$5<%xvY`wwi?h4OHiZ8k-NAJrJ84g8Ad$ zMQru`wHUw32n;{g>+@+NHfVqA!ptWH6~^F7szb?>BJY`d){tb(VD(@~38F_J#^fZo z0%o@=L~t;vJpa3Z?6_E$qcq-A6V&-r-oQ2%x#t3kxJl91w<2n={RSl=CFkz6ADi z>Dn*QM_^#o_r{j-hj&)(Nc>T_HAj_`DJ&$cR#21KQHZw^IF7oXrKy7ocOY)q6&f9# zC`fz*uf<4~RNW(@m{PZMK(uydAeM`eL>H1T2Dw(d=bf<#+ZQ$bmkcftB@E&TNu{x# z6Ga@4hOi3Z%M?N9@{136bsks6KRy*ZQN9`vlg~HC-o6;L!r|-A zgxvW?QZk)K%~Dl2MU$b$FHj0)9QuWZuCF+)d)YD=>M!%R9v|iMO(^U z(-vu3561!t&FAlHOWCxWIXh?Hfi{B-?}EU0`5ml_3<{BQ`is=K2;wk+9xs`ufI9DD zXWQIUeOeo9!0!t4h-w~Eh*rQJ!%?}UJ`3Y0$Tk4h(Xxw&iE~s+3?&>0A-ZrzOq1s! z(S~=`Pk#iGub0Ohp$La>+iRtK;e~{zu(v@u`^WT+{PUfyr!Uv%LjXiCsXCW1y!XVZ zzY-0M#lp_>2v%IljW}+ZhE{jDfhtBE8zP4jb#^)LZo-T@GW;z0Q+MkSRCfPL1bwKO zf_Ce4v9RF!{#1I6>8TH@nc=yRD0oo9LAPGU?;r)byM(oa4FFI=8r64~(OuaIekRJp z1ug1nSvLKHHK!&VbZwqAM(=JG$jqys9)t|}zJ;4^ey`gwV388^2nl^}E%aEV#>bNr zpv1FE1^YTe=ysHSV`($*u}t9Fjs|o1xCqrIsCKo~<>)&U&^@ua9}XnFw^NU|JE`jX zqDWip8$t_#spqp$9<+4w%m5j3OL?-a!1@b}R(Z+Hzfj=szFu=esfs?ouMkT9=B(D@ zVmU~GOZ`9eAUe5Z*&Z|*clyfXakak-4B9_I!5=nnoh8nz0R$rtc_2X#5#dxz$!Ree zhru}6t$#fFJ`-av$6didv4K2qH z$&mAS>EGCwV$8UnHpE1Ui>+DF>*8F7`gvZ<^A!EH`v(~o@#dqML3q~M#*Ll-#!P-g zy;{2v53wgCtQp#4l!pTYb`?vFR%-l`f?IK1FVkC?L>RZ45MqtO348!Nzv2b$>$@9Q zv>^Nf6e8RoZ_c6o%m4&8TqSj8Bh17e?=Xx>L?tQDCzTCsu$*tnfhe}F3*i;O<@$ZA zK=2}`nlCrB&)x$iGawcw{%RC(5k#xJM!;*~)d-3Nz77HQm`WOcf) zKVy9dRF4{c&9oc7Xf!UaTjj1s?h!a^Qzpz@$F`$LSD0{^#UJj(xKeVrCg3kB^<1#C z!QG~}OE<~=?E0Aqvh*014J%ueY%mcuZmL)+E()Cw6Cm;xX=d8~NSG==x`#2Rh6<2u z%=mb@OjDT*n|9^0i^qoM_EpXWllW&U<0U@V+OsASN-+090Wi`X-MK)p80U=pKtq=d z$vBMzFx1CkTf9nNYyqpd>hz9G^Jtga**Wf;&L6pb)yJFZ=BJ_wR4*%P_*auVS6y-_#GC1)8>0a-P>#i$lCVV85`#*O1P(`_?E}SFIz)#&F?RnNDp;X#F z#Sv}ikJ~Dx+lTE3;nV(t%_?#=B5!oE+Wt~UcwHp=ij)e8EEEc{PfE5DV570?lc`e$ z6~Z+rc*ugE{9_7iId`XeF9SSn)RfbU%A_>CStO}~4>1h`I7dVjUNxoe*+vgy>T(o4 z&s5r>(d}t7u}2e(qc)yP9AdDB&&MU<&<2G3nzGRuQ7{Jei5qC)HNXF0U$LD1WFV(# zbrc!^x^lRUI5+J%yhghwI!=g=&4@7p`#(RE@3l0qPScKqfs57yIRz)M!WX7rFhSoE ze$=@)5Cv5`b$<5WDn^f@c1%=C^2pBqhh-Owz+MwJ{_;5nVAg4EkS_=T0006BFaQ7} zDM6YHSYQgbG^joQzMct@P-F#{4w-axFjZEoB(Rn-Oao(8O%{-1G;Fmf(>?eYN;_}m zOvFNwtDB3M_vr{#yc9W4LO64`GLuR$NXAK~ zXT3(^p5(`WyHMsDU|RVVTyk>{QF)E?f++Il9cY{BzU0(n2SAF>#HJ`nK6@!a@&TE1 zYLn5A{8hI6yH}L}w*&i_)T2z7qMvL_Yz)`>wVmZs#_v$R;0*n>Iiv~l7eMOy=_nR= z;sibTV-qDtEs^kgA?>cvs8uE`nJ1!7!6T0kBihiP#t{G74ri1b{qjyWMc36dgKMh? z=_M<~Q?`5V-MtQP6AcYCvjzuW?Q;b}a9r&w2(&UUHrG4`6iF$2Sj09^>eckMntko5 zVyU{TAopF-9Zmr(4L&j3!p6I@wQ2^TU1cHbabBVS1f9VhuHgSXALL&xUUBgjp1$N1 z_BzO#HajhzEB?34t;DaJxF1{xc92{t{}g9g)PH#9Do>AzXntXznsp1O1{MrsX*^nQP2~lN42U+h~zEX$f^nBCJuh7@yirQO(oEt z^SIf%M~0zz8^37lvN?8NjPj*Nt_EmdS}_qTWSVMzfWkFl^e&wGwOQ-mnkRjbFalZp zP+QtYpotu)Qs7BKK?J?Pq3Zwt2nAVu%SD{Qcz!LZfzSgv;|fV2uv5UPL7879W71Xz zcha2-%$(hn3#-}=0zQIQjAsiXxWuzO=oYq9cId>JQJy~hcVY6TosR(ELm(0s>Z^A4 zG5EsEHpLT^14J?n_I7Ek*^>>lL&7Gzu72%ltNuzg%}Diky@do}AC+P`E`|e)8OL)T z`}ESWXclHvD_%S5^Hg7GB4Ep^s6`S>l26!Qp;#-Xo5dDbTcN)Cl;44JDh1vVtrjx_ z8+iL)iR5aW)vLT{z_|yt)E8`)9!4vcql#t=z8QcZ{Apl8k)7JB6nX9@J)IY!VKpSM zMXw|E-4^}fo5F%Jk;hVUl~nGuO=QJcNMp+?N@D4Gts!7zalXqiIPLHJQg43 zZTTeH?Nz+)O4xxbzKmB@{uo~VL6Kc}XPUblRDU_Fiy6}q2@jk6k>;tdZC&bjCQoG1DaVwFW zRv5+7;x%lxH3BF<$Q+K!)Pqe5%Wwj>kNm>TOk%vkw-#ZnOBY7{W5y(FB($12VhI;Q zYu74xxpM5dLr`4+8+WrtZ=ynv(GB>1v%$Mf)??c=MuDQOgm#urK@2^dK0*TfhUB@% z5F_=h5IFYu5i(HO&OGl7xivP>!)HH9_xuj(%pvOSzY@P!OboAWmD2Z8@Kz8ggcN1) zMI1u3VXYqX0@Xf6l!zrHdq`1jy(d@9%RJ_t1V&|-#+;PAN-*BGRH~0 zjr2Dk6#psZ*zRe`HHO?MU{*~ZH=(oOVcjhcdb`acMO4<(c(y74)|*=KHi6I2D>wFl z;;c#$kEm@s>3?{(TfQ+eELKnfn&i%9ik|1OzcxV1Uo+ z?X~EB`VY!o?EI4)$Vn1h+OvZW;{auOD^pTyT=T4?{F^QK>?2jx{BBo(65C~e_#ybP z4*Lcji=DD1x~eaIc6=qm3^6;yp*g*fRV~jx$&V?OqHKM0U2Yrs$r(%OC0cKQdIP2% zR}I&$t{hPVG|{cgoqi?XuQ0mA!7%c##Cc5IN$588Jp0)m>{wY+Lxlm2EX(2Mm zOXtz^N*|(TDuxUKlvZ&{FDK_V?fN516iPaxa+JUNi0c9PvE3fr{!^t8?^mO5XjJbR zHjxBjb30enX;cp+Qz zJVzv771I&+vEmtg3P$jNen_G%B@27kK(T7w0r??mbzZ9-X5?hat&q`3qc*yN$@a;d z`VFKXy`x$dMp@M*0cRYE8xx&zU=#Eadyr{)RvcJ9il2@prO?xr`+HU}v$u5CzR)kV zK^z{Qver7ec;FyB=n0MEJ-olr0xYa!zVO6ZUL%<7)8yM{P`vb3kmE0T=i^amIpD)0 z%tc1NRPhc>3&DN;4WR}AL8Z;cqLzO)Odev|Z4KgIUUf#l{sooyGiQ9n@3FqmJ?jTh z3JjKY+%o^tvj07+?Y7sx18UK#QK?I-0mk$a*yTk9HR|U%7}?={Q5x%;6X9C7i%2qk zYIY}6O|3%Fa`u*1Emm8SUfjOqfR$s==t^dAbq1Ulcz>+Oa*8Mwfv@U72U*TT>MObm z=HUg)ZoQ2B35`dltKd|kOyG4g9at;?wM)D&$>jC52IeX!GIty%37DVzH@k7yj_|}vsc%meB9x>1vmxtnMlHoZH!@#i$?U&0J0XUO2!2^aT% z`^-f?wFGs2m1fd1&ROLzGDqDsPE{dL48>vBkik&k{qz7MTwDYAb9`4Awv`iNroN{M z$kxhw>>P;l$yWXz+;eKLRkB-(#JV+MJrIejzKgz*R$PiX*lSmD+7ejy=sF*-oS^vD zIjBab&||h3+`<8YP~?wTOOuUH#F}rrD*gH&z~~`dKTl6LDi*F;2p1ipEnjSinI1+V zjay))@sWnRJujMihu4~UxWq_9>Q;@Z-WAXNDowaXzQ=V9!3%_8j&1>x>3Qg|y7_IK z*G_HMRn_d-HfGv;BagSdB2?2@C4T|^{@Tx{!2iAD;1wAPN-tAYZ_gS!?k+x3Ik}d z&{SU-jBP{-=Ptis^|iROnt6(|gY~fd!maU;TiGu|kJ1>Kb0dlNIYyPmZP;M+;Bv)k zIz()ko~g42p1gTKXJ3Xt(T3rMYP7k`4EB&9xWx!vQM{{vUO8NhHV1Yuo)+H6#eIhm zD2NEocCfxz*A2n*?$By=P}nhGSjMeI_xQ8{8~D_J`H?%FBeG6yGkm$*kxdEa4Xw{h zWwaC#M6wdx!XG*I=WFghU_m#vfL%D9iRQvR&AJMFQ7@BG!YQp0>Xh)K#}N(qKJK~K zMHB+U+d9Z1lq;9YU5|wGO@;{@>8e|8Y^eVHqaFzY-i|7QO_(KpTDh_7si|qC zX-@|pka`^$>)zr9lnY!{?=zf$H)Q_X;>?Dt4d(FK?2n3YFgD$Km6q~qXu-BghLRV- zc7Zix?rH;3yH>~Z#7_jCNjb`HT3*C0k>w#L84*3T{b_>8y>>?y!n04rAG&(F7dhk@ zqDl_+%|gtnu8smTCYr14f}6^a8t9FD(vi41I>5p2l|0ZFzM0_01mBno(PHbqY13iPGbXmn$7^y_DWNQ2;*%@`o>)b~tBTv+TG~Ah9iF`;iszJb?jF4lhbPwOZ3xx}F#FGeElNk(I z(T|}2G;qa5BT)RTtc^PVOXZLc$GenKDhVL-^T%eT?EVQTF;&L!GL^qEje%tSDVuk$ zXsn=eDZ0Spq!-_s&$u5;YUYxJA+(Fj#r9IDRhBWiSgL6(g~5fvGtAqD#Wqx^lf_(P z7k)jwAjtsbrf;bU7Acs9w{DZK5+4m;F`Kiqa9iUyY!i@7xp~Wrlm?roCbNpSCF0F- zjqGT7Pg`Gx&LrjhOD?nRDpaVOTJ%|+ZxqZAU+VXs7nVI@?L-nrtig`|wU=-d&_2bU z7Df3`wKJ7#%pB!MX~!2j+u&zOOk`kP#M6iCHNXy#gwcH55M^$DLAF}LR<^j&{gpGt z=^26GWwm|dBqCc_V8gMAgJx}o-lpT;H&DqY8oWZAHJoP0tvAinIUZRTg363-2^qvG z;ao54z1gYT9C;>ui@l#v$Le9c9hpbD&L;qOL{r~er9C%z$Yj6r#Jbh4`8KQPM;M?` zIFr2^UFvMPoJ#4$lBzO0Dr$6ur_RPcSCp#x6g5G?I$^W zEf9e;`(XXoH%@)6-Jd=E%TZQ{`ZrT*tSFB6!0* zwI&W<0iYeb7cchw2g8RRpiUq=kz&xt$|YNJP+Q&mJoLS0R?ri1u06MKb;{j{tUXTW zDB-q(axvt4c#T3ZSWT1)644 z$BjtvSp{nvXGe2RzWBoPmuGj-fomL=Zw-H2`Z9U5<%j??6){8`ra481Ex3zM`od^% zVuik2^y8UOGbQ?Y$_ZrkC*~ESnsqp@neQ6d3y|6Fn&-WZwCeHpM8}P{2h(E;0WNmd zjc^tG=F%!DxbG*)eMELQmF2^L=nmT5XGj^xrZ)QI^Y6Mvb|a+tTkAveI3LT~)Cseoo>`$e+3h$Vx zQUmwL3i2Cy=b`;5%f&fr|85qJ3K%|Yk{Zb);(?Z1?opVUsTLA{^C05c2l6>UOWAi? zLGrV2{XM74Cfi5?l%JyLR6oXWI|L!tmhd z+|p7+*J%gwh#Eh%V#`^I=6Q2svKB9cMM_&c@{V4>FMP>9#u*3?@I_wm=m<44F`I(t zV+B)l_w>Xtc&O?<4v(MWI;4lvYUY|DWk)OW;T2@~nIf$D#LA z(7hp6T5dS49W!zLaYt{#fw_|)FE#}`l}>{ z;wYDL<4Hw}|GdGg;$IbJea}LL;{%HO0pd5BK;l74)2Q| zd8q_131@k+DD@D)Re(;d5Mq|d+5+Sr>xoCS1jB&Z?5X3}j4bm5| zPUtrxwK!F|7=mw79c@3|7^6ql2wfVTfJEsEJjXQz|K^Clj#6Z)Ctd@>4K;FU#4y40 z^E2z6CSG(M8P|2@4^!9^s7&TI)B13F^1}<)F=ni=&hNgK1d%LUHda}wtC8fhVy0Qn zo(CUL#cyf$Tf?0OLOuUH9_?86X;5)=Wq2^lj8eXzaDsi%#w%3>34Ti`?lJLoul_s< z1i_^`DD{ZPuB*Xw)kt@>@VBQ@X-lq?M>SUZf7h#ruQLR~zPl}~Ruob3L-7>oZnp3g zL&&Ut(MzI8(knz=C;0n|(unDxoYsOI7XZyou)E5bB=`GG=4(eJJiP6p@z@Kvb<8nY zkc?p3gdf|^QR;-F3jJgEky&A~fU`@m^HJH#TZYy^Y?`r=h7fIs5`3zK*q78Thr;7_ zJflUe({*mv%aMdiVefqc_q2NPWSE}_pAOf<_>~8esB>j9(N9$Z*lEOWUua=zc1ig8 z;X_bE(i#?+`l_L%qlZr7xx*Zsxbl7h_G3t{*Z=2|43Kcb z6du7!EAJK_AOyReLxn`^xQnG3nF#o2-7&8>5s`$J-^s4%uoZn2P8%?rAmVzzpia)` zws0TT;kz3rA^YUI>@X(KH`79EeI zSJfA6aDD^N8-moX%o^>tgEQx*CL78ZWx;w0GY4C#?c^hTh8kqUx{)};l>hzd-*FX+n@F!S>oc%Q5iR6?dTwyK9sgHOyd#-z|b@95uY z5oOoCxq=oVZ6fX+18R@j{7KgJrCz<#`Ffz{!EroRX<)n#s;7*?C@CfDg#1-{8i|;( zb#5R?r+X{-XHXE&mWLiPe%(DVBqo96BQbCxtqJ&BL9&%??TP#EI)lqZ=2FY$w3aZ` z0@{k@5j1aIq=Dl=TDOq0BH=7vF8djTmq%(^{^XoAW`~8JK&@bNy%YS%#qUR&wTf7; z5B`-{E;d)X?yc%|d2WWcyr5N`Q7FJo?So%yz9XjA;3sm~qIn9ue}E=T!@boZS=-&1 z$!0+xGv4i92eYK0r6W;IIYngIqA%d}^Nsk-Gr^_mzDC3D`qv%WX`Z-2-U+(qQ<<5` z%t(XBJCfP9(-H*!iNrsI0McFvS&yCq4Ds+?l!neXBI7Ikrn+|ZU+}ikD9<2#c4%E% z4W?6nX51PfhqZb{ci$dM$iX`M>(yRP2`jK*bqVt^Lb=Ssp0I(j?6eMBC3y?P0>2%} z%w{99h4%?L4kBO4SNuUfe}4(1eXk?uvFnRJIa%piumX5-9k`c9gCMiqF9<{`A?VXx zRz2cBvGRAfmCsP;ndn=n;;b@$ z=M!YH<1mr;SG_^c_bz8D2iddXJC>dpwi$(k?Q)7inI9YG=PT9WCS6unWV*C$fQg7$ zajR}TXLEWT9LP+5NO4zvxB3fzz8z9Fq^NoVMS9Q+N}NG%FRM74<e)6luX5DnH&bOvs1M7q5I0Zt(PxSxl%Thc`D5|e^ z`y>(`&|;`c?4Hl2FUC`=4Ix!P0lAAxrP>H&ws}t|ZnZv$JEs-^;i4uifY#l3CAIIx z6Mc$0(j6?1u*Mbt3c<9*7n?7pg&CScx}LV2akUZyj8PSwV1CCa973C+k#}HVM*)V5 z=d8Tegv95MHh9(d4-tY*`aQN(x=Ug;UX7OJ6Vk`+6mtaPfv5$wlq-c55^)AiMq>a+ z92PCB2PoA5gk+R$mRV$xJ2kIWK0iBXf0V3x@M*yzMkG1I!|v4{rv8h|%kmCJT}%FK zA#3NZ{dkFwdUZaJs~L;^>+lzee6c)UK3M<>+nNLC3h~j0?-Yu z%_qII3{MHfX*+ch!6$j^^%DM|&y{HxH?k#0oqTV0oFTAC;up~#ZQlZV|K|jdd-}H-Uq5U$_xZ{ z@hUsP-~shb7zef_V%#X(>n7Zn7;v^leuk{ReS&sSi|Ei{Eu0NnP2vq5a=A1Z$6O7f z7z!kt88(R&R9oTH6vjHm2ANX2Djmqi5I1$;y-RvG&caW)8m%3)Y-8hh`yd>{IW{dX z4GbNCIhjJEdn2fym?!WxYPnvuL4tapvF~MPp^w0kl)aNx%!``sFpK_ zN34gKlI>n{Z{WzBa8h*ij$b;9dsWxjI+vgFU0`i~~@Lp~h3ofo_zJ}I#* zv7KuUD7!U;;%ZNCNqhC^N)RSj8hEwQGMf?qrI6azg*9ygEZ{ty4U&zuwobfPfLrso zm*8Da*Z48h3Of51p@6HzbGKDXtB4DUS(hI1#~~;8DzsQpV!d>gjpxZ86GkS+c@z+L zKW$KjB4?`j2hrfa=og4cO=xC(hAr1CGH_Rykt=Qk1FKg2B?YPm6EB6&MQ&dOq|;SG z_l7<{VD3b;y#9jP8!UN3*8se-^taSJaa)|CG=WYT=m>aU@`PGF_(UfiEA$#LkA8yX z0gRHT?>g(xy_4oXwWJ7(MF1%LfqW`q%ULQ?x{(^zkI9j4yIf-%=R-vGr5FylF2d>+P-`MWc+WK0~Ux;nl;fW$=@E{-LJ z=agbi$_}tOKtQoF}8`H53>I>&n%)1E|@Ux;+pB&?qAKUc4*)cXBHxzZX(qW?-1U&aM*zq z<&7k|_*bjE1WwS3UeYcScK#s0y*u)<^LOU@=$}(0Tx!Y@`2jXb z2c^(0gqfDuHoG$?rnem9uCnZzzB%f}`bSY%qqB{{NB2%N4+Tck2+Fl5(nL*Wk|W`2 z+bSwVm3=4VIiJ1O0kuox#gc{mY!4VqV41IYg?ZDc8@$nIzdF6;{D@dauCY%z^SHLs zU~2jKF;8js?j)tEApV+<&%@-_zCFM8y9$4#(o!BABh&qrGq);|GKqM2w#75tIVVTG6Z0 zqCVJtSZki7_?Kc==OPd4j8E}j)LWVCaVek-hO^lujG%yvfm62s&XO22!~T^?V7C?| z$HhI%gI<-W&79bhK`N6Hb*6tR6ta}f`Ea<5xXuFG;=W*t9XPTjp2>-8yPVmo=Tuan z5WYqv+~p!qQF^gIXEK2pd?eb)Ry2RaR_1A33i=S>CO=}`v!bxd*`%Nh%?t;jHdzNs z_z+kD|#yaf7#*pepr93OXldxKQL~&q96K?!%&Cx97!}tqo z?TfuT7GDAFhL?+YsZmR+L3awa>~M`sgMU~CKj9E;Z?xxMahKYT;4672)e^~qNm;X? zSbS_BJC~!qca3lc@txRdv8Sb@U4#GVgsOsK?){<{5L=kI>Rb_&0Kx{}!vst?7uW9- zMDk-wFT%aRMbdfs8uGb34aLBKdd3p*_W`@5R%8FF=i40SUm3LQC7~yb)p6#ms#6fb zXj9z9Sr&t@}0_0aoy+hyXK z^HtV0q)(cSZ^L~}3Q6F))SIB-dONB_Gju$+8dcGQb6XE7kKGDMNo7HZ#V<9Y(o7J) zZS5N+G-c=I##eh|Qu@g>eB#>Kr=2_T zBMu0pgvd~;Z0~p1)>~%;21iqe5XqE)FX~!0b4c#mM~Un%@?GSk(d5V7$|)10)eM09d5L%`P_XZF(!iF(_0y(Q_h8DH2}*5Oq{*QyF*FOjr8O~FR6fU6I**}pN7 zzk>aIATA*qROP-7#(=TVfD)`)$&K4CxCL(RQ7L7_bpin5X3bmKTHr)6bN8?C2usnC zfKE-GNHwp6wt!<5SpyZS(9-^9|A!MZ>>X=^pq*J3dcUVAs+-2npupif-}WFN*fkKK z{;XrkrFei_xZ*S{4MTZO0mOnbGYZS64fdF(`gU#Ts}cgx680O3fv6!B5hYYZk*c*u zOz37{(T+yMzHFYnGdq0bG}BMQ0lQ1JlTt>_{*bfm)K zO+pXMlF=q^(^2Dlk6nsdc;j)VVP?v+Zm>w48~`j>xQ?Je9mM)2eU^ted4PZcPVfLFUDF}AC)G*hp-Zl) zo&+8MW^2i2~$IYsMy>UaxmcE~@IrP~7rQ zOL@_P(}MlVK;WJxm%pkVKWko>Q?2_WQ10kxJX%chrDqUL{AvM%-#LbGT$y=FB?zk* zgU6Oa0=I)`p)rPB=n{qnA19qJH(m`CfF@j^!B{i^wS~fWfB`Sm^rP*bT#&p0mh=hE zIrDt!swB03fKOg)T^uToAsSTW#fL&+p&&>$5tIN_N`)d`*2^VQG+YdL01N;Hg9wg| zWMZs_qFq@V5~aonF)=J1ebpQIoeomqdOkrz8N4}QbhJ7{&} z7}NpiI0R0=yjBC#c)L_3jQb4qR|IZLXd_U}p>TOa_0 zfSt1?bLB`cxV-d+{cBV-nk;p((<#YFsBlGJqNDjb!wHlMvSQR%5{V%KO^wrCg4yvT zG?CXE^ar#=%e36Msl`e$5lJ+U4kVrO)YzPt5Td;#)Qui_YNuv3j4K%t2-X$ol2v{i zUu&tnsUQP(;l4kvs3?@8lrf+hL5i}J0GLlw!o8)%XribpVc|fk=I>X{1rXE_>PaaiRe-ELp*j=|ru3;MsN?__?`3iH=yI=(cu!L=DT zd2GR(s!q!@r~9t{oaef_C998YCM{{X-hY*+Ms7sR>AW|Ku2!EUtO(emjNvgbafk-- zHhbkkPN1Y*M;eBwpe}8+bh0<_;l^FgBw5n1_#xioJ{YOvT%{F=VWLu}SF6W6H2K8( zq>-Mq8KsI??>R|b6sqg`E&+O`z)&$TcnjpXNYV*>0c2#taPi3LAsSTmhK$pJSYYfV z5rmP{+~(`IHq}DZXBd=~1_?M4E-vc+yXHQ_?UxvPV;8FN=_N&D@${UY7k1fO$UCS8 zni|M-t=@)wK@ot6RfaE%YG`qoBnYOe>82vf%0yBXcD)jm0(&3`g3@_>yQQ{_NL7=e zLWA?iL5ZoBP=bbz+d|DqquaS)+P%J0qC$?~GaK*sJjsXGZLM=^+41A?AlBkUOG((+ z#FU20UPc?inugg$7Xn8Ku#z`IWli3iJHjstVR$71@s+WX%%f5T>)NVYWT?6q(<`gp zNt|Tl%|wZ$ZD^em5S&>DZ5gFAL~P2;`B%R8qO6)_d+U)kMUWNV%+yX#2HH-70Vgr< z=7}EjD?pz&lnFo;jgB1wN(sGAT?jagg4Mmj#WDtx>RjF5_ zU@3J)T_Gri$|n}ZpFdyuU-Rl-k-Gn0*9Wz~hKt>f0k8e|?6ZTb^Z)tW`Ch+N7INxl z5pP?bv|;Dlzq~YNx?J1vvyQq~cX zs;c?SfUkyV;B;eI0W+vTRb3zvbmP~aB|%f*JE`MMMvmHAza*Npi?>}f7@XQPP*18I ztu%Y?sK}(6t1DFQky*v-u7yxYG~%K=ymx+SBVeUiR$4#3)@XE?_LzY_&J~0Lmr4~t z0_78m5iFMuHgNsEDQ{Na@0a^M*;$yVrIjUuot*{o`Tf8)_1=%nCQob@N;&N1AsSTu zo*2iWv5=w=Z%TH?YOX3+2ml7|{^Rm*f<_3d6=e?d-B$){bw09RcgJns+y5?mSo=BH zsjX+HiBUs{FQ}3#Bojrp!3lhD!6lh!7di5&+%>o~^^=b}x80vBqTJ^O-0;hky-R-2 zHN3juF{b45wfT(}-5I9pZ2%NPMr=+J(1CYNpoS5Jii|Pv%#A5i`*Tk;1VuF90g2ED zMF}cea*eiOC@4{~Y%b2Yn>fC#h_kY{FUl+EV!auE$Lp9A z^rU!{5Fr5sm3Z+O0SQB(cs75s_)a}w;}OvL-FVtmA(vDeLf8JU_bdwpYt3ER1Cd1bc-`wAK*jx?^+{JJ3gtEm|qQSw>txyLzI1JD?wdl~4;vzV2n4nA_+?J4@zFhR$5T`V7$0+i^{qjJ=phVO-?gSLFVJ@7Wh+jatZ##gx1F(WyQ64&= z=svv~4C(g6Pws96SwvH0qjNb_ve%-$=V_Hjl2CeQ84mKP=Dypm)ot=Z+vZ;d>+QoO zDP$o#VK4fsk!oHf6Y*e3WW!n zna~R&3Iya8`8qvtpYS#nfSA_F~t%z;CaIuNvqIgrF{#=PN-&V~3ACC%d`f5V*A zFG8FkgSkc>-FZ9BYN_=R*!GSrXuW;1moGuOt0y#?{Y4r!mEY7%me}?s!741xpjSL^ z!iK%Y8II6{GP(rhE2utxMWaP{emo}Sdoc-s2ssG|3MAslM~DhF(GU~>X|qro8UW*+Idpn6G=n&nH|xL` zAQy4ZNWp0Y-4p<|6wGEfH?~r!jn&LmijL6`oRpW3*E0hUX;6H|BcQL)z=eemAsQ6@ z#tepGh)_%-5QH1kbAb%9#34$sf&FmF@`x>LcAE)PfiY!75y;1YvaJH*-fAz=)Yl$n z>YAa>PRWZ%=-*f+;C&#FZoc+L& zEt!(S`JW0BP*NIX&OnYR0MMa^Cw*@lqim>Y6_=odyf3I+E9=C54EivPeOu%=1rx<| zLA{XzQeX<+yC1@|ZFyA~JW6MaooNd(-tzh3I`P8oG8ur6)0NT%IeSAaMIzVGGjR#`kD0Qam6wCsn$!`!;(5&Nk*suwUC>LbviTaAsSTu$_m6m zz*KA_D3)&0fM*bv6l8#0r$8Y7Um{74v2heAas^U3C(t7%oRKK>@a`L8E!@q>-*vhj z!$Au~=#AG#p*W9W$yhb^)@a;Ug}86ueP4@k85Flw$f9U$#jW8u>9t$X0r~YVF_fDq zDN2)iRIFm*0p1x>OS|5q(W|atAVCUBxllmJ8VP7;aC+&&s%(bsY--*&Pe+52t)@t>Nobsc}}Sj36!5wGa9H5_YWYYL+IKB+>tsyFSX67U_xJsTCJD z1sWhx#E6@ToNGrKmz#hgYK zTV|`cY42$_N|i~8CpNCeai+H{ElY{0Y3z~X5QGGZvrNu!i+Q=-wSKN)bY*1e<~JUl zzMg$0(<2mbOb9R{di{*qX7KR!#j)aFMkrwV{#Dc(`iwT6@!nkUu)M>tMiJ*c`VMOr ze|3ES+;h(`|979`EtA&LjHV;cc>e*26`b(?BzMk`oYZ+G(tZ+|2m=hnQ(VI^h6|@Y zTkRHn0~-C2iu@0>189h(XVVzX%p)Q+ukHVH0)Pa_QyM@-VJHj*&;V%wA#Saxf6w5G zxb6GErN)qo`-Ji6jRQE?UoUL{YnysqKue`_ZTKy{;@K67-?3Wqu0==2f3Y9!Rv%!L z{LD9rFw?yMZ?O-YXBbJpz>s{jeA{3EApa3S`R4x-E_~k|ydfG-fDixx0)ER2G7%Wa zau@^`$z#S2rDr4;P&E;9ncxA6&9Y&aX13ia7Z>myG5k(#>Sa`fVmU{Rc<;femdaps zXCg>U~rlH(QuQd|1f{d;9PUuli4%LQdhCiYrqKvpuRh6L4E(-dB?5$can+-gO=fO+uh$?uHk$zQtv z34u&mLT-U&Ha(WlU^h6~C~-X#t-(tEV)aO3p`ryH2ronT97zs<*BpaB*X8=$6ff~X zha%*yO{uA;29qL{#-~CC{cjqufQz)V0BdVqD)B~iDImN^_bj?08dU9>%*7(G>{KQ) z6hdQq7z2@(YM7N`fJ{2Ji4zXxuxS2R*=sA#8EO5l)xOx*kz*7%21zd?)$ZjZ4O2fa zbxdlIw!kBsh^%6YkwVK*le>%uSA~9}{k4CZE=cB%;E|T_oc9&{Xv-7J{N%wDd{T7$ zPMcG3y>RbW`CL7tcnj4Ni!cq z*uD%!2%$!hfP@AbRaLUCiU97)&DQ+z zv3_4k0VH<>l_&swK!d*!Uw~4NrTq>P^xsv(%a+F-8zYwH?#EmLULhJ3?UmBPLqM!l zMk*Ap_%c$c0526NfDKYNnr_MGYqZ4dVOvIz0x$aYX9~dVgjAJwc5T8-Sc+4YFB-+J zoqJQgV*91NaBj~ELV`?)uRSpcd3YgE()=?q!3@4P`;#ctqt*X{(O!$ep}Wtd8<@M# z_qjV3O5C%pRB!6m>d~0%GX=Xgrv|pXA&2ahY6;61hVV!xj~y+F8kGsDfMQyfPF1j$ zQ^;m&@pkbI34)qg?G#zK^J^Uk#yR#QkOMr zU+(u+_E}waE~TY1=~f&adj-|2OCpY-UDa=qN^rg7SPh*4S(SlD0pb`|Xal?#aQTy* z0uzKcmOAwsmK}Z_MGVyi+*w9-gjqRKM*Hb?HCf};r@5wkYNsll>Tb=JLyJr#M#X{C9m{@# zs?bGN&=;cv$RsEZDfnMetKi@~C=59uZTP7!6{Z5Svdm@Miw*u%-EDNIs&f%xQWQ?K zF%-jyl1HSW`==QT8@-`y!NK)T0 zB`CD^%vX*80Bn8v&p%mF21Eynx79{Me6!eD<;FClK4D0hm0|g?ma`CPRe}V>y367b zAdl_=SeJ3xx~^ABef-7HoB}bG#sY!UdzVm0G##3bY+C&d9$pd>4Zk0=WF9l0Z_MU) ziWdeiXf%6aXU2I~f}-o`=w2zA=^v1>-Ysld%cp#;jG%Fy5BtADCH0(Tr)DJ_*k_!S zYici+8mC*5@jBi`f9dot)ww(j^d{^sG|LXaMOs-kUDNve%*kG5^_RbBG*2(kag` z;P%I9^?HQ5O1K;6ks($(ptBXRHj^eEfyfU&3(ku|Pqnl%pSgy%{XcEMJ zL0GE@->_SzqP|EfDE(?|t4ji05`uPHvq`wPlNopU+e?v%dN7^IR*tcZ(#=0VIbo^A zIj}6$`Nf@2+E8qy0hp``=PbhLvoC*47-~ed|6mnUwF!VMvkhC-M=S;9T#NDf(E>5Q zAaW^_s-xJ!7A>QDQCD7WT_3#%J#$kV)8*(phF4sdFhdZ}eg07QGFInKJBi;DZXze6 zo~kZafVI%c$7>@0oPZi5i=HUNkP<`TPkR!K7be8G59OAClhwuT8hO-v+Z-8j8GX5z z1%CdRHDz#T=+$1Y~N!UMG`Es9~m70sjxR_99+k{Xj`aOKLCaOL$Rw%zH?#aB`EK0?B=)@Eco*}SyxyV0(MMzFu=D*M%2kBwTV_z$hUZ{S1LXNg zE16j&US&Kk5hPFcz%-gvd4AC4jD7cJp}Vg{dJaYY$Xg@&txngX;MI$Wb8mI%Ajhw zwQIomFx9RRAlJsTKdVp@u3oR8kvUGR^8yfnHj(p&<^(Qy;}tthsgA%XG>iYxa{qi^ zT!CMsdp2+FbPLv2Y*hNT(6%oL5X!8!Cjbl)@#?!#BSHVDSn&CB+it6Vq(-rF#|>!n zZo)S1dzvRS|E6if@wWHEH9dbrWHAh6$_Xo3( zXv<7P2_q+MdQ`pLSDHR)MxtiOWM}XwxGw|^->HmZg|*?liK*qxG(zeIRG!a5=?0xb zc9fbCm_8ban6@+bwnTZ3Ue}XRZwBpv&>brmMNJ)of+H?ZZbYLkzY+-brXvDz>8*SY z0I_>vaUZ)AtA>k}nEZ34Nv;z$An-6pZCS^Li0iIK^i;;R8CAU?qtT{_I#&KiNxq(S zZt+7P00s_zG=%n7z*`&k6#7jd`<7C=YB{!B#s2P>a&Y{zIBqNg?1o*F?te+D6&DKh z{LNVcl1R5|$?{{1=?(2$G`&0kiw9bIOe-l8+KIaKyH#Hs3j@rrjq81U;7L{4AJV1X zuk6tpS%J~WSZez54dh>1KWJ2t>(XO2=Cu-GWy3G8OGFTKTTvg%UPNS2N?9z~{ga|v zHUAH&NB@O4+Ixxqx*8A$T6S>Ppfu5=)PVL$dDbwcw0V^5#A=W3ai2uRu(*^f-0!{C zyo-UBbz?{)t7db_qe=WDz8^uv8Dn`QKIqTXr-;EET_=aMKMdzAXf3!>pd9`#H7t{> z=^X0*s=`Km(iBhEjAi{H$WG`}Jny2l?WG$aEDhe?EkoEk;>Q2sSsF4~eP)XtXL0>0 z_r%2&qmVbtJ8oVg+4FNHRdvfhCaj5jL737HFl(_L?eHFS&HqgD4k6Q&sn_psA_H~Z zmk(~l%ctTp=r{fVDTEUUn{N{s;&Np-WKY4pRP7x6-q?=->|5$QKgGOCfW4)HlWYH zRi}ALod8(4sB3omndAlt7jLl2>N&$C)GG53ta=j~;#G{Kj4#l4Cj0tUHpk<#wx~CT zj-^qA?7&+GNe=;CW*1u?d--X7^! z>gdJ#hY5108pfa2;uT6m<9DF22}{?3wfMmeAsE^R^$Z>}TM}Hh@Pe?wpB|)T`pX|S z8Ni#zay6zC8<1G6iK_C{$@!1Bwo!ig64!e^vk#Sd|BuG{@EUEl${)5cVu9e9zRwEO z-IhNfl%7+k`*GdZCk*GWb@Plit;=wEQH_sOf@-Uj&ygchKe)92wBWwD4r3K=`%TIztACb$GqSjg@l=f-*map$YIW7EQzjJuG zxxP-uT@DwC!CGKT9Dv_kN4=YM0!X`$Jlwtvz6+qf^YCt84|SDAasnf%1ax%w?WZFr z!_OX;!Pq+s!}~`YmudI1I&Y#uLWsK59t8b}m9_3}mvt)H-EoFUj5GTCaN18~2@Xc0 zHVi@g?9}?jW9k$%y99MDqB$DPV~G2SuXf|)=YJUmUCz+^8b0B(cKzf*`FTK3L$9Qo zJmNx?p7`@L;h^T)_y=RiH)oQ;+-F3X?We2OJWE;XhzvopRoxG1g?P_eG1+720+n~p z$D4_qXoRs@K%XN+yLp`;)KqL&@9Vm776u5%sgJ2rZS<^Bn;}X4000022~Yq43LgQU z4pFiZ7XJh#?zZk2J6o94%|K_s$YG&Tpd1=`(@O=j;PQncyil~_MD{4nyT8q5B{Ba; zC!;K-HN@-+odzN;vifXnC#=4XDi8vKDpneTm2LG{p0+zE`a`F?z*aaZyFAZAVHFG| zR}oM=CgJRQgjZ0Vp!o@22V{ zfhY+DZFziE+rc}6@B+^rJ#s7ZBlsU=brHw9Cerheg=fwRfm1!r0flf2bC`Qd98x;$ z$e=}a6MKI;@7KLYSAOqps=@4Mv4Y3Z$VpTu|H{4g#5G7j!Lp-m z1RL&#W|~hGK0r>2B<4w7W6d}Fv@5attWmRr4zscm011hdyv*$ufVrp(v3?V1gbt*_pVpRjygUTvy( zXlQ`EQTBX@tI~8*ExC_dq-y%_VNsVP6xKNYN)@%63v{X0DQg;Q&4O}j22njwd_XGX zR%u07y&zAwTTCLk2Lan(sY_OjBr}S+Su{7jn7ZBNf_B?^hcx)2-x9tvdGj zRbSlb9m3u0GKoLI-$P$5Cd`V{qE$_d9R4u^nLrJ}-ZvGp+A+VF?D5579f-oEA1;V3 z{BPAY+!X>|lw~AcVe{A<@&UrtzIAlHA6E=;%}d4lv(fiVFm_8okb1B?sC{}0jI<xzjsR#~-{QS&1Vbk;`NYHw=4F7$Xh5~K*#;v}}vX6;V!Mks??oXf*N!cPn5AXHAzjyEXB(i})6M&nC23ywjm&-(T$IP=D(?E0*? zo3cnJ0H=f`saUvxIkE7^Dx)<$ID89%);@7Zs;KOTd!>N#dSOftA<_4-;SSZJgD0*- z=^DRN|E~3qMl0pIWUzvlS6FfivM{sQpTzr1NCm>~S)TMFLBt8WM|Tt#%$?aV>H5b< z2Il+L2@mt_z4WmFU8bK$m(6WZ?)MkRy2JpKPRAx;7nJp{J#xG=qMV;}pq(T8FVdZ& zlL(@NemhiV*AY7Zm*V@c1qo@cF2296OiVMcj2ocab8YSkj+#A0|`)D8q)rCy+MIN6fLJ!sal7ntgkY z(+AJlFW@he&a2#+psQe6mmP^HGf= zS;dFP64E8TkA30$Kq_4jq41WhOuUTV-mMpuJNDOHeF*PsERXm=L40p=X%V3iP)Cf1 znsR&jps9PJ?F%MVw6gr>UaC(|l`=VUzw}hMl!yWBk5hV&c92J~?^XvW%+QkCL;~jB zY$r)a{x>^Co%-jNvYY$Nk|M3B3TJ-h)CqHk0F830AvHxEoCM`k@xV`V$qtBBzr;uY zG@scaq^*`^3L0f%N`W3)BYAQ|;YX!pT1)j$zL?RvDib)tYXPb%_>YRnV5c|{6OdR5 zhaUa@J~I#7R!m>#*+1rT{hr2p>rCnM_`m(wUBL$tUS=9hvQi+=E>8bwfM5AdngennsKD~+8eg@?w zb%<&7z`YJ!!(a&2J_Rng5jt|5x^?nr2HEOKnIfi)oh|(Og8LT>X9Z~LmKqJ_bxq)T zqb2BgcP~m}5xKWzMc~J1r>k~=QnCRZ9Tqi1B>C!NU!t5q_GcA}#D8n;@g)gzWG%$iezy9I!JU^Re~ z$iiSK1j-GQ&mv0xV1Xs;6M#?acEiTDQw4zNHh4q9@^9iaAWqV6oi^ph2&krS3TU>m zfHE8!&dO+3OHAOWm=&eJ+WZQmM85S+rI0M9!+fB4@O@~YYUU)^_FJyGsWWcQ(Wep| z?*(k>Lgh9vROqw$TeEl{_cVRX6f*aMi!B(0Je&DBW1 zALHxJDP$Q>I`8s7vn7H%K=qiI~X-qRbZ!+J9BY*T3IaNllYA88c{bLp6TURg>~yZ10IU9J zM;ZpA)?W5=#LEw%_L%_FxqGGYl|9<}?*iN2Y~hptS-+D;^LId3*?MOm@n6?Etxl2G zc$^39^WEM6vp}0Drd7B}X}0U*N*a{tyk040)+9g$&TiI5z2}Ix?mt(o#ST885G%tiz)f2XRTIuVQnIbp zYkVfb!oBY%_e!=`D`OA1qEp;v&2*}b!FsXEdh}+nd8fR&_DlDdF7SMsX6WJ^x}zg_ z76PM4^w$((Gt_7}g}h=Mi{zHgOMv-et+G{*HAMaE{!Gci2pf_cSJGrmrCxT*hPnSv z<@=uH)MgfdX4Yk;$X{fCFM%QKi#}ukb6_o$q3w>(n@ylm#SsA7vwPmRncVF(MEW6K z`SoR1jAp(regzMYPLi{=Hutvh6 zFiJ344m&2stGsWXaF^ho(6TEV^--E>z$s9D+Yk zdIRQBj_(!7WOqo;<6ZiWN|vOGxVWQ{Om7635Vn?`T_GwgT_{a2UVSnKDjhhCm$fUy z-q+Wi@b8r7ANuoTzGjbrvEMGql7(XX;2;=c)o@G+)1D#~dsH<7mzrwvJZXdS8_E&9 zd8*t?>Pmg1Zl6 z_3^wlN6YlFqAMqIQkII6JGSTtZd)rX85DNkK>%UTmZt6Gg$Cq6C|5#p8FuZJZ*6BCtvhKaOSu2WSIe`?+c~zr z6BP5ZdRkf^-~T!gZSC>v%DG6zvnN-IBZ~4I-AcVzcWWRLTbD;B^i@|xF7S>>lX{yP zMGPc`a(nOFqo}UDuqTrF<#?;T zvt1`=uL1RBwcnbf1!tsyt!dpeCBD<@ehQ4Ae~?i=ko#76jc?U&I_@n=%krsBWHfd( z={NcIz`N&Ry1Ai0&9X8(<{WbP!g;}_trDdj zbESNX%2JPE@n7z(%Cf4=*}Tn~>F2Jj`lBgYnvNs!bGYeHPufZeGLn=+LXHYrTGt_O z!SH3Qcj|qA1c4xl<`o4PE74-4E7&xg)iB{D*{b|n!x=MUrdlbk`Nt^fh zXv;K}^EyUG%UJO{4HMgmS}+;gHr8YGyzo%NbuhKoTSy~aFlHR^CHe)GB#jb?iLAV{ z(+J#|D&0&oJs<8yWw9tF;&XrlZuBUF^s=#%n*Yg`H!C2f4*$Uud~8 zNSg-G0~_;oSeIu}Ie*J8&vwVQIr1evr4f$+8qK&MoppVMXafVER{?J1Ga{BFUIbwd zEc!r6^{D3$(-;#K}o{OyAQukSaPIwmO+tv|q(@%4AYEQF3d_{vsBIhx(pLa!Z@sn) zm0OL6^mp}+JSBNEyTV0Ob#5)F|Btx&#UAEXZN(ew*}AZEY$5<%t##mZVB7GY74vmq zo)~+-V3A-mZAf#oC9&T@d|5uS+iFMAF5iG6y0raeuTuBU!m$st~n|J)Lw zcx30PaI{4 zfItG<{s;i#i6<{z1s%E=@Ho`bq zKLk4p00UfCisVl%1ZG{!zye>_pYoG$zbr64k(Lx2i_gAGuzMoc{jta~6FcU`9f~o9 zOG^&%xC0Ro{T>v^Ec*JUVfESodc|QGz7+mN!GNCuJs9K5kT!V9%_X{%q!sTPR2ADr z*<7jaF}EBQp%@B5Kw&lEcRfIGqBCKV=R5V^a8w2jnImrdZYYp5(2^THb_mwl)*>XhT9&CvbI*6WK4*^!^A4ePmQ zbKV0D9M}C)Cuzy@;NEKMgUWD3zzxDw0L-!9!D7vb8VW~^6OWD4ORNY`C1po?{` z=o-P#17u8d*k?xkH1HPz+jwtj-*T@;?K20QP{bagui9VXpV>{{sVqO12KUt&b`EO$NO4X51q9YJ(+vLfLC{vv(v0Cy2Mbe9dRQxk zTl$leFA4w*c_%r%y&BdYC=*;IQUO~d|Z8$bWh_n~!$4mF% zWK-K@#y~)x#8F5JNhT>KNNGA{62%jNy9(02g|7+ORJsxp1;jkR$^u;7Q2n>d^6v*~ zX%i*j3E$N57D)(X?epL?>6^l#aml$i;?h-ozx}K6|8#MpMm*)pG$g;t#X%GU@xi&w zIlvbborUq(@^X~BcelA7FlJ0w6c%#k6le8)66y-|1+|Sgq@qcN|cO^Lt4FdbLib zIZnV?%aOgzQ_3FU+8Nf|bz_<5 z=n}$#>q7`oh7A{66frP4Mm`=q-!S(Y+~?<%z>*vn^(N_y*g{1y0dZJBrDUs;!- z%qlS#2W7Dk#e7;x)94_pkCl*LjQmk$(2jX5> z@T}5sb>sJzJk7xxirq1ZMMh{935T|Gsbt|g(I z`fsP8XoxQ2C_FfpQ09aIuVN*~Svlp6Cf~)0ZYiib;GwG!_{uMuTbvH;M2Q|lX*fVq z)Ia>t1_f`RWgqSW{Ya0K_kK+KU;lWmg@P{7a6S+SWy_Xv3koU>=!qE!kjhMLh0ZN<;Tv6Tt z#<$nZ8&hk-M$JQ(xYW2KyoecGIrzoJi5!AJYH{ZRAeDFTe?@)l<%4KVrA zFs^Sj{I42v6dsaI6&cUk`xdyO$k#$P;ZqF<5^0q+FcH_l7-I>oA>u4&Do$O%EWT*;2Lc%NFY5Q; zN_DaV8k%ZR-{3~;^N9V<3A_C7Q@ZUdVdJbwnQTkn+eLK=8?Wz_MagTlH^*qHUP002 z;Zd#%?9i{vY7UcY|i6=PzJ1nHA5vqu}jVHdkX0v`u?0 zn^ZO9qpa`=SiM}*+4G;x;25oo091{DL%D#FwPYCcUE#H`!Nho|I<2K0&Y4W{+qn0~ zrw_5}m^)Jxwm-bLZl+1dvx`Pu()QoEMcHuNa4^j1>_4y9bgy$z0*lWoWfe<$KtHU- zW#ia%0z(5HW|^)kF^qrtwgLyDm~rsQ-qqU?FjFPLzL&=%Zj+uJoxO2K7L*EbnY$|)u0gg z1Q*#afNq=6$-Trlm|V0)g_HjrE=!_TbNP~9EzhrNqf4Rwfy<7yp@55H0piGJS`IP= z^U9cEIX(zpGN$k?!60=F_O&=-a-4EGbGmY`kF;*+9{*6y|+t%7;MdUsa-~^byy3Ra5VZffdh`5j^eIs>PJe)s$m^f z-YaCyygHPO=zdq>Xu2owU?Ia+WS>S6k=38kT!;3s{?bi5<6Hj;IpfYbH-R)AIp&p& zPiJ1B;=$mf5x8Pr-Kr*go1gKc3W|;}Ia!g$kJvn5AwL*l0T7Z~g#w&!xT2FJ-7hjz zJFC{H|BJ?H(l`qfw&H6fi`VhedLWV_PkBCW^nBE`d0@gu^fs8QNhG?Sh=Ov@yzYN* z1Kzq6Z<8}t*0Smf3nm<{?<%9SkueK^kp)6I!TWA}2gzU**Dj@H_O1+&}k#>2=nYOH`UP5FT}&BA?j zGlh-VY(ws=&Nk) zzwNVccZ7m)HANCvq+v_Y@4pzFRqqb!Ik+m`_#-lj_fek{{l|9*D$nhdDc;V6x(tLi zVH_pRqR397tn=GhHP<38%^Vt6{P6pzkE^TFslnzat<-UsBg(?E5Rl`U(+yNK+Q+Js z24(N(US##GJf1J7_T2uH|@!+$gaG1 z1Yaq-gZOTB>uMH6Su*))*88Mf6`4%9+)xk3^_oH%c=V>~6GC?a1VhsMU2|bv_R(s- zYr31KhjDrrIDb<%Peh8{*GmqveSIRpke0#Peanf>Etg}%ca{9CJw}W1MFqI8J-A5B z1V4*h1zVSY^|Slj%$7YFjPrV!r1(mvQw^rcp2uoyO1i#Hf2z`nTY2 zn?qtqHnc7_Wt+2%VfU%H&X`@h#`hFNc#mD^1!z=cMbGZ0bZWWQ`~Cn@45*<()iA?w zIh>fqscK36b?>j1d70zGrk56Ujmg`+k&A|ZLD6B-u)AknLrPvK4spW8&^)uC<>oqB$P^eJ->#j z!$Jq% zavHk8o^JqS@w{56aK$?}jE*P60kv!rkdL+PwHbxN?|_mWR5HfgXRT1+nOL`Mg@uof zfO5l8)51tE`-W@lX_;Qlr;Y5-9xX+4JJZPQ<-H?84I9bZB5vZHPJUog?bTuDUVbX` z=BC(~npaNp0J2XB?>n^Zwk6Xov& z_?-=cNschR(gKY2&h{Fq{^PR)AUh>5|Ns05uUuk~_-j;#_E%36tmDr+Lq-UW{VsyZ z%Fg_BTkjuXUo`;ds-{2sfi#4#e)vGXb~S=iWOOneB~>CSslkw(V?>utUvfKm`;DZ{(`UHP>>*D|K8>wR1VgNyj7j( zR9!cra;4%PpWcpU1)G}IH`y_mQ)%i!`>l>jWszVUceB=ZX^Tbq>{3xFkd?`$rv^k0myZUH1UM%cm?CAPDR&6C|rM4|D zn|hbGs*EQPzlCv~E%hVxDG2%Mj*C@!?VZ=0=iRZ=t?KBZ(?d)hH_yaIN;9BDM>t0y z7aC=>Rr6Mk_i_uI_467h8%#C+{N%hOVqXOHARjE4W_g0{Y8jm$E%&tYu5*gckRw}U zw?bR+KMm3N{OAw)e_3hfIxg^eo}HD}XiI|@&LS-Y(Q=UJ{`KC_W#o!K+J@z`c9{aVT50)rnnQ{&A_f_t6!&Im-ByJu8 z>ni`@ha~rl2LqOuy5MooqzupoM%%zv1JJq8l%ETG)#GM+ct|a+Y4`KTZ$tFA4ic)h z#ZlsnMSx`emHeFf&$hD1dot5RDsTNqUAo};yOtXxlgPiGHL4IX`^Z3H*LhmJz+8B1 zENZg`KD)_pfDfX!jJbzM1yPx^`sZ5*=@b9iytd0ceZcpT9EJ>EoTP$L_8@9&kvNtT zy7kU*!HPh0e`}hv8yMyM-pUl?Xz+ku6%07pl0h#)obTAr#Q=k!Wxcf5^^$UUR8^ch zE0Ez1k}Z+)JU?S2*4eEsjK2<X^YN4)ajXR$*Rt2c80slxuf@Vepm@QrY0P8A;y zcgO1c1B1mZ_x)Tie#XfBKYtRlQ$}->MwtY_RNg&f07?EK(dMH*MHyZsM6|sYF9}K0 z77iz^_Lil*%8`0hkLzU`w`LUu84gfNRB0thT1D+%9JZT-Nu24d~bG5EpX^mvR;-^r4 zF`CrIn&KffCSLAmB{`>2PvZWh5|&xo2?-ih7iT5tTK#n%b(olhRvo9gTjx-e-amnI zfkGQgqPYjyT|%ClGCm&2RMLA_;kg{CAI8Q5g(gRyn@VYoWh?}O4eg7OmV{u)a;V+s ziSkY`9B>K7oD@OnO`*?xm@AwhM27C=J6AaoB872-+0Hf#PPv4Wj=EOZ#7%|Wk%maZ zr}w5-Kih+KEq1(i_*Uf1+MZ|Kz<@=3deCyznaXCYefi+%AQ~~z{tKCTtW9Ju3gXVh zZ@ALjDa{s11#*%1KumSV*b_78#8t;=Em9u5pY2jQm98lgF z@A1BMXUYX6+9e(+3cFm;34CTH`hJAs7b^7mWECX6l(nkVsBKfOjF zd^+B64MzVU&BpnS%vvQXs0HxL(}G7@1V1%eCijD$hvJ+j}pvr z=CB!738@>Fj){3BpDlYf9cgjgn}%gL)vz1;Qf!dby6mU-gzW!!Ih@v;Ls`k>dS6$? z^?(dztTf*MM+e*klmm%|Gd{2<JMMBWNXK~Nv?}MRHD7$JN(0>HDj5EnrdR_C8%k=<=G*JeB*nc$Rad6ufJPOT+-8m??Xe z%lZS;Gzt)SD&1d961k*G_W5zb_uksqs%aZw{|(g>;P*W* zG+Max^FJ-cu-lNFqKj)whlh|_-nosS8c>G9W~|``^t@ll zL~texhAi-T6P_&m;GfnQo-$_khNN~SvL?{1Xs;v}Du744IO8g8W?AS|#OeOCHgIKs zjSuRC0DW?wPMIPO=}POPS+)I%oWtPXw4PV+48LP(<0<|13K3zATLj#`GRA`tN=b^)PGDUn45?mM|ixfFkGh%bI`4UG++ zM`hw4J4gqkmj;4-iK?=1nhe1>je}Emxg|FLSL?bI-9Y}-P!^JAlCIL`HbJ+!$-ozX zOsK2-Bd&XigYKxrLGPzps;~Ad%Iab>SFK`Vzs%S`pfj3dcwO>`J^%hOb`UyNB!(%1 zevZJt^Of}V3~1zB;nw$J6q;-mkcc=TN9S@D)=bfPaX>Z~=vqrlN6m%y=rsTXkfBGg zdpl)M+#{(4`1amd1-vw86)|E)eB|^-UHp6~j!Ko}1WfLr;8yWigb7`?M5!oWMNEz- zPwqgHq&L}Pe<1@ibosqi=|Ofwx)13shXeO$mU?W~%sx?p?ZR zRq}v9TFE*KN={j0r%%6DIb)p21zluJb5$^HPv_bCH5QnK#f$nwyIZQ;6#`&?|2&O& zQEUqhX{bX`iaPWTQ&AzW4Lo3cP^2m1Y0H)rXmY5TE=nAN z6X;;3AcB8A53wxgs?`CMS zpU7gBOFhTfVwm>hBta6Pg4SGr7V)X3=5*Y8=puO5^6GRYR%<7ZFugAd&vdO`N}amF zriD1<;^@>t{oWg^cX;9F$6hck-M^E@W@ zK5)p(&ON(tdoQcNPYaJ4?-$4Xs;`4Rc$4z;^9hM-@{5FSnsg6);%YmFE-CelT4myI zi1YEAyaKOcbh4OK6*D6-auzEduL9yv)J>)X3$NDq4SP&bJlVPSA|xG?E|aEw42DL< zCury&b2xb(DPyeGIC=EJzqp{doK+E0ac-uceV|sGT1dI0=wZQ+OT2g@@Rt=5Mdbsg zm=@6)M!EWBbAzl7BrpHxg#JI_@q^(~Kx)RVb8)+1bq06SOZ)DhpCIXiD)y%~{g39r zj@k}03wIMUM0m9=piwVQ_;z{bKvv`vfX3W0MX2LBfgb}mx=COLH|o%k+vVW2&D3_f zD7UCt>AigtW^_t>RC}>f^F`DG3s;d=CThd=Y@eazQ!@I;peOM1fQ zxqUzrPduq=X806n-0$FnBAX-tBX2X<#vESp<8X*Iov=l=jdjIZ1A7fMfn`!`dA}c0!omYXrn2+4 zk6r>ZG~UD()Bll*g2($oI#JXi5|bvdIqx33&6=k0YUgGAX3v`>iu(B}kYIVXvl47; z6)6to**Th|$Zv!KCnAA-3j<*HjD0)sx?KYM{r6Q}q5#WK7Tf_^cF18U(S~Kao1xBiIq8kXpH;3^JOL$lS%ro|?zo1%J=;U76CMGf zy3V6}rh5TIRQ6|4F;RlT&)XzTLm{@E9)G~2)2XxjOD2amW6n|!?w(UDS4VJu#p+m= z(57K}5NREBOJbD#g7Z;<;#wwuaGX%0LN@gYx~i+<_onVVI@h}*^g6KD%?(zk%vIBP z^1aGhqgo=OvJRNwMIwc>jq0XOKTkFSBl%VP%cfi?t#l*%>Zv{_R_`q$z~a@lAeoPN z6e+Ro%%-y6bAubpb5h^zs3m&>}xzKvMV<>-QMu686+U=R4PV_vxEyJGlo%!AV);mJ#JarMTS~^i}rc2BqBwPjIqpK-S;V@7N4x zxarWdXGAQHi9k6EI;t0j!^L}1m}fV{(F~jCO$!|!Pd_kohLIl+$6ck*#lZ?rI!DKV zx+6ewB#G1;xjJiEfzM@v<>xgLe1ivkzI3DdJ7a{-K)YRLshbcuD(i%P_;EnwuF9Na zORC1ON=_~Hb-Fv4Q`c*&u7(zYUPOQa(@?|f*G8cLCHlbMZjA9*Qt^}#yQr~4b0iN(YKxz!i+=J6XeDgoJJ{`DW zGwrBwE7L3R`LT(Sm$g}$*|guw+$$-$-7LuAy(H|ASHiWXHf(U|IpM(qu%o~;iM*s5 zVb>w){c5EPHg82*HBEx|w^->Rt!Qx|sATZm#EB>@%`$hpa7WEqy8NfGv5G9IplQ%!BYh*nlN5NDU-KW(&Usy}{7FlLS%P4*p6TWPA6KsR?CWrx2*PAodsz-n$?Egv^S>P> zXqM0Y3=CcV*X=^vFd7?fE;~ef#{M`Wc~MV39ruEHn{8gdAkC%hbyC(8KDU_*cqg;+13-!W8)KQMuYOel^NAzlu}ufz6kV!c_(bCJitH~ zFvIFN^}X@1OtW`ezFs{ER0TMJJ~V3ULc8fS(ktoCgsG@Qa^g%IEv^ck=ig$a)3Tal zx*TR*PL5!*IwvJv<2^z{HUhx8iY!Bklf$NBo{!F0E0Q6)+4-WYS<&5x5<{DVDd`ei z`=KAPUy_LRnn3@B7M1F6I%=9W_Cn@WeD-II1VZWl0zGGWoW?19W)htl=%Z11>p3Hf z6pv!)a6Z;*AdugUUCu!joe{SGD(l-Y%}d*6mV~il4t-9A`-rF)oONr|FilNTL;$$Z z%r@9y?Zpj_b<86LBnq`6qsxG$+q-K!+=(J8FiqF69#>5fxm+wIH6T~w<@VgSap!RD zp~acN`$&X{D`1p2*NYeM4q8s_qqkr2CqMdbY&5cbr73cT6M!}lXzEC$M+`4YIh5G3 z2d|L$+8HqPjb1i3x5}-|RZO`kQfMhmM_Tlh01*GD0o8@JY=0c}pE`d$|7Q7F{ARDz zd96I?K8b8A5~-lUigprxXZc4J7X`Zw8N;Fyh0cn`_MGeD+|m5PJv;5I_Z}@|m)lO< z^Cc|9<}xn>#f+M?0e%UI0Mqab|kA zyb(Q>??BYH08jT&-3TH9TusGek@Z;R-^5!qF#|gP@4S02Kvz?*SmssLROk|GMyUo4 z_{jqE?)Rjt>To0_rT|#mEEhok7jM$2a!9eW*!pM&Rm2P2wo;Zl3vcMhkL@_^HQxW7 zX74<{LmUksFi+X#Qr0fYlFw>r&;=T}SRiZ5Q$|kn_()zRF7F#Opb*aWzr}&2z94Mc z_-4x@2HEm?8bSb^q)d!IWd!qtDPe1@tB1iEhS%8I^S-AM2mO$@8HAmn-11P?@yL@5 zNHI+(ug?vkKPZ)Dm!}^TUCy-csOzc7wfO@%bG4MvT9$=6|jJ zfJ~%*u!_!tpcc)oP>WTpm~^jyo8*+$O~{>R3WyGj_5K=c*f~|W>m~)kZEya4?ma~$ zkrrW!kvodnsMMbZuh61Dwwzi+ZBN_?=dcz#h#AhN*8V!tri z&&Z6Yl61DHc|{M505lwOrcCFcHU%!#+Xt{it;FH*)IMhh$_pmJ`tBm`!^{SdZB572 z)!ck9lGb)oc0{lls&qV(9L15$d4#wXEWeNY6Zu-HrlYp<#w)5iA)W%9uvQFTbs-!( zXGSghFf|TcLy!ykY|(i;pqpr|r$C>c&n0C6Tudu(_pEGFDqf?YnNEW#$EdRaC+JWq zPrpF#o8T@%2P=spp+F}aDdMKUdX#q?FRUs%$nK5nLyy;$yUZy)_7`W91EW1*RHc#2 zI|m4;dwAw@g45N)Tw|`Gxll2L2>t8m(s*(HsjMX|y)6MD|92^5N%%i$jl6qoXL)Hn z-K1d_iY`nK%L>hI>MqD^=na@5+~5!$ikRf2=FCCdn{D>cb_Og8RxNL|(h8qya#!c# zo9DlgQ0=(u(CMdbNwzS9Yt$lsN4aLb#kjGo!+}GM^@xwR2{t}uFwg+;sRCq_d1!+- z;G&0gFboj*LN5mn?L9;(7pTCj%A4o5z^gSo2WVhkC_UdY>wx^g>OlDn zbhD+8jhrH^77M0q{uEGwksw|AM#(SUD~a2Lo5}2Qg{jTvgb!6-RnIQ7u;^iwHk;_Z z1_uCgX#C9eVz=?(&l~yQ-F#U=vBfObBk`G2OCB5}O+!F6)dpWmGsgqv9Cnfx&-X6M zEuT_}+I!*N!rl~qS*{f`doIIrkG-#eeX;n`I>^Ofs8i#GnQLtTD+^l4dk`g0sK#1Bolp*SLSHT(ZK1@>dGfZ>+W9F&-0riAcSrk8#ZZK`KpH;}38EceXf~(^RF610yZ5eN?R&nZ1w9=@B z7MhdTFwKyq9c|ajifZIKq9v~GPPI$@`ZX0+fY?nBZ)#=SrZAb1WvQAK&_L520>rHD z#rEIa&%ciSzvb<}P}{LV7#uBVw{oZW0r=G{8ZssO9@g_mqQ*1;q}&uH!| z)lJspHe-|&4sgBBEiAf}6@@r1C`Mo&O>BZuy9ZlCOzI$O(u*5dzzKlGKV}+_Ry2dN z=p#gEu_4aa5=8|oOk=0iWk$tW4b^qXmvH46un=A-SB*qw1P)R3oR03(b;0pSUFBGh zsd^eIL`;f&{$&fA^oo~FpP5PzN!kFZ}2B+GUEvk!%96(wU@b4oi z{F@_hF;mT6)2!IrI!7YCjON4yj^;-pbbqVrL!SN(u|9YJyVZOt`KMDVcQsud>=-%C z>CXeAaCV7cL3u}Eg-o>TMil;13$-E4%fpo4XU z&K4MyP!Fx2{6zJQ>S_m^YWt*$0RaYy593F;)*7+g5KfU300UFujVt4nP(%oql@h_8 zb2P2K581*O%$g^A}+7$)=8%6SH0TIU+T3p(qm-64@3fh6J7`VX9^5my> ze=frFaAf2SjUc=VOy@+4;hh^k{%g_P{Rl+@;xOY`0cJ%|Pj}Ti$C3Q;x3-A#Om<0E zBv!vElwn^p^iwBIw=QEZKtfDr6n8-@534Tml%slFJ-OxzuP=c6T%r_;PL4qcspmW4 zmO1d+wm}PcQAX}Y@HnqPJkrgycsdG|wYA)_j?WgT+Qf-)jA{Wp%?hZ|8XWxBRD`_f znOxziyQ>DTpD&^Go+{MrNP#AD>ppqA`qNDy5i|Kg<8#{XO{{g2dCDG;sCAu>KZJXh z50*hnGf3ZN=|q&ypd;$~281OUmu8#(Mj4Pa=Hrc!vy<@NMc{gmBT2B$yh?s>@j9Dt zaIpEG{jz5+;Elg}vZ^(yH$&Uzq#sDfoj=;K8%yPuX#4qqcKQq~vo_2B9vNJ7{i{Ug zg(K+eUz6s#7if_Bmr5Hy6TpEnc{N)Z%>R2yQi@4lT7p^zZK&_+!P|5v12<`k}Oyuy_GZ>+-4*gRX9^t^@d$pdbg+U80M1Rnd@|bB@s-1Z*!#H!2o=| z7?zH>wz|9+zHXo!)z$G)sAhQOJ<-qGcz4f?X79xF9v&9fJNYFKKqG&rw;2Sa)cInm z`fxuZ7t;>b^;63st55VR$e zTax%0gVgH*j!PuZHk(ytkYb;92uqJA$4mG!PTx1+l4tow@U1Zeq7-dBUQ|gYR})TT z0c;`S;KZV}nI_XcA$6)HPlN_6#Ssh9Lf^l(q|Xfkb17$mCczqbm27|7da8hi&c!K! z$qMVJuKP%kaj!fh2v03ZWg6%9|Hnn8>4sqM`n4=JeK6_o(+T-TSKgWN0G9lIWRJp7 zc>MPI)(D5iPbYO6Tc{anR*0R&@Ft3xfZs@TQ40k40y2zyXhKh*6J*tbf9q@+=6p(v zMziQo>%45X^%oXW%q-#T1-bsZS9uI9OC}jW1#K5phd#M#KQ`e|j+9S!9!g$*DY^YE z+G8q995I=T+~YBCULU5C!`!KM2mGuu$WK^m#xpoqQog?9{fJ>Sclb6`dOb9@?c|_e z1Dl_)L!S|;cVU$+vC&WUSg@ny2DiZce`$jPN$@M+KI7jHny0q!eRX--PC!(u*E*gf zje@VK1Xaph^ePC%rO1+D9bNzA+bbt0C@YV6eijUSR~_BRY;3s}keNl}0{RX)Oj zVzHDa+MWp|y?0XHG(=7%^uk%QN#X%3vRyP34Rc`*bieio>lrg41yi5({FYuJcAd(f zqGNm3MetO^JFOqEmuPRc)a!i8L4Um-XeKcDPNva{AFbJZMWiQk6|!`C-sY?iVSV8RX+NQ{;_G=Gx{&10*wna}Wq7H+3O zpttU@3nM<5;7lh|fXY~#Sz7X0iox`V_|V>>GSbxPWwnH?$Pwkhi)4R6VD3s+i3vTH z&jjsg(}FdyfXerMExHZXrF_l+UmaC#G}+%i-XA_b^XVRmi`>yv@wV*ryzU!I1ptVgbrM3LPaSU>L91vuM;guf6v1jv?5PkEDuRh zJKqSXlTaWWGhht315A8?4}C*ke@`3MGEEN6sZERG(0m+thv$08d*uZRCkg|r8a>!_ z`exa~EU91g=I~-ljj1l1c)}r+%z2~Lb;yn;v9p3LP>E3WL5te4UiDy*9=HPE?o$1z zUe$g2I)1F+6ylwsMG$i*G{KFM#Rr339`T>FwFPJwx9cT+tAd!4tcJ@HhVUdvj3k3y|`94Yato>odowP>HqT$Qo^GT*K6f06tBU9 zBdH3J*E(9pz5|iiHK5`v0Nny`cms}kP`rl>fbbSLz-`f%=(@psW_XcyOH})91`+zU zB*z*(CBBwln$&&EC8wHdBC9-z6Hve*z?-2PRJ7Z64_LS-}Vl;gs-w{dI`hrKI@U|?xH7+>2{#aqp=4*LAX^hO6C(Mr2C znQfpR1au5HJ7I;K9&RqaQHd3crStVZyTE(^aqk zx)i(|0yXP5)G}Ax+aNskAyRoCdXec^EHrHacEnBce#=ETq44TS;!&YO9JPk%?;Z0XhPcu{2P2tj8kZQ7sMTokvs zcIgmHgJ6~-vQNgsvnBsT9Jzrl6x?LHGelMgtu9G3+^;98hp%tq*eGipYR1* z3E1(uDd7wXcY32nU+c0OjR1+t`5wc+U%Z@?I^n<4JgGH|5YE}8HqH!BCp}-#_;EGm zwG8X%dC%+6LYyPIh}0+=t}8pds_@nHM0L-k6k-!L;?-;woNknliJE~#Dey|}w{(Ga z^;8`Z$7@g87K&X4r;CN@BcmpLHdw%8e_>9xODqDD3q#NDgC8D_wozth+gwtnlq-DK3e;mn zOJsJ>`mUxAKBs3zrP)0{3GN~@`OwqDclEnXF=6DGM&GB2GSS%k)y}1qA5v<2Ph|$G z#vc|>_lZGYBVW}2%6Owry^}e_DJLxE8S^_KSI9S-iO1x}Y?(m}|7fpC^jcRUC3Pv8 z37Espw9Z3B3A;Em9XNu}IhPv=sTiG!^w2TG$Z$rMq3y8Ife~S4T(|9%MpRA(+NkK7 z8<$u?0K>Ybv~EaR8H;3w2DW+JrWTlRLug1*=xA=0NeBh2=RCjt)9MUi-lPWT{A`!~~Uv_FMy%V0BCRB2}V>-O>7Ij&^ z^SVhGWiCgO-@WgCw>kTWQT7>YLAanV1ck1?%#n?idWn)?`Z+SXS999!-y5t}G_%I& z%OzH>-NGxi+?`by9V?Nj0n8mb?F)9o0qHNevhk#=TkdgfEYBuFW=48eSXg?y{miiz zWG;_xl>lC7eA@?kND6Y}`1+@;Vsx*{mwy?W;h}u+=lEL4`v)S-)*(sXQq;|2(1P;p zA=R}_&o7<}6;s1e_#O==uiVbOKv*p_h@w=%S27?MlHMr`Y@(7`pv9BJ8-bgy?ZlW1 zLkoES0KC1449R`@2av{dq(lKcHs3#0K(eC<8LEpEX+v&q(_R#_bY8Z>A&=huq3&Xv z2rRa?j3{?FC#=OZ0q5(G6Ez`&0-mX8KF0;zXxn4E|K0~qZd2S)j$3usx1o)K7hm?* z!JzR?MEg{>WbeSwjl|H24vD9ArSCxk$hWtjE;CBKB?#d07& z=nrcKhr9MQ`6D%UJ9ew`s6(zu)|^~IQChb2ekQp%80&#>MR=^ifYK|BsmirUR14&q z4T^Esx19UcXJcSl2qqeAB8T=_=2VTfp}`N=ZS%AC&-sx~g2p88)+Wx-5|&uWy(BsY z@+D_ym{;c=*3$N?qZUF>yKcn|$V``ZxiYU)D>gfXg3$4a(v+&+eos4@|7TEnVW@9$ zu+wxrAdQyc-Y85WwNVNgB-J9x2WImSbZ<{=?edDQAn~oL3CT#(fXpbIIPO85;Aq|g zHkkd+Z%WsoDR`fW#ccH^tyCDv@{J7R;L*?o3+k*jigm9X-@JY;$=@|r+|hv3D#+mdhoy&$F4ozC%z4C9i=7(SXAzpO=8>w zzIV2kwzizn*^6le?0;_vc=bY`l5N0ao<;pfC^Wdw{h^0NB3au!SgOW{jlR&0FiI~A-VP!9wU$ILic?@HR}BD`fk zeJ5Z&QtR9;6WF%;N>uaMN|I!YZ!jxor=CV^_;cBKmPw(61wLZMyhKcu|8OHYMYxml zEM;q1#$?s{S+d=JPAo@ z5NQVtj2Ie`|DwB^U7?UR_I#VXawylA=aordxUG0Ow@R>B$-YK{W~wHi2Ahw`afvdp zb0TQ`az~}lWQY%dfZ>oJL#XvW)w|)0aK`SBhPjuR3#sT_l&AA0?1{R`2rkaU=iLFw zTq`SOxL)}59_3!q7gIkWkltw1D?pXGWw=EwooEN&KVKP!g-KcG(7hA z)IVl9R@#k;jgzfVV!khm%)yBCS-3@x2f16{!VO1YZG7la{+%n?ZyHkMZd;DroH4|6 zPs<%ff4u~<;rb9_#?9uwFE1J-b}z4AJ%j2+^VJ~M2g8r?drbR7jfl28*WI4I2<4fHO z@iD^;ws-w1XYVjHJt(h~JmYBVmoz+CDghm0w)7YO;{`_ItdJWIVv6Y$N;?*X6>$|_ zZm$$$R?h`t3?9zuE*c~;(pxy>oiGJu8;ZcCwi!3^5sG1Q7_}}KG5MW#kVYvfo893( zWUFe08l3zoTaD*(PrAq%g$_eMeO(PS>uq~KOl)-u;r|6D1CEWU_u(F=n+uHz{cViBSJC}FZIENH{`l?D zr|KrW7Nd+#WbWB#trI06wxhZ;qkZ^)B8oivV+#NrQYa()-!w&nYUF+P3? zh634^SOvQo3~vmACa|J-=vF0H<7uIY$42ynAX7}M2vUtI%^^{;wmf*)SSz|0V>V_c z$~!hXn$I5t)V|Zf^VgVk4%c>})J)snt3JB1^$%VL0RPogF(hV>OP7HPMnOy19(@~^ zds|8VK^L$e zS_x-odEQJ6o!*C@rv*h^hQ!`$cC_uG0sHlMt-a$wPw?T;4OSyQhkY_s@}8~|KB~eJ zp%@ZTLGoKyl(P?2+HA5;*CV8VK<_(;OgDqV78)`u6Gq8`D}w3J+Ka6wNz04q3Va)3 z!O8LkF!%~xuAMEW&QWY(=qb8+p!62bN4yJEo8fOX5Z@PrWPq`*Sr~bo;M7b_AOwO; zOh+$gpb3}K72_bUXYwlALI3HqP_#Dk(4m6`S9GtDG zlHfKOgzVKXhI(q2r5uaTKjmF}*7u65H^T_556f7u_H=&90+6s)hY|jCOrafT2l zTh%0LYxI>0#6i^~yX^w3_2)b=@0p~|Aoot#ynrG9sQRnA@Wmk57j6>!JdBjMF<`N- z6*AwuDfsXrDtt=%O$$i+hJUf`Tu8K!>nQ2bZvFJqq3pO3#`i1`>)mKGLWsPXl{i3* zln-U+`DCxnIgUoDbimEl;{#$Jd#^Tp=}}rn_LOsdSpKiOi$FU3C4%+_eh64BrDjXt zmq9$3O(=Af4zX`X<2u~JQIbXHJnDNU^JpC8#rCXMRz1u1=v(nD5vRmfn!GNyqb3#Y z177kVCL^tcz*Ov0SyTBn@bkGC+z z=2<0qFtOz%BHS!ol5B7}0lx&@Y}qQ11}sHO#ZxziH0|8(R( z2=S(QP!pJqb&ZXiXFQvu@@aJ#kG!ab9zD3>mcQ-XwW=Q8#hzbJaqiz9M(bTiJuZUh z*?L!@ngBqEgBC`!h{1{ShwoU}OU)!jq;&d&VZ&bSpA_8deIfZ@2xL0*M#N1}zkN!& zVEcganGD4iK_?rt^-;4J&yL$~viFNKSNiQLzNE@*+OFn$Iv>G_`^V#Z2oFru{$YTe zx81-zr`EbygU8@iVRZBcSB{&Y6_i^&|FF{}rKvajzIRq10;7&k+x_J?Opmg)R&gF@^$b%!o`Wyq)TP z448Epz&SvK=&EP#HRnia{GpA;v_HYiUH^TCYv=@ zvx6Q~vYwOp6@&Jn?!7>+N%`<5lZ00!WFO*WZ~OS=x+$2>I4R>4tynMIer$cpUWCcM z<+LT2@kDL}lQtc)aXv)#cpWxeXe%`W7Q)%c5YRIb$|-6y)4FNrm@UzHL4tm#<=u}Q zt`076zPH$v*St$3pf8PX7#SL~8c#CuH5ceEABcb9hREHy-B1dX_MV}ZI)Og}_OSfQ zX40G)AN5Ful3U`wk1TR&&%pp0)M``Qv`!&>=81B#naA_4H7iZd#=p}9{Cz@9vw@+Ku4sK{2U)<&b zQ5a1Wr)cgS{%wUWAb4d3yO9v10m9Cg$20={w0jSceB@OLdAe>$DK=srP|846BfuI9 z_M4fFWt*V>6WvOPMH}Un^FEvOl-7g)h;XuOQ@Od@5Y$CH3^-{wPJz%_66VqBPS34L z9Z_6ztf#f)R#|+rT8FtlV8nj%QG9gaGzm3Fs*bV#*p()gUTteK`%c*O(oJT2(X8zZ z#O7%V`xwh6XSOML{aZ7WEwAn>f3+uuc;1zVlx9b2hsP9-N@QOQxO?>XSGk3RwzSU~L#o`3|IqeDKV?zXJUFi- zWp^DP-l5UKJgW++B?cZsJB6BD2HgfAk=dlg62_Z_o{>(;dRSwtD3N%C`EUaOf38a1s)8 zZK#VSYk~pZ_hMyWTy+?pyYe%#v>G-Z0X5)f&=C=1(67+?54yGQ6mm_7<3(jr%Nm~P zIv9Jh4@ERGBnge;jnzGiJSpVFGxa0LWGa8}^QskdZ4 zOF-co9im@d0g9?>sZq%!9OYZlV6ifZs;lAIG#>M=b{`o!5=*Ge*%N|Ty>YZXV~C>p zc)+EbxbBt`s$?M32HrwZxCVeFfm*vJI`Rg%o>90JRzZu+l9Z*J(YghI;j@&Izk{x} z11V^5ysa_n5RI(;KbF*r-Cq^$H?7VF6+b=7N7XreBX~EkAwb-(;jdJx;|I%Kh)$=M zNnYu1A=b~&1Vy3{9IS=Wq*7?or@m@+nOr&5x5k}InF;|Oel(`M!90>dY9*1shf97J zAh3vm=(DTZwL=+x{1!U5k4`ZG>tqsFTz~`^sC91ELQsfAfV|(d_wA2gisUBFYG|3) zKeV}L7H&!wTn_h|iJ#Sa$(N7qH5=}gJS`68oy#um-_lzJ|L)XPeGC2 z!b>Y^cce9yU0UnPAay09Gjnz3G-4_8%6VDCjEkn-gli}F%=1!@8To-;|p9DJ#_#XoHJ;~!RT+GVbvG~z^-IX0F zwE0@=1&ig#{OqB^$B_q>%-q5%`RZB1a{+1WITfT2Ugtbs<%u1Yt>N0WWf+_GCj zOcZewGpEFS#V%l#ha-ulK~S1Nvjuc&BY7Qs~mz<2Hj{S@-o3WEm_;F=!twC32E+$V^Akx!S5a6!OX@4|&2m}G?O zu;!Z;?pI(a;b~nWv%HSk3Zi?-Mg%t)s;pd8(_Iedguh2cSAaj_o7RfLUY0qQb)5jg z)2+i}WXA+!Q%5@#C4-POAR+2FltFsO>zyTrt^smQz*zDjdZS-Y@S#rEK(~g-6#AQr z*->c}AYVWU@8<3;;R|mD6p@q9A5Dcm0WeV(Jj@kWE1lKIoN@Uc?&KlJ@^9g6&=M-& z9X*@+TZ}OJ(e|c)gi0DCr`Il8H7<w7sDH;`hrFNd$9>k^)t5yY1VVnbM5FaK?&^5j}MJg)7V7Ma}cG2%YLM-)3I$Fe*7 zl((PcXUOH7g9FsUfI4jxA+nu0W}CNcfboC;0006BFaQ7+IYF8N5wTYP08iPkgL@Eq zf|O@YvwVGGzhhT>*QM5QDJi|&f7fd!%Rzg za2P5B{onOJ3<--Ii<&HZTWMC^K$Dqy`!(Y+^1(oR9wrLxd1{sbbRdJqZ+&cgn6myip#j1_-IcNV^<-)Y3A~Lht$X) zkb)^srsnB@R2loQbv%T_uh);JM7Ok9y^{Ud;SP6<4508$^m=cGEP?lqV>}e;DGU8S6{_9?l zC;;CMt@v+V_c&b(bJG~LpjZ}LA$As6Aro`0-8ObCj_a`waFvTppB! z%4msvvTM2 zeDF4*j|@osPa1LlbNt;o9U83Y3B7yt#7~teZa>2!&}dl(qE>uc;b|8$x0+kjLIE6* z1lVWy^BU|}HalPbFNQa67ZDw*@9D#~|7trg-M2u!#mFd65l`|+7$lxj6>H-4wm&b3G;Pt8;UQH?t{o)1_w~lokzz?GP1m=zNP_hJ4`{H*?3;Bw46#5S+qZ8|+51EbCALXfD`W^qM73l9>%&JRMZ(67F zkKYck#0cYGv?|mDRJn$cres$B&qJetPtse?@<#x+241V0VX~y3g?p`k%jV;F({-af z*yx>#LnXo}HnD43Me_S?_4(eofg{0(rOCz6S1w3shxgp9d9*%C9aG#$+o`v!d@Fi;I4IB1?1pyJz_WR9-_I7>pN!N$Tb`&5+r5(e9iG{4k-gJd_qv!H{0=)cC39u}X2vzg z^9s3?DcLhUaC{H}FGBV}G%@MPcgaE2D+uS=k%6X6&1;P@q&r0i23S0L&2X;vDtLQw zm@n(2aH7GFF8B&midnXe;WrwukooIzf1mp#5OQ0L2VxC9cg@0tGqV5P z!_ipD;-JGI3Kb*j6JVRq4&!R~8M?xL+KzZS6(29gch?Rroj#pH(i&5uYv6uVg~N1& z^`9yS=*kn=pmgxuz`a=LEFJ;unSBN5O#-z8POCF4)vq6i7%&h0n$GYv8Qc<{>XC(# zk8J-k?dQbyegZXFk6w?95ceC|6I?Ur{kV zu))&R@SIoAr=)}y9nR|PKPPfb(xFsE`vFr{E+HdHfkaN?z|&N{{_cdY-)&5#IAPQo|QxqQ%*ISNd3 z(3RJqdbw+FHQyhzeZcRXsCri*?8TJb5Vo{ghzF7l;2l@MPLwi1;45`=v9Sc_is*dD zy~eZxzcLsx<8j2>Mz|hl$0vo+>LVLV*)(|XAH^s9IU>GP`hE7?2xB?Lvi?w3|K5@8F+g|!$XpUOg z)mFY*E#jVte-P@~<6#eL!@qQwl%Kf&60ucvouOBB7gXp!=ehes6!J@MW5#Z(IN6{_ zmILEY{|0lZPr+@Of{yAAY6A~9G|jeu{SzP0Yi(#huc@8~uwh}C`aCegdoa%tV;wQ= zm&b+=OOU9TEXU1a@N*TG*~)Txb?Q8(vNg+Ba<5uswd9r00Z<2;Fe$5>QE0`}>|W1S z_J`RjGWC=NJev@2Pk*+szs^^$loqiBwB_FiImQRV`oZx_k{abfO*=B>96nq5o|oTP zC37+fZEnnM4t^$S`R3p`m`B{s0k1Lkhl%e2e0l|%uEa^7CWdKgr}cz5TKHTSOvPEd z8!E--DR+5eT4`3SOlsvea~gnf6(6K!H-;P%aCJlug>-|G{zId+4~D@P`9#${{Fyy4 z>sQXjdo(ad9q-;v4A)=>4mRs9NLrzBe}_MP9(VL0Ub8E{<#`{x#(PLJhXUU8E-R@u zsD^Hw4jDTZNMI-R2_x4)+CpUp($&h?;-^0`9bt$2`ppKA8v}vbO*4bZe z_z$H>wiKe3aNp3u*M|+)g{|)JJQHuI2>S?e++rrjMoHRr(AM2igEB&frmuATw8EI1dA(D) zH;>LbjmB&3twO-c6l)8_xYl#fGX?8Ti@$~$eot4)Xm-j}Kr^K&kU1<}E~G(|)Jmi9 z8qC*F>r**Ed>S+=*51_&i4sJ@o*l>ycHnZg9RVDVa5=kqsjZg>=aS|vjTYSd@*PIp zHOAQ-1xc%(3N~hMDObPhwNuM)Qye~k;CeN_PU$3{gl%YbWkcyWm8#nB4me^6Tuw+} zo{H)89qeY!#PBod74FyVh;R0=!EKYbkxW4OMc5E0V{$Vey}2}B;u?9?>`P>vFT!ED zfYG!Y+0aYXmf`r|*1zQ(g<<>;Z{{kO91C`}wU4lv%1~-r?#kTtLUmXOx<>V)sYI}1 zez03GKBh#H86CyFmICapu5h(->3h-@U(c0xy9)>;nny}Qr95WA$zpRreDHp0q4JEb z&f)`*Gl8n zxZR8kG)h}4*C7>HXtlbtD$4l>Ae8>3BTOvHLj;~$luy?_uVpEApg0)`; z>Og02QgJ()dYVmO-GSBnjAwUI^&~->^BptgEEyNY#*gG`)}pEm64O8%(-(z$IQ^e8 zK{XB_NGEoFW5=ulp70SmjE@eI@YkPRo=(~90%d`Z69sS|gK!^m2J;uhC;04H^GB+a z_}Q*R_U&!iRWxGWz#A>Zz;NK&95-d|vT|d{3HvuE@EVHP)YSja6{?!n4tNY!GdFLXp&mG06+w3kY z%rQ(hR3#OJV}yXuq-yFq{dP*ajWD8z=K&+nL9gg=EMudBPg;YfhHncsH zZ=ivLAZ0xvGzi@(Sl$$UM&WnG*}O*sX@ql6uHlO}=HAJn-6yG#7y4(N8^Ft-S5!g<^dX zI+sKlrii6OUYYT`bpFq8oByGkw{Rc*zrZb+_%vySfid82+;^~b z1@J0175a?Ze65$7XvJ5HP~2x-54r0wx1^mBSS&C&WTLHQvq-CZ4&6yjJfa9me`-$` zFGGNMP5Ln4o`iO|>g;!FYITzM);EEGqF6frJ&WKk#Cl1AcffYg*w5AFyT|a%Ul$b$ z&lhfO_{N@-aZW~#fHQ>p!0z|0#l}w%K(SltAvUuy4mRb4c(Z$AHCQ=MFsHuI4tDM( zaAFt{M|Uz(Vm9`jy^$87qsDckMFKBCKHv<^NVk3fV3p_E=+EQ^ zurY*HsK{!G{1hn!nzQ1Q@OvI5?26{o`Bv0QW*_Mem`jytR9oP<}EEz zbu@M_Sfl$W$-3Unzn)5PuO!)1=3H8&f`7PBvlqrWFu9R3C4m=>d_J~36L7GcD)1^4 z>Y8cVd{qnV+3+1gN#$EgqHRpjU7)ZO80gG>r9*yd*eK6HY;Fn5|g_ZufHb63=G4Ebx&y1bsf5Gkmdq9N0V63wReQ9pV zHNd{(%Kyn@lf!w+5ec`boFNAUa0kG26KS+)&&oPtB+wb8Q?)5m8d4Z!{fDGnv8#jf zMsl_1!x{(4+ftd~viqG+kW@;w8m~hpLXb3M%VK&iIhk7rPa@gFx zff6Oae(}Y&^!PT4_F0^vd-@W?{kWI}kIXEEaGT~+&D86R(g|494puY|o`2THcod?U zhF`)z`17Bh4PE+}T)LDF^e;D~-?CD{00G}0o3S*`%=WduyJ>62Dy#yggbkUB$6+NB zX)_%mG)1qdV`U{an_6RK#N}J6id)nXmyN2UyTdRd^tLANYSgC02Pcbz=2EJIRfnPm zs@9NmJlHh>A079aUYB~_o>LK>OD%8m9sJ)EEP*?P;netS{E*4gZ( ze3CV+Nw(jj(;ce)S{!+1CSZ|oVSIzbar=@-N)%fM94Zws{*&(fzD$WrewJ}cSpKpm&5hi_cx-i zl{?v5u7c<((=TI% z)3iSor8BubRrxinFxMpyp+|34JkUJK->C=VSZU%MO>HZH6V4Q-JRE9O^C8V)^epyeWIjf_C z(qNAX*_kc?C8qlT0006BPyhf0LIIux1d|RU3D7jNx`zqj5iW)3SVB=@HUbQKYZl`-;P0%Xv?ThHGr+66w_w zReADGnddj`nDDK7ZlHh$NWm3eQi^#d%9;wX=D!1DCX9MwMT(a!TAh1PL2avRXSkA^ z!d_g7%!d%&{n7rb49aOxY*=AI8r^!wufU~BE*ZZSZ9&*@~$en zVuVKFXUMfH_@4ODJD^4*@w15P2Ri70T)+sIVzrd#6KRM|cg3>uMj**8I5x?7tcp{$ zUJ(DyH39$XGPXe5W$5f%N0K?yl{|y;a&IQIbz(}yL?R{im1a$??D5TT61-_c;94Hk?{w zDx!F+nT0u%GF!tZyM_y*tGd@}l7jKve1}!I9ykfC6dq7YC&6=BYe4I!^m_%of>RT; zdb4gEJ^UBIec?nAa6Cw!1f*IS2XAlA^Jrh2pNhmd!}C~yG4m|N8;IIjjE#;w8s1I9 zd>q#jbOHB2%7YJL@AHSAU#=dqNp0wfee4#4tPFom!Y@w$ zMVI3D#>hJHbCnqm`j(snD=#oi+TpV@Oc0Ld6~U0_4s0i*()O;JoQY`tB1DdAkz{Ib z6N${4D~%^e`+7)KOy6m0XCcwN5j3kMHfFC35G!kszcgQJO#5{jeTSE>#!CaiEe5}=;qnx|0ZfK(&7IOBkT{F;;XHGlN{jBh`8BAF>H$p(-V05{9E zr*!b46_@y+Pl@_an^zZ&zkRZj>zhO1g!R_Zw*Q!VyvmM!^X^gMK5gP4D5#=D*yG6m ziFsI%<~Mz0`nK%L{bgO={sDO`dkdTOA`1!b3{i%ev?DrWb%X=#q4i?;VdcUp$8bOP zc>5x*C7T!#AvN%i4~8PJdts=A;pE1^6*%fv#0s6k1LLX=D7+KcyIH( z*{FRbwzZR?gnj~f)`G2+0i_^Ih<2mRMR64m+%g|NJ66c(gRzLX{IbD6ipQSwfpeeJ z95d@C^pm4BVwREpqMYT^0&YH|XVzyfbOnon137sal}Jl&nV1E`N7Q4jYqHrM@h+V_ z#zvZCiQ`OTJ??bjW7rbq7VbHM(&M>Hk7nz;gBW*k4$l}&$l0nd)kz`= z5LZXZ>;A+n{sn~I00Qm+0006BPyhf1Kmncv3DFU600;N}`=~6ub)@7gS$YK&;-n=X z318?Z^VYbI!rcQ0^zUhWnsjGg=E*$FqyL!(e-PF$P=aTtN(0@2h|z0Z>--qoo7%zM z2#&xzGKVW+2{~86-5;-VlhEt)bwrowCOA{aZB#EZ5R`!k>C*xq^Y(c?pPO>OQ^tI4 zNl(P_lll7PHp##c*3U@@=P`Q_4CZ`;=L2+2l1jzi0IposeARZv-b$OD>G#Tpmwg9R ziD4yOF8|T8UFaOBjQSrT$GLLGsQz|D&7%gKDXq_^bQuqXTIF+%LjYoIz;&Ts;R16L zL@BpDaA-V9>=5FkHRhS$Z-w%ym8#k=%ZtGDCk6?pF5%w13KD3~v!?#%b}#quCWmE- zj=EN9%v5XuevJwVwmbn^M6}e=-vF;Kl`4K;)~xM6dwqGCaE#po_mHn`;NIyEgFgK~ zMb(NyiOOYZz8|JuZmV7q(c-){3{*R0Dooi4F@rO^S2oMJqx5D5V=ej%Ono!N%~56y zF^IIk^+YK!|vV>3ChfL#C5A z&@qB1aVfgo5`mJ3`*@eSd7?000f=Gqa`1)PIkyK4fc9s!z&@K<`%n~uG9GJaf8`75 zBKqDsNzu{$KKX^4JuS?aRz?~jQ;2}_>PqRkWfBOarl#YE5Cv$G9o;u1sRG(b=bi(< zL@+AlwyZK*Fgm|L5;LkhHg)(6iba5BMjO2hL;_wu83ao17^9_zW_dKx`9sep<;`<; zP?IZ4FFmttXmVf@&Jfnu2Jv1!Bvn zJeNDeiu1@ZUKA333pzeV5?10WoXmb!CF@N}7oi}|Fnh;K=13^?*@NjjM(M51REPy{ zVC>2S|G}6k-JvC08@dDrEhSvs%uFUiA!qUdIjODy8Zh0g+I=P~DA=Oe2+Sdwvr~N^ zN1;Rnwi`WtUek=L9|GvSCz4s4t^{2C*Hu{Fq`t-Fm(BRgL2Teaav`uX-#umtNMf1U zvjokE3=CoOR5sTf+v`Yr@O0~G%}G{?W<04*@C-ab1`AsoEVYH`VYIa-dMpAWW^Ec( zctO%G2I|b6^iIX}<9pws4J9VX&_tgkTULL{HC2Uos4)+s?$hDJ2y;n?xMu29QJG=N zW>3c#zSamXF0OLs_xz>*%d#zK9fvL}<#`7PD2^)z%TCwpGmw>*v%8b*?E=a^;vKpV zNBI<39lD;wf6ao8)pGnO1#bFg83E0MJ%o4ISKn79Xo|#~HM;FT%~9U52)o)IFh?lZ zdBAoLKxzkk`F6V7w9GwAm}GJ+q59Xk``&2!=N-CdM8QW7$+G&X^&qDo9iO@#lSzX( zxSE#m>4pZTjcyoFK3Sgtl(~~K*RNtFS;-@;kQQ@_i}+|mSvoMwtmuH8U%$WDq;q%) zQW`d3oa*a=2yZq!HO&FLfGCD?y*oluq0mSOvU@YPaW92MLVXqz)4yA6cOjc{M71FJr3bg>L3m44$H#Y z#B6ogI4peg^@jq6A^H*EV8{iW0c0r~R8Fbz$+7#VCKpCU!@fVbW>K1^wmIh|Y^eEL zh}u3X$=6>VWp{`iGItltNn543EN?>sC9eWNdJ2q!>e^qED-P#!m&Zc@gmP;wReHPE zn!I|EFXBwsLH4I``lyGWk{^T3YlhGN`1)j&uc|ctSd)d}A-1M;$C+?<5qv+LwgHQI z^y4e^{@OpmS%9`RverYB z%5<@AKeMq)2Rs&CJq#fe0(Vf5Sj(zM3egrwha%vtpqZ4Oyn+JbaBH*HQDxBTAK3$a z!fYdtJl3kfaH50Z^G;DzVJ%n$JYV~CyYTius3V#`e6>w@Kg)lBo8Xb&a{0=jw2qJ! z+E|LG->e+Tg9ZQ(@Bjb+0trw600nOWo&*ii5pMt)-xEuv;^&zTPZ>yOjSmz-fHTBP z!97P|xLapZ@O$4ndvK$(;o3-FnO2nsRP(SZfx08PUW!qO{QT&hgW0zaj zN;l0-)72X0F(1b|*nUl`=G|@uJsSpGA>Hh9PkkG*a{c`|seYTz7ZFijwWFa8oxHXfvywJ{!I7(eN{1!K`metkne@MI z)VZ6ov58B{T3oG`&^;r-G5(Eb>$6bs!t8P?5IH=Ofxm^<0$ zRpBFCW}yB?e;&pUVWtP)5K6czgqXcPh-J$yc_T6pBxmLMI%AXjtRGL97uiH&S*$b) z)^^tL(R}yM5S9;c7w^XpR&FggdJ0;nps+41sRR#vV!EiTrQDhR6)#A1YKuuq%)f;1 z628)D$#+t$C1HEtmHT~Cn$MYp$a)^cg~}cOkr7S+eWT*rez(wED5Th;+4(x68mH?t zXSQ$g`sANxxF6%vbZ9kDWsdtk${DXiHcVp!++i5K&WR5E8M~DA|4zhl6i;-&P15uC z<4~PIQ?ftFOGq4=-ez<~=FH2sisix$m4Q@xFn3ULLV}{2w}>Cb7`&`Sfp&tk*E}o6Z0Na5bq<6N{y0n&`nQk5k+hJ|Q$xLJHqrR+h;xUxjA7 zJs({nrld*bHfQhXzlHYZfPYpN%oGCp z9{CY1U#%+9Cd;#N?c}Qx+!_JGbsyxW2`&lECd{gZi1 zGj%>Xy27b4M;PT)0Uu8WcOyLk95%$)Uu^8Q<5yuG*)G&fhuCp%bANw2m>#$+xE`Bc z9QRv@3=uvClRyib1gzpmDNAt?MPu<}&z()J2;}+ixIs03L(oNtE=>k;BiE|bggE3v zqZk|c5QzJ{SmDy}4-csI{5Pp*9c95ysXnN>TY*3Zo25$;XQ>aUHZ^n+d2Rpm_ooc0 z9y=qIr|_zsmR0EiDs~iOO*naT(I4MvQPAjd{r}@!pK2Ug47zr2iF@cXjE!&i-s?Gd>8T?7+rK}>+FA|9~_pRFJrtS{E=w~r_f#%;}WAIvB ztlhrn<;nm6D_{Ts00Idx000#EL7D_1Ociec1`(0aB6C%%mm(+pN(JJMKRvW+1&$xc zus!2}Z?#UCbE)(zbVDSxEk-|Qh|Vg8i|beCWao>b?E(UzH73lTh%}NOP{uh4G*4(< zo%C1XN37>_rC9AK)Ki@cLIY!&GuOQ?-iZ0&Lmz;0#Y{3xGUE;5XPDMuOtj5>CLGJ@ z0gNT*aT@4C-b_kWu#yd3_;EH5%*)U@lXdeQZcKVDKmRL*A-m}t*?Ocq$mYGSPWKvO zD(I^C_xW6PU(0|WJ(ciP@)*^`k1-#YiHK+=?+?h|wC?`oZ%x_)779%Vc#Yo7CGW=v z?aU}NBgpXM8KS>pHXHWKTj|<~y$Xz$Og3ab`Wm->>uZ~fbQ*nET52#y$>WkcF8Gxu zT$Ki<0_e=a2zYO&3eR%2TBc=x>cS+UqSCA~{K!D$xvh7&^*^vlbNE_>Es=Kka^SCc4U8|x`EX!xPkoGiu z+{-(rj=FaeMMGdkRlRGlP-Vfq_*v;{0SnH>6f-DOm0>oRj01gNG=#MqTrTyLBFsod z9o6fay=Qqrci3)>iKxN4c#EuW7~!0_8S0j!)-U&TAIcDQ3ms&w#s6WQ1_|kbdVXY* zI^79lRq9oomokEQ@4IDk@DhjW|AXa#K&DC|Si!%*q5s z=JC^3BIda^P-VGUh5r~>s-L*~jmY5&{j!Md`U@sbK2nL=kms{ zGPjlmo1eoS!;ijEv+SdK-%vRVl5ohh`)+9XK4*TDZ9`e^z z9Ji>k80n3F8-%tXyfA4cqw(&x4*b?8V;A*<>TTjFj2Rb$MwYtI(Z?urK=}mky+!yj z$OTbe)6OQWCS5v``G448LuaXG8e%T~rO1jCt(n#2?OMnA$I4mG49=+{cv{DD=u< zQ>EN$8UUSII1EO<4)@K)k!IiSTfP0VKU`V|Nr^*3inj`@XGq~yYKumYp$bxN7)!8% zOnVv8#a*0q0Xj(&u3tho+pasW>fKkWD)}|Lhe}anxT%T$`i zM;kOjeZ&R>MV+b^PGB$*2XGm^D`ZVggZb@|V2&tKIcR_(*{vzTG5ltIP%n*^D3G@G2R)y8s8cB*H zMC>ko4+BGEis{2w$@!bn1V0zYGgkGRWQZ7r1xgH9?Z#*0DT5uL#(FQ;%w{03qcaV1 z+gTyiHCR6F(PM&?w3+|oVsyYI(@A$Ii&4_2H;G2ClVc;ZJNKOfoF8nNqa$O#pt6Nb z>+hlBhsXhB?VA;$PWH2>1m{7#VBFz@YU}bV%|$$VPDUVW>HCP3lTe-|J@E@|`;Aiq z`u50`2$9+k>s&BAT(6xpam; z25yiu2TCaz|E8k79}(>mfv8{8@$Bg9wz4>SQsJ#ICw#~JRzyw&B_Jdoe5dL7u4349 z{%ysD6|woZ`fAswm=dHd_i|0lNwoMqbW92{2_puB=-hBuh@qgL^}fC)&LWA++N{VE z&_YrWwDHGIL^^6{+x;5fku@6DXJb4eZS$b=3%f_oM#@QBy-o8<(n_hNfeVkZ6?Olk zQoeXB;3=lr%Mv(BC*ojPIz;n}WyUH=;;)p_T5oGEf313I%xOt}vR>_Ney+Muu#t7O>Gh$Fb+j|{UGwj6EJxIInu&)Hcviwq`tQX%kI5P+n=**DabZoZ-%?@t4&HsGI63pR27UM0C0+Jb-{do`KQG~;cm_bXA3@0 z99!%Y>8jKHo}Rd6Bc!6z2R*xU!T3>jm`WpJ>d2r7v%SU}##z>+nF_UFqIDUVroIUw zJxX0aurp$MJmS0dw%|yf15^H89T_9R9<*?_t_*nj9_-r9%*IK$qPhMZf1Y+JqSIDj(?nt_Tm zy8`rkxG{G-LWzan+U??m_u2eU{>!w_Lmm8#OK3+(YJEFMWSV zz3vhcdyY8v%7fg(Z@GMsRxZ8n&2gbq+W*c#2PIWg**yD{rxXaWAK4e&UEs)uoq0Z7 z#52ln)Qk8&2MOnD^k_`8bPn3eIM84H&hkuiAG6<|g@gx3`ZMK9>5wxQFoGD*tl02{1nn4<)-dukUioPJ}_8u8*nKwL3IsLa2SpHpqU3_&%LB*r%7 z!&B?uzW7w}*c=IPt>+zy1EibFNq)oFF;J=H7mBYwZ00&_lcFd*_GU-R%Rv%=7(T z&BtpO)wB`MI7A=Y_eX-y?oe>v*CThdLMfgOK4t4y*pf4Mmf`tbg@e~Q zCc?4adzo#9dD!!7t2u6=8^){YZX&Imix8L1HerKEZ-Ay*bZ#t?=D~10){N4P2feki z(6A0JPv_h(r*-4klCGito~3e0;VdC-zd*z+d2tGuvlqzx$^rXSeb=d=kCjPvwcs7e ze=CbvKM>?e{yNJMh0Ya)DrzLEy1bX;@ha%tZ`-X+Fb9~~&yo)W3g`Y$*Qn&EDoDADNH{C1?VsLx2d4xOYR4sE4+|83k{sd4r^RoAF<_7 z>9+E&WRzBXXS<4R@DS@rv}4r!j@V6h!jY8S2uCXmDKm;{C$e!VlESHcMB=R7>(%L6 zrwrS@viX(BLp3#E1HoD*7Ma29w##Uj`%ySqtB2 zlWH@zQjeJ5NKVJu0?7xg%OQjriY!_9=FL}{JQZ((CbNZ`U!4a}HVK1YKRJ7dcn2rn zx$rD3(!a*3bD~dIBC4#S`RhQQ)Yi$}IeXmfa(T<~GLChfOx-%aT@Gy(_4!xg2WHFd zsm2M1gcwu5IM_nIA!Ch2q^_66M*LI%J1haL5GRKV83IF~Hoa3tWrEG2vf^r%tl43= z=DyTvex}pNBTES9{HdvaDrz~INRkrG1sIVtLnZwj0?*U53#=^KARrSzyY976_03n& z^Q!6Cmdj^o!iLBpNP>TV@E=sSyxx5OGMvGc{v^h5SSBR!@*!V_!Zt{El%+XvMUB!b zrXt47N(f&hc&HXKkWF(iXq4=0<+n4?V{(M=>gcQrtua^rlf=Ohvlj|XT~9HV5{Nqr zq)OBQWT@EjCNoN+On^)_v_RE{nC*S;mRIzRO@Z}ku*v#OSHmVjT6&#K$Bkh7RwjOg((`O zSoAt~zHX+1Ce@MSXC+7K`%3FnX-!9jY11w={LWR1Ly7L>$8xTu)kfeHp+z18OetAn zmv;SR#}I}Pn3~}nb9nnAQQ6UB|{l6$7(9L@(g(LLxF62 zueF!B-t6KP@&@G$Brr?w$(KDL6dcHULfrKn>e0Iz6y*GS9LVr$;k9^Qf?{rXzmD1r zmP6I}$_8XxYx;{dr)9TWQkvK~J-nz|F3fR6v4t>cd(p+#8v5^Kf#+ldEHQ-g37FtD zy%52Dg|+g|pBf|ai%Chve@$t6G*x6eW^Q*o5@bPapbziY$&{4`?I&L*@}Y{}0HVpo z(9)g5v%=vd@PAU0P&YpxJ|(rFQjMJy-7ha?kA@C%DUFvueVv(eAvd8EBpAQ%)gv(R zy7q!YwSmCO9@#;6KSuzz+V`J^@yDTd;A|=AY>XEjt61i{1 zwiU7>p#txXs8+XQoS_o1=LeI>bnuP93xZd>mNjq&CnaB&yy}SisAq%FTzCzQ29lYU zd9H|Dc@h_8Az$oE89f~^Tm>11zo1{mb-T-?tl*~uX*Y}`Y>;~NQNmH;nmc}PwOS_A zBz^{B=4Kr1kNWvPV!39339q-6Ki=Y zL|QQ)1_PhfEPEhqFUTHB8(d_+YMT%0Iz1-&Ga{pq6Y;>(o(^MuYenxr1MpmSLO2^{ zThX#k(FrO%%q>m;2aQ4R^?XwGS zgxs0Mget|3fFu5J$o^hFa5Y1z702?=E8Au{rl8Fpf8A%F}j> zZWa}y9hhIu>Y#s%pq>|=K>sq&1Q&uOTY_G7_#wyFJenO{7~#%6);QBP((Bnjz~=I& zK9sKlIa7l@dV8=m@`1aRIMPa`5J&aiM?}xT%GY0m1N5C}DT`uiW7Bl~NS(*fD+TD2 zx>=ZZ%GWpzM;Y+O^Lt3o%ea%`!fqZ`o z+tiF`fiUC3_Tr7@sM{?602x`gPA&5lCJ#>dVDNZ@HmQXCuv1fS*tlrY{|AXgh|7?Z zIwPuYy`KR3!uJH)VbKI+pkqz!3aRT&cOt3?Q`VQ^3<3XWZ-l_yeTS616e>3I}UI~=ap1oTvF%3mT3uU zop6JVS`^!)Mf1(_V^2$ncjnYKzH@xJ1crolq3186wH{k_;P718DiwYu&%e#UJK_cp z0MII*6IjJpyL6*#FFh%mmNu&s_iH^BAi zgrdai;XAF*EZ0;fA{I&ol2B1rnguMSj;qZ9#B5QyfyB>1K)afkPPV;+>si9Uc+0}H z@Fd?NPtr$u1S0v1d!F5RKNtkK7ALt%S!5)l%VusrI{aq5C_|KO2QXA_XAQ^;_kH2( zpr=<-?Y;i;tk5Essb|6RRnj#f?|6)^okVP=!tE_XwlX|;u;!MJNZuP0Ld@Q&``L?z$e7yjj=*E^dm=( z2uB`Dq%{sKVi9}?{j7B^OEtiW%Wrp@4h*>j&j%|5hefyY#|y?#1a4i0*2DXq9GW> zAz8gLS~*yx1gN#NxM;ajkU;dM(Ncm`EZG1-SPbG%*6zMCt}jdP3W5$TIV%L zW?T7A?@;{@V0f`d+KM6DGetB@cpvb6aC~=Hm5ZAp^c|xcvuyma`#rRRg#fW)9TctF zyDy@_L#}mh6$=>%SjZQlC1g>sSZU&AvV;0hoeISR%?2?&4^_#&N(f*@UnuD}t7F7Q*{;a*o} zJj-fj5=#n$h`|Lfl4K!F%7`S1oyXebpqMH*eoCA;6U~%#qJZVp_2YsETKXKq4nyc}i*t+|Hg+z6C zQj9TJCka(!L&&0H%o?9XX3|0iLOqzIx;|rTbRSTX?Y{z!JRgu{2g_Qzd8m^kNT{qM zsH}0RIgmO=3`D!G;={vP4UHyM01W=ssdu4@UIwPWBzNs?DbSMtHM=s=nAbdkCvRTI z2d?dVZ0+Sk9%A)Nf!!k0eiikN;YuM92xG{H{Vu$_7Z4HAhS7C3y5@>o0}xS|GE?My zf2b1jWHG{HyI~^sCvO&M3{J$Snz(1HR|&>21mvw43K4-o1ptHLYm~?UZVTzQb^liC zdi}WcO&(7(EI3G3uMED>M}PV`?@hS)dINKA$S5|wo}p@s%A4W+(cqP!0IGJ9Tp=1% z-OY&sW03^FfhIEw)P>_zvI%ZiDUdiBvOJ)W@pUE&v`Hc8>~&NOx2q7vnq&pknP4j( zoqnG~9~AWHW1PBpx&2PR)uC|cG_cWbS>hvE-)VY}}Wt##3sVu+>(Q=ssfs6Sq z-}AHALjDlU&8SJk=jlU;6~6HP)%d^N#0Likw*uSD>%Pq$jx1#K;R(7S8dT-Z2+0tj zguqhb&cM+(cb6ecL2@Dd0f9%i#HEQNLME~#dPMVf$teV(oQ=Decr=kR219y>`~|f~ zQH`2e3V3uLF73VEDVr*g&oY2KR(beJr?PFvOo6wDcaxh2)sZ)CH1C6Wm&N|O@_boJ z*O8m#Hm5oW972SE3wr(dW6nk0A{wB4fAC?N0lEdCQxXxP4fcJ%by~Xom-Z80IL(Xp zMHbMY`$#2eWQw~5c7c)!(BU$2oODi5&~OBxz<^m)GZZN!5*@)%MB0t!0|L@I%)-j{ z-rdN8aGY=IN5GWo!V*m#-10(MG_p!@=^4mT1=5CJ&YgCFJOY8S%>+Ogga{!70T%~h zs$1!DA^ZV>6J+Qj>NYXJrdLJ!5KG^?NMD>D_oSKn9;iX5o%pIC8lDG|8UckURuvli zAsSU3&4&kJp@e3GfT}j7aFZ^@T@bun3t(Jw0ORO8_?&RrTNr>aUq6+MNg=z@n(Q8C z@Jy1SCB@qDNWyU?-0~jU;D$jd_+=qqY4#mCL4ps(q?Sq`wjg<0D`CT*Z3lEz_N^dx za*~>jQm@i_dzfHi_Cn(%Sc>Tf3Paq~L0HuT zk>SLRMp5?6jFdqn2ob}s$YWlYQ%*;E*f1a8_*QxsDVKQ#Gm40xYy*+1N`6}6Nl8Kj6|XkeEyz}_=9iL zfNuZDBY{tElu3}6&%e)8%fdPVM7IJ9g2JExbSYuLxE8>;{}-np>HP-ZzLLoO#)*Iv(x>$P zfB+wVm-vXF2Hg4q-60wkEuo7>L9kG)WHT38(MLCK_$i=8G|I3UAYqmP{I5PVPAcTM z-bm2xq;zS|LQ^gYhWsczPSsT`7++YuBYF8AN1i^;h>1ZG-8e5~L+G8vczg0DX+1n* zcIt^{++&Wf^>2fe;{xxS!k01#`)>2zY9SoU>1(trQ}A+Uh|49L)SvT$*xK(@8U0MQ-B*&Gn7 za5QlPXuw2iYH4Q1XvkE?fo}+}2LK4V(f~9f7df7$q{W)r?%0bUgdmVo@p8J_lclt- zksy%NwJYKu747$P&}M7{Q-UEHRW+fDLV^(3C^ia-5F{61Wh*!cfUpIZC{z?k6zIP% zhfT7~0(XnR)bcjd&{gA}Q&Uexr>rQpOs9+&rW-eo+%fOC>PZ%uQqY*e$idU~WUmUtOxJ%>ek)b)! zn+7S@Jq+BOwKI{T8Jne-a zc;$lbSG@_3dqd)R!Q|pxGICJ^-VtT z6E?Ul7?bbwzZ)j`|9+W~$EUWoTi00xWbKtOtK+d-G9a~XT{I=`bwpfk=9y1B-`C|g zp^`0U<2HPuXiO*-c`)DyAsQ7ez6hpbq69_nRySq9El?uG5CB#$cC+YbICgF%*?aJ( z4(fw(`}t8ZKvUUZiAiy2PQS%~%#u!6JHy@kbvvZ>as>EOp2n1RPCY^q++1R;zu~UDhgYAKvcSc zWx8Cde*g|Yc)f=cpUG%DkWx4Zr_)TNy&7AUZ=COJ>2RIW&Y__hz+=gMQvMISzV*vf z-jp*GBuY);S-tIF#wOu}d@)&DD@EKwPXst>A|QYeAZUsZB4?UVTbj!(3#}Aj$fujW zrn^Jn_E2Jupu6(19=phA6jW#=?7X3m_H)h*ec80hr=9f&LSZM_7&;MJgwYVKs0(q< z|EDi?mOZ8dC?()EGEjZyO7${O3BVi?Rwe@&$cPdc04lP>g@xUhDxbgukICb7e^?g| zalZ+!+dRI`{Qw3%)5$bvF+;`Fq@GMK*5R?O^kkN#`=U?p|QJptjCzi~s@dAxt++*^G9}axT+4Y=v59 zMj{a^h>ae8%B3%&{5Ingg(|Wsrm)ghn(iPZ(qfhJuFfL`UCg2&0+?iT?h-U|FxPpY=e)3+E;N{BuIb@ zC9I54SKpdjUQ5~!D*J-FGz`9j!*f^q+K`A+)X6aLu1AfD$_~&%AELH>yRYXo>q`L% zr8WGdIJL#W40PWrNE`rLi0#s0jl)O~t-*_p)vtA`9tWe!LXc)m#^@X8x**X&Wrp2i zi`k;3=O(#)+EaE~m86(ff*Q?CHMjR0^p^Eb8nL+kPX*JbUj260kvj^C0pVWAxbb48 z%Qqmns^fTT|3RdCqDjRFE}&6u1D1iv9Wtmp3!_O|Yq)?XnMEZ<3&UKGj3Y2s@Y1O; zDM$YaRWt!k9F@PB1*Ckje=vquvjrK3&`NqTk;Rq{{Z!VkvKBjO-`Guk0U*6Nk zXDoY6*+43&ax^uxE;8otmWJ`OAGz1YAxk!X-S}J4j|4aZ1+6idXf!7 zW#OHHg58|BdiHUElYJp6j$>zFw?R7utm&Mt!zv7mmxTSXpGndDt7izXth1-exDkd3 zg%A+FS{$C5#{eZ!-l|M|{%s{g?AEB#qM~3$Ix#8X%n9Hd85R`+rC9)7|ExYN(pE1` zA5@;}ajGthoCJ7Bek<`RFJ*M8VLj>^b#rl&r*}}8cUlrG?yZ3p`qd5m%V`r0Y1vX6NXgdESHLsDJDe1T&7S}Ef)M$w5%#bsSQ3cbti_!4GqT46t|eFb;cb9 z1n5KC4zEDGE9F$2EfQ#kLyFSoEEVx3hII0lANB0GCgwqK1XWUiH8%4j?VniI!ZY&c zFJBjZg+~)TT$&oAcoa(EmFHUjWw;N!lKdhb#>ilL^C0EOt{gWRVmz@-tJsTWmiFN(*6;Wm#5H zlw*L+fxsG!Wg=0PK*<+LIYfGp<-2B;K!8!pJ1MjpFaE#b_3$mfp0e>zhRU`m%aOI= zN@=Qe{!g;MBjujn?IZkZkD1Pl^wWoR712&L452_{O@=cg-7H~^IuMX8Nty`ZSccQ; z2Ci#F5+ekvVGoTEFw6Wh7i&fS`|%l1-!!B=ZR9pC44nQa+_bm{w%023JqDFSmkD2c zxCJ&Zy{^kNq6v#j6%3;Z3j-?qC!jL{PL!aZnQv!AR z{^ph{jFBqDYuIJ zA)In9TF(Map!e%UBwdC|&Y&KvT_G>upbfNY46m1Ecq0b)SA%=n_HAZ2@atvCDVF`ZEJa2fSey+pu z_;m!<+!;M2w{K>~V9~-W{!aD`wh8M3)gN6Pl*FYrM2#$#mW=Z0#X?~R0kBWGN#|+s z785&|?Gycp8Z5(_NQ0Uv&Vz)pAdn+1+S|4V9;UEsYN*M8gX#MnFwP8rDxkf>V{7wY z#Z}elkPZvO@FywGMy~H>(Rvt}o89Ka~E;aP{N*K;(Zm+&e zn3wUbb*~(_nDC465`PE)pFm*0<%~UwwCS63U_v_!*keJ9O(XgtdQFG`0007V(*;Gd z6kroOUkisj03xMGQ79ZexfOeQ>|9sCHKP^%6bY-as8F@pHnupoBdgWr)Ydp{o(c~- zj1+%^9#^ROl3Q}AdkVL0g#I3U*X9_btN?eAULP%Ss3)l}c67jM@?j&O7z>aAssgoc zYGU|mQ($LA8xZP8sj8M*eAx$GnD|n`S9NopUCDc$^X~TQYAdR_v0x@bkbb!&z5Q<* z=6clB>Zw8r*Bz#kb=Rh2b!vEDo|6g63~h!20=e&`#H6`rcB&09AvG};alNWC+}&#C zd3tkQ9HKB`M1{`fE4hj|1`L@24Vbl8Dg_|{0$Sw~xd3=nQEtM+>Khj#eum(>5>R_y zloPg6OH9(yB+L>VY}0!K4{iF@sf1I>+plZl4@RWN;xm^0d{iX{Oe7bWR{hOvaTp(5 zDjS-T*YLXwK$Oux`z9p8omM)c!s=@3hKSq+Fk$Pd{6?#7%xR20jl18%q*$Jtnv;WM z%{3fAal4!{($5eOeE85XWu(*HQtnZ*iFAiBef8IGAsSEr?#IxEdeX{9Fp$C|#L!>? zM5WNZ$jH*=Du5kLP9fvGe};a}qULr7`N7~e_^ndYC92G1TmQ%sT%ON4GA!KR2#{jn zI+#QmiaRU>mB^2}FL9~O{^`C2{$MaOl~ZUrWm*%<`w%ou+V5>1Nj_R7lv&TYC%MF? zL4Ce0@vLk02v4f-Cr4$@E(Ca1XgQLa%`~*@e4XKp^@4?LEX*DXWm=a_bRAD|>MpK5 zYu$cK!`{d%K=xZdUHD)-b&$)wk(uMUi!-KcA$8KI^H>-GHX^jKi69gy7{*G{HG4y?)8`K92DP(2VpN=^+xd-bv=L}Q50D^AUL2=_o^@u z^xmz_=~wVbv;xXz+u@in0Z}G+hdiflRU$_^>#@9Gr{$5t{id$hzTFRXBtxq$iy7ci zxINPigtTY7fjbJvQyy+|VV>7>^yWJ^eB+Cy6}aJ{@Nv>E9AF%(VFw`^Pyesq01jHz z%tSH-XU;w{F91-rNUDeg4FcQo`{BnoSU=X16qS%F!e{l%gK!^B94K8s=f{LsS}JRr z#{m7;30m2JR63+&5mX6O;Eh-yz(K=`3yGb5ULvljiDrIll2(FY#G^FEQ>}P@aMPhP9(3lLR zBZ8fdjbh)8jMoA>iB)9vE7q7^b3OIdTD{~HUtMmh4rx+85)*~-Bbgg1kqr+|-_3k* z*KA-e1jUvXYeg9cI+n#K09YD9O98+T9%D-2wTO!y{twXSd{qLcp#zu8jSAPMQjc69 zyqbo}5z^t=o(_{4f49}kwQ)?dEx4{5|_3-V7-P)rbf}JJ>FaRcWx39BzwNHF3)ws`Ol= zu9JQ?hKrHS6Q(#;pzk3X51ils@SL@x5XT}S#7beAQJ`dv0`e3=p}lu~#M+0Ej}qJw z88G1+S(*fJ8Qhv+fhbj`TsphLFyL^2NZT>YC^Y&x9oUGP8gs3I%^L_m^ER4PmvYO=Lp3x$D3EfMAiH)H2;M{(*^+7tnaRlT*QfFrT5 zeB*?rD_ndk7p?Yv1yT?06nkx*RRJiw{t-x(t=`Qa4L7uEtb9NxOa*L7X2E3IsKTkb zByQw361`kBU%8SKmj2&E#EJV1#D<^^py(0=5&OdZ1TmkYiYxVUS~&RkbQsL7On$Lu zQ!NWiGiH&gh3VxX8dSxhl!#-Y1d8P&w@!Fcpfp10P|&#wf)8&6t&&omxEyzZFT4+& zS4)lmt75>hwL&K^NCmFoj@6sFtiN8-otWVSdv>^y@O4GzS263#m6nB7JO3)Snl+~- zR(LFHKzrA|o!9xd3B0o_R;>io@{*izlR9XM>gO=_-mGpIO_n;3yIt4s!!Cc*>IlUi zPri@;`bQzEkiuGMcW2Qc)p~{4aR)*GK!jzV!m0jW_5&!)zD}PpD$FPQW<0rG8ew|~ z6DyDOl`>a)4?gKIw;^5hoxXXZ1oWwljbNb!ATbCC92ucX0Jd7e(&Q=#JPkSRKBLri zv#s)TlF{vIB@aKckO>hF%M$>qi__1f&cI$vhkN%f^$L$+lD)3#)*Qn9D-@*+M@dex z5GhXX?_KeZF$NC?4o9y#lv)f2D7KI53GQd2snu%u_H`0j@hF|2J#jZ6~Ozq?5;R(%TudMTRIUW$(<~))+zUNZGPZe-zYQ2QJUoL5(zw z9-h|%!7VM5xk#VOvvqBT&G+4X`~&1L*zkaVYU}JqE?}wD#7Y*m_bS5fcX_%%gf64g zF#t<()f9B8oR;{7j7+eZ^V@1h-07eOmj$(v%}vMLEN-ON3?yH#Hz{f2ZPAEw8{ z+a*y-q+3KZ0BlNJk^*fy#Cyih3@VU8ou4GD7R6j=GyGmhXCs@kk(mnM*OdMfE;HWu zJoVPE&pwsMk8*8=KZcmS zhN4VkzFMD@aTSBF_BmxAEDXj(r>YOwl#k+@4Nd`zCSzyHFS@s#$aV~686h-mM#lD3 z$iC%5Gsz(3XI3(=*p)(AI9`z!pa;4fxus3+SRg~URsq>qEv;tz z7Sf);iTAANyh<`OG8#I>ZNkxng6-!8FKzB3i`2A>iZ!>ZuQ+NK0H-|;(tc*+=t-25 z@afj{%k?#*Ysk_%^Q?r+Oe4l~9-&!1Owj zO0}x*@VyI{wvx_Kc&?QJFWJCZIcqNC_VVy%CgMTH2^3S*glmWS?}@puI9+%NN75Z| zO4eDvu%11x>=k766c$W83tIaMr-6oz1VWTmNp}xv2>5-JgvE%Ah@%QQBTdL4@qzy4 zOef@WVl#Gt9cik|*WsRlM_^IzU${C9#4|B`r|qQgB_Q*ZSJ)mUw7F_#Zpa41$>1Q0 zkp-ATW;BwQuGy|4s8EwLSeuR?at%F7M2dBtaU3sYYIRQP1D8?VF$#k(ytUJ%m|ySw z+eD6{e_oE2pQPzChYX@-;nqE+xJS@hp{4fg{fnWQk9DXIxP{8D9st@jF^+PZh(tN4 zF4k1@#cworEn>9$HtlO+QQbF{(!CTiHX?_1i;@+nP)fcur>P1w^xEI@a?s;4xMpQY zqLQ^YLQ0L=1f2RK4uL^eV2jr*fLT zHeau(Ud_zz(p7(*vOiCx#)t8XsZd5&5Ii3Vi*6dAe8a?+MFIfsU4rTug^Uw!1Px@F zX)jD{iOc%5*Ub&-^4$iY3(!+Rtnl5I2%&*u;8ELzbNA=&e`SHm&R8n+1S3Ny)R2z7 z6bIPO2V`Nq>tMRNHB*GHmHhHOQAh`byCd{ z6RJz&d830&q%??sIntGpey3j=i+P=&74xnIlm8lo|JLSRR;yhZk)9saT`-@ruzle1 z4J1e8k<4;^{A3)JW(7Ba@VwVf{gAYPpsX~t{sl9pJ&g{qiZzxsnRqEg7=ZpQIt|*G zkztWl`r-%$k^GiBXP7kI>dQJd(wR#zOP5vR+7$(WTuTtv5WQD#cH2>AlIWq8?cx;< zAV%wnOxC;%KV2oATZ9rYKxyA?`qCmta=_7Wae4N{L_62UJNpsryM#6HT@(2es=ht1 za$+oRQ9-I?7%9sXnt|wF&>VG84qVT3cUZfc%kay5xkyy9Nz_FilfZeWXatN{uPiht zKlHlxR5PnFrttyFmV(shGCE&M-NeDM^Drsw5U*E9 z9P6+3k5A2Q4y4`)iJX78YC6~Qq?zyS-Y0?-0?Pq)dlDIGkY4wj#DRE6)dc|mX^ zxCkfj3`u0qf{mpp;N^r zR5xPcwhcs>t~J%RrKn|5wJ>HLyHm2EGQA%7D1}08ba}!&d}OMNzkaU>sh!Qx9{O?YE@Jtf~um z9HMOcCFN1QbXjGlu+lZ{GJDG$LPYi23D~9z_JZulPnSHoBq|h8#oA)u!M(H{%wxuW zJKQ#Yv533XNJ%`Cw6#cbF5@E)_@%vtQN1Js)uh2%qgl^MDtZHDwf}zvIoDzuzAPK& zEQyuqX*uiN@QS)K^gTqXiq*8UcQc4l5W~Xu592-_Y${dXH}qKEC{hyV>SMY^mx5aQ@rerK|_OBuW%0p828QP|c*@P4rsUVJ}x6)jz zlT3O;d0YG~|Cp=+P+Vs6<@??o=FlnLtWyT&ReaMQixYFiOJGG2swa&RM?3|0S^_+U zTu*w-Et_t@3L)u=kt(6%zE2oHbigpiMjl{dd)N`9GI928vbt783bL_UgCtpp3E#1nN}7!B{XS6$>| zT+37r_%uZj(H6(VwzgWHqshb!G_dJQZGE-{+{6wEkNq6&mt^ij=XgM;LLqPoAUT$D z1I-#qC_fk5_KydpY?+L-%ert=Ea)8tVaPmGWJ9&*b>BI^&$g8kV0Vr|gkYSBcB{A3;#-HUX*J6YYPSSdF9do4X19f$k+ABV3pd2S)LQy=Y*=`5e zuXUH`G51c*i_zSI;F0J0=C5Bg;C`pRT#(>y{{TPe;-_|MfI=#{y{s<*;MlbP#wNeD zdqcawUQlc#QIPs}%ztD#)avo5{Y^iT?xOZv-MkbS2P;ocq?@WRUDqxQ-wo<9t_U-4 zoRSqWfZV{1of0<~YsdCBe{)@u%RV@k ziyV9KG#7n4|KE|uT0d_Brs!VJt!)026xPi z%p0FeR>QYDJW5k(1604VomZ#Y29Z0L9Klhz$~4@Cv35W`VTIVVuk zKqLl5;oRTC%FzEM@0YvYK*$%3?l|T zp|MDz#L4*y4aU33bGYJgA!mNRPY5hu>w$eu3i)kb8NVs`u7}bzCsF0Mrnfp`$RM$7 z+;y5-e}H3YRRKoLVPpkR-uwh=q5?CXAZl?}m1eKIbC|_0HN==!ToXwcYZYVA35Lbu z$30gwdp7k$Ai3f@L;i1W)XxD+PIFzb{{qox73C2ca~|vLXmh#&(vg_`A>ILQSPa-B zH(^Sf37ArsKSp6v0{w>8roqc5JrL=OMxBlrhi(|;VY#a!?JQHsFi~FKKY}t$!WxtNuQNNFkh3{JEBZ1UjFkEa z{p28GcgeG>pG*iHA}uY0=Z^u}MAxL5+WQMM{`M}&kGjgX68z`On)ujA8{qc;AoN$i zp^>6~&GusnlSOv7vzo9N)KI7$7IX&zGGNq?+Ot_8Z_4!r0iu+*`CAoG*-|7XI{c!B zzp(V>8!=~w#=x&~HmoQ$KV}nx%R5YC0>m3C29^SQS$dpn5qOl`u^`OIKTHdb+zMp(2fDRz8En<$KfI&`vR5b+rAtZsZ=mrs|q0B zv4i~zD@NIS<5gMBcaS4|e?GfRrfsk~#7}qQJZSqRnitf?%eulM*Z8y+MnzG;``bcE zF)O)YLmzTWLv<^F0xL~?N2cjKUDq6^B8Rh0#H?7`8k=Tz*Paf8Yv$%xo8>Y?Ny=ak zC|D;BVi@^Ft2+l9+)XEw4pDB;3tf4_=}V^sSWZTti z-lvErfaW!bM&q87**$E(?NAC*Imp&z<#c# zXaDUL{Az~9hSGrn%U@O^NYI8eM%_@(dp!Vm_$Lt|VZ*@!OymZS*Fb=!#&o7C`%Yct zp*e15q^1Z59=FW?tmxTK2ZSwm2NNaYd7*CbHg*ENMcdhqeUW)Om6-Xwirs)l0>PQ8 zYINVopKEW|!!^OcUs1BB{3R0t4~@mVs`17$?2#BWx((HgCK3GSGAz@kl}DrS+>p8K zR6!~nE_H-uBRj!bx~1ZZIO_h5No;b{!nW5*7M&oF}T_x`}W_dlKYFd&pgi$(sNEn?KydG^e zaky~`#SUhbQDBrMn%Pqj#TN>+^14zzF5oJ>$DL(jLx(##%b8Wa8_CS7*#_^Zj@u)w z7)GAsD909SBLZ(f|_)UJ{K`IL~q2%r-)h=K)g3Qu32>lW>3YCcX=`A1UMxil1a z&oiQHB1BrsRK%Zd`|Aj_$GeQYBnX7p0L&5y*b%zh#}#MMJo{3{OHr1A$iDRVnhjaX zR#EDR=dQsZ0|Z6;(O;e_@Q2pW^6rKsMrQL1k7(?DzKH3koArWWWmW>+fefr! zI;#R=o0ijwnyT;K_X`&Q*~^drsM81Mms$jQ!n^_b;)A?&x(1iIS@m)UACEM}25;Dyvw>w|h*x2OlBK>M*#OlW}*hnH-IQ@IA0^yQgZr zTyLNe?)wsI&emMK9eepG9AgB_mFnDj`jT@$M@j0(++<72738@8%V})r8{@Pv<-9S64sG$kR?x_y*T6UnvXW% z+y_CYBXEFQ2jrrCi<%YB@*oP6g`OM+1^kkD2b+V-3!WNomEzdR^6csA?k)SmgtF0k zBaS-RGJpnMWrPVRc-r#4c?8MzB$=pz$s{G$4}*Rr*%ZVRV{3B2(fYJbUKr3IGM8RC z3Kk8EV|&WA(9DZG#NU&$FjHxNL52Ud#x@ur%u+fAbSYw4lEh(T-&fSJQ6y;}T8rUz zwGSvvIz>jke)GoP$Sv-8PfUp&cP9+dAa<)Q?@c{?j~C}n_TFTz4faFy?Jyq<39Xuy zhgfJUe3x%&d0&;4RVafWZdZ?rjJ?W>T`Rxj{X^k-4pA?K`9D5A!fVy=d z%eG;1Z>?}wcEUOFkzY=!PTkZ zW1rEYGR?CdYlRbmQUqLaC9_-OQTz^S+WWPQ_titex9XwsM>Ac%#7TX3QS%6W*24@$JGag>)Q`Zx&kdprmwe+|QISKOm++eQK1AqF3%x3J{G8RLD}v zcyM+=MhrO|v|D%OLshsw1D)VztjJ%y%9&kM!C5DAY)HTPcjivIRgVNevh-jK;Sho4 z2>7=Y5hfKbglA!5obqEdT4_SGtY=o8sFv_Uw&NGWmB}Bi;+t&l&t=UY9Erpk;S4SP zrbBK6e=0=-9?C8tz~E2ca9b77Nz-lVO=OH@#}k1?OwJ-Ih4x+uK2tpeSbTJ3hrjM z+dfARERb$>mwD>(@(I>QhfO7PEFX0PRS*VA(}yLGkNNOe(TvJJ=s4yb#SQ?>;1#GE zN>-m?bdJI9ni2td;`1_ zxzWO=ajnyKo-3NHSZ}k%!l37xvGmej~?u`M(IJG;|9F|!-A~Pq*_@skOHIh zk&gS9=%l0}Hv7IL2NT_;k-ME1@z}O>KdHWwEEccsU&&J&C0uql<07+Xsn-kurM8B} z!Jw4(PsQ~I4w@Hf`Bj_@fPLqiu2*zG`<^H6Kq{l}daIwCx@a|I9M{>f!Gl}C-s(xv z_gHQal2|QJsuR!;lvJ=)=R&h%m>^Yfp+~7Dz$pHK6~IXhKoK#lqmv-<%VT;SV;=7r z^!*k4w34~mv(ir=1=h_C%JuaSs03od-gpa{F0<@v5QN&M)vhFTv#^)A2YScU5I-{zhC&w}i#aQ2d1r9~_ZI?;=? zp|~VrrjI<#meA9R@Do{*{<9}c=FvD98)ChL@GvW#r|t#6(@Pe$hb)_HskE+v`AUFn zP%wPW?Z8x%l02v!7a+K8n*64N1I3{xHk=v1XWeIKq5D5EE+7jH;3P3*8#~^74oN2{}KA}}N%3$+) z2BsLc*M8-Z^A2}<>;-d048}~?uMiICt&FI)R^30!rrR=BCe2Xcy|SEsX)%;BT9c#! zC46EVEE?yEcwQhU>u^wHiEc}Q^}|^sGMcudOgu$e+(`7Vficxx4Pe8z_9+y({7qoV z*$6s`#Y>XGQLs-VvJTB3+td@qE8(!}J$Q28^gPQ0dBKW13>^$I+{@K@`DJ7lD@VKJ z>jB!zb2+5jqS=09$p_RIpf}V^E6Rfc^08}@MAJ6nI8ph54#Ub)S+V2Feti=S8om8l z7cScs*lLRZGx5Isic@n*PCxsE(37Cv>}voc!oyD6_rbNm*=}f*L?6>gCg)Rgwc8Z# zfhBf9%ctRFL0gvF;L^Rq$JFe{s&rj*K5o*!^I5gi?Xtu`7^~qQET?s>nRqHfo{s^i zvCE8~Uu{n39c)if<1edGAWW^n=K2=4Ao-QUpI=(0>5t&@hQN=V=^3ei<}QUUu(BdV z$}E2=Rkgcb>=P+1^BwjGiA4TkE3y+x$N(Q|*b_ly8RuVDnRrd|d*4cBzE7-kBF|rO>ny zGV*^5cv%3XhOh4J`19XL*3ri!g`?b+bSiS)qzcwcTTD$99P#f1_;e}U;y-uQq9}{l zeR=f1&AV1dI0Hb?dA@GM5y#TE_rQ@W-*dijn3xs(tb4(_K1u_X1wNnXO=4^oF)Ldg3~K zAj_lD*>}n~lyJeLku{bw=*k3Kr3D^vWu46=06zOQ;P*Skx|J{mFR&%^Gv_#nF#A#^ za^4-A<=!H$1KOczU7ETXX^&h00T%!O00Ie6000Cu0iFmcvJn>l02t^2zhuB0oYO)7 zu~9Zgb|5aD^(a>p^1}oeQj; z7$ftxh-3m~Zu+#+%MSbQ))S*Fol0Tv{+P7wn}R3Nm~ju=G)@@v0qVsuiZ5WkLsSDQ zt3fnJJN3wn`YU4y+*4P%(Sa$05S(G@6;CcS#j%3}i%R*b*!HTyPanc=CdewQS|D{i zyWwpqyh2AX?ri=VDK5|PCMxFRy3h$7VlZPO#fvQY*D9|eHf-`IZ+`tt?>c4tCV*dF zxercbUkkiDBT8YGc%noF`_^%Y4U~0>UFjJ(vL9MET)^bF9cH;p>Tto0K))m7W(%?i zM#@Pn-rd<%DC}}Piis8#kI}L}mo62A7OFxu|>!e^ip&Z>cWX%{y{e|YEN!iQKA(OHu{g|FbcK!X#sp8+a%*0 zDCmLWZkWo{pSx|!SVILa(Nl2~E($@vdS3s8SJ6kukd8)0$*zCSxAZs07e77es|p`WQx z@GJ(9-ts-aSKy2)kmc@)3@9Bwg(c`SJ(`xJzlUIuIA?Csh!`}sD&X8;t6o@v0qMq4 zmJrJ>tjI@RMT-fRP zK+mQo9QM5zae-+Ab-!<9HIr1Qej@$-@!Tqmtc=hffK1)J!F^6+AQ9Bx^W`HK^HDud z*a%oL`$TC)Wp#r{Z{YTE2$-aomseuCwp$c1jOz0@K7*~R>zgNKt@pQ`VUZ-gRK zaDd3+rrN>4rIgbdZqaz{rW7k}sV2rjS}qnWZAF2p)VpS%wb?Ur=DO0heKp^G>k`!) z0;V~cbYWGbYAliJDW?F7QnfZ-lEbY^&!{RwUi(OKfOg>$7NxP?oYSDWed~A*Kx0N{ z3JOrDwSv!#p!KNnV0HfCY9?y!>Yst|g{?O6M%IPQ3X9bivqR6$UdIv2kTw|gSs)k1`RzBWg7u27+4MoZ<41r%ExOCB-_gT{Hg}C)MQTlCO zGcAAziPbCjz&8I_y19Mk^mL<8mYL;1?mFmN4`LLIyxl|BTVcBk%?^EorXYM24~vp zrxjJO8V{8wXlq2OfeQ`}as0~C)a3W(k>nsFS9`)URt@_Pv1#0v<zv7rX z7W$J7ol2&92uNkqEAI)XT)GN%p%NsyG|6fL5(U30oie+L%;o!NX-l zT#tn>vH@=2dNG|^oGhsBvrq;uN;BuFZv%m0vDxI2bMpJE+5-x+RUzn2&Tx>LE!peP z*}Bk|KqwxdHVOq3$zu*aYj$6KYu!FF{6`h6O5+e~6$dk}X81HdR>(30ykU!afASXt zd?<>+QT{q88izF;(|pK8!!VwCZ`@5MvyxhTcrRg6hYp{@-^@7pG|j5sj*^^hE=$`^ zG91HNzxjK*TDKGlTbJNfq9ybP;9B@Ms*?xF@v~0qHPs=c&~;pBOK)%A*Z`~p z_lAf~m}wJ#x%eWoc)THxpVUX9{t4UK8CAi>&j-lt~BsbnJw~v%7lb$H_%9efuSP z;go<7n20banPAPr^kbRHHb!ZogUD_Wk1khr_+8HfE0n+lcdr}HM6k5E4QBq$5H&*# zjChaE)9Qk6wbc>fyyRiko`|)sJKMJS@YM`ml_=H=Ve~lVgC1V_J$D@ViyD|MSyC@Gt!nY$?hc-bwnrk=?K8JNaZq;swit_@MV1fC(%6xb3h5N6$3*ZDu zrkqHP%VAHF2O<=DKClt;nsC_iO{ERl^3ay^9ka|TqtY4pbClVxsY*EM_umJ^mRU=X z!Hm>W(ax#a`^jU7hHvG>#!oEe#5DsO5_yipDHi1UD7>2Oogula7JeIzYL8az{q*8+ z!hF6gJjFfD?D~>&rkj0vF~+eo8Bwh`VU|<{2g>OeJAH8h83jGt=XRm|jc2!SjZ2t% zZHqmJn7eXH!Sl|$)ETI?_3l5Y8}^PpI5az@MJBO_qP~~@+|=Fu1JF9dQuDl!l!vT$ zVrO%hg-Fk!qf7{YfzJ_HWki8KuK@+R5u*n$NKnvfd!pvv%q`r<;6WMsL1f9SrfG7i z*m1TAMWC*kBIO19z*L#4ABLL(#m1M}{hEcQy#kRl#9<7(bkdw)>yZnD)5neD=M6pp z0n-2g00Idx000?`L7E6aU<$VY0qhc>dW^PqIV+ZwW^R{r*bVXYNa${AM^XZLUuwtJ822xqy^_i{pk|hc7CM7R*3x2j>Y?@BSu>s zVbiEYcz+vf8Xmn(!Qmb<<O-D6*d^JFS_Y>e{mgM}gEX;nX? zka;#D1$t_=iqrKm(UQn11adH(TGPA@Q!c(CS80UVJ- zW?3%!*_+a(`{qyUlG53MK`;N>0Lm6lH4}IWMM+k^SB+o#-It7#6-3Zk zKwG7t(WRSbksPDRK{*0!JCcncolSgX8s9^B)Dw7Y|dQ*PGoWWFnvx|Var4+z7)-CMI9YO*NDkPFbm0^duvK35bmy5oSq+3J9jTr{CIy``*0mQxZA;^7fAx zz`g0E={2S+6FakKH@!tOUi#b>!qf~ZmehX_MFL|RoMeLbVK@H$MZmHu7&rq=KStDb zw>3-Ugcg_Z_e@M*iEY8VgZg?J)L-^HIfj5=(t0lhnKrE8I#7SCv+rl?f z;VKz9B_zv~R(!r2K6^DtUN8s)7X$il{L##qn7UeXQk-?U+RK*b^|hg@8+VVfj;>~E zRfkv6ge0 z2$4>639G+IVdiQqDyqrgl$WkVjLQD5h$(OR1SxjMH&G)HUQcoaqUO4zZWV(IZ_ns9%m}BYg3n7(mt`&xsV24aPyN9@up)n6Rgo{{e)q2|GxvRQAKYgM3 zTG^>y2G`niL89$5SQ5y@-xC>xaj2*1LvAu*We9t02EfQN0#IZ$eG_~mf?oYc3?dB$ zyt-1GP4yQNSK{9kKojxW@q~~+ZI$-MDa*guw5!pWJRv^t4gP@?D{himb_aCLQ>fzV5J zaHa(1gtk8F!KTfDt?4|a3LKc9WS%CjVYRgZa78bknGY?Ag!2#?xy}bbcz7g^%)xE& zmN(VtCy3i0v|()8`W-CW`?Ay2aS`u$bk;yng=;z@(krOGM=lj#Ie3>gUo_vUOeLSJ zGxK}0f|^B}!Gm*i66n1iU44_rKN>o@^}O3K$nWF@0K*A^*4`2#d1~+fIeL@B)bvEd zS+7_d48FOev+Av&vJFKm`U_U}_tQ5M zLs!>{B)o>t(<-F7QL#gpc#olMALAqg_O;;&EvS7|%s;t6%}|Fz4TYrQT`Q`Yt)t`aXe@ZedT^uJ=h95h$jRy6NtQLNhl zyMeX(Fw0g+-GJjS63vaoOv(uEBuK@q*sFKiMjTIwRka$kY4&vy)muvoiB{u*Pk8@y zTj9Y9!TPY-4li4ce#i3pe!aLHWFiNE>0ymDMD8TPHSGg4) z4Z>-@*Ckz6!VfC%lRN!bB4Q|x^v0-ku)jw4tL+TLy2hAtH*av@)^q^-=@P;nAdFQv zw;_BE<&pmK;Sn>$&a z!ya}tz_T@#mGUqFRP{X8H2T>bAfXIe3_GVvCmjhNIWM1~+fP_P8Zw!A)5%FWnmi-A z5Mv;J#v98Wyqx#^?f@7kiFpE`dP{|N0q!<}%XERb;H423c+D2U zpJY-&$!7Gf`s-dG;B_wgaEP(Hwan{8nl&93acl7E*`X3Uf7NO8PHq2e=+GQP7o2r% zV_?|}Kjt+#)KqvXe&4WR>h)je{fs6OF7c=U{T&fwSUkZzWlv$TJTT$Wvv|oq(fM@(X-LF74n}PuBoc?C&%&^n!lLH_TGagC*ByZ z!zZO;)Stvsyk9_iNE7nTYx`ig>9B0gOROt}|NE!%3wn&F{UQ=0N z@3yFxKBXI*#6w|m6!rK_hbm8;YWqlAFQAW&oVVE!l$+?4o$Nz-o@U9FXOW4P8DLv} zG{)1D%i6HSX#}%-9?FcDiICK|ug4$!TIKLOg+=V$un7hHfXkIgmOZ&}e)O3uV>|fF zVyCX^5|wIZ-UTi;3qJ%*e_@p*EL+{9WqhwSTmCb-ftB_w$(O~RAAx_lK(kPUqZT7m zDT=U(2A2L3$nqH6fD3kBE#(*->R#Y>aLURbS}sXpbvR^v&6`6dN~sufGq8TQ8vPL2 zb>@jC#M5(ABc0(c#$Mwc`E20cjzG}L+bEjF!mDVQvdeC9jx^)Tw6(*G5_Cy$kh>-t z*y?Fl^fZ)|2QrTrw#`E+v?6@h;~-P(?_M|SU^1^aC8}B0y9eUN`N4?(i;0atP0{zd zN83

      EoUARZK0vuP!;FIIh886i--<;r#aKb6&Ul>xXn+eL;u*UtGeVO3&xUfaFOD zT@|C8NDf8+8cUJe-Nl9&-3DMBG~JczQAkRA;0hEWe6BN5Gj#I3Gpusb2Kcdlsx#u#B6t~X%8)HRwnW*}m&W;>v2Q1ad z<_Qc&u}I#oNBLc+t8vD(A<2JO&j|~^FO^#iL_Z19r%x?pS1>XT^9awD>lHLJ_Dw4c zgh*0yi_y5pASZ@zxM50%r@H~JDNnw7z=WnRYt%uvjLN*Y2P;YhrT!6%{Am4qPjQUy z8i`8D3L=2x;b9{_o3mDpwjq@CgZ3DZ1)dder>T8m`Lb)Xx;jSOhZ`arkXU}il=kfFC1(M5(P)fE|w_4zmyx^{zLK9A1tdl?%ys%c(I?%a|QDc68@-f*#Qp z{lOaJD7Sfl>?5%!CD~x@mhAgGlt|%Upf}qKgg*a2?H7JDkO9PCK=ie3iIjX{1qx*% z*Z?O4{j4dlnk7ZG8T(wxb~n~-ym+F56%E%cUoMdDxgH2 zaoV~jTV>317T<`GG6g5NJB^8W6s)2AGJ~CqDa$xVzgKky@xt^poKZ9(0`zj&r72yo zfC4bOrC^$$eh*Egb;QgBp*5bc)pq^wod-SNr=!en6ygD=ZI!TsJlhhtDgO)!TB7z{ zgG~7MqWY=XsfN0rTsAXfW<7<&5!Tkibv}lini-&ZgLp6}NAA(`3Rt_rrgCP)!XQNq zfy+;cLWu|W)&1Hx=IlP{n=+2YXD@x4;N3$L>$Y#rw4P$n0#u#=5DvqY>1pWrlIo%vn2H`JHvI^4$}!_4^rqd;80;>RMLN7|3)g%ec+m9x|bVpx9* z?dMSEEYrDkXRZ0c8EHpmGPN8e56Ir0L4_f@a&qwUt0BA7YA-RHp*eV*WBu<}LA9BY zmoAe}Gki^!F9o+(yw402510?ZyZBY~j>si{2+5k2nJT3;m`g_Z6bNatIkXH&42^c! zli5eRW}^8yOIfS|5~TlzSZmij1I#9jTIy7olTUu3`DeWN^9M}$R`HHd?POsV$1sRS zn;XR`MJyg4^~>J5_xRVn7)je?$*P%5<0801Z4ce4(ACmZ8iw52s}*~4^;fj8j{6zg z=Mjr1jIwr26ZW}$yQ#6ob%(A%RPAf|xm7}{;jq<=OcS;BizYXW$GFJQvcv1CY=G^> zyt{Mx-@J3x)3((;RQ0Z<>fW=}&zP>HJ_i82AlyJ7-lM+K;d>5p*6TK=sd_LID=eBr zKKLw09N4C3q>PHvA!d30Adf5Tfkc>Q=krFHy27%UVZ4BW(kp7DjW5pDjQE=PiB!lY zWA62>Bp=Ad?sX0Cyz=}Q$tS#r^n4;jB^=4G$#DYFf9N9^gLX&#ioU2B-Yv7PCC~wT z2GSZ@Q`IsSst54F*{6qN1KpC*aW8f+d(AQkl^iw-btQLa8?Kd*ml?69NX$HSutcm9 zqW8qRD5g@9LYe%S6L=E-#FI@k1%yIiqC;CcBH8T4b-|y0QI$9FOtxsPMDZ&4nt`jw zipf5oG1_#9T(k>H8&elV&%z1D#+wDE7(wqnaxm22_`-}4pBwbE4|mq#+bTPq8}jbS zPss%lIL0sR42xh&0IwEHAoWrHsA3XC!p#FS26X6oa>!d za-1 zB;2MLHY=a|Jk2-x4-LZhy!qyU+UQ3uHEP$mIx%3N>7E-xkIdqQs`r!BXq#uxMRCcb zm?Cz+Dh&;R4;gJ^gBJRi5c@olx&P+Mh(c@-YVOy`#ljbSM}nMM@krmSHNODpCwG?G zB~M}^Z4Mis2Mu#9A-a&H<<9hyk%vSN`E^akPwXXBfh$O^4bm=duj2h`r-isn=ft$K z<^ul{e-oCD1*G+>0pRM3EwgC#uu0^9U3Rf)l>@PU9$}(nRIa}ry@@D?i$Xt5h)Xvx zB7;kGOVA)pe8NL;+OBJx;k%|cn1*%+-i4&45Kgor7=n<x;272}e(jDKDx%iH?zgmrJk zvyABLAc3rT1=Q6%6%H~vbS~u}7mRlZL4d?>Zg+P`;Wcu}{4E z7=}f{447e#qsOr7F#MhqK?c8;rQjm2GG6JJ>1ueZnHFXILKKBk009Hd)@#mwJ-1-} z!(~5+%!Lo9DVh(dp@AiKY5-(Jwks0cim$s=a^wrBMOnF?oWN0P#yu1vxU&TaYiE@Ty3vymoY`U; z$yaUC^5}0<9i&nwTt0CeVkp6c)N)5wa?C8r_V{?v)oHy5*BLWhe9<$`s<$%$vuzX% zgbYBJJ{+FcDS`HE-1laPq|LGxteM0X9uXw1k-{YYf_zWmJpb_5P;*FqaSrjO%kbl{ z(t$OX+Ld1+ayGBws!cEop1IXs;Zz>jkEK6p#^~pB>BBvc!6O-z{3V*>ngZVd^7xZK z;|&j#La`kpnBMCstOc=~(jwUstZhbM>qKC7G}w0LHE=|?BBLXVtWfGszAWdPNS*qu z^#30Szy3h`rlu{?H;M{gSz&I0d+aR~cz?PYKCAV53F=j`fR-`GwenuG){IFNR;2aV z+1r~|^I>6rlBKd@>c_U6iI%XM;S_>8!A|76A$-aqt(&2YLOF6?U&bMGU3a$}ivl(#ftvC?I3=kzbo}3G-4AbsgTsg8@^G0n$g{lK@HwQ>bccrRj&5fp#z-__Y)`5;wRVz8DoGe(;Kmj zmX&rWAbfW* z(Er99LJ=VlTacsgb@U=t_AjRw)RLF(1GTCIA|B@G`h%7fx4K(ve5Mwx6E8|Cjkdu; zbmQa{XQZ7EAN37iKbOo76G6VEBf`%4OycYrZ>L~R zaa`cIBTV}>cAr#ybD47w1Gzlp(jxrFwP>_vd>*zF(Wgku5%hghEz~*}=9X(yEie#O z9M8@J#qoHSi*4Z|Ia6bgdeYPwI!{Qs&2O-ahu;5?>;Zb!R1T|EH>U@b==>g8l z)V=>JQ=UhXPjiBL#FZHWl{mb)!+LBXrxernlzU1My0CNaa&ca-e{zytE9MW4@rkcD zNRcSB8QnTN!b5bgU#1dp$#}ax%)*h$KNdAlgSO1j)t{Z^1}O?BIMrX<3)3WDjr4Ue z3sdpP(&2>?AI?Pb)L{}VPx-+*12qjRi}2AFK$EkuDO2%6I=%vQ ze#L)E6dk>_4ipb-O`Z?jpjVCV3^dHq#rVwy%o7fUg4=@i8waoxRbf*JPqn zIySln$vcSv<71>P$S|#?K&5GSPn6yHq)D9)Alt~uxW=SSm557K=qZcKVxz8>V@AP@XK8 zK0Y)b;X=M}qi+q$*TH)whMU)rbgCG!Q99%1`|i?h#(p3OxH^JX#t-Xz^X;qM7lmy> z_GGfzMfRAI67wp)`+Uip6jEJtT@6h$5UP*GVKfz~=JVo9LJcG8=1}ups(Ue7%=C;7 z(F@YVUyxOq2GAw%w&Pzf{Yg~ewlejWr`I|4t9h2U+dQD}E%fVk>vgT|1OSS&x`bT0 zAB=~$PE!uavmK3uQhYddDoR<>$-yH>LczX+2lD^fmbhc55!#+- zMcoo(i?t z9^#!bS1>E*A&yp zejidGh;As`GQ7GSaZrF=dKQ7&;?WYO*Nn=@Nuu1aU#0*jdAV%UWc-~Tm698>3Tr3; z04Cr70006BPyhf3UICs8IkFR502kKLE80_6)qK!n*qZ<;TNa@&Zfl_6W==N1YbFIA zWH2Cbm_1FjD}@u%U=Xfkn&ZP|qUYt8cZ#g zQPc39Y`YT1v@@#-<781d)wlEB39+58e*rxz!?-$*e^^MxG? z63#>0&vzkPW27Zggqg$0O&@6foQYb_=SX@eUl1{`1Sv?nSMwYXkK*Q-{jW;oXfiSi z1P0)Du*lLQf8pPq{^)LS*Og7Fyc`A{rIpK-t@9yANYkC;ML?(k7Dg)Dy8oQHk}$xw z+oRQ;QERoBa-Dham!%r_4r?WeTITOTak4V8KyEeO0w>p*+wnRK?KF~?4lCXRy#QWE z-RDwbwBuTp+U*TC)A{p&6m0?7x|ce|EYkHm?hXX?YQ_Yn5CBhf)8Nvl{?HiAqT54&mL@mh%F(3HIR=OaMPc1A@tH}7~ubDU@ zRM6!m>aEP3dJaER-Qc3>hFv5`9K|#=$~~!P9plcV#GZ86AoJx*dyDOAgkH+F6hQP+ z?c3;12IAX=da8K`LxhnNtCPfDU@>qPsl}%GVaGOfG3Ja4MkVn?n(SMqlM4@Z8IJ_* z;K$P~egVV8Ow!gqN7SmK(H3J*O9v|@6M`@LXjuqz@>1UK9DpoEM%LOsvSAsF#k)pf zYZs-qm6Q+`@bZ!`b!R1O9p->nCuz?#W@|^uKsCd(JTrt)={1&jD(lMe!pOe|WpQ51 z?R(C%=(+S~Dv*c%k{+p9@eJkSZJkRFrS|Zqlys`wW$ff342hA%(z4(o(KjYH23U*D zuUG!pruApK_rFUlF}rAp{icW}-8wFSMU3~o8Z$z{Q$(gzQsC-5Ov0L-qf{oLWWll6Bx(lOTfvh-HLHp$ZrH%fPyo)d89)7EF{N-$%o@b>d7 zTE?H2*GRSq0PgOP{aNYSoIwDkWn^8qq;&_y=*HhHvqW^h7BkKy%qZy3ia)+=0behC zCP0dRy$4I@cTJw5y15)iP#y|tQ+peBQFHyAXQjL|_xeO@2iIqnbE0lj&k$D}#Iaa! zT)7_3!zg|!=_GyLRwoWx+>&Fx4rS@at52mQ8_G!sdBHmWQ?EI{wVdK+xL1xp`58u9 z6J8)&<@ac1ekc~qs7gZ~yucBV_W?ZFT{%x)J2n9Bq9m5^j+)L4Q~uJQpfT|nNf1bP zdJDFD?vMj@<&U8N1v)YF!xvJPuT-(%kKRAI!n#%*(zk-JA0aU)1^F*YkRU;oU1*Ys zM${j<6J_EaAY7Aj5UWIw<$Vcl5SMt4vh8s46*?g@I9(VLmm1?DDO_$%;P5=HXN$}f z`b4&{I_~3KRbFqI3dWhhrnJqi`_fAQDA{ruxmKc{Wqe}ZKB-e`VsEnzw z6tRbEu4=|e6-~LASd$WU7Lj;hUthma=K;E1os2iC&Hp=xyGqWfM}e zs{&@YKc_hg0)=4TaCyfo9q-G400{U10006BPyhf1XaSxIJ+cuN{{R^}h0sPBG~~%# znE(Td&AK0i`VFGtov}bv3OQ;!x-(_e+dPQI8?c?3+}huWSp z$%sigmk}D4G3gQ-bBoQ{7%rH}v0^JozRC?7s(BFY$!^8H03;6R=oH8VNjv-Z>xG6@ zofOe`R)hRD+0_!auj|P$7`>4kG^+KF42}8NOp}~wfWZX`Y#UvsJcMOP$o%GW(5P!5 zC}dJL?pbcRr_av|Y}wbxbt#e1vEX+G)IIdc$ax@Kio(5k%qL_R~DU}i#;5cU9R%Omzb z!Z5V>ZwJ^aI?%z6NCRk91Zl-;sl1K8{Kp3$Z$dC((}UYsO-B~8ohuB%f_D)M>NGHi z{jhPb(t7`2-qH@f1y$#>D*{FiN?v6evf#RA`NNe%f2AU9maRO7RFU5 z0ksn10F4R`0eo$?U@aUs1rKq(XI0mJmve}n;6)k6hIQ0|ucV32iv@@3L|n9fNv8eO zs(+UUmLl%KE5<`XeAOxO7xR+%(cHj6`cqAFHSrwiv1EFwzECxKqNkLWz>5FE&QLv) zku4n51kx<2E-0YAF7H}IsTaq=9BF5MVvhjtBipJ(im#AH;HP#{9sE-Qb<++h`i+=r zE0t_s?dt{O%~kRNBhC`6zv9@JTeYFo7zoTo>O&IxL*3n$pk##B3bOabJ?%^`0 zp}{5PC@WO%dE{npG5D`32(ZPqi2G(J?OgtZk$>Co@}1FA9^ejbTH@<86fF$?;RN}O z?1khvxenwlpCM>8r2Q7;zvtGcG2=0#otjpVHa#iP=Yeqr9CR|R*V{{h zVClz@zPrjTFF|Q%@-n{TQU>DJmRMvZRZV)b-zfk!s17w>yLaRWy9clqrt;6n+<0d` zV0{xQs91tbvgR3%rGxU&Ll?M;`WSEU< z->7yr3CZq$>wr+$c%pK-L|d(ZCy-4fY${)SWZrE9FV=`8`q#wz7I$#DXKQ(Tm_TLz zXC`7GYrc)iDWM?MCKnz&IhC4m%q9qxBs>%fX8yk(R7D@MPzLx?dMMUFUxaq(wy$vu z&3=B@)&oFR<;;ozO3tw$3~rI`c*>tn&Jw=4&})W5ee2LhzIxG&R+lO1S8mZAo0D^k z-ah#^2ug12H!c?eIODQ~gBivyr2~-ponXAi$r6us(DPDMN5^@BFToVUAE^NNExyE0 zith-_s(}^l><3`yg3OaoU5N@TpruU_F8yahu&wa46CZMxW?Ul$Lz*>9cC@9>X>qdz z_q`xdvU%W$1cCDNP}QKKkpC$CE4Ur5__?3~u_X8>IWFg(^gwppR3*DzWVP8k&Qacj zf)|SXe4SYT!4S9qxIJ4&B;N{4zAy}$Wr7w7<5qodL1x(ODWU>IOj!s+{7cP`#aF>E zWIukI-T{38zii*q#7fX#Mu8XVxnPvC z&t6FYoX8s@=ws~PN8Ym_m2TQe^`|4%23sqBnop1y=irgJFaD6 zsv%4w#DD+~NFf?j-Ki93BOrvpj}p;_?VvSSTS0mbOupz~KzT0*PwQpK{*NNI8kq4u zMSU@pQk^I0yNK-VZS4APxQ+1jDr-TnhmD$=fv49wgF@3QTi9;ey^qN0PL0Yh&oAc` zGjg~awb0&%%}Ynl`&J6M$uk;SK04hhe?tQq_S^z99e3x(oVKr-p3TMQg_MWR+X|E6|(0L ze;7@g#^4q4SNf)Au_IZi2z;IY)`)4xc*CYpDWcTq>9BP-2oOLVCCs`+o8lx zfCG{t8WjDZl8+QBBVIg!pf#jWSs)H;m?HV~7sriJWZX;$OFr1Ja$Z)Z0Hl1&fSePV zBSX$BwxGfVXnU(-AgJT3o4SU$xBUxFX?8W0FqOe#yvdoh@W=_ByvPKIZ`o18DkUFR zV@HYW)k1Bjdl-RPTY;j-CgM63G=hwfoza@o!`iXpg-5~)UbnpD=gA-G&ZyV*ujEDp z|1{NP$O@FPLJ2@aR1KAf0p!BqUW8A^GQYfgq%k4$F-5Q{3Sj7-hRr$&%*y-u^vqs$ z`+dDzor+*97aGuwrAl0sapw>~0j4h6f{0S&UK62pmIft^#aUkqL5heRW;I$}#_e+< z_(iP1%rctbyj6Xyra1T%x`|Agaqq%%6SFGn5Ftu07~@UmAu1H@q7;TG3oC701uI5? zE(WMa+V8F-+h$f*H}{0dZ>oRc=?f3YCy~z*;eat9LvCDkzWK|2#60LnD(goBW>O1d zeCsi|?hxjI0hi%EcIGqdy)c7jz%7hk{z$q0qvW)*_V|DvVPey=N~$%rHK70%#$#pD zrFYa4EIdX6lOH%Uf|gfgfp{+EtOQf%fzSblrSmm6IZ)@OB`3TzOchTBC?$pr z*zGldwIu>j*xscnUm;A{N?K$*+FEwaYfOaMj#&v9b!$I4Wy-T#3p(|)6wG-D6sBrO zh!wG1d4+ zW9(Y?R}J`ipvT9K3A;yb;$&P%sWbjNdH_29KX3RCxc{^P|MmVGkO$NMn0|Z?vwi^3 z6__-2Jb;xNWs$*2QF^M5bs`xX?~7Jp-O&8C1&(CBt-RvTC-TW#0!&t-{Wq8T2p`iWQL zQU9OP1E>GbhfM0g>mUO|r|tmi@&Gf3ol3_~SMJgt`p+LWf?&71Tn6bs?k&2H=UQCL z1{~x93x4{;F^ZP7GqGR&m?> zHHHL&*KM2*GX2*~<*CzpV6~?Iw4}Ta)dJ8JEf49Z%E^dqyAZQHYn3Z>Y;PBP8!FY} zdJTLiOXx(Rg(oCtuDMEj3hAm#s+lAZOGzgpz6MfkDRo3drtJ@}lor^h!c?5!p|WG; zI_ha4=b~%7#Ux2rmq(EVooLj+x2A+vY9kFGML>|iAQ+DZzyN5tS#pI>m{qRr_2YDqMB4-a{6>iJ!2&N|kFP(&AVx zJIhEq$*i|ox~8wZ7cu{3;6P;T-a(t2gEcui5P%j3lMIe7dLbH5|NZ;W25Qj9Nf8Wz zl}eFDzyKu;Q_AHETTihg6nUnK9nw-}mt4?5Y~l zrCly8!`JGWTqaAaW%7`_uM=(;W;Wq_r=)Z_o71~=vaY#`Bu$lz&38l+!x68N@z%js zCs$^Q>8z}!aWyM;A+UE)a7~~6(_!MM*5mpDg5>^q>EZC^RA|lWpVC4TdsCD(_oh9r z*Sp$oZEbGTHK?Kh3B(glNJ>DAfg%7%43OJkrHO^<3vjtYkqu9%dnjWG9`!P~(oySS zXv9{qHAyMn{rjaoh1<@#q7l$PMTO0R-M4hus>AZmfHXc^d(25gajUpQd<|}VNxLU( z6|4bn+ub|(nVjH9{elpa%5N7x>Np6cyPF^x1|vBKkI?=Lb{4!|z$rEeJ%p-0t~LwL zrmfmITAd4jVy0{htmR0z)rwbJs^cL&DdsY*@7%$(h5`b3bvi@o$dHI zEDv^#Z1BvPBUw6-Q;?l#t62?HQi+8FwW_c#6Qy$_Y$V0C89?wqqJDSO7o~oW+Yrtf z$BUj;&&JzvuL5Rr3Nd0JzTSvdVWq-&+crc_=u8x^#ZXdnxXVDI@ib9mR~?BjyC(w4 zT6GN^uYfLcO$bB@h{!=1mJ2GCKsANwE*1-vDneD+;mZ2w|JX@zkIJYmp7=T@o6n@= zY{V6B$73JAi~i!)gFxWB0h!7Fz(F*6yB2JVHG6NPW99R?&ZZ8yFd;=2qs}OJMr#s@ zKao?-ccb#`H;ada@~2Gjvqnnw=_&X zLG_C$%SvzCXp;csAsSEnfB(Q9ZqURhzK`I_}}gF z!?WojM1d&2pg?$^`ln;WD~V$&j|Mwm9;liU@SO(E7skSmWGMQlEvF z9Y+62&g6Z|aARPE>bNhGC{O_aK5}+|`PKFAe5?6!mmLBu_g(8Vb(n7VE3kyzv?=uq z{Cphp(I6bb-8t)BtLn3|Ng`?uRh(l(sm^=wT@F zEKm{wB&ytWA>X!(XCMhtmh`<2Fh|gAl)yF0xH1G>?nkJYdn{#mwvROTWW03#l3D6h z;d~7CWY-(A<*&6GS8fR|WnR_AdI-qIq+*;}BUyX5SB+~WI`@U=la$F8f>*=ZI4#UM zt4P&GoRF8xCXHLCYKkKp|1L9}tB$k+ZP5ftih;ouSOUe~HA*eS03T<|(AlNhZ4VWo z^7IMqkh-a9)!!XnV5ir9vP!j`a(v0^SX-Qx!1Z2C&~3dGZqZJXr%^{#GuluRC$uLk z)tiS0iA9E${vaGT-v<>nmji9V-6iPGU36!o2yhaw9K1;aoJ(1nBnB8Hkx(H;-&dDIbEOcKBw6`@<# z&1NXmU;o0;Av-1l$Fg&wL3GKL6wG%%HDRo|6o9JtYz41DrQd_`mV3+sjxu*Yt2+jU zqG8xT#t?Sl7e=I|biHWjwF+HcP(|gsgo|#%Rx!>I%@)Wndw0ce#i%g4?p8UW2U`=4 zy`6fcG}R_t@KlK$2m!Ad)16YnG_|0x41eHyPMu9MTk+?IPGE642(Y{e@Mg0b*Z8T; z;u-u4xr%M#;A67Pa<<9-=WT2r*CyXVcC4Dlp}7q|FwPd+k>^{s%00@;Il%V!4B{OB zrY^eEwSTOsxaKc5)Z0u@Fa(f&fD|q00Zyb7q)9I!8Wh#83dTZ_#La+kK~}N>1qF?V zweKf4L`uQ^@gk87o>_2)lNf4~gDE@=fbzZMrQ?tY9+coZirNCg1UOpsE+}w`(9}i| zvDEZ1lKm;yMTEZVf)F;Ip-bgYLt1M8&@6OBLz?(%%7MvQ0~SH;U_V&O z><189lePl=AsSTW!Hk6>ic+zLqoP$2D@Y5#XbwFV?og8iOn{XMfRYb8k9sQq>HJ{B zhzdrO_#Okr2M(JVh+%Vu=LbFsf)5IFXFW(bMD@t(D)>D}g2=EFK-*r0Lo>WS$DZ-= z+r4tA^V0ViHEED=NQ7`|uZ^=peQtebZT}Xv-4~;0Zu)BSmch-|X%#f6#{^yNbN76f zy^fAsZ4kSXm@8RM6AZBB#;U--T+mzRys~<*Rk#U(6io(41possqQc8q842wZ#s6{~ z<~ll;-`cZAx=+|ByyBFoUvNxOYkkj@8;CER_c$O*1FQ;zy|!?SwJOHAA|#4|r6L9b zH71XWzBxpGfrQS;3C{%eAT}Ox{QJxD=fZ*}7oq*B>_@D@NZkT@AsSTOo(jxCK$z%3 z5{&@KL3`565|OwIlum4!SVtHF-r zKNMsf%sz#TBmknWSoVRxd&*>3XeGCYj+)1QA3X9gRY zP{lDEwA)PrH2Zny7`Bz0KevwA((D_o=%BB2ULZ$ys}KoD2u1RH@Rw!Asu=4g2o40 z-~IhN00_^)_JH-I+%MUfi;@SoEb)Ur#dBx{5}FLfN0ESH#~l~|fUp5_oq&`09h>3P z)+x2Wa!ZlXwf|GGf#)-kz53Dfh+h8E_*HTD&2gpPFCj~7p3kZNNsF!XYI z#_nTc$-A#P-M|geE&7J%s4KAge&lH@)IUW1M!+7ra~Y^cp9mfxdfv=J06br4ua54m zG$6yny7BgqRreS zcI?tLO-2MxAUTA#D$MR6`=x)#|EKLIzinSz=O?hrl>cjA>Eh+)+W{z`d#|SRv_i7V z0HFafEKo)|C5VL~fJTMVoT@2cCQD*3KyXP2#w!zgKdtP3Hkj3pnqsiT;>YjElIiVZ zRbKxtROg;@j5lYGj&i-x7gLAXm8)I+M79Bkj~VxqCU6UCv=%jsS1tuyiybw^S-Jg$ zakS#DNp?KJ3E0@;O4b}eHU@RfWKjzB$l@s#vtJ{*D}_w4I7h>}!pE3GX0%`058OYb z|5>0iwObzU6;eueXdH<{)ike5+l>Se98r7;eSn44X*%d(DHc07Axy_i++>kR8*K^! zygKtTKv{7cwc>y;bnB2WnPq}1s0UMh4_DC@FzXPJP%fhgQR26wX_3>5aUWxUutLu7 z3POQE>dreE9|SMkK!(@X%}m#in3KB!6J>?ptGe0F6B!Vi;t)>+X`Af0hAEdCnhGdMVx|jXhltIv6`8Vh zEExG#2@}k*62Pq4N!H6Mlkn7Cx6GVUK}y?w{zL_-gup7ooqF+ePbCnreRMnX9%7A&!HsRNJ>{SIzs zOoa-}sl+rfC8}A4^gmL;qVpst-fk&SE{GI$9vH60jtqKpESiZB^I027MzwsEp1+B@ zE}-2g*4_*C7@u-Qa#D`u;6CeOgXQTRvr}geQ|YmEM-Ht-ppBqRLoi!a-|2ayZU)cG zpYKo24@`mpI1EBaU=%?jrR9uovn`9Wmnz=rrRPjAl?I^>VbxcLyS;V2%>?KNUsmg- zM_wKLuFk#=w%2ILpwf$*m?4Z@sB~FPf@X28ua`lz&h=G6m_zh?-ny+}CQGzlOVV#P zJayeRI$WhnrAZd_w#!~TpNJJEu<#rr*D8=X0PnEm4BOEJde?8}j#1Lr+j_v;CXW@<)Q)h_z;Hk?1eAfPBCj&%I*CRZ;TeD{ zQXN~O=_?xQO}l$z#rtOWT!KFvrkZsW#dD__Q7P}6Mm|}mDNAkhsU`+Y-%rr&y`@Nl z;W&=#773Vg>dnPvW&eLSvXSEZQs|CcW_*4{<#a^*(;aqwG=Ng81EW9-l}P{qFd%hn zA%37-DADC18dU|(ia}w()F?ACT?2YRz#5W;!ZSs}r2qi{@<>De?Elh{W9w$@=w)Nxd4^>vhM`aAu}=KH@P7tVWrQUtjSl+|g|`+t^ERz99(A(ldiW0HJcBBY*)OermELszZqILPnGH-$W!^Rx74u{!Eya zEE?cfJI$ELH7~20)Rt+t8W*#ZZoP26vL#aX?(SKp2Qax#?^cWwy=cN`9OBU=@&A`^ z#WD4ZMd+>JE@I0WjyE2REz1>GJJ?RM8{J*1Ot~b6$Up(95>*54L26Kp;X3s+w2ZeU zIq5=NWEl~rj=A^RJHnf~41>1Z_VU|3JGyTS=JT*mevEc$-kfrlfPv|`24qz8UC=WcWuZk>H z&03&91oNQ`C<%aBC*@-|Bh5_vU13t{iGdx+%T3`;`>B zfHd_V&l~{G+J%bN@?OukPch{PojDPD>`OwKrIbXf+w#JBs_LF`4<}5j%;bf{KeEq# zz0abPnk-~)oo#m+9rAwo9?R`gLxyG_M}JVAGKGuH-{Bf~oq z-W!#ErH#_V{@lY0xLrMxZ&Ip;?-(a4&YdET){j_=$B@r4XI0D1$Jpuj;!)yfb67H_ zS;}Uhz!Y=KYC*DaW<_4$4sopRbSr^meEWa$J`tWX%!90^k}P0)fqL>lElLnf#aw6#mUvSqp&{&I5w&dK|zxWbE2}BU`FsDd8mdywtGg4Fzmb z45A0#O)G$OV=Sat!l(>hcYh%}%F{q^SD9B_P?jS2L5qOg@pPTeEH-VLvSy)<3dZng9 z31FsxTMPlNPDhQF8wy?%A-U;S3RJwV=>nk3=0;<`-lH>jJOlH~)l-R}y)Z@MLWA^% za+O%>!;RPYvn;;Q&Er)cZ(_;YwtC6{l$`+kGMR_pWkT}a4}ZPDiC zy_#$Hxx`Ia{T^HXh`1I>CP z3NYqZ9|J-y0fIOJixNajM8n#RZ0Mfn>2vGie8!HY=m6m;ON5_|Dq=Qpwpgt7yOlXs znd14gDFLIF=iPG^Wi^aLZH>0ExFPoKZiv;T>$ilT548x*> z!e&CH{1JT!@I%fOcd1p5Xfwx62duNMNh&j-E#dLP?xH_Ip?Pox8dTUa@t=37->h=i z;wfjhpD%IFEgq{+!kyTQk(AP;<|@1T4GPOQso!KwG%Ua9gEt`5&>-a3Xeg^C30=?S z-Sx^Bh_d<;nPI5obu18%O)7P=K*OY|hzp`jbxX-lzGBh&Jg$76Qxc+Yf+BH@bkSLd zJ!>vRxf0T7n_|N(9?E|xd(PctrS7)diIht?SNf3@=Obmb1l5KuY`*QI`u4${e^!WS zRy5flf@c_+fWms&IFOThRG9xC#9nshcS3<(JR98Tu8@UMD;&_sXbU1*lrHoMTTf`m zK7V_|vGhR%ll=%##E{q-V00Y9UP~v|bzoG9oQKU}6WV(BzZzB@ZoOp33Y3Ke&E};D z8Pr|Sr+{8k84x0|OD~a92=`|?L!}e4svMapfC(Ayxt*S^m6kF2V{zc zGJ}mf8C}}{B&`IGT++GDcMe5e@>Q9yIU$EQ2rYCmP4MaL$Y|6?pnMGO5R5}f5Isgk zEp^twsi=fW_ZK1~uS|;P_d247z4!fvJ<*3#gqOI}mm5O3U4@(#5vl#Eufz7nD=(PY z2OCuV<01$k8F?+K_2%)~ce;db@vE3s5f?5d;5$wa#(K=BbR$DxqI7n`Z`baU~*6D9rY4zg(HR@?ahBuO8#INxt{(9b^O{RxeSrLDE9aFI?bt|~a5BU& zt`EXudL?(Efl0dBmW%6=v9bI;E`u$8P^2Jvc@@f^Ma7*UP@0lM+Q({;5vkDZOb@tknaykVk@)VH=m&*jV6E0twYR zqmPs%r<2Ie$&}-(|5u-%Q*OnoqR9qskDwCQ#rDk`GF(I`nA2700@Ai8o@Ptlk59f6 z)?F_or{!>jfv2EqO`gp5AOh#P8j-t!iwO0_e2Se&I5G*3wPMm@0bTTD`ogp)IR{8S z@5^fyXrh~op@NtBG`I+z_N!RCvL0>dz>%P_p*A(qTI>hgneR+aBHmW15uzt}Hw%G# zdTmb{lxMcsQ0<=3Q5|=))KIkVKqo5M?Ryet15zMZY8hASf|Ag8Ij;g%%;c$?(x8d1 z39KoOpx|YC#F=OpT(y3eYgAW$|CJ>ZJ5O@+iK30@`rgf=j*L}j?^C!u`>xq3+niBN zx8U$%6Ab^_e`juc_(0LmGtjrkQ~^AbT#O1A_7hj~Z;^WwC4nccsv>51d(Fi^u2(hv z7U3od%nn^JIx4C{seg^*TzmpYv{m&yNE!&)52=H)%#tUH`i1NsbXqAxU0kK4u>g01 zvwT;txDA+Pxv5(kmMOtBIc?dsq;HTmP`Tp2p3c<}4-mkl90RR`R}Nr4qq^QC2<@7q z)J8Mova5IfA-CO37(%2XY7aCxz5LO#u{p7qz67Ve?*SwUI0^MCWZO|4GsR+yQy#co z-LZvVm|M?rF-y%{P5#+l{le5ia27Ku-RYT+f6Qbm7ioHqVD^a*Zd;{`r09IYX}hhb zO#aw(%~7`TkP)C8%GJGI!8TzDFsLbbi(RejZX)s)h?qB}%cA6GdFEVmi5Qq}2(fUM zcDCa&vflQg^ZynLeJ^yXiPQ&@2+sFzhau|naIzt1BuZ}OI+vN*p+Av|A8q@Tt>q+T z=Gi%P9b)w%R#0cM)3B3EuW4~rbnD>A40w+1*K!C=E{6*$di|9iDcSS@T0o`0QVsk# zvhQ)C{RJxsj93Cl7Z{KB!_Z$A4v)As;7+Y~}e99fh`>3|bCIW=$oBC(G_! zPF2or;fpRFjhx)if=w9H*~7LBu^J^ZwgEY8{cB;&1Na4TRIO5BNn%ggeG@>J`<)z2 zlcY7FR*d|kTq8w-=D_m(+<63}%Z07T<-gOnB2EnK8Nh%!wH7IXU3Ov$Pi zErj-8r%<&D&L?a<8K{?jFLo>?EoW1=1ORf8Swm|Th$zA+JQ7vdY|0j@tnXQXHeg7R z*ibefkFMZouG1M0lFDH*smj^?Z_++Y+lfY0HR_KAK^Yl^`Eh#^M;ZP%oFd&C6ULl76*=(xrJ2LHE~#45i{$=eU=F&;`CP6 zr^vm!lmEcg8SVNy9$5*K69=>ecyT8R%BM|Jdf~pHObuzmbE^_ z*fF(c&UUqhC~*J5LNKNZ_%7qI^1%Kl8^>beF6p+U=GS+ap9NaTMoKW)W!=i-bCRrF zqMe<@t%d*7V~PHtrfyYcArJ1H+*CMl7V0aIo*&0KZd~mfLL>6`%d&EltE?5bQ_}si z;b4uyWu;+K0Lw9pdN$CFQlfyqeKkpB8t_kt%)%PHj0B@o4vtDx!!Q$Q< z@mq@)_RzN4Pcx)gXI)jH<2(A)+eN${yM_zZjb2+@Q1PS0gC-JeTs?h9CS)8dV^F* zXEm&{w9(5zA3gOg&=lxvf-_zEtR>Rb!@J9No9ERaD&O$)t>LdlLj-7C9(xP~JxF^z zn*93{y&{qU2l+-YS1k!e#~IkD`)E$=mWZ4jphErlLe2o2hyn`n5aXlCX;nh#hQDG7 zF%R#uL|}Lk&&A9NkoQ>(zsYcZS@K(zQ*rpi9@b*cwD zQdO7=@~*7Pw86)zdug@0KR$k5qkrjHMa9+Za|a;;B}?YNx?3aOn&l!+HCou@MFOrK z5$8Y;STyPnwN6r97mYRfRSI+bsvK0Wm7r=V#|<6_N(1Q}KMWBf2N!oHVVEgri(Kt%L0|EU z3mfY0qJX+$ZvGSqEv}6I%lREH5q4*H4A-Bd+GH*7D@p7WN6h+nbR7(Rpwr%F?H1I7 zEIr37b36&Cq4&cUtTY|fRsdgx>x%#evMG%D1eRKmGWY>?0Y^U)^>1?WwWm93ro!$T z8-95-5P{p&XzU*Ez9hKW)2L#8mGm0)5_SQ$Mo1=jKHy6hL`EHz^nS-CzWK37-C^4@ z7xV6x3A)!;bQfQMf~n+0nf#qYF~-leRo_A}A6)J8_AEy^sNP0umH?5c+Yb1s&Sx=!qx z+3i=cu1+_i?QM^ohAeC}rgM8>2#N4SpYb-AXr-3ZOik{Nd!l<>xv-KS;$sRi!0D)d zGiUIas|2n+nET}&Z5=2?v@^&KPZ-H4tj5}igiO=+SHaHPHO|N9Obj(__YR{*b^&h92_3iZJuiXMiH& zKWdse$vWC8J`?Hy`^Ve)unDBBrYDDn#zqK>NUMId%tErk{{plJ@Oi3ctrFkIRUvqGsF#Ss z)7`u3)dV}s$051u*3@74pDI<9Itf-7$dX9Qq;D=sBmaKy@`^AW`heULcFr=4&G_Zip0WzEJN4vhVD~e`2p4b*Ui~|AJj4%*~ona)b>8%&aR})xuZRs@GrpHN)I)1 z{I84*3bSvE``<7^Z10bC+%QH{#~I81g%1j zGrzPt>^w|jXcA-{^>WR+YbZ4~%Y-M9uw7^AysAgx{RDLxm!GT5;X|uxVZKmuO;v>H zO$rGs^S%cE2+5riZ9TQUuRNfGURINdSu}jaN?sy}6oYYJ2eyyj6kiDhEt$h<+J)Wi zP9a;9&)AO=wLehKD<8{P(X2?f5q{e!4Y|!U?@&%esa&^x%+LFEdSQl9L!(VnreViE zroFl5B8t>+6)Dj;y&XVobU1GY|HqpHgE;q9k}mjPCsA_M3B;lCQ0iZZlF5eqrCCRq zEqGo~lWJ|?`577$yY@`kg3Z~RPlg{SAABCOnGXN(MhAGmMWLrdskAadK?2c$t%{%? zE*Xlcw8Hl>H#C2DrPg!GEb#k_c`Wc-;(@?JhOk=~EpqG+nD5~rvh5Olw!w``JSlu` z#-#HpcwVPRjqXuyGjG5vgjk>K>lWSBZ!=oWZd!=Xua{ zP_Q1TR4Z-xcT&C>mZvqVllV$zJX3TCUUe*segW&T8tR&%X>uX}!j{&X+ZXx%N?5md z+#qhqOff17!dxTp-U_ZW&%tJ50e5Wr-=}b1v7&e0h02$(!YSXS3rYIEsE3!HUaQ#I ztXjoeoqD5|j-6tQ*-k5LH{Y%e=PMVduUcCu;AodrHy)}Cpiaj@%iqK&xQ8bfM-}3; ztttbkrDzvWl-%BnS(trIsJQQ7ZKP@IE|ZlyXmYIn7mi=1!?IzS)Z&C9z6Qef7*k7_ zVo~_!0lehpMp%N!7u1;IcOCk;HtdU9+`L`=Qn1R4nesHq!S_g*6#JV!108$L+{by< zim;G|{Qk4CKgkqKTnLzaWk^zZFA?(3+bBq&M3Rh6Es>ow%eLwZ7>=GJJYMakk&$SK zfS}9gt@q;g>KiqhB6TpgB`_2I(s$%dq3KLqBqD8$&NGnW8|{g?u#f-4po76K9z;0_ zmHe03TQ&od%^uB{36GN!WViU7Y@>Ii91Z^IilCT0w&j|nOe_isTMm3jd_o)spxyiv zh}$Bbw&YSDohrEe7&h}Bo&T(`S_TAc%^swbp8!kHv@ltTjWZUfIGC>hh{_m}<{V~U zB4k9f+TOYrW!bOn)rj&V5g|&c9Vyn_N+jq60NdaH#>m?5VJHL~s|@{Va%>w@u;s8U zGCd_(^JAu5+0tXD7#n#Y3k8$pN_cRbQvetqFxNTo3^SK`hf%e|zij|xJ*2x?haA6z zVJEkLN-z5jb5!+`cU7ZCWJSwV#Oa*c9TtJ$AN!HPBX&~u*P1ur_0r|+qy@(% z$@=fI!r+etGXj07ZfxO?rompZouAYD@+Kf*m70!A)V6Kq7l^9YoRB4&UT#m{;*I|- z__eLDyCSgRn9EZP2tvLdD~uSPew1a&z3BY970j3xo?@Bsn@*EF3kkr-*MdA~++R%Y z4=<%hbZkBdJ6kA>KG{KLR(HwsBoGhYW728*$k+vy2{pdftq+l--7^%AqSB<01sC|T zlBh9ZC!p%KWE6gB!>a|o93!$Y>L{D@$O@;Mhi^9aN#9Rx656-C^^m$3;!T8KP+ zCs^LV{@7l!_x?0)^Y-*ulhG3Hf?(Iqn8UpIxDrn~^&idQMHLrWwr*8J1%1a}|$ z@6|V<;A~4Pv=-bqzKu{*8Dd6kHE0JB%)$fd&Wc27ctr}7&z!Pb3O6B=-)9~vuvYDe zagdfO6zZo>l2?H82R&YYc^!r=wKx&G&h%!p1_%q0lnaSz${i%y`0n=kNqWM>83MHO z-)QD@aYaZH+@k%U%tMhg26;yiht7&_ozr5Mi9px?s0#(AH*Qa`aD>AJp zhx6UF7{~Xf*uXaRVzzWM8J+8w+!d(e;yTXuH$2d$%+zUsYP_E;qFR|oz&;ZgT4nc! zP(krax{u0+%x98JTwg?%m0IUrowR$G4489HyNv@=SE_2;fHYR23j{T@7i(-`oVY@- z2e6<#F(Td6-5jB?4zG+}#iE|apRX-0=IhHhj4VICsBh{`l_FR4eky>8EASz|G~wCW zV;1vxlUPnaYnd0f!Y1@qJ=P4nJ<|zg%uNy+iAd zQ8xgm?3y|GCTv1%d)hAFba6uuCiMU#EnY>4@cpFJeiNm%SRz zEn^^#MHzRW@+#p7LiD9<-^&F^K&`}5*w+0{OMFPb@cL>b0HrXkwu1-jSP5;*=Jr%4 zsW;EOk|zkNGM3*GCPG6kDK)l=q0t?{MK&JsJe53#ZhnCZeLNScDvW(mCV?@gjY1K1 zPFH>S*4xYfA0l@jR!JEOXGK)1Sv9F@M2l6bdCj+eHrs%1P;ly*sqf47j3O=*nt>&x zBsP<{=M^G_Na$h)0sQ+40Z$bA&E3hY}|4-!FHnnHuX~KQE7|0awjiqNB|H?7u z*W1qEHF(>bWHc-?{#X7D_LUTb!xJG-ca_83+IcV~mn+K-Hctlc6)sX=WH{412mPZo zu!mPzuY{->tHV-0;vDwBa8geb+D9;JO@p>#NS0V<9=`YXVk59ZmE@1k%$_`uiP;H` zj26Sj`!)Dz-${BWc(vSXJ6aDqutf(wpD`{Ez*rylpqA~Xul&mBU$Hs8{V}XJF+0Vr zgeNZ@`Di4Vd$gX-i9|q8aZl&jn3DXFt1(Nxso`ZL0R7qE(!yDVvR_7$et93^qw!)a zS<@G>a{3Bhl!zl$>|(&qhK;;Z-0aOo<~rr;?JphyYR){OhJ|dSlHt3rH{La6%~!N6 zx1z1S{?~6r&^Cp@t%h*zHAmIy$5qa182P_N6z7;vhW<;;vdPhu14K1Sr-ms@*`AMo z07R?MPyF969j!= zj>|#s!+>FI{$BKZ9X2ve zA_wo+B=M)O-nhMh#p|gg)Y1Zqf4C(MsDDRQHb{Z_`>|cfi&Z_s8Vi;hlo{8+NX`%- zVp*_}#uC}mcKkM8F;chOgD{Y9r8K8;wsiD?lm`z5{$}>=b6@RSJr3*GmjBmSoqVm) zj3)%@E&s4pfUI96fx=zZx-$*XQ24o;mAVB07=_5a-X&RaR_bH#hDs~Ru2&(!A^vj+ z0b9Lc&|zR}4-uqg2ygg;+ebz34AG~}CZl!V${o~sKClHq+sEv>%;*6tBl@w4o zK~h=iGmgx3C7pi?F@$<;V7ZGBK!doF)gnBdX?Q*XkLag)}m(F`}Yus>3jS*97i~=xXV^?l%2%Wfv{n(*>p(y*N z63Q0O61jY<(yB63-%5iewm;?z?K>=vQyQhV-@ZyuP@_myjg^8s@70ZvDfl6O$0d-e zxK~t{j`U0HBiz+mf(}>NyOHbwXf4CZGJy;Z@Kg(k>$sd*=tgRK4uEt*5jU`LE*Qx= zZ}%qW>0TdqlF?A%y!>UQ2g4K&6Yw&tNo{>@e0cP9*}@RasACD~*MQa{jl?6lX6I6a zccKSVAT_o69q#SGI8wDpIMUi*<%YQ-@@`w~Ug4lYT-2sy$(Ltt(>0;sx3)>8eRrg2 z2zEagBXH>^)jm%d0pZb=K3DkXJi(-q=gtsCB-SK9gKoA_em)vNbiB%hp<5;p{&MnZ zBhT(~&9x9^)_|wIQX**YzyOs%*bd~2-sx9zvJ>N&ZS*i%-r3uvp*uC~-pOR{J)}Gug*1#!vv=Wqb*JoNWpS~y#fqw|3#I4p9Qe1w(Z^ai}{to zzm?rFDd=e|?1dz|l>7BX2IW^r%mmtG0pQmK$$ZVY-G=HhVgr ztijY0L05p(i^4czsikn~XI8FXPE=bU?YEEPa!nj-adCNZf4?r&+drB?kI<=`J^eC1GxkI|0U=|Lk~- zd<$pD^c((X)Pvt;Py~2}O%Zud1EV9B4l~%@IIRcqld@yZZfYv7k&BHM(B=ggHR|u) zHVg9{vUjAlY3U^*mAV@Kh6BpsY(+d3oDd{*5BCO)yCF(m#hGHJiQ`@iwn6z2pE>T$ zLEa!9CJYwSQJgi#Szz!0bOv28nf}~^C`i_lIk3Qfjx9UI<|8HtB8UZf84Nz@r9BcV zklKAqj}uQrPHhRcQ;aL2q}AP8f}y^_oA6iFl+OIfB_KAi`hUfyl2l(HG$a^wuY(RWkLv|*ZPZ7hXWGvvR`~}6vIN!V3hZs5STAW8l{(XZ zg(Q3kRU1s*?FvDJe~)$CDfvx`>v%|a`lox=w3-zg?w1=G4G(iVPeTH3eBt@*I#pdL zsb5Tan&XNL{D<}_v``LosORdcwE(`mCw^!H>%T5s4le4^`4rQ5%7+0K^M4o&i>&TS zxbmSkfIGVeZzQT4GrzItF))op-JIlAy$ec3KTy zAYy-_S8O=~5ckoZpOX41hq65>_o<|X^=^LoDqmP|ASwW)=%F+jkFahyXf$fmmMs?Ud$-Q$G(@e{TZUJeMP?CR~=p zGII9UZ6gO_JB{&qaTs)!1nu$f{hnYHKO4F{v%)bf7hglcMefZ7c`wO_u1F2Ald#8M z-DDKNqfLSNQjIpTS53PedOv&}yma{yc>>?>SsnZEER7|BMLzo;MHLJS{Iak{D(NY` zl>2jI*jW@EU}@pFrM3^|dwj6z8NA2QKj{@ewvA+Nj5TyA!O2^xc*AN}=XgZ+U&`87 zrD9yt?N}sFZ2=;2%_G4p8)a4L&Da9Z4NqIh0+iePZ>00oY)zil#X%D%x~0m*^-7t2 zzJ=lD&~iMkhrJ@Aq)wC%JQseUymj<2uJzSmSn>r%QSi1;EcvxLW4_nyUO^;^nCQzH zHO#+KiTH!YIX~V!*=w&4Cf2}i*H|YXuJN5MZ#DJW*Rlrj@&(3Ti}Di$H$>+uRzi(A zSeyOzT|J5P7nc`ef_@uFP)f=kFvR2F%{e$$R@ZRJCt;#lD{`zCDiFGTCiR4<@WsCc^f03}>ug)m-2sng9R*0trw6010OSo(xH{5f=aS)x#mh)4;u! zLxZ|ln~nBa1-WqgT-T@n-0AMNi?v>%3vp%g?hi6>yC~pjW}(UXJZ1OKi2x zKiWC4BEfaP0LfBFTu$pgrjObN#*7)rOZ;-PnB6@2*hZ&L8xraAl4yse;?{x)AIUgn z@Y_A-zca92{)K>6g${0VOD?g9UPXrTEBNCZ#nCsbLR|$p-A_?vCa}abFyM&bl>Cv zH9i>GTt$uD@+Ka<6H64u7QBy*pP?2bChu0Tt++Xp{h_MFU^&BIu~#s+V+;d7jCUMH zs*M9jRsS^lV&~lEqrS6e)}%Zqu;cl<$377iLco<4)3TqH{!(l*xzhh9%=ZNg+b=M= z=?f|!b$36rl^VW&tSAnZ*J5=7L!v$+aK~SyK6Wxl3=X?A(}2(^CW|p{7p25dX_A>+ z=gXBYfmN_zwbtl4nMjQ16gBT$p$FZO%yk`SlSjqrBXC&8B90XbyD@+;g#B&}1%6@Q z&~anuz&&#Uyt^EZSmHsMx;XqU!zV&bt-uq1t9JR?7Ef-k(X!|$P^~vU{S1YWwIl`h zRy51jZxWI9VS#?d9K0gQ1lhUhvv&vZ4h0(fJ!JbxJ675q!iv(=HQ-0&DOLPb*picC ztVFkFgK#2pl|Ti;pF+vSRck-TwMyqOE;A+fP{g2GC0};C-~_{z^xx@^04fW&yuz)V zn4k9`@2)p$Z*dmGmuc0$>}cRw7a7O62g(Vpb0^wvH?GL?;}+F6&oXO&Ep$4md>UX8 z{2BUtp|cfH04+opE0f(dC{TY6QHPRym%jy3oHf|Su`p@enRKF@U2RH+4Se7TiMADF z8JaXhsJo;SEROL-SoC+$`kON;i8LV2vB}Mz9(3iz5veo`WWLes;(-Dbo`e}oK|M6a zZ)kDYB)%{_a|2{bY{9j7E69on3@x7CcK_8I93uB_Fk6B{LC))4B>YR_~VqS~u! zB@BHI^}_bDOvBE+_wYBDP?`$mwDUUx-$FNK#CJO;Y%c=UCjzsyO@6Y))CM2T1$4xr zR*+(Whif}J;lCuc?D^2LX`YIFK|PW@gYpc>#Fi^iR&dYg~iDEu?mata~eg_6+j%4l3y~hF^8}M_1%Bd7Lt&@fFQ^9?? ztt^ANxJgn^J^K9dlUiWuebRTlfyUvbu~AmGBa&;-G@uVLpSs@Q`VR#S!WJ|S>`Lif zUem(mGO4}%r!2(|qg~+p zeZr><325J8p-DdF@lS;tkLmo0%C{X->!mTt1O$17Q5Ed>gu;@sWW^2Eb=3I_!x zElr8ciTqn;jUUn*X+TzKRx&Y=B;M7b`k)GqumJ5F6*BECK9HfsHKI>Crql^A$BmMM z%s)O2seL4IU3p37_-|Fh93ii=4Ep)Euq?63v#woMeR4JuKEH@(Ho1Rf;hbDd{^6Ss zUu2Ep0+%mxoZlqVwtM%+_Qb~-&=PP2*~VfBL913%W%VQozyV99x9g4PHk?3P)4?&O zf_SM4!&R&!PvJoDD@w;|N;E*Iv(G1Y{4u?FZ|T(xQCUzZK9O;Bp#oW}*Nnk5?QCl% zQm`ZRE*3IdrM3Nm<5W^-t@tp6f>yZ>-Tv&7p!B3F`oQ zUEMdv9R!3W)ew|Yv62DFRQFa=u}n3n=A@Oi3Sz;C_*Bx_o`KWHe1B%4lKt}f;3OOX z=5Q;l7k*`9o5CiwiQ_@)=?nblONFTCbmOkcb3VKF0U4ESGgp2DIkRhz8kei}?C%s$ z{Q0OvCNZ~roHxdfz5fUi#&GIh>_$41Ge3O{qy-++yOm$-lB5Pi@9k3T++~TbN7$5^ zNmwnQDZy0>!4+r>bFXr9*dL<@OMVy~x&Yl~fv!$V#*C>>>6`V8_ z|Jwf~PXFK2W#^qj<%c%b0_hrk(75)nf$jJ^j6Emh)QZ%Z%DB$94%{-QWmTnQC#7*c zDKv(1)lB~kvdtO#6Hq~SZoiG(FF8yYzD5fme_ihZOM8kkg-8(RlYr#kAz@HxcQO|~ zUDA_L_Rb~y9hD(>IJD2?hLv1)BUa!Ov!=W$0rwfQoVK z0P*FGo4sx&ZH!7d`i!GQkUh&%`>azN1Q8qRxd1E(;4)?<{iE$ZUb$$m6- z_Kd4=^e#zfMzAi9tHb@S@wz3?hfzB0=+je6n4f1*4ncD{l$^+LJxD*hUrUk#m2dz6 z00Idx000)KL7EI$U<$W{C=Rb^5Ce5LTc83|lr~`yhjjRheuhd|sa=*qg!65BSlFn5 z$ZaLi+WQe!ZD9&`o6O-!%wfcB(P^(x%`^lky@{yrzyBEn;Y$Lq|1Jl4NmA>g~ihbYT0Jqmjn=IOh@D;DjIP zj12p4u7{A-^GCb+C$i8sJp|+nbxdVF9%4t=Q|ao_b_(((FxHrHq&sa4vM0o#ve(OZ z%G;JQfmyRut#Y8H(Xi*Z=`&$k-f^DR9gK+wdpm`MYZ_TMEMYdsRj}-V)PDzUoz>GC zU{T3w=l&6+d7``@^o(J>VXCgp13zT!&fcRQxD;1}C(7_3M2-6w2cqdek;rep7+3YFT!dnJE1C9`{3K6R+zvf zS-bEa23Jsp@-Q80DUzlHV(S9=7!Vy|HZdVO6hk?t=~uX^rpWxFr?PRcwTlIWnLVjt zlulC+kRy~h&->>CMsLYmn$2pat*wcNDE?J$>15OU0c(gB=&S&TL|j`H=Ca-$ z6{2vOjpQYo$Hj8 zNPG6kTssKae{jeju~B^J*aSj;u#R<^V9Lysaif2a@@%iE-j4gI?vd)lVlY6**)ozF zUO^YG_OH0}Ys`5Gh}`<5cTcSS_4dtcIDl#Q<*;KQiv4NFsBWP`N6#$v#icHxJa%!UsCZo( z`6kHe)fHvuP+N{=M^z}ev(wF$>{&Df#ge}M5WD=urYkyo%ZgW9|0p;fCI_U4v;8}6 zDSfhA>yy|!`28k6-l*FNO=9{u-KAS*lc1duJU8LM(hw{+sA_yS#yKT5lW}cGOE3zO zKobTtY!h|edyWd4>oH?d6q;e~{JzWgJd-7B2BsRvE|-A-$Ja_)AB+|+5&e&A?}SpY zsFou?8ENR><@)q-=|9tvnWI7ARuQ&sh+lN7aZbPBPKB|O2G8X~4jPXOprb+;89P;% zk)x4Zs58XX)?MD})w3XnjuCV?0D)D|bcakC^Q?CjXZ7W1dE1Ex`XV-;DT|jt&~WDF z7dM)M+^LmtG)uz)96Ofyxnz#Ip;tl?Aii0NCimsdB$?zAjC6XAce7Je#W-|JNDOUs=|Ht z%8QY!WbkXPdgWzv!5eNQR^F*O|Mf|&EUGagx$@SVDQhjKCy@v3iDMa?b`aIPzT)@? z$dh~PA|5SaIQ6Kt=v|_>Z$ZLVriBrRRdlgh)nTQaj|SS3%{hFT^w`C+2^^ikKq6?l~{a1^92cd+B zo!IU>?%dlue6sFGcX*{oy)=3?NLrv+#;}T-J6(sR=_Cu;MOE1cjoP`6Zd`5-m2mWY zEgLDsIMa?!+FlW~JRDZasX{R)zJ__V!fNwYtz^%qmqy4R+RWwd=ag6`mK^kVFZ^Xm zt##Y?pMh0W#j@SeAIhATG87P7&K=Bm{H}?B2W}%;*TE}fgMR=xi&VB9kZ?rX|36WL z6B2eb5jR)a-k!U`?MgV1c+D&1zz6_B;NkpG$r9*sYFn+$54|gEyG5dT{%yxCKN_M` zJiS7>f`pDR1f^{A+)|V1=fPC3@p8UeBy!y@%pFY~WutE^S^K*)T;H{s$MsC~yh<}U zoJA4s*1Pjm+=mxZx>f|M`0kckyeoLizK0ODEaDpgBC^0o+P+gi{OQkF-Z3BIjmYhE z2X^x%p?n={=y(cHDy}`p*$u()o@cs#ngnC$M!C+Ho)^Sxf)K}mhO(ZyV)xzGL^mzn z`dBI;vho2m)F3Ml^QFfAb{-2y(-yCrd5blm$k<=H76R(uWp;Gx2nyc=H2{&2;b4R* zO#1paZu*7osL>gnD2^UH%A@m7U&k0R?Z}>|xDvz?SsHE~;{O`MUM6 zF;+~4O%&+Tf#ZaJ_=YxALNN%OZEcvQtg&90#p2VsqeedY;WAuK|E6= z;0q%~*!?`ZIJBK=W&656^aJwB89N2rOCnr}e0lZ4p1E(aQVX=lB`|DV8W%DKU=rJ1 zqs_Q`x3V=-3QAM~ZpIa7SNR05s}%V&m(tXIA(nBIclNO#KOGcJK?>jQr$4K;_6*i^ zT?{uDAW5k9jR};c zu0hFhgSFl;W#EqQkYDiNjkv6o|C%FB(5x=-i+}@tG^K4=Dpf6=eZYsfgN&)^N}yYx z=+a{?=dZ1k5TCTUp(SxAN1@id!@7DH8%XMcFdc_R1o+MkqjFthJL3ksJ)-%Xz^1Na z$KF~0hO7PQ^(g5>Qfb)HY8VVG zHvZ`k%-syH8}U0yajv>?WE;U%E*x`H_GQfANDQ>Q`GL-`>vu+f>CBtp(v5+hDs!^zirO8|JS3RXUZe z)QhkC`C>L73r_B$lPXG^0Fc`{Rt^tp`(JAZOwO{2`uCM%UW1a5Q5~dEH zoz~zxC-kz2U$82D5ll^+z-;*4SF|!33f8+jk>kZ#+nU}7q>!7dhD)v@v{)Fv77p+Y zyR-H#Gm0<7?7XV~^ZSR1z5kn2lp;Hm{THiV_tb%(YQj9vPu~Vd&;)mP{_Jz`?YrZr zv)m$3r7+VZrJ7n}iz%474!xsRpAfNFkMWHH7A-}1;Uy+yXSFeV%vF}g(?u=Yn@2UZ ze78Y%Sln6%I-wohlkUeI`DczLmgY1pRiQzEY(3>s4hrT-qf!9`EkKp}AOA^{2xAg- zKug&$#Fv!1CDJ&oZL~&~MwXG*`juJ5qq_cA?R8^Ne)bA74>jB0h=G`(E6V*{p9g)m z(+RMsurl?nAXi{vujfgk4~a20Fjmj&b0mxy(6{99w{i|yB~-fr*j`c_!`)=sFZdPU zLq&oX`U}SQO=<#I5e}@lenZ>3pYEQuB<=%2P*BEGLyG;8_d$o5R5er~CTIePppmt8 ziOH8Jm<0H!C^1<4%_9MPo&Ie9{c9b2@#3;1Y8`xv6!XCe005+CI*u+;VGWS;E7P5` zjg9@a#2JrM0%Y`gY;4MP1Tzh9KJuibq}HKX|%yq;~04Ebx$Y3TJ!gYNrR4UCFjv!~tv0?Ib5-4WLywSy828 ztbiDyIN1i$;u%}sw&-R>jzJQ|-SH~Yq_9ywn2%VgJ$5**9q+;Vu77|`oGIuZH)Km` z_NDtuc8*I-(z_OHY631z^5O1f?nGLYn;wupz}iOGHgCR_^czYEvF)tciX}s~e!~;) zG)WrP#1ay?^xfBS|0wY8JkQD%Imc|;x@GD9%XGBewjI34Q78Z|XO_u>^;T#R%gC)+%0XdrXV=jL;# z%SDP#b*?pHaJJZsyxY$cA13N@iyx>0UZz35@!My-FLc&0-PF|Cjo2d_-td z`q@1p{-w68l<#>zK3i;04(3b5Hf%5(SLPD|7;vi1-UQk16CI^Mns~7I*KW9g41ck{ z=iTN~F>f##vO}IJkVtC--c3?|-ik?!Ct#}eP!?3~vHK;bCN5Av-5wi6lEHbeb!H1# zU7;icw$ZU2v`K`uE!dMyTxiu+1LEzxOYmGq)~50xYvXL-xUhL#DvLH+P9chkX0WN- zRg`&@1GD)I8LLE-Pja>5F!=bD|22GrWUXv-EYm{B%HJ8?Va@0G`y4`u(nIY#rrG}} z4RX#8R2nckzC)H!UoO*iB`$@84pGD#;85K9&a%nYv^M0js9LcPOZE1#Dh}M#mL?(4 z&RRg{?cHM|r~Y}K^;v>*?Gcx0NJg8Z=QW60y6LudnKtGP5|D^YNDB z=I8btCG>J}hsdI$%zc}CUWv|sb!k(;3^=8e%Pke=Ax`8*sozV=nQM(xLX(dIWk@2^ z;0%@dp_UF+(;M4E;5UwJ!KY;=+Kql1 z3@4NSr0A2G&@IDdK3G0K=?h*F{(AHaLTU_ZUyBJ2#!-Nl^CGbbClp-MT z3D6*Fl=$lR(kl!5w)@8{JJtIxE5WFP!I7HzLz9IgkEG7QQck$R=S*cI)0J<`|$=F@!gF6HkCx*R3u zJ9}7e%f;F8y4zIt?T6W&KAeHH;O)nP2NmpM=yFe$bWf)NhKE3B9rn_sj!cs?rCXkP zaeKb&2CJ#7d8UOc?&wew-QPqp-Xz_uaxWTdvw_L@OxbLxGi6iDb{u@%6gtiCa^{xM z%|o5CXOs`&v{$NCON12*$basW9+8Wdv8Aw>CE>33)82^cKvT0@k6qIyqK@IIf7DHy zDGv-5ii#7@(hbqj?v=hFG`uKsE~Fp}7ny2RNiJCmEhWw5gOdCL@X5vMpU&nQ%ofmJ zNw!=LaZ80|T~(gfv)FeX*6w-l2EGM5@67S+Kvve0Q;ul*j=Wnl=ELoc-ZIrg`!O$Vxz}ut8D;A_^}DT_&aU zhJ7yZks5=oQw=N zZ|Qi0<+hqFTVruRdTE=6M?~mhl<9K$z`r{b;@R&AF&CF(qti`I^kl9BCg&oDuIhyn zipwXF7MNxxLzs*9DE9G8*acOp%x8Io!e)+5wimvA_1lRK^My6F^Vw2ZY!7u!I`FN` zdXskdt=X+J`bCul0AhF}39*%xTUJ8*%Z8;GxgmtF%sXqM0pm%8>;q7=nYBMy(k1-@ zCQ!F8LpmQ;K08%PGiR}v8C;{o?XTWx{8c>bEqjYqd0?s@9$xpgB1&>!Bn9d5Sl2ip zFk8{B?@m%z5PzB8YjB0)9_3EhC)t^)re=tD&qR_Jjf7fqlMCggY&eF3RtxH zXrMgr&5wW!Xw~1?3+pd$S+_GxtOcP7Wl9z#;^3`M<}^k+l)# zSgcbO`>Q#fnWo|dlTwR60|<@I93*)_V`HmW6I?@9aTV3ZEwd|xH!J@8IAXKrz{i>m zL8{`{#Cgb`@uB9}N!0-bMv-f7xbW-kX*DmZ=0SrhO#H95fdBrF>xwphMOsDG|H0K~ z83el^mXRfE?-B{&(Jy=?q*b4gHroGM4#V?ic_TSfd*vPA#Ud^v??#Wq#);5S?TxnvOje-;=%3UA*o2m zaPP&_-q9-XzX2E}Yz?}v%t8b$x2i0Pr3zG$sC&)2M1y}i%WQh85*B)jG9b|zO=78Y z{-;tHr9@UPDIMGH6aS&GF>cqg(X*a`gJVkWu#|Da7Rat%;;XE_>`lJr5Hox_sjDGK z$x1B0Cj~3x_#y(uBlk&@n>=fM`CNlA=e?u6CDo#knWyIJU1gzg9_q`=#Opt&@p5{G zUO#D#4$jK2F8S%l80F(kd zy0g~5(_zZ(TywM)gj6CYJ-7ePu-htZ!6~K$yMzwp$Ch2y-$P^?6E}0ex2-SMvGnyWx;Cx%*p)y##hnq1E5^I^lQCI|`uR~n@ zO_RoMIMo?xSFNBd|GEHe&x@$jsrddZ*pTjg!r@cH@2dxQo!G(Hf?|?R@dy9TC8%$2 zy4$JCmX*25<;U7-U;yVS4rfeA8$Asl+mhX_+SF}69WVc0sI znt)VqpDq5wo&@_@4trubwfo8_T-yL&Fe7p==F8JfBi5_6g>9pZa=)}A{)DdxC+at$ z|2QIdC2j%Pg9dLw8!w)OD<137XSXq?{S{Fl4>I7AMTspm@x^@uV!Mw z8`gIi3LCgeGqLHTjY!ZnxJkydK@h%ASDgh9yhHeS;}R8^9*GH_=OK6zw3cRRPR!7@ zfY85%se$+khl$~Z^g^(Vxxd8wq0BGuE9{G3RrWgGbDY>j{ksbDCgO? z^Cj5-;sN?el5RNbM6Dax7-IRetz`*1h*7bdwm~fX`SZq-mo?3df5No@+)ro{( zM)rmtJ_+gBQ6O#pPQ`>J{X}j-DeL4#KSyx?fP6uTt71swZiC$rlri<~tvlu3(Z2S1eRnl>NIZWsm$S_z%@xV%nourR#S?T&6o}wlf z;P|J)UgYICF_&UxRJpvKg0Jro&XT}#U1INt|v-zc>Y}rjW;3fow2z` z^&95;mqpGv<_Qzbu_P=3@($oiDcEZQAg-tK-7~z{y;4R60AacOshE&O?<#sJrtCT2 zqM4+8={{zyT!|(_-V2VXI)#-jkM5@Go;W8-BBSHMVzv}~h9($}-=gLCPgpMrz<9o= z#0IGmPJZf9(%zYs^1t*Kv`qkeS@_Lj8)2Ud=XzbR?*6rL%x$Q)b+*4n>)2|O`2rpe zqL%IDK5-E7as+fj_7u4XH9e~w7wKM_jk$z%?fq<1jUj<4HSa434$+P zt0Wp!(^gw})KU&ubO&cav+dtK=F|(0vt-f<(qKt5+kRClPR{|5hSiwut4`HD`GvP1 z`3^;=F$yvf*5|PDfm?Y-DmEHgHt>z;@K*zlQ_5Atbw9MUf}rtFy9V%{ zEqxFwW>{O5_mZO#^K!?{N!fzdJ?r5%)X;4?UML$#v0#~jkxNZ5JPaN0!+KyiRX=0t z$

    2. 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 z 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 diff --git a/app/videos/recovery-phrase.mp4 b/app/videos/recovery-phrase.mp4 deleted file mode 100644 index 24cb68956b94fb32eaa2f840e1c9a51be3b2c7bc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1992670 zcmaI6b9`h^&@Vi(tUZX=-Kyst|DidfJ+qyAZQ7GqW+UGPAORn3gUsKprM0cXxM2 zH!D*!2U{b1Mh7PgrvI!kTDsWTf@B;fq&OF2>M#e@ad@RIHX6Afs#HMD(whksX zd@MZ7Jj}#K_C~gz&Sref9&9|!9xNIEYOwogD0p3_z+Z#4b)|wzgKzAd1U_%hbdL zM3^|*@iBwCU}Wm$U~k69%0kb=LTqm2>|y|Pwy^^KC-Hw9a0D7Sn43GBx$rTt61!MB zfiyr3u@c)lIM^6jg6<6dm&r=(Y-?o#>dgN#n2GJ3{>O-km7S5xe;u*1cQJFaH3A8N z_{O%bPDY*vCJuH$BNx!U2`EM`PDWPtpe8_qPDcO9m^&HSnK^@^Wo!WS1kqNee5@ea z$kYhR!xu(Pt~V`U?DHZij|GjVm{`@#HQH=T_Bi>Z^Dvn5E~$;9CQbN9b`ClfwappmmP zv7Ip}wEsC~Yz5K)xyZ>*{9ozfVEf+?5j+0p93L|y2Z#jzXXt-QBM&|fZV+xSK_*g*$O6>SQBr_vBu@w+BnxM=9wFI(hSG7s;9y(Zr0{V9(`ncT=a$C9AvrxRimV|0O7b0|;~3t`w?4yw16 z^IZR3Z7<~%@Cd-=BGc3N_El{&J0u1RKFaI}#;>62yvT(!Si$z>Op%)9BoNAnH^TR|4ar)!MZsssk)i=`#Nw9Mg%<5L(v z{=ShNVkDTG=ggjq7tqH2)vkrYKE$B%q+OwfgJ=0HQD#!c*MP0!OetS^1MkB1mr7Z| zptUVM)o_d-YID?9WGeBTJ#8NwaXx5nDLdX^`dnr;x81W-_0b+_+rm#^E{#iFvCl=ijQ;a{( zZ`UIyz97L0LO@CR{Zuw)Ri`Ewl`m?4dCL7{h>%Ld0Ld*Q9Q6^(^l06t?<#4^`uiH9 z{ULWMPfEyn2%C~zMmoD4At@Q9PkRm#GYs#d_66bECa5JjZmm-C1TFS$qF_Ajeetqv z&`x4y1_I$^wFO_Sy6R<}Oi>9AY0Z!1eaV_p0T&~=o}f8m#{(H3bIR3w?5oX4mO*Cb zd;G9ci8kU1UQa_B(VIT6rjA%J#Mt)H@~7q%ADO6!8_9}yf-*!fkT=Y72yJtitnCZP zDw00s^~7g6s})uYRexppu3Z~QDSGP3jBx0U(p(mXd<0|IOMy|=$ZHq!4Xk2Wo_Egh zBwYP3w*kJCvo)uP+Fjm{A9OENh;RmMuT0Vsx9Mg6dwX|#t?-)53~JnPI~m;Zl2H{+ zH)HO>Q)k3l0q-2+^hhcskbfexf>1jTOSROWW5OF@_kwiSO6-0!+dum?X<)NBTeRsUXkA_+5;-Ki>C~VJw zs@gw(SOk+3H~OdqFYhr}fPPlsZSL%~*`I$6IE)>!{zYwH|0MV5(OFPD@YSDzutA0S z6Wr+;ahWqToqk_em&~f@C63j30pP7^kN^Ds^tF@22UVm^&3v)k&|ruz##-L+0zn+I z7yR+z?2sg5K%b>VU<==@bpgam%$_-{}+t6x`?X{?}2>&kz1re zPPWK^LyA&ye^giU9}9#A^Hl0zf5odWODhrb##~NW;3*TQK}b3PhT{3?BOOaCK8ZJ> z=p)&e&0gIbFYw#zjP}KsT`VQXpo%jc6$1+p){OoZ07X*q;{=_!p|xe)3x4xa+v12! zMBU6~guHLF)GK(`TS8p30j$1B$2Nsv60p)k9#O(Wk&!;ZK`9|lyoHe zGgMfwmLl{1o0Q1xWQ+4U0QJlIO1!ql!bF!cV*<|G?%x064cZ|a#df?h#K?49Vwc^b zUqNlddP_%w=Iix*?^ggC7CmsFc$iQ>cHu#1U}dlkda&#fM+VA(7mIeP!~8hwRyJo( zr|p~IZvb?hK6Jvtwxij@friy7avM z8_<+TgX3Bis7mjDy`I=}C6{MxJU3?_Rc_78NLE!}&<^$W3Ts#I8QlCHf963ork|ih zr?}i=Hdz~-`F-_Iy>~p1H34>nA-&1gvlx72EP;;w5C9nwNudV)m#WCmZS93bmiJ@Q z>D*{pl4nQ303%LiE zLUw)17pWz-aF;A0Ao1)(1{c6ULV^}yvm=A?2?ka7P&R1-uG#(-_>~XX0qOq#d`NH< zz~a9Qm<;g{K02O$znyz7x8Lkf%=oIBJN6Ny>zPq%hg=>1J~_j{ocHjd;hvY8s+aG2 z?*kyw3yVrA5`|Ero6(~VW3ocPjO#&@FyIqkJ{sCmg%(O$ktpxNl^hJ3D*XE$p#23w zIQTJoxBKBR(wp(AAo%PAG)juVcau|;8j2JPc?JM5RKbA*fvqBx<=m@((On&M{>YJF za_#KGvQ~j(1d?aZU$E_byG2r@A_%^;epn=|Zztm7KTI+v-5{n6YA_QbOYqI;AR>uDvL4#_--G;Q2W;Ne7DaPY*+mCQTQH|GDhEE+yMeIg44tHptRZISSRm#b0( zvKuX(cK`r<$70fP5@IjZ9RM`+8VZDKdIfm9-Mmas%6F~|wzit3iHaGMQU$DH_(cNC z3f+)wBa^0gAm4bo2EKz6tp)=XCf6q%lxQLN&VKRiUBeHOe)!3d$=W6j06r)|j)gKs zq;_FNNUl*O1cl(hF}}hcfOPf=# z-Vv>uGhJ*9krz#aA)T{~vS7WQxgpxt98RKm>@?oUGr5+;c1QW8T@)Xd!yBUzt-AzEQbicS(P_h-NWl4tA$$Z>M+2AX5iY&vL@BrgL;2!z6k#V2>eTMdyBr|@B z!u_zOLDm*;vl4ST;5O#$zvYyJyL{q<{BW-cRKV{aWWHN{_ICI zU)I#M8}5H*&)e~Y%546S>ICtWFCouy0dVoVa48-Urn^BRzPP`+ev(}a%>qB;^1XrW z7DO5|;@E6|2ciYhezzS>=D8f~>2h2~m>h!|yZZ1~JP+A5_^wyF%7wu=#9^BrC zsG=YnOhi0=RCI!A$F_Ns2pF;qzx#UV+K({A=#uY#cQDI7S?bX}Ct}D8C@`59&lS2n zR35Ne@m#J>i6;u?lqb9JRTr&H8<+)W{S7URCP>){#(rNn!~m$h1GGW7F|Eo6iN%pu&{N1)Rp}L@OgJ zPy_r`kU@_CxKO5<)Gi983e-=kuW*$`+E0hgo$usCb^R!ZE0gA!GauL(*-t|niy6#)gRlG^2NvXpM+s>FCLT}46h?o_GFy%~%4YANgAg%Mi;rPLD50Wih#a2|5-Eo{!$5Y(Y2 z^BMY9<+>J7$rm|eWMjgRCQ~eyX&V9*CW@rLRw19`tF&+3l~3Y(1O12&f^pE^TNdjJWS+%7oee&>6 z>mYu90a)fx{ke$$9mRJ;`0_m;&Trj*>}_9Jl@A4nHX$#!Jtr>gybS-yC``o+W}BjY z!z4-lG$BS0sHbYbe(pq`OiFUo67x5=GDk>aC!}qM5n6%JBrHHJ$U@34caVqYxM3mh zKTS0VHz{N~>L4uJ2yO$kfz9#dP?-aw(CkMZ_gigP9?NXFfuRWAAv9v@jwWw4Wch(o zS=m^RyKdV~)cIv84nA_fkeKGXb>GM{vsDP;wc19Vybb2|`;sE7>9&ZQRP$B%!p8NE z*s6vDY&}YcdAIuB(n3^J-DnTBEYjSp#wH5Q z!>Oac$K}ZVxA`Y;b6LI4Dx;Kq=sT^j)o@+#a+T6#!2F#C{uEz5zMbd*7N>RC-oy5#99qwAbryd;ZXF(#&%zLvIQn!fMunkktDl~U1RE7(hEJh zYi=KmoHcY#0r}R+-pjzPJ^BIwD+NYMujsH<*+P@Ri0>JltonFw`4ZSzP9ZhOR65Sa za@Yz@=P?j&q4qLHloi6Ym`c7q=Ao*uiQq8bgF z=4B*V{=N|J;g@1|h*H2!#8di4W0e{&>uB8W)?_tUdsaQ*P089?2(RTNp{->%uy%qQ z-p`93BM!d>$F;^*?6%s4AV5lFZ{?s1DO_wdr4U&x1POe=9MZv~IB|cuKkfEaG>?Db z7P$*gX|*OO{Tqoczayh812~CO7}Fe6#i%TtXdp|X>?A1{ff8QdZZ&dXJM1a-^@g?k zf)hde=T(q(9T-V|ZFAd{uixASe_x#&@6GZ$P7lu8%btCwnsOO>>-+*s#(B}13t?iD zmgLOj4?(=pEY=j*4K1dR`UnQ;2`Gr$UzMjHE(!i5=e1~*MO%w3}Y6u~-SbTbw zvy%a#FKUP~H$vcKp~7Y2FCGm^`1I?*h&3$h;xS607+fvcF3nlm$U`j_|DRrGb9GA! z-dOU^+ly}9YS{f2%}Y+JbM3X%TI7!f4SK^ zX0JKFC6B#w<7GJcwPIgFjKB<`j%j#C1;MS5cmL|+U)C`#IvGH%-UH zHCc00M<6!ek6P+Df{h=YsO{jN@;-S~mj*E7HCy2xGicC?`~0&NUN;+Zt`mQG`(YmF zerZn{$j@EgnDO+D`?ub})Gor7_KZMS$M^b6~3t3r&7+LJN1)vN8%mtU7uqYmZZ! zTZe_l$j{dRbGM!|T!6l%T>H8)iq{Q1)-4zc1azQNf=R~hV@Cl&ezxw3?643#tH#RY z|8}C{Bo@>Mm{fr=18&iWkwB!$Hn9i{&q8BKNOKwWG<5Q)(Ng7Hoxd)c@Lk_6a#D5? zp>Y#GBZUR9=00mfX zh_(0^KoeXw1B?gEe)g80%s-%t{zkE6>KX7Ef8ll+0Le#!8@J-$O?=N`O5FlgC}gP^ z#F;%Kz`y!9IWMQ);X2iNkybIpC-;-eQVk7^7~h-g ziO)@#wD(dWV#68{3$9wnIql2cclDm1N%u7eiZS|1(ft)e(|2B7SKw%F{V_U+pJi28 z2j0Y&XUcbL=QA{_Ook-HC9qMj&a>%?JeV}Uj@f4Va%OBhr7Bn0;%u+3_RengtigEe zpwV9+jwcSOW4QPVt7L+BfN`T$;G&$V(b&g4E*mrO2yB>oyA^*SUGUBvx4uhxbk;Iz z@hX|6pK1U33#(ZqXk=be`)?Pn{h3;AX!cbLPX3~VZGJKKUyva(3GNJ=x0AptoYc3u zLe!H`JNt~+SN%30^E#$n7;m%RB|mm>7%hwlCtiG!KQ!2?UA-#J!F4IMCi~r7lT_ln zhGzPcX>8Ov_!$kN&mV&KU2kQUXLggf2+~oDn?INnfCvxF*s_kA#57wYh@OY1;&MpteIpmp9yOl2 z0H%Z$#3dDmmck}$^L^IW5<&m~dR8biLI$*-7?-67cSQi?0ph>5n-b9f7did6#fL!i zHq-C{5AG8@Y6L*y8Fm2yfN$h7l}a1F__tkn^)a}A#14}fklEFM$0qDadS#RofYLn~=`0OKf zKh4qIrSMvMj3hM~_+P1s`6UTgmG89eh$8J0&X6a$GcXZ&1tLa*NNcwfeu(a@ZSk?@OM~(Z$y>-(BSz1d_4to?63G0UWS3XxNqr(Kwz$t)vxsPZw z*|4wHZzj1j+Qj)h>(gErQzaF-YN4W~G^i1=A@LsL3n@w`Flmi=8A1B%8m779pue;L zPv2z^VGn;H-g`!zim@V4CobM3$hVLqW+tPz=r(3=sxBIgdHs71J@i{zH-;*aATHjw zZ`&8%h0ti9_U9xJWs%Sud!m`iq2)IH4Do>B1BBn_MJ*k?`*DQ1NQsoMt|69#RgI4+);#$asnK~G8oFDB4?0(f=8g?`OZpZx77iOEaI=YWu``)q}z4ntE}Pt0l*g zOFK`+^#6YHD$tZXjGG|8rj!$~CZ?WTbTrv!ZO6VM<_3>LtJJmP{z%zVnQ@o^E0{Me z>8GP&+weCm9_Hk(&S?4VSeMu`043Zt7;KVh5N#q}BOW5K%b*V)!>ygFW3%Wog{rck zPLkckm1xnM|96SyaTh1_=coO_rLc)mXfj`s!w7zl(k*;{seVyW_=PMffcl)sI)>}m zBTBasz|7cduiOOp{-_kG0UP(ipbw9lj`<=}3vsil7!hgnw%cm7Qh8E*-Z_{KV`i1{ zAm|$yl}v4w5J0qUVu>wkUXW=X*Pj&-ky5|H%=Cl_9j1iz6_kPlPW%!WLO-OAR8W!3 zuZOQCC1mR~PGHK93AFfnAc3lEw*tGV;SqZd7)~tPp|(h*PVXZ=DSNEO<1wsJD+x@1 zY@@9?Vg=g!w5^+@iP3x+_gqOwLYdguP9&799a7s}<6q8XABYS$6>UdeaW14c#h@gl z89AE4jNkNBH0w3lTaVkjJ$E~*Qn0+8O6C!)8klLv)r1G0j=)k2@ZV_CE;^IV8y8sXr_1R zx{NB9zWtbHYJ~69VHGoJVjQ|rdQO6ko=ZAtKJ7!Z?cuZ6@7)R;j|TgQ74h|j3oG19 z|83(Z@o}F86JKTDq}ul|zuk|JG-oe}JR~Y0ajKlWOo%M_OyvV3M<5@Sdy7faCGjKx zOb)o&#DT(YWlkp=^V-|WUO3+ol6Sp_wB!2Mk{)*Ddk0owY5A3lUL--JidMi=RtV+4 zug+xoi@adtRXP{Sx;axHhe!cfLbIHz&};8Z0%qHK{M(eKp*)7s5&YY1JbVRmw12Fv z6*Dn?s_r%+@q%ywaz)yg-&md;R!YbA&T?mEM+!G@$S+7kA?|e)6}?WA$3@eU-N^kJ zL(02dq*ZjhAmmbZFyInrIOnTd3a^53bG%Uy;i98TkjG|jBop{IL8PaCJo<^YM~$EO z59?9T9R1brbw#i-vIQ`PbBEL}BP~a?0|ZRtf8&snO4HO*)+m>_37S93(f>{RN@6zq zz+a(>Vzn1AI5QjB;FO0UJHAnh_c@UKv3oL+RR0In^;9S2+kZDm%VoCs>$=4jXES0b zmVNVjiR!RNrPSj}d^!GoK$Db_`gWaqZLf$YGv>SS{LbL&GFBWs6!YYg&%Ult>m~%n zm-CWP7i-CCz13qP-k-GT*#SP%Hlml64s*;7W3UE2tw6%f9VrH&>URmaE zfbH?9ZA`bu(~hV>W&nF9nrPHo4EqjX{lGmj0m2sm7x2u}7u>~;0D#)ThaE2%T(|-N zD8a405DPqML2D7%P^J%E5-O}J0ATcLN3v7vE5rlKr6T?4?1#46q!Sg`6s8YRm#YwY%ST`o}S+QFUC>qR6Bxgp5AL&5wWxCNLDS) zC0aQB`p_^_##Z^l1ohC6n}lx6OuRZn{WT0=*NxRjyPNq;g_Cw_j#IS1hR!ydF2Ub= zfVM_0F7X`u3c`2#tKddvn;aK}MQv8>kl+FmI6QTY+~eR5SWR zQ=FyD72j7*DYew95;XNGPQCtygV0K7(*e?}GS)9>`PuYlVFuWO%RkOsoeO^JI%*mO zA5(Ny9ol;RzQ2is+5{c|nekw~Wf0$q6Z+3+tMelUYz1j#VTt!As!&#G(i;BNI^N&S`FL|lGWtAPS;u^xy64Ea0)+V4<8YRl&Hf-B<~gBef%~b4+p;GYXQ$hUS>5*c zQ+LCJ_}Q?Yj(tsH+gzfV* zE9ElI3wPV$L&ZgUyJb0&r+ZY^*nBjL^xKQI!Ou~CoVmqju|SsGzZ&E$^e^kxfku@wJ&|OcURYj|C6`a(aF)(S+Kmu zujfW!Y;L{v=umc{&dYfrH?(iN&|`7)p4a_X>51;kqMn1xc&*MxrM+lv@z}{1Uj5zC zqcV$j<7|nAa)VCTOJh*9>w0Q}{~rtL31N}hNEdPvy!Al~!q+`d_tChvUgR%~zfV@9 zl}7GHfQF@Yd29mlxyUcWI~nDOYI#xx}@xf-k;O!f`)li}NMKeP(v?f7-hNy(JBTvzD5ry@b@2 z?lj8~*H0zJ6%kavpRUX9mDHPduuL`GCQny1xUqsood{rExII;`%0xT_j@Iacgmon-)G8dJX za3D?ZsQPUF9yT28*K31;d}t6m(ry|KbDNwRNg|-s^_*eKl&rWEWm9VXD6XeIIslYD zs$jWepsf&z%iZ{69I}*cJNZDgAe&%X7YjjdPNr@3+1fc6Rt9Mx)F7Q4dg%GwHMnkJ zt$E08-07m)$Et#IP_cbG>lN)cW%1>VaS{~BE!@-LdQkLk`jpIGsX@^rnN61rGIL+? zb=>N@`{}KL)3MbQ@7{DZ`o5g=P#QSInnp-zQBa&LG2>cNgRAwS@4vC$au704MnLs_ z$iiYA@}bXH<1hEV6LYVWFsr@za|o4DbF7$KKP}MCCRLLiPTPj^p>h z3E&7;IiF8OzFe#Obs#>oNgcyfuBGe5t$%UL-w{q#<*Z86uxH`dSNiMdV)5_BdCcUU zKVNM$peqetC;kc6?sQ<29p*^1njR0n|5~UPs}i<6`AjTgO<`0iO%I{;_L|r69Lrq! zssDVeQ%kea==o=l9l*H~yri4@7u{+l-U>p%VC_%z^ECPt50<|n&(WOth z3bde7gbWO%4E|JEUQ+vjV5C0c#LHZ zMiNX-{dD4T|CJ4E(;2CzmE}Jfc1Vq}-crQ2n%vRfK>s)Eznzv;-)(xaBHBH#g1cnx zYR69*a%L%wjvryRYVolQwdD7cS%uWx&-Vam#RnZ#D0ze>SDM1|LL_91O}n?6gs6kT zds#i+4}}LQ!~vDEn5WerSMnWH^Wo8UhuFy&Tu`(0Y_fCd?Gp)BB9??DOOyp7Shy{7 zoR`-cxh=}pbOwWdnY;a?hReqL=?}3wZ`W3cSM~Lsvf8Ji(iFB5S+y6x)KBxsZn$KOA+hBlo7jWy(@eLV`>)@wS3gt0|oL zmgL2FO04~zH(Agvj>8$ON>?DG5BtK%sASNDcY*;6P*+Xk+x$xxKE_ zYb%k^h{|iKDZe(wLxhWnFAabQyU7zMdbK08$5~%^3Grpc%}^}RB26a`&o-lMsmTAl zyUCp?tWY_2x(K5`yGT@cl>LEPBR@>tPvc`7LMx&prN!liavW=`14(shr#*IID%5x% z>>k;r>^LB`9f+o{$Pi?Z&zTyrZ@2sAu8R4q?Qee|oY(H44S_8K#Lt*J7W2frY~<$m zmD9tOrb!^2iT=FN^+1>E!Dn;eKf6~CeYHvBCc@cz9Q9%Wh--m=SzZNWK0IfeIVU2p zC9ZK628X4XgVU!D!-ZGcx=++(l}Lg$#|`AZ24Ds*3~{h@>~H>`R$=GaP70=KQaRY$ z9O(u8jm>Ouj;JXlKhYu_sIXO2GegH(1D=Oc2UIIsb;sr*RuuWN_#Ap7xbuCgwt0VW zUpTfPJb&J3-toD1B+PS?`sQqMgpLT4>%wZb!-C zl1C*Qls{@Ui(?Qu$Q%t|4Jj5rr+r`9JGlXheB-(bG$X^1V27_yUoJm}#Q%LQ_1Vn7 z(Tq@Wkl3?oV*R-&wMxRx8aXXc$ETr_{qJmwX%Y3!@LT*uMmW8HzI&9}t<~yINx}f$ zYDn3SrZsri{O7IOT=cegqko0evg%%I*J)@pyedV~t6ICG?8YvEe)*eQJq6C*b#9`@ zK_SzCoP?vCGcq3TN|Ev7Bc|;Uf$n54FQOcnYV*Jp#O~MOlm>2{)H?aa7GL;J6x|)F z7%6rpGtr6u6`O{0b>b0X%4Rph=#-~op#U4s=K_!Y1S^k`3X-aLfXq&(?GnPSAKzg3 z7EFCH^c?)*@gI?UlYr5AY3(umEeU_)?~$`VS7gi{3DDOWU_kgaN!~-^HB_-nRCEq* z)90-1dAsfKVl4Hg@8?Zh@?*`zJflpYqvo^wvp*vjqvlX8BXIR3rK5JSXUOM_E!62% zV!9(!;xnk|R1O}%4EC(; zqnRRQZUd4aaSQ(j@ug>;2`cKyakACS06kqpMlD@P&{j8}; zn)^^SYD-pIJZD*p$V#apQUzFiH@cqH$NqjEH3mOTH+$JMlvg}UYXP|kC>ygQE^NQ% zJvuf2{p_ga*NgsfD#W8Y>mvhUh15U_Tu+Vhp)PIdM{T?88bcAyg>|{~C-UCyso@=^ zQQP`nfE?lX$cB!-S27DaafLY)%De;}sR<{C_bY(Kg8hV6gx&5#F`EWMrm6toQ{j}k zPT(t00^rq|ge0fcDzWMS3ZB00HXb@3@m^wm zYz~k%)o^@Z_~UP_TOUt$DmI)aP{}f%$cMFZQ}W3j>qn35%pzmvJtWnQvq(%pGtRhM zzDy&Se1{B$D&ggH{FY)D+k*<8?0pRsfu)Fr>2OqSOsW_%m+x-?&uY{ruB+ZZa37Rvikn&4U~+@wQ`)$U|n~~Phy!mRkCDKeaY8ft~C39Q&fIU#~X}F zvH*zKl{E=JBUv8vFZ%omUx9|VXIWiP;TFGaNNZ^~U=$ipJ>jQ*S`Q5n0~T>v1W!Ck zkAA}HI~)mvXADej*f2@wh3{11Rh4Fh(t@jOjD5ex&4hr>kqa5f}>R`#LI1 z@?9#%)bF*KkA1a>L)n4dj~SPPVGss@T`@eDL(ApWQ>Q>MBEqvB z6C9n@sHS@-uhJUEYE{CS!dmGLEA?8lTPX zq_CuSj-zN0m`riJau0m_%u&@hT=&#l%J{01CC8u_aEqp^kKusUDa2Q-38 z*}c@&$J@&=daMl~t@r>utqkMfk)7bRaAo(SZZ@<~wO2y+`8AqWNgr? z>_)k3TF+mX2?-yh{R_Q;Fz9>-0{9A7)lS>enMaU zt`)bg96Vu?&hhX_nqZdecfV5dT51a!>O0Nak0Fuosb0)1PHBuh@s$=2F)I#NIETQNkvS)*T_mB4 z-ePyh;;{CFIxOd)z{`GRPN5>3JSJ!1f#TaJ>mIpn4nZHH?XF0{`s-}$CnWT8UApVS zVas*>j@B`b*YP)-+k(9czMn!)bMroWHbXJ`Wp+gLZ3;)X2CPi~PPBCr z{HAdNI;7noS`EBhwEw}pxHNoe&=nla0*$tLEiubG2yu=gf;%#|EELNmj-G7%%Rk4V zX!yva`kLHX```%sUku%;Ey=|*X{01M$iECwaO@ zc;}HcDUT+v%xy)yQ&C7pzW@Mt!lW-$3KVA#8DSzc-NU!Rlkn{qfvLA<;8h7}$X;*j zt}WL%*qd?c(+$&C4AK9$^=P=5j>7dd#Gc2#+fQuQGHI0pIQ4b>kjZq zJM-hv#rG)6)3PY;*sc|HlM((GFG&jZQ*=*JE!xf^I5|F<9s-V*(1is(btv*6oR-Sd zP@z(K{-)d`(!Mj!14V}-ma5+6iLqEYV(kGrpN>YM4k+#dJmZ9NXXMcpIi_G{JJLjaGMWIqo{)OD=QilVaX5Z)* zc5uxddLB1O=-jYEh-nv~FTYJq)S@@yHE%J!Ep3#0ycG+eH4Nc*kbW|SO6(JgxxlI0 z=1k#YC)`6YfMXQlC54=j3qbJ{RSNW8Cc}xK$5;Ka!TNMTP3(vGAW^YMfKQG+2wkSu zJB>KhJxuTX@-OO#yEDqT)Ne~PZikamO*O8M(^6La#2r{el~bfBN&d9Aq8Y7M@b_d( zPlb`j3*9aoUvwUw%>A0MviN7Lmd24$Om#i*&PCEdqG4NZGK%l?&$IdD9qR{!Y>(zH zOKx%gn~?UM3=`9LgT-^}RCdBb z7vA^C8>g z=6z3|d)}+ZWF|a)X-ez_;Yhx3*W-s;Gm?9xgzvV$SO-7K;rWAKb1@DhW+a&$ze;e} zdfYUubT;%&qo8v^NP0UsZ&DX>vFWl^`s-jfRVB9cPY!gtZgH3Y5b2at#1L&e^Nc7d ziKS>J8phK{OY@$G@2%RFvwKo(H&f`gdezy$AI0$ASR|}uL08rhzK?YpT#NWi@9UT$ zn975`bAz{)R#b?&&}s<=?ci?X9B@^@|Fywy*e zdOTOvrQ9{)&wg;T45;6K{jPKdV8Q;G+PpDf&bx6IUSa7IkkCNM*Zj7*8v5R{+2IR* zunGtma1ZjT+qURc|7DEqY|Ly3tEuweo4n;hc?e=ZWEIN#2u&=CX3r74{=xsZS=Z;E zaCc%oPV^>d!bbs{-r!ALl`&y7;v9R9p(*=ErK7n=GtbWkCj4Dc%1NkD(UPko2y(8# z0r0(#Flv&r6VfA`47_lCL`U>^q^8Kd^yIX1n{@P+lW}JQLlKZz!v~?cglKV5%%~R} z698Y*riqL$X1T1ToF+plk0BaytX(+S|L#qx^~tQu-f^wwNeFs7aO%(xYxmVna!8m= z$Wr$B#}dDQeQ!AO>r?GVX|B6xjiZbd;9KBle42Tm%r9XKWkxPXF&(|e$92vssv8cO z`o>Z3LNx_q6n&=f^Sc#CN7)|jc*PgS9m+y>3M2RohmwlLwUVsL`1I!IPu49wnj-be zzi&R@T!>jnBPm)bX{KM%kVB-3Nnod~Y8=*=9Os65?9UwtIo&f)nL-k{oMhfUr!I*A zlgW|=MI-G6)k2IjW%lwP1?KsH=C?OKo`yJxzaN}xgEo1!TlJn=;4v5340>wA1XpOh zm>MAeW^g}U@LxHYXM}@iqjVp;@3K979dzIA%i`nQ-JZ{x!m7C9h+#1p4(00@f7R?t z(rMArw0QY>bDid_BY&lBl(o(g64yh=Va_{GpQ+VUb5J)={ZR}S3OSsoPGfz*@G?SKmH zt)k(e8W1^gzx`U*VD3#$Vs`3BM@6K%M1E$LvA)E87d^Y};X3 zYxPpi(8`yT!BNfe&%-pGtt!{=9(PMxH4{15oZ}^%mHFZf_tCSbQBz<>O;?NOPy_^# zukV+FLo~pmK#9-=3FluAN{w5F|I#_W`XT!I6Tr};bNp+~Nk(JepytizowUd#_+jF* zdC#gHEL@=RupU776RAc;`xHR~&J-wz2m?wSAXpx~wZfNoifQs)J*xn6{(sX|m)F$3 zt+GeMK^Wc)^3Brtu)KsTmh|J3s-5bE;IKE_6TvOQ-Cywlgc{eezM^&Z{#>ibA)@BP z6oW3FhWy`idDy+wdo9~T%XVRgtTHfGv`e`1?4l6%*Cp_~p!oh?VIO!Er{0As5Q5XW zid$L9)8q4$n$c(XUb1NNCFE2-R|lI#dD$$}pdQ<8RS}hm`Wd!Wv+hzb7C#DSRyf(v zB3%^}+6`l%bbFZ8dif#z4lk!#PUAruIAoh+hhJK$C(B3t#$DzN=?K5Lj9N_7A4*# z92a!f9laDzealq`NhwXR_kr!_sz*XC9u}g>_iM@B&~LpuQ^)?l z_4ukGsD4sMP-FZ?7=0Z|)PBR~aEpIyqeRGSh|O>DykqjiGg_iiZP4zgV0~JX-qf}& zL+g+0MB@*U?9+8;suhq};bWh4zC3drV`6N4=;7k3H_jiqKe5^6TqRA3Y?qYih6A=)q z+{va401%g^COi1^UlOLkx7oqqVh6*g*HG1i@iU+OBa*s>wvl-vP1F`Jr%#!_sJ+X2pYE(IxN3dODhxOopPP36<&z<82HU0uvyAD+mFR*^rOo4khIJ<-kU}1~ULXJs8_RtStj;ZOdS1QP8Qe430HUz^=G6rpM-{tIv3^&scy!-j?MO2hk|hhWdYE=b>3ilk$`tn;%r7I zjs6(_-Uo=Oaau2OiCVc#2yRAGhRuD6reFh(no36+yTbAK8xv6icK=Z(Tx%lAE^bOIxr4JvW8b=@VbW_zr}h!W?cPuR8>pl?-S7#`SNp02-$EeG!R^x@S|FgMW@ZF6Bb=*zZpXh^*Tj&D)PS0Q8Yb1) zvi@EV`YGBW8Y#E_J01h^?(d$J;;;F;qgZL571@3wrIoepPir>6m4BXMQm(5@&r7hw zi~)QDK?Mhn0$aUMuT}3rHoKB4WMI7!BhuW+!XM;JSkxnH+aaX1(LZ3#JcuMde+=e! zskT#U7XDt1`0+~mDZ7!i=0LL5;4DH{gaZ4!XH5d zk{xgK$p;|{l}t~=2d6O(yQJTgFFH-CCozfb?TC&6bv(9*WK7~hH(JMPUc%t`Pi z_0QDb4l`Ip0#*mE`mEj01y>ti7ScPl_CEPaZh`>U4q{0PpP6~Hxcu%?zLSLc` zEiZ&YrTVZ2894@C6wPy%`GHFQ*ws~+q=8Z}9nIS0y-IbJU?%MyW2;?qKSvEbcj2bU z2??E~2Wm_0*eWRa4TDw{f!ORzOmoe{0=3e?BJW#Y??Nv`G^s5q!PC6S1#&l|3&B2p z%sP5toHb>Ztt#}P8vZsc*s!A@LcDRhL8vzAQWfUj-EbD0LQu^DKvfc^@N-Bca%ycJ zB~q?;zjUnHme>FsI63$Xp>opOXjtj%c!GRws|Otw2*R1w6uvdD zB_JF|`rld(`ZxUPgYtEmy_frZW#s+M{ixg5ZXY9#T}B3q&EG)O@pxz7XF*=OvZuII z>W${dP&2WBVQFoT(*ZVa3>`Hh(xO-NMD!EOmj$>Gz(Owf6q5uUwMgm`{k)Rm>f0@y z*Aln*D;i};2$|!adM_XEhsS50JJx>O`$~LG!R~0vNJ&5`BZ}SQ>*R#PQ`Q{C+R|mP z7d8~bOow9I!~3(4qC7A>1P1_Cgh=S%-t_9%eMRs01VsFluU`KAupLvL3tW-PDl#{B zu~1z`?*mQfdHQzke>JHWgyl5c^}oC~dOzamIuk9uwc9IZT4ZWqs3+7CaF>g|A48Ji z#v``)R4p(3AF}=euBxDU0EX|SO9hk$xgsGU-3alHGUiRTijtE~LnA4d#pI zQ^pl#h`}{~;4rKE2%gZ&>8J&P-n6_vW{7g#8(HPYCDtIZO&OuyPKq%71b~d(~dwMm<%6+8`g% z6-|y3L4F*6TyH*GBD|?AX&ch!X?KT*<`Y$m`4fAHo1wk!K!CILhIK{T5kA6x^!K4% zK%s}E{eU&-vyu;>HZ+T5$cy7J$UE7Vrv85Ft%1My+Ao#*^6J}uQ&}*mt9bzDYw8d1 zT6W_p4D%rupnDt;95K;%Ei}KpBAt!(UXY3iBPx275AUv=Z$Z~g1~pLY8;%*eNrs1T zEwQ2wC}<=-r^vQiPuzygnU0iP`FwguQeRqx5ZH(>Ny(o zI*(?I`a*ACRSv$vuVNwi^$ynqt)6`8{fXwCk#|2HsjRAx#;Rvwk$)4QfY8p?h2N;L zjET~Whp61zTPEI~4s;L<1RP2?wC>hO&Gc?l)3&u#%$$zq(X;=$<@hon*)5K2J?Y7yAw@zw%JD4==igJ=TwL+YxkZSPZ8yOeW=&_g~U){GJF6n+p^;uiqoT+|8q& zgwPOHEk2CNR;vCGMc3!^D1pXT(g~0n!dI7}5yw1(ob{^tfwv^%_2pJa`RU@;$bI_!9KUT& zhYIUypzmLJ$dy|4VUJdarVj27kD7O&6hAcd>Q$-8%Z{FvimAh_th0yZ601%yagMp7 z@Q0+yIIvN!%14aLRG9i!tunspe#M$6eZX9{afQRhhM7b0^D=~e=f)zHe})F3Vjo`e zo+o9LO}mU)UD!MIzSif z8|7MW>32^rO@K?=H+4NfIW871Dnl`c)@*LwyquSo6G@z^1&M=X;4T}2E`bqW&wG2+;cLHpL^_xn!&`$yeclPlvl-6KX_f~q?w*B{* z{fo^@#dT1|!nxZ(+2?(0)!Z_QMhRc$ygMt8Y&^Qp>HdD%IA*~bIB((iP>yMroAMj` zQRvdF-N}rOJ@+J&u-TN*b2h6X$?ZGNbw~t-)&`n)TcC76iEJ_+IEnQ^tO(PXs5(v$ zx44)-P*Y&Y7mBc2u*0>p2>XWSj{b? zKvYjHAVd)9!SuH*9m%=d!JwF!=M%ZQtcS~HY1GCabJQ=$Y7BhTinJ1LxYYjQSueTZ z5qFCf+RAek5zcdw{3C+TxML=`GjS&2$1v{dXAx_p+pi4A9-=>V9njg=Ok5Sp+7RU zc;0-o<-@;q{6%T)XBKNm;dK=rmCT3xYL~*T{hyJ6Gw7ahcJh`{A6)!osBn+yoAD5K z3h31eY7!hqcd9am$D_HRtHLo2>_)QBwX94jFK*U0Ez;8CDwQroq(5@Cdw``Bp5=?7 z^`P$irU}JYRB6Z-D@8U&se!*3?Cixea%tZ@w718Mal1dR&n4f*_=tw?Q(A?^0MnGw zvapz3-Z+IGQOfa5Ctn)!20+!{m^ry9KWLhY)EU#9d`M{^L-?^FU)^F{{G~AthF+SJdg_&UrW%ZjqTwSsZ2{ixn zXVYC3!fJ2oJD8gH#wRhvv-^zfuW;oOACXC10y^bGDJ1a>_5s=puEh!mYQp(NOq>1!a1_lmKo9hV))jS&S4Sw`l;~TUgCF;_`|UYz-&Xj$ za<;gF0OU7(Lhsm*wkK-Oj_EDw4_>W#ZY9~7`SB#0~WK9j@OzL7OnM!sSIEKu3|f_3{A)Uk7YFjXSHSt8q14HTkJBR8u@qaLldGeb>x` z*COj`QjZIX+=N`{n_^o3=$05;F#2%OJnlHxP$(A9pn@e$M|k9%q$!)jQW4#u&EzGQ zJZ&oN=O6J&?t__i(5U!tz2p{y4=EA~zJ))mI{EQ4aj2s(B}FYUgR8yso%<)L-hC2P z(&gB=oImp{SSq_n8sc9Q*xC z2rZsD!5bQIl*l*D3xbY!Sbi>dl$ZQFyCQ5vqLDSyos6;I+x#8cha5-b(4DMEC5zQ4;4;V%YRTKsP=n1WLor0^4a zFv8*A!lR}uXl(9Qr$JPNqF8#*G7T?_1PQ4Komcj23p92Rk>J=V~!S<^JNhltQbnqBfk?M1OjDn7-a}%7&UW@s>a`3!l0D;X4WM9g& zNVwrR&K1!w)&!Q2n(V6DJ;FNpW(FlP(Lf&0&gQ*xqZMr)q_1bU{Dh`J#2=_!(lX-~gxbc@ z8gx4S!Z$y&yGoH2EiPjkbBT#3KnqfaVEKDB84rt1QvXPet>aONJuMLKT=?y zj#Ep)XVVQ#!`U|_9YI)XpqCgphh~eYw&gptSS#c^_YazGl2IT)of$)Jsq!H<5}s0i zr1QUw@&$HuUM+0!!#U{Idnr zjnS=ROl#Gt`MOgJPPL{Z&ylS0n72eJX3%t27Q+q?`|Z`>5uQ!SmvD=n{rAwKn1e@9 zz5FCW*iHA@VjW+thT2Ch3xfKrt|fXoL{C^yn~9?TCj-4Xg(q!P0i00{Xro}0|I&*1aB$JlKs zaR%aK)_A9tiH-V`+4aNY>PyUbJj4ieQy5ydnnmTju(=M+3m12_(494B+5tR`+DevG zOhH}e2n{S|Yj~c@^O}1?&W>?I#@i{zRf1T5l+8ScFQkNG9Wjv zWii5}#fVTljuUPM0_l7We&2?f=jy_KYUhG>ER&!RRx9Zv#!zF3Y)`!@;N{ND(%9Sy;s$kqs2V#MnA;dZZA<}Id`=KGV*^JZ$=C)0 zwK0N-*x6Z`TRu5)voW?|1ci*|j&?x)2YIw^v|_Xk*a>ffjFvqG#(W{bt!%Ud2#ooU zeH#lK^ZEBMS~J=-TJ@Az1sU@j3jhMOK)yO4>_1uuL;*jeO~6wa@Z9mQP{0$g=Klb% z8w&)0e;aKb?EoN^jrlTy`2L55xg$g$pv@WLtnUhOvVC&H2ROoW!T^Gf03kpsK#2Ym zA%_15abyIE{;x2Q47CA@Lyf=cLriQPtn~q(f=?g-2>K3=#u)lfK+J6&A+7+7ClH2D zyZ~T){vQm$y&&L<5&FboTj*E7Q=u{7h_I)?*5(P6<3DIm;EWw0`cS|f;y;{>o&G)i zztKuw%`IQe3tG+1Sj}yJ3P1feuI7cW=EgyuLQl{ClJi1WbA5rRAFH{Qz%6n$xAeW0SAoD*U^{css|4QWr0k_oEyl<;{sX!c%2t3CDz zhNjiL;MKfbknsP=1zZ6-z*ARY7puagc?fO03OB?O?)3~KNsMwS58=1x#Yh>^a{ zKc-pgJDM|s^!^6{_N@ZuTL<&ah4}@;eEng**)YEZm|ro>w+iOh3iEA%`4zzYYGB_= zHY4)3>XTvLl3>1}oAH&fZyB&}#hW3ao8@(|Z-qb@=KCG?t^Fy3k1t5|zi)tl{{h+a zE!|72-T&UWm*fN4i_6^q5eCmM-D~v$V)p_P_tN|!dkK}h)s_2kiU0EZ1;eva_mXQN z@X8{1b=+Qh06a7p9-0e?i^%^Y^F2inC?F&@w*QqEjQ>^gKal}s@&9W0|K!EV{HrY> zF4q6W4YKa@12Pdl;XB?A8E+eJAFrMW9dCk6d>ii=ZwG$c$EzSu!SUMh=JA$^h>4)_ zIv`);L?p&|^Ha9U@g|^f<#;P(yb;Jb;WOSi-U8&W|8KtWRz{GV2v8CKdnM2?%pC#8 znm~P-+5$H_pzeUWdAdO?q1J#vTRQ1uIO;>JP5*;FL?4jP|EI|?f&~5t>xnwZS3urf zO`%r$)_^QH=wle@_htZ|L#_2~daG<8uEsXzfJaFOh^ws?)ClUp2vYxFajTw8i1k`a zk`u(RC(F?6DV$;s>5X1%@q<{dHFr2cY}Q($%`t$O<_?>GnE>~nPq;f98$iASrPo@D zfG4B1mOLBN|G$1J#?HkyBI{V3cj4Bcps+)DQU+vu}Z5DrMu zW_;6TO&lOFK53v?#Qc<47Xs>)VM4WvjC>#W{I1XIun%w{PSrq(=^5R4qYY= z*Mu7pbe;yJ#Y*-4?{pxoCeA$_T`u2s7JDzwANKCNy%Ic=)?o+W*px<4bD6iG=@DDV zACEPs@V`uh=U1GHXKhxvHDv*BiLY7KW3Ci@B&?nGf(){m&rQSHvCCNUR4iTqJNdzi z*Cj(FaIcvp)l|(n^}BSdPD+?B!yDoJ9Xjb zcmHbjsPFcpWQ*j72{b1Pb5PUMV^Rv!p0sH9x&x@8z*Be`|LWeQ|G{GEWra-Oz=XzQz6B9{k`p=vgP3=*B z>J4hIMA<<=q=2mTCf)6acggg^kYr*V#u7H#b>8m*LAc}Dk!Hkr&$@#DKGi+a_myM` zH&y9;&CI-)Lq)ffgc^4i-k0HnsgggAa+10Ihx=Yb3DxMFA1pH4!JirDRklaTcws)k zff+yA3CUG`kDZ!^*>ZXN1n50WLa1|hj|tnl%@bt6lfX>O$xe1hWJ>8)%LZ=uLFOH{4V?3Ii?FoBt%WgD}np^cIDvY7fcwI@on z+9&1ppU#UrgF^)s`#23%%k@c@4d60O$zqr9u?$|=lP8`EV(E5tF5!p*oVrnJl3jnc+|2bNyRqyrx0pjO@AaW8 zi-7AAfvhO%fttlEBLb$%_?Bdim7i~KDCr4n%fe6LO}_4Q2iqtQSu)fUdui&HlGQ<) zD*eyG+|mq6q*u@SMPezD;ybQ92^VYl&u{q2P9Z%d3>GYtU#Y9&E?r+BH-2nf`?_ss z=T~J-^30hG{~9oBKThhZxo=nb{mN1*P6i%u{wExl(XoqY>r;T`j{fLnzn>fG^{9-K zx`JVi!@Nk-5AC1%CE5w{%6>))Rm{KhiRwF5QF-{^-ih|~wW$+_)5DkW*V@>1nfS_}-^ZO3V{cReVo>gyY z4}!d9Y;SA{_<^Ssw1vFi=Ny{f=d&UvGJ!GKvRP;CSvy^ zG9?K7cu$_NksT28VQP{@Z_KRn_ka7t*dEMS&?@jWA(Al%%=NtoNQmMZECMQr#ogD1 z6fa~*=qSJ+8IBfnX@7%=k^Rf{sUjWZ5Ymt_q~4(_flmv^9e7w0dY*xL-I1zvph8$Y z;So1emVc@@)Op41N&1sVCQ-1F%wvM8Lb?;FTPS*qU&@4de52jJ1e=D3l*Z|b*1WS_ z^Ciz$HouCU0w;N7C+}7^9$2GZc;{ph7^a8B_7?kw(~X*@8{~h+lOr8=r}AfuWg#m4 zY&z6QIP9YjJ(SHKsdYGjrp>P48xi^L^dp(fB_RY*LjMg$UxjYbSO-MKfP<&`qUA2I z#q^df#TwP!tR)WE$Q(gXzcl&j*S{jG684#0J3G+1dBke*uL&m)kBvGfyf>5;wo3?q z(>AGzGqIxbD18XIX1e*>e9Q(^O}snCopchCd<>bCZs^fJtnTT7hbhm_v1c3bcUx}Z z!$Y*(WXJF@(i<+6#qcb}=Av%8Qj{AU{4iyeF;aKOIgedci-o9z*2_$> z;pG|*d0Uk(ymXn9Q)joh{_KrFHqY0J!(<8M&p&S#s4ZaxbcIk@g?WvrH?bub`F#_n zjBrAMkr^A=>U8M#_?fD^)*t#sH2Gj)=&3gschvTPFXdAox&3xOQH?VrhIX(g`?xBImSfeWuf-^52LEj0Wj`D zykDFsNOW}nddzK^3(C1bJX{~)wf1F+DvE!&eYn6O$(AttLBNseTJl#hQSKz#AaOm+ zk^-|P|0CvwLzgMQ5@T@2g_G{NWp=wy=f4s187DcN7y>G071CX{_jBSkHg3{mHnLdS zvY@z0BnpsL8usca7I#x0+VTy8S0-Xec-ICc>J`5**8_!yDo0Ob6&2}prxA6amwB%+ zjBvUNN#lOF0z%im# zkfnLOc0We4qr?ta#?RzBYutQogK2s8N>sQmo-beY+~(+>*7X2J-cM!TK6q9kDHQ&8 z9E9{`~YBh0#gz0b>V7P#3&J?wsDdQPy@lQAr7KE}=~ z16~bIG7r5Im|0AEwEQ&Ap{ErD?5nLpx37mlEE-ITzuKOc0FoDJuo87BX^xj_)+=#SZ zoH|{sEK^aetmrkFyD>&A9`CJrHea{Q5TP7(3xhethe0$pBwsJoYYj6Y?=ap9LGL-P z!>x0LaAj`Uub~`{D>Q|m-~t0Tq&kt5`~TB`Z69y4_dZGD*{Pz}+6#d@X&hp-Lkz45 zjU%$Qa|*PIuN;gUD5A#^c!DVFzZu;0`QbC0ICursgAlW|>~&f0oJA@e2*h!Fht};D zHL&CjylU%oqe}3gsfaJ)Tzl~ql?!z{uVdY_{&ZZzzZd@sJZ3J#$pnD}iTmkF&qAE9$bLd0c*;XmiG^Z?77(~J) z`Z>o?U{1q%g$k7_d-n0VgfUa}OSMgJKVYswDA_2%|GcHDUTz$N{*I^(yS5Y~7=J}0 zXKsmA7~y92pz7oKAJ4Z5b3`9-s+^CQ5~VAcOA|)n%WakS#9Pbdla}dHAk;eOz_8zZ zxmYybxEUz~MT>U(TkogL-x

      !GhbK+_G!p%7wCLEC}a#FZ+zO{yMJH=t_YIaIv_$ zpQB)WTq5*BPQ+S@UzXlp6teXDSo=Cqu7?zdcf<-uEsB*tzRAiiwyx8118<~_ zvDbOYN0j5pJ*!dJ+~CHGZ;u;(7}O?uFBtopmSE&@*^<^gY)+|AN&K=yqw}M}ek&SH z)+&nFs9p(@r8#4DN`j?)hF`o6*KU%bUeY6xy@b27pA+L}sU#drldmqEC4X@8BYq-} z=R!nTigns7a2GC~KT8ovXx>zs-h|I*exngEcB}ow?@I6Tt4rXlT#?Uy=ac~j?f%tk zImLRZk3r|FzdglX57QXv_OWF;e5jbdIGpJ_W`J%b(O6e3)#8s&eqrLaWkv-6~$nubS;-PK9mCE*0THTroW*tQit7|Zk*;+Cfdk2@B zijuGQ!8W}R%`?#;fH??{PpWT(|6zi2^A!bHV9-IavW;* zdJ);8mB1zQE-T?2>9d(aVqA2)c~{)RpX12kee5U{W@<4)faf(Fz0su%8|nNVLAgNRBB!)KRkFv% zV9+CS304v|SzI>DM+36?+jH;8oxZ~TdINJEGp~cp-I-AjtZaFtS{AqB<*u@`Y=*yq z*Ju&9F&2eC;@W18IhUBw-!}624SKe`lstv(dFZrUd;czk_*4EZiwalEvHTSM{Fh{o zHAXdMS08=)*}Q8d{tfd?>dE5sYV6dMO62-poHiP&|ntp;6hm@@^4huJM- zSco;+NM($ycfa}%xhS^eEu~+0(iUp&)*SJ<_>y^KySzSIwL{L-?4XE5r6kkavUaii zo^zZF^B`Nt4Xn>zD>lh3S73nf5yvwrbKG612U&;R?yG7M$Lk+0 zVKMr@SvIRL%V#!Ex;Gu(k4)(bBeYK2Ui#bSX2daI_2M>D3pg+&OL(n)JFwteqpwJ(?) zk|H@Dk@fu40eMOWt|wpBz{=O{+glF%22slKkfh?0`Oyj$*1OvWD#!jk`0kE}beV|b zz)ruwRA@@aPo`hlfzc#N+dE{|YzE zh|Pbo;y)d3i#|&f#Vv|WL<^#NlQ-4zECz1gw8tcHtC;yElAVH#Fe$mXEp_)?iD|53 zU5#I7S=+wPLdD_F$80(3d?h(qR|%%t>Ad?eFSmKWpP8%qT<- zA2!m^+^Nj2K1?NY7PB7QdZ+^(cp} zGJ3{VOm9x1V#xg5yc&7m;GztU-QS1f6%RYQtIrpwMuuFem42g-gFuoP@+JN;BhvUj zmN)H@(#dU+V)_Nh1Rgig<8z5nv7GMxjQdr=tE-QXkBkbJP8$OVoRyf9ex$+x)1P+z z9v@S^ZwX!5MCp~AHIk@S_zj00HOiM7rjxgZoBq=Nb^FN09=qZ|PD_715F{@K8F0wQja@JWfXWh>0JX}R`bKtQV8 zqa|H9p9Gjsg5`I3+az~SI1K1<%qqr+nyH*>P(fg95SC(wnY2(a;>@EdY2#?i#TS4m zRN&tLoX+bc@rc|3vq+Fsi|c+;@KGqT2Yq6>_~qv9|MdBVyf=ZN3-DVoSm|zP9({A6 zu!$#>%$1$__7(4}=nP5qGq0KZr)YXCZoRL4eD`Jj@rsM%qwznQq-wv6rO9vieFMx7 z9v|^iZV4S|L@6gQWWTQ9%Cy34SorHtW{a;{U@zFeL4Kbl-%~WbY(^NBJ@tlKBwPL5;IUkMY;j}H{3VnF%cc3DqrQ5Y?}NmUcFN+>oDdp%Ny7c= zrS6SGcI^h;r=>`!8;zKhXw}ao4z?PYx&p316q znl+TnQ^jun+_W@L*~hyV01Jdd}8bh&C-_{ApmMaRqM zJd?X;D_Z=nE$wcFb=$&A8SC%Hh}c@P+h{y%7)|6;ylLkgQ7GvGd3w{B)fKE4i^W@) zD46X+z#1)x3!KhxAu0rFQ#lWAb`Ss|pQQvS)HIQCV~T~6A32;$OAA8Z zXc*$;Y{%nVfRNRn=apZ6`GW#@BpcOzv{<=CBNmg*!i}D%yIrrIjg8<-a~wG;NKso! zqT@io-#ZJSNjiCFMpot8qLOW?|B_mD9D^t(h)gq%XY>R)%Bt(icj@=D`8?UrzMX}S z_)|AiwL)>XMm{J+5^*i$F9@o-IJgGW(9~6bEhGspDv!C1DDY*ppZkCybUrm-qkM7n z@&VJ=U#0}j!y0nj2PREpL21Oczv75}$aOszTDC!8(91&*<}}D8wpAFpvvxlof&@+w zq8I*x>;n-0Z@Fpb@qU+nGB`)nXgt`7l8gvd6jp9~zQql1n%gQbaMrRNAo+T=T?{Mg zzZ(CLfkofCDDaMzVQBBS#=`|nW1{oBy4|FMw=sEvmHGJF6EkZpPs7lv&olGnh&dlb zThHH*+1}Q7>i+il6{|vZZqPT)^pO`ZCI66x4eWmtkU4r+?C&$mbqGNDnqgkti!}oh zYGiU;{XXy2h(QRQxM5Nof3H=!_nyivDr(->)tL5xR|ucTN>L^LpV98(8&eVSF& zZUOg%gjD^?;Cn@o3^rTUvIqT$TjrO?+TqT5$!*7K7S3~ptyan1047l(q}2ze*^YY3 zYvdKH*!LXzj6SnunOZAODvn31CyUOWoKCAs-GUNE)pc@00c<_Vx<=*IrwHo%3{5-k zoJ?x26IA;s(+RZhiBv0CdF4t!1{#86NXRv zWC|dYhcqoH&6u2}xF`d$#}Fppq&e4hTyW)OcV#$wP}6}b%%^ti&X5=FG73?Qes5NU zyuT)PMH-QIHtlUs2g;kDni#LJkh;c>YCF5!;5Sg%sQ&!&va`w^RsV^pE69MkG@XM_ z`!nt5@AD)sb~EBFp{A?jC}P`P4|EOXmf()~l2EF<4c~M%Nm_Pl#acoZT6q&Z_N&6* zz4Eor5s4q`cZE34+ZoIvB%PeTkC(vHIp3{WW4$_3scgQ+jh6b@M7tyZUSgATwhD85 zfOjh}md8nk(I6x^+rG#>2R4nhPV+;?39YNPd!#7*y4hTC=7;BzPMjpLL_DWFFwv0a z8Q}@^=`4=1Hq!&I`0Gdo|E6larP-tz;SkXbnsuC<=ak>^#k&B>kv=mVqeZgvr=AW^pr3$WY{;9R$AeXZl`Al-%uwP3( zpNeNJzy9&bEv6kAA?(+CYIXm;p40>QjQ84YOg6owxOwSKY}p|Hl!5(TDfp3Dtu7Kn z6iS8K;5JYnl z!AQ`b*NS~zp86<>4o3l9l}pg@o>~_dj!w-F(2;if3A}Yh2F6~1qxXj$-naO)Qs`MC zF}OwNuo75xU7D>9@t-dEjOjC(^0K_7To5KF2*hKTgs>ndoTzf^Kwe)`-+K6GY9UrK zKF)O_pFN6v>KL+q>k8E>ckC(0sA#ilWs;uakjrMt0V*Gv3wCDWrb1icxUgrD(Xm>eZ#;FKBJ(iepRZein;Fo2`^AcW^IDFSSu zORgjZXf*WRlW*aqRRWByW7sKa26%W!+`Vj01C(JYBge1l%S=Bd9BY6}@{K1~Gm*Ei z5NI8^GgJ#)rX4GXxqi~yXjEYeEqx8(;Fjm>z1_9OJ)*M6xhp|B@tK^qeW%0r&cOKW z$h<^8Y9}Mdd6K@|rgf>v&1xReThadh*{W~PL$ec zA;&+P4@Zqt=?X}fDMw$Ez&|_Omk7V;Q0$sdonc^#!{|glLmEuN;Il;*9j*Ucal}4g z*9hV-?ngvYT8_I6q$WESa0ES%?Gug7>dYI|7hM=TOapAtH)X)%Pl|;EINi%hR0!3V z9yJx!Vf6d1+!R+VCEn%C8`zyXq-xRoLcBo9Fmj65`PoAr$N zRMYlHZJ4!x71fW;1pa!^eJ+nF73?1D1VJp~E9i)vR0_&4kbto|s@8x*iGNG$aAd#V zel#Vnl)rfiuHwwNit`|mzZdP|gVt*`>cp@cSU~<<(5ruaT#|qpli4&q5`>M7PJidZ zsc+y`V)YXOI0k-_`Ug9yTSD4TfJ7voiISlueb!PV>N_nyKlV6ZsM_c7l&iK>%=i5; zdE94?G?3=RG-@`jl{6UMl)e*_8tU*2eEc-oLs3?`P8eYHY0B?mZ!Ds;o zaOmJB+RG;2hq_2I0fb8UnQ5UDG)Uonw~{_8{QCEG^If@ zx^X+ngmUS;l;kXy$ZuQ(;#sWs3?j^rO<3M{Xq=?v^S`WggnrK}A4{e0qOgi$a1S!b z0mJx{3C6`epg60E2976vfzmRSImhxApK|g1aINSyAg{q}7N##g zMSMTe#D~RB5ZqI7qGTsVWjltv4gEuqoaTH&lFG1*oF#3+Vt5dyA-SUro&0Rmyho@dOQG6CkQu^w*5Hd{b+?#>4}mGy~%OH{Qmk!MMq z-Q!ya+*VpS@6ifGsf@=HW?P2RR9sV1+vG4qZ`S6hgN{RSgF&F4Q!Ru^ z5DB~87*iqG4zn;zMHp=7Tl0@q0F{H@ZVf3Wv}&Rv<59Jgve*GiU&=Yku9uCQ4`ID3 zmkmEU_+}eN?E90yL|?1d=)LCN+C(lq_<{4*#J!?(qUn4qaXeE5zI<~PhGhOSfcl!& z{Z`#`Moo0^!H1s1ms#~d!T+u?mlE`Nh%Z1<-UocLC2y^N-Zcp)-mV-IHunCE*SOD8 zf(O4R95|CsHy*6QkwJEAn&GLVS^mJ2r`fYYb=;C_QgXS9(fWB{vCHfGkv_*YgiY6zfI?p z*q*=^u+!YuPP*rr66-)(H{&y8x!(|4MX^t&MJeiSZXJ?GJtrY`m>K1z?;Q-3e5NB` zk-AsE)Wq}aTa1gDQyLRdLh`81L7G^^l27!;o`wZ68%Xf??t*V2+qL7u3bCa^obcA? zFr0+e_6wy8_>q;`yXl4plC3iY3l?fyj?iYwNw4xyJ~ z0)2)RnJNd`=*AXApluk{8X^esznCs*4HJ1ME2n89$o)RO2@zH4CGG(1yRnmD`1jE%{JG>i1n^%{=p}+VP zYIJ_#=kaI5ChFLKz5RxE*>ioDwYaJ%&4kbKv8Aq)Wfs@09;6Ag+^8A%YSJBNL^*Kd z$}1__Djh4%ac2L)z9Eo0DqRQ%~rZTD^SB*;x^+v``R?cZ^{tRW*YB zA@SLmnG-MVT=Z9A+@IvVh-39Krpp(Fepr_F+;J;nYu}$gzZ_Xbon`ihM>cSAmoC}b zOOH8*W+IZCEu{b5Y_~X(KR>lHZb=pa8pNs2NyaTTWCStm&2|V~tQYXbhT>7~k=@(Y zowW;|nWbh61h*5r;<+wAkCtvs?VZuiI}hx8hZ!Y_7Z#b3?u%bZ@f>au1${342=B=@ zyys2ucq3wwn6i|XxUPL)T~fN1H?AYSinwfUeq1S^mN|S(M%^o)bi4{ZKb|U;b>|lH zUQD?_#nJ?9kHs`_o(C%yacwql!RYF=Ob)e|`ARaRN?M$zLCKZvzZ(V<{$xt22sUSd zLTIIumv^2T^?$B^ON&=FCy&FNL`q`%UD)Nud%8j3%=~YRD0fWc)TAA+`TZaqH zM^~|KGV^da^?zOqYRw#cafLwc7y8|7)Uzl4{;cu8$OG$KK=7+by5B#okJ6f|&B*w* z?PMQ2CfbJdWfw;tUG$*p$2(Tii+6NwqUgO&-}P`MN*TYtpE%l>Gs~qYNMPn|hH6sn zO>WyMb$wkyG*R2^)^v!Y)wM36ZR-Pbgu8sb-xer;k(_hJ*qfE;6fg1NFog~LK85>f z$)xo*`t}xsl|4L5ECf&6(c^l@z5J%V3GNy)yrSaF;as+>;79TbDrdw6D~G<@D}lLu z72#Q+qYV1(M^eUMi(8R zB&f$j;WXpB2Q8+hf2If{ro)nBPZLo9+Q)i9{U=!aFPp#Z5i?fP{<6pdzxpRP8RaaB0{wOpygJ4a#7e=3 zFYlMA%azch;dg|_HIL&JA4rh5E$WXFOn>9RHh;=6ZpE8^yK1kgjEK23LoBMJEwbtF zlmZi(iMiou;$F1Zrk^;SpOX|sYAvggJYj);u_g?XL^72)>Hd>R2&O@h08tF*~&dBPA1-H|l7|Qfj%gYz_g{5A5|u-t5x8@eP?EJbOom zPT0G!`{z1+nOZGvt|4@(HNR=<=i7At@mHbBUM*6msljt><=G39P6RIzVHPz%k zu&30_$w`Lwly;h=N4kVbkVhRNP3=mrwFiI9dV@itt(n2L*!%Mo_;!GMLxg48rW6 zdC^Qxjw$u==97rUUTI-+I!%Rk>4#RNVx-=!$LmwslDsU@atttr=duh6lccb!-gVm_ zVr-#PYHSkh210|dfo*FVD7I3cMV}FZ5yn-aQhF_g06LcRIp8r{L))#%qVaG(Qrn`W zxK4WfGztW)0du1<(!N8$GFTwPMtsjLk_h%9IP17$G1_0;(>cJLr>Gmsj2%#|mI4Sw z^Z|YVy)XAk@6#=rquQ~E;qDwh_x5fsdRmZ-ly{+ zcB*gXI@jhZOEuy=H;`MK;{(`j=7S59LjQ^N@)SqB6KCZYDgBK&Eu2)qd6whlfXMcDFu1H zLQpFmf;rpk;o{UIr>f4Z<+ZsAXd?H63GMY56;$YhQyX8Y>EFJ^hM zID$Xs6>YBhuoZTN?om+Oa>ZnS@YB@=NXfVzsDqqG6<9l-HIJ6FDVJU z!Fla3@c}nMkzkC#wVm2jP5B^#&AD&3!L9iTOZ1s%51Q{Db}Sztq&FRAOk_z=OHdHv z*kcHnz-fp+pQRyOzrQW)=41CqVGytA%87{9kk50V5v+>Xx=$IUx`J5e&+N~!1%~DADch#`5e$Og zDE*paaZi~zP7$_#9{oq8N6-FGB=R6F?-rW~1M-I%#$)&7qtPH5{FQi#r zDe2LdJtYcM!_O5SDqkRU7brDxF5hWzc0iWSMONX1q-!yWWE|L&a$K6?q4%aLnX8I= z7gq1qBEsmlvSla*n&;e;G#+CW+UC253@Z0!Hd}aFgw<33e{6kYaAaMycE_C9wlUGf zwryu(XJTt&+qP|+6HaW~_U(D^t?$=&sycnDQ{7uz@(T#Ea|_07w@eJrW{Ce3#4d-X(Ex z_F3jXLWOi`q2+3C@`(PSG3oRZOg?@dv9|6jm2@}L2d;nZ0-g=)L2&*8R;Kg8T2A=Y z3bcvEIir`+P(TG^uFRgFzFr3IH@K5h-j+9$r_W>*{=63u0U+NFZdTbOiVpwVm7doX zuM;F_Sp|aTqH@mVF*Vq{9eTLMTgbR^ls4~F>U1VnqK!eB?VX5jQbqeW<+BAbjtMkxF3i&E_#J8QF? zpV!m|P|C$KJ2$Hm|J)x;+;dcE3J!J~oGO7QAG$EZv7$Ug^RU*6 zMLVW25pYNUCz+iEvq$~|b38$l52nT%NPo9U#qvvUA}z^q1_=n+tzzwHVK)}la$4zi zrkVV6b#ZCJWuvH5Jqq9bf0Kv6zJ3^E-k!ks8~r6Be+sveu=GD-P$ScW`qb~yaQ0ZL zM56k!z)85d?`z4~a-J_fAjot8`Ev44;`O{Qal=wm2UGq_EWw9P5F$~F%!$#Fbib|-Uvwom{e>n-LiS8jR zg}}CkA8g%X*R7mei-Dhte;}12A;&G^yi`NOVf0n$GbZ(Dat-hG`34;$MEbu?RlS`t zI&!#IM5(q@l&AvpcbiB3007K%D^L$_%oS54 zS+OzU!J(=_3?x*h&~2XWa`wI2pL5A-H=dnJ?%9WPMD`A&s$|s-V$|J9Ty#XSJ%&_0 ze?na@9r3uO4P4`jDjlbll8Hlzt291*7Os4eob2$tvM&FufF8ZRLhO~;(W$%s>4=S2 zG9hZ=Vn=KD0Z5toYX$(TWB^?2R;-%qgUQ5~<$L#5&x#81DdnYb?;q9?1>4cwC)K_+ z)dJ}I54QFWCSQ-A`u#+}Z{Pu6ydc?!K+Fbe`lr;qOs(GM7$bLIQdQ)1qzw*F)Uf?D z=SQ_M?Q|r2tkWspozBa-wX$*6mHmwGy zhzUum2OOjHC4UjsqxIVVD%P>{F8W-4d@P^kt}a~nuY@WDv=_kr zfVoaEaRGiR{cDJm7BhgyFw=RG8EM(0jTu(O^M|)m16^*jWZie!HxGj!ZAe$UyB3kOav-1|l<1b@=of^X2zS_(8eG!$Gg( zw7U((ui@vlSA%sLD`f>k&CMpU8Wb$nr6h)^#}zGzpBmBozCy|^vX>|^+?&Z^!h|BFXoSo)JWoT7yd`;%&FN@s_W#?A*BSR$r%1;{n*e0ZaR?q&vH;{NOE=& z_6#n~z_r_SxmkD802e;P1QHfvJYtAk{Zw3cn5izqnmMQQNBV|_$wJ?u(t}rnLXY23 zuw$l?mhPkqJr>dm2!~kb6|h2@D7e^?=0NcKYqO>E#+5vmgKNH8rQdCvY_g(lD2M}J z+{||XNO%GT0J1}v%x(C#40@{N*4L-@-Auwd@SFWtFEZd+`8rxOV5KpJ!B;-Sha8&Y z8GEeuCy;Js>T4@yHUooLUP$zxElwF$%F1V+UEQr>K`Q1Oj`QGxZjFG@*R<2yIQmvw zrxtfSeaq0#o$qB7(60{8611$Kp`{Z8hiG;_`e)*BPPCPjlq`;)^8H)z-X2>QaOdGE zJbZ>|K7<~cU1%KD7$;K4XnyOCbpUXv8jUu@FLU-fkCNf9zAabL@JNe16kstpW`f@V zDN%N-rl(iv9%XJ@Pd_4dOXm?*C00BMz)fO8lPrAv+9U2M#$C{=^D!9JI zX%XcK3S@HTuPa|SZ$K;(H%LkipP_e5OD_<#;sXml{2xx!|GJY~eb}MKbN}%GUg?eK z-ybGK4{8?Q#w?d_b?R%|@lic$Ta-62H=B|^k&zzB_UQ%@_rf}AB@V|^qZ4u zCC`-hd)~8(>4f9K7V6G&EXF-9sUta@O@-O!we4aaxh{b`4Bw1=+|P(o`Df+W!HW9g|thDjI1?k+T)_FxM z$-JC~yCouV>Sqq9)v?nIp)cojgJjs`%h&1_4J5#ME|bdRdHrqtvC!0wr7Qhz?5ff+s#X(X9yFz(0c6pKC~Z{O*pcUrmXWYZU3jgXP$ZTe7EfTU!D7 z2A-SodtHoV6bI+3^J zJZU7EuuQV(MRT9>JT12+9Q%#cs^9L7=#jC+{%f?loMQ@&H$hfknqC2&i(s(8Mzs~c z>07*+ar7noz+-?e*Q+Cr02>u_O%0jTbZbY8(s+!M>$Fkv32VOl|eV`n*ulbOKx}BkgoIT!)lXwM2pZMnd^;*%bG{ zR@H4O4qm&nqtOQ`pFuru|Tra5@TP6)kl9%n=)_ zJi^c&0wK?|V1(7JJxmUdWEU>pKQo{1^CN_SA=`j~D`YX*w`<^?!#`^9f8JZnU=uXS zQ&&c79;O;Cj5iOc(b4e_#|XC^O*Fn1;bWhE(Xh_2$2VBNZ-fq?{$#21*C3vYdgnbG zSM7VI6C`4nsWUmt5J{1;qy>9p)^MY}srqW%6U6whhA&Q~{dGtjoG1wx0jxtGLoN> zjXM!~{426Y2PP*YZ($$+vy|9z8GW|N|B9SK;%O~)>)W|X{2z$!o-cSzPXUcOVL|(P^H4y^YOm?kV73?N>|I@56u++ zMVGFlQglI_lxkuU^+yDqH!m(Mu4q`t+aavq?LAXe_%EN_^K zh#F~jd#ujZ*_zJcC{G0T7yw}mfN(_}c>pkhYKwik0$8;Lc@}6(=$PpK{rA690sBAl zZXtdgt9|q%GMPMI8@kRlyXNZ8a=nI^ElglJoAY>$MI?WeY~>e5g}IUg6Htp!BZy1WEPp z)NhouygSVC)tp`8Ar-$WgUP3Y(|ZgW&9KY(Ro0u#0QOxYTR#Y1gi5?NEQTO!`opZp z)Dz^!W?u&@6D3o=nfNO*EBp;&u@Kt#Qc!7Vz1i6|{1b}dVD3^kd5laFnoelnd3IGP8OniMk)t=?Tt_hjVhUshSd0Q!a zIq#(<@x5Q|Or&pNSG7(Xi6xuZ3eYWs1AYzpA|}5dXr#t(W79|`W}Mf^x9ej$;8)}- zwvh=ir5A!QOq{Me&DRAO4QQJtF6<`apcn5j_+<`xV#OsosRyBXpNDre40RHIUt>aN z@FVSlj*uXo>8|g5T`Yb+8)2dGe%Tt_Y#GS6?c7^o{jZOpY2Dkv8&m*d&m{E+VD%r2 zqA6F6A8wWUd4DV|hSE_& z^R0Da5J)}=M7Uks`hgVCPJ&||XPkYv1h{|ho?~mytNn>j0M^8=f9c|Cj zkxJisbruZfZf$yEHu~E;w2LVPR-PYcx8Imqe*9{`FyLpfVGjRFHvIZ3*xS;1ROJ@y zk$b}X667tBcnrGb!`XMwO?s$pi6MN-Pkgg9+xp{}Hj|Av33Wh#H6DVvtqP*W2|P&& z(Ica8vHNr$yql$O_28O4dt`5BKONR&!E`AAU_WyKpwxaXz#N&a0Vn?Nt^gIkS&bPWD{bS$mruM1Xq#cLaKlJ&aL%+`x~{Gho|GVHFMw~7F{Wa zmjg?bcDX0MTiJ%@yjS_g2!W~gx&Bg|pKYyvV}xP63YKRurnr(zv&rBmHe%~dtI>l13UZUCpFVLHU{=MV`y)pt$s`zvOU7Z~O4t1m?A zezyMI-=BmD_~#v^{6X6ABnHDIyZqq=@sDXk0QBX>bPJNwaM`3TUAa@UI#_nb9jkEZ z!pZ`><}3v_Ky`BbbuU=n`wbaV9%utG!iOPGuh_hLxv8v?=iY&GsrzM5T!oN_r+d>p z4kFIq`lk%~8k7SJ{?J!BBdF;FgK-&v)}zIRMpgUGaf4$#rbyklm`&zhV+v9AD_&e- z(U)X7DKE93V5JSAjdqmni1o^k7a-NAKyBUXwgiyJ0hTlo1_D`$Ct$0eZLj~e`VD_D zMJ)3TaC5cBEZ-pK-b(}Wz3H-%6c2q~MlGv?Z9#-W=eDL2kmgN}9&v#`0+MnqQ!;5B zG>AKeR2&^FHNrd_doT4Cr`F%;_fHee{i9y~2P7NlclRrf;jBU~NL77bVA83!6DYle zEdORHb6Bk)fX{qPV9dZC$my8L#hfWC7iq+d=fomf_mIzYxN?6U!IWs?V*K&oQ-f8I zcgmK(Tq^6?gZ@$JjmxV#GuXFLn9Y(n4e^vi(z`1#P4P`VuFT$GPyPJh9kpX=AGS!n z;IvI06l7@&VULJbl1}chFmOWDj|X{@CbxnG);qR%c8rY?x{$^x6=(iiKXbw}*LJG*B&a^3^Ay8vnd_CvCQPEH(_xcmaHOcL3l z;$41VC@4&vfuVi;%N;sAlF+DyuIF)e6kNaK1Qh}yZ`A1u{{DqA$1I$7N4MAOqr2Qq z64&BYiQXBWsKf4s>;{AIgp4>;9Qnane_ z(FP*(DH%O@f1ea0x#g$$q&IEs*yWd1zDyKUyWyC6(3a-aX85Z@`JA96_Bv*MH-iW^ zQizyveK+1HCAXI;4Earx{@iC_7XBv)Y0mAq^T$cF;2@Rcw-(k+;BxzX-O;~3(=daI z0$FXzWTBI;4ud~=iuhKy)Q67{+B6rnEFYWGH8UZ38VpeT`qEFDW_}{Gfu4Qm#v7Xm z?T}o_e{N21S&&eCq!#5CL>azYR8Cr#G2&;O`BY(!dp|qz67pA|JRjv zvt|a%IvW7T$1D_)1aPJp06dN%bzg$tK}#!`vwZGu^i2oK4E{~zzi>f)U*9c{RvM-N z>6thu5|-ar+UW~zRcBg9k=4iu8zSyYy8e9g`E!kBCrelKEkAyg&8v7JMZG1+Yuz*8 z;Wc^?j84^%Al8!k&9vy^?^S%@&i)-1qfN#7fVZJ5Dt=X+Y^)9*dpgz_me#acrz;RRmBV7ifVK5ktz90JEJ9}!;D?F!Oqx{pZ z1|W+oqR}f$5o|>|*dXtTsizmVzJ^~@X;{?@fK|aF%D9&ZnhxbG(=+}ag<(do@XHY9f1_zp@3 zS8;b|@r^Ro8pDcu(dIpWWsX+Y+}XKETqae~EjQXs{(+%1ji3ZAl5(4kZ6p!>o6WHl z!mU8;7_3}YugJ;@Nk>XSlz!yry?&xMm?S1~ z;?>7%KuHj>{XI`6+*Pfb7O`t-gU24*(MX#*MW0eI_v3(11L4piu1wy&7aVFmP73lX!A1;)hum` zEMLu~9R%-D^^2B|1X6AuIK7YD4=DQ%MZ90d;#6iqE%0&}uxFWV1H}@=J&>XKUlnz2 z;%U%YXbEU&!YJT75w!l7ZK2Ou9L(VstIMuD*)xhFJNLw-WUm}mYJr!9^M|0xjx6Fr zu1cV`;BgQH(b7*Uufj!$+ZZQN!L(&Vy;3+B=2k`bC~^pPi)PIEO7Kw1&z?A>4}8;A z%%bzhI}EpoQ4G&AUOX>ff*`+~autV+t%IFyTY`P__CmrR1MzKc8{w9P8XMZ)H!|81 zBku`h7Q27}0RXn_6;D96q@Gsqb2f}@SA3nk!_#y2O#XB6j)NexbHVP9-^%);bP!;S zMhmVP0oNyf5Y6ODNxLUy71>#tKb_6w=)GbBdA^AVPR?XuAe#h2W{bsQ3*q@m-Q)j2 zz04cX>hc{005UQ8CMY=Ne^YD_eFetvsIv_q6D?Zj&}9+I%Gj7$V;k@1RE%+3HQUlg zq_ckq=tP0e0G5<4#p>>Pawt$H6oRi#D|Z+nK`7RkPKIMr2dB?GHBDfjIgqB4XYT~D z+d*ky?{?34Te?mR2ar>XBq!guZ3J2<2)B}Ly|yW*`Zk+mydu_y)8vMNi2MTbZ zUYe4>OHE(BQ;lGrra(9V0CapA-Y&z8)p_&V3NkY}oGjA4U<7v9=#!*nuwcA-(l;pB zWqQga@GVr`F-{t+k!2Sg&aov>csbhN8ZKeuAQ4$I`;oM5SPKLf=$6TlOrAtRVhm^d_Uu^(84bqc#Q)5A?Uo<&6 z8dTYO+N589h_Sn_OI~&R2YC)+H~P*9RIH!duua(*lwzp|aZtoN=X4=FJR;kC@G{_D z{I{PutL}n3Cs&Dy*oaGS)ckIlGe0?GcbHn)flA0CY+4fgSsAz3%Wv3S!hPGRYEtlOFQt(|lZZW;+@q%BGBUL^USIzr8`hjXfZ9zynUXkdbl;*Q-0MafWW4&0vs}@ zAJbfc>Wy8)ZfC;Bpxr?%Rx$v9mcMk!Cf1vj6((dAsc&g6^=xL)(+DQ8b}|+1 zX8&J+5m*D-52XY(Vg;$Vuhlb^$rB&a5_*g{^soL+}@;uOYRypE3E*Top)V5-!P)#uDt_v@< ziYFr(ZVtLsO;`h{Sxo#v{CBo3gc+cr@Vines^$^8r>kp_I6zRjxh@;`!ff@aHhWe( zZ$vDBN9s&dj`y#Sp3JTl+QohJ%jwk(pJk3=d~~`H9As>|KdvQbcarF;0}*2r6BV#_ zVd?^aPyhgtJryL~!LCf9Cd6QdW8f z1sbJ$>K8(OTD%|uH}#+Ts<*Vu)~bTRZabGknjOsTnvZG%)yz1x|+$9Co9ebK7>C=1$00RK<0)h8xGOqo12Otnfx%E`P3V;K8FhJ=4 zm-?La%K}%-um#`hM))a-6T;6ODx}GDvj$&YQe-6Y#ktor6}q^Fd*#P0=_WF24iU)Z zVt3eq`{wYAru(InN@K7royc_Yj}?M5J9yGkl<(qk`&$s9iw5M5<#Kn_f}4DNAhh@R zF#F1p)gJLvU6q6fxu6J(lD8kGDh0i~4egePo(`5*k=)Fv3r93FnzBK>TtvR6kzP5* zVtCaCafBaRpmz+{OfaER_JpSNh5a&Z)ateVEowshDoc8H1h8lndz!_iDd1d%o2<9? z@fcBgpewXt^p@SvxgdFRaa*$PGwfa>sC3BhE+`r7IgMu){HCE~htZ+XH2pUpoDZEk zn`z2Y6l#8-Z|Ae>vjL%0+WYo zTJ{}rjA?eaJak>(CME~$>A+a{AQsKkdL(5*E(KgTPN57G(#e+|r|#$?g>V zaTl6=YDnl{k@yk@Qz=0d#RV_@?IuT;v9; zD&W)o-$lHNmMwfSs!l6w1WL$8c(k})?19s=xAeoz4T#;pzHaSa_c?`uwTqz}$$}-X z9Z<@5vd=^2kSz?bQGvoQSEs>yi{h-(aS*y-rI8 z=@x)_F)2b+#@Sz*Ta9H4A2|f%r>5MmTP4rRuU}&3EQ;9*zp|Hz9|HkRTEJ7WP$Bp%v>FiUdi z6WDH9tt?3~;Vv3l5d;zO)1+`4h<2H*&Dgb@{npjzecU!lEFHUz_vz1vttKG^K9hBL>SfchP;$PnIE>fxRFq}()mn~{V==$6 zcUU>$YLCUtSW=v9`oYP{>9_D5P@%&#lG>eeEofAkvw4uuK7JYE;d^JjpJ`fajbd3r zn~15qa*>1IUpTG#A${i}2yzxOe)gpI3s(J%D}kmvYnu-o}jBgj(}Zh8zyZE3y6m$cG32C(uy*39kMv9?&hqFm{`3afKsj-+6SzQTV(aRs7MLhE+=7rvg)3gg*I<{-4iYMQ#5t}9QvHqr1_lzc% zUi~`z>M*k|;G-K7VVF0xoEVzeZKy~L)Nk%AB56m-Wz?UT<57tyo$=IIQ}sFBf$;zH zR+fa&QDm4lmk&lug(H9t#%}7IkWr6@$dIPI85Uzrq|3rcLUNbgr1Gd&AKw`<6q%2t zCogHwMU7<=lq+2H zY%lSM8dNl#>N9I(ssOBx2n0~j9`d9b5exKjlaV@NmJHV^1@aIj){s2tte52KAiUqp zsdw@QM=}7@l?~uE`hrEB1Sm|205Ytg>dGm0t%0oAQW>8Z!7S7p8O3ddn&TIfzx{iG zySwWjVY3iF%Y?)_>)cFv%|kBWbFYvHUc)Jx(^3fe2(dwy!HoCb$!<%jZWzyOZ>j}C zo=1cbW>L^>dbzfjen&xBp_Ie+1o4+RBxq$s7HOg;7Y#1Xtac7y(s7jM^ zljA9E8Zo=e4Rbh5U!>LFyQ@}T&^^+rb!n2i%|%it+`7CMmNTW|bx8g1*vlV8I|bH% zzMPA`xe;cba8T@rR;lFvf*Ls_BWeAkcS?0Kb(-8=&j9}L4;^fs^S+h?EA0`_q^~zt z?lI`=E*42ojJoSJX~i*;K~}6j`xI#eu;B4|DUDRqOy57RSh&+xKwQ~nN_bpDdN=)C zQYh=SoeouBc%&m!So`y>ylErqCo8JjW%XSOY?D@eai;rzpZNi!h50ZNhs@haFS;s% zQvlF9H6b;{{C-t=q*Qe9nG-l2x~JqRJqE}{E%Q4DjfIvfr?nMQ4yqId0Q!J(2tY;y zT*O|WhJXEf)_)zR!O||kpyWm5qikWPk#j5ELWFVY$h18^#s{19zrW8{vx1CGt}Y80 z;*C?bQ$f$Dz$S=4$>4c8rSzbH-Aw21pV1JiEBJAtXZAAE{AqpHRke`Ew<}*9Do*nJ zl$W9CNkloU)a@bpI=ou-<%N%FkshQMl$tmQa!*Ex3}IgO6Hv)SF!@6b_@%Pa~E z%`|eC9tH87B73oe1LH1K@8?0v|L~;N>-?;lpqL5z9H# zLSE;DJF1mOg|@GWi%d(Toh{d?N<59*%i+NhYc=7_>CzteuHY8l_raCgW@LHM7zVF( zb6(`DisVf1Pk}(C#oPQ3bP3xtuIO{7R^jJA7zqK-$+?k181xNB3=jB1{=E^NBX3Cb zR;0%ZSeMICsXuefAblG(!^&rBw?#BK$G7|Dmo;k18YwY)&6fGg=Rwu@E`uA~bdBZB zMBBBy?6WMc^|OU^M&dGVFH|DEXsCv`X1tIB+?oOU1 zCd2Y)V!A?yvrMCGzoh1KnOHO~iMq{da_qk3`QUUih>0X6tcD%ETxLtZDhVX4ImU43 zCaST-%}=)NH=IlBFGxY9D5II}M+?u0{sSY|gcCp9N&m}m6-uF3P4BUq#?HYzYAonq z(Zosr>4&s|{)qnwWXT&7LxC58K@*Al4I;_@AmS!W04L*|=y~0xs}-Gq%{{H^D#6vk zi1{0k@mgmd@%2fV=;HF;vyxf};(Q#z=&EIqn z$71jm87_Lb81>I# zJ~Muwnjs`S6Z<|CW zNL&Ml&JCNjJ@*J+4`FwHB%%3mqu?6?uXw&@yd-9xw3%}e?E=)@{pX=FH3a3yT z-I^pYTT5zQ;4BWcSfzSuOJ^df&W|ok5g#Y<{oPAC?8>8O!d!x{@GQZx%zSqCNldrp zBpv6f7iy&WEOx>4mcZc5A!OL%rnjWYx-1MVYhU`B_o=}@;Y_D0W`zItZOW7?e}`0m zV`=41oyD!Kq`CvyoHtzolN=(=0S~HeFw2R@HD?2DJaP0ogQ&xkQyg zNeBdg^}7G7b>KmQ5Ok(l?PfFBZF-S|Je|Y$fxnKzRt=PJ|1Jo{e}CcKoeisv$%pOO z>LuxdLiFo05rA~pz*v>fk_vm+G9=2G&{!^H;ppcye&4gB@XIrfYObZuch9zN&Yg_M ziRwz;&vNIr9P-=Ag$NX$9ksa+#tkusyGS;T#UkHrVyVX+Mh{J5=S?DIQaX4(T_5eZ z-~FN#`%akQ`Gb`el-1eR8M!awR^p7Q6ZgqtGO_wl>NK&h2_&nSQOhJPfM_QYUZez| z9&829z|&{9TlHl__+FLg^hig>ZjrvviqE<^AQkAo5&&q6l@9_4dXCVxasd##XsL9J z7Rgn1c-7^=6CFSkBzD9yYO8utZm^x~JP>CHcHvnHYg`c=hRK&Pu za)|j#;Iw}Em~AAnlc9ec4gzc4ism18po7j6K%?hJIp4!nJ1M=P9?7dUIZh9`gvsv4 z%_UV@iBTS=#?6hDDk=-&LaPwfuc)vLcGUy-x%4pH)U4Z%u+^(d;LguhbuVG`n8YKz z_Z=R3YV6%ydS5`{IMd`s4jq@vircx`1HqK&Ore3J@He53?}n|1KyuCbqaMv zd=buFwPHWvH>x-V;6&)5FT+GKj=$GZkGbyobp51)QHWwgkpKX`BP#$vsazNh00>0I z*i!+)p~67_t|Y^)X^ZQy&ZewwjZ(oZlN=0AK#|iPcRdLE;x8ZY|O_QFEngJVn4Q9 zai(KQu93AF6=!BNE@lV?FeXt&IVTbb92AV-ViHC)>UcJu>e$&9;z^_G$W9Bt*Kb{| zUMrc()OE!H)Kt3lhQAVdj^*gelzsE?Gma$d<#5XU2^3pd2p*CNAxROEuN1}lwNk>D znTR9Vnvc_roLp7>a!D~KG_TE>$btb&V|XKZWM_nSf{bOctH-100`NmXA0hg^NoW87 z;p?;C_fQk(`+@sG2g{XoWiwX-eA}6b^Q=uePOik!PcTYcAiJ{JE;L+}wT3R}+R6Sx zoqV%_Eu|$PmuWseB;~Awn*l)rO4$ILNjsBzKYVn2o;3T9Un2?F;HuuLB6O1e_!K*0B9mNao0b`|%7E99S~ z+6$;%c#?l)s9uLnd7MOfid*oNxHQ5_346id`;Cl3N^b4i31|2PrPCDHyhi9tD)heZ z1;b^PU;BQ)3(hsF9D$S0_~ojy_^{SK&z0Qg9{6%W>FvVTOTaG})QK zs#ZB^n>awJOuTA?cseZ-#SlZvmC|~{h^=#^)YzAh&yMD~{!>8D7F%NLODPTTQ8KagX+QM*K+rjkj?by4r?G(be<0 zrWOxa6v3srj8g&~N>3+QRKN-ZN94LCu@9g~ry(orb&YVkZkv~G5mg)O)iaqBGi%fs zh@ee+@vhwAacP;bk3b~&9te?h>16b`1fw>*b_Olch|gjjKcFI4*u^`6@+l3`BzHc^ zcvis(zR#S;Kf@spAWAKa<9X>2{M{bcesrR z7Ay+!lXx(l%urX5`1`M}3Zz_+=BVjdMz>%|I67j4s3!|2h5j_wK5J2^4ee|^? z!>~YaR$JWpR*C~Iakd<7Gv>h75A!dP@4FuGV%MMtDYN%KRi0-BJ*Vu(rqt<;)MoUZ zzUx7EOOB0GL0PVD;_G>)X968g)qJM$$cpPy4E4wc4B#8!I>0KrJVa)XHGOx6Dkr#| z6EtfK$wH6bi>AEkU)%EcJKR!#Ba`*=Iq6K@1H(_Ed$!Zmhhv0<y9)6;*YStKEJhM>1jSa!8@Jn&b?xuoDn5Zw{!*An7ae>0eru+owo|Dz@kbz4Q7 zV$iBYl4=A>mYSUGc`*DP@2DG}(r(NcbA~L#8YBQ}IvZP0 zAujh_OU3Dj|dXCd^wXjY;%2zOF1=pbv0mg@3$x>*~ifZ9PnlY@Q^^uxr`qSE$u zbnafqwE?$xdJ1Jwuz##()rp5)ROAp{W?1H6B!ZIV z({o8&ZbpH-Q@@S#o^GS@bQCu(-N`503jln&SH*|T!u!>Nxol`0l>G{DBrDBy$;RD< zUZxHnskrsT?3+OJtV?9~94WU;I8uVij*0NDbIFoHU=|(yG7v~kH@iz3!>FuG>Aa}u z&Q03Y%h^!VT!Y1d#3=?SyfEu z2B9pBy1!Bd#I<|WpM7oi_cfuK_YOd2g0^)`RK%jm##zEdePKZ~5;TQ_lapJgbE`}^ zLMf@bj@tgp7V+RlhS|1*mn-vXts5L;=IQ#?I&`)G7YsgoEPC<&%4Dt%tJSLL_S~$q zHjp{pq-G<>m8b0S=Gsid)IPNHG-MCtt400kVkFGqLU)2Twqcxm-9ci^x#^UFYmFg# zye9~^dU%pP777(OpI~8nsdDJnWx3QSw8^`D@cp;=Qd_4d`P?8o!FMJSioM>40@+t; z=#Z}v-bZAZli+y8oNReq5(Ue)mkC2g1cE!~MqAmS-MkO~B2m5^%yhlF2D0+HO3*R$ zy+6e5o~g@=#PgRpUp12@iEc*mHXF&!fb!YBQ|;CPbuYz%VVjXdFJyfv-MG~q7B#2< zcT9)UhxVW0+SKPss+zqmQ%XV>%Tg9r<A{l>?$#&dSf={ zdr-KXUUdE19v>>@10_uJb%#9|I!g%tqr%OB-{R9n(RA9O#b{}^MP}pj4FGmBamfg? zCz&v`1nH^M?ha9^@LwUjEq_jn+R>qbXa zP4qKkt=+hJw-SCCSXhmRBaE;HnGJSp-FF-`jSUlvW;4xOc*Y#?qorEg&-W{fK{#{! zO{p&GwMg8|z(y@0xhGPsX-qzwd!&Fl3u*^9$O4u9{IxdqPU8B(B$2g-_Zxj_`-MNZ zt*RL-J3T_OPYgydT50_8530X$D+FDXa>>mx#HyyMSjdya!j{5FZ{T!SQe?`_E`Tqq}VHOczYg|_lK>EFVLMFuUX zxJj$j`$X{tX6)}w-(D}ta0B2&hqL#-M2>rlf$$nA|B2AESzXkRA zh(&()TzQF18!#Xbkk59Am2;=D=&e^DM;wbccl;!5>o*Rrv{HCgNtWOpW4L0o>C1#P zJ5;-w{UVnBZmRmFFW|O^{{m(Ack|`yaQI8wK60w7;cTX!3u&RoRUy!P%F?|eNi@3< z4|}P!xs|g>qtM85)pdEQ0G&mNT20nXh5^3Jhv2Opbqs|&M(pBuF5q2DEvnpQJ!E5q zSMGfEArh*AS_b78l^AjM?-GuL&L}X)XWzQ@$=#&r>bWmBvupa%j-u*#jx?1jr{K&> zr+}}M7xG>ta~|(eOTxv{U1CxUF#ZvF-1kmrF&r`X1zJDM>mW5ozh@=&=ex3MspiHp zxdEQ3gwa=f^}sFo13B)`CR(%+zPXA~%Mfmr)_f?(znHNz{(qYvqf(G<_E}1L^qJ15 zRF@SeV!hEGtuBZ*JtXD%`flJAswB}c{J_LPoL#|PMe16l4f1k$*Cx#Kv2yPdm#|&mlOw1lEa2Q!O3!x^R+n(Wb$s;MJePP`08XHeD%n5iz zof}!AMzA(riiu!y@#_%yX_=y*z~jRaWXuhglbo~WqV+ar;{B&47O(^m8w!es4Dv;6 z7lJgU)lb_2>2)z~g*R-^mtKckS$c*2<@Eod>YKwOYoa$h*2K=lwr$(CZQHhO+fF9t z#F=DbCzFY7Z_oGJ-DkJ{=zF`L?yjm^=hm%r>b&o(Kvalj`y0#KfncKb3-nLtR1vMj z1ONA-ov}=kEVuUzJxEdPV5%#=8C+_T)MTrAgCQ5CB<%e+cPOnEBG_Ispj3?{N=I0d zmfIB#UKexY{vktP^Ax2oM33DS8fUf596f<1v=u@DQQeUTt*xvmIrHU)CIbGS@byG+ zZPQ+0R)r--U5Uy76A1`Q%f|-DJay;FT5rnnPMnucd&suuUvL1yEtq)iQcYJTMXDmL zqz;43-$BXx#W}4~^31g5mr#KZ$^u(?3hB}2c!HTjp@9Qp+y>G8--yCpItjan)Mc_w z&ynRy9q0D|v-sKr%J#nRtWu?jxh(R?c+ar$&(Ho<4{|)B*e{$#`glJXi*ktIL>5jo z2m!D^h5X+rKc&g8$48}zN=lwxCQkWF_>i^HGw>=}LEB@=EKgs>S{3%PA#oHv@^am{Y4^$QR6 zk`wn>6oe6%-PbkNUo+c9k6%u$F6Y&B=O80lUrP*6M?w^IO5+l;){=7j)Y)e!>D*kD zoZ0}yj|#z^B^Rg`nyXTuw9AJ=Zt)f>R{BWnR>=6}j!wz>$VSd@bt~_aHo{)EsGzpG z7`#leegSC4{-HUK;?RT@H>eBJ<}svbL>B9y17V;HnDW<3I~MCCJuys33JlU^H5-1r=7sPwFphMq2bi^*#t5$x=m|E7!S75%kya! zuJ8N4P{1Pt&M0a*CJ1g{J_^7s(dTA44EX)Pc28)KkkraiewR;I*k!u34b&goz|9Q{ zW6*Q^uH9XK;?k-pnQoEkzy%il9{+gqk6|0{)Diwz1rLq4V+C(NKM0`N8?J`;I7#N} z2K9P-*3WrUc_r2dt0$;fl0#iIy{h?0I3p#oaVtg7S+gOmtL05c51Z~L@@0U9yR0Jf z(`P(#onDZWg52vP8qICUo3gne&0I1^)1LYgRhl!6g9d;cVs7UowxlN{+?^`82r3Nf zaAs!L4=GNIj~GhbGY>J!r#neT6~hIX^GErmtE#jT|3RjG8r^d-o3h2gbgVjx9tt>q zJ%hR}I~a%i`m6~%lbdNTsb`ehws_>cok+@Zsh?j8uq|%zFq*qN$&{2-mi1*SU_iaw zT#dJ{$Uqu6U7ORGiAZuCIyS@5a8kQ|u;B?`d_Lfz?|YOU3aZ)c`uVuBiIGK4pG82y z$zhxdcdyE7yk}do5l*hJx z1jV*NSF_!f=esLO&aC4da}sh3Edwc;#ZTvmvv!mp_VwnM6OU$-!V5y{T~XYMU-F5Y z_3=Wh?4wXT7EeT1ukJ+*X!_BFCsS7T;!yZt2p-SZG!H1=)mK)xgp>G>i0uQgL&8PcCzNDfpw3%MXq0=({6ez9C4*MPEPf|6XUFC&nVZaJ(|jPlmsq z(F+i8EtGmFHhN+BvoW>c{8lfze_o9oTg&!~c4mJ_pk3H(Z6;sZn+K2F=9^zpm+BVa zIF8-Z?Ql{41esE^CmT0qlPLE!LB&|DaE6v0ri&knQby7LP3@cNIW-@M$umU9 zw7OVlY9qPm^B7Z${!i$pD!ewdC%+SyzVpLUT4xf!rCLJyC3%v%qqmD4&!+nN?$pLe z!jEB{Q5)XymOS3Q40cgl)6>-|Ga5wA=FrAh?l8eWFt)$=x5T)^#E3K#Qf-|9T6i>( zi}D=wc-v0njA3(?4Dkl^Iv=5A4%Y$0tT-;ag6>Ft10=G}4;`;YV?x`nu)nG_7*onn zQO1f0_Yi8Mm;1>yp0J&u4+Vpu=s?+y-^hU?C*rH_eyH$du?C1Z^i}B8?JMqz8<6v8 z%e=(mf_${}Yu%azxhCV)fLcv5KOS#JFltO}lE~?i?_!#~cIF{xj|?f}$l#u6gMka_ zA>yAPGLAKeod$n}i+CTLqZ|o&%B`V9J`4!ag1vpg%jkiw+8f9%Dp^!*q^7U9DTb05bI z<@Vg3{`4z|h-a7|=6ODq`A%9voYL}DkC4;R6%iFxc^V?x!KJXgriTQ^+?o>o%x%ALF$w}L}!2qZoaa8(5F7gi?gx5@}JoB zcKf#$sx3FWxVrj%UMPHbKcvc~1!bBAK_r2CrKzfK*VUY=xc)Ui5e9sSt3lU_sW>}% z2;-EZ7}%2@2GI5MIFN?Dy--vS!aH$oJ^GE5WQfPvHT}V^1-e?%nnHGJlIuTgK(Su5v-vymk6Q zo!*ti3;1(A=j^kG4Nt$bkF0N2>wBR`L*JkI=2xs(WLl7&o1SFY6Q&*#MG6H$92Y2S zXqPXuCWdvvo=u8s)+u4t?ZH_SA>VxzC&*`!2gqkLMB+Tf`kEO*(VrH2&GW<@F?w4y zjaJDNf&E=0ZHNsUY?*hUAr-W{a_xn-yB+#IwH4;y*HxqK7S>lVF9H^;bE>r)jQD^! z(pa7i`zz(buAiJr!nrK+-oC9PS5pLb{y1lb0+*=sF8$@f(QEABJ6UYU0qYODi#Bb4 ze~CSZv5E$o=88BQ2*OG+*SO~I8Wh8A=2Y-CIG(_*gZbd_(6Ca%<4|to?>_s@GIMM$ zBXQKHeBM?XBQxvA(1>+t4Igc>AkMYMvYuLV1U3090&K>P94ym(Vga%Ck}X&L2D-uON&xJAKSDX=yGUWFB2)4~3sA|?M-gAgWG>~me6GHWBj z{Nd{mw=t^$qf)1)z^lk6*rA{Bcm#!f$WS%;y7zF%KiSpC8&C-5hw2oxha7+AupLB4 z_H~?(Xa$)9GH!T&zrT;eHMuGgh)T))4@JOclx|wH5w)u&)eiFF-sV+GOKO zYTiFCDXBIhn{#`29{*7`VAee1bY&Tzd;e&cR<}EPS3XOFrHxfE0H}fG6uP$jTiXA9 z2=lktYuI&ybN>$aMJ*su3v09D8|ywC+(U@*Tm>Kd4@I)gI%S7ki_&Qjgf$}|?Bpk- z^pcSQQvUB?#Rz5Z*K;Kyg)(2GZ?8F6nryKl8^$p3g-Oyi>Tww6EsaJM&wYYHKNqu% zn$R^AAY|`(`*4+qQU)FqgxV@`Ot+4E;kbghm|||l-F_Y0!(*y|GUw)`#WaGu!|c!Q@kf6p*QRA+AG*fhbNpExN=NLX zSxS;Y*wFEX9f7}U3aZg26uol9y-CSCxXCTFHg{TRcoV_ML|=6FO~2k|M8w|H=p<&? z7KR^6DW4qUCA?4hdBD@r!l!zAT)K9_jI@C`gZD@&>^DZ9Q(rU5QJaO8m zo$*QPLH~oTOP0T1u`rGk{>+UJU zII8HluBdXCCTm?H2gukcR_ecM%WsYkDfdBjp?Ac^Ei7ZKLXZcIWxK<}kKnff=)2Qj z)hyWi3P=KfSEb!|>6;tCvVAv(TmdUC$SjYhaQf5_fj+kHmZ?COS0VJw!Jb4DBFBTG zCzrSy=CT)TCWJRLed>(xvnW)+mnkd>d zN~=Ld5b2fYb=D{wC>Ti~*ne*xX=jmHmV{pwb$v)xaGE0!Lc$R)H-g|~=K6PxAxBs_ zo@Zx%X~8mjjI*|Ylcb3R_JNm#!!=!P34a#eV4(e!m88ru^2C(F9v4xt_>)H3pOX!S z{5Dj@GGw>CVm3Sy>h|RPeL-XD@(PBfH;cCoqph>{)Z1jcCJE;)C`c`)mHbPT%x?41 zX6n8Ziyv)C1U_8X{v1&BE94zO&w!g%H_!2C*1X_`;%^g_bPZY>+7KbAL&Z)Ri&blE z6x}5I!hLnmt`V{FM6vn18sre1g2&`tl!BVdZ^Ym51vY#dB*N`mTXivJj0_l2QTC^0dOYK%Mtn!XD*gwbiJj5LRKC_WtDX!)g++7u-3$aeyqW@gSSZS=FkXdBX+X8v?!SA>kK4DOKA$3&H) z^tckood>rTRoUwpD~jQE-aGzO8rjh%C#Qi$L*6Xa+{k5CT2NOy9ptzV3hmFCpLCeN2o$cMB<&<_&- z0Uh016@yK8nU!xJ6GRRrWYXT>rr~7U*L}`t9TQI<>S1od^`g6RSHS8UOK4i_LC2Vx;?11I5Dz zw_N0@_e$0>`3oE`k zm*vfTKWjb!)N;tAHVXh0&)R?$Wms;EBeytP4*RGza zc1@xDI7nDSHLa8%8&X7UDXC2it6%`%+hsYi#8E4efPSHYP~{Q`9;7SjFLk)FW-XM@ zsg~C!W_P=SPyAf9|I$$6^Q!GzD~3VQ4h&$Jw2O)VY+8gUUGiW>jn}?X=sYq7-5#bQ zHzb?r>o;`rni=*YWl3=I&DM&*$MKx$5|@O0$&%`8MVmw~)zEpdxmv^)55WR!iKgo(a4 zNs!jyS2|Xr?n+l$VEjil2uwzaY$e45f(y3uy?4CTw!2ads!z`5Vh-^Ax-Z5;mW}rJ z^0)}jF?>C)YKE%0P1)bBh26s;342uId+)oP+lnIj_#@k>-|g)wabfCp8_k1t`x5)?zr){H>evxxVGu{ z;%q0UwRGQkGg!-FnbDwhMhcmXqsu0f2pYSpGYz&0!L)sd-@}8s%gzm8S><>Dm&RsD z21t=Vp^NNR+N382pHh~aQ~l^39*lEFysr@XR*HOKHyzJ{iBfhOZjO9vlv#SQsS80e zgm1+po;#l-p{DkSAk9g+x?@B!yqqn!htgw?EJsX6W75S z?!g;mO}OJ0Lj!UGqC(t0d=U9zW1po|I0X{>!c{xeZNw4PnS6thz^-iX(;L-)<>O+@ zu8xs}a~^=|pVV#+X)=GB?@=muj7E8Z$Lb$=%&xS1y&a!WVBVwDoI3M(^OBWiK7{h! z3JY|56NHI)4{ywR6|a9Eij9$WB)#IPkyKictA?%8C-yAs*b6|7X(22Y_kZ7x0_DV>zMXLl&JXMDf=dbcfvZa$v_xMAknv_WX<8(`qTNun7S)EGkZk` z?uytzcZI{)%6z5Nuq9j2vXj-HcqR3o%fe0pgluvj;wzT5X?+``hP>Nw{?I0rK5+orWPuVait0?bw=mIV8 zbi#4&2c!JaH;mv$MJQI_+{hR}jtZ9+QIte}wk(DNz$nDhglfH6x{S?nV%M?V;j;mV;O>Rg{Xm#)(01Vk|N{vX;bpK-A>yD8%VkVehm90jsTvxGCrdYJ3E={5a&Ngus^vIE zv!^_Tmwz$dO(bUab}w{!x%aZ^nCUDTr3;BKH&`s3*0BwymjtO(ncP<%`Z=oay zebnent;~{;1+A3~S?0C@8}}$~fKqKA{oLK$Unhbi7BDNj__pPz(EC`Za}zd=;zVAL zGmKU7XWz(J%NhFpTWb9T+^sPgc1`zp6H&OoAj+`Wp2EH-bXo7FW-mCHp*q2GXY9pM zX}A7%j>!GjE4zpPQX>OCkKw?V!z6%Ku(|Bx^Kdgl-}`=h(fO8k*f_gyY1>8^zyX-o}ChfA3|NpTbW7{eKA5(Wvr^U z4qLYirs0fM6eoA$`b{i&6i#rk3%!ciN{q*oJ?G%x#~Hok^RiQ*C;PCn&e{3&W0tJ0 zEUP3CDCva@pqH->B#;3CW1=@VJ*oBMGPOX0F=-T5)Q6NWrA=u1eAspU1hT*eMXCSnN zgq3*ZkS4kD^^)1#8Ti*^kbDzsi7)0k zBCpsQ8%d7n=+y?!N6pPQ$)&V4Evv*TiIcFljbe7&-?7W}pq#>~FSo1LlS@E#0GJdt zv0olA6CLF9tbuxkFD-=5B)tX+WbEo)QYE%HIaq*Dmdo^_mK6=(pA0Vq99~9}xl-yx z?2CTNH@6O$SfSw1G5!!LWC090jbXTpaNVp{*xgrnN7-BDzb^)j5EZ*_Dwe3_r2VR( z;IJw=&fboM1-`$Cx3QPT_k}EfSkkn z)W&CiNV&$d`DZ|1$%NI%K#Z2quS(Z)AP2CpgBG4wbw55o{kyNc?bV#$so&pZUpGNp zHkbp@BX%K(u%H9zG1z;E!e&rAf9}nDAutE#;io7Vc)iL`0=q&zy}U5xIIq6G3u0&e z&n=&{VL#{uQQ*_wRhaJo|96RaytRY4o~=^@d`kd@cvK(&s={gnU3#-$ky%EfITyem zAdtH%FRwxTKi2d4^;PksxG4v?bck{#C2#QX`I_ozsJqe_@6R6h^>wxV~gE{w<&6OT(JVG8Cs9TTl!TBCd;=wO#r~$>cnTift+(lsj}r=SkX_l zQ zYIk^ViK`!&D|+wQmI@8~dLPJt;OD18O-f}>rP0HdW>E{dH^b?$uZOT2lb-NO^1g-2 zeS|3nI$K;*O|Y~tk?=AsLDsmj`Dq9IR9X`jPmW`3H=wO|d20PrAwsV@W{4?fXAvHI zi<@3YB3n|1&XEagS<<08(ZXkZoF!QZ;V?&~-~z)H_crrf;>4vWz5Hd{k^#)EEX_s2yHMg)X_fF1jgnp2eZ;JIu}q=FRJCtagVS(tSM}Y+J<}z$0JFzspiF za|=PC^Rst?bhBn6HH`88PmaVMOFh3gbF2zfW7}|6rP(Z{xsBNTeLMV2Gl|&Ti$*RZ z-W$tNpG0yj_Sr1x667DpKYHQ^0N&^?#S#1@nl;1QWE^gaM4r9f7XHzs^G;H$0OxC? zUsEDRAGCftP0ifjcv&1-n81oLRub|KwOLo0T_3xv8=NO#h^@a6+=2~080nt@$u_)i z#;E?$!foi-9QTL=$r%-J^9dR}r9R~x#KLXfs>Ex}FJB97z9|QYAmhcg)va{$g5#0V zo8UUKA9)GcUXoN50wFW&REOp{I7t3~tO3Gc&a>PTt%W0!V0C04+;lutm3z;m}hiPv!X#KE=Cr4*v@K>sNXW0s4@=*QX?`&acH*)$o>Hg?G z0i2**OgqigI2mhd$Rs`;ep{e;F8;~P@&#LC-5feZ#npVUL$&9N>&}(AXw#HBYYtTO3_D@c8q~K_YLy@5p0@UMSap zR!ixyTA9*28;IAug#;8?j*zvX#m~dR7S1)1?!|3<;MRr1^(|N5D78& zNbt4ty1)ru7#vvHN{I&>8GV(N=kb~6`;JoIdS&k6BhWS^0U%-9bYWtIT%ibS{b|SL z!)km-iLC*ZdpP;sS7K+leC_D zz_P!|eK+IJp}K5sSLMvDaS|_VG4kB|-^UjdDBGu{ZR#e-nv=C{&f>Y-K6IPf?NXMr z_xR{voZvRVMS|$%OV&!j$x1)2+0t^}`RtX&W2fXU0IPU!ds|)^R*HuGVsjhFc(72K6jzr(4j6~LMOIHvL z5n@~BWx|VRPL~EGAYSC(TF-YanJ`*tUQ=URcVBsxVT}FQavZ$)+G>Bw^&IUs)2BWI zP#a1gmeuC)7^P~q%LD6zQ2dAKRdhd=7JLozvV_9Kdak!i?lgqf zXr}w)nf{U1Cf$U3s;f0h0eZU*%K9VFwb)v_7ckk6AfU=P(hdC8=|^m zjCOk?>_52Hion-bckn;cFf9DJj)HoT)_?T;RkhNOP9-yI{*u})TJec+k)!x+5mj~E zR@P3HB2y89B8IZpj_k$n&%@F9?`#kL)yr$H;b3h2G{y&@e zAGxr%r>BcIlD;s=K_Osl35BKsy8ypGZ;s6;--d0AYNzjTam&}N6M9@GUa`!EM6=v9 zR}Z8NZg_=4PxP>UxcBe(d%+3UvBdVtYyAsnNDPLRV(}5J#!XsVJI(F`8{Jm5_DoNr zr=@knSOP|~i#28E6G=bIU(>NOHIVd9%1oh@6qpHBxIR?2{VvZwId`TU^HHtD5&A6r zd;x6w)=w1J^(XQlPxSd`IUN8HQ4@Rgke0hUfv1P}q5y@nd*uJqBW1@AlJS-Q?rE?< z;D_%Z`DH+Nj(ImX?t~ZKhzgD0jZ2i)*P*M4%cpw{WF0;r>V}$VXe>_g;jFhuJ`4r5M3WQMLvdQu{r8?ljXmrxw=1%J%?<*MdRLC8XmUG zY%q1~VH5`v>B5C(Rr!6VaH|!rE^*QwJ9!V{7cm6iW+HRSVuaUE%j`l>r`Bb?%9BTI=bk+73x?)ll&|E*S zzCPd3PBVl>eSAtA672GQ^6Xop*AASECA}-Yqg@`ktk(Da*enU@w32<`f>HC3FefEhU*JKw!$*RNmd0?4NYDQ}JchVXw1MBfgBM9$JdAn@(KDf%to zOZD}(8a?FS)-5+0LS*E@g__I5*|^RDX%&raKkmuX^qEEma5>LfgPQg;_K(k4!{YJT zjkNkSFEaF1c6@!^V}p37h=pvdhlWV{EN8qWgSS=3v5uR8bJN&JmOU!h7bUN% zSV9tVH@KgJNUTHu1LEOofJ=wR-1C4TUaSW`HNTyUt491i5V)BjO6v4j-Sv9;8k<~N z*Zl5MvBOeDcD*AAdcX#N03zT274XI#|GMtdf2aRBZIdAR6+ov=Z_18-EH&%2(HxW> z%1GeknOicD8(H-awD1G7-E&d?gg=TT4=&1Uw^t)N8ju&4FC5be6c;F5+BZnI705sC zk9vv=#d0nLO(D1%=Td))dn4iBlwiDFO_LH^ww*#j2j1@5&)dH08p}T~R;2L$^*}?R zNjY%L^=HXdn^`oK@FkA0V)M!@w@fRRu%G3YOpt+F(8fCwV+Mg`e6K8|<2294oGtP6vYr1*fh_1y^Q9w{&j z2oPK=C9$6np{~vdvg96)uX)7uZ7SH#y5t{2JoVB=7(sY=puG$WUU9Ekcga+^@**9#}BcfZ3mnArwBA3nbN(ay2Oy*bEos+K(qX#=wadE zf?6*SI2N$?O~B~u|1JN)+ktS%ul02++R-AB#CuWg zT)805WB1m5aL?Kni0^uBZ%x60nRnUrOs~4I+Xee*N;uz2+o(H22$(+)DGHPgH3;|g z6pKV^^OK(bj(JN+qV%JqfK!Nno4dKj%qNikwH&Hegw$+r1AjB7d?(;NxiilCB#*PC z+VC4t354+Of_?mFZU3iloWQ+pZlUbj{|$9F_);C6uGaMr#DoZ~*IlBxRtD#itB(=` z`vK_@dGPt{LN$#cN*x(i7*V)I-52#PR-sx&Xmi%fYe_oKG#e3tqL>(-P8|?5#0UVu z?GI-qW_aH2w^wUSBl}|`a9RX`D9(ruP*_;XejHh+#1HRU<}N6DOt&?|M&IjVof}eO zUcj;bb3`$O7|ihp4?3F5&(D`-d{%c(%fcm9hMIBPA^}&3OPBFP3OR!DH@g06T??X+ z`(&lT`@yy*Bc>wocc5*TK8w+sd8Ff3n)%b)4Cb~nvX>~v5Psl$qb|ynSl5XeRx`J_K+f4c$cJ_*(kea) ztNe?M?Yj8HJn{^apNE&Y!F$(qfSSU{AVE-Oo#F%QX~}Ms*f$%E?B8EiJ$k?y!RE8K zNpHpIJ=}nQH^g8_qdihteC02cFRJt4=A5BJ%Qu|eT2_ku>m-_z3hCa}JIPm1sM&CB z{Oy$kiCgv_F0$1P0RL%gR6Mh;Q|*6bVWGP-%0DY?*GgzaRBnii6by1D`z?zHHRK5s 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∋%U#1g*O|>Z;!I^EK`h)h@ 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

        ^jN^Q`P@7%tS+p5ApBtFvW*J7u>~h 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 z

        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

        S9!7 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

        aSRjXS~FgDev12M)=cK2757%<>B5t5Bh!tF85S# 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ËVelWqvreWqtn)5H_@ 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%0D0RyTjIzLQz$#Xl?6wtXXD2G;MVzb~ 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 z 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

        >%d#l1 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 C5n?zu66Uc+1V%X8;2-0#%tMVfCk7MzDhoDEDpG zeQPg)tFz|AUi~)kLILZ`oq;5pk{JVkz_X<+A)66un8bZ9E1hjf0E@vmDehtRJ^O&N@=)Jyop$jZvnr}SmmS={o0DK}@uQS>Iz%U~xCO9~KkW`X zawa-gIW_fUYc47|SSsy3lP!MO4MoXa-~|KyG>k?68;|wd0Y+PsUS*=6UN`f=vgKg@ z#o`R~H==g(G9?E%Q7>5ce3drcx198F;=}SOaW%9LA1&SHegS#>pj0G!O}sE)x(4MT z_skw128etI(s!msBuCj0G?|<|+ics+Q2<(RN748}-#)|^v&b;E%AWG~0d$S#&pl;h z5Vw-*?qpU!4$_Oe@%xN)I!#;;I?}Wwrl~3A0>y9*)a!6O4IiOhN*aE1D+R?x4ohQ{ zJ9w;{)1NDXA@Xr{INAs}+mybp0>*Aq9sA{NnhRU#_^%@aG^p*P-15{3y{WA;@fWR9 zgTsUr8-+S>a+EmXOs?Vx0*ZsU?d5}?2phuxJPWnx!)88nQmzNd z5s6ALu6Y5>Tw2D`FmaAPIgbvX}eBChyqzAfdI0MKPvq&Y*cQSj}xIw zB>6={#b+&=mc#-Mt0ZPcC<0vDcfU5hAGAhk5W+KE-1`QG_W>YXFRq$5Tt~X?ZTd-X zu?Heesm5x3xBgXmIXN!9$!`>LQ@3>v7cCiB1va^Tzfo6mu$x*9y2hlbU+G;eL^u#p z{iSjcO9r$b5=vOaU!{LP4>|F8g>;g-+o1d}TL1U{PecFL*Vok>hZ%aj&vXuG*jZcI z;pw4xf)~b|m&+M98{2`URS4*^ES*}4Noxf<=oDGF;6zQoh&Nk_j^&mG5v?je5fjiA zwNO3K0VGQe-bW!7Z&x2k(g{gDRO#uSns|tNmFevf#dnqb{JhUOrckOFPsS-4aoQIh>S~98#MV z^o$?&?WoHj5}PmzvPWfN9d*#XhFck?ZT z^@S`Lk)yTQQ0YE@Bcj3$B(Lue9#Z z&^X1$B_Lklbad8`AoNP8`7hlRky?w=5`|F+*~aW zM;?~rzw4!g=S>&W4#{-X!T?@t_3LDUO)t?xb}4Zq z5kPVM6zs3-FcTE?G_ z=r-Upl$U*h9bFn3&M7k+8YI~75j3(Lfx0Q!^5KIP-{JUsgopTAH@rs`-G=2bS}Xcl*;%sM(vUiKa~$EU_l|80&lI<*fq=XwRe8hR*IR6u%1y2yorlaJ4A ztsm&I*sTu$Gb!}LPHAZMR5ggxLhr&z`2%s+QOJh`UjFw4^w^2vRx@d957CdE|C^sk z1aH?_babXR8Jd`Aa7k?*pX-V+gTw))TDd@~Nf>J5Ci2Kp|hS$uBP+kma`hf0X z0WDF8)@<-@o%LbUjoZDt=X+Z^A6mJTjlofBb+a0A%MVI_*@VrP@ca%NQ)>2_?bwKS za^yp;^p=AJ=rOc}pt>?girF_;mDH@kJ-RA`d&ML)Y}8DRrH0N1!-@I%<_70?S40Br z8}=n`MPlZqrK78(izywqO-WnvyFdTOYyWrm{q;%yZCa0$YZ(^#&piHbIc(;O(h4QB z%BoJJkG7$Nxyk&p*0;qL*eA(DIUF+^7TOIWmJ}X$+xm*6$^frU#*?l`=JB-LK|$HC zB8M&M`ZoQ>f|qhCRYr~xlG=hWr!{xMT+tcq}L|7_nl* zz=TkSZIK{f&?$;g1yHVC=;UAe+-a@f-Jy+q&f>jhLEF>8_XPjfGo>vYRdtA-B&n$H zgMM29qRW21b>-K?c6c*-Q-+qM;&SW0;UORCmo=B8FF<*!a$n87Y?GgBL1nqrk!bi66eJ^s%5;iPz>r4jyj>InQ`cfq z!xy<3Wi33t0Y2u7Pm6@4*pceWGTJeO^h7f);Q7LTfEXccRcIsguXR^Nc=Yt1*BQND zl_!0;(E`sM>~4Y{2Z>p2Rlw!y`C~)aH41reR`pzR1~fA)Uc9N?&!gDH+ASoD)Y;xb zUI!Gvc%Y@(VJzOAMec#!1|ytY9MjRbHls^aZ?xcqX8wip@Xei<><>JjjTcp;`tgqe zR@h)om=UvmYE(D*F$_9wj_JR$P2x}UYussgCeyP@?%!KRJ5wVU)#S^7Jt z)YbB=CV{7&xfUkBxRY0q3C4l|G_OEo(r=h!bLU5K#GU<7mA5)|7Q>d-cwH&#B)lQiZm5 zL!*1JPZ{zP8D7FfHGR8W&<~~V9vJk9d;X1tjNc%2x*(s;Z2i?8QFivOQg^lR4@y$0eSg_C(e2LVrudOey z4&t9hR;H%5NL&Pe>t`z>9Ma85&ptcdr86yB*IVRTZf+hAm72#E<2o;ax__T&gkyEP z|J5YSU+?Dl+UK5(J>gCI1l$1ZZ>AvaFMdV&V^on_ETV=F&>QL84u-3mXIPh{RM44S zvn2Zi2WqGx3nu!Jvg~W7yapH;CG|g?Ajx3#>W?>ZvU(gU-UawK*&~2){lR>Fi~fBb zZk8|*sazTU3}FAPrY2vxoj{v?@K@s|hGc-k_QvmBVmI$Gd0gP?J)m|4u$O>n?&lyL zEEe2#T-N*M_OQLG!D ziETLnwtwAM4F1Qx;C}V<0x)h2{`IvH+3))|thju`%2WI6DCTrRE)q_+qeyU zq?6ar7K(-VP7O8%ze#};8#2?=|<}VtIszwM&EiFEKbtl2$pX`jw z41DeC-uAh7Vb+DqSoGb=v`2UEni)rUJ#s*IvKO#sZ-0TR8oH@OnW?y0M$&BEa-6m< zU#J-c>+eHg%h(rT?+K(J;{=Jg*eaA;ubh&1aj`Eho+>7PR=COQME`3-_P-DR&-EV~ z`UxnD)=USGJYCwtn8+ec(pQ%NsNW;HKF{U5;`^0{7&TDW%dR?Z{Na}QiO)T@ya&bn z;a!|+7Hhj}3hI@%50yebtzOv7Kz|c;z z#kS|~-T1q4nHRK8_j>2DW7=_h6kX{>&mN}0*JL;1$?H$|OvB}X`@SBGf zk@|6^(xy6&{W)Qkn+lG~gWp_Zk-zuncfkfGpkfkCk9GaP+PK-UK^r&4QD56&`lKWJ zjKA2HB9%p_fBVuofBu>B<~HXK7TgzCB{G~gILnH*jmFqA9){CIVhmV=EP?}BsGVY9 z_p`kcfQg81F;7-~4Yy~;wNgUa3ZEzTlNg|ED8#!{C)PE5GDjYt6lkyxFS`ap8~Dls zmJ-CQ6&JD^pX)+#jThsQ^8eZ<%x25e2?FoC8AKFE5kM=fULkO)4j=7;g7k=Ge7|8m!E$ z$At!e#ItJc!gg3VDH=r_Ao-fV6aNZu6aH$AN*jAfy@?BB9%iXL<51UB8}>~QT&a`r zK7=N7xtBKX8Up77R_Jhyxr^L&buT8sUq(Z|U`}=)Z9e(`p$#aWMIJ{TvAcfop4% zr>o_W4T((^@)diO>RyP7d|zhYuIsRa7N1ahr-cus0hhk2@+3-ATKPm-OV}u4q=RN&T<)>qT1tXF467& zuiJvL?FS;Q_*>D9J)Tv~jRW!0t_8(5d=KjW*CZF$(eGJjIRwXo9Ecblifj{NoZ4y& znslPP_c$ z`%u%sWh_C&0G577Fxlqd-J*N(9Nyf{Qj|z<4Fv4%8iMJ2s~6^k2wmgsdyU~&kDe(fGsBGW*7Akh@VT>?8 zT6d@@wdkbPN@W75qNNBlXnNMR;;3U+)*jYO zr^}5rgh|Q)aC@a7(x3&3+h;zA0gPkLz_|76M?H*Bul%LcpFX{Yz?B+})r2(SseE`8FX$yv=WFDyy19-7|UkMdQUl$2)|X z|IYMe;^u8^eNdT3Lm5CyDDDKM0Yd~ZpP%I>uuNI6Fi%*C={~zBK}wHsJ)Yv4-d>Vc zfr{|vpNqCocD$U?i%_@T*CSC>yeOdpoz#{qw_?nC#*|sEdtpgm!7_s&-hEOg7>A_k zlf<|;vHmUB0iAtKE%}Kn$DO=C39H1)mzj4^GdWs|yXW8ksQ64?-wgIwC3dn=X=0@r z&cFI>*#$55kE;nmO~}?NF+{N^*pH5ufGb*AduHxbY4}Vciek@>c<2&kl@esBb~z8& z#=>{uAJg`|SP%C`AdWLM%SzTfZ%-%4cYGHnpqU7`Q^vdkuB?kgf}}t3;oU|H4v838 zrYo3LFUE~o^riO!zCp;S@WDe6d_Ur1u2;>yg_3l-BaG&{w=6zuWDdBI2m*P0*?Z;} z9Z#L_qNy&;0_u&go=#B;29Y}pBkoYJv6lWg7%Z-59`AxJ@Yf@{+5vHm7BJt}%E;V~ zh3BgaD#!IOkCQIzI5s&zve;!4TNx=J_-T+mT8#SExy^{e_UEN5VNQV4nop1875OT_ zX-UInrLRSQ%r0+4mWSncY6*&aQ{P4G%WGZV{D{LC>w#7sX+AA+FTcXL=gYOS3>D9) zR$Av$i&x9!8mw;cp49`5q)dFu3J^a6u1cQn^cRHX6+Mc$k=fhVwo zT))A>vYNvm5Rjqa(cEniJA;i$Q?#~89j`YpO`$)*1dA|Y_iI{)m5n{^$6t`U6~OxW zTi&HYwU$5U{zbM)SpV>G!J=Q`4DBxV? zl!-%w;T51`v9V&!E#)J4hR%2v;(fjaB^BAes<5`jcCu_>SR7~I-P&-F9&>AL4;k|L zc_N;h;A>yRjP?zfnrL}94)ubT27~m}km`K%=n=c4Sd{pO{t~%}9ZgnMUaU#(59wDy z17H?smj{|I75_!C|K0pcemzyamSM1?7ozf1H# z_@rXHXqDUxoi>VSuarh(dFNxzR6wNL=0hQ^cl#U-li=8+9G@tGiATjQ#2Yfm5Za~f z7HhdoEvQ@g@BYOq3jcb973)yyRIzC3CG!&CSBu+$_HJ}PC#N5r~ArN zOwaW@ow!5z14h-PX(sQm@Es}sh0MVrP2b~4OSQ`4BI0zCx_ps{(}4N&KQ@45Vu$4Z zuRTEB-=SjD_h`?5xv%a^2W3_it7Jl6I+`EflI`yRVP%tLmQMfmFKlI^h#ULkuYFOG zC|#7>zcXqHxktzO=dSZWgmSx1Z1IeCH!SZBXMK>(+2WKfWR$kD#c;TJ5#ZpMk^v7g zqd{_Q^dH1U2F4N6-g-$@o{Mk9{IG5WE>$*dGIfV92$mg)SueC0vn23JD60JCYd3HFtVUGhW&j8_>C7`dj2>A&pX`y{qW1ZxEo7an^{qprD;Wa8 zdbz0>SqQj2uCcHg;Gi7DKk{4Ori1W~V&W%tlcxb|8rmNLq@W3T$>&<7K(Yo1?u$Ri z{Sdv~;Ti9E`fIkWWGQb!m%X%hgmBD#L51!vcI7#dH00SFHhXH=o1LdS%Gd~_WU!s} zlMogwK%tKx%I$fQq4c&5v7GMk#icpM>;+Xztx$_hS6p@jJvXXJp-i&lf6PYOzLqld zD6L{k77l##-Yq4)Fz}F;9t7CR(4$?7^jMV!BJ&2w@&IG*p>~In;cMMDuvGC=rIr9e zcpE4Qtw0`PIeQ28Y1vEgV5JyG=j*xcIS<#EYoB39RQT?^yjf}<3HM&7khUg2k2VfD z1i@c0;BZUnI%eA*_{V=1IxJ08@Uxs-FG0kUtl;qDjGZ|u@(+L=9WZN6)K0VC=XccV zz#8~%kAi~Cu8Uu;55t(B-QVfQqR*8x(YI_pdbBlCtdw_G)juc&wN>Iz)xls2cba4Bc;wkOZ##d+}i5W*)Nx5nj;=Q_Dkz)hmw!d3I7@mIzd?4V zF64f`DrpU^)~uo$Ia)zLnOr!v%4k0cG04xew$;zxP^J;^kbRJn181h11!YO=9#kdB zu)wow8?8bIc%4~{`dYr@t*POD&H2r06!_0U=?PEvak)!^P7j$qO`+YZIQg9 zsgdJ0@PywN3}C0@YjHsxCuPYp1{%aZyuB_4dSFlD>vKsMsrO9hGYGhhB#D-mJRxh| z32Xy}Z{Zcr=$0GBT1Uk+mi4$gF@87WY<=v3hF&_XXUyajFq)1sVb#u)Z=Dc1Lqe*s zdTb(-c}jNroyn-J3=W7>oI+NqO?JTEtatiH`=b>R%5Gl#rfk8$80jjiX~{#s&vky+ zfizBnu?c``f&2VltNv&657%A?lx1VD0|;({!)Nfv?yOXEQ}#XTu80TB^nCj3T$0cw z(TatUNAbKzI_*G?73;1u4+X%X1AZ~>49GOZppEqK(sB2nCWXaZeXa85Es?*9_)E)kbt_r@%8Hy&a@5VnF;e^z^y<;jCziVG7~ zpAk~H*let0EUwqbRMtO^*SeNjB5iECKo*z~a5DDYHC*Gt6@r2B!;+Lnlk`$AGQuy_ zaoo|L5=AlDMlxq+c;%x_W^h}Qa?^9j-YPSIwKwzY)+iZG7u<{0Wo>TCiE*x+P)w>w zK7wNi6>n$EbUUiir$fh@ep_6q1gPPV42!J@2_l7>t??w1O@SUi*GR;LJq9I*CdnSE zGyRe%&XAHhNGn0@oxW^D_P2f7zls>e1grdw?V8(_*~9hxM~xf9@fQ_#;7w#e zyTCOc14p$Jgnd)SqCh#v8*#C|d##W8z8 z!H{sjXj4dB)1XdgTzlrnTeWn|tk=FoWl_BBaO>@<#wSQ>~IZQKM`ENgK+$x>k}08O+>o=3h((&RQf?dvY|> z0%{`m?{GP}@appT9FEVYR_2urXs}GYdo?tu zj#Eby7zf{${9KwqJW$@4{KdfGY`X@{umQt@fXVQjg_HT%k@;G_u!8)2!G5PX`9P(q z)fq?pf#}ee_eKe{Mbx;VsXZX5t&Nk$jWE#-VB++|EhYefyF6FQu2P7&A`1HpmY-#! zZ+DstRkt&~QQbm?S8$tvMxz8uXMRFSjE%^QY&BVf%E9tGsNlZO+AzeMqPV01^x88_uq4$DEs% z7%Y`Alu>Hj(e%&&vv`bP%*d~Imh>VtPZ7YN3wnj-0 zO3LRCsgG|L(qzD`v_p&<->3or`+phtttA9Z0hDEDrUT^K!o&<@&12jv*;XHx6&5js z6!3SQxwrg4&!OkmBNs_au;Fp-euEx^>v$E;6CG2S)d|vB4b*%iD~@1C6wpoU-wHlo|Q5`;-ztYgsXXRgEwi4aXnQEofN{HeuU5_Q zeJ0p-e9g~x;pBhK2nbphhg;*=ME>bZ=nD z0JC%!8^#bDnypI0B6+USZtn)~1J^%mb=k$iV2*@f`@>~%t?q~K;|IgMMhhZ8zoZ1D z^rj-Ws}(4-Lx2t>vp<~+PoBx0LM0P}RmjETmFbO#HxhO*Co|FMIk4eY;%sT8Qoe?C zUrOzyVdCc-z5?kAy(-Qnm5_zOYE(P|(%Ft4Go6;-Unw>zG9jRB!a@g$YFfY;NdD4z zF)QP&D-)PpZnSi-XUPRhSc>Y-2oLRS)TRwe|=4INS=_R>S>wH^#w&a`?oTKl%2|L%G2#u9>5Xt81P)nr290#rSsEd7mFTJY^ zmTH*OQZ2d~h*J~UkT=uGhRn;(R7!@d097}_W+$e{x2ReVMuJ&RQL?~CAyf{P3JI~1 zE4>~aY;5(!6>A^`MVjw0MWBSiy4+H)$vprv*JETvkO%r&Je7TuDoKBDg1U3-Kayc2|Cdwza(m7qAEJZ6mtgsX|ML3!_!Zk`(Wquvo1?7n zPmizt=u7ZlJQ`q5h3y1SIxDRkzdf`cj{HqB)b?^HtE(Kv4r06ZE zWHGc(Jav7wv|ePu!K}H~kwN*~LO*psMr!d{EU#+bOZL7YV!UZQ++Uf_C$?rlgg)^! ztbkc%OL1upZft}qrIR`Ur( zzi|a;1zu#YvgLJ1SttGN3r!XmcTJj#q)W>6ZXcWLDPkCKRdwsdg{PoZ5r_u>q?56< zuH;|m|NDQzXFa-|@pu3G>-w{#EKZ)y_uvQihBCjd6kdl;^C$8NcjYmB$@u$R z<%rhsS!b3(tf|=(cH<9d9>fv0WAItF=rUz70GPN9ici9|4{fBRZbSxHkQ?tR#^x*gB4Fc@? ziF8%j5kyQi>!1EP5sH}0LG~5xgt|K1CP(#~O&mUIM7{U$F*eOZzaz^HQ_N6JDe@7M zC`w8PDMwCVomf?I@5sr;gWH-WSG!L`uB~Hcyry_aBN$zYy3kR~=w>llZ43*f+)i~Q z!F)Z!6#z=)dt!sR&JR0a{TS2^4aX=CDl35qrQ2m#Yj=gW1j&>uoOpNkCA2HJxl0sl zFQQAoYr;=d*!CyTmL$!44BB2n(Oob+cXJCX0?^-Z^^wZyXWJiGAZe%9cJxx88V}J& zl~j@`&qON^!#|r0V)BZT$f5*;`CQj!3J*XK2)!fGxs0ODA1x@cf-L#)P&8j7a6E6X zYrE#WpO$=nvXr8KNdEq<%*rqpyH(H)o&aO1rzAJUq~9aY>w{*k{DJ}(8Jc#Dh=XA? z7xGGzQSs0tYj<0o0hrsw)5n1L>WQuCjcq*b@hqy)Mqqe5uso%oni2(d4tWBu0$fU! zJDkHfMTy{J7l?2?0Zm8d^xK$|F*~p%b{_w6DS2qceSK_vdk+AX)HxlmyAY?Q&hL2 z9dq!OQUX=YtXlEzsGTzP1*#F%yq{-(ZtzL>SpVEgL-)~;L$ZYSdxHx)E`N{~B!uHo5K z!%ou)DHoTqkM|d347ZXH15>AunruMyFcG(vlKVR;QbV{RqK1p)ncb8>kL`9)mZX2Y zIvsH@U+$GH=tnk0P)%(^sZ~Q_qbbI#9s&S#|7!_g`#WlkQtHi z4k*0tzE@k+WonM5q2$;#t30)MQbVG+@9{0@%8VZn5#k zcvWYz*aMV9;g5oT`yjEi)<%ZBu^@|?ox}G%hCIA8g5z}%}ghxDg4xOZL za(f1NvmG@GZD7zSGc7#uhhMaB7&~jADz+kLx!*O%`^iTv(EDPW`=Ol`jRM<&VP4zhkq5}BkDH6HRMLQ$pL5P2{3CR*(eX_c6;26V|8NaxLVhM=l&F-7{IoaWq zNK?NaGSS$|n2GpHQHOuM*lnBCIX%wycVUgJ8iwv{c@LQ^vAh8pv1qYEcs)S`WK5Ea z`u{my)5W7=LDgyQl%?%nCMG&vb+Vm4 zPr%@YI6of!47)G!cI+r={J+_{Zv+Hp1IlXnrm~!twT=hU z4U9@-{tQ$g-*4h#{R+VtV|6Eow{kXNGcnKS#gZ>d7M5{&&u1W_mZH+uzx0Jbo3mUs zd{$NZt&oRJ2eY^Q%kc=z|8*5rOP#Hb>41yAW>rfE)R3dq#6Fey9wB zCLqZM*7YJ+cW26|=?bdT@-=e^@7R_Eu`POwB}gSB7i6!V(TA@J>Mu$z{flA2ggUU0 zz`o238;;EwdLxC(GCWwrxzBd6K6*f_plm(oNt}t$JV{310br zjfsPyMw!{rXNLHpnk7^vX=@oFlS#!c1Cvu(BJ~Tp^3)dbf)^f-`Io`reLKHu(H=P~ zghtHm#-Hd)iP3vGVmZq4ycXP_DDrKE9>-T+m@i9P;V@l?D%0GC9nHju541{Wv(CmA z_Huc~8%dNZSh)&%!n86L@!D=!U-Y5ml|t3`N_G7h7t+}1&0`y~xZOGN@{^UMnz8|d zFus`*S-OFrGIwvwtFk!Jg)@Lo$;o{5yJYUKNJ$c&bD$xQrzulgE|X-M6a0-~b1%Og zm1BZ!h<4Vo@>f2PHjQXp?>klwcq(xz!}D5CJBDXS9UzTYKPh+#W-`0IpuWjwpunI$ z37x!jS(5s%ai9~wB{CQ7EB_xldg7}T+x=^bvrb^gpVO-@*q>({saGz4#zK9xuB|^JJ(N`C zYqED_#9qMtcg=L~iG-Ny|Doy~qbrHFsL_*jY}@GAHaoVHj&0jEJ9g5sZFktQZQJHM zeeeCg_g;-rb?Th+qxP;*YuDOy%{}L;wq8e2WW-qItWuSPxkXwrB7-)&W?-iT$meyv zUv3TVN7Lcyo2N3sds;=DwPLj;fb?4Y_5i|adCEUkqTD(smn|sbwsL24!K1F6_aN!-#mtzlK*eCZv!Wo z3t!V;UmtkLmoql5V)@3Ff5pO6hg!F}mp-6HhV%$%OZk9zU#7Q_MklDFl3MDqG2cwaY0Blm}==BmvUd^id>~9c{fO zg-%63dT%OvgKOo?%^lajeu3S_@JZX?sAnhNq67C)C$Wx{#VwdnXW04Cz%!~0q>oI( zI3WKYa@Y~Ab?Ash+>Xk%t6bP_JYACImMWf7Xbgq0Tty1Ue} zimt+{sgvo04k}=0^8hkc!;AKSzP?HPg>!adHtM|p_MNW7w}q!( zeNs_mCYQ%fX)x>(HUbMO060!jJJ{ptCEe$Yt(7O89gogh)l9YK7OxaylU`Y#vu7Xq z#wOTV5DeE1YI$>JL7t|h`e0Hpd&QE&Bmvht9iGtsh}aQy?dIN#!XyHFC}sRj7{5E@ z3amcDo}s7-Px zt->3?Mj#Nl=0LHOfmN50k$gEN{Ou1_zb@{XR^=pol{7=&H?b@gFW=ZVk(e~Pz2Z<7jSW?!T0_UuMUv-pjnkYfF48toso?zx+<14&gy() zR`2$pd9^cDMG+mXT4f%BEE*G=$%~S)i5OB6uR%e%cpWRAz2 zX9u-o-r2iYhZ$1#c6b;MM%wQL1F)K{r^;K+Pw@=z;`JWZTl#gv@pGb9jCv-lL+}$b;nsw-?ZIY)KJVkn zlcXISo>qp?lJ+7*t4W<8Tv{KVR8!YD#ovu9$=3=4y5^aYQ|zGzT2?6$6;H-Aoemcq z<;J{bEPlxFz1)w>!+m(d{J!Y)CiBRW;?$h+f5j*uFA5=8V#6wTX}HDhqT_1Mk30L5 z>*4vSU{}_XP1pJxn@`2a|HAWsACN$3he#;1^S{szv>*AEQQlym=VVGZl*B#p`NjJ~ ze*;8Q){n^PGZ~ufg@w*br4sJYuUYUyI2nnyXE2S|^;9ZDK4}ltxP-&vmw-3!hnv{D zs3*_cx^@@Y;I>X0XoCO&BiSCHW?Nw&7_}rFZLTzIhrz4~?G4A{kN zj9X1{nl_wrqbOS!3olV3a?w^53%*Uo!@U!J`ryjVxnsFm)h5bK?=d2joM#zXgTv?d zCHO8(KYd?xN(@J)&a+^QUC1NMTEf{QKHAI#{mPhj;$nvAmlVq#8KhY$QC{U!9kFUc zoV{v51@{md8ahuEJU_DR&sfq|XF~6M9x?jCW*)KiUh`T*XJZY6qN4z%y%$A-MDgjS zBOM|#ObIdnRBwa`kbMnXGKTyLH0rb>4u{yFikdJTcoi*5GA!Z2dcSyh?kCdR0YX)_2Lj0*e|J=n&2TCB<#G+c)i)mnd8nR+ zo`qi6RR(SJQL^SUWV*-(bqBnXlS@PanDplQwpX-!^6^6Gp;&J7*r+nnLN25 zN8=TsF6XPlO_1KAVhBP`9*5jF)a(H=xT#oo;EX}cciRPQI#l!$agRQ_u=v#FitB`6 zB^05mr_7yE+Zz;yWE_B>$E{Ffmkf>!=?p5PwX&`%Wt+K$6$t_f^U!a!|8oBANU&~Q z%ww8yY6^`D7j@;3n~W^amVTKwK8^}nqTKrzDut%>iG)_A|LA~%^Sl1y3#yte#8Av_ zu*hIYjs!>?j-}PPG&+QY4FN=iN_x)RPJisrM^+I7Bj6|5fz(Lw%BR zeCwe$$*vE!0BFRFpi%JUM<17)B0;M$bolD_wPAag9|jiQ?^w7-pGf88KM)2lKNN(K zPR~tnig{)F2fB=~c~Ft-(CRg4`E*9EF68cf1fqpXej4A_Tqhm z*s3wcbl>QmMQmLygL<3TE{zyaaB(=QEu!&>h$k${tlOXb=7y5ZvC@FO5_;!S&5t`_ z1R*{tcxL4Tsf9tScF3#^SoW^eH&fZp&i4ft`r9d5j7<~ z_>;~g(kair@RPNZo-E69jBUJk_-v3qsVqHA(T)tZRvsu~2aKq^fl8N*j*O+-u4)<^ z;t&R8Ao*BRdGrcc-J1=%ald!Uv9-il`otUrI1Yk}vc6+Oov^Uv14p`wug9-9c5G!~ zlIcX8iSCzSLJp5%hvZ!C+q*^MT{daCz*RHHtbz6hDX{i0ozoXEP4g@&+rp!XR-J=Q zQBPxgXo3q9e!bKgp`~$Q^GE-}U~+xz2f5NosK`&-_2VGd#DHt!%Al}Lc86ib55DN= zzla9AxMUq3iChg!9J~#O3$`^+yLr)zMm|tc!n9T#dU10v)wXxBdo=uQ2S=5E2P{*v z0s37z)aX$D|NkKl@DHBp|9U#ggrX)Y$QM2ira<+c>UO_#>*DC=4Zwo96%YzCA0FP&o4`5iOV&}f#)Rz;bJGhEW;lWGS#2A~ zgO#G!)TJ?jDS}0x*WXY#4)1@~NC77Bvz-?+u5tqGNwe*tQT~X<9=P~lEOJU zehF(zB%2T&lSiUA#^DB5sAmF>ApM^cqvpHDo4$UvlH5GeJ%I#g*zVTbEtL3|s3X0q zReSWWbPH~iqLozCzgTM&NTV^tvbD^nc(%4w{f~4LzAWpzJDQXJaPuSxdBmGmP&|n* zE>(h~?_|Zq54P6Fas62jPh@Jn;=I|%4PD>vr}MuXMG-Mg9eas32YdZ# z{{+2M6*oQuPT+dsO&2hFEpwk2`WPcggck%!+&NX0WoP>q8+j?1(rJS5MB+;@h!Non zn}(wyuKGUD$PI`tk_4~%SI=+4B6v|TulOkNc1{>wC6pdZ{(kAj5-LM3(5W-B&#ibT zhP5Xd^0e09=`T>&rs?C6EMq^0 z4yhNU44e(Q5ohby2R`}-^n#$hfE0+*9dd{=N# zTov>|mJPiO&yOzY?Kw*r^xpLQZXZdk&9z)aaA8X(D=T{n(X2S`ix@hA#q3;+7sPuA z8a~7+`Mk^rpBG#qY!vQHdLfZn#Xu{MpKLXT3xZ%9+O;%#qOw+Dlv?Dwe=39mnEbds zPmD65o>A%VHb`x{p9ki4z~H;sdVG65qaFhe9zb$#IlXm7-W#vMQ;lin&Od>b?rkS=HQr0ZoJ?YfNoX!oG@Gf;KRmU;civ=_~q9i zC0H#jL7N=oKUvwK^3(L@rlXviArngvcMhr3s>2Eiz=Hkv&p<&N+W!-KfFt=Y+V=ms zH2fnb0U1}rucutpLuE4&Gh2x@sKbjHIjx6Jya!k1YfUu~p6ibmrVjfk6FC5|)Ev@x zdbz%Vp$|dIG*8+?WCbrjQo4&z)OX>0;&hnjyTN=)NPEy|_ZWsOnxHsAl=1kk_K-w>OI zA8Wo2f0V60&OH9_$A1I@8Iar;AiCoLhlKz#t(y}+qoGHzYGPx~2X^n^VK=cB(Z(PA z9^ei|vLSdD5pCUVxsG;U-S)u+8&GJn!nohus`g6aow`{2OyFv%tmiK< zS2EVDOmGBkr(1uN{F)HsvV&1{Evn)|RyDKxB1~`IQz#t`axIomR^fjgYO^9XlDBOX z>D@M#d_K*YuP?I2iyO7_d-s4H*_^QoF1#C%iMjvcOKOgukY0z~w7Nm+#*yj<2%=yM z@y%XBzE}YC;TJOxF$e3Xqf%U~c}KZ61IA#I?ARF+DdGh46+T2$*1&N6@Sv6qFxdrH zl1C2cf|si7pBEUKym6(WurAn~GRj{%3o7~xZX3hTQ>BsPCYIU>(XNYS-n?uT1h_LQ z`OjV=>DU|W)?R&|dC?1yPGXX+heKL>5Z zN2e2DlKLLB;_AdB0Ax1dFJ2E)1jbVz5zwIXM9|+dDSx)Xg(gIxeBd=faX#${aZNb9 zYPA0d%|9n%TjJ&BQBHW?qeXZVF}G8(=bOB0L=|P*1O)Q2%VgE8L&(oBt}N(QET;Wk zu`iLkL^~0ZjC<=Fj<1L#w+jTt`|Y7Y%3{hIs@pQRD3P6}eE&K{_ps6|fLjm~qm<=& z7e;+%K>Hh)nx2eNLus&ZP_>%2?Y66F(8#~4*3!Q>02n+yTOYcwqs-J$CewM&WcbjD z!p3%yMQWW-!>Tbws_$yNtzBo@b~U8Jfu&d1IrMiqIh|*sI7?at1= z`C~?wB2tAE{J2#I% z^(@UNOUr#>KdIZnE&$iLwi)HX2}q8fpLsRbWdg(hG zuUR)KFzT~4Ck#@5|3THxIhOhq8UEk@UxGX5^-@l;b6?sBVsS^-XE@y`WWzSf#+$U_3-PYhWV=aSQ)B#2aG*n@@7 zTms(W@fx5fkr<@O=_L#?6nGLoPLru&<*&)vfJp_~0V{tmkUL+w!$hY(A)DoG?@)KE zkc&>8)f%ISU`nhhDSvJ)H0_20Rz{cxu1Sg(#`B|3(VKOmpZA`nt78cI}PGPhgS&c5!v5}s2`#J4zr$7 zUcmu|_ur}AK^Z(tK)?ngbMCts#UX}%L zxE4|`Q~U4@uBlZ`H=x3RX+#7PiFkFz%J|;EX}uL&=UzmK89$AVm(E^`0-&d!fx)CW z^-sPp%S|3^01}8G;J;5aR`?5OZ~v6P5=H$)-hYUHHeYXYT5H^lGx@}M_Y&+E7tN|J zO3H4B-Y<`x$~{WY55wx_v*Y>Cf}5Yk1!-O{`f`2EuYK!IFJw#?#dUj zf3_?E9@H9a(~;X`aIxDYFV>O`<3b)j`=PMVr#4$473x+{^$VYsgbpf9l=Pq2BgVx= zd--X(l!}guy5A+!hTSFd87fV9YR{~gpktbRCMB1n5WOei}6f5RIRV} zt^OZh50-vY-F;~XX&F)oRUO3v>rM|e=OdU7Z1I%zbE8PJg-t7+Jc}tmq$&CCVS!ok zu=MN~uluG*p3UamGmIct+lVqO0*C~AqzOT|mxTtr8BxvVj3VY%F5hf>g(9kR%>IvV zrFTV|Pv1E5BL23zUZ&g*0lgIsNn7g4KCtt=!8c=zqU@v(77`>^{+TTQ?fLp!RMo>- zlryU{ma%)SFN{pFgul$q<8i+*BkQyk z0@9Y@nTB1y@aB;N15TMdBXsR3(zB5;Id>G58XDWXHgm{fj?TY9;*a+VRC(%0!+DKI zKgL?yRK6q6Ghd|@%v)f#1VZ(jS1f-NImG`4KN0MXPRHD3ANTkiHWD8+Mq*a6U=WM1 z1FbwW(5wkxB|__Qhxui?``IxdASImWtl?!CRcxlXmNG^Xx(KQvrz!Z!Qe>lq?y7fC z6&+QIsgN^v#6B}OI(YzQcy0e+=Ns|`il}rQ&uX`ns{P|WGWz)9HI^;E67x~G%p9=2 zh%fn2Ia$bL=-`V6h+__J=9r403r!KVk7dvjj@6+dd_9U3%%Q{#+ekV zqv6q6_8jsC_f3DK6k3{t45b>W-J<8M^BPa)57pf64PEEuG8(vIaJcuZ*X1)Qt;rAK zD^8aPs*}yuJpM${sdHvg5s>z5n568V9#~_6`{d3S(BPCpbiGorpeM)}zZm@r8UAW3 z?vD5#XqhuWx}_D*T2;yNblYCOLTuD*ut^+*O zn=9D;P;Q({E_H0t%C{;OYh-?FKO*8*Sd_lBBLF}}7be0=)|H_<@2;t{xw&BRZ| zMC8K_g7v$7Wb*f}Zr7@^dzDSWpY@Zg(!Yr=fO|p%kFgcCv;TZ@?Iq&Q&o!0}?IMYG zK_Z0NH^KZJy^Xu#yhamzD%`|62#Td!vu$|E2FFo#KAW7N>Hv3|Mv4yZa|8XL$d^1i zg_AzOA!uLo@WZg6;9VL_^aVx?=Tx4i@3~(YB*cd$;y-O$R^F%bd zMEVzXd@FlfKlAzO4V=N$;v^Fll4G@TO{AUGGfHj@19|c@-8=&WKf&7*VnMt-M|xEI zU^QUCYc4W#VWRO@TeVjn?NTYWR%a1WYOb2U4cVK-Qtx4P`%j%07;TuQZ@AhrkwYb4 ze{C>4oy(zcpR(Bm{_Z8wn3bm9W#m)wY^yik@)(z%oJQn9K8L?2kXF~ZU z-@a&)1>~OEkb+zuHI!xoTh`(wmTtN8{R94oY9NW7vIp}x#I%CGbJ;Z zrk##huJI>?zBZ4b44be>s21{UOU}M_+8cZrMx6M_1kE;b;tcu1{+-VAF$Poim;@ zr6&lD^P&!@P=jpke1@KHw;Z=GLau{#>ohoi>O3COS@%8+t#zx2T!#)%tWRGmG9aC6 z{5haf>-Pb^@PY5Ydomy&>p$1LS(-w-TC-*FbJLmfVaT@9o$t{HhxyOj?!SlZXP;OE zkbk@pUp^%}Usb^rxNg~{ zTD;>QWmD=ML#-DXqdP}&Q_Te}IW5dC-QTSQiE4q}7y|D3`(u}TNFYex5VQBqukVbtt$5jLAx?i!l-%Hy;J12f^1GPE;LOBFLJaFsk_4}s-OX(Zd_?$YC?Q*`Ym-Xn>@)IadC4S(D>mdoiPMR`1i!?{=QX${JZs{Lk8U&GIB_-A;M zk@-`t@!DS?{^aGJljxg4!;g`S>!}-ec`>VO5s^@C zeCb<;t!NWO4Zzx@*U+j@In)f*JVUQS;Yy|7SLLMXF<0w@07Yw1ijyBH@o7!YMNuW8s1?5g-e!>Hg7K51K;|NjZK$gG9-`4P#aOhm4YDCN&xGn* zvNF(D`%39jdU}pwU3E$2&3WZdax{g!S;za5=aja?*r-ubmRwBZb|E&~uQ3PY__w$t z2TzlC=Q98Myj z3SQ?m(mvJD=HOr7T5cM)DFwusmPw*s2PzA8PEE*dK5~Dq#QG5YLbD=U4g0B7K~v_& z5NVn&^(ZX;b8(2$DKiOZ_`gypI(_h{jxNhubPwJ`kFAwfS;C52 zMK%4?P$|-(4bzK+MV0oi28OO^VvfyO_BGgNT!9Xx(R)?_ zgy;b&3c-7|KLVUWYTJ@hsk%0p%m1cPU5h5O3lm34)j%2A0`2kCm0hSlTnn3QU6Ha6 z9;;)-(kfYOGnk^-oZ_wi`8~A*B?d+E8FK1!)=i#|s@|Nm7Gz?_GTL_^x;a|`8*Bd^ zy8d$n&Q`!VgZ|+PUtf<=ubI@u(PTitk_;a!1V-4h=s>;s_3*K*yhgyTquC=fqMAwq z=Q2<^mr;*{@g2Dj;#uiJo(Pqwxt0oI0{=`X9t+i<2wPvCel+P^7A30Is=fw|YH(c= zDLs9e7KAciLUuydJ_eSS2M?gIia<$O7Ki~3mba@R#>vXgIMy79nq4JtB}7|gjI<%K zB}_gYsa58odePn1Rc=`^wRU-t<89%%ssx@Siu|9(!%=M`!;*7(emorf$v}%1Bn|>I z8KiO_?Rfal-`l_-LIKI)bJn|WxX{aTo2C(OI0*Huk!(RmziZUeURe;c*G=E%Mx$c@ zDO^i{5p$i~D`Q`@E6|X0LQR`<24|?qmfOC%Ypz^u>N}hCgC}gRP2Vss-72ct4WEHU zcb#JXzB4#Ca2sMCW%4$Cz6n5;Q1+MMSJfJnZ+{!VpM-#aIG;WeJUwvZeCt1h*U?49 zW(YW?G8rF4f_2q_ei^mNxAaJlrq?yo7KwjgN9f&r5WRMFUIy zapy@r{R<(;zc`1GAvwIu^KvfC9mip0p6>AuuYJfSEPEB_RS_#VxNVCyJ({DDP(i+JRirHP_FUAVInr@!;FA8$Pr4F`f z)%p2*(~I>cO7u2zY|rr(cYUet_d_~b1<4oIn!lK8nl*^KPP;aLtcyR*t|6W}V-I5J zMc1|YeH3UEE$wb{>IPo0>MgSHQh2$FPE$Tz3TVte^+d-gHwe+6T&z>eNqZ5TLUSZR zQF@)oSE|1VIpnaidQ7r=YPyT|ssc z*JVls(V2V()%A8icQYz<*^8yLqN+gb5~F@K=s%d$g2xER9;!_8TE2#D41-`=gGW9XPJg~tZ0kCO{|6;x8>nzSQlL=o9*a%ha#CF(B z{QC+3z$b;>Z|DO}>HcZqKXq-dRxm3>1qU?zwn$#dTt=*LU5pai#vZisv-wH?F*UpDO zZBE%=1BMT@@z)}#*oK%6;*pmqruH_r%Zk`B|EHJYzfJyvG=(mrT4fk zMoH!5rY0dXxy?UdWT~oEZD#sW3_|>^472g)mFJu91*-SJDNJ(9_1EI(uanb@MB(Nn z0iF+wzmy*O3rv69vP!%J0n)o5K(}N7s53~8fTgG(WNdKOt{)ENlpy6)JvN)(W+m8nDG+DPm9QBaA=0h3) ze9x#kFTC62=4XL*PDF{ncfj9h3Qn;DwnIVt^s$-)^J~r_nNG|E!$Ma36?(M&eUh~o z*h$3S408^lKLv)$Q5!E?;!NLR-|3cieRh8(htz)J@soS^>#D&)_-6kEHSaE`X%6@5 ztpnknI~>Fa&}O#5{OkZOFeBf^kYnmXDEm6gtkaMV?&!vXOzF93!a%H0A@sm&Y>tJC zZy)os9gUB)=py`D^IwXOcB3dD_lb<#aEVc3vUOM0OxqJ}!3>xi!sW>1DzS_g%FdO; zr7sIqrNp=Jb<~f<4QUITs1DE^PvzMBaK!A=NJtyVKBynwoLFw3X?uwNQx=uF2IjDN zW?!r$q8+fk7LwK0Ae#RKE;uRBLv-uEngxM`x;E|d9F7nSu80~E#PYQ2)Vws`+atsi z?3lvsDpoqSl|Y7erEs)fOuh8{fdBbY>=iskSoDvacJ*Y>*LG8 zaiJV*yy+}y2VK6XYqhJ+D}}igFUrl&Fym0?9r9P(OhR|J!_xGOLd5>hV)UF-kD3+E z7Tc;?5~d=CO~kUs^4y$p>2phtSu>CzyUOpY1-}Q{l{?v>@-2>7yHnE<9aj;6-&II4 z{O}UeolHxH@>eMEQL11{$!!+N87RvVvz4nC)392C_qX%psLl4ptGPj4wJ=Y1kI^4` zkqK~k%XKIik|pX{8cb}}`bh*yp1)!?M=`WXc=YrsdSof`uS)S>0h*7S*HadJ7>enH zMlw=THV>PPO)ID9s!t03m7SGg*yJkHR}BI+)Q*~w+Y{L07&30Dd?XkWWTdFv@J=g2 z$!O>)d$HQj5MTRH_qdZKWLl5Md9#^EOaLz(H^zXf`16eSK<--M&=knF7>%XAVc3Kp zFAv9s8qXZz*P%TRyupxnr`G&)H-Dd-h04Y^6L#Nr1nC%U0f=a+3EiJ=ZW-%)G=33N z&F+s|u(2tbC%|D5=oL)r%Q*medpFbkKPA@xICw(w2xXA{Z)xRLBNfC)&*#8LH8UEo zFQhgldgu#g2+0c5eYo`7r(If}s`bHM6y*7)9zNzLKLh&m`ecP86MQq2R1XM$?k*qH zhOv^In|fWnL#6vT?Lk7jZ$}q-QGBYA&CVwSxB`LstE10{sB1)4rx!~}_StcC;vXrF z<=_0~qvZn@r6z$@++n3^WgfpnXk!>-@~LZs*H+4IGk;DY_KVEp*!8vKUhJ~Em-|uB zPtZ(%JDM~bM`?8>KI8(Eu%OYN8(~rvL~^2@9KksV6`uSknwW3!cmsupUl-AKRFT=r zL4}8sC3C9y5@acM|9UMQl4b02fn%UhG?%*;iEY2QYQ;xp*6)S9aQ2HIP!9?AH(`SB zJQh5VG$4Z`aN!L%ZC7%;B{Z5G3zB*yagebjDrK?5KD6?4C-IIA)kk~NyvDCIIPe>5 z<;3jP-qc?4IK7sX_ftxQ1;HIxXdd!07EA}Q!_Z9MbdLNfe2L6}L@m6b8%;EY5Vzy# zPc99yYPO080{Q)yXqPtwk1P*pPk}2vJS(6NFdo~yv@RTvW{rI_4Rv35eW9j=xcvXj9E;LHz?N2ROtt?F zipD~M&E>^?eY3Y;#~W@2H0B3e&12d%mXv7;Ap|clYFrIA zyHJ-cl7Zr%!E5_|agn%r)>7YSK~rdLKBzN~=FFl5qN4iVbep~rY{R}SL#GuTnbKYy zzJa>(LG_0{@i^La^bS4s>RYWc%a}mMY7*gh^(dJ-@cXpHmL9iH!f}B1B`yj2=y6zY zR@-lS%dwU6xq}IZtpdEkguWm}1dXM%y_i3F)$NPn3Vtlc%NUgWsU`(ZRx1k}!R$c? z4<4&Z+?*v<_rIFC(z9R5?#+<1?Ta^$E?qEYxZ^;%u|f>Z@_j57R<|YOEnQ(K!=yo8 z{P^hUgBkGY4-w*CFW9 z-FVyzo~!ToPxAE}(;eCu68hC_zdaQRsyQ{iZyNLV=t4-Jwh;@P8U*p%~9iNQf;FC3CE z7kcF`vlo76IR>`1K6cLG9{kTpVmk1mkc)xFQMOxJ84sC5|c37|1jH<7!rXp5}R?_qzPJN$U&8f%>nL=hk$X1k?Dz z&DcIpYPaqr>S~V)sfw6qgII3IYM&+5T=ecft=-0)d+oR+eL{4*@kVy3UoV6Ux7cVS z34#1Tn5?vYIXd{~sL_0{KhFja6IU!y+_r*tR_u!^OSGJu(QllLt zNYA}bV)|I~=`Ad&#w|S*WmPOjFVVK0cT>+_Vx3ykU(W8nx|3=ec9DWx+SNDZPurce z(*_;}B_Vu;OYpIpf0rV!?_tZIX16SCp1^WQj=mN^)&(;pyK6kjIO)hwl%3`5qH&N( zW)9$)N7Am@$2+#MHwE`>OjCQwXu3{DPgt-MK!shYk(-7;C=pZe$!)B;xw1bU+>Q&>Xkb3fXf}>@f_r5ETdu`w36mDXV=~OyADxs-U!;@BSesycK0v(tMk@2guwnL}J9lpByb{GwR8Y_|TjhjbD$HIl_056E>XDS2$ttKL`|6 z^GVZla5QxPlopvU;TUpGUG$dkR!|xL=c2LDNS8eMQa1zyD`>i zacp&H(VyxMO-X(ud+iH;f7&?4yF{7v*5bAJsEp42lZK<*d^@+RFe(G3D9i}I9pp<+Ab3 z7`IxO*!P`(rFtO9{ozH)n-MHEogeOrhE=in{=|@elYQp$lsTT*_VJde3 zI^hqsS1})5p1Qtl@kO@uiRhC)xG$U>nk+T9mac}NFTtinroR78!=(KS`o3y&7lf@A zfSj2%2CLkjOADX%a`*xzcg7zZ0r~w&oz`%Zvz)3{qA6 zGihNG%0|?NEBjZ+?W9c1<%X`SNH$b1&~`n1P`Bl%&3h{P>Ss;oB!lg6Mwz#d$^YBD z?SF~V|9ATjzvlDn&2LRg7y}fD<2RBivuJcA{jhROtlX{INvvjI8#u_=Ch)!;$s|TD zs3n&DFm^=2UOK^M7+|u@!{xUQdP`t@-dVfk@|O&$33T*FZYCBwyIK>na*Gq#P=Aiy z6?z>tx^-^39Gh^3rvdbTYF7IDQyc>Ob0X${@cirSS zf8de}IiVckfArnk`497g{Egv`J^7i%9AS6do&zb{FG^Oq7Bpz>k&gWDS%g*sJq_ub zAGPmhKU}~nD%rA`-YV-BwHu_KLgg23*D=`*Iv^0K_aG|hPum_&X!BUAdyE=7Acz>? zB(Hy<>$;^w(NA2L(rS^2&M?z@)%~Ype z=`ezMYtouUXK0#&B1QW?h38r#impNkl`SX|_$}bzN3xcGxAh zOE?bb{QlhgEM^6F{8IZPvtc$N2al?XQ4h~|{o5wb=2MIAz#nR6(5H*x-ad<8Da|=l z2jDHrDvsKnVmIXEsV+(A5nKZ=B%WNcX$L?@rz#7Kh)>PaCw z4%jSZ zbUp5KV1%niV_X{ezMG9!xf`EG;8}A}F~*7!AXL&6cNr=>#(Fpsa&H>UyZenPR~dz& za5GLPBoq=3A)>as78JEi2o+OKjAZ9>T94ENL-fmii80U<6bZL+z1>~~VjPX$AAmPjHVOMtA4 z0G5bgXHqkpUqN2=s6(=aNseeKu%n^U52vprp82j?nmrpKV1+U+d1@T1Fp9uF9)MBxC?nr^)#y>+L0^-sPY{J4DKpY`lx2#D=`|Q-7T4G zq;WW38?qmpl0QT;QXFQ&b{2r;U)s2|aB3Ii2=T)B;py>tA>zH7Pm+)eU5L zLa`gi8xkw`T#-PahB}Iq^Mbgf1P`uyLVw@tHtVZBfen+42fm;6gzS&yVVZx( zSo58_FNIa*XzO>$8HIeD0Z}r9?Ov>nTwcBEhTtTA-4dSyAbZ@y2`tvxl6E1dV$1Mb zG;8OZc~9-`1rj0l()yToqf@0W_hK2m7fBCe%OPYaxn`S=6pfdDA=Qm?eXjM3w+IQPUI3sMROSgREonwUIGCu7ruug-ObJ}dQ1g-R2 z52)AMoBSZ8v}-S@?k?+vWx&gyhLeDY!vYD$qLtimp6#iW?orN`=xFk6-%sW?KD%^_ zny+{HnLwN;6IDWjtm9J)d<(pN-4=9UaZ?5Um_c%;#0Qdw#BE!T)Z3Jf@0u*{08>1Q8^9V{Hi$bZ60lU)~0x;Lum||U|YLE+$e^zIUYo@8LP!OEJlpdnK zMsqzB3N+DpP2E+t%&dsHe_XDTJSxUX2j*M*5btor_8 z&@sVIS_K>wN&a2GyCYRRyFxvqI7i#5K#3c)*BL|~08ga1EB!ck__>v<#pGXY{}Dd5 z4=5zHu3BqdznKz4{wL)_|ZhZpWs%X&tX zcRLDXYN;Q|iEU4WI{j9Z&-F0L$esYjMJ;<@HBuc?J|^XobswhdV34Bw4-~onvzMBz z%(hoz`%9r7Vl+M>W*OPmNr+aMxI zg^ufZ#f)tJ4MrfxSuqI}z6(Vpp}1XM-^_`9OvwEaK&{5KyRf>36vWt#}RiK>72*kB9Teq&VpJPLH#_DUv#O3A> zep3_CBB7p2Ct7efY~ps6zx65;dsHlcs=PK4%?NRiCDk(}76X(gbUX)spq$Vdd#0+~ z^-N~6I{fihd~S#d2M-}F$v=~wA)(lrrz+fgwh4xII+r$|(})-rs9u z+o*pyz1>@z+nJaHji{_x{oSPG#OB$Qqf2`n>}{2H)aZggz0E*jivD^dbOurbV{d$Z zo~)Z|B`aT^SLrB^kQvm&hn()b7HhwrB5zXW)7M|Q)Z{}Hp-n+R0;)<&cK-dL)$!5B zd|a`U+uhHVlqQ$Au2bVDktsqJ&4BqbfFKmRop*_$i>aI-l{m(+LewnUT`Oo6A`USO zn3yOEsiwyf+2NJTQ5%~o0U`^VOVNQ}a+B(5_m@o0;+4@5j06;Y9Y$dB7-HikS`jbE(kc~Ge5_#bt zK)iZF%Q*_HBTAEjGtq^4aPER-2BZrLFwTc#QwLAN(U-VnB2wn24YQlG>9*%kkS zCQm{b%U+62jN4Xs)iol)=0OLP(!rr&in^VrukK@VDH*SlE4DQ`6u6_urI$ofp2S@;BnIu07SD|V zXV;6VWLV9oiB31?_*;U)%0jvEtdU&q+Xf#}gB0m>%TBz;LkWbt%u@SjA&5h31Dv>u2yHlM-bKj zEh-*yBB!C)rBwKUIF&)FL)YZP{CG<1G7vxAx6VdiH`e2J`1FhUw|jDn*y)fyRV7x# zDB<^2Z`QLd3YO{=jmAY)WRzB1j$8A=c|037B9?>;nUygGw0(jYpL@+)#b>p4^OCEYcPH;93Up_YAEAQcIAp000;Wqyd zSML}dX%{r?c5K_WGqE|bZB96`ZQHi(iEU?M+qNe;{k-pY*1`VK{j1l$tJl4&cIhf| zL9IW$O0aGjNcsr~vzLjNes5;`CcNHgo>hj-DaDnqzs_XVTjR^JEj@VdJ0nt*I_ahN z+AN4rQva)@(Mt{dJ1oOb?eQ2)c;1h8N=#B49`-Dmr;k9}K4io~s=b0~0onz^xy1%q zw1BnOxezB39}$K#~%l9@5epT;3kWfBRO7|-J3?B8bjZ`sJXvaQ-b zv<@1E47=1y)8=b{km)b_5!gArQ~G_Z*D*E*bpd@L+p+!grF3P*N04dH__N6GVHzWj zCA;6P?4t59t`gULav$vkXzghA13>q0d&Pc5Ey-7}qis6NX9-8}cu%Ql+ zpc(m0aHG)ud?l=W169X7I?)ZfF^|qU3iU+h^PPdS_zhV|=hp+n)k9t=>cGiV49ICB z?u|w0;@}d{pgUA8E2BCBVi!@rG2_@QjwMrbD!l|1LgC~T46=}X zUEAE6Edyt$BYruKLP(iKC(<+UWBE|Y4E*NI*BH3oi|^Ll5i$82srN)%liA(EtD{os zp*2vlp)-C79$DWHbVNZ$OHbOvW{j50np+?zga9B$&ZgRwFY+!QKq(RSStfzH5Xx0J z)8c=#5=h@LT4va3{KL;s#CQrS58q==m5cFxM7jskpMon_+ENiJZa!nTQay)wB#Lr) z2{hsV9U}le3^T5YG{}bsJHt4#!XSDggD*8IVB1;5)k?%308(BlsIO%Pi@3g-Ku~WB z%`!cSn_D-=atb45J$z=MpI^^z217`C6L5REJecuI{=;zX*~s}rvw;Wz1}uqU@w|G` zW0Ubg)+Y~vg!`@mfPwetFD?n4>7Kf)+j)?JqZYh;XE3E$o^*XzBB%33%`i5qlGSqj zh1F=K4!O>x@7y~G|EJt4YZ1*nettPb(^--`H-GH&zfyoYb1iI0i-V=xsz)AY3xq=5@>Fcfn57*|IKul?SP#AChm zN+091`dvwm6SOyuuX-nihHc{bRFe5N&(yLxt~1w^&*IHUcJu(F4s_vK53L~ls&LtI zaSb@U`8f-;hc4HWUmC=vG5V+BQGJW}H0DoQqk@vl1(8GPmXNxLHdqZ86QlEs?#J3t zHwVq@;}9^jLnRx9gTKb=X_pX&)C@T=bP*7(wQF zib=vN{1(cTJ|Eijq-n0Gt6zZ%@?p&9*(6CU^cJUcTZ>5uX|_YU_c|#7;wVWQMHA*Q ze7-;ZYMI-l__lV{+4#Ir@%^N-;Ex!i_48z{nCf_g3@B{(A4 z-1@G9yk$1Yx43>OUea=Spv<|+N&U5AFE%N3^~fbhAA9Z0MeP%v)P$6du(r>HE4_}~blgcxS>0(059vR6jf+B)om7D6Wbyj*Rid%kADkJ} z{K0gt)e$k!Iz#gb1QF1=0_!R6A7XCnM{lpb7Bg%26Entmc^lO_Qcv>FwXg=6WxhUk zJ5l$J-u>e=$()7dGoWY9u9t9{TPQ9)Hu9;|bY*))Y)2KZFG#y>np8gPF9c4xrzFUE z_)`4{K7jUzfV3hpj(i+|AdKabV-b)dss0a{eQ5IQ=)?w^0rTf~_WfzuenJNiDb=0q z;nVi8iQ1fsZjYdVigGs%_*eA&&Q22y<)GYG6JuFaOa_Hor__xXXBg)|qTaTgikjb= ztR+Er2#(9ac#EuOX=A`&-OV9n$_sbq)Oc8X{|@k;=e$1)4WqzGD5QjvEQC}bvRcG7j<)e;Nl642sR0Y6 z(BKyQV*JgBvhxyA5al~vUn41Pdq3WXaayq|h+Xc($!G>WRc$ekJXa|L=;@q3=KuQl z=s^tqISTtFNOK!Sm*f?kOSOq;*ZJy@luKc2aPxOwQzJ{Q$77R=0K>RWe9I=0fg5#--vjBcU{01~fi9hnruY0NFw5py5TG%qn^%E4)tNw#u=Vwk2y0Pmubz&e-v%>3C2ZRQ&4}M zx(v<}a?UCEKzRJ(=}N1bG8spx-rbF{s_%1S@l-*G2f^tr(u7^-UXdWe6R%FkAHCQ*D$)Y^e=)WLh$|zzMIE>QjDL$kl-G!Ye!~xG#PR+!R z3qD;%)g&PdU;SpK#o}PZBj%ll9g-Xykx&Gk-;MEH9eDMM)Ta>M1@TB_ zy{*(bPk}}^TXfH^Tl))q$Bfgc9-K#OZ<-yrPd_+#L^+A!Vh|>VH#bR`Z26NUQoh)noJG#1?7iQt0@-KR^8nLiNo}zD`P6Y_0Mu zm+I&NjzJO#gBYy8)&{*vT*ppkl2=qd#H<(Ofevv(mo?PSJa`I97Bu zX4U^B#hbFh32yW;e_pX7T*U}w<2dW85T%1YXEwS)w7>k7;RL>sj$Fi0wH$RY9?bfkes_C}w3oxV)PT$B|fSa01PD?nRm))T;u_GDt_O zk}gSPq=kv8!0RcEAE8OhOKkL@-=IKP@a*5572gMmu)Cdf+UpfYFFEBGeOQMC63tTM z*d>;gVFqS&mM+$QoenQw&dPYr&E_&#yHZ!!M^XY9I1veyc8?j}go@6r8pakv>v?%B z37&em?~8e0RT>ORs)M`DDf?HHKlm`qWzz~>2?Lw42V-+N);>x&akJe!%kdb|0P5k}t7KH}H|?pjRfbg*BE*np#$ujD zR#D!pE^#&{8Dkm_Fjpo-?5}iBjFBMH8o5H?0F4wm)mwf&UTzqprSoonygF8OQ;eJr zZMc>l@vHfzL!~$jKS2R_tesKv2TyZwREY}ZV)0+tr()VDI^O0wODjHBP9E$%Kje6s z@X6B)!J=3D>gerbq1950iN58&J(G~`is23q?r0J6cGjQdgF9ZjUfs}y0@%eW@<@o0 z_)^Y(`2%lTKrkfGF?|ru4F#qH?6^SqwNN`vzU}7ZHcQqbO+P;Zp>Y@!Kh7|yzRT%- z2v$H>X_b-PDVMe&m`7HK2ux)xScun>C|D@PSu#=1C`Q2FP*8>~rVC4t@SXH`+Qcma zTRf~JpNyqNAal9styZA#;DQ)r(P#ZBd8-!r%&GWdI)-kU;6wKc8#>XTHGW5tHfdTm zn$E)If|gom z7b$j95hKrN#t(EIr<0+bXipKePe)xuzr!XN9<}@u{eW&mr_}Yd&Id$`B~Q3lXs%=YB&Cr8UQ36%(Mxk_u$X4FA|^No_IusQ zQ!s|IEt${qjH8}k*nY+*4*tdaMELmlS#kfbk^hz0&Wyaj^9HAxIa}3k<&jas>@Fdx zqYk+YYHeey+6>aIiCqO5#7_18H)+;RJzWQJ47NaMrDzN+7tvmr;Duc($JdlyC=Kh_ zgO!HHrR@jm3Bu`h61ebLyx*K5D~pOMGJVRO-T|>s(ZaZ|KlRA+@7zLJ5Eb3ds0*iH3hMMH*OfVFj|q>O?r@@k7WZ0ew!L5Yh(iV zQP`69(JT=z>o(qAqDdaCG)kJY#foEOHT}CAbCTfe%e2iVt7)td1-mkrZ@p$dJb!@zpj2qybMJaNaWWHz& zO56k{v+j4IaEm&B`*TAgkSPE2OzB?^cYAOp=scZ-5SbDR#B9Rt;*7hBxJ=GHwdxuK zHGZSSH;xoFo!^O}He$*cqR@F|5Jkqp%uGON(Zgf7Ta5_a;lH8dPHABI+*S~M=m9f< zsOlPDbg=ByogjH@?7;HSBqaKoq!Cq4cTF#fc z3lVITEg_PqCgU$TmLB9Q0lIP5Y8{8CNY}JgDXJT0S~a54^($@R`+%9t#F4EinOBTN zziY!t7y_eBPJ&oxVDN87>kIweR|?gu;CA0k{_)GX_1 z3RR%ty8#8e-QURMym*BdTiA_SfziTJ*&(*#K9>XkFm|nIxLg(PB(Yi{&>|&l@!(;J zveZ$B9ECJ^O5-3Lz7M?8Uv3Y`^Ty{KPZGJSkf>DW#mN3E<6HZ_lX&l>B~B|uK9%%D z;f-~Paa!!r8rnR+A$PMbm8xpbKJUv*zuDc^&+HA5Jo?W10$G|<-Q!X}gti;@GsDYs z!OT>fH8oLTdPHL&9)rB)HGe4v&&z4v?U#J}?1Lqs+lYug8DS~Ad8vE-w1x2P)g+JO z;vLBAeEM4^yngwOk;B6@rIzz3#)23=caUS|GPQ!=6w$u4En(x}el~FIR0YPHalG1# z0?`KmrN06pF1}|lFr@_~iM8lFp!#pxzxCuHA`AVGA_s5*MFJ+{i|Kwvw2F}Z*KtOL zvwU>2Qll(Ym-aAYW!0|hqS5kclz%W-HNeZ$125n1_zTQRd;RSjch7+nz37M445`|} z=kIvK|%( z%?>VPS>K223pIok=o=7&_b?97(^DMpV^}E0S}Ax2;@`LA)L@{N4a|22!o%PW>e)=u zzIFZP9j~b|xDY}7VJO?z2h8A*YtVGP0~{}w5dzp?T8Z7-FBVdD&Rlg~69A2zbpm2b5ZR)Vt6jMx_p%|nG~V7-=@0NRI$~FJ@K_#KW*O&Z=8h!@x123)G*t8_<#WpApX#30c16q` zU!IHaQef$7U!nRg(Fy~_i6Z>s!#s20bp`}xmz*Yf>L0GJ^CN$ga*kT~K`9b8IOK)x z8D4+)F_*gNb1x0)WKHveiD^xwY$q9+;Zp+`oLH6w1TJQ~H+X!M?3<|-S{w*T^+XaJ zJL1(?sd>m7CmBc#ezJ6Ane1q``in%IWJ4gJ6uVhZ-wPCC-;nmh--H#c90UwjP~sd( zeP^Fc{V6zjk8n+KUO+$U#Y!al#&-=n$QYEv`Sx=oXGCo}8D5&@r&KO~l0|gEa)guY zI}|xsSv^HY4HB0B8O1a^>~wSOjs{B6f7+Vx@>hBq)CNNfBNfYE!G$>2e8^Txa_cyr zqkdx&yK1n~HC0RXlg&{OmQZZgmtguVl2zNE5A5l0*a`{kcfXfRG z`KdZ8c2&HnEiX;>=nZY^v?3ZW*!OX41pi_1l2KH!{rvd{!yOBT&*Z@(2L~t5eB8UW zdSmNZyAHd~SL(25I?i>NSf?1-03=!`S?kiIBzXaUS}HZUO#QO<p1vtlF@65 zLWUN0qGIN*aTDApnd!wWpmi^lwf!jxvDa zm4__lyOh-q%6i3Qo`S>>3g&HmI4Aa%Zgn;P=v2&Iykra8oXqOQM$muCHGvY8h5wZLgAg4c8FfS0C=VD~1VeZqUe z9$aZnq$IC!R_EDLK}_BO7{vt9V#RS&u#j84ARV9Z!;%jPC_lvFPqDjXugExkCSg12O#g(ArZ+kRg(`wpi@%n-~7U0{R(GL^!Dd&dR5mNKPHWZrXd(5Or| zs$e(=jDEGr#F3nYMYvs|D@9{Bx6akkyO6sT4U;3ZS7L(V|ICLVHQuW|q&>^0Y@ zA7@-(oodD#8b=BB{Z@{GOroE9WU%6bv)O_8w7PE~T33z@yM&VElg!V67qe~TA*WI? z)cHI^JO%fhO_|%SLoK%y+Ik*@V4S(fVftsPvV`6{D{^Me7V$$*hsSBrqn=T#J@*BdLwwJexLm+<$bF zod3_3MV+1126|8bW1v900oF^7e*qApn38vANzkm(ceT(ps^w`xS<`XShVt00mJX|! zDZnteto}?=8qoUIeedi^kN$>$t{?$YeNlffc~o#d-LGIr@2@ZIHT88Q2llKWbuO$g zA7-62y==A&(aI#cn#~Tg=Q?*7ALUCH=^{gLLWefeD^FBYN_T=tcA0socs7bxwqZwy zX`a45vHEQ4R?>@Lt*cbeOjxfYJsiMaH~z`U#RYA0#wn%`{+SJLKGsL%B-q0unztE* zOox8r0~;PufZX_;Xm@c`%Yrk!34D@S1l44KKtmm=Au!M$<3z%mFGtaG2m%QVL7Mv=Zu(Zr=jGq zVfH_(tWRO0tat!Iv|O0%f265uTDLT~Gg!o~d{jSZi5WGcACqz9qfVliPO{60K01#G z07|&%3a#jIUZuG=IY)Qo1#IwXq7?MFg^>o^s1^11^UJMq`aU$~2*hI{x0h7rn)h4s z9VVx$@AOtai)W^wNq>jSNh;xeMw`MunYknHZU^&w8eH$9`nsiV{BESBxXnLOL%!Qj zhRZCP9=U+eVzuh3vNqoFq_u5EYZ5Zu649M z817(U|MBYpjEjDFkV6~u2t(O8XzTMHXXeQBMvE@PZmH>Ie~Q%r3#+G4`?+j}lkFTz z>$YVtYb!>^5U=zos(4NkDe8yfs$a!c-<tBi`8#T2K_^XDkCQAUQ%4u!E7zG%Yo z-YI|9Z2(!iBn&(i2Gc==iX~JP_m++j{D4%eK$Ye&-*@wrocd0@EKHJm%paIg5X~Mk zD*jzI@c~AExWjf`N~qeO&rKPZY6V>A;Pv3OX5SAh+va3J8_e%`gk<8%C~?^f{bA8e}@>0Jz*_T0b|f)3~2>j}s5z zg@12F%k`B|*jVBv%%6c?i1Ts%YePzx=JKZD^^}3tFx&T;>;DYHZvy<;qIZdevh(*g z8|r0WB+-Au+8^BIoI)sV&mf>0gW2Y+_$0FhO0{5O6EQ`o?e;Vne1`ofqlyE9&t{+_ij$=8;5CgGcpFG}@~ z&N-UFV?-B(-XuyuG|$sBRK^Ex3{6ECz(GK8c@GOmQmmP<3yxZ3Xi_PPuj*GO;qt@7FZ!4^obre^6rD zWWsDC@5ec9!m?M*62@0sK^=fk&om z^MZEyIBl?}axwl^RmVBu<=&IK@tR8&!}YY!uH9mGbYxIq!jFm$+}i5 z(lfjQ25w?7kz5E_AZ7sgA5XUu=3(kotg3HX`l!h}F&5grb?~44u%CnF?=H!lBsAks zKo<9Pd8JH*M)a$%>K>Rd!dSnDI?V_!Dsr5N#9X{unU52Ni){Il<<;b1^$d%bOqqTk z#^swgbliWH76RWJEBP3YNv(2Gc8z8T=TRc1Hw3??l!DIN;>wwme_-uptAp`Flccj$P=8FwRsb4d-6%M~dG zQ`lbb=&&gKZplJSu?d-z=9ke6FsmCrW~BjdooDq+LvC9kDwj*=j|1;atp&o3>ocf7 zEYMt$P;9bP8-hq-zhv_8h`<0Wl3}X05EUj)0He(P6j?9Zkp0scHl5Cts637Kqh~c; zWxK$@Uy5*M#s5v_f_g~;DGucPpWG=JpvgpbiR~^{8f>2_*m}j3WhmzQ;sgsHc-F-t zv@gR0b9A%Ls?YlV-F3aR1@9y!S%xW=a6X;!Nd`h8nf1ykF5#i$?tA%`Ys=yhw+7sl zOyA#gjnePQ&0;QN&~~Yci&)mPZ`70F``sm(izIgoA$%OqYs+T$pD^)s#>rh&6-2=$ zMi2;PnykeRqu^w4OnUyjaQ@-Eo6!}Qb-IGb9pXmXLO&oAYm|i89x2D%?D~whuInw* zNmIGcSj2{KwZ^R^zb;fS7}I;V@q!pba?iajnNf%Gd61`=Qpp?Ic!)^=^zcSCE+7k( z#0g0*E7A8UXN4_t`&BfcCJbu7xPIF`#*<0AkfvW*f{tV+o#T+3(xx+6M%dW& z)GnZpc`_I%SQ)Nj$5PjWU zS4k~HKL(k?DV6W+O$SLZxJbbO*r;3ay&xw6gFVhnAhI{PwU-(au6|Az42ydY-!%~_ z4C>io^CiQ+)2r=uy2DS4uXMI&5N8c_q-}mrlk3Y0vD-#gROEja%8k$Els)@datCUf zYXyXQsnLcAJWM-%`AV248=8Su73NukWWI35%xkSWh(7Sw3Ylx+qU= zLO(8*>pUEM$WD&7+8*dXPf!@u<8fB9nAm;3vcSd{uBz?<;4K zzeB`^{`@@)i4;_pu|+Slf8F!|*?NK7DQZZXGbRz*9l5Dpj!GGJ=kdm!(>5^0OHhOY zmwplC^LpgvUas_K#PURI2#|S}TP2ze(uqPJ7p0UmJLtgowgy5apdvcnxCoKmJ~&+W zv?uuS_4zZ#z$RqX^fM+OJ9x?4R^E~TvLB-zw6lqC6ZZl_ofj%K=Er;p0n`1mKAzEt z8kQ#3{7tT6{VllF#D%(ITbU=}ykA*Z?REdQjvF1)02(0m*9b_myf$qQRv9|IDNb8| z*0fB}`fr8ItMntR4Opybcdk}iJ~7yT10~b|(CvcU46IXK2~C$prkjJ&0|iWJkx;V} z45xq2ZJJe8Y>-{LmV*A^V{;H&e@da-AjD=2?1dJBu=mbtnC2#Gl76!>0HC$#tJ$>m8oh-0f zv)*2>r2X4ePe(!G=e;(AZT%1Jno4`u4iDF9R? zJ+>>)<0p^d&l5sTj728pc$q4TqOP)X)xpZc6+D+WeT~lpEUqyo$3L zzvewjz{7)C!(G2IpKjz1Jm9)^@hVStxqTN)Jni*7%?x zorLx%uqMM{PN+YuSUaq0I!w89=o*J>`&bZl_Vz^uf2{8{0;?w6SZ)BD)t52*< zj5G@J&p85U%ih;(~0R5 za@iy%{K?a<>zQ7^;ty=a(jYG^FX z#EfnuX|4If5NxlPV!Z+jTbU7u<&|;Lrv6?hk6jQ zRn-V?h9IdiKo4OA*(&fc^Ow*JYhI>Tt@udP(J2r#^yLZlIQUAM2Sj59NZao_kWpK_ z^#{}19>X%SAVbE?+BjX8+4 znCIin(WNoE*-Di!KLo7Z$Gy}&aYG50Bj1Q}znKbC59gZ+D)bB-a0W&qUfJV+V@x9F z76q_Ffh5Q)g09SkObPl*3*MEH<1e@zpL;}{DXL^HPyO?2nx|N}3b7i5?hXIy_L}+I zONL{!|JNsTiH;^M$znXq#&N{|YJOID9UVWYVSv5MCGImA!k|dkzK+hG+?Ag3HwVi7 z6XsQ>Mg{EZ)3H@PdmOE;3q2G4Hl9t^h!Vz(J(d@GoVk|Yw3h`nK)0=Z|GKQ zGAz4{n58iNyt~g|Iup_Y1Z?s}US#+X{**q{yV3^YrMkFp+$1w5q~x^KsDL>@vqm5okmg|m_?9WN5RWu z%e;w;b>E3?JIM7ZdCl^;zL{En@!e7nej8ZLm0vC8{4Gz$n}mRvMb#G_cajgMq&%zv z{}WZX>jg~ET7bM4ekpw5AfOUC3msw?eDTF#))&)=b{x`#H3)kkDZ%>`z;&GVN_8Ju zVW}ZFY)xfW0@RBC?aPk)fA)QUJ6Sh~=&Evm%iO-%sGI}btpdQFCxGe@N)LUi{Qpso z|3$NQ{Jvk#_b2c~e$G|7^a9gJ2P19n4|Luu5i;F9j0Y-m^b?23TJ_u@{Y&#z)o1Kq zAxTVTLYa*2l*9}psVaByG(XbShbjz&CVEx;GZ^nZyXn2&U*10`g(5r%7!Qt-pfcJP z%4UKP9e6ysiLbiVw(x2!>3@Z+_pg325I|rHqKYi}xA$YoDr0>Z1PWXERKz z3frBFXr|q=`^UX`{-Do3IGUkz+$F7db?1hgX=$cG95@{?2C!<7Z1De&aPj|MyFh&J z_^-4cLJ#_B%@p-Ue zf?y6au6+O|OT)hQ8JFeVYZxcw9Dxi?W0rtdY5$Qq+Tz}t2$yGXXa~Ocn4;Z;N~SHZj;}>QTtJkK~kJ4%}W$T(t`0DTrYYWbZF@HUi0u&eT!Dc7&ZbtsD{ufLW_N{m%KiAYPZuE{Xw}#te4b2? zHX+Bx6)MR&kzZcF6MA}JwWLu9{zUXhEDv;Whg(?5ktrRm(y`ia4dV+XFm!{K>s_E*)f7D@P8U_XVX zJ`B^I5Z&#T+27uO;^%g%Cu#_LC%9#^hM{-T#l+A~nSN8hy0vx^xVdCu%UsslD0ank zNW15ZwDd?cAi=Uh<{YSb2$5>)r{f$!B+d9X?A&!e%odPk*kqASeqkou=m2&)PW*VnRM&jbX4*M-{G*=fhx6yh2x3`Zw{Qx!N ztS<9NW=K^-87`{R+$CCm#Xy>f6;5Y4)kdk;z%SFnw_-5U1-XXU*2T844X$+P+gq+0 zycVyJT|v%szf2H+7KIR5TV2hk#F74p?k}hzJlL&1oT7jX?Uq{ml~UK(iF~RWQ}Sd9 zD6$_e;BBbxJ`;W}IdA*w$E!40A)zTJSvXH8DTPCP%2n?+9|E_5JyO-c1_rv^$6rDP z&iV&RTXuP5>rk}5y|<})0g+Gq9S?Y86lt5ppg-jWh~u0KNbhtdMNpZHX3(u{W$Fxs z)=LAC?qptSFu+w8GpjWaTvS=x% zaFNhIX;EtKF=vW-o)&4Kb1&a(kI_mKJM@;uS)DCR76!);sLuMttr&G|=kDHiaW*Q5 z3Ig?{hxrP}5#}FMq^Wu(wmx+&H9U!R%uV+cw=@a`VOy`cfd~VQY-<22GB@DF{v~3* z+}J^Dtm)|R4{h0fAe&ilD2{fBWb^h^*qW zqxJzX3Q9sjK~CMT>kY=Mkt$#j!QaTlER1m_#v`MDb7hG%0UEoCso3e2rR+yp^dlNX zIp?=bm8fzbWt=YU*z9TWEwsrZ7o&uUhl{ipx68?+0oD~6BI3_0d?COP45$LwuoA7l zS?!y_YL<>4%PD=-Bx(=>j4y9YUyyM;4wmYB1pijIJ7=SVa!UIO33ZXeAoP(x_pIw{f}QE$6#z?e0JH4rnUU}O@mhpP;@tO!H;J;q}u-lR< zYZ#xbJUL7hNc-#jo+h$5j5-FGwa0JGu)|~K_+exDh~`(RnDqew>id3dU()4T zfe8x)eP(N{xeB(hCvSE@!1p+{!i@*o=&kSXoe$7Kicrpw{E?EES zXMUL3vsDQbSh1DTLxRg6veO1OZ)#cbxUPW|>m}_z_lR08l}^v%ZCefC^YRaweQf^4o9aRD#4FKtT-v zc)D%1$aZi}pMJVoszTTkCp@*~2BpmVVf9^VS9vTVxNA^1x!c;USh@+T zr`oq=2k!-5yZpXEft$NsAPY19Tb-F}^$AweKkNWrZm?8)iL!V^*Czi|A$ zshQ!NC-e)e__go>{FMUVA*gdbbqE}z<1vCw zdVJR2MVKbt*rU%{lrlFX!!Y9uGEftVr4u@0{iI{Dxc}HLNHG#^$yHng1L^}{B3}hj zws%0=xW0zUVQ!bpdfq^|PvaJ~S~qrrJs9C4J3)t7E9*YK(iWOK=BmXR_rj`e1qX@S zV%QbGi2;i9f}U0(Yy>uabhCAvbnA4EP7_Y9AyZ>A)n7LLy6?P^$@(BGK{Pgqb}D#TB=1~MLX*h~o5ZfV+;l~z{h*ZuH* zqFkrxMC|gkIj7rQ7uYzO#o0-i8dNB;`+hIx!@{g!&?Lq>#9Gec)-zgu*)NH)tu!_2 zAf&&_%BEm5Gtx3kB_2U%LQTjp;xZcAhTB>go4Y^<4ZSc=d zn-KUp1^?p1g&D^DBz8kB+yf98#Tz+x+E{4cT;s-W8vw&=K562sjky7gheaLP>qxEB zlA`*=j9=zg5f0K*Kvi%Wu32+5PrUp(1&U&PK=6N&@)*X;q3sfIqUcCkN|e3jske4;OKb0 zbeAsy49>}K0shZ(_k(FxwHwY_7gEbTR$@@Xcw#J2q2tvC1|i@{1|jZJR7@su!7HnC zIXgUwOuE*)DNg+!Hp`w%jmHS*56<>QxAaw*HZ=5}^eI96ukiY7r;HxfU5b1{#0W)J zOeIIh$IcJ`BCn*&K6^=?!yI~|8w#5dl*x&&Fw`8bc~*7+bDbDdkTCZpwT16apbDcW zi9>#rLO_*qBFE3c_4J2gp>~3{tC^`*%(y(ktl1e`1hv+Sffd6ROJ5^~32b`V84JIB z^i$MAU_)c`zxy?I_93g7Wi!#zh%-6W+?rDh7jvz6QQ;A&-~FoODmjm&{KyILZo{q1 zFIV0Asdu9rcM7&AFfGlhbNm<2?aLHOoLm|66{%Wb=;k7apJ`(ASA75wcgj1rG=X$X z`P4~AcShp8^*H=BAuwrXRV#`$ewh`k6dd$mCV78S>tV6-L@W!G%5+wdn8dkVpt_3{ z&J^JzNumkPYsgH6AsUhg={$W_{G^w!ntM*RZ^j(=DLSv6E`<$xHR3X*x4jopvKdoz zYv2~B**${|Cw9yb!y1A7k^G|BKoay%wpQhY?ivL_@Z8fqmd)c%3SrXGFv+J<#y|vY zi+L-3EQq^6$2pppP5dGhBJ=9+e zp)d5u-wES1)R}t9Ch-{^wlnnVIL~irDAzj6zRp>p*}0Ii8kG**ZzuJdin}3CU>{C^ zyQ2F;3ctIROFW>-kLWz?0@c61NGJS{n$#r0D-*+lsjl|TsBQMW=E;GfO2Mh8Hq6($gIr7bs< z`10$r2)G*vV4ea*>2T|z!hMnS58Kts8yGOKbD01 z`9@55*K*St-a{qXl=T5k%7=sryL`_?w9t>;_Pl|Lq*!w#J~JE4Y;hqX9D5Q&wM?U+zYaX$g1LL7fZ)SV)U-_j*rM*GY)OHNM& z>jyl{qKbzko(Iwg6`G=I1;gcN80ymuKhZPLa{J3WG`BA0%Zz>6l=>W_>4umjzyFR1^<2C&shIxfN6&-xwQM%p;Na8Nimz71cCkNZ!+#p+f0vM; z^)QEf9L4cjl%%e1dLc2~fA=Q(@AsYeHd4N*0-;k`ZFFv!ZtnNq))mbYbNoA-L$`n1 zKyUZFG*c@RYPZQ76=W|%iVDea!N}VI-bLNCTYCc6ipaTCp|WPO#Kp{FS>+@GsgzEl zR%mVL(H?KhdyxQZziZJ=6iQ{!i;3%$u4^1K$#yCB3M0jI$tJL{(@5uD{7;e#Qv{pk zUCWuVynlh-k3QkY6pn_Gh|VZ+on&iZ1WcUaf~of9Ddi+5+iAEp>74hIP}xq64Y0HC zSa85G^gl$WGk!t+d;owFC@Ls1Q0LOv(gpMZzXyafO{DgaC{;ieKt$-Gw~E2Fp;n$T zU@tP)e)2f|L2_1Jf=^}-m2u$@tn z`7p@6T7EA3vef8pfiUU}pNtD9JFI6vSU=THqP~eI{eW;~b$6e1l@aguMvtOsx&3Dj zFUsctcIh&qu;BNRFcXDT&p)chC)eVL+r>7NH{|;_3vgSE zzTz)g8Z{t60>nY0#d5R%_C6x9N-GDtdA5C*_4(w$dN=miG)%1*rCc+?dEcQ>X8ETP zB5xUGB6nZ85jic3}7 ze@_al9REdkybFrR4&fpYHze1p;dM$GWVmB%SaO zv&R+dud_dW_I8OfG|>;dx(OziR9L6rK_YaFh%LGsEqlQ+R{gzSJ;Z^PQSuGUqEI-yeVM;P8 zFyA%`4aB)I!jw5@+}5(;a{)U5GU|}1L8FA_vMAQK!?TkNsJ8@aH+2tj8cpY5GR*}9 zzkBiCM-b&rnxhhwz7ZZ2fnf0hR0_MB1M;miwSnRl*T;Rel27T(6c8=^u7e&rs~X~# z(|7=+CGgDzu?L}+M?n^gq#R}#M*eG4J z@0ZBCM_Lzq6!;xn6IZnFDiQIyMBY^L%*tg2$bUHroIPh^nn$<|LYa$Z{9S$0(oGx> z9hYp|p>z)uMTaR+qwE-K*;q@Ylo-}YLyvG3{J*IB<{(L%JKV8t+qP}nwz*^5 zwsvfLc5HigY=85<_uh!#SATTJ6VcI8Sy7cwX4c7bS`dr5=_Jxdca5{?SOt{!>ozo{AuMKb7zd2&Hpx9@A?Jk^ zCxZaw_04eKdj!Ix;;WncEnkU3Dt?}bU9ah0MYZX{y-mz z+)ppjggbU&>#zF&PoI^ppgq!YuTCv&vn5XH`9nDD*P!0j>UbCPhot`@{*E1NhC>1! zIx)nW9MyZl8Y{|fi1$URn&;<1fe2*x8Yk1`BSnj?A^P!#9#{V5H=^vzK$;Zvok#KB2L=oC*3cXcD6_*Ob{_Io*#6cP<2 zg52EpHL;UCr=zIhws7^-k@%4WHYP0F2v?LdKdpB#l{)j(Aq1sUSY`I$o*Qv=s(@*E zPdjJt`4N(~ZvZhk-$gJJFM)< zS=LARt(=!naz4HyT=H=Ux)&cy>yo&ajA7%fC%qw^YLw#&^AD+4_2$!&>O*2xXG!bJ zZMSz9oeH6%Kjawh2&{8$uvsW(CYbe7`0vHLdwH4)#elsg;kGR9c;v^89IW6V1%PJz zr3SX0YIZUpb&l~HKKjqtA&^=*zV}n71zjW-8Y;7#+FJLr^f+EeoAQ1+Y0X+{>umR{ zjdog8J%1fLXgw+Nc|LiH16=9GZZ!B#;Zxl9Rsu)eE-7`29LMlVokc%%&C>ZixD@5N zcG9`0AUBXfc4qFfyV;7Wh)UYt@zFQwxNoVGnWB`l8dtIUG-<9o})YWj#B1 zvpe$gU%74XU@?Rs!vv!x>c_aa47=rP~Bpy=t7Lel^0o zXP9!YhL+j1XVTfom<`ip+|1Ys&%8bT;~YsR+qn$DT%RJqt(wyNIkrZ zcK|5s4BN;20l1riAoEpyLM8mda;WHIe>XcqYkrvO$wKF>@>cACgdu?yW67@4wR=QS z@B@H=tK!9D+)3&A?MG}6X6gJ=Vhc;=V_5Y&du#pl4{v(EJqx8kM)7}M`#pju7RG#1 zI~K?oL8_;Gs1CGRP5%G&J;9baprVYcVfwFU9?Ih;v68RWZQGaRiR96qa*W~m7PaVb zS9ew6s!&LvY($&C7j585{G{*oU#nzYX`%B$wh%L5X#Dvncm`2HWY{xsed5~FnoCj@ zBUZ>$pQV69N|OWFOJ}LA2>UBYWv$1VRKsL+24DunB-(sR7nWgD=S*91oK><8mbf5( zq#jZ4vMfpM1(%>;rJt1fBtRt?-eT;3di?Ao zDx@!E{B4b{SZ~JjgFZRsZ{)5%kH~iJc#O5Kfd~~mMX&2iS|5mY zinkva_a71KDz(aK4}XW}Cfb@fAY6?=kv9Z0>h*;WbIE;vdTOBaRHC3mtm5(aXJyWs zuNN;gMUHE-v)4^6m)}-NoXudUR%9vTF-@j1f$mFAFMp&0eJRK*=WfFO!p4Z_)k~L; z^A=A6F0=kAFO`E0<*iwfS4*9tYdaL6_JvfXt5Mzr`HnUBlb(}8e4Cms<&dvmOu2Mj zGlVlPkI@xn{!KL+;9bVrU&@nLXa}keod=m89m8U5B}hd?V|}i>ndayPKOA zJ~G#N$*1N?+nq75(jfQ+DiMHR!=Sa`I7C$9!vQ}4gJnh}x$_wozsj^n>ejyA!J#J4 zZv1+0028wJiZ^?ljqTMQ)Yq;h5S;Xri^Q4T;NdG@sbX<6gpw@Y4)hl@S(!VcuSLqO z+LX)RzPcW_6cF=w$3|$Y#jJUdbDNg@P?)`=+7 zNbAIMk~JTf`M0$;i4h*Qk6&gvL16`%TGpp$dEi)=XK z@I1LxwE83VyUfj5x9R&7>@#$P%6}`FqMqPIkVVJ!IHl{`^eU<@fku$5{$IzhHzvlq&XjZ1v^$Y8WLv94zxsha)Ee%>F_T z%j4U|O~w9T+T+%<%Zuo3w(?xysKHge&M(Pu>Z&cv1D%;Jp*^Y#9v(N(X{gS7~`(+Y=+FaNlH*a>f6_W)`Esig2UyuCqjDau@* z&O1oNfl4M(>#wHqe`BaUfsB!VV<@Ly0bF3nJbZdYL4F0~?XmK*d#2blH^~_{hXQgZ zG+BX_Z|4R?3kYln8W)_)IWB-2OE$xsURbUox>FyJ`PDB!P{Y=~#bHaZf|V{U;u7&# zDE|oVPK>t%h)!OM@fK4U(Q8@kd zboIgNMP!z;Wy>cmcQxh$LP8Pan`*!4?xc@k&J0rAcsM&I9S9mfG~R$3&d*49I1oYp#H zTC&j8k%?C7%VDh2TGU_iX{o?qmy3Ixazn%Z2E?06JjU=h<0NacIbjk=Ddp?Blwdip zE(=6oNqVVexiuE=M@-8}L50aw2_oGQt2_>b4SZUuuWF#f1c;`Be@hZYPMHTG9|)3a zSm959NI1^t7q;F(Fc zD!i1hl9a|9s}F2+#2I+Q3BOJxq4hLirw22`ikMvk?R>5tvzvzU3E;`^tQu-hUJKQ# z!7>TyJU>q@Zq)YBZF(JxQ|fwMCGfB3`97u|UvIvz55wOnl>ibmvDi-)%VjmzD`MiZ z`y9{8D@D}dp(U8@)u;-#{?S6#%*>=i@utZ$){uhfUzcZ;EEMVsTW5CN$CS-;VB;oX zA(1<;1kADK_&+Wm*KrvXPa6c$E=5SH;;PzoQ6%U-<8TzWyCR zAi%x<_?oV-hvC;sN~v#!&Uj`)8p!zLuEv_zu4@yO+L`c&_+`#i9a;BdeK1cKDS&zdvdYqp>6}9S=366X9ybXA5wbIp0Aa!)=9C(OEoj_HO_% zm)DGH3INaP#j^TDEE2w_t2e9egvu`|o9*SRrd%^<>E4fiBeZceFaU`_IY*WfUr7wi z1AEUJE|_{_TYjkp=1-pJ^~&R5V&{D$`g`H$5B3-ah(`9HUKneDQ6K4N(2VkyiyuBQ zmsQ>cRDYe^P<44k4ZRT&Ef}UR#0sMXir0GGbVZasqXm-!C zyWSGgn!ad%|G86WT`w@aH|49jR{nY>NV$Z2xcT2j zN`9%EDlM34OjnvH9J}~==@i(0k^M6dDeGs>(evX1o@<)(D4Rx|RH#;>j?dh%k5O>k z#{q5J0AkoamC+yxLtc6~)QBrVirH|@M52*_8HR}&kGIBLQ=4^(a!P!tPZXB#OFS@B z0NDM%>uDcTIgT~v>i_SWo?5N?DvBJS|VK!*g)EfWb&ireY_1b6UL${Rj&S9#S)>Iqs*U2dO_7j5Gjv0|taSle~91 z@Y|@N(c+t1`POU_l|tLmAK8UeG(pBP^8eU}{hjg)31po98-Igw=lbmFGv^e%b`oRu zT0o6%r@*?mi+yjpZ)Q3WAn1jSJhA-l3U^J<0m}#mMJbwVFsM3p9sbd)Wk=aLqfnH~ z*3y9|&W7NZGhZF7y#vP?E&(H0E1g>r1s+U96gE&CIe^L0S^|bO%GYUdi`{Z5QAddydKX7MXy&z0uj(EPjJE+B&@`6Ns?&`9OCz+z9 zFKV^Udc|5z!O79%#6*CM( zgyw7Q<(L|$2a}AOt3}9h^Q0?UcV8G`y!x?S=>~t4w9t*R3j3$+=`7Qb^>??#blS{Z z5mAwo{bS}0r?wm$}jx96bs@1Lg8EOJy3?91=Q*GklgZ4RQ7 zh4ig%*u*u>WxI&IGAuyq7tfecIPi*F&AeH5-L=xiaiDI>@P~LC*=BbS0=M#;~yoK2tD7ds;@c)8=i0@IZ?ur05@foJFOSR7Ucoe=*iQgA1#5V&|R(!s| z$rv5-bVv75P4SXsH|Mq-c6-{!9(h2EoO|00>1ItBEMq2TfC*v3LBX?Ofk4++Y^b}A zBHV*n{AxIUfnWBE0^r4m8}c@;+*}ddM5gyf+`kynN}!As0F2F$L&sflHA@?d@OdB&_$IxGc9Wynz`4E0T>?wPM@a#NBDpS3R3ol<+$V0@=V9L@^!s5 zRD0`gTm%ugeHx*$BDB{E0PyN+nL4isD*jdwmfopSb${>s*^G6Q=GXD2W3lEW&X>F! zLgG(R2m1Yk{~+W2dhXs{UkND#BWBAXJ%2DormJO}snqJ2T)HT>I(a;J#ZXD8=)Zl= zj>3q``K-Eg=7+6M`l@SRF~w;l`tj*Vpgi%~HdFIlv}07nXj~T6V*{8v%fXMVY^-F= z%Yo(BKBfLtZ}UeEATPR~674@o@^p{mf(*1}+s^_SfO~HUZ+Tq|)*q zTmCoxd4u=@yV#%nX;ck1*-x=oqur7gZAzZD>68w`dCx{ zXy;2bCrR~OR@{h;?Eqg&tCuo-(_9`5vGWj}{=I>|X+TEa&^)LFiT@z2|H<*_*iR%7G%S&IyY9G&T5`O$Go*nW3Poe!o$K7EuRhR!iYbN#nzqR|Hwwijy2{LnXzI@z2 zTkfa#rk!+_?y~EVL%ba|$8^^H^lvyiAqT7LCDvIhP2DP3f8cOYa8|11w1-~CU>6Ku zM`wtzT$D3gj=sAA7w2o{9ujz5mY}%MO;^q$l6~6kxVd)HY`5~g+^_t3D870L|hy3z3STYvdIW_`!XmP+G>@7kFD)iwM@DF(vOL-W(Vf{ zBrx}Cn%X{F`)zZYKFC3cZ+Pv8KqmBmYBpb>Uob-#HJ5_T#l!-4QxD~HtNoP^l?PP$rWjt zmXoi0KAJ^|%hsF>n(Jl|cS-qsu!R_OFnQWp?BgVuM8PP;)|UfB!mJ%L)(^HJ$S*C< z&D@J3HF$^IFBc$E1wE3xX$z6v%_~=!v3`bcqwJrNjx^e1rM@Z2ulz$sv3Vlwk18+3 z9@$aSr#FI_e%q`eq>J~qkoU4ze}>^^%0X!AHHj9iuZK@k=+M=8{eOQ;Rk7L5VV0e7?AVoCF}0L zSmm4F<=PS(_n_{pQxxbJ+AJ{JzG|s@ri~Xf*5NkR`*jfHu2(Jp&>Y&F{OK;|Z z?4e2xSN_Cr`_u4uD^eh2d!D~D;e(XR1xLsXJ>!y3fIWSJ!BHzqwu^z$DF~f~>i|!>dlbDw+66qtgcVA$D=KtsKej?CdS4THo?1t?T( z-umb)EH-c<5<=pU&jKm7qW5#+<3Tw4myBl1Ow~5y__A({k0`}=omn;~pjy}3iMltR zsSjdb!4xSs5LvzldP`4*$UmskxYm1|D+VRh(2wAqn&xfPx1A`euUF0c5xnX*suiIP z$~-G#94|!pwZ_E$Dy+^=b?~qQKqt_#=<2>9X(!+dI8K&qGHOpi%mx6TGwU~?HAqUa zna4Nsk^sY3AWzmR6R<6v-9?l!f|c2Qez(~dK)Gx~pc?%37+-fYjxF|^KT)^zi52jI zi>t$#!ax&j_5UUWoUX}hh%kSD8)yPlWsje%vo9lUmVqr1S zfzhmIqR&nfDN}OeaVsl($dh09G1&Pm%D*T&FUFKi5-2e|T18GkLGl-ZA473jC{~n0 z<9??m_JGR-kj~;+SD%C{7$m{SfFq_q{}G~*$9Tk_;7n77-e(O;Av+^14a4=J0-jdE zZ4DWWLHTX8leui=F)>1L+Be~tOnti7lD&#)hf!LGCn~>cG%R|zbs7sFXMyq}&4u*F zsIY2?jT(ILxsUie@1qC>&si#6rw|a*%ZkAF_9X354ZajdTW(es4Qk!JSHY_4O12lB zV(dHfs7$4?f_Ixs%}{5Jn~sV=a6DwI`R1qqCWe*ku;d#1X`8cN0ug+#=M38NAxKS? zOH-Os6w8Io?m~0L<^ChmKJ4TiowXQEg?;UHIUpWAk?>t>&t(97?FivA{+2y*WEsi@ zl>?>hcdow%P&kM=TD6D5t>0CC$Z^9iuMj0xNpUPMwco~1QMXW1_LzWR9^rjKC6B)F*icBAh)`dB_XyXhgJTfVjhy)kch zT_Svu{UO+OiHGUw>&hNagk`NxuVKK*c_h6mY@xFAj-I1y|HYWm;u+IEg9wP+VH7c; zL-I$`;{agWhm8a>#i|e>ez8Gk^)d$omTi&ISQOM4&woZcKBmSpAoRiGbB_4{4q31F zY%9eMCQnDhcW^sB9yb0g4BGOzH=cq-sMCOlSBVdtvwJQNnp%|MhEiBlmM z4dT`f(p!;7D9a}B2aF;FKxPrU474a94HY&P197g`ubL=u!>jzK*+;r3!gZU$_G?XP zD0~YnoRw#+wda}+%a@ZmLLC$eo1lo%CRy`<5)Db%V*QTU{ngV`l|ZzWi`ULI z(ro;+NkAi5BMTp-EE9s~3K~LkE^K+1F-`6K^K&#Aw7LQjWq{c)z?E8wz#3+A?@qY< zuJQfZAMN-!lQ-smGf(T1AA;$XG5RZZ273D$i>3C**iD{1s=i$78EtXU8onP%cTswby%8MMeU;q`JjaQ;o zrcz_eF?ky!!`aR_t})p4JTj+Hkm(6rTM2dl=Db=DA5A4TicQy6rJl2tKWPS}Zv`XR zXZgXUqgfJRK_+>r?-b_~9JbO~6HUs|#~G*03H{*_ML&yr|LG*Xl02tDo(4@0>52>s z)L0yKdB69=y&D+#Gw-tW=icjKaSW0XRVf^E1O33@S_61nh*6QDjC7mkSVmjt9o?1$ z=Z&ugWmAwp057)bf&(7}|GSRs-tqnh05{)({D8yXIbR(;y*i5!kUlW=a*YebJD&B` zKGGHPIJo;rm#~Qx^{JB}Qv#X&+{J~w+g#_gf&q)?*A}+y&s9jR8=%Mjjs+p31Tv}q z4TwO#fU9DmzLRSZ05H&8NnVYYX0r3TDa9YHcZU(K2#R)3lZ}`qZlp`bfv?VOjW}XK z;h#j?rENiuRf-COiP-r46(6ve!oV#2ln52&d$h!NH%um^y{F`*A&4`eTHD7&yzywy z2~UndH?N{aB9fX%646rmxc)-j9~7t{UlTG+2J-&%?$Z%%ir$?0*Yu7==Ba{sGN!_{ zr>{yvQFe4&w@fiv<|ki*zafC~UB;pGE5th^&Y54~EqxO5ZFwo3K^)?p(OYU*N3Jbo zI1y85h_OUflg&ICFtrSU12;c00oljr%`Y;lR&cv9JDM><2z^wR>v`)H{G*e!f=I*U zvv=y`kTGw9aVwz~vELceNc$#+8{}0ArP9(B2LsT#>6O z#z6h$ffl8&37|tqjEe{R!?5is{nI<8eaD+;kiAMtTbnHBm)5p`X<}D?mR6k_Zxp4X zTZ7i3GZXn0sZqDz_1iGQAnm@KwBqP{C{9NFQR8qg2qZx;Ak=4H z%HtO8Q9c@4_$z;?0&_+5Sh|gpF-kkWS@@2^Wz*yxxYh#dPz`8?5WAwRnpSR7mk_Sk zip{@5o+nW`Zt7Y(TW5}5*$6j#tu+l12JW%SFa-5;f;w;)HOTU2daQ5dw0~^z>ka;9 z_)Fd3TI6%rOQQXX&PvKq`tFiG$92?Bqg*yNL5hI^0gi4QPopgdamc{c;ElB5 z$a?7>j=~tYXBT0_-LjXP!R3g_7T09$d@bQMIu)(4k3UEX2NhZO~Cb4nCVx(;;p1RAIob*^FV5*e|S<{NRtAXK1n(V3H!p?hX;{bd!Qp8jd zlNY!Nobsqu*qb^CUZK4C%G4l6mmyz53u5%=!&~Vg^)Ls&^e1rrd0+?9lIN=#tKppn z;y6;8d9_$8^J4Ca=m|V@SnuYSGt1ws{IViO>rz8*l+<;(D@GarfP0AcBnoUhqzZk^ z_S#-w-*^5hsu+OhHL^^bQLUMDkS||Ep%!OSd^JWbmNt5M63RNT(xMOd)nOYHVdRh8 z?4ne#eHsQwn-y_MViSG%RW>NW+osp5C$q516yOWFICz1EN;lLY{o4`v=(Q52(c~!a zATNR`IU|ufE`F8nF$_^ItSj;ijw0sNq8n#on6(hQZ`!mXMF#5_KjZhzSHr{O6Xgai zu4x#`CV4VKvgcVF8W4VGGejvtb&lIP~&JBggZT1rj?ADTLBSF zQj45brLj}|;b9A{{y-^j?d>6c1~`Zdn!3nr?>YoM5bdXxKD?QdO@B{oqY?( z3?os9FK+usgU zV6Tjv0zm>;z?45@Ms06uxaRt2NVo)aq`++tD|VB7ICtFKC<6Ds5_)!+{v3xXMGUR% zRrCm}D3$^eL;%FRCW$%h{1G$b8U7%heLk2k^0dtP9UCSjTKv#12IK~WJt=riccl_n zrJj-$;oSy^Za_CcF5HDfWHEVBG(X%$x;Ug+2NP_;7q|USRK8o3I2XYDOG^6m>^P1g z3E3%uWynB)g_+OMYLCRWGL({j;%xBS-&Nl^nhy?H*8VOjpu5iij8rL|pj_{6 zdpUL(5V?|uu$w6ntP}!`p(%++Gql8Rg|JbPV#%3Ra>}ueLEkc#JHg)h1R&n^lWjyCNcLC zSQsi9(6@xA9rZ1=ix5$?aV@V_=__s#IRS9U&n{>sbOzx#Q5@aJDJh}aNxNK~={>7> z8%-^d4?m_p+*v)*40A6u6wivycYD#8%Y#%9d_k=KcsW0TrvDRJ-l%%xa z);Q~4W%HO=;mp3tT~TwEA}vt#MD3q0R2fVzbepad`y9&VLcb+ww!~Y`pbR*MUJ7Vq z#KtZHsAMUV`zrBlOev9dI#Xuk>6Q?LqhkeeC!>H=3{{?lm9)p4q(VdxjOC6?aY(r^ z2#lD)3w-dfxb{=OM(0jmv{xNY%lCV48FJZy`xDZ440aW0gbem> zs5_G)#t9G;h-;s@6Nr5`E3{M7p1pzkcwfw>$auD`F$^!fRJ%#QD-!$pcwq^TlpUA$ z9h~vKJ$y!Xppak?&L#*)yHV=UQiWz5XJcMJJw_%w@pQ670Jq{2g=V9u=JIgrv}VS5 zJna_Zs`n^JrNZ_Xxc_dMNY&|mW96bj%Q`PUO550r!ReDKgX^-~FLcju^Fd-SS9o4T_V7Wuw-}6*ZE?Ol9jA<^S z$=b0*n~FN1vCMtay|wj6v4->0vUkjwCIHHxPPrF=aOekn0sz1OpuZWSfbmHbxc>Q{ zZxr{$H@nL48vu?x$^1{6_`F8-;Zpgs)-v|%bm#kL5BIyh^TfUey^^)i;yy@s88oA1Wz34TO>Ty@bPQ zRx2kFxPuMPoOB&qOFGVhLa08G^cpy#R3`C|y<=mYwYHZQ6Bq7T!BcP+jzF&L*=ws+ zed&s8$U9-8*$B)jJKAR1_N~_AC70vlhnM61pb8hwz3~4{suuvz{!iHuWDLi1op-CB zFd*j}n*Tj^003w@flTTDK`)8Ep_lRqU%schEcpTl0FuSQy+jZY4ggTp&tmef6no-!q6x}VS_OQh~WLW_|+ zbjqUTR_4DrkdF|sx#Ys=^uGpI-=BwKqP_Cd3zvJ|$@OxeXlpc+?FdE|j~I+loGICY zAOna8sD*z^iU8LNz1C5(mtt9bl4829kOW7)K^*hc-YEtre>Ys$fE4i38c`1(RZu#d zpnvVgFb<|avz7l0+Zu^`=+O?Qc}1iHNvyUQq7Fv8?d}u^13aPBhH6A5epeonXiFJgCR>4Bl^+xE6*|}_ z-0Bm|;?Vdp+>GG6$iyJ~r{AVIz-0BN6T^QclJCdURGbE!@<$%D6t~ka4yXv(Ov~3a z+zbih*?lrt#?z;>h3$F5Qt{`>(!fVuD2qq_ zBUQb5BO&M;-c0)%q@ZXU2Ag3GX6Y8XMy6kX3PUA)_b zV8fqpnTS8|v-B0dXr2GhqO!)sn2W>(bm}gTZ4B}HBGTh?C#2aj5%rQX6d7(ULGH3B zX7^Ho7}@Fj-{?VmC%aVmD^NoW^8gHL@fjbfItFarRoUN&;Q;WGo6OYq9T6cXq@L;t zzs4CzO**h~($&p~g1@c~^0@K{r?eZ%yfi#TeBuPEHrtLvrmCRxnpZG1&ae`Ovfhc2 zLe4UYzCpE3;25ky=idpUHiZ@G%xdEa@yE3$yMT)4@}W!8D9iy5RzW?gn^;_loQ%Nc4;l2vN$h?4z`8D6Dnunm|(T zYE-PLS<>P)CK^GxB<)vo1i|aMLWJnL1@W7MUA;JW*CRJriB!zx4Yu#XzIhMCMxBFk-mV%8ieuQs znW9!uk#RfeK$o{=|G>i@YUgL<^63WmT}0wK&W94&B@(MjAMS5bb_~I}Wa{-cRa&s( z(cR_qjsrxJxcUTaALoVqL*K{5uk19!w^=v~i2ZfhY`#{dI&K8b5tg#@1K!V}`5~A$ z@skkbx|(Ztp>O_J4cNJ+uF z8z4UtF=||Md;H&1{-9r)kn?H08)`AK>4DbiKbWM=%I3_6dkkLdUh^lfO1TWNJNi!q zjxtEB15*B4Eyn$nTV|K8ZLkn4Tij(9aJrkV=Ehk~NDN%$yTq7RPm1C7`SHQjM+|I- z#4oWj$V>vu%;UL716D6hzheZo zOafyMW_IGLkVmfirEi2N_(`GM^-pkoWcUqD2%?uNxeq7(O94Y(L@`I@KWy^L! zjYusVDnM&(QlOdlBO3I0Nhd-%aKt$ZG%WOvZLoiN7k5u#szFmwdz`AyDOz{Jh_B+c zB%3$3XtINU7$<`}1xI}jpGVuss8n`YI%yWXGxeQ-*qO>f(yTN1(`gM2Zqnas2n}<_ zmUH701h5DZjeXgDB1)z;s_tZO8)YTp3p-BlkglpNCQ%6@hqIig90g(;IEZAANJD9f zig|fsSd(0aNbc?+g!wPBTZ;LlYL%BflyQJfm5+v!kZZY3N)7T5|xi7XqyH@5)Davz??lzez8vfjl z{tiNv6F4`ve?|)dLYCycF8eylW|45F)fd>#3^M;M8vP>Xmn%&KdH(8oynuad|6GLA zL=SB8pJI79bD%)H^@hu@a$fadCBFiEJxa`DX=-DRy5co|w0J#soCpcs$ z1XP)?2NfTV*Ez}tGq_w0QTBx5uxh6tT>*_kTpg&Yom_Q; zI?a&_If+~P{-F=6oR|jh&2)LR{J<_hg2$&*AizxFFY5GEA$v0 z&LopYo)!0kN#z<~uzR^eNBKl;do>pWyRm{)iiH5dz?iHOkgab=D+cbe_g6|CehRa3 z8MS)QX2Ko*uy>b}3e=3B(FVZI&A8=U$ahkzbUPbJr!YZ>qy|y`Yo~ocu#oeXjXv#X z4dmJe;gHqP$OD!W@v2`K+P-H75zD<*9-f!o66{j8*6(@KiA==SmaBIXa}q8^F=BG6 zjR1ww{6+giB}?MB1!Rz%FxJeOD#Pr$VTYJnok9iA2Vjrf%L9p`_sTLCKZ3QhV&_#W z#XBgU)PfZ$9C=Rn1M?x@jj4xd_|DmQSHm)_^McKiKg2eDVUcI6zQ844Bee1N<2IMF z12f)E$zLl&M|4jM`%1`4RivWLUM@xfnNoL)m}G={Zm~wJ)h2ds^1dQsQj;c7iIFyU zRwbLu9T%brO36-JEXpHM{o-vJU=Y6d>_R&w8b#F=8}_^8$~@gagCuHA>%3vfCTG1d zRW6H;0ja^MGqaRm_s_1m+)-R7y_6SRkz*^`&17yEy*3dhr zjZwVIhPkKDnWuuMMp!@;Qs^w;Bi@IKDLw3GdsD@0Sg={_K;yKdc<-L6$6L;4kJ2n2T#7V{VwmT5K!jbY*m1EhG2X zsXZNK^=Ml@>VoWXv2)kBv=kC0;pYz(L*~IwCkR4Xf%=KePuGw|Q?GFL@ToPK;ixNm zRn>2F%K#1+$uEseeYdLGi=F>mf5C&)Tr#%Q4~Ba1puFdf${G*h^Yf-|Xp1H2$?nXJ zU~)9}lSr*6f)|(7yTE?yULi&a66wL-TyUK^EjOxlz3#bPoPEB}r=A^Wr~0$L;sXxe zX33!!{u2!U=M&^R#-Hi=`n-FCR>a;c5crABwb#5K6@%HOHse?Gbkow}^){bkS=;42 zH@O7?mbn9f7(Acc*FOEe@~%HqJB{>F#~4aM4l63_C8@e zI>{dy+lkq=ZicO!yY^cI`ooiAWf&}>dVS(mrQ>;F4Z@u)dEo(e4C~Z{iH$H^8ddQt zMog6~hLh1xWEu@xp(a?O0GZuQ+iC=S$~m-;CwzO7Z{B2!MP93V`0N`@eSm z+g1gNCy;6L-yR18;{fYFA0;t#9es8@zZ2Sl`TwaEqjfb3il;e*X3bPfHsuKv0CKAk z3OsGA!`P^b^6-CdROnPurmI;S8>xWFApu*sQ5rN_)hWB(W@b#W?!vuB`|hBO>0JMX zjM8hDc%l0&)47Ywo%BmR*9_aUb6OpP6u~jo+dMukV)AKQw~@~pqCw)vQb`~V2I3B! z*%Jc8B4EO|sYlOtMnbtjx6=ADg5|h<$$F_a5WvB>%Q7}Fu5iUIaiZ6v@asF;_8#CO z&s`ZLTYKE~GO(sZc!vOSU8#pZh|IKl{2>v#*TJ<}jw{ipJ0>q4>tFyg1zsSoZ3pcH z>jtjh&rvvC+`it$h6d-_8XY-0b~LggMuZ=MrEFt*bRQ+ZeqW#Odsv*E+ula4A;I)! zLu98t6XM>}(ryYt$t(`1k`DtP0E0M=9Iv&+TVC&(HTVEZ|G+<7Bay1>5gxr<+8Eq` z4q7YQqR69OhJ-Vb101p=^v$bqYTMgFRLPYMWdSSGp%nJTup1rhCv+joJ?UPn>SUC& zlp@7RR*Ad9>q~5YL*wD1Lu`uj`HC?k@ym0w=+bIpmRHynf=UK)7xO(IanSUA+FRx{ zNCgW)t7m7n7@%yI_X(41Bn1~|#mAY4Ss10+hk1d7p)cKatJ+JNy7wmN^u?b-S;Y2% z0uyq_!tZ}N_PB|O9`z2~$HiJGt&snT&DQ4L-alzX>UUz>_=IkP6{`^4eA&6~NL}5( z%3UOl=P5r~i!CHRm(wo8qVNNy`n-32f4j1PqF*n#{-7(!s2#5;gk2iEDZ;_01(JTz zMKL@z{;B1uv3=`;c_zmqctzW})D0U8pcJ;S6xj2x$)(d7;)J;6@wC5{HgiHPKV4p2<^YK>%YJOo987Ozpj@s_T z-(Dnr;t_<=KVnidyl^Lf^yu25+9PJDMHn#Yx|aVIUT)E@?^Bp~^W9`%iPC=%Ed~Xz zAV&f_*G1Em^w0|Wv&8siucE)fl(*$nO>LHARynrTC%U(_B36$!IjE6|9#@sAf|=m> zkSfw6b4Mhu{=6|ivol!D{90=oK-N$Mg8)?=X;*@k_nNdDb>0J!R>?E+BJdvUMEHFD zowH0bU0%-tWax?EutSkpbR1z1A`YN?=%Ng~NDzU?5U-S**X|~V*h<8OvoR`(+l-D6 zGH`~m<|%w88005O5ueyf#3}NqX+?kK`W5yERUP+{&#_nG!R@5vHXoLw{!G}8k{GSR z*FQ+(2rhj1HxMnY<5RVWegTOy_CO3^+QPMbnN=nKXD;kSAL@hidj|*Q1%~BpMT=?j z>|q_fy8seS8mZT6jpYL{|91=Bm*3~__HYgAQNeGNDLD;fm>{8w8Y*38N3|Ab)$|Wq zF6XusDJUwdkK*0gmv9R#yoPM~n7VIe8^?ExsezplS?@zw#^@Apdo;u+4M?GREpO z>6!sc-wdn&kwgj>uBf5ZW3#9)hppo?{7 z`v2qfu)lG%I0Bh5|1D!6%_0i&6X0#~(|e++49s(zi^EQWrC0+#w%vhgkX@GEw7P|? z0%Ki@&F=~?t7`B4r{A>?q83!^Fn=vSjXLh4h>`|AYAMvUZC92kifL-1VKWL%R0{tb zVfz^TFDNx$OIdoqNu<@WCAB6aMJcM0U0pSZF^;oR!H#1(Ob>4M3u9lTWGR^7vCsMJ zdYK6=0YLngQq%6t&N`h zp!8S=)e#HpHnC57hh1?ne`pK+s7L;%-lADynuv);2mI5pJ>B4WP) z{5%<+&(~kjbH!IvXOr2ytH=zh%FH?s=Q;FcdRm60o2e^cg8(aYf_=AGWGisL?wdA9 z+hk=_&F;)!bxA4DGBi)FGuB|^H~fcVWerZ3H&ff)TPEcoGiKW2XM`oxNV-sZn{K(3 zoru4EZnNL~2-n5KwBF#+oo4{!{vux!Lu?&RQ@w?JQNAMZ%|TR=jp&G>nt2##{Wd0# z^ThSato>)BD%DRnCxy(4G$NtNi)di8(?65RMI9H8J%ZcbEcFn%^qxs3Rwqs7ZG3>x zq_c7W_{IQ$Z0-?}$MRzkpN_YvPt<(i8W~ z`J{Zr1g{lm+v$fxX~ARzY^;i3N?+dx^QH>&98kugW1Mm~6P?&GI<@&E;4f0!lHD1O za*3&6A-q{drL~;x)6upb4T%~ zANlOy-Y`>hV2n)@AFpG_f?W1#iFvak`cn5exajdWt>IDzB071k{zusxwJ0#5wQn8@`I_K-2L=xv~dP$m{d@m zxsjoAC|O{=T6`IVOc~AnyUJ;c`19i`BM}`CHgOcJu*KmhVHwP^OkoD?3)8)up$%q1 zj*)MrCh*HC$H|-%0=P!KEF0AcAo9Sfv?7L5h;;j#Ib>Eq4sqm;;C2MO{#;K3Q_Pr> zWB?JI`FFCdJA%RBB@0JGfTf0#a={b@O;tDwXO+NkE*wPGzHZ>`#YReBsmj7SAt}P# z$u9r06nCP^bGFt9*=9>3Pn|aFjXUp9yI}u;e=Tqu(4dx0G}m=DJPPeCZ3@E zGu4qab*qNwrUj6Wvvoyjj_1K4q7O>06T&?n3-kx5bFEd?xbmaVS&8lwMo{3hHDkUgF4i!W>vUz=?ANvd! z5*9?`w>Fe&%iYxvW**`i{kfTZ`sJr2fCehMAjFejN^t{q#c$@M-Poew&F;$ZLwqC}G!mZ22q4{N1d{;Q_r0Q4o($nW4&F?2wUSYeNOU2#hsL zScAQ9K{NwAz4|J-i|L;Oz)nZ9T(kZf+mFh%?SWP#;>FP$u>z$jR zN7r`a%W^-Qxqv2iliQiknAgVw(?8B-El=EDN`3w;mKlNiVI`IkV;X|JBi)aEonF&>$z8& zdk8!SS{shYfj*;Wzl=X-nft~4Uv)6Pc@{wLk9U<5C`M%4X5BAnI<_F>xQb`yCy#9o zG9PX2tl8N9u58&_V~G*N$0-B%0^xqW7dy@mb8xXCd<1a)HC<;3f|GfS@BMC#{QUaD zc|GD#5~ehb+Un}zkysO+t1hME7>Ox)KPaP~jDMb4@m#bAkD!LgmUCV#E!kDLM8ARx z@>T;{y`!fosT7Av#gYcj(QIjDX9aZk+y?LNBaq!-n>|vl-*-*eu>U{8zA~(i-&y$J zQd|l}4^mu;6f0g@+^x8~yOiRt#ogWAU0STT7KejV-2Gkp`^&x0{qQcF-6WIj&LlI@ zNrqn`^`!f*aIt|~(u!+nGK};}+^Uvr&;2DI&Rj4y4NW<^c zg=f=zA^9hyDRq54UGjA~?aT#U#_83yZS+S@+h)wMC#)SLhf+H<+}7lj%7+C(z8cKL zqZBqi?ZGYQc2lIIuWU?k<6n*Ko*NI5R98OjQU#017t0HN*j2aw(`N%Y931GFj-w?7l>U>SG+QI zSch&82F#%*navTa=zA>XYd!+;k?e=#t}KOX&cQa)gFYRg&;7$CJKBicI3KYNMB6sP zu6wV$u2IblHp?>ZPW-t(6yG&5EpUbIk39HJYanTqU7mhlhH3--E)e}9Oo(G>uaPFQ zj~$xqm515eP%VX^C4V1H4A+n7 zsYE0`)s3xN=5;Ymcz&1uSY93uRz!wICq0*~(8&{2JrQRMY&EgDbQtU(rC-9{(6=y3 zU>dMw7o9eoxAi?{JC4e$W@TVX#f|tU7pg|#(7S#mG4g`>h|p8BxJ@qcr#px=G6wYz zRk*9Up_p;e!m$kck|;r71ALlhJH0yJcMu`egO4cGy?{W@ zmG0oXJ32dHzG*#L;C(8hhtPB;*It$OWrD2fhi(m2(|0IXEpM!lKCw|P6U+`BQNypx zV%J#fJ!G{1I`FqOJKb;og{8hMbZqPRUUSRu_OLp*k0<$4XJA6GZP1kCZ^$)@!>3y} zPBvshE-b6t0MrbddDZ)1N9q>bVn2(81m~nkR%4sHCyVY`YWpja&cQlphP-o5oeSo0 zu@x)a5juy9lGvBoi~G*|%a$98DPghk5KRNlx%KnYj`q{J3i?PBwEO0OjbkvQoS`~3 zY{ITxiK0a+vR0^YjnYwO>J@>9Byh57B}z5!ds=lHT3Yq0UoCVqoQ}B#(KcakJk=LI zm0~j1IdT~CH(&}vl`%WPzOk~Cm_zJFAmeDOe#^m>e*5{jk=K*wt=1dJPv_-VA9kMc z)Zttq!t~?8X#ggWSq~d+mj7TPwQ(s37fWI4ncnqMD}l1XaF{sZrRJ~($P4*Zv(|x0Odj)G+=lD*p^^4G(0c8-rw=qw+VPZMd@N) zU%GS!gQ5@dxluM!fh;Pl*#sJ$C%Gb{ZuTw}Q^qo*H?Rn}q-?0z4rzU6t6PDh`G`Em zAATv<;W-{&nGso$3l);UqWzu%~V9g)G*H&dhPBKz24NDd`RV zf&KxcJ`v`&UIIC&E}-3k63QI^gvo0I#)bE6Hf)f479(TbBwJ4oj6?mi$s0uY_(k4R zkLK#>;409Ov4*)ivQx)SR%I?e9DS|jnh;Feih;67RH)mqBD|9N-R!h?ckfeAWLYb)DeDjsXWd%qjr9{DlQ!W;dcR=nXs z%3fOUKd#Ba*!-+7hU&n7y&KlOZ8=>UVK-iv6K{}q|Ls#=$#Y9Of%KO;s^F1#M92}l z$TKF{$5-`5O&9264`9ebfRoQS8QGMU*IrGjNHCY};c~`85Gb&X1>xX!TSgv0O#jE(|4UQJJ zjK=g|UTt#id=VRoCJt}N#fUaAQn{KNI5H47ZA%-yHKN8~i(JZORnp@M01_3$exkM#gL15X zJ((=pzJf|-QHhUu768xumI7{)4#cEa5v*`}D#cf+V`iBA(?m<=#?^8(!Wtx)8IskS z*nceFyWl{5$Uh54HtA%BACz`}dJ zFw{Fj^<|=1QW(-iADZw9kkLbaBAoH*LOGBy!&N1! zElLSswe|0*D3z;)-U(U$Ian7)QoB>hU?<<)DeIrn+^X1??XbSN*nM!w;OA>BS5~$K zJ)X(`J)j>JV9~$VZyP*PNLYc~t7lR8Wsbj^0-#c;%wxdtFtA_qd5gBJgXwU32G{DNYk<^A-^j5P$XPvpsQv-lLN{a8WyOxhBX6idA@i3SD}9P=oXhVF)zPa%hDt1+Q5IZ)qY z#S*k7SOWd1B}O;2>)NcKy0zaP8O!xD$8j(*I}TqBz6pzVfhgn|h5aD(m=Xf2kLTx$ z=R5Zgy}~{d_~V8~u2;)*noF~~9ragtk;fKe4F{(d#e%_d#U0YiZ-d~nOe4Q(#W6|D zJ9!T&P+zL) z*!+EDH~~wZ!ax2OV$ar`SIeG^PBd_VRViSgGWl0|{PTFRobdd7dcDv}Ulf}|zAMs# ziKMD^Z_#Ph9G2;kx--(98T z^x^u#u>Q3lWG?dCZI;5+QePQP#Md3=hzs&>h>5~vbO)VQE{BaQ4#%+`x2|nRE}CxZ z#hQXjN`M(0WN(u2Bqt56x9Mg7rRHVxUl3I0DPR*5RH#Zbn0La=F@~1+1=?}sG|D*x zQ;uS!rqNsIhf5pfU816o7RMDKbwKJh543omXO6rHZZPG58n$B!*+;+$jXLy`H>@6I z?ig%v^nEXuwAG4~|2Q-JDjs80Skl)Jb~V6tp*e#wq3qhYI{Dc?BvX1vez3#}a3jZ9y`Jkb6-fH7E44xn%D>_#)z$ z(xr>Fzf>O@w6_Rf=GuWIhA|I^eD+BQN;KC6y^;(XsX!%rz0C3^g8Hym=(8=*y5MTi z{*%Qo=QdtHpUm9d+R=X&d9fI)`pw#9ZuR`~YUcQ~pO;N*)766K^k<2=;Y_&HGr`m_ zv+HD_WZaG^;ZYJ)nDLyVD#Jlv17U%XI>4_VAUNJ2sI!}k@!Rcx2zsH;NhtLk zFu`Y7$)X~~h0k>z?SVtCPglNEP?9G!zGL{}AN&+$ z;vpP1X}cY%ZY4w~Pn94Wcum5MoS>l$D8kczf7GMzg~vFPw=|43)rrTd;fbTY0blF; z^RU?`#Q77i9R9>^^1@^AOr|yGxFz-Q!u%>r$@FO3RyA90AoRdtgVBJ+I))37o>e3m zgzbW_ADK2=Y>|ikGm@Ks$tP}~Y`f!zf6mfq4cGr+tQM7}$X7CVbL@xq`Av<0PhM9S z_V$pDahjFI5k~@>bLqMBpw1+L!RJz4=f07fkvQ^bTcKnae2R+6yythG87!fnC^J_- zxFsp%urs%Wc_+JvDkytzXae^u?}lPhkF_I9AJ_eI?|_eEsaV4ks!DD|PAyMu zWZ#wk^*8kBzje-&g9a5{npQThsR)%0t5YUvf2R85fke3~C+$|EveT5yjJN9QM1JM; zIqwvQI`Z8Ej!8IVeP@#8Tn@5Xqtn>}uaqf^H69@9Kf)P=6?d}H)AELLFN~aAj>QYV z<((Q`cc&FKmJw2h0TX&+BjS@osU=$${_=qV}U{iyaY#eFRBh<^QQZ zZ&uuQ1tSr~ConE3r79-sM#bW&4S6+UdmlNv%Yc~h@5^1jlrDl$pJ4B4wY}=2(;Ukze+4n1?YkO9*AqoS*OJd^ z#WM=Ot7CeLBG-GSl8j8r|a|uc>Ya@dv1_KV&C(#;f;lr*FEmd}6ua&mWul z|16o7BuqJkE&lME)OSIbmCA>|?jx5T8q)TIBV^?VRc13p8#tUzREWf9^a?_m#zyGt z5LZ?*V7=kzc*yYLF@mNHy1HPKb13REEV)ut9auO$s$fsYMWX#-8l?RxR(7oZT^C{D zx2|uZ`@2w5(_hmn@rt+f+E{G`6RN^UR&J_47}Naau1Af#VQwsB5mvAx4Ig4$@OIPB z0+o8@(w(UCXRWU~y$#OIZ&mT+XznQr5tU!=L4Z+K%N0Y^emSJ5Syu|oG)>UU_`!6BdzhtsOM#Z-=)5q2aS zGP)@*EW40YinRGUT}wtwD0=6;IKq|Qa3z14s8M?vtG8Gg(XPnLwq}L@gO#d#tVRV> z)=Oc5K-6YnJ^9!e+AE$}O4Kj>d|If%1em|KbK+Zh+n3-$}bu$4ae zq7u-K9f*-2-v8C+ezA2tGKNGwbm$t*R|J>Jr=kw)LVmt{#_1-t6KJi z?tAGQf@3V5^rM?nX4GPvNND+|G2xGk1LP>*E-^e5UO9|uAIK@^mEIkpLbZCpmO#!d zKEcP=32ce#(&R;;jMefxW8=+5cRkgnr&D^Gr{phE4Vh``VxY}{Bo*h6vrs+Z)D-R4 z8a~NU$aRMXU8L=#&_(F<8msg49?ioGP~wXZf9e-bOc&fMF^3%s*rjFl#E7;tDQ2WF zuvpU|pqyVotr58x$JmxG#xO?r;SY{Eb+7 z^XlaN1Ub_=zqoX^V=snv-456TTY^}M`7(AP4__*e)n*u^3|_laWS|<~;H*JCv)j>v zL}meFnOnU34LpM-&k{t1*ej1wo75p$`$a+HvH{-nF==rD=LP@z@65%UcZ#U`CwGgB%Qnhul zy~)yPD)aZ=zdhi|c&L(hRa<$^ynk^N9V^FH7jQyp5sViwS4(xdprvOcd_*~E?Gf0U zQcsyqrCjK-f*Gk$Veb9j7VS8{#-jGhF|f?SbmCo)Pshpw8SUuvql3*|DLq3}4zTj) z@1p7yHmgO&m&^HcxurEPz6gp6Aq>Lv9@%v#**T&Dv9>nE^eqGowbO37H!nB2F_Xa?~?1kh!pg8{93-&VM zQ&;M{RIK)5nP|?2rcSG&c9N!a=uF;cvgKax5lx$`>2aGnO`2cv-e1PqxqgT|%6+J^ z7wQvggNAP)!a)_n>3Fqs>rv%*^*n@vxh}9+70F<^wWQtdEVNkjgZZb09-+_AE4v08 z;!Ub<><|l6sIShloBeO{Q;H+6(Ztx4AhtO8I*9KI;s=I;MG&XcS@_&+JP0J(Pz4Kd zvQAW3>0&0_LX-HIG@E0CDQxJpef0u1o*Sv~V#_Vl;bU0_(=_L}>`yyhA7qf?htbhG zXY+`3OVO{LT&n&$H*Ihy4+PrBU%RWuZJV*sD|uZ{-<^|m3}jz0RE9Dz zEI&FlGB`l} zuou75dH+kJOsG#z80K`X50^c}-iG>MDPa(joMz#W2^GD*wlD4-l44s#X`3*MU9e=r)p<1e^b z+?VA~SJsYqm^9aV&)>Owrs3H~}L!F2&_ISL+)Iepd4ykFx#jt5V z9T$k!otkZ*QK=+AN%wF~o<&NX^-A-+8vI(c-$Q-5$hx_RcaE-2$ah@hxgf4aOXsU?&~&CORllA&zS4E-d| zhrUh5#A*+sr6X@}VeyDRWk&Pi)UC77q0+(DM@*@EmPm;8_i!M@=xX>%v8QL!^rjon zdI%=JRLp+akl|+b>yuQIt?lzKGOH!BVb4^Kr`f0DJS(i^@m6*BTkQHPWT&Dj;n$Q+u$go~5Oc zBiO~v$k52%)X3i5$-&VG2(o4X8v`H*u%ej}Slra!2y9|xYGh_*1Xlfb)V~p(tW6wj zP3`p@jKI!D_LesGM%G|cJ$)ld|)K*D~fmS~2D~S`R$y!N9E(Jmx*xIp*`? z919!^A8j3N1_KeQ$9%z~^`m8@?clMX(X#)Uq!B#YHWo1E2PA18Z5gcq1L=JJMgbr% zpDFwMnMNQ@}KO+4|e&7NHgOXFWAz?!3g%;|S!8tqlM+HgYlp z@(t`@2822}fPut@M(+QP@lOsJ8vQr5o}-zKHTVUC-XcdMCeYSeUgcU|!CGD?cr7n* zEw2Q41OSh z)U!4LV8#Gr=>b{!H!|S2*E7{~F#9JS6X?@!NfpGW6yoa(@hyP(7DN2XAbx%jzhH<@ z#a2i0R)8PGH)c0G9O4rQ@ri}_6hV9{AwGo=p9qLg2gD~8;u{O`_60HT*ZTj-iU%Lm z*6-Js9ptxx52F14BzqskrX3X2f&T<2f&U~1{t2x=2n#+4%VPqG{txy5J2>h6!yjh$ zFAfKrmy$Qo1K39IFZxE{ms0;1H}w|w=Gy!%bR$QAox;a!#yci_fIr{ys`2*m4#3|u z;X4ry9&Z5v!Q=Jgt-!B^0X$wm;RCpvz~eO&Vc_vj0O|{bc~3+EcfbV(z(B+a@4w#m z3BQR*@Pt3$tr~Bf@B@$6jkiuj0g3<5=U(354tz9<2_$BvXQr=bX=VWiGXLK)V`T%j z0Aw5tz+ChIIno1L*&v&_*#JR6`I%XPt^a1mi>&=uepn28+uRNHtoy2gfA_v>;1%|c zdiGW?A?|u$WH&u~!@g=O0{~)Usb{6<&IFRMFzu}~10-<0HQxa2+zXhETyN=g0_(50 zWLtwRd$X*-R_lP$FtPyp*CM>icDpH)0c~TLg3~@;oZ59re=dd%j~Ml4K&T&LsLn>`D}{C zBqr}VO5qXi4B7;1g7LA7k-Eu*NNT~{m;0j~m|yL;y+|u(yd9n5WKBF*0t)G9vk%7| zbSn_ch+ZtaYeZ=rD7v(E7`es&3X9^I*;%?p?caZ5ZJA}a zpON4Mu@I>Ss3kV!z8=$G~%o3}d&&1)GY3oPWrGiCX24`s*z3WH^`y9mu_SY=LH7K`6!TZ?g`E$?FBe zj*DjV|ErUyK?tf^UMTRC4xG$7@*OA0yq6GVuO@+k6WQ4$1H*X_gg?C@80AjRX9;A3 zHF~G5-}83Z_!Z4&3Azi}$4**>NU@F&xneYBowVs38fagz-79f`5xUfFjRH<|2{b=< zdwMrsFTCT(PCv@oqyMp)X@< zib(+@j?~nPs(0^(qzs7psSvdGtiCy*3dBJ8yz5HdBIsg!U1W#FrB}tk;XU>T^l7tg zEUhX`t86S{rS!c@V@clDe8xcu&3=#K>cCZFA2NB)_<<;m##Qv>wLqgK$(_HSn2(2< z(JBZgfIw{$;_R7%U_*%Uvxb-g=!<)nQ;mRe#tT%Xx$+s%Oc}H^m-0tbHhaDqS42X7 zlJd0D3#rzQw4K-dGr{Mwzb}cAnnRuq`^hQZ^XYd#$IbG2x<&gV%W4IuHLlAS)WlIw zFz8IqZ@tH(k(B)>BcU0OR1rp+2zj|XQ16@j!P}AB_ifBYYsw2+~Ztyk7nyAO?^1x$8tina^}p zm~uQcbt7?=_@r)MR{5mVdB1Th=B;++KXkZpX2yFXypcH%ta_CwBq>)NiJi@~hWi(| z2Hf?aGLnFi5u9PqC4!|q|5SGM?@jj_a0aM_udW*#!U0!^v|qZTmgPF(e7yo;(j$b9-{h!vMh(3S%aeZ?ocF2UVO;tLrY;`Efy3okr9 zLhioO6BA|&n}&<1EXg?W?fjtDDC|4sTIM~D+)8QM?m_jNE`2L5W!+DNd*h^hH|>p( zrK)J1^IWE0Wh9yLdVz7<2tI-V-srqqdQ08$&emeZ3#ng$S=cJ~&AIxduVP1%FjbMv zjXhqw+i&G0X0QGq5xkeJ#*$;L!>7v6$Bkb-+C7$H-X9KUv(8Xo@2mQ+zXbO-HllT3vh!tq1gIo6@0#djg@s?%NBA%?J5XXF&A$%RCd%|yN_H4s zTvWSih7W#<<&L2w&t3carKI%rmodyIX^63Z&Szz32zK>279qvJYJyk=P9Lw@#5me? z2r3a4;vbRnJpRf1S;~7D*29wNV!MF=Tz}lc*PA7JJr%I!$l{=! zaY3$y5&hqf>z`#1?I*OBt|5sifuxZEY z?3>^FaFn423h8_G5y2>m_e zyEZwBOkVLi!E7^zb25JI9xiQHRXVL-=rv#8xW7d>`+>3ewL6bhY6H#pvIKBo_ zs9LUj8RkfOJOrzj!a*O+BpX+!>wG>;=lgn7kl)$KbFu3a7E`O93FFDD^N_f^WfLoa z*SFs4tx)uMZZ{Llbdp>YZa|Dq8~9B5x{%{Zq|<72lS;a*n1eFT?*=YC@=NGsoy0!! z5F^q51jbTKjW!X0xkU;;BV(i8K? zhPWJ0&D``_*kvjn$r3|^^3e1bVY`2R_A1$@(-00I+m++NJ*DTYXok@3{n#$K9658b z2~m~mv;tkYYKiZw3JxJwUYg&?&~;-{WHCRuMbfvT=4wGoN;keKCm3RyS&x@FDZ4YO zQY8$@I_Eby9<|wNlvr++%R6Zk#V_(L&MV5zORMOQOK=&M%rY)yx3Bmw#WjFGAJ1(|(sqL5>(cUd&E|Md3kj|8R|m%OguHV;pyuGWY}7o>Pr- zts_ENX_GP4<1G{+4DXAMAVv8;y!-kF_BXtP6Q;V`ASs=h%_f3K2bX>=%Jf&#x!8V8 z6s5MJ*|QYJ5eQXlQMHTGwL|p9QodhOf$mDndAbSvu~7_iGnFbYfpRW#egy3T3PU^v zPE`*tY8VfCu{yNt`)p79&C}P^6o*kg%*C(YNvmU00Vb@l8haX<$Ltst^G@f`(Fs(f z4L3H6;B=|Np{D|_pbO@`VJbGCNCW{IiJUP-c8ma9G%wdnUnET^rS(6;hnEFoN2znb z033Dua&9$9CC93sp2i@uUL$r35u^dt!m$Js5oNc>NUTK;UUGbYN*(mU)B>)pxG!IA zly3@ewA)K8Y0F?VRYou&;x5$X^92ePwj_Jd>6kq@Wcj_zYoQ_gn7j;c`?}Rlw~?(^ zidSZIe&?tdqzl~r&;Dac@*NQ?Of-AUl5Iu8uir4dN2bzLJ=OR6)zQ_zPW`IWg5bGj z%3Z4EJCVLX-AK$aQS8Oj#9|+TE1f!TqZK8btr?@9$tD+*4t*07{pAYrXul^yomh~k z>^X|1P1HBUPZn-=IqPKaVXUOzc=UNc?>$G7)W5BTC(5GyzNQTq{Rk3t=j^f9JBeZ_ z!m`1!yIJKfzvWhiXfIeNmA0z_#MSojdC^<>N`%QAj1|`^mV6G|Bl5k zCu1qb!m*m&1&pcY2P^Lg2g{(3Yu7u{I1sjKLnMF~AD*5r?+(bR0>fW~3yWTLw1h}v z`!W$Q%+$~3P+`IOI%*1vs<+XBF zf}D3Tr$b_wL9h(FV}vfFxZ6pO&AfCDmvIjk?`jE%#atcOv6I4bYoKMYT3l6ln4yKd zp_Dm!x9(fi=i1YrJ|gx=b>R?*;axuQ$c-`SNG7)a#20>90;KYnnK>^Bm~C!1x`m`4 zL>e!5xFwd`L^OedJ>MmPPy~QgJ`P<(Xk92>fa~xJN2h@PE^xh=5x54-2rMGfQNaei zG+-33L*M}I1rbUeFQQTM=9s2(<@AG%)6y#oCR4G1N@+P~c@{)9L=N`#^DO;^wg-X4 zEx~pccsRSAHU06Et0j?mcy)M^>h;4Goeess=~I8m*Ie|+hfYFaI5i%4n6RjkIo!MJ z(@MWaEMLPv29&jTwv%*d9F{Wn$GR_?EP%z=RADmm`jY26){}Ck6RV~DVrIS|a5!2kqiWu3- z-LwEy#?Zd{o6$ROCoA2rZr0tT8+qZ;+upJY@?Tlk~h z9BH#auem*N#mdGeTvToow5?2%R0XZFdX~5D!J*ghQ!n~iW*~Pctv~B|-@Z3QbPXtj z*2gE}dqi^DVDZ0MfP|}lBmwC(;^1mAd84V=FYYqkG6T)Fl{Mp7C0w@A^HewcU14v4 zGbl!!sr$E2cX3uR$m%d+*Jo2C*a|DPmGC|?w`xkenep(!1hL#46f_0*G~CQ82)klM zM7@5ePIP>UI|9r8b_<6!?#6UW9#Rg=f6GtcTD9-~6z~daHXNwXO0`bod#2~dLIDhT zHxHO@64kT5O%PE8C4mgGssIfO&~oB?CSbvw=@pRo*kxv@DYw_5OJr|Gp1(pm?~!Rq z;6uj0U(g7#Ft!dK^v#~`WO9oa=D#m(O5Kovo(WzQ1NOigh1>zhOZlP%i3f*HfQbrndx95a`qNf; zR?`X^E~eC5Lpmt4>;(>L*CQP7NW31P5|=3EL7m5sk8T$&qq;J>#QAX`80&~Pn3XN0 zXHD9JHoAlBPo;n{LKQ=I-!ji1^Xrecqw&Ht(U`QDFSWUVP|D+fm=Jrf>tFRa2nL3N z{2DsdO42`dDu8r5*Hag; z_B$Nefre^=VCW9xdRsJ@9RLV&un&28(kQ?yPI244^ctd zye$Ez*~}*aG`an%6z&kmkS6%ho4;nB-hXMdmdbzsOOMjfR* zc_|lN#ijJm#Mbr0ymGA`EnCD2`n^Dpph(+`-Md#d7>|~=brxZS7bx%e64Emtj69DF zX3pKRv`xEybLuZ4Z~RzcrGFOFg-NY#I1{KE_{v7s++o`yuh9G{6#5+rJ-B82&_8wpMa?^cf-Sc44G z-;FxAM0eJebEk#Z1*sV1FXI1vf6hB}$CmI@{6)Q~R_hWHKBvsxHur|I#C1gZ6s!q# z^l6=_V1`*VbOJ#nm8{cZ`_m7XtHHCN2oe1t=If?kVk1Y8b&`mDvn=Ym8gx!hJqB~J ziHjSrW4>d)n@#-qmI8%=9cz8+Xwp|o1@&jgVLwhzbpwMnl_1+_-gHb=BMK zfUT1OpIZ<5-&B-1xRr|2<@W6F$VF2ke}`jx4Yikr2r7!yL^kQc2GI+GsGx)i$HON| zaql{byP!P$=57}GxFv=^DK`Ofuqc#D@{b%~K7$Zue(n7_@RoSHO8aktaM5w(nBj97 zZHsl5TorV?%ao(zKM`4Bo$og}+5FZwWD<<;F5ta7W&LR@3BC?4cUJogyMg;=%4x*N z5ZlDwfQ3dyqT_Cvi0!fS4t_+R8!TCDPW}o8;#Lg z-B2l1e)QGngrFM4CIge}YOs9qh7MO)6;!4>D`zUnTfUFN-ttg#7)P6@8f@ZyVPjLM z)!GTS?C)_+CG}ONC{rG8)J$~_o_#qVsQn^}y-kSH*>Rhxhrfnk;e`jO8p@mb8F7vM5T0oE@6jH>`BB=^7+gMt2(Wq}HKRM~_MK(>_0X-v!R@1W z9XO1PDadXRMWHEwJ=i?N77oGtKyv{t#<=}S44U}kXw-7!2H_g%ZZ}h;yC-+-AMiLf zl#qNu>wJG9{sF@1O&O)h(w|&-e)LAW8VAOnEI9#(%BPv2_sx=?dur(t7h4T0Vs^3Q zGhKKlg9Om&_xz+~@I*1b4)cK|#eawQ59jT73wG2Ze&fmPnqo|;nBbPvXt(sUruBy;tuqKB*ttSAu}fz>ETLZ8dIJ13O0A^2vsP8W!;mUyw_11e(GXc?WMgT86LsZl8mq+ z%kEoP>SDc8F_nv_pqP$}J0CXM?W_KN$j^>tm@rKSO2h&`#zVaV1U;_QV!>tg-imY< z$d$7vAj5l* z%Gg@;(%nt$*I?7~CjRX`L9Gj=g8vFEFeM5ofWe#cvM51q5$Lb|s|5qBY@2J;Gxr^! z7@~#ve4T!+y)A`Lca(O=U)bCj_$c|4<6>&7hOB)|EgR({H&}R-Sy{cUG*0G1%LvJR zVVGxu=?%&(eCGwm33n`4iwEA$8&#h8`qcC84(}zcNRQNk^AQqRvO(Xujb=K6KZL9w zzhTQaztdx%6#hzfi$2th@(~&o#cjOP{DsMcs5DYvE>RTLoZQ*h6f+s_5ERqbdIx*iotxP5u3f9nDGpqCWw-a+#@4UY(zO$ z8{QZ-R`Wq+v0DpjVEHq_{FUqLJ|sy#yyK!DMnXKEO3VmW{vaa&KRL|DI(9Y?+FF{V26BjD`ColJ^qhkCPaXhNy{ zGs|t$!v&Wr*4edwVP@8v$>M)9)1#QZKR=p((IM-+z8y-@!2hoQn)|?WvBoZCM`Lye zsr|FdNomX)8q=GgywOG8Lh+`KrKn%-7xk*SeyVCZ#K8qm!OKB)7Qq#S>|ojrH%h%MZg);a#Hr$5l$qw-ZbNNEn{w*U>UPRJqJ7Q6an|e! zkrK1vv;1j)+K@0xUZQe}3LHJ@23B6X)R=hh@QjLmu&n@}QZbDbGyTYhx4C*k!~Vi> zLjJ3e2vVvDCO@g%(*yN{%Nc_>a~wY{K$o3-JcKa$$7i0>zCwax`wwiA!z1ifFhf~Y zA|Mbb8Txmn&F<$lP@JaAlpM6$F;D0AJ0KjO2l&N7W$FO)v+%?cWE8Ax(Byf@zeC=- zv;a#$g3#3hODxzigv6{_f@JUg^PLzy2l>w_6p2s4^U+8Sad^EO~;B8yZ+kvSG+Lc}Pg;zY|8Icen$hYar zHxm?AwSG1icmADS&sdX>%JWKEI0p!_G1MCPZ@%>+fAcGt{(6=98|u|(=t$AHKgh-Q zF9-A>hKY~^){)3LE4f`d9AnN7%4z4&9%fCVEU&gJi=9EU_ruQo4zmQ;RTvB^_*K2A%5ue+sNqPGxsni0O`Re9 zA*0#ig)$g#K*?7~C{_5M%KK$GYcu!p6=?D`sf~+h+{`4jnDoTwK?q*=VQ&xk9H(&tQ({7n8e@5 zUqc0JYE*xXQoSJqhfa;e&(YeXPHA35C^zH^#(hixi>X&}4=igW^L?)t2*)aYuhKn$ z&BH}$lqJNG!MTRTlW-TD`_YZric!_}$Q9R*8xuZypTF&E)|$gT9KjKSz4LbwG!h%m z!g<)_HjQv~5jTD6E0LD@fZlYicg%qpvvB1w4Eb8UXJKn}3lhg1PpoO1(nTZ9mDXaZ zR@%X0;%jO{b3F8vS37dN8T-sNDvBOB%8)qIJv;SpU&It6DTqb=#Jpfdx= z*ixulc~)-U{IHUj?Cr&b^@$F+VAV?CnBr*;aegATNc|cZ^*ivRvT7m*^hMV?^@)_e zKynPG3G3%)W2;f>kNTpp4*E7nUc>mG8X&K$_0N&iK4eL$OdOD+IUz`=Jh|yU+9UUW z_0H{w2?CBm|De=)7K@_8gHwT?Xj$5Th2X3jo98?w5jyYk#bKI6_WFw%n(0LF@6Rg= zkqq67ho10nhmgK>hWcuFVE>hmYt*|^^;%&OEKCvcv5bS#-RZ%@u@(kSj$an5eruR8}`ws?*|LzWh&ojOU>dbCvhMh?^Ob$+h;Vy1fe97ddQvv zj+Gu!8@>>OM8LJ`&-RZi<x^}Na2|Zm| ztP_5(I_v&KTsfP1j7!;)I~Jpn@wnE~KK?Sja5-G=(ARGtUz)9}@7sfE%m9LV$BPMx z4|^jsIE4=aWrm?)1~uMye39|8zKC*t5s`m{f0X%d*z7$FFu5iEDz)IQWkY|_tujR8 zzBH8}74#G`M}7$HEU$HcQ?|;_Qp;Z(UM+AQIB7pW6KIHw3}VZU_p!$j ziB8?$s_iTy#P{F9nR|l^Wnujh{0>giyQ7CNSU{X?;Y#c-pL4l(S&1sMz!SILU=4Z(4RNR&8_rEVIil#R}&P zP`VgEb0JdqIvnIM7x*0}fZv0|U5c734f#<9yPuJ*{eh*B;Piz=5NHkfIYMRXnTtGQ zbW`4?j+uk zn&;*dKA~iXX#9+wQ;nX6CVee%oKCf3@L9JX}pb9ZgJb7M#00m2s~5jl!7q zL7qfchg&&Cd+br!fnaYcNRLmz7@k6SSwi^1&Yg59eFgiLI9+S|5yAM2yp@=Sz-T2w zkO2R)lm&MsW^PDlh3Ko(mcUQ5V;0v6bZ}SqkLqQ(5~1Bi^Vd2!pkk62-T0SHzE~e- z=3Er{YPODfu2wv-YKL>In>sy~ve%0AXu-h9 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

        `g+d_;0~Wa__B<2c>3 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∋N?8j3Tfds(OC> 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%0AOASt(~j*#xfccsu4(kOJ;iXAzQx+ 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 z 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ℜ|acpCfH_q@kJL3 zzh4e>ad|d?!{n%3rU3bPb0=L3m}e+^zy5h$v^dbM_ccD<=}OW8tUG=_TK&PMYHk0S zF}hH|UShcm%Hl=Qv>si_Qa-+m<>dA7k_BU9DP($kuuy8e&6ldW{zCVQ%PLl)KFXq8 zq8y!|V1yWKXt`hu2S>Rv+}9A=kyJ~|Ax>p6e#tzbLWty;u`eKie!`v^GU#0DJ`RVmBy7wx@v;^#tvU6GMXNJszQkbyi5a_}ca?BnvX z(vGL3)#|l;0T)FIgQcJ4QKKb4os-&trF|`=H2^WU8;J1`lR>)DF$%Iaua6WMoi@+! zSx(NE26PR(iQncXGJ6ivLHGns%+Jre{(m%k003R3%N1r{fUmfU5tSrOFF&;OUJ1;_ zHUI!<2WDyiwZ~w6t4>X-P?Lp_%?=5du=-!SRg$kJD~Nkwjo^~{WL`N1J1F4>oOetJ z87L>42K(~o ztT<21Mv@UHs5i`cZ+^l`u!ck-1m}#PX}z`E%@X`OEsi4*)+k6k!sK}z1v3{U9sw$8 zOcmt>w{-7T@j$<|mrd=sXbTOa;#bve`;t7Lka2uX))Jn|oIZ6v~#C zAe>PhE|QdCobb>b8c}PzizjEwWMH7bC=&pO$tCGZ@hy0#@?@;laTQF^hi~f@MkrkDi0iy zLGCE(nHGSCgb+gtfZ6fw9nmkGMt8UmhAR|E!S#U^#0L)uB^Cz!^=N5865szZ9)5lR zpo1Cy876e?#$_pR?P%425&8pIrX+jK(dh}Mjnt@aFPXqx=NE{0%0A!mKZ1{7fUgJu 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 NU!qjm64#Y1`9DFNe>4C9 diff --git a/app/videos/subtitles/secretPhrase/subtitles-de.vtt b/app/videos/subtitles/secretPhrase/subtitles-de.vtt deleted file mode 100644 index 110563cb6b0f..000000000000 --- a/app/videos/subtitles/secretPhrase/subtitles-de.vtt +++ /dev/null @@ -1,98 +0,0 @@ -WEBVTT - -1 -00:00:00.780 --> 00:00:04.580 -MetaMask ist eine neue Möglichkeit zur Verbindung mit Webseiten und Applikationen. - -2 -00:00:04.580 --> 00:00:08.860 -Auf traditionellen Webseiten ist eine zentrale Datenbank verantwortlich für die Kontrolle und - -3 -00:00:08.860 --> 00:00:10.179 -Wiederherstellung Ihrer Konten. - -4 -00:00:10.179 --> 00:00:15.050 -Auf MetaMask liegt diese Macht aber beim Inhaber des Generalschlüssels. - -5 -00:00:15.050 --> 00:00:18.460 -Wer den Generalschlüssel hat, kontrolliert die Konten. - -6 -00:00:18.460 --> 00:00:21.110 -Ihr geheime Wiederherstellungsphrase ist Ihr „Generalschlüssel“. - -7 -00:00:21.110 --> 00:00:26.070 -Dies ist eine Serie von 12 Worten, die generiert werden, wenn Sie MetaMask zum ersten Mal einrichten, und erlaubt Ihnen - -8 -00:00:26.070 --> 00:00:30.120 -Ihre Wallet und Ihre Gelder wiederherzustellen, falls Sie jemals den Zugriff verlieren sollten. - -9 -00:00:30.120 --> 00:00:33.451 -Es ist wichtig, dass Sie Ihre Wallet sichern, indem Sie - -10 -00:00:33.451 --> 00:00:37.510 -Ihre geheime Wiederherstellungsphrase an einem sicheren und geheimen Ort aufbewahren bzw. speichern. - -11 -00:00:37.510 --> 00:00:41.429 -Wenn jemand den Zugriff darauf erhält, hat diese Person den „Generalschlüssel“ zu Ihrer Wallet und kann - -12 -00:00:41.429 --> 00:00:45.190 -frei auf Ihre Gelder zugreifen und sie Ihnen wegnehmen. - -13 -00:00:45.190 --> 00:00:50.109 -Sie sollten Ihre geheime Wiederherstellungsphrase sicher aufbewahren bzw. speichern, um Ihre MetaMask-Wallet zu schützen. - -14 -00:00:50.109 --> 00:00:54.930 -Sie können sie aufschreiben, irgendwo verstecken, in einem Bankschließfach aufbewahren - -15 -00:00:54.930 --> 00:00:57.729 -oder einen sicheren Passwortmanager verwenden. - -16 -00:00:57.729 --> 00:01:01.050 -Einige Nutzer gravieren Ihre Phrase sogar auf eine Metallplatte ein! - -17 -00:01:01.050 --> 00:01:04.440 -Niemand, nicht einmal das MetaMask-Team, kann Ihnen dabei helfen, - -18 -00:01:04.440 --> 00:01:07.820 -Ihre Wallet wiederherzustellen, falls Sie Ihre geheime Wiederherstellungsphrase verloren haben. - -19 -00:01:07.820 --> 00:01:12.072 -Falls Sie sich Ihre geheime Wiederherstellungsphrase nicht aufgeschrieben und diese an einem sicheren Ort aufbewahren, - -20 -00:01:12.072 --> 00:01:15.492 -machen Sie es jetzt. Wir warten. - -21 -00:01:15.500 --> 00:01:20.780 -Und denken Sie daran: Teilen Sie Ihre geheime Wiederherstellungsphrase niemals mit anderen, nicht einmal mit uns. - -22 -00:01:20.780 --> 00:01:24.910 -Sollte Sie jemand danach fragen, ist dies ein Betrugsversuch. - -23 -00:01:24.910 --> 00:01:26.250 -Das ist alles! - -24 -00:01:26.250 --> 00:01:31.020 -Jetzt wissen Sie, was eine geheime Wiederherstellungsphrase ist und wie Sie Ihre Wallet sicher halten und schützen. - diff --git a/app/videos/subtitles/secretPhrase/subtitles-el.vtt b/app/videos/subtitles/secretPhrase/subtitles-el.vtt deleted file mode 100644 index 77283c77b5e5..000000000000 --- a/app/videos/subtitles/secretPhrase/subtitles-el.vtt +++ /dev/null @@ -1,98 +0,0 @@ -WEBVTT - -1 -00:00:00.780 --> 00:00:04.580 -Το MetaMask είναι ένας νέος τρόπος για να συνδέεστε σε ισότοπους και εφαρμογές. - -2 -00:00:04.580 --> 00:00:08.860 -Στους παραδοσιακούς ιστότοπους, μια κεντρική βάση δεδομένων ή τράπεζα είναι υπεύθυνη για τον έλεγχο και - -3 -00:00:08.860 --> 00:00:10.179 -την ανάκτηση των λογαριασμών σας. - -4 -00:00:10.179 --> 00:00:15.050 -Αλλά στο MetaMask, ο κάτοχος του κύριου κλειδιού έχει όλη τη δύναμη στα χέρια του. - -5 -00:00:15.050 --> 00:00:18.460 -Όποιος έχει το κλειδί, ελέγχει τους λογαριασμούς. - -6 -00:00:18.460 --> 00:00:21.110 -Η μυστική σας φράση ανάκτησης είναι το «κύριο κλειδί» σας. - -7 -00:00:21.110 --> 00:00:26.070 -Είναι μια σειρά από 12 λέξεις που δημιουργούνται όταν ρυθμίζετε για πρώτη φορά το MetaMask, η οποία σας επιτρέπει - -8 -00:00:26.070 --> 00:00:30.120 -να ανακτήσετε το πορτοφόλι σας και τα χρήματά σας εάν κάποια στιγμή χάσετε την πρόσβαση. - -9 -00:00:30.120 --> 00:00:33.451 -Είναι σημαντικό να θωρακίσετε το πορτοφόλι σας με το να κρατήσετε τη - -10 -00:00:33.451 --> 00:00:37.510 -μυστική σας φράση ανάκτησης απόλυτα ασφαλή και μυστική. - -11 -00:00:37.510 --> 00:00:41.429 -Εάν κάποιος αποκτήσει πρόσβαση σε αυτήν, θα έχει το «κύριο κλειδί» για το πορτοφόλι σας και θα μπορεί - -12 -00:00:41.429 --> 00:00:45.190 -να έχει ελεύθερη πρόσβαση και να πάρει όλα σας τα χρήματα. - -13 -00:00:45.190 --> 00:00:50.109 -Για να προστατεύσετε το πορτοφόλι σας στο MetaMask θα πρέπει να αποθηκεύσετε με ασφάλεια την μυστική σας φράση ανάκτησης. - -14 -00:00:50.109 --> 00:00:54.930 -Μπορείτε να την γράψετε σε ένα χαρτί, να την κρύψετε κάπου, να την βάλετε σε μια ασφαλή θυρίδα - -15 -00:00:54.930 --> 00:00:57.729 -ή να χρησιμοποιήσετε έναν ασφαλή διαχειριστή κωδικών. - -16 -00:00:57.729 --> 00:01:01.050 -Μερικοί χρήστες έχουν χαράξει τη φράση τους ακόμα και σε μεταλλική πλάκα! - -17 -00:01:01.050 --> 00:01:04.440 -Κανένας, ούτε καν η ομάδα του MetaMask, δεν μπορεί να σας βοηθήσει να - -18 -00:01:04.440 --> 00:01:07.820 -ανακτήσετε το πορτοφόλι σας εάν χάσετε τη μυστική φράση ανάκτησης. - -19 -00:01:07.820 --> 00:01:12.072 -Αν δεν έχετε καταγράψει την μυστική σας φράση ανάκτησης και δεν την έχετε αποθηκεύσει κάπου με ασφάλεια, - -20 -00:01:12.072 --> 00:01:15.492 -κάντε το τώρα. Θα περιμένουμε. - -21 -00:01:15.500 --> 00:01:20.780 -Και να θυμάστε: μην μοιραστείτε ποτέ και με κανέναν τη μυστική σας φράση ανάκτησης. Ούτε καν με εμάς. - -22 -00:01:20.780 --> 00:01:24.910 -Εάν κάποιος σας την ζητήσει κάποια στιγμή, θα προσπαθεί να σας εξαπατήσει. - -23 -00:01:24.910 --> 00:01:26.250 -Αυτό ήταν! - -24 -00:01:26.250 --> 00:01:31.020 -Τώρα ξέρετε τι είναι η μυστική φράση ανάκτησης και πώς να διατηρήσετε το πορτοφόλι σας ασφαλές και προστατευμένο. - diff --git a/app/videos/subtitles/secretPhrase/subtitles-en.vtt b/app/videos/subtitles/secretPhrase/subtitles-en.vtt deleted file mode 100644 index d07f08531ef8..000000000000 --- a/app/videos/subtitles/secretPhrase/subtitles-en.vtt +++ /dev/null @@ -1,116 +0,0 @@ -WEBVTT - -1 -00:00:00.780 --> 00:00:04.580 -MetaMask is a new way to connect -to sites and applications. - -2 -00:00:04.580 --> 00:00:08.860 -On traditional websites, a central database -or bank is responsible for controlling and - -3 -00:00:08.860 --> 00:00:10.179 -recovering your accounts. - -4 -00:00:10.179 --> 00:00:15.050 -But on MetaMask, all of the power belongs -to the holder of a master key. - -5 -00:00:15.050 --> 00:00:18.460 -Whoever holds the key, controls the accounts. - -6 -00:00:18.460 --> 00:00:21.110 -Your secret recovery phrase -is your "master key". - -7 -00:00:21.110 --> 00:00:26.070 -It's a series of 12 words that are generated -when you first set up MetaMask, which allow - -8 -00:00:26.070 --> 00:00:30.120 -you to recover your wallet and funds if you -ever lose access. - -9 -00:00:30.120 --> 00:00:33.451 -It's important that you secure -your wallet by keeping your - -10 -00:00:33.451 --> 00:00:37.510 -secret recovery phrase -very safe, and very secret. - -11 -00:00:37.510 --> 00:00:41.429 -If anyone gets access to it, they will have -the "master key" to your wallet and can - -12 -00:00:41.429 --> 00:00:45.190 -freely access and take all of your funds. - -13 -00:00:45.190 --> 00:00:50.109 -To secure your MetaMask wallet you'll want -to safely save your secret recovery phrase. - -14 -00:00:50.109 --> 00:00:54.930 -You can write it down, hide it somewhere, -put it in a safe deposit box - -15 -00:00:54.930 --> 00:00:57.729 -or use a secure password manager. - -16 -00:00:57.729 --> 00:01:01.050 -Some users even engrave their -phrase onto a metal plate! - -17 -00:01:01.050 --> 00:01:04.440 -Nobody, not even the team -at MetaMask, can help you - -18 -00:01:04.440 --> 00:01:07.820 -recover your wallet if you lose -your secret recovery phrase. - -19 -00:01:07.820 --> 00:01:12.072 -If you haven't written down your secret recovery -phrase and stored it somewhere safe, - -20 -00:01:12.072 --> 00:01:15.492 -do it now. We'll wait. - -21 -00:01:15.500 --> 00:01:20.780 -And remember, never share your secret recovery -phrase with anyone: not even us. - -22 -00:01:20.780 --> 00:01:24.910 -If anyone ever asks you for it, -they're trying to scam you. - -23 -00:01:24.910 --> 00:01:26.250 -That's it! - -24 -00:01:26.250 --> 00:01:31.020 -Now you know what a secret recovery phrase -is and how to keep your wallet safe and secure. - diff --git a/app/videos/subtitles/secretPhrase/subtitles-es.vtt b/app/videos/subtitles/secretPhrase/subtitles-es.vtt deleted file mode 100644 index c973b4091b8a..000000000000 --- a/app/videos/subtitles/secretPhrase/subtitles-es.vtt +++ /dev/null @@ -1,116 +0,0 @@ -WEBVTT - -1 -00:00:00.780 --> 00:00:04.580 -MetaMask es una nueva forma de conectarse -a sitios y aplicaciones. - -2 -00:00:04.580 --> 00:00:08.860 -En los sitios web tradicionales, una base de datos -o un banco central es responsable de controlar y - -3 -00:00:08.860 --> 00:00:10.179 -recuperar sus cuentas. - -4 -00:00:10.179 --> 00:00:15.050 -Pero con MetaMask, todo el control lo tiene -el titular de la clave maestra. - -5 -00:00:15.050 --> 00:00:18.460 -La persona que tenga esta clave controlará las cuentas. - -6 -00:00:18.460 --> 00:00:21.110 -La “clave maestra” -es su frase secreta de recuperación. - -7 -00:00:21.110 --> 00:00:26.070 -Esta frase está compuesta por 12 palabras y se crea -la primera vez que se configura MetaMask; le permite - -8 -00:00:26.070 --> 00:00:30.120 -recuperar su monedero y los fondos en caso de que -pierda su clave de acceso. - -9 -00:00:30.120 --> 00:00:33.451 -Es fundamental que proteja -su monedero - -10 -00:00:33.451 --> 00:00:37.510 -guardando la frase secreta de recuperación -en un lugar sumamente seguro y secreto. - -11 -00:00:37.510 --> 00:00:41.429 -Si alguna persona llegara a encontrarla, accederá -a la “clave maestra” de su monedero y podrá - -12 -00:00:41.429 --> 00:00:45.190 -ingresar libremente a todos sus fondos y tomarlos. - -13 -00:00:45.190 --> 00:00:50.109 -Para proteger su monedero en MetaMask, -guarde en un lugar seguro su frase secreta de recuperación. - -14 -00:00:50.109 --> 00:00:54.930 -Puede anotarla, esconderla en algún lugar, -guardarla en una caja de seguridad - -15 -00:00:54.930 --> 00:00:57.729 -o utilizar un gestor de contraseñas protegido. - -16 -00:00:57.729 --> 00:01:01.050 -Inclusive, ¡algunos usuarios graban -la frase en una placa metálica! - -17 -00:01:01.050 --> 00:01:04.440 -Si llegara a perder su frase secreta de recuperación, -ninguna persona, ni siquiera el equipo de MetaMask, podrá ayudarlo - -18 -00:01:04.440 --> 00:01:07.820 -recuperar su monedero si pierde -su frase secreta de recuperación. - -19 -00:01:07.820 --> 00:01:12.072 -Si aún no ha anotado ni guardado en un lugar seguro su -frase secreta de recuperación, - -20 -00:01:12.072 --> 00:01:15.492 -hágalo ahora mismo. Lo esperamos. - -21 -00:01:15.500 --> 00:01:20.780 -Y recuerde no compartir nunca su -frase secreta de recuperación con nadie; ni siquiera con nosotros. - -22 -00:01:20.780 --> 00:01:24.910 -Si alguien se la pide alguna vez, -será con intenciones de estafarlo. - -23 -00:01:24.910 --> 00:01:26.250 -¡Eso es todo! - -24 -00:01:26.250 --> 00:01:31.020 -Ahora ya sabe qué es una frase secreta de recuperación -y qué debe hacer para mantener protegida su monedero. - diff --git a/app/videos/subtitles/secretPhrase/subtitles-fr.vtt b/app/videos/subtitles/secretPhrase/subtitles-fr.vtt deleted file mode 100644 index a80e4d6e479a..000000000000 --- a/app/videos/subtitles/secretPhrase/subtitles-fr.vtt +++ /dev/null @@ -1,98 +0,0 @@ -WEBVTT - -1 -00:00:00.780 --> 00:00:04.580 -MetaMask offre une nouvelle façon de se connecter aux sites et aux applications. - -2 -00:00:04.580 --> 00:00:08.860 -Sur les sites traditionnels, une base de données centrale ou une banque est chargée du contrôle et de - -3 -00:00:08.860 --> 00:00:10.179 -la récupération des comptes. - -4 -00:00:10.179 --> 00:00:15.050 -Mais sur MetaMask, tout le pouvoir appartient au détenteur de la clé maîtresse. - -5 -00:00:15.050 --> 00:00:18.460 -Celui qui détient la clé, contrôle les comptes. - -6 -00:00:18.460 --> 00:00:21.110 -Votre phrase de récupération secrète est votre « clé maîtresse ». - -7 -00:00:21.110 --> 00:00:26.070 -Il s’agit d’une série de 12 mots générés lors de la première installation de MetaMask qui vous permet - -8 -00:00:26.070 --> 00:00:30.120 -de récupérer votre portefeuille et vos fonds, si vous en perdez l’accès. - -9 -00:00:30.120 --> 00:00:33.451 -Pour éviter tout accès non autorisé à votre portefeuille, veuillez garder votre - -10 -00:00:33.451 --> 00:00:37.510 -phrase de récupération secrète dans un lieu sûr et sécurisé. - -11 -00:00:37.510 --> 00:00:41.429 -Car toute personne ayant accès à votre phrase de récupération secrète, et donc à la « clé maîtresse » de votre portefeuille, pourra - -12 -00:00:41.429 --> 00:00:45.190 -accéder librement à vos fonds et les dérober. - -13 -00:00:45.190 --> 00:00:50.109 -Pour éviter tout accès non autorisé à votre portefeuille MetaMask, veuillez garder votre phrase de récupération secrète dans un lieu sûr et sécurisé. - -14 -00:00:50.109 --> 00:00:54.930 -Vous pouvez l’écrire sur un bout de papier et la cacher dans un lieu sûr comme dans un coffre-fort - -15 -00:00:54.930 --> 00:00:57.729 -ou utiliser un gestionnaire de mots de passe sécurisé. - -16 -00:00:57.729 --> 00:01:01.050 -Certains utilisateurs préfèrent même graver leur phrase de récupération secrète sur une plaque de métal ! - -17 -00:01:01.050 --> 00:01:04.440 -Personne, pas même l’équipe de MetaMask, ne peut vous aider - -18 -00:01:04.440 --> 00:01:07.820 -à récupérer votre portefeuille si vous perdez votre phrase de récupération secrète. - -19 -00:01:07.820 --> 00:01:12.072 -Si vous n’avez pas encore écrit votre phrase de récupération secrète sur un bout de papier ou ne l’avez pas encore cachée dans un endroit sûr, - -20 -00:01:12.072 --> 00:01:15.492 -faites-le maintenant. Nous vous attendrons. - -21 -00:01:15.500 --> 00:01:20.780 -Et n’oubliez surtout pas que vous ne devriez jamais partager votre phrase de récupération secrète avec quiconque ; pas même avec nous. - -22 -00:01:20.780 --> 00:01:24.910 -Si quelqu’un vous la demande, c’est qu’il essaie de vous escroquer. - -23 -00:01:24.910 --> 00:01:26.250 -Voilà, c’est tout ! - -24 -00:01:26.250 --> 00:01:31.020 -Maintenant vous savez ce qu’est une phrase de récupération secrète et ce que vous devez faire pour protéger votre portefeuille. - diff --git a/app/videos/subtitles/secretPhrase/subtitles-hi.vtt b/app/videos/subtitles/secretPhrase/subtitles-hi.vtt deleted file mode 100644 index ec3d9ec37d11..000000000000 --- a/app/videos/subtitles/secretPhrase/subtitles-hi.vtt +++ /dev/null @@ -1,100 +0,0 @@ -WEBVTT - -1 -00:00:00.780 --> 00:00:04.580 -मेटामास्क साइटों और एप्लीकेशन से जुड़ने का एक नया तरीका है। - -2 -00:00:04.580 --> 00:00:08.860 -पारंपरिक वेबसाइटों पर, एक केंद्रीय डेटाबेस -या बैंक नियंत्रित करने के लिए जिम्मेदार है और - -3 -00:00:08.860 --> 00:00:10.179 -अपने खाते पुनर्प्राप्त करना - -4 -00:00:10.179 --> 00:00:15.050 -लेकिन मेटामास्क पर, समस्त शक्ति मास्टर कुंजी के धारक के पास होती है। - -5 -00:00:15.050 --> 00:00:18.460 -जिसके पास कुंजी होती है, वह खातों को नियंत्रित करता है। - -6 -00:00:18.460 --> 00:00:21.110 -आपका गुप्त पुनर्प्राप्ति वाक्यांश आपकी "मास्टर कुंजी" है। - -7 -00:00:21.110 --> 00:00:26.070 -यह उत्पन्न होने वाले 12 शब्दों की एक श्रृंखला है -जब आप पहली बार मेटामास्क सेट करते हैं, जो अनुमति देता है - -8 -00:00:26.070 --> 00:00:30.120 -एक्सेस खोने की स्थिति में अपने वॉलेट और धन को रिकवर करने की सुविधा प्रदान करती है। - -9 -00:00:30.120 --> 00:00:33.451 -यह महत्वपूर्ण है कि आप अपने वॉलेट को सुरक्षित रखे - -10 -00:00:33.451 --> 00:00:37.510 -गुप्त पुनर्प्राप्ति वाक्यांश बहुत सुरक्षित, और बहुत ही गुप्त। - -11 -00:00:37.510 --> 00:00:41.429 -यदि किसी को इसकी एक्सेस मिलती है, तो उनके पास आपके वॉलेट की "मास्टर कुंजी" होगी और वह कर सकता है - -12 -00:00:41.429 --> 00:00:45.190 -वह बहुत आसानी से आपके पूरे फण्ड को एक्सेस करके उसे चुरा सकता है। - -13 -00:00:45.190 --> 00:00:50.109 -अपने मेटामास्क वॉलेट को सुरक्षित रखने के लिए आपको अपने गुप्त पुनर्प्राप्ति वाक्यांश को सुरक्षित ढंग से सहेजना चाहिए। - -14 -00:00:50.109 --> 00:00:54.930 -आप इसे लिख सकते हैं, इसे कहीं छुपा सकते हैं, इसे सुरक्षित जमा बॉक्स में रख सकते हैं - -15 -00:00:54.930 --> 00:00:57.729 -या एक सुरक्षित पासवर्ड मैनेजर का उपयोग करें। - -16 -00:00:57.729 --> 00:01:01.050 -कुछ उपयोगकर्ता अपने वाक्यांश को धातु की प्लेट पर भी उकेरते हैं! - -17 -00:01:01.050 --> 00:01:04.440 -कोई नहीं, यहां तक कि मेटामास्क की टीम भी आपकी मदद नहीं कर सकती - -18 -00:01:04.440 --> 00:01:07.820 -यदि आप अपना गुप्त पुनर्प्राप्ति वाक्यांश खो देते हैं तो अपना वॉलेट पुनर्प्राप्त करें। - -19 -00:01:07.820 --> 00:01:12.072 -यदि आपने अपने गुप्त पुनर्प्राप्ति वाक्यांश को लिखकर किसी सुरक्षित स्थान पर स्टोर नहीं किया है - -20 -00:01:12.072 --> 00:01:15.492 -अभी करें। हम प्रतीक्षा करेंगे। - -21 -00:01:15.500 --> 00:01:20.780 -और याद रखें, कभी भी अपने गुप्त पुनर्प्राप्ति वाक्यांश को किसी के भी साथ, यहां तक हमारे साथ भी, साझा नहीं करें। - -22 -00:01:20.780 --> 00:01:24.910 -अगर कभी कोई आपसे इसके लिए पूछे, वे आपको धोखा देने की कोशिश कर रहे हैं। - -23 -00:01:24.910 --> 00:01:26.250 -बस इतना ही! - -24 -00:01:26.250 --> 00:01:31.020 -अब आप जानते हैं कि गुप्त पुनर्प्राप्ति वाक्यांश क्या है और अपने वॉलेट को संरक्षित और सुरक्षित कैसे रखें। - diff --git a/app/videos/subtitles/secretPhrase/subtitles-id.vtt b/app/videos/subtitles/secretPhrase/subtitles-id.vtt deleted file mode 100644 index 7683dfe8548b..000000000000 --- a/app/videos/subtitles/secretPhrase/subtitles-id.vtt +++ /dev/null @@ -1,99 +0,0 @@ -WEBVTT - -1 -00:00:00.780 --> 00:00:04.580 -MetaMask adalah cara baru untuk terhubung ke situs dan aplikasi. - -2 -00:00:04.580 --> 00:00:08.860 -Di situs web biasa, basis data pusat atau bank bertanggung jawab untuk mengendalikan dan - -3 -00:00:08.860 --> 00:00:10.179 -memulihkan akun Anda. - -4 -00:00:10.179 --> 00:00:15.050 -Namun, di MetaMask, seluruh kuasa milik pemegang kunci utama. - -5 -00:00:15.050 --> 00:00:18.460 -Siapa pun yang memegang kunci, ia mengendalikan akun. - -6 -00:00:18.460 --> 00:00:21.110 -Frasa pemulihan rahasia Anda adalah "kunci rahasia" Anda. - -7 -00:00:21.110 --> 00:00:26.070 -Frasa pemulihan ini berupa 12 kata yang dihasilkan saat pertama kali Anda menyiapkan MetaMask, yang memungkinkan - -8 -00:00:26.070 --> 00:00:30.120 -Anda untuk memulihkan dompet dan dana Anda jika Anda kehilangan akses. - -9 -00:00:30.120 --> 00:00:33.451 -Anda perlu mengamankan dompet Anda dengan menjaga - -10 -00:00:33.451 --> 00:00:37.510 -frasa pemulihan rahasia dengan sangat aman, dan sangat rahasia. - -11 -00:00:37.510 --> 00:00:41.429 -Jika seseorang mendapatkan akses ke frasa tersebut, ia akan memiliki "kunci utama" ke dompet Anda dan dapat - -12 -00:00:41.429 --> 00:00:45.190 -dengan bebas mengakses serta mengambil seluruh dana Anda. - -13 -00:00:45.190 --> 00:00:50.109 -Untuk mengamankan dompet MetaMask Anda, Anda perlu menyimpan frasa pemulihan rahasia dengan aman. - -14 -00:00:50.109 --> 00:00:54.930 -Anda dapat menuliskannya, menyembunyikannya, -menaruhnya di safe deposit box, - -15 -00:00:54.930 --> 00:00:57.729 -atau menggunakan pengelola kata sandi yang aman. - -16 -00:00:57.729 --> 00:01:01.050 -Sebagian pengguna bahkan mengukir frasa yang mereka miliki di lempengan logam! - -17 -00:01:01.050 --> 00:01:04.440 -Tidak seorang pun, bahkan tim di MetaMask sekalipun, dapat membantu Anda - -18 -00:01:04.440 --> 00:01:07.820 -untuk memulihkan dompet jika Anda kehilangan frasa pemulihan rahasia Anda. - -19 -00:01:07.820 --> 00:01:12.072 -Jika Anda belum menuliskan frasa pemulihan rahasia dan menyimpannya di tempat yang aman, - -20 -00:01:12.072 --> 00:01:15.492 -lakukan sekarang. Kami akan menunggu. - -21 -00:01:15.500 --> 00:01:20.780 -Dan ingat, jangan pernah membagikan frasa pemulihan rahasia kepada siapa pun: bahkan kepada kami. - -22 -00:01:20.780 --> 00:01:24.910 -Jika ada orang yang menanyakannya kepada Anda, mereka mencoba menipu Anda. - -23 -00:01:24.910 --> 00:01:26.250 -Itu saja! - -24 -00:01:26.250 --> 00:01:31.020 -Sekarang, Anda mengetahui apa itu frasa pemulihan rahasia dan cara mempertahankan agar dompet Anda tetap aman dan terjaga. - diff --git a/app/videos/subtitles/secretPhrase/subtitles-ja.vtt b/app/videos/subtitles/secretPhrase/subtitles-ja.vtt deleted file mode 100644 index ccc19bc735c4..000000000000 --- a/app/videos/subtitles/secretPhrase/subtitles-ja.vtt +++ /dev/null @@ -1,98 +0,0 @@ -WEBVTT - -1 -00:00:00.780 --> 00:00:04.580 -MetaMaskはサイトやアプリケーションに接続する新たな手段となります。 - -2 -00:00:04.580 --> 00:00:08.860 -従来のWebサイトでは、中央データベースや銀行がアカウントの - -3 -00:00:08.860 --> 00:00:10.179 -管理と復元を行います。 - -4 -00:00:10.179 --> 00:00:15.050 -一方、MetaMaskでは、マスターキーの所有者がすべての権限を握っています。 - -5 -00:00:15.050 --> 00:00:18.460 -キーを持っている人がアカウントを管理できるのです。 - -6 -00:00:18.460 --> 00:00:21.110 -シークレットリカバリーフレーズがその「マスターキー」となります。 - -7 -00:00:21.110 --> 00:00:26.070 -これはMetaMaskのセットアップ時に生成される12単語からなるフレーズで、 - -8 -00:00:26.070 --> 00:00:30.120 -万が一アクセスできなくなった際にウォレットと資金を復元できます。 - -9 -00:00:30.120 --> 00:00:33.451 -ウォレットの安全を保つため、 - -10 -00:00:33.451 --> 00:00:37.510 -シークレットリカバリーフレーズは厳重に保管し、絶対に秘密にしてください。 - -11 -00:00:37.510 --> 00:00:41.429 -誰かの手に渡ると、ウォレットへの「マスターキー」として使用され、 - -12 -00:00:41.429 --> 00:00:45.190 -すべての資金にアクセスし盗むことが可能になります。 - -13 -00:00:45.190 --> 00:00:50.109 -MetaMaskウォレットを安全に保つため、シークレットリカバリーフレーズは大切に保管してください。 - -14 -00:00:50.109 --> 00:00:54.930 -書き留めて、どこかに隠したり、安全な金庫に保管したり、 - -15 -00:00:54.930 --> 00:00:57.729 -セキュアなパスワードマネージャーを使用することもできます。 - -16 -00:00:57.729 --> 00:01:01.050 -金属製のプレートにフレーズを彫るユーザーもいます! - -17 -00:01:01.050 --> 00:01:04.440 -シークレットリカバリーフレーズをなくした場合、MetaMaskチームを含め、 - -18 -00:01:04.440 --> 00:01:07.820 -誰にもウォレットの復元を行うことはできません。 - -19 -00:01:07.820 --> 00:01:12.072 -シークレットリカバリーフレーズを書き留めて安全な場所に保管していない場合は、 - -20 -00:01:12.072 --> 00:01:15.492 -今すぐ行ってください。その間お待ちします。 - -21 -00:01:15.500 --> 00:01:20.780 -繰り返しになりますが、シークレットリカバリーフレーズはMetaMaskチームを含め、絶対に誰にも教えないでください。 - -22 -00:01:20.780 --> 00:01:24.910 -誰かに尋ねられたら、それは詐欺だと思ってください。 - -23 -00:01:24.910 --> 00:01:26.250 -以上です! - -24 -00:01:26.250 --> 00:01:31.020 -これでシークレットリカバリーフレーズとウォレットの安全を保つ方法の説明は終わりです。 - diff --git a/app/videos/subtitles/secretPhrase/subtitles-ko.vtt b/app/videos/subtitles/secretPhrase/subtitles-ko.vtt deleted file mode 100644 index 662abac0b4ae..000000000000 --- a/app/videos/subtitles/secretPhrase/subtitles-ko.vtt +++ /dev/null @@ -1,98 +0,0 @@ -WEBVTT - -1 -00:00:00.780 --> 00:00:04.580 -MetaMask는 사이트와 애플리케이션을 연결하는 새로운 방법입니다. - -2 -00:00:04.580 --> 00:00:08.860 -기존의 웹사이트는 중앙 데이터베이스나 은행에 계정 복구의 - -3 -00:00:08.860 --> 00:00:10.179 -책임이 있습니다. - -4 -00:00:10.179 --> 00:00:15.050 -MetaMask에서는 모든 권한이 마스터 키 소유자에게 있습니다. - -5 -00:00:15.050 --> 00:00:18.460 -마스터 키를 소유한 사람이 해당 계정의 소유자가 됩니다. - -6 -00:00:18.460 --> 00:00:21.110 -여러분이 가지고 계시는 비밀복구구문이 바로 '마스터 키'입니다. - -7 -00:00:21.110 --> 00:00:26.070 -이는 처음 MetaMask 계정을 만들 때 생성된 12개의 단어로 이루어진 암호이며 - -8 -00:00:26.070 --> 00:00:30.120 -이를 사용하면 유사시에 지갑과 자금을 회복할 수 있습니다. - -9 -00:00:30.120 --> 00:00:33.451 -따라서 지갑을 안전하게 지키려면 이러한 비밀복구구문을 - -10 -00:00:33.451 --> 00:00:37.510 -매우 안전한 비밀장소에 보관하는 것이 중요합니다. - -11 -00:00:37.510 --> 00:00:41.429 -누구든지 비밀복구구문을 알게 되면 해당 지갑에 대한 '마스터 키'를 손에 넣게 되며 - -12 -00:00:41.429 --> 00:00:45.190 -해당 계정의 자금을 모두 인출할 수 있게 됩니다. - -13 -00:00:45.190 --> 00:00:50.109 -MetaMask 지갑의 보안을 유지하려면 비밀복구구문을 안전하게 저장해야 합니다. - -14 -00:00:50.109 --> 00:00:54.930 -이를 적어 별도의 장소나 안전 금고에 보관할 수도 있고 - -15 -00:00:54.930 --> 00:00:57.729 -비밀번호 관리자를 이용하셔도 좋습니다. - -16 -00:00:57.729 --> 00:01:01.050 -사용자에 따라 이를 금속판에 새겨 놓기도 합니다! - -17 -00:01:01.050 --> 00:01:04.440 -이러한 비밀복구구문을 분실하면 아무도, 심지어 MetaMask도 - -18 -00:01:04.440 --> 00:01:07.820 -계정 복구를 도와드릴 수 없습니다. - -19 -00:01:07.820 --> 00:01:12.072 -아직 비밀복구구문을 적어 안전한 곳에 보관하지 않으셨다면, - -20 -00:01:12.072 --> 00:01:15.492 -지금 바로 하세요. 기다리겠습니다. - -21 -00:01:15.500 --> 00:01:20.780 -절대로 본인의 비밀복구구문을 다른 사람에게 알려주지 마세요. MetaMask에도 알리면 안 됩니다. - -22 -00:01:20.780 --> 00:01:24.910 -이를 묻는 사람이 있다면 피싱 범죄자임에 틀림없습니다. - -23 -00:01:24.910 --> 00:01:26.250 -그렇습니다! - -24 -00:01:26.250 --> 00:01:31.020 -이제 비밀복구구문과 지갑을 안전하게 보관하는 방법에 대하여 확인하였습니다. - diff --git a/app/videos/subtitles/secretPhrase/subtitles-pt.vtt b/app/videos/subtitles/secretPhrase/subtitles-pt.vtt deleted file mode 100644 index fb70489f1818..000000000000 --- a/app/videos/subtitles/secretPhrase/subtitles-pt.vtt +++ /dev/null @@ -1,116 +0,0 @@ -WEBVTT - -1 -00:00:00.780 --> 00:00:04.580 -A MetaMask é uma nova forma -de se conectar a sites e aplicativos. - -2 -00:00:04.580 --> 00:00:08.860 -Em sites tradicionais, uma base de dados central -ou um banco é responsável por controlar e - -3 -00:00:08.860 --> 00:00:10.179 -recuperar suas contas. - -4 -00:00:10.179 --> 00:00:15.050 -Mas, na MetaMask, todo o poder pertence -ao titular de uma chave-mestra. - -5 -00:00:15.050 --> 00:00:18.460 -Quem tiver a chave controla as contas. - -6 -00:00:18.460 --> 00:00:21.110 -Sua Frase de Recuperação Secreta -é sua "chave-mestra". - -7 -00:00:21.110 --> 00:00:26.070 -Ela é uma série de 12 palavras geradas quando você -configura a MetaMask pela primeira vez, a qual permite - -8 -00:00:26.070 --> 00:00:30.120 -recuperar sua carteira e fundos -caso você perca o acesso. - -9 -00:00:30.120 --> 00:00:33.451 -É importante que você proteja -sua carteira guardando sua - -10 -00:00:33.451 --> 00:00:37.510 -Frase de Recuperação Secreta -de forma bem segura e sigilosa. - -11 -00:00:37.510 --> 00:00:41.429 -Se alguém tiver acesso a ela, terá em mãos -a "chave-mestra" da sua carteira e poderá - -12 -00:00:41.429 --> 00:00:45.190 -acessar e retirar livremente todos os seus fundos. - -13 -00:00:45.190 --> 00:00:50.109 -Para proteger sua carteira MetaMask, recomenda-se -salvar sua Frase de Recuperação Secreta de modo seguro. - -14 -00:00:50.109 --> 00:00:54.930 -Você pode anotá-la por escrito, escondê-la -em algum lugar, colocá-la em um cofre - -15 -00:00:54.930 --> 00:00:57.729 -ou usar um gerenciador de senhas protegido. - -16 -00:00:57.729 --> 00:01:01.050 -Alguns usuários até mesmo gravam -a frase em uma placa de metal! - -17 -00:01:01.050 --> 00:01:04.440 -Ninguém, nem mesmo a equipe -da MetaMask, pode ajudar você - -18 -00:01:04.440 --> 00:01:07.820 -a recuperar sua carteira caso perca -sua Frase de Recuperação Secreta. - -19 -00:01:07.820 --> 00:01:12.072 -Se não tiver anotado por escrito sua frase de recuperação -secreta e a armazenado em um lugar seguro, - -20 -00:01:12.072 --> 00:01:15.492 -faça isso agora. A gente espera. - -21 -00:01:15.500 --> 00:01:20.780 -E lembre-se: nunca compartilhe sua frase de recuperação -secreta com ninguém, nem mesmo conosco. - -22 -00:01:20.780 --> 00:01:24.910 -Se alguém a pedir a você, -é uma tentativa de golpe. - -23 -00:01:24.910 --> 00:01:26.250 -É isso! - -24 -00:01:26.250 --> 00:01:31.020 -Agora você sabe o que é uma Frase de Recuperação -Secreta e como manter sua carteira segura. - diff --git a/app/videos/subtitles/secretPhrase/subtitles-ru.vtt b/app/videos/subtitles/secretPhrase/subtitles-ru.vtt deleted file mode 100644 index f4fe9ca46376..000000000000 --- a/app/videos/subtitles/secretPhrase/subtitles-ru.vtt +++ /dev/null @@ -1,105 +0,0 @@ -WEBVTT - -1 -00:00:00.780 --> 00:00:04.580 -MetaMask — это новый способ подключения -к сайтам и приложениям. - -2 -00:00:04.580 --> 00:00:08.860 -На традиционных сайтах центральная база данных или банк отвечает за контроль и - -3 -00:00:08.860 --> 00:00:10.179 -восстановление ваших счетов. - -4 -00:00:10.179 --> 00:00:15.050 -Но в MetaMask все полномочия в руках -обладателя главного ключа. - -5 -00:00:15.050 --> 00:00:18.460 -Тот, кто имеет этот ключ, контролирует счета. - -6 -00:00:18.460 --> 00:00:21.110 -Ваша секретная фраза для восстановления — это ваш главный ключ. - -7 -00:00:21.110 --> 00:00:26.070 -Это последовательность из 12 слов, которые генерируются при первой настройке MetaMask и позволяет - -8 -00:00:26.070 --> 00:00:30.120 -вам восстановить свой кошелек и средства, если вы -когда-либо утратите доступ к ним. - -9 -00:00:30.120 --> 00:00:33.451 -Важно, чтобы вы обезопасили -свой кошелек, сохранив - -10 -00:00:33.451 --> 00:00:37.510 -секретную фразу для восстановления -в очень надежном месте и в полной тайне. - -11 -00:00:37.510 --> 00:00:41.429 -Если кто-то узнает ее, у этого человека будет -главный ключ к вашему кошельку, и он сможет - -12 -00:00:41.429 --> 00:00:45.190 -получить свободный доступ ко всем вашим средствам и забрать их. - -13 -00:00:45.190 --> 00:00:50.109 -Чтобы защитить кошелек MetaMask, вам необходимо безопасно сохранить секретную фразу для восстановления. - -14 -00:00:50.109 --> 00:00:54.930 -Вы можете записать ее и спрятать куда-нибудь, -положить в сейф - -15 -00:00:54.930 --> 00:00:57.729 -или использовать безопасный менеджер паролей. - -16 -00:00:57.729 --> 00:01:01.050 -Некоторые пользователи даже гравируют свою фразу на металлической пластине! - -17 -00:01:01.050 --> 00:01:04.440 -Никто, даже команда MetaMask, не сможет вам помочь - -18 -00:01:04.440 --> 00:01:07.820 -восстановить кошелек, если вы потеряете секретную фразу для восстановления. - -19 -00:01:07.820 --> 00:01:12.072 -Если вы не записали свою секретную фразу для восстановления и не сохранили ее в безопасном месте, - -20 -00:01:12.072 --> 00:01:15.492 -сделайте это сейчас. Мы подождем. - -21 -00:01:15.500 --> 00:01:20.780 -И помните: никогда никому не сообщайте свою секретную фразу для восстановления, даже нам. - -22 -00:01:20.780 --> 00:01:24.910 -Если кто-то когда-нибудь попросит вас предоставить ее, этот человек пытается вас обмануть. - -23 -00:01:24.910 --> 00:01:26.250 -Вот и все! - -24 -00:01:26.250 --> 00:01:31.020 -Теперь вы знаете, что такое секретная фраза для восстановления и как сохранить свой кошелек в целости и сохранности. - diff --git a/app/videos/subtitles/secretPhrase/subtitles-tl.vtt b/app/videos/subtitles/secretPhrase/subtitles-tl.vtt deleted file mode 100644 index 7aba432adcd1..000000000000 --- a/app/videos/subtitles/secretPhrase/subtitles-tl.vtt +++ /dev/null @@ -1,115 +0,0 @@ -WEBVTT - -1 -00:00:00.780 --> 00:00:04.580 -Ang MetaMask ay isang bagong paraan para kumonekta -sa mga site at application. - -2 -00:00:04.580 --> 00:00:08.860 -Sa mga tradisyonal na website, ang isang central database -o bangko ang magiging responsable sa pagkontrol at - -3 -00:00:08.860 --> 00:00:10.179 -pag-recover ng iyong mga account. - -4 -00:00:10.179 --> 00:00:15.050 -Pero sa MetaMask, ang lahat ng kakayahan ay nasa -may hawak ng master key. - -5 -00:00:15.050 --> 00:00:18.460 -Kung sino man ang may hawak ng key, siya ang magkokontrol sa mga account. - -6 -00:00:18.460 --> 00:00:21.110 -Ang iyong lihim na parirala sa pagbawi -ay ang iyong "master key". - -7 -00:00:21.110 --> 00:00:26.070 -Ito ay isang serye ng 12 salita na nabuo -noong una kang nag-set up ng MetaMask, na nagpapahintulot - -8 -00:00:26.070 --> 00:00:30.120 -sa iyong mabawi ang iyong wallet at pondo kung ikaw -kailanman mawawalan ng access. - -9 -00:00:30.120 --> 00:00:33.451 -Mahalagang i-secure mo -ang iyong wallet sa pamamagitan ng pagpapanatili ng iyong - -10 -00:00:33.451 --> 00:00:37.510 -lihim na parirala sa pagbawi -napakaligtas at napakalihim. - -11 -00:00:37.510 --> 00:00:41.429 -Kung may ibang taong makaka-access nito, makukuha nila -ang "master key" sa iyong wallet at maaaring - -12 -00:00:41.429 --> 00:00:45.190 -madali nilang maa-access at makukuha ang lahat ng pera mo. - -13 -00:00:45.190 --> 00:00:50.109 -Para ma-secure ang iyong MetaMask wallet, gugustuhin -mong ligtas na i-save ang iyong lihim na parirala sa pagbawi. - -14 -00:00:50.109 --> 00:00:54.930 -Maaari mo itong isulat, itago, -ilagay sa isang safe deposit box - -15 -00:00:54.930 --> 00:00:57.729 -o kaya ay gumamit ng ligtas na password manager. - -16 -00:00:57.729 --> 00:01:01.050 -Ang ilang user nga ay inuukit pa ang kanilang -parirala sa isang metal plate! - -17 -00:01:01.050 --> 00:01:04.440 -Walang sinuman, maging ang koponan -sa MetaMask, ang makakatulong sa iyong - -18 -00:01:04.440 --> 00:01:07.820 -maibalik ang wallet mo kung mawawala mo -iyong lihim na parirala sa pagbawi. - -19 -00:01:07.820 --> 00:01:12.072 -Kung hindi mo pa naisulat ang iyong lihim na parirala sa pagbawi at hindi pa naitatago sa ligtas na lugar, - -20 -00:01:12.072 --> 00:01:15.492 -gawin mo na ngayon. Hihintayin ka namin. - -21 -00:01:15.500 --> 00:01:20.780 -At tandaan, huwag kailanman ipaalam ang iyong lihim na parirala -sa pagbawi kahit kanino: maging sa amin. - -22 -00:01:20.780 --> 00:01:24.910 -Kung may magtatanong man nito sa iyo, -sinusubukan ka nilang lokohin. - -23 -00:01:24.910 --> 00:01:26.250 -Yun lamang! - -24 -00:01:26.250 --> 00:01:31.020 -Ngayon ay alam mo na kung ano ang lihim na parirala sa pagbawi -at kung paano mapapanatiling ligtas ang iyong wallet. - diff --git a/app/videos/subtitles/secretPhrase/subtitles-tr.vtt b/app/videos/subtitles/secretPhrase/subtitles-tr.vtt deleted file mode 100644 index 0e1fef01d754..000000000000 --- a/app/videos/subtitles/secretPhrase/subtitles-tr.vtt +++ /dev/null @@ -1,116 +0,0 @@ -WEBVTT - -1 -00:00:00.780 --> 00:00:04.580 -MetaMask site ve uygulamalara -bağlanmanın yeni bir yoludur. - -2 -00:00:04.580 --> 00:00:08.860 -Geleneksel web sitelerinde, -merkezi bir veritabanı veya banka - -3 -00:00:08.860 --> 00:00:10.179 -hesaplarınızı korumaktan sorumludur. - -4 -00:00:10.179 --> 00:00:15.050 -Ama MetaMask'ta tüm güç -ana anahtar sahibine aittir. - -5 -00:00:15.050 --> 00:00:18.460 -Anahtar kimdeyse hesapları o kontrol eder. - -6 -00:00:18.460 --> 00:00:21.110 -Gizli kurtarma ifadeniz -sizin "ana anahtarınızdır". - -7 -00:00:21.110 --> 00:00:26.070 -MetaMask'ı ilk kurduğunuzda oluşturulan -12 sözcükten oluşan bir dizi olup - -8 -00:00:26.070 --> 00:00:30.120 -erişiminizi kaybettiğiniz takdirde -cüzdanınızı ve paralarınızı kurtarabilmenize olanak sağlar. - -9 -00:00:30.120 --> 00:00:33.451 -Gizli kurtarma ifadenizi -çok güvenli ve çok gizli tutarak - -10 -00:00:33.451 --> 00:00:37.510 -cüzdanınızı korumanız -önemlidir. - -11 -00:00:37.510 --> 00:00:41.429 -Gizli kurtarma ifadenize sahip olan kişi -cüzdanınızın "ana anahtarı"na sahip olacak ve - -12 -00:00:41.429 --> 00:00:45.190 -serbestçe erişim sağlayıp tüm paranızı alabilecektir. - -13 -00:00:45.190 --> 00:00:50.109 -MetaMask cüzdanınızı korumak için gizli kurtarma -ifadenizin güvenli bir şekilde saklamak isteyeceksiniz. - -14 -00:00:50.109 --> 00:00:54.930 -Yazıp bir yere saklayabilir, -güvenli bir kasaya koyabilirsiniz - -15 -00:00:54.930 --> 00:00:57.729 -veya güvenli bir şifre yöneticisi kullanabilirsiniz. - -16 -00:00:57.729 --> 00:01:01.050 -İfadelerini metal bir levhaya kazıyan -kullanıcılar bile görülmüştür! - -17 -00:01:01.050 --> 00:01:04.440 -Gizli kurtarma ifadenizi kaybettiğiniz takdirde -MetaMask ekibi dahil olmak üzere hiç kimse - -18 -00:01:04.440 --> 00:01:07.820 -cüzdanınızı kurtarmanıza -yardımcı olamaz. - -19 -00:01:07.820 --> 00:01:12.072 -Gizli kurtarma ifadenizi yazmadıysanız veya -güvenli bir yere saklamadıysanız - -20 -00:01:12.072 --> 00:01:15.492 -bunu şimdi yapın. Bekleyeceğiz. - -21 -00:01:15.500 --> 00:01:20.780 -Ayrıca gizli kurtarma ifadenizi asla -biz dahil hiç kimse ile paylaşmamanız gerektiğini unutmayın. - -22 -00:01:20.780 --> 00:01:24.910 -Birisi gizli kurtarma ifadenizi sizden istiyorsa -sizi dolandırmaya çalışıyordur. - -23 -00:01:24.910 --> 00:01:26.250 -Bu kadar! - -24 -00:01:26.250 --> 00:01:31.020 -Artık gizli kurtarma ifadesinin ne olduğunu ve -cüzdanınızı nasıl güvende tutacağınızı biliyorsunuz. - diff --git a/app/videos/subtitles/secretPhrase/subtitles-vi.vtt b/app/videos/subtitles/secretPhrase/subtitles-vi.vtt deleted file mode 100644 index 69875b90a592..000000000000 --- a/app/videos/subtitles/secretPhrase/subtitles-vi.vtt +++ /dev/null @@ -1,115 +0,0 @@ -WEBVTT - -1 -00:00:00.780 --> 00:00:04.580 -MetaMask là một cách mới để kết nối -đến các trang web và ứng dụng. - -2 -00:00:04.580 --> 00:00:08.860 -Trên các trang web truyền thống, cơ sở dữ liệu trung tâm -hoặc ngân hàng sẽ chịu trách nhiệm kiểm soát và - -3 -00:00:08.860 --> 00:00:10.179 -khôi phục tài khoản của bạn. - -4 -00:00:10.179 --> 00:00:15.050 -Nhưng trên MetaMask, tất cả quyền lực thuộc về -người nắm giữ chìa khóa chính. - -5 -00:00:15.050 --> 00:00:18.460 -Ai nắm giữ chìa khóa, người đó kiểm soát tài khoản. - -6 -00:00:18.460 --> 00:00:21.110 -Cụm từ khôi phục bí mật -là "chìa khóa chính" của bạn. - -7 -00:00:21.110 --> 00:00:26.070 -Đó là một chuỗi 12 từ được tạo ra -khi bạn thiết lập MetaMask lần đầu tiên, cho phép - -8 -00:00:26.070 --> 00:00:30.120 -bạn khôi phục ví và tiền của mình nếu bị mất quyền truy cập. - -9 -00:00:30.120 --> 00:00:33.451 -Điều quan trọng là bạn phải bảo mật -cho ví của mình bằng cách cất giữ - -10 -00:00:33.451 --> 00:00:37.510 -cụm từ khôi phục bí mật ở một nơi -cực kỳ an toàn và bí mật. - -11 -00:00:37.510 --> 00:00:41.429 -Nếu bất kỳ ai có quyền truy cập, họ sẽ biết -"chìa khóa chính" để vào ví của bạn và có thể - -12 -00:00:41.429 --> 00:00:45.190 -tự do truy cập và lấy hết tiền của bạn. - -13 -00:00:45.190 --> 00:00:50.109 -Để bảo mật cho ví MetaMask của mình, bạn sẽ cần -cất giữ cụm từ khôi phục bí mật ở một nơi an toàn. - -14 -00:00:50.109 --> 00:00:54.930 -Hãy viết ra giấy, giấu ở đâu đó, -bỏ vào hộp ký gửi an toàn - -15 -00:00:54.930 --> 00:00:57.729 -hoặc sử dụng trình quản lý mật khẩu an toàn. - -16 -00:00:57.729 --> 00:01:01.050 -Một số người dùng thậm chí còn khắc -cụm từ của họ lên một tấm kim loại! - -17 -00:01:01.050 --> 00:01:04.440 -Sẽ không có ai, kể cả nhóm -MetaMask, có thể giúp bạn - -18 -00:01:04.440 --> 00:01:07.820 -khôi phục ví nếu bạn làm mất -cụm từ khôi phục bí mật. - -19 -00:01:07.820 --> 00:01:12.072 -Nếu bạn chưa viết cụm từ khôi phục bí mật -ra giấy và cất giữ ở một nơi nào đó an toàn, - -20 -00:01:12.072 --> 00:01:15.492 -thì bạn cần thực hiện ngay. Chúng tôi sẽ đợi. - -21 -00:01:15.500 --> 00:01:20.780 -Và hãy nhớ, không bao giờ chia sẻ cụm từ khôi phục -bí mật của bạn với bất kỳ ai: ngay cả chúng tôi. - -22 -00:01:20.780 --> 00:01:24.910 -Nếu bất kỳ ai hỏi bạn về cụm từ khôi phục -bí mật, thì họ đang cố lừa bạn đó. - -23 -00:01:24.910 --> 00:01:26.250 -Đó là tất cả những gì bạn cần ghi nhớ! - -24 -00:01:26.250 --> 00:01:31.020 -Bây giờ bạn đã biết cụm từ khôi phục bí mật là gì -và cách để đảm bảo an toàn và bảo mật cho ví của bạn. - diff --git a/app/videos/subtitles/secretPhrase/subtitles-zh.vtt b/app/videos/subtitles/secretPhrase/subtitles-zh.vtt deleted file mode 100644 index 8e1a572f276c..000000000000 --- a/app/videos/subtitles/secretPhrase/subtitles-zh.vtt +++ /dev/null @@ -1,98 +0,0 @@ -WEBVTT - -1 -00:00:00.780 --> 00:00:04.580 -MetaMask是连接站点和应用程序的一种新方法。 - -2 -00:00:04.580 --> 00:00:08.860 -在传统网站上,中央数据库或银行负责控制和 - -3 -00:00:08.860 --> 00:00:10.179 -恢复您的账户。 - -4 -00:00:10.179 --> 00:00:15.050 -但在MetaMask,所有的权限都属于主密钥的持有者。 - -5 -00:00:15.050 --> 00:00:18.460 -谁拿着密钥,谁就控制着账户。 - -6 -00:00:18.460 --> 00:00:21.110 -您的私钥助记词是您的“主密钥”。 - -7 -00:00:21.110 --> 00:00:26.070 -这是在您第一次设置MetaMask时生成的12个单词的字串, - -8 -00:00:26.070 --> 00:00:30.120 -如果您一旦失去访问权限,可以使用该助记词恢复您的钱包和资金。 - -9 -00:00:30.120 --> 00:00:33.451 -重要的是,您应通过非常保险而私密的方式保护您的 - -10 -00:00:33.451 --> 00:00:37.510 -私钥助记词的安全,从而确保您的钱包安全。 - -11 -00:00:37.510 --> 00:00:41.429 -如果有人可以获取您的私钥助记词,他们将拥有您钱包的“主密钥”,可以 - -12 -00:00:41.429 --> 00:00:45.190 -自由访问并拿走您的所有资金。 - -13 -00:00:45.190 --> 00:00:50.109 -为了保护MetaMask钱包的安全,您需要安全地保存您的私钥助记词。 - -14 -00:00:50.109 --> 00:00:54.930 -您可以把它写下来,藏在某处,放在保险箱里, - -15 -00:00:54.930 --> 00:00:57.729 -或者使用安全的密码管理器保存。 - -16 -00:00:57.729 --> 00:01:01.050 -一些用户甚至将他们的助记词刻在金属板上! - -17 -00:01:01.050 --> 00:01:04.440 -如果您丢失了私钥助记词,没有人能帮助您找回钱包,即使是MetaMask - -18 -00:01:04.440 --> 00:01:07.820 -的团队也毫无办法。 - -19 -00:01:07.820 --> 00:01:12.072 -如果您尚未写下您的私钥助记词并将其存储在安全的地方, - -20 -00:01:12.072 --> 00:01:15.492 -请即刻着手做此事。我们会等待您的。 - -21 -00:01:15.500 --> 00:01:20.780 -记住,永远不要与任何人分享您的私钥助记词:即便是我们也不可以。 - -22 -00:01:20.780 --> 00:01:24.910 -如果有人向您索要私钥助记词,他们就是妄图欺诈您。 - -23 -00:01:24.910 --> 00:01:26.250 -就是这样! - -24 -00:01:26.250 --> 00:01:31.020 -现在,您了解了什么是私钥助记词,以及如何确保您的钱包安全。 - diff --git a/scripts/compress_and_add_sub_in_video.sh b/scripts/compress_and_add_sub_in_video.sh deleted file mode 100755 index 6059f324e751..000000000000 --- a/scripts/compress_and_add_sub_in_video.sh +++ /dev/null @@ -1,109 +0,0 @@ -#!/usr/bin/env bash - -set -e -set -u -set -o pipefail - -# This script is used to compress the SRP video and add all subtitles to it. -# It uses ffmpeg to compress the video and add subtitles from the subtitles folder. -# It uses two passes encoding to target a small video file size (reduces quality). -# It uses the mov_text codec to add subtitles to the video. -# It uses the language code to set the default language track. - -VIDEO_PATH=./app/videos/ -INPUT_VIDEO=${VIDEO_PATH}recovery-phrase-source.mp4 -OUTPUT_VIDEO=${VIDEO_PATH}recovery-phrase.mp4 -SUBS_PATH=${VIDEO_PATH}subtitles/secretPhrase/ - -VIDEO_BITRATE="75k" -AUDIO_BITRATE="80k" - -ffmpeg_subtitle_inputs="" -ffmpeg_subtitle_map_inputs="" -ffmpeg_subtitle_metadata="" -ffmpeg_subtitle_map_inputs_start=1 -ffmpeg_subtitle_default_language="en" -ffmpeg_subtitle_default_track=0 - -# map all language to language code -# as languages 2 letter codes are not the same as language codes used by ffmpeg -# https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes -language_code_map=( - "de:deu" - "el:ell" - "en:eng" - "es:spa" - "fr:fra" - "hi:hin" - "id:ind" - "ja:jpn" - "ko:kor" - "pt:por" - "ru:rus" - "tl:tgl" - "tr:tur" - "vi:vie" - "zh:zho" -) - -# check if ffmpeg is installed -if ! command -v ffmpeg &> /dev/null -then - echo "ffmpeg could not be found." - echo "Please install ffmpeg before running this script." - echo "https://ffmpeg.org/download.html" - exit 1 -fi - -# check source video exists -if [ ! -f "$INPUT_VIDEO" ]; then - echo "Source video file ${$INPUT_VIDEO} does not exist." - echo "Please add the source video file to the ${VIDEO_PATH} folder." - exit 1 -fi - -# check if subtitles folder exists -if [ ! -d "$SUBS_PATH" ]; then - echo "Subtitles folder ${SUBS_PATH} does not exist." - echo "Please add the subtitles folder to the ${VIDEO_PATH} folder." - exit 1 -fi - -# add all subtitles files to video -subs_files=("${SUBS_PATH}"*.vtt) -for i in "${!subs_files[@]}"; do - # extract language code string from file name - # e.g. subtitles-en.vtt -> en - language=$(echo " ${subs_files[$i]}" | cut -d'-' -f2 | cut -d'.' -f1) - language_code=$(echo "${language_code_map[@]}" | grep -o "$language:[a-z]\{3\}" | cut -d':' -f2) - # add each subtitle input and track metadata to ffmpeg command - ffmpeg_subtitle_inputs="$ffmpeg_subtitle_inputs -i ${subs_files[$i]}" - ffmpeg_subtitle_metadata="$ffmpeg_subtitle_metadata -metadata:s:s:$i language=$language_code" - # Set map input for each subtitle track to ffmpeg command - # add 1 to index because the first map is the video - map_index=$(($i+$ffmpeg_subtitle_map_inputs_start)) - # set default track if language is default language - if [ "$language" = "$ffmpeg_subtitle_default_language" ]; then - ffmpeg_subtitle_default_track=$i - fi - # add map input to ffmpeg command - ffmpeg_subtitle_map_inputs="$ffmpeg_subtitle_map_inputs -map $map_index" -done - -# Run a two passes encoding -TWO_PASSES_OUTPUT_VIDEO_FILE=recovery-phrase-temp.mp4 -ffmpeg -y -i $INPUT_VIDEO -passlogfile ${VIDEO_PATH}2pass -pass 1 -c:v libx264 -b:v $VIDEO_BITRATE -b:a $AUDIO_BITRATE -an -f null /dev/null && \ -ffmpeg -y -i $INPUT_VIDEO -passlogfile ${VIDEO_PATH}2pass -pass 2 -c:v libx264 -b:v $VIDEO_BITRATE -b:a $AUDIO_BITRATE $TWO_PASSES_OUTPUT_VIDEO_FILE - -# Add subtitles to video -ffmpeg -y -i $TWO_PASSES_OUTPUT_VIDEO_FILE \ -${ffmpeg_subtitle_inputs} \ --map 0 \ -${ffmpeg_subtitle_map_inputs} \ --c copy -c:s mov_text \ -${ffmpeg_subtitle_metadata} \ --disposition:s:${ffmpeg_subtitle_default_track} default \ -$OUTPUT_VIDEO - -# Remove temp files -rm $TWO_PASSES_OUTPUT_VIDEO_FILE ${VIDEO_PATH}2pass-*.log ${VIDEO_PATH}2pass-*.log.mbtree From 13301f0c57133fe55cefdf2eb0aae17f421d87dd Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 14 Feb 2025 21:17:08 +0200 Subject: [PATCH 005/473] chore: cherry-pick #13530 (#13532) This PR cherry-picks #13530 Co-authored-by: Vince Howard --- ios/MetaMask/Info.plist | 2 ++ 1 file changed, 2 insertions(+) diff --git a/ios/MetaMask/Info.plist b/ios/MetaMask/Info.plist index 06643f431a6e..23e491c44acc 100644 --- a/ios/MetaMask/Info.plist +++ b/ios/MetaMask/Info.plist @@ -10,6 +10,8 @@ MetaMask CFBundleExecutable $(EXECUTABLE_NAME) + CFBundleIconName + AppIcon CFBundleIdentifier $(PRODUCT_BUNDLE_IDENTIFIER) CFBundleInfoDictionaryVersion From 33c415562ce78cc71664026b8ca04944f4b1965e Mon Sep 17 00:00:00 2001 From: metamaskbot Date: Fri, 14 Feb 2025 19:18:05 +0000 Subject: [PATCH 006/473] Bump version number to 1559 --- android/app/build.gradle | 2 +- bitrise.yml | 4 ++-- ios/MetaMask.xcodeproj/project.pbxproj | 12 ++++++------ 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/android/app/build.gradle b/android/app/build.gradle index 0a9613ced5df..b2ce34964b4e 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -179,7 +179,7 @@ android { minSdkVersion rootProject.ext.minSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion versionName "7.41.0" - versionCode 1557 + versionCode 1559 testBuildType System.getProperty('testBuildType', 'debug') missingDimensionStrategy 'react-native-camera', 'general' testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" diff --git a/bitrise.yml b/bitrise.yml index b6216af65ee5..c32d223cf782 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -1830,13 +1830,13 @@ app: VERSION_NAME: 7.41.0 - opts: is_expand: false - VERSION_NUMBER: 1557 + VERSION_NUMBER: 1559 - opts: is_expand: false FLASK_VERSION_NAME: 7.41.0 - opts: is_expand: false - FLASK_VERSION_NUMBER: 1557 + FLASK_VERSION_NUMBER: 1559 - opts: is_expand: false ANDROID_APK_LINK: '' diff --git a/ios/MetaMask.xcodeproj/project.pbxproj b/ios/MetaMask.xcodeproj/project.pbxproj index d2716640306e..d03578a878ce 100644 --- a/ios/MetaMask.xcodeproj/project.pbxproj +++ b/ios/MetaMask.xcodeproj/project.pbxproj @@ -1380,7 +1380,7 @@ CODE_SIGN_IDENTITY = "Apple Development"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1557; + CURRENT_PROJECT_VERSION = 1559; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = 48XVW22RCG; @@ -1449,7 +1449,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMask.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1557; + CURRENT_PROJECT_VERSION = 1559; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 48XVW22RCG; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 48XVW22RCG; @@ -1514,7 +1514,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMaskDebug.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1557; + CURRENT_PROJECT_VERSION = 1559; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = 48XVW22RCG; @@ -1580,7 +1580,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMask.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1557; + CURRENT_PROJECT_VERSION = 1559; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 48XVW22RCG; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 48XVW22RCG; @@ -1739,7 +1739,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMaskDebug.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1557; + CURRENT_PROJECT_VERSION = 1559; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = 48XVW22RCG; @@ -1808,7 +1808,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMask.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1557; + CURRENT_PROJECT_VERSION = 1559; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 48XVW22RCG; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 48XVW22RCG; From f3fb695a15d75fbea91e0b11329632cb2410f156 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 14 Feb 2025 22:41:17 +0200 Subject: [PATCH 007/473] chore: cherry-pick #13513 (#13535) This PR cherry-picks #13513 Co-authored-by: sahar-fehri --- app/selectors/tokensController.ts | 3 +++ 1 file changed, 3 insertions(+) diff --git a/app/selectors/tokensController.ts b/app/selectors/tokensController.ts index 101609136843..fd4e9e4448ab 100644 --- a/app/selectors/tokensController.ts +++ b/app/selectors/tokensController.ts @@ -12,6 +12,7 @@ import { selectNetworkConfigurations, } from './networkController'; import { PopularList } from '../util/networks/customNetworks'; +import { ChainId } from '@metamask/controller-utils'; const selectTokensControllerState = (state: RootState) => state?.engine?.backgroundState?.TokensController; @@ -92,6 +93,8 @@ export const getChainIdsToPoll = createDeepEqualSelector( return Object.keys(networkConfigurations).filter( (chainId) => chainId === currentChainId || + chainId === ChainId.mainnet || + chainId === ChainId['linea-mainnet'] || popularNetworksChainIds.includes(chainId as Hex), ); }, From 275d7640c09a6a6dc3407110ea6c0be56998d419 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 14 Feb 2025 22:41:21 +0200 Subject: [PATCH 008/473] chore: cherry-pick #13484 (#13536) This PR cherry-picks #13484 Co-authored-by: sahar-fehri --- app/components/hooks/useAccounts/useAccounts.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/components/hooks/useAccounts/useAccounts.ts b/app/components/hooks/useAccounts/useAccounts.ts index 4c354d5f612b..52dcc48b9647 100644 --- a/app/components/hooks/useAccounts/useAccounts.ts +++ b/app/components/hooks/useAccounts/useAccounts.ts @@ -69,7 +69,7 @@ const useAccounts = ({ ); const formattedTokensWithBalancesPerChain = useGetFormattedTokensPerChain( internalAccounts, - isTokenNetworkFilterEqualCurrentNetwork, + !isTokenNetworkFilterEqualCurrentNetwork, allChainIDs, ); const totalFiatBalancesCrossChain = useGetTotalFiatBalanceCrossChains( From d07a6f50528595c644b1fad9e618caea82863599 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 14 Feb 2025 22:41:32 +0200 Subject: [PATCH 009/473] chore: cherry-pick #13503 (#13537) This PR cherry-picks #13503 Co-authored-by: Vince Howard --- .storybook/storybook.requires.js | 1 + .../Quotes/__snapshots__/Quotes.test.tsx.snap | 6 +- .../ShapesBackgroundAnimation.stories.tsx | 55 +++++++++++++++++++ .../ShapesBackgroundAnimation.tsx | 13 ++++- .../__snapshots__/index.test.tsx.snap | 14 ++--- .../components/LoadingAnimation/index.js | 1 - 6 files changed, 74 insertions(+), 16 deletions(-) create mode 100644 app/components/UI/Swaps/components/LoadingAnimation/ShapesBackgroundAnimation.stories.tsx diff --git a/.storybook/storybook.requires.js b/.storybook/storybook.requires.js index bdf663ae293e..97a5212082c4 100644 --- a/.storybook/storybook.requires.js +++ b/.storybook/storybook.requires.js @@ -128,6 +128,7 @@ const getStories = () => { "./app/components/Views/confirmations/components/UI/Tooltip/Tooltip.stories.tsx": require("../app/components/Views/confirmations/components/UI/Tooltip/Tooltip.stories.tsx"), "./app/components/Views/confirmations/components/UI/TextWithTooltip/TextWithTooltip.stories.tsx": require("../app/components/Views/confirmations/components/UI/TextWithTooltip/TextWithTooltip.stories.tsx"), "./app/component-library/components/Texts/SensitiveText/SensitiveText.stories.tsx": require("../app/component-library/components/Texts/SensitiveText/SensitiveText.stories.tsx"), + "./app/components/UI/Swaps/components/LoadingAnimation/ShapesBackgroundAnimation.stories.tsx": require("../app/components/UI/Swaps/components/LoadingAnimation/ShapesBackgroundAnimation.stories.tsx"), }; }; diff --git a/app/components/UI/Ramp/Views/Quotes/__snapshots__/Quotes.test.tsx.snap b/app/components/UI/Ramp/Views/Quotes/__snapshots__/Quotes.test.tsx.snap index f4a5fb0334f4..c5db2fd841d9 100644 --- a/app/components/UI/Ramp/Views/Quotes/__snapshots__/Quotes.test.tsx.snap +++ b/app/components/UI/Ramp/Views/Quotes/__snapshots__/Quotes.test.tsx.snap @@ -1178,13 +1178,15 @@ exports[`Quotes renders animation on first fetching 1`] = ` collapsable={false} style={ { - "height": "70%", + "alignItems": "center", + "height": "100%", + "justifyContent": "center", "transform": [ { "rotate": "0deg", }, ], - "width": "70%", + "width": "100%", } } testID="shapes-background-animation" diff --git a/app/components/UI/Swaps/components/LoadingAnimation/ShapesBackgroundAnimation.stories.tsx b/app/components/UI/Swaps/components/LoadingAnimation/ShapesBackgroundAnimation.stories.tsx new file mode 100644 index 000000000000..eeff066deadb --- /dev/null +++ b/app/components/UI/Swaps/components/LoadingAnimation/ShapesBackgroundAnimation.stories.tsx @@ -0,0 +1,55 @@ +/* eslint-disable react-native/no-inline-styles */ +/* eslint-disable react/display-name */ +// Third party dependencies. +import React from 'react'; +import { View, StyleSheet } from 'react-native'; +import Device from '../../../../../util/device'; + +// Internal dependencies. +import { default as ShapesBackgroundAnimationComponent } from './ShapesBackgroundAnimation'; +import { mockTheme } from '../../../../../util/theme'; + +const IS_NARROW = Device.getDeviceWidth() <= 320; +const STAGE_SIZE = IS_NARROW ? 240 : 260; + +const styles = StyleSheet.create({ + storyContainer: { + flex: 1, + backgroundColor: mockTheme.colors.background.default, + alignItems: 'center', + justifyContent: 'center', + }, + animationContainer: { + width: STAGE_SIZE, + height: STAGE_SIZE, + alignItems: 'center', + justifyContent: 'center', + }, +}); + +const ShapesBackgroundAnimationMeta = { + title: 'Components Animations / Loading Animation', + component: ShapesBackgroundAnimationComponent, + argTypes: { + width: { + control: { type: 'number' }, + defaultValue: STAGE_SIZE, + }, + height: { + control: { type: 'number' }, + defaultValue: STAGE_SIZE, + }, + }, +}; + +export default ShapesBackgroundAnimationMeta; + +export const ShapesBackgroundAnimation = { + render: ({ width, height }: { width: number; height: number }) => ( + + + + + + ), +}; diff --git a/app/components/UI/Swaps/components/LoadingAnimation/ShapesBackgroundAnimation.tsx b/app/components/UI/Swaps/components/LoadingAnimation/ShapesBackgroundAnimation.tsx index a1c4617bc7ed..f0e7bd79aa83 100644 --- a/app/components/UI/Swaps/components/LoadingAnimation/ShapesBackgroundAnimation.tsx +++ b/app/components/UI/Swaps/components/LoadingAnimation/ShapesBackgroundAnimation.tsx @@ -4,8 +4,10 @@ import Svg, { Path, LinearGradient, Stop, Defs } from 'react-native-svg'; const styles = StyleSheet.create({ container: { - width: '70%', - height: '70%', + width: '100%', + height: '100%', + alignItems: 'center', + justifyContent: 'center', }, }); @@ -39,7 +41,12 @@ const ShapesBackgroundAnimation = ({ return ( zIndex: 1, justifyContent: 'center', alignItems: 'center', - transform: [{ translateX: -20 }, { translateY: -10 }], }, }); From b6df6bd0f93f912acf39a6c886a7693fa7b62d97 Mon Sep 17 00:00:00 2001 From: sethkfman <10342624+sethkfman@users.noreply.github.com> Date: Fri, 14 Feb 2025 13:46:50 -0700 Subject: [PATCH 010/473] Formating Info.plist Updated formatting to info plist --- ios/MetaMask/Info.plist | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ios/MetaMask/Info.plist b/ios/MetaMask/Info.plist index 23e491c44acc..8bd529c44ea6 100644 --- a/ios/MetaMask/Info.plist +++ b/ios/MetaMask/Info.plist @@ -11,7 +11,7 @@ CFBundleExecutable $(EXECUTABLE_NAME) CFBundleIconName - AppIcon + AppIcon CFBundleIdentifier $(PRODUCT_BUNDLE_IDENTIFIER) CFBundleInfoDictionaryVersion From 98de3630f6bd3024d8b2496242d78d6625fefe60 Mon Sep 17 00:00:00 2001 From: Aslau Mario-Daniel Date: Sat, 15 Feb 2025 00:29:47 +0200 Subject: [PATCH 011/473] chore: cherry-pick #12857 (#13538) This PR cherry-picks https://github.com/MetaMask/metamask-mobile/pull/12857 --------- Co-authored-by: Eric Bishard Co-authored-by: metamaskbot Co-authored-by: Owen Craston --- app/components/UI/Swaps/QuotesView.js | 10 + .../RevealPrivateCredential/index.test.tsx | 4 +- .../confirmations/Approval/index.test.tsx | 20 +- .../ApproveView/Approve/index.test.tsx | 9 +- .../confirmations/SendFlow/Confirm/index.js | 14 +- .../SendFlow/Confirm/index.test.tsx | 18 + .../confirmations/SendFlow/Confirm/styles.ts | 3 + .../ApproveTransactionReview/index.js | 3 +- .../ApproveTransactionReview/styles.ts | 3 + ...SmartTransactionsMigrationBanner.styles.ts | 21 + .../SmartTransactionsMigrationBanner.test.tsx | 134 +++++ .../SmartTransactionsMigrationBanner.tsx | 82 +++ .../SmartTransactionsMigrationBanner.types.ts | 10 + .../components/TransactionReview/index.js | 11 +- .../TransactionReview/index.test.tsx | 15 + app/core/Engine/Engine.ts | 17 +- .../AccountsController/utils.test.ts | 11 +- app/core/Engine/types.ts | 4 +- app/core/Multichain/test/utils.test.ts | 14 +- app/core/SnapKeyring/SnapKeyring.test.ts | 6 +- app/core/SnapKeyring/SnapKeyring.ts | 11 +- app/core/SnapKeyring/constants.ts | 15 + app/core/SnapKeyring/types.ts | 10 +- app/selectors/accountsController.test.ts | 10 +- app/selectors/preferencesController.ts | 12 + app/store/migrations/036.test.ts | 4 +- app/store/migrations/036.ts | 4 +- app/store/migrations/066.test.ts | 78 ++- app/store/migrations/066.ts | 86 ++- app/store/migrations/067.test.ts | 535 ++++++++++++++++++ app/store/migrations/067.ts | 14 + app/store/migrations/068.test.ts | 142 +++++ app/store/migrations/068.ts | 79 +++ app/store/migrations/index.ts | 6 + .../accountsController.test.ts | 8 +- .../sentry/__snapshots__/utils.test.ts.snap | 4 +- app/util/sentry/utils.test.ts | 10 +- app/util/test/accountsControllerTestUtils.ts | 32 +- locales/languages/en.json | 5 + package.json | 14 +- scripts/setup.mjs | 2 +- yarn.lock | 367 ++++++------ 42 files changed, 1532 insertions(+), 325 deletions(-) create mode 100644 app/components/Views/confirmations/components/SmartTransactionsMigrationBanner/SmartTransactionsMigrationBanner.styles.ts create mode 100644 app/components/Views/confirmations/components/SmartTransactionsMigrationBanner/SmartTransactionsMigrationBanner.test.tsx create mode 100644 app/components/Views/confirmations/components/SmartTransactionsMigrationBanner/SmartTransactionsMigrationBanner.tsx create mode 100644 app/components/Views/confirmations/components/SmartTransactionsMigrationBanner/SmartTransactionsMigrationBanner.types.ts create mode 100644 app/core/SnapKeyring/constants.ts create mode 100644 app/store/migrations/067.test.ts create mode 100644 app/store/migrations/067.ts create mode 100644 app/store/migrations/068.test.ts create mode 100644 app/store/migrations/068.ts diff --git a/app/components/UI/Swaps/QuotesView.js b/app/components/UI/Swaps/QuotesView.js index c82ab4f8fef6..9ef6b79c7d43 100644 --- a/app/components/UI/Swaps/QuotesView.js +++ b/app/components/UI/Swaps/QuotesView.js @@ -124,6 +124,7 @@ import { selectGasFeeControllerEstimateType } from '../../../selectors/gasFeeCon import { addSwapsTransaction } from '../../../util/swaps/swaps-transactions'; import { getTransaction1559GasFeeEstimates } from './utils/gas'; import { getGlobalEthQuery } from '../../../util/networks/global-network'; +import SmartTransactionsMigrationBanner from '../../Views/confirmations/components/SmartTransactionsMigrationBanner/SmartTransactionsMigrationBanner'; import { getTradeTxTokenFee } from '../../../util/smart-transactions'; const LOG_PREFIX = 'Swaps'; @@ -155,6 +156,10 @@ const createStyles = (colors) => marginVertical: 10, width: '100%', }, + smartTransactionsMigrationBanner: { + paddingHorizontal: 20, + width: '100%', + }, timerWrapper: { backgroundColor: colors.background.alternative, borderRadius: 20, @@ -1888,6 +1893,11 @@ function SwapsQuotesView({ keyboardShouldPersistTaps="handled" > + {shouldUseSmartTransaction && ( + + + + )} {(!hasEnoughTokenBalance || !hasEnoughEthBalance) && ( diff --git a/app/components/Views/RevealPrivateCredential/index.test.tsx b/app/components/Views/RevealPrivateCredential/index.test.tsx index bbf92a7743fa..7dfd277abd30 100644 --- a/app/components/Views/RevealPrivateCredential/index.test.tsx +++ b/app/components/Views/RevealPrivateCredential/index.test.tsx @@ -7,7 +7,7 @@ import { backgroundState } from '../../../util/test/initial-root-state'; import { RevealPrivateCredential } from './'; import { ThemeContext, mockTheme } from '../../../util/theme'; import { RevealSeedViewSelectorsIDs } from '../../../../e2e/selectors/Settings/SecurityAndPrivacy/RevealSeedView.selectors'; -import { EthAccountType, EthMethod, EthScopes } from '@metamask/keyring-api'; +import { EthAccountType, EthMethod, EthScope } from '@metamask/keyring-api'; import { KeyringTypes } from '@metamask/keyring-controller'; jest.mock('react-redux', () => ({ @@ -156,7 +156,7 @@ describe('RevealPrivateCredential', () => { someOption: 'optionValue', anotherOption: 42, }, - scopes: [EthScopes.Namespace], + scopes: [EthScope.Eoa], methods: [ EthMethod.PersonalSign, EthMethod.SignTransaction, diff --git a/app/components/Views/confirmations/Approval/index.test.tsx b/app/components/Views/confirmations/Approval/index.test.tsx index 321dfd22f04a..8814fc7ea29f 100644 --- a/app/components/Views/confirmations/Approval/index.test.tsx +++ b/app/components/Views/confirmations/Approval/index.test.tsx @@ -12,7 +12,15 @@ import initialRootState from '../../../../util/test/initial-root-state'; const TRANSACTION_ID_MOCK = '123'; jest.mock('../../../../selectors/smartTransactionsController', () => ({ - selectShouldUseSmartTransaction: jest.fn().mockReturnValue(false), + selectSmartTransactionsEnabled: () => false, + selectShouldUseSmartTransaction: () => false +})); + +jest.mock('../../../../selectors/preferencesController', () => ({ + selectSmartTransactionsBannerDismissed: () => false, + selectSmartTransactionsMigrationApplied: () => false, + selectSmartTransactionsOptInStatus: () => false, + selectUseTransactionSimulations: () => false })); jest.mock('../../../../util/dappTransactions', () => ({ @@ -38,6 +46,16 @@ jest.mock('../../../../core/Engine', () => ({ }, })); +jest.mock('../../../../selectors/confirmTransaction', () => ({ + selectCurrentTransactionSecurityAlertResponse: () => null, + selectCurrentTransactionMetadata: () => null, + selectGasFeeEstimates: () => ({}) +})); + +jest.mock('../../../../selectors/tokenListController', () => ({ + selectTokenList: () => ({}) +})); + const Stack = createStackNavigator(); const mockStore = configureMockStore(); const navigationPropMock = { diff --git a/app/components/Views/confirmations/ApproveView/Approve/index.test.tsx b/app/components/Views/confirmations/ApproveView/Approve/index.test.tsx index 2dc54176d7d7..4409296628e3 100644 --- a/app/components/Views/confirmations/ApproveView/Approve/index.test.tsx +++ b/app/components/Views/confirmations/ApproveView/Approve/index.test.tsx @@ -13,7 +13,14 @@ import Routes from '../../../../../constants/navigation/Routes'; const TRANSACTION_ID_MOCK = '123'; jest.mock('../../../../../selectors/smartTransactionsController', () => ({ - selectShouldUseSmartTransaction: jest.fn().mockReturnValue(false), + selectSmartTransactionsEnabled: () => false, + selectShouldUseSmartTransaction: () => false, +})); + +jest.mock('../../../../../selectors/preferencesController', () => ({ + selectSmartTransactionsBannerDismissed: () => false, + selectSmartTransactionsMigrationApplied: () => false, + selectSmartTransactionsOptInStatus: () => false, })); jest.mock('../../../../../core/GasPolling/GasPolling', () => ({ diff --git a/app/components/Views/confirmations/SendFlow/Confirm/index.js b/app/components/Views/confirmations/SendFlow/Confirm/index.js index 84762502c341..99d16da3a6ba 100644 --- a/app/components/Views/confirmations/SendFlow/Confirm/index.js +++ b/app/components/Views/confirmations/SendFlow/Confirm/index.js @@ -138,6 +138,7 @@ import { } from '../../../../../selectors/networkController'; import { selectContractExchangeRatesByChainId } from '../../../../../selectors/tokenRatesController'; import { updateTransactionToMaxValue } from './utils'; +import SmartTransactionsMigrationBanner from '../../components/SmartTransactionsMigrationBanner/SmartTransactionsMigrationBanner'; import { isNativeToken } from '../../utils/generic'; const EDIT = 'edit'; @@ -1422,11 +1423,14 @@ class Confirm extends PureComponent { /> {this.state.transactionMeta?.id && ( - + <> + + + )} {!selectedAsset.tokenId ? ( diff --git a/app/components/Views/confirmations/SendFlow/Confirm/index.test.tsx b/app/components/Views/confirmations/SendFlow/Confirm/index.test.tsx index b0dbab0cef98..fc405bc7e519 100644 --- a/app/components/Views/confirmations/SendFlow/Confirm/index.test.tsx +++ b/app/components/Views/confirmations/SendFlow/Confirm/index.test.tsx @@ -185,6 +185,24 @@ jest.mock('../../../../../core/redux/slices/transactionMetrics', () => ({ selectTransactionMetrics: jest.fn().mockReturnValue({}), })); +jest.mock('../../../../../reducers/swaps', () => ({ + swapsStateSelector: () => ({ + featureFlags: { + smart_transactions: { + mobile_active: false + } + } + }), + swapsSmartTxFlagEnabled: () => false +})); + +jest.mock('../../../../../selectors/preferencesController', () => ({ + selectSmartTransactionsBannerDismissed: () => false, + selectSmartTransactionsMigrationApplied: () => false, + selectSmartTransactionsOptInStatus: () => false, + selectUseTransactionSimulations: () => false, +})); + function render( // TODO: Replace "any" with type // eslint-disable-next-line @typescript-eslint/no-explicit-any diff --git a/app/components/Views/confirmations/SendFlow/Confirm/styles.ts b/app/components/Views/confirmations/SendFlow/Confirm/styles.ts index f494eb6403f9..cc48fbdf0e6c 100644 --- a/app/components/Views/confirmations/SendFlow/Confirm/styles.ts +++ b/app/components/Views/confirmations/SendFlow/Confirm/styles.ts @@ -153,6 +153,9 @@ const createStyles = (colors: any) => marginRight: 24, marginBottom: 24, }, + smartTransactionsMigrationBanner: { + marginHorizontal: 16, + }, }); export default createStyles; diff --git a/app/components/Views/confirmations/components/ApproveTransactionReview/index.js b/app/components/Views/confirmations/components/ApproveTransactionReview/index.js index cfbce752d70b..68b64f51b6ea 100644 --- a/app/components/Views/confirmations/components/ApproveTransactionReview/index.js +++ b/app/components/Views/confirmations/components/ApproveTransactionReview/index.js @@ -103,7 +103,7 @@ import SDKConnect from '../../../../../core/SDKConnect/SDKConnect'; import DevLogger from '../../../../../core/SDKConnect/utils/DevLogger'; import { WC2Manager } from '../../../../../core/WalletConnect/WalletConnectV2'; import { WALLET_CONNECT_ORIGIN } from '../../../../../util/walletconnect'; - +import SmartTransactionsMigrationBanner from '../SmartTransactionsMigrationBanner/SmartTransactionsMigrationBanner'; const { ORIGIN_DEEPLINK, ORIGIN_QR_CODE } = AppConstants.DEEPLINKS; const POLLING_INTERVAL_ESTIMATED_L1_FEE = 30000; @@ -919,6 +919,7 @@ class ApproveTransactionReview extends PureComponent { style={styles.blockaidWarning} onContactUsClicked={this.onContactUsClicked} /> + {this.getTrustTitle( originIsDeeplink, diff --git a/app/components/Views/confirmations/components/ApproveTransactionReview/styles.ts b/app/components/Views/confirmations/components/ApproveTransactionReview/styles.ts index 09187dd8cedb..e9323c2583b1 100644 --- a/app/components/Views/confirmations/components/ApproveTransactionReview/styles.ts +++ b/app/components/Views/confirmations/components/ApproveTransactionReview/styles.ts @@ -172,6 +172,9 @@ const createStyles = (colors: any) => marginTop: 20, marginHorizontal: 10, }, + SmartTransactionsMigrationBanner: { + marginHorizontal: 16, + }, }); export default createStyles; diff --git a/app/components/Views/confirmations/components/SmartTransactionsMigrationBanner/SmartTransactionsMigrationBanner.styles.ts b/app/components/Views/confirmations/components/SmartTransactionsMigrationBanner/SmartTransactionsMigrationBanner.styles.ts new file mode 100644 index 000000000000..429ff8703424 --- /dev/null +++ b/app/components/Views/confirmations/components/SmartTransactionsMigrationBanner/SmartTransactionsMigrationBanner.styles.ts @@ -0,0 +1,21 @@ +import { StyleSheet, ViewStyle } from 'react-native'; +import { Theme } from '../../../../../util/theme/models'; + +const styleSheet = (params: { theme: Theme; vars: { style?: ViewStyle } }) => + StyleSheet.create({ + banner: { + marginVertical: 16, + ...params.vars.style, + }, + textContainer: { + flexWrap: 'wrap', + }, + link: { + color: params.theme.colors.primary.default, + }, + description: { + color: params.theme.colors.text.default, + } + }); + +export default styleSheet; diff --git a/app/components/Views/confirmations/components/SmartTransactionsMigrationBanner/SmartTransactionsMigrationBanner.test.tsx b/app/components/Views/confirmations/components/SmartTransactionsMigrationBanner/SmartTransactionsMigrationBanner.test.tsx new file mode 100644 index 000000000000..88f0fdf72cd0 --- /dev/null +++ b/app/components/Views/confirmations/components/SmartTransactionsMigrationBanner/SmartTransactionsMigrationBanner.test.tsx @@ -0,0 +1,134 @@ +import React from 'react'; +import { render, fireEvent } from '@testing-library/react-native'; +import { Provider } from 'react-redux'; +import configureMockStore from 'redux-mock-store'; +import SmartTransactionsMigrationBanner from './SmartTransactionsMigrationBanner'; +import Engine from '../../../../../core/Engine'; + +jest.mock('../../../../../core/Engine', () => ({ + context: { + PreferencesController: { + setFeatureFlag: jest.fn(), + }, + }, +})); + +jest.mock('../../../../../../locales/i18n', () => ({ + strings: jest.fn((key) => key), +})); + +// Mock the selectors +jest.mock('../../../../../selectors/preferencesController', () => ({ + selectSmartTransactionsMigrationApplied: jest.fn(() => true), + selectSmartTransactionsBannerDismissed: jest.fn(() => false), +})); + +jest.mock('../../../../../selectors/smartTransactionsController', () => ({ + selectShouldUseSmartTransaction: jest.fn(() => true), +})); + +describe('SmartTransactionsMigrationBanner', () => { + const mockStore = configureMockStore(); + const mockSetFeatureFlag = jest.mocked(Engine.context.PreferencesController.setFeatureFlag); + const mockedPreferences = jest.requireMock('../../../../../selectors/preferencesController'); + const mockedSmartTransactions = jest.requireMock('../../../../../selectors/smartTransactionsController'); + + beforeEach(() => { + jest.clearAllMocks(); + // Reset only the selectors we're actually using + mockedPreferences.selectSmartTransactionsMigrationApplied.mockReturnValue(true); + mockedPreferences.selectSmartTransactionsBannerDismissed.mockReturnValue(false); + mockedSmartTransactions.selectShouldUseSmartTransaction.mockReturnValue(true); + }); + + describe('banner visibility', () => { + it('renders nothing when banner is dismissed', () => { + mockedPreferences.selectSmartTransactionsBannerDismissed.mockReturnValue(true); + + const store = mockStore({}); + const { queryByTestId } = render( + + + + ); + expect(queryByTestId('smart-transactions-migration-banner')).toBeNull(); + }); + + it('renders nothing when smart transactions are not enabled', () => { + mockedSmartTransactions.selectShouldUseSmartTransaction.mockReturnValue(false); + const store = mockStore({}); + const { queryByTestId } = render( + + + + ); + expect(queryByTestId('smart-transactions-migration-banner')).toBeNull(); + }); + + it('renders nothing when migration is not applied', () => { + mockedPreferences.selectSmartTransactionsMigrationApplied.mockReturnValue(false); + const store = mockStore({}); + const { queryByTestId } = render( + + + + ); + expect(queryByTestId('smart-transactions-migration-banner')).toBeNull(); + }); + + it('renders banner when all conditions are met', () => { + const store = mockStore({}); + + const { getByTestId, getByText } = render( + + + + ); + + expect(getByTestId('smart-transactions-migration-banner')).toBeDefined(); + expect(getByText('smart_transactions_migration.title')).toBeDefined(); + expect(getByText('smart_transactions_migration.link')).toBeDefined(); + }); + }); + + describe('banner interactions', () => { + it('calls setFeatureFlag when close button is pressed', () => { + const store = mockStore({}); + + const { getByTestId } = render( + + + + ); + + fireEvent.press(getByTestId('banner-close-button-icon')); + expect(mockSetFeatureFlag).toHaveBeenCalledWith( + 'smartTransactionsBannerDismissed', + true, + ); + }); + }); + + describe('banner styling', () => { + it('accepts and applies custom styles', () => { + const store = mockStore({}); + const customStyle = { marginTop: 20 }; + + const { getByTestId } = render( + + + + ); + + const banner = getByTestId('smart-transactions-migration-banner'); + const style = banner.props.style; + + // Check if either marginVertical is set, or both marginTop/marginBottom are set + const hasCorrectMargins = + (style.marginVertical !== undefined) || + (style.marginTop === 20 && style.marginBottom === 16); + + expect(hasCorrectMargins).toBe(true); + }); + }); +}); diff --git a/app/components/Views/confirmations/components/SmartTransactionsMigrationBanner/SmartTransactionsMigrationBanner.tsx b/app/components/Views/confirmations/components/SmartTransactionsMigrationBanner/SmartTransactionsMigrationBanner.tsx new file mode 100644 index 000000000000..ab6177368473 --- /dev/null +++ b/app/components/Views/confirmations/components/SmartTransactionsMigrationBanner/SmartTransactionsMigrationBanner.tsx @@ -0,0 +1,82 @@ +import React, { useCallback, useMemo } from 'react'; +import { useSelector } from 'react-redux'; +import { Linking } from 'react-native'; +import BannerAlert from '../../../../../component-library/components/Banners/Banner/variants/BannerAlert/BannerAlert'; +import { BannerAlertSeverity } from '../../../../../component-library/components/Banners/Banner/variants/BannerAlert/BannerAlert.types'; +import { strings } from '../../../../../../locales/i18n'; +import AppConstants from '../../../../../core/AppConstants'; +import Text from '../../../../../component-library/components/Texts/Text'; +import { useStyles } from '../../../../../component-library/hooks/useStyles'; +import styleSheet from './SmartTransactionsMigrationBanner.styles'; +import { SmartTransactionsMigrationBannerProps } from './SmartTransactionsMigrationBanner.types'; +import { + selectShouldUseSmartTransaction, +} from '../../../../../selectors/smartTransactionsController'; +import Engine from '../../../../../core/Engine'; +import Logger from '../../../../../util/Logger'; +import { + selectSmartTransactionsMigrationApplied, + selectSmartTransactionsBannerDismissed, +} from '../../../../../selectors/preferencesController'; + +const SmartTransactionsMigrationBanner = ({ + style, +}: SmartTransactionsMigrationBannerProps) => { + const { styles } = useStyles(styleSheet, { style }); + const isMigrationApplied = useSelector(selectSmartTransactionsMigrationApplied); + const isBannerDismissed = useSelector(selectSmartTransactionsBannerDismissed); + + const shouldUseSmartTransaction = useSelector(selectShouldUseSmartTransaction); + + const dismissBanner = useCallback(async () => { + try { + const { PreferencesController } = Engine.context; + PreferencesController.setFeatureFlag('smartTransactionsBannerDismissed', true); + } catch (error) { + Logger.error(error as Error, 'Failed to dismiss banner:'); + } + }, []); + + const shouldShowBanner = useMemo( + () => + isMigrationApplied && + !isBannerDismissed && + shouldUseSmartTransaction, + [ + isMigrationApplied, + isBannerDismissed, + shouldUseSmartTransaction, + ] + ); + + if (!shouldShowBanner) { + return null; + } + + const handleLearnMore = () => { + Linking.openURL(AppConstants.URLS.SMART_TXS); + dismissBanner(); + }; + + return ( + + + {strings('smart_transactions_migration.link')} + + + {' '}{strings('smart_transactions_migration.description')} + + + } + onClose={dismissBanner} + style={styles.banner} + testID="smart-transactions-migration-banner" + /> + ); +}; + +export default SmartTransactionsMigrationBanner; diff --git a/app/components/Views/confirmations/components/SmartTransactionsMigrationBanner/SmartTransactionsMigrationBanner.types.ts b/app/components/Views/confirmations/components/SmartTransactionsMigrationBanner/SmartTransactionsMigrationBanner.types.ts new file mode 100644 index 000000000000..4c1f1a396e9a --- /dev/null +++ b/app/components/Views/confirmations/components/SmartTransactionsMigrationBanner/SmartTransactionsMigrationBanner.types.ts @@ -0,0 +1,10 @@ +import { ViewStyle } from 'react-native'; + +export interface SmartTransactionsMigrationBannerProps { + style?: ViewStyle; +} + +export type SmartTransactionsMigrationBannerStyleSheetVars = Pick< + SmartTransactionsMigrationBannerProps, + 'style' +>; diff --git a/app/components/Views/confirmations/components/TransactionReview/index.js b/app/components/Views/confirmations/components/TransactionReview/index.js index 91696bceded0..8edb01a2ae86 100644 --- a/app/components/Views/confirmations/components/TransactionReview/index.js +++ b/app/components/Views/confirmations/components/TransactionReview/index.js @@ -59,7 +59,7 @@ import TransactionReviewSummary from './TransactionReviewSummary'; import DevLogger from '../../../../../core/SDKConnect/utils/DevLogger'; import { selectNativeCurrencyByChainId } from '../../../../../selectors/networkController'; import { selectContractExchangeRatesByChainId } from '../../../../../selectors/tokenRatesController'; - +import SmartTransactionsMigrationBanner from '../SmartTransactionsMigrationBanner/SmartTransactionsMigrationBanner'; const POLLING_INTERVAL_ESTIMATED_L1_FEE = 30000; let intervalIdForEstimatedL1Fee; @@ -117,6 +117,9 @@ const createStyles = (colors) => marginHorizontal: 16, marginBottom: -8, }, + smartTransactionsMigrationBanner: { + marginHorizontal: 16, + }, }); /** @@ -518,6 +521,7 @@ class TransactionReview extends PureComponent { error, transactionMetadata, useTransactionSimulations, + shouldUseSmartTransaction, } = this.props; const transactionSimulationData = transactionMetadata?.simulationData; @@ -594,6 +598,11 @@ class TransactionReview extends PureComponent { onContactUsClicked={this.onContactUsClicked} /> + {shouldUseSmartTransaction && ( + + + + )} {to && ( (obj: any) => obj, ); +jest.mock('../../../../../selectors/smartTransactionsController', () => ({ + selectSmartTransactionsEnabled: () => false, + selectShouldUseSmartTransaction: () => false, +})); + +jest.mock('../../../../../reducers/swaps', () => ({ + swapsStateSelector: () => ({ + featureFlags: { + smart_transactions: { + mobile_active: false + } + } + }) +})); + const MOCK_ADDRESS_1 = '0xC4955C0d639D99699Bfd7Ec54d9FaFEe40e4D272'; const MOCK_ADDRESS_2 = '0xB374Ca013934e498e5baD3409147F34E6c462389'; const MOCK_ADDRESS_3 = '0xd018538C87232FF95acbCe4870629b75640a78E7'; diff --git a/app/core/Engine/Engine.ts b/app/core/Engine/Engine.ts index c495c754efae..a44695c9e5e8 100644 --- a/app/core/Engine/Engine.ts +++ b/app/core/Engine/Engine.ts @@ -231,6 +231,11 @@ import { SnapControllerStateChangeEvent, SnapControllerUpdateSnapStateAction, } from './controllers/SnapController/constants'; +import { + SnapKeyringAccountAssetListUpdatedEvent, + SnapKeyringAccountBalancesUpdatedEvent, + SnapKeyringAccountTransactionsUpdatedEvent, +} from '../SnapKeyring/constants'; const NON_EMPTY = 'NON_EMPTY'; @@ -377,7 +382,6 @@ export class Engine { }); // Create AccountsController - // @ts-expect-error TODO: Resolve mismatch between base-controller versions. const accountsControllerMessenger: AccountsControllerMessenger = this.controllerMessenger.getRestricted({ name: 'AccountsController', @@ -385,6 +389,9 @@ export class Engine { SnapControllerStateChangeEvent, 'KeyringController:accountRemoved', 'KeyringController:stateChange', + SnapKeyringAccountAssetListUpdatedEvent, + SnapKeyringAccountBalancesUpdatedEvent, + SnapKeyringAccountTransactionsUpdatedEvent, ], allowedActions: [ 'KeyringController:getAccounts', @@ -620,7 +627,7 @@ export class Engine { ///: BEGIN:ONLY_INCLUDE_IF(keyring-snaps) const snapKeyringBuildMessenger = this.controllerMessenger.getRestricted({ - name: 'SnapKeyringBuilder', + name: 'SnapKeyring', allowedActions: [ 'ApprovalController:addRequest', 'ApprovalController:acceptRequest', @@ -635,12 +642,12 @@ export class Engine { AccountsControllerSetSelectedAccountAction, AccountsControllerGetAccountByAddressAction, AccountsControllerSetAccountNameAction, + SnapControllerHandleRequestAction, + SnapControllerGetSnapAction, ], allowedEvents: [], }); - const getSnapController = () => this.snapController; - // Necessary to persist the keyrings and update the accounts both within the keyring controller and accounts controller const persistAndUpdateAccounts = async () => { await this.keyringController.persistAllKeyrings(); @@ -650,7 +657,6 @@ export class Engine { additionalKeyrings.push( snapKeyringBuilder( snapKeyringBuildMessenger, - getSnapController, persistAndUpdateAccounts, (address) => this.removeAccount(address), ), @@ -1265,7 +1271,6 @@ export class Engine { }, isSimulationEnabled: () => preferencesController.state.useTransactionSimulations, - // @ts-expect-error TODO: Resolve mismatch between base-controller versions. messenger: this.controllerMessenger.getRestricted({ name: 'TransactionController', allowedActions: [ diff --git a/app/core/Engine/controllers/AccountsController/utils.test.ts b/app/core/Engine/controllers/AccountsController/utils.test.ts index c2415d4b198d..b35ec88ce051 100644 --- a/app/core/Engine/controllers/AccountsController/utils.test.ts +++ b/app/core/Engine/controllers/AccountsController/utils.test.ts @@ -20,6 +20,12 @@ import { AGREED, METRICS_OPT_IN } from '../../../../constants/storage'; import StorageWrapper from '../../../../store/storage-wrapper'; import { logAccountsControllerCreation } from './logger'; import { SnapControllerStateChangeEvent } from '../SnapController/constants'; +import { SnapKeyringEvents } from '@metamask/eth-snap-keyring'; +import { + SnapKeyringAccountAssetListUpdatedEvent, + SnapKeyringAccountBalancesUpdatedEvent, + SnapKeyringAccountTransactionsUpdatedEvent, +} from '../../../SnapKeyring/constants'; jest.mock('@sentry/react-native', () => ({ withScope: jest.fn(), @@ -45,14 +51,17 @@ describe('accountControllersUtils', () => { | SnapStateChange | KeyringControllerAccountRemovedEvent | KeyringControllerStateChangeEvent + | SnapKeyringEvents >(); - // @ts-expect-error TODO: Resolve mismatch between base-controller versions. accountsControllerMessenger = globalMessenger.getRestricted({ name: 'AccountsController', allowedEvents: [ SnapControllerStateChangeEvent, 'KeyringController:accountRemoved', 'KeyringController:stateChange', + SnapKeyringAccountAssetListUpdatedEvent, + SnapKeyringAccountBalancesUpdatedEvent, + SnapKeyringAccountTransactionsUpdatedEvent, ], allowedActions: [ 'KeyringController:getAccounts', diff --git a/app/core/Engine/types.ts b/app/core/Engine/types.ts index 8351633cff31..647a38f7a7eb 100644 --- a/app/core/Engine/types.ts +++ b/app/core/Engine/types.ts @@ -180,6 +180,7 @@ import { RemoteFeatureFlagControllerActions, RemoteFeatureFlagControllerEvents, } from '@metamask/remote-feature-flag-controller/dist/remote-feature-flag-controller.cjs'; +import { SnapKeyringEvents } from '@metamask/eth-snap-keyring'; /** * Controllers that area always instantiated @@ -291,7 +292,8 @@ type GlobalEvents = | SelectedNetworkControllerEvents | SmartTransactionsControllerEvents | AssetsContractControllerEvents - | RemoteFeatureFlagControllerEvents; + | RemoteFeatureFlagControllerEvents + | SnapKeyringEvents; // TODO: Abstract this into controller utils for TransactionController export interface TransactionEventPayload { diff --git a/app/core/Multichain/test/utils.test.ts b/app/core/Multichain/test/utils.test.ts index 51d3bb964182..d6a9a9858a90 100644 --- a/app/core/Multichain/test/utils.test.ts +++ b/app/core/Multichain/test/utils.test.ts @@ -3,9 +3,9 @@ import { BtcAccountType, EthMethod, BtcMethod, - EthScopes, - BtcScopes, - SolScopes, + EthScope, + BtcScope, + SolScope, SolAccountType, SolMethod, } from '@metamask/keyring-api'; @@ -34,7 +34,7 @@ const SOL_ADDRESS = '7EcDhSYGxXyscszYEp35KHN8vvw3svAuLKTzXwCFLtV'; const mockEthEOAAccount: InternalAccount = { address: MOCK_ETH_ADDRESS, id: '1', - scopes: [EthScopes.Namespace], + scopes: [EthScope.Eoa], metadata: { name: 'Eth Account 1', importTime: 1684232000456, @@ -56,7 +56,7 @@ const mockEthEOAAccount: InternalAccount = { const mockEthERC4337Account: InternalAccount = { address: '0xC4966c0D659D99699BFD7EB54D8fafEE40e4a756', id: '1', - scopes: [EthScopes.Namespace], + scopes: [EthScope.Eoa], metadata: { name: 'Eth Account ERC4337 1', importTime: 1684232000456, @@ -78,7 +78,7 @@ const mockEthERC4337Account: InternalAccount = { const mockBTCAccount: InternalAccount = { address: MOCK_BTC_MAINNET_ADDRESS, id: '1', - scopes: [BtcScopes.Namespace], + scopes: [BtcScope.Mainnet], metadata: { name: 'Bitcoin Account', importTime: 1684232000456, @@ -114,7 +114,7 @@ const mockSolAccount: InternalAccount = { enabled: true, }, }, - scopes: [SolScopes.Mainnet, SolScopes.Testnet, SolScopes.Devnet], + scopes: [SolScope.Mainnet, SolScope.Testnet, SolScope.Devnet], }; describe('MultiChain utils', () => { diff --git a/app/core/SnapKeyring/SnapKeyring.test.ts b/app/core/SnapKeyring/SnapKeyring.test.ts index 9eb8e6acc89d..d5d5017aef8f 100644 --- a/app/core/SnapKeyring/SnapKeyring.test.ts +++ b/app/core/SnapKeyring/SnapKeyring.test.ts @@ -1,5 +1,5 @@ import { Messenger } from '@metamask/base-controller'; -import { EthAccountType, EthScopes, KeyringEvent } from '@metamask/keyring-api'; +import { EthAccountType, EthScope, KeyringEvent } from '@metamask/keyring-api'; import { InternalAccount } from '@metamask/keyring-internal-api'; import { snapKeyringBuilder } from './SnapKeyring'; import { @@ -15,7 +15,6 @@ const mockEndFlow = jest.fn(); const mockGetAccounts = jest.fn(); const mockSnapId: SnapId = 'snapId' as SnapId; const mockSnapName = 'mock-snap'; -const mockSnapController = jest.fn(); const mockPersisKeyringHelper = jest.fn(); const mockSetSelectedAccount = jest.fn(); const mockRemoveAccountHelper = jest.fn(); @@ -35,7 +34,7 @@ const mockAccount = { }; const mockInternalAccount: InternalAccount = { ...mockAccount, - scopes: [EthScopes.Namespace], + scopes: [EthScope.Eoa], metadata: { snap: { enabled: true, @@ -109,7 +108,6 @@ const createControllerMessenger = ({ const createSnapKeyringBuilder = () => snapKeyringBuilder( createControllerMessenger(), - mockSnapController, mockPersisKeyringHelper, mockRemoveAccountHelper, ); diff --git a/app/core/SnapKeyring/SnapKeyring.ts b/app/core/SnapKeyring/SnapKeyring.ts index 6d63ce6709d0..ec498b3248d5 100644 --- a/app/core/SnapKeyring/SnapKeyring.ts +++ b/app/core/SnapKeyring/SnapKeyring.ts @@ -1,15 +1,13 @@ import { SnapKeyring } from '@metamask/eth-snap-keyring'; -import type { SnapController } from '@metamask/snaps-controllers'; -import { SnapKeyringBuilderMessenger } from './types'; import Logger from '../../util/Logger'; import { showAccountNameSuggestionDialog } from './utils/showDialog'; +import { SnapKeyringBuilderMessenger } from './types'; /** * Constructs a SnapKeyring builder with specified handlers for managing snap accounts. * - Here is the equivalent function on the extension: https://github.com/MetaMask/metamask-extension/blob/develop/app/scripts/lib/snap-keyring/snap-keyring.ts#L111 * * @param controllerMessenger - The controller messenger instance. - * @param getSnapController - A function that retrieves the Snap Controller instance. * @param persistKeyringHelper - A function that persists all keyrings in the vault. * @param removeAccountHelper - A function to help remove an account based on its address. * @returns The constructed SnapKeyring builder instance with the following methods: @@ -21,13 +19,14 @@ import { showAccountNameSuggestionDialog } from './utils/showDialog'; */ export const snapKeyringBuilder = ( controllerMessenger: SnapKeyringBuilderMessenger, - getSnapController: () => SnapController, + persistKeyringHelper: () => Promise, removeAccountHelper: (address: string) => Promise, ): { (): SnapKeyring; type: string } => { const builder = () => - new SnapKeyring(getSnapController(), { - addressExists: async (address) => + // @ts-expect-error TODO: Resolve mismatch between base-controller versions. + new SnapKeyring(controllerMessenger, { + addressExists: async (address: string) => ( await controllerMessenger.call('KeyringController:getAccounts') ).includes(address.toLowerCase()), diff --git a/app/core/SnapKeyring/constants.ts b/app/core/SnapKeyring/constants.ts new file mode 100644 index 000000000000..c08359c767f4 --- /dev/null +++ b/app/core/SnapKeyring/constants.ts @@ -0,0 +1,15 @@ +import { + SnapKeyringAccountAssetListUpdatedEvent as SnapKeyringAccountAssetListUpdatedEventType, + SnapKeyringAccountBalancesUpdatedEvent as SnapKeyringAccountBalancesUpdatedEventType, + SnapKeyringAccountTransactionsUpdatedEvent as SnapKeyringAccountTransactionsUpdatedEventType, +} from '@metamask/eth-snap-keyring'; + +// Events +export const SnapKeyringAccountAssetListUpdatedEvent: SnapKeyringAccountAssetListUpdatedEventType['type'] = + 'SnapKeyring:accountAssetListUpdated'; + +export const SnapKeyringAccountBalancesUpdatedEvent: SnapKeyringAccountBalancesUpdatedEventType['type'] = + 'SnapKeyring:accountBalancesUpdated'; + +export const SnapKeyringAccountTransactionsUpdatedEvent: SnapKeyringAccountTransactionsUpdatedEventType['type'] = + 'SnapKeyring:accountTransactionsUpdated'; diff --git a/app/core/SnapKeyring/types.ts b/app/core/SnapKeyring/types.ts index 3cb336bdff49..96521f9ffd14 100644 --- a/app/core/SnapKeyring/types.ts +++ b/app/core/SnapKeyring/types.ts @@ -16,6 +16,10 @@ import type { ShowSuccess, StartFlow, } from '@metamask/approval-controller'; +import { + HandleSnapRequest as SnapControllerHandleRequestActionType, + GetSnap as SnapControllerGetSnapActionType, +} from '@metamask/snaps-controllers'; export type SnapKeyringBuilderAllowActions = | StartFlow @@ -31,10 +35,12 @@ export type SnapKeyringBuilderAllowActions = | GetSubjectMetadata | AccountsControllerSetSelectedAccountAction | AccountsControllerGetAccountByAddressAction - | AccountsControllerSetAccountNameAction; + | AccountsControllerSetAccountNameAction + | SnapControllerHandleRequestActionType + | SnapControllerGetSnapActionType; export type SnapKeyringBuilderMessenger = RestrictedMessenger< - 'SnapKeyringBuilder', + 'SnapKeyring', SnapKeyringBuilderAllowActions, never, SnapKeyringBuilderAllowActions['type'], diff --git a/app/selectors/accountsController.test.ts b/app/selectors/accountsController.test.ts index 3c33cdf3af99..f4c6a51d5c36 100644 --- a/app/selectors/accountsController.test.ts +++ b/app/selectors/accountsController.test.ts @@ -1,7 +1,11 @@ import { AccountsControllerState } from '@metamask/accounts-controller'; import { captureException } from '@sentry/react-native'; import { Hex, isValidChecksumAddress } from '@metamask/utils'; -import { BtcAccountType } from '@metamask/keyring-api'; +import { + BtcAccountType, + EthAccountType, + EthScope, +} from '@metamask/keyring-api'; import { InternalAccount } from '@metamask/keyring-internal-api'; import StorageWrapper from '../store/storage-wrapper'; import { @@ -85,7 +89,7 @@ describe('Accounts Controller Selectors', () => { address: '0xc4966c0d659d99699bfd7eb54d8fafee40e4a756', id: expectedUuid2, options: {}, - scopes: ['eip155'], + scopes: [EthScope.Eoa], metadata: { name: 'Account 2', importTime: 1684232000456, @@ -100,7 +104,7 @@ describe('Accounts Controller Selectors', () => { 'eth_signTypedData_v3', 'eth_signTypedData_v4', ], - type: 'eip155:eoa', + type: EthAccountType.Eoa, }); }); it('throws an error if the selected account ID does not exist', () => { diff --git a/app/selectors/preferencesController.ts b/app/selectors/preferencesController.ts index 66558c9b4faa..d820d5f98ea8 100644 --- a/app/selectors/preferencesController.ts +++ b/app/selectors/preferencesController.ts @@ -146,3 +146,15 @@ export const selectPrivacyMode = createSelector( (preferencesControllerState: PreferencesState) => preferencesControllerState.privacyMode, ); + +export const selectSmartTransactionsMigrationApplied = createSelector( + selectPreferencesControllerState, + (preferencesControllerState: PreferencesState) => + preferencesControllerState.featureFlags?.smartTransactionsMigrationApplied ?? false, +); + +export const selectSmartTransactionsBannerDismissed = createSelector( + selectPreferencesControllerState, + (preferencesControllerState: PreferencesState) => + preferencesControllerState.featureFlags?.smartTransactionsBannerDismissed ?? false, +); diff --git a/app/store/migrations/036.test.ts b/app/store/migrations/036.test.ts index ebf5f7973755..9f48e457b9a5 100644 --- a/app/store/migrations/036.test.ts +++ b/app/store/migrations/036.test.ts @@ -1,4 +1,4 @@ -import { EthAccountType, EthMethod, EthScopes } from '@metamask/keyring-api'; +import { EthAccountType, EthMethod, EthScope } from '@metamask/keyring-api'; import { InternalAccount } from '@metamask/keyring-internal-api'; import migrate, { Identity } from './036'; import { captureException } from '@sentry/react-native'; @@ -50,7 +50,7 @@ function expectedInternalAccount( ): InternalAccount { return { address, - scopes: [EthScopes.Namespace], + scopes: [EthScope.Eoa], id: getUUIDFromAddressOfNormalAccount(address), metadata: { name: nickname, diff --git a/app/store/migrations/036.ts b/app/store/migrations/036.ts index b73aeae31718..1fea81290619 100644 --- a/app/store/migrations/036.ts +++ b/app/store/migrations/036.ts @@ -1,4 +1,4 @@ -import { EthAccountType, EthScopes } from '@metamask/keyring-api'; +import { EthAccountType, EthScope } from '@metamask/keyring-api'; import { InternalAccount } from '@metamask/keyring-internal-api'; import { isObject, hasProperty } from '@metamask/utils'; import { captureException } from '@sentry/react-native'; @@ -113,7 +113,7 @@ function createInternalAccountsForAccountsController( accounts[expectedId] = { address: identity.address, - scopes: [EthScopes.Namespace], + scopes: [EthScope.Eoa], id: expectedId, options: {}, metadata: { diff --git a/app/store/migrations/066.test.ts b/app/store/migrations/066.test.ts index 970593be3ea0..91930983476b 100644 --- a/app/store/migrations/066.test.ts +++ b/app/store/migrations/066.test.ts @@ -1,8 +1,9 @@ import { - BtcScopes, - EthScopes, - SolScopes, + BtcScope, + EthScope, + SolScope, EthMethod, + CaipChainId, } from '@metamask/keyring-api'; import { AccountsControllerState } from '@metamask/accounts-controller'; import { captureException } from '@sentry/react-native'; @@ -82,13 +83,26 @@ describe('migration #66', () => { ], scopes: [], }, - 'btc-1': { - id: 'btc-1', + 'btc-mainnet': { + id: 'btc-mainnet', type: 'bip122:p2wpkh', - address: 'bc1abc', + address: 'bc1qwl8399fz829uqvqly9tcatgrgtwp3udnhxfq4k', options: {}, metadata: { - name: 'BTC Account', + name: 'BTC Mainnet Account', + keyring: { type: 'HD Key Tree' }, + importTime: Date.now(), + }, + methods: [], + scopes: [], + }, + 'btc-testnet': { + id: 'btc-testnet', + type: 'bip122:p2wpkh', + address: 'tb1q6rmsq3vlfdhjdhtkxlqtuhhlr6pmj09y6w43g8', + options: {}, + metadata: { + name: 'BTC Testnet Account', keyring: { type: 'HD Key Tree' }, importTime: Date.now(), }, @@ -137,7 +151,7 @@ describe('migration #66', () => { EthMethod.SignTransaction, EthMethod.SignTypedDataV4, ], - scopes: [EthScopes.Namespace], + scopes: [EthScope.Eoa], }, }, }, @@ -220,19 +234,22 @@ describe('migration #66', () => { .accounts; // Check EVM EOA account - expect(accounts['evm-1']?.scopes).toEqual([EthScopes.Namespace]); + expect(accounts['evm-1']?.scopes).toEqual([EthScope.Eoa]); // Check EVM ERC4337 account - expect(accounts['evm-2']?.scopes).toEqual([EthScopes.Namespace]); + expect(accounts['evm-2']?.scopes).toEqual([EthScope.Testnet]); - // Check BTC account - expect(accounts['btc-1']?.scopes).toEqual([BtcScopes.Mainnet]); + // Check BTC mainnet account + expect(accounts['btc-mainnet']?.scopes).toEqual([BtcScope.Mainnet]); + + // Check BTC testnet account + expect(accounts['btc-testnet']?.scopes).toEqual([BtcScope.Testnet]); // Check Solana account expect(accounts['sol-1']?.scopes).toEqual([ - SolScopes.Mainnet, - SolScopes.Testnet, - SolScopes.Devnet, + SolScope.Mainnet, + SolScope.Testnet, + SolScope.Devnet, ]); }); @@ -274,7 +291,7 @@ describe('migration #66', () => { .accounts; // Should still process valid accounts - expect(accounts['valid-1']?.scopes).toEqual([EthScopes.Namespace]); + expect(accounts['valid-1']?.scopes).toEqual([EthScope.Eoa]); }); it('handles invalid scopes property gracefully', () => { @@ -338,6 +355,24 @@ describe('migration #66', () => { // @ts-expect-error Testing invalid scope type scopes: undefined, }, + 'invalid-4': { + id: 'evm-1', + type: 'eip155:eoa', + address: '0x123', + options: {}, + metadata: { + name: 'Account 1', + keyring: { type: 'HD Key Tree' }, + importTime: Date.now(), + }, + methods: [ + EthMethod.PersonalSign, + EthMethod.SignTransaction, + EthMethod.SignTypedDataV4, + ], + // Invalid scope value that's not in any enum + scopes: ['some-random-scope' as CaipChainId], + }, }, }, }, @@ -351,9 +386,10 @@ describe('migration #66', () => { .accounts; // Should fix accounts with invalid scopes - expect(accounts['invalid-1']?.scopes).toEqual([EthScopes.Namespace]); - expect(accounts['invalid-2']?.scopes).toEqual([EthScopes.Namespace]); - expect(accounts['invalid-3']?.scopes).toEqual([EthScopes.Namespace]); + expect(accounts['invalid-1']?.scopes).toEqual([EthScope.Eoa]); + expect(accounts['invalid-2']?.scopes).toEqual([EthScope.Eoa]); + expect(accounts['invalid-3']?.scopes).toEqual([EthScope.Eoa]); + expect(accounts['invalid-4']?.scopes).toEqual([EthScope.Eoa]); }); it('logs unknown account types to Sentry', () => { @@ -391,12 +427,12 @@ describe('migration #66', () => { .accounts; // Verify scopes are set to default EVM namespace - expect(accounts['unknown-1']?.scopes).toEqual([EthScopes.Namespace]); + expect(accounts['unknown-1']?.scopes).toEqual([EthScope.Eoa]); // Verify Sentry exception was captured expect(mockedCaptureException).toHaveBeenCalledWith( new Error( - 'Migration 66: Unknown account type unknown-type, defaulting to EVM namespace', + 'Migration 66: Unknown account type unknown-type, defaulting to EVM EOA', ), ); }); diff --git a/app/store/migrations/066.ts b/app/store/migrations/066.ts index 210a0db07f42..5d408e9272ac 100644 --- a/app/store/migrations/066.ts +++ b/app/store/migrations/066.ts @@ -1,52 +1,76 @@ -import { hasProperty, isObject } from '@metamask/utils'; +import { CaipChainId, hasProperty, isObject } from '@metamask/utils'; import { ensureValidState } from './util'; import Logger from '../../util/Logger'; import { BtcAccountType, - BtcScopes, + BtcScope, EthAccountType, - EthScopes, + EthScope, + KeyringAccount, SolAccountType, - SolScopes, + SolScope, } from '@metamask/keyring-api'; import { captureException } from '@sentry/react-native'; +import { isBtcMainnetAddress } from '../../core/Multichain/utils'; -const migrationVersion = 66; +// Helper to check if a scope is a valid enum value +function isValidScope(scope: string): boolean { + return ( + Object.values(EthScope).includes(scope as EthScope) || + Object.values(BtcScope).includes(scope as BtcScope) || + Object.values(SolScope).includes(scope as SolScope) + ); +} -function getScopesForAccountType(accountType: string): string[] { - switch (accountType) { +function getScopesForAccountType( + account: KeyringAccount, + migrationNumber: number, +): CaipChainId[] { + switch (account.type) { case EthAccountType.Eoa: - case EthAccountType.Erc4337: - return [EthScopes.Namespace]; - case BtcAccountType.P2wpkh: - // Default to mainnet scope if address is missing or invalid - return [BtcScopes.Mainnet]; + return [EthScope.Eoa]; + case EthAccountType.Erc4337: { + // EVM Erc4337 account + // NOTE: A Smart Contract account might not be compatible with every chain, in this case we just default + // to testnet since we cannot really "guess" it from here. + // Also, there's no official Snap as of today that uses this account type. So this case should never happen + // in production. + return [EthScope.Testnet]; + } + case BtcAccountType.P2wpkh: { + // Bitcoin uses different accounts for testnet and mainnet + return [ + isBtcMainnetAddress(account.address) + ? BtcScope.Mainnet + : BtcScope.Testnet, + ]; + } case SolAccountType.DataAccount: - return [SolScopes.Mainnet, SolScopes.Testnet, SolScopes.Devnet]; + return [SolScope.Mainnet, SolScope.Testnet, SolScope.Devnet]; default: // Default to EVM namespace for unknown account types captureException( new Error( - `Migration ${migrationVersion}: Unknown account type ${accountType}, defaulting to EVM namespace`, + `Migration ${migrationNumber}: Unknown account type ${account.type}, defaulting to EVM EOA`, ), ); - return [EthScopes.Namespace]; + return [EthScope.Eoa]; } } /** * Migration for adding scopes to accounts in the AccountsController. * Each account type gets its appropriate scopes: - * - EVM EOA: [EthScopes.Namespace] - * - EVM ERC4337: [EthScopes.Namespace] - * - BTC P2WPKH: [BtcScopes.Mainnet] or [BtcScopes.Testnet] based on address - * - Solana: [SolScopes.Mainnet, SolScopes.Testnet, SolScopes.Devnet] + * - EVM EOA: [EthScope.Eoa] + * - EVM ERC4337: [EthScope.Eoa] + * - BTC P2WPKH: [BtcScope.Mainnet] or [BtcScope.Testnet] based on address + * - Solana: [SolScope.Mainnet, SolScope.Testnet, SolScope.Devnet] * * @param state - The state to migrate * @returns The migrated state */ -export default function migrate(state: unknown) { - if (!ensureValidState(state, migrationVersion)) { +export function migration66(state: unknown, migrationNumber: number) { + if (!ensureValidState(state, migrationNumber)) { return state; } @@ -70,7 +94,7 @@ export default function migrate(state: unknown) { ) { captureException( new Error( - `Migration ${migrationVersion}: Invalid state structure for AccountsController`, + `Migration ${migrationNumber}: Invalid state structure for AccountsController`, ), ); return state; @@ -89,17 +113,29 @@ export default function migrate(state: unknown) { hasProperty(account, 'scopes') && Array.isArray(account.scopes) && account.scopes.length > 0 && - account.scopes.every((scope) => typeof scope === 'string') + account.scopes.every( + (scope) => typeof scope === 'string' && isValidScope(scope), + ) ) { continue; } Logger.log( - `Migration ${migrationVersion}: Adding scopes for account type ${account.type}`, + `Migration ${migrationNumber}: Adding scopes for account type ${account.type}`, ); - account.scopes = getScopesForAccountType(account.type as string); + account.scopes = getScopesForAccountType( + account as KeyringAccount, + migrationNumber, + ); } return state; } + +/** + * Migration for adding scopes to accounts in the AccountsController. + */ +export default function migrate(state: unknown) { + return migration66(state, 66); +} diff --git a/app/store/migrations/067.test.ts b/app/store/migrations/067.test.ts new file mode 100644 index 000000000000..277919eabf67 --- /dev/null +++ b/app/store/migrations/067.test.ts @@ -0,0 +1,535 @@ +import { + BtcScope, + EthScope, + SolScope, + EthMethod, + CaipChainId, +} from '@metamask/keyring-api'; +import { AccountsControllerState } from '@metamask/accounts-controller'; +import { captureException } from '@sentry/react-native'; +import migration from './067'; + +jest.mock('../../util/Logger'); +jest.mock('@sentry/react-native', () => ({ + captureException: jest.fn(), +})); + +const mockedCaptureException = jest.mocked(captureException); + +interface StateType { + engine: { + backgroundState: { + AccountsController: AccountsControllerState; + }; + }; +} + +// Migration 67 is a re-run of migration 66 with updated scope values. The tests are the same as 66 with a few extra checks +describe('migration #67', () => { + const MOCK_INVALID_STATE = { + someKey: 'someValue', + }; + + const MOCK_EMPTY_STATE: StateType = { + engine: { + backgroundState: { + AccountsController: { + internalAccounts: { + accounts: {}, + selectedAccount: '', + }, + }, + }, + }, + }; + + const MOCK_STATE_WITH_ACCOUNTS: StateType = { + engine: { + backgroundState: { + AccountsController: { + internalAccounts: { + selectedAccount: 'evm-1', + accounts: { + 'evm-1': { + id: 'evm-1', + type: 'eip155:eoa', + address: '0x123', + options: {}, + metadata: { + name: 'Account 1', + keyring: { type: 'HD Key Tree' }, + importTime: Date.now(), + }, + methods: [ + EthMethod.PersonalSign, + EthMethod.SignTransaction, + EthMethod.SignTypedDataV4, + ], + scopes: [], + }, + 'evm-2': { + id: 'evm-2', + type: 'eip155:erc4337', + address: '0x456', + options: {}, + metadata: { + name: 'Account 2', + keyring: { type: 'HD Key Tree' }, + importTime: Date.now(), + }, + methods: [ + EthMethod.PersonalSign, + EthMethod.SignTransaction, + EthMethod.SignTypedDataV4, + ], + scopes: [], + }, + 'btc-mainnet': { + id: 'btc-mainnet', + type: 'bip122:p2wpkh', + address: 'bc1qwl8399fz829uqvqly9tcatgrgtwp3udnhxfq4k', + options: {}, + metadata: { + name: 'BTC Mainnet Account', + keyring: { type: 'HD Key Tree' }, + importTime: Date.now(), + }, + methods: [], + scopes: [], + }, + 'btc-testnet': { + id: 'btc-testnet', + type: 'bip122:p2wpkh', + address: 'tb1q6rmsq3vlfdhjdhtkxlqtuhhlr6pmj09y6w43g8', + options: {}, + metadata: { + name: 'BTC Testnet Account', + keyring: { type: 'HD Key Tree' }, + importTime: Date.now(), + }, + methods: [], + scopes: [], + }, + 'sol-1': { + id: 'sol-1', + type: 'solana:data-account', + address: 'solana123', + options: {}, + metadata: { + name: 'Solana Account', + keyring: { type: 'HD Key Tree' }, + importTime: Date.now(), + }, + methods: [], + scopes: [], + }, + }, + }, + }, + }, + }, + }; + + const MOCK_STATE_WITH_EXISTING_SCOPES: StateType = { + engine: { + backgroundState: { + AccountsController: { + internalAccounts: { + selectedAccount: 'evm-1', + accounts: { + 'evm-1': { + id: 'evm-1', + type: 'eip155:eoa', + address: '0x123', + options: {}, + metadata: { + name: 'Account 1', + keyring: { type: 'HD Key Tree' }, + importTime: Date.now(), + }, + methods: [ + EthMethod.PersonalSign, + EthMethod.SignTransaction, + EthMethod.SignTypedDataV4, + ], + scopes: [EthScope.Eoa], + }, + }, + }, + }, + }, + }, + }; + + it('captures exception for invalid state structure', () => { + const invalidState = { + engine: { + backgroundState: { + AccountsController: 'not an object', // Invalid type + }, + }, + }; + + const result = migration(invalidState); + + expect(captureException).toHaveBeenCalledWith( + expect.objectContaining({ + message: expect.stringContaining( + 'Invalid state structure for AccountsController', + ), + }), + ); + expect(result).toBe(invalidState); + }); + + it('handles completely missing AccountsController', () => { + const stateWithoutAccounts = { + engine: { + backgroundState: {}, + }, + }; + + const result = migration(stateWithoutAccounts); + + expect(captureException).toHaveBeenCalledWith( + expect.objectContaining({ + message: expect.stringContaining( + 'Invalid state structure for AccountsController', + ), + }), + ); + expect(result).toBe(stateWithoutAccounts); + }); + + it('handles unexpected errors', () => { + const malformedState = null; + + const result = migration(malformedState); + + expect(captureException).toHaveBeenCalled(); + expect(result).toBe(malformedState); + }); + it('returns state if not valid', () => { + const result = migration(MOCK_INVALID_STATE); + expect(result).toEqual(MOCK_INVALID_STATE); + }); + + it('returns state if empty accounts', () => { + const result = migration(MOCK_EMPTY_STATE); + expect(result).toEqual(MOCK_EMPTY_STATE); + }); + + it('preserves accounts that have valid scopes', () => { + const stateCopy = JSON.parse( + JSON.stringify(MOCK_STATE_WITH_EXISTING_SCOPES), + ); + const result = migration(stateCopy) as StateType; + expect(result).toEqual(MOCK_STATE_WITH_EXISTING_SCOPES); + }); + + it('adds correct scopes for all account types', () => { + const stateCopy = JSON.parse(JSON.stringify(MOCK_STATE_WITH_ACCOUNTS)); + const result = migration(stateCopy) as StateType; + const accounts = + result.engine.backgroundState.AccountsController.internalAccounts + .accounts; + + // Check EVM EOA account + expect(accounts['evm-1']?.scopes).toEqual([EthScope.Eoa]); + + // Check EVM ERC4337 account + expect(accounts['evm-2']?.scopes).toEqual([EthScope.Testnet]); + + // Check BTC account + expect(accounts['btc-mainnet']?.scopes).toEqual([BtcScope.Mainnet]); + expect(accounts['btc-testnet']?.scopes).toEqual([BtcScope.Testnet]); + + // Check Solana account + expect(accounts['sol-1']?.scopes).toEqual([ + SolScope.Mainnet, + SolScope.Testnet, + SolScope.Devnet, + ]); + }); + + it('handles malformed account objects gracefully', () => { + const malformedState: StateType = { + engine: { + backgroundState: { + AccountsController: { + internalAccounts: { + selectedAccount: 'valid-1', + accounts: { + 'valid-1': { + id: 'valid-1', + type: 'eip155:eoa', + address: '0x123', + options: {}, + metadata: { + name: 'Account 1', + keyring: { type: 'HD Key Tree' }, + importTime: Date.now(), + }, + methods: [ + EthMethod.PersonalSign, + EthMethod.SignTransaction, + EthMethod.SignTypedDataV4, + ], + scopes: [], + }, + }, + }, + }, + }, + }, + }; + + const result = migration(malformedState) as StateType; + const accounts = + result.engine.backgroundState.AccountsController.internalAccounts + .accounts; + + // Should still process valid accounts + expect(accounts['valid-1']?.scopes).toEqual([EthScope.Eoa]); + }); + + it('handles invalid scopes property gracefully', () => { + const stateWithInvalidScopes: StateType = { + engine: { + backgroundState: { + AccountsController: { + internalAccounts: { + selectedAccount: 'invalid-1', + accounts: { + 'invalid-1': { + id: 'invalid-1', + type: 'eip155:eoa', + address: '0x123', + options: {}, + metadata: { + name: 'Account 1', + keyring: { type: 'HD Key Tree' }, + importTime: Date.now(), + }, + methods: [ + EthMethod.PersonalSign, + EthMethod.SignTransaction, + EthMethod.SignTypedDataV4, + ], + // @ts-expect-error Testing invalid scope type + scopes: null, + }, + 'invalid-2': { + id: 'invalid-2', + type: 'eip155:eoa', + address: '0x456', + options: {}, + metadata: { + name: 'Account 2', + keyring: { type: 'HD Key Tree' }, + importTime: Date.now(), + }, + methods: [ + EthMethod.PersonalSign, + EthMethod.SignTransaction, + EthMethod.SignTypedDataV4, + ], + scopes: [], + }, + 'invalid-3': { + id: 'invalid-3', + type: 'eip155:eoa', + address: '0x789', + options: {}, + metadata: { + name: 'Account 3', + keyring: { type: 'HD Key Tree' }, + importTime: Date.now(), + }, + methods: [ + EthMethod.PersonalSign, + EthMethod.SignTransaction, + EthMethod.SignTypedDataV4, + ], + // @ts-expect-error Testing invalid scope type + scopes: undefined, + }, + }, + }, + }, + }, + }, + }; + + const result = migration(stateWithInvalidScopes) as StateType; + const accounts = + result.engine.backgroundState.AccountsController.internalAccounts + .accounts; + + // Should fix accounts with invalid scopes + expect(accounts['invalid-1']?.scopes).toEqual([EthScope.Eoa]); + expect(accounts['invalid-2']?.scopes).toEqual([EthScope.Eoa]); + expect(accounts['invalid-3']?.scopes).toEqual([EthScope.Eoa]); + }); + + it('logs unknown account types to Sentry', () => { + const stateWithUnknownType: StateType = { + engine: { + backgroundState: { + AccountsController: { + internalAccounts: { + selectedAccount: 'unknown-1', + accounts: { + 'unknown-1': { + id: 'unknown-1', + // @ts-expect-error Testing unknown account type + type: 'unknown-type', + address: '0x123', + options: {}, + metadata: { + name: 'Unknown Account', + keyring: { type: 'HD Key Tree' }, + importTime: Date.now(), + }, + methods: [], + scopes: [], + }, + }, + }, + }, + }, + }, + }; + + const result = migration(stateWithUnknownType) as StateType; + const accounts = + result.engine.backgroundState.AccountsController.internalAccounts + .accounts; + + // Verify scopes are set to default EVM namespace + expect(accounts['unknown-1']?.scopes).toEqual([EthScope.Eoa]); + + // Verify Sentry exception was captured + expect(mockedCaptureException).toHaveBeenCalledWith( + new Error( + 'Migration 67: Unknown account type unknown-type, defaulting to EVM EOA', + ), + ); + }); + + it('updates accounts that were previously migrated with old scope values', () => { + // Old scope values for testing migration from previous state + const OLD_ETH_NAMESPACE_SCOPE = 'eip155' as CaipChainId; + const OLD_SOL_NAMESPACE_SCOPE = 'solana' as CaipChainId; + const OLD_BTC_NAMESPACE_SCOPE = 'bip122' as CaipChainId; + + const stateWithOldScopes: StateType = { + engine: { + backgroundState: { + AccountsController: { + internalAccounts: { + selectedAccount: 'evm-1', + accounts: { + 'evm-1': { + id: 'evm-1', + type: 'eip155:eoa', + address: '0x123', + options: {}, + metadata: { + name: 'Account 1', + keyring: { type: 'HD Key Tree' }, + importTime: Date.now(), + }, + methods: [ + EthMethod.PersonalSign, + EthMethod.SignTransaction, + EthMethod.SignTypedDataV4, + ], + // This represents the old scope value from migration 66 + scopes: [OLD_ETH_NAMESPACE_SCOPE], + }, + 'evm-2': { + id: 'evm-2', + type: 'eip155:erc4337', + address: '0x456', + options: {}, + metadata: { + name: 'Account 2', + keyring: { type: 'HD Key Tree' }, + importTime: Date.now(), + }, + methods: [ + EthMethod.PersonalSign, + EthMethod.SignTransaction, + EthMethod.SignTypedDataV4, + ], + // This represents the old scope value from migration 66 + scopes: [OLD_ETH_NAMESPACE_SCOPE], + }, + 'sol-1': { + id: 'sol-1', + type: 'solana:data-account', + address: 'solana123', + options: {}, + metadata: { + name: 'Solana Account', + keyring: { type: 'HD Key Tree' }, + importTime: Date.now(), + }, + methods: [], + // Old Solana namespace scope + scopes: [OLD_SOL_NAMESPACE_SCOPE], + }, + 'btc-mainnet': { + id: 'btc-mainnet', + type: 'bip122:p2wpkh', + address: 'bc1qwl8399fz829uqvqly9tcatgrgtwp3udnhxfq4k', + options: {}, + metadata: { + name: 'BTC Account', + keyring: { type: 'HD Key Tree' }, + importTime: Date.now(), + }, + methods: [], + // Old BTC namespace scope + scopes: [OLD_BTC_NAMESPACE_SCOPE], + }, + 'btc-testnet': { + id: 'btc-testnet', + type: 'bip122:p2wpkh', + address: 'tb1q6rmsq3vlfdhjdhtkxlqtuhhlr6pmj09y6w43g8', + options: {}, + metadata: { + name: 'BTC Account', + keyring: { type: 'HD Key Tree' }, + importTime: Date.now(), + }, + methods: [], + // Old BTC namespace scope + scopes: [OLD_BTC_NAMESPACE_SCOPE], + }, + }, + }, + }, + }, + }, + }; + + const stateCopy = JSON.parse(JSON.stringify(stateWithOldScopes)); + const result = migration(stateCopy) as StateType; + const accounts = + result.engine.backgroundState.AccountsController.internalAccounts + .accounts; + + // Check that old scope values were updated to new ones + expect(accounts['evm-1']?.scopes).toEqual([EthScope.Eoa]); + expect(accounts['evm-2']?.scopes).toEqual([EthScope.Testnet]); + expect(accounts['sol-1']?.scopes).toEqual([ + SolScope.Mainnet, + SolScope.Testnet, + SolScope.Devnet, + ]); + expect(accounts['btc-mainnet']?.scopes).toEqual([BtcScope.Mainnet]); + expect(accounts['btc-testnet']?.scopes).toEqual([BtcScope.Testnet]); + }); +}); diff --git a/app/store/migrations/067.ts b/app/store/migrations/067.ts new file mode 100644 index 000000000000..c837db9bd86a --- /dev/null +++ b/app/store/migrations/067.ts @@ -0,0 +1,14 @@ +import { migration66 } from './066'; + +/** + * Migration for ensuring that all internal accounts have the correct scopes + * Re-uses logic from migration 66 + * We have to re-run 66 as 67 because the values for the scopes changed + * and users who already had 66 ran would not have the updated scope values. + * The migration 66 was initially injecting a CAIP-2 namespace (eip155 for EVM EOA) rather than a full scope (eip155:0). + * We now require full scopes (namespace:chain-id) for all Internal Accounts. + * See https://github.com/MetaMask/accounts/pull/165 for more details. + */ +export default function migrate(state: unknown) { + return migration66(state, 67); +} diff --git a/app/store/migrations/068.test.ts b/app/store/migrations/068.test.ts new file mode 100644 index 000000000000..56ae27d5545b --- /dev/null +++ b/app/store/migrations/068.test.ts @@ -0,0 +1,142 @@ +import migrate, { State } from './068'; +import { captureException } from '@sentry/react-native'; + +jest.mock('@sentry/react-native', () => ({ + captureException: jest.fn(), +})); +const mockedCaptureException = jest.mocked(captureException); + +const createTestState = (preferences = {}) => ({ + engine: { + backgroundState: { + PreferencesController: { + featureFlags: {}, + ...preferences + } + } + } +}); + +describe('Migration #67', () => { + beforeEach(() => { + jest.restoreAllMocks(); + jest.resetAllMocks(); + }); + + const invalidStates = [ + { + state: null, + errorMessage: "FATAL ERROR: Migration 67: Invalid state error: 'null'", + scenario: 'state is invalid', + }, + { + state: { engine: null }, + errorMessage: "FATAL ERROR: Migration 67: Invalid engine state error: 'null'", + scenario: 'engine state is invalid', + }, + { + state: { engine: { backgroundState: null } }, + errorMessage: "FATAL ERROR: Migration 67: Invalid engine backgroundState error: 'null'", + scenario: 'backgroundState is invalid', + }, + { + state: { engine: { backgroundState: { PreferencesController: null } } }, + errorMessage: "FATAL ERROR: Migration 67: Invalid PreferencesController state error: 'null'", + scenario: 'PreferencesController is invalid', + }, + ]; + + it.each(invalidStates)( + 'captures exception if $scenario', + ({ errorMessage, state }) => { + const newState = migrate(state); + expect(newState).toStrictEqual(state); + expect(mockedCaptureException).toHaveBeenCalledWith(expect.any(Error)); + expect(mockedCaptureException.mock.calls[0][0].message).toBe(errorMessage); + }, + ); + + it('should initialize preferences if they do not exist', () => { + const state = createTestState(); + const result = migrate(state) as State; + expect( + result.engine.backgroundState.PreferencesController, + ).toBeDefined(); + expect( + result.engine.backgroundState.PreferencesController + .featureFlags.smartTransactionsMigrationApplied, + ).toBe(true); + expect( + result.engine.backgroundState.PreferencesController + .smartTransactionsOptInStatus, + ).toBe(true); + expect( + result.engine.backgroundState.PreferencesController + .featureFlags.smartTransactionsBannerDismissed, + ).toBe(false); + }); + + it('should enable STX when opt-in status is undefined', () => { + const state = createTestState({ + smartTransactionsOptInStatus: undefined, + }); + + const result = migrate(state) as State; + expect( + result.engine.backgroundState.PreferencesController + .smartTransactionsOptInStatus, + ).toBe(true); + expect( + result.engine.backgroundState.PreferencesController + .featureFlags.smartTransactionsMigrationApplied, + ).toBe(true); + }); + + it('should enable STX when opt-in status is null', () => { + const state = createTestState({ + smartTransactionsOptInStatus: null, + }); + + const result = migrate(state) as State; + expect( + result.engine.backgroundState.PreferencesController + .smartTransactionsOptInStatus, + ).toBe(true); + expect( + result.engine.backgroundState.PreferencesController + .featureFlags.smartTransactionsMigrationApplied, + ).toBe(true); + }); + + it('should not change stx opt-in when it is already true, but should set migration flag to false', () => { + const state = createTestState({ + smartTransactionsOptInStatus: true, + }); + + const result = migrate(state) as State; + expect( + result.engine.backgroundState.PreferencesController + .smartTransactionsOptInStatus, + ).toBe(true); + expect( + result.engine.backgroundState.PreferencesController + .featureFlags.smartTransactionsMigrationApplied, + ).toBe(false); + }); + + it('should enable STX and show banner (migrationApplied=true) when opt-in status is false', () => { + const state = createTestState({ + smartTransactionsOptInStatus: false, + }); + + const result = migrate(state) as State; + expect( + result.engine.backgroundState.PreferencesController + .smartTransactionsOptInStatus, + ).toBe(true); + expect( + result.engine.backgroundState.PreferencesController + .featureFlags.smartTransactionsMigrationApplied, + ).toBe(true); + }); +}); diff --git a/app/store/migrations/068.ts b/app/store/migrations/068.ts new file mode 100644 index 000000000000..0cbc6e6baa56 --- /dev/null +++ b/app/store/migrations/068.ts @@ -0,0 +1,79 @@ +import { isObject } from '@metamask/utils'; +import { captureException } from '@sentry/react-native'; + +export interface State { + engine: { + backgroundState: { + PreferencesController: { + smartTransactionsOptInStatus: boolean; + featureFlags: { + smartTransactionsMigrationApplied: boolean; + smartTransactionsBannerDismissed: boolean; + }; + }; + }; + }; +} + +export default function migrate(state: unknown) { + if (!isObject(state)) { + captureException( + new Error( + `FATAL ERROR: Migration 67: Invalid state error: '${state === null ? 'null' : typeof state}'`, + ), + ); + return state; + } + if (!isObject(state.engine)) { + captureException( + new Error( + `FATAL ERROR: Migration 67: Invalid engine state error: '${state.engine === null ? 'null' : typeof state.engine}'`, + ), + ); + return state; + } + if (!isObject(state.engine.backgroundState)) { + captureException( + new Error( + `FATAL ERROR: Migration 67: Invalid engine backgroundState error: '${state.engine.backgroundState === null ? 'null' : typeof state.engine.backgroundState}'`, + ), + ); + return state; + } + if (!isObject(state.engine.backgroundState.PreferencesController)) { + captureException( + new Error( + `FATAL ERROR: Migration 67: Invalid PreferencesController state error: '${state.engine.backgroundState.PreferencesController === null ? 'null' : typeof state.engine.backgroundState.PreferencesController}'`, + ), + ); + return state; + } + + // Clone state to avoid mutations + const newState = { ...state } as unknown as State; + const preferences = newState.engine.backgroundState.PreferencesController; + + // Initialize featureFlags if it doesn't exist + if (!preferences.featureFlags) { + preferences.featureFlags = { + smartTransactionsBannerDismissed: false, + smartTransactionsMigrationApplied: false, + }; + } + + // Check current STX opt-in status + const currentOptInStatus = preferences.smartTransactionsOptInStatus; + + if (currentOptInStatus === true) { + // User already had it on - no migration change made + preferences.smartTransactionsOptInStatus = true; + preferences.featureFlags.smartTransactionsMigrationApplied = false; // Changed to false + } else { + // We're changing their setting - mark as migrated + preferences.smartTransactionsOptInStatus = true; + preferences.featureFlags.smartTransactionsMigrationApplied = true; // Changed to true + } + + preferences.featureFlags.smartTransactionsBannerDismissed = false; + return newState; +} diff --git a/app/store/migrations/index.ts b/app/store/migrations/index.ts index 94522a41af3c..8469217d9dd7 100644 --- a/app/store/migrations/index.ts +++ b/app/store/migrations/index.ts @@ -67,6 +67,10 @@ import migration63 from './063'; import migration64 from './064'; import migration65 from './065'; import migration66 from './066'; +import migration67 from './067'; +import migration68 from './068'; + +// Add migrations above this line import { validatePostMigrationState } from '../validateMigration/validateMigration'; import { RootState } from '../../reducers'; @@ -148,6 +152,8 @@ export const migrationList: MigrationsList = { 64: migration64, 65: migration65, 66: migration66, + 67: migration67, + 68: migration68, }; // Enable both synchronous and asynchronous migrations diff --git a/app/store/validateMigration/accountsController.test.ts b/app/store/validateMigration/accountsController.test.ts index 1ea53201d9ad..722ff4abd05c 100644 --- a/app/store/validateMigration/accountsController.test.ts +++ b/app/store/validateMigration/accountsController.test.ts @@ -4,7 +4,7 @@ import { RootState } from '../../reducers'; import { AccountsControllerState } from '@metamask/accounts-controller'; import { EngineState } from '../../core/Engine/types'; import { Json } from '@metamask/utils'; -import { EthScopes } from '@metamask/keyring-api'; +import { EthScope } from '@metamask/keyring-api'; describe('validateAccountsController', () => { const createMockState = ( @@ -26,7 +26,7 @@ describe('validateAccountsController', () => { id: 'account-1', address: '0x123', type: 'eip155:eoa', - scopes: [EthScopes.Namespace], + scopes: [EthScope.Eoa], options: {} as Record, methods: [], metadata: { @@ -89,7 +89,7 @@ describe('validateAccountsController', () => { id: 'account-1', address: '0x123', type: 'eip155:eoa', - scopes: [EthScopes.Namespace], + scopes: [EthScope.Eoa], options: {} as Record, methods: [], metadata: { @@ -120,7 +120,7 @@ describe('validateAccountsController', () => { id: 'account-1', address: '0x123', type: 'eip155:eoa', - scopes: [EthScopes.Namespace], + scopes: [EthScope.Eoa], options: {} as Record, methods: [], metadata: { diff --git a/app/util/sentry/__snapshots__/utils.test.ts.snap b/app/util/sentry/__snapshots__/utils.test.ts.snap index 01e4488c0b5d..470f81fe5a44 100644 --- a/app/util/sentry/__snapshots__/utils.test.ts.snap +++ b/app/util/sentry/__snapshots__/utils.test.ts.snap @@ -53,7 +53,7 @@ exports[`captureSentryFeedback maskObject masks initial root state fixture 1`] = ], "options": {}, "scopes": [ - "eip155", + "eip155:0", ], "type": "eip155:eoa", }, @@ -74,7 +74,7 @@ exports[`captureSentryFeedback maskObject masks initial root state fixture 1`] = ], "options": {}, "scopes": [ - "eip155", + "eip155:0", ], "type": "eip155:eoa", }, diff --git a/app/util/sentry/utils.test.ts b/app/util/sentry/utils.test.ts index e17bc88224d9..18ac7afb0438 100644 --- a/app/util/sentry/utils.test.ts +++ b/app/util/sentry/utils.test.ts @@ -11,7 +11,7 @@ import { import { DeepPartial } from '../test/renderWithProvider'; import { RootState } from '../../reducers'; import { NetworkStatus } from '@metamask/network-controller'; -import { EthScopes } from '@metamask/keyring-api'; +import { EthScope } from '@metamask/keyring-api'; jest.mock('@sentry/react-native', () => ({ ...jest.requireActual('@sentry/react-native'), @@ -178,7 +178,7 @@ describe('captureSentryFeedback', () => { 'eth_signTypedData_v3', 'eth_signTypedData_v4', ], - scopes: [EthScopes.Namespace], + scopes: [EthScope.Eoa], options: {}, type: 'eip155:eoa', }, @@ -193,7 +193,7 @@ describe('captureSentryFeedback', () => { lastSelected: 1720023898237, name: 'Account 2', }, - scopes: [EthScopes.Namespace], + scopes: [EthScope.Eoa], methods: ['personal_sign', 'eth_signTransaction'], options: {}, type: 'eip155:eoa', @@ -633,7 +633,7 @@ describe('captureSentryFeedback', () => { 'eth_signTypedData_v3', 'eth_signTypedData_v4', ]); - expect(maskedAccount1.scopes).toEqual([EthScopes.Namespace]); + expect(maskedAccount1.scopes).toEqual([EthScope.Eoa]); expect(maskedAccount1.metadata).toEqual({ importTime: 1720023898234, keyring: { type: 'HD Key Tree' }, @@ -649,7 +649,7 @@ describe('captureSentryFeedback', () => { 'personal_sign', 'eth_signTransaction', ]); - expect(maskedAccount2.scopes).toEqual([EthScopes.Namespace]); + expect(maskedAccount2.scopes).toEqual([EthScope.Eoa]); expect(maskedAccount2.metadata).toEqual({ importTime: 1720023898235, keyring: { type: 'HD Key Tree' }, diff --git a/app/util/test/accountsControllerTestUtils.ts b/app/util/test/accountsControllerTestUtils.ts index 34a82eeb4b1f..3ebc1a4e68fd 100644 --- a/app/util/test/accountsControllerTestUtils.ts +++ b/app/util/test/accountsControllerTestUtils.ts @@ -4,15 +4,19 @@ import { BtcAccountType, SolAccountType, EthMethod, - EthScopes, - BtcScopes, - SolScopes, + EthScope, + BtcScope, + SolScope, KeyringAccountType, BtcMethod, SolMethod, + CaipChainId, } from '@metamask/keyring-api'; import { InternalAccount } from '@metamask/keyring-internal-api'; -import { AccountsControllerState } from '@metamask/accounts-controller'; +import { + AccountId, + AccountsControllerState, +} from '@metamask/accounts-controller'; import { KeyringTypes } from '@metamask/keyring-controller'; import { mockQrKeyringAddress, @@ -21,7 +25,7 @@ import { mockSnapAddress2, } from './keyringControllerTestUtils'; -export function createMockUuidFromAddress(address: string): string { +export function createMockUuidFromAddress(address: string): AccountId { const fakeShaFromAddress = Array.from( { length: 16 }, (_, i) => address.charCodeAt(i) || 0, @@ -36,18 +40,18 @@ export function createMockUuidFromAddress(address: string): string { * @param accountType - The type of account (ETH, BTC, or Solana) * @returns Array of scopes corresponding to the account type */ -function getAccountTypeScopes(accountType: KeyringAccountType): string[] { +function getAccountTypeScopes(accountType: KeyringAccountType): CaipChainId[] { // Define scope mappings const scopeMappings = { // Ethereum account types - [EthAccountType.Eoa]: [EthScopes.Namespace], - [EthAccountType.Erc4337]: [EthScopes.Namespace], + [EthAccountType.Eoa]: [EthScope.Eoa], + [EthAccountType.Erc4337]: [EthScope.Testnet], // Bitcoin account types - [BtcAccountType.P2wpkh]: [BtcScopes.Namespace], + [BtcAccountType.P2wpkh]: [BtcScope.Mainnet], // Solana account types - [SolAccountType.DataAccount]: [SolScopes.Namespace], + [SolAccountType.DataAccount]: [SolScope.Mainnet], }; const scopes = scopeMappings[accountType]; @@ -128,7 +132,7 @@ export function createMockSnapInternalAccount( EthMethod.SignTypedDataV4, ], type: EthAccountType.Eoa, - scopes: [EthScopes.Namespace], + scopes: [EthScope.Eoa], }; } @@ -137,7 +141,7 @@ export const MOCK_ACCOUNT_BIP122_P2WPKH: InternalAccount = { address: 'bc1qwl8399fz829uqvqly9tcatgrgtwp3udnhxfq4k', options: {}, methods: [BtcMethod.SendBitcoin], - scopes: [BtcScopes.Mainnet], + scopes: [BtcScope.Mainnet], type: BtcAccountType.P2wpkh, metadata: { name: 'Bitcoin Account', @@ -152,7 +156,7 @@ export const MOCK_ACCOUNT_BIP122_P2WPKH_TESTNET: InternalAccount = { address: 'tb1q6rmsq3vlfdhjdhtkxlqtuhhlr6pmj09y6w43g8', options: {}, methods: [BtcMethod.SendBitcoin], - scopes: [BtcScopes.Testnet], + scopes: [BtcScope.Testnet], type: BtcAccountType.P2wpkh, metadata: { name: 'Bitcoin Testnet Account', @@ -180,7 +184,7 @@ export const MOCK_SOLANA_ACCOUNT: InternalAccount = { enabled: true, }, }, - scopes: [SolScopes.Mainnet, SolScopes.Testnet, SolScopes.Devnet], + scopes: [SolScope.Mainnet, SolScope.Testnet, SolScope.Devnet], }; export const MOCK_MULTICHAIN_NON_EVM_ACCOUNTS = { diff --git a/locales/languages/en.json b/locales/languages/en.json index 94db05ce24f5..6579866681c0 100644 --- a/locales/languages/en.json +++ b/locales/languages/en.json @@ -3686,5 +3686,10 @@ "input_title": "Account name", "add_account_button": "Add account", "name_taken_message": "This account name already exists" + }, + "smart_transactions_migration": { + "title": "Transactions just got smarter", + "link": "Higher success rates", + "description": " and MEV protection. Now on by default." } } diff --git a/package.json b/package.json index cc51a1a092c7..92e927821795 100644 --- a/package.json +++ b/package.json @@ -152,7 +152,7 @@ "@keystonehq/metamask-airgapped-keyring": "^0.13.1", "@keystonehq/ur-decoder": "^0.12.2", "@ledgerhq/react-native-hw-transport-ble": "^6.33.2", - "@metamask/accounts-controller": "^21.0.0", + "@metamask/accounts-controller": "^23.1.0", "@metamask/address-book-controller": "^6.0.3", "@metamask/approval-controller": "^7.1.0", "@metamask/assets-controllers": "^46.0.0", @@ -167,7 +167,7 @@ "@metamask/eth-ledger-bridge-keyring": "8.0.3", "@metamask/eth-query": "^4.0.0", "@metamask/eth-sig-util": "^8.0.0", - "@metamask/eth-snap-keyring": "^7.1.0", + "@metamask/eth-snap-keyring": "^10.0.0", "@metamask/etherscan-link": "^2.0.0", "@metamask/ethjs-contract": "^0.4.1", "@metamask/ethjs-query": "^0.7.1", @@ -176,9 +176,9 @@ "@metamask/json-rpc-engine": "^10.0.3", "@metamask/json-rpc-middleware-stream": "^8.0.6", "@metamask/key-tree": "^9.0.0", - "@metamask/keyring-api": "^13.0.0", + "@metamask/keyring-api": "^17.0.0", "@metamask/keyring-controller": "^19.0.1", - "@metamask/keyring-internal-api": "^2.0.0", + "@metamask/keyring-internal-api": "^4.0.2", "@metamask/keyring-snap-client": "^2.0.0", "@metamask/logging-controller": "^6.0.4", "@metamask/message-signing-snap": "^0.3.3", @@ -206,13 +206,13 @@ "@metamask/snaps-controllers": "^9.15.0", "@metamask/snaps-execution-environments": "^6.10.0", "@metamask/snaps-rpc-methods": "^11.7.0", - "@metamask/snaps-sdk": "^6.13.0", - "@metamask/snaps-utils": "^8.6.1", + "@metamask/snaps-sdk": "^6.17.1", + "@metamask/snaps-utils": "^8.10.0", "@metamask/solana-wallet-snap": "^1.2.0", "@metamask/stake-sdk": "^1.0.0", "@metamask/swappable-obj-proxy": "^2.1.0", "@metamask/swaps-controller": "^12.1.0", - "@metamask/transaction-controller": "^43.0.0", + "@metamask/transaction-controller": "^45.1.0", "@metamask/utils": "^11.1.0", "@ngraveio/bc-ur": "^1.1.6", "@notifee/react-native": "^9.0.0", diff --git a/scripts/setup.mjs b/scripts/setup.mjs index 4495a141c0e9..c48d533e545b 100644 --- a/scripts/setup.mjs +++ b/scripts/setup.mjs @@ -238,7 +238,7 @@ const jetifyTask = { const patchPackageTask = { title: 'Patch npm packages', task: async () => { - await $`yarn patch-package`; + await $`yarn patch-package --error-on-fail`; }, }; diff --git a/yarn.lock b/yarn.lock index ebabe795bad5..66218e9ff86c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1957,12 +1957,12 @@ "@ethereumjs/util" "^8.1.0" crc-32 "^1.2.0" -"@ethereumjs/common@^4.3.0": - version "4.3.0" - resolved "https://registry.yarnpkg.com/@ethereumjs/common/-/common-4.3.0.tgz#5b45eec7dcf521fa4ddaf0b383072fbcf9913553" - integrity sha512-shBNJ0ewcPNTUfZduHiczPmqkfJDn0Dh/9BR5fq7xUFTuIq7Fu1Vx00XDwQVIrpVL70oycZocOhBM6nDO+4FEQ== +"@ethereumjs/common@^4.4.0": + version "4.4.0" + resolved "https://registry.yarnpkg.com/@ethereumjs/common/-/common-4.4.0.tgz#fba41612f527a815bf304e98653d6b5fc5d6d4de" + integrity sha512-Fy5hMqF6GsE6DpYTyqdDIJPJgUtDn4dL120zKw+Pswuo+iLyBsEYuSyzMw6NVzD2vDzcBG9fE4+qX4X2bPc97w== dependencies: - "@ethereumjs/util" "^9.0.3" + "@ethereumjs/util" "^9.1.0" "@ethereumjs/rlp@^4.0.1": version "4.0.1" @@ -1984,15 +1984,15 @@ "@ethereumjs/util" "^8.1.0" ethereum-cryptography "^2.0.0" -"@ethereumjs/tx@^5.2.1": - version "5.3.0" - resolved "https://registry.yarnpkg.com/@ethereumjs/tx/-/tx-5.3.0.tgz#473f351729ef4e30eaa3a3fb5aaccd4405a7ee41" - integrity sha512-uv++XYuIfuqYbvymL3/o14hHuC6zX0nRQ1nI2FHsbkkorLZ2ChEIDqVeeVk7Xc9/jQNU/22sk9qZZkRlsveXxw== +"@ethereumjs/tx@^5.2.1", "@ethereumjs/tx@^5.4.0": + version "5.4.0" + resolved "https://registry.yarnpkg.com/@ethereumjs/tx/-/tx-5.4.0.tgz#6f47894cc3e2d4e63d87c62b41ed7e8180a1de58" + integrity sha512-SCHnK7m/AouZ7nyoR0MEXw1OO/tQojSbp88t8oxhwes5iZkZCtfFdUrJaiIb72qIpH2FVw6s1k1uP7LXuH7PsA== dependencies: - "@ethereumjs/common" "^4.3.0" + "@ethereumjs/common" "^4.4.0" "@ethereumjs/rlp" "^5.0.2" - "@ethereumjs/util" "^9.0.3" - ethereum-cryptography "^2.1.3" + "@ethereumjs/util" "^9.1.0" + ethereum-cryptography "^2.2.1" "@ethereumjs/util@^8.0.0", "@ethereumjs/util@^8.1.0": version "8.1.0" @@ -2003,13 +2003,13 @@ ethereum-cryptography "^2.0.0" micro-ftch "^0.3.1" -"@ethereumjs/util@^9.0.2", "@ethereumjs/util@^9.0.3": - version "9.0.3" - resolved "https://registry.yarnpkg.com/@ethereumjs/util/-/util-9.0.3.tgz#c2709e6127a85bbe23a71937ac78358ac93e7241" - integrity sha512-PmwzWDflky+7jlZIFqiGsBPap12tk9zK5SVH9YW2OEnDN7OEhCjUOMzbOqwuClrbkSIkM2ERivd7sXZ48Rh/vg== +"@ethereumjs/util@^9.0.2", "@ethereumjs/util@^9.1.0": + version "9.1.0" + resolved "https://registry.yarnpkg.com/@ethereumjs/util/-/util-9.1.0.tgz#75e3898a3116d21c135fa9e29886565609129bce" + integrity sha512-XBEKsYqLGXLah9PNJbgdkigthkG7TAGvlD/sH12beMXEyHDyigfcbdvHhmLyDWgDyOJn4QwiQUaF7yeuhnjdog== dependencies: "@ethereumjs/rlp" "^5.0.2" - ethereum-cryptography "^2.1.3" + ethereum-cryptography "^2.2.1" "@ethersproject/abi@5.7.0", "@ethersproject/abi@^5.7.0": version "5.7.0" @@ -4436,19 +4436,19 @@ "@metamask/superstruct" "^3.1.0" "@metamask/utils" "^11.0.1" -"@metamask/accounts-controller@^21.0.0": - version "21.0.0" - resolved "https://registry.yarnpkg.com/@metamask/accounts-controller/-/accounts-controller-21.0.0.tgz#d4ef858cd9ec126423fe4a287edada1b9aa9d45a" - integrity sha512-Jt5knLn6n9DQ3IUsfjmtx6NjOTSZrUxHWdvU+SHtQxqkrtNlldqv1C+hQv4DxCTmk6MfSttuEdWObCaxpB2sMA== +"@metamask/accounts-controller@^23.1.0": + version "23.1.0" + resolved "https://registry.yarnpkg.com/@metamask/accounts-controller/-/accounts-controller-23.1.0.tgz#f399f0a92d280abb3ec222fe46fe3d86bb97bcfb" + integrity sha512-woIahBg0PqzfcP/O4iIk2yk1WGmUIA2a4qplok2OEV0a2ZAIENfyaysvDCXwC5RO8Ka53mX/cDn/lRd4rFNeLw== dependencies: "@ethereumjs/util" "^8.1.0" - "@metamask/base-controller" "^7.1.1" - "@metamask/eth-snap-keyring" "^8.0.0" - "@metamask/keyring-api" "^13.0.0" - "@metamask/keyring-internal-api" "^2.0.0" - "@metamask/snaps-sdk" "^6.7.0" - "@metamask/snaps-utils" "^8.3.0" - "@metamask/utils" "^11.0.1" + "@metamask/base-controller" "^8.0.0" + "@metamask/eth-snap-keyring" "^10.0.0" + "@metamask/keyring-api" "^17.0.0" + "@metamask/keyring-internal-api" "^4.0.1" + "@metamask/snaps-sdk" "^6.17.1" + "@metamask/snaps-utils" "^8.10.0" + "@metamask/utils" "^11.1.0" deepmerge "^4.2.2" ethereum-cryptography "^2.1.2" immer "^9.0.6" @@ -4506,7 +4506,7 @@ single-call-balance-checker-abi "^1.0.0" uuid "^8.3.2" -"@metamask/base-controller@^7.0.1", "@metamask/base-controller@^7.0.2", "@metamask/base-controller@^7.1.0", "@metamask/base-controller@^7.1.1": +"@metamask/base-controller@^7.0.1", "@metamask/base-controller@^7.0.2", "@metamask/base-controller@^7.0.3", "@metamask/base-controller@^7.1.0", "@metamask/base-controller@^7.1.1": version "7.1.1" resolved "https://registry.yarnpkg.com/@metamask/base-controller/-/base-controller-7.1.1.tgz#837216ee099563b2106202fa0ed376dc909dfbb9" integrity sha512-4nbA6RL9y0SdHdn4MmMTREX6ISJL7OGHn0GXXszv0tp1fdjsn+SBs28uu1a9ceg1J7R/lO6JH7jAAz8zRtt8Nw== @@ -4708,11 +4708,12 @@ ethereum-cryptography "^2.1.2" tweetnacl "^1.0.3" -"@metamask/eth-sig-util@^8.0.0", "@metamask/eth-sig-util@^8.1.2": - version "8.1.2" - resolved "https://registry.yarnpkg.com/@metamask/eth-sig-util/-/eth-sig-util-8.1.2.tgz#8869bd9cdc989af7402812d5fa4d9a0f6cc30b98" - integrity sha512-+M7TKF8+RwqmfmDCfhgn7jDLtWfbpPCuBfkYPBpk9ptuqINu7+QzthNlU0Rn7jiJ//buyg2pModXVtpRBmgAeA== +"@metamask/eth-sig-util@^8.0.0", "@metamask/eth-sig-util@^8.1.2", "@metamask/eth-sig-util@^8.2.0": + version "8.2.0" + resolved "https://registry.yarnpkg.com/@metamask/eth-sig-util/-/eth-sig-util-8.2.0.tgz#f114ca5b2a1a997b467933c902e7ec44123eb8fb" + integrity sha512-LZDglIh4gYGw9Myp+2aIwKrj6lIJpMC4e0m7wKJU+BxLLBFcrTgKrjdjstXGVWvuYG3kutlh9J+uNBRPJqffWQ== dependencies: + "@ethereumjs/rlp" "^4.0.1" "@ethereumjs/util" "^8.1.0" "@metamask/abi-utils" "^3.0.0" "@metamask/utils" "^11.0.1" @@ -4731,45 +4732,22 @@ ethereum-cryptography "^2.1.2" randombytes "^2.1.0" -"@metamask/eth-snap-keyring@^7.1.0": - version "7.1.0" - resolved "https://registry.yarnpkg.com/@metamask/eth-snap-keyring/-/eth-snap-keyring-7.1.0.tgz#d472ff8c9abee1f438398d749408cd12ee44ada7" - integrity sha512-aOP8WkapqFmne7xt7Xo39YPxA3fvwSzKEO+Eo+o76r4rBAutH6QLNO9gmy6e4wm2TG9hHzsQjceZmLns75suvg== - dependencies: - "@ethereumjs/tx" "^4.2.0" - "@metamask/eth-sig-util" "^8.1.2" - "@metamask/keyring-api" "^13.0.0" - "@metamask/keyring-internal-api" "^1.1.0" - "@metamask/keyring-internal-snap-client" "^1.1.0" - "@metamask/keyring-utils" "^1.0.0" - "@metamask/snaps-controllers" "^9.10.0" - "@metamask/snaps-sdk" "^6.7.0" - "@metamask/snaps-utils" "^8.3.0" - "@metamask/superstruct" "^3.1.0" - "@metamask/utils" "^11.0.1" - "@types/uuid" "^9.0.8" - uuid "^9.0.1" - webextension-polyfill "^0.12.0" - -"@metamask/eth-snap-keyring@^8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@metamask/eth-snap-keyring/-/eth-snap-keyring-8.0.0.tgz#60f6bdf3ed80b096172ebd983773fdc095a94c28" - integrity sha512-NLJmEcJYA+EAnX40N18aVlUZkXARHLDsJT7YoAtVBppRXZRNl9o5FGMe7xh5NrMdcy/Yss1TbQOnqyD0Ox2boA== +"@metamask/eth-snap-keyring@^10.0.0": + version "10.0.0" + resolved "https://registry.yarnpkg.com/@metamask/eth-snap-keyring/-/eth-snap-keyring-10.0.0.tgz#d0fc41ee4f9ec60c144a6230fde49c2684713d19" + integrity sha512-BOUZ1uM5sszDpFoJnWN5PhtOkz7laE8uUMF36Vqs1czmRkeHRREluuUMpyKUlFmk1XmVj6toRui6l8ayUXAAkg== dependencies: "@ethereumjs/tx" "^4.2.0" - "@metamask/eth-sig-util" "^8.1.2" - "@metamask/keyring-api" "^13.0.0" - "@metamask/keyring-internal-api" "^2.0.0" - "@metamask/keyring-internal-snap-client" "^2.0.0" - "@metamask/keyring-utils" "^1.0.0" - "@metamask/snaps-controllers" "^9.10.0" - "@metamask/snaps-sdk" "^6.7.0" - "@metamask/snaps-utils" "^8.3.0" + "@metamask/base-controller" "^7.1.1" + "@metamask/eth-sig-util" "^8.2.0" + "@metamask/keyring-api" "^17.0.0" + "@metamask/keyring-internal-api" "^4.0.2" + "@metamask/keyring-internal-snap-client" "^4.0.0" + "@metamask/keyring-utils" "^2.0.0" "@metamask/superstruct" "^3.1.0" - "@metamask/utils" "^11.0.1" + "@metamask/utils" "^11.1.0" "@types/uuid" "^9.0.8" uuid "^9.0.1" - webextension-polyfill "^0.12.0" "@metamask/etherscan-link@^2.0.0": version "2.1.0" @@ -4890,13 +4868,13 @@ "@metamask/utils" "^11.0.1" readable-stream "^3.6.2" -"@metamask/key-tree@^10.0.0", "@metamask/key-tree@^10.0.1": - version "10.0.1" - resolved "https://registry.yarnpkg.com/@metamask/key-tree/-/key-tree-10.0.1.tgz#b8928750121b122a9d83a5cebdb2b5e34a16eaae" - integrity sha512-R+xjgxKRsEzr37dE4oaA7u7itQZiO0X3FtBqlDDHi3wMB5RK/oTqH1RIPBOyUHnXxL59ldTc6hA+ZmvXos28eg== +"@metamask/key-tree@^10.0.0", "@metamask/key-tree@^10.0.1", "@metamask/key-tree@^10.0.2": + version "10.0.2" + resolved "https://registry.yarnpkg.com/@metamask/key-tree/-/key-tree-10.0.2.tgz#d6fe993cdae423adc5a755a14a19b4a951416f56" + integrity sha512-GFCPZfiiaJAjAXthdvgxa4/ZD41IOZyCVc5MjgWnzj6Euur5URPqhMuefak6hBtY/Hz50gbDwLn8ODj4hbFF3A== dependencies: "@metamask/scure-bip39" "^2.1.1" - "@metamask/utils" "^10.0.1" + "@metamask/utils" "^11.0.1" "@noble/curves" "^1.2.0" "@noble/hashes" "^1.3.2" "@scure/base" "^1.0.0" @@ -4935,6 +4913,16 @@ "@metamask/utils" "^11.0.1" bech32 "^2.0.0" +"@metamask/keyring-api@^17.0.0": + version "17.0.0" + resolved "https://registry.yarnpkg.com/@metamask/keyring-api/-/keyring-api-17.0.0.tgz#016e2b9a4dc116a063aa362a23b6c441d5e043d1" + integrity sha512-e0i+4pHjjCLHahdsnpqll2crfhW7655fS2oz89EMVatt4TSTNwNCQEdMu4MLrRFgz8e0K+RMoXGpshHp16DDlQ== + dependencies: + "@metamask/keyring-utils" "^2.0.0" + "@metamask/superstruct" "^3.1.0" + "@metamask/utils" "^11.1.0" + bech32 "^2.0.0" + "@metamask/keyring-controller@^19.0.1": version "19.0.1" resolved "https://registry.yarnpkg.com/@metamask/keyring-controller/-/keyring-controller-19.0.1.tgz#6fee40a46a780a720f4c864ea779673569be06a7" @@ -4954,56 +4942,30 @@ ethereumjs-wallet "^1.0.1" immer "^9.0.6" -"@metamask/keyring-internal-api@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@metamask/keyring-internal-api/-/keyring-internal-api-1.1.0.tgz#3614c1a9d6f88e40421c2232789529cb395a2157" - integrity sha512-bKY7Iy0JfWyHK+E3HKrGgQrJM6TY2FjrBTaBiyc4Jrl1aOh55BIW57WygSkMvHT3rsBI/Vg3GWnq1io+7PG+Zw== - dependencies: - "@metamask/keyring-api" "^13.0.0" - "@metamask/keyring-utils" "^1.0.0" - "@metamask/superstruct" "^3.1.0" - "@metamask/utils" "^11.0.1" - -"@metamask/keyring-internal-api@^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@metamask/keyring-internal-api/-/keyring-internal-api-2.0.0.tgz#809b1acea178384bb704e8025d8557a30072f6f1" - integrity sha512-CG9MSt3CdcnIQpvgJ4StQqUkdVfv3YX0dXQuZG6czKtW+TNV/43xbgoaQuAk+XsisqfY5zMCmr+XTL3Wvwfc7Q== +"@metamask/keyring-internal-api@^4.0.1", "@metamask/keyring-internal-api@^4.0.2": + version "4.0.2" + resolved "https://registry.yarnpkg.com/@metamask/keyring-internal-api/-/keyring-internal-api-4.0.2.tgz#0283bb725ab0f17e6ff720c773dc475af06126b1" + integrity sha512-y8KeTRS6M0xjGOCaCcvAxC7FDYLmIn4O/XVFMa5k91MTT5DDnlmSH73JYpIFulaZ3cgiR/NvK9KlwiuqZ6GtiQ== dependencies: - "@metamask/keyring-api" "^13.0.0" - "@metamask/keyring-utils" "^1.0.0" + "@metamask/keyring-api" "^17.0.0" + "@metamask/keyring-utils" "^2.0.0" "@metamask/superstruct" "^3.1.0" - "@metamask/utils" "^11.0.1" + "@metamask/utils" "^11.1.0" -"@metamask/keyring-internal-snap-client@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@metamask/keyring-internal-snap-client/-/keyring-internal-snap-client-1.1.0.tgz#8e6bf842502f314fecb777c31a389f779c22bb62" - integrity sha512-5sl5c9QEZ7tCWLZgBXeDc0h/QquxYmnz5jetW5LEle1wa6WaUC/qryyt4FWe/Qy8mcMO05EIOMBDMKIQfea6ww== +"@metamask/keyring-internal-snap-client@^4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@metamask/keyring-internal-snap-client/-/keyring-internal-snap-client-4.0.0.tgz#856e2ed7f0880692ac540331f58d36582034f3af" + integrity sha512-Ms5PNqj/8NfiovE1aGXjHzBjQnSx+/KdaygSipSmUj4tsi4tGVxaCn/Nxf6GHxgoDCU+88OsexLCEfNH6mZI9Q== dependencies: - "@metamask/keyring-api" "^13.0.0" - "@metamask/keyring-snap-client" "^1.1.0" - "@metamask/keyring-utils" "^1.0.0" - "@metamask/snaps-controllers" "^9.10.0" - "@metamask/snaps-sdk" "^6.7.0" - "@metamask/snaps-utils" "^8.3.0" - webextension-polyfill "^0.12.0" + "@metamask/base-controller" "^7.1.1" + "@metamask/keyring-api" "^17.0.0" + "@metamask/keyring-snap-client" "^4.0.0" + "@metamask/keyring-utils" "^2.0.0" -"@metamask/keyring-internal-snap-client@^2.0.0": +"@metamask/keyring-snap-client@^2.0.0": version "2.0.0" - resolved "https://registry.yarnpkg.com/@metamask/keyring-internal-snap-client/-/keyring-internal-snap-client-2.0.0.tgz#c44194af6d880c7b39fe583f4500e740a157fd8b" - integrity sha512-jfJkpsEgaUfbvT6gvqinZB72EnqZF1PkVByalAe2M9RGIvDkSkg6VNilgkEWXtzhz0xttaYD1wET6zJdmdaNFg== - dependencies: - "@metamask/keyring-api" "^13.0.0" - "@metamask/keyring-snap-client" "^2.0.0" - "@metamask/keyring-utils" "^1.0.0" - "@metamask/snaps-controllers" "^9.10.0" - "@metamask/snaps-sdk" "^6.7.0" - "@metamask/snaps-utils" "^8.3.0" - webextension-polyfill "^0.12.0" - -"@metamask/keyring-snap-client@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@metamask/keyring-snap-client/-/keyring-snap-client-1.1.0.tgz#0d215ed923d24bebb11721ffe093ea362176adce" - integrity sha512-Iv59YZlx/P67Jz9aq5XBE3AqS2TBXVcsGppw4busdhjgUG+vC9LXf7HeXwQmhnNh8IX8YAL03dX3cATg//d0KA== + resolved "https://registry.yarnpkg.com/@metamask/keyring-snap-client/-/keyring-snap-client-2.0.0.tgz#395af45471ba8bf79e4778d5afd6dd56327b9e97" + integrity sha512-P6xR4sbYEp9vhg5yxTcPLDW1fFve1FHgYT72HS10KXZQvKlGgoOwZe8kcNpQGarqa/Cr4IwzpULJP8Xm/sAF+w== dependencies: "@metamask/keyring-api" "^13.0.0" "@metamask/keyring-utils" "^1.0.0" @@ -5012,13 +4974,13 @@ uuid "^9.0.1" webextension-polyfill "^0.12.0" -"@metamask/keyring-snap-client@^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@metamask/keyring-snap-client/-/keyring-snap-client-2.0.0.tgz#395af45471ba8bf79e4778d5afd6dd56327b9e97" - integrity sha512-P6xR4sbYEp9vhg5yxTcPLDW1fFve1FHgYT72HS10KXZQvKlGgoOwZe8kcNpQGarqa/Cr4IwzpULJP8Xm/sAF+w== +"@metamask/keyring-snap-client@^4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@metamask/keyring-snap-client/-/keyring-snap-client-4.0.0.tgz#630b0f1f11e555507d5e91fe7dc84ebada75e5cf" + integrity sha512-ZVZwCQnbYbnqenU0LYO1erF70pdgZDqbgiCljDZ2NDwGlUHX2vrMVeCmFtw2zTnIr3IMo6DR+ybEKjVoAe2Gog== dependencies: - "@metamask/keyring-api" "^13.0.0" - "@metamask/keyring-utils" "^1.0.0" + "@metamask/keyring-api" "^17.0.0" + "@metamask/keyring-utils" "^2.0.0" "@metamask/superstruct" "^3.1.0" "@types/uuid" "^9.0.8" uuid "^9.0.1" @@ -5032,6 +4994,16 @@ "@metamask/superstruct" "^3.1.0" "@metamask/utils" "^9.3.0" +"@metamask/keyring-utils@^2.0.0": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@metamask/keyring-utils/-/keyring-utils-2.1.0.tgz#5f7e382ca7925aaee1b859b30270607a0a7a0c29" + integrity sha512-1K3MFjNya/8YZ1EhFPilL8nVi3h8C5qGsdSJBrvXkEVGVPbZDLsQuPnzeuG1MoZk6wWcByo6h/8CPDlefCVe1Q== + dependencies: + "@ethereumjs/tx" "^4.2.0" + "@metamask/superstruct" "^3.1.0" + "@metamask/utils" "^11.1.0" + bitcoin-address-validation "^2.2.3" + "@metamask/logging-controller@^6.0.4": version "6.0.4" resolved "https://registry.yarnpkg.com/@metamask/logging-controller/-/logging-controller-6.0.4.tgz#05b9b445e8c09f25eb0d4342e5c5281601d8d11c" @@ -5164,7 +5136,7 @@ "@metamask/safe-event-emitter" "^3.0.0" readable-stream "^3.6.2" -"@metamask/permission-controller@^11.0.3", "@metamask/permission-controller@^11.0.6": +"@metamask/permission-controller@^11.0.3", "@metamask/permission-controller@^11.0.5", "@metamask/permission-controller@^11.0.6": version "11.0.6" resolved "https://registry.yarnpkg.com/@metamask/permission-controller/-/permission-controller-11.0.6.tgz#4069f6ed29d514a7e897f177efc9f798bba8668a" integrity sha512-BGznKBEiSZMsF7TuyBUp5xt93nfhGHyl4xAs1rvJUNUWVSUtry+mb1A6H8bq82/T4ZrxNhrnx3ISYr99ZDo7rA== @@ -5391,7 +5363,7 @@ lodash "^4.17.21" uuid "^8.3.2" -"@metamask/slip44@^4.0.0", "@metamask/slip44@^4.1.0": +"@metamask/slip44@^4.1.0": version "4.1.0" resolved "https://registry.yarnpkg.com/@metamask/slip44/-/slip44-4.1.0.tgz#6f2702de7ba64dad3ab6586ea3ac4e5647804b0a" integrity sha512-RQ2MJO0X3QLnJo0rFlb83h2tNAkqqx/VNOPLc3/S2CvY3/cXy3UAEw/xRM/475BeAAkWI93yiIn/FoGUy3E0Ig== @@ -5414,7 +5386,7 @@ fast-json-patch "^3.1.0" lodash "^4.17.21" -"@metamask/snaps-controllers@^9.10.0", "@metamask/snaps-controllers@^9.15.0": +"@metamask/snaps-controllers@^9.15.0": version "9.15.0" resolved "https://registry.yarnpkg.com/@metamask/snaps-controllers/-/snaps-controllers-9.15.0.tgz#2091d72e0a8bd4c637e8b25e3222e597b5d62060" integrity sha512-ElvlaX6u2MKwiuDbZ7yoJw6YuRhMspUcx0OnDSj1PhjF1apoKnOJVR/968BshqNDsTpDFFsGdvbFMX7wE3yLPQ== @@ -5463,13 +5435,13 @@ nanoid "^3.1.31" readable-stream "^3.6.2" -"@metamask/snaps-registry@^3.2.2": - version "3.2.2" - resolved "https://registry.yarnpkg.com/@metamask/snaps-registry/-/snaps-registry-3.2.2.tgz#c0402e7beeb3fbaaeb829a508c2277bd7e4a1622" - integrity sha512-20JqmfqAMcQgdR0rkWqLdiWoZYtMNhqzAUs64sO7jMBG0dBUYI+ktatH3ZlLLILqrOPumDDv+Goj7DozXLf33g== +"@metamask/snaps-registry@^3.2.2", "@metamask/snaps-registry@^3.2.3": + version "3.2.3" + resolved "https://registry.yarnpkg.com/@metamask/snaps-registry/-/snaps-registry-3.2.3.tgz#7385482ded8929b7feca5659e9344b0b171c871d" + integrity sha512-XO5zk2DMLlixk5tKydIxYn0seSU453oR8PAoorVkgvCRmprdGC4qNqxfDZ7t1xf5qquqHvRaNHQ/Ir5cAwxXyw== dependencies: "@metamask/superstruct" "^3.1.0" - "@metamask/utils" "^10.0.0" + "@metamask/utils" "^11.0.1" "@noble/curves" "^1.2.0" "@noble/hashes" "^1.3.2" @@ -5499,33 +5471,33 @@ fast-xml-parser "^4.3.4" superstruct "^1.0.3" -"@metamask/snaps-sdk@^6.11.0", "@metamask/snaps-sdk@^6.13.0", "@metamask/snaps-sdk@^6.7.0": - version "6.13.0" - resolved "https://registry.yarnpkg.com/@metamask/snaps-sdk/-/snaps-sdk-6.13.0.tgz#cbfef71253264efd4e0ef4606f89e93f83885816" - integrity sha512-WXNt0XZSnmgbwgETL0RiRvl0CMa78ZA1zLS0olK8QR/+9zcPCSrh68v1lVAa+LcctvzpRJ8NiRAar2fRBthqyw== +"@metamask/snaps-sdk@^6.11.0", "@metamask/snaps-sdk@^6.13.0", "@metamask/snaps-sdk@^6.17.0", "@metamask/snaps-sdk@^6.17.1", "@metamask/snaps-sdk@^6.7.0": + version "6.17.1" + resolved "https://registry.yarnpkg.com/@metamask/snaps-sdk/-/snaps-sdk-6.17.1.tgz#9bd25c4ff417e1572ef1a9bf59ba7cfb65ff5f46" + integrity sha512-5eWXMBzmX2QOtHxKBsuEcm1+BjqkgPioEtmoaCkiBoWihJ4kh88Lh6OZUmZhPH6Kyo2MlrtdZ1RmYbq/rme2xg== dependencies: - "@metamask/key-tree" "^10.0.1" - "@metamask/providers" "^18.1.1" - "@metamask/rpc-errors" "^7.0.1" + "@metamask/key-tree" "^10.0.2" + "@metamask/providers" "^18.3.1" + "@metamask/rpc-errors" "^7.0.2" "@metamask/superstruct" "^3.1.0" - "@metamask/utils" "^10.0.0" + "@metamask/utils" "^11.0.1" -"@metamask/snaps-utils@^8.3.0", "@metamask/snaps-utils@^8.6.0", "@metamask/snaps-utils@^8.6.1": - version "8.6.1" - resolved "https://registry.yarnpkg.com/@metamask/snaps-utils/-/snaps-utils-8.6.1.tgz#9f3b52f9b00a93ce9e3f22e79066fea0d6df458a" - integrity sha512-R6Gj6Im5gV09kjkSH9vDKrvsqNGaFGbSAl95fhlQBW3QevLaMbvAF4bCfhA3YCfsEYZUWsgplYpCjX78q2jvBA== +"@metamask/snaps-utils@^8.10.0", "@metamask/snaps-utils@^8.3.0", "@metamask/snaps-utils@^8.6.0", "@metamask/snaps-utils@^8.6.1": + version "8.10.0" + resolved "https://registry.yarnpkg.com/@metamask/snaps-utils/-/snaps-utils-8.10.0.tgz#ae44480887908643bdf134d3a96f9994cd52f693" + integrity sha512-3UXDVwk9H8Led76VSCbF/fuB90fBa9ZBAHftwD7HSIOsZeYkEkvie+3B+4rCEExBCXcfpyj/eiDgMpHg3orqhQ== dependencies: "@babel/core" "^7.23.2" "@babel/types" "^7.23.0" - "@metamask/base-controller" "^7.0.2" - "@metamask/key-tree" "^10.0.1" - "@metamask/permission-controller" "^11.0.3" - "@metamask/rpc-errors" "^7.0.1" - "@metamask/slip44" "^4.0.0" - "@metamask/snaps-registry" "^3.2.2" - "@metamask/snaps-sdk" "^6.13.0" + "@metamask/base-controller" "^7.0.3" + "@metamask/key-tree" "^10.0.2" + "@metamask/permission-controller" "^11.0.5" + "@metamask/rpc-errors" "^7.0.2" + "@metamask/slip44" "^4.1.0" + "@metamask/snaps-registry" "^3.2.3" + "@metamask/snaps-sdk" "^6.17.0" "@metamask/superstruct" "^3.1.0" - "@metamask/utils" "^10.0.0" + "@metamask/utils" "^11.0.1" "@noble/hashes" "^1.3.1" "@scure/base" "^1.1.1" chalk "^4.1.2" @@ -5580,24 +5552,24 @@ resolved "https://registry.yarnpkg.com/@metamask/test-dapp/-/test-dapp-8.9.0.tgz#bac680e8f0007b3a11440f7e311674d6457d37ed" integrity sha512-N/WfmdrzJm+xbpuqJsfMrlrAhiNDsllIpwt9gDDeEKDlQAfJnMtT9xvOvBJbXY7zgMdtGZuD+KY64jNKabbuVQ== -"@metamask/transaction-controller@^43.0.0": - version "43.0.0" - resolved "https://registry.yarnpkg.com/@metamask/transaction-controller/-/transaction-controller-43.0.0.tgz#d4206cf671c4b9938dcf5fc0a190c7b8bf062967" - integrity sha512-QdAQRhuaL5a2vdX0yIsyeBhg+Tu9S7k0jY1xGrKJTdttdko8/KEEnkfOXZPf3VEATY7qw81WgSok4OLY3DXocA== +"@metamask/transaction-controller@^45.1.0": + version "45.1.0" + resolved "https://registry.yarnpkg.com/@metamask/transaction-controller/-/transaction-controller-45.1.0.tgz#271f0a9575551bfd494ff79be70fb142d792a987" + integrity sha512-LyNjcZ6zbLAKgkCJbFK+e7oPespl8c4kGJXV8JKzLGOmdU1LORpNgeo61nUK7/0b/LVovFTCyJO8wjk7ESFI2Q== dependencies: - "@ethereumjs/common" "^3.2.0" - "@ethereumjs/tx" "^4.2.0" + "@ethereumjs/common" "^4.4.0" + "@ethereumjs/tx" "^5.4.0" "@ethereumjs/util" "^8.1.0" "@ethersproject/abi" "^5.7.0" "@ethersproject/contracts" "^5.7.0" "@ethersproject/providers" "^5.7.0" - "@metamask/base-controller" "^7.1.1" - "@metamask/controller-utils" "^11.4.5" + "@metamask/base-controller" "^8.0.0" + "@metamask/controller-utils" "^11.5.0" "@metamask/eth-query" "^4.0.0" "@metamask/metamask-eth-abis" "^3.1.1" "@metamask/nonce-tracker" "^6.0.0" "@metamask/rpc-errors" "^7.0.2" - "@metamask/utils" "^11.0.1" + "@metamask/utils" "^11.1.0" async-mutex "^0.5.0" bn.js "^5.2.1" eth-method-registry "^4.0.0" @@ -5605,7 +5577,7 @@ lodash "^4.17.21" uuid "^8.3.2" -"@metamask/utils@^10.0.0", "@metamask/utils@^10.0.1", "@metamask/utils@^11.0.1", "@metamask/utils@^11.1.0", "@metamask/utils@^8.2.0", "@metamask/utils@^8.3.0", "@metamask/utils@^9.0.0", "@metamask/utils@^9.1.0", "@metamask/utils@^9.2.1", "@metamask/utils@^9.3.0": +"@metamask/utils@^10.0.0", "@metamask/utils@^11.0.1", "@metamask/utils@^11.1.0", "@metamask/utils@^8.2.0", "@metamask/utils@^8.3.0", "@metamask/utils@^9.0.0", "@metamask/utils@^9.1.0", "@metamask/utils@^9.2.1", "@metamask/utils@^9.3.0": version "11.2.0" resolved "https://registry.yarnpkg.com/@metamask/utils/-/utils-11.2.0.tgz#f2b35cbe6536c56071b0971f97f2395b860885c4" integrity sha512-5Y4bd8Axvi2kJKjp6Jlbb9wyoTrSZxQjWvVGPevpErAc7SCUYUuW0QOOPVu7YmT+bzisTpnFnRE8LjtwYCKGAg== @@ -5667,30 +5639,23 @@ resolved "https://registry.yarnpkg.com/@noble/ciphers/-/ciphers-0.5.3.tgz#48b536311587125e0d0c1535f73ec8375cd76b23" integrity sha512-B0+6IIHiqEs3BPMT0hcRmHvEj2QHOLu+uwt+tqDDeVd0oyVzh7BPrDcPjRnV1PV/5LaknXJJQvOuRGR0zQJz+w== -"@noble/curves@1.3.0", "@noble/curves@~1.3.0": - version "1.3.0" - resolved "https://registry.yarnpkg.com/@noble/curves/-/curves-1.3.0.tgz#01be46da4fd195822dab821e72f71bf4aeec635e" - integrity sha512-t01iSXPuN+Eqzb4eBX0S5oubSqXbK/xXa1Ne18Hj8f9pStxztHCE2gfboSp/dZRLSqfuLpRK2nDXDK+W9puocA== +"@noble/curves@1.4.2", "@noble/curves@^1.2.0", "@noble/curves@^1.4.0", "@noble/curves@~1.4.0": + version "1.4.2" + resolved "https://registry.yarnpkg.com/@noble/curves/-/curves-1.4.2.tgz#40309198c76ed71bc6dbf7ba24e81ceb4d0d1fe9" + integrity sha512-TavHr8qycMChk8UwMld0ZDRvatedkzWfH8IiaeGCfymOP5i0hSCozz9vHOL0nkwk7HRMlFnAiKpS2jrUmSybcw== dependencies: - "@noble/hashes" "1.3.3" + "@noble/hashes" "1.4.0" -"@noble/curves@^1.2.0", "@noble/curves@^1.4.0": +"@noble/hashes@1.4.0", "@noble/hashes@^1.1.2", "@noble/hashes@^1.3.1", "@noble/hashes@^1.3.2", "@noble/hashes@^1.4.0", "@noble/hashes@~1.4.0": version "1.4.0" - resolved "https://registry.yarnpkg.com/@noble/curves/-/curves-1.4.0.tgz#f05771ef64da724997f69ee1261b2417a49522d6" - integrity sha512-p+4cb332SFCrReJkCYe8Xzm0OWi4Jji5jVdIZRL/PmacmDkFNw6MrrV+gGpiPxLHbV+zKFRywUWbaseT+tZRXg== - dependencies: - "@noble/hashes" "1.4.0" + resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.4.0.tgz#45814aa329f30e4fe0ba49426f49dfccdd066426" + integrity sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg== -"@noble/hashes@1.3.3", "@noble/hashes@~1.3.2": +"@noble/hashes@~1.3.2": version "1.3.3" resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.3.3.tgz#39908da56a4adc270147bb07968bf3b16cfe1699" integrity sha512-V7/fPHgl+jsVPXqqeOzT8egNj2iBIVt+ECeMMG8TdcnTikP3oaBtUVqpT/gYCR68aEBJSF+XbYUxStjbFMqIIA== -"@noble/hashes@1.4.0", "@noble/hashes@^1.1.2", "@noble/hashes@^1.3.1", "@noble/hashes@^1.3.2", "@noble/hashes@^1.4.0": - version "1.4.0" - resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.4.0.tgz#45814aa329f30e4fe0ba49426f49dfccdd066426" - integrity sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg== - "@nodelib/fs.scandir@2.1.5": version "2.1.5" resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" @@ -6905,27 +6870,27 @@ image-to-base64 "^2.2.0" open "^8.2.0" -"@scure/base@^1.0.0", "@scure/base@^1.1.1", "@scure/base@^1.1.3", "@scure/base@~1.1.3", "@scure/base@~1.1.4": - version "1.1.6" - resolved "https://registry.yarnpkg.com/@scure/base/-/base-1.1.6.tgz#8ce5d304b436e4c84f896e0550c83e4d88cb917d" - integrity sha512-ok9AWwhcgYuGG3Zfhyqg+zwl+Wn5uE+dwC0NV/2qQkx4dABbb/bx96vWu8NSj+BNjjSjno+JRYRjle1jV08k3g== +"@scure/base@^1.0.0", "@scure/base@^1.1.1", "@scure/base@^1.1.3", "@scure/base@~1.1.3", "@scure/base@~1.1.6": + version "1.1.9" + resolved "https://registry.yarnpkg.com/@scure/base/-/base-1.1.9.tgz#e5e142fbbfe251091f9c5f1dd4c834ac04c3dbd1" + integrity sha512-8YKhl8GHiNI/pU2VMaofa2Tor7PJRAjwQLBBuilkJ9L5+13yVbC7JO/wS7piioAvPSwR3JKM1IJ/u4xQzbcXKg== -"@scure/bip32@1.3.3": - version "1.3.3" - resolved "https://registry.yarnpkg.com/@scure/bip32/-/bip32-1.3.3.tgz#a9624991dc8767087c57999a5d79488f48eae6c8" - integrity sha512-LJaN3HwRbfQK0X1xFSi0Q9amqOgzQnnDngIt+ZlsBC3Bm7/nE7K0kwshZHyaru79yIVRv/e1mQAjZyuZG6jOFQ== +"@scure/bip32@1.4.0": + version "1.4.0" + resolved "https://registry.yarnpkg.com/@scure/bip32/-/bip32-1.4.0.tgz#4e1f1e196abedcef395b33b9674a042524e20d67" + integrity sha512-sVUpc0Vq3tXCkDGYVWGIZTRfnvu8LoTDaev7vbwh0omSvVORONr960MQWdKqJDCReIEmTj3PAr73O3aoxz7OPg== dependencies: - "@noble/curves" "~1.3.0" - "@noble/hashes" "~1.3.2" - "@scure/base" "~1.1.4" + "@noble/curves" "~1.4.0" + "@noble/hashes" "~1.4.0" + "@scure/base" "~1.1.6" -"@scure/bip39@1.2.2": - version "1.2.2" - resolved "https://registry.yarnpkg.com/@scure/bip39/-/bip39-1.2.2.tgz#f3426813f4ced11a47489cbcf7294aa963966527" - integrity sha512-HYf9TUXG80beW+hGAt3TRM8wU6pQoYur9iNypTROm42dorCGmLnFe3eWjz3gOq6G62H2WRh0FCzAR1PI+29zIA== +"@scure/bip39@1.3.0": + version "1.3.0" + resolved "https://registry.yarnpkg.com/@scure/bip39/-/bip39-1.3.0.tgz#0f258c16823ddd00739461ac31398b4e7d6a18c3" + integrity sha512-disdg7gHuTDZtY+ZdkmLpPCk7fxZSu3gBiEGuoC1XYxv9cGx3Z6cpTggCgW6odSOOIXCiDjuGejW+aJKCY/pIQ== dependencies: - "@noble/hashes" "~1.3.2" - "@scure/base" "~1.1.4" + "@noble/hashes" "~1.4.0" + "@scure/base" "~1.1.6" "@segment/analytics-react-native@^2.17.0": version "2.17.0" @@ -16551,15 +16516,15 @@ ethereum-cryptography@^0.1.3: secp256k1 "^4.0.1" setimmediate "^1.0.5" -ethereum-cryptography@^2.0.0, ethereum-cryptography@^2.1.2, ethereum-cryptography@^2.1.3: - version "2.1.3" - resolved "https://registry.yarnpkg.com/ethereum-cryptography/-/ethereum-cryptography-2.1.3.tgz#1352270ed3b339fe25af5ceeadcf1b9c8e30768a" - integrity sha512-BlwbIL7/P45W8FGW2r7LGuvoEZ+7PWsniMvQ4p5s2xCyw9tmaDlpfsN9HjAucbF+t/qpVHwZUisgfK24TCW8aA== +ethereum-cryptography@^2.0.0, ethereum-cryptography@^2.1.2, ethereum-cryptography@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/ethereum-cryptography/-/ethereum-cryptography-2.2.1.tgz#58f2810f8e020aecb97de8c8c76147600b0b8ccf" + integrity sha512-r/W8lkHSiTLxUxW8Rf3u4HGB0xQweG2RyETjywylKZSzLWoWAijRz8WCuOtJ6wah+avllXBqZuk29HCCvhEIRg== dependencies: - "@noble/curves" "1.3.0" - "@noble/hashes" "1.3.3" - "@scure/bip32" "1.3.3" - "@scure/bip39" "1.2.2" + "@noble/curves" "1.4.2" + "@noble/hashes" "1.4.0" + "@scure/bip32" "1.4.0" + "@scure/bip39" "1.3.0" ethereum-ens-network-map@^1.0.0: version "1.0.2" From bf7851d0e384d52c4578a796202ae7107662c4d4 Mon Sep 17 00:00:00 2001 From: metamaskbot Date: Fri, 14 Feb 2025 23:54:04 +0000 Subject: [PATCH 012/473] Bump version number to 1565 --- android/app/build.gradle | 2 +- bitrise.yml | 4 ++-- ios/MetaMask.xcodeproj/project.pbxproj | 12 ++++++------ 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/android/app/build.gradle b/android/app/build.gradle index b2ce34964b4e..d4558f4a070c 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -179,7 +179,7 @@ android { minSdkVersion rootProject.ext.minSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion versionName "7.41.0" - versionCode 1559 + versionCode 1565 testBuildType System.getProperty('testBuildType', 'debug') missingDimensionStrategy 'react-native-camera', 'general' testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" diff --git a/bitrise.yml b/bitrise.yml index c32d223cf782..723dd99a437a 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -1830,13 +1830,13 @@ app: VERSION_NAME: 7.41.0 - opts: is_expand: false - VERSION_NUMBER: 1559 + VERSION_NUMBER: 1565 - opts: is_expand: false FLASK_VERSION_NAME: 7.41.0 - opts: is_expand: false - FLASK_VERSION_NUMBER: 1559 + FLASK_VERSION_NUMBER: 1565 - opts: is_expand: false ANDROID_APK_LINK: '' diff --git a/ios/MetaMask.xcodeproj/project.pbxproj b/ios/MetaMask.xcodeproj/project.pbxproj index d03578a878ce..5f8a1863ff54 100644 --- a/ios/MetaMask.xcodeproj/project.pbxproj +++ b/ios/MetaMask.xcodeproj/project.pbxproj @@ -1380,7 +1380,7 @@ CODE_SIGN_IDENTITY = "Apple Development"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1559; + CURRENT_PROJECT_VERSION = 1565; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = 48XVW22RCG; @@ -1449,7 +1449,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMask.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1559; + CURRENT_PROJECT_VERSION = 1565; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 48XVW22RCG; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 48XVW22RCG; @@ -1514,7 +1514,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMaskDebug.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1559; + CURRENT_PROJECT_VERSION = 1565; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = 48XVW22RCG; @@ -1580,7 +1580,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMask.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1559; + CURRENT_PROJECT_VERSION = 1565; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 48XVW22RCG; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 48XVW22RCG; @@ -1739,7 +1739,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMaskDebug.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1559; + CURRENT_PROJECT_VERSION = 1565; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = 48XVW22RCG; @@ -1808,7 +1808,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMask.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1559; + CURRENT_PROJECT_VERSION = 1565; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 48XVW22RCG; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 48XVW22RCG; From 36718333868a061827ec63819302c2229e817613 Mon Sep 17 00:00:00 2001 From: Vince Howard Date: Fri, 14 Feb 2025 17:00:49 -0700 Subject: [PATCH 013/473] fix: additional app icons and remove tint fields (#13543) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## **Description** - Added additional app icons - Removed unused tint fields in `Contents.json` - Updated `info.plist` ## **Related issues** Fixes: ## **Manual testing steps** 1. Go to this page... 2. 3. ## **Screenshots/Recordings** ### **Before** NA ### **After** NA ## **Pre-merge author checklist** - [x] I’ve followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile Coding Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [x] I've completed the PR template to the best of my ability - [x] I’ve included tests if applicable - [x] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [x] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. ## **Pre-merge reviewer checklist** - [x] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [x] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots. --- .../AppIcon.appiconset/120 2.png | Bin 11876 -> 11874 bytes .../AppIcon.appiconset/120 3.png | Bin 11876 -> 11874 bytes .../AppIcon.appiconset/128 1.png | Bin 0 -> 2747 bytes .../AppIcon.appiconset/128.png | Bin 0 -> 2279 bytes .../AppIcon.appiconset/136 1.png | Bin 0 -> 2566 bytes .../AppIcon.appiconset/136.png | Bin 0 -> 2519 bytes .../AppIcon.appiconset/192 1.png | Bin 0 -> 3933 bytes .../AppIcon.appiconset/192.png | Bin 0 -> 3193 bytes .../AppIcon.appiconset/Contents.json | 197 +----------------- ios/MetaMask/Info.plist | 15 +- 10 files changed, 20 insertions(+), 192 deletions(-) create mode 100644 ios/MetaMask/Images.xcassets/AppIcon.appiconset/128 1.png create mode 100644 ios/MetaMask/Images.xcassets/AppIcon.appiconset/128.png create mode 100644 ios/MetaMask/Images.xcassets/AppIcon.appiconset/136 1.png create mode 100644 ios/MetaMask/Images.xcassets/AppIcon.appiconset/136.png create mode 100644 ios/MetaMask/Images.xcassets/AppIcon.appiconset/192 1.png create mode 100644 ios/MetaMask/Images.xcassets/AppIcon.appiconset/192.png diff --git a/ios/MetaMask/Images.xcassets/AppIcon.appiconset/120 2.png b/ios/MetaMask/Images.xcassets/AppIcon.appiconset/120 2.png index 6c5d5f5b7f3465e6576e3600991871e041d70a78..af02c387e35c407377d06c820955d19eba076037 100644 GIT binary patch literal 11874 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 literal 11876 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 literal 11876 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 eP7vJs`u_kx^AGJn>KAC0001=P)t-sW*7h$ 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 B@#X*k literal 0 HcmV?d00001 diff --git a/ios/MetaMask/Images.xcassets/AppIcon.appiconset/128.png b/ios/MetaMask/Images.xcassets/AppIcon.appiconset/128.png new file mode 100644 index 0000000000000000000000000000000000000000..338e0c546abfc13b02d827fd7841dcc3bcb32e22 GIT binary patch literal 2279 zcmVC0001}P)t-s|BYQ{ z7y$qO|Kmsp|6CUTj$ULI0O;)Z{#q2{Mg+md&h~Xb=1K{5A_xA8TKj7*|93t7?dSgc z`~PAe>r)fxdroZ}1N*|O>Ru%N)54f82mF3W`mK)r_xAGg_4!y7$3hI`PZ9ltPlYA~ z{)bim-_o!-3;Usa)=3YFLMqzAyxD3#&(qxH)X?kWWKS000O2NklTQ@MS$${dmP-` zd@%Xm4HN+mAEVq{-`D>7l#hA`MS!DjjdDM|V;lylpN}m4s0i?Gl>|mIp54j&M?A8JGjC7$o>>p z2PA>UPl5WDX-#1KBo4ES_i6hm3EpG?0hR*QEe(MkYLlON-!SG=os`jD>VYG53-ZDI z@;GX7XuJ>D2a-S&r$8kQfkGTw?;~KwzOH`;5`e*u1;7YwLmY?J`{?;MtS0N@O#(or zz(qE#4@7amypJvf>;p+a1N;NoCkc3Qn2q~}%s!h06hQC=1L&JpHL~JO0KvSEWHW*R z=p@h-QlN4jPGA@dQ=`OO;h!5hY@ba63Si&Ubp?WOr7^M!73{M~pedz5b!UzNcr1Vy z;`X_E=p@k8Qh+3|eE>l7RqUfAmV67)^hzS&o?k3x{$n1nci0HEkeR0xxhvl24|2?S8>Ld8<1KwO5II0n}y z4Fp&y*w^)4cGF%!5iCG}kZb_q+utRd(Y~iZ04;>&QYg1C-wm^!REM>Up>;^};;H;z z=47A&M`M{1JqH1_T$kRfe@R=i{YYlNw=uvFcwsJ$pF&eQki|fhgvC?>@bM-;mP=P%HjNVft!0H80k^l3yi zy=)m&dr>RVlyw5#jR^*o%-WOB3H4AJB;*w~yDC95D$c0ZB1E4S1|@xNL(~ddl}J6x zquSte)Wc-CnbW#$whm37zQ~y8xSHOGYQ_ZL7oCoJSo9 zW#EyYJ2e3X040GYOMx1Iw%;kpGB6hfbwNcyXUcY_06?Wc1;E(vxLpz;aj6R`AJ8E% zRmSxbHosZ>oel-iWv@U4%$_w-0H9I;0bK37`LvQv`G7tN;FlL{>d*7q8%|*}0I3`R zt-~}xV}DuiYNH&zim4(%Z@u&`yWWMM6EOg660qk2W~cYMeq11xdGpoJ2EB?r@>o_n z;JWem5TRSdewW!X*wvT;m;ep8>8%n!Mm>&Y)$N%>m%$2o$*BQL7fmC-yYNh)c^^vw zQuy45Acn8syJZD2LOyo!-M~x=6roXNytn&)9U|i2!!PC;>Jy?x{2b=UeFZAEUP zh)yQ~HL6XCewY+$BIRHJ-44~D@U@s*(X@Q9=<;P{lG|TfhbSOK3Ysf{nq(~kcy&5F zal?d6L#z&Ca$#PCE>}$_9*A<_BmkI)eWLQ(?Z}IWMWG+sd;sSxPC{1zfR0)#Eb*e| zsaFw}4=Z#=69J6H>p<*?0E}>frQtR4%_MFYfkk;n6ad6)A;9b`1~9_*VBWnxw%Kj+ z(Mzfm8Xv$J&cu5`+7Sb^VK5inrXnuBFultmMgXvt?S_#I!0;E>r@fYT;$4ugM|3_w zF_HBHT}K9BU&3GxUoSGO9gs8!WG;a7DxH>Zr2yrD!!wcnW-vTO1daQ}04I4*SSSG4 z{=!_eQ*CRvXx%RaaOFKAw-9jv6ozC+d=r!qU!C&+oOmEVn4Dz*=CB{K0;6);l(Dza3K3H#)G6uFCQJ zDRltr#cS>OR+X+hF8DZu5_}<8o`~*GcV6q)X z9SWjQ8`0p4q2svmIbB~o7i74ZzkeDb9FScyeYQ@|v5PSPMF`IcuU$#)_yJxyI06TN zxO`9t0=07+D84i%${C9v~ z{KF!{;9tdZ4S5>)8$kd7002ovPDHLkV1hl$ BASM6+ literal 0 HcmV?d00001 diff --git a/ios/MetaMask/Images.xcassets/AppIcon.appiconset/136 1.png b/ios/MetaMask/Images.xcassets/AppIcon.appiconset/136 1.png new file mode 100644 index 0000000000000000000000000000000000000000..c0af3dc57fc3091db4e34af74777eb712384ffd9 GIT binary patch literal 2566 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 literal 0 HcmV?d00001 diff --git a/ios/MetaMask/Images.xcassets/AppIcon.appiconset/136.png b/ios/MetaMask/Images.xcassets/AppIcon.appiconset/136.png new file mode 100644 index 0000000000000000000000000000000000000000..9bbb94655fe2ee92dc50e11222cce40fee588a8e GIT binary patch literal 2519 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 Xsb1AzN`X5^zXWjE6l+2?@{ao-_^08z literal 0 HcmV?d00001 diff --git a/ios/MetaMask/Images.xcassets/AppIcon.appiconset/Contents.json b/ios/MetaMask/Images.xcassets/AppIcon.appiconset/Contents.json index 71fa0a04a813..78ef9e8a34fa 100644 --- a/ios/MetaMask/Images.xcassets/AppIcon.appiconset/Contents.json +++ b/ios/MetaMask/Images.xcassets/AppIcon.appiconset/Contents.json @@ -71,18 +71,21 @@ "size" : "60x60" }, { + "filename" : "128.png", "idiom" : "universal", "platform" : "ios", "scale" : "2x", "size" : "64x64" }, { + "filename" : "192.png", "idiom" : "universal", "platform" : "ios", "scale" : "3x", "size" : "64x64" }, { + "filename" : "136.png", "idiom" : "universal", "platform" : "ios", "scale" : "2x", @@ -245,6 +248,7 @@ "value" : "dark" } ], + "filename" : "128 1.png", "idiom" : "universal", "platform" : "ios", "scale" : "2x", @@ -257,6 +261,7 @@ "value" : "dark" } ], + "filename" : "192 1.png", "idiom" : "universal", "platform" : "ios", "scale" : "3x", @@ -269,6 +274,7 @@ "value" : "dark" } ], + "filename" : "136 1.png", "idiom" : "universal", "platform" : "ios", "scale" : "2x", @@ -311,197 +317,6 @@ "idiom" : "universal", "platform" : "ios", "size" : "1024x1024" - }, - { - "appearances" : [ - { - "appearance" : "luminosity", - "value" : "tinted" - } - ], - "idiom" : "universal", - "platform" : "ios", - "scale" : "2x", - "size" : "20x20" - }, - { - "appearances" : [ - { - "appearance" : "luminosity", - "value" : "tinted" - } - ], - "idiom" : "universal", - "platform" : "ios", - "scale" : "3x", - "size" : "20x20" - }, - { - "appearances" : [ - { - "appearance" : "luminosity", - "value" : "tinted" - } - ], - "idiom" : "universal", - "platform" : "ios", - "scale" : "2x", - "size" : "29x29" - }, - { - "appearances" : [ - { - "appearance" : "luminosity", - "value" : "tinted" - } - ], - "idiom" : "universal", - "platform" : "ios", - "scale" : "3x", - "size" : "29x29" - }, - { - "appearances" : [ - { - "appearance" : "luminosity", - "value" : "tinted" - } - ], - "idiom" : "universal", - "platform" : "ios", - "scale" : "2x", - "size" : "38x38" - }, - { - "appearances" : [ - { - "appearance" : "luminosity", - "value" : "tinted" - } - ], - "idiom" : "universal", - "platform" : "ios", - "scale" : "3x", - "size" : "38x38" - }, - { - "appearances" : [ - { - "appearance" : "luminosity", - "value" : "tinted" - } - ], - "idiom" : "universal", - "platform" : "ios", - "scale" : "2x", - "size" : "40x40" - }, - { - "appearances" : [ - { - "appearance" : "luminosity", - "value" : "tinted" - } - ], - "idiom" : "universal", - "platform" : "ios", - "scale" : "3x", - "size" : "40x40" - }, - { - "appearances" : [ - { - "appearance" : "luminosity", - "value" : "tinted" - } - ], - "idiom" : "universal", - "platform" : "ios", - "scale" : "2x", - "size" : "60x60" - }, - { - "appearances" : [ - { - "appearance" : "luminosity", - "value" : "tinted" - } - ], - "idiom" : "universal", - "platform" : "ios", - "scale" : "3x", - "size" : "60x60" - }, - { - "appearances" : [ - { - "appearance" : "luminosity", - "value" : "tinted" - } - ], - "idiom" : "universal", - "platform" : "ios", - "scale" : "2x", - "size" : "64x64" - }, - { - "appearances" : [ - { - "appearance" : "luminosity", - "value" : "tinted" - } - ], - "idiom" : "universal", - "platform" : "ios", - "scale" : "3x", - "size" : "64x64" - }, - { - "appearances" : [ - { - "appearance" : "luminosity", - "value" : "tinted" - } - ], - "idiom" : "universal", - "platform" : "ios", - "scale" : "2x", - "size" : "68x68" - }, - { - "appearances" : [ - { - "appearance" : "luminosity", - "value" : "tinted" - } - ], - "idiom" : "universal", - "platform" : "ios", - "scale" : "2x", - "size" : "76x76" - }, - { - "appearances" : [ - { - "appearance" : "luminosity", - "value" : "tinted" - } - ], - "idiom" : "universal", - "platform" : "ios", - "scale" : "2x", - "size" : "83.5x83.5" - }, - { - "appearances" : [ - { - "appearance" : "luminosity", - "value" : "tinted" - } - ], - "idiom" : "universal", - "platform" : "ios", - "size" : "1024x1024" } ], "info" : { diff --git a/ios/MetaMask/Info.plist b/ios/MetaMask/Info.plist index 8bd529c44ea6..8f05f047e0fa 100644 --- a/ios/MetaMask/Info.plist +++ b/ios/MetaMask/Info.plist @@ -11,7 +11,20 @@ CFBundleExecutable $(EXECUTABLE_NAME) CFBundleIconName - AppIcon + AppIcon + CFBundleIcons + + CFBundlePrimaryIcon + + CFBundleIconFiles + + 120 + 180 + + CFBundleIconName + AppIcon + + CFBundleIdentifier $(PRODUCT_BUNDLE_IDENTIFIER) CFBundleInfoDictionaryVersion From a78b0fe326622dbf3e7067f9b1d8e6ee39132a5e Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 17 Feb 2025 19:41:58 +0200 Subject: [PATCH 014/473] chore: cherry-pick #13554 (#13561) This PR cherry-picks #13554 Co-authored-by: tommasini <46944231+tommasini@users.noreply.github.com> --- package.json | 4 ++-- yarn.lock | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package.json b/package.json index 92e927821795..7cbf3cadadaa 100644 --- a/package.json +++ b/package.json @@ -142,8 +142,8 @@ "express": "4.21.2", "nanoid": "^3.3.8", "undici": "5.28.5", - "**/@ethersproject/signing-key/elliptic": "^6.6.0", - "**/@walletconnect/utils/elliptic": "^6.6.0" + "**/@ethersproject/signing-key/elliptic": "^6.6.1", + "**/@walletconnect/utils/elliptic": "^6.6.1" }, "dependencies": { "@config-plugins/detox": "^8.0.0", diff --git a/yarn.lock b/yarn.lock index 66218e9ff86c..e6089c75ba9e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -15616,7 +15616,7 @@ electron-to-chromium@^1.5.41: resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.55.tgz#73684752aa2e1aa49cafb355a41386c6637e76a9" integrity sha512-6maZ2ASDOTBtjt9FhqYPRnbvKU5tjG0IN9SztUOWYw2AzNDNpKJYLJmlK0/En4Hs/aiWnB+JZ+gW19PIGszgKg== -elliptic@6.5.4, elliptic@6.5.7, elliptic@6.6.0, elliptic@^6.5.2, elliptic@^6.5.3, elliptic@^6.5.4, elliptic@^6.5.7, elliptic@^6.6.0: +elliptic@6.5.4, elliptic@6.5.7, elliptic@6.6.0, elliptic@^6.5.2, elliptic@^6.5.3, elliptic@^6.5.4, elliptic@^6.5.7, elliptic@^6.6.1: version "6.6.1" resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.6.1.tgz#3b8ffb02670bf69e382c7f65bf524c97c5405c06" integrity sha512-RaddvvMatK2LJHqFJ+YA4WysVN5Ita9E35botqIYspQ4TkRAlCicdzKOjlyv/1Za5RyTNn7di//eEV0uTAfe3g== From 75bf84e706e70d0b212352c6475ac62b25769bb7 Mon Sep 17 00:00:00 2001 From: metamaskbot Date: Tue, 18 Feb 2025 10:40:56 -0700 Subject: [PATCH 015/473] reformat changelog --- CHANGELOG.md | 35 +++++------------------------------ 1 file changed, 5 insertions(+), 30 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d49565ac274b..ca512519f677 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,40 +9,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [7.41.0] -### Uncategorized +### Added -- bump semvar version to 7.41.0 && build version to 1557 -- bump semvar version to 7.41.0 && build version to 1554 -- fix(13491): update wallet creation flow styles ([#13501](https://github.com/MetaMask/metamask-mobile/pull/13501)) -- chore: UI improvements ([#13463](https://github.com/MetaMask/metamask-mobile/pull/13463)) -- fix(action): handle edge case of issue that can't be accessed by access token ([#13442](https://github.com/MetaMask/metamask-mobile/pull/13442)) -- chore: bump `@metamask/base-controller` to `^8.0.0` ([#13460](https://github.com/MetaMask/metamask-mobile/pull/13460)) -- chore: main stable sync 7.39.0 ([#13451](https://github.com/MetaMask/metamask-mobile/pull/13451)) -- chore: Rename ControllerMessenger to Messenger ([#13302](https://github.com/MetaMask/metamask-mobile/pull/13302)) -- fix(action): indicate working directory (again) ([#13425](https://github.com/MetaMask/metamask-mobile/pull/13425)) -- chore(deps): bump `elliptic` to `^6.6.0` ([#12979](https://github.com/MetaMask/metamask-mobile/pull/12979)) -- fix(action): indicate working directory ([#13419](https://github.com/MetaMask/metamask-mobile/pull/13419)) -- test(ramp): MMQA-195: add on-ramp e2e test cases ([#13265](https://github.com/MetaMask/metamask-mobile/pull/13265)) - feat(action): Improve bug report creation ([#13397](https://github.com/MetaMask/metamask-mobile/pull/13397)) -- chore: Fix lint warnings output by `yarn lint:fix` ([#13400](https://github.com/MetaMask/metamask-mobile/pull/13400)) -- chore(ramp): upgrades ramp-sdk to 2.0.5 ([#13379](https://github.com/MetaMask/metamask-mobile/pull/13379)) -- build: add SENTRY_DEBUG_DEV ENV to turn off Sentry Logger ([#13407](https://github.com/MetaMask/metamask-mobile/pull/13407)) - feat(ramp): sorts ramp quotes by price ([#13339](https://github.com/MetaMask/metamask-mobile/pull/13339)) - feat(ramps): updates useQuotes interface to include some quotes metadata ([#13335](https://github.com/MetaMask/metamask-mobile/pull/13335)) -- chore: adding e2e for SIWE signatures ([#13353](https://github.com/MetaMask/metamask-mobile/pull/13353)) -- chore: cleanup and deduplicate notification types and constants ([#13381](https://github.com/MetaMask/metamask-mobile/pull/13381)) -- test: Add Stake e2e automation ([#13180](https://github.com/MetaMask/metamask-mobile/pull/13180)) -- chore(3663): removing the isMultichainVersion1Enabled feature flag, and corresponding dead code ([#12831](https://github.com/MetaMask/metamask-mobile/pull/12831)) -- chore(ramp): upgrade ramp-sdk to @2.0.4 ([#13318](https://github.com/MetaMask/metamask-mobile/pull/13318)) -- refactor: utils/signature and deprecate utils/signatures ([#13347](https://github.com/MetaMask/metamask-mobile/pull/13347)) -- chore: Bump selected-network-controller to v21 ([#13109](https://github.com/MetaMask/metamask-mobile/pull/13109)) -- chore: Revert "fix: SIWE detection on mobile by patching @spruceid+siwe" ([#13333](https://github.com/MetaMask/metamask-mobile/pull/13333)) -- chore: change cicd to commit ref hash ([#13303](https://github.com/MetaMask/metamask-mobile/pull/13303)) -- chore: move metrics identify to state listener ([#13203](https://github.com/MetaMask/metamask-mobile/pull/13203)) -- test: Add e2e for app restart after adding contact address ([#13273](https://github.com/MetaMask/metamask-mobile/pull/13273)) - -### Added - - feat: Add gas included swaps ([#13430](https://github.com/MetaMask/metamask-mobile/pull/13430)) - feat: remove unused package ([#13395](https://github.com/MetaMask/metamask-mobile/pull/13395)) - feat: Implement staking deposit `TokenHero` component ([#13418](https://github.com/MetaMask/metamask-mobile/pull/13418)) @@ -65,6 +36,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Fixed - fix: typed sign message display in dark mode ([#13479](https://github.com/MetaMask/metamask-mobile/pull/13479)) +- fix(13491): update wallet creation flow styles ([#13501](https://github.com/MetaMask/metamask-mobile/pull/13501)) +- fix(action): indicate working directory ([#13419](https://github.com/MetaMask/metamask-mobile/pull/13419)) +- fix(action): handle edge case of issue that can't be accessed by access token ([#13442](https://github.com/MetaMask/metamask-mobile/pull/13442)) +- fix(action): indicate working directory (again) ([#13425](https://github.com/MetaMask/metamask-mobile/pull/13425)) - fix: simulation Fiat precision and Fiat flickers different value before decimals are applied ([#13371](https://github.com/MetaMask/metamask-mobile/pull/13371)) - fix: Permit Simulation loader and value modal UI/UX ([#13398](https://github.com/MetaMask/metamask-mobile/pull/13398)) - fix: Fix missing `networkClientId` on estimating gas ([#13466](https://github.com/MetaMask/metamask-mobile/pull/13466)) From 171a2bed2b9c2a3ab82a8631651d162ecbb6bab5 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 18 Feb 2025 21:23:16 +0200 Subject: [PATCH 016/473] chore: cherry-pick #13514 (test: remove old permission system test) (#13587) This PR cherry-picks #13514 Co-authored-by: Curtis David --- bitrise.yml | 2 - ...-system-revoking-multiple-accounts.spec.js | 71 ------------------- 2 files changed, 73 deletions(-) delete mode 100644 e2e/specs/permission-systems/permission-system-revoking-multiple-accounts.spec.js diff --git a/bitrise.yml b/bitrise.yml index 723dd99a437a..e8b4e70d615a 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -503,8 +503,6 @@ workflows: ios_build_regression_tests: envs: - TEST_SUITE: 'Regression' - - MM_MULTICHAIN_V1_ENABLED: false - - MM_CHAIN_PERMISSIONS: false after_run: - ios_e2e_build ios_run_regression_tests: diff --git a/e2e/specs/permission-systems/permission-system-revoking-multiple-accounts.spec.js b/e2e/specs/permission-systems/permission-system-revoking-multiple-accounts.spec.js deleted file mode 100644 index ffc7834d0a70..000000000000 --- a/e2e/specs/permission-systems/permission-system-revoking-multiple-accounts.spec.js +++ /dev/null @@ -1,71 +0,0 @@ -'use strict'; -import TestHelpers from '../../helpers'; -import Browser from '../../pages/Browser/BrowserView'; -import AccountListBottomSheet from '../../pages/wallet/AccountListBottomSheet'; -import TabBarComponent from '../../pages/wallet/TabBarComponent'; -import ToastModal from '../../pages/wallet/ToastModal'; -import ConnectedAccountsModal from '../../pages/Browser/ConnectedAccountsModal'; -import NetworkListModal from '../../pages/Network/NetworkListModal'; -import AddAccountBottomSheet from '../../pages/wallet/AddAccountBottomSheet'; -import { loginToApp } from '../../viewHelper'; -import FixtureBuilder from '../../fixtures/fixture-builder'; -import { withFixtures } from '../../fixtures/fixture-helper'; -import Assertions from '../../utils/Assertions'; -import { Regression } from '../../tags'; - -const AccountTwoText = 'Account 2'; - -describe(Regression('Permission System:'), () => { - beforeAll(async () => { - jest.setTimeout(150000); - await TestHelpers.reverseServerPort(); - }); - - it('should connect multiple accounts and revoke them', async () => { - await withFixtures( - { - dapp: true, - fixture: new FixtureBuilder() - .withPermissionControllerConnectedToTestDapp() - .build(), - restartDevice: true, - }, - async () => { - //should navigate to browser - await loginToApp(); - await TabBarComponent.tapBrowser(); - await Assertions.checkIfVisible(Browser.browserScreenID); - - //TODO: should re add connecting to an external swap step after detox has been updated - - await Browser.navigateToTestDApp(); - await Browser.tapNetworkAvatarButtonOnBrowser(); - await Assertions.checkIfVisible(ConnectedAccountsModal.title); - await TestHelpers.delay(2000); - - await Assertions.checkIfNotVisible(ToastModal.notificationTitle); - await ConnectedAccountsModal.tapConnectMoreAccountsButton(); - await AccountListBottomSheet.tapAddAccountButton(); - await AddAccountBottomSheet.tapCreateAccount(); - if (device.getPlatform() === 'android') { - await Assertions.checkIfTextIsDisplayed(AccountTwoText); - } - await AccountListBottomSheet.tapAccountIndex(0); - await AccountListBottomSheet.tapConnectAccountsButton(); - - // should revoke accounts - await Browser.tapNetworkAvatarButtonOnBrowser(); - await ConnectedAccountsModal.tapPermissionsButton(); - await TestHelpers.delay(1500); - await ConnectedAccountsModal.tapDisconnectAllButton(); - await Assertions.checkIfNotVisible(ToastModal.notificationTitle); - - await Browser.tapNetworkAvatarButtonOnBrowser(); - await Assertions.checkIfNotVisible(ConnectedAccountsModal.title); - await Assertions.checkIfVisible(NetworkListModal.networkScroll); - await NetworkListModal.swipeToDismissModal(); - await Assertions.checkIfNotVisible(NetworkListModal.networkScroll); - }, - ); - }); -}); From 228e190f6801a85a82ee82c36e824d23373efc27 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 18 Feb 2025 21:23:29 +0200 Subject: [PATCH 017/473] chore: cherry-pick #13509 (test: Fixed swap chart test and remove bug workarounds) (#13586) This PR cherry-picks #13509 Co-authored-by: Davide Brocchetto --- .../swaps/swap-action-regression.spec.js | 26 ++++--------------- e2e/specs/swaps/swap-action-smoke.spec.js | 26 ++++--------------- e2e/specs/swaps/swap-token-chart.spec.js | 5 ++-- 3 files changed, 13 insertions(+), 44 deletions(-) diff --git a/e2e/specs/swaps/swap-action-regression.spec.js b/e2e/specs/swaps/swap-action-regression.spec.js index c8c5b9cb822f..35248e4204b6 100644 --- a/e2e/specs/swaps/swap-action-regression.spec.js +++ b/e2e/specs/swaps/swap-action-regression.spec.js @@ -25,6 +25,7 @@ import ImportAccountView from '../../pages/importAccount/ImportAccountView'; import SuccessImportAccountView from '../../pages/importAccount/SuccessImportAccountView'; import Assertions from '../../utils/Assertions'; import AddAccountBottomSheet from '../../pages/wallet/AddAccountBottomSheet'; +import { ActivitiesViewSelectorsText } from '../../selectors/Transactions/ActivitiesView.selectors'; import Tenderly from '../../tenderly'; @@ -32,7 +33,8 @@ const fixtureServer = new FixtureServer(); const firstElement = 0; describe(Regression('Multiple Swaps from Actions'), () => { - let educationModalTapped = false; + const FIRST_ROW = 0; + const SECOND_ROW = 1; let currentNetwork = CustomNetworks.Tenderly.Mainnet.providerConfig.nickname; const wallet = ethers.Wallet.createRandom(); @@ -154,32 +156,14 @@ describe(Regression('Multiple Swaps from Actions'), () => { await Assertions.checkIfVisible( ActivitiesView.swapActivityTitle(sourceTokenSymbol, destTokenSymbol), ); - // TODO: Commenting this out until Tenderly issue is resolved - //await Assertions.checkIfElementToHaveText(ActivitiesView.firstTransactionStatus, ActivitiesViewSelectorsText.CONFIRM_TEXT, 60000); + await Assertions.checkIfElementToHaveText(ActivitiesView.transactionStatus(FIRST_ROW), ActivitiesViewSelectorsText.CONFIRM_TEXT, 120000); // Check the token approval completed if (type === 'unapproved') { await Assertions.checkIfVisible( ActivitiesView.tokenApprovalActivity(sourceTokenSymbol), ); - // TODO: Commenting this out until Tenderly issue is resolved - //await Assertions.checkIfElementToHaveText(ActivitiesView.secondTransactionStatus, ActivitiesViewSelectorsText.CONFIRM_TEXT, 60000); - } - - // TODO: The following hack is needed to update the token balance until bug 13187 is fixed - await TabBarComponent.tapWallet(); - await WalletView.tapNetworksButtonOnNavBar(); - await NetworkListModal.changeNetworkTo('Localhost', false); - if (!educationModalTapped) { - await NetworkEducationModal.tapGotItButton(); - } - await NetworkListModal.changeNetworkTo( - network.providerConfig.nickname, - false, - ); - if (!educationModalTapped) { - await NetworkEducationModal.tapGotItButton(); - educationModalTapped = true; + await Assertions.checkIfElementToHaveText(ActivitiesView.transactionStatus(SECOND_ROW), ActivitiesViewSelectorsText.CONFIRM_TEXT, 120000); } }, ); diff --git a/e2e/specs/swaps/swap-action-smoke.spec.js b/e2e/specs/swaps/swap-action-smoke.spec.js index 61adf08667ab..41f7808e667c 100644 --- a/e2e/specs/swaps/swap-action-smoke.spec.js +++ b/e2e/specs/swaps/swap-action-smoke.spec.js @@ -26,12 +26,14 @@ import SuccessImportAccountView from '../../pages/importAccount/SuccessImportAcc import Assertions from '../../utils/Assertions.js'; import AddAccountBottomSheet from '../../pages/wallet/AddAccountBottomSheet.js'; import ActivitiesView from '../../pages/Transactions/ActivitiesView.js'; +import { ActivitiesViewSelectorsText } from '../../selectors/Transactions/ActivitiesView.selectors'; const fixtureServer = new FixtureServer(); const firstElement = 0; describe(SmokeSwaps('Swap from Actions'), () => { - let educationModalTapped = false; + const FIRST_ROW = 0; + const SECOND_ROW = 1; let currentNetwork = CustomNetworks.Tenderly.Mainnet.providerConfig.nickname; const wallet = ethers.Wallet.createRandom(); @@ -157,32 +159,14 @@ describe(SmokeSwaps('Swap from Actions'), () => { await Assertions.checkIfVisible( ActivitiesView.swapActivityTitle(sourceTokenSymbol, destTokenSymbol), ); - // TODO: Commenting this out until Tenderly issue is resolved - //await Assertions.checkIfElementToHaveText(ActivitiesView.firstTransactionStatus, ActivitiesViewSelectorsText.CONFIRM_TEXT, 60000); + await Assertions.checkIfElementToHaveText(ActivitiesView.transactionStatus(FIRST_ROW), ActivitiesViewSelectorsText.CONFIRM_TEXT, 120000); // Check the token approval completed if (type === 'unapproved') { await Assertions.checkIfVisible( ActivitiesView.tokenApprovalActivity(sourceTokenSymbol), ); - // TODO: Commenting this out until Tenderly issue is resolved - //await Assertions.checkIfElementToHaveText(ActivitiesView.secondTransactionStatus, ActivitiesViewSelectorsText.CONFIRM_TEXT, 60000); - } - - // TODO: The following hack is needed to update the token balance until bug 13187 is fixed - await TabBarComponent.tapWallet(); - await WalletView.tapNetworksButtonOnNavBar(); - await NetworkListModal.changeNetworkTo('Localhost', false); - if (!educationModalTapped) { - await NetworkEducationModal.tapGotItButton(); - } - await NetworkListModal.changeNetworkTo( - network.providerConfig.nickname, - false, - ); - if (!educationModalTapped) { - await NetworkEducationModal.tapGotItButton(); - educationModalTapped = true; + await Assertions.checkIfElementToHaveText(ActivitiesView.transactionStatus(SECOND_ROW), ActivitiesViewSelectorsText.CONFIRM_TEXT, 120000); } }, ); diff --git a/e2e/specs/swaps/swap-token-chart.spec.js b/e2e/specs/swaps/swap-token-chart.spec.js index 8e969a40be68..2c45e7c7777b 100644 --- a/e2e/specs/swaps/swap-token-chart.spec.js +++ b/e2e/specs/swaps/swap-token-chart.spec.js @@ -30,6 +30,7 @@ import Tenderly from '../../tenderly'; const fixtureServer = new FixtureServer(); describe(Regression('Swap from Token view'), () => { + const FIRST_ROW = 0; const swapOnboarded = true; // TODO: Set it to false once we show the onboarding page again. const wallet = ethers.Wallet.createRandom(); @@ -119,9 +120,9 @@ describe(Regression('Swap from Token view'), () => { ActivitiesView.swapActivityTitle(sourceTokenSymbol, destTokenSymbol), ); await Assertions.checkIfElementToHaveText( - ActivitiesView.firstTransactionStatus, + ActivitiesView.transactionStatus(FIRST_ROW), ActivitiesViewSelectorsText.CONFIRM_TEXT, - 60000, + 120000, ); }); }); From 510f83782020d01ee8aa02e2ac871fe0ebc33d24 Mon Sep 17 00:00:00 2001 From: metamaskbot Date: Tue, 18 Feb 2025 22:51:12 +0000 Subject: [PATCH 018/473] Bump version number to 1569 --- android/app/build.gradle | 2 +- bitrise.yml | 4 ++-- ios/MetaMask.xcodeproj/project.pbxproj | 12 ++++++------ 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/android/app/build.gradle b/android/app/build.gradle index d4558f4a070c..f2afb7c171f5 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -179,7 +179,7 @@ android { minSdkVersion rootProject.ext.minSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion versionName "7.41.0" - versionCode 1565 + versionCode 1569 testBuildType System.getProperty('testBuildType', 'debug') missingDimensionStrategy 'react-native-camera', 'general' testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" diff --git a/bitrise.yml b/bitrise.yml index e8b4e70d615a..9316462916d8 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -1828,13 +1828,13 @@ app: VERSION_NAME: 7.41.0 - opts: is_expand: false - VERSION_NUMBER: 1565 + VERSION_NUMBER: 1569 - opts: is_expand: false FLASK_VERSION_NAME: 7.41.0 - opts: is_expand: false - FLASK_VERSION_NUMBER: 1565 + FLASK_VERSION_NUMBER: 1569 - opts: is_expand: false ANDROID_APK_LINK: '' diff --git a/ios/MetaMask.xcodeproj/project.pbxproj b/ios/MetaMask.xcodeproj/project.pbxproj index 5f8a1863ff54..44f8476c9e35 100644 --- a/ios/MetaMask.xcodeproj/project.pbxproj +++ b/ios/MetaMask.xcodeproj/project.pbxproj @@ -1380,7 +1380,7 @@ CODE_SIGN_IDENTITY = "Apple Development"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1565; + CURRENT_PROJECT_VERSION = 1569; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = 48XVW22RCG; @@ -1449,7 +1449,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMask.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1565; + CURRENT_PROJECT_VERSION = 1569; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 48XVW22RCG; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 48XVW22RCG; @@ -1514,7 +1514,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMaskDebug.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1565; + CURRENT_PROJECT_VERSION = 1569; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = 48XVW22RCG; @@ -1580,7 +1580,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMask.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1565; + CURRENT_PROJECT_VERSION = 1569; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 48XVW22RCG; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 48XVW22RCG; @@ -1739,7 +1739,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMaskDebug.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1565; + CURRENT_PROJECT_VERSION = 1569; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = 48XVW22RCG; @@ -1808,7 +1808,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMask.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1565; + CURRENT_PROJECT_VERSION = 1569; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 48XVW22RCG; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 48XVW22RCG; From e54b55cd8c269929c917abcfaad975096acf1462 Mon Sep 17 00:00:00 2001 From: Matthew Grainger <46547583+Matt561@users.noreply.github.com> Date: Wed, 19 Feb 2025 17:39:43 -0500 Subject: [PATCH 019/473] chore: cherry-pick #13594 (feat: STAKE-934: integrate earn controller package into existing pooled staking hooks) (#13612) This PR cherry-picks https://github.com/MetaMask/metamask-mobile/pull/13594 --- .../UI/AssetOverview/Balance/index.test.tsx | 13 +++---- .../StakeConfirmationView.test.tsx | 10 ++--- .../StakeConfirmationView.test.tsx.snap | 10 ++--- .../StakeInputView/StakeInputView.test.tsx | 25 +++++-------- .../Views/StakeInputView/StakeInputView.tsx | 5 +-- .../StakeInputView.test.tsx.snap | 2 +- .../PoolStakingLearnMoreModal.test.tsx.snap | 2 +- .../PoolStakingLearnMoreModal/index.tsx | 23 +++++++++--- .../StakingBalance/StakingBalance.tsx | 16 +++++--- .../components/StakingEarnings/index.tsx | 15 ++++---- app/components/UI/Stake/constants/events.ts | 1 + app/components/UI/Stake/constants/index.ts | 9 +++++ .../Stake/hooks/useStakingEarnings.test.tsx | 37 ++++++++++--------- .../UI/Stake/hooks/useStakingEarnings.ts | 25 ++++++++++--- .../UI/Stake/hooks/useStakingInput.ts | 25 +++++++++++-- .../Stake/hooks/useVaultApyAverages.test.tsx | 5 ++- .../UI/Stake/hooks/useVaultApyAverages.tsx | 6 ++- app/core/redux/slices/staking/index.test.ts | 4 +- app/core/redux/slices/staking/index.ts | 3 +- 19 files changed, 147 insertions(+), 89 deletions(-) diff --git a/app/components/UI/AssetOverview/Balance/index.test.tsx b/app/components/UI/AssetOverview/Balance/index.test.tsx index 724b02bc1a43..93e4a3b7571d 100644 --- a/app/components/UI/AssetOverview/Balance/index.test.tsx +++ b/app/components/UI/AssetOverview/Balance/index.test.tsx @@ -9,6 +9,7 @@ import configureMockStore from 'redux-mock-store'; import { backgroundState } from '../../../../util/test/initial-root-state'; import { NetworkBadgeSource } from './Balance'; import { isPortfolioViewEnabled } from '../../../../util/networks'; +import { MOCK_VAULT_APY_AVERAGES } from '../../Stake/components/PoolStakingLearnMoreModal/mockVaultRewards'; jest.mock('react-redux', () => ({ ...jest.requireActual('react-redux'), @@ -100,16 +101,12 @@ jest.mock('../../Stake/hooks/usePooledStakes', () => ({ }), })); -jest.mock('../../Stake/hooks/useVaultData', () => ({ +jest.mock('../../Stake/hooks/useVaultApyAverages', () => ({ __esModule: true, default: () => ({ - vaultData: { - apy: '2.437033146840025387168141592920355', - capacity: '1000000000000000000000000000000000000000000000000000000000000', - feePercent: 1500, - totalAssets: '10000000000000000000000', - vaultAddress: '0xdef', - }, + vaultApyAverages: MOCK_VAULT_APY_AVERAGES, + isLoadingVaultApyAverages: false, + refreshVaultApyAverages: jest.fn(), }), })); diff --git a/app/components/UI/Stake/Views/StakeConfirmationView/StakeConfirmationView.test.tsx b/app/components/UI/Stake/Views/StakeConfirmationView/StakeConfirmationView.test.tsx index 90bdb658e9a4..4e5f5d4ced91 100644 --- a/app/components/UI/Stake/Views/StakeConfirmationView/StakeConfirmationView.test.tsx +++ b/app/components/UI/Stake/Views/StakeConfirmationView/StakeConfirmationView.test.tsx @@ -79,11 +79,11 @@ describe('StakeConfirmationView', () => { route: { key: '1', params: { - amountWei: '3210000000000000', - amountFiat: '7.46', - annualRewardRate: '2.5%', - annualRewardsETH: '2.5 ETH', - annualRewardsFiat: '$5000', + amountWei: '10000000000000000', + amountFiat: '26.21', + annualRewardRate: '2.6%', + annualRewardsETH: '0.00026 ETH', + annualRewardsFiat: '$0.68', }, name: 'params', }, diff --git a/app/components/UI/Stake/Views/StakeConfirmationView/__snapshots__/StakeConfirmationView.test.tsx.snap b/app/components/UI/Stake/Views/StakeConfirmationView/__snapshots__/StakeConfirmationView.test.tsx.snap index 151de9e62520..6c10cd8d2816 100644 --- a/app/components/UI/Stake/Views/StakeConfirmationView/__snapshots__/StakeConfirmationView.test.tsx.snap +++ b/app/components/UI/Stake/Views/StakeConfirmationView/__snapshots__/StakeConfirmationView.test.tsx.snap @@ -200,7 +200,7 @@ exports[`StakeConfirmationView render matches snapshot 1`] = ` } } > - 0.00321 + 0.01 ETH @@ -217,7 +217,7 @@ exports[`StakeConfirmationView render matches snapshot 1`] = ` } } > - $7.46 + $26.21 @@ -1113,7 +1113,7 @@ exports[`StakeConfirmationView render matches snapshot 1`] = ` } testID="label" > - 2.5% + 2.6% @@ -1224,7 +1224,7 @@ exports[`StakeConfirmationView render matches snapshot 1`] = ` } } > - $5000 + $0.68 - 2.5 ETH + 0.00026 ETH diff --git a/app/components/UI/Stake/Views/StakeInputView/StakeInputView.test.tsx b/app/components/UI/Stake/Views/StakeInputView/StakeInputView.test.tsx index 559c068e4273..be9395f59b0f 100644 --- a/app/components/UI/Stake/Views/StakeInputView/StakeInputView.test.tsx +++ b/app/components/UI/Stake/Views/StakeInputView/StakeInputView.test.tsx @@ -7,11 +7,11 @@ import { backgroundState } from '../../../../../util/test/initial-root-state'; import { Stake } from '../../sdk/stakeSdkProvider'; import { ChainId, PooledStakingContract } from '@metamask/stake-sdk'; import { Contract } from 'ethers'; -import { MOCK_GET_VAULT_RESPONSE } from '../../__mocks__/mockData'; import { toWei } from '../../../../../util/number'; import { strings } from '../../../../../../locales/i18n'; // eslint-disable-next-line import/no-namespace import * as useStakingGasFee from '../../hooks/useStakingGasFee'; +import { MOCK_VAULT_APY_AVERAGES } from '../../components/PoolStakingLearnMoreModal/mockVaultRewards'; function render(Component: React.ComponentType) { return renderScreen( @@ -123,9 +123,7 @@ jest.mock('../../hooks/useStakingGasFee', () => ({ }), })); -const mockVaultData = MOCK_GET_VAULT_RESPONSE; // Mock hooks - jest.mock('../../hooks/useStakingEligibility', () => ({ __esModule: true, default: () => ({ @@ -136,15 +134,12 @@ jest.mock('../../hooks/useStakingEligibility', () => ({ }), })); -jest.mock('../../hooks/useVaultData', () => ({ +jest.mock('../../hooks/useVaultApyAverages', () => ({ __esModule: true, default: () => ({ - vaultData: mockVaultData, - loading: false, - error: null, - refreshVaultData: jest.fn(), - annualRewardRate: '2.5%', - annualRewardRateDecimal: 0.025, + vaultApyAverages: MOCK_VAULT_APY_AVERAGES, + isLoadingVaultApyAverages: false, + refreshVaultApyAverages: jest.fn(), }), })); @@ -181,7 +176,7 @@ describe('StakeInputView', () => { fireEvent.press(screen.getByText('2')); - expect(screen.getByText('0.05 ETH')).toBeTruthy(); + expect(screen.getByText('0.06515 ETH')).toBeTruthy(); }); }); @@ -224,7 +219,7 @@ describe('StakeInputView', () => { }); }); - it('navigates to gas impact modal when gas cost is 30% or more of deposit amount', () => { + it('navigates to gas impact modal when gas cost is 30% or more of deposit amount', async () => { jest.spyOn(useStakingGasFee, 'default').mockReturnValue({ estimatedGasFeeWei: toWei('0.25'), isLoadingStakingGasFee: false, @@ -243,9 +238,9 @@ describe('StakeInputView', () => { params: { amountFiat: '750', amountWei: '375000000000000000', - annualRewardRate: '2.5%', - annualRewardsETH: '0.00938 ETH', - annualRewardsFiat: '18.75 USD', + annualRewardRate: '3.3%', + annualRewardsETH: '0.01222 ETH', + annualRewardsFiat: '24.43 USD', estimatedGasFee: '0.25', estimatedGasFeePercentage: '66%', }, diff --git a/app/components/UI/Stake/Views/StakeInputView/StakeInputView.tsx b/app/components/UI/Stake/Views/StakeInputView/StakeInputView.tsx index 2862f0c5f974..b3bc11c46430 100644 --- a/app/components/UI/Stake/Views/StakeInputView/StakeInputView.tsx +++ b/app/components/UI/Stake/Views/StakeInputView/StakeInputView.tsx @@ -40,7 +40,6 @@ const StakeInputView = () => { confirmationRedesignFlags?.staking_transactions; const activeAccount = useSelector(selectSelectedInternalAccount); - const { isEth, currentCurrency, @@ -59,7 +58,7 @@ const StakeInputView = () => { annualRewardsETH, annualRewardsFiat, annualRewardRate, - isLoadingVaultData, + isLoadingVaultApyAverages, handleMax, balanceValue, isHighGasCostImpact, @@ -229,7 +228,7 @@ const StakeInputView = () => { tooltip_name: 'MetaMask Pool Estimated Rewards', }, })} - isLoading={isLoadingVaultData} + isLoading={isLoadingVaultApyAverages} /> - 2.5% + 3.3% - 3.25% APR + 3.3% APR { const { styles } = useStyles(styleSheet, {}); @@ -172,14 +177,20 @@ const PoolStakingLearnMoreModal = () => { new BigNumber(point.daily_apy).toNumber()} - defaultTitle={`${new BigNumber( + defaultTitle={`${formatPercent( activeTimespanApyAverage.apyAverage, - ).toFixed(2, BigNumber.ROUND_DOWN)}% ${strings('stake.apr')}`} + { + inputFormat: CommonPercentageInputUnits.PERCENTAGE, + outputFormat: PercentageOutputFormat.PERCENT_SIGN, + fixed: 1, + }, + )} ${strings('stake.apr')}`} titleAccessor={(point) => - `${new BigNumber(point.daily_apy).toFixed( - 2, - BigNumber.ROUND_DOWN, - )}% ${strings('stake.apr')}` + `${formatPercent(point.daily_apy, { + inputFormat: CommonPercentageInputUnits.PERCENTAGE, + outputFormat: PercentageOutputFormat.PERCENT_SIGN, + fixed: 1, + })} ${strings('stake.apr')}` } defaultSubtitle={activeTimespanApyAverage.label} subtitleAccessor={(point) => formatChartDate(point.timestamp)} diff --git a/app/components/UI/Stake/components/StakingBalance/StakingBalance.tsx b/app/components/UI/Stake/components/StakingBalance/StakingBalance.tsx index 380424121cbe..65a4091f43a6 100644 --- a/app/components/UI/Stake/components/StakingBalance/StakingBalance.tsx +++ b/app/components/UI/Stake/components/StakingBalance/StakingBalance.tsx @@ -37,7 +37,6 @@ import StakingCta from './StakingCta/StakingCta'; import useStakingEligibility from '../../hooks/useStakingEligibility'; import { useStakingChainByChainId } from '../../hooks/useStakingChain'; import usePooledStakes from '../../hooks/usePooledStakes'; -import useVaultData from '../../hooks/useVaultData'; import { StakeSDKProvider } from '../../sdk/stakeSdkProvider'; import type { TokenI } from '../../../Tokens/types'; import useBalance from '../../hooks/useBalance'; @@ -49,6 +48,7 @@ import NetworkAssetLogo from '../../../NetworkAssetLogo'; import { isPortfolioViewEnabled } from '../../../../../util/networks'; import { selectNetworkConfigurationByChainId } from '../../../../../selectors/networkController'; import { RootState } from '../../../../../reducers'; +import useVaultApyAverages from '../../hooks/useVaultApyAverages'; export interface StakingBalanceProps { asset: TokenI; @@ -81,8 +81,8 @@ const StakingBalanceContent = ({ asset }: StakingBalanceProps) => { hasEthToUnstake, isLoadingPooledStakesData, } = usePooledStakes(); - const { vaultData } = useVaultData(); - const annualRewardRate = vaultData?.apy || ''; + + const { vaultApyAverages, isLoadingVaultApyAverages } = useVaultApyAverages(); const { formattedStakedBalanceETH: stakedBalanceETH, @@ -182,10 +182,10 @@ const StakingBalanceContent = ({ asset }: StakingBalanceProps) => { /> )} - {!hasStakedPositions && ( + {!hasStakedPositions && !isLoadingVaultApyAverages && ( { )} - + {strings('stake.staked_ethereum')} diff --git a/app/components/UI/Stake/components/StakingEarnings/index.tsx b/app/components/UI/Stake/components/StakingEarnings/index.tsx index b8b59efe3dc9..34e7a3c9c7b5 100644 --- a/app/components/UI/Stake/components/StakingEarnings/index.tsx +++ b/app/components/UI/Stake/components/StakingEarnings/index.tsx @@ -14,7 +14,6 @@ import { import ButtonIcon, { ButtonIconSizes, } from '../../../../../component-library/components/Buttons/ButtonIcon'; -import useTooltipModal from '../../../../../components/hooks/useTooltipModal'; import { strings } from '../../../../../../locales/i18n'; import { useStakingChainByChainId } from '../../hooks/useStakingChain'; import { StakeSDKProvider } from '../../sdk/stakeSdkProvider'; @@ -25,6 +24,9 @@ import { MetaMetricsEvents } from '../../../../hooks/useMetrics'; import { getTooltipMetricProperties } from '../../utils/metaMetrics/tooltipMetaMetricsUtils'; import { TokenI } from '../../../Tokens/types'; import StakingEarningsHistoryButton from './StakingEarningsHistoryButton/StakingEarningsHistoryButton'; +import { useNavigation } from '@react-navigation/native'; +import Routes from '../../../../../constants/navigation/Routes'; +import { EVENT_LOCATIONS } from '../../constants/events'; export interface StakingEarningsProps { asset: TokenI; @@ -33,7 +35,7 @@ export interface StakingEarningsProps { const StakingEarningsContent = ({ asset }: StakingEarningsProps) => { const { styles } = useStyles(styleSheet, {}); - const { openTooltipModal } = useTooltipModal(); + const { navigate } = useNavigation(); const { annualRewardRate, @@ -50,10 +52,9 @@ const StakingEarningsContent = ({ asset }: StakingEarningsProps) => { ); const onDisplayAnnualRateTooltip = () => - openTooltipModal( - strings('stake.annual_rate'), - strings('tooltip_modal.reward_rate.tooltip'), - ); + navigate('StakeModals', { + screen: Routes.STAKING.MODALS.LEARN_MORE, + }); if (!isStakingSupportedChain || !hasStakedPositions) return <>; @@ -83,7 +84,7 @@ const StakingEarningsContent = ({ asset }: StakingEarningsProps) => { onPress={withMetaMetrics(onDisplayAnnualRateTooltip, { event: MetaMetricsEvents.TOOLTIP_OPENED, properties: getTooltipMetricProperties( - 'Staking Earnings', + EVENT_LOCATIONS.STAKING_EARNINGS, 'Annual Rate', ), })} diff --git a/app/components/UI/Stake/constants/events.ts b/app/components/UI/Stake/constants/events.ts index 8d916bafdb18..052b76894931 100644 --- a/app/components/UI/Stake/constants/events.ts +++ b/app/components/UI/Stake/constants/events.ts @@ -10,6 +10,7 @@ export const EVENT_LOCATIONS = { TOKEN_DETAILS: 'TokenDetails', STAKE_INPUT_VIEW: 'StakeInputView', STAKE_CONFIRMATION_VIEW: 'StakeConfirmationView', + STAKING_EARNINGS: 'StakingEarnings', UNSTAKE_INPUT_VIEW: 'UnstakeInputView', UNSTAKE_CONFIRMATION_VIEW: 'UnstakeConfirmationView', UNIT_TEST: 'UnitTest', diff --git a/app/components/UI/Stake/constants/index.ts b/app/components/UI/Stake/constants/index.ts index c3d8b9b6d5a7..7031a4e70c31 100644 --- a/app/components/UI/Stake/constants/index.ts +++ b/app/components/UI/Stake/constants/index.ts @@ -3,3 +3,12 @@ export const isStablecoinLendingFeatureEnabled = () => export const POOLED_STAKING_FAQ_URL = 'https://support.metamask.io/metamask-portfolio/move-crypto/stake/staking-pool/'; + +export const DEFAULT_VAULT_APY_AVERAGES = { + oneDay: '0', + oneWeek: '0', + oneMonth: '0', + threeMonths: '0', + sixMonths: '0', + oneYear: '0', +}; diff --git a/app/components/UI/Stake/hooks/useStakingEarnings.test.tsx b/app/components/UI/Stake/hooks/useStakingEarnings.test.tsx index cbb95ee7702d..cd981dfb701b 100644 --- a/app/components/UI/Stake/hooks/useStakingEarnings.test.tsx +++ b/app/components/UI/Stake/hooks/useStakingEarnings.test.tsx @@ -2,13 +2,14 @@ import { waitFor } from '@testing-library/react-native'; import { renderHook } from '@testing-library/react-hooks'; import useStakingEarnings from './useStakingEarnings'; import usePooledStakes from './usePooledStakes'; -import useVaultData from './useVaultData'; import useBalance from './useBalance'; +import useVaultApyAverages from './useVaultApyAverages'; +import { MOCK_VAULT_APY_AVERAGES } from '../components/PoolStakingLearnMoreModal/mockVaultRewards'; // Mock dependencies jest.mock('./usePooledStakes'); -jest.mock('./useVaultData'); jest.mock('./useBalance'); +jest.mock('./useVaultApyAverages'); describe('useStakingEarnings', () => { afterEach(() => { @@ -16,11 +17,11 @@ describe('useStakingEarnings', () => { }); it('fetches and calculates staking earnings data correctly', async () => { - // Mock return values for useVaultData, useBalance, and usePooledStakes - (useVaultData as jest.Mock).mockReturnValue({ - annualRewardRate: '2.5%', - annualRewardRateDecimal: 0.025, - isLoadingVaultData: false, + // Mock return values for useVaultApyAverages, useBalance, and usePooledStakes + (useVaultApyAverages as jest.Mock).mockReturnValue({ + vaultApyAverages: MOCK_VAULT_APY_AVERAGES, + isLoadingVaultApyAverages: false, + refreshVaultApyAverages: jest.fn(), }); (useBalance as jest.Mock).mockReturnValue({ @@ -41,20 +42,20 @@ describe('useStakingEarnings', () => { // Wait for state updates await waitFor(() => { expect(result.current.isLoadingEarningsData).toBe(false); - expect(result.current.annualRewardRate).toBe('2.5%'); + expect(result.current.annualRewardRate).toBe('3.3%'); expect(result.current.lifetimeRewardsETH).toBe('5 ETH'); // Calculated by renderFromWei expect(result.current.lifetimeRewardsFiat).toBe('$15000'); // 5 ETH * 3000 USD/ETH - expect(result.current.estimatedAnnualEarningsETH).toBe('0.25 ETH'); // Calculated based on assets and annualRewardRateDecimal - expect(result.current.estimatedAnnualEarningsFiat).toBe('$750'); // No earnings in fiat + expect(result.current.estimatedAnnualEarningsETH).toBe('0.32576 ETH'); // Calculated based on assets and annualRewardRateDecimal + expect(result.current.estimatedAnnualEarningsFiat).toBe('$977.27'); // No earnings in fiat }); }); it('returns loading state when either vault or pooled stakes data is loading', async () => { // Mock return values for useVaultData and usePooledStakes - (useVaultData as jest.Mock).mockReturnValue({ - annualRewardRate: '2.5%', - annualRewardRateDecimal: 0.025, - isLoadingVaultData: true, // Simulate loading + (useVaultApyAverages as jest.Mock).mockReturnValue({ + vaultApyAverages: MOCK_VAULT_APY_AVERAGES, + isLoadingVaultApyAverages: true, // Simulate loading + refreshVaultApyAverages: jest.fn(), }); (usePooledStakes as jest.Mock).mockReturnValue({ @@ -72,10 +73,10 @@ describe('useStakingEarnings', () => { it('handles absence of pooled stakes data correctly', async () => { // Mock return values for useVaultData, useBalance, and usePooledStakes - (useVaultData as jest.Mock).mockReturnValue({ - annualRewardRate: '2.5%', - annualRewardRateDecimal: 0.025, - isLoadingVaultData: false, + (useVaultApyAverages as jest.Mock).mockReturnValue({ + vaultApyAverages: MOCK_VAULT_APY_AVERAGES, + isLoadingVaultApyAverages: false, + refreshVaultApyAverages: jest.fn(), }); (useBalance as jest.Mock).mockReturnValue({ diff --git a/app/components/UI/Stake/hooks/useStakingEarnings.ts b/app/components/UI/Stake/hooks/useStakingEarnings.ts index 9671b85dea3d..516805171679 100644 --- a/app/components/UI/Stake/hooks/useStakingEarnings.ts +++ b/app/components/UI/Stake/hooks/useStakingEarnings.ts @@ -4,13 +4,27 @@ import { weiToFiatNumber, } from '../../../../util/number'; import usePooledStakes from './usePooledStakes'; -import useVaultData from './useVaultData'; import useBalance from './useBalance'; import BigNumber from 'bignumber.js'; +import useVaultApyAverages from './useVaultApyAverages'; +import { + formatPercent, + CommonPercentageInputUnits, + PercentageOutputFormat, +} from '../utils/value'; const useStakingEarnings = () => { - const { annualRewardRate, annualRewardRateDecimal, isLoadingVaultData } = - useVaultData(); + const { vaultApyAverages, isLoadingVaultApyAverages } = useVaultApyAverages(); + + const annualRewardRatePercent = formatPercent(vaultApyAverages.oneWeek, { + inputFormat: CommonPercentageInputUnits.PERCENTAGE, + outputFormat: PercentageOutputFormat.PERCENT_SIGN, + fixed: 1, + }); + + const annualRewardRateDecimal = new BigNumber(vaultApyAverages.oneWeek) + .dividedBy(100) + .toNumber(); const { currentCurrency, conversionRate } = useBalance(); @@ -42,10 +56,11 @@ const useStakingEarnings = () => { 2, ); - const isLoadingEarningsData = isLoadingVaultData || isLoadingPooledStakesData; + const isLoadingEarningsData = + isLoadingVaultApyAverages || isLoadingPooledStakesData; return { - annualRewardRate, + annualRewardRate: annualRewardRatePercent, lifetimeRewardsETH, lifetimeRewardsFiat, estimatedAnnualEarningsETH, diff --git a/app/components/UI/Stake/hooks/useStakingInput.ts b/app/components/UI/Stake/hooks/useStakingInput.ts index 6bd19072d34d..65254c8a4db2 100644 --- a/app/components/UI/Stake/hooks/useStakingInput.ts +++ b/app/components/UI/Stake/hooks/useStakingInput.ts @@ -4,10 +4,16 @@ import { limitToMaximumDecimalPlaces, renderFiat, } from '../../../../util/number'; -import useVaultData from './useVaultData'; import useStakingGasFee from './useStakingGasFee'; import useBalance from './useBalance'; import useInputHandler from './useInputHandler'; +import useVaultApyAverages from './useVaultApyAverages'; +import { + CommonPercentageInputUnits, + formatPercent, + PercentageOutputFormat, +} from '../utils/value'; +import BigNumber from 'bignumber.js'; const useStakingInputHandlers = () => { const [estimatedAnnualRewards, setEstimatedAnnualRewards] = useState('-'); @@ -48,8 +54,19 @@ const useStakingInputHandlers = () => { return isNonZeroAmount && additionalFundsRequired.gt(new BN(0)); }, [amountWei, isNonZeroAmount, maxStakeableAmountWei]); - const { annualRewardRate, annualRewardRateDecimal, isLoadingVaultData } = - useVaultData(); + const { vaultApyAverages, isLoadingVaultApyAverages } = useVaultApyAverages(); + + // e.g. 2.8% + const annualRewardRate = formatPercent(vaultApyAverages.oneWeek, { + inputFormat: CommonPercentageInputUnits.PERCENTAGE, + outputFormat: PercentageOutputFormat.PERCENT_SIGN, + fixed: 1, + }); + + // e.g. 0.02841806 + const annualRewardRateDecimal = new BigNumber(vaultApyAverages.oneWeek) + .dividedBy(100) + .toNumber(); const handleMax = useCallback(async () => { if (!balance) return; @@ -129,7 +146,7 @@ const useStakingInputHandlers = () => { annualRewardsETH, annualRewardsFiat, annualRewardRate, - isLoadingVaultData, + isLoadingVaultApyAverages, handleMax, isLoadingStakingGasFee, balanceValue, diff --git a/app/components/UI/Stake/hooks/useVaultApyAverages.test.tsx b/app/components/UI/Stake/hooks/useVaultApyAverages.test.tsx index 8d40519636dd..1e50df13b097 100644 --- a/app/components/UI/Stake/hooks/useVaultApyAverages.test.tsx +++ b/app/components/UI/Stake/hooks/useVaultApyAverages.test.tsx @@ -4,6 +4,7 @@ import { act, waitFor } from '@testing-library/react-native'; import { backgroundState } from '../../../../util/test/initial-root-state'; import { stakingApiService } from '../sdk/stakeSdkProvider'; import useVaultApyAverages from './useVaultApyAverages'; +import { DEFAULT_VAULT_APY_AVERAGES } from '../constants'; const mockInitialState = { settings: {}, @@ -51,7 +52,9 @@ describe('useVaultApyAverages', () => { await waitFor(async () => { expect(result.current.isLoadingVaultApyAverages).toBe(false); expect(result.current.error).toBe('Failed to fetch vault APY averages'); - expect(result.current.vaultApyAverages).toStrictEqual({}); + expect(result.current.vaultApyAverages).toStrictEqual( + DEFAULT_VAULT_APY_AVERAGES, + ); }); }); }); diff --git a/app/components/UI/Stake/hooks/useVaultApyAverages.tsx b/app/components/UI/Stake/hooks/useVaultApyAverages.tsx index b7e5508b6129..cde6dc9afa6d 100644 --- a/app/components/UI/Stake/hooks/useVaultApyAverages.tsx +++ b/app/components/UI/Stake/hooks/useVaultApyAverages.tsx @@ -7,6 +7,7 @@ import { setVaultApyAverages, } from '../../../../core/redux/slices/staking'; import { stakingApiService } from '../sdk/stakeSdkProvider'; +import { DEFAULT_VAULT_APY_AVERAGES } from '../constants'; const useVaultApyAverages = () => { const [isLoading, setIsLoading] = useState(false); @@ -39,7 +40,10 @@ const useVaultApyAverages = () => { }, [fetchVaultAprs]); return { - vaultApyAverages, + vaultApyAverages: + Object.keys(vaultApyAverages).length === 0 + ? DEFAULT_VAULT_APY_AVERAGES + : vaultApyAverages, refreshVaultApyAverages: fetchVaultAprs, isLoadingVaultApyAverages: isLoading, error, diff --git a/app/core/redux/slices/staking/index.test.ts b/app/core/redux/slices/staking/index.test.ts index 1ff2fcfd0c69..971a636117a3 100644 --- a/app/core/redux/slices/staking/index.test.ts +++ b/app/core/redux/slices/staking/index.test.ts @@ -16,7 +16,6 @@ import { } from '../../../../components/UI/Stake/__mocks__/mockData'; import type { PooledStake, - VaultApyAverages, VaultDailyApy, VaultData, } from '@metamask/stake-sdk'; @@ -25,6 +24,7 @@ import { MOCK_VAULT_APY_AVERAGES, MOCK_VAULT_APYS_ONE_YEAR, } from '../../../../components/UI/Stake/components/PoolStakingLearnMoreModal/mockVaultRewards'; +import { DEFAULT_VAULT_APY_AVERAGES } from '../../../../components/UI/Stake/constants'; describe('PooledStaking', () => { const initialState = { @@ -32,7 +32,7 @@ describe('PooledStaking', () => { exchangeRate: '', vaultData: {} as VaultData, isEligible: false, - vaultApyAverages: {} as VaultApyAverages, + vaultApyAverages: DEFAULT_VAULT_APY_AVERAGES, vaultApys: [] as VaultDailyApy[], }; diff --git a/app/core/redux/slices/staking/index.ts b/app/core/redux/slices/staking/index.ts index c57ca25b1c89..1d8c665c1f2d 100644 --- a/app/core/redux/slices/staking/index.ts +++ b/app/core/redux/slices/staking/index.ts @@ -7,6 +7,7 @@ import type { import { createSlice, type PayloadAction } from '@reduxjs/toolkit'; import { createSelector } from 'reselect'; import type { RootState } from '../../../../reducers'; +import { DEFAULT_VAULT_APY_AVERAGES } from '../../../../components/UI/Stake/constants'; interface PooledStakingState { pooledStakes: PooledStake; @@ -22,7 +23,7 @@ export const initialState: PooledStakingState = { exchangeRate: '', vaultData: {} as VaultData, vaultApys: [], - vaultApyAverages: {} as VaultApyAverages, + vaultApyAverages: DEFAULT_VAULT_APY_AVERAGES, isEligible: false, }; From 7d65539800c55c5427509244381a3b4c8f7aa0b3 Mon Sep 17 00:00:00 2001 From: metamaskbot Date: Wed, 19 Feb 2025 22:41:32 +0000 Subject: [PATCH 020/473] Bump version number to 1576 --- android/app/build.gradle | 2 +- bitrise.yml | 4 ++-- ios/MetaMask.xcodeproj/project.pbxproj | 12 ++++++------ 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/android/app/build.gradle b/android/app/build.gradle index f2afb7c171f5..d14ab2a1f3c3 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -179,7 +179,7 @@ android { minSdkVersion rootProject.ext.minSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion versionName "7.41.0" - versionCode 1569 + versionCode 1576 testBuildType System.getProperty('testBuildType', 'debug') missingDimensionStrategy 'react-native-camera', 'general' testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" diff --git a/bitrise.yml b/bitrise.yml index 9316462916d8..715b60ac453e 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -1828,13 +1828,13 @@ app: VERSION_NAME: 7.41.0 - opts: is_expand: false - VERSION_NUMBER: 1569 + VERSION_NUMBER: 1576 - opts: is_expand: false FLASK_VERSION_NAME: 7.41.0 - opts: is_expand: false - FLASK_VERSION_NUMBER: 1569 + FLASK_VERSION_NUMBER: 1576 - opts: is_expand: false ANDROID_APK_LINK: '' diff --git a/ios/MetaMask.xcodeproj/project.pbxproj b/ios/MetaMask.xcodeproj/project.pbxproj index 44f8476c9e35..b3ec3d0613e4 100644 --- a/ios/MetaMask.xcodeproj/project.pbxproj +++ b/ios/MetaMask.xcodeproj/project.pbxproj @@ -1380,7 +1380,7 @@ CODE_SIGN_IDENTITY = "Apple Development"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1569; + CURRENT_PROJECT_VERSION = 1576; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = 48XVW22RCG; @@ -1449,7 +1449,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMask.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1569; + CURRENT_PROJECT_VERSION = 1576; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 48XVW22RCG; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 48XVW22RCG; @@ -1514,7 +1514,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMaskDebug.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1569; + CURRENT_PROJECT_VERSION = 1576; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = 48XVW22RCG; @@ -1580,7 +1580,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMask.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1569; + CURRENT_PROJECT_VERSION = 1576; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 48XVW22RCG; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 48XVW22RCG; @@ -1739,7 +1739,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMaskDebug.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1569; + CURRENT_PROJECT_VERSION = 1576; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = 48XVW22RCG; @@ -1808,7 +1808,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMask.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1569; + CURRENT_PROJECT_VERSION = 1576; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 48XVW22RCG; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 48XVW22RCG; From 9ce35c788128a4ff8b36ef627aa94da3168855ad Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 20 Feb 2025 12:36:12 -0500 Subject: [PATCH 021/473] chore: cherry-pick #13590 (#13648) This PR cherry-picks #13590 Co-authored-by: Eric Bishard --- .../confirmations/components/ApproveTransactionReview/styles.ts | 2 +- .../Views/confirmations/components/TransactionReview/index.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/app/components/Views/confirmations/components/ApproveTransactionReview/styles.ts b/app/components/Views/confirmations/components/ApproveTransactionReview/styles.ts index e9323c2583b1..1e784c99285d 100644 --- a/app/components/Views/confirmations/components/ApproveTransactionReview/styles.ts +++ b/app/components/Views/confirmations/components/ApproveTransactionReview/styles.ts @@ -172,7 +172,7 @@ const createStyles = (colors: any) => marginTop: 20, marginHorizontal: 10, }, - SmartTransactionsMigrationBanner: { + smartTransactionsMigrationBanner: { marginHorizontal: 16, }, }); diff --git a/app/components/Views/confirmations/components/TransactionReview/index.js b/app/components/Views/confirmations/components/TransactionReview/index.js index 8edb01a2ae86..465e20c58071 100644 --- a/app/components/Views/confirmations/components/TransactionReview/index.js +++ b/app/components/Views/confirmations/components/TransactionReview/index.js @@ -599,7 +599,7 @@ class TransactionReview extends PureComponent { /> {shouldUseSmartTransaction && ( - + )} From 1f4d3c23e05d5dda9f69cc4c48ea2088ffa99128 Mon Sep 17 00:00:00 2001 From: metamaskbot Date: Thu, 20 Feb 2025 17:52:55 +0000 Subject: [PATCH 022/473] Bump version number to 1579 --- android/app/build.gradle | 2 +- bitrise.yml | 4 ++-- ios/MetaMask.xcodeproj/project.pbxproj | 12 ++++++------ 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/android/app/build.gradle b/android/app/build.gradle index d14ab2a1f3c3..4cdcb3d3cb48 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -179,7 +179,7 @@ android { minSdkVersion rootProject.ext.minSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion versionName "7.41.0" - versionCode 1576 + versionCode 1579 testBuildType System.getProperty('testBuildType', 'debug') missingDimensionStrategy 'react-native-camera', 'general' testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" diff --git a/bitrise.yml b/bitrise.yml index 715b60ac453e..6b3053138e33 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -1828,13 +1828,13 @@ app: VERSION_NAME: 7.41.0 - opts: is_expand: false - VERSION_NUMBER: 1576 + VERSION_NUMBER: 1579 - opts: is_expand: false FLASK_VERSION_NAME: 7.41.0 - opts: is_expand: false - FLASK_VERSION_NUMBER: 1576 + FLASK_VERSION_NUMBER: 1579 - opts: is_expand: false ANDROID_APK_LINK: '' diff --git a/ios/MetaMask.xcodeproj/project.pbxproj b/ios/MetaMask.xcodeproj/project.pbxproj index b3ec3d0613e4..77ee88f38cbf 100644 --- a/ios/MetaMask.xcodeproj/project.pbxproj +++ b/ios/MetaMask.xcodeproj/project.pbxproj @@ -1380,7 +1380,7 @@ CODE_SIGN_IDENTITY = "Apple Development"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1576; + CURRENT_PROJECT_VERSION = 1579; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = 48XVW22RCG; @@ -1449,7 +1449,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMask.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1576; + CURRENT_PROJECT_VERSION = 1579; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 48XVW22RCG; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 48XVW22RCG; @@ -1514,7 +1514,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMaskDebug.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1576; + CURRENT_PROJECT_VERSION = 1579; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = 48XVW22RCG; @@ -1580,7 +1580,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMask.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1576; + CURRENT_PROJECT_VERSION = 1579; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 48XVW22RCG; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 48XVW22RCG; @@ -1739,7 +1739,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMaskDebug.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1576; + CURRENT_PROJECT_VERSION = 1579; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = 48XVW22RCG; @@ -1808,7 +1808,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMask.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1576; + CURRENT_PROJECT_VERSION = 1579; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 48XVW22RCG; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 48XVW22RCG; From 812eeb02a25c6f766af6ec5ff798c9802a337368 Mon Sep 17 00:00:00 2001 From: "runway-github[bot]" <73448015+runway-github[bot]@users.noreply.github.com> Date: Fri, 21 Feb 2025 15:40:20 -0700 Subject: [PATCH 023/473] chore(runway): cherry-pick fix: cp-7.41.0 Prevent flickering on `RetryModal` (#13669) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - fix: cp-7.41.0 Prevent flickering on `RetryModal` (#13637) ## **Description** This PR relocates `RetryModal` to stop flickering in `TransactionsHistory` screen. ## **Related issues** Fixes: https://github.com/MetaMask/metamask-mobile/issues/13547 ## **Manual testing steps** See issue https://github.com/MetaMask/metamask-mobile/issues/13547 ## **Screenshots/Recordings** ### **Before** ### **After** ## **Pre-merge author checklist** - [X] I’ve followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile Coding Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [X] I've completed the PR template to the best of my ability - [X] I’ve included tests if applicable - [X] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [X] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. ## **Pre-merge reviewer checklist** - [ ] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [ ] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots. [bee0c07](https://github.com/MetaMask/metamask-mobile/commit/bee0c071e650d358a91158ff0fc516bcc6aed844) Co-authored-by: OGPoyraz --- app/components/UI/Transactions/index.js | 13 ++--- .../Asset/__snapshots__/index.test.js.snap | 58 +++++++++++++++++++ 2 files changed, 64 insertions(+), 7 deletions(-) diff --git a/app/components/UI/Transactions/index.js b/app/components/UI/Transactions/index.js index d6a7d0251503..6bbc22e82323 100644 --- a/app/components/UI/Transactions/index.js +++ b/app/components/UI/Transactions/index.js @@ -861,13 +861,6 @@ class Transactions extends PureComponent { descriptionText={strings('transaction.speedup_tx_message')} /> )} - - this.toggleRetry(undefined)} - onConfirmPress={this.retry} - retryIsOpen={this.state.retryIsOpen} - errorMsg={this.state.errorMsg} - /> ); }; @@ -885,6 +878,12 @@ class Transactions extends PureComponent { {(this.state.speedUp1559IsOpen || this.state.cancel1559IsOpen) && this.renderUpdateTxEIP1559Gas(this.state.cancel1559IsOpen)} + this.toggleRetry(undefined)} + onConfirmPress={this.retry} + retryIsOpen={this.state.retryIsOpen} + errorMsg={this.state.errorMsg} + /> ); }; diff --git a/app/components/Views/Asset/__snapshots__/index.test.js.snap b/app/components/Views/Asset/__snapshots__/index.test.js.snap index 333565b07184..cf0ed616ba63 100644 --- a/app/components/Views/Asset/__snapshots__/index.test.js.snap +++ b/app/components/Views/Asset/__snapshots__/index.test.js.snap @@ -36,6 +36,35 @@ exports[`Asset should not display swaps button if the asset is not allowed 1`] = /> + `; @@ -75,5 +104,34 @@ exports[`Asset should render correctly 1`] = ` /> + `; From d07d98de0de6e2fcddc94ac678d17e048b4f0866 Mon Sep 17 00:00:00 2001 From: "runway-github[bot]" <73448015+runway-github[bot]@users.noreply.github.com> Date: Sat, 22 Feb 2025 14:10:15 -0700 Subject: [PATCH 024/473] chore(runway): cherry-pick Temporarily revert gas included swaps (#13678) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - fix: cp-7.41.0 Temporarily revert gas included swaps (#13639) ## **Description** Reverts https://github.com/MetaMask/metamask-mobile/pull/13430 for now. We initially believed that resolving the known issue with gas-included swaps requiring token approval would be easy and could be completed before the release candidate for version 7.41.0 was pushed to production, but it turns out that more fundamental changes are needed. Specifically, submitBatch support from the TransactionController—allowing the simultaneous submission of multiple transactions (approval and swap)—is required. This submitBatch support will likely also be used for current swaps that need token approval to increase success rates. ## **Related issues** Fixes: #13584 ## **Manual testing steps** 1. Go to this page... 2. 3. ## **Screenshots/Recordings** ### **Before** ### **After** ## **Pre-merge author checklist** - [ ] I’ve followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile Coding Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [ ] I've completed the PR template to the best of my ability - [ ] I’ve included tests if applicable - [ ] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [ ] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. ## **Pre-merge reviewer checklist** - [ ] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [ ] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots. [7f31286](https://github.com/MetaMask/metamask-mobile/commit/7f31286d3ea339a8e4efe2fb6b8dece78b83c271) Co-authored-by: Daniel <80175477+dan437@users.noreply.github.com> --- app/components/Nav/Main/RootRPCMethodsUI.js | 1 - app/components/UI/Swaps/QuotesView.js | 488 ++++++------------ .../__snapshots__/QuotesView.test.ts.snap | 29 -- app/components/UI/Swaps/index.js | 16 +- app/components/UI/Swaps/utils/index.js | 3 - app/components/UI/Swaps/utils/index.test.js | 85 --- app/core/Engine/Engine.ts | 19 +- app/util/smart-transactions/index.test.ts | 139 ----- app/util/smart-transactions/index.ts | 22 +- .../smart-publish-hook.test.ts | 31 +- .../smart-transactions/smart-publish-hook.ts | 14 +- locales/languages/en.json | 5 - 12 files changed, 159 insertions(+), 693 deletions(-) delete mode 100644 app/components/UI/Swaps/utils/index.test.js diff --git a/app/components/Nav/Main/RootRPCMethodsUI.js b/app/components/Nav/Main/RootRPCMethodsUI.js index 8cad29cb2ce2..71d924e92479 100644 --- a/app/components/Nav/Main/RootRPCMethodsUI.js +++ b/app/components/Nav/Main/RootRPCMethodsUI.js @@ -239,7 +239,6 @@ const RootRPCMethodsUI = (props) => { quote_vs_executionRatio: quoteVsExecutionRatio, token_to_amount_received: tokenToAmountReceived.toString(), is_smart_transaction: props.shouldUseSmartTransaction, - gas_included: analyticsParams.isGasIncludedTrade, ...smartTransactionMetricsProperties, available_quotes: analyticsParams.available_quotes, best_quote_source: analyticsParams.best_quote_source, diff --git a/app/components/UI/Swaps/QuotesView.js b/app/components/UI/Swaps/QuotesView.js index 9ef6b79c7d43..5cc6696b0617 100644 --- a/app/components/UI/Swaps/QuotesView.js +++ b/app/components/UI/Swaps/QuotesView.js @@ -19,14 +19,8 @@ import { TransactionStatus, CHAIN_IDS, } from '@metamask/transaction-controller'; -import { query, toChecksumHexAddress } from '@metamask/controller-utils'; +import { query } from '@metamask/controller-utils'; import { GAS_ESTIMATE_TYPES } from '@metamask/gas-fee-controller'; -import { useAsyncResultOrThrow } from '../../hooks/useAsyncResult'; -import { - ContractExchangeRates, - fetchTokenContractExchangeRates, - CodefiTokenPricesServiceV2, -} from '@metamask/assets-controllers'; import { addHexPrefix, @@ -91,7 +85,7 @@ import { selectSwapsUsedGasEstimate, swapsTokensSelector, } from '../../../reducers/swaps'; -import { decGWEIToHexWEI, hexToDecimal } from '../../../util/conversions'; +import { decGWEIToHexWEI } from '../../../util/conversions'; import FadeAnimationView from '../FadeAnimationView'; import Logger from '../../../util/Logger'; import { useTheme } from '../../../util/theme'; @@ -125,7 +119,6 @@ import { addSwapsTransaction } from '../../../util/swaps/swaps-transactions'; import { getTransaction1559GasFeeEstimates } from './utils/gas'; import { getGlobalEthQuery } from '../../../util/networks/global-network'; import SmartTransactionsMigrationBanner from '../../Views/confirmations/components/SmartTransactionsMigrationBanner/SmartTransactionsMigrationBanner'; -import { getTradeTxTokenFee } from '../../../util/smart-transactions'; const LOG_PREFIX = 'Swaps'; const POLLING_INTERVAL = 30000; @@ -308,9 +301,6 @@ const createStyles = (colors) => fetchingText: { color: colors.text.default, }, - included: { - fontStyle: 'italic', - }, }); async function resetAndStartPolling({ @@ -320,7 +310,6 @@ async function resetAndStartPolling({ sourceAmount, walletAddress, networkClientId, - enableGasIncludedQuotes, }) { if (!sourceToken || !destinationToken) { return; @@ -334,7 +323,6 @@ async function resetAndStartPolling({ sourceAmount, walletAddress, networkClientId, - enableGasIncludedQuotes, }); await SwapsController.stopPollingAndResetState(); await SwapsController.startFetchAndSetQuotes( @@ -532,14 +520,6 @@ function SwapsQuotesView({ () => allQuotes.find((quote) => quote?.aggregator === selectedQuoteId), [allQuotes, selectedQuoteId], ); - const tradeTxTokenFee = useMemo( - () => getTradeTxTokenFee(selectedQuote), - [selectedQuote], - ); - const isGasIncludedTrade = useMemo( - () => selectedQuote?.isGasIncludedTrade ?? false, - [selectedQuote], - ); const selectedQuoteValue = useMemo(() => { if (!quoteValues[selectedQuoteId] || !multiLayerL1ApprovalFeeTotal) { return quoteValues[selectedQuoteId]; @@ -623,11 +603,7 @@ function SwapsQuotesView({ : new BigNumber(0); const ethBalanceBN = new BigNumber(accounts[selectedAddress].balance); const gasBN = toWei(selectedQuoteValue?.maxEthFee || '0'); - - const hasEnoughEthBalance = - isGasIncludedTrade && tradeTxTokenFee - ? true - : ethBalanceBN.gte(ethAmountBN.plus(gasBN)); + const hasEnoughEthBalance = ethBalanceBN.gte(ethAmountBN.plus(gasBN)); const missingEthBalance = hasEnoughEthBalance ? null : ethAmountBN.plus(gasBN).minus(ethBalanceBN); @@ -645,8 +621,6 @@ function SwapsQuotesView({ selectedAddress, sourceAmount, sourceToken, - tradeTxTokenFee, - isGasIncludedTrade, ]); /* Selected quote slippage */ @@ -731,12 +705,6 @@ function SwapsQuotesView({ useModalHandler(false); const [isGasTooltipVisible, , showGasTooltip, hideGasTooltip] = useModalHandler(false); - const [ - isGasIncludedTooltipVisible, - , - showGasIncludedTooltip, - hideGasIncludedTooltip, - ] = useModalHandler(false); const handleGasFeeUpdate = useCallback( (changedGasEstimate, changedGasLimit) => { @@ -818,7 +786,6 @@ function SwapsQuotesView({ sourceAmount, walletAddress: selectedAddress, networkClientId: selectedNetworkClientId, - enableGasIncludedQuotes: shouldUseSmartTransaction, }); } else { navigation.pop(); @@ -832,7 +799,6 @@ function SwapsQuotesView({ selectedAddress, navigation, selectedNetworkClientId, - shouldUseSmartTransaction, ]); const updateSwapsTransactions = useCallback( @@ -884,8 +850,6 @@ function SwapsQuotesView({ network_fees_ETH: renderFromWei(toWei(selectedQuoteValue?.ethFee)), other_quote_selected: allQuotes[selectedQuoteId] === selectedQuote, chain_id: getDecimalChainId(chainId), - is_smart_transaction: shouldUseSmartTransaction, - gas_included: selectedQuote.isGasIncludedTrade, }, paramsForAnalytics: { sentAt: currentBlock.timestamp, @@ -910,7 +874,6 @@ function SwapsQuotesView({ selectedQuoteId, conversionRate, selectedQuoteValue, - shouldUseSmartTransaction, ], ); @@ -934,7 +897,6 @@ function SwapsQuotesView({ network_fees_ETH: renderFromWei(toWei(selectedQuoteValue?.ethFee)), chain_id: getDecimalChainId(chainId), is_smart_transaction: shouldUseSmartTransaction, - gas_included: selectedQuote.isGasIncludedTrade, }; const sensitiveParameters = { token_from_amount: fromTokenMinimalUnitString( @@ -1278,8 +1240,6 @@ function SwapsQuotesView({ network_fees_ETH: renderFromWei(toWei(selectedQuoteValue.ethFee)), available_quotes: allQuotes.length, chain_id: getDecimalChainId(chainId), - is_smart_transaction: shouldUseSmartTransaction, - gas_included: selectedQuote.isGasIncludedTrade, }; const sensitiveParameters = { token_from_amount: fromTokenMinimalUnitString( @@ -1311,7 +1271,6 @@ function SwapsQuotesView({ conversionRate, trackEvent, createEventBuilder, - shouldUseSmartTransaction, ]); const handleOpenQuotesModal = useCallback(() => { @@ -1465,7 +1424,6 @@ function SwapsQuotesView({ sourceAmount, walletAddress: selectedAddress, networkClientId: selectedNetworkClientId, - enableGasIncludedQuotes: shouldUseSmartTransaction, }); return () => { @@ -1480,7 +1438,6 @@ function SwapsQuotesView({ sourceAmount, sourceToken.address, selectedNetworkClientId, - shouldUseSmartTransaction, ]); /** selectedQuote alert effect */ @@ -1770,63 +1727,6 @@ function SwapsQuotesView({ 'https://community.metamask.io/t/what-is-gas-why-do-transactions-take-so-long/3172', ); - const openLinkAboutGasIncluded = () => - Linking.openURL( - 'https://support.metamask.io/token-swaps/user-guide-swaps/#gas-fees', - ); - - const fiatConversionRates = useAsyncResultOrThrow(async () => { - if (!isGasIncludedTrade || !selectedQuote?.trade || !tradeTxTokenFee) { - return undefined; - } - - const { token, balanceNeededToken } = tradeTxTokenFee; - if (!token?.decimals || !token?.address || !balanceNeededToken) { - return undefined; - } - - const checksumAddress = toChecksumHexAddress(token.address); - return fetchTokenContractExchangeRates({ - tokenPricesService: new CodefiTokenPricesServiceV2(), - nativeCurrency: currentCurrency, - tokenAddresses: [checksumAddress], - chainId, - }); - }, [ - isGasIncludedTrade, - selectedQuote?.trade, - tradeTxTokenFee, - currentCurrency, - chainId, - ]); - - const gasTokenFiatAmount = useMemo(() => { - if (!isGasIncludedTrade || !selectedQuote?.trade || !tradeTxTokenFee) { - return undefined; - } - - const { token, balanceNeededToken } = tradeTxTokenFee; - if (!token?.decimals || !token?.address || !balanceNeededToken) { - return; - } - - const tokenAmount = swapsUtils - .calcTokenAmount(hexToDecimal(balanceNeededToken), token.decimals) - .toString(10); - - const fiatConversionRate = - fiatConversionRates?.value?.[toChecksumHexAddress(token.address)]; - return ( - weiToFiat(toWei(tokenAmount), fiatConversionRate, currentCurrency) || '' - ); - }, [ - isGasIncludedTrade, - selectedQuote?.trade, - tradeTxTokenFee, - currentCurrency, - fiatConversionRates?.value, - ]); - /* Rendering */ if (isFirstLoad || (!error?.key && !selectedQuote)) { return ( @@ -2124,100 +2024,105 @@ function SwapsQuotesView({ )} - {isGasIncludedTrade && ( - - - - - {strings('swaps.gas_fee')} - - - - - - - - {usedGasEstimate.gasPrice ? ( - - - {renderFromWei(toWei(selectedQuoteValue?.ethFee))}{' '} - {getTicker(ticker)} - - - {` ${ - weiToFiat( - toWei(selectedQuoteValue?.ethFee), - conversionRate, - currentCurrency, - ) || '' - }`} - - - ) : ( - + + + + {strings('swaps.estimated_gas_fee')} + + - <> - {gasTokenFiatAmount} - {` ${strings( - 'swaps.included', - )}`} - - - )} + + + - )} - {!isGasIncludedTrade && ( - <> - + + {renderFromWei(toWei(selectedQuoteValue?.ethFee))}{' '} + {getTicker(ticker)} + + + {` ${ + weiToFiat( + toWei(selectedQuoteValue?.ethFee), + conversionRate, + currentCurrency, + ) || '' + }`} + + + ) : ( + - - - - {strings('swaps.estimated_gas_fee')} + {primaryCurrency === 'ETH' ? ( + <> + + {`${ + weiToFiat( + toWei(selectedQuoteValue?.ethFee), + conversionRate, + currentCurrency, + ) || '' + } `} - + + {renderFromWei(toWei(selectedQuoteValue?.ethFee))}{' '} + {getTicker(ticker)} + + + + ) : ( + <> + + + {renderFromWei(toWei(selectedQuoteValue?.ethFee))}{' '} + {getTicker(ticker)} + - - - - {usedGasEstimate.gasPrice ? ( - - {renderFromWei(toWei(selectedQuoteValue?.ethFee))}{' '} - {getTicker(ticker)} - - - {` ${ + {` ${ weiToFiat( toWei(selectedQuoteValue?.ethFee), conversionRate, @@ -2225,139 +2130,66 @@ function SwapsQuotesView({ ) || '' }`} - - ) : ( - - {primaryCurrency === 'ETH' ? ( - <> - - {`${ - weiToFiat( - toWei(selectedQuoteValue?.ethFee), - conversionRate, - currentCurrency, - ) || '' - } `} - - - - {renderFromWei( - toWei(selectedQuoteValue?.ethFee), - )}{' '} - {getTicker(ticker)} - - - - ) : ( - <> - - - {renderFromWei( - toWei(selectedQuoteValue?.ethFee), - )}{' '} - {getTicker(ticker)} - - - - {` ${ - weiToFiat( - toWei(selectedQuoteValue?.ethFee), - conversionRate, - currentCurrency, - ) || '' - }`} - - - )} - + )} - + + )} + - - {usedGasEstimate.gasPrice ? ( - <> - - - {strings('swaps.max_gas_fee')} - - - - - {renderFromWei( + + {usedGasEstimate.gasPrice ? ( + <> + + + {strings('swaps.max_gas_fee')} + + + + + {renderFromWei( + toWei(selectedQuoteValue?.maxEthFee || '0x0'), + )}{' '} + {getTicker(ticker)} + + + {` ${ + weiToFiat( + toWei(selectedQuoteValue?.maxEthFee), + conversionRate, + currentCurrency, + ) || '' + }`} + + + + ) : ( + <> + + + + {strings('transaction_review_eip1559.max_fee')}: + + + {primaryCurrency === 'ETH' + ? ` ${renderFromWei( toWei(selectedQuoteValue?.maxEthFee || '0x0'), - )}{' '} - {getTicker(ticker)} - - - {` ${ + )} ${getTicker(ticker)}` // eslint-disable-line + : ` ${ weiToFiat( toWei(selectedQuoteValue?.maxEthFee), conversionRate, currentCurrency, - ) || '' + ) || '' // eslint-disable-next-line }`} - - - - ) : ( - <> - - - - {strings('transaction_review_eip1559.max_fee')}: - - - {primaryCurrency === 'ETH' - ? ` ${renderFromWei( - toWei(selectedQuoteValue?.maxEthFee || '0x0'), - )} ${getTicker(ticker)}` // eslint-disable-line - : ` ${ - weiToFiat( - toWei(selectedQuoteValue?.maxEthFee), - conversionRate, - currentCurrency, - ) || '' // eslint-disable-next-line - }`} - - - - )} - - - )} + + + + )} + {!!approvalTransaction && !unableToSwap && ( @@ -2384,16 +2216,9 @@ function SwapsQuotesView({ onPress={toggleFeeModal} > - {isGasIncludedTrade - ? `${strings( - 'swaps.quotes_include_gas_and_metamask_fee', - { - fee: selectedQuote.fee, - }, - )} ` - : `${strings('swaps.quotes_include_fee', { - fee: selectedQuote.fee, - })} `} + {`${strings('swaps.quotes_include_fee', { + fee: selectedQuote.fee, + })} `} } /> - - - {strings('swaps.gas_included_tooltip_explanation')} - - - - {strings('swaps.gas_education_title')} - - - - } - /> - diff --git a/app/components/UI/Swaps/index.js b/app/components/UI/Swaps/index.js index 008e9fe04d29..39bc76b001cf 100644 --- a/app/components/UI/Swaps/index.js +++ b/app/components/UI/Swaps/index.js @@ -85,7 +85,6 @@ import { QuoteViewSelectorIDs } from '../../../../e2e/selectors/swaps/QuoteView. import { getDecimalChainId } from '../../../util/networks'; import { useMetrics } from '../../../components/hooks/useMetrics'; import { getSwapsLiveness } from '../../../reducers/swaps/utils'; -import { selectShouldUseSmartTransaction } from '../../../selectors/smartTransactionsController'; const createStyles = (colors) => StyleSheet.create({ @@ -196,7 +195,6 @@ function SwapsAmountView({ tokenExchangeRates, currentCurrency, setLiveness, - shouldUseSmartTransaction, }) { const accounts = accountsByChainId[chainId]; const navigation = useNavigation(); @@ -663,13 +661,6 @@ function SwapsAmountView({ const disabledView = !destinationTokenHasEnoughOcurrances && !hasDismissedTokenAlert; - const isNonDefaultFromToken = !isSwapsNativeAsset(sourceToken); - const isTokenEligibleForMaxBalance = - shouldUseSmartTransaction || - (!shouldUseSmartTransaction && isNonDefaultFromToken); - const showMaxBalanceLink = - sourceToken?.symbol && isTokenEligibleForMaxBalance && hasBalance; - return ( {' '} {strings('swaps.use_max')} @@ -1016,10 +1007,6 @@ SwapsAmountView.propTypes = { * Function to set liveness */ setLiveness: PropTypes.func, - /** - * Whether to use smart transactions - */ - shouldUseSmartTransaction: PropTypes.bool, }; const mapStateToProps = (state) => ({ @@ -1037,7 +1024,6 @@ const mapStateToProps = (state) => ({ selectedNetworkClientId: selectSelectedNetworkClientId(state), tokensWithBalance: swapsTokensWithBalanceSelector(state), tokensTopAssets: swapsTopAssetsSelector(state), - shouldUseSmartTransaction: selectShouldUseSmartTransaction(state), }); const mapDispatchToProps = (dispatch) => ({ diff --git a/app/components/UI/Swaps/utils/index.js b/app/components/UI/Swaps/utils/index.js index c063ab989769..d9d41edd2369 100644 --- a/app/components/UI/Swaps/utils/index.js +++ b/app/components/UI/Swaps/utils/index.js @@ -119,7 +119,6 @@ export function getQuotesNavigationsParams(route) { * @param {string} sourceAmount Amount in minimal token units of sourceToken to be swapped * @param {string} fromAddress Current address attempting to swap * @param {string} networkClientId Current network client ID - * @param {boolean} enableGasIncludedQuotes Enable quotes with gas included */ export function getFetchParams({ slippage = 1, @@ -128,7 +127,6 @@ export function getFetchParams({ sourceAmount, walletAddress, networkClientId, - enableGasIncludedQuotes, }) { return { slippage, @@ -141,7 +139,6 @@ export function getFetchParams({ destinationTokenInfo: destinationToken, networkClientId, }, - enableGasIncludedQuotes, }; } diff --git a/app/components/UI/Swaps/utils/index.test.js b/app/components/UI/Swaps/utils/index.test.js deleted file mode 100644 index ebc2850c2ce4..000000000000 --- a/app/components/UI/Swaps/utils/index.test.js +++ /dev/null @@ -1,85 +0,0 @@ -import { getFetchParams } from './index'; - -describe('getFetchParams', () => { - const mockSourceToken = { - address: '0x123', - symbol: 'TOKEN1', - decimals: 18, - }; - - const mockDestinationToken = { - address: '0x456', - symbol: 'TOKEN2', - decimals: 18, - }; - - const mockBaseParams = { - slippage: 1, - sourceToken: mockSourceToken, - destinationToken: mockDestinationToken, - sourceAmount: '1000000000000000000', // 1 token in wei - walletAddress: '0x789', - networkClientId: '1', - enableGasIncludedQuotes: true, - }; - - it('returns correct parameters with default slippage', () => { - const result = getFetchParams(mockBaseParams); - - expect(result).toEqual({ - slippage: 1, - sourceToken: mockSourceToken.address, - destinationToken: mockDestinationToken.address, - sourceAmount: '1000000000000000000', - walletAddress: '0x789', - metaData: { - sourceTokenInfo: mockSourceToken, - destinationTokenInfo: mockDestinationToken, - networkClientId: '1', - }, - enableGasIncludedQuotes: true, - }); - }); - - it('returns correct parameters with custom slippage', () => { - const result = getFetchParams({ - ...mockBaseParams, - slippage: 2, - }); - - expect(result).toEqual({ - slippage: 2, - sourceToken: mockSourceToken.address, - destinationToken: mockDestinationToken.address, - sourceAmount: '1000000000000000000', - walletAddress: '0x789', - metaData: { - sourceTokenInfo: mockSourceToken, - destinationTokenInfo: mockDestinationToken, - networkClientId: '1', - }, - enableGasIncludedQuotes: true, - }); - }); - - it('returns correct parameters with gas included quotes disabled', () => { - const result = getFetchParams({ - ...mockBaseParams, - enableGasIncludedQuotes: false, - }); - - expect(result).toEqual({ - slippage: 1, - sourceToken: mockSourceToken.address, - destinationToken: mockDestinationToken.address, - sourceAmount: '1000000000000000000', - walletAddress: '0x789', - metaData: { - sourceTokenInfo: mockSourceToken, - destinationTokenInfo: mockDestinationToken, - networkClientId: '1', - }, - enableGasIncludedQuotes: false, - }); - }); -}); diff --git a/app/core/Engine/Engine.ts b/app/core/Engine/Engine.ts index a44695c9e5e8..94174b73bcc6 100644 --- a/app/core/Engine/Engine.ts +++ b/app/core/Engine/Engine.ts @@ -173,7 +173,7 @@ import SmartTransactionsController from '@metamask/smart-transactions-controller import { getAllowedSmartTransactionsChainIds } from '../../../app/constants/smartTransactions'; import { selectBasicFunctionalityEnabled } from '../../selectors/settings'; import { selectShouldUseSmartTransaction } from '../../selectors/smartTransactionsController'; -import { selectSwapsChainFeatureFlags, selectSwapsQuotes, selectSwapsTopAggId } from '../../reducers/swaps'; +import { selectSwapsChainFeatureFlags } from '../../reducers/swaps'; import { SmartTransactionStatuses, ClientId, @@ -203,7 +203,7 @@ import { setupCurrencyRateSync } from './controllers/RatesController/subscriptio import { HandleSnapRequestArgs } from '../Snaps/types'; import { handleSnapRequest } from '../Snaps/utils'; ///: END:ONLY_INCLUDE_IF -import { getSmartTransactionMetricsProperties, getGasIncludedTransactionFees } from '../../util/smart-transactions'; +import { getSmartTransactionMetricsProperties } from '../../util/smart-transactions'; import { trace } from '../../util/trace'; import { MetricsEventBuilder } from '../Analytics/MetricsEventBuilder'; import { JsonMap } from '../Analytics/MetaMetrics.types'; @@ -1231,17 +1231,11 @@ export class Engine { networkController.getNetworkClientRegistry.bind(networkController), getNetworkState: () => networkController.state, hooks: { - publish: (transactionMeta) => { - const state = store.getState(); + publish: (transactionMeta) => { const shouldUseSmartTransaction = selectShouldUseSmartTransaction( - state, + store.getState(), ); - const swapsQuotes = selectSwapsQuotes(state); - // We can choose the top agg id for now. Once selection is enabled, we need - // to look for a selected agg id. - const swapsTopAggId = selectSwapsTopAggId(state); - const selectedQuote = swapsQuotes?.[swapsTopAggId]; - const transactionFees = getGasIncludedTransactionFees(selectedQuote); + return submitSmartTransactionHook({ transactionMeta, transactionController: this.transactionController, @@ -1250,8 +1244,7 @@ export class Engine { approvalController, // @ts-expect-error TODO: Resolve mismatch between base-controller versions. controllerMessenger: this.controllerMessenger, - featureFlags: selectSwapsChainFeatureFlags(state), - transactionFees + featureFlags: selectSwapsChainFeatureFlags(store.getState()), }) as Promise<{ transactionHash: string }>; }, }, diff --git a/app/util/smart-transactions/index.test.ts b/app/util/smart-transactions/index.test.ts index d90394cf8846..4515ed01acef 100644 --- a/app/util/smart-transactions/index.test.ts +++ b/app/util/smart-transactions/index.test.ts @@ -4,9 +4,6 @@ import { getShouldUpdateApprovalRequest, getTransactionType, getSmartTransactionMetricsProperties, - getTradeTxTokenFee, - getGasIncludedTransactionFees, - type GasIncludedQuote, } from './index'; import SmartTransactionsController from '@metamask/smart-transactions-controller'; import type { ControllerMessenger } from '../../core/Engine'; @@ -508,140 +505,4 @@ describe('Smart Transactions utils', () => { }); }); }); - - describe('getTradeTxTokenFee', () => { - it('returns the token fee when the full path exists', () => { - const mockQuote = { - tradeTxFees: { - fees: [{ - tokenFees: ['mockTokenFee'], - }], - cancelFees: {}, - feeEstimate: '0x0', - gasLimit: '0x0', - gasUsed: '0x0' - }, - approvalTxFees: null, - } as unknown as GasIncludedQuote; - - const result = getTradeTxTokenFee(mockQuote); - expect(result).toBe('mockTokenFee'); - }); - - it('returns undefined when tradeTxFees is missing', () => { - const mockQuote = { - tradeTxFees: null, - approvalTxFees: null, - } as GasIncludedQuote; - - const result = getTradeTxTokenFee(mockQuote); - expect(result).toBeUndefined(); - }); - it('returns undefined when fees array is empty', () => { - const mockQuote = { - tradeTxFees: { - fees: [], - cancelFees: {}, - feeEstimate: '0x0', - gasLimit: '0x0', - gasUsed: '0x0' - }, - approvalTxFees: null, - } as unknown as GasIncludedQuote; - - const result = getTradeTxTokenFee(mockQuote); - expect(result).toBeUndefined(); - }); - - it('returns undefined when tokenFees array is empty', () => { - const mockQuote = { - tradeTxFees: { - fees: [ - { - tokenFees: [], - }, - ], - }, - } as unknown as GasIncludedQuote; - - const result = getTradeTxTokenFee(mockQuote); - expect(result).toBeUndefined(); - }); - - it('returns undefined when tokenFees is undefined', () => { - const mockQuote = { - tradeTxFees: { - fees: [{}], - }, - } as unknown as GasIncludedQuote; - - const result = getTradeTxTokenFee(mockQuote); - expect(result).toBeUndefined(); - }); - }); - - describe('getGasIncludedTransactionFees', () => { - it('returns transaction fees when gas is included and token fee exists', () => { - const mockQuote = { - tradeTxFees: { - fees: [{ - tokenFees: ['mockTokenFee'], - }], - cancelFees: {}, - feeEstimate: '0x0', - gasLimit: '0x0', - gasUsed: '0x0' - }, - approvalTxFees: { - cancelFees: {}, - feeEstimate: '0x0', - gasLimit: '0x0', - gasUsed: '0x0' - }, - isGasIncludedTrade: true, - } as unknown as GasIncludedQuote; - - const result = getGasIncludedTransactionFees(mockQuote); - expect(result).toEqual({ - approvalTxFees: mockQuote.approvalTxFees, - tradeTxFees: mockQuote.tradeTxFees, - }); - }); - - it('returns undefined when gas is not included', () => { - const mockQuote = { - tradeTxFees: { - fees: [{ - tokenFees: ['mockTokenFee'], - }], - cancelFees: {}, - feeEstimate: '0x0', - gasLimit: '0x0', - gasUsed: '0x0' - }, - approvalTxFees: null, - isGasIncludedTrade: false, - } as unknown as GasIncludedQuote; - - const result = getGasIncludedTransactionFees(mockQuote); - expect(result).toBeUndefined(); - }); - - it('returns undefined when token fee does not exist', () => { - const mockQuote = { - tradeTxFees: { - fees: [{}], - cancelFees: {}, - feeEstimate: '0x0', - gasLimit: '0x0', - gasUsed: '0x0' - }, - approvalTxFees: null, - isGasIncludedTrade: true, - } as unknown as GasIncludedQuote; - - const result = getGasIncludedTransactionFees(mockQuote); - expect(result).toBeUndefined(); - }); - }); }); diff --git a/app/util/smart-transactions/index.ts b/app/util/smart-transactions/index.ts index 0a38b02a1518..4b190b5b2a01 100644 --- a/app/util/smart-transactions/index.ts +++ b/app/util/smart-transactions/index.ts @@ -8,7 +8,7 @@ import { getIsNativeTokenTransferred, } from '../transactions'; import SmartTransactionsController from '@metamask/smart-transactions-controller'; -import { SmartTransaction, Fees } from '@metamask/smart-transactions-controller/dist/types'; +import { SmartTransaction } from '@metamask/smart-transactions-controller/dist/types'; import type { ControllerMessenger } from '../../core/Engine'; const TIMEOUT_FOR_SMART_TRANSACTION_CONFIRMATION_DONE_EVENT = 10000; @@ -126,23 +126,3 @@ export const getSmartTransactionMetricsProperties = async ( smart_transaction_proxied: proxied, }; }; - -export type GasIncludedQuote = Fees & { isGasIncludedTrade?: boolean }; - -// @ts-expect-error Property 'tokenFees' does not exist on type 'Fee'. Need to update the type. -// Currently, we take the first token for gas fee payment, but later, a user can choose which token to use for gas payment. -export const getTradeTxTokenFee = (quote: GasIncludedQuote) => quote?.tradeTxFees?.fees?.[0]?.tokenFees?.[0]; - -// We get gas included fees from a swap quote now. In a future iteration we will have a universal -// implementation that works for non-swaps transactions as well. -export const getGasIncludedTransactionFees = (quote: GasIncludedQuote) => { - const tradeTxTokenFee = getTradeTxTokenFee(quote); - let transactionFees; - if (tradeTxTokenFee && quote?.isGasIncludedTrade) { - transactionFees = { - approvalTxFees: quote?.approvalTxFees, - tradeTxFees: quote?.tradeTxFees, - }; - } - return transactionFees; -}; diff --git a/app/util/smart-transactions/smart-publish-hook.test.ts b/app/util/smart-transactions/smart-publish-hook.test.ts index 183cf828a8c4..e0e171140643 100644 --- a/app/util/smart-transactions/smart-publish-hook.test.ts +++ b/app/util/smart-transactions/smart-publish-hook.test.ts @@ -166,11 +166,11 @@ function withRequest( .spyOn(smartTransactionsController, 'getFees') .mockResolvedValue({ tradeTxFees: { + cancelFees: [], feeEstimate: 42000000000000, + fees: [{ maxFeePerGas: 12843636951, maxPriorityFeePerGas: 2853145236 }], gasLimit: 21000, gasUsed: 21000, - cancelFees: [], - fees: [{ maxFeePerGas: 12843636951, maxPriorityFeePerGas: 2853145236 }], }, approvalTxFees: null, }); @@ -185,7 +185,6 @@ function withRequest( transactionMeta: { ...defaultTransactionMeta, }, - transactionFees: undefined, smartTransactionsController, controllerMessenger: messenger, transactionController: createTransactionControllerMock(), @@ -697,30 +696,4 @@ describe('submitSmartTransactionHook', () => { expect(setStatusRefreshIntervalSpy).not.toHaveBeenCalled(); }); }); - - it('uses provided transaction fees instead of fetching new ones if provided', async () => { - withRequest(async ({ request, getFeesSpy }) => { - const transactionFees = { - tradeTxFees: { - feeEstimate: 41000000000000, - gasLimit: 21000, - gasUsed: 21000, - cancelFees: [], - fees: [{ maxFeePerGas: 13843636951, maxPriorityFeePerGas: 2953145236 }], - }, - approvalTxFees: null, - }; - request.transactionFees = transactionFees; - await submitSmartTransactionHook(request); - expect(getFeesSpy).not.toHaveBeenCalled(); - }); - }); - - it('fetches new fees if no transaction fees provided', async () => { - withRequest(async ({ request, getFeesSpy }) => { - request.transactionFees = undefined; - await submitSmartTransactionHook(request); - expect(getFeesSpy).toHaveBeenCalled(); - }); - }); }); diff --git a/app/util/smart-transactions/smart-publish-hook.ts b/app/util/smart-transactions/smart-publish-hook.ts index 66077e3bfc49..0f8bb4496d4a 100644 --- a/app/util/smart-transactions/smart-publish-hook.ts +++ b/app/util/smart-transactions/smart-publish-hook.ts @@ -57,7 +57,6 @@ export interface SubmitSmartTransactionRequest { } | Record; }; - transactionFees: Fees | undefined; } const LOG_PREFIX = 'STX publishHook'; @@ -87,7 +86,6 @@ class SmartTransactionHook { #transactionMeta: TransactionMeta; #txParams: TransactionParams; #controllerMessenger: SubmitSmartTransactionRequest['controllerMessenger']; - #transactionFees: Fees | undefined; #isDapp: boolean; #isSend: boolean; @@ -109,7 +107,6 @@ class SmartTransactionHook { shouldUseSmartTransaction, approvalController, featureFlags, - transactionFees, } = request; this.#approvalId = undefined; this.#approvalEnded = false; @@ -119,7 +116,6 @@ class SmartTransactionHook { this.#approvalController = approvalController; this.#shouldUseSmartTransaction = shouldUseSmartTransaction; this.#featureFlags = featureFlags; - this.#transactionFees = transactionFees; this.#chainId = transactionMeta.chainId; this.#txParams = transactionMeta.txParams; this.#controllerMessenger = controllerMessenger; @@ -186,15 +182,7 @@ class SmartTransactionHook { ); try { - let getFeesResponse; - if ( - this.#transactionFees?.tradeTxFees || - this.#transactionFees?.approvalTxFees - ) { - getFeesResponse = this.#transactionFees; - } else { - getFeesResponse = await this.#getFees(); - } + const getFeesResponse = await this.#getFees(); // In the event that STX health check passes, but for some reason /getFees fails, we fallback to a regular transaction if (!getFeesResponse) { return useRegularTransactionSubmit; diff --git a/locales/languages/en.json b/locales/languages/en.json index 6579866681c0..45d5cf61f5c6 100644 --- a/locales/languages/en.json +++ b/locales/languages/en.json @@ -2840,12 +2840,9 @@ "n_quotes": "{{numberOfQuotes}} quotes", "view_details": "View details", "estimated_gas_fee": "Estimated gas fee", - "gas_fee": "Gas fee", - "included": "included", "max_gas_fee": "Max gas fee", "edit": "Edit", "quotes_include_fee": "Quotes include a {{fee}}% MetaMask fee", - "quotes_include_gas_and_metamask_fee": "Quote includes gas and a {{fee}}% MetaMask fee", "tap_to_swap": "Tap to Swap", "swipe_to_swap": "Swipe to swap", "swipe_to": "Swipe to", @@ -2915,8 +2912,6 @@ "high_recommendation": "Swaps are typically time sensitive. “High” will help avoid potential losses due to changes in market conditions.", "recommended": "Recommended", "recommended_gas": "Recommended gas fee", - "gas_included_tooltip_explanation": "This quote incorporates gas fees by adjusting the token amount sent or received. You may receive ETH in a separate transaction on your activity list.", - "gas_included_tooltip_explanation_link_text": "Learn more about gas fees", "gas_education_title": "Estimated gas fees", "gas_education_1": "Gas fees are paid to crypto miners who process transactions on the ", "gas_education_2_ethereum": "Ethereum network.", From ad5afb5a6b17d43693f6c450ca18cc9e12d24bd7 Mon Sep 17 00:00:00 2001 From: metamaskbot Date: Sat, 22 Feb 2025 21:11:07 +0000 Subject: [PATCH 025/473] Bump version number to 1581 --- android/app/build.gradle | 2 +- bitrise.yml | 4 ++-- ios/MetaMask.xcodeproj/project.pbxproj | 12 ++++++------ 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/android/app/build.gradle b/android/app/build.gradle index 4cdcb3d3cb48..a22d78aba702 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -179,7 +179,7 @@ android { minSdkVersion rootProject.ext.minSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion versionName "7.41.0" - versionCode 1579 + versionCode 1581 testBuildType System.getProperty('testBuildType', 'debug') missingDimensionStrategy 'react-native-camera', 'general' testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" diff --git a/bitrise.yml b/bitrise.yml index 6b3053138e33..ba14eac18ff0 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -1828,13 +1828,13 @@ app: VERSION_NAME: 7.41.0 - opts: is_expand: false - VERSION_NUMBER: 1579 + VERSION_NUMBER: 1581 - opts: is_expand: false FLASK_VERSION_NAME: 7.41.0 - opts: is_expand: false - FLASK_VERSION_NUMBER: 1579 + FLASK_VERSION_NUMBER: 1581 - opts: is_expand: false ANDROID_APK_LINK: '' diff --git a/ios/MetaMask.xcodeproj/project.pbxproj b/ios/MetaMask.xcodeproj/project.pbxproj index 77ee88f38cbf..99ebc724d428 100644 --- a/ios/MetaMask.xcodeproj/project.pbxproj +++ b/ios/MetaMask.xcodeproj/project.pbxproj @@ -1380,7 +1380,7 @@ CODE_SIGN_IDENTITY = "Apple Development"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1579; + CURRENT_PROJECT_VERSION = 1581; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = 48XVW22RCG; @@ -1449,7 +1449,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMask.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1579; + CURRENT_PROJECT_VERSION = 1581; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 48XVW22RCG; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 48XVW22RCG; @@ -1514,7 +1514,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMaskDebug.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1579; + CURRENT_PROJECT_VERSION = 1581; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = 48XVW22RCG; @@ -1580,7 +1580,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMask.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1579; + CURRENT_PROJECT_VERSION = 1581; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 48XVW22RCG; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 48XVW22RCG; @@ -1739,7 +1739,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMaskDebug.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1579; + CURRENT_PROJECT_VERSION = 1581; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = 48XVW22RCG; @@ -1808,7 +1808,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMask.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1579; + CURRENT_PROJECT_VERSION = 1581; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 48XVW22RCG; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 48XVW22RCG; From 807550f2d6f1321e8c52ee18448bf796516c485c Mon Sep 17 00:00:00 2001 From: OGPoyraz Date: Sun, 23 Feb 2025 10:04:46 +0100 Subject: [PATCH 026/473] chore: Cherry-pick `13637` (#13661) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## **Description** Cherry-picks https://github.com/MetaMask/metamask-mobile/commit/bee0c071e650d358a91158ff0fc516bcc6aed844 This PR relocates `RetryModal` to stop flickering in `TransactionsHistory` screen. ## **Related issues** Fixes: https://github.com/MetaMask/metamask-mobile/issues/13547 ## **Manual testing steps** See issue https://github.com/MetaMask/metamask-mobile/issues/13547 ## **Screenshots/Recordings** ### **Before** ### **After** ## **Pre-merge author checklist** - [X] I’ve followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile Coding Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [X] I've completed the PR template to the best of my ability - [X] I’ve included tests if applicable - [X] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [X] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. ## **Pre-merge reviewer checklist** - [ ] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [ ] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots. ## **Description** ## **Related issues** Fixes: ## **Manual testing steps** 1. Go to this page... 2. 3. ## **Screenshots/Recordings** ### **Before** ### **After** ## **Pre-merge author checklist** - [ ] I’ve followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile Coding Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [ ] I've completed the PR template to the best of my ability - [ ] I’ve included tests if applicable - [ ] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [ ] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. ## **Pre-merge reviewer checklist** - [ ] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [ ] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots. From c92c9a06c03f3fadd604b63ca63f948719a8974d Mon Sep 17 00:00:00 2001 From: Jyoti Puri Date: Mon, 24 Feb 2025 21:48:06 +0530 Subject: [PATCH 027/473] fix: origin url displayed for signatures (#13692) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## **Description** Fix request from url displayed for signatures. Wrong url is spamming sentry. ## **Related issues** Fixes: https://github.com/MetaMask/metamask-mobile/issues/13580 ## **Manual testing steps** NA ## **Screenshots/Recordings** NA ## **Pre-merge author checklist** - [X] I’ve followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile Coding Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [X] I've completed the PR template to the best of my ability - [X] I’ve included tests if applicable - [X] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [X] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. ## **Pre-merge reviewer checklist** - [ ] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [ ] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots. --- .../Confirm/Info/PersonalSign/Message.tsx | 5 +-- .../Info/PersonalSign/PersonalSign.test.tsx | 3 +- .../Shared/InfoRowOrigin/InfoRowOrigin.tsx | 3 +- .../InfoValue/DisplayURL/DisplayURL.test.tsx | 7 +++++ .../InfoValue/DisplayURL/DisplayURL.tsx | 31 ++++++++++++------- 5 files changed, 31 insertions(+), 18 deletions(-) diff --git a/app/components/Views/confirmations/components/Confirm/Info/PersonalSign/Message.tsx b/app/components/Views/confirmations/components/Confirm/Info/PersonalSign/Message.tsx index e824091f94cb..768774cf1f21 100644 --- a/app/components/Views/confirmations/components/Confirm/Info/PersonalSign/Message.tsx +++ b/app/components/Views/confirmations/components/Confirm/Info/PersonalSign/Message.tsx @@ -12,7 +12,6 @@ import { sanitizeString } from '../../../../../../../util/string'; import { getSIWEDetails, SIWEMessage } from '../../../../utils/signature'; import { useSignatureRequest } from '../../../../hooks/useSignatureRequest'; import Address from '../../../UI/InfoRow/InfoValue/Address'; -import DisplayURL from '../../../UI/InfoRow/InfoValue/DisplayURL'; import InfoDate from '../../../UI/InfoRow/InfoValue/InfoDate'; import InfoRow from '../../../UI/InfoRow'; import Network from '../../../UI/InfoRow/InfoValue/Network'; @@ -59,9 +58,7 @@ const DetailedSIWEMessage = ({ return ( {parsedMessage?.statement} - - - + {uri} diff --git a/app/components/Views/confirmations/components/Confirm/Info/PersonalSign/PersonalSign.test.tsx b/app/components/Views/confirmations/components/Confirm/Info/PersonalSign/PersonalSign.test.tsx index 92a9fcdc6cb2..239b70c5eb5b 100644 --- a/app/components/Views/confirmations/components/Confirm/Info/PersonalSign/PersonalSign.test.tsx +++ b/app/components/Views/confirmations/components/Confirm/Info/PersonalSign/PersonalSign.test.tsx @@ -52,7 +52,8 @@ describe('PersonalSign', () => { ), ).toHaveLength(2); expect(getByText('URL')).toBeDefined(); - expect(getAllByText('metamask.github.io')).toHaveLength(2); + expect(getAllByText('metamask.github.io')).toBeDefined(); + expect(getAllByText('https://metamask.github.io')).toBeDefined(); expect(getByText('Network')).toBeDefined(); expect(getAllByText('Ethereum Mainnet')).toHaveLength(2); expect(getByText('Account')).toBeDefined(); diff --git a/app/components/Views/confirmations/components/Confirm/Info/Shared/InfoRowOrigin/InfoRowOrigin.tsx b/app/components/Views/confirmations/components/Confirm/Info/Shared/InfoRowOrigin/InfoRowOrigin.tsx index e44d8ae1911b..2ee98b93fc16 100644 --- a/app/components/Views/confirmations/components/Confirm/Info/Shared/InfoRowOrigin/InfoRowOrigin.tsx +++ b/app/components/Views/confirmations/components/Confirm/Info/Shared/InfoRowOrigin/InfoRowOrigin.tsx @@ -30,7 +30,8 @@ const InfoRowOrigin = () => { label={strings('confirm.request_from')} tooltip={strings('confirm.personal_sign_tooltip')} > - + {/* TODO: request from url below will only work for signatures */} + {isSIWEMessage && ( { const { getByText } = render(); expect(getByText('HTTP')).toBeDefined(); }); + + it('displays only the host part of the URL', () => { + const { getByText } = render( + , + ); + expect(getByText('metamask.github.io')).toBeTruthy(); + }); }); diff --git a/app/components/Views/confirmations/components/UI/InfoRow/InfoValue/DisplayURL/DisplayURL.tsx b/app/components/Views/confirmations/components/UI/InfoRow/InfoValue/DisplayURL/DisplayURL.tsx index af9da98a7690..285877dc56f3 100644 --- a/app/components/Views/confirmations/components/UI/InfoRow/InfoValue/DisplayURL/DisplayURL.tsx +++ b/app/components/Views/confirmations/components/UI/InfoRow/InfoValue/DisplayURL/DisplayURL.tsx @@ -1,4 +1,4 @@ -import React from 'react'; +import React, { useEffect, useState } from 'react'; import { View } from 'react-native'; import Icon, { @@ -15,19 +15,26 @@ interface DisplayURLProps { url: string; } -const DisplayURL = ({ url }: DisplayURLProps) => { - let urlObject; +function extractHostname(url: string) { + // eslint-disable-next-line no-useless-escape + const match = url.match(/^(?:https?:\/\/)?([^\/:]+)/); + return match ? match[1] : null; +} - try { - urlObject = new URL(url); - } catch (e) { - // eslint-disable-next-line no-console - Logger.error(e as Error, `DisplayURL: new URL(url) cannot parse ${url}`); - } +const DisplayURL = ({ url }: DisplayURLProps) => { + const [isHTTP, setIsHTTP] = useState(false); - const isHTTP = urlObject?.protocol === 'http:'; + useEffect(() => { + let urlObject; + try { + urlObject = new URL(url); + } catch (e) { + Logger.error(e as Error, `DisplayURL: new URL(url) cannot parse ${url}`); + } + setIsHTTP(urlObject?.protocol === 'http:'); + }, [url]); - const urlWithoutProtocol = url?.replace(/https?:\/\//u, ''); + const hostName = extractHostname(url); const { styles } = useStyles(styleSheet, {}); @@ -43,7 +50,7 @@ const DisplayURL = ({ url }: DisplayURLProps) => { HTTP )} - {urlWithoutProtocol} + {hostName} ); }; From d00623f1e95ef5f083aae7f34ce9e70d8b18e604 Mon Sep 17 00:00:00 2001 From: Jyoti Puri Date: Tue, 25 Feb 2025 00:07:30 +0530 Subject: [PATCH 028/473] cherry-pick: @metamask/transaction-controller version to exact 45.0.0 (#13695) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## **Description** Fix swaps done using hardware wallets. ## **Related issues** Fixes: #13570 ## **Manual testing steps** 1. Go to this page... 2. 3. ## **Screenshots/Recordings** TODO ## **Pre-merge author checklist** - [X] I’ve followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile Coding Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [X] I've completed the PR template to the best of my ability - [X] I’ve included tests if applicable - [X] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [X] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. ## **Pre-merge reviewer checklist** - [ ] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [ ] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots. Co-authored-by: OGPoyraz --- app/core/Engine/Engine.ts | 3 ++- package.json | 2 +- yarn.lock | 16 ++++++++-------- 3 files changed, 11 insertions(+), 10 deletions(-) diff --git a/app/core/Engine/Engine.ts b/app/core/Engine/Engine.ts index 94174b73bcc6..b7e8efde3e38 100644 --- a/app/core/Engine/Engine.ts +++ b/app/core/Engine/Engine.ts @@ -43,6 +43,7 @@ import { TransactionController, TransactionMeta, TransactionControllerOptions, + TransactionControllerMessenger, } from '@metamask/transaction-controller'; import { GasFeeController } from '@metamask/gas-fee-controller'; import { @@ -1273,7 +1274,7 @@ export class Engine { `${networkController.name}:findNetworkClientIdByChainId`, ], allowedEvents: [`NetworkController:stateChange`], - }), + }) as unknown as TransactionControllerMessenger, pendingTransactions: { isResubmitEnabled: () => false, }, diff --git a/package.json b/package.json index 7cbf3cadadaa..be6a7cc71cf4 100644 --- a/package.json +++ b/package.json @@ -212,7 +212,7 @@ "@metamask/stake-sdk": "^1.0.0", "@metamask/swappable-obj-proxy": "^2.1.0", "@metamask/swaps-controller": "^12.1.0", - "@metamask/transaction-controller": "^45.1.0", + "@metamask/transaction-controller": "45.0.0", "@metamask/utils": "^11.1.0", "@ngraveio/bc-ur": "^1.1.6", "@notifee/react-native": "^9.0.0", diff --git a/yarn.lock b/yarn.lock index e6089c75ba9e..2470b17bb0a9 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1984,7 +1984,7 @@ "@ethereumjs/util" "^8.1.0" ethereum-cryptography "^2.0.0" -"@ethereumjs/tx@^5.2.1", "@ethereumjs/tx@^5.4.0": +"@ethereumjs/tx@^5.2.1": version "5.4.0" resolved "https://registry.yarnpkg.com/@ethereumjs/tx/-/tx-5.4.0.tgz#6f47894cc3e2d4e63d87c62b41ed7e8180a1de58" integrity sha512-SCHnK7m/AouZ7nyoR0MEXw1OO/tQojSbp88t8oxhwes5iZkZCtfFdUrJaiIb72qIpH2FVw6s1k1uP7LXuH7PsA== @@ -5552,18 +5552,18 @@ resolved "https://registry.yarnpkg.com/@metamask/test-dapp/-/test-dapp-8.9.0.tgz#bac680e8f0007b3a11440f7e311674d6457d37ed" integrity sha512-N/WfmdrzJm+xbpuqJsfMrlrAhiNDsllIpwt9gDDeEKDlQAfJnMtT9xvOvBJbXY7zgMdtGZuD+KY64jNKabbuVQ== -"@metamask/transaction-controller@^45.1.0": - version "45.1.0" - resolved "https://registry.yarnpkg.com/@metamask/transaction-controller/-/transaction-controller-45.1.0.tgz#271f0a9575551bfd494ff79be70fb142d792a987" - integrity sha512-LyNjcZ6zbLAKgkCJbFK+e7oPespl8c4kGJXV8JKzLGOmdU1LORpNgeo61nUK7/0b/LVovFTCyJO8wjk7ESFI2Q== +"@metamask/transaction-controller@45.0.0": + version "45.0.0" + resolved "https://registry.yarnpkg.com/@metamask/transaction-controller/-/transaction-controller-45.0.0.tgz#960cdc9fcc6dc3f9f6fd3ec082def8d67696e742" + integrity sha512-x+5OFiX0sfnLrqN35VDHAB9g4YYLn0XVrYChPTY/Rb7E3pkPvWR4aY2St5ZG4vao6upf8ziPnMdYlpFgGQZxsQ== dependencies: - "@ethereumjs/common" "^4.4.0" - "@ethereumjs/tx" "^5.4.0" + "@ethereumjs/common" "^3.2.0" + "@ethereumjs/tx" "^4.2.0" "@ethereumjs/util" "^8.1.0" "@ethersproject/abi" "^5.7.0" "@ethersproject/contracts" "^5.7.0" "@ethersproject/providers" "^5.7.0" - "@metamask/base-controller" "^8.0.0" + "@metamask/base-controller" "^7.1.1" "@metamask/controller-utils" "^11.5.0" "@metamask/eth-query" "^4.0.0" "@metamask/metamask-eth-abis" "^3.1.1" From 4a6eca925f14992e5deb6a85caf82cdc7476a0b8 Mon Sep 17 00:00:00 2001 From: "runway-github[bot]" <73448015+runway-github[bot]@users.noreply.github.com> Date: Mon, 24 Feb 2025 22:46:10 +0200 Subject: [PATCH 029/473] chore(runway): cherry-pick fix: cp-7.41.0 implement transparent app icons for improved dark/light mode handling (#13697) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - fix: cp-7.41.0 implement transparent app icons for improved dark/light mode handling (#13597) ## **Description** **Issue:** Our app icons were stuck in dark mode and ignored light mode settings in TestFlight builds (while working correctly locally). The build process was stripping the light mode icons during compilation. **Solution:** Implement transparent background app icons that leverage iOS system defaults: - Light mode: System automatically applies white background - Dark mode: System automatically applies gradient black background This matches our brand color schemes perfectly and simplifies our icon management. **Additional Changes:** - Removed legacy `CFBundleIcons` dictionary from Info.plist - Kept only the modern `CFBundleIconName` entry - Simplified asset catalog configuration to use transparent icons **Risk Assessment:** - Primary risk is potential App Store rejection due to transparent app icons - However, many apps successfully use this approach - Fallback backgrounds are consistent with our brand guidelines - Simplifies our icon management and build process ### Testing: - Verified icons display correctly in development - Confirmed proper light/dark mode behavior locally ### Next Steps: - Monitor App Store review process - Have backup solution with explicit backgrounds if needed - Document this approach for future reference ## **Related issues** Fixes: [#4226](https://github.com/MetaMask/MetaMask-planning/issues/4226) ## **Manual testing steps** 1. Install a fresh app 2. Hold down on the home screen until the apps jiggle, indicating that the icons can be moved/deleted/edited 3. Click on the "Edit" button at the top right or left depending on the device, and click "Customize" 4. A bottom sheet should appear allowing you to toggle light, dark, and tint 5. Confirm that those still work ## **Screenshots/Recordings** ### Release Build https://github.com/user-attachments/assets/bf3365b6-ac27-4592-a48b-56ae9a28bd18 ### **Before** ![Screenshot 2025-02-17 at 09 51 36](https://github.com/user-attachments/assets/cada73ae-4b0b-46ab-b8d8-b319bdfbe1ee) ### **After** ![after](https://github.com/user-attachments/assets/dee4e5c3-9d17-4ea7-a025-4851949d4fea) ## **Pre-merge author checklist** - [x] I’ve followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile Coding Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [x] I've completed the PR template to the best of my ability - [x] I’ve included tests if applicable - [x] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [x] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. ## **Pre-merge reviewer checklist** - [x] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [x] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots. --------- Co-authored-by: metamaskbot [3d1e941](https://github.com/MetaMask/metamask-mobile/commit/3d1e94118dc53221836c3d986f8d74a5f7d70dc6) Co-authored-by: Vince Howard Co-authored-by: metamaskbot --- .../AppIcon.appiconset/100.png | Bin 0 -> 6143 bytes .../AppIcon.appiconset/1024 1.png | Bin 95338 -> 0 bytes .../AppIcon.appiconset/1024.png | Bin 63840 -> 40426 bytes .../AppIcon.appiconset/114 1.png | Bin 11212 -> 0 bytes .../AppIcon.appiconset/114.png | Bin 9224 -> 7005 bytes .../AppIcon.appiconset/120 1.png | Bin 9741 -> 0 bytes .../AppIcon.appiconset/120 2.png | Bin 11874 -> 0 bytes .../AppIcon.appiconset/120 3.png | Bin 11874 -> 0 bytes .../AppIcon.appiconset/120.png | Bin 9741 -> 7328 bytes .../AppIcon.appiconset/128 1.png | Bin 2747 -> 0 bytes .../AppIcon.appiconset/128.png | Bin 2279 -> 0 bytes .../AppIcon.appiconset/136 1.png | Bin 2566 -> 0 bytes .../AppIcon.appiconset/136.png | Bin 2519 -> 0 bytes .../AppIcon.appiconset/144.png | Bin 0 -> 8837 bytes .../AppIcon.appiconset/152 1.png | Bin 15510 -> 0 bytes .../AppIcon.appiconset/152.png | Bin 12452 -> 9389 bytes .../AppIcon.appiconset/167 1.png | Bin 17470 -> 0 bytes .../AppIcon.appiconset/167.png | Bin 13739 -> 10296 bytes .../AppIcon.appiconset/180 1.png | Bin 18745 -> 0 bytes .../AppIcon.appiconset/180.png | Bin 14898 -> 11058 bytes .../AppIcon.appiconset/192 1.png | Bin 3933 -> 0 bytes .../AppIcon.appiconset/192.png | Bin 3193 -> 0 bytes .../Images.xcassets/AppIcon.appiconset/20.png | Bin 0 -> 1530 bytes .../Images.xcassets/AppIcon.appiconset/29.png | Bin 0 -> 1862 bytes .../AppIcon.appiconset/40 1.png | Bin 3062 -> 0 bytes .../Images.xcassets/AppIcon.appiconset/40.png | Bin 2704 -> 2470 bytes .../Images.xcassets/AppIcon.appiconset/50.png | Bin 0 -> 3081 bytes .../Images.xcassets/AppIcon.appiconset/57.png | Bin 0 -> 3494 bytes .../AppIcon.appiconset/58 1.png | Bin 4896 -> 0 bytes .../Images.xcassets/AppIcon.appiconset/58.png | Bin 4206 -> 3582 bytes .../AppIcon.appiconset/60 1.png | Bin 5131 -> 0 bytes .../Images.xcassets/AppIcon.appiconset/60.png | Bin 4445 -> 3671 bytes .../Images.xcassets/AppIcon.appiconset/72.png | Bin 0 -> 4392 bytes .../AppIcon.appiconset/76 1.png | Bin 6846 -> 0 bytes .../Images.xcassets/AppIcon.appiconset/76.png | Bin 5848 -> 4647 bytes .../AppIcon.appiconset/80 1.png | Bin 7362 -> 0 bytes .../Images.xcassets/AppIcon.appiconset/80.png | Bin 6230 -> 4830 bytes .../AppIcon.appiconset/87 1.png | Bin 8049 -> 0 bytes .../Images.xcassets/AppIcon.appiconset/87.png | Bin 6905 -> 5332 bytes .../AppIcon.appiconset/Contents.json | 528 +++++++----------- ios/MetaMask/Info.plist | 13 - 41 files changed, 203 insertions(+), 338 deletions(-) create mode 100644 ios/MetaMask/Images.xcassets/AppIcon.appiconset/100.png delete mode 100644 ios/MetaMask/Images.xcassets/AppIcon.appiconset/1024 1.png delete mode 100644 ios/MetaMask/Images.xcassets/AppIcon.appiconset/114 1.png delete mode 100644 ios/MetaMask/Images.xcassets/AppIcon.appiconset/120 1.png delete mode 100644 ios/MetaMask/Images.xcassets/AppIcon.appiconset/120 2.png delete mode 100644 ios/MetaMask/Images.xcassets/AppIcon.appiconset/120 3.png delete mode 100644 ios/MetaMask/Images.xcassets/AppIcon.appiconset/128 1.png delete mode 100644 ios/MetaMask/Images.xcassets/AppIcon.appiconset/128.png delete mode 100644 ios/MetaMask/Images.xcassets/AppIcon.appiconset/136 1.png delete mode 100644 ios/MetaMask/Images.xcassets/AppIcon.appiconset/136.png create mode 100644 ios/MetaMask/Images.xcassets/AppIcon.appiconset/144.png delete mode 100644 ios/MetaMask/Images.xcassets/AppIcon.appiconset/152 1.png delete mode 100644 ios/MetaMask/Images.xcassets/AppIcon.appiconset/167 1.png delete mode 100644 ios/MetaMask/Images.xcassets/AppIcon.appiconset/180 1.png delete mode 100644 ios/MetaMask/Images.xcassets/AppIcon.appiconset/192 1.png delete mode 100644 ios/MetaMask/Images.xcassets/AppIcon.appiconset/192.png create mode 100644 ios/MetaMask/Images.xcassets/AppIcon.appiconset/20.png create mode 100644 ios/MetaMask/Images.xcassets/AppIcon.appiconset/29.png delete mode 100644 ios/MetaMask/Images.xcassets/AppIcon.appiconset/40 1.png create mode 100644 ios/MetaMask/Images.xcassets/AppIcon.appiconset/50.png create mode 100644 ios/MetaMask/Images.xcassets/AppIcon.appiconset/57.png delete mode 100644 ios/MetaMask/Images.xcassets/AppIcon.appiconset/58 1.png delete mode 100644 ios/MetaMask/Images.xcassets/AppIcon.appiconset/60 1.png create mode 100644 ios/MetaMask/Images.xcassets/AppIcon.appiconset/72.png delete mode 100644 ios/MetaMask/Images.xcassets/AppIcon.appiconset/76 1.png delete mode 100644 ios/MetaMask/Images.xcassets/AppIcon.appiconset/80 1.png delete mode 100644 ios/MetaMask/Images.xcassets/AppIcon.appiconset/87 1.png diff --git a/ios/MetaMask/Images.xcassets/AppIcon.appiconset/100.png b/ios/MetaMask/Images.xcassets/AppIcon.appiconset/100.png new file mode 100644 index 0000000000000000000000000000000000000000..937acc14edf38846f1ca44222fd74b78d5101e96 GIT binary patch literal 6143 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%0DYIZ8uL{@zchA-% zL4^K|14b8gro20eTwl6Dm&g%~-T}IX>aX5)*Ugzk6SjJXg5<2Ev5GAVkFtiYuesGs z%`(0`bKW;ox}Vhu9Q((^(~_sMLdhfDP)L*&v}BshuiS$V-v{p6Wz=Aj>QhTRZ8f(H z_+?k4n7oy7wAapw>!Ve`b$+FtRcsYFCMA&zo1yHpD^YaBPD;!E3uC-uYLEzO3(v6p zCU6jZ`CTG*jM@J7$1ecvpitn4QV25?m=p*t5jo62Sa{ffp@p%(f#$4FG(16 zdRk<#{&?Qb`xY^yn?7Vrz#U-lZ;r)s*t>?#F>7zKO)-evr8t!W1&e$WB^v z;_<;z4#SjISCH?w?*Z)%rJH9A)#l@BEGmFx84)j$4pOk)jUzn{#~Jka=Wcbg zQsZfQ0<>@0s`98@Q64b;nE;b#2~Js2!Vrb+c6X{_ky>fPGdDG|Q&Y27kZ*(roTQ$o zENc>lqe-c@RMHqR(+UEg_7q%)nG*x$u4`J2=X4@jgW(OPO!4U>buqfU-!zl)>Y6bQ z$BMDTo7C$YA{^=8C1#KR;u}8G5XFyGdBz8^K$(iGRitP&Ps9&D2zmVy`HEa zEz7lh0*A;lLeH?-MvplBY6rz2o6u?m`4tI)&R1r9ryv zMc!$#SxO@NXyy;TWavR|@beo91P7;C{aVJ8u?#-Hl-^d$Zgs5w}RO~%G zWV>;;_JZ?9^PtW0lCTYeoLJz+|h%GKTF)BN2_J_weRzS{;tk* zd5&8O)A3Ed&DLN)G>$GfZT%DJXHTIWn$y8ARxJKk{7JbH@|#ucgnYN%vQ2XXc+dU{ zx%*SOUB{)Uq}8{F9)UzPFUo%151- zY|;IR?$Nz7TZ$PURNKu=ESd%*AU45LWaF*u2zcui>hFQr?x^L`zGC)*^z`QFChBE> z_o9!$t6$fSwAZl2z9_0jS<=^`q0pI`9%(UY>3&~7KO0U)Kd#6-%DWl#)%DV-0E(;DMgDMO}SCg@iJOtz+A7rio)#rN^7@HuzP4Szhi{Fc+MU* z{r>m5*EW+jp#WVH^Nra*bbz+BaIlIb!Zq8~pSF<=6@CZ9`Dp8@vmU7xYPBq!dlU7g zwm1c)GgNK7O5ED8v53B|X`7p`y1fiW?OQfD*bbWOG1sVgXudm#i)7z78cc+nSY4AP z{$(t9fXE4N>)qk(t#6JKZx;4SRx3w5WE)+Fv4f9ye|hSNj_cQ^Uz;II+XP&}c1FwJ z74hgjlv%RteS)PLvwyM!iT{I zYkah!Vzcbuvj$NhN6Ve^nH#eQEAXygS^?U8*rnAndn!Tx*}E6gudpwLH6t@BK0R6Ovkb=I|$ z3O@|U|^8IEJJjrtRIDLR$nDkU;Ed-4iXS=hernx5EKFN^Gopa*CrTw{$GHHr@f0~(EkevNC=Am4?xreH+Td%{&xpo7Y_#? m-`5^q|H}yS8~(Spu!IQse;B2pr`L}RKut+ov02_W`u_j}I-Yz0 literal 0 HcmV?d00001 diff --git a/ios/MetaMask/Images.xcassets/AppIcon.appiconset/1024 1.png b/ios/MetaMask/Images.xcassets/AppIcon.appiconset/1024 1.png deleted file mode 100644 index 15bdffa23fecfb26ed0607494df9222efb872069..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 95338 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%0DCD7BihY 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 z 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 diff --git a/ios/MetaMask/Images.xcassets/AppIcon.appiconset/114 1.png b/ios/MetaMask/Images.xcassets/AppIcon.appiconset/114 1.png deleted file mode 100644 index 4419603ea5cae3e26dd93d781f055c99ae3d8804..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11212 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 literal 9224 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

        Ll8sV54U()`Dt)Aub1mD@lmX_+ z;y_s`Y*~4*dUK8~SQbUZLw>|+D&Xlu<&z1A5o#_ENnYgvo@XUvF0q!UBY|YD4N&;Z zCfNEG84jEq1Csq1FY~DQ)oF-q{2YRZE?3b}J*QKVBn46fljWCUK$kv1-;?isfKAKeevo;wy+vP$Vja=L$uKxEfMq)1G61dwXAytPX&bbD?)qx^5D)PojO zrPta8zeMA|o^Ds`HKnn`dPLN~GTqY=j{r6&;`x0bpL7~_$X)T++7p$bLT2OCMrK7@bTD%K+1A9TPtcC5Ht#IsE4#&>ruzgbk1Zud{Q<%`| zXySuFFx0;8hYDoDyjS3!eucWW#uF08jUCO(qrQvA8XWye5#)wylZ~b=_>$F7P@QV7 z+rduqXO--vKXSSw+HVXZ#b+WqWE$e#heCGRAy8aA8ewjb)91zCuAPBxiUlv}#@=nbE^5qN{#)5rWI!fk>tEM%@rzzoGhx zF(}l96$SG09q{xYj_9CChzy^O=zs~3@_X@xjwukR1XF8j73ppe37$M3K3VV}-k$qg zc=G7qlIuCD0}9m0_`#ib;{3S}AyCuE1K->@Fxafo&8^?P1vVt%qa#XRw!k ziSYgsR8g_kAxS4{Inh=< zm2|SR-Qz~trZsqW_L-~=g&i-SL|Eux`&dZ9PhVVw!KX||#2+}e$+Za-fuC`1v$3yo zL;~=YZ$)JNVuUw*g6N)2EL*_}#prA^3L(;fX_MQ*aR`sK*M8>}<#nJ0Wqz-7aS*nsJOHd+VD3r{gvcoQga1>8wz&S>r0bB23 zO`D7sF4#zoJrX2{?5g*+9(Jx)X2z>~?-NM6!qfvjV5x0-whQ zE7jUEmBQ~-W*{X*jmS=jY+r@&+Qo=$S&CTMPADM>0tJYiHkE?a$QTO;ifmKc`WK_y zGn;j%t5R)dbHN+`G3_7mx!63`z+k^*`EdB7ANuoQ^gu zNTN?IwU&60d_0Eep3RJY!y7(EtaKx!x&}tUf_+6?^v8^7HFJqn z(^`>jD^Y&KDSV(7z|yq`?8TGenlJ;7k*C4hb5JX(Q%}-0dRMZdAP|hfAL3WVC$`~f z61i{R9$i58??3PuAlZE%f&j1E3XjXCyZM<-j@93)K4+_BaQx_gM7Dg6@Vbu>+4cpb z@`EhBN-R~l-~%`(%rI09kW4BwlSnPu90{W8?h9e* z^~3;BoA(I^SyzYlc+dHi8wYDAqtnp(Ew z??atH9)Fma8c`>Zrk3sa`%ov4#~&u9M$`$UsbxFPyA07*naRCr$Pod=jz)w%b7d!IhNFhd=B6Ht_*fT*a6E!JqRMjzufMq`X#jWxM3 zYDDuzqcP2x#EUV;Yu7{*P3#q^A|0d%1Bf#W!}K|IpZ(=sd+*`QFy*vC!kzs*JP*n_ z`>eJ8>;1odEzLAdlfLJmT>-5R;DZ)hHL*T`4{m(>06xg^?E|EJ$q z5Aqc_$fwsQ!F>Q9mXmU-kn~y*D$L9%hb(y z98HrTsNTCPaj?DJj3a3uP0#MSWewm+I84*}k0_lyi#VXiW1zXP(C&M>UI7#0apJlQ zfwped0&+$jhA$^KD~pyfz)E6uon4im^3z$P_}=B`Q*qT@#LGvk0TVZ%kG4Ap%U&BL z5VhN=o_9O<-2W)oy|tX76DM12n4v^x3~)RaLwCDb`qwA9@9P&bI3I4B)1Luf{~qyE zuSWOhsvSxnZSMuyjHCEicM*?9&|iCq+9&VhXK(J{(>-v_!w+%HH?G84+e}0`YXJZG z#w&Q^xBr8?#7l`D;g(4{{U%N!e(tU4GtRWeC_7ek^Z!}ew&>VlwD_{u(4U=4!>Wbc zyV~IMn1^_Mlvx*jjVpftG;zZ~cV%X@W(=_GL@5fn^Y}yAx?(Lkc{(kTI0FlO+;W(g zB9B3Q+F9rq-Ufrm?*;n*8f_=4s_HG6PtHYK_$)0k_}Qu$pVo!Q_v!>&;|v%zlso5d z!0q)}lAeJ;WCU=V{@t>X+h$K7Zp74BTpF}QVOXJ;n`e}e7j7UPC`3Q~YB=*+@aKuS zZGnBTTiXeAOf(EHKZyC_187aV2?dI{e@Pvm)P~9PfFZ?GnuZaD+u!<#ibIbe9yic4 z5QdBZc67wTXCLFiOD-X=#HDCO9s#*I3S)}g+&Ht005QzQdbAOT!udaf8E4zle6U*E z?dh10{s~Y07<1D{Xt{+%-CiD8Si`E?DESV!Vr;qHH0_S@&ENcz6E6ENj93hp+nu%= z&J189hVF9nr|T}|jXyj}Ua4Cd2F@cOH$`DmsfX`PFUITkV74}+84)=0O!)fkP;tn? zN85>X{P|{h`c9btJf=uuPM(s=UoWj=X?27GuPwRuqRD!;)Ww)}!B@F*-t!sj;fw&b z>?VUdj+?-aH5>5e=*qNDd<5ji2u$to<(jEQxD+L8Xf5@SQvj!31!sK^0{Q>`w5{k^ z#88Jw5dQva_}j0bu@*D8$nqpG`Q69$e6TZ2VFz%P#?o}6;W%Z(1~d1=jd=WljP!8Y z06Y4(YU6rtKX#Hptp?xO|@>)d}&Yg-H<0oT!$ zOJ265cJs%OTZrlMV#bB-H0G^n;H~YUPQi87PSZ4^5tARiv6$h9PtQmXrwy>9e?NF) z9>2frTNXVFU|l={azg~>4DoUK;YGv^Q{)&;+<;IE#3C^5D;8}JlMVB45+q5a_h|fiWh4Kr40a2yOk3&Uni!Y-;(oq-<@Fiq;q(EveY8ie zzL>Wkd7QkG?g4fTF9G?aVSX+-tdMw2K(=T}ncpJKLe-~U31?pqIfVxJ%DZB%!oy~ z{g^}8`N?LyfqnIFXTq%8I{EYw0lq$|fOynI{-1h;;zS~v>n!8zKW>HDUpug9yCWSh z{u?}XCu~^(qGw$mkT^V+@#OOA{AFDu&u?rc-)m{7o*svyO9u~N?t)ELTslpEI4yu3 z{rlPa)%^Il$!NNaI*E}xINBheJ35E2PADKAiSGqjWLjujq#_c6X{TAVJ^ZjQp0*R| zc*lAR*o7~G+XE^jYgj-efcwgZCZ1T|k~Fx9dN>j?x%IXAjGQ(rZ9SY8z>fZX@3G(U z@VCE1UcdJ4QBONm39GnJ5x8JnE~k&n$B4w0@7(qz(zYz#Dc^>3ZnUIie+Nkte=pPw zFa82vc@UcG+tINzc1LpG+}zBgYnsXRTKhkF5!kDTFTU@moP6~yX~(701K8HT4_|o! z?>+W(Qu?#BX|xFfjl zZ*Ae>RZZmBF^W{cZPUZ`2Gh?vm23X@m9#TUsRL~5f>Ulkz!kL~iFGD+|rNm$s*zY|-|}BYKav6X|&ST6pqKSo{*Wy%rs-h+TWw9LZg@ zy_MgtXv8n+@RXES0)c57v4~00fPUPy@KgMG`6}iw`Z<*+Wq{-HIJ&O0ef4tgJbsGu z22vxR_QP`)AY{OmhZQh$XinE4x6yV3_yTb9<#5hTkY8e3tGf9>(Ni+^uA704R!GW$p?nv8%$6B;~+=Z!Z?4Ca>zO4AP z+txr{k>%HlRCn@N;A*U?3iH6SdL^|kz0Kb0`M0|GgyRoi_|v(ZcHOOM>EYA?w)OAt zzjYq-pM0L&;-3BAWM(J=BQAsyhwG*map(Yl_aHm8Eg`{RGtB&|WpS(Gg4AfNZG2)( zi7HtB2E6~Y#S*@pPU*P4&ehmZ6XE`)^%$m!M^DZj>STX*2`>6ng{+0%%7_;sl;>W|D%bnKRop}AJXvP-Fzms>#$jjeSN?p<6@#4z!QE1wB3CyZM3Z7gb1 zP*%cS3pSHeSd_9JP6=QqH(9x2DRWPpj@zrLAI#<>?vqfpN7uM%dJ!W_yzPS_`|!JF zg*gX|f)R&Xe@{2Z>;SxNHGH<-0=tX(IpBWQ5ap+f>u8Odc(VwuGfmOM;g&eJ{QXVF z&psh#J)9E2PHyszKRm#r*Iu6${oC2*5RfAVj_68zgs z&SK$nFOgfkH^HAxDOMBHAZ$S4zsgu{IkK1m`4UV?2y3=&aa)3iPlo;@Z3)hhqIYkD z&C9F^RR;-nz^!dHxMxuvH9-Tv*k9QtvbN<^dbq*hu#@I+!}D*atcQ~aIKltDb;f9F zDzmG9yOQKk4EhChZaJ!iemSmvK^AF^N$JRRC>dn^JtGPBK>aS*u+Xxc6C51}+=h_B zy^HJktl3b33{`5=OOK<6^ZOO^lSNwy6cnbUhm!}`?plz=d*Ev)vf|aZ$tmnT33k>? z!k4Wv7?|tgmZOR(^2u*@kYur($IpcPQjnBox&RB90;*)S*3WNetXU~+jh1MfpDnKA z(}vjII;vg*S6(ZvK%r)Xu`{Rf{g)Ri-#C?EM@j%YF=*ujUv&-nWvR!Y(^(5u#215M z`EG7Ls+c^Fjw$)%L?%9DwpAgbGC65dw6&sEHOAWa+ct|LFPBEhh;#qqdOoR(?iX+q zb+F?Lr&^-lyoq#dPYsW)1Rl)nPekMFTKLABmQ!{#E$el)w2SsN2E3)j{6co?NL-wgHz? zrbsZ(f4}-ZqmP`Oa*#ur6zQB*siIe=$=nksv*qK}_;Qmg*U9DrD7ucp>~c5XIAIe0 zQB%-V6e|M*%Ldr=c!_LX#ZzxC=Z&5FTjyG0tmoC>1B(-_s^Wn*s0Tqhr;M>1zzcGCo^uM`F&KbUdi3hFCnZ!t{uqO zpFCxCI2fGzU*G1Udmd61t5Ou7>XRP8c1CIQk`KB2@7rgDQq#j+&k|iZ)#yw5`k7wQUQJtq-$&SC|}+wW)e5V%2f3BEg}iI5++EA51*q zl(gtMZHl%mRmpTjxZ{}d?A)+rzksZyHfH5o&m5J@8Kd*iOas%Kk2Ya;HujIhkC^M` zqXp|#`tYBhHuIN_ErboT*CSU76uX+Ecu;@tlB&wwyp*C>i3^dI1SeY4PyFD!yz+~O z$nPg%#I6h9Gg*B{tu{wsRFRu+Ow4CgsSi`qPEy9w<_G)t7UZS-gHGsk-TRo~kZMEG zJUZLzB0RRHiS>J;cp0@O6Ai-8ok_5unzVjOQo_R9< z{N6FNL~5m+N9?*&M&$6-v3Yo0TKkx^{NwmpR)u3mmbBGULu(VP`=D)$I5B7=Zt~K` z7XJQeivl;$OL1tY@cr7So?+_g=UHo=W`|+g66^##!mTa*Xx3C%7OMq!jAcjSMooo&6-d`SVIj)28Q)Bv{e3EyaJl<{P{?HcbQIqFBY2x+DpfbKB zADoS>lG8pqQ67GUGVN~nzSX@0$5CU7t3CLfnS_|9=S!CWtXfzC983~%&&9d zgnXtA4nQn!9c|H>i>o9!0{w=C)8JOW-U4wCz+U25&wG)H95=#$fR3B!i3pXr+`sz*-{?0H|vyNSp)f|rV)Ve0#+YwS_ zJ6=6aY1TBACG!RX%w4d7;(H z(eW`u17JvjWG59IolR6g^#-hjg9HOIsuMF|?FUw+rt0_YULF-?%LH7o=(7+{u4`gX zD6TB+RHfOe-k5yy@m&AhTPas>bhb2^1FY(#U3~b|qdau!H&d(AvRw`7Y&fFas|=~~ ze2*oyHeDybaWxQMSbB0*b}NmLWhc4dWPZO*n!P%ET4Ma~+9no%9#*A1;6iZAPd-emGSjL0kiGRzWh>8ZXr?t{&8H{5ENV!V zWqZ8L{a`iyM~*o#BzUj0Xz#cG}GEDYU4Vcll>MXE7PE8v?}uE4RR zrNwmMsPrl;9Sgdfg1e-o***$M(+%p}rR*skqf(k?PZJaU8;jv7ETQ82k61C%$6?dM4Ev4!{DgfSgY0tTUeN>p*&c zWo+r{a!n&14Wkbj31g=vKOUKf^hBTcLl`>266p*Ktck?9rQIeFksA3^Q*Zj0V~9Fy(3nf-=gN(W@JzPTJs z)7pSG=OQ@zysRALnmq~r%YCqZk=0t6jH}{Mq68Equ+U8xL5~aSY&1FFLoDfZ9|30l zht?4i9ZF_XdZpu=mkooF;+rR#rxt0IlMRL+3K#q+?PD7f$C@F)R#r(3>X92kYM7FB zQ`!Jt1y!3m2e>D_)!y1u^-~-o#dm2W9aLjf)N+xcq133cBbBEMu&kwNfY%S-yl-#2 zYAWl{VJBt=u%jcS#ZnriWnjtbt)2kZG$PTMI)W%!hes@W@1$eUQ?8G;>#$lHh^%@y zX<=1oo@p9hPY2(-4dCHclX|ietdyomaSNPxi`7i0LU>^PhuvpRkTSN=E<6 zM7jf5(`X5X+0)dT^kR$oEoU#6O*xjFA)`?Te!PLRW_@^I?MBfZ)B{8Gn8QasM{y!Lggx}mo^#w+a17~MpJ8uy5^vgj-(#} zI1;94{1Ft4I|3pp0_^qCym<|KRxd(#j`2j-TRy2g-+ow6&&UWXX?+Q6&e!O#Tv__MMCjt@HtQ zsO_=;hN>-)qTW)A@9`1evYb8ZmeFFkaJk!G!z0-wISGB?E`t{;V-{Yv*a*osEW$O`YRd7 z8AIJ1H^8N;JEeE2?J-RZ!yrd9C>?t!`j`|VS(HPtKW5lh%gwCdz~-7Kj!d2VY|QKg3553%E= zDe{UGOFlJ9+4K|e_peA!58Lz{*;7sR!q-*7x!@%m<~QpiG)K*LC-AAH0G9NgQQ_v; z{&Gi!gh59oI+RdGTG)e?;10%k%(t+#~TB<-lvz zwwVGwCr(84jhsyxjS>qs6KSX=R9B-8(Oytl$Dh|n6u6Q|mpF#YB}cT_2cTfm9D}ol zx|t)=WXN$2VM-32LEgv-$yw3@u-8ZHwvFsw{(%a(0)fhapC8o+`)xpQMkQ#3hqO3IDd?X6Gj!Q-eiAq8Q#KD+&Ouc(I{(TUvZGK06OlHoCP-Z)U@?*ngH9* z_shS9m2cTO*c6PK#MwF`DJv+Gl0UMTu_)DbO>C>KWz+UuZ2qi<&ui;xYL)YsQK#8> z-4N3>hUMy9KF*``u((PEBPUXH=us&F+_-KT^&6I>d42eF_~XVX8ye!cHIqmb1*!}& zH=r}1w2)DQ${1bIpP~Ir8B|gLl0lP408KcQG-+SF;|>rjTF%iPKLgIWVLwZ-nn)BL zxf$xKGLIwgRbYEvAz4k)$?`{@NR-<8X0}$*G`b|F}xxBD#&DSn_kLDel2}s*YW0YU4G*q%aFUQ4zl0rrfE@MnZIU@%4qr4~| zd^Vthy!=Vj9jW;5U5U1`BL8*gjvT%!Vaqhrhp9_&VtVk;w_4{T_n6L3nV{4cq~^<6 zH>)hh23#aO5@Sz8GnG}ftg75aaZ43PCtqm7rsikZa039&POe| zRQdXI=BH0kPDl^(+W({$ zo=gwt1Ov4r;JPK@E*EA)13TY;*}5vu<5jMbE0EK3`Hmgp6bsr21<_n?2F^YeS4lrh zf}|2qj^*DUfOcYps<5RT)0k%ZFm-?(34Y-|_#}n&V20p!_VqRimpc)BKK3mCfadL+ zR2N?Pj4$IYF7KYEl?Cl4+E~Y~1+QX6BjgMmM!#vt6AxRV&R&(!p4KD_>BAHOPDl^V zyU_}YCz~GZX)>AoyRApVyLPZ^iB*l*?}%f1PC6tc8ETfkqf|}5DaR5RG$J_{E0ZxN z^<6uCDCy73(n}wv25=_n!K5aX*@tBNi6n+su*`Z@NB@5CZ0hO3bQd961IG4en>MVVcGXe} zMvkTA@Y&roDSJaR4nJ0Ijbg-jXHH+UQxN8Rk zk2xJrVQKR2l}J~H*T43-EUKVT5*NeaqC4zTq8`81_JI@tw)Jl;LfwtWV@Uitozj?O z#->_04DySM@sB*r((}p0m2I6`v*>jq^|cH-{_G^^)@0|qFX8s*P(JHa>vwv3?9C+Q zHQ`TJ(^$LPy5Orfq}eVg)Qih0zW+TmDeO-neV78kdn+hw|KG(lzw|hox_mE*1?g$Q zI{A0;N=ozm#aOW0wu{rD;xI?Xc_V!;WnRq0* zBM#}Ao}Db17?@jE&{Fd`HI0(LPGgeEe8uI)Y>bd|!Wop^^-?eEU;)$RruE%tslDw# z(DJ2Cq_+SzDap?vPjZElup2tbqA7`>b+?0+^v9G`mQFef|G;6LZw$xsuGz`%W$!WY z*fY?T%IPBH>injpA$M=LZeEGU)H%_+8=F(BK1l{x=QA!h@%m;;fABE5r+v%XtSMxd zQj=iYiZ=FCQT5FUn3A*XC5uy%=L%q{byD%&n3X`6i!9YC?_C@^DnR%G>{<4%3i=m} zp9YR3MfW?CL6_*hhJhJQ0NzJxgh_z)oG+3wKIV>Wv?_L8~*D+gz_zs;( z`LE{Noh+&8g485faIq<(>G=n!d*FKXBDq5-`!u}|!1CKp?XujZAjRRO6^FK4b^;x zzog8{#B|iH%KeBCs;S0bKB#@nS`{4F)g^LwgA@gdOC+T<9kNEf3b5D{;RyYI{Q=$y zGgJ0~(*xL9Kr>F&ccv2ExB@K@NUg}NXNFb-jLE1l-F*bZaDW=;aJKg$c+c#Evd+TzjlTLs8q?L~E=uHXMbj(Ny_ux?s zcz6|>6LUy5@MBLlbqP+O>H6Q@K;z>-?-iQv5nxA}74^osZ#~rzH{Ji+a zBA$O|m6hr1fUm4mC<>>~8qfKs9&H_isB+M9q<^(_U97a^bXUCBn*a+vH?)v<_O~dx z;bF_rOe3h09>8|UGW5~w)ZB0qTJ9Gh!HzhpA}Ki#4H!HQv;PRRfRDH5ui%lFmyjE< zjgoy3Ry%~|R+EcPI-FCFpN1KXpw(1b?W5|-_8zV;>s5eV#2Z^FyZbo;$DEs%{>_Y{ zC6C(LMAc=7VC??9t(G_m_D$*|JxZ|3DBE^wb2(`kPBUlnF;=yO$#^;rEU;9G6 z#2;7CE09dCIOiBp%Y)`K4}k&ro-d%RV-6_T`sz;f*&DTk<-APu|0`Whr{yPRpfD2@4mzDzIHqwf6piHsblk-<6QQqzcTU6 zvuJIxZVh$q*@D}rtqH50E*%Y#U@O1;$|UM{R^gVOm#)H( zqGn#rR5m1iDVugFQ(UnDaD@6O?bAi!nf`nyzAe^vwbz1y4%o2tKnjI zFs82DRaviOo9}vB2-Bqh??1*fY{C~L!H!FzY3#aw4&i0*qUEL&)shvo^=aHtu7Mdw zEo{lK3Oo~zCUVFe!sBKW8!#5r=RuPaR_VY~7g5?hwYK{p$1CO(m!_W-Ax?#?Q3bRYwqGyb?XWPkxsd&%5eKJJv!2U zR1n-vZ0!Pqi~mV@#k)keufq(+(L4gS$9A)9#!DuhXw!4yB{x%e`8{b{&uvad+D4YV z!H#N0HY}z3su^hBZW_K4BSFzHadk#8=moiWM<0QI>X-0O{W6}hQ_g~z%7f%sLJ6aGN#%C@x%`1Q@g06bTG6ZQ7+DsN zDJe2z5vs44OtkV7i=q^@3H93d{0Q}iLzoe@gfw!+F39oh-3X2g zB}>sE5E1))3*i;-5EAKL`yocv4oqPqpU}B)Zzj&M%q27#jo>O9!oYcJQcmu7wvRKT z=meUs`_*@8diEjo;(RN$7mH$sqSk~0E<6?E)QqDyk2iM&%Uq~r&WXDq$SJjsZn6~I;qEx6!s z)ZBO`NTY-Nuc87xW2PwD^-udUo>7NeJ-g21(3Fz$)DIa6hhqxph+H|_p`2nbz?De? zT+u1OBDEfuPJXTjzbZUP@e#>%>dDl>rViQ$kv3{U zyeMP+n;n4dN{4vEZg$;xJf0zk;Gc1tGL+l{M|7ZGJ4v5Fy(unPyN^rRYfGy`+d`q1 z(UmE{4jtzO+~g+Gab|Tc;)*97rjDs<5J3g_6Dx9inJTfvZ#aG&sfzU zi*9iqAf@>GYEyGZKa!Fl4Kf9p=2)}Ij!y>d=6TG4??Wcn$kfHu(~C+$CEDQ5c1S2 z71LVjFX&4LHNaocnjTO;+XwIg1xNM=(+6<&*YtpTV;{f=6dc(fOdr76U(*BXjeP(g zP;g{_Fns`Le@zdlH}(O1K*5py!Sn%~{WU$H-q;850R>0)2h#^|_Sf`)dSf5J2NWFH bAI$#;M2AYY`_wdN00000NkvXXu0mjf;Pp_q diff --git a/ios/MetaMask/Images.xcassets/AppIcon.appiconset/120 2.png b/ios/MetaMask/Images.xcassets/AppIcon.appiconset/120 2.png deleted file mode 100644 index af02c387e35c407377d06c820955d19eba076037..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11874 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 diff --git a/ios/MetaMask/Images.xcassets/AppIcon.appiconset/120 3.png b/ios/MetaMask/Images.xcassets/AppIcon.appiconset/120 3.png deleted file mode 100644 index af02c387e35c407377d06c820955d19eba076037..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11874 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 diff --git a/ios/MetaMask/Images.xcassets/AppIcon.appiconset/120.png b/ios/MetaMask/Images.xcassets/AppIcon.appiconset/120.png index f0b5a16afcfb230d1e45144b8fa40bda766b620f..1bb97dbbd2a2c1c1ebe92e517400d12adc968367 100644 GIT binary patch literal 7328 zcmZ{p1xy@F6z3ON+*w?TySr1|twok%i#sgtE=3EpNTIkEiaW)23&ow{wm@;0;*{%` zyIgXYyG-8uCvWnb_a-yRWb)#5wN-GjD6s$l0Ir&<;+uc!|DR!?{qy2BA~XMl&RX@2 z761^)0sw?Z0{{>ILgD)WfDa!4a0meaBt8QGWYFC2dQ$%;(5y666ag>)jl%AVPyZsA zP*r0u005i#KSKiK<;!005PcQ=_6TM)K->+>h|4P8>!059QLs6%3un~?5bgb z^kZ-dwi-Jpp`p~@qaOiw7;6_sH z?R-9y-dpvWl*T{&TJk~S|Lv?Di=6a^dN#Bs?w>#Gu^N51=*>*+T$sE!lNJMgAIl*K z*5L(7-Az@A6|61G>tS~%iyWp+XOLG|NDiIKuwe7>n_NtyzwMIB9W*@u)3iC->NE}8 z{aVaelw;NUpsS)$+92%~QI@(UJ+v0WDIJ<6Y~zQ|R>W*Ky-1s^!tLW6wCd!VJQtmF zj=Ir_MU2JnbNRkfE>;~g7?qp*f zZf>|Wa2K4R)X1@M4$+Rbo{Ec@-_4}F7eKK##@FzOf_>YHspIXU)-6l`9P4BGNSs{W zL8@N*^)EQt@=;Iary+qx3=eIf#!hs_k=}ub$-=u+)vCLN4N6UX9IZ|^g$HhR%SuYH z>Lw;>Dw`T25TF5%PakDOFQ?G%TqwC?`SAjDV<`|$S)IEwVQ%I8$^Q-|nBYz#;k}CB z`h*HzshEIqe-5*ECx%(eSIJ-09d(ncln4ogV`0gYD0e+G#m=c~&9%@HT`p1&-Z4;n z9Aw4*OF@{Aj8|dk)Z9*asF3W=3&E>fO)(iDb#0z-JCLXDiS!1>8eYHw3{r_~qyL3f z>+s<7`Y|_>q)XQLcNz-&Koc$7L--3?@T)~!A>_gx(V1nDDu)kZe_bliUQmAK40r7| zM6u(UYVy3shBBs;1w*45z(~x_p{!S`C>rpHE4&n1P5!in9e30B#>4nXZRyyMna5;; zmBvo8``ObOUSwsTXX5l<>5=+!S9g#Eze#bfLVG{97}uCzeMLs~C60rsB4I$R(13}} zizxPTY(b{M2wBvg_a!fs8BAm8p5bnB9obtZf zD7;?opI6s#Pjf9b0bzjP4j~c2p^hJI_!K$@Btrl{WL`GNSvKSZyDQSRRY$ZQqXS|$ z^Tqz^>8MDkV@v7EQ}P_}qXbr)jVm8zI&Wp-d;7YBHy=%5KdNk!+7mnfynoZX4c0K&;>K&rvlkwjZ2ejLn?jE%ESN=HdxVHVRPsV2najr|ViBD=3_dgebqSjp7 z?r%IVO)+#3gM&>{K2nLS5jgq6unfTMpT{ur$b@}kZ8yO3lT598Uf7|3=GU@zYX#z) zr|uNw0%YH!9XZ6AhYiMvl}Qn;`8(G5;{)Lp8p3*)aN*G08K z;m8i(NssoebjeYEqpJu?g>k5ma5zz&r@*#h@Ab-VoXy@ob9Dw4fg62G!aaUVC3#G7 zE$51*%abqP3UM$mqpSPXd9%pXLbwV~GH){Y97va@*pME7X9 z;_kX2nn@!ZT(0loz*e{qPa9?!ZXeIdtP)Z|v9k@KW-IRQJHB&>a0oWEN4u|n72dF| z1)ev9y`cS#!_o*X(msC0eO?0>I#^D_R!*ixHg5)XW#7Ei%L;(lVov;COtd<(i_cFK z9E&rzV%Pm!Qp|yux6R&9{NuwYMJlZw3aU3Q^um7$b?1cT;holaDfs1|IUIgGr0l`* zfc)HIp|5akY~rVIO-+u>*?{bWVp}DorYpo19BYh<@hmcEht|T5s?|jTTUKexeGwk- z2i4IzG+y(-MEHY_w?kiD+u9f$|7=A*$}DD8hug?qEkY7*C&cGWFw@9|(-PIQ8>=38 zsPow__ai`ip6hSYuSWfBnvEKvBJ0dxg4$&Kkj)S)!5|x!F9(i2f$`vo9I>6*C>! z%*p|jRBAR`{;Tm{X%zd{kGcerv#|J`!;CV7jd&cd59UX1V4A}TM@tE0Tu=y0Se8919(vNAlr@u%%v0YO&8~TN`Aw|EDxrZ;)>swxfG}nG_M_wsnCehtrGYUKCXGp!M zFZ9hlKG4c2ilia1?-*6TXn`uOLA)(S51*==?GVu493r6lrw6n4d|MV>vrf@HBeHGK z?zsp1U3UaWJsl;p5vb=XG)Hvex3kxz2)QS$N$%)YnnT-achJI8aWJ8fy8rgyWfQPk zm>5PX1c?_v$%e^!YQ)?|v>_b>Kkh_q4L<$>0C^FVb5cw7PY1wb^_kKu!48qHtkPe|O}Q_7Zdl4+B^vGJ=vgNCGb zxERHa@R(fK*f}5jCo+UV%gthAsN5!|q1D574;X4+=YUc9^DC$Ah-accX?vOU2w9!u4lz}ZL&Db`@Hp*x zGeK`$bQRo5*w~MAS z@0uQ=gG)>%o~*$bei`I}S~G=zV~V4&Vt6;FR_tALT9S(1!fG74|2w!SXuptbvQUJb z8r7?_9*tcAr}=f*r}6x6@7j+NNF}IFei}H_Q}N_@mdn23aE8l#(gX+lI%E5}JKGjA zH-Z=*+4+mMiwH)BW=O$yewPwZBJitnDZ)4~)XO4LQdDSq!IYsj$6O+Sv8wMomr@n+ zt<`Gz!tDTsL;QK4HO0EvTi8V@>3c%^@GSbSJA7fv$G3u35;5_Yi=@q5+*5OqtAp|J z)sCY0)@XxnxoW=CpErMJiWD#$$Og32lUfgB+t}?qeC(4ZqQ_O|nNL)~Y0t%xFDUJ| z@4M;=C3Hw%9|Uf{{VWCQ`Oab${J7vVc>jBVWxiFp%A!S3ci_;6CXQJ?&dGKJN)x7T zKxf77TccgyBm4vZgROs1b2yo)s4QcupEIHpvj9UY0}ajm!{U70o2tVn7ltY7h!i}g zc2^%1+-U+H#uG~ZwMEKe!Os~-K<^xkYNz<~m~ZcvK8{`eil?4cVz)@D_SCdly}HH* z=y7&g;cK0*6N=qioT7dnBS~PtXb41g$d($e+7g$4MEN$Cmk1vo$9(l?1JC+7%!Ur0 zarBt&WO1fZ%3daL;b21zaSamDzF{pS0TV-SOc(9+!M*hM zA@uem7@cQ?`x+wCZ4-WhU(KUABZ_p1YogC3zlb5sZd?B$x{AAo!{I7{6HkL{~#gnp=zmZzFcP-4j6_H{J zsPXWUaaT2hjoK1SUNILdMIX4(5;{1>EnH4*vS>z9ZM0Ev5K7IiZ3Oo`ZNE#Jz=&HS zB#h8+)upV5pv8U}M{OEYf;Pcf-aGoq=y&eH4I#v1dNDnE*o;RKRbv(n=XBW_sT?)2 z*hT3crxte|P`Lm749B%e?|gg5*s4T!@5DVGF{SKFB%09f~lIduj@YjAI-oGVuf}B z>v0&5gVOo5zQgU2oQT7v6jmr#nYhL0aTVs;#H`!1y})t^C>$RNeinnW9C z)@AOkohH!RPhxMkL2rq>LIQK_l?7}@$)4s`m1@KFrwOKKAz1@UovK-eC~fk7oVF|z zHk(^sYXVsTxV*U+s!UtQ%<2^i8O{hPDG}+$34Ias_tc0 zq1ENRJv&|&A}P^jYB!K_;tz$YPcjj3d)cfc?8cI>op4v59N2_}u^t6U?mM~XGdCCO z2wygx^|wc&lnLOd)`zQ=d56^R@fsW-hlA7Dy3J0mef{dKSJ1Fx7`A6Av{SU8F8}4u z-#hLXs&t8%r5LYF8q5@-;x2ox_W$a{TN6`%1bR=BWy@l_-hfwm$H5(f3FyOXm7NjF+6twdh2@9Iv3ybtp>Jl z-&c(1X5m^!6h9^_8gpsCAohpEbDzW*23QfhO>sxX#dA9+1e0H;R~S-tnj4P3^N8H| zHI#SeO|-HQH3VSP?D%ABSPMgip;qh7M2WB$tedV&;WipBOOCPt52Vd!Gqs1#m5z%M zTu?cy_{&w+xhF;Q+t*~+0}dwM1{9+!oS)w^k!aLk?b0xP%xjYH4#4at*xBxTg?171 zP(T#BI=bzzTY63Vntpvoy||BwaPE}LGEqLlD2E`D!2OJ2Iw$w-jV-_{n7oi%?sn@N zI8r~hsE~^?(6HoKRqeN-yIRma*Rq#hrk28F&axf$SKQj-bYtC~n*a;^2ZnZ*!6*$N zq17-?@wnQy@7M#KSeA0LN^@n5f6!#Y8i^S|dhB=Q&4O4Mr@si359=;BdlpGGI9IU^ z^H9j7i~~)f|M&}#$n1IX0yT@iPo!RBwfL;v-C|=t+cBKQR>hY`L;fQmK$Pms|O=r;@T@b+BcDA)G}D8g;}k7 z9p@sp%E-F3GTFZ|(JBz@gtXy=4ZBA5BEi37EQze@Fq9pro&V#UaE5pn|T=o;TsqpJ~kU_!99bfr56tE!n=HJ|euX?5H;Q?T@;KKV^15K?kcIMI;RoMqR&5O zm|1K-KQt(N)aiSV_#ISscR;Be!;|EJAeqGp`*Y9Wk5Carzf^!tW|i2Zja09Du|oFA zl%;q+Pa028byJ#olah4gf2t@7n)`v4_a-$jcDpxxx@cxD(^f0_hEsjmZT|R*tnDNS z=qv~UYRb>-s5q_04PI67YUN{0&-)&Osg3E5^_$<@s>HYW@bD3$vM3`KCoP>^l)fj4 z^Jt=Du3elYw%Tz9V163m>-Xsa=#InV0!V zBbCV>Uicf;;%sZi?R|~dGVJF(SF*E^j7Zbv{guk;r7#l;YNSvkIwuN@{0P4It%_<4 zILT*9!8R--*9aS4+qL}wTG`Mmy2&mdDExEF#!^p=Z2O5s@pOU|-6wm?yAVctL%yFb zn04%B%1Y5Kk5BgBu(azBZm(cr5azW^bvYRn)=*nRvq_2mg!9$Ea-mNHK_IiUkJRz7 zrbl!~&Hj#%L6Pc4dOzQx7w(s`2y`jlQ5u5-7A(a}4?bgE9Ril~S{8z)5K3{J%<;+c zVyXK}N$ii<%)&>GH{CZpH8tF;%hn~a8=|65H8V27w*1IlmXuW0;jdBM?|5>%X!sm& zLI)a&O($OLJe7iKp4**UH(l1_I~~yn^Y28Kp1cfzui1e2k%QAW-#QLAo+;8wWEp+$ zgo{}>e&$P98wyl|Hr?L_t}MZNb`9 z;HKhNtz3-BwPH7}W!?YkK{Da~@QsAxmL8hh1K;Vxkq25WbEmWD&2PTxPiI6yFC8-+L&>U>H>qLhf$)Nq-%cxvwZwEb{4>yH=ME+f77L#Bx4d%K*b=^T(Fq7Fx4B(t`NwERu#+ZhKzt5ygiV+PKJ`f zGUVfJ_^B@55#$2#Q0f@gnrOKiuPP$Yh#AYsq*K~T^h8b`#8|^R!u0ew z-ZkCNZ!i+Mw>K|np!Pp$Stb8>vb7!MsVf&9tS1Fe+vc?Qb*|vF6v*kdTagGnPL}!i zoF0Z+ea;*%uhn`#QK|JFUtLl_!}Wd42hk+s4k3RYDN>&w z`N}|*zl8ewD!yU$92}jnW@{P>QcTc29I0QMH&|Cp?KZYQ#+)YV$GoZ1QxviM@kJ)m z1Ec1rVku9o0!$@hmJswTi%(|QJs{?$l-z+vfx{rEb9Y<4XffKXEm`!jx8 zF6u_Dwe33)kEb)$7I->W{mE~vE0ZO$L2KP0^C8y3IJpD!vXfjd6gcG>|F8}_j!;O$ zZZUxa3Q+!LFA-PiCE@=8Chb3GTy}YMAlCRItz1d+#DaoRP0`n8;yn{R8cuYIt9eVR z6K7P$jNt|Zs|yP{0!yLsXCtAAZ-qUHs@mel^)3&F+@X7?zfV}gb=ZYXS{-x^C0Rf> zA~>5X{P9L3!B67nxES^jIc|Y91lO)BR~@oSr9Wq4y1Z3?qw%9cm?cm5 z(F29Fm_w+ZA(G?`jlob4Q`){X_$DhnqCTVpz!(<_Nb6pl-fR>jl~fK3Gcf?-=xeTS zx3P|mwYd;v!%DG3Def#_%41q-DVDV;-B`kb3Ub`a#mxz>beK+6Z>~9P>5CO6`_*%$ zeX-i?g>SAw=8d?V8EYTjgke6>Pk}svdvZPRhl~W*wA@9K%cp6^7wrcROo+LHCd&rK znn1ovIc$0(h74*+e~#y^#+=m7m6*|e>I@PE8Q%_I{QL2HSuftOz78=qp0Cw+dS{?> zUe%cPhvnR$`7f>djsZPNrqaZLOK{q2zw5hD(ZvhfGmj+sbn)1tewk(34!itR3ChDvV82)wQn7x(2 z-Zqxrwi4E!w*Lemz$YNg%_qRkFRm{jC?PB^At21j$0xzZ_w~Jj`~LyBy4yI~1^nLt zzl4DJ{{(Pr2H*Yz*#370Z%0>KFKKK}`1JoPyA07*naRCr$Pod=jz)w%b7d!IhNFhd=B6Ht_*fT*a6E!JqRMjzufMq`X#jWxM3 zYDDuzqcP2x#EUV;Yu7{*P3#q^A|0d%1Bf#W!}K|IpZ(=sd+*`QFy*vC!kzs*JP*n_ z`>eJ8>;1odEzLAdlfLJmT>-5R;DZ)hHL*T`4{m(>06xg^?E|EJ$q z5Aqc_$fwsQ!F>Q9mXmU-kn~y*D$L9%hb(y z98HrTsNTCPaj?DJj3a3uP0#MSWewm+I84*}k0_lyi#VXiW1zXP(C&M>UI7#0apJlQ zfwped0&+$jhA$^KD~pyfz)E6uon4im^3z$P_}=B`Q*qT@#LGvk0TVZ%kG4Ap%U&BL z5VhN=o_9O<-2W)oy|tX76DM12n4v^x3~)RaLwCDb`qwA9@9P&bI3I4B)1Luf{~qyE zuSWOhsvSxnZSMuyjHCEicM*?9&|iCq+9&VhXK(J{(>-v_!w+%HH?G84+e}0`YXJZG z#w&Q^xBr8?#7l`D;g(4{{U%N!e(tU4GtRWeC_7ek^Z!}ew&>VlwD_{u(4U=4!>Wbc zyV~IMn1^_Mlvx*jjVpftG;zZ~cV%X@W(=_GL@5fn^Y}yAx?(Lkc{(kTI0FlO+;W(g zB9B3Q+F9rq-Ufrm?*;n*8f_=4s_HG6PtHYK_$)0k_}Qu$pVo!Q_v!>&;|v%zlso5d z!0q)}lAeJ;WCU=V{@t>X+h$K7Zp74BTpF}QVOXJ;n`e}e7j7UPC`3Q~YB=*+@aKuS zZGnBTTiXeAOf(EHKZyC_187aV2?dI{e@Pvm)P~9PfFZ?GnuZaD+u!<#ibIbe9yic4 z5QdBZc67wTXCLFiOD-X=#HDCO9s#*I3S)}g+&Ht005QzQdbAOT!udaf8E4zle6U*E z?dh10{s~Y07<1D{Xt{+%-CiD8Si`E?DESV!Vr;qHH0_S@&ENcz6E6ENj93hp+nu%= z&J189hVF9nr|T}|jXyj}Ua4Cd2F@cOH$`DmsfX`PFUITkV74}+84)=0O!)fkP;tn? zN85>X{P|{h`c9btJf=uuPM(s=UoWj=X?27GuPwRuqRD!;)Ww)}!B@F*-t!sj;fw&b z>?VUdj+?-aH5>5e=*qNDd<5ji2u$to<(jEQxD+L8Xf5@SQvj!31!sK^0{Q>`w5{k^ z#88Jw5dQva_}j0bu@*D8$nqpG`Q69$e6TZ2VFz%P#?o}6;W%Z(1~d1=jd=WljP!8Y z06Y4(YU6rtKX#Hptp?xO|@>)d}&Yg-H<0oT!$ zOJ265cJs%OTZrlMV#bB-H0G^n;H~YUPQi87PSZ4^5tARiv6$h9PtQmXrwy>9e?NF) z9>2frTNXVFU|l={azg~>4DoUK;YGv^Q{)&;+<;IE#3C^5D;8}JlMVB45+q5a_h|fiWh4Kr40a2yOk3&Uni!Y-;(oq-<@Fiq;q(EveY8ie zzL>Wkd7QkG?g4fTF9G?aVSX+-tdMw2K(=T}ncpJKLe-~U31?pqIfVxJ%DZB%!oy~ z{g^}8`N?LyfqnIFXTq%8I{EYw0lq$|fOynI{-1h;;zS~v>n!8zKW>HDUpug9yCWSh z{u?}XCu~^(qGw$mkT^V+@#OOA{AFDu&u?rc-)m{7o*svyO9u~N?t)ELTslpEI4yu3 z{rlPa)%^Il$!NNaI*E}xINBheJ35E2PADKAiSGqjWLjujq#_c6X{TAVJ^ZjQp0*R| zc*lAR*o7~G+XE^jYgj-efcwgZCZ1T|k~Fx9dN>j?x%IXAjGQ(rZ9SY8z>fZX@3G(U z@VCE1UcdJ4QBONm39GnJ5x8JnE~k&n$B4w0@7(qz(zYz#Dc^>3ZnUIie+Nkte=pPw zFa82vc@UcG+tINzc1LpG+}zBgYnsXRTKhkF5!kDTFTU@moP6~yX~(701K8HT4_|o! z?>+W(Qu?#BX|xFfjl zZ*Ae>RZZmBF^W{cZPUZ`2Gh?vm23X@m9#TUsRL~5f>Ulkz!kL~iFGD+|rNm$s*zY|-|}BYKav6X|&ST6pqKSo{*Wy%rs-h+TWw9LZg@ zy_MgtXv8n+@RXES0)c57v4~00fPUPy@KgMG`6}iw`Z<*+Wq{-HIJ&O0ef4tgJbsGu z22vxR_QP`)AY{OmhZQh$XinE4x6yV3_yTb9<#5hTkY8e3tGf9>(Ni+^uA704R!GW$p?nv8%$6B;~+=Z!Z?4Ca>zO4AP z+txr{k>%HlRCn@N;A*U?3iH6SdL^|kz0Kb0`M0|GgyRoi_|v(ZcHOOM>EYA?w)OAt zzjYq-pM0L&;-3BAWM(J=BQAsyhwG*map(Yl_aHm8Eg`{RGtB&|WpS(Gg4AfNZG2)( zi7HtB2E6~Y#S*@pPU*P4&ehmZ6XE`)^%$m!M^DZj>STX*2`>6ng{+0%%7_;sl;>W|D%bnKRop}AJXvP-Fzms>#$jjeSN?p<6@#4z!QE1wB3CyZM3Z7gb1 zP*%cS3pSHeSd_9JP6=QqH(9x2DRWPpj@zrLAI#<>?vqfpN7uM%dJ!W_yzPS_`|!JF zg*gX|f)R&Xe@{2Z>;SxNHGH<-0=tX(IpBWQ5ap+f>u8Odc(VwuGfmOM;g&eJ{QXVF z&psh#J)9E2PHyszKRm#r*Iu6${oC2*5RfAVj_68zgs z&SK$nFOgfkH^HAxDOMBHAZ$S4zsgu{IkK1m`4UV?2y3=&aa)3iPlo;@Z3)hhqIYkD z&C9F^RR;-nz^!dHxMxuvH9-Tv*k9QtvbN<^dbq*hu#@I+!}D*atcQ~aIKltDb;f9F zDzmG9yOQKk4EhChZaJ!iemSmvK^AF^N$JRRC>dn^JtGPBK>aS*u+Xxc6C51}+=h_B zy^HJktl3b33{`5=OOK<6^ZOO^lSNwy6cnbUhm!}`?plz=d*Ev)vf|aZ$tmnT33k>? z!k4Wv7?|tgmZOR(^2u*@kYur($IpcPQjnBox&RB90;*)S*3WNetXU~+jh1MfpDnKA z(}vjII;vg*S6(ZvK%r)Xu`{Rf{g)Ri-#C?EM@j%YF=*ujUv&-nWvR!Y(^(5u#215M z`EG7Ls+c^Fjw$)%L?%9DwpAgbGC65dw6&sEHOAWa+ct|LFPBEhh;#qqdOoR(?iX+q zb+F?Lr&^-lyoq#dPYsW)1Rl)nPekMFTKLABmQ!{#E$el)w2SsN2E3)j{6co?NL-wgHz? zrbsZ(f4}-ZqmP`Oa*#ur6zQB*siIe=$=nksv*qK}_;Qmg*U9DrD7ucp>~c5XIAIe0 zQB%-V6e|M*%Ldr=c!_LX#ZzxC=Z&5FTjyG0tmoC>1B(-_s^Wn*s0Tqhr;M>1zzcGCo^uM`F&KbUdi3hFCnZ!t{uqO zpFCxCI2fGzU*G1Udmd61t5Ou7>XRP8c1CIQk`KB2@7rgDQq#j+&k|iZ)#yw5`k7wQUQJtq-$&SC|}+wW)e5V%2f3BEg}iI5++EA51*q zl(gtMZHl%mRmpTjxZ{}d?A)+rzksZyHfH5o&m5J@8Kd*iOas%Kk2Ya;HujIhkC^M` zqXp|#`tYBhHuIN_ErboT*CSU76uX+Ecu;@tlB&wwyp*C>i3^dI1SeY4PyFD!yz+~O z$nPg%#I6h9Gg*B{tu{wsRFRu+Ow4CgsSi`qPEy9w<_G)t7UZS-gHGsk-TRo~kZMEG zJUZLzB0RRHiS>J;cp0@O6Ai-8ok_5unzVjOQo_R9< z{N6FNL~5m+N9?*&M&$6-v3Yo0TKkx^{NwmpR)u3mmbBGULu(VP`=D)$I5B7=Zt~K` z7XJQeivl;$OL1tY@cr7So?+_g=UHo=W`|+g66^##!mTa*Xx3C%7OMq!jAcjSMooo&6-d`SVIj)28Q)Bv{e3EyaJl<{P{?HcbQIqFBY2x+DpfbKB zADoS>lG8pqQ67GUGVN~nzSX@0$5CU7t3CLfnS_|9=S!CWtXfzC983~%&&9d zgnXtA4nQn!9c|H>i>o9!0{w=C)8JOW-U4wCz+U25&wG)H95=#$fR3B!i3pXr+`sz*-{?0H|vyNSp)f|rV)Ve0#+YwS_ zJ6=6aY1TBACG!RX%w4d7;(H z(eW`u17JvjWG59IolR6g^#-hjg9HOIsuMF|?FUw+rt0_YULF-?%LH7o=(7+{u4`gX zD6TB+RHfOe-k5yy@m&AhTPas>bhb2^1FY(#U3~b|qdau!H&d(AvRw`7Y&fFas|=~~ ze2*oyHeDybaWxQMSbB0*b}NmLWhc4dWPZO*n!P%ET4Ma~+9no%9#*A1;6iZAPd-emGSjL0kiGRzWh>8ZXr?t{&8H{5ENV!V zWqZ8L{a`iyM~*o#BzUj0Xz#cG}GEDYU4Vcll>MXE7PE8v?}uE4RR zrNwmMsPrl;9Sgdfg1e-o***$M(+%p}rR*skqf(k?PZJaU8;jv7ETQ82k61C%$6?dM4Ev4!{DgfSgY0tTUeN>p*&c zWo+r{a!n&14Wkbj31g=vKOUKf^hBTcLl`>266p*Ktck?9rQIeFksA3^Q*Zj0V~9Fy(3nf-=gN(W@JzPTJs z)7pSG=OQ@zysRALnmq~r%YCqZk=0t6jH}{Mq68Equ+U8xL5~aSY&1FFLoDfZ9|30l zht?4i9ZF_XdZpu=mkooF;+rR#rxt0IlMRL+3K#q+?PD7f$C@F)R#r(3>X92kYM7FB zQ`!Jt1y!3m2e>D_)!y1u^-~-o#dm2W9aLjf)N+xcq133cBbBEMu&kwNfY%S-yl-#2 zYAWl{VJBt=u%jcS#ZnriWnjtbt)2kZG$PTMI)W%!hes@W@1$eUQ?8G;>#$lHh^%@y zX<=1oo@p9hPY2(-4dCHclX|ietdyomaSNPxi`7i0LU>^PhuvpRkTSN=E<6 zM7jf5(`X5X+0)dT^kR$oEoU#6O*xjFA)`?Te!PLRW_@^I?MBfZ)B{8Gn8QasM{y!Lggx}mo^#w+a17~MpJ8uy5^vgj-(#} zI1;94{1Ft4I|3pp0_^qCym<|KRxd(#j`2j-TRy2g-+ow6&&UWXX?+Q6&e!O#Tv__MMCjt@HtQ zsO_=;hN>-)qTW)A@9`1evYb8ZmeFFkaJk!G!z0-wISGB?E`t{;V-{Yv*a*osEW$O`YRd7 z8AIJ1H^8N;JEeE2?J-RZ!yrd9C>?t!`j`|VS(HPtKW5lh%gwCdz~-7Kj!d2VY|QKg3553%E= zDe{UGOFlJ9+4K|e_peA!58Lz{*;7sR!q-*7x!@%m<~QpiG)K*LC-AAH0G9NgQQ_v; z{&Gi!gh59oI+RdGTG)e?;10%k%(t+#~TB<-lvz zwwVGwCr(84jhsyxjS>qs6KSX=R9B-8(Oytl$Dh|n6u6Q|mpF#YB}cT_2cTfm9D}ol zx|t)=WXN$2VM-32LEgv-$yw3@u-8ZHwvFsw{(%a(0)fhapC8o+`)xpQMkQ#3hqO3IDd?X6Gj!Q-eiAq8Q#KD+&Ouc(I{(TUvZGK06OlHoCP-Z)U@?*ngH9* z_shS9m2cTO*c6PK#MwF`DJv+Gl0UMTu_)DbO>C>KWz+UuZ2qi<&ui;xYL)YsQK#8> z-4N3>hUMy9KF*``u((PEBPUXH=us&F+_-KT^&6I>d42eF_~XVX8ye!cHIqmb1*!}& zH=r}1w2)DQ${1bIpP~Ir8B|gLl0lP408KcQG-+SF;|>rjTF%iPKLgIWVLwZ-nn)BL zxf$xKGLIwgRbYEvAz4k)$?`{@NR-<8X0}$*G`b|F}xxBD#&DSn_kLDel2}s*YW0YU4G*q%aFUQ4zl0rrfE@MnZIU@%4qr4~| zd^Vthy!=Vj9jW;5U5U1`BL8*gjvT%!Vaqhrhp9_&VtVk;w_4{T_n6L3nV{4cq~^<6 zH>)hh23#aO5@Sz8GnG}ftg75aaZ43PCtqm7rsikZa039&POe| zRQdXI=BH0kPDl^(+W({$ zo=gwt1Ov4r;JPK@E*EA)13TY;*}5vu<5jMbE0EK3`Hmgp6bsr21<_n?2F^YeS4lrh zf}|2qj^*DUfOcYps<5RT)0k%ZFm-?(34Y-|_#}n&V20p!_VqRimpc)BKK3mCfadL+ zR2N?Pj4$IYF7KYEl?Cl4+E~Y~1+QX6BjgMmM!#vt6AxRV&R&(!p4KD_>BAHOPDl^V zyU_}YCz~GZX)>AoyRApVyLPZ^iB*l*?}%f1PC6tc8ETfkqf|}5DaR5RG$J_{E0ZxN z^<6uCDCy73(n}wv25=_n!K5aX*@tBNi6n+su*`Z@NB@5CZ0hO3bQd961IG4en>MVVcGXe} zMvkTA@Y&roDSJaR4nJ0Ijbg-jXHH+UQxN8Rk zk2xJrVQKR2l}J~H*T43-EUKVT5*NeaqC4zTq8`81_JI@tw)Jl;LfwtWV@Uitozj?O z#->_04DySM@sB*r((}p0m2I6`v*>jq^|cH-{_G^^)@0|qFX8s*P(JHa>vwv3?9C+Q zHQ`TJ(^$LPy5Orfq}eVg)Qih0zW+TmDeO-neV78kdn+hw|KG(lzw|hox_mE*1?g$Q zI{A0;N=ozm#aOW0wu{rD;xI?Xc_V!;WnRq0* zBM#}Ao}Db17?@jE&{Fd`HI0(LPGgeEe8uI)Y>bd|!Wop^^-?eEU;)$RruE%tslDw# z(DJ2Cq_+SzDap?vPjZElup2tbqA7`>b+?0+^v9G`mQFef|G;6LZw$xsuGz`%W$!WY z*fY?T%IPBH>injpA$M=LZeEGU)H%_+8=F(BK1l{x=QA!h@%m;;fABE5r+v%XtSMxd zQj=iYiZ=FCQT5FUn3A*XC5uy%=L%q{byD%&n3X`6i!9YC?_C@^DnR%G>{<4%3i=m} zp9YR3MfW?CL6_*hhJhJQ0NzJxgh_z)oG+3wKIV>Wv?_L8~*D+gz_zs;( z`LE{Noh+&8g485faIq<(>G=n!d*FKXBDq5-`!u}|!1CKp?XujZAjRRO6^FK4b^;x zzog8{#B|iH%KeBCs;S0bKB#@nS`{4F)g^LwgA@gdOC+T<9kNEf3b5D{;RyYI{Q=$y zGgJ0~(*xL9Kr>F&ccv2ExB@K@NUg}NXNFb-jLE1l-F*bZaDW=;aJKg$c+c#Evd+TzjlTLs8q?L~E=uHXMbj(Ny_ux?s zcz6|>6LUy5@MBLlbqP+O>H6Q@K;z>-?-iQv5nxA}74^osZ#~rzH{Ji+a zBA$O|m6hr1fUm4mC<>>~8qfKs9&H_isB+M9q<^(_U97a^bXUCBn*a+vH?)v<_O~dx z;bF_rOe3h09>8|UGW5~w)ZB0qTJ9Gh!HzhpA}Ki#4H!HQv;PRRfRDH5ui%lFmyjE< zjgoy3Ry%~|R+EcPI-FCFpN1KXpw(1b?W5|-_8zV;>s5eV#2Z^FyZbo;$DEs%{>_Y{ zC6C(LMAc=7VC??9t(G_m_D$*|JxZ|3DBE^wb2(`kPBUlnF;=yO$#^;rEU;9G6 z#2;7CE09dCIOiBp%Y)`K4}k&ro-d%RV-6_T`sz;f*&DTk<-APu|0`Whr{yPRpfD2@4mzDzIHqwf6piHsblk-<6QQqzcTU6 zvuJIxZVh$q*@D}rtqH50E*%Y#U@O1;$|UM{R^gVOm#)H( zqGn#rR5m1iDVugFQ(UnDaD@6O?bAi!nf`nyzAe^vwbz1y4%o2tKnjI zFs82DRaviOo9}vB2-Bqh??1*fY{C~L!H!FzY3#aw4&i0*qUEL&)shvo^=aHtu7Mdw zEo{lK3Oo~zCUVFe!sBKW8!#5r=RuPaR_VY~7g5?hwYK{p$1CO(m!_W-Ax?#?Q3bRYwqGyb?XWPkxsd&%5eKJJv!2U zR1n-vZ0!Pqi~mV@#k)keufq(+(L4gS$9A)9#!DuhXw!4yB{x%e`8{b{&uvad+D4YV z!H#N0HY}z3su^hBZW_K4BSFzHadk#8=moiWM<0QI>X-0O{W6}hQ_g~z%7f%sLJ6aGN#%C@x%`1Q@g06bTG6ZQ7+DsN zDJe2z5vs44OtkV7i=q^@3H93d{0Q}iLzoe@gfw!+F39oh-3X2g zB}>sE5E1))3*i;-5EAKL`yocv4oqPqpU}B)Zzj&M%q27#jo>O9!oYcJQcmu7wvRKT z=meUs`_*@8diEjo;(RN$7mH$sqSk~0E<6?E)QqDyk2iM&%Uq~r&WXDq$SJjsZn6~I;qEx6!s z)ZBO`NTY-Nuc87xW2PwD^-udUo>7NeJ-g21(3Fz$)DIa6hhqxph+H|_p`2nbz?De? zT+u1OBDEfuPJXTjzbZUP@e#>%>dDl>rViQ$kv3{U zyeMP+n;n4dN{4vEZg$;xJf0zk;Gc1tGL+l{M|7ZGJ4v5Fy(unPyN^rRYfGy`+d`q1 z(UmE{4jtzO+~g+Gab|Tc;)*97rjDs<5J3g_6Dx9inJTfvZ#aG&sfzU zi*9iqAf@>GYEyGZKa!Fl4Kf9p=2)}Ij!y>d=6TG4??Wcn$kfHu(~C+$CEDQ5c1S2 z71LVjFX&4LHNaocnjTO;+XwIg1xNM=(+6<&*YtpTV;{f=6dc(fOdr76U(*BXjeP(g zP;g{_Fns`Le@zdlH}(O1K*5py!Sn%~{WU$H-q;850R>0)2h#^|_Sf`)dSf5J2NWFH bAI$#;M2AYY`_wdN00000NkvXXu0mjf;Pp_q diff --git a/ios/MetaMask/Images.xcassets/AppIcon.appiconset/128 1.png b/ios/MetaMask/Images.xcassets/AppIcon.appiconset/128 1.png deleted file mode 100644 index 10023cd10ac67f0fb21534f5a0290bac5b31af83..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2747 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 B@#X*k diff --git a/ios/MetaMask/Images.xcassets/AppIcon.appiconset/128.png b/ios/MetaMask/Images.xcassets/AppIcon.appiconset/128.png deleted file mode 100644 index 338e0c546abfc13b02d827fd7841dcc3bcb32e22..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2279 zcmVC0001}P)t-s|BYQ{ z7y$qO|Kmsp|6CUTj$ULI0O;)Z{#q2{Mg+md&h~Xb=1K{5A_xA8TKj7*|93t7?dSgc z`~PAe>r)fxdroZ}1N*|O>Ru%N)54f82mF3W`mK)r_xAGg_4!y7$3hI`PZ9ltPlYA~ z{)bim-_o!-3;Usa)=3YFLMqzAyxD3#&(qxH)X?kWWKS000O2NklTQ@MS$${dmP-` zd@%Xm4HN+mAEVq{-`D>7l#hA`MS!DjjdDM|V;lylpN}m4s0i?Gl>|mIp54j&M?A8JGjC7$o>>p z2PA>UPl5WDX-#1KBo4ES_i6hm3EpG?0hR*QEe(MkYLlON-!SG=os`jD>VYG53-ZDI z@;GX7XuJ>D2a-S&r$8kQfkGTw?;~KwzOH`;5`e*u1;7YwLmY?J`{?;MtS0N@O#(or zz(qE#4@7amypJvf>;p+a1N;NoCkc3Qn2q~}%s!h06hQC=1L&JpHL~JO0KvSEWHW*R z=p@h-QlN4jPGA@dQ=`OO;h!5hY@ba63Si&Ubp?WOr7^M!73{M~pedz5b!UzNcr1Vy z;`X_E=p@k8Qh+3|eE>l7RqUfAmV67)^hzS&o?k3x{$n1nci0HEkeR0xxhvl24|2?S8>Ld8<1KwO5II0n}y z4Fp&y*w^)4cGF%!5iCG}kZb_q+utRd(Y~iZ04;>&QYg1C-wm^!REM>Up>;^};;H;z z=47A&M`M{1JqH1_T$kRfe@R=i{YYlNw=uvFcwsJ$pF&eQki|fhgvC?>@bM-;mP=P%HjNVft!0H80k^l3yi zy=)m&dr>RVlyw5#jR^*o%-WOB3H4AJB;*w~yDC95D$c0ZB1E4S1|@xNL(~ddl}J6x zquSte)Wc-CnbW#$whm37zQ~y8xSHOGYQ_ZL7oCoJSo9 zW#EyYJ2e3X040GYOMx1Iw%;kpGB6hfbwNcyXUcY_06?Wc1;E(vxLpz;aj6R`AJ8E% zRmSxbHosZ>oel-iWv@U4%$_w-0H9I;0bK37`LvQv`G7tN;FlL{>d*7q8%|*}0I3`R zt-~}xV}DuiYNH&zim4(%Z@u&`yWWMM6EOg660qk2W~cYMeq11xdGpoJ2EB?r@>o_n z;JWem5TRSdewW!X*wvT;m;ep8>8%n!Mm>&Y)$N%>m%$2o$*BQL7fmC-yYNh)c^^vw zQuy45Acn8syJZD2LOyo!-M~x=6roXNytn&)9U|i2!!PC;>Jy?x{2b=UeFZAEUP zh)yQ~HL6XCewY+$BIRHJ-44~D@U@s*(X@Q9=<;P{lG|TfhbSOK3Ysf{nq(~kcy&5F zal?d6L#z&Ca$#PCE>}$_9*A<_BmkI)eWLQ(?Z}IWMWG+sd;sSxPC{1zfR0)#Eb*e| zsaFw}4=Z#=69J6H>p<*?0E}>frQtR4%_MFYfkk;n6ad6)A;9b`1~9_*VBWnxw%Kj+ z(Mzfm8Xv$J&cu5`+7Sb^VK5inrXnuBFultmMgXvt?S_#I!0;E>r@fYT;$4ugM|3_w zF_HBHT}K9BU&3GxUoSGO9gs8!WG;a7DxH>Zr2yrD!!wcnW-vTO1daQ}04I4*SSSG4 z{=!_eQ*CRvXx%RaaOFKAw-9jv6ozC+d=r!qU!C&+oOmEVn4Dz*=CB{K0;6);l(Dza3K3H#)G6uFCQJ zDRltr#cS>OR+X+hF8DZu5_}<8o`~*GcV6q)X z9SWjQ8`0p4q2svmIbB~o7i74ZzkeDb9FScyeYQ@|v5PSPMF`IcuU$#)_yJxyI06TN zxO`9t0=07+D84i%${C9v~ z{KF!{;9tdZ4S5>)8$kd7002ovPDHLkV1hl$ BASM6+ diff --git a/ios/MetaMask/Images.xcassets/AppIcon.appiconset/136 1.png b/ios/MetaMask/Images.xcassets/AppIcon.appiconset/136 1.png deleted file mode 100644 index c0af3dc57fc3091db4e34af74777eb712384ffd9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2566 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 diff --git a/ios/MetaMask/Images.xcassets/AppIcon.appiconset/136.png b/ios/MetaMask/Images.xcassets/AppIcon.appiconset/136.png deleted file mode 100644 index 9bbb94655fe2ee92dc50e11222cce40fee588a8e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2519 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 Y^9lSnM%EYa>KOx&msOFelrjzeFCKbqzyJUM literal 0 HcmV?d00001 diff --git a/ios/MetaMask/Images.xcassets/AppIcon.appiconset/152 1.png b/ios/MetaMask/Images.xcassets/AppIcon.appiconset/152 1.png deleted file mode 100644 index d0690935b9edddb47a6817c37e766b2fbe04ad54..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15510 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 Y0>&42JBV4DHUIzs07*qoM6N<$f`c@|YybcN diff --git a/ios/MetaMask/Images.xcassets/AppIcon.appiconset/152.png b/ios/MetaMask/Images.xcassets/AppIcon.appiconset/152.png index c213f88f7e5d720141a04bff174036032ba914b5..0422418e6e9fd334a50d2e08e6f2a79c62057c93 100644 GIT binary patch literal 9389 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 diff --git a/ios/MetaMask/Images.xcassets/AppIcon.appiconset/167 1.png b/ios/MetaMask/Images.xcassets/AppIcon.appiconset/167 1.png deleted file mode 100644 index b0a61ced29f9e9c0da94dc16f6c54a4dd783f60a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17470 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 N002ovPDHLkV1j4{?H&LC diff --git a/ios/MetaMask/Images.xcassets/AppIcon.appiconset/167.png b/ios/MetaMask/Images.xcassets/AppIcon.appiconset/167.png index dad2b2ed773477dee64d3b8d009569903df71b80..71e8f7c7c392dd516064fd4e39b5ce37c186ef1b 100644 GIT binary patch literal 10296 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 literal 13739 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 diff --git a/ios/MetaMask/Images.xcassets/AppIcon.appiconset/180 1.png b/ios/MetaMask/Images.xcassets/AppIcon.appiconset/180 1.png deleted file mode 100644 index a3d6372e96a366f7c2803c1f5dbd87deeb2ceac4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18745 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 z

        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 diff --git a/ios/MetaMask/Images.xcassets/AppIcon.appiconset/180.png b/ios/MetaMask/Images.xcassets/AppIcon.appiconset/180.png index 4039a14aa1b8ff417d1556102adeb141488e5b82..15040a75862b5e32f5730ad320dced1ab7d0fde5 100644 GIT binary patch literal 11058 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 W|H3q~1(1AV0J4%w5;bDRA^#81+7h4u literal 14898 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

        `XqwNPbH*6 z%l-qAXjP`ATA@4+)mu zGtQdE(?J0I5)%Q{-(QilW*ghJIig^D<)RI4t|aM34*tK?f27^eaMLDuY9T*xX$O{Q@CH&gR*Kv~$;;%6QPcGl{L$`#A zW)i?M{Rb0SnCNgx(ynbO~@C4T)n$Y2V)IiGnnxbkAy|a_?k93%a!K z4>bQtKPk!I7bm8?vlU0>KKL7c`cE2@oq8ru$MVieOiD4h?}$l$ml6rEt)$6my)zFP zSlZ7#iJ0D{TyA;|>?u|6)J7#Ox0Tb6YVT6(-%S?A%)0Lc#_v_X84|83y*KOiXiINdz!gX2316d)_DBvm6}67qju(l$^4 diff --git a/ios/MetaMask/Images.xcassets/AppIcon.appiconset/192 1.png b/ios/MetaMask/Images.xcassets/AppIcon.appiconset/192 1.png deleted file mode 100644 index fe15ca815d3c5c7fd1b6ea638ccc0607e9a03850..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3933 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 Xsb1AzN`X5^zXWjE6l+2?@{ao-_^08z diff --git a/ios/MetaMask/Images.xcassets/AppIcon.appiconset/20.png b/ios/MetaMask/Images.xcassets/AppIcon.appiconset/20.png new file mode 100644 index 0000000000000000000000000000000000000000..cc5f7568782710438df4219caa7c1e5c2de9e963 GIT binary patch literal 1530 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 Ef)}6TbpQYW diff --git a/ios/MetaMask/Images.xcassets/AppIcon.appiconset/40.png b/ios/MetaMask/Images.xcassets/AppIcon.appiconset/40.png index 0a24636eba8ecde3617e61087390b6ee03dcdc17..81c2bb59ebb50f04ce84d8955232b10a3fc7d802 100644 GIT binary patch delta 2460 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 CJ53D$ diff --git a/ios/MetaMask/Images.xcassets/AppIcon.appiconset/50.png b/ios/MetaMask/Images.xcassets/AppIcon.appiconset/50.png new file mode 100644 index 0000000000000000000000000000000000000000..57ce268c4359ebcccded7e39d88c01df0eaded85 GIT binary patch literal 3081 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 Rx7h&$Sex6UX{O$!{{Yctq6Yu~ literal 0 HcmV?d00001 diff --git a/ios/MetaMask/Images.xcassets/AppIcon.appiconset/57.png b/ios/MetaMask/Images.xcassets/AppIcon.appiconset/57.png new file mode 100644 index 0000000000000000000000000000000000000000..5ddd24fa9175e66c1cdab7f28cd14067179b9a92 GIT binary patch literal 3494 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 literal 4206 zcmV-!5RvbRP)Px_C`m*?RA@u(nhB6q<(Y<`v)!fp_C_x>Ei_9b2q-&7Eoc={$2}#Ppc98!?vz^M zB$|{_Fe*tL9cI*oxW=u5(IhUDNkEM#f-4|`Y|=mjHcjuhm)m`pvrYZyoJ(K2@9j%d zvsj6zpbEP0J?DS_?|r}T{l5Q5wr$(|9bD2kK>x;~{7ppv#sbPQMbx$|By5nCuNQvH z#707r<*e(<4pby%Npf#wS?<4+|Id2+|D_LzHQ840#;2|^!y~f-P3Ss*zT^8`y6|e0 z>F0^KB3b7DUvxzjlg!%sE^j>ZIREhA^8^Bc0e3YcP=~IvOml4wi>Hj^%nG<+@r_vX z??NiA#EJ3$C1CGaVx#TWL&&fGoM#_d!CU)mmVdsDVdEx|Tyr|a8G%}cfvl>0^zw5& zaox3;A(?pv2H!t(6xPMJBVDivN!47i4xO{>kIodhaQ)*iVVNefl0IP$s8P!_ zxVL&DbvtVC<;Y03MW+t)$LDkTNH7x?O7#L*a5t2V@&Nx2=r>goEnmUQ%P`ljMA0Pv z^Pt4byE@3%z?NhZQH%1iBe`$=Zd9L75L;xCe%qWDXp-xPckkrh>XSiol;M0?mY^#E zS5C<1qVXZjwpNtFGPvw^xaek3eaBDdqiCwbs>k8=<(RGYD8(hbSrg&K?VaR_M;vkJ zlB1p_?|#OJNmDcGG%e61*Vq5{X`Z<5dO{_t!~f(Zz(x|Va8ihK#}#09$55i3aN;bu zatTa3KP9?CyV>a6ho)QJftP*?Uw(`k%ty%$@@`EBzuDeJuIBD}5~s)`T`dOJ{^~K# zzUG#UI!zDM>o_~qxF_!XBIeS1ntlF{Q9rK5&(|A#eb{s5#g5dDBA^?7LL z7uhTh*%i3N!gwSOyo`dfkNP<%354o7+PvkqtT#4<89&XOcyBy8?^XCou0%)qitjm8goP|tC+J==4u+0#f%mnJ4p1L7?T16VKoJtLkbN>c z8)Gcr)b2b^+-jilKvJhyKeC*8H{709r~QF?_4DaP|HRtoU+SmNw8dD$p_+um4`voH zzAS*5uu&}CO;E+d2L{?!54%6Xl2v3)W^Zephc>ih*fyG+nqku`Kj1m3IBR^y1kAIRiqN$l!w?LC6?wD1?m|`DROh-QHbXTut2I?v*bhTma{1Dl% zaCuK^p#2p<#o}9gY%U$2 z&p$7?7z-6SL(UXMOO`EOdgU*?x+6?+j!?RN%+Yjc+idXdyMD-bmOL~#!(dw`lB}?Q z^QYWD?^|eo=}43Z0;x#QtwW9`@!jzu&Z^9TlV&3YL#{1M=a3{BJKhbu*0b(lH^18z zp&^noc*Zh7ZcGaORFc)wC?~~pf6a7b1H*eJ}!i+ zNLYsLv~kWQ!YXWEVYy3R;gZriBMoXcfG`ch4tm*H;FVPg)3SMecZ9bOM6pv8>v-IR zMe&FV?pwEuKq$}2Bf<_2Dx#?$4*&WGL~C~<`~B|pO(Y3LMeA&&r0q+P6f83Zq>I$8 zox;#hoIP->w(|q%=@7_{a(Ul^pDKDYcQfoU)1jpDXswG5rKc0=l3QW& z*#k}`2LLJtQ!=c20ye(|IRdB`krbfp-RLxqZJpgjVu_i&Hp$8u=$pgG3*oK0jT%x6rn86MnznaZe(X z%aVjh-nwNI3iuh4qavjPnoM{FWpK?yF0(RR>47HoCPo`C+|_?7?*X;j>S@`qhDcn; zr^v)@nbq|+orYK>Oe; zkO)W?3DY9ir%^KVEaVc=?)B+{k~+WY0T@=5F{&s#1hv0bCJ{dDvLd3vW zXxX;u?upS7Zf8$jGkfZq*nOylOG=}hGAxh6(=J5Odh4V}GQxd@KVHR-!yUZd6l82g zF((c$qiT2=r9%n`1q1HAoe_qae#{^=DZH|1@aNx|G4rMY>J5MsG5F07-9eWq5t(Kg zsXrGp4*^{KwM^o1llFbP&}%kPUVSNQsKCp-PPdHF(?#RjH&Dh*rLbxufq>XF1x(ZX zo3gnXPw>2Yos$pOJPd){w0<|u6wr%i-7fg;QqY7+$ks!6RVPU-=i@fAh@hcUx8^lU zCZA4V*hp8W;?jJ?8tZ7;ypG{>zwJE7(seg$yMMAygOB7L5!FPGJ5wHcig%Q8^jT1U zphvtM#cjs%5s@s{XJEBry)Hob?Mn@|3P84!=UU-bu^j4SkAJaaB~ zJm$HelscW&?|2^&EQof%>GNUEg0wpA4^+@bQHVVLFGSyZ2`Mi(Z6fNs25~M^R9S^w zF5HXW%K{O(hJ!?#>L{8r8-ygpcE9~1%}W*{7x-LVWx0eos2GxmGHeWtnB-|qoUqB*ra|Z4 z?c|T0+?zEeiO!m>=(gDj$^PT4s{q(QM zxj9+s>jDj-h@BMF6)t7eWGJn4qh!PgcSNvd(OBBft`8{)fhtOf0xbvKiM`ku)#vn< z#{^W+wz~)av^kXh`}>0_FB}Pd*DDVbe)JCH!rZL%?FH(U2;n;uaqOaUq|uXD`$Ziq z-`a?#xe-d}uwdSF&Y3a_d;fN%w!?0Qcj~6;Oze*dsGx0oH-(GtC;xkQr=_hU{j?JX z=cHLi-@Ao|MKh5yoFb>Dck!9>!dw(VLy_u*Z_OQoIcf@rhE8YMvInunaf8!e+D?!K zcNV7wBmO?mR5IH_A_f*3=q z9LLb7wmLe^bY<>dyv)_UVlka7A3-h(^#V0??3j)%rXxWGt#SgvX=kI&ynxP%X;^}; z!j>j1XOx+fm&>d7F6N8Xs|n_-?r~$M!Nhas@|_1(5Q}t!Ki4t3&g((1SyGiKoiJEBGR8^(1sfp(1MpUnrG7O!Pk}}GN z4#hAGcW7-|Xqrr3ey*5&9(lzlv3CoxO@Af6@huX&H(`d`UH24Jv110MKYyLz8J8U= zP_I?9x;toCI2L3d{;6jXm~}q>$+qudk!Ixv5V?OF7|$;b;ov zg)~&>xV-Nr-fyt6ZSjJaH(K#NB7$Hv)Z(j}nx)oe%DS1p=IpZfYRa)#Gw(hL-R59j z18r?>sA3KzB5Ilx78Ek7vI3u$?PZRX1ql&*v){qIgqihSK<5!(mzN#;1zXHrMFXGx zt+itVnw1z|{||fv^y?p^!L9I{hz@SQzW$&7yNT$315^ns%MdR%tN;K207*qoM6N<$ Eg2+`W7XSbN diff --git a/ios/MetaMask/Images.xcassets/AppIcon.appiconset/60 1.png b/ios/MetaMask/Images.xcassets/AppIcon.appiconset/60 1.png deleted file mode 100644 index 93b658a34c0f56a79d2217872ec3d5ecd336b02c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5131 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 diff --git a/ios/MetaMask/Images.xcassets/AppIcon.appiconset/72.png b/ios/MetaMask/Images.xcassets/AppIcon.appiconset/72.png new file mode 100644 index 0000000000000000000000000000000000000000..45b37880388cc84056c10508f0346d6703ddf926 GIT binary patch literal 4392 zcmZ9QcTm$^v&Vn*62Q=uULIwi|iUL5~Ljd@DX~k^`S8mh3%^2TL@+QY;^ z7r6L0ustuHT{?6qL;DZ_0I~j?WI%o)$E8UVY6RD#*&=5HC{;b-H_ZUx%1;ioX6SQfN-QSMSNYZ8xHJuDP}yv~i}cPJs{dPszQLR>stJ zQTF&7XKhFP^}B(D-499!GTr2$(BODt7jl&z5S+^pAY0^n9qT@KI#*+~Hkp%nci;2HMj=^r+gWa=_^i5S;{Y;#II(wQ z_we*7sFkQ0^C}68SYH2)5BtPds^K+C(Uf+(Be0&tyR*c8Vonfrt56Z3Oe|;Zv-4oO z7bh|80`4o5Lw&7jSzO6A26q6SFWt2a!%;88 z4h0U_GN5fo$i)5h2S3)OaO(mGdX%JC*}$EsqcdSvPHwmx5Dt8xCkW=ccXfRVz=lRp zfafSpy#o0(bJtIC5gHhwexd%G<1n23x)|3R-f%z3XbWJT!T@|@O4ENY3g4v5qy>DU zSzgVM)J~-aV%%c4M9Ek=3(6nR{q>m;zK-1*SP?`OW+hq{{=P z*In8UaygFcTX5b0D>S*${-!@*IDk_+zczX@@|T4{q+w_s2%zZ#n7SG2M76yReGDuK z9+}c&(6nD797Ya9iS0D^IaKI*`dvAk?*uNI9k>7NnAfG}7glM!pgnltCPO|vrEGAL z$sjC|N%4_x2NRrjODjV;mUOf51rC=QhgN-3{=jH>I_znMfSEuvm-PeC=I{t!sX+j0 z@mP(xAA&Ks20P*Asrw@jhV>(ciHE(E*L)`Y*5g>^nN(idYG)K)@jLOSXGXcttsnLZ zTXS~fr^5&`sKq@#Y-7cNykYQS%@J;}e~BtDHg)Y>z)e&#;?yZKWLjwqvPvyb?_^qC z`~3Bx74;GYj|_hPA)>ikslSw0E+4kwaiSDg0$joRH-Q6f0+v8ijZnmN=>_lo--?T$ zd-*&0I~hleO&rF*iKHKksA@bV<%?XQxK6QgkMaCLMR0j-Qdwc&qEW(cYs+h7`*6-v zf>Y-5uBFESl`vJ@7c_UvH$yV8kQcr<*3O)MRyMbB|p{E`hN(~;34p$aw z4hLgl=Wsgm1~&s1cLj@gGr$ABZZ$|3BU zd*&e?;@kNnodOmggN7&{P!`%x&NGS;?MZi#Ga61RnY zKutE})B6a?ouRI2#4S5`=W(rlVOZ~qrZxGQg^M%h|hl@nD2Ap#x6R-Y&Cmj#=I5OfF&-%?QSY$L zLcyxobl~_n?w@!!G3mO$!G=_D?bNReRwKKP+sLF%uiN5@?Xb>e=L~R0Ui_A2GP#F# z>QaMt8CmK|mfo<{JCQAj^8v*W#?Fy>*=c<1)JH|~N4|J)bGbX|T# z4A|*Y7k;?<#Iw>2(?w`qVrGi%LN7It;X6&pt{xQ5^Sr&+BBAuLu%!r*9P_PW!-kpB zcX5%I*t+EYJx3a`VL$GJr}CrXNN8stza0`^auRkOwHo|rgQiuO!QQ$sPFwJPIjScT z!^ek?a$Nb%R{pr%z?HNWsfWqJ=r65@aG&n@(v3^rV$>gyc=&`_a?8$wkzDBJz}~1+ELF&oj9f{YEK`sVfugTVHDzB zbTLmUz687Cj6vgtVoyu_eoeP}Dd?XX>sG!f*P2#@PA$-?#_yj`K5Y}Eef_XBsohW< z<$SN34JQH2wG#x^P+5%eqNw~?*;;o z=i1a}|LbyEdy`lxL-khLP9NGsI$l@_||2U&`o7z?{szNMg8Vp zWPz1%YlLZC_c6` z$mTmqk{QNw1#fdkAw)5&iN55Ej#kJBtgbaN8=f6d=A<7{{cauZJ!KyN>1n(KxXEVX zNizX2uKt6z$)9gON^uti1SvzRR=))msJP8|G>4T@~#SWhtb)oer8&G zF-$oNQ)Nc3!9uKRnF<*fR=A=5{M%x^^^!!Sk;%uZa%%%F)e0o``w#E?ymmXF`y1pW1fT7a4U z`qrj@oSic?$7koj8*oZPV6;G)-NT=@S3c9|qHj0o+i2LHO=}FLwXbEV=S1AlQJJDL zG|3z%a+H{%kUO5z>9ONVy~wU;YIwJ%j>>Wm0wOpHXHYoXdzX?&W|jvJ*zt9@#wVl^ zIa&-kCSGL2zrJgXHC^GMS7#JBKk^;YpN0Cy^hcq7eafY?;lfwZaeWt3)D?1SgQVfu zYgS@d9*DKPtf^(G58#5ZJBIJ9FYE>Sc8MqHXX~A2mr`wDXSWN8gap8ilLsdo!jfHy_9@S<`Bfv^=x23SFs2OA~I%XaCHwgnJ;AtZXfylHCz9`E!`HJMV@&N!|o27#V~1>K+&oe_`JN0(vkR= zJ?;89Y+mc#I5)G;!AyvE!BMvK-v_5{U-gOYaWbl;eUpEXAoNL}3CfXw;X+&S z)ByB|P7#M-AUvl|AwBC2MI%JJVLB{yrO4Jc2ZYF|@=q)WOa3p><^V~nxR>zfc*<97 zq0UtI7(rR==fFS}(@r!~Y^ddhewv##w}TsV3rtItOo$)mQQMr6EtyJwSMm!UA$iuw z6`k-AobTN_2<5l@mHUP*I+VW3AjeLp`BiH20>r5K)!@3S0&z6Iz-eYa8AV>2*EZf1 znNe&$?@A^b^!~V>0jA(sPaZ(m~4?i88yhqEA!_dY5m| z!GhG1Sx_{fYOq!+ic54a6)cB7cm5*RzB{t`@`_}P$je4L5ygdYjS<3UQqC}vZud)5 zJVkg0I2`NcJvkx`-i(d!ADTbB(wCl-@34#_%Eh%hrts1dc66KKuv2yv3l-j@w{o>J z&{h=kb1`y3l3TF@K3bFGv<2et-#F#&i*A0&Ts@2*wd-zLCN)1>^pP3H+X0~3I z{R)iHa>h+1zQ@jVB;;KPPMQ7jF=$TUpnhce-Tt9(KVLHAW9!Ou!qNTST+*aA($W>{XQiNUUjbFl(xjTx-f-8EM1(}3!Cvi-IlzFC)N=voZ z%NB58Oe%MGOGnZ@P1{ZpbTyIo|y7+yr_A=k+?*xs` z<}crZffL?KJ> zSyr0bH8e*xCQY9L3lR8*w3b8RBHqc`H5+5-A{{dfix2}Bj;(9@{m>!(-0O-Gt6oj3 zsWyJ=A?+{kHwUL*mnzTw-|zKY z3)8Jr8HH7Bln|(B_;Mp45~^nxdfPqJOU*Ob>rw!DS$QR>tUOds6(O&nrlhJSuOule zt0pU3{n+O2{{aH;-bQ*y{C_}BOcGQ0R0;Wv;Y7A literal 0 HcmV?d00001 diff --git a/ios/MetaMask/Images.xcassets/AppIcon.appiconset/76 1.png b/ios/MetaMask/Images.xcassets/AppIcon.appiconset/76 1.png deleted file mode 100644 index 3b3992e537d7a37d286626f04114aa90646968f2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6846 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 z 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 diff --git a/ios/MetaMask/Images.xcassets/AppIcon.appiconset/80.png b/ios/MetaMask/Images.xcassets/AppIcon.appiconset/80.png index be5e6b36f8fabe2b56cd8bc432b42c4b83066740..4c9ebedd6bbe950090445f2cb372d8140da6af70 100644 GIT binary patch literal 4830 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 AfdBvi diff --git a/ios/MetaMask/Images.xcassets/AppIcon.appiconset/87 1.png b/ios/MetaMask/Images.xcassets/AppIcon.appiconset/87 1.png deleted file mode 100644 index b65ad48a9af7ea973b4d09713f14787f28bb389c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8049 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 diff --git a/ios/MetaMask/Images.xcassets/AppIcon.appiconset/87.png b/ios/MetaMask/Images.xcassets/AppIcon.appiconset/87.png index 1a83e1e2bac77842a582d986a98921e951a9ce06..969dfec4a46f83f1a978d09433ace2aab4d4d8ce 100644 GIT binary patch literal 5332 zcmZ9QcQ71K*Ty%iEUOc35hXe+dM9f1-gcE>bs|>pWhHt-MDI~zqbwF7YL;lxNwR99 zOF@Xss$XXZ&VHq@d3L%;w4fI>%G!}Lb2{sjr~&Fnig z_vl7AoU~010Dv%F03hZm0C0YjiunNm1d0LxzZ?Jn`CI^i5n0%7qIk1GjL_5409^kY zue#6~HyKi-HryWoAfx*iw*dKtOgBkTfR2GC=qKUViso>XC1tg)x;Own#i#W<@SS8w`0zo(Qh4)EFI5l zi`M4+h1T7l(Iv`}=Z8PZQeb^t4A?|XVFb<1^7_8^EU35*~i8j(WuYD6E0zQt;bnfb+>%#DN@K9&{UJGuGIL5s> zILv!?eboe~+DWL9xZOswo&b2~h@9RDbLF^bb;|f=mbh46ir0p7pLN%@7SyXuE-X+~ z_50RyqK341dAoLZnMN8-Rr&ym z3G#a`TV5-SC)C&S(Pa6%cY`lkkP+w5SVj5EAb&Z7U&n?bxus#K3mWC(lYp7%_gStd zRg0q+0uDlZWh9D{x3`s0T}05#*+{n}m}u9*v~lqpo(N>1UHEfowB7CX16(VL+`XKq zEM04&E3)F-3{i2u&LiL{V2^oOe(;lGsO*R0xjx`$f*FE))zlBwWt$vo$0_{3&PNIk zo}@Y>BPfv2J?cGKq=YFeXZBG`9{A>G7FVB{TNz>5(t!3vbqAT7RVeZfLsx+hORhAJ zNF9TpT(m(Zn*lRpfi|}~44sqU$eCnr8a)K=0tMyoCXOJrXD{%46QdY*yq_WeiIBaiGC$89|zIx2~WaOuM=@>BN>nEiu;P~ zE_`C5iMxp^&{5A}LwDUosIX01I?z234vji`&7KwSmgaKSGeurEokj8y5Dd6S__hNz z+WXA0v6L0-5H?&;O2jyeu0h=+Faoq1=7BNQzgf1t*?v%QCqtV7j|uM(bc<)eD7F>T zHxdXAXvtm>N(29u7>kYhA%1+U7W=jAZ}R-!@2mMdH7%3^ie>7OZ?FE8Jd>o&+^n=U zSl>&n@s0zjZkE2vMchVk$?%``baJBThX}n{VOM0B1&@_Fi$qwYax7VQUTAqXQqO0# zmkX1-5~?s@9zmy_#lYd%1&%b5;g8;=)&sH&cdyO26^DB8Ph7L=W}HZJ@>Y3C1pv@b z_Kj&yf{n&NHZg87@wn&s7tg@#-HpX8?Q0v!p-k`3*l8ZBJnBDRBIrF;l-~YJ!_VU$ zNH_3y9^AJnc=Zd3;-jq4mJ=k$0^rLc%X~mZ$q93@`b|&GDl+M(oD8Gug}zctQ9=fN zv~|0+0(>7V9VGJW??#Z0$fLm67mQ@DK$ts#D?*9kO@2^)33Lzhgp7+}wBjAjsSb6A z!h1M1bwljzf*&E8wZE0JGSRxBuDr6)wB^-NNyeM^bTiDth8jJ~43bIluPesuMMiRQ z-82a|S7N%yU%S_r-2mrEUVbRw79*X}(;laL7q~{$PX{v75MHTnft{JKW8iT^)sy!U z@#gQSe4fiIMsf6?UGmV7A)iZM{rPwXwlq&O3NZTH27!eM(87V={gVf&Dnh(ILw$Dc zn)Iewq1u z6vta2*F!XD%5$M$0Py9OHe*s-uc@ zM3WTihAN(Ka`Txze47a6oP5NRx%d@#=BeXKTF5Vb8Q{s=W6I`76raK-D+>=q@Szxi zZ=0sa63{afAe2nCKq-$XjJ5Ft^Afc%zW3wX^370Gdf87o#ov|%u$ahxuWzTlo%uGI zP=d>fc~fg(LQ2M%HXgJf%?%|?=bx2!k}L6H)%JBbY@{Y@Aj>5&J?dN^-^&d`#A{eM zlCtu*>y#65(2~BDEufuF75z1(s?b49U(9xp@?75=o?Qg*oBcmX4fQd(`; z3b+N8CPP>W2T{pwD}5K{_`)Ol4fqfQ#Q1JP#qZ8Iu}W}PgI|{p&_3SMLwW_1o7`EM zqcK*N3DgXocuDAM156-NN3_P$-0EiK2%vjhFi4(cJLER3=JBJdX|B7aIIXs-99r2U zAe?Bk2!xvSv)9$FeXD`|s7W&~Z~%pT<2ro@*7*J5(^Sb!jCzjXYrF&5;w;?HgH-;9)>zfWPJg%ng7+zIZvP&Tj2#TU}85DoWfKT+{; zH=14S?#yQCxal-`mPDAIk0P}QJ}4lQ@EPfbYJrKSCwXxi1BQTmIUyv;IOwShMEWy|#6ur3bbeMmHShj$ z9?ukgnHpBND=FO|tXtE(`5T!+x)kR>hzlN;zKC+b6=MX@n3O zQzgv4p)4x#vT4Cv-*>ZVWJ_->DwpDZG=}N&jY8j76?Y|KGDjrtgN-vtq)9Y!fjEEC zGOH0tdBk@9gQzgBk#V!o#$t0`nAeWb-$Iw9?_n#`tm^3(M$zY-$P*>ijEA39{f>j|4%x|L5sk~I99DBct)=-iuNx$;#EElC=$ZsetO7$jyi zF{mHDQPrSqC)@Pu7N#7R9V+EJK+bf|7AK54Sa-{&+9GyWinJJDXig^!!7%G8Y+Vko#pC|@lNhOw=#n1 zk+;O4o%OfZek#hL_fwnk5Szx&3PiQA&c^wql~FnO62SWlmy-ppsp=Opv~f5>`xr7VU@ZQYV#>14l(Or&>1 zo>lsVbmzZ>5=zsE3-H3S*S_xx{cU@?+Tv#%QjCzyy1T32p$n`~8moG?X^y`P=dJNg z!K(?e-(wUWSl(#*fe1=PFY5;dbqNFqy|n8&V$%CgveksJtQg^Z_m#qxq0%g+t~^(i zl~9?%X$}}VSmgOCQPgx&F|yZ*A6*#@YB|MxBA~u`U?ksgkA9oos>05!UL;xZ zg{h+459G|F5krOC+m#AnmY$B+AmITvCB7zU-bE}cC3+d9h>I780JtcMK|;Lyx12dy#}ZEACmRXW*h zdfLFF+DBdpxRuaIyUkBej|$E_4qB|+NE31}SPsb}TE^Z9Ivc6ChqOs-k34W?O}Az` zG$)^F5zc3MDJjDXZ|c+zYEf}@W+FZ=vjr`EbmAK(WG2isQ;{QTDDU)N3w!LbTPDUl zD3T6uq_BW#-Zr6nMEsEa<6>B-s(DrB(T2;7Wk#4I{+&5A=Ssbo};A3n!ktDNzLZ9R?=q1F^xTdq} zU35A}ZY|(kw^3~x(k3YdWz(PyJP67abl$V`;kVG0TyyV=!svy|nr0iFebfC`~ zMv$c8FF(p02Y$(u@m5mAo&eKjEYk7dsfHGNhSqVZ5@V7bE6$`l#gFZ!(ul#i9&;KH zje-eKJTEcv!zXzr$= z^BMeg1C8z5RY3ZHtQyYuRYt4?(c?r%4AZ%UKYnoq-XVUNFlFZNX>XvXHTSB`a(MCm zDdjWD9-NmbvpXj}L%3+D{{ff&&>yt9m=U=sWYc-2uK;-tZF*ueErLnn{*}o4vi}|N zryRV-8Y$Pu^EtlhNJc~U__g;aHCNR+_5&QJhWKiykfe){@DeZs9(B8E!^9wdtU*bE zVNz!WD1k7VaNhFMM z!y~+b2%F|JDqVsk3Vik7qT>>vqw35tzpg;MAOqEK?!uU7PGDexrusl*v9(5?SLp@q!y ziM`(DXOGV7bDB-rfqrUSlb80=G3f)Vx<2JAFND@Z-k?Kzt`7<6+kFA}a$)C;3$8+< zhvN6Bq~(F>3)js~`cJTO^>&ap-l$i<=8@qutF`mbnh3%%<1EG($ZoI^ee0-h^cU5~0N zmx_Ms@|St2Ut!qVY-UP*X&{*X`*e!Q(iFT3n=tt+CFIJf>@Z~g(l=tAyrDcq${{Gg zhxqY_ivDBKVCx;uWY9%y2x;j@BHc54Iwk|*^a286(Saz&J^yFkK_VfPwIulSld?$% zc!oSAT6^)*Kk-Q5X}GGj>p_h%eIw)1Vv_F~PG<6)OaqaCB#Rla4ksfLQgd!E=M_s@ ztVeV&w-Poj>_66jJfN$)gnpXSjKAxcGqFPVhrGD|@Nh&^ZAryBsg6fr;2HsF#UsN)ndi$WL=&PiRO!-^oM7+JqMVgZ)AAhmS zK_}DSt{(CF)TKLGo6`4na73&cz;N)t#|sJ`ScBXvb~rm3_+Tj&*W~kiaM#umLDoXi z-KxJmgdP|iY$=hG_&mCpni&ufVA#^!tX!9M&c&5r0_HNQJq(r4iNAcgS1UarR>Pa8 z8Nw9a!Qpq0FMeE~E5qqWrDgkk2EP7;-R8c${JfnA?YG6xk`WvGF5!cXq3qr*zU>P) z?$n8&BWKG_V`)bX3WXJ0t$Q*2N@LxMYl96)!?}B&xLdx%|8*w`dC&HL`(Xbpu_fNi zdmjFJs=fTSGdJ!XPk<&Yz}YdtMc&EJ@!00m~y>;~Zf?+F1O-Y)(Dj^4=sGUB4<|7uIhOUe9) U(F~j`Tzg` literal 6905 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 CFBundleIconName AppIcon - CFBundleIcons - - CFBundlePrimaryIcon - - CFBundleIconFiles - - 120 - 180 - - CFBundleIconName - AppIcon - - CFBundleIdentifier $(PRODUCT_BUNDLE_IDENTIFIER) CFBundleInfoDictionaryVersion From 54fb95004f05b98eb64c81e4b5d75f7b8955a938 Mon Sep 17 00:00:00 2001 From: "runway-github[bot]" <73448015+runway-github[bot]@users.noreply.github.com> Date: Mon, 24 Feb 2025 22:53:34 +0200 Subject: [PATCH 030/473] chore(runway): cherry-pick fix: cp-7.41.0 Handle better errors by getting tags in pre-init (#13694) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - fix: cp-7.41.0 Handle better errors by getting tags in pre-init (#13598) ## **Description** Handle errors in a more scalable way by adding a try catch to get tags function. Also added test coverage ## **Related issues** Fixes: ## **Manual testing steps** 1. Go to this page... 2. 3. ## **Screenshots/Recordings** ### **Before** ### **After** ## **Pre-merge author checklist** - [ ] I’ve followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile Coding Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [ ] I've completed the PR template to the best of my ability - [ ] I’ve included tests if applicable - [ ] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [ ] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. ## **Pre-merge reviewer checklist** - [ ] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [ ] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots. [257c3ac](https://github.com/MetaMask/metamask-mobile/commit/257c3acc6eed7bf2424791aef246ee4cda9f61a5) Co-authored-by: tommasini <46944231+tommasini@users.noreply.github.com> --- app/util/sentry/tags/index.test.ts | 80 ++++++---------------- app/util/sentry/tags/index.ts | 106 +++++++++++++++++++---------- 2 files changed, 89 insertions(+), 97 deletions(-) diff --git a/app/util/sentry/tags/index.test.ts b/app/util/sentry/tags/index.test.ts index b6f5808ef5aa..131cd43aa2fb 100644 --- a/app/util/sentry/tags/index.test.ts +++ b/app/util/sentry/tags/index.test.ts @@ -226,22 +226,6 @@ describe('Tags Utils', () => { expect(tags?.['wallet.transaction_count']).toStrictEqual(3); }); - it('returns undefined if ApprovalController is not defined', () => { - const state = { - ...initialRootState, - engine: { - backgroundState: { - ...backgroundState, - ApprovalController: undefined, - }, - }, - } as unknown as RootState; - - const tags = getTraceTags(state); - - expect(tags).toBeUndefined(); - }); - it('handles undefined pendingApprovals in ApprovalController', () => { const state = { ...initialRootState, @@ -278,51 +262,23 @@ describe('Tags Utils', () => { expect(tags?.['wallet.pending_approval']).toBeUndefined(); }); - it('returns undefined if NftController.allNfts is not defined', () => { - const state = { - ...initialRootState, - engine: { - backgroundState: { - ...backgroundState, - NftController: { - ...backgroundState.NftController, - allNfts: undefined, - }, - }, - }, - } as unknown as RootState; - - const tags = getTraceTags(state); - - expect(tags).toBeUndefined(); - }); - - it('returns undefined if NotificationServicesController.metamaskNotificationsList is not defined', () => { + it('continues execution when individual tag collection fails', () => { const state = { ...initialRootState, engine: { backgroundState: { ...backgroundState, - NotificationServicesController: { - metamaskNotificationsList: undefined, + AccountsController: { + get accounts() { + throw new Error('Test error'); + }, }, - }, - }, - } as unknown as RootState; - - const tags = getTraceTags(state); - - expect(tags).toBeUndefined(); - }); - - it('returns undefined if TokensController.allTokens is not defined', () => { - const state = { - ...initialRootState, - engine: { - backgroundState: { - ...backgroundState, TokensController: { - allTokens: undefined, + allTokens: { + '0x1': { + '0x1234': [{}, {}], + }, + }, }, }, }, @@ -330,25 +286,29 @@ describe('Tags Utils', () => { const tags = getTraceTags(state); - expect(tags).toBeUndefined(); + expect(tags?.['wallet.account_count']).toBeUndefined(); + expect(tags?.['wallet.token_count']).toBeDefined(); }); - it('returns undefined if TransactionController.transactions is not defined', () => { + it('handles missing controllers gracefully', () => { const state = { ...initialRootState, engine: { backgroundState: { ...backgroundState, - TransactionController: { - transactions: undefined, - }, + ApprovalController: undefined, + NftController: undefined, + TokensController: undefined, }, }, } as unknown as RootState; const tags = getTraceTags(state); - expect(tags).toBeUndefined(); + expect(tags).toBeDefined(); + expect(tags['wallet.pending_approval']).toBeUndefined(); + expect(tags['wallet.nft_count']).toBeUndefined(); + expect(tags['wallet.token_count']).toBeUndefined(); }); }); }); diff --git a/app/util/sentry/tags/index.ts b/app/util/sentry/tags/index.ts index 7d0a2ceabf2d..4c9a52d41c89 100644 --- a/app/util/sentry/tags/index.ts +++ b/app/util/sentry/tags/index.ts @@ -7,42 +7,74 @@ import { selectTransactions } from '../../../selectors/transactionController'; import { selectPendingApprovals } from '../../../selectors/approvalController'; export function getTraceTags(state: RootState) { - if (!state?.engine?.backgroundState?.AccountsController) return; - if (!state?.engine?.backgroundState?.NftController) return; - if (!state?.engine?.backgroundState?.NftController?.allNfts) return; - if (!state?.engine?.backgroundState?.NotificationServicesController) return; + const tags: Record = {}; + + try { + tags['wallet.unlocked'] = state.user.userLoggedIn; + } catch (_) { + /* empty */ + } + + // Early return if core engine state is not available if ( - !state?.engine?.backgroundState?.NotificationServicesController - ?.metamaskNotificationsList - ) - return; - if (!state?.engine?.backgroundState?.TokensController) return; - if (!state?.engine?.backgroundState?.TokensController?.allTokens) return; - if (!state?.engine?.backgroundState?.TransactionController) return; - if (!state?.engine?.backgroundState?.TransactionController?.transactions) - return; - if (!state?.engine?.backgroundState?.ApprovalController) return; - - if (!Object.keys(state?.engine?.backgroundState).length) return; - - const unlocked = state.user.userLoggedIn; - const accountCount = selectInternalAccounts(state)?.length; - const nftCount = selectAllNftsFlat(state)?.length; - const notificationCount = getNotificationsList(state)?.length; - const tokenCount = selectAllTokensFlat(state)?.length; - const transactionCount = selectTransactions(state)?.length; - const pendingApprovals = selectPendingApprovals(state); - const pendingApprovalsValues = Object.values(pendingApprovals ?? {}); - - const firstApprovalType = pendingApprovalsValues?.[0]?.type; - - return { - 'wallet.account_count': accountCount, - 'wallet.nft_count': nftCount, - 'wallet.notification_count': notificationCount, - 'wallet.pending_approval': firstApprovalType, - 'wallet.token_count': tokenCount, - 'wallet.transaction_count': transactionCount, - 'wallet.unlocked': unlocked, - }; + !state?.engine?.backgroundState || + !Object.keys(state.engine.backgroundState).length + ) { + return tags; + } + + try { + if (state?.engine?.backgroundState?.AccountsController) { + tags['wallet.account_count'] = selectInternalAccounts(state)?.length; + } + } catch (_) { + /* empty */ + } + + try { + if (state?.engine?.backgroundState?.NftController?.allNfts) { + tags['wallet.nft_count'] = selectAllNftsFlat(state)?.length; + } + } catch (_) { + /* empty */ + } + + try { + if ( + state?.engine?.backgroundState?.NotificationServicesController + ?.metamaskNotificationsList + ) { + tags['wallet.notification_count'] = getNotificationsList(state)?.length; + } + } catch (_) { + /* empty */ + } + + try { + if (state?.engine?.backgroundState?.TokensController?.allTokens) { + tags['wallet.token_count'] = selectAllTokensFlat(state)?.length; + } + } catch (_) { + /* empty */ + } + + try { + if (state?.engine?.backgroundState?.TransactionController?.transactions) { + tags['wallet.transaction_count'] = selectTransactions(state)?.length; + } + } catch (_) { + /* empty */ + } + + try { + if (state?.engine?.backgroundState?.ApprovalController) { + const pendingApprovals = selectPendingApprovals(state); + const pendingApprovalsValues = Object.values(pendingApprovals ?? {}); + tags['wallet.pending_approval'] = pendingApprovalsValues?.[0]?.type; + } + } catch (_) { + /* empty */ + } + + return tags; } From 3714b8581ba6bd5fa7bea001c8b7c1f9dcfce2ff Mon Sep 17 00:00:00 2001 From: metamaskbot Date: Mon, 24 Feb 2025 21:49:03 +0000 Subject: [PATCH 031/473] Bump version number to 1583 --- android/app/build.gradle | 2 +- bitrise.yml | 4 ++-- ios/MetaMask.xcodeproj/project.pbxproj | 12 ++++++------ 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/android/app/build.gradle b/android/app/build.gradle index a22d78aba702..2ec2ba208fbb 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -179,7 +179,7 @@ android { minSdkVersion rootProject.ext.minSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion versionName "7.41.0" - versionCode 1581 + versionCode 1583 testBuildType System.getProperty('testBuildType', 'debug') missingDimensionStrategy 'react-native-camera', 'general' testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" diff --git a/bitrise.yml b/bitrise.yml index ba14eac18ff0..e93cdfa936b5 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -1828,13 +1828,13 @@ app: VERSION_NAME: 7.41.0 - opts: is_expand: false - VERSION_NUMBER: 1581 + VERSION_NUMBER: 1583 - opts: is_expand: false FLASK_VERSION_NAME: 7.41.0 - opts: is_expand: false - FLASK_VERSION_NUMBER: 1581 + FLASK_VERSION_NUMBER: 1583 - opts: is_expand: false ANDROID_APK_LINK: '' diff --git a/ios/MetaMask.xcodeproj/project.pbxproj b/ios/MetaMask.xcodeproj/project.pbxproj index 99ebc724d428..53c74e244892 100644 --- a/ios/MetaMask.xcodeproj/project.pbxproj +++ b/ios/MetaMask.xcodeproj/project.pbxproj @@ -1380,7 +1380,7 @@ CODE_SIGN_IDENTITY = "Apple Development"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1581; + CURRENT_PROJECT_VERSION = 1583; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = 48XVW22RCG; @@ -1449,7 +1449,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMask.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1581; + CURRENT_PROJECT_VERSION = 1583; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 48XVW22RCG; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 48XVW22RCG; @@ -1514,7 +1514,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMaskDebug.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1581; + CURRENT_PROJECT_VERSION = 1583; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = 48XVW22RCG; @@ -1580,7 +1580,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMask.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1581; + CURRENT_PROJECT_VERSION = 1583; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 48XVW22RCG; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 48XVW22RCG; @@ -1739,7 +1739,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMaskDebug.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1581; + CURRENT_PROJECT_VERSION = 1583; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = 48XVW22RCG; @@ -1808,7 +1808,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMask.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1581; + CURRENT_PROJECT_VERSION = 1583; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 48XVW22RCG; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 48XVW22RCG; From 0df5c0946dbaf8cd192cf814237ec69d41ae47f8 Mon Sep 17 00:00:00 2001 From: "runway-github[bot]" <73448015+runway-github[bot]@users.noreply.github.com> Date: Tue, 25 Feb 2025 00:01:49 +0200 Subject: [PATCH 032/473] chore(runway): cherry-pick fix: cp-7.41.0 support NFT collectibles that have multiple images (#13701) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - fix: cp-7.41.0 support NFT collectibles that have multiple images (#13689) ## **Description** Ensures that we handle array images correctly by defaulting to their first image ## **Related issues** Fixes: https://consensys.slack.com/archives/C8RSKCNCD/p1739984618053419 ## **Manual testing steps** This is not really testable unless you comment out validation in a dev version to add this NFT. ``` https://polygonscan.com/token/0x4b22c268e3f7f643686e0dfb160b40fe5328cccd?a=0x397d7171504776AD3d5f578ce772914539E28a49 contract address: 0x4b22C268E3f7f643686E0dfB160B40fE5328cccD TokenID: 6822 ``` 1. Add the above NFT. 2. Does it render in the NFT tab. 3. Can you click on an NFT to visit the details page 4. Can you click on the NFT in the details page to expand the image? ## **Screenshots/Recordings** ### **Before** ### **After** ## **Pre-merge author checklist** - [x] I’ve followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile Coding Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [x] I've completed the PR template to the best of my ability - [x] I’ve included tests if applicable - [x] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [x] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. ## **Pre-merge reviewer checklist** - [ ] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [ ] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots. [7180605](https://github.com/MetaMask/metamask-mobile/commit/7180605a6fde545af5a88f2eee05e725f569eb6c) Co-authored-by: Prithpal Sooriya --- .../CollectibleMedia.test.tsx | 46 +++++++++++++++++++ .../UI/CollectibleMedia/CollectibleMedia.tsx | 3 +- .../CollectibleMedia.types.ts | 8 +++- app/util/get-nft-image.test.ts | 31 +++++++++++++ app/util/get-nft-image.ts | 12 +++++ 5 files changed, 97 insertions(+), 3 deletions(-) create mode 100644 app/util/get-nft-image.test.ts create mode 100644 app/util/get-nft-image.ts diff --git a/app/components/UI/CollectibleMedia/CollectibleMedia.test.tsx b/app/components/UI/CollectibleMedia/CollectibleMedia.test.tsx index 9ee9cd1a2efc..76415fccb58a 100644 --- a/app/components/UI/CollectibleMedia/CollectibleMedia.test.tsx +++ b/app/components/UI/CollectibleMedia/CollectibleMedia.test.tsx @@ -1,4 +1,5 @@ import React from 'react'; +import { waitFor } from '@testing-library/react-native'; import { CHAIN_IDS } from '@metamask/transaction-controller'; import CollectibleMedia from './CollectibleMedia'; @@ -6,6 +7,8 @@ import CollectibleMedia from './CollectibleMedia'; import renderWithProvider from '../../../util/test/renderWithProvider'; import { backgroundState } from '../../../util/test/initial-root-state'; import { mockNetworkState } from '../../../util/test/network'; +// eslint-disable-next-line import/no-namespace +import * as AssetControllers from '@metamask/assets-controllers'; const mockInitialState = { engine: { @@ -83,4 +86,47 @@ describe('CollectibleMedia', () => { const fallbackCollectible = getByTestId('nft-image'); expect(fallbackCollectible).toBeDefined(); }); + + it('should handle an nft with multiple images and render the first image', async () => { + const images = [ + 'ipfs://bafybeidgklvljyifilhtrxzh77brgnhcy6s2wxoxqc2l73zr2nxlwuxfcy', + 'ipfs://bafybeic26kitpujb3q5h5w7yovmvgmtxl3y4ldsb2pfgual5jq62emsmxq', + ]; + + const mockGetFormattedIpfsUrl = jest + .spyOn(AssetControllers, 'getFormattedIpfsUrl') + .mockResolvedValue( + 'https://bafybeidgklvljyifilhtrxzh77brgnhcy6s2wxoxqc2l73zr2nxlwuxfcy.ipfs.dweb.link', + ); + + const expectedUri = + 'https://bafybeidgklvljyifilhtrxzh77brgnhcy6s2wxoxqc2l73zr2nxlwuxfcy.ipfs.dweb.link'; + + const { getByTestId } = renderWithProvider( + , + { state: mockInitialState }, + ); + + await new Promise((r) => setTimeout(r, 2000)); + + await waitFor(() => { + const elem = getByTestId('nft-image'); + expect(elem.props.source).toEqual({ uri: expectedUri }); + const mocksImageParam = mockGetFormattedIpfsUrl.mock.lastCall?.[1]; + expect(mocksImageParam).toBe(images[0]); + }); + }); }); diff --git a/app/components/UI/CollectibleMedia/CollectibleMedia.tsx b/app/components/UI/CollectibleMedia/CollectibleMedia.tsx index e73a55195374..996713bd3bab 100644 --- a/app/components/UI/CollectibleMedia/CollectibleMedia.tsx +++ b/app/components/UI/CollectibleMedia/CollectibleMedia.tsx @@ -22,6 +22,7 @@ import { strings } from '../../../../locales/i18n'; import { useNavigation } from '@react-navigation/native'; import Routes from '../../../constants/navigation/Routes'; import { useStyles } from '../../../component-library/hooks'; +import { getNftImage } from '../../../util/get-nft-image'; const CollectibleMedia: React.FC = ({ collectible, @@ -52,7 +53,7 @@ const CollectibleMedia: React.FC = ({ if (address) { if (small && imagePreview && imagePreview !== '') setSourceUri(imagePreview); - else setSourceUri((image || imageOriginal) ?? null); + else setSourceUri((getNftImage(image) || imageOriginal) ?? null); } }, [collectible, small, big, setSourceUri]); diff --git a/app/components/UI/CollectibleMedia/CollectibleMedia.types.ts b/app/components/UI/CollectibleMedia/CollectibleMedia.types.ts index 760cc9584cf1..4837f0b135df 100644 --- a/app/components/UI/CollectibleMedia/CollectibleMedia.types.ts +++ b/app/components/UI/CollectibleMedia/CollectibleMedia.types.ts @@ -4,7 +4,7 @@ import { ViewStyle } from 'react-native'; export interface Collectible { name: string; tokenId: string; - image: string; + image: string | string[]; imagePreview: string; address: string; animation?: string; @@ -19,8 +19,12 @@ export interface Collectible { isCurrentlyOwned?: boolean; } +type NFTData = Omit & { + image: Nft['image'] | string[]; +}; + export interface CollectibleMediaProps { - collectible: Nft; + collectible: NFTData; tiny?: boolean; small?: boolean; big?: boolean; diff --git a/app/util/get-nft-image.test.ts b/app/util/get-nft-image.test.ts new file mode 100644 index 000000000000..bf9cba0fd165 --- /dev/null +++ b/app/util/get-nft-image.test.ts @@ -0,0 +1,31 @@ +import { getNftImage } from './get-nft-image'; + +describe('getNftImage', () => { + it('returns original image if string', () => { + const image = + 'ipfs://bafybeidgklvljyifilhtrxzh77brgnhcy6s2wxoxqc2l73zr2nxlwuxfcy'; + const result = getNftImage(image); + expect(result).toBe(image); + }); + + it('returns the first image if image is an array', () => { + const image = [ + 'ipfs://bafybeidgklvljyifilhtrxzh77brgnhcy6s2wxoxqc2l73zr2nxlwuxfcy', + 'ipfs://bafybeic26kitpujb3q5h5w7yovmvgmtxl3y4ldsb2pfgual5jq62emsmxq', + ]; + const result = getNftImage(image); + expect(result).toBe(image[0]); + }); + + it('returns undefined if image is missing', () => { + const image = undefined; + const result = getNftImage(image); + expect(result).toBeUndefined(); + }); + + it('returns undefined if image is not a type we were expecting ', () => { + const image = { badType: 'badType' } as unknown as string; + const result = getNftImage(image); + expect(result).toBeUndefined(); + }); +}); diff --git a/app/util/get-nft-image.ts b/app/util/get-nft-image.ts new file mode 100644 index 000000000000..b88e0aab39f1 --- /dev/null +++ b/app/util/get-nft-image.ts @@ -0,0 +1,12 @@ +type NFTImage = string | string[] | undefined | null; +export const getNftImage = (image: NFTImage): string | undefined => { + if (typeof image === 'string') { + return image; + } + + if (Array.isArray(image)) { + return image[0]; + } + + return undefined; +}; From e70519dc28c738d538bae003241f8aea08f2be30 Mon Sep 17 00:00:00 2001 From: Jyoti Puri Date: Tue, 25 Feb 2025 21:17:54 +0530 Subject: [PATCH 033/473] cherry-pick: accessibility issue with footer buttons (#13717) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## **Description** Fix issue with footer buttons not visible in IOS with large fonts. ## **Related issues** Ref: https://github.com/MetaMask/metamask-mobile/issues/13516 ## **Manual testing steps** 1. In IOS device enable large fonts 2. Go to test dapp and submit signature request 3. Check if footer buttons are clearly visible ## **Screenshots/Recordings** LARGE FONTS: Screenshot 2025-02-20 at 3 31 43 PM SMALL FONTS: Screenshot 2025-02-20 at 3 36 47 PM ## **Pre-merge author checklist** - [X] I’ve followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile Coding Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [X] I've completed the PR template to the best of my ability - [X] I’ve included tests if applicable - [X] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [X] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. ## **Pre-merge reviewer checklist** - [ ] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [ ] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots. --- .../confirmations/Confirm/Confirm.styles.ts | 19 +++--------- .../Views/confirmations/Confirm/Confirm.tsx | 31 ++++++++++--------- 2 files changed, 20 insertions(+), 30 deletions(-) diff --git a/app/components/Views/confirmations/Confirm/Confirm.styles.ts b/app/components/Views/confirmations/Confirm/Confirm.styles.ts index 14c6d22b1efc..e0e0377191a9 100644 --- a/app/components/Views/confirmations/Confirm/Confirm.styles.ts +++ b/app/components/Views/confirmations/Confirm/Confirm.styles.ts @@ -3,14 +3,8 @@ import { StyleSheet } from 'react-native'; import Device from '../../../../util/device'; import { Theme } from '../../../../util/theme/models'; -const styleSheet = (params: { - theme: Theme; - vars: { isFlatConfirmation: boolean }; -}) => { - const { - theme, - vars: { isFlatConfirmation }, - } = params; +const styleSheet = (params: { theme: Theme }) => { + const { theme } = params; return StyleSheet.create({ flatContainer: { @@ -31,18 +25,13 @@ const styleSheet = (params: { borderTopLeftRadius: 20, borderTopRightRadius: 20, paddingBottom: Device.isIphoneX() ? 20 : 0, - maxHeight: '90%', + height: '85%', }, scrollableSection: { padding: 4, }, scrollable: { - minHeight: '100%', - }, - scrollWrapper: { - minHeight: isFlatConfirmation ? '100%' : '75%', - maxHeight: isFlatConfirmation ? '100%' : '75%', - margin: 0, + height: '75%', }, }); }; diff --git a/app/components/Views/confirmations/Confirm/Confirm.tsx b/app/components/Views/confirmations/Confirm/Confirm.tsx index f6e5c9a31bfe..a3c9174e665b 100644 --- a/app/components/Views/confirmations/Confirm/Confirm.tsx +++ b/app/components/Views/confirmations/Confirm/Confirm.tsx @@ -1,5 +1,10 @@ import React from 'react'; -import { ScrollView, StyleSheet, View } from 'react-native'; +import { + ScrollView, + StyleSheet, + TouchableWithoutFeedback, + View, +} from 'react-native'; import { TransactionType } from '@metamask/transaction-controller'; import { useStyles } from '../../../../component-library/hooks'; @@ -26,15 +31,14 @@ const ConfirmWrapped = ({ }) => ( - <View style={styles.scrollWrapper}> - <ScrollView - style={styles.scrollable} - contentContainerStyle={styles.scrollableSection} - > - <SignatureBlockaidBanner /> - <Info /> - </ScrollView> - </View> + <ScrollView style={styles.scrollable}> + <TouchableWithoutFeedback> + <View style={styles.scrollableSection}> + <SignatureBlockaidBanner /> + <Info /> + </View> + </TouchableWithoutFeedback> + </ScrollView> <Footer /> </QRHardwareContextProvider> ); @@ -48,7 +52,7 @@ const Confirm = () => { transactionMetadata?.type as TransactionType, ); - const { styles } = useStyles(styleSheet, { isFlatConfirmation }); + const { styles } = useStyles(styleSheet, {}); if (!isRedesignedEnabled) { return null; @@ -56,10 +60,7 @@ const Confirm = () => { if (isFlatConfirmation) { return ( - <View - style={styles.flatContainer} - testID="flat-confirmation-container" - > + <View style={styles.flatContainer} testID="flat-confirmation-container"> <ConfirmWrapped styles={styles} /> </View> ); From 85f1ecf6953c9c6648e6775aae87f61b7156d625 Mon Sep 17 00:00:00 2001 From: "runway-github[bot]" <73448015+runway-github[bot]@users.noreply.github.com> Date: Tue, 25 Feb 2025 23:29:37 +0200 Subject: [PATCH 034/473] chore(runway): cherry-pick fix: cp-7.41.0 13708 fix the submitQRSignature scope issue (#13721) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - fix: cp-7.41.0 13708 fix the submitQRSignature scope issue (#13714) <!-- Please submit this PR as a draft initially. Do not mark it as "Ready for review" until the template has been completely filled out, and PR status checks have passed at least once. --> ## **Description** This QR is to fix the bug report #13708 , The affect area was Personal sign, Sign Typed data v4, sign permit feature. The error was caused by `submitQRSignature` didnt provide the bind() function to KeyringController, which make the `this` scope in KeyringController change. which cause `this.getOrAddQRKeyring is not a function` error. <!-- Write a short description of the changes included in this pull request, also include relevant motivation and context. Have in mind the following questions: 1. What is the reason for the change? 2. What is the improvement/solution? --> ## **Related issues** Fixes: #13708 ## **Manual testing steps** 1.Install MM 2. Recover from SRP 3. Add hardware wallet (QR - Keystone) 4. Import QR accounts from device 5. Visit Test dapp 6. Connect QR account 7. Sign permit / Sign typed data v4 ## **Screenshots/Recordings** <!-- If applicable, add screenshots and/or recordings to visualize the before and after of your change. --> ### **Before** <!-- [screenshots/recordings] --> ### **After** <!-- [screenshots/recordings] --> ## **Pre-merge author checklist** - [x] I’ve followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile Coding Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [x] I've completed the PR template to the best of my ability - [x] I’ve included tests if applicable - [x] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [x] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. ## **Pre-merge reviewer checklist** - [x] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [x] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots. [f836c23](https://github.com/MetaMask/metamask-mobile/commit/f836c23473e37545b8b0d8cfa104e9fe877eeb9a) Co-authored-by: Xiaoming Wang <7315988+dawnseeker8@users.noreply.github.com> --- .../Confirm/Info/QRInfo/QRInfo.test.tsx | 20 ++++++++++++++++++- .../components/Confirm/Info/QRInfo/QRInfo.tsx | 6 +++--- 2 files changed, 22 insertions(+), 4 deletions(-) diff --git a/app/components/Views/confirmations/components/Confirm/Info/QRInfo/QRInfo.test.tsx b/app/components/Views/confirmations/components/Confirm/Info/QRInfo/QRInfo.test.tsx index 2050d4f622a1..21074b2d414a 100644 --- a/app/components/Views/confirmations/components/Confirm/Info/QRInfo/QRInfo.test.tsx +++ b/app/components/Views/confirmations/components/Confirm/Info/QRInfo/QRInfo.test.tsx @@ -8,6 +8,7 @@ import { typedSignV3ConfirmationState } from '../../../../../../../util/test/con // eslint-disable-next-line import/no-namespace import * as QRHardwareHook from '../../../../context/QRHardwareContext/QRHardwareContext'; import QRInfo from './QRInfo'; +import Engine from '../../../../../../../core/Engine'; jest.mock('../../../../../../../core/Engine', () => ({ context: { @@ -17,6 +18,12 @@ jest.mock('../../../../../../../core/Engine', () => ({ }, })); +jest.mock('uuid', () => ({ + stringify: jest.fn().mockReturnValue('c95ecc76-d6e9-4a0a-afa3-31429bc80566'), +})); + +const MockEngine = jest.mocked(Engine); + const MockView = View; const MockText = Text; const MockButton = Button; @@ -59,9 +66,18 @@ const mockQRState = { }; describe('QRInfo', () => { + + const mockKeyringController = MockEngine.context.KeyringController; + const mockSetRequestCompleted = jest.fn(); + + beforeEach(() => { + jest.clearAllMocks(); + }); + const createQRHardwareHookSpy = (mockedValues = {}) => { jest.spyOn(QRHardwareHook, 'useQRHardwareContext').mockReturnValue({ QRState: mockQRState, + setRequestCompleted: mockSetRequestCompleted, ...mockedValues, } as unknown as QRHardwareHook.QRHardwareContextType); }; @@ -122,7 +138,7 @@ describe('QRInfo', () => { it('submits request when onScanSuccess is called by scanner', () => { jest.spyOn(ETHSignature, 'fromCBOR').mockReturnValue({ - getRequestId: () => undefined, + getRequestId: () => mockQRState.sign.request?.requestId, } as unknown as ETHSignature); const mockSetScannerVisible = jest.fn(); createQRHardwareHookSpy({ @@ -133,6 +149,8 @@ describe('QRInfo', () => { state: typedSignV3ConfirmationState, }); fireEvent.press(getByText('onScanSuccess')); + expect(mockKeyringController.submitQRSignature).toHaveBeenCalledTimes(1); + expect(mockSetRequestCompleted).toHaveBeenCalledTimes(1); expect(mockSetScannerVisible).toHaveBeenCalledTimes(1); expect(mockSetScannerVisible).toHaveBeenCalledWith(false); }); diff --git a/app/components/Views/confirmations/components/Confirm/Info/QRInfo/QRInfo.tsx b/app/components/Views/confirmations/components/Confirm/Info/QRInfo/QRInfo.tsx index 924f4cb69775..4481050a7ac1 100644 --- a/app/components/Views/confirmations/components/Confirm/Info/QRInfo/QRInfo.tsx +++ b/app/components/Views/confirmations/components/Confirm/Info/QRInfo/QRInfo.tsx @@ -31,7 +31,7 @@ const QRInfo = () => { const [errorMessage, setErrorMessage] = useState<string | undefined>(); const [shouldPause, setShouldPause] = useState(false); - const submitQRSignature = Engine.context.KeyringController.submitQRSignature; + const KeyringController = Engine.context.KeyringController; useEffect(() => { if (scannerVisible) { @@ -47,7 +47,7 @@ const QRInfo = () => { if (buffer) { const requestId = uuidStringify(buffer); if (QRState?.sign?.request?.requestId === requestId) { - submitQRSignature( + KeyringController.submitQRSignature( QRState.sign.request?.requestId as string, ur.cbor.toString('hex'), ); @@ -70,7 +70,7 @@ const QRInfo = () => { createEventBuilder, setRequestCompleted, setScannerVisible, - submitQRSignature, + KeyringController, trackEvent, ], ); From 5e4275e4792540e729ad38f6ab919d1d60411b11 Mon Sep 17 00:00:00 2001 From: metamaskbot <metamaskbot@users.noreply.github.com> Date: Tue, 25 Feb 2025 22:34:42 +0000 Subject: [PATCH 035/473] Bump version number to 1584 --- android/app/build.gradle | 2 +- bitrise.yml | 4 ++-- ios/MetaMask.xcodeproj/project.pbxproj | 12 ++++++------ 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/android/app/build.gradle b/android/app/build.gradle index 2ec2ba208fbb..f60a90d8d1b7 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -179,7 +179,7 @@ android { minSdkVersion rootProject.ext.minSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion versionName "7.41.0" - versionCode 1583 + versionCode 1584 testBuildType System.getProperty('testBuildType', 'debug') missingDimensionStrategy 'react-native-camera', 'general' testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" diff --git a/bitrise.yml b/bitrise.yml index e93cdfa936b5..de0667012153 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -1828,13 +1828,13 @@ app: VERSION_NAME: 7.41.0 - opts: is_expand: false - VERSION_NUMBER: 1583 + VERSION_NUMBER: 1584 - opts: is_expand: false FLASK_VERSION_NAME: 7.41.0 - opts: is_expand: false - FLASK_VERSION_NUMBER: 1583 + FLASK_VERSION_NUMBER: 1584 - opts: is_expand: false ANDROID_APK_LINK: '' diff --git a/ios/MetaMask.xcodeproj/project.pbxproj b/ios/MetaMask.xcodeproj/project.pbxproj index 53c74e244892..933482c6d3fb 100644 --- a/ios/MetaMask.xcodeproj/project.pbxproj +++ b/ios/MetaMask.xcodeproj/project.pbxproj @@ -1380,7 +1380,7 @@ CODE_SIGN_IDENTITY = "Apple Development"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1583; + CURRENT_PROJECT_VERSION = 1584; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = 48XVW22RCG; @@ -1449,7 +1449,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMask.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1583; + CURRENT_PROJECT_VERSION = 1584; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 48XVW22RCG; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 48XVW22RCG; @@ -1514,7 +1514,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMaskDebug.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1583; + CURRENT_PROJECT_VERSION = 1584; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = 48XVW22RCG; @@ -1580,7 +1580,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMask.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1583; + CURRENT_PROJECT_VERSION = 1584; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 48XVW22RCG; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 48XVW22RCG; @@ -1739,7 +1739,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMaskDebug.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1583; + CURRENT_PROJECT_VERSION = 1584; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = 48XVW22RCG; @@ -1808,7 +1808,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMask.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1583; + CURRENT_PROJECT_VERSION = 1584; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 48XVW22RCG; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 48XVW22RCG; From 228005d7a70cf0b88b4ea8b67493b097c9bcf4af Mon Sep 17 00:00:00 2001 From: metamaskbot <metamaskbot@users.noreply.github.com> Date: Wed, 26 Feb 2025 00:05:46 +0000 Subject: [PATCH 036/473] Bump version number to 1586 --- android/app/build.gradle | 2 +- bitrise.yml | 4 ++-- ios/MetaMask.xcodeproj/project.pbxproj | 12 ++++++------ 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/android/app/build.gradle b/android/app/build.gradle index f60a90d8d1b7..56aa06bf506a 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -179,7 +179,7 @@ android { minSdkVersion rootProject.ext.minSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion versionName "7.41.0" - versionCode 1584 + versionCode 1586 testBuildType System.getProperty('testBuildType', 'debug') missingDimensionStrategy 'react-native-camera', 'general' testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" diff --git a/bitrise.yml b/bitrise.yml index de0667012153..068c41b54096 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -1828,13 +1828,13 @@ app: VERSION_NAME: 7.41.0 - opts: is_expand: false - VERSION_NUMBER: 1584 + VERSION_NUMBER: 1586 - opts: is_expand: false FLASK_VERSION_NAME: 7.41.0 - opts: is_expand: false - FLASK_VERSION_NUMBER: 1584 + FLASK_VERSION_NUMBER: 1586 - opts: is_expand: false ANDROID_APK_LINK: '' diff --git a/ios/MetaMask.xcodeproj/project.pbxproj b/ios/MetaMask.xcodeproj/project.pbxproj index 933482c6d3fb..50f71048c92f 100644 --- a/ios/MetaMask.xcodeproj/project.pbxproj +++ b/ios/MetaMask.xcodeproj/project.pbxproj @@ -1380,7 +1380,7 @@ CODE_SIGN_IDENTITY = "Apple Development"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1584; + CURRENT_PROJECT_VERSION = 1586; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = 48XVW22RCG; @@ -1449,7 +1449,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMask.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1584; + CURRENT_PROJECT_VERSION = 1586; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 48XVW22RCG; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 48XVW22RCG; @@ -1514,7 +1514,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMaskDebug.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1584; + CURRENT_PROJECT_VERSION = 1586; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = 48XVW22RCG; @@ -1580,7 +1580,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMask.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1584; + CURRENT_PROJECT_VERSION = 1586; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 48XVW22RCG; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 48XVW22RCG; @@ -1739,7 +1739,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMaskDebug.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1584; + CURRENT_PROJECT_VERSION = 1586; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = 48XVW22RCG; @@ -1808,7 +1808,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMask.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1584; + CURRENT_PROJECT_VERSION = 1586; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 48XVW22RCG; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 48XVW22RCG; From 6413c30a8985fb03225c89cf464407a57a846fdd Mon Sep 17 00:00:00 2001 From: "runway-github[bot]" <73448015+runway-github[bot]@users.noreply.github.com> Date: Tue, 25 Feb 2025 17:11:03 -0700 Subject: [PATCH 037/473] chore(runway): cherry-pick fix: app store icon (#13726) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - fix: app store icon (#13724) ## **Description** Issue: Transparent App Store Icon is failing app store submission Solution: Replace transparent icon with full icon ## **Related issues** Fixes: ## **Manual testing steps** 1. Go to this page... 2. 3. ## **Screenshots/Recordings** NA ### **Before** NA ### **After** NA ## **Pre-merge author checklist** - [ ] I’ve followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile Coding Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [ ] I've completed the PR template to the best of my ability - [ ] I’ve included tests if applicable - [ ] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [ ] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. ## **Pre-merge reviewer checklist** - [ ] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [ ] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots. --------- Co-authored-by: metamaskbot <metamaskbot@users.noreply.github.com> [31b0cdc](https://github.com/MetaMask/metamask-mobile/commit/31b0cdc7f686970cf19ea92ff62a6806de466544) Co-authored-by: Vince Howard <vincenguyenhoward@gmail.com> Co-authored-by: metamaskbot <metamaskbot@users.noreply.github.com> --- .../AppIcon.appiconset/1024.png | Bin 40426 -> 36059 bytes .../AppIcon.appiconset/Contents.json | 360 ++++++++---------- 2 files changed, 157 insertions(+), 203 deletions(-) diff --git a/ios/MetaMask/Images.xcassets/AppIcon.appiconset/1024.png b/ios/MetaMask/Images.xcassets/AppIcon.appiconset/1024.png index 3a2ec6a6f15d518ab4e0759b870b909e74680e70..af5fdbde992ac0ed4de852f2662592a9737540f2 100644 GIT binary patch literal 36059 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 literal 40426 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 diff --git a/ios/MetaMask/Images.xcassets/AppIcon.appiconset/Contents.json b/ios/MetaMask/Images.xcassets/AppIcon.appiconset/Contents.json index feb226717d92..4fdf88263a71 100644 --- a/ios/MetaMask/Images.xcassets/AppIcon.appiconset/Contents.json +++ b/ios/MetaMask/Images.xcassets/AppIcon.appiconset/Contents.json @@ -1,204 +1,158 @@ { - "images": [ - { - "size": "60x60", - "expected-size": "180", - "filename": "180.png", - "folder": "Assets.xcassets/AppIcon.appiconset/", - "idiom": "iphone", - "scale": "3x" - }, - { - "size": "40x40", - "expected-size": "80", - "filename": "80.png", - "folder": "Assets.xcassets/AppIcon.appiconset/", - "idiom": "iphone", - "scale": "2x" - }, - { - "size": "40x40", - "expected-size": "120", - "filename": "120.png", - "folder": "Assets.xcassets/AppIcon.appiconset/", - "idiom": "iphone", - "scale": "3x" - }, - { - "size": "60x60", - "expected-size": "120", - "filename": "120.png", - "folder": "Assets.xcassets/AppIcon.appiconset/", - "idiom": "iphone", - "scale": "2x" - }, - { - "size": "57x57", - "expected-size": "57", - "filename": "57.png", - "folder": "Assets.xcassets/AppIcon.appiconset/", - "idiom": "iphone", - "scale": "1x" - }, - { - "size": "29x29", - "expected-size": "58", - "filename": "58.png", - "folder": "Assets.xcassets/AppIcon.appiconset/", - "idiom": "iphone", - "scale": "2x" - }, - { - "size": "29x29", - "expected-size": "29", - "filename": "29.png", - "folder": "Assets.xcassets/AppIcon.appiconset/", - "idiom": "iphone", - "scale": "1x" - }, - { - "size": "29x29", - "expected-size": "87", - "filename": "87.png", - "folder": "Assets.xcassets/AppIcon.appiconset/", - "idiom": "iphone", - "scale": "3x" - }, - { - "size": "57x57", - "expected-size": "114", - "filename": "114.png", - "folder": "Assets.xcassets/AppIcon.appiconset/", - "idiom": "iphone", - "scale": "2x" - }, - { - "size": "20x20", - "expected-size": "40", - "filename": "40.png", - "folder": "Assets.xcassets/AppIcon.appiconset/", - "idiom": "iphone", - "scale": "2x" - }, - { - "size": "20x20", - "expected-size": "60", - "filename": "60.png", - "folder": "Assets.xcassets/AppIcon.appiconset/", - "idiom": "iphone", - "scale": "3x" - }, - { - "size": "1024x1024", - "filename": "1024.png", - "expected-size": "1024", - "idiom": "ios-marketing", - "folder": "Assets.xcassets/AppIcon.appiconset/", - "scale": "1x" - }, - { - "size": "40x40", - "expected-size": "80", - "filename": "80.png", - "folder": "Assets.xcassets/AppIcon.appiconset/", - "idiom": "ipad", - "scale": "2x" - }, - { - "size": "72x72", - "expected-size": "72", - "filename": "72.png", - "folder": "Assets.xcassets/AppIcon.appiconset/", - "idiom": "ipad", - "scale": "1x" - }, - { - "size": "76x76", - "expected-size": "152", - "filename": "152.png", - "folder": "Assets.xcassets/AppIcon.appiconset/", - "idiom": "ipad", - "scale": "2x" - }, - { - "size": "50x50", - "expected-size": "100", - "filename": "100.png", - "folder": "Assets.xcassets/AppIcon.appiconset/", - "idiom": "ipad", - "scale": "2x" - }, - { - "size": "29x29", - "expected-size": "58", - "filename": "58.png", - "folder": "Assets.xcassets/AppIcon.appiconset/", - "idiom": "ipad", - "scale": "2x" - }, - { - "size": "76x76", - "expected-size": "76", - "filename": "76.png", - "folder": "Assets.xcassets/AppIcon.appiconset/", - "idiom": "ipad", - "scale": "1x" - }, - { - "size": "29x29", - "expected-size": "29", - "filename": "29.png", - "folder": "Assets.xcassets/AppIcon.appiconset/", - "idiom": "ipad", - "scale": "1x" - }, - { - "size": "50x50", - "expected-size": "50", - "filename": "50.png", - "folder": "Assets.xcassets/AppIcon.appiconset/", - "idiom": "ipad", - "scale": "1x" - }, - { - "size": "72x72", - "expected-size": "144", - "filename": "144.png", - "folder": "Assets.xcassets/AppIcon.appiconset/", - "idiom": "ipad", - "scale": "2x" - }, - { - "size": "40x40", - "expected-size": "40", - "filename": "40.png", - "folder": "Assets.xcassets/AppIcon.appiconset/", - "idiom": "ipad", - "scale": "1x" - }, - { - "size": "83.5x83.5", - "expected-size": "167", - "filename": "167.png", - "folder": "Assets.xcassets/AppIcon.appiconset/", - "idiom": "ipad", - "scale": "2x" - }, - { - "size": "20x20", - "expected-size": "20", - "filename": "20.png", - "folder": "Assets.xcassets/AppIcon.appiconset/", - "idiom": "ipad", - "scale": "1x" - }, - { - "size": "20x20", - "expected-size": "40", - "filename": "40.png", - "folder": "Assets.xcassets/AppIcon.appiconset/", - "idiom": "ipad", - "scale": "2x" - } - ] - } \ No newline at end of file + "images" : [ + { + "filename" : "40.png", + "idiom" : "iphone", + "scale" : "2x", + "size" : "20x20" + }, + { + "filename" : "60.png", + "idiom" : "iphone", + "scale" : "3x", + "size" : "20x20" + }, + { + "filename" : "29.png", + "idiom" : "iphone", + "scale" : "1x", + "size" : "29x29" + }, + { + "filename" : "58.png", + "idiom" : "iphone", + "scale" : "2x", + "size" : "29x29" + }, + { + "filename" : "87.png", + "idiom" : "iphone", + "scale" : "3x", + "size" : "29x29" + }, + { + "filename" : "80.png", + "idiom" : "iphone", + "scale" : "2x", + "size" : "40x40" + }, + { + "filename" : "120.png", + "idiom" : "iphone", + "scale" : "3x", + "size" : "40x40" + }, + { + "filename" : "57.png", + "idiom" : "iphone", + "scale" : "1x", + "size" : "57x57" + }, + { + "filename" : "114.png", + "idiom" : "iphone", + "scale" : "2x", + "size" : "57x57" + }, + { + "filename" : "120.png", + "idiom" : "iphone", + "scale" : "2x", + "size" : "60x60" + }, + { + "filename" : "180.png", + "idiom" : "iphone", + "scale" : "3x", + "size" : "60x60" + }, + { + "filename" : "20.png", + "idiom" : "ipad", + "scale" : "1x", + "size" : "20x20" + }, + { + "filename" : "40.png", + "idiom" : "ipad", + "scale" : "2x", + "size" : "20x20" + }, + { + "filename" : "29.png", + "idiom" : "ipad", + "scale" : "1x", + "size" : "29x29" + }, + { + "filename" : "58.png", + "idiom" : "ipad", + "scale" : "2x", + "size" : "29x29" + }, + { + "filename" : "40.png", + "idiom" : "ipad", + "scale" : "1x", + "size" : "40x40" + }, + { + "filename" : "80.png", + "idiom" : "ipad", + "scale" : "2x", + "size" : "40x40" + }, + { + "filename" : "50.png", + "idiom" : "ipad", + "scale" : "1x", + "size" : "50x50" + }, + { + "filename" : "100.png", + "idiom" : "ipad", + "scale" : "2x", + "size" : "50x50" + }, + { + "filename" : "72.png", + "idiom" : "ipad", + "scale" : "1x", + "size" : "72x72" + }, + { + "filename" : "144.png", + "idiom" : "ipad", + "scale" : "2x", + "size" : "72x72" + }, + { + "filename" : "76.png", + "idiom" : "ipad", + "scale" : "1x", + "size" : "76x76" + }, + { + "filename" : "152.png", + "idiom" : "ipad", + "scale" : "2x", + "size" : "76x76" + }, + { + "filename" : "167.png", + "idiom" : "ipad", + "scale" : "2x", + "size" : "83.5x83.5" + }, + { + "filename" : "1024.png", + "idiom" : "ios-marketing", + "scale" : "1x", + "size" : "1024x1024" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} From 6e260153bbeaa9d1110049f61b8d14034d2422b5 Mon Sep 17 00:00:00 2001 From: sethkfman <10342624+sethkfman@users.noreply.github.com> Date: Thu, 27 Feb 2025 11:03:54 -0700 Subject: [PATCH 038/473] feat: 7.41.0 (#13751) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit # 🚀 v7.41.0 Testing & Release Quality Process Hi Team, As part of our new **MetaMask Release Quality Process**, here’s a quick overview of the key processes, testing strategies, and milestones to ensure a smooth and high-quality deployment. --- ## 📋 Key Processes ### Testing Strategy - **Developer Teams:** Conduct regression and exploratory testing for your functional areas, including automated and manual tests for critical workflows. - **QA Team:** Focus on exploratory testing across the wallet, prioritize high-impact areas, and triage any Sentry errors found during testing. - **Customer Success Team:** Validate new functionalities and provide feedback to support release monitoring. ### GitHub Signoff - Each team must **sign off on the Release Candidate (RC)** via GitHub by the end of the validation timeline (**Tuesday EOD PT**). - Ensure all tests outlined in the Testing Plan are executed, and any identified issues are addressed. ### Issue Resolution - **Resolve all Release Blockers** (Sev0, Sev1, and newly introduced Sev2 issues) by **Tuesday EOD PT**. - For unresolved blockers, PRs may be reverted, or feature flags disabled to maintain release quality and timelines. ### Cherry-Picking Criteria - Only **critical fixes** meeting outlined criteria will be cherry-picked. - Developers must ensure these fixes are thoroughly reviewed, tested, and merged by **Tuesday EOD PT**. --- ## 🗓️ Timeline and Milestones 1. **Today (Friday):** Begin Release Candidate validation. 2. **Tuesday EOD PT:** Finalize RC with all fixes and cherry-picks. 3. **Wednesday:** Buffer day for final checks. 4. **Thursday:** Submit release to app stores and begin rollout to 1% of users. 5. **Monday:** Scale deployment to 10%. 6. **Tuesday:** Full rollout to 100%. --- ## ✅ Signoff Checklist Each team is responsible for signing off via GitHub. Use the checkbox below to track signoff completion: # Team sign-off checklist - [x] Accounts - [x] Assets - [x] Confirmations - [x] Hardware Wallets - [x] Mobile Platform - [x] Portfolio - [x] Ramp - [x] Stake - [x] Swaps and Bridge - [x] Transactions - [x] Wallet Framework - [x] Wallet UX This process is a major step forward in ensuring release stability and quality. Let’s stay aligned and make this release a success! 🚀 Feel free to reach out if you have questions or need clarification. Many thanks in advance # Reference - Testing plan sheet - https://docs.google.com/spreadsheets/d/1tsoodlAlyvEUpkkcNcbZ4PM9HuC9cEM80RZeoVv5OCQ/edit?gid=404070372#gid=404070372 Co-authored-by: metamaskbot <metamaskbot@users.noreply.github.com> --- CHANGELOG.md | 87 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 87 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index ca512519f677..54290f14fbd6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -60,6 +60,93 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - fix: fix sort feature ([#13277](https://github.com/MetaMask/metamask-mobile/pull/13277)) - fix: metrics call during onboarding ([#13226](https://github.com/MetaMask/metamask-mobile/pull/13226)) + +## [7.40.0] + +### Added + +- [#12983](https://github.com/MetaMask/metamask-mobile/pull/12983): feat: `NftGrid` view (#12983) +- [#13198](https://github.com/MetaMask/metamask-mobile/pull/13198): feat(network): validate RPC URL for popular networks on add network from dapp connection (#13198) +- [#13099](https://github.com/MetaMask/metamask-mobile/pull/13099): feat: add the ability for all networks to be pre-selected in the checkbox list on initial connect to a dapp. (#13099) +- [#13247](https://github.com/MetaMask/metamask-mobile/pull/13247): feat: Adding text with tooltip component (#13247) +- [#13195](https://github.com/MetaMask/metamask-mobile/pull/13195): feat: Adding date field type in typed sign data tree (#13195) +- [#13135](https://github.com/MetaMask/metamask-mobile/pull/13135): feat: hide primary type displayed in collapsed message section if simulation is enabled (#13135) +- [#13041](https://github.com/MetaMask/metamask-mobile/pull/13041): feat: Decoding Simulation Metrics (#13041) +- [#12627](https://github.com/MetaMask/metamask-mobile/pull/12627): feat: Enable feature Flag Values with Scope Based on ""threshold"" (#12627) +- [#13018](https://github.com/MetaMask/metamask-mobile/pull/13018): feat: add earn button to wallet actions (#13018) +- [#13154](https://github.com/MetaMask/metamask-mobile/pull/13154): feat: STAKE-929 build token list item component (#13154) +- [#13108](https://github.com/MetaMask/metamask-mobile/pull/13108): feat: STAKE-927 build upsell banner component (#13108) +- [#13160](https://github.com/MetaMask/metamask-mobile/pull/13160): feat: Add Solana account (Flask only) (#13160) +- [#13231](https://github.com/MetaMask/metamask-mobile/pull/13231): fix: swaps button missing when no feature flags (#13231) +- [#13088](https://github.com/MetaMask/metamask-mobile/pull/13088): feat: Ledger team request us to upgrade the @ledgerhq/hw-app-eth to 6.42.0 to fix ledger bug for EIP-712 content (#13088) +- [#12938](https://github.com/MetaMask/metamask-mobile/pull/12938): feat: MMPD-1528 - View recents and favorites in browser URL modal (#12938) + +### Changed + +- [#13272](https://github.com/MetaMask/metamask-mobile/pull/13272): test: Added back ramps smoke tests to Bitrise (#13272) +- [#13058](https://github.com/MetaMask/metamask-mobile/pull/13058): chore: Remove device constraint from isPortfolioViewEnabled feature flag (#13058) +- [#13039](https://github.com/MetaMask/metamask-mobile/pull/13039): chore: Scope PortfolioView feature flag to iOS devices only (#13039) +- [#13217](https://github.com/MetaMask/metamask-mobile/pull/13217): test: Delete suggested-gas-api.mock.spec.js due to duplication (#13217) +- [#13214](https://github.com/MetaMask/metamask-mobile/pull/13214): test: Disable flakey e2e wallet edit-recipient-address.spec (#13214) +- [#13181](https://github.com/MetaMask/metamask-mobile/pull/13181): test: fix flakiness while browser loads test dapp (#13181) +- [#13183](https://github.com/MetaMask/metamask-mobile/pull/13183): test: remove AfterAll hook in e2e (#13183) +- [#13129](https://github.com/MetaMask/metamask-mobile/pull/13129): test: Reverse TCP port for edit address test (#13129) +- [#12955](https://github.com/MetaMask/metamask-mobile/pull/12955): refactor: remove global network usage from transaction confirmations (#12955) +- [#13075](https://github.com/MetaMask/metamask-mobile/pull/13075): chore: Add e2e tests for blockaid validations on re-designed signature request pages (#13075) +- [#13053](https://github.com/MetaMask/metamask-mobile/pull/13053): chore: Adding e2e test cases for signature pages (#13053) +- [#13243](https://github.com/MetaMask/metamask-mobile/pull/13243): chore: stable sync with main v7.38.1 (#13243) +- [#13059](https://github.com/MetaMask/metamask-mobile/pull/13059): test: deprecate gestures in helpers.js file (#13059) +- [#12740](https://github.com/MetaMask/metamask-mobile/pull/12740): chore: Convert browser tab to typescript (#12740) +- [#13084](https://github.com/MetaMask/metamask-mobile/pull/13084): chore: Token list performance measurement (#13084) +- [#12912](https://github.com/MetaMask/metamask-mobile/pull/12912): test: Add regression test for wallet address edit issue on confirmation screen (#12912) +- [#13043](https://github.com/MetaMask/metamask-mobile/pull/13043): chore: chore/7.39.0-Changelog (#13043) +- [#13244](https://github.com/MetaMask/metamask-mobile/pull/13244): chore: re-add staking actions when not on supported chain and switch to mainnet (#13244) +- [#13110](https://github.com/MetaMask/metamask-mobile/pull/13110): chore: upgrade `@metamask/transaction-controller` (#13110) +- [#13185](https://github.com/MetaMask/metamask-mobile/pull/13185): test: fix edit account regression test (#13185) +- [#13082](https://github.com/MetaMask/metamask-mobile/pull/13082): chore: add fiat value to token and sort desc by fiat (#13082) +- [#13221](https://github.com/MetaMask/metamask-mobile/pull/13221): refactor(navigation): unify dapp redirect logic to prevent premature navigation (#13221) +- [#13157](https://github.com/MetaMask/metamask-mobile/pull/13157): chore: upgrading to design tokens v5.0.0 (#13157) + +### Fixed + +- [#13126](https://github.com/MetaMask/metamask-mobile/pull/13126): fix: Fix assert e2e test for `Address advanced gas fees` test (#13126) +- [#12926](https://github.com/MetaMask/metamask-mobile/pull/12926): fix: ensure marketing consent is explicitly tracked as boolean (#12926) +- [#13166](https://github.com/MetaMask/metamask-mobile/pull/13166): fix: Blockaid banner momentarily visible on benign request opened after malicious one (#13166) +- [#13208](https://github.com/MetaMask/metamask-mobile/pull/13208): fix: update token balances on pull tokenlist pull down (#13208) +- [#13218](https://github.com/MetaMask/metamask-mobile/pull/13218): fix: fix send flow on token detail page (#13218) +- [#13200](https://github.com/MetaMask/metamask-mobile/pull/13200): fix: fix edit network and delete network with tokenNetworkFilter (#13… (#13200) +- [#13228](https://github.com/MetaMask/metamask-mobile/pull/13228): fix: fix balance after swap (#13228) +- [#13199](https://github.com/MetaMask/metamask-mobile/pull/13199): fix: failure to convert undefined value to hex object (#13199) +- [#13141](https://github.com/MetaMask/metamask-mobile/pull/13141): fix: fix edit network and delete network with tokenNetworkFilter (#13141) +- [#13177](https://github.com/MetaMask/metamask-mobile/pull/13177): fix: token details network name (#13162) (#13177) +- [#12843](https://github.com/MetaMask/metamask-mobile/pull/12843): fix: improve assets perfs + fix blurred balances and prices (#12843) +- [#13162](https://github.com/MetaMask/metamask-mobile/pull/13162): fix: token details network name (#13162) +- [#13146](https://github.com/MetaMask/metamask-mobile/pull/13146): fix: toast msg on deleted network (#13146) +- [#13057](https://github.com/MetaMask/metamask-mobile/pull/13057): fix: fix holesky network balance included in aggregated balance on ma… (#13057) +- [#12907](https://github.com/MetaMask/metamask-mobile/pull/12907): fix: bugs in add network modal (#12907) +- [#13123](https://github.com/MetaMask/metamask-mobile/pull/13123): fix: fix token list on network rpc selection (#13097) (#13123) +- [#13097](https://github.com/MetaMask/metamask-mobile/pull/13097): fix: fix token list on network rpc selection (#13097) +- [#13007](https://github.com/MetaMask/metamask-mobile/pull/13007): fix: tokens list to display with hideTokensWithoutBalance setting (#13007) +- [#13219](https://github.com/MetaMask/metamask-mobile/pull/13219): fix: Prevent extra dismissModal call after network selection (#13219) +- [#13163](https://github.com/MetaMask/metamask-mobile/pull/13163): fix: removes runAfterInteractions call from OptinMetrics (#13163) +- [#13262](https://github.com/MetaMask/metamask-mobile/pull/13262): fix: Fix the case of undefined `networkClientId` & `chainId` (#13262) +- [#13090](https://github.com/MetaMask/metamask-mobile/pull/13090): fix: Add fallback for undefined case when destructuring `isUpdatedAfterSecurityCheck` (#13090) +- [#13138](https://github.com/MetaMask/metamask-mobile/pull/13138): fix: mobile crash issue during swap with low gas (#13138) +- [#13142](https://github.com/MetaMask/metamask-mobile/pull/13142): fix: setApprovalForAll nonce too low (#13142) +- [#13145](https://github.com/MetaMask/metamask-mobile/pull/13145): fix: User should be re-directed to old designs when signing using QR wallet (#13145) +- [#13139](https://github.com/MetaMask/metamask-mobile/pull/13139): fix: Hide simulation section in typed sign v1 pages (#13139) +- [#13087](https://github.com/MetaMask/metamask-mobile/pull/13087): fix: Flickering permit and decoding simulation values (#13087) +- [#13092](https://github.com/MetaMask/metamask-mobile/pull/13092): fix: blockaid validations are not being flagged in re-designed signature request pages (#13092) +- [#13072](https://github.com/MetaMask/metamask-mobile/pull/13072): fix: Fix `disabled` send button on sending `erc721` and `erc20` (#13072) +- [#13232](https://github.com/MetaMask/metamask-mobile/pull/13232): fix(action): the next semver version can not be a patch version (#13232) +- [#12909](https://github.com/MetaMask/metamask-mobile/pull/12909): fix: Change login in field.setValue to use optional operator (#12909) +- [#13118](https://github.com/MetaMask/metamask-mobile/pull/13118): fix: app opened event (#13118) +- [#12971](https://github.com/MetaMask/metamask-mobile/pull/12971): fix: use asset ticker else asset.symbol for Price component header text (#12971) +- [#13158](https://github.com/MetaMask/metamask-mobile/pull/13158): fix: move migration validation out of onPersistComplete (#13158) +- [#13066](https://github.com/MetaMask/metamask-mobile/pull/13066): fix: apply migration 66 (#13066) +- [#13077](https://github.com/MetaMask/metamask-mobile/pull/13077): fix: only send length of available_quotes (#13077) +- [#13119](https://github.com/MetaMask/metamask-mobile/pull/13119): fix: Fix Samsung freeze by reverting reanimated version and bump expo-dev-client (#13119) + ## [7.39.0] ### Added From aa777ecad2a3ec5a333e3ecb50e8efbbe09ab7c4 Mon Sep 17 00:00:00 2001 From: metamaskbot <metamaskbot@users.noreply.github.com> Date: Thu, 13 Mar 2025 18:08:59 -0600 Subject: [PATCH 039/473] version bump 7.43.0 --- CHANGELOG.md | 2 ++ android/app/build.gradle | 2 +- bitrise.yml | 4 ++-- ios/MetaMask.xcodeproj/project.pbxproj | 12 ++++++------ package.json | 2 +- 5 files changed, 12 insertions(+), 10 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6a4ddb7617fb..963179a801ea 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +## [7.43.0] + ## [7.41.0] ### Added diff --git a/android/app/build.gradle b/android/app/build.gradle index 78ab337df87e..a2b75b6205cc 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -178,7 +178,7 @@ android { applicationId "io.metamask" minSdkVersion rootProject.ext.minSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion - versionName "7.41.0" + versionName "7.43.0" versionCode 1586 testBuildType System.getProperty('testBuildType', 'debug') missingDimensionStrategy 'react-native-camera', 'general' diff --git a/bitrise.yml b/bitrise.yml index f08fab1bbad6..f3af25e1a2ff 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -1825,13 +1825,13 @@ app: PROJECT_LOCATION_IOS: ios - opts: is_expand: false - VERSION_NAME: 7.41.0 + VERSION_NAME: 7.43.0 - opts: is_expand: false VERSION_NUMBER: 1586 - opts: is_expand: false - FLASK_VERSION_NAME: 7.41.0 + FLASK_VERSION_NAME: 7.43.0 - opts: is_expand: false FLASK_VERSION_NUMBER: 1586 diff --git a/ios/MetaMask.xcodeproj/project.pbxproj b/ios/MetaMask.xcodeproj/project.pbxproj index 50f71048c92f..5fff2df4b8e5 100644 --- a/ios/MetaMask.xcodeproj/project.pbxproj +++ b/ios/MetaMask.xcodeproj/project.pbxproj @@ -1418,7 +1418,7 @@ "${inherited}", ); LLVM_LTO = YES; - MARKETING_VERSION = 7.41.0; + MARKETING_VERSION = 7.43.0; ONLY_ACTIVE_ARCH = YES; OTHER_CFLAGS = "$(inherited)"; OTHER_LDFLAGS = ( @@ -1484,7 +1484,7 @@ "${inherited}", ); LLVM_LTO = YES; - MARKETING_VERSION = 7.41.0; + MARKETING_VERSION = 7.43.0; ONLY_ACTIVE_ARCH = NO; OTHER_CFLAGS = "$(inherited)"; OTHER_LDFLAGS = ( @@ -1551,7 +1551,7 @@ "\"$(SRCROOT)/MetaMask/System/Library/Frameworks\"", ); LLVM_LTO = YES; - MARKETING_VERSION = 7.41.0; + MARKETING_VERSION = 7.43.0; ONLY_ACTIVE_ARCH = YES; OTHER_CFLAGS = "$(inherited)"; OTHER_LDFLAGS = ( @@ -1615,7 +1615,7 @@ "\"$(SRCROOT)/MetaMask/System/Library/Frameworks\"", ); LLVM_LTO = YES; - MARKETING_VERSION = 7.41.0; + MARKETING_VERSION = 7.43.0; ONLY_ACTIVE_ARCH = NO; OTHER_CFLAGS = "$(inherited)"; OTHER_LDFLAGS = ( @@ -1776,7 +1776,7 @@ "\"$(SRCROOT)/MetaMask/System/Library/Frameworks\"", ); LLVM_LTO = YES; - MARKETING_VERSION = 7.41.0; + MARKETING_VERSION = 7.43.0; ONLY_ACTIVE_ARCH = YES; OTHER_CFLAGS = ( "$(inherited)", @@ -1843,7 +1843,7 @@ "\"$(SRCROOT)/MetaMask/System/Library/Frameworks\"", ); LLVM_LTO = YES; - MARKETING_VERSION = 7.41.0; + MARKETING_VERSION = 7.43.0; ONLY_ACTIVE_ARCH = NO; OTHER_CFLAGS = ( "$(inherited)", diff --git a/package.json b/package.json index 07f8b592fa3d..c10ae462f632 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "metamask", - "version": "7.41.0", + "version": "7.43.0", "private": true, "scripts": { "audit:ci": "./scripts/yarn-audit.sh", From 806d4710feddcdd0653a97c70f3e573e0334da6e Mon Sep 17 00:00:00 2001 From: metamaskbot <metamaskbot@users.noreply.github.com> Date: Fri, 14 Mar 2025 00:10:09 +0000 Subject: [PATCH 040/473] Bump version number to 1617 --- android/app/build.gradle | 2 +- bitrise.yml | 4 ++-- ios/MetaMask.xcodeproj/project.pbxproj | 12 ++++++------ 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/android/app/build.gradle b/android/app/build.gradle index a2b75b6205cc..ef1a5f4b5326 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -179,7 +179,7 @@ android { minSdkVersion rootProject.ext.minSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion versionName "7.43.0" - versionCode 1586 + versionCode 1617 testBuildType System.getProperty('testBuildType', 'debug') missingDimensionStrategy 'react-native-camera', 'general' testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" diff --git a/bitrise.yml b/bitrise.yml index f3af25e1a2ff..de4dec368ed6 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -1828,13 +1828,13 @@ app: VERSION_NAME: 7.43.0 - opts: is_expand: false - VERSION_NUMBER: 1586 + VERSION_NUMBER: 1617 - opts: is_expand: false FLASK_VERSION_NAME: 7.43.0 - opts: is_expand: false - FLASK_VERSION_NUMBER: 1586 + FLASK_VERSION_NUMBER: 1617 - opts: is_expand: false ANDROID_APK_LINK: '' diff --git a/ios/MetaMask.xcodeproj/project.pbxproj b/ios/MetaMask.xcodeproj/project.pbxproj index 5fff2df4b8e5..80fb952894d1 100644 --- a/ios/MetaMask.xcodeproj/project.pbxproj +++ b/ios/MetaMask.xcodeproj/project.pbxproj @@ -1380,7 +1380,7 @@ CODE_SIGN_IDENTITY = "Apple Development"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1586; + CURRENT_PROJECT_VERSION = 1617; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = 48XVW22RCG; @@ -1449,7 +1449,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMask.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1586; + CURRENT_PROJECT_VERSION = 1617; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 48XVW22RCG; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 48XVW22RCG; @@ -1514,7 +1514,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMaskDebug.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1586; + CURRENT_PROJECT_VERSION = 1617; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = 48XVW22RCG; @@ -1580,7 +1580,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMask.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1586; + CURRENT_PROJECT_VERSION = 1617; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 48XVW22RCG; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 48XVW22RCG; @@ -1739,7 +1739,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMaskDebug.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1586; + CURRENT_PROJECT_VERSION = 1617; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = 48XVW22RCG; @@ -1808,7 +1808,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMask.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1586; + CURRENT_PROJECT_VERSION = 1617; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 48XVW22RCG; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 48XVW22RCG; From b9908c51513e64902774116c2b834eedbff93a81 Mon Sep 17 00:00:00 2001 From: metamaskbot <metamaskbot@users.noreply.github.com> Date: Fri, 14 Mar 2025 00:15:02 +0000 Subject: [PATCH 041/473] bump semvar version to 7.43.0 && build version to 1618 --- android/app/build.gradle | 2 +- bitrise.yml | 4 ++-- ios/MetaMask.xcodeproj/project.pbxproj | 12 ++++++------ 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/android/app/build.gradle b/android/app/build.gradle index ef1a5f4b5326..370eebfd13b8 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -179,7 +179,7 @@ android { minSdkVersion rootProject.ext.minSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion versionName "7.43.0" - versionCode 1617 + versionCode 1618 testBuildType System.getProperty('testBuildType', 'debug') missingDimensionStrategy 'react-native-camera', 'general' testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" diff --git a/bitrise.yml b/bitrise.yml index de4dec368ed6..fb12a77e1fe4 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -1828,13 +1828,13 @@ app: VERSION_NAME: 7.43.0 - opts: is_expand: false - VERSION_NUMBER: 1617 + VERSION_NUMBER: 1618 - opts: is_expand: false FLASK_VERSION_NAME: 7.43.0 - opts: is_expand: false - FLASK_VERSION_NUMBER: 1617 + FLASK_VERSION_NUMBER: 1618 - opts: is_expand: false ANDROID_APK_LINK: '' diff --git a/ios/MetaMask.xcodeproj/project.pbxproj b/ios/MetaMask.xcodeproj/project.pbxproj index 80fb952894d1..473c0f9e4731 100644 --- a/ios/MetaMask.xcodeproj/project.pbxproj +++ b/ios/MetaMask.xcodeproj/project.pbxproj @@ -1380,7 +1380,7 @@ CODE_SIGN_IDENTITY = "Apple Development"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1617; + CURRENT_PROJECT_VERSION = 1618; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = 48XVW22RCG; @@ -1449,7 +1449,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMask.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1617; + CURRENT_PROJECT_VERSION = 1618; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 48XVW22RCG; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 48XVW22RCG; @@ -1514,7 +1514,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMaskDebug.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1617; + CURRENT_PROJECT_VERSION = 1618; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = 48XVW22RCG; @@ -1580,7 +1580,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMask.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1617; + CURRENT_PROJECT_VERSION = 1618; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 48XVW22RCG; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 48XVW22RCG; @@ -1739,7 +1739,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMaskDebug.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1617; + CURRENT_PROJECT_VERSION = 1618; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = 48XVW22RCG; @@ -1808,7 +1808,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMask.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1617; + CURRENT_PROJECT_VERSION = 1618; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 48XVW22RCG; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 48XVW22RCG; From 8dccc2364e75321e44c0644a974c0e7f5483b7e0 Mon Sep 17 00:00:00 2001 From: metamaskbot <metamaskbot@users.noreply.github.com> Date: Fri, 14 Mar 2025 02:21:39 +0000 Subject: [PATCH 042/473] Bump version number to 1619 --- android/app/build.gradle | 2 +- bitrise.yml | 4 ++-- ios/MetaMask.xcodeproj/project.pbxproj | 12 ++++++------ 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/android/app/build.gradle b/android/app/build.gradle index 370eebfd13b8..139f86312410 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -179,7 +179,7 @@ android { minSdkVersion rootProject.ext.minSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion versionName "7.43.0" - versionCode 1618 + versionCode 1619 testBuildType System.getProperty('testBuildType', 'debug') missingDimensionStrategy 'react-native-camera', 'general' testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" diff --git a/bitrise.yml b/bitrise.yml index fb12a77e1fe4..f0f093cc8376 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -1828,13 +1828,13 @@ app: VERSION_NAME: 7.43.0 - opts: is_expand: false - VERSION_NUMBER: 1618 + VERSION_NUMBER: 1619 - opts: is_expand: false FLASK_VERSION_NAME: 7.43.0 - opts: is_expand: false - FLASK_VERSION_NUMBER: 1618 + FLASK_VERSION_NUMBER: 1619 - opts: is_expand: false ANDROID_APK_LINK: '' diff --git a/ios/MetaMask.xcodeproj/project.pbxproj b/ios/MetaMask.xcodeproj/project.pbxproj index 473c0f9e4731..6221cf995dba 100644 --- a/ios/MetaMask.xcodeproj/project.pbxproj +++ b/ios/MetaMask.xcodeproj/project.pbxproj @@ -1380,7 +1380,7 @@ CODE_SIGN_IDENTITY = "Apple Development"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1618; + CURRENT_PROJECT_VERSION = 1619; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = 48XVW22RCG; @@ -1449,7 +1449,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMask.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1618; + CURRENT_PROJECT_VERSION = 1619; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 48XVW22RCG; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 48XVW22RCG; @@ -1514,7 +1514,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMaskDebug.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1618; + CURRENT_PROJECT_VERSION = 1619; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = 48XVW22RCG; @@ -1580,7 +1580,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMask.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1618; + CURRENT_PROJECT_VERSION = 1619; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 48XVW22RCG; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 48XVW22RCG; @@ -1739,7 +1739,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMaskDebug.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1618; + CURRENT_PROJECT_VERSION = 1619; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = 48XVW22RCG; @@ -1808,7 +1808,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMask.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1618; + CURRENT_PROJECT_VERSION = 1619; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 48XVW22RCG; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 48XVW22RCG; From f407eddd7a1aa72320d2762c46224d349b3aedde Mon Sep 17 00:00:00 2001 From: "runway-github[bot]" <73448015+runway-github[bot]@users.noreply.github.com> Date: Fri, 14 Mar 2025 15:14:08 +0000 Subject: [PATCH 043/473] chore(runway): cherry-pick fix: Revert "chore: upgrade Xcode 16 on bitrise.yml" (#14030) - fix: Revert "chore: upgrade Xcode 16 on bitrise.yml" (#14012) This PR Reverts MetaMask/metamask-mobile#13807 it introduced an issue that caused build failures for iOS. [Here](https://app.bitrise.io/app/be69d4368ee7e86d/pipelines/dbadd000-571b-4f49-b9c8-c4803fe9c0e3) [f9c6270](https://github.com/MetaMask/metamask-mobile/commit/f9c6270f293bb353d8dcc85c9899426ecc36eb88) Co-authored-by: sethkfman <10342624+sethkfman@users.noreply.github.com> --- bitrise.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bitrise.yml b/bitrise.yml index f0f093cc8376..b6eb0247eb81 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -1861,7 +1861,7 @@ app: COREPACK_VERSION: 0.28.0 meta: bitrise.io: - stack: osx-xcode-16.2.x + stack: osx-xcode-15.0.x machine_type_id: g2.mac.large trigger_map: - push_branch: release/* From 69722520167da0bf3d347b500cfa14c68e2746d6 Mon Sep 17 00:00:00 2001 From: metamaskbot <metamaskbot@users.noreply.github.com> Date: Fri, 14 Mar 2025 15:15:46 +0000 Subject: [PATCH 044/473] Bump version number to 1620 --- android/app/build.gradle | 2 +- bitrise.yml | 4 ++-- ios/MetaMask.xcodeproj/project.pbxproj | 12 ++++++------ 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/android/app/build.gradle b/android/app/build.gradle index 139f86312410..5c05047560a8 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -179,7 +179,7 @@ android { minSdkVersion rootProject.ext.minSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion versionName "7.43.0" - versionCode 1619 + versionCode 1620 testBuildType System.getProperty('testBuildType', 'debug') missingDimensionStrategy 'react-native-camera', 'general' testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" diff --git a/bitrise.yml b/bitrise.yml index b6eb0247eb81..40f83fbd4c6c 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -1828,13 +1828,13 @@ app: VERSION_NAME: 7.43.0 - opts: is_expand: false - VERSION_NUMBER: 1619 + VERSION_NUMBER: 1620 - opts: is_expand: false FLASK_VERSION_NAME: 7.43.0 - opts: is_expand: false - FLASK_VERSION_NUMBER: 1619 + FLASK_VERSION_NUMBER: 1620 - opts: is_expand: false ANDROID_APK_LINK: '' diff --git a/ios/MetaMask.xcodeproj/project.pbxproj b/ios/MetaMask.xcodeproj/project.pbxproj index 6221cf995dba..63c0ad02a1b6 100644 --- a/ios/MetaMask.xcodeproj/project.pbxproj +++ b/ios/MetaMask.xcodeproj/project.pbxproj @@ -1380,7 +1380,7 @@ CODE_SIGN_IDENTITY = "Apple Development"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1619; + CURRENT_PROJECT_VERSION = 1620; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = 48XVW22RCG; @@ -1449,7 +1449,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMask.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1619; + CURRENT_PROJECT_VERSION = 1620; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 48XVW22RCG; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 48XVW22RCG; @@ -1514,7 +1514,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMaskDebug.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1619; + CURRENT_PROJECT_VERSION = 1620; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = 48XVW22RCG; @@ -1580,7 +1580,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMask.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1619; + CURRENT_PROJECT_VERSION = 1620; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 48XVW22RCG; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 48XVW22RCG; @@ -1739,7 +1739,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMaskDebug.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1619; + CURRENT_PROJECT_VERSION = 1620; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = 48XVW22RCG; @@ -1808,7 +1808,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMask.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1619; + CURRENT_PROJECT_VERSION = 1620; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 48XVW22RCG; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 48XVW22RCG; From 28292725304687c59dc6283973ce15655ca64e33 Mon Sep 17 00:00:00 2001 From: "runway-github[bot]" <73448015+runway-github[bot]@users.noreply.github.com> Date: Fri, 14 Mar 2025 18:35:17 -0400 Subject: [PATCH 045/473] chore(runway): cherry-pick fix: cp-7.43.0 - Temporarily disable notifications (#14037) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - fix: cp-7.43.0 - Temporarily disable notifications (#14036) ## **Description** Temporarily disabling notifications feature. We can create a separate QA build with the feature on, so that we can isolate QA's effort onto this specific feature set, rather than the other features going into a given RC. ## **Related issues** Fixes: ## **Manual testing steps** 1. Go to this page... 2. 3. ## **Screenshots/Recordings** <!-- If applicable, add screenshots and/or recordings to visualize the before and after of your change. --> ### **Before** <!-- [screenshots/recordings] --> ### **After** <!-- [screenshots/recordings] --> ## **Pre-merge author checklist** - [x] I’ve followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile Coding Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [x] I've completed the PR template to the best of my ability - [x] I’ve included tests if applicable - [x] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [x] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. ## **Pre-merge reviewer checklist** - [ ] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [ ] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots. [23c00a4](https://github.com/MetaMask/metamask-mobile/commit/23c00a45507b75b419d1f22cb527c0b100f41956) Co-authored-by: Nick Gambino <35090461+gambinish@users.noreply.github.com> --- bitrise.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bitrise.yml b/bitrise.yml index 40f83fbd4c6c..508514475653 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -1771,7 +1771,7 @@ app: envs: - opts: is_expand: false - MM_NOTIFICATIONS_UI_ENABLED: true + MM_NOTIFICATIONS_UI_ENABLED: false - opts: is_expand: false MM_NETWORK_UI_REDESIGN_ENABLED: false From 0014394848fe2563f2054b40d9fef890a2adf7c4 Mon Sep 17 00:00:00 2001 From: metamaskbot <metamaskbot@users.noreply.github.com> Date: Fri, 14 Mar 2025 23:33:50 +0000 Subject: [PATCH 046/473] Bump version number to 1624 --- android/app/build.gradle | 2 +- bitrise.yml | 4 ++-- ios/MetaMask.xcodeproj/project.pbxproj | 12 ++++++------ 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/android/app/build.gradle b/android/app/build.gradle index 5c05047560a8..bb13481c7cdd 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -179,7 +179,7 @@ android { minSdkVersion rootProject.ext.minSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion versionName "7.43.0" - versionCode 1620 + versionCode 1624 testBuildType System.getProperty('testBuildType', 'debug') missingDimensionStrategy 'react-native-camera', 'general' testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" diff --git a/bitrise.yml b/bitrise.yml index 508514475653..a447a83c6a44 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -1828,13 +1828,13 @@ app: VERSION_NAME: 7.43.0 - opts: is_expand: false - VERSION_NUMBER: 1620 + VERSION_NUMBER: 1624 - opts: is_expand: false FLASK_VERSION_NAME: 7.43.0 - opts: is_expand: false - FLASK_VERSION_NUMBER: 1620 + FLASK_VERSION_NUMBER: 1624 - opts: is_expand: false ANDROID_APK_LINK: '' diff --git a/ios/MetaMask.xcodeproj/project.pbxproj b/ios/MetaMask.xcodeproj/project.pbxproj index 63c0ad02a1b6..e771ba5145ba 100644 --- a/ios/MetaMask.xcodeproj/project.pbxproj +++ b/ios/MetaMask.xcodeproj/project.pbxproj @@ -1380,7 +1380,7 @@ CODE_SIGN_IDENTITY = "Apple Development"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1620; + CURRENT_PROJECT_VERSION = 1624; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = 48XVW22RCG; @@ -1449,7 +1449,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMask.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1620; + CURRENT_PROJECT_VERSION = 1624; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 48XVW22RCG; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 48XVW22RCG; @@ -1514,7 +1514,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMaskDebug.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1620; + CURRENT_PROJECT_VERSION = 1624; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = 48XVW22RCG; @@ -1580,7 +1580,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMask.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1620; + CURRENT_PROJECT_VERSION = 1624; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 48XVW22RCG; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 48XVW22RCG; @@ -1739,7 +1739,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMaskDebug.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1620; + CURRENT_PROJECT_VERSION = 1624; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = 48XVW22RCG; @@ -1808,7 +1808,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMask.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1620; + CURRENT_PROJECT_VERSION = 1624; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 48XVW22RCG; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 48XVW22RCG; From 74c782882e5ed31775ab34f3debac48cdfe543f5 Mon Sep 17 00:00:00 2001 From: "runway-github[bot]" <73448015+runway-github[bot]@users.noreply.github.com> Date: Mon, 17 Mar 2025 15:28:41 -0400 Subject: [PATCH 047/473] chore(runway): cherry-pick fix: cp-7.43.0 updated root to use themeprovider (#14053) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - fix: cp-7.43.0 updated root to use themeprovider (#14040) <!-- Please submit this PR as a draft initially. Do not mark it as "Ready for review" until the template has been completely filled out, and PR status checks have passed at least once. --> ## **Description** This PR updates the Root file to use `ThemeProvider` <!-- Write a short description of the changes included in this pull request, also include relevant motivation and context. Have in mind the following questions: 1. What is the reason for the change? 2. What is the improvement/solution? --> ## **Related issues** Fixes: https://github.com/MetaMask/metamask-mobile/issues/14039 ## **Manual testing steps** 1. Go to home 2. Toggle theme 3. ## **Screenshots/Recordings** <!-- If applicable, add screenshots and/or recordings to visualize the before and after of your change. --> ### **Before** https://github.com/user-attachments/assets/9a38ceb0-89d7-402c-b8f6-ce9c589ff16d <!-- [screenshots/recordings] --> ### **After** https://github.com/user-attachments/assets/d6bba8ea-9499-48e3-81d3-556a9aedea89 <!-- [screenshots/recordings] --> ## **Pre-merge author checklist** - [x] I’ve followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile Coding Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [x] I've completed the PR template to the best of my ability - [x] I’ve included tests if applicable - [x] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [x] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. ## **Pre-merge reviewer checklist** - [ ] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [ ] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots. [047afd7](https://github.com/MetaMask/metamask-mobile/commit/047afd76bcec02a7e1a2e23571c58be827bf3946) Co-authored-by: Brian August Nguyen <brianacnguyen@gmail.com> --- app/components/Views/Root/index.tsx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/components/Views/Root/index.tsx b/app/components/Views/Root/index.tsx index 1cc1f1078300..1f59d0b0999e 100644 --- a/app/components/Views/Root/index.tsx +++ b/app/components/Views/Root/index.tsx @@ -7,7 +7,7 @@ import SecureKeychain from '../../../core/SecureKeychain'; import EntryScriptWeb3 from '../../../core/EntryScriptWeb3'; import Logger from '../../../util/Logger'; import ErrorBoundary from '../ErrorBoundary'; -import { ThemeContext, mockTheme } from '../../../util/theme'; +import ThemeProvider from '../../../component-library/providers/ThemeProvider/ThemeProvider'; import { ToastContextWrapper } from '../../../component-library/components/Toast'; import { SafeAreaProvider } from 'react-native-safe-area-context'; import { RootProps } from './types'; @@ -68,7 +68,7 @@ const Root = ({ foxCode }: RootProps) => { <SnapsExecutionWebView /> ///: END:ONLY_INCLUDE_IF } - <ThemeContext.Provider value={mockTheme}> + <ThemeProvider> <NavigationProvider> <ControllersGate> <ToastContextWrapper> @@ -78,7 +78,7 @@ const Root = ({ foxCode }: RootProps) => { </ToastContextWrapper> </ControllersGate> </NavigationProvider> - </ThemeContext.Provider> + </ThemeProvider> </PersistGate> </Provider> </SafeAreaProvider> From 921cb67cd67f1f4669ff180ecb0ed71c4df3413b Mon Sep 17 00:00:00 2001 From: MetaMask Bot <37885440+metamaskbot@users.noreply.github.com> Date: Mon, 17 Mar 2025 19:20:24 -0400 Subject: [PATCH 048/473] feat: 7.42.0 (#13760) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit # 🚀 v7.42.0 Testing & Release Quality Process Hi Team, As part of our new **MetaMask Release Quality Process**, here’s a quick overview of the key processes, testing strategies, and milestones to ensure a smooth and high-quality deployment. --- ## 📋 Key Processes ### Testing Strategy - **Developer Teams:** Conduct regression and exploratory testing for your functional areas, including automated and manual tests for critical workflows. - **QA Team:** Focus on exploratory testing across the wallet, prioritize high-impact areas, and triage any Sentry errors found during testing. - **Customer Success Team:** Validate new functionalities and provide feedback to support release monitoring. ### GitHub Signoff - Each team must **sign off on the Release Candidate (RC)** via GitHub by the end of the validation timeline (**Tuesday EOD PT**). - Ensure all tests outlined in the Testing Plan are executed, and any identified issues are addressed. ### Issue Resolution - **Resolve all Release Blockers** (Sev0 and Sev1) by **Tuesday EOD PT**. - For unresolved blockers, PRs may be reverted, or feature flags disabled to maintain release quality and timelines. ### Cherry-Picking Criteria - Only **critical fixes** meeting outlined criteria will be cherry-picked. - Developers must ensure these fixes are thoroughly reviewed, tested, and merged by **Tuesday EOD PT**. --- ## 🗓️ Timeline and Milestones 1. **Today (Friday):** Begin Release Candidate validation. 2. **Tuesday EOD PT:** Finalize RC with all fixes and cherry-picks. 3. **Wednesday:** Buffer day for final checks. 4. **Thursday:** Submit release to app stores and begin rollout to 1% of users. 5. **Monday:** Scale deployment to 10%. 6. **Tuesday:** Full rollout to 100%. --- ## ✅ Signoff Checklist Each team is responsible for signing off via GitHub. Use the checkbox below to track signoff completion: # Team sign-off checklist - [x] Accounts - [x] Assets - [x] Confirmations - [x] Design System - [x] Dev Ops - [x] Mobile Platform - [x] Portfolio - [ ] QA - [x] Ramp - [x] Snaps Platform - [x] Stake - [x] Swaps and Bridge - [x] Transactions - [x] Wallet UX This process is a major step forward in ensuring release stability and quality. Let’s stay aligned and make this release a success! 🚀 Feel free to reach out if you have questions or need clarification. Many thanks in advance # Reference - Testing plan sheet - https://docs.google.com/spreadsheets/d/1tsoodlAlyvEUpkkcNcbZ4PM9HuC9cEM80RZeoVv5OCQ/edit?gid=404070372#gid=404070372 --------- Co-authored-by: Owen Craston <owen.craston@consensys.net> Co-authored-by: Brian August Nguyen <brianacnguyen@gmail.com> Co-authored-by: Nico MASSART <NicolasMassart@users.noreply.github.com> Co-authored-by: Davide Brocchetto <davide.brocchetto@consensys.net> Co-authored-by: Vince Howard <vincenguyenhoward@gmail.com> Co-authored-by: Eric Bishard <eric@httpjunkie.com> Co-authored-by: metamaskbot <metamaskbot@users.noreply.github.com> Co-authored-by: Curtis David <Curtis.David7@gmail.com> Co-authored-by: Jyoti Puri <jyotipuri@gmail.com> Co-authored-by: Salim TOUBAL <salim.toubal@outlook.com> Co-authored-by: Prithpal Sooriya <prithpal.sooriya@consensys.net> Co-authored-by: sahar-fehri <sahar.fehri@consensys.net> Co-authored-by: CW <chris.wilcox@consensys.net> Co-authored-by: Pedro Figueiredo <ganseki.figueiredo@gmail.com> Co-authored-by: digiwand <20778143+digiwand@users.noreply.github.com> Co-authored-by: tommasini <46944231+tommasini@users.noreply.github.com> Co-authored-by: Matthew Grainger <46547583+Matt561@users.noreply.github.com> Co-authored-by: Gustavo Antunes <17601467+gantunesr@users.noreply.github.com> Co-authored-by: Vinicius Stevam <45455812+vinistevam@users.noreply.github.com> Co-authored-by: EtherWizard33 <165834542+EtherWizard33@users.noreply.github.com> Co-authored-by: Bryan Fullam <bryan.fullam@consensys.net> Co-authored-by: Devin Stewart <49423028+Bigshmow@users.noreply.github.com> Co-authored-by: Ziad Saab <ziad.saab@gmail.com> Co-authored-by: sethkfman <10342624+sethkfman@users.noreply.github.com> Co-authored-by: Nicholas Smith <nick.smith@consensys.net> Co-authored-by: OGPoyraz <omergoktugpoyraz@gmail.com> Co-authored-by: George Weiler <georgejweiler@gmail.com> Co-authored-by: Cal Leung <cal.leung@consensys.net> Co-authored-by: Amitabh Aggarwal <aggarwal.amitabh@gmail.com> Co-authored-by: Nick Gambino <35090461+gambinish@users.noreply.github.com> Co-authored-by: Gauthier Petetin <gauthierpetetin@hotmail.com> Co-authored-by: Frederik Bolding <frederik.bolding@gmail.com> Co-authored-by: infiniteflower <139582705+infiniteflower@users.noreply.github.com> Co-authored-by: Iván <ivan.canete@consensys.net> Co-authored-by: Daniel Cross <dan.s.cross@icloud.com> Co-authored-by: Owen Craston <owengc12@gmail.com> Co-authored-by: Daniel <80175477+dan437@users.noreply.github.com> Co-authored-by: Kylan Hurt <6249205+smilingkylan@users.noreply.github.com> Co-authored-by: jake-perkins <128608287+jake-perkins@users.noreply.github.com> Co-authored-by: Xiaoming Wang <7315988+dawnseeker8@users.noreply.github.com> Co-authored-by: David Drazic <david@timechaser.org> Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: runway-github[bot] <73448015+runway-github[bot]@users.noreply.github.com> --- .github/CODEOWNERS | 24 +- .github/scripts/create-bug-report-issue.ts | 2 +- .github/workflows/create-bug-report.yml | 12 +- .github/workflows/create-release-pr-v2.yml | 4 +- .../publish-slack-release-testing-status.yml | 20 + .iyarc | 5 + .js.env.example | 3 +- CHANGELOG.md | 99 +- android/app/build.gradle | 6 +- android/app/src/main/AndroidManifest.xml | 7 +- .../app/src/main/res/values-night/colors.xml | 3 +- android/app/src/main/res/values/colors.xml | 3 +- .../app/src/qa/res/values-night/colors.xml | 3 +- android/app/src/qa/res/values/colors.xml | 3 +- .../notification/helpers/index.test.tsx | 139 +- app/actions/notification/helpers/index.ts | 273 +- .../ConfirmInfoRowValueDouble.tsx | 40 + .../BottomSheets/BottomSheet/BottomSheet.tsx | 2 + .../BottomSheetDialog.styles.ts | 30 +- .../BottomSheetDialog/BottomSheetDialog.tsx | 2 + .../BottomSheetDialog.types.ts | 3 +- .../BottomSheetHeader.test.tsx.snap | 13 +- .../components/HeaderBase/HeaderBase.test.tsx | 34 + .../components/HeaderBase/HeaderBase.tsx | 9 +- .../components/HeaderBase/HeaderBase.types.ts | 6 + .../__snapshots__/HeaderBase.test.tsx.snap | 11 +- .../components/Navigation/TabBar/TabBar.tsx | 2 +- .../SnapAccountCustomNameApproval.tsx | 18 +- .../__snapshots__/index.test.tsx.snap | 123 + app/components/Base/RemoteImage/index.js | 3 + .../Base/RemoteImage/index.test.tsx | 43 +- app/components/Nav/App/index.js | 27 + app/components/Nav/Main/MainNavigator.js | 12 + app/components/Nav/Main/RootRPCMethodsUI.js | 15 +- app/components/Nav/Main/index.js | 115 +- .../SnapDialogApproval.styles.ts | 34 + .../SnapDialogApproval.test.tsx | 120 + .../SnapsDialogApproval.tsx | 142 + .../Snaps/SnapDialogApproval/index.ts | 3 + app/components/Snaps/SnapIcon/SnapIcon.tsx | 67 + .../Snaps/SnapInterfaceContext.test.tsx | 214 + app/components/Snaps/SnapInterfaceContext.tsx | 197 + .../Snaps/SnapUIBanner/SnapUIBanner.tsx | 20 + .../Snaps/SnapUIButton/SnapUIButton.tsx | 83 + .../Snaps/SnapUICard/SnapUICard.tsx | 66 + .../Snaps/SnapUICheckbox/SnapUICheckbox.tsx | 69 + .../SnapUIFooterButton.test.tsx | 70 + .../SnapUIFooterButton/SnapUIFooterButton.tsx | 125 + .../Snaps/SnapUIIcon/SnapUIIcon.tsx | 19 + .../SnapUIRenderer/SnapUIRenderer.styles.ts | 10 + .../SnapUIRenderer/SnapUIRenderer.test.tsx | 514 + .../Snaps/SnapUIRenderer/SnapUIRenderer.tsx | 95 + .../SnapUIRenderer.test.tsx.snap | 2129 +++++ .../SnapUIRenderer/components/address.ts | 15 + .../Snaps/SnapUIRenderer/components/avatar.ts | 10 + .../SnapUIRenderer/components/banner.test.ts | 107 + .../Snaps/SnapUIRenderer/components/banner.ts | 26 + .../Snaps/SnapUIRenderer/components/bold.ts | 23 + .../SnapUIRenderer/components/box.test.ts | 141 + .../Snaps/SnapUIRenderer/components/box.ts | 74 + .../Snaps/SnapUIRenderer/components/button.ts | 41 + .../Snaps/SnapUIRenderer/components/card.ts | 14 + .../SnapUIRenderer/components/checkbox.ts | 17 + .../components/container.test.ts | 131 + .../SnapUIRenderer/components/container.ts | 74 + .../Snaps/SnapUIRenderer/components/field.ts | 103 + .../SnapUIRenderer/components/footer.test.ts | 149 + .../Snaps/SnapUIRenderer/components/footer.ts | 93 + .../Snaps/SnapUIRenderer/components/form.ts | 25 + .../SnapUIRenderer/components/heading.test.ts | 122 + .../SnapUIRenderer/components/heading.ts | 28 + .../SnapUIRenderer/components/icon.test.ts | 99 + .../Snaps/SnapUIRenderer/components/icon.ts | 56 + .../Snaps/SnapUIRenderer/components/image.ts | 25 + .../Snaps/SnapUIRenderer/components/index.ts | 43 + .../Snaps/SnapUIRenderer/components/input.ts | 18 + .../Snaps/SnapUIRenderer/components/link.ts | 19 + .../Snaps/SnapUIRenderer/components/row.ts | 28 + .../SnapUIRenderer/components/section.ts | 29 + .../SnapUIRenderer/components/text.test.ts | 139 + .../Snaps/SnapUIRenderer/components/text.ts | 70 + .../Snaps/SnapUIRenderer/components/types.ts | 23 + .../Snaps/SnapUIRenderer/components/value.ts | 10 + .../Snaps/SnapUIRenderer/utils.test.ts | 50 + app/components/Snaps/SnapUIRenderer/utils.ts | 194 + app/components/UI/AccountApproval/index.js | 4 +- .../AccountFromToInfoCard.tsx | 4 +- .../UI/AccountFromToInfoCard/AddressFrom.tsx | 8 +- .../UI/AccountRightButton/index.tsx | 13 +- .../AccountSelectorList.tsx | 2 +- .../AccountSelectorList.types.ts | 2 +- .../AddToAddressBookWrapper.tsx | 4 +- .../UI/AssetOverview/AssetOverview.test.tsx | 121 + .../UI/AssetOverview/AssetOverview.tsx | 50 +- app/components/UI/Box/Box.test.tsx | 135 + app/components/UI/Box/Box.tsx | 72 + app/components/UI/Box/box.types.ts | 665 ++ app/components/UI/Bridge/index.js | 36 + app/components/UI/Bridge/index.test.tsx | 47 + .../UI/Bridge/utils/isBridgeAllowed.ts | 11 +- .../UI/Bridge/utils/useGoToBridge.ts | 4 +- .../__snapshots__/index.test.tsx.snap | 2 +- app/components/UI/DrawerView/index.js | 28 +- app/components/UI/DrawerView/index.test.tsx | 98 +- app/components/UI/DrawerView/util.test.ts | 53 + app/components/UI/DrawerView/utils.ts | 13 + .../UI/ManageNetworks/ManageNetworks.tsx | 11 +- app/components/UI/Name/Name.tsx | 39 +- app/components/UI/Navbar/index.js | 126 +- app/components/UI/Navbar/index.test.jsx | 48 + app/components/UI/NavbarTitle/index.js | 30 +- app/components/UI/NetworkCell/NetworkCell.tsx | 6 +- .../__snapshots__/index.test.tsx.snap | 13 +- app/components/UI/NetworkModal/index.test.tsx | 179 + app/components/UI/NetworkModal/index.tsx | 18 +- .../NetworkSelectorList.test.tsx | 113 + .../NetworkSelectorList.test.tsx.snap | 382 + .../NetworkVerificationInfo.test.tsx.snap | 13 +- .../__snapshots__/index.test.tsx.snap | 121 +- app/components/UI/NonEvmTokens/index.test.tsx | 44 +- app/components/UI/NonEvmTokens/index.tsx | 37 +- .../UI/Notification/List/index.test.tsx | 2 +- .../ResetNotificationsModal/index.tsx | 7 +- .../UI/PaymentRequest/index.test.tsx | 7 + .../PermissionsSummary/PermissionsSummary.tsx | 14 +- .../PermissionsSummary.test.tsx.snap | 2 + .../UI/Ramp/Views/BuildQuote/BuildQuote.tsx | 2 +- .../NetworkSwitcher/NetworkSwitcher.test.tsx | 13 +- .../Views/NetworkSwitcher/NetworkSwitcher.tsx | 25 +- .../NetworkSwitcher.test.tsx.snap | 13 +- .../UI/Ramp/Views/Quotes/Quotes.constants.ts | 3 + .../UI/Ramp/Views/Quotes/Quotes.test.tsx | 223 +- .../UI/Ramp/Views/Quotes/Quotes.tsx | 278 +- .../Quotes/__snapshots__/Quotes.test.tsx.snap | 3926 ++++---- .../UI/Ramp/components/OrderDetails.tsx | 12 +- .../UI/Ramp/components/Quote/Quote.styles.ts | 6 + .../UI/Ramp/components/Quote/Quote.test.tsx | 207 + .../UI/Ramp/components/Quote/Quote.tsx | 40 +- app/components/UI/Ramp/hooks/useBalance.ts | 10 +- .../UI/Ramp/hooks/useHandleSuccessfulOrder.ts | 4 +- .../UI/Ramp/hooks/useQuotes.test.ts | 38 - app/components/UI/Ramp/hooks/useQuotes.ts | 10 +- .../UI/Ramp/hooks/useSortedQuotes.test.ts | 197 + .../UI/Ramp/hooks/useSortedQuotes.ts | 84 + app/components/UI/Ramp/types/analytics.ts | 7 + app/components/UI/Ramp/utils/index.ts | 9 +- app/components/UI/SelectComponent/index.js | 4 +- .../__snapshots__/OptionSheet.test.tsx.snap | 2 +- .../AssetPill/AssetPill.test.tsx | 10 +- .../SimulationDetails/AssetPill/AssetPill.tsx | 4 +- .../SnapUIAddress/SnapUIAddress.test.tsx | 193 + .../UI/Snaps/SnapUIAddress/SnapUIAddress.tsx | 73 + .../__snapshots__/SnapUIAddress.test.tsx.snap | 1399 +++ .../UI/Snaps/SnapUIAddress/useDisplayName.ts | 59 + .../UI/Snaps/SnapUIAvatar/SnapUIAvatar.tsx | 74 + .../UI/Snaps/SnapUIImage/SnapUIImage.tsx | 34 + .../UI/Snaps/SnapUIInput/SnapUIInput.test.tsx | 110 + .../UI/Snaps/SnapUIInput/SnapUIInput.tsx | 81 + .../UI/Snaps/SnapUILink/SnapUILink.tsx | 35 + .../StakeEarningsHistoryView.test.tsx | 4 +- .../StakeInputView/StakeInputView.test.tsx | 119 +- .../Views/StakeInputView/StakeInputView.tsx | 52 +- .../StakeInputView/StakeInputView.types.ts | 22 + .../StakeInputView.test.tsx.snap | 4013 +++++--- .../Stake/Views/StakeInputView/utils.test.ts | 40 + .../UI/Stake/Views/StakeInputView/utils.ts | 15 + .../UnstakeInputView.test.tsx | 4 +- app/components/UI/Stake/__mocks__/mockData.ts | 149 +- .../EarnTokenList/EarnTokenList.styles.ts | 15 + .../EarnTokenList/EarnTokenList.test.tsx | 332 + .../__snapshots__/EarnTokenList.test.tsx.snap | 1115 +++ .../Stake/components/EarnTokenList/index.tsx | 227 + .../EarnTokenListItem.types.ts | 2 +- .../EarnTokenSelector.styles.ts | 36 + .../EarnTokenSelector.test.tsx | 86 + .../EarnTokenSelector.test.tsx.snap | 288 + .../components/EarnTokenSelector/index.tsx | 113 + .../GasImpactModal.test.tsx.snap | 13 +- .../__snapshots__/MaxInputModal.test.tsx.snap | 15 +- .../PoolStakingLearnMoreModal.test.tsx.snap | 13 +- .../StakeButton/StakeButton.test.tsx | 79 +- .../UI/Stake/components/StakeButton/index.tsx | 17 +- .../StakingBalance/StakingBalance.test.tsx | 26 +- .../StakingBalance/StakingBalance.tsx | 1 + .../ClaimBanner/ClaimBanner.test.tsx | 7 +- .../ClaimBanner/ClaimBanner.tsx | 8 +- .../StakingButtons/StakingButtons.test.tsx | 16 +- .../StakingButtons/StakingButtons.tsx | 20 +- .../TokenValueStack/TokenValueStack.test.tsx | 10 + .../TokenValueStack/TokenValueStack.tsx | 4 +- .../StakingEarningsHistory.test.tsx | 12 +- .../StakingEarningsHistory.tsx | 6 +- .../StakingEarningsHistory.utils.test.ts | 20 +- .../StakingEarningsHistory.utils.ts | 6 +- .../StakingEarningsHistoryButton.test.tsx | 6 +- app/components/UI/Stake/constants/events.ts | 1 + app/components/UI/Stake/hooks/useBalance.ts | 4 +- .../Stake/hooks/useEarnTokenDetails.test.tsx | 148 + .../UI/Stake/hooks/useEarnTokenDetails.ts | 76 + .../UI/Stake/hooks/usePooledStakes.ts | 4 +- .../UI/Stake/hooks/useStakingChain.ts | 8 +- .../UI/Stake/hooks/useVaultApyAverages.tsx | 4 +- .../UI/Stake/hooks/useVaultApys.tsx | 4 +- app/components/UI/Stake/hooks/useVaultData.ts | 4 +- app/components/UI/Stake/routes/index.tsx | 12 + .../UI/Stake/sdk/stakeSdkProvider.tsx | 4 +- app/components/UI/Stake/testUtils/index.ts | 110 + .../UI/Stake/testUtils/testUtils.test.ts | 96 + .../UI/Stake/testUtils/testUtils.types.ts | 21 + app/components/UI/Stake/utils/token/index.ts | 69 + .../UI/Stake/utils/token/token.test.ts | 161 + app/components/UI/Swaps/QuotesView.js | 147 +- app/components/UI/Swaps/SwapsLiveness.ts | 4 +- .../UI/Swaps/components/GasEditModal.js | 4 +- .../UI/Swaps/components/TokenIcon.js | 4 + .../UI/Swaps/components/TokenSelectModal.js | 17 +- app/components/UI/Swaps/index.js | 17 +- .../UI/Swaps/utils/useBlockExplorer.js | 29 +- .../__snapshots__/index.test.tsx.snap | 1 + .../Tabs/TabThumbnail/TabThumbnail.test.tsx | 129 +- .../UI/Tabs/TabThumbnail/TabThumbnail.tsx | 4 +- .../__snapshots__/TabThumbnail.test.tsx.snap | 4 +- .../Tabs/TabThumbnail/useSelectedAccount.ts | 2 +- .../UI/TemplateRenderer/SafeComponentList.ts | 41 +- .../UI/TemplateRenderer/TemplateRenderer.tsx | 60 +- app/components/UI/TemplateRenderer/types.ts | 1 + .../Tokens/TokenList/TokenListItem/index.tsx | 16 +- .../Tokens/__snapshots__/index.test.tsx.snap | 1246 --- app/components/UI/Tokens/index.test.tsx | 37 +- app/components/UI/Tokens/index.tsx | 203 +- .../TransactionDetails/index.js | 6 +- app/components/UI/TransactionElement/index.js | 6 +- app/components/UI/Transactions/index.js | 6 + .../Views/AccountActions/AccountActions.tsx | 16 +- .../AccountConnect/AccountConnect.test.tsx | 56 + .../Views/AccountConnect/AccountConnect.tsx | 14 +- .../AccountConnectMultiSelector.test.tsx | 181 + .../AccountConnectMultiSelector.tsx | 1 + .../AccountConnectMultiSelector.types.ts | 3 +- .../AccountConnectMultiSelector.test.tsx.snap | 694 ++ .../AccountConnectSingleSelector.types.ts | 3 +- .../AccountConnect.test.tsx.snap | 18 +- .../AccountPermissions.test.tsx | 17 + .../AccountPermissions/AccountPermissions.tsx | 19 +- ...tPermissionsConfirmRevokeAll.test.tsx.snap | 13 +- .../AccountPermissionsConnected.types.ts | 3 +- .../AccountPermissionsRevoke.tsx | 8 +- .../AccountPermissionsRevoke.types.ts | 3 +- .../ConnectionDetails.test.tsx | 131 + .../ConnectionDetails.test.tsx.snap | 143 + .../NetworkPermissionsConnected.tsx | 18 +- .../NetworkPermissionsConnected.types.ts | 3 +- .../PermittedNetworksInfoSheet.constants.ts | 6 + .../PermittedNetworksInfoSheet.test.tsx | 86 + .../PermittedNetworksInfoSheet.tsx | 17 +- .../PermittedNetworksInfoSheet.test.tsx.snap | 147 + .../Views/AccountSelector/AccountSelector.tsx | 10 +- .../AccountSelector/AccountSelector.types.ts | 4 + .../AccountSelector.test.tsx.snap | 2 +- .../AddAccountActions.test.tsx | 5 +- .../AddAccountActions/AddAccountActions.tsx | 13 +- app/components/Views/AddAsset/AddAsset.tsx | 8 +- app/components/Views/Asset/index.js | 9 +- app/components/Views/Asset/index.test.js | 6 - app/components/Views/AssetDetails/index.tsx | 11 +- .../Views/AssetOptions/AssetOptions.test.tsx | 14 +- .../Views/AssetOptions/AssetOptions.tsx | 12 +- app/components/Views/Browser/index.js | 2 +- .../Views/BrowserTab/BrowserTab.tsx | 4 +- .../DetectedTokens/components/Token.test.tsx | 4 +- .../Views/DetectedTokens/components/Token.tsx | 4 +- .../Views/DetectedTokens/index.test.tsx | 12 +- app/components/Views/DetectedTokens/index.tsx | 8 +- .../Views/ImportPrivateKey/index.tsx | 17 +- .../Views/MultiRpcModal/MultiRpcModal.tsx | 12 +- .../__snapshots__/MultiRpcModal.test.tsx.snap | 2 +- .../NFTAutoDetectionModal.tsx | 4 +- .../NFTAutoDetectionModal.test.tsx.snap | 2 +- .../NetworkConnectMultiSelector.test.tsx | 220 + .../NetworkConnectMultiSelector.tsx | 14 +- .../NetworkConnectMultiSelector.test.tsx.snap | 572 ++ .../NetworkSelector/NetworkSelector.styles.ts | 4 + .../NetworkSelector/NetworkSelector.test.tsx | 66 +- .../Views/NetworkSelector/NetworkSelector.tsx | 152 +- .../RpcSelectionModal.test.tsx | 3 + .../RpcSelectionModal/RpcSelectionModal.tsx | 4 +- .../RpcSelectionModal.test.tsx.snap | 13 +- .../NetworkSelector.test.tsx.snap | 194 + .../Details/Footers/BlockExplorerFooter.tsx | 7 +- .../Notifications/Details/index.test.tsx | 11 + .../Views/Notifications/Details/index.tsx | 15 +- .../Notifications/OptIn/OptIn.hooks.test.tsx | 239 + .../Views/Notifications/OptIn/OptIn.hooks.tsx | 129 + .../OptIn/__snapshots__/index.test.tsx.snap | 4 +- .../Views/Notifications/OptIn/index.test.tsx | 122 +- .../Views/Notifications/OptIn/index.tsx | 123 +- .../__snapshots__/index.test.tsx.snap | 119 + .../SDK/SDKSessionModal/SDKSessionModal.tsx | 2 +- .../AmbiguousAddressSheet.test.tsx.snap | 2 +- .../Settings/Contacts/ContactForm/index.js | 4 +- .../__snapshots__/index.test.tsx.snap | 2 +- .../IPFSGatewaySettings/index.test.tsx | 141 +- .../Settings/IPFSGatewaySettings/index.tsx | 2 +- .../__snapshots__/index.test.tsx.snap | 119 + .../IncomingTransactionsSettings/index.tsx | 46 +- .../CustomNetworkView/CustomNetwork.tsx | 22 +- .../NetworksSettings/NetworkSettings/index.js | 11 +- .../NetworkSettings/index.test.tsx | 3 + .../__snapshots__/index.test.tsx.snap | 74 + .../Views/Settings/NetworksSettings/index.js | 70 +- .../AccountsList.hooks.test.tsx | 136 + .../AccountsList.hooks.tsx | 51 + .../AccountsList.test.tsx | 223 +- .../NotificationsSettings/AccountsList.tsx | 73 +- .../__snapshots__/index.test.tsx.snap | 7 +- .../CustomNotificationsRow/index.test.tsx | 12 +- .../CustomNotificationsRow/index.tsx | 60 +- .../FeatureAnnouncementToggle.test.tsx | 98 + .../FeatureAnnouncementToggle.tsx | 40 + .../MainNotificationToggle.hooks.test.tsx | 134 + .../MainNotificationToggle.hooks.tsx | 56 + .../MainNotificationToggle.test.tsx | 74 + .../MainNotificationToggle.tsx | 68 + .../NotificationOptionToggle/index.tsx | 62 +- .../PushNotificationToggle.hooks.test.tsx | 32 + .../PushNotificationToggle.hooks.tsx | 17 + .../PushNotificationToggle.test.tsx | 90 + .../PushNotificationToggle.tsx | 49 + .../ResetNotificationsButton.test.tsx | 62 + .../ResetNotificationsButton.tsx | 36 + .../__snapshots__/AccountsList.test.tsx.snap | 520 -- .../__snapshots__/index.test.tsx.snap | 3 + .../NotificationsSettings/index.test.tsx | 28 +- .../Settings/NotificationsSettings/index.tsx | 247 +- .../notificationsRows.ts | 48 - .../useToggleNotifications.test.tsx | 125 - .../useToggleNotifications.ts | 75 - .../PermissionsManager.test.tsx | 62 + .../SecuritySettings.test.tsx.snap | 119 + .../__snapshots__/index.test.tsx.snap | 1209 ++- app/components/Views/Settings/index.test.tsx | 65 +- app/components/Views/Settings/index.tsx | 17 +- .../ShowDisplayNFTMediaSheet.test.tsx.snap | 2 +- .../ShowIpfsGatewaySheet.test.tsx.snap | 2 +- .../ShowTokenIdSheet.test.tsx.snap | 2 +- .../SmartTransactionStatus.tsx | 12 +- .../__snapshots__/index.test.tsx.snap | 379 + .../Views/TransactionsView/index.js | 28 +- .../Views/TransactionsView/index.test.tsx | 116 + app/components/Views/Wallet/index.tsx | 51 +- .../WalletActions/WalletActions.test.tsx | 32 +- .../Views/WalletActions/WalletActions.tsx | 75 +- .../AlertModal/AlertModal.styles.ts | 75 + .../AlertModal/AlertModal.test.tsx | 214 + .../AlertSystem/AlertModal/AlertModal.tsx | 211 + .../AlertSystem/AlertModal/index.ts | 1 + .../ConfirmAlertModal.styles.ts | 67 + .../ConfirmAlertModal.test.tsx | 76 + .../ConfirmAlertModal/ConfirmAlertModal.tsx | 101 + .../AlertSystem/ConfirmAlertModal/index.ts | 1 + .../context/Alerts.context.test.tsx | 120 + .../AlertSystem/context/Alerts.context.tsx | 96 + .../AlertSystem/context/index.ts | 1 + .../__snapshots__/index.test.tsx.snap | 2 +- .../confirmations/Approval/index.test.tsx | 12 +- .../Approve/__snapshots__/index.test.tsx.snap | 3 +- .../ApproveView/Approve/index.js | 22 +- .../ApproveView/Approve/index.test.tsx | 152 +- .../confirmations/Confirm/Confirm.styles.ts | 28 +- .../confirmations/Confirm/Confirm.test.tsx | 122 +- .../Views/confirmations/Confirm/Confirm.tsx | 58 +- .../Confirm/ConfirmRoot.test.tsx | 41 + .../confirmations/Confirm/ConfirmRoot.tsx | 32 + .../Views/confirmations/Confirm/index.ts | 3 +- .../Views/confirmations/Send/index.js | 18 +- .../Views/confirmations/Send/index.test.tsx | 6 + .../confirmations/SendFlow/Amount/index.js | 20 +- .../SendFlow/Confirm/index.test.tsx | 1 - .../confirmations/SendFlow/Confirm/styles.ts | 2 +- .../confirmations/SendFlow/SendTo/index.js | 10 +- .../ApproveTransactionHeader.tsx | 13 +- .../AddNickname/index.tsx | 25 +- .../AddNickname/types.ts | 5 +- .../VerifyContractDetails.tsx | 7 +- .../__snapshots__/index.test.tsx.snap | 1 + .../ApproveTransactionReview/index.js | 100 +- .../ApproveTransactionReview/styles.ts | 2 +- .../AccountNetworkInfo.test.tsx | 13 + .../AccountNetworkInfoCollapsed.styles.ts | 10 + .../AccountNetworkInfoCollapsed.test.tsx | 20 +- .../AccountNetworkInfoCollapsed.tsx | 21 +- .../AccountNetworkInfoExpanded.test.tsx | 37 +- .../AccountNetworkInfoExpanded.tsx | 13 +- .../AccountNetworkInfoExpanded.test.tsx.snap | 259 + .../AdvancedDetails/AdvancedDetails.styles.ts | 15 + .../AdvancedDetails/AdvancedDetails.test.tsx | 28 + .../AdvancedDetails/AdvancedDetails.tsx | 63 + .../components/Confirm/DataTree/DataField.tsx | 10 +- .../Confirm/Footer/Footer.styles.ts | 27 +- .../components/Confirm/Footer/Footer.test.tsx | 50 +- .../components/Confirm/Footer/Footer.tsx | 125 +- .../components/Confirm/Footer/index.ts | 2 +- .../GasFeesDetails/GasFeesDetails.styles.ts | 31 + .../GasFeesDetails/GasFeesDetails.test.tsx | 76 + .../Info/GasFeesDetails/GasFeesDetails.tsx | 44 + .../Confirm/Info/GasFeesDetails/index.ts | 1 + .../components/Confirm/Info/Info.test.tsx | 40 +- .../components/Confirm/Info/Info.tsx | 2 +- .../Info/PersonalSign/PersonalSign.test.tsx | 11 + .../components/Confirm/Info/QRInfo/QRInfo.tsx | 2 +- .../Shared/InfoRowOrigin/InfoRowOrigin.tsx | 4 +- .../Info/StakingDeposit/Navbar.test.tsx | 33 + .../Confirm/Info/StakingDeposit/Navbar.tsx | 50 + .../StakingDeposit/StakingDeposit.test.tsx | 43 + .../Info/StakingDeposit/StakingDeposit.tsx | 40 +- .../Info/TypedSignV1/TypedSignV1.test.tsx | 11 + .../InfoSectionOriginAndDetails.styles.ts | 10 + .../InfoSectionOriginAndDetails.test.tsx | 44 + .../InfoSectionOriginAndDetails.tsx | 69 + .../InfoSectionOriginAndDetails/index.ts | 1 + .../Info/TypedSignV3V4/Message.styles.ts | 2 +- .../Confirm/Info/TypedSignV3V4/Message.tsx | 4 +- .../TypedSignDecoded.test.tsx | 21 + .../TypedSignDecoded/TypedSignDecoded.tsx | 2 +- .../TypedSignPermit/TypedSignPermit.test.tsx | 31 +- .../TypedSignPermit/TypedSignPermit.tsx | 26 +- .../ValueDisplay/ValueDisplay.test.tsx | 18 + .../components/ValueDisplay/ValueDisplay.tsx | 48 +- .../Info/TypedSignV3V4/TypedSignV3V4.test.tsx | 15 +- .../Info/TypedSignV3V4/TypedSignV3V4.tsx | 4 +- .../InfoRowDivider/InfoRowDivider.styles.ts | 18 + .../InfoRowDivider/InfoRowDivider.test.tsx | 26 + .../Confirm/InfoRowDivider/InfoRowDivider.tsx | 14 + .../Confirm/InfoRowDivider/index.ts | 1 + .../LedgerSignModal/LedgerSignModal.styles.ts | 25 + .../LedgerSignModal/LedgerSignModal.test.tsx | 92 + .../LedgerSignModal/LedgerSignModal.tsx | 68 + .../Confirm/LedgerSignModal/index.ts | 1 + .../StakingDetails/StakingDetails.styles.ts | 31 + .../StakingDetails/StakingDetails.test.tsx | 43 + .../Confirm/StakingDetails/StakingDetails.tsx | 46 + .../Confirm/StakingDetails/index.ts | 1 + .../components/Confirm/Title/Title.styles.ts | 2 +- .../components/Confirm/Title/Title.test.tsx | 40 +- .../components/Confirm/Title/Title.tsx | 45 +- .../Confirm/TokenHero/TokenHero.styles.ts | 10 +- .../Confirm/TokenHero/TokenHero.test.tsx | 41 +- .../Confirm/TokenHero/TokenHero.tsx | 74 +- .../components/SignatureRequest/index.js | 13 +- .../__snapshots__/index.test.tsx.snap | 2 +- .../components/TransactionReview/index.js | 19 +- .../TransactionReview/index.test.tsx | 9 +- .../__snapshots__/index.test.tsx.snap | 16 + .../components/UI/BottomModal/BottomModal.tsx | 8 +- .../ExpandableSection/ExpandableSection.tsx | 2 +- .../UI/InfoRow/Divider/Divider.test.tsx | 15 + .../components/UI/InfoRow/Divider/Divider.tsx | 23 + .../components/UI/InfoRow/Divider/index.ts | 1 + .../components/UI/InfoRow/InfoRow.styles.ts | 11 +- .../components/UI/InfoRow/InfoRow.tsx | 11 +- .../InfoRow/InfoSection/InfoSection.styles.ts | 4 +- .../InfoValue/DisplayURL/DisplayURL.styles.ts | 1 - .../InfoValue/DisplayURL/DisplayURL.test.tsx | 10 +- .../__snapshots__/DisplayURL.test.tsx.snap | 30 - .../InfoValue/TokenValue/TokenValue.test.tsx | 30 +- .../InfoValue/TokenValue/TokenValue.tsx | 6 +- .../InfoSectionAccordion.styles.ts | 35 + .../InfoSectionAccordion.test.tsx | 62 + .../InfoSectionAccordion.tsx | 133 + .../UI/InfoSectionAccordion/index.ts | 1 + .../TextWithTooltip.stories.tsx | 1 + .../TextWithTooltip/TextWithTooltip.styles.ts | 9 +- .../TextWithTooltip/TextWithTooltip.test.tsx | 3 + .../UI/TextWithTooltip/TextWithTooltip.tsx | 6 +- .../components/UI/Tooltip/Tooltip.styles.ts | 24 +- .../components/UI/Tooltip/Tooltip.test.tsx | 2 +- .../components/UI/Tooltip/Tooltip.tsx | 83 +- .../__snapshots__/Tooltip.test.tsx.snap | 2 +- .../components/WatchAssetRequest/index.js | 4 +- .../LedgerContext/LedgerContext.test.tsx | 85 + .../context/LedgerContext/LedgerContext.tsx | 103 + .../context/LedgerContext/index.js | 1 + .../QRHardwareContext.test.tsx | 3 +- .../context/QRHardwareContext/index.js | 1 + .../hooks/useConfirmActions.test.ts | 101 +- .../confirmations/hooks/useConfirmActions.ts | 52 +- .../hooks/useConfirmationAlerts.test.ts | 13 + .../hooks/useConfirmationAlerts.ts | 8 + .../useConfirmationRedesignEnabled.test.ts | 35 +- .../hooks/useConfirmationRedesignEnabled.ts | 18 +- .../hooks/useEIP1559TxFees.test.ts | 34 + .../confirmations/hooks/useEIP1559TxFees.ts | 26 + .../hooks/useFeeCalculations.test.ts | 120 + .../confirmations/hooks/useFeeCalculations.ts | 145 + .../hooks/useFlatConfirmation.test.ts | 24 + .../hooks/useFlatConfirmation.ts | 17 + .../hooks/useGasFeeEstimates.test.ts | 103 + .../confirmations/hooks/useGasFeeEstimates.ts | 58 + .../confirmations/hooks/useNetworkInfo.ts | 12 +- .../hooks/useStakingDetails.test.ts | 36 + .../confirmations/hooks/useStakingDetails.ts | 35 + .../hooks/useStandaloneConfirmation.test.ts | 24 + .../hooks/useStandaloneConfirmation.ts | 17 + .../hooks/useSupportsEIP1559.test.ts | 67 + .../confirmations/hooks/useSupportsEIP1559.ts | 17 + .../hooks/useTokenValues.test.ts | 1 + .../confirmations/hooks/useTokenValues.ts | 16 +- .../Views/confirmations/types/alerts.ts | 72 + .../useAccountTrackerPolling.test.ts | 13 + .../useCurrencyRatePolling.test.ts | 13 + .../AssetPolling/useCurrencyRatePolling.ts | 10 +- .../useTokenBalancesPolling.test.ts | 12 + .../AssetPolling/useTokenBalancesPolling.ts | 4 +- .../useTokenDetectionPolling.test.ts | 7 + .../AssetPolling/useTokenDetectionPolling.ts | 4 +- .../AssetPolling/useTokenListPolling.test.ts | 13 + .../hooks/AssetPolling/useTokenListPolling.ts | 4 +- .../AssetPolling/useTokenRatesPolling.test.ts | 13 + .../AssetPolling/useTokenRatesPolling.ts | 4 +- .../hooks/DisplayName/useDisplayName.test.ts | 12 +- .../hooks/DisplayName/useDisplayName.ts | 7 +- .../useFirstPartyContractNames.test.ts | 2 +- .../hooks/useAccounts/useAccounts.ts | 12 +- .../hooks/useAccounts/useAccounts.types.ts | 4 + .../useAddressBalance.test.tsx | 7 + .../hooks/useAlertsConfirmed.test.ts | 70 + app/components/hooks/useAlertsConfirmed.ts | 56 + app/components/hooks/useBlockExplorer.ts | 7 +- .../useCheckMultiRpcModal.test.ts | 8 +- .../useCheckMultiRpcModal.ts | 6 +- .../useCheckNftAutoDetectionModal.ts | 8 +- app/components/hooks/useExistingAddress.ts | 10 +- .../hooks/useGetFormattedTokensPerChain.tsx | 1 + .../useGetTotalFiatBalanceCrossChains.tsx | 4 +- .../hooks/useHideFiatForTestnet/index.test.ts | 16 +- .../hooks/useHideFiatForTestnet/index.ts | 4 +- .../useMultichainBalances.ts | 8 +- .../useTokenSearchDiscovery.test.ts | 82 + .../useTokenSearchDiscovery.ts | 57 + app/constants/first-party-contracts.ts | 13 +- app/constants/navigation/Routes.ts | 6 + app/constants/storage.ts | 2 + app/core/Analytics/MetaMetrics.events.ts | 4 + app/core/Analytics/MetaMetrics.ts | 7 +- app/core/Analytics/MetaMetrics.types.ts | 49 +- .../MetaMetricsPrivacySegmentPlugin.test.ts | 121 +- .../MetaMetricsPrivacySegmentPlugin.ts | 25 +- app/core/AppConstants.ts | 1 + .../BackgroundBridge/WalletConnectPort.ts | 4 +- app/core/BackupVault/backupVault.test.ts | 1 + .../DeeplinkManager/Handlers/switchNetwork.ts | 4 +- app/core/Engine/Engine.test.ts | 109 +- app/core/Engine/Engine.ts | 350 +- app/core/Engine/README.md | 33 + app/core/Engine/constants.ts | 8 +- .../AccountsController/constants.ts | 54 - .../AccountsController/utils.test.ts | 153 - .../controllers/AccountsController/utils.ts | 45 - .../MultichainAssetsController/index.test.ts | 100 + .../MultichainAssetsController/index.ts | 41 + .../MultichainNetworkController/index.test.ts | 86 + .../MultichainNetworkController/index.ts | 35 + .../constants.ts | 4 + .../TokenSearchDiscoveryController/index.ts | 1 + .../TokenSearchDiscoveryController/types.ts | 7 + .../utils.test.ts | 192 + .../TokenSearchDiscoveryController/utils.ts | 40 + .../accounts-controller/constants.ts | 9 + .../accounts-controller/index.test.ts | 94 + .../controllers/accounts-controller/index.ts | 36 + .../utils.test.ts} | 4 +- .../utils.ts} | 4 +- .../identity/calculate-scrypt-key.test.ts | 136 + .../identity/calculate-scrypt-key.ts | 73 + ...e-notification-services-controller.test.ts | 88 + ...create-notification-services-controller.ts | 23 + ...ification-services-push-controller.test.ts | 130 + ...e-notification-services-push-controller.ts | 50 + .../notifications/create-push-message.test.ts | 177 + .../notifications/create-push-message.ts | 97 + ...ification-services-controller-init.test.ts | 62 + .../notification-services-controller-init.ts | 40 + ...tion-services-push-controller-init.test.ts | 62 + ...ification-services-push-controller-init.ts | 46 + .../controllers/notifications/push-utils.ts | 25 + .../index.ts | 1 + .../types.ts | 0 .../utils.test.ts | 8 +- .../utils.ts | 0 .../accounts-controller-messenger/index.ts | 39 + .../accounts-controller-messenger/types.ts | 24 + app/core/Engine/messengers/index.ts | 11 + ...tion-services-controller-messenger.test.ts | 46 + ...ification-services-controller-messenger.ts | 37 + ...services-push-controller-messenger.test.ts | 27 + ...tion-services-push-controller-messenger.ts | 12 + app/core/Engine/types.ts | 202 +- app/core/Engine/utils/index.ts | 2 + app/core/Engine/utils/test-utils.ts | 39 + app/core/Engine/utils/test/logger.test.ts | 10 +- app/core/Engine/utils/utils.test.ts | 71 + app/core/Engine/utils/utils.ts | 91 + app/core/EngineService/EngineService.test.ts | 2 + app/core/EngineService/EngineService.ts | 1 + app/core/Multichain/constants.ts | 123 +- app/core/Multichain/test/utils.test.ts | 98 + app/core/Multichain/utils.ts | 94 +- app/core/Permissions/specifications.js | 82 +- app/core/Permissions/specifications.test.js | 5 +- app/core/RPCMethods/RPCMethodMiddleware.ts | 9 +- .../RPCMethods/lib/ethereum-chain-utils.js | 9 +- .../RPCMethods/wallet_addEthereumChain.js | 16 +- .../wallet_addEthereumChain.test.js | 7 +- .../RPCMethods/wallet_switchEthereumChain.js | 11 +- .../wallet_switchEthereumChain.test.js | 9 +- app/core/RPCMethods/wallet_watchAsset.ts | 13 +- .../ConnectionManagement/connectToChannel.ts | 54 +- app/core/SnapKeyring/SnapKeyring.test.ts | 311 +- app/core/SnapKeyring/SnapKeyring.ts | 364 +- app/core/SnapKeyring/types.ts | 2 + .../utils/getUniqueAccountName.test.ts | 51 + .../SnapKeyring/utils/getUniqueAccountName.ts | 27 + app/core/SnapKeyring/utils/snaps.ts | 12 + app/core/Snaps/SnapBridge.ts | 6 +- app/core/Snaps/SnapsMethodMiddleware.ts | 38 + app/core/Snaps/utils.ts | 6 +- app/core/WalletConnect/WalletConnect.js | 7 +- .../WalletConnect/WalletConnect2Session.ts | 10 +- .../WalletConnect/WalletConnectV2.test.ts | 4 +- app/core/WalletConnect/WalletConnectV2.ts | 8 +- app/images/branding/tiny-logo.png | Bin 0 -> 1454 bytes app/images/image-icons.js | 6 + app/lib/ppom/ppom-util.test.ts | 11 - app/lib/ppom/ppom-util.ts | 23 +- app/lib/ppom/security-alerts-api.test.ts | 28 - app/lib/ppom/security-alerts-api.ts | 6 - app/lib/snaps/SnapsExecutionWebView.test.tsx | 40 + app/lib/snaps/SnapsExecutionWebView.tsx | 160 +- app/reducers/fiatOrders/index.ts | 4 +- app/reducers/swaps/index.js | 6 +- .../accountTrackerController.test.ts | 14 +- app/selectors/accountTrackerController.ts | 5 +- ...accountTrackerControllerReRenders.test.tsx | 15 + app/selectors/accountsController.test.ts | 6 +- app/selectors/accountsController.ts | 39 +- app/selectors/addressBookController.ts | 13 + app/selectors/currencyRateController.ts | 4 +- app/selectors/featureFlagController/index.ts | 2 +- app/selectors/gasFeeController.ts | 69 +- app/selectors/keyringController/testUtils.ts | 1 + app/selectors/multichain/evm.test.ts | 172 - app/selectors/multichain/evm.test.tsx | 402 + app/selectors/multichain/evm.ts | 21 +- app/selectors/multichain/multichain.test.ts | 199 +- app/selectors/multichain/multichain.ts | 219 +- .../multichainNetworkController/index.test.ts | 134 + .../multichainNetworkController/index.ts | 99 + app/selectors/networkController.test.ts | 7 + app/selectors/networkController.ts | 68 +- app/selectors/networkInfos.ts | 41 +- app/selectors/notifications/index.test.ts | 21 +- app/selectors/notifications/index.tsx | 22 +- app/selectors/notifications/testUtils.ts | 6 + app/selectors/preferencesController.ts | 4 +- app/selectors/selectedNetworkController.ts | 41 +- app/selectors/smartTransactionsController.ts | 6 +- app/selectors/snaps/interfaceController.ts | 47 + app/selectors/tokenBalancesController.ts | 4 +- app/selectors/tokenRatesController.ts | 4 +- .../tokenSearchDiscoveryController.test.ts | 46 + .../tokenSearchDiscoveryController.ts | 10 + app/selectors/tokensController.ts | 14 +- app/selectors/transactionController.test.ts | 203 +- app/selectors/transactionController.ts | 9 + app/selectors/types.ts | 3 + app/util/address/index.ts | 2 +- app/util/blockaid/index.test.ts | 47 +- app/util/blockaid/index.ts | 10 +- app/util/confirmation/signatureUtils.js | 4 +- app/util/conversions.js | 5 + app/util/conversions.test.js | 12 + .../logs/__snapshots__/index.test.ts.snap | 31 + app/util/networks/customNetworks.test.ts | 20 +- app/util/networks/customNetworks.tsx | 15 +- app/util/networks/engineNetworkUtils.ts | 20 +- app/util/networks/handleNetworkSwitch.test.ts | 22 +- app/util/networks/handleNetworkSwitch.ts | 18 +- app/util/networks/index.js | 45 +- app/util/networks/index.test.ts | 3 + app/util/notifications/hooks/index.test.tsx | 127 +- app/util/notifications/hooks/index.ts | 80 +- app/util/notifications/hooks/types.ts | 40 +- .../hooks/useNotifications.test.tsx | 492 +- .../notifications/hooks/useNotifications.ts | 291 +- .../hooks/usePushNotifications.test.ts | 141 + .../hooks/usePushNotifications.ts | 94 +- ...useRegisterPushNotificationsEffect.test.ts | 258 + .../useRegisterPushNotificationsEffect.ts | 160 + .../hooks/useSwitchNotifications.test.tsx | 592 +- .../hooks/useSwitchNotifications.ts | 229 +- .../hooks/useUpdateAccountSetting.test.tsx | 67 - .../hooks/useUpdateAccountSetting.tsx | 32 - app/util/notifications/methods/common.test.ts | 21 - app/util/notifications/methods/common.ts | 80 - .../notifications/services/FCMService.test.ts | 371 +- app/util/notifications/services/FCMService.ts | 208 +- .../services/NotificationService.test.ts | 410 +- .../services/NotificationService.ts | 133 +- .../notifications/types/notification/index.ts | 2 +- app/util/smart-transactions/index.test.ts | 54 +- app/util/smart-transactions/index.ts | 6 +- .../smart-transactions/smart-publish-hook.ts | 7 +- app/util/test/confirm-data-helpers.ts | 160 +- app/util/test/initial-background-state.json | 36 +- app/util/test/renderWithProvider.tsx | 5 +- app/util/test/testSetup.js | 12 +- attribution.txt | 8265 +++++++++-------- babel.config.js | 4 + bitrise.yml | 16 +- e2e/api-mocking/mock-config/mock-events.js | 22 - e2e/fixtures/fixture-builder.js | 10 + .../Browser/Confirmations/PageSections.js | 1 + e2e/pages/Browser/TestDApp.js | 10 + e2e/pages/Ramps/BuildQuoteView.js | 17 +- e2e/pages/Ramps/QuotesView.js | 2 +- .../Receive/PaymentRequestQrBottomSheet.js | 4 +- e2e/pages/Receive/RequestPaymentModal.js | 2 +- e2e/pages/Receive/SendLinkView.js | 4 +- e2e/selectors/Browser/TestDapp.selectors.js | 1 + .../ConfirmationView.selectors.js | 1 + e2e/selectors/Ramps/BuildQuote.selectors.js | 2 + e2e/selectors/Ramps/Quotes.selectors.js | 4 +- .../signatures/security-alerts.spec.js | 1 - .../security-alert-send-eth.mock.js} | 10 +- .../security-alert-signatures.mock.spec.js | 3 - e2e/specs/ramps/offramp-limits.spec.js | 60 + e2e/specs/ramps/offramp.spec.js | 11 +- e2e/specs/ramps/onramp-limits.spec.js | 5 +- e2e/specs/ramps/onramp.spec.js | 2 +- e2e/specs/stake/stake-action-smoke.spec.js | 30 +- ios/MetaMask.xcodeproj/project.pbxproj | 24 +- locales/languages/en.json | 184 +- package.json | 46 +- ...@metamask+assets-controllers+50.0.0.patch} | 55 +- .../@metamask+keyring-controller+19.0.1.patch | 14 - ...@metamask+post-message-stream+9.0.0.patch} | 0 ...patch => @metamask+rpc-errors+7.0.2.patch} | 0 scripts/build.sh | 2 +- sonar-project.properties | 2 +- yarn.lock | 1330 +-- 750 files changed, 46197 insertions(+), 16461 deletions(-) create mode 100644 .github/workflows/publish-slack-release-testing-status.yml create mode 100644 app/component-library/components-temp/Snaps/ConfirmInfoRowValueDouble/ConfirmInfoRowValueDouble.tsx create mode 100644 app/components/Snaps/SnapDialogApproval/SnapDialogApproval.styles.ts create mode 100644 app/components/Snaps/SnapDialogApproval/SnapDialogApproval.test.tsx create mode 100644 app/components/Snaps/SnapDialogApproval/SnapsDialogApproval.tsx create mode 100644 app/components/Snaps/SnapDialogApproval/index.ts create mode 100644 app/components/Snaps/SnapIcon/SnapIcon.tsx create mode 100644 app/components/Snaps/SnapInterfaceContext.test.tsx create mode 100644 app/components/Snaps/SnapInterfaceContext.tsx create mode 100644 app/components/Snaps/SnapUIBanner/SnapUIBanner.tsx create mode 100644 app/components/Snaps/SnapUIButton/SnapUIButton.tsx create mode 100644 app/components/Snaps/SnapUICard/SnapUICard.tsx create mode 100644 app/components/Snaps/SnapUICheckbox/SnapUICheckbox.tsx create mode 100644 app/components/Snaps/SnapUIFooterButton/SnapUIFooterButton.test.tsx create mode 100644 app/components/Snaps/SnapUIFooterButton/SnapUIFooterButton.tsx create mode 100644 app/components/Snaps/SnapUIIcon/SnapUIIcon.tsx create mode 100644 app/components/Snaps/SnapUIRenderer/SnapUIRenderer.styles.ts create mode 100644 app/components/Snaps/SnapUIRenderer/SnapUIRenderer.test.tsx create mode 100644 app/components/Snaps/SnapUIRenderer/SnapUIRenderer.tsx create mode 100644 app/components/Snaps/SnapUIRenderer/__snapshots__/SnapUIRenderer.test.tsx.snap create mode 100644 app/components/Snaps/SnapUIRenderer/components/address.ts create mode 100644 app/components/Snaps/SnapUIRenderer/components/avatar.ts create mode 100644 app/components/Snaps/SnapUIRenderer/components/banner.test.ts create mode 100644 app/components/Snaps/SnapUIRenderer/components/banner.ts create mode 100644 app/components/Snaps/SnapUIRenderer/components/bold.ts create mode 100644 app/components/Snaps/SnapUIRenderer/components/box.test.ts create mode 100644 app/components/Snaps/SnapUIRenderer/components/box.ts create mode 100644 app/components/Snaps/SnapUIRenderer/components/button.ts create mode 100644 app/components/Snaps/SnapUIRenderer/components/card.ts create mode 100644 app/components/Snaps/SnapUIRenderer/components/checkbox.ts create mode 100644 app/components/Snaps/SnapUIRenderer/components/container.test.ts create mode 100644 app/components/Snaps/SnapUIRenderer/components/container.ts create mode 100644 app/components/Snaps/SnapUIRenderer/components/field.ts create mode 100644 app/components/Snaps/SnapUIRenderer/components/footer.test.ts create mode 100644 app/components/Snaps/SnapUIRenderer/components/footer.ts create mode 100644 app/components/Snaps/SnapUIRenderer/components/form.ts create mode 100644 app/components/Snaps/SnapUIRenderer/components/heading.test.ts create mode 100644 app/components/Snaps/SnapUIRenderer/components/heading.ts create mode 100644 app/components/Snaps/SnapUIRenderer/components/icon.test.ts create mode 100644 app/components/Snaps/SnapUIRenderer/components/icon.ts create mode 100644 app/components/Snaps/SnapUIRenderer/components/image.ts create mode 100644 app/components/Snaps/SnapUIRenderer/components/index.ts create mode 100644 app/components/Snaps/SnapUIRenderer/components/input.ts create mode 100644 app/components/Snaps/SnapUIRenderer/components/link.ts create mode 100644 app/components/Snaps/SnapUIRenderer/components/row.ts create mode 100644 app/components/Snaps/SnapUIRenderer/components/section.ts create mode 100644 app/components/Snaps/SnapUIRenderer/components/text.test.ts create mode 100644 app/components/Snaps/SnapUIRenderer/components/text.ts create mode 100644 app/components/Snaps/SnapUIRenderer/components/types.ts create mode 100644 app/components/Snaps/SnapUIRenderer/components/value.ts create mode 100644 app/components/Snaps/SnapUIRenderer/utils.test.ts create mode 100644 app/components/Snaps/SnapUIRenderer/utils.ts create mode 100644 app/components/UI/Box/Box.test.tsx create mode 100644 app/components/UI/Box/Box.tsx create mode 100644 app/components/UI/Box/box.types.ts create mode 100644 app/components/UI/Bridge/index.js create mode 100644 app/components/UI/Bridge/index.test.tsx create mode 100644 app/components/UI/DrawerView/util.test.ts create mode 100644 app/components/UI/DrawerView/utils.ts create mode 100644 app/components/UI/Navbar/index.test.jsx create mode 100644 app/components/UI/NetworkSelectorList/NetworkSelectorList.test.tsx create mode 100644 app/components/UI/NetworkSelectorList/__snapshots__/NetworkSelectorList.test.tsx.snap create mode 100644 app/components/UI/Ramp/components/Quote/Quote.test.tsx create mode 100644 app/components/UI/Ramp/hooks/useSortedQuotes.test.ts create mode 100644 app/components/UI/Ramp/hooks/useSortedQuotes.ts create mode 100644 app/components/UI/Snaps/SnapUIAddress/SnapUIAddress.test.tsx create mode 100644 app/components/UI/Snaps/SnapUIAddress/SnapUIAddress.tsx create mode 100644 app/components/UI/Snaps/SnapUIAddress/__snapshots__/SnapUIAddress.test.tsx.snap create mode 100644 app/components/UI/Snaps/SnapUIAddress/useDisplayName.ts create mode 100644 app/components/UI/Snaps/SnapUIAvatar/SnapUIAvatar.tsx create mode 100644 app/components/UI/Snaps/SnapUIImage/SnapUIImage.tsx create mode 100644 app/components/UI/Snaps/SnapUIInput/SnapUIInput.test.tsx create mode 100644 app/components/UI/Snaps/SnapUIInput/SnapUIInput.tsx create mode 100644 app/components/UI/Snaps/SnapUILink/SnapUILink.tsx create mode 100644 app/components/UI/Stake/Views/StakeInputView/StakeInputView.types.ts create mode 100644 app/components/UI/Stake/Views/StakeInputView/utils.test.ts create mode 100644 app/components/UI/Stake/Views/StakeInputView/utils.ts create mode 100644 app/components/UI/Stake/components/EarnTokenList/EarnTokenList.styles.ts create mode 100644 app/components/UI/Stake/components/EarnTokenList/EarnTokenList.test.tsx create mode 100644 app/components/UI/Stake/components/EarnTokenList/__snapshots__/EarnTokenList.test.tsx.snap create mode 100644 app/components/UI/Stake/components/EarnTokenList/index.tsx create mode 100644 app/components/UI/Stake/components/EarnTokenSelector/EarnTokenSelector.styles.ts create mode 100644 app/components/UI/Stake/components/EarnTokenSelector/EarnTokenSelector.test.tsx create mode 100644 app/components/UI/Stake/components/EarnTokenSelector/__snapshots__/EarnTokenSelector.test.tsx.snap create mode 100644 app/components/UI/Stake/components/EarnTokenSelector/index.tsx create mode 100644 app/components/UI/Stake/hooks/useEarnTokenDetails.test.tsx create mode 100644 app/components/UI/Stake/hooks/useEarnTokenDetails.ts create mode 100644 app/components/UI/Stake/testUtils/index.ts create mode 100644 app/components/UI/Stake/testUtils/testUtils.test.ts create mode 100644 app/components/UI/Stake/testUtils/testUtils.types.ts create mode 100644 app/components/UI/Stake/utils/token/index.ts create mode 100644 app/components/UI/Stake/utils/token/token.test.ts create mode 100644 app/components/Views/AccountConnect/AccountConnectMultiSelector/AccountConnectMultiSelector.test.tsx create mode 100644 app/components/Views/AccountConnect/AccountConnectMultiSelector/__snapshots__/AccountConnectMultiSelector.test.tsx.snap create mode 100644 app/components/Views/AccountPermissions/ConnectionDetails/ConnectionDetails.test.tsx create mode 100644 app/components/Views/AccountPermissions/ConnectionDetails/__snapshots__/ConnectionDetails.test.tsx.snap create mode 100644 app/components/Views/AccountPermissions/PermittedNetworksInfoSheet/PermittedNetworksInfoSheet.constants.ts create mode 100644 app/components/Views/AccountPermissions/PermittedNetworksInfoSheet/PermittedNetworksInfoSheet.test.tsx create mode 100644 app/components/Views/AccountPermissions/PermittedNetworksInfoSheet/__snapshots__/PermittedNetworksInfoSheet.test.tsx.snap create mode 100644 app/components/Views/NetworkConnect/NetworkConnectMultiSelector/NetworkConnectMultiSelector.test.tsx create mode 100644 app/components/Views/NetworkConnect/NetworkConnectMultiSelector/__snapshots__/NetworkConnectMultiSelector.test.tsx.snap create mode 100644 app/components/Views/Notifications/OptIn/OptIn.hooks.test.tsx create mode 100644 app/components/Views/Notifications/OptIn/OptIn.hooks.tsx create mode 100644 app/components/Views/Settings/NotificationsSettings/AccountsList.hooks.test.tsx create mode 100644 app/components/Views/Settings/NotificationsSettings/AccountsList.hooks.tsx create mode 100644 app/components/Views/Settings/NotificationsSettings/FeatureAnnouncementToggle.test.tsx create mode 100644 app/components/Views/Settings/NotificationsSettings/FeatureAnnouncementToggle.tsx create mode 100644 app/components/Views/Settings/NotificationsSettings/MainNotificationToggle.hooks.test.tsx create mode 100644 app/components/Views/Settings/NotificationsSettings/MainNotificationToggle.hooks.tsx create mode 100644 app/components/Views/Settings/NotificationsSettings/MainNotificationToggle.test.tsx create mode 100644 app/components/Views/Settings/NotificationsSettings/MainNotificationToggle.tsx create mode 100644 app/components/Views/Settings/NotificationsSettings/PushNotificationToggle.hooks.test.tsx create mode 100644 app/components/Views/Settings/NotificationsSettings/PushNotificationToggle.hooks.tsx create mode 100644 app/components/Views/Settings/NotificationsSettings/PushNotificationToggle.test.tsx create mode 100644 app/components/Views/Settings/NotificationsSettings/PushNotificationToggle.tsx create mode 100644 app/components/Views/Settings/NotificationsSettings/ResetNotificationsButton.test.tsx create mode 100644 app/components/Views/Settings/NotificationsSettings/ResetNotificationsButton.tsx delete mode 100644 app/components/Views/Settings/NotificationsSettings/__snapshots__/AccountsList.test.tsx.snap delete mode 100644 app/components/Views/Settings/NotificationsSettings/notificationsRows.ts delete mode 100644 app/components/Views/Settings/NotificationsSettings/useToggleNotifications.test.tsx delete mode 100644 app/components/Views/Settings/NotificationsSettings/useToggleNotifications.ts create mode 100644 app/components/Views/Settings/PermissionsSettings/PermissionsManager.test.tsx create mode 100644 app/components/Views/TransactionsView/__snapshots__/index.test.tsx.snap create mode 100644 app/components/Views/TransactionsView/index.test.tsx create mode 100644 app/components/Views/confirmations/AlertSystem/AlertModal/AlertModal.styles.ts create mode 100644 app/components/Views/confirmations/AlertSystem/AlertModal/AlertModal.test.tsx create mode 100755 app/components/Views/confirmations/AlertSystem/AlertModal/AlertModal.tsx create mode 100755 app/components/Views/confirmations/AlertSystem/AlertModal/index.ts create mode 100644 app/components/Views/confirmations/AlertSystem/ConfirmAlertModal/ConfirmAlertModal.styles.ts create mode 100644 app/components/Views/confirmations/AlertSystem/ConfirmAlertModal/ConfirmAlertModal.test.tsx create mode 100755 app/components/Views/confirmations/AlertSystem/ConfirmAlertModal/ConfirmAlertModal.tsx create mode 100755 app/components/Views/confirmations/AlertSystem/ConfirmAlertModal/index.ts create mode 100644 app/components/Views/confirmations/AlertSystem/context/Alerts.context.test.tsx create mode 100644 app/components/Views/confirmations/AlertSystem/context/Alerts.context.tsx create mode 100644 app/components/Views/confirmations/AlertSystem/context/index.ts create mode 100644 app/components/Views/confirmations/Confirm/ConfirmRoot.test.tsx create mode 100644 app/components/Views/confirmations/Confirm/ConfirmRoot.tsx create mode 100644 app/components/Views/confirmations/components/Confirm/AccountNetworkInfo/AccountNetworkInfoExpanded/__snapshots__/AccountNetworkInfoExpanded.test.tsx.snap create mode 100644 app/components/Views/confirmations/components/Confirm/AdvancedDetails/AdvancedDetails.styles.ts create mode 100644 app/components/Views/confirmations/components/Confirm/AdvancedDetails/AdvancedDetails.test.tsx create mode 100644 app/components/Views/confirmations/components/Confirm/AdvancedDetails/AdvancedDetails.tsx create mode 100644 app/components/Views/confirmations/components/Confirm/Info/GasFeesDetails/GasFeesDetails.styles.ts create mode 100644 app/components/Views/confirmations/components/Confirm/Info/GasFeesDetails/GasFeesDetails.test.tsx create mode 100644 app/components/Views/confirmations/components/Confirm/Info/GasFeesDetails/GasFeesDetails.tsx create mode 100644 app/components/Views/confirmations/components/Confirm/Info/GasFeesDetails/index.ts create mode 100644 app/components/Views/confirmations/components/Confirm/Info/StakingDeposit/Navbar.test.tsx create mode 100644 app/components/Views/confirmations/components/Confirm/Info/StakingDeposit/Navbar.tsx create mode 100644 app/components/Views/confirmations/components/Confirm/Info/StakingDeposit/StakingDeposit.test.tsx create mode 100644 app/components/Views/confirmations/components/Confirm/Info/TypedSignV3V4/InfoSectionOriginAndDetails/InfoSectionOriginAndDetails.styles.ts create mode 100644 app/components/Views/confirmations/components/Confirm/Info/TypedSignV3V4/InfoSectionOriginAndDetails/InfoSectionOriginAndDetails.test.tsx create mode 100644 app/components/Views/confirmations/components/Confirm/Info/TypedSignV3V4/InfoSectionOriginAndDetails/InfoSectionOriginAndDetails.tsx create mode 100644 app/components/Views/confirmations/components/Confirm/Info/TypedSignV3V4/InfoSectionOriginAndDetails/index.ts create mode 100644 app/components/Views/confirmations/components/Confirm/InfoRowDivider/InfoRowDivider.styles.ts create mode 100644 app/components/Views/confirmations/components/Confirm/InfoRowDivider/InfoRowDivider.test.tsx create mode 100644 app/components/Views/confirmations/components/Confirm/InfoRowDivider/InfoRowDivider.tsx create mode 100644 app/components/Views/confirmations/components/Confirm/InfoRowDivider/index.ts create mode 100644 app/components/Views/confirmations/components/Confirm/LedgerSignModal/LedgerSignModal.styles.ts create mode 100644 app/components/Views/confirmations/components/Confirm/LedgerSignModal/LedgerSignModal.test.tsx create mode 100644 app/components/Views/confirmations/components/Confirm/LedgerSignModal/LedgerSignModal.tsx create mode 100644 app/components/Views/confirmations/components/Confirm/LedgerSignModal/index.ts create mode 100644 app/components/Views/confirmations/components/Confirm/StakingDetails/StakingDetails.styles.ts create mode 100644 app/components/Views/confirmations/components/Confirm/StakingDetails/StakingDetails.test.tsx create mode 100644 app/components/Views/confirmations/components/Confirm/StakingDetails/StakingDetails.tsx create mode 100644 app/components/Views/confirmations/components/Confirm/StakingDetails/index.ts create mode 100644 app/components/Views/confirmations/components/UI/InfoRow/Divider/Divider.test.tsx create mode 100644 app/components/Views/confirmations/components/UI/InfoRow/Divider/Divider.tsx create mode 100644 app/components/Views/confirmations/components/UI/InfoRow/Divider/index.ts delete mode 100644 app/components/Views/confirmations/components/UI/InfoRow/InfoValue/DisplayURL/__snapshots__/DisplayURL.test.tsx.snap create mode 100644 app/components/Views/confirmations/components/UI/InfoSectionAccordion/InfoSectionAccordion.styles.ts create mode 100644 app/components/Views/confirmations/components/UI/InfoSectionAccordion/InfoSectionAccordion.test.tsx create mode 100644 app/components/Views/confirmations/components/UI/InfoSectionAccordion/InfoSectionAccordion.tsx create mode 100644 app/components/Views/confirmations/components/UI/InfoSectionAccordion/index.ts create mode 100644 app/components/Views/confirmations/context/LedgerContext/LedgerContext.test.tsx create mode 100644 app/components/Views/confirmations/context/LedgerContext/LedgerContext.tsx create mode 100644 app/components/Views/confirmations/context/LedgerContext/index.js create mode 100644 app/components/Views/confirmations/context/QRHardwareContext/index.js create mode 100644 app/components/Views/confirmations/hooks/useConfirmationAlerts.test.ts create mode 100644 app/components/Views/confirmations/hooks/useConfirmationAlerts.ts create mode 100644 app/components/Views/confirmations/hooks/useEIP1559TxFees.test.ts create mode 100644 app/components/Views/confirmations/hooks/useEIP1559TxFees.ts create mode 100644 app/components/Views/confirmations/hooks/useFeeCalculations.test.ts create mode 100644 app/components/Views/confirmations/hooks/useFeeCalculations.ts create mode 100644 app/components/Views/confirmations/hooks/useFlatConfirmation.test.ts create mode 100644 app/components/Views/confirmations/hooks/useFlatConfirmation.ts create mode 100644 app/components/Views/confirmations/hooks/useGasFeeEstimates.test.ts create mode 100644 app/components/Views/confirmations/hooks/useGasFeeEstimates.ts create mode 100644 app/components/Views/confirmations/hooks/useStakingDetails.test.ts create mode 100644 app/components/Views/confirmations/hooks/useStakingDetails.ts create mode 100644 app/components/Views/confirmations/hooks/useStandaloneConfirmation.test.ts create mode 100644 app/components/Views/confirmations/hooks/useStandaloneConfirmation.ts create mode 100644 app/components/Views/confirmations/hooks/useSupportsEIP1559.test.ts create mode 100644 app/components/Views/confirmations/hooks/useSupportsEIP1559.ts create mode 100644 app/components/Views/confirmations/types/alerts.ts create mode 100644 app/components/hooks/useAlertsConfirmed.test.ts create mode 100644 app/components/hooks/useAlertsConfirmed.ts create mode 100644 app/components/hooks/useTokenSearchDiscovery/useTokenSearchDiscovery.test.ts create mode 100644 app/components/hooks/useTokenSearchDiscovery/useTokenSearchDiscovery.ts create mode 100644 app/core/Engine/README.md delete mode 100644 app/core/Engine/controllers/AccountsController/constants.ts delete mode 100644 app/core/Engine/controllers/AccountsController/utils.test.ts delete mode 100644 app/core/Engine/controllers/AccountsController/utils.ts create mode 100644 app/core/Engine/controllers/MultichainAssetsController/index.test.ts create mode 100644 app/core/Engine/controllers/MultichainAssetsController/index.ts create mode 100644 app/core/Engine/controllers/MultichainNetworkController/index.test.ts create mode 100644 app/core/Engine/controllers/MultichainNetworkController/index.ts create mode 100644 app/core/Engine/controllers/TokenSearchDiscoveryController/constants.ts create mode 100644 app/core/Engine/controllers/TokenSearchDiscoveryController/index.ts create mode 100644 app/core/Engine/controllers/TokenSearchDiscoveryController/types.ts create mode 100644 app/core/Engine/controllers/TokenSearchDiscoveryController/utils.test.ts create mode 100644 app/core/Engine/controllers/TokenSearchDiscoveryController/utils.ts create mode 100644 app/core/Engine/controllers/accounts-controller/constants.ts create mode 100644 app/core/Engine/controllers/accounts-controller/index.test.ts create mode 100644 app/core/Engine/controllers/accounts-controller/index.ts rename app/core/Engine/controllers/{AccountsController/logger.test.ts => accounts-controller/utils.test.ts} (91%) rename app/core/Engine/controllers/{AccountsController/logger.ts => accounts-controller/utils.ts} (84%) create mode 100644 app/core/Engine/controllers/identity/calculate-scrypt-key.test.ts create mode 100644 app/core/Engine/controllers/identity/calculate-scrypt-key.ts create mode 100644 app/core/Engine/controllers/notifications/create-notification-services-controller.test.ts create mode 100644 app/core/Engine/controllers/notifications/create-notification-services-controller.ts create mode 100644 app/core/Engine/controllers/notifications/create-notification-services-push-controller.test.ts create mode 100644 app/core/Engine/controllers/notifications/create-notification-services-push-controller.ts create mode 100644 app/core/Engine/controllers/notifications/create-push-message.test.ts create mode 100644 app/core/Engine/controllers/notifications/create-push-message.ts create mode 100644 app/core/Engine/controllers/notifications/notification-services-controller-init.test.ts create mode 100644 app/core/Engine/controllers/notifications/notification-services-controller-init.ts create mode 100644 app/core/Engine/controllers/notifications/notification-services-push-controller-init.test.ts create mode 100644 app/core/Engine/controllers/notifications/notification-services-push-controller-init.ts create mode 100644 app/core/Engine/controllers/notifications/push-utils.ts rename app/core/Engine/controllers/{RemoteFeatureFlagController => remote-feature-flag-controller}/index.ts (70%) rename app/core/Engine/controllers/{RemoteFeatureFlagController => remote-feature-flag-controller}/types.ts (100%) rename app/core/Engine/controllers/{RemoteFeatureFlagController => remote-feature-flag-controller}/utils.test.ts (93%) rename app/core/Engine/controllers/{RemoteFeatureFlagController => remote-feature-flag-controller}/utils.ts (100%) create mode 100644 app/core/Engine/messengers/accounts-controller-messenger/index.ts create mode 100644 app/core/Engine/messengers/accounts-controller-messenger/types.ts create mode 100644 app/core/Engine/messengers/index.ts create mode 100644 app/core/Engine/messengers/notifications/notification-services-controller-messenger.test.ts create mode 100644 app/core/Engine/messengers/notifications/notification-services-controller-messenger.ts create mode 100644 app/core/Engine/messengers/notifications/notification-services-push-controller-messenger.test.ts create mode 100644 app/core/Engine/messengers/notifications/notification-services-push-controller-messenger.ts create mode 100644 app/core/Engine/utils/index.ts create mode 100644 app/core/Engine/utils/test-utils.ts create mode 100644 app/core/Engine/utils/utils.test.ts create mode 100644 app/core/Engine/utils/utils.ts create mode 100644 app/core/SnapKeyring/utils/getUniqueAccountName.test.ts create mode 100644 app/core/SnapKeyring/utils/getUniqueAccountName.ts create mode 100644 app/core/SnapKeyring/utils/snaps.ts create mode 100644 app/images/branding/tiny-logo.png create mode 100644 app/lib/snaps/SnapsExecutionWebView.test.tsx delete mode 100644 app/selectors/multichain/evm.test.ts create mode 100644 app/selectors/multichain/evm.test.tsx create mode 100644 app/selectors/multichainNetworkController/index.test.ts create mode 100644 app/selectors/multichainNetworkController/index.ts create mode 100644 app/selectors/snaps/interfaceController.ts create mode 100644 app/selectors/tokenSearchDiscoveryController.test.ts create mode 100644 app/selectors/tokenSearchDiscoveryController.ts create mode 100644 app/util/conversions.test.js create mode 100644 app/util/notifications/hooks/usePushNotifications.test.ts create mode 100644 app/util/notifications/hooks/useRegisterPushNotificationsEffect.test.ts create mode 100644 app/util/notifications/hooks/useRegisterPushNotificationsEffect.ts delete mode 100644 app/util/notifications/hooks/useUpdateAccountSetting.test.tsx delete mode 100644 app/util/notifications/hooks/useUpdateAccountSetting.tsx rename e2e/specs/{quarantine/security-alert-send-eth.mock.failing.js => confirmations/security-alert-send-eth.mock.js} (95%) create mode 100644 e2e/specs/ramps/offramp-limits.spec.js rename patches/{@metamask+assets-controllers+46.0.0.patch => @metamask+assets-controllers+50.0.0.patch} (84%) delete mode 100644 patches/@metamask+keyring-controller+19.0.1.patch rename patches/{@metamask+post-message-stream+8.1.1.patch => @metamask+post-message-stream+9.0.0.patch} (100%) rename patches/{@metamask+rpc-errors+7.0.1.patch => @metamask+rpc-errors+7.0.2.patch} (100%) diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index bd45695eab5d..b74a3c5cf56a 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -9,11 +9,6 @@ app/component-library/ @MetaMask/design-system-engineers # Platform Team .github/CODEOWNERS @MetaMask/mobile-platform patches/ @MetaMask/mobile-platform -app/core/Engine/Engine.ts @MetaMask/mobile-platform -app/core/Engine/Engine.test.ts @MetaMask/mobile-platform -app/core/Engine/index.ts @MetaMask/mobile-platform -app/core/Engine/types.ts @MetaMask/mobile-platform -app/core/Engine/controllers/RemoteFeatureFlagController/ @MetaMask/mobile-platform app/core/Analytics/ @MetaMask/mobile-platform app/util/metrics/ @MetaMask/mobile-platform app/components/hooks/useMetrics/ @MetaMask/mobile-platform @@ -24,6 +19,15 @@ bitrise.yml @MetaMask/mobile-pla yarn.lock @MetaMask/mobile-platform ios/Podfile.lock @MetaMask/mobile-platform app/components/Views/BrowserTab/BrowserTab.tsx @MetaMask/mobile-platform +app/core/Engine/messengers/ @MetaMask/mobile-platform +app/core/Engine/utils/ @MetaMask/mobile-platform +app/core/Engine/constants/ @MetaMask/mobile-platform +app/core/Engine/Engine.test.ts @MetaMask/mobile-platform +app/core/Engine/Engine.ts @MetaMask/mobile-platform +app/core/Engine/index.ts @MetaMask/mobile-platform +app/core/Engine/README.md @MetaMask/mobile-platform +app/core/Engine/types.ts @MetaMask/mobile-platform +app/core/Engine/controllers/remote-feature-flag-controller/ @MetaMask/mobile-platform # Ramps Team app/components/UI/Ramp/ @MetaMask/ramp @@ -47,11 +51,13 @@ app/reducers/sdk @MetaMask/sdk-devs app/util/walletconnect.js @MetaMask/sdk-devs # Accounts Team -app/core/Encryptor/ @MetaMask/accounts-engineers -app/core/Engine/controllers/AccountsController @MetaMask/accounts-engineers +app/core/Encryptor/ @MetaMask/accounts-engineers +app/core/Engine/controllers/accounts-controller @MetaMask/accounts-engineers +app/core/Engine/messengers/accounts-controller-messenger @MetaMask/accounts-engineers # Swaps Team app/components/UI/Swaps @MetaMask/swaps-engineers +app/components/UI/Bridge @MetaMask/swaps-engineers # Notifications Team app/components/Views/Notifications @MetaMask/notifications @@ -71,6 +77,10 @@ e2e/specs/identity @MetaMask/identity ses.cjs @MetaMask/supply-chain patches/react-native+0.*.patch @MetaMask/supply-chain +# Portfolio Team +app/components/hooks/useTokenSearchDiscovery @MetaMask/portfolio +app/core/Engine/controllers/TokenSearchDiscoveryController @MetaMask/portfolio + # Snaps Team **/snaps/** @MetaMask/snaps-devs **/Snaps/** @MetaMask/snaps-devs diff --git a/.github/scripts/create-bug-report-issue.ts b/.github/scripts/create-bug-report-issue.ts index 7af8456a6bfb..b0c9f8dfcf90 100644 --- a/.github/scripts/create-bug-report-issue.ts +++ b/.github/scripts/create-bug-report-issue.ts @@ -88,7 +88,7 @@ async function main(): Promise<void> { const regressionLabelProduction: Label = craftRegressionLabel(RegressionStage.Production, releaseVersion); const teamLabel: Label = craftTeamLabel(`${platformName}-platform`); - // Create of retrieve the different labels + // Create or retrieve the different labels await createOrRetrieveLabel(octokit, repoOwner, codeRepoName, regressionLabelProduction); await createOrRetrieveLabel(octokit, repoOwner, codeRepoName, regressionLabelTesting); await createOrRetrieveLabel(octokit, repoOwner, planningRepoName, regressionLabelProduction); diff --git a/.github/workflows/create-bug-report.yml b/.github/workflows/create-bug-report.yml index 234f44945681..e989e37bffcb 100644 --- a/.github/workflows/create-bug-report.yml +++ b/.github/workflows/create-bug-report.yml @@ -15,29 +15,29 @@ jobs: echo "version=$version" >> "$GITHUB_OUTPUT" else echo "Not a release branch, skip next steps" - exit 1 fi - name: Checkout repository - uses: actions/checkout@v3 - with: - fetch-depth: 1 # This retrieves only the latest commit. + if: steps.extract_version.outputs.version + uses: actions/checkout@v4 - name: Set up Node.js + if: steps.extract_version.outputs.version uses: actions/setup-node@v3 with: node-version-file: '.nvmrc' - name: Install dependencies + if: steps.extract_version.outputs.version run: yarn --immutable working-directory: '.github/scripts' - name: Create bug report issue on planning repo - id: create-bug-report-issue + if: steps.extract_version.outputs.version env: BUG_REPORT_TOKEN: ${{ secrets.BUG_REPORT_TOKEN }} RELEASES_GITHUB_PROJECT_BOARD_NUMBER: ${{ vars.RELEASES_GITHUB_PROJECT_BOARD_NUMBER }} RELEASES_GITHUB_PROJECT_BOARD_VIEW_NUMBER: ${{ vars.RELEASES_GITHUB_PROJECT_BOARD_VIEW_NUMBER }} RELEASE_VERSION: ${{ steps.extract_version.outputs.version }} - run: npm run create-bug-report-issue + run: yarn create-bug-report-issue working-directory: '.github/scripts' diff --git a/.github/workflows/create-release-pr-v2.yml b/.github/workflows/create-release-pr-v2.yml index 0498d5175c84..87c0b6ccd093 100644 --- a/.github/workflows/create-release-pr-v2.yml +++ b/.github/workflows/create-release-pr-v2.yml @@ -20,16 +20,18 @@ jobs: create-release-pr: needs: generate-build-version - uses: MetaMask/github-tools/.github/workflows/create-release-pr.yml@4f594ca7d90378da66b7efce987eff379934524b + uses: MetaMask/github-tools/.github/workflows/create-release-pr.yml@e79e0af6dc5d258222f6122eaa2ef41154058e41 with: platform: mobile base-branch: ${{ inputs.base-branch }} semver-version: ${{ inputs.semver-version }} previous-version-tag: ${{ inputs.previous-version-tag }} mobile-build-version: ${{ needs.generate-build-version.outputs.build-version }} + secrets: # This token needs read permissions to metamask-planning & write permissions to metamask-mobile github-token: ${{ secrets.PR_TOKEN }} + google-application-creds-base64: ${{ secrets.GCP_RLS_SHEET_ACCOUNT_BASE64 }} permissions: contents: write pull-requests: write diff --git a/.github/workflows/publish-slack-release-testing-status.yml b/.github/workflows/publish-slack-release-testing-status.yml new file mode 100644 index 000000000000..d6310d11747a --- /dev/null +++ b/.github/workflows/publish-slack-release-testing-status.yml @@ -0,0 +1,20 @@ +name: Trigger Publish Slack Release Testing Status + +on: + schedule: + - cron: '0 15 * * 1-5' #M-F at 15:00 UTC + workflow_dispatch: # Allows manual triggering + +jobs: + call-publish-slack-release-testing-status: + permissions: + contents: write + pull-requests: write + uses: MetaMask/github-tools/.github/workflows/publish-slack-release-testing-status.yml@557025430e5f4d9a581083cabb02b9546d989afc + with: + platform: 'mobile' + google-document-id: '1tsoodlAlyvEUpkkcNcbZ4PM9HuC9cEM80RZeoVv5OCQ' + secrets: + slack-api-key: ${{ secrets.SLACKBOT_RLS_TOKEN }} + github-token: ${{ secrets.PR_TOKEN }} + google-application-creds-base64: ${{ secrets.GCP_RLS_SHEET_ACCOUNT_BASE64 }} diff --git a/.iyarc b/.iyarc index e69de29bb2d1..c9bf0c62f57c 100644 --- a/.iyarc +++ b/.iyarc @@ -0,0 +1,5 @@ +# Temp bypass for release already submitted + +GHSA-jr5f-v2jv-69x6 + +GHSA-968p-4wvh-cqc8 \ No newline at end of file diff --git a/.js.env.example b/.js.env.example index dd83318aa2a8..7c497fe93c00 100644 --- a/.js.env.example +++ b/.js.env.example @@ -33,7 +33,7 @@ export IS_TEST="" # but have to be defined here for local tests export MM_TEST_ACCOUNT_SRP="" export MM_TEST_ACCOUNT_PRIVATE_KEY="" -export TENDERLY_NETWORK_ID="" +export MM_STAKE_TEST_ACCOUNT_PRIVATE_KEY="" # address is the address of the first account generated from the previous SRP export MM_TEST_ACCOUNT_ADDRESS="" @@ -112,6 +112,7 @@ export MM_PERMISSIONS_SETTINGS_V1_ENABLED="" # Feature flag for Stablecoin Lending UI export MM_STABLECOIN_LENDING_UI_ENABLED="true" + # Activates remote feature flag override mode. # Remote feature flag values won't be updated, # and selectors should return their fallback values diff --git a/CHANGELOG.md b/CHANGELOG.md index 54290f14fbd6..346cac77777f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,92 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +## [7.42.0] + +### Added + +- feat(snaps): Add Snap UI Banner component ([#13735](https://github.com/MetaMask/metamask-mobile/pull/13735)) +- feat(ramps): adds some properties to ramp quote analytics events ([#13754](https://github.com/MetaMask/metamask-mobile/pull/13754)) +- feat(ramps): adds most reliable tag to ramp quotes ([#13495](https://github.com/MetaMask/metamask-mobile/pull/13495)) +- feat: Make Snaps UI footers properly sticky ([#13736](https://github.com/MetaMask/metamask-mobile/pull/13736)) +- feat: Add token hero rounded amount tooltip ([#13685](https://github.com/MetaMask/metamask-mobile/pull/13685)) +- feat: make Snap account creation flow async + displayAccountNameSuggestion flag ([#13703](https://github.com/MetaMask/metamask-mobile/pull/13703)) +- feat: bump notifications services controller to v1.0.0 ([#13716](https://github.com/MetaMask/metamask-mobile/pull/13716)) +- feat: add `ConfirmAlertModal` component ([#13604](https://github.com/MetaMask/metamask-mobile/pull/13604)) +- feat: Implement Snaps address UI components ([#13712](https://github.com/MetaMask/metamask-mobile/pull/13712)) +- feat: add `AlertModal` component ([#13483](https://github.com/MetaMask/metamask-mobile/pull/13483)) +- feat: More Snaps UI components ([#13668](https://github.com/MetaMask/metamask-mobile/pull/13668)) +- feat: Support standalone confirmation for re-redesigned confirmations ([#13550](https://github.com/MetaMask/metamask-mobile/pull/13550)) +- feat: Non evm network global selector ([#13307](https://github.com/MetaMask/metamask-mobile/pull/13307)) +- feat: publish slack release testing status ([#13468](https://github.com/MetaMask/metamask-mobile/pull/13468)) +- feat: Limit Segment tracked events to only random 1% of users ([#13534](https://github.com/MetaMask/metamask-mobile/pull/13534)) +- feat: snaps dynamic UI ([#12429](https://github.com/MetaMask/metamask-mobile/pull/12429)) +- feat: refactor cleanup notification hooks and UI ([#13647](https://github.com/MetaMask/metamask-mobile/pull/13647)) +- feat: Implement `GasFeeDetails` ([#13634](https://github.com/MetaMask/metamask-mobile/pull/13634)) +- feat: Add support for ledger wallet in new signature designs ([#13402](https://github.com/MetaMask/metamask-mobile/pull/13402)) +- feat: Migrate tooltips to use BottomModal components ([#13631](https://github.com/MetaMask/metamask-mobile/pull/13631)) +- feat: Refactor/12873 modular controller init ([#13065](https://github.com/MetaMask/metamask-mobile/pull/13065)) +- feat: add initial structure for Alert System ([#13382](https://github.com/MetaMask/metamask-mobile/pull/13382)) +- feat: add better default style support for android push notifications ([#13271](https://github.com/MetaMask/metamask-mobile/pull/13271)) +- feat: add EarnTokenSelector component for stablecoin lending ([#13595](https://github.com/MetaMask/metamask-mobile/pull/13595)) +- feat: adds best rate quote tag to ramp quotes ([#13486](https://github.com/MetaMask/metamask-mobile/pull/13486)) +- feat: Implement staking advanced details ([#13551](https://github.com/MetaMask/metamask-mobile/pull/13551)) +- feat: Implement staking terms and disclosure footer ([#13588](https://github.com/MetaMask/metamask-mobile/pull/13588)) +- feat: add tokens search discovery controller ([#13111](https://github.com/MetaMask/metamask-mobile/pull/13111)) +- feat: bridge feature routing skeleton ([#13404](https://github.com/MetaMask/metamask-mobile/pull/13404)) +- feat: bump notification services controller ([#13529](https://github.com/MetaMask/metamask-mobile/pull/13529)) +- feat: Adding scroll button to confirmation pages ([#13552](https://github.com/MetaMask/metamask-mobile/pull/13552)) +- feat: Port first party staking contracts from extension to mobile ([#13555](https://github.com/MetaMask/metamask-mobile/pull/13555)) +- feat: STAKE-898: build select token component for earn products ([#13258](https://github.com/MetaMask/metamask-mobile/pull/13258)) +- feat: Add Redesign Permit support; fix: InfoRow padding and alignment ([#13369](https://github.com/MetaMask/metamask-mobile/pull/13369)) +- feat: Implement staking details section ([#13475](https://github.com/MetaMask/metamask-mobile/pull/13475)) +- feat: update FCM and Notification Services to better support push impl ([#13441](https://github.com/MetaMask/metamask-mobile/pull/13441)) +- feat: adding navigation to confirmation pages ([#13461](https://github.com/MetaMask/metamask-mobile/pull/13461)) +- feat: enable STX by default with migration and notification ([#12857](https://github.com/MetaMask/metamask-mobile/pull/12857)) + +### Fixed + +- fix(action): Improve bug report creation ([#13562](https://github.com/MetaMask/metamask-mobile/pull/13562)) +- fix(action): revert recent change, due to impossibility to indicate working directory for reusable workflows from github-tools repo ([#13629](https://github.com/MetaMask/metamask-mobile/pull/13629)) +- fix(13492): background shapes animation stories and centering fix ([#13503](https://github.com/MetaMask/metamask-mobile/pull/13503)) +- fix: Adhere to locale settings for Annual Rewards in ETH and in Fiat ([#13660](https://github.com/MetaMask/metamask-mobile/pull/13660)) +- fix: Analytics issue where anonymousId and userId are not properly defined on first sent event ([#13405](https://github.com/MetaMask/metamask-mobile/pull/13405)) +- fix: app store icon ([#13724](https://github.com/MetaMask/metamask-mobile/pull/13724)) +- fix: cp-7.41.0 13708 fix the submitQRSignature scope issue ([#13714](https://github.com/MetaMask/metamask-mobile/pull/13714)) +- fix: network of the asset when pressed in popular list view ([#13713](https://github.com/MetaMask/metamask-mobile/pull/13713)) +- fix: Revert native HMACSHA512 usage ([#13711](https://github.com/MetaMask/metamask-mobile/pull/13711)) +- fix: Remove scroll button from confirmation page ([#13680](https://github.com/MetaMask/metamask-mobile/pull/13680)) +- fix: cp-7.41.0 support NFT collectibles that have multiple images ([#13689](https://github.com/MetaMask/metamask-mobile/pull/13689)) +- fix: cp-7.41.0 implement transparent app icons for improved dark/light mode handling ([#13597](https://github.com/MetaMask/metamask-mobile/pull/13597)) +- fix: `@metamask/transaction-controller` version to exact `45.0.0` ([#13690](https://github.com/MetaMask/metamask-mobile/pull/13690)) +- fix: hide simulation button pill value if no value loaded ([#13663](https://github.com/MetaMask/metamask-mobile/pull/13663)) +- fix: TypedSignDecoded revoke state changes should show "Revoke" not "Spending cap" ([#13665](https://github.com/MetaMask/metamask-mobile/pull/13665)) +- fix: cp-7.41.0 Handle better errors by getting tags in pre-init ([#13598](https://github.com/MetaMask/metamask-mobile/pull/13598)) +- fix: mobile crash issue during revoke with low gas ([#13655](https://github.com/MetaMask/metamask-mobile/pull/13655)) +- fix: origin url displayed for signatures ([#13681](https://github.com/MetaMask/metamask-mobile/pull/13681)) +- fix: swaps using hardware wallets or QR scan wallets are broken ([#13657](https://github.com/MetaMask/metamask-mobile/pull/13657)) +- fix: cp-7.41.0 Temporarily revert gas included swaps ([#13639](https://github.com/MetaMask/metamask-mobile/pull/13639)) +- fix: cp-7.41.0 Prevent flickering on `RetryModal` ([#13637](https://github.com/MetaMask/metamask-mobile/pull/13637)) +- fix: rm duplicate locale entry ([#13635](https://github.com/MetaMask/metamask-mobile/pull/13635)) +- fix: Disabling sentry capturing temporarily till we address issue with url missing protocol ([#13636](https://github.com/MetaMask/metamask-mobile/pull/13636)) +- fix: Confirm button should not be disabled for user to scroll to the bottom of confirmation page ([#13628](https://github.com/MetaMask/metamask-mobile/pull/13628)) +- fix: accessibility issue with footer buttons ([#13626](https://github.com/MetaMask/metamask-mobile/pull/13626)) +- fix: error thrown from DisplayURL component ([#13624](https://github.com/MetaMask/metamask-mobile/pull/13624)) +- fix: STAKE-946: fix inconsistent pooled staking reward rate ([#13594](https://github.com/MetaMask/metamask-mobile/pull/13594)) +- fix: confirm scroll icon color and add scrollEventThrottle prop ([#13600](https://github.com/MetaMask/metamask-mobile/pull/13600)) +- fix: Fix `undefined` `chainId` or `networkClientId` on fetchEstimatedMultiLayer params ([#13606](https://github.com/MetaMask/metamask-mobile/pull/13606)) +- fix: Disable staking deposit for hw wallets ([#13517](https://github.com/MetaMask/metamask-mobile/pull/13517)) +- fix: update toLocaleString locale to undefined ([#13589](https://github.com/MetaMask/metamask-mobile/pull/13589)) +- fix: tooltip display for text should have label ([#13572](https://github.com/MetaMask/metamask-mobile/pull/13572)) +- fix: Reject transaction as user closes modal by swiping out ([#13573](https://github.com/MetaMask/metamask-mobile/pull/13573)) +- fix: remove supported chains check ([#13047](https://github.com/MetaMask/metamask-mobile/pull/13047)) +- fix: additional app icons and remove tint fields ([#13544](https://github.com/MetaMask/metamask-mobile/pull/13544)) +- fix: update plist to include CFBundleIconName for app icons ([#13530](https://github.com/MetaMask/metamask-mobile/pull/13530)) +- fix: cp-7.41.0 fix main aggregated account balance ([#13513](https://github.com/MetaMask/metamask-mobile/pull/13513)) +- fix: cp-7.41.0 fix account selector balance ([#13484](https://github.com/MetaMask/metamask-mobile/pull/13484)) +- fix: account tracker polling called twice ([#13473](https://github.com/MetaMask/metamask-mobile/pull/13473)) +- fix: IPFS gateway down in settings ([#13357](https://github.com/MetaMask/metamask-mobile/pull/13357)) + ## [7.41.0] ### Added @@ -60,7 +146,6 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - fix: fix sort feature ([#13277](https://github.com/MetaMask/metamask-mobile/pull/13277)) - fix: metrics call during onboarding ([#13226](https://github.com/MetaMask/metamask-mobile/pull/13226)) - ## [7.40.0] ### Added @@ -72,7 +157,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#13195](https://github.com/MetaMask/metamask-mobile/pull/13195): feat: Adding date field type in typed sign data tree (#13195) - [#13135](https://github.com/MetaMask/metamask-mobile/pull/13135): feat: hide primary type displayed in collapsed message section if simulation is enabled (#13135) - [#13041](https://github.com/MetaMask/metamask-mobile/pull/13041): feat: Decoding Simulation Metrics (#13041) -- [#12627](https://github.com/MetaMask/metamask-mobile/pull/12627): feat: Enable feature Flag Values with Scope Based on ""threshold"" (#12627) +- [#12627](https://github.com/MetaMask/metamask-mobile/pull/12627): feat: Enable feature Flag Values with Scope Based on ""threshold"" (#12627) - [#13018](https://github.com/MetaMask/metamask-mobile/pull/13018): feat: add earn button to wallet actions (#13018) - [#13154](https://github.com/MetaMask/metamask-mobile/pull/13154): feat: STAKE-929 build token list item component (#13154) - [#13108](https://github.com/MetaMask/metamask-mobile/pull/13108): feat: STAKE-927 build upsell banner component (#13108) @@ -105,7 +190,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#13185](https://github.com/MetaMask/metamask-mobile/pull/13185): test: fix edit account regression test (#13185) - [#13082](https://github.com/MetaMask/metamask-mobile/pull/13082): chore: add fiat value to token and sort desc by fiat (#13082) - [#13221](https://github.com/MetaMask/metamask-mobile/pull/13221): refactor(navigation): unify dapp redirect logic to prevent premature navigation (#13221) -- [#13157](https://github.com/MetaMask/metamask-mobile/pull/13157): chore: upgrading to design tokens v5.0.0 (#13157) +- [#13157](https://github.com/MetaMask/metamask-mobile/pull/13157): chore: upgrading to design tokens v5.0.0 (#13157) ### Fixed @@ -116,7 +201,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#13218](https://github.com/MetaMask/metamask-mobile/pull/13218): fix: fix send flow on token detail page (#13218) - [#13200](https://github.com/MetaMask/metamask-mobile/pull/13200): fix: fix edit network and delete network with tokenNetworkFilter (#13… (#13200) - [#13228](https://github.com/MetaMask/metamask-mobile/pull/13228): fix: fix balance after swap (#13228) -- [#13199](https://github.com/MetaMask/metamask-mobile/pull/13199): fix: failure to convert undefined value to hex object (#13199) +- [#13199](https://github.com/MetaMask/metamask-mobile/pull/13199): fix: failure to convert undefined value to hex object (#13199) - [#13141](https://github.com/MetaMask/metamask-mobile/pull/13141): fix: fix edit network and delete network with tokenNetworkFilter (#13141) - [#13177](https://github.com/MetaMask/metamask-mobile/pull/13177): fix: token details network name (#13162) (#13177) - [#12843](https://github.com/MetaMask/metamask-mobile/pull/12843): fix: improve assets perfs + fix blurred balances and prices (#12843) @@ -5000,8 +5085,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#957](https://github.com/MetaMask/metamask-mobile/pull/957): fix timeouts (#957) - [#954](https://github.com/MetaMask/metamask-mobile/pull/954): Bugfix: onboarding navigation (#954) -[Unreleased]: https://github.com/MetaMask/metamask-mobile/compare/v7.41.0...HEAD -[7.41.0]: https://github.com/MetaMask/metamask-mobile/compare/v7.39.0...v7.41.0 +[Unreleased]: https://github.com/MetaMask/metamask-mobile/compare/v7.42.0...HEAD +[7.42.0]: https://github.com/MetaMask/metamask-mobile/compare/v7.41.0...v7.42.0 +[7.41.0]: https://github.com/MetaMask/metamask-mobile/compare/v7.40.0...v7.41.0 +[7.40.0]: https://github.com/MetaMask/metamask-mobile/compare/v7.39.0...v7.40.0 [7.39.0]: https://github.com/MetaMask/metamask-mobile/compare/v7.38.1...v7.39.0 [7.38.1]: https://github.com/MetaMask/metamask-mobile/compare/v7.38.0...v7.38.1 [7.38.0]: https://github.com/MetaMask/metamask-mobile/compare/v7.37.1...v7.38.0 diff --git a/android/app/build.gradle b/android/app/build.gradle index 56aa06bf506a..c5fe7cc1497f 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -178,8 +178,8 @@ android { applicationId "io.metamask" minSdkVersion rootProject.ext.minSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion - versionName "7.41.0" - versionCode 1586 + versionName "7.42.0" + versionCode 1600 testBuildType System.getProperty('testBuildType', 'debug') missingDimensionStrategy 'react-native-camera', 'general' testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" @@ -288,7 +288,7 @@ dependencies { } else { implementation jscFlavor } - androidTestImplementation('com.wix:detox-legacy:+') { + androidTestImplementation('com.wix:detox:+') { exclude module: "protobuf-lite" } androidTestImplementation ('androidx.test.espresso:espresso-contrib:3.4.0') diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml index 2770038a6209..46e4371b20b7 100644 --- a/android/app/src/main/AndroidManifest.xml +++ b/android/app/src/main/AndroidManifest.xml @@ -133,7 +133,12 @@ <meta-data android:name="com.dieam.reactnativepushnotification.notification_channel_description" android:value="io.metamask"/> <meta-data android:name="com.dieam.reactnativepushnotification.notification_color" - android:resource="@color/lightgray"/> + android:resource="@color/notificationColor"/> + <meta-data android:name="com.google.firebase.messaging.default_notification_color" + android:resource="@color/notificationColor" + tools:replace="android:resource"/> + <meta-data android:name="com.google.firebase.messaging.default_notification_icon" + android:resource="@mipmap/ic_notification_small"/> <provider android:name="androidx.core.content.FileProvider" diff --git a/android/app/src/main/res/values-night/colors.xml b/android/app/src/main/res/values-night/colors.xml index 5219ed36746c..78d2b4e5c8e2 100644 --- a/android/app/src/main/res/values-night/colors.xml +++ b/android/app/src/main/res/values-night/colors.xml @@ -5,5 +5,6 @@ <color name="navBar">#000000</color> <color name="lightgray">#EBEBED</color> <color name="alertTextColor">#000000</color> - <color name="alertBackground">#FFFFFF</color> + <color name="alertBackground">#FFFFFF</color> + <color name="notificationColor">#43AEFC</color> <!-- brand: primary-default --> </resources> diff --git a/android/app/src/main/res/values/colors.xml b/android/app/src/main/res/values/colors.xml index ac52d4d960bb..85e8ef6146a4 100644 --- a/android/app/src/main/res/values/colors.xml +++ b/android/app/src/main/res/values/colors.xml @@ -5,5 +5,6 @@ <color name="navBar">#000000</color> <color name="lightgray">#EBEBED</color> <color name="alertTextColor">#000000</color> - <color name="alertBackground">#FFFFFF</color> + <color name="alertBackground">#FFFFFF</color> + <color name="notificationColor">#0376C9</color> <!-- brand: primary-default --> </resources> diff --git a/android/app/src/qa/res/values-night/colors.xml b/android/app/src/qa/res/values-night/colors.xml index 5219ed36746c..cc8e5b12813e 100644 --- a/android/app/src/qa/res/values-night/colors.xml +++ b/android/app/src/qa/res/values-night/colors.xml @@ -5,5 +5,6 @@ <color name="navBar">#000000</color> <color name="lightgray">#EBEBED</color> <color name="alertTextColor">#000000</color> - <color name="alertBackground">#FFFFFF</color> + <color name="alertBackground">#FFFFFF</color> + <color name="notificationColor">#2A4174</color> </resources> diff --git a/android/app/src/qa/res/values/colors.xml b/android/app/src/qa/res/values/colors.xml index ac52d4d960bb..187da3782d17 100644 --- a/android/app/src/qa/res/values/colors.xml +++ b/android/app/src/qa/res/values/colors.xml @@ -5,5 +5,6 @@ <color name="navBar">#000000</color> <color name="lightgray">#EBEBED</color> <color name="alertTextColor">#000000</color> - <color name="alertBackground">#FFFFFF</color> + <color name="alertBackground">#FFFFFF</color> + <color name="notificationColor">#2A4174</color> </resources> diff --git a/app/actions/notification/helpers/index.test.tsx b/app/actions/notification/helpers/index.test.tsx index ddba30413d71..eb313ac1f033 100644 --- a/app/actions/notification/helpers/index.test.tsx +++ b/app/actions/notification/helpers/index.test.tsx @@ -1,48 +1,147 @@ -// Import necessary libraries and modules -import { enableNotificationServices, disableNotificationServices } from '.'; +import { TRIGGER_TYPES } from '@metamask/notification-services-controller/notification-services'; +import { + enableNotifications, + disableNotifications, + fetchAccountNotificationSettings, + deleteNotificationsForAccount, + createNotificationsForAccount, + resetNotifications, + toggleFeatureAnnouncements, + fetchNotifications, + markNotificationsAsRead, + enablePushNotifications, + disablePushNotifications, +} from '.'; import Engine from '../../../core/Engine'; +jest.mock('../../../util/notifications', () => ({ + isNotificationsFeatureEnabled: () => true, +})); + jest.mock('../../../core/Engine', () => ({ - resetState: jest.fn(), context: { NotificationServicesController: { enableMetamaskNotifications: jest.fn(), disableNotificationServices: jest.fn(), checkAccountsPresence: jest.fn(), + deleteOnChainTriggersByAccount: jest.fn(), + updateOnChainTriggersByAccount: jest.fn(), + createOnChainTriggers: jest.fn(), + setFeatureAnnouncementsEnabled: jest.fn(), + fetchAndUpdateMetamaskNotifications: jest.fn(), + markMetamaskNotificationsAsRead: jest.fn(), + enablePushNotifications: jest.fn(), + disablePushNotifications: jest.fn(), }, }, })); -describe('Notification Helpers', () => { - beforeEach(() => { - jest.clearAllMocks(); +describe('helpers - enableNotificationServices()', () => { + it('invoke notification services method', async () => { + await enableNotifications(); + expect( + Engine.context.NotificationServicesController.enableMetamaskNotifications, + ).toHaveBeenCalled(); + }); +}); + +describe('helpers - disableNotificationServices()', () => { + it('invoke notification services method', async () => { + await disableNotifications(); + expect( + Engine.context.NotificationServicesController.disableNotificationServices, + ).toHaveBeenCalled(); }); +}); - it('enables notification services successfully', async () => { - ( +describe('helpers - checkAccountsPresence()', () => { + it('invoke notification services method', async () => { + const accounts = ['0xAddr1', '0xAddr2', '0xAddr3']; + await fetchAccountNotificationSettings(accounts); + expect( + Engine.context.NotificationServicesController.checkAccountsPresence, + ).toHaveBeenCalledWith(accounts); + }); +}); + +describe('helpers - deleteOnChainTriggersByAccount()', () => { + it('invoke notification services method', async () => { + const accounts = ['0xAddr1', '0xAddr2', '0xAddr3']; + await deleteNotificationsForAccount(accounts); + expect( Engine.context.NotificationServicesController - .enableMetamaskNotifications as jest.Mock - ).mockResolvedValue(undefined); + .deleteOnChainTriggersByAccount, + ).toHaveBeenCalledWith(accounts); + }); +}); - const result = await enableNotificationServices(); +describe('helpers - updateOnChainTriggersByAccount()', () => { + it('invoke notification services method', async () => { + const accounts = ['0xAddr1', '0xAddr2', '0xAddr3']; + await createNotificationsForAccount(accounts); + expect( + Engine.context.NotificationServicesController + .updateOnChainTriggersByAccount, + ).toHaveBeenCalledWith(accounts); + }); +}); +describe('helpers - createOnChainTriggersByAccount()', () => { + it('invoke notification services method', async () => { + await resetNotifications(); expect( - Engine.context.NotificationServicesController.enableMetamaskNotifications, + Engine.context.NotificationServicesController.createOnChainTriggers, + ).toHaveBeenCalled(); + }); +}); + +describe('helpers - setFeatureAnnouncementsEnabled()', () => { + it('invoke notification services method', async () => { + await toggleFeatureAnnouncements(true); + expect( + Engine.context.NotificationServicesController + .setFeatureAnnouncementsEnabled, + ).toHaveBeenCalled(); + }); +}); + +describe('helpers - fetchAndUpdateMetamaskNotifications()', () => { + it('invoke notification services method', async () => { + await fetchNotifications(); + expect( + Engine.context.NotificationServicesController + .fetchAndUpdateMetamaskNotifications, ).toHaveBeenCalled(); - expect(result).toBeUndefined(); }); +}); - it('disables notification services successfully', async () => { - ( +describe('helpers - markMetamaskNotificationsAsRead()', () => { + it('invoke notification services method', async () => { + const readNotifications = [ + { id: '1', isRead: true, type: TRIGGER_TYPES.ETH_SENT }, + ]; + await markNotificationsAsRead(readNotifications); + expect( Engine.context.NotificationServicesController - .disableNotificationServices as jest.Mock - ).mockResolvedValue(undefined); + .markMetamaskNotificationsAsRead, + ).toHaveBeenCalledWith(readNotifications); + }); +}); - const result = await disableNotificationServices(); +describe('helpers - enablePushNotifications()', () => { + it('invoke notification services method', async () => { + await enablePushNotifications(); + expect( + Engine.context.NotificationServicesController.enablePushNotifications, + ).toHaveBeenCalled(); + }); +}); +describe('helpers - disablePushNotifications()', () => { + it('invoke notification services method', async () => { + await disablePushNotifications(); expect( - Engine.context.NotificationServicesController.disableNotificationServices, + Engine.context.NotificationServicesController.disablePushNotifications, ).toHaveBeenCalled(); - expect(result).toBeUndefined(); }); }); diff --git a/app/actions/notification/helpers/index.ts b/app/actions/notification/helpers/index.ts index 05ebf48a56c6..e8c50bf1e273 100644 --- a/app/actions/notification/helpers/index.ts +++ b/app/actions/notification/helpers/index.ts @@ -1,195 +1,140 @@ -import { getErrorMessage } from '@metamask/utils'; - -import { notificationsErrors } from '../constants'; +import type { MarkAsReadNotificationsParam } from '@metamask/notification-services-controller/notification-services'; import Engine from '../../../core/Engine'; -import { mmStorage, getAllUUIDs } from '../../../util/notifications'; -import type { - UserStorage, - INotification, -} from '@metamask/notification-services-controller/notification-services'; - -export type MarkAsReadNotificationsParam = Pick< - INotification, - 'id' | 'type' | 'isRead' ->[]; +import { isNotificationsFeatureEnabled } from '../../../util/notifications'; -export const enableNotificationServices = async () => { - try { - await Engine.context.NotificationServicesController.enableMetamaskNotifications(); - } catch (error) { - return getErrorMessage(error); +export const assertIsFeatureEnabled = () => { + if (!isNotificationsFeatureEnabled()) { + throw new Error( + 'Notifications Feature is not yet enabled, you should not have been able to access this yet!', + ); } }; -export const disableNotificationServices = async () => { - try { - await Engine.context.NotificationServicesController.disableNotificationServices(); - } catch (error) { - return getErrorMessage(error); - } +/** + * Enable Notifications Switch + * - This is used during onboarding and for the notifications settings toggle + * - Enables wallet notifications, feature announcements, and push notifications + */ +export const enableNotifications = async () => { + assertIsFeatureEnabled(); + await Engine.context.NotificationServicesController.enableMetamaskNotifications(); }; -export const checkAccountsPresence = async (accounts: string[]) => { - try { - const { presence } = - await Engine.context.NotificationServicesController.checkAccountsPresence( - accounts, - ); - if (!presence) { - return getErrorMessage(notificationsErrors.CHECK_ACCOUNTS_PRESENCE); - } - } catch (error) { - return getErrorMessage(error); - } +/** + * Disable Notifications Switch + * - Disables wallet notifications, feature announcements, and push notifications + */ +export const disableNotifications = async () => { + assertIsFeatureEnabled(); + await Engine.context.NotificationServicesController.disableNotificationServices(); }; -export const deleteOnChainTriggersByAccount = async (accounts: string[]) => { - try { - const userStorage = - await Engine.context.NotificationServicesController.deleteOnChainTriggersByAccount( - accounts, - ); - if (!userStorage) { - return getErrorMessage( - notificationsErrors.DELETE_ON_CHAIN_TRIGGERS_BY_ACCOUNT, - ); - } - mmStorage.saveLocal('pnUserStorage', userStorage); - } catch (error) { - return getErrorMessage(error); - } +/** + * Push Notifications Switch + * - Allows us to enable push notifications + * @throws if fails to enable push notifications + */ +export const enablePushNotifications = async () => { + assertIsFeatureEnabled(); + await Engine.context.NotificationServicesController.enablePushNotifications(); }; -export const updateOnChainTriggersByAccount = async (accounts: string[]) => { - try { - const userStorage = - await Engine.context.NotificationServicesController.updateOnChainTriggersByAccount( - accounts, - ); - if (!userStorage) { - return getErrorMessage( - notificationsErrors.UPDATE_ON_CHAIN_TRIGGERS_BY_ACCOUNT, - ); - } - mmStorage.saveLocal('pnUserStorage', userStorage); - } catch (error) { - return getErrorMessage(error); - } +/** + * Push Notifications Switch + * - Allows us to disable push notifications + */ +export const disablePushNotifications = async () => { + assertIsFeatureEnabled(); + await Engine.context.NotificationServicesController.disablePushNotifications(); }; -export const createOnChainTriggersByAccount = async ( - resetNotifications: boolean, +/** + * Feature Announcement Switch + * - Enables/Disables Feature Announcements + * @param featureAnnouncementsEnabled boolean to toggle on/off + */ +export const toggleFeatureAnnouncements = async ( + featureAnnouncementsEnabled: boolean, ) => { - try { - const userStorage = - await Engine.context.NotificationServicesController.createOnChainTriggers( - { - resetNotifications, - }, - ); - - if (!userStorage) { - return getErrorMessage( - notificationsErrors.CREATE_ON_CHAIN_TRIGGERS_BY_ACCOUNT, - ); - } - mmStorage.saveLocal('pnUserStorage', userStorage); - } catch (error) { - return getErrorMessage(error); - } + assertIsFeatureEnabled(); + await Engine.context.NotificationServicesController.setFeatureAnnouncementsEnabled( + featureAnnouncementsEnabled, + ); }; -export const setFeatureAnnouncementsEnabled = async ( - featureAnnouncementsEnabled: boolean, -) => { - try { - await Engine.context.NotificationServicesController.setFeatureAnnouncementsEnabled( - featureAnnouncementsEnabled, +/** + * Account Notification Settings. + * - Informs us which accounts have notifications enabled. + * @param accounts - accounts to check + * @returns Record of Address <> Boolean (for which accounts are enabled/disabled) + */ +export const fetchAccountNotificationSettings = async (accounts: string[]) => { + assertIsFeatureEnabled(); + const accountsStatus = + await Engine.context.NotificationServicesController.checkAccountsPresence( + accounts, ); - } catch (error) { - return getErrorMessage(error); - } -}; -export const fetchAndUpdateMetamaskNotifications = async () => { - try { - const metamaskNotifications = - await Engine.context.NotificationServicesController.fetchAndUpdateMetamaskNotifications(); - if (!metamaskNotifications) { - return getErrorMessage( - notificationsErrors.FETCH_AND_UPDATE_METAMASK_NOTIFICATIONS, - ); - } - } catch (error) { - return getErrorMessage(error); - } + return accountsStatus; }; -export const markMetamaskNotificationsAsRead = async ( - notifications: MarkAsReadNotificationsParam, -) => { - try { - await Engine.context.NotificationServicesController.markMetamaskNotificationsAsRead( - notifications, - ); - } catch (error) { - return getErrorMessage(error); - } +/** + * Account Notification Settings. + * - Allows us to delete notifications for accounts + * @param accounts - accounts to disable notifications for + */ +export const deleteNotificationsForAccount = async (accounts: string[]) => { + assertIsFeatureEnabled(); + await Engine.context.NotificationServicesController.deleteOnChainTriggersByAccount( + accounts, + ); }; /** - * Perform the deletion of the notifications storage key and the creation of on chain triggers to reset the notifications. - * - * @returns {Promise<string | undefined>} A promise that resolves to a string error message or undefined if successful. + * Account Notification Settings + * - Allows us to enable notifications for accounts + * @param accounts - accounts to enable notifications for */ -export const performDeleteStorage = async (): Promise<string | undefined> => { - try { - await Engine.context.UserStorageController.performDeleteStorage( - 'notifications.notification_settings', - ); - await Engine.context.NotificationServicesController.createOnChainTriggers({ - resetNotifications: true, - }); - } catch (error) { - return getErrorMessage(error); - } +export const createNotificationsForAccount = async (accounts: string[]) => { + assertIsFeatureEnabled(); + await Engine.context.NotificationServicesController.updateOnChainTriggersByAccount( + accounts, + ); }; -export const enablePushNotifications = async ( - userStorage: UserStorage, - fcmToken?: string, -) => { - try { - const uuids = getAllUUIDs(userStorage); - await Engine.context.NotificationServicesPushController.enablePushNotifications( - uuids, - fcmToken, - ); - } catch (error) { - return getErrorMessage(error); - } +/** + * Fetch Notifications + * - Use to invoke the series of fetch calls to get notifications + * - Use Selectors to grab pending state and data + * @throws Error if fails to fetch notifications + */ +export const fetchNotifications = async () => { + assertIsFeatureEnabled(); + await Engine.context.NotificationServicesController.fetchAndUpdateMetamaskNotifications(); }; -export const disablePushNotifications = async (userStorage: UserStorage) => { - try { - const uuids = getAllUUIDs(userStorage); - await Engine.context.NotificationServicesPushController.disablePushNotifications( - uuids, - ); - } catch (error) { - return getErrorMessage(error); - } +/** + * Mark Notification as Read + * - Fire this in the background to notify our services that a notification was read. + * @param notifications - notifications to mark as read + */ +export const markNotificationsAsRead = async ( + notifications: MarkAsReadNotificationsParam, +) => { + assertIsFeatureEnabled(); + await Engine.context.NotificationServicesController.markMetamaskNotificationsAsRead( + notifications, + ); }; -export const updateTriggerPushNotifications = async ( - userStorage: UserStorage, -) => { - try { - const uuids = getAllUUIDs(userStorage); - await Engine.context.NotificationServicesPushController.updateTriggerPushNotifications( - uuids, - ); - } catch (error) { - return getErrorMessage(error); - } +/** + * Developer options/User toggle to reset notifications + * (in case their UserStorage or notifications become corrupt) + * @throws if there is an error resetting notifications + */ +export const resetNotifications = async () => { + assertIsFeatureEnabled(); + await Engine.context.NotificationServicesController.createOnChainTriggers({ + resetNotifications: true, + }); }; diff --git a/app/component-library/components-temp/Snaps/ConfirmInfoRowValueDouble/ConfirmInfoRowValueDouble.tsx b/app/component-library/components-temp/Snaps/ConfirmInfoRowValueDouble/ConfirmInfoRowValueDouble.tsx new file mode 100644 index 000000000000..78273d5e954d --- /dev/null +++ b/app/component-library/components-temp/Snaps/ConfirmInfoRowValueDouble/ConfirmInfoRowValueDouble.tsx @@ -0,0 +1,40 @@ +import React, { ReactNode } from 'react'; +import { TextColor } from '../../../components/Texts/Text/Text.types'; +import Text from '../../../components/Texts/Text'; +import { Box } from '../../../../components/UI/Box/Box'; +import { RowVariant } from '../../../../components/Snaps/SnapUIRenderer/components/row'; +import { + FlexDirection, + AlignItems, +} from '../../../../components/UI/Box/box.types'; + +export interface ConfirmInfoRowValueDoubleProps { + left: ReactNode; + right: ReactNode; + variant?: RowVariant; +} + +const LEFT_TEXT_COLORS = { + [RowVariant.Default]: TextColor.Muted, + [RowVariant.Critical]: TextColor.ErrorAlternative, + [RowVariant.Warning]: TextColor.Warning, +}; + +export const ConfirmInfoRowValueDouble = ({ + left, + right, + variant = RowVariant.Default, +}: ConfirmInfoRowValueDoubleProps) => ( + <Box flexDirection={FlexDirection.Row} alignItems={AlignItems.center} gap={4}> + {typeof left === 'string' ? ( + <Text color={LEFT_TEXT_COLORS[variant] as TextColor}>{left}</Text> + ) : ( + left + )} + {typeof right === 'string' ? ( + <Text color={TextColor.Default}>{right}</Text> + ) : ( + right + )} + </Box> +); diff --git a/app/component-library/components/BottomSheets/BottomSheet/BottomSheet.tsx b/app/component-library/components/BottomSheets/BottomSheet/BottomSheet.tsx index 1f70eb9e00a8..de17a81ff0cc 100644 --- a/app/component-library/components/BottomSheets/BottomSheet/BottomSheet.tsx +++ b/app/component-library/components/BottomSheets/BottomSheet/BottomSheet.tsx @@ -36,6 +36,7 @@ const BottomSheet = forwardRef<BottomSheetRef, BottomSheetProps>( children, onClose, onOpen, + style, isInteractable = true, shouldNavigateBack = true, isFullscreen = false, @@ -107,6 +108,7 @@ const BottomSheet = forwardRef<BottomSheetRef, BottomSheetProps>( onOpen={onOpenCB} ref={bottomSheetDialogRef} isFullscreen={isFullscreen} + style={style} > {children} </BottomSheetDialog> diff --git a/app/component-library/components/BottomSheets/BottomSheet/foundation/BottomSheetDialog/BottomSheetDialog.styles.ts b/app/component-library/components/BottomSheets/BottomSheet/foundation/BottomSheetDialog/BottomSheetDialog.styles.ts index 6d949b7dc4bc..4ec431815680 100644 --- a/app/component-library/components/BottomSheets/BottomSheet/foundation/BottomSheetDialog/BottomSheetDialog.styles.ts +++ b/app/component-library/components/BottomSheets/BottomSheet/foundation/BottomSheetDialog/BottomSheetDialog.styles.ts @@ -1,4 +1,5 @@ // Third party dependencies. +// eslint-disable-next-line @typescript-eslint/no-shadow import { StyleSheet, ViewStyle } from 'react-native'; // External dependencies. @@ -21,7 +22,7 @@ const styleSheet = (params: { }) => { const { vars, theme } = params; const { colors, shadows } = theme; - const { maxSheetHeight, screenBottomPadding, isFullscreen } = vars; + const { isFullscreen, maxSheetHeight, screenBottomPadding, style } = vars; return StyleSheet.create({ base: Object.assign({ @@ -30,18 +31,21 @@ const styleSheet = (params: { left: 0, right: 0, } as ViewStyle) as ViewStyle, - sheet: { - backgroundColor: colors.background.default, - borderTopLeftRadius: 8, - borderTopRightRadius: 8, - maxHeight: maxSheetHeight, - overflow: 'hidden', - paddingBottom: screenBottomPadding, - borderWidth: 1, - borderColor: colors.border.muted, - ...(isFullscreen && { height: maxSheetHeight }), - ...shadows.size.lg, - }, + sheet: Object.assign( + { + backgroundColor: colors.background.default, + borderTopLeftRadius: 8, + borderTopRightRadius: 8, + maxHeight: maxSheetHeight, + overflow: 'hidden', + paddingBottom: screenBottomPadding, + borderWidth: 1, + borderColor: colors.border.muted, + ...(isFullscreen && { height: maxSheetHeight }), + ...shadows.size.lg, + }, + style, + ) as ViewStyle, notchWrapper: { alignSelf: 'stretch', padding: 4, diff --git a/app/component-library/components/BottomSheets/BottomSheet/foundation/BottomSheetDialog/BottomSheetDialog.tsx b/app/component-library/components/BottomSheets/BottomSheet/foundation/BottomSheetDialog/BottomSheetDialog.tsx index 61e3cfe9c780..822c7c55b379 100644 --- a/app/component-library/components/BottomSheets/BottomSheet/foundation/BottomSheetDialog/BottomSheetDialog.tsx +++ b/app/component-library/components/BottomSheets/BottomSheet/foundation/BottomSheetDialog/BottomSheetDialog.tsx @@ -59,6 +59,7 @@ const BottomSheetDialog = forwardRef< isInteractable = true, onClose, onOpen, + style, ...props }, ref, @@ -71,6 +72,7 @@ const BottomSheetDialog = forwardRef< const { styles } = useStyles(styleSheet, { maxSheetHeight, screenBottomPadding, + style, isFullscreen, }); // X and Y values start on top left of the DIALOG diff --git a/app/component-library/components/BottomSheets/BottomSheet/foundation/BottomSheetDialog/BottomSheetDialog.types.ts b/app/component-library/components/BottomSheets/BottomSheet/foundation/BottomSheetDialog/BottomSheetDialog.types.ts index da2ba4a6f35f..9326e95f6ed8 100644 --- a/app/component-library/components/BottomSheets/BottomSheet/foundation/BottomSheetDialog/BottomSheetDialog.types.ts +++ b/app/component-library/components/BottomSheets/BottomSheet/foundation/BottomSheetDialog/BottomSheetDialog.types.ts @@ -1,5 +1,5 @@ // Third party dependencies. -import { ViewProps } from 'react-native'; +import { StyleProp, ViewProps, ViewStyle } from 'react-native'; /** * BottomSheetDialog component props. @@ -40,5 +40,6 @@ export interface BottomSheetDialogRef { export interface BottomSheetDialogStyleSheetVars { maxSheetHeight: number; screenBottomPadding: number; + style: StyleProp<ViewStyle>; isFullscreen: boolean; } diff --git a/app/component-library/components/BottomSheets/BottomSheetHeader/__snapshots__/BottomSheetHeader.test.tsx.snap b/app/component-library/components/BottomSheets/BottomSheetHeader/__snapshots__/BottomSheetHeader.test.tsx.snap index 033892749723..3842a1239523 100644 --- a/app/component-library/components/BottomSheets/BottomSheetHeader/__snapshots__/BottomSheetHeader.test.tsx.snap +++ b/app/component-library/components/BottomSheets/BottomSheetHeader/__snapshots__/BottomSheetHeader.test.tsx.snap @@ -3,11 +3,14 @@ exports[`BottomSheetHeader should render snapshot correctly 1`] = ` <View style={ - { - "backgroundColor": "#ffffff", - "flexDirection": "row", - "padding": 16, - } + [ + { + "backgroundColor": "#ffffff", + "flexDirection": "row", + "padding": 16, + }, + false, + ] } testID="header" > diff --git a/app/component-library/components/HeaderBase/HeaderBase.test.tsx b/app/component-library/components/HeaderBase/HeaderBase.test.tsx index b61b47dcb791..a6414e75bf2d 100644 --- a/app/component-library/components/HeaderBase/HeaderBase.test.tsx +++ b/app/component-library/components/HeaderBase/HeaderBase.test.tsx @@ -1,6 +1,7 @@ // Third party dependencies. import React from 'react'; import { render } from '@testing-library/react-native'; +import { useSafeAreaInsets } from 'react-native-safe-area-context'; // External dependencies. import Text, { TextVariant } from '../Texts/Text'; @@ -15,7 +16,16 @@ import { HEADERBASE_TITLE_TEST_ID, } from './HeaderBase.constants'; +jest.mock('react-native-safe-area-context', () => ({ + useSafeAreaInsets: jest.fn(), +})); describe('HeaderBase', () => { + const mockInsets = { top: 20, bottom: 0, left: 0, right: 0 }; + + beforeEach(() => { + (useSafeAreaInsets as jest.Mock).mockReturnValue(mockInsets); + }); + it('should render snapshot correctly', () => { const wrapper = render(<HeaderBase>Sample HeaderBase Title</HeaderBase>); expect(wrapper).toMatchSnapshot(); @@ -55,4 +65,28 @@ describe('HeaderBase', () => { expect(getByRole('text').props.style.fontFamily).toBe(fontFamily); }); + + it('applies marginTop when includesTopInset is true', () => { + const { getByTestId } = render( + <HeaderBase includesTopInset>Header Content</HeaderBase>, + ); + + const headerBase = getByTestId(HEADERBASE_TEST_ID); + // Verify the marginTop is applied + expect(headerBase.props.style).toEqual( + expect.arrayContaining([{ marginTop: mockInsets.top }]), + ); + }); + + it('does not apply marginTop when includesTopInset is false', () => { + const { getByTestId } = render( + <HeaderBase includesTopInset={false}>Header Content</HeaderBase>, + ); + + const headerBase = getByTestId(HEADERBASE_TEST_ID); + // Verify the marginTop is not applied + expect(headerBase.props.style).toEqual( + expect.not.arrayContaining([{ marginTop: mockInsets.top }]), + ); + }); }); diff --git a/app/component-library/components/HeaderBase/HeaderBase.tsx b/app/component-library/components/HeaderBase/HeaderBase.tsx index 8c3b9a299fce..460d700199ce 100644 --- a/app/component-library/components/HeaderBase/HeaderBase.tsx +++ b/app/component-library/components/HeaderBase/HeaderBase.tsx @@ -3,6 +3,7 @@ // Third party dependencies. import React from 'react'; import { View } from 'react-native'; +import { useSafeAreaInsets } from 'react-native-safe-area-context'; // External dependencies. import { useComponentSize, useStyles } from '../../hooks'; @@ -22,11 +23,14 @@ const HeaderBase: React.FC<HeaderBaseProps> = ({ children, startAccessory, endAccessory, + includesTopInset = false, }) => { const { size: startAccessorySize, onLayout: startAccessoryOnLayout } = useComponentSize(); const { size: endAccessorySize, onLayout: endAccessoryOnLayout } = useComponentSize(); + const insets = useSafeAreaInsets(); + const { styles } = useStyles(styleSheet, { style, startAccessorySize, @@ -34,7 +38,10 @@ const HeaderBase: React.FC<HeaderBaseProps> = ({ }); return ( - <View style={styles.base} testID={HEADERBASE_TEST_ID}> + <View + style={[styles.base, includesTopInset && { marginTop: insets.top }]} + testID={HEADERBASE_TEST_ID} + > <View style={styles.accessoryWrapper}> <View onLayout={startAccessoryOnLayout}>{startAccessory}</View> </View> diff --git a/app/component-library/components/HeaderBase/HeaderBase.types.ts b/app/component-library/components/HeaderBase/HeaderBase.types.ts index afff99c5f863..b733c087452c 100644 --- a/app/component-library/components/HeaderBase/HeaderBase.types.ts +++ b/app/component-library/components/HeaderBase/HeaderBase.types.ts @@ -17,6 +17,12 @@ export interface HeaderBaseProps extends ViewProps { * Optional prop to include content to be displayed after the title. */ endAccessory?: React.ReactNode; + /** + * Optional prop to include the top inset to make sure the header is visible + * below device's knob + * @default: false + */ + includesTopInset?: boolean; } /** diff --git a/app/component-library/components/HeaderBase/__snapshots__/HeaderBase.test.tsx.snap b/app/component-library/components/HeaderBase/__snapshots__/HeaderBase.test.tsx.snap index 898e43f05c4f..f08525a62d24 100644 --- a/app/component-library/components/HeaderBase/__snapshots__/HeaderBase.test.tsx.snap +++ b/app/component-library/components/HeaderBase/__snapshots__/HeaderBase.test.tsx.snap @@ -3,10 +3,13 @@ exports[`HeaderBase should render snapshot correctly 1`] = ` <View style={ - { - "backgroundColor": "#ffffff", - "flexDirection": "row", - } + [ + { + "backgroundColor": "#ffffff", + "flexDirection": "row", + }, + false, + ] } testID="header" > diff --git a/app/component-library/components/Navigation/TabBar/TabBar.tsx b/app/component-library/components/Navigation/TabBar/TabBar.tsx index cd0eee06dd67..61b1a4dea7d1 100644 --- a/app/component-library/components/Navigation/TabBar/TabBar.tsx +++ b/app/component-library/components/Navigation/TabBar/TabBar.tsx @@ -11,7 +11,6 @@ import { useStyles } from '../../../hooks'; import Routes from '../../../../constants/navigation/Routes'; import { useTheme } from '../../../../util/theme'; import { MetaMetricsEvents } from '../../../../core/Analytics'; -import { selectChainId } from '../../../../selectors/networkController'; import { getDecimalChainId } from '../../../../util/networks'; import { useMetrics } from '../../../../components/hooks/useMetrics'; @@ -22,6 +21,7 @@ import { ICON_BY_TAB_BAR_ICON_KEY } from './TabBar.constants'; import { colors as importedColors } from '../../../../styles/common'; import { AvatarSize } from '../../Avatars/Avatar'; import OnboardingWizard from '../../../../components/UI/OnboardingWizard'; +import { selectChainId } from '../../../../selectors/networkController'; const TabBar = ({ state, descriptors, navigation }: TabBarProps) => { const { colors } = useTheme(); diff --git a/app/components/Approvals/SnapAccountCustomNameApproval/SnapAccountCustomNameApproval.tsx b/app/components/Approvals/SnapAccountCustomNameApproval/SnapAccountCustomNameApproval.tsx index 4ad320c1be81..27bdc11aa1c9 100644 --- a/app/components/Approvals/SnapAccountCustomNameApproval/SnapAccountCustomNameApproval.tsx +++ b/app/components/Approvals/SnapAccountCustomNameApproval/SnapAccountCustomNameApproval.tsx @@ -30,6 +30,7 @@ import { useSelector } from 'react-redux'; import { selectInternalAccounts } from '../../../selectors/accountsController'; import { KeyringTypes } from '@metamask/keyring-controller'; import Engine from '../../../core/Engine'; +import { getUniqueAccountName } from '../../../core/SnapKeyring/utils/getUniqueAccountName'; const SnapAccountCustomNameApproval = () => { const { approvalRequest, onConfirm, onReject } = useApprovalRequest(); @@ -49,24 +50,9 @@ const SnapAccountCustomNameApproval = () => { internalAccounts.some((account) => account.metadata.name === name); useEffect(() => { - function generateUniqueNameWithSuffix(baseName: string): string { - let suffix = 1; - let candidateName = baseName; - while ( - internalAccounts.some( - // eslint-disable-next-line no-loop-func - (account) => account.metadata.name === candidateName, - ) - ) { - suffix += 1; - candidateName = `${baseName} ${suffix}`; - } - return candidateName; - } - const suggestedName = approvalRequest?.requestData.snapSuggestedAccountName; const initialName = suggestedName - ? generateUniqueNameWithSuffix(suggestedName) + ? getUniqueAccountName(internalAccounts, suggestedName) : Engine.context.AccountsController.getNextAvailableAccountName( KeyringTypes.snap, ); diff --git a/app/components/Base/RemoteImage/__snapshots__/index.test.tsx.snap b/app/components/Base/RemoteImage/__snapshots__/index.test.tsx.snap index e831939fc1b4..5f208674613b 100644 --- a/app/components/Base/RemoteImage/__snapshots__/index.test.tsx.snap +++ b/app/components/Base/RemoteImage/__snapshots__/index.test.tsx.snap @@ -46,3 +46,126 @@ exports[`RemoteImage should render svg correctly 1`] = ` </View> </ComponentErrorBoundary> `; + +exports[`RemoteImage should render with Solana network badge when on Solana network 1`] = ` +<View + useNativeDriver={true} +> + <View + onLoadEnd={[Function]} + > + <View + onLayout={[Function]} + style={ + { + "alignSelf": "flex-start", + "position": "relative", + } + } + testID="badge-wrapper-badge" + > + <View> + <View> + <Image + fadeIn={true} + isTokenImage={true} + onError={[Function]} + resizeMode="cover" + source={ + { + "uri": "ipfs://QmeE94srcYV9WwJb1p42eM4zncdLUai2N9zmMxxukoEQ23", + } + } + style={ + { + "borderRadius": 8, + "height": "100%", + "width": "100%", + } + } + /> + </View> + </View> + <View + style={ + { + "position": "absolute", + "right": -4, + "top": -4, + } + } + > + <View + onLayout={[Function]} + style={{}} + testID="badgenetwork" + > + <View + style={ + { + "alignItems": "center", + "backgroundColor": "#f2f4f6", + "borderColor": "#ffffff", + "borderRadius": 8, + "borderWidth": 1, + "height": 16, + "justifyContent": "center", + "overflow": "hidden", + "shadowColor": "#0000001A", + "shadowOffset": { + "height": 2, + "width": 0, + }, + "shadowOpacity": 1, + "shadowRadius": 4, + "width": 16, + } + } + > + <Text + accessibilityRole="text" + style={ + { + "color": "#141618", + "fontFamily": "EuclidCircularB-Regular", + "fontSize": 10, + "fontWeight": "400", + "letterSpacing": 0, + "lineHeight": undefined, + } + } + > + S + </Text> + </View> + </View> + </View> + </View> + </View> + <View + collapsable={false} + style={ + { + "bottom": 0, + "left": 0, + "opacity": 1, + "position": "absolute", + "right": 0, + "top": 0, + } + } + > + <View + style={ + [ + {}, + { + "backgroundColor": "#eee", + }, + undefined, + ] + } + /> + </View> +</View> +`; diff --git a/app/components/Base/RemoteImage/index.js b/app/components/Base/RemoteImage/index.js index 5c62258dc275..e9730dedb9d1 100644 --- a/app/components/Base/RemoteImage/index.js +++ b/app/components/Base/RemoteImage/index.js @@ -29,6 +29,7 @@ import { getTestNetImageByChainId, isLineaMainnet, isMainNet, + isSolanaMainnet, isTestNet, } from '../../../util/networks'; import images from 'images/image-icons'; @@ -138,6 +139,8 @@ const RemoteImage = (props) => { if (isLineaMainnet(chainId)) return images['LINEA-MAINNET']; + if (isSolanaMainnet(chainId)) return images.SOLANA; + return ticker ? images[ticker] : undefined; }; const isSVG = diff --git a/app/components/Base/RemoteImage/index.test.tsx b/app/components/Base/RemoteImage/index.test.tsx index 4ea9f0beaa0a..0b1a968d0063 100644 --- a/app/components/Base/RemoteImage/index.test.tsx +++ b/app/components/Base/RemoteImage/index.test.tsx @@ -3,12 +3,12 @@ import { shallow } from 'enzyme'; import RemoteImage from './'; import { getFormattedIpfsUrl } from '@metamask/assets-controllers'; import { act, render } from '@testing-library/react-native'; +import { useSelector } from 'react-redux'; +import { backgroundState } from '../../../util/test/initial-root-state'; jest.mock('react-redux', () => ({ ...jest.requireActual('react-redux'), - useSelector: jest - .fn() - .mockImplementation(() => 'https://dweb.link/ipfs/'), + useSelector: jest.fn().mockImplementation(() => 'https://dweb.link/ipfs/'), })); jest.mock('../../../components/hooks/useIpfsGateway', () => jest.fn()); @@ -17,6 +17,11 @@ jest.mock('@metamask/assets-controllers', () => ({ getFormattedIpfsUrl: jest.fn(), })); +jest.mock('../../../util/networks', () => ({ + ...jest.requireActual('../../../util/networks'), + isSolanaMainnet: jest.fn(), +})); + const mockGetFormattedIpfsUrl = getFormattedIpfsUrl as jest.Mock; describe('RemoteImage', () => { @@ -56,4 +61,36 @@ describe('RemoteImage', () => { await act(async () => {}); expect(wrapper).toMatchSnapshot(); }); + + it('should render with Solana network badge when on Solana network', async () => { + // @ts-expect-error - useSelector is mocked in the top of the file + useSelector.mockImplementation((selector) => { + const mockState = { + engine: { + backgroundState: { + ...backgroundState, + MultichainNetworkController: { + ...backgroundState.MultichainNetworkController, + isEvmSelected: false, + }, + }, + }, + }; + return selector(mockState); + }); + + const wrapper = render( + <RemoteImage + fadeIn + isTokenImage + source={{ + uri: 'https://example.com/token.png', + }} + />, + ); + + // eslint-disable-next-line no-empty-function + await act(async () => {}); + expect(wrapper).toMatchSnapshot(); + }); }); diff --git a/app/components/Nav/App/index.js b/app/components/Nav/App/index.js index f6b50e6f1c58..e2a54e4a37e4 100644 --- a/app/components/Nav/App/index.js +++ b/app/components/Nav/App/index.js @@ -144,6 +144,7 @@ import { TraceOperation, } from '../../../util/trace'; import getUIStartupSpan from '../../../core/Performance/UIStartup'; +import { Confirm } from '../../Views/confirmations/Confirm'; const clearStackNavigatorOptions = { headerShown: false, @@ -580,6 +581,24 @@ const ConnectHardwareWalletFlow = () => ( </Stack.Navigator> ); +const ConfirmRequest = () => ( + <Stack.Navigator mode={'modal'}> + <Stack.Screen name={Routes.CONFIRM_FLAT_PAGE} component={Confirm} /> + </Stack.Navigator> +); + +const ConfirmDappRequest = () => ( + <Stack.Navigator + screenOptions={{ + headerShown: false, + cardStyle: { backgroundColor: importedColors.transparent }, + }} + mode={'modal'} + > + <Stack.Screen name={Routes.CONFIRM_MODAL} component={Confirm} /> + </Stack.Navigator> +); + const App = (props) => { const { userLoggedIn } = props; // FIXME: Remove this when the unit tests are resolved for rendering this component. This property is only used by unit tests at the moment. Tests break when this is removed. @@ -1017,6 +1036,14 @@ const App = (props) => { component={LockScreen} options={{ gestureEnabled: false }} /> + <Stack.Screen + name={Routes.CONFIRM_FLAT_PAGE} + component={ConfirmRequest} + /> + <Stack.Screen + name={Routes.CONFIRM_MODAL} + component={ConfirmDappRequest} + /> </Stack.Navigator> </NavigationContainer> <Toast ref={toastRef} /> diff --git a/app/components/Nav/Main/MainNavigator.js b/app/components/Nav/Main/MainNavigator.js index c9ed397b6554..21125cc77b9d 100644 --- a/app/components/Nav/Main/MainNavigator.js +++ b/app/components/Nav/Main/MainNavigator.js @@ -89,6 +89,7 @@ import NftDetailsFullImage from '../../Views/NftDetails/NFtDetailsFullImage'; import AccountPermissions from '../../../components/Views/AccountPermissions'; import { AccountPermissionsScreens } from '../../../components/Views/AccountPermissions/AccountPermissions.types'; import { StakeModalStack, StakeScreenStack } from '../../UI/Stake/routes'; +import BridgeView from '../../UI/Bridge'; const Stack = createStackNavigator(); const Tab = createBottomTabNavigator(); @@ -713,6 +714,16 @@ const Swaps = () => ( </Stack.Navigator> ); +const Bridge = () => ( + <Stack.Navigator> + <Stack.Screen + name="BridgeView" + component={BridgeView} + options={BridgeView.navigationOptions} + /> + </Stack.Navigator> +); + const SetPasswordFlow = () => ( <Stack.Navigator> <Stack.Screen @@ -817,6 +828,7 @@ const MainNavigator = () => ( {() => <RampRoutes rampType={RampType.SELL} />} </Stack.Screen> <Stack.Screen name="Swaps" component={Swaps} /> + <Stack.Screen name="Bridge" component={Bridge} /> <Stack.Screen name="StakeScreens" component={StakeScreenStack} /> <Stack.Screen name="StakeModals" diff --git a/app/components/Nav/Main/RootRPCMethodsUI.js b/app/components/Nav/Main/RootRPCMethodsUI.js index 71d924e92479..344c5a8d3e20 100644 --- a/app/components/Nav/Main/RootRPCMethodsUI.js +++ b/app/components/Nav/Main/RootRPCMethodsUI.js @@ -40,7 +40,7 @@ import { } from '../../../util/address'; import { - selectChainId, + selectEvmChainId, selectProviderType, } from '../../../selectors/networkController'; import WatchAssetApproval from '../../Approvals/WatchAssetApproval'; @@ -62,7 +62,7 @@ import { getDeviceId } from '../../../core/Ledger/Ledger'; import { selectSelectedInternalAccountFormattedAddress } from '../../../selectors/accountsController'; import { createLedgerTransactionModalNavDetails } from '../../UI/LedgerModals/LedgerTransactionModal'; import ExtendedKeyringTypes from '../../../constants/keyringTypes'; -import Confirm from '../../../components/Views/confirmations/Confirm'; +import { ConfirmRoot } from '../../../components/Views/confirmations/Confirm'; import { useMetrics } from '../../../components/hooks/useMetrics'; import { selectShouldUseSmartTransaction } from '../../../selectors/smartTransactionsController'; import { STX_NO_HASH_ERROR } from '../../../util/smart-transactions/smart-publish-hook'; @@ -74,6 +74,7 @@ import { updateSwapsTransaction } from '../../../util/swaps/swaps-transactions'; ///: BEGIN:ONLY_INCLUDE_IF(preinstalled-snaps,external-snaps) import InstallSnapApproval from '../../Approvals/InstallSnapApproval'; import { getGlobalEthQuery } from '../../../util/networks/global-network'; +import SnapDialogApproval from '../../Snaps/SnapDialogApproval/SnapsDialogApproval'; ///: END:ONLY_INCLUDE_IF ///: BEGIN:ONLY_INCLUDE_IF(keyring-snaps) import SnapAccountCustomNameApproval from '../../Approvals/SnapAccountCustomNameApproval'; @@ -335,7 +336,7 @@ const RootRPCMethodsUI = (props) => { transactionId: transactionMeta.id, deviceId, // eslint-disable-next-line no-empty-function - onConfirmationComplete: () => {}, + onConfirmationComplete: () => { }, type: 'signTransaction', }), ); @@ -405,8 +406,7 @@ const RootRPCMethodsUI = (props) => { data && data !== '0x' && to && - (await getMethodData(data, networkClientId)).name === - TOKEN_METHOD_TRANSFER + (await getMethodData(data, networkClientId)).name === TOKEN_METHOD_TRANSFER ) { let asset = props.tokens.find(({ address }) => toLowerCaseEquals(address, to), @@ -516,7 +516,7 @@ const RootRPCMethodsUI = (props) => { return ( <React.Fragment> - <Confirm /> + <ConfirmRoot /> <SignatureApproval /> <WalletConnectApproval /> <TransactionApproval @@ -535,6 +535,7 @@ const RootRPCMethodsUI = (props) => { ///: BEGIN:ONLY_INCLUDE_IF(preinstalled-snaps,external-snaps) } <InstallSnapApproval /> + <SnapDialogApproval /> { ///: END:ONLY_INCLUDE_IF } @@ -582,7 +583,7 @@ RootRPCMethodsUI.propTypes = { const mapStateToProps = (state) => ({ selectedAddress: selectSelectedInternalAccountFormattedAddress(state), - chainId: selectChainId(state), + chainId: selectEvmChainId(state), tokens: selectTokens(state), providerType: selectProviderType(state), shouldUseSmartTransaction: selectShouldUseSmartTransaction(state), diff --git a/app/components/Nav/Main/index.js b/app/components/Nav/Main/index.js index 5d0f6369b0dc..5ea4ec486b5b 100644 --- a/app/components/Nav/Main/index.js +++ b/app/components/Nav/Main/index.js @@ -58,6 +58,7 @@ import { useMinimumVersions } from '../../hooks/MinimumVersions'; import navigateTermsOfUse from '../../../util/termsOfUse/termsOfUse'; import { selectChainId, + selectIsAllNetworks, selectNetworkClientId, selectNetworkConfigurations, selectProviderConfig, @@ -67,7 +68,10 @@ import { selectNetworkName, selectNetworkImageSource, } from '../../../selectors/networkInfos'; -import { selectShowIncomingTransactionNetworks } from '../../../selectors/preferencesController'; +import { + selectShowIncomingTransactionNetworks, + selectTokenNetworkFilter, +} from '../../../selectors/preferencesController'; import useNotificationHandler from '../../../util/notifications/hooks'; import { @@ -83,8 +87,9 @@ import { } from '../../../util/transaction-controller'; import isNetworkUiRedesignEnabled from '../../../util/networks/isNetworkUiRedesignEnabled'; import { useConnectionHandler } from '../../../util/navigation/useConnectionHandler'; -import { AssetPollingProvider } from '../../hooks/AssetPolling/AssetPollingProvider'; import { getGlobalEthQuery } from '../../../util/networks/global-network'; +import { selectIsEvmNetworkSelected } from '../../../selectors/multichainNetworkController'; +import { isPortfolioViewEnabled } from '../../../util/networks'; const Stack = createStackNavigator(); @@ -115,7 +120,7 @@ const Main = (props) => { const { connectionChangeHandler } = useConnectionHandler(props.navigation); const removeNotVisibleNotifications = props.removeNotVisibleNotifications; - useNotificationHandler(props.navigation); + useNotificationHandler(); useEnableAutomaticSecurityChecks(); useMinimumVersions(); @@ -225,18 +230,40 @@ const Main = (props) => { const providerConfig = useSelector(selectProviderConfig); const networkConfigurations = useSelector(selectNetworkConfigurations); const networkName = useSelector(selectNetworkName); + const isEvmSelected = useSelector(selectIsEvmNetworkSelected); const previousProviderConfig = useRef(undefined); const previousNetworkConfigurations = useRef(undefined); const { toastRef } = useContext(ToastContext); const networkImage = useSelector(selectNetworkImageSource); + const isAllNetworks = useSelector(selectIsAllNetworks); + const tokenNetworkFilter = useSelector(selectTokenNetworkFilter); + + const hasNetworkChanged = useCallback( + (chainId, previousConfig, isEvmSelected) => { + if (!previousConfig) return false; + + return isEvmSelected + ? chainId !== previousConfig.chainId || + providerConfig.type !== previousConfig.type + : chainId !== previousConfig.chainId; + }, + [providerConfig.type], + ); + // Show network switch confirmation. useEffect(() => { if ( - previousProviderConfig.current && - (providerConfig.chainId !== previousProviderConfig.current.chainId || - providerConfig.type !== previousProviderConfig.current.type) + hasNetworkChanged(chainId, previousProviderConfig.current, isEvmSelected) ) { + //set here token network filter if portfolio view is enabled + if (isPortfolioViewEnabled()) { + const { PreferencesController } = Engine.context; + PreferencesController.setTokenNetworkFilter({ + ...(isAllNetworks ? tokenNetworkFilter : {}), + [chainId]: true, + }); + } toastRef?.current?.showToast({ variant: ToastVariants.Network, labelOptions: [ @@ -249,8 +276,20 @@ const Main = (props) => { networkImageSource: networkImage, }); } - previousProviderConfig.current = providerConfig; - }, [providerConfig, networkName, networkImage, toastRef]); + previousProviderConfig.current = !isEvmSelected + ? { chainId } + : providerConfig; + }, [ + providerConfig, + networkName, + networkImage, + toastRef, + chainId, + isEvmSelected, + hasNetworkChanged, + isAllNetworks, + tokenNetworkFilter, + ]); // Show add network confirmation. useEffect(() => { @@ -375,37 +414,35 @@ const Main = (props) => { return ( <React.Fragment> - <AssetPollingProvider> - <View style={styles.flex}> - {!forceReload ? ( - <MainNavigator navigation={props.navigation} /> - ) : ( - renderLoader() - )} - <GlobalAlert /> - <FadeOutOverlay /> - <Notification navigation={props.navigation} /> - <RampOrders /> - <SwapsLiveness /> - <BackupAlert - onDismiss={toggleRemindLater} - navigation={props.navigation} - /> - {renderDeprecatedNetworkAlert( - props.chainId, - props.backUpSeedphraseVisible, - )} - <SkipAccountSecurityModal - modalVisible={showRemindLaterModal} - onCancel={skipAccountModalSecureNow} - onConfirm={skipAccountModalSkip} - skipCheckbox={skipCheckbox} - toggleSkipCheckbox={toggleSkipCheckbox} - /> - <ProtectYourWalletModal navigation={props.navigation} /> - <RootRPCMethodsUI navigation={props.navigation} /> - </View> - </AssetPollingProvider> + <View style={styles.flex}> + {!forceReload ? ( + <MainNavigator navigation={props.navigation} /> + ) : ( + renderLoader() + )} + <GlobalAlert /> + <FadeOutOverlay /> + <Notification navigation={props.navigation} /> + <RampOrders /> + <SwapsLiveness /> + <BackupAlert + onDismiss={toggleRemindLater} + navigation={props.navigation} + /> + {renderDeprecatedNetworkAlert( + props.chainId, + props.backUpSeedphraseVisible, + )} + <SkipAccountSecurityModal + modalVisible={showRemindLaterModal} + onCancel={skipAccountModalSecureNow} + onConfirm={skipAccountModalSkip} + skipCheckbox={skipCheckbox} + toggleSkipCheckbox={toggleSkipCheckbox} + /> + <ProtectYourWalletModal navigation={props.navigation} /> + <RootRPCMethodsUI navigation={props.navigation} /> + </View> </React.Fragment> ); }; diff --git a/app/components/Snaps/SnapDialogApproval/SnapDialogApproval.styles.ts b/app/components/Snaps/SnapDialogApproval/SnapDialogApproval.styles.ts new file mode 100644 index 000000000000..0bf09978ee7c --- /dev/null +++ b/app/components/Snaps/SnapDialogApproval/SnapDialogApproval.styles.ts @@ -0,0 +1,34 @@ +import { StyleSheet } from 'react-native'; +import { Theme } from '../../../util/theme/models'; +import Device from '../../../util/device'; + +/** + * + * @param params Style sheet params. + * @param params.theme App theme from ThemeContext. + * @param params.vars Inputs that the style sheet depends on. + * @returns StyleSheet object. + */ +const styleSheet = (params: { theme: Theme }) => { + const { theme } = params; + const { colors } = theme; + return StyleSheet.create({ + root: { + backgroundColor: colors.background.default, + paddingTop: 24, + paddingLeft: 16, + paddingRight: 16, + borderTopLeftRadius: 20, + borderTopRightRadius: 20, + minHeight: 200, + paddingBottom: Device.isIphoneX() ? 20 : 0, + }, + actionContainer: { + flex: 0, + paddingVertical: 16, + justifyContent: 'center', + }, + }); +}; + +export default styleSheet; diff --git a/app/components/Snaps/SnapDialogApproval/SnapDialogApproval.test.tsx b/app/components/Snaps/SnapDialogApproval/SnapDialogApproval.test.tsx new file mode 100644 index 000000000000..734a015cb5c2 --- /dev/null +++ b/app/components/Snaps/SnapDialogApproval/SnapDialogApproval.test.tsx @@ -0,0 +1,120 @@ +import React from 'react'; +import { fireEvent, render } from '@testing-library/react-native'; +import { Provider } from 'react-redux'; +import configureMockStore from 'redux-mock-store'; +import SnapDialogApproval from './index'; +import Engine from '../../../core/Engine'; +import useApprovalRequest from '../../Views/confirmations/hooks/useApprovalRequest'; +import { DIALOG_APPROVAL_TYPES } from '@metamask/snaps-rpc-methods'; + +jest.mock('../SnapUIRenderer/SnapUIRenderer', () => ({ + SnapUIRenderer: () => null, +})); + +jest.mock('../../../core/Engine', () => ({ + acceptPendingApproval: jest.fn(), + context: { + SnapInterfaceController: { + deleteInterface: jest.fn(), + }, + }, +})); + +jest.mock('../../Views/confirmations/hooks/useApprovalRequest'); + +const mockStore = configureMockStore(); +const store = mockStore({}); + +const renderComponent = (component: React.ReactElement) => + render(<Provider store={store}>{component}</Provider>); + +describe('SnapDialogApproval', () => { + beforeEach(() => { + jest.clearAllMocks(); + }); + + const mockApprovalRequest = (type: string) => ({ + id: 'test-id', + type, + origin: 'test-snap-id', + requestData: { + id: 'test-interface-id', + }, + }); + + describe('Alert Dialog', () => { + beforeEach(() => { + (useApprovalRequest as jest.Mock).mockReturnValue({ + approvalRequest: mockApprovalRequest(DIALOG_APPROVAL_TYPES.alert), + }); + }); + + it('render alert dialog with OK button', () => { + const { getByText } = renderComponent(<SnapDialogApproval />); + expect(getByText('OK')).toBeTruthy(); + }); + + it('handle OK button press', async () => { + const { getByText } = renderComponent(<SnapDialogApproval />); + await fireEvent.press(getByText('OK')); + + expect(Engine.acceptPendingApproval).toHaveBeenCalledWith( + 'test-id', + null, + ); + expect( + Engine.context.SnapInterfaceController.deleteInterface, + ).toHaveBeenCalledWith('test-id'); + }); + }); + + describe('Default Dialog', () => { + beforeEach(() => { + (useApprovalRequest as jest.Mock).mockReturnValue({ + approvalRequest: mockApprovalRequest(DIALOG_APPROVAL_TYPES.default), + }); + }); + + it('render default dialog without buttons', () => { + const { queryByText } = renderComponent(<SnapDialogApproval />); + expect(queryByText('OK')).toBeNull(); + expect(queryByText('Cancel')).toBeNull(); + }); + }); + + describe('Invalid Dialog Type', () => { + it('return null for invalid dialog type', () => { + (useApprovalRequest as jest.Mock).mockReturnValue({ + approvalRequest: mockApprovalRequest('invalid_type'), + }); + + const { queryByTestId } = renderComponent(<SnapDialogApproval />); + expect(queryByTestId('snap-dialog-approval')).toBeNull(); + }); + }); + + describe('Loading State', () => { + it('handle loading state during cancel operation', async () => { + (useApprovalRequest as jest.Mock).mockReturnValue({ + approvalRequest: mockApprovalRequest(DIALOG_APPROVAL_TYPES.alert), + }); + + const { getByText } = renderComponent(<SnapDialogApproval />); + const okButton = getByText('OK'); + + await fireEvent.press(okButton); + expect(Engine.acceptPendingApproval).toHaveBeenCalledTimes(1); + }); + }); + + describe('No Approval Request', () => { + it('handle undefined approval request', () => { + (useApprovalRequest as jest.Mock).mockReturnValue({ + approvalRequest: undefined, + }); + + const { queryByTestId } = renderComponent(<SnapDialogApproval />); + expect(queryByTestId('snap-dialog-approval')).toBeNull(); + }); + }); +}); diff --git a/app/components/Snaps/SnapDialogApproval/SnapsDialogApproval.tsx b/app/components/Snaps/SnapDialogApproval/SnapsDialogApproval.tsx new file mode 100644 index 000000000000..922bee393f0a --- /dev/null +++ b/app/components/Snaps/SnapDialogApproval/SnapsDialogApproval.tsx @@ -0,0 +1,142 @@ +///: BEGIN:ONLY_INCLUDE_IF(preinstalled-snaps) +import React, { useState } from 'react'; +import { View } from 'react-native'; +import { useStyles } from '../../hooks/useStyles'; +import { strings } from '../../../../locales/i18n'; +import stylesheet from './SnapDialogApproval.styles'; +import useApprovalRequest from '../../Views/confirmations/hooks/useApprovalRequest'; +import ApprovalModal from '../../Approvals/ApprovalModal'; +import BottomSheetFooter, { + ButtonsAlignment, +} from '../../../component-library/components/BottomSheets/BottomSheetFooter'; +import { + ButtonVariants, + ButtonSize, +} from '../../../component-library/components/Buttons/Button'; +import Engine from '../../../core/Engine'; +import { SnapUIRenderer } from '../SnapUIRenderer/SnapUIRenderer'; +import { Json } from '@metamask/snaps-sdk'; +import { DIALOG_APPROVAL_TYPES } from '@metamask/snaps-rpc-methods'; + +export enum TemplateConfirmation { + Ok = 'template_confirmation.ok', + CANCEL = 'template_confirmation.cancel', +} + +const SnapDialogApproval = () => { + const [isLoading, setIsLoading] = useState(false); + const { approvalRequest } = useApprovalRequest(); + const { styles } = useStyles(stylesheet, {}); + + const onCancel = async () => { + if (!approvalRequest) return; + await Engine.acceptPendingApproval( + approvalRequest.id, + null as unknown as Record<string, Json>, + ); + await Engine.context.SnapInterfaceController.deleteInterface( + approvalRequest.id, + ); + }; + + const onConfirm = async () => { + setIsLoading(true); + if (!approvalRequest) return; + await Engine.acceptPendingApproval( + approvalRequest.id, + true as unknown as Record<string, Json>, + ); + await Engine.context.SnapInterfaceController.deleteInterface( + approvalRequest.id, + ); + + setIsLoading(false); + }; + + const onReject = async () => { + if (!approvalRequest) return; + + await Engine.acceptPendingApproval( + approvalRequest.id, + false as unknown as Record<string, Json>, + ); + await Engine.context.SnapInterfaceController.deleteInterface( + approvalRequest.id, + ); + }; + + if ( + approvalRequest?.type !== DIALOG_APPROVAL_TYPES.alert && + approvalRequest?.type !== DIALOG_APPROVAL_TYPES.confirmation && + approvalRequest?.type !== DIALOG_APPROVAL_TYPES.default + ) + return null; + + const getDialogButtons = (type: string | undefined) => { + switch (type) { + case DIALOG_APPROVAL_TYPES.alert: + return [ + { + variant: ButtonVariants.Primary, + label: strings(TemplateConfirmation.Ok), + size: ButtonSize.Lg, + onPress: onCancel, + }, + ]; + + case DIALOG_APPROVAL_TYPES.confirmation: + return [ + { + variant: ButtonVariants.Secondary, + label: strings(TemplateConfirmation.CANCEL), + size: ButtonSize.Lg, + onPress: onReject, + }, + { + variant: ButtonVariants.Primary, + label: strings('transactions.approve'), + size: ButtonSize.Lg, + onPress: onConfirm, + }, + ]; + default: + return []; + } + }; + + const buttons = getDialogButtons(approvalRequest?.type); + const snapId = approvalRequest?.origin; + const interfaceId = approvalRequest?.requestData?.id; + + return ( + <ApprovalModal + isVisible={ + approvalRequest?.type === DIALOG_APPROVAL_TYPES.alert || + approvalRequest?.type === DIALOG_APPROVAL_TYPES.confirmation || + approvalRequest?.type === DIALOG_APPROVAL_TYPES.default + } + onCancel={onCancel} + > + <View style={styles.root}> + <SnapUIRenderer + snapId={snapId} + interfaceId={interfaceId} + isLoading={isLoading} + onCancel={onCancel} + useFooter={approvalRequest?.type === DIALOG_APPROVAL_TYPES.default} + /> + {approvalRequest?.type !== DIALOG_APPROVAL_TYPES.default && ( + <View style={styles.actionContainer}> + <BottomSheetFooter + buttonsAlignment={ButtonsAlignment.Horizontal} + buttonPropsArray={buttons} + /> + </View> + )} + </View> + </ApprovalModal> + ); +}; + +export default SnapDialogApproval; +///: END:ONLY_INCLUDE_IF diff --git a/app/components/Snaps/SnapDialogApproval/index.ts b/app/components/Snaps/SnapDialogApproval/index.ts new file mode 100644 index 000000000000..1f7878dc1fb1 --- /dev/null +++ b/app/components/Snaps/SnapDialogApproval/index.ts @@ -0,0 +1,3 @@ +///: BEGIN:ONLY_INCLUDE_IF(preinstalled-snaps) +export { default } from './SnapsDialogApproval'; +///: END:ONLY_INCLUDE_IF diff --git a/app/components/Snaps/SnapIcon/SnapIcon.tsx b/app/components/Snaps/SnapIcon/SnapIcon.tsx new file mode 100644 index 000000000000..d574d8d04d53 --- /dev/null +++ b/app/components/Snaps/SnapIcon/SnapIcon.tsx @@ -0,0 +1,67 @@ +import React, { FunctionComponent } from 'react'; +import { useSelector } from 'react-redux'; +import { IconSize } from '../../../component-library/components/Icons/Icon'; +import { getAvatarFallbackLetter } from '../SnapUIRenderer/utils'; +import AvatarBase from '../../../component-library/components/Avatars/Avatar/foundation/AvatarBase'; +import AvatarFavicon from '../../../component-library/components/Avatars/Avatar/variants/AvatarFavicon'; +import { AvatarSize } from '../../../component-library/components/Avatars/Avatar/Avatar.types'; +import Text from '../../../component-library/components/Texts/Text'; +import { RootState } from '../../../reducers'; +import { selectTargetSubjectMetadata } from '../../../selectors/snaps/permissionController'; +import { StyleSheet } from 'react-native'; +import { + BackgroundColor, + JustifyContent, + AlignItems, +} from '../../UI/Box/box.types'; + +const styles = StyleSheet.create({ + icon: { + borderRadius: 50, + borderWidth: 0, + width: 24, + height: 24, + alignItems: AlignItems.center, + justifyContent: JustifyContent.center, + }, +}); + +interface SnapIconProps { + snapId: string; + avatarSize?: IconSize; + borderWidth?: number; + className?: string; + badgeBackgroundColor?: BackgroundColor; +} + +export const SnapIcon: FunctionComponent<SnapIconProps> = ({ + snapId, + avatarSize = IconSize.Lg, + ...props +}) => { + const subjectMetadata = useSelector((state: RootState) => + selectTargetSubjectMetadata(state, snapId), + ); + + const iconUrl = subjectMetadata.iconUrl; + const snapName = subjectMetadata.name ?? undefined; + + // We choose the first non-symbol char as the fallback icon. + const fallbackIcon = getAvatarFallbackLetter(snapName); + + return iconUrl ? ( + <AvatarFavicon + {...props} + imageSource={{ uri: iconUrl }} + size={avatarSize as unknown as AvatarSize} + /> + ) : ( + <AvatarBase + style={styles.icon} + {...props} + size={avatarSize as unknown as AvatarSize} + > + <Text>{fallbackIcon}</Text> + </AvatarBase> + ); +}; diff --git a/app/components/Snaps/SnapInterfaceContext.test.tsx b/app/components/Snaps/SnapInterfaceContext.test.tsx new file mode 100644 index 000000000000..0aaae1173adf --- /dev/null +++ b/app/components/Snaps/SnapInterfaceContext.test.tsx @@ -0,0 +1,214 @@ +import { renderHook, act } from '@testing-library/react-hooks'; +import React from 'react'; +import { UserInputEventType } from '@metamask/snaps-sdk'; +import { HandlerType } from '@metamask/snaps-utils'; +import { + SnapInterfaceContextProvider, + useSnapInterfaceContext, +} from './SnapInterfaceContext'; +import { mergeValue } from '../Snaps/SnapUIRenderer/utils'; +import { handleSnapRequest } from '../../core/Snaps/utils'; +import Engine from '../../core/Engine/Engine'; + +// Mock setup +jest.mock('../../core/Engine/Engine', () => ({ + controllerMessenger: {}, + context: { + SnapInterfaceController: { + updateInterfaceState: jest.fn(), + }, + }, +})); +jest.mock('../../core/Snaps/utils'); +jest.mock('../Snaps/SnapUIRenderer/utils'); + +describe('SnapInterfaceContext', () => { + const mockInitialState = { + testInput: 'initial value', + testForm: { + formField: 'form value', + }, + }; + + const mockContext = {}; + const mockInterfaceId = 'test-interface'; + const mockSnapId = 'test-snap'; + + const wrapper = ({ children }: { children: React.ReactNode }) => ( + <SnapInterfaceContextProvider + interfaceId={mockInterfaceId} + snapId={mockSnapId} + initialState={mockInitialState} + context={mockContext} + > + {children} + </SnapInterfaceContextProvider> + ); + + beforeEach(() => { + jest.clearAllMocks(); + (mergeValue as jest.Mock).mockImplementation((state, name, value, form) => { + if (form) { + return { + ...state, + [form]: { + ...(state[form] || {}), + [name]: value, + }, + }; + } + return { + ...state, + [name]: value, + }; + }); + }); + + describe('useSnapInterfaceContext', () => { + it('provides context with all required methods and values', () => { + const { result } = renderHook(() => useSnapInterfaceContext(), { + wrapper, + }); + + expect(result.current).toEqual( + expect.objectContaining({ + handleEvent: expect.any(Function), + getValue: expect.any(Function), + handleInputChange: expect.any(Function), + setCurrentFocusedInput: expect.any(Function), + focusedInput: null, + snapId: mockSnapId, + }), + ); + }); + + it('handles input focus state', () => { + const { result, rerender } = renderHook(() => useSnapInterfaceContext(), { + wrapper, + }); + + act(() => { + result.current.setCurrentFocusedInput('testInput'); + }); + + rerender(); + + expect(result.current.focusedInput).toBe('testInput'); + }); + + it('handles getValue correctly', () => { + const { result } = renderHook(() => useSnapInterfaceContext(), { + wrapper, + }); + + expect(result.current.getValue('testInput')).toBe('initial value'); + expect(result.current.getValue('formField', 'testForm')).toBe( + 'form value', + ); + expect(result.current.getValue('nonexistent')).toBeUndefined(); + }); + + describe('handleEvent', () => { + it('handles button click events', () => { + const { result } = renderHook(() => useSnapInterfaceContext(), { + wrapper, + }); + + act(() => { + result.current.handleEvent({ + event: UserInputEventType.ButtonClickEvent, + name: 'testButton', + }); + }); + + expect(handleSnapRequest).toHaveBeenCalledWith( + expect.anything(), + expect.objectContaining({ + snapId: mockSnapId, + handler: HandlerType.OnUserInput, + request: expect.objectContaining({ + params: expect.objectContaining({ + event: { + type: UserInputEventType.ButtonClickEvent, + name: 'testButton', + }, + }), + }), + }), + ); + }); + + it('handles input change events', () => { + const { result } = renderHook(() => useSnapInterfaceContext(), { + wrapper, + }); + + act(() => { + result.current.handleInputChange('testInput', 'new value'); + }); + + expect( + Engine.context.SnapInterfaceController.updateInterfaceState, + ).toHaveBeenCalled(); + expect(handleSnapRequest).toHaveBeenCalledWith( + expect.anything(), + expect.objectContaining({ + snapId: mockSnapId, + handler: HandlerType.OnUserInput, + request: expect.objectContaining({ + params: expect.objectContaining({ + event: { + type: UserInputEventType.InputChangeEvent, + name: 'testInput', + value: 'new value', + }, + }), + }), + }), + ); + }); + }); + + describe('handleInputChange', () => { + it('updates form field state correctly', () => { + const { result } = renderHook(() => useSnapInterfaceContext(), { + wrapper, + }); + + act(() => { + result.current.handleInputChange('newField', 'new value', 'testForm'); + }); + + expect( + Engine.context.SnapInterfaceController.updateInterfaceState, + ).toHaveBeenCalledWith( + mockInterfaceId, + expect.objectContaining({ + testForm: expect.objectContaining({ + newField: 'new value', + }), + }), + ); + }); + + it('handles null values', () => { + const { result } = renderHook(() => useSnapInterfaceContext(), { + wrapper, + }); + + act(() => { + result.current.handleInputChange('testInput', null); + }); + + expect( + Engine.context.SnapInterfaceController.updateInterfaceState, + ).toHaveBeenCalledWith( + mockInterfaceId, + expect.objectContaining({ + testInput: null, + }), + ); + }); + }); + }); +}); diff --git a/app/components/Snaps/SnapInterfaceContext.tsx b/app/components/Snaps/SnapInterfaceContext.tsx new file mode 100644 index 000000000000..4d4793a896f0 --- /dev/null +++ b/app/components/Snaps/SnapInterfaceContext.tsx @@ -0,0 +1,197 @@ +import { + FormState, + InterfaceState, + SnapId, + State, + UserInputEventType, +} from '@metamask/snaps-sdk'; +import { Json } from '@metamask/utils'; +import React, { + FunctionComponent, + createContext, + useContext, + useEffect, + useRef, +} from 'react'; +import { mergeValue } from './SnapUIRenderer/utils'; +import Engine from '../../core/Engine/Engine'; +import { HandlerType } from '@metamask/snaps-utils'; +import { handleSnapRequest } from '../../core/Snaps/utils'; + +export type HandleEvent = <Type extends State>(args: { + event: UserInputEventType; + name?: string; + value?: Type | null; +}) => void; + +export type HandleInputChange = <Type extends State>( + name: string, + value: Type | null, + form?: string, +) => void; + +export type GetValue = (name: string, form?: string) => State | undefined; + +export type SetCurrentInputFocus = (name: string | null) => void; + +export interface SnapInterfaceContextType { + handleEvent: HandleEvent; + getValue: GetValue; + handleInputChange: HandleInputChange; + setCurrentFocusedInput: SetCurrentInputFocus; + focusedInput: string | null; + snapId: string; +} + +export const SnapInterfaceContext = + createContext<SnapInterfaceContextType | null>(null); + +export interface SnapInterfaceContextProviderProps { + interfaceId: string; + snapId: string; + initialState: InterfaceState; + context: Json; +} +/** + * The Snap interface context provider that handles all the interface state operations. + * + * @param params - The context provider params. + * @param params.children - The childrens to wrap with the context provider. + * @param params.interfaceId - The interface ID to use. + * @param params.snapId - The Snap ID that requested the interface. + * @param params.initialState - The initial state of the interface. + * @param params.context - The context blob of the interface. + * @returns The context provider. + */ +export const SnapInterfaceContextProvider: FunctionComponent< + SnapInterfaceContextProviderProps +> = ({ children, interfaceId, snapId, initialState, context }) => { + // We keep an internal copy of the state to speed up the state update in the + // UI. It's kept in a ref to avoid useless re-rendering of the entire tree of + // components. + const internalState = useRef<InterfaceState>(initialState ?? {}); + const focusedInput = useRef<string | null>(null); + + // Since the internal state is kept in a reference, it won't update when the + // interface is updated. We have to manually update it. + useEffect(() => { + internalState.current = initialState; + }, [initialState]); + + const controllerMessenger = Engine.controllerMessenger; + + const rawSnapRequestFunction = ( + event: UserInputEventType, + name?: string, + value?: unknown, + ) => { + handleSnapRequest(controllerMessenger, { + snapId: snapId as SnapId, + origin: '', + handler: HandlerType.OnUserInput, + request: { + jsonrpc: '2.0', + method: ' ', + params: { + event: { + type: event, + ...(name !== undefined && name !== null ? { name } : {}), + ...(value !== undefined && value !== null ? { value } : {}), + }, + id: interfaceId, + context, + }, + }, + }); + }; + + const updateState = (state: InterfaceState) => + Engine.context.SnapInterfaceController.updateInterfaceState( + interfaceId, + state, + ); + /** + * Handle the submission of an user input event to the Snap. + * + * @param options - An options bag. + * @param options.event - The event type. + * @param options.name - The name of the component emitting the event. + * @param options.value - The value of the component emitting the event. + */ + const handleEvent: HandleEvent = ({ + event, + name, + value = name ? internalState.current[name] : undefined, + }) => rawSnapRequestFunction(event, name, value); + + const submitInputChange = (name: string, value: State | null) => + handleEvent({ + event: UserInputEventType.InputChangeEvent, + name, + value, + }); + + /** + * Handle the value change of an input. + * + * @param name - The name of the input. + * @param value - The new value. + * @param form - The name of the form containing the input. + * Optional if the input is not contained in a form. + */ + const handleInputChange: HandleInputChange = (name, value, form) => { + const state = mergeValue(internalState.current, name, value, form); + + internalState.current = state; + updateState(state); + submitInputChange(name, value); + }; + + /** + * Get the value of an input from the interface state. + * + * @param name - The name of the input. + * @param form - The name of the form containing the input. + * Optional if the input is not contained in a form. + * @returns The value of the input or undefined if the input has no value. + */ + const getValue: GetValue = (name, form) => { + const value = form + ? (initialState[form] as FormState)?.[name] + : (initialState as FormState)?.[name]; + + if (value !== undefined && value !== null) { + return value; + } + + return undefined; + }; + + const setCurrentFocusedInput: SetCurrentInputFocus = (name) => { + focusedInput.current = name; + }; + + return ( + <SnapInterfaceContext.Provider + value={{ + handleEvent, + getValue, + handleInputChange, + setCurrentFocusedInput, + focusedInput: focusedInput.current, + snapId, + }} + > + {children} + </SnapInterfaceContext.Provider> + ); +}; + +/** + * The utility hook to consume the Snap inteface context. + * + * @returns The snap interface context. + */ +export function useSnapInterfaceContext() { + return useContext(SnapInterfaceContext) as SnapInterfaceContextType; +} diff --git a/app/components/Snaps/SnapUIBanner/SnapUIBanner.tsx b/app/components/Snaps/SnapUIBanner/SnapUIBanner.tsx new file mode 100644 index 000000000000..3d231cc4e451 --- /dev/null +++ b/app/components/Snaps/SnapUIBanner/SnapUIBanner.tsx @@ -0,0 +1,20 @@ +import React, { FunctionComponent } from 'react'; +import Banner, { + BannerAlertSeverity, + BannerVariant, +} from '../../../component-library/components/Banners/Banner'; + +export interface SnapUIBannerProps { + severity: BannerAlertSeverity | undefined; + title: string; +} + +export const SnapUIBanner: FunctionComponent<SnapUIBannerProps> = ({ + children, + severity, + title, +}) => ( + <Banner severity={severity} title={title} variant={BannerVariant.Alert}> + {children} + </Banner> +); diff --git a/app/components/Snaps/SnapUIButton/SnapUIButton.tsx b/app/components/Snaps/SnapUIButton/SnapUIButton.tsx new file mode 100644 index 000000000000..734cb9904eb7 --- /dev/null +++ b/app/components/Snaps/SnapUIButton/SnapUIButton.tsx @@ -0,0 +1,83 @@ +import React, { FunctionComponent } from 'react'; +import { ButtonType, UserInputEventType } from '@metamask/snaps-sdk'; +import ButtonLink from '../../../component-library/components/Buttons/Button/variants/ButtonLink'; +import { ButtonLinkProps } from '../../../component-library/components/Buttons/Button/variants/ButtonLink/ButtonLink.types'; +import { useSnapInterfaceContext } from '../SnapInterfaceContext'; +import Icon, { + IconName, +} from '../../../component-library/components/Icons/Icon'; +import Text, { + TextColor, + TextVariant, +} from '../../../component-library/components/Texts/Text'; + +export interface SnapUIButtonProps { + name?: string; + loading?: boolean; + type?: ButtonType; + form?: string; + variant: keyof typeof COLORS; + textVariant?: TextVariant; +} + +const COLORS = { + primary: TextColor.Info, + destructive: TextColor.Error, + disabled: TextColor.Muted, +}; + +export const SnapUIButton: FunctionComponent< + SnapUIButtonProps & ButtonLinkProps +> = ({ + name, + children, + form, + type = ButtonType.Button, + variant = 'primary', + disabled = false, + loading = false, + textVariant, + ...props +}) => { + const { handleEvent } = useSnapInterfaceContext(); + + const handlePress = () => { + handleEvent({ + event: UserInputEventType.ButtonClickEvent, + name, + }); + + // Since we don't have onSubmit on mobile, the button submits the form. + if (type === ButtonType.Submit) { + handleEvent({ + event: UserInputEventType.FormSubmitEvent, + name: form, + }); + } + }; + + const overriddenVariant = disabled ? 'disabled' : variant; + + const color = COLORS[overriddenVariant as keyof typeof COLORS]; + + return ( + <ButtonLink + {...props} + id={name} + onPress={handlePress} + disabled={disabled} + label={ + loading ? ( + <Icon + // TODO: Animate this icon. + name={IconName.Loading} + /> + ) : ( + <Text color={color} variant={textVariant}> + {children} + </Text> + ) + } + /> + ); +}; diff --git a/app/components/Snaps/SnapUICard/SnapUICard.tsx b/app/components/Snaps/SnapUICard/SnapUICard.tsx new file mode 100644 index 000000000000..b4b552fa51b2 --- /dev/null +++ b/app/components/Snaps/SnapUICard/SnapUICard.tsx @@ -0,0 +1,66 @@ +import React, { FunctionComponent, ReactNode } from 'react'; +import { Box } from '../../UI/Box/Box'; +import Text, { + TextColor, + TextVariant, +} from '../../../component-library/components/Texts/Text'; +import { SnapUIImage } from '../../UI/Snaps/SnapUIImage/SnapUIImage'; +import { + FlexDirection, + TextAlign, + JustifyContent, + AlignItems, +} from '../../UI/Box/box.types'; + +interface SnapUICardProps { + image?: string | undefined; + title: string | ReactNode; + description?: string | undefined; + value: string; + extra?: string | undefined; +} + +export const SnapUICard: FunctionComponent<SnapUICardProps> = ({ + image, + title, + description, + value, + extra, +}) => ( + <Box + testID="snaps-ui-card" + flexDirection={FlexDirection.Row} + justifyContent={JustifyContent.spaceBetween} + alignItems={AlignItems.center} + > + <Box + gap={16} + flexDirection={FlexDirection.Row} + alignItems={AlignItems.center} + > + {image && ( + <SnapUIImage width={32} height={32} borderRadius={999} value={image} /> + )} + <Box flexDirection={FlexDirection.Column}> + <Text variant={TextVariant.BodyMDMedium} ellipsizeMode="tail"> + {title} + </Text> + {description && ( + <Text color={TextColor.Alternative} ellipsizeMode="tail"> + {description} + </Text> + )} + </Box> + </Box> + <Box flexDirection={FlexDirection.Column} textAlign={TextAlign.right}> + <Text variant={TextVariant.BodyMDMedium} ellipsizeMode="tail"> + {value} + </Text> + {extra && ( + <Text color={TextColor.Alternative} ellipsizeMode="tail"> + {extra} + </Text> + )} + </Box> + </Box> +); diff --git a/app/components/Snaps/SnapUICheckbox/SnapUICheckbox.tsx b/app/components/Snaps/SnapUICheckbox/SnapUICheckbox.tsx new file mode 100644 index 000000000000..141d683cd05a --- /dev/null +++ b/app/components/Snaps/SnapUICheckbox/SnapUICheckbox.tsx @@ -0,0 +1,69 @@ +import React, { FunctionComponent, useEffect, useState } from 'react'; +import { useSnapInterfaceContext } from '../SnapInterfaceContext'; +import { BorderColor, FlexDirection } from '../../UI/Box/box.types'; +import Checkbox from '../../../component-library/components/Checkbox/Checkbox'; +import { HelpTextSeverity } from '../../../component-library/components/Form/HelpText/HelpText.types'; +import HelpText from '../../../component-library/components/Form/HelpText'; +import Label from '../../../component-library/components/Form/Label'; +import { Box } from '../../UI/Box/Box'; + +export interface SnapUICheckboxProps { + name: string; + fieldLabel?: string; + // This variant is ignored on mobile. + variant?: 'default' | 'toggle'; + label?: string; + error?: string; + form?: string; + disabled?: boolean; +} + +export const SnapUICheckbox: FunctionComponent<SnapUICheckboxProps> = ({ + name, + variant, + fieldLabel, + label, + error, + form, + disabled, + ...props +}) => { + const { handleInputChange, getValue } = useSnapInterfaceContext(); + + const initialValue = getValue(name, form) as boolean; + + const [value, setValue] = useState(initialValue ?? false); + + useEffect(() => { + if (initialValue !== undefined && initialValue !== null) { + setValue(initialValue); + } + }, [initialValue]); + + const handleChange = () => { + setValue(!value); + handleInputChange(name, !value, form); + }; + + return ( + <Box flexDirection={FlexDirection.Column}> + {fieldLabel && <Label>{fieldLabel}</Label>} + <Checkbox + onPress={handleChange} + isChecked={value} + label={label} + checkboxStyle={{ + borderColor: BorderColor.borderMuted, + }} + isDisabled={disabled} + {...props} + /> + {error && ( + // eslint-disable-next-line react-native/no-inline-styles + <HelpText severity={HelpTextSeverity.Error} style={{ marginTop: 4 }}> + {error} + </HelpText> + )} + </Box> + ); +}; diff --git a/app/components/Snaps/SnapUIFooterButton/SnapUIFooterButton.test.tsx b/app/components/Snaps/SnapUIFooterButton/SnapUIFooterButton.test.tsx new file mode 100644 index 000000000000..cb7e9257961e --- /dev/null +++ b/app/components/Snaps/SnapUIFooterButton/SnapUIFooterButton.test.tsx @@ -0,0 +1,70 @@ +import React from 'react'; +import { ButtonType } from '@metamask/snaps-sdk'; +import { render, screen } from '@testing-library/react-native'; +import { ButtonVariants } from '../../../component-library/components/Buttons/Button/Button.types'; +import { SnapUIFooterButton } from './SnapUIFooterButton'; + +const mockHandleEvent = jest.fn(); +jest.mock('../SnapInterfaceContext', () => ({ + useSnapInterfaceContext: () => ({ + snapId: 'mock-snap-id', + handleEvent: mockHandleEvent, + }), +})); + +const mockUseSelector = jest.fn(); +jest.mock('react-redux', () => ({ + // eslint-disable-next-line @typescript-eslint/no-explicit-any + useSelector: (selector: any) => mockUseSelector(selector), +})); + +describe('SnapUIFooterButton', () => { + beforeEach(() => { + mockHandleEvent.mockClear(); + mockUseSelector.mockReturnValue({ + 'mock-snap-id': { + id: 'mock-snap-id', + hideSnapBranding: false, + }, + }); + }); + + const defaultProps = { + children: 'Test Button', + type: ButtonType.Submit, + snapVariant: 'primary' as const, + onPress: jest.fn(), + variant: ButtonVariants.Primary, + accessibilityLabel: 'Test Button', + }; + + it('renders button with snap branding when isSnapAction is true', () => { + render(<SnapUIFooterButton {...defaultProps} isSnapAction />); + expect(screen.getByText('Test Button')).toBeTruthy(); + expect(screen.getByText('?')).toBeTruthy(); + }); + + it('renders button without snap branding when hideSnapBranding is true', () => { + mockUseSelector.mockReturnValue({ + 'mock-snap-id': { + id: 'mock-snap-id', + hideSnapBranding: true, + }, + }); + render(<SnapUIFooterButton {...defaultProps} isSnapAction />); + expect(screen.getByText('Test Button')).toBeTruthy(); + expect(screen.queryByText('?')).toBeNull(); + }); + + it('shows loading state', () => { + render(<SnapUIFooterButton {...defaultProps} loading />); + const button = screen.getByRole('button', { name: 'Test Button' }); + expect(button.findByType('ActivityIndicator')).toBeTruthy(); + }); + + it('applies correct variant based on disabled state', () => { + render(<SnapUIFooterButton {...defaultProps} disabled />); + const button = screen.getByRole('button', { name: 'Test Button' }); + expect(button.props.disabled).toBe(true); + }); +}); diff --git a/app/components/Snaps/SnapUIFooterButton/SnapUIFooterButton.tsx b/app/components/Snaps/SnapUIFooterButton/SnapUIFooterButton.tsx new file mode 100644 index 000000000000..dec917de79a4 --- /dev/null +++ b/app/components/Snaps/SnapUIFooterButton/SnapUIFooterButton.tsx @@ -0,0 +1,125 @@ +import React, { FunctionComponent } from 'react'; +import { ButtonType, SnapId, UserInputEventType } from '@metamask/snaps-sdk'; +import { useSnapInterfaceContext } from '../SnapInterfaceContext'; +import { IconSize } from '../../../component-library/components/Icons/Icon'; +import { + ButtonSize, + ButtonVariants, +} from '../../../component-library/components/Buttons/Button/Button.types'; +import { ActivityIndicator, StyleSheet, View } from 'react-native'; +import { SnapIcon } from '../SnapIcon/SnapIcon'; +import Text from '../../../component-library/components/Texts/Text'; +import { useSelector } from 'react-redux'; +import { selectSnaps } from '../../../selectors/snaps/snapController'; +import { + DEFAULT_BUTTONPRIMARY_LABEL_COLOR, + DEFAULT_BUTTONPRIMARY_LABEL_TEXTVARIANT, +} from '../../../component-library/components/Buttons/Button/variants/ButtonPrimary/ButtonPrimary.constants'; +import { + FlexDirection, + JustifyContent, + AlignItems, +} from '../../UI/Box/box.types'; +import { DEFAULT_BOTTOMSHEETFOOTER_BUTTONSALIGNMENT } from '../../../component-library/components/BottomSheets/BottomSheetFooter/BottomSheetFooter.constants'; +import Button from '../../../component-library/components/Buttons/Button'; +import { useStyles } from '../../../component-library/hooks'; +import styleSheet from '../../../component-library/components/BottomSheets/BottomSheetFooter/BottomSheetFooter.styles'; +import { ButtonProps } from '@metamask/snaps-sdk/jsx'; + +const localStyles = StyleSheet.create({ + snapActionContainer: { + flexDirection: FlexDirection.Row, + alignItems: AlignItems.center, + justifyContent: JustifyContent.center, + gap: 4, + }, +}); + +interface SnapUIFooterButtonProps { + name?: string; + variant?: ButtonVariants; + isSnapAction?: boolean; + onCancel?: () => void; + type: ButtonType; + snapVariant: ButtonProps['variant']; + disabled?: boolean; + loading?: boolean; +} + +export const SnapUIFooterButton: FunctionComponent<SnapUIFooterButtonProps> = ({ + onCancel, + name, + children, + disabled = false, + loading = false, + isSnapAction = false, + variant = ButtonVariants.Primary, + snapVariant, + ...props +}) => { + const { handleEvent, snapId } = useSnapInterfaceContext(); + const snaps = useSelector(selectSnaps); + const snapMetadata = snaps[snapId as SnapId]; + + const { styles } = useStyles(styleSheet, { + buttonsAlignment: DEFAULT_BOTTOMSHEETFOOTER_BUTTONSALIGNMENT, + }); + + const handleSnapAction = () => { + handleEvent({ + event: UserInputEventType.ButtonClickEvent, + name, + }); + }; + + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + const handlePress = isSnapAction ? handleSnapAction : onCancel!; + + const hideSnapBranding = snapMetadata.hideSnapBranding; + + const brandedButtonVariant = isSnapAction + ? ButtonVariants.Primary + : ButtonVariants.Secondary; + + const buttonVariant = hideSnapBranding ? variant : brandedButtonVariant; + + const buttonLabel = () => { + if (loading) { + return ( + <ActivityIndicator + size="small" + color={DEFAULT_BUTTONPRIMARY_LABEL_COLOR} + /> + ); + } else if (isSnapAction && !hideSnapBranding) { + return ( + <View style={localStyles.snapActionContainer}> + <SnapIcon snapId={snapId} avatarSize={IconSize.Sm} /> + <Text + variant={DEFAULT_BUTTONPRIMARY_LABEL_TEXTVARIANT} + color={DEFAULT_BUTTONPRIMARY_LABEL_COLOR} + > + {children} + </Text> + </View> + ); + } + return ( + <Text variant={DEFAULT_BUTTONPRIMARY_LABEL_TEXTVARIANT}>{children}</Text> + ); + }; + + return ( + <Button + {...props} + variant={buttonVariant} + onPress={handlePress} + disabled={disabled} + loading={loading} + label={buttonLabel()} + size={ButtonSize.Lg} + style={styles.button} + isDanger={snapVariant === 'destructive'} + /> + ); +}; diff --git a/app/components/Snaps/SnapUIIcon/SnapUIIcon.tsx b/app/components/Snaps/SnapUIIcon/SnapUIIcon.tsx new file mode 100644 index 000000000000..87eab2fab3c3 --- /dev/null +++ b/app/components/Snaps/SnapUIIcon/SnapUIIcon.tsx @@ -0,0 +1,19 @@ +import React from 'react'; +import { ViewStyle, StyleProp } from 'react-native'; +import { + IconColor, + IconName, + IconSize, +} from '../../../component-library/components/Icons/Icon/Icon.types'; +import Icon from '../../../component-library/components/Icons/Icon'; + +export interface SnapUIIconProps { + name: IconName; + color?: IconColor; + size?: IconSize; + style?: StyleProp<ViewStyle>; +} + +export const SnapUIIcon = ({ name, color, size, style }: SnapUIIconProps) => ( + <Icon name={name} size={size} color={color} style={style} /> +); diff --git a/app/components/Snaps/SnapUIRenderer/SnapUIRenderer.styles.ts b/app/components/Snaps/SnapUIRenderer/SnapUIRenderer.styles.ts new file mode 100644 index 000000000000..d8ffc0133ab9 --- /dev/null +++ b/app/components/Snaps/SnapUIRenderer/SnapUIRenderer.styles.ts @@ -0,0 +1,10 @@ +import { Dimensions, StyleSheet } from 'react-native'; + +const styles = StyleSheet.create({ + root: { + flexGrow: 1, + minHeight: Dimensions.get('window').height * 0.5, + }, +}); + +export default styles; diff --git a/app/components/Snaps/SnapUIRenderer/SnapUIRenderer.test.tsx b/app/components/Snaps/SnapUIRenderer/SnapUIRenderer.test.tsx new file mode 100644 index 000000000000..0717eb279d38 --- /dev/null +++ b/app/components/Snaps/SnapUIRenderer/SnapUIRenderer.test.tsx @@ -0,0 +1,514 @@ +import React from 'react'; +import { + Box, + Text, + Container, + Footer, + Button, + Input, + JSXElement, + Form, + Field, + Checkbox, + Section, + Row, + Value, + Card, + Image as ImageComponent, +} from '@metamask/snaps-sdk/jsx'; +import { fireEvent, act } from '@testing-library/react-native'; +import renderWithProvider from '../../../util/test/renderWithProvider'; +import { SnapUIRenderer } from './SnapUIRenderer'; +import Engine from '../../../core/Engine/Engine'; +import { RootState } from '../../../reducers'; +import { FormState } from '@metamask/snaps-sdk'; +import { PayloadAction } from '@reduxjs/toolkit'; + +jest.mock('../../../core/Engine/Engine', () => ({ + controllerMessenger: { + call: jest.fn(), + }, + context: { + SnapInterfaceController: { + updateInterfaceState: jest.fn(), + }, + }, +})); + +const mockEngine = jest.mocked(Engine); + +const MOCK_SNAP_ID = 'npm:@metamask/test-snap-bip44'; +const MOCK_INTERFACE_ID = 'interfaceId'; + +const noOp = () => { + // no-op +}; + +function renderInterface( + content: JSXElement | null, + { useFooter = false, onCancel = noOp, state = {} } = {}, +) { + const storeState = { + engine: { + backgroundState: { + SubjectMetadataController: { + subjectMetadata: { + 'npm:@metamask/test-snap-bip44': { + name: '@metamask/test-snap-bip44', + version: '1.2.3', + subjectType: 'snap', + }, + }, + }, + SnapController: { + snaps: { + [MOCK_SNAP_ID]: { + id: 'npm:@metamask/test-snap-bip44', + origin: 'npm:@metamask/test-snap-bip44', + version: '5.1.2', + iconUrl: null, + initialPermissions: { + 'endowment:ethereum-provider': {}, + }, + manifest: { + description: 'An example Snap that signs messages using BLS.', + proposedName: 'BIP-44 Test Snap', + repository: { + type: 'git', + url: 'https://github.com/MetaMask/test-snaps.git', + }, + source: { + location: { + npm: { + filePath: 'dist/bundle.js', + packageName: '@metamask/test-snap-bip44', + registry: 'https://registry.npmjs.org', + }, + }, + shasum: 'L1k+dT9Q+y3KfIqzaH09MpDZVPS9ZowEh9w01ZMTWMU=', + }, + version: '5.1.2', + }, + versionHistory: [ + { + date: 1680686075921, + origin: 'https://metamask.github.io', + version: '5.1.2', + }, + ], + }, + }, + }, + SnapInterfaceController: { + interfaces: { + [MOCK_INTERFACE_ID]: { + snapId: MOCK_SNAP_ID, + content, + state, + context: null, + contentType: null, + }, + }, + }, + }, + }, + }; + + const result = renderWithProvider( + <SnapUIRenderer + snapId={MOCK_SNAP_ID} + interfaceId={MOCK_INTERFACE_ID} + useFooter={useFooter} + onCancel={onCancel} + PERF_DEBUG + />, + { state: storeState as unknown as RootState }, + ); + + const reducer = ( + reducerState: RootState, + action: PayloadAction<{ content: JSXElement; state: FormState }>, + ) => { + if (action.type === 'updateInterface') { + return { + engine: { + backgroundState: { + ...reducerState.engine.backgroundState, + SnapInterfaceController: { + interfaces: { + [MOCK_INTERFACE_ID]: { + snapId: MOCK_SNAP_ID, + content: action.payload.content, + state: action.payload.state ?? state, + context: null, + contentType: null, + }, + }, + }, + }, + }, + }; + } + return reducerState; + }; + + const { store } = result; + + // @ts-expect-error Mock reducer doesn't fully match the type. + store.replaceReducer(reducer); + + const updateInterface = ( + newContent: JSXElement, + newState: FormState | null = null, + ) => { + act(() => { + store.dispatch({ + type: 'updateInterface', + payload: { + content: newContent, + state: newState, + }, + }); + }); + }; + + const getRenderCount = () => + parseInt(result.getByTestId('performance').props['data-renders'], 10); + + return { ...result, updateInterface, getRenderCount }; +} + +describe('SnapUIRenderer', () => { + beforeEach(() => { + jest.resetAllMocks(); + }); + + it('renders loading state', () => { + const { toJSON } = renderInterface(null); + + expect(toJSON()).toMatchSnapshot(); + }); + + it('renders basic UI', () => { + const { toJSON, getByText, getRenderCount } = renderInterface( + Box({ children: Text({ children: 'Hello world!' }) }), + ); + + expect(getByText('Hello world!')).toBeDefined(); + expect(getRenderCount()).toBe(1); + expect(toJSON()).toMatchSnapshot(); + }); + + it('renders footers', () => { + const { toJSON, getByText } = renderInterface( + Container({ + children: [ + Box({ children: Text({ children: 'Hello world!' }) }), + Footer({ children: Button({ children: 'Foo' }) }), + ], + }), + { useFooter: true }, + ); + + expect(getByText('Foo')).toBeDefined(); + expect(toJSON()).toMatchSnapshot(); + }); + + it('adds a footer if required', () => { + const { toJSON, getByText } = renderInterface( + Container({ + children: Box({ children: Text({ children: 'Hello world!' }) }), + }), + { useFooter: true }, + ); + + expect(getByText('Close')).toBeDefined(); + expect(toJSON()).toMatchSnapshot(); + }); + + it('supports the onCancel prop', () => { + const onCancel = jest.fn(); + const { toJSON, getByText } = renderInterface( + Container({ + children: [ + Box({ children: Text({ children: 'Hello world!' }) }), + Footer({ children: Button({ children: 'Foo' }) }), + ], + }), + { useFooter: true, onCancel }, + ); + + const button = getByText('Cancel'); + expect(button).toBeDefined(); + expect(toJSON()).toMatchSnapshot(); + + fireEvent.press(button); + expect(onCancel).toHaveBeenCalled(); + }); + + it('supports interactive inputs', () => { + const { toJSON, getByTestId } = renderInterface( + Box({ children: Input({ name: 'input' }) }), + ); + + const input = getByTestId('input'); + fireEvent.changeText(input, 'a'); + + expect( + mockEngine.context.SnapInterfaceController.updateInterfaceState, + ).toHaveBeenNthCalledWith(1, MOCK_INTERFACE_ID, { input: 'a' }); + + expect(mockEngine.controllerMessenger.call).toHaveBeenNthCalledWith( + 1, + 'SnapController:handleRequest', + { + handler: 'onUserInput', + origin: '', + request: { + jsonrpc: '2.0', + method: ' ', + params: { + context: null, + event: { name: 'input', type: 'InputChangeEvent', value: 'a' }, + id: MOCK_INTERFACE_ID, + }, + }, + snapId: MOCK_SNAP_ID, + }, + ); + + expect(toJSON()).toMatchSnapshot(); + }); + + it('prefills interactive inputs with existing state', () => { + const { toJSON, getByTestId } = renderInterface( + Box({ children: Input({ name: 'input' }) }), + { state: { input: 'bar' } }, + ); + + const input = getByTestId('input'); + expect(input).toBeDefined(); + expect(input.props.value).toStrictEqual('bar'); + + expect(toJSON()).toMatchSnapshot(); + }); + + it('re-renders when the interface changes', () => { + const { toJSON, getAllByTestId, updateInterface, getRenderCount } = + renderInterface(Box({ children: Input({ name: 'input' }) })); + + const inputs = getAllByTestId('input'); + expect(inputs).toHaveLength(1); + + updateInterface( + Box({ children: [Input({ name: 'input' }), Input({ name: 'input2' })] }), + ); + + const inputsAfterRerender = getAllByTestId('input'); + expect(inputsAfterRerender).toHaveLength(2); + + expect(getRenderCount()).toBe(2); + + expect(toJSON()).toMatchSnapshot(); + }); + + it('re-syncs state when the interface changes', () => { + const { toJSON, getAllByTestId, getRenderCount, updateInterface } = + renderInterface(Box({ children: Input({ name: 'input' }) })); + + updateInterface( + Box({ children: [Input({ name: 'input' }), Input({ name: 'input2' })] }), + { input: 'bar', input2: 'foo' }, + ); + + const inputsAfterRerender = getAllByTestId('input'); + expect(inputsAfterRerender).toHaveLength(2); + expect(inputsAfterRerender[0].props.value).toStrictEqual('bar'); + expect(inputsAfterRerender[1].props.value).toStrictEqual('foo'); + + expect(getRenderCount()).toBe(2); + + expect(toJSON()).toMatchSnapshot(); + }); + + it('supports forms with fields', () => { + const { toJSON, getByTestId, getByText } = renderInterface( + Box({ + children: Form({ + name: 'form', + children: [ + Field({ label: 'My Input', children: Input({ name: 'input' }) }), + Field({ + label: 'My Checkbox', + children: Checkbox({ + name: 'checkbox', + label: 'This is a checkbox', + }), + }), + Button({ type: 'submit', name: 'submit', children: 'Submit' }), + ], + }), + }), + ); + + const input = getByTestId('input'); + fireEvent.changeText(input, 'abc'); + + expect( + mockEngine.context.SnapInterfaceController.updateInterfaceState, + ).toHaveBeenNthCalledWith(1, MOCK_INTERFACE_ID, { form: { input: 'abc' } }); + + expect(mockEngine.controllerMessenger.call).toHaveBeenNthCalledWith( + 1, + 'SnapController:handleRequest', + { + handler: 'onUserInput', + origin: '', + request: { + jsonrpc: '2.0', + method: ' ', + params: { + context: null, + event: { name: 'input', type: 'InputChangeEvent', value: 'abc' }, + id: MOCK_INTERFACE_ID, + }, + }, + snapId: MOCK_SNAP_ID, + }, + ); + + const checkbox = getByText('This is a checkbox'); + fireEvent.press(checkbox); + + expect( + mockEngine.context.SnapInterfaceController.updateInterfaceState, + ).toHaveBeenNthCalledWith(2, MOCK_INTERFACE_ID, { + form: { input: 'abc', checkbox: true }, + }); + + expect(mockEngine.controllerMessenger.call).toHaveBeenNthCalledWith( + 2, + 'SnapController:handleRequest', + { + handler: 'onUserInput', + origin: '', + request: { + jsonrpc: '2.0', + method: ' ', + params: { + context: null, + event: { name: 'checkbox', type: 'InputChangeEvent', value: true }, + id: MOCK_INTERFACE_ID, + }, + }, + snapId: MOCK_SNAP_ID, + }, + ); + + const button = getByText('Submit'); + fireEvent.press(button); + + expect(mockEngine.controllerMessenger.call).toHaveBeenNthCalledWith( + 3, + 'SnapController:handleRequest', + { + handler: 'onUserInput', + origin: '', + request: { + jsonrpc: '2.0', + method: ' ', + params: { + context: null, + event: { name: 'submit', type: 'ButtonClickEvent' }, + id: MOCK_INTERFACE_ID, + }, + }, + snapId: MOCK_SNAP_ID, + }, + ); + + expect(mockEngine.controllerMessenger.call).toHaveBeenNthCalledWith( + 4, + 'SnapController:handleRequest', + { + handler: 'onUserInput', + origin: '', + request: { + jsonrpc: '2.0', + method: ' ', + params: { + context: null, + event: { + name: 'form', + type: 'FormSubmitEvent', + value: { + checkbox: true, + input: 'abc', + }, + }, + id: MOCK_INTERFACE_ID, + }, + }, + snapId: MOCK_SNAP_ID, + }, + ); + + expect(toJSON()).toMatchSnapshot(); + }); + + it('supports fields with multiple components', () => { + const { toJSON } = renderInterface( + Box({ + children: Form({ + name: 'form', + children: [ + Field({ + label: 'My Input', + children: [ + ImageComponent({ src: '<svg />' }), + Input({ name: 'input' }), + Button({ type: 'submit', name: 'submit', children: 'Submit' }), + ], + }), + ], + }), + }), + ); + + expect(toJSON()).toMatchSnapshot(); + }); + + it('renders complex nested components', () => { + const { toJSON, getRenderCount } = renderInterface( + Container({ + children: [ + Box({ + children: [ + Section({ + children: [ + Row({ + label: 'Key', + children: Value({ value: 'Value', extra: 'Extra' }), + }), + Card({ + image: '<svg />', + title: 'CardTitle', + description: 'CardDescription', + value: 'CardValue', + extra: 'CardExtra', + }), + ], + }), + ], + }), + Footer({ children: Button({ children: 'Foo' }) }), + ], + }), + { useFooter: true }, + ); + + expect(getRenderCount()).toBe(1); + + expect(toJSON()).toMatchSnapshot(); + }); +}); diff --git a/app/components/Snaps/SnapUIRenderer/SnapUIRenderer.tsx b/app/components/Snaps/SnapUIRenderer/SnapUIRenderer.tsx new file mode 100644 index 000000000000..7dcf925fbbc7 --- /dev/null +++ b/app/components/Snaps/SnapUIRenderer/SnapUIRenderer.tsx @@ -0,0 +1,95 @@ +import React, { memo, useMemo, useRef } from 'react'; +import { useSelector } from 'react-redux'; +import { Box } from '../../UI/Box/Box'; +import { isEqual } from 'lodash'; +import { getMemoizedInterface } from '../../../selectors/snaps/interfaceController'; +import { SnapInterfaceContextProvider } from '../SnapInterfaceContext'; +import { mapToTemplate } from './utils'; +import TemplateRenderer from '../../UI/TemplateRenderer'; +import { ActivityIndicator, View } from 'react-native'; +import { Colors } from 'react-native/Libraries/NewAppScreen'; +import { Container } from '@metamask/snaps-sdk/jsx'; +import { strings } from '../../../../locales/i18n'; +import styles from './SnapUIRenderer.styles'; +import { RootState } from '../../../reducers'; +import { TemplateRendererComponent } from '../../UI/TemplateRenderer/types'; +import { useTheme } from '../../../util/theme'; + +interface SnapUIRendererProps { + snapId: string; + isLoading?: boolean; + interfaceId: string; + onCancel?: () => void; + useFooter: boolean; + PERF_DEBUG?: boolean; // DO NOT USE IN PRODUCTION +} + +// Component for tracking the number of re-renders +// DO NOT USE IN PRODUCTION +const PerformanceTracker = () => { + const rendersRef = useRef(0); + rendersRef.current += 1; + + return <View testID="performance" data-renders={rendersRef.current} />; +}; + +const SnapUIRendererComponent = ({ + snapId, + isLoading = false, + interfaceId, + onCancel, + useFooter, + PERF_DEBUG, +}: SnapUIRendererProps) => { + const theme = useTheme(); + + const interfaceState = useSelector( + (state: RootState) => getMemoizedInterface(state, interfaceId), + (oldState, newState) => + isEqual(oldState?.content ?? null, newState?.content ?? null), + ); + + const rawContent = interfaceState?.content; + const content = + rawContent?.type === 'Container' || !rawContent + ? rawContent + : Container({ children: rawContent }); + + const sections = useMemo( + () => + content && + (mapToTemplate({ + map: {}, + element: content, + useFooter, + onCancel, + t: strings, + theme, + }) as TemplateRendererComponent), + [content, useFooter, onCancel, theme], + ); + + if (isLoading || !content) { + return <ActivityIndicator size="large" color={Colors.primary} />; + } + + const { state: initialState, context } = interfaceState; + return ( + <Box style={styles.root}> + <SnapInterfaceContextProvider + snapId={snapId} + interfaceId={interfaceId} + initialState={initialState} + context={context} + > + <TemplateRenderer sections={sections} /> + {PERF_DEBUG && <PerformanceTracker />} + </SnapInterfaceContextProvider> + </Box> + ); +}; + +export const SnapUIRenderer = memo( + SnapUIRendererComponent, + (prevProps, nextProps) => isEqual(prevProps, nextProps), +); diff --git a/app/components/Snaps/SnapUIRenderer/__snapshots__/SnapUIRenderer.test.tsx.snap b/app/components/Snaps/SnapUIRenderer/__snapshots__/SnapUIRenderer.test.tsx.snap new file mode 100644 index 000000000000..2634d12d136a --- /dev/null +++ b/app/components/Snaps/SnapUIRenderer/__snapshots__/SnapUIRenderer.test.tsx.snap @@ -0,0 +1,2129 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`SnapUIRenderer adds a footer if required 1`] = ` +<View + style={ + { + "flexGrow": 1, + "minHeight": 667, + } + } +> + <View + style={ + { + "flex": 1, + "flexDirection": "column", + } + } + > + <RCTScrollView + style={ + { + "marginBottom": 80, + } + } + > + <View> + <View + color="Default" + flexDirection="column" + gap={8} + justifyContent="flex-start" + style={ + [ + { + "color": "Default", + "flexDirection": "column", + "gap": 8, + "justifyContent": "flex-start", + }, + undefined, + ] + } + > + <Text + accessibilityRole="text" + fontWeight="normal" + style={ + { + "color": "inherit", + "fontFamily": "EuclidCircularB-Regular", + "fontSize": 14, + "fontWeight": "400", + "letterSpacing": 0, + "lineHeight": 22, + } + } + textAlign="left" + > + <Text + color="inherit" + > + Hello world! + </Text> + </Text> + </View> + </View> + </RCTScrollView> + <View + flexDirection="row" + gap={16} + padding={16} + style={ + { + "alignItems": "center", + "bottom": 0, + "height": 80, + "justifyContent": "space-evenly", + "paddingVertical": 16, + "position": "absolute", + "width": "100%", + } + } + > + <TouchableOpacity + accessibilityRole="button" + accessible={true} + activeOpacity={1} + disabled={false} + loading={false} + onPress={[Function]} + onPressIn={[Function]} + onPressOut={[Function]} + style={ + { + "alignItems": "center", + "alignSelf": "flex-start", + "backgroundColor": "transparent", + "borderColor": "#0376c9", + "borderRadius": 24, + "borderWidth": 1, + "flex": 1, + "flexDirection": "row", + "height": 48, + "justifyContent": "center", + "paddingHorizontal": 16, + } + } + > + <Text + accessibilityRole="text" + style={ + { + "color": "#141618", + "fontFamily": "EuclidCircularB-Medium", + "fontSize": 14, + "fontWeight": "500", + "letterSpacing": 0, + "lineHeight": 22, + } + } + > + Close + </Text> + </TouchableOpacity> + </View> + </View> + <View + data-renders={1} + testID="performance" + /> +</View> +`; + +exports[`SnapUIRenderer prefills interactive inputs with existing state 1`] = ` +<View + style={ + { + "flexGrow": 1, + "minHeight": 667, + } + } +> + <View + style={ + { + "flex": 1, + "flexDirection": "column", + } + } + > + <RCTScrollView + style={ + { + "marginBottom": 0, + } + } + > + <View> + <View + color="Default" + flexDirection="column" + gap={8} + justifyContent="flex-start" + style={ + [ + { + "color": "Default", + "flexDirection": "column", + "gap": 8, + "justifyContent": "flex-start", + }, + undefined, + ] + } + > + <View + style={ + [ + {}, + undefined, + ] + } + > + <View + style={ + { + "alignItems": "center", + "backgroundColor": "#ffffff", + "borderColor": "#848c96", + "borderRadius": 8, + "borderWidth": 1, + "flexDirection": "row", + "height": 48, + "opacity": 1, + "paddingHorizontal": 16, + } + } + testID="textfield" + > + <View + style={ + { + "flex": 1, + } + } + > + <TextInput + autoFocus={false} + editable={true} + id="input" + onBlur={[Function]} + onChangeText={[Function]} + onFocus={[Function]} + style={ + { + "backgroundColor": "#ffffff", + "borderColor": "transparent", + "borderWidth": 1, + "color": "#141618", + "fontFamily": "Euclid Circular B", + "fontSize": 14, + "fontWeight": "400", + "height": 24, + "letterSpacing": 0, + "opacity": 1, + "paddingVertical": 0, + } + } + testID="input" + value="bar" + /> + </View> + </View> + </View> + </View> + </View> + </RCTScrollView> + </View> + <View + data-renders={1} + testID="performance" + /> +</View> +`; + +exports[`SnapUIRenderer re-renders when the interface changes 1`] = ` +<View + style={ + { + "flexGrow": 1, + "minHeight": 667, + } + } +> + <View + style={ + { + "flex": 1, + "flexDirection": "column", + } + } + > + <RCTScrollView + style={ + { + "marginBottom": 0, + } + } + > + <View> + <View + color="Default" + flexDirection="column" + gap={8} + justifyContent="flex-start" + style={ + [ + { + "color": "Default", + "flexDirection": "column", + "gap": 8, + "justifyContent": "flex-start", + }, + undefined, + ] + } + > + <View + style={ + [ + {}, + undefined, + ] + } + > + <View + style={ + { + "alignItems": "center", + "backgroundColor": "#ffffff", + "borderColor": "#848c96", + "borderRadius": 8, + "borderWidth": 1, + "flexDirection": "row", + "height": 48, + "opacity": 1, + "paddingHorizontal": 16, + } + } + testID="textfield" + > + <View + style={ + { + "flex": 1, + } + } + > + <TextInput + autoFocus={false} + editable={true} + id="input" + onBlur={[Function]} + onChangeText={[Function]} + onFocus={[Function]} + style={ + { + "backgroundColor": "#ffffff", + "borderColor": "transparent", + "borderWidth": 1, + "color": "#141618", + "fontFamily": "Euclid Circular B", + "fontSize": 14, + "fontWeight": "400", + "height": 24, + "letterSpacing": 0, + "opacity": 1, + "paddingVertical": 0, + } + } + testID="input" + value="" + /> + </View> + </View> + </View> + <View + style={ + [ + {}, + undefined, + ] + } + > + <View + style={ + { + "alignItems": "center", + "backgroundColor": "#ffffff", + "borderColor": "#848c96", + "borderRadius": 8, + "borderWidth": 1, + "flexDirection": "row", + "height": 48, + "opacity": 1, + "paddingHorizontal": 16, + } + } + testID="textfield" + > + <View + style={ + { + "flex": 1, + } + } + > + <TextInput + autoFocus={false} + editable={true} + id="input2" + onBlur={[Function]} + onChangeText={[Function]} + onFocus={[Function]} + style={ + { + "backgroundColor": "#ffffff", + "borderColor": "transparent", + "borderWidth": 1, + "color": "#141618", + "fontFamily": "Euclid Circular B", + "fontSize": 14, + "fontWeight": "400", + "height": 24, + "letterSpacing": 0, + "opacity": 1, + "paddingVertical": 0, + } + } + testID="input" + value="" + /> + </View> + </View> + </View> + </View> + </View> + </RCTScrollView> + </View> + <View + data-renders={2} + testID="performance" + /> +</View> +`; + +exports[`SnapUIRenderer re-syncs state when the interface changes 1`] = ` +<View + style={ + { + "flexGrow": 1, + "minHeight": 667, + } + } +> + <View + style={ + { + "flex": 1, + "flexDirection": "column", + } + } + > + <RCTScrollView + style={ + { + "marginBottom": 0, + } + } + > + <View> + <View + color="Default" + flexDirection="column" + gap={8} + justifyContent="flex-start" + style={ + [ + { + "color": "Default", + "flexDirection": "column", + "gap": 8, + "justifyContent": "flex-start", + }, + undefined, + ] + } + > + <View + style={ + [ + {}, + undefined, + ] + } + > + <View + style={ + { + "alignItems": "center", + "backgroundColor": "#ffffff", + "borderColor": "#848c96", + "borderRadius": 8, + "borderWidth": 1, + "flexDirection": "row", + "height": 48, + "opacity": 1, + "paddingHorizontal": 16, + } + } + testID="textfield" + > + <View + style={ + { + "flex": 1, + } + } + > + <TextInput + autoFocus={false} + editable={true} + id="input" + onBlur={[Function]} + onChangeText={[Function]} + onFocus={[Function]} + style={ + { + "backgroundColor": "#ffffff", + "borderColor": "transparent", + "borderWidth": 1, + "color": "#141618", + "fontFamily": "Euclid Circular B", + "fontSize": 14, + "fontWeight": "400", + "height": 24, + "letterSpacing": 0, + "opacity": 1, + "paddingVertical": 0, + } + } + testID="input" + value="bar" + /> + </View> + </View> + </View> + <View + style={ + [ + {}, + undefined, + ] + } + > + <View + style={ + { + "alignItems": "center", + "backgroundColor": "#ffffff", + "borderColor": "#848c96", + "borderRadius": 8, + "borderWidth": 1, + "flexDirection": "row", + "height": 48, + "opacity": 1, + "paddingHorizontal": 16, + } + } + testID="textfield" + > + <View + style={ + { + "flex": 1, + } + } + > + <TextInput + autoFocus={false} + editable={true} + id="input2" + onBlur={[Function]} + onChangeText={[Function]} + onFocus={[Function]} + style={ + { + "backgroundColor": "#ffffff", + "borderColor": "transparent", + "borderWidth": 1, + "color": "#141618", + "fontFamily": "Euclid Circular B", + "fontSize": 14, + "fontWeight": "400", + "height": 24, + "letterSpacing": 0, + "opacity": 1, + "paddingVertical": 0, + } + } + testID="input" + value="foo" + /> + </View> + </View> + </View> + </View> + </View> + </RCTScrollView> + </View> + <View + data-renders={2} + testID="performance" + /> +</View> +`; + +exports[`SnapUIRenderer renders basic UI 1`] = ` +<View + style={ + { + "flexGrow": 1, + "minHeight": 667, + } + } +> + <View + style={ + { + "flex": 1, + "flexDirection": "column", + } + } + > + <RCTScrollView + style={ + { + "marginBottom": 0, + } + } + > + <View> + <View + color="Default" + flexDirection="column" + gap={8} + justifyContent="flex-start" + style={ + [ + { + "color": "Default", + "flexDirection": "column", + "gap": 8, + "justifyContent": "flex-start", + }, + undefined, + ] + } + > + <Text + accessibilityRole="text" + fontWeight="normal" + style={ + { + "color": "inherit", + "fontFamily": "EuclidCircularB-Regular", + "fontSize": 14, + "fontWeight": "400", + "letterSpacing": 0, + "lineHeight": 22, + } + } + textAlign="left" + > + <Text + color="inherit" + > + Hello world! + </Text> + </Text> + </View> + </View> + </RCTScrollView> + </View> + <View + data-renders={1} + testID="performance" + /> +</View> +`; + +exports[`SnapUIRenderer renders complex nested components 1`] = ` +<View + style={ + { + "flexGrow": 1, + "minHeight": 667, + } + } +> + <View + style={ + { + "flex": 1, + "flexDirection": "column", + } + } + > + <RCTScrollView + style={ + { + "marginBottom": 80, + } + } + > + <View> + <View + color="Default" + flexDirection="column" + gap={8} + justifyContent="flex-start" + style={ + [ + { + "color": "Default", + "flexDirection": "column", + "gap": 8, + "justifyContent": "flex-start", + }, + undefined, + ] + } + > + <View + backgroundColor="#f2f4f6" + borderRadius={8} + color="Default" + flexDirection="column" + gap={8} + justifyContent="flex-start" + padding={16} + style={ + [ + { + "backgroundColor": "#f2f4f6", + "color": "Default", + "flexDirection": "column", + "gap": 8, + "justifyContent": "flex-start", + }, + undefined, + ] + } + > + <View + style={ + { + "alignItems": "center", + "display": "flex", + "flexDirection": "row", + "flexWrap": "wrap", + "justifyContent": "space-between", + "paddingBottom": 8, + "paddingHorizontal": 8, + } + } + testID="info-row" + > + <View + style={ + { + "alignItems": "center", + "alignSelf": "flex-start", + "display": "flex", + "flexDirection": "row", + "minHeight": 38, + "paddingEnd": 4, + } + } + > + <Text + accessibilityRole="text" + style={ + { + "alignItems": "center", + "color": "#141618", + "fontFamily": "EuclidCircularB-Bold", + "fontSize": 14, + "fontWeight": "500", + "justifyContent": "center", + "letterSpacing": 0, + "lineHeight": 22, + } + } + > + Key + </Text> + </View> + <View + style={ + { + "marginLeft": "auto", + } + } + > + <View + alignItems="center" + flexDirection="row" + gap={4} + style={ + [ + { + "alignItems": "center", + "flexDirection": "row", + "gap": 4, + }, + undefined, + ] + } + > + <Text + accessibilityRole="text" + style={ + { + "color": "#9fa6ae", + "fontFamily": "EuclidCircularB-Regular", + "fontSize": 14, + "fontWeight": "400", + "letterSpacing": 0, + "lineHeight": 22, + } + } + > + Extra + </Text> + <Text + accessibilityRole="text" + style={ + { + "color": "#141618", + "fontFamily": "EuclidCircularB-Regular", + "fontSize": 14, + "fontWeight": "400", + "letterSpacing": 0, + "lineHeight": 22, + } + } + > + Value + </Text> + </View> + </View> + </View> + <View + alignItems="center" + flexDirection="row" + justifyContent="space-between" + style={ + [ + { + "alignItems": "center", + "flexDirection": "row", + "justifyContent": "space-between", + }, + undefined, + ] + } + testID="snaps-ui-card" + > + <View + alignItems="center" + flexDirection="row" + gap={16} + style={ + [ + { + "alignItems": "center", + "flexDirection": "row", + "gap": 16, + }, + undefined, + ] + } + > + <View + flexDirection="column" + style={ + [ + { + "flexDirection": "column", + }, + undefined, + ] + } + > + <Text + accessibilityRole="text" + ellipsizeMode="tail" + style={ + { + "color": "#141618", + "fontFamily": "EuclidCircularB-Medium", + "fontSize": 14, + "fontWeight": "500", + "letterSpacing": 0, + "lineHeight": 22, + } + } + > + CardTitle + </Text> + <Text + accessibilityRole="text" + ellipsizeMode="tail" + style={ + { + "color": "#6a737d", + "fontFamily": "EuclidCircularB-Regular", + "fontSize": 14, + "fontWeight": "400", + "letterSpacing": 0, + "lineHeight": 22, + } + } + > + CardDescription + </Text> + </View> + </View> + <View + flexDirection="column" + style={ + [ + { + "flexDirection": "column", + "textAlign": "right", + }, + undefined, + ] + } + textAlign="right" + > + <Text + accessibilityRole="text" + ellipsizeMode="tail" + style={ + { + "color": "#141618", + "fontFamily": "EuclidCircularB-Medium", + "fontSize": 14, + "fontWeight": "500", + "letterSpacing": 0, + "lineHeight": 22, + } + } + > + CardValue + </Text> + <Text + accessibilityRole="text" + ellipsizeMode="tail" + style={ + { + "color": "#6a737d", + "fontFamily": "EuclidCircularB-Regular", + "fontSize": 14, + "fontWeight": "400", + "letterSpacing": 0, + "lineHeight": 22, + } + } + > + CardExtra + </Text> + </View> + </View> + </View> + </View> + </View> + </RCTScrollView> + <View + flexDirection="row" + gap={16} + padding={16} + style={ + { + "bottom": 0, + "height": 80, + "justifyContent": "space-evenly", + "paddingVertical": 16, + "position": "absolute", + "width": "100%", + } + } + > + <TouchableOpacity + accessibilityRole="button" + accessible={true} + activeOpacity={1} + disabled={false} + loading={false} + onPress={[Function]} + onPressIn={[Function]} + onPressOut={[Function]} + style={ + { + "alignItems": "center", + "alignSelf": "flex-start", + "backgroundColor": "transparent", + "borderColor": "#0376c9", + "borderRadius": 24, + "borderWidth": 1, + "flex": 1, + "flexDirection": "row", + "height": 48, + "justifyContent": "center", + "paddingHorizontal": 16, + } + } + > + <Text + accessibilityRole="text" + style={ + { + "color": "#141618", + "fontFamily": "EuclidCircularB-Medium", + "fontSize": 14, + "fontWeight": "500", + "letterSpacing": 0, + "lineHeight": 22, + } + } + > + Cancel + </Text> + </TouchableOpacity> + <TouchableOpacity + accessibilityRole="button" + accessible={true} + activeOpacity={1} + disabled={false} + loading={false} + onPress={[Function]} + onPressIn={[Function]} + onPressOut={[Function]} + style={ + { + "alignItems": "center", + "alignSelf": "flex-start", + "backgroundColor": "#0376c9", + "borderRadius": 24, + "flex": 1, + "flexDirection": "row", + "height": 48, + "justifyContent": "center", + "paddingHorizontal": 16, + } + } + textVariant="sBodyMDMedium" + > + <View + style={ + { + "alignItems": "center", + "flexDirection": "row", + "gap": 4, + "justifyContent": "center", + } + } + > + <View + style={ + { + "alignItems": "center", + "backgroundColor": "#ffffff", + "borderRadius": 50, + "borderWidth": 0, + "height": 24, + "justifyContent": "center", + "overflow": "hidden", + "width": 24, + } + } + > + <Text + accessibilityRole="text" + style={ + { + "color": "#141618", + "fontFamily": "EuclidCircularB-Regular", + "fontSize": 14, + "fontWeight": "400", + "letterSpacing": 0, + "lineHeight": 22, + } + } + > + m + </Text> + </View> + <Text + accessibilityRole="text" + style={ + { + "color": "#ffffff", + "fontFamily": "EuclidCircularB-Medium", + "fontSize": 14, + "fontWeight": "500", + "letterSpacing": 0, + "lineHeight": 22, + } + } + > + <Text + color="inherit" + > + Foo + </Text> + </Text> + </View> + </TouchableOpacity> + </View> + </View> + <View + data-renders={1} + testID="performance" + /> +</View> +`; + +exports[`SnapUIRenderer renders footers 1`] = ` +<View + style={ + { + "flexGrow": 1, + "minHeight": 667, + } + } +> + <View + style={ + { + "flex": 1, + "flexDirection": "column", + } + } + > + <RCTScrollView + style={ + { + "marginBottom": 80, + } + } + > + <View> + <View + color="Default" + flexDirection="column" + gap={8} + justifyContent="flex-start" + style={ + [ + { + "color": "Default", + "flexDirection": "column", + "gap": 8, + "justifyContent": "flex-start", + }, + undefined, + ] + } + > + <Text + accessibilityRole="text" + fontWeight="normal" + style={ + { + "color": "inherit", + "fontFamily": "EuclidCircularB-Regular", + "fontSize": 14, + "fontWeight": "400", + "letterSpacing": 0, + "lineHeight": 22, + } + } + textAlign="left" + > + <Text + color="inherit" + > + Hello world! + </Text> + </Text> + </View> + </View> + </RCTScrollView> + <View + flexDirection="row" + gap={16} + padding={16} + style={ + { + "bottom": 0, + "height": 80, + "justifyContent": "space-evenly", + "paddingVertical": 16, + "position": "absolute", + "width": "100%", + } + } + > + <TouchableOpacity + accessibilityRole="button" + accessible={true} + activeOpacity={1} + disabled={false} + loading={false} + onPress={[Function]} + onPressIn={[Function]} + onPressOut={[Function]} + style={ + { + "alignItems": "center", + "alignSelf": "flex-start", + "backgroundColor": "transparent", + "borderColor": "#0376c9", + "borderRadius": 24, + "borderWidth": 1, + "flex": 1, + "flexDirection": "row", + "height": 48, + "justifyContent": "center", + "paddingHorizontal": 16, + } + } + > + <Text + accessibilityRole="text" + style={ + { + "color": "#141618", + "fontFamily": "EuclidCircularB-Medium", + "fontSize": 14, + "fontWeight": "500", + "letterSpacing": 0, + "lineHeight": 22, + } + } + > + Cancel + </Text> + </TouchableOpacity> + <TouchableOpacity + accessibilityRole="button" + accessible={true} + activeOpacity={1} + disabled={false} + loading={false} + onPress={[Function]} + onPressIn={[Function]} + onPressOut={[Function]} + style={ + { + "alignItems": "center", + "alignSelf": "flex-start", + "backgroundColor": "#0376c9", + "borderRadius": 24, + "flex": 1, + "flexDirection": "row", + "height": 48, + "justifyContent": "center", + "paddingHorizontal": 16, + } + } + textVariant="sBodyMDMedium" + > + <View + style={ + { + "alignItems": "center", + "flexDirection": "row", + "gap": 4, + "justifyContent": "center", + } + } + > + <View + style={ + { + "alignItems": "center", + "backgroundColor": "#ffffff", + "borderRadius": 50, + "borderWidth": 0, + "height": 24, + "justifyContent": "center", + "overflow": "hidden", + "width": 24, + } + } + > + <Text + accessibilityRole="text" + style={ + { + "color": "#141618", + "fontFamily": "EuclidCircularB-Regular", + "fontSize": 14, + "fontWeight": "400", + "letterSpacing": 0, + "lineHeight": 22, + } + } + > + m + </Text> + </View> + <Text + accessibilityRole="text" + style={ + { + "color": "#ffffff", + "fontFamily": "EuclidCircularB-Medium", + "fontSize": 14, + "fontWeight": "500", + "letterSpacing": 0, + "lineHeight": 22, + } + } + > + <Text + color="inherit" + > + Foo + </Text> + </Text> + </View> + </TouchableOpacity> + </View> + </View> + <View + data-renders={1} + testID="performance" + /> +</View> +`; + +exports[`SnapUIRenderer renders loading state 1`] = ` +<ActivityIndicator + color="#1292B4" + size="large" +/> +`; + +exports[`SnapUIRenderer supports fields with multiple components 1`] = ` +<View + style={ + { + "flexGrow": 1, + "minHeight": 667, + } + } +> + <View + style={ + { + "flex": 1, + "flexDirection": "column", + } + } + > + <RCTScrollView + style={ + { + "marginBottom": 0, + } + } + > + <View> + <View + color="Default" + flexDirection="column" + gap={8} + justifyContent="flex-start" + style={ + [ + { + "color": "Default", + "flexDirection": "column", + "gap": 8, + "justifyContent": "flex-start", + }, + undefined, + ] + } + > + <View + flexDirection="column" + gap={8} + style={ + [ + { + "flexDirection": "column", + "gap": 8, + }, + undefined, + ] + } + > + <View + style={ + [ + {}, + undefined, + ] + } + > + <Text + accessibilityRole="text" + style={ + { + "color": "#141618", + "fontFamily": "EuclidCircularB-Regular", + "fontSize": 14, + "fontWeight": "400", + "letterSpacing": 0, + "lineHeight": 22, + } + } + testID="label" + > + My Input + </Text> + <View + style={ + { + "alignItems": "center", + "backgroundColor": "#ffffff", + "borderColor": "#848c96", + "borderRadius": 8, + "borderWidth": 1, + "flexDirection": "row", + "height": 48, + "opacity": 1, + "paddingHorizontal": 16, + } + } + testID="textfield" + > + <View + style={ + { + "marginRight": 8, + } + } + testID="textfield-startacccessory" + /> + <View + style={ + { + "flex": 1, + } + } + > + <TextInput + autoFocus={false} + editable={true} + id="input" + onBlur={[Function]} + onChangeText={[Function]} + onFocus={[Function]} + style={ + { + "backgroundColor": "#ffffff", + "borderColor": "transparent", + "borderWidth": 1, + "color": "#141618", + "fontFamily": "Euclid Circular B", + "fontSize": 14, + "fontWeight": "400", + "height": 24, + "letterSpacing": 0, + "opacity": 1, + "paddingVertical": 0, + } + } + testID="input" + value="" + /> + </View> + <View + style={ + { + "marginLeft": 8, + } + } + testID="textfield-endacccessory" + > + <Text + accessibilityRole="link" + accessible={true} + disabled={false} + id="submit" + onPress={[Function]} + onPressIn={[Function]} + onPressOut={[Function]} + padding={0} + style={ + { + "backgroundColor": "transparent", + "color": "#141618", + "fontFamily": "EuclidCircularB-Regular", + "fontSize": 14, + "fontWeight": "400", + "letterSpacing": 0, + "lineHeight": 22, + } + } + suppressHighlighting={true} + > + <Text + accessibilityRole="text" + style={ + { + "color": "#0376c9", + "fontFamily": "EuclidCircularB-Medium", + "fontSize": 14, + "fontWeight": "500", + "letterSpacing": 0, + "lineHeight": 22, + } + } + > + <Text + color="inherit" + > + Submit + </Text> + </Text> + </Text> + </View> + </View> + </View> + </View> + </View> + </View> + </RCTScrollView> + </View> + <View + data-renders={1} + testID="performance" + /> +</View> +`; + +exports[`SnapUIRenderer supports forms with fields 1`] = ` +<View + style={ + { + "flexGrow": 1, + "minHeight": 667, + } + } +> + <View + style={ + { + "flex": 1, + "flexDirection": "column", + } + } + > + <RCTScrollView + style={ + { + "marginBottom": 0, + } + } + > + <View> + <View + color="Default" + flexDirection="column" + gap={8} + justifyContent="flex-start" + style={ + [ + { + "color": "Default", + "flexDirection": "column", + "gap": 8, + "justifyContent": "flex-start", + }, + undefined, + ] + } + > + <View + flexDirection="column" + gap={8} + style={ + [ + { + "flexDirection": "column", + "gap": 8, + }, + undefined, + ] + } + > + <View + style={ + [ + {}, + undefined, + ] + } + > + <Text + accessibilityRole="text" + style={ + { + "color": "#141618", + "fontFamily": "EuclidCircularB-Regular", + "fontSize": 14, + "fontWeight": "400", + "letterSpacing": 0, + "lineHeight": 22, + } + } + testID="label" + > + My Input + </Text> + <View + style={ + { + "alignItems": "center", + "backgroundColor": "#ffffff", + "borderColor": "#848c96", + "borderRadius": 8, + "borderWidth": 1, + "flexDirection": "row", + "height": 48, + "opacity": 1, + "paddingHorizontal": 16, + } + } + testID="textfield" + > + <View + style={ + { + "flex": 1, + } + } + > + <TextInput + autoFocus={false} + editable={true} + id="input" + onBlur={[Function]} + onChangeText={[Function]} + onFocus={[Function]} + style={ + { + "backgroundColor": "#ffffff", + "borderColor": "transparent", + "borderWidth": 1, + "color": "#141618", + "fontFamily": "Euclid Circular B", + "fontSize": 14, + "fontWeight": "400", + "height": 24, + "letterSpacing": 0, + "opacity": 1, + "paddingVertical": 0, + } + } + testID="input" + value="abc" + /> + </View> + </View> + </View> + <View + flexDirection="column" + style={ + [ + { + "flexDirection": "column", + }, + undefined, + ] + } + > + <Text + accessibilityRole="text" + style={ + { + "color": "#141618", + "fontFamily": "EuclidCircularB-Regular", + "fontSize": 14, + "fontWeight": "400", + "letterSpacing": 0, + "lineHeight": 22, + } + } + testID="label" + > + My Checkbox + </Text> + <TouchableOpacity + disabled={false} + onPress={[Function]} + style={ + { + "alignItems": "center", + "flexDirection": "row", + "height": 24, + "opacity": 1, + } + } + > + <View + accessibilityRole="checkbox" + style={ + { + "alignItems": "center", + "backgroundColor": "#0376c9", + "borderColor": "border-muted", + "borderRadius": 4, + "borderWidth": 2, + "height": 20, + "justifyContent": "center", + "width": 20, + } + } + > + <SvgMock + color="#ffffff" + height={20} + name="CheckBold" + onPress={[Function]} + style={ + { + "height": 20, + "width": 20, + } + } + testID="checkbox-icon-component" + width={20} + /> + </View> + <View + style={ + { + "marginLeft": 12, + } + } + > + <Text + accessibilityRole="text" + style={ + { + "color": "#141618", + "fontFamily": "EuclidCircularB-Regular", + "fontSize": 14, + "fontWeight": "400", + "letterSpacing": 0, + "lineHeight": 22, + } + } + > + This is a checkbox + </Text> + </View> + </TouchableOpacity> + </View> + <Text + accessibilityRole="link" + accessible={true} + disabled={false} + id="submit" + onPress={[Function]} + onPressIn={[Function]} + onPressOut={[Function]} + style={ + { + "backgroundColor": "transparent", + "color": "#141618", + "fontFamily": "EuclidCircularB-Regular", + "fontSize": 14, + "fontWeight": "400", + "letterSpacing": 0, + "lineHeight": 22, + } + } + suppressHighlighting={true} + > + <Text + accessibilityRole="text" + style={ + { + "color": "#0376c9", + "fontFamily": "EuclidCircularB-Medium", + "fontSize": 14, + "fontWeight": "500", + "letterSpacing": 0, + "lineHeight": 22, + } + } + > + <Text + color="inherit" + > + Submit + </Text> + </Text> + </Text> + </View> + </View> + </View> + </RCTScrollView> + </View> + <View + data-renders={1} + testID="performance" + /> +</View> +`; + +exports[`SnapUIRenderer supports interactive inputs 1`] = ` +<View + style={ + { + "flexGrow": 1, + "minHeight": 667, + } + } +> + <View + style={ + { + "flex": 1, + "flexDirection": "column", + } + } + > + <RCTScrollView + style={ + { + "marginBottom": 0, + } + } + > + <View> + <View + color="Default" + flexDirection="column" + gap={8} + justifyContent="flex-start" + style={ + [ + { + "color": "Default", + "flexDirection": "column", + "gap": 8, + "justifyContent": "flex-start", + }, + undefined, + ] + } + > + <View + style={ + [ + {}, + undefined, + ] + } + > + <View + style={ + { + "alignItems": "center", + "backgroundColor": "#ffffff", + "borderColor": "#848c96", + "borderRadius": 8, + "borderWidth": 1, + "flexDirection": "row", + "height": 48, + "opacity": 1, + "paddingHorizontal": 16, + } + } + testID="textfield" + > + <View + style={ + { + "flex": 1, + } + } + > + <TextInput + autoFocus={false} + editable={true} + id="input" + onBlur={[Function]} + onChangeText={[Function]} + onFocus={[Function]} + style={ + { + "backgroundColor": "#ffffff", + "borderColor": "transparent", + "borderWidth": 1, + "color": "#141618", + "fontFamily": "Euclid Circular B", + "fontSize": 14, + "fontWeight": "400", + "height": 24, + "letterSpacing": 0, + "opacity": 1, + "paddingVertical": 0, + } + } + testID="input" + value="a" + /> + </View> + </View> + </View> + </View> + </View> + </RCTScrollView> + </View> + <View + data-renders={1} + testID="performance" + /> +</View> +`; + +exports[`SnapUIRenderer supports the onCancel prop 1`] = ` +<View + style={ + { + "flexGrow": 1, + "minHeight": 667, + } + } +> + <View + style={ + { + "flex": 1, + "flexDirection": "column", + } + } + > + <RCTScrollView + style={ + { + "marginBottom": 80, + } + } + > + <View> + <View + color="Default" + flexDirection="column" + gap={8} + justifyContent="flex-start" + style={ + [ + { + "color": "Default", + "flexDirection": "column", + "gap": 8, + "justifyContent": "flex-start", + }, + undefined, + ] + } + > + <Text + accessibilityRole="text" + fontWeight="normal" + style={ + { + "color": "inherit", + "fontFamily": "EuclidCircularB-Regular", + "fontSize": 14, + "fontWeight": "400", + "letterSpacing": 0, + "lineHeight": 22, + } + } + textAlign="left" + > + <Text + color="inherit" + > + Hello world! + </Text> + </Text> + </View> + </View> + </RCTScrollView> + <View + flexDirection="row" + gap={16} + padding={16} + style={ + { + "bottom": 0, + "height": 80, + "justifyContent": "space-evenly", + "paddingVertical": 16, + "position": "absolute", + "width": "100%", + } + } + > + <TouchableOpacity + accessibilityRole="button" + accessible={true} + activeOpacity={1} + disabled={false} + loading={false} + onPress={[MockFunction]} + onPressIn={[Function]} + onPressOut={[Function]} + style={ + { + "alignItems": "center", + "alignSelf": "flex-start", + "backgroundColor": "transparent", + "borderColor": "#0376c9", + "borderRadius": 24, + "borderWidth": 1, + "flex": 1, + "flexDirection": "row", + "height": 48, + "justifyContent": "center", + "paddingHorizontal": 16, + } + } + > + <Text + accessibilityRole="text" + style={ + { + "color": "#141618", + "fontFamily": "EuclidCircularB-Medium", + "fontSize": 14, + "fontWeight": "500", + "letterSpacing": 0, + "lineHeight": 22, + } + } + > + Cancel + </Text> + </TouchableOpacity> + <TouchableOpacity + accessibilityRole="button" + accessible={true} + activeOpacity={1} + disabled={false} + loading={false} + onPress={[Function]} + onPressIn={[Function]} + onPressOut={[Function]} + style={ + { + "alignItems": "center", + "alignSelf": "flex-start", + "backgroundColor": "#0376c9", + "borderRadius": 24, + "flex": 1, + "flexDirection": "row", + "height": 48, + "justifyContent": "center", + "paddingHorizontal": 16, + } + } + textVariant="sBodyMDMedium" + > + <View + style={ + { + "alignItems": "center", + "flexDirection": "row", + "gap": 4, + "justifyContent": "center", + } + } + > + <View + style={ + { + "alignItems": "center", + "backgroundColor": "#ffffff", + "borderRadius": 50, + "borderWidth": 0, + "height": 24, + "justifyContent": "center", + "overflow": "hidden", + "width": 24, + } + } + > + <Text + accessibilityRole="text" + style={ + { + "color": "#141618", + "fontFamily": "EuclidCircularB-Regular", + "fontSize": 14, + "fontWeight": "400", + "letterSpacing": 0, + "lineHeight": 22, + } + } + > + m + </Text> + </View> + <Text + accessibilityRole="text" + style={ + { + "color": "#ffffff", + "fontFamily": "EuclidCircularB-Medium", + "fontSize": 14, + "fontWeight": "500", + "letterSpacing": 0, + "lineHeight": 22, + } + } + > + <Text + color="inherit" + > + Foo + </Text> + </Text> + </View> + </TouchableOpacity> + </View> + </View> + <View + data-renders={1} + testID="performance" + /> +</View> +`; diff --git a/app/components/Snaps/SnapUIRenderer/components/address.ts b/app/components/Snaps/SnapUIRenderer/components/address.ts new file mode 100644 index 000000000000..8766939a878d --- /dev/null +++ b/app/components/Snaps/SnapUIRenderer/components/address.ts @@ -0,0 +1,15 @@ +import { AddressElement } from '@metamask/snaps-sdk/jsx'; +import { UIComponentFactory } from './types'; + +export const address: UIComponentFactory<AddressElement> = ({ + element: e, +}) => ({ + element: 'SnapUIAddress', + props: { + address: e.props.address, + avatarSize: 'xs', + truncate: e.props.truncate, + displayName: e.props.displayName, + avatar: e.props.avatar, + }, +}); diff --git a/app/components/Snaps/SnapUIRenderer/components/avatar.ts b/app/components/Snaps/SnapUIRenderer/components/avatar.ts new file mode 100644 index 000000000000..a90335b34375 --- /dev/null +++ b/app/components/Snaps/SnapUIRenderer/components/avatar.ts @@ -0,0 +1,10 @@ +import { AvatarElement } from '@metamask/snaps-sdk/jsx'; +import { UIComponentFactory } from './types'; + +export const avatar: UIComponentFactory<AvatarElement> = ({ element: e }) => ({ + element: 'SnapUIAvatar', + props: { + address: e.props.address, + size: e.props.size, + }, +}); diff --git a/app/components/Snaps/SnapUIRenderer/components/banner.test.ts b/app/components/Snaps/SnapUIRenderer/components/banner.test.ts new file mode 100644 index 000000000000..1c0219fc6d3c --- /dev/null +++ b/app/components/Snaps/SnapUIRenderer/components/banner.test.ts @@ -0,0 +1,107 @@ +import { banner } from './banner'; +import { BannerElement } from '@metamask/snaps-sdk/jsx'; +import { mockTheme } from '../../../../util/theme'; + +describe('banner component', () => { + const defaultParams = { + map: {}, + t: jest.fn(), + theme: mockTheme, + }; + + const createTextElement = ( + textContent: string, + ): BannerElement['props']['children'] => ({ + type: 'Text' as const, + key: 'mock-key', + props: { children: textContent }, + }); + + it('should render banner with some props', () => { + const el: BannerElement = { + type: 'Banner', + props: { + title: 'Test Title', + severity: 'info', + children: createTextElement('Test content'), + }, + key: null, + }; + + const result = banner({ element: el, ...defaultParams }); + + expect(result).toEqual({ + element: 'SnapUIBanner', + children: [ + { + element: 'Text', + key: 'mock-key', + children: [ + { + key: '4322bc9dfc78dd5fac77c48bc64efc877ae6265f8cc50c12a63fe3a62674e402_1', + element: 'RNText', + props: { + color: 'inherit', + }, + children: 'Test content', + }, + ], + props: { + color: 'inherit', + fontWeight: 'normal', + textAlign: 'left', + variant: 'sBodyMD', + }, + }, + ], + props: { + severity: 'Info', + title: 'Test Title', + }, + }); + }); + + it('should properly map danger to error severity prop', () => { + const el: BannerElement = { + type: 'Banner', + props: { + title: 'Test Title', + severity: 'danger', + children: createTextElement('Test content'), + }, + key: null, + }; + + const result = banner({ element: el, ...defaultParams }); + + expect(result).toEqual({ + element: 'SnapUIBanner', + children: [ + { + element: 'Text', + key: 'mock-key', + children: [ + { + key: '4322bc9dfc78dd5fac77c48bc64efc877ae6265f8cc50c12a63fe3a62674e402_2', + element: 'RNText', + props: { + color: 'inherit', + }, + children: 'Test content', + }, + ], + props: { + color: 'inherit', + fontWeight: 'normal', + textAlign: 'left', + variant: 'sBodyMD', + }, + }, + ], + props: { + severity: 'Error', + title: 'Test Title', + }, + }); + }); +}); diff --git a/app/components/Snaps/SnapUIRenderer/components/banner.ts b/app/components/Snaps/SnapUIRenderer/components/banner.ts new file mode 100644 index 000000000000..54974df6d684 --- /dev/null +++ b/app/components/Snaps/SnapUIRenderer/components/banner.ts @@ -0,0 +1,26 @@ +import { BannerElement, JSXElement } from '@metamask/snaps-sdk/jsx'; +import { getJsxChildren } from '@metamask/snaps-utils'; +import { mapToTemplate } from '../utils'; +import { UIComponentFactory } from './types'; + +function transformSeverity(severity: BannerElement['props']['severity']): string { + if (severity === 'danger') { + return 'Error'; + } + + return severity?.charAt(0).toUpperCase() + severity?.slice(1); +} + +export const banner: UIComponentFactory<BannerElement> = ({ + element: e, + ...params +}) => ({ + element: 'SnapUIBanner', + children: getJsxChildren(e).map((children) => + mapToTemplate({ element: children as JSXElement, ...params }), + ), + props: { + title: e.props.title, + severity: transformSeverity(e.props.severity), + }, +}); diff --git a/app/components/Snaps/SnapUIRenderer/components/bold.ts b/app/components/Snaps/SnapUIRenderer/components/bold.ts new file mode 100644 index 000000000000..50413d9e0a20 --- /dev/null +++ b/app/components/Snaps/SnapUIRenderer/components/bold.ts @@ -0,0 +1,23 @@ +import { BoldElement, JSXElement } from '@metamask/snaps-sdk/jsx'; +import { getJsxChildren } from '@metamask/snaps-utils'; +import { NonEmptyArray } from '@metamask/utils'; +import { mapTextToTemplate } from '../utils'; +import { UIComponentFactory } from './types'; +import { TextVariant } from '../../../../component-library/components/Texts/Text'; + +export const bold: UIComponentFactory<BoldElement> = ({ + element: e, + ...params +}) => ({ + element: 'Text', + children: mapTextToTemplate( + getJsxChildren(e) as NonEmptyArray<string | JSXElement>, + params, + ), + props: { + variant: TextVariant.BodyMDBold, + color: 'inherit', + numberOfLines: 0, + flexWrap: 'wrap', + }, +}); diff --git a/app/components/Snaps/SnapUIRenderer/components/box.test.ts b/app/components/Snaps/SnapUIRenderer/components/box.test.ts new file mode 100644 index 000000000000..c60690158aaa --- /dev/null +++ b/app/components/Snaps/SnapUIRenderer/components/box.test.ts @@ -0,0 +1,141 @@ +import { BoxElement } from '@metamask/snaps-sdk/jsx'; +import { box } from './box'; +import { TextColor } from '../../../../component-library/components/Texts/Text'; +import { FlexDirection } from '../../../UI/Box/box.types'; +import { mockTheme } from '../../../../util/theme'; + +describe('box UIComponentFactory', () => { + const mockParams = { + map: {}, + t: (key: string) => key, + theme: mockTheme, + }; + + const createTextElement = (text: string) => ({ + type: 'Text', + key: 'mock-key', + props: { children: text }, + }); + + it('transform BoxElement with default props', () => { + const mockElement: BoxElement = { + type: 'Box', + key: 'mock-key', + props: { + children: [createTextElement('Test content')], + }, + }; + + const result = box({ + element: mockElement, + ...mockParams, + }); + + expect(result).toEqual({ + element: 'Box', + children: [ + { + element: 'Text', + key: 'mock-key', + children: [ + { + key: '4322bc9dfc78dd5fac77c48bc64efc877ae6265f8cc50c12a63fe3a62674e402_1', + element: 'RNText', + children: 'Test content', + props: { color: 'inherit' }, + }, + ], + props: { + color: 'inherit', + fontWeight: 'normal', + textAlign: 'left', + variant: 'sBodyMD', + }, + }, + ], + props: { + flexDirection: FlexDirection.Column, + justifyContent: 'flex-start', + color: TextColor.Default, + alignItems: undefined, + gap: 8, + }, + }); + }); + + it('handle horizontal direction', () => { + const mockElement: BoxElement = { + type: 'Box', + key: 'mock-key', + props: { + direction: 'horizontal', + children: [createTextElement('Test content')], + }, + }; + + const result = box({ + element: mockElement, + ...mockParams, + }); + + expect(result.props?.flexDirection).toBe(FlexDirection.Row); + }); + + it('handle different alignments', () => { + const alignments = [ + 'center', + 'end', + 'space-between', + 'space-around', + ] as const; + + alignments.forEach((alignment) => { + const mockElement: BoxElement = { + type: 'Box', + key: 'mock-key', + props: { + alignment, + children: [createTextElement('Test content')], + }, + }; + + const result = box({ + element: mockElement, + ...mockParams, + }); + + const expected = { + center: 'center', + end: 'flex-end', + 'space-between': 'space-between', + 'space-around': 'space-around', + }[alignment]; + + expect(result.props?.justifyContent).toBe(expected); + }); + }); + + it('pass through additional BoxProps', () => { + const mockElement: BoxElement = { + type: 'Box', + key: 'mock-key', + props: { + children: [createTextElement('Test content')], + direction: 'horizontal', + alignment: 'center', + }, + }; + + const result = box({ + element: mockElement, + ...mockParams, + }); + + expect(result.props).toEqual( + expect.objectContaining({ + flexDirection: FlexDirection.Row, + justifyContent: 'center', + }), + ); + }); +}); diff --git a/app/components/Snaps/SnapUIRenderer/components/box.ts b/app/components/Snaps/SnapUIRenderer/components/box.ts new file mode 100644 index 000000000000..59f7b606ad9e --- /dev/null +++ b/app/components/Snaps/SnapUIRenderer/components/box.ts @@ -0,0 +1,74 @@ +import { BoxElement, JSXElement, BoxProps } from '@metamask/snaps-sdk/jsx'; +import { getJsxChildren } from '@metamask/snaps-utils'; +import { NonEmptyArray } from '@metamask/utils'; +import { mapToTemplate } from '../utils'; +import { UIComponent, UIComponentFactory } from './types'; +import { TextColor } from '../../../../component-library/components/Texts/Text/Text.types'; +import { + AlignItems, + FlexDirection, + JustifyContent, +} from '../../../UI/Box/box.types'; + +function generateJustifyContent(alignment?: BoxProps['alignment']) { + switch (alignment) { + default: + case 'start': + return JustifyContent.flexStart; + + case 'center': + return JustifyContent.center; + + case 'end': + return JustifyContent.flexEnd; + + case 'space-between': + return JustifyContent.spaceBetween; + + case 'space-around': + return JustifyContent.spaceAround; + } +} + +function generateAlignItems( + crossAlignment: BoxProps['crossAlignment'], + center?: BoxProps['center'], +) { + if (center) { + return AlignItems.center; + } + + switch (crossAlignment) { + default: + return undefined; + + case 'start': + return AlignItems.flexStart; + + case 'center': + return AlignItems.center; + + case 'end': + return AlignItems.flexEnd; + } +} + +export const box: UIComponentFactory<BoxElement> = ({ + element: e, + ...params +}) => ({ + element: 'Box', + children: getJsxChildren(e).map((children) => + mapToTemplate({ ...params, element: children as JSXElement }), + ) as NonEmptyArray<UIComponent>, + props: { + flexDirection: + e.props.direction === 'horizontal' + ? FlexDirection.Row + : FlexDirection.Column, + justifyContent: generateJustifyContent(e.props.alignment), + alignItems: generateAlignItems(e.props.crossAlignment, e.props.center), + color: TextColor.Default, + gap: 8, + }, +}); diff --git a/app/components/Snaps/SnapUIRenderer/components/button.ts b/app/components/Snaps/SnapUIRenderer/components/button.ts new file mode 100644 index 000000000000..ce8093e4f226 --- /dev/null +++ b/app/components/Snaps/SnapUIRenderer/components/button.ts @@ -0,0 +1,41 @@ +import { + ButtonElement, + ButtonProps, + JSXElement, +} from '@metamask/snaps-sdk/jsx'; +import { getJsxChildren } from '@metamask/snaps-utils'; +import { NonEmptyArray } from '@metamask/utils'; +import { mapTextToTemplate } from '../utils'; +import { UIComponentFactory } from './types'; +import { TextVariant } from '../../../../component-library/components/Texts/Text'; + +interface ButtonElementProps extends ButtonElement { + props: ButtonProps & { + loading?: boolean; + size?: 'sm' | 'md'; + }; +} + +export const button: UIComponentFactory<ButtonElementProps> = ({ + element: e, + ...params +}) => ({ + element: 'SnapUIButton', + props: { + type: e.props.type, + // This differs from the extension implementation because we don't have proper form support on RN + form: e.props.form ?? params.form, + variant: e.props.variant, + name: e.props.name, + disabled: e.props.disabled, + loading: e.props.loading ?? false, + textVariant: + e.props.size === 'sm' + ? TextVariant.BodySMMedium + : TextVariant.BodyMDMedium, + }, + children: mapTextToTemplate( + getJsxChildren(e) as NonEmptyArray<string | JSXElement>, + params, + ), +}); diff --git a/app/components/Snaps/SnapUIRenderer/components/card.ts b/app/components/Snaps/SnapUIRenderer/components/card.ts new file mode 100644 index 000000000000..a3d19bf84fc1 --- /dev/null +++ b/app/components/Snaps/SnapUIRenderer/components/card.ts @@ -0,0 +1,14 @@ +/* eslint-disable @typescript-eslint/no-shadow */ +import { CardElement } from '@metamask/snaps-sdk/jsx'; +import { UIComponentFactory } from './types'; + +export const card: UIComponentFactory<CardElement> = ({ element }) => ({ + element: 'SnapUICard', + props: { + image: element.props.image, + title: element.props.title, + description: element.props.description, + value: element.props.value, + extra: element.props.extra, + }, +}); diff --git a/app/components/Snaps/SnapUIRenderer/components/checkbox.ts b/app/components/Snaps/SnapUIRenderer/components/checkbox.ts new file mode 100644 index 000000000000..72f9d4f3d78c --- /dev/null +++ b/app/components/Snaps/SnapUIRenderer/components/checkbox.ts @@ -0,0 +1,17 @@ +import { CheckboxElement } from '@metamask/snaps-sdk/jsx'; + +import { UIComponentFactory } from './types'; + +export const checkbox: UIComponentFactory<CheckboxElement> = ({ + element: e, + form, +}) => ({ + element: 'SnapUICheckbox', + props: { + name: e.props.name, + label: e.props.label, + variant: e.props.variant, + disabled: e.props.disabled, + form, + }, +}); diff --git a/app/components/Snaps/SnapUIRenderer/components/container.test.ts b/app/components/Snaps/SnapUIRenderer/components/container.test.ts new file mode 100644 index 000000000000..33a5f374d183 --- /dev/null +++ b/app/components/Snaps/SnapUIRenderer/components/container.test.ts @@ -0,0 +1,131 @@ +import { BoxElement } from '@metamask/snaps-sdk/jsx'; +import { container } from './container'; +import { mapToTemplate } from '../utils'; +import { mockTheme } from '../../../../util/theme'; + +// First, properly mock the utils module +jest.mock('../utils', () => ({ + mapToTemplate: jest.fn(), +})); + +describe('container', () => { + const mockT = (key: string) => key; + + // Add beforeEach to set up the mock implementation for each test + beforeEach(() => { + (mapToTemplate as jest.Mock).mockReset(); + (mapToTemplate as jest.Mock).mockImplementation((e) => ({ + element: e.element.type, + props: e.element.props || {}, + children: e.element.children || [], + })); + }); + + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const createMockElement = (children: any[] = []): BoxElement => ({ + type: 'Box', + props: { + children, + }, + key: 'mock-key', + }); + + it('render basic container with single child', () => { + const mockElement = createMockElement([ + { type: 'text', props: {}, children: ['Hello'] }, + ]); + + const result = container({ + element: mockElement, + useFooter: false, + t: mockT, + map: {}, + theme: mockTheme, + }); + + expect(result).toMatchInlineSnapshot(` + { + "children": [ + { + "children": { + "children": [ + "Hello", + ], + "element": "text", + "props": {}, + }, + "element": "ScrollView", + "key": "default-scrollview", + "props": { + "style": { + "marginBottom": 0, + }, + }, + }, + ], + "element": "Box", + "props": { + "style": { + "flex": 1, + "flexDirection": "column", + }, + }, + } + `); + }); + + it('add footer button when useFooter is true and onCancel is provided', () => { + const mockElement = createMockElement([]); + const mockOnCancel = jest.fn(); + + const result = container({ + element: mockElement, + useFooter: true, + onCancel: mockOnCancel, + t: mockT, + map: {}, + theme: mockTheme, + }); + + expect(Array.isArray(result.children)).toBe(true); + // eslint-disable-next-line @typescript-eslint/no-explicit-any + expect((result.children as any[])[0]).toMatchInlineSnapshot(` + { + "children": { + "children": { + "children": "navigation.close", + "element": "SnapUIFooterButton", + "key": "default-button", + "props": { + "isSnapAction": false, + "onCancel": [MockFunction], + }, + }, + "element": "Box", + "key": "default-footer", + "props": { + "flexDirection": "row", + "gap": 16, + "padding": 16, + "style": { + "alignItems": "center", + "bottom": 0, + "height": 80, + "justifyContent": "space-evenly", + "paddingVertical": 16, + "position": "absolute", + "width": "100%", + }, + }, + }, + "element": "ScrollView", + "key": "default-scrollview", + "props": { + "style": { + "marginBottom": 0, + }, + }, + } + `); + }); +}); diff --git a/app/components/Snaps/SnapUIRenderer/components/container.ts b/app/components/Snaps/SnapUIRenderer/components/container.ts new file mode 100644 index 000000000000..7c8d44da01c3 --- /dev/null +++ b/app/components/Snaps/SnapUIRenderer/components/container.ts @@ -0,0 +1,74 @@ +import { BoxElement, JSXElement } from '@metamask/snaps-sdk/jsx'; +import { getJsxChildren } from '@metamask/snaps-utils'; +import { mapToTemplate } from '../utils'; +import { UIComponentFactory } from './types'; +import { DEFAULT_FOOTER } from './footer'; + +export const container: UIComponentFactory<BoxElement> = ({ + element: e, + useFooter, + onCancel, + t, + ...params +}) => { + const children = getJsxChildren(e); + + if (!useFooter && children.length === 2) { + children.pop(); + } + + const templateChildren = children.map((child) => + mapToTemplate({ + useFooter, + onCancel, + t, + ...params, + element: child as JSXElement, + }), + ); + + if (useFooter && onCancel && !children[1]) { + templateChildren.push({ + ...DEFAULT_FOOTER, + props: { + ...DEFAULT_FOOTER.props, + style: { ...DEFAULT_FOOTER.props.style, alignItems: 'center' }, + }, + children: { + element: 'SnapUIFooterButton', + key: 'default-button', + props: { + onCancel, + isSnapAction: false, + }, + children: t('navigation.close'), + }, + }); + } + + const content = templateChildren[0]; + const footer = templateChildren[1]; + + return { + element: 'Box', + children: [ + { + element: 'ScrollView', + key: 'default-scrollview', + children: content, + props: { + style: { + marginBottom: useFooter && footer ? 80 : 0, + }, + }, + }, + ...(footer ? [footer] : []), + ], + props: { + style: { + flex: 1, + flexDirection: 'column', + }, + }, + }; +}; diff --git a/app/components/Snaps/SnapUIRenderer/components/field.ts b/app/components/Snaps/SnapUIRenderer/components/field.ts new file mode 100644 index 000000000000..63620b714f0a --- /dev/null +++ b/app/components/Snaps/SnapUIRenderer/components/field.ts @@ -0,0 +1,103 @@ +import { + FieldElement, + InputElement, + JSXElement, + CheckboxElement, +} from '@metamask/snaps-sdk/jsx'; +import { getJsxChildren } from '@metamask/snaps-utils'; +import { getPrimaryChildElementIndex, mapToTemplate } from '../utils'; +import { checkbox as checkboxFn } from './checkbox'; +import { UIComponentFactory, UIComponentParams } from './types'; + +export const field: UIComponentFactory<FieldElement> = ({ + element: e, + form, + ...params +}) => { + // For fields we don't render the Input itself, we just adapt SnapUIInput. + const children = getJsxChildren(e); + const primaryChildIndex = getPrimaryChildElementIndex( + children as JSXElement[], + ); + const child = children[primaryChildIndex] as JSXElement; + + switch (child.type) { + case 'Input': { + const getLeftAccessory = () => + mapToTemplate({ + ...params, + element: children[0] as JSXElement, + }); + + const getRightAccessory = (accessoryIndex: number) => + mapToTemplate({ + ...params, + element: children[accessoryIndex] as JSXElement, + }); + + const input = child as InputElement; + + const leftAccessoryMapped = + primaryChildIndex > 0 ? getLeftAccessory() : undefined; + + let rightAccessoryIndex: number | undefined; + if (children[2]) { + rightAccessoryIndex = 2; + } else if (primaryChildIndex === 0 && children[1]) { + rightAccessoryIndex = 1; + } + const rightAccessoryMapped = rightAccessoryIndex + ? getRightAccessory(rightAccessoryIndex) + : undefined; + + return { + element: 'SnapUIInput', + props: { + id: input.props.name, + placeholder: input.props.placeholder, + label: e.props.label, + name: input.props.name, + form, + error: e.props.error, + disabled: child.props.disabled, + }, + propComponents: { + startAccessory: leftAccessoryMapped && { + ...leftAccessoryMapped, + props: { + ...leftAccessoryMapped.props, + padding: 0, + }, + }, + endAccessory: rightAccessoryMapped && { + ...rightAccessoryMapped, + props: { + ...rightAccessoryMapped.props, + padding: 0, + }, + }, + }, + }; + } + + case 'Checkbox': { + const checkbox = child as CheckboxElement; + const checkboxMapped = checkboxFn({ + element: checkbox, + } as UIComponentParams<CheckboxElement>); + return { + element: 'SnapUICheckbox', + props: { + ...checkboxMapped.props, + fieldLabel: e.props.label, + form, + error: e.props.error, + disabled: child.props.disabled, + }, + }; + } + + default: + throw new Error(`Invalid Field child: ${child.type}`); + } +}; diff --git a/app/components/Snaps/SnapUIRenderer/components/footer.test.ts b/app/components/Snaps/SnapUIRenderer/components/footer.test.ts new file mode 100644 index 000000000000..b9d310db963e --- /dev/null +++ b/app/components/Snaps/SnapUIRenderer/components/footer.test.ts @@ -0,0 +1,149 @@ +import { ButtonElement, FooterElement } from '@metamask/snaps-sdk/jsx'; +import { footer, DEFAULT_FOOTER } from './footer'; +import { ButtonVariant } from '@metamask/snaps-sdk'; +import { mockTheme } from '../../../../util/theme'; + +describe('footer', () => { + const mockT = (value: string) => `translated_${value}`; + const mockOnCancel = jest.fn(); + + const createButtonElement = ( + name?: string, + text: string = 'Button', + ): ButtonElement => ({ + key: 'mock-key', + type: 'Button', + props: { + children: [text], + ...(name ? { name } : {}), + }, + }); + + const createFooterElement = ( + children: ButtonElement[] = [], + ): FooterElement => ({ + key: 'mock-key', + type: 'Footer', + props: { + children: + children.length === 2 + ? ([children[0], children[1]] as [ButtonElement, ButtonElement]) + : children[0] || createButtonElement(), + }, + }); + + beforeEach(() => { + jest.clearAllMocks(); + }); + + it('return default footer structure with no buttons when no children and no onCancel', () => { + const footerElement = createFooterElement([]); + + const result = footer({ + element: footerElement, + t: mockT, + map: {}, + theme: mockTheme, + }); + + expect(result).toEqual({ + ...DEFAULT_FOOTER, + children: [ + { + element: 'SnapUIFooterButton', + key: 'snap-footer-button-0', + props: { + disabled: undefined, + form: undefined, + isSnapAction: true, + loading: false, + name: undefined, + onCancel: undefined, + textVariant: 'sBodyMDMedium', + type: undefined, + variant: 'primary', + }, + children: [ + { + key: '57fd48ba929aa415dc4c3996c826a75f8686418c77765eb14fad2658efa73d87_1', + element: 'RNText', + children: 'Button', + props: { color: 'inherit' }, + }, + ], + }, + ], + }); + }); + + it('add cancel button when onCancel is provided and only one child', () => { + const footerElement = createFooterElement([ + createButtonElement('confirm', 'Confirm'), + ]); + + const result = footer({ + element: footerElement, + t: mockT, + onCancel: mockOnCancel, + map: {}, + theme: mockTheme, + }); + + expect(Array.isArray(result.children)).toBe(true); + // eslint-disable-next-line @typescript-eslint/no-explicit-any + expect((result.children as any[])[0]).toEqual({ + element: 'SnapUIFooterButton', + key: 'default-button', + props: { + isSnapAction: false, + onCancel: mockOnCancel, + variant: 'secondary', + }, + children: 'translated_template_confirmation.cancel', + }); + }); + + it('handle multiple buttons with correct variants', () => { + const footerElement = createFooterElement([ + createButtonElement('reject', 'Reject'), + createButtonElement('confirm', 'Confirm'), + ]); + + const result = footer({ + element: footerElement, + t: mockT, + map: {}, + theme: mockTheme, + }); + + expect(Array.isArray(result.children)).toBe(true); + // eslint-disable-next-line @typescript-eslint/no-explicit-any + expect((result.children as any[])[0].props.variant).toBe( + ButtonVariant.Secondary, + ); + // eslint-disable-next-line @typescript-eslint/no-explicit-any + expect((result.children as any[])[1].props.variant).toBe( + ButtonVariant.Primary, + ); + // eslint-disable-next-line @typescript-eslint/no-explicit-any + expect((result.children as any[])[0].props.isSnapAction).toBe(true); + // eslint-disable-next-line @typescript-eslint/no-explicit-any + expect((result.children as any[])[1].props.isSnapAction).toBe(true); + }); + + it('use index as key when button name is not provided', () => { + const footerElement = createFooterElement([ + createButtonElement(undefined, 'Button'), + ]); + + const result = footer({ + element: footerElement, + t: mockT, + map: {}, + theme: mockTheme, + }); + + // eslint-disable-next-line @typescript-eslint/no-explicit-any + expect((result.children as any[])[0].key).toBe('snap-footer-button-0'); + }); +}); diff --git a/app/components/Snaps/SnapUIRenderer/components/footer.ts b/app/components/Snaps/SnapUIRenderer/components/footer.ts new file mode 100644 index 000000000000..61d6f81732ae --- /dev/null +++ b/app/components/Snaps/SnapUIRenderer/components/footer.ts @@ -0,0 +1,93 @@ +import { FooterElement, ButtonElement } from '@metamask/snaps-sdk/jsx'; +import { getJsxChildren } from '@metamask/snaps-utils'; +import { UIComponent, UIComponentFactory, UIComponentParams } from './types'; +import { ButtonVariant } from '@metamask/snaps-sdk'; +import { button as buttonFn } from './button'; +import { TemplateConfirmation } from '../../SnapDialogApproval/SnapsDialogApproval'; + +export const DEFAULT_FOOTER = { + element: 'Box', + key: 'default-footer', + props: { + flexDirection: 'row', + gap: 16, + padding: 16, + style: { + position: 'absolute', + bottom: 0, + width: '100%', + justifyContent: 'space-evenly', + paddingVertical: 16, + height: 80, + }, + }, +}; + +const getDefaultButtons = ( + footer: FooterElement, + t: (value: string) => string, + onCancel?: () => void, +) => { + const children = getJsxChildren(footer); + + // If onCancel is omitted by the caller we assume that it is safe to not display the default footer. + if (children.length === 1 && onCancel) { + return { + element: 'SnapUIFooterButton', + key: 'default-button', + props: { + onCancel, + variant: ButtonVariant.Secondary, + isSnapAction: false, + }, + children: t(TemplateConfirmation.CANCEL), + }; + } + + return undefined; +}; + +export const footer: UIComponentFactory<FooterElement> = ({ + element: e, + t, + onCancel, + ...params +}) => { + const defaultButtons = getDefaultButtons(e, t, onCancel); + const providedChildren = getJsxChildren(e); + + const footerChildren: UIComponent[] = ( + providedChildren as ButtonElement[] + ).map((children, index) => { + const buttonMapped = buttonFn({ + ...params, + t, + element: children, + onCancel, + } as UIComponentParams<ButtonElement>); + + return { + element: 'SnapUIFooterButton', + key: `snap-footer-button-${buttonMapped.props?.name ?? index}`, + props: { + ...buttonMapped.props, + variant: + providedChildren.length === 2 && index === 0 + ? ButtonVariant.Secondary + : ButtonVariant.Primary, + isSnapAction: true, + onCancel, + }, + children: buttonMapped.children, + }; + }); + + if (defaultButtons) { + footerChildren.unshift(defaultButtons as UIComponent); + } + + return { + ...DEFAULT_FOOTER, + children: footerChildren, + }; +}; diff --git a/app/components/Snaps/SnapUIRenderer/components/form.ts b/app/components/Snaps/SnapUIRenderer/components/form.ts new file mode 100644 index 000000000000..685f785ad953 --- /dev/null +++ b/app/components/Snaps/SnapUIRenderer/components/form.ts @@ -0,0 +1,25 @@ +import { FormElement, JSXElement } from '@metamask/snaps-sdk/jsx'; +import { getJsxChildren } from '@metamask/snaps-utils'; +import { NonEmptyArray } from '@metamask/utils'; +import { mapToTemplate } from '../utils'; +import { UIComponent, UIComponentFactory } from './types'; +import { FlexDirection } from '../../../UI/Box/box.types'; + +export const form: UIComponentFactory<FormElement> = ({ + element: e, + ...params +}) => ({ + // The Form is just a Box that does nothing on mobile. + element: 'Box', + children: getJsxChildren(e).map((children) => + mapToTemplate({ + element: children as JSXElement, + form: e.props.name, + ...params, + }), + ) as NonEmptyArray<UIComponent>, + props: { + flexDirection: FlexDirection.Column, + gap: 8, + }, +}); diff --git a/app/components/Snaps/SnapUIRenderer/components/heading.test.ts b/app/components/Snaps/SnapUIRenderer/components/heading.test.ts new file mode 100644 index 000000000000..13582bcad2ac --- /dev/null +++ b/app/components/Snaps/SnapUIRenderer/components/heading.test.ts @@ -0,0 +1,122 @@ +import { HeadingElement } from '@metamask/snaps-sdk/jsx'; +import { heading } from './heading'; +import { TextVariant } from '../../../../component-library/components/Texts/Text'; +import { FlexWrap } from '../../../UI/Box/box.types'; +import { mockTheme } from '../../../../util/theme'; + +describe('heading UIComponentFactory', () => { + it('transform HeadingElement into Text format with default size', () => { + const mockHeadingElement: HeadingElement = { + type: 'Heading', + key: 'mock-key', + props: { + children: 'Test Heading', + }, + }; + + const result = heading({ + element: mockHeadingElement, + map: {}, + t: (key: string) => key, + theme: mockTheme, + }); + + expect(result).toEqual({ + element: 'Text', + children: 'Test Heading', + props: { + variant: TextVariant.HeadingSM, + numberOfLines: 0, + flexWrap: FlexWrap.Wrap, + }, + }); + }); + + it('handle empty children prop', () => { + const mockHeadingElement = { + type: 'Heading', + props: { + children: '', + }, + }; + + const result = heading({ + element: mockHeadingElement as HeadingElement, + map: {}, + t: (key: string) => key, + theme: mockTheme, + }); + + expect(result).toEqual({ + element: 'Text', + children: '', + props: { + variant: TextVariant.HeadingSM, + numberOfLines: 0, + flexWrap: FlexWrap.Wrap, + }, + }); + }); + + it('handle complex children content', () => { + const mockHeadingElement = { + type: 'Heading', + props: { + children: ['Multiple ', 'Text ', 'Nodes'], + }, + }; + + const result = heading({ + element: mockHeadingElement as HeadingElement, + map: {}, + t: (key: string) => key, + theme: mockTheme, + }); + + expect(result).toEqual({ + element: 'Text', + children: ['Multiple ', 'Text ', 'Nodes'], + props: { + variant: TextVariant.HeadingSM, + numberOfLines: 0, + flexWrap: FlexWrap.Wrap, + }, + }); + }); + + it('handle different heading sizes', () => { + const sizes = ['sm', 'md', 'lg'] as const; + const expectedVariants = { + sm: TextVariant.HeadingSM, + md: TextVariant.HeadingMD, + lg: TextVariant.HeadingLG, + }; + + sizes.forEach((size) => { + const mockHeadingElement = { + type: 'Heading', + props: { + children: 'Test', + size, + }, + }; + + const result = heading({ + element: mockHeadingElement as HeadingElement, + map: {}, + t: (key: string) => key, + theme: mockTheme, + }); + + expect(result).toEqual({ + element: 'Text', + children: 'Test', + props: { + flexWrap: FlexWrap.Wrap, + variant: expectedVariants[size], + numberOfLines: 0, + }, + }); + }); + }); +}); diff --git a/app/components/Snaps/SnapUIRenderer/components/heading.ts b/app/components/Snaps/SnapUIRenderer/components/heading.ts new file mode 100644 index 000000000000..69468f4f672b --- /dev/null +++ b/app/components/Snaps/SnapUIRenderer/components/heading.ts @@ -0,0 +1,28 @@ +import { HeadingElement } from '@metamask/snaps-sdk/jsx'; +import { UIComponentFactory } from './types'; +import { TextVariant } from '../../../../component-library/components/Texts/Text'; + +export const generateSize = (size: HeadingElement['props']['size']) => { + switch (size) { + case 'sm': + return TextVariant.HeadingSM; + case 'md': + return TextVariant.HeadingMD; + case 'lg': + return TextVariant.HeadingLG; + default: + return TextVariant.HeadingSM; + } +}; + +export const heading: UIComponentFactory<HeadingElement> = ({ + element: e, +}) => ({ + element: 'Text', + children: e.props.children, + props: { + variant: generateSize(e.props.size), + numberOfLines: 0, + flexWrap: 'wrap', + }, +}); diff --git a/app/components/Snaps/SnapUIRenderer/components/icon.test.ts b/app/components/Snaps/SnapUIRenderer/components/icon.test.ts new file mode 100644 index 000000000000..4dad3474c03e --- /dev/null +++ b/app/components/Snaps/SnapUIRenderer/components/icon.test.ts @@ -0,0 +1,99 @@ +import { + IconColor, + IconName, + IconSize, +} from '../../../../component-library/components/Icons/Icon'; +import { IconName as SnapsIconName } from '@metamask/snaps-sdk/jsx'; +import { mockTheme } from '../../../../util/theme'; +import { icon } from './icon'; + +describe('Icon UIComponentFactory', () => { + const mockParams = { + map: {}, + t: jest.fn(), + theme: mockTheme, + }; + + it('create correct element configuration with valid props', () => { + const mockElement = { + props: { + name: IconName.Danger, + color: 'primary', + size: 'md', + }, + }; + + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const result = icon({ ...mockParams, element: mockElement as any }); + + expect(result).toEqual({ + element: 'SnapUIIcon', + props: { + name: IconName.Danger, + color: IconColor.Primary, + size: IconSize.Md, + }, + }); + }); + + it('handle minimal props with defaults', () => { + const mockElement = { + props: { + name: 'invalid-icon', + }, + }; + + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const result = icon({ ...mockParams, element: mockElement as any }); + + expect(result).toEqual({ + element: 'SnapUIIcon', + props: { + name: IconName.Danger, // Invalid names default to Danger + color: IconColor.Default, // Default color + size: IconSize.Sm, // Default size + }, + }); + }); + + it('maps color values correctly', () => { + const mockElement = { + props: { + name: IconName.Danger, + color: 'muted', + }, + }; + + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const result = icon({ ...mockParams, element: mockElement as any }); + + expect(result).toEqual({ + element: 'SnapUIIcon', + props: { + name: IconName.Danger, + color: IconColor.Muted, + size: IconSize.Sm, + }, + }); + }); + + it('maps names correctly', () => { + const mockElement = { + props: { + name: SnapsIconName.Arrow2Down, + }, + }; + + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const result = icon({ ...mockParams, element: mockElement as any }); + + expect(result).toEqual({ + element: 'SnapUIIcon', + props: { + name: IconName.Arrow2Down, + color: IconColor.Default, + size: IconSize.Sm, + }, + }); + }); +}); diff --git a/app/components/Snaps/SnapUIRenderer/components/icon.ts b/app/components/Snaps/SnapUIRenderer/components/icon.ts new file mode 100644 index 000000000000..3e5b451ef6ed --- /dev/null +++ b/app/components/Snaps/SnapUIRenderer/components/icon.ts @@ -0,0 +1,56 @@ +/* eslint-disable @typescript-eslint/no-shadow */ +import { IconElement } from '@metamask/snaps-sdk/jsx'; +import { UIComponentFactory } from './types'; +import { + IconColor, + IconName, + IconSize, +} from '../../../../component-library/components/Icons/Icon'; + +const ICON_NAMES = new Set(Object.values(IconName)); + +export const icon: UIComponentFactory<IconElement> = ({ element }) => { + const getIconName = () => { + const rawName = element.props.name; + // The icon names are formatted differently between extension and mobile, + // so we attempt to map from extension to the mobile format here. + const mappedName = rawName + .split('-') + .map((str) => str.charAt(0).toUpperCase() + str.slice(1)) + .join('') as IconName; + if (ICON_NAMES.has(mappedName)) { + return mappedName; + } + return IconName.Danger; + }; + + const getIconColor = () => { + switch (element.props.color) { + case 'muted': + return IconColor.Muted; + case 'primary': + return IconColor.Primary; + default: + return IconColor.Default; + } + }; + + const getIconSize = () => { + switch (element.props.size) { + case 'md': + return IconSize.Md; + default: + // TODO: In the extension this inherits the size of the parent. + return IconSize.Sm; + } + }; + + return { + element: 'SnapUIIcon', + props: { + name: getIconName(), + color: getIconColor(), + size: getIconSize(), + }, + }; +}; diff --git a/app/components/Snaps/SnapUIRenderer/components/image.ts b/app/components/Snaps/SnapUIRenderer/components/image.ts new file mode 100644 index 000000000000..c9198f64e55f --- /dev/null +++ b/app/components/Snaps/SnapUIRenderer/components/image.ts @@ -0,0 +1,25 @@ +import { ImageElement } from '@metamask/snaps-sdk/jsx'; +import { UIComponentFactory } from './types'; + +function generateBorderRadius( + borderRadius?: ImageElement['props']['borderRadius'], +) { + switch (borderRadius) { + default: + case 'none': + return 0; + + case 'medium': + return 6; + + // TODO: Support Full border radius (50%) + } +} + +export const image: UIComponentFactory<ImageElement> = ({ element: e }) => ({ + element: 'SnapUIImage', + props: { + value: e.props.src, + borderRadius: generateBorderRadius(e.props.borderRadius), + }, +}); diff --git a/app/components/Snaps/SnapUIRenderer/components/index.ts b/app/components/Snaps/SnapUIRenderer/components/index.ts new file mode 100644 index 000000000000..5184e17f97f8 --- /dev/null +++ b/app/components/Snaps/SnapUIRenderer/components/index.ts @@ -0,0 +1,43 @@ +import { box } from './box'; +import { text } from './text'; +import { row } from './row'; +import { button } from './button'; +import { banner } from './banner'; +import { input } from './input'; +import { bold } from './bold'; +import { value } from './value'; +import { card } from './card'; +import { footer } from './footer'; +import { container } from './container'; +import { heading } from './heading'; +import { link } from './link'; +import { image } from './image'; +import { form } from './form'; +import { icon } from './icon'; +import { field } from './field'; +import { section } from './section'; +import { address } from './address'; +import { avatar } from './avatar'; + +export const COMPONENT_MAPPING = { + Box: box, + Text: text, + Row: row, + Button: button, + Banner: banner, + Input: input, + Bold: bold, + Value: value, + Card: card, + Footer: footer, + Container: container, + Heading: heading, + Link: link, + Image: image, + Form: form, + Field: field, + Icon: icon, + Section: section, + Avatar: avatar, + Address: address, +}; diff --git a/app/components/Snaps/SnapUIRenderer/components/input.ts b/app/components/Snaps/SnapUIRenderer/components/input.ts new file mode 100644 index 000000000000..1ed6a6821939 --- /dev/null +++ b/app/components/Snaps/SnapUIRenderer/components/input.ts @@ -0,0 +1,18 @@ +import { InputElement } from '@metamask/snaps-sdk/jsx'; + +import { UIComponentFactory } from './types'; + +// TODO: Support min, max, type etc. +export const input: UIComponentFactory<InputElement> = ({ + element: e, + form, +}) => ({ + element: 'SnapUIInput', + props: { + id: e.props.name, + placeholder: e.props.placeholder, + disabled: e.props.disabled, + name: e.props.name, + form, + }, +}); diff --git a/app/components/Snaps/SnapUIRenderer/components/link.ts b/app/components/Snaps/SnapUIRenderer/components/link.ts new file mode 100644 index 000000000000..b043c40d7761 --- /dev/null +++ b/app/components/Snaps/SnapUIRenderer/components/link.ts @@ -0,0 +1,19 @@ +import { LinkElement, JSXElement } from '@metamask/snaps-sdk/jsx'; +import { getJsxChildren } from '@metamask/snaps-utils'; +import { NonEmptyArray } from '@metamask/utils'; +import { mapTextToTemplate } from '../utils'; +import { UIComponentFactory } from './types'; + +export const link: UIComponentFactory<LinkElement> = ({ + element: e, + ...params +}) => ({ + element: 'SnapUILink', + children: mapTextToTemplate( + getJsxChildren(e) as NonEmptyArray<string | JSXElement>, + params, + ), + props: { + href: e.props.href, + }, +}); diff --git a/app/components/Snaps/SnapUIRenderer/components/row.ts b/app/components/Snaps/SnapUIRenderer/components/row.ts new file mode 100644 index 000000000000..24ff867c66d7 --- /dev/null +++ b/app/components/Snaps/SnapUIRenderer/components/row.ts @@ -0,0 +1,28 @@ +/* eslint-disable @typescript-eslint/no-shadow */ +import { JSXElement, RowElement } from '@metamask/snaps-sdk/jsx'; + +import { mapToTemplate } from '../utils'; +import { UIComponent, UIComponentFactory } from './types'; +import { getJsxChildren } from '@metamask/snaps-utils'; +import { NonEmptyArray } from '@metamask/utils'; + +export enum RowVariant { + Default = 'default', + Critical = 'critical', + Warning = 'warning', +} + +export const row: UIComponentFactory<RowElement> = ({ + element, + ...params +}) => ({ + element: 'InfoRow', + children: getJsxChildren(element).map((children) => + mapToTemplate({ ...params, element: children as JSXElement }), + ) as NonEmptyArray<UIComponent>, + props: { + label: element.props.label, + variant: element.props.variant, + tooltip: element.props.tooltip, + }, +}); diff --git a/app/components/Snaps/SnapUIRenderer/components/section.ts b/app/components/Snaps/SnapUIRenderer/components/section.ts new file mode 100644 index 000000000000..981aad309ef1 --- /dev/null +++ b/app/components/Snaps/SnapUIRenderer/components/section.ts @@ -0,0 +1,29 @@ +import { SectionElement, BoxElement } from '@metamask/snaps-sdk/jsx'; +import { UIComponentFactory, UIComponentParams } from './types'; +import { box } from './box'; + +export const section: UIComponentFactory<SectionElement> = ({ + element: e, + theme, + ...params +}) => { + const { children, props } = box({ + element: e, + theme, + ...params, + } as unknown as UIComponentParams<BoxElement>); + + return { + element: 'Box', + children, + props: { + ...props, + padding: 16, + gap: 8, + // This is meant to be the inverse color of the container background. + // TODO: Support multiple background colors. + backgroundColor: theme.colors.background.alternative, + borderRadius: 8, + }, + }; +}; diff --git a/app/components/Snaps/SnapUIRenderer/components/text.test.ts b/app/components/Snaps/SnapUIRenderer/components/text.test.ts new file mode 100644 index 000000000000..d3763a02c21a --- /dev/null +++ b/app/components/Snaps/SnapUIRenderer/components/text.test.ts @@ -0,0 +1,139 @@ +import { text } from './text'; +import { + TextColor, + TextVariant, +} from '../../../../component-library/components/Texts/Text/Text.types'; +import { TextElement } from '@metamask/snaps-sdk/jsx'; +import { mockTheme } from '../../../../util/theme'; + +describe('text component', () => { + const defaultParams = { + map: {}, + useFooter: false, + onCancel: jest.fn(), + t: jest.fn(), + theme: mockTheme, + }; + + it('should render text with default props', () => { + const el: TextElement = { + type: 'Text', + props: { + children: ['Hello World'], + }, + key: null, + }; + + const result = text({ element: el, ...defaultParams }); + + expect(result).toEqual({ + element: 'Text', + children: [ + { + key: 'ac37e9a8c31a35346c51f0f9058d2e2f0aecde724a0d7192561af5625000f3d1_1', + element: 'RNText', + children: 'Hello World', + props: { color: 'inherit' }, + }, + ], + props: { + variant: TextVariant.BodyMD, + fontWeight: 'normal', + color: 'inherit', + textAlign: 'left', + }, + }); + }); + + it('should handle different text colors', () => { + const colors: TextElement['props']['color'][] = [ + 'default', + 'alternative', + 'muted', + 'error', + 'success', + 'warning', + ]; + + colors.forEach((color) => { + if (!color) return; + + const el: TextElement = { + type: 'Text', + props: { color, children: ['Test'] }, + key: null, + }; + + const result = text({ element: el, ...defaultParams }); + const capitalizedColor = color.charAt(0).toUpperCase() + color.slice(1); + expect(result.props?.color).toBe( + TextColor[capitalizedColor as keyof typeof TextColor], + ); + }); + }); + + it('should handle different font weights', () => { + const weights: TextElement['props']['fontWeight'][] = [ + 'bold', + 'medium', + 'regular', + ]; + const expectedWeights = { + bold: 'bold', + medium: 'medium', + regular: 'normal', + }; + + weights.forEach((weight) => { + if (!weight) return; + const el: TextElement = { + type: 'Text', + props: { fontWeight: weight, children: ['Test'] }, + key: null, + }; + + const result = text({ element: el, ...defaultParams }); + if (weight in expectedWeights) { + expect(result.props?.fontWeight).toBe(expectedWeights[weight]); + } + }); + }); + + it('should handle different text alignments', () => { + const alignments: TextElement['props']['alignment'][] = [ + 'start', + 'center', + 'end', + ]; + const expectedAlignments = { + start: 'left', + center: 'center', + end: 'right', + }; + + alignments.forEach((alignment) => { + if (!alignment) return; + const el: TextElement = { + type: 'Text', + props: { alignment, children: ['Test'] }, + key: null, + }; + + const result = text({ element: el, ...defaultParams }); + if (alignment in expectedAlignments) { + expect(result.props?.textAlign).toBe(expectedAlignments[alignment]); + } + }); + }); + + it('should handle different text sizes', () => { + const el: TextElement = { + type: 'Text', + props: { size: 'sm', children: ['Test'] }, + key: null, + }; + + const result = text({ element: el, ...defaultParams }); + expect(result.props?.variant).toBe(TextVariant.BodySM); + }); +}); diff --git a/app/components/Snaps/SnapUIRenderer/components/text.ts b/app/components/Snaps/SnapUIRenderer/components/text.ts new file mode 100644 index 000000000000..bdd9b64ebe8a --- /dev/null +++ b/app/components/Snaps/SnapUIRenderer/components/text.ts @@ -0,0 +1,70 @@ +import { JSXElement, TextElement } from '@metamask/snaps-sdk/jsx'; +import { getJsxChildren } from '@metamask/snaps-utils'; +import { NonEmptyArray } from '@metamask/utils'; +import { mapTextToTemplate } from '../utils'; +import { UIComponentFactory } from './types'; +import { + TextColor, + TextVariant, +} from '../../../../component-library/components/Texts/Text/Text.types'; + +function getTextColor(color: TextElement['props']['color']) { + switch (color) { + case 'default': + return TextColor.Default; + case 'alternative': + return TextColor.Alternative; + case 'muted': + return TextColor.Muted; + case 'error': + return TextColor.Error; + case 'success': + return TextColor.Success; + case 'warning': + return TextColor.Warning; + default: + return 'inherit'; + } +} + +function getFontWeight(color: TextElement['props']['fontWeight']) { + switch (color) { + case 'bold': + return 'bold'; + case 'medium': + return 'medium'; + case 'regular': + default: + return 'normal'; + } +} + +const alignText = (alignment: TextElement['props']['alignment']) => { + switch (alignment) { + case 'start': + return 'left'; + case 'center': + return 'center'; + case 'end': + return 'right'; + default: + return 'left'; + } +}; + +export const text: UIComponentFactory<TextElement> = ({ + element: e, + ...params +}) => ({ + element: 'Text', + children: mapTextToTemplate( + getJsxChildren(e) as NonEmptyArray<string | JSXElement>, + params, + ), + props: { + variant: e.props.size === 'sm' ? TextVariant.BodySM : TextVariant.BodyMD, + fontWeight: getFontWeight(e.props.fontWeight), + color: getTextColor(e.props.color), + textAlign: alignText(e.props.alignment), + }, +}); diff --git a/app/components/Snaps/SnapUIRenderer/components/types.ts b/app/components/Snaps/SnapUIRenderer/components/types.ts new file mode 100644 index 000000000000..76659b74cdf0 --- /dev/null +++ b/app/components/Snaps/SnapUIRenderer/components/types.ts @@ -0,0 +1,23 @@ +import { JSXElement, SnapsChildren } from '@metamask/snaps-sdk/jsx'; +import { Theme } from '../../../../util/theme/models'; + +export interface UIComponentParams<T extends JSXElement> { + map: Record<string, number>; + element: T; + form?: string; + useFooter?: boolean; + onCancel?: () => void; + t: (key: string) => string; + theme: Theme; +} + +export interface UIComponent { + element: string; + props?: Record<string, unknown>; + children?: SnapsChildren<UIComponent | string>; + key?: string; +} + +export type UIComponentFactory<T extends JSXElement> = ( + params: UIComponentParams<T>, +) => UIComponent; diff --git a/app/components/Snaps/SnapUIRenderer/components/value.ts b/app/components/Snaps/SnapUIRenderer/components/value.ts new file mode 100644 index 000000000000..37641befe744 --- /dev/null +++ b/app/components/Snaps/SnapUIRenderer/components/value.ts @@ -0,0 +1,10 @@ +import { ValueElement } from '@metamask/snaps-sdk/jsx'; +import { UIComponentFactory } from './types'; + +export const value: UIComponentFactory<ValueElement> = ({ element: e }) => ({ + element: 'ConfirmInfoRowValueDouble', + props: { + left: e.props.extra, + right: e.props.value, + }, +}); diff --git a/app/components/Snaps/SnapUIRenderer/utils.test.ts b/app/components/Snaps/SnapUIRenderer/utils.test.ts new file mode 100644 index 000000000000..eb8b5ce3e177 --- /dev/null +++ b/app/components/Snaps/SnapUIRenderer/utils.test.ts @@ -0,0 +1,50 @@ +import { mapToTemplate } from './utils'; +import { strings } from '../../../../locales/i18n'; +import { JSXElement } from '@metamask/snaps-sdk/jsx'; +import { mockTheme } from '../../../util/theme'; + +describe('SnapUIRenderer utils', () => { + describe('mapToTemplate', () => { + it('map basic text content', () => { + const el: JSXElement = { + type: 'Text', + props: { + children: 'Test Content', + }, + key: null, + }; + + const result = mapToTemplate({ + map: {}, + element: el, + useFooter: false, + onCancel: jest.fn(), + t: strings, + theme: mockTheme, + }); + + expect(result).toMatchInlineSnapshot(` + { + "children": [ + { + "children": "Test Content", + "element": "RNText", + "key": "87ada83862ef4cde3ca2a1f8cbfbbc38af6f971cb4d669224ab903ffc2c7d1bd_2", + "props": { + "color": "inherit", + }, + }, + ], + "element": "Text", + "key": "87ada83862ef4cde3ca2a1f8cbfbbc38af6f971cb4d669224ab903ffc2c7d1bd_1", + "props": { + "color": "inherit", + "fontWeight": "normal", + "textAlign": "left", + "variant": "sBodyMD", + }, + } + `); + }); + }); +}); diff --git a/app/components/Snaps/SnapUIRenderer/utils.ts b/app/components/Snaps/SnapUIRenderer/utils.ts new file mode 100644 index 000000000000..694f2aa8b65b --- /dev/null +++ b/app/components/Snaps/SnapUIRenderer/utils.ts @@ -0,0 +1,194 @@ +import { JSXElement, GenericSnapElement , Text } from '@metamask/snaps-sdk/jsx'; +import { hasChildren } from '@metamask/snaps-utils'; +import { memoize } from 'lodash'; +import { sha256 } from '@noble/hashes/sha256'; +import { + NonEmptyArray, + bytesToHex, + hasProperty, + remove0x, +} from '@metamask/utils'; +import { COMPONENT_MAPPING } from './components'; +import { unescape as unescapeFn } from 'he'; +import { FormState, InterfaceState, State } from '@metamask/snaps-sdk'; +import { UIComponent } from './components/types'; +import { Theme } from '../../../util/theme/models'; + +export interface MapToTemplateParams { + map: Record<string, number>; + element: JSXElement; + form?: string; + useFooter?: boolean; + onCancel?: () => void; + onConfirm?: () => void; + t?: (key: string) => string; + theme: Theme; +} + +/** + * Get a truncated version of component children to use in a hash. + * + * @param component - The component. + * @returns A truncated version of component children to use in a hash. + */ +function getChildrenForHash(component: JSXElement) { + if (!hasChildren(component)) { + return null; + } + + const { children } = component.props; + + if (typeof children === 'string') { + // For the hash we reduce long strings + return children.slice(0, 5000); + } + + if (Array.isArray(children)) { + // For arrays of children we just use the types + return (children as GenericSnapElement[]).map((child) => ({ + type: child?.type ?? null, + })); + } + + return children; +} + +/** + * A memoized function for generating a hash that represents a Snap UI component. + * + * This can be used to generate React keys for components. + * + * @param component - The component. + * @returns A hash as a string. + */ +const generateHash = memoize((component: JSXElement) => { + const { type, props } = component; + const { name } = props as { name?: string }; + const children = getChildrenForHash(component); + return remove0x( + bytesToHex( + // TODO: Benchmark + sha256( + JSON.stringify({ + type, + name: name ?? null, + children, + }), + ), + ), + ); +}); + +/** + * Generate a React key to be used for a Snap UI component. + * + * This function also handles collisions between duplicate keys. + * + * @param map - A map of previously used keys to be used for collision handling. + * @param component - The component. + * @returns A key. + */ +function generateKey( + map: Record<string, number>, + component: JSXElement, +): string { + const hash = generateHash(component); + const count = (map[hash] ?? 0) + 1; + map[hash] = count; + return `${hash}_${count}`; +} + +/** + * Extract and return first character (letter or number) of a provided string. + * If not possible, return question mark. + * Note: This function is used for generating fallback avatars for different entities (websites, Snaps, etc.) + * Note: Only letters and numbers will be returned if possible (special characters are ignored). + * + * @param {string} subjectName - Name of a subject. + * @returns Single character, chosen from the first character or number, question mark otherwise. + */ +export const getAvatarFallbackLetter = (subjectName?: string | null) => + subjectName?.match(/[a-z0-9]/iu)?.[0] ?? '?'; + +export const mapToTemplate = (params: MapToTemplateParams): UIComponent => { + const { type, key } = params.element; + const elementKey = key ?? generateKey(params.map, params.element); + + if (!hasProperty(COMPONENT_MAPPING, type)) { + throw new Error(`Unknown component type: ${type}`); + } + + const componentFn = COMPONENT_MAPPING[ + type as keyof typeof COMPONENT_MAPPING + ] as (params: MapToTemplateParams) => UIComponent; + const mapped = componentFn(params); + return { ...mapped, key: elementKey } as UIComponent; +}; + +export const mapTextToTemplate = ( + elements: NonEmptyArray<JSXElement | string>, + params: Pick<MapToTemplateParams, 'map' | 'useFooter' | 'onCancel' | 'theme'>, +): NonEmptyArray<UIComponent | string> => + elements.map((e) => { + if (typeof e === 'string') { + // React Native cannot render strings directly, so we map to an element where we control the props. + const text = unescapeFn(e); + const key = generateKey(params.map, Text({ children: text })); + return { + element: 'RNText', + key, + children: text, + props: { color: 'inherit' }, + }; + } + return mapToTemplate({ ...params, element: e }); + }) as NonEmptyArray<UIComponent | string>; + +/** + * Merge a new input value in the interface state. + * + * @param state - The current interface state. + * @param name - The input name. + * @param value - The input value. + * @param form - The name of the form containing the input. + * Optional if the input is not contained in a form. + * @returns The interface state with the new value merged in. + */ +export const mergeValue = <Type extends State>( + state: InterfaceState, + name: string, + value: Type | null, + form?: string, +): InterfaceState => { + if (form) { + return { + ...state, + [form]: { + ...(state[form] as FormState), + [name]: value, + }, + }; + } + return { ...state, [name]: value }; +}; + +/** + * Registry of element types that are used within Field element. + */ +export const FIELD_ELEMENT_TYPES = [ + 'FileInput', + 'Input', + 'Dropdown', + 'RadioGroup', + 'Checkbox', + 'Selector', +]; + +/** + * Search for the element that is considered to be primary child element of a Field. + * + * @param children - Children elements specified within Field element. + * @returns Number, representing index of a primary field in the array of children elements. + */ +export const getPrimaryChildElementIndex = (children: JSXElement[]) => + children.findIndex((c) => FIELD_ELEMENT_TYPES.includes(c.type)); diff --git a/app/components/UI/AccountApproval/index.js b/app/components/UI/AccountApproval/index.js index e9e26c8682b3..7e55be10c093 100644 --- a/app/components/UI/AccountApproval/index.js +++ b/app/components/UI/AccountApproval/index.js @@ -24,7 +24,7 @@ import SDKConnect from '../../../core/SDKConnect/SDKConnect'; import { selectAccountsLength } from '../../../selectors/accountTrackerController'; import { selectSelectedInternalAccountFormattedAddress } from '../../../selectors/accountsController'; import { - selectChainId, + selectEvmChainId, selectProviderType, } from '../../../selectors/networkController'; import { selectTokensLength } from '../../../selectors/tokensController'; @@ -413,7 +413,7 @@ const mapStateToProps = (state) => ({ tokensLength: selectTokensLength(state), selectedAddress: selectSelectedInternalAccountFormattedAddress(state), networkType: selectProviderType(state), - chainId: selectChainId(state), + chainId: selectEvmChainId(state), }); AccountApproval.contextType = ThemeContext; diff --git a/app/components/UI/AccountFromToInfoCard/AccountFromToInfoCard.tsx b/app/components/UI/AccountFromToInfoCard/AccountFromToInfoCard.tsx index 7fcfb3dc9e04..358d2001d651 100644 --- a/app/components/UI/AccountFromToInfoCard/AccountFromToInfoCard.tsx +++ b/app/components/UI/AccountFromToInfoCard/AccountFromToInfoCard.tsx @@ -5,7 +5,7 @@ import { Text, TouchableOpacity, View } from 'react-native'; import TransactionTypes from '../../../core/TransactionTypes'; import { strings } from '../../../../locales/i18n'; import { - selectChainId, + selectEvmChainId, selectTicker, } from '../../../selectors/networkController'; import { collectConfusables } from '../../../util/confusables'; @@ -194,7 +194,7 @@ const AccountFromToInfoCard = (props: AccountFromToInfoCardProps) => { const mapStateToProps = (state: RootState) => ({ internalAccounts: selectInternalAccounts(state), - chainId: selectChainId(state), + chainId: selectEvmChainId(state), ticker: selectTicker(state), }); diff --git a/app/components/UI/AccountFromToInfoCard/AddressFrom.tsx b/app/components/UI/AccountFromToInfoCard/AddressFrom.tsx index 8efc38182137..65d1021ea9d7 100644 --- a/app/components/UI/AccountFromToInfoCard/AddressFrom.tsx +++ b/app/components/UI/AccountFromToInfoCard/AddressFrom.tsx @@ -10,8 +10,8 @@ import Text from '../../../component-library/components/Texts/Text'; import { useStyles } from '../../../component-library/hooks'; import { selectAccountsByChainId } from '../../../selectors/accountTrackerController'; import { - selectNetworkImageSource, - selectNetworkName, + selectEvmNetworkImageSource, + selectEvmNetworkName, } from '../../../selectors/networkInfos'; import { getLabelTextByAddress, @@ -55,7 +55,7 @@ const AddressFrom = ({ const internalAccounts = useSelector(selectInternalAccounts); const activeAddress = toChecksumAddress(from); - const networkName = useSelector(selectNetworkName); + const networkName = useSelector(selectEvmNetworkName); const useBlockieIcon = useSelector( // TODO: Replace "any" with type @@ -74,7 +74,7 @@ const AddressFrom = ({ } }, [accountsByChainId, internalAccounts, activeAddress, origin]); - const networkImage = useSelector(selectNetworkImageSource); + const networkImage = useSelector(selectEvmNetworkImageSource); const accountTypeLabel = getLabelTextByAddress(activeAddress); diff --git a/app/components/UI/AccountRightButton/index.tsx b/app/components/UI/AccountRightButton/index.tsx index b144242f5f2e..37cebbd223c2 100644 --- a/app/components/UI/AccountRightButton/index.tsx +++ b/app/components/UI/AccountRightButton/index.tsx @@ -23,13 +23,13 @@ import Badge, { BadgeVariant, } from '../../../component-library/components/Badges/Badge'; import BadgeWrapper from '../../../component-library/components/Badges/BadgeWrapper'; -import { selectProviderConfig } from '../../../selectors/networkController'; import Routes from '../../../constants/navigation/Routes'; import { MetaMetricsEvents } from '../../../core/Analytics'; import { AccountOverviewSelectorsIDs } from '../../../../e2e/selectors/Browser/AccountOverview.selectors'; import { useMetrics } from '../../../components/hooks/useMetrics'; import { useNetworkInfo } from '../../../selectors/selectedNetworkController'; import UrlParser from 'url-parse'; +import { selectEvmChainId } from '../../../selectors/networkController'; const styles = StyleSheet.create({ leftButton: { @@ -72,7 +72,7 @@ const AccountRightButton = ({ /** * Current network */ - const providerConfig = useSelector(selectProviderConfig); + const chainId = useSelector(selectEvmChainId); const handleKeyboardVisibility = useCallback( (visibility: boolean) => () => { @@ -117,11 +117,14 @@ const AccountRightButton = ({ if (!selectedAddress && isNetworkVisible) { navigate(Routes.MODAL.ROOT_MODAL_FLOW, { screen: Routes.SHEET.NETWORK_SELECTOR, + params: { + evmChainId: chainId, + }, }); trackEvent( createEventBuilder(MetaMetricsEvents.NETWORK_SELECTOR_PRESSED) .addProperties({ - chain_id: getDecimalChainId(providerConfig.chainId), + chain_id: getDecimalChainId(chainId), }) .build(), ); @@ -132,11 +135,11 @@ const AccountRightButton = ({ dismissKeyboard, selectedAddress, isNetworkVisible, - onPress, navigate, - providerConfig.chainId, trackEvent, createEventBuilder, + chainId, + onPress, ]); const route = useRoute<RouteProp<Record<string, { url: string }>, string>>(); diff --git a/app/components/UI/AccountSelectorList/AccountSelectorList.tsx b/app/components/UI/AccountSelectorList/AccountSelectorList.tsx index c672eb7dcdef..f56a6e2ba920 100644 --- a/app/components/UI/AccountSelectorList/AccountSelectorList.tsx +++ b/app/components/UI/AccountSelectorList/AccountSelectorList.tsx @@ -146,7 +146,7 @@ const AccountSelectorList = ({ safeToChecksumAddress(accountAddress) : isAccountSelected, ) as Account; - let nextActiveAddress = account?.address; + let nextActiveAddress = account.address; if (isSelected) { const nextActiveIndex = index === 0 ? 1 : index - 1; nextActiveAddress = accounts[nextActiveIndex]?.address; diff --git a/app/components/UI/AccountSelectorList/AccountSelectorList.types.ts b/app/components/UI/AccountSelectorList/AccountSelectorList.types.ts index a2f651c718e9..73dfba942035 100644 --- a/app/components/UI/AccountSelectorList/AccountSelectorList.types.ts +++ b/app/components/UI/AccountSelectorList/AccountSelectorList.types.ts @@ -10,7 +10,7 @@ import { Account, UseAccounts } from '../../hooks/useAccounts'; */ export interface AccountSelectorListProps extends Partial<FlatListProps<Account>>, - UseAccounts { + Omit<UseAccounts, 'evmAccounts'> { /** * Optional callback to trigger when account is selected. */ diff --git a/app/components/UI/AddToAddressBookWrapper/AddToAddressBookWrapper.tsx b/app/components/UI/AddToAddressBookWrapper/AddToAddressBookWrapper.tsx index 677a52b7cac7..83552c028a8f 100644 --- a/app/components/UI/AddToAddressBookWrapper/AddToAddressBookWrapper.tsx +++ b/app/components/UI/AddToAddressBookWrapper/AddToAddressBookWrapper.tsx @@ -7,7 +7,7 @@ import { AddAddressModalSelectorsIDs } from '../../../../e2e/selectors/SendFlow/ import { strings } from '../../../../locales/i18n'; import Engine from '../../../core/Engine'; import { baseStyles } from '../../../styles/common'; -import { selectChainId } from '../../../selectors/networkController'; +import { selectEvmChainId } from '../../../selectors/networkController'; import { useTheme } from '../../../util/theme'; import Text from '../../Base/Text'; import useExistingAddress from '../../hooks/useExistingAddress'; @@ -28,7 +28,7 @@ export const AddToAddressBookWrapper = ({ setToAddressName, defaultNull = false, }: AddToAddressBookWrapperProps) => { - const chainId = useSelector(selectChainId); + const chainId = useSelector(selectEvmChainId); const existingContact = useExistingAddress(address); const { colors, themeAppearance } = useTheme(); diff --git a/app/components/UI/AssetOverview/AssetOverview.test.tsx b/app/components/UI/AssetOverview/AssetOverview.test.tsx index 63787993d68b..30bc9f6dba5f 100644 --- a/app/components/UI/AssetOverview/AssetOverview.test.tsx +++ b/app/components/UI/AssetOverview/AssetOverview.test.tsx @@ -20,6 +20,8 @@ import * as networks from '../../../util/networks'; // eslint-disable-next-line import/no-namespace import * as transactions from '../../../util/transactions'; import { mockNetworkState } from '../../../util/test/network'; +import Engine from '../../../core/Engine'; +import Routes from '../../../constants/navigation/Routes'; const MOCK_CHAIN_ID = '0x1'; @@ -106,6 +108,9 @@ jest.mock('../../../core/Engine', () => ({ .mockReturnValue(mockNetworkConfiguration), setActiveNetwork: jest.fn().mockResolvedValue(undefined), }, + MultichainNetworkController: { + setActiveNetwork: jest.fn().mockResolvedValue(undefined), + }, }, })); @@ -338,4 +343,120 @@ describe('AssetOverview', () => { const buyButton = queryByTestId(TokenOverviewSelectorsIDs.BUY_BUTTON); expect(buyButton).toBeNull(); }); + + describe('Portfolio view network switching', () => { + beforeEach(() => { + jest.spyOn(networks, 'isPortfolioViewEnabled').mockReturnValue(true); + jest.useFakeTimers(); + // Reset mocks before each test + jest.clearAllMocks(); + }); + + afterEach(() => { + jest.useRealTimers(); + }); + + it('should switch networks before sending when on different chain', async () => { + const differentChainAsset = { + ...asset, + chainId: '0x89', // Different chain (Polygon) + }; + + const { getByTestId } = renderWithProvider( + <AssetOverview + asset={differentChainAsset} + displayBuyButton + displaySwapsButton + swapsIsLive + />, + { state: mockInitialState }, + ); + + const sendButton = getByTestId('token-send-button'); + await fireEvent.press(sendButton); + + // Wait for all promises to resolve + await Promise.resolve(); + + expect(navigate).toHaveBeenCalledWith(Routes.WALLET.HOME, { + screen: Routes.WALLET.TAB_STACK_FLOW, + params: { + screen: Routes.WALLET_VIEW, + }, + }); + }); + + it('should switch networks before swapping when on different chain', async () => { + const differentChainAsset = { + ...asset, + chainId: '0x89', // Different chain (Polygon) + }; + + const { getByTestId } = renderWithProvider( + <AssetOverview + asset={differentChainAsset} + displayBuyButton + displaySwapsButton + swapsIsLive + />, + { state: mockInitialState }, + ); + + const swapButton = getByTestId('token-swap-button'); + await fireEvent.press(swapButton); + + // Wait for all promises to resolve + await Promise.resolve(); + + expect(navigate).toHaveBeenCalledWith(Routes.WALLET.HOME, { + screen: Routes.WALLET.TAB_STACK_FLOW, + params: { + screen: Routes.WALLET_VIEW, + }, + }); + + expect( + Engine.context.NetworkController.getNetworkConfigurationByChainId, + ).toHaveBeenCalledWith('0x89'); + + // Fast-forward timers to trigger the swap navigation + jest.advanceTimersByTime(500); + + expect(navigate).toHaveBeenCalledWith('Swaps', { + screen: 'SwapsAmountView', + params: { + sourceToken: differentChainAsset.address, + sourcePage: 'MainView', + chainId: '0x89', + }, + }); + }); + + it('should not switch networks when on same chain', async () => { + const sameChainAsset = { + ...asset, + chainId: MOCK_CHAIN_ID, // Same chain as current + }; + + const { getByTestId } = renderWithProvider( + <AssetOverview + asset={sameChainAsset} + displayBuyButton + displaySwapsButton + swapsIsLive + />, + { state: mockInitialState }, + ); + + const sendButton = getByTestId('token-send-button'); + await fireEvent.press(sendButton); + + // Wait for all promises to resolve + await Promise.resolve(); + + expect( + Engine.context.MultichainNetworkController.setActiveNetwork, + ).not.toHaveBeenCalled(); + }); + }); }); diff --git a/app/components/UI/AssetOverview/AssetOverview.tsx b/app/components/UI/AssetOverview/AssetOverview.tsx index 3bb73aa331c3..766ed91954bd 100644 --- a/app/components/UI/AssetOverview/AssetOverview.tsx +++ b/app/components/UI/AssetOverview/AssetOverview.tsx @@ -10,7 +10,7 @@ import { newAssetTransaction } from '../../../actions/transaction'; import AppConstants from '../../../core/AppConstants'; import Engine from '../../../core/Engine'; import { - selectChainId, + selectEvmChainId, selectNativeCurrencyByChainId, selectSelectedNetworkClientId, selectTicker, @@ -95,7 +95,6 @@ const AssetOverview: React.FC<AssetOverviewProps> = ({ const primaryCurrency = useSelector( (state: RootState) => state.settings.primaryCurrency, ); - const goToBridge = useGoToBridge('TokenDetails'); const selectedAddress = useSelector( selectSelectedInternalAccountFormattedAddress, ); @@ -103,9 +102,8 @@ const AssetOverview: React.FC<AssetOverviewProps> = ({ const tokenExchangeRates = useSelector(selectContractExchangeRates); const allTokenMarketData = useSelector(selectTokenMarketData); const tokenBalances = useSelector(selectContractBalances); - const selectedChainId = useSelector((state: RootState) => - selectChainId(state), - ); + const selectedChainId = useSelector(selectEvmChainId); + const selectedTicker = useSelector((state: RootState) => selectTicker(state)); const nativeCurrency = useSelector((state: RootState) => @@ -176,6 +174,24 @@ const AssetOverview: React.FC<AssetOverviewProps> = ({ }); }, [navigation, asset.address, asset.chainId]); + const handleBridgeNavigation = useCallback(() => { + navigation.navigate('Bridge', { + screen: 'BridgeView', + params: { + sourceToken: asset.address, + sourcePage: 'MainView', + chainId: asset.chainId, + }, + }); + }, [navigation, asset.address, asset.chainId]); + + const goToPortfolioBridge = useGoToBridge('TokenDetails'); + + const goToBridge = + process.env.MM_BRIDGE_UI_ENABLED === 'true' + ? handleBridgeNavigation + : goToPortfolioBridge; + const onSend = async () => { if (isPortfolioViewEnabled()) { navigation.navigate(Routes.WALLET.HOME, { @@ -186,7 +202,8 @@ const AssetOverview: React.FC<AssetOverviewProps> = ({ }); if (asset.chainId !== selectedChainId) { - const { NetworkController } = Engine.context; + const { NetworkController, MultichainNetworkController } = + Engine.context; const networkConfiguration = NetworkController.getNetworkConfigurationByChainId( asset.chainId as Hex, @@ -197,7 +214,9 @@ const AssetOverview: React.FC<AssetOverviewProps> = ({ networkConfiguration.defaultRpcEndpointIndex ]?.networkClientId; - await NetworkController.setActiveNetwork(networkClientId as string); + await MultichainNetworkController.setActiveNetwork( + networkClientId as string, + ); } } if ((asset.isETH || asset.isNative) && ticker) { @@ -217,7 +236,8 @@ const AssetOverview: React.FC<AssetOverviewProps> = ({ }, }); if (asset.chainId !== selectedChainId) { - const { NetworkController } = Engine.context; + const { NetworkController, MultichainNetworkController } = + Engine.context; const networkConfiguration = NetworkController.getNetworkConfigurationByChainId( asset.chainId as Hex, @@ -228,13 +248,13 @@ const AssetOverview: React.FC<AssetOverviewProps> = ({ networkConfiguration.defaultRpcEndpointIndex ]?.networkClientId; - NetworkController.setActiveNetwork(networkClientId as string).then( - () => { - setTimeout(() => { - handleSwapNavigation(); - }, 500); - }, - ); + MultichainNetworkController.setActiveNetwork( + networkClientId as string, + ).then(() => { + setTimeout(() => { + handleSwapNavigation(); + }, 500); + }); } else { handleSwapNavigation(); } diff --git a/app/components/UI/Box/Box.test.tsx b/app/components/UI/Box/Box.test.tsx new file mode 100644 index 000000000000..19926e968226 --- /dev/null +++ b/app/components/UI/Box/Box.test.tsx @@ -0,0 +1,135 @@ +import React from 'react'; +import { render } from '@testing-library/react-native'; +import { Box } from './Box'; +import Text, { + TextColor, +} from '../../../component-library/components/Texts/Text'; +import { View } from 'react-native'; +import { + Display, + JustifyContent, + FlexDirection, + TextAlign, + AlignItems, +} from '../../UI/Box/box.types'; + +describe('Box', () => { + it('renders children correctly', () => { + const { getByText } = render( + <Box> + <Text>Test Content</Text> + </Box>, + ); + expect(getByText('Test Content')).toBeTruthy(); + }); + + it('applies display style correctly', () => { + const { getByTestId } = render( + <Box testID="test-box" display={Display.Block}> + <Text>Test Content</Text> + </Box>, + ); + expect(getByTestId('test-box').props.style).toEqual( + expect.arrayContaining([ + expect.objectContaining({ + display: 'block', + }), + ]), + ); + }); + + it('applies flex direction style correctly', () => { + const { getByTestId } = render( + <Box testID="test-box" flexDirection={FlexDirection.Row}> + <Text>Test Content</Text> + </Box>, + ); + const styles = getByTestId('test-box').props.style; + expect(styles).toEqual([{ flexDirection: 'row' }, undefined]); + }); + + it('applies justify content style correctly', () => { + const { getByTestId } = render( + <Box testID="test-box" justifyContent={JustifyContent.center}> + <Text>Test Content</Text> + </Box>, + ); + expect(getByTestId('test-box').props.style).toEqual( + expect.arrayContaining([ + expect.objectContaining({ + justifyContent: 'center', + }), + ]), + ); + }); + + it('applies align items style correctly', () => { + const { getByTestId } = render( + <Box testID="test-box" alignItems={AlignItems.center}> + <Text>Test Content</Text> + </Box>, + ); + expect(getByTestId('test-box').props.style).toEqual( + expect.arrayContaining([ + expect.objectContaining({ + alignItems: 'center', + }), + ]), + ); + }); + + it('applies text align style correctly', () => { + const { getByTestId } = render( + <Box testID="test-box" textAlign={TextAlign.center}> + <Text>Test Content</Text> + </Box>, + ); + expect(getByTestId('test-box').props.style).toEqual( + expect.arrayContaining([ + expect.objectContaining({ + textAlign: 'center', + }), + ]), + ); + }); + + it('applies gap style correctly', () => { + const { getByTestId } = render( + <Box testID="test-box" gap={8}> + <Text>Test Content</Text> + </Box>, + ); + expect(getByTestId('test-box').props.style).toEqual( + expect.arrayContaining([ + expect.objectContaining({ + gap: 8, + }), + ]), + ); + }); + + it('applies color style correctly', () => { + const { getByTestId } = render( + <Box testID="test-box" color={TextColor.Default}> + <Text>Test Content</Text> + </Box>, + ); + expect(getByTestId('test-box').props.style).toEqual( + expect.arrayContaining([ + expect.objectContaining({ + color: 'Default', + }), + ]), + ); + }); + + it('forwards ref correctly', () => { + const ref = React.createRef<View>(); + render( + <Box ref={ref}> + <Text>Test Content</Text> + </Box>, + ); + expect(ref.current).toBeTruthy(); + }); +}); diff --git a/app/components/UI/Box/Box.tsx b/app/components/UI/Box/Box.tsx new file mode 100644 index 000000000000..9b3a036d0509 --- /dev/null +++ b/app/components/UI/Box/Box.tsx @@ -0,0 +1,72 @@ +import { JSXElement } from '@metamask/snaps-sdk/jsx'; +import React from 'react'; +import { View, StyleSheet, ViewProps } from 'react-native'; +import { TextColor } from '../../../component-library/components/Texts/Text'; +import { + AlignItems, + Display, + FlexDirection, + JustifyContent, + TextAlign, +} from './box.types'; + +const getBoxStyles = (props: { + display?: Display; + flexDirection?: FlexDirection; + justifyContent?: JustifyContent; + alignItems?: AlignItems; + textAlign?: TextAlign; + gap?: number; + color?: TextColor; + backgroundColor?: string; +}) => { + const { + display, + flexDirection, + justifyContent, + alignItems, + textAlign, + color, + gap, + backgroundColor, + } = props; + return StyleSheet.create({ + dynamicStyles: { + ...(display && { display: display as 'none' | 'flex' }), + ...(flexDirection && { flexDirection }), + ...(justifyContent && { justifyContent }), + ...(alignItems && { alignItems }), + ...(textAlign && { textAlign }), + ...(color && { color }), + ...(gap && { gap }), + ...(backgroundColor && { backgroundColor }), + }, + }); +}; + +export interface BoxProps extends ViewProps { + children: string | JSXElement | React.ReactNode; + display?: Display; + flexDirection?: FlexDirection; + justifyContent?: JustifyContent; + alignItems?: AlignItems; + textAlign?: TextAlign; + gap?: number; + color?: TextColor; + backgroundColor?: string; + ref?: React.Ref<View>; + testID?: string; +} + +export const Box: React.FC<BoxProps> = React.forwardRef( + ({ children, ...props }, ref) => ( + <View + ref={ref} + style={[getBoxStyles(props).dynamicStyles, props.style]} + {...props} + testID={props.testID} + > + {children} + </View> + ), +); diff --git a/app/components/UI/Box/box.types.ts b/app/components/UI/Box/box.types.ts new file mode 100644 index 000000000000..4a1aab53d598 --- /dev/null +++ b/app/components/UI/Box/box.types.ts @@ -0,0 +1,665 @@ +import React from 'react'; +import { IconColor } from '../../../component-library/components/Icons/Icon'; +import { TextColor } from '../../../component-library/components/Texts/Text'; + +export enum Display { + Block = 'block', + Grid = 'grid', + InlineBlock = 'inline-block', + Inline = 'inline', + InlineFlex = 'inline-flex', + InlineGrid = 'inline-grid', + ListItem = 'list-item', + None = 'none', +} + +export enum BorderStyle { + dashed = 'dashed', + solid = 'solid', + dotted = 'dotted', + double = 'double', + none = 'none', +} + +export enum BorderColor { + borderDefault = 'border-default', + borderMuted = 'border-muted', + primaryDefault = 'primary-default', + primaryAlternative = 'primary-alternative', + primaryMuted = 'primary-muted', + errorDefault = 'error-default', + errorAlternative = 'error-alternative', + errorMuted = 'error-muted', + warningDefault = 'warning-default', + warningMuted = 'warning-muted', + successDefault = 'success-default', + successMuted = 'success-muted', + infoDefault = 'info-default', + infoMuted = 'info-muted', + mainnet = 'mainnet', + goerli = 'goerli', + sepolia = 'sepolia', + lineaGoerli = 'linea-goerli', + lineaSepolia = 'linea-sepolia', + lineaMainnet = 'linea-mainnet', + transparent = 'transparent', + localhost = 'localhost', + backgroundDefault = 'background-default', // exception for border color when element is meant to look "cut out" +} + +export type StyleDeclarationType = + | 'margin' + | 'margin-top' + | 'margin-right' + | 'margin-bottom' + | 'margin-left' + | 'margin-inline' + | 'margin-inline-start' + | 'margin-inline-end' + | 'padding' + | 'padding-top' + | 'padding-right' + | 'padding-bottom' + | 'padding-left' + | 'padding-inline' + | 'padding-inline-start' + | 'padding-inline-end' + | 'display' + | 'gap' + | 'flex-direction' + | 'flex-wrap' + | 'justify-content' + | 'align-items' + | 'text-align' + | 'width' + | 'min-width' + | 'height' + | 'color' + | 'background-color' + | 'rounded' + | 'border-style' + | 'border-color' + | 'border-width'; + +export enum JustifyContent { + flexStart = 'flex-start', + flexEnd = 'flex-end', + center = 'center', + spaceAround = 'space-around', + spaceBetween = 'space-between', + spaceEvenly = 'space-evenly', +} + +export enum FlexDirection { + Row = 'row', + RowReverse = 'row-reverse', + Column = 'column', + ColumnReverse = 'column-reverse', +} + +export enum AlignItems { + flexStart = 'flex-start', + flexEnd = 'flex-end', + center = 'center', + baseline = 'baseline', + stretch = 'stretch', +} + +export enum TextAlign { + left = 'left', + right = 'right', + center = 'center', +} + +export enum BlockSize { + Zero = '0', + Half = '1/2', + OneThird = '1/3', + TwoThirds = '2/3', + OneFourth = '1/4', + TwoFourths = '2/4', + ThreeFourths = '3/4', + OneFifth = '1/5', + TwoFifths = '2/5', + ThreeFifths = '3/5', + FourFifths = '4/5', + OneSixth = '1/6', + TwoSixths = '2/6', + ThreeSixths = '3/6', + FourSixths = '4/6', + FiveSixths = '5/6', + OneTwelfth = '1/12', + TwoTwelfths = '2/12', + ThreeTwelfths = '3/12', + FourTwelfths = '4/12', + FiveTwelfths = '5/12', + SixTwelfths = '6/12', + SevenTwelfths = '7/12', + EightTwelfths = '8/12', + NineTwelfths = '9/12', + TenTwelfths = '10/12', + ElevenTwelfths = '11/12', + Screen = 'screen', + Max = 'max', + Min = 'min', + Full = 'full', +} + +export enum Color { + backgroundDefault = 'background-default', + backgroundAlternative = 'background-alternative', + backgroundMuted = 'background-muted', + textDefault = 'text-default', + textAlternative = 'text-alternative', + textMuted = 'text-muted', + iconDefault = 'icon-default', + iconAlternative = 'icon-alternative', + iconMuted = 'icon-muted', + borderDefault = 'border-default', + borderMuted = 'border-muted', + overlayDefault = 'overlay-default', + overlayInverse = 'overlay-inverse', + primaryDefault = 'primary-default', + primaryAlternative = 'primary-alternative', + primaryMuted = 'primary-muted', + primaryInverse = 'primary-inverse', + errorDefault = 'error-default', + errorAlternative = 'error-alternative', + errorMuted = 'error-muted', + errorInverse = 'error-inverse', + warningDefault = 'warning-default', + warningMuted = 'warning-muted', + warningInverse = 'warning-inverse', + successDefault = 'success-default', + successMuted = 'success-muted', + successInverse = 'success-inverse', + infoDefault = 'info-default', + infoMuted = 'info-muted', + infoInverse = 'info-inverse', + mainnet = 'mainnet', + goerli = 'goerli', + sepolia = 'sepolia', + lineaGoerli = 'linea-goerli', + lineaGoerliInverse = 'linea-goerli-inverse', + lineaSepolia = 'linea-sepolia', + lineaSepoliaInverse = 'linea-sepolia-inverse', + lineaMainnet = 'linea-mainnet', + lineaMainnetInverse = 'linea-mainnet-inverse', + transparent = 'transparent', + localhost = 'localhost', + inherit = 'inherit', + goerliInverse = 'goerli-inverse', + sepoliaInverse = 'sepolia-inverse', +} + +export enum BackgroundColor { + backgroundDefault = 'background-default', + backgroundAlternative = 'background-alternative', + backgroundMuted = 'background-muted', + backgroundAlternativeSoft = 'background-alternative-soft', + backgroundHover = 'background-hover', + backgroundPressed = 'background-pressed', + iconDefault = 'icon-default', + iconAlternative = 'icon-alternative', + iconMuted = 'icon-muted', + overlayDefault = 'overlay-default', + overlayAlternative = 'overlay-alternative', + primaryDefault = 'primary-default', + primaryAlternative = 'primary-alternative', + primaryMuted = 'primary-muted', + errorDefault = 'error-default', + errorAlternative = 'error-alternative', + errorMuted = 'error-muted', + warningDefault = 'warning-default', + warningMuted = 'warning-muted', + successDefault = 'success-default', + successMuted = 'success-muted', + infoDefault = 'info-default', + infoMuted = 'info-muted', + mainnet = 'mainnet', + goerli = 'goerli', + sepolia = 'sepolia', + lineaGoerli = 'linea-goerli', + lineaSepolia = 'linea-sepolia', + lineaMainnet = 'linea-mainnet', + transparent = 'transparent', + localhost = 'localhost', +} + +export enum BorderRadius { + /** + * 2px + */ + XS = 'xs', + /** + * 4px + */ + SM = 'sm', + /** + * 6px + */ + MD = 'md', + /** + * 8px + */ + LG = 'lg', + /** + * 12px + */ + XL = 'xl', + /** + * 0 + */ + none = 'none', + /** + * 9999px + */ + pill = 'pill', + /** + * 50% + */ + full = 'full', +} + +export enum FlexWrap { + Wrap = 'wrap', + WrapReverse = 'wrap-reverse', + NoWrap = 'nowrap', +} + +export type StylePropValueType = + | AlignItems + | AlignItemsArray + | BackgroundColor + | BackgroundColorArray + | BlockSize + | BlockSizeArray + | BorderColor + | BorderColorArray + | BorderRadius + | BorderRadiusArray + | BorderStyle + | BorderStyleArray + | Color + | Display + | DisplayArray + | FlexDirection + | FlexDirectionArray + | FlexWrap + | FlexWrapArray + | IconColor + | JustifyContent + | JustifyContentArray + | SizeNumberAndAuto + | SizeNumberAndAutoArray + | TextAlign + | TextAlignArray + | TextColor + | TextColorArray + | IconColorArray + | undefined; + +export interface ClassNamesObject { + // TODO: Replace `any` with type + // eslint-disable-next-line @typescript-eslint/no-explicit-any + [key: string]: any; +} + +export type FlexDirectionArray = [ + FlexDirection, + FlexDirection?, + FlexDirection?, + FlexDirection?, +]; +export type FlexWrapArray = [FlexWrap, FlexWrap?, FlexWrap?, FlexWrap?]; +export type TextAlignArray = [TextAlign, TextAlign?, TextAlign?, TextAlign?]; +export type DisplayArray = [Display, Display?, Display?, Display?]; +export type BlockSizeArray = [BlockSize, BlockSize?, BlockSize?, BlockSize?]; + +export type SizeNumber = + | 0 + | 1 + | 2 + | 3 + | 4 + | 5 + | 6 + | 7 + | 8 + | 9 + | 10 + | 11 + | 12 + | null; + +export type SizeNumberArray = [ + SizeNumber, + SizeNumber?, + SizeNumber?, + SizeNumber?, +]; + +export type SizeNumberAndAuto = SizeNumber | 'auto'; + +export type SizeNumberAndAutoArray = [ + SizeNumberAndAuto, + SizeNumberAndAuto?, + SizeNumberAndAuto?, + SizeNumberAndAuto?, +]; + +export type BorderColorArray = [ + BorderColor, + BorderColor?, + BorderColor?, + BorderColor?, +]; + +export type BorderRadiusArray = [ + BorderRadius, + BorderRadius?, + BorderRadius?, + BorderRadius?, +]; + +export type BorderStyleArray = [ + BorderStyle, + BorderStyle?, + BorderStyle?, + BorderStyle?, +]; + +export type AlignItemsArray = [ + AlignItems, + AlignItems?, + AlignItems?, + AlignItems?, +]; + +export type JustifyContentArray = [ + JustifyContent, + JustifyContent?, + JustifyContent?, + JustifyContent?, +]; + +export type BackgroundColorArray = [ + BackgroundColor, + BackgroundColor?, + BackgroundColor?, + BackgroundColor?, +]; + +export type TextColorArray = [TextColor, TextColor?, TextColor?, TextColor?]; + +export type IconColorArray = [IconColor, IconColor?, IconColor?, IconColor?]; + +/** + * Polymorphic props based on Ohans Emmanuel's article below + * https://blog.logrocket.com/build-strongly-typed-polymorphic-components-react-typescript/#ensuring-as-prop-only-receives-valid-html-element-strings + */ + +/** + * Uses generic type C to create polymorphic ref type + */ +export type PolymorphicRef<C extends React.ElementType> = + React.ComponentPropsWithRef<C>['ref']; + +/** + * Uses generic type C to define the type for the polymorphic "as" prop + * "as" can be used to override the default HTML element + */ +interface AsProp<C extends React.ElementType> { + /** + * An override of the default HTML tag. + * Can also be a React component. + */ + as?: C; +} + +/** + * Omits the as prop and props from component definition + */ +type PropsToOmit<C extends React.ElementType, P> = keyof (AsProp<C> & P); + +/** + * Accepts 2 generic types: C which represents the as prop and the component props - Props + */ +type PolymorphicComponentProp< + C extends React.ElementType, + // eslint-disable-next-line @typescript-eslint/ban-types + Props = {}, +> = React.PropsWithChildren<Props & AsProp<C>> & + Omit<React.ComponentPropsWithoutRef<C>, PropsToOmit<C, Props>>; + +export type PolymorphicComponentPropWithRef< + C extends React.ElementType, + // eslint-disable-next-line @typescript-eslint/ban-types + Props = {}, +> = PolymorphicComponentProp<C, Props> & { ref?: PolymorphicRef<C> }; + +/** + * Includes all style utility props. This should be used to extend the props of a component. + */ +export interface StyleUtilityProps { + /** + * The flex direction of the component. + * Use the FlexDirection enum from '../../../helpers/constants/design-system'; + * Accepts responsive props in the form of an array. + */ + flexDirection?: FlexDirection | FlexDirectionArray; + /** + * The flex wrap of the component. + * Use the FlexWrap enum from '../../../helpers/constants/design-system'; + * Accepts responsive props in the form of an array. + */ + flexWrap?: FlexWrap | FlexWrapArray; + /** + * The gap between the component's children. + * Use 1-12 for a gap of 4px-48px. + * Accepts responsive props in the form of an array. + */ + gap?: SizeNumber | SizeNumberArray | undefined; + /** + * The margin of the component. + * Use 1-12 for 4px-48px or 'auto'. + * Accepts responsive props in the form of an array. + */ + margin?: SizeNumberAndAuto | SizeNumberAndAutoArray; + /** + * The margin-top of the component. + * Use 1-12 for 4px-48px or 'auto'. + * Accepts responsive props in the form of an array. + */ + marginTop?: SizeNumberAndAuto | SizeNumberAndAutoArray; + /** + * The margin-bottom of the component. + * Use 1-12 for 4px-48px or 'auto'. + * Accepts responsive props in the form of an array. + */ + marginBottom?: SizeNumberAndAuto | SizeNumberAndAutoArray; + /** + * The margin-right of the component. + * Use 1-12 for 4px-48px or 'auto'. + * Accepts responsive props in the form of an array. + */ + marginRight?: SizeNumberAndAuto | SizeNumberAndAutoArray; + /** + * The margin-left of the component. + * Use 1-12 for 4px-48px or 'auto'. + * Accepts responsive props in the form of an array. + */ + marginLeft?: SizeNumberAndAuto | SizeNumberAndAutoArray; + /** + * The margin-inline of the component. + * Use 1-12 for 4px-48px or 'auto'. + * Accepts responsive props in the form of an array. + */ + marginInline?: SizeNumberAndAuto | SizeNumberAndAutoArray; + /** + * The margin-inline-start of the component. + * Use 1-12 for 4px-48px or 'auto'. + * Accepts responsive props in the form of an array. + */ + marginInlineStart?: SizeNumberAndAuto | SizeNumberAndAutoArray; + /** + * The margin-inline-end of the component. + * Use 1-12 for 4px-48px or 'auto'. + * Accepts responsive props in the form of an array. + */ + marginInlineEnd?: SizeNumberAndAuto | SizeNumberAndAutoArray; + /** + * The padding of the component. + * Use 1-12 for 4px-48px. + * Accepts responsive props in the form of an array. + */ + padding?: SizeNumber | SizeNumberArray; + /** + * The padding-top of the component. + * Use 1-12 for 4px-48px. + * Accepts responsive props in the form of an array. + */ + paddingTop?: SizeNumber | SizeNumberArray; + /** + * The padding-bottom of the component. + * Use 1-12 for 4px-48px. + * Accepts responsive props in the form of an array. + */ + paddingBottom?: SizeNumber | SizeNumberArray; + /** + * The padding-right of the component. + * Use 1-12 for 4px-48px. + * Accepts responsive props in the form of an array. + */ + paddingRight?: SizeNumber | SizeNumberArray; + /** + * The padding-left of the component. + * Use 1-12 for 4px-48px. + * Accepts responsive props in the form of an array. + */ + paddingLeft?: SizeNumber | SizeNumberArray; + /** + * The padding-inline of the component. + * Use 1-12 for 4px-48px. + * Accepts responsive props in the form of an array. + */ + paddingInline?: SizeNumber | SizeNumberArray; + /** + * The padding-inline-start of the component. + * Use 1-12 for 4px-48px. + * Accepts responsive props in the form of an array. + */ + paddingInlineStart?: SizeNumber | SizeNumberArray; + /** + * The padding-inline-end of the component. + * Use 1-12 for 4px-48px. + * Accepts responsive props in the form of an array. + */ + paddingInlineEnd?: SizeNumber | SizeNumberArray; + /** + * The border-color of the component. + * Use BorderColor enum from '../../../helpers/constants/design-system'; + * Accepts responsive props in the form of an array. + */ + borderColor?: BorderColor | BorderColorArray; + /** + * The border-width of the component. + * Use 1-12 for 1px-12px. + * Accepts responsive props in the form of an array. + */ + borderWidth?: SizeNumber | SizeNumberArray; + /** + * The border-radius of the component. + * Use BorderRadius enum from '../../../helpers/constants/design-system'; + * Accepts responsive props in the form of an array. + */ + borderRadius?: BorderRadius | BorderRadiusArray; + /** + * The border-style of the component. + * Use BorderStyle enum from '../../../helpers/constants/design-system'; + * Accepts responsive props in the form of an array. + */ + borderStyle?: BorderStyle | BorderStyleArray; + /** + * The align-items of the component. + * Use AlignItems enum from '../../../helpers/constants/design-system'; + * Accepts responsive props in the form of an array. + */ + alignItems?: AlignItems | AlignItemsArray; + /** + * The justify-content of the component. + * Use JustifyContent enum from '../../../helpers/constants/design-system'; + * Accepts responsive props in the form of an array. + */ + justifyContent?: JustifyContent | JustifyContentArray; + /** + * The text-align of the component. + * Use TextAlign enum from '../../../helpers/constants/design-system'; + * Accepts responsive props in the form of an array. + */ + textAlign?: TextAlign | TextAlignArray; + /** + * The display of the component. + * Use Display enum from '../../../helpers/constants/design-system'; + * Accepts responsive props in the form of an array. + */ + display?: Display | DisplayArray; + /** + * The width of the component. + * Use BlockSize enum from '../../../helpers/constants/design-system'; + * Accepts responsive props in the form of an array. + */ + width?: BlockSize | BlockSizeArray; + /** + * The min-width of the component. + * Use BlockSize enum from '../../../helpers/constants/design-system'; + * Accepts responsive props in the form of an array. + */ + minWidth?: BlockSize | BlockSizeArray; + /** + * The height of the component. + * Use BlockSize enum from '../../../helpers/constants/design-system'; + * Accepts responsive props in the form of an array. + */ + height?: BlockSize | BlockSizeArray; + /** + * The background-color of the component. + * Use BackgroundColor enum from '../../../helpers/constants/design-system'; + * Accepts responsive props in the form of an array. + */ + backgroundColor?: BackgroundColor | BackgroundColorArray; + /** + * The text-color of the component. + * Use TextColor enum from '../../../helpers/constants/design-system'; + * Accepts responsive props in the form of an array. + */ + color?: TextColor | TextColorArray | IconColor | IconColorArray; + /** + * An optional data-testid to apply to the component. + * TypeScript is complaining about data- attributes which means we need to explicitly define this as a prop. + * TODO: Allow data- attributes. + */ + 'data-testid'?: string; +} +/** + * Box component props. + */ +// TODO: Convert to a `type` in a future major version. +// eslint-disable-next-line @typescript-eslint/consistent-type-definitions +interface Props extends StyleUtilityProps { + /** + * The content of the Box component. + */ + children?: React.ReactNode; + /** + * Additional className to apply to the Box component. + */ + className?: string; +} + +export type BoxProps<C extends React.ElementType> = + PolymorphicComponentPropWithRef<C, Props>; + +export type BoxComponent = <C extends React.ElementType = 'span'>( + props: BoxProps<C>, +) => React.ReactElement | null; diff --git a/app/components/UI/Bridge/index.js b/app/components/UI/Bridge/index.js new file mode 100644 index 000000000000..f6c1285f5a91 --- /dev/null +++ b/app/components/UI/Bridge/index.js @@ -0,0 +1,36 @@ +import React from 'react'; +import { + StyleSheet, + View, +} from 'react-native'; +import ScreenView from '../../Base/ScreenView'; +import { useTheme } from '../../../util/theme'; +import Text from '../../../component-library/components/Texts/Text'; + +const createStyles = (colors) => + StyleSheet.create({ + container: { backgroundColor: colors.background.default }, + content: { + flexGrow: 1, + justifyContent: 'center', + }, + }); + +const BridgeView = () => { + const { colors } = useTheme(); + const styles = createStyles(colors); + + return ( + <ScreenView + style={styles.container} + contentContainerStyle={styles.screen} + keyboardShouldPersistTaps="handled" + > + <View style={styles.content}> + <Text>Bridge</Text> + </View> + </ScreenView> + ); +}; + +export default BridgeView; diff --git a/app/components/UI/Bridge/index.test.tsx b/app/components/UI/Bridge/index.test.tsx new file mode 100644 index 000000000000..5cc5a3f0ce00 --- /dev/null +++ b/app/components/UI/Bridge/index.test.tsx @@ -0,0 +1,47 @@ +import React from 'react'; +import renderWithProvider, { + DeepPartial, +} from '../../../util/test/renderWithProvider'; +import { backgroundState } from '../../../util/test/initial-root-state'; +import { RootState } from '../../../reducers'; +import BridgeView from './'; + +jest.mock('@react-navigation/native', () => { + const actualNav = jest.requireActual('@react-navigation/native'); + return { + ...actualNav, + useNavigation: () => ({ + setOptions: jest.fn(), + pop: jest.fn(), + navigate: jest.fn(), + }), + useRoute: () => ({}), + }; +}); + +jest.mock('../../../core/Engine', () => ({ + context: { + SwapsController: { + fetchAggregatorMetadataWithCache: jest.fn(), + fetchTopAssetsWithCache: jest.fn(), + fetchTokenWithCache: jest.fn(), + }, + }, +})); + +const mockInitialState: DeepPartial<RootState> = { + engine: { + backgroundState: { + ...backgroundState, + }, + }, +}; + +describe('BridgeView', () => { + it('renders', async () => { + const { getByText } = renderWithProvider(<BridgeView />, { + state: mockInitialState, + }); + expect(getByText('Bridge')).toBeDefined(); + }); +}); diff --git a/app/components/UI/Bridge/utils/isBridgeAllowed.ts b/app/components/UI/Bridge/utils/isBridgeAllowed.ts index 46d68ec2cd03..9f54bfc7edec 100644 --- a/app/components/UI/Bridge/utils/isBridgeAllowed.ts +++ b/app/components/UI/Bridge/utils/isBridgeAllowed.ts @@ -1,6 +1,7 @@ import AppConstants from '../../../../core/AppConstants'; import { NETWORKS_CHAIN_ID } from '../../../../constants/network'; -import { Hex } from '@metamask/utils'; +import { CaipChainId, Hex } from '@metamask/utils'; +import { isNonEvmChainId } from '../../../../core/Multichain/utils'; const { MAINNET, @@ -31,8 +32,12 @@ const allowedChainIds = [ * @param chainId The chain ID of the source network. * @returns `true` if the chain is allowed, otherwise, return `false`. */ -export default function isBridgeAllowed(chainId: Hex) { +export default function isBridgeAllowed(chainId: Hex | CaipChainId) { if (!AppConstants.BRIDGE.ACTIVE) return false; - return allowedChainIds.includes(chainId); + if (isNonEvmChainId(chainId)) { + return false; + } + + return allowedChainIds.includes(chainId as Hex); } diff --git a/app/components/UI/Bridge/utils/useGoToBridge.ts b/app/components/UI/Bridge/utils/useGoToBridge.ts index cc1d030b40b1..60be8a0cb41a 100644 --- a/app/components/UI/Bridge/utils/useGoToBridge.ts +++ b/app/components/UI/Bridge/utils/useGoToBridge.ts @@ -4,7 +4,7 @@ import { MetaMetricsEvents } from '../../../../core/Analytics'; import { useSelector } from 'react-redux'; import { useNavigation } from '@react-navigation/native'; -import { selectChainId } from '../../../../selectors/networkController'; +import { selectEvmChainId } from '../../../../selectors/networkController'; import type { BrowserTab } from '../../Tokens/types'; import type { BrowserParams } from '../../../../components/Views/Browser/Browser.types'; @@ -18,7 +18,7 @@ import { isBridgeUrl } from '../../../../util/url'; * @returns A function that can be used to navigate to the existing Bridges page in the browser. If there isn't an existing bridge page, one is created based on the current chain ID and passed token address (if provided). */ export default function useGoToBridge(location: string) { - const chainId = useSelector(selectChainId); + const chainId = useSelector(selectEvmChainId); // TODO: Replace "any" with type // eslint-disable-next-line @typescript-eslint/no-explicit-any const browserTabs = useSelector((state: any) => state.browser.tabs); diff --git a/app/components/UI/DrawerView/__snapshots__/index.test.tsx.snap b/app/components/UI/DrawerView/__snapshots__/index.test.tsx.snap index 9e9f02bb66cb..68bdcd7423a4 100644 --- a/app/components/UI/DrawerView/__snapshots__/index.test.tsx.snap +++ b/app/components/UI/DrawerView/__snapshots__/index.test.tsx.snap @@ -1,6 +1,6 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`DrawerView should render correctly 1`] = ` +exports[`DrawerView - Extended Coverage renders correctly (snapshot) 1`] = ` <View style={ { diff --git a/app/components/UI/DrawerView/index.js b/app/components/UI/DrawerView/index.js index 214de0d1713a..11b3dbf5c469 100644 --- a/app/components/UI/DrawerView/index.js +++ b/app/components/UI/DrawerView/index.js @@ -71,6 +71,7 @@ import { scale } from 'react-native-size-matters'; import generateTestId from '../../../../wdio/utils/generateTestId'; import { DRAWER_VIEW_LOCK_TEXT_ID } from '../../../../wdio/screen-objects/testIDs/Screens/DrawerView.testIds'; import { + selectChainId, selectNetworkConfigurations, selectProviderConfig, selectTicker, @@ -86,6 +87,7 @@ import { createAccountSelectorNavDetails } from '../../Views/AccountSelector'; import NetworkInfo from '../NetworkInfo'; import { withMetricsAwareness } from '../../../components/hooks/useMetrics'; import { toChecksumHexAddress } from '@metamask/controller-utils'; +import safePromiseHandler from './utils'; const createStyles = (colors) => StyleSheet.create({ @@ -440,6 +442,10 @@ class DrawerView extends PureComponent { * Metrics injected by withMetricsAwareness HOC */ metrics: PropTypes.object, + /** + * Selected multichain chainId + */ + chainId: PropTypes.string, }; state = { @@ -573,23 +579,23 @@ class DrawerView extends PureComponent { } updateAccountInfo = async () => { - const { providerConfig, selectedInternalAccount } = this.props; + const { providerConfig, selectedInternalAccount, chainId } = this.props; const { currentChainId, address, name } = this.state.account; const accountName = selectedInternalAccount.metadata.name; if ( - currentChainId !== providerConfig.chainId || + currentChainId !== chainId || address !== this.selectedChecksummedAddress || name !== accountName ) { const ens = await doENSReverseLookup( this.selectedChecksummedAddress, - providerConfig.chainId, + chainId, ); this.setState((state) => ({ account: { ens, name: accountName, - currentChainId: providerConfig.chainId, + currentChainId: chainId, address: this.selectedChecksummedAddress, }, })); @@ -615,13 +621,13 @@ class DrawerView extends PureComponent { // NOTE: do we need this event? trackOpenBrowserEvent = () => { - const { providerConfig } = this.props; + const { chainId } = this.props; this.props.metrics.trackEvent( this.props.metrics .createEventBuilder(MetaMetricsEvents.BROWSER_OPENED) .addProperties({ source: 'In-app Navigation', - chain_id: getDecimalChainId(providerConfig.chainId), + chain_id: getDecimalChainId(chainId), }) .build(), ); @@ -971,14 +977,17 @@ class DrawerView extends PureComponent { onInfoNetworksModalClose = () => { const { - providerConfig, + chainId, onboardNetworkAction, networkSwitched, toggleInfoNetworkModal, } = this.props; - onboardNetworkAction(providerConfig.chainId); + + onboardNetworkAction(chainId); networkSwitched({ networkUrl: '', networkStatus: false }); - toggleInfoNetworkModal(); + + // Wrap the toggle call in a setTimeout to avoid awaiting a non-promise function. + safePromiseHandler(toggleInfoNetworkModal(), 100); }; renderProtectModal = () => { @@ -1255,6 +1264,7 @@ class DrawerView extends PureComponent { const mapStateToProps = (state) => ({ providerConfig: selectProviderConfig(state), + chainId: selectChainId(state), accounts: selectAccounts(state), selectedInternalAccount: selectSelectedInternalAccount(state), networkConfigurations: selectNetworkConfigurations(state), diff --git a/app/components/UI/DrawerView/index.test.tsx b/app/components/UI/DrawerView/index.test.tsx index 11a92223e2a7..db98d215af73 100644 --- a/app/components/UI/DrawerView/index.test.tsx +++ b/app/components/UI/DrawerView/index.test.tsx @@ -5,6 +5,16 @@ import DrawerView from './'; import { backgroundState } from '../../../util/test/initial-root-state'; import { MOCK_ACCOUNTS_CONTROLLER_STATE } from '../../../util/test/accountsControllerTestUtils'; +import { fireEvent } from '@testing-library/react-native'; + +jest.mock('react-native-share', () => ({ + open: jest.fn(() => Promise.resolve()), +})); + +jest.mock('../../../core/ClipboardManager', () => ({ + setString: jest.fn(() => Promise.resolve()), +})); + const mockInitialState = { engine: { backgroundState: { @@ -33,8 +43,62 @@ jest.mock('../../../core/Engine', () => { }; }); -describe('DrawerView', () => { - it('should render correctly', () => { +describe('DrawerView - Extended Coverage', () => { + const navigationMock = { + navigate: jest.fn(), + goBack: jest.fn(), + replace: jest.fn(), + dangerouslyGetState: jest.fn(() => ({ routes: [{ name: 'Home' }] })), + }; + const metricsMock = { + trackEvent: jest.fn(), + createEventBuilder: jest.fn(() => ({ + addProperties: jest.fn(() => ({ + build: jest.fn(() => ({})), + })), + build: jest.fn(() => ({})), + })), + }; + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const props = { + navigation: navigationMock, + providerConfig: { + type: 'mainnet', + ticker: 'ETH', + rpcUrl: 'https://rpc.example.com', + }, + accounts: {}, + selectedInternalAccount: { + address: '0x123', + metadata: { name: 'Account 1' }, + }, + currentCurrency: 'USD', + keyrings: [], + toggleNetworkModal: jest.fn(), + showAlert: jest.fn(), + networkModalVisible: false, + newAssetTransaction: jest.fn(), + passwordSet: true, + wizard: {}, + ticker: 'ETH', + networkConfigurations: {}, + tokens: [], + tokenBalances: {}, + collectibles: [], + seedphraseBackedUp: true, + currentRoute: 'Home', + switchedNetwork: {}, + protectWalletModalVisible: jest.fn(), + onboardNetworkAction: jest.fn(), + networkSwitched: jest.fn(), + infoNetworkModalVisible: false, + toggleInfoNetworkModal: jest.fn(), + onCloseDrawer: jest.fn(), + metrics: metricsMock, + chainId: '1', + }; + + it('renders correctly (snapshot)', () => { const { toJSON } = renderWithProvider( <DrawerView navigation={{ goBack: () => null }} />, { @@ -43,4 +107,34 @@ describe('DrawerView', () => { ); expect(toJSON()).toMatchSnapshot(); }); + + it('handles onSend correctly', async () => { + const { getByTestId } = renderWithProvider(<DrawerView {...props} />, { + state: mockInitialState, + }); + const sendButton = getByTestId('drawer-send-button'); + fireEvent.press(sendButton); + expect(navigationMock.navigate).toHaveBeenCalledWith('SendFlowView'); + }); + + it('calls openAccountSelector and tracks the event', () => { + const { getByTestId } = renderWithProvider(<DrawerView {...props} />, { + state: mockInitialState, + }); + const identicon = getByTestId('navbar-account-identicon'); + fireEvent.press(identicon); + expect(navigationMock.navigate).toHaveBeenCalled(); + }); + + it('handles onReceive correctly', () => { + const { getByTestId } = renderWithProvider(<DrawerView {...props} />, { + state: mockInitialState, + }); + const receiveButton = getByTestId('drawer-receive-button'); + fireEvent.press(receiveButton); + expect(navigationMock.navigate).toHaveBeenCalledWith('QRTabSwitcher', { + disableTabber: true, + initialScreen: 1, + }); + }); }); diff --git a/app/components/UI/DrawerView/util.test.ts b/app/components/UI/DrawerView/util.test.ts new file mode 100644 index 000000000000..1656b128632a --- /dev/null +++ b/app/components/UI/DrawerView/util.test.ts @@ -0,0 +1,53 @@ +import safePromiseHandler from './utils'; + +describe('safePromiseHandler', () => { + beforeEach(() => { + jest.useFakeTimers(); + }); + + afterEach(() => { + jest.runOnlyPendingTimers(); + jest.useRealTimers(); + jest.clearAllMocks(); + }); + + it('should return a function', () => { + const toggleFunction = jest.fn(); + const handler = safePromiseHandler(toggleFunction); + expect(typeof handler).toBe('function'); + }); + + it('should call toggleFunction after the default delay (100ms)', () => { + const toggleFunction = jest.fn(); + const handler = safePromiseHandler(toggleFunction); + handler(); + // Initially, the toggleFunction should not have been called. + expect(toggleFunction).not.toHaveBeenCalled(); + // Advance time by 100ms + jest.advanceTimersByTime(100); + expect(toggleFunction).toHaveBeenCalledTimes(1); + }); + + it('should call toggleFunction after a custom delay', () => { + const customDelay = 250; + const toggleFunction = jest.fn(); + const handler = safePromiseHandler(toggleFunction, customDelay); + handler(); + // Advance time by less than customDelay; function should not have been called yet. + jest.advanceTimersByTime(customDelay - 1); + expect(toggleFunction).not.toHaveBeenCalled(); + // Advance by the remaining time. + jest.advanceTimersByTime(1); + expect(toggleFunction).toHaveBeenCalledTimes(1); + }); + + it('should call toggleFunction for each invocation of the handler', () => { + const toggleFunction = jest.fn(); + const handler = safePromiseHandler(toggleFunction); + // Call the returned function twice. + handler(); + handler(); + jest.advanceTimersByTime(100); + expect(toggleFunction).toHaveBeenCalledTimes(2); + }); +}); diff --git a/app/components/UI/DrawerView/utils.ts b/app/components/UI/DrawerView/utils.ts new file mode 100644 index 000000000000..0a82f8c9f40d --- /dev/null +++ b/app/components/UI/DrawerView/utils.ts @@ -0,0 +1,13 @@ +/** + * Delays the execution of a function by a specified amount of time. + * + * @param toggleFunction - The function to execute after the delay. + * @param delay - The delay in milliseconds (default: 100ms). + * @returns A function that, when called, will execute the provided function after the delay. + */ +const safePromiseHandler = + (toggleFunction: () => void, delay: number = 100): (() => void) => + () => + setTimeout(toggleFunction, delay); + +export default safePromiseHandler; diff --git a/app/components/UI/ManageNetworks/ManageNetworks.tsx b/app/components/UI/ManageNetworks/ManageNetworks.tsx index 97a721291fa3..23ffd01d9d29 100644 --- a/app/components/UI/ManageNetworks/ManageNetworks.tsx +++ b/app/components/UI/ManageNetworks/ManageNetworks.tsx @@ -7,10 +7,6 @@ import Text, { import PickerNetwork from '../../../component-library/components/Pickers/PickerNetwork'; import { strings } from '../../../../locales/i18n'; import { useSelector } from 'react-redux'; -import { - ProviderConfig, - selectProviderConfig, -} from '../../../selectors/networkController'; import { selectNetworkName, selectNetworkImageSource, @@ -23,9 +19,10 @@ import { MetaMetricsEvents } from '../../../core/Analytics'; import { ConnectedAccountsSelectorsIDs } from '../../../../e2e/selectors/Browser/ConnectedAccountModal.selectors'; import AppConstants from '../../../core/AppConstants'; import styles from './ManageNetworks.styles'; +import { selectChainId } from '../../../selectors/networkController'; export default function ManageNetworksComponent() { - const providerConfig: ProviderConfig = useSelector(selectProviderConfig); + const chainId = useSelector(selectChainId); const navigation = useNavigation(); const { trackEvent, createEventBuilder } = useMetrics(); @@ -40,11 +37,11 @@ export default function ManageNetworksComponent() { trackEvent( createEventBuilder(MetaMetricsEvents.NETWORK_SELECTOR_PRESSED) .addProperties({ - chain_id: getDecimalChainId(providerConfig.chainId), + chain_id: getDecimalChainId(chainId), }) .build(), ); - }, [navigation, trackEvent, providerConfig, createEventBuilder]); + }, [navigation, trackEvent, chainId, createEventBuilder]); const handleLink = () => { Linking.openURL(AppConstants.URLS.PRIVACY_POLICY_2024); diff --git a/app/components/UI/Name/Name.tsx b/app/components/UI/Name/Name.tsx index bddd22806d4c..fea6d2e45ca4 100644 --- a/app/components/UI/Name/Name.tsx +++ b/app/components/UI/Name/Name.tsx @@ -1,21 +1,23 @@ /* eslint-disable react/prop-types */ import React from 'react'; import { TextProps, View, ViewStyle } from 'react-native'; - -import { useStyles } from '../../../component-library/hooks'; -import Text, { - TextVariant, -} from '../../../component-library/components/Texts/Text'; +import { AvatarSize } from '../../../component-library/components/Avatars/Avatar'; +import Badge, { BadgeVariant } from '../../../component-library/components/Badges/Badge'; import Icon, { IconName, } from '../../../component-library/components/Icons/Icon'; +import Text, { + TextVariant, +} from '../../../component-library/components/Texts/Text'; +import { useStyles } from '../../../component-library/hooks'; +import images from '../../../images/image-icons'; import { renderShortAddress } from '../../../util/address'; import useDisplayName, { DisplayNameVariant, } from '../../hooks/DisplayName/useDisplayName'; import Identicon from '../Identicon'; -import { NameProperties, NameType } from './Name.types'; import styleSheet from './Name.styles'; +import { NameProperties, NameType } from './Name.types'; const NameLabel: React.FC<{ displayNameVariant: DisplayNameVariant; @@ -59,7 +61,7 @@ const Name: React.FC<NameProperties> = ({ throw new Error('Unsupported NameType: ' + type); } - const { image, name, variant } = useDisplayName({ + const { image, name, variant, isFirstPartyContractName } = useDisplayName({ preferContractSymbol, type, value, @@ -74,16 +76,33 @@ const Name: React.FC<NameProperties> = ({ return <UnknownEthereumAddress address={value} style={style} />; } + const MAX_CHAR_LENGTH = 21; + const MIDDLE_SECTION_ELLIPSIS = '...'; + const truncatedName = + name && name.length > MAX_CHAR_LENGTH + ? `${name.slice(0, (MAX_CHAR_LENGTH - MIDDLE_SECTION_ELLIPSIS.length) / 2)}${MIDDLE_SECTION_ELLIPSIS}${name.slice(-(MAX_CHAR_LENGTH - MIDDLE_SECTION_ELLIPSIS.length) / 2)}` + : name; + + return ( <View style={[styles.base, style]}> - <Identicon + {isFirstPartyContractName ? ( + <Badge + size={AvatarSize.Xs} + imageSource={images.FOX_LOGO} + variant={BadgeVariant.Network} + isScaled={false} + /> + ) : ( + <Identicon address={value} diameter={16} imageUri={image} customStyle={styles.image} - /> + /> + )} <NameLabel displayNameVariant={variant} ellipsizeMode="tail"> - {name} + {truncatedName} </NameLabel> </View> ); diff --git a/app/components/UI/Navbar/index.js b/app/components/UI/Navbar/index.js index b36c5c9ea131..d8b8339a167d 100644 --- a/app/components/UI/Navbar/index.js +++ b/app/components/UI/Navbar/index.js @@ -53,6 +53,7 @@ import Icon, { IconColor, } from '../../../component-library/components/Icons/Icon'; import { AddContactViewSelectorsIDs } from '../../../../e2e/selectors/Settings/Contacts/AddContactView.selectors'; +import HeaderBase from '../../../component-library/components/HeaderBase'; import AddressCopy from '../AddressCopy'; import PickerAccount from '../../../component-library/components/Pickers/PickerAccount'; import { createAccountSelectorNavDetails } from '../../../components/Views/AccountSelector'; @@ -60,11 +61,8 @@ import { RequestPaymentViewSelectors } from '../../../../e2e/selectors/Receive/R import { MetricsEventBuilder } from '../../../core/Analytics/MetricsEventBuilder'; import { toChecksumHexAddress } from '@metamask/controller-utils'; ///: BEGIN:ONLY_INCLUDE_IF(keyring-snaps) -import { - isBtcAccount, - isSolanaAccount, - getFormattedAddressFromInternalAccount, -} from '../../../core/Multichain/utils'; +import { getFormattedAddressFromInternalAccount } from '../../../core/Multichain/utils'; + ///: END:ONLY_INCLUDE_IF import { withMetaMetrics } from '../Stake/utils/metaMetrics/withMetaMetrics'; @@ -143,6 +141,12 @@ const styles = StyleSheet.create({ top: 2, right: 10, }, + headerLeftButton: { + marginHorizontal: 16, + }, + headerRightButton: { + marginHorizontal: 16, + }, addressCopyWrapper: { marginHorizontal: 4, }, @@ -875,6 +879,7 @@ export function getOfflineModalNavbar() { * @param {boolean | null} isProfileSyncingEnabled - Whether profile syncing is enabled * @param {number} unreadNotificationCount - The number of unread notifications * @param {number} readNotificationCount - The number of read notifications + * @param {boolean} isNonEvmSelected - Whether a non evm network is selected * @returns {Object} An object containing the navbar options for the wallet screen */ export function getWalletNavbarOptions( @@ -1000,7 +1005,7 @@ export function getWalletNavbarOptions( } const renderNetworkPicker = () => { - let networkPicker = ( + const networkPicker = ( <PickerNetwork label={networkName} imageSource={networkImageSource} @@ -1010,33 +1015,6 @@ export function getWalletNavbarOptions( /> ); - ///: BEGIN:ONLY_INCLUDE_IF(keyring-snaps) - if (isSolanaAccount(selectedInternalAccount)) { - networkPicker = ( - <PickerNetwork - label={'Solana'} - imageSource={require('../../../images/solana-logo.png')} - testID={WalletViewSelectorsIDs.NAVBAR_NETWORK_BUTTON} - hideNetworkName - isDisabled - /> - ); - } - - if (isBtcAccount(selectedInternalAccount)) { - networkPicker = ( - <PickerNetwork - label={'Bitcoin'} - imageSource={require('../../../images/bitcoin-logo.png')} - testID={WalletViewSelectorsIDs.NAVBAR_NETWORK_BUTTON} - hideNetworkName - isDisabled - /> - ); - } - - ///: END:ONLY_INCLUDE_IF - return <View style={styles.leftElementContainer}>{networkPicker}</View>; }; @@ -1316,62 +1294,40 @@ export function getNetworkNavbarOptions( contentOffset = 0, networkName = '', ) { - const innerStyles = StyleSheet.create({ - headerStyle: { - backgroundColor: themeColors.background.default, - shadowColor: importedColors.transparent, - elevation: 0, - }, - headerShadow: { - elevation: 2, - shadowColor: themeColors.background.primary, - shadowOpacity: contentOffset < 20 ? contentOffset / 100 : 0.2, - shadowOffset: { height: 4, width: 0 }, - shadowRadius: 8, - }, - headerIcon: { - color: themeColors.primary.default, - }, - }); return { - headerTitle: () => ( - <NavbarTitle - disableNetwork={disableNetwork} - title={title} - translate={translate} - networkName={networkName} - /> - ), - headerLeft: () => ( - // eslint-disable-next-line react/jsx-no-bind - <TouchableOpacity - onPress={() => navigation.pop()} - style={styles.backButton} - testID={CommonSelectorsIDs.BACK_ARROW_BUTTON} + header: () => ( + <HeaderBase + includesTopInset + startAccessory={ + <ButtonIcon + style={styles.headerLeftButton} + onPress={() => navigation.pop()} + testID={CommonSelectorsIDs.BACK_ARROW_BUTTON} + size={ButtonIconSizes.Lg} + iconName={IconName.ArrowLeft} + iconColor={IconColor.Default} + /> + } + endAccessory={ + onRightPress && ( + <ButtonIcon + style={styles.headerRightButton} + onPress={onRightPress} + size={ButtonIconSizes.Lg} + iconName={IconName.MoreVertical} + iconColor={IconColor.Default} + /> + ) + } > - <IonicIcon - name={'ios-close'} - size={38} - style={innerStyles.headerIcon} + <NavbarTitle + disableNetwork={disableNetwork} + title={title} + translate={translate} + networkName={networkName} /> - </TouchableOpacity> + </HeaderBase> ), - headerRight: onRightPress - ? () => ( - <TouchableOpacity style={styles.backButton} onPress={onRightPress}> - <MaterialCommunityIcon - name={'dots-horizontal'} - size={28} - style={innerStyles.headerIcon} - /> - </TouchableOpacity> - // eslint-disable-next-line no-mixed-spaces-and-tabs - ) - : () => <View />, - headerStyle: [ - innerStyles.headerStyle, - contentOffset && innerStyles.headerShadow, - ], }; } diff --git a/app/components/UI/Navbar/index.test.jsx b/app/components/UI/Navbar/index.test.jsx new file mode 100644 index 000000000000..e2625d157e6b --- /dev/null +++ b/app/components/UI/Navbar/index.test.jsx @@ -0,0 +1,48 @@ +/* eslint-disable react/prop-types */ +import React from 'react'; +import { createStackNavigator } from '@react-navigation/stack'; +import renderWithProvider from '../../../util/test/renderWithProvider'; +import { backgroundState } from '../../../util/test/initial-root-state'; +import { getNetworkNavbarOptions } from '.'; +import { SolScope } from '@metamask/keyring-api'; + +describe('getNetworkNavbarOptions', () => { + const Stack = createStackNavigator(); + + const mockNavigation = { + pop: jest.fn(), + }; + + const TestNavigator = ({ options }) => ( + <Stack.Navigator> + <Stack.Screen name="TestScreen" component={() => options.header()} /> + </Stack.Navigator> + ); + + beforeEach(() => { + jest.clearAllMocks(); + }); + + it('renders correctly with default options', () => { + const options = getNetworkNavbarOptions( + 'Test Title', + false, + mockNavigation, + ); + + const { getByText, getByRole } = renderWithProvider( + <TestNavigator options={options} />, + { + state: { + engine: { + backgroundState: { + ...backgroundState, + }, + }, + }, + }, + ); + + expect(getByText('Test Title')).toBeTruthy(); + }); +}); diff --git a/app/components/UI/NavbarTitle/index.js b/app/components/UI/NavbarTitle/index.js index 30b05eb77ae1..f61163a08fcf 100644 --- a/app/components/UI/NavbarTitle/index.js +++ b/app/components/UI/NavbarTitle/index.js @@ -1,21 +1,23 @@ import React, { PureComponent } from 'react'; import PropTypes from 'prop-types'; import { connect } from 'react-redux'; -import { scale } from 'react-native-size-matters'; import { TouchableOpacity, View, StyleSheet } from 'react-native'; -import { fontStyles, colors as importedColors } from '../../../styles/common'; import Networks, { getDecimalChainId } from '../../../util/networks'; import { strings } from '../../../../locales/i18n'; import { ThemeContext, mockTheme } from '../../../util/theme'; import Routes from '../../../constants/navigation/Routes'; import { MetaMetricsEvents } from '../../../core/Analytics'; import { withNavigation } from '@react-navigation/compat'; -import { selectProviderConfig } from '../../../selectors/networkController'; +import { + selectChainId, + selectProviderConfig, +} from '../../../selectors/networkController'; import { withMetricsAwareness } from '../../../components/hooks/useMetrics'; import Text, { TextVariant, TextColor, } from '../../../component-library/components/Texts/Text'; +import { selectNetworkName } from '../../../selectors/networkInfos'; const createStyles = (colors) => StyleSheet.create({ @@ -71,6 +73,14 @@ class NavbarTitle extends PureComponent { * Content to display inside text element */ children: PropTypes.node, + /** + * Selected multichain chainId + */ + chainId: PropTypes.string, + /** + * Selected network name + */ + selectedNetworkName: PropTypes.string, }; static defaultProps = { @@ -92,7 +102,7 @@ class NavbarTitle extends PureComponent { this.props.metrics .createEventBuilder(MetaMetricsEvents.NETWORK_SELECTOR_PRESSED) .addProperties({ - chain_id: getDecimalChainId(this.props.providerConfig.chainId), + chain_id: getDecimalChainId(this.props.chainId), }) .build(), ); @@ -111,16 +121,16 @@ class NavbarTitle extends PureComponent { showSelectedNetwork, children, networkName, + selectedNetworkName, } = this.props; let name = null; - const color = - (Networks[providerConfig.type] && Networks[providerConfig.type].color) || - null; + const colors = this.context.colors || mockTheme.colors; const styles = createStyles(colors); - if (networkName) { - name = networkName; + if (selectedNetworkName || networkName) { + name = networkName || selectedNetworkName; + // TODO: [SOLANA] Revisit this before shipping, some screens do not pass a network name as a prop, consider using the selector instead } else if (providerConfig.nickname) { name = providerConfig.nickname; } else { @@ -166,6 +176,8 @@ NavbarTitle.contextType = ThemeContext; const mapStateToProps = (state) => ({ providerConfig: selectProviderConfig(state), + chainId: selectChainId(state), + selectedNetworkName: selectNetworkName(state), }); export default withNavigation( diff --git a/app/components/UI/NetworkCell/NetworkCell.tsx b/app/components/UI/NetworkCell/NetworkCell.tsx index a9816e6c86ad..88e6ada58f86 100644 --- a/app/components/UI/NetworkCell/NetworkCell.tsx +++ b/app/components/UI/NetworkCell/NetworkCell.tsx @@ -6,16 +6,16 @@ import { CellVariant } from '../../../component-library/components/Cells/Cell'; import { AvatarVariant } from '../../../component-library/components/Avatars/Avatar/Avatar.types'; import { useTheme } from '../../../util/theme'; import styleSheet from './NetworkCell.styles'; -import { Hex } from '@metamask/utils'; +import { CaipChainId, Hex } from '@metamask/utils'; interface NetworkCellProps { name: string; - chainId: Hex; + chainId: Hex | CaipChainId; imageSource: ImageSourcePropType; secondaryText?: string; showIncomingTransactionsNetworks: Record<string, boolean>; toggleEnableIncomingTransactions: ( - chainId: Hex, + chainId: Hex | CaipChainId, value: boolean, ) => void; testID?: string; diff --git a/app/components/UI/NetworkModal/__snapshots__/index.test.tsx.snap b/app/components/UI/NetworkModal/__snapshots__/index.test.tsx.snap index 008d6ffcb834..7689b85fe2ff 100644 --- a/app/components/UI/NetworkModal/__snapshots__/index.test.tsx.snap +++ b/app/components/UI/NetworkModal/__snapshots__/index.test.tsx.snap @@ -145,11 +145,14 @@ exports[`NetworkDetails renders correctly 1`] = ` > <View style={ - { - "backgroundColor": "#ffffff", - "flexDirection": "row", - "padding": 16, - } + [ + { + "backgroundColor": "#ffffff", + "flexDirection": "row", + "padding": 16, + }, + false, + ] } testID="header" > diff --git a/app/components/UI/NetworkModal/index.test.tsx b/app/components/UI/NetworkModal/index.test.tsx index f8c38d272a54..04a18c3d2b46 100644 --- a/app/components/UI/NetworkModal/index.test.tsx +++ b/app/components/UI/NetworkModal/index.test.tsx @@ -8,6 +8,7 @@ import { selectNetworkName } from '../../../selectors/networkInfos'; import { selectUseSafeChainsListValidation } from '../../../selectors/preferencesController'; import { NetworkApprovalBottomSheetSelectorsIDs } from '../../../../e2e/selectors/Network/NetworkApprovalBottomSheet.selectors'; import { NetworkAddedBottomSheetSelectorsIDs } from '../../../../e2e/selectors/Network/NetworkAddedBottomSheet.selectors'; +import { selectNetworkConfigurations } from '../../../selectors/networkController'; jest.mock('../../../core/Engine', () => ({ context: { @@ -19,6 +20,9 @@ jest.mock('../../../core/Engine', () => ({ addNetwork: jest.fn(), setActiveNetwork: jest.fn(), }, + MultichainNetworkController: { + setActiveNetwork: jest.fn(), + }, }, })); @@ -110,4 +114,179 @@ describe('NetworkDetails', () => { }); expect(mockDispatch).toHaveBeenCalled(); }); + + it('should call setActiveNetwork when adding a new network', async () => { + const { getByTestId } = renderWithTheme(<NetworkModal {...props} />); + + const approveButton = getByTestId( + NetworkApprovalBottomSheetSelectorsIDs.APPROVE_BUTTON, + ); + fireEvent.press(approveButton); + + const switchButton = getByTestId( + NetworkAddedBottomSheetSelectorsIDs.SWITCH_NETWORK_BUTTON, + ); + + // Mock the addNetwork response to include networkClientId + ( + Engine.context.NetworkController.addNetwork as jest.Mock + ).mockResolvedValue({ + rpcEndpoints: [{ networkClientId: 'test-network-id' }], + defaultRpcEndpointIndex: 0, + }); + + await act(async () => { + fireEvent.press(switchButton); + }); + + expect( + Engine.context.MultichainNetworkController.setActiveNetwork, + ).toHaveBeenCalledWith('test-network-id'); + }); + + it('should call setActiveNetwork when updating an existing network', async () => { + // Mock existing network configuration + (useSelector as jest.Mock).mockImplementation((selector) => { + if (selector === selectNetworkName) return 'Ethereum Main Network'; + if (selector === selectUseSafeChainsListValidation) return true; + if (selector === selectNetworkConfigurations) + return { + '0x1': { + chainId: '0x1', + }, + }; + return {}; + }); + + const { getByTestId } = renderWithTheme(<NetworkModal {...props} />); + + const approveButton = getByTestId( + NetworkApprovalBottomSheetSelectorsIDs.APPROVE_BUTTON, + ); + fireEvent.press(approveButton); + + const switchButton = getByTestId( + NetworkAddedBottomSheetSelectorsIDs.SWITCH_NETWORK_BUTTON, + ); + + // Mock the updateNetwork response to include networkClientId + ( + Engine.context.NetworkController.updateNetwork as jest.Mock + ).mockResolvedValue({ + rpcEndpoints: [{ networkClientId: 'test-network-id' }], + defaultRpcEndpointIndex: 0, + }); + + await act(async () => { + fireEvent.press(switchButton); + }); + + expect( + Engine.context.MultichainNetworkController.setActiveNetwork, + ).toHaveBeenCalledWith('test-network-id'); + }); + + it('should call onUpdateNetworkFilter and setActiveNetwork when networkClientId is present', async () => { + const { getByTestId } = renderWithTheme(<NetworkModal {...props} />); + + const approveButton = getByTestId( + NetworkApprovalBottomSheetSelectorsIDs.APPROVE_BUTTON, + ); + fireEvent.press(approveButton); + + const switchButton = getByTestId( + NetworkAddedBottomSheetSelectorsIDs.SWITCH_NETWORK_BUTTON, + ); + + // Mock the addNetwork response to include networkClientId + ( + Engine.context.NetworkController.addNetwork as jest.Mock + ).mockResolvedValue({ + rpcEndpoints: [{ networkClientId: 'test-network-id' }], + defaultRpcEndpointIndex: 0, + }); + + await act(async () => { + fireEvent.press(switchButton); + }); + + // Verify onUpdateNetworkFilter was called (via setTokenNetworkFilter) + expect( + Engine.context.PreferencesController.setTokenNetworkFilter, + ).toHaveBeenCalledWith({ + [props.networkConfiguration.chainId]: true, + }); + + // Verify setActiveNetwork was called with the networkClientId + expect( + Engine.context.MultichainNetworkController.setActiveNetwork, + ).toHaveBeenCalledWith('test-network-id'); + }); + + describe('closeModal', () => { + beforeEach(() => { + jest.clearAllMocks(); + }); + + it('should handle adding new network correctly', async () => { + // Mock empty network configurations + (useSelector as jest.Mock).mockImplementation((selector) => { + if (selector === selectNetworkConfigurations) return {}; + return {}; + }); + + const { getByTestId } = renderWithTheme(<NetworkModal {...props} />); + + // Mock the addNetwork response + ( + Engine.context.NetworkController.addNetwork as jest.Mock + ).mockResolvedValue({ + rpcEndpoints: [{ networkClientId: 'new-network-id' }], + defaultRpcEndpointIndex: 0, + }); + + await act(async () => { + //@ts-expect-error - mockResolvedValueOnce is a jest function in the jest environment + Engine.context.NetworkController.addNetwork.mockResolvedValueOnce({ + rpcEndpoints: [{ networkClientId: 'new-network-id' }], + defaultRpcEndpointIndex: 0, + }); + const approveButton = getByTestId( + NetworkApprovalBottomSheetSelectorsIDs.APPROVE_BUTTON, + ); + fireEvent.press(approveButton); + }); + + await act(async () => { + const closeButton = getByTestId( + NetworkAddedBottomSheetSelectorsIDs.CLOSE_NETWORK_BUTTON, + ); + fireEvent.press(closeButton); + }); + + // Verify network was added with correct parameters + expect(Engine.context.NetworkController.addNetwork).toHaveBeenCalledWith({ + chainId: props.networkConfiguration.chainId, + blockExplorerUrls: [ + props.networkConfiguration.rpcPrefs.blockExplorerUrl, + ], + defaultRpcEndpointIndex: 0, + defaultBlockExplorerUrlIndex: 0, + name: props.networkConfiguration.nickname, + nativeCurrency: props.networkConfiguration.ticker, + rpcEndpoints: [ + { + url: props.networkConfiguration.rpcUrl, + name: props.networkConfiguration.nickname, + type: 'custom', + }, + ], + }); + + // Verify active network was set + expect( + Engine.context.MultichainNetworkController.setActiveNetwork, + ).toHaveBeenCalledWith('new-network-id'); + }); + }); }); diff --git a/app/components/UI/NetworkModal/index.tsx b/app/components/UI/NetworkModal/index.tsx index c1a1cee27e4a..d68d3b1d8a96 100644 --- a/app/components/UI/NetworkModal/index.tsx +++ b/app/components/UI/NetworkModal/index.tsx @@ -38,8 +38,8 @@ import { toHex } from '@metamask/controller-utils'; import { rpcIdentifierUtility } from '../../../components/hooks/useSafeChains'; import Logger from '../../../util/Logger'; import { - selectNetworkConfigurations, selectIsAllNetworks, + selectEvmNetworkConfigurationsByChainId, } from '../../../selectors/networkController'; import { NetworkConfiguration, @@ -88,6 +88,7 @@ const NetworkModals = (props: NetworkProps) => { safeChains, } = props; const { trackEvent, createEventBuilder } = useMetrics(); + const [showDetails, setShowDetails] = React.useState(false); const [networkAdded, setNetworkAdded] = React.useState(false); const [showCheckNetwork, setShowCheckNetwork] = React.useState(false); @@ -198,7 +199,7 @@ const NetworkModals = (props: NetworkProps) => { ); const networkConfigurationByChainId = useSelector( - selectNetworkConfigurations, + selectEvmNetworkConfigurationsByChainId, ); const checkNetwork = useCallback(async () => { @@ -219,7 +220,7 @@ const NetworkModals = (props: NetworkProps) => { }, [checkNetwork]); const closeModal = async () => { - const { NetworkController } = Engine.context; + const { NetworkController, MultichainNetworkController } = Engine.context; const url = new URLPARSE(rpcUrl); !isPrivateConnection(url.hostname) && url.set('protocol', 'https:'); @@ -265,7 +266,7 @@ const NetworkModals = (props: NetworkProps) => { if (networkClientId) { onUpdateNetworkFilter(); - await NetworkController.setActiveNetwork(networkClientId); + await MultichainNetworkController.setActiveNetwork(networkClientId); } onClose(); @@ -275,7 +276,7 @@ const NetworkModals = (props: NetworkProps) => { existingNetwork: NetworkConfiguration, networkId: string, ) => { - const { NetworkController } = Engine.context; + const { NetworkController, MultichainNetworkController } = Engine.context; const updatedNetwork = await NetworkController.updateNetwork( existingNetwork.chainId, existingNetwork, @@ -291,7 +292,7 @@ const NetworkModals = (props: NetworkProps) => { updatedNetwork?.rpcEndpoints?.[updatedNetwork.defaultRpcEndpointIndex] ?? {}; onUpdateNetworkFilter(); - await NetworkController.setActiveNetwork(networkClientId); + await MultichainNetworkController.setActiveNetwork(networkClientId); }; const handleNewNetwork = async ( @@ -337,7 +338,7 @@ const NetworkModals = (props: NetworkProps) => { }; const switchNetwork = async () => { - const { NetworkController } = Engine.context; + const { MultichainNetworkController } = Engine.context; const url = new URLPARSE(rpcUrl); const existingNetwork = networkConfigurationByChainId[chainId]; @@ -355,12 +356,13 @@ const NetworkModals = (props: NetworkProps) => { ticker, blockExplorerUrl, ); + const { networkClientId } = addedNetwork?.rpcEndpoints?.[addedNetwork.defaultRpcEndpointIndex] ?? {}; onUpdateNetworkFilter(); - NetworkController.setActiveNetwork(networkClientId); + await MultichainNetworkController.setActiveNetwork(networkClientId); } onClose(); diff --git a/app/components/UI/NetworkSelectorList/NetworkSelectorList.test.tsx b/app/components/UI/NetworkSelectorList/NetworkSelectorList.test.tsx new file mode 100644 index 000000000000..dd6cf9fc0b64 --- /dev/null +++ b/app/components/UI/NetworkSelectorList/NetworkSelectorList.test.tsx @@ -0,0 +1,113 @@ +jest.mock('react-native/Libraries/Linking/Linking', () => ({ + addEventListener: jest.fn(), + removeEventListener: jest.fn(), + openURL: jest.fn(), + canOpenURL: jest.fn(), + getInitialURL: jest.fn(), +})); + +// Third party dependencies. +import React from 'react'; +import { fireEvent } from '@testing-library/react-native'; +import { View } from 'react-native'; +import renderWithProvider from '../../../util/test/renderWithProvider'; + +// Internal dependencies +import NetworkSelectorList from './NetworkSelectorList'; + +const mockNetworks = [ + { + id: 'network-1', + name: 'Ethereum Mainnet', + imageSource: { uri: 'https://ethereum.org/icon.png' }, + isSelected: false, + yOffset: 0, + rpcUrl: 'https://mainnet.infura.io/v3', + }, + { + id: 'network-2', + name: 'Polygon', + imageSource: { uri: 'https://polygon.org/icon.png' }, + isSelected: true, + yOffset: 100, + rpcUrl: 'https://polygon-rpc.com', + }, +]; + +describe('NetworkSelectorList', () => { + const mockOnSelectNetwork = jest.fn(); + const mockRenderRightAccessory = jest.fn(); + + beforeEach(() => { + jest.clearAllMocks(); + }); + + it('renders correctly with default props', () => { + const { toJSON } = renderWithProvider( + <NetworkSelectorList + networks={mockNetworks} + onSelectNetwork={mockOnSelectNetwork} + />, + ); + expect(toJSON()).toMatchSnapshot(); + }); + + it('renders all networks in the list', () => { + const { getByText } = renderWithProvider( + <NetworkSelectorList + networks={mockNetworks} + onSelectNetwork={mockOnSelectNetwork} + />, + ); + + expect(getByText('Ethereum Mainnet')).toBeTruthy(); + expect(getByText('Polygon')).toBeTruthy(); + }); + + it('handles network selection correctly', () => { + const { getByText } = renderWithProvider( + <NetworkSelectorList + networks={mockNetworks} + onSelectNetwork={mockOnSelectNetwork} + />, + ); + + fireEvent.press(getByText('Ethereum Mainnet')); + expect(mockOnSelectNetwork).toHaveBeenCalledWith('network-1', false); + }); + + it('handles selectedChainIds prop correctly', () => { + const selectedChainIds = ['network-1']; + const { getByTestId } = renderWithProvider( + <NetworkSelectorList + networks={mockNetworks} + onSelectNetwork={mockOnSelectNetwork} + selectedChainIds={selectedChainIds} + />, + ); + + expect(getByTestId('Ethereum Mainnet-selected')).toBeTruthy(); + expect(getByTestId('Polygon-not-selected')).toBeTruthy(); + }); + + it('renders right accessory when provided', () => { + mockRenderRightAccessory.mockReturnValue(<View testID="right-accessory" />); + const { getAllByTestId } = renderWithProvider( + <NetworkSelectorList + networks={mockNetworks} + onSelectNetwork={mockOnSelectNetwork} + renderRightAccessory={mockRenderRightAccessory} + />, + ); + + expect(getAllByTestId('right-accessory')).toHaveLength(2); + expect(mockRenderRightAccessory).toHaveBeenCalledWith( + 'network-1', + 'Ethereum Mainnet', + ); + expect(mockRenderRightAccessory).toHaveBeenCalledWith( + 'network-2', + 'Polygon', + ); + }); +}); diff --git a/app/components/UI/NetworkSelectorList/__snapshots__/NetworkSelectorList.test.tsx.snap b/app/components/UI/NetworkSelectorList/__snapshots__/NetworkSelectorList.test.tsx.snap new file mode 100644 index 000000000000..af1765025ae6 --- /dev/null +++ b/app/components/UI/NetworkSelectorList/__snapshots__/NetworkSelectorList.test.tsx.snap @@ -0,0 +1,382 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`NetworkSelectorList renders correctly with default props 1`] = ` +<RCTScrollView + collapsable={false} + data={ + [ + { + "id": "network-1", + "imageSource": { + "uri": "https://ethereum.org/icon.png", + }, + "isSelected": false, + "name": "Ethereum Mainnet", + "rpcUrl": "https://mainnet.infura.io/v3", + "yOffset": 0, + }, + { + "id": "network-2", + "imageSource": { + "uri": "https://polygon.org/icon.png", + }, + "isSelected": true, + "name": "Polygon", + "rpcUrl": "https://polygon-rpc.com", + "yOffset": 100, + }, + ] + } + getItem={[Function]} + getItemCount={[Function]} + initialNumToRender={999} + keyExtractor={[Function]} + onContentSizeChange={[Function]} + onGestureHandlerEvent={[Function]} + onGestureHandlerStateChange={[Function]} + onLayout={[Function]} + onMomentumScrollBegin={[Function]} + onMomentumScrollEnd={[Function]} + onScroll={[Function]} + onScrollBeginDrag={[Function]} + onScrollEndDrag={[Function]} + removeClippedSubviews={false} + renderItem={[Function]} + renderScrollComponent={[Function]} + scrollEventThrottle={50} + stickyHeaderIndices={[]} + style={ + { + "marginHorizontal": 6, + } + } + viewabilityConfigCallbackPairs={[]} +> + <View> + <View + onFocusCapture={[Function]} + onLayout={[Function]} + style={null} + > + <View + testID="Ethereum Mainnet-not-selected" + > + <TouchableOpacity + onPress={[Function]} + style={ + { + "backgroundColor": "#ffffff", + "borderRadius": 4, + "opacity": 1, + "padding": 16, + } + } + testID="cellmultiselect" + > + <View + accessibilityRole="none" + accessible={true} + style={ + { + "padding": 0, + } + } + > + <View + style={ + { + "alignItems": "center", + "flexDirection": "row", + } + } + > + <TouchableOpacity + disabled={false} + onPressIn={[Function]} + style={ + { + "alignItems": "center", + "flexDirection": "row", + "height": 24, + "marginRight": -8, + "opacity": 1, + } + } + > + <View + accessibilityRole="checkbox" + style={ + { + "alignItems": "center", + "backgroundColor": "#ffffff", + "borderColor": "#141618", + "borderRadius": 4, + "borderWidth": 2, + "height": 20, + "justifyContent": "center", + "width": 20, + } + } + /> + </TouchableOpacity> + <View + accessible={false} + style={ + { + "width": 16, + } + } + testID="listitem-gap" + /> + <View + style={ + { + "flex": 1, + "flexDirection": "row", + } + } + > + <View + style={ + { + "alignItems": "center", + "backgroundColor": "#ffffff", + "borderRadius": 12, + "height": 24, + "justifyContent": "center", + "marginRight": 16, + "overflow": "hidden", + "width": 24, + } + } + testID="cellbase-avatar" + > + <Image + onError={[Function]} + resizeMode="contain" + source={ + { + "uri": "https://ethereum.org/icon.png", + } + } + style={ + { + "height": 24, + "width": 24, + } + } + testID="network-avatar-image" + /> + </View> + <View + style={ + { + "alignItems": "flex-start", + "flex": 1, + } + } + > + <Text + accessibilityRole="text" + numberOfLines={1} + style={ + { + "color": "#141618", + "fontFamily": "EuclidCircularB-Regular", + "fontSize": 16, + "fontWeight": "400", + "letterSpacing": 0, + "lineHeight": 24, + } + } + testID="cellbase-avatar-title" + > + Ethereum Mainnet + </Text> + </View> + </View> + </View> + </View> + </TouchableOpacity> + </View> + </View> + <View + onFocusCapture={[Function]} + onLayout={[Function]} + style={null} + > + <View + testID="Polygon-selected" + > + <TouchableOpacity + onPress={[Function]} + style={ + { + "backgroundColor": "#ffffff", + "borderRadius": 4, + "opacity": 1, + "padding": 16, + } + } + testID="cellmultiselect" + > + <View + accessibilityRole="none" + accessible={true} + style={ + { + "padding": 0, + } + } + > + <View + style={ + { + "alignItems": "center", + "flexDirection": "row", + } + } + > + <TouchableOpacity + disabled={false} + onPressIn={[Function]} + style={ + { + "alignItems": "center", + "flexDirection": "row", + "height": 24, + "marginRight": -8, + "opacity": 1, + } + } + > + <View + accessibilityRole="checkbox" + style={ + { + "alignItems": "center", + "backgroundColor": "#0376c9", + "borderColor": "#0376c9", + "borderRadius": 4, + "borderWidth": 2, + "height": 20, + "justifyContent": "center", + "width": 20, + } + } + > + <SvgMock + color="#ffffff" + height={20} + name="CheckBold" + onPressIn={[Function]} + style={ + { + "height": 20, + "width": 20, + } + } + testID="checkbox-icon-component" + width={20} + /> + </View> + </TouchableOpacity> + <View + accessible={false} + style={ + { + "width": 16, + } + } + testID="listitem-gap" + /> + <View + style={ + { + "flex": 1, + "flexDirection": "row", + } + } + > + <View + style={ + { + "alignItems": "center", + "backgroundColor": "#ffffff", + "borderRadius": 12, + "height": 24, + "justifyContent": "center", + "marginRight": 16, + "overflow": "hidden", + "width": 24, + } + } + testID="cellbase-avatar" + > + <Image + onError={[Function]} + resizeMode="contain" + source={ + { + "uri": "https://polygon.org/icon.png", + } + } + style={ + { + "height": 24, + "width": 24, + } + } + testID="network-avatar-image" + /> + </View> + <View + style={ + { + "alignItems": "flex-start", + "flex": 1, + } + } + > + <Text + accessibilityRole="text" + numberOfLines={1} + style={ + { + "color": "#141618", + "fontFamily": "EuclidCircularB-Regular", + "fontSize": 16, + "fontWeight": "400", + "letterSpacing": 0, + "lineHeight": 24, + } + } + testID="cellbase-avatar-title" + > + Polygon + </Text> + </View> + </View> + </View> + </View> + <View + accessibilityRole="checkbox" + accessible={true} + style={ + { + "backgroundColor": "#0376C91A", + "bottom": 0, + "flexDirection": "row", + "left": 0, + "position": "absolute", + "right": 0, + "top": 0, + } + } + /> + </TouchableOpacity> + </View> + </View> + </View> +</RCTScrollView> +`; diff --git a/app/components/UI/NetworkVerificationInfo/__snapshots__/NetworkVerificationInfo.test.tsx.snap b/app/components/UI/NetworkVerificationInfo/__snapshots__/NetworkVerificationInfo.test.tsx.snap index 4f529aa6628b..0fafb3d155cf 100644 --- a/app/components/UI/NetworkVerificationInfo/__snapshots__/NetworkVerificationInfo.test.tsx.snap +++ b/app/components/UI/NetworkVerificationInfo/__snapshots__/NetworkVerificationInfo.test.tsx.snap @@ -6,11 +6,14 @@ exports[`NetworkVerificationInfo renders correctly 1`] = ` > <View style={ - { - "backgroundColor": "#ffffff", - "flexDirection": "row", - "padding": 16, - } + [ + { + "backgroundColor": "#ffffff", + "flexDirection": "row", + "padding": 16, + }, + false, + ] } testID="header" > diff --git a/app/components/UI/NonEvmTokens/__snapshots__/index.test.tsx.snap b/app/components/UI/NonEvmTokens/__snapshots__/index.test.tsx.snap index 4476e85422fb..df73c5ce52b7 100644 --- a/app/components/UI/NonEvmTokens/__snapshots__/index.test.tsx.snap +++ b/app/components/UI/NonEvmTokens/__snapshots__/index.test.tsx.snap @@ -319,7 +319,7 @@ exports[`NonEvmTokens should render correctly 1`] = ` "isETH": false, "isNative": true, "logo": undefined, - "name": "Solana", + "name": "SOL", "symbol": "SOL", "ticker": "SOL", }, @@ -339,7 +339,7 @@ exports[`NonEvmTokens should render correctly 1`] = ` "isETH": false, "isNative": true, "logo": undefined, - "name": "Solana", + "name": "SOL", "symbol": "SOL", "ticker": "SOL", }, @@ -396,80 +396,67 @@ exports[`NonEvmTokens should render correctly 1`] = ` testID="asset-SOL" > <View - style={ - [ - { - "borderRadius": 12, - "height": 24, - "width": 24, - }, - undefined, - false, - false, - { - "alignItems": "center", - "backgroundColor": "#f2f4f6", - "justifyContent": "center", - }, - { - "borderRadius": 16, - "height": 32, - "overflow": "hidden", - "width": 32, - }, - ] - } - testID="PLACE HOLDER" + useNativeDriver={true} > - <Text + <Image + fadeIn={true} + onError={[Function]} + onLoadEnd={[Function]} + source={ + { + "uri": "", + } + } style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 30, - "fontWeight": "400", - "marginVertical": 2, + "borderRadius": 12, + "height": 24, + "width": 24, }, undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, + false, + false, + { + "borderRadius": 16, + "height": 32, + "overflow": "hidden", + "width": 32, + }, + ] + } + testID="PLACE HOLDER" + /> + <View + collapsable={false} + style={ + { + "bottom": 0, + "left": 0, + "opacity": 1, + "position": "absolute", + "right": 0, + "top": 0, + } + } + > + <View + style={ [ { - "color": "#141618", - "fontSize": 16, - "textAlign": "center", - "textAlignVertical": "center", + "borderRadius": 16, + "height": 32, + "overflow": "hidden", + "width": 32, + }, + { + "backgroundColor": "#eee", }, undefined, - false, - false, - ], - ] - } - > - S - </Text> + ] + } + /> + </View> </View> <View style={ @@ -500,7 +487,7 @@ exports[`NonEvmTokens should render correctly 1`] = ` } } > - Solana + SOL </Text> </View> </View> diff --git a/app/components/UI/NonEvmTokens/index.test.tsx b/app/components/UI/NonEvmTokens/index.test.tsx index f18a8b09625d..a4f3e196bf0e 100644 --- a/app/components/UI/NonEvmTokens/index.test.tsx +++ b/app/components/UI/NonEvmTokens/index.test.tsx @@ -1,12 +1,7 @@ import React from 'react'; import NonEvmTokens from './'; import renderWithProvider from '../../../util/test/renderWithProvider'; -import { - MultichainNetworks, - MultichainNativeAssets, - Cryptocurrency, -} from '@metamask/assets-controllers'; -import { MULTICHAIN_PROVIDER_CONFIGS } from '../../../core/Multichain/constants'; +import { Cryptocurrency } from '@metamask/assets-controllers'; import { WalletViewSelectorsIDs } from '../../../../e2e/selectors/wallet/WalletView.selectors'; import { MOCK_SOLANA_ACCOUNT, @@ -14,6 +9,8 @@ import { } from '../../../util/test/accountsControllerTestUtils'; import { createStackNavigator } from '@react-navigation/stack'; import { RootState } from '../../../reducers'; +import { SolScope } from '@metamask/keyring-api'; +import { MultichainNativeAssets } from '../../../selectors/multichain'; const mockNavigate = jest.fn(); const mockPush = jest.fn(); @@ -46,7 +43,7 @@ const initialState = { }, AccountTrackerController: { accountsByChainId: { - [MultichainNetworks.Solana]: { + [SolScope.Mainnet]: { [MOCK_SOLANA_ACCOUNT.address]: { balance: '5.5', }, @@ -74,21 +71,6 @@ const initialState = { fiatCurrency: 'usd', cryptocurrencies: ['sol' as Cryptocurrency], }, - MultichainController: { - selectedNetwork: { - chainId: MultichainNetworks.Solana, - nickname: - MULTICHAIN_PROVIDER_CONFIGS[MultichainNetworks.Solana].nickname, - isEvmNetwork: false, - }, - defaultToken: { - symbol: 'SOL', - decimals: 9, - isNative: true, - name: MULTICHAIN_PROVIDER_CONFIGS[MultichainNetworks.Solana].nickname, - }, - selectedAccountCachedBalance: '5.5', - }, CurrencyRateController: { currentCurrency: 'USD', conversionRate: 100, @@ -97,12 +79,26 @@ const initialState = { selectedAddress: MOCK_SOLANA_ACCOUNT.address, shouldShowFiat: true, }, + MultichainNetworkController: { + isEvmSelected: false, + selectedMultichainNetworkChainId: SolScope.Mainnet, + multichainNetworkConfigurationsByChainId: { + [SolScope.Mainnet]: { + chainId: SolScope.Mainnet, + name: 'Solana Mainnet', + nativeCurrency: + 'solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp/token:solAddress', + isEvm: false, + }, + }, + }, }, }, + settings: { showTestNetworks: true, }, -}; +} as unknown as RootState; const Stack = createStackNavigator(); const renderComponent = (state: Partial<RootState> = {}) => @@ -127,7 +123,7 @@ describe('NonEvmTokens', () => { it('should display the Solana token with correct balance', async () => { const { getByTestId, getByText } = renderComponent(); - expect(getByText('Solana')).toBeDefined(); + expect(getByText('SOL')).toBeDefined(); const balanceText = getByTestId('fiat-balance-test-id'); expect(balanceText.props.children).toBe('5.5 SOL'); }); diff --git a/app/components/UI/NonEvmTokens/index.tsx b/app/components/UI/NonEvmTokens/index.tsx index 8385cf54011d..7bcd3207812e 100644 --- a/app/components/UI/NonEvmTokens/index.tsx +++ b/app/components/UI/NonEvmTokens/index.tsx @@ -4,7 +4,6 @@ import { selectMultichainDefaultToken, selectMultichainSelectedAccountCachedBalance, selectMultichainConversionRate, - selectMultichainCurrentNetwork, selectMultichainShouldShowFiat, } from '../../../selectors/multichain'; import { TokenList } from '../Tokens/TokenList'; @@ -12,12 +11,15 @@ import { TokenI } from '../Tokens/types'; import { renderFiat } from '../../../util/number'; import { selectCurrentCurrency } from '../../../selectors/currencyRateController'; import { Image } from 'react-native'; -import Engine from '../../../core/Engine/Engine'; +import Engine from '../../../core/Engine'; import Logger from '../../../util/Logger'; +import { MULTICHAIN_TOKEN_IMAGES } from '../../../core/Multichain/constants'; import { - MULTICHAIN_TOKEN_IMAGES, - MultichainProviderConfig, -} from '../../../core/Multichain/constants'; + selectSelectedNonEvmNetworkChainId, + selectSelectedNonEvmNetworkDecimals, + selectSelectedNonEvmNetworkSymbol, +} from '../../../selectors/multichainNetworkController'; +import { selectSelectedInternalAccount } from '../../../selectors/accountsController'; // We need this type to match ScrollableTabView's requirements interface NonEvmTokensProps { @@ -36,8 +38,10 @@ const NonEvmTokens: React.FC<NonEvmTokensProps> = () => { const { symbol } = useSelector(selectMultichainDefaultToken); const conversionRate = useSelector(selectMultichainConversionRate); const shouldShowFiat = useSelector(selectMultichainShouldShowFiat); - const networkConfig = useSelector(selectMultichainCurrentNetwork); - + const nonEvmNetworkChainId = useSelector(selectSelectedNonEvmNetworkChainId); + const nonEvmTicker = useSelector(selectSelectedNonEvmNetworkSymbol); + const selectedAccount = useSelector(selectSelectedInternalAccount); + const decimals = useSelector(selectSelectedNonEvmNetworkDecimals); function getMultiChainFiatBalance(): string { if (conversionRate) { const multichainBalance = Number(nativeTokenBalance); @@ -51,7 +55,7 @@ const NonEvmTokens: React.FC<NonEvmTokensProps> = () => { const getTokenImage = () => { const imageSource = MULTICHAIN_TOKEN_IMAGES[ - networkConfig.chainId as keyof typeof MULTICHAIN_TOKEN_IMAGES + nonEvmNetworkChainId as unknown as keyof typeof MULTICHAIN_TOKEN_IMAGES ]; return imageSource ? Image.resolveAssetSource(imageSource).uri : ''; }; @@ -61,9 +65,9 @@ const NonEvmTokens: React.FC<NonEvmTokensProps> = () => { { address: '', // Non-EVM chains don't use EVM-style addresses for native tokens aggregators: [], - decimals: (networkConfig.network as MultichainProviderConfig).decimal, + decimals, image: getTokenImage(), - name: networkConfig.nickname, + name: nonEvmTicker, symbol: defaultToken.symbol, balance: nativeTokenBalance || '0', balanceFiat: shouldShowFiat ? getMultiChainFiatBalance() : '', @@ -79,11 +83,14 @@ const NonEvmTokens: React.FC<NonEvmTokensProps> = () => { setRefreshing(true); const { MultichainBalancesController } = Engine.context; - - const actions = [MultichainBalancesController.updateBalances()]; - await Promise.all(actions).catch((error) => { - Logger.error(error, 'Error while refreshing NonEvm tokens'); - }); + if (selectedAccount) { + const actions = [ + MultichainBalancesController.updateBalance(selectedAccount?.id), + ]; + await Promise.all(actions).catch((error) => { + Logger.error(error, 'Error while refreshing NonEvm tokens'); + }); + } setRefreshing(false); }); }; diff --git a/app/components/UI/Notification/List/index.test.tsx b/app/components/UI/Notification/List/index.test.tsx index 8fb6a85e6ad3..f919a171df95 100644 --- a/app/components/UI/Notification/List/index.test.tsx +++ b/app/components/UI/Notification/List/index.test.tsx @@ -68,7 +68,7 @@ jest.mock('../NotificationMenuItem', () => ({ function arrangeActions() { const mockMarkNotificationAsRead = jest - .spyOn(Actions, 'markMetamaskNotificationsAsRead') + .spyOn(Actions, 'markNotificationsAsRead') .mockResolvedValue(undefined); return { diff --git a/app/components/UI/Notification/ResetNotificationsModal/index.tsx b/app/components/UI/Notification/ResetNotificationsModal/index.tsx index 492013926860..c88d4710fbf4 100644 --- a/app/components/UI/Notification/ResetNotificationsModal/index.tsx +++ b/app/components/UI/Notification/ResetNotificationsModal/index.tsx @@ -14,7 +14,7 @@ import { IconSize, } from '../../../../component-library/components/Icons/Icon'; import { MetaMetricsEvents } from '../../../../core/Analytics'; -import { useDeleteNotificationsStorageKey } from '../../../../util/notifications/hooks/useNotifications'; +import { useResetNotifications } from '../../../../util/notifications/hooks/useNotifications'; import ModalContent from '../Modal'; import { ToastContext } from '../../../../component-library/components/Toast'; import { ToastVariants } from '../../../../component-library/components/Toast/Toast.types'; @@ -22,8 +22,7 @@ const ResetNotificationsModal = () => { const { trackEvent, createEventBuilder } = useMetrics(); const bottomSheetRef = useRef<BottomSheetRef>(null); const [isChecked, setIsChecked] = React.useState(false); - const { deleteNotificationsStorageKey, loading } = - useDeleteNotificationsStorageKey(); + const { resetNotifications, loading } = useResetNotifications(); const { toastRef } = useContext(ToastContext); const closeBottomSheet = () => bottomSheetRef.current?.onCloseBottomSheet(); @@ -41,7 +40,7 @@ const ResetNotificationsModal = () => { }; const handleCta = async () => { - await deleteNotificationsStorageKey().then(() => { + await resetNotifications().then(() => { showResultToast(); trackEvent( createEventBuilder(MetaMetricsEvents.NOTIFICATION_STORAGE_KEY_DELETED) diff --git a/app/components/UI/PaymentRequest/index.test.tsx b/app/components/UI/PaymentRequest/index.test.tsx index a01c0814d2f8..5bcf31909bad 100644 --- a/app/components/UI/PaymentRequest/index.test.tsx +++ b/app/components/UI/PaymentRequest/index.test.tsx @@ -5,6 +5,7 @@ import { Provider } from 'react-redux'; import configureMockStore from 'redux-mock-store'; import { ThemeContext, mockTheme } from '../../../util/theme'; import { MOCK_ACCOUNTS_CONTROLLER_STATE } from '../../../util/test/accountsControllerTestUtils'; +import { SolScope } from '@metamask/keyring-api'; jest.mock('react', () => ({ ...jest.requireActual('react'), @@ -51,6 +52,12 @@ const initialState = { chainId: '1', }, }, + MultichainNetworkController: { + isEvmSelected: true, + selectedMultichainNetworkChainId: SolScope.Mainnet, + + multichainNetworkConfigurationsByChainId: {}, + }, AccountsController: { ...MOCK_ACCOUNTS_CONTROLLER_STATE, internalAccounts: { diff --git a/app/components/UI/PermissionsSummary/PermissionsSummary.tsx b/app/components/UI/PermissionsSummary/PermissionsSummary.tsx index aa177bf84e7a..dd2dc42532b7 100644 --- a/app/components/UI/PermissionsSummary/PermissionsSummary.tsx +++ b/app/components/UI/PermissionsSummary/PermissionsSummary.tsx @@ -43,7 +43,10 @@ import { getNetworkImageSource } from '../../../util/networks'; import Engine from '../../../core/Engine'; import { SDKSelectorsIDs } from '../../../../e2e/selectors/Settings/SDK.selectors'; import { useSelector } from 'react-redux'; -import { selectProviderConfig } from '../../../selectors/networkController'; +import { + selectEvmChainId, + selectProviderConfig, +} from '../../../selectors/networkController'; import { useNetworkInfo } from '../../../selectors/selectedNetworkController'; import { ConnectedAccountsSelectorsIDs } from '../../../../e2e/selectors/Browser/ConnectedAccountModal.selectors'; import { PermissionSummaryBottomSheetSelectorsIDs } from '../../../../e2e/selectors/Browser/PermissionSummaryBottomSheet.selectors'; @@ -75,6 +78,7 @@ const PermissionsSummary = ({ const { navigate } = useNavigation(); const selectedAccount = useSelectedAccount(); const providerConfig = useSelector(selectProviderConfig); + const chainId = useSelector(selectEvmChainId); const hostname = useMemo( () => new URL(currentPageInformation.url).hostname, @@ -235,6 +239,7 @@ const PermissionsSummary = ({ const matchedAccount = accounts.find( (account) => account.address === accountAddresses[0], ); + return `${strings('permissions.requesting_for')}${ matchedAccount?.name ? matchedAccount.name : accountAddresses[0] }`; @@ -244,6 +249,10 @@ const PermissionsSummary = ({ return `${strings('permissions.requesting_for')}${selectedAccount?.name}`; } + if (!selectedAccount) { + return `${strings('permissions.connect_an_account')}`; + } + return strings('permissions.requesting_for_accounts', { numberOfAccounts: accountAddresses.length, }); @@ -378,7 +387,7 @@ const PermissionsSummary = ({ isNonDappNetworkSwitch ? // @ts-expect-error getNetworkImageSource is not implemented in typescript getNetworkImageSource({ - chainId: providerConfig.chainId, + chainId, }) : chainImage } @@ -479,6 +488,7 @@ const PermissionsSummary = ({ <StyledButton type={'confirm'} onPress={confirm} + disabled={!selectedAccount && accountAddresses.length === 0} containerStyle={[ styles.buttonPositioning, styles.confirmButton, diff --git a/app/components/UI/PermissionsSummary/__snapshots__/PermissionsSummary.test.tsx.snap b/app/components/UI/PermissionsSummary/__snapshots__/PermissionsSummary.test.tsx.snap index 67f8a5036e4b..a256181e3cab 100644 --- a/app/components/UI/PermissionsSummary/__snapshots__/PermissionsSummary.test.tsx.snap +++ b/app/components/UI/PermissionsSummary/__snapshots__/PermissionsSummary.test.tsx.snap @@ -718,6 +718,7 @@ exports[`PermissionsSummary should render correctly 1`] = ` accessibilityRole="button" accessible={true} activeOpacity={0.2} + disabled={false} onPress={[Function]} style={ [ @@ -1221,6 +1222,7 @@ exports[`PermissionsSummary should render correctly for network switch 1`] = ` accessibilityRole="button" accessible={true} activeOpacity={0.2} + disabled={false} onPress={[Function]} style={ [ diff --git a/app/components/UI/Ramp/Views/BuildQuote/BuildQuote.tsx b/app/components/UI/Ramp/Views/BuildQuote/BuildQuote.tsx index de87f85d239a..946444e65612 100644 --- a/app/components/UI/Ramp/Views/BuildQuote/BuildQuote.tsx +++ b/app/components/UI/Ramp/Views/BuildQuote/BuildQuote.tsx @@ -830,7 +830,7 @@ const BuildQuote = () => { )} {hasInsufficientBalance && ( <Row> - <Text variant={TextVariant.BodySM} color={TextColor.Error}> + <Text variant={TextVariant.BodySM} color={TextColor.Error} testID={BuildQuoteSelectors.INSUFFICIENT_BALANCE_ERROR}> {strings('fiat_on_ramp_aggregator.insufficient_balance')} </Text> </Row> diff --git a/app/components/UI/Ramp/Views/NetworkSwitcher/NetworkSwitcher.test.tsx b/app/components/UI/Ramp/Views/NetworkSwitcher/NetworkSwitcher.test.tsx index 5ae44ae8a592..b2b294a230f2 100644 --- a/app/components/UI/Ramp/Views/NetworkSwitcher/NetworkSwitcher.test.tsx +++ b/app/components/UI/Ramp/Views/NetworkSwitcher/NetworkSwitcher.test.tsx @@ -118,6 +118,9 @@ jest.mock('../../../../../core/Engine', () => ({ }, }), }, + MultichainNetworkController: { + setActiveNetwork: jest.fn(), + }, CurrencyRateController: { updateExchangeRate: jest.fn(), }, @@ -280,9 +283,10 @@ describe('NetworkSwitcher View', () => { render(NetworkSwitcher); const lineaNetworkText = screen.getByText('Linea Main Network'); fireEvent.press(lineaNetworkText); + expect( - (Engine.context.NetworkController.setActiveNetwork as jest.Mock).mock - .calls, + (Engine.context.MultichainNetworkController.setActiveNetwork as jest.Mock) + .mock.calls, ).toMatchInlineSnapshot(` [ [ @@ -295,9 +299,10 @@ describe('NetworkSwitcher View', () => { render(NetworkSwitcher); const polygonNetworkTest = screen.getByText('Polygon Mainnet'); fireEvent.press(polygonNetworkTest); + expect( - (Engine.context.NetworkController.setActiveNetwork as jest.Mock).mock - .calls, + (Engine.context.MultichainNetworkController.setActiveNetwork as jest.Mock) + .mock.calls, ).toMatchInlineSnapshot(` [ [ diff --git a/app/components/UI/Ramp/Views/NetworkSwitcher/NetworkSwitcher.tsx b/app/components/UI/Ramp/Views/NetworkSwitcher/NetworkSwitcher.tsx index 6dbf9289fb9c..3f754e12a1e2 100644 --- a/app/components/UI/Ramp/Views/NetworkSwitcher/NetworkSwitcher.tsx +++ b/app/components/UI/Ramp/Views/NetworkSwitcher/NetworkSwitcher.tsx @@ -36,7 +36,7 @@ import { isNetworkRampSupported } from '../../utils'; import Engine from '../../../../../core/Engine'; import { useTheme } from '../../../../../util/theme'; import { getFiatOnRampAggNavbar } from '../../../Navbar'; -import { selectNetworkConfigurations } from '../../../../../selectors/networkController'; +import { selectEvmNetworkConfigurationsByChainId } from '../../../../../selectors/networkController'; import { strings } from '../../../../../../locales/i18n'; import Routes from '../../../../../constants/navigation/Routes'; @@ -61,7 +61,9 @@ function NetworkSwitcher() { const [isCurrentNetworkRampSupported] = useRampNetwork(); const { selectedChainId, isBuy, intent, setIntent } = useRampSDK(); - const networkConfigurations = useSelector(selectNetworkConfigurations); + const networkConfigurations = useSelector( + selectEvmNetworkConfigurationsByChainId, + ); const [networkToBeAdded, setNetworkToBeAdded] = useState<Network>(); const isLoading = isLoadingNetworks || isLoadingNetworksDetail; @@ -144,16 +146,16 @@ function NetworkSwitcher() { const switchToMainnet = useCallback( (type: 'mainnet' | 'linea-mainnet') => { - const { NetworkController } = Engine.context; - NetworkController.setActiveNetwork(type); + const { MultichainNetworkController } = Engine.context; + MultichainNetworkController.setActiveNetwork(type); navigateToGetStarted(); }, [navigateToGetStarted], ); const switchNetwork = useCallback( - (networkConfiguration) => { - const { NetworkController } = Engine.context; + async (networkConfiguration) => { + const { MultichainNetworkController } = Engine.context; const config = Object.values(networkConfigurations).find( ({ chainId }) => chainId === networkConfiguration.chainId, ); @@ -164,7 +166,8 @@ function NetworkSwitcher() { const { networkClientId } = rpcEndpoints?.[defaultRpcEndpointIndex] ?? {}; - NetworkController.setActiveNetwork(networkClientId); + await MultichainNetworkController.setActiveNetwork(networkClientId); + navigateToGetStarted(); } }, @@ -172,7 +175,7 @@ function NetworkSwitcher() { ); const handleNetworkPress = useCallback( - (networkConfiguration) => { + async (networkConfiguration) => { setIntent((prevIntent) => ({ ...prevIntent, chainId: networkConfiguration.chainId, @@ -184,7 +187,7 @@ function NetworkSwitcher() { }; if (networkConfiguration.isAdded) { - switchNetwork(networkConfigurationWithHexChainId); + await switchNetwork(networkConfigurationWithHexChainId); } else { setNetworkToBeAdded(networkConfigurationWithHexChainId); } @@ -193,7 +196,7 @@ function NetworkSwitcher() { ); const handleIntentChainId = useCallback( - (chainId: string) => { + async (chainId: string) => { if (!isNetworkRampSupported(chainId, supportedNetworks)) { return; } @@ -225,7 +228,7 @@ function NetworkSwitcher() { ); if (networkConfiguration) { - handleNetworkPress(networkConfiguration); + await handleNetworkPress(networkConfiguration); } }, [ diff --git a/app/components/UI/Ramp/Views/NetworkSwitcher/__snapshots__/NetworkSwitcher.test.tsx.snap b/app/components/UI/Ramp/Views/NetworkSwitcher/__snapshots__/NetworkSwitcher.test.tsx.snap index 6d6e09db3366..b2a09ef32f7d 100644 --- a/app/components/UI/Ramp/Views/NetworkSwitcher/__snapshots__/NetworkSwitcher.test.tsx.snap +++ b/app/components/UI/Ramp/Views/NetworkSwitcher/__snapshots__/NetworkSwitcher.test.tsx.snap @@ -953,11 +953,14 @@ exports[`NetworkSwitcher View renders and dismisses network modal when pressing > <View style={ - { - "backgroundColor": "#ffffff", - "flexDirection": "row", - "padding": 16, - } + [ + { + "backgroundColor": "#ffffff", + "flexDirection": "row", + "padding": 16, + }, + false, + ] } testID="header" > diff --git a/app/components/UI/Ramp/Views/Quotes/Quotes.constants.ts b/app/components/UI/Ramp/Views/Quotes/Quotes.constants.ts index 6f9b1429cdae..2f7bb9f98cfc 100644 --- a/app/components/UI/Ramp/Views/Quotes/Quotes.constants.ts +++ b/app/components/UI/Ramp/Views/Quotes/Quotes.constants.ts @@ -82,6 +82,7 @@ export const mockQuotesData = [ exchangeRate: 2854.3927196359814, error: false, amountOutInFiat: 46.97353692000001, + tags: { isBestRate: true, isMostReliable: false }, }, { crypto: { @@ -165,6 +166,7 @@ export const mockQuotesData = [ exchangeRate: 2809.8765432098767, error: false, amountOutInFiat: 44.392212, + tags: { isBestRate: true, isMostReliable: true }, }, { crypto: { @@ -243,5 +245,6 @@ export const mockQuotesData = [ exchangeRate: 2749.8832211229255, error: true, amountOutInFiat: 43.586931793800005, + tags: { isBestRate: false, isMostReliable: false }, }, ] as unknown as (DeepPartial<QuoteResponse> | DeepPartial<QuoteError>)[]; diff --git a/app/components/UI/Ramp/Views/Quotes/Quotes.test.tsx b/app/components/UI/Ramp/Views/Quotes/Quotes.test.tsx index b127f342e800..93fdf021b401 100644 --- a/app/components/UI/Ramp/Views/Quotes/Quotes.test.tsx +++ b/app/components/UI/Ramp/Views/Quotes/Quotes.test.tsx @@ -1,5 +1,4 @@ import React from 'react'; -import { cloneDeep } from 'lodash'; import { ProviderBuyFeatureBrowserEnum, QuoteError, @@ -22,7 +21,7 @@ import Timer from './Timer'; import LoadingQuotes from './LoadingQuotes'; import { RampSDK } from '../../sdk'; -import useQuotes from '../../hooks/useQuotes'; +import useSortedQuotes from '../../hooks/useSortedQuotes'; import Routes from '../../../../../constants/navigation/Routes'; import { backgroundState } from '../../../../../util/test/initial-root-state'; @@ -120,18 +119,28 @@ jest.mock('../../../../../util/navigation/navUtils', () => ({ const mockQueryGetQuotes = jest.fn(); -const mockUseQuotesInitialValues: Partial<ReturnType<typeof useQuotes>> = { +const mockUseSortedQuotesInitialValues: Partial< + ReturnType<typeof useSortedQuotes> +> = { quotes: mockQuotesData as (QuoteResponse | QuoteError)[], + quotesWithoutError: mockQuotesData as QuoteResponse[], + quotesWithError: [], + quotesByPriceWithoutError: mockQuotesData as QuoteResponse[], + quotesByReliabilityWithoutError: mockQuotesData as QuoteResponse[], + recommendedQuote: mockQuotesData[1] as QuoteResponse, + sorted: [], isFetching: false, error: null, query: mockQueryGetQuotes, }; -let mockUseQuotesValues: Partial<ReturnType<typeof useQuotes>> = { - ...mockUseQuotesInitialValues, +let mockUseSortedQuotesValues: Partial<ReturnType<typeof useSortedQuotes>> = { + ...mockUseSortedQuotesInitialValues, }; -jest.mock('../../hooks/useQuotes', () => jest.fn(() => mockUseQuotesValues)); +jest.mock('../../hooks/useSortedQuotes', () => + jest.fn(() => mockUseSortedQuotesValues), +); describe('Quotes', () => { afterEach(() => { @@ -150,19 +159,24 @@ describe('Quotes', () => { mockUseParamsValues = { ...mockUseParamsInitialValues, }; - mockUseQuotesValues = { - ...mockUseQuotesInitialValues, + mockUseSortedQuotesValues = { + ...mockUseSortedQuotesInitialValues, }; }); it('calls setOptions when rendering', async () => { - mockUseQuotesValues = { - ...mockUseQuotesInitialValues, + mockUseSortedQuotesValues = { + ...mockUseSortedQuotesInitialValues, isFetching: true, quotes: undefined, + quotesWithoutError: [], + quotesWithError: [], + quotesByPriceWithoutError: [], + quotesByReliabilityWithoutError: [], + recommendedQuote: undefined, }; render(Quotes); - expect(mockSetOptions).toBeCalledTimes(1); + expect(mockSetOptions).toHaveBeenCalled(); }); it('navigates and tracks event on cancel button press', async () => { @@ -172,7 +186,8 @@ describe('Quotes', () => { expect(mockTrackEvent).toBeCalledWith('ONRAMP_CANCELED', { chain_id_destination: '1', location: 'Quotes Screen', - results_count: mockQuotesData.filter((quote) => !quote.error).length, + results_count: + mockUseSortedQuotesInitialValues.quotesByPriceWithoutError?.length, }); act(() => { jest.useRealTimers(); @@ -188,7 +203,8 @@ describe('Quotes', () => { expect(mockTrackEvent).toBeCalledWith('OFFRAMP_CANCELED', { chain_id_source: '1', location: 'Quotes Screen', - results_count: mockQuotesData.filter((quote) => !quote.error).length, + results_count: + mockUseSortedQuotesInitialValues.quotesByPriceWithoutError?.length, }); act(() => { jest.useRealTimers(); @@ -197,8 +213,8 @@ describe('Quotes', () => { it('renders animation on first fetching', async () => { jest.useRealTimers(); - mockUseQuotesValues = { - ...mockUseQuotesInitialValues, + mockUseSortedQuotesValues = { + ...mockUseSortedQuotesInitialValues, isFetching: true, quotes: undefined, }; @@ -209,9 +225,12 @@ describe('Quotes', () => { }); it('renders correctly after animation without quotes', async () => { - mockUseQuotesValues = { - ...mockUseQuotesInitialValues, - quotes: [], + mockUseSortedQuotesValues = { + ...mockUseSortedQuotesInitialValues, + quotesWithoutError: [], + quotesByPriceWithoutError: [], + quotesByReliabilityWithoutError: [], + recommendedQuote: undefined, }; render(Quotes); act(() => { @@ -225,7 +244,7 @@ describe('Quotes', () => { }); }); - it('renders correctly after animation with quotes', async () => { + it('renders correctly after animation with the recommended quote', async () => { render(Quotes); act(() => { jest.advanceTimersByTime(3000); @@ -237,14 +256,7 @@ describe('Quotes', () => { }); }); - it('renders correctly after animation with quotes and expanded', async () => { - mockUseQuotesValues = { - ...mockUseQuotesInitialValues, - quotes: [ - ...mockQuotesData.slice(0, 2), - { ...mockQuotesData[2], error: false }, - ] as (QuoteResponse | QuoteError)[], - }; + it('renders correctly after animation with expanded quotes', async () => { render(Quotes); fireEvent.press( screen.getByRole('button', { name: 'Explore more options' }), @@ -283,10 +295,15 @@ describe('Quotes', () => { const simulateQuoteSelection = async ( browser: ProviderBuyFeatureBrowserEnum, ) => { - // Mock the functions for the 2nd mocked quote - const mockData = cloneDeep(mockQuotesData); - const mockedQuote = mockData[1] as QuoteResponse; - const mockQuoteProviderName = mockedQuote.provider?.name as string; + const mockedRecommendedQuote = + mockUseSortedQuotesInitialValues.recommendedQuote; + + if (!mockedRecommendedQuote) { + throw new Error('No recommended quote found'); + } + + const mockQuoteProviderName = mockedRecommendedQuote?.provider + ?.name as string; const mockedBuyAction = { browser, @@ -298,11 +315,12 @@ describe('Quotes', () => { }), }; - mockedQuote.buy = () => Promise.resolve(mockedBuyAction); + (mockedRecommendedQuote as QuoteResponse).buy = () => + Promise.resolve(mockedBuyAction); - mockUseQuotesValues = { - ...mockUseQuotesInitialValues, - quotes: mockData as (QuoteResponse | QuoteError)[], + mockUseSortedQuotesValues = { + ...mockUseSortedQuotesInitialValues, + recommendedQuote: mockedRecommendedQuote, }; render(Quotes); act(() => { @@ -322,16 +340,16 @@ describe('Quotes', () => { fireEvent.press(quoteContinueButton); }); - return { mockedQuote, mockedBuyAction }; + return { mockedRecommendedQuote, mockedBuyAction }; }; it('navigates and tracks events when pressing buy button with app browser quote', async () => { - const { mockedQuote } = await simulateQuoteSelection( + const { mockedRecommendedQuote } = await simulateQuoteSelection( ProviderBuyFeatureBrowserEnum.AppBrowser, ); expect(mockNavigate).toBeCalledTimes(1); expect(mockNavigate).toBeCalledWith(Routes.RAMP.CHECKOUT, { - provider: mockedQuote.provider, + provider: mockedRecommendedQuote.provider, customOrderId: 'test-order-id', url: 'https://test-url.on-ramp.metamask', }); @@ -346,12 +364,15 @@ describe('Quotes', () => { "currency_source": "USD", "exchange_rate": 2809.8765432098767, "gas_fee": 2.64, + "is_best_rate": true, + "is_most_reliable": true, + "is_recommended": true, "payment_method_id": "/payment-methods/test-payment-method", "processing_fee": 1.8399999999999999, "provider_onramp": "MoonPay (Staging)", - "quote_position": 2, + "quote_position": 1, "refresh_count": 1, - "results_count": 2, + "results_count": 3, "total_fee": 4.48, }, ] @@ -376,12 +397,15 @@ describe('Quotes', () => { "exchange_rate": 2809.8765432098767, "fiat_out": 0.0162, "gas_fee": 2.64, + "is_best_rate": true, + "is_most_reliable": true, + "is_recommended": true, "payment_method_id": "/payment-methods/test-payment-method", "processing_fee": 1.8399999999999999, "provider_offramp": "MoonPay (Staging)", - "quote_position": 2, + "quote_position": 1, "refresh_count": 1, - "results_count": 2, + "results_count": 3, "total_fee": 4.48, }, ] @@ -389,15 +413,16 @@ describe('Quotes', () => { }); it('calls renderInAppBrowser hook and tracks events when pressing buy button with in-app browser quote', async () => { - const { mockedQuote, mockedBuyAction } = await simulateQuoteSelection( - ProviderBuyFeatureBrowserEnum.InAppOsBrowser, - ); + const { mockedRecommendedQuote, mockedBuyAction } = + await simulateQuoteSelection( + ProviderBuyFeatureBrowserEnum.InAppOsBrowser, + ); expect(mockRenderInAppBrowser).toBeCalledWith( mockedBuyAction, - mockedQuote.provider, - mockedQuote.amountIn, - mockedQuote.fiat?.symbol, + mockedRecommendedQuote.provider, + mockedRecommendedQuote.amountIn, + mockedRecommendedQuote.fiat?.symbol, ); expect(mockTrackEvent.mock.lastCall).toMatchInlineSnapshot(` @@ -411,12 +436,15 @@ describe('Quotes', () => { "currency_source": "USD", "exchange_rate": 2809.8765432098767, "gas_fee": 2.64, + "is_best_rate": true, + "is_most_reliable": true, + "is_recommended": true, "payment_method_id": "/payment-methods/test-payment-method", "processing_fee": 1.8399999999999999, "provider_onramp": "MoonPay (Staging)", - "quote_position": 2, + "quote_position": 1, "refresh_count": 1, - "results_count": 2, + "results_count": 3, "total_fee": 4.48, }, ] @@ -441,12 +469,15 @@ describe('Quotes', () => { "exchange_rate": 2809.8765432098767, "fiat_out": 0.0162, "gas_fee": 2.64, + "is_best_rate": true, + "is_most_reliable": true, + "is_recommended": true, "payment_method_id": "/payment-methods/test-payment-method", "processing_fee": 1.8399999999999999, "provider_offramp": "MoonPay (Staging)", - "quote_position": 2, + "quote_position": 1, "refresh_count": 1, - "results_count": 2, + "results_count": 3, "total_fee": 4.48, }, ] @@ -460,21 +491,27 @@ describe('Quotes', () => { jest.clearAllTimers(); }); - const mockQuoteProvider = mockQuotesData[0] - .provider as QuoteResponse['provider']; + const mockRecommendedQuote = mockUseSortedQuotesValues.recommendedQuote; + + if (!mockRecommendedQuote) { + throw new Error('No recommended quote found'); + } + + const mockRecommendedProvider = + mockRecommendedQuote.provider as QuoteResponse['provider']; const descriptionNotFound = screen.queryByText( - mockQuoteProvider.description, + mockRecommendedProvider.description, ); expect(descriptionNotFound).toBeFalsy(); const quoteProviderLogo = screen.getByLabelText( - `${mockQuoteProvider.name} logo`, + `${mockRecommendedProvider.name} logo`, ); fireEvent.press(quoteProviderLogo); - const description = screen.queryByText(mockQuoteProvider.description); + const description = screen.queryByText(mockRecommendedProvider.description); expect(description).toBeTruthy(); act(() => { @@ -536,41 +573,33 @@ describe('Quotes', () => { "ONRAMP_QUOTES_RECEIVED", { "amount": 50, - "average_crypto_out": 0.016671, - "average_gas_fee": 1.32, - "average_processing_fee": 1.455, - "average_total_fee": 2.7750000000000004, - "average_total_fee_of_amount": 202.50619012432108, + "average_crypto_out": 0.016416043333333335, + "average_gas_fee": 1.0466666666666666, + "average_processing_fee": 2.89, + "average_total_fee": 3.936666666666667, + "average_total_fee_of_amount": 382.4978079068538, "chain_id_destination": "1", "currency_destination": "ETH", "currency_source": "USD", "payment_method_id": "/payment-methods/test-payment-method", + "provider_onramp_best_price": "Banxa (Staging)", "provider_onramp_first": "Banxa (Staging)", - "provider_onramp_last": "MoonPay (Staging)", + "provider_onramp_last": "Transak (Staging)", "provider_onramp_list": [ "Banxa (Staging)", "MoonPay (Staging)", + "Transak (Staging)", ], + "provider_onramp_most_reliable": "MoonPay (Staging)", "quotes_amount_first": 0.017142, - "quotes_amount_last": 0.0162, + "quotes_amount_last": 0.01590613, "quotes_amount_list": [ 0.017142, 0.0162, + 0.01590613, ], "refresh_count": 1, - "results_count": 2, - }, - ], - [ - "ONRAMP_QUOTE_ERROR", - { - "amount": 50, - "chain_id_destination": "1", - "currency_destination": "ETH", - "currency_source": "USD", - "error_message": undefined, - "payment_method_id": "/payment-methods/test-payment-method", - "provider_onramp": "Transak (Staging)", + "results_count": 3, }, ], ] @@ -595,41 +624,33 @@ describe('Quotes', () => { "OFFRAMP_QUOTES_RECEIVED", { "amount": 50, - "average_fiat_out": 0.016671, - "average_gas_fee": 1.32, - "average_processing_fee": 1.455, - "average_total_fee": 2.7750000000000004, - "average_total_fee_of_amount": 202.50619012432108, + "average_fiat_out": 0.016416043333333335, + "average_gas_fee": 1.0466666666666666, + "average_processing_fee": 2.89, + "average_total_fee": 3.936666666666667, + "average_total_fee_of_amount": 382.4978079068538, "chain_id_source": "1", "currency_destination": "USD", "currency_source": "ETH", "payment_method_id": "/payment-methods/test-payment-method", + "provider_offramp_best_price": "Banxa (Staging)", "provider_offramp_first": "Banxa (Staging)", - "provider_offramp_last": "MoonPay (Staging)", + "provider_offramp_last": "Transak (Staging)", "provider_offramp_list": [ "Banxa (Staging)", "MoonPay (Staging)", + "Transak (Staging)", ], + "provider_offramp_most_reliable": "MoonPay (Staging)", "quotes_amount_first": 0.017142, - "quotes_amount_last": 0.0162, + "quotes_amount_last": 0.01590613, "quotes_amount_list": [ 0.017142, 0.0162, + 0.01590613, ], "refresh_count": 1, - "results_count": 2, - }, - ], - [ - "OFFRAMP_QUOTE_ERROR", - { - "amount": 50, - "chain_id_source": "1", - "currency_destination": "USD", - "currency_source": "ETH", - "error_message": undefined, - "payment_method_id": "/payment-methods/test-payment-method", - "provider_offramp": "Transak (Staging)", + "results_count": 3, }, ], ] @@ -668,8 +689,8 @@ describe('Quotes', () => { }); it('renders correctly when fetching quotes errors', async () => { - mockUseQuotesValues = { - ...mockUseQuotesInitialValues, + mockUseSortedQuotesValues = { + ...mockUseSortedQuotesInitialValues, error: 'Test Error', }; render(Quotes); @@ -680,8 +701,8 @@ describe('Quotes', () => { }); it('fetches quotes again when pressing button after fetching quotes errors', async () => { - mockUseQuotesValues = { - ...mockUseQuotesInitialValues, + mockUseSortedQuotesValues = { + ...mockUseSortedQuotesInitialValues, error: 'Test Error', }; render(Quotes); diff --git a/app/components/UI/Ramp/Views/Quotes/Quotes.tsx b/app/components/UI/Ramp/Views/Quotes/Quotes.tsx index 2f679e1803c1..2c52e5d1ae27 100644 --- a/app/components/UI/Ramp/Views/Quotes/Quotes.tsx +++ b/app/components/UI/Ramp/Views/Quotes/Quotes.tsx @@ -1,11 +1,4 @@ -import React, { - Fragment, - useCallback, - useEffect, - useMemo, - useRef, - useState, -} from 'react'; +import React, { useCallback, useEffect, useRef, useState } from 'react'; import { useSelector } from 'react-redux'; import { useNavigation } from '@react-navigation/native'; import Animated, { @@ -20,12 +13,10 @@ import { CryptoCurrency, FiatCurrency, ProviderBuyFeatureBrowserEnum, - QuoteError, QuoteResponse, SellQuoteResponse, } from '@consensys/on-ramp-sdk'; import { Provider } from '@consensys/on-ramp-sdk/dist/API'; - import styleSheet from './Quotes.styles'; import LoadingQuotes from './LoadingQuotes'; import Timer from './Timer'; @@ -37,10 +28,6 @@ import Row from '../../components/Row'; import Quote from '../../components/Quote'; import InfoAlert from '../../components/InfoAlert'; import { getFiatOnRampAggNavbar } from '../../../Navbar'; - -import Text, { - TextVariant, -} from '../../../../../component-library/components/Texts/Text'; import { ButtonSize, ButtonVariants, @@ -54,7 +41,7 @@ import BottomSheetFooter, { } from '../../../../../component-library/components/BottomSheets/BottomSheetFooter'; import useAnalytics from '../../hooks/useAnalytics'; -import useQuotes from '../../hooks/useQuotes'; +import useSortedQuotes from '../../hooks/useSortedQuotes'; import { useRampSDK } from '../../sdk'; import { useStyles } from '../../../../../component-library/hooks'; import { @@ -73,7 +60,6 @@ import { isBuyQuote } from '../../utils'; import { getOrdersProviders } from './../../../../../reducers/fiatOrders'; import { QuoteSelectors } from '../../../../../../e2e/selectors/Ramps/Quotes.selectors'; -const HIGHLIGHTED_QUOTES_COUNT = 2; export interface QuotesParams { amount: number | string; asset: CryptoCurrency; @@ -136,54 +122,30 @@ function Quotes() { }); const { - quotes, + recommendedQuote, + quotesWithoutError, + quotesWithError, + quotesByPriceWithoutError, isFetching: isFetchingQuotes, error: ErrorFetchingQuotes, query: fetchQuotes, - } = useQuotes(params.amount); - - const [filteredQuotes, highlightedQuotes] = useMemo(() => { - if (quotes) { - const allQuotes = quotes.filter( - (quote): quote is QuoteResponse | SellQuoteResponse => !quote.error, - ); - const highlightedPreviouslyUsed = allQuotes.findIndex(({ provider }) => - ordersProviders.includes(provider.id), - ); - - let reorderedQuotes = allQuotes; - if (highlightedPreviouslyUsed > -1) { - reorderedQuotes = [ - allQuotes[highlightedPreviouslyUsed], - ...allQuotes.slice(0, highlightedPreviouslyUsed), - ...allQuotes.slice(highlightedPreviouslyUsed + 1), - ]; - } - return [ - reorderedQuotes, - reorderedQuotes.slice(0, HIGHLIGHTED_QUOTES_COUNT), - ] as const; - } - return [[], []] as const; - }, [ordersProviders, quotes]); - - const expandedCount = filteredQuotes.length - highlightedQuotes.length; + } = useSortedQuotes(params.amount); const handleCancelPress = useCallback(() => { if (isBuy) { trackEvent('ONRAMP_CANCELED', { location: 'Quotes Screen', chain_id_destination: selectedChainId, - results_count: filteredQuotes.length, + results_count: quotesByPriceWithoutError.length, }); } else { trackEvent('OFFRAMP_CANCELED', { location: 'Quotes Screen', chain_id_source: selectedChainId, - results_count: filteredQuotes.length, + results_count: quotesByPriceWithoutError.length, }); } - }, [filteredQuotes.length, isBuy, selectedChainId, trackEvent]); + }, [quotesByPriceWithoutError.length, isBuy, selectedChainId, trackEvent]); const handleClosePress = useCallback( (bottomSheetDialogRef) => { @@ -242,10 +204,12 @@ function Quotes() { payment_method_id: selectedPaymentMethodId as string, amount: params.amount, refresh_count: appConfig.POLLING_CYCLES - pollingCyclesLeft, - results_count: filteredQuotes.length, - provider_onramp_first: filteredQuotes[0]?.provider?.name, - provider_onramp_list: filteredQuotes.map(({ provider }) => provider.name), - previously_used_count: filteredQuotes.filter(({ provider }) => + results_count: quotesByPriceWithoutError.length, + provider_onramp_first: quotesByPriceWithoutError[0]?.provider?.name, + provider_onramp_list: quotesByPriceWithoutError.map( + ({ provider }) => provider.name, + ), + previously_used_count: quotesByPriceWithoutError.filter(({ provider }) => ordersProviders.includes(provider.id), ).length, }; @@ -266,7 +230,7 @@ function Quotes() { } }, [ appConfig.POLLING_CYCLES, - filteredQuotes, + quotesByPriceWithoutError, isBuy, ordersProviders, params.amount, @@ -318,7 +282,7 @@ function Quotes() { const payload = { refresh_count: appConfig.POLLING_CYCLES - pollingCyclesLeft, quote_position: index + 1, - results_count: filteredQuotes.length, + results_count: quotesByPriceWithoutError.length, payment_method_id: selectedPaymentMethodId as string, total_fee: totalFee, gas_fee: quote.networkFee ?? 0, @@ -326,6 +290,10 @@ function Quotes() { exchange_rate: ((quote.amountIn ?? 0) - totalFee) / (quote.amountOut ?? 0), amount: params.amount, + is_most_reliable: quote.tags.isMostReliable, + is_best_rate: quote.tags.isBestRate, + is_recommended: + !isExpanded && quote.provider.id === recommendedQuote?.provider.id, }; if (isBuy) { @@ -389,18 +357,22 @@ function Quotes() { } }, [ - isBuy, appConfig.POLLING_CYCLES, - callbackBaseUrl, - filteredQuotes.length, - navigation, - params, pollingCyclesLeft, - rampType, - renderInAppBrowser, - selectedChainId, + quotesByPriceWithoutError.length, selectedPaymentMethodId, + params.amount, + params.fiatCurrency?.symbol, + params.asset?.symbol, + isExpanded, + recommendedQuote?.provider.id, + isBuy, + rampType, trackEvent, + selectedChainId, + renderInAppBrowser, + callbackBaseUrl, + navigation, ], ); @@ -431,14 +403,14 @@ function Quotes() { !isInPolling && !ErrorFetchingQuotes && !isFetchingQuotes && - filteredQuotes?.length + quotesByPriceWithoutError?.length ) { setFirstFetchCompleted(true); setIsInPolling(true); } }, [ ErrorFetchingQuotes, - filteredQuotes, + quotesByPriceWithoutError, firstFetchCompleted, isFetchingQuotes, isInPolling, @@ -469,11 +441,12 @@ function Quotes() { }, [isFetchingQuotes]); useEffect(() => { - if (quotes && !isFetchingQuotes && pollingCyclesLeft >= 0) { - const quotesWithoutError = filteredQuotes as ( - | QuoteResponse - | SellQuoteResponse - )[]; + if ( + quotesWithoutError && + quotesWithError && + !isFetchingQuotes && + pollingCyclesLeft >= 0 + ) { if (quotesWithoutError.length > 0) { const totals = quotesWithoutError.reduce( (acc, curr) => { @@ -510,6 +483,15 @@ function Quotes() { quotesWithoutError.length > 1 ? quotesWithoutError[quotesWithoutError.length - 1]?.provider?.name : undefined; + + const providerMostReliable = quotesWithoutError.find( + (quote) => quote.tags.isMostReliable, + )?.provider?.name; + + const providerBestPrice = quotesWithoutError.find( + (quote) => quote.tags.isBestRate, + )?.provider?.name; + const amountList = quotesWithoutError.map(({ amountOut }) => amountOut); const amountFirst = quotesWithoutError[0]?.amountOut; const amountLast = @@ -543,6 +525,8 @@ function Quotes() { provider_onramp_list: providerList, provider_onramp_first: providerFirst, provider_onramp_last: providerLast, + provider_onramp_most_reliable: providerMostReliable, + provider_onramp_best_price: providerBestPrice, }); } else { trackEvent('OFFRAMP_QUOTES_RECEIVED', { @@ -554,56 +538,61 @@ function Quotes() { provider_offramp_list: providerList, provider_offramp_first: providerFirst, provider_offramp_last: providerLast, + provider_offramp_most_reliable: providerMostReliable, + provider_offramp_best_price: providerBestPrice, }); } } - (quotes as (QuoteResponse | SellQuoteResponse | QuoteError)[]) - .filter((quote): quote is QuoteError => Boolean(quote.error)) - .forEach((quoteError) => { - const payload = { - amount: params.amount, - payment_method_id: selectedPaymentMethodId as string, - error_message: quoteError.message, - }; - if (isBuy) { - trackEvent('ONRAMP_QUOTE_ERROR', { - ...payload, - currency_source: params.fiatCurrency?.symbol, - currency_destination: params.asset?.symbol, - provider_onramp: quoteError.provider.name, - chain_id_destination: selectedChainId, - }); - } else { - trackEvent('OFFRAMP_QUOTE_ERROR', { - ...payload, - currency_destination: params.fiatCurrency?.symbol, - currency_source: params.asset?.symbol, - provider_offramp: quoteError.provider.name, - chain_id_source: selectedChainId, - }); - } - }); + quotesWithError.forEach((quoteError) => { + const payload = { + amount: params.amount, + payment_method_id: selectedPaymentMethodId as string, + error_message: quoteError.message, + }; + if (isBuy) { + trackEvent('ONRAMP_QUOTE_ERROR', { + ...payload, + currency_source: params.fiatCurrency?.symbol, + currency_destination: params.asset?.symbol, + provider_onramp: quoteError.provider.name, + chain_id_destination: selectedChainId, + }); + } else { + trackEvent('OFFRAMP_QUOTE_ERROR', { + ...payload, + currency_destination: params.fiatCurrency?.symbol, + currency_source: params.asset?.symbol, + provider_offramp: quoteError.provider.name, + chain_id_source: selectedChainId, + }); + } + }); } }, [ appConfig.POLLING_CYCLES, - filteredQuotes, + quotesByPriceWithoutError, isBuy, isFetchingQuotes, params, pollingCyclesLeft, - quotes, rampType, selectedChainId, selectedPaymentMethodId, trackEvent, + quotesWithError, + quotesWithoutError, ]); useEffect(() => { - if (filteredQuotes && filteredQuotes.length > 0) { - setProviderId(filteredQuotes[0].provider?.id); + if (quotesByPriceWithoutError && quotesByPriceWithoutError.length > 0) { + if (isExpanded) { + setProviderId(quotesByPriceWithoutError[0].provider?.id); + } else if (recommendedQuote) { + setProviderId(recommendedQuote.provider?.id); + } } - }, [filteredQuotes]); + }, [isExpanded, quotesByPriceWithoutError, recommendedQuote]); if (sdkError) { if (!isExpanded) { @@ -710,7 +699,7 @@ function Quotes() { } // No providers available - if (!isFetchingQuotes && filteredQuotes.length === 0) { + if (!isFetchingQuotes && quotesByPriceWithoutError.length === 0) { if (!isExpanded) { return ( <BottomSheet> @@ -752,7 +741,7 @@ function Quotes() { return ( <BottomSheet ref={bottomSheetRef}> <BottomSheetHeader onClose={() => handleClosePress(bottomSheetRef)}> - {strings('fiat_on_ramp_aggregator.select_a_quote')} + {strings('fiat_on_ramp_aggregator.recommended_quote')} </BottomSheetHeader> {isInPolling && ( @@ -765,31 +754,29 @@ function Quotes() { <ScreenLayout.Content style={styles.withoutTopPadding}> <ScrollView testID={QuoteSelectors.QUOTES}> {isFetchingQuotes && isInPolling ? ( - <LoadingQuotes count={2} /> - ) : ( - highlightedQuotes.map((quote, index) => ( - <Row key={quote.provider.id}> - <Quote - isLoading={isQuoteLoading} - previouslyUsedProvider={ordersProviders.includes( - quote.provider.id, - )} - quote={quote} - onPress={() => handleOnQuotePress(quote)} - onPressCTA={() => handleOnPressCTA(quote, index)} - highlighted={quote.provider.id === providerId} - showInfo={() => handleInfoPress(quote)} - rampType={rampType} - /> - </Row> - )) - )} + <LoadingQuotes count={1} /> + ) : recommendedQuote ? ( + <Row key={recommendedQuote.provider.id}> + <Quote + isLoading={isQuoteLoading} + previouslyUsedProvider={ordersProviders.includes( + recommendedQuote.provider.id, + )} + quote={recommendedQuote} + onPress={() => handleOnQuotePress(recommendedQuote)} + onPressCTA={() => handleOnPressCTA(recommendedQuote, 0)} + highlighted={recommendedQuote.provider.id === providerId} + showInfo={() => handleInfoPress(recommendedQuote)} + rampType={rampType} + /> + </Row> + ) : null} </ScrollView> </ScreenLayout.Content> <BottomSheetFooter buttonsAlignment={ButtonsAlignment.Vertical} buttonPropsArray={ - expandedCount > 0 + quotesByPriceWithoutError.length > 1 ? [ { accessible: true, @@ -892,40 +879,21 @@ function Quotes() { {isFetchingQuotes && isInPolling ? ( <LoadingQuotes /> ) : ( - filteredQuotes.map((quote, index) => ( - <Fragment key={quote.provider.id}> - {index === HIGHLIGHTED_QUOTES_COUNT && - expandedCount > 0 && ( - <Row> - <Text variant={TextVariant.BodyLGMedium}> - {expandedCount === 1 - ? strings( - 'fiat_on_ramp_aggregator.one_more_option', - ) - : strings( - 'fiat_on_ramp_aggregator.more_options', - { - count: expandedCount, - }, - )} - </Text> - </Row> + quotesByPriceWithoutError.map((quote, index) => ( + <Row key={quote.provider.id}> + <Quote + isLoading={isQuoteLoading} + previouslyUsedProvider={ordersProviders.includes( + quote.provider.id, )} - <Row> - <Quote - isLoading={isQuoteLoading} - previouslyUsedProvider={ordersProviders.includes( - quote.provider.id, - )} - quote={quote} - onPress={() => handleOnQuotePress(quote)} - onPressCTA={() => handleOnPressCTA(quote, index)} - highlighted={quote.provider.id === providerId} - showInfo={() => handleInfoPress(quote)} - rampType={rampType} - /> - </Row> - </Fragment> + quote={quote} + onPress={() => handleOnQuotePress(quote)} + onPressCTA={() => handleOnPressCTA(quote, index)} + highlighted={quote.provider.id === providerId} + showInfo={() => handleInfoPress(quote)} + rampType={rampType} + /> + </Row> )) )} </ScreenLayout.Content> diff --git a/app/components/UI/Ramp/Views/Quotes/__snapshots__/Quotes.test.tsx.snap b/app/components/UI/Ramp/Views/Quotes/__snapshots__/Quotes.test.tsx.snap index c5db2fd841d9..f20bbed60d24 100644 --- a/app/components/UI/Ramp/Views/Quotes/__snapshots__/Quotes.test.tsx.snap +++ b/app/components/UI/Ramp/Views/Quotes/__snapshots__/Quotes.test.tsx.snap @@ -1016,7 +1016,7 @@ exports[`Quotes renders animation on first fetching 1`] = ` "borderTopLeftRadius": 8, "borderTopRightRadius": 8, "borderWidth": 1, - "maxHeight": 1314, + "maxHeight": 1334, "overflow": "hidden", "paddingBottom": 0, "shadowColor": "#0000001A", @@ -1616,7 +1616,7 @@ exports[`Quotes renders animation on first fetching 1`] = ` </View> `; -exports[`Quotes renders correctly after animation with quotes 1`] = ` +exports[`Quotes renders correctly after animation with expanded quotes 2`] = ` <View style={ { @@ -2108,7 +2108,8 @@ exports[`Quotes renders correctly after animation with quotes 1`] = ` "borderTopLeftRadius": 8, "borderTopRightRadius": 8, "borderWidth": 1, - "maxHeight": 1314, + "height": 1334, + "maxHeight": 1334, "overflow": "hidden", "paddingBottom": 0, "shadowColor": "#0000001A", @@ -2131,31 +2132,14 @@ exports[`Quotes renders correctly after animation with quotes 1`] = ` > <View style={ - { - "alignItems": "center", - "alignSelf": "stretch", - "padding": 4, - } - } - > - <View - style={ + [ { - "backgroundColor": "#BBC0C566", - "borderRadius": 2, - "height": 4, - "width": 40, - } - } - /> - </View> - <View - style={ - { - "backgroundColor": "#ffffff", - "flexDirection": "row", - "padding": 16, - } + "backgroundColor": "#ffffff", + "flexDirection": "row", + "padding": 16, + }, + false, + ] } testID="header" > @@ -2241,1813 +2225,866 @@ exports[`Quotes renders correctly after animation with quotes 1`] = ` </View> </View> </View> - <View + <RCTSafeAreaView style={ { - "alignItems": "center", - "alignSelf": "center", - "backgroundColor": "#f2f4f6", - "borderRadius": 20, - "flexDirection": "row", - "marginBottom": 8, - "paddingHorizontal": 15, - "paddingVertical": 4, + "flex": 1, } } > - <Text + <View style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 30, - "fontWeight": "400", - "marginVertical": 2, - }, - { - "textAlign": "center", - }, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - { - "color": "#141618", + "backgroundColor": "#ffffff", + "flex": 1, }, undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, ] } > - New quotes in - - <Text + <View style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 30, - "fontWeight": "400", - "marginVertical": 2, - }, - undefined, - undefined, - { - "fontFamily": "EuclidCircularB-Bold", - "fontWeight": "600", - }, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - { - "color": "#141618", + "alignItems": "center", + "marginVertical": 16, }, undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - [ - { - "fontVariant": [ - "tabular-nums", - ], - }, - false, - ], ] } > - 0:07 - </Text> - </Text> - </View> - <View - style={ - [ - { - "padding": 15, - }, - undefined, - { - "paddingTop": 0, - }, - ] - } - > - <RCTScrollView - collapsable={false} - onGestureHandlerEvent={[Function]} - onGestureHandlerStateChange={[Function]} - testID="quotes" - > - <View> <View style={ - [ - { - "marginVertical": 8, - }, - undefined, - undefined, - undefined, - ] + { + "alignItems": "center", + "alignSelf": "center", + "backgroundColor": "#f2f4f6", + "borderRadius": 20, + "flexDirection": "row", + "marginBottom": 8, + "paddingHorizontal": 15, + "paddingVertical": 4, + } } > - <View + <Text style={ - { - "opacity": 0, - } + [ + { + "color": "#141618", + "fontFamily": "EuclidCircularB-Regular", + "fontSize": 30, + "fontWeight": "400", + "marginVertical": 2, + }, + { + "textAlign": "center", + }, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + { + "color": "#141618", + }, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + ] } > - <TouchableOpacity - accessibilityLabel="Banxa (Staging)" - accessible={false} - activeOpacity={0.8} - disabled={true} - > - <View - style={ + New quotes in + + <Text + style={ + [ + { + "color": "#141618", + "fontFamily": "EuclidCircularB-Regular", + "fontSize": 30, + "fontWeight": "400", + "marginVertical": 2, + }, + undefined, + undefined, + { + "fontFamily": "EuclidCircularB-Bold", + "fontWeight": "600", + }, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + { + "color": "#141618", + }, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, [ { - "borderColor": "#848c96", - "borderRadius": 8, - "borderWidth": 1.5, - "padding": 16, - }, - undefined, - { - "borderColor": "#0376c9", + "fontVariant": [ + "tabular-nums", + ], }, + false, + ], + ] + } + > + 0:07 + </Text> + </Text> + </View> + <View + style={ + [ + { + "padding": 15, + }, + undefined, + { + "paddingVertical": 0, + }, + ] + } + > + <Text + style={ + [ + { + "color": "#141618", + "fontFamily": "EuclidCircularB-Regular", + "fontSize": 30, + "fontWeight": "400", + "marginVertical": 2, + }, + { + "textAlign": "center", + }, + undefined, + undefined, + undefined, + undefined, + undefined, + { + "color": "#6a737d", + }, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + ] + } + > + Compare rates from these providers. Quotes are sorted by overall price. + </Text> + </View> + </View> + <Modal + animationType="none" + deviceHeight={null} + deviceWidth={null} + hardwareAccelerated={false} + hideModalContentWhileAnimating={false} + onBackdropPress={[Function]} + onModalHide={[Function]} + onModalWillHide={[Function]} + onModalWillShow={[Function]} + onRequestClose={[Function]} + panResponderThreshold={4} + scrollHorizontal={false} + scrollOffset={0} + scrollOffsetMax={0} + scrollTo={null} + statusBarTranslucent={false} + supportedOrientations={ + [ + "portrait", + "landscape", + ] + } + swipeDirection="down" + swipeThreshold={100} + transparent={true} + visible={false} + /> + <View + style={ + [ + { + "flex": 1, + }, + undefined, + ] + } + > + <View + style={ + [ + { + "backgroundColor": "#848c96", + "height": 1, + "width": "100%", + }, + { + "opacity": undefined, + }, + ] + } + /> + <RCTScrollView + collapsable={false} + onScroll={[Function]} + scrollEventThrottle={16} + style={{}} + > + <View> + <View + style={ + [ + { + "padding": 15, + }, + undefined, + { + "paddingTop": 0, + }, + ] + } + > + <View + style={ + [ { - "padding": 0, + "marginVertical": 8, }, undefined, + undefined, + undefined, ] } > <View - accessibilityRole="none" - accessible={true} style={ { - "padding": 16, + "opacity": 0, } } > - <View - style={ - { - "marginBottom": 8, - } - } + <TouchableOpacity + accessibilityLabel="Banxa (Staging)" + accessible={false} + activeOpacity={0.8} + disabled={true} > - <TouchableOpacity - accessibilityHint="Shows provider details" - accessibilityLabel="Banxa (Staging) logo" - disabled={false} - onPress={[Function]} + <View + style={ + [ + { + "borderColor": "#848c96", + "borderRadius": 8, + "borderWidth": 1.5, + "padding": 16, + }, + undefined, + { + "borderColor": "#0376c9", + }, + { + "padding": 0, + }, + undefined, + ] + } > <View + accessibilityRole="none" + accessible={true} style={ { - "alignItems": "center", - "flexDirection": "row", + "padding": 16, } } > - <Image - onError={[Function]} - source={ - { - "uri": "https://on-ramp.dev-api.cx.metamask.io/assets/providers/banxa_light.png", - } - } + <View style={ { - "height": 24, - "width": 65, + "marginBottom": 8, } } - /> - <Text - allowFontScaling={false} - style={ - [ - { - "color": undefined, - "fontSize": 12, - }, - { - "color": "#6a737d", - "marginLeft": 8, - }, - { - "fontFamily": "Feather", - "fontStyle": "normal", - "fontWeight": "normal", - }, - {}, - ] - } > -  - </Text> - </View> - </TouchableOpacity> - </View> - <View - style={ - { - "alignItems": "center", - "flexDirection": "row", - } - } - > - <View - style={ - { - "flex": 1, - } - } - testID="listitemcolumn" - > - <Text - accessibilityRole="text" - style={ - { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 16, - "fontWeight": "500", - "letterSpacing": 0, - "lineHeight": 24, - } - } - > - 0.01714 - - ETH - </Text> - </View> - <View - accessible={false} - style={ - { - "width": 16, - } - } - testID="listitem-gap" - /> - <View - style={ - { - "flex": -1, - } - } - testID="listitemcolumn" - > - <Text - accessibilityRole="text" - style={ - { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 16, - "fontWeight": "500", - "letterSpacing": 0, - "lineHeight": 24, - } - } - > - ≈ - $ - - 46.97 AUD - </Text> - </View> - </View> - <View - style={ - { - "marginTop": 0, - } - } - > - <View - onLayout={[Function]} - style={ - [ - { - "marginTop": 4, - "overflow": "hidden", - }, - {}, - ] - } - > - <View - style={ - { - "marginTop": 10, - } - } - > - <TouchableOpacity - accessibilityRole="button" - accessible={true} - activeOpacity={0.2} - disabled={false} - onPress={[Function]} - style={ - [ - [ + <View + style={ + { + "display": "flex", + "flexDirection": "row", + "gap": 8, + "marginBottom": 8, + } + } + > + <View + style={ { - "borderRadius": 100, + "alignItems": "center", + "alignSelf": "flex-start", + "backgroundColor": "#1C82341A", + "borderRadius": 4, + "height": 20, "justifyContent": "center", - "padding": 15, - }, + "paddingHorizontal": 8, + } + } + testID="tagcolored" + > + <Text + accessibilityRole="text" + style={ + { + "color": "#1c8234", + "fontFamily": "EuclidCircularB-Bold", + "fontSize": 10, + "fontWeight": "bold", + "letterSpacing": 0.25, + "lineHeight": 16, + "textTransform": "uppercase", + } + } + testID="tagcolored-text" + > + Best rate + </Text> + </View> + </View> + <TouchableOpacity + accessibilityHint="Shows provider details" + accessibilityLabel="Banxa (Staging) logo" + disabled={false} + onPress={[Function]} + > + <View + style={ { - "backgroundColor": "#0376c9", - }, - undefined, - ], - null, - ] + "alignItems": "center", + "flexDirection": "row", + } + } + > + <Image + onError={[Function]} + source={ + { + "uri": "https://on-ramp.dev-api.cx.metamask.io/assets/providers/banxa_light.png", + } + } + style={ + { + "height": 24, + "width": 65, + } + } + /> + <Text + allowFontScaling={false} + style={ + [ + { + "color": undefined, + "fontSize": 12, + }, + { + "color": "#6a737d", + "marginLeft": 8, + }, + { + "fontFamily": "Feather", + "fontStyle": "normal", + "fontWeight": "normal", + }, + {}, + ] + } + > +  + </Text> + </View> + </TouchableOpacity> + </View> + <View + style={ + { + "alignItems": "center", + "flexDirection": "row", + } } > - <Text + <View style={ - [ + { + "flex": 1, + } + } + testID="listitemcolumn" + > + <Text + accessibilityRole="text" + style={ { - "color": "#007aff", - "fontSize": 17, + "color": "#141618", + "fontFamily": "EuclidCircularB-Medium", + "fontSize": 16, "fontWeight": "500", - "textAlign": "center", - }, - null, - [ - { - "fontFamily": "EuclidCircularB-Bold", - "fontSize": 14, - "fontWeight": "600", - "textAlign": "center", - }, - { - "color": "#ffffff", - }, - undefined, - ], - null, - ] + "letterSpacing": 0, + "lineHeight": 24, + } + } + > + 0.01714 + + ETH + </Text> + </View> + <View + accessible={false} + style={ + { + "width": 16, + } + } + testID="listitem-gap" + /> + <View + style={ + { + "flex": -1, + } } + testID="listitemcolumn" > - Continue with Banxa (Staging) - </Text> - </TouchableOpacity> - </View> - </View> - </View> - </View> - </View> - </TouchableOpacity> - </View> - </View> - <View - style={ - [ - { - "marginVertical": 8, - }, - undefined, - undefined, - undefined, - ] - } - > - <View - style={ - { - "opacity": 0, - } - } - > - <TouchableOpacity - accessibilityLabel="MoonPay (Staging)" - accessibilityRole="button" - accessible={true} - activeOpacity={0.8} - disabled={false} - onPress={[Function]} - > + <Text + accessibilityRole="text" + style={ + { + "color": "#141618", + "fontFamily": "EuclidCircularB-Medium", + "fontSize": 16, + "fontWeight": "500", + "letterSpacing": 0, + "lineHeight": 24, + } + } + > + ≈ + $ + + 46.97 AUD + </Text> + </View> + </View> + <View + style={ + { + "marginTop": 0, + } + } + > + <View + onLayout={[Function]} + style={ + [ + { + "marginTop": 4, + "overflow": "hidden", + }, + {}, + ] + } + > + <View + style={ + { + "marginTop": 10, + } + } + > + <TouchableOpacity + accessibilityRole="button" + accessible={true} + activeOpacity={0.2} + disabled={false} + onPress={[Function]} + style={ + [ + [ + { + "borderRadius": 100, + "justifyContent": "center", + "padding": 15, + }, + { + "backgroundColor": "#0376c9", + }, + undefined, + ], + null, + ] + } + > + <Text + style={ + [ + { + "color": "#007aff", + "fontSize": 17, + "fontWeight": "500", + "textAlign": "center", + }, + null, + [ + { + "fontFamily": "EuclidCircularB-Bold", + "fontSize": 14, + "fontWeight": "600", + "textAlign": "center", + }, + { + "color": "#ffffff", + }, + undefined, + ], + null, + ] + } + > + Continue with Banxa (Staging) + </Text> + </TouchableOpacity> + </View> + </View> + </View> + </View> + </View> + </TouchableOpacity> + </View> + </View> <View style={ [ { - "borderColor": "#848c96", - "borderRadius": 8, - "borderWidth": 1.5, - "padding": 16, + "marginVertical": 8, }, undefined, - false, - { - "padding": 0, - }, + undefined, undefined, ] } > <View - accessibilityRole="none" - accessible={true} style={ { - "padding": 16, + "opacity": 0, } } > - <View - style={ - { - "marginBottom": 8, - } - } + <TouchableOpacity + accessibilityLabel="MoonPay (Staging)" + accessibilityRole="button" + accessible={true} + activeOpacity={0.8} + disabled={false} + onPress={[Function]} > - <TouchableOpacity - accessibilityHint="Shows provider details" - accessibilityLabel="MoonPay (Staging) logo" - disabled={true} + <View + style={ + [ + { + "borderColor": "#848c96", + "borderRadius": 8, + "borderWidth": 1.5, + "padding": 16, + }, + undefined, + false, + { + "padding": 0, + }, + undefined, + ] + } > <View + accessibilityRole="none" + accessible={true} style={ { - "alignItems": "center", - "flexDirection": "row", + "padding": 16, } } > - <Image - onError={[Function]} - source={ - { - "uri": "https://on-ramp.dev-api.cx.metamask.io/assets/providers/moonpay_light.png", - } - } + <View style={ { - "height": 24, - "width": 88, + "marginBottom": 8, } } - /> - <Text - allowFontScaling={false} - style={ - [ - { - "color": undefined, - "fontSize": 12, - }, - { - "color": "#6a737d", - "marginLeft": 8, - }, - { - "fontFamily": "Feather", - "fontStyle": "normal", - "fontWeight": "normal", - }, - {}, - ] - } > -  - </Text> - </View> - </TouchableOpacity> - </View> - <View - style={ - { - "alignItems": "center", - "flexDirection": "row", - } - } - > - <View - style={ - { - "flex": 1, - } - } - testID="listitemcolumn" - > - <Text - accessibilityRole="text" - style={ - { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 16, - "fontWeight": "500", - "letterSpacing": 0, - "lineHeight": 24, - } - } - > - 0.0162 - - ETH - </Text> - </View> - <View - accessible={false} - style={ - { - "width": 16, - } - } - testID="listitem-gap" - /> - <View - style={ - { - "flex": -1, - } - } - testID="listitemcolumn" - > - <Text - accessibilityRole="text" - style={ - { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 16, - "fontWeight": "500", - "letterSpacing": 0, - "lineHeight": 24, - } - } - > - ≈ - $ - - 44.39 AUD - </Text> - </View> - </View> - <View - style={ - { - "marginTop": 0, - } - } - > - <View - onLayout={[Function]} - style={ - [ - { - "marginTop": 4, - "overflow": "hidden", - }, - {}, - ] - } - > - <View - style={ - { - "marginTop": 10, - } - } - > - <TouchableOpacity - accessibilityRole="button" - accessible={true} - activeOpacity={0.2} - disabled={false} - onPress={[Function]} - style={ - [ - [ + <View + style={ + { + "display": "flex", + "flexDirection": "row", + "gap": 8, + "marginBottom": 8, + } + } + > + <View + style={ { - "borderRadius": 100, + "alignItems": "center", + "alignSelf": "flex-start", + "backgroundColor": "#0376C91A", + "borderRadius": 4, + "height": 20, "justifyContent": "center", - "padding": 15, - }, + "paddingHorizontal": 8, + } + } + testID="tagcolored" + > + <Text + accessibilityRole="text" + style={ + { + "color": "#0376c9", + "fontFamily": "EuclidCircularB-Bold", + "fontSize": 10, + "fontWeight": "bold", + "letterSpacing": 0.25, + "lineHeight": 16, + "textTransform": "uppercase", + } + } + testID="tagcolored-text" + > + Most reliable + </Text> + </View> + <View + style={ { - "backgroundColor": "#0376c9", - }, - undefined, - ], - null, - ] + "alignItems": "center", + "alignSelf": "flex-start", + "backgroundColor": "#1C82341A", + "borderRadius": 4, + "height": 20, + "justifyContent": "center", + "paddingHorizontal": 8, + } + } + testID="tagcolored" + > + <Text + accessibilityRole="text" + style={ + { + "color": "#1c8234", + "fontFamily": "EuclidCircularB-Bold", + "fontSize": 10, + "fontWeight": "bold", + "letterSpacing": 0.25, + "lineHeight": 16, + "textTransform": "uppercase", + } + } + testID="tagcolored-text" + > + Best rate + </Text> + </View> + </View> + <TouchableOpacity + accessibilityHint="Shows provider details" + accessibilityLabel="MoonPay (Staging) logo" + disabled={true} + > + <View + style={ + { + "alignItems": "center", + "flexDirection": "row", + } + } + > + <Image + onError={[Function]} + source={ + { + "uri": "https://on-ramp.dev-api.cx.metamask.io/assets/providers/moonpay_light.png", + } + } + style={ + { + "height": 24, + "width": 88, + } + } + /> + <Text + allowFontScaling={false} + style={ + [ + { + "color": undefined, + "fontSize": 12, + }, + { + "color": "#6a737d", + "marginLeft": 8, + }, + { + "fontFamily": "Feather", + "fontStyle": "normal", + "fontWeight": "normal", + }, + {}, + ] + } + > +  + </Text> + </View> + </TouchableOpacity> + </View> + <View + style={ + { + "alignItems": "center", + "flexDirection": "row", + } } > - <Text + <View style={ - [ + { + "flex": 1, + } + } + testID="listitemcolumn" + > + <Text + accessibilityRole="text" + style={ { - "color": "#007aff", - "fontSize": 17, + "color": "#141618", + "fontFamily": "EuclidCircularB-Medium", + "fontSize": 16, "fontWeight": "500", - "textAlign": "center", + "letterSpacing": 0, + "lineHeight": 24, + } + } + > + 0.0162 + + ETH + </Text> + </View> + <View + accessible={false} + style={ + { + "width": 16, + } + } + testID="listitem-gap" + /> + <View + style={ + { + "flex": -1, + } + } + testID="listitemcolumn" + > + <Text + accessibilityRole="text" + style={ + { + "color": "#141618", + "fontFamily": "EuclidCircularB-Medium", + "fontSize": 16, + "fontWeight": "500", + "letterSpacing": 0, + "lineHeight": 24, + } + } + > + ≈ + $ + + 44.39 AUD + </Text> + </View> + </View> + <View + style={ + { + "marginTop": 0, + } + } + > + <View + onLayout={[Function]} + style={ + [ + { + "marginTop": 4, + "overflow": "hidden", }, - null, - [ - { - "fontFamily": "EuclidCircularB-Bold", - "fontSize": 14, - "fontWeight": "600", - "textAlign": "center", - }, - { - "color": "#ffffff", - }, - undefined, - ], - null, - ] - } - > - Continue with MoonPay (Staging) - </Text> - </TouchableOpacity> - </View> - </View> - </View> - </View> - </View> - </TouchableOpacity> - </View> - </View> - </View> - </RCTScrollView> - </View> - <View - style={ - { - "backgroundColor": "#ffffff", - "flexDirection": "column", - "paddingHorizontal": 8, - "paddingVertical": 4, - } - } - testID="bottomsheetfooter" - /> - <Modal - animationType="none" - deviceHeight={null} - deviceWidth={null} - hardwareAccelerated={false} - hideModalContentWhileAnimating={false} - onBackdropPress={[Function]} - onModalHide={[Function]} - onModalWillHide={[Function]} - onModalWillShow={[Function]} - onRequestClose={[Function]} - panResponderThreshold={4} - scrollHorizontal={false} - scrollOffset={0} - scrollOffsetMax={0} - scrollTo={null} - statusBarTranslucent={false} - supportedOrientations={ - [ - "portrait", - "landscape", - ] - } - swipeDirection="down" - swipeThreshold={100} - transparent={true} - visible={false} - /> - </View> - </View> - </View> - </View> - </View> - </View> - </View> - </View> - </View> - </RNSScreen> - </RNSScreenContainer> - </RNCSafeAreaProvider> -</View> -`; - -exports[`Quotes renders correctly after animation with quotes and expanded 2`] = ` -<View - style={ - { - "flex": 1, - } - } -> - <RNCSafeAreaProvider - onInsetsChange={[Function]} - style={ - [ - { - "flex": 1, - }, - undefined, - ] - } - > - <View - collapsable={false} - pointerEvents="box-none" - style={ - { - "zIndex": 1, - } - } - > - <View - accessibilityElementsHidden={false} - importantForAccessibility="auto" - onLayout={[Function]} - pointerEvents="box-none" - style={null} - > - <View - collapsable={false} - pointerEvents="box-none" - style={ - { - "bottom": 0, - "left": 0, - "opacity": 1, - "position": "absolute", - "right": 0, - "top": 0, - "zIndex": 0, - } - } - > - <View - collapsable={false} - style={ - { - "backgroundColor": "#ffffff", - "borderBottomColor": "rgb(216, 216, 216)", - "elevation": 0, - "flex": 1, - "shadowColor": "transparent", - "shadowOffset": { - "height": 0.5, - "width": 0, - }, - "shadowOpacity": 0.85, - "shadowRadius": 0, - } - } - /> - </View> - <View - collapsable={false} - pointerEvents="box-none" - style={ - { - "height": 64, - "maxHeight": undefined, - "minHeight": undefined, - "opacity": undefined, - "transform": undefined, - } - } - > - <View - pointerEvents="none" - style={ - { - "height": 20, - } - } - /> - <View - pointerEvents="box-none" - style={ - { - "alignItems": "center", - "flex": 1, - "flexDirection": "row", - "justifyContent": "center", - } - } - > - <View - collapsable={false} - pointerEvents="box-none" - style={ - { - "alignItems": "flex-start", - "bottom": 0, - "justifyContent": "center", - "left": 0, - "opacity": 1, - "position": "absolute", - "top": 0, - } - } - > - <TouchableOpacity - accessibilityRole="button" - accessible={true} - onPress={[Function]} - style={ - { - "paddingHorizontal": 18, - "paddingVertical": 8, - } - } - > - <Text - style={ - { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 23.57142857142857, - "fontWeight": "400", - } - } - > - Back - </Text> - </TouchableOpacity> - </View> - <View - collapsable={false} - pointerEvents="box-none" - style={ - { - "marginHorizontal": 72, - "opacity": 1, - } - } - > - <TouchableOpacity - activeOpacity={1} - onPress={[Function]} - style={ - { - "alignItems": "center", - "justifyContent": "center", - } - } - > - <Text - accessibilityRole="text" - numberOfLines={1} - style={ - { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", - "fontSize": 14, - "fontWeight": "700", - "letterSpacing": 0, - "lineHeight": 22, - } - } - > - Select a Quote - </Text> - <View - style={ - { - "alignItems": "center", - "flexDirection": "row", - } - } - > - <Text - accessibilityRole="text" - numberOfLines={1} - style={ - { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, - "fontWeight": "400", - "letterSpacing": 0, - "lineHeight": 20, - } - } - > - Ethereum Main Network - </Text> - </View> - </TouchableOpacity> - </View> - <View - collapsable={false} - pointerEvents="box-none" - style={ - { - "alignItems": "flex-end", - "bottom": 0, - "justifyContent": "center", - "opacity": 1, - "position": "absolute", - "right": 0, - "top": 0, - } - } - > - <TouchableOpacity - accessibilityRole="button" - accessible={true} - onPress={[Function]} - style={ - { - "paddingHorizontal": 18, - "paddingVertical": 8, - } - } - > - <Text - style={ - { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 23.57142857142857, - "fontWeight": "400", - } - } - > - Cancel - </Text> - </TouchableOpacity> - </View> - </View> - </View> - </View> - </View> - <RNSScreenContainer - onLayout={[Function]} - style={ - { - "flex": 1, - } - } - > - <RNSScreen - activityState={2} - collapsable={false} - gestureResponseDistance={ - { - "bottom": -1, - "end": -1, - "start": -1, - "top": -1, - } - } - pointerEvents="box-none" - style={ - { - "bottom": 0, - "left": 0, - "position": "absolute", - "right": 0, - "top": 0, - } - } - > - <View - collapsable={false} - style={ - { - "opacity": 1, - } - } - /> - <View - accessibilityElementsHidden={false} - closing={false} - gestureVelocityImpact={0.3} - importantForAccessibility="auto" - onClose={[Function]} - onGestureBegin={[Function]} - onGestureCanceled={[Function]} - onGestureEnd={[Function]} - onOpen={[Function]} - onTransition={[Function]} - pointerEvents="box-none" - style={ - [ - { - "overflow": undefined, - }, - { - "bottom": 0, - "left": 0, - "position": "absolute", - "right": 0, - "top": 0, - }, - ] - } - transitionSpec={ - { - "close": { - "animation": "spring", - "config": { - "damping": 500, - "mass": 3, - "overshootClamping": true, - "restDisplacementThreshold": 10, - "restSpeedThreshold": 10, - "stiffness": 1000, - }, - }, - "open": { - "animation": "spring", - "config": { - "damping": 500, - "mass": 3, - "overshootClamping": true, - "restDisplacementThreshold": 10, - "restSpeedThreshold": 10, - "stiffness": 1000, - }, - }, - } - } - > - <View - collapsable={false} - needsOffscreenAlphaCompositing={false} - pointerEvents="box-none" - style={ - { - "flex": 1, - } - } - > - <View - collapsable={false} - onGestureHandlerEvent={[Function]} - onGestureHandlerStateChange={[Function]} - style={ - { - "flex": 1, - "transform": [ - { - "translateX": 0, - }, - { - "translateX": 0, - }, - ], - } - } - > - <View - collapsable={false} - pointerEvents="none" - style={ - { - "backgroundColor": "rgb(242, 242, 242)", - "bottom": 0, - "left": 0, - "position": "absolute", - "shadowColor": "#000", - "shadowOffset": { - "height": 1, - "width": -1, - }, - "shadowOpacity": 0.3, - "shadowRadius": 5, - "top": 0, - "width": 3, - } - } - /> - <View - style={ - [ - { - "flex": 1, - "overflow": "hidden", - }, - [ - { - "backgroundColor": "rgb(242, 242, 242)", - }, - undefined, - ], - ] - } - > - <View - style={ - { - "flex": 1, - "flexDirection": "column-reverse", - } - } - > - <View - style={ - { - "flex": 1, - } - } - > - <View - onLayout={[Function]} - style={ - [ - { - "bottom": 0, - "justifyContent": "flex-end", - "left": 0, - "position": "absolute", - "right": 0, - "top": 0, - }, - { - "paddingBottom": 0, - }, - ] - } - > - <View - style={ - [ - { - "backgroundColor": "#00000099", - "bottom": 0, - "left": 0, - "position": "absolute", - "right": 0, - "top": 0, - }, - { - "opacity": 0, - }, - ] - } - > - <TouchableOpacity - onPress={[Function]} - style={ - { - "flex": 1, - } - } - /> - </View> - <View - onLayout={[Function]} - style={ - [ - { - "bottom": 0, - "left": 0, - "position": "absolute", - "right": 0, - }, - { - "paddingBottom": 0, - }, - ] - } - > - <View - collapsable={false} - onGestureHandlerEvent={[Function]} - onGestureHandlerStateChange={[Function]} - onLayout={[Function]} - style={ - [ - { - "backgroundColor": "#ffffff", - "borderColor": "#BBC0C566", - "borderTopLeftRadius": 8, - "borderTopRightRadius": 8, - "borderWidth": 1, - "height": 1314, - "maxHeight": 1314, - "overflow": "hidden", - "paddingBottom": 0, - "shadowColor": "#0000001A", - "shadowOffset": { - "height": 2, - "width": 0, - }, - "shadowOpacity": 1, - "shadowRadius": 40, - }, - { - "transform": [ - { - "translateY": 1334, - }, - ], - }, - ] - } - > - <View - style={ - { - "backgroundColor": "#ffffff", - "flexDirection": "row", - "padding": 16, - } - } - testID="header" - > - <View - style={ - { - "width": undefined, - } - } - > - <View - onLayout={[Function]} - /> - </View> - <View - style={ - { - "alignItems": "center", - "flex": 1, - "marginHorizontal": 16, - } - } - > - <Text - accessibilityRole="text" - style={ - { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", - "fontSize": 16, - "fontWeight": "700", - "letterSpacing": 0, - "lineHeight": 24, - "textAlign": "center", - } - } - testID="header-title" - > - Select a Quote - </Text> - </View> - <View - style={ - { - "width": undefined, - } - } - > - <View - onLayout={[Function]} - > - <TouchableOpacity - accessible={true} - activeOpacity={1} - disabled={false} - onPress={[Function]} - onPressIn={[Function]} - onPressOut={[Function]} - style={ - { - "alignItems": "center", - "borderRadius": 8, - "height": 24, - "justifyContent": "center", - "opacity": 1, - "width": 24, - } - } - > - <SvgMock - color="#141618" - height={16} - name="Close" - style={ - { - "height": 16, - "width": 16, - } - } - width={16} - /> - </TouchableOpacity> - </View> - </View> - </View> - <RCTSafeAreaView - style={ - { - "flex": 1, - } - } - > - <View - style={ - [ - { - "backgroundColor": "#ffffff", - "flex": 1, - }, - undefined, - ] - } - > - <View - style={ - [ - { - "alignItems": "center", - "marginVertical": 16, - }, - undefined, - ] - } - > - <View - style={ - { - "alignItems": "center", - "alignSelf": "center", - "backgroundColor": "#f2f4f6", - "borderRadius": 20, - "flexDirection": "row", - "marginBottom": 8, - "paddingHorizontal": 15, - "paddingVertical": 4, - } - } - > - <Text - style={ - [ - { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 30, - "fontWeight": "400", - "marginVertical": 2, - }, - { - "textAlign": "center", - }, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - { - "color": "#141618", - }, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - ] - } - > - New quotes in - - <Text - style={ - [ - { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 30, - "fontWeight": "400", - "marginVertical": 2, - }, - undefined, - undefined, - { - "fontFamily": "EuclidCircularB-Bold", - "fontWeight": "600", - }, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - { - "color": "#141618", - }, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - [ - { - "fontVariant": [ - "tabular-nums", - ], - }, - false, - ], - ] - } - > - 0:07 - </Text> - </Text> - </View> - <View - style={ - [ - { - "padding": 15, - }, - undefined, - { - "paddingVertical": 0, - }, - ] - } - > - <Text - style={ - [ - { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 30, - "fontWeight": "400", - "marginVertical": 2, - }, - { - "textAlign": "center", - }, - undefined, - undefined, - undefined, - undefined, - undefined, - { - "color": "#6a737d", - }, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - ] - } - > - Compare rates from these providers. Quotes are sorted by overall price. - </Text> - </View> - </View> - <Modal - animationType="none" - deviceHeight={null} - deviceWidth={null} - hardwareAccelerated={false} - hideModalContentWhileAnimating={false} - onBackdropPress={[Function]} - onModalHide={[Function]} - onModalWillHide={[Function]} - onModalWillShow={[Function]} - onRequestClose={[Function]} - panResponderThreshold={4} - scrollHorizontal={false} - scrollOffset={0} - scrollOffsetMax={0} - scrollTo={null} - statusBarTranslucent={false} - supportedOrientations={ - [ - "portrait", - "landscape", - ] - } - swipeDirection="down" - swipeThreshold={100} - transparent={true} - visible={false} - /> - <View - style={ - [ - { - "flex": 1, - }, - undefined, - ] - } - > - <View - style={ - [ - { - "backgroundColor": "#848c96", - "height": 1, - "width": "100%", - }, - { - "opacity": undefined, - }, - ] - } - /> - <RCTScrollView - collapsable={false} - onScroll={[Function]} - scrollEventThrottle={16} - style={{}} - > - <View> - <View - style={ - [ - { - "padding": 15, - }, - undefined, - { - "paddingTop": 0, - }, - ] - } - > - <View - style={ - [ - { - "marginVertical": 8, - }, - undefined, - undefined, - undefined, - ] - } - > - <View - style={ - { - "opacity": 0, - } - } - > - <TouchableOpacity - accessibilityLabel="Banxa (Staging)" - accessible={false} - activeOpacity={0.8} - disabled={true} - > - <View - style={ - [ - { - "borderColor": "#848c96", - "borderRadius": 8, - "borderWidth": 1.5, - "padding": 16, - }, - undefined, - { - "borderColor": "#0376c9", - }, - { - "padding": 0, - }, - undefined, - ] - } - > - <View - accessibilityRole="none" - accessible={true} - style={ - { - "padding": 16, - } - } - > - <View - style={ - { - "marginBottom": 8, - } - } - > - <TouchableOpacity - accessibilityHint="Shows provider details" - accessibilityLabel="Banxa (Staging) logo" - disabled={false} - onPress={[Function]} - > - <View - style={ - { - "alignItems": "center", - "flexDirection": "row", - } - } - > - <Image - onError={[Function]} - source={ - { - "uri": "https://on-ramp.dev-api.cx.metamask.io/assets/providers/banxa_light.png", - } - } - style={ - { - "height": 24, - "width": 65, - } - } - /> - <Text - allowFontScaling={false} - style={ - [ - { - "color": undefined, - "fontSize": 12, - }, - { - "color": "#6a737d", - "marginLeft": 8, - }, - { - "fontFamily": "Feather", - "fontStyle": "normal", - "fontWeight": "normal", - }, - {}, - ] - } - > -  - </Text> - </View> - </TouchableOpacity> - </View> - <View - style={ - { - "alignItems": "center", - "flexDirection": "row", - } - } - > - <View - style={ - { - "flex": 1, - } - } - testID="listitemcolumn" - > - <Text - accessibilityRole="text" - style={ - { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 16, - "fontWeight": "500", - "letterSpacing": 0, - "lineHeight": 24, - } - } - > - 0.01714 - - ETH - </Text> - </View> - <View - accessible={false} - style={ - { - "width": 16, - } - } - testID="listitem-gap" - /> - <View - style={ - { - "flex": -1, - } - } - testID="listitemcolumn" - > - <Text - accessibilityRole="text" - style={ - { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 16, - "fontWeight": "500", - "letterSpacing": 0, - "lineHeight": 24, - } - } - > - ≈ - $ - - 46.97 AUD - </Text> - </View> - </View> - <View - style={ - { - "marginTop": 0, - } - } - > - <View - onLayout={[Function]} - style={ - [ - { - "marginTop": 4, - "overflow": "hidden", - }, - {}, + {}, ] } > @@ -4107,7 +3144,7 @@ exports[`Quotes renders correctly after animation with quotes and expanded 2`] = ] } > - Continue with Banxa (Staging) + Continue with MoonPay (Staging) </Text> </TouchableOpacity> </View> @@ -4138,7 +3175,7 @@ exports[`Quotes renders correctly after animation with quotes and expanded 2`] = } > <TouchableOpacity - accessibilityLabel="MoonPay (Staging)" + accessibilityLabel="Transak (Staging)" accessibilityRole="button" accessible={true} activeOpacity={0.8} @@ -4181,7 +3218,7 @@ exports[`Quotes renders correctly after animation with quotes and expanded 2`] = > <TouchableOpacity accessibilityHint="Shows provider details" - accessibilityLabel="MoonPay (Staging) logo" + accessibilityLabel="Transak (Staging) logo" disabled={true} > <View @@ -4196,13 +3233,13 @@ exports[`Quotes renders correctly after animation with quotes and expanded 2`] = onError={[Function]} source={ { - "uri": "https://on-ramp.dev-api.cx.metamask.io/assets/providers/moonpay_light.png", + "uri": "https://on-ramp.dev-api.cx.metamask.io/assets/providers/transak_light.png", } } style={ { "height": 24, - "width": 88, + "width": 90, } } /> @@ -4261,7 +3298,7 @@ exports[`Quotes renders correctly after animation with quotes and expanded 2`] = } } > - 0.0162 + 0.01591 ETH </Text> @@ -4299,7 +3336,7 @@ exports[`Quotes renders correctly after animation with quotes and expanded 2`] = ≈ $ - 44.39 AUD + 43.59 AUD </Text> </View> </View> @@ -4378,7 +3415,7 @@ exports[`Quotes renders correctly after animation with quotes and expanded 2`] = ] } > - Continue with MoonPay (Staging) + Continue with Transak (Staging) </Text> </TouchableOpacity> </View> @@ -4389,311 +3426,1212 @@ exports[`Quotes renders correctly after animation with quotes and expanded 2`] = </TouchableOpacity> </View> </View> + </View> + </View> + </RCTScrollView> + </View> + </View> + </RCTSafeAreaView> + </View> + </View> + </View> + </View> + </View> + </View> + </View> + </View> + </View> + </RNSScreen> + </RNSScreenContainer> + </RNCSafeAreaProvider> +</View> +`; + +exports[`Quotes renders correctly after animation with the recommended quote 1`] = ` +<View + style={ + { + "flex": 1, + } + } +> + <RNCSafeAreaProvider + onInsetsChange={[Function]} + style={ + [ + { + "flex": 1, + }, + undefined, + ] + } + > + <View + collapsable={false} + pointerEvents="box-none" + style={ + { + "zIndex": 1, + } + } + > + <View + accessibilityElementsHidden={false} + importantForAccessibility="auto" + onLayout={[Function]} + pointerEvents="box-none" + style={null} + > + <View + collapsable={false} + pointerEvents="box-none" + style={ + { + "bottom": 0, + "left": 0, + "opacity": 1, + "position": "absolute", + "right": 0, + "top": 0, + "zIndex": 0, + } + } + > + <View + collapsable={false} + style={ + { + "backgroundColor": "#ffffff", + "borderBottomColor": "rgb(216, 216, 216)", + "elevation": 0, + "flex": 1, + "shadowColor": "transparent", + "shadowOffset": { + "height": 0.5, + "width": 0, + }, + "shadowOpacity": 0.85, + "shadowRadius": 0, + } + } + /> + </View> + <View + collapsable={false} + pointerEvents="box-none" + style={ + { + "height": 64, + "maxHeight": undefined, + "minHeight": undefined, + "opacity": undefined, + "transform": undefined, + } + } + > + <View + pointerEvents="none" + style={ + { + "height": 20, + } + } + /> + <View + pointerEvents="box-none" + style={ + { + "alignItems": "center", + "flex": 1, + "flexDirection": "row", + "justifyContent": "center", + } + } + > + <View + collapsable={false} + pointerEvents="box-none" + style={ + { + "alignItems": "flex-start", + "bottom": 0, + "justifyContent": "center", + "left": 0, + "opacity": 1, + "position": "absolute", + "top": 0, + } + } + > + <TouchableOpacity + accessibilityRole="button" + accessible={true} + onPress={[Function]} + style={ + { + "paddingHorizontal": 18, + "paddingVertical": 8, + } + } + > + <Text + style={ + { + "color": "#0376c9", + "fontFamily": "EuclidCircularB-Regular", + "fontSize": 23.57142857142857, + "fontWeight": "400", + } + } + > + Back + </Text> + </TouchableOpacity> + </View> + <View + collapsable={false} + pointerEvents="box-none" + style={ + { + "marginHorizontal": 72, + "opacity": 1, + } + } + > + <TouchableOpacity + activeOpacity={1} + onPress={[Function]} + style={ + { + "alignItems": "center", + "justifyContent": "center", + } + } + > + <Text + accessibilityRole="text" + numberOfLines={1} + style={ + { + "color": "#141618", + "fontFamily": "EuclidCircularB-Bold", + "fontSize": 14, + "fontWeight": "700", + "letterSpacing": 0, + "lineHeight": 22, + } + } + > + Select a Quote + </Text> + <View + style={ + { + "alignItems": "center", + "flexDirection": "row", + } + } + > + <Text + accessibilityRole="text" + numberOfLines={1} + style={ + { + "color": "#6a737d", + "fontFamily": "EuclidCircularB-Regular", + "fontSize": 12, + "fontWeight": "400", + "letterSpacing": 0, + "lineHeight": 20, + } + } + > + Ethereum Main Network + </Text> + </View> + </TouchableOpacity> + </View> + <View + collapsable={false} + pointerEvents="box-none" + style={ + { + "alignItems": "flex-end", + "bottom": 0, + "justifyContent": "center", + "opacity": 1, + "position": "absolute", + "right": 0, + "top": 0, + } + } + > + <TouchableOpacity + accessibilityRole="button" + accessible={true} + onPress={[Function]} + style={ + { + "paddingHorizontal": 18, + "paddingVertical": 8, + } + } + > + <Text + style={ + { + "color": "#0376c9", + "fontFamily": "EuclidCircularB-Regular", + "fontSize": 23.57142857142857, + "fontWeight": "400", + } + } + > + Cancel + </Text> + </TouchableOpacity> + </View> + </View> + </View> + </View> + </View> + <RNSScreenContainer + onLayout={[Function]} + style={ + { + "flex": 1, + } + } + > + <RNSScreen + activityState={2} + collapsable={false} + gestureResponseDistance={ + { + "bottom": -1, + "end": -1, + "start": -1, + "top": -1, + } + } + pointerEvents="box-none" + style={ + { + "bottom": 0, + "left": 0, + "position": "absolute", + "right": 0, + "top": 0, + } + } + > + <View + collapsable={false} + style={ + { + "opacity": 1, + } + } + /> + <View + accessibilityElementsHidden={false} + closing={false} + gestureVelocityImpact={0.3} + importantForAccessibility="auto" + onClose={[Function]} + onGestureBegin={[Function]} + onGestureCanceled={[Function]} + onGestureEnd={[Function]} + onOpen={[Function]} + onTransition={[Function]} + pointerEvents="box-none" + style={ + [ + { + "overflow": undefined, + }, + { + "bottom": 0, + "left": 0, + "position": "absolute", + "right": 0, + "top": 0, + }, + ] + } + transitionSpec={ + { + "close": { + "animation": "spring", + "config": { + "damping": 500, + "mass": 3, + "overshootClamping": true, + "restDisplacementThreshold": 10, + "restSpeedThreshold": 10, + "stiffness": 1000, + }, + }, + "open": { + "animation": "spring", + "config": { + "damping": 500, + "mass": 3, + "overshootClamping": true, + "restDisplacementThreshold": 10, + "restSpeedThreshold": 10, + "stiffness": 1000, + }, + }, + } + } + > + <View + collapsable={false} + needsOffscreenAlphaCompositing={false} + pointerEvents="box-none" + style={ + { + "flex": 1, + } + } + > + <View + collapsable={false} + onGestureHandlerEvent={[Function]} + onGestureHandlerStateChange={[Function]} + style={ + { + "flex": 1, + "transform": [ + { + "translateX": 0, + }, + { + "translateX": 0, + }, + ], + } + } + > + <View + collapsable={false} + pointerEvents="none" + style={ + { + "backgroundColor": "rgb(242, 242, 242)", + "bottom": 0, + "left": 0, + "position": "absolute", + "shadowColor": "#000", + "shadowOffset": { + "height": 1, + "width": -1, + }, + "shadowOpacity": 0.3, + "shadowRadius": 5, + "top": 0, + "width": 3, + } + } + /> + <View + style={ + [ + { + "flex": 1, + "overflow": "hidden", + }, + [ + { + "backgroundColor": "rgb(242, 242, 242)", + }, + undefined, + ], + ] + } + > + <View + style={ + { + "flex": 1, + "flexDirection": "column-reverse", + } + } + > + <View + style={ + { + "flex": 1, + } + } + > + <View + onLayout={[Function]} + style={ + [ + { + "bottom": 0, + "justifyContent": "flex-end", + "left": 0, + "position": "absolute", + "right": 0, + "top": 0, + }, + { + "paddingBottom": 0, + }, + ] + } + > + <View + style={ + [ + { + "backgroundColor": "#00000099", + "bottom": 0, + "left": 0, + "position": "absolute", + "right": 0, + "top": 0, + }, + { + "opacity": 0, + }, + ] + } + > + <TouchableOpacity + onPress={[Function]} + style={ + { + "flex": 1, + } + } + /> + </View> + <View + onLayout={[Function]} + style={ + [ + { + "bottom": 0, + "left": 0, + "position": "absolute", + "right": 0, + }, + { + "paddingBottom": 0, + }, + ] + } + > + <View + collapsable={false} + onGestureHandlerEvent={[Function]} + onGestureHandlerStateChange={[Function]} + onLayout={[Function]} + style={ + [ + { + "backgroundColor": "#ffffff", + "borderColor": "#BBC0C566", + "borderTopLeftRadius": 8, + "borderTopRightRadius": 8, + "borderWidth": 1, + "maxHeight": 1334, + "overflow": "hidden", + "paddingBottom": 0, + "shadowColor": "#0000001A", + "shadowOffset": { + "height": 2, + "width": 0, + }, + "shadowOpacity": 1, + "shadowRadius": 40, + }, + { + "transform": [ + { + "translateY": 1334, + }, + ], + }, + ] + } + > + <View + style={ + { + "alignItems": "center", + "alignSelf": "stretch", + "padding": 4, + } + } + > + <View + style={ + { + "backgroundColor": "#BBC0C566", + "borderRadius": 2, + "height": 4, + "width": 40, + } + } + /> + </View> + <View + style={ + [ + { + "backgroundColor": "#ffffff", + "flexDirection": "row", + "padding": 16, + }, + false, + ] + } + testID="header" + > + <View + style={ + { + "width": undefined, + } + } + > + <View + onLayout={[Function]} + /> + </View> + <View + style={ + { + "alignItems": "center", + "flex": 1, + "marginHorizontal": 16, + } + } + > + <Text + accessibilityRole="text" + style={ + { + "color": "#141618", + "fontFamily": "EuclidCircularB-Bold", + "fontSize": 16, + "fontWeight": "700", + "letterSpacing": 0, + "lineHeight": 24, + "textAlign": "center", + } + } + testID="header-title" + > + Recommended quote + </Text> + </View> + <View + style={ + { + "width": undefined, + } + } + > + <View + onLayout={[Function]} + > + <TouchableOpacity + accessible={true} + activeOpacity={1} + disabled={false} + onPress={[Function]} + onPressIn={[Function]} + onPressOut={[Function]} + style={ + { + "alignItems": "center", + "borderRadius": 8, + "height": 24, + "justifyContent": "center", + "opacity": 1, + "width": 24, + } + } + > + <SvgMock + color="#141618" + height={16} + name="Close" + style={ + { + "height": 16, + "width": 16, + } + } + width={16} + /> + </TouchableOpacity> + </View> + </View> + </View> + <View + style={ + { + "alignItems": "center", + "alignSelf": "center", + "backgroundColor": "#f2f4f6", + "borderRadius": 20, + "flexDirection": "row", + "marginBottom": 8, + "paddingHorizontal": 15, + "paddingVertical": 4, + } + } + > + <Text + style={ + [ + { + "color": "#141618", + "fontFamily": "EuclidCircularB-Regular", + "fontSize": 30, + "fontWeight": "400", + "marginVertical": 2, + }, + { + "textAlign": "center", + }, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + { + "color": "#141618", + }, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + ] + } + > + New quotes in + + <Text + style={ + [ + { + "color": "#141618", + "fontFamily": "EuclidCircularB-Regular", + "fontSize": 30, + "fontWeight": "400", + "marginVertical": 2, + }, + undefined, + undefined, + { + "fontFamily": "EuclidCircularB-Bold", + "fontWeight": "600", + }, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + { + "color": "#141618", + }, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + [ + { + "fontVariant": [ + "tabular-nums", + ], + }, + false, + ], + ] + } + > + 0:07 + </Text> + </Text> + </View> + <View + style={ + [ + { + "padding": 15, + }, + undefined, + { + "paddingTop": 0, + }, + ] + } + > + <RCTScrollView + collapsable={false} + onGestureHandlerEvent={[Function]} + onGestureHandlerStateChange={[Function]} + testID="quotes" + > + <View> + <View + style={ + [ + { + "marginVertical": 8, + }, + undefined, + undefined, + undefined, + ] + } + > + <View + style={ + { + "opacity": 0, + } + } + > + <TouchableOpacity + accessibilityLabel="MoonPay (Staging)" + accessible={false} + activeOpacity={0.8} + disabled={true} + > <View style={ [ { - "marginVertical": 8, - }, - undefined, - undefined, - undefined, - ] - } - > - <Text - accessibilityRole="text" - style={ - { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 16, - "fontWeight": "500", - "letterSpacing": 0, - "lineHeight": 24, - } - } - > - 1 more option - </Text> - </View> - <View - style={ - [ - { - "marginVertical": 8, + "borderColor": "#848c96", + "borderRadius": 8, + "borderWidth": 1.5, + "padding": 16, }, undefined, - undefined, + { + "borderColor": "#0376c9", + }, + { + "padding": 0, + }, undefined, ] } > <View + accessibilityRole="none" + accessible={true} style={ { - "opacity": 0, + "padding": 16, } } > - <TouchableOpacity - accessibilityLabel="Transak (Staging)" - accessibilityRole="button" - accessible={true} - activeOpacity={0.8} - disabled={false} - onPress={[Function]} + <View + style={ + { + "marginBottom": 8, + } + } > <View style={ - [ - { - "borderColor": "#848c96", - "borderRadius": 8, - "borderWidth": 1.5, - "padding": 16, - }, - undefined, - false, - { - "padding": 0, - }, - undefined, - ] + { + "display": "flex", + "flexDirection": "row", + "gap": 8, + "marginBottom": 8, + } } > <View - accessibilityRole="none" - accessible={true} style={ { - "padding": 16, + "alignItems": "center", + "alignSelf": "flex-start", + "backgroundColor": "#0376C91A", + "borderRadius": 4, + "height": 20, + "justifyContent": "center", + "paddingHorizontal": 8, } } + testID="tagcolored" > - <View + <Text + accessibilityRole="text" style={ { - "marginBottom": 8, + "color": "#0376c9", + "fontFamily": "EuclidCircularB-Bold", + "fontSize": 10, + "fontWeight": "bold", + "letterSpacing": 0.25, + "lineHeight": 16, + "textTransform": "uppercase", } } + testID="tagcolored-text" > - <TouchableOpacity - accessibilityHint="Shows provider details" - accessibilityLabel="Transak (Staging) logo" - disabled={true} - > - <View - style={ - { - "alignItems": "center", - "flexDirection": "row", - } - } - > - <Image - onError={[Function]} - source={ - { - "uri": "https://on-ramp.dev-api.cx.metamask.io/assets/providers/transak_light.png", - } - } - style={ - { - "height": 24, - "width": 90, - } - } - /> - <Text - allowFontScaling={false} - style={ - [ - { - "color": undefined, - "fontSize": 12, - }, - { - "color": "#6a737d", - "marginLeft": 8, - }, - { - "fontFamily": "Feather", - "fontStyle": "normal", - "fontWeight": "normal", - }, - {}, - ] - } - > -  - </Text> - </View> - </TouchableOpacity> - </View> - <View + Most reliable + </Text> + </View> + <View + style={ + { + "alignItems": "center", + "alignSelf": "flex-start", + "backgroundColor": "#1C82341A", + "borderRadius": 4, + "height": 20, + "justifyContent": "center", + "paddingHorizontal": 8, + } + } + testID="tagcolored" + > + <Text + accessibilityRole="text" style={ { - "alignItems": "center", - "flexDirection": "row", + "color": "#1c8234", + "fontFamily": "EuclidCircularB-Bold", + "fontSize": 10, + "fontWeight": "bold", + "letterSpacing": 0.25, + "lineHeight": 16, + "textTransform": "uppercase", + } + } + testID="tagcolored-text" + > + Best rate + </Text> + </View> + </View> + <TouchableOpacity + accessibilityHint="Shows provider details" + accessibilityLabel="MoonPay (Staging) logo" + disabled={false} + onPress={[Function]} + > + <View + style={ + { + "alignItems": "center", + "flexDirection": "row", + } + } + > + <Image + onError={[Function]} + source={ + { + "uri": "https://on-ramp.dev-api.cx.metamask.io/assets/providers/moonpay_light.png", + } + } + style={ + { + "height": 24, + "width": 88, } } - > - <View - style={ - { - "flex": 1, - } - } - testID="listitemcolumn" - > - <Text - accessibilityRole="text" - style={ + /> + <Text + allowFontScaling={false} + style={ + [ + { + "color": undefined, + "fontSize": 12, + }, + { + "color": "#6a737d", + "marginLeft": 8, + }, + { + "fontFamily": "Feather", + "fontStyle": "normal", + "fontWeight": "normal", + }, + {}, + ] + } + > +  + </Text> + </View> + </TouchableOpacity> + </View> + <View + style={ + { + "alignItems": "center", + "flexDirection": "row", + } + } + > + <View + style={ + { + "flex": 1, + } + } + testID="listitemcolumn" + > + <Text + accessibilityRole="text" + style={ + { + "color": "#141618", + "fontFamily": "EuclidCircularB-Medium", + "fontSize": 16, + "fontWeight": "500", + "letterSpacing": 0, + "lineHeight": 24, + } + } + > + 0.0162 + + ETH + </Text> + </View> + <View + accessible={false} + style={ + { + "width": 16, + } + } + testID="listitem-gap" + /> + <View + style={ + { + "flex": -1, + } + } + testID="listitemcolumn" + > + <Text + accessibilityRole="text" + style={ + { + "color": "#141618", + "fontFamily": "EuclidCircularB-Medium", + "fontSize": 16, + "fontWeight": "500", + "letterSpacing": 0, + "lineHeight": 24, + } + } + > + ≈ + $ + + 44.39 AUD + </Text> + </View> + </View> + <View + style={ + { + "marginTop": 0, + } + } + > + <View + onLayout={[Function]} + style={ + [ + { + "marginTop": 4, + "overflow": "hidden", + }, + {}, + ] + } + > + <View + style={ + { + "marginTop": 10, + } + } + > + <TouchableOpacity + accessibilityRole="button" + accessible={true} + activeOpacity={0.2} + disabled={false} + onPress={[Function]} + style={ + [ + [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 16, - "fontWeight": "500", - "letterSpacing": 0, - "lineHeight": 24, - } - } - > - 0.01591 - - ETH - </Text> - </View> - <View - accessible={false} - style={ - { - "width": 16, - } - } - testID="listitem-gap" - /> - <View - style={ - { - "flex": -1, - } - } - testID="listitemcolumn" - > - <Text - accessibilityRole="text" - style={ + "borderRadius": 100, + "justifyContent": "center", + "padding": 15, + }, { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 16, - "fontWeight": "500", - "letterSpacing": 0, - "lineHeight": 24, - } - } - > - ≈ - $ - - 43.59 AUD - </Text> - </View> - </View> - <View - style={ - { - "marginTop": 0, - } + "backgroundColor": "#0376c9", + }, + undefined, + ], + null, + ] } > - <View - onLayout={[Function]} + <Text style={ [ { - "marginTop": 4, - "overflow": "hidden", + "color": "#007aff", + "fontSize": 17, + "fontWeight": "500", + "textAlign": "center", }, - {}, + null, + [ + { + "fontFamily": "EuclidCircularB-Bold", + "fontSize": 14, + "fontWeight": "600", + "textAlign": "center", + }, + { + "color": "#ffffff", + }, + undefined, + ], + null, ] } > - <View - style={ - { - "marginTop": 10, - } - } - > - <TouchableOpacity - accessibilityRole="button" - accessible={true} - activeOpacity={0.2} - disabled={false} - onPress={[Function]} - style={ - [ - [ - { - "borderRadius": 100, - "justifyContent": "center", - "padding": 15, - }, - { - "backgroundColor": "#0376c9", - }, - undefined, - ], - null, - ] - } - > - <Text - style={ - [ - { - "color": "#007aff", - "fontSize": 17, - "fontWeight": "500", - "textAlign": "center", - }, - null, - [ - { - "fontFamily": "EuclidCircularB-Bold", - "fontSize": 14, - "fontWeight": "600", - "textAlign": "center", - }, - { - "color": "#ffffff", - }, - undefined, - ], - null, - ] - } - > - Continue with Transak (Staging) - </Text> - </TouchableOpacity> - </View> - </View> - </View> + Continue with MoonPay (Staging) + </Text> + </TouchableOpacity> </View> </View> - </TouchableOpacity> + </View> </View> </View> - </View> + </TouchableOpacity> </View> - </RCTScrollView> + </View> </View> - </View> - </RCTSafeAreaView> + </RCTScrollView> + </View> + <View + style={ + { + "backgroundColor": "#ffffff", + "flexDirection": "column", + "paddingHorizontal": 8, + "paddingVertical": 4, + } + } + testID="bottomsheetfooter" + > + <TouchableOpacity + accessibilityRole="button" + accessible={true} + activeOpacity={1} + onPress={[Function]} + onPressIn={[Function]} + onPressOut={[Function]} + style={ + { + "alignItems": "center", + "alignSelf": "stretch", + "backgroundColor": "transparent", + "borderRadius": 20, + "flexDirection": "row", + "height": 40, + "justifyContent": "center", + "paddingHorizontal": 16, + } + } + testID="bottomsheetfooter-button" + > + <Text + accessibilityRole="text" + style={ + { + "color": "#0376c9", + "fontFamily": "EuclidCircularB-Medium", + "fontSize": 14, + "fontWeight": "500", + "letterSpacing": 0, + "lineHeight": 22, + } + } + > + Explore more options + </Text> + </TouchableOpacity> + </View> + <Modal + animationType="none" + deviceHeight={null} + deviceWidth={null} + hardwareAccelerated={false} + hideModalContentWhileAnimating={false} + onBackdropPress={[Function]} + onModalHide={[Function]} + onModalWillHide={[Function]} + onModalWillShow={[Function]} + onRequestClose={[Function]} + panResponderThreshold={4} + scrollHorizontal={false} + scrollOffset={0} + scrollOffsetMax={0} + scrollTo={null} + statusBarTranslucent={false} + supportedOrientations={ + [ + "portrait", + "landscape", + ] + } + swipeDirection="down" + swipeThreshold={100} + transparent={true} + visible={false} + /> </View> </View> </View> @@ -5201,7 +5139,7 @@ exports[`Quotes renders correctly after animation without quotes 1`] = ` "borderTopLeftRadius": 8, "borderTopRightRadius": 8, "borderWidth": 1, - "maxHeight": 1314, + "maxHeight": 1334, "overflow": "hidden", "paddingBottom": 0, "shadowColor": "#0000001A", @@ -5943,7 +5881,7 @@ exports[`Quotes renders correctly when fetching quotes errors 1`] = ` "borderTopLeftRadius": 8, "borderTopRightRadius": 8, "borderWidth": 1, - "maxHeight": 1314, + "maxHeight": 1334, "overflow": "hidden", "paddingBottom": 0, "shadowColor": "#0000001A", @@ -6685,7 +6623,7 @@ exports[`Quotes renders correctly with sdkError 1`] = ` "borderTopLeftRadius": 8, "borderTopRightRadius": 8, "borderWidth": 1, - "maxHeight": 1314, + "maxHeight": 1334, "overflow": "hidden", "paddingBottom": 0, "shadowColor": "#0000001A", @@ -7427,7 +7365,7 @@ exports[`Quotes renders quotes expired screen 1`] = ` "borderTopLeftRadius": 8, "borderTopRightRadius": 8, "borderWidth": 1, - "maxHeight": 1314, + "maxHeight": 1334, "overflow": "hidden", "paddingBottom": 0, "shadowColor": "#0000001A", diff --git a/app/components/UI/Ramp/components/OrderDetails.tsx b/app/components/UI/Ramp/components/OrderDetails.tsx index 127b3e8ac517..ff880ac44beb 100644 --- a/app/components/UI/Ramp/components/OrderDetails.tsx +++ b/app/components/UI/Ramp/components/OrderDetails.tsx @@ -27,10 +27,7 @@ import { PROVIDER_LINKS } from '../types'; import Account from './Account'; import { FIAT_ORDER_STATES } from '../../../../constants/on-ramp'; import { getOrderAmount } from '../utils'; -import { - selectNetworkConfigurations, - selectProviderConfig, -} from '../../../../selectors/networkController'; +import { selectEvmNetworkConfigurationsByChainId } from '../../../../selectors/networkController'; import ListItem from '../../../../component-library/components/List/ListItem'; import ListItemColumn, { WidthType, @@ -245,9 +242,10 @@ const OrderDetails: React.FC<Props> = ({ order }: Props) => { } = order; const { colors } = useTheme(); const trackEvent = useAnalytics(); - const providerConfig = useSelector(selectProviderConfig); - const networkConfigurations = useSelector(selectNetworkConfigurations); - const explorer = useBlockExplorer(providerConfig, networkConfigurations); + const networkConfigurations = useSelector( + selectEvmNetworkConfigurationsByChainId, + ); + const explorer = useBlockExplorer(networkConfigurations); const styles = createStyles(colors); const date = createdAt && toDateFormat(createdAt); const renderAmount = getOrderAmount(order); diff --git a/app/components/UI/Ramp/components/Quote/Quote.styles.ts b/app/components/UI/Ramp/components/Quote/Quote.styles.ts index f134a67a2fd7..affdf3b98ae9 100644 --- a/app/components/UI/Ramp/components/Quote/Quote.styles.ts +++ b/app/components/UI/Ramp/components/Quote/Quote.styles.ts @@ -5,6 +5,12 @@ const styleSheet = (params: { theme: Theme }) => { const { theme } = params; const { colors } = theme; return StyleSheet.create({ + tags: { + display: 'flex', + flexDirection: 'row', + gap: 8, + marginBottom: 8, + }, fee: { marginLeft: 8, }, diff --git a/app/components/UI/Ramp/components/Quote/Quote.test.tsx b/app/components/UI/Ramp/components/Quote/Quote.test.tsx new file mode 100644 index 000000000000..018e177f1c1b --- /dev/null +++ b/app/components/UI/Ramp/components/Quote/Quote.test.tsx @@ -0,0 +1,207 @@ +import React from 'react'; +import { fireEvent } from '@testing-library/react-native'; +import Quote from './Quote'; +import { + CryptoCurrency, + FiatCurrency, + Provider, + QuoteResponse, + SellQuoteResponse, +} from '@consensys/on-ramp-sdk'; +import { RampType } from '../../types'; +import { QuoteTags } from '@consensys/on-ramp-sdk/dist/API'; +import renderWithProvider from '../../../../../util/test/renderWithProvider'; +import { selectIpfsGateway } from '../../../../../selectors/preferencesController'; +import { backgroundState } from '../../../../../util/test/initial-root-state'; +// Mock the selectIpfsGateway selector +jest.mock('../../../../../selectors/preferencesController', () => ({ + ...jest.requireActual('../../../../../selectors/preferencesController'), + selectIpfsGateway: jest.fn(), +})); + +// eslint-disable-next-line @typescript-eslint/ban-ts-comment +// @ts-ignore +(selectIpfsGateway as unknown as jest.Mock).mockReturnValue( + 'https://mock-ipfs-gateway.com', +); + +const mockQuote: QuoteResponse = { + networkFee: 1, + providerFee: 1, + amountIn: 100, + amountOut: 0.005, + fiat: { + symbol: 'USD', + denomSymbol: '$', + decimals: 2, + } as FiatCurrency, + provider: { + name: 'Mock Provider', + logos: { light: 'logo-url', dark: 'logo-url-dark', width: 50, height: 50 }, + } as Provider, + crypto: { symbol: 'ETH', decimals: 18 } as CryptoCurrency, + tags: { isBestRate: true, isMostReliable: true } as QuoteTags, + amountOutInFiat: 98, + isNativeApplePay: false, + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore + buy: () => undefined, +}; + +const mockSellQuote: SellQuoteResponse = { + ...mockQuote, + provider: { + ...mockQuote.provider, + name: 'Mock Sell Provider', + }, + amountIn: 0.005, + amountOut: 100, + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore + sell: () => undefined, +}; + +const defaultState = { + engine: { + backgroundState, + }, +}; + +describe('Quote Component', () => { + it('renders correctly with buy quote', () => { + const { getByText } = renderWithProvider( + <Quote quote={mockQuote} showInfo={jest.fn()} rampType={RampType.BUY} />, + { state: defaultState }, + ); + + expect(getByText('Continue with Mock Provider')).toBeTruthy(); + expect(getByText(/0\.005\s*ETH/)).toBeTruthy(); + expect(getByText(/≈\s*\$\s*98\s*USD/)).toBeTruthy(); + }); + + it('renders correctly with sell quote', () => { + const { getByText } = renderWithProvider( + <Quote + quote={mockSellQuote} + showInfo={jest.fn()} + rampType={RampType.SELL} + />, + { state: defaultState }, + ); + + expect(getByText('Continue with Mock Sell Provider')).toBeTruthy(); + expect(getByText(/0\.005\s*ETH/)).toBeTruthy(); + expect(getByText(/≈\s*\$\s*100\s*USD/)).toBeTruthy(); + }); + + it('calls onPress when not highlighted and pressed', () => { + const onPressMock = jest.fn(); + const { getByLabelText } = renderWithProvider( + <Quote + quote={mockQuote} + onPress={onPressMock} + showInfo={jest.fn()} + rampType={RampType.BUY} + />, + { state: defaultState }, + ); + + fireEvent.press(getByLabelText('Mock Provider')); + expect(onPressMock).toHaveBeenCalled(); + }); + + it('shows loading indicator when isLoading is true', () => { + const { getByTestId } = renderWithProvider( + <Quote + quote={mockQuote} + isLoading + showInfo={jest.fn()} + rampType={RampType.BUY} + />, + { state: defaultState }, + ); + + expect(getByTestId('buy-button-loading')).toBeTruthy(); + }); + + it('displays previously used provider tag', () => { + const { getByText } = renderWithProvider( + <Quote + quote={mockQuote} + previouslyUsedProvider + showInfo={jest.fn()} + rampType={RampType.BUY} + />, + { state: defaultState }, + ); + + expect(getByText('Previously used')).toBeTruthy(); + }); + + it('displays best rate tag', () => { + const { getByText } = renderWithProvider( + <Quote quote={mockQuote} showInfo={jest.fn()} rampType={RampType.BUY} />, + { state: defaultState }, + ); + + expect(getByText('Best rate')).toBeTruthy(); + }); + + it('calls onPressCTA when CTA button is pressed', () => { + const onPressCTAMock = jest.fn(); + const { getByText } = renderWithProvider( + <Quote + quote={mockQuote} + onPressCTA={onPressCTAMock} + showInfo={jest.fn()} + rampType={RampType.BUY} + />, + { state: defaultState }, + ); + + fireEvent.press(getByText('Continue with Mock Provider')); + expect(onPressCTAMock).toHaveBeenCalled(); + }); + + it('displays most reliable tag', () => { + const mockQuoteWithReliableTag = { + ...mockQuote, + tags: { isMostReliable: true } as QuoteTags, + }; + const { getByText } = renderWithProvider( + <Quote + quote={mockQuoteWithReliableTag} + showInfo={jest.fn()} + rampType={RampType.BUY} + />, + { state: defaultState }, + ); + + expect(getByText('Most reliable')).toBeTruthy(); + }); + + it('displays provider logo correctly', () => { + const { getByLabelText } = renderWithProvider( + <Quote quote={mockQuote} showInfo={jest.fn()} rampType={RampType.BUY} />, + { state: defaultState }, + ); + + expect(getByLabelText('Mock Provider logo')).toBeTruthy(); + }); + + it('calls showInfo when info icon is pressed and highlighted', () => { + const showInfoMock = jest.fn(); + const { getByLabelText } = renderWithProvider( + <Quote + quote={mockQuote} + showInfo={showInfoMock} + rampType={RampType.BUY} + highlighted + />, + { state: defaultState }, + ); + + fireEvent.press(getByLabelText('Mock Provider logo')); + expect(showInfoMock).toHaveBeenCalled(); + }); +}); diff --git a/app/components/UI/Ramp/components/Quote/Quote.tsx b/app/components/UI/Ramp/components/Quote/Quote.tsx index bc12af3c0c58..ba9e6859d919 100644 --- a/app/components/UI/Ramp/components/Quote/Quote.tsx +++ b/app/components/UI/Ramp/components/Quote/Quote.tsx @@ -27,7 +27,9 @@ import { import { strings } from '../../../../../../locales/i18n'; import ApplePayButton from '../../containers/ApplePayButton'; import RemoteImage from '../../../../Base/RemoteImage'; -import TagColored from '../../../../../component-library/components-temp/TagColored'; +import TagColored, { + TagColor, +} from '../../../../../component-library/components-temp/TagColored'; import styleSheet from './Quote.styles'; import { useStyles } from '../../../../../component-library/hooks'; import { isBuyQuote } from '../../utils'; @@ -78,6 +80,7 @@ const Quote: React.FC<Props> = ({ fiat, provider, crypto, + tags, } = quote; const amountOutInFiat = isBuyQuote(quote, rampType) ? quote.amountOutInFiat @@ -88,6 +91,9 @@ const Quote: React.FC<Props> = ({ const fiatCode = fiat?.symbol ?? ''; const fiatSymbol = fiat?.denomSymbol ?? ''; + const shouldShowTags = + previouslyUsedProvider || tags?.isBestRate || tags?.isMostReliable; + const expandedHeight = useSharedValue(0); const handleOnLayout = (event: LayoutChangeEvent) => { const { nativeEvent } = event; @@ -126,12 +132,27 @@ const Quote: React.FC<Props> = ({ topAccessoryGap={8} topAccessory={ <> - {previouslyUsedProvider ? ( - <TagColored> - {strings('fiat_on_ramp_aggregator.previously_used')} - </TagColored> - ) : null} + {shouldShowTags && ( + <View style={styles.tags}> + {previouslyUsedProvider ? ( + <TagColored> + {strings('fiat_on_ramp_aggregator.previously_used')} + </TagColored> + ) : null} + + {tags?.isMostReliable ? ( + <TagColored color={TagColor.Info}> + {strings('fiat_on_ramp_aggregator.most_reliable')} + </TagColored> + ) : null} + {tags?.isBestRate ? ( + <TagColored color={TagColor.Success}> + {strings('fiat_on_ramp_aggregator.best_rate')} + </TagColored> + ) : null} + </View> + )} <TouchableOpacity onPress={highlighted ? showInfo : undefined} disabled={!highlighted} @@ -182,6 +203,7 @@ const Quote: React.FC<Props> = ({ > {isLoading ? ( <ActivityIndicator + testID="buy-button-loading" size={'small'} color={colors.primary.inverse} /> @@ -210,7 +232,11 @@ const Quote: React.FC<Props> = ({ {crypto?.symbol} </> ) : ( - `≈ ${renderFiat(amountOut, fiatCode, fiat?.decimals)}` + `≈ ${fiatSymbol} ${renderFiat( + amountOut, + fiatCode, + fiat?.decimals, + )}` )} </Text> </ListItemColumn> diff --git a/app/components/UI/Ramp/hooks/useBalance.ts b/app/components/UI/Ramp/hooks/useBalance.ts index 64e5194a9f6d..2babd70c8f0f 100644 --- a/app/components/UI/Ramp/hooks/useBalance.ts +++ b/app/components/UI/Ramp/hooks/useBalance.ts @@ -9,7 +9,7 @@ import { import { selectSelectedInternalAccountFormattedAddress } from '../../../../selectors/accountsController'; import { selectContractBalances } from '../../../../selectors/tokenBalancesController'; import { selectContractExchangeRates } from '../../../../selectors/tokenRatesController'; -import { selectChainId } from '../../../../selectors/networkController'; +import { selectEvmChainId } from '../../../../selectors/networkController'; import { safeToChecksumAddress } from '../../../../util/address'; import { balanceToFiat, @@ -32,7 +32,7 @@ interface Asset { export default function useBalance(asset?: Asset) { const accountsByChainId = useSelector(selectAccountsByChainId); - const chainId = useSelector(selectChainId); + const chainId = useSelector(selectEvmChainId); const selectedAddress = useSelector( selectSelectedInternalAccountFormattedAddress, ); @@ -53,6 +53,11 @@ export default function useBalance(asset?: Asset) { let balance, balanceFiat, balanceBN; if (assetAddress === NATIVE_ADDRESS) { + // Chain id should exist in accountsByChainId in AccountTrackerController at this point in time + if (!accountsByChainId[toHexadecimal(chainId)]) { + return defaultReturn; + } + balance = renderFromWei( //@ts-expect-error - TODO: Ramps team accountsByChainId[toHexadecimal(chainId)][selectedAddress]?.balance, @@ -62,6 +67,7 @@ export default function useBalance(asset?: Asset) { //@ts-expect-error - TODO: Ramps team accountsByChainId[toHexadecimal(chainId)][selectedAddress]?.balance, ); + balanceFiat = weiToFiat(balanceBN, conversionRate, currentCurrency); } else { const exchangeRate = tokenExchangeRates?.[assetAddress]?.price; diff --git a/app/components/UI/Ramp/hooks/useHandleSuccessfulOrder.ts b/app/components/UI/Ramp/hooks/useHandleSuccessfulOrder.ts index 4f360be4adb6..50eebbe24c98 100644 --- a/app/components/UI/Ramp/hooks/useHandleSuccessfulOrder.ts +++ b/app/components/UI/Ramp/hooks/useHandleSuccessfulOrder.ts @@ -17,7 +17,7 @@ import useAnalytics from './useAnalytics'; import { hexToBN, toHexadecimal } from '../../../../util/number'; import { selectAccountsByChainId } from '../../../../selectors/accountTrackerController'; import Routes from '../../../../constants/navigation/Routes'; -import { selectChainId } from '../../../../selectors/networkController'; +import { selectEvmChainId } from '../../../../selectors/networkController'; import { Token } from '@metamask/assets-controllers'; function useHandleSuccessfulOrder() { @@ -27,7 +27,7 @@ function useHandleSuccessfulOrder() { const dispatchThunk = useThunkDispatch(); const trackEvent = useAnalytics(); const accountsByChainId = useSelector(selectAccountsByChainId); - const chainIdFromProvider = useSelector(selectChainId); + const chainIdFromProvider = useSelector(selectEvmChainId); const addTokenToTokensController = useCallback( async (token: CryptoCurrency) => { diff --git a/app/components/UI/Ramp/hooks/useQuotes.test.ts b/app/components/UI/Ramp/hooks/useQuotes.test.ts index 6f7978e9e79e..033b8d9c0589 100644 --- a/app/components/UI/Ramp/hooks/useQuotes.test.ts +++ b/app/components/UI/Ramp/hooks/useQuotes.test.ts @@ -2,7 +2,6 @@ import { RampSDK } from '../sdk'; import useSDKMethod from './useSDKMethod'; import { renderHookWithProvider } from '../../../../util/test/renderWithProvider'; import useQuotes from './useQuotes'; -import { QuoteSortBy } from '@consensys/on-ramp-sdk/dist/IOnRampSdk'; type DeepPartial<BaseType> = { [key in keyof BaseType]?: DeepPartial<BaseType[key]>; @@ -186,41 +185,4 @@ describe('useQuotes', () => { rerender(() => useQuotes(200)); expect(result.current.quotes).toEqual([{ id: 'quote-2' }]); }); - - it('sorts quotes by price', () => { - const mockQuery = jest.fn(); - (useSDKMethod as jest.Mock).mockReturnValue([ - { - data: { - quotes: [ - { id: 'quote-2', provider: { id: 'provider-id-2' } }, - { id: 'quote-4', provider: { id: 'provider-id-4' } }, - { id: 'quote-1', provider: { id: 'provider-id-1' } }, - { id: 'quote-3', provider: { id: 'provider-id-3' } }, - ], - sorted: [ - { - sortBy: QuoteSortBy.price, - ids: [ - 'provider-id-1', - 'provider-id-2', - 'provider-id-3', - 'provider-id-4', - ], - }, - ], - }, - error: null, - isFetching: false, - }, - mockQuery, - ]); - const { result } = renderHookWithProvider(() => useQuotes(100)); - expect(result.current.quotes).toEqual([ - { id: 'quote-1', provider: { id: 'provider-id-1' } }, - { id: 'quote-2', provider: { id: 'provider-id-2' } }, - { id: 'quote-3', provider: { id: 'provider-id-3' } }, - { id: 'quote-4', provider: { id: 'provider-id-4' } }, - ]); - }); }); diff --git a/app/components/UI/Ramp/hooks/useQuotes.ts b/app/components/UI/Ramp/hooks/useQuotes.ts index 43e7a9e94688..6a006499b59c 100644 --- a/app/components/UI/Ramp/hooks/useQuotes.ts +++ b/app/components/UI/Ramp/hooks/useQuotes.ts @@ -1,8 +1,5 @@ import { useRampSDK } from '../sdk'; import useSDKMethod from './useSDKMethod'; -import { useMemo } from 'react'; -import { QuoteSortBy } from '@consensys/on-ramp-sdk/dist/IOnRampSdk'; -import { sortQuotes } from '../utils'; function useQuotes(amount: number | string) { const { @@ -23,13 +20,8 @@ function useQuotes(amount: number | string) { selectedAddress, ); - const quotes = useMemo( - () => sortQuotes(data?.quotes, data?.sorted, QuoteSortBy.price), - [data], - ); - return { - quotes, + quotes: data?.quotes, sorted: data?.sorted, isFetching, error, diff --git a/app/components/UI/Ramp/hooks/useSortedQuotes.test.ts b/app/components/UI/Ramp/hooks/useSortedQuotes.test.ts new file mode 100644 index 000000000000..b9485bff25b7 --- /dev/null +++ b/app/components/UI/Ramp/hooks/useSortedQuotes.test.ts @@ -0,0 +1,197 @@ +import useQuotes from './useQuotes'; +import { renderHookWithProvider } from '../../../../util/test/renderWithProvider'; +import { QuoteSortBy } from '@consensys/on-ramp-sdk/dist/IOnRampSdk'; +import useSortedQuotes from './useSortedQuotes'; +import { useSelector } from 'react-redux'; + +jest.mock('./useQuotes'); +jest.mock('react-redux', () => ({ + ...jest.requireActual('react-redux'), + useSelector: jest.fn().mockReturnValue(['provider-id-1']), +})); + +describe('useSortedQuotes', () => { + beforeEach(() => { + jest.clearAllMocks(); + }); + + it('returns the original quotes', () => { + (useQuotes as jest.Mock).mockReturnValue({ + quotes: [ + { id: 'quote-2', provider: { id: 'provider-id-2' } }, + { id: 'quote-4', provider: { id: 'provider-id-4' } }, + { id: 'quote-1', provider: { id: 'provider-id-1' } }, + { id: 'quote-3', provider: { id: 'provider-id-3' } }, + ], + sorted: [ + { + sortBy: QuoteSortBy.price, + ids: [ + 'provider-id-1', + 'provider-id-2', + 'provider-id-3', + 'provider-id-4', + ], + }, + ], + error: null, + isFetching: false, + }); + const { result } = renderHookWithProvider(() => useSortedQuotes(100)); + expect(result.current.quotes).toEqual([ + { id: 'quote-2', provider: { id: 'provider-id-2' } }, + { id: 'quote-4', provider: { id: 'provider-id-4' } }, + { id: 'quote-1', provider: { id: 'provider-id-1' } }, + { id: 'quote-3', provider: { id: 'provider-id-3' } }, + ]); + }); + + it('sorts quotes by reliability and filters out errors', () => { + (useQuotes as jest.Mock).mockReturnValue({ + quotes: [ + { id: 'quote-2', provider: { id: 'provider-id-2' } }, + { id: 'quote-4', provider: { id: 'provider-id-4' } }, + { id: 'quote-1', provider: { id: 'provider-id-1' }, error: true }, + { id: 'quote-3', provider: { id: 'provider-id-3' } }, + ], + sorted: [ + { + sortBy: QuoteSortBy.reliability, + ids: [ + 'provider-id-1', + 'provider-id-2', + 'provider-id-3', + 'provider-id-4', + ], + }, + ], + error: null, + isFetching: false, + }); + const { result } = renderHookWithProvider(() => useSortedQuotes(100)); + expect(result.current.quotesByReliabilityWithoutError).toEqual([ + { id: 'quote-2', provider: { id: 'provider-id-2' } }, + { id: 'quote-3', provider: { id: 'provider-id-3' } }, + { id: 'quote-4', provider: { id: 'provider-id-4' } }, + ]); + }); + + it('filters out quotes with errors', () => { + (useQuotes as jest.Mock).mockReturnValue({ + quotes: [ + { id: 'quote-1', provider: { id: 'provider-id-1' }, error: null }, + { id: 'quote-2', provider: { id: 'provider-id-2' }, error: {} }, + ], + sorted: [], + error: null, + isFetching: false, + }); + const { result } = renderHookWithProvider(() => useSortedQuotes(100)); + expect(result.current.quotesWithoutError).toEqual([ + { id: 'quote-1', provider: { id: 'provider-id-1' }, error: null }, + ]); + expect(result.current.quotesWithError).toEqual([ + { id: 'quote-2', provider: { id: 'provider-id-2' }, error: {} }, + ]); + }); + + it('returns recommended quote based on previously used provider', () => { + (useQuotes as jest.Mock).mockReturnValue({ + quotes: [ + { id: 'quote-1', provider: { id: 'provider-id-1' }, error: null }, + { id: 'quote-2', provider: { id: 'provider-id-2' }, error: null }, + ], + sorted: [], + error: null, + isFetching: false, + }); + const { result } = renderHookWithProvider(() => useSortedQuotes(100)); + expect(result.current.recommendedQuote).toEqual({ + id: 'quote-1', + provider: { id: 'provider-id-1' }, + error: null, + }); + }); + + it('returns recommended quote based on reliability if no previously used provider', () => { + (useSelector as jest.Mock).mockReturnValue([]); + (useQuotes as jest.Mock).mockReturnValue({ + quotes: [ + { id: 'quote-1', provider: { id: 'provider-id-1' }, error: null }, + { id: 'quote-2', provider: { id: 'provider-id-2' }, error: null }, + ], + sorted: [ + { + sortBy: QuoteSortBy.reliability, + ids: ['provider-id-2', 'provider-id-1'], + }, + ], + error: null, + isFetching: false, + }); + const { result } = renderHookWithProvider(() => useSortedQuotes(100)); + expect(result.current.recommendedQuote).toEqual({ + id: 'quote-2', + provider: { id: 'provider-id-2' }, + error: null, + }); + }); + + it('returns recommended quote based on price if no previously used provider and no reliability sorted quotes', () => { + (useSelector as jest.Mock).mockReturnValue([]); + (useQuotes as jest.Mock).mockReturnValue({ + quotes: [ + { id: 'quote-1', provider: { id: 'provider-id-1' }, error: null }, + { id: 'quote-2', provider: { id: 'provider-id-2' }, error: null }, + ], + sorted: [ + { + sortBy: QuoteSortBy.price, + ids: ['provider-id-1', 'provider-id-2'], + }, + ], + error: null, + isFetching: false, + }); + const { result } = renderHookWithProvider(() => useSortedQuotes(100)); + expect(result.current.recommendedQuote).toEqual({ + id: 'quote-1', + provider: { id: 'provider-id-1' }, + error: null, + }); + }); + + it('handles fetching state', () => { + (useQuotes as jest.Mock).mockReturnValue({ + quotes: [], + sorted: [], + error: null, + isFetching: true, + }); + const { result } = renderHookWithProvider(() => useSortedQuotes(100)); + expect(result.current.isFetching).toBe(true); + }); + + it('returns recommended quote of undefined if no quotes are available', () => { + (useQuotes as jest.Mock).mockReturnValue({ + quotes: [], + sorted: [], + error: null, + isFetching: false, + }); + const { result } = renderHookWithProvider(() => useSortedQuotes(100)); + expect(result.current.recommendedQuote).toBeUndefined(); + }); + + it('handles error state', () => { + const error = new Error('Test error'); + (useQuotes as jest.Mock).mockReturnValue({ + quotes: [], + sorted: [], + error, + isFetching: false, + }); + const { result } = renderHookWithProvider(() => useSortedQuotes(100)); + expect(result.current.error).toBe(error); + }); +}); diff --git a/app/components/UI/Ramp/hooks/useSortedQuotes.ts b/app/components/UI/Ramp/hooks/useSortedQuotes.ts new file mode 100644 index 000000000000..e144b741f20c --- /dev/null +++ b/app/components/UI/Ramp/hooks/useSortedQuotes.ts @@ -0,0 +1,84 @@ +import useQuotes from './useQuotes'; +import { useMemo } from 'react'; +import { sortQuotes } from '../utils'; +import { QuoteSortBy } from '@consensys/on-ramp-sdk/dist/IOnRampSdk'; +import { useSelector } from 'react-redux'; +import { getOrdersProviders } from '../../../../reducers/fiatOrders'; +import { + QuoteError, + QuoteResponse, + SellQuoteResponse, +} from '@consensys/on-ramp-sdk'; + +function useSortedQuotes(amount: number | string) { + const ordersProviders = useSelector(getOrdersProviders); + const { quotes, sorted, isFetching, error, query } = useQuotes(amount); + + const quotesWithoutError: (QuoteResponse | SellQuoteResponse)[] = useMemo( + () => + quotes?.filter( + (quote): quote is QuoteResponse | SellQuoteResponse => !quote.error, + ) || [], + [quotes], + ); + + const quotesWithError = useMemo( + () => + quotes?.filter((quote): quote is QuoteError => Boolean(quote.error)) || + [], + [quotes], + ); + + const quotesByPriceWithoutError = useMemo( + () => sortQuotes(quotesWithoutError, sorted, QuoteSortBy.price) || [], + [quotesWithoutError, sorted], + ); + + const quotesByReliabilityWithoutError = useMemo( + () => sortQuotes(quotesWithoutError, sorted, QuoteSortBy.reliability) || [], + [quotesWithoutError, sorted], + ); + + const recommendedQuote = useMemo(() => { + if (quotes) { + const previouslyUsedQuote = quotesWithoutError.find(({ provider }) => + ordersProviders.includes(provider.id), + ); + + if (previouslyUsedQuote) { + return previouslyUsedQuote; + } + + if (quotesByReliabilityWithoutError?.length > 0) { + return quotesByReliabilityWithoutError[0]; + } + + if (quotesByPriceWithoutError?.length > 0) { + return quotesByPriceWithoutError[0]; + } + } + + return undefined; + }, [ + ordersProviders, + quotes, + quotesByPriceWithoutError, + quotesByReliabilityWithoutError, + quotesWithoutError, + ]); + + return { + quotes, + quotesWithoutError, + quotesWithError, + quotesByPriceWithoutError, + quotesByReliabilityWithoutError, + recommendedQuote, + sorted, + isFetching, + error, + query, + }; +} + +export default useSortedQuotes; diff --git a/app/components/UI/Ramp/types/analytics.ts b/app/components/UI/Ramp/types/analytics.ts index f2f5ba8cdf4a..8b1edcf747b3 100644 --- a/app/components/UI/Ramp/types/analytics.ts +++ b/app/components/UI/Ramp/types/analytics.ts @@ -103,6 +103,8 @@ interface OnRampQuotesReceived extends RampQuotesReceived { provider_onramp_list: string[]; provider_onramp_first: string; provider_onramp_last?: string; + provider_onramp_most_reliable?: string; + provider_onramp_best_price?: string; } interface OffRampQuotesReceived extends RampQuotesReceived { average_fiat_out: number; @@ -110,6 +112,8 @@ interface OffRampQuotesReceived extends RampQuotesReceived { provider_offramp_list: string[]; provider_offramp_first: string; provider_offramp_last?: string; + provider_offramp_most_reliable?: string; + provider_offramp_best_price?: string; } interface RampProviderSelected { @@ -124,6 +128,9 @@ interface RampProviderSelected { processing_fee: number; exchange_rate: number; amount: number | string; + is_most_reliable: boolean; + is_best_rate: boolean; + is_recommended: boolean; } interface OnRampProviderSelected extends RampProviderSelected { diff --git a/app/components/UI/Ramp/utils/index.ts b/app/components/UI/Ramp/utils/index.ts index 9f126c69acb2..40e2e2550f03 100644 --- a/app/components/UI/Ramp/utils/index.ts +++ b/app/components/UI/Ramp/utils/index.ts @@ -217,12 +217,13 @@ export function isSellOrder(order: Order): order is SellOrder { export function isSellFiatOrder(order: FiatOrder): order is FiatOrder { return order.orderType === OrderOrderTypeEnum.Sell; } - -export function sortQuotes( - quotes?: (QuoteResponse | QuoteError | SellQuoteResponse)[] | undefined, +export function sortQuotes< + T extends QuoteResponse | QuoteError | SellQuoteResponse, +>( + quotes?: T[] | undefined, sortingArray?: QuoteSortMetadata[], quoteSortBy?: QuoteSortBy, -): (QuoteResponse | QuoteError | SellQuoteResponse)[] | undefined { +): T[] | undefined { if (!quotes || !sortingArray) { return quotes; } diff --git a/app/components/UI/SelectComponent/index.js b/app/components/UI/SelectComponent/index.js index ec99a1bc705c..0bfd358456cf 100644 --- a/app/components/UI/SelectComponent/index.js +++ b/app/components/UI/SelectComponent/index.js @@ -112,6 +112,7 @@ export default class SelectComponent extends PureComponent { * Callback for value change */ onValueChange: PropTypes.func, + testID: PropTypes.string, }; state = { @@ -172,7 +173,8 @@ export default class SelectComponent extends PureComponent { return ( <View style={baseStyles.flexGrow}> - <TouchableOpacity onPress={this.showPicker}> + <TouchableOpacity onPress={this.showPicker} + testID={this.props.testID}> <View style={styles.dropdown}> <Text style={styles.selectedOption} numberOfLines={1}> {this.getSelectedValue()} diff --git a/app/components/UI/SelectOptionSheet/__snapshots__/OptionSheet.test.tsx.snap b/app/components/UI/SelectOptionSheet/__snapshots__/OptionSheet.test.tsx.snap index ea3ed2f39d4e..fb4339117d01 100644 --- a/app/components/UI/SelectOptionSheet/__snapshots__/OptionSheet.test.tsx.snap +++ b/app/components/UI/SelectOptionSheet/__snapshots__/OptionSheet.test.tsx.snap @@ -375,7 +375,7 @@ exports[`OptionSheet render matches snapshot 1`] = ` "borderTopLeftRadius": 8, "borderTopRightRadius": 8, "borderWidth": 1, - "maxHeight": 1314, + "maxHeight": 1334, "overflow": "hidden", "paddingBottom": 0, "shadowColor": "#0000001A", diff --git a/app/components/UI/SimulationDetails/AssetPill/AssetPill.test.tsx b/app/components/UI/SimulationDetails/AssetPill/AssetPill.test.tsx index 291d2087c783..f597708fd7a2 100644 --- a/app/components/UI/SimulationDetails/AssetPill/AssetPill.test.tsx +++ b/app/components/UI/SimulationDetails/AssetPill/AssetPill.test.tsx @@ -4,6 +4,8 @@ import AssetPill from './AssetPill'; import { AssetType, AssetIdentifier } from '../types'; import renderWithProvider from '../../../../util/test/renderWithProvider'; import { mockNetworkState } from '../../../../util/test/network'; +import { RootState } from '../../../../reducers'; +import { SolScope } from '@metamask/keyring-api'; jest.mock( '../../../../component-library/components/Avatars/Avatar/variants/AvatarNetwork', @@ -24,9 +26,15 @@ const STATE_MOCK = { chainId: CHAIN_ID_MOCK, }), }, + MultichainNetworkController: { + isEvmSelected: true, + selectedMultichainNetworkChainId: SolScope.Mainnet, + + multichainNetworkConfigurationsByChainId: {}, + }, }, }, -}; +} as unknown as RootState; describe('AssetPill', () => { it('renders correctly for native assets', () => { diff --git a/app/components/UI/SimulationDetails/AssetPill/AssetPill.tsx b/app/components/UI/SimulationDetails/AssetPill/AssetPill.tsx index 13e829b37956..4fde636c0d6c 100644 --- a/app/components/UI/SimulationDetails/AssetPill/AssetPill.tsx +++ b/app/components/UI/SimulationDetails/AssetPill/AssetPill.tsx @@ -15,7 +15,7 @@ import Name from '../../Name/Name'; import { NameType } from '../../Name/Name.types'; import { AssetIdentifier, AssetType } from '../types'; import styleSheet from './AssetPill.styles'; -import { selectNetworkConfigurations } from '../../../../selectors/networkController'; +import { selectEvmNetworkConfigurationsByChainId } from '../../../../selectors/networkController'; interface AssetPillProperties extends ViewProps { asset: AssetIdentifier; @@ -37,7 +37,7 @@ const NativeAssetPill: React.FC<AssetPillProperties> = ({ asset }) => { const imageSource = getNetworkImage(asset.chainId); const networkConfigurationsByChainId = useSelector( - selectNetworkConfigurations, + selectEvmNetworkConfigurationsByChainId, ); const { nativeCurrency } = diff --git a/app/components/UI/Snaps/SnapUIAddress/SnapUIAddress.test.tsx b/app/components/UI/Snaps/SnapUIAddress/SnapUIAddress.test.tsx new file mode 100644 index 000000000000..7e66eee6f2c5 --- /dev/null +++ b/app/components/UI/Snaps/SnapUIAddress/SnapUIAddress.test.tsx @@ -0,0 +1,193 @@ +import React from 'react'; +import { SnapUIAddress } from './SnapUIAddress'; +import renderWithProvider from '../../../../util/test/renderWithProvider'; + +const baseMockState = { + state: { + engine: { + backgroundState: { + KeyringController: { + keyrings: [] + }, + AccountsController: { + internalAccounts: { + accounts: { + 'foo': { + address: '0xab16a96D359eC26a11e2C2b3d8f8B8942d5Bfcdb', + metadata: { + name: 'My Account', + } + } + } + } + }, + AddressBookController: { + addressBook: { + '0x1': { + '0xab16a96D359eC26a11e2C2b3d8f8B8942d5Bfcda': { + address: '0xab16a96D359eC26a11e2C2b3d8f8B8942d5Bfcda', + name: 'Test Contact', + } + } + } + } + } + }, + } +}; + +const mockStateWithoutBlockies = { + state: { + ...baseMockState.state, + settings: { + useBlockieIcon: false, + }, + }, +}; + +const mockStateWithBlockies = { + state: { + ...baseMockState.state, + settings: { + useBlockieIcon: true, + }, + }, +}; + +describe('SnapUIAddress', () => { + it('renders legacy Ethereum address', () => { + const { toJSON } = renderWithProvider( + <SnapUIAddress address="0xab16a96d359ec26a11e2c2b3d8f8b8942d5bfcdb" />, + mockStateWithoutBlockies, + ); + + expect(toJSON()).toMatchSnapshot(); + }); + + it('renders Ethereum address', () => { + const { toJSON } = renderWithProvider( + <SnapUIAddress address="eip155:1:0xab16a96D359eC26a11e2C2b3d8f8B8942d5Bfcdb" />, + mockStateWithoutBlockies, + ); + + expect(toJSON()).toMatchSnapshot(); + }); + + it('renders account name', () => { + const { getByText } = renderWithProvider( + <SnapUIAddress address="eip155:1:0xab16a96D359eC26a11e2C2b3d8f8B8942d5Bfcdb" displayName />, + baseMockState + ); + + expect(getByText('My Account')).toBeDefined(); + }); + + it('renders contact name', () => { + const { getByText } = renderWithProvider( + <SnapUIAddress address="eip155:1:0xab16a96D359eC26a11e2C2b3d8f8B8942d5Bfcda" displayName />, + baseMockState + ); + + expect(getByText('Test Contact')).toBeDefined(); + }); + + + it('renders Ethereum address with blockie', () => { + const { toJSON } = renderWithProvider( + <SnapUIAddress address="eip155:1:0xab16a96D359eC26a11e2C2b3d8f8B8942d5Bfcdb" />, + mockStateWithBlockies, + ); + + expect(toJSON()).toMatchSnapshot(); + }); + + it('renders Bitcoin address', () => { + const { toJSON } = renderWithProvider( + <SnapUIAddress address="bip122:000000000019d6689c085ae165831e93:128Lkh3S7CkDTBZ8W7BbpsN3YYizJMp8p6" />, + mockStateWithoutBlockies, + ); + + expect(toJSON()).toMatchSnapshot(); + }); + + it('renders Bitcoin address with blockie', () => { + const { toJSON } = renderWithProvider( + <SnapUIAddress address="bip122:000000000019d6689c085ae165831e93:128Lkh3S7CkDTBZ8W7BbpsN3YYizJMp8p6" />, + mockStateWithBlockies, + ); + + expect(toJSON()).toMatchSnapshot(); + }); + + it('renders Cosmos address', () => { + const { toJSON } = renderWithProvider( + <SnapUIAddress address="cosmos:cosmoshub-3:cosmos1t2uflqwqe0fsj0shcfkrvpukewcw40yjj6hdc0" />, + mockStateWithoutBlockies, + ); + + expect(toJSON()).toMatchSnapshot(); + }); + + it('renders Cosmos address with blockie', () => { + const { toJSON } = renderWithProvider( + <SnapUIAddress address="cosmos:cosmoshub-3:cosmos1t2uflqwqe0fsj0shcfkrvpukewcw40yjj6hdc0" />, + mockStateWithBlockies, + ); + + expect(toJSON()).toMatchSnapshot(); + }); + + it('renders Polkadot address', () => { + const { toJSON } = renderWithProvider( + <SnapUIAddress address="polkadot:b0a8d493285c2df73290dfb7e61f870f:5hmuyxw9xdgbpptgypokw4thfyoe3ryenebr381z9iaegmfy" />, + mockStateWithoutBlockies, + ); + + expect(toJSON()).toMatchSnapshot(); + }); + + it('renders Polkadot address with blockie', () => { + const { toJSON } = renderWithProvider( + <SnapUIAddress address="polkadot:b0a8d493285c2df73290dfb7e61f870f:5hmuyxw9xdgbpptgypokw4thfyoe3ryenebr381z9iaegmfy" />, + mockStateWithBlockies, + ); + + expect(toJSON()).toMatchSnapshot(); + }); + + it('renders Starknet address', () => { + const { toJSON } = renderWithProvider( + <SnapUIAddress address="starknet:SN_GOERLI:0x02dd1b492765c064eac4039e3841aa5f382773b598097a40073bd8b48170ab57" />, + mockStateWithoutBlockies, + ); + + expect(toJSON()).toMatchSnapshot(); + }); + + it('renders Starknet address with blockie', () => { + const { toJSON } = renderWithProvider( + <SnapUIAddress address="starknet:SN_GOERLI:0x02dd1b492765c064eac4039e3841aa5f382773b598097a40073bd8b48170ab57" />, + mockStateWithBlockies, + ); + + expect(toJSON()).toMatchSnapshot(); + }); + + it('renders Hedera address', () => { + const { toJSON } = renderWithProvider( + <SnapUIAddress address="hedera:mainnet:0.0.1234567890-zbhlt" />, + mockStateWithoutBlockies, + ); + + expect(toJSON()).toMatchSnapshot(); + }); + + it('renders Hedera address with blockie', () => { + const { toJSON } = renderWithProvider( + <SnapUIAddress address="hedera:mainnet:0.0.1234567890-zbhlt" />, + mockStateWithBlockies, + ); + + expect(toJSON()).toMatchSnapshot(); + }); +}); diff --git a/app/components/UI/Snaps/SnapUIAddress/SnapUIAddress.tsx b/app/components/UI/Snaps/SnapUIAddress/SnapUIAddress.tsx new file mode 100644 index 000000000000..da52e2ee86ac --- /dev/null +++ b/app/components/UI/Snaps/SnapUIAddress/SnapUIAddress.tsx @@ -0,0 +1,73 @@ +import React, { useMemo } from 'react'; +import { + CaipAccountId, + isHexString, + parseCaipAccountId, +} from '@metamask/utils'; +import { toChecksumHexAddress } from '@metamask/controller-utils'; +import { SnapUIAvatar } from '../SnapUIAvatar/SnapUIAvatar'; +import { shortenString } from '../../../../util/notifications/methods'; +import Text, { + TextVariant, +} from '../../../../component-library/components/Texts/Text'; +import { Box } from '../../Box/Box'; +import { AlignItems, FlexDirection } from '../../Box/box.types'; +import { useDisplayName } from './useDisplayName'; + +export interface SnapUIAddressProps { + // The address must be a CAIP-10 string. + address: string; + // This is not currently exposed to Snaps. + avatarSize?: 'xs' | 'sm' | 'md' | 'lg'; + truncate?: boolean; + displayName?: boolean; + avatar?: boolean; +} + +export const SnapUIAddress: React.FunctionComponent<SnapUIAddressProps> = ({ + address, + avatarSize = 'md', + truncate = true, + displayName = false, + avatar = true, +}) => { + const caipIdentifier = useMemo(() => { + if (isHexString(address)) { + // For legacy address inputs we assume them to be Ethereum addresses. + // NOTE: This means the chain ID is not gonna be reliable. + return `eip155:1:${address}`; + } + + return address; + }, [address]); + + const parsed = useMemo( + () => parseCaipAccountId(caipIdentifier as CaipAccountId), + [caipIdentifier], + ); + + // For EVM addresses, we make sure they are checksummed. + const transformedAddress = + parsed.chain.namespace === 'eip155' + ? toChecksumHexAddress(parsed.address) + : parsed.address; + + const formattedAddress = truncate + ? shortenString(transformedAddress) + : address; + + const name = useDisplayName(parsed); + + return ( + <Box + flexDirection={FlexDirection.Row} + alignItems={AlignItems.center} + gap={8} + > + {avatar && <SnapUIAvatar address={caipIdentifier} size={avatarSize} />} + <Text variant={TextVariant.BodyMD} color="inherit"> + {displayName && name ? name : formattedAddress} + </Text> + </Box> + ); +}; diff --git a/app/components/UI/Snaps/SnapUIAddress/__snapshots__/SnapUIAddress.test.tsx.snap b/app/components/UI/Snaps/SnapUIAddress/__snapshots__/SnapUIAddress.test.tsx.snap new file mode 100644 index 000000000000..1df64d384a80 --- /dev/null +++ b/app/components/UI/Snaps/SnapUIAddress/__snapshots__/SnapUIAddress.test.tsx.snap @@ -0,0 +1,1399 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`SnapUIAddress renders Bitcoin address 1`] = ` +<View + alignItems="center" + flexDirection="row" + gap={8} + style={ + [ + { + "alignItems": "center", + "flexDirection": "row", + "gap": 8, + }, + undefined, + ] + } +> + <View + style={ + [ + { + "overflow": "hidden", + }, + { + "backgroundColor": "#2452E1", + "borderRadius": 16, + "height": 32, + "width": 32, + }, + undefined, + ] + } + > + <RNSVGSvgView + bbHeight={32} + bbWidth={32} + focusable={false} + height={32} + style={ + [ + { + "backgroundColor": "transparent", + "borderWidth": 0, + }, + { + "flex": 0, + "height": 32, + "width": 32, + }, + ] + } + width={32} + > + <RNSVGGroup + fill={ + { + "payload": 4278190080, + "type": 0, + } + } + > + <RNSVGRect + fill={ + { + "payload": 4278404701, + "type": 0, + } + } + height={32} + matrix={ + [ + -0.6142852000989433, + 0.7890840848346906, + -0.7890840848346906, + -0.6142852000989433, + 41.38442220412787, + 14.429364796825299, + ] + } + propList={ + [ + "fill", + ] + } + width={32} + x={0} + y={0} + /> + <RNSVGRect + fill={ + { + "payload": 4294399745, + "type": 0, + } + } + height={32} + matrix={ + [ + -0.8910065241883678, + 0.45399049973954686, + -0.45399049973954686, + -0.8910065241883678, + 44.69178448403159, + 34.07206191418916, + ] + } + propList={ + [ + "fill", + ] + } + width={32} + x={0} + y={0} + /> + <RNSVGRect + fill={ + { + "payload": 4278286988, + "type": 0, + } + } + height={32} + matrix={ + [ + -0.8348478632634064, + 0.5504807400849958, + -0.5504807400849958, + -0.8348478632634064, + 46.616692080655206, + 43.018475720213836, + ] + } + propList={ + [ + "fill", + ] + } + width={32} + x={0} + y={0} + /> + </RNSVGGroup> + </RNSVGSvgView> + </View> + <Text + accessibilityRole="text" + style={ + { + "color": "inherit", + "fontFamily": "EuclidCircularB-Regular", + "fontSize": 14, + "fontWeight": "400", + "letterSpacing": 0, + "lineHeight": 22, + } + } + > + 128Lkh3...Mp8p6 + </Text> +</View> +`; + +exports[`SnapUIAddress renders Bitcoin address with blockie 1`] = ` +<View + alignItems="center" + flexDirection="row" + gap={8} + style={ + [ + { + "alignItems": "center", + "flexDirection": "row", + "gap": 8, + }, + undefined, + ] + } +> + <Image + borderRadius={16} + height={32} + source={ + { + "uri": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAMAAAD04JH5AAAACVBMVEUpdqkxxtA7z9EPkoDKAAAAA3RSTlP////6yOLMAABAi0lEQVR42gGAQH+/AAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICJ+wuAXhHr2sAAAAASUVORK5CYII=", + } + } + width={32} + /> + <Text + accessibilityRole="text" + style={ + { + "color": "inherit", + "fontFamily": "EuclidCircularB-Regular", + "fontSize": 14, + "fontWeight": "400", + "letterSpacing": 0, + "lineHeight": 22, + } + } + > + 128Lkh3...Mp8p6 + </Text> +</View> +`; + +exports[`SnapUIAddress renders Cosmos address 1`] = ` +<View + alignItems="center" + flexDirection="row" + gap={8} + style={ + [ + { + "alignItems": "center", + "flexDirection": "row", + "gap": 8, + }, + undefined, + ] + } +> + <View + style={ + [ + { + "overflow": "hidden", + }, + { + "backgroundColor": "#033B5D", + "borderRadius": 16, + "height": 32, + "width": 32, + }, + undefined, + ] + } + > + <RNSVGSvgView + bbHeight={32} + bbWidth={32} + focusable={false} + height={32} + style={ + [ + { + "backgroundColor": "transparent", + "borderWidth": 0, + }, + { + "flex": 0, + "height": 32, + "width": 32, + }, + ] + } + width={32} + > + <RNSVGGroup + fill={ + { + "payload": 4278190080, + "type": 0, + } + } + > + <RNSVGRect + fill={ + { + "payload": 4280564449, + "type": 0, + } + } + height={32} + matrix={ + [ + -0.19765734037912552, + -0.980271174621722, + 0.980271174621722, + -0.19765734037912552, + -7.0989167163851015, + 36.124741566654706, + ] + } + propList={ + [ + "fill", + ] + } + width={32} + x={0} + y={0} + /> + <RNSVGRect + fill={ + { + "payload": 4294711597, + "type": 0, + } + } + height={32} + matrix={ + [ + -0.9865721616069695, + -0.16332596224162213, + 0.16332596224162213, + -0.9865721616069695, + 34.849276460507994, + 44.34205740189883, + ] + } + propList={ + [ + "fill", + ] + } + width={32} + x={0} + y={0} + /> + <RNSVGRect + fill={ + { + "payload": 4293849856, + "type": 0, + } + } + height={32} + matrix={ + [ + 0.4383711467890774, + -0.898794046299167, + 0.898794046299167, + 0.4383711467890774, + -31.02462951759497, + 5.576360605670079, + ] + } + propList={ + [ + "fill", + ] + } + width={32} + x={0} + y={0} + /> + </RNSVGGroup> + </RNSVGSvgView> + </View> + <Text + accessibilityRole="text" + style={ + { + "color": "inherit", + "fontFamily": "EuclidCircularB-Regular", + "fontSize": 14, + "fontWeight": "400", + "letterSpacing": 0, + "lineHeight": 22, + } + } + > + cosmos1...6hdc0 + </Text> +</View> +`; + +exports[`SnapUIAddress renders Cosmos address with blockie 1`] = ` +<View + alignItems="center" + flexDirection="row" + gap={8} + style={ + [ + { + "alignItems": "center", + "flexDirection": "row", + "gap": 8, + }, + undefined, + ] + } +> + <Image + borderRadius={16} + height={32} + source={ + { + "uri": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAMAAAD04JH5AAAACVBMVEU7MYWX3joghpi+PrwkAAAAA3RSTlP////6yOLMAABAi0lEQVR42gGAQH+/AAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBIF0mAWfyM7MAAAAASUVORK5CYII=", + } + } + width={32} + /> + <Text + accessibilityRole="text" + style={ + { + "color": "inherit", + "fontFamily": "EuclidCircularB-Regular", + "fontSize": 14, + "fontWeight": "400", + "letterSpacing": 0, + "lineHeight": 22, + } + } + > + cosmos1...6hdc0 + </Text> +</View> +`; + +exports[`SnapUIAddress renders Ethereum address 1`] = ` +<View + alignItems="center" + flexDirection="row" + gap={8} + style={ + [ + { + "alignItems": "center", + "flexDirection": "row", + "gap": 8, + }, + undefined, + ] + } +> + <View + style={ + [ + { + "overflow": "hidden", + }, + { + "backgroundColor": "#C71452", + "borderRadius": 16, + "height": 32, + "width": 32, + }, + undefined, + ] + } + > + <RNSVGSvgView + bbHeight={32} + bbWidth={32} + focusable={false} + height={32} + style={ + [ + { + "backgroundColor": "transparent", + "borderWidth": 0, + }, + { + "flex": 0, + "height": 32, + "width": 32, + }, + ] + } + width={32} + > + <RNSVGGroup + fill={ + { + "payload": 4278190080, + "type": 0, + } + } + > + <RNSVGRect + fill={ + { + "payload": 4294022658, + "type": 0, + } + } + height={32} + matrix={ + [ + -0.6374239897486895, + -0.7705132427757894, + 0.7705132427757894, + -0.6374239897486895, + 11.053062989283362, + 43.47891226439789, + ] + } + propList={ + [ + "fill", + ] + } + width={32} + x={0} + y={0} + /> + <RNSVGRect + fill={ + { + "payload": 4280577249, + "type": 0, + } + } + height={32} + matrix={ + [ + -0.41786707380107674, + -0.9085081775267219, + 0.9085081775267219, + -0.41786707380107674, + -5.348907952243133, + 27.780085344551686, + ] + } + propList={ + [ + "fill", + ] + } + width={32} + x={0} + y={0} + /> + <RNSVGRect + fill={ + { + "payload": 4278291595, + "type": 0, + } + } + height={32} + matrix={ + [ + -0.9943379441332046, + 0.10626407133623336, + -0.10626407133623336, + -0.9943379441332046, + 52.03432629974044, + 53.45795917102963, + ] + } + propList={ + [ + "fill", + ] + } + width={32} + x={0} + y={0} + /> + </RNSVGGroup> + </RNSVGSvgView> + </View> + <Text + accessibilityRole="text" + style={ + { + "color": "inherit", + "fontFamily": "EuclidCircularB-Regular", + "fontSize": 14, + "fontWeight": "400", + "letterSpacing": 0, + "lineHeight": 22, + } + } + > + 0xab16a...Bfcdb + </Text> +</View> +`; + +exports[`SnapUIAddress renders Ethereum address with blockie 1`] = ` +<View + alignItems="center" + flexDirection="row" + gap={8} + style={ + [ + { + "alignItems": "center", + "flexDirection": "row", + "gap": 8, + }, + undefined, + ] + } +> + <Image + borderRadius={16} + height={32} + source={ + { + "uri": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAMAAAD04JH5AAAACVBMVEXfzEuAVsrUUj5Qp4uTAAAAA3RSTlP////6yOLMAABAi0lEQVR42gGAQH+/AAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAptEeAW5/BekAAAAASUVORK5CYII=", + } + } + width={32} + /> + <Text + accessibilityRole="text" + style={ + { + "color": "inherit", + "fontFamily": "EuclidCircularB-Regular", + "fontSize": 14, + "fontWeight": "400", + "letterSpacing": 0, + "lineHeight": 22, + } + } + > + 0xab16a...Bfcdb + </Text> +</View> +`; + +exports[`SnapUIAddress renders Hedera address 1`] = ` +<View + alignItems="center" + flexDirection="row" + gap={8} + style={ + [ + { + "alignItems": "center", + "flexDirection": "row", + "gap": 8, + }, + undefined, + ] + } +> + <View + style={ + [ + { + "overflow": "hidden", + }, + { + "backgroundColor": "#FC1950", + "borderRadius": 16, + "height": 32, + "width": 32, + }, + undefined, + ] + } + > + <RNSVGSvgView + bbHeight={32} + bbWidth={32} + focusable={false} + height={32} + style={ + [ + { + "backgroundColor": "transparent", + "borderWidth": 0, + }, + { + "flex": 0, + "height": 32, + "width": 32, + }, + ] + } + width={32} + > + <RNSVGGroup + fill={ + { + "payload": 4278190080, + "type": 0, + } + } + > + <RNSVGRect + fill={ + { + "payload": 4291236927, + "type": 0, + } + } + height={32} + matrix={ + [ + 0.14953534344370936, + 0.9887563810470059, + -0.9887563810470059, + 0.14953534344370936, + 37.320467000349105, + 1.602385558164804, + ] + } + propList={ + [ + "fill", + ] + } + width={32} + x={0} + y={0} + /> + <RNSVGRect + fill={ + { + "payload": 4294398209, + "type": 0, + } + } + height={32} + matrix={ + [ + -0.3452981989985342, + -0.938493022759556, + 0.938493022759556, + -0.3452981989985342, + -8.606649434280506, + 42.19889068879461, + ] + } + propList={ + [ + "fill", + ] + } + width={32} + x={0} + y={0} + /> + <RNSVGRect + fill={ + { + "payload": 4278405213, + "type": 0, + } + } + height={32} + matrix={ + [ + 0.7804304073383298, + -0.6252426563357052, + 0.6252426563357052, + 0.7804304073383298, + 12.291347391312584, + -7.449445396869988, + ] + } + propList={ + [ + "fill", + ] + } + width={32} + x={0} + y={0} + /> + </RNSVGGroup> + </RNSVGSvgView> + </View> + <Text + accessibilityRole="text" + style={ + { + "color": "inherit", + "fontFamily": "EuclidCircularB-Regular", + "fontSize": 14, + "fontWeight": "400", + "letterSpacing": 0, + "lineHeight": 22, + } + } + > + 0.0.123...zbhlt + </Text> +</View> +`; + +exports[`SnapUIAddress renders Hedera address with blockie 1`] = ` +<View + alignItems="center" + flexDirection="row" + gap={8} + style={ + [ + { + "alignItems": "center", + "flexDirection": "row", + "gap": 8, + }, + undefined, + ] + } +> + <Image + borderRadius={16} + height={32} + source={ + { + "uri": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAMAAAD04JH5AAAACVBMVEXndD9EiSTjBxK7NmS1AAAAA3RSTlP////6yOLMAABAi0lEQVR42gGAQH+/AAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBC9c+AWISzuoAAAAASUVORK5CYII=", + } + } + width={32} + /> + <Text + accessibilityRole="text" + style={ + { + "color": "inherit", + "fontFamily": "EuclidCircularB-Regular", + "fontSize": 14, + "fontWeight": "400", + "letterSpacing": 0, + "lineHeight": 22, + } + } + > + 0.0.123...zbhlt + </Text> +</View> +`; + +exports[`SnapUIAddress renders Polkadot address 1`] = ` +<View + alignItems="center" + flexDirection="row" + gap={8} + style={ + [ + { + "alignItems": "center", + "flexDirection": "row", + "gap": 8, + }, + undefined, + ] + } +> + <View + style={ + [ + { + "overflow": "hidden", + }, + { + "backgroundColor": "#15C5F2", + "borderRadius": 16, + "height": 32, + "width": 32, + }, + undefined, + ] + } + > + <RNSVGSvgView + bbHeight={32} + bbWidth={32} + focusable={false} + height={32} + style={ + [ + { + "backgroundColor": "transparent", + "borderWidth": 0, + }, + { + "flex": 0, + "height": 32, + "width": 32, + }, + ] + } + width={32} + > + <RNSVGGroup + fill={ + { + "payload": 4278190080, + "type": 0, + } + } + > + <RNSVGRect + fill={ + { + "payload": 4280585185, + "type": 0, + } + } + height={32} + matrix={ + [ + -0.6600016679609368, + -0.7512641335035111, + 0.7512641335035111, + -0.6600016679609368, + 13.607164573260809, + 37.80415490169137, + ] + } + propList={ + [ + "fill", + ] + } + width={32} + x={0} + y={0} + /> + <RNSVGRect + fill={ + { + "payload": 4278291572, + "type": 0, + } + } + height={32} + matrix={ + [ + -0.9961946980917455, + 0.0871557427476582, + -0.0871557427476582, + -0.9961946980917455, + 47.96746618105496, + 30.71565010314135, + ] + } + propList={ + [ + "fill", + ] + } + width={32} + x={0} + y={0} + /> + <RNSVGRect + fill={ + { + "payload": 4294012418, + "type": 0, + } + } + height={32} + matrix={ + [ + 0.953190667792947, + 0.3023698907504445, + -0.3023698907504445, + 0.953190667792947, + 27.920878733171854, + -3.4443162292122325, + ] + } + propList={ + [ + "fill", + ] + } + width={32} + x={0} + y={0} + /> + </RNSVGGroup> + </RNSVGSvgView> + </View> + <Text + accessibilityRole="text" + style={ + { + "color": "inherit", + "fontFamily": "EuclidCircularB-Regular", + "fontSize": 14, + "fontWeight": "400", + "letterSpacing": 0, + "lineHeight": 22, + } + } + > + 5hmuyxw...egmfy + </Text> +</View> +`; + +exports[`SnapUIAddress renders Polkadot address with blockie 1`] = ` +<View + alignItems="center" + flexDirection="row" + gap={8} + style={ + [ + { + "alignItems": "center", + "flexDirection": "row", + "gap": 8, + }, + undefined, + ] + } +> + <Image + borderRadius={16} + height={32} + source={ + { + "uri": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAMAAAD04JH5AAAACVBMVEWONyASgTR7lxMyit4TAAAAA3RSTlP////6yOLMAABAi0lEQVR42gGAQH+/AAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBiAhCAWH8DQcAAAAASUVORK5CYII=", + } + } + width={32} + /> + <Text + accessibilityRole="text" + style={ + { + "color": "inherit", + "fontFamily": "EuclidCircularB-Regular", + "fontSize": 14, + "fontWeight": "400", + "letterSpacing": 0, + "lineHeight": 22, + } + } + > + 5hmuyxw...egmfy + </Text> +</View> +`; + +exports[`SnapUIAddress renders Starknet address 1`] = ` +<View + alignItems="center" + flexDirection="row" + gap={8} + style={ + [ + { + "alignItems": "center", + "flexDirection": "row", + "gap": 8, + }, + undefined, + ] + } +> + <View + style={ + [ + { + "overflow": "hidden", + }, + { + "backgroundColor": "#C7146E", + "borderRadius": 16, + "height": 32, + "width": 32, + }, + undefined, + ] + } + > + <RNSVGSvgView + bbHeight={32} + bbWidth={32} + focusable={false} + height={32} + style={ + [ + { + "backgroundColor": "transparent", + "borderWidth": 0, + }, + { + "flex": 0, + "height": 32, + "width": 32, + }, + ] + } + width={32} + > + <RNSVGGroup + fill={ + { + "payload": 4278190080, + "type": 0, + } + } + > + <RNSVGRect + fill={ + { + "payload": 4280584673, + "type": 0, + } + } + height={32} + matrix={ + [ + 0.6454576877239506, + 0.7637960286346421, + -0.7637960286346421, + 0.6454576877239506, + 19.72240983294027, + -10.014248315377227, + ] + } + propList={ + [ + "fill", + ] + } + width={32} + x={0} + y={0} + /> + <RNSVGRect + fill={ + { + "payload": 4294152960, + "type": 0, + } + } + height={32} + matrix={ + [ + 0.9909831997148363, + -0.13398618541829194, + 0.13398618541829194, + 0.9909831997148363, + -18.754789048385472, + -5.941873265706983, + ] + } + propList={ + [ + "fill", + ] + } + width={32} + x={0} + y={0} + /> + <RNSVGRect + fill={ + { + "payload": 4279616242, + "type": 0, + } + } + height={32} + matrix={ + [ + -0.7965299180241964, + -0.6045991148623747, + 0.6045991148623747, + -0.7965299180241964, + -4.3840057335908575, + 41.26998414158069, + ] + } + propList={ + [ + "fill", + ] + } + width={32} + x={0} + y={0} + /> + </RNSVGGroup> + </RNSVGSvgView> + </View> + <Text + accessibilityRole="text" + style={ + { + "color": "inherit", + "fontFamily": "EuclidCircularB-Regular", + "fontSize": 14, + "fontWeight": "400", + "letterSpacing": 0, + "lineHeight": 22, + } + } + > + 0x02dd1...0ab57 + </Text> +</View> +`; + +exports[`SnapUIAddress renders Starknet address with blockie 1`] = ` +<View + alignItems="center" + flexDirection="row" + gap={8} + style={ + [ + { + "alignItems": "center", + "flexDirection": "row", + "gap": 8, + }, + undefined, + ] + } +> + <Image + borderRadius={16} + height={32} + source={ + { + "uri": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAMAAAD04JH5AAAACVBMVEVpc9IWhYjg9F/LoqLsAAAAA3RSTlP////6yOLMAABAi0lEQVR42gGAQH+/AAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAkks2AfzvMOsAAAAASUVORK5CYII=", + } + } + width={32} + /> + <Text + accessibilityRole="text" + style={ + { + "color": "inherit", + "fontFamily": "EuclidCircularB-Regular", + "fontSize": 14, + "fontWeight": "400", + "letterSpacing": 0, + "lineHeight": 22, + } + } + > + 0x02dd1...0ab57 + </Text> +</View> +`; + +exports[`SnapUIAddress renders legacy Ethereum address 1`] = ` +<View + alignItems="center" + flexDirection="row" + gap={8} + style={ + [ + { + "alignItems": "center", + "flexDirection": "row", + "gap": 8, + }, + undefined, + ] + } +> + <View + style={ + [ + { + "overflow": "hidden", + }, + { + "backgroundColor": "#C71452", + "borderRadius": 16, + "height": 32, + "width": 32, + }, + undefined, + ] + } + > + <RNSVGSvgView + bbHeight={32} + bbWidth={32} + focusable={false} + height={32} + style={ + [ + { + "backgroundColor": "transparent", + "borderWidth": 0, + }, + { + "flex": 0, + "height": 32, + "width": 32, + }, + ] + } + width={32} + > + <RNSVGGroup + fill={ + { + "payload": 4278190080, + "type": 0, + } + } + > + <RNSVGRect + fill={ + { + "payload": 4294022658, + "type": 0, + } + } + height={32} + matrix={ + [ + -0.6374239897486895, + -0.7705132427757894, + 0.7705132427757894, + -0.6374239897486895, + 11.053062989283362, + 43.47891226439789, + ] + } + propList={ + [ + "fill", + ] + } + width={32} + x={0} + y={0} + /> + <RNSVGRect + fill={ + { + "payload": 4280577249, + "type": 0, + } + } + height={32} + matrix={ + [ + -0.41786707380107674, + -0.9085081775267219, + 0.9085081775267219, + -0.41786707380107674, + -5.348907952243133, + 27.780085344551686, + ] + } + propList={ + [ + "fill", + ] + } + width={32} + x={0} + y={0} + /> + <RNSVGRect + fill={ + { + "payload": 4278291595, + "type": 0, + } + } + height={32} + matrix={ + [ + -0.9943379441332046, + 0.10626407133623336, + -0.10626407133623336, + -0.9943379441332046, + 52.03432629974044, + 53.45795917102963, + ] + } + propList={ + [ + "fill", + ] + } + width={32} + x={0} + y={0} + /> + </RNSVGGroup> + </RNSVGSvgView> + </View> + <Text + accessibilityRole="text" + style={ + { + "color": "inherit", + "fontFamily": "EuclidCircularB-Regular", + "fontSize": 14, + "fontWeight": "400", + "letterSpacing": 0, + "lineHeight": 22, + } + } + > + 0xab16a...Bfcdb + </Text> +</View> +`; diff --git a/app/components/UI/Snaps/SnapUIAddress/useDisplayName.ts b/app/components/UI/Snaps/SnapUIAddress/useDisplayName.ts new file mode 100644 index 000000000000..f8cf6d42108f --- /dev/null +++ b/app/components/UI/Snaps/SnapUIAddress/useDisplayName.ts @@ -0,0 +1,59 @@ +import { + CaipChainId, + KnownCaipNamespace, + CaipNamespace, +} from '@metamask/utils'; +import { useSelector } from 'react-redux'; +import { decimalToHex } from '../../../../util/conversions'; +import { RootState } from '../../../../reducers'; +import { selectInternalAccounts } from '../../../../selectors/accountsController'; +import { toLowerCaseEquals } from '../../../../util/general'; +import { selectAddressBookByChain } from '../../../../selectors/addressBookController'; + +export interface UseDisplayNameParams { + chain: { + namespace: CaipNamespace; + reference: string; + }; + chainId: CaipChainId; + address: string; +} + +/** + * Get the display name for an address. + * This will look for an account name in the state, and if not found, it will look for an address book entry. + * + * @param params - The parsed CAIP-10 ID. + * @returns The display name for the address. + */ +export const useDisplayName = ( + params: UseDisplayNameParams, +): string | undefined => { + const { + address, + chain: { namespace, reference }, + } = params; + + const isEip155 = namespace === KnownCaipNamespace.Eip155; + + const accounts = useSelector(selectInternalAccounts); + + const account = accounts.find((possibleAccount) => + toLowerCaseEquals(possibleAccount.address, address), + ); + + const chainAddressBook = useSelector((state: RootState) => + selectAddressBookByChain( + state, + `0x${decimalToHex(isEip155 ? reference : `0`)}`, + ), + ); + + const addressBookEntry = chainAddressBook.find((contact) => + toLowerCaseEquals(contact.address, address), + ); + + return ( + account?.metadata?.name || (isEip155 && addressBookEntry?.name) || undefined + ); +}; diff --git a/app/components/UI/Snaps/SnapUIAvatar/SnapUIAvatar.tsx b/app/components/UI/Snaps/SnapUIAvatar/SnapUIAvatar.tsx new file mode 100644 index 000000000000..a04b76e09db6 --- /dev/null +++ b/app/components/UI/Snaps/SnapUIAvatar/SnapUIAvatar.tsx @@ -0,0 +1,74 @@ +import React, { useMemo } from 'react'; +import { useSelector } from 'react-redux'; +import { + CaipAccountAddress, + CaipAccountId, + CaipNamespace, + KnownCaipNamespace, + parseCaipAccountId, + stringToBytes, +} from '@metamask/utils'; +import { Image } from 'react-native'; +import Jazzicon from 'react-native-jazzicon'; +import { toDataUrl } from '../../../../util/blockies'; +import { RootState } from '../../../../reducers'; + +export const DIAMETERS: Record<string, number> = { + xs: 16, + sm: 24, + md: 32, + lg: 40, +}; + +export interface SnapUIAvatarProps { + // The address must be a CAIP-10 string. + address: string; + size?: 'xs' | 'sm' | 'md' | 'lg'; +} + +function getJazziconSeed( + namespace: CaipNamespace, + address: CaipAccountAddress, +) { + if (namespace === KnownCaipNamespace.Eip155) { + // Default behaviour for EIP155 namespace to match existing Jazzicons + return parseInt(address.slice(2, 10), 16); + } + return Array.from(stringToBytes(address.normalize('NFKC').toLowerCase())); +} + +export const SnapUIAvatar: React.FunctionComponent<SnapUIAvatarProps> = ({ + address, + size = 'md', +}) => { + const parsed = useMemo( + () => parseCaipAccountId(address as CaipAccountId), + [address], + ); + const useBlockie = useSelector( + (state: RootState) => state.settings.useBlockieIcon, + ); + + const diameter = DIAMETERS[size]; + + if (useBlockie) { + return ( + <Image + source={{ uri: toDataUrl(parsed.address) }} + height={diameter} + width={diameter} + borderRadius={diameter / 2} + /> + ); + } + + const seed = getJazziconSeed(parsed.chain.namespace, parsed.address); + + return ( + <Jazzicon + // @ts-expect-error The underlying PRNG supports the seed being an array but the component is typed wrong. + seed={seed} + size={diameter} + /> + ); +}; diff --git a/app/components/UI/Snaps/SnapUIImage/SnapUIImage.tsx b/app/components/UI/Snaps/SnapUIImage/SnapUIImage.tsx new file mode 100644 index 000000000000..5f4b36fee437 --- /dev/null +++ b/app/components/UI/Snaps/SnapUIImage/SnapUIImage.tsx @@ -0,0 +1,34 @@ +///: BEGIN:ONLY_INCLUDE_IF(preinstalled-snaps,external-snaps) +import React, { useMemo } from 'react'; +import { ImageStyle, StyleProp } from 'react-native'; +import { SvgUri } from 'react-native-svg'; + +export interface SnapUIImageProps { + value: string; + style?: StyleProp<ImageStyle>; + width?: number; + height?: number; + borderRadius?: number; +} + +export const SnapUIImage: React.FC<SnapUIImageProps> = ({ + value, + width, + height, + style, + borderRadius, +}) => { + const uri = useMemo( + () => `data:image/svg+xml;utf8,${encodeURIComponent(value)}`, + [value], + ); + + return ( + <SvgUri + testID="snaps-ui-image" + uri={uri} + style={[{ width, height, borderRadius }, style]} + /> + ); +}; +///: END:ONLY_INCLUDE_IF diff --git a/app/components/UI/Snaps/SnapUIInput/SnapUIInput.test.tsx b/app/components/UI/Snaps/SnapUIInput/SnapUIInput.test.tsx new file mode 100644 index 000000000000..5a428424b953 --- /dev/null +++ b/app/components/UI/Snaps/SnapUIInput/SnapUIInput.test.tsx @@ -0,0 +1,110 @@ +import React from 'react'; +import { render, fireEvent } from '@testing-library/react-native'; +import { SnapUIInput } from './SnapUIInput'; +import { useSnapInterfaceContext } from '../../../Snaps/SnapInterfaceContext'; + +// Mock the entire module +jest.mock('../../../Snaps/SnapInterfaceContext'); + +describe('SnapUIInput', () => { + const mockHandleInputChange = jest.fn(); + const mockSetCurrentFocusedInput = jest.fn(); + const mockGetValue = jest.fn(); + + beforeEach(() => { + // Set up the mock implementation before each test + (useSnapInterfaceContext as jest.Mock).mockReturnValue({ + handleInputChange: mockHandleInputChange, + getValue: mockGetValue, + setCurrentFocusedInput: mockSetCurrentFocusedInput, + focusedInput: null, + }); + + // Clear all mocks before each test + jest.clearAllMocks(); + }); + + it('renders with initial value', () => { + mockGetValue.mockReturnValue('initial value'); + + const { getByDisplayValue } = render(<SnapUIInput name="testInput" />); + + expect(getByDisplayValue('initial value')).toBeTruthy(); + }); + + it('handles input changes', () => { + const { getByTestId } = render(<SnapUIInput name="testInput" />); + + const input = getByTestId('textfield'); + fireEvent.changeText(input, 'new value'); + + expect(mockHandleInputChange).toHaveBeenCalledWith( + 'testInput', + 'new value', + undefined, + ); + }); + + it('handles form input changes', () => { + const { getByTestId } = render( + <SnapUIInput name="testInput" form="testForm" />, + ); + + const input = getByTestId('textfield'); + fireEvent.changeText(input, 'new value'); + + expect(mockHandleInputChange).toHaveBeenCalledWith( + 'testInput', + 'new value', + 'testForm', + ); + }); + + it('handles focus events', () => { + const { getByTestId } = render(<SnapUIInput name="testInput" />); + + const input = getByTestId('textfield'); + fireEvent(input, 'focus'); + + expect(mockSetCurrentFocusedInput).toHaveBeenCalledWith('testInput'); + }); + + it('handles blur events', () => { + const { getByTestId } = render(<SnapUIInput name="testInput" />); + + const input = getByTestId('textfield'); + fireEvent(input, 'blur'); + + expect(mockSetCurrentFocusedInput).toHaveBeenCalledWith(null); + }); + + it('updates value when initialValue changes', () => { + mockGetValue.mockReturnValue('initial value'); + + const { getByDisplayValue, rerender } = render( + <SnapUIInput name="testInput" />, + ); + + expect(getByDisplayValue('initial value')).toBeTruthy(); + + mockGetValue.mockReturnValue('updated value'); + rerender(<SnapUIInput name="testInput" />); + + expect(getByDisplayValue('updated value')).toBeTruthy(); + }); + + it('maintains focus state when re-rendered', () => { + (useSnapInterfaceContext as jest.Mock).mockReturnValue({ + handleInputChange: mockHandleInputChange, + getValue: mockGetValue, + setCurrentFocusedInput: mockSetCurrentFocusedInput, + focusedInput: 'testInput', + }); + + const { getByTestId } = render(<SnapUIInput name="testInput" />); + const input = getByTestId('textfield'); + + expect(input).toBeTruthy(); + expect(useSnapInterfaceContext().focusedInput).toBe('testInput'); + }); +}); diff --git a/app/components/UI/Snaps/SnapUIInput/SnapUIInput.tsx b/app/components/UI/Snaps/SnapUIInput/SnapUIInput.tsx new file mode 100644 index 000000000000..58f6951fe589 --- /dev/null +++ b/app/components/UI/Snaps/SnapUIInput/SnapUIInput.tsx @@ -0,0 +1,81 @@ +import React, { useEffect, useRef, useState } from 'react'; +import { useSnapInterfaceContext } from '../../../Snaps/SnapInterfaceContext'; +import { TextInput } from 'react-native'; +import TextField, { + TextFieldSize, +} from '../../../../component-library/components/Form/TextField'; +import HelpText, { + HelpTextSeverity, +} from '../../../../component-library/components/Form/HelpText'; +import Label from '../../../../component-library/components/Form/Label'; +import { Box } from '../../Box/Box'; + +export interface SnapUIInputProps { + name: string; + form?: string; + label?: string; + error?: string; +} + +export const SnapUIInput = ({ + name, + form, + label, + error, + ...props +}: SnapUIInputProps) => { + const { handleInputChange, getValue, focusedInput, setCurrentFocusedInput } = + useSnapInterfaceContext(); + + const inputRef = useRef<TextInput>(null); + + const initialValue = getValue(name, form) as string; + + const [value, setValue] = useState(initialValue ?? ''); + + useEffect(() => { + if (initialValue !== undefined && initialValue !== null) { + setValue(initialValue); + } + }, [initialValue]); + + /* + * Focus input if the last focused input was this input + * This avoids loosing the focus when the UI is re-rendered + */ + useEffect(() => { + if (inputRef.current && focusedInput === name) { + inputRef.current.focus(); + } + }, [inputRef, name, focusedInput]); + + const handleChange = (text: string) => { + setValue(text); + handleInputChange(name, text, form); + }; + + const handleFocus = () => setCurrentFocusedInput(name); + const handleBlur = () => setCurrentFocusedInput(null); + + return ( + <Box> + {label && <Label>{label}</Label>} + <TextField + {...props} + size={TextFieldSize.Lg} + ref={inputRef} + onFocus={handleFocus} + onBlur={handleBlur} + id={name} + value={value} + onChangeText={handleChange} + /> + {error && ( + // eslint-disable-next-line react-native/no-inline-styles + <HelpText severity={HelpTextSeverity.Error} style={{ marginTop: 4 }}> + {error} + </HelpText> + )} + </Box> + ); +}; diff --git a/app/components/UI/Snaps/SnapUILink/SnapUILink.tsx b/app/components/UI/Snaps/SnapUILink/SnapUILink.tsx new file mode 100644 index 000000000000..f113a3c7bc81 --- /dev/null +++ b/app/components/UI/Snaps/SnapUILink/SnapUILink.tsx @@ -0,0 +1,35 @@ +///: BEGIN:ONLY_INCLUDE_IF(preinstalled-snaps,external-snaps) +import { LinkChildren } from '@metamask/snaps-sdk/jsx'; +import React from 'react'; +import { Linking } from 'react-native'; +import ButtonLink from '../../../../component-library/components/Buttons/Button/variants/ButtonLink'; +import { TextColor } from '../../../../component-library/components/Texts/Text'; + +export interface SnapUILinkProps { + children: LinkChildren; + href: string; +} + +const validateUrl = (href: string) => { + if (!href.startsWith('https://')) { + throw new Error('Invalid URL'); + } +}; + +const onPress = (href: string) => { + validateUrl(href); + Linking.openURL(href); +}; + +// TODO: This component should show a modal for links when not using preinstalled Snaps +// TODO: This component should have an icon next to it +export const SnapUILink: React.FC<SnapUILinkProps> = ({ href, children }) => ( + <ButtonLink + testID="snaps-ui-link" + // @ts-expect-error This prop is not part of the type but it works. + color={TextColor.Info} + onPress={() => onPress(href)} + label={children} + /> +); +///: END:ONLY_INCLUDE_IF diff --git a/app/components/UI/Stake/Views/StakeEarningsHistoryView/StakeEarningsHistoryView.test.tsx b/app/components/UI/Stake/Views/StakeEarningsHistoryView/StakeEarningsHistoryView.test.tsx index fa1854612e7d..38dd991f61af 100644 --- a/app/components/UI/Stake/Views/StakeEarningsHistoryView/StakeEarningsHistoryView.test.tsx +++ b/app/components/UI/Stake/Views/StakeEarningsHistoryView/StakeEarningsHistoryView.test.tsx @@ -1,7 +1,7 @@ import React from 'react'; import StakeEarningsHistoryView from './StakeEarningsHistoryView'; import useStakingEarningsHistory from '../../hooks/useStakingEarningsHistory'; -import { MOCK_STAKED_ETH_ASSET } from '../../__mocks__/mockData'; +import { MOCK_STAKED_ETH_MAINNET_ASSET } from '../../__mocks__/mockData'; import { fireLayoutEvent } from '../../../../../util/testUtils/react-native-svg-charts'; import { getStakingNavbar } from '../../../Navbar'; import renderWithProvider from '../../../../../util/test/renderWithProvider'; @@ -24,7 +24,7 @@ jest.mock('@react-navigation/native', () => { useRoute: () => ({ key: '1', name: 'params', - params: { asset: MOCK_STAKED_ETH_ASSET }, + params: { asset: MOCK_STAKED_ETH_MAINNET_ASSET }, }), }; }); diff --git a/app/components/UI/Stake/Views/StakeInputView/StakeInputView.test.tsx b/app/components/UI/Stake/Views/StakeInputView/StakeInputView.test.tsx index be9395f59b0f..1e8c8f2f7d91 100644 --- a/app/components/UI/Stake/Views/StakeInputView/StakeInputView.test.tsx +++ b/app/components/UI/Stake/Views/StakeInputView/StakeInputView.test.tsx @@ -1,34 +1,27 @@ import React from 'react'; -import { fireEvent, screen } from '@testing-library/react-native'; +import { fireEvent } from '@testing-library/react-native'; import StakeInputView from './StakeInputView'; -import { renderScreen } from '../../../../../util/test/renderWithProvider'; +import renderWithProvider, { + DeepPartial, +} from '../../../../../util/test/renderWithProvider'; import Routes from '../../../../../constants/navigation/Routes'; -import { backgroundState } from '../../../../../util/test/initial-root-state'; import { Stake } from '../../sdk/stakeSdkProvider'; import { ChainId, PooledStakingContract } from '@metamask/stake-sdk'; import { Contract } from 'ethers'; +import { MOCK_ETH_MAINNET_ASSET } from '../../__mocks__/mockData'; import { toWei } from '../../../../../util/number'; import { strings } from '../../../../../../locales/i18n'; // eslint-disable-next-line import/no-namespace import * as useStakingGasFee from '../../hooks/useStakingGasFee'; +import { + STAKE_INPUT_VIEW_ACTIONS, + StakeInputViewProps, +} from './StakeInputView.types'; +import { MOCK_ACCOUNTS_CONTROLLER_STATE } from '../../../../../util/test/accountsControllerTestUtils'; +import { RootState } from '../../../../../reducers'; +import { backgroundState } from '../../../../../util/test/initial-root-state'; import { MOCK_VAULT_APY_AVERAGES } from '../../components/PoolStakingLearnMoreModal/mockVaultRewards'; -function render(Component: React.ComponentType) { - return renderScreen( - Component, - { - name: Routes.STAKING.STAKE, - }, - { - state: { - engine: { - backgroundState, - }, - }, - }, - ); -} - const mockSetOptions = jest.fn(); const mockNavigate = jest.fn(); const mockReset = jest.fn(); @@ -40,9 +33,7 @@ jest.mock('@react-navigation/native', () => { ...actualReactNavigation, useNavigation: () => ({ navigate: mockNavigate, - setOptions: mockSetOptions.mockImplementation( - actualReactNavigation.useNavigation().setOptions, - ), + setOptions: mockSetOptions, reset: mockReset, dangerouslyGetParent: () => ({ pop: mockPop, @@ -143,77 +134,105 @@ jest.mock('../../hooks/useVaultApyAverages', () => ({ }), })); +const mockInitialState: DeepPartial<RootState> = { + settings: {}, + engine: { + backgroundState: { + ...backgroundState, + AccountsController: MOCK_ACCOUNTS_CONTROLLER_STATE, + }, + }, +}; + describe('StakeInputView', () => { + const baseProps: StakeInputViewProps = { + route: { + params: { + action: STAKE_INPUT_VIEW_ACTIONS.STAKE, + token: MOCK_ETH_MAINNET_ASSET, + }, + key: Routes.STAKING.STAKE, + name: 'params', + }, + }; + + const renderComponent = () => + renderWithProvider(<StakeInputView {...baseProps} />, { + state: mockInitialState, + }); + it('render matches snapshot', () => { - render(StakeInputView); - expect(screen.toJSON()).toMatchSnapshot(); + const { toJSON } = renderComponent(); + expect(toJSON()).toMatchSnapshot(); }); describe('when values are entered in the keypad', () => { it('updates ETH and fiat values', () => { - render(StakeInputView); + const { toJSON, getByText } = renderComponent(); + + expect(toJSON()).toMatchSnapshot(); - fireEvent.press(screen.getByText('2')); + fireEvent.press(getByText('2')); - expect(screen.getByText('4000 USD')).toBeTruthy(); + expect(getByText('4000 USD')).toBeTruthy(); }); }); describe('currency toggle functionality', () => { it('switches between ETH and fiat correctly', () => { - render(StakeInputView); + const { getByText } = renderComponent(); - expect(screen.getByText('ETH')).toBeTruthy(); - fireEvent.press(screen.getByText('0 USD')); + expect(getByText('ETH')).toBeTruthy(); + fireEvent.press(getByText('0 USD')); - expect(screen.getByText('USD')).toBeTruthy(); + expect(getByText('USD')).toBeTruthy(); }); }); describe('when calculating rewards', () => { it('calculates estimated annual rewards based on input', () => { - render(StakeInputView); + const { getByText } = renderComponent(); - fireEvent.press(screen.getByText('2')); + fireEvent.press(getByText('2')); - expect(screen.getByText('0.06515 ETH')).toBeTruthy(); + expect(getByText('0.06515 ETH')).toBeTruthy(); }); }); describe('quick amount buttons', () => { it('handles 25% quick amount button press correctly', () => { - render(StakeInputView); + const { getByText } = renderComponent(); - fireEvent.press(screen.getByText('25%')); + fireEvent.press(getByText('25%')); - expect(screen.getByText('0.375')).toBeTruthy(); + expect(getByText('0.375')).toBeTruthy(); }); }); describe('stake button states', () => { it('displays `Enter amount` if input is 0', () => { - render(StakeInputView); + const { getByText } = renderComponent(); - expect(screen.getByText('Enter amount')).toBeTruthy(); + expect(getByText('Enter amount')).toBeTruthy(); }); it('displays `Review` on stake button if input is valid', () => { - render(StakeInputView); + const { getByText } = renderComponent(); - fireEvent.press(screen.getByText('1')); - expect(screen.getByText('Review')).toBeTruthy(); + fireEvent.press(getByText('1')); + expect(getByText('Review')).toBeTruthy(); }); it('displays `Not enough ETH` when input exceeds balance', () => { - render(StakeInputView); + const { getByText, queryAllByText } = renderComponent(); - fireEvent.press(screen.getByText('4')); - expect(screen.queryAllByText('Not enough ETH')).toHaveLength(2); + fireEvent.press(getByText('4')); + expect(queryAllByText('Not enough ETH')).toHaveLength(2); }); it('navigates to Learn more modal when learn icon is pressed', () => { - render(StakeInputView); - fireEvent.press(screen.getByLabelText('Learn More')); + const { getByLabelText } = renderComponent(); + fireEvent.press(getByLabelText('Learn More')); expect(mockNavigate).toHaveBeenCalledWith('StakeModals', { screen: Routes.STAKING.MODALS.LEARN_MORE, }); @@ -227,11 +246,11 @@ describe('StakeInputView', () => { refreshGasValues: jest.fn(), }); - render(StakeInputView); + const { getByText } = renderComponent(); - fireEvent.press(screen.getByText('25%')); + fireEvent.press(getByText('25%')); - fireEvent.press(screen.getByText(strings('stake.review'))); + fireEvent.press(getByText(strings('stake.review'))); expect(mockNavigate).toHaveBeenLastCalledWith('StakeModals', { screen: Routes.STAKING.MODALS.GAS_IMPACT, diff --git a/app/components/UI/Stake/Views/StakeInputView/StakeInputView.tsx b/app/components/UI/Stake/Views/StakeInputView/StakeInputView.tsx index b3bc11c46430..642bc2d39200 100644 --- a/app/components/UI/Stake/Views/StakeInputView/StakeInputView.tsx +++ b/app/components/UI/Stake/Views/StakeInputView/StakeInputView.tsx @@ -26,9 +26,12 @@ import { formatEther } from 'ethers/lib/utils'; import { EVENT_PROVIDERS, EVENT_LOCATIONS } from '../../constants/events'; import { selectConfirmationRedesignFlags } from '../../../../../selectors/featureFlagController'; import { selectSelectedInternalAccount } from '../../../../../selectors/accountsController'; +import { StakeInputViewProps } from './StakeInputView.types'; +import { getStakeInputViewTitle } from './utils'; +import { isStablecoinLendingFeatureEnabled } from '../../constants'; +import EarnTokenSelector from '../../components/EarnTokenSelector'; -const StakeInputView = () => { - const title = strings('stake.stake_eth'); +const StakeInputView = ({ route }: StakeInputViewProps) => { const navigation = useNavigation(); const { styles, theme } = useStyles(styleSheet, {}); const { trackEvent, createEventBuilder } = useMetrics(); @@ -79,6 +82,9 @@ const StakeInputView = () => { amountWei.toString(), activeAccount?.address as string, ); + navigation.navigate('StakeScreens', { + screen: Routes.STANDALONE_CONFIRMATIONS.STAKE_DEPOSIT, + }); return; } @@ -168,6 +174,14 @@ const StakeInputView = () => { : strings('stake.review'); useEffect(() => { + const title = isStablecoinLendingFeatureEnabled() + ? getStakeInputViewTitle( + route?.params?.action, + route?.params?.token.symbol, + route?.params?.token.isETH, + ) + : strings('stake.stake_eth'); + navigation.setOptions( getStakingNavbar( title, @@ -187,7 +201,7 @@ const StakeInputView = () => { }, ), ); - }, [navigation, theme.colors, title]); + }, [navigation, route.params, theme.colors]); useEffect(() => { calculateEstimatedAnnualRewards(); @@ -210,26 +224,29 @@ const StakeInputView = () => { selected_provider: EVENT_PROVIDERS.CONSENSYS, text: 'Currency Switch Trigger', location: EVENT_LOCATIONS.STAKE_INPUT_VIEW, - // We want to track the currency switching to. Not the current currency. currency_type: isEth ? 'fiat' : 'native', }, })} currencyToggleValue={currencyToggleValue} /> <View style={styles.rewardsRateContainer}> - <EstimatedAnnualRewardsCard - estimatedAnnualRewards={estimatedAnnualRewards} - onIconPress={withMetaMetrics(navigateToLearnMoreModal, { - event: MetaMetricsEvents.TOOLTIP_OPENED, - properties: { - selected_provider: EVENT_PROVIDERS.CONSENSYS, - text: 'Tooltip Opened', - location: EVENT_LOCATIONS.STAKE_INPUT_VIEW, - tooltip_name: 'MetaMask Pool Estimated Rewards', - }, - })} - isLoading={isLoadingVaultApyAverages} - /> + {isStablecoinLendingFeatureEnabled() ? ( + <EarnTokenSelector token={route?.params?.token} /> + ) : ( + <EstimatedAnnualRewardsCard + estimatedAnnualRewards={estimatedAnnualRewards} + onIconPress={withMetaMetrics(navigateToLearnMoreModal, { + event: MetaMetricsEvents.TOOLTIP_OPENED, + properties: { + selected_provider: EVENT_PROVIDERS.CONSENSYS, + text: 'Tooltip Opened', + location: EVENT_LOCATIONS.STAKE_INPUT_VIEW, + tooltip_name: 'MetaMask Pool Estimated Rewards', + }, + })} + isLoading={isLoadingVaultApyAverages} + /> + )} </View> <QuickAmounts amounts={percentageOptions} @@ -239,7 +256,6 @@ const StakeInputView = () => { properties: { location: EVENT_LOCATIONS.STAKE_INPUT_VIEW, amount: value, - // onMaxPress is called instead when it's defined and the max is clicked. is_max: false, mode: isEth ? 'native' : 'fiat', }, diff --git a/app/components/UI/Stake/Views/StakeInputView/StakeInputView.types.ts b/app/components/UI/Stake/Views/StakeInputView/StakeInputView.types.ts new file mode 100644 index 000000000000..cd79091b20b4 --- /dev/null +++ b/app/components/UI/Stake/Views/StakeInputView/StakeInputView.types.ts @@ -0,0 +1,22 @@ +import { RouteProp } from '@react-navigation/native'; +import { TokenI } from '../../../Tokens/types'; +import { strings } from '../../../../../../locales/i18n'; + +export enum STAKE_INPUT_VIEW_ACTIONS { + STAKE = 'STAKE', + LEND = 'LEND', +} + +export const STAKE_INPUT_ACTION_TO_LABEL_MAP = { + [STAKE_INPUT_VIEW_ACTIONS.STAKE]: strings('stake.stake'), + [STAKE_INPUT_VIEW_ACTIONS.LEND]: strings('stake.deposit'), +}; + +interface StakeInputViewRouteParams { + token: TokenI; + action: STAKE_INPUT_VIEW_ACTIONS; +} + +export interface StakeInputViewProps { + route: RouteProp<{ params: StakeInputViewRouteParams }, 'params'>; +} diff --git a/app/components/UI/Stake/Views/StakeInputView/__snapshots__/StakeInputView.test.tsx.snap b/app/components/UI/Stake/Views/StakeInputView/__snapshots__/StakeInputView.test.tsx.snap index d241b15276a4..b52756b9e0fd 100644 --- a/app/components/UI/Stake/Views/StakeInputView/__snapshots__/StakeInputView.test.tsx.snap +++ b/app/components/UI/Stake/Views/StakeInputView/__snapshots__/StakeInputView.test.tsx.snap @@ -1,1656 +1,2575 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP exports[`StakeInputView render matches snapshot 1`] = ` -<View +<RCTSafeAreaView style={ { "flex": 1, } } > - <RNCSafeAreaProvider - onInsetsChange={[Function]} + <View style={ [ { + "backgroundColor": "#ffffff", "flex": 1, }, - undefined, + { + "backgroundColor": "#ffffff", + "flex": 1, + "flexDirection": "column", + "justifyContent": "center", + }, ] } > <View - collapsable={false} - pointerEvents="box-none" style={ { - "zIndex": 1, + "alignItems": "center", + "backgroundColor": "#ffffff", + "flex": 1, + "gap": 16, + "justifyContent": "center", } } > + <View> + <Text + accessibilityRole="text" + style={ + { + "color": "#141618", + "fontFamily": "EuclidCircularB-Regular", + "fontSize": 12, + "fontWeight": "400", + "letterSpacing": 0, + "lineHeight": 20, + } + } + > + Balance + : + 1.5 ETH + </Text> + </View> <View - accessibilityElementsHidden={false} - importantForAccessibility="auto" - onLayout={[Function]} - pointerEvents="box-none" - style={null} + style={ + { + "alignItems": "center", + "flexDirection": "row", + "gap": 4, + "justifyContent": "center", + } + } > - <View - collapsable={false} - pointerEvents="box-none" + <Text + accessibilityRole="text" style={ { - "bottom": 0, - "left": 0, - "opacity": 1, - "position": "absolute", - "right": 0, - "top": 0, - "zIndex": 0, + "color": "#141618", + "fontFamily": "EuclidCircularB-Bold", + "fontSize": 32, + "fontWeight": "700", + "letterSpacing": 0, + "lineHeight": 40, } } > - <View - collapsable={false} - style={ - { - "backgroundColor": "#ffffff", - "borderBottomColor": "rgb(216, 216, 216)", - "flex": 1, - "shadowColor": "rgb(216, 216, 216)", - "shadowOffset": null, - "shadowOpacity": 0.85, - "shadowRadius": 0, - } + 0 + </Text> + <Text + accessibilityRole="text" + style={ + { + "color": "#9fa6ae", + "fontFamily": "EuclidCircularB-Bold", + "fontSize": 32, + "fontWeight": "700", + "letterSpacing": 0, + "lineHeight": 40, } - /> - </View> - <View - collapsable={false} - pointerEvents="box-none" + } + > + ETH + </Text> + </View> + <View> + <TouchableOpacity + accessibilityRole="button" + accessible={true} + activeOpacity={1} + onPress={[Function]} style={ { - "height": 64, - "maxHeight": undefined, - "minHeight": undefined, - "opacity": undefined, - "transform": undefined, + "alignItems": "center", + "alignSelf": "flex-start", + "backgroundColor": "#ffffff", + "borderColor": "#BBC0C566", + "borderRadius": 16, + "borderWidth": 1, + "flexDirection": "row", + "height": 32, + "justifyContent": "center", + "paddingHorizontal": 16, } } > - <View - pointerEvents="none" + <Text + accessibilityRole="none" + style={ + { + "color": "#141618", + "fontFamily": "EuclidCircularB-Medium", + "fontSize": 14, + "fontWeight": "500", + "letterSpacing": 0, + "lineHeight": 22, + } + } + > + 0 USD + </Text> + <SvgMock + color="#141618" + height={16} + name="SwapVertical" style={ { - "height": 20, + "height": 16, + "marginLeft": 8, + "width": 16, } } + width={16} /> + </TouchableOpacity> + </View> + </View> + <View + style={ + { + "borderColor": "#BBC0C566", + "padding": 16, + "paddingBottom": 8, + } + } + > + <View + style={ + { + "alignItems": "center", + "backgroundColor": "#ffffff", + "borderColor": "#848c96", + "borderRadius": 8, + "borderWidth": 1, + "justifyContent": "center", + "paddingHorizontal": 16, + "paddingVertical": 8, + } + } + > + <View + style={ + { + "alignItems": "center", + "flexDirection": "row", + "justifyContent": "space-between", + "width": "100%", + } + } + > <View - pointerEvents="box-none" style={ { "alignItems": "center", - "flex": 1, "flexDirection": "row", - "justifyContent": "center", + "gap": 4, } } > - <View - collapsable={false} - pointerEvents="box-none" + <Text + accessibilityRole="text" style={ { - "alignItems": "flex-start", - "bottom": 0, - "justifyContent": "center", - "left": 0, - "opacity": 1, - "position": "absolute", - "top": 0, - } - } - /> - <View - collapsable={false} - pointerEvents="box-none" - style={ - { - "marginHorizontal": 72, - "opacity": 1, + "color": "#141618", + "fontFamily": "EuclidCircularB-Medium", + "fontSize": 14, + "fontWeight": "500", + "letterSpacing": 0, + "lineHeight": 22, } } > - <View + MetaMask Pool + </Text> + <TouchableOpacity + accessibilityLabel="Learn More" + onPress={[Function]} + > + <SvgMock + color="#9fa6ae" + height={16} + name="Question" style={ { - "alignItems": "center", + "height": 16, + "width": 16, } } - > - <Text - accessibilityRole="text" - style={ - { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", - "fontSize": 18, - "fontWeight": "700", - "letterSpacing": 0, - "lineHeight": 24, - } - } - > - Stake ETH - </Text> - </View> - </View> - <View - collapsable={false} - pointerEvents="box-none" + width={16} + /> + </TouchableOpacity> + </View> + <View + style={ + { + "alignItems": "flex-end", + } + } + > + <Text + accessibilityRole="text" style={ { - "alignItems": "flex-end", - "bottom": 0, - "justifyContent": "center", - "opacity": 1, - "position": "absolute", - "right": 0, - "top": 0, + "color": "#1c8234", + "fontFamily": "EuclidCircularB-Medium", + "fontSize": 14, + "fontWeight": "500", + "letterSpacing": 0, + "lineHeight": 22, } } > - <TouchableOpacity - onPress={[Function]} - style={ - { - "paddingHorizontal": 18, - "paddingVertical": 8, - } + 3.3% + </Text> + <Text + accessibilityRole="text" + style={ + { + "color": "#6a737d", + "fontFamily": "EuclidCircularB-Medium", + "fontSize": 12, + "fontWeight": "500", + "letterSpacing": 0, + "lineHeight": 20, } - > - <Text - style={ - { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, - "fontWeight": "400", - } - } - > - Cancel - </Text> - </TouchableOpacity> - </View> + } + > + Estimated annual rewards + </Text> </View> </View> </View> </View> - <RNSScreenContainer - onLayout={[Function]} + <View style={ { - "flex": 1, + "alignItems": "center", + "backgroundColor": "#ffffff", + "flexDirection": "row", + "gap": 8, + "justifyContent": "center", + "padding": 16, } } > - <RNSScreen - activityState={2} - collapsable={false} - gestureResponseDistance={ + <TouchableOpacity + accessibilityRole="button" + accessible={true} + activeOpacity={1} + onPress={[Function]} + style={ { - "bottom": -1, - "end": -1, - "start": -1, - "top": -1, + "alignItems": "center", + "alignSelf": "stretch", + "backgroundColor": "#ffffff", + "borderColor": "#848c96", + "borderRadius": 20, + "borderWidth": 1, + "flex": 1, + "flexDirection": "row", + "height": 40, + "justifyContent": "center", + "paddingHorizontal": 16, } } - pointerEvents="box-none" + > + <Text + accessibilityRole="none" + style={ + { + "color": "#141618", + "fontFamily": "EuclidCircularB-Medium", + "fontSize": 14, + "fontWeight": "500", + "letterSpacing": 0, + "lineHeight": 22, + } + } + > + 25% + </Text> + </TouchableOpacity> + <TouchableOpacity + accessibilityRole="button" + accessible={true} + activeOpacity={1} + onPress={[Function]} style={ { - "bottom": 0, - "left": 0, - "position": "absolute", - "right": 0, - "top": 0, + "alignItems": "center", + "alignSelf": "stretch", + "backgroundColor": "#ffffff", + "borderColor": "#848c96", + "borderRadius": 20, + "borderWidth": 1, + "flex": 1, + "flexDirection": "row", + "height": 40, + "justifyContent": "center", + "paddingHorizontal": 16, } } > - <View - collapsable={false} + <Text + accessibilityRole="none" + style={ + { + "color": "#141618", + "fontFamily": "EuclidCircularB-Medium", + "fontSize": 14, + "fontWeight": "500", + "letterSpacing": 0, + "lineHeight": 22, + } + } + > + 50% + </Text> + </TouchableOpacity> + <TouchableOpacity + accessibilityRole="button" + accessible={true} + activeOpacity={1} + onPress={[Function]} + style={ + { + "alignItems": "center", + "alignSelf": "stretch", + "backgroundColor": "#ffffff", + "borderColor": "#848c96", + "borderRadius": 20, + "borderWidth": 1, + "flex": 1, + "flexDirection": "row", + "height": 40, + "justifyContent": "center", + "paddingHorizontal": 16, + } + } + > + <Text + accessibilityRole="none" + style={ + { + "color": "#141618", + "fontFamily": "EuclidCircularB-Medium", + "fontSize": 14, + "fontWeight": "500", + "letterSpacing": 0, + "lineHeight": 22, + } + } + > + 75% + </Text> + </TouchableOpacity> + <TouchableOpacity + accessibilityRole="button" + accessible={true} + activeOpacity={1} + onPress={[Function]} + style={ + { + "alignItems": "center", + "alignSelf": "stretch", + "backgroundColor": "#ffffff", + "borderColor": "#848c96", + "borderRadius": 20, + "borderWidth": 1, + "flex": 1, + "flexDirection": "row", + "height": 40, + "justifyContent": "center", + "paddingHorizontal": 16, + } + } + > + <SvgMock + color="#141618" + height={16} + name="Sparkle" style={ { - "opacity": 1, + "height": 16, + "marginRight": 8, + "width": 16, } } + width={16} /> - <View - accessibilityElementsHidden={false} - closing={false} - gestureVelocityImpact={0.3} - importantForAccessibility="auto" - onClose={[Function]} - onGestureBegin={[Function]} - onGestureCanceled={[Function]} - onGestureEnd={[Function]} - onOpen={[Function]} - onTransition={[Function]} - pointerEvents="box-none" + <Text + accessibilityRole="none" + style={ + { + "color": "#141618", + "fontFamily": "EuclidCircularB-Medium", + "fontSize": 14, + "fontWeight": "500", + "letterSpacing": 0, + "lineHeight": 22, + } + } + > + Max + </Text> + </TouchableOpacity> + </View> + <View + style={ + [ + { + "paddingHorizontal": 25, + }, + { + "paddingHorizontal": 24, + }, + ] + } + > + <View + style={ + { + "flexDirection": "row", + "justifyContent": "space-around", + } + } + > + <TouchableOpacity + accessibilityRole="button" + accessible={true} + onPress={[Function]} style={ [ { - "overflow": undefined, + "alignItems": "center", + "flex": 1, + "justifyContent": "center", + "paddingHorizontal": 20, + "paddingVertical": 12, }, + undefined, + ] + } + > + <Text + style={ + [ + { + "color": "#141618", + "fontFamily": "EuclidCircularB-Regular", + "fontSize": 30, + "fontWeight": "400", + "marginVertical": 2, + }, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + [ + { + "color": "#141618", + "fontSize": 30, + "textAlign": "center", + }, + undefined, + ], + ] + } + > + 1 + </Text> + </TouchableOpacity> + <TouchableOpacity + accessibilityRole="button" + accessible={true} + onPress={[Function]} + style={ + [ { - "bottom": 0, - "left": 0, - "position": "absolute", - "right": 0, - "top": 0, + "alignItems": "center", + "flex": 1, + "justifyContent": "center", + "paddingHorizontal": 20, + "paddingVertical": 12, }, + undefined, ] } - transitionSpec={ - { - "close": { - "animation": "spring", - "config": { - "damping": 500, - "mass": 3, - "overshootClamping": true, - "restDisplacementThreshold": 10, - "restSpeedThreshold": 10, - "stiffness": 1000, + > + <Text + style={ + [ + { + "color": "#141618", + "fontFamily": "EuclidCircularB-Regular", + "fontSize": 30, + "fontWeight": "400", + "marginVertical": 2, }, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + [ + { + "color": "#141618", + "fontSize": 30, + "textAlign": "center", + }, + undefined, + ], + ] + } + > + 2 + </Text> + </TouchableOpacity> + <TouchableOpacity + accessibilityRole="button" + accessible={true} + onPress={[Function]} + style={ + [ + { + "alignItems": "center", + "flex": 1, + "justifyContent": "center", + "paddingHorizontal": 20, + "paddingVertical": 12, }, - "open": { - "animation": "spring", - "config": { - "damping": 500, - "mass": 3, - "overshootClamping": true, - "restDisplacementThreshold": 10, - "restSpeedThreshold": 10, - "stiffness": 1000, + undefined, + ] + } + > + <Text + style={ + [ + { + "color": "#141618", + "fontFamily": "EuclidCircularB-Regular", + "fontSize": 30, + "fontWeight": "400", + "marginVertical": 2, }, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + [ + { + "color": "#141618", + "fontSize": 30, + "textAlign": "center", + }, + undefined, + ], + ] + } + > + 3 + </Text> + </TouchableOpacity> + </View> + <View + style={ + { + "flexDirection": "row", + "justifyContent": "space-around", + } + } + > + <TouchableOpacity + accessibilityRole="button" + accessible={true} + onPress={[Function]} + style={ + [ + { + "alignItems": "center", + "flex": 1, + "justifyContent": "center", + "paddingHorizontal": 20, + "paddingVertical": 12, }, + undefined, + ] + } + > + <Text + style={ + [ + { + "color": "#141618", + "fontFamily": "EuclidCircularB-Regular", + "fontSize": 30, + "fontWeight": "400", + "marginVertical": 2, + }, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + [ + { + "color": "#141618", + "fontSize": 30, + "textAlign": "center", + }, + undefined, + ], + ] } + > + 4 + </Text> + </TouchableOpacity> + <TouchableOpacity + accessibilityRole="button" + accessible={true} + onPress={[Function]} + style={ + [ + { + "alignItems": "center", + "flex": 1, + "justifyContent": "center", + "paddingHorizontal": 20, + "paddingVertical": 12, + }, + undefined, + ] } > - <View - collapsable={false} - needsOffscreenAlphaCompositing={false} - pointerEvents="box-none" + <Text style={ + [ + { + "color": "#141618", + "fontFamily": "EuclidCircularB-Regular", + "fontSize": 30, + "fontWeight": "400", + "marginVertical": 2, + }, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + [ + { + "color": "#141618", + "fontSize": 30, + "textAlign": "center", + }, + undefined, + ], + ] + } + > + 5 + </Text> + </TouchableOpacity> + <TouchableOpacity + accessibilityRole="button" + accessible={true} + onPress={[Function]} + style={ + [ { + "alignItems": "center", "flex": 1, - } + "justifyContent": "center", + "paddingHorizontal": 20, + "paddingVertical": 12, + }, + undefined, + ] + } + > + <Text + style={ + [ + { + "color": "#141618", + "fontFamily": "EuclidCircularB-Regular", + "fontSize": 30, + "fontWeight": "400", + "marginVertical": 2, + }, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + [ + { + "color": "#141618", + "fontSize": 30, + "textAlign": "center", + }, + undefined, + ], + ] } > - <View - collapsable={false} - onGestureHandlerEvent={[Function]} - onGestureHandlerStateChange={[Function]} - style={ + 6 + </Text> + </TouchableOpacity> + </View> + <View + style={ + { + "flexDirection": "row", + "justifyContent": "space-around", + } + } + > + <TouchableOpacity + accessibilityRole="button" + accessible={true} + onPress={[Function]} + style={ + [ + { + "alignItems": "center", + "flex": 1, + "justifyContent": "center", + "paddingHorizontal": 20, + "paddingVertical": 12, + }, + undefined, + ] + } + > + <Text + style={ + [ { - "flex": 1, - "transform": [ - { - "translateX": 0, - }, - { - "translateX": 0, - }, - ], - } - } - > - <View - collapsable={false} - pointerEvents="none" - style={ + "color": "#141618", + "fontFamily": "EuclidCircularB-Regular", + "fontSize": 30, + "fontWeight": "400", + "marginVertical": 2, + }, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + [ { - "backgroundColor": "rgb(242, 242, 242)", - "bottom": 0, - "left": 0, - "position": "absolute", - "shadowColor": "#000", - "shadowOffset": { - "height": 1, - "width": -1, - }, - "shadowOpacity": 0.3, - "shadowRadius": 5, - "top": 0, - "width": 3, - } - } - /> - <View - style={ - [ - { - "flex": 1, - "overflow": "hidden", - }, - [ - { - "backgroundColor": "rgb(242, 242, 242)", - }, - undefined, - ], - ] - } - > - <View - style={ - { - "flex": 1, - "flexDirection": "column-reverse", - } - } - > - <View - style={ - { - "flex": 1, - } - } - > - <RCTSafeAreaView - style={ - { - "flex": 1, - } - } - > - <View - style={ - [ - { - "backgroundColor": "#ffffff", - "flex": 1, - }, - { - "backgroundColor": "#ffffff", - "flex": 1, - "flexDirection": "column", - "justifyContent": "center", - }, - ] - } - > - <View - style={ - { - "alignItems": "center", - "backgroundColor": "#ffffff", - "flex": 1, - "gap": 16, - "justifyContent": "center", - } - } - > - <View> - <Text - accessibilityRole="text" - style={ - { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, - "fontWeight": "400", - "letterSpacing": 0, - "lineHeight": 20, - } - } - > - Balance - : - 1.5 ETH - </Text> - </View> - <View - style={ - { - "alignItems": "center", - "flexDirection": "row", - "gap": 4, - "justifyContent": "center", - } - } - > - <Text - accessibilityRole="text" - style={ - { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", - "fontSize": 32, - "fontWeight": "700", - "letterSpacing": 0, - "lineHeight": 40, - } - } - > - 0 - </Text> - <Text - accessibilityRole="text" - style={ - { - "color": "#9fa6ae", - "fontFamily": "EuclidCircularB-Bold", - "fontSize": 32, - "fontWeight": "700", - "letterSpacing": 0, - "lineHeight": 40, - } - } - > - ETH - </Text> - </View> - <View> - <TouchableOpacity - accessibilityRole="button" - accessible={true} - activeOpacity={1} - onPress={[Function]} - style={ - { - "alignItems": "center", - "alignSelf": "flex-start", - "backgroundColor": "#ffffff", - "borderColor": "#BBC0C566", - "borderRadius": 16, - "borderWidth": 1, - "flexDirection": "row", - "height": 32, - "justifyContent": "center", - "paddingHorizontal": 16, - } - } - > - <Text - accessibilityRole="none" - style={ - { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, - "fontWeight": "500", - "letterSpacing": 0, - "lineHeight": 22, - } - } - > - 0 USD - </Text> - <SvgMock - color="#141618" - height={16} - name="SwapVertical" - style={ - { - "height": 16, - "marginLeft": 8, - "width": 16, - } - } - width={16} - /> - </TouchableOpacity> - </View> - </View> - <View - style={ - { - "borderColor": "#BBC0C566", - "padding": 16, - "paddingBottom": 8, - } - } - > - <View - style={ - { - "alignItems": "center", - "backgroundColor": "#ffffff", - "borderColor": "#848c96", - "borderRadius": 8, - "borderWidth": 1, - "justifyContent": "center", - "paddingHorizontal": 16, - "paddingVertical": 8, - } - } - > - <View - style={ - { - "alignItems": "center", - "flexDirection": "row", - "justifyContent": "space-between", - "width": "100%", - } - } - > - <View - style={ - { - "alignItems": "center", - "flexDirection": "row", - "gap": 4, - } - } - > - <Text - accessibilityRole="text" - style={ - { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, - "fontWeight": "500", - "letterSpacing": 0, - "lineHeight": 22, - } - } - > - MetaMask Pool - </Text> - <TouchableOpacity - accessibilityLabel="Learn More" - onPress={[Function]} - > - <SvgMock - color="#9fa6ae" - height={16} - name="Question" - style={ - { - "height": 16, - "width": 16, - } - } - width={16} - /> - </TouchableOpacity> - </View> - <View - style={ - { - "alignItems": "flex-end", - } - } - > - <Text - accessibilityRole="text" - style={ - { - "color": "#1c8234", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, - "fontWeight": "500", - "letterSpacing": 0, - "lineHeight": 22, - } - } - > - 3.3% - </Text> - <Text - accessibilityRole="text" - style={ - { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 12, - "fontWeight": "500", - "letterSpacing": 0, - "lineHeight": 20, - } - } - > - Estimated annual rewards - </Text> - </View> - </View> - </View> - </View> - <View - style={ - { - "alignItems": "center", - "backgroundColor": "#ffffff", - "flexDirection": "row", - "gap": 8, - "justifyContent": "center", - "padding": 16, - } - } - > - <TouchableOpacity - accessibilityRole="button" - accessible={true} - activeOpacity={1} - onPress={[Function]} - style={ - { - "alignItems": "center", - "alignSelf": "stretch", - "backgroundColor": "#ffffff", - "borderColor": "#848c96", - "borderRadius": 20, - "borderWidth": 1, - "flex": 1, - "flexDirection": "row", - "height": 40, - "justifyContent": "center", - "paddingHorizontal": 16, - } - } - > - <Text - accessibilityRole="none" - style={ - { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, - "fontWeight": "500", - "letterSpacing": 0, - "lineHeight": 22, - } - } - > - 25% - </Text> - </TouchableOpacity> - <TouchableOpacity - accessibilityRole="button" - accessible={true} - activeOpacity={1} - onPress={[Function]} - style={ - { - "alignItems": "center", - "alignSelf": "stretch", - "backgroundColor": "#ffffff", - "borderColor": "#848c96", - "borderRadius": 20, - "borderWidth": 1, - "flex": 1, - "flexDirection": "row", - "height": 40, - "justifyContent": "center", - "paddingHorizontal": 16, - } - } - > - <Text - accessibilityRole="none" - style={ - { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, - "fontWeight": "500", - "letterSpacing": 0, - "lineHeight": 22, - } - } - > - 50% - </Text> - </TouchableOpacity> - <TouchableOpacity - accessibilityRole="button" - accessible={true} - activeOpacity={1} - onPress={[Function]} - style={ - { - "alignItems": "center", - "alignSelf": "stretch", - "backgroundColor": "#ffffff", - "borderColor": "#848c96", - "borderRadius": 20, - "borderWidth": 1, - "flex": 1, - "flexDirection": "row", - "height": 40, - "justifyContent": "center", - "paddingHorizontal": 16, - } - } - > - <Text - accessibilityRole="none" - style={ - { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, - "fontWeight": "500", - "letterSpacing": 0, - "lineHeight": 22, - } - } - > - 75% - </Text> - </TouchableOpacity> - <TouchableOpacity - accessibilityRole="button" - accessible={true} - activeOpacity={1} - onPress={[Function]} - style={ - { - "alignItems": "center", - "alignSelf": "stretch", - "backgroundColor": "#ffffff", - "borderColor": "#848c96", - "borderRadius": 20, - "borderWidth": 1, - "flex": 1, - "flexDirection": "row", - "height": 40, - "justifyContent": "center", - "paddingHorizontal": 16, - } - } - > - <SvgMock - color="#141618" - height={16} - name="Sparkle" - style={ - { - "height": 16, - "marginRight": 8, - "width": 16, - } - } - width={16} - /> - <Text - accessibilityRole="none" - style={ - { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, - "fontWeight": "500", - "letterSpacing": 0, - "lineHeight": 22, - } - } - > - Max - </Text> - </TouchableOpacity> - </View> - <View - style={ - [ - { - "paddingHorizontal": 25, - }, - { - "paddingHorizontal": 24, - }, - ] - } - > - <View - style={ - { - "flexDirection": "row", - "justifyContent": "space-around", - } - } - > - <TouchableOpacity - accessibilityRole="button" - accessible={true} - onPress={[Function]} - style={ - [ - { - "alignItems": "center", - "flex": 1, - "justifyContent": "center", - "paddingHorizontal": 20, - "paddingVertical": 12, - }, - undefined, - ] - } - > - <Text - style={ - [ - { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 30, - "fontWeight": "400", - "marginVertical": 2, - }, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - [ - { - "color": "#141618", - "fontSize": 30, - "textAlign": "center", - }, - undefined, - ], - ] - } - > - 1 - </Text> - </TouchableOpacity> - <TouchableOpacity - accessibilityRole="button" - accessible={true} - onPress={[Function]} - style={ - [ - { - "alignItems": "center", - "flex": 1, - "justifyContent": "center", - "paddingHorizontal": 20, - "paddingVertical": 12, - }, - undefined, - ] - } - > - <Text - style={ - [ - { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 30, - "fontWeight": "400", - "marginVertical": 2, - }, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - [ - { - "color": "#141618", - "fontSize": 30, - "textAlign": "center", - }, - undefined, - ], - ] - } - > - 2 - </Text> - </TouchableOpacity> - <TouchableOpacity - accessibilityRole="button" - accessible={true} - onPress={[Function]} - style={ - [ - { - "alignItems": "center", - "flex": 1, - "justifyContent": "center", - "paddingHorizontal": 20, - "paddingVertical": 12, - }, - undefined, - ] - } - > - <Text - style={ - [ - { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 30, - "fontWeight": "400", - "marginVertical": 2, - }, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - [ - { - "color": "#141618", - "fontSize": 30, - "textAlign": "center", - }, - undefined, - ], - ] - } - > - 3 - </Text> - </TouchableOpacity> - </View> - <View - style={ - { - "flexDirection": "row", - "justifyContent": "space-around", - } - } - > - <TouchableOpacity - accessibilityRole="button" - accessible={true} - onPress={[Function]} - style={ - [ - { - "alignItems": "center", - "flex": 1, - "justifyContent": "center", - "paddingHorizontal": 20, - "paddingVertical": 12, - }, - undefined, - ] - } - > - <Text - style={ - [ - { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 30, - "fontWeight": "400", - "marginVertical": 2, - }, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - [ - { - "color": "#141618", - "fontSize": 30, - "textAlign": "center", - }, - undefined, - ], - ] - } - > - 4 - </Text> - </TouchableOpacity> - <TouchableOpacity - accessibilityRole="button" - accessible={true} - onPress={[Function]} - style={ - [ - { - "alignItems": "center", - "flex": 1, - "justifyContent": "center", - "paddingHorizontal": 20, - "paddingVertical": 12, - }, - undefined, - ] - } - > - <Text - style={ - [ - { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 30, - "fontWeight": "400", - "marginVertical": 2, - }, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - [ - { - "color": "#141618", - "fontSize": 30, - "textAlign": "center", - }, - undefined, - ], - ] - } - > - 5 - </Text> - </TouchableOpacity> - <TouchableOpacity - accessibilityRole="button" - accessible={true} - onPress={[Function]} - style={ - [ - { - "alignItems": "center", - "flex": 1, - "justifyContent": "center", - "paddingHorizontal": 20, - "paddingVertical": 12, - }, - undefined, - ] - } - > - <Text - style={ - [ - { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 30, - "fontWeight": "400", - "marginVertical": 2, - }, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - [ - { - "color": "#141618", - "fontSize": 30, - "textAlign": "center", - }, - undefined, - ], - ] - } - > - 6 - </Text> - </TouchableOpacity> - </View> - <View - style={ - { - "flexDirection": "row", - "justifyContent": "space-around", - } - } - > - <TouchableOpacity - accessibilityRole="button" - accessible={true} - onPress={[Function]} - style={ - [ - { - "alignItems": "center", - "flex": 1, - "justifyContent": "center", - "paddingHorizontal": 20, - "paddingVertical": 12, - }, - undefined, - ] - } - > - <Text - style={ - [ - { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 30, - "fontWeight": "400", - "marginVertical": 2, - }, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - [ - { - "color": "#141618", - "fontSize": 30, - "textAlign": "center", - }, - undefined, - ], - ] - } - > - 7 - </Text> - </TouchableOpacity> - <TouchableOpacity - accessibilityRole="button" - accessible={true} - onPress={[Function]} - style={ - [ - { - "alignItems": "center", - "flex": 1, - "justifyContent": "center", - "paddingHorizontal": 20, - "paddingVertical": 12, - }, - undefined, - ] - } - > - <Text - style={ - [ - { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 30, - "fontWeight": "400", - "marginVertical": 2, - }, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - [ - { - "color": "#141618", - "fontSize": 30, - "textAlign": "center", - }, - undefined, - ], - ] - } - > - 8 - </Text> - </TouchableOpacity> - <TouchableOpacity - accessibilityRole="button" - accessible={true} - onPress={[Function]} - style={ - [ - { - "alignItems": "center", - "flex": 1, - "justifyContent": "center", - "paddingHorizontal": 20, - "paddingVertical": 12, - }, - undefined, - ] - } - > - <Text - style={ - [ - { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 30, - "fontWeight": "400", - "marginVertical": 2, - }, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - [ - { - "color": "#141618", - "fontSize": 30, - "textAlign": "center", - }, - undefined, - ], - ] - } - > - 9 - </Text> - </TouchableOpacity> - </View> - <View - style={ - { - "flexDirection": "row", - "justifyContent": "space-around", - } - } - > - <TouchableOpacity - onPress={[Function]} - style={ - [ - { - "alignItems": "center", - "flex": 1, - "justifyContent": "center", - "paddingHorizontal": 20, - "paddingVertical": 12, - }, - undefined, - ] - } - > - <Text - style={ - [ - { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 30, - "fontWeight": "400", - "marginVertical": 2, - }, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - [ - { - "color": "#141618", - "fontSize": 30, - "textAlign": "center", - }, - undefined, - ], - ] - } - > - . - </Text> - </TouchableOpacity> - <TouchableOpacity - accessibilityRole="button" - accessible={true} - onPress={[Function]} - style={ - [ - { - "alignItems": "center", - "flex": 1, - "justifyContent": "center", - "paddingHorizontal": 20, - "paddingVertical": 12, - }, - undefined, - ] - } - > - <Text - style={ - [ - { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 30, - "fontWeight": "400", - "marginVertical": 2, - }, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - undefined, - [ - { - "color": "#141618", - "fontSize": 30, - "textAlign": "center", - }, - undefined, - ], - ] - } - > - 0 - </Text> - </TouchableOpacity> - <TouchableOpacity - delayLongPress={500} - onLongPress={[Function]} - onPress={[Function]} - style={ - [ - { - "alignItems": "center", - "flex": 1, - "justifyContent": "center", - "paddingHorizontal": 20, - "paddingVertical": 12, - }, - undefined, - ] - } - testID="keypad-delete-button" - > - <Text - allowFontScaling={false} - style={ - [ - { - "color": undefined, - "fontSize": 12, - }, - [ - { - "color": "#141618", - "fontSize": 30, - "textAlign": "center", - }, - { - "fontSize": 25, - "marginTop": 5, - }, - ], - { - "fontFamily": "Ionicons", - "fontStyle": "normal", - "fontWeight": "normal", - }, - {}, - ] - } - > -  - </Text> - </TouchableOpacity> - </View> - </View> - <View - style={ - { - "padding": 16, - } - } - > - <TouchableOpacity - accessibilityRole="button" - accessible={true} - activeOpacity={1} - disabled={true} - onPress={[Function]} - onPressIn={[Function]} - onPressOut={[Function]} - style={ - { - "alignItems": "center", - "alignSelf": "stretch", - "backgroundColor": "#0376c9", - "borderRadius": 24, - "flexDirection": "row", - "height": 48, - "justifyContent": "center", - "opacity": 0.5, - "paddingHorizontal": 16, - } - } - > - <Text - accessibilityRole="text" - style={ - { - "color": "#ffffff", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, - "fontWeight": "500", - "letterSpacing": 0, - "lineHeight": 22, - } - } - > - Enter amount - </Text> - </TouchableOpacity> - </View> - </View> - </RCTSafeAreaView> - </View> - </View> - </View> - </View> - </View> - </View> - </RNSScreen> - </RNSScreenContainer> - </RNCSafeAreaProvider> -</View> + "color": "#141618", + "fontSize": 30, + "textAlign": "center", + }, + undefined, + ], + ] + } + > + 7 + </Text> + </TouchableOpacity> + <TouchableOpacity + accessibilityRole="button" + accessible={true} + onPress={[Function]} + style={ + [ + { + "alignItems": "center", + "flex": 1, + "justifyContent": "center", + "paddingHorizontal": 20, + "paddingVertical": 12, + }, + undefined, + ] + } + > + <Text + style={ + [ + { + "color": "#141618", + "fontFamily": "EuclidCircularB-Regular", + "fontSize": 30, + "fontWeight": "400", + "marginVertical": 2, + }, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + [ + { + "color": "#141618", + "fontSize": 30, + "textAlign": "center", + }, + undefined, + ], + ] + } + > + 8 + </Text> + </TouchableOpacity> + <TouchableOpacity + accessibilityRole="button" + accessible={true} + onPress={[Function]} + style={ + [ + { + "alignItems": "center", + "flex": 1, + "justifyContent": "center", + "paddingHorizontal": 20, + "paddingVertical": 12, + }, + undefined, + ] + } + > + <Text + style={ + [ + { + "color": "#141618", + "fontFamily": "EuclidCircularB-Regular", + "fontSize": 30, + "fontWeight": "400", + "marginVertical": 2, + }, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + [ + { + "color": "#141618", + "fontSize": 30, + "textAlign": "center", + }, + undefined, + ], + ] + } + > + 9 + </Text> + </TouchableOpacity> + </View> + <View + style={ + { + "flexDirection": "row", + "justifyContent": "space-around", + } + } + > + <TouchableOpacity + onPress={[Function]} + style={ + [ + { + "alignItems": "center", + "flex": 1, + "justifyContent": "center", + "paddingHorizontal": 20, + "paddingVertical": 12, + }, + undefined, + ] + } + > + <Text + style={ + [ + { + "color": "#141618", + "fontFamily": "EuclidCircularB-Regular", + "fontSize": 30, + "fontWeight": "400", + "marginVertical": 2, + }, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + [ + { + "color": "#141618", + "fontSize": 30, + "textAlign": "center", + }, + undefined, + ], + ] + } + > + . + </Text> + </TouchableOpacity> + <TouchableOpacity + accessibilityRole="button" + accessible={true} + onPress={[Function]} + style={ + [ + { + "alignItems": "center", + "flex": 1, + "justifyContent": "center", + "paddingHorizontal": 20, + "paddingVertical": 12, + }, + undefined, + ] + } + > + <Text + style={ + [ + { + "color": "#141618", + "fontFamily": "EuclidCircularB-Regular", + "fontSize": 30, + "fontWeight": "400", + "marginVertical": 2, + }, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + [ + { + "color": "#141618", + "fontSize": 30, + "textAlign": "center", + }, + undefined, + ], + ] + } + > + 0 + </Text> + </TouchableOpacity> + <TouchableOpacity + delayLongPress={500} + onLongPress={[Function]} + onPress={[Function]} + style={ + [ + { + "alignItems": "center", + "flex": 1, + "justifyContent": "center", + "paddingHorizontal": 20, + "paddingVertical": 12, + }, + undefined, + ] + } + testID="keypad-delete-button" + > + <Text + allowFontScaling={false} + style={ + [ + { + "color": undefined, + "fontSize": 12, + }, + [ + { + "color": "#141618", + "fontSize": 30, + "textAlign": "center", + }, + { + "fontSize": 25, + "marginTop": 5, + }, + ], + { + "fontFamily": "Ionicons", + "fontStyle": "normal", + "fontWeight": "normal", + }, + {}, + ] + } + > +  + </Text> + </TouchableOpacity> + </View> + </View> + <View + style={ + { + "padding": 16, + } + } + > + <TouchableOpacity + accessibilityRole="button" + accessible={true} + activeOpacity={1} + disabled={true} + onPress={[Function]} + onPressIn={[Function]} + onPressOut={[Function]} + style={ + { + "alignItems": "center", + "alignSelf": "stretch", + "backgroundColor": "#0376c9", + "borderRadius": 24, + "flexDirection": "row", + "height": 48, + "justifyContent": "center", + "opacity": 0.5, + "paddingHorizontal": 16, + } + } + > + <Text + accessibilityRole="text" + style={ + { + "color": "#ffffff", + "fontFamily": "EuclidCircularB-Medium", + "fontSize": 14, + "fontWeight": "500", + "letterSpacing": 0, + "lineHeight": 22, + } + } + > + Enter amount + </Text> + </TouchableOpacity> + </View> + </View> +</RCTSafeAreaView> +`; + +exports[`StakeInputView when values are entered in the keypad updates ETH and fiat values 1`] = ` +<RCTSafeAreaView + style={ + { + "flex": 1, + } + } +> + <View + style={ + [ + { + "backgroundColor": "#ffffff", + "flex": 1, + }, + { + "backgroundColor": "#ffffff", + "flex": 1, + "flexDirection": "column", + "justifyContent": "center", + }, + ] + } + > + <View + style={ + { + "alignItems": "center", + "backgroundColor": "#ffffff", + "flex": 1, + "gap": 16, + "justifyContent": "center", + } + } + > + <View> + <Text + accessibilityRole="text" + style={ + { + "color": "#141618", + "fontFamily": "EuclidCircularB-Regular", + "fontSize": 12, + "fontWeight": "400", + "letterSpacing": 0, + "lineHeight": 20, + } + } + > + Balance + : + 1.5 ETH + </Text> + </View> + <View + style={ + { + "alignItems": "center", + "flexDirection": "row", + "gap": 4, + "justifyContent": "center", + } + } + > + <Text + accessibilityRole="text" + style={ + { + "color": "#141618", + "fontFamily": "EuclidCircularB-Bold", + "fontSize": 32, + "fontWeight": "700", + "letterSpacing": 0, + "lineHeight": 40, + } + } + > + 0 + </Text> + <Text + accessibilityRole="text" + style={ + { + "color": "#9fa6ae", + "fontFamily": "EuclidCircularB-Bold", + "fontSize": 32, + "fontWeight": "700", + "letterSpacing": 0, + "lineHeight": 40, + } + } + > + ETH + </Text> + </View> + <View> + <TouchableOpacity + accessibilityRole="button" + accessible={true} + activeOpacity={1} + onPress={[Function]} + style={ + { + "alignItems": "center", + "alignSelf": "flex-start", + "backgroundColor": "#ffffff", + "borderColor": "#BBC0C566", + "borderRadius": 16, + "borderWidth": 1, + "flexDirection": "row", + "height": 32, + "justifyContent": "center", + "paddingHorizontal": 16, + } + } + > + <Text + accessibilityRole="none" + style={ + { + "color": "#141618", + "fontFamily": "EuclidCircularB-Medium", + "fontSize": 14, + "fontWeight": "500", + "letterSpacing": 0, + "lineHeight": 22, + } + } + > + 0 USD + </Text> + <SvgMock + color="#141618" + height={16} + name="SwapVertical" + style={ + { + "height": 16, + "marginLeft": 8, + "width": 16, + } + } + width={16} + /> + </TouchableOpacity> + </View> + </View> + <View + style={ + { + "borderColor": "#BBC0C566", + "padding": 16, + "paddingBottom": 8, + } + } + > + <View + style={ + { + "alignItems": "center", + "backgroundColor": "#ffffff", + "borderColor": "#848c96", + "borderRadius": 8, + "borderWidth": 1, + "justifyContent": "center", + "paddingHorizontal": 16, + "paddingVertical": 8, + } + } + > + <View + style={ + { + "alignItems": "center", + "flexDirection": "row", + "justifyContent": "space-between", + "width": "100%", + } + } + > + <View + style={ + { + "alignItems": "center", + "flexDirection": "row", + "gap": 4, + } + } + > + <Text + accessibilityRole="text" + style={ + { + "color": "#141618", + "fontFamily": "EuclidCircularB-Medium", + "fontSize": 14, + "fontWeight": "500", + "letterSpacing": 0, + "lineHeight": 22, + } + } + > + MetaMask Pool + </Text> + <TouchableOpacity + accessibilityLabel="Learn More" + onPress={[Function]} + > + <SvgMock + color="#9fa6ae" + height={16} + name="Question" + style={ + { + "height": 16, + "width": 16, + } + } + width={16} + /> + </TouchableOpacity> + </View> + <View + style={ + { + "alignItems": "flex-end", + } + } + > + <Text + accessibilityRole="text" + style={ + { + "color": "#1c8234", + "fontFamily": "EuclidCircularB-Medium", + "fontSize": 14, + "fontWeight": "500", + "letterSpacing": 0, + "lineHeight": 22, + } + } + > + 3.3% + </Text> + <Text + accessibilityRole="text" + style={ + { + "color": "#6a737d", + "fontFamily": "EuclidCircularB-Medium", + "fontSize": 12, + "fontWeight": "500", + "letterSpacing": 0, + "lineHeight": 20, + } + } + > + Estimated annual rewards + </Text> + </View> + </View> + </View> + </View> + <View + style={ + { + "alignItems": "center", + "backgroundColor": "#ffffff", + "flexDirection": "row", + "gap": 8, + "justifyContent": "center", + "padding": 16, + } + } + > + <TouchableOpacity + accessibilityRole="button" + accessible={true} + activeOpacity={1} + onPress={[Function]} + style={ + { + "alignItems": "center", + "alignSelf": "stretch", + "backgroundColor": "#ffffff", + "borderColor": "#848c96", + "borderRadius": 20, + "borderWidth": 1, + "flex": 1, + "flexDirection": "row", + "height": 40, + "justifyContent": "center", + "paddingHorizontal": 16, + } + } + > + <Text + accessibilityRole="none" + style={ + { + "color": "#141618", + "fontFamily": "EuclidCircularB-Medium", + "fontSize": 14, + "fontWeight": "500", + "letterSpacing": 0, + "lineHeight": 22, + } + } + > + 25% + </Text> + </TouchableOpacity> + <TouchableOpacity + accessibilityRole="button" + accessible={true} + activeOpacity={1} + onPress={[Function]} + style={ + { + "alignItems": "center", + "alignSelf": "stretch", + "backgroundColor": "#ffffff", + "borderColor": "#848c96", + "borderRadius": 20, + "borderWidth": 1, + "flex": 1, + "flexDirection": "row", + "height": 40, + "justifyContent": "center", + "paddingHorizontal": 16, + } + } + > + <Text + accessibilityRole="none" + style={ + { + "color": "#141618", + "fontFamily": "EuclidCircularB-Medium", + "fontSize": 14, + "fontWeight": "500", + "letterSpacing": 0, + "lineHeight": 22, + } + } + > + 50% + </Text> + </TouchableOpacity> + <TouchableOpacity + accessibilityRole="button" + accessible={true} + activeOpacity={1} + onPress={[Function]} + style={ + { + "alignItems": "center", + "alignSelf": "stretch", + "backgroundColor": "#ffffff", + "borderColor": "#848c96", + "borderRadius": 20, + "borderWidth": 1, + "flex": 1, + "flexDirection": "row", + "height": 40, + "justifyContent": "center", + "paddingHorizontal": 16, + } + } + > + <Text + accessibilityRole="none" + style={ + { + "color": "#141618", + "fontFamily": "EuclidCircularB-Medium", + "fontSize": 14, + "fontWeight": "500", + "letterSpacing": 0, + "lineHeight": 22, + } + } + > + 75% + </Text> + </TouchableOpacity> + <TouchableOpacity + accessibilityRole="button" + accessible={true} + activeOpacity={1} + onPress={[Function]} + style={ + { + "alignItems": "center", + "alignSelf": "stretch", + "backgroundColor": "#ffffff", + "borderColor": "#848c96", + "borderRadius": 20, + "borderWidth": 1, + "flex": 1, + "flexDirection": "row", + "height": 40, + "justifyContent": "center", + "paddingHorizontal": 16, + } + } + > + <SvgMock + color="#141618" + height={16} + name="Sparkle" + style={ + { + "height": 16, + "marginRight": 8, + "width": 16, + } + } + width={16} + /> + <Text + accessibilityRole="none" + style={ + { + "color": "#141618", + "fontFamily": "EuclidCircularB-Medium", + "fontSize": 14, + "fontWeight": "500", + "letterSpacing": 0, + "lineHeight": 22, + } + } + > + Max + </Text> + </TouchableOpacity> + </View> + <View + style={ + [ + { + "paddingHorizontal": 25, + }, + { + "paddingHorizontal": 24, + }, + ] + } + > + <View + style={ + { + "flexDirection": "row", + "justifyContent": "space-around", + } + } + > + <TouchableOpacity + accessibilityRole="button" + accessible={true} + onPress={[Function]} + style={ + [ + { + "alignItems": "center", + "flex": 1, + "justifyContent": "center", + "paddingHorizontal": 20, + "paddingVertical": 12, + }, + undefined, + ] + } + > + <Text + style={ + [ + { + "color": "#141618", + "fontFamily": "EuclidCircularB-Regular", + "fontSize": 30, + "fontWeight": "400", + "marginVertical": 2, + }, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + [ + { + "color": "#141618", + "fontSize": 30, + "textAlign": "center", + }, + undefined, + ], + ] + } + > + 1 + </Text> + </TouchableOpacity> + <TouchableOpacity + accessibilityRole="button" + accessible={true} + onPress={[Function]} + style={ + [ + { + "alignItems": "center", + "flex": 1, + "justifyContent": "center", + "paddingHorizontal": 20, + "paddingVertical": 12, + }, + undefined, + ] + } + > + <Text + style={ + [ + { + "color": "#141618", + "fontFamily": "EuclidCircularB-Regular", + "fontSize": 30, + "fontWeight": "400", + "marginVertical": 2, + }, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + [ + { + "color": "#141618", + "fontSize": 30, + "textAlign": "center", + }, + undefined, + ], + ] + } + > + 2 + </Text> + </TouchableOpacity> + <TouchableOpacity + accessibilityRole="button" + accessible={true} + onPress={[Function]} + style={ + [ + { + "alignItems": "center", + "flex": 1, + "justifyContent": "center", + "paddingHorizontal": 20, + "paddingVertical": 12, + }, + undefined, + ] + } + > + <Text + style={ + [ + { + "color": "#141618", + "fontFamily": "EuclidCircularB-Regular", + "fontSize": 30, + "fontWeight": "400", + "marginVertical": 2, + }, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + [ + { + "color": "#141618", + "fontSize": 30, + "textAlign": "center", + }, + undefined, + ], + ] + } + > + 3 + </Text> + </TouchableOpacity> + </View> + <View + style={ + { + "flexDirection": "row", + "justifyContent": "space-around", + } + } + > + <TouchableOpacity + accessibilityRole="button" + accessible={true} + onPress={[Function]} + style={ + [ + { + "alignItems": "center", + "flex": 1, + "justifyContent": "center", + "paddingHorizontal": 20, + "paddingVertical": 12, + }, + undefined, + ] + } + > + <Text + style={ + [ + { + "color": "#141618", + "fontFamily": "EuclidCircularB-Regular", + "fontSize": 30, + "fontWeight": "400", + "marginVertical": 2, + }, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + [ + { + "color": "#141618", + "fontSize": 30, + "textAlign": "center", + }, + undefined, + ], + ] + } + > + 4 + </Text> + </TouchableOpacity> + <TouchableOpacity + accessibilityRole="button" + accessible={true} + onPress={[Function]} + style={ + [ + { + "alignItems": "center", + "flex": 1, + "justifyContent": "center", + "paddingHorizontal": 20, + "paddingVertical": 12, + }, + undefined, + ] + } + > + <Text + style={ + [ + { + "color": "#141618", + "fontFamily": "EuclidCircularB-Regular", + "fontSize": 30, + "fontWeight": "400", + "marginVertical": 2, + }, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + [ + { + "color": "#141618", + "fontSize": 30, + "textAlign": "center", + }, + undefined, + ], + ] + } + > + 5 + </Text> + </TouchableOpacity> + <TouchableOpacity + accessibilityRole="button" + accessible={true} + onPress={[Function]} + style={ + [ + { + "alignItems": "center", + "flex": 1, + "justifyContent": "center", + "paddingHorizontal": 20, + "paddingVertical": 12, + }, + undefined, + ] + } + > + <Text + style={ + [ + { + "color": "#141618", + "fontFamily": "EuclidCircularB-Regular", + "fontSize": 30, + "fontWeight": "400", + "marginVertical": 2, + }, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + [ + { + "color": "#141618", + "fontSize": 30, + "textAlign": "center", + }, + undefined, + ], + ] + } + > + 6 + </Text> + </TouchableOpacity> + </View> + <View + style={ + { + "flexDirection": "row", + "justifyContent": "space-around", + } + } + > + <TouchableOpacity + accessibilityRole="button" + accessible={true} + onPress={[Function]} + style={ + [ + { + "alignItems": "center", + "flex": 1, + "justifyContent": "center", + "paddingHorizontal": 20, + "paddingVertical": 12, + }, + undefined, + ] + } + > + <Text + style={ + [ + { + "color": "#141618", + "fontFamily": "EuclidCircularB-Regular", + "fontSize": 30, + "fontWeight": "400", + "marginVertical": 2, + }, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + [ + { + "color": "#141618", + "fontSize": 30, + "textAlign": "center", + }, + undefined, + ], + ] + } + > + 7 + </Text> + </TouchableOpacity> + <TouchableOpacity + accessibilityRole="button" + accessible={true} + onPress={[Function]} + style={ + [ + { + "alignItems": "center", + "flex": 1, + "justifyContent": "center", + "paddingHorizontal": 20, + "paddingVertical": 12, + }, + undefined, + ] + } + > + <Text + style={ + [ + { + "color": "#141618", + "fontFamily": "EuclidCircularB-Regular", + "fontSize": 30, + "fontWeight": "400", + "marginVertical": 2, + }, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + [ + { + "color": "#141618", + "fontSize": 30, + "textAlign": "center", + }, + undefined, + ], + ] + } + > + 8 + </Text> + </TouchableOpacity> + <TouchableOpacity + accessibilityRole="button" + accessible={true} + onPress={[Function]} + style={ + [ + { + "alignItems": "center", + "flex": 1, + "justifyContent": "center", + "paddingHorizontal": 20, + "paddingVertical": 12, + }, + undefined, + ] + } + > + <Text + style={ + [ + { + "color": "#141618", + "fontFamily": "EuclidCircularB-Regular", + "fontSize": 30, + "fontWeight": "400", + "marginVertical": 2, + }, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + [ + { + "color": "#141618", + "fontSize": 30, + "textAlign": "center", + }, + undefined, + ], + ] + } + > + 9 + </Text> + </TouchableOpacity> + </View> + <View + style={ + { + "flexDirection": "row", + "justifyContent": "space-around", + } + } + > + <TouchableOpacity + onPress={[Function]} + style={ + [ + { + "alignItems": "center", + "flex": 1, + "justifyContent": "center", + "paddingHorizontal": 20, + "paddingVertical": 12, + }, + undefined, + ] + } + > + <Text + style={ + [ + { + "color": "#141618", + "fontFamily": "EuclidCircularB-Regular", + "fontSize": 30, + "fontWeight": "400", + "marginVertical": 2, + }, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + [ + { + "color": "#141618", + "fontSize": 30, + "textAlign": "center", + }, + undefined, + ], + ] + } + > + . + </Text> + </TouchableOpacity> + <TouchableOpacity + accessibilityRole="button" + accessible={true} + onPress={[Function]} + style={ + [ + { + "alignItems": "center", + "flex": 1, + "justifyContent": "center", + "paddingHorizontal": 20, + "paddingVertical": 12, + }, + undefined, + ] + } + > + <Text + style={ + [ + { + "color": "#141618", + "fontFamily": "EuclidCircularB-Regular", + "fontSize": 30, + "fontWeight": "400", + "marginVertical": 2, + }, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + [ + { + "color": "#141618", + "fontSize": 30, + "textAlign": "center", + }, + undefined, + ], + ] + } + > + 0 + </Text> + </TouchableOpacity> + <TouchableOpacity + delayLongPress={500} + onLongPress={[Function]} + onPress={[Function]} + style={ + [ + { + "alignItems": "center", + "flex": 1, + "justifyContent": "center", + "paddingHorizontal": 20, + "paddingVertical": 12, + }, + undefined, + ] + } + testID="keypad-delete-button" + > + <Text + allowFontScaling={false} + style={ + [ + { + "color": undefined, + "fontSize": 12, + }, + [ + { + "color": "#141618", + "fontSize": 30, + "textAlign": "center", + }, + { + "fontSize": 25, + "marginTop": 5, + }, + ], + { + "fontFamily": "Ionicons", + "fontStyle": "normal", + "fontWeight": "normal", + }, + {}, + ] + } + > +  + </Text> + </TouchableOpacity> + </View> + </View> + <View + style={ + { + "padding": 16, + } + } + > + <TouchableOpacity + accessibilityRole="button" + accessible={true} + activeOpacity={1} + disabled={true} + onPress={[Function]} + onPressIn={[Function]} + onPressOut={[Function]} + style={ + { + "alignItems": "center", + "alignSelf": "stretch", + "backgroundColor": "#0376c9", + "borderRadius": 24, + "flexDirection": "row", + "height": 48, + "justifyContent": "center", + "opacity": 0.5, + "paddingHorizontal": 16, + } + } + > + <Text + accessibilityRole="text" + style={ + { + "color": "#ffffff", + "fontFamily": "EuclidCircularB-Medium", + "fontSize": 14, + "fontWeight": "500", + "letterSpacing": 0, + "lineHeight": 22, + } + } + > + Enter amount + </Text> + </TouchableOpacity> + </View> + </View> +</RCTSafeAreaView> `; diff --git a/app/components/UI/Stake/Views/StakeInputView/utils.test.ts b/app/components/UI/Stake/Views/StakeInputView/utils.test.ts new file mode 100644 index 000000000000..fdac37a28c4c --- /dev/null +++ b/app/components/UI/Stake/Views/StakeInputView/utils.test.ts @@ -0,0 +1,40 @@ +import { + MOCK_ETH_MAINNET_ASSET, + MOCK_SUPPORTED_EARN_TOKENS_WITH_FIAT_BALANCE, +} from '../../__mocks__/mockData'; +import { + STAKE_INPUT_ACTION_TO_LABEL_MAP, + STAKE_INPUT_VIEW_ACTIONS, +} from './StakeInputView.types'; +import { getStakeInputViewTitle } from './utils'; + +describe('StakeInputView Utils', () => { + describe('getStakeInputViewTitle', () => { + it('returns ETH staking title', () => { + const { symbol, isETH } = MOCK_ETH_MAINNET_ASSET; + const action = + STAKE_INPUT_ACTION_TO_LABEL_MAP[STAKE_INPUT_VIEW_ACTIONS.STAKE]; + + const result = getStakeInputViewTitle( + STAKE_INPUT_VIEW_ACTIONS.STAKE, + symbol, + isETH, + ); + expect(result).toEqual(`${action} ETH`); + }); + + it('returns stablecoin lending deposit title', () => { + // Dai Stablecoin + const { symbol, isETH } = MOCK_SUPPORTED_EARN_TOKENS_WITH_FIAT_BALANCE[1]; + const action = + STAKE_INPUT_ACTION_TO_LABEL_MAP[STAKE_INPUT_VIEW_ACTIONS.LEND]; + + const result = getStakeInputViewTitle( + STAKE_INPUT_VIEW_ACTIONS.LEND, + symbol, + isETH, + ); + expect(result).toEqual(`${action} ${symbol}`); + }); + }); +}); diff --git a/app/components/UI/Stake/Views/StakeInputView/utils.ts b/app/components/UI/Stake/Views/StakeInputView/utils.ts new file mode 100644 index 000000000000..c9cb4644188a --- /dev/null +++ b/app/components/UI/Stake/Views/StakeInputView/utils.ts @@ -0,0 +1,15 @@ +import { + STAKE_INPUT_ACTION_TO_LABEL_MAP, + STAKE_INPUT_VIEW_ACTIONS, +} from './StakeInputView.types'; + +export const getStakeInputViewTitle = ( + action: STAKE_INPUT_VIEW_ACTIONS, + tokenSymbol: string, + isEth = false, +) => { + const prefix = STAKE_INPUT_ACTION_TO_LABEL_MAP[action]; + const suffix = isEth ? 'ETH' : tokenSymbol; + + return `${prefix} ${suffix}`; +}; diff --git a/app/components/UI/Stake/Views/UnstakeInputView/UnstakeInputView.test.tsx b/app/components/UI/Stake/Views/UnstakeInputView/UnstakeInputView.test.tsx index b2f83588cf48..8e9d8c169979 100644 --- a/app/components/UI/Stake/Views/UnstakeInputView/UnstakeInputView.test.tsx +++ b/app/components/UI/Stake/Views/UnstakeInputView/UnstakeInputView.test.tsx @@ -7,7 +7,7 @@ import { backgroundState } from '../../../../../util/test/initial-root-state'; import { MOCK_GET_POOLED_STAKES_API_RESPONSE, MOCK_GET_VAULT_RESPONSE, - MOCK_STAKED_ETH_ASSET, + MOCK_STAKED_ETH_MAINNET_ASSET, } from '../../__mocks__/mockData'; jest.mock('../../../../../selectors/multichain', () => ({ @@ -97,7 +97,7 @@ jest.mock('../../hooks/useBalance', () => ({ __esModule: true, default: () => ({ stakedBalanceWei: mockPooledStakeData.assets, - stakedBalanceFiat: MOCK_STAKED_ETH_ASSET.balanceFiat, + stakedBalanceFiat: MOCK_STAKED_ETH_MAINNET_ASSET.balanceFiat, formattedStakedBalanceETH: '5.79133 ETH', }), })); diff --git a/app/components/UI/Stake/__mocks__/mockData.ts b/app/components/UI/Stake/__mocks__/mockData.ts index 8cc42489a85c..fa9f61163ba0 100644 --- a/app/components/UI/Stake/__mocks__/mockData.ts +++ b/app/components/UI/Stake/__mocks__/mockData.ts @@ -1,6 +1,5 @@ import { ChainId, - StakingApiService, StakingType, type PooledStakes, type VaultData, @@ -8,30 +7,9 @@ import { import { TokenI } from '../../Tokens/types'; import { Contract } from 'ethers'; import { Stake } from '../sdk/stakeSdkProvider'; - -export const MOCK_STAKED_ETH_ASSET = { - decimals: 18, - address: '0x0000000000000000000000000000000000000000', - chainId: '0x1', - balance: '4.9999 ETH', - balanceFiat: '$13,292.20', - name: 'Staked Ethereum', - symbol: 'Ethereum', - ticker: 'ETH', - isETH: true, -} as TokenI; - -export const MOCK_USDC_ASSET = { - decimals: 6, - address: '0xUSDC000000000000000000000000000000000000', - chainId: '0x1', - balance: '200.9999 USDC', - balanceFiat: '$200.98', - name: 'USD Coin', - symbol: 'USD Coin', - ticker: 'USDC', - isETH: false, -} as TokenI; +import { CHAIN_IDS } from '@metamask/transaction-controller'; +import { createMockToken, getCreateMockTokenOptions } from '../testUtils'; +import { TOKENS_WITH_DEFAULT_OPTIONS } from '../testUtils/testUtils.types'; export const MOCK_GET_POOLED_STAKES_API_RESPONSE: PooledStakes = { accounts: [ @@ -106,35 +84,6 @@ export const MOCK_GET_VAULT_RESPONSE: VaultData = { vaultAddress: '0x0a1b2c3d4e5f6a7b8c9dabecfd0123456789abcd', }; -export const MOCK_STAKING_EARNINGS_DATA = { - ANNUAL_EARNING_RATE: '2.6%', - LIFETIME_REWARDS: { - FIAT: '$2', - ETH: '0.02151 ETH', - }, - EST_ANNUAL_EARNINGS: { - FIAT: '$15.93', - ETH: '0.0131 ETH', - }, -}; - -export const MOCK_REWARD_DATA = { - REWARDS: { - ETH: '0.13 ETH', - FIAT: '$334.93', - }, -}; - -export const MOCK_STAKING_API_SERVICE: Partial<StakingApiService> = { - fetchFromApi: jest.fn(), - getPooledStakes: jest.fn(), - getVaultData: jest.fn(), - getPooledStakingEligibility: jest.fn(), - getVaultDailyApys: jest.fn(), - getVaultApyAverages: jest.fn(), - baseUrl: 'https://staking.api.com', -}; - const MOCK_POOLED_STAKING_CONTRACT_SERVICE = { chainId: ChainId.ETHEREUM, connectSignerOrProvider: jest.fn(), @@ -156,3 +105,95 @@ export const MOCK_POOL_STAKING_SDK: Stake = { sdkType: StakingType.POOLED, setSdkType: jest.fn(), }; + +export const MOCK_ETH_MAINNET_ASSET = createMockToken( + getCreateMockTokenOptions(CHAIN_IDS.MAINNET, TOKENS_WITH_DEFAULT_OPTIONS.ETH), +); + +export const MOCK_STAKED_ETH_MAINNET_ASSET = createMockToken( + getCreateMockTokenOptions( + CHAIN_IDS.MAINNET, + TOKENS_WITH_DEFAULT_OPTIONS.STAKED_ETH, + ), +); + +export const MOCK_USDC_MAINNET_ASSET = createMockToken( + getCreateMockTokenOptions( + CHAIN_IDS.MAINNET, + TOKENS_WITH_DEFAULT_OPTIONS.USDC, + ), +); + +const MOCK_USDT_MAINNET_ASSET = createMockToken( + getCreateMockTokenOptions( + CHAIN_IDS.MAINNET, + TOKENS_WITH_DEFAULT_OPTIONS.USDT, + ), +); + +const MOCK_DAI_MAINNET_ASSET = createMockToken( + getCreateMockTokenOptions(CHAIN_IDS.MAINNET, TOKENS_WITH_DEFAULT_OPTIONS.DAI), +); + +const MOCK_LINK_MAINNET_ASSET = createMockToken( + getCreateMockTokenOptions( + CHAIN_IDS.MAINNET, + TOKENS_WITH_DEFAULT_OPTIONS.LINK, + ), +); + +const MOCK_MATIC_MAINNET_ASSET = createMockToken( + getCreateMockTokenOptions( + CHAIN_IDS.MAINNET, + TOKENS_WITH_DEFAULT_OPTIONS.MATIC, + ), +); + +const MOCK_ETH_BASE_MAINNET_ASSET = createMockToken( + getCreateMockTokenOptions(CHAIN_IDS.BASE, TOKENS_WITH_DEFAULT_OPTIONS.ETH), +); + +export const MOCK_USDC_BASE_MAINNET_ASSET = createMockToken( + getCreateMockTokenOptions(CHAIN_IDS.BASE, TOKENS_WITH_DEFAULT_OPTIONS.USDC), +); + +export const MOCK_ACCOUNT_MULTI_CHAIN_TOKENS = [ + MOCK_ETH_MAINNET_ASSET, + MOCK_STAKED_ETH_MAINNET_ASSET, + MOCK_LINK_MAINNET_ASSET, + MOCK_DAI_MAINNET_ASSET, + MOCK_MATIC_MAINNET_ASSET, + MOCK_USDC_MAINNET_ASSET, + MOCK_USDT_MAINNET_ASSET, +] as unknown as TokenI[]; + +export const MOCK_SUPPORTED_EARN_TOKENS_NO_FIAT_BALANCE = [ + MOCK_ETH_MAINNET_ASSET, + MOCK_DAI_MAINNET_ASSET, + MOCK_USDC_MAINNET_ASSET, + MOCK_USDT_MAINNET_ASSET, +] as unknown as TokenI[]; + +export const MOCK_SUPPORTED_EARN_TOKENS_WITH_FIAT_BALANCE = [ + { + ...MOCK_ETH_MAINNET_ASSET, + tokenBalanceFormatted: '0.29166 ETH', + }, + { ...MOCK_DAI_MAINNET_ASSET, tokenBalanceFormatted: '108.06408 DAI' }, + { + ...MOCK_USDC_MAINNET_ASSET, + tokenBalanceFormatted: '6.84314 USDC', + }, + { + ...MOCK_USDT_MAINNET_ASSET, + tokenBalanceFormatted: '0 USDT', + }, + { + ...MOCK_ETH_BASE_MAINNET_ASSET, + tokenBalanceFormatted: '390.76791 ETH', + }, + { + ...MOCK_USDC_BASE_MAINNET_ASSET, + tokenBalanceFormatted: '33.39041 USDC', + }, +]; diff --git a/app/components/UI/Stake/components/EarnTokenList/EarnTokenList.styles.ts b/app/components/UI/Stake/components/EarnTokenList/EarnTokenList.styles.ts new file mode 100644 index 000000000000..7cdebbe475f7 --- /dev/null +++ b/app/components/UI/Stake/components/EarnTokenList/EarnTokenList.styles.ts @@ -0,0 +1,15 @@ +import { StyleSheet } from 'react-native'; + +const styleSheet = () => + StyleSheet.create({ + container: { + maxHeight: 552, + paddingHorizontal: 16, + gap: 12, + }, + listItemContainer: { + padding: 16, + }, + }); + +export default styleSheet; diff --git a/app/components/UI/Stake/components/EarnTokenList/EarnTokenList.test.tsx b/app/components/UI/Stake/components/EarnTokenList/EarnTokenList.test.tsx new file mode 100644 index 000000000000..59de175db663 --- /dev/null +++ b/app/components/UI/Stake/components/EarnTokenList/EarnTokenList.test.tsx @@ -0,0 +1,332 @@ +/* eslint-disable import/no-namespace */ +import React from 'react'; +import EarnTokenList from '.'; +import renderWithProvider from '../../../../../util/test/renderWithProvider'; +import { MOCK_ACCOUNTS_CONTROLLER_STATE } from '../../../../../util/test/accountsControllerTestUtils'; +import initialRootState from '../../../../../util/test/initial-root-state'; +import { Metrics, SafeAreaProvider } from 'react-native-safe-area-context'; +import { strings } from '../../../../../../locales/i18n'; +import { + MOCK_SUPPORTED_EARN_TOKENS_NO_FIAT_BALANCE, + MOCK_USDC_BASE_MAINNET_ASSET, +} from '../../__mocks__/mockData'; +import Engine from '../../../../../core/Engine'; +import * as tokenUtils from '../../utils/token'; +import * as useStakingEligibilityHook from '../../hooks/useStakingEligibility'; +import * as stakeConstants from '../../constants'; +import * as portfolioNetworkUtils from '../../../../../util/networks'; +import { act, fireEvent } from '@testing-library/react-native'; + +jest.mock('../../../../../core/Engine', () => ({ + context: { + NetworkController: { + getNetworkClientById: () => ({ + configuration: { + chainId: '0x1', + rpcUrl: 'https://mainnet.infura.io/v3', + ticker: 'ETH', + type: 'custom', + }, + }), + findNetworkClientIdByChainId: () => 'mainnet', + setActiveNetwork: jest.fn(), + }, + }, +})); + +jest.mock('../../../../../util/networks', () => ({ + isPortfolioViewEnabled: jest.fn().mockReturnValue(true), +})); + +jest.mock('../../constants', () => ({ + isStablecoinLendingFeatureEnabled: jest.fn().mockReturnValue(true), +})); + +const mockNavigate = jest.fn(); + +jest.mock('@react-navigation/native', () => { + const actualNav = jest.requireActual('@react-navigation/native'); + return { + ...actualNav, + useNavigation: () => ({ + navigate: mockNavigate, + goBack: jest.fn(), + }), + }; +}); + +jest.mock('../../../../../util/networks', () => ({ + ...jest.requireActual('../../../../../util/networks'), + getNetworkImageSource: jest.fn().mockReturnValue(10), +})); + +const initialState = { + ...initialRootState, + engine: { + ...initialRootState.engine, + backgroundState: { + ...initialRootState.engine.backgroundState, + AccountsController: MOCK_ACCOUNTS_CONTROLLER_STATE, + }, + }, +}; + +const initialMetrics: Metrics = { + frame: { x: 0, y: 0, width: 320, height: 640 }, + insets: { top: 0, left: 0, right: 0, bottom: 0 }, +}; + +let useStakingEligibilitySpy: jest.SpyInstance; +let getSupportedEarnTokensSpy: jest.SpyInstance; +let filterEligibleTokensSpy: jest.SpyInstance; + +describe('EarnTokenList', () => { + beforeEach(() => { + jest.clearAllMocks(); + + useStakingEligibilitySpy = jest + .spyOn(useStakingEligibilityHook, 'default') + .mockReturnValue({ + isEligible: true, + isLoadingEligibility: false, + refreshPooledStakingEligibility: jest.fn().mockResolvedValue({ + isEligible: true, + }), + error: '', + }); + + getSupportedEarnTokensSpy = jest + .spyOn(tokenUtils, 'getSupportedEarnTokens') + .mockReturnValue(MOCK_SUPPORTED_EARN_TOKENS_NO_FIAT_BALANCE); + + filterEligibleTokensSpy = jest.spyOn(tokenUtils, 'filterEligibleTokens'); + }); + + it('render matches snapshot', () => { + const { toJSON, getByText, getAllByText } = renderWithProvider( + <SafeAreaProvider initialMetrics={initialMetrics}> + <EarnTokenList /> + </SafeAreaProvider>, + { + state: initialState, + }, + ); + + expect(toJSON()).toMatchSnapshot(); + + // Bottom Sheet Title + expect(getByText(strings('stake.select_a_token'))).toBeDefined(); + + // Upsell Banner + expect(getByText(strings('stake.you_could_earn'))).toBeDefined(); + expect(getByText(strings('stake.per_year_on_your_tokens'))).toBeDefined(); + + // Token List + // Ethereum + expect(getAllByText('Ethereum').length).toBe(1); + expect(getAllByText('2.3% APR').length).toBe(1); + + // DAI + expect(getByText('Dai Stablecoin')).toBeDefined(); + expect(getByText('5.0% APR')).toBeDefined(); + + // USDT + expect(getByText('Tether USD')).toBeDefined(); + expect(getByText('4.1% APR')).toBeDefined(); + + // USDC + expect(getByText('USDC')).toBeDefined(); + expect(getAllByText('4.5% APR').length).toBe(1); + + expect(getSupportedEarnTokensSpy).toHaveBeenCalled(); + expect(filterEligibleTokensSpy).toHaveBeenCalled(); + }); + + it('does not render the EarnTokenList when required feature flags are disabled', () => { + jest + .spyOn(stakeConstants, 'isStablecoinLendingFeatureEnabled') + .mockReturnValueOnce(false); + jest + .spyOn(portfolioNetworkUtils, 'isPortfolioViewEnabled') + .mockReturnValueOnce(false); + + const { toJSON } = renderWithProvider(<EarnTokenList />); + + expect(toJSON()).toBeNull(); + }); + + it('changes active network if selected token is on a different network', async () => { + getSupportedEarnTokensSpy = jest + .spyOn(tokenUtils, 'getSupportedEarnTokens') + .mockReturnValue([MOCK_USDC_BASE_MAINNET_ASSET]); + + const { getByText } = renderWithProvider( + <SafeAreaProvider initialMetrics={initialMetrics}> + <EarnTokenList /> + </SafeAreaProvider>, + { + state: initialState, + }, + ); + + const baseUsdc = getByText('USDC'); + + await act(() => { + fireEvent.press(baseUsdc); + }); + + expect( + Engine.context.NetworkController.setActiveNetwork, + ).toHaveBeenCalledWith('mainnet'); + + expect(getSupportedEarnTokensSpy).toHaveBeenCalled(); + expect(filterEligibleTokensSpy).toHaveBeenCalled(); + }); + + it('hides staking tokens if user is not eligible', () => { + useStakingEligibilitySpy.mockReturnValue({ + isEligible: false, + isLoadingEligibility: false, + refreshPooledStakingEligibility: jest.fn().mockResolvedValue({ + isEligible: false, + }), + error: '', + }); + + const { queryByText, getByText } = renderWithProvider( + <SafeAreaProvider initialMetrics={initialMetrics}> + <EarnTokenList /> + </SafeAreaProvider>, + { + state: initialState, + }, + ); + + expect(queryByText('Ethereum')).toBeNull(); + expect(queryByText('Staked Ethereum')).toBeNull(); + + expect(getByText('Dai Stablecoin')).toBeDefined(); + expect(getByText('USDC')).toBeDefined(); + expect(getByText('Tether USD')).toBeDefined(); + + expect(getSupportedEarnTokensSpy).toHaveBeenCalled(); + + expect(filterEligibleTokensSpy).toHaveBeenCalledWith( + MOCK_SUPPORTED_EARN_TOKENS_NO_FIAT_BALANCE, + { canStake: false, canLend: true }, + ); + }); + + it('hides lending tokens if user is not eligible', () => { + filterEligibleTokensSpy.mockImplementationOnce(() => + tokenUtils.filterEligibleTokens( + MOCK_SUPPORTED_EARN_TOKENS_NO_FIAT_BALANCE, + { canStake: true, canLend: false }, + ), + ); + + const { queryByText, getAllByText } = renderWithProvider( + <SafeAreaProvider initialMetrics={initialMetrics}> + <EarnTokenList /> + </SafeAreaProvider>, + { + state: initialState, + }, + ); + + expect(getAllByText('Ethereum').length).toBe(1); + expect(queryByText('Staked Ethereum')).toBeDefined(); + + expect(queryByText('Dai Stablecoin')).toBeNull(); + expect(queryByText('USDC')).toBeNull(); + expect(queryByText('Tether USD')).toBeNull(); + expect(queryByText('USD Coin')).toBeNull(); + + expect(getSupportedEarnTokensSpy).toHaveBeenCalled(); + expect(filterEligibleTokensSpy).toHaveBeenCalled(); + }); + + it('redirects to StakeInputView with pooled staking navigation params for staking token', async () => { + const { getByText } = renderWithProvider( + <SafeAreaProvider initialMetrics={initialMetrics}> + <EarnTokenList /> + </SafeAreaProvider>, + { + state: initialState, + }, + ); + + const ethButton = getByText('Ethereum'); + + await act(() => { + fireEvent.press(ethButton); + }); + + expect(mockNavigate).toHaveBeenCalledWith('StakeScreens', { + params: { + action: 'STAKE', + token: { + address: '0xabc', + aggregators: [], + balance: '', + balanceFiat: '', + chainId: '0x1', + decimals: 18, + image: '', + isETH: true, + isNative: true, + isStaked: false, + logo: '', + name: 'Ethereum', + symbol: 'Ethereum', + ticker: 'ETH', + tokenBalanceFormatted: ' ETH', + apr: '2.3', + }, + }, + screen: 'Stake', + }); + }); + + it('redirect to StakeInputView with stablecoin lending navigation params for lending token', async () => { + const { getByText } = renderWithProvider( + <SafeAreaProvider initialMetrics={initialMetrics}> + <EarnTokenList /> + </SafeAreaProvider>, + { + state: initialState, + }, + ); + + const usdcButton = getByText('USDC'); + + await act(() => { + fireEvent.press(usdcButton); + }); + + expect(mockNavigate).toHaveBeenCalledWith('StakeScreens', { + params: { + action: 'LEND', + token: { + address: '0xabc', + aggregators: [], + balance: '', + balanceFiat: 'tokenBalanceLoading', + chainId: '0x1', + decimals: 6, + image: '', + isETH: false, + isNative: false, + isStaked: false, + logo: '', + name: 'USDC', + symbol: 'USDC', + ticker: 'USDC', + tokenBalanceFormatted: 'tokenBalanceLoading', + apr: '4.5', + }, + }, + screen: 'Stake', + }); + }); +}); diff --git a/app/components/UI/Stake/components/EarnTokenList/__snapshots__/EarnTokenList.test.tsx.snap b/app/components/UI/Stake/components/EarnTokenList/__snapshots__/EarnTokenList.test.tsx.snap new file mode 100644 index 000000000000..941d46c5477b --- /dev/null +++ b/app/components/UI/Stake/components/EarnTokenList/__snapshots__/EarnTokenList.test.tsx.snap @@ -0,0 +1,1115 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`EarnTokenList render matches snapshot 1`] = ` +<RNCSafeAreaProvider + onInsetsChange={[Function]} + style={ + [ + { + "flex": 1, + }, + undefined, + ] + } +> + <View + onLayout={[Function]} + style={ + [ + { + "bottom": 0, + "justifyContent": "flex-end", + "left": 0, + "position": "absolute", + "right": 0, + "top": 0, + }, + { + "paddingBottom": 0, + }, + ] + } + > + <View + style={ + [ + { + "backgroundColor": "#00000099", + "bottom": 0, + "left": 0, + "position": "absolute", + "right": 0, + "top": 0, + }, + { + "opacity": 0, + }, + ] + } + > + <TouchableOpacity + onPress={[Function]} + style={ + { + "flex": 1, + } + } + /> + </View> + <View + onLayout={[Function]} + style={ + [ + { + "bottom": 0, + "left": 0, + "position": "absolute", + "right": 0, + }, + { + "paddingBottom": 0, + }, + ] + } + > + <View + collapsable={false} + onGestureHandlerEvent={[Function]} + onGestureHandlerStateChange={[Function]} + onLayout={[Function]} + style={ + [ + { + "backgroundColor": "#ffffff", + "borderColor": "#BBC0C566", + "borderTopLeftRadius": 8, + "borderTopRightRadius": 8, + "borderWidth": 1, + "maxHeight": 1334, + "overflow": "hidden", + "paddingBottom": 0, + "shadowColor": "#0000001A", + "shadowOffset": { + "height": 2, + "width": 0, + }, + "shadowOpacity": 1, + "shadowRadius": 40, + }, + { + "transform": [ + { + "translateY": 1334, + }, + ], + }, + ] + } + > + <View + style={ + { + "alignItems": "center", + "alignSelf": "stretch", + "padding": 4, + } + } + > + <View + style={ + { + "backgroundColor": "#BBC0C566", + "borderRadius": 2, + "height": 4, + "width": 40, + } + } + /> + </View> + <View + style={ + [ + { + "backgroundColor": "#ffffff", + "flexDirection": "row", + "padding": 16, + }, + false, + ] + } + testID="header" + > + <View + style={ + { + "width": undefined, + } + } + > + <View + onLayout={[Function]} + /> + </View> + <View + style={ + { + "alignItems": "center", + "flex": 1, + "marginHorizontal": 16, + } + } + > + <Text + accessibilityRole="text" + style={ + { + "color": "#141618", + "fontFamily": "EuclidCircularB-Bold", + "fontSize": 16, + "fontWeight": "700", + "letterSpacing": 0, + "lineHeight": 24, + } + } + > + Select a token + </Text> + </View> + <View + style={ + { + "width": undefined, + } + } + > + <View + onLayout={[Function]} + /> + </View> + </View> + <RCTScrollView + collapsable={false} + onGestureHandlerEvent={[Function]} + onGestureHandlerStateChange={[Function]} + style={ + { + "gap": 12, + "maxHeight": 552, + "paddingHorizontal": 16, + } + } + > + <View> + <View + style={ + { + "alignItems": "center", + "backgroundColor": "#f2f4f6", + "borderRadius": 8, + "gap": 8, + "paddingHorizontal": 16, + "paddingVertical": 24, + } + } + > + <Text + accessibilityRole="text" + style={ + { + "color": "#141618", + "fontFamily": "EuclidCircularB-Bold", + "fontSize": 18, + "fontWeight": "700", + "letterSpacing": 0, + "lineHeight": 24, + } + } + > + You could earn + </Text> + <Text + accessibilityRole="text" + style={ + { + "color": "#1c8234", + "fontFamily": "EuclidCircularB-Bold", + "fontSize": 32, + "fontWeight": "700", + "letterSpacing": 0, + "lineHeight": 40, + } + } + > + $454 + </Text> + <Text + accessibilityRole="text" + style={ + { + "color": "#6a737d", + "fontFamily": "EuclidCircularB-Regular", + "fontSize": 14, + "fontWeight": "400", + "letterSpacing": 0, + "lineHeight": 22, + } + } + > + per year on your tokens + </Text> + </View> + <View + style={ + { + "padding": 16, + } + } + > + <TouchableOpacity + onPress={[Function]} + style={ + { + "alignItems": "center", + "flexDirection": "row", + "justifyContent": "space-between", + } + } + > + <View + style={ + { + "alignItems": "center", + "flexDirection": "row", + "gap": 16, + } + } + > + <View + onLayout={[Function]} + style={ + { + "alignSelf": "flex-start", + "position": "relative", + } + } + testID="badge-wrapper-badge" + > + <View> + <View + useNativeDriver={true} + > + <Image + fadeIn={true} + onError={[Function]} + onLoadEnd={[Function]} + source={ + { + "uri": "", + } + } + style={ + [ + { + "borderRadius": 12, + "height": 24, + "width": 24, + }, + undefined, + false, + false, + { + "flexShrink": 0, + "height": 32, + "width": 32, + }, + ] + } + testID="earn-token-list-item-Ethereum-0x1" + /> + <View + collapsable={false} + style={ + { + "bottom": 0, + "left": 0, + "opacity": 1, + "position": "absolute", + "right": 0, + "top": 0, + } + } + > + <View + style={ + [ + { + "borderRadius": 12, + "flexShrink": 0, + "height": 32, + "width": 32, + }, + { + "backgroundColor": "#eee", + }, + undefined, + ] + } + /> + </View> + </View> + </View> + <View + style={ + { + "alignItems": "center", + "aspectRatio": 1, + "height": 0, + "justifyContent": "center", + "position": "absolute", + "right": 0, + "top": 0, + "transform": [ + { + "translateX": 0, + }, + { + "translateY": -0, + }, + ], + } + } + > + <View + onLayout={[Function]} + style={ + { + "alignItems": "center", + "aspectRatio": 1, + "height": "50%", + "justifyContent": "center", + "maxHeight": 24, + "minHeight": 8, + "opacity": 0, + } + } + testID="badgenetwork" + > + <View + style={ + { + "alignItems": "center", + "backgroundColor": "#ffffff", + "borderColor": "#ffffff", + "borderRadius": 16, + "borderWidth": 2, + "height": 32, + "justifyContent": "center", + "overflow": "hidden", + "shadowColor": "#0000001A", + "shadowOffset": { + "height": 2, + "width": 0, + }, + "shadowOpacity": 1, + "shadowRadius": 4, + "transform": [ + { + "scale": 1, + }, + ], + "width": 32, + } + } + > + <Image + onError={[Function]} + resizeMode="contain" + source={10} + style={ + { + "height": 32, + "width": 32, + } + } + testID="network-avatar-image" + /> + </View> + </View> + </View> + </View> + <Text + accessibilityRole="text" + style={ + { + "color": "#141618", + "fontFamily": "EuclidCircularB-Medium", + "fontSize": 14, + "fontWeight": "500", + "letterSpacing": 0, + "lineHeight": 22, + } + } + > + Ethereum + </Text> + </View> + <View + style={ + { + "alignItems": "flex-end", + "justifyContent": "center", + } + } + > + <Text + accessibilityRole="text" + style={ + { + "color": "#1c8234", + "fontFamily": "EuclidCircularB-Medium", + "fontSize": 14, + "fontWeight": "500", + "letterSpacing": 0, + "lineHeight": 22, + } + } + > + 2.3% APR + </Text> + <Text + accessibilityRole="text" + style={ + { + "color": "#6a737d", + "fontFamily": "EuclidCircularB-Medium", + "fontSize": 12, + "fontWeight": "500", + "letterSpacing": 0, + "lineHeight": 20, + } + } + > + ETH + </Text> + </View> + </TouchableOpacity> + </View> + <View + style={ + { + "padding": 16, + } + } + > + <TouchableOpacity + onPress={[Function]} + style={ + { + "alignItems": "center", + "flexDirection": "row", + "justifyContent": "space-between", + } + } + > + <View + style={ + { + "alignItems": "center", + "flexDirection": "row", + "gap": 16, + } + } + > + <View + onLayout={[Function]} + style={ + { + "alignSelf": "flex-start", + "position": "relative", + } + } + testID="badge-wrapper-badge" + > + <View> + <View + style={ + { + "backgroundColor": "#ffffff", + "borderRadius": 16, + "flexShrink": 0, + "height": 32, + "overflow": "hidden", + "width": 32, + } + } + > + <Image + onError={[Function]} + resizeMode="contain" + source={ + { + "uri": "", + } + } + style={ + { + "flex": 1, + "height": undefined, + "width": undefined, + } + } + testID="token-avatar-image" + /> + </View> + </View> + <View + style={ + { + "alignItems": "center", + "aspectRatio": 1, + "height": 0, + "justifyContent": "center", + "position": "absolute", + "right": 0, + "top": 0, + "transform": [ + { + "translateX": 0, + }, + { + "translateY": -0, + }, + ], + } + } + > + <View + onLayout={[Function]} + style={ + { + "alignItems": "center", + "aspectRatio": 1, + "height": "50%", + "justifyContent": "center", + "maxHeight": 24, + "minHeight": 8, + "opacity": 0, + } + } + testID="badgenetwork" + > + <View + style={ + { + "alignItems": "center", + "backgroundColor": "#ffffff", + "borderColor": "#ffffff", + "borderRadius": 16, + "borderWidth": 2, + "height": 32, + "justifyContent": "center", + "overflow": "hidden", + "shadowColor": "#0000001A", + "shadowOffset": { + "height": 2, + "width": 0, + }, + "shadowOpacity": 1, + "shadowRadius": 4, + "transform": [ + { + "scale": 1, + }, + ], + "width": 32, + } + } + > + <Image + onError={[Function]} + resizeMode="contain" + source={10} + style={ + { + "height": 32, + "width": 32, + } + } + testID="network-avatar-image" + /> + </View> + </View> + </View> + </View> + <Text + accessibilityRole="text" + style={ + { + "color": "#141618", + "fontFamily": "EuclidCircularB-Medium", + "fontSize": 14, + "fontWeight": "500", + "letterSpacing": 0, + "lineHeight": 22, + } + } + > + Dai Stablecoin + </Text> + </View> + <View + style={ + { + "alignItems": "flex-end", + "justifyContent": "center", + } + } + > + <Text + accessibilityRole="text" + style={ + { + "color": "#1c8234", + "fontFamily": "EuclidCircularB-Medium", + "fontSize": 14, + "fontWeight": "500", + "letterSpacing": 0, + "lineHeight": 22, + } + } + > + 5.0% APR + </Text> + <Text + accessibilityRole="text" + style={ + { + "color": "#6a737d", + "fontFamily": "EuclidCircularB-Medium", + "fontSize": 12, + "fontWeight": "500", + "letterSpacing": 0, + "lineHeight": 20, + } + } + > + tokenBalanceLoading + </Text> + </View> + </TouchableOpacity> + </View> + <View + style={ + { + "padding": 16, + } + } + > + <TouchableOpacity + onPress={[Function]} + style={ + { + "alignItems": "center", + "flexDirection": "row", + "justifyContent": "space-between", + } + } + > + <View + style={ + { + "alignItems": "center", + "flexDirection": "row", + "gap": 16, + } + } + > + <View + onLayout={[Function]} + style={ + { + "alignSelf": "flex-start", + "position": "relative", + } + } + testID="badge-wrapper-badge" + > + <View> + <View + style={ + { + "backgroundColor": "#ffffff", + "borderRadius": 16, + "flexShrink": 0, + "height": 32, + "overflow": "hidden", + "width": 32, + } + } + > + <Image + onError={[Function]} + resizeMode="contain" + source={ + { + "uri": "", + } + } + style={ + { + "flex": 1, + "height": undefined, + "width": undefined, + } + } + testID="token-avatar-image" + /> + </View> + </View> + <View + style={ + { + "alignItems": "center", + "aspectRatio": 1, + "height": 0, + "justifyContent": "center", + "position": "absolute", + "right": 0, + "top": 0, + "transform": [ + { + "translateX": 0, + }, + { + "translateY": -0, + }, + ], + } + } + > + <View + onLayout={[Function]} + style={ + { + "alignItems": "center", + "aspectRatio": 1, + "height": "50%", + "justifyContent": "center", + "maxHeight": 24, + "minHeight": 8, + "opacity": 0, + } + } + testID="badgenetwork" + > + <View + style={ + { + "alignItems": "center", + "backgroundColor": "#ffffff", + "borderColor": "#ffffff", + "borderRadius": 16, + "borderWidth": 2, + "height": 32, + "justifyContent": "center", + "overflow": "hidden", + "shadowColor": "#0000001A", + "shadowOffset": { + "height": 2, + "width": 0, + }, + "shadowOpacity": 1, + "shadowRadius": 4, + "transform": [ + { + "scale": 1, + }, + ], + "width": 32, + } + } + > + <Image + onError={[Function]} + resizeMode="contain" + source={10} + style={ + { + "height": 32, + "width": 32, + } + } + testID="network-avatar-image" + /> + </View> + </View> + </View> + </View> + <Text + accessibilityRole="text" + style={ + { + "color": "#141618", + "fontFamily": "EuclidCircularB-Medium", + "fontSize": 14, + "fontWeight": "500", + "letterSpacing": 0, + "lineHeight": 22, + } + } + > + USDC + </Text> + </View> + <View + style={ + { + "alignItems": "flex-end", + "justifyContent": "center", + } + } + > + <Text + accessibilityRole="text" + style={ + { + "color": "#1c8234", + "fontFamily": "EuclidCircularB-Medium", + "fontSize": 14, + "fontWeight": "500", + "letterSpacing": 0, + "lineHeight": 22, + } + } + > + 4.5% APR + </Text> + <Text + accessibilityRole="text" + style={ + { + "color": "#6a737d", + "fontFamily": "EuclidCircularB-Medium", + "fontSize": 12, + "fontWeight": "500", + "letterSpacing": 0, + "lineHeight": 20, + } + } + > + tokenBalanceLoading + </Text> + </View> + </TouchableOpacity> + </View> + <View + style={ + { + "padding": 16, + } + } + > + <TouchableOpacity + onPress={[Function]} + style={ + { + "alignItems": "center", + "flexDirection": "row", + "justifyContent": "space-between", + } + } + > + <View + style={ + { + "alignItems": "center", + "flexDirection": "row", + "gap": 16, + } + } + > + <View + onLayout={[Function]} + style={ + { + "alignSelf": "flex-start", + "position": "relative", + } + } + testID="badge-wrapper-badge" + > + <View> + <View + style={ + { + "backgroundColor": "#ffffff", + "borderRadius": 16, + "flexShrink": 0, + "height": 32, + "overflow": "hidden", + "width": 32, + } + } + > + <Image + onError={[Function]} + resizeMode="contain" + source={ + { + "uri": "", + } + } + style={ + { + "flex": 1, + "height": undefined, + "width": undefined, + } + } + testID="token-avatar-image" + /> + </View> + </View> + <View + style={ + { + "alignItems": "center", + "aspectRatio": 1, + "height": 0, + "justifyContent": "center", + "position": "absolute", + "right": 0, + "top": 0, + "transform": [ + { + "translateX": 0, + }, + { + "translateY": -0, + }, + ], + } + } + > + <View + onLayout={[Function]} + style={ + { + "alignItems": "center", + "aspectRatio": 1, + "height": "50%", + "justifyContent": "center", + "maxHeight": 24, + "minHeight": 8, + "opacity": 0, + } + } + testID="badgenetwork" + > + <View + style={ + { + "alignItems": "center", + "backgroundColor": "#ffffff", + "borderColor": "#ffffff", + "borderRadius": 16, + "borderWidth": 2, + "height": 32, + "justifyContent": "center", + "overflow": "hidden", + "shadowColor": "#0000001A", + "shadowOffset": { + "height": 2, + "width": 0, + }, + "shadowOpacity": 1, + "shadowRadius": 4, + "transform": [ + { + "scale": 1, + }, + ], + "width": 32, + } + } + > + <Image + onError={[Function]} + resizeMode="contain" + source={10} + style={ + { + "height": 32, + "width": 32, + } + } + testID="network-avatar-image" + /> + </View> + </View> + </View> + </View> + <Text + accessibilityRole="text" + style={ + { + "color": "#141618", + "fontFamily": "EuclidCircularB-Medium", + "fontSize": 14, + "fontWeight": "500", + "letterSpacing": 0, + "lineHeight": 22, + } + } + > + Tether USD + </Text> + </View> + <View + style={ + { + "alignItems": "flex-end", + "justifyContent": "center", + } + } + > + <Text + accessibilityRole="text" + style={ + { + "color": "#1c8234", + "fontFamily": "EuclidCircularB-Medium", + "fontSize": 14, + "fontWeight": "500", + "letterSpacing": 0, + "lineHeight": 22, + } + } + > + 4.1% APR + </Text> + <Text + accessibilityRole="text" + style={ + { + "color": "#6a737d", + "fontFamily": "EuclidCircularB-Medium", + "fontSize": 12, + "fontWeight": "500", + "letterSpacing": 0, + "lineHeight": 20, + } + } + > + tokenBalanceLoading + </Text> + </View> + </TouchableOpacity> + </View> + </View> + </RCTScrollView> + </View> + </View> + </View> +</RNCSafeAreaProvider> +`; diff --git a/app/components/UI/Stake/components/EarnTokenList/index.tsx b/app/components/UI/Stake/components/EarnTokenList/index.tsx new file mode 100644 index 000000000000..776d4bd55deb --- /dev/null +++ b/app/components/UI/Stake/components/EarnTokenList/index.tsx @@ -0,0 +1,227 @@ +import React, { useMemo, useRef, useCallback } from 'react'; +import BottomSheet, { + BottomSheetRef, +} from '../../../../../component-library/components/BottomSheets/BottomSheet'; +import BottomSheetHeader from '../../../../../component-library/components/BottomSheets/BottomSheetHeader'; +import Text, { + TextColor, + TextVariant, +} from '../../../../../component-library/components/Texts/Text'; +import { View } from 'react-native'; +import { useStyles } from '../../../../hooks/useStyles'; +import styleSheet from './EarnTokenList.styles'; +import { useSelector } from 'react-redux'; +import { RootState } from '../../../BasicFunctionality/BasicFunctionalityModal/BasicFunctionalityModal.test'; +import { + getDecimalChainId, + isPortfolioViewEnabled, +} from '../../../../../util/networks'; +import { selectAccountTokensAcrossChains } from '../../../../../selectors/multichain'; +import { TokenI } from '../../../Tokens/types'; +import { ScrollView } from 'react-native-gesture-handler'; +import { Hex } from '@metamask/utils'; +import { useNavigation } from '@react-navigation/native'; +import Routes from '../../../../../constants/navigation/Routes'; +import { MetaMetricsEvents, useMetrics } from '../../../../hooks/useMetrics'; +import { EVENT_LOCATIONS, EVENT_PROVIDERS } from '../../constants/events'; +import { strings } from '../../../../../../locales/i18n'; +import UpsellBanner from '../UpsellBanner'; +import { UPSELL_BANNER_VARIANTS } from '../UpsellBanner/UpsellBanner.types'; +import { isStablecoinLendingFeatureEnabled } from '../../constants'; +import { + filterEligibleTokens, + getSupportedEarnTokens, +} from '../../utils/token'; +import EarnTokenListItem from '../EarnTokenListItem'; +import Engine from '../../../../../core/Engine'; +import { STAKE_INPUT_VIEW_ACTIONS } from '../../Views/StakeInputView/StakeInputView.types'; +import useStakingEligibility from '../../hooks/useStakingEligibility'; +import SkeletonPlaceholder from 'react-native-skeleton-placeholder'; +import { useEarnTokenDetails } from '../../hooks/useEarnTokenDetails'; + +const isEmptyBalance = (token: { tokenBalanceFormatted: string }) => + parseFloat(token?.tokenBalanceFormatted) === 0; + +// Temporary: Will be replaced by actual API call in near future. +const MOCK_ESTIMATE_REWARDS = '$454'; + +const EarnTokenListSkeletonPlaceholder = () => ( + <SkeletonPlaceholder> + <SkeletonPlaceholder.Item + width={'auto'} + height={150} + borderRadius={8} + marginBottom={12} + /> + <> + {[1, 2, 3, 4, 5].map((value) => ( + <SkeletonPlaceholder.Item + key={value} + width={'auto'} + height={42} + borderRadius={8} + margin={16} + /> + ))} + </> + </SkeletonPlaceholder> +); + +const EarnTokenList = () => { + const { createEventBuilder, trackEvent } = useMetrics(); + const { styles } = useStyles(styleSheet, {}); + const { navigate } = useNavigation(); + const { getTokenWithBalanceAndApr } = useEarnTokenDetails(); + const bottomSheetRef = useRef<BottomSheetRef>(null); + + const tokens = useSelector((state: RootState) => + isPortfolioViewEnabled() ? selectAccountTokensAcrossChains(state) : {}, + ); + + const { + isEligible: isEligibleToStake, + isLoadingEligibility: isLoadingStakingEligibility, + } = useStakingEligibility(); + + const supportedStablecoins = useMemo(() => { + if (isLoadingStakingEligibility) return []; + + const allTokens = Object.values(tokens).flat() as TokenI[]; + + if (!allTokens.length) return []; + + const supportedTokens = getSupportedEarnTokens(allTokens); + + const eligibleTokens = filterEligibleTokens( + supportedTokens, + // Temporary: hardcoded canLend will be replaced before launch with an eligibility check. + { canStake: isEligibleToStake, canLend: true }, + ); + + const eligibleTokensWithBalances = eligibleTokens?.map((token) => + getTokenWithBalanceAndApr(token), + ); + + // Tokens with a balance of 0 are placed at the end of the list. + return eligibleTokensWithBalances.sort((a, b) => { + const fiatBalanceA = parseFloat(a.tokenBalanceFormatted); + const fiatBalanceB = parseFloat(b.tokenBalanceFormatted); + + return (fiatBalanceA === 0 ? 1 : 0) - (fiatBalanceB === 0 ? 1 : 0); + }); + }, [ + getTokenWithBalanceAndApr, + isEligibleToStake, + isLoadingStakingEligibility, + tokens, + ]); + + const closeBottomSheetAndNavigate = useCallback( + (navigateFunc: () => void) => { + bottomSheetRef.current?.onCloseBottomSheet(navigateFunc); + }, + [], + ); + + const handleRedirectToInputScreen = async (token: TokenI) => { + const { NetworkController } = Engine.context; + + const networkClientId = NetworkController.findNetworkClientIdByChainId( + token.chainId as Hex, + ); + + if (!networkClientId) { + console.error( + `EarnTokenListItem redirect failed: could not retrieve networkClientId for chainId: ${token.chainId}`, + ); + return; + } + + await Engine.context.NetworkController.setActiveNetwork(networkClientId); + + const action = token.isETH + ? STAKE_INPUT_VIEW_ACTIONS.STAKE + : STAKE_INPUT_VIEW_ACTIONS.LEND; + + closeBottomSheetAndNavigate(() => { + navigate('StakeScreens', { + screen: Routes.STAKING.STAKE, + params: { token, action }, + }); + }); + + trackEvent( + createEventBuilder(MetaMetricsEvents.EARN_TOKEN_LIST_ITEM_CLICKED) + .addProperties({ + provider: EVENT_PROVIDERS.CONSENSYS, + location: EVENT_LOCATIONS.WALLET_ACTIONS_BOTTOM_SHEET, + token_name: token.name, + token_symbol: token.symbol, + token_chain_id: getDecimalChainId(token.chainId), + action, + }) + .build(), + ); + }; + + return ( + <BottomSheet ref={bottomSheetRef}> + <BottomSheetHeader> + <Text variant={TextVariant.HeadingSM}> + {strings('stake.select_a_token')} + </Text> + </BottomSheetHeader> + <ScrollView style={styles.container}> + {supportedStablecoins?.length ? ( + <> + <UpsellBanner + primaryText={strings('stake.you_could_earn')} + secondaryText={MOCK_ESTIMATE_REWARDS} + tertiaryText={strings('stake.per_year_on_your_tokens')} + variant={UPSELL_BANNER_VARIANTS.HEADER} + /> + {supportedStablecoins?.map( + (token, index) => + token?.chainId && ( + <View + style={styles.listItemContainer} + key={`${token.name}-${token.symbol}-${index}`} + > + <EarnTokenListItem + token={token} + onPress={handleRedirectToInputScreen} + primaryText={{ + value: `${token.apr}% APR`, + color: TextColor.Success, + }} + {...(!isEmptyBalance(token) && { + secondaryText: { + value: token.tokenBalanceFormatted, + }, + })} + /> + </View> + ), + )} + </> + ) : ( + <EarnTokenListSkeletonPlaceholder /> + )} + </ScrollView> + </BottomSheet> + ); +}; + +/** + * Temporary wrapper to prevent rending if feature flags aren't enabled. + * We can delete this wrapped once these feature flags are removed. + */ +const EarnTokenListWrapper = () => { + if (isStablecoinLendingFeatureEnabled() && isPortfolioViewEnabled()) { + return <EarnTokenList />; + } + + return <></>; +}; + +export default EarnTokenListWrapper; diff --git a/app/components/UI/Stake/components/EarnTokenListItem/EarnTokenListItem.types.ts b/app/components/UI/Stake/components/EarnTokenListItem/EarnTokenListItem.types.ts index 7f1152fda813..bb216a5a2c62 100644 --- a/app/components/UI/Stake/components/EarnTokenListItem/EarnTokenListItem.types.ts +++ b/app/components/UI/Stake/components/EarnTokenListItem/EarnTokenListItem.types.ts @@ -2,7 +2,7 @@ import { TextProps } from '../../../../../component-library/components/Texts/Tex import { TokenI } from '../../../Tokens/types'; interface Text extends Omit<TextProps, 'children'> { - value: string; + value?: string; } export interface EarnTokenListItemProps { diff --git a/app/components/UI/Stake/components/EarnTokenSelector/EarnTokenSelector.styles.ts b/app/components/UI/Stake/components/EarnTokenSelector/EarnTokenSelector.styles.ts new file mode 100644 index 000000000000..618cff756551 --- /dev/null +++ b/app/components/UI/Stake/components/EarnTokenSelector/EarnTokenSelector.styles.ts @@ -0,0 +1,36 @@ +// app/components/UI/Stake/components/EarnTokenSelector/EarnTokenSelector.styles.ts +import { StyleSheet } from 'react-native'; +import { Theme } from '../../../../../util/theme/models'; + +export default (params: { theme: Theme }) => { + const { theme } = params; + + return StyleSheet.create({ + container: { + backgroundColor: theme.colors.background.default, + borderRadius: 8, + minHeight: 56, + borderWidth: 1, + borderColor: theme.colors.border.default, + }, + startAccessoryContainer: { + marginRight: 8, + flexDirection: 'row', + alignItems: 'center', + }, + endAccessoryContainer: { + alignItems: 'flex-end', + }, + aprText: { + color: theme.colors.success.default, + marginBottom: 2, + }, + tokenText: { + marginLeft: 8, + }, + networkAvatar: { + width: 24, + height: 24, + }, + }); +}; diff --git a/app/components/UI/Stake/components/EarnTokenSelector/EarnTokenSelector.test.tsx b/app/components/UI/Stake/components/EarnTokenSelector/EarnTokenSelector.test.tsx new file mode 100644 index 000000000000..dad2f1cb9b7b --- /dev/null +++ b/app/components/UI/Stake/components/EarnTokenSelector/EarnTokenSelector.test.tsx @@ -0,0 +1,86 @@ +// app/components/UI/Stake/components/EarnTokenSelector/EarnTokenSelector.test.tsx +import React from 'react'; +import { fireEvent } from '@testing-library/react-native'; +import EarnTokenSelector from './'; +import renderWithProvider from '../../../../../util/test/renderWithProvider'; +import { MOCK_USDC_MAINNET_ASSET } from '../../__mocks__/mockData'; +import { backgroundState } from '../../../../../util/test/initial-root-state'; +import { TokenI } from '../../../../UI/Tokens/types'; + +const mockNavigate = jest.fn(); + +const MOCK_APR_VALUES: { [symbol: string]: string } = { + Ethereum: '2.3', + USDC: '4.5', + USDT: '4.1', + DAI: '5.0', +}; + +jest.mock('@react-navigation/native', () => { + const actualNav = jest.requireActual('@react-navigation/native'); + return { + ...actualNav, + useNavigation: () => ({ + navigate: mockNavigate, + }), + }; +}); + +// Mock the useEarnTokenDetails hook +jest.mock('../../hooks/useEarnTokenDetails', () => ({ + useEarnTokenDetails: () => ({ + getTokenWithBalanceAndApr: (token: TokenI) => ({ + ...token, + apr: MOCK_APR_VALUES[token.symbol] || '0.0', + tokenBalanceFormatted: token.symbol === 'USDC' ? '6.84314 USDC' : '0', + balanceFiat: token.symbol === 'USDC' ? '$6.84' : '$0.00', + }), + }), +})); + +describe('EarnTokenSelector', () => { + const mockProps = { + token: MOCK_USDC_MAINNET_ASSET, + }; + + const mockInitialState = { + engine: { + backgroundState, + }, + }; + + beforeEach(() => { + jest.clearAllMocks(); + }); + + it('renders correctly', () => { + const { toJSON } = renderWithProvider( + <EarnTokenSelector {...mockProps} />, + { + state: mockInitialState, + }, + ); + expect(toJSON()).toMatchSnapshot(); + }); + + it('displays token symbol and APR', () => { + const { getByText } = renderWithProvider( + <EarnTokenSelector {...mockProps} />, + { state: mockInitialState }, + ); + expect(getByText('4.5% APR')).toBeDefined(); + expect(getByText('6.84314 USDC')).toBeDefined(); + }); + + it('navigates to earn token list when pressed', () => { + const { getByTestId } = renderWithProvider( + <EarnTokenSelector {...mockProps} />, + { state: mockInitialState }, + ); + const button = getByTestId('earn-token-selector'); + fireEvent.press(button); + expect(mockNavigate).toHaveBeenCalledWith('StakeModals', { + screen: 'EarnTokenList', + }); + }); +}); diff --git a/app/components/UI/Stake/components/EarnTokenSelector/__snapshots__/EarnTokenSelector.test.tsx.snap b/app/components/UI/Stake/components/EarnTokenSelector/__snapshots__/EarnTokenSelector.test.tsx.snap new file mode 100644 index 000000000000..fbe533c58918 --- /dev/null +++ b/app/components/UI/Stake/components/EarnTokenSelector/__snapshots__/EarnTokenSelector.test.tsx.snap @@ -0,0 +1,288 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`EarnTokenSelector renders correctly 1`] = ` +<TouchableOpacity + accessibilityRole="button" + activeOpacity={1} + onPress={[Function]} + style={ + { + "alignItems": "center", + "backgroundColor": "#ffffff", + "borderColor": "#848c96", + "borderRadius": 8, + "borderWidth": 1, + "flexDirection": "row", + "minHeight": 56, + "opacity": 1, + "paddingHorizontal": 16, + "paddingVertical": 12, + } + } + testID="earn-token-selector" +> + <View + accessibilityRole="none" + accessible={true} + style={ + { + "flex": 1, + "marginRight": 8, + "padding": 0, + } + } + > + <View + style={ + { + "alignItems": "center", + "flexDirection": "row", + } + } + > + <View + style={ + { + "flex": -1, + } + } + testID="listitemcolumn" + > + <View + style={ + { + "alignItems": "center", + "flexDirection": "row", + "marginRight": 8, + } + } + > + <View + onLayout={[Function]} + style={ + { + "alignSelf": "flex-start", + "position": "relative", + } + } + testID="badge-wrapper-badge" + > + <View> + <View + style={ + { + "backgroundColor": "#ffffff", + "borderRadius": 16, + "height": 32, + "overflow": "hidden", + "width": 32, + } + } + > + <Image + onError={[Function]} + resizeMode="contain" + source={ + { + "uri": "", + } + } + style={ + { + "flex": 1, + "height": undefined, + "width": undefined, + } + } + testID="token-avatar-image" + /> + </View> + </View> + <View + style={ + { + "alignItems": "center", + "aspectRatio": 1, + "height": 0, + "justifyContent": "center", + "position": "absolute", + "right": 0, + "top": 0, + "transform": [ + { + "translateX": 0, + }, + { + "translateY": -0, + }, + ], + } + } + > + <View + onLayout={[Function]} + style={ + { + "alignItems": "center", + "aspectRatio": 1, + "height": "50%", + "justifyContent": "center", + "maxHeight": 24, + "minHeight": 8, + "opacity": 0, + } + } + testID="badgenetwork" + > + <View + style={ + { + "alignItems": "center", + "backgroundColor": "#ffffff", + "borderColor": "#ffffff", + "borderRadius": 16, + "borderWidth": 2, + "height": 32, + "justifyContent": "center", + "overflow": "hidden", + "shadowColor": "#0000001A", + "shadowOffset": { + "height": 2, + "width": 0, + }, + "shadowOpacity": 1, + "shadowRadius": 4, + "transform": [ + { + "scale": 1, + }, + ], + "width": 32, + } + } + > + <Image + onError={[Function]} + resizeMode="contain" + source={1} + style={ + { + "height": 32, + "width": 32, + } + } + testID="network-avatar-image" + /> + </View> + </View> + </View> + </View> + <Text + accessibilityRole="text" + style={ + { + "color": "#141618", + "fontFamily": "EuclidCircularB-Regular", + "fontSize": 14, + "fontWeight": "400", + "letterSpacing": 0, + "lineHeight": 22, + "marginLeft": 8, + } + } + > + USDC + </Text> + </View> + </View> + <View + accessible={false} + style={ + { + "width": 8, + } + } + testID="listitem-gap" + /> + <View + style={ + { + "flex": 1, + } + } + testID="listitemcolumn" + /> + <View + accessible={false} + style={ + { + "width": 8, + } + } + testID="listitem-gap" + /> + <View + style={ + { + "flex": -1, + } + } + testID="listitemcolumn" + > + <View + style={ + { + "alignItems": "flex-end", + } + } + > + <Text + accessibilityRole="text" + style={ + { + "color": "#1c8234", + "fontFamily": "EuclidCircularB-Regular", + "fontSize": 14, + "fontWeight": "400", + "letterSpacing": 0, + "lineHeight": 22, + } + } + > + 4.5% APR + </Text> + <Text + accessibilityRole="text" + style={ + { + "color": "#6a737d", + "fontFamily": "EuclidCircularB-Regular", + "fontSize": 14, + "fontWeight": "400", + "letterSpacing": 0, + "lineHeight": 22, + } + } + > + 6.84314 USDC + </Text> + </View> + </View> + </View> + </View> + <View> + <SvgMock + color="#141618" + height={16} + name="ArrowDown" + style={ + { + "height": 16, + "width": 16, + } + } + width={16} + /> + </View> +</TouchableOpacity> +`; diff --git a/app/components/UI/Stake/components/EarnTokenSelector/index.tsx b/app/components/UI/Stake/components/EarnTokenSelector/index.tsx new file mode 100644 index 000000000000..b7db71dff42a --- /dev/null +++ b/app/components/UI/Stake/components/EarnTokenSelector/index.tsx @@ -0,0 +1,113 @@ +// app/components/UI/Stake/components/EarnTokenSelector/index.tsx +import React from 'react'; +import { useStyles } from '../../../../../component-library/hooks'; +import { View } from 'react-native'; +import styleSheet from './EarnTokenSelector.styles'; +import Text, { + TextColor, + TextVariant, +} from '../../../../../component-library/components/Texts/Text'; +import AvatarToken from '../../../../../component-library/components/Avatars/Avatar/variants/AvatarToken'; +import SelectButton, { + SelectButtonSize, +} from '../../../../../component-library/components/Select/SelectButton'; +import { AvatarSize } from '../../../../../component-library/components/Avatars/Avatar'; +import { useNavigation } from '@react-navigation/native'; +import Routes from '../../../../../constants/navigation/Routes'; +import NetworkAssetLogo from '../../../NetworkAssetLogo'; +import Badge, { + BadgeVariant, +} from '../../../../../component-library/components/Badges/Badge'; +import BadgeWrapper from '../../../../../component-library/components/Badges/BadgeWrapper'; +import { useSelector } from 'react-redux'; +import { selectNetworkName } from '../../../../../selectors/networkInfos'; +import { getNetworkImageSource } from '../../../../../util/networks'; +import { useEarnTokenDetails } from '../../hooks/useEarnTokenDetails'; +import { TokenI } from '../../../Tokens/types'; + +interface EarnTokenSelectorProps { + token: TokenI; +} + +const EarnTokenSelector = ({ token }: EarnTokenSelectorProps) => { + const { styles } = useStyles(styleSheet, {}); + const navigation = useNavigation(); + const networkName = useSelector(selectNetworkName); + const { getTokenWithBalanceAndApr } = useEarnTokenDetails(); + const tokenDetails = getTokenWithBalanceAndApr(token); + + const handlePress = () => { + navigation.navigate('StakeModals', { + screen: Routes.STAKING.MODALS.EARN_TOKEN_LIST, + }); + }; + + const renderTokenAvatar = () => { + if (token.isNative) { + return ( + <NetworkAssetLogo + chainId={token.chainId ?? ''} + ticker={token.ticker ?? ''} + big={false} + biggest={false} + testID={`earn-token-selector-${token.symbol}-${token.chainId}`} + style={styles.networkAvatar} + /> + ); + } + + return ( + <AvatarToken + name={token.symbol} + imageSource={{ uri: token.image }} + size={AvatarSize.Md} + /> + ); + }; + + const renderStartAccessory = () => ( + <View style={styles.startAccessoryContainer}> + <BadgeWrapper + badgeElement={ + <Badge + variant={BadgeVariant.Network} + name={networkName} + // @ts-expect-error The utils/network file is still JS and this function expects a networkType that should be optional + imageSource={getNetworkImageSource({ chainId: token.chainId })} + /> + } + > + {renderTokenAvatar()} + </BadgeWrapper> + <Text variant={TextVariant.BodyMD} style={styles.tokenText}> + {token.name} + </Text> + </View> + ); + + const renderEndAccessory = () => ( + <View style={styles.endAccessoryContainer}> + <Text variant={TextVariant.BodyMD} color={TextColor.Success}> + {`${tokenDetails.apr}% APR`} + </Text> + {tokenDetails.tokenBalanceFormatted && ( + <Text variant={TextVariant.BodyMD} color={TextColor.Alternative}> + {tokenDetails.tokenBalanceFormatted} + </Text> + )} + </View> + ); + + return ( + <SelectButton + size={SelectButtonSize.Lg} + style={styles.container} + onPress={handlePress} + startAccessory={renderStartAccessory()} + endAccessory={renderEndAccessory()} + testID="earn-token-selector" + /> + ); +}; + +export default EarnTokenSelector; diff --git a/app/components/UI/Stake/components/GasImpactModal/__snapshots__/GasImpactModal.test.tsx.snap b/app/components/UI/Stake/components/GasImpactModal/__snapshots__/GasImpactModal.test.tsx.snap index 7524889bc42a..3cf92c2eea41 100644 --- a/app/components/UI/Stake/components/GasImpactModal/__snapshots__/GasImpactModal.test.tsx.snap +++ b/app/components/UI/Stake/components/GasImpactModal/__snapshots__/GasImpactModal.test.tsx.snap @@ -135,11 +135,14 @@ exports[`GasImpactModal render matches snapshot 1`] = ` > <View style={ - { - "backgroundColor": "#ffffff", - "flexDirection": "row", - "padding": 16, - } + [ + { + "backgroundColor": "#ffffff", + "flexDirection": "row", + "padding": 16, + }, + false, + ] } testID="header" > diff --git a/app/components/UI/Stake/components/MaxInputModal/__snapshots__/MaxInputModal.test.tsx.snap b/app/components/UI/Stake/components/MaxInputModal/__snapshots__/MaxInputModal.test.tsx.snap index 300843b1a21d..cb11a4c38b81 100644 --- a/app/components/UI/Stake/components/MaxInputModal/__snapshots__/MaxInputModal.test.tsx.snap +++ b/app/components/UI/Stake/components/MaxInputModal/__snapshots__/MaxInputModal.test.tsx.snap @@ -375,7 +375,7 @@ exports[`MaxInputModal render matches snapshot 1`] = ` "borderTopLeftRadius": 8, "borderTopRightRadius": 8, "borderWidth": 1, - "maxHeight": 1314, + "maxHeight": 1334, "overflow": "hidden", "paddingBottom": 0, "shadowColor": "#0000001A", @@ -425,11 +425,14 @@ exports[`MaxInputModal render matches snapshot 1`] = ` > <View style={ - { - "backgroundColor": "#ffffff", - "flexDirection": "row", - "padding": 16, - } + [ + { + "backgroundColor": "#ffffff", + "flexDirection": "row", + "padding": 16, + }, + false, + ] } testID="header" > diff --git a/app/components/UI/Stake/components/PoolStakingLearnMoreModal/__snapshots__/PoolStakingLearnMoreModal.test.tsx.snap b/app/components/UI/Stake/components/PoolStakingLearnMoreModal/__snapshots__/PoolStakingLearnMoreModal.test.tsx.snap index 2e0b7b9282fd..29fbb2cff9ec 100644 --- a/app/components/UI/Stake/components/PoolStakingLearnMoreModal/__snapshots__/PoolStakingLearnMoreModal.test.tsx.snap +++ b/app/components/UI/Stake/components/PoolStakingLearnMoreModal/__snapshots__/PoolStakingLearnMoreModal.test.tsx.snap @@ -109,11 +109,14 @@ exports[`PoolStakingLearnMoreModal render matches snapshot 1`] = ` <View> <View style={ - { - "backgroundColor": "#ffffff", - "flexDirection": "row", - "padding": 16, - } + [ + { + "backgroundColor": "#ffffff", + "flexDirection": "row", + "padding": 16, + }, + false, + ] } testID="header" > diff --git a/app/components/UI/Stake/components/StakeButton/StakeButton.test.tsx b/app/components/UI/Stake/components/StakeButton/StakeButton.test.tsx index 2aada3df5b42..bd620863d504 100644 --- a/app/components/UI/Stake/components/StakeButton/StakeButton.test.tsx +++ b/app/components/UI/Stake/components/StakeButton/StakeButton.test.tsx @@ -4,12 +4,16 @@ import { WalletViewSelectorsIDs } from '../../../../../../e2e/selectors/wallet/W import StakeButton from './index'; import Routes from '../../../../../constants/navigation/Routes'; import renderWithProvider from '../../../../../util/test/renderWithProvider'; -import { MOCK_STAKED_ETH_ASSET } from '../../__mocks__/mockData'; +import { MOCK_ETH_MAINNET_ASSET } from '../../__mocks__/mockData'; import { useMetrics } from '../../../../hooks/useMetrics'; import { MetricsEventBuilder } from '../../../../../core/Analytics/MetricsEventBuilder'; import { mockNetworkState } from '../../../../../util/test/network'; import AppConstants from '../../../../../core/AppConstants'; import useStakingEligibility from '../../hooks/useStakingEligibility'; +import { RootState } from '../../../../../reducers'; +import { SolScope } from '@metamask/keyring-api'; +import Engine from '../../../../../core/Engine'; +import { STAKE_INPUT_VIEW_ACTIONS } from '../../Views/StakeInputView/StakeInputView.types'; const mockNavigate = jest.fn(); @@ -53,6 +57,9 @@ jest.mock('../../../../../core/Engine', () => ({ }), findNetworkClientIdByChainId: () => 'mainnet', }, + MultichainNetworkController: { + setActiveNetwork: jest.fn(), + }, }, })); @@ -68,6 +75,7 @@ jest.mock('../../hooks/useStakingEligibility', () => ({ })), })); +// Update the top-level mock to use a mockImplementation that we can change jest.mock('../../hooks/useStakingChain', () => ({ __esModule: true, default: jest.fn(() => ({ @@ -75,6 +83,9 @@ jest.mock('../../hooks/useStakingChain', () => ({ })), })); +// Import the mock function to control it in tests +const useStakingChain = jest.requireMock('../../hooks/useStakingChain').default; + const STATE_MOCK = { engine: { backgroundState: { @@ -83,12 +94,32 @@ const STATE_MOCK = { chainId: '0x1', }), }, + MultichainNetworkController: { + isEvmSelected: true, + selectedMultichainNetworkChainId: SolScope.Mainnet, + + multichainNetworkConfigurationsByChainId: { + 'bip122:000000000019d6689c085ae165831e93': { + chainId: 'bip122:000000000019d6689c085ae165831e93', + name: 'Bitcoin Mainnet', + nativeCurrency: 'bip122:000000000019d6689c085ae165831e93/slip44:0', + isEvm: false, + }, + 'solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp': { + chainId: 'solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp', + name: 'Solana Mainnet', + nativeCurrency: + 'solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp/token:EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v', + isEvm: false, + }, + }, + }, }, }, -}; +} as unknown as RootState; const renderComponent = (state = STATE_MOCK) => - renderWithProvider(<StakeButton asset={MOCK_STAKED_ETH_ASSET} />, { + renderWithProvider(<StakeButton asset={MOCK_ETH_MAINNET_ASSET} />, { state, }); @@ -140,11 +171,20 @@ describe('StakeButton', () => { await waitFor(() => { expect(mockNavigate).toHaveBeenCalledWith('StakeScreens', { screen: Routes.STAKING.STAKE, + params: { + token: MOCK_ETH_MAINNET_ASSET, + action: STAKE_INPUT_VIEW_ACTIONS.STAKE, + }, }); }); }); it('navigates to Stake Input screen when on unsupported network', async () => { + // Update the mock for this specific test + useStakingChain.mockImplementation(() => ({ + isStakingSupportedChain: false, + })); + const UNSUPPORTED_NETWORK_STATE = { engine: { backgroundState: { @@ -153,14 +193,45 @@ describe('StakeButton', () => { chainId: '0x89', // Polygon }), }, + MultichainNetworkController: { + isEvmSelected: true, + selectedMultichainNetworkChainId: SolScope.Mainnet, + + multichainNetworkConfigurationsByChainId: { + 'bip122:000000000019d6689c085ae165831e93': { + chainId: 'bip122:000000000019d6689c085ae165831e93', + name: 'Bitcoin Mainnet', + nativeCurrency: + 'bip122:000000000019d6689c085ae165831e93/slip44:0', + isEvm: false, + }, + 'solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp': { + chainId: 'solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp', + name: 'Solana Mainnet', + nativeCurrency: + 'solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp/token:EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v', + isEvm: false, + }, + }, + }, }, }, - }; + } as unknown as RootState; + + const spySetActiveNetwork = jest.spyOn( + Engine.context.MultichainNetworkController, + 'setActiveNetwork', + ); const { getByTestId } = renderComponent(UNSUPPORTED_NETWORK_STATE); fireEvent.press(getByTestId(WalletViewSelectorsIDs.STAKE_BUTTON)); await waitFor(() => { + expect(spySetActiveNetwork).toHaveBeenCalled(); expect(mockNavigate).toHaveBeenCalledWith('StakeScreens', { screen: Routes.STAKING.STAKE, + params: { + token: MOCK_ETH_MAINNET_ASSET, + action: STAKE_INPUT_VIEW_ACTIONS.STAKE, + }, }); }); }); diff --git a/app/components/UI/Stake/components/StakeButton/index.tsx b/app/components/UI/Stake/components/StakeButton/index.tsx index 9e18af410f03..091da64a0996 100644 --- a/app/components/UI/Stake/components/StakeButton/index.tsx +++ b/app/components/UI/Stake/components/StakeButton/index.tsx @@ -6,7 +6,7 @@ import { useSelector } from 'react-redux'; import AppConstants from '../../../../../core/AppConstants'; import { MetaMetricsEvents, useMetrics } from '../../../../hooks/useMetrics'; import { getDecimalChainId } from '../../../../../util/networks'; -import { selectChainId } from '../../../../../selectors/networkController'; +import { selectEvmChainId } from '../../../../../selectors/networkController'; import { Pressable } from 'react-native'; import Text, { TextColor, @@ -27,6 +27,7 @@ import { StakeSDKProvider } from '../../sdk/stakeSdkProvider'; import { EVENT_LOCATIONS } from '../../constants/events'; import useStakingChain from '../../hooks/useStakingChain'; import Engine from '../../../../../core/Engine'; +import { STAKE_INPUT_VIEW_ACTIONS } from '../../Views/StakeInputView/StakeInputView.types'; interface StakeButtonProps { asset: TokenI; @@ -38,17 +39,23 @@ const StakeButtonContent = ({ asset }: StakeButtonProps) => { const { trackEvent, createEventBuilder } = useMetrics(); const browserTabs = useSelector((state: RootState) => state.browser.tabs); - const chainId = useSelector(selectChainId); + const chainId = useSelector(selectEvmChainId); const { isEligible } = useStakingEligibility(); const { isStakingSupportedChain } = useStakingChain(); const onStakeButtonPress = async () => { if (!isStakingSupportedChain) { - const { NetworkController } = Engine.context; - await NetworkController.setActiveNetwork('mainnet'); + const { MultichainNetworkController } = Engine.context; + await MultichainNetworkController.setActiveNetwork('mainnet'); } if (isEligible) { - navigation.navigate('StakeScreens', { screen: Routes.STAKING.STAKE }); + navigation.navigate('StakeScreens', { + screen: Routes.STAKING.STAKE, + params: { + token: asset, + action: STAKE_INPUT_VIEW_ACTIONS.STAKE, + }, + }); } else { const existingStakeTab = browserTabs.find((tab: BrowserTab) => tab.url.includes(AppConstants.STAKE.URL), diff --git a/app/components/UI/Stake/components/StakingBalance/StakingBalance.test.tsx b/app/components/UI/Stake/components/StakingBalance/StakingBalance.test.tsx index 667d5b0074b2..be64ebf09431 100644 --- a/app/components/UI/Stake/components/StakingBalance/StakingBalance.test.tsx +++ b/app/components/UI/Stake/components/StakingBalance/StakingBalance.test.tsx @@ -6,9 +6,10 @@ import { strings } from '../../../../../../locales/i18n'; import Routes from '../../../../../constants/navigation/Routes'; import { Image } from 'react-native'; import { + MOCK_ETH_MAINNET_ASSET, MOCK_GET_POOLED_STAKES_API_RESPONSE, MOCK_GET_VAULT_RESPONSE, - MOCK_STAKED_ETH_ASSET, + MOCK_STAKED_ETH_MAINNET_ASSET, } from '../../__mocks__/mockData'; import { createMockAccountsControllerState } from '../../../../../util/test/accountsControllerTestUtils'; import { backgroundState } from '../../../../../util/test/initial-root-state'; @@ -16,6 +17,7 @@ import { backgroundState } from '../../../../../util/test/initial-root-state'; import * as networks from '../../../../../util/networks'; import { mockNetworkState } from '../../../../../util/test/network'; import { CHAIN_IDS } from '@metamask/transaction-controller'; +import { STAKE_INPUT_VIEW_ACTIONS } from '../../Views/StakeInputView/StakeInputView.types'; const MOCK_ADDRESS_1 = '0x0'; @@ -96,8 +98,8 @@ jest.mock('../../hooks/useVaultData', () => ({ jest.mock('../../hooks/useBalance', () => ({ __esModule: true, default: () => ({ - stakedBalanceWei: MOCK_STAKED_ETH_ASSET.balance, - stakedBalanceFiat: MOCK_STAKED_ETH_ASSET.balanceFiat, + stakedBalanceWei: MOCK_STAKED_ETH_MAINNET_ASSET.balance, + stakedBalanceFiat: MOCK_STAKED_ETH_MAINNET_ASSET.balanceFiat, }), })); @@ -128,7 +130,7 @@ describe('StakingBalance', () => { it('render matches snapshot', () => { const { toJSON } = renderWithProvider( - <StakingBalance asset={MOCK_STAKED_ETH_ASSET} />, + <StakingBalance asset={MOCK_STAKED_ETH_MAINNET_ASSET} />, { state: mockInitialState }, ); expect(toJSON()).toMatchSnapshot(); @@ -137,7 +139,7 @@ describe('StakingBalance', () => { it('should match the snapshot when portfolio view is enabled ', () => { jest.spyOn(networks, 'isPortfolioViewEnabled').mockReturnValue(true); const { toJSON } = renderWithProvider( - <StakingBalance asset={MOCK_STAKED_ETH_ASSET} />, + <StakingBalance asset={MOCK_STAKED_ETH_MAINNET_ASSET} />, { state: mockInitialState }, ); expect(toJSON()).toMatchSnapshot(); @@ -145,7 +147,7 @@ describe('StakingBalance', () => { it('redirects to StakeInputView on stake button click', async () => { const { getByText } = renderWithProvider( - <StakingBalance asset={MOCK_STAKED_ETH_ASSET} />, + <StakingBalance asset={MOCK_ETH_MAINNET_ASSET} />, { state: mockInitialState }, ); @@ -156,12 +158,16 @@ describe('StakingBalance', () => { expect(mockNavigate).toHaveBeenCalledTimes(1); expect(mockNavigate).toHaveBeenCalledWith('StakeScreens', { screen: Routes.STAKING.STAKE, + params: { + token: MOCK_ETH_MAINNET_ASSET, + action: STAKE_INPUT_VIEW_ACTIONS.STAKE, + }, }); }); it('redirects to UnstakeInputView on unstake button click', async () => { const { getByText } = renderWithProvider( - <StakingBalance asset={MOCK_STAKED_ETH_ASSET} />, + <StakingBalance asset={MOCK_STAKED_ETH_MAINNET_ASSET} />, { state: mockInitialState }, ); @@ -177,7 +183,9 @@ describe('StakingBalance', () => { it('should not render if asset chainId is not a staking supporting chain', () => { const { queryByText, queryByTestId } = renderWithProvider( - <StakingBalance asset={{ ...MOCK_STAKED_ETH_ASSET, chainId: '0x4' }} />, + <StakingBalance + asset={{ ...MOCK_STAKED_ETH_MAINNET_ASSET, chainId: '0x4' }} + />, { state: mockInitialState }, ); expect(queryByTestId('staking-balance-container')).toBeNull(); @@ -188,7 +196,7 @@ describe('StakingBalance', () => { it('should render claim link and action buttons if supported asset.chainId is not selected chainId', () => { const { queryByText, queryByTestId } = renderWithProvider( - <StakingBalance asset={MOCK_STAKED_ETH_ASSET} />, + <StakingBalance asset={MOCK_STAKED_ETH_MAINNET_ASSET} />, { state: { ...mockInitialState, diff --git a/app/components/UI/Stake/components/StakingBalance/StakingBalance.tsx b/app/components/UI/Stake/components/StakingBalance/StakingBalance.tsx index 65a4091f43a6..560eda26094f 100644 --- a/app/components/UI/Stake/components/StakingBalance/StakingBalance.tsx +++ b/app/components/UI/Stake/components/StakingBalance/StakingBalance.tsx @@ -194,6 +194,7 @@ const StakingBalanceContent = ({ asset }: StakingBalanceProps) => { )} <StakingButtons + asset={asset} style={styles.buttonsContainer} hasEthToUnstake={hasEthToUnstake} hasStakedPositions={hasStakedPositions} diff --git a/app/components/UI/Stake/components/StakingBalance/StakingBanners/ClaimBanner/ClaimBanner.test.tsx b/app/components/UI/Stake/components/StakingBalance/StakingBanners/ClaimBanner/ClaimBanner.test.tsx index 0034606b5e10..c2eb05488774 100644 --- a/app/components/UI/Stake/components/StakingBalance/StakingBanners/ClaimBanner/ClaimBanner.test.tsx +++ b/app/components/UI/Stake/components/StakingBalance/StakingBanners/ClaimBanner/ClaimBanner.test.tsx @@ -31,6 +31,9 @@ jest.mock('../../../../../../../core/Engine', () => ({ NetworkController: { setActiveNetwork: jest.fn(), }, + MultichainNetworkController: { + setActiveNetwork: jest.fn(), + }, }, })); @@ -104,7 +107,7 @@ describe('ClaimBanner', () => { fireEvent.press(claimButton); expect( - Engine.context.NetworkController.setActiveNetwork, + Engine.context.MultichainNetworkController.setActiveNetwork, ).toHaveBeenCalledWith('mainnet'); }); @@ -120,7 +123,7 @@ describe('ClaimBanner', () => { expect(claimButton.props.disabled).toBe(true); expect( - Engine.context.NetworkController.setActiveNetwork, + Engine.context.MultichainNetworkController.setActiveNetwork, ).not.toHaveBeenCalled(); expect(mockAttemptPoolStakedClaimTransaction).toHaveBeenCalledTimes(1); }); diff --git a/app/components/UI/Stake/components/StakingBalance/StakingBanners/ClaimBanner/ClaimBanner.tsx b/app/components/UI/Stake/components/StakingBalance/StakingBanners/ClaimBanner/ClaimBanner.tsx index 7273be716090..a5625ed504f0 100644 --- a/app/components/UI/Stake/components/StakingBalance/StakingBanners/ClaimBanner/ClaimBanner.tsx +++ b/app/components/UI/Stake/components/StakingBalance/StakingBanners/ClaimBanner/ClaimBanner.tsx @@ -26,7 +26,7 @@ import { EVENT_LOCATIONS } from '../../../../constants/events'; import Engine from '../../../../../../../core/Engine'; import useStakingChain from '../../../../hooks/useStakingChain'; import { useStakeContext } from '../../../../hooks/useStakeContext'; -import { selectChainId } from '../../../../../../../selectors/networkController'; +import { selectEvmChainId } from '../../../../../../../selectors/networkController'; import { hexToNumber } from '@metamask/utils'; type StakeBannerProps = Pick<BannerProps, 'style'> & { @@ -38,13 +38,13 @@ const ClaimBanner = ({ claimableAmount, style }: StakeBannerProps) => { const { trackEvent, createEventBuilder } = useMetrics(); const [isSubmittingClaimTransaction, setIsSubmittingClaimTransaction] = useState(false); - const { NetworkController } = Engine.context; + const { MultichainNetworkController } = Engine.context; const activeAccount = useSelector(selectSelectedInternalAccount); const [shouldAttemptClaim, setShouldAttemptClaim] = useState(false); const { attemptPoolStakedClaimTransaction } = usePoolStakedClaim(); const { stakingContract } = useStakeContext(); const { pooledStakesData, refreshPooledStakes } = usePooledStakes(); - const chainId = useSelector(selectChainId); + const chainId = useSelector(selectEvmChainId); const { isStakingSupportedChain } = useStakingChain(); const attemptClaim = useCallback(async () => { @@ -124,7 +124,7 @@ const ClaimBanner = ({ claimableAmount, style }: StakeBannerProps) => { const onClaimPress = async () => { setShouldAttemptClaim(true); if (!isStakingSupportedChain) { - await NetworkController.setActiveNetwork('mainnet'); + await MultichainNetworkController.setActiveNetwork('mainnet'); } }; diff --git a/app/components/UI/Stake/components/StakingBalance/StakingButtons/StakingButtons.test.tsx b/app/components/UI/Stake/components/StakingBalance/StakingButtons/StakingButtons.test.tsx index c7e5e0e91849..8d76a77a9133 100644 --- a/app/components/UI/Stake/components/StakingBalance/StakingButtons/StakingButtons.test.tsx +++ b/app/components/UI/Stake/components/StakingBalance/StakingButtons/StakingButtons.test.tsx @@ -15,6 +15,8 @@ import { NavigationProp, ParamListBase, } from '@react-navigation/native'; +import { MOCK_ETH_MAINNET_ASSET } from '../../../__mocks__/mockData'; +import { STAKE_INPUT_VIEW_ACTIONS } from '../../../Views/StakeInputView/StakeInputView.types'; jest.mock('@react-navigation/native', () => ({ ...jest.requireActual('@react-navigation/native'), @@ -26,6 +28,9 @@ jest.mock('../../../../../../core/Engine', () => ({ NetworkController: { setActiveNetwork: jest.fn(), }, + MultichainNetworkController: { + setActiveNetwork: jest.fn(), + }, }, })); @@ -82,6 +87,7 @@ describe('StakingButtons', () => { style: {}, hasStakedPositions: true, hasEthToUnstake: true, + asset: MOCK_ETH_MAINNET_ASSET, }; const { getByText } = renderWithProvider(<StakingButtons {...props} />, { state: mockInitialState, @@ -98,6 +104,7 @@ describe('StakingButtons', () => { style: {}, hasStakedPositions: true, hasEthToUnstake: true, + asset: MOCK_ETH_MAINNET_ASSET, }; const { getByText } = renderWithProvider(<StakingButtons {...props} />, { state: mockSepoliaNetworkState, @@ -108,10 +115,14 @@ describe('StakingButtons', () => { }); expect( - Engine.context.NetworkController.setActiveNetwork, + Engine.context.MultichainNetworkController.setActiveNetwork, ).toHaveBeenCalledWith('mainnet'); expect(navigate).toHaveBeenCalledWith('StakeScreens', { screen: Routes.STAKING.STAKE, + params: { + action: STAKE_INPUT_VIEW_ACTIONS.STAKE, + token: MOCK_ETH_MAINNET_ASSET, + }, }); }); @@ -123,6 +134,7 @@ describe('StakingButtons', () => { style: {}, hasStakedPositions: true, hasEthToUnstake: true, + asset: MOCK_ETH_MAINNET_ASSET, }; const { getByText } = renderWithProvider(<StakingButtons {...props} />, { state: mockSepoliaNetworkState, @@ -133,7 +145,7 @@ describe('StakingButtons', () => { }); expect( - Engine.context.NetworkController.setActiveNetwork, + Engine.context.MultichainNetworkController.setActiveNetwork, ).toHaveBeenCalledWith('mainnet'); expect(navigate).toHaveBeenCalledWith('StakeScreens', { screen: Routes.STAKING.UNSTAKE, diff --git a/app/components/UI/Stake/components/StakingBalance/StakingButtons/StakingButtons.tsx b/app/components/UI/Stake/components/StakingBalance/StakingButtons/StakingButtons.tsx index c488492cd58b..1cd96e4bc6c9 100644 --- a/app/components/UI/Stake/components/StakingBalance/StakingButtons/StakingButtons.tsx +++ b/app/components/UI/Stake/components/StakingBalance/StakingButtons/StakingButtons.tsx @@ -10,31 +10,35 @@ import { useNavigation } from '@react-navigation/native'; import Routes from '../../../../../../constants/navigation/Routes'; import { useMetrics, MetaMetricsEvents } from '../../../../../hooks/useMetrics'; import { useSelector } from 'react-redux'; -import { selectChainId } from '../../../../../../selectors/networkController'; +import { selectEvmChainId } from '../../../../../../selectors/networkController'; import { EVENT_LOCATIONS } from '../../../constants/events'; import useStakingChain from '../../../hooks/useStakingChain'; import Engine from '../../../../../../core/Engine'; +import { STAKE_INPUT_VIEW_ACTIONS } from '../../../Views/StakeInputView/StakeInputView.types'; +import { TokenI } from '../../../../Tokens/types'; interface StakingButtonsProps extends Pick<ViewProps, 'style'> { + asset: TokenI; hasStakedPositions: boolean; hasEthToUnstake: boolean; } const StakingButtons = ({ style, + asset, hasStakedPositions, hasEthToUnstake, }: StakingButtonsProps) => { const { navigate } = useNavigation(); const { styles } = useStyles(styleSheet, {}); const { trackEvent, createEventBuilder } = useMetrics(); - const chainId = useSelector(selectChainId); + const chainId = useSelector(selectEvmChainId); const { isStakingSupportedChain } = useStakingChain(); - const { NetworkController } = Engine.context; + const { MultichainNetworkController } = Engine.context; const handleIsStakingSupportedChain = async () => { if (!isStakingSupportedChain) { - await NetworkController.setActiveNetwork('mainnet'); + await MultichainNetworkController.setActiveNetwork('mainnet'); } }; @@ -57,7 +61,13 @@ const StakingButtons = ({ const onStakePress = async () => { await handleIsStakingSupportedChain(); - navigate('StakeScreens', { screen: Routes.STAKING.STAKE }); + navigate('StakeScreens', { + screen: Routes.STAKING.STAKE, + params: { + token: asset, + action: STAKE_INPUT_VIEW_ACTIONS.STAKE, + }, + }); trackEvent( createEventBuilder(MetaMetricsEvents.STAKE_BUTTON_CLICKED) .addProperties({ diff --git a/app/components/UI/Stake/components/StakingConfirmation/TokenValueStack/TokenValueStack.test.tsx b/app/components/UI/Stake/components/StakingConfirmation/TokenValueStack/TokenValueStack.test.tsx index bcc0060c5556..f6700dca1c6c 100644 --- a/app/components/UI/Stake/components/StakingConfirmation/TokenValueStack/TokenValueStack.test.tsx +++ b/app/components/UI/Stake/components/StakingConfirmation/TokenValueStack/TokenValueStack.test.tsx @@ -4,6 +4,7 @@ import TokenValueStack from './TokenValueStack'; import { Image } from 'react-native'; import { TokenValueStackProps } from './TokenValueStack.types'; import { renderFromWei } from '../../../../../../util/number'; +import { backgroundState } from '../../../../../../util/test/initial-root-state'; jest.mock('../../../../../hooks/useIpfsGateway', () => jest.fn()); @@ -21,6 +22,15 @@ describe('TokenValueStack', () => { const { getByText, toJSON } = renderWithProvider( <TokenValueStack {...props} />, + { + state: { + engine: { + backgroundState: { + ...backgroundState, + }, + }, + }, + }, ); expect( diff --git a/app/components/UI/Stake/components/StakingConfirmation/TokenValueStack/TokenValueStack.tsx b/app/components/UI/Stake/components/StakingConfirmation/TokenValueStack/TokenValueStack.tsx index 8d98a2a05fb5..6204a09af399 100644 --- a/app/components/UI/Stake/components/StakingConfirmation/TokenValueStack/TokenValueStack.tsx +++ b/app/components/UI/Stake/components/StakingConfirmation/TokenValueStack/TokenValueStack.tsx @@ -9,7 +9,7 @@ import Text, { TextVariant, TextColor, } from '../../../../../../component-library/components/Texts/Text'; -import { selectNetworkName } from '../../../../../../selectors/networkInfos'; +import { selectEvmNetworkName } from '../../../../../../selectors/networkInfos'; import { useStyles } from '../../../../../hooks/useStyles'; import NetworkMainAssetLogo from '../../../../NetworkMainAssetLogo'; import styleSheet from './TokenValueStack.styles'; @@ -25,7 +25,7 @@ const TokenValueStack = ({ }: TokenValueStackProps) => { const { styles } = useStyles(styleSheet, {}); - const networkName = useSelector(selectNetworkName); + const networkName = useSelector(selectEvmNetworkName); return ( <View style={[styles.tokenValueStackContainer, style]}> diff --git a/app/components/UI/Stake/components/StakingEarnings/StakingEarningsHistory/StakingEarningsHistory.test.tsx b/app/components/UI/Stake/components/StakingEarnings/StakingEarningsHistory/StakingEarningsHistory.test.tsx index f2bf3bd0a507..bf5ec1571ee0 100644 --- a/app/components/UI/Stake/components/StakingEarnings/StakingEarningsHistory/StakingEarningsHistory.test.tsx +++ b/app/components/UI/Stake/components/StakingEarnings/StakingEarningsHistory/StakingEarningsHistory.test.tsx @@ -2,7 +2,7 @@ import React from 'react'; import { fireEvent } from '@testing-library/react-native'; import StakingEarningsHistory from './StakingEarningsHistory'; import useStakingEarningsHistory from '../../../hooks/useStakingEarningsHistory'; -import { MOCK_STAKED_ETH_ASSET } from '../../../__mocks__/mockData'; +import { MOCK_STAKED_ETH_MAINNET_ASSET } from '../../../__mocks__/mockData'; import renderWithProvider from '../../../../../../util/test/renderWithProvider'; import { MOCK_ACCOUNTS_CONTROLLER_STATE } from '../../../../../../util/test/accountsControllerTestUtils'; import { backgroundState } from '../../../../../../util/test/initial-root-state'; @@ -82,7 +82,9 @@ describe('StakingEarningsHistory', () => { it('renders correctly with earnings history', () => { const { getByText } = renderWithProvider( - <StakingEarningsHistory asset={MOCK_STAKED_ETH_ASSET} />, + <StakingEarningsHistory + asset={{ ...MOCK_STAKED_ETH_MAINNET_ASSET, ticker: 'ETH' }} + />, { state: mockInitialState, }, @@ -125,7 +127,7 @@ describe('StakingEarningsHistory', () => { }); const { getByText, queryByText } = renderWithProvider( - <StakingEarningsHistory asset={MOCK_STAKED_ETH_ASSET} />, + <StakingEarningsHistory asset={MOCK_STAKED_ETH_MAINNET_ASSET} />, { state: mockInitialState, }, @@ -281,7 +283,7 @@ describe('StakingEarningsHistory', () => { }); const { getByText, queryByText } = renderWithProvider( - <StakingEarningsHistory asset={MOCK_STAKED_ETH_ASSET} />, + <StakingEarningsHistory asset={MOCK_STAKED_ETH_MAINNET_ASSET} />, { state: mockInitialState, }, @@ -303,7 +305,7 @@ describe('StakingEarningsHistory', () => { it('calls onTimePeriodChange and updates the selected time period', () => { const { getByText } = renderWithProvider( - <StakingEarningsHistory asset={MOCK_STAKED_ETH_ASSET} />, + <StakingEarningsHistory asset={MOCK_STAKED_ETH_MAINNET_ASSET} />, { state: mockInitialState, }, diff --git a/app/components/UI/Stake/components/StakingEarnings/StakingEarningsHistory/StakingEarningsHistory.tsx b/app/components/UI/Stake/components/StakingEarnings/StakingEarningsHistory/StakingEarningsHistory.tsx index edd467066ca4..b5e410dbe765 100644 --- a/app/components/UI/Stake/components/StakingEarnings/StakingEarningsHistory/StakingEarningsHistory.tsx +++ b/app/components/UI/Stake/components/StakingEarnings/StakingEarningsHistory/StakingEarningsHistory.tsx @@ -11,7 +11,7 @@ import { selectCurrencyRates, selectCurrentCurrency, } from '../../../../../../selectors/currencyRateController'; -import { selectNetworkConfigurations } from '../../../../../../selectors/networkController'; +import { selectEvmNetworkConfigurationsByChainId } from '../../../../../../selectors/networkController'; import { selectTokenMarketData } from '../../../../../../selectors/tokenRatesController'; import { Hex } from '../../../../../../util/smart-transactions/smart-publish-hook'; import { @@ -42,7 +42,9 @@ const StakingEarningsHistory = ({ asset }: StakingEarningsHistoryProps) => { const currentCurrency: string = useSelector(selectCurrentCurrency); const multiChainMarketData = useSelector(selectTokenMarketData); const multiChainCurrencyRates = useSelector(selectCurrencyRates); - const networkConfigurations = useSelector(selectNetworkConfigurations); + const networkConfigurations = useSelector( + selectEvmNetworkConfigurationsByChainId, + ); const { earningsHistory, isLoading: isLoadingEarningsHistory, diff --git a/app/components/UI/Stake/components/StakingEarnings/StakingEarningsHistory/StakingEarningsHistory.utils.test.ts b/app/components/UI/Stake/components/StakingEarnings/StakingEarningsHistory/StakingEarningsHistory.utils.test.ts index 5bba1a3c2563..8a0818a73946 100644 --- a/app/components/UI/Stake/components/StakingEarnings/StakingEarningsHistory/StakingEarningsHistory.utils.test.ts +++ b/app/components/UI/Stake/components/StakingEarnings/StakingEarningsHistory/StakingEarningsHistory.utils.test.ts @@ -1,6 +1,6 @@ import { - MOCK_STAKED_ETH_ASSET, - MOCK_USDC_ASSET, + MOCK_STAKED_ETH_MAINNET_ASSET, + MOCK_USDC_MAINNET_ASSET, } from '../../../__mocks__/mockData'; import { getEntryTimePeriodGroupInfo, @@ -97,36 +97,36 @@ describe('StakingEarningsHistory Utils', () => { describe('formatRewardsWei', () => { it('should format rewards value with special characters', () => { - const result = formatRewardsWei('1', MOCK_STAKED_ETH_ASSET); + const result = formatRewardsWei('1', MOCK_STAKED_ETH_MAINNET_ASSET); expect(result).toBe('< 0.00001'); }); it('should format rewards value with special characters when asset.isETH is false', () => { - const result = formatRewardsWei('1', MOCK_USDC_ASSET); + const result = formatRewardsWei('1', MOCK_USDC_MAINNET_ASSET); expect(result).toBe('< 0.00001'); }); it('should format rewards value without special characters', () => { - const result = formatRewardsWei('1', MOCK_STAKED_ETH_ASSET, true); + const result = formatRewardsWei('1', MOCK_STAKED_ETH_MAINNET_ASSET, true); expect(result).toBe('0.000000000000000001'); }); it('should format rewards value without special characters when asset.isETH is false', () => { - const result = formatRewardsWei('1', MOCK_USDC_ASSET, true); + const result = formatRewardsWei('1', MOCK_USDC_MAINNET_ASSET, true); expect(result).toBe('0.000001'); }); }); describe('formatRewardsNumber', () => { it('should format short rewards number correctly', () => { - const result = formatRewardsNumber(1.456, MOCK_STAKED_ETH_ASSET); + const result = formatRewardsNumber(1.456, MOCK_STAKED_ETH_MAINNET_ASSET); expect(result).toBe('1.456'); }); it('should format long rewards number with 5 decimals', () => { const result = formatRewardsNumber( 1.456234265436536, - MOCK_STAKED_ETH_ASSET, + MOCK_STAKED_ETH_MAINNET_ASSET, ); expect(result).toBe('1.45623'); }); @@ -136,7 +136,7 @@ describe('StakingEarningsHistory Utils', () => { it('should format rewards to fiat currency', () => { const result = formatRewardsFiat( '1000000000000000000', - MOCK_STAKED_ETH_ASSET, + MOCK_STAKED_ETH_MAINNET_ASSET, 'usd', 2000, 1, @@ -147,7 +147,7 @@ describe('StakingEarningsHistory Utils', () => { it('should format rewards to fiat currency when asset.isETH is false', () => { const result = formatRewardsFiat( '1000000', - MOCK_USDC_ASSET, + MOCK_USDC_MAINNET_ASSET, 'usd', 2000, 1, diff --git a/app/components/UI/Stake/components/StakingEarnings/StakingEarningsHistory/StakingEarningsHistory.utils.ts b/app/components/UI/Stake/components/StakingEarnings/StakingEarningsHistory/StakingEarningsHistory.utils.ts index 0c305cca66b1..7c818d96c2d4 100644 --- a/app/components/UI/Stake/components/StakingEarnings/StakingEarningsHistory/StakingEarningsHistory.utils.ts +++ b/app/components/UI/Stake/components/StakingEarnings/StakingEarningsHistory/StakingEarningsHistory.utils.ts @@ -36,16 +36,16 @@ export const getEntryTimePeriodGroupInfo = ( listGroupLabel: '', listGroupHeader: '', }; - const dayLabel = date.toLocaleString('fullwide', { + const dayLabel = date.toLocaleString(undefined, { month: 'long', day: 'numeric', timeZone: 'UTC', }); - const monthLabel = date.toLocaleString('fullwide', { + const monthLabel = date.toLocaleString(undefined, { month: 'long', timeZone: 'UTC', }); - const yearLabel = date.toLocaleString('fullwide', { + const yearLabel = date.toLocaleString(undefined, { year: 'numeric', timeZone: 'UTC', }); diff --git a/app/components/UI/Stake/components/StakingEarnings/StakingEarningsHistoryButton/StakingEarningsHistoryButton.test.tsx b/app/components/UI/Stake/components/StakingEarnings/StakingEarningsHistoryButton/StakingEarningsHistoryButton.test.tsx index abeeb275305c..05a969951314 100644 --- a/app/components/UI/Stake/components/StakingEarnings/StakingEarningsHistoryButton/StakingEarningsHistoryButton.test.tsx +++ b/app/components/UI/Stake/components/StakingEarnings/StakingEarningsHistoryButton/StakingEarningsHistoryButton.test.tsx @@ -3,7 +3,7 @@ import { fireEvent, waitFor } from '@testing-library/react-native'; import { WalletViewSelectorsIDs } from '../../../../../../../e2e/selectors/wallet/WalletView.selectors'; import Routes from '../../../../../../constants/navigation/Routes'; import renderWithProvider from '../../../../../../util/test/renderWithProvider'; -import { MOCK_STAKED_ETH_ASSET } from '../../../__mocks__/mockData'; +import { MOCK_STAKED_ETH_MAINNET_ASSET } from '../../../__mocks__/mockData'; import StakingEarningsHistoryButton from './StakingEarningsHistoryButton'; const mockNavigate = jest.fn(); @@ -20,7 +20,7 @@ jest.mock('@react-navigation/native', () => { const renderComponent = () => renderWithProvider( - <StakingEarningsHistoryButton asset={MOCK_STAKED_ETH_ASSET} />, + <StakingEarningsHistoryButton asset={MOCK_STAKED_ETH_MAINNET_ASSET} />, ); describe('StakingEarningsHistoryButton', () => { @@ -45,7 +45,7 @@ describe('StakingEarningsHistoryButton', () => { await waitFor(() => { expect(mockNavigate).toHaveBeenCalledWith('StakeScreens', { screen: Routes.STAKING.EARNINGS_HISTORY, - params: { asset: MOCK_STAKED_ETH_ASSET }, + params: { asset: MOCK_STAKED_ETH_MAINNET_ASSET }, }); }); }); diff --git a/app/components/UI/Stake/constants/events.ts b/app/components/UI/Stake/constants/events.ts index 052b76894931..0f75612c90a6 100644 --- a/app/components/UI/Stake/constants/events.ts +++ b/app/components/UI/Stake/constants/events.ts @@ -13,5 +13,6 @@ export const EVENT_LOCATIONS = { STAKING_EARNINGS: 'StakingEarnings', UNSTAKE_INPUT_VIEW: 'UnstakeInputView', UNSTAKE_CONFIRMATION_VIEW: 'UnstakeConfirmationView', + WALLET_ACTIONS_BOTTOM_SHEET: 'WalletActionsBottomSheet', UNIT_TEST: 'UnitTest', }; diff --git a/app/components/UI/Stake/hooks/useBalance.ts b/app/components/UI/Stake/hooks/useBalance.ts index 9cd42b9638ea..b58b44f660c4 100644 --- a/app/components/UI/Stake/hooks/useBalance.ts +++ b/app/components/UI/Stake/hooks/useBalance.ts @@ -7,7 +7,7 @@ import { selectCurrencyRates, selectCurrentCurrency, } from '../../../../selectors/currencyRateController'; -import { selectChainId } from '../../../../selectors/networkController'; +import { selectEvmChainId } from '../../../../selectors/networkController'; import { hexToBN, renderFromWei, @@ -17,7 +17,7 @@ import { const useBalance = (chainId?: Hex) => { const accountsByChainId = useSelector(selectAccountsByChainId); - const selectedChainId = useSelector(selectChainId); + const selectedChainId = useSelector(selectEvmChainId); const selectedAddress = useSelector( selectSelectedInternalAccountFormattedAddress, ); diff --git a/app/components/UI/Stake/hooks/useEarnTokenDetails.test.tsx b/app/components/UI/Stake/hooks/useEarnTokenDetails.test.tsx new file mode 100644 index 000000000000..81e82d273cad --- /dev/null +++ b/app/components/UI/Stake/hooks/useEarnTokenDetails.test.tsx @@ -0,0 +1,148 @@ +import { renderHookWithProvider } from '../../../../util/test/renderWithProvider'; +import { createMockToken } from '../testUtils'; +import { CHAIN_IDS } from '@metamask/transaction-controller'; +import { TokenI } from '../../Tokens/types'; +import { backgroundState } from '../../../../util/test/initial-root-state'; +import { Hex } from '@metamask/utils'; +import { useEarnTokenDetails } from './useEarnTokenDetails'; +import { MOCK_ETH_MAINNET_ASSET } from '../__mocks__/mockData'; + +const mockAddress = '0x0000000000000000000000000000000000000000' as Hex; +const usdcAddress = '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48' as Hex; + +const mockInitialState = { + ...backgroundState, + engine: { + backgroundState: { + ...backgroundState, + TokenBalancesController: { + tokenBalances: { + [mockAddress]: { + [CHAIN_IDS.MAINNET]: { + [mockAddress]: '0x56bc75e2d63100000', // 100 ETH + [usdcAddress]: '0x5f5e100', // 100 USDC + }, + }, + }, + }, + TokenRatesController: { + marketData: { + [CHAIN_IDS.MAINNET]: { + [mockAddress]: { + tokenAddress: mockAddress, + price: 2000, + currency: 'USD', + }, + [usdcAddress]: { + tokenAddress: usdcAddress, + price: 1, + currency: 'USD', + }, + }, + }, + }, + CurrencyRateController: { + conversionRate: 1, + currentCurrency: 'USD', + nativeCurrency: 'ETH', + currencyRates: { + ETH: { + conversionRate: 2000, + }, + USDC: { + conversionRate: 1, + }, + }, + }, + NetworkController: { + selectedNetworkClientId: CHAIN_IDS.MAINNET, + networkConfigurationsByChainId: { + [CHAIN_IDS.MAINNET]: { + chainId: CHAIN_IDS.MAINNET, + nativeCurrency: 'ETH', + ticker: 'ETH', + }, + }, + }, + }, + }, +} as const; + +const mockEthToken: TokenI = { + ...MOCK_ETH_MAINNET_ASSET, + balance: '100', + balanceFiat: '$200,000.00', +}; + +const mockUSDCToken: TokenI = { + address: usdcAddress, + symbol: 'USDC', + decimals: 6, + isETH: false, + isNative: false, + chainId: CHAIN_IDS.MAINNET, + ticker: 'USDC', + balance: '100', + aggregators: [], + image: '', + name: 'USD Coin', + balanceFiat: '$100.00', + logo: '', +}; + +describe('useEarnTokenDetails', () => { + it('returns token details with balance and APR for ETH', () => { + const { result } = renderHookWithProvider(() => useEarnTokenDetails(), { + state: mockInitialState, + }); + + const tokenDetails = result.current.getTokenWithBalanceAndApr(mockEthToken); + + expect(tokenDetails).toEqual({ + ...mockEthToken, + apr: '2.3', + tokenBalanceFormatted: '100 ETH', + balanceFiat: '$200,000.00', + }); + }); + + it('returns token details with balance and APR for USDC', () => { + const { result } = renderHookWithProvider(() => useEarnTokenDetails(), { + state: mockInitialState, + }); + + const tokenDetails = + result.current.getTokenWithBalanceAndApr(mockUSDCToken); + + expect(tokenDetails).toEqual({ + ...mockUSDCToken, + apr: '4.5', + tokenBalanceFormatted: '100 USDC', + balanceFiat: '$100', + }); + }); + + it('returns 0.0 APR for unsupported tokens', () => { + const mockToken = { + ...createMockToken({ + chainId: CHAIN_IDS.MAINNET, + name: 'Unsupported Token', + symbol: 'UNS', + decimals: 18, + address: '0x123' as Hex, + ticker: 'UNS', + }), + isNative: false, + isETH: false, + balanceFiat: '$0.00', + }; + + const { result } = renderHookWithProvider(() => useEarnTokenDetails(), { + state: mockInitialState, + }); + + const tokenDetails = result.current.getTokenWithBalanceAndApr(mockToken); + + expect(tokenDetails.apr).toBe('0.0'); + }); +}); diff --git a/app/components/UI/Stake/hooks/useEarnTokenDetails.ts b/app/components/UI/Stake/hooks/useEarnTokenDetails.ts new file mode 100644 index 000000000000..be3a9914d56e --- /dev/null +++ b/app/components/UI/Stake/hooks/useEarnTokenDetails.ts @@ -0,0 +1,76 @@ +import { useCallback } from 'react'; +import { useSelector } from 'react-redux'; +import { TokenI } from '../../Tokens/types'; +import { Hex } from '@metamask/utils'; +import { + selectCurrencyRates, + selectCurrentCurrency, +} from '../../../../selectors/currencyRateController'; +import { selectTokensBalances } from '../../../../selectors/tokenBalancesController'; +import { selectTokenMarketData } from '../../../../selectors/tokenRatesController'; +import { selectSelectedInternalAccountAddress } from '../../../../selectors/accountsController'; +import { selectNetworkConfigurations } from '../../../../selectors/networkController'; +import { deriveBalanceFromAssetMarketDetails } from '../../Tokens/util'; + +// Mock APR values - will be replaced with real API data later +const MOCK_APR_VALUES: { [symbol: string]: string } = { + Ethereum: '2.3', + USDC: '4.5', + USDT: '4.1', + DAI: '5.0', +}; + +interface EarnTokenDetails extends TokenI { + apr: string; + tokenBalanceFormatted: string; + balanceFiat: string; +} + +export const useEarnTokenDetails = () => { + const multiChainTokenBalance = useSelector(selectTokensBalances); + const multiChainMarketData = useSelector(selectTokenMarketData); + const multiChainCurrencyRates = useSelector(selectCurrencyRates); + const selectedInternalAccountAddress = useSelector( + selectSelectedInternalAccountAddress, + ); + const networkConfigurations = useSelector(selectNetworkConfigurations); + const currentCurrency = useSelector(selectCurrentCurrency); + + const getTokenWithBalanceAndApr = useCallback( + (token: TokenI): EarnTokenDetails => { + const tokenChainId = token.chainId as Hex; + const nativeCurrency = + networkConfigurations?.[tokenChainId]?.nativeCurrency; + + const { balanceValueFormatted, balanceFiat } = + deriveBalanceFromAssetMarketDetails( + token, + multiChainMarketData?.[tokenChainId] || {}, + multiChainTokenBalance?.[selectedInternalAccountAddress as Hex]?.[ + tokenChainId + ] || {}, + multiChainCurrencyRates?.[nativeCurrency]?.conversionRate ?? 0, + currentCurrency || '', + ); + + return { + ...token, + tokenBalanceFormatted: balanceValueFormatted, + balanceFiat, + apr: MOCK_APR_VALUES[token.symbol] || '0.0', + }; + }, + [ + currentCurrency, + multiChainCurrencyRates, + multiChainMarketData, + multiChainTokenBalance, + networkConfigurations, + selectedInternalAccountAddress, + ], + ); + + return { + getTokenWithBalanceAndApr, + }; +}; diff --git a/app/components/UI/Stake/hooks/usePooledStakes.ts b/app/components/UI/Stake/hooks/usePooledStakes.ts index 63eb1ea92ec9..05553eb8ec83 100644 --- a/app/components/UI/Stake/hooks/usePooledStakes.ts +++ b/app/components/UI/Stake/hooks/usePooledStakes.ts @@ -1,7 +1,7 @@ import { useSelector, useDispatch } from 'react-redux'; import { useCallback, useEffect, useMemo, useState } from 'react'; import { selectSelectedInternalAccountFormattedAddress } from '../../../../selectors/accountsController'; -import { selectChainId } from '../../../../selectors/networkController'; +import { selectEvmChainId } from '../../../../selectors/networkController'; import { hexToNumber } from '@metamask/utils'; import { PooledStake } from '@metamask/stake-sdk'; import { @@ -20,7 +20,7 @@ export enum StakeAccountStatus { const usePooledStakes = () => { const dispatch = useDispatch(); - const chainId = useSelector(selectChainId); + const chainId = useSelector(selectEvmChainId); const selectedAddress = useSelector(selectSelectedInternalAccountFormattedAddress) || ''; const { pooledStakesData, exchangeRate } = useSelector( diff --git a/app/components/UI/Stake/hooks/useStakingChain.ts b/app/components/UI/Stake/hooks/useStakingChain.ts index 934d79010233..35620f67e5cd 100644 --- a/app/components/UI/Stake/hooks/useStakingChain.ts +++ b/app/components/UI/Stake/hooks/useStakingChain.ts @@ -1,11 +1,11 @@ -import { Hex } from '@metamask/utils'; +import { CaipChainId, Hex } from '@metamask/utils'; import { useSelector } from 'react-redux'; import { getDecimalChainId } from '../../../../util/networks'; -import { selectChainId } from '../../../../selectors/networkController'; +import { selectEvmChainId } from '../../../../selectors/networkController'; import { isSupportedChain } from '@metamask/stake-sdk'; const useStakingChain = () => { - const chainId = useSelector(selectChainId); + const chainId = useSelector(selectEvmChainId); const isStakingSupportedChain = isSupportedChain(getDecimalChainId(chainId)); @@ -14,7 +14,7 @@ const useStakingChain = () => { }; }; -export const useStakingChainByChainId = (chainId: Hex) => { +export const useStakingChainByChainId = (chainId: Hex | CaipChainId) => { const isStakingSupportedChain = isSupportedChain(getDecimalChainId(chainId)); return { diff --git a/app/components/UI/Stake/hooks/useVaultApyAverages.tsx b/app/components/UI/Stake/hooks/useVaultApyAverages.tsx index cde6dc9afa6d..7b870ba556dd 100644 --- a/app/components/UI/Stake/hooks/useVaultApyAverages.tsx +++ b/app/components/UI/Stake/hooks/useVaultApyAverages.tsx @@ -1,7 +1,7 @@ import { useCallback, useEffect, useState } from 'react'; import { hexToNumber } from '@metamask/utils'; import { useDispatch, useSelector } from 'react-redux'; -import { selectChainId } from '../../../../selectors/networkController'; +import { selectEvmChainId } from '../../../../selectors/networkController'; import { selectVaultApyAverages, setVaultApyAverages, @@ -16,7 +16,7 @@ const useVaultApyAverages = () => { const dispatch = useDispatch(); const { vaultApyAverages } = useSelector(selectVaultApyAverages); - const chainId = useSelector(selectChainId); + const chainId = useSelector(selectEvmChainId); const fetchVaultAprs = useCallback(async () => { setIsLoading(true); diff --git a/app/components/UI/Stake/hooks/useVaultApys.tsx b/app/components/UI/Stake/hooks/useVaultApys.tsx index 6b5d94d9b8d5..4ad6233587e9 100644 --- a/app/components/UI/Stake/hooks/useVaultApys.tsx +++ b/app/components/UI/Stake/hooks/useVaultApys.tsx @@ -1,7 +1,7 @@ import { useCallback, useEffect, useState } from 'react'; import { hexToNumber } from '@metamask/utils'; import { useDispatch, useSelector } from 'react-redux'; -import { selectChainId } from '../../../../selectors/networkController'; +import { selectEvmChainId } from '../../../../selectors/networkController'; import { selectVaultApys, setVaultApys, @@ -16,7 +16,7 @@ const useVaultApys = () => { const { vaultApys } = useSelector(selectVaultApys); - const chainId = useSelector(selectChainId); + const chainId = useSelector(selectEvmChainId); const fetchVaultApys = useCallback(async () => { setIsLoading(true); diff --git a/app/components/UI/Stake/hooks/useVaultData.ts b/app/components/UI/Stake/hooks/useVaultData.ts index 46b994ed920c..42330831554c 100644 --- a/app/components/UI/Stake/hooks/useVaultData.ts +++ b/app/components/UI/Stake/hooks/useVaultData.ts @@ -1,6 +1,6 @@ import { useSelector, useDispatch } from 'react-redux'; import { useEffect, useCallback, useState } from 'react'; -import { selectChainId } from '../../../../selectors/networkController'; +import { selectEvmChainId } from '../../../../selectors/networkController'; import { hexToNumber } from '@metamask/utils'; import { selectVaultData, @@ -10,7 +10,7 @@ import { stakingApiService } from '../sdk/stakeSdkProvider'; const useVaultData = () => { const dispatch = useDispatch(); - const chainId = useSelector(selectChainId); + const chainId = useSelector(selectEvmChainId); const { vaultData } = useSelector(selectVaultData); const [isLoading, setIsLoading] = useState(false); diff --git a/app/components/UI/Stake/routes/index.tsx b/app/components/UI/Stake/routes/index.tsx index 9357dfcdf88b..f71a6b624b7e 100644 --- a/app/components/UI/Stake/routes/index.tsx +++ b/app/components/UI/Stake/routes/index.tsx @@ -2,6 +2,7 @@ import React from 'react'; import { createStackNavigator } from '@react-navigation/stack'; import StakeInputView from '../Views/StakeInputView/StakeInputView'; import Routes from '../../../../constants/navigation/Routes'; +import { Confirm } from '../../../Views/confirmations/Confirm/Confirm'; import StakeConfirmationView from '../Views/StakeConfirmationView/StakeConfirmationView'; import UnstakeInputView from '../Views/UnstakeInputView/UnstakeInputView'; import UnstakeConfirmationView from '../Views/UnstakeConfirmationView/UnstakeConfirmationView'; @@ -10,6 +11,8 @@ import MaxInputModal from '../components/MaxInputModal'; import GasImpactModal from '../components/GasImpactModal'; import StakeEarningsHistoryView from '../Views/StakeEarningsHistoryView/StakeEarningsHistoryView'; import PoolStakingLearnMoreModal from '../components/PoolStakingLearnMoreModal'; +import EarnTokenList from '../components/EarnTokenList'; + const Stack = createStackNavigator(); const ModalStack = createStackNavigator(); @@ -42,6 +45,10 @@ const StakeScreenStack = () => ( name={Routes.STAKING.EARNINGS_HISTORY} component={StakeEarningsHistoryView} /> + <Stack.Screen + name={Routes.STANDALONE_CONFIRMATIONS.STAKE_DEPOSIT} + component={Confirm} + /> </Stack.Navigator> </StakeSDKProvider> ); @@ -68,6 +75,11 @@ const StakeModalStack = () => ( component={GasImpactModal} options={{ headerShown: false }} /> + <ModalStack.Screen + name={Routes.STAKING.MODALS.EARN_TOKEN_LIST} + component={EarnTokenList} + options={{ headerShown: false }} + /> </ModalStack.Navigator> </StakeSDKProvider> ); diff --git a/app/components/UI/Stake/sdk/stakeSdkProvider.tsx b/app/components/UI/Stake/sdk/stakeSdkProvider.tsx index 0aed1447591d..488b37bbf81b 100644 --- a/app/components/UI/Stake/sdk/stakeSdkProvider.tsx +++ b/app/components/UI/Stake/sdk/stakeSdkProvider.tsx @@ -14,7 +14,7 @@ import React, { import { getProviderByChainId } from '../../../../util/notifications'; import { useSelector } from 'react-redux'; import { - selectChainId, + selectEvmChainId, selectNetworkClientId, } from '../../../../selectors/networkController'; import { getDecimalChainId } from '../../../../util/networks'; @@ -39,7 +39,7 @@ export const StakeSDKProvider: React.FC< PropsWithChildren<StakeProviderProps> > = ({ children }) => { const [sdkType, setSdkType] = useState(StakingType.POOLED); - const chainId = useSelector(selectChainId); + const chainId = useSelector(selectEvmChainId); const networkClientId = useSelector(selectNetworkClientId); const sdkService = useMemo(() => { diff --git a/app/components/UI/Stake/testUtils/index.ts b/app/components/UI/Stake/testUtils/index.ts new file mode 100644 index 000000000000..e28f0a9d0f4e --- /dev/null +++ b/app/components/UI/Stake/testUtils/index.ts @@ -0,0 +1,110 @@ +import { CHAIN_IDS } from '@metamask/transaction-controller'; +import { + CreateMockTokenOptions, + TOKENS_WITH_DEFAULT_OPTIONS, +} from './testUtils.types'; + +export const HOLESKY_CHAIN_ID = '0x4268'; + +export const createMockToken = (options: CreateMockTokenOptions) => { + const { + chainId, + name, + symbol, + address = '0xabc', + decimals = 0, + isStaked = false, + ticker = '', + } = options; + + const isETH = symbol === 'ETH' || symbol === 'Ethereum'; + + const nativeChainIds = [ + CHAIN_IDS.MAINNET, + CHAIN_IDS.SEPOLIA, + HOLESKY_CHAIN_ID, + ]; + const isNative = nativeChainIds.includes(chainId) && isETH; + + return { + address, + aggregators: [], + balance: '', + balanceFiat: '', + chainId, + decimals: decimals ?? 0, + image: '', + isETH, + isNative, + isStaked, + logo: '', + name, + symbol, + ticker: ticker ?? symbol, + }; +}; + +export const getCreateMockTokenOptions = ( + chainId: (typeof CHAIN_IDS)[keyof typeof CHAIN_IDS], + token: TOKENS_WITH_DEFAULT_OPTIONS, +) => { + const tokenOptions: Record< + TOKENS_WITH_DEFAULT_OPTIONS, + Omit<CreateMockTokenOptions, 'chainId'> + > = { + ETH: { + name: 'Ethereum', + symbol: 'Ethereum', + ticker: 'ETH', + isStaked: false, + decimals: 18, + }, + STAKED_ETH: { + name: 'Staked Ethereum', + symbol: 'Ethereum', + ticker: 'ETH', + isStaked: true, + decimals: 18, + }, + USDC: { + name: 'USDC', + symbol: 'USDC', + ticker: 'USDC', + isStaked: false, + decimals: 6, + }, + USDT: { + name: 'Tether USD', + symbol: 'USDT', + ticker: 'USDT', + isStaked: false, + decimals: 6, + }, + DAI: { + name: 'Dai Stablecoin', + symbol: 'DAI', + ticker: 'DAI', + isStaked: false, + decimals: 18, + }, + LINK: { + name: 'Chainlink Token', + symbol: 'LINK', + ticker: 'LINK', + isStaked: false, + decimals: 18, + }, + MATIC: { + name: 'Matic Network Token', + symbol: 'MATIC', + ticker: 'MATIC', + isStaked: false, + decimals: 18, + }, + }; + + return { + chainId, + ...tokenOptions[token], + }; +}; diff --git a/app/components/UI/Stake/testUtils/testUtils.test.ts b/app/components/UI/Stake/testUtils/testUtils.test.ts new file mode 100644 index 000000000000..0d3a159ade6c --- /dev/null +++ b/app/components/UI/Stake/testUtils/testUtils.test.ts @@ -0,0 +1,96 @@ +import { CHAIN_IDS } from '@metamask/transaction-controller'; +import { createMockToken, getCreateMockTokenOptions } from '.'; +import { TOKENS_WITH_DEFAULT_OPTIONS } from './testUtils.types'; + +describe('Staking Test Utils', () => { + describe('createMockToken', () => { + it('creates a mock token mainnet ETH token', () => { + const token = createMockToken({ + chainId: CHAIN_IDS.MAINNET, + name: 'Ethereum', + symbol: 'Ethereum', + decimals: 18, + isStaked: false, + ticker: 'ETH', + }); + + expect(token).toStrictEqual({ + address: '0xabc', + aggregators: [], + balance: '', + balanceFiat: '', + chainId: '0x1', + decimals: 18, + image: '', + isETH: true, + isNative: true, + isStaked: false, + logo: '', + name: 'Ethereum', + symbol: 'Ethereum', + ticker: 'ETH', + }); + }); + + it('creates a mock USDC Base token', () => { + const token = createMockToken({ + chainId: CHAIN_IDS.BASE, + name: 'USD Coin', + symbol: 'USDC', + decimals: 18, + ticker: 'USDC', + }); + + expect(token).toStrictEqual({ + address: '0xabc', + aggregators: [], + balance: '', + balanceFiat: '', + chainId: '0x2105', + decimals: 18, + image: '', + isETH: false, + isNative: false, + isStaked: false, + logo: '', + name: 'USD Coin', + symbol: 'USDC', + ticker: 'USDC', + }); + }); + }); + + describe('getCreateMockTokenOptions', () => { + it('returns prebuilt options for mainnet ETH token mock', () => { + const options = getCreateMockTokenOptions( + CHAIN_IDS.MAINNET, + TOKENS_WITH_DEFAULT_OPTIONS.ETH, + ); + + expect(options).toStrictEqual({ + chainId: '0x1', + decimals: 18, + isStaked: false, + name: 'Ethereum', + symbol: 'Ethereum', + ticker: 'ETH', + }); + }); + + it('returns prebuilt options for BASE USDC token mock', () => { + const options = getCreateMockTokenOptions( + CHAIN_IDS.BASE, + TOKENS_WITH_DEFAULT_OPTIONS.USDC, + ); + + expect(options).toStrictEqual({ + chainId: '0x2105', + decimals: 6, + isStaked: false, + name: 'USDC', + symbol: 'USDC', + ticker: 'USDC', + }); + }); + }); +}); diff --git a/app/components/UI/Stake/testUtils/testUtils.types.ts b/app/components/UI/Stake/testUtils/testUtils.types.ts new file mode 100644 index 000000000000..ef267ca04ede --- /dev/null +++ b/app/components/UI/Stake/testUtils/testUtils.types.ts @@ -0,0 +1,21 @@ +import { CHAIN_IDS } from '@metamask/transaction-controller'; + +export interface CreateMockTokenOptions { + chainId: (typeof CHAIN_IDS)[keyof typeof CHAIN_IDS]; + name: string; + symbol: string; + address?: string; + ticker?: string; + decimals?: number; + isStaked?: boolean; +} + +export enum TOKENS_WITH_DEFAULT_OPTIONS { + ETH = 'ETH', + STAKED_ETH = 'STAKED_ETH', + USDT = 'USDT', + USDC = 'USDC', + DAI = 'DAI', + LINK = 'LINK', + MATIC = 'MATIC', +} diff --git a/app/components/UI/Stake/utils/token/index.ts b/app/components/UI/Stake/utils/token/index.ts new file mode 100644 index 000000000000..f2f16a9b3e98 --- /dev/null +++ b/app/components/UI/Stake/utils/token/index.ts @@ -0,0 +1,69 @@ +import { isSupportedChain } from '@metamask/stake-sdk'; +import { CHAIN_IDS } from '@metamask/transaction-controller'; +import { getDecimalChainId } from '../../../../../util/networks'; +import { TokenI } from '../../../Tokens/types'; + +// Temporary: Will be replaced with supported vaults from API request +const HOLESKY_CHAIN_ID_HEX = '0x4268'; + +const SUPPORTED_STAKING_TOKENS = new Set(['Ethereum']); + +export const SUPPORTED_LENDING_TOKENS = new Set(['DAI', 'USDC', 'USDT']); + +const SUPPORTED_EARN_TOKENS = new Set([ + ...SUPPORTED_STAKING_TOKENS, + ...SUPPORTED_LENDING_TOKENS, +]); +const SUPPORTED_CHAIN_IDS = new Set<string>([ + CHAIN_IDS.MAINNET, + CHAIN_IDS.BASE, + CHAIN_IDS.BSC, + CHAIN_IDS.SEPOLIA, + HOLESKY_CHAIN_ID_HEX, +]); + +export const getSupportedEarnTokens = (tokens: TokenI[]) => + Object.values(tokens).filter(({ isETH, isStaked, symbol, chainId }) => { + // We only support staking on Ethereum + if (isETH && !isSupportedChain(getDecimalChainId(chainId))) return false; + if (isStaked) return false; + + return ( + SUPPORTED_CHAIN_IDS.has(chainId as string) && + SUPPORTED_EARN_TOKENS.has(symbol) + ); + }); + +const removeStakingTokens = (tokens: TokenI[]) => { + const tokensCopy = [...tokens]; + + return tokensCopy.filter( + (token) => !SUPPORTED_STAKING_TOKENS.has(token.symbol), + ); +}; + +const removeLendingTokens = (tokens: TokenI[]) => { + const tokensCopy = [...tokens]; + return tokensCopy.filter( + (token) => !SUPPORTED_LENDING_TOKENS.has(token.symbol), + ); +}; + +export const filterEligibleTokens = ( + tokens: TokenI[], + options: { canStake: boolean; canLend: boolean }, +) => { + const { canStake = false, canLend = false } = options; + + let tokensCopy = [...tokens]; + + if (!canStake) { + tokensCopy = removeStakingTokens(tokensCopy); + } + + if (!canLend) { + tokensCopy = removeLendingTokens(tokensCopy); + } + + return tokensCopy; +}; diff --git a/app/components/UI/Stake/utils/token/token.test.ts b/app/components/UI/Stake/utils/token/token.test.ts new file mode 100644 index 000000000000..298284cbbc35 --- /dev/null +++ b/app/components/UI/Stake/utils/token/token.test.ts @@ -0,0 +1,161 @@ +import { + filterEligibleTokens, + getSupportedEarnTokens, + SUPPORTED_LENDING_TOKENS, +} from '.'; +import { TokenI } from '../../../Tokens/types'; +import { + MOCK_ACCOUNT_MULTI_CHAIN_TOKENS, + MOCK_SUPPORTED_EARN_TOKENS_NO_FIAT_BALANCE, +} from '../../__mocks__/mockData'; +import { CHAIN_IDS } from '@metamask/transaction-controller'; +import { createMockToken, getCreateMockTokenOptions } from '../../testUtils'; +import { TOKENS_WITH_DEFAULT_OPTIONS } from '../../testUtils/testUtils.types'; + +describe('tokenUtils', () => { + describe('getSupportedEarnTokens', () => { + const MOCK_ETH_TOKEN = createMockToken( + getCreateMockTokenOptions( + CHAIN_IDS.MAINNET, + TOKENS_WITH_DEFAULT_OPTIONS.ETH, + ), + ); + + const MOCK_STAKED_ETH_TOKEN = createMockToken( + getCreateMockTokenOptions( + CHAIN_IDS.MAINNET, + TOKENS_WITH_DEFAULT_OPTIONS.STAKED_ETH, + ), + ); + + const MOCK_MAINNET_DAI = createMockToken( + getCreateMockTokenOptions( + CHAIN_IDS.MAINNET, + TOKENS_WITH_DEFAULT_OPTIONS.DAI, + ), + ); + + const MOCK_MAINNET_USDC = createMockToken( + getCreateMockTokenOptions( + CHAIN_IDS.MAINNET, + TOKENS_WITH_DEFAULT_OPTIONS.USDC, + ), + ); + + const MOCK_MAINNET_USDT_NO_BALANCE = createMockToken( + getCreateMockTokenOptions( + CHAIN_IDS.MAINNET, + TOKENS_WITH_DEFAULT_OPTIONS.USDT, + ), + ); + + const MOCK_BASE_USDC = createMockToken({ + chainId: CHAIN_IDS.BASE, + name: 'USD Coin', + symbol: 'USDC', + ticker: 'USDC', + decimals: 6, + }); + + const MOCK_BSC_USDC = createMockToken({ + chainId: CHAIN_IDS.BSC, + name: 'USD Coin', + symbol: 'USDC', + ticker: 'USDC', + decimals: 6, + }); + + const MOCK_SEPOLIA_USDC = createMockToken({ + chainId: CHAIN_IDS.SEPOLIA, + name: 'USD Coin', + symbol: 'USDC', + ticker: 'USDC', + decimals: 6, + }); + + it('extracts supported stable coins from owned tokens', () => { + const result = getSupportedEarnTokens(MOCK_ACCOUNT_MULTI_CHAIN_TOKENS); + expect(result).toEqual(MOCK_SUPPORTED_EARN_TOKENS_NO_FIAT_BALANCE); + }); + + it('filters out Staked Ethereum', () => { + const tokens = [MOCK_ETH_TOKEN, MOCK_STAKED_ETH_TOKEN]; + const result = getSupportedEarnTokens(tokens); + expect(result).toEqual([MOCK_ETH_TOKEN]); + }); + + it('allows supported stablecoins on mainnet', () => { + const tokens = [ + MOCK_ETH_TOKEN, + MOCK_MAINNET_DAI, + MOCK_MAINNET_USDC, + MOCK_MAINNET_USDT_NO_BALANCE, + ]; + const result = getSupportedEarnTokens(tokens as TokenI[]); + expect(result).toEqual(tokens); + }); + + it('allows supported stablecoins on BASE', () => { + const tokens = [MOCK_ETH_TOKEN, MOCK_BASE_USDC]; + const result = getSupportedEarnTokens(tokens as TokenI[]); + expect(result).toEqual(tokens); + }); + + it('allows supported stablecoins on BSC', () => { + const tokens = [MOCK_ETH_TOKEN, MOCK_BSC_USDC]; + const result = getSupportedEarnTokens(tokens as TokenI[]); + expect(result).toEqual(tokens); + }); + + it('allows supported stablecoins on Sepolia', () => { + const tokens = [MOCK_ETH_TOKEN, MOCK_SEPOLIA_USDC]; + const result = getSupportedEarnTokens(tokens as TokenI[]); + expect(result).toEqual(tokens); + }); + + it('does not filter out tokens that have empty fiatBalance', () => { + const tokens = [MOCK_ETH_TOKEN, MOCK_MAINNET_USDT_NO_BALANCE]; + const result = getSupportedEarnTokens(tokens as TokenI[]); + expect(result).toEqual(tokens); + }); + }); + + describe('filterEligibleTokens', () => { + it('removes staking tokens if canStake is false', () => { + const withoutStakingTokens = + MOCK_SUPPORTED_EARN_TOKENS_NO_FIAT_BALANCE.filter( + (token) => token.symbol !== 'Ethereum', + ); + + const result = filterEligibleTokens( + MOCK_SUPPORTED_EARN_TOKENS_NO_FIAT_BALANCE, + { canStake: false, canLend: true }, + ); + + expect(result).toStrictEqual(withoutStakingTokens); + }); + + it('removes lending tokens if canLend is false', () => { + const withoutLendingTokens = + MOCK_SUPPORTED_EARN_TOKENS_NO_FIAT_BALANCE.filter( + (token) => !SUPPORTED_LENDING_TOKENS.has(token.symbol), + ); + + const result = filterEligibleTokens( + MOCK_SUPPORTED_EARN_TOKENS_NO_FIAT_BALANCE, + { canStake: true, canLend: false }, + ); + + expect(result).toStrictEqual(withoutLendingTokens); + }); + + it('returns empty list if user cannot stake or lend', () => { + const result = filterEligibleTokens( + MOCK_SUPPORTED_EARN_TOKENS_NO_FIAT_BALANCE, + { canStake: false, canLend: false }, + ); + + expect(result).toStrictEqual([]); + }); + }); +}); diff --git a/app/components/UI/Swaps/QuotesView.js b/app/components/UI/Swaps/QuotesView.js index 5cc6696b0617..5b8bfa716552 100644 --- a/app/components/UI/Swaps/QuotesView.js +++ b/app/components/UI/Swaps/QuotesView.js @@ -94,7 +94,7 @@ import { isHardwareAccount, } from '../../../util/address'; import { - selectChainId, + selectEvmChainId, selectIsEIP1559Network, selectSelectedNetworkClientId, selectTicker, @@ -492,23 +492,23 @@ function SwapsQuotesView({ const orderedAggregators = hasConversionRate ? Object.values(quoteValues).sort( - (a, b) => - Number(b.overallValueOfQuote) - Number(a.overallValueOfQuote), - ) + (a, b) => + Number(b.overallValueOfQuote) - Number(a.overallValueOfQuote), + ) : Object.values(quotes).sort((a, b) => { - const comparison = new BigNumber(b.destinationAmount).comparedTo( - a.destinationAmount, + const comparison = new BigNumber(b.destinationAmount).comparedTo( + a.destinationAmount, + ); + if (comparison === 0) { + // If the destination amount is the same, we sort by fees ascending + return ( + Number(quoteValues[a.aggregator]?.ethFee) - + Number(quoteValues[b.aggregator]?.ethFee) || 0 ); - if (comparison === 0) { - // If the destination amount is the same, we sort by fees ascending - return ( - Number(quoteValues[a.aggregator]?.ethFee) - - Number(quoteValues[b.aggregator]?.ethFee) || 0 - ); - } - return comparison; - // eslint-disable-next-line no-mixed-spaces-and-tabs - }); + } + return comparison; + // eslint-disable-next-line no-mixed-spaces-and-tabs + }); return orderedAggregators.map( (quoteValue) => quotes[quoteValue.aggregator], @@ -727,19 +727,19 @@ function SwapsQuotesView({ GAS_ESTIMATE_TYPES.ETH_GASPRICE, ].includes(gasEstimateType) ? weiToFiat( - toWei( - swapsUtils.calcTokenAmount( - new BigNumber(changedGasLimit, 10).times( - decGWEIToHexWEI(changedGasEstimate.gasPrice), - 16, - ), - 18, + toWei( + swapsUtils.calcTokenAmount( + new BigNumber(changedGasLimit, 10).times( + decGWEIToHexWEI(changedGasEstimate.gasPrice), + 16, ), + 18, ), - conversionRate, - currentCurrency, - // eslint-disable-next-line no-mixed-spaces-and-tabs - ) + ), + conversionRate, + currentCurrency, + // eslint-disable-next-line no-mixed-spaces-and-tabs + ) : '', chain_id: getDecimalChainId(chainId), }; @@ -1247,7 +1247,7 @@ function SwapsQuotesView({ sourceToken.decimals, ), token_to_amount: fromTokenMinimalUnitString( - selectedQuote.destinationAmount, + selectedQuote.destinationAmount, destinationToken.decimals, ), }; @@ -1804,9 +1804,9 @@ function SwapsQuotesView({ <Text reset bold> {!hasEnoughTokenBalance && !isSwapsNativeAsset(sourceToken) ? `${renderFromTokenMinimalUnit( - missingTokenBalance, - sourceToken.decimals, - )} ${sourceToken.symbol} ` + missingTokenBalance, + sourceToken.decimals, + )} ${sourceToken.symbol} ` : `${renderFromWei(missingEthBalance)} ${getTicker(ticker)} `} </Text> {!hasEnoughTokenBalance @@ -1814,10 +1814,10 @@ function SwapsQuotesView({ : `${strings('swaps.more_gas_to_complete')} `} {(isSwapsNativeAsset(sourceToken) || (hasEnoughTokenBalance && !hasEnoughEthBalance)) && ( - <Text link underline small onPress={buyEth}> - {strings('swaps.token_marketplace')} - </Text> - )} + <Text link underline small onPress={buyEth}> + {strings('swaps.token_marketplace')} + </Text> + )} </Alert> </View> )} @@ -1872,7 +1872,7 @@ function SwapsQuotesView({ {weiToFiat( toWei( selectedQuote.priceSlippage?.sourceAmountInETH || - 0, + 0, ), conversionRate, currentCurrency, @@ -2055,13 +2055,12 @@ function SwapsQuotesView({ {getTicker(ticker)} </Text> <Text primary bold upper> - {` ${ - weiToFiat( - toWei(selectedQuoteValue?.ethFee), - conversionRate, - currentCurrency, - ) || '' - }`} + {` ${weiToFiat( + toWei(selectedQuoteValue?.ethFee), + conversionRate, + currentCurrency, + ) || '' + }`} </Text> </View> ) : ( @@ -2075,13 +2074,12 @@ function SwapsQuotesView({ {primaryCurrency === 'ETH' ? ( <> <Text> - {`${ - weiToFiat( - toWei(selectedQuoteValue?.ethFee), - conversionRate, - currentCurrency, - ) || '' - } `} + {`${weiToFiat( + toWei(selectedQuoteValue?.ethFee), + conversionRate, + currentCurrency, + ) || '' + } `} </Text> <TouchableOpacity disabled={unableToSwap} @@ -2122,13 +2120,12 @@ function SwapsQuotesView({ </Text> </TouchableOpacity> <Text primary bold> - {` ${ - weiToFiat( - toWei(selectedQuoteValue?.ethFee), - conversionRate, - currentCurrency, - ) || '' - }`} + {` ${weiToFiat( + toWei(selectedQuoteValue?.ethFee), + conversionRate, + currentCurrency, + ) || '' + }`} </Text> </> )} @@ -2152,13 +2149,12 @@ function SwapsQuotesView({ {getTicker(ticker)} </Text> <Text upper> - {` ${ - weiToFiat( - toWei(selectedQuoteValue?.maxEthFee), - conversionRate, - currentCurrency, - ) || '' - }`} + {` ${weiToFiat( + toWei(selectedQuoteValue?.maxEthFee), + conversionRate, + currentCurrency, + ) || '' + }`} </Text> </View> </> @@ -2176,15 +2172,14 @@ function SwapsQuotesView({ <Text small primary> {primaryCurrency === 'ETH' ? ` ${renderFromWei( - toWei(selectedQuoteValue?.maxEthFee || '0x0'), - )} ${getTicker(ticker)}` // eslint-disable-line - : ` ${ - weiToFiat( - toWei(selectedQuoteValue?.maxEthFee), - conversionRate, - currentCurrency, - ) || '' // eslint-disable-next-line - }`} + toWei(selectedQuoteValue?.maxEthFee || '0x0'), + )} ${getTicker(ticker)}` // eslint-disable-line + : ` ${weiToFiat( + toWei(selectedQuoteValue?.maxEthFee), + conversionRate, + currentCurrency, + ) || '' // eslint-disable-next-line + }`} </Text> </FadeAnimationView> </> @@ -2280,8 +2275,8 @@ function SwapsQuotesView({ <Text style={styles.text}> {selectedQuote && selectedQuote?.fee > 0 ? strings('swaps.fee_text.fee_is_applied', { - fee: `${selectedQuote.fee}%`, - }) + fee: `${selectedQuote.fee}%`, + }) : strings('swaps.fee_text.fee_is_not_applied')} </Text> } @@ -2425,7 +2420,7 @@ SwapsQuotesView.propTypes = { const mapStateToProps = (state) => ({ accounts: selectAccounts(state), - chainId: selectChainId(state), + chainId: selectEvmChainId(state), networkClientId: selectSelectedNetworkClientId(state), ticker: selectTicker(state), balances: selectContractBalances(state), diff --git a/app/components/UI/Swaps/SwapsLiveness.ts b/app/components/UI/Swaps/SwapsLiveness.ts index 41a53f63ccd5..c29376ec502e 100644 --- a/app/components/UI/Swaps/SwapsLiveness.ts +++ b/app/components/UI/Swaps/SwapsLiveness.ts @@ -1,6 +1,6 @@ import { swapsUtils } from '@metamask/swaps-controller'; import { useCallback, useEffect } from 'react'; -import { selectChainId } from '../../../selectors/networkController'; +import { selectEvmChainId } from '../../../selectors/networkController'; import { AppState } from 'react-native'; import { useDispatch, useSelector } from 'react-redux'; import AppConstants from '../../../core/AppConstants'; @@ -16,7 +16,7 @@ const POLLING_FREQUENCY = AppConstants.SWAPS.LIVENESS_POLLING_FREQUENCY; function SwapLiveness() { const isLive = useSelector(swapsLivenessSelector); - const chainId = useSelector(selectChainId); + const chainId = useSelector(selectEvmChainId); const dispatch = useDispatch(); const setLiveness = useCallback( (_chainId, featureFlags) => { diff --git a/app/components/UI/Swaps/components/GasEditModal.js b/app/components/UI/Swaps/components/GasEditModal.js index d0fe924f73a3..02da9b3961f7 100644 --- a/app/components/UI/Swaps/components/GasEditModal.js +++ b/app/components/UI/Swaps/components/GasEditModal.js @@ -20,7 +20,7 @@ import { strings } from '../../../../../locales/i18n'; import AppConstants from '../../../../core/AppConstants'; import { useTheme } from '../../../../util/theme'; import { - selectChainId, + selectEvmChainId, selectTicker, } from '../../../../selectors/networkController'; import { @@ -546,7 +546,7 @@ const mapStateToProps = (state) => ({ conversionRate: selectConversionRate(state), currentCurrency: selectCurrentCurrency(state), ticker: selectTicker(state), - chainId: selectChainId(state), + chainId: selectEvmChainId(state), primaryCurrency: state.settings.primaryCurrency, }); diff --git a/app/components/UI/Swaps/components/TokenIcon.js b/app/components/UI/Swaps/components/TokenIcon.js index 2e201eaa107a..8585bb8c2473 100644 --- a/app/components/UI/Swaps/components/TokenIcon.js +++ b/app/components/UI/Swaps/components/TokenIcon.js @@ -100,6 +100,10 @@ function TokenIcon({ symbol, icon, medium, big, biggest, style, testID }) { return ethLogo; } + if (symbol === 'SOL') { + return imageIcons.SOLANA; + } + if (Object.keys(imageIcons).includes(symbol)) { return imageIcons[symbol]; } diff --git a/app/components/UI/Swaps/components/TokenSelectModal.js b/app/components/UI/Swaps/components/TokenSelectModal.js index 1de762642990..28fb9574c391 100644 --- a/app/components/UI/Swaps/components/TokenSelectModal.js +++ b/app/components/UI/Swaps/components/TokenSelectModal.js @@ -34,9 +34,8 @@ import useModalHandler from '../../../Base/hooks/useModalHandler'; import TokenImportModal from './TokenImportModal'; import { - selectChainId, - selectNetworkConfigurations, - selectProviderConfig, + selectEvmChainId, + selectEvmNetworkConfigurationsByChainId, } from '../../../../selectors/networkController'; import { selectConversionRate, @@ -145,7 +144,6 @@ function TokenSelectModal({ conversionRate, tokenExchangeRates, chainId, - providerConfig, networkConfigurations, balances, }) { @@ -155,7 +153,7 @@ function TokenSelectModal({ const searchInput = useRef(null); const list = useRef(); const [searchString, setSearchString] = useState(''); - const explorer = useBlockExplorer(providerConfig, networkConfigurations); + const explorer = useBlockExplorer(networkConfigurations); const [isTokenImportVisible, , showTokenImportModal, hideTokenImportModal] = useModalHandler(false); const { colors, themeAppearance } = useTheme(); @@ -551,10 +549,6 @@ TokenSelectModal.propTypes = { * Chain Id */ chainId: PropTypes.string, - /** - * Current network provider configuration - */ - providerConfig: PropTypes.object, /** * Network configurations */ @@ -568,9 +562,8 @@ const mapStateToProps = (state) => ({ selectedAddress: selectSelectedInternalAccountFormattedAddress(state), tokenExchangeRates: selectContractExchangeRates(state), balances: selectContractBalances(state), - chainId: selectChainId(state), - providerConfig: selectProviderConfig(state), - networkConfigurations: selectNetworkConfigurations(state), + chainId: selectEvmChainId(state), + networkConfigurations: selectEvmNetworkConfigurationsByChainId(state), }); export default connect(mapStateToProps)(TokenSelectModal); diff --git a/app/components/UI/Swaps/index.js b/app/components/UI/Swaps/index.js index 39bc76b001cf..6bb2f9d472ed 100644 --- a/app/components/UI/Swaps/index.js +++ b/app/components/UI/Swaps/index.js @@ -67,9 +67,8 @@ import { AlertType } from '../../Base/Alert'; import { isZero, gte } from '../../../util/lodash'; import { useTheme } from '../../../util/theme'; import { - selectChainId, - selectNetworkConfigurations, - selectProviderConfig, + selectEvmChainId, + selectEvmNetworkConfigurationsByChainId, selectSelectedNetworkClientId, } from '../../../selectors/networkController'; import { @@ -186,7 +185,6 @@ function SwapsAmountView({ selectedAddress, chainId, selectedNetworkClientId, - providerConfig, networkConfigurations, balances, tokensWithBalance, @@ -205,7 +203,7 @@ function SwapsAmountView({ const previousSelectedAddress = useRef(); - const explorer = useBlockExplorer(providerConfig, networkConfigurations); + const explorer = useBlockExplorer(networkConfigurations); const initialSource = route.params?.sourceToken ?? SWAPS_NATIVE_ADDRESS; const initialDestination = route.params?.destinationToken; @@ -987,10 +985,6 @@ SwapsAmountView.propTypes = { * An object containing token exchange rates in the format address => exchangeRate */ tokenExchangeRates: PropTypes.object, - /** - * Current network provider configuration - */ - providerConfig: PropTypes.object, /** * Chain Id */ @@ -1018,9 +1012,8 @@ const mapStateToProps = (state) => ({ conversionRate: selectConversionRate(state), currentCurrency: selectCurrentCurrency(state), tokenExchangeRates: selectContractExchangeRates(state), - providerConfig: selectProviderConfig(state), - networkConfigurations: selectNetworkConfigurations(state), - chainId: selectChainId(state), + networkConfigurations: selectEvmNetworkConfigurationsByChainId(state), + chainId: selectEvmChainId(state), selectedNetworkClientId: selectSelectedNetworkClientId(state), tokensWithBalance: swapsTokensWithBalanceSelector(state), tokensTopAssets: swapsTopAssetsSelector(state), diff --git a/app/components/UI/Swaps/utils/useBlockExplorer.js b/app/components/UI/Swaps/utils/useBlockExplorer.js index 190750b7b7c9..0644a61c8675 100644 --- a/app/components/UI/Swaps/utils/useBlockExplorer.js +++ b/app/components/UI/Swaps/utils/useBlockExplorer.js @@ -7,8 +7,14 @@ import { } from '../../../../util/networks'; import { strings } from '../../../../../locales/i18n'; import { getEtherscanBaseUrl } from '../../../../util/etherscan'; +import { useSelector } from 'react-redux'; +import { + selectEvmChainId, + selectProviderConfig, +} from '../../../../selectors/networkController'; +import { selectNetworkName } from '../../../../selectors/networkInfos'; -function useBlockExplorer(providerConfig, networkConfigurations) { +function useBlockExplorer(networkConfigurations, providerConfigTokenExplorer) { const [explorer, setExplorer] = useState({ name: '', value: null, @@ -16,12 +22,17 @@ function useBlockExplorer(providerConfig, networkConfigurations) { isRPC: false, baseUrl: '', }); + const providerConfig = useSelector(selectProviderConfig); + const chainId = useSelector(selectEvmChainId); + const networkName = useSelector(selectNetworkName); useEffect(() => { - if (providerConfig.type === RPC) { + const definitiveProviderConfig = + providerConfigTokenExplorer ?? providerConfig; + if (definitiveProviderConfig.type === RPC) { try { const blockExplorer = findBlockExplorerForRpc( - providerConfig.rpcUrl, + definitiveProviderConfig.rpcUrl, networkConfigurations, ); if (!blockExplorer) { @@ -54,13 +65,19 @@ function useBlockExplorer(providerConfig, networkConfigurations) { } else { setExplorer({ name: 'Etherscan', - value: providerConfig.chainId, + value: chainId, isValid: true, isRPC: false, - baseUrl: getEtherscanBaseUrl(providerConfig.type), + baseUrl: getEtherscanBaseUrl(definitiveProviderConfig.type), }); } - }, [networkConfigurations, providerConfig]); + }, [ + networkConfigurations, + providerConfig, + providerConfigTokenExplorer, + chainId, + networkName, + ]); const tx = useCallback( (hash) => { diff --git a/app/components/UI/SwitchCustomNetwork/__snapshots__/index.test.tsx.snap b/app/components/UI/SwitchCustomNetwork/__snapshots__/index.test.tsx.snap index 1af745784682..5ceb0f5aa0af 100644 --- a/app/components/UI/SwitchCustomNetwork/__snapshots__/index.test.tsx.snap +++ b/app/components/UI/SwitchCustomNetwork/__snapshots__/index.test.tsx.snap @@ -380,6 +380,7 @@ exports[`SwitchCustomNetwork should render correctly 1`] = ` accessibilityRole="button" accessible={true} activeOpacity={0.2} + disabled={false} onPress={[Function]} style={ [ diff --git a/app/components/UI/Tabs/TabThumbnail/TabThumbnail.test.tsx b/app/components/UI/Tabs/TabThumbnail/TabThumbnail.test.tsx index 8fcf4cf67d39..9f9ce2af4c00 100644 --- a/app/components/UI/Tabs/TabThumbnail/TabThumbnail.test.tsx +++ b/app/components/UI/Tabs/TabThumbnail/TabThumbnail.test.tsx @@ -2,33 +2,126 @@ import React from 'react'; import renderWithProvider from '../../../../util/test/renderWithProvider'; import { backgroundState } from '../../../../util/test/initial-root-state'; import TabThumbnail from './TabThumbnail'; -import { MOCK_ACCOUNTS_CONTROLLER_STATE } from '../../../../util/test/accountsControllerTestUtils'; - -const mockInitialState = { - wizard: { - step: 1, - }, - engine: { - backgroundState: { - ...backgroundState, - AccountsController: MOCK_ACCOUNTS_CONTROLLER_STATE, - }, - }, +import { fireEvent } from '@testing-library/react-native'; +import { strings } from '../../../../../locales/i18n'; + +const mockTab = { + url: 'https://example.com', + image: 'test-image-uri', + id: 123, }; describe('TabThumbnail', () => { + const mockOnClose = jest.fn(); + const mockOnSwitch = jest.fn(); + + beforeEach(() => { + jest.clearAllMocks(); + }); + it('should render correctly', () => { - const foo = () => null; const { toJSON } = renderWithProvider( - // eslint-disable-next-line react/jsx-no-bind <TabThumbnail - tab={{ url: 'about:blank', image: '', id: 123 }} + tab={mockTab} isActiveTab - onClose={foo} - onSwitch={foo} + onClose={mockOnClose} + onSwitch={mockOnSwitch} />, - { state: mockInitialState }, + { + state: { + engine: { + backgroundState, + }, + }, + }, ); expect(toJSON()).toMatchSnapshot(); }); + + it('should handle tab switching', () => { + const { getByLabelText } = renderWithProvider( + <TabThumbnail + tab={mockTab} + isActiveTab={false} + onClose={mockOnClose} + onSwitch={mockOnSwitch} + />, + { + state: { + engine: { + backgroundState, + }, + }, + }, + ); + + const switchButton = getByLabelText(strings('browser.switch_tab')); + fireEvent.press(switchButton); + + expect(mockOnSwitch).toHaveBeenCalledWith(mockTab); + }); + + it('should handle tab closing', () => { + const { getByLabelText } = renderWithProvider( + <TabThumbnail + tab={mockTab} + isActiveTab={false} + onClose={mockOnClose} + onSwitch={mockOnSwitch} + />, + { + state: { + engine: { + backgroundState, + }, + }, + }, + ); + + const closeButton = getByLabelText(strings('browser.close_tab')); + fireEvent.press(closeButton); + + expect(mockOnClose).toHaveBeenCalledWith(mockTab); + }); + + it('should apply active tab styles when isActiveTab is true', () => { + const { getByLabelText } = renderWithProvider( + <TabThumbnail + tab={mockTab} + isActiveTab + onClose={mockOnClose} + onSwitch={mockOnSwitch} + />, + { + state: { + engine: { + backgroundState, + }, + }, + }, + ); + + const switchButton = getByLabelText(strings('browser.switch_tab')); + expect(switchButton.props.style[1]).toBeTruthy(); // Check if activeTab style is applied + }); + + it('should not render footer when no selectedAccount', () => { + const { queryByTestId } = renderWithProvider( + <TabThumbnail + tab={mockTab} + isActiveTab={false} + onClose={mockOnClose} + onSwitch={mockOnSwitch} + />, + { + state: { + engine: { + backgroundState, + }, + }, + }, + ); + + expect(queryByTestId('footer-container')).toBeNull(); + }); }); diff --git a/app/components/UI/Tabs/TabThumbnail/TabThumbnail.tsx b/app/components/UI/Tabs/TabThumbnail/TabThumbnail.tsx index e7a0d49aeb24..099f66aa1dd0 100644 --- a/app/components/UI/Tabs/TabThumbnail/TabThumbnail.tsx +++ b/app/components/UI/Tabs/TabThumbnail/TabThumbnail.tsx @@ -52,7 +52,7 @@ const TabThumbnail = ({ tabTitle, ); const activeAddress = permittedAccountsByHostname[0]; - const { accounts } = useAccounts({}); + const { evmAccounts: accounts } = useAccounts({}); const selectedAccount = accounts.find( (account) => account.address.toLowerCase() === activeAddress?.toLowerCase(), ); @@ -96,7 +96,7 @@ const TabThumbnail = ({ <Image source={{ uri: tab.image }} style={styles.tabImage} /> </View> {selectedAccount && ( - <View style={styles.footerContainer}> + <View testID="footer-container" style={styles.footerContainer}> <View style={styles.badgeWrapperContainer}> <BadgeWrapper badgeElement={ diff --git a/app/components/UI/Tabs/TabThumbnail/__snapshots__/TabThumbnail.test.tsx.snap b/app/components/UI/Tabs/TabThumbnail/__snapshots__/TabThumbnail.test.tsx.snap index 09ee846e8f7c..a6f2afda8214 100644 --- a/app/components/UI/Tabs/TabThumbnail/__snapshots__/TabThumbnail.test.tsx.snap +++ b/app/components/UI/Tabs/TabThumbnail/__snapshots__/TabThumbnail.test.tsx.snap @@ -106,7 +106,7 @@ exports[`TabThumbnail should render correctly 1`] = ` } } > - about:blank + example.com </Text> </View> <TouchableOpacity @@ -147,7 +147,7 @@ exports[`TabThumbnail should render correctly 1`] = ` <Image source={ { - "uri": "", + "uri": "test-image-uri", } } style={ diff --git a/app/components/UI/Tabs/TabThumbnail/useSelectedAccount.ts b/app/components/UI/Tabs/TabThumbnail/useSelectedAccount.ts index df4102e0ad02..5988f0c2e39a 100644 --- a/app/components/UI/Tabs/TabThumbnail/useSelectedAccount.ts +++ b/app/components/UI/Tabs/TabThumbnail/useSelectedAccount.ts @@ -3,7 +3,7 @@ import { useAccounts } from '../../../hooks/useAccounts'; import { Account } from './../../../hooks/useAccounts/useAccounts.types'; const useSelectedAccount = (): Account | undefined => { - const { accounts } = useAccounts(); + const { evmAccounts: accounts } = useAccounts(); const selectedAccount = useMemo( () => accounts.find((account: Account) => account.isSelected), diff --git a/app/components/UI/TemplateRenderer/SafeComponentList.ts b/app/components/UI/TemplateRenderer/SafeComponentList.ts index 35751a2064ca..e783ada0cb43 100644 --- a/app/components/UI/TemplateRenderer/SafeComponentList.ts +++ b/app/components/UI/TemplateRenderer/SafeComponentList.ts @@ -1,11 +1,28 @@ import Button from '../../../component-library/components/Buttons/Button'; - import SheetHeader from '../../../component-library/components/Sheet/SheetHeader'; import Text from '../../../component-library/components/Texts/Text'; import Icon from '../../../component-library/components/Icons/Icon'; import BottomSheetFooter from '../../../component-library/components/BottomSheets/BottomSheetFooter'; import SmartTransactionStatus from '../../Views/SmartTransactionStatus/SmartTransactionStatus'; -import { View } from 'react-native'; +import { View, Text as RNText, ScrollView } from 'react-native'; +import Checkbox from '../../../component-library/components/Checkbox/Checkbox'; +import { SnapUIImage } from '../../UI/Snaps/SnapUIImage/SnapUIImage'; +import { SnapAvatar } from '../Snaps/SnapAvatar/SnapAvatar'; +import AddressElement from '../../../components/Views/confirmations/SendFlow/AddressElement'; +import { Box } from '../Box/Box'; +import { SnapUICard } from '../../Snaps/SnapUICard/SnapUICard'; +import { SnapUILink } from '../Snaps/SnapUILink/SnapUILink'; +import { SnapUIInput } from '../Snaps/SnapUIInput/SnapUIInput'; +import { SnapIcon } from '../../Snaps/SnapIcon/SnapIcon'; +import { SnapUIFooterButton } from '../../Snaps/SnapUIFooterButton/SnapUIFooterButton'; +import { ConfirmInfoRowValueDouble } from '../../../component-library/components-temp/Snaps/ConfirmInfoRowValueDouble/ConfirmInfoRowValueDouble'; +import { SnapUIIcon } from '../../Snaps/SnapUIIcon/SnapUIIcon'; +import { SnapUIButton } from '../../Snaps/SnapUIButton/SnapUIButton'; +import { SnapUIBanner } from '../../Snaps/SnapUIBanner/SnapUIBanner'; +import { SnapUICheckbox } from '../../Snaps/SnapUICheckbox/SnapUICheckbox'; +import { SnapUIAddress } from '../../UI/Snaps/SnapUIAddress/SnapUIAddress'; +import { SnapUIAvatar } from '../../UI/Snaps/SnapUIAvatar/SnapUIAvatar'; +import InfoRow from '../../Views/confirmations/components/UI/InfoRow'; export const safeComponentList = { BottomSheetFooter, @@ -15,6 +32,26 @@ export const safeComponentList = { SmartTransactionStatus, Text, View, + Checkbox, + SnapUIImage, + SnapUICard, + SnapAvatar, + SnapUILink, + AddressElement, + Box, + SnapUIInput, + SnapIcon, + SnapUIIcon, + SnapUIFooterButton, + ConfirmInfoRowValueDouble, + SnapUIButton, + SnapUICheckbox, + SnapUIAvatar, + SnapUIAddress, + SnapUIBanner, + InfoRow, + RNText, + ScrollView, }; export type SafeComponentListValues = typeof safeComponentList; diff --git a/app/components/UI/TemplateRenderer/TemplateRenderer.tsx b/app/components/UI/TemplateRenderer/TemplateRenderer.tsx index 8fc295c0802c..213c15b5efe6 100644 --- a/app/components/UI/TemplateRenderer/TemplateRenderer.tsx +++ b/app/components/UI/TemplateRenderer/TemplateRenderer.tsx @@ -16,7 +16,7 @@ function getElement( // eslint-disable-next-line @typescript-eslint/no-explicit-any ): React.ComponentType<any> { const component = section?.element; - if (!component && !isValidElementName(component)) { + if (!component || !isValidElementName(component)) { throw new Error( `${component} is not in the safe component list for template renderer`, ); @@ -24,6 +24,39 @@ function getElement( return safeComponentList[component]; } +function renderElement(section: TemplateRendererComponent) { + const Element = getElement(section); + const propsAsComponents = section.propComponents + ? getPropComponents(section.propComponents) + : {}; + return ( + <Element {...section.props} {...propsAsComponents}> + {typeof section.children === 'object' ? ( + // eslint-disable-next-line @typescript-eslint/no-use-before-define + <TemplateRenderer sections={section.children} /> + ) : ( + section.children + )} + </Element> + ); +} + +function getPropComponents( + components: Record<string, TemplateRendererComponent>, +) { + return Object.entries(components).reduce<Record<string, ReactNode>>( + (accumulator, [key, component]) => { + if (component) { + accumulator[key] = Array.isArray(component) + ? component.map(renderElement) + : renderElement(component); + } + return accumulator; + }, + {}, + ); +} + const TemplateRenderer = ({ sections }: TemplateRendererProps) => { if (!sections) { // If sections is null eject early by returning null @@ -36,21 +69,7 @@ const TemplateRenderer = ({ sections }: TemplateRendererProps) => { typeof sections === 'object' && !Array.isArray(sections) ) { - // If dealing with a single entry, then render a single object without key - const Element = getElement(sections); - const children = sections.children; - return ( - <Element {...sections.props}> - {Array.isArray(children) - ? children.map((child) => ( - <TemplateRenderer - key={typeof child === 'string' ? `${random()}` : child.key} - sections={child} - /> - )) - : children} - </Element> - ); + return renderElement(sections); } // The last case is dealing with an array of objects @@ -82,8 +101,15 @@ const TemplateRenderer = ({ sections }: TemplateRendererProps) => { } else { // Otherwise render the element. const Element = getElement(child); + const propsAsComponents = child.propComponents + ? getPropComponents(child.propComponents) + : {}; allChildren.push( - <Element key={child.key} {...child.props}> + <Element + key={child.key} + {...child.props} + {...propsAsComponents} + > {child?.children} </Element>, ); diff --git a/app/components/UI/TemplateRenderer/types.ts b/app/components/UI/TemplateRenderer/types.ts index e9a86d2ec08d..2f3a72938eea 100644 --- a/app/components/UI/TemplateRenderer/types.ts +++ b/app/components/UI/TemplateRenderer/types.ts @@ -9,5 +9,6 @@ export interface TemplateRendererComponent { element: keyof SafeComponentListValues; key: string; props?: Record<string, unknown>; + propComponents?: Record<string, TemplateRendererComponent>; children?: TemplateRendererInput; } diff --git a/app/components/UI/Tokens/TokenList/TokenListItem/index.tsx b/app/components/UI/Tokens/TokenList/TokenListItem/index.tsx index 041dbd4dc6d8..c969676e3aec 100644 --- a/app/components/UI/Tokens/TokenList/TokenListItem/index.tsx +++ b/app/components/UI/Tokens/TokenList/TokenListItem/index.tsx @@ -10,11 +10,11 @@ import { useTheme } from '../../../../../util/theme'; import { TOKEN_RATE_UNDEFINED } from '../../constants'; import { deriveBalanceFromAssetMarketDetails } from '../../util/deriveBalanceFromAssetMarketDetails'; import { - selectChainId, selectProviderConfig, selectTicker, selectNetworkConfigurations, selectNetworkConfigurationByChainId, + selectChainId, } from '../../../../../selectors/networkController'; import { selectContractExchangeRates, @@ -64,6 +64,7 @@ import { CustomNetworkImgMapping, } from '../../../../../util/networks/customNetworks'; import { selectShowFiatInTestnets } from '../../../../../selectors/settings'; +import { selectIsEvmNetworkSelected } from '../../../../../selectors/multichainNetworkController'; interface TokenListItemProps { asset: TokenI; @@ -94,6 +95,8 @@ export const TokenListItem = React.memo( const { type } = useSelector(selectProviderConfig); const selectedChainId = useSelector(selectChainId); + const isEvmNetworkSelected = useSelector(selectIsEvmNetworkSelected); + const chainId = isPortfolioViewEnabled() ? (asset.chainId as Hex) : selectedChainId; @@ -135,6 +138,7 @@ export const TokenListItem = React.memo( chainId as Hex ] : selectedChainTokenBalance; + const nativeCurrency = networkConfigurations?.[chainId as Hex]?.nativeCurrency; @@ -231,8 +235,8 @@ export const TokenListItem = React.memo( if (isLineaMainnet) return images['LINEA-MAINNET']; - if (CustomNetworkImgMapping[chainId]) { - return CustomNetworkImgMapping[chainId]; + if (CustomNetworkImgMapping[chainId as Hex]) { + return CustomNetworkImgMapping[chainId as Hex]; } return ticker ? images[ticker] : undefined; @@ -271,6 +275,10 @@ export const TokenListItem = React.memo( ); const onItemPress = (token: TokenI) => { + if (!isEvmNetworkSelected) { + return; + } + // if the asset is staked, navigate to the native asset details if (asset.isStaked) { return navigation.navigate('Asset', { @@ -333,7 +341,7 @@ export const TokenListItem = React.memo( badgeElement={ <Badge variant={BadgeVariant.Network} - imageSource={networkBadgeSource(chainId)} + imageSource={networkBadgeSource(chainId as Hex)} name={networkConfigurationByChainId?.name} /> } diff --git a/app/components/UI/Tokens/__snapshots__/index.test.tsx.snap b/app/components/UI/Tokens/__snapshots__/index.test.tsx.snap index 55703c7d08be..a5ae04de3089 100644 --- a/app/components/UI/Tokens/__snapshots__/index.test.tsx.snap +++ b/app/components/UI/Tokens/__snapshots__/index.test.tsx.snap @@ -1249,1252 +1249,6 @@ exports[`Tokens Portfolio View should match the snapshot when portfolio view is </View> `; -exports[`Tokens render matches snapshot 1`] = ` -<View - style={ - { - "flex": 1, - } - } -> - <RNCSafeAreaProvider - onInsetsChange={[Function]} - style={ - [ - { - "flex": 1, - }, - undefined, - ] - } - > - <View - collapsable={false} - pointerEvents="box-none" - style={ - { - "zIndex": 1, - } - } - > - <View - accessibilityElementsHidden={false} - importantForAccessibility="auto" - onLayout={[Function]} - pointerEvents="box-none" - style={null} - > - <View - collapsable={false} - pointerEvents="box-none" - style={ - { - "bottom": 0, - "left": 0, - "opacity": 1, - "position": "absolute", - "right": 0, - "top": 0, - "zIndex": 0, - } - } - > - <View - collapsable={false} - style={ - { - "backgroundColor": "rgb(255, 255, 255)", - "borderBottomColor": "rgb(216, 216, 216)", - "flex": 1, - "shadowColor": "rgb(216, 216, 216)", - "shadowOffset": { - "height": 0.5, - "width": 0, - }, - "shadowOpacity": 0.85, - "shadowRadius": 0, - } - } - /> - </View> - <View - collapsable={false} - pointerEvents="box-none" - style={ - { - "height": 64, - "maxHeight": undefined, - "minHeight": undefined, - "opacity": undefined, - "transform": undefined, - } - } - > - <View - pointerEvents="none" - style={ - { - "height": 20, - } - } - /> - <View - pointerEvents="box-none" - style={ - { - "alignItems": "center", - "flex": 1, - "flexDirection": "row", - "justifyContent": "center", - } - } - > - <View - collapsable={false} - pointerEvents="box-none" - style={ - { - "marginHorizontal": 16, - "opacity": 1, - } - } - > - <Text - accessibilityRole="header" - aria-level="1" - collapsable={false} - numberOfLines={1} - onLayout={[Function]} - style={ - { - "color": "rgb(28, 28, 30)", - "fontSize": 17, - "fontWeight": "600", - } - } - > - Amount - </Text> - </View> - </View> - </View> - </View> - </View> - <RNSScreenContainer - onLayout={[Function]} - style={ - { - "flex": 1, - } - } - > - <RNSScreen - activityState={2} - collapsable={false} - gestureResponseDistance={ - { - "bottom": -1, - "end": -1, - "start": -1, - "top": -1, - } - } - pointerEvents="box-none" - style={ - { - "bottom": 0, - "left": 0, - "position": "absolute", - "right": 0, - "top": 0, - } - } - > - <View - collapsable={false} - style={ - { - "opacity": 1, - } - } - /> - <View - accessibilityElementsHidden={false} - closing={false} - gestureVelocityImpact={0.3} - importantForAccessibility="auto" - onClose={[Function]} - onGestureBegin={[Function]} - onGestureCanceled={[Function]} - onGestureEnd={[Function]} - onOpen={[Function]} - onTransition={[Function]} - pointerEvents="box-none" - style={ - [ - { - "overflow": undefined, - }, - { - "bottom": 0, - "left": 0, - "position": "absolute", - "right": 0, - "top": 0, - }, - ] - } - transitionSpec={ - { - "close": { - "animation": "spring", - "config": { - "damping": 500, - "mass": 3, - "overshootClamping": true, - "restDisplacementThreshold": 10, - "restSpeedThreshold": 10, - "stiffness": 1000, - }, - }, - "open": { - "animation": "spring", - "config": { - "damping": 500, - "mass": 3, - "overshootClamping": true, - "restDisplacementThreshold": 10, - "restSpeedThreshold": 10, - "stiffness": 1000, - }, - }, - } - } - > - <View - collapsable={false} - needsOffscreenAlphaCompositing={false} - pointerEvents="box-none" - style={ - { - "flex": 1, - } - } - > - <View - collapsable={false} - onGestureHandlerEvent={[Function]} - onGestureHandlerStateChange={[Function]} - style={ - { - "flex": 1, - "transform": [ - { - "translateX": 0, - }, - { - "translateX": 0, - }, - ], - } - } - > - <View - collapsable={false} - pointerEvents="none" - style={ - { - "backgroundColor": "rgb(242, 242, 242)", - "bottom": 0, - "left": 0, - "position": "absolute", - "shadowColor": "#000", - "shadowOffset": { - "height": 1, - "width": -1, - }, - "shadowOpacity": 0.3, - "shadowRadius": 5, - "top": 0, - "width": 3, - } - } - /> - <View - style={ - [ - { - "flex": 1, - "overflow": "hidden", - }, - [ - { - "backgroundColor": "rgb(242, 242, 242)", - }, - undefined, - ], - ] - } - > - <View - style={ - { - "flex": 1, - "flexDirection": "column-reverse", - } - } - > - <View - style={ - { - "flex": 1, - } - } - > - <View - style={ - { - "backgroundColor": "#ffffff", - "flex": 1, - } - } - testID="tokens" - > - <View - style={ - { - "flexDirection": "row", - "justifyContent": "space-between", - "paddingBottom": 16, - "paddingLeft": 8, - "paddingRight": 8, - "paddingTop": 8, - } - } - > - <TouchableOpacity - accessibilityRole="button" - accessible={true} - activeOpacity={1} - onPress={[Function]} - style={ - { - "alignItems": "center", - "alignSelf": "flex-start", - "backgroundColor": "#ffffff", - "borderColor": "#848c96", - "borderRadius": 20, - "borderStyle": "solid", - "borderWidth": 1, - "flexDirection": "row", - "height": 40, - "justifyContent": "center", - "marginLeft": 5, - "marginRight": 5, - "maxWidth": "60%", - "paddingHorizontal": 16, - } - } - testID="sort-by" - > - <Text - accessibilityRole="none" - style={ - { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, - "fontWeight": "500", - "letterSpacing": 0, - "lineHeight": 22, - } - } - > - Sort by - </Text> - <SvgMock - color="#141618" - height={16} - name="ArrowDown" - style={ - { - "height": 16, - "marginLeft": 8, - "width": 16, - } - } - width={16} - /> - </TouchableOpacity> - <TouchableOpacity - accessibilityRole="button" - accessible={true} - activeOpacity={1} - onPress={[Function]} - style={ - { - "alignItems": "center", - "alignSelf": "flex-start", - "backgroundColor": "#ffffff", - "borderColor": "#848c96", - "borderRadius": 20, - "borderStyle": "solid", - "borderWidth": 1, - "flexDirection": "row", - "height": 40, - "justifyContent": "center", - "marginLeft": 5, - "marginRight": 5, - "maxWidth": "60%", - "paddingHorizontal": 16, - } - } - testID="import-token-button" - > - <SvgMock - color="#141618" - height={16} - name="Add" - style={ - { - "height": 16, - "marginRight": 8, - "width": 16, - } - } - width={16} - /> - <Text - accessibilityRole="none" - style={ - { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, - "fontWeight": "500", - "letterSpacing": 0, - "lineHeight": 22, - } - } - > - Import - </Text> - </TouchableOpacity> - </View> - <RCTScrollView - ListFooterComponent={ - <TokenListFooter - goToAddToken={[Function]} - isAddTokenEnabled={true} - tokens={ - [ - { - "address": "0x0", - "balanceFiat": "< $0.01", - "decimals": 18, - "iconUrl": "", - "isETH": true, - "isStaked": false, - "name": "Ethereum", - "symbol": "ETH", - "tokenFiatAmount": NaN, - }, - { - "address": "0x01", - "balanceFiat": "$0", - "decimals": 18, - "iconUrl": "", - "name": "Bat", - "symbol": "BAT", - "tokenFiatAmount": 0, - }, - ] - } - /> - } - data={ - [ - { - "address": "0x0", - "balanceFiat": "< $0.01", - "decimals": 18, - "iconUrl": "", - "isETH": true, - "isStaked": false, - "name": "Ethereum", - "symbol": "ETH", - "tokenFiatAmount": NaN, - }, - { - "address": "0x01", - "balanceFiat": "$0", - "decimals": 18, - "iconUrl": "", - "name": "Bat", - "symbol": "BAT", - "tokenFiatAmount": 0, - }, - ] - } - getItem={[Function]} - getItemCount={[Function]} - keyExtractor={[Function]} - onContentSizeChange={[Function]} - onLayout={[Function]} - onMomentumScrollBegin={[Function]} - onMomentumScrollEnd={[Function]} - onScroll={[Function]} - onScrollBeginDrag={[Function]} - onScrollEndDrag={[Function]} - refreshControl={ - <RefreshControlMock - colors={ - [ - "#0376c9", - ] - } - onRefresh={[Function]} - refreshing={false} - tintColor="#141618" - /> - } - removeClippedSubviews={false} - renderItem={[Function]} - scrollEventThrottle={50} - stickyHeaderIndices={[]} - testID="token-list" - viewabilityConfigCallbackPairs={[]} - > - <RCTRefreshControl /> - <View> - <View - onFocusCapture={[Function]} - onLayout={[Function]} - style={null} - > - <TouchableOpacity - onLongPress={[Function]} - onPress={[Function]} - style={ - { - "alignItems": "flex-start", - "flex": 1, - "flexDirection": "row", - "paddingHorizontal": 15, - "paddingVertical": 10, - } - } - testID="asset-ETH" - > - <View - onLayout={[Function]} - style={ - { - "alignSelf": "flex-start", - "position": "relative", - } - } - testID="badge-wrapper-badge" - > - <View> - <View - useNativeDriver={true} - > - <Image - fadeIn={true} - onError={[Function]} - onLoadEnd={[Function]} - source={ - { - "uri": "", - } - } - style={ - [ - { - "borderRadius": 12, - "height": 24, - "width": 24, - }, - undefined, - undefined, - undefined, - { - "borderRadius": 16, - "height": 32, - "overflow": "hidden", - "width": 32, - }, - ] - } - /> - <View - collapsable={false} - style={ - { - "bottom": 0, - "left": 0, - "opacity": 1, - "position": "absolute", - "right": 0, - "top": 0, - } - } - > - <View - style={ - [ - { - "borderRadius": 16, - "height": 32, - "overflow": "hidden", - "width": 32, - }, - { - "backgroundColor": "#eee", - }, - undefined, - ] - } - /> - </View> - </View> - </View> - <View - style={ - { - "alignItems": "center", - "aspectRatio": 1, - "height": 0, - "justifyContent": "center", - "position": "absolute", - "right": 0, - "top": 0, - "transform": [ - { - "translateX": 0, - }, - { - "translateY": -0, - }, - ], - } - } - > - <View - onLayout={[Function]} - style={ - { - "alignItems": "center", - "aspectRatio": 1, - "height": "50%", - "justifyContent": "center", - "maxHeight": 24, - "minHeight": 8, - "opacity": 0, - } - } - testID="badgenetwork" - > - <View - style={ - { - "alignItems": "center", - "backgroundColor": "#ffffff", - "borderColor": "#ffffff", - "borderRadius": 16, - "borderWidth": 2, - "height": 32, - "justifyContent": "center", - "overflow": "hidden", - "shadowColor": "#0000001A", - "shadowOffset": { - "height": 2, - "width": 0, - }, - "shadowOpacity": 1, - "shadowRadius": 4, - "transform": [ - { - "scale": 1, - }, - ], - "width": 32, - } - } - > - <Image - onError={[Function]} - resizeMode="contain" - source={1} - style={ - { - "height": 32, - "width": 32, - } - } - testID="network-avatar-image" - /> - </View> - </View> - </View> - </View> - <View - style={ - { - "flex": 1, - "justifyContent": "center", - "marginLeft": 20, - } - } - > - <View - style={ - { - "flexDirection": "row", - } - } - > - <Text - accessibilityRole="text" - style={ - { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 16, - "fontWeight": "500", - "letterSpacing": 0, - "lineHeight": 24, - } - } - > - Ethereum - </Text> - <View - accessibilityState={ - { - "busy": undefined, - "checked": undefined, - "disabled": undefined, - "expanded": undefined, - "selected": undefined, - } - } - accessibilityValue={ - { - "max": undefined, - "min": undefined, - "now": undefined, - "text": undefined, - } - } - accessible={true} - collapsable={false} - focusable={true} - onBlur={[Function]} - onClick={[Function]} - onFocus={[Function]} - onResponderGrant={[Function]} - onResponderMove={[Function]} - onResponderRelease={[Function]} - onResponderTerminate={[Function]} - onResponderTerminationRequest={[Function]} - onStartShouldSetResponder={[Function]} - style={ - { - "alignItems": "center", - "flexDirection": "row", - } - } - testID="stake-button" - > - <Text - accessibilityRole="text" - style={ - { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 16, - "fontWeight": "500", - "letterSpacing": 0, - "lineHeight": 24, - } - } - > - • - <Text - accessibilityRole="text" - style={ - { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 16, - "fontWeight": "500", - "letterSpacing": 0, - "lineHeight": 24, - } - } - > - Earn - </Text> - </Text> - <SvgMock - color="#0376c9" - height={16} - name="Plant" - style={ - { - "height": 16, - "width": 16, - } - } - width={16} - /> - </View> - </View> - <View> - <Text - accessibilityRole="text" - style={ - { - "color": "#d73847", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, - "fontWeight": "500", - "letterSpacing": 0, - "lineHeight": 22, - } - } - /> - </View> - </View> - <Modal - animationType="none" - deviceHeight={null} - deviceWidth={null} - hardwareAccelerated={false} - hideModalContentWhileAnimating={false} - onBackdropPress={[Function]} - onModalHide={[Function]} - onModalWillHide={[Function]} - onModalWillShow={[Function]} - onRequestClose={[Function]} - onSwipeComplete={[Function]} - panResponderThreshold={4} - scrollHorizontal={false} - scrollOffset={0} - scrollOffsetMax={0} - scrollTo={null} - statusBarTranslucent={false} - supportedOrientations={ - [ - "portrait", - "landscape", - ] - } - swipeDirection="down" - swipeThreshold={100} - transparent={true} - visible={false} - /> - <View - style={ - { - "alignItems": "flex-end", - "alignSelf": "flex-end", - "flex": 1, - } - } - > - <Text - accessibilityRole="text" - style={ - { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 16, - "fontWeight": "500", - "letterSpacing": 0, - "lineHeight": 24, - } - } - testID="fiat-balance-test-id" - > - ETH - </Text> - <Text - accessibilityRole="text" - style={ - { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, - "fontWeight": "400", - "letterSpacing": 0, - "lineHeight": 22, - "paddingHorizontal": 0, - "textTransform": "uppercase", - } - } - testID="main-balance-test-id" - > - < $0.01 - </Text> - </View> - </TouchableOpacity> - </View> - <View - onFocusCapture={[Function]} - onLayout={[Function]} - style={null} - > - <TouchableOpacity - onLongPress={[Function]} - onPress={[Function]} - style={ - { - "alignItems": "flex-start", - "flex": 1, - "flexDirection": "row", - "paddingHorizontal": 15, - "paddingVertical": 10, - } - } - testID="asset-BAT" - > - <View - onLayout={[Function]} - style={ - { - "alignSelf": "flex-start", - "position": "relative", - } - } - testID="badge-wrapper-badge" - > - <View> - <View - style={ - { - "backgroundColor": "#ffffff", - "borderRadius": 16, - "height": 32, - "overflow": "hidden", - "width": 32, - } - } - > - <Image - onError={[Function]} - resizeMode="contain" - source={ - { - "uri": undefined, - } - } - style={ - { - "flex": 1, - "height": undefined, - "width": undefined, - } - } - testID="token-avatar-image" - /> - </View> - </View> - <View - style={ - { - "alignItems": "center", - "aspectRatio": 1, - "height": 0, - "justifyContent": "center", - "position": "absolute", - "right": 0, - "top": 0, - "transform": [ - { - "translateX": 0, - }, - { - "translateY": -0, - }, - ], - } - } - > - <View - onLayout={[Function]} - style={ - { - "alignItems": "center", - "aspectRatio": 1, - "height": "50%", - "justifyContent": "center", - "maxHeight": 24, - "minHeight": 8, - "opacity": 0, - } - } - testID="badgenetwork" - > - <View - style={ - { - "alignItems": "center", - "backgroundColor": "#ffffff", - "borderColor": "#ffffff", - "borderRadius": 16, - "borderWidth": 2, - "height": 32, - "justifyContent": "center", - "overflow": "hidden", - "shadowColor": "#0000001A", - "shadowOffset": { - "height": 2, - "width": 0, - }, - "shadowOpacity": 1, - "shadowRadius": 4, - "transform": [ - { - "scale": 1, - }, - ], - "width": 32, - } - } - > - <Image - onError={[Function]} - resizeMode="contain" - source={1} - style={ - { - "height": 32, - "width": 32, - } - } - testID="network-avatar-image" - /> - </View> - </View> - </View> - </View> - <View - style={ - { - "flex": 1, - "justifyContent": "center", - "marginLeft": 20, - } - } - > - <View - style={ - { - "flexDirection": "row", - } - } - > - <Text - accessibilityRole="text" - style={ - { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 16, - "fontWeight": "500", - "letterSpacing": 0, - "lineHeight": 24, - } - } - > - Bat - </Text> - </View> - <View> - <Text - accessibilityRole="text" - style={ - { - "color": "#d73847", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, - "fontWeight": "500", - "letterSpacing": 0, - "lineHeight": 22, - } - } - /> - </View> - </View> - <Modal - animationType="none" - deviceHeight={null} - deviceWidth={null} - hardwareAccelerated={false} - hideModalContentWhileAnimating={false} - onBackdropPress={[Function]} - onModalHide={[Function]} - onModalWillHide={[Function]} - onModalWillShow={[Function]} - onRequestClose={[Function]} - onSwipeComplete={[Function]} - panResponderThreshold={4} - scrollHorizontal={false} - scrollOffset={0} - scrollOffsetMax={0} - scrollTo={null} - statusBarTranslucent={false} - supportedOrientations={ - [ - "portrait", - "landscape", - ] - } - swipeDirection="down" - swipeThreshold={100} - transparent={true} - visible={false} - /> - <View - style={ - { - "alignItems": "flex-end", - "alignSelf": "flex-end", - "flex": 1, - } - } - > - <Text - accessibilityRole="text" - style={ - { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 16, - "fontWeight": "500", - "letterSpacing": 0, - "lineHeight": 24, - } - } - testID="fiat-balance-test-id" - > - < 0.00001 BAT - </Text> - <Text - accessibilityRole="text" - style={ - { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, - "fontWeight": "400", - "letterSpacing": 0, - "lineHeight": 22, - "paddingHorizontal": 0, - "textTransform": "uppercase", - } - } - testID="main-balance-test-id" - > - $0 - </Text> - </View> - </TouchableOpacity> - </View> - <View - onLayout={[Function]} - > - <View - style={ - { - "alignItems": "center", - "flex": 1, - "marginTop": 9, - "paddingBottom": 30, - } - } - > - <TouchableOpacity - disabled={false} - onPress={[Function]} - style={ - { - "alignItems": "center", - "flexDirection": "row", - "justifyContent": "center", - } - } - testID="import-token-footer-link" - > - <Text - accessibilityRole="text" - style={ - { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, - "fontWeight": "400", - "letterSpacing": 0, - "lineHeight": 22, - "textAlign": "center", - } - } - > - <Text - accessibilityRole="text" - style={ - { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, - "fontWeight": "400", - "letterSpacing": 0, - "lineHeight": 22, - "marginBottom": 8, - } - } - > - Don't see your token? - </Text> - - <Text - accessibilityRole="text" - style={ - { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, - "fontWeight": "400", - "letterSpacing": 0, - "lineHeight": 22, - } - } - > - Import tokens - </Text> - </Text> - </TouchableOpacity> - </View> - </View> - </View> - </RCTScrollView> - </View> - </View> - </View> - </View> - </View> - </View> - </View> - </RNSScreen> - </RNSScreenContainer> - </RNCSafeAreaProvider> -</View> -`; - exports[`Tokens should hide zero balance tokens when setting is on 1`] = ` <View style={ diff --git a/app/components/UI/Tokens/index.test.tsx b/app/components/UI/Tokens/index.test.tsx index bd473c5027c8..6a76d4b9be87 100644 --- a/app/components/UI/Tokens/index.test.tsx +++ b/app/components/UI/Tokens/index.test.tsx @@ -40,18 +40,32 @@ jest.mock('../../../core/Engine', () => ({ }, TokenDetectionController: { detectTokens: jest.fn(() => Promise.resolve()), + startPolling: jest.fn(), + stopPollingByPollingToken: jest.fn(), }, AccountTrackerController: { refresh: jest.fn(() => Promise.resolve()), + startPolling: jest.fn(), + stopPollingByPollingToken: jest.fn(), }, CurrencyRateController: { updateExchangeRate: jest.fn(() => Promise.resolve()), + startPolling: jest.fn(), + stopPollingByPollingToken: jest.fn(), }, TokenRatesController: { updateExchangeRatesByChainId: jest.fn(() => Promise.resolve()), + startPolling: jest.fn(), + stopPollingByPollingToken: jest.fn(), }, TokenBalancesController: { updateBalances: jest.fn(() => Promise.resolve()), + startPolling: jest.fn(), + stopPollingByPollingToken: jest.fn(), + }, + TokenListController: { + startPolling: jest.fn(), + stopPollingByPollingToken: jest.fn(), }, NetworkController: { getNetworkClientById: () => ({ @@ -225,6 +239,9 @@ const initialState = { security: { dataCollectionForMarketing: true, }, + user: { + userLoggedIn: true, + }, }; const mockNavigate = jest.fn(); @@ -292,12 +309,11 @@ describe('Tokens', () => { }); it('should render correctly', () => { - const { toJSON } = renderComponent(initialState); - expect(toJSON()).toMatchSnapshot(); - }); - - it('render matches snapshot', () => { - const { toJSON } = renderComponent(initialState); + const { toJSON, queryByText } = renderComponent(initialState); + const tokensTabText = queryByText('Tokens'); + const nftsTabText = queryByText('NFTs'); + expect(tokensTabText).toBeDefined(); + expect(nftsTabText).toBeDefined(); expect(toJSON()).toMatchSnapshot(); }); @@ -348,6 +364,9 @@ describe('Tokens', () => { it('should display unable to find conversion rate', async () => { const state = { + user: { + userLoggedIn: true, + }, engine: { backgroundState: { ...backgroundState, @@ -561,12 +580,6 @@ describe('Tokens', () => { expect(selectAccountTokensAcrossChainsSpy).toHaveBeenCalled(); }); - it('should not call selectAccountTokensAcrossChains when disabled', () => { - jest.spyOn(networks, 'isPortfolioViewEnabled').mockReturnValue(false); - renderComponent(initialState); - expect(selectAccountTokensAcrossChainsSpy).not.toHaveBeenCalled(); - }); - it('should handle network filtering correctly', () => { const multiNetworkState = { ...initialState, diff --git a/app/components/UI/Tokens/index.tsx b/app/components/UI/Tokens/index.tsx index 74d98faa16ed..41e3038e09bf 100644 --- a/app/components/UI/Tokens/index.tsx +++ b/app/components/UI/Tokens/index.tsx @@ -14,6 +14,7 @@ import { MetaMetricsEvents } from '../../../core/Analytics'; import Logger from '../../../util/Logger'; import { selectChainId, + selectEvmNetworkConfigurationsByChainId, selectIsAllNetworks, selectIsPopularNetwork, selectNetworkConfigurations, @@ -55,10 +56,11 @@ import ButtonBase from '../../../component-library/components/Buttons/Button/fou import { selectNetworkName } from '../../../selectors/networkInfos'; import ButtonIcon from '../../../component-library/components/Buttons/ButtonIcon'; import { selectAccountTokensAcrossChains } from '../../../selectors/multichain'; -import { useDebouncedValue } from '../../hooks/useDebouncedValue'; import { TraceName, endTrace, trace } from '../../../util/trace'; import { getTraceTags } from '../../../util/sentry/tags'; import { store } from '../../../store'; +import { selectIsEvmNetworkSelected } from '../../../selectors/multichainNetworkController'; +import { AssetPollingProvider } from '../../hooks/AssetPolling/AssetPollingProvider'; // this will be imported from TokenRatesController when it is exported from there // PR: https://github.com/MetaMask/core/pull/4622 @@ -91,8 +93,6 @@ interface TokenListNavigationParamList { [key: string]: undefined | object; } -const DEBOUNCE_DELAY = 300; - const Tokens: React.FC<TokensI> = memo(({ tokens }) => { const navigation = useNavigation< @@ -105,6 +105,11 @@ const Tokens: React.FC<TokensI> = memo(({ tokens }) => { const networkConfigurationsByChainId = useSelector( selectNetworkConfigurations, ); + + const evmNetworkConfigurationsByChainId = useSelector( + selectEvmNetworkConfigurationsByChainId, + ); + const hideZeroBalanceTokens = useSelector( (state: RootState) => state.settings.hideZeroBalanceTokens, ); @@ -125,8 +130,8 @@ const Tokens: React.FC<TokensI> = memo(({ tokens }) => { ), ]; - const selectedAccountTokensChains = useSelector((state: RootState) => - isPortfolioViewEnabled() ? selectAccountTokensAcrossChains(state) : {}, + const selectedAccountTokensChains = useSelector( + selectAccountTokensAcrossChains, ); const actionSheet = useRef<typeof ActionSheet>(); @@ -140,23 +145,12 @@ const Tokens: React.FC<TokensI> = memo(({ tokens }) => { selectSelectedInternalAccountAddress, ); const multiChainMarketData = useSelector(selectTokenMarketData); - const debouncedMultiChainMarketData = useDebouncedValue( - multiChainMarketData, - DEBOUNCE_DELAY, - ); - const multiChainTokenBalance = useSelector(selectTokensBalances); - const debouncedMultiChainTokenBalance = useDebouncedValue( - multiChainTokenBalance, - DEBOUNCE_DELAY, - ); const multiChainCurrencyRates = useSelector(selectCurrencyRates); - const debouncedMultiChainCurrencyRates = useDebouncedValue( - multiChainCurrencyRates, - DEBOUNCE_DELAY, - ); const isPopularNetwork = useSelector(selectIsPopularNetwork); + const isEvmSelected = useSelector(selectIsEvmNetworkSelected); + const styles = createStyles(colors); const getTokensToDisplay = (allTokens: TokenI[]): TokenI[] => { @@ -232,7 +226,7 @@ const Tokens: React.FC<TokensI> = memo(({ tokens }) => { }); const filterTokensByNetwork = (tokensToDisplay: TokenI[]): TokenI[] => { - if (isAllNetworks && isPopularNetwork) { + if (isAllNetworks && isPopularNetwork && isEvmSelected) { return tokensToDisplay; } return tokensToDisplay.filter((token) => token.chainId === currentChainId); @@ -320,9 +314,9 @@ const Tokens: React.FC<TokensI> = memo(({ tokens }) => { hideZeroBalanceTokens, tokenSortConfig, // Dependencies for multichain implementation - debouncedMultiChainTokenBalance, - debouncedMultiChainMarketData, - debouncedMultiChainCurrencyRates, + multiChainTokenBalance, + multiChainMarketData, + multiChainCurrencyRates, selectedAccountTokensChains, selectedInternalAccountAddress, isUserOnCurrentNetwork, @@ -345,6 +339,9 @@ const Tokens: React.FC<TokensI> = memo(({ tokens }) => { const onRefresh = async () => { requestAnimationFrame(async () => { + if (!isEvmSelected) { + return; + } setRefreshing(true); const { @@ -354,24 +351,24 @@ const Tokens: React.FC<TokensI> = memo(({ tokens }) => { TokenRatesController, TokenBalancesController, } = Engine.context; - + // TODO: [SOLANA] - Refresh must work with non-evm chains, replace evmNetworkConfigurationsByChainId with networkConfigurationsByChainId const actions = [ TokenDetectionController.detectTokens({ chainIds: isPortfolioViewEnabled() - ? (Object.keys(networkConfigurationsByChainId) as Hex[]) - : [currentChainId], + ? (Object.keys(evmNetworkConfigurationsByChainId) as Hex[]) + : [currentChainId as Hex], }), TokenBalancesController.updateBalances({ chainIds: isPortfolioViewEnabled() - ? (Object.keys(networkConfigurationsByChainId) as Hex[]) - : [currentChainId], + ? (Object.keys(evmNetworkConfigurationsByChainId) as Hex[]) + : [currentChainId as Hex], }), AccountTrackerController.refresh(), CurrencyRateController.updateExchangeRate(nativeCurrencies), ...(isPortfolioViewEnabled() - ? Object.values(networkConfigurationsByChainId) - : [networkConfigurationsByChainId[currentChainId]] + ? Object.values(evmNetworkConfigurationsByChainId) + : [evmNetworkConfigurationsByChainId[currentChainId as Hex]] ).map((network) => TokenRatesController.updateExchangeRatesByChainId({ chainId: network.chainId, @@ -441,87 +438,89 @@ const Tokens: React.FC<TokensI> = memo(({ tokens }) => { index === 0 ? removeToken() : null; return ( - <View - style={styles.wrapper} - testID={WalletViewSelectorsIDs.TOKENS_CONTAINER} - > - <View style={styles.actionBarWrapper}> - {isPortfolioViewEnabled() ? ( - <View style={styles.controlButtonOuterWrapper}> - <ButtonBase - testID={WalletViewSelectorsIDs.TOKEN_NETWORK_FILTER} - label={ - <Text style={styles.controlButtonText} numberOfLines={1}> - {isAllNetworks && isPopularNetwork - ? `${strings('app_settings.popular')} ${strings( - 'app_settings.networks', - )}` - : networkName ?? strings('wallet.current_network')} - </Text> - } - isDisabled={isTestNet(currentChainId) || !isPopularNetwork} - onPress={showFilterControls} - endIconName={IconName.ArrowDown} - style={ - isTestNet(currentChainId) || !isPopularNetwork - ? styles.controlButtonDisabled - : styles.controlButton - } - disabled={isTestNet(currentChainId) || !isPopularNetwork} - /> - <View style={styles.controlButtonInnerWrapper}> - <ButtonIcon + <AssetPollingProvider> + <View + style={styles.wrapper} + testID={WalletViewSelectorsIDs.TOKENS_CONTAINER} + > + <View style={styles.actionBarWrapper}> + {isPortfolioViewEnabled() ? ( + <View style={styles.controlButtonOuterWrapper}> + <ButtonBase + testID={WalletViewSelectorsIDs.TOKEN_NETWORK_FILTER} + label={ + <Text style={styles.controlButtonText} numberOfLines={1}> + {isAllNetworks && isPopularNetwork && isEvmSelected + ? `${strings('app_settings.popular')} ${strings( + 'app_settings.networks', + )}` + : networkName ?? strings('wallet.current_network')} + </Text> + } + isDisabled={isTestNet(currentChainId) || !isPopularNetwork} + onPress={isEvmSelected ? showFilterControls : () => null} + endIconName={isEvmSelected ? IconName.ArrowDown : undefined} + style={ + isTestNet(currentChainId) || !isPopularNetwork + ? styles.controlButtonDisabled + : styles.controlButton + } + disabled={isTestNet(currentChainId) || !isPopularNetwork} + /> + <View style={styles.controlButtonInnerWrapper}> + <ButtonIcon + testID={WalletViewSelectorsIDs.SORT_BY} + onPress={showSortControls} + iconName={IconName.SwapVertical} + style={styles.controlIconButton} + /> + <ButtonIcon + testID={WalletViewSelectorsIDs.IMPORT_TOKEN_BUTTON} + onPress={goToAddToken} + iconName={IconName.Add} + style={styles.controlIconButton} + /> + </View> + </View> + ) : ( + <> + <ButtonBase testID={WalletViewSelectorsIDs.SORT_BY} + label={strings('wallet.sort_by')} onPress={showSortControls} - iconName={IconName.SwapVertical} - style={styles.controlIconButton} + endIconName={IconName.ArrowDown} + style={styles.controlButton} /> - <ButtonIcon + <ButtonBase testID={WalletViewSelectorsIDs.IMPORT_TOKEN_BUTTON} + label={strings('wallet.import')} onPress={goToAddToken} - iconName={IconName.Add} - style={styles.controlIconButton} + startIconName={IconName.Add} + style={styles.controlButton} /> - </View> - </View> - ) : ( - <> - <ButtonBase - testID={WalletViewSelectorsIDs.SORT_BY} - label={strings('wallet.sort_by')} - onPress={showSortControls} - endIconName={IconName.ArrowDown} - style={styles.controlButton} - /> - <ButtonBase - testID={WalletViewSelectorsIDs.IMPORT_TOKEN_BUTTON} - label={strings('wallet.import')} - onPress={goToAddToken} - startIconName={IconName.Add} - style={styles.controlButton} - /> - </> + </> + )} + </View> + {tokensList && ( + <TokenList + tokens={tokensList} + refreshing={refreshing} + isAddTokenEnabled={isAddTokenEnabled} + onRefresh={onRefresh} + showRemoveMenu={showRemoveMenu} + goToAddToken={goToAddToken} + /> )} - </View> - {tokensList && ( - <TokenList - tokens={tokensList} - refreshing={refreshing} - isAddTokenEnabled={isAddTokenEnabled} - onRefresh={onRefresh} - showRemoveMenu={showRemoveMenu} - goToAddToken={goToAddToken} + <ActionSheet + ref={actionSheet as LegacyRef<typeof ActionSheet>} + title={strings('wallet.remove_token_title')} + options={[strings('wallet.remove'), strings('wallet.cancel')]} + cancelButtonIndex={1} + destructiveButtonIndex={0} + onPress={onActionSheetPress} /> - )} - <ActionSheet - ref={actionSheet as LegacyRef<typeof ActionSheet>} - title={strings('wallet.remove_token_title')} - options={[strings('wallet.remove'), strings('wallet.cancel')]} - cancelButtonIndex={1} - destructiveButtonIndex={0} - onPress={onActionSheetPress} - /> - </View> + </View> + </AssetPollingProvider> ); }); diff --git a/app/components/UI/TransactionElement/TransactionDetails/index.js b/app/components/UI/TransactionElement/TransactionDetails/index.js index edeca5afbf6f..312996502425 100644 --- a/app/components/UI/TransactionElement/TransactionDetails/index.js +++ b/app/components/UI/TransactionElement/TransactionDetails/index.js @@ -12,6 +12,7 @@ import { isMainNet, isMultiLayerFeeNetwork, getBlockExplorerTxUrl, + findBlockExplorerForNonEvmChainId, } from '../../../../util/networks'; import Logger from '../../../../util/Logger'; import EthereumAddress from '../../EthereumAddress'; @@ -24,7 +25,6 @@ import DetailsModal from '../../../Base/DetailsModal'; import { RPC, NO_RPC_BLOCK_EXPLORER } from '../../../../constants/network'; import { withNavigation } from '@react-navigation/compat'; import { ThemeContext, mockTheme } from '../../../../util/theme'; -import Engine from '../../../../core/Engine'; import decodeTransaction from '../../TransactionElement/utils'; import { selectChainId, @@ -48,6 +48,7 @@ import { } from '../../../../selectors/transactionController'; import { swapsControllerTokens } from '../../../../reducers/swaps'; import { getGlobalEthQuery } from '../../../../util/networks/global-network'; +import { isNonEvmChainId } from '../../../../core/Multichain/utils'; const createStyles = (colors) => StyleSheet.create({ @@ -211,12 +212,15 @@ class TransactionDetails extends PureComponent { const { providerConfig: { rpcUrl, type }, networkConfigurations, + chainId, } = this.props; let blockExplorer; if (type === RPC) { blockExplorer = findBlockExplorerForRpc(rpcUrl, networkConfigurations) || NO_RPC_BLOCK_EXPLORER; + } else if (isNonEvmChainId(chainId)) { + blockExplorer = findBlockExplorerForNonEvmChainId(chainId); } this.setState({ rpcBlockExplorer: blockExplorer }); this.updateTransactionDetails(); diff --git a/app/components/UI/TransactionElement/index.js b/app/components/UI/TransactionElement/index.js index 8f4424e69ba6..04ee727c831c 100644 --- a/app/components/UI/TransactionElement/index.js +++ b/app/components/UI/TransactionElement/index.js @@ -345,7 +345,11 @@ class TransactionElement extends PureComponent { <ListItem.Title numberOfLines={1} style={styles.listItemTitle}> {actionKey} </ListItem.Title> - <StatusText testID={`transaction-status-${i}`} status={status} style={styles.listItemStatus} /> + <StatusText + testID={`transaction-status-${i}`} + status={status} + style={styles.listItemStatus} + /> </ListItem.Body> {Boolean(value) && ( <ListItem.Amounts> diff --git a/app/components/UI/Transactions/index.js b/app/components/UI/Transactions/index.js index 6bbc22e82323..3e7b15e443c0 100644 --- a/app/components/UI/Transactions/index.js +++ b/app/components/UI/Transactions/index.js @@ -39,6 +39,7 @@ import { createLedgerTransactionModalNavDetails } from '../../UI/LedgerModals/Le import Device from '../../../util/device'; import Logger from '../../../util/Logger'; import { + findBlockExplorerForNonEvmChainId, findBlockExplorerForRpc, getBlockExplorerAddressUrl, getBlockExplorerName, @@ -77,6 +78,7 @@ import { import { selectGasFeeEstimates } from '../../../selectors/confirmTransaction'; import { decGWEIToHexWEI } from '../../../util/conversions'; import { ActivitiesViewSelectorsIDs } from '../../../../e2e/selectors/Transactions/ActivitiesView.selectors'; +import { isNonEvmChainId } from '../../../core/Multichain/utils'; const createStyles = (colors, typography) => StyleSheet.create({ @@ -269,12 +271,16 @@ class Transactions extends PureComponent { const { providerConfig: { type, rpcUrl }, networkConfigurations, + chainId, } = this.props; let blockExplorer; if (type === RPC) { blockExplorer = findBlockExplorerForRpc(rpcUrl, networkConfigurations) || NO_RPC_BLOCK_EXPLORER; + } else if (isNonEvmChainId(chainId)) { + // TODO: [SOLANA] - block explorer needs to be implemented + blockExplorer = findBlockExplorerForNonEvmChainId(chainId); } this.setState({ rpcBlockExplorer: blockExplorer }); diff --git a/app/components/Views/AccountActions/AccountActions.tsx b/app/components/Views/AccountActions/AccountActions.tsx index 2841bf87722d..55a02f4fc380 100644 --- a/app/components/Views/AccountActions/AccountActions.tsx +++ b/app/components/Views/AccountActions/AccountActions.tsx @@ -18,6 +18,7 @@ import BottomSheet, { import AccountAction from '../AccountAction/AccountAction'; import { IconName } from '../../../component-library/components/Icons/Icon'; import { + findBlockExplorerForNonEvmChainId, findBlockExplorerForRpc, getBlockExplorerName, } from '../../../util/networks'; @@ -28,6 +29,7 @@ import { import { MetaMetricsEvents } from '../../../core/Analytics'; import { RPC } from '../../../constants/network'; import { + selectChainId, selectNetworkConfigurations, selectProviderConfig, } from '../../../selectors/networkController'; @@ -54,6 +56,7 @@ import Engine from '../../../core/Engine'; import BlockingActionModal from '../../UI/BlockingActionModal'; import { useTheme } from '../../../util/theme'; import { Hex } from '@metamask/utils'; +import { isNonEvmChainId } from '../../../core/Multichain/utils'; interface AccountActionsParams { selectedAccount: InternalAccount; @@ -77,6 +80,7 @@ const AccountActions = () => { }, []); const providerConfig = useSelector(selectProviderConfig); + const chainId = useSelector(selectChainId); const selectedAddress = selectedAccount?.address; const keyring = selectedAccount?.metadata.keyring; @@ -90,8 +94,18 @@ const AccountActions = () => { networkConfigurations, ); } + if (isNonEvmChainId(chainId)) { + // TODO: [SOLANA] - block explorer needs to be implemented + return findBlockExplorerForNonEvmChainId(chainId); + } + return null; - }, [networkConfigurations, providerConfig.rpcUrl, providerConfig.type]); + }, [ + networkConfigurations, + providerConfig.rpcUrl, + providerConfig.type, + chainId, + ]); const blockExplorerName = getBlockExplorerName(blockExplorer); diff --git a/app/components/Views/AccountConnect/AccountConnect.test.tsx b/app/components/Views/AccountConnect/AccountConnect.test.tsx index b1f983b7f098..fe773dc887ec 100644 --- a/app/components/Views/AccountConnect/AccountConnect.test.tsx +++ b/app/components/Views/AccountConnect/AccountConnect.test.tsx @@ -7,9 +7,16 @@ import { backgroundState } from '../../../util/test/initial-root-state'; import { RootState } from '../../../reducers'; import { fireEvent } from '@testing-library/react-native'; import AccountConnectMultiSelector from './AccountConnectMultiSelector/AccountConnectMultiSelector'; +import Engine from '../../../core/Engine'; const mockedNavigate = jest.fn(); +const mockedGoBack = jest.fn(); const mockedTrackEvent = jest.fn(); +const mockCreateEventBuilder = jest.fn().mockReturnValue({ + addProperties: jest.fn().mockReturnValue({ + build: jest.fn(), + }), +}); jest.mock('@react-navigation/native', () => { const actualNav = jest.requireActual('@react-navigation/native'); @@ -17,6 +24,7 @@ jest.mock('@react-navigation/native', () => { ...actualNav, useNavigation: () => ({ navigate: mockedNavigate, + goBack: mockedGoBack, }), }; }); @@ -24,6 +32,7 @@ jest.mock('@react-navigation/native', () => { jest.mock('../../../components/hooks/useMetrics', () => ({ useMetrics: () => ({ trackEvent: mockedTrackEvent, + createEventBuilder: mockCreateEventBuilder, }), })); @@ -49,13 +58,19 @@ jest.mock('../../../core/Engine', () => ({ return { result: false }; }), }, + PermissionController: { + rejectPermissionsRequest: jest.fn(), + }, }, })); +const mockRemoveChannel = jest.fn(); + // Mock SDKConnect jest.mock('../../../core/SDKConnect/SDKConnect', () => ({ getInstance: () => ({ getConnection: () => undefined, + removeChannel: mockRemoveChannel, }), })); @@ -200,4 +215,45 @@ describe('AccountConnect', () => { expect(getByTestId('permission-summary-container')).toBeDefined(); }); }); + + it('should handle cancel button press correctly', () => { + const { getByTestId } = renderWithProvider( + <AccountConnect + route={{ + params: { + hostInfo: { + metadata: { + id: 'mockId', + origin: 'mockOrigin', + }, + permissions: { + eth_accounts: { + parentCapability: 'eth_accounts', + }, + }, + }, + permissionRequestId: 'test', + }, + }} + />, + { state: mockInitialState }, + ); + + const cancelButton = getByTestId('cancel-button'); + fireEvent.press(cancelButton); + + // Verify that the trackEvent was called + expect(mockedTrackEvent).toHaveBeenCalled(); + // Verify the permission request was rejected + expect( + Engine.context.PermissionController.rejectPermissionsRequest, + ).toHaveBeenCalledWith('test'); + // Verify removeChannel was called with correct parameters + expect(mockRemoveChannel).toHaveBeenCalledWith({ + channelId: 'mockOrigin', + sendTerminate: true, + }); + // Verify createEventBuilder was called + expect(mockCreateEventBuilder).toHaveBeenCalled(); + }); }); diff --git a/app/components/Views/AccountConnect/AccountConnect.tsx b/app/components/Views/AccountConnect/AccountConnect.tsx index c14180a5a76f..d4f92203ea94 100644 --- a/app/components/Views/AccountConnect/AccountConnect.tsx +++ b/app/components/Views/AccountConnect/AccountConnect.tsx @@ -78,9 +78,10 @@ import { PermissionKeys } from '../../../core/Permissions/specifications'; import { CaveatTypes } from '../../../core/Permissions/constants'; import { useNetworkInfo } from '../../../selectors/selectedNetworkController'; import { AvatarSize } from '../../../component-library/components/Avatars/Avatar'; -import { selectNetworkConfigurations } from '../../../selectors/networkController'; +import { selectEvmNetworkConfigurationsByChainId } from '../../../selectors/networkController'; import { isUUID } from '../../../core/SDKConnect/utils/isUUID'; import useOriginSource from '../../hooks/useOriginSource'; +import { selectIsEvmNetworkSelected } from '../../../selectors/multichainNetworkController'; const createStyles = () => StyleSheet.create({ @@ -102,8 +103,11 @@ const AccountConnect = (props: AccountConnectProps) => { const selectedWalletAddress = useSelector( selectSelectedInternalAccountFormattedAddress, ); + + const isEvmSelected = useSelector(selectIsEvmNetworkSelected); + const [selectedAddresses, setSelectedAddresses] = useState<string[]>( - selectedWalletAddress ? [selectedWalletAddress] : [], + selectedWalletAddress && isEvmSelected ? [selectedWalletAddress] : [], ); const [confirmedAddresses, setConfirmedAddresses] = useState<string[]>(selectedAddresses); @@ -112,7 +116,7 @@ const AccountConnect = (props: AccountConnectProps) => { const [screen, setScreen] = useState<AccountConnectScreens>( AccountConnectScreens.SingleConnect, ); - const { accounts, ensByAccountAddress } = useAccounts({ + const { evmAccounts: accounts, ensByAccountAddress } = useAccounts({ isLoading, }); const previousIdentitiesListSize = useRef<number>(); @@ -135,7 +139,9 @@ const AccountConnect = (props: AccountConnectProps) => { const accountsLength = useSelector(selectAccountsLength); const { wc2Metadata } = useSelector((state: RootState) => state.sdk); - const networkConfigurations = useSelector(selectNetworkConfigurations); + const networkConfigurations = useSelector( + selectEvmNetworkConfigurationsByChainId, + ); const { origin: channelIdOrHostname } = hostInfo.metadata as { id: string; diff --git a/app/components/Views/AccountConnect/AccountConnectMultiSelector/AccountConnectMultiSelector.test.tsx b/app/components/Views/AccountConnect/AccountConnectMultiSelector/AccountConnectMultiSelector.test.tsx new file mode 100644 index 000000000000..e4ab45162d0e --- /dev/null +++ b/app/components/Views/AccountConnect/AccountConnectMultiSelector/AccountConnectMultiSelector.test.tsx @@ -0,0 +1,181 @@ +import React from 'react'; +import { ImageSourcePropType } from 'react-native'; +import { fireEvent } from '@testing-library/react-native'; +import renderWithProvider from '../../../../util/test/renderWithProvider'; +import AccountConnectMultiSelector from './AccountConnectMultiSelector'; +import { backgroundState } from '../../../../util/test/initial-root-state'; +import { ConnectedAccountsSelectorsIDs } from '../../../../../e2e/selectors/Browser/ConnectedAccountModal.selectors'; +import { AccountListBottomSheetSelectorsIDs } from '../../../../../e2e/selectors/wallet/AccountListBottomSheet.selectors'; +import { ConnectAccountBottomSheetSelectorsIDs } from '../../../../../e2e/selectors/Browser/ConnectAccountBottomSheet.selectors'; +import { IconName } from '../../../../component-library/components/Icons/Icon'; +import { KeyringTypes } from '@metamask/keyring-controller'; + +const mockNavigate = jest.fn(); +const mockOnSelectAddress = jest.fn(); +const mockOnUserAction = jest.fn(); +const mockOnBack = jest.fn(); +const mockOnPrimaryActionButtonPress = jest.fn(); + +jest.mock('@react-navigation/native', () => ({ + ...jest.requireActual('@react-navigation/native'), + useNavigation: () => ({ + navigate: mockNavigate, + }), +})); + +jest.mock('../../../../core/Engine', () => ({ + context: { + PermissionController: { + revokeAllPermissions: jest.fn(), + }, + AccountsController: { + state: { + internalAccounts: { + accounts: { + '0x1234': { + address: '0x1234', + name: 'Account 1', + type: 'simple', + }, + '0x5678': { + address: '0x5678', + name: 'Account 2', + type: 'simple', + }, + }, + }, + }, + }, + }, +})); + +const mockAccounts = [ + { + address: '0x1234', + name: 'Account 1', + balance: '0x1', + type: KeyringTypes.simple, + yOffset: 0, + isSelected: false, + }, + { + address: '0x5678', + name: 'Account 2', + balance: '0x2', + type: KeyringTypes.simple, + yOffset: 0, + isSelected: false, + }, +]; + +const mockEnsByAccountAddress = { + '0x1234': 'test1.eth', + '0x5678': 'test2.eth', +}; + +const defaultProps = { + accounts: mockAccounts, + ensByAccountAddress: mockEnsByAccountAddress, + selectedAddresses: ['0x1234'], + onSelectAddress: mockOnSelectAddress, + isLoading: false, + onUserAction: mockOnUserAction, + urlWithProtocol: 'https://test.com', + hostname: 'test.com', + onBack: mockOnBack, + isRenderedAsBottomSheet: true, + showDisconnectAllButton: true, + favicon: { uri: 'https://test.com/favicon.ico' } as ImageSourcePropType, + secureIcon: 'LockIcon' as IconName, +}; + +describe('AccountConnectMultiSelector', () => { + beforeEach(() => { + jest.clearAllMocks(); + }); + + it('renders correctly', () => { + const { toJSON } = renderWithProvider( + <AccountConnectMultiSelector {...defaultProps} />, + { state: { engine: { backgroundState } } }, + ); + expect(toJSON()).toMatchSnapshot(); + }); + + it('displays accounts list', () => { + const { getByTestId } = renderWithProvider( + <AccountConnectMultiSelector {...defaultProps} />, + { state: { engine: { backgroundState } } }, + ); + + expect( + getByTestId(AccountListBottomSheetSelectorsIDs.ACCOUNT_LIST_ID), + ).toBeDefined(); + }); + + it('shows update button when accounts are selected', () => { + const { getByTestId } = renderWithProvider( + <AccountConnectMultiSelector {...defaultProps} />, + { state: { engine: { backgroundState } } }, + ); + + expect( + getByTestId(ConnectAccountBottomSheetSelectorsIDs.SELECT_MULTI_BUTTON), + ).toBeDefined(); + }); + + it('shows disconnect button when no accounts are selected', () => { + const { getByTestId } = renderWithProvider( + <AccountConnectMultiSelector {...defaultProps} selectedAddresses={[]} />, + { state: { engine: { backgroundState } } }, + ); + + expect(getByTestId(ConnectedAccountsSelectorsIDs.DISCONNECT)).toBeDefined(); + }); + + it('handles add account button press', () => { + const { getByTestId } = renderWithProvider( + <AccountConnectMultiSelector {...defaultProps} />, + { state: { engine: { backgroundState } } }, + ); + + const addButton = getByTestId( + AccountListBottomSheetSelectorsIDs.ACCOUNT_LIST_ADD_BUTTON_ID, + ); + fireEvent.press(addButton); + + // Verify that the screen changes to AddAccountActions + expect(mockNavigate).not.toHaveBeenCalled(); // Since this is handled internally + }); + + it('handles primary action button press when provided', () => { + const { getByTestId } = renderWithProvider( + <AccountConnectMultiSelector + {...defaultProps} + onPrimaryActionButtonPress={mockOnPrimaryActionButtonPress} + />, + { state: { engine: { backgroundState } } }, + ); + + const updateButton = getByTestId( + ConnectAccountBottomSheetSelectorsIDs.SELECT_MULTI_BUTTON, + ); + fireEvent.press(updateButton); + + expect(mockOnPrimaryActionButtonPress).toHaveBeenCalled(); + expect(mockOnUserAction).not.toHaveBeenCalled(); + }); + + it('disables update button when no changes are made', () => { + const { getByTestId } = renderWithProvider( + <AccountConnectMultiSelector {...defaultProps} />, + { state: { engine: { backgroundState } } }, + ); + + const updateButton = getByTestId( + ConnectAccountBottomSheetSelectorsIDs.SELECT_MULTI_BUTTON, + ); + + expect(updateButton.props.disabled).toBe(true); + }); +}); diff --git a/app/components/Views/AccountConnect/AccountConnectMultiSelector/AccountConnectMultiSelector.tsx b/app/components/Views/AccountConnect/AccountConnectMultiSelector/AccountConnectMultiSelector.tsx index 2a47cf5a6f57..67f24156b7ef 100644 --- a/app/components/Views/AccountConnect/AccountConnectMultiSelector/AccountConnectMultiSelector.tsx +++ b/app/components/Views/AccountConnect/AccountConnectMultiSelector/AccountConnectMultiSelector.tsx @@ -243,6 +243,7 @@ const AccountConnectMultiSelector = ({ isMultiSelect isRemoveAccountEnabled isAutoScrollEnabled={isAutoScrollEnabled} + testID={AccountListBottomSheetSelectorsIDs.ACCOUNT_LIST_ID} /> {connection?.originatorInfo?.apiVersion && ( <View style={styles.sdkInfoContainer}> diff --git a/app/components/Views/AccountConnect/AccountConnectMultiSelector/AccountConnectMultiSelector.types.ts b/app/components/Views/AccountConnect/AccountConnectMultiSelector/AccountConnectMultiSelector.types.ts index c47d290bc7a6..81991f0f26d0 100644 --- a/app/components/Views/AccountConnect/AccountConnectMultiSelector/AccountConnectMultiSelector.types.ts +++ b/app/components/Views/AccountConnect/AccountConnectMultiSelector/AccountConnectMultiSelector.types.ts @@ -18,7 +18,8 @@ import { USER_INTENT } from '../../../../constants/permissions'; /** * AccountConnectMultiSelector props. */ -export interface AccountConnectMultiSelectorProps extends UseAccounts { +export interface AccountConnectMultiSelectorProps + extends Omit<UseAccounts, 'evmAccounts'> { selectedAddresses: string[]; onSelectAddress: (addresses: string[]) => void; isLoading?: boolean; diff --git a/app/components/Views/AccountConnect/AccountConnectMultiSelector/__snapshots__/AccountConnectMultiSelector.test.tsx.snap b/app/components/Views/AccountConnect/AccountConnectMultiSelector/__snapshots__/AccountConnectMultiSelector.test.tsx.snap new file mode 100644 index 000000000000..372d6696696a --- /dev/null +++ b/app/components/Views/AccountConnect/AccountConnectMultiSelector/__snapshots__/AccountConnectMultiSelector.test.tsx.snap @@ -0,0 +1,694 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`AccountConnectMultiSelector renders correctly 1`] = ` +<RCTSafeAreaView> + <View + style={ + { + "height": "100%", + } + } + > + <View + style={ + { + "alignItems": "center", + "backgroundColor": "#ffffff", + "flexDirection": "row", + "height": 32, + "justifyContent": "space-between", + "margin": 16, + } + } + > + <View + style={ + { + "flex": 1, + } + } + > + <TouchableOpacity + accessible={true} + activeOpacity={1} + disabled={false} + onPress={[MockFunction]} + onPressIn={[Function]} + onPressOut={[Function]} + style={ + { + "alignItems": "center", + "borderRadius": 8, + "height": 24, + "justifyContent": "center", + "opacity": 1, + "width": 24, + } + } + testID="sheet-header-back-button" + > + <SvgMock + color="#141618" + height={16} + name="ArrowLeft" + style={ + { + "height": 16, + "width": 16, + } + } + width={16} + /> + </TouchableOpacity> + </View> + <Text + accessibilityRole="text" + style={ + { + "color": "#141618", + "fontFamily": "EuclidCircularB-Bold", + "fontSize": 18, + "fontWeight": "700", + "letterSpacing": 0, + "lineHeight": 24, + } + } + > + Connect accounts + </Text> + <View + style={ + { + "alignItems": "flex-end", + "flex": 1, + } + } + /> + </View> + <View + style={ + { + "paddingHorizontal": 16, + } + } + > + <Text + accessibilityRole="text" + style={ + { + "color": "#6a737d", + "fontFamily": "EuclidCircularB-Regular", + "fontSize": 14, + "fontWeight": "400", + "letterSpacing": 0, + "lineHeight": 22, + "marginVertical": 8, + "textAlign": "center", + } + } + > + Select the account(s) to use on this site: + </Text> + <View> + <TouchableOpacity + disabled={false} + onPress={[Function]} + style={ + { + "alignItems": "center", + "flexDirection": "row", + "height": 24, + "marginLeft": 0, + "marginVertical": 12, + "opacity": 1, + } + } + > + <View + accessibilityRole="checkbox" + style={ + { + "alignItems": "center", + "backgroundColor": "#0376c9", + "borderColor": "#0376c9", + "borderRadius": 4, + "borderWidth": 2, + "height": 20, + "justifyContent": "center", + "width": 20, + } + } + > + <SvgMock + color="#ffffff" + height={20} + name="MinusBold" + onPress={[Function]} + style={ + { + "height": 20, + "width": 20, + } + } + testID="checkbox-icon-component" + width={20} + /> + </View> + <View + style={ + { + "marginLeft": 12, + } + } + > + <Text + accessibilityRole="text" + style={ + { + "color": "#141618", + "fontFamily": "EuclidCircularB-Regular", + "fontSize": 14, + "fontWeight": "400", + "letterSpacing": 0, + "lineHeight": 22, + } + } + > + Select all + </Text> + </View> + </TouchableOpacity> + </View> + </View> + <RCTScrollView + collapsable={false} + data={ + [ + { + "address": "0x1234", + "balance": "0x1", + "isSelected": false, + "name": "Account 1", + "type": "Simple Key Pair", + "yOffset": 0, + }, + { + "address": "0x5678", + "balance": "0x2", + "isSelected": false, + "name": "Account 2", + "type": "Simple Key Pair", + "yOffset": 0, + }, + ] + } + getItem={[Function]} + getItemCount={[Function]} + initialNumToRender={999} + keyExtractor={[Function]} + onContentSizeChange={[Function]} + onGestureHandlerEvent={[Function]} + onGestureHandlerStateChange={[Function]} + onLayout={[Function]} + onMomentumScrollBegin={[Function]} + onMomentumScrollEnd={[Function]} + onScroll={[Function]} + onScrollBeginDrag={[Function]} + onScrollEndDrag={[Function]} + removeClippedSubviews={false} + renderItem={[Function]} + renderScrollComponent={[Function]} + scrollEventThrottle={50} + stickyHeaderIndices={[]} + testID="account-list" + viewabilityConfigCallbackPairs={[]} + > + <View> + <View + onFocusCapture={[Function]} + onLayout={[Function]} + style={null} + > + <TouchableOpacity + buttonProps={ + { + "buttonTestId": "main-wallet-account-actions-0", + "onButtonClick": [Function], + } + } + onLongPress={[Function]} + onPress={[Function]} + showSecondaryTextIcon={false} + style={ + { + "backgroundColor": "#ffffff", + "borderRadius": 4, + "opacity": 1, + "padding": 16, + } + } + testID="cellmultiselect" + > + <View + accessibilityRole="none" + accessible={true} + style={ + { + "padding": 0, + } + } + > + <View + style={ + { + "alignItems": "center", + "flexDirection": "row", + } + } + > + <TouchableOpacity + disabled={false} + onPressIn={[Function]} + style={ + { + "alignItems": "center", + "flexDirection": "row", + "height": 24, + "marginRight": -8, + "opacity": 1, + } + } + > + <View + accessibilityRole="checkbox" + style={ + { + "alignItems": "center", + "backgroundColor": "#0376c9", + "borderColor": "#0376c9", + "borderRadius": 4, + "borderWidth": 2, + "height": 20, + "justifyContent": "center", + "width": 20, + } + } + > + <SvgMock + color="#ffffff" + height={20} + name="CheckBold" + onPressIn={[Function]} + style={ + { + "height": 20, + "width": 20, + } + } + testID="checkbox-icon-component" + width={20} + /> + </View> + </TouchableOpacity> + <View + accessible={false} + style={ + { + "width": 16, + } + } + testID="listitem-gap" + /> + <View + style={ + { + "flex": 1, + "flexDirection": "row", + } + } + > + <View + style={ + { + "backgroundColor": "#ffffff", + "borderRadius": 16, + "height": 32, + "marginRight": 16, + "overflow": "hidden", + "width": 32, + } + } + testID="cellbase-avatar" + > + <Image + source={ + { + "uri": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAMAAAD04JH5AAAACVBMVEXtIKKTPz8bLtzlgldiAAAAA3RSTlP////6yOLMAABAi0lEQVR42gGAQH+/AAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBYj0qAYHIysIAAAAASUVORK5CYII=", + } + } + style={ + { + "flex": 1, + } + } + /> + </View> + <View + style={ + { + "alignItems": "flex-start", + "flex": 1, + } + } + > + <Text + accessibilityRole="text" + numberOfLines={1} + style={ + { + "color": "#141618", + "fontFamily": "EuclidCircularB-Regular", + "fontSize": 16, + "fontWeight": "400", + "letterSpacing": 0, + "lineHeight": 24, + } + } + testID="cellbase-avatar-title" + > + test1.eth + </Text> + <Text + accessibilityRole="text" + numberOfLines={1} + style={ + { + "color": "#6a737d", + "fontFamily": "EuclidCircularB-Regular", + "fontSize": 14, + "fontWeight": "400", + "letterSpacing": 0, + "lineHeight": 22, + } + } + > + 0x1234...1234 + </Text> + </View> + </View> + </View> + </View> + <View + accessibilityRole="checkbox" + accessible={true} + style={ + { + "backgroundColor": "#0376C91A", + "bottom": 0, + "flexDirection": "row", + "left": 0, + "position": "absolute", + "right": 0, + "top": 0, + } + } + /> + </TouchableOpacity> + </View> + <View + onFocusCapture={[Function]} + onLayout={[Function]} + style={null} + > + <TouchableOpacity + buttonProps={ + { + "buttonTestId": "main-wallet-account-actions-1", + "onButtonClick": [Function], + } + } + onLongPress={[Function]} + onPress={[Function]} + showSecondaryTextIcon={false} + style={ + { + "backgroundColor": "#ffffff", + "borderRadius": 4, + "opacity": 1, + "padding": 16, + } + } + testID="cellmultiselect" + > + <View + accessibilityRole="none" + accessible={true} + style={ + { + "padding": 0, + } + } + > + <View + style={ + { + "alignItems": "center", + "flexDirection": "row", + } + } + > + <TouchableOpacity + disabled={false} + onPressIn={[Function]} + style={ + { + "alignItems": "center", + "flexDirection": "row", + "height": 24, + "marginRight": -8, + "opacity": 1, + } + } + > + <View + accessibilityRole="checkbox" + style={ + { + "alignItems": "center", + "backgroundColor": "#ffffff", + "borderColor": "#141618", + "borderRadius": 4, + "borderWidth": 2, + "height": 20, + "justifyContent": "center", + "width": 20, + } + } + /> + </TouchableOpacity> + <View + accessible={false} + style={ + { + "width": 16, + } + } + testID="listitem-gap" + /> + <View + style={ + { + "flex": 1, + "flexDirection": "row", + } + } + > + <View + style={ + { + "backgroundColor": "#ffffff", + "borderRadius": 16, + "height": 32, + "marginRight": 16, + "overflow": "hidden", + "width": 32, + } + } + testID="cellbase-avatar" + > + <Image + source={ + { + "uri": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAMAAAD04JH5AAAACVBMVEXIIouPPT2ikw37CUWfAAAAA3RSTlP////6yOLMAABAi0lEQVR42gGAQH+/AAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBUcUoAVUDnN4AAAAASUVORK5CYII=", + } + } + style={ + { + "flex": 1, + } + } + /> + </View> + <View + style={ + { + "alignItems": "flex-start", + "flex": 1, + } + } + > + <Text + accessibilityRole="text" + numberOfLines={1} + style={ + { + "color": "#141618", + "fontFamily": "EuclidCircularB-Regular", + "fontSize": 16, + "fontWeight": "400", + "letterSpacing": 0, + "lineHeight": 24, + } + } + testID="cellbase-avatar-title" + > + test2.eth + </Text> + <Text + accessibilityRole="text" + numberOfLines={1} + style={ + { + "color": "#6a737d", + "fontFamily": "EuclidCircularB-Regular", + "fontSize": 14, + "fontWeight": "400", + "letterSpacing": 0, + "lineHeight": 22, + } + } + > + 0x5678...5678 + </Text> + </View> + </View> + </View> + </View> + </TouchableOpacity> + </View> + </View> + </RCTScrollView> + <View + style={ + { + "marginBottom": 16, + "marginHorizontal": 16, + } + } + > + <TouchableOpacity + accessibilityRole="button" + accessible={true} + activeOpacity={1} + onPress={[Function]} + onPressIn={[Function]} + onPressOut={[Function]} + style={ + { + "alignItems": "center", + "alignSelf": "stretch", + "backgroundColor": "transparent", + "borderRadius": 24, + "flexDirection": "row", + "height": 48, + "justifyContent": "center", + "paddingHorizontal": 16, + } + } + testID="account-list-add-account-button" + > + <Text + accessibilityRole="text" + style={ + { + "color": "#0376c9", + "fontFamily": "EuclidCircularB-Medium", + "fontSize": 14, + "fontWeight": "500", + "letterSpacing": 0, + "lineHeight": 22, + } + } + > + Add account or hardware wallet + </Text> + </TouchableOpacity> + </View> + <View + style={ + { + "paddingHorizontal": 16, + } + } + > + <View + style={ + { + "marginBottom": 0, + "marginTop": 0, + } + } + > + <View + style={ + { + "flexDirection": "row", + } + } + > + <TouchableOpacity + accessibilityRole="button" + accessible={true} + activeOpacity={1} + disabled={true} + onPress={[Function]} + onPressIn={[Function]} + onPressOut={[Function]} + style={ + { + "alignItems": "center", + "alignSelf": "flex-start", + "backgroundColor": "#0376c9", + "borderRadius": 24, + "flex": 1, + "flexDirection": "row", + "height": 48, + "justifyContent": "center", + "opacity": 0.5, + "paddingHorizontal": 16, + } + } + testID="multiconnect-connect-button" + > + <Text + accessibilityRole="text" + style={ + { + "color": "#ffffff", + "fontFamily": "EuclidCircularB-Medium", + "fontSize": 14, + "fontWeight": "500", + "letterSpacing": 0, + "lineHeight": 22, + } + } + > + Update + </Text> + </TouchableOpacity> + </View> + </View> + </View> + </View> +</RCTSafeAreaView> +`; diff --git a/app/components/Views/AccountConnect/AccountConnectSingleSelector/AccountConnectSingleSelector.types.ts b/app/components/Views/AccountConnect/AccountConnectSingleSelector/AccountConnectSingleSelector.types.ts index 839bbf19eeb7..0dbad2022c2a 100644 --- a/app/components/Views/AccountConnect/AccountConnectSingleSelector/AccountConnectSingleSelector.types.ts +++ b/app/components/Views/AccountConnect/AccountConnectSingleSelector/AccountConnectSingleSelector.types.ts @@ -6,7 +6,8 @@ import { AccountConnectScreens } from '../AccountConnect.types'; /** * AccountConnectSingleSelector props. */ -export interface AccountConnectSingleSelectorProps extends UseAccounts { +export interface AccountConnectSingleSelectorProps + extends Omit<UseAccounts, 'evmAccounts'> { selectedAddresses: string[]; isLoading?: boolean; onSetScreen: (screen: AccountConnectScreens) => void; diff --git a/app/components/Views/AccountConnect/__snapshots__/AccountConnect.test.tsx.snap b/app/components/Views/AccountConnect/__snapshots__/AccountConnect.test.tsx.snap index 7563f550c90e..3f70d6ba37cf 100644 --- a/app/components/Views/AccountConnect/__snapshots__/AccountConnect.test.tsx.snap +++ b/app/components/Views/AccountConnect/__snapshots__/AccountConnect.test.tsx.snap @@ -361,7 +361,7 @@ exports[`AccountConnect renders correctly 1`] = ` } } > - Requesting for 0 accounts + Connect an account </Text> </Text> </View> @@ -804,8 +804,8 @@ exports[`AccountConnect renders correctly 1`] = ` <TouchableOpacity accessibilityRole="button" accessible={true} - activeOpacity={0.2} - onPress={[Function]} + activeOpacity={1} + disabled={true} style={ [ [ @@ -827,7 +827,9 @@ exports[`AccountConnect renders correctly 1`] = ` }, ], ], - null, + { + "opacity": 0.6, + }, ] } testID="connect-button" @@ -841,7 +843,9 @@ exports[`AccountConnect renders correctly 1`] = ` "fontWeight": "500", "textAlign": "center", }, - null, + { + "color": "#dcdcdc", + }, [ { "fontFamily": "EuclidCircularB-Bold", @@ -854,7 +858,9 @@ exports[`AccountConnect renders correctly 1`] = ` }, undefined, ], - null, + { + "opacity": 0.6, + }, ] } > diff --git a/app/components/Views/AccountPermissions/AccountPermissions.test.tsx b/app/components/Views/AccountPermissions/AccountPermissions.test.tsx index 03e610b3bef1..8e76e2feb1ba 100644 --- a/app/components/Views/AccountPermissions/AccountPermissions.test.tsx +++ b/app/components/Views/AccountPermissions/AccountPermissions.test.tsx @@ -7,6 +7,7 @@ import { RootState } from '../../../reducers'; import AccountPermissions from './AccountPermissions'; import { ConnectedAccountsSelectorsIDs } from '../../../../e2e/selectors/Browser/ConnectedAccountModal.selectors'; import { fireEvent } from '@testing-library/react-native'; +import { AccountPermissionsScreens } from './AccountPermissions.types'; const mockedNavigate = jest.fn(); const mockedGoBack = jest.fn(); @@ -88,4 +89,20 @@ describe('AccountPermissions', () => { expect(getByTestId('permission-summary-container')).toBeDefined(); }); }); + + it('should render connect more accounts screen when specified as initial screen', () => { + const { getByText } = renderWithProvider( + <AccountPermissions + route={{ + params: { + hostInfo: { metadata: { origin: 'test' } }, + initialScreen: AccountPermissionsScreens.ConnectMoreAccounts, + }, + }} + />, + { state: mockInitialState }, + ); + + expect(getByText('Connect more accounts')).toBeDefined(); + }); }); diff --git a/app/components/Views/AccountPermissions/AccountPermissions.tsx b/app/components/Views/AccountPermissions/AccountPermissions.tsx index 8c3f5dc3d1fb..46bb0da8215f 100755 --- a/app/components/Views/AccountPermissions/AccountPermissions.tsx +++ b/app/components/Views/AccountPermissions/AccountPermissions.tsx @@ -38,7 +38,7 @@ import { getActiveTabUrl } from '../../../util/transactions'; import { strings } from '../../../../locales/i18n'; import { AvatarAccountType } from '../../../component-library/components/Avatars/Avatar/variants/AvatarAccount'; import { selectAccountsLength } from '../../../selectors/accountTrackerController'; -import { selectNetworkConfigurations } from '../../../selectors/networkController'; +import { selectEvmNetworkConfigurationsByChainId } from '../../../selectors/networkController'; // Internal dependencies. import { @@ -64,6 +64,7 @@ import { NetworkConfiguration } from '@metamask/network-controller'; import { AvatarVariant } from '../../../component-library/components/Avatars/Avatar'; import { useNetworkInfo } from '../../../selectors/selectedNetworkController'; import NetworkPermissionsConnected from './NetworkPermissionsConnected'; +import { isNonEvmChainId } from '../../../core/Multichain/utils'; const AccountPermissions = (props: AccountPermissionsProps) => { const navigation = useNavigation(); @@ -86,7 +87,7 @@ const AccountPermissions = (props: AccountPermissionsProps) => { const nonTestnetNetworks = useSelector( (state: RootState) => - Object.keys(selectNetworkConfigurations(state)).length + 1, + Object.keys(selectEvmNetworkConfigurationsByChainId(state)).length + 1, ); const origin: string = useSelector(getActiveTabUrl, isEqual); @@ -114,7 +115,9 @@ const AccountPermissions = (props: AccountPermissionsProps) => { const [networkAvatars, setNetworkAvatars] = useState< ({ name: string; imageSource: string } | null)[] >([]); - const networkConfigurations = useSelector(selectNetworkConfigurations); + const networkConfigurations = useSelector( + selectEvmNetworkConfigurationsByChainId, + ); const sheetRef = useRef<BottomSheetRef>(null); const [permissionsScreen, setPermissionsScreen] = @@ -123,7 +126,7 @@ const AccountPermissions = (props: AccountPermissionsProps) => { ? AccountPermissionsScreens.PermissionsSummary : initialScreen, ); - const { accounts, ensByAccountAddress } = useAccounts({ + const { evmAccounts: accounts, ensByAccountAddress } = useAccounts({ isLoading, }); const previousPermittedAccounts = useRef<string[]>(); @@ -155,8 +158,9 @@ const AccountPermissions = (props: AccountPermissionsProps) => { Logger.error(e as Error, 'Error getting permitted chains caveat'); } - const networks = Object.entries(networkConfigurations).map( - ([key, network]: [string, NetworkConfiguration]) => ({ + const networks = Object.entries(networkConfigurations) + .filter(([_, network]) => !isNonEvmChainId(network.chainId)) + .map(([key, network]: [string, NetworkConfiguration]) => ({ id: key, name: network.name, rpcUrl: network.rpcEndpoints[network.defaultRpcEndpointIndex].url, @@ -166,8 +170,7 @@ const AccountPermissions = (props: AccountPermissionsProps) => { imageSource: getNetworkImageSource({ chainId: network?.chainId, }), - }), - ); + })); const theNetworkAvatars: ({ name: string; imageSource: string } | null)[] = currentlyPermittedChains.map((selectedId) => { diff --git a/app/components/Views/AccountPermissions/AccountPermissionsConfirmRevokeAll/__snapshots__/AccountPermissionsConfirmRevokeAll.test.tsx.snap b/app/components/Views/AccountPermissions/AccountPermissionsConfirmRevokeAll/__snapshots__/AccountPermissionsConfirmRevokeAll.test.tsx.snap index ee710c727871..a45f4300ee42 100644 --- a/app/components/Views/AccountPermissions/AccountPermissionsConfirmRevokeAll/__snapshots__/AccountPermissionsConfirmRevokeAll.test.tsx.snap +++ b/app/components/Views/AccountPermissions/AccountPermissionsConfirmRevokeAll/__snapshots__/AccountPermissionsConfirmRevokeAll.test.tsx.snap @@ -125,11 +125,14 @@ exports[`AccountPermissionsConfirmRevokeAll renders correctly 1`] = ` > <View style={ - { - "backgroundColor": "#ffffff", - "flexDirection": "row", - "padding": 16, - } + [ + { + "backgroundColor": "#ffffff", + "flexDirection": "row", + "padding": 16, + }, + false, + ] } testID="header" > diff --git a/app/components/Views/AccountPermissions/AccountPermissionsConnected/AccountPermissionsConnected.types.ts b/app/components/Views/AccountPermissions/AccountPermissionsConnected/AccountPermissionsConnected.types.ts index 73b39f51a02b..60aaa6b7a47d 100644 --- a/app/components/Views/AccountPermissions/AccountPermissionsConnected/AccountPermissionsConnected.types.ts +++ b/app/components/Views/AccountPermissions/AccountPermissionsConnected/AccountPermissionsConnected.types.ts @@ -10,7 +10,8 @@ import { AvatarAccountType } from '../../../../component-library/components/Avat /** * AccountPermissionsConnected props. */ -export interface AccountPermissionsConnectedProps extends UseAccounts { +export interface AccountPermissionsConnectedProps + extends Omit<UseAccounts, 'evmAccounts'> { isLoading?: boolean; selectedAddresses: string[]; onSetSelectedAddresses: (addresses: string[]) => void; diff --git a/app/components/Views/AccountPermissions/AccountPermissionsRevoke/AccountPermissionsRevoke.tsx b/app/components/Views/AccountPermissions/AccountPermissionsRevoke/AccountPermissionsRevoke.tsx index 69ffbe25caea..8d8a9c5d6ea6 100644 --- a/app/components/Views/AccountPermissions/AccountPermissionsRevoke/AccountPermissionsRevoke.tsx +++ b/app/components/Views/AccountPermissions/AccountPermissionsRevoke/AccountPermissionsRevoke.tsx @@ -34,9 +34,10 @@ import { useSelector } from 'react-redux'; import { IconName } from '../../../../component-library/components/Icons/Icon'; import Avatar from '../../../../component-library/components/Avatars/Avatar/Avatar'; import { AvatarVariant } from '../../../../component-library/components/Avatars/Avatar'; -import { selectNetworkConfigurations } from '../../../../selectors/networkController'; +import { selectEvmNetworkConfigurationsByChainId } from '../../../../selectors/networkController'; import { ConnectedAccountsSelectorsIDs } from '../../../../../e2e/selectors/Browser/ConnectedAccountModal.selectors'; import { useMetrics } from '../../../../components/hooks/useMetrics'; +import { RootState } from '../../../../reducers'; const AccountPermissionsRevoke = ({ ensByAccountAddress, @@ -61,9 +62,8 @@ const AccountPermissionsRevoke = ({ const accountsLength = useSelector(selectAccountsLength); const nonTestnetNetworks = useSelector( - // TODO: Replace "any" with type - // eslint-disable-next-line @typescript-eslint/no-explicit-any - (state: any) => Object.keys(selectNetworkConfigurations(state)).length + 1, + (state: RootState) => + Object.keys(selectEvmNetworkConfigurationsByChainId(state)).length + 1, ); const revokeAllAccounts = useCallback( diff --git a/app/components/Views/AccountPermissions/AccountPermissionsRevoke/AccountPermissionsRevoke.types.ts b/app/components/Views/AccountPermissions/AccountPermissionsRevoke/AccountPermissionsRevoke.types.ts index 542509c20d35..a3fb723a14ad 100644 --- a/app/components/Views/AccountPermissions/AccountPermissionsRevoke/AccountPermissionsRevoke.types.ts +++ b/app/components/Views/AccountPermissions/AccountPermissionsRevoke/AccountPermissionsRevoke.types.ts @@ -10,7 +10,8 @@ import { AvatarAccountType } from '../../../../component-library/components/Avat /** * AccountPermissionsRevoke props. */ -export interface AccountPermissionsRevokeProps extends UseAccounts { +export interface AccountPermissionsRevokeProps + extends Omit<UseAccounts, 'evmAccounts'> { isLoading?: boolean; permittedAddresses: string[]; onSetPermissionsScreen: (screen: AccountPermissionsScreens) => void; diff --git a/app/components/Views/AccountPermissions/ConnectionDetails/ConnectionDetails.test.tsx b/app/components/Views/AccountPermissions/ConnectionDetails/ConnectionDetails.test.tsx new file mode 100644 index 000000000000..623e753b9fbe --- /dev/null +++ b/app/components/Views/AccountPermissions/ConnectionDetails/ConnectionDetails.test.tsx @@ -0,0 +1,131 @@ +import React, { ReactNode } from 'react'; +import { fireEvent } from '@testing-library/react-native'; +import renderWithProvider from '../../../../util/test/renderWithProvider'; +import ConnectionDetails from './ConnectionDetails'; +import { strings } from '../../../../../locales/i18n'; + +const mockOnCloseBottomSheet = jest.fn(); + +jest.mock( + '../../../../component-library/components/BottomSheets/BottomSheet', + () => { + const { forwardRef, useImperativeHandle } = jest.requireActual('react'); + interface MockBottomSheetRef { + onCloseBottomSheet: () => void; + } + return forwardRef( + ( + { children }: { children: ReactNode }, + ref: React.Ref<MockBottomSheetRef>, + ) => { + useImperativeHandle(ref, () => ({ + onCloseBottomSheet: mockOnCloseBottomSheet, + })); + return <>{children}</>; + }, + ); + }, +); + +describe('ConnectionDetails', () => { + beforeEach(() => { + jest.clearAllMocks(); + }); + + it('renders correctly', () => { + const { toJSON } = renderWithProvider( + <ConnectionDetails + route={{ + params: { + connectionDateTime: 1677628800000, // March 1, 2023 + }, + }} + />, + ); + expect(toJSON()).toMatchSnapshot(); + }); + + it('displays the correct title', () => { + const { getByText } = renderWithProvider( + <ConnectionDetails + route={{ + params: { + connectionDateTime: 1677628800000, + }, + }} + />, + ); + + expect( + getByText(strings('permissions.connection_details_title')), + ).toBeTruthy(); + }); + + it('formats and displays the connection date correctly', () => { + const timestamp = 1677628800000; // March 1, 2023 + const expectedFormattedDate = 'Feb 28, 2023'; + + const { getByText } = renderWithProvider( + <ConnectionDetails + route={{ + params: { + connectionDateTime: timestamp, + }, + }} + />, + ); + + expect( + getByText( + strings('permissions.connection_details_description', { + connectionDateTime: expectedFormattedDate, + }), + ), + ).toBeTruthy(); + }); + + it('uses default timestamp when connectionDateTime is not provided', () => { + const defaultTimestamp = 123456789; + const expectedFormattedDate = new Date(defaultTimestamp).toLocaleDateString( + 'en-US', + { + month: 'short', + day: 'numeric', + year: 'numeric', + }, + ); + + const { getByText } = renderWithProvider( + <ConnectionDetails + route={{ + params: {}, + }} + />, + ); + + expect( + getByText( + strings('permissions.connection_details_description', { + connectionDateTime: expectedFormattedDate, + }), + ), + ).toBeTruthy(); + }); + + it('calls onCloseBottomSheet when Got It button is pressed', () => { + const { getByText } = renderWithProvider( + <ConnectionDetails + route={{ + params: { + connectionDateTime: 1677628800000, + }, + }} + />, + ); + + const gotItButton = getByText(strings('permissions.got_it')); + fireEvent.press(gotItButton); + + expect(mockOnCloseBottomSheet).toHaveBeenCalledTimes(1); + }); +}); diff --git a/app/components/Views/AccountPermissions/ConnectionDetails/__snapshots__/ConnectionDetails.test.tsx.snap b/app/components/Views/AccountPermissions/ConnectionDetails/__snapshots__/ConnectionDetails.test.tsx.snap new file mode 100644 index 000000000000..2044f522006b --- /dev/null +++ b/app/components/Views/AccountPermissions/ConnectionDetails/__snapshots__/ConnectionDetails.test.tsx.snap @@ -0,0 +1,143 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`ConnectionDetails renders correctly 1`] = ` +<View + style={ + { + "alignItems": "center", + "paddingHorizontal": 16, + } + } +> + <View + style={ + [ + { + "backgroundColor": "#ffffff", + "flexDirection": "row", + "padding": 16, + }, + false, + ] + } + testID="header" + > + <View + style={ + { + "width": undefined, + } + } + > + <View + onLayout={[Function]} + /> + </View> + <View + style={ + { + "alignItems": "center", + "flex": 1, + "marginHorizontal": 16, + } + } + > + <Text + accessibilityRole="text" + style={ + { + "color": "#141618", + "fontFamily": "EuclidCircularB-Bold", + "fontSize": 18, + "fontWeight": "700", + "letterSpacing": 0, + "lineHeight": 24, + } + } + > + Connection Details + </Text> + </View> + <View + style={ + { + "width": undefined, + } + } + > + <View + onLayout={[Function]} + /> + </View> + </View> + <View + style={ + { + "marginBottom": 16, + } + } + > + <Text + accessibilityRole="text" + style={ + { + "color": "#141618", + "fontFamily": "EuclidCircularB-Regular", + "fontSize": 14, + "fontWeight": "400", + "letterSpacing": 0, + "lineHeight": 22, + } + } + > + You connected to this site using the MetaMask browser on Feb 28, 2023 + </Text> + </View> + <View + style={ + { + "flexDirection": "row", + "gap": 16, + } + } + > + <TouchableOpacity + accessibilityRole="button" + accessible={true} + activeOpacity={1} + onPress={[Function]} + onPressIn={[Function]} + onPressOut={[Function]} + style={ + { + "alignItems": "center", + "alignSelf": "flex-start", + "backgroundColor": "#0376c9", + "borderRadius": 24, + "flex": 1, + "flexDirection": "row", + "height": 48, + "justifyContent": "center", + "paddingHorizontal": 16, + } + } + > + <Text + accessibilityRole="text" + style={ + { + "color": "#ffffff", + "fontFamily": "EuclidCircularB-Medium", + "fontSize": 14, + "fontWeight": "500", + "letterSpacing": 0, + "lineHeight": 22, + } + } + > + Got it + </Text> + </TouchableOpacity> + </View> +</View> +`; diff --git a/app/components/Views/AccountPermissions/NetworkPermissionsConnected/NetworkPermissionsConnected.tsx b/app/components/Views/AccountPermissions/NetworkPermissionsConnected/NetworkPermissionsConnected.tsx index f078f9ddbf6c..f264b3bf8f11 100644 --- a/app/components/Views/AccountPermissions/NetworkPermissionsConnected/NetworkPermissionsConnected.tsx +++ b/app/components/Views/AccountPermissions/NetworkPermissionsConnected/NetworkPermissionsConnected.tsx @@ -16,7 +16,8 @@ import Routes from '../../../../constants/navigation/Routes'; import { selectProviderConfig, ProviderConfig, - selectNetworkConfigurations, + selectEvmNetworkConfigurationsByChainId, + selectEvmChainId, } from '../../../../selectors/networkController'; import { IconColor, @@ -60,8 +61,11 @@ const NetworkPermissionsConnected = ({ const { trackEvent, createEventBuilder } = useMetrics(); const providerConfig: ProviderConfig = useSelector(selectProviderConfig); + const chainId = useSelector(selectEvmChainId); - const networkConfigurations = useSelector(selectNetworkConfigurations); + const networkConfigurations = useSelector( + selectEvmNetworkConfigurationsByChainId, + ); // Get permitted chain IDs const getPermittedChainIds = () => { @@ -80,7 +84,7 @@ const NetworkPermissionsConnected = ({ Logger.error(e as Error, 'Error getting permitted chains caveat'); } // If no permitted chains found, default to current chain - return providerConfig?.chainId ? [providerConfig.chainId] : []; + return chainId ? [chainId] : []; }; const permittedChainIds = getPermittedChainIds(); @@ -130,21 +134,21 @@ const NetworkPermissionsConnected = ({ <View style={styles.networkSelectorListContainer}> <NetworkSelectorList networks={networks} - onSelectNetwork={(chainId) => { - if (chainId === providerConfig?.chainId) { + onSelectNetwork={(onSelectChainId) => { + if (onSelectChainId === chainId) { onDismissSheet(); return; } const theNetworkName = handleNetworkSwitch( - getDecimalChainId(chainId), + getDecimalChainId(onSelectChainId), ); if (theNetworkName) { trackEvent( createEventBuilder(MetaMetricsEvents.NETWORK_SWITCHED) .addProperties({ - chain_id: getDecimalChainId(chainId), + chain_id: getDecimalChainId(onSelectChainId), from_network: providerConfig?.nickname || theNetworkName, to_network: theNetworkName, }) diff --git a/app/components/Views/AccountPermissions/NetworkPermissionsConnected/NetworkPermissionsConnected.types.ts b/app/components/Views/AccountPermissions/NetworkPermissionsConnected/NetworkPermissionsConnected.types.ts index 48f7081efc01..627b8d3bef64 100644 --- a/app/components/Views/AccountPermissions/NetworkPermissionsConnected/NetworkPermissionsConnected.types.ts +++ b/app/components/Views/AccountPermissions/NetworkPermissionsConnected/NetworkPermissionsConnected.types.ts @@ -10,7 +10,8 @@ import { AvatarAccountType } from '../../../../component-library/components/Avat /** * AccountPermissionsConnected props. */ -export interface NetworkPermissionsConnectedProps extends UseAccounts { +export interface NetworkPermissionsConnectedProps + extends Omit<UseAccounts, 'evmAccounts'> { isLoading?: boolean; selectedAddresses: string[]; onSetSelectedAddresses: (addresses: string[]) => void; diff --git a/app/components/Views/AccountPermissions/PermittedNetworksInfoSheet/PermittedNetworksInfoSheet.constants.ts b/app/components/Views/AccountPermissions/PermittedNetworksInfoSheet/PermittedNetworksInfoSheet.constants.ts new file mode 100644 index 000000000000..f865f60b3fd3 --- /dev/null +++ b/app/components/Views/AccountPermissions/PermittedNetworksInfoSheet/PermittedNetworksInfoSheet.constants.ts @@ -0,0 +1,6 @@ +export const PermittedNetworksInfoSheetTestIds = { + CONTAINER: 'permitted-networks-info-sheet', + DESCRIPTION_CONTAINER: 'description-container', + BUTTONS_CONTAINER: 'buttons-container', + GOT_IT_BUTTON: 'got-it-button', +} as const; diff --git a/app/components/Views/AccountPermissions/PermittedNetworksInfoSheet/PermittedNetworksInfoSheet.test.tsx b/app/components/Views/AccountPermissions/PermittedNetworksInfoSheet/PermittedNetworksInfoSheet.test.tsx new file mode 100644 index 000000000000..069eb790bb73 --- /dev/null +++ b/app/components/Views/AccountPermissions/PermittedNetworksInfoSheet/PermittedNetworksInfoSheet.test.tsx @@ -0,0 +1,86 @@ +import React from 'react'; +import renderWithProvider from '../../../../util/test/renderWithProvider'; +import PermittedNetworksInfoSheet from './PermittedNetworksInfoSheet'; +import { strings } from '../../../../../locales/i18n'; +import { PermittedNetworksInfoSheetTestIds } from './PermittedNetworksInfoSheet.constants'; + +const mockHandleClose = jest.fn() as jest.Mock<void, []>; + +jest.mock( + '../../../../component-library/components/BottomSheets/BottomSheet', + () => { + const MockBottomSheet = ({ + children, + ref, + }: { + children: React.ReactNode; + ref: { current: { onCloseBottomSheet: () => void } | null }; + }) => { + if (ref) { + ref.current = { + onCloseBottomSheet: mockHandleClose, + }; + } + return <>{children}</>; + }; + return MockBottomSheet; + }, +); + +describe('PermittedNetworksInfoSheet', () => { + beforeEach(() => { + jest.clearAllMocks(); + }); + + it('should render correctly', () => { + const { toJSON } = renderWithProvider(<PermittedNetworksInfoSheet />); + expect(toJSON()).toMatchSnapshot(); + }); + + it('should display the correct title', () => { + const { getByText } = renderWithProvider(<PermittedNetworksInfoSheet />); + expect(getByText(strings('permissions.permitted_networks'))).toBeDefined(); + }); + + it('should display the correct description', () => { + const { getByText } = renderWithProvider(<PermittedNetworksInfoSheet />); + expect( + getByText( + strings('permissions.permitted_networks_info_sheet_description'), + ), + ).toBeDefined(); + }); + + it('should display the "Got it" button with correct text', () => { + const { getByText } = renderWithProvider(<PermittedNetworksInfoSheet />); + expect(getByText(strings('permissions.got_it'))).toBeDefined(); + }); + + it('should apply correct styles to containers', () => { + const { getByTestId } = renderWithProvider(<PermittedNetworksInfoSheet />); + + const mainContainer = getByTestId( + PermittedNetworksInfoSheetTestIds.CONTAINER, + ); + const descriptionContainer = getByTestId( + PermittedNetworksInfoSheetTestIds.DESCRIPTION_CONTAINER, + ); + const buttonsContainer = getByTestId( + PermittedNetworksInfoSheetTestIds.BUTTONS_CONTAINER, + ); + + expect(mainContainer.props.style).toMatchObject({ + paddingHorizontal: 16, + alignItems: 'center', + }); + + expect(descriptionContainer.props.style).toMatchObject({ + marginBottom: 16, + }); + + expect(buttonsContainer.props.style).toMatchObject({ + flexDirection: 'row', + gap: 16, + }); + }); +}); diff --git a/app/components/Views/AccountPermissions/PermittedNetworksInfoSheet/PermittedNetworksInfoSheet.tsx b/app/components/Views/AccountPermissions/PermittedNetworksInfoSheet/PermittedNetworksInfoSheet.tsx index 2324e44d58db..2bc9e9857d97 100644 --- a/app/components/Views/AccountPermissions/PermittedNetworksInfoSheet/PermittedNetworksInfoSheet.tsx +++ b/app/components/Views/AccountPermissions/PermittedNetworksInfoSheet/PermittedNetworksInfoSheet.tsx @@ -17,6 +17,7 @@ import BottomSheet, { } from '../../../../component-library/components/BottomSheets/BottomSheet'; import { useStyles } from '../../../../component-library/hooks'; import styleSheet from './PermittedNetworksInfoSheet.styles'; +import { PermittedNetworksInfoSheetTestIds } from './PermittedNetworksInfoSheet.constants'; const PermittedNetworksInfoSheet = () => { const { styles } = useStyles(styleSheet, {}); @@ -29,24 +30,34 @@ const PermittedNetworksInfoSheet = () => { return ( <BottomSheet ref={sheetRef}> - <View style={styles.container}> + <View + style={styles.container} + testID={PermittedNetworksInfoSheetTestIds.CONTAINER} + > <BottomSheetHeader> <Text variant={TextVariant.HeadingMD}> {strings('permissions.permitted_networks')} </Text> </BottomSheetHeader> - <View style={styles.descriptionContainer}> + <View + style={styles.descriptionContainer} + testID={PermittedNetworksInfoSheetTestIds.DESCRIPTION_CONTAINER} + > <Text variant={TextVariant.BodyMD}> {strings('permissions.permitted_networks_info_sheet_description')} </Text> </View> - <View style={styles.buttonsContainer}> + <View + style={styles.buttonsContainer} + testID={PermittedNetworksInfoSheetTestIds.BUTTONS_CONTAINER} + > <Button label={strings('permissions.got_it')} style={styles.button} size={ButtonSize.Lg} variant={ButtonVariants.Primary} onPress={onDismiss} + testID={PermittedNetworksInfoSheetTestIds.GOT_IT_BUTTON} /> </View> </View> diff --git a/app/components/Views/AccountPermissions/PermittedNetworksInfoSheet/__snapshots__/PermittedNetworksInfoSheet.test.tsx.snap b/app/components/Views/AccountPermissions/PermittedNetworksInfoSheet/__snapshots__/PermittedNetworksInfoSheet.test.tsx.snap new file mode 100644 index 000000000000..dfd08695edce --- /dev/null +++ b/app/components/Views/AccountPermissions/PermittedNetworksInfoSheet/__snapshots__/PermittedNetworksInfoSheet.test.tsx.snap @@ -0,0 +1,147 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`PermittedNetworksInfoSheet should render correctly 1`] = ` +<View + style={ + { + "alignItems": "center", + "paddingHorizontal": 16, + } + } + testID="permitted-networks-info-sheet" +> + <View + style={ + [ + { + "backgroundColor": "#ffffff", + "flexDirection": "row", + "padding": 16, + }, + false, + ] + } + testID="header" + > + <View + style={ + { + "width": undefined, + } + } + > + <View + onLayout={[Function]} + /> + </View> + <View + style={ + { + "alignItems": "center", + "flex": 1, + "marginHorizontal": 16, + } + } + > + <Text + accessibilityRole="text" + style={ + { + "color": "#141618", + "fontFamily": "EuclidCircularB-Bold", + "fontSize": 18, + "fontWeight": "700", + "letterSpacing": 0, + "lineHeight": 24, + } + } + > + Permitted networks + </Text> + </View> + <View + style={ + { + "width": undefined, + } + } + > + <View + onLayout={[Function]} + /> + </View> + </View> + <View + style={ + { + "marginBottom": 16, + } + } + testID="description-container" + > + <Text + accessibilityRole="text" + style={ + { + "color": "#141618", + "fontFamily": "EuclidCircularB-Regular", + "fontSize": 14, + "fontWeight": "400", + "letterSpacing": 0, + "lineHeight": 22, + } + } + > + This is a list of networks that you've previously granted permissions to use on this site. Select one from the list or edit network permissions for this site. + </Text> + </View> + <View + style={ + { + "flexDirection": "row", + "gap": 16, + } + } + testID="buttons-container" + > + <TouchableOpacity + accessibilityRole="button" + accessible={true} + activeOpacity={1} + onPress={[Function]} + onPressIn={[Function]} + onPressOut={[Function]} + style={ + { + "alignItems": "center", + "alignSelf": "flex-start", + "backgroundColor": "#0376c9", + "borderRadius": 24, + "flex": 1, + "flexDirection": "row", + "height": 48, + "justifyContent": "center", + "paddingHorizontal": 16, + } + } + testID="got-it-button" + > + <Text + accessibilityRole="text" + style={ + { + "color": "#ffffff", + "fontFamily": "EuclidCircularB-Medium", + "fontSize": 14, + "fontWeight": "500", + "letterSpacing": 0, + "lineHeight": 22, + } + } + > + Got it + </Text> + </TouchableOpacity> + </View> +</View> +`; diff --git a/app/components/Views/AccountSelector/AccountSelector.tsx b/app/components/Views/AccountSelector/AccountSelector.tsx index a1c724e502f0..3560b8a7b295 100644 --- a/app/components/Views/AccountSelector/AccountSelector.tsx +++ b/app/components/Views/AccountSelector/AccountSelector.tsx @@ -42,8 +42,12 @@ import { TraceName, endTrace } from '../../../util/trace'; const AccountSelector = ({ route }: AccountSelectorProps) => { const dispatch = useDispatch(); const { trackEvent, createEventBuilder } = useMetrics(); - const { onSelectAccount, checkBalanceError, disablePrivacyMode } = - route.params || {}; + const { + onSelectAccount, + checkBalanceError, + disablePrivacyMode, + navigateToAddAccountActions, + } = route.params || {}; const { reloadAccounts } = useSelector((state: RootState) => state.accounts); // TODO: Replace "any" with type @@ -56,7 +60,7 @@ const AccountSelector = ({ route }: AccountSelectorProps) => { isLoading: reloadAccounts, }); const [screen, setScreen] = useState<AccountSelectorScreens>( - AccountSelectorScreens.AccountSelector, + navigateToAddAccountActions ?? AccountSelectorScreens.AccountSelector, ); useEffect(() => { endTrace({ name: TraceName.AccountList }); diff --git a/app/components/Views/AccountSelector/AccountSelector.types.ts b/app/components/Views/AccountSelector/AccountSelector.types.ts index 7c61d309c3f1..8f85a2e74e5f 100644 --- a/app/components/Views/AccountSelector/AccountSelector.types.ts +++ b/app/components/Views/AccountSelector/AccountSelector.types.ts @@ -39,6 +39,10 @@ export interface AccountSelectorParams { * Optional boolean to indicate if privacy mode is disabled. */ disablePrivacyMode?: boolean; + /** + * Optional navigation screen to indicate if should navigate to add account actions sheet. + */ + navigateToAddAccountActions?: AccountSelectorScreens.AddAccountActions; } /** diff --git a/app/components/Views/AccountSelector/__snapshots__/AccountSelector.test.tsx.snap b/app/components/Views/AccountSelector/__snapshots__/AccountSelector.test.tsx.snap index 7840aba5db12..364ff24c45cb 100644 --- a/app/components/Views/AccountSelector/__snapshots__/AccountSelector.test.tsx.snap +++ b/app/components/Views/AccountSelector/__snapshots__/AccountSelector.test.tsx.snap @@ -375,7 +375,7 @@ exports[`AccountSelector should render correctly 1`] = ` "borderTopLeftRadius": 8, "borderTopRightRadius": 8, "borderWidth": 1, - "maxHeight": 1314, + "maxHeight": 1334, "overflow": "hidden", "paddingBottom": 0, "shadowColor": "#0000001A", diff --git a/app/components/Views/AddAccountActions/AddAccountActions.test.tsx b/app/components/Views/AddAccountActions/AddAccountActions.test.tsx index 444dd9b11772..09f0ddd2004e 100644 --- a/app/components/Views/AddAccountActions/AddAccountActions.test.tsx +++ b/app/components/Views/AddAccountActions/AddAccountActions.test.tsx @@ -14,6 +14,7 @@ import { MOCK_KEYRING_CONTROLLER } from '../../../selectors/keyringController/te import { Text } from 'react-native'; import Routes from '../../../constants/navigation/Routes'; import Logger from '../../../util/Logger'; +import { RootState } from '../../../reducers'; const mockedNavigate = jest.fn(); jest.mock('@react-navigation/native', () => { @@ -255,7 +256,7 @@ describe('AddAccountActions', () => { }, }, }, - }; + } as unknown as RootState; renderScreen( () => <AddAccountActions {...mockProps} />, @@ -295,7 +296,7 @@ describe('AddAccountActions', () => { }, }, }, - }; + } as unknown as RootState; renderScreen( () => <AddAccountActions {...mockProps} />, diff --git a/app/components/Views/AddAccountActions/AddAccountActions.tsx b/app/components/Views/AddAccountActions/AddAccountActions.tsx index 7d2012ffc974..f2d229d5318b 100644 --- a/app/components/Views/AddAccountActions/AddAccountActions.tsx +++ b/app/components/Views/AddAccountActions/AddAccountActions.tsx @@ -25,7 +25,7 @@ import { BitcoinWalletSnapSender } from '../../../core/SnapKeyring/BitcoinWallet import { SolanaWalletSnapSender } from '../../../core/SnapKeyring/SolanaWalletSnap'; import { useSelector } from 'react-redux'; import { - hasCreatedBtcMainnetAccount, + selectHasCreatedBtcMainnetAccount, hasCreatedBtcTestnetAccount, } from '../../../selectors/accountsController'; import { @@ -33,7 +33,7 @@ import { selectIsBitcoinTestnetSupportEnabled, selectIsSolanaSupportEnabled, } from '../../../selectors/multichain'; -import { MultichainNetworks } from '@metamask/assets-controllers'; +import { BtcScope, SolScope } from '@metamask/keyring-api'; ///: END:ONLY_INCLUDE_IF const AddAccountActions = ({ onBack }: AddAccountActionsProps) => { @@ -92,7 +92,7 @@ const AddAccountActions = ({ onBack }: AddAccountActionsProps) => { const isSolanaSupportEnabled = useSelector(selectIsSolanaSupportEnabled); const isBtcMainnetAccountAlreadyCreated = useSelector( - hasCreatedBtcMainnetAccount, + selectHasCreatedBtcMainnetAccount, ); const isBtcTestnetAccountAlreadyCreated = useSelector( hasCreatedBtcTestnetAccount, @@ -121,7 +121,6 @@ const AddAccountActions = ({ onBack }: AddAccountActionsProps) => { setIsLoading(true); // Client to create the account using the Solana Snap const client = new KeyringClient(new SolanaWalletSnapSender()); - // This will trigger the Snap account creation flow (+ account renaming) await client.createAccount({ scope, @@ -158,7 +157,7 @@ const AddAccountActions = ({ onBack }: AddAccountActionsProps) => { actionTitle={strings('account_actions.add_solana_account')} iconName={IconName.Add} onPress={async () => { - await createSolanaAccount(MultichainNetworks.Solana); + await createSolanaAccount(SolScope.Mainnet); }} disabled={isLoading} testID={ @@ -173,7 +172,7 @@ const AddAccountActions = ({ onBack }: AddAccountActionsProps) => { )} iconName={IconName.Add} onPress={async () => { - await createBitcoinAccount(MultichainNetworks.Bitcoin); + await createBitcoinAccount(BtcScope.Mainnet); }} disabled={isLoading || isBtcMainnetAccountAlreadyCreated} testID={ @@ -188,7 +187,7 @@ const AddAccountActions = ({ onBack }: AddAccountActionsProps) => { )} iconName={IconName.Add} onPress={async () => { - await createBitcoinAccount(MultichainNetworks.BitcoinTestnet); + await createBitcoinAccount(BtcScope.Testnet); }} disabled={isLoading || isBtcTestnetAccountAlreadyCreated} testID={ diff --git a/app/components/Views/AddAsset/AddAsset.tsx b/app/components/Views/AddAsset/AddAsset.tsx index 353986571a5c..efdd2050584b 100644 --- a/app/components/Views/AddAsset/AddAsset.tsx +++ b/app/components/Views/AddAsset/AddAsset.tsx @@ -15,10 +15,10 @@ import { } from '../../UI/Navbar'; import { isTokenDetectionSupportedForNetwork } from '@metamask/assets-controllers'; import { - selectChainId, + selectEvmChainId, selectProviderConfig, } from '../../../selectors/networkController'; -import { selectNetworkName } from '../../../selectors/networkInfos'; +import { selectEvmNetworkName } from '../../../selectors/networkInfos'; import { selectDisplayNftMedia } from '../../../selectors/preferencesController'; import Banner from '../../../component-library/components/Banners/Banner/Banner'; import { @@ -47,13 +47,13 @@ const AddAsset = () => { } = useStyles(styleSheet, {}); const providerConfig = useSelector(selectProviderConfig); - const chainId = useSelector(selectChainId); + const chainId = useSelector(selectEvmChainId); const displayNftMedia = useSelector(selectDisplayNftMedia); const isTokenDetectionSupported = isTokenDetectionSupportedForNetwork(chainId); - const networkName = useSelector(selectNetworkName); + const networkName = useSelector(selectEvmNetworkName); const updateNavBar = useCallback(() => { navigation.setOptions( diff --git a/app/components/Views/Asset/index.js b/app/components/Views/Asset/index.js index 6a1a8fcb401b..cd268a836415 100644 --- a/app/components/Views/Asset/index.js +++ b/app/components/Views/Asset/index.js @@ -36,6 +36,7 @@ import { sortTransactions } from '../../../util/activity'; import { safeToChecksumAddress } from '../../../util/address'; import { toLowerCaseEquals } from '../../../util/general'; import { + findBlockExplorerForNonEvmChainId, findBlockExplorerForRpc, isMainnetByChainId, isPortfolioViewEnabled, @@ -65,6 +66,7 @@ import { toChecksumHexAddress } from '@metamask/controller-utils'; import { selectSwapsTransactions } from '../../../selectors/transactionController'; import Logger from '../../../util/Logger'; import { TOKEN_CATEGORY_HASH } from '../../UI/TransactionElement/utils'; +import { isNonEvmChainId } from '../../../core/Multichain/utils'; const createStyles = (colors) => StyleSheet.create({ @@ -210,10 +212,9 @@ class Asset extends PureComponent { const colors = this.context.colors || mockTheme.colors; const isNativeToken = route.params.isNative ?? route.params.isETH; const isMainnet = isMainnetByChainId(chainId); - const blockExplorer = findBlockExplorerForRpc( - rpcUrl, - networkConfigurations, - ); + const blockExplorer = isNonEvmChainId(chainId) + ? findBlockExplorerForNonEvmChainId(chainId) + : findBlockExplorerForRpc(rpcUrl, networkConfigurations); const shouldShowMoreOptionsInNavBar = isMainnet || !isNativeToken || (isNativeToken && blockExplorer); diff --git a/app/components/Views/Asset/index.test.js b/app/components/Views/Asset/index.test.js index 23ab4e6da7bd..6958dfea52ca 100644 --- a/app/components/Views/Asset/index.test.js +++ b/app/components/Views/Asset/index.test.js @@ -76,12 +76,6 @@ const mockInitialState = { }, }; -jest.mock('../../../store', () => ({ - store: { - getState: () => mockInitialState, - }, -})); - jest.unmock('react-native/Libraries/Interaction/InteractionManager'); jest.mock('../../../core/Engine', () => { diff --git a/app/components/Views/AssetDetails/index.tsx b/app/components/Views/AssetDetails/index.tsx index 4b99abb037cd..b42196dfe6dc 100644 --- a/app/components/Views/AssetDetails/index.tsx +++ b/app/components/Views/AssetDetails/index.tsx @@ -35,11 +35,11 @@ import { useTheme } from '../../../util/theme'; import { MetaMetricsEvents } from '../../../core/Analytics'; import Routes from '../../../constants/navigation/Routes'; import { - selectChainId, selectProviderConfig, selectNetworkConfigurationByChainId, - selectNetworkConfigurations, selectIsAllNetworks, + selectEvmChainId, + selectEvmNetworkConfigurationsByChainId, } from '../../../selectors/networkController'; import { selectConversionRate, @@ -136,12 +136,15 @@ const AssetDetails = (props: Props) => { const selectedAccountAddress = useSelector( selectSelectedInternalAccountAddress, ); - const selectedChainId = useSelector(selectChainId); + const selectedChainId = useSelector(selectEvmChainId); const chainId = isPortfolioViewEnabled() ? networkId : selectedChainId; const tokens = useSelector(selectTokens); - const networkConfigurations = useSelector(selectNetworkConfigurations); + const networkConfigurations = useSelector( + selectEvmNetworkConfigurationsByChainId, + ); const isAllNetworks = useSelector(selectIsAllNetworks); + const tokenNetworkConfig = networkConfigurations[networkId]?.name; const tokensByChain = useMemo( diff --git a/app/components/Views/AssetOptions/AssetOptions.test.tsx b/app/components/Views/AssetOptions/AssetOptions.test.tsx index bad3c9d53cb0..8a59ff8325a4 100644 --- a/app/components/Views/AssetOptions/AssetOptions.test.tsx +++ b/app/components/Views/AssetOptions/AssetOptions.test.tsx @@ -8,7 +8,7 @@ import * as networks from '../../../util/networks'; import { createProviderConfig, - selectNetworkConfigurations, + selectEvmNetworkConfigurationsByChainId, } from '../../../selectors/networkController'; import { TokenI } from '../../UI/Tokens/types'; @@ -58,9 +58,9 @@ jest.mock('../../../core/Engine', () => ({ })); jest.mock('../../../selectors/networkController', () => ({ - selectChainId: jest.fn(() => '1'), + selectEvmChainId: jest.fn(() => '1'), selectProviderConfig: jest.fn(() => ({})), - selectNetworkConfigurations: jest.fn(() => ({ + selectEvmNetworkConfigurationsByChainId: jest.fn(() => ({ '0x1': { chainId: '0x1', rpcEndpoints: [{ url: 'https://mainnet.example.com' }], @@ -145,9 +145,9 @@ jest.mock('../../../constants/navigation/Routes', () => ({ })); jest.mock('../../../selectors/networkController', () => ({ - selectChainId: jest.fn(() => '1'), + selectEvmChainId: jest.fn(() => '1'), selectProviderConfig: jest.fn(() => ({})), - selectNetworkConfigurations: jest.fn(() => ({})), + selectEvmNetworkConfigurationsByChainId: jest.fn(() => ({})), createProviderConfig: jest.fn(() => ({ chainId: '1', rpcUrl: 'https://example.com', @@ -184,7 +184,7 @@ describe('AssetOptions Component', () => { beforeEach(() => { (useNavigation as jest.Mock).mockReturnValue(mockNavigation); (useSelector as jest.Mock).mockImplementation((selector) => { - if (selector.name === 'selectChainId') return '1'; + if (selector.name === 'selectEvmChainId') return '1'; if (selector.name === 'selectProviderConfig') return {}; if (selector.name === 'selectTokenList') return { '0x123': { symbol: 'ABC' } }; @@ -344,7 +344,7 @@ describe('AssetOptions Component', () => { beforeEach(() => { (useSelector as jest.Mock).mockImplementation((selector) => { - if (selector === selectNetworkConfigurations) + if (selector === selectEvmNetworkConfigurationsByChainId) return mockNetworkConfigurations; return {}; }); diff --git a/app/components/Views/AssetOptions/AssetOptions.tsx b/app/components/Views/AssetOptions/AssetOptions.tsx index 21487ef6642e..c555438eb120 100644 --- a/app/components/Views/AssetOptions/AssetOptions.tsx +++ b/app/components/Views/AssetOptions/AssetOptions.tsx @@ -15,8 +15,8 @@ import Icon, { import useBlockExplorer from '../../../components/UI/Swaps/utils/useBlockExplorer'; import { createProviderConfig, - selectChainId, - selectNetworkConfigurations, + selectEvmChainId, + selectEvmNetworkConfigurationsByChainId, selectProviderConfig, } from '../../../selectors/networkController'; import ReusableModal, { ReusableModalRef } from '../../UI/ReusableModal'; @@ -63,9 +63,11 @@ const AssetOptions = (props: Props) => { const navigation = useNavigation(); const modalRef = useRef<ReusableModalRef>(null); const providerConfig = useSelector(selectProviderConfig); - const networkConfigurations = useSelector(selectNetworkConfigurations); + const networkConfigurations = useSelector( + selectEvmNetworkConfigurationsByChainId, + ); const tokenList = useSelector(selectTokenList); - const chainId = useSelector(selectChainId); + const chainId = useSelector(selectEvmChainId); // eslint-disable-next-line @typescript-eslint/no-explicit-any const browserTabs = useSelector((state: any) => state.browser.tabs); const isDataCollectionForMarketingEnabled = useSelector( @@ -97,8 +99,8 @@ const AssetOptions = (props: Props) => { }, [networkId, networkConfigurations, providerConfig]); const explorer = useBlockExplorer( - providerConfigTokenExplorer, networkConfigurations, + providerConfigTokenExplorer, ); const { trackEvent, isEnabled, createEventBuilder } = useMetrics(); diff --git a/app/components/Views/Browser/index.js b/app/components/Views/Browser/index.js index 3e50b3f020be..703467c0a93c 100644 --- a/app/components/Views/Browser/index.js +++ b/app/components/Views/Browser/index.js @@ -57,7 +57,7 @@ export const Browser = (props) => { const browserUrl = props.route?.params?.url; const linkType = props.route?.params?.linkType; const prevSiteHostname = useRef(browserUrl); - const { accounts, ensByAccountAddress } = useAccounts(); + const { evmAccounts: accounts, ensByAccountAddress } = useAccounts(); const accountAvatarType = useSelector((state) => state.settings.useBlockieIcon ? AvatarAccountType.Blockies diff --git a/app/components/Views/BrowserTab/BrowserTab.tsx b/app/components/Views/BrowserTab/BrowserTab.tsx index 00a042002ffb..53ea0a59444a 100644 --- a/app/components/Views/BrowserTab/BrowserTab.tsx +++ b/app/components/Views/BrowserTab/BrowserTab.tsx @@ -67,7 +67,7 @@ import { MM_MIXPANEL_TOKEN, } from './constants'; import { regex } from '../../../../app/util/regex'; -import { selectChainId } from '../../../selectors/networkController'; +import { selectEvmChainId } from '../../../selectors/networkController'; import { BrowserViewSelectorsIDs } from '../../../../e2e/selectors/Browser/BrowserView.selectors'; import { useMetrics } from '../../../components/hooks/useMetrics'; import { trackDappViewedEvent } from '../../../util/metrics'; @@ -1427,7 +1427,7 @@ const mapStateToProps = (state: RootState) => ({ selectSelectedInternalAccountFormattedAddress(state)?.toLowerCase(), isIpfsGatewayEnabled: selectIsIpfsGatewayEnabled(state), wizardStep: state.wizard.step, - activeChainId: selectChainId(state), + activeChainId: selectEvmChainId(state), }); const mapDispatchToProps = (dispatch: Dispatch) => ({ diff --git a/app/components/Views/DetectedTokens/components/Token.test.tsx b/app/components/Views/DetectedTokens/components/Token.test.tsx index fed7373b440a..25b374510704 100644 --- a/app/components/Views/DetectedTokens/components/Token.test.tsx +++ b/app/components/Views/DetectedTokens/components/Token.test.tsx @@ -3,7 +3,7 @@ import { render, fireEvent } from '@testing-library/react-native'; import Token from './Token'; import { useDispatch, useSelector } from 'react-redux'; import { Token as TokenType } from '@metamask/assets-controllers'; -import { selectChainId } from '../../../../selectors/networkController'; +import { selectEvmChainId } from '../../../../selectors/networkController'; import { selectTokenMarketData } from '../../../../selectors/tokenRatesController'; import { selectTokensBalances } from '../../../../selectors/tokenBalancesController'; import ClipboardManager from '../../../../core/ClipboardManager'; @@ -41,7 +41,7 @@ describe('Token Component', () => { (useDispatch as jest.Mock).mockReturnValue(mockDispatch); (useSelector as jest.Mock).mockImplementation((selector) => { if (selector === selectSelectedInternalAccountAddress) return '0xAccount'; - if (selector === selectChainId) return '1'; + if (selector === selectEvmChainId) return '1'; if (selector === selectTokenMarketData) return {}; if (selector === selectTokensBalances) return { diff --git a/app/components/Views/DetectedTokens/components/Token.tsx b/app/components/Views/DetectedTokens/components/Token.tsx index d1d8ec4a3bac..b5fd7daaed35 100644 --- a/app/components/Views/DetectedTokens/components/Token.tsx +++ b/app/components/Views/DetectedTokens/components/Token.tsx @@ -13,7 +13,7 @@ import { fontStyles } from '../../../../styles/common'; import { useDispatch, useSelector } from 'react-redux'; import { showAlert } from '../../../../actions/alert'; import ClipboardManager from '../../../../core/ClipboardManager'; -import { selectChainId } from '../../../../selectors/networkController'; +import { selectEvmChainId } from '../../../../selectors/networkController'; import { balanceToFiat, renderFromTokenMinimalUnit, @@ -108,7 +108,7 @@ const Token = ({ token, selected, toggleSelected }: Props) => { const styles = createStyles(colors); const [expandTokenList, setExpandTokenList] = useState(false); const tokenExchangeRatesAllChains = useSelector(selectTokenMarketData); - const currentChainId = useSelector(selectChainId); + const currentChainId = useSelector(selectEvmChainId); const tokenExchangeRates = tokenExchangeRatesAllChains[token.chainId]; const tokenBalancesAllChains = useSelector(selectTokensBalances); const balanceAllChainsForAccount = diff --git a/app/components/Views/DetectedTokens/index.test.tsx b/app/components/Views/DetectedTokens/index.test.tsx index 24088b06f55c..f761beea1dec 100644 --- a/app/components/Views/DetectedTokens/index.test.tsx +++ b/app/components/Views/DetectedTokens/index.test.tsx @@ -7,8 +7,8 @@ import { selectDetectedTokens, } from '../../../selectors/tokensController'; import { - selectChainId, - selectNetworkConfigurations, + selectEvmChainId, + selectEvmNetworkConfigurationsByChainId, } from '../../../selectors/networkController'; import { selectTokensBalances } from '../../../selectors/tokenBalancesController'; import { selectSelectedInternalAccountAddress } from '../../../selectors/accountsController'; @@ -102,8 +102,8 @@ describe('DetectedTokens Component', () => { { address: '0xToken2', symbol: 'TKN2', chainId: '1' }, ]; } - if (selector === selectChainId) return '1'; - if (selector === selectNetworkConfigurations) return {}; + if (selector === selectEvmChainId) return '1'; + if (selector === selectEvmNetworkConfigurationsByChainId) return {}; return {}; }); }); @@ -128,8 +128,8 @@ describe('DetectedTokens Component', () => { (useSelector as jest.Mock).mockImplementation((selector) => { if (selector === selectDetectedTokens) return []; if (selector === selectAllDetectedTokensFlat) return []; - if (selector === selectChainId) return '1'; - if (selector === selectNetworkConfigurations) return {}; + if (selector === selectEvmChainId) return '1'; + if (selector === selectEvmNetworkConfigurationsByChainId) return {}; return {}; }); diff --git a/app/components/Views/DetectedTokens/index.tsx b/app/components/Views/DetectedTokens/index.tsx index c25212f0eaa1..260249c5d953 100644 --- a/app/components/Views/DetectedTokens/index.tsx +++ b/app/components/Views/DetectedTokens/index.tsx @@ -34,11 +34,11 @@ import { selectAllDetectedTokensFlat, } from '../../../selectors/tokensController'; import { - selectChainId, + selectEvmChainId, + selectEvmNetworkConfigurationsByChainId, selectIsAllNetworks, selectIsPopularNetwork, selectNetworkClientId, - selectNetworkConfigurations, } from '../../../selectors/networkController'; import BottomSheet, { BottomSheetRef, @@ -97,8 +97,8 @@ const DetectedTokens = () => { const allDetectedTokens = useSelector( selectAllDetectedTokensFlat, ) as TokenI[]; - const allNetworks = useSelector(selectNetworkConfigurations); - const chainId = useSelector(selectChainId); + const allNetworks = useSelector(selectEvmNetworkConfigurationsByChainId); + const chainId = useSelector(selectEvmChainId); const isPopularNetworks = useSelector(selectIsPopularNetwork); const selectedNetworkClientId = useSelector(selectNetworkClientId); const [ignoredTokens, setIgnoredTokens] = useState<IgnoredTokensByAddress>( diff --git a/app/components/Views/ImportPrivateKey/index.tsx b/app/components/Views/ImportPrivateKey/index.tsx index 38f6e614c279..45b4a3453d64 100644 --- a/app/components/Views/ImportPrivateKey/index.tsx +++ b/app/components/Views/ImportPrivateKey/index.tsx @@ -36,7 +36,6 @@ const ImportPrivateKey = () => { const mounted = useRef<boolean>(false); const { colors, themeAppearance } = useAppTheme(); const styles = createStyles(colors); - useEffect(() => { mounted.current = true; // Workaround https://github.com/facebook/react-native/issues/9958 @@ -128,18 +127,14 @@ const ImportPrivateKey = () => { > <View style={styles.content} - testID={ - ImportAccountFromPrivateKeyIDs.CONTAINER - } + testID={ImportAccountFromPrivateKeyIDs.CONTAINER} > <TouchableOpacity onPress={dismiss} style={styles.navbarRightButton}> <MaterialIcon name="close" size={15} style={styles.closeIcon} - testID={ - ImportAccountFromPrivateKeyIDs.CLOSE_BUTTON - } + testID={ImportAccountFromPrivateKeyIDs.CLOSE_BUTTON} /> </TouchableOpacity> <View style={styles.top}> @@ -170,9 +165,7 @@ const ImportPrivateKey = () => { multiline style={[styles.input, inputWidth ? { width: inputWidth } : {}]} onChangeText={setPrivateKey} - testID={ - ImportAccountFromPrivateKeyIDs.PRIVATE_KEY_INPUT_BOX - } + testID={ImportAccountFromPrivateKeyIDs.PRIVATE_KEY_INPUT_BOX} blurOnSubmit onSubmitEditing={() => goNext()} returnKeyType={'next'} @@ -195,9 +188,7 @@ const ImportPrivateKey = () => { containerStyle={styles.button} type={'confirm'} onPress={() => goNext()} - testID={ - ImportAccountFromPrivateKeyIDs.IMPORT_BUTTON - } + testID={ImportAccountFromPrivateKeyIDs.IMPORT_BUTTON} > {loading ? ( <ActivityIndicator size="small" color={colors.primary.inverse} /> diff --git a/app/components/Views/MultiRpcModal/MultiRpcModal.tsx b/app/components/Views/MultiRpcModal/MultiRpcModal.tsx index 13747cfe2f72..c4b72526226d 100644 --- a/app/components/Views/MultiRpcModal/MultiRpcModal.tsx +++ b/app/components/Views/MultiRpcModal/MultiRpcModal.tsx @@ -21,8 +21,8 @@ import Engine from '../../../core/Engine'; import { useMetrics } from '../../../components/hooks/useMetrics'; import { MetaMetricsEvents } from '../../../core/Analytics'; import { - selectChainId, - selectNetworkConfigurations, + selectEvmChainId, + selectEvmNetworkConfigurationsByChainId, } from '../../../selectors/networkController'; import { useSelector } from 'react-redux'; import Cell, { @@ -44,8 +44,10 @@ const MultiRpcModal = () => { const { styles } = useStyles(styleSheet, {}); const sheetRef = useRef<BottomSheetRef>(null); const navigation = useNavigation(); - const chainId = useSelector(selectChainId); - const networkConfigurations = useSelector(selectNetworkConfigurations); + const chainId = useSelector(selectEvmChainId); + const networkConfigurations = useSelector( + selectEvmNetworkConfigurationsByChainId, + ); const { trackEvent, createEventBuilder } = useMetrics(); const { navigate } = useNavigation(); @@ -87,7 +89,7 @@ const MultiRpcModal = () => { <View> {Object.values(networkConfigurations).map( (networkConfiguration: NetworkConfiguration, index) => - networkConfiguration.rpcEndpoints.length > 1 ? ( + networkConfiguration?.rpcEndpoints?.length > 1 ? ( <Cell key={index} variant={CellVariant.SelectWithMenu} diff --git a/app/components/Views/MultiRpcModal/__snapshots__/MultiRpcModal.test.tsx.snap b/app/components/Views/MultiRpcModal/__snapshots__/MultiRpcModal.test.tsx.snap index 4e8498d97090..844b13220130 100644 --- a/app/components/Views/MultiRpcModal/__snapshots__/MultiRpcModal.test.tsx.snap +++ b/app/components/Views/MultiRpcModal/__snapshots__/MultiRpcModal.test.tsx.snap @@ -375,7 +375,7 @@ exports[`MultiRpcModal render matches snapshot 1`] = ` "borderTopLeftRadius": 8, "borderTopRightRadius": 8, "borderWidth": 1, - "maxHeight": 1314, + "maxHeight": 1334, "overflow": "hidden", "paddingBottom": 0, "shadowColor": "#0000001A", diff --git a/app/components/Views/NFTAutoDetectionModal/NFTAutoDetectionModal.tsx b/app/components/Views/NFTAutoDetectionModal/NFTAutoDetectionModal.tsx index da55b93e8a7b..f26eacfc7eec 100644 --- a/app/components/Views/NFTAutoDetectionModal/NFTAutoDetectionModal.tsx +++ b/app/components/Views/NFTAutoDetectionModal/NFTAutoDetectionModal.tsx @@ -22,7 +22,7 @@ import { useNavigation } from '@react-navigation/native'; import Engine from '../../../core/Engine'; import { useMetrics } from '../../../components/hooks/useMetrics'; import { MetaMetricsEvents } from '../../../core/Analytics'; -import { selectChainId } from '../../../selectors/networkController'; +import { selectEvmChainId } from '../../../selectors/networkController'; import { useSelector } from 'react-redux'; import { selectDisplayNftMedia } from '../../../selectors/preferencesController'; @@ -32,7 +32,7 @@ const NFTAutoDetectionModal = () => { const { styles } = useStyles(styleSheet, {}); const sheetRef = useRef<BottomSheetRef>(null); const navigation = useNavigation(); - const chainId = useSelector(selectChainId); + const chainId = useSelector(selectEvmChainId); const displayNftMedia = useSelector(selectDisplayNftMedia); const { trackEvent, createEventBuilder } = useMetrics(); diff --git a/app/components/Views/NFTAutoDetectionModal/__snapshots__/NFTAutoDetectionModal.test.tsx.snap b/app/components/Views/NFTAutoDetectionModal/__snapshots__/NFTAutoDetectionModal.test.tsx.snap index ef0ff632f992..9474e1c2ed4c 100644 --- a/app/components/Views/NFTAutoDetectionModal/__snapshots__/NFTAutoDetectionModal.test.tsx.snap +++ b/app/components/Views/NFTAutoDetectionModal/__snapshots__/NFTAutoDetectionModal.test.tsx.snap @@ -375,7 +375,7 @@ exports[`NFT Auto detection modal render matches snapshot 1`] = ` "borderTopLeftRadius": 8, "borderTopRightRadius": 8, "borderWidth": 1, - "maxHeight": 1314, + "maxHeight": 1334, "overflow": "hidden", "paddingBottom": 0, "shadowColor": "#0000001A", diff --git a/app/components/Views/NetworkConnect/NetworkConnectMultiSelector/NetworkConnectMultiSelector.test.tsx b/app/components/Views/NetworkConnect/NetworkConnectMultiSelector/NetworkConnectMultiSelector.test.tsx new file mode 100644 index 000000000000..1eaaf1c3ae35 --- /dev/null +++ b/app/components/Views/NetworkConnect/NetworkConnectMultiSelector/NetworkConnectMultiSelector.test.tsx @@ -0,0 +1,220 @@ +import React from 'react'; +import { fireEvent } from '@testing-library/react-native'; +import { useSelector } from 'react-redux'; +import renderWithProvider from '../../../../util/test/renderWithProvider'; +import NetworkConnectMultiSelector from './NetworkConnectMultiSelector'; +import Engine from '../../../../core/Engine'; +import { NetworkConnectMultiSelectorSelectorsIDs } from '../../../../../e2e/selectors/Browser/NetworkConnectMultiSelector.selectors'; +import { ConnectedAccountsSelectorsIDs } from '../../../../../e2e/selectors/Browser/ConnectedAccountModal.selectors'; +import { + selectEvmNetworkConfigurationsByChainId, + selectEvmChainId, +} from '../../../../selectors/networkController'; + +const mockNavigate = jest.fn(); +jest.mock('@react-navigation/native', () => ({ + ...jest.requireActual('@react-navigation/native'), + useNavigation: () => ({ + navigate: mockNavigate, + }), +})); + +jest.mock('../../../../core/Engine', () => ({ + context: { + NetworkController: { + setActiveNetwork: jest.fn(), + }, + PermissionController: { + getCaveat: jest.fn(), + hasCaveat: jest.fn(), + updateCaveat: jest.fn(), + grantPermissionsIncremental: jest.fn(), + revokeAllPermissions: jest.fn(), + }, + }, +})); + +// Add mock for react-redux +jest.mock('react-redux', () => ({ + ...jest.requireActual('react-redux'), + useSelector: jest.fn(), +})); + +const mockNetworkConfigurations = { + 'network-1': { + chainId: '0x1', + name: 'Ethereum Mainnet', + rpcEndpoints: [ + { + url: 'https://mainnet.infura.io/v3', + networkClientId: 'mainnet', + }, + ], + defaultRpcEndpointIndex: 0, + }, + 'network-2': { + chainId: '0x89', + name: 'Polygon', + rpcEndpoints: [ + { + url: 'https://polygon-rpc.com', + networkClientId: 'polygon', + }, + ], + defaultRpcEndpointIndex: 0, + }, +}; + +describe('NetworkConnectMultiSelector', () => { + const defaultProps = { + isLoading: false, + onUserAction: jest.fn(), + urlWithProtocol: 'https://example.com', + hostname: 'example.com', + onBack: jest.fn(), + isRenderedAsBottomSheet: true, + initialChainId: '0x1', + }; + + beforeEach(() => { + jest.clearAllMocks(); + (useSelector as jest.Mock).mockImplementation((selector) => { + // Use switch statement for better selector matching + switch (selector) { + case selectEvmNetworkConfigurationsByChainId: + return mockNetworkConfigurations; + case selectEvmChainId: + return '0x1'; + default: + return undefined; + } + }); + }); + + it('renders correctly', () => { + const { toJSON } = renderWithProvider( + <NetworkConnectMultiSelector {...defaultProps} />, + ); + expect(toJSON()).toMatchSnapshot(); + }); + + it('initializes with permitted chains from caveat', () => { + const permittedChains = ['0x1', '0x89']; + ( + Engine.context.PermissionController.getCaveat as jest.Mock + ).mockReturnValue({ + value: permittedChains, + }); + + const { getByTestId } = renderWithProvider( + <NetworkConnectMultiSelector {...defaultProps} />, + ); + + // Verify networks are selected + const updateButton = getByTestId( + NetworkConnectMultiSelectorSelectorsIDs.UPDATE_CHAIN_PERMISSIONS, + ); + expect(updateButton.props.disabled).toBeTruthy(); + }); + + it('handles network selection correctly', () => { + const { getByText, getByTestId } = renderWithProvider( + <NetworkConnectMultiSelector {...defaultProps} />, + ); + + const network = getByText('Ethereum Mainnet'); + fireEvent.press(network); + + const updateButton = getByTestId( + NetworkConnectMultiSelectorSelectorsIDs.UPDATE_CHAIN_PERMISSIONS, + ); + expect(updateButton.props.disabled).toBeFalsy(); + }); + + it('handles update permissions when networks are selected', async () => { + ( + Engine.context.PermissionController.hasCaveat as jest.Mock + ).mockReturnValue(true); + + const { getByText, getByTestId } = renderWithProvider( + <NetworkConnectMultiSelector {...defaultProps} />, + ); + + // Select a network + const network = getByText('Ethereum Mainnet'); + fireEvent.press(network); + + // Press update button + const updateButton = getByTestId( + NetworkConnectMultiSelectorSelectorsIDs.UPDATE_CHAIN_PERMISSIONS, + ); + fireEvent.press(updateButton); + + expect(Engine.context.PermissionController.updateCaveat).toHaveBeenCalled(); + expect(defaultProps.onUserAction).toHaveBeenCalled(); + }); + + it('shows disconnect button when no networks are selected', () => { + const { getByTestId, getAllByTestId } = renderWithProvider( + <NetworkConnectMultiSelector {...defaultProps} />, + ); + + // First select all networks + const [selectAllCheckbox] = getAllByTestId( + ConnectedAccountsSelectorsIDs.SELECT_ALL_NETWORKS_BUTTON, + ); + fireEvent.press(selectAllCheckbox); + + // Then deselect all networks + fireEvent.press(selectAllCheckbox); + + // Now check for disconnect button + const disconnectButton = getByTestId( + ConnectedAccountsSelectorsIDs.DISCONNECT_NETWORKS_BUTTON, + ); + expect(disconnectButton).toBeTruthy(); + + fireEvent.press(disconnectButton); + expect(mockNavigate).toHaveBeenCalled(); + }); + + it('handles onNetworksSelected callback when provided', () => { + const onNetworksSelected = jest.fn(); + const { getByText, getByTestId } = renderWithProvider( + <NetworkConnectMultiSelector + {...defaultProps} + onNetworksSelected={onNetworksSelected} + />, + ); + + // Select a network + const network = getByText('Ethereum Mainnet'); + fireEvent.press(network); + + // Press update button + const updateButton = getByTestId( + NetworkConnectMultiSelectorSelectorsIDs.UPDATE_CHAIN_PERMISSIONS, + ); + fireEvent.press(updateButton); + + expect(onNetworksSelected).toHaveBeenCalled(); + }); + + it('handles errors when getting permitted chains', () => { + ( + Engine.context.PermissionController.getCaveat as jest.Mock + ).mockImplementation(() => { + throw new Error('Test error'); + }); + + const { getByTestId } = renderWithProvider( + <NetworkConnectMultiSelector {...defaultProps} />, + ); + + // Should still render without crashing + const updateButton = getByTestId( + NetworkConnectMultiSelectorSelectorsIDs.UPDATE_CHAIN_PERMISSIONS, + ); + expect(updateButton.props.disabled).toBeTruthy(); + }); +}); diff --git a/app/components/Views/NetworkConnect/NetworkConnectMultiSelector/NetworkConnectMultiSelector.tsx b/app/components/Views/NetworkConnect/NetworkConnectMultiSelector/NetworkConnectMultiSelector.tsx index e0f0de634c06..a6c8e30573f3 100644 --- a/app/components/Views/NetworkConnect/NetworkConnectMultiSelector/NetworkConnectMultiSelector.tsx +++ b/app/components/Views/NetworkConnect/NetworkConnectMultiSelector/NetworkConnectMultiSelector.tsx @@ -27,8 +27,8 @@ import Routes from '../../../../constants/navigation/Routes'; import Checkbox from '../../../../component-library/components/Checkbox'; import NetworkSelectorList from '../../../UI/NetworkSelectorList/NetworkSelectorList'; import { - selectChainId, - selectNetworkConfigurations, + selectEvmChainId, + selectEvmNetworkConfigurationsByChainId, } from '../../../../selectors/networkController'; import Engine from '../../../../core/Engine'; import { PermissionKeys } from '../../../../core/Permissions/specifications'; @@ -54,8 +54,10 @@ const NetworkConnectMultiSelector = ({ const { navigate } = useNavigation(); const [selectedChainIds, setSelectedChainIds] = useState<string[]>([]); const [originalChainIds, setOriginalChainIds] = useState<string[]>([]); - const networkConfigurations = useSelector(selectNetworkConfigurations); - const currentChainId = useSelector(selectChainId); + const networkConfigurations = useSelector( + selectEvmNetworkConfigurationsByChainId, + ); + const currentChainId = useSelector(selectEvmChainId); useEffect(() => { if (propSelectedChainIds && !isInitializedWithPermittedChains) { @@ -116,7 +118,7 @@ const NetworkConnectMultiSelector = ({ const { networkClientId } = rpcEndpoints[defaultRpcEndpointIndex]; // Switch to the network using networkClientId - await Engine.context.NetworkController.setActiveNetwork( + await Engine.context.MultichainNetworkController.setActiveNetwork( networkClientId, ); } @@ -167,7 +169,7 @@ const NetworkConnectMultiSelector = ({ currentChainId, networkConfigurations, ]); - + // TODO: [SOLANA] When we support non evm networks, refactor this const networks = Object.entries(networkConfigurations).map( ([key, network]: [string, NetworkConfiguration]) => ({ id: key, diff --git a/app/components/Views/NetworkConnect/NetworkConnectMultiSelector/__snapshots__/NetworkConnectMultiSelector.test.tsx.snap b/app/components/Views/NetworkConnect/NetworkConnectMultiSelector/__snapshots__/NetworkConnectMultiSelector.test.tsx.snap new file mode 100644 index 000000000000..dcd998ec2277 --- /dev/null +++ b/app/components/Views/NetworkConnect/NetworkConnectMultiSelector/__snapshots__/NetworkConnectMultiSelector.test.tsx.snap @@ -0,0 +1,572 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`NetworkConnectMultiSelector renders correctly 1`] = ` +<RCTSafeAreaView> + <View + style={ + { + "height": "100%", + } + } + > + <View + style={ + { + "alignItems": "center", + "backgroundColor": "#ffffff", + "flexDirection": "row", + "height": 32, + "justifyContent": "space-between", + "margin": 16, + } + } + > + <View + style={ + { + "flex": 1, + } + } + > + <TouchableOpacity + accessible={true} + activeOpacity={1} + disabled={false} + onPress={[MockFunction]} + onPressIn={[Function]} + onPressOut={[Function]} + style={ + { + "alignItems": "center", + "borderRadius": 8, + "height": 24, + "justifyContent": "center", + "opacity": 1, + "width": 24, + } + } + testID="sheet-header-back-button" + > + <SvgMock + color="#141618" + height={16} + name="ArrowLeft" + style={ + { + "height": 16, + "width": 16, + } + } + width={16} + /> + </TouchableOpacity> + </View> + <Text + accessibilityRole="text" + style={ + { + "color": "#141618", + "fontFamily": "EuclidCircularB-Bold", + "fontSize": 18, + "fontWeight": "700", + "letterSpacing": 0, + "lineHeight": 24, + } + } + > + Edit networks + </Text> + <View + style={ + { + "alignItems": "flex-end", + "flex": 1, + } + } + /> + </View> + <View + style={ + { + "paddingBottom": 4, + "paddingHorizontal": 22, + } + } + > + <View> + <TouchableOpacity + accessibilityLabel="select_all" + disabled={false} + onPress={[Function]} + style={ + { + "alignItems": "center", + "flexDirection": "row", + "height": 24, + "marginLeft": 0, + "marginVertical": 12, + "opacity": 1, + } + } + testID="select_all" + > + <View + accessibilityRole="checkbox" + style={ + { + "alignItems": "center", + "backgroundColor": "#0376c9", + "borderColor": "#0376c9", + "borderRadius": 4, + "borderWidth": 2, + "height": 20, + "justifyContent": "center", + "width": 20, + } + } + > + <SvgMock + accessibilityLabel="select_all" + color="#ffffff" + height={20} + name="MinusBold" + onPress={[Function]} + style={ + { + "height": 20, + "width": 20, + } + } + testID="select_all" + width={20} + /> + </View> + <View + style={ + { + "marginLeft": 12, + } + } + > + <Text + accessibilityRole="text" + style={ + { + "color": "#141618", + "fontFamily": "EuclidCircularB-Regular", + "fontSize": 14, + "fontWeight": "400", + "letterSpacing": 0, + "lineHeight": 22, + } + } + > + Select all + </Text> + </View> + </TouchableOpacity> + </View> + </View> + <RCTScrollView + collapsable={false} + data={ + [ + { + "id": "network-1", + "imageSource": 1, + "isSelected": false, + "name": "Ethereum Mainnet", + "rpcUrl": "https://mainnet.infura.io/v3", + }, + { + "id": "network-2", + "imageSource": 1, + "isSelected": false, + "name": "Polygon", + "rpcUrl": "https://polygon-rpc.com", + }, + ] + } + getItem={[Function]} + getItemCount={[Function]} + initialNumToRender={999} + keyExtractor={[Function]} + onContentSizeChange={[Function]} + onGestureHandlerEvent={[Function]} + onGestureHandlerStateChange={[Function]} + onLayout={[Function]} + onMomentumScrollBegin={[Function]} + onMomentumScrollEnd={[Function]} + onScroll={[Function]} + onScrollBeginDrag={[Function]} + onScrollEndDrag={[Function]} + removeClippedSubviews={false} + renderItem={[Function]} + renderScrollComponent={[Function]} + scrollEventThrottle={50} + stickyHeaderIndices={[]} + style={ + { + "marginHorizontal": 6, + } + } + viewabilityConfigCallbackPairs={[]} + > + <View> + <View + onFocusCapture={[Function]} + onLayout={[Function]} + style={null} + > + <View + testID="Ethereum Mainnet-not-selected" + > + <TouchableOpacity + onPress={[Function]} + style={ + { + "backgroundColor": "#ffffff", + "borderRadius": 4, + "opacity": 1, + "padding": 16, + } + } + testID="cellmultiselect" + > + <View + accessibilityRole="none" + accessible={true} + style={ + { + "padding": 0, + } + } + > + <View + style={ + { + "alignItems": "center", + "flexDirection": "row", + } + } + > + <TouchableOpacity + disabled={false} + onPressIn={[Function]} + style={ + { + "alignItems": "center", + "flexDirection": "row", + "height": 24, + "marginRight": -8, + "opacity": 1, + } + } + > + <View + accessibilityRole="checkbox" + style={ + { + "alignItems": "center", + "backgroundColor": "#ffffff", + "borderColor": "#141618", + "borderRadius": 4, + "borderWidth": 2, + "height": 20, + "justifyContent": "center", + "width": 20, + } + } + /> + </TouchableOpacity> + <View + accessible={false} + style={ + { + "width": 16, + } + } + testID="listitem-gap" + /> + <View + style={ + { + "flex": 1, + "flexDirection": "row", + } + } + > + <View + style={ + { + "alignItems": "center", + "backgroundColor": "#ffffff", + "borderRadius": 12, + "height": 24, + "justifyContent": "center", + "marginRight": 16, + "overflow": "hidden", + "width": 24, + } + } + testID="cellbase-avatar" + > + <Image + onError={[Function]} + resizeMode="contain" + source={1} + style={ + { + "height": 24, + "width": 24, + } + } + testID="network-avatar-image" + /> + </View> + <View + style={ + { + "alignItems": "flex-start", + "flex": 1, + } + } + > + <Text + accessibilityRole="text" + numberOfLines={1} + style={ + { + "color": "#141618", + "fontFamily": "EuclidCircularB-Regular", + "fontSize": 16, + "fontWeight": "400", + "letterSpacing": 0, + "lineHeight": 24, + } + } + testID="cellbase-avatar-title" + > + Ethereum Mainnet + </Text> + </View> + </View> + </View> + </View> + </TouchableOpacity> + </View> + </View> + <View + onFocusCapture={[Function]} + onLayout={[Function]} + style={null} + > + <View + testID="Polygon-not-selected" + > + <TouchableOpacity + onPress={[Function]} + style={ + { + "backgroundColor": "#ffffff", + "borderRadius": 4, + "opacity": 1, + "padding": 16, + } + } + testID="cellmultiselect" + > + <View + accessibilityRole="none" + accessible={true} + style={ + { + "padding": 0, + } + } + > + <View + style={ + { + "alignItems": "center", + "flexDirection": "row", + } + } + > + <TouchableOpacity + disabled={false} + onPressIn={[Function]} + style={ + { + "alignItems": "center", + "flexDirection": "row", + "height": 24, + "marginRight": -8, + "opacity": 1, + } + } + > + <View + accessibilityRole="checkbox" + style={ + { + "alignItems": "center", + "backgroundColor": "#ffffff", + "borderColor": "#141618", + "borderRadius": 4, + "borderWidth": 2, + "height": 20, + "justifyContent": "center", + "width": 20, + } + } + /> + </TouchableOpacity> + <View + accessible={false} + style={ + { + "width": 16, + } + } + testID="listitem-gap" + /> + <View + style={ + { + "flex": 1, + "flexDirection": "row", + } + } + > + <View + style={ + { + "alignItems": "center", + "backgroundColor": "#ffffff", + "borderRadius": 12, + "height": 24, + "justifyContent": "center", + "marginRight": 16, + "overflow": "hidden", + "width": 24, + } + } + testID="cellbase-avatar" + > + <Image + onError={[Function]} + resizeMode="contain" + source={1} + style={ + { + "height": 24, + "width": 24, + } + } + testID="network-avatar-image" + /> + </View> + <View + style={ + { + "alignItems": "flex-start", + "flex": 1, + } + } + > + <Text + accessibilityRole="text" + numberOfLines={1} + style={ + { + "color": "#141618", + "fontFamily": "EuclidCircularB-Regular", + "fontSize": 16, + "fontWeight": "400", + "letterSpacing": 0, + "lineHeight": 24, + } + } + testID="cellbase-avatar-title" + > + Polygon + </Text> + </View> + </View> + </View> + </View> + </TouchableOpacity> + </View> + </View> + </View> + </RCTScrollView> + <View + style={ + { + "paddingBottom": 4, + "paddingHorizontal": 22, + } + } + > + <View + style={ + { + "marginBottom": 0, + "marginTop": 0, + } + } + > + <View + style={ + { + "flexDirection": "row", + } + } + > + <TouchableOpacity + accessibilityRole="button" + accessible={true} + activeOpacity={1} + disabled={true} + onPress={[Function]} + onPressIn={[Function]} + onPressOut={[Function]} + style={ + { + "alignItems": "center", + "alignSelf": "flex-start", + "backgroundColor": "#0376c9", + "borderRadius": 24, + "flex": 1, + "flexDirection": "row", + "height": 48, + "justifyContent": "center", + "opacity": 0.5, + "paddingHorizontal": 16, + } + } + testID="multiconnect-connect-network-button" + > + <Text + accessibilityRole="text" + style={ + { + "color": "#ffffff", + "fontFamily": "EuclidCircularB-Medium", + "fontSize": 14, + "fontWeight": "500", + "letterSpacing": 0, + "lineHeight": 22, + } + } + > + Update + </Text> + </TouchableOpacity> + </View> + </View> + </View> + </View> +</RCTSafeAreaView> +`; diff --git a/app/components/Views/NetworkSelector/NetworkSelector.styles.ts b/app/components/Views/NetworkSelector/NetworkSelector.styles.ts index 9aece45fafb6..cea601e1e724 100644 --- a/app/components/Views/NetworkSelector/NetworkSelector.styles.ts +++ b/app/components/Views/NetworkSelector/NetworkSelector.styles.ts @@ -89,6 +89,10 @@ const createStyles = (colors: Colors) => networkCell: { alignItems: 'center', }, + networkCellDisabled: { + alignItems: 'center', + opacity: 0.5, + }, titleContainer: { margin: 16, }, diff --git a/app/components/Views/NetworkSelector/NetworkSelector.test.tsx b/app/components/Views/NetworkSelector/NetworkSelector.test.tsx index 58210fdc2141..011d81f2af66 100644 --- a/app/components/Views/NetworkSelector/NetworkSelector.test.tsx +++ b/app/components/Views/NetworkSelector/NetworkSelector.test.tsx @@ -76,6 +76,9 @@ jest.mock('../../../core/Engine', () => ({ ], }), }, + MultichainNetworkController: { + setActiveNetwork: jest.fn(), + }, PreferencesController: { setShowTestNetworks: jest.fn(), setTokenNetworkFilter: jest.fn(), @@ -97,6 +100,9 @@ jest.mock('../../../core/Engine', () => ({ })); const initialState = { + user: { + userLoggedIn: true, + }, navigation: { currentBottomNavRoute: 'Wallet' }, settings: { primaryCurrency: 'usd', @@ -322,7 +328,9 @@ describe('Network Selector', () => { fireEvent.press(polygonCell); - expect(mockEngine.context.NetworkController.setActiveNetwork).toBeCalled(); + expect( + mockEngine.context.MultichainNetworkController.setActiveNetwork, + ).toBeCalled(); }); it('toggles the test networks switch correctly', () => { @@ -340,6 +348,9 @@ describe('Network Selector', () => { it('toggle test network is disabled and is on when a testnet is selected', () => { (isNetworkUiRedesignEnabled as jest.Mock).mockImplementation(() => false); const { getByTestId } = renderComponent({ + user: { + userLoggedIn: true, + }, navigation: { currentBottomNavRoute: 'Wallet' }, settings: { primaryCurrency: 'usd', @@ -400,12 +411,16 @@ describe('Network Selector', () => { const gnosisCell = getByText('Gnosis Chain'); fireEvent.press(gnosisCell); - - expect(mockEngine.context.NetworkController.setActiveNetwork).toBeCalled(); + expect( + mockEngine.context.MultichainNetworkController.setActiveNetwork, + ).toBeCalled(); }); it('changes to test network when another network cell is pressed', async () => { const { getByText } = renderComponent({ + user: { + userLoggedIn: true, + }, navigation: { currentBottomNavRoute: 'Wallet' }, settings: { primaryCurrency: 'usd', @@ -469,7 +484,9 @@ describe('Network Selector', () => { fireEvent.press(sepoliaCell); - expect(mockEngine.context.NetworkController.setActiveNetwork).toBeCalled(); + expect( + mockEngine.context.MultichainNetworkController.setActiveNetwork, + ).toBeCalled(); }); it('renders correctly with no network configurations', async () => { @@ -626,4 +643,45 @@ describe('Network Selector', () => { expect(mainnetRpcUrl).toBeTruthy(); }); }); + + describe('network switching with connected dapp', () => { + beforeEach(() => { + jest.spyOn(networks, 'isMultichainV1Enabled').mockReturnValue(true); + // Reset the mock before each test + jest.clearAllMocks(); + }); + + it('should not call setNetworkClientIdForDomain when dapp is not connected', async () => { + // Mock non-connected dapp state + const nonConnectedDappMock = { + networkName: 'Test Network', + networkImageSource: '', + domainNetworkClientId: 'test-network-id', + chainId: CHAIN_IDS.MAINNET, + rpcUrl: 'https://test.network', + domainIsConnectedDapp: false, + origin: 'test-origin', + }; + + jest + .spyOn(selectedNetworkControllerFcts, 'useNetworkInfo') + .mockImplementation(() => nonConnectedDappMock); + + const { getByText } = renderComponent(initialState); + + const mainnetCell = getByText('Ethereum Mainnet'); + fireEvent.press(mainnetCell); + + // Wait a bit to ensure async operations complete + await waitFor(() => { + expect( + mockEngine.context.SelectedNetworkController + .setNetworkClientIdForDomain, + ).not.toHaveBeenCalled(); + expect( + mockEngine.context.MultichainNetworkController.setActiveNetwork, + ).toHaveBeenCalled(); + }); + }); + }); }); diff --git a/app/components/Views/NetworkSelector/NetworkSelector.tsx b/app/components/Views/NetworkSelector/NetworkSelector.tsx index b8d5315b47f8..7705281ba401 100644 --- a/app/components/Views/NetworkSelector/NetworkSelector.tsx +++ b/app/components/Views/NetworkSelector/NetworkSelector.tsx @@ -27,8 +27,8 @@ import BottomSheet, { import { IconName } from '../../../component-library/components/Icons/Icon'; import { useSelector } from 'react-redux'; import { + selectEvmNetworkConfigurationsByChainId, selectIsAllNetworks, - selectNetworkConfigurations, } from '../../../selectors/networkController'; import { selectShowTestNetworks, @@ -83,7 +83,7 @@ import { ButtonProps } from '../../../component-library/components/Buttons/Butto import BottomSheetFooter from '../../../component-library/components/BottomSheets/BottomSheetFooter/BottomSheetFooter'; import { ExtendedNetwork } from '../Settings/NetworksSettings/NetworkSettings/CustomNetworkView/CustomNetwork.types'; import { isNetworkUiRedesignEnabled } from '../../../util/networks/isNetworkUiRedesignEnabled'; -import { Hex } from '@metamask/utils'; +import { CaipChainId, Hex } from '@metamask/utils'; import hideProtocolFromUrl from '../../../util/hideProtocolFromUrl'; import { CHAIN_IDS } from '@metamask/transaction-controller'; import { useNetworkInfo } from '../../../selectors/selectedNetworkController'; @@ -100,6 +100,19 @@ import { store } from '../../../store'; import ReusableModal, { ReusableModalRef } from '../../UI/ReusableModal'; import { useSafeAreaInsets } from 'react-native-safe-area-context'; import Device from '../../../util/device'; +import { + selectIsEvmNetworkSelected, + ///: BEGIN:ONLY_INCLUDE_IF(keyring-snaps) + selectNonEvmNetworkConfigurationsByChainId, + ///: END:ONLY_INCLUDE_IF +} from '../../../selectors/multichainNetworkController'; +import { isNonEvmChainId } from '../../../core/Multichain/utils'; +///: BEGIN:ONLY_INCLUDE_IF(keyring-snaps) +import { SolScope } from '@metamask/keyring-api'; +import { AccountSelectorScreens } from '../AccountSelector/AccountSelector.types'; +import { selectHasCreatedSolanaMainnetAccount } from '../../../selectors/accountsController'; +///: END:ONLY_INCLUDE_IF +import { MultichainNetworkConfiguration } from '@metamask/multichain-network-controller'; import Logger from '../../../util/Logger'; interface infuraNetwork { @@ -115,6 +128,7 @@ interface ShowConfirmDeleteModalState { } interface NetworkSelectorRouteParams { + evmChainId?: Hex; hostInfo?: { metadata?: { origin?: string; @@ -128,24 +142,40 @@ const NetworkSelector = () => { const [showWarningModal, setShowWarningModal] = useState(false); const [searchString, setSearchString] = useState(''); const { navigate } = useNavigation(); + const theme = useTheme(); const { trackEvent, createEventBuilder } = useMetrics(); const { colors } = theme; const styles = createStyles(colors); - // const sheetRef = useRef<BottomSheetRef>(null); const sheetRef = useRef<ReusableModalRef>(null); const showTestNetworks = useSelector(selectShowTestNetworks); const isAllNetwork = useSelector(selectIsAllNetworks); const tokenNetworkFilter = useSelector(selectTokenNetworkFilter); + ///: BEGIN:ONLY_INCLUDE_IF(keyring-snaps) + const isSolanaAccountAlreadyCreated = useSelector( + selectHasCreatedSolanaMainnetAccount, + ); + ///: END:ONLY_INCLUDE_IF const safeAreaInsets = useSafeAreaInsets(); - const networkConfigurations = useSelector(selectNetworkConfigurations); + const networkConfigurations = useSelector( + selectEvmNetworkConfigurationsByChainId, + ); + + ///: BEGIN:ONLY_INCLUDE_IF(keyring-snaps) + const nonEvmNetworkConfigurations = useSelector( + selectNonEvmNetworkConfigurationsByChainId, + ); + ///: END:ONLY_INCLUDE_IF + + const isEvmSelected = useSelector(selectIsEvmNetworkSelected); const route = useRoute<RouteProp<Record<string, NetworkSelectorRouteParams>, string>>(); // origin is defined if network selector is opened from a dapp const origin = route.params?.hostInfo?.metadata?.origin || ''; + const browserEvmChainId = route.params?.evmChainId || null; const parentSpan = trace({ name: TraceName.NetworkSwitch, tags: getTraceTags(store.getState()), @@ -222,12 +252,8 @@ const NetworkSelector = () => { const deleteModalSheetRef = useRef<BottomSheetRef>(null); const onSetRpcTarget = async (networkConfiguration: NetworkConfiguration) => { - const { NetworkController, SelectedNetworkController } = Engine.context; - trace({ - name: TraceName.SwitchCustomNetwork, - parentContext: parentSpan, - op: TraceOperation.SwitchCustomNetwork, - }); + const { MultichainNetworkController, SelectedNetworkController } = + Engine.context; if (networkConfiguration) { const { name: nickname, @@ -245,16 +271,22 @@ const NetworkSelector = () => { networkConfigurationId, ); } else { + trace({ + name: TraceName.SwitchCustomNetwork, + parentContext: parentSpan, + op: TraceOperation.SwitchCustomNetwork, + }); const { networkClientId } = rpcEndpoints[defaultRpcEndpointIndex]; try { - await NetworkController.setActiveNetwork(networkClientId); + await MultichainNetworkController.setActiveNetwork(networkClientId); } catch (error) { Logger.error(new Error(`Error in setActiveNetwork: ${error}`)); } } setTokenNetworkFilter(chainId); - if (!(domainIsConnectedDapp && isMultichainV1Enabled())) sheetRef.current?.dismissModal(); + if (!(domainIsConnectedDapp && isMultichainV1Enabled())) + sheetRef.current?.dismissModal(); endTrace({ name: TraceName.SwitchCustomNetwork }); endTrace({ name: TraceName.NetworkSwitch }); trackEvent( @@ -268,12 +300,20 @@ const NetworkSelector = () => { ); } }; - - const showRpcSelector = Object.values(networkConfigurations).some( - (networkConfiguration) => - networkConfiguration.rpcEndpoints && - networkConfiguration.rpcEndpoints.length > 1, - ); + /** + * This is used to check if the network has multiple RPC endpoints + * We need to check if the network is non-EVM because we don't support multiple RPC endpoints for EVM networks and the rpc is handled by the snap + */ + const showRpcSelector = Object.values(networkConfigurations) + .filter( + (network: NetworkConfiguration | MultichainNetworkConfiguration) => + !isNonEvmChainId(network.chainId), + ) + .some( + (networkConfiguration) => + networkConfiguration.rpcEndpoints && + networkConfiguration.rpcEndpoints.length > 1, + ); const openRpcModal = useCallback(({ chainId, networkName }) => { setShowMultiRpcSelectModal({ @@ -358,7 +398,7 @@ const NetworkSelector = () => { op: TraceOperation.SwitchBuiltInNetwork, }); const { - NetworkController, + MultichainNetworkController, AccountTrackerController, SelectedNetworkController, } = Engine.context; @@ -374,7 +414,7 @@ const NetworkSelector = () => { ].networkClientId ?? type; setTokenNetworkFilter(networkConfiguration.chainId); - await NetworkController.setActiveNetwork(clientId); + await MultichainNetworkController.setActiveNetwork(clientId); closeRpcModal(); AccountTrackerController.refresh(); @@ -426,6 +466,14 @@ const NetworkSelector = () => { return !networkIdenfier.includes(searchString); }; + const isNetworkSelected = (chainId: Hex | CaipChainId) => { + if (browserEvmChainId) { + return chainId === browserEvmChainId; + } + + return !isEvmSelected ? false : chainId === selectedChainId; + }; + const renderMainnet = () => { const { name: mainnetName, chainId } = Networks.mainnet; const rpcUrl = @@ -453,7 +501,7 @@ const NetworkSelector = () => { imageSource: images.ETHEREUM, size: AvatarSize.Sm, }} - isSelected={chainId === selectedChainId} + isSelected={isNetworkSelected(chainId)} onPress={() => onNetworkChange(MAINNET)} style={styles.networkCell} buttonIcon={IconName.MoreVertical} @@ -485,7 +533,7 @@ const NetworkSelector = () => { imageSource: images.ETHEREUM, size: avatarSize, }} - isSelected={chainId === selectedChainId} + isSelected={isNetworkSelected(chainId)} onPress={() => onNetworkChange(MAINNET)} style={styles.networkCell} /> @@ -515,7 +563,7 @@ const NetworkSelector = () => { imageSource: images['LINEA-MAINNET'], size: AvatarSize.Sm, }} - isSelected={chainId === selectedChainId} + isSelected={isNetworkSelected(chainId)} onPress={() => onNetworkChange(LINEA_MAINNET)} style={styles.networkCell} buttonIcon={IconName.MoreVertical} @@ -552,7 +600,7 @@ const NetworkSelector = () => { imageSource: images['LINEA-MAINNET'], size: avatarSize, }} - isSelected={chainId === selectedChainId} + isSelected={isNetworkSelected(chainId)} onPress={() => onNetworkChange(LINEA_MAINNET)} /> ); @@ -560,6 +608,7 @@ const NetworkSelector = () => { const renderRpcNetworks = () => Object.values(networkConfigurations).map((networkConfiguration) => { + if (isNonEvmChainId(networkConfiguration.chainId)) return null; const { name: nickname, rpcEndpoints, @@ -598,7 +647,9 @@ const NetworkSelector = () => { imageSource: image, size: AvatarSize.Sm, }} - isSelected={Boolean(chainId === selectedChainId)} + isSelected={ + !isEvmSelected ? false : Boolean(chainId === selectedChainId) + } onPress={() => onSetRpcTarget(networkConfiguration)} style={styles.networkCell} buttonIcon={IconName.MoreVertical} @@ -637,7 +688,9 @@ const NetworkSelector = () => { imageSource: image, size: avatarSize, }} - isSelected={Boolean(chainId === selectedChainId)} + isSelected={ + !isEvmSelected ? false : Boolean(chainId === selectedChainId) + } onPress={() => onSetRpcTarget(networkConfiguration)} style={styles.networkCell} > @@ -685,7 +738,7 @@ const NetworkSelector = () => { imageSource, size: AvatarSize.Sm, }} - isSelected={chainId === selectedChainId} + isSelected={isNetworkSelected(chainId)} onPress={() => onNetworkChange(networkType)} style={styles.networkCell} buttonIcon={IconName.MoreVertical} @@ -718,7 +771,7 @@ const NetworkSelector = () => { imageSource, size: avatarSize, }} - isSelected={chainId === selectedChainId} + isSelected={isNetworkSelected(chainId)} onPress={() => onNetworkChange(networkType)} style={styles.networkCell} /> @@ -734,7 +787,45 @@ const NetworkSelector = () => { }); }); }; + ///: BEGIN:ONLY_INCLUDE_IF(keyring-snaps) + const onNonEvmNetworkChange = async (chainId: CaipChainId) => { + if (!isSolanaAccountAlreadyCreated && chainId === SolScope.Mainnet) { + navigate(Routes.SHEET.ACCOUNT_SELECTOR, { + navigateToAddAccountActions: AccountSelectorScreens.AddAccountActions, + }); + return; + } + + await Engine.context.MultichainNetworkController.setActiveNetwork(chainId); + sheetRef.current?.dismissModal(); + }; + ///: END:ONLY_INCLUDE_IF + ///: BEGIN:ONLY_INCLUDE_IF(keyring-snaps) + const renderNonEvmNetworks = () => + Object.values(nonEvmNetworkConfigurations) + // TODO: - [SOLANA] - Remove this filter once we want to show non evm like BTC + .filter((network) => network.chainId === SolScope.Mainnet) + .map((network) => ( + <Cell + key={network.chainId} + variant={CellVariant.Select} + title={network.name} + avatarProps={{ + variant: AvatarVariant.Network, + name: 'Solana', + imageSource: images.SOLANA, + size: avatarSize, + }} + isSelected={!isEvmSelected && !browserEvmChainId} + onPress={() => onNonEvmNetworkChange(SolScope.Mainnet)} + style={ + browserEvmChainId ? styles.networkCellDisabled : styles.networkCell + } + disabled={!!browserEvmChainId} + /> + )); + ///: END:ONLY_INCLUDE_IF const renderTestNetworksSwitch = () => ( <View style={styles.switchContainer}> <Text variant={TextVariant.BodyLGMedium} color={TextColor.Alternative}> @@ -894,6 +985,11 @@ const NetworkSelector = () => { {renderMainnet()} {renderLineaMainnet()} {renderRpcNetworks()} + { + ///: BEGIN:ONLY_INCLUDE_IF(keyring-snaps) + renderNonEvmNetworks() + ///: END:ONLY_INCLUDE_IF + } {isNetworkUiRedesignEnabled() && searchString.length === 0 && renderPopularNetworksTitle()} diff --git a/app/components/Views/NetworkSelector/RpcSelectionModal/RpcSelectionModal.test.tsx b/app/components/Views/NetworkSelector/RpcSelectionModal/RpcSelectionModal.test.tsx index e1a82a590597..247b4fc552c4 100644 --- a/app/components/Views/NetworkSelector/RpcSelectionModal/RpcSelectionModal.test.tsx +++ b/app/components/Views/NetworkSelector/RpcSelectionModal/RpcSelectionModal.test.tsx @@ -138,6 +138,9 @@ jest.mock('../../../../core/Engine/Engine', () => ({ ], }), }, + MultichainNetworkController: { + setActiveNetwork: jest.fn(), + }, PreferencesController: { setTokenNetworkFilter: jest.fn(), }, diff --git a/app/components/Views/NetworkSelector/RpcSelectionModal/RpcSelectionModal.tsx b/app/components/Views/NetworkSelector/RpcSelectionModal/RpcSelectionModal.tsx index fd124a627602..c9e35d7583ff 100644 --- a/app/components/Views/NetworkSelector/RpcSelectionModal/RpcSelectionModal.tsx +++ b/app/components/Views/NetworkSelector/RpcSelectionModal/RpcSelectionModal.tsx @@ -61,7 +61,7 @@ const RpcSelectionModal: FC<RpcSelectionModalProps> = ({ const onRpcSelect = useCallback( async (clientId: string, chainId: `0x${string}`) => { - const { NetworkController } = Engine.context; + const { NetworkController, MultichainNetworkController } = Engine.context; const existingNetwork = networkConfigurations[chainId]; const indexOfRpc = existingNetwork.rpcEndpoints.findIndex( @@ -84,7 +84,7 @@ const RpcSelectionModal: FC<RpcSelectionModalProps> = ({ }); // Set the active network - NetworkController.setActiveNetwork(clientId); + MultichainNetworkController.setActiveNetwork(clientId); // Redirect to wallet page navigate(Routes.WALLET.HOME, { screen: Routes.WALLET.TAB_STACK_FLOW, diff --git a/app/components/Views/NetworkSelector/RpcSelectionModal/__snapshots__/RpcSelectionModal.test.tsx.snap b/app/components/Views/NetworkSelector/RpcSelectionModal/__snapshots__/RpcSelectionModal.test.tsx.snap index cd6340df2258..01b8aea5cdba 100644 --- a/app/components/Views/NetworkSelector/RpcSelectionModal/__snapshots__/RpcSelectionModal.test.tsx.snap +++ b/app/components/Views/NetworkSelector/RpcSelectionModal/__snapshots__/RpcSelectionModal.test.tsx.snap @@ -117,11 +117,14 @@ exports[`RpcSelectionModal should render correctly when visible 1`] = ` </View> <View style={ - { - "backgroundColor": "#ffffff", - "flexDirection": "row", - "padding": 16, - } + [ + { + "backgroundColor": "#ffffff", + "flexDirection": "row", + "padding": 16, + }, + false, + ] } testID="header" > diff --git a/app/components/Views/NetworkSelector/__snapshots__/NetworkSelector.test.tsx.snap b/app/components/Views/NetworkSelector/__snapshots__/NetworkSelector.test.tsx.snap index 45738c7e58b0..0ee198b53e55 100644 --- a/app/components/Views/NetworkSelector/__snapshots__/NetworkSelector.test.tsx.snap +++ b/app/components/Views/NetworkSelector/__snapshots__/NetworkSelector.test.tsx.snap @@ -1104,6 +1104,103 @@ exports[`Network Selector renders correctly 1`] = ` </View> </View> </TouchableOpacity> + <TouchableOpacity + disabled={false} + onPress={[Function]} + style={ + { + "alignItems": "center", + "backgroundColor": "#ffffff", + "borderRadius": 4, + "opacity": 1, + "position": "relative", + } + } + testID="cellselect" + > + <View + accessibilityRole="none" + accessible={true} + style={ + { + "padding": 16, + } + } + > + <View + style={ + { + "alignItems": "center", + "flexDirection": "row", + } + } + > + <View + style={ + { + "alignItems": "center", + "flexDirection": "row", + } + } + > + <View + style={ + { + "alignItems": "center", + "backgroundColor": "#ffffff", + "borderRadius": 16, + "height": 32, + "justifyContent": "center", + "marginRight": 16, + "overflow": "hidden", + "width": 32, + } + } + testID="cellbase-avatar" + > + <Image + onError={[Function]} + resizeMode="contain" + source={1} + style={ + { + "height": 32, + "width": 32, + } + } + testID="network-avatar-image" + /> + </View> + <View + style={ + { + "alignItems": "flex-start", + "flex": 1, + } + } + > + <Text + accessibilityRole="text" + numberOfLines={1} + style={ + { + "color": "#141618", + "fontFamily": "EuclidCircularB-Regular", + "fontSize": 16, + "fontWeight": "400", + "letterSpacing": 0, + "lineHeight": 24, + } + } + testID="cellbase-avatar-title" + > + Solana Mainnet + </Text> + </View> + </View> + </View> + </View> + </TouchableOpacity> <View style={ { @@ -3077,6 +3174,103 @@ exports[`Network Selector renders correctly when network UI redesign is enabled </TouchableOpacity> </View> </View> + <TouchableOpacity + disabled={false} + onPress={[Function]} + style={ + { + "alignItems": "center", + "backgroundColor": "#ffffff", + "borderRadius": 4, + "opacity": 1, + "position": "relative", + } + } + testID="cellselect" + > + <View + accessibilityRole="none" + accessible={true} + style={ + { + "padding": 16, + } + } + > + <View + style={ + { + "alignItems": "center", + "flexDirection": "row", + } + } + > + <View + style={ + { + "alignItems": "center", + "flexDirection": "row", + } + } + > + <View + style={ + { + "alignItems": "center", + "backgroundColor": "#ffffff", + "borderRadius": 12, + "height": 24, + "justifyContent": "center", + "marginRight": 16, + "overflow": "hidden", + "width": 24, + } + } + testID="cellbase-avatar" + > + <Image + onError={[Function]} + resizeMode="contain" + source={1} + style={ + { + "height": 24, + "width": 24, + } + } + testID="network-avatar-image" + /> + </View> + <View + style={ + { + "alignItems": "flex-start", + "flex": 1, + } + } + > + <Text + accessibilityRole="text" + numberOfLines={1} + style={ + { + "color": "#141618", + "fontFamily": "EuclidCircularB-Regular", + "fontSize": 16, + "fontWeight": "400", + "letterSpacing": 0, + "lineHeight": 24, + } + } + testID="cellbase-avatar-title" + > + Solana Mainnet + </Text> + </View> + </View> + </View> + </View> + </TouchableOpacity> <View style={ { diff --git a/app/components/Views/Notifications/Details/Footers/BlockExplorerFooter.tsx b/app/components/Views/Notifications/Details/Footers/BlockExplorerFooter.tsx index 0381600e92bb..80241c35b411 100644 --- a/app/components/Views/Notifications/Details/Footers/BlockExplorerFooter.tsx +++ b/app/components/Views/Notifications/Details/Footers/BlockExplorerFooter.tsx @@ -6,7 +6,7 @@ import { strings } from '../../../../../../locales/i18n'; import Button, { ButtonVariants, } from '../../../../../component-library/components/Buttons/Button'; -import { selectNetworkConfigurations } from '../../../../../selectors/networkController'; +import { selectEvmNetworkConfigurationsByChainId } from '../../../../../selectors/networkController'; import { getBlockExplorerByChainId } from '../../../../../util/notifications'; import { ModalFooterBlockExplorer } from '../../../../../util/notifications/notification-states/types/NotificationModalDetails'; import useStyles from '../useStyles'; @@ -23,8 +23,11 @@ export default function BlockExplorerFooter(props: BlockExplorerFooterProps) { const { styles } = useStyles(); const { notification } = props; const { trackEvent, createEventBuilder } = useMetrics(); + const defaultBlockExplorer = getBlockExplorerByChainId(props.chainId); - const networkConfigurations = useSelector(selectNetworkConfigurations); + const networkConfigurations = useSelector( + selectEvmNetworkConfigurationsByChainId, + ); const networkBlockExplorer = useMemo(() => { const hexChainId = toHex(props.chainId); return Object.values(networkConfigurations).find( diff --git a/app/components/Views/Notifications/Details/index.test.tsx b/app/components/Views/Notifications/Details/index.test.tsx index 520951c32de8..73ad2d9f5a5a 100644 --- a/app/components/Views/Notifications/Details/index.test.tsx +++ b/app/components/Views/Notifications/Details/index.test.tsx @@ -9,6 +9,13 @@ import { backgroundState } from '../../../../util/test/initial-root-state'; import MOCK_NOTIFICATIONS from '../../../../components/UI/Notification/__mocks__/mock_notifications'; // eslint-disable-next-line import/no-namespace import * as NotificationStatesModule from '../../../../util/notifications/notification-states'; +// eslint-disable-next-line import/no-namespace +import * as UseNotificationsModule from '../../../../util/notifications/hooks/useNotifications'; + +jest.mock('../../../../util/notifications/constants/config', () => ({ + ...jest.requireActual('../../../../util/notifications/constants/config'), + isNotificationsFeatureEnabled: () => true, +})); const mockInitialState = { settings: { @@ -48,6 +55,10 @@ describe('NotificationsDetails', () => { navigate: jest.fn(), setOptions: jest.fn(), } as unknown as NavigationProp<ParamListBase>; + + jest + .spyOn(UseNotificationsModule, 'useMarkNotificationAsRead') + .mockReturnValue({ markNotificationAsRead: jest.fn(), loading: false }); }); it('renders correctly', () => { diff --git a/app/components/Views/Notifications/Details/index.tsx b/app/components/Views/Notifications/Details/index.tsx index e7763d83b6af..3c3f73cd35ea 100644 --- a/app/components/Views/Notifications/Details/index.tsx +++ b/app/components/Views/Notifications/Details/index.tsx @@ -1,7 +1,10 @@ import React, { useCallback, useEffect, useState } from 'react'; import { TouchableOpacity, View } from 'react-native'; import { ScrollView } from 'react-native-gesture-handler'; -import { INotification } from '../../../../util/notifications'; +import { + INotification, + isNotificationsFeatureEnabled, +} from '../../../../util/notifications'; import { useTheme } from '../../../../util/theme'; import { NavigationProp, ParamListBase } from '@react-navigation/native'; @@ -117,4 +120,12 @@ const NotificationsDetails = ({ route, navigation }: Props) => { ); }; -export default NotificationsDetails; +const NotificationDetailsContainer = (props: Props) => { + if (!isNotificationsFeatureEnabled()) { + return null; + } + + return <NotificationsDetails {...props} />; +}; + +export default NotificationDetailsContainer; diff --git a/app/components/Views/Notifications/OptIn/OptIn.hooks.test.tsx b/app/components/Views/Notifications/OptIn/OptIn.hooks.test.tsx new file mode 100644 index 000000000000..ed6269c79b68 --- /dev/null +++ b/app/components/Views/Notifications/OptIn/OptIn.hooks.test.tsx @@ -0,0 +1,239 @@ +import { renderHook, act } from '@testing-library/react-hooks'; +import { NavigationProp, ParamListBase } from '@react-navigation/native'; +import { + useHandleOptInCancel, + useHandleOptInClick, + useOptimisticNavigationEffect, +} from './OptIn.hooks'; +import Routes from '../../../../constants/navigation/Routes'; +import { renderHookWithProvider } from '../../../../util/test/renderWithProvider'; +import { IUseMetricsHook, MetaMetricsEvents } from '../../../hooks/useMetrics'; +// eslint-disable-next-line import/no-namespace +import * as Selectors from '../../../../selectors/identity'; + +describe('useOptimisticNavigationEffect', () => { + jest.useFakeTimers(); + + const arrange = (isCreatingNotifications: boolean) => { + const mockNavigate = jest.fn(); + const mockNavigation = { + navigate: mockNavigate, + } as unknown as NavigationProp<ParamListBase>; + + const hook = renderHook( + (props: { isCreatingNotifications: boolean }) => + useOptimisticNavigationEffect({ + isCreatingNotifications: props.isCreatingNotifications, + navigation: mockNavigation, + }), + { initialProps: { isCreatingNotifications } }, + ); + + return { hook, mockNavigate, mockNavigation }; + }; + + it('sets optimisticLoading to true when isCreatingNotifications is true', () => { + const { hook } = arrange(true); + expect(hook.result.current).toBe(true); + }); + + it('sets optimisticLoading to false when isCreatingNotifications is false', () => { + const { hook } = arrange(false); + expect(hook.result.current).toBe(false); + }); + + it('navigates to notification list page after timeout', () => { + const { hook, mockNavigate } = arrange(true); + + // Assert - We are optimistically loading + expect(hook.result.current).toBe(true); + + act(() => jest.advanceTimersByTime(5000)); + + // Assert - We have stopped optimistically loading + expect(mockNavigate).toHaveBeenCalledWith(Routes.NOTIFICATIONS.VIEW); + expect(hook.result.current).toBe(false); + }); + + it('clears timeout when isCreatingNotifications changes to false', () => { + const { hook, mockNavigate } = arrange(true); + + act(() => + hook.rerender({ + isCreatingNotifications: false, + }), + ); + + act(() => jest.advanceTimersByTime(5000)); + + expect(mockNavigate).not.toHaveBeenCalled(); + expect(hook.result.current).toBe(false); + }); + + it('clears timeout on unmount', () => { + const { hook, mockNavigate } = arrange(true); + + act(() => hook.unmount()); + + act(() => jest.advanceTimersByTime(5000)); + + expect(mockNavigate).not.toHaveBeenCalled(); + }); +}); + +describe('useHandleOptInClick', () => { + const arrange = (props = { basicFunctionalityEnabled: true }) => { + // Mock Navigation + const mockNavigate = jest.fn(); + const mockNavigation = { + navigate: mockNavigate, + } as unknown as NavigationProp<ParamListBase>; + + // Mock Metrics + const mockTrackEvent = jest.fn(); + const mockCreateEventBuilder = jest.fn().mockReturnValue({ + addProperties: jest.fn().mockReturnThis(), + build: jest.fn().mockReturnValue({}), + }); + const mockMetrics = { + trackEvent: mockTrackEvent, + createEventBuilder: mockCreateEventBuilder, + } as unknown as IUseMetricsHook; + + const mockEnableNotifications = jest.fn().mockImplementation(jest.fn()); + + const mockSelectIsProfileSyncingEnabled = jest + .spyOn(Selectors, 'selectIsProfileSyncingEnabled') + .mockReturnValue(true); + + const hook = renderHookWithProvider( + () => + useHandleOptInClick({ + navigation: mockNavigation, + metrics: mockMetrics, + enableNotifications: mockEnableNotifications, + }), + { + state: { + settings: { + basicFunctionalityEnabled: props.basicFunctionalityEnabled, + }, + }, + }, + ); + + return { + hook, + mockNavigate, + mockTrackEvent, + mockCreateEventBuilder, + mockEnableNotifications, + mockSelectIsProfileSyncingEnabled, + }; + }; + + it('navigates to Basic Functionality if not enabled', async () => { + const { hook, mockNavigate } = arrange({ + basicFunctionalityEnabled: false, + }); + + await hook.result.current(); + + expect(mockNavigate).toHaveBeenCalledWith(Routes.MODAL.ROOT_MODAL_FLOW, { + screen: Routes.SHEET.BASIC_FUNCTIONALITY, + params: { + caller: Routes.NOTIFICATIONS.OPT_IN, + }, + }); + }); + + it('enables notifications and tracks event if Basic Functionality is enabled', async () => { + const { + hook, + mockTrackEvent, + mockCreateEventBuilder, + mockEnableNotifications, + } = arrange({ basicFunctionalityEnabled: true }); + + await hook.result.current(); + + expect(mockEnableNotifications).toHaveBeenCalled(); + expect(mockTrackEvent).toHaveBeenCalledWith( + mockCreateEventBuilder(MetaMetricsEvents.NOTIFICATIONS_ACTIVATED) + .addProperties({ + action_type: 'activated', + is_profile_syncing_enabled: true, + }) + .build(), + ); + }); +}); + +describe('useHandleOptInCancel', () => { + const arrange = (props = { isCreatingNotifications: true }) => { + // Mock Navigation + const mockNavigate = jest.fn(); + const mockNavigation = { + navigate: mockNavigate, + } as unknown as NavigationProp<ParamListBase>; + + // Mock Metrics + const mockTrackEvent = jest.fn(); + const mockCreateEventBuilder = jest.fn().mockReturnValue({ + addProperties: jest.fn().mockReturnThis(), + build: jest.fn().mockReturnValue({}), + }); + const mockMetrics = { + trackEvent: mockTrackEvent, + createEventBuilder: mockCreateEventBuilder, + } as unknown as IUseMetricsHook; + + const mockSelectIsProfileSyncingEnabled = jest + .spyOn(Selectors, 'selectIsProfileSyncingEnabled') + .mockReturnValue(true); + + const hook = renderHookWithProvider(() => + useHandleOptInCancel({ + navigation: mockNavigation, + metrics: mockMetrics, + isCreatingNotifications: props.isCreatingNotifications, + }), + ); + + return { + hook, + mockNavigate, + mockTrackEvent, + mockCreateEventBuilder, + mockSelectIsProfileSyncingEnabled, + }; + }; + + it('tracks event and navigates to wallet view if not creating notifications', () => { + const { hook, mockNavigate, mockTrackEvent, mockCreateEventBuilder } = + arrange({ isCreatingNotifications: false }); + + hook.result.current(); + + expect(mockTrackEvent).toHaveBeenCalledWith( + mockCreateEventBuilder(MetaMetricsEvents.NOTIFICATIONS_ACTIVATED) + .addProperties({ + action_type: 'dismissed', + is_profile_syncing_enabled: true, + }) + .build(), + ); + expect(mockNavigate).toHaveBeenCalledWith(Routes.WALLET_VIEW); + }); + + it('only navigates to wallet view if creating notifications', () => { + const { hook, mockNavigate, mockTrackEvent } = arrange({ + isCreatingNotifications: true, + }); + + hook.result.current(); + + expect(mockTrackEvent).not.toHaveBeenCalled(); + expect(mockNavigate).toHaveBeenCalledWith(Routes.WALLET_VIEW); + }); +}); diff --git a/app/components/Views/Notifications/OptIn/OptIn.hooks.tsx b/app/components/Views/Notifications/OptIn/OptIn.hooks.tsx new file mode 100644 index 000000000000..1a76cef65805 --- /dev/null +++ b/app/components/Views/Notifications/OptIn/OptIn.hooks.tsx @@ -0,0 +1,129 @@ +import { useCallback, useEffect, useState } from 'react'; +import { NavigationProp, ParamListBase } from '@react-navigation/native'; +import { useSelector } from 'react-redux'; +import { RootState } from '../../../../reducers'; +import Routes from '../../../../constants/navigation/Routes'; +import { IUseMetricsHook, MetaMetricsEvents } from '../../../hooks/useMetrics'; +import { selectIsProfileSyncingEnabled } from '../../../../selectors/identity'; + +/** + * Creating wallet notifications can take time, so we will use optimistic loader + * to navigate to the notification list page if it takes too long + * @param props - props to determine if effect should run + */ +export function useOptimisticNavigationEffect(props: { + isCreatingNotifications: boolean; + navigation: NavigationProp<ParamListBase>; +}) { + const { isCreatingNotifications, navigation } = props; + const [optimisticLoading, setOptimisticLoading] = useState(false); + + useEffect(() => { + let timeOut: NodeJS.Timeout | undefined; + + if (isCreatingNotifications) { + setOptimisticLoading(true); + timeOut = setTimeout(() => { + setOptimisticLoading(false); + navigation.navigate(Routes.NOTIFICATIONS.VIEW); + }, 5000); + } else { + setOptimisticLoading(false); + if (timeOut) { + clearTimeout(timeOut); + } + } + + // Cleanup function to clear the timeout if the component unmounts or if isCreatingNotifications changes + return () => { + if (timeOut) { + clearTimeout(timeOut); + } + }; + }, [isCreatingNotifications, navigation]); + + return optimisticLoading; +} + +export function useHandleOptInClick(props: { + navigation: NavigationProp<ParamListBase>; + metrics: IUseMetricsHook; + enableNotifications: () => Promise<void>; +}) { + const { navigation, enableNotifications, metrics } = props; + const { trackEvent, createEventBuilder } = metrics; + + const basicFunctionalityEnabled = useSelector( + (state: RootState) => state.settings.basicFunctionalityEnabled, + ); + const isProfileSyncingEnabled = useSelector(selectIsProfileSyncingEnabled); + + const handleOptInClick = useCallback(async () => { + // Navigate to Basic Functionality if not enabled + if (!basicFunctionalityEnabled) { + navigation.navigate(Routes.MODAL.ROOT_MODAL_FLOW, { + screen: Routes.SHEET.BASIC_FUNCTIONALITY, + params: { + caller: Routes.NOTIFICATIONS.OPT_IN, + }, + }); + return; + } + + // Enable Notifications (+ push notifications) + await enableNotifications(); + + navigation.navigate(Routes.NOTIFICATIONS.VIEW); + + trackEvent( + createEventBuilder(MetaMetricsEvents.NOTIFICATIONS_ACTIVATED) + .addProperties({ + action_type: 'activated', + is_profile_syncing_enabled: isProfileSyncingEnabled, + }) + .build(), + ); + }, [ + basicFunctionalityEnabled, + enableNotifications, + navigation, + isProfileSyncingEnabled, + trackEvent, + createEventBuilder, + ]); + + return handleOptInClick; +} + +export function useHandleOptInCancel(props: { + navigation: NavigationProp<ParamListBase>; + metrics: IUseMetricsHook; + isCreatingNotifications: boolean; +}) { + const { navigation, metrics, isCreatingNotifications } = props; + const { trackEvent, createEventBuilder } = metrics; + + const isProfileSyncingEnabled = useSelector(selectIsProfileSyncingEnabled); + + const handleOptInCancel = useCallback(() => { + if (!isCreatingNotifications) { + trackEvent( + createEventBuilder(MetaMetricsEvents.NOTIFICATIONS_ACTIVATED) + .addProperties({ + action_type: 'dismissed', + is_profile_syncing_enabled: isProfileSyncingEnabled, + }) + .build(), + ); + } + navigation.navigate(Routes.WALLET_VIEW); + }, [ + createEventBuilder, + isCreatingNotifications, + isProfileSyncingEnabled, + navigation, + trackEvent, + ]); + + return handleOptInCancel; +} diff --git a/app/components/Views/Notifications/OptIn/__snapshots__/index.test.tsx.snap b/app/components/Views/Notifications/OptIn/__snapshots__/index.test.tsx.snap index f19eea8c3ec7..95e291748ed4 100644 --- a/app/components/Views/Notifications/OptIn/__snapshots__/index.test.tsx.snap +++ b/app/components/Views/Notifications/OptIn/__snapshots__/index.test.tsx.snap @@ -148,7 +148,7 @@ exports[`OptIn should render correctly 1`] = ` accessibilityRole="button" accessible={true} activeOpacity={1} - onPress={[Function]} + onPress={[MockFunction]} onPressIn={[Function]} onPressOut={[Function]} style={ @@ -188,7 +188,7 @@ exports[`OptIn should render correctly 1`] = ` accessibilityRole="button" accessible={true} activeOpacity={1} - onPress={[Function]} + onPress={[MockFunction]} onPressIn={[Function]} onPressOut={[Function]} style={ diff --git a/app/components/Views/Notifications/OptIn/index.test.tsx b/app/components/Views/Notifications/OptIn/index.test.tsx index b643daaa7fb1..ff7d0f498611 100644 --- a/app/components/Views/Notifications/OptIn/index.test.tsx +++ b/app/components/Views/Notifications/OptIn/index.test.tsx @@ -1,4 +1,5 @@ import React from 'react'; +import { fireEvent, screen, act } from '@testing-library/react-native'; import OptIn from '.'; import { RootState } from '../../../../reducers'; import { backgroundState } from '../../../../util/test/initial-root-state'; @@ -6,11 +7,13 @@ import renderWithProvider, { DeepPartial, } from '../../../../util/test/renderWithProvider'; import { strings } from '../../../../../locales/i18n'; +// eslint-disable-next-line import/no-namespace +import * as OptInHooksModule from './OptIn.hooks'; +// eslint-disable-next-line import/no-namespace +import * as UseNotificationsModule from '../../../../util/notifications/hooks/useNotifications'; const mockedDispatch = jest.fn(); - - const mockInitialState: DeepPartial<RootState> = { settings: {}, engine: { @@ -21,12 +24,14 @@ const mockInitialState: DeepPartial<RootState> = { }, }, }, - }; +}; - jest.mock('react-redux', () => ({ - ...jest.requireActual('react-redux'), - useSelector: jest.fn().mockImplementation((selector) => selector(mockInitialState)), - })); +jest.mock('react-redux', () => ({ + ...jest.requireActual('react-redux'), + useSelector: jest + .fn() + .mockImplementation((selector) => selector(mockInitialState)), +})); jest.mock('@react-navigation/native', () => { const actualNav = jest.requireActual('@react-navigation/native'); @@ -39,82 +44,99 @@ jest.mock('@react-navigation/native', () => { }; }); -jest.mock('../../../../actions/notification/helpers', () => ({ - enableNotificationServices: jest.fn(), -})); - -jest.mock('../../../../components/hooks/useMetrics', () => ({ - useMetrics: () => ({ - trackEvent: jest.fn(), - }), -})); - -jest.mock('../../../../util/notifications/hooks/useNotifications', () => ({ - useEnableNotifications: () => ({ - enableNotifications: jest.fn(), - }), -})); - jest.mock('react-native', () => ({ Linking: { openURL: jest.fn(), }, })); -jest.mock('../../../../selectors/notifications', () => ({ - selectIsMetamaskNotificationsEnabled: jest.fn(), -})); - -jest.mock('../../../../core/Analytics', () => ({ - MetaMetricsEvents: { - NOTIFICATIONS_ACTIVATED: 'notifications_activated', - }, -})); - jest.mock('../../../../util/theme', () => ({ useTheme: jest.fn(), })); -jest.mock('../../../../selectors/notifications', () => ({ - selectIsProfileSyncingEnabled: jest.fn(), -})); +const arrangeMockOptInHooks = () => { + const mockCancel = jest.fn(); + const mockUseHandleOptInCancel = jest + .spyOn(OptInHooksModule, 'useHandleOptInCancel') + .mockReturnValue(mockCancel); -describe('OptIn', () => { + const mockClick = jest.fn(); + const mockUseHadleOptInClick = jest + .spyOn(OptInHooksModule, 'useHandleOptInClick') + .mockReturnValue(mockClick); + + const mockUseOptimisticNavigationEffect = jest + .spyOn(OptInHooksModule, 'useOptimisticNavigationEffect') + .mockReturnValue(false); + + const mockUseEnableNotificationReturnVal = { + data: false, + enableNotifications: jest.fn(), + error: null, + isEnablingNotifications: false, + isEnablingPushNotifications: false, + loading: false, + }; + const mockUseEnableNotifications = jest + .spyOn(UseNotificationsModule, 'useEnableNotifications') + .mockReturnValue(mockUseEnableNotificationReturnVal); + return { + mockCancel, + mockUseHandleOptInCancel, + mockClick, + mockUseHadleOptInClick, + mockUseOptimisticNavigationEffect, + mockUseEnableNotifications, + mockUseEnableNotificationReturnVal, + }; +}; + +describe('OptIn', () => { beforeEach(() => { jest.resetAllMocks(); }); it('should render correctly', () => { + arrangeMockOptInHooks(); const { toJSON } = renderWithProvider(<OptIn />); expect(toJSON()).toMatchSnapshot(); }); it('calls enableNotifications when the button is pressed', async () => { - const { getByText } = renderWithProvider( - <OptIn /> - ); + const mocks = arrangeMockOptInHooks(); + const { getByText } = renderWithProvider(<OptIn />); const button = getByText(strings('notifications.activation_card.cta')); expect(button).toBeDefined(); + act(() => fireEvent.press(button)); + + expect(mocks.mockClick).toHaveBeenCalled(); }); it('calls navigate when the cancel button is pressed', async () => { - const { getByText } = renderWithProvider( - <OptIn /> - ); + const mocks = arrangeMockOptInHooks(); + const { getByText } = renderWithProvider(<OptIn />); const button = getByText(strings('notifications.activation_card.cancel')); expect(button).toBeDefined(); + act(() => fireEvent.press(button)); + + expect(mocks.mockCancel).toHaveBeenCalled(); }); - it('calls trackEvent when the button is pressed', async () => { - const { getByText } = renderWithProvider( - <OptIn /> + it('shows loading modal while enabling notifications', async () => { + const mocks = arrangeMockOptInHooks(); + mocks.mockUseEnableNotifications.mockReturnValue({ + ...mocks.mockUseEnableNotificationReturnVal, + isEnablingNotifications: true, + loading: true, + }); + renderWithProvider(<OptIn />); + + const loader = screen.getByText( + strings('app_settings.enabling_notifications'), ); - - const button = getByText(strings('notifications.activation_card.cta')); - expect(button).toBeDefined(); + expect(loader).toBeDefined(); }); }); - diff --git a/app/components/Views/Notifications/OptIn/index.tsx b/app/components/Views/Notifications/OptIn/index.tsx index f3c1a380bb50..24820dccdd6b 100644 --- a/app/components/Views/Notifications/OptIn/index.tsx +++ b/app/components/Views/Notifications/OptIn/index.tsx @@ -1,9 +1,8 @@ -import React, { Fragment, useCallback, useEffect } from 'react'; +import React, { Fragment } from 'react'; import { Image, View, Linking } from 'react-native'; import { useNavigation } from '@react-navigation/native'; import { useMetrics } from '../../../../components/hooks/useMetrics'; -import { MetaMetricsEvents } from '../../../../core/Analytics'; import Button, { ButtonVariants, } from '../../../../component-library/components/Buttons/Button'; @@ -15,122 +14,38 @@ import Text, { import { useTheme } from '../../../../util/theme'; import EnableNotificationsCardPlaceholder from '../../../../images/enableNotificationsCard.png'; import { createStyles } from './styles'; -import Routes from '../../../../constants/navigation/Routes'; -import { useSelector } from 'react-redux'; -import NotificationsService from '../../../../util/notifications/services/NotificationService'; import AppConstants from '../../../../core/AppConstants'; -import { RootState } from '../../../../reducers'; import { useEnableNotifications } from '../../../../util/notifications/hooks/useNotifications'; import SwitchLoadingModal from '../../../../components/UI/Notification/SwitchLoadingModal'; -import { selectIsMetamaskNotificationsEnabled } from '../../../../selectors/notifications'; -import { selectIsProfileSyncingEnabled } from '../../../../selectors/identity'; +import { useHandleOptInCancel, useHandleOptInClick } from './OptIn.hooks'; const OptIn = () => { - const { trackEvent, createEventBuilder } = useMetrics(); + const metrics = useMetrics(); const theme = useTheme(); const styles = createStyles(theme); const navigation = useNavigation(); - const basicFunctionalityEnabled = useSelector( - (state: RootState) => state.settings.basicFunctionalityEnabled, - ); - - const isDeviceNotificationEnabled = useSelector( - (state: RootState) => state.settings.deviceNotificationEnabled, - ); - const isNotificationEnabled = useSelector( - selectIsMetamaskNotificationsEnabled, - ); - - const { enableNotifications } = useEnableNotifications(); - const isProfileSyncingEnabled = useSelector(selectIsProfileSyncingEnabled); - - const [optimisticLoading, setOptimisticLoading] = React.useState(false); - const [isUpdating, setIsUpdating] = React.useState(false); + const { enableNotifications, isEnablingNotifications } = + useEnableNotifications({ + nudgeEnablePush: true, + }); - const [enableManuallyNotification, setEnableManuallyNotification] = - React.useState(false); - const navigateToMainWallet = () => { - if (!isUpdating) { - trackEvent( - createEventBuilder(MetaMetricsEvents.NOTIFICATIONS_ACTIVATED) - .addProperties({ - action_type: 'dismissed', - is_profile_syncing_enabled: isProfileSyncingEnabled, - }) - .build(), - ); - } - navigation.navigate(Routes.WALLET_VIEW); - }; - - const toggleNotificationsEnabled = useCallback(async () => { - setEnableManuallyNotification(true); - if (!basicFunctionalityEnabled) { - navigation.navigate(Routes.MODAL.ROOT_MODAL_FLOW, { - screen: Routes.SHEET.BASIC_FUNCTIONALITY, - params: { - caller: Routes.NOTIFICATIONS.OPT_IN, - }, - }); - } else { - const { permission } = await NotificationsService.getAllPermissions(); + const handleOptInCancel = useHandleOptInCancel({ + navigation, + metrics, + isCreatingNotifications: isEnablingNotifications, + }); - if (permission !== 'authorized') { - return; - } - /** - * Although this is an async function, we are dispatching an action (firing & forget) - * to emulate optimistic UI. - * Setting a standard timeout to emulate loading state - * for 5 seconds. This only happens during the first time the user - * optIn to notifications. - */ - enableNotifications(); - setOptimisticLoading(true); - setTimeout(() => { - setOptimisticLoading(false); - navigation.navigate(Routes.NOTIFICATIONS.VIEW); - }, 5000); - } - setIsUpdating(true); - trackEvent( - createEventBuilder(MetaMetricsEvents.NOTIFICATIONS_ACTIVATED) - .addProperties({ - action_type: 'activated', - is_profile_syncing_enabled: isProfileSyncingEnabled, - }) - .build(), - ); - }, [ - basicFunctionalityEnabled, - enableNotifications, + const handleOptInClick = useHandleOptInClick({ navigation, - isProfileSyncingEnabled, - trackEvent, - setIsUpdating, - createEventBuilder, - ]); + metrics, + enableNotifications, + }); const goToLearnMore = () => { Linking.openURL(AppConstants.URLS.PROFILE_SYNC); }; - useEffect(() => { - if ( - isDeviceNotificationEnabled && - !isNotificationEnabled && - enableManuallyNotification - ) { - toggleNotificationsEnabled(); - } - }, [ - enableManuallyNotification, - isDeviceNotificationEnabled, - isNotificationEnabled, - toggleNotificationsEnabled, - ]); - return ( <Fragment> <View style={styles.wrapper}> @@ -181,19 +96,19 @@ const OptIn = () => { <Button variant={ButtonVariants.Secondary} label={strings('notifications.activation_card.cancel')} - onPress={navigateToMainWallet} + onPress={handleOptInCancel} style={styles.ctaBtn} /> <Button variant={ButtonVariants.Primary} label={strings('notifications.activation_card.cta')} - onPress={toggleNotificationsEnabled} + onPress={handleOptInClick} style={styles.ctaBtn} /> </View> </View> <SwitchLoadingModal - loading={optimisticLoading} + loading={isEnablingNotifications} loadingText={strings('app_settings.enabling_notifications')} /> </Fragment> diff --git a/app/components/Views/OnboardingSuccess/OnboardingAssetsSettings/__snapshots__/index.test.tsx.snap b/app/components/Views/OnboardingSuccess/OnboardingAssetsSettings/__snapshots__/index.test.tsx.snap index 06c69757b353..25045fcd2c79 100644 --- a/app/components/Views/OnboardingSuccess/OnboardingAssetsSettings/__snapshots__/index.test.tsx.snap +++ b/app/components/Views/OnboardingSuccess/OnboardingAssetsSettings/__snapshots__/index.test.tsx.snap @@ -685,6 +685,125 @@ exports[`OnboardingAssetSettings should render correctly 1`] = ` </View> </View> </TouchableOpacity> + <TouchableOpacity + avatarProps={ + { + "imageSource": 1, + "name": "Solana Mainnet", + "variant": "Network", + } + } + style={ + { + "backgroundColor": "#ffffff", + "borderColor": "#848c96", + "borderRadius": 4, + "borderWidth": 0, + "padding": 16, + } + } + testID="celldisplay" + title="Solana Mainnet" + > + <View + style={ + { + "flexDirection": "row", + } + } + > + <View + style={ + { + "alignItems": "center", + "backgroundColor": "#ffffff", + "borderRadius": 16, + "height": 32, + "justifyContent": "center", + "marginRight": 16, + "overflow": "hidden", + "width": 32, + } + } + testID="cellbase-avatar" + > + <Image + onError={[Function]} + resizeMode="contain" + source={1} + style={ + { + "height": 32, + "width": 32, + } + } + testID="network-avatar-image" + /> + </View> + <View + style={ + { + "alignItems": "flex-start", + "flex": 1, + } + } + > + <Text + accessibilityRole="text" + numberOfLines={1} + style={ + { + "color": "#141618", + "fontFamily": "EuclidCircularB-Regular", + "fontSize": 16, + "fontWeight": "400", + "letterSpacing": 0, + "lineHeight": 24, + } + } + testID="cellbase-avatar-title" + > + Solana Mainnet + </Text> + </View> + <View + style={ + { + "marginLeft": 16, + } + } + > + <RCTSwitch + accessibilityRole="switch" + onChange={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} + onTintColor="#0376c9" + style={ + [ + { + "height": 31, + "width": 51, + }, + [ + { + "alignSelf": "flex-start", + }, + { + "backgroundColor": "#BBC0C566", + "borderRadius": 16, + }, + ], + ] + } + testID="solana-incoming-transactions-toggle" + thumbTintColor="#ffffff" + tintColor="#BBC0C566" + value={false} + /> + </View> + </View> + </TouchableOpacity> </View> </View> <View diff --git a/app/components/Views/SDK/SDKSessionModal/SDKSessionModal.tsx b/app/components/Views/SDK/SDKSessionModal/SDKSessionModal.tsx index fb3711ca235e..b4f063522464 100644 --- a/app/components/Views/SDK/SDKSessionModal/SDKSessionModal.tsx +++ b/app/components/Views/SDK/SDKSessionModal/SDKSessionModal.tsx @@ -96,7 +96,7 @@ const SDKSessionModal = ({ route }: SDKSEssionMoodalProps) => { const [permittedAccountsAddresses, setPermittedAccountsAddresses] = useState< string[] >([]); - const { accounts } = useAccounts({ + const { evmAccounts: accounts } = useAccounts({ isLoading: false, }); diff --git a/app/components/Views/Settings/Contacts/AmbiguousAddressSheet/__snapshots__/AmbiguousAddressSheet.test.tsx.snap b/app/components/Views/Settings/Contacts/AmbiguousAddressSheet/__snapshots__/AmbiguousAddressSheet.test.tsx.snap index 880a7ab43d50..f4dcce512a70 100644 --- a/app/components/Views/Settings/Contacts/AmbiguousAddressSheet/__snapshots__/AmbiguousAddressSheet.test.tsx.snap +++ b/app/components/Views/Settings/Contacts/AmbiguousAddressSheet/__snapshots__/AmbiguousAddressSheet.test.tsx.snap @@ -375,7 +375,7 @@ exports[`AmbiguousAddressSheet should render correctly 1`] = ` "borderTopLeftRadius": 8, "borderTopRightRadius": 8, "borderWidth": 1, - "maxHeight": 1314, + "maxHeight": 1334, "overflow": "hidden", "paddingBottom": 0, "shadowColor": "#0000001A", diff --git a/app/components/Views/Settings/Contacts/ContactForm/index.js b/app/components/Views/Settings/Contacts/ContactForm/index.js index 3c1e3b575f94..767a22e2bf28 100644 --- a/app/components/Views/Settings/Contacts/ContactForm/index.js +++ b/app/components/Views/Settings/Contacts/ContactForm/index.js @@ -31,7 +31,7 @@ import { } from '../../../../../constants/error'; import Routes from '../../../../../constants/navigation/Routes'; import { createQRScannerNavDetails } from '../../../QRTabSwitcher'; -import { selectChainId } from '../../../../../selectors/networkController'; +import { selectEvmChainId } from '../../../../../selectors/networkController'; import { AddContactViewSelectorsIDs } from '../../../../../../e2e/selectors/Settings/Contacts/AddContactView.selectors'; import { selectInternalAccounts } from '../../../../../selectors/accountsController'; import { toLowerCaseEquals } from '../../../../../util/general'; @@ -507,7 +507,7 @@ ContactForm.contextType = ThemeContext; const mapStateToProps = (state) => ({ addressBook: selectAddressBook(state), internalAccounts: selectInternalAccounts(state), - chainId: selectChainId(state), + chainId: selectEvmChainId(state), }); export default connect(mapStateToProps)(ContactForm); diff --git a/app/components/Views/Settings/IPFSGatewaySettings/__snapshots__/index.test.tsx.snap b/app/components/Views/Settings/IPFSGatewaySettings/__snapshots__/index.test.tsx.snap index d6793d0765f5..fe739b712246 100644 --- a/app/components/Views/Settings/IPFSGatewaySettings/__snapshots__/index.test.tsx.snap +++ b/app/components/Views/Settings/IPFSGatewaySettings/__snapshots__/index.test.tsx.snap @@ -1,6 +1,6 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`IPFSGatewaySettings should render correctly 1`] = ` +exports[`IPFSGatewaySettings render matches snapshot 1`] = ` <View style={ { diff --git a/app/components/Views/Settings/IPFSGatewaySettings/index.test.tsx b/app/components/Views/Settings/IPFSGatewaySettings/index.test.tsx index 0a5bb500ab50..28bb8eef8b9e 100644 --- a/app/components/Views/Settings/IPFSGatewaySettings/index.test.tsx +++ b/app/components/Views/Settings/IPFSGatewaySettings/index.test.tsx @@ -1,44 +1,26 @@ import React from 'react'; -import { fireEvent } from '@testing-library/react-native'; +import { fireEvent, waitFor } from '@testing-library/react-native'; import Engine from '../../../../core/Engine'; import renderWithProvider from '../../../../util/test/renderWithProvider'; import { backgroundState } from '../../../../util/test/initial-root-state'; import IPFSGatewaySettings from './'; import { IPFS_GATEWAY_SECTION, IPFS_GATEWAY_SELECTED } from './index.constants'; +import { timeoutFetch } from '../../../../util/general'; -let mockSetIsIpfsGatewayEnabled: jest.Mock; -let mockSetIpfsGateway: jest.Mock; - -beforeEach(() => { - mockSetIsIpfsGatewayEnabled.mockClear(); - mockSetIpfsGateway.mockClear(); -}); - -const mockEngine = Engine; - -jest.mock('../../../../core/Engine', () => { - mockSetIsIpfsGatewayEnabled = jest.fn(); - mockSetIpfsGateway = jest.fn(); - return { - init: () => mockEngine.init({}), - context: { - PreferencesController: { - setIsIpfsGatewayEnabled: mockSetIsIpfsGatewayEnabled, - setIpfsGateway: mockSetIpfsGateway, - }, +jest.mock('../../../../core/Engine', () => ({ + context: { + PreferencesController: { + setIsIpfsGatewayEnabled: jest.fn(), + setIpfsGateway: jest.fn(), }, - }; -}); + }, +})); jest.mock('../../../../util/general', () => ({ timeoutFetch: jest.fn(), })); describe('IPFSGatewaySettings', () => { - beforeEach(() => { - jest.clearAllMocks(); - }); - const initialState = { engine: { backgroundState: { @@ -58,63 +40,86 @@ describe('IPFSGatewaySettings', () => { }, }; - it('should render correctly', () => { - const tree = renderWithProvider(<IPFSGatewaySettings />, { + beforeEach(() => { + jest.clearAllMocks(); + }); + + it('render matches snapshot', () => { + const { toJSON } = renderWithProvider(<IPFSGatewaySettings />, { state: initialState, }); - expect(tree).toMatchSnapshot(); + expect(toJSON()).toMatchSnapshot(); }); - describe('IPFS Gateway', () => { - it('should render IPFS gateway toggle', () => { - const { getByTestId } = renderWithProvider(<IPFSGatewaySettings />, { - state: initialState, - }); - const ipfsGatewayToggle = getByTestId(IPFS_GATEWAY_SECTION); - expect(ipfsGatewayToggle).toBeTruthy(); + it('renders IPFS gateway toggle switch', () => { + const { getByTestId } = renderWithProvider(<IPFSGatewaySettings />, { + state: initialState, }); + expect(getByTestId(IPFS_GATEWAY_SECTION)).toBeTruthy(); + }); - it('should toggle IPFS gateway when switch is pressed', () => { - const { getByTestId } = renderWithProvider(<IPFSGatewaySettings />, { - state: initialState, - }); - const ipfsGatewayToggle = getByTestId(IPFS_GATEWAY_SECTION); + it('toggles IPFS gateway when switch is pressed', () => { + const { getByTestId } = renderWithProvider(<IPFSGatewaySettings />, { + state: initialState, + }); - fireEvent(ipfsGatewayToggle, 'onValueChange', true); - expect(mockSetIsIpfsGatewayEnabled).toHaveBeenCalledWith(true); + const toggleSwitch = getByTestId(IPFS_GATEWAY_SECTION); + fireEvent(toggleSwitch, 'onValueChange', true); + expect(Engine.context.PreferencesController.setIsIpfsGatewayEnabled).toHaveBeenCalledWith(true); - fireEvent(ipfsGatewayToggle, 'onValueChange', false); - expect(mockSetIsIpfsGatewayEnabled).toHaveBeenCalledWith(false); - }); + fireEvent(toggleSwitch, 'onValueChange', false); + expect(Engine.context.PreferencesController.setIsIpfsGatewayEnabled).toHaveBeenCalledWith(false); + }); - it('should render IPFS gateway selector when enabled', async () => { - const { queryByTestId } = renderWithProvider(<IPFSGatewaySettings />, { - state: { - ...initialState, - engine: { - backgroundState: { - ...initialState.engine.backgroundState, - PreferencesController: { - ...initialState.engine.backgroundState.PreferencesController, - isIpfsGatewayEnabled: true, - }, + it('renders IPFS gateway selector when enabled', async () => { + const { getByTestId } = renderWithProvider(<IPFSGatewaySettings />, { + state: { + ...initialState, + engine: { + backgroundState: { + ...initialState.engine.backgroundState, + PreferencesController: { + ...initialState.engine.backgroundState.PreferencesController, + isIpfsGatewayEnabled: true, }, }, }, - }); + }, + }); + + await waitFor(() => expect(getByTestId(IPFS_GATEWAY_SELECTED)).toBeTruthy(), { timeout: 3000 }); - await new Promise((resolve) => setTimeout(resolve, 0)); + }); - const ipfsGatewaySelector = queryByTestId(IPFS_GATEWAY_SELECTED); - expect(ipfsGatewaySelector).toBeNull(); + it('does not render IPFS gateway selector when disabled', () => { + const { queryByTestId } = renderWithProvider(<IPFSGatewaySettings />, { + state: initialState, }); + expect(queryByTestId(IPFS_GATEWAY_SELECTED)).toBeNull(); + }); - it('should not render IPFS gateway selector when disabled', () => { - const { queryByTestId } = renderWithProvider(<IPFSGatewaySettings />, { - state: initialState, - }); - const ipfsGatewaySelector = queryByTestId(IPFS_GATEWAY_SELECTED); - expect(ipfsGatewaySelector).toBeNull(); + it('calls timeoutFetch with correct parameters', async () => { + renderWithProvider(<IPFSGatewaySettings />, { + state: { + ...initialState, + engine: { + backgroundState: { + ...initialState.engine.backgroundState, + PreferencesController: { + ...initialState.engine.backgroundState.PreferencesController, + isIpfsGatewayEnabled: true, + }, + }, + }, + }, }); + + await waitFor(() => { + expect(timeoutFetch).toHaveBeenCalledWith( + expect.stringContaining('https://'), + expect.any(Object), + 1200 + ); + }, { timeout: 3000 }); }); }); diff --git a/app/components/Views/Settings/IPFSGatewaySettings/index.tsx b/app/components/Views/Settings/IPFSGatewaySettings/index.tsx index 86ffa2960365..a23c7062e1bc 100644 --- a/app/components/Views/Settings/IPFSGatewaySettings/index.tsx +++ b/app/components/Views/Settings/IPFSGatewaySettings/index.tsx @@ -43,7 +43,7 @@ const IPFSGatewaySettings = () => { const testUrl = gateway.value + HASH_TO_TEST + '#x-ipfs-companion-no-redirect'; try { - const res = await timeoutFetch(testUrl, 1200); + const res = await timeoutFetch(testUrl, {}, 1200); const text = await res.text(); const available = text.trim() === HASH_STRING.trim(); return { ...gateway, available }; diff --git a/app/components/Views/Settings/IncomingTransactionsSettings/__snapshots__/index.test.tsx.snap b/app/components/Views/Settings/IncomingTransactionsSettings/__snapshots__/index.test.tsx.snap index 448769b22508..73a44853827d 100644 --- a/app/components/Views/Settings/IncomingTransactionsSettings/__snapshots__/index.test.tsx.snap +++ b/app/components/Views/Settings/IncomingTransactionsSettings/__snapshots__/index.test.tsx.snap @@ -287,6 +287,125 @@ exports[`IncomingTransactionsSettings should render correctly 1`] = ` </View> </View> </TouchableOpacity> + <TouchableOpacity + avatarProps={ + { + "imageSource": 1, + "name": "Solana Mainnet", + "variant": "Network", + } + } + style={ + { + "backgroundColor": "#ffffff", + "borderColor": "#848c96", + "borderRadius": 4, + "borderWidth": 0, + "padding": 16, + } + } + testID="celldisplay" + title="Solana Mainnet" + > + <View + style={ + { + "flexDirection": "row", + } + } + > + <View + style={ + { + "alignItems": "center", + "backgroundColor": "#ffffff", + "borderRadius": 16, + "height": 32, + "justifyContent": "center", + "marginRight": 16, + "overflow": "hidden", + "width": 32, + } + } + testID="cellbase-avatar" + > + <Image + onError={[Function]} + resizeMode="contain" + source={1} + style={ + { + "height": 32, + "width": 32, + } + } + testID="network-avatar-image" + /> + </View> + <View + style={ + { + "alignItems": "flex-start", + "flex": 1, + } + } + > + <Text + accessibilityRole="text" + numberOfLines={1} + style={ + { + "color": "#141618", + "fontFamily": "EuclidCircularB-Regular", + "fontSize": 16, + "fontWeight": "400", + "letterSpacing": 0, + "lineHeight": 24, + } + } + testID="cellbase-avatar-title" + > + Solana Mainnet + </Text> + </View> + <View + style={ + { + "marginLeft": 16, + } + } + > + <RCTSwitch + accessibilityRole="switch" + onChange={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} + onTintColor="#0376c9" + style={ + [ + { + "height": 31, + "width": 51, + }, + [ + { + "alignSelf": "flex-start", + }, + { + "backgroundColor": "#BBC0C566", + "borderRadius": 16, + }, + ], + ] + } + testID="solana-incoming-transactions-toggle" + thumbTintColor="#ffffff" + tintColor="#BBC0C566" + value={false} + /> + </View> + </View> + </TouchableOpacity> </View> </View> `; diff --git a/app/components/Views/Settings/IncomingTransactionsSettings/index.tsx b/app/components/Views/Settings/IncomingTransactionsSettings/index.tsx index cef7cf2b9e84..49cfdc7a3c90 100644 --- a/app/components/Views/Settings/IncomingTransactionsSettings/index.tsx +++ b/app/components/Views/Settings/IncomingTransactionsSettings/index.tsx @@ -16,7 +16,7 @@ import { selectShowTestNetworks, selectShowIncomingTransactionNetworks, } from '../../../../selectors/preferencesController'; -import { selectNetworkConfigurations } from '../../../../selectors/networkController'; +import { selectEvmNetworkConfigurationsByChainId } from '../../../../selectors/networkController'; import { EtherscanSupportedHexChainId } from '@metamask/preferences-controller'; import { NetworkConfiguration } from '@metamask/network-controller'; import styleSheet from './index.styles'; @@ -29,7 +29,12 @@ import { NetworksI } from './index.types'; import NetworkCell from '../../../UI/NetworkCell/NetworkCell'; import { MAINNET, LINEA_MAINNET } from '../../../../../app/constants/network'; import { INCOMING_TRANSACTIONS_SUPPORTED_CHAIN_IDS } from '@metamask/transaction-controller'; -import { Hex } from '@metamask/utils'; +import { CaipChainId, Hex } from '@metamask/utils'; +///: BEGIN:ONLY_INCLUDE_IF(keyring-snaps) +import { SolScope } from '@metamask/keyring-api'; +import images from 'images/image-icons'; +import { selectNonEvmNetworkConfigurationsByChainId } from '../../../../selectors/multichainNetworkController'; +///: END:ONLY_INCLUDE_IF const IncomingTransactionsSettings = () => { const { styles } = useStyles(styleSheet, {}); @@ -39,10 +44,17 @@ const IncomingTransactionsSettings = () => { selectShowIncomingTransactionNetworks, ); - const networkConfigurations = useSelector(selectNetworkConfigurations); + const networkConfigurations = useSelector( + selectEvmNetworkConfigurationsByChainId, + ); + ///: BEGIN:ONLY_INCLUDE_IF(keyring-snaps) + const nonEvmNetworkConfigurations = useSelector( + selectNonEvmNetworkConfigurationsByChainId, + ); + ///: END:ONLY_INCLUDE_IF const toggleEnableIncomingTransactions = ( - hexChainId: Hex, + hexChainId: Hex | CaipChainId, value: boolean, ) => { PreferencesController.setEnableNetworkIncomingTransactions( @@ -106,7 +118,26 @@ const IncomingTransactionsSettings = () => { return [...mainnetNetworks, ...otherNetworks].map(renderNetwork); }; - + ///: BEGIN:ONLY_INCLUDE_IF(keyring-snaps) + const renderNonEvmNetworks = () => + Object.values(nonEvmNetworkConfigurations) + // TODO: - [SOLANA] - Remove this filter once we want to show non evm like BTC + .filter((network) => network.chainId === SolScope.Mainnet) + .map((network) => ( + <NetworkCell + key={network.chainId} + name={network.name} + chainId={network.chainId} + imageSource={images.SOLANA} + //TODO: [SOLANA] Disabled for now. When activity view supports non evm, we should enable this + showIncomingTransactionsNetworks={{ + [network.chainId]: false, + }} + toggleEnableIncomingTransactions={() => null} + testID={'solana-incoming-transactions-toggle'} + /> + )); + ///: END:ONLY_INCLUDE_IF const renderOtherNetworks = () => { const NetworksTyped = Networks as NetworksI; const getOtherNetworks = () => getAllNetworks().slice(2); @@ -142,6 +173,11 @@ const IncomingTransactionsSettings = () => { </Text> <View style={styles.transactionsContainer}> {renderRpcNetworks()} + { + ///: BEGIN:ONLY_INCLUDE_IF(keyring-snaps) + renderNonEvmNetworks() + ///: END:ONLY_INCLUDE_IF + } {showTestNetworks && renderOtherNetworks()} </View> </View> diff --git a/app/components/Views/Settings/NetworksSettings/NetworkSettings/CustomNetworkView/CustomNetwork.tsx b/app/components/Views/Settings/NetworksSettings/NetworkSettings/CustomNetworkView/CustomNetwork.tsx index afb9f8421e85..bd5302fb84fd 100644 --- a/app/components/Views/Settings/NetworksSettings/NetworkSettings/CustomNetworkView/CustomNetwork.tsx +++ b/app/components/Views/Settings/NetworksSettings/NetworkSettings/CustomNetworkView/CustomNetwork.tsx @@ -20,6 +20,9 @@ import AvatarNetwork from '../../../../../../component-library/components/Avatar import { AvatarSize } from '../../../../../../component-library/components/Avatars/Avatar'; import { isNetworkUiRedesignEnabled } from '../../../../../../util/networks/isNetworkUiRedesignEnabled'; import { useSafeChains } from '../../../../../../components/hooks/useSafeChains'; +import { isNonEvmChainId } from '../../../../../../core/Multichain/utils'; +import { NetworkConfiguration } from '@metamask/network-controller'; +import { MultichainNetworkConfiguration } from '@metamask/multichain-network-controller'; const CustomNetwork = ({ showPopularNetworkModal, @@ -40,14 +43,23 @@ const CustomNetwork = ({ const networkConfigurations = useSelector(selectNetworkConfigurations); const selectedChainId = useSelector(selectChainId); const { safeChains } = useSafeChains(); - const supportedNetworkList = (customNetworksList ?? PopularList).map( (networkConfiguration: Network) => { const isAdded = Object.values(networkConfigurations).some( - // TODO: Replace "any" with type - // eslint-disable-next-line @typescript-eslint/no-explicit-any - (savedNetwork: any) => - toHex(savedNetwork.chainId) === toHex(networkConfiguration.chainId), + ( + savedNetwork: NetworkConfiguration | MultichainNetworkConfiguration, + ) => { + if ( + isNonEvmChainId(networkConfiguration.chainId) || + isNonEvmChainId(savedNetwork.chainId) + ) { + return false; + } + + return ( + toHex(savedNetwork.chainId) === toHex(networkConfiguration.chainId) + ); + }, ); return { ...networkConfiguration, diff --git a/app/components/Views/Settings/NetworksSettings/NetworkSettings/index.js b/app/components/Views/Settings/NetworksSettings/NetworkSettings/index.js index b4c95f0c1547..984c389238e9 100644 --- a/app/components/Views/Settings/NetworksSettings/NetworkSettings/index.js +++ b/app/components/Views/Settings/NetworksSettings/NetworkSettings/index.js @@ -1564,8 +1564,8 @@ export class NetworkSettings extends PureComponent { this.setState({ showMultiBlockExplorerAddModal: { isVisible: false } }); }; - switchToMainnet = () => { - const { NetworkController } = Engine.context; + switchToMainnet = async () => { + const { MultichainNetworkController } = Engine.context; const { networkConfigurations } = this.props; const { networkClientId } = @@ -1573,20 +1573,21 @@ export class NetworkSettings extends PureComponent { networkConfigurations.defaultRpcEndpointIndex ] ?? {}; - NetworkController.setActiveNetwork(networkClientId); + await MultichainNetworkController.setActiveNetwork(networkClientId); + setTimeout(async () => { await updateIncomingTransactions([CHAIN_IDS.MAINNET]); }, 1000); }; - removeRpcUrl = () => { + removeRpcUrl = async () => { const { navigation, networkConfigurations, providerConfig } = this.props; const { rpcUrl } = this.state; if ( compareSanitizedUrl(rpcUrl, providerConfig.rpcUrl) && providerConfig.type === RPC ) { - this.switchToMainnet(); + await this.switchToMainnet(); } const entry = Object.entries(networkConfigurations).find( diff --git a/app/components/Views/Settings/NetworksSettings/NetworkSettings/index.test.tsx b/app/components/Views/Settings/NetworksSettings/NetworkSettings/index.test.tsx index 2c0b8912034c..ba86c4fec7d6 100644 --- a/app/components/Views/Settings/NetworksSettings/NetworkSettings/index.test.tsx +++ b/app/components/Views/Settings/NetworksSettings/NetworkSettings/index.test.tsx @@ -58,6 +58,9 @@ jest.mock('../../../../../core/Engine', () => ({ removeNetwork: jest.fn(), updateNetwork: jest.fn(), }, + MultichainNetworkController: { + setActiveNetwork: jest.fn(), + }, CurrencyRateController: { updateExchangeRate: jest.fn(), }, diff --git a/app/components/Views/Settings/NetworksSettings/__snapshots__/index.test.tsx.snap b/app/components/Views/Settings/NetworksSettings/__snapshots__/index.test.tsx.snap index f4277560fce5..95a27c1514a0 100644 --- a/app/components/Views/Settings/NetworksSettings/__snapshots__/index.test.tsx.snap +++ b/app/components/Views/Settings/NetworksSettings/__snapshots__/index.test.tsx.snap @@ -592,6 +592,80 @@ exports[`NetworksSettings should render correctly 1`] = ` </Text> </TouchableOpacity> </View> + <View> + <TouchableOpacity + disabled={true} + onPress={[Function]} + style={ + { + "alignItems": "center", + "flex": 1, + "flexDirection": "row", + "opacity": 0.5, + "paddingVertical": 12, + } + } + > + <View + style={ + { + "alignItems": "center", + "flex": 0, + "flexDirection": "row", + } + } + > + <Image + source={1} + style={ + { + "borderRadius": 10, + "height": 20, + "marginRight": 16, + "marginTop": 2, + "width": 20, + } + } + /> + <View> + <Text + style={ + { + "color": "#141618", + "fontFamily": "EuclidCircularB-Regular", + "fontSize": 16, + "fontWeight": "400", + } + } + > + Solana Mainnet + </Text> + </View> + </View> + <Text + allowFontScaling={false} + style={ + [ + { + "color": "#141618", + "fontSize": 20, + }, + { + "marginLeft": 8, + }, + { + "fontFamily": "FontAwesome", + "fontStyle": "normal", + "fontWeight": "normal", + }, + {}, + ] + } + > +  + </Text> + </TouchableOpacity> + </View> <Text style={ { diff --git a/app/components/Views/Settings/NetworksSettings/index.js b/app/components/Views/Settings/NetworksSettings/index.js index 9313667627ad..c1e7a3ccbfcc 100644 --- a/app/components/Views/Settings/NetworksSettings/index.js +++ b/app/components/Views/Settings/NetworksSettings/index.js @@ -30,7 +30,7 @@ import ImageIcons from '../../../UI/ImageIcon'; import { ADD_NETWORK_BUTTON } from '../../../../../wdio/screen-objects/testIDs/Screens/NetworksScreen.testids'; import { compareSanitizedUrl } from '../../../../util/sanitizeUrl'; import { - selectNetworkConfigurations, + selectEvmNetworkConfigurationsByChainId, selectProviderConfig, } from '../../../../selectors/networkController'; import { @@ -43,6 +43,11 @@ import { NetworksViewSelectorsIDs } from '../../../../../e2e/selectors/Settings/ import { updateIncomingTransactions } from '../../../../util/transaction-controller'; import NetworkSearchTextInput from '../../NetworkSelector/NetworkSearchTextInput'; import { CHAIN_IDS } from '@metamask/transaction-controller'; +import { isNonEvmChainId } from '../../../../core/Multichain/utils'; +///: BEGIN:ONLY_INCLUDE_IF(keyring-snaps) +import { SolScope } from '@metamask/keyring-api'; +import { selectNonEvmNetworkConfigurationsByChainId } from '../../../../selectors/multichainNetworkController'; +///: END:ONLY_INCLUDE_IF const createStyles = (colors) => StyleSheet.create({ @@ -66,6 +71,9 @@ const createStyles = (colors) => paddingVertical: 12, alignItems: 'center', }, + networkDisabled: { + opacity: 0.5, + }, networkWrapper: { flex: 0, flexDirection: 'row', @@ -130,6 +138,12 @@ class NetworksSettings extends PureComponent { * Current network provider configuration */ providerConfig: PropTypes.object, + ///: BEGIN:ONLY_INCLUDE_IF(keyring-snaps) + /** + * Non evm network configurations + */ + nonEvmNetworkConfigurations: PropTypes.object, + ///: END:ONLY_INCLUDE_IF }; actionSheet = null; @@ -194,7 +208,7 @@ class NetworksSettings extends PureComponent { }, 1000); }; - removeNetwork = () => { + removeNetwork = async () => { // Check if it's the selected network and then switch to mainnet first const { providerConfig } = this.props; if ( @@ -203,7 +217,7 @@ class NetworksSettings extends PureComponent { ) { this.switchToMainnet(); } - const { NetworkController } = Engine.context; + const { NetworkController, MultichainNetworkController } = Engine.context; const { networkConfigurations } = this.props; const entry = Object.entries(networkConfigurations).find( @@ -226,7 +240,7 @@ class NetworksSettings extends PureComponent { if (this.networkToRemove === selectedNetworkClientId) { // if we delete selected network, switch to mainnet before removing the selected network - NetworkController.setActiveNetwork('mainnet'); + await MultichainNetworkController.setActiveNetwork('mainnet'); } NetworkController.removeNetwork(chainId); @@ -324,7 +338,8 @@ class NetworksSettings extends PureComponent { isTestNet(chainId) || isMainNet(chainId) || chainId === CHAIN_IDS.LINEA_MAINNET || - chainId === CHAIN_IDS.GOERLI + chainId === CHAIN_IDS.GOERLI || + isNonEvmChainId(chainId) ) { return null; } @@ -434,6 +449,40 @@ class NetworksSettings extends PureComponent { ); } + ///: BEGIN:ONLY_INCLUDE_IF(keyring-snaps) + renderSolanaMainnet() { + // TODO: [SOLANA] - Please revisit this since it's supported on a constant array in mobile and should come from multichain network controller + const { name: solanaMainnetName } = Object.values( + this.props.nonEvmNetworkConfigurations, + ).find((network) => network.chainId === SolScope.Mainnet); + const colors = this.context.colors || mockTheme.colors; + const styles = createStyles(colors); + + return ( + <View style={styles.mainnetHeader}> + <TouchableOpacity + style={{ ...styles.network, ...styles.networkDisabled }} + key={`network-${solanaMainnetName}`} + onPress={() => null} + disabled + > + <View style={styles.networkWrapper}> + <ImageIcons image={'SOLANA'} style={styles.networkIcon} /> + <View style={styles.networkInfo}> + <Text style={styles.networkLabel}>{solanaMainnetName}</Text> + </View> + </View> + <FontAwesome + name="lock" + size={20} + color={colors.icon.default} + style={styles.icon} + /> + </TouchableOpacity> + </View> + ); + } + ///: END:ONLY_INCLUDE_IF handleSearchTextChange = (text) => { this.setState({ searchString: text }); const defaultNetwork = getAllNetworks().map((networkType, i) => { @@ -537,6 +586,11 @@ class NetworksSettings extends PureComponent { </Text> {this.renderMainnet()} {this.renderLineaMainnet()} + { + ///: BEGIN:ONLY_INCLUDE_IF(keyring-snaps) + this.renderSolanaMainnet() + ///: END:ONLY_INCLUDE_IF + } {this.renderRpcNetworksView()} <Text style={styles.sectionLabel}> {strings('app_settings.test_network_name')} @@ -574,7 +628,11 @@ NetworksSettings.contextType = ThemeContext; const mapStateToProps = (state) => ({ providerConfig: selectProviderConfig(state), - networkConfigurations: selectNetworkConfigurations(state), + networkConfigurations: selectEvmNetworkConfigurationsByChainId(state), + ///: BEGIN:ONLY_INCLUDE_IF(keyring-snaps) + nonEvmNetworkConfigurations: + selectNonEvmNetworkConfigurationsByChainId(state), + ///: END:ONLY_INCLUDE_IF }); export default connect(mapStateToProps)(NetworksSettings); diff --git a/app/components/Views/Settings/NotificationsSettings/AccountsList.hooks.test.tsx b/app/components/Views/Settings/NotificationsSettings/AccountsList.hooks.test.tsx new file mode 100644 index 000000000000..d37dab9cdc01 --- /dev/null +++ b/app/components/Views/Settings/NotificationsSettings/AccountsList.hooks.test.tsx @@ -0,0 +1,136 @@ +import { act } from '@testing-library/react-hooks'; +import { waitFor } from '@testing-library/react-native'; +import { AvatarAccountType } from '../../../../component-library/components/Avatars/Avatar'; +// eslint-disable-next-line import/no-namespace +import * as UseSwitchNotificationsModule from '../../../../util/notifications/hooks/useSwitchNotifications'; +import { renderHookWithProvider } from '../../../../util/test/renderWithProvider'; +// eslint-disable-next-line import/no-namespace +import { useAccounts } from '../../../hooks/useAccounts'; +import { + useAccountProps, + useNotificationAccountListProps, +} from './AccountsList.hooks'; + +// eslint-disable-next-line @typescript-eslint/no-explicit-any +type MockVar = any; + +jest.mock('../../../hooks/useAccounts', () => ({ + useAccounts: jest.fn(), +})); + +const arrangeMockUseAccounts = () => { + const createAccounts = (addresses: string[]) => + addresses.map((address) => ({ address })); + const mockUseAccounts = jest.mocked(useAccounts).mockReturnValue({ + accounts: createAccounts(['0x123', '0x456']), + } as MockVar); + + return { + createAccounts, + mockUseAccounts, + }; +}; + +describe('useNotificationAccountListProps', () => { + const arrangeMocks = () => { + const mockUpdate = jest.fn(); + const createUseFetchAccountNotificationsReturn = () => ({ + accountsBeingUpdated: [], + data: {}, + error: null, + initialLoading: false, + update: mockUpdate, + }); + const mockUseFetchAccountNotifications = jest + .spyOn(UseSwitchNotificationsModule, 'useFetchAccountNotifications') + .mockReturnValue(createUseFetchAccountNotificationsReturn()); + + return { + mockUpdate, + createUseFetchAccountNotificationsReturn, + mockUseFetchAccountNotifications, + }; + }; + + const arrange = ( + addresses: string[], + mutateMocks?: (m: ReturnType<typeof arrangeMocks>) => void, + ) => { + const mocks = arrangeMocks(); + mutateMocks?.(mocks); + const hook = renderHookWithProvider(() => + useNotificationAccountListProps(addresses), + ); + + return { mocks, hook }; + }; + it('returns correct loading state', async () => { + const addresses = ['0x123', '0x456']; + const { hook } = arrange(addresses); + expect(hook.result.current.isAnyAccountLoading).toBe(false); + }); + + it('returns correct account loading state', async () => { + const addresses = ['0x123', '0x456']; + const { hook } = arrange(addresses, (m) => { + m.mockUseFetchAccountNotifications.mockReturnValue({ + ...m.createUseFetchAccountNotificationsReturn(), + accountsBeingUpdated: ['0x123'], + }); + }); + expect(hook.result.current.isAccountLoading('0x123')).toBe(true); + expect(hook.result.current.isAccountLoading('0x456')).toBe(false); + }); + + it('returns correct account enabled state', async () => { + const addresses = ['0x123', '0x456']; + const { hook } = arrange(addresses, (m) => { + m.mockUseFetchAccountNotifications.mockReturnValue({ + ...m.createUseFetchAccountNotificationsReturn(), + + data: { '0x123': true, '0x456': false }, + }); + }); + expect(hook.result.current.isAccountEnabled('0x123')).toBe(true); + expect(hook.result.current.isAccountEnabled('0x456')).toBe(false); + }); + + it('refetches account settings', async () => { + const addresses = ['0x123', '0x456']; + const { mocks, hook } = arrange(addresses); + + // Act + await act(async () => hook.result.current.refetchAccountSettings()); + + // Assert update method is called + await waitFor(() => { + expect(mocks.mockUpdate).toHaveBeenCalledWith(addresses); + }); + }); +}); + +describe('useAccountProps', () => { + const arrangeMocks = () => { + const mockStore = jest.fn().mockReturnValue({ + settings: { + useBlockieIcon: true, + }, + }); + + return { + ...arrangeMockUseAccounts(), + mockStore, + }; + }; + + it('returns correct account props', () => { + const mocks = arrangeMocks(); + const { result } = renderHookWithProvider(() => useAccountProps(), { + state: mocks.mockStore(), + }); + + expect(result.current.accounts).toHaveLength(2); + expect(result.current.accountAvatarType).toBe(AvatarAccountType.Blockies); + expect(result.current.accountAddresses).toEqual(['0x123', '0x456']); + }); +}); diff --git a/app/components/Views/Settings/NotificationsSettings/AccountsList.hooks.tsx b/app/components/Views/Settings/NotificationsSettings/AccountsList.hooks.tsx new file mode 100644 index 000000000000..2e29c2503b63 --- /dev/null +++ b/app/components/Views/Settings/NotificationsSettings/AccountsList.hooks.tsx @@ -0,0 +1,51 @@ +import { useCallback, useMemo } from 'react'; +import { useSelector } from 'react-redux'; +import { AvatarAccountType } from '../../../../component-library/components/Avatars/Avatar'; +import { useAccounts } from '../../../hooks/useAccounts'; +import { RootState } from '../../../../reducers'; +import { useFetchAccountNotifications } from '../../../../util/notifications/hooks/useSwitchNotifications'; + +export function useNotificationAccountListProps(addresses: string[]) { + const { update, initialLoading, accountsBeingUpdated, data } = + useFetchAccountNotifications(addresses); + + // Loading is determined on initial fetch or if any account is being updated + const updatingAccounts = accountsBeingUpdated.length > 0; + const isAnyAccountLoading = initialLoading || updatingAccounts; + + const refetchAccountSettings = useCallback(async () => { + await update(addresses); + }, [addresses, update]); + + const isAccountLoading = (address: string) => + accountsBeingUpdated.includes(address.toLowerCase()); + + const isAccountEnabled = (address: string) => + data?.[address.toLowerCase()] ?? false; + + return { + isAnyAccountLoading, + refetchAccountSettings, + isAccountLoading, + isAccountEnabled, + }; +} + +export function useAccountProps() { + const { accounts } = useAccounts(); + const accountAvatarType = useSelector((state: RootState) => + state.settings.useBlockieIcon + ? AvatarAccountType.Blockies + : AvatarAccountType.JazzIcon, + ); + const accountAddresses = useMemo( + () => accounts.map((a) => a.address), + [accounts], + ); + + return { + accounts, + accountAvatarType, + accountAddresses, + }; +} diff --git a/app/components/Views/Settings/NotificationsSettings/AccountsList.test.tsx b/app/components/Views/Settings/NotificationsSettings/AccountsList.test.tsx index aa3d30a0ee7a..e1c58ffd4535 100644 --- a/app/components/Views/Settings/NotificationsSettings/AccountsList.test.tsx +++ b/app/components/Views/Settings/NotificationsSettings/AccountsList.test.tsx @@ -1,88 +1,155 @@ import React from 'react'; -import renderWithProvider, { DeepPartial } from '../../../../util/test/renderWithProvider'; -import { AccountsList } from './AccountsList'; +import { fireEvent, render, waitFor } from '@testing-library/react-native'; +import { ACCOUNT_LIST_ITEM_TEST_ID, AccountsList } from './AccountsList'; +// eslint-disable-next-line import/no-namespace +import * as AccountListHooksModule from './AccountsList.hooks'; import { AvatarAccountType } from '../../../../component-library/components/Avatars/Avatar'; -import { Account } from '../../../../components/hooks/useAccounts/useAccounts.types'; -import { MOCK_ACCOUNTS_CONTROLLER_STATE } from '../../../../util/test/accountsControllerTestUtils'; -import { Hex } from '@metamask/utils'; -import { KeyringTypes } from '@metamask/keyring-controller'; -import { toChecksumAddress } from 'ethereumjs-util'; -import { RootState } from '../../../../reducers'; -import { backgroundState } from '../../../../util/test/initial-root-state'; - -const MOCK_ACCOUNT_ADDRESSES = Object.values( - MOCK_ACCOUNTS_CONTROLLER_STATE.internalAccounts.accounts, -).map((account) => account.address); - -const MOCK_ACCOUNT_1: Account = { - name: 'Account 1', - address: toChecksumAddress(MOCK_ACCOUNT_ADDRESSES[0]) as Hex, - type: KeyringTypes.hd, - yOffset: 0, - isSelected: false, - assets: { - fiatBalance: '\n0 ETH', - }, - balanceError: undefined, +// eslint-disable-next-line import/no-namespace +import * as useSwitchNotificationsModule from '../../../../util/notifications/hooks/useSwitchNotifications'; +import { + NOTIFICATION_OPTIONS_TOGGLE_LOADING_TEST_ID, + NOTIFICATION_OPTIONS_TOGGLE_SWITCH_TEST_ID, + NOTIFICATION_OPTIONS_TOGGLE_TEST_ID, +} from './NotificationOptionToggle'; + +// eslint-disable-next-line @typescript-eslint/no-explicit-any +type MockVar = any; + +jest.mock( + '../../../../util/notifications/hooks/useSwitchNotifications', + () => ({ + useAccountNotificationsToggle: jest.fn(), + }), +); + +const ADDRESS_1 = '0xb2B92547A92C1aC55EAe3F6632Fa1aF87dc05a29'; +const ADDRESS_2 = '0x700CcD8172BC3807D893883a730A1E0E6630F8EC'; + +const ACCOUNT_1_TEST_ID = { + item: NOTIFICATION_OPTIONS_TOGGLE_TEST_ID( + ACCOUNT_LIST_ITEM_TEST_ID(ADDRESS_1), + ), + itemLoading: NOTIFICATION_OPTIONS_TOGGLE_LOADING_TEST_ID( + ACCOUNT_LIST_ITEM_TEST_ID(ADDRESS_1), + ), + itemSwitch: NOTIFICATION_OPTIONS_TOGGLE_SWITCH_TEST_ID( + ACCOUNT_LIST_ITEM_TEST_ID(ADDRESS_1), + ), }; -const MOCK_ACCOUNT_2: Account = { - name: 'Account 2', - address: toChecksumAddress(MOCK_ACCOUNT_ADDRESSES[1]) as Hex, - type: KeyringTypes.hd, - yOffset: 78, - isSelected: true, - assets: { - fiatBalance: '\n< 0.00001 ETH', - }, - balanceError: undefined, +const ACCOUNT_2_TEST_ID = { + item: NOTIFICATION_OPTIONS_TOGGLE_TEST_ID( + ACCOUNT_LIST_ITEM_TEST_ID(ADDRESS_2), + ), + itemLoading: NOTIFICATION_OPTIONS_TOGGLE_LOADING_TEST_ID( + ACCOUNT_LIST_ITEM_TEST_ID(ADDRESS_2), + ), + itemSwitch: NOTIFICATION_OPTIONS_TOGGLE_SWITCH_TEST_ID( + ACCOUNT_LIST_ITEM_TEST_ID(ADDRESS_2), + ), }; -const MOCK_ACCOUNTS = [MOCK_ACCOUNT_1, MOCK_ACCOUNT_2]; - -const mockInitialState: DeepPartial<RootState> = { - engine: { - backgroundState: { - ...backgroundState, - NotificationServicesController: { - metamaskNotificationsList: [], - }, - }, - }, -}; +describe('AccountList', () => { + const arrangeMocks = () => { + const createMockAccounts = (addresses: string[]) => + addresses.map((address, idx) => ({ + address, + name: `My Account ${idx}`, + })); + + const mockUseAccountProps = jest + .spyOn(AccountListHooksModule, 'useAccountProps') + .mockReturnValue({ + accounts: createMockAccounts([ADDRESS_1, ADDRESS_2]) as MockVar, + accountAvatarType: AvatarAccountType.JazzIcon, + accountAddresses: [ADDRESS_1, ADDRESS_2], + }); + + const mockRefetchAccountSettings = jest.fn(); + const createUseNotificationAccountListProps = () => ({ + isAnyAccountLoading: false, + refetchAccountSettings: mockRefetchAccountSettings, + isAccountLoading: jest + .fn() + .mockImplementation((address) => address === ADDRESS_1), + isAccountEnabled: jest + .fn() + .mockImplementation((address) => address === ADDRESS_1), + }); + const mockUseNotificationAccountListProps = jest + .spyOn(AccountListHooksModule, 'useNotificationAccountListProps') + .mockReturnValue(createUseNotificationAccountListProps()); + + const mockOnToggle = jest.fn(); + const mockUseUpdateAccountSettings = jest + .spyOn(useSwitchNotificationsModule, 'useAccountNotificationsToggle') + .mockReturnValue({ + onToggle: mockOnToggle, + error: null, + loading: false, + }); + + return { + createMockAccounts, + mockUseAccountProps, + mockRefetchAccountSettings, + createUseNotificationAccountListProps, + mockUseNotificationAccountListProps, + mockOnToggle, + mockUseUpdateAccountSettings, + }; + }; + + it('renders correctly', async () => { + arrangeMocks(); + const { getByTestId, queryByTestId } = render(<AccountsList />); -describe('AccountsList', () => { - it('matches snapshot', () => { - - const { toJSON } = renderWithProvider( - <AccountsList - accounts={MOCK_ACCOUNTS} - accountAvatarType={AvatarAccountType.JazzIcon} - accountSettingsData={{}} - updateAndfetchAccountSettings={jest.fn()} - isUpdatingMetamaskNotificationsAccount={[]} - />, - { - state: mockInitialState, - }, - ); - expect(toJSON()).toMatchSnapshot(); + // Assert - Items exist + expect(getByTestId(ACCOUNT_1_TEST_ID.item)).toBeTruthy(); + expect(getByTestId(ACCOUNT_2_TEST_ID.item)).toBeTruthy(); + + // Assert - Item Loading + expect(getByTestId(ACCOUNT_1_TEST_ID.itemLoading)).toBeTruthy(); + + expect(queryByTestId(ACCOUNT_2_TEST_ID.itemLoading)).toBe(null); + + // Assert - Item Switch + expect(queryByTestId(ACCOUNT_1_TEST_ID.itemSwitch)).toBe(null); // We are loading, so this is null + expect(getByTestId(ACCOUNT_2_TEST_ID.itemSwitch).props.value).toBe(false); // The switch is set to false + }); + + it('disable switches when any account is loading', () => { + const mocks = arrangeMocks(); + mocks.mockUseNotificationAccountListProps.mockReturnValue({ + ...mocks.createUseNotificationAccountListProps(), + isAnyAccountLoading: true, + isAccountLoading: () => false, + }); + + const { getByTestId } = render(<AccountsList />); + + // Assert switches are disabled since we are loading + expect(getByTestId(ACCOUNT_1_TEST_ID.itemSwitch).props.disabled).toBe(true); + expect(getByTestId(ACCOUNT_2_TEST_ID.itemSwitch).props.disabled).toBe(true); }); - it('triggers updateAndfetchAccountSettings on mount', () => { - const updateAndfetchAccountSettings = jest.fn(); - renderWithProvider( - <AccountsList - accounts={MOCK_ACCOUNTS} - accountAvatarType={AvatarAccountType.JazzIcon} - accountSettingsData={{}} - updateAndfetchAccountSettings={updateAndfetchAccountSettings} - isUpdatingMetamaskNotificationsAccount={[]} - />, - { - state: mockInitialState, - }, - ); - - expect(updateAndfetchAccountSettings).toHaveBeenCalledTimes(1); + it('invokes switch toggle logic when clicked', async () => { + const mocks = arrangeMocks(); + mocks.mockUseNotificationAccountListProps.mockReturnValue({ + ...mocks.createUseNotificationAccountListProps(), + isAnyAccountLoading: false, + isAccountLoading: () => false, + }); + + const { getByTestId } = render(<AccountsList />); + + // Act + const toggleSwitch = getByTestId(ACCOUNT_1_TEST_ID.itemSwitch); + fireEvent(toggleSwitch, 'onChange', { nativeEvent: { value: false } }); + + // Assert account was toggled, and we refetch all account notification toggles + await waitFor(() => { + expect(mocks.mockOnToggle).toHaveBeenCalled(); + expect(mocks.mockRefetchAccountSettings).toHaveBeenCalled(); + }); }); }); diff --git a/app/components/Views/Settings/NotificationsSettings/AccountsList.tsx b/app/components/Views/Settings/NotificationsSettings/AccountsList.tsx index 8dded276cf9f..a1e6d1e2dd9c 100644 --- a/app/components/Views/Settings/NotificationsSettings/AccountsList.tsx +++ b/app/components/Views/Settings/NotificationsSettings/AccountsList.tsx @@ -1,53 +1,44 @@ -import React, { useEffect } from 'react'; +import React from 'react'; import { FlatList, View } from 'react-native'; +import { + useAccountProps, + useNotificationAccountListProps, +} from './AccountsList.hooks'; import NotificationOptionToggle from './NotificationOptionToggle'; -import { Account } from '../../../../components/hooks/useAccounts/useAccounts.types'; import { NotificationsToggleTypes } from './NotificationsSettings.constants'; -import { NotificationsAccountsState } from '../../../../core/redux/slices/notifications'; -import { AvatarAccountType } from '../../../../component-library/components/Avatars/Avatar'; -export const AccountsList = ({ - accounts, - accountAvatarType, - accountSettingsData, - updateAndfetchAccountSettings, - isUpdatingMetamaskNotificationsAccount, -}: { - accounts: Account[]; - accountAvatarType: AvatarAccountType; - accountSettingsData: NotificationsAccountsState; - updateAndfetchAccountSettings: () => Promise<Record<string, boolean> | undefined>; - isUpdatingMetamaskNotificationsAccount: string[]; -}) => { +export const ACCOUNT_LIST_ITEM_TEST_ID = (address: string) => + `${address}:account_list_item`; - useEffect(() => { - const fetchInitialData = async () => { - await updateAndfetchAccountSettings(); - }; - fetchInitialData(); - }, [updateAndfetchAccountSettings]); +export const AccountsList = () => { + const { accounts, accountAddresses, accountAvatarType } = useAccountProps(); + const { + isAnyAccountLoading, + isAccountLoading, + isAccountEnabled, + refetchAccountSettings, + } = useNotificationAccountListProps(accountAddresses); return ( <View> <FlatList - data={accounts} - keyExtractor={(item) => `address-${item.address}`} - renderItem={({ item }) => ( - <NotificationOptionToggle - type={NotificationsToggleTypes.ACCOUNT} - icon={accountAvatarType} - key={item.address} - title={item.name} - address={item.address} - disabledSwitch={isUpdatingMetamaskNotificationsAccount.length > 0} - isLoading={isUpdatingMetamaskNotificationsAccount.includes( - item.address.toLowerCase(), - )} - isEnabled={accountSettingsData?.[item.address.toLowerCase()]} - updateAndfetchAccountSettings={updateAndfetchAccountSettings} + data={accounts} + keyExtractor={(item) => `address-${item.address}`} + renderItem={({ item }) => ( + <NotificationOptionToggle + key={item.address} + type={NotificationsToggleTypes.ACCOUNT} + icon={accountAvatarType} + title={item.name} + address={item.address} + disabledSwitch={isAnyAccountLoading} + isLoading={isAccountLoading(item.address)} + isEnabled={isAccountEnabled(item.address)} + refetchNotificationAccounts={refetchAccountSettings} + testID={ACCOUNT_LIST_ITEM_TEST_ID(item.address)} /> - )} - /> - </View> + )} + /> + </View> ); }; diff --git a/app/components/Views/Settings/NotificationsSettings/CustomNotificationsRow/__snapshots__/index.test.tsx.snap b/app/components/Views/Settings/NotificationsSettings/CustomNotificationsRow/__snapshots__/index.test.tsx.snap index 2de1081e4681..e05424779e3c 100644 --- a/app/components/Views/Settings/NotificationsSettings/CustomNotificationsRow/__snapshots__/index.test.tsx.snap +++ b/app/components/Views/Settings/NotificationsSettings/CustomNotificationsRow/__snapshots__/index.test.tsx.snap @@ -13,7 +13,7 @@ exports[`CustomNotificationsRow should render correctly 1`] = ` <SvgMock color="#141618" height={24} - name="Arrow2Upright" + name="Sparkle" style={ { "height": 24, @@ -45,7 +45,7 @@ exports[`CustomNotificationsRow should render correctly 1`] = ` } } > - Assets Sent + Title </Text> <Text accessibilityRole="text" @@ -61,7 +61,7 @@ exports[`CustomNotificationsRow should render correctly 1`] = ` } } > - Funds and NFT + Description </Text> </View> <RCTSwitch @@ -87,6 +87,7 @@ exports[`CustomNotificationsRow should render correctly 1`] = ` ], ] } + testID="custom-notifications-row--switch" thumbTintColor="#ffffff" tintColor="#BBC0C566" value={false} diff --git a/app/components/Views/Settings/NotificationsSettings/CustomNotificationsRow/index.test.tsx b/app/components/Views/Settings/NotificationsSettings/CustomNotificationsRow/index.test.tsx index dde343a9494f..9d73262a25ed 100644 --- a/app/components/Views/Settings/NotificationsSettings/CustomNotificationsRow/index.test.tsx +++ b/app/components/Views/Settings/NotificationsSettings/CustomNotificationsRow/index.test.tsx @@ -1,17 +1,17 @@ import React from 'react'; import CustomNotificationsRow from '../CustomNotificationsRow/index'; import { render } from '@testing-library/react-native'; -import notificationsRows from '../notificationsRows'; +import { IconName } from '../../../../../component-library/components/Icons/Icon'; describe('CustomNotificationsRow', () => { it('should render correctly', () => { const { toJSON } = render( <CustomNotificationsRow - title={notificationsRows[0].title} - description={notificationsRows[0].description} - icon={notificationsRows[0].icon} - isEnabled={notificationsRows[0].value} - toggleCustomNotificationsEnabled={()=> jest.fn()} + title={'Title'} + description={'Description'} + icon={IconName.Sparkle} + isEnabled={false} + toggleCustomNotificationsEnabled={() => jest.fn()} />, ); expect(toJSON()).toMatchSnapshot(); diff --git a/app/components/Views/Settings/NotificationsSettings/CustomNotificationsRow/index.tsx b/app/components/Views/Settings/NotificationsSettings/CustomNotificationsRow/index.tsx index e66673e3f037..ed79ff94d599 100644 --- a/app/components/Views/Settings/NotificationsSettings/CustomNotificationsRow/index.tsx +++ b/app/components/Views/Settings/NotificationsSettings/CustomNotificationsRow/index.tsx @@ -5,7 +5,16 @@ import { createStyles } from '../NotificationOptionToggle/styles'; import Text, { TextVariant, } from '../../../../../component-library/components/Texts/Text'; -import Icon, { IconColor, IconName, IconSize } from '../../../../../component-library/components/Icons/Icon'; +import Icon, { + IconColor, + IconName, + IconSize, +} from '../../../../../component-library/components/Icons/Icon'; + +export const CUSTOM_NOTIFICATIONS_ROW_TEST_ID = 'custom-notifications-row'; +export const CUSTOM_NOTIFICATIONS_ROW_SWITCH_TEST_ID = ( + testID = CUSTOM_NOTIFICATIONS_ROW_TEST_ID, +) => `${testID}--switch`; interface CustomNotificationsRowProps { title: string; @@ -13,6 +22,7 @@ interface CustomNotificationsRowProps { icon: IconName; isEnabled: boolean; toggleCustomNotificationsEnabled: () => void; + testID?: string; } const CustomNotificationsRow = ({ @@ -21,44 +31,44 @@ const CustomNotificationsRow = ({ icon, isEnabled, toggleCustomNotificationsEnabled, + testID, }: CustomNotificationsRowProps) => { const theme = useTheme(); const { colors } = theme; const styles = createStyles(); return ( - <View style={styles.container}> + <View style={styles.container} testID={testID}> <Icon - name={icon} - style={styles.icon} - color={IconColor.Default} - size={IconSize.Lg} + name={icon} + style={styles.icon} + color={IconColor.Default} + size={IconSize.Lg} /> <View style={styles.titleContainer}> <Text variant={TextVariant.BodyLGMedium} style={styles.title}> - {title} + {title} </Text> - { - description && - (<Text variant={TextVariant.BodyLGMedium} style={styles.title}> - {description} - </Text>) - } + {description && ( + <Text variant={TextVariant.BodyLGMedium} style={styles.title}> + {description} + </Text> + )} </View> <Switch - value={isEnabled} - onChange={toggleCustomNotificationsEnabled} - trackColor={{ - true: colors.primary.default, - false: colors.border.muted, - }} - thumbColor={theme.brandColors.white} - style={styles.switch} - ios_backgroundColor={colors.border.muted} + value={isEnabled} + onChange={toggleCustomNotificationsEnabled} + trackColor={{ + true: colors.primary.default, + false: colors.border.muted, + }} + thumbColor={theme.brandColors.white} + style={styles.switch} + ios_backgroundColor={colors.border.muted} + testID={CUSTOM_NOTIFICATIONS_ROW_SWITCH_TEST_ID(testID)} /> - </View> + </View> ); }; - - export default React.memo(CustomNotificationsRow); +export default React.memo(CustomNotificationsRow); diff --git a/app/components/Views/Settings/NotificationsSettings/FeatureAnnouncementToggle.test.tsx b/app/components/Views/Settings/NotificationsSettings/FeatureAnnouncementToggle.test.tsx new file mode 100644 index 000000000000..c6eca61a9495 --- /dev/null +++ b/app/components/Views/Settings/NotificationsSettings/FeatureAnnouncementToggle.test.tsx @@ -0,0 +1,98 @@ +import React from 'react'; +import { + render, + fireEvent, + waitFor, + screen, +} from '@testing-library/react-native'; +import { + FEATURE_ANNOUNCEMENT_TOGGLE_TEST_ID, + FeatureAnnouncementToggle, +} from './FeatureAnnouncementToggle'; +// eslint-disable-next-line import/no-namespace +import * as UseSwitchNotificationsModule from '../../../../util/notifications/hooks/useSwitchNotifications'; +import { MetaMetricsEvents, useMetrics } from '../../../hooks/useMetrics'; +import { CUSTOM_NOTIFICATIONS_ROW_SWITCH_TEST_ID } from './CustomNotificationsRow'; + +// eslint-disable-next-line @typescript-eslint/no-explicit-any +type MockVar = any; + +jest.mock('../../../hooks/useMetrics', () => ({ + ...jest.requireActual('../../../hooks/useMetrics'), + useMetrics: jest.fn(), +})); + +const arrangeMockMetrics = () => { + const mockTrackEvent = jest.fn(); + const mockAddProperties = jest.fn(); + const mockCreateEventBuilder = jest.fn().mockReturnValue({ + addProperties: mockAddProperties.mockReturnThis(), + build: jest.fn().mockReturnThis(), + }); + + const mockUseMetrics = jest.mocked(useMetrics).mockReturnValue({ + trackEvent: mockTrackEvent, + createEventBuilder: mockCreateEventBuilder, + } as MockVar); + + return { + mockTrackEvent, + mockAddProperties, + mockCreateEventBuilder, + mockUseMetrics, + }; +}; + +describe('FeatureAnnouncementToggle', () => { + const arrangeMocks = () => { + const mockSwitchFeatureAnnouncements = jest.fn(); + const mockUseFeatureAnnouncementToggle = jest + .spyOn(UseSwitchNotificationsModule, 'useFeatureAnnouncementToggle') + .mockReturnValue({ + data: true, + switchFeatureAnnouncements: mockSwitchFeatureAnnouncements, + }); + + return { + mockSwitchFeatureAnnouncements, + mockUseFeatureAnnouncementToggle, + ...arrangeMockMetrics(), + }; + }; + + it('renders correctly', () => { + arrangeMocks(); + render(<FeatureAnnouncementToggle />); + expect( + screen.getByTestId(FEATURE_ANNOUNCEMENT_TOGGLE_TEST_ID), + ).toBeTruthy(); + }); + + it('toggles feature announcements', async () => { + const mocks = arrangeMocks(); + render(<FeatureAnnouncementToggle />); + const toggleSwitch = screen.getByTestId( + CUSTOM_NOTIFICATIONS_ROW_SWITCH_TEST_ID( + FEATURE_ANNOUNCEMENT_TOGGLE_TEST_ID, + ), + ); + + fireEvent(toggleSwitch, 'onChange', { nativeEvent: { value: false } }); + + await waitFor(() => { + // Assert new switch call + expect(mocks.mockSwitchFeatureAnnouncements).toHaveBeenCalledWith(false); + + // Assert Metrics + expect(mocks.mockTrackEvent).toHaveBeenCalled(); + expect(mocks.mockCreateEventBuilder).toHaveBeenCalledWith( + MetaMetricsEvents.NOTIFICATIONS_SETTINGS_UPDATED, + ); + expect(mocks.mockAddProperties).toHaveBeenCalledWith({ + settings_type: 'product_announcements', + old_value: true, + new_value: false, + }); + }); + }); +}); diff --git a/app/components/Views/Settings/NotificationsSettings/FeatureAnnouncementToggle.tsx b/app/components/Views/Settings/NotificationsSettings/FeatureAnnouncementToggle.tsx new file mode 100644 index 000000000000..efccfdc6b8e1 --- /dev/null +++ b/app/components/Views/Settings/NotificationsSettings/FeatureAnnouncementToggle.tsx @@ -0,0 +1,40 @@ +import React, { useCallback } from 'react'; +import { useFeatureAnnouncementToggle } from '../../../../util/notifications/hooks/useSwitchNotifications'; +import { MetaMetricsEvents, useMetrics } from '../../../hooks/useMetrics'; +import CustomNotificationsRow from './CustomNotificationsRow'; +import { strings } from '../../../../../locales/i18n'; +import { IconName } from '../../../../component-library/components/Icons/Icon'; + +export const FEATURE_ANNOUNCEMENT_TOGGLE_TEST_ID = + 'feature-announcement-toggle'; + +export function FeatureAnnouncementToggle() { + const { data: isEnabled, switchFeatureAnnouncements } = + useFeatureAnnouncementToggle(); + const { trackEvent, createEventBuilder } = useMetrics(); + + const toggleCustomNotificationsEnabled = useCallback(async () => { + await switchFeatureAnnouncements(!isEnabled); + trackEvent( + createEventBuilder(MetaMetricsEvents.NOTIFICATIONS_SETTINGS_UPDATED) + .addProperties({ + settings_type: 'product_announcements', + old_value: isEnabled, + new_value: !isEnabled, + }) + .build(), + ); + }, [createEventBuilder, isEnabled, switchFeatureAnnouncements, trackEvent]); + + return ( + <CustomNotificationsRow + title={strings( + `app_settings.notifications_opts.products_announcements_title`, + )} + icon={IconName.Sparkle} + isEnabled={isEnabled} + toggleCustomNotificationsEnabled={toggleCustomNotificationsEnabled} + testID={FEATURE_ANNOUNCEMENT_TOGGLE_TEST_ID} + /> + ); +} diff --git a/app/components/Views/Settings/NotificationsSettings/MainNotificationToggle.hooks.test.tsx b/app/components/Views/Settings/NotificationsSettings/MainNotificationToggle.hooks.test.tsx new file mode 100644 index 000000000000..cd385e402868 --- /dev/null +++ b/app/components/Views/Settings/NotificationsSettings/MainNotificationToggle.hooks.test.tsx @@ -0,0 +1,134 @@ +import { act } from '@testing-library/react-hooks'; +import { waitFor } from '@testing-library/react-native'; +import { AvatarAccountType } from '../../../../component-library/components/Avatars/Avatar'; +// eslint-disable-next-line import/no-namespace +import * as UseSwitchNotificationsModule from '../../../../util/notifications/hooks/useSwitchNotifications'; +import { renderHookWithProvider } from '../../../../util/test/renderWithProvider'; +import { useAccounts } from '../../../hooks/useAccounts'; +import { + useAccountProps, + useNotificationAccountListProps, +} from './AccountsList.hooks'; + +// eslint-disable-next-line @typescript-eslint/no-explicit-any +type MockVar = any; + +describe('useNotificationAccountListProps', () => { + const arrangeMocks = () => { + const mockUpdate = jest.fn(); + const createMockUseFetchAccountNotificationsReturn = () => ({ + accountsBeingUpdated: [], + data: {}, + error: null, + initialLoading: false, + update: mockUpdate, + }); + const mockUseFetchAccountNotifications = jest + .spyOn(UseSwitchNotificationsModule, 'useFetchAccountNotifications') + .mockReturnValue(createMockUseFetchAccountNotificationsReturn()); + + return { + mockUpdate, + mockUseFetchAccountNotifications, + createMockUseFetchAccountNotificationsReturn, + }; + }; + + type Mocks = ReturnType<typeof arrangeMocks>; + const arrange = (addresses: string[], mutateMocks?: (m: Mocks) => void) => { + // Arrange + const mocks = arrangeMocks(); + mutateMocks?.(mocks); + const hook = renderHookWithProvider(() => + useNotificationAccountListProps(addresses), + ); + + return { mocks, hook }; + }; + + it('returns correct loading state', async () => { + const addresses = ['0x123', '0x456']; + const { hook } = arrange(addresses); + expect(hook.result.current.isAnyAccountLoading).toBe(false); + }); + + it('returns correct account loading state', async () => { + const addresses = ['0x123', '0x456']; + const { hook } = arrange(addresses, (m) => { + m.mockUseFetchAccountNotifications.mockReturnValue({ + ...m.createMockUseFetchAccountNotificationsReturn(), + accountsBeingUpdated: ['0x123'], + }); + }); + expect(hook.result.current.isAccountLoading('0x123')).toBe(true); + expect(hook.result.current.isAccountLoading('0x456')).toBe(false); + }); + + it('returns correct account enabled state', async () => { + const addresses = ['0x123', '0x456']; + const { hook } = arrange(addresses, (m) => { + m.mockUseFetchAccountNotifications.mockReturnValue({ + ...m.createMockUseFetchAccountNotificationsReturn(), + data: { '0x123': true, '0x456': false }, + }); + }); + expect(hook.result.current.isAccountEnabled('0x123')).toBe(true); + expect(hook.result.current.isAccountEnabled('0x456')).toBe(false); + }); + + it('refetches account settings', async () => { + const addresses = ['0x123', '0x456']; + const { mocks, hook } = await arrange(addresses); + + // Act + await act(async () => { + await hook.result.current.refetchAccountSettings(); + }); + + await waitFor(() => { + expect(mocks.mockUpdate).toHaveBeenCalledWith(addresses); + }); + }); +}); + +jest.mock('../../../hooks/useAccounts', () => ({ + useAccounts: jest.fn(), +})); + +const arrangeUseAccounts = () => { + const createMockAccounts = (addresses: string[]) => + addresses.map((address) => ({ address })); + + const mockUseAccounts = jest.mocked(useAccounts).mockReturnValue({ + accounts: createMockAccounts(['0x123', '0x456']), + } as MockVar); + + return { + createMockAccounts, + mockUseAccounts, + }; +}; + +describe('useAccountProps', () => { + const arrangeMocks = () => { + const mockStore = jest + .fn() + .mockReturnValue({ settings: { useBlockieIcon: true } }); + + return { + ...arrangeUseAccounts(), + mockStore, + }; + }; + + it('returns correct account props', () => { + const mocks = arrangeMocks(); + const { result } = renderHookWithProvider(() => useAccountProps(), { + state: mocks.mockStore(), + }); + + expect(result.current.accounts).toHaveLength(2); + expect(result.current.accountAvatarType).toBe(AvatarAccountType.Blockies); + expect(result.current.accountAddresses).toEqual(['0x123', '0x456']); + }); +}); diff --git a/app/components/Views/Settings/NotificationsSettings/MainNotificationToggle.hooks.tsx b/app/components/Views/Settings/NotificationsSettings/MainNotificationToggle.hooks.tsx new file mode 100644 index 000000000000..90d7c03b99b7 --- /dev/null +++ b/app/components/Views/Settings/NotificationsSettings/MainNotificationToggle.hooks.tsx @@ -0,0 +1,56 @@ +import { useCallback } from 'react'; + +import { useNavigation } from '@react-navigation/native'; +import { useSelector } from 'react-redux'; +import Routes from '../../../../constants/navigation/Routes'; +import { RootState } from '../../../../reducers'; +import { selectIsProfileSyncingEnabled } from '../../../../selectors/identity'; +import { useNotificationsToggle } from '../../../../util/notifications/hooks/useSwitchNotifications'; +import { MetaMetricsEvents, useMetrics } from '../../../hooks/useMetrics'; + +export function useMainNotificationToggle() { + const { data: currentVal, switchNotifications: onChange } = + useNotificationsToggle(); + const { trackEvent, createEventBuilder } = useMetrics(); + const navigation = useNavigation(); + const basicFunctionalityEnabled = useSelector( + (state: RootState) => state.settings.basicFunctionalityEnabled, + ); + const isProfileSyncingEnabled = useSelector(selectIsProfileSyncingEnabled); + + const onToggle = useCallback(() => { + // Navigate to basic functionality if content is not set. + if (!basicFunctionalityEnabled) { + navigation.navigate(Routes.MODAL.ROOT_MODAL_FLOW, { + screen: Routes.SHEET.BASIC_FUNCTIONALITY, + params: { + caller: Routes.SETTINGS.NOTIFICATIONS, + }, + }); + return; + } + + const newVal = !currentVal; + onChange(newVal); + trackEvent( + createEventBuilder(MetaMetricsEvents.NOTIFICATIONS_SETTINGS_UPDATED) + .addProperties({ + settings_type: 'notifications', + old_value: currentVal, + new_value: newVal, + was_profile_syncing_on: currentVal ? true : isProfileSyncingEnabled, + }) + .build(), + ); + }, [ + basicFunctionalityEnabled, + createEventBuilder, + currentVal, + isProfileSyncingEnabled, + navigation, + onChange, + trackEvent, + ]); + + return { onToggle, value: currentVal }; +} diff --git a/app/components/Views/Settings/NotificationsSettings/MainNotificationToggle.test.tsx b/app/components/Views/Settings/NotificationsSettings/MainNotificationToggle.test.tsx new file mode 100644 index 000000000000..f6f8ebfcd977 --- /dev/null +++ b/app/components/Views/Settings/NotificationsSettings/MainNotificationToggle.test.tsx @@ -0,0 +1,74 @@ +import { fireEvent, render, waitFor } from '@testing-library/react-native'; +import React from 'react'; +import { Linking } from 'react-native'; +import AppConstants from '../../../../core/AppConstants'; +import { + MAIN_NOTIFICATION_TOGGLE_LEARN_MORE_TEST_ID, + MAIN_NOTIFICATION_TOGGLE_SWITCH_TEST_ID, + MAIN_NOTIFICATION_TOGGLE_TEST_ID, + MainNotificationToggle, +} from './MainNotificationToggle'; +// eslint-disable-next-line import/no-namespace +import * as MainNotificationToggleHookModule from './MainNotificationToggle.hooks'; + +const arrangeToggleHook = () => { + const mockOnToggle = jest.fn(); + const mockUseMainNotificationToggle = jest + .spyOn(MainNotificationToggleHookModule, 'useMainNotificationToggle') + .mockReturnValue({ + onToggle: mockOnToggle, + value: true, + }); + + return { + mockOnToggle, + mockUseMainNotificationToggle, + }; +}; + +describe('MainNotificationToggle', () => { + const arrangeMocks = () => { + const mockOpenURL = jest + .spyOn(Linking, 'openURL') + .mockImplementation(jest.fn()); + + return { + ...arrangeToggleHook(), + mockOpenURL, + }; + }; + + it('renders correctly', () => { + arrangeMocks(); + const { getByTestId } = render(<MainNotificationToggle />); + expect(getByTestId(MAIN_NOTIFICATION_TOGGLE_TEST_ID)).toBeTruthy(); + }); + + it('toggles notifications', async () => { + const mocks = arrangeMocks(); + const { getByTestId } = render(<MainNotificationToggle />); + const toggleSwitch = getByTestId(MAIN_NOTIFICATION_TOGGLE_SWITCH_TEST_ID); + + fireEvent(toggleSwitch, 'onChange', { nativeEvent: { value: false } }); + + await waitFor(() => { + expect(mocks.mockOnToggle).toHaveBeenCalled(); + }); + }); + + it('opens learn more link', async () => { + const mocks = arrangeMocks(); + const { getByTestId } = render(<MainNotificationToggle />); + const learnMoreText = getByTestId( + MAIN_NOTIFICATION_TOGGLE_LEARN_MORE_TEST_ID, + ); + + fireEvent.press(learnMoreText); + + await waitFor(() => { + expect(mocks.mockOpenURL).toHaveBeenCalledWith( + AppConstants.URLS.PROFILE_SYNC, + ); + }); + }); +}); diff --git a/app/components/Views/Settings/NotificationsSettings/MainNotificationToggle.tsx b/app/components/Views/Settings/NotificationsSettings/MainNotificationToggle.tsx new file mode 100644 index 000000000000..db6eea9df6af --- /dev/null +++ b/app/components/Views/Settings/NotificationsSettings/MainNotificationToggle.tsx @@ -0,0 +1,68 @@ +import React, { useCallback } from 'react'; +import { useTheme } from '../../../../util/theme'; + +import { Linking, Switch, View } from 'react-native'; +import { strings } from '../../../../../locales/i18n'; +import Text, { + TextColor, + TextVariant, +} from '../../../../component-library/components/Texts/Text'; +import { useStyles } from '../../../../component-library/hooks'; +import AppConstants from '../../../../core/AppConstants'; +import { useMainNotificationToggle } from './MainNotificationToggle.hooks'; +import styleSheet from './NotificationsSettings.styles'; + +export const MAIN_NOTIFICATION_TOGGLE_TEST_ID = 'main-notification-toggle'; +export const MAIN_NOTIFICATION_TOGGLE_SWITCH_TEST_ID = + 'main-notification-toggle--switch'; +export const MAIN_NOTIFICATION_TOGGLE_LEARN_MORE_TEST_ID = + 'main-notification-toggle--learn-more-button'; + +export const MainNotificationToggle = () => { + const theme = useTheme(); + const { styles } = useStyles(styleSheet, { theme }); + + const { onToggle, value } = useMainNotificationToggle(); + + const goToLearnMore = useCallback(() => { + Linking.openURL(AppConstants.URLS.PROFILE_SYNC); + }, []); + + return ( + <> + <View + style={styles.switchElement} + testID={MAIN_NOTIFICATION_TOGGLE_TEST_ID} + > + <Text color={TextColor.Default} variant={TextVariant.BodyLGMedium}> + {strings('app_settings.allow_notifications')} + </Text> + <Switch + value={value} + onChange={onToggle} + trackColor={{ + true: theme.colors.primary.default, + false: theme.colors.border.muted, + }} + thumbColor={theme.brandColors.white} + style={styles.switch} + ios_backgroundColor={theme.colors.border.muted} + testID={MAIN_NOTIFICATION_TOGGLE_SWITCH_TEST_ID} + /> + </View> + <View style={styles.setting}> + <Text color={TextColor.Alternative} variant={TextVariant.BodyMD}> + {strings('app_settings.allow_notifications_desc')}{' '} + <Text + variant={TextVariant.BodyMD} + color={TextColor.Info} + onPress={goToLearnMore} + testID={MAIN_NOTIFICATION_TOGGLE_LEARN_MORE_TEST_ID} + > + {strings('notifications.activation_card.learn_more')} + </Text> + </Text> + </View> + </> + ); +}; diff --git a/app/components/Views/Settings/NotificationsSettings/NotificationOptionToggle/index.tsx b/app/components/Views/Settings/NotificationsSettings/NotificationOptionToggle/index.tsx index d8bae30d30a5..c9014c43cbdc 100644 --- a/app/components/Views/Settings/NotificationsSettings/NotificationOptionToggle/index.tsx +++ b/app/components/Views/Settings/NotificationsSettings/NotificationOptionToggle/index.tsx @@ -1,9 +1,8 @@ -import React, { useCallback } from 'react'; -import { ActivityIndicator, Platform, Switch, View } from 'react-native'; +import React, { useCallback, useState } from 'react'; +import { ActivityIndicator, Switch, View } from 'react-native'; import { useMetrics } from '../../../../../components/hooks/useMetrics'; import { MetaMetricsEvents } from '../../../../../core/Analytics/MetaMetrics.events'; import { createStyles } from './styles'; -import generateTestId from '../../../../../../wdio/utils/generateTestId'; import Text, { TextColor, TextVariant, @@ -23,7 +22,14 @@ import Icon, { IconName, IconSize, } from '../../../../../component-library/components/Icons/Icon'; -import { useUpdateAccountSetting } from '../../../../../util/notifications/hooks/useUpdateAccountSetting'; +import { useAccountNotificationsToggle } from '../../../../../util/notifications/hooks/useSwitchNotifications'; + +export const NOTIFICATION_OPTIONS_TOGGLE_TEST_ID = (testID: string) => + `${testID}:notification_options_toggle`; +export const NOTIFICATION_OPTIONS_TOGGLE_LOADING_TEST_ID = (testID: string) => + `${testID}:notification_options_toggle--loading`; +export const NOTIFICATION_OPTIONS_TOGGLE_SWITCH_TEST_ID = (testID: string) => + `${testID}:notification_options_toggle--switch`; interface NotificationOptionsToggleProps { address: string; @@ -34,9 +40,34 @@ interface NotificationOptionsToggleProps { disabledSwitch?: boolean; isLoading?: boolean; isEnabled: boolean; - updateAndfetchAccountSettings: () => Promise< - Record<string, boolean> | undefined - >; + refetchNotificationAccounts: () => Promise<void>; + testID: string; +} + +export function useUpdateAccountSetting( + address: string, + refetchAccountSettings: () => Promise<void>, +) { + const { onToggle, error } = useAccountNotificationsToggle(); + + // Local states + const [loading, setLoading] = useState(false); + + const toggleAccount = useCallback( + async (state: boolean) => { + setLoading(true); + try { + await onToggle([address], state); + await refetchAccountSettings(); + } catch { + // Do nothing (we don't need to propagate this) + } + setLoading(false); + }, + [address, onToggle, refetchAccountSettings], + ); + + return { toggleAccount, loading, error }; } /** @@ -48,11 +79,11 @@ const NotificationOptionToggle = ({ title, icon, type, - testId, isEnabled, disabledSwitch, isLoading, - updateAndfetchAccountSettings, + refetchNotificationAccounts, + testID, }: NotificationOptionsToggleProps) => { const theme = useTheme(); const { colors } = theme; @@ -61,7 +92,7 @@ const NotificationOptionToggle = ({ const { toggleAccount, loading: isUpdatingAccount } = useUpdateAccountSetting( address, - updateAndfetchAccountSettings, + refetchNotificationAccounts, ); const loading = isLoading || isUpdatingAccount; @@ -80,7 +111,10 @@ const NotificationOptionToggle = ({ }, [isEnabled, toggleAccount, trackEvent, createEventBuilder]); return ( - <View style={styles.container}> + <View + style={styles.container} + testID={NOTIFICATION_OPTIONS_TOGGLE_TEST_ID(testID)} + > {type === NotificationsToggleTypes.ACTIONS && icon ? ( <Icon name={icon as IconName} @@ -111,7 +145,9 @@ const NotificationOptionToggle = ({ </View> <View style={styles.switchElement}> {loading ? ( - <ActivityIndicator /> + <ActivityIndicator + testID={NOTIFICATION_OPTIONS_TOGGLE_LOADING_TEST_ID(testID)} + /> ) : ( <Switch style={styles.switch} @@ -124,7 +160,7 @@ const NotificationOptionToggle = ({ thumbColor={theme.brandColors.white} disabled={disabledSwitch} ios_backgroundColor={colors.border.muted} - {...generateTestId(Platform, testId)} + testID={NOTIFICATION_OPTIONS_TOGGLE_SWITCH_TEST_ID(testID)} /> )} </View> diff --git a/app/components/Views/Settings/NotificationsSettings/PushNotificationToggle.hooks.test.tsx b/app/components/Views/Settings/NotificationsSettings/PushNotificationToggle.hooks.test.tsx new file mode 100644 index 000000000000..a7ee574997ab --- /dev/null +++ b/app/components/Views/Settings/NotificationsSettings/PushNotificationToggle.hooks.test.tsx @@ -0,0 +1,32 @@ +import { renderHook, act } from '@testing-library/react-hooks'; +// eslint-disable-next-line import/no-namespace +import * as PushNotificationsHooks from '../../../../util/notifications/hooks/usePushNotifications'; +import { usePushNotificationSettingsToggle } from './PushNotificationToggle.hooks'; + +describe('usePushNotificationSettingsToggle', () => { + const arrange = () => { + const mockTogglePushNotification = jest.fn(); + + jest + .spyOn(PushNotificationsHooks, 'usePushNotificationsToggle') + .mockReturnValue({ + data: false, + togglePushNotification: mockTogglePushNotification, + loading: false, + }); + + const hook = renderHook(() => usePushNotificationSettingsToggle()); + + return { hook, mockTogglePushNotification }; + }; + + it('toggles the push notification setting', async () => { + const { hook, mockTogglePushNotification } = arrange(); + + await act(async () => { + hook.result.current.onToggle(); + }); + + expect(mockTogglePushNotification).toHaveBeenCalled(); + }); +}); diff --git a/app/components/Views/Settings/NotificationsSettings/PushNotificationToggle.hooks.tsx b/app/components/Views/Settings/NotificationsSettings/PushNotificationToggle.hooks.tsx new file mode 100644 index 000000000000..57d0ff49e31d --- /dev/null +++ b/app/components/Views/Settings/NotificationsSettings/PushNotificationToggle.hooks.tsx @@ -0,0 +1,17 @@ +import { useCallback } from 'react'; +import { usePushNotificationsToggle } from '../../../../util/notifications/hooks/usePushNotifications'; + +export function usePushNotificationSettingsToggle() { + const { data, togglePushNotification, loading } = usePushNotificationsToggle({ + nudgeEnablePush: true, + }); + const onToggle = useCallback( + () => togglePushNotification(!data), + [data, togglePushNotification], + ); + return { + onToggle, + value: data, + loading, + }; +} diff --git a/app/components/Views/Settings/NotificationsSettings/PushNotificationToggle.test.tsx b/app/components/Views/Settings/NotificationsSettings/PushNotificationToggle.test.tsx new file mode 100644 index 000000000000..512c61716149 --- /dev/null +++ b/app/components/Views/Settings/NotificationsSettings/PushNotificationToggle.test.tsx @@ -0,0 +1,90 @@ +import React from 'react'; +import { fireEvent, waitFor } from '@testing-library/react-native'; +// eslint-disable-next-line import/no-namespace +import * as PushNotificationToggleHooksModule from './PushNotificationToggle.hooks'; +import renderWithProvider from '../../../../util/test/renderWithProvider'; +import { + PushNotificationToggle, + PUSH_NOTIFICATION_TOGGLE_TEST_ID, + PUSH_NOTIFICATION_TOGGLE_SWITCH_TEST_ID, +} from './PushNotificationToggle'; +import { strings } from '../../../../../locales/i18n'; + +describe('PushNotificationToggle', () => { + const arrangeMocks = () => { + const mockOnToggle = jest.fn(); + const mockUsePushNotificationSettingsToggle = jest + .spyOn( + PushNotificationToggleHooksModule, + 'usePushNotificationSettingsToggle', + ) + .mockReturnValue({ + value: false, + loading: false, + onToggle: mockOnToggle, + }); + + return { + mockOnToggle, + mockUsePushNotificationSettingsToggle, + }; + }; + + type Mocks = ReturnType<typeof arrangeMocks>; + const arrange = (overrideMocks?: (m: Mocks) => void) => { + const mocks = arrangeMocks(); + overrideMocks?.(mocks); + + const container = renderWithProvider(<PushNotificationToggle />); + + return { mocks, container }; + }; + + it('renders toggle', () => { + const { container } = arrange(); + + // Assert Text + expect( + container.getByText(strings('app_settings.enable_push_notifications')), + ).toBeTruthy(); + + // Assert Toggle + expect( + container.getByTestId(PUSH_NOTIFICATION_TOGGLE_TEST_ID), + ).toBeTruthy(); + }); + + it('is clickable', () => { + const { mocks, container } = arrange(); + + // Assert Toggle State + const switchElement = container.getByTestId( + PUSH_NOTIFICATION_TOGGLE_SWITCH_TEST_ID, + ); + expect(switchElement.props.disabled).toBe(false); + + // Act/Assert - Toggle Clicked + fireEvent(switchElement, 'onChange', { nativeEvent: { value: true } }); + waitFor(() => expect(mocks.mockOnToggle).toHaveBeenCalled()); + }); + + it('is not clickable when loading', () => { + const { mocks, container } = arrange((m) => { + m.mockUsePushNotificationSettingsToggle.mockReturnValue({ + loading: true, // Toggle is Loading + value: false, + onToggle: m.mockOnToggle, + }); + }); + + // Assert Toggle State + const switchElement = container.getByTestId( + PUSH_NOTIFICATION_TOGGLE_SWITCH_TEST_ID, + ); + expect(switchElement.props.disabled).toBe(true); + + // Act/Assert - Toggle Clicked + fireEvent(switchElement, 'valueChange', true); + waitFor(() => expect(mocks.mockOnToggle).not.toHaveBeenCalled()); + }); +}); diff --git a/app/components/Views/Settings/NotificationsSettings/PushNotificationToggle.tsx b/app/components/Views/Settings/NotificationsSettings/PushNotificationToggle.tsx new file mode 100644 index 000000000000..4a919fbcfad5 --- /dev/null +++ b/app/components/Views/Settings/NotificationsSettings/PushNotificationToggle.tsx @@ -0,0 +1,49 @@ +import React from 'react'; +import { useTheme } from '../../../../util/theme'; + +import { Switch, View } from 'react-native'; +import { strings } from '../../../../../locales/i18n'; +import Text, { + TextColor, + TextVariant, +} from '../../../../component-library/components/Texts/Text'; +import { useStyles } from '../../../../component-library/hooks'; +import styleSheet from './NotificationsSettings.styles'; +import { usePushNotificationSettingsToggle } from './PushNotificationToggle.hooks'; + +export const PUSH_NOTIFICATION_TOGGLE_TEST_ID = 'push-notification-toggle'; +export const PUSH_NOTIFICATION_TOGGLE_SWITCH_TEST_ID = + 'push-notification-toggle--switch'; + +export const PushNotificationToggle = () => { + const theme = useTheme(); + const { styles } = useStyles(styleSheet, { theme }); + + const { onToggle, value, loading } = usePushNotificationSettingsToggle(); + + return ( + <> + <View + style={styles.switchElement} + testID={PUSH_NOTIFICATION_TOGGLE_TEST_ID} + > + <Text color={TextColor.Default} variant={TextVariant.BodyLGMedium}> + {strings('app_settings.enable_push_notifications')} + </Text> + <Switch + value={value} + onChange={onToggle} + disabled={loading} + trackColor={{ + true: theme.colors.primary.default, + false: theme.colors.border.muted, + }} + thumbColor={theme.brandColors.white} + style={styles.switch} + ios_backgroundColor={theme.colors.border.muted} + testID={PUSH_NOTIFICATION_TOGGLE_SWITCH_TEST_ID} + /> + </View> + </> + ); +}; diff --git a/app/components/Views/Settings/NotificationsSettings/ResetNotificationsButton.test.tsx b/app/components/Views/Settings/NotificationsSettings/ResetNotificationsButton.test.tsx new file mode 100644 index 000000000000..27d5ee5492ed --- /dev/null +++ b/app/components/Views/Settings/NotificationsSettings/ResetNotificationsButton.test.tsx @@ -0,0 +1,62 @@ +import React from 'react'; +import { + render, + fireEvent, + waitFor, + screen, +} from '@testing-library/react-native'; +import { + RESET_NOTIFICATIONS_BUTTON_TEST_ID, + ResetNotificationsButton, +} from './ResetNotificationsButton'; +import { useNavigation } from '@react-navigation/native'; +import Routes from '../../../../constants/navigation/Routes'; + +// eslint-disable-next-line @typescript-eslint/no-explicit-any +type MockVar = any; + +jest.mock('@react-navigation/native', () => ({ + useNavigation: jest.fn(), +})); + +const arrangeMockNavigation = () => { + const mockNavigate = jest.fn(); + const mockUseNavigation = jest.mocked(useNavigation).mockReturnValue({ + navigate: mockNavigate, + } as MockVar); + + return { + mockNavigate, + mockUseNavigation, + }; +}; + +describe('ResetNotificationsButton', () => { + const arrangeMocks = () => ({ + ...arrangeMockNavigation(), + }); + + it('renders correctly', () => { + arrangeMocks(); + render(<ResetNotificationsButton />); + expect(screen.getByTestId(RESET_NOTIFICATIONS_BUTTON_TEST_ID)).toBeTruthy(); + }); + + it('clicks reset button navigates to modal confirm sheet', async () => { + const mocks = arrangeMocks(); + render(<ResetNotificationsButton />); + const button = screen.getByTestId(RESET_NOTIFICATIONS_BUTTON_TEST_ID); + + fireEvent.press(button); + + await waitFor(() => { + // Assert new switch call + expect(mocks.mockNavigate).toHaveBeenCalledWith( + Routes.MODAL.ROOT_MODAL_FLOW, + { + screen: Routes.SHEET.RESET_NOTIFICATIONS, + }, + ); + }); + }); +}); diff --git a/app/components/Views/Settings/NotificationsSettings/ResetNotificationsButton.tsx b/app/components/Views/Settings/NotificationsSettings/ResetNotificationsButton.tsx new file mode 100644 index 000000000000..fa97cdab940e --- /dev/null +++ b/app/components/Views/Settings/NotificationsSettings/ResetNotificationsButton.tsx @@ -0,0 +1,36 @@ +import { useNavigation } from '@react-navigation/native'; +import React, { useCallback } from 'react'; +import { strings } from '../../../../../locales/i18n'; +import Button, { + ButtonSize, + ButtonVariants, +} from '../../../../component-library/components/Buttons/Button'; +import { useStyles } from '../../../../component-library/hooks'; +import Routes from '../../../../constants/navigation/Routes'; +import { useTheme } from '../../../../util/theme'; +import styleSheet from './NotificationsSettings.styles'; + +export const RESET_NOTIFICATIONS_BUTTON_TEST_ID = 'reset_notifications_button'; + +export const ResetNotificationsButton = () => { + const navigation = useNavigation(); + const theme = useTheme(); + const { styles } = useStyles(styleSheet, { theme }); + + const onPressResetNotifications = useCallback(() => { + navigation.navigate(Routes.MODAL.ROOT_MODAL_FLOW, { + screen: Routes.SHEET.RESET_NOTIFICATIONS, + }); + }, [navigation]); + + return ( + <Button + variant={ButtonVariants.Primary} + label={strings('app_settings.reset_notifications')} + size={ButtonSize.Md} + onPress={onPressResetNotifications} + style={styles.button} + testID={RESET_NOTIFICATIONS_BUTTON_TEST_ID} + /> + ); +}; diff --git a/app/components/Views/Settings/NotificationsSettings/__snapshots__/AccountsList.test.tsx.snap b/app/components/Views/Settings/NotificationsSettings/__snapshots__/AccountsList.test.tsx.snap deleted file mode 100644 index 350243af16af..000000000000 --- a/app/components/Views/Settings/NotificationsSettings/__snapshots__/AccountsList.test.tsx.snap +++ /dev/null @@ -1,520 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`AccountsList matches snapshot 1`] = ` -<View> - <RCTScrollView - data={ - [ - { - "address": "0xC4955C0d639D99699Bfd7Ec54d9FaFEe40e4D272", - "assets": { - "fiatBalance": " -0 ETH", - }, - "balanceError": undefined, - "isSelected": false, - "name": "Account 1", - "type": "HD Key Tree", - "yOffset": 0, - }, - { - "address": "0xC4966c0D659D99699BFD7EB54D8fafEE40e4a756", - "assets": { - "fiatBalance": " -< 0.00001 ETH", - }, - "balanceError": undefined, - "isSelected": true, - "name": "Account 2", - "type": "HD Key Tree", - "yOffset": 78, - }, - ] - } - getItem={[Function]} - getItemCount={[Function]} - keyExtractor={[Function]} - onContentSizeChange={[Function]} - onLayout={[Function]} - onMomentumScrollBegin={[Function]} - onMomentumScrollEnd={[Function]} - onScroll={[Function]} - onScrollBeginDrag={[Function]} - onScrollEndDrag={[Function]} - removeClippedSubviews={false} - renderItem={[Function]} - scrollEventThrottle={50} - stickyHeaderIndices={[]} - viewabilityConfigCallbackPairs={[]} - > - <View> - <View - onFocusCapture={[Function]} - onLayout={[Function]} - style={null} - > - <View - style={ - { - "alignItems": "center", - "flexDirection": "row", - "marginBottom": 24, - } - } - > - <View - style={ - { - "backgroundColor": "#ffffff", - "borderRadius": 16, - "height": 32, - "marginRight": 16, - "overflow": "hidden", - "width": 32, - } - } - > - <View - style={ - [ - { - "overflow": "hidden", - }, - { - "backgroundColor": "#C7144F", - "borderRadius": 16, - "height": 32, - "width": 32, - }, - undefined, - ] - } - > - <RNSVGSvgView - bbHeight={32} - bbWidth={32} - focusable={false} - height={32} - style={ - [ - { - "backgroundColor": "transparent", - "borderWidth": 0, - }, - { - "flex": 0, - "height": 32, - "width": 32, - }, - ] - } - width={32} - > - <RNSVGGroup - fill={ - { - "payload": 4278190080, - "type": 0, - } - } - > - <RNSVGRect - fill={ - { - "payload": 4294711651, - "type": 0, - } - } - height={32} - matrix={ - [ - 0.46329603511986217, - 0.8862035792312145, - -0.8862035792312145, - 0.46329603511986217, - 29.06767649409735, - -8.290603334655817, - ] - } - propList={ - [ - "fill", - ] - } - width={32} - x={0} - y={0} - /> - <RNSVGRect - fill={ - { - "payload": 4280576225, - "type": 0, - } - } - height={32} - matrix={ - [ - -0.5778576243835052, - 0.8161375900801603, - -0.8161375900801603, - -0.5778576243835052, - 51.62016714634118, - 17.239003094412087, - ] - } - propList={ - [ - "fill", - ] - } - width={32} - x={0} - y={0} - /> - <RNSVGRect - fill={ - { - "payload": 4278407261, - "type": 0, - } - } - height={32} - matrix={ - [ - 0.7046342099635947, - -0.7095707365365209, - 0.7095707365365209, - 0.7046342099635947, - -25.225718686778755, - -4.611026307883787, - ] - } - propList={ - [ - "fill", - ] - } - width={32} - x={0} - y={0} - /> - </RNSVGGroup> - </RNSVGSvgView> - </View> - </View> - <View - style={ - { - "alignItems": "flex-start", - "flex": 1, - } - } - > - <Text - accessibilityRole="text" - style={ - { - "color": "#141618", - "flex": 1, - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 16, - "fontWeight": "500", - "letterSpacing": 0, - "lineHeight": 24, - } - } - > - Account 1 - </Text> - <Text - accessibilityRole="text" - style={ - { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, - "fontWeight": "400", - "letterSpacing": 0, - "lineHeight": 22, - } - } - > - 0xc495...d272 - </Text> - </View> - <View - style={ - { - "marginLeft": 16, - } - } - > - <RCTSwitch - accessibilityRole="switch" - disabled={false} - onChange={[Function]} - onResponderTerminationRequest={[Function]} - onStartShouldSetResponder={[Function]} - onTintColor="#0376c9" - style={ - [ - { - "height": 31, - "width": 51, - }, - [ - { - "alignSelf": "flex-start", - }, - { - "backgroundColor": "#BBC0C566", - "borderRadius": 16, - }, - ], - ] - } - thumbTintColor="#ffffff" - tintColor="#BBC0C566" - value={false} - /> - </View> - </View> - </View> - <View - onFocusCapture={[Function]} - onLayout={[Function]} - style={null} - > - <View - style={ - { - "alignItems": "center", - "flexDirection": "row", - "marginBottom": 24, - } - } - > - <View - style={ - { - "backgroundColor": "#ffffff", - "borderRadius": 16, - "height": 32, - "marginRight": 16, - "overflow": "hidden", - "width": 32, - } - } - > - <View - style={ - [ - { - "overflow": "hidden", - }, - { - "backgroundColor": "#FC4800", - "borderRadius": 16, - "height": 32, - "width": 32, - }, - undefined, - ] - } - > - <RNSVGSvgView - bbHeight={32} - bbWidth={32} - focusable={false} - height={32} - style={ - [ - { - "backgroundColor": "transparent", - "borderWidth": 0, - }, - { - "flex": 0, - "height": 32, - "width": 32, - }, - ] - } - width={32} - > - <RNSVGGroup - fill={ - { - "payload": 4278190080, - "type": 0, - } - } - > - <RNSVGRect - fill={ - { - "payload": 4278291575, - "type": 0, - } - } - height={32} - matrix={ - [ - -0.41310442982454204, - -0.910683660806177, - 0.910683660806177, - -0.41310442982454204, - 8.80960563430791, - 40.3361680482215, - ] - } - propList={ - [ - "fill", - ] - } - width={32} - x={0} - y={0} - /> - <RNSVGRect - fill={ - { - "payload": 4278410587, - "type": 0, - } - } - height={32} - matrix={ - [ - 0.903335292863301, - -0.42893513340314526, - 0.42893513340314526, - 0.903335292863301, - -18.594021578605165, - 6.725269324133852, - ] - } - propList={ - [ - "fill", - ] - } - width={32} - x={0} - y={0} - /> - <RNSVGRect - fill={ - { - "payload": 4294382337, - "type": 0, - } - } - height={32} - matrix={ - [ - -0.6921431738704069, - -0.7217602280983622, - 0.7217602280983622, - -0.6921431738704069, - -12.339279260280694, - 30.41598471866334, - ] - } - propList={ - [ - "fill", - ] - } - width={32} - x={0} - y={0} - /> - </RNSVGGroup> - </RNSVGSvgView> - </View> - </View> - <View - style={ - { - "alignItems": "flex-start", - "flex": 1, - } - } - > - <Text - accessibilityRole="text" - style={ - { - "color": "#141618", - "flex": 1, - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 16, - "fontWeight": "500", - "letterSpacing": 0, - "lineHeight": 24, - } - } - > - Account 2 - </Text> - <Text - accessibilityRole="text" - style={ - { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, - "fontWeight": "400", - "letterSpacing": 0, - "lineHeight": 22, - } - } - > - 0xc496...a756 - </Text> - </View> - <View - style={ - { - "marginLeft": 16, - } - } - > - <RCTSwitch - accessibilityRole="switch" - disabled={false} - onChange={[Function]} - onResponderTerminationRequest={[Function]} - onStartShouldSetResponder={[Function]} - onTintColor="#0376c9" - style={ - [ - { - "height": 31, - "width": 51, - }, - [ - { - "alignSelf": "flex-start", - }, - { - "backgroundColor": "#BBC0C566", - "borderRadius": 16, - }, - ], - ] - } - thumbTintColor="#ffffff" - tintColor="#BBC0C566" - value={false} - /> - </View> - </View> - </View> - </View> - </RCTScrollView> -</View> -`; diff --git a/app/components/Views/Settings/NotificationsSettings/__snapshots__/index.test.tsx.snap b/app/components/Views/Settings/NotificationsSettings/__snapshots__/index.test.tsx.snap index 1931ade4828d..0494c97322a0 100644 --- a/app/components/Views/Settings/NotificationsSettings/__snapshots__/index.test.tsx.snap +++ b/app/components/Views/Settings/NotificationsSettings/__snapshots__/index.test.tsx.snap @@ -22,6 +22,7 @@ exports[`NotificationsSettings render matches snapshot 1`] = ` "marginTop": 16, } } + testID="main-notification-toggle" > <Text accessibilityRole="text" @@ -61,6 +62,7 @@ exports[`NotificationsSettings render matches snapshot 1`] = ` ], ] } + testID="main-notification-toggle--switch" thumbTintColor="#ffffff" tintColor="#BBC0C566" value={false} @@ -101,6 +103,7 @@ exports[`NotificationsSettings render matches snapshot 1`] = ` "lineHeight": 22, } } + testID="main-notification-toggle--learn-more-button" > Learn how we protect your privacy while using this feature. </Text> diff --git a/app/components/Views/Settings/NotificationsSettings/index.test.tsx b/app/components/Views/Settings/NotificationsSettings/index.test.tsx index 01dd1d4dce6f..d381e20fb753 100644 --- a/app/components/Views/Settings/NotificationsSettings/index.test.tsx +++ b/app/components/Views/Settings/NotificationsSettings/index.test.tsx @@ -5,22 +5,6 @@ import NotificationsSettings from '.'; import { Props } from './NotificationsSettings.types'; import { MOCK_ACCOUNTS_CONTROLLER_STATE } from '../../../../util/test/accountsControllerTestUtils'; - -let mockGetState: jest.Mock; -jest.mock('../../../../store', () => { - mockGetState = jest.fn(); - mockGetState.mockImplementation(() => ({ - notifications: {}, - })); - - return { - store: { - getState: mockGetState, - dispatch: jest.fn(), - }, - }; -}); - const mockInitialState = { settings: { useBlockieIcon: false, @@ -46,17 +30,17 @@ jest.mock('@react-navigation/native', () => { }; }); -jest.mock('../../../../util/notifications/services/NotificationService', () => ({ - getAllPermissions: jest.fn(), -})); +jest.mock( + '../../../../util/notifications/services/NotificationService', + () => ({ + getAllPermissions: jest.fn(), + }), +); const setOptions = jest.fn(); describe('NotificationsSettings', () => { it('render matches snapshot', () => { - mockGetState.mockImplementation(() => ({ - notifications: {}, - })); const { toJSON } = renderWithProvider( <NotificationsSettings navigation={ diff --git a/app/components/Views/Settings/NotificationsSettings/index.tsx b/app/components/Views/Settings/NotificationsSettings/index.tsx index b7b999043a38..f6b64ed393cb 100644 --- a/app/components/Views/Settings/NotificationsSettings/index.tsx +++ b/app/components/Views/Settings/NotificationsSettings/index.tsx @@ -1,33 +1,19 @@ /* eslint-disable react/display-name */ -import React, { useEffect, useCallback } from 'react'; -import { ScrollView, Switch, View, Linking } from 'react-native'; -import { useSelector } from 'react-redux'; import { NavigationProp, ParamListBase } from '@react-navigation/native'; - -import { RootState } from '../../../../reducers'; +import React, { useEffect } from 'react'; +import { ScrollView } from 'react-native'; +import { useSelector } from 'react-redux'; import { strings } from '../../../../../locales/i18n'; import { useTheme } from '../../../../util/theme'; -import Text, { - TextVariant, - TextColor, -} from '../../../../component-library/components/Texts/Text'; -import { AccountsList } from './AccountsList'; -import { useAccounts } from '../../../../components/hooks/useAccounts'; -import { useMetrics } from '../../../../components/hooks/useMetrics'; -import { AvatarAccountType } from '../../../../component-library/components/Avatars/Avatar'; + +import { useStyles } from '../../../../component-library/hooks'; import { getNavigationOptionsTitle } from '../../../UI/Navbar'; import SwitchLoadingModal from '../../../UI/Notification/SwitchLoadingModal'; +import { AccountsList } from './AccountsList'; import { Props } from './NotificationsSettings.types'; -import { useStyles } from '../../../../component-library/hooks'; -import CustomNotificationsRow from './CustomNotificationsRow'; -import { - selectIsFeatureAnnouncementsEnabled, - selectIsMetamaskNotificationsEnabled, - selectIsUpdatingMetamaskNotificationsAccount, -} from '../../../../selectors/notifications'; -import { selectIsProfileSyncingEnabled } from '../../../../selectors/identity'; +import { selectIsMetamaskNotificationsEnabled } from '../../../../selectors/notifications'; import Routes from '../../../../constants/navigation/Routes'; @@ -35,128 +21,25 @@ import ButtonIcon, { ButtonIconSizes, } from '../../../../component-library/components/Buttons/ButtonIcon'; -import Button, { - ButtonSize, - ButtonVariants, -} from '../../../../component-library/components/Buttons/Button'; - -import SessionHeader from './sectionHeader'; -import { - useDisableNotifications, - useEnableNotifications, -} from '../../../../util/notifications/hooks/useNotifications'; -import { - useAccountSettingsProps, - useSwitchNotifications, -} from '../../../../util/notifications/hooks/useSwitchNotifications'; +import { IconName } from '../../../../component-library/components/Icons/Icon'; +import { useSwitchNotificationLoadingText } from '../../../../util/notifications/hooks/useSwitchNotifications'; +import { FeatureAnnouncementToggle } from './FeatureAnnouncementToggle'; +import { MainNotificationToggle } from './MainNotificationToggle'; import styleSheet, { styles as navigationOptionsStyles, } from './NotificationsSettings.styles'; -import AppConstants from '../../../../core/AppConstants'; -import notificationsRows from './notificationsRows'; -import { IconName } from '../../../../component-library/components/Icons/Icon'; -import { MetaMetricsEvents } from '../../../../core/Analytics/MetaMetrics.events'; -import { useToggleNotifications } from './useToggleNotifications'; - -interface MainNotificationSettingsProps extends Props { - toggleNotificationsEnabled: () => void; - isMetamaskNotificationsEnabled: boolean; - goToLearnMore: () => void; - styles: ReturnType<typeof styleSheet>; -} -const MainNotificationSettings = ({ - styles, - toggleNotificationsEnabled, - isMetamaskNotificationsEnabled, - goToLearnMore, -}: MainNotificationSettingsProps) => { - const { colors, brandColors } = useTheme(); +import { ResetNotificationsButton } from './ResetNotificationsButton'; +import SessionHeader from './sectionHeader'; +import { PushNotificationToggle } from './PushNotificationToggle'; - return ( - <> - <View style={styles.switchElement}> - <Text color={TextColor.Default} variant={TextVariant.BodyLGMedium}> - {strings('app_settings.allow_notifications')} - </Text> - <Switch - value={isMetamaskNotificationsEnabled} - onChange={toggleNotificationsEnabled} - trackColor={{ - true: colors.primary.default, - false: colors.border.muted, - }} - thumbColor={brandColors.white} - style={styles.switch} - ios_backgroundColor={colors.border.muted} - /> - </View> - <View style={styles.setting}> - <Text color={TextColor.Alternative} variant={TextVariant.BodyMD}> - {strings('app_settings.allow_notifications_desc')}{' '} - <Text - variant={TextVariant.BodyMD} - color={TextColor.Info} - onPress={goToLearnMore} - > - {strings('notifications.activation_card.learn_more')} - </Text> - </Text> - </View> - </> - ); -}; const NotificationsSettings = ({ navigation, route }: Props) => { - const { accounts } = useAccounts(); - const { trackEvent, createEventBuilder } = useMetrics(); const theme = useTheme(); const isMetamaskNotificationsEnabled = useSelector( selectIsMetamaskNotificationsEnabled, ); - const isFeatureAnnouncementsEnabled = useSelector( - selectIsFeatureAnnouncementsEnabled, - ); - - const isUpdatingMetamaskNotificationsAccount = useSelector( - selectIsUpdatingMetamaskNotificationsAccount, - ); - const { - enableNotifications, - loading: enableLoading, - error: enablingError, - } = useEnableNotifications(); - - const { - disableNotifications, - loading: disableLoading, - error: disablingError, - } = useDisableNotifications(); - - const { switchFeatureAnnouncements } = useSwitchNotifications(); - const { updateAndfetchAccountSettings } = useAccountSettingsProps(accounts); - - const accountAvatarType = useSelector((state: RootState) => - state.settings.useBlockieIcon - ? AvatarAccountType.Blockies - : AvatarAccountType.JazzIcon, - ); - const basicFunctionalityEnabled = useSelector( - (state: RootState) => state.settings.basicFunctionalityEnabled, - ); - const [uiNotificationStatus, setUiNotificationStatus] = React.useState(false); - const [platformAnnouncementsState, setPlatformAnnouncementsState] = - React.useState(isFeatureAnnouncementsEnabled); - const accountSettingsData = useSelector( - (state: RootState) => state.notifications, - ); - const loading = enableLoading || disableLoading; - const errorText = enablingError || disablingError; - const loadingText = !uiNotificationStatus - ? strings('app_settings.disabling_notifications') - : strings('app_settings.enabling_notifications'); - - const isProfileSyncingEnabled = useSelector(selectIsProfileSyncingEnabled); + const loadingText = useSwitchNotificationLoadingText(); // Params const isFullScreenModal = route?.params?.isFullScreenModal; @@ -164,51 +47,6 @@ const NotificationsSettings = ({ navigation, route }: Props) => { const { colors } = theme; const { styles } = useStyles(styleSheet, { theme }); - /** - * Initializes the notifications feature. - * If the notifications are disabled and the basic functionality is enabled, - * it will request the push notifications permission and enable the notifications - * if the permission is granted. - */ - const { toggleNotificationsEnabled } = useToggleNotifications({ - navigation, - basicFunctionalityEnabled, - isMetamaskNotificationsEnabled, - isProfileSyncingEnabled, - disableNotifications, - enableNotifications, - setUiNotificationStatus, - }); - - const toggleCustomNotificationsEnabled = useCallback(async () => { - setPlatformAnnouncementsState(!platformAnnouncementsState); - await switchFeatureAnnouncements(!platformAnnouncementsState); - trackEvent( - createEventBuilder(MetaMetricsEvents.NOTIFICATIONS_SETTINGS_UPDATED) - .addProperties({ - settings_type: 'product_announcements', - old_value: platformAnnouncementsState, - new_value: !platformAnnouncementsState, - }) - .build(), - ); - }, [ - platformAnnouncementsState, - switchFeatureAnnouncements, - trackEvent, - createEventBuilder, - ]); - - const goToLearnMore = () => { - Linking.openURL(AppConstants.URLS.PROFILE_SYNC); - }; - - const onPressResetNotifications = useCallback(() => { - navigation.navigate(Routes.MODAL.ROOT_MODAL_FLOW, { - screen: Routes.SHEET.RESET_NOTIFICATIONS, - }); - }, [navigation]); - useEffect(() => { navigation.setOptions( getNavigationOptionsTitle( @@ -221,32 +59,18 @@ const NotificationsSettings = ({ navigation, route }: Props) => { ); }, [colors, isFullScreenModal, navigation]); - const renderResetNotificationsBtn = useCallback( - () => ( - <Button - variant={ButtonVariants.Primary} - label={strings('app_settings.reset_notifications')} - size={ButtonSize.Md} - onPress={onPressResetNotifications} - style={styles.button} - /> - ), - [onPressResetNotifications, styles.button], - ); - return ( <ScrollView style={styles.wrapper}> - <MainNotificationSettings - styles={styles} - toggleNotificationsEnabled={toggleNotificationsEnabled} - isMetamaskNotificationsEnabled={isMetamaskNotificationsEnabled} - goToLearnMore={goToLearnMore} - navigation={navigation} - route={route} - /> + {/* Main Toggle */} + <MainNotificationToggle /> + {/* Additional Toggles only visible if main toggle is enabled */} {isMetamaskNotificationsEnabled && ( <> + {/* Push Notifications Toggle */} + <PushNotificationToggle /> + + {/* Feature Announcement Toggle */} <SessionHeader title={strings( 'app_settings.notifications_opts.customize_session_title', @@ -256,12 +80,9 @@ const NotificationsSettings = ({ navigation, route }: Props) => { )} styles={styles} /> - <CustomNotificationsRow - title={notificationsRows[4].title} - icon={notificationsRows[4].icon} - isEnabled={platformAnnouncementsState} - toggleCustomNotificationsEnabled={toggleCustomNotificationsEnabled} - /> + <FeatureAnnouncementToggle /> + + {/* Account Notification Toggles */} <SessionHeader title={strings( 'app_settings.notifications_opts.account_session_title', @@ -271,23 +92,15 @@ const NotificationsSettings = ({ navigation, route }: Props) => { )} styles={styles} /> + <AccountsList /> - <AccountsList - accounts={accounts} - accountAvatarType={accountAvatarType} - accountSettingsData={accountSettingsData} - updateAndfetchAccountSettings={updateAndfetchAccountSettings} - isUpdatingMetamaskNotificationsAccount={ - isUpdatingMetamaskNotificationsAccount - } - /> - {renderResetNotificationsBtn()} + {/* Reset Notifications Button */} + <ResetNotificationsButton /> </> )} <SwitchLoadingModal - loading={loading} - loadingText={loadingText} - error={errorText} + loading={!!loadingText} + loadingText={loadingText ?? ''} /> </ScrollView> ); diff --git a/app/components/Views/Settings/NotificationsSettings/notificationsRows.ts b/app/components/Views/Settings/NotificationsSettings/notificationsRows.ts deleted file mode 100644 index a7ccdbe96dea..000000000000 --- a/app/components/Views/Settings/NotificationsSettings/notificationsRows.ts +++ /dev/null @@ -1,48 +0,0 @@ -import { IconName } from '../../../../component-library/components/Icons/Icon'; -import { strings } from '../../../../../locales/i18n'; - -const notificationsRows = [ - { - icon: IconName.Arrow2Upright, - title: strings(`app_settings.notifications_opts.assets_sent_title`), - description: strings(`app_settings.notifications_opts.assets_sent_desc`), - disabled: true, - value: false, - }, - { - icon: IconName.Received, - title: strings(`app_settings.notifications_opts.assets_received_title`), - description: strings( - `app_settings.notifications_opts.assets_received_desc`, - ), - disabled: true, - value: false, - }, - { - icon: IconName.Plant, - title: strings(`app_settings.notifications_opts.defi_title`), - description: strings(`app_settings.notifications_opts.defi_desc`), - disabled: true, - value: false, - }, - { - icon: IconName.SwapHorizontal, - title: strings(`app_settings.notifications_opts.snaps_title`), - description: strings(`app_settings.notifications_opts.snaps_desc`), - disabled: true, - value: false, - }, - { - icon: IconName.Sparkle, - title: strings( - `app_settings.notifications_opts.products_announcements_title`, - ), - description: strings( - `app_settings.notifications_opts.products_announcements_desc`, - ), - disabled: true, - value: false, - }, -]; - -export default notificationsRows; diff --git a/app/components/Views/Settings/NotificationsSettings/useToggleNotifications.test.tsx b/app/components/Views/Settings/NotificationsSettings/useToggleNotifications.test.tsx deleted file mode 100644 index 54c7addc69b9..000000000000 --- a/app/components/Views/Settings/NotificationsSettings/useToggleNotifications.test.tsx +++ /dev/null @@ -1,125 +0,0 @@ -import { renderHook, act } from '@testing-library/react-hooks'; -import { useToggleNotifications } from './useToggleNotifications'; -import NotificationsService from '../../../../util/notifications/services/NotificationService'; -import Routes from '../../../../constants/navigation/Routes'; -import { NavigationProp, ParamListBase } from '@react-navigation/native'; - -jest.mock( - '../../../../util/notifications/services/NotificationService', - () => ({ - getAllPermissions: jest.fn(), - }), -); - -const mockNavigation = { - navigate: jest.fn(), -} as unknown as NavigationProp<ParamListBase>; - -const mockDisableNotifications = jest.fn(); -const mockEnableNotifications = jest.fn(); -const mockSetUiNotificationStatus = jest.fn(); - -describe('useToggleNotifications', () => { - beforeEach(() => { - jest.clearAllMocks(); - }); - - it('navigates to basic functionality screen if basic functionality is disabled', async () => { - const { result } = renderHook(() => - useToggleNotifications({ - navigation: mockNavigation, - basicFunctionalityEnabled: false, - isMetamaskNotificationsEnabled: false, - isProfileSyncingEnabled: false, - disableNotifications: mockDisableNotifications, - enableNotifications: mockEnableNotifications, - setUiNotificationStatus: mockSetUiNotificationStatus, - }), - ); - - await act(async () => { - await result.current.toggleNotificationsEnabled(); - }); - - expect(mockNavigation.navigate).toHaveBeenCalledWith( - Routes.MODAL.ROOT_MODAL_FLOW, - { - screen: Routes.SHEET.BASIC_FUNCTIONALITY, - params: { - caller: Routes.SETTINGS.NOTIFICATIONS, - }, - }, - ); - }); - - it('switches notifications OFF if notifications previously enabled', async () => { - const { result } = renderHook(() => - useToggleNotifications({ - navigation: mockNavigation, - basicFunctionalityEnabled: true, - isMetamaskNotificationsEnabled: true, - isProfileSyncingEnabled: false, - disableNotifications: mockDisableNotifications, - enableNotifications: mockEnableNotifications, - setUiNotificationStatus: mockSetUiNotificationStatus, - }), - ); - - await act(async () => { - await result.current.toggleNotificationsEnabled(); - }); - - expect(mockDisableNotifications).toHaveBeenCalled(); - expect(mockSetUiNotificationStatus).toHaveBeenCalledWith(false); - }); - - it('switches notifications ON if notifications previously disabled and permission is authorized', async () => { - (NotificationsService.getAllPermissions as jest.Mock).mockResolvedValue({ - permission: 'authorized', - }); - - const { result } = renderHook(() => - useToggleNotifications({ - navigation: mockNavigation, - basicFunctionalityEnabled: true, - isMetamaskNotificationsEnabled: false, - isProfileSyncingEnabled: false, - disableNotifications: mockDisableNotifications, - enableNotifications: mockEnableNotifications, - setUiNotificationStatus: mockSetUiNotificationStatus, - }), - ); - - await act(async () => { - await result.current.toggleNotificationsEnabled(); - }); - - expect(mockEnableNotifications).toHaveBeenCalled(); - expect(mockSetUiNotificationStatus).toHaveBeenCalledWith(true); - }); - - it('switches notifications OFF if device permission is not authorized', async () => { - (NotificationsService.getAllPermissions as jest.Mock).mockResolvedValue({ - permission: 'denied', - }); - - const { result } = renderHook(() => - useToggleNotifications({ - navigation: mockNavigation, - basicFunctionalityEnabled: true, - isMetamaskNotificationsEnabled: false, - isProfileSyncingEnabled: false, - disableNotifications: mockDisableNotifications, - enableNotifications: mockEnableNotifications, - setUiNotificationStatus: mockSetUiNotificationStatus, - }), - ); - - await act(async () => { - await result.current.toggleNotificationsEnabled(); - }); - - expect(mockEnableNotifications).not.toHaveBeenCalled(); - expect(mockSetUiNotificationStatus).not.toHaveBeenCalled(); - }); -}); diff --git a/app/components/Views/Settings/NotificationsSettings/useToggleNotifications.ts b/app/components/Views/Settings/NotificationsSettings/useToggleNotifications.ts deleted file mode 100644 index d60127f96c73..000000000000 --- a/app/components/Views/Settings/NotificationsSettings/useToggleNotifications.ts +++ /dev/null @@ -1,75 +0,0 @@ -import { useCallback } from 'react'; -import { NavigationProp, ParamListBase } from '@react-navigation/native'; -import Routes from '../../../../constants/navigation/Routes'; -import NotificationsService from '../../../../util/notifications/services/NotificationService'; -import { MetaMetricsEvents } from '../../../../core/Analytics/MetaMetrics.events'; -import { useMetrics } from '../../../hooks/useMetrics'; - -interface Props { - navigation: NavigationProp<ParamListBase>; - basicFunctionalityEnabled: boolean; - isMetamaskNotificationsEnabled: boolean; - isProfileSyncingEnabled: boolean | null; - disableNotifications: () => Promise<string | undefined>; - enableNotifications: () => Promise<string | undefined>; - setUiNotificationStatus: (status: boolean) => void; -} - -export function useToggleNotifications({ - navigation, - basicFunctionalityEnabled, - isMetamaskNotificationsEnabled, - isProfileSyncingEnabled, - disableNotifications, - enableNotifications, - setUiNotificationStatus, -}: Props) { - const { trackEvent, createEventBuilder } = useMetrics(); - const toggleNotificationsEnabled = useCallback(async () => { - if (!basicFunctionalityEnabled) { - navigation.navigate(Routes.MODAL.ROOT_MODAL_FLOW, { - screen: Routes.SHEET.BASIC_FUNCTIONALITY, - params: { - caller: Routes.SETTINGS.NOTIFICATIONS, - }, - }); - } else if (isMetamaskNotificationsEnabled) { - disableNotifications(); - setUiNotificationStatus(false); - } else { - const { permission } = await NotificationsService.getAllPermissions( - false, - ); - if (permission !== 'authorized') { - return; - } - - enableNotifications(); - setUiNotificationStatus(true); - } - trackEvent( - createEventBuilder(MetaMetricsEvents.NOTIFICATIONS_SETTINGS_UPDATED) - .addProperties({ - settings_type: 'notifications', - old_value: isMetamaskNotificationsEnabled, - new_value: !isMetamaskNotificationsEnabled, - was_profile_syncing_on: isMetamaskNotificationsEnabled - ? true - : isProfileSyncingEnabled, - }) - .build(), - ); - }, [ - basicFunctionalityEnabled, - isMetamaskNotificationsEnabled, - trackEvent, - isProfileSyncingEnabled, - navigation, - disableNotifications, - setUiNotificationStatus, - enableNotifications, - createEventBuilder, - ]); - - return { toggleNotificationsEnabled }; -} diff --git a/app/components/Views/Settings/PermissionsSettings/PermissionsManager.test.tsx b/app/components/Views/Settings/PermissionsSettings/PermissionsManager.test.tsx new file mode 100644 index 000000000000..769990f7b920 --- /dev/null +++ b/app/components/Views/Settings/PermissionsSettings/PermissionsManager.test.tsx @@ -0,0 +1,62 @@ +import React from 'react'; +import { NavigationProp } from '@react-navigation/native'; +import renderWithProvider from '../../../../util/test/renderWithProvider'; +import PermissionsManager from './PermissionsManager'; +import { strings } from '../../../../../locales/i18n'; +import { SDKSelectorsIDs } from '../../../../../e2e/selectors/Settings/SDK.selectors'; +import { SafeAreaProvider } from 'react-native-safe-area-context'; +import { backgroundState } from '../../../../util/test/initial-root-state'; + +const mockNavigate = jest.fn(); +const mockSetOptions = jest.fn(); + +const mockNavigation = { + navigate: mockNavigate, + setOptions: mockSetOptions, +} as unknown as NavigationProp<{ + [key: string]: object | undefined; +}>; + +jest.mock('react-native-safe-area-context', () => { + const inset = { top: 0, right: 0, bottom: 0, left: 0 }; + const frame = { width: 0, height: 0, x: 0, y: 0 }; + return { + SafeAreaProvider: ({ children }: { children: React.ReactNode }) => children, + SafeAreaConsumer: ({ + children, + }: { + children: (insets: typeof inset) => React.ReactNode; + }) => children(inset), + useSafeAreaInsets: () => inset, + useSafeAreaFrame: () => frame, + }; +}); + +describe('PermissionsManager', () => { + beforeEach(() => { + jest.clearAllMocks(); + }); + + it('should render empty state when no permissions exist', () => { + const { getByText, getByTestId } = renderWithProvider( + <SafeAreaProvider> + <PermissionsManager navigation={mockNavigation} /> + </SafeAreaProvider>, + { + state: { + engine: { + backgroundState, + }, + }, + }, + ); + + expect( + getByTestId(SDKSelectorsIDs.SESSION_MANAGER_CONTAINER), + ).toBeDefined(); + expect(getByText(strings('app_settings.no_permissions'))).toBeDefined(); + expect( + getByText(strings('app_settings.no_permissions_desc')), + ).toBeDefined(); + }); +}); diff --git a/app/components/Views/Settings/SecuritySettings/__snapshots__/SecuritySettings.test.tsx.snap b/app/components/Views/Settings/SecuritySettings/__snapshots__/SecuritySettings.test.tsx.snap index a4b5224776cf..6b8275a07e00 100644 --- a/app/components/Views/Settings/SecuritySettings/__snapshots__/SecuritySettings.test.tsx.snap +++ b/app/components/Views/Settings/SecuritySettings/__snapshots__/SecuritySettings.test.tsx.snap @@ -1774,6 +1774,125 @@ exports[`SecuritySettings should render correctly 1`] = ` </View> </View> </TouchableOpacity> + <TouchableOpacity + avatarProps={ + { + "imageSource": 1, + "name": "Solana Mainnet", + "variant": "Network", + } + } + style={ + { + "backgroundColor": "#ffffff", + "borderColor": "#848c96", + "borderRadius": 4, + "borderWidth": 0, + "padding": 16, + } + } + testID="celldisplay" + title="Solana Mainnet" + > + <View + style={ + { + "flexDirection": "row", + } + } + > + <View + style={ + { + "alignItems": "center", + "backgroundColor": "#ffffff", + "borderRadius": 16, + "height": 32, + "justifyContent": "center", + "marginRight": 16, + "overflow": "hidden", + "width": 32, + } + } + testID="cellbase-avatar" + > + <Image + onError={[Function]} + resizeMode="contain" + source={1} + style={ + { + "height": 32, + "width": 32, + } + } + testID="network-avatar-image" + /> + </View> + <View + style={ + { + "alignItems": "flex-start", + "flex": 1, + } + } + > + <Text + accessibilityRole="text" + numberOfLines={1} + style={ + { + "color": "#141618", + "fontFamily": "EuclidCircularB-Regular", + "fontSize": 16, + "fontWeight": "400", + "letterSpacing": 0, + "lineHeight": 24, + } + } + testID="cellbase-avatar-title" + > + Solana Mainnet + </Text> + </View> + <View + style={ + { + "marginLeft": 16, + } + } + > + <RCTSwitch + accessibilityRole="switch" + onChange={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} + onTintColor="#0376c9" + style={ + [ + { + "height": 31, + "width": 51, + }, + [ + { + "alignSelf": "flex-start", + }, + { + "backgroundColor": "#BBC0C566", + "borderRadius": 16, + }, + ], + ] + } + testID="solana-incoming-transactions-toggle" + thumbTintColor="#ffffff" + tintColor="#BBC0C566" + value={false} + /> + </View> + </View> + </TouchableOpacity> </View> </View> <Modal diff --git a/app/components/Views/Settings/__snapshots__/index.test.tsx.snap b/app/components/Views/Settings/__snapshots__/index.test.tsx.snap index 0d16abf6f880..14152ad89a2a 100644 --- a/app/components/Views/Settings/__snapshots__/index.test.tsx.snap +++ b/app/components/Views/Settings/__snapshots__/index.test.tsx.snap @@ -1,32 +1,1193 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP exports[`Settings should render correctly 1`] = ` -<ContextProvider - value={ +<RCTScrollView + style={ { - "getServerState": undefined, - "noopCheck": "once", - "stabilityCheck": "once", - "store": { - "clearActions": [Function], - "dispatch": [Function], - "getActions": [Function], - "getState": [Function], - "replaceReducer": [Function], - "subscribe": [Function], - }, - "subscription": { - "addNestedSub": [Function], - "getListeners": [Function], - "handleChangeWrapper": [Function], - "isSubscribed": [Function], - "notifyNestedSubs": [Function], - "trySubscribe": [Function], - "tryUnsubscribe": [Function], - }, + "backgroundColor": "#ffffff", + "flex": 1, + "zIndex": 99999999999999, } } + testID="settings-scroll" > - <Settings /> -</ContextProvider> + <View> + <TouchableOpacity + onPress={[Function]} + testID="general-settings" + > + <View + accessibilityRole="none" + accessible={true} + style={ + { + "backgroundColor": "#ffffff", + "padding": 16, + } + } + > + <View + style={ + { + "alignItems": "center", + "flexDirection": "row", + } + } + > + <View + style={ + { + "flex": 1, + } + } + testID="listitemcolumn" + > + <Text + accessibilityRole="text" + style={ + { + "color": "#141618", + "fontFamily": "EuclidCircularB-Medium", + "fontSize": 16, + "fontWeight": "500", + "letterSpacing": 0, + "lineHeight": 24, + } + } + > + General + </Text> + <Text + accessibilityRole="text" + style={ + { + "color": "#6a737d", + "fontFamily": "EuclidCircularB-Regular", + "fontSize": 14, + "fontWeight": "400", + "letterSpacing": 0, + "lineHeight": 22, + } + } + > + Currency conversion, primary currency, language and search engine + </Text> + </View> + <View + accessible={false} + style={ + { + "width": 16, + } + } + testID="listitem-gap" + /> + <View + style={ + { + "flex": -1, + } + } + testID="listitemcolumn" + > + <SvgMock + color="#141618" + height={20} + name="ArrowRight" + style={ + { + "height": 20, + "paddingLeft": 16, + "width": 20, + } + } + width={20} + /> + </View> + </View> + </View> + </TouchableOpacity> + <TouchableOpacity + onPress={[Function]} + testID="security-settings" + > + <View + accessibilityRole="none" + accessible={true} + style={ + { + "backgroundColor": "#ffffff", + "padding": 16, + } + } + > + <View + style={ + { + "alignItems": "center", + "flexDirection": "row", + } + } + > + <View + style={ + { + "flex": 1, + } + } + testID="listitemcolumn" + > + <Text + accessibilityRole="text" + style={ + { + "color": "#141618", + "fontFamily": "EuclidCircularB-Medium", + "fontSize": 16, + "fontWeight": "500", + "letterSpacing": 0, + "lineHeight": 24, + } + } + > + Security & Privacy + </Text> + <Text + accessibilityRole="text" + style={ + { + "color": "#6a737d", + "fontFamily": "EuclidCircularB-Regular", + "fontSize": 14, + "fontWeight": "400", + "letterSpacing": 0, + "lineHeight": 22, + } + } + > + Privacy settings, MetaMetrics, private key and wallet Secret Recovery Phrase + </Text> + </View> + <View + accessible={false} + style={ + { + "width": 16, + } + } + testID="listitem-gap" + /> + <View + style={ + { + "flex": -1, + } + } + testID="listitemcolumn" + > + <SvgMock + color="#141618" + height={20} + name="ArrowRight" + style={ + { + "height": 20, + "paddingLeft": 16, + "width": 20, + } + } + width={20} + /> + </View> + </View> + </View> + </TouchableOpacity> + <TouchableOpacity + onPress={[Function]} + testID="advanced-settings" + > + <View + accessibilityRole="none" + accessible={true} + style={ + { + "backgroundColor": "#ffffff", + "padding": 16, + } + } + > + <View + style={ + { + "alignItems": "center", + "flexDirection": "row", + } + } + > + <View + style={ + { + "flex": 1, + } + } + testID="listitemcolumn" + > + <Text + accessibilityRole="text" + style={ + { + "color": "#141618", + "fontFamily": "EuclidCircularB-Medium", + "fontSize": 16, + "fontWeight": "500", + "letterSpacing": 0, + "lineHeight": 24, + } + } + > + Advanced + </Text> + <Text + accessibilityRole="text" + style={ + { + "color": "#6a737d", + "fontFamily": "EuclidCircularB-Regular", + "fontSize": 14, + "fontWeight": "400", + "letterSpacing": 0, + "lineHeight": 22, + } + } + > + Access developer features, reset account, setup testnets, state logs, IPFS gateway and custom RPC + </Text> + </View> + <View + accessible={false} + style={ + { + "width": 16, + } + } + testID="listitem-gap" + /> + <View + style={ + { + "flex": -1, + } + } + testID="listitemcolumn" + > + <SvgMock + color="#141618" + height={20} + name="ArrowRight" + style={ + { + "height": 20, + "paddingLeft": 16, + "width": 20, + } + } + width={20} + /> + </View> + </View> + </View> + </TouchableOpacity> + <TouchableOpacity + onPress={[Function]} + testID="permissions" + > + <View + accessibilityRole="none" + accessible={true} + style={ + { + "backgroundColor": "#ffffff", + "padding": 16, + } + } + > + <View + style={ + { + "alignItems": "center", + "flexDirection": "row", + } + } + > + <View + style={ + { + "flex": 1, + } + } + testID="listitemcolumn" + > + <Text + accessibilityRole="text" + style={ + { + "color": "#141618", + "fontFamily": "EuclidCircularB-Medium", + "fontSize": 16, + "fontWeight": "500", + "letterSpacing": 0, + "lineHeight": 24, + } + } + > + Permissions + </Text> + <Text + accessibilityRole="text" + style={ + { + "color": "#6a737d", + "fontFamily": "EuclidCircularB-Regular", + "fontSize": 14, + "fontWeight": "400", + "letterSpacing": 0, + "lineHeight": 22, + } + } + > + Manage the permissions given to sites and apps + </Text> + </View> + <View + accessible={false} + style={ + { + "width": 16, + } + } + testID="listitem-gap" + /> + <View + style={ + { + "flex": -1, + } + } + testID="listitemcolumn" + > + <SvgMock + color="#141618" + height={20} + name="ArrowRight" + style={ + { + "height": 20, + "paddingLeft": 16, + "width": 20, + } + } + width={20} + /> + </View> + </View> + </View> + </TouchableOpacity> + <TouchableOpacity + onPress={[Function]} + testID="contacts-settings" + > + <View + accessibilityRole="none" + accessible={true} + style={ + { + "backgroundColor": "#ffffff", + "padding": 16, + } + } + > + <View + style={ + { + "alignItems": "center", + "flexDirection": "row", + } + } + > + <View + style={ + { + "flex": 1, + } + } + testID="listitemcolumn" + > + <Text + accessibilityRole="text" + style={ + { + "color": "#141618", + "fontFamily": "EuclidCircularB-Medium", + "fontSize": 16, + "fontWeight": "500", + "letterSpacing": 0, + "lineHeight": 24, + } + } + > + Contacts + </Text> + <Text + accessibilityRole="text" + style={ + { + "color": "#6a737d", + "fontFamily": "EuclidCircularB-Regular", + "fontSize": 14, + "fontWeight": "400", + "letterSpacing": 0, + "lineHeight": 22, + } + } + > + Add, edit, remove, and manage your accounts + </Text> + </View> + <View + accessible={false} + style={ + { + "width": 16, + } + } + testID="listitem-gap" + /> + <View + style={ + { + "flex": -1, + } + } + testID="listitemcolumn" + > + <SvgMock + color="#141618" + height={20} + name="ArrowRight" + style={ + { + "height": 20, + "paddingLeft": 16, + "width": 20, + } + } + width={20} + /> + </View> + </View> + </View> + </TouchableOpacity> + <TouchableOpacity + onPress={[Function]} + testID="networks-settings" + > + <View + accessibilityRole="none" + accessible={true} + style={ + { + "backgroundColor": "#ffffff", + "padding": 16, + } + } + > + <View + style={ + { + "alignItems": "center", + "flexDirection": "row", + } + } + > + <View + style={ + { + "flex": 1, + } + } + testID="listitemcolumn" + > + <Text + accessibilityRole="text" + style={ + { + "color": "#141618", + "fontFamily": "EuclidCircularB-Medium", + "fontSize": 16, + "fontWeight": "500", + "letterSpacing": 0, + "lineHeight": 24, + } + } + > + Networks + </Text> + <Text + accessibilityRole="text" + style={ + { + "color": "#6a737d", + "fontFamily": "EuclidCircularB-Regular", + "fontSize": 14, + "fontWeight": "400", + "letterSpacing": 0, + "lineHeight": 22, + } + } + > + Add and edit custom RPC networks + </Text> + </View> + <View + accessible={false} + style={ + { + "width": 16, + } + } + testID="listitem-gap" + /> + <View + style={ + { + "flex": -1, + } + } + testID="listitemcolumn" + > + <SvgMock + color="#141618" + height={20} + name="ArrowRight" + style={ + { + "height": 20, + "paddingLeft": 16, + "width": 20, + } + } + width={20} + /> + </View> + </View> + </View> + </TouchableOpacity> + <TouchableOpacity + onPress={[Function]} + > + <View + accessibilityRole="none" + accessible={true} + style={ + { + "backgroundColor": "#ffffff", + "padding": 16, + } + } + > + <View + style={ + { + "alignItems": "center", + "flexDirection": "row", + } + } + > + <View + style={ + { + "flex": 1, + } + } + testID="listitemcolumn" + > + <Text + accessibilityRole="text" + style={ + { + "color": "#141618", + "fontFamily": "EuclidCircularB-Medium", + "fontSize": 16, + "fontWeight": "500", + "letterSpacing": 0, + "lineHeight": 24, + } + } + > + Snaps + </Text> + <Text + accessibilityRole="text" + style={ + { + "color": "#6a737d", + "fontFamily": "EuclidCircularB-Regular", + "fontSize": 14, + "fontWeight": "400", + "letterSpacing": 0, + "lineHeight": 22, + } + } + > + Overview and manage your snaps + </Text> + </View> + <View + accessible={false} + style={ + { + "width": 16, + } + } + testID="listitem-gap" + /> + <View + style={ + { + "flex": -1, + } + } + testID="listitemcolumn" + > + <SvgMock + color="#141618" + height={20} + name="ArrowRight" + style={ + { + "height": 20, + "paddingLeft": 16, + "width": 20, + } + } + width={20} + /> + </View> + </View> + </View> + </TouchableOpacity> + <TouchableOpacity + onPress={[Function]} + testID="on-ramp-settings" + > + <View + accessibilityRole="none" + accessible={true} + style={ + { + "backgroundColor": "#ffffff", + "padding": 16, + } + } + > + <View + style={ + { + "alignItems": "center", + "flexDirection": "row", + } + } + > + <View + style={ + { + "flex": 1, + } + } + testID="listitemcolumn" + > + <Text + accessibilityRole="text" + style={ + { + "color": "#141618", + "fontFamily": "EuclidCircularB-Medium", + "fontSize": 16, + "fontWeight": "500", + "letterSpacing": 0, + "lineHeight": 24, + } + } + > + Buy & Sell Crypto + </Text> + <Text + accessibilityRole="text" + style={ + { + "color": "#6a737d", + "fontFamily": "EuclidCircularB-Regular", + "fontSize": 14, + "fontWeight": "400", + "letterSpacing": 0, + "lineHeight": 22, + } + } + > + Region & more... + </Text> + </View> + <View + accessible={false} + style={ + { + "width": 16, + } + } + testID="listitem-gap" + /> + <View + style={ + { + "flex": -1, + } + } + testID="listitemcolumn" + > + <SvgMock + color="#141618" + height={20} + name="ArrowRight" + style={ + { + "height": 20, + "paddingLeft": 16, + "width": 20, + } + } + width={20} + /> + </View> + </View> + </View> + </TouchableOpacity> + <TouchableOpacity + onPress={[Function]} + testID="experimental-settings" + > + <View + accessibilityRole="none" + accessible={true} + style={ + { + "backgroundColor": "#ffffff", + "padding": 16, + } + } + > + <View + style={ + { + "alignItems": "center", + "flexDirection": "row", + } + } + > + <View + style={ + { + "flex": 1, + } + } + testID="listitemcolumn" + > + <Text + accessibilityRole="text" + style={ + { + "color": "#141618", + "fontFamily": "EuclidCircularB-Medium", + "fontSize": 16, + "fontWeight": "500", + "letterSpacing": 0, + "lineHeight": 24, + } + } + > + Experimental + </Text> + <Text + accessibilityRole="text" + style={ + { + "color": "#6a737d", + "fontFamily": "EuclidCircularB-Regular", + "fontSize": 14, + "fontWeight": "400", + "letterSpacing": 0, + "lineHeight": 22, + } + } + > + WalletConnect & more... + </Text> + </View> + <View + accessible={false} + style={ + { + "width": 16, + } + } + testID="listitem-gap" + /> + <View + style={ + { + "flex": -1, + } + } + testID="listitemcolumn" + > + <SvgMock + color="#141618" + height={20} + name="ArrowRight" + style={ + { + "height": 20, + "paddingLeft": 16, + "width": 20, + } + } + width={20} + /> + </View> + </View> + </View> + </TouchableOpacity> + <TouchableOpacity + onPress={[Function]} + testID="aes-crypto-settings" + > + <View + accessibilityRole="none" + accessible={true} + style={ + { + "backgroundColor": "#ffffff", + "padding": 16, + } + } + > + <View + style={ + { + "alignItems": "center", + "flexDirection": "row", + } + } + > + <View + style={ + { + "flex": 1, + } + } + testID="listitemcolumn" + > + <Text + accessibilityRole="text" + style={ + { + "color": "#141618", + "fontFamily": "EuclidCircularB-Medium", + "fontSize": 16, + "fontWeight": "500", + "letterSpacing": 0, + "lineHeight": 24, + } + } + > + AES Crypto - Test Form + </Text> + <Text + accessibilityRole="text" + style={ + { + "color": "#6a737d", + "fontFamily": "EuclidCircularB-Regular", + "fontSize": 14, + "fontWeight": "400", + "letterSpacing": 0, + "lineHeight": 22, + } + } + > + Section exclusively developed for E2E testing. If this is visible in your app, please report it to MetaMask support. + </Text> + </View> + <View + accessible={false} + style={ + { + "width": 16, + } + } + testID="listitem-gap" + /> + <View + style={ + { + "flex": -1, + } + } + testID="listitemcolumn" + > + <SvgMock + color="#141618" + height={20} + name="ArrowRight" + style={ + { + "height": 20, + "paddingLeft": 16, + "width": 20, + } + } + width={20} + /> + </View> + </View> + </View> + </TouchableOpacity> + <TouchableOpacity + onPress={[Function]} + testID="about-metamask-settings" + > + <View + accessibilityRole="none" + accessible={true} + style={ + { + "backgroundColor": "#ffffff", + "padding": 16, + } + } + > + <View + style={ + { + "alignItems": "center", + "flexDirection": "row", + } + } + > + <View + style={ + { + "flex": 1, + } + } + testID="listitemcolumn" + > + <Text + accessibilityRole="text" + style={ + { + "color": "#141618", + "fontFamily": "EuclidCircularB-Medium", + "fontSize": 16, + "fontWeight": "500", + "letterSpacing": 0, + "lineHeight": 24, + } + } + > + About MetaMask Flask + </Text> + </View> + <View + accessible={false} + style={ + { + "width": 16, + } + } + testID="listitem-gap" + /> + <View + style={ + { + "flex": -1, + } + } + testID="listitemcolumn" + > + <SvgMock + color="#141618" + height={20} + name="ArrowRight" + style={ + { + "height": 20, + "paddingLeft": 16, + "width": 20, + } + } + width={20} + /> + </View> + </View> + </View> + </TouchableOpacity> + <TouchableOpacity + onPress={[Function]} + testID="request-settings" + > + <View + accessibilityRole="none" + accessible={true} + style={ + { + "backgroundColor": "#ffffff", + "padding": 16, + } + } + > + <View + style={ + { + "alignItems": "center", + "flexDirection": "row", + } + } + > + <View + style={ + { + "flex": 1, + } + } + testID="listitemcolumn" + > + <Text + accessibilityRole="text" + style={ + { + "color": "#141618", + "fontFamily": "EuclidCircularB-Medium", + "fontSize": 16, + "fontWeight": "500", + "letterSpacing": 0, + "lineHeight": 24, + } + } + > + Request a feature + </Text> + </View> + </View> + </View> + </TouchableOpacity> + <TouchableOpacity + onPress={[Function]} + testID="contact-settings" + > + <View + accessibilityRole="none" + accessible={true} + style={ + { + "backgroundColor": "#ffffff", + "padding": 16, + } + } + > + <View + style={ + { + "alignItems": "center", + "flexDirection": "row", + } + } + > + <View + style={ + { + "flex": 1, + } + } + testID="listitemcolumn" + > + <Text + accessibilityRole="text" + style={ + { + "color": "#141618", + "fontFamily": "EuclidCircularB-Medium", + "fontSize": 16, + "fontWeight": "500", + "letterSpacing": 0, + "lineHeight": 24, + } + } + > + Contact support + </Text> + </View> + </View> + </View> + </TouchableOpacity> + <TouchableOpacity + onPress={[Function]} + testID="lock-settings" + > + <View + accessibilityRole="none" + accessible={true} + style={ + { + "backgroundColor": "#ffffff", + "padding": 16, + } + } + > + <View + style={ + { + "alignItems": "center", + "flexDirection": "row", + } + } + > + <View + style={ + { + "flex": 1, + } + } + testID="listitemcolumn" + > + <Text + accessibilityRole="text" + style={ + { + "color": "#0376c9", + "fontFamily": "EuclidCircularB-Medium", + "fontSize": 16, + "fontWeight": "500", + "letterSpacing": 0, + "lineHeight": 24, + } + } + > + Lock + </Text> + </View> + </View> + </View> + </TouchableOpacity> + </View> +</RCTScrollView> `; diff --git a/app/components/Views/Settings/index.test.tsx b/app/components/Views/Settings/index.test.tsx index 7e6fba6e9bae..9557c09b963e 100644 --- a/app/components/Views/Settings/index.test.tsx +++ b/app/components/Views/Settings/index.test.tsx @@ -1,13 +1,10 @@ import React from 'react'; -import { shallow } from 'enzyme'; import Settings from './'; -import configureMockStore from 'redux-mock-store'; -import { Provider } from 'react-redux'; + import renderWithProvider from '../../../util/test/renderWithProvider'; import { SettingsViewSelectorsIDs } from '../../../../e2e/selectors/Settings/SettingsView.selectors'; import { backgroundState } from '../../../util/test/initial-root-state'; -const mockStore = configureMockStore(); const initialState = { user: { seedphraseBackedUp: true, passwordSet: true }, privacy: { approvedHosts: [] }, @@ -41,76 +38,96 @@ jest.mock('../../../util/networks', () => ({ isPermissionsSettingsV1Enabled: true, })); -const store = mockStore(initialState); - describe('Settings', () => { it('should render correctly', () => { - const wrapper = shallow( - <Provider store={store}> - <Settings /> - </Provider>, - ); - expect(wrapper).toMatchSnapshot(); + const { toJSON } = renderWithProvider(<Settings />, { + state: initialState, + }); + expect(toJSON()).toMatchSnapshot(); }); it('should render general settings button', () => { - const { getByTestId } = renderWithProvider(<Settings />); + const { getByTestId } = renderWithProvider(<Settings />, { + state: initialState, + }); const generalSettings = getByTestId(SettingsViewSelectorsIDs.GENERAL); expect(generalSettings).toBeDefined(); }); it('should render security settings button', () => { - const { getByTestId } = renderWithProvider(<Settings />); + const { getByTestId } = renderWithProvider(<Settings />, { + state: initialState, + }); const securitySettings = getByTestId(SettingsViewSelectorsIDs.SECURITY); expect(securitySettings).toBeDefined(); }); it('should render advanced settings button', () => { - const { getByTestId } = renderWithProvider(<Settings />); + const { getByTestId } = renderWithProvider(<Settings />, { + state: initialState, + }); const advancedSettings = getByTestId(SettingsViewSelectorsIDs.ADVANCED); expect(advancedSettings).toBeDefined(); }); it('should render contacts settings button', () => { - const { getByTestId } = renderWithProvider(<Settings />); + const { getByTestId } = renderWithProvider(<Settings />, { + state: initialState, + }); const contactsSettings = getByTestId(SettingsViewSelectorsIDs.CONTACTS); expect(contactsSettings).toBeDefined(); }); it('should render network settings button', () => { - const { getByTestId } = renderWithProvider(<Settings />); + const { getByTestId } = renderWithProvider(<Settings />, { + state: initialState, + }); const networksSettings = getByTestId(SettingsViewSelectorsIDs.NETWORKS); expect(networksSettings).toBeDefined(); }); it('should render feature request button', () => { - const { getByTestId } = renderWithProvider(<Settings />); + const { getByTestId } = renderWithProvider(<Settings />, { + state: initialState, + }); const onRampSettings = getByTestId(SettingsViewSelectorsIDs.ON_RAMP); expect(onRampSettings).toBeDefined(); }); it('should render experimental settings button', () => { - const { getByTestId } = renderWithProvider(<Settings />); + const { getByTestId } = renderWithProvider(<Settings />, { + state: initialState, + }); const experimentalSettings = getByTestId( SettingsViewSelectorsIDs.EXPERIMENTAL, ); expect(experimentalSettings).toBeDefined(); }); it('should render about metamask button', () => { - const { getByTestId } = renderWithProvider(<Settings />); + const { getByTestId } = renderWithProvider(<Settings />, { + state: initialState, + }); const aboutMetamask = getByTestId(SettingsViewSelectorsIDs.ABOUT_METAMASK); expect(aboutMetamask).toBeDefined(); }); it('should render request feature button', () => { - const { getByTestId } = renderWithProvider(<Settings />); + const { getByTestId } = renderWithProvider(<Settings />, { + state: initialState, + }); const requestFeature = getByTestId(SettingsViewSelectorsIDs.REQUEST); expect(requestFeature).toBeDefined(); }); it('should render contact support button', () => { - const { getByTestId } = renderWithProvider(<Settings />); + const { getByTestId } = renderWithProvider(<Settings />, { + state: initialState, + }); const contactSupport = getByTestId(SettingsViewSelectorsIDs.CONTACT); expect(contactSupport).toBeDefined(); }); it('should render lock button', () => { - const { getByTestId } = renderWithProvider(<Settings />); + const { getByTestId } = renderWithProvider(<Settings />, { + state: initialState, + }); const lock = getByTestId(SettingsViewSelectorsIDs.LOCK); expect(lock).toBeDefined(); }); it('should render permissions settings button when enabled', () => { - const { getByTestId } = renderWithProvider(<Settings />); + const { getByTestId } = renderWithProvider(<Settings />, { + state: initialState, + }); const permissionsSettings = getByTestId( SettingsViewSelectorsIDs.PERMISSIONS, ); diff --git a/app/components/Views/Settings/index.tsx b/app/components/Views/Settings/index.tsx index 7f62fd0d1bc9..f62d3f57cd97 100644 --- a/app/components/Views/Settings/index.tsx +++ b/app/components/Views/Settings/index.tsx @@ -19,6 +19,7 @@ import { useMetrics } from '../../../components/hooks/useMetrics'; import { isNotificationsFeatureEnabled } from '../../../util/notifications'; import { isTest } from '../../../util/test/utils'; import { isPermissionsSettingsV1Enabled } from '../../../util/networks'; +import { selectIsEvmNetworkSelected } from '../../../selectors/multichainNetworkController'; const createStyles = (colors: Colors) => StyleSheet.create({ @@ -43,6 +44,8 @@ const Settings = () => { (state: any) => state.user.seedphraseBackedUp, ); + const isEvmSelected = useSelector(selectIsEvmNetworkSelected); + const updateNavBar = useCallback(() => { navigation.setOptions( getSettingsNavigationOptions(strings('app_settings.title'), colors), @@ -231,12 +234,14 @@ const Settings = () => { testID={SettingsViewSelectorsIDs.PERMISSIONS} /> )} - <SettingsDrawer - description={strings('app_settings.contacts_desc')} - onPress={onPressContacts} - title={strings('app_settings.contacts_title')} - testID={SettingsViewSelectorsIDs.CONTACTS} - /> + {isEvmSelected && ( + <SettingsDrawer + description={strings('app_settings.contacts_desc')} + onPress={onPressContacts} + title={strings('app_settings.contacts_title')} + testID={SettingsViewSelectorsIDs.CONTACTS} + /> + )} <SettingsDrawer title={strings('app_settings.networks_title')} description={strings('app_settings.networks_desc')} diff --git a/app/components/Views/ShowDisplayMediaNFTSheet/__snapshots__/ShowDisplayNFTMediaSheet.test.tsx.snap b/app/components/Views/ShowDisplayMediaNFTSheet/__snapshots__/ShowDisplayNFTMediaSheet.test.tsx.snap index f032638081c5..e8274f8a2271 100644 --- a/app/components/Views/ShowDisplayMediaNFTSheet/__snapshots__/ShowDisplayNFTMediaSheet.test.tsx.snap +++ b/app/components/Views/ShowDisplayMediaNFTSheet/__snapshots__/ShowDisplayNFTMediaSheet.test.tsx.snap @@ -375,7 +375,7 @@ exports[`ShowNftSheet should render correctly 1`] = ` "borderTopLeftRadius": 8, "borderTopRightRadius": 8, "borderWidth": 1, - "maxHeight": 1314, + "maxHeight": 1334, "overflow": "hidden", "paddingBottom": 0, "shadowColor": "#0000001A", diff --git a/app/components/Views/ShowIpfsGatewaySheet/__snapshots__/ShowIpfsGatewaySheet.test.tsx.snap b/app/components/Views/ShowIpfsGatewaySheet/__snapshots__/ShowIpfsGatewaySheet.test.tsx.snap index 6f2e0bda88f4..35562ce00961 100644 --- a/app/components/Views/ShowIpfsGatewaySheet/__snapshots__/ShowIpfsGatewaySheet.test.tsx.snap +++ b/app/components/Views/ShowIpfsGatewaySheet/__snapshots__/ShowIpfsGatewaySheet.test.tsx.snap @@ -375,7 +375,7 @@ exports[`ShowIpfsGatewaySheet should render correctly 1`] = ` "borderTopLeftRadius": 8, "borderTopRightRadius": 8, "borderWidth": 1, - "maxHeight": 1314, + "maxHeight": 1334, "overflow": "hidden", "paddingBottom": 0, "shadowColor": "#0000001A", diff --git a/app/components/Views/ShowTokenIdSheet/__snapshots__/ShowTokenIdSheet.test.tsx.snap b/app/components/Views/ShowTokenIdSheet/__snapshots__/ShowTokenIdSheet.test.tsx.snap index bf7143b50210..83d4ca4b7173 100644 --- a/app/components/Views/ShowTokenIdSheet/__snapshots__/ShowTokenIdSheet.test.tsx.snap +++ b/app/components/Views/ShowTokenIdSheet/__snapshots__/ShowTokenIdSheet.test.tsx.snap @@ -375,7 +375,7 @@ exports[`ShowTokenId should render correctly 1`] = ` "borderTopLeftRadius": 8, "borderTopRightRadius": 8, "borderWidth": 1, - "maxHeight": 1314, + "maxHeight": 1334, "overflow": "hidden", "paddingBottom": 0, "shadowColor": "#0000001A", diff --git a/app/components/Views/SmartTransactionStatus/SmartTransactionStatus.tsx b/app/components/Views/SmartTransactionStatus/SmartTransactionStatus.tsx index 64a4340dc8d0..d74c2f021e8e 100644 --- a/app/components/Views/SmartTransactionStatus/SmartTransactionStatus.tsx +++ b/app/components/Views/SmartTransactionStatus/SmartTransactionStatus.tsx @@ -14,7 +14,7 @@ import { SmartTransactionStatuses, } from '@metamask/smart-transactions-controller/dist/types'; import { useSelector } from 'react-redux'; -import { selectProviderConfig } from '../../../selectors/networkController'; +import { selectEvmChainId } from '../../../selectors/networkController'; import { useNavigation } from '@react-navigation/native'; import Button, { ButtonVariants, @@ -26,6 +26,7 @@ import LoopingScrollAnimation from './LoopingScrollAnimation'; import { hexToDecimal } from '../../../util/conversions'; import useRemainingTime from './useRemainingTime'; import { ThemeColors } from '@metamask/design-tokens'; +import { selectIsEvmNetworkSelected } from '../../../selectors/multichainNetworkController'; const getPortfolioStxLink = (chainId: Hex, uuid: string) => { const chainIdDec = hexToDecimal(chainId); @@ -253,8 +254,8 @@ const SmartTransactionStatus = ({ onConfirm, }: Props) => { const { status, creationTime, uuid } = smartTransaction; - const providerConfig = useSelector(selectProviderConfig); - + const chainId = useSelector(selectEvmChainId); + const isEvmSelected = useSelector(selectIsEvmNetworkSelected); const navigation = useNavigation(); const { colors } = useTheme(); const styles = createStyles(colors); @@ -313,7 +314,8 @@ const SmartTransactionStatus = ({ }); // Set block explorer link and show explorer on click - const txUrl = getPortfolioStxLink(providerConfig.chainId, uuid); + // TODO: [SOLANA] Smart transactions will support solana? Flagging this revisit this before shipping. + const txUrl = getPortfolioStxLink(chainId, uuid); const onViewTransaction = () => { navigation.navigate('Webview', { @@ -378,7 +380,7 @@ const SmartTransactionStatus = ({ <View style={styles.textWrapper}> {description && <Text style={styles.desc}>{description}</Text>} - {renderViewTransactionLink()} + {isEvmSelected ? renderViewTransactionLink() : null} </View> </View> <LoopingScrollAnimation width={800}> diff --git a/app/components/Views/TransactionsView/__snapshots__/index.test.tsx.snap b/app/components/Views/TransactionsView/__snapshots__/index.test.tsx.snap new file mode 100644 index 000000000000..760e448d4b56 --- /dev/null +++ b/app/components/Views/TransactionsView/__snapshots__/index.test.tsx.snap @@ -0,0 +1,379 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`TransactionsView renders correctly and matches snapshot 1`] = ` +<View + style={ + { + "flex": 1, + } + } +> + <RNCSafeAreaProvider + onInsetsChange={[Function]} + style={ + [ + { + "flex": 1, + }, + undefined, + ] + } + > + <View + collapsable={false} + pointerEvents="box-none" + style={ + { + "zIndex": 1, + } + } + > + <View + accessibilityElementsHidden={false} + importantForAccessibility="auto" + onLayout={[Function]} + pointerEvents="box-none" + style={null} + > + <View + collapsable={false} + pointerEvents="box-none" + style={ + { + "bottom": 0, + "left": 0, + "opacity": 1, + "position": "absolute", + "right": 0, + "top": 0, + "zIndex": 0, + } + } + > + <View + collapsable={false} + style={ + { + "backgroundColor": "rgb(255, 255, 255)", + "borderBottomColor": "rgb(216, 216, 216)", + "flex": 1, + "shadowColor": "rgb(216, 216, 216)", + "shadowOffset": { + "height": 0.5, + "width": 0, + }, + "shadowOpacity": 0.85, + "shadowRadius": 0, + } + } + /> + </View> + <View + collapsable={false} + pointerEvents="box-none" + style={ + { + "height": 64, + "maxHeight": undefined, + "minHeight": undefined, + "opacity": undefined, + "transform": undefined, + } + } + > + <View + pointerEvents="none" + style={ + { + "height": 20, + } + } + /> + <View + pointerEvents="box-none" + style={ + { + "alignItems": "center", + "flex": 1, + "flexDirection": "row", + "justifyContent": "center", + } + } + > + <View + collapsable={false} + pointerEvents="box-none" + style={ + { + "marginHorizontal": 16, + "opacity": 1, + } + } + > + <Text + accessibilityRole="header" + aria-level="1" + collapsable={false} + numberOfLines={1} + onLayout={[Function]} + style={ + { + "color": "rgb(28, 28, 30)", + "fontSize": 17, + "fontWeight": "600", + } + } + > + TransactionsView + </Text> + </View> + </View> + </View> + </View> + </View> + <RNSScreenContainer + onLayout={[Function]} + style={ + { + "flex": 1, + } + } + > + <RNSScreen + activityState={2} + collapsable={false} + gestureResponseDistance={ + { + "bottom": -1, + "end": -1, + "start": -1, + "top": -1, + } + } + pointerEvents="box-none" + style={ + { + "bottom": 0, + "left": 0, + "position": "absolute", + "right": 0, + "top": 0, + } + } + > + <View + collapsable={false} + style={ + { + "opacity": 1, + } + } + /> + <View + accessibilityElementsHidden={false} + closing={false} + gestureVelocityImpact={0.3} + importantForAccessibility="auto" + onClose={[Function]} + onGestureBegin={[Function]} + onGestureCanceled={[Function]} + onGestureEnd={[Function]} + onOpen={[Function]} + onTransition={[Function]} + pointerEvents="box-none" + style={ + [ + { + "overflow": undefined, + }, + { + "bottom": 0, + "left": 0, + "position": "absolute", + "right": 0, + "top": 0, + }, + ] + } + transitionSpec={ + { + "close": { + "animation": "spring", + "config": { + "damping": 500, + "mass": 3, + "overshootClamping": true, + "restDisplacementThreshold": 10, + "restSpeedThreshold": 10, + "stiffness": 1000, + }, + }, + "open": { + "animation": "spring", + "config": { + "damping": 500, + "mass": 3, + "overshootClamping": true, + "restDisplacementThreshold": 10, + "restSpeedThreshold": 10, + "stiffness": 1000, + }, + }, + } + } + > + <View + collapsable={false} + needsOffscreenAlphaCompositing={false} + pointerEvents="box-none" + style={ + { + "flex": 1, + } + } + > + <View + collapsable={false} + onGestureHandlerEvent={[Function]} + onGestureHandlerStateChange={[Function]} + style={ + { + "flex": 1, + "transform": [ + { + "translateX": 0, + }, + { + "translateX": 0, + }, + ], + } + } + > + <View + collapsable={false} + pointerEvents="none" + style={ + { + "backgroundColor": "rgb(242, 242, 242)", + "bottom": 0, + "left": 0, + "position": "absolute", + "shadowColor": "#000", + "shadowOffset": { + "height": 1, + "width": -1, + }, + "shadowOpacity": 0.3, + "shadowRadius": 5, + "top": 0, + "width": 3, + } + } + /> + <View + style={ + [ + { + "flex": 1, + "overflow": "hidden", + }, + [ + { + "backgroundColor": "rgb(242, 242, 242)", + }, + undefined, + ], + ] + } + > + <View + style={ + { + "flex": 1, + "flexDirection": "column-reverse", + } + } + > + <View + style={ + { + "flex": 1, + } + } + > + <View + style={ + { + "flex": 1, + } + } + > + <View + style={ + { + "backgroundColor": "#ffffff", + "flex": 1, + } + } + > + <View + style={ + { + "alignItems": "center", + "justifyContent": "center", + "paddingBottom": 24, + } + } + > + <ActivityIndicator + size="small" + style={ + { + "alignSelf": "center", + } + } + /> + </View> + </View> + <Modal + animationType="none" + deviceHeight={null} + deviceWidth={null} + hardwareAccelerated={false} + hideModalContentWhileAnimating={false} + onBackdropPress={[Function]} + onModalHide={[Function]} + onModalWillHide={[Function]} + onModalWillShow={[Function]} + onRequestClose={[Function]} + onSwipeComplete={[Function]} + panResponderThreshold={4} + scrollHorizontal={false} + scrollOffset={0} + scrollOffsetMax={0} + scrollTo={null} + statusBarTranslucent={false} + supportedOrientations={ + [ + "portrait", + "landscape", + ] + } + swipeDirection="down" + swipeThreshold={100} + transparent={true} + visible={false} + /> + </View> + </View> + </View> + </View> + </View> + </View> + </View> + </RNSScreen> + </RNSScreenContainer> + </RNCSafeAreaProvider> +</View> +`; diff --git a/app/components/Views/TransactionsView/index.js b/app/components/Views/TransactionsView/index.js index b8403b76e4fb..25592c150efe 100644 --- a/app/components/Views/TransactionsView/index.js +++ b/app/components/Views/TransactionsView/index.js @@ -27,12 +27,11 @@ import { selectConversionRate, selectCurrentCurrency, } from '../../../selectors/currencyRateController'; -import { selectAllTokensFlat, selectTokens } from '../../../selectors/tokensController'; +import { selectTokens } from '../../../selectors/tokensController'; import { selectSelectedInternalAccount } from '../../../selectors/accountsController'; import { store } from '../../../store'; import { NETWORK_ID_LOADING } from '../../../core/redux/slices/inpageProvider'; -import { selectPendingSmartTransactionsBySender } from '../../../selectors/smartTransactionsController'; -import { selectNonReplacedTransactions } from '../../../selectors/transactionController'; +import { selectSortedTransactions } from '../../../selectors/transactionController'; import { toChecksumHexAddress } from '@metamask/controller-utils'; const styles = StyleSheet.create({ @@ -108,7 +107,6 @@ const TransactionsView = ({ return filter; }); - const submittedTxsFiltered = submittedTxs.filter(({ txParams }) => { const { from, nonce } = txParams; if (!toLowerCaseEquals(from, selectedAddress)) { @@ -155,8 +153,14 @@ const TransactionsView = ({ so the effect will not be noticeable if the user is in this screen. */ InteractionManager.runAfterInteractions(() => { - const { networkId } = store.getState().inpageProvider; - filterTransactions(networkId); + const state = store.getState(); + const networkId = + state?.engine?.backgroundState?.NetworkController + ?.selectedNetworkClientId; + + if (networkId) { + filterTransactions(networkId); + } }); }, [filterTransactions]); @@ -215,22 +219,12 @@ TransactionsView.propTypes = { const mapStateToProps = (state) => { const chainId = selectChainId(state); - // Remove duplicate confirmed STX - // for replaced txs, only hide the ones that are confirmed - const nonReplacedTransactions = selectNonReplacedTransactions(state); - - const pendingSmartTransactions = - selectPendingSmartTransactionsBySender(state); - return { conversionRate: selectConversionRate(state), currentCurrency: selectCurrentCurrency(state), tokens: selectTokens(state), selectedInternalAccount: selectSelectedInternalAccount(state), - transactions: [ - ...nonReplacedTransactions, - ...pendingSmartTransactions, - ].sort((a, b) => b.time - a.time), + transactions: selectSortedTransactions(state), networkType: selectProviderType(state), chainId, }; diff --git a/app/components/Views/TransactionsView/index.test.tsx b/app/components/Views/TransactionsView/index.test.tsx new file mode 100644 index 000000000000..aed3a75fdacd --- /dev/null +++ b/app/components/Views/TransactionsView/index.test.tsx @@ -0,0 +1,116 @@ +import React from 'react'; +import { act, render } from '@testing-library/react-native'; +import configureMockStore from 'redux-mock-store'; +import { Provider } from 'react-redux'; +import { NavigationContainer } from '@react-navigation/native'; +import { createStackNavigator } from '@react-navigation/stack'; +import TransactionsView from './index'; +import initialRootState from '../../../util/test/initial-root-state'; +import { Store } from 'redux'; + +jest.mock('../../../util/activity', () => ({ + sortTransactions: jest.fn((txs) => txs), + filterByAddressAndNetwork: jest.fn(() => true), +})); + +jest.mock('../../../util/transactions', () => ({ + addAccountTimeFlagFilter: jest.fn(() => false), +})); + +const TRANSACTION_ID_MOCK = '123'; +const Stack = createStackNavigator(); +const mockStore = configureMockStore(); + +jest.mock('../../../core/Engine', () => ({ + context: { + KeyringController: { + getOrAddQRKeyring: jest.fn(), + cancelQRSignRequest: jest.fn().mockResolvedValue(undefined), + state: { + keyrings: [], + }, + }, + }, + controllerMessenger: { + subscribe: jest.fn(), + unsubscribe: jest.fn(), + }, + rejectPendingApproval: jest.fn(), +})); + +describe('TransactionsView', () => { + let store: Store; + + beforeEach(() => { + jest.clearAllMocks(); + store = mockStore({ + ...initialRootState, + transaction: { + id: TRANSACTION_ID_MOCK, + }, + settings: { + primaryCurrency: 'Fiat', + }, + alert: { + isVisible: false, + }, + engine: { + backgroundState: { + ...initialRootState.engine.backgroundState, + AccountsController: { + ...initialRootState.engine.backgroundState.AccountsController, + internalAccounts: { + ...initialRootState.engine.backgroundState.AccountsController + .internalAccounts, + selectedAccount: '30786334-3935-4563-b064-363339643939', + accounts: { + '30786334-3935-4563-b064-363339643939': { + address: '0xc4955c0d639d99699bfd7ec54d9fafee40e4d272', + }, + }, + }, + }, + TokensController: { + ...initialRootState.engine.backgroundState.TokensController, + allTokens: { + ...initialRootState.engine.backgroundState.TokensController + .allTokens, + '0x1': { + '0xc4955c0d639d99699bfd7ec54d9fafee40e4d272': [], + }, + }, + }, + }, + }, + }); + jest.useFakeTimers(); + }); + + afterEach(() => { + jest.runOnlyPendingTimers(); + jest.useRealTimers(); + }); + + it('renders correctly and matches snapshot', async () => { + const component = render( + <Provider store={store}> + <NavigationContainer> + <Stack.Navigator> + <Stack.Screen + name="TransactionsView" + // @ts-expect-error-next-line + component={TransactionsView} + /> + </Stack.Navigator> + </NavigationContainer> + </Provider>, + ); + + // Flush the InteractionManager callback + act(() => { + jest.runAllTimers(); + }); + + expect(component.toJSON()).toMatchSnapshot(); + }); +}); diff --git a/app/components/Views/Wallet/index.tsx b/app/components/Views/Wallet/index.tsx index 1352cd3cab69..3cf56227bccd 100644 --- a/app/components/Views/Wallet/index.tsx +++ b/app/components/Views/Wallet/index.tsx @@ -43,6 +43,7 @@ import { } from '../../../util/networks'; import { selectChainId, + selectEvmNetworkConfigurationsByChainId, selectIsAllNetworks, selectIsPopularNetwork, selectNetworkClientId, @@ -104,8 +105,8 @@ import { import { TokenI } from '../../UI/Tokens/types'; import { Hex } from '@metamask/utils'; import { Token } from '@metamask/assets-controllers'; +import { selectIsEvmNetworkSelected } from '../../../selectors/multichainNetworkController'; ///: BEGIN:ONLY_INCLUDE_IF(keyring-snaps) -import { selectMultichainIsEvm } from '../../../selectors/multichain'; import NonEvmTokens from '../../UI/NonEvmTokens'; ///: END:ONLY_INCLUDE_IF @@ -178,6 +179,9 @@ const Wallet = ({ const { colors } = theme; const networkConfigurations = useSelector(selectNetworkConfigurations); + const evmNetworkConfigurations = useSelector( + selectEvmNetworkConfigurationsByChainId, + ); /** * Object containing the balance of the current selected account @@ -219,7 +223,9 @@ const Wallet = ({ * Provider configuration for the current selected network */ const providerConfig = useSelector(selectProviderConfig); - const prevChainId = usePrevious(providerConfig.chainId); + const chainId = useSelector(selectChainId); + + const prevChainId = usePrevious(chainId); const isDataCollectionForMarketingEnabled = useSelector( (state: RootState) => state.security.dataCollectionForMarketing, @@ -245,10 +251,6 @@ const Wallet = ({ : AvatarAccountType.JazzIcon, ); - ///: BEGIN:ONLY_INCLUDE_IF(keyring-snaps) - const isEvm = useSelector(selectMultichainIsEvm); - ///: END:ONLY_INCLUDE_IF - useEffect(() => { if ( isDataCollectionForMarketingEnabled === null && @@ -320,8 +322,8 @@ const Wallet = ({ ); const readNotificationCount = useSelector(getMetamaskNotificationsReadCount); - const chainId = useSelector(selectChainId); const name = useSelector(selectNetworkName); + const isEvmSelected = useSelector(selectIsEvmNetworkSelected); const networkName = networkConfigurations?.[chainId]?.name ?? name; @@ -340,7 +342,6 @@ const Wallet = ({ isPortfolioViewEnabled() && isAllNetworks && isPopularNetworks ? allDetectedTokens : detectedTokens; - const allNetworks = useSelector(selectNetworkConfigurations); const selectedNetworkClientId = useSelector(selectNetworkClientId); /** @@ -363,14 +364,15 @@ const Wallet = ({ trackEvent( createEventBuilder(MetaMetricsEvents.NETWORK_SELECTOR_PRESSED) .addProperties({ - chain_id: getDecimalChainId(providerConfig.chainId), + chain_id: getDecimalChainId(chainId), }) .build(), ); - }, [navigate, providerConfig.chainId, trackEvent, createEventBuilder]); + }, [navigate, chainId, trackEvent, createEventBuilder]); /** * Handle network filter called when app is mounted and tokenNetworkFilter is empty + * TODO: [SOLANA] Check if this logic supports non evm networks before shipping Solana */ const handleNetworkFilter = useCallback(() => { // TODO: Come back possibly just add the chain id of the eth @@ -401,25 +403,25 @@ const Wallet = ({ * Check to see if we need to show What's New modal */ useEffect(() => { + // TODO: [SOLANA] Revisit this before shipping, we need to check if this logic supports non evm networks const networkOnboarded = getIsNetworkOnboarded( - providerConfig.chainId, + chainId, networkOnboardingState, ); - if ( - wizardStep > 0 || - (!networkOnboarded && prevChainId !== providerConfig.chainId) - ) { + if (wizardStep > 0 || (!networkOnboarded && prevChainId !== chainId)) { // Do not check since it will conflict with the onboarding wizard and/or network onboarding return; } }, [ wizardStep, navigation, - providerConfig.chainId, + chainId, + // TODO: Is this providerConfig.rpcUrl needed in this useEffect dependencies? providerConfig.rpcUrl, networkOnboardingState, prevChainId, + // TODO: Is this accountBalanceByChainId?.balance needed in this useEffect dependencies? accountBalanceByChainId?.balance, ]); @@ -428,7 +430,7 @@ const Wallet = ({ requestAnimationFrame(async () => { const { AccountTrackerController } = Engine.context; - Object.values(networkConfigurations).forEach( + Object.values(evmNetworkConfigurations).forEach( ({ defaultRpcEndpointIndex, rpcEndpoints }) => { AccountTrackerController.refresh( rpcEndpoints[defaultRpcEndpointIndex].networkClientId, @@ -438,7 +440,9 @@ const Wallet = ({ }); }, /* eslint-disable-next-line */ - [navigation, providerConfig.chainId], + // TODO: The need of usage of this chainId as a dependency is not clear, we shouldn't need to refresh the native balances when the chainId changes. Since the pooling is always working in the back. Check with assets team. + // TODO: [SOLANA] Check if this logic supports non evm networks before shipping Solana + [navigation, chainId, evmNetworkConfigurations], ); useEffect(() => { @@ -460,7 +464,6 @@ const Wallet = ({ readNotificationCount, ), ); - /* eslint-disable-next-line */ }, [ selectedInternalAccount, accountName, @@ -489,6 +492,7 @@ const Wallet = ({ const tokensByChainId: Record<Hex, Token[]> = {}; for (const token of currentDetectedTokens) { + // TODO: [SOLANA] Check if this logic supports non evm networks before shipping Solana const tokenChainId: Hex = (token as TokenI & { chainId: Hex }).chainId ?? chainId; @@ -502,7 +506,7 @@ const Wallet = ({ // Process grouped tokens in parallel const importPromises = Object.entries(tokensByChainId).map( async ([networkId, allTokens]) => { - const chainConfig = allNetworks[networkId as Hex]; + const chainConfig = evmNetworkConfigurations[networkId as Hex]; const { defaultRpcEndpointIndex } = chainConfig; const { networkClientId: networkInstanceId } = chainConfig.rpcEndpoints[defaultRpcEndpointIndex]; @@ -537,7 +541,7 @@ const Wallet = ({ // eslint-disable-next-line react-hooks/exhaustive-deps }, [ isTokenDetectionEnabled, - allNetworks, + evmNetworkConfigurations, chainId, currentDetectedTokens, selectedNetworkClientId, @@ -596,7 +600,8 @@ const Wallet = ({ function renderTokensContent(assets: Token[]) { ///: BEGIN:ONLY_INCLUDE_IF(keyring-snaps) - if (!isEvm) { + // TODO: [SOLANA] Consider please reusing the Tokens UI, since it handles portion of the UI already (If not please remove dead code from it) + if (!isEvmSelected) { return ( <ScrollableTabView renderTabBar={renderTabBar} @@ -733,8 +738,8 @@ const Wallet = ({ conversionRate, currentCurrency, contractBalances, + isEvmSelected, ///: BEGIN:ONLY_INCLUDE_IF(keyring-snaps) - isEvm, tokensByChainIdAndAddress, ///: END:ONLY_INCLUDE_IF ]); diff --git a/app/components/Views/WalletActions/WalletActions.test.tsx b/app/components/Views/WalletActions/WalletActions.test.tsx index 9618ce5616fc..d280aa3bab71 100644 --- a/app/components/Views/WalletActions/WalletActions.test.tsx +++ b/app/components/Views/WalletActions/WalletActions.test.tsx @@ -15,7 +15,6 @@ import { expectedUuid2, MOCK_ACCOUNTS_CONTROLLER_STATE, } from '../../../util/test/accountsControllerTestUtils'; -import useStakingChain from '../../UI/Stake/hooks/useStakingChain'; import Engine from '../../../core/Engine'; import { isStablecoinLendingFeatureEnabled } from '../../UI/Stake/constants'; @@ -28,14 +27,11 @@ jest.mock('../../../core/Engine', () => ({ NetworkController: { setActiveNetwork: jest.fn(), }, + MultichainNetworkController: { + setActiveNetwork: jest.fn(), + }, }, })); -jest.mock('../../../components/UI/Stake/hooks/useStakingChain', () => ({ - __esModule: true, - default: jest.fn().mockReturnValue({ - isStakingSupportedChain: true, - }), -})); const mockInitialState: DeepPartial<RootState> = { swaps: { '0x1': { isLive: true }, hasOnboarded: false, isLive: true }, @@ -207,6 +203,7 @@ describe('WalletActions', () => { expect(mockNavigate).toHaveBeenCalled(); }); + it('should call the goToSwaps function when the Swap button is pressed', () => { const { getByTestId } = renderWithProvider(<WalletActions />, { state: mockInitialState, @@ -218,6 +215,7 @@ describe('WalletActions', () => { expect(mockNavigate).toHaveBeenCalled(); }); + it('should call the goToBridge function when the Bridge button is pressed', () => { const { getByTestId } = renderWithProvider(<WalletActions />, { state: mockInitialState, @@ -229,6 +227,7 @@ describe('WalletActions', () => { expect(mockNavigate).toHaveBeenCalled(); }); + it('should call the onEarn function when the Earn button is pressed', () => { (isStablecoinLendingFeatureEnabled as jest.Mock).mockReturnValue(true); const { getByTestId } = renderWithProvider(<WalletActions />, { @@ -241,27 +240,12 @@ describe('WalletActions', () => { expect(mockNavigate).toHaveBeenCalled(); expect( - Engine.context.NetworkController.setActiveNetwork, + Engine.context.MultichainNetworkController.setActiveNetwork, ).not.toHaveBeenCalled(); }); - it('should switch to mainnet when onEarn called on unsupported staking network', () => { - (isStablecoinLendingFeatureEnabled as jest.Mock).mockReturnValue(true); - (useStakingChain as jest.Mock).mockReturnValue({ - isStakingSupportedChain: false, - }); - const { getByTestId } = renderWithProvider(<WalletActions />, { - state: mockInitialState, - }); - - fireEvent.press( - getByTestId(WalletActionsBottomSheetSelectorsIDs.EARN_BUTTON), - ); - expect( - Engine.context.NetworkController.setActiveNetwork, - ).toHaveBeenCalledWith('mainnet'); - }); it('disables action buttons when the account cannot sign transactions', () => { + (isStablecoinLendingFeatureEnabled as jest.Mock).mockReturnValue(true); const mockStateWithoutSigning: DeepPartial<RootState> = { ...mockInitialState, engine: { diff --git a/app/components/Views/WalletActions/WalletActions.tsx b/app/components/Views/WalletActions/WalletActions.tsx index 54ff78139c4e..a29fe17d77a4 100644 --- a/app/components/Views/WalletActions/WalletActions.tsx +++ b/app/components/Views/WalletActions/WalletActions.tsx @@ -40,21 +40,18 @@ import { } from '../../UI/Ramp/routes/utils'; import { selectCanSignTransactions } from '../../../selectors/accountsController'; import { WalletActionType } from '../../UI/WalletAction/WalletAction.types'; -import Engine from '../../../core/Engine'; -import useStakingChain from '../../UI/Stake/hooks/useStakingChain'; import { isStablecoinLendingFeatureEnabled } from '../../UI/Stake/constants'; +import { EVENT_LOCATIONS as STAKE_EVENT_LOCATIONS } from '../../UI/Stake/constants/events'; const WalletActions = () => { const { styles } = useStyles(styleSheet, {}); const sheetRef = useRef<BottomSheetRef>(null); const { navigate } = useNavigation(); - const goToBridge = useGoToBridge('TabBar'); const chainId = useSelector(selectChainId); const ticker = useSelector(selectTicker); const swapsIsLive = useSelector(swapsLivenessSelector); const dispatch = useDispatch(); - const { isStakingSupportedChain } = useStakingChain(); const [isNetworkRampSupported] = useRampNetwork(); const { trackEvent, createEventBuilder } = useMetrics(); @@ -93,18 +90,17 @@ const WalletActions = () => { ]); const onEarn = useCallback(async () => { - if (!isStakingSupportedChain) { - await Engine.context.NetworkController.setActiveNetwork('mainnet'); - } - closeBottomSheetAndNavigate(() => { - navigate('StakeScreens', { screen: Routes.STAKING.STAKE }); + navigate('StakeModals', { + screen: Routes.STAKING.MODALS.EARN_TOKEN_LIST, + }); }); + trackEvent( createEventBuilder(MetaMetricsEvents.EARN_BUTTON_CLICKED) .addProperties({ text: 'Earn', - location: 'TabBar', + location: STAKE_EVENT_LOCATIONS.WALLET_ACTIONS_BOTTOM_SHEET, chain_id_destination: getDecimalChainId(chainId), }) .build(), @@ -115,7 +111,6 @@ const WalletActions = () => { chainId, createEventBuilder, trackEvent, - isStakingSupportedChain, ]); const onBuy = useCallback(() => { @@ -217,6 +212,41 @@ const WalletActions = () => { createEventBuilder, ]); + const handleBridgeNavigation = useCallback(() => { + closeBottomSheetAndNavigate(() => { + navigate('Bridge', { + screen: 'BridgeView', + params: { + sourceToken: swapsUtils.NATIVE_SWAPS_TOKEN_ADDRESS, + sourcePage: 'MainView', + }, + }); + }); + + trackEvent( + createEventBuilder(MetaMetricsEvents.SWAP_BUTTON_CLICKED) + .addProperties({ + text: 'Bridge', + tokenSymbol: '', + location: 'TabBar', + chain_id: getDecimalChainId(chainId), + }) + .build(), + ); + }, [ + closeBottomSheetAndNavigate, + navigate, + trackEvent, + chainId, + createEventBuilder, + ]); + + const goToPortfolioBridge = useGoToBridge('TabBar'); + + const goToBridge = process.env.MM_BRIDGE_UI_ENABLED === 'true' + ? handleBridgeNavigation + : goToPortfolioBridge; + const sendIconStyle = useMemo( () => ({ transform: [{ rotate: '-45deg' }], @@ -250,18 +280,17 @@ const WalletActions = () => { disabled={!canSignTransactions} /> )} - {AppConstants.SWAPS.ACTIVE && - isSwapsAllowed(chainId) && ( - <WalletAction - actionType={WalletActionType.Swap} - iconName={IconName.SwapHorizontal} - onPress={goToSwaps} - actionID={WalletActionsBottomSheetSelectorsIDs.SWAP_BUTTON} - iconStyle={styles.icon} - iconSize={AvatarSize.Md} - disabled={!canSignTransactions || !swapsIsLive} - /> - )} + {AppConstants.SWAPS.ACTIVE && isSwapsAllowed(chainId) && ( + <WalletAction + actionType={WalletActionType.Swap} + iconName={IconName.SwapHorizontal} + onPress={goToSwaps} + actionID={WalletActionsBottomSheetSelectorsIDs.SWAP_BUTTON} + iconStyle={styles.icon} + iconSize={AvatarSize.Md} + disabled={!canSignTransactions || !swapsIsLive} + /> + )} {isBridgeAllowed(chainId) && ( <WalletAction actionType={WalletActionType.Bridge} diff --git a/app/components/Views/confirmations/AlertSystem/AlertModal/AlertModal.styles.ts b/app/components/Views/confirmations/AlertSystem/AlertModal/AlertModal.styles.ts new file mode 100644 index 000000000000..79da45638bae --- /dev/null +++ b/app/components/Views/confirmations/AlertSystem/AlertModal/AlertModal.styles.ts @@ -0,0 +1,75 @@ +import { StyleSheet } from 'react-native'; + +import { Theme } from '../../../../../util/theme/models'; +import Device from '../../../../../util/device'; + +const styleSheet = (params: { + theme: Theme; +}) => { + const { + theme, + } = params; + + return StyleSheet.create({ + modalContainer: { + backgroundColor: theme.colors.background.default, + borderTopLeftRadius: 8, + borderTopRightRadius: 8, + paddingBottom: Device.isIphoneX() ? 20 : 0, + alignItems: 'center', + paddingLeft: 16, + paddingRight: 16, + paddingTop: 16, + }, + content: { + padding: 12, + backgroundColor: theme.colors.error.muted, + borderRadius: 8, + marginVertical: 8, + }, + headerContainer: { + paddingTop: 12, + }, + footerButton: { + flex: 1, + }, + buttonsContainer: { + flexDirection: 'row', + paddingVertical: 16, + }, + headerText: { + fontSize: 16, + fontWeight: 'bold', + textAlign: 'center', + marginBottom: 16, + }, + message:{ + textAlign: 'left', + }, + detailsText: { + paddingLeft: 16, + }, + checkboxContainer: { + marginTop: 8, + backgroundColor: theme.colors.error.muted, + borderRadius: 8, + marginVertical: 8, + padding: 12, + minHeight: 63, + }, + checkboxLabel: { + flex: 1, + flexWrap: 'wrap', + alignItems: 'flex-start', + }, + iconWrapper: { + justifyContent: 'center', + alignItems: 'center', + }, + buttonDivider: { + width: 8, + }, + }); +}; + +export default styleSheet; diff --git a/app/components/Views/confirmations/AlertSystem/AlertModal/AlertModal.test.tsx b/app/components/Views/confirmations/AlertSystem/AlertModal/AlertModal.test.tsx new file mode 100644 index 000000000000..fe0b28e05df0 --- /dev/null +++ b/app/components/Views/confirmations/AlertSystem/AlertModal/AlertModal.test.tsx @@ -0,0 +1,214 @@ +import React from 'react'; +import { render, fireEvent, act } from '@testing-library/react-native'; +import { useAlerts } from '../context'; +import AlertModal from './AlertModal'; +import { IconName } from '../../../../../component-library/components/Icons/Icon'; +import Text from '../../../../../component-library/components/Texts/Text'; +import { Severity } from '../../types/alerts'; +import { useAlertsConfirmed } from '../../../../hooks/useAlertsConfirmed'; + +jest.mock('../../../../../util/theme', () => ({ + useTheme: jest.fn(), +})); + +jest.mock('../context', () => ({ + useAlerts: jest.fn(), +})); + +jest.mock('../../../../hooks/useAlertsConfirmed', () => ({ + useAlertsConfirmed: jest.fn(), +})); + +const ALERT_MESSAGE_MOCK = 'This is a test alert message.'; +const ALERT_DETAILS_MOCK = ['Detail 1', 'Detail 2']; +const ALERT_ACTION_MOCK = { label: 'Action 1', callback: jest.fn() }; +const CHECKBOX_LABEL = 'I have acknowledged the risk and still want to proceed'; + +const mockAlerts = [ + { + key: 'alert1', + title: 'Test Alert', + message: ALERT_MESSAGE_MOCK, + severity: Severity.Warning, + alertDetails: ALERT_DETAILS_MOCK, + action: ALERT_ACTION_MOCK, + field: 'To', + }, + { + key: 'alert2', + title: 'Test Alert 2', + message: ALERT_MESSAGE_MOCK, + severity: Severity.Danger, + alertDetails: ALERT_DETAILS_MOCK, + action: ALERT_ACTION_MOCK, + field: 'From', + }, + { + key: 'alert3', + title: 'Test Alert 3', + message: ALERT_MESSAGE_MOCK, + severity: Severity.Info, + alertDetails: ALERT_DETAILS_MOCK, + field: 'Subject', + }, +]; + +describe('AlertModal', () => { + const baseMockUseAlerts = { + alerts: mockAlerts, + fieldAlerts: mockAlerts, + hideAlertModal: jest.fn(), + alertModalVisible: true, + }; + + const baseMockUseAlertsConfirmed = { + alertKey: 'alert1', + isAlertConfirmed: jest.fn().mockReturnValue(false), + setAlertConfirmed: jest.fn(), + setAlertKey: jest.fn(), + unconfirmedDangerAlerts: [], + unconfirmedFieldDangerAlerts: [], + hasUnconfirmedDangerAlerts: false, + hasUnconfirmedFieldDangerAlerts: false, + }; + + beforeEach(() => { + (useAlerts as jest.Mock).mockReturnValue(baseMockUseAlerts); + (useAlertsConfirmed as jest.Mock).mockReturnValue(baseMockUseAlertsConfirmed); + jest.clearAllMocks(); + }); + + it('renders the AlertModal correctly', async () => { + const { getByText } = render(<AlertModal />); + expect(getByText('Test Alert')).toBeDefined(); + expect(getByText(ALERT_MESSAGE_MOCK)).toBeDefined(); + expect(getByText('Alert Details')).toBeDefined(); + expect(getByText('• Detail 1')).toBeDefined(); + expect(getByText('• Detail 2')).toBeDefined(); + }); + + it('renders the correct icon based on severity', async () => { + const { getByTestId } = render(<AlertModal />); + const icon = getByTestId('alert-modal-icon'); + expect(icon).toBeDefined(); + expect(icon.props.name).toBe(IconName.Danger); + + (useAlertsConfirmed as jest.Mock).mockReturnValue({ + ...baseMockUseAlertsConfirmed, + alertKey: 'alert3', // Info + }); + const { getByTestId: getByTestIdInfo } = render(<AlertModal />); + const iconInfo = getByTestIdInfo('alert-modal-icon'); + expect(iconInfo.props.name).toBe(IconName.Info); + }); + + it('handles checkbox click correctly', async () => { + (useAlertsConfirmed as jest.Mock).mockReturnValue({ + ...baseMockUseAlertsConfirmed, + alertKey: 'alert2', + }); + const setAlertConfirmed = jest.fn(); + (useAlertsConfirmed as jest.Mock).mockReturnValueOnce({ + ...baseMockUseAlertsConfirmed, + setAlertConfirmed, + alertKey: 'alert2', + }); + + const { getByText } = render(<AlertModal />); + + const checkbox = getByText(CHECKBOX_LABEL); + + await act(async () => { + fireEvent.press(checkbox); + }); + expect(setAlertConfirmed).toHaveBeenCalledWith('alert2', true); + }); + + it('handles action button clicks correctly', async () => { + const hideAlertModal = jest.fn(); + const action1Callback = jest.fn(); + + (useAlerts as jest.Mock).mockReturnValue({ + ...baseMockUseAlerts, + hideAlertModal, + fieldAlerts: [{ + ...mockAlerts[0], + action: { ...ALERT_ACTION_MOCK, callback: action1Callback }, + }] + }); + + const { getByText } = render(<AlertModal />); + const actionButton1 = getByText('Action 1'); + + await act(async () => { + fireEvent.press(actionButton1); + }); + expect(action1Callback).toHaveBeenCalled(); + expect(hideAlertModal).toHaveBeenCalled(); + }); + + it('closes modal when `Got It` button pressed', async () => { + const hideAlertModal = jest.fn(); + (useAlerts as jest.Mock).mockReturnValue({ + ...baseMockUseAlerts, + hideAlertModal, + }); + const { getByText } = render(<AlertModal />); + await act(async () => { + fireEvent.press(getByText('Got it')); + }); + expect(hideAlertModal).toHaveBeenCalledTimes(1); + }); + + it('returns null if the alert modal is not visible', async () => { + (useAlerts as jest.Mock).mockReturnValue({ + ...baseMockUseAlerts, + alertModalVisible: false, + }); + + const { queryByText } = render(<AlertModal />); + expect(queryByText('Test Alert')).toBeNull(); + }); + + it('does not render the checkbox if the severity is not Danger', () => { + (useAlertsConfirmed as jest.Mock).mockReturnValue({ + ...baseMockUseAlertsConfirmed, + alertKey: 'alert1', + }); + const { queryByText } = render(<AlertModal />); + expect(queryByText(CHECKBOX_LABEL)).toBeNull(); + }); + + it('renders checkbox if the severity is Danger', async () => { + (useAlertsConfirmed as jest.Mock).mockReturnValue({ + ...baseMockUseAlertsConfirmed, + alertKey: 'alert2', + }); + const { queryByText } = render(<AlertModal />); + expect(queryByText(CHECKBOX_LABEL)).toBeDefined(); + }); + + it('renders content component correctly', async () => { + (useAlerts as jest.Mock).mockReturnValue({ + ...baseMockUseAlerts, + fieldAlerts: [{ + ...mockAlerts[0], + content: <Text>{'Mock content'}</Text>, + }] + }); + const { getByText } = render(<AlertModal />); + expect(getByText('Mock content')).toBeDefined(); + }); + + it('does not render checkbox if is a blocking alert', async () => { + (useAlerts as jest.Mock).mockReturnValue({ + ...baseMockUseAlerts, + fieldAlerts: [{ + ...mockAlerts[0], + isBlocking: true, + }] + }); + const { queryByText } = render(<AlertModal />); + expect(queryByText(CHECKBOX_LABEL)).toBeNull(); + }); +}); diff --git a/app/components/Views/confirmations/AlertSystem/AlertModal/AlertModal.tsx b/app/components/Views/confirmations/AlertSystem/AlertModal/AlertModal.tsx new file mode 100755 index 000000000000..266b6355012b --- /dev/null +++ b/app/components/Views/confirmations/AlertSystem/AlertModal/AlertModal.tsx @@ -0,0 +1,211 @@ +import React, { useCallback } from 'react'; +import { View, ViewStyle } from 'react-native'; +import { useTheme } from '../../../../../util/theme'; +import { useAlerts } from '../context'; +import BottomModal from '../../components/UI/BottomModal'; +import Button, { ButtonSize, ButtonVariants, ButtonWidthTypes } from '../../../../../component-library/components/Buttons/Button'; +import Checkbox from '../../../../../component-library/components/Checkbox'; +import Icon, { IconName, IconSize } from '../../../../../component-library/components/Icons/Icon'; +import Text, { TextVariant } from '../../../../../component-library/components/Texts/Text'; +import { ThemeColors } from '@metamask/design-tokens'; +import { useStyles } from '../../../../hooks/useStyles'; +import styleSheet from './AlertModal.styles'; +import { strings } from '../../../../../../locales/i18n'; +import { Alert, Severity } from '../../types/alerts'; +import { useAlertsConfirmed } from '../../../../hooks/useAlertsConfirmed'; + +const getSeverityStyle = (severity: Severity, colors: ThemeColors) => { + switch (severity) { + case Severity.Warning: + return { + background: colors.warning.muted, + icon: colors.warning.default, + }; + case Severity.Danger: + return { + background: colors.error.muted, + icon: colors.error.default, + }; + default: + return { + background: colors.background.default, + icon: colors.info.default, + }; + } +}; + +interface HeaderProps { + iconColor: string; + selectedAlert: Alert; + styles: Record<string, ViewStyle>; +} + +const Header: React.FC<HeaderProps> = ({ selectedAlert, iconColor, styles }) => ( + <> + <View style={styles.iconWrapper}> + <Icon + name={selectedAlert.severity === Severity.Info ? IconName.Info : IconName.Danger} + size={IconSize.Xl} + color={iconColor} + testID="alert-modal-icon" + /> + </View> + <View style={styles.headerContainer}> + <Text style={styles.headerText} variant={TextVariant.BodyMDBold}> + {selectedAlert.title ?? strings('alert_system.alert_modal.title')} + </Text> + </View> + </> +); + +interface ContentProps { + backgroundColor: string; + selectedAlert: Alert; + styles: Record<string, ViewStyle>; +} + +const Content: React.FC<ContentProps> = ({ backgroundColor, selectedAlert, styles }) => ( + <View style={[styles.content, {backgroundColor}]}> + {selectedAlert.content ?? ( + <> + <Text style={styles.message}>{selectedAlert.message}</Text> + <Text style={styles.message} variant={TextVariant.BodyMDBold}> + {strings('alert_system.alert_modal.alert_details')} + </Text> + {selectedAlert.alertDetails?.map((detail, index) => ( + <Text key={`details-${index}`} style={styles.detailsText} variant={TextVariant.BodyMD}> + {'• ' + detail} + </Text> + ))} + </> + )} + </View> +); + +interface CheckboxProps { + isConfirmed: boolean; + onCheckboxClick: (isConfirmed: boolean) => void; + selectedAlert: Alert; + styles: Record<string, ViewStyle>; +} + +const AlertCheckbox: React.FC<CheckboxProps> = ({ selectedAlert, isConfirmed, onCheckboxClick, styles }) => { + if (selectedAlert.severity !== Severity.Danger || selectedAlert.isBlocking) { + return null; + } + + return ( + <View style={styles.checkboxContainer}> + <Checkbox + isChecked={isConfirmed} + onPress={() => onCheckboxClick(isConfirmed)} + label={strings('alert_system.alert_modal.checkbox_label')} + style={styles.checkboxLabel} + /> + </View> + ); +}; + +interface ButtonsProps { + action?: { label: string; callback: () => void }; + hideAlertModal: () => void; + onHandleActionClick: (callback: () => void) => void; + styles: Record<string, ViewStyle>; +} + +const Buttons: React.FC<ButtonsProps> = ({ hideAlertModal, action, styles, onHandleActionClick }) => ( + <View style={styles.buttonsContainer}> + <Button + onPress={hideAlertModal} + label={strings('alert_system.alert_modal.got_it_btn')} + style={styles.footerButton} + size={ButtonSize.Lg} + variant={action ? ButtonVariants.Secondary : ButtonVariants.Primary} + width={ButtonWidthTypes.Full} + /> + {action ? ( + <> + <View style={styles.buttonDivider} /> + <Button + onPress={() => onHandleActionClick(action.callback)} + label={action.label} + style={styles.footerButton} + size={ButtonSize.Lg} + variant={ButtonVariants.Primary} + width={ButtonWidthTypes.Full} + /> + </> + ) : null} + </View> +); + +const AlertModal = () => { + const { colors } = useTheme(); + const styles = (useStyles(styleSheet, {})).styles as Record<string, ViewStyle>; + const { hideAlertModal, alertModalVisible, fieldAlerts } = useAlerts(); + const { isAlertConfirmed, setAlertConfirmed, alertKey } = useAlertsConfirmed(fieldAlerts); + + const handleClose = useCallback( + () => { + hideAlertModal(); + }, + [hideAlertModal], + ); + + const handleCheckboxClick = useCallback( + (selectedAlertKey: string, isConfirmed: boolean) => { + setAlertConfirmed(selectedAlertKey, !isConfirmed); + }, + [setAlertConfirmed], + ); + + const handleActionClick = useCallback( + (callback: () => void) => { + callback(); + hideAlertModal(); + }, + [hideAlertModal], + ); + + const selectedAlert = fieldAlerts.find((alertSelected: Alert) => alertSelected.key === alertKey); + + if (!alertModalVisible || !selectedAlert) { + return null; + } + + const isConfirmed = isAlertConfirmed(selectedAlert.key); + const severityStyle = getSeverityStyle(selectedAlert.severity, colors); + + return ( + <BottomModal onClose={handleClose}> + <View style={styles.modalContainer}> + <Header + selectedAlert={selectedAlert} + iconColor={severityStyle.icon} + styles={styles} + /> + <View> + <Content + backgroundColor={severityStyle.background} + selectedAlert={selectedAlert} + styles={styles} + /> + <AlertCheckbox + selectedAlert={selectedAlert} + isConfirmed={isConfirmed} + onCheckboxClick={() => handleCheckboxClick(selectedAlert.key, isConfirmed)} + styles={styles} + /> + </View> + <Buttons + hideAlertModal={handleClose} + action={selectedAlert.action} + styles={styles} + onHandleActionClick={handleActionClick} + /> + </View> + </BottomModal> + ); +}; + +export default AlertModal; diff --git a/app/components/Views/confirmations/AlertSystem/AlertModal/index.ts b/app/components/Views/confirmations/AlertSystem/AlertModal/index.ts new file mode 100755 index 000000000000..f40ad70d3d06 --- /dev/null +++ b/app/components/Views/confirmations/AlertSystem/AlertModal/index.ts @@ -0,0 +1 @@ +export { default } from './AlertModal'; diff --git a/app/components/Views/confirmations/AlertSystem/ConfirmAlertModal/ConfirmAlertModal.styles.ts b/app/components/Views/confirmations/AlertSystem/ConfirmAlertModal/ConfirmAlertModal.styles.ts new file mode 100644 index 000000000000..6a22e3f789fa --- /dev/null +++ b/app/components/Views/confirmations/AlertSystem/ConfirmAlertModal/ConfirmAlertModal.styles.ts @@ -0,0 +1,67 @@ +import { StyleSheet } from 'react-native'; + +import { Theme } from '../../../../../util/theme/models'; +import Device from '../../../../../util/device'; + +const styleSheet = (params: { + theme: Theme; +}) => { + const { + theme, + } = params; + + return StyleSheet.create({ + modalContainer: { + backgroundColor: theme.colors.background.default, + borderTopLeftRadius: 8, + borderTopRightRadius: 8, + paddingBottom: Device.isIphoneX() ? 20 : 0, + alignItems: 'center', + paddingLeft: 16, + paddingRight: 16, + paddingTop: 16, + }, + headerContainer: { + paddingTop: 12, + }, + footerButton: { + flex: 1, + }, + buttonsContainer: { + flexDirection: 'row', + paddingVertical: 16, + }, + buttonDivider: { + width: 8, + }, + headerText: { + fontSize: 16, + fontWeight: 'bold', + textAlign: 'center', + marginBottom: 16, + }, + message: { + textAlign: 'center', + }, + checkboxContainer: { + marginTop: 8, + backgroundColor: theme.colors.error.muted, + borderRadius: 8, + marginVertical: 8, + padding: 12, + minHeight: 63, + }, + checkboxLabel: { + flex: 1, + flexWrap: 'wrap', + alignItems: 'flex-start', + }, + reviewAlertsLink: { + marginTop: 12, + marginBottom: 12, + alignSelf: 'center', + }, + }); +}; + +export default styleSheet; diff --git a/app/components/Views/confirmations/AlertSystem/ConfirmAlertModal/ConfirmAlertModal.test.tsx b/app/components/Views/confirmations/AlertSystem/ConfirmAlertModal/ConfirmAlertModal.test.tsx new file mode 100644 index 000000000000..f2f0c9ac9d36 --- /dev/null +++ b/app/components/Views/confirmations/AlertSystem/ConfirmAlertModal/ConfirmAlertModal.test.tsx @@ -0,0 +1,76 @@ +import React from 'react'; +import { render, fireEvent, act } from '@testing-library/react-native'; +import { useAlerts } from '../context'; +import ConfirmAlertModal, { ConfirmAlertModalProps } from './ConfirmAlertModal'; + +jest.mock('../../../../../util/theme', () => ({ + useTheme: jest.fn(), +})); + +jest.mock('../context', () => ({ + useAlerts: jest.fn(), +})); + +const CHECKBOX_LABEL = 'I have acknowledged the alert and still want to proceed'; +const CONFIRM_MODAL_MESSAGE_LABEL = 'We suggest you reject this request. If you continue, you might put your assets at risk.'; +const CONFIRM_MODAL_TITLE_LABEL = 'High risk request'; +const CONFIRM_BTN = 'Confirm'; +const REJECT_BTN = 'Reject'; +const REVIEW_ALERTS_LABEL = 'Review all alerts'; + +describe('ConfirmAlertModal', () => { + const mockOnReject = jest.fn(); + const mockOnConfirm = jest.fn(); + const baseProps: ConfirmAlertModalProps = { + onReject: mockOnReject, + onConfirm: mockOnConfirm, + }; + + beforeEach(() => { + jest.clearAllMocks(); + (useAlerts as jest.Mock).mockReturnValue({ + showAlertModal: jest.fn(), + }); + }); + + it('renders the ConfirmAlertModal correctly', () => { + const { getByText } = render(<ConfirmAlertModal {...baseProps} />); + expect(getByText(CONFIRM_MODAL_TITLE_LABEL)).toBeDefined(); + expect(getByText(CONFIRM_MODAL_MESSAGE_LABEL)).toBeDefined(); + expect(getByText(REVIEW_ALERTS_LABEL)).toBeDefined(); + expect(getByText(CHECKBOX_LABEL)).toBeDefined(); + expect(getByText(REJECT_BTN)).toBeDefined(); + expect(getByText(CONFIRM_BTN)).toBeDefined(); + }); + + it('calls onReject when the Cancel button is pressed', async () => { + const { getByText } = render(<ConfirmAlertModal {...baseProps} />); + await act(async () => { + fireEvent.press(getByText(REJECT_BTN)); + }); + expect(mockOnReject).toHaveBeenCalled(); + }); + + it('calls onConfirm when the Confirm button is pressed and checkbox is checked', async () => { + const { getByText, getByTestId } = render(<ConfirmAlertModal {...baseProps} />); + await act(async () => { + fireEvent.press(getByTestId('confirm-alert-checkbox')); + }); + await act(async () => { + fireEvent.press(getByText(CONFIRM_BTN)); + }); + expect(mockOnConfirm).toHaveBeenCalled(); + }); + + it('calls showAlertModal when the "Review all alerts" link is pressed', async () => { + const mockShowAlertModal = jest.fn(); + (useAlerts as jest.Mock).mockReturnValue({ + showAlertModal: mockShowAlertModal, + }); + const { getByText } = render(<ConfirmAlertModal {...baseProps} />); + await act(async () => { + fireEvent.press(getByText(REVIEW_ALERTS_LABEL)); + }); + expect(mockShowAlertModal).toHaveBeenCalled(); + }); +}); diff --git a/app/components/Views/confirmations/AlertSystem/ConfirmAlertModal/ConfirmAlertModal.tsx b/app/components/Views/confirmations/AlertSystem/ConfirmAlertModal/ConfirmAlertModal.tsx new file mode 100755 index 000000000000..d25b110b4fca --- /dev/null +++ b/app/components/Views/confirmations/AlertSystem/ConfirmAlertModal/ConfirmAlertModal.tsx @@ -0,0 +1,101 @@ +import React, { useCallback, useState } from 'react'; +import { View } from 'react-native'; +import { useTheme } from '../../../../../util/theme'; +import BottomModal from '../../components/UI/BottomModal'; +import Button, { ButtonSize, ButtonVariants, ButtonWidthTypes } from '../../../../../component-library/components/Buttons/Button'; +import Checkbox from '../../../../../component-library/components/Checkbox'; +import Icon, { IconName, IconSize } from '../../../../../component-library/components/Icons/Icon'; +import Text, { TextVariant } from '../../../../../component-library/components/Texts/Text'; +import { useStyles } from '../../../../hooks/useStyles'; +import { strings } from '../../../../../../locales/i18n'; +import { useAlerts } from '../context'; +import ButtonLink from '../../../../../component-library/components/Buttons/Button/variants/ButtonLink'; +import styleSheet from './ConfirmAlertModal.styles'; + +export interface ConfirmAlertModalProps { + /** Callback function that is called when the reject button is clicked. */ + onReject: () => void; + /** Callback function that is called when the confirm button is clicked. */ + onConfirm: () => void; +} + +const ConfirmAlertModal: React.FC<ConfirmAlertModalProps> = ({ onReject, onConfirm }) => { + const { colors } = useTheme(); + const { styles } = useStyles(styleSheet, {}); + const { showAlertModal } = useAlerts(); + + const [confirmCheckbox, setConfirmCheckbox] = useState<boolean>(false); + + const handleConfirmCheckbox = useCallback(() => { + setConfirmCheckbox(!confirmCheckbox); + }, [confirmCheckbox]); + + const handleConfirm = useCallback(async () => { + onConfirm(); + }, [onConfirm]); + + const handleReject = useCallback(() => { + onReject(); + }, [onReject]); + + return ( + <BottomModal onClose={handleReject}> + <View style={styles.modalContainer}> + <View> + <Icon name={IconName.Danger} size={IconSize.Xl} color={colors.error.default} /> + </View> + <View style={styles.headerContainer}> + <Text style={styles.headerText} variant={TextVariant.BodyMDBold}> + {strings('alert_system.confirm_modal.title')} + </Text> + </View> + <Text style={styles.message}> + {strings('alert_system.confirm_modal.message')} + </Text> + <ButtonLink + style={styles.reviewAlertsLink} + onPress={showAlertModal} + label={strings('alert_system.confirm_modal.review_alerts')} + startIconName={IconName.SecuritySearch} + width={ButtonWidthTypes.Auto} + size={ButtonSize.Lg} + labelTextVariant={TextVariant.BodyMD} + /> + + <View style={styles.checkboxContainer}> + <Checkbox + isChecked={confirmCheckbox} + onPress={handleConfirmCheckbox} + label={strings('alert_system.confirm_modal.checkbox_label')} + style={styles.checkboxLabel} + testID="confirm-alert-checkbox" + /> + </View> + <View style={styles.buttonsContainer}> + <Button + onPress={handleReject} + label={strings('confirm.reject')} + style={styles.footerButton} + size={ButtonSize.Lg} + variant={ButtonVariants.Secondary} + width={ButtonWidthTypes.Full} + /> + <View style={styles.buttonDivider} /> + <Button + onPress={handleConfirm} + label={strings('confirm.confirm')} + style={styles.footerButton} + size={ButtonSize.Lg} + variant={ButtonVariants.Primary} + width={ButtonWidthTypes.Full} + isDisabled={!confirmCheckbox} + startIconName={IconName.Danger} + isDanger + /> + </View> + </View> + </BottomModal> + ); +}; + +export default ConfirmAlertModal; diff --git a/app/components/Views/confirmations/AlertSystem/ConfirmAlertModal/index.ts b/app/components/Views/confirmations/AlertSystem/ConfirmAlertModal/index.ts new file mode 100755 index 000000000000..3c6b969914ad --- /dev/null +++ b/app/components/Views/confirmations/AlertSystem/ConfirmAlertModal/index.ts @@ -0,0 +1 @@ +export { default } from './ConfirmAlertModal'; diff --git a/app/components/Views/confirmations/AlertSystem/context/Alerts.context.test.tsx b/app/components/Views/confirmations/AlertSystem/context/Alerts.context.test.tsx new file mode 100644 index 000000000000..93f5139b247a --- /dev/null +++ b/app/components/Views/confirmations/AlertSystem/context/Alerts.context.test.tsx @@ -0,0 +1,120 @@ +import React from 'react'; +import { act, renderHook } from '@testing-library/react-hooks'; +import { Severity, Alert } from '../../types/alerts'; +import { useAlerts, AlertsContextProvider, AlertsContextParams } from './Alerts.context'; + +jest.mock('../../hooks/useConfirmationAlerts', () => ({ + __esModule: true, + default: jest.fn(), +})); + +describe('AlertsContext', () => { + const dangerAlertMock: Alert = { + key: 'alert1', + field: 'from', + severity: Severity.Danger, + message: 'Danger alert', + title: 'Alert 1', + }; + + const warningAlertMock: Alert = { + key: 'alert2', + severity: Severity.Warning, + message: 'Warning alert', + title: 'Alert 2', + }; + + const infoAlertMock: Alert = { + key: 'alert3', + severity: Severity.Info, + message: 'Info alert', + title: 'Alert 3', + }; + + const alertsMock = [dangerAlertMock, warningAlertMock, infoAlertMock]; + + beforeEach(() => { + jest.clearAllMocks(); + }); + + const renderHookWithProvider = (hook: () => AlertsContextParams) => renderHook(hook, { + wrapper: ({ children }) => <AlertsContextProvider alerts={alertsMock}>{children}</AlertsContextProvider>, + }); + + describe('useAlerts', () => { + it('provides the correct context values', () => { + const { result } = renderHookWithProvider(() => useAlerts()); + + expect(result.current.alerts).toBeDefined(); + expect(result.current.dangerAlerts).toBeDefined(); + expect(result.current.fieldAlerts).toBeDefined(); + expect(result.current.generalAlerts).toBeDefined(); + expect(result.current.hasAlerts).toBeDefined(); + expect(result.current.hasDangerAlerts).toBeDefined(); + expect(result.current.hideAlertModal).toBeDefined(); + expect(result.current.showAlertModal).toBeDefined(); + }); + + it('provides showAlertModal and hideAlertModal functions', () => { + const { result } = renderHookWithProvider(() => useAlerts()); + + expect(result.current.alertModalVisible).toBe(false); + + act(() => { + result.current.showAlertModal(); + }); + expect(result.current.alertModalVisible).toBe(true); + + act(() => { + result.current.hideAlertModal(); + }); + expect(result.current.alertModalVisible).toBe(false); + }); + + it('context value is correct when there are no alerts', () => { + const { result } = renderHook(() => useAlerts(), { + wrapper: ({ children }) => <AlertsContextProvider alerts={[]}>{children}</AlertsContextProvider>, + }); + + expect(result.current.alerts).toEqual([]); + expect(result.current.dangerAlerts).toEqual([]); + expect(result.current.fieldAlerts).toEqual([]); + expect(result.current.generalAlerts).toEqual([]); + expect(result.current.hasAlerts).toBe(false); + expect(result.current.hasDangerAlerts).toBe(false); + }); + }); + + describe('useAlertsManagement', () => { + it('returns all alerts', () => { + const { result } = renderHookWithProvider(() => useAlerts()); + expect(result.current.alerts).toEqual(alertsMock); + expect(result.current.hasAlerts).toEqual(true); + }); + + it('returns alerts ordered by severity', () => { + const { result } = renderHookWithProvider(() => useAlerts()); + const orderedAlerts = result.current.alerts; + expect(orderedAlerts[0].severity).toEqual(Severity.Danger); + }); + + it('returns general alerts sorted by severity', () => { + const { result } = renderHookWithProvider(() => useAlerts()); + const generalAlerts = result.current.generalAlerts; + expect(generalAlerts[0]?.severity).toEqual(Severity.Warning); + }); + + it('returns all alerts with field property', () => { + const { result } = renderHookWithProvider(() => useAlerts()); + expect(result.current.fieldAlerts).toEqual([dangerAlertMock]); + }); + }); + + describe('AlertsContextProvider', () => { + it('should throw error if not wrapped in AlertsContextProvider', () => { + expect(() => { + useAlerts(); + }).toThrow(); + }); + }); +}); diff --git a/app/components/Views/confirmations/AlertSystem/context/Alerts.context.tsx b/app/components/Views/confirmations/AlertSystem/context/Alerts.context.tsx new file mode 100644 index 000000000000..beae1622be38 --- /dev/null +++ b/app/components/Views/confirmations/AlertSystem/context/Alerts.context.tsx @@ -0,0 +1,96 @@ +import React, { useContext, useMemo, useState } from 'react'; +import { Alert, Severity } from '../../types/alerts'; + +export interface AlertsContextParams { + alertModalVisible: boolean; + alerts: Alert[]; + dangerAlerts: Alert[]; + fieldAlerts: Alert[]; + generalAlerts: Alert[]; + hasAlerts: boolean; + hasDangerAlerts: boolean; + hideAlertModal: () => void; + showAlertModal: () => void; +} + +const AlertsContext = React.createContext<AlertsContextParams>({ + alertModalVisible: true, + alerts: [], + dangerAlerts: [], + fieldAlerts: [], + generalAlerts: [], + hasAlerts: false, + hasDangerAlerts: false, + hideAlertModal: () => undefined, + showAlertModal: () => undefined, +}); + +interface AlertsContextProviderProps { + alerts: Alert[]; +} + +export const AlertsContextProvider: React.FC<AlertsContextProviderProps> = ({ children, alerts }) => { + const [alertModalVisible, setAlertModalVisible] = useState(false); + + /** + * Sorted alerts by severity. + */ + const alertsMemo = useMemo(() => sortAlertsBySeverity(alerts), [alerts]); + + /** + * General alerts (alerts without a specific field). + */ + const generalAlerts = useMemo(() => alertsMemo.filter(alertSelected => alertSelected.field === undefined), [alertsMemo]); + + /** + * Field alerts (alerts with a specific field). + */ + const fieldAlerts = useMemo(() => alertsMemo.filter(alertSelected => alertSelected.field !== undefined), [alertsMemo]); + + /** + * Danger alerts. + */ + const dangerAlerts = useMemo(() => alertsMemo.filter( + alertSelected => alertSelected.severity === Severity.Danger + ), [alertsMemo]); + + const contextValue = useMemo(() => ({ + alertModalVisible, + alerts: alertsMemo, + dangerAlerts, + fieldAlerts, + generalAlerts, + hasAlerts: alertsMemo.length > 0, + hasDangerAlerts: dangerAlerts.length > 0, + hideAlertModal: () => setAlertModalVisible(false), + showAlertModal: () => setAlertModalVisible(true), + }), [alertModalVisible, alertsMemo, dangerAlerts, fieldAlerts, generalAlerts]); + + return ( + <AlertsContext.Provider value={contextValue}> + {children} + </AlertsContext.Provider> + ); +}; + +export const useAlerts = () => { + const context = useContext(AlertsContext); + if (!context) { + throw new Error('useAlerts must be used within an AlertsContextProvider'); + } + return context; +}; + +/** + * Sorts alerts by severity. + * @param alerts - Array of alerts to sort. + * @returns Sorted array of alerts. + */ +function sortAlertsBySeverity(alerts: Alert[]): Alert[] { + const severityOrder = { + [Severity.Danger]: 3, + [Severity.Warning]: 2, + [Severity.Info]: 1, + }; + return [...alerts].sort((a, b) => severityOrder[b.severity] - severityOrder[a.severity]); +} diff --git a/app/components/Views/confirmations/AlertSystem/context/index.ts b/app/components/Views/confirmations/AlertSystem/context/index.ts new file mode 100644 index 000000000000..c5b9ae62d066 --- /dev/null +++ b/app/components/Views/confirmations/AlertSystem/context/index.ts @@ -0,0 +1 @@ +export * from './Alerts.context'; diff --git a/app/components/Views/confirmations/Approval/__snapshots__/index.test.tsx.snap b/app/components/Views/confirmations/Approval/__snapshots__/index.test.tsx.snap index d74d9b1a64a0..90ee8367306f 100644 --- a/app/components/Views/confirmations/Approval/__snapshots__/index.test.tsx.snap +++ b/app/components/Views/confirmations/Approval/__snapshots__/index.test.tsx.snap @@ -595,7 +595,7 @@ exports[`Approval render matches snapshot 1`] = ` <View style={ { - "marginBottom": -8, + "marginBottom": 8, "marginHorizontal": 16, } } diff --git a/app/components/Views/confirmations/Approval/index.test.tsx b/app/components/Views/confirmations/Approval/index.test.tsx index 8814fc7ea29f..b073896d896e 100644 --- a/app/components/Views/confirmations/Approval/index.test.tsx +++ b/app/components/Views/confirmations/Approval/index.test.tsx @@ -13,14 +13,15 @@ import initialRootState from '../../../../util/test/initial-root-state'; const TRANSACTION_ID_MOCK = '123'; jest.mock('../../../../selectors/smartTransactionsController', () => ({ selectSmartTransactionsEnabled: () => false, - selectShouldUseSmartTransaction: () => false + selectShouldUseSmartTransaction: () => false, + selectPendingSmartTransactionsBySender: () => [], })); jest.mock('../../../../selectors/preferencesController', () => ({ selectSmartTransactionsBannerDismissed: () => false, selectSmartTransactionsMigrationApplied: () => false, selectSmartTransactionsOptInStatus: () => false, - selectUseTransactionSimulations: () => false + selectUseTransactionSimulations: () => false, })); jest.mock('../../../../util/dappTransactions', () => ({ @@ -49,11 +50,11 @@ jest.mock('../../../../core/Engine', () => ({ jest.mock('../../../../selectors/confirmTransaction', () => ({ selectCurrentTransactionSecurityAlertResponse: () => null, selectCurrentTransactionMetadata: () => null, - selectGasFeeEstimates: () => ({}) + selectGasFeeEstimates: () => ({}), })); jest.mock('../../../../selectors/tokenListController', () => ({ - selectTokenList: () => ({}) + selectTokenList: () => ({}), })); const Stack = createStackNavigator(); @@ -67,7 +68,8 @@ const routeMock = { params: {}, }; -const renderComponent = ({ store }: { store: Store }) => render( +const renderComponent = ({ store }: { store: Store }) => + render( <Provider store={store}> <ThemeContext.Provider value={mockTheme}> <NavigationContainer> diff --git a/app/components/Views/confirmations/ApproveView/Approve/__snapshots__/index.test.tsx.snap b/app/components/Views/confirmations/ApproveView/Approve/__snapshots__/index.test.tsx.snap index e676b76a2548..bf3b8f6c7fa0 100644 --- a/app/components/Views/confirmations/ApproveView/Approve/__snapshots__/index.test.tsx.snap +++ b/app/components/Views/confirmations/ApproveView/Approve/__snapshots__/index.test.tsx.snap @@ -1,6 +1,6 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`Approve should render transaction approval 1`] = ` +exports[`Approve renders transaction approval 1`] = ` <View style={ { @@ -722,6 +722,7 @@ exports[`Approve should render transaction approval 1`] = ` "flexDirection": "column", } } + testID="view-transaction-details" > <View style={ diff --git a/app/components/Views/confirmations/ApproveView/Approve/index.js b/app/components/Views/confirmations/ApproveView/Approve/index.js index 68a2701ad3f1..987c6b84744a 100644 --- a/app/components/Views/confirmations/ApproveView/Approve/index.js +++ b/app/components/Views/confirmations/ApproveView/Approve/index.js @@ -45,9 +45,10 @@ import { } from '../../../../../core/GasPolling/GasPolling'; import { selectNativeCurrencyByChainId, - selectNetworkConfigurations, + selectEvmNetworkConfigurationsByChainId, selectProviderTypeByChainId, - selectRpcUrlByChainId + selectRpcUrlByChainId, + selectEvmChainId, } from '../../../../../selectors/networkController'; import { selectConversionRateByChainId, @@ -83,6 +84,7 @@ import { import { selectAddressBook } from '../../../../../selectors/addressBookController'; import { buildTransactionParams } from '../../../../../util/confirmation/transactions'; import Routes from '../../../../../constants/navigation/Routes'; +import { isNonEvmChainId } from '../../../../../core/Multichain/utils'; const EDIT = 'edit'; const REVIEW = 'review'; @@ -566,7 +568,10 @@ class Approve extends PureComponent { assetType: 'ETH', }); } else { - throw transactionMeta.error; + Logger.error( + transactionMeta.error, + 'error while trying to finish a transaction (Approve)', + ); } }, (transactionMeta) => transactionMeta.id === transaction.id, @@ -631,6 +636,8 @@ class Approve extends PureComponent { [{ text: 'OK' }], ); Logger.error(error, 'error while trying to send transaction (Approve)'); + this.setState({ transactionHandled: true }); + this.props.hideModal(); } else { metrics.trackEvent( metrics @@ -820,7 +827,6 @@ class Approve extends PureComponent { } if (!transaction.id) return null; - return ( <Modal isVisible={this.props.modalVisible && !isChangeInSimulationModalOpen} @@ -847,8 +853,12 @@ class Approve extends PureComponent { address={address} savedContactListToArray={savedContactListToArray} addressNickname={addressNickname} + providerType={providerType} + providerChainId={chainId} + providerRpcTarget={providerRpcTarget} + networkConfigurations={networkConfigurations} /> - ) : this.state.isBlockExplorerVisible ? ( + ) : this.state.isBlockExplorerVisible && !isNonEvmChainId(chainId) ? ( <ShowBlockExplorer setIsBlockExplorerVisible={this.setIsBlockExplorerVisible} type={providerType} @@ -975,7 +985,7 @@ const mapStateToProps = (state) => { addressBook: selectAddressBook(state), providerType: selectProviderTypeByChainId(state, chainId), providerRpcTarget: selectRpcUrlByChainId(state, chainId), - networkConfigurations: selectNetworkConfigurations(state), + networkConfigurations: selectEvmNetworkConfigurationsByChainId(state), shouldUseSmartTransaction: selectShouldUseSmartTransaction(state), simulationData: selectCurrentTransactionMetadata(state)?.simulationData, }; diff --git a/app/components/Views/confirmations/ApproveView/Approve/index.test.tsx b/app/components/Views/confirmations/ApproveView/Approve/index.test.tsx index 4409296628e3..c14a3ef1c573 100644 --- a/app/components/Views/confirmations/ApproveView/Approve/index.test.tsx +++ b/app/components/Views/confirmations/ApproveView/Approve/index.test.tsx @@ -1,5 +1,6 @@ import React from 'react'; -import { render, screen, fireEvent } from '@testing-library/react-native'; +import { merge } from 'lodash'; +import { act, render, screen, fireEvent } from '@testing-library/react-native'; import configureMockStore from 'redux-mock-store'; import { Provider } from 'react-redux'; import { Store } from 'redux'; @@ -10,11 +11,14 @@ import Approve from './index'; import { ThemeContext, mockTheme } from '../../../../../util/theme'; import initialRootState from '../../../../../util/test/initial-root-state'; import Routes from '../../../../../constants/navigation/Routes'; +// eslint-disable-next-line import/no-namespace +import * as TransactionController from '../../../../../util/transaction-controller'; const TRANSACTION_ID_MOCK = '123'; jest.mock('../../../../../selectors/smartTransactionsController', () => ({ selectSmartTransactionsEnabled: () => false, selectShouldUseSmartTransaction: () => false, + selectPendingSmartTransactionsBySender: () => [], })); jest.mock('../../../../../selectors/preferencesController', () => ({ @@ -36,12 +40,28 @@ jest.mock('../../../../../core/Engine', () => ({ }, rejectPendingApproval: jest.fn(), context: { + AccountsController: { + state: { + internalAccounts: { + accounts: { + '30786334-3935-4563-b064-363339643939': { + address: '0xc4955c0d639d99699bfd7ec54d9fafee40e4d272', + }, + }, + }, + }, + }, AssetsContractController: { getERC20BalanceOf: jest.fn().mockResolvedValue(null), }, KeyringController: { getOrAddQRKeyring: jest.fn(), }, + TransactionController: { + getNonceLock: jest + .fn() + .mockResolvedValue({ nextNonce: 2, releaseLock: jest.fn() }), + }, }, })); @@ -135,67 +155,49 @@ describe('Approve', () => { }); }); - it('should render transaction approval', () => { + it('renders transaction approval', () => { const wrapper = renderComponent({ store }); expect(wrapper).toMatchSnapshot(); }); - it('should navigate on confirm to the change in simulation modal when the transaction marked with isUpdatedAfterSecurityCheck as true', () => { - const storeWithUpdatedTransaction = mockStore({ - ...initialRootState, - transaction: { - id: TRANSACTION_ID_MOCK, - }, - settings: { - primaryCurrency: 'Fiat', - }, - alert: { - isVisible: false, - }, - engine: { - backgroundState: { - ...initialRootState.engine.backgroundState, - TransactionController: { - ...initialRootState.engine.backgroundState.TransactionController, - transactions: [ - { - id: TRANSACTION_ID_MOCK, - simulationData: { - isUpdatedAfterSecurityCheck: true, - }, - }, - ], - }, - AccountsController: { - ...initialRootState.engine.backgroundState.AccountsController, - internalAccounts: { - ...initialRootState.engine.backgroundState.AccountsController - .internalAccounts, - selectedAccount: '30786334-3935-4563-b064-363339643939', - accounts: { - '30786334-3935-4563-b064-363339643939': { - address: '0xc4955c0d639d99699bfd7ec54d9fafee40e4d272', + it('renders transaction approval details', async () => { + const { findByText, findByTestId } = renderComponent({ store }); + + await act(async () => { + fireEvent.press(await findByTestId('view-transaction-details')); + }); + + expect(await findByText('Transaction Details')).toBeTruthy(); + expect(await findByText('Approve asset:')).toBeTruthy(); + expect(await findByText('undefined (#1110)')).toBeTruthy(); + }); + + it('navigates on confirm to the change in simulation modal when the transaction marked with isUpdatedAfterSecurityCheck as true', async () => { + const storeWithUpdatedTransaction = mockStore( + merge({}, store.getState(), { + engine: { + backgroundState: { + TransactionController: { + transactions: [ + { + id: TRANSACTION_ID_MOCK, + simulationData: { + isUpdatedAfterSecurityCheck: true, + }, }, - }, - }, - }, - TokensController: { - ...initialRootState.engine.backgroundState.TokensController, - allTokens: { - ...initialRootState.engine.backgroundState.TokensController - .allTokens, - '0x1': { - '0xc4955c0d639d99699bfd7ec54d9fafee40e4d272': [], - }, + ], }, }, }, - }, - }); + }), + ); renderComponent({ store: storeWithUpdatedTransaction }); - fireEvent.press(screen.getByTestId('Confirm')); + await act(async () => { + fireEvent.press(screen.getByTestId('Confirm')); + }); + expect(navigationPropMock.navigate).toHaveBeenCalledWith( Routes.MODAL.ROOT_MODAL_FLOW, expect.objectContaining({ @@ -203,4 +205,52 @@ describe('Approve', () => { }), ); }); + + it('displays the latest nonce from transaction.transaction when showCustomNonce is true', async () => { + const getNetworkNonceSpy = jest.spyOn( + TransactionController, + 'getNetworkNonce', + ); + + const storeWithTransaction = mockStore( + merge({}, store.getState(), { + settings: { + showCustomNonce: true, + }, + engine: { + backgroundState: { + TransactionController: { + transactions: [ + { + id: TRANSACTION_ID_MOCK, + transaction: { + from: '0xfrom', + to: '0xto', + nonce: '0x2', + }, + mode: 'edit', + }, + ], + }, + }, + }, + transaction: { + mode: 'edit', // Add mode to transaction state + }, + }), + ); + + renderComponent({ + store: storeWithTransaction, + }); + + expect(getNetworkNonceSpy).toHaveBeenCalledWith( + { id: TRANSACTION_ID_MOCK, mode: 'edit' }, + undefined, + ); + const nonceSpyResult = await getNetworkNonceSpy.mock.results[0].value; + expect(nonceSpyResult).toBe(2); + + getNetworkNonceSpy.mockRestore(); + }); }); diff --git a/app/components/Views/confirmations/Confirm/Confirm.styles.ts b/app/components/Views/confirmations/Confirm/Confirm.styles.ts index e0e0377191a9..c8c0c6b3be54 100644 --- a/app/components/Views/confirmations/Confirm/Confirm.styles.ts +++ b/app/components/Views/confirmations/Confirm/Confirm.styles.ts @@ -1,12 +1,19 @@ import { StyleSheet } from 'react-native'; - -import Device from '../../../../util/device'; import { Theme } from '../../../../util/theme/models'; -const styleSheet = (params: { theme: Theme }) => { +const styleSheet = (params: { + theme: Theme; +}) => { const { theme } = params; return StyleSheet.create({ + bottomSheetDialogSheet: { + backgroundColor: theme.colors.background.alternative, + }, + confirmContainer: { + display: 'flex', + maxHeight: '100%', + }, flatContainer: { position: 'absolute', top: 0, @@ -16,22 +23,9 @@ const styleSheet = (params: { theme: Theme }) => { zIndex: 9999, backgroundColor: theme.colors.background.alternative, justifyContent: 'space-between', - paddingHorizontal: 16, }, - modalContainer: { - backgroundColor: theme.colors.background.alternative, + scrollView: { paddingHorizontal: 16, - paddingVertical: 24, - borderTopLeftRadius: 20, - borderTopRightRadius: 20, - paddingBottom: Device.isIphoneX() ? 20 : 0, - height: '85%', - }, - scrollableSection: { - padding: 4, - }, - scrollable: { - height: '75%', }, }); }; diff --git a/app/components/Views/confirmations/Confirm/Confirm.test.tsx b/app/components/Views/confirmations/Confirm/Confirm.test.tsx index 9a828957243a..85f6b84d237b 100644 --- a/app/components/Views/confirmations/Confirm/Confirm.test.tsx +++ b/app/components/Views/confirmations/Confirm/Confirm.test.tsx @@ -1,16 +1,52 @@ import React from 'react'; +import { SafeAreaProvider } from 'react-native-safe-area-context'; +import { act } from '@testing-library/react-native'; import renderWithProvider from '../../../../util/test/renderWithProvider'; import { personalSignatureConfirmationState, securityAlertResponse, - typedSignV1ConfirmationState, stakingDepositConfirmationState, + typedSignV1ConfirmationState, } from '../../../../util/test/confirm-data-helpers'; // eslint-disable-next-line import/no-namespace import * as ConfirmationRedesignEnabled from '../hooks/useConfirmationRedesignEnabled'; -import Confirm from './index'; +import { Confirm } from './Confirm'; + +jest.mock('@react-navigation/native', () => ({ + ...jest.requireActual('@react-navigation/native'), + useNavigation: () => ({ + addListener: jest.fn(), + dispatch: jest.fn(), + goBack: jest.fn(), + navigate: jest.fn(), + removeListener: jest.fn(), + }), +})); + +jest.mock('react-native/Libraries/Linking/Linking', () => ({ + addEventListener: jest.fn(), + removeEventListener: jest.fn(), + openURL: jest.fn(), + canOpenURL: jest.fn(), + getInitialURL: jest.fn(), +})); + +jest.mock('react-native-safe-area-context', () => { + const inset = { top: 0, right: 0, bottom: 0, left: 0 }; + const frame = { width: 0, height: 0, x: 0, y: 0 }; + + return { + ...jest.requireActual('react-native-safe-area-context'), + SafeAreaProvider: jest.fn().mockImplementation(({ children }) => children), + SafeAreaConsumer: jest + .fn() + .mockImplementation(({ children }) => children(inset)), + useSafeAreaInsets: jest.fn().mockImplementation(() => inset), + useSafeAreaFrame: jest.fn().mockImplementation(() => frame), + }; +}); jest.mock('../../../../core/Engine', () => ({ getTotalFiatAccountBalance: () => ({ tokenFiat: 10 }), @@ -21,17 +57,31 @@ jest.mock('../../../../core/Engine', () => ({ }, getOrAddQRKeyring: jest.fn(), }, + NetworkController: { + getNetworkConfigurationByNetworkClientId: jest.fn(), + }, + GasFeeController: { + startPolling: jest.fn(), + stopPollingByPollingToken: jest.fn(), + }, + AccountsController: { + state: { + internalAccounts: { + accounts: { + '1': { + address: '0x935e73edb9ff52e23bac7f7e043a1ecd06d05477', + }, + }, + }, + }, + }, }, controllerMessenger: { subscribe: jest.fn(), + unsubscribe: jest.fn(), }, })); -jest.mock('../../../../util/address', () => ({ - ...jest.requireActual('../../../../util/address'), - getAddressAccountType: (str: string) => str, -})); - jest.mock('react-native-gzip', () => ({ deflate: (str: string) => str, })); @@ -42,17 +92,11 @@ jest.mock('@react-navigation/native', () => ({ navigate: jest.fn(), addListener: jest.fn(), dispatch: jest.fn(), + setOptions: jest.fn(), }), })); describe('Confirm', () => { - it('renders flat confirmation', async () => { - const { getByTestId } = renderWithProvider(<Confirm />, { - state: stakingDepositConfirmationState, - }); - expect(getByTestId('flat-confirmation-container')).toBeDefined(); - }); - it('renders modal confirmation', async () => { const { getByTestId } = renderWithProvider(<Confirm />, { state: typedSignV1ConfirmationState, @@ -60,10 +104,22 @@ describe('Confirm', () => { expect(getByTestId('modal-confirmation-container')).toBeDefined(); }); - it('renders correct information for personal sign', async () => { - const { getAllByRole, getByText } = renderWithProvider(<Confirm />, { - state: personalSignatureConfirmationState, + it('renders a flat confirmation for specified type(s): staking deposit', () => { + const { getByTestId } = renderWithProvider(<Confirm />, { + state: stakingDepositConfirmationState, }); + expect(getByTestId('flat-confirmation-container')).toBeDefined(); + }); + + it('renders correct information for personal sign', () => { + const { getAllByRole, getByText } = renderWithProvider( + <SafeAreaProvider> + <Confirm /> + </SafeAreaProvider>, + { + state: personalSignatureConfirmationState, + }, + ); expect(getByText('Signature request')).toBeDefined(); expect( getByText('Review request details before you confirm.'), @@ -75,11 +131,16 @@ describe('Confirm', () => { expect(getAllByRole('button')).toHaveLength(2); }); - it('renders correct information for typed sign v1', async () => { + it('renders correct information for typed sign v1', () => { const { getAllByRole, getAllByText, getByText, queryByText } = - renderWithProvider(<Confirm />, { - state: typedSignV1ConfirmationState, - }); + renderWithProvider( + <SafeAreaProvider> + <Confirm /> + </SafeAreaProvider>, + { + state: typedSignV1ConfirmationState, + }, + ); expect(getByText('Signature request')).toBeDefined(); expect(getByText('Request from')).toBeDefined(); expect(getByText('metamask.github.io')).toBeDefined(); @@ -89,18 +150,33 @@ describe('Confirm', () => { expect(queryByText('This is a deceptive request')).toBeNull(); }); - it('renders blockaid banner if confirmation has blockaid error response', async () => { + it('renders correct information for staking deposit', async () => { + const { getByText } = renderWithProvider(<Confirm />, { + state: stakingDepositConfirmationState, + }); + expect(getByText('APR')).toBeDefined(); + expect(getByText('Est. annual reward')).toBeDefined(); + expect(getByText('Reward frequency')).toBeDefined(); + expect(getByText('Withdrawal time')).toBeDefined(); + expect(getByText('Network Fee')).toBeDefined(); + expect(getByText('Advanced details')).toBeDefined(); + }); + + it('renders a blockaid banner if the confirmation has blockaid error response', async () => { const { getByText } = renderWithProvider(<Confirm />, { state: { ...typedSignV1ConfirmationState, signatureRequest: { securityAlertResponse }, }, }); + + await act(async () => undefined); + expect(getByText('Signature request')).toBeDefined(); expect(getByText('This is a deceptive request')).toBeDefined(); }); - it('returns null if re-design is not enabled for confirmation', () => { + it('returns null if confirmation redesign is not enabled', () => { jest .spyOn(ConfirmationRedesignEnabled, 'useConfirmationRedesignEnabled') .mockReturnValue({ isRedesignedEnabled: false }); diff --git a/app/components/Views/confirmations/Confirm/Confirm.tsx b/app/components/Views/confirmations/Confirm/Confirm.tsx index a3c9174e665b..4b2a7fac7e72 100644 --- a/app/components/Views/confirmations/Confirm/Confirm.tsx +++ b/app/components/Views/confirmations/Confirm/Confirm.tsx @@ -5,52 +5,47 @@ import { TouchableWithoutFeedback, View, } from 'react-native'; -import { TransactionType } from '@metamask/transaction-controller'; +import BottomSheet from '../../../../component-library/components/BottomSheets/BottomSheet'; import { useStyles } from '../../../../component-library/hooks'; -import BottomModal from '../components/UI/BottomModal'; -import Footer from '../components/Confirm/Footer'; +import { Footer } from '../components/Confirm/Footer'; import Info from '../components/Confirm/Info'; +import { LedgerContextProvider } from '../context/LedgerContext'; import { QRHardwareContextProvider } from '../context/QRHardwareContext/QRHardwareContext'; import SignatureBlockaidBanner from '../components/Confirm/SignatureBlockaidBanner'; import Title from '../components/Confirm/Title'; -import useApprovalRequest from '../hooks/useApprovalRequest'; import { useConfirmationRedesignEnabled } from '../hooks/useConfirmationRedesignEnabled'; -import { useTransactionMetadataRequest } from '../hooks/useTransactionMetadataRequest'; +import { useFlatConfirmation } from '../hooks/useFlatConfirmation'; +import useApprovalRequest from '../hooks/useApprovalRequest'; +import { useConfirmActions } from '../hooks/useConfirmActions'; import styleSheet from './Confirm.styles'; -// todo: if possible derive way to dynamically check if confirmation should be rendered flat -const FLAT_TRANSACTION_CONFIRMATIONS: TransactionType[] = [ - TransactionType.stakingDeposit, -]; - const ConfirmWrapped = ({ styles, }: { styles: StyleSheet.NamedStyles<Record<string, unknown>>; }) => ( <QRHardwareContextProvider> - <Title /> - <ScrollView style={styles.scrollable}> - <TouchableWithoutFeedback> - <View style={styles.scrollableSection}> - <SignatureBlockaidBanner /> - <Info /> - </View> - </TouchableWithoutFeedback> - </ScrollView> - <Footer /> + <LedgerContextProvider> + <Title /> + <ScrollView style={styles.scrollView}> + <TouchableWithoutFeedback> + <> + <SignatureBlockaidBanner /> + <Info /> + </> + </TouchableWithoutFeedback> + </ScrollView> + <Footer /> + </LedgerContextProvider> </QRHardwareContextProvider> ); -const Confirm = () => { +export const Confirm = () => { const { approvalRequest } = useApprovalRequest(); - const transactionMetadata = useTransactionMetadataRequest(); + const { isFlatConfirmation } = useFlatConfirmation(); const { isRedesignedEnabled } = useConfirmationRedesignEnabled(); - - const isFlatConfirmation = FLAT_TRANSACTION_CONFIRMATIONS.includes( - transactionMetadata?.type as TransactionType, - ); + const { onReject } = useConfirmActions(); const { styles } = useStyles(styleSheet, {}); @@ -67,15 +62,14 @@ const Confirm = () => { } return ( - <BottomModal - canCloseOnBackdropClick={false} + <BottomSheet + onClose={onReject} + style={styles.bottomSheetDialogSheet} testID="modal-confirmation-container" > - <View style={styles.modalContainer} testID={approvalRequest?.type}> + <View testID={approvalRequest?.type} style={styles.confirmContainer}> <ConfirmWrapped styles={styles} /> </View> - </BottomModal> + </BottomSheet> ); }; - -export default Confirm; diff --git a/app/components/Views/confirmations/Confirm/ConfirmRoot.test.tsx b/app/components/Views/confirmations/Confirm/ConfirmRoot.test.tsx new file mode 100644 index 000000000000..710737bb84ac --- /dev/null +++ b/app/components/Views/confirmations/Confirm/ConfirmRoot.test.tsx @@ -0,0 +1,41 @@ +import React from 'react'; + +import renderWithProvider from '../../../../util/test/renderWithProvider'; +import { + personalSignatureConfirmationState, + stakingDepositConfirmationState, +} from '../../../../util/test/confirm-data-helpers'; +import Routes from '../../../../constants/navigation/Routes'; + +import { ConfirmRoot } from './ConfirmRoot'; + +const mockNavigate = jest.fn(); +jest.mock('@react-navigation/native', () => ({ + ...jest.requireActual('@react-navigation/native'), + useNavigation: () => ({ + navigate: mockNavigate, + addListener: jest.fn(), + dispatch: jest.fn(), + }), +})); + +describe('Confirm', () => { + beforeEach(() => { + jest.clearAllMocks(); + }); + + it('navigates to modal confirmation', async () => { + renderWithProvider(<ConfirmRoot />, { + state: personalSignatureConfirmationState, + }); + expect(mockNavigate).toHaveBeenCalledTimes(1); + expect(mockNavigate).toHaveBeenLastCalledWith(Routes.CONFIRM_MODAL); + }); + + it('does not navigate if confirmation is standalone', async () => { + renderWithProvider(<ConfirmRoot />, { + state: stakingDepositConfirmationState, + }); + expect(mockNavigate).not.toHaveBeenCalled(); + }); +}); diff --git a/app/components/Views/confirmations/Confirm/ConfirmRoot.tsx b/app/components/Views/confirmations/Confirm/ConfirmRoot.tsx new file mode 100644 index 000000000000..6371672a4179 --- /dev/null +++ b/app/components/Views/confirmations/Confirm/ConfirmRoot.tsx @@ -0,0 +1,32 @@ +import { useEffect } from 'react'; +import { useNavigation } from '@react-navigation/native'; + +import Routes from '../../../../constants/navigation/Routes'; +import { useFlatConfirmation } from '../hooks/useFlatConfirmation'; +import { useConfirmationRedesignEnabled } from '../hooks/useConfirmationRedesignEnabled'; +import { useStandaloneConfirmation } from '../hooks/useStandaloneConfirmation'; + +export const ConfirmRoot = () => { + const { isRedesignedEnabled } = useConfirmationRedesignEnabled(); + const { isFlatConfirmation } = useFlatConfirmation(); + const { isStandaloneConfirmation } = useStandaloneConfirmation(); + const navigation = useNavigation(); + + useEffect(() => { + if (isRedesignedEnabled) { + if (isStandaloneConfirmation) { + return; + } + navigation.navigate( + isFlatConfirmation ? Routes.CONFIRM_FLAT_PAGE : Routes.CONFIRM_MODAL, + ); + } + }, [ + isFlatConfirmation, + isRedesignedEnabled, + isStandaloneConfirmation, + navigation, + ]); + + return null; +}; diff --git a/app/components/Views/confirmations/Confirm/index.ts b/app/components/Views/confirmations/Confirm/index.ts index a4cf806e5d8a..90fd9987d280 100644 --- a/app/components/Views/confirmations/Confirm/index.ts +++ b/app/components/Views/confirmations/Confirm/index.ts @@ -1 +1,2 @@ -export { default } from './Confirm'; +export { Confirm } from './Confirm'; +export { ConfirmRoot } from './ConfirmRoot'; diff --git a/app/components/Views/confirmations/Send/index.js b/app/components/Views/confirmations/Send/index.js index 0e9c38c6c68a..e5e10756ad5e 100644 --- a/app/components/Views/confirmations/Send/index.js +++ b/app/components/Views/confirmations/Send/index.js @@ -66,7 +66,7 @@ import TransactionTypes from '../../../../core/TransactionTypes'; import { // Pending updated multichain UX to specify the send chain. /* eslint-disable no-restricted-syntax */ - selectChainId, + selectEvmChainId, selectNetworkClientId, /* eslint-enable no-restricted-syntax */ selectProviderTypeByChainId, @@ -189,7 +189,10 @@ class Send extends PureComponent { */ async reset() { const { globalNetworkClientId, transaction } = this.props; - const { gas, gasPrice } = await estimateGas(transaction, globalNetworkClientId); + const { gas, gasPrice } = await estimateGas( + transaction, + globalNetworkClientId, + ); this.props.setTransactionObject({ gas: hexToBN(gas), gasPrice: hexToBN(gasPrice), @@ -320,11 +323,7 @@ class Send extends PureComponent { /** * Handle txMeta object, setting neccesary state to make a transaction */ - handleNewTxMeta = async ({ - target_address, - action, - parameters = null, - }) => { + handleNewTxMeta = async ({ target_address, action, parameters = null }) => { const { addressBook, globalChainId, internalAccounts, selectedAddress } = this.props; @@ -612,7 +611,8 @@ class Send extends PureComponent { } } const existingContact = - addressBook[globalChainId] && addressBook[globalChainId][checksummedAddress]; + addressBook[globalChainId] && + addressBook[globalChainId][checksummedAddress]; if (!existingContact) { AddressBookController.set(checksummedAddress, '', globalChainId); } @@ -805,7 +805,7 @@ class Send extends PureComponent { } const mapStateToProps = (state) => { - const globalChainId = selectChainId(state); + const globalChainId = selectEvmChainId(state); return { addressBook: selectAddressBook(state), diff --git a/app/components/Views/confirmations/Send/index.test.tsx b/app/components/Views/confirmations/Send/index.test.tsx index dcb1604d229b..bce3190114f6 100644 --- a/app/components/Views/confirmations/Send/index.test.tsx +++ b/app/components/Views/confirmations/Send/index.test.tsx @@ -11,6 +11,7 @@ import { DeepPartial, renderScreen, } from '../../../../util/test/renderWithProvider'; +import { SolScope } from '@metamask/keyring-api'; const mockedNetworkControllerState = mockNetworkState({ chainId: CHAIN_IDS.MAINNET, @@ -120,6 +121,11 @@ const initialState: DeepPartial<RootState> = { estimatedGasFeeTimeBounds: {}, gasEstimateType: 'none', }, + MultichainNetworkController: { + isEvmSelected: true, + selectedMultichainNetworkChainId: SolScope.Mainnet, + multichainNetworkConfigurationsByChainId: {}, + }, }, }, }; diff --git a/app/components/Views/confirmations/SendFlow/Amount/index.js b/app/components/Views/confirmations/SendFlow/Amount/index.js index 1a453441f5cc..1b66c23e1808 100644 --- a/app/components/Views/confirmations/SendFlow/Amount/index.js +++ b/app/components/Views/confirmations/SendFlow/Amount/index.js @@ -102,7 +102,7 @@ import { createBuyNavigationDetails } from '../../../../UI/Ramp/routes/utils'; import { // Pending updated multichain UX to specify the send chain. /* eslint-disable no-restricted-syntax */ - selectChainId, + selectEvmChainId, selectNetworkClientId, /* eslint-enable no-restricted-syntax */ selectNativeCurrencyByChainId, @@ -1053,18 +1053,15 @@ class Amount extends PureComponent { this.setState({ assetsModalVisible: !assetsModalVisible }); }; - handleSelectedAssetBalance = ( - selectedAsset, - renderableBalance, - ) => { + handleSelectedAssetBalance = (selectedAsset, renderableBalance) => { const { accounts, selectedAddress, contractBalances } = this.props; let currentBalance; if (renderableBalance) { currentBalance = `${renderableBalance} ${selectedAsset.symbol}`; } else if (isNativeToken(selectedAsset)) { - currentBalance = `${renderFromWei( - accounts[selectedAddress].balance, - )} ${selectedAsset.symbol}`; + currentBalance = `${renderFromWei(accounts[selectedAddress].balance)} ${ + selectedAsset.symbol + }`; } else { currentBalance = `${renderFromTokenMinimalUnit( contractBalances[selectedAsset.address], @@ -1588,12 +1585,15 @@ Amount.contextType = ThemeContext; const mapStateToProps = (state, ownProps) => { const transaction = ownProps.transaction || state.transaction; - const globalChainId = selectChainId(state); + const globalChainId = selectEvmChainId(state); const globalNetworkClientId = selectNetworkClientId(state); return { accounts: selectAccounts(state), - contractExchangeRates: selectContractExchangeRatesByChainId(state, globalChainId), + contractExchangeRates: selectContractExchangeRatesByChainId( + state, + globalChainId, + ), contractBalances: selectContractBalances(state), collectibles: collectiblesSelector(state), collectibleContracts: collectibleContractsSelector(state), diff --git a/app/components/Views/confirmations/SendFlow/Confirm/index.test.tsx b/app/components/Views/confirmations/SendFlow/Confirm/index.test.tsx index fc405bc7e519..21e60d2237c0 100644 --- a/app/components/Views/confirmations/SendFlow/Confirm/index.test.tsx +++ b/app/components/Views/confirmations/SendFlow/Confirm/index.test.tsx @@ -127,7 +127,6 @@ jest.mock('../../../../../util/ENSUtils', () => ({ jest.mock('../../../../../lib/ppom/ppom-util', () => ({ ...jest.requireActual('../../../../../lib/ppom/ppom-util'), validateRequest: jest.fn(), - isChainSupported: jest.fn(), })); jest.mock('../../../../../core/Engine', () => { diff --git a/app/components/Views/confirmations/SendFlow/Confirm/styles.ts b/app/components/Views/confirmations/SendFlow/Confirm/styles.ts index cc48fbdf0e6c..e54ab1dbbd73 100644 --- a/app/components/Views/confirmations/SendFlow/Confirm/styles.ts +++ b/app/components/Views/confirmations/SendFlow/Confirm/styles.ts @@ -135,7 +135,7 @@ const createStyles = (colors: any) => textDecorationLine: 'underline', ...fontStyles.bold, }, - blockaidBanner: { + blockaidBannerContainer: { marginBottom: 10, marginTop: 20, marginHorizontal: 10, diff --git a/app/components/Views/confirmations/SendFlow/SendTo/index.js b/app/components/Views/confirmations/SendFlow/SendTo/index.js index 38919c8ea485..9b68a32a1136 100644 --- a/app/components/Views/confirmations/SendFlow/SendTo/index.js +++ b/app/components/Views/confirmations/SendFlow/SendTo/index.js @@ -44,9 +44,9 @@ import generateTestId from '../../../../../../wdio/utils/generateTestId'; import { // Pending updated multichain UX to specify the send chain. // eslint-disable-next-line no-restricted-syntax - selectChainId, + selectEvmChainId, selectNativeCurrencyByChainId, - selectProviderTypeByChainId + selectProviderTypeByChainId, } from '../../../../../selectors/networkController'; import { selectInternalAccounts, @@ -389,8 +389,8 @@ class SendFlow extends PureComponent { return networkAddressBook[checksummedAddress] ? networkAddressBook[checksummedAddress].name : matchingAccount - ? matchingAccount.metadata.name - : null; + ? matchingAccount.metadata.name + : null; }; validateAddressOrENSFromInput = async (toAccount) => { @@ -688,7 +688,7 @@ class SendFlow extends PureComponent { SendFlow.contextType = ThemeContext; const mapStateToProps = (state) => { - const globalChainId = selectChainId(state); + const globalChainId = selectEvmChainId(state); return { addressBook: selectAddressBook(state), diff --git a/app/components/Views/confirmations/components/ApproveTransactionHeader/ApproveTransactionHeader.tsx b/app/components/Views/confirmations/components/ApproveTransactionHeader/ApproveTransactionHeader.tsx index 754b5c9ccd5f..5245fd782777 100644 --- a/app/components/Views/confirmations/components/ApproveTransactionHeader/ApproveTransactionHeader.tsx +++ b/app/components/Views/confirmations/components/ApproveTransactionHeader/ApproveTransactionHeader.tsx @@ -9,8 +9,8 @@ import { BadgeVariant } from '../../../../../component-library/components/Badges import { useStyles } from '../../../../../component-library/hooks'; import { selectAccountsByChainId } from '../../../../../selectors/accountTrackerController'; import { - selectNetworkImageSource, - selectNetworkName, + selectEvmNetworkImageSource, + selectEvmNetworkName, } from '../../../../../selectors/networkInfos'; import { getLabelTextByAddress, @@ -48,7 +48,7 @@ const ApproveTransactionHeader = ({ const internalAccounts = useSelector(selectInternalAccounts); const activeAddress = toChecksumAddress(from); - const networkName = useSelector(selectNetworkName); + const networkName = useSelector(selectEvmNetworkName); const useBlockieIcon = useSelector( (state: RootState) => state.settings.useBlockieIcon, @@ -66,15 +66,16 @@ const ApproveTransactionHeader = ({ setIsOriginDeepLink(isOriginDeepLinkVal); }, [accountsByChainId, internalAccounts, activeAddress, origin]); - const networkImage = useSelector(selectNetworkImageSource); + const networkImage = useSelector(selectEvmNetworkImageSource); const accountTypeLabel = getLabelTextByAddress(activeAddress) ?? undefined; - const showOrigin = origin && !isOriginDeepLink && !INTERNAL_ORIGINS.includes(origin); + const showOrigin = + origin && !isOriginDeepLink && !INTERNAL_ORIGINS.includes(origin); return ( <View style={styles.transactionHeader}> - { showOrigin ? ( + {showOrigin ? ( <ApprovalTagUrl from={from} origin={origin} diff --git a/app/components/Views/confirmations/components/ApproveTransactionReview/AddNickname/index.tsx b/app/components/Views/confirmations/components/ApproveTransactionReview/AddNickname/index.tsx index ca93a9fcd140..685ec20d17a8 100644 --- a/app/components/Views/confirmations/components/ApproveTransactionReview/AddNickname/index.tsx +++ b/app/components/Views/confirmations/components/ApproveTransactionReview/AddNickname/index.tsx @@ -1,5 +1,3 @@ -// eslint-disable-next-line @typescript-eslint/ban-ts-comment -// @ts-nocheck - Confirmations team or Transactions team import React, { useState, useEffect, useCallback } from 'react'; import { SafeAreaView, View, TextInput, TouchableOpacity } from 'react-native'; import AntDesignIcon from 'react-native-vector-icons/AntDesign'; @@ -8,7 +6,7 @@ import Engine from '../../../../../../core/Engine'; import { MetaMetricsEvents } from '../../../../../../core/Analytics'; import { toChecksumAddress } from 'ethereumjs-util'; -import { connect } from 'react-redux'; +import { connect, useSelector } from 'react-redux'; import StyledButton from '../../../../../UI/StyledButton'; import Text from '../../../../../../component-library/components/Texts/Text'; import InfoModal from '../../../../../UI/Swaps/components/InfoModal'; @@ -32,11 +30,12 @@ import { CONTACT_ALREADY_SAVED, SYMBOL_ERROR, } from '../../../../../../constants/error'; -import { selectNetworkConfigurations } from '../../../../../../selectors/networkController'; import { useMetrics } from '../../../../../../components/hooks/useMetrics'; import { selectInternalAccounts } from '../../../../../../selectors/accountsController'; import { RootState } from '../../../../../../reducers'; import { selectAddressBook } from '../../../../../../selectors/addressBookController'; +import { selectIsEvmNetworkSelected } from '../../../../../../selectors/multichainNetworkController'; +import { NetworkType } from '@metamask/controller-utils'; const getAnalyticsParams = () => ({}); @@ -61,6 +60,7 @@ const AddNickname = (props: AddNicknameProps) => { const [isBlockExplorerVisible, setIsBlockExplorerVisible] = useState(false); const [showFullAddress, setShowFullAddress] = useState(false); const [shouldDisableButton, setShouldDisableButton] = useState(true); + const isEvmSelected = useSelector(selectIsEvmNetworkSelected); const { colors, themeAppearance } = useTheme(); const { trackEvent, createEventBuilder } = useMetrics(); const styles = createStyles(colors); @@ -157,11 +157,14 @@ const AddNickname = (props: AddNicknameProps) => { return errorMessage; }; - const hasBlockExplorer = shouldShowBlockExplorer( - providerType, - providerRpcTarget, - networkConfigurations, - ); + const hasBlockExplorer = + !isEvmSelected || !providerRpcTarget + ? false + : shouldShowBlockExplorer( + providerType as NetworkType, + providerRpcTarget, + networkConfigurations, + ); return ( <SafeAreaView style={styles.container}> @@ -261,12 +264,8 @@ const AddNickname = (props: AddNicknameProps) => { }; const mapStateToProps = (state: RootState) => ({ - providerType: selectProviderType(state), - providerRpcTarget: selectRpcUrl(state), - providerChainId: selectChainId(state), addressBook: selectAddressBook(state), internalAccounts: selectInternalAccounts(state), - networkConfigurations: selectNetworkConfigurations(state), }); // TODO: Replace "any" with type diff --git a/app/components/Views/confirmations/components/ApproveTransactionReview/AddNickname/types.ts b/app/components/Views/confirmations/components/ApproveTransactionReview/AddNickname/types.ts index 32ce99fcbdb2..0559815f56f7 100644 --- a/app/components/Views/confirmations/components/ApproveTransactionReview/AddNickname/types.ts +++ b/app/components/Views/confirmations/components/ApproveTransactionReview/AddNickname/types.ts @@ -1,5 +1,4 @@ import { AddressBookControllerState } from '@metamask/address-book-controller'; -import { NetworkType } from '@metamask/controller-utils'; import { InternalAccount } from '@metamask/keyring-internal-api'; import type { NetworkState } from '@metamask/network-controller'; import { Hex } from '@metamask/utils'; @@ -13,10 +12,10 @@ export interface AddNicknameProps { // TODO: Replace "any" with type // eslint-disable-next-line @typescript-eslint/no-explicit-any showModalAlert: (config: any) => void; - providerType: NetworkType; + providerType: string; providerChainId: Hex; providerNetwork: string; - providerRpcTarget: string; + providerRpcTarget: string | undefined; addressBook: AddressBookControllerState['addressBook']; internalAccounts: InternalAccount[]; } diff --git a/app/components/Views/confirmations/components/ApproveTransactionReview/VerifyContractDetails/VerifyContractDetails.tsx b/app/components/Views/confirmations/components/ApproveTransactionReview/VerifyContractDetails/VerifyContractDetails.tsx index 237d4522cfce..2b9e5d7728dc 100644 --- a/app/components/Views/confirmations/components/ApproveTransactionReview/VerifyContractDetails/VerifyContractDetails.tsx +++ b/app/components/Views/confirmations/components/ApproveTransactionReview/VerifyContractDetails/VerifyContractDetails.tsx @@ -18,6 +18,7 @@ import { RPC } from '../../../../../../constants/network'; import TransactionTypes from '../../../../../../core/TransactionTypes'; import { safeToChecksumAddress } from '../../../../../../util/address'; import { selectTokens } from '../../../../../../selectors/tokensController'; +import { selectIsEvmNetworkSelected } from '../../../../../../selectors/multichainNetworkController'; const { ASSET: { ERC20, ERC1155, ERC721 }, @@ -44,6 +45,8 @@ const VerifyContractDetails = ({ const tokens = useSelector(selectTokens); + const isEvmSelected = useSelector(selectIsEvmNetworkSelected); + const tokenData = useMemo( () => tokens.filter( @@ -74,11 +77,11 @@ const VerifyContractDetails = ({ }, [contractAddress, tokenAddress, savedContactListToArray]); const showBlockExplorerIcon = useCallback(() => { - if (providerType === RPC) { + if (providerType === RPC && isEvmSelected) { return findBlockExplorerForRpc(providerRpcTarget, networkConfigurations); } return true; - }, [providerType, providerRpcTarget, networkConfigurations]); + }, [providerType, providerRpcTarget, networkConfigurations, isEvmSelected]); const hasBlockExplorer = showBlockExplorerIcon(); diff --git a/app/components/Views/confirmations/components/ApproveTransactionReview/__snapshots__/index.test.tsx.snap b/app/components/Views/confirmations/components/ApproveTransactionReview/__snapshots__/index.test.tsx.snap index 27efee87ff6a..41368b53fc48 100644 --- a/app/components/Views/confirmations/components/ApproveTransactionReview/__snapshots__/index.test.tsx.snap +++ b/app/components/Views/confirmations/components/ApproveTransactionReview/__snapshots__/index.test.tsx.snap @@ -539,6 +539,7 @@ exports[`ApproveTransactionModal render matches snapshot 1`] = ` "flexDirection": "column", } } + testID="view-transaction-details" > <View style={ diff --git a/app/components/Views/confirmations/components/ApproveTransactionReview/index.js b/app/components/Views/confirmations/components/ApproveTransactionReview/index.js index 68b64f51b6ea..c9989e89e3f9 100644 --- a/app/components/Views/confirmations/components/ApproveTransactionReview/index.js +++ b/app/components/Views/confirmations/components/ApproveTransactionReview/index.js @@ -75,7 +75,7 @@ import Routes from '../../../../../constants/navigation/Routes'; import createStyles from './styles'; import { selectNativeCurrencyByChainId, - selectNetworkConfigurations, + selectEvmNetworkConfigurationsByChainId, selectProviderTypeByChainId, selectRpcUrlByChainId, } from '../../../../../selectors/networkController'; @@ -103,6 +103,8 @@ import SDKConnect from '../../../../../core/SDKConnect/SDKConnect'; import DevLogger from '../../../../../core/SDKConnect/utils/DevLogger'; import { WC2Manager } from '../../../../../core/WalletConnect/WalletConnectV2'; import { WALLET_CONNECT_ORIGIN } from '../../../../../util/walletconnect'; +import { isNonEvmChainId } from '../../../../../core/Multichain/utils'; + import SmartTransactionsMigrationBanner from '../SmartTransactionsMigrationBanner/SmartTransactionsMigrationBanner'; const { ORIGIN_DEEPLINK, ORIGIN_QR_CODE } = AppConstants.DEEPLINKS; const POLLING_INTERVAL_ESTIMATED_L1_FEE = 30000; @@ -347,6 +349,7 @@ class ApproveTransactionReview extends PureComponent { componentDidMount = async () => { const { chainId } = this.props; const { + // We need to extract transaction.transaction here to retrieve up-to-date nonce transaction: { origin, to, data, from, transaction }, setTransactionObject, tokenList, @@ -588,8 +591,8 @@ class ApproveTransactionReview extends PureComponent { request_source: this.originIsMMSDKRemoteConn ? AppConstants.REQUEST_SOURCES.SDK_REMOTE_CONN : this.originIsWalletConnect - ? AppConstants.REQUEST_SOURCES.WC - : AppConstants.REQUEST_SOURCES.IN_APP_BROWSER, + ? AppConstants.REQUEST_SOURCES.WC + : AppConstants.REQUEST_SOURCES.IN_APP_BROWSER, is_smart_transaction: shouldUseSmartTransaction || false, }; @@ -850,14 +853,18 @@ class ApproveTransactionReview extends PureComponent { gasEstimateType === GAS_ESTIMATE_TYPES.FEE_MARKET || gasEstimateType === GAS_ESTIMATE_TYPES.NONE; - const hasBlockExplorer = shouldShowBlockExplorer( - providerType, - providerRpcTarget, - networkConfigurations, - ); + // TODO: [SOLANA] - before ship make sure block explorer supports Solana + const hasBlockExplorer = isNonEvmChainId(chainId) + ? false + : shouldShowBlockExplorer( + providerType, + providerRpcTarget, + networkConfigurations, + ); - const tokenLabel = `${tokenName || tokenSymbol || strings(`spend_limit_edition.nft`) - } (#${tokenValue})`; + const tokenLabel = `${ + tokenName || tokenSymbol || strings(`spend_limit_edition.nft`) + } (#${tokenValue})`; const isERC2OToken = tokenStandard === ERC20; const isNonERC20Token = tokenStandard !== ERC20; @@ -919,7 +926,9 @@ class ApproveTransactionReview extends PureComponent { style={styles.blockaidWarning} onContactUsClicked={this.onContactUsClicked} /> - <SmartTransactionsMigrationBanner style={styles.smartTransactionsMigrationBanner} /> + <SmartTransactionsMigrationBanner + style={styles.smartTransactionsMigrationBanner} + /> <Text variant={TextVariant.HeadingMD} style={styles.title}> {this.getTrustTitle( originIsDeeplink, @@ -1019,36 +1028,36 @@ class ApproveTransactionReview extends PureComponent { )} {((isERC2OToken && isReadyToApprove) || isNonFungibleToken) && ( - <View style={styles.transactionWrapper}> - <TransactionReview - gasSelected={gasSelected} - primaryCurrency={primaryCurrency} - hideTotal - noMargin - onEdit={this.edit} - chainId={this.props.chainId} - onUpdatingValuesStart={onUpdatingValuesStart} - onUpdatingValuesEnd={onUpdatingValuesEnd} - animateOnChange={animateOnChange} - isAnimating={isAnimating} - gasEstimationReady={gasEstimationReady} - legacy={!showFeeMarket} - gasObject={ - !showFeeMarket - ? legacyGasObject - : eip1559GasObject - } - gasObjectLegacy={legacyGasObject} - updateTransactionState={updateTransactionState} - onlyGas - multiLayerL1FeeTotal={multiLayerL1FeeTotal} - /> - </View> - )} + <View style={styles.transactionWrapper}> + <TransactionReview + gasSelected={gasSelected} + primaryCurrency={primaryCurrency} + hideTotal + noMargin + onEdit={this.edit} + chainId={this.props.chainId} + onUpdatingValuesStart={onUpdatingValuesStart} + onUpdatingValuesEnd={onUpdatingValuesEnd} + animateOnChange={animateOnChange} + isAnimating={isAnimating} + gasEstimationReady={gasEstimationReady} + legacy={!showFeeMarket} + gasObject={ + !showFeeMarket + ? legacyGasObject + : eip1559GasObject + } + gasObjectLegacy={legacyGasObject} + updateTransactionState={updateTransactionState} + onlyGas + multiLayerL1FeeTotal={multiLayerL1FeeTotal} + /> + </View> + )} {gasError && ( <View style={styles.errorWrapper}> {isTestNetworkWithFaucet(chainId) || - isNativeTokenBuySupported ? ( + isNativeTokenBuySupported ? ( <TouchableOpacity onPress={errorPress}> <Text reset style={styles.error}> {gasError} @@ -1074,6 +1083,7 @@ class ApproveTransactionReview extends PureComponent { <TouchableOpacity style={styles.actionTouchable} onPress={this.toggleViewDetails} + testID="view-transaction-details" > <View style={styles.iconContainer}> <Text reset style={styles.viewDetailsText}> @@ -1319,12 +1329,12 @@ class ApproveTransactionReview extends PureComponent { {viewDetails ? this.renderTransactionReview() : shouldVerifyContractDetails - ? this.renderVerifyContractDetails() - : showBlockExplorerModal - ? this.renderBlockExplorerView() - : isSigningQRObject - ? this.renderQRDetails() - : this.renderDetails()} + ? this.renderVerifyContractDetails() + : showBlockExplorerModal + ? this.renderBlockExplorerView() + : isSigningQRObject + ? this.renderQRDetails() + : this.renderDetails()} </View> ); }; @@ -1336,7 +1346,7 @@ const mapStateToProps = (state) => { return { ticker: selectNativeCurrencyByChainId(state, chainId), - networkConfigurations: selectNetworkConfigurations(state), + networkConfigurations: selectEvmNetworkConfigurationsByChainId(state), transaction: getNormalizedTxState(state), tokensLength: selectTokensLength(state), accountsLength: selectAccountsLength(state), diff --git a/app/components/Views/confirmations/components/ApproveTransactionReview/styles.ts b/app/components/Views/confirmations/components/ApproveTransactionReview/styles.ts index 1e784c99285d..e0bde730402d 100644 --- a/app/components/Views/confirmations/components/ApproveTransactionReview/styles.ts +++ b/app/components/Views/confirmations/components/ApproveTransactionReview/styles.ts @@ -167,7 +167,7 @@ const createStyles = (colors: any) => justifyContent: 'center', alignItems: 'center', }, - blockaidWarning: { + blockaidBannerContainer: { marginBottom: 10, marginTop: 20, marginHorizontal: 10, diff --git a/app/components/Views/confirmations/components/Confirm/AccountNetworkInfo/AccountNetworkInfo.test.tsx b/app/components/Views/confirmations/components/Confirm/AccountNetworkInfo/AccountNetworkInfo.test.tsx index 16ed6ceba599..1499505c950a 100644 --- a/app/components/Views/confirmations/components/Confirm/AccountNetworkInfo/AccountNetworkInfo.test.tsx +++ b/app/components/Views/confirmations/components/Confirm/AccountNetworkInfo/AccountNetworkInfo.test.tsx @@ -6,6 +6,19 @@ import AccountNetworkInfo from './AccountNetworkInfo'; jest.mock('../../../../../../core/Engine', () => ({ getTotalFiatAccountBalance: () => ({ tokenFiat: 10 }), + context: { + AccountsController: { + state: { + internalAccounts: { + accounts: { + '1': { + address: '0x935e73edb9ff52e23bac7f7e043a1ecd06d05477', + }, + }, + }, + }, + }, + }, })); describe('AccountNetworkInfo', () => { diff --git a/app/components/Views/confirmations/components/Confirm/AccountNetworkInfo/AccountNetworkInfoCollapsed/AccountNetworkInfoCollapsed.styles.ts b/app/components/Views/confirmations/components/Confirm/AccountNetworkInfo/AccountNetworkInfoCollapsed/AccountNetworkInfoCollapsed.styles.ts index c16028a06139..78bb37c013ca 100644 --- a/app/components/Views/confirmations/components/Confirm/AccountNetworkInfo/AccountNetworkInfoCollapsed/AccountNetworkInfoCollapsed.styles.ts +++ b/app/components/Views/confirmations/components/Confirm/AccountNetworkInfo/AccountNetworkInfoCollapsed/AccountNetworkInfoCollapsed.styles.ts @@ -15,12 +15,22 @@ const styleSheet = (params: { theme: Theme }) => { marginRight: 16, alignSelf: 'center', }, + accountInfo: { + display: 'flex', + flexDirection: 'row', + alignItems: 'center', + }, accountName: { color: theme.colors.text.default, ...fontStyles.normal, fontSize: 14, fontWeight: '500', }, + accountLabel: { + borderRadius: 16, + marginStart: 8, + paddingHorizontal: 12, + }, networkName: { color: theme.colors.text.default, ...fontStyles.normal, diff --git a/app/components/Views/confirmations/components/Confirm/AccountNetworkInfo/AccountNetworkInfoCollapsed/AccountNetworkInfoCollapsed.test.tsx b/app/components/Views/confirmations/components/Confirm/AccountNetworkInfo/AccountNetworkInfoCollapsed/AccountNetworkInfoCollapsed.test.tsx index 201720096fae..748eb734a21d 100644 --- a/app/components/Views/confirmations/components/Confirm/AccountNetworkInfo/AccountNetworkInfoCollapsed/AccountNetworkInfoCollapsed.test.tsx +++ b/app/components/Views/confirmations/components/Confirm/AccountNetworkInfo/AccountNetworkInfoCollapsed/AccountNetworkInfoCollapsed.test.tsx @@ -2,18 +2,36 @@ import React from 'react'; import renderWithProvider from '../../../../../../../util/test/renderWithProvider'; import { personalSignatureConfirmationState } from '../../../../../../../util/test/confirm-data-helpers'; +// eslint-disable-next-line import/no-namespace +import * as AddressUtils from '../../../../../../../util/address'; import AccountNetworkInfoCollapsed from './AccountNetworkInfoCollapsed'; +jest.mock('../../../../../../../util/address', () => ({ + ...jest.requireActual('../../../../../../../util/address'), + getLabelTextByAddress: jest.fn(), +})); + jest.mock('../../../../../../../core/Engine', () => ({ getTotalFiatAccountBalance: () => ({ tokenFiat: 10 }), })); describe('AccountNetworkInfoCollapsed', () => { - it('should render correctly', async () => { + it('renders correctly', async () => { const { getByText } = renderWithProvider(<AccountNetworkInfoCollapsed />, { state: personalSignatureConfirmationState, }); expect(getByText('0x935E...5477')).toBeDefined(); expect(getByText('Ethereum Mainnet')).toBeDefined(); }); + + it('displays account label', async () => { + const MOCK_ACCOUNT_LABEL = 'ledger_label'; + jest + .spyOn(AddressUtils, 'getLabelTextByAddress') + .mockReturnValue(MOCK_ACCOUNT_LABEL); + const { getByText } = renderWithProvider(<AccountNetworkInfoCollapsed />, { + state: personalSignatureConfirmationState, + }); + expect(getByText(MOCK_ACCOUNT_LABEL)).toBeDefined(); + }); }); diff --git a/app/components/Views/confirmations/components/Confirm/AccountNetworkInfo/AccountNetworkInfoCollapsed/AccountNetworkInfoCollapsed.tsx b/app/components/Views/confirmations/components/Confirm/AccountNetworkInfo/AccountNetworkInfoCollapsed/AccountNetworkInfoCollapsed.tsx index 71ddc35a1557..c50823dffa8f 100644 --- a/app/components/Views/confirmations/components/Confirm/AccountNetworkInfo/AccountNetworkInfoCollapsed/AccountNetworkInfoCollapsed.tsx +++ b/app/components/Views/confirmations/components/Confirm/AccountNetworkInfo/AccountNetworkInfoCollapsed/AccountNetworkInfoCollapsed.tsx @@ -11,12 +11,17 @@ import Badge, { } from '../../../../../../../component-library/components/Badges/Badge'; import Text from '../../../../../../../component-library/components/Texts/Text'; import BadgeWrapper from '../../../../../../../component-library/components/Badges/BadgeWrapper'; +import TagBase, { + TagSeverity, + TagShape, +} from '../../../../../../../component-library/base-components/TagBase'; +import { getLabelTextByAddress } from '../../../../../../../util/address'; import { useStyles } from '../../../../../../../component-library/hooks'; import { RootState } from '../../../../../../UI/BasicFunctionality/BasicFunctionalityModal/BasicFunctionalityModal.test'; import useAccountInfo from '../../../../hooks/useAccountInfo'; import useNetworkInfo from '../../../../hooks/useNetworkInfo'; -import styleSheet from './AccountNetworkInfoCollapsed.styles'; import { useSignatureRequest } from '../../../../hooks/useSignatureRequest'; +import styleSheet from './AccountNetworkInfoCollapsed.styles'; const AccountNetworkInfoCollapsed = () => { const signatureRequest = useSignatureRequest(); @@ -27,6 +32,7 @@ const AccountNetworkInfoCollapsed = () => { ); const fromAddress = signatureRequest?.messageParams?.from as string; const { accountName } = useAccountInfo(fromAddress); + const accountLabel = getLabelTextByAddress(fromAddress); const { styles } = useStyles(styleSheet, {}); return ( @@ -52,7 +58,18 @@ const AccountNetworkInfoCollapsed = () => { /> </BadgeWrapper> <View> - <Text style={styles.accountName}>{accountName}</Text> + <View style={styles.accountInfo}> + <Text style={styles.accountName}>{accountName}</Text> + {accountLabel && ( + <TagBase + style={styles.accountLabel} + severity={TagSeverity.Neutral} + shape={TagShape.Rectangle} + > + {accountLabel} + </TagBase> + )} + </View> <Text style={styles.networkName}>{networkName}</Text> </View> </View> diff --git a/app/components/Views/confirmations/components/Confirm/AccountNetworkInfo/AccountNetworkInfoExpanded/AccountNetworkInfoExpanded.test.tsx b/app/components/Views/confirmations/components/Confirm/AccountNetworkInfo/AccountNetworkInfoExpanded/AccountNetworkInfoExpanded.test.tsx index c11146d23186..744ef1b045c4 100644 --- a/app/components/Views/confirmations/components/Confirm/AccountNetworkInfo/AccountNetworkInfoExpanded/AccountNetworkInfoExpanded.test.tsx +++ b/app/components/Views/confirmations/components/Confirm/AccountNetworkInfo/AccountNetworkInfoExpanded/AccountNetworkInfoExpanded.test.tsx @@ -1,21 +1,52 @@ import React from 'react'; - import renderWithProvider from '../../../../../../../util/test/renderWithProvider'; import { personalSignatureConfirmationState } from '../../../../../../../util/test/confirm-data-helpers'; import AccountNetworkInfoExpanded from './AccountNetworkInfoExpanded'; +import { isPortfolioViewEnabled } from '../../../../../../../util/networks'; + +jest.mock('../../../../../../../util/networks', () => ({ + ...jest.requireActual('../../../../../../../util/networks'), + isPortfolioViewEnabled: jest.fn(), +})); jest.mock('../../../../../../../core/Engine', () => ({ getTotalFiatAccountBalance: () => ({ tokenFiat: 10 }), })); describe('AccountNetworkInfoExpanded', () => { - it('should render correctly', async () => { + const mockIsPortfolioViewEnabled = jest.mocked(isPortfolioViewEnabled); + + beforeEach(() => { + jest.clearAllMocks(); + mockIsPortfolioViewEnabled.mockReturnValue(false); + }); + + it('should match snapshot when isPortfolioVieEnabled is true', () => { + mockIsPortfolioViewEnabled.mockReturnValue(true); + const { toJSON, getByText } = renderWithProvider( + <AccountNetworkInfoExpanded />, + { + state: personalSignatureConfirmationState, + }, + ); + + expect(toJSON()).toMatchSnapshot(); + expect(getByText('Account')).toBeDefined(); + expect(getByText('Balance')).toBeDefined(); + expect(getByText('Balance')).toBeDefined(); + expect(getByText('$0')).toBeDefined(); + expect(getByText('Network')).toBeDefined(); + expect(getByText('Ethereum Mainnet')).toBeDefined(); + }); + + it('should render correctly when isPortfolioVieEnabled is false', async () => { const { getByText } = renderWithProvider(<AccountNetworkInfoExpanded />, { state: personalSignatureConfirmationState, }); + + expect(getByText('$10')).toBeDefined(); expect(getByText('Account')).toBeDefined(); expect(getByText('Balance')).toBeDefined(); - expect(getByText('$10')).toBeDefined(); expect(getByText('Network')).toBeDefined(); expect(getByText('Ethereum Mainnet')).toBeDefined(); }); diff --git a/app/components/Views/confirmations/components/Confirm/AccountNetworkInfo/AccountNetworkInfoExpanded/AccountNetworkInfoExpanded.tsx b/app/components/Views/confirmations/components/Confirm/AccountNetworkInfo/AccountNetworkInfoExpanded/AccountNetworkInfoExpanded.tsx index 5e335f1195b9..a3818ff9ecda 100644 --- a/app/components/Views/confirmations/components/Confirm/AccountNetworkInfo/AccountNetworkInfoExpanded/AccountNetworkInfoExpanded.tsx +++ b/app/components/Views/confirmations/components/Confirm/AccountNetworkInfo/AccountNetworkInfoExpanded/AccountNetworkInfoExpanded.tsx @@ -9,6 +9,7 @@ import Network from '../../../UI/InfoRow/InfoValue/Network'; import { useSignatureRequest } from '../../../../hooks/useSignatureRequest'; import { Hex } from '@metamask/utils'; import { renderShortAddress } from '../../../../../../../util/address'; +import { useMultichainBalances } from '../../../../../../hooks/useMultichainBalances'; const AccountNetworkInfoExpanded = () => { const signatureRequest = useSignatureRequest(); @@ -16,19 +17,23 @@ const AccountNetworkInfoExpanded = () => { const fromAddress = signatureRequest?.messageParams?.from as string; const { accountAddress, accountFiatBalance } = useAccountInfo(fromAddress); + const { multichainBalances } = useMultichainBalances(); + const balanceToDisplay = multichainBalances.isPortfolioVieEnabled + ? multichainBalances.displayBalance + : accountFiatBalance; return ( <View> <InfoSection> - <InfoRow label={strings('confirm.account')}> + <InfoRow label={strings('confirm.label.account')}> {renderShortAddress(accountAddress, 5)} </InfoRow> - <InfoRow label={strings('confirm.balance')}> - {accountFiatBalance} + <InfoRow label={strings('confirm.label.balance')}> + {balanceToDisplay} </InfoRow> </InfoSection> <InfoSection> - <InfoRow label={strings('confirm.network')}> + <InfoRow label={strings('confirm.label.network')}> <Network chainId={chainId} /> </InfoRow> </InfoSection> diff --git a/app/components/Views/confirmations/components/Confirm/AccountNetworkInfo/AccountNetworkInfoExpanded/__snapshots__/AccountNetworkInfoExpanded.test.tsx.snap b/app/components/Views/confirmations/components/Confirm/AccountNetworkInfo/AccountNetworkInfoExpanded/__snapshots__/AccountNetworkInfoExpanded.test.tsx.snap new file mode 100644 index 000000000000..4a7211429ab0 --- /dev/null +++ b/app/components/Views/confirmations/components/Confirm/AccountNetworkInfo/AccountNetworkInfoExpanded/__snapshots__/AccountNetworkInfoExpanded.test.tsx.snap @@ -0,0 +1,259 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`AccountNetworkInfoExpanded should match snapshot when isPortfolioVieEnabled is true 1`] = ` +<View> + <View + style={ + { + "backgroundColor": "#ffffff", + "borderRadius": 8, + "marginBottom": 8, + "paddingBottom": 8, + "paddingHorizontal": 8, + "paddingTop": 12, + } + } + testID="info-section" + > + <View + style={ + { + "alignItems": "center", + "display": "flex", + "flexDirection": "row", + "flexWrap": "wrap", + "justifyContent": "space-between", + "paddingBottom": 8, + "paddingHorizontal": 8, + } + } + testID="info-row" + > + <View + style={ + { + "alignItems": "center", + "alignSelf": "flex-start", + "display": "flex", + "flexDirection": "row", + "minHeight": 38, + "paddingEnd": 4, + } + } + > + <Text + accessibilityRole="text" + style={ + { + "alignItems": "center", + "color": "#141618", + "fontFamily": "EuclidCircularB-Bold", + "fontSize": 14, + "fontWeight": "500", + "justifyContent": "center", + "letterSpacing": 0, + "lineHeight": 22, + } + } + > + Account + </Text> + </View> + <Text + accessibilityRole="text" + style={ + { + "color": "#141618", + "fontFamily": "EuclidCircularB-Regular", + "fontSize": 14, + "fontWeight": "400", + "letterSpacing": 0, + "lineHeight": 22, + } + } + > + 0x935E7...05477 + </Text> + </View> + <View + style={ + { + "alignItems": "center", + "display": "flex", + "flexDirection": "row", + "flexWrap": "wrap", + "justifyContent": "space-between", + "paddingBottom": 8, + "paddingHorizontal": 8, + } + } + testID="info-row" + > + <View + style={ + { + "alignItems": "center", + "alignSelf": "flex-start", + "display": "flex", + "flexDirection": "row", + "minHeight": 38, + "paddingEnd": 4, + } + } + > + <Text + accessibilityRole="text" + style={ + { + "alignItems": "center", + "color": "#141618", + "fontFamily": "EuclidCircularB-Bold", + "fontSize": 14, + "fontWeight": "500", + "justifyContent": "center", + "letterSpacing": 0, + "lineHeight": 22, + } + } + > + Balance + </Text> + </View> + <Text + accessibilityRole="text" + style={ + { + "color": "#141618", + "fontFamily": "EuclidCircularB-Regular", + "fontSize": 14, + "fontWeight": "400", + "letterSpacing": 0, + "lineHeight": 22, + } + } + > + $0 + </Text> + </View> + </View> + <View + style={ + { + "backgroundColor": "#ffffff", + "borderRadius": 8, + "marginBottom": 8, + "paddingBottom": 8, + "paddingHorizontal": 8, + "paddingTop": 12, + } + } + testID="info-section" + > + <View + style={ + { + "alignItems": "center", + "display": "flex", + "flexDirection": "row", + "flexWrap": "wrap", + "justifyContent": "space-between", + "paddingBottom": 8, + "paddingHorizontal": 8, + } + } + testID="info-row" + > + <View + style={ + { + "alignItems": "center", + "alignSelf": "flex-start", + "display": "flex", + "flexDirection": "row", + "minHeight": 38, + "paddingEnd": 4, + } + } + > + <Text + accessibilityRole="text" + style={ + { + "alignItems": "center", + "color": "#141618", + "fontFamily": "EuclidCircularB-Bold", + "fontSize": 14, + "fontWeight": "500", + "justifyContent": "center", + "letterSpacing": 0, + "lineHeight": 22, + } + } + > + Network + </Text> + </View> + <View + style={ + { + "marginLeft": "auto", + } + } + > + <View + style={ + { + "alignItems": "center", + "display": "flex", + "flexDirection": "row", + } + } + > + <View + style={ + { + "alignItems": "center", + "backgroundColor": "#ffffff", + "borderRadius": 8, + "height": 16, + "justifyContent": "center", + "overflow": "hidden", + "width": 16, + } + } + > + <Image + onError={[Function]} + resizeMode="contain" + source={1} + style={ + { + "height": 16, + "width": 16, + } + } + testID="network-avatar-image" + /> + </View> + <Text + accessibilityRole="text" + style={ + { + "color": "#141618", + "fontFamily": "EuclidCircularB-Regular", + "fontSize": 14, + "fontWeight": "400", + "letterSpacing": 0, + "lineHeight": 22, + "marginLeft": 8, + } + } + > + Ethereum Mainnet + </Text> + </View> + </View> + </View> + </View> +</View> +`; diff --git a/app/components/Views/confirmations/components/Confirm/AdvancedDetails/AdvancedDetails.styles.ts b/app/components/Views/confirmations/components/Confirm/AdvancedDetails/AdvancedDetails.styles.ts new file mode 100644 index 000000000000..a19058e5b92b --- /dev/null +++ b/app/components/Views/confirmations/components/Confirm/AdvancedDetails/AdvancedDetails.styles.ts @@ -0,0 +1,15 @@ +import { StyleSheet } from 'react-native'; + +const styleSheet = () => + StyleSheet.create({ + container: { + paddingVertical: 8, + }, + networkContainer: { + display: 'flex', + flexDirection: 'row', + alignItems: 'center', + }, + }); + +export default styleSheet; diff --git a/app/components/Views/confirmations/components/Confirm/AdvancedDetails/AdvancedDetails.test.tsx b/app/components/Views/confirmations/components/Confirm/AdvancedDetails/AdvancedDetails.test.tsx new file mode 100644 index 000000000000..ba72bead01fd --- /dev/null +++ b/app/components/Views/confirmations/components/Confirm/AdvancedDetails/AdvancedDetails.test.tsx @@ -0,0 +1,28 @@ +import { fireEvent } from '@testing-library/react-native'; +import React from 'react'; +import { stakingDepositConfirmationState } from '../../../../../../util/test/confirm-data-helpers'; +import renderWithProvider from '../../../../../../util/test/renderWithProvider'; +import AdvancedDetails from './AdvancedDetails'; + +describe('AdvancedDetails', () => { + it('contains values for staking deposit', async () => { + const { getByText } = renderWithProvider(<AdvancedDetails />, { + state: stakingDepositConfirmationState, + }); + + expect(getByText('Advanced details')).toBeDefined(); + + fireEvent(getByText('Advanced details'), 'onPress'); + + expect(getByText('Advanced details')).toBeDefined(); + + expect(getByText('Staking from')).toBeDefined(); + expect(getByText('0xDc477...0c164')).toBeDefined(); + + expect(getByText('Interacting with')).toBeDefined(); + expect(getByText('Pooled Staking')).toBeDefined(); + + expect(getByText('Network')).toBeDefined(); + expect(getByText('Ethereum Mainnet')).toBeDefined(); + }); +}); diff --git a/app/components/Views/confirmations/components/Confirm/AdvancedDetails/AdvancedDetails.tsx b/app/components/Views/confirmations/components/Confirm/AdvancedDetails/AdvancedDetails.tsx new file mode 100644 index 000000000000..0f8f76c1c941 --- /dev/null +++ b/app/components/Views/confirmations/components/Confirm/AdvancedDetails/AdvancedDetails.tsx @@ -0,0 +1,63 @@ +import { CHAIN_IDS, TransactionMeta } from '@metamask/transaction-controller'; +import React from 'react'; +import { View } from 'react-native'; +import { strings } from '../../../../../../../locales/i18n'; +import { AvatarSize } from '../../../../../../component-library/components/Avatars/Avatar'; +import Badge, { BadgeVariant } from '../../../../../../component-library/components/Badges/Badge'; +import Text from '../../../../../../component-library/components/Texts/Text'; +import { useStyles } from '../../../../../../component-library/hooks'; +import images from '../../../../../../images/image-icons'; +import Name from '../../../../../UI/Name'; +import { NameType } from '../../../../../UI/Name/Name.types'; +import { useTransactionMetadataRequest } from '../../../hooks/useTransactionMetadataRequest'; +import InfoRow from '../../UI/InfoRow'; +import InfoSectionAccordion from '../../UI/InfoSectionAccordion'; +import InfoRowDivider from '../InfoRowDivider'; +import styleSheet from './AdvancedDetails.styles'; + +const AdvancedDetails = () => { + const { styles } = useStyles(styleSheet, {}); + const transactionMeta = useTransactionMetadataRequest(); + + return ( + <View style={styles.container}> + <InfoSectionAccordion header={strings('stake.advanced_details')}> + <InfoRow + label={strings('confirm.staking_from')} + > + <Name + type={NameType.EthereumAddress} + value={(transactionMeta as TransactionMeta).txParams.from} + variation={CHAIN_IDS.MAINNET} + /> + </InfoRow> + <InfoRow + label={strings('confirm.label.interacting_with')} + > + <Name + type={NameType.EthereumAddress} + value={(transactionMeta as TransactionMeta).txParams.to as string} + variation={CHAIN_IDS.MAINNET} + /> + </InfoRow> + <InfoRowDivider /> + <InfoRow + label={strings('confirm.label.network')} + > + <View style={styles.networkContainer}> + <Badge + size={AvatarSize.Xs} + imageSource={images.ETHEREUM} + variant={BadgeVariant.Network} + isScaled={false} + /> + <Text>{' '}</Text> + <Text>{strings('stake.ethereum_mainnet')}</Text> + </View> + </InfoRow> + </InfoSectionAccordion> + </View> + ); +}; + +export default AdvancedDetails; diff --git a/app/components/Views/confirmations/components/Confirm/DataTree/DataField.tsx b/app/components/Views/confirmations/components/Confirm/DataTree/DataField.tsx index 03fc5dfa1cee..3ab8ab77da56 100644 --- a/app/components/Views/confirmations/components/Confirm/DataTree/DataField.tsx +++ b/app/components/Views/confirmations/components/Confirm/DataTree/DataField.tsx @@ -72,7 +72,7 @@ const createStyles = (depth: number) => }, dataRow: { paddingHorizontal: 0, - paddingBottom: 16, + paddingBottom: 8, }, }); @@ -108,7 +108,13 @@ const DataField = memo( <InfoDate unixTimestamp={parseInt(value, 10)} /> ); } else if (isTokenValueField(label, primaryType)) { - fieldDisplay = <TokenValue value={value} decimals={tokenDecimals} />; + fieldDisplay = ( + <TokenValue + label={startCase(label)} + value={value} + decimals={tokenDecimals} + /> + ); } else if (typeof value === 'object' && value !== null) { fieldDisplay = ( <DataTree diff --git a/app/components/Views/confirmations/components/Confirm/Footer/Footer.styles.ts b/app/components/Views/confirmations/components/Confirm/Footer/Footer.styles.ts index 147a0d34603d..5df96fb7026e 100644 --- a/app/components/Views/confirmations/components/Confirm/Footer/Footer.styles.ts +++ b/app/components/Views/confirmations/components/Confirm/Footer/Footer.styles.ts @@ -1,24 +1,25 @@ +import { Theme } from '@metamask/design-tokens'; import { StyleSheet } from 'react-native'; -import { Theme } from '../../../../../../util/theme/models'; - const styleSheet = (params: { theme: Theme }) => { - const { theme } = params; + const { theme: { colors }} = params; return StyleSheet.create({ - footerButton: { - flex: 1, + base: { + backgroundColor: colors.background.alternative, + paddingHorizontal: 16, + paddingBottom: 8, + paddingTop: 16, }, - divider: { - height: 1, - backgroundColor: theme.colors.border.muted, + linkText: { + textDecorationLine: 'underline', }, - buttonsContainer: { + textContainer: { flexDirection: 'row', - paddingVertical: 16, - }, - buttonDivider: { - width: 8, + justifyContent: 'center', + flexWrap: 'wrap', + marginBottom: 24, + paddingBottom: 16, }, }); }; diff --git a/app/components/Views/confirmations/components/Confirm/Footer/Footer.test.tsx b/app/components/Views/confirmations/components/Confirm/Footer/Footer.test.tsx index 5790532acd22..0b7e7ea9c8c7 100644 --- a/app/components/Views/confirmations/components/Confirm/Footer/Footer.test.tsx +++ b/app/components/Views/confirmations/components/Confirm/Footer/Footer.test.tsx @@ -3,10 +3,14 @@ import { fireEvent } from '@testing-library/react-native'; import { ConfirmationFooterSelectorIDs } from '../../../../../../../e2e/selectors/Confirmation/ConfirmationView.selectors'; import renderWithProvider from '../../../../../../util/test/renderWithProvider'; -import { personalSignatureConfirmationState } from '../../../../../../util/test/confirm-data-helpers'; +import { personalSignatureConfirmationState, stakingDepositConfirmationState } from '../../../../../../util/test/confirm-data-helpers'; // eslint-disable-next-line import/no-namespace import * as QRHardwareHook from '../../../context/QRHardwareContext/QRHardwareContext'; -import Footer from './index'; +// eslint-disable-next-line import/no-namespace +import * as LedgerContext from '../../../context/LedgerContext/LedgerContext'; +import { Footer } from './index'; +import { Linking } from 'react-native'; +import AppConstants from '../../../../../../core/AppConstants'; const mockConfirmSpy = jest.fn(); const mockRejectSpy = jest.fn(); @@ -17,7 +21,19 @@ jest.mock('../../../hooks/useConfirmActions', () => ({ }), })); +jest.mock('react-native/Libraries/Linking/Linking', () => ({ + openURL: jest.fn(), + addEventListener: jest.fn(), + removeEventListener: jest.fn(), + canOpenURL: jest.fn(), + getInitialURL: jest.fn(), +})); + describe('Footer', () => { + beforeEach(() => { + jest.clearAllMocks(); + }); + it('should render correctly', () => { const { getByText, getAllByRole } = renderWithProvider(<Footer />, { state: personalSignatureConfirmationState, @@ -46,13 +62,23 @@ describe('Footer', () => { it('renders confirm button text "Get Signature" if QR signing is in progress', () => { jest.spyOn(QRHardwareHook, 'useQRHardwareContext').mockReturnValue({ isQRSigningInProgress: true, - } as unknown as QRHardwareHook.QRHardwareContextType); + } as QRHardwareHook.QRHardwareContextType); const { getByText } = renderWithProvider(<Footer />, { state: personalSignatureConfirmationState, }); expect(getByText('Get Signature')).toBeTruthy(); }); + it('renders confirm button text "Sign with Ledger" if account used for signing is ledger account', () => { + jest.spyOn(LedgerContext, 'useLedgerContext').mockReturnValue({ + isLedgerAccount: true, + } as LedgerContext.LedgerContextType); + const { getByText } = renderWithProvider(<Footer />, { + state: personalSignatureConfirmationState, + }); + expect(getByText('Sign with Ledger')).toBeTruthy(); + }); + it('confirm button is disabled if `needsCameraPermission` is true', () => { jest.spyOn(QRHardwareHook, 'useQRHardwareContext').mockReturnValue({ needsCameraPermission: true, @@ -64,4 +90,22 @@ describe('Footer', () => { getByTestId(ConfirmationFooterSelectorIDs.CONFIRM_BUTTON).props.disabled, ).toBe(true); }); + + it('should open Terms of Use URL when terms link is pressed', () => { + const { getByText } = renderWithProvider(<Footer />, { + state: stakingDepositConfirmationState, + }); + + fireEvent.press(getByText('Terms of Use')); + expect(Linking.openURL).toHaveBeenCalledWith(AppConstants.URLS.TERMS_OF_USE); + }); + + it('should open Risk Disclosure URL when risk disclosure link is pressed', () => { + const { getByText } = renderWithProvider(<Footer />, { + state: stakingDepositConfirmationState, + }); + + fireEvent.press(getByText('Risk Disclosure')); + expect(Linking.openURL).toHaveBeenCalledWith(AppConstants.URLS.STAKING_RISK_DISCLOSURE); + }); }); diff --git a/app/components/Views/confirmations/components/Confirm/Footer/Footer.tsx b/app/components/Views/confirmations/components/Confirm/Footer/Footer.tsx index 7835baa348dc..20638c1daf15 100644 --- a/app/components/Views/confirmations/components/Confirm/Footer/Footer.tsx +++ b/app/components/Views/confirmations/components/Confirm/Footer/Footer.tsx @@ -1,57 +1,110 @@ -import React from 'react'; -import { View } from 'react-native'; - +import { TransactionType } from '@metamask/transaction-controller'; +import React, { useMemo } from 'react'; +import { Linking, View } from 'react-native'; import { ConfirmationFooterSelectorIDs } from '../../../../../../../e2e/selectors/Confirmation/ConfirmationView.selectors'; import { strings } from '../../../../../../../locales/i18n'; -import Button, { +import { ButtonSize, ButtonVariants, - ButtonWidthTypes, } from '../../../../../../component-library/components/Buttons/Button'; +import BottomSheetFooter from '../../../../../../component-library/components/BottomSheets/BottomSheetFooter'; +import { ButtonsAlignment } from '../../../../../../component-library/components/BottomSheets/BottomSheetFooter/BottomSheetFooter.types'; +import Text, { + TextVariant, +} from '../../../../../../component-library/components/Texts/Text'; import { useStyles } from '../../../../../../component-library/hooks'; +import AppConstants from '../../../../../../core/AppConstants'; +import { useQRHardwareContext } from '../../../context/QRHardwareContext/QRHardwareContext'; import { useConfirmActions } from '../../../hooks/useConfirmActions'; +import { useLedgerContext } from '../../../context/LedgerContext'; import { useSecurityAlertResponse } from '../../../hooks/useSecurityAlertResponse'; -import { useQRHardwareContext } from '../../../context/QRHardwareContext/QRHardwareContext'; +import { useTransactionMetadataRequest } from '../../../hooks/useTransactionMetadataRequest'; import { ResultType } from '../../BlockaidBanner/BlockaidBanner.types'; import styleSheet from './Footer.styles'; -const Footer = () => { +export const Footer = () => { const { onConfirm, onReject } = useConfirmActions(); const { isQRSigningInProgress, needsCameraPermission } = useQRHardwareContext(); const { securityAlertResponse } = useSecurityAlertResponse(); + const { isLedgerAccount } = useLedgerContext(); + const confirmDisabled = needsCameraPermission; + const transactionMetadata = useTransactionMetadataRequest(); + const isStakingConfirmation = [ + TransactionType.stakingDeposit, + TransactionType.stakingUnstake, + TransactionType.stakingClaim, + ].includes(transactionMetadata?.type as TransactionType); + const { styles } = useStyles(styleSheet, { + confirmDisabled, + isStakingConfirmation, + }); - const { styles } = useStyles(styleSheet, {}); + const confirmButtonLabel = useMemo(() => { + if (isQRSigningInProgress) { + return strings('confirm.qr_get_sign'); + } + if (isLedgerAccount) { + return strings('confirm.sign_with_ledger'); + } + return strings('confirm.confirm'); + }, [isLedgerAccount, isQRSigningInProgress]); + + const buttons = [ + { + variant: ButtonVariants.Secondary, + label: strings('confirm.reject'), + size: ButtonSize.Lg, + onPress: onReject, + testID: ConfirmationFooterSelectorIDs.CANCEL_BUTTON, + }, + { + variant: ButtonVariants.Primary, + isDanger: securityAlertResponse?.result_type === ResultType.Malicious, + isDisabled: needsCameraPermission, + label: confirmButtonLabel, + size: ButtonSize.Lg, + onPress: onConfirm, + testID: ConfirmationFooterSelectorIDs.CONFIRM_BUTTON, + }, + ]; return ( - <View style={styles.buttonsContainer}> - <Button - onPress={onReject} - label={strings('confirm.reject')} - style={styles.footerButton} - size={ButtonSize.Lg} - testID={ConfirmationFooterSelectorIDs.CANCEL_BUTTON} - variant={ButtonVariants.Secondary} - width={ButtonWidthTypes.Full} - /> - <View style={styles.buttonDivider} /> - <Button - onPress={onConfirm} - label={ - isQRSigningInProgress - ? strings('confirm.qr_get_sign') - : strings('confirm.confirm') - } - style={styles.footerButton} - size={ButtonSize.Lg} - testID={ConfirmationFooterSelectorIDs.CONFIRM_BUTTON} - variant={ButtonVariants.Primary} - width={ButtonWidthTypes.Full} - isDanger={securityAlertResponse?.result_type === ResultType.Malicious} - disabled={needsCameraPermission} + <> + <BottomSheetFooter + buttonsAlignment={ButtonsAlignment.Horizontal} + buttonPropsArray={buttons} + style={styles.base} /> - </View> + {isStakingConfirmation && ( + <View style={styles.textContainer}> + <Text variant={TextVariant.BodySM}> + {strings('confirm.staking_footer.part1')} + </Text> + <Text + variant={TextVariant.BodySM} + style={styles.linkText} + onPress={() => Linking.openURL(AppConstants.URLS.TERMS_OF_USE)} + > + {strings('confirm.staking_footer.terms_of_use')} + </Text> + <Text variant={TextVariant.BodySM}> + {strings('confirm.staking_footer.part2')} + </Text> + <Text + variant={TextVariant.BodySM} + style={styles.linkText} + onPress={() => + Linking.openURL(AppConstants.URLS.STAKING_RISK_DISCLOSURE) + } + > + {strings('confirm.staking_footer.risk_disclosure')} + </Text> + <Text variant={TextVariant.BodySM}> + {strings('confirm.staking_footer.part3')} + </Text> + </View> + )} + </> ); }; - -export default Footer; diff --git a/app/components/Views/confirmations/components/Confirm/Footer/index.ts b/app/components/Views/confirmations/components/Confirm/Footer/index.ts index be92134c1baa..65e2506faf5c 100644 --- a/app/components/Views/confirmations/components/Confirm/Footer/index.ts +++ b/app/components/Views/confirmations/components/Confirm/Footer/index.ts @@ -1 +1 @@ -export { default } from './Footer'; +export { Footer } from './Footer'; diff --git a/app/components/Views/confirmations/components/Confirm/Info/GasFeesDetails/GasFeesDetails.styles.ts b/app/components/Views/confirmations/components/Confirm/Info/GasFeesDetails/GasFeesDetails.styles.ts new file mode 100644 index 000000000000..deb57c18156e --- /dev/null +++ b/app/components/Views/confirmations/components/Confirm/Info/GasFeesDetails/GasFeesDetails.styles.ts @@ -0,0 +1,31 @@ +import { StyleSheet } from 'react-native'; +import { fontStyles } from '../../../../../../../styles/common'; +import { Theme } from '../../../../../../../util/theme/models'; + +const styleSheet = (params: { theme: Theme }) => { + const { theme } = params; + + return StyleSheet.create({ + container:{ + paddingVertical: 8, + }, + primaryValue: { + color: theme.colors.text.default, + ...fontStyles.normal, + fontSize: 14, + }, + secondaryValue: { + color: theme.colors.text.alternative, + ...fontStyles.normal, + fontSize: 14, + marginRight: 8, + }, + valueContainer: { + display: 'flex', + flexDirection: 'row', + alignItems: 'center', + }, + }); +}; + +export default styleSheet; diff --git a/app/components/Views/confirmations/components/Confirm/Info/GasFeesDetails/GasFeesDetails.test.tsx b/app/components/Views/confirmations/components/Confirm/Info/GasFeesDetails/GasFeesDetails.test.tsx new file mode 100644 index 000000000000..9aac09984b9c --- /dev/null +++ b/app/components/Views/confirmations/components/Confirm/Info/GasFeesDetails/GasFeesDetails.test.tsx @@ -0,0 +1,76 @@ +import React from 'react'; +import { cloneDeep } from 'lodash'; + +import renderWithProvider from '../../../../../../../util/test/renderWithProvider'; +import { stakingDepositConfirmationState } from '../../../../../../../util/test/confirm-data-helpers'; +import { NETWORKS_CHAIN_ID } from '../../../../../../../constants/network'; +import GasFeesDetails from './GasFeesDetails'; + +jest.mock('../../../../../../../core/Engine', () => ({ + context: { + GasFeeController: { + startPolling: jest.fn(), + stopPollingByPollingToken: jest.fn(), + }, + NetworkController: { + getNetworkConfigurationByNetworkClientId: jest.fn(), + }, + }, +})); + +describe('GasFeesDetails', () => { + it('contains required text', async () => { + const { getByText } = renderWithProvider(<GasFeesDetails />, { + state: stakingDepositConfirmationState, + }); + expect(getByText('Network Fee')).toBeDefined(); + expect(getByText('$0.34')).toBeDefined(); + expect(getByText('0.0001 ETH')).toBeDefined(); + }); + + it('shows fiat if showFiatOnTestnets is true', async () => { + const clonedStakingDepositConfirmationState = cloneDeep( + stakingDepositConfirmationState, + ); + clonedStakingDepositConfirmationState.engine.backgroundState.TransactionController.transactions[0].chainId = + NETWORKS_CHAIN_ID.SEPOLIA; + + const { getByText } = renderWithProvider(<GasFeesDetails />, { + state: clonedStakingDepositConfirmationState, + }); + expect(getByText('$0.34')).toBeDefined(); + }); + + it('hides fiat if showFiatOnTestnets is false', async () => { + const clonedStakingDepositConfirmationState = cloneDeep( + stakingDepositConfirmationState, + ); + clonedStakingDepositConfirmationState.engine.backgroundState.TransactionController.transactions[0].chainId = + NETWORKS_CHAIN_ID.SEPOLIA; + clonedStakingDepositConfirmationState.settings.showFiatOnTestnets = false; + + const { queryByText } = renderWithProvider(<GasFeesDetails />, { + state: clonedStakingDepositConfirmationState, + }); + expect(queryByText('$0.34')).toBeNull(); + }); + + it('hides fiat if nativeConversionRate is undefined', async () => { + const clonedStakingDepositConfirmationState = cloneDeep( + stakingDepositConfirmationState, + ); + + // No type is exported for CurrencyRate, so we need to cast it to the correct type + clonedStakingDepositConfirmationState.engine.backgroundState.CurrencyRateController.currencyRates.ETH = + null as unknown as { + conversionDate: number; + conversionRate: number; + usdConversionRate: number; + }; + + const { queryByText } = renderWithProvider(<GasFeesDetails />, { + state: clonedStakingDepositConfirmationState, + }); + expect(queryByText('$0.34')).toBeNull(); + }); +}); diff --git a/app/components/Views/confirmations/components/Confirm/Info/GasFeesDetails/GasFeesDetails.tsx b/app/components/Views/confirmations/components/Confirm/Info/GasFeesDetails/GasFeesDetails.tsx new file mode 100644 index 000000000000..eb5ea0abd249 --- /dev/null +++ b/app/components/Views/confirmations/components/Confirm/Info/GasFeesDetails/GasFeesDetails.tsx @@ -0,0 +1,44 @@ +import React from 'react'; +import { Text, View } from 'react-native'; +import { TransactionMeta } from '@metamask/transaction-controller'; + +import { strings } from '../../../../../../../../locales/i18n'; +import { useStyles } from '../../../../../../../component-library/hooks'; +import useHideFiatForTestnet from '../../../../../../hooks/useHideFiatForTestnet'; +import { useFeeCalculations } from '../../../../hooks/useFeeCalculations'; +import { useTransactionMetadataRequest } from '../../../../hooks/useTransactionMetadataRequest'; +import InfoRow from '../../../UI/InfoRow'; +import InfoSection from '../../../UI/InfoRow/InfoSection'; +import styleSheet from './GasFeesDetails.styles'; + +const GasFeesDetails = () => { + const { styles } = useStyles(styleSheet, {}); + const transactionMetadata = useTransactionMetadataRequest(); + const feeCalculations = useFeeCalculations( + transactionMetadata as TransactionMeta, + ); + const hideFiatForTestnet = useHideFiatForTestnet( + transactionMetadata?.chainId, + ); + + return ( + <View style={styles.container}> + <InfoSection> + <InfoRow label={strings('transactions.network_fee')}> + <View style={styles.valueContainer}> + {!hideFiatForTestnet && feeCalculations.estimatedFeeFiat && ( + <Text style={styles.secondaryValue}> + {feeCalculations.estimatedFeeFiat} + </Text> + )} + <Text style={styles.primaryValue}> + {feeCalculations.estimatedFeeNative} + </Text> + </View> + </InfoRow> + </InfoSection> + </View> + ); +}; + +export default GasFeesDetails; diff --git a/app/components/Views/confirmations/components/Confirm/Info/GasFeesDetails/index.ts b/app/components/Views/confirmations/components/Confirm/Info/GasFeesDetails/index.ts new file mode 100644 index 000000000000..9e44bb178802 --- /dev/null +++ b/app/components/Views/confirmations/components/Confirm/Info/GasFeesDetails/index.ts @@ -0,0 +1 @@ +export { default } from './GasFeesDetails'; diff --git a/app/components/Views/confirmations/components/Confirm/Info/Info.test.tsx b/app/components/Views/confirmations/components/Confirm/Info/Info.test.tsx index 59c7d40e9c5f..be88e4e3eaa1 100644 --- a/app/components/Views/confirmations/components/Confirm/Info/Info.test.tsx +++ b/app/components/Views/confirmations/components/Confirm/Info/Info.test.tsx @@ -1,14 +1,18 @@ import React from 'react'; +import { Text } from 'react-native'; import renderWithProvider from '../../../../../../util/test/renderWithProvider'; -import { - personalSignatureConfirmationState, - stakingDepositConfirmationState, -} from '../../../../../../util/test/confirm-data-helpers'; +import { personalSignatureConfirmationState } from '../../../../../../util/test/confirm-data-helpers'; // eslint-disable-next-line import/no-namespace import * as QRHardwareHook from '../../../context/QRHardwareContext/QRHardwareContext'; import Info from './Info'; -import { Text } from 'react-native'; + +jest.mock('@react-navigation/native', () => ({ + ...jest.requireActual('@react-navigation/native'), + useNavigation: () => ({ + goBack: jest.fn(), + }), +})); const MockText = Text; jest.mock('./QRInfo', () => () => <MockText>QR Scanning Component</MockText>); @@ -22,6 +26,24 @@ jest.mock('../../../../../../core/Engine', () => ({ }, getOrAddQRKeyring: jest.fn(), }, + GasFeeController: { + startPolling: jest.fn(), + stopPollingByPollingToken: jest.fn(), + }, + NetworkController: { + getNetworkConfigurationByNetworkClientId: jest.fn(), + }, + AccountsController: { + state: { + internalAccounts: { + accounts: { + '1': { + address: '0x935e73edb9ff52e23bac7f7e043a1ecd06d05477', + }, + }, + }, + }, + }, }, controllerMessenger: { subscribe: jest.fn(), @@ -46,12 +68,4 @@ describe('Info', () => { }); expect(getByText('QR Scanning Component')).toBeTruthy(); }); - describe('Staking Deposit', () => { - it('should render correctly', async () => { - const { getByText } = renderWithProvider(<Info />, { - state: stakingDepositConfirmationState, - }); - expect(getByText('Stake')).toBeDefined(); - }); - }); }); diff --git a/app/components/Views/confirmations/components/Confirm/Info/Info.tsx b/app/components/Views/confirmations/components/Confirm/Info/Info.tsx index 6a346724ce5a..7d3033a9cbb2 100644 --- a/app/components/Views/confirmations/components/Confirm/Info/Info.tsx +++ b/app/components/Views/confirmations/components/Confirm/Info/Info.tsx @@ -4,7 +4,7 @@ import React from 'react'; import useApprovalRequest from '../../../hooks/useApprovalRequest'; import { useTransactionMetadataRequest } from '../../../hooks/useTransactionMetadataRequest'; -import { useQRHardwareContext } from '../../../context/QRHardwareContext/QRHardwareContext'; +import { useQRHardwareContext } from '../../../context/QRHardwareContext'; import PersonalSign from './PersonalSign'; import QRInfo from './QRInfo'; import TypedSignV1 from './TypedSignV1'; diff --git a/app/components/Views/confirmations/components/Confirm/Info/PersonalSign/PersonalSign.test.tsx b/app/components/Views/confirmations/components/Confirm/Info/PersonalSign/PersonalSign.test.tsx index 239b70c5eb5b..f37c2e6e6447 100644 --- a/app/components/Views/confirmations/components/Confirm/Info/PersonalSign/PersonalSign.test.tsx +++ b/app/components/Views/confirmations/components/Confirm/Info/PersonalSign/PersonalSign.test.tsx @@ -17,6 +17,17 @@ jest.mock('../../../../../../../core/Engine', () => ({ }, getOrAddQRKeyring: jest.fn(), }, + AccountsController: { + state: { + internalAccounts: { + accounts: { + '1': { + address: '0x935e73edb9ff52e23bac7f7e043a1ecd06d05477', + }, + }, + }, + }, + }, }, controllerMessenger: { subscribe: jest.fn(), diff --git a/app/components/Views/confirmations/components/Confirm/Info/QRInfo/QRInfo.tsx b/app/components/Views/confirmations/components/Confirm/Info/QRInfo/QRInfo.tsx index 4481050a7ac1..73b4a4e299d4 100644 --- a/app/components/Views/confirmations/components/Confirm/Info/QRInfo/QRInfo.tsx +++ b/app/components/Views/confirmations/components/Confirm/Info/QRInfo/QRInfo.tsx @@ -15,7 +15,7 @@ import { useMetrics, } from '../../../../../../hooks/useMetrics'; import { useStyles } from '../../../../../../hooks/useStyles'; -import { useQRHardwareContext } from '../../../../context/QRHardwareContext/QRHardwareContext'; +import { useQRHardwareContext } from '../../../../context/QRHardwareContext'; import styleSheet from './QRInfo.styles'; const QRInfo = () => { diff --git a/app/components/Views/confirmations/components/Confirm/Info/Shared/InfoRowOrigin/InfoRowOrigin.tsx b/app/components/Views/confirmations/components/Confirm/Info/Shared/InfoRowOrigin/InfoRowOrigin.tsx index 2ee98b93fc16..db2f5bb503a1 100644 --- a/app/components/Views/confirmations/components/Confirm/Info/Shared/InfoRowOrigin/InfoRowOrigin.tsx +++ b/app/components/Views/confirmations/components/Confirm/Info/Shared/InfoRowOrigin/InfoRowOrigin.tsx @@ -27,7 +27,7 @@ const InfoRowOrigin = () => { testID={ConfirmationPageSectionsSelectorIDs.ORIGIN_INFO_SECTION} > <InfoRow - label={strings('confirm.request_from')} + label={strings('confirm.label.request_from')} tooltip={strings('confirm.personal_sign_tooltip')} > {/* TODO: request from url below will only work for signatures */} @@ -35,7 +35,7 @@ const InfoRowOrigin = () => { </InfoRow> {isSIWEMessage && ( <InfoRow - label={strings('confirm.signing_in_with')} + label={strings('confirm.label.signing_in_with')} testID={ ConfirmationPageSectionsSelectorIDs.SIWE_SIGNING_ACCOUNT_INFO_SECTION } diff --git a/app/components/Views/confirmations/components/Confirm/Info/StakingDeposit/Navbar.test.tsx b/app/components/Views/confirmations/components/Confirm/Info/StakingDeposit/Navbar.test.tsx new file mode 100644 index 000000000000..1b24a6409a75 --- /dev/null +++ b/app/components/Views/confirmations/components/Confirm/Info/StakingDeposit/Navbar.test.tsx @@ -0,0 +1,33 @@ +import React from 'react'; +import { render } from '@testing-library/react-native'; +import { getStakingDepositNavbar } from './Navbar'; + +describe('getStakingDepositNavbar', () => { + it('renders the header title correctly', () => { + const title = 'Test Title'; + const { getByText } = render( + <> + {getStakingDepositNavbar({ title, onReject: jest.fn() }).headerTitle()} + </>, + ); + + expect(getByText(title)).toBeTruthy(); + }); + + it('calls onReject when the back button is pressed', () => { + const onRejectMock = jest.fn(); + const { getByTestId } = render( + <> + {getStakingDepositNavbar({ + title: 'Test Title', + onReject: onRejectMock, + }).headerLeft()} + </>, + ); + + const backButton = getByTestId('staking-deposit-navbar-back-button'); + backButton.props.onPress(); + + expect(onRejectMock).toHaveBeenCalled(); + }); +}); diff --git a/app/components/Views/confirmations/components/Confirm/Info/StakingDeposit/Navbar.tsx b/app/components/Views/confirmations/components/Confirm/Info/StakingDeposit/Navbar.tsx new file mode 100644 index 000000000000..4e889634580e --- /dev/null +++ b/app/components/Views/confirmations/components/Confirm/Info/StakingDeposit/Navbar.tsx @@ -0,0 +1,50 @@ +import React from 'react'; +import { StyleSheet, View } from 'react-native'; +import { + default as MorphText, + TextVariant, +} from '../../../../../../../component-library/components/Texts/Text'; +import ButtonIcon, { + ButtonIconSizes, +} from '../../../../../../../component-library/components/Buttons/ButtonIcon'; +import { IconName } from '../../../../../../../component-library/components/Icons/Icon'; + +export function getStakingDepositNavbar({ + title, + onReject, +}: { + title: string; + onReject: () => void; +}) { + const innerStyles = StyleSheet.create({ + headerLeft: { + marginHorizontal: 16, + }, + headerTitle: { + alignItems: 'center', + }, + }); + + function handleBackPress() { + if (onReject) { + onReject(); + } + } + + return { + headerTitle: () => ( + <View style={innerStyles.headerTitle}> + <MorphText variant={TextVariant.HeadingMD}>{title}</MorphText> + </View> + ), + headerLeft: () => ( + <ButtonIcon + size={ButtonIconSizes.Lg} + iconName={IconName.ArrowLeft} + onPress={handleBackPress} + style={innerStyles.headerLeft} + testID="staking-deposit-navbar-back-button" + /> + ), + }; +} diff --git a/app/components/Views/confirmations/components/Confirm/Info/StakingDeposit/StakingDeposit.test.tsx b/app/components/Views/confirmations/components/Confirm/Info/StakingDeposit/StakingDeposit.test.tsx new file mode 100644 index 000000000000..4d1f6492beec --- /dev/null +++ b/app/components/Views/confirmations/components/Confirm/Info/StakingDeposit/StakingDeposit.test.tsx @@ -0,0 +1,43 @@ +import React from 'react'; + +import renderWithProvider from '../../../../../../../util/test/renderWithProvider'; +import { stakingDepositConfirmationState } from '../../../../../../../util/test/confirm-data-helpers'; +import StakingDeposit from './StakingDeposit'; + +jest.mock('../../../../../../../core/Engine', () => ({ + getTotalFiatAccountBalance: () => ({ tokenFiat: 10 }), + context: { + NetworkController: { + getNetworkConfigurationByNetworkClientId: jest.fn(), + }, + GasFeeController: { + startPolling: jest.fn(), + stopPollingByPollingToken: jest.fn(), + }, + }, +})); + +jest.mock('@react-navigation/native', () => { + const actualNav = jest.requireActual('@react-navigation/native'); + return { + ...actualNav, + useNavigation: () => ({ + navigate: jest.fn(), + setOptions: jest.fn(), + }), + }; +}); + +describe('StakingDeposit', () => { + it('should render correctly', () => { + const { getByText } = renderWithProvider(<StakingDeposit />, { + state: stakingDepositConfirmationState, + }); + expect(getByText('APR')).toBeDefined(); + expect(getByText('Est. annual reward')).toBeDefined(); + expect(getByText('Reward frequency')).toBeDefined(); + expect(getByText('Withdrawal time')).toBeDefined(); + expect(getByText('Network Fee')).toBeDefined(); + expect(getByText('Advanced details')).toBeDefined(); + }); +}); diff --git a/app/components/Views/confirmations/components/Confirm/Info/StakingDeposit/StakingDeposit.tsx b/app/components/Views/confirmations/components/Confirm/Info/StakingDeposit/StakingDeposit.tsx index 2ac48208913e..ee5f862f80f7 100644 --- a/app/components/Views/confirmations/components/Confirm/Info/StakingDeposit/StakingDeposit.tsx +++ b/app/components/Views/confirmations/components/Confirm/Info/StakingDeposit/StakingDeposit.tsx @@ -1,13 +1,35 @@ -import React from 'react'; - +import React, { useCallback, useEffect } from 'react'; +import { useNavigation } from '@react-navigation/native'; import { strings } from '../../../../../../../../locales/i18n'; -import FlatNavHeader from '../../FlatNavHeader'; +import AdvancedDetails from '../../AdvancedDetails/AdvancedDetails'; +import StakingDetails from '../../StakingDetails'; import TokenHero from '../../TokenHero'; +import GasFeesDetails from '../GasFeesDetails'; +import { getStakingDepositNavbar } from './Navbar'; + +const StakingDeposit = () => { + const navigation = useNavigation(); + + const updateNavBar = useCallback(() => { + navigation.setOptions( + getStakingDepositNavbar({ + title: strings('stake.stake'), + onReject: () => navigation.goBack(), + }), + ); + }, [navigation]); + + useEffect(() => { + updateNavBar(); + }, [updateNavBar]); -const StakingDeposit = () => ( - <> - <FlatNavHeader title={strings('stake.stake')} /> - <TokenHero /> - </> -); + return ( + <> + <TokenHero /> + <StakingDetails /> + <GasFeesDetails /> + <AdvancedDetails /> + </> + ); +}; export default StakingDeposit; diff --git a/app/components/Views/confirmations/components/Confirm/Info/TypedSignV1/TypedSignV1.test.tsx b/app/components/Views/confirmations/components/Confirm/Info/TypedSignV1/TypedSignV1.test.tsx index 2880947db4fb..37eeffd55edc 100644 --- a/app/components/Views/confirmations/components/Confirm/Info/TypedSignV1/TypedSignV1.test.tsx +++ b/app/components/Views/confirmations/components/Confirm/Info/TypedSignV1/TypedSignV1.test.tsx @@ -13,6 +13,17 @@ jest.mock('../../../../../../../core/Engine', () => ({ }, getOrAddQRKeyring: jest.fn(), }, + AccountsController: { + state: { + internalAccounts: { + accounts: { + '1': { + address: '0x935e73edb9ff52e23bac7f7e043a1ecd06d05477', + }, + }, + }, + }, + }, }, controllerMessenger: { subscribe: jest.fn(), diff --git a/app/components/Views/confirmations/components/Confirm/Info/TypedSignV3V4/InfoSectionOriginAndDetails/InfoSectionOriginAndDetails.styles.ts b/app/components/Views/confirmations/components/Confirm/Info/TypedSignV3V4/InfoSectionOriginAndDetails/InfoSectionOriginAndDetails.styles.ts new file mode 100644 index 000000000000..e0287e7021e9 --- /dev/null +++ b/app/components/Views/confirmations/components/Confirm/Info/TypedSignV3V4/InfoSectionOriginAndDetails/InfoSectionOriginAndDetails.styles.ts @@ -0,0 +1,10 @@ +import { StyleSheet } from 'react-native'; + +const styleSheet = () => StyleSheet.create({ + dividerContainer: { + marginTop: 4, + marginBottom: 12, + }, + }); + +export default styleSheet; diff --git a/app/components/Views/confirmations/components/Confirm/Info/TypedSignV3V4/InfoSectionOriginAndDetails/InfoSectionOriginAndDetails.test.tsx b/app/components/Views/confirmations/components/Confirm/Info/TypedSignV3V4/InfoSectionOriginAndDetails/InfoSectionOriginAndDetails.test.tsx new file mode 100644 index 000000000000..8c6b23c293f0 --- /dev/null +++ b/app/components/Views/confirmations/components/Confirm/Info/TypedSignV3V4/InfoSectionOriginAndDetails/InfoSectionOriginAndDetails.test.tsx @@ -0,0 +1,44 @@ +import React from 'react'; + +import renderWithProvider from '../../../../../../../../util/test/renderWithProvider'; +import { + typedSignV3ConfirmationState, + typedSignV4ConfirmationState, +} from '../../../../../../../../util/test/confirm-data-helpers'; +import { InfoSectionOriginAndDetails } from './InfoSectionOriginAndDetails'; + +describe('InfoSectionOriginAndDetails', () => { + it('renders origin', () => { + const { getByText } = renderWithProvider(<InfoSectionOriginAndDetails />, { + state: typedSignV4ConfirmationState, + }); + + expect(getByText('Request from')).toBeTruthy(); + expect(getByText('metamask.github.io')).toBeTruthy(); + }); + + it('renders "Interacting with" if associated with a valid verifying contract', () => { + const { getByText } = renderWithProvider(<InfoSectionOriginAndDetails />, { + state: typedSignV4ConfirmationState, + }); + + expect(getByText('Request from')).toBeTruthy(); + }); + + it('renders Spender if it is a Permit', () => { + const { getByText } = renderWithProvider(<InfoSectionOriginAndDetails />, { + state: typedSignV4ConfirmationState, + }); + + expect(getByText('Interacting with')).toBeTruthy(); + expect(getByText('0xCcCCc...ccccC')).toBeTruthy(); + }); + + it('does not render Spender if it is not a Permit', () => { + const { queryByText } = renderWithProvider(<InfoSectionOriginAndDetails />, { + state: typedSignV3ConfirmationState, + }); + + expect(queryByText('Spender')).toBeNull(); + }); +}); diff --git a/app/components/Views/confirmations/components/Confirm/Info/TypedSignV3V4/InfoSectionOriginAndDetails/InfoSectionOriginAndDetails.tsx b/app/components/Views/confirmations/components/Confirm/Info/TypedSignV3V4/InfoSectionOriginAndDetails/InfoSectionOriginAndDetails.tsx new file mode 100644 index 000000000000..14dee63a168d --- /dev/null +++ b/app/components/Views/confirmations/components/Confirm/Info/TypedSignV3V4/InfoSectionOriginAndDetails/InfoSectionOriginAndDetails.tsx @@ -0,0 +1,69 @@ +import React from 'react'; + +import { ConfirmationPageSectionsSelectorIDs } from '../../../../../../../../../e2e/selectors/Confirmation/ConfirmationView.selectors'; +import { strings } from '../../../../../../../../../locales/i18n'; +import { useStyles } from '../../../../../../../../component-library/hooks'; +import InfoRow from '../../../../UI/InfoRow'; +import { InfoRowDivider } from '../../../../UI/InfoRow/Divider/Divider'; +import InfoSection from '../../../../UI/InfoRow/InfoSection'; +import InfoRowAddress from '../../../../UI/InfoRow/InfoValue/Address'; +import DisplayURL from '../../../../UI/InfoRow/InfoValue/DisplayURL'; +import { isRecognizedPermit, parseTypedDataMessageFromSignatureRequest } from '../../../../../utils/signature'; +import { useSignatureRequest } from '../../../../../hooks/useSignatureRequest'; +import useApprovalRequest from '../../../../../hooks/useApprovalRequest'; +import { View } from 'react-native'; +import styleSheet from './InfoSectionOriginAndDetails.styles'; +import { isValidAddress } from 'ethereumjs-util'; + +export const InfoSectionOriginAndDetails = () => { + const { styles } = useStyles(styleSheet, {}); + + // signatureRequest from SignatureController does not include the origin + // so we need to use approvalRequest + const { approvalRequest } = useApprovalRequest(); + const origin = approvalRequest?.origin as string; + + const signatureRequest = useSignatureRequest(); + const isPermit = isRecognizedPermit(signatureRequest); + + const parsedMessage = parseTypedDataMessageFromSignatureRequest(signatureRequest); + const spender = parsedMessage?.message?.spender; + const verifyingContract = parsedMessage?.domain?.verifyingContract; + + if (!signatureRequest) { + return null; + } + + const chainId = signatureRequest.chainId; + + return ( + <InfoSection + testID={ConfirmationPageSectionsSelectorIDs.ORIGIN_INFO_SECTION} + > + {isPermit && spender && ( + <> + <InfoRow label={strings('confirm.label.spender')}> + <InfoRowAddress address={spender} chainId={chainId} /> + </InfoRow> + <View style={styles.dividerContainer}> + <InfoRowDivider /> + </View> + </> + )} + <InfoRow + label={strings('confirm.label.request_from')} + tooltip={strings('confirm.personal_sign_tooltip')} + > + <DisplayURL url={origin} /> + </InfoRow> + {isValidAddress(verifyingContract) && ( + <InfoRow label={strings('confirm.label.interacting_with')}> + <InfoRowAddress + address={verifyingContract} + chainId={chainId} + /> + </InfoRow> + )} + </InfoSection> + ); +}; diff --git a/app/components/Views/confirmations/components/Confirm/Info/TypedSignV3V4/InfoSectionOriginAndDetails/index.ts b/app/components/Views/confirmations/components/Confirm/Info/TypedSignV3V4/InfoSectionOriginAndDetails/index.ts new file mode 100644 index 000000000000..047d61a39f14 --- /dev/null +++ b/app/components/Views/confirmations/components/Confirm/Info/TypedSignV3V4/InfoSectionOriginAndDetails/index.ts @@ -0,0 +1 @@ +export { InfoSectionOriginAndDetails } from './InfoSectionOriginAndDetails'; diff --git a/app/components/Views/confirmations/components/Confirm/Info/TypedSignV3V4/Message.styles.ts b/app/components/Views/confirmations/components/Confirm/Info/TypedSignV3V4/Message.styles.ts index 068339af44ed..b6a2d1245e57 100644 --- a/app/components/Views/confirmations/components/Confirm/Info/TypedSignV3V4/Message.styles.ts +++ b/app/components/Views/confirmations/components/Confirm/Info/TypedSignV3V4/Message.styles.ts @@ -13,7 +13,7 @@ const styleSheet = (params: { theme: Theme }) => { }, dataRow: { paddingHorizontal: 0, - paddingBottom: 16, + paddingBottom: 8, }, title: { color: theme.colors.text.default, diff --git a/app/components/Views/confirmations/components/Confirm/Info/TypedSignV3V4/Message.tsx b/app/components/Views/confirmations/components/Confirm/Info/TypedSignV3V4/Message.tsx index aab7c80d1b54..acf00903bf2d 100644 --- a/app/components/Views/confirmations/components/Confirm/Info/TypedSignV3V4/Message.tsx +++ b/app/components/Views/confirmations/components/Confirm/Info/TypedSignV3V4/Message.tsx @@ -70,7 +70,7 @@ const Message = () => { messageCollapsed={ isSimulationSupported ? undefined : ( <InfoRow - label={strings('confirm.primary_type')} + label={strings('confirm.label.primary_type')} style={styles.collpasedInfoRow} > {primaryType} @@ -81,7 +81,7 @@ const Message = () => { <View> <Text style={styles.title}>{strings('confirm.message')}</Text> <InfoRow - label={strings('confirm.primary_type')} + label={strings('confirm.label.primary_type')} style={styles.dataRow} > {primaryType} diff --git a/app/components/Views/confirmations/components/Confirm/Info/TypedSignV3V4/Simulation/TypedSignDecoded/TypedSignDecoded.test.tsx b/app/components/Views/confirmations/components/Confirm/Info/TypedSignV3V4/Simulation/TypedSignDecoded/TypedSignDecoded.test.tsx index aeef90fe028e..b0b88c70c524 100644 --- a/app/components/Views/confirmations/components/Confirm/Info/TypedSignV3V4/Simulation/TypedSignDecoded/TypedSignDecoded.test.tsx +++ b/app/components/Views/confirmations/components/Confirm/Info/TypedSignV3V4/Simulation/TypedSignDecoded/TypedSignDecoded.test.tsx @@ -26,6 +26,16 @@ const stateChangesApprove = [ }, ]; +const stateChangesRevoke = [ + { + assetType: 'ERC20', + changeType: DecodingDataChangeType.Revoke, + address: '0x3fc91a3afd70395cd496c647d5a6cc9d4b2b7fad', + amount: '12345', + contractAddress: '0x6b175474e89094c44da98b954eedeac495271d0f', + }, +]; + const stateChangesListingERC1155: DecodingDataStateChanges = [ { assetType: 'NATIVE', @@ -112,6 +122,17 @@ describe('DecodedSimulation', () => { await waitFor(() => expect(getByText('12,345')).toBeDefined()); }); + it('renders for ERC20 revoke', async () => { + const { getByText } = renderWithProvider(<TypedSignDecoded />, { + state: mockState(stateChangesRevoke), + }); + + expect(await getByText('Estimated changes')).toBeDefined(); + expect(await getByText('Revoke')).toBeDefined(); + + await waitFor(() => expect(getByText('12,345')).toBeDefined()); + }); + it('renders "Unlimited" for large values', async () => { const { getByText } = renderWithProvider(<TypedSignDecoded />, { state: mockState([{ diff --git a/app/components/Views/confirmations/components/Confirm/Info/TypedSignV3V4/Simulation/TypedSignDecoded/TypedSignDecoded.tsx b/app/components/Views/confirmations/components/Confirm/Info/TypedSignV3V4/Simulation/TypedSignDecoded/TypedSignDecoded.tsx index d51866173b2b..42091bb07dc5 100644 --- a/app/components/Views/confirmations/components/Confirm/Info/TypedSignV3V4/Simulation/TypedSignDecoded/TypedSignDecoded.tsx +++ b/app/components/Views/confirmations/components/Confirm/Info/TypedSignV3V4/Simulation/TypedSignDecoded/TypedSignDecoded.tsx @@ -84,7 +84,7 @@ const getStateChangeLabelMap = ( ? strings('confirm.simulation.label_change_type_nft_listing') : strings('confirm.simulation.label_change_type_receive'), [DecodingDataChangeType.Approve]: strings('confirm.simulation.label_change_type_permit'), - [DecodingDataChangeType.Revoke]: strings('confirm.simulation.label_change_type_permit'), + [DecodingDataChangeType.Revoke]: strings('confirm.simulation.label_change_type_revoke'), [DecodingDataChangeType.Bidding]: strings('confirm.simulation.label_change_type_bidding'), [DecodingDataChangeType.Listing]: strings('confirm.simulation.label_change_type_listing'), }[changeType]); diff --git a/app/components/Views/confirmations/components/Confirm/Info/TypedSignV3V4/Simulation/TypedSignPermit/TypedSignPermit.test.tsx b/app/components/Views/confirmations/components/Confirm/Info/TypedSignV3V4/Simulation/TypedSignPermit/TypedSignPermit.test.tsx index 18bc200864aa..f89591f22d14 100644 --- a/app/components/Views/confirmations/components/Confirm/Info/TypedSignV3V4/Simulation/TypedSignPermit/TypedSignPermit.test.tsx +++ b/app/components/Views/confirmations/components/Confirm/Info/TypedSignV3V4/Simulation/TypedSignPermit/TypedSignPermit.test.tsx @@ -2,7 +2,7 @@ import React from 'react'; import { waitFor } from '@testing-library/react-native'; import renderWithProvider from '../../../../../../../../../util/test/renderWithProvider'; -import { typedSignV4ConfirmationState } from '../../../../../../../../../util/test/confirm-data-helpers'; +import { typedSignV4ConfirmationState, typedSignV4NFTConfirmationState } from '../../../../../../../../../util/test/confirm-data-helpers'; import PermitSimulation from './TypedSignPermit'; jest.mock('../../../../../../../../../core/Engine', () => ({ @@ -14,20 +14,37 @@ jest.mock('../../../../../../../../../core/Engine', () => ({ })); describe('PermitSimulation', () => { - it('should render correctly for personal sign', async () => { + it('should render correctly for Permit', async () => { const { getByText } = renderWithProvider(<PermitSimulation />, { state: typedSignV4ConfirmationState, }); - expect(getByText('Estimated changes')).toBeDefined(); + expect(getByText('Estimated changes')).toBeTruthy(); expect( getByText( "You're giving the spender permission to spend this many tokens from your account.", ), - ).toBeDefined(); - expect(getByText('Spending cap')).toBeDefined(); - expect(getByText('0xCcCCc...ccccC')).toBeDefined(); + ).toBeTruthy(); + expect(getByText('Spending cap')).toBeTruthy(); + expect(getByText('0xCcCCc...ccccC')).toBeTruthy(); - await waitFor(() => expect(getByText('3,000')).toBeDefined()); + await waitFor(() => expect(getByText('3,000')).toBeTruthy()); + }); + + it('should render correctly for Permit NFTs', async () => { + const { getByText } = renderWithProvider(<PermitSimulation />, { + state: typedSignV4NFTConfirmationState, + }); + + expect(getByText('Estimated changes')).toBeTruthy(); + expect( + getByText( + "You're giving the spender permission to spend this many tokens from your account.", + ), + ).toBeTruthy(); + expect(getByText('Withdraw')).toBeTruthy(); + expect(getByText('0xC3644...1FE88')).toBeTruthy(); + + await waitFor(() => expect(getByText('#3606393')).toBeTruthy()); }); }); diff --git a/app/components/Views/confirmations/components/Confirm/Info/TypedSignV3V4/Simulation/TypedSignPermit/TypedSignPermit.tsx b/app/components/Views/confirmations/components/Confirm/Info/TypedSignV3V4/Simulation/TypedSignPermit/TypedSignPermit.tsx index 9594f48ed6ea..42d0a0e841e6 100644 --- a/app/components/Views/confirmations/components/Confirm/Info/TypedSignV3V4/Simulation/TypedSignPermit/TypedSignPermit.tsx +++ b/app/components/Views/confirmations/components/Confirm/Info/TypedSignV3V4/Simulation/TypedSignPermit/TypedSignPermit.tsx @@ -71,7 +71,8 @@ const PermitSimulation = () => { const tokenDetails = extractTokenDetailsByPrimaryType(message, primaryType); - const isNFT = tokenId !== undefined; + const isNFT = tokenId !== undefined && tokenId !== '0'; + const labelChangeType = isNFT ? strings('confirm.simulation.label_change_type_permit_nft') : strings('confirm.simulation.label_change_type_permit'); @@ -87,24 +88,25 @@ const PermitSimulation = () => { <InfoRow label={labelChangeType}> {Array.isArray(tokenDetails) ? ( - <View style={styles.permitValues}> + <> {tokenDetails.map( ( { token, amount }: { token: string; amount: string }, i: number, ) => ( - <PermitSimulationValueDisplay - key={`${token}-${i}`} - modalHeaderText={labelChangeType} - networkClientId={networkClientId} - primaryType={primaryType} - tokenContract={safeToChecksumAddress(token)} - value={amount} - chainId={chainId} - /> + <View style={styles.permitValues} key={`${token}-${i}`}> + <PermitSimulationValueDisplay + modalHeaderText={labelChangeType} + networkClientId={networkClientId} + primaryType={primaryType} + tokenContract={safeToChecksumAddress(token)} + value={amount} + chainId={chainId} + /> + </View> ), )} - </View> + </> ) : ( <PermitSimulationValueDisplay modalHeaderText={labelChangeType} diff --git a/app/components/Views/confirmations/components/Confirm/Info/TypedSignV3V4/Simulation/components/ValueDisplay/ValueDisplay.test.tsx b/app/components/Views/confirmations/components/Confirm/Info/TypedSignV3V4/Simulation/components/ValueDisplay/ValueDisplay.test.tsx index dc6e376c363e..8a6731aaf98e 100644 --- a/app/components/Views/confirmations/components/Confirm/Info/TypedSignV3V4/Simulation/components/ValueDisplay/ValueDisplay.test.tsx +++ b/app/components/Views/confirmations/components/Confirm/Info/TypedSignV3V4/Simulation/components/ValueDisplay/ValueDisplay.test.tsx @@ -101,6 +101,24 @@ describe('SimulationValueDisplay', () => { expect(await findByTestId('simulation-value-display-loader')).toBeDefined(); }); + it('renders no value display if no value was loaded', () => { + (useGetTokenStandardAndDetails as jest.MockedFn<typeof useGetTokenStandardAndDetails>).mockReturnValue({ + details: { decimalsNumber: undefined }, + isPending: false, + }); + + const { queryByTestId } = renderWithProvider( + <SimulationValueDisplay + modalHeaderText={'Spending Cap'} + tokenContract={'0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48'} + value={''} + chainId={'0x1'} + />, + { state: mockInitialState }, + ); + expect(queryByTestId('simulation-value-display-loader')).not.toBeTruthy(); + }); + it('renders "Unlimited" for large values when canDisplayValueAsUnlimited is true', async () => { (useGetTokenStandardAndDetails as jest.MockedFn<typeof useGetTokenStandardAndDetails>).mockReturnValue({ details: { diff --git a/app/components/Views/confirmations/components/Confirm/Info/TypedSignV3V4/Simulation/components/ValueDisplay/ValueDisplay.tsx b/app/components/Views/confirmations/components/Confirm/Info/TypedSignV3V4/Simulation/components/ValueDisplay/ValueDisplay.tsx index 4993ca7648f6..7a0f0aa3aa2c 100644 --- a/app/components/Views/confirmations/components/Confirm/Info/TypedSignV3V4/Simulation/components/ValueDisplay/ValueDisplay.tsx +++ b/app/components/Views/confirmations/components/Confirm/Info/TypedSignV3V4/Simulation/components/ValueDisplay/ValueDisplay.tsx @@ -115,11 +115,14 @@ const SimulationValueDisplay: React.FC<SimulationValueDisplayParams> = ({ tokenDetails as TokenDetailsERC20, ); + const isNFT = tokenId !== undefined && tokenId !== '0'; + const tokenAmount = isNumberValue(value) && !tokenId ? calcTokenAmount(value as number | string, tokenDecimals) : null; const isValidTokenAmount = + !isNFT && tokenAmount !== null && tokenAmount !== undefined && tokenAmount instanceof BigNumber; @@ -150,32 +153,31 @@ const SimulationValueDisplay: React.FC<SimulationValueDisplayParams> = ({ return null; } + // Avoid empty button pill container + const showValueButtonPill = Boolean(isPendingTokenDetails + || shouldShowUnlimitedValue + || (tokenValue !== null || tokenId)); + function handlePressTokenValue() { setHasValueModalOpen(true); } - return ( - <View style={styles.wrapper}> - <View style={styles.flexRowTokenValueAndAddress}> - <View style={styles.valueAndAddress}> - { - <AnimatedPulse - isPulsing={isPendingTokenDetails} - testID="simulation-value-display-loader" - > - <ButtonPill - isDisabled={!!tokenId || tokenId === '0'} - onPress={handlePressTokenValue} - onPressIn={handlePressTokenValue} - onPressOut={handlePressTokenValue} - style={[ - credit && styles.valueIsCredit, - debit && styles.valueIsDebit, - ]} - > - {isPendingTokenDetails ? ( - <View style={styles.loaderButtonPillEmptyContent} /> - ) : ( + return ( + <View style={styles.wrapper}> + <View style={styles.flexRowTokenValueAndAddress}> + <View style={styles.valueAndAddress}> + {showValueButtonPill && + <AnimatedPulse isPulsing={isPendingTokenDetails} testID="simulation-value-display-loader"> + <ButtonPill + isDisabled={isNFT} + onPress={handlePressTokenValue} + onPressIn={handlePressTokenValue} + onPressOut={handlePressTokenValue} + style={[credit && styles.valueIsCredit, debit && styles.valueIsDebit]} + > + {isPendingTokenDetails ? + <View style={styles.loaderButtonPillEmptyContent} /> + : <Text> {credit && '+ '} {debit && '- '} @@ -190,7 +192,7 @@ const SimulationValueDisplay: React.FC<SimulationValueDisplayParams> = ({ })} {tokenId && `#${tokenId}`} </Text> - )} + } </ButtonPill> </AnimatedPulse> } diff --git a/app/components/Views/confirmations/components/Confirm/Info/TypedSignV3V4/TypedSignV3V4.test.tsx b/app/components/Views/confirmations/components/Confirm/Info/TypedSignV3V4/TypedSignV3V4.test.tsx index a62cd30d022a..eda9f314306e 100644 --- a/app/components/Views/confirmations/components/Confirm/Info/TypedSignV3V4/TypedSignV3V4.test.tsx +++ b/app/components/Views/confirmations/components/Confirm/Info/TypedSignV3V4/TypedSignV3V4.test.tsx @@ -21,6 +21,17 @@ jest.mock('../../../../../../../core/Engine', () => ({ NetworkController: { findNetworkClientIdByChainId: () => 123, }, + AccountsController: { + state: { + internalAccounts: { + accounts: { + '1': { + address: '0x935e73edb9ff52e23bac7f7e043a1ecd06d05477', + }, + }, + }, + }, + }, }, controllerMessenger: { subscribe: jest.fn(), @@ -32,7 +43,7 @@ jest.mock('../../../../hooks/useTokenDecimalsInTypedSignRequest', () => ({ })); describe('TypedSignV3V4', () => { -it('contains required text', () => { + it('contains required text', () => { const { getByText } = renderWithProvider(<TypedSignV3V4 />, { state: typedSignV3ConfirmationState, }); @@ -54,7 +65,7 @@ it('contains required text', () => { expect(queryByText('Mail')).toBeNull(); }); -it('shows detailed message when message section is clicked', () => { + it('shows detailed message when message section is clicked', () => { const { getByText, getAllByText } = renderWithProvider(<TypedSignV3V4 />, { state: typedSignV4ConfirmationState, }); diff --git a/app/components/Views/confirmations/components/Confirm/Info/TypedSignV3V4/TypedSignV3V4.tsx b/app/components/Views/confirmations/components/Confirm/Info/TypedSignV3V4/TypedSignV3V4.tsx index 8f7287802978..3ffe701b1631 100644 --- a/app/components/Views/confirmations/components/Confirm/Info/TypedSignV3V4/TypedSignV3V4.tsx +++ b/app/components/Views/confirmations/components/Confirm/Info/TypedSignV3V4/TypedSignV3V4.tsx @@ -1,6 +1,6 @@ import React from 'react'; import AccountNetworkInfo from '../../AccountNetworkInfo'; -import InfoRowOrigin from '../Shared/InfoRowOrigin'; +import { InfoSectionOriginAndDetails } from './InfoSectionOriginAndDetails'; import Message from './Message'; import TypedSignV3V4Simulation from './Simulation'; @@ -8,7 +8,7 @@ const TypedSignV3V4 = () => ( <> <AccountNetworkInfo /> <TypedSignV3V4Simulation /> - <InfoRowOrigin /> + <InfoSectionOriginAndDetails /> <Message /> </> ); diff --git a/app/components/Views/confirmations/components/Confirm/InfoRowDivider/InfoRowDivider.styles.ts b/app/components/Views/confirmations/components/Confirm/InfoRowDivider/InfoRowDivider.styles.ts new file mode 100644 index 000000000000..ec568934e805 --- /dev/null +++ b/app/components/Views/confirmations/components/Confirm/InfoRowDivider/InfoRowDivider.styles.ts @@ -0,0 +1,18 @@ +import { StyleSheet } from 'react-native'; +import { Theme } from '../../../../../../util/theme/models'; + +const styleSheet = (params: { theme: Theme }) => { + const { theme } = params; + + return StyleSheet.create({ + infoRowDivider:{ + height: 1, + backgroundColor: theme.colors.border.muted, + marginVertical: 8, + marginLeft: -8, + marginRight: -8, + }, + }); +}; + +export default styleSheet; diff --git a/app/components/Views/confirmations/components/Confirm/InfoRowDivider/InfoRowDivider.test.tsx b/app/components/Views/confirmations/components/Confirm/InfoRowDivider/InfoRowDivider.test.tsx new file mode 100644 index 000000000000..f9eeeb700d69 --- /dev/null +++ b/app/components/Views/confirmations/components/Confirm/InfoRowDivider/InfoRowDivider.test.tsx @@ -0,0 +1,26 @@ +import React from 'react'; +import { stakingDepositConfirmationState } from '../../../../../../util/test/confirm-data-helpers'; +import renderWithProvider from '../../../../../../util/test/renderWithProvider'; +import InfoRowDivider from './InfoRowDivider'; + +describe('InfoRowDivider', () => { + it('matches snapshot', async () => { + const { toJSON } = renderWithProvider(<InfoRowDivider />, { + state: stakingDepositConfirmationState, + }); + + expect(toJSON()).toMatchInlineSnapshot(` + <View + style={ + { + "backgroundColor": "#BBC0C566", + "height": 1, + "marginLeft": -8, + "marginRight": -8, + "marginVertical": 8, + } + } + /> + `); + }); +}); diff --git a/app/components/Views/confirmations/components/Confirm/InfoRowDivider/InfoRowDivider.tsx b/app/components/Views/confirmations/components/Confirm/InfoRowDivider/InfoRowDivider.tsx new file mode 100644 index 000000000000..20401028a331 --- /dev/null +++ b/app/components/Views/confirmations/components/Confirm/InfoRowDivider/InfoRowDivider.tsx @@ -0,0 +1,14 @@ +import React from 'react'; +import { View } from 'react-native'; +import { useStyles } from '../../../../../../component-library/hooks'; +import styleSheet from './InfoRowDivider.styles'; + +const InfoRowDivider = () => { + const { styles } = useStyles(styleSheet, {}); + + return ( + <View style={styles.infoRowDivider} /> + ); +}; + +export default InfoRowDivider; diff --git a/app/components/Views/confirmations/components/Confirm/InfoRowDivider/index.ts b/app/components/Views/confirmations/components/Confirm/InfoRowDivider/index.ts new file mode 100644 index 000000000000..ef33ae728244 --- /dev/null +++ b/app/components/Views/confirmations/components/Confirm/InfoRowDivider/index.ts @@ -0,0 +1 @@ +export { default } from './InfoRowDivider'; \ No newline at end of file diff --git a/app/components/Views/confirmations/components/Confirm/LedgerSignModal/LedgerSignModal.styles.ts b/app/components/Views/confirmations/components/Confirm/LedgerSignModal/LedgerSignModal.styles.ts new file mode 100644 index 000000000000..17680d57517d --- /dev/null +++ b/app/components/Views/confirmations/components/Confirm/LedgerSignModal/LedgerSignModal.styles.ts @@ -0,0 +1,25 @@ +import { StyleSheet } from 'react-native'; + +import { Theme } from '../../../../../../util/theme/models'; + +const styleSheet = (params: { theme: Theme }) => { + const { theme } = params; + + return StyleSheet.create({ + modal: { + height: 600, + margin: 0, + zIndex: 1000, + }, + contentWrapper: { + zIndex: 1000, + paddingHorizontal: 8, + marginHorizontal: 8, + paddingBottom: 32, + borderRadius: 20, + backgroundColor: theme.colors.background.default, + }, + }); +}; + +export default styleSheet; diff --git a/app/components/Views/confirmations/components/Confirm/LedgerSignModal/LedgerSignModal.test.tsx b/app/components/Views/confirmations/components/Confirm/LedgerSignModal/LedgerSignModal.test.tsx new file mode 100644 index 000000000000..791c649a0482 --- /dev/null +++ b/app/components/Views/confirmations/components/Confirm/LedgerSignModal/LedgerSignModal.test.tsx @@ -0,0 +1,92 @@ +import React from 'react'; +import { Button, Text, View } from 'react-native'; +import { fireEvent } from '@testing-library/react-native'; + +// eslint-disable-next-line import/no-namespace +import * as rpcEventsFuncs from '../../../../../../actions/rpcEvents'; +import renderWithProvider from '../../../../../../util/test/renderWithProvider'; +import { personalSignatureConfirmationState } from '../../../../../../util/test/confirm-data-helpers'; +// eslint-disable-next-line import/no-namespace +import * as ConfirmationActions from '../../../hooks/useConfirmActions'; + +import LedgerSignModal from './LedgerSignModal'; + +jest.mock('@react-navigation/native', () => ({ + ...jest.requireActual('@react-navigation/native'), + useNavigation: () => ({ + goBack: jest.fn(), + }), +})); + +const mockDeviceId = 'MockDeviceId'; +const mockCloseLedgerSignModal = jest.fn(); +jest.mock('../../../context/LedgerContext', () => ({ + useLedgerContext: () => ({ + deviceId: mockDeviceId, + closeLedgerSignModal: mockCloseLedgerSignModal, + }), +})); + +const MockView = View; +const MockText = Text; +const MockButton = Button; +jest.mock('../../../../../UI/LedgerModals/LedgerConfirmationModal', () => ({ + __esModule: true, + default: ({ + onConfirmation, + onRejection, + deviceId, + }: { + onConfirmation: () => void; + onRejection: () => void; + deviceId: string; + }) => ( + <MockView> + <MockText>Mock LedgerConfirmationModal</MockText> + <MockText>{deviceId}</MockText> + <MockButton onPress={onConfirmation} title="onConfirmation" /> + <MockButton onPress={onRejection} title="onRejection" /> + </MockView> + ), +})); + +describe('LedgerMessageSignModal', () => { + it('should render LedgerConfirmationModal correctly', () => { + const { getByText } = renderWithProvider(<LedgerSignModal />, { + state: personalSignatureConfirmationState, + }); + expect(getByText('Mock LedgerConfirmationModal')).toBeTruthy(); + expect(getByText(mockDeviceId)).toBeTruthy(); + }); + + it('should call onConfirm when request is confirmed', () => { + const mockOnConfirm = jest.fn(); + jest.spyOn(ConfirmationActions, 'useConfirmActions').mockReturnValue({ + onConfirm: mockOnConfirm, + onReject: jest.fn(), + }); + const { getByText } = renderWithProvider(<LedgerSignModal />, { + state: personalSignatureConfirmationState, + }); + fireEvent.press(getByText('onConfirmation')); + expect(mockOnConfirm).toHaveBeenCalledTimes(1); + }); + + it('should call onReject when request is rejected', () => { + const mockOnReject = jest.fn(); + jest.spyOn(ConfirmationActions, 'useConfirmActions').mockReturnValue({ + onConfirm: jest.fn(), + onReject: mockOnReject, + }); + jest + .spyOn(rpcEventsFuncs, 'resetEventStage') + .mockImplementation(() => ({ rpcName: 'dummy', type: 'DUMMY' })); + const { getByText } = renderWithProvider(<LedgerSignModal />, { + state: personalSignatureConfirmationState, + }); + fireEvent.press(getByText('onRejection')); + expect(mockOnReject).toHaveBeenCalledTimes(1); + expect(rpcEventsFuncs.resetEventStage).toHaveBeenCalledTimes(1); + expect(mockCloseLedgerSignModal).toHaveBeenCalledTimes(1); + }); +}); diff --git a/app/components/Views/confirmations/components/Confirm/LedgerSignModal/LedgerSignModal.tsx b/app/components/Views/confirmations/components/Confirm/LedgerSignModal/LedgerSignModal.tsx new file mode 100644 index 000000000000..d07a420aec1e --- /dev/null +++ b/app/components/Views/confirmations/components/Confirm/LedgerSignModal/LedgerSignModal.tsx @@ -0,0 +1,68 @@ +import React, { useCallback, useEffect } from 'react'; +import Modal from 'react-native-modal'; +import { View } from 'react-native'; +import { useDispatch, useSelector } from 'react-redux'; + +import { RootState } from '../../../../../../reducers'; +import { + RPCStageTypes, + iEventGroup, +} from '../../../../../../reducers/rpcEvents'; +import { resetEventStage } from '../../../../../../actions/rpcEvents'; +import LedgerConfirmationModal from '../../../../../UI/LedgerModals/LedgerConfirmationModal'; +import { useStyles } from '../../../../../hooks/useStyles'; +import { useConfirmActions } from '../../../hooks/useConfirmActions'; +import { useLedgerContext } from '../../../context/LedgerContext'; +import styleSheet from './LedgerSignModal.styles'; + +const LedgerSignModal = () => { + const dispatch = useDispatch(); + const { styles } = useStyles(styleSheet, {}); + const { signingEvent }: iEventGroup = useSelector( + (state: RootState) => state.rpcEvents, + ); + const { closeLedgerSignModal, deviceId } = useLedgerContext(); + const { onConfirm, onReject } = useConfirmActions(); + + const completeRequest = useCallback(() => { + closeLedgerSignModal(); + dispatch(resetEventStage(signingEvent.rpcName)); + }, [closeLedgerSignModal, dispatch, signingEvent.rpcName]); + + useEffect(() => { + //Close the modal when the signMessageStage is complete or error, error will return the error message to the user + if ( + signingEvent.eventStage === RPCStageTypes.COMPLETE || + signingEvent.eventStage === RPCStageTypes.ERROR + ) { + completeRequest(); + } + }, [signingEvent.eventStage, completeRequest]); + + const onConfirmation = useCallback(async () => { + onConfirm(); + }, [onConfirm]); + + const onRejection = useCallback(() => { + onReject(); + completeRequest(); + }, [completeRequest, onReject]); + + if (!deviceId) { + return null; + } + + return ( + <Modal isVisible style={styles.modal}> + <View style={styles.contentWrapper}> + <LedgerConfirmationModal + onConfirmation={onConfirmation} + onRejection={onRejection} + deviceId={deviceId} + /> + </View> + </Modal> + ); +}; + +export default LedgerSignModal; diff --git a/app/components/Views/confirmations/components/Confirm/LedgerSignModal/index.ts b/app/components/Views/confirmations/components/Confirm/LedgerSignModal/index.ts new file mode 100644 index 000000000000..b97dbaa9c78a --- /dev/null +++ b/app/components/Views/confirmations/components/Confirm/LedgerSignModal/index.ts @@ -0,0 +1 @@ +export { default } from './LedgerSignModal'; diff --git a/app/components/Views/confirmations/components/Confirm/StakingDetails/StakingDetails.styles.ts b/app/components/Views/confirmations/components/Confirm/StakingDetails/StakingDetails.styles.ts new file mode 100644 index 000000000000..124362412351 --- /dev/null +++ b/app/components/Views/confirmations/components/Confirm/StakingDetails/StakingDetails.styles.ts @@ -0,0 +1,31 @@ +import { StyleSheet } from 'react-native'; +import { fontStyles } from '../../../../../../styles/common'; +import { Theme } from '../../../../../../util/theme/models'; + +const styleSheet = (params: { theme: Theme }) => { + const { theme } = params; + + return StyleSheet.create({ + container:{ + paddingVertical: 8, + }, + primaryValue: { + color: theme.colors.text.default, + ...fontStyles.normal, + fontSize: 14, + }, + secondaryValue: { + color: theme.colors.text.alternative, + ...fontStyles.normal, + fontSize: 14, + marginRight: 8, + }, + valueContainer: { + display: 'flex', + flexDirection: 'row', + alignItems: 'center', + }, + }); +}; + +export default styleSheet; diff --git a/app/components/Views/confirmations/components/Confirm/StakingDetails/StakingDetails.test.tsx b/app/components/Views/confirmations/components/Confirm/StakingDetails/StakingDetails.test.tsx new file mode 100644 index 000000000000..934c6fca3beb --- /dev/null +++ b/app/components/Views/confirmations/components/Confirm/StakingDetails/StakingDetails.test.tsx @@ -0,0 +1,43 @@ +import { merge } from 'lodash'; +import React from 'react'; +import { RootState } from '../../../../../../reducers'; +import { decGWEIToHexWEI } from '../../../../../../util/conversions'; +import { stakingDepositConfirmationState } from '../../../../../../util/test/confirm-data-helpers'; +import renderWithProvider, { DeepPartial } from '../../../../../../util/test/renderWithProvider'; +import StakingDetails from './StakingDetails'; + +describe('TokenHero', () => { + it('contains token and fiat values for staking deposit', async () => { + const state: DeepPartial<RootState> = merge({}, stakingDepositConfirmationState, { + engine: { + backgroundState: { + TransactionController: { + transactions: [ + { + txParams: { value: `0x${decGWEIToHexWEI(10 ** 8)}` }, + }, + ], + }, + }, + }, + staking: { + vaultData: { apy: '2.2', }, + }, + }); + + const { getByText } = renderWithProvider(<StakingDetails />, { state }); + + expect(getByText('APR')).toBeDefined(); + expect(getByText('2.2%')).toBeDefined(); + + expect(getByText('Est. annual reward')).toBeDefined(); + expect(getByText('$7.91')).toBeDefined(); + expect(getByText('0.0022 ETH')).toBeDefined(); + + expect(getByText('Reward frequency')).toBeDefined(); + expect(getByText('12 hours')).toBeDefined(); + + expect(getByText('Withdrawal time')).toBeDefined(); + expect(getByText('1 to 11 days')).toBeDefined(); + }); +}); diff --git a/app/components/Views/confirmations/components/Confirm/StakingDetails/StakingDetails.tsx b/app/components/Views/confirmations/components/Confirm/StakingDetails/StakingDetails.tsx new file mode 100644 index 000000000000..247afe3f9b1f --- /dev/null +++ b/app/components/Views/confirmations/components/Confirm/StakingDetails/StakingDetails.tsx @@ -0,0 +1,46 @@ +import React from 'react'; +import { View } from 'react-native'; +import { ConfirmationPageSectionsSelectorIDs } from '../../../../../../../e2e/selectors/Confirmation/ConfirmationView.selectors'; +import { strings } from '../../../../../../../locales/i18n'; +import Text from '../../../../../../component-library/components/Texts/Text'; +import { useStyles } from '../../../../../../component-library/hooks'; +import { useStakingDetails } from '../../../hooks/useStakingDetails'; +import InfoRow from '../../UI/InfoRow'; +import InfoSection from '../../UI/InfoRow/InfoSection'; +import styleSheet from './StakingDetails.styles'; + +const StakingDetails = () => { + const { styles } = useStyles(styleSheet, {}); + const { apr, annualRewardsFiat, annualRewardsETH } = useStakingDetails(); + + return ( + <View style={styles.container}> + <InfoSection + testID={ConfirmationPageSectionsSelectorIDs.STAKING_DETAILS_SECTION} + > + <InfoRow label={strings('stake.apr')}> + {apr} + </InfoRow> + <InfoRow label={strings('stake.estimated_annual_reward')}> + <View style={styles.valueContainer}> + <Text style={styles.secondaryValue}>{annualRewardsFiat}</Text> + <Text style={styles.primaryValue}>{annualRewardsETH}</Text> + </View> + </InfoRow> + <InfoRow + label={strings('stake.reward_frequency')} + tooltip={ + strings('stake.reward_frequency_tooltip', { frequency: strings('stake.12_hours') }) + } + > + {strings('stake.12_hours')} + </InfoRow> + <InfoRow label={strings('stake.withdrawal_time')}> + {strings('stake.estimated_unstaking_time')} + </InfoRow> + </InfoSection> + </View> + ); +}; + +export default StakingDetails; diff --git a/app/components/Views/confirmations/components/Confirm/StakingDetails/index.ts b/app/components/Views/confirmations/components/Confirm/StakingDetails/index.ts new file mode 100644 index 000000000000..a196713eff59 --- /dev/null +++ b/app/components/Views/confirmations/components/Confirm/StakingDetails/index.ts @@ -0,0 +1 @@ +export { default } from './StakingDetails'; diff --git a/app/components/Views/confirmations/components/Confirm/Title/Title.styles.ts b/app/components/Views/confirmations/components/Confirm/Title/Title.styles.ts index c2760dbbaf31..c3acb68b7210 100644 --- a/app/components/Views/confirmations/components/Confirm/Title/Title.styles.ts +++ b/app/components/Views/confirmations/components/Confirm/Title/Title.styles.ts @@ -8,7 +8,7 @@ const styleSheet = (params: { theme: Theme }) => { return StyleSheet.create({ titleContainer: { - marginBottom: 24, + marginVertical: 24, }, title: { color: theme.colors.text.default, diff --git a/app/components/Views/confirmations/components/Confirm/Title/Title.test.tsx b/app/components/Views/confirmations/components/Confirm/Title/Title.test.tsx index d765549a8ea0..1fc3cdd9e037 100644 --- a/app/components/Views/confirmations/components/Confirm/Title/Title.test.tsx +++ b/app/components/Views/confirmations/components/Confirm/Title/Title.test.tsx @@ -1,30 +1,54 @@ import React from 'react'; -import renderWithProvider from '../../../../../../util/test/renderWithProvider'; import { personalSignatureConfirmationState, siweSignatureConfirmationState, + typedSignV4ConfirmationState, + typedSignV4NFTConfirmationState, } from '../../../../../../util/test/confirm-data-helpers'; +import renderWithProvider from '../../../../../../util/test/renderWithProvider'; import Title from './Title'; -describe('Title', () => { - it('should render correct title and subtitle for personal sign request', async () => { +describe('Confirm Title', () => { + it('renders the title and subtitle for a permit signature', () => { + const { getByText } = renderWithProvider(<Title />, { + state: typedSignV4ConfirmationState, + }); + + expect(getByText('Spending cap request')).toBeTruthy(); + expect( + getByText('This site wants permission to spend your tokens.'), + ).toBeTruthy(); + }); + + it('renders the title and subtitle for a permit NFT signature', () => { + const { getByText } = renderWithProvider(<Title />, { + state: typedSignV4NFTConfirmationState, + }); + + expect(getByText('Withdrawal request')).toBeTruthy(); + expect( + getByText('This site wants permission to withdraw your NFTs.'), + ).toBeTruthy(); + }); + + it('renders correct title and subtitle for personal sign request', () => { const { getByText } = renderWithProvider(<Title />, { state: personalSignatureConfirmationState, }); - expect(getByText('Signature request')).toBeDefined(); + expect(getByText('Signature request')).toBeTruthy(); expect( getByText('Review request details before you confirm.'), - ).toBeDefined(); + ).toBeTruthy(); }); - it('should render correct title and subtitle for personal siwe request', async () => { + it('should render correct title and subtitle for personal siwe request', () => { const { getByText } = renderWithProvider(<Title />, { state: siweSignatureConfirmationState, }); - expect(getByText('Sign-in request')).toBeDefined(); + expect(getByText('Sign-in request')).toBeTruthy(); expect( getByText('A site wants you to sign in to prove you own this account.'), - ).toBeDefined(); + ).toBeTruthy(); }); }); diff --git a/app/components/Views/confirmations/components/Confirm/Title/Title.tsx b/app/components/Views/confirmations/components/Confirm/Title/Title.tsx index 3b1c2d5a86ec..21f10c3a168d 100644 --- a/app/components/Views/confirmations/components/Confirm/Title/Title.tsx +++ b/app/components/Views/confirmations/components/Confirm/Title/Title.tsx @@ -1,21 +1,22 @@ import React from 'react'; -import { SignatureRequest } from '@metamask/signature-controller'; import { View } from 'react-native'; +import { ApprovalRequest } from '@metamask/approval-controller'; +import { SignatureRequest } from '@metamask/signature-controller'; import { TransactionType } from '@metamask/transaction-controller'; import { strings } from '../../../../../../../locales/i18n'; import { useStyles } from '../../../../../../component-library/hooks'; import Text from '../../../../../../component-library/components/Texts/Text'; import useApprovalRequest from '../../../hooks/useApprovalRequest'; -import { isSIWESignatureRequest } from '../../../utils/signature'; import { useSignatureRequest } from '../../../hooks/useSignatureRequest'; +import { isSIWESignatureRequest , isRecognizedPermit, parseTypedDataMessageFromSignatureRequest } from '../../../utils/signature'; +import { useStandaloneConfirmation } from '../../../hooks/useStandaloneConfirmation'; import styleSheet from './Title.styles'; -const getTitleAndSubTitle = ( - confirmationType?: string, - signatureRequest?: SignatureRequest, -) => { - switch (confirmationType) { +const getTitleAndSubTitle = (approvalRequest?: ApprovalRequest<{ data: string }>, signatureRequest?: SignatureRequest) => { + const type = approvalRequest?.type; + + switch (type) { case TransactionType.personalSign: { if (isSIWESignatureRequest(signatureRequest)) { return { @@ -28,11 +29,29 @@ const getTitleAndSubTitle = ( subTitle: strings('confirm.sub_title.signature'), }; } - case TransactionType.signTypedData: + case TransactionType.signTypedData: { + const isPermit = isRecognizedPermit(signatureRequest); + + if (isPermit) { + const { message } = parseTypedDataMessageFromSignatureRequest(signatureRequest); + const isERC721Permit = message?.tokenId !== undefined; + + if (isERC721Permit) { + return { + title: strings('confirm.title.permit_NFTs'), + subTitle: strings('confirm.sub_title.permit_NFTs'), + }; + } + return { + title: strings('confirm.title.permit'), + subTitle: strings('confirm.sub_title.permit'), + }; + } return { title: strings('confirm.title.signature'), subTitle: strings('confirm.sub_title.signature'), }; + } default: return {}; } @@ -42,11 +61,13 @@ const Title = () => { const { approvalRequest } = useApprovalRequest(); const signatureRequest = useSignatureRequest(); const { styles } = useStyles(styleSheet, {}); + const { isStandaloneConfirmation } = useStandaloneConfirmation(); - const { title, subTitle } = getTitleAndSubTitle( - approvalRequest?.type, - signatureRequest, - ); + if (isStandaloneConfirmation) { + return null; + } + + const { title, subTitle } = getTitleAndSubTitle(approvalRequest, signatureRequest); return ( <View style={styles.titleContainer}> diff --git a/app/components/Views/confirmations/components/Confirm/TokenHero/TokenHero.styles.ts b/app/components/Views/confirmations/components/Confirm/TokenHero/TokenHero.styles.ts index ab07733b5b5b..e13b0ef15d12 100644 --- a/app/components/Views/confirmations/components/Confirm/TokenHero/TokenHero.styles.ts +++ b/app/components/Views/confirmations/components/Confirm/TokenHero/TokenHero.styles.ts @@ -1,5 +1,4 @@ import { StyleSheet } from 'react-native'; - import { Theme } from '../../../../../../util/theme/models'; const styleSheet = (params: { theme: Theme }) => { @@ -12,8 +11,6 @@ const styleSheet = (params: { theme: Theme }) => { assetAmountText: { textAlign: 'center', }, - assetFiatConversionContainer: { - }, assetFiatConversionText: { textAlign: 'center', color: theme.colors.text.alternative, @@ -27,9 +24,10 @@ const styleSheet = (params: { theme: Theme }) => { width: 48, height: 48, }, - container:{ - paddingVertical: 8 - } + container: { + paddingBottom: 8, + paddingTop: 16, + }, }); }; diff --git a/app/components/Views/confirmations/components/Confirm/TokenHero/TokenHero.test.tsx b/app/components/Views/confirmations/components/Confirm/TokenHero/TokenHero.test.tsx index 04d301f58b66..050dfb3dc31d 100644 --- a/app/components/Views/confirmations/components/Confirm/TokenHero/TokenHero.test.tsx +++ b/app/components/Views/confirmations/components/Confirm/TokenHero/TokenHero.test.tsx @@ -1,15 +1,54 @@ import React from 'react'; -import renderWithProvider from '../../../../../../util/test/renderWithProvider'; +import renderWithProvider, { DeepPartial } from '../../../../../../util/test/renderWithProvider'; import { stakingDepositConfirmationState } from '../../../../../../util/test/confirm-data-helpers'; import TokenHero from './TokenHero'; +import { fireEvent, waitFor } from '@testing-library/react-native'; +import { merge } from 'lodash'; +import { RootState } from '../../../../../../reducers'; +import { decGWEIToHexWEI } from '../../../../../../util/conversions'; describe('TokenHero', () => { it('contains token and fiat values for staking deposit', async () => { const { getByText } = renderWithProvider(<TokenHero />, { state: stakingDepositConfirmationState, }); + expect(getByText('0.0001 ETH')).toBeDefined(); expect(getByText('$0.36')).toBeDefined(); }); + + it('contains token and fiat values for staking deposit', async () => { + const state: DeepPartial<RootState> = merge( + {}, + stakingDepositConfirmationState, + { + engine: { + backgroundState: { + TransactionController: { + transactions: [ + { txParams: { value: `0x${decGWEIToHexWEI(12345678.9)}` } }, + ], + }, + }, + }, + }, + ); + + const { getByText } = renderWithProvider( + <TokenHero />, + { state }, + ); + + expect(getByText('0.0123 ETH')).toBeDefined(); + expect(getByText('$44.40')).toBeDefined(); + + const tokenAmountText = getByText('0.0123 ETH'); + fireEvent.press(tokenAmountText); + + await waitFor(() => { + expect(getByText('Amount')).toBeDefined(); + expect(getByText('0.0123456789')).toBeDefined(); + }); + }); }); diff --git a/app/components/Views/confirmations/components/Confirm/TokenHero/TokenHero.tsx b/app/components/Views/confirmations/components/Confirm/TokenHero/TokenHero.tsx index 6a7699573eec..aa4ef1bcd764 100644 --- a/app/components/Views/confirmations/components/Confirm/TokenHero/TokenHero.tsx +++ b/app/components/Views/confirmations/components/Confirm/TokenHero/TokenHero.tsx @@ -1,17 +1,18 @@ -import React from 'react'; -import { View, StyleSheet } from 'react-native'; - +import React, { useState } from 'react'; +import { StyleSheet, TouchableOpacity, View } from 'react-native'; +import { strings } from '../../../../../../../locales/i18n'; import Badge, { BadgeVariant, } from '../../../../../../component-library/components/Badges/Badge'; import BadgeWrapper from '../../../../../../component-library/components/Badges/BadgeWrapper'; -import { useStyles } from '../../../../../../component-library/hooks'; -import images from '../../../../../../images/image-icons'; -import TokenIcon from '../../../../../UI/Swaps/components/TokenIcon'; import Text, { TextVariant, } from '../../../../../../component-library/components/Texts/Text'; +import { useStyles } from '../../../../../../component-library/hooks'; +import images from '../../../../../../images/image-icons'; +import TokenIcon from '../../../../../UI/Swaps/components/TokenIcon'; import { useTokenValues } from '../../../hooks/useTokenValues'; +import { TooltipModal } from '../../UI/Tooltip/Tooltip'; import styleSheet from './TokenHero.styles'; const NetworkAndTokenImage = ({ @@ -21,30 +22,40 @@ const NetworkAndTokenImage = ({ tokenSymbol: string; styles: StyleSheet.NamedStyles<Record<string, unknown>>; }) => ( - <View style={styles.networkAndTokenContainer}> - <BadgeWrapper - badgeElement={ - <Badge imageSource={images.ETHEREUM} variant={BadgeVariant.Network} /> - } - > - <TokenIcon big symbol={tokenSymbol} /> - </BadgeWrapper> - </View> - ); + <View style={styles.networkAndTokenContainer}> + <BadgeWrapper + badgeElement={ + <Badge imageSource={images.ETHEREUM} variant={BadgeVariant.Network} /> + } + > + <TokenIcon big symbol={tokenSymbol} /> + </BadgeWrapper> + </View> +); const AssetAmount = ({ tokenAmountDisplayValue, tokenSymbol, styles, + setIsModalVisible, }: { tokenAmountDisplayValue: string; tokenSymbol: string; styles: StyleSheet.NamedStyles<Record<string, unknown>>; + setIsModalVisible: ((isModalVisible: boolean) => void) | null; }) => ( <View style={styles.assetAmountContainer}> - <Text style={styles.assetAmountText} variant={TextVariant.HeadingLG}> - {tokenAmountDisplayValue} {tokenSymbol} - </Text> + {setIsModalVisible ? ( + <TouchableOpacity onPress={() => setIsModalVisible(true)}> + <Text style={styles.assetAmountText} variant={TextVariant.HeadingLG}> + {tokenAmountDisplayValue} {tokenSymbol} + </Text> + </TouchableOpacity> + ) : ( + <Text style={styles.assetAmountText} variant={TextVariant.HeadingLG}> + {tokenAmountDisplayValue} {tokenSymbol} + </Text> + )} </View> ); @@ -55,16 +66,17 @@ const AssetFiatConversion = ({ fiatDisplayValue: string; styles: StyleSheet.NamedStyles<Record<string, unknown>>; }) => ( - <View style={styles.assetFiatConversionContainer}> - <Text style={styles.assetFiatConversionText} variant={TextVariant.BodyMD}> - {fiatDisplayValue} - </Text> - </View> - ); + <Text style={styles.assetFiatConversionText} variant={TextVariant.BodyMD}> + {fiatDisplayValue} + </Text> +); const TokenHero = () => { const { styles } = useStyles(styleSheet, {}); - const { fiatDisplayValue, tokenAmountDisplayValue } = useTokenValues(); + const { tokenAmountValue, tokenAmountDisplayValue, fiatDisplayValue } = useTokenValues(); + const [isModalVisible, setIsModalVisible] = useState(false); + + const displayTokenAmountIsRounded = tokenAmountValue !== tokenAmountDisplayValue; const tokenSymbol = 'ETH'; @@ -75,11 +87,21 @@ const TokenHero = () => { tokenAmountDisplayValue={tokenAmountDisplayValue} tokenSymbol={tokenSymbol} styles={styles} + setIsModalVisible={displayTokenAmountIsRounded ? setIsModalVisible : null} /> <AssetFiatConversion fiatDisplayValue={fiatDisplayValue} styles={styles} /> + {displayTokenAmountIsRounded && ( + <TooltipModal + open={isModalVisible} + setOpen={setIsModalVisible} + content={tokenAmountValue} + title={strings('send.amount')} + tooltipTestId='token-hero-amount' + /> + )} </View> ); }; diff --git a/app/components/Views/confirmations/components/SignatureRequest/index.js b/app/components/Views/confirmations/components/SignatureRequest/index.js index 9ba8a8eaf0cc..46303529c21a 100644 --- a/app/components/Views/confirmations/components/SignatureRequest/index.js +++ b/app/components/Views/confirmations/components/SignatureRequest/index.js @@ -116,7 +116,7 @@ const createStyles = (colors) => arrowIcon: { color: colors.icon.muted, }, - blockaidBanner: { + blockaidBannerContainer: { marginHorizontal: 20, marginBottom: 20, }, @@ -361,11 +361,12 @@ class SignatureRequest extends PureComponent { {strings('signature_request.signing')} </Text> </View> - <BlockaidBanner - securityAlertResponse={securityAlertResponse} - style={styles.blockaidBanner} - onContactUsClicked={this.onContactUsClicked} - /> + <View style={styles.blockaidBannerContainer}> + <BlockaidBanner + securityAlertResponse={securityAlertResponse} + onContactUsClicked={this.onContactUsClicked} + /> + </View> {this.renderActionViewChildren()} </View> </ActionView> diff --git a/app/components/Views/confirmations/components/TransactionReview/__snapshots__/index.test.tsx.snap b/app/components/Views/confirmations/components/TransactionReview/__snapshots__/index.test.tsx.snap index db03a1543961..621575792ee9 100644 --- a/app/components/Views/confirmations/components/TransactionReview/__snapshots__/index.test.tsx.snap +++ b/app/components/Views/confirmations/components/TransactionReview/__snapshots__/index.test.tsx.snap @@ -78,7 +78,7 @@ exports[`TransactionReview should match snapshot 1`] = ` <View style={ { - "marginBottom": -8, + "marginBottom": 8, "marginHorizontal": 16, } } diff --git a/app/components/Views/confirmations/components/TransactionReview/index.js b/app/components/Views/confirmations/components/TransactionReview/index.js index 465e20c58071..43cf7499c914 100644 --- a/app/components/Views/confirmations/components/TransactionReview/index.js +++ b/app/components/Views/confirmations/components/TransactionReview/index.js @@ -113,9 +113,9 @@ const createStyles = (colors) => marginRight: 24, marginBottom: 24, }, - blockAidBannerContainer: { + blockaidBannerContainer: { marginHorizontal: 16, - marginBottom: -8, + marginBottom: 8, }, smartTransactionsMigrationBanner: { marginHorizontal: 16, @@ -273,6 +273,10 @@ class TransactionReview extends PureComponent { * Object containing the current transaction metadata */ transactionMetadata: PropTypes.object, + /** + * Network client id + */ + networkClientId: PropTypes.string, }; state = { @@ -287,7 +291,7 @@ class TransactionReview extends PureComponent { }; fetchEstimatedL1Fee = async () => { - const { transaction, chainId } = this.props; + const { transaction, chainId, networkClientId } = this.props; if (!transaction?.transaction) { return; } @@ -298,6 +302,7 @@ class TransactionReview extends PureComponent { const result = await fetchEstimatedMultiLayerL1Fee(eth, { txParams: transaction.transaction, chainId, + networkClientId, }); this.setState({ multiLayerL1FeeTotal: result, @@ -591,10 +596,9 @@ class TransactionReview extends PureComponent { sdkDappMetadata={sdkDappMetadata} url={url} /> - <View style={styles.blockAidBannerContainer}> + <View style={styles.blockaidBannerContainer}> <TransactionBlockaidBanner transactionId={transactionId} - style={styles.blockaidWarning} onContactUsClicked={this.onContactUsClicked} /> </View> @@ -715,6 +719,8 @@ class TransactionReview extends PureComponent { const mapStateToProps = (state) => { const transaction = getNormalizedTxState(state); const chainId = transaction?.chainId; + const transactionMetadata = selectCurrentTransactionMetadata(state); + const networkClientId = transactionMetadata?.networkClientId; return { tokens: selectTokens(state), @@ -731,7 +737,8 @@ const mapStateToProps = (state) => { shouldUseSmartTransaction: selectShouldUseSmartTransaction(state), useTransactionSimulations: selectUseTransactionSimulations(state), securityAlertResponse: selectCurrentTransactionSecurityAlertResponse(state), - transactionMetadata: selectCurrentTransactionMetadata(state), + transactionMetadata, + networkClientId, }; }; diff --git a/app/components/Views/confirmations/components/TransactionReview/index.test.tsx b/app/components/Views/confirmations/components/TransactionReview/index.test.tsx index 44cdc20042b3..a5edb04a8285 100644 --- a/app/components/Views/confirmations/components/TransactionReview/index.test.tsx +++ b/app/components/Views/confirmations/components/TransactionReview/index.test.tsx @@ -51,16 +51,17 @@ jest.mock( jest.mock('../../../../../selectors/smartTransactionsController', () => ({ selectSmartTransactionsEnabled: () => false, selectShouldUseSmartTransaction: () => false, + selectPendingSmartTransactionsBySender: () => [], })); jest.mock('../../../../../reducers/swaps', () => ({ swapsStateSelector: () => ({ featureFlags: { smart_transactions: { - mobile_active: false - } - } - }) + mobile_active: false, + }, + }, + }), })); const MOCK_ADDRESS_1 = '0xC4955C0d639D99699Bfd7Ec54d9FaFEe40e4D272'; diff --git a/app/components/Views/confirmations/components/TypedSign/__snapshots__/index.test.tsx.snap b/app/components/Views/confirmations/components/TypedSign/__snapshots__/index.test.tsx.snap index 62ce87f7c0de..64ad0efbdb45 100644 --- a/app/components/Views/confirmations/components/TypedSign/__snapshots__/index.test.tsx.snap +++ b/app/components/Views/confirmations/components/TypedSign/__snapshots__/index.test.tsx.snap @@ -111,6 +111,14 @@ exports[`TypedSign onConfirm signs message 1`] = ` Sign this message? </Text> </View> + <View + style={ + { + "marginBottom": 20, + "marginHorizontal": 20, + } + } + /> <View style={ { @@ -776,6 +784,14 @@ exports[`TypedSign onReject rejects message 1`] = ` Sign this message? </Text> </View> + <View + style={ + { + "marginBottom": 20, + "marginHorizontal": 20, + } + } + /> <View style={ { diff --git a/app/components/Views/confirmations/components/UI/BottomModal/BottomModal.tsx b/app/components/Views/confirmations/components/UI/BottomModal/BottomModal.tsx index 1534a4cba1ad..ceb7f70f2040 100644 --- a/app/components/Views/confirmations/components/UI/BottomModal/BottomModal.tsx +++ b/app/components/Views/confirmations/components/UI/BottomModal/BottomModal.tsx @@ -8,11 +8,11 @@ import styleSheet from './BottomModal.styles'; const OPAQUE_GRAY = '#414141'; interface BottomModalProps { - canCloseOnBackdropClick?: boolean; children: ReactChild; onClose?: () => void; hideBackground?: boolean; testID?: string; + visible?: boolean; } /** @@ -20,18 +20,18 @@ interface BottomModalProps { * {@see {@link https://github.com/MetaMask/metamask-mobile/issues/12656}} */ const BottomModal = ({ - canCloseOnBackdropClick = true, children, hideBackground, onClose, testID, + visible = true, }: BottomModalProps) => { const { colors } = useTheme(); const { styles } = useStyles(styleSheet, {}); return ( <Modal - isVisible + isVisible={visible} animationIn="slideInUp" animationOut="slideOutDown" style={styles.bottomModal} @@ -40,7 +40,7 @@ const BottomModal = ({ animationInTiming={600} animationOutTiming={600} onBackButtonPress={onClose} - onBackdropPress={canCloseOnBackdropClick ? onClose : undefined} + onBackdropPress={onClose} onSwipeComplete={onClose} swipeDirection={'down'} propagateSwipe diff --git a/app/components/Views/confirmations/components/UI/ExpandableSection/ExpandableSection.tsx b/app/components/Views/confirmations/components/UI/ExpandableSection/ExpandableSection.tsx index 8eb977cb4455..6f1d76c7df66 100644 --- a/app/components/Views/confirmations/components/UI/ExpandableSection/ExpandableSection.tsx +++ b/app/components/Views/confirmations/components/UI/ExpandableSection/ExpandableSection.tsx @@ -65,7 +65,7 @@ const ExpandableSection = ({ </View> </TouchableOpacity> {expanded && ( - <BottomModal onClose={() => setExpanded(false)} canCloseOnBackdropClick> + <BottomModal onClose={() => setExpanded(false)}> <View style={styles.modalContent}> <View style={styles.modalHeader}> <ButtonIcon diff --git a/app/components/Views/confirmations/components/UI/InfoRow/Divider/Divider.test.tsx b/app/components/Views/confirmations/components/UI/InfoRow/Divider/Divider.test.tsx new file mode 100644 index 000000000000..00ff53acfcd2 --- /dev/null +++ b/app/components/Views/confirmations/components/UI/InfoRow/Divider/Divider.test.tsx @@ -0,0 +1,15 @@ +import React from 'react'; +import { InfoRowDivider } from './Divider'; +import renderWithProvider from '../../../../../../../util/test/renderWithProvider'; + +describe('InfoRowDivider', () => { + it('should use correct styles from useStyles hook', () => { + const wrapper = renderWithProvider(<InfoRowDivider />); + + expect(wrapper.root.props.style).toEqual({ + height: 1, + backgroundColor: '#BBC0C566', + marginHorizontal: -8, + }); + }); +}); diff --git a/app/components/Views/confirmations/components/UI/InfoRow/Divider/Divider.tsx b/app/components/Views/confirmations/components/UI/InfoRow/Divider/Divider.tsx new file mode 100644 index 000000000000..e94e0bb800b2 --- /dev/null +++ b/app/components/Views/confirmations/components/UI/InfoRow/Divider/Divider.tsx @@ -0,0 +1,23 @@ +import React from 'react'; +import { StyleSheet, View } from 'react-native'; +import { useStyles } from '../../../../../../../component-library/hooks'; +import { Theme } from '../../../../../../../util/theme/models'; + +const styleSheet = ({ theme }: { theme: Theme }) => StyleSheet.create({ + base: { + height: 1, + backgroundColor: theme.colors.border.muted, + // Ignore the padding from the section. + marginHorizontal: -8, + }, +}); + +export const InfoRowDivider: React.FC = () => { + const { styles } = useStyles(styleSheet, {}); + + return ( + <View + style={styles.base} + /> + ); +}; diff --git a/app/components/Views/confirmations/components/UI/InfoRow/Divider/index.ts b/app/components/Views/confirmations/components/UI/InfoRow/Divider/index.ts new file mode 100644 index 000000000000..1f9d97236fbb --- /dev/null +++ b/app/components/Views/confirmations/components/UI/InfoRow/Divider/index.ts @@ -0,0 +1 @@ +export { InfoRowDivider } from './Divider'; diff --git a/app/components/Views/confirmations/components/UI/InfoRow/InfoRow.styles.ts b/app/components/Views/confirmations/components/UI/InfoRow/InfoRow.styles.ts index 3c8efc1d8126..e2e59f207ccb 100644 --- a/app/components/Views/confirmations/components/UI/InfoRow/InfoRow.styles.ts +++ b/app/components/Views/confirmations/components/UI/InfoRow/InfoRow.styles.ts @@ -11,7 +11,7 @@ const styleSheet = (params: { theme: Theme }) => { display: 'flex', flexDirection: 'row', justifyContent: 'space-between', - alignItems: 'baseline', + alignItems: 'center', flexWrap: 'wrap', paddingBottom: 8, paddingHorizontal: 8, @@ -19,23 +19,26 @@ const styleSheet = (params: { theme: Theme }) => { labelContainer: { display: 'flex', flexDirection: 'row', + alignSelf: 'flex-start', alignItems: 'center', - marginTop: 8, + minHeight: 38, + paddingEnd: 4, }, label: { color: theme.colors.text.default, ...fontStyles.bold, fontSize: 14, fontWeight: '500', + alignItems: 'center', + justifyContent: 'center', }, value: { color: theme.colors.text.default, ...fontStyles.normal, fontSize: 14, - marginTop: 8, }, valueComponent: { - alignSelf: 'flex-end', + marginLeft: 'auto', }, }); }; diff --git a/app/components/Views/confirmations/components/UI/InfoRow/InfoRow.tsx b/app/components/Views/confirmations/components/UI/InfoRow/InfoRow.tsx index 535550607b07..7e06de540299 100644 --- a/app/components/Views/confirmations/components/UI/InfoRow/InfoRow.tsx +++ b/app/components/Views/confirmations/components/UI/InfoRow/InfoRow.tsx @@ -1,6 +1,5 @@ import React, { ReactNode } from 'react'; import { View } from 'react-native'; - import Text from '../../../../../../component-library/components/Texts/Text'; import { useStyles } from '../../../../../../component-library/hooks'; import Tooltip from '../Tooltip'; @@ -28,10 +27,12 @@ const InfoRow = ({ style={{ ...styles.container, ...style }} testID={testID ?? 'info-row'} > - <View style={styles.labelContainer}> - <Text style={styles.label}>{label}</Text> - {tooltip && <Tooltip content={tooltip} />} - </View> + {Boolean(label) && ( + <View style={styles.labelContainer}> + <Text style={styles.label}>{label}</Text> + {tooltip && <Tooltip content={tooltip} title={label} />} + </View> + )} {typeof children === 'string' ? ( <Text style={styles.value}>{children}</Text> ) : ( diff --git a/app/components/Views/confirmations/components/UI/InfoRow/InfoSection/InfoSection.styles.ts b/app/components/Views/confirmations/components/UI/InfoRow/InfoSection/InfoSection.styles.ts index 65eb15b65dd0..4670574d71ba 100644 --- a/app/components/Views/confirmations/components/UI/InfoRow/InfoSection/InfoSection.styles.ts +++ b/app/components/Views/confirmations/components/UI/InfoRow/InfoSection/InfoSection.styles.ts @@ -9,7 +9,9 @@ const styleSheet = (params: { theme: Theme }) => { container: { backgroundColor: theme.colors.background.default, borderRadius: 8, - padding: 8, + paddingTop: 12, + paddingBottom: 8, + paddingHorizontal: 8, marginBottom: 8, }, }); diff --git a/app/components/Views/confirmations/components/UI/InfoRow/InfoValue/DisplayURL/DisplayURL.styles.ts b/app/components/Views/confirmations/components/UI/InfoRow/InfoValue/DisplayURL/DisplayURL.styles.ts index d0f448254c73..a1089d28be5b 100644 --- a/app/components/Views/confirmations/components/UI/InfoRow/InfoValue/DisplayURL/DisplayURL.styles.ts +++ b/app/components/Views/confirmations/components/UI/InfoRow/InfoValue/DisplayURL/DisplayURL.styles.ts @@ -16,7 +16,6 @@ const styleSheet = (params: { theme: Theme }) => { color: theme.colors.text.default, ...fontStyles.normal, fontSize: 14, - marginTop: 8, }, warningContainer: { display: 'flex', diff --git a/app/components/Views/confirmations/components/UI/InfoRow/InfoValue/DisplayURL/DisplayURL.test.tsx b/app/components/Views/confirmations/components/UI/InfoRow/InfoValue/DisplayURL/DisplayURL.test.tsx index 8de6330f4b54..046b1faaca19 100644 --- a/app/components/Views/confirmations/components/UI/InfoRow/InfoValue/DisplayURL/DisplayURL.test.tsx +++ b/app/components/Views/confirmations/components/UI/InfoRow/InfoValue/DisplayURL/DisplayURL.test.tsx @@ -4,14 +4,14 @@ import { render } from '@testing-library/react-native'; import DisplayURL from './DisplayURL'; describe('DisplayURL', () => { - it('should display url as expected', async () => { - const container = render(<DisplayURL url="https://google.com" />); - expect(container).toMatchSnapshot(); + it('displays url without protocol', () => { + const { getByText } = render(<DisplayURL url="https://google.com" />); + expect(getByText('google.com')).toBeTruthy(); }); - it('should show warning if protocol is HTTP', async () => { + it('displays warning if protocol is HTTP', () => { const { getByText } = render(<DisplayURL url="http://google.com" />); - expect(getByText('HTTP')).toBeDefined(); + expect(getByText('HTTP')).toBeTruthy(); }); it('displays only the host part of the URL', () => { diff --git a/app/components/Views/confirmations/components/UI/InfoRow/InfoValue/DisplayURL/__snapshots__/DisplayURL.test.tsx.snap b/app/components/Views/confirmations/components/UI/InfoRow/InfoValue/DisplayURL/__snapshots__/DisplayURL.test.tsx.snap deleted file mode 100644 index 4fe47d0300bb..000000000000 --- a/app/components/Views/confirmations/components/UI/InfoRow/InfoValue/DisplayURL/__snapshots__/DisplayURL.test.tsx.snap +++ /dev/null @@ -1,30 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`DisplayURL should display url as expected 1`] = ` -<View - style={ - { - "alignItems": "center", - "display": "flex", - "flexDirection": "row", - } - } -> - <Text - accessibilityRole="text" - style={ - { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, - "fontWeight": "400", - "letterSpacing": 0, - "lineHeight": 22, - "marginTop": 8, - } - } - > - google.com - </Text> -</View> -`; diff --git a/app/components/Views/confirmations/components/UI/InfoRow/InfoValue/TokenValue/TokenValue.test.tsx b/app/components/Views/confirmations/components/UI/InfoRow/InfoValue/TokenValue/TokenValue.test.tsx index 2b041d73a0c5..4aabf3644d48 100644 --- a/app/components/Views/confirmations/components/UI/InfoRow/InfoValue/TokenValue/TokenValue.test.tsx +++ b/app/components/Views/confirmations/components/UI/InfoRow/InfoValue/TokenValue/TokenValue.test.tsx @@ -7,42 +7,58 @@ import TokenValue from './TokenValue'; describe('TokenValue', () => { it('should render value correctly', () => { const { getByText } = render( - <TokenValue value={1000000000000000000} decimals={18} />, + <TokenValue label={'Value'} value={1000000000000000000} decimals={18} />, ); expect(getByText('1')).toBeDefined(); }); it('should render BigNumber value correctly', () => { const { getByText } = render( - <TokenValue value={new BigNumber('1000000000000000000')} decimals={18} />, + <TokenValue + label={'Value'} + value={new BigNumber('1000000000000000000')} + decimals={18} + />, ); expect(getByText('1')).toBeDefined(); }); it('should handle small decimal values', () => { - const { getByText } = render(<TokenValue value="1000" decimals={6} />); + const { getByText } = render( + <TokenValue label={'Value'} value="1000" decimals={6} />, + ); expect(getByText('0.001')).toBeDefined(); }); it('should handle large numbers', () => { const { getByText } = render( - <TokenValue value="123456789000000000000000000" decimals={18} />, + <TokenValue + label={'Value'} + value="123456789000000000000000000" + decimals={18} + />, ); expect(getByText('123,456,789')).toBeDefined(); }); it('should handle zero value', () => { - const { getByText } = render(<TokenValue value="0" decimals={18} />); + const { getByText } = render( + <TokenValue label={'Value'} value="0" decimals={18} />, + ); expect(getByText('0')).toBeDefined(); }); it('should handle very long value with undefined decimals', () => { - const { getByText } = render(<TokenValue value="1000000000000000000" />); + const { getByText } = render( + <TokenValue label={'Value'} value="1000000000000000000" />, + ); expect(getByText('1,000,000,000,0...')).toBeDefined(); }); it('should handle very small numbers', () => { - const { getByText } = render(<TokenValue value="100" decimals={18} />); + const { getByText } = render( + <TokenValue label={'Value'} value="100" decimals={18} />, + ); expect(getByText('< 0.000001')).toBeDefined(); }); }); diff --git a/app/components/Views/confirmations/components/UI/InfoRow/InfoValue/TokenValue/TokenValue.tsx b/app/components/Views/confirmations/components/UI/InfoRow/InfoValue/TokenValue/TokenValue.tsx index 4ca85cf22ac4..406a72ef2098 100644 --- a/app/components/Views/confirmations/components/UI/InfoRow/InfoValue/TokenValue/TokenValue.tsx +++ b/app/components/Views/confirmations/components/UI/InfoRow/InfoValue/TokenValue/TokenValue.tsx @@ -10,11 +10,12 @@ import { shortenString } from '../../../../../../../../util/notifications'; import TextWithTooltip from '../../../TextWithTooltip'; interface TokenValueProps { - value: number | string | BigNumber; + label: string; decimals?: number; + value: number | string | BigNumber; } -const TokenValue = ({ value, decimals }: TokenValueProps) => { +const TokenValue = ({ label, decimals, value }: TokenValueProps) => { const tokenValue = calcTokenAmount(value, decimals); const tokenText = formatAmount('en-US', tokenValue); @@ -22,6 +23,7 @@ const TokenValue = ({ value, decimals }: TokenValueProps) => { return ( <TextWithTooltip + label={label} text={shortenString(tokenText, { truncatedCharLimit: 15, truncatedStartChars: 15, diff --git a/app/components/Views/confirmations/components/UI/InfoSectionAccordion/InfoSectionAccordion.styles.ts b/app/components/Views/confirmations/components/UI/InfoSectionAccordion/InfoSectionAccordion.styles.ts new file mode 100644 index 000000000000..b026006823f3 --- /dev/null +++ b/app/components/Views/confirmations/components/UI/InfoSectionAccordion/InfoSectionAccordion.styles.ts @@ -0,0 +1,35 @@ +import { StyleSheet } from 'react-native'; +import { Theme } from '../../../../../../util/theme/models'; + +const styleSheet = (params: { theme: Theme }) => { + const { theme } = params; + + return StyleSheet.create({ + container: { + overflow: 'hidden', + backgroundColor: theme.colors.background.default, + borderRadius: 8, + padding: 8, + marginBottom: 8, + }, + header: { + flexDirection: 'row', + alignItems: 'center', + justifyContent: 'space-between', + paddingHorizontal: 8, + paddingVertical: 16, + }, + headerTitle: { + color: theme.colors.text.default, + fontSize: 14, + fontWeight: '500', + }, + icon: { + color: theme.colors.text.muted, + }, + content: {}, + iconContainer: {}, + }); +}; + +export default styleSheet; \ No newline at end of file diff --git a/app/components/Views/confirmations/components/UI/InfoSectionAccordion/InfoSectionAccordion.test.tsx b/app/components/Views/confirmations/components/UI/InfoSectionAccordion/InfoSectionAccordion.test.tsx new file mode 100644 index 000000000000..e1ac44666cd4 --- /dev/null +++ b/app/components/Views/confirmations/components/UI/InfoSectionAccordion/InfoSectionAccordion.test.tsx @@ -0,0 +1,62 @@ +import { fireEvent } from '@testing-library/react-native'; +import React from 'react'; +import Text from '../../../../../../component-library/components/Texts/Text'; +import { stakingDepositConfirmationState } from '../../../../../../util/test/confirm-data-helpers'; +import renderWithProvider from '../../../../../../util/test/renderWithProvider'; +import InfoSectionAccordion from './InfoSectionAccordion'; + +describe('InfoSectionAccordion', () => { + it("opens and closes the accordion when it's collapsed by default", async () => { + const testHeader = 'Test Header'; + const testContent = 'Test Content'; + + const { getByText, queryByText } = renderWithProvider( + <InfoSectionAccordion header={testHeader}> + <Text>{testContent}</Text> + </InfoSectionAccordion>, + { + state: stakingDepositConfirmationState, + }, + ); + + expect(getByText(testHeader)).toBeDefined(); + expect(queryByText(testContent)).toBeNull(); + + fireEvent(getByText(testHeader), 'onPress'); + + expect(getByText(testHeader)).toBeDefined(); + expect(getByText(testContent)).toBeDefined(); + + fireEvent(getByText(testHeader), 'onPress'); + + expect(getByText(testHeader)).toBeDefined(); + expect(queryByText(testContent)).toBeNull(); + }); + + it("opens and closes the accordion when it's expanded by default", async () => { + const testHeader = 'Test Header'; + const testContent = 'Test Content'; + + const { getByText, queryByText } = renderWithProvider( + <InfoSectionAccordion header={testHeader} initiallyExpanded> + <Text>{testContent}</Text> + </InfoSectionAccordion>, + { + state: stakingDepositConfirmationState, + }, + ); + + expect(getByText(testHeader)).toBeDefined(); + expect(getByText(testContent)).toBeDefined(); + + fireEvent(getByText(testHeader), 'onPress'); + + expect(getByText(testHeader)).toBeDefined(); + expect(queryByText(testContent)).toBeNull(); + + fireEvent(getByText(testHeader), 'onPress'); + + expect(getByText(testHeader)).toBeDefined(); + expect(getByText(testContent)).toBeDefined(); + }); +}); diff --git a/app/components/Views/confirmations/components/UI/InfoSectionAccordion/InfoSectionAccordion.tsx b/app/components/Views/confirmations/components/UI/InfoSectionAccordion/InfoSectionAccordion.tsx new file mode 100644 index 000000000000..eee5354c3ee9 --- /dev/null +++ b/app/components/Views/confirmations/components/UI/InfoSectionAccordion/InfoSectionAccordion.tsx @@ -0,0 +1,133 @@ +import React, { useCallback, useState } from 'react'; +import { + LayoutAnimation, + Platform, + StyleProp, + TouchableOpacity, + UIManager, + View, + ViewStyle +} from 'react-native'; +import Animated, { + interpolate, + useAnimatedStyle, + useSharedValue, + withTiming, +} from 'react-native-reanimated'; +import Icon, { + IconName, + IconSize, +} from '../../../../../../component-library/components/Icons/Icon'; +import Text from '../../../../../../component-library/components/Texts/Text'; +import { useStyles } from '../../../../../../component-library/hooks'; +import styleSheet from './InfoSectionAccordion.styles'; + +if (Platform.OS === 'android') { + if (UIManager.setLayoutAnimationEnabledExperimental) { + UIManager.setLayoutAnimationEnabledExperimental(true); + } +} + +interface InfoRowAccordionProps { + /** + * Header component or title string + */ + header: React.ReactNode | string; + /** + * Content to be shown when accordion is expanded + */ + children: React.ReactNode; + /** + * Initial expanded state + */ + initiallyExpanded?: boolean; + /** + * Optional styles for the container + */ + style?: StyleProp<ViewStyle>; + /** + * Optional styles for the header container + */ + headerStyle?: StyleProp<ViewStyle>; + /** + * Optional styles for the content container + */ + contentStyle?: StyleProp<ViewStyle>; + /** + * Optional callback when accordion state changes + */ + onStateChange?: (isExpanded: boolean) => void; + /** + * Test ID for component + */ + testID?: string; +} + +const ANIMATION_DURATION_MS = 300; + +const InfoRowAccordion: React.FC<InfoRowAccordionProps> = ({ + header, + children, + initiallyExpanded = false, + style, + headerStyle, + contentStyle, + onStateChange, + testID, +}) => { + const { styles } = useStyles(styleSheet, {}); + const [isExpanded, setIsExpanded] = useState(initiallyExpanded); + const rotationValue = useSharedValue(initiallyExpanded ? 1 : 0); + + const toggleAccordion = useCallback(() => { + LayoutAnimation.configureNext( + LayoutAnimation.create( + ANIMATION_DURATION_MS, + LayoutAnimation.Types.easeInEaseOut, + LayoutAnimation.Properties.opacity, + ), + ); + + const newExpandedState = !isExpanded; + setIsExpanded(newExpandedState); + rotationValue.value = withTiming(newExpandedState ? 1 : 0, { + duration: ANIMATION_DURATION_MS, + }); + onStateChange?.(newExpandedState); + }, [isExpanded, onStateChange, rotationValue]); + + const arrowStyle = useAnimatedStyle(() => { + const rotation = interpolate(rotationValue.value, [0, 1], [0, 180]); + return { + transform: [{ rotate: `${rotation}deg` }], + }; + }); + + return ( + <View style={[styles.container, style]} testID={testID}> + <TouchableOpacity + style={[styles.header, headerStyle]} + onPress={toggleAccordion} + activeOpacity={0.7} + testID={`${testID}-header`} + > + {typeof header === 'string' ? ( + <Animated.Text style={styles.headerTitle}><Text style={styles.headerTitle}>{header}</Text></Animated.Text> + ) : ( + header + )} + <Animated.View style={[styles.iconContainer, arrowStyle]}> + <Icon + name={IconName.ArrowDown} + size={IconSize.Sm} + color={styles.icon.color} + testID={`${testID}-arrow`} + /> + </Animated.View> + </TouchableOpacity> + {isExpanded && <View style={[styles.content, contentStyle]}>{children}</View>} + </View> + ); +}; + +export default InfoRowAccordion; \ No newline at end of file diff --git a/app/components/Views/confirmations/components/UI/InfoSectionAccordion/index.ts b/app/components/Views/confirmations/components/UI/InfoSectionAccordion/index.ts new file mode 100644 index 000000000000..f0c10c6c97d5 --- /dev/null +++ b/app/components/Views/confirmations/components/UI/InfoSectionAccordion/index.ts @@ -0,0 +1 @@ +export { default } from './InfoSectionAccordion'; diff --git a/app/components/Views/confirmations/components/UI/TextWithTooltip/TextWithTooltip.stories.tsx b/app/components/Views/confirmations/components/UI/TextWithTooltip/TextWithTooltip.stories.tsx index e69c55c8ee1e..46107a3e4d04 100644 --- a/app/components/Views/confirmations/components/UI/TextWithTooltip/TextWithTooltip.stories.tsx +++ b/app/components/Views/confirmations/components/UI/TextWithTooltip/TextWithTooltip.stories.tsx @@ -17,6 +17,7 @@ storiesOf('Confirmations / TextWithTooltip', module) Simple Text With Tooltip </Text> <TextWithTooltip + label={'some_dummy_label'} text={'some_dummy_value'} tooltip={'some_dummy_tooltip'} /> diff --git a/app/components/Views/confirmations/components/UI/TextWithTooltip/TextWithTooltip.styles.ts b/app/components/Views/confirmations/components/UI/TextWithTooltip/TextWithTooltip.styles.ts index d4aa4e8f3795..337f4fea5d4e 100644 --- a/app/components/Views/confirmations/components/UI/TextWithTooltip/TextWithTooltip.styles.ts +++ b/app/components/Views/confirmations/components/UI/TextWithTooltip/TextWithTooltip.styles.ts @@ -7,16 +7,23 @@ const styleSheet = (params: { theme: Theme }) => { const { theme } = params; return StyleSheet.create({ + backIcon: { + left: 10, + top: 10, + position: 'absolute', + }, container: { backgroundColor: theme.colors.background.default, paddingHorizontal: 8, paddingVertical: 8, }, - tooltipText: { + text: { fontSize: 16, ...fontStyles.normal, }, tooltipHeader: { + flexDirection: 'row', + justifyContent: 'center', paddingHorizontal: 8, paddingVertical: 8, }, diff --git a/app/components/Views/confirmations/components/UI/TextWithTooltip/TextWithTooltip.test.tsx b/app/components/Views/confirmations/components/UI/TextWithTooltip/TextWithTooltip.test.tsx index cf7685008d56..ceaeaa62c254 100644 --- a/app/components/Views/confirmations/components/UI/TextWithTooltip/TextWithTooltip.test.tsx +++ b/app/components/Views/confirmations/components/UI/TextWithTooltip/TextWithTooltip.test.tsx @@ -7,6 +7,7 @@ describe('TextWithTooltip', () => { it('renders correctly', async () => { const { getByText } = render( <TextWithTooltip + label={'some_dummy_label'} text={'some_dummy_value'} tooltip={'some_dummy_tooltip'} />, @@ -17,12 +18,14 @@ describe('TextWithTooltip', () => { it('should open modal when value pressed', async () => { const { getByTestId, getByText } = render( <TextWithTooltip + label={'some_dummy_label'} text={'some_dummy_value'} tooltip={'some_dummy_tooltip'} />, ); expect(getByText('some_dummy_value')).toBeDefined(); fireEvent.press(getByText('some_dummy_value')); + expect(getByText('some_dummy_label')).toBeDefined(); expect(getByText('some_dummy_tooltip')).toBeDefined(); fireEvent.press(getByTestId('tooltipTestId')); expect(getByText('some_dummy_value')).toBeDefined(); diff --git a/app/components/Views/confirmations/components/UI/TextWithTooltip/TextWithTooltip.tsx b/app/components/Views/confirmations/components/UI/TextWithTooltip/TextWithTooltip.tsx index b2c97817e30c..e3c6effffbfe 100644 --- a/app/components/Views/confirmations/components/UI/TextWithTooltip/TextWithTooltip.tsx +++ b/app/components/Views/confirmations/components/UI/TextWithTooltip/TextWithTooltip.tsx @@ -12,12 +12,14 @@ import { useStyles } from '../../../../../hooks/useStyles'; import BottomModal from '../BottomModal'; import styleSheet from './TextWithTooltip.styles'; interface TextWithTooltipProps { + label: string; text: string; tooltip: string; tooltipTestId?: string; } const TextWithTooltip = ({ + label, text, tooltip, tooltipTestId, @@ -35,15 +37,17 @@ const TextWithTooltip = ({ <View style={styles.container}> <View style={styles.tooltipHeader}> <ButtonIcon + style={styles.backIcon} iconColor={IconColor.Default} size={ButtonIconSizes.Sm} onPress={() => setTooltipVisible(false)} iconName={IconName.ArrowLeft} testID={tooltipTestId ?? 'tooltipTestId'} /> + <Text style={styles.text}>{label}</Text> </View> <View style={styles.tooltipContext}> - <Text style={styles.tooltipText}>{tooltip}</Text> + <Text style={styles.text}>{tooltip}</Text> </View> </View> </BottomModal> diff --git a/app/components/Views/confirmations/components/UI/Tooltip/Tooltip.styles.ts b/app/components/Views/confirmations/components/UI/Tooltip/Tooltip.styles.ts index 8839d29e3868..e5e23c5e40d1 100644 --- a/app/components/Views/confirmations/components/UI/Tooltip/Tooltip.styles.ts +++ b/app/components/Views/confirmations/components/UI/Tooltip/Tooltip.styles.ts @@ -11,30 +11,42 @@ const styleSheet = (params: { theme: Theme }) => { margin: 0, }, modalView: { - backgroundColor: theme.colors.background.default, + backgroundColor: theme.colors.background.alternative, justifyContent: 'center', alignItems: 'center', - marginHorizontal: 16, borderRadius: 8, ...theme.shadows.size.sm, elevation: 11, paddingHorizontal: 16, paddingVertical: 24, + }, + modalHeader: { + flexDirection: 'row', + justifyContent: 'center', + width: '100%', }, closeModalBtn: { + alignSelf: 'center', position: 'absolute', - top: 10, - right: 10, + left: 0, }, modalTitle: { color: theme.colors.text.default, ...fontStyles.bold, fontSize: 16, fontWeight: '700', - marginTop: 8, }, modalContent: { - marginTop: 8, + width: '100%', + backgroundColor: theme.colors.background.default, + marginTop: 16, + paddingVertical: 20, + borderRadius: 8, + display: 'flex', + alignItems: 'center', + justifyContent: 'center', + }, + modalContentValue: { color: theme.colors.text.default, ...fontStyles.normal, fontSize: 14, diff --git a/app/components/Views/confirmations/components/UI/Tooltip/Tooltip.test.tsx b/app/components/Views/confirmations/components/UI/Tooltip/Tooltip.test.tsx index 0f1b1320678d..d22d66d4b011 100644 --- a/app/components/Views/confirmations/components/UI/Tooltip/Tooltip.test.tsx +++ b/app/components/Views/confirmations/components/UI/Tooltip/Tooltip.test.tsx @@ -31,7 +31,7 @@ describe('Tooltip', () => { tooltipTestId="tooltipTestId" />, ); - fireEvent.press(getByTestId('tooltipTestId')); + fireEvent.press(getByTestId('tooltipTestId-open-btn')); expect(getByText('Tooltip content to be displayed here!')).toBeDefined(); }); }); diff --git a/app/components/Views/confirmations/components/UI/Tooltip/Tooltip.tsx b/app/components/Views/confirmations/components/UI/Tooltip/Tooltip.tsx index 9fe67dd184fd..90cf73524679 100644 --- a/app/components/Views/confirmations/components/UI/Tooltip/Tooltip.tsx +++ b/app/components/Views/confirmations/components/UI/Tooltip/Tooltip.tsx @@ -1,7 +1,5 @@ import React, { ReactNode, useState } from 'react'; import { View } from 'react-native'; -import Modal from 'react-native-modal'; - import ButtonIcon, { ButtonIconSizes, } from '../../../../../../component-library/components/Buttons/ButtonIcon'; @@ -11,19 +9,57 @@ import { } from '../../../../../../component-library/components/Icons/Icon'; import Text from '../../../../../../component-library/components/Texts/Text'; import { useStyles } from '../../../../../../component-library/hooks'; -import { useTheme } from '../../../../../../util/theme'; +import BottomModal from '../BottomModal'; import styleSheet from './Tooltip.styles'; interface TooltipProps { - content: ReactNode; + content: string | ReactNode; + title?: string; + tooltipTestId?: string; +} + +interface TooltipModalProps { + open: boolean; + setOpen: (open: boolean) => void; + content: string | ReactNode; title?: string; tooltipTestId?: string; } -const Tooltip = ({ content, title, tooltipTestId }: TooltipProps) => { +export const TooltipModal = ({ open, setOpen, content, title, tooltipTestId = 'tooltip-modal' }: TooltipModalProps) => { + const { styles } = useStyles(styleSheet, { title: title ?? '' }); + + return ( + <BottomModal + visible={open} + onClose={() => setOpen(false)} + > + <View style={styles.modalView}> + <View style={styles.modalHeader}> + <ButtonIcon + iconColor={IconColor.Default} + iconName={IconName.ArrowLeft} + onPress={() => setOpen(false)} + size={ButtonIconSizes.Sm} + style={styles.closeModalBtn} + testID={`${tooltipTestId}-close-btn`} + /> + {<Text style={styles.modalTitle}>{title ?? ''}</Text>} + </View> + <View style={styles.modalContent}> + {typeof content === 'string' ? ( + <Text style={styles.modalContentValue}>{content}</Text> + ) : ( + content + )} + </View> + </View> + </BottomModal> + ); +}; + +const Tooltip = ({ content, title, tooltipTestId = 'info-row-tooltip' }: TooltipProps) => { const [open, setOpen] = useState(false); - const { colors } = useTheme(); - const { styles } = useStyles(styleSheet, {}); return ( <View> @@ -32,32 +68,15 @@ const Tooltip = ({ content, title, tooltipTestId }: TooltipProps) => { iconName={IconName.Info} onPress={() => setOpen(true)} size={ButtonIconSizes.Sm} - testID={tooltipTestId ?? 'tooltipTestId'} + testID={`${tooltipTestId}-open-btn`} + /> + <TooltipModal + open={open} + setOpen={setOpen} + content={content} + title={title} + tooltipTestId={tooltipTestId} /> - <Modal - isVisible={open} - onBackdropPress={() => setOpen(false)} - onBackButtonPress={() => setOpen(false)} - onSwipeComplete={() => setOpen(false)} - swipeDirection={'down'} - style={styles.modal} - propagateSwipe - backdropColor={colors.overlay.default} - backdropOpacity={1} - > - <View style={styles.modalView}> - <ButtonIcon - iconColor={IconColor.Default} - iconName={IconName.Close} - onPress={() => setOpen(false)} - size={ButtonIconSizes.Sm} - style={styles.closeModalBtn} - testID={tooltipTestId ?? 'tooltipTestId'} - /> - {title && <Text style={styles.modalTitle}>{title}</Text>} - <Text style={styles.modalContent}>{content}</Text> - </View> - </Modal> </View> ); }; diff --git a/app/components/Views/confirmations/components/UI/Tooltip/__snapshots__/Tooltip.test.tsx.snap b/app/components/Views/confirmations/components/UI/Tooltip/__snapshots__/Tooltip.test.tsx.snap index 8ef507d1544d..544e4aade012 100644 --- a/app/components/Views/confirmations/components/UI/Tooltip/__snapshots__/Tooltip.test.tsx.snap +++ b/app/components/Views/confirmations/components/UI/Tooltip/__snapshots__/Tooltip.test.tsx.snap @@ -19,7 +19,7 @@ exports[`Tooltip should match snapshot 1`] = ` "width": 24, } } - testID="tooltipTestId" + testID="info-row-tooltip-open-btn" > <SvgMock color="#9fa6ae" diff --git a/app/components/Views/confirmations/components/WatchAssetRequest/index.js b/app/components/Views/confirmations/components/WatchAssetRequest/index.js index 553ea7c2d077..7a1f8cd4c10e 100644 --- a/app/components/Views/confirmations/components/WatchAssetRequest/index.js +++ b/app/components/Views/confirmations/components/WatchAssetRequest/index.js @@ -14,7 +14,7 @@ import { MetaMetricsEvents } from '../../../../../core/Analytics'; import useTokenBalance from '../../../../hooks/useTokenBalance'; import { useTheme } from '../../../../../util/theme'; import NotificationManager from '../../../../../core/NotificationManager'; -import { selectChainId } from '../../../../../selectors/networkController'; +import { selectEvmChainId } from '../../../../../selectors/networkController'; import ApproveTransactionHeader from '../ApproveTransactionHeader'; import { getActiveTabUrl } from '../../../../../util/transactions'; import { isEqual } from 'lodash'; @@ -107,7 +107,7 @@ const WatchAssetRequest = ({ const { trackEvent, createEventBuilder } = useMetrics(); const styles = createStyles(colors); const [balance, , error] = useTokenBalance(asset.address, interactingAddress); - const chainId = useSelector(selectChainId); + const chainId = useSelector(selectEvmChainId); const balanceWithSymbol = error ? strings('transaction.failed') : `${renderFromTokenMinimalUnit(balance, asset.decimals)} ${asset.symbol}`; diff --git a/app/components/Views/confirmations/context/LedgerContext/LedgerContext.test.tsx b/app/components/Views/confirmations/context/LedgerContext/LedgerContext.test.tsx new file mode 100644 index 000000000000..73337dbd18be --- /dev/null +++ b/app/components/Views/confirmations/context/LedgerContext/LedgerContext.test.tsx @@ -0,0 +1,85 @@ +import React from 'react'; +import { Text, View } from 'react-native'; + +import renderWithProvider from '../../../../../util/test/renderWithProvider'; +// eslint-disable-next-line import/no-namespace +import * as AddressUtils from '../../../../../util/address'; +import { LedgerContextProvider, useLedgerContext } from './LedgerContext'; +import { personalSignatureConfirmationState } from '../../../../../util/test/confirm-data-helpers'; +import { Footer } from '../../components/Confirm/Footer'; +import { fireEvent } from '@testing-library/react-native'; + +jest.mock('@react-navigation/native', () => ({ + ...jest.requireActual('@react-navigation/native'), + useNavigation: () => ({ + goBack: jest.fn(), + }), +})); + +jest.mock('../../../../../core/Engine', () => ({ + context: { + KeyringController: { + state: { + keyrings: [ + { + accounts: ['0x935e73edb9ff52e23bac7f7e043a1ecd06d05477'], + type: 'Ledger Hardware', + }, + ], + }, + }, + }, +})); + +const MockView = View; +const MockText = Text; +jest.mock('../../components/Confirm/LedgerSignModal', () => ({ + __esModule: true, + default: () => ( + <MockView> + <MockText>Mock LedgerSignModal</MockText> + </MockView> + ), +})); + +const mockDeviceId = 'MockDeviceId'; +jest.mock('../../../../../core/Ledger/Ledger', () => ({ + getDeviceId: () => Promise.resolve(mockDeviceId), +})); + +describe('LedgerContext', () => { + it('footer get correct value of isLedgerAccount', async () => { + jest.spyOn(AddressUtils, 'isHardwareAccount').mockReturnValue(true); + const { getByText } = renderWithProvider( + <LedgerContextProvider> + <Footer /> + </LedgerContextProvider>, + { + state: personalSignatureConfirmationState, + }, + ); + expect(getByText('Sign with Ledger')).toBeTruthy(); + }); + + it('display ledger sign modal when "Sign with Ledger" button is clicked in footer', async () => { + jest.spyOn(AddressUtils, 'isHardwareAccount').mockReturnValue(true); + const { getByText } = renderWithProvider( + <LedgerContextProvider> + <Footer /> + </LedgerContextProvider>, + { + state: personalSignatureConfirmationState, + }, + ); + fireEvent.press(getByText('Sign with Ledger')); + expect(getByText('Mock LedgerSignModal')).toBeTruthy(); + }); +}); + +describe('useLedgerContext', () => { + it('should throw error is not wrapped in LedgerContextProvider', () => { + expect(() => { + useLedgerContext(); + }).toThrow(); + }); +}); diff --git a/app/components/Views/confirmations/context/LedgerContext/LedgerContext.tsx b/app/components/Views/confirmations/context/LedgerContext/LedgerContext.tsx new file mode 100644 index 000000000000..375ee864ea78 --- /dev/null +++ b/app/components/Views/confirmations/context/LedgerContext/LedgerContext.tsx @@ -0,0 +1,103 @@ +import React, { + ReactElement, + createContext, + useCallback, + useContext, + useEffect, + useState, +} from 'react'; + +import ExtendedKeyringTypes from '../../../../../constants/keyringTypes'; +import { getDeviceId } from '../../../../../core/Ledger/Ledger'; +import { + getKeyringByAddress, + isHardwareAccount, +} from '../../../../../util/address'; +import useApprovalRequest from '../../hooks/useApprovalRequest'; +import LedgerSignModal from '../../components/Confirm/LedgerSignModal'; + +export interface LedgerContextType { + deviceId?: string; + isLedgerAccount: boolean; + ledgerSigningInProgress: boolean; + openLedgerSignModal: () => void; + closeLedgerSignModal: () => void; +} + +export const LedgerContext = createContext<LedgerContextType>({ + deviceId: undefined, + isLedgerAccount: false, + ledgerSigningInProgress: false, + openLedgerSignModal: () => undefined, + closeLedgerSignModal: () => undefined, +}); + +export const LedgerContextProvider: React.FC<{ + children: ReactElement[] | ReactElement; +}> = ({ children }) => { + const { approvalRequest } = useApprovalRequest(); + const fromAddress = approvalRequest?.requestData?.from as string; + const isLedgerAccount = + isHardwareAccount(fromAddress, [ExtendedKeyringTypes.ledger]) ?? false; + const [ledgerSigningInProgress, setLedgerSigningInProgress] = + useState(isLedgerAccount); + const [ledgerSignModalOpen, setLedgerSignModalOpen] = useState(false); + const [deviceId, setDeviceId] = useState<string>(); + + const openLedgerSignModal = useCallback(() => { + setLedgerSigningInProgress(false); + setLedgerSignModalOpen(true); + }, []); + + const closeLedgerSignModal = useCallback(() => { + setLedgerSignModalOpen(false); + }, [setLedgerSignModalOpen]); + + useEffect(() => { + if (!isLedgerAccount) { + return; + } + + let isMounted = true; + const keyring = getKeyringByAddress(fromAddress); + if (!keyring) { + throw new Error(`Keyring not found for address ${fromAddress}`); + } + + (async () => { + const id = await getDeviceId(); + if (isMounted) { + setDeviceId(id); + } + })(); + + return () => { + isMounted = false; + }; + }, [fromAddress, isLedgerAccount, setDeviceId]); + + return ( + <LedgerContext.Provider + value={{ + deviceId, + isLedgerAccount, + ledgerSigningInProgress, + openLedgerSignModal, + closeLedgerSignModal, + }} + > + {children} + {ledgerSignModalOpen && <LedgerSignModal />} + </LedgerContext.Provider> + ); +}; + +export const useLedgerContext = () => { + const context = useContext(LedgerContext); + if (!context) { + throw new Error( + 'useLedgerContext must be used within an LedgerContextProvider', + ); + } + return context; +}; diff --git a/app/components/Views/confirmations/context/LedgerContext/index.js b/app/components/Views/confirmations/context/LedgerContext/index.js new file mode 100644 index 000000000000..9d287dec825e --- /dev/null +++ b/app/components/Views/confirmations/context/LedgerContext/index.js @@ -0,0 +1 @@ +export * from './LedgerContext'; diff --git a/app/components/Views/confirmations/context/QRHardwareContext/QRHardwareContext.test.tsx b/app/components/Views/confirmations/context/QRHardwareContext/QRHardwareContext.test.tsx index c67ad175de99..46f7a5187fa5 100644 --- a/app/components/Views/confirmations/context/QRHardwareContext/QRHardwareContext.test.tsx +++ b/app/components/Views/confirmations/context/QRHardwareContext/QRHardwareContext.test.tsx @@ -6,7 +6,7 @@ import Engine from '../../../../../core/Engine'; import renderWithProvider from '../../../../../util/test/renderWithProvider'; import { personalSignatureConfirmationState } from '../../../../../util/test/confirm-data-helpers'; import { IQRState } from '../../../../UI/QRHardware/types'; -import Footer from '../../components/Confirm/Footer'; +import { Footer } from '../../components/Confirm/Footer'; import QRInfo from '../../components/Confirm/Info/QRInfo'; // eslint-disable-next-line import/no-namespace import * as Camera from './useCamera'; @@ -38,6 +38,7 @@ jest.mock('@react-navigation/native', () => ({ addListener: jest.fn(), removeListener: jest.fn(), dispatch: jest.fn(), + goBack: jest.fn(), }), })); diff --git a/app/components/Views/confirmations/context/QRHardwareContext/index.js b/app/components/Views/confirmations/context/QRHardwareContext/index.js new file mode 100644 index 000000000000..c4582eb4aa60 --- /dev/null +++ b/app/components/Views/confirmations/context/QRHardwareContext/index.js @@ -0,0 +1 @@ +export * from './QRHardwareContext'; diff --git a/app/components/Views/confirmations/hooks/useConfirmActions.test.ts b/app/components/Views/confirmations/hooks/useConfirmActions.test.ts index 60a7769ea3f2..4efc40748068 100644 --- a/app/components/Views/confirmations/hooks/useConfirmActions.test.ts +++ b/app/components/Views/confirmations/hooks/useConfirmActions.test.ts @@ -1,11 +1,23 @@ import Engine from '../../../../core/Engine'; import { renderHookWithProvider } from '../../../../util/test/renderWithProvider'; -import { personalSignatureConfirmationState } from '../../../../util/test/confirm-data-helpers'; +import { + personalSignatureConfirmationState, + stakingDepositConfirmationState, +} from '../../../../util/test/confirm-data-helpers'; import PPOMUtil from '../../../../lib/ppom/ppom-util'; // eslint-disable-next-line import/no-namespace import * as QRHardwareHook from '../context/QRHardwareContext/QRHardwareContext'; +// eslint-disable-next-line import/no-namespace +import * as LedgerContext from '../context/LedgerContext/LedgerContext'; import { useConfirmActions } from './useConfirmActions'; +jest.mock('@react-navigation/native', () => ({ + ...jest.requireActual('@react-navigation/native'), + useNavigation: () => ({ + goBack: jest.fn(), + }), +})); + jest.mock('../../../../core/Engine', () => ({ acceptPendingApproval: jest.fn(), rejectPendingApproval: jest.fn(), @@ -20,9 +32,17 @@ jest.mock('./useSignatureMetrics', () => ({ const flushPromises = async () => await new Promise(process.nextTick); +const createUseLedgerContextSpy = (mockedValues = {}) => { + jest.spyOn(LedgerContext, 'useLedgerContext').mockReturnValue({ + ledgerSigningInProgress: false, + openLedgerSignModal: jest.fn(), + ...mockedValues, + } as unknown as LedgerContext.LedgerContextType); +}; + describe('useConfirmAction', () => { - afterEach(() => { - mockCaptureSignatureMetrics.mockClear(); + beforeEach(() => { + jest.clearAllMocks(); }); it('call setScannerVisible if QR signing is in progress', async () => { @@ -31,12 +51,10 @@ describe('useConfirmAction', () => { 'clearSignatureSecurityAlertResponse', ); const mockSetScannerVisible = jest.fn().mockResolvedValue(undefined); - jest - .spyOn(QRHardwareHook, 'useQRHardwareContext') - .mockReturnValue({ - isQRSigningInProgress: true, - setScannerVisible: mockSetScannerVisible, - } as unknown as QRHardwareHook.QRHardwareContextType); + jest.spyOn(QRHardwareHook, 'useQRHardwareContext').mockReturnValue({ + isQRSigningInProgress: true, + setScannerVisible: mockSetScannerVisible, + } as unknown as QRHardwareHook.QRHardwareContextType); const { result } = renderHookWithProvider(() => useConfirmActions(), { state: personalSignatureConfirmationState, }); @@ -49,7 +67,41 @@ describe('useConfirmAction', () => { expect(clearSecurityAlertResponseSpy).toHaveBeenCalledTimes(0); }); + it('open LedgerSignModal if confirm button is clicked when signing using ledger account', async () => { + const mockOpenLedgerSignModal = jest.fn(); + createUseLedgerContextSpy({ + ledgerSigningInProgress: true, + openLedgerSignModal: mockOpenLedgerSignModal, + }); + const { result } = renderHookWithProvider(() => useConfirmActions(), { + state: personalSignatureConfirmationState, + }); + result?.current?.onConfirm(); + expect(mockOpenLedgerSignModal).toHaveBeenCalledTimes(1); + expect(Engine.acceptPendingApproval).toHaveBeenCalledTimes(0); + }); + + it('does not call signature related methods when onConfirm is called if confirmation is not of type signature', async () => { + const mockOpenLedgerSignModal = jest.fn(); + createUseLedgerContextSpy({ openLedgerSignModal: mockOpenLedgerSignModal }); + const clearSecurityAlertResponseSpy = jest.spyOn( + PPOMUtil, + 'clearSignatureSecurityAlertResponse', + ); + const { result } = renderHookWithProvider(() => useConfirmActions(), { + state: stakingDepositConfirmationState, + }); + result?.current?.onConfirm(); + expect(Engine.acceptPendingApproval).toHaveBeenCalledTimes(1); + await flushPromises(); + expect(mockCaptureSignatureMetrics).not.toHaveBeenCalled(); + expect(clearSecurityAlertResponseSpy).not.toHaveBeenCalled(); + expect(mockOpenLedgerSignModal).not.toHaveBeenCalled(); + }); + it('call required callbacks when confirm button is clicked', async () => { + const mockOpenLedgerSignModal = jest.fn(); + createUseLedgerContextSpy({ openLedgerSignModal: mockOpenLedgerSignModal }); const clearSecurityAlertResponseSpy = jest.spyOn( PPOMUtil, 'clearSignatureSecurityAlertResponse', @@ -62,6 +114,29 @@ describe('useConfirmAction', () => { await flushPromises(); expect(mockCaptureSignatureMetrics).toHaveBeenCalledTimes(1); expect(clearSecurityAlertResponseSpy).toHaveBeenCalledTimes(1); + expect(mockOpenLedgerSignModal).not.toHaveBeenCalled(); + }); + + it('does not call signature related methods when onReject is called if confirmation is not of type signature', async () => { + const clearSecurityAlertResponseSpy = jest.spyOn( + PPOMUtil, + 'clearSignatureSecurityAlertResponse', + ); + const mockCancelQRScanRequestIfPresent = jest + .fn() + .mockResolvedValue(undefined); + jest.spyOn(QRHardwareHook, 'useQRHardwareContext').mockReturnValue({ + cancelQRScanRequestIfPresent: mockCancelQRScanRequestIfPresent, + } as unknown as QRHardwareHook.QRHardwareContextType); + const { result } = renderHookWithProvider(() => useConfirmActions(), { + state: stakingDepositConfirmationState, + }); + result?.current?.onReject(); + expect(mockCancelQRScanRequestIfPresent).toHaveBeenCalledTimes(1); + await flushPromises(); + expect(Engine.rejectPendingApproval).toHaveBeenCalledTimes(1); + expect(mockCaptureSignatureMetrics).not.toHaveBeenCalled(); + expect(clearSecurityAlertResponseSpy).not.toHaveBeenCalled(); }); it('call required callbacks when reject button is clicked', async () => { @@ -72,11 +147,9 @@ describe('useConfirmAction', () => { const mockCancelQRScanRequestIfPresent = jest .fn() .mockResolvedValue(undefined); - jest - .spyOn(QRHardwareHook, 'useQRHardwareContext') - .mockReturnValue({ - cancelQRScanRequestIfPresent: mockCancelQRScanRequestIfPresent, - } as unknown as QRHardwareHook.QRHardwareContextType); + jest.spyOn(QRHardwareHook, 'useQRHardwareContext').mockReturnValue({ + cancelQRScanRequestIfPresent: mockCancelQRScanRequestIfPresent, + } as unknown as QRHardwareHook.QRHardwareContextType); const { result } = renderHookWithProvider(() => useConfirmActions(), { state: personalSignatureConfirmationState, }); diff --git a/app/components/Views/confirmations/hooks/useConfirmActions.ts b/app/components/Views/confirmations/hooks/useConfirmActions.ts index 9b0b29ad3403..7348fb8d74c9 100644 --- a/app/components/Views/confirmations/hooks/useConfirmActions.ts +++ b/app/components/Views/confirmations/hooks/useConfirmActions.ts @@ -1,9 +1,11 @@ import { useCallback } from 'react'; +import { useNavigation } from '@react-navigation/native'; import PPOMUtil from '../../../../lib/ppom/ppom-util'; import { MetaMetricsEvents } from '../../../hooks/useMetrics'; import { isSignatureRequest } from '../utils/confirm'; -import { useQRHardwareContext } from '../context/QRHardwareContext/QRHardwareContext'; +import { useLedgerContext } from '../context/LedgerContext'; +import { useQRHardwareContext } from '../context/QRHardwareContext'; import useApprovalRequest from './useApprovalRequest'; import { useSignatureMetrics } from './useSignatureMetrics'; @@ -19,11 +21,33 @@ export const useConfirmActions = () => { isQRSigningInProgress, setScannerVisible, } = useQRHardwareContext(); + const { ledgerSigningInProgress, openLedgerSignModal } = useLedgerContext(); + const navigation = useNavigation(); - const signatureRequest = + const isSignatureReq = approvalRequest?.type && isSignatureRequest(approvalRequest?.type); + const onReject = useCallback(async () => { + await cancelQRScanRequestIfPresent(); + onRequestReject(); + navigation.goBack(); + if (isSignatureReq) { + captureSignatureMetrics(MetaMetricsEvents.SIGNATURE_REJECTED); + PPOMUtil.clearSignatureSecurityAlertResponse(); + } + }, [ + cancelQRScanRequestIfPresent, + captureSignatureMetrics, + navigation, + onRequestReject, + isSignatureReq, + ]); + const onConfirm = useCallback(async () => { + if (ledgerSigningInProgress) { + openLedgerSignModal(); + return; + } if (isQRSigningInProgress) { setScannerVisible(true); return; @@ -33,30 +57,20 @@ export const useConfirmActions = () => { deleteAfterResult: true, handleErrors: false, }); - if (signatureRequest) { + navigation.goBack(); + if (isSignatureReq) { captureSignatureMetrics(MetaMetricsEvents.SIGNATURE_APPROVED); PPOMUtil.clearSignatureSecurityAlertResponse(); } }, [ - captureSignatureMetrics, isQRSigningInProgress, - onRequestConfirm, + ledgerSigningInProgress, + navigation, + openLedgerSignModal, setScannerVisible, - signatureRequest, - ]); - - const onReject = useCallback(async () => { - await cancelQRScanRequestIfPresent(); - onRequestReject(); - if (signatureRequest) { - captureSignatureMetrics(MetaMetricsEvents.SIGNATURE_REJECTED); - PPOMUtil.clearSignatureSecurityAlertResponse(); - } - }, [ - cancelQRScanRequestIfPresent, captureSignatureMetrics, - onRequestReject, - signatureRequest, + onRequestConfirm, + isSignatureReq, ]); return { onConfirm, onReject }; diff --git a/app/components/Views/confirmations/hooks/useConfirmationAlerts.test.ts b/app/components/Views/confirmations/hooks/useConfirmationAlerts.test.ts new file mode 100644 index 000000000000..231f135dd4b2 --- /dev/null +++ b/app/components/Views/confirmations/hooks/useConfirmationAlerts.test.ts @@ -0,0 +1,13 @@ +import { renderHook } from '@testing-library/react-hooks'; +import useConfirmationAlerts from './useConfirmationAlerts'; + +describe('useConfirmationAlerts', () => { + beforeEach(() => { + jest.clearAllMocks(); + }); + + it('returns empty array if no alerts', () => { + const { result } = renderHook(() => useConfirmationAlerts()); + expect(result.current).toEqual([]); + }); +}); diff --git a/app/components/Views/confirmations/hooks/useConfirmationAlerts.ts b/app/components/Views/confirmations/hooks/useConfirmationAlerts.ts new file mode 100644 index 000000000000..9f1842dfa511 --- /dev/null +++ b/app/components/Views/confirmations/hooks/useConfirmationAlerts.ts @@ -0,0 +1,8 @@ +import { useMemo } from 'react'; +import { Alert } from '../types/alerts'; + +export default function useConfirmationAlerts(): Alert[] { + return useMemo( + () => [],[], + ); +} diff --git a/app/components/Views/confirmations/hooks/useConfirmationRedesignEnabled.test.ts b/app/components/Views/confirmations/hooks/useConfirmationRedesignEnabled.test.ts index 3cc846c9f067..a65504d27558 100644 --- a/app/components/Views/confirmations/hooks/useConfirmationRedesignEnabled.test.ts +++ b/app/components/Views/confirmations/hooks/useConfirmationRedesignEnabled.test.ts @@ -3,7 +3,10 @@ import { TransactionType } from '@metamask/transaction-controller'; import { merge, cloneDeep } from 'lodash'; // eslint-disable-next-line import/no-namespace -import { isExternalHardwareAccount } from '../../../../util/address'; +import { + isExternalHardwareAccount, + isHardwareAccount, +} from '../../../../util/address'; import { renderHookWithProvider } from '../../../../util/test/renderWithProvider'; import { personalSignatureConfirmationState, @@ -13,6 +16,7 @@ import { useConfirmationRedesignEnabled } from './useConfirmationRedesignEnabled jest.mock('../../../../util/address', () => ({ ...jest.requireActual('../../../../util/address'), + isHardwareAccount: jest.fn(), isExternalHardwareAccount: jest.fn(), })); @@ -33,13 +37,7 @@ jest.mock('../../../../core/Engine', () => ({ describe('useConfirmationRedesignEnabled', () => { describe('signature confirmations', () => { - beforeEach(() => { - jest.clearAllMocks(); - (isExternalHardwareAccount as jest.Mock).mockReturnValue(true); - }); - it('returns true for personal sign request', async () => { - (isExternalHardwareAccount as jest.Mock).mockReturnValue(false); const { result } = renderHookWithProvider( useConfirmationRedesignEnabled, { @@ -51,6 +49,7 @@ describe('useConfirmationRedesignEnabled', () => { }); it('returns false for external accounts', async () => { + (isExternalHardwareAccount as jest.Mock).mockReturnValue(true); const { result } = renderHookWithProvider( useConfirmationRedesignEnabled, { @@ -62,9 +61,10 @@ describe('useConfirmationRedesignEnabled', () => { }); it('returns false when remote flag is disabled', async () => { - const state = merge(personalSignatureConfirmationState, { + const state = { engine: { backgroundState: { + ...personalSignatureConfirmationState.engine.backgroundState, RemoteFeatureFlagController: { remoteFeatureFlags: { confirmation_redesign: { @@ -74,7 +74,7 @@ describe('useConfirmationRedesignEnabled', () => { }, }, }, - }); + }; const { result } = renderHookWithProvider( useConfirmationRedesignEnabled, @@ -90,6 +90,11 @@ describe('useConfirmationRedesignEnabled', () => { describe('transaction redesigned confirmations', () => { describe('staking confirmations', () => { describe('staking deposit', () => { + beforeEach(() => { + jest.clearAllMocks(); + (isHardwareAccount as jest.Mock).mockReturnValue(false); + }); + it('returns true when enabled', async () => { const { result } = renderHookWithProvider( useConfirmationRedesignEnabled, @@ -161,6 +166,18 @@ describe('useConfirmationRedesignEnabled', () => { expect(result.current.isRedesignedEnabled).toBe(false); }); + it('returns false when from address is external hardware account', async () => { + (isHardwareAccount as jest.Mock).mockReturnValue(true); + const { result } = renderHookWithProvider( + useConfirmationRedesignEnabled, + { + state: stakingDepositConfirmationState, + }, + ); + + expect(result.current.isRedesignedEnabled).toBe(false); + }); + it('only redesign if transactions is staking deposit', async () => { const withBridgeTransaction = cloneDeep( stakingDepositConfirmationState, diff --git a/app/components/Views/confirmations/hooks/useConfirmationRedesignEnabled.ts b/app/components/Views/confirmations/hooks/useConfirmationRedesignEnabled.ts index 7ea755f3d0f0..3f92e47f7989 100644 --- a/app/components/Views/confirmations/hooks/useConfirmationRedesignEnabled.ts +++ b/app/components/Views/confirmations/hooks/useConfirmationRedesignEnabled.ts @@ -6,7 +6,10 @@ import { } from '@metamask/transaction-controller'; import { ApprovalType } from '@metamask/controller-utils'; -import { isExternalHardwareAccount } from '../../../../util/address'; +import { + isExternalHardwareAccount, + isHardwareAccount, +} from '../../../../util/address'; import { type ConfirmationRedesignRemoteFlags, selectConfirmationRedesignFlags, @@ -32,20 +35,21 @@ function isRedesignedSignature({ }) { return ( confirmationRedesignFlags?.signatures && - // following condition will ensure that user is redirected to old designs for hardware wallets - !isExternalHardwareAccount(fromAddress) && approvalRequestType && - REDESIGNED_SIGNATURE_TYPES.includes(approvalRequestType as ApprovalType) + REDESIGNED_SIGNATURE_TYPES.includes(approvalRequestType as ApprovalType) && + !isExternalHardwareAccount(fromAddress) ); } function isRedesignedTransaction({ approvalRequestType, confirmationRedesignFlags, + fromAddress, transactionMetadata, }: { approvalRequestType: ApprovalType; confirmationRedesignFlags: ConfirmationRedesignRemoteFlags; + fromAddress: string; transactionMetadata?: TransactionMeta; }) { const isTransactionTypeRedesigned = REDESIGNED_TRANSACTION_TYPES.includes( @@ -55,7 +59,8 @@ function isRedesignedTransaction({ if ( !isTransactionTypeRedesigned || approvalRequestType !== ApprovalType.Transaction || - !transactionMetadata + !transactionMetadata || + isHardwareAccount(fromAddress) ) { return false; } @@ -69,13 +74,13 @@ function isRedesignedTransaction({ export const useConfirmationRedesignEnabled = () => { const { approvalRequest } = useApprovalRequest(); + const fromAddress = approvalRequest?.requestData?.from; const transactionMetadata = useTransactionMetadataRequest(); const confirmationRedesignFlags = useSelector( selectConfirmationRedesignFlags, ); const approvalRequestType = approvalRequest?.type as ApprovalType; - const fromAddress = approvalRequest?.requestData?.from; const isRedesignedEnabled = useMemo( () => @@ -87,6 +92,7 @@ export const useConfirmationRedesignEnabled = () => { isRedesignedTransaction({ approvalRequestType, confirmationRedesignFlags, + fromAddress, transactionMetadata, }), [ diff --git a/app/components/Views/confirmations/hooks/useEIP1559TxFees.test.ts b/app/components/Views/confirmations/hooks/useEIP1559TxFees.test.ts new file mode 100644 index 000000000000..fead64f7746a --- /dev/null +++ b/app/components/Views/confirmations/hooks/useEIP1559TxFees.test.ts @@ -0,0 +1,34 @@ +import { TransactionMeta } from '@metamask/transaction-controller'; + +import { renderHookWithProvider } from '../../../../util/test/renderWithProvider'; +import { stakingDepositConfirmationState } from '../../../../util/test/confirm-data-helpers'; +import { useEIP1559TxFees } from './useEIP1559TxFees'; + +describe('useEIP1559TxFees', () => { + it('returns transaction fees', async () => { + const { result } = renderHookWithProvider( + () => + useEIP1559TxFees( + stakingDepositConfirmationState.engine.backgroundState + .TransactionController.transactions[0], + ), + { + state: stakingDepositConfirmationState, + }, + ); + expect(result.current.maxFeePerGas).toBe('2220444448'); + expect(result.current.maxPriorityFeePerGas).toBe('1305306368'); + }); + + it('returns 0 if no transaction meta present', async () => { + const { result } = renderHookWithProvider( + () => useEIP1559TxFees(undefined as unknown as TransactionMeta), + { + state: stakingDepositConfirmationState, + }, + ); + + expect(result.current.maxFeePerGas).toBe('0'); + expect(result.current.maxPriorityFeePerGas).toBe('0'); + }); +}); diff --git a/app/components/Views/confirmations/hooks/useEIP1559TxFees.ts b/app/components/Views/confirmations/hooks/useEIP1559TxFees.ts new file mode 100644 index 000000000000..93125db01bf9 --- /dev/null +++ b/app/components/Views/confirmations/hooks/useEIP1559TxFees.ts @@ -0,0 +1,26 @@ +import { useMemo } from 'react'; +import { TransactionMeta } from '@metamask/transaction-controller'; + +import { hexToDecimal } from '../../../../util/conversions'; + +export const useEIP1559TxFees = ( + transactionMeta: TransactionMeta, +): { + maxFeePerGas: string; + maxPriorityFeePerGas: string; +} => { + const hexMaxFeePerGas = transactionMeta?.txParams?.maxFeePerGas; + const hexMaxPriorityFeePerGas = + transactionMeta?.txParams?.maxPriorityFeePerGas; + + return useMemo(() => { + const maxFeePerGas = hexMaxFeePerGas + ? hexToDecimal(hexMaxFeePerGas).toString() + : '0'; + const maxPriorityFeePerGas = hexMaxPriorityFeePerGas + ? hexToDecimal(hexMaxPriorityFeePerGas).toString() + : '0'; + + return { maxFeePerGas, maxPriorityFeePerGas }; + }, [hexMaxFeePerGas, hexMaxPriorityFeePerGas]); +}; diff --git a/app/components/Views/confirmations/hooks/useFeeCalculations.test.ts b/app/components/Views/confirmations/hooks/useFeeCalculations.test.ts new file mode 100644 index 000000000000..7540e37a210d --- /dev/null +++ b/app/components/Views/confirmations/hooks/useFeeCalculations.test.ts @@ -0,0 +1,120 @@ +import cloneDeep from 'lodash/cloneDeep'; +import { TransactionParams } from '@metamask/transaction-controller'; + +import { renderHookWithProvider } from '../../../../util/test/renderWithProvider'; +import { stakingDepositConfirmationState } from '../../../../util/test/confirm-data-helpers'; +import { useFeeCalculations } from './useFeeCalculations'; + +jest.mock('../../../../core/Engine', () => ({ + context: { + GasFeeController: { + startPolling: jest.fn(), + stopPollingByPollingToken: jest.fn(), + }, + NetworkController: { + getNetworkConfigurationByNetworkClientId: jest.fn(), + }, + }, +})); + +describe('useFeeCalculations', () => { + const transactionMeta = + stakingDepositConfirmationState.engine.backgroundState.TransactionController + .transactions[0]; + + it('returns no estimates for empty txParams', async () => { + const clonedStateWithoutTxParams = cloneDeep( + stakingDepositConfirmationState, + ); + clonedStateWithoutTxParams.engine.backgroundState.TransactionController.transactions[0].txParams = + undefined as unknown as TransactionParams; + + const transactionMetaWithoutTxParams = + clonedStateWithoutTxParams.engine.backgroundState.TransactionController + .transactions[0]; + + const { result } = renderHookWithProvider( + () => useFeeCalculations(transactionMetaWithoutTxParams), + { + state: clonedStateWithoutTxParams, + }, + ); + expect(result.current).toMatchInlineSnapshot(` + { + "estimatedFeeFiat": "$0.00", + "estimatedFeeNative": "0 ETH", + "preciseNativeFeeInHex": "0x0", + } + `); + }); + + it('returns fee calculations', async () => { + const { result } = renderHookWithProvider( + () => useFeeCalculations(transactionMeta), + { + state: stakingDepositConfirmationState, + }, + ); + expect(result.current).toMatchInlineSnapshot(` + { + "estimatedFeeFiat": "$0.34", + "estimatedFeeNative": "0.0001 ETH", + "preciseNativeFeeInHex": "0x5572e9c22d00", + } + `); + }); + + it('returns fee calculations less than $0.01', async () => { + const clonedStakingDepositConfirmationState = cloneDeep( + stakingDepositConfirmationState, + ); + clonedStakingDepositConfirmationState.engine.backgroundState.CurrencyRateController.currencyRates.ETH = + { + conversionDate: 1732887955.694, + conversionRate: 80, + usdConversionRate: 80, + }; + + const { result } = renderHookWithProvider( + () => useFeeCalculations(transactionMeta), + { + state: clonedStakingDepositConfirmationState, + }, + ); + expect(result.current).toMatchInlineSnapshot(` + { + "estimatedFeeFiat": "< $0.01", + "estimatedFeeNative": "0.0001 ETH", + "preciseNativeFeeInHex": "0x5572e9c22d00", + } + `); + }); + + it('returns null as estimatedFeeFiat if conversion rate is not available', async () => { + const clonedStakingDepositConfirmationState = cloneDeep( + stakingDepositConfirmationState, + ); + + // No type is exported for CurrencyRate, so we need to cast it to the correct type + clonedStakingDepositConfirmationState.engine.backgroundState.CurrencyRateController.currencyRates.ETH = + null as unknown as { + conversionDate: number; + conversionRate: number; + usdConversionRate: number; + }; + + const { result } = renderHookWithProvider( + () => useFeeCalculations(transactionMeta), + { + state: clonedStakingDepositConfirmationState, + }, + ); + expect(result.current).toMatchInlineSnapshot(` + { + "estimatedFeeFiat": null, + "estimatedFeeNative": "0.0001 ETH", + "preciseNativeFeeInHex": "0x5572e9c22d00", + } + `); + }); +}); diff --git a/app/components/Views/confirmations/hooks/useFeeCalculations.ts b/app/components/Views/confirmations/hooks/useFeeCalculations.ts new file mode 100644 index 000000000000..50b44a872528 --- /dev/null +++ b/app/components/Views/confirmations/hooks/useFeeCalculations.ts @@ -0,0 +1,145 @@ +import { BigNumber } from 'bignumber.js'; +import { useSelector } from 'react-redux'; +import { useCallback, useMemo } from 'react'; +import { Hex, add0x } from '@metamask/utils'; +import type { TransactionMeta } from '@metamask/transaction-controller'; +import { GasFeeEstimates } from '@metamask/gas-fee-controller'; +import { hexToBN } from '@metamask/controller-utils'; + +import { + decGWEIToHexWEI, + addHexes, + decimalToHex, + getValueFromWeiHex, + multiplyHexes, +} from '../../../../util/conversions'; +import { selectConversionRateByChainId } from '../../../../selectors/currencyRateController'; +import { RootState } from '../../../../reducers'; +import { selectNetworkConfigurationByChainId } from '../../../../selectors/networkController'; +import useFiatFormatter from '../../../UI/SimulationDetails/FiatDisplay/useFiatFormatter'; +import { useEIP1559TxFees } from './useEIP1559TxFees'; +import { useSupportsEIP1559 } from './useSupportsEIP1559'; +import { useGasFeeEstimates } from './useGasFeeEstimates'; + +const HEX_ZERO = '0x0'; + +export const useFeeCalculations = (transactionMeta: TransactionMeta) => { + const { chainId } = transactionMeta; + const { nativeCurrency } = useSelector((state: RootState) => + selectNetworkConfigurationByChainId(state, chainId as Hex), + ); + const fiatFormatter = useFiatFormatter(); + const nativeConversionRate = useSelector((state: RootState) => + selectConversionRateByChainId(state, chainId as Hex), + ); + + const gasPrice = transactionMeta?.txParams?.gasPrice || HEX_ZERO; + const { maxFeePerGas, maxPriorityFeePerGas } = + useEIP1559TxFees(transactionMeta); + const { supportsEIP1559 } = useSupportsEIP1559(transactionMeta); + + const getFeesFromHex = useCallback( + (hexFee: string) => { + const nativeConversionRateInBN = new BigNumber( + nativeConversionRate as number, + ); + const nativeCurrencyFee = `${ + getValueFromWeiHex({ + value: hexFee, + fromCurrency: 'WEI', + toCurrency: 'ETH', + numberOfDecimals: 4, + conversionRate: 1, + toDenomination: 'ETH', + }) || 0 + } ${nativeCurrency}`; + + const decimalCurrentCurrencyFee = Number( + getValueFromWeiHex({ + value: hexFee, + conversionRate: nativeConversionRateInBN, + fromCurrency: 'GWEI', + toCurrency: 'ETH', + numberOfDecimals: 2, + toDenomination: 'ETH', + }), + ); + + // This is used to check if the fee is less than $0.01 - more precise than decimalCurrentCurrencyFee + // Because decimalCurrentCurrencyFee is rounded to 2 decimal places + const preciseCurrentCurrencyFee = Number( + getValueFromWeiHex({ + value: hexFee, + conversionRate: nativeConversionRateInBN, + fromCurrency: 'GWEI', + toCurrency: 'ETH', + numberOfDecimals: 3, + toDenomination: 'ETH', + }), + ); + + let currentCurrencyFee; + if (decimalCurrentCurrencyFee === 0) { + currentCurrencyFee = '$0.00'; + } else if (preciseCurrentCurrencyFee < 0.01) { + currentCurrencyFee = `< ${fiatFormatter(new BigNumber(0.01))}`; + } else { + currentCurrencyFee = fiatFormatter( + new BigNumber(decimalCurrentCurrencyFee), + ); + } + + if (!nativeConversionRate) { + currentCurrencyFee = null; + } + + return { + currentCurrencyFee, + nativeCurrencyFee, + preciseNativeFeeInHex: add0x(hexFee), + }; + }, + [fiatFormatter, nativeConversionRate, nativeCurrency], + ); + + const { gasFeeEstimates } = useGasFeeEstimates( + transactionMeta.networkClientId, + ); + const estimatedBaseFee = (gasFeeEstimates as GasFeeEstimates) + ?.estimatedBaseFee; + + // Estimated fee + const estimatedFees = useMemo(() => { + let minimumFeePerGas = addHexes( + decGWEIToHexWEI(estimatedBaseFee) || HEX_ZERO, + decimalToHex(maxPriorityFeePerGas), + ); + + const minimumFeePerGasBN = hexToBN(minimumFeePerGas as Hex); + + // `minimumFeePerGas` should never be higher than the `maxFeePerGas` + if (minimumFeePerGasBN.gt(hexToBN(maxFeePerGas as Hex))) { + minimumFeePerGas = decimalToHex(maxFeePerGas) as Hex; + } + const gasLimitNoBuffer = transactionMeta.gasLimitNoBuffer || HEX_ZERO; + const estimatedFee = multiplyHexes( + supportsEIP1559 ? (minimumFeePerGas as Hex) : (gasPrice as Hex), + gasLimitNoBuffer as Hex, + ); + return getFeesFromHex(estimatedFee); + }, [ + estimatedBaseFee, + getFeesFromHex, + gasPrice, + maxFeePerGas, + maxPriorityFeePerGas, + supportsEIP1559, + transactionMeta, + ]); + + return { + estimatedFeeFiat: estimatedFees.currentCurrencyFee, + estimatedFeeNative: estimatedFees.nativeCurrencyFee, + preciseNativeFeeInHex: estimatedFees.preciseNativeFeeInHex, + }; +}; diff --git a/app/components/Views/confirmations/hooks/useFlatConfirmation.test.ts b/app/components/Views/confirmations/hooks/useFlatConfirmation.test.ts new file mode 100644 index 000000000000..8aed1e78f1c7 --- /dev/null +++ b/app/components/Views/confirmations/hooks/useFlatConfirmation.test.ts @@ -0,0 +1,24 @@ +import { renderHookWithProvider } from '../../../../util/test/renderWithProvider'; +import { + personalSignatureConfirmationState, + stakingDepositConfirmationState, +} from '../../../../util/test/confirm-data-helpers'; +import { useFlatConfirmation } from './useFlatConfirmation'; + +describe('useFlatConfirmation', () => { + it('returns true for staking confirmation', async () => { + const { result } = renderHookWithProvider(useFlatConfirmation, { + state: stakingDepositConfirmationState, + }); + + expect(result.current.isFlatConfirmation).toBe(true); + }); + + it('returns false for personal sign request', async () => { + const { result } = renderHookWithProvider(useFlatConfirmation, { + state: personalSignatureConfirmationState, + }); + + expect(result.current.isFlatConfirmation).toBe(false); + }); +}); diff --git a/app/components/Views/confirmations/hooks/useFlatConfirmation.ts b/app/components/Views/confirmations/hooks/useFlatConfirmation.ts new file mode 100644 index 000000000000..7dca46a01290 --- /dev/null +++ b/app/components/Views/confirmations/hooks/useFlatConfirmation.ts @@ -0,0 +1,17 @@ +import { TransactionType } from '@metamask/transaction-controller'; + +import { useTransactionMetadataRequest } from '../hooks/useTransactionMetadataRequest'; + +const FLAT_TRANSACTION_CONFIRMATIONS: TransactionType[] = [ + TransactionType.stakingDeposit, +]; + +export const useFlatConfirmation = () => { + const transactionMetadata = useTransactionMetadataRequest(); + + const isFlatConfirmation = FLAT_TRANSACTION_CONFIRMATIONS.includes( + transactionMetadata?.type as TransactionType, + ); + + return { isFlatConfirmation }; +}; diff --git a/app/components/Views/confirmations/hooks/useGasFeeEstimates.test.ts b/app/components/Views/confirmations/hooks/useGasFeeEstimates.test.ts new file mode 100644 index 000000000000..b429355397ac --- /dev/null +++ b/app/components/Views/confirmations/hooks/useGasFeeEstimates.test.ts @@ -0,0 +1,103 @@ +import { cloneDeep } from 'lodash'; +import { NetworkConfiguration } from '@metamask/network-controller'; +import { mergeGasFeeEstimates } from '@metamask/transaction-controller'; + +import { renderHookWithProvider } from '../../../../util/test/renderWithProvider'; +import { stakingDepositConfirmationState } from '../../../../util/test/confirm-data-helpers'; +import usePolling from '../../../../components/hooks/usePolling'; +import Engine from '../../../../core/Engine'; +import { useGasFeeEstimates } from './useGasFeeEstimates'; + +jest.mock('@metamask/transaction-controller', () => ({ + ...jest.requireActual('@metamask/transaction-controller'), + mergeGasFeeEstimates: jest.fn(), +})); + +jest.mock('../../../../components/hooks/usePolling', () => ({ + __esModule: true, + default: jest.fn(), +})); + +jest.mock('../../../../core/Engine', () => ({ + context: { + GasFeeController: { + startPolling: jest.fn(), + stopPollingByPollingToken: jest.fn(), + }, + NetworkController: { + getNetworkConfigurationByNetworkClientId: jest.fn(), + }, + }, +})); + +describe('useGasFeeEstimates', () => { + const mockNetworkClientId = '1'; + const startPollingMock = jest.fn(); + const stopPollingByPollingTokenMock = jest.fn(); + const usePollingMock = jest.mocked(usePolling); + const EngineMock = jest.mocked(Engine); + + beforeEach(() => { + jest.clearAllMocks(); + + EngineMock.context.GasFeeController.startPolling.mockImplementation( + startPollingMock, + ); + EngineMock.context.GasFeeController.stopPollingByPollingToken.mockImplementation( + stopPollingByPollingTokenMock, + ); + EngineMock.context.NetworkController.getNetworkConfigurationByNetworkClientId.mockImplementation( + () => + ({ + chainId: '0x1', + } as unknown as NetworkConfiguration), + ); + }); + + it('polls with given network client id', async () => { + renderHookWithProvider(() => useGasFeeEstimates('mockNetworkClientId2'), { + state: stakingDepositConfirmationState, + }); + + expect(usePollingMock).toHaveBeenCalledWith({ + startPolling: expect.any(Function), + stopPollingByPollingToken: expect.any(Function), + input: [{ networkClientId: 'mockNetworkClientId2' }], + }); + }); + + it('returns gas fee estimates from gas fee controller if transaction does not have gas fee estimates', () => { + const transactionWithoutGasFeeEstimates = cloneDeep( + stakingDepositConfirmationState, + ); + transactionWithoutGasFeeEstimates.engine.backgroundState.TransactionController.transactions[0].gasFeeEstimates = + undefined; + + const { result } = renderHookWithProvider( + () => useGasFeeEstimates(mockNetworkClientId), + { + state: transactionWithoutGasFeeEstimates, + }, + ); + + expect(result.current.gasFeeEstimates).toEqual( + stakingDepositConfirmationState.engine.backgroundState.GasFeeController + .gasFeeEstimatesByChainId?.['0x1'].gasFeeEstimates, + ); + }); + + it('merges gas fee estimates from transaction and gas fee controller', () => { + renderHookWithProvider(() => useGasFeeEstimates(mockNetworkClientId), { + state: stakingDepositConfirmationState, + }); + + expect(mergeGasFeeEstimates).toHaveBeenCalledWith({ + gasFeeControllerEstimates: + stakingDepositConfirmationState.engine.backgroundState.GasFeeController + .gasFeeEstimatesByChainId?.['0x1'].gasFeeEstimates, + transactionGasFeeEstimates: + stakingDepositConfirmationState.engine.backgroundState + .TransactionController.transactions[0].gasFeeEstimates, + }); + }); +}); diff --git a/app/components/Views/confirmations/hooks/useGasFeeEstimates.ts b/app/components/Views/confirmations/hooks/useGasFeeEstimates.ts new file mode 100644 index 000000000000..7b3f480f84ef --- /dev/null +++ b/app/components/Views/confirmations/hooks/useGasFeeEstimates.ts @@ -0,0 +1,58 @@ +import isEqual from 'lodash/isEqual'; +import { useSelector } from 'react-redux'; +import { useEffect, useState } from 'react'; + +import { selectGasFeeEstimatesByChainId } from '../../../../selectors/gasFeeController'; +import usePolling from '../../../../components/hooks/usePolling'; +import { RootState } from '../../../../reducers'; +import Engine from '../../../../core/Engine'; + +/** + * Gets the current gasFeeEstimates from state and begins polling for new + * estimates. When this hook is removed from the tree it will signal to the + * GasFeeController that it is done requiring new gas estimates. Also checks + * the returned gas estimate for validity on the current network. + * + * @param _networkClientId - The optional network client ID to get gas fee estimates for. Defaults to the currently selected network. + * @returns {GasEstimates} GasEstimates object + */ +export function useGasFeeEstimates(networkClientId: string) { + const [chainId, setChainId] = useState(''); + + const gasFeeEstimates = useSelector( + (state: RootState) => selectGasFeeEstimatesByChainId(state, chainId), + isEqual, + ); + const { NetworkController } = Engine.context; + + useEffect(() => { + let isMounted = true; + const networkConfig = + NetworkController.getNetworkConfigurationByNetworkClientId( + networkClientId, + ); + + if (networkConfig && isMounted) { + setChainId(networkConfig.chainId); + } + + return () => { + isMounted = false; + }; + }, [networkClientId, NetworkController]); + + usePolling({ + startPolling: Engine.context.GasFeeController.startPolling.bind( + Engine.context.GasFeeController, + ), + stopPollingByPollingToken: + Engine.context.GasFeeController.stopPollingByPollingToken.bind( + Engine.context.GasFeeController, + ), + input: [{ networkClientId }], + }); + + return { + gasFeeEstimates, + }; +} diff --git a/app/components/Views/confirmations/hooks/useNetworkInfo.ts b/app/components/Views/confirmations/hooks/useNetworkInfo.ts index 726472cd2929..131e7ab03a82 100644 --- a/app/components/Views/confirmations/hooks/useNetworkInfo.ts +++ b/app/components/Views/confirmations/hooks/useNetworkInfo.ts @@ -2,17 +2,23 @@ import { useSelector } from 'react-redux'; import { toHex } from '@metamask/controller-utils'; import { getNetworkImageSource } from '../../../../util/networks'; -import { selectNetworkConfigurations } from '../../../../selectors/networkController'; +import { selectEvmNetworkConfigurationsByChainId } from '../../../../selectors/networkController'; +import { isNonEvmChainId } from '../../../../core/Multichain/utils'; const useNetworkInfo = (chainId?: string) => { - const networkConfigurations = useSelector(selectNetworkConfigurations); + const networkConfigurations = useSelector( + selectEvmNetworkConfigurationsByChainId, + ); if (!chainId) { return {}; } - const networkConfiguration = networkConfigurations[toHex(chainId)]; + if (isNonEvmChainId(chainId)) { + return {}; + } + const networkConfiguration = networkConfigurations[toHex(chainId)]; if (!networkConfiguration) { return {}; } diff --git a/app/components/Views/confirmations/hooks/useStakingDetails.test.ts b/app/components/Views/confirmations/hooks/useStakingDetails.test.ts new file mode 100644 index 000000000000..16b4bd257864 --- /dev/null +++ b/app/components/Views/confirmations/hooks/useStakingDetails.test.ts @@ -0,0 +1,36 @@ +import { merge } from 'lodash'; +import { decGWEIToHexWEI } from '../../../../util/conversions'; +import { stakingDepositConfirmationState } from '../../../../util/test/confirm-data-helpers'; +import { renderHookWithProvider } from '../../../../util/test/renderWithProvider'; +import { useStakingDetails } from './useStakingDetails'; + +describe('useStakingDetails', () => { + describe('staking deposit', () => { + it('returns token and fiat values', () => { + const state = merge({}, stakingDepositConfirmationState, { + engine: { + backgroundState: { + TransactionController: { + transactions: [ + { + txParams: { value: `0x${decGWEIToHexWEI(10 ** 8)}` }, + }, + ], + }, + }, + }, + staking: { + vaultData: { apy: '2.2' }, + }, + }); + + const { result } = renderHookWithProvider(useStakingDetails, { state }); + + expect(result.current).toEqual({ + annualRewardsETH: '0.0022 ETH', + annualRewardsFiat: '$7.91', + apr: '2.2%', + }); + }); + }); +}); diff --git a/app/components/Views/confirmations/hooks/useStakingDetails.ts b/app/components/Views/confirmations/hooks/useStakingDetails.ts new file mode 100644 index 000000000000..ad1b0104630a --- /dev/null +++ b/app/components/Views/confirmations/hooks/useStakingDetails.ts @@ -0,0 +1,35 @@ +import { TransactionMeta } from '@metamask/transaction-controller'; +import { BigNumber } from 'bignumber.js'; +import { useSelector } from 'react-redux'; +import I18n from '../../../../../locales/i18n'; +import { formatAmount } from '../../../../components/UI/SimulationDetails/formatAmount'; +import useVaultData from '../../../../components/UI/Stake/hooks/useVaultData'; +import { RootState } from '../../../../reducers'; +import { selectConversionRateByChainId } from '../../../../selectors/currencyRateController'; +import { fromWei, hexToBN } from '../../../../util/number'; +import useFiatFormatter from '../../../UI/SimulationDetails/FiatDisplay/useFiatFormatter'; +import { useTransactionMetadataRequest } from './useTransactionMetadataRequest'; + +export const useStakingDetails = () => { + const transactionMeta = useTransactionMetadataRequest(); + const txValueWei = transactionMeta?.txParams?.value; + const fiatFormatter = useFiatFormatter(); + const locale = I18n.locale; + + const { annualRewardRate: apr, annualRewardRateDecimal } = useVaultData(); + + const ethAmountInWei = hexToBN(txValueWei || '0x0'); + const ethAmountInBN = new BigNumber(fromWei(ethAmountInWei, 'ether')); + const annualRewardsInBN = ethAmountInBN.times(annualRewardRateDecimal); + const annualRewardsETH = `${formatAmount(locale, annualRewardsInBN)} ETH`; + + const nativeFiatRate = useSelector( + (state: RootState) => selectConversionRateByChainId(state, (transactionMeta as TransactionMeta).chainId) + ) as number; + const nativeConversionRateInBN = new BigNumber(nativeFiatRate || 0); + const preciseFiatValue = ethAmountInBN.times(nativeConversionRateInBN); + const annualRewardsFiatValue = preciseFiatValue.times(annualRewardRateDecimal); + const annualRewardsFiat = annualRewardsFiatValue && fiatFormatter(annualRewardsFiatValue); + + return { apr, annualRewardsFiat, annualRewardsETH }; +} diff --git a/app/components/Views/confirmations/hooks/useStandaloneConfirmation.test.ts b/app/components/Views/confirmations/hooks/useStandaloneConfirmation.test.ts new file mode 100644 index 000000000000..db5f166e60bb --- /dev/null +++ b/app/components/Views/confirmations/hooks/useStandaloneConfirmation.test.ts @@ -0,0 +1,24 @@ +import { + personalSignatureConfirmationState, + stakingDepositConfirmationState, +} from '../../../../util/test/confirm-data-helpers'; +import { renderHookWithProvider } from '../../../../util/test/renderWithProvider'; +import { useStandaloneConfirmation } from './useStandaloneConfirmation'; + +describe('useStandaloneConfirmation', () => { + it('returns true for staking confirmation', async () => { + const { result } = renderHookWithProvider(useStandaloneConfirmation, { + state: stakingDepositConfirmationState, + }); + + expect(result.current.isStandaloneConfirmation).toBe(true); + }); + + it('returns false for personal sign request', async () => { + const { result } = renderHookWithProvider(useStandaloneConfirmation, { + state: personalSignatureConfirmationState, + }); + + expect(result.current.isStandaloneConfirmation).toBe(false); + }); +}); diff --git a/app/components/Views/confirmations/hooks/useStandaloneConfirmation.ts b/app/components/Views/confirmations/hooks/useStandaloneConfirmation.ts new file mode 100644 index 000000000000..27e7ff1db8a6 --- /dev/null +++ b/app/components/Views/confirmations/hooks/useStandaloneConfirmation.ts @@ -0,0 +1,17 @@ +import { TransactionType } from '@metamask/transaction-controller'; +import { useTransactionMetadataRequest } from '../hooks/useTransactionMetadataRequest'; + +const STANDALONE_TRANSACTION_CONFIRMATIONS: TransactionType[] = [ + TransactionType.stakingDeposit, +]; + +export const useStandaloneConfirmation = () => { + const transactionMetadata = useTransactionMetadataRequest(); + + const isStandaloneConfirmation = + STANDALONE_TRANSACTION_CONFIRMATIONS.includes( + transactionMetadata?.type as TransactionType, + ); + + return { isStandaloneConfirmation }; +}; diff --git a/app/components/Views/confirmations/hooks/useSupportsEIP1559.test.ts b/app/components/Views/confirmations/hooks/useSupportsEIP1559.test.ts new file mode 100644 index 000000000000..952b563e7e19 --- /dev/null +++ b/app/components/Views/confirmations/hooks/useSupportsEIP1559.test.ts @@ -0,0 +1,67 @@ +import { TransactionEnvelopeType } from '@metamask/transaction-controller'; +import { cloneDeep, merge } from 'lodash'; + +import { renderHookWithProvider } from '../../../../util/test/renderWithProvider'; +import { stakingDepositConfirmationState } from '../../../../util/test/confirm-data-helpers'; +import { useSupportsEIP1559 } from './useSupportsEIP1559'; + +describe('useEIP1559TxFees', () => { + it('returns true for EIP1559 transaction', async () => { + const { result } = renderHookWithProvider( + () => + useSupportsEIP1559( + stakingDepositConfirmationState.engine.backgroundState + .TransactionController.transactions[0], + ), + { + state: stakingDepositConfirmationState, + }, + ); + + expect(result.current.supportsEIP1559).toBe(true); + }); + it('returns false for legacy transaction', async () => { + const clonedTransactionMeta = cloneDeep( + stakingDepositConfirmationState.engine.backgroundState + .TransactionController.transactions[0], + ); + clonedTransactionMeta.txParams.type = TransactionEnvelopeType.legacy; + + const { result } = renderHookWithProvider( + () => useSupportsEIP1559(clonedTransactionMeta), + { + state: stakingDepositConfirmationState, + }, + ); + + expect(result.current.supportsEIP1559).toBe(false); + }); + + it('returns false for non-EIP1559 network', async () => { + const state = merge({}, stakingDepositConfirmationState, { + engine: { + backgroundState: { + NetworkController: { + selectedNetworkClientId: '0x123456', + networksMetadata: { + '0x123456': { + EIPS: { 1559: false }, + }, + }, + }, + }, + }, + }); + + const { result } = renderHookWithProvider( + () => + useSupportsEIP1559( + state.engine.backgroundState.TransactionController.transactions[0], + ), + { + state, + }, + ); + expect(result.current.supportsEIP1559).toBe(false); + }); +}); diff --git a/app/components/Views/confirmations/hooks/useSupportsEIP1559.ts b/app/components/Views/confirmations/hooks/useSupportsEIP1559.ts new file mode 100644 index 000000000000..bc18ffe3a590 --- /dev/null +++ b/app/components/Views/confirmations/hooks/useSupportsEIP1559.ts @@ -0,0 +1,17 @@ +import { useSelector } from 'react-redux'; +import { + TransactionEnvelopeType, + TransactionMeta, +} from '@metamask/transaction-controller'; + +import { selectIsEIP1559Network } from '../../../../selectors/networkController'; + +export function useSupportsEIP1559(transactionMeta: TransactionMeta) { + const isLegacyTxn = + transactionMeta?.txParams?.type === TransactionEnvelopeType.legacy; + const networkSupportsEIP1559 = useSelector(selectIsEIP1559Network); + + const supportsEIP1559 = networkSupportsEIP1559 && !isLegacyTxn; + + return { supportsEIP1559 }; +} diff --git a/app/components/Views/confirmations/hooks/useTokenValues.test.ts b/app/components/Views/confirmations/hooks/useTokenValues.test.ts index 73d89b74d573..f9e2ce49a95f 100644 --- a/app/components/Views/confirmations/hooks/useTokenValues.test.ts +++ b/app/components/Views/confirmations/hooks/useTokenValues.test.ts @@ -10,6 +10,7 @@ describe('useTokenValues', () => { }); expect(result.current).toEqual({ + tokenAmountValue: '0.0001', tokenAmountDisplayValue: '0.0001', fiatDisplayValue: '$0.36', }); diff --git a/app/components/Views/confirmations/hooks/useTokenValues.ts b/app/components/Views/confirmations/hooks/useTokenValues.ts index 813eb08db699..fe9a1342b821 100644 --- a/app/components/Views/confirmations/hooks/useTokenValues.ts +++ b/app/components/Views/confirmations/hooks/useTokenValues.ts @@ -13,22 +13,24 @@ import { RootState } from '../../../../reducers'; // TODO: This hook will be extended to calculate token and fiat information from transaction metadata on upcoming redesigned confirmations export const useTokenValues = () => { const transactionMetadata = useTransactionMetadataRequest(); - const fiatFormatter = useFiatFormatter(); + const ethAmountInWei = hexToBN(transactionMetadata?.txParams?.value); + const ethAmountInBN = new BigNumber(fromWei(ethAmountInWei, 'ether')); + + const tokenAmountValue = ethAmountInBN.toFixed(); + const locale = I18n.locale; + const tokenAmountDisplayValue = formatAmount(locale, ethAmountInBN); + + const fiatFormatter = useFiatFormatter(); const nativeConversionRate = useSelector((state: RootState) => selectConversionRateByChainId(state, transactionMetadata?.chainId as Hex), ); const nativeConversionRateInBN = new BigNumber(nativeConversionRate || 1); - - const ethAmountInWei = hexToBN(transactionMetadata?.txParams?.value); - const ethAmountInBN = new BigNumber(fromWei(ethAmountInWei, 'ether')); - const preciseFiatValue = ethAmountInBN.times(nativeConversionRateInBN); - - const tokenAmountDisplayValue = formatAmount(locale, ethAmountInBN); const fiatDisplayValue = preciseFiatValue && fiatFormatter(preciseFiatValue); return { + tokenAmountValue, tokenAmountDisplayValue, fiatDisplayValue, }; diff --git a/app/components/Views/confirmations/types/alerts.ts b/app/components/Views/confirmations/types/alerts.ts new file mode 100644 index 000000000000..7d341e5e6d70 --- /dev/null +++ b/app/components/Views/confirmations/types/alerts.ts @@ -0,0 +1,72 @@ +import { ReactElement } from 'react'; + +export enum Severity { + Danger = 'danger', + Warning = 'warning', + Info = 'info', +} + +export type AlertSeverity = Severity.Danger | Severity.Warning | Severity.Info; + +type MessageOrContent = { + /** + * Alert summary components can be used as an alternative to a message. + */ + content: ReactElement; + + /** + * The message is a summary of the alert details. + */ + message?: string; +} | { + /** + * Alert summary components can be used as an alternative to a message. + */ + content?: ReactElement; + + /** + * The message is a summary of the alert details. + */ + message: string; +}; + +/** + * A confirmable alert to be displayed in the UI. + */ +export type Alert = { + /** + * Additional details about the alert. + */ + alertDetails?: string[]; + + /** + * Alternate actions the user can take, specific to the alert. + */ + action?: { label: string; callback: () => void }; + + /** + * The field associated with the alert. + */ + field?: string; + + /** + * Whether the alert is a blocker and un-acknowledgeable, preventing the user + * from proceeding and relying on actions to proceed. The default is `false`. + */ + isBlocking?: boolean; + + /** + * The unique key of the alert. + */ + key: string; + + /** + * The severity of the alert. + */ + severity: AlertSeverity; + + /** + * The title of the alert. + */ + title: string; +} & MessageOrContent; diff --git a/app/components/hooks/AssetPolling/useAccountTrackerPolling.test.ts b/app/components/hooks/AssetPolling/useAccountTrackerPolling.test.ts index 4aacec21e5f5..786d698fa5dc 100644 --- a/app/components/hooks/AssetPolling/useAccountTrackerPolling.test.ts +++ b/app/components/hooks/AssetPolling/useAccountTrackerPolling.test.ts @@ -4,6 +4,7 @@ import useAccountTrackerPolling from './useAccountTrackerPolling'; // eslint-disable-next-line import/no-namespace import * as networks from '../../../util/networks'; import { RootState } from '../../../reducers'; +import { SolScope } from '@metamask/keyring-api'; jest.mock('../../../core/Engine', () => ({ context: { @@ -22,6 +23,12 @@ describe('useAccountTrackerPolling', () => { const state = { engine: { backgroundState: { + MultichainNetworkController: { + isEvmSelected: true, + selectedMultichainNetworkChainId: SolScope.Mainnet, + + multichainNetworkConfigurationsByChainId: {}, + }, NetworkController: { selectedNetworkClientId: 'selectedNetworkClientId', networkConfigurationsByChainId: { @@ -142,6 +149,12 @@ describe('useAccountTrackerPolling', () => { state: { engine: { backgroundState: { + MultichainNetworkController: { + isEvmSelected: true, + selectedMultichainNetworkChainId: SolScope.Mainnet, + + multichainNetworkConfigurationsByChainId: {}, + }, NetworkController: { selectedNetworkClientId: 'otherNetworkClientId', networkConfigurationsByChainId: { diff --git a/app/components/hooks/AssetPolling/useCurrencyRatePolling.test.ts b/app/components/hooks/AssetPolling/useCurrencyRatePolling.test.ts index 0ab00825675f..00499b87ae5b 100644 --- a/app/components/hooks/AssetPolling/useCurrencyRatePolling.test.ts +++ b/app/components/hooks/AssetPolling/useCurrencyRatePolling.test.ts @@ -2,6 +2,7 @@ import useCurrencyRatePolling from './useCurrencyRatePolling'; import { renderHookWithProvider } from '../../../util/test/renderWithProvider'; import Engine from '../../../core/Engine'; import { RootState } from '../../../reducers'; +import { SolScope } from '@metamask/keyring-api'; jest.mock('../../../core/Engine', () => ({ context: { @@ -17,6 +18,12 @@ describe('useCurrencyRatePolling', () => { const state = { engine: { backgroundState: { + MultichainNetworkController: { + isEvmSelected: true, + selectedMultichainNetworkChainId: SolScope.Mainnet, + + multichainNetworkConfigurationsByChainId: {}, + }, NetworkController: { selectedNetworkClientId: 'selectedNetworkClientId', networkConfigurationsByChainId: { @@ -61,6 +68,12 @@ describe('useCurrencyRatePolling', () => { const state = { engine: { backgroundState: { + MultichainNetworkController: { + isEvmSelected: true, + selectedMultichainNetworkChainId: SolScope.Mainnet, + + multichainNetworkConfigurationsByChainId: {}, + }, NetworkController: { selectedNetworkClientId: 'selectedNetworkClientId', networkConfigurationsByChainId: { diff --git a/app/components/hooks/AssetPolling/useCurrencyRatePolling.ts b/app/components/hooks/AssetPolling/useCurrencyRatePolling.ts index 755663827ad9..8da41408d2d7 100644 --- a/app/components/hooks/AssetPolling/useCurrencyRatePolling.ts +++ b/app/components/hooks/AssetPolling/useCurrencyRatePolling.ts @@ -2,10 +2,10 @@ import { useSelector } from 'react-redux'; import usePolling from '../usePolling'; import { selectAllPopularNetworkConfigurations, - selectChainId, + selectEvmChainId, + selectEvmNetworkConfigurationsByChainId, selectIsAllNetworks, selectIsPopularNetwork, - selectNetworkConfigurations, } from '../../../selectors/networkController'; import Engine from '../../../core/Engine'; import { @@ -20,8 +20,10 @@ const useCurrencyRatePolling = () => { const networkConfigurationsPopularNetworks = useSelector( selectAllPopularNetworkConfigurations, ); - const networkConfigurations = useSelector(selectNetworkConfigurations); - const currentChainId = useSelector(selectChainId); + const networkConfigurations = useSelector( + selectEvmNetworkConfigurationsByChainId, + ); + const currentChainId = useSelector(selectEvmChainId); const isAllNetworksSelected = useSelector(selectIsAllNetworks); const isPopularNetwork = useSelector(selectIsPopularNetwork); diff --git a/app/components/hooks/AssetPolling/useTokenBalancesPolling.test.ts b/app/components/hooks/AssetPolling/useTokenBalancesPolling.test.ts index 6795ce4dc962..a090bb1d1181 100644 --- a/app/components/hooks/AssetPolling/useTokenBalancesPolling.test.ts +++ b/app/components/hooks/AssetPolling/useTokenBalancesPolling.test.ts @@ -4,6 +4,7 @@ import useTokenBalancesPolling from './useTokenBalancesPolling'; // eslint-disable-next-line import/no-namespace import * as networks from '../../../util/networks'; import { RootState } from '../../../reducers'; +import { SolScope } from '@metamask/keyring-api'; jest.mock('../../../core/Engine', () => ({ context: { @@ -26,6 +27,12 @@ describe('useTokenBalancesPolling', () => { TokenBalancesController: { tokenBalances: {}, }, + MultichainNetworkController: { + isEvmSelected: true, + selectedMultichainNetworkChainId: SolScope.Mainnet, + + multichainNetworkConfigurationsByChainId: {}, + }, NetworkController: { selectedNetworkClientId: 'selectedNetworkClientId', networkConfigurationsByChainId: { @@ -169,6 +176,11 @@ describe('useTokenBalancesPolling', () => { }, }, }, + MultichainNetworkController: { + isEvmSelected: true, + selectedMultichainNetworkChainId: SolScope.Mainnet, + multichainNetworkConfigurationsByChainId: {}, + }, }, }, }, diff --git a/app/components/hooks/AssetPolling/useTokenBalancesPolling.ts b/app/components/hooks/AssetPolling/useTokenBalancesPolling.ts index 2cc3b416ecf8..35630c265e9e 100644 --- a/app/components/hooks/AssetPolling/useTokenBalancesPolling.ts +++ b/app/components/hooks/AssetPolling/useTokenBalancesPolling.ts @@ -3,7 +3,7 @@ import usePolling from '../usePolling'; import Engine from '../../../core/Engine'; import { selectAllPopularNetworkConfigurations, - selectChainId, + selectEvmChainId, selectIsAllNetworks, selectIsPopularNetwork, } from '../../../selectors/networkController'; @@ -16,7 +16,7 @@ const useTokenBalancesPolling = ({ chainIds }: { chainIds?: Hex[] } = {}) => { const networkConfigurationsPopularNetworks = useSelector( selectAllPopularNetworkConfigurations, ); - const currentChainId = useSelector(selectChainId); + const currentChainId = useSelector(selectEvmChainId); const isAllNetworksSelected = useSelector(selectIsAllNetworks); const isPopularNetwork = useSelector(selectIsPopularNetwork); diff --git a/app/components/hooks/AssetPolling/useTokenDetectionPolling.test.ts b/app/components/hooks/AssetPolling/useTokenDetectionPolling.test.ts index 0ef7649d2c10..9e3f0fff8769 100644 --- a/app/components/hooks/AssetPolling/useTokenDetectionPolling.test.ts +++ b/app/components/hooks/AssetPolling/useTokenDetectionPolling.test.ts @@ -4,6 +4,7 @@ import useTokenDetectionPolling from './useTokenDetectionPolling'; // eslint-disable-next-line import/no-namespace import * as networks from '../../../util/networks'; import { RootState } from '../../../reducers'; +import { SolScope } from '@metamask/keyring-api'; jest.mock('../../../core/Engine', () => ({ context: { @@ -55,6 +56,12 @@ describe('useTokenDetectionPolling', () => { }, }, }, + MultichainNetworkController: { + isEvmSelected: true, + selectedMultichainNetworkChainId: SolScope.Mainnet, + + multichainNetworkConfigurationsByChainId: {}, + }, }, }, } as unknown as RootState; diff --git a/app/components/hooks/AssetPolling/useTokenDetectionPolling.ts b/app/components/hooks/AssetPolling/useTokenDetectionPolling.ts index 85139b6fde31..6459770bef81 100644 --- a/app/components/hooks/AssetPolling/useTokenDetectionPolling.ts +++ b/app/components/hooks/AssetPolling/useTokenDetectionPolling.ts @@ -3,7 +3,7 @@ import usePolling from '../usePolling'; import Engine from '../../../core/Engine'; import { selectAllPopularNetworkConfigurations, - selectChainId, + selectEvmChainId, selectIsAllNetworks, selectIsPopularNetwork, } from '../../../selectors/networkController'; @@ -16,7 +16,7 @@ const useTokenDetectionPolling = ({ chainIds }: { chainIds?: Hex[] } = {}) => { const networkConfigurationsPopularNetworks = useSelector( selectAllPopularNetworkConfigurations, ); - const currentChainId = useSelector(selectChainId); + const currentChainId = useSelector(selectEvmChainId); const selectedAccount = useSelector(selectSelectedInternalAccount); const useTokenDetection = useSelector(selectUseTokenDetection); const isAllNetworksSelected = useSelector(selectIsAllNetworks); diff --git a/app/components/hooks/AssetPolling/useTokenListPolling.test.ts b/app/components/hooks/AssetPolling/useTokenListPolling.test.ts index 66ecf1a2e3d3..d6b045b36aee 100644 --- a/app/components/hooks/AssetPolling/useTokenListPolling.test.ts +++ b/app/components/hooks/AssetPolling/useTokenListPolling.test.ts @@ -4,6 +4,7 @@ import useTokenListPolling from './useTokenListPolling'; // eslint-disable-next-line import/no-namespace import * as networks from '../../../util/networks'; import { RootState } from '../../../reducers'; +import { SolScope } from '@metamask/keyring-api'; jest.mock('../../../core/Engine', () => ({ context: { @@ -23,6 +24,12 @@ describe('useTokenListPolling', () => { const state = { engine: { backgroundState: { + MultichainNetworkController: { + isEvmSelected: true, + selectedMultichainNetworkChainId: SolScope.Mainnet, + + multichainNetworkConfigurationsByChainId: {}, + }, NetworkController: { selectedNetworkClientId: 'selectedNetworkClientId', networkConfigurationsByChainId: { @@ -111,6 +118,12 @@ describe('useTokenListPolling', () => { const stateToTest = { engine: { backgroundState: { + MultichainNetworkController: { + isEvmSelected: true, + selectedMultichainNetworkChainId: SolScope.Mainnet, + + multichainNetworkConfigurationsByChainId: {}, + }, NetworkController: { selectedNetworkClientId: 'selectedNetworkClientId', networkConfigurationsByChainId: { diff --git a/app/components/hooks/AssetPolling/useTokenListPolling.ts b/app/components/hooks/AssetPolling/useTokenListPolling.ts index aacf8ab782be..f2844252bfae 100644 --- a/app/components/hooks/AssetPolling/useTokenListPolling.ts +++ b/app/components/hooks/AssetPolling/useTokenListPolling.ts @@ -3,7 +3,7 @@ import usePolling from '../usePolling'; import Engine from '../../../core/Engine'; import { selectAllPopularNetworkConfigurations, - selectChainId, + selectEvmChainId, selectIsAllNetworks, selectIsPopularNetwork, } from '../../../selectors/networkController'; @@ -19,7 +19,7 @@ const useTokenListPolling = ({ chainIds }: { chainIds?: Hex[] } = {}) => { const networkConfigurationsPopularNetworks = useSelector( selectAllPopularNetworkConfigurations, ); - const currentChainId = useSelector(selectChainId); + const currentChainId = useSelector(selectEvmChainId); const isAllNetworksSelected = useSelector(selectIsAllNetworks); const isPopularNetwork = useSelector(selectIsPopularNetwork); diff --git a/app/components/hooks/AssetPolling/useTokenRatesPolling.test.ts b/app/components/hooks/AssetPolling/useTokenRatesPolling.test.ts index 164896f055d3..25cd5ecbe3db 100644 --- a/app/components/hooks/AssetPolling/useTokenRatesPolling.test.ts +++ b/app/components/hooks/AssetPolling/useTokenRatesPolling.test.ts @@ -2,6 +2,7 @@ import useTokenRatesPolling from './useTokenRatesPolling'; import { renderHookWithProvider } from '../../../util/test/renderWithProvider'; import Engine from '../../../core/Engine'; import { RootState } from '../../../reducers'; +import { SolScope } from '@metamask/keyring-api'; jest.mock('../../../core/Engine', () => ({ context: { @@ -23,6 +24,12 @@ describe('useTokenRatesPolling', () => { TokenRatesController: { marketData: {}, }, + MultichainNetworkController: { + isEvmSelected: true, + selectedMultichainNetworkChainId: SolScope.Mainnet, + + multichainNetworkConfigurationsByChainId: {}, + }, NetworkController: { networkConfigurationsByChainId: { '0x1': {}, @@ -68,6 +75,12 @@ describe('useTokenRatesPolling', () => { const stateToTest = { engine: { backgroundState: { + MultichainNetworkController: { + isEvmSelected: true, + selectedMultichainNetworkChainId: SolScope.Mainnet, + + multichainNetworkConfigurationsByChainId: {}, + }, NetworkController: { selectedNetworkClientId: 'selectedNetworkClientId', networkConfigurationsByChainId: { diff --git a/app/components/hooks/AssetPolling/useTokenRatesPolling.ts b/app/components/hooks/AssetPolling/useTokenRatesPolling.ts index b08b31b6f151..b8e6c46bd525 100644 --- a/app/components/hooks/AssetPolling/useTokenRatesPolling.ts +++ b/app/components/hooks/AssetPolling/useTokenRatesPolling.ts @@ -3,7 +3,7 @@ import usePolling from '../usePolling'; import Engine from '../../../core/Engine'; import { selectAllPopularNetworkConfigurations, - selectChainId, + selectEvmChainId, selectIsAllNetworks, selectIsPopularNetwork, } from '../../../selectors/networkController'; @@ -19,7 +19,7 @@ const useTokenRatesPolling = ({ chainIds }: { chainIds?: Hex[] } = {}) => { const networkConfigurationsPopularNetworks = useSelector( selectAllPopularNetworkConfigurations, ); - const currentChainId = useSelector(selectChainId); + const currentChainId = useSelector(selectEvmChainId); const isPopularNetwork = useSelector(selectIsPopularNetwork); const isAllNetworksSelected = useSelector(selectIsAllNetworks); diff --git a/app/components/hooks/DisplayName/useDisplayName.test.ts b/app/components/hooks/DisplayName/useDisplayName.test.ts index 7b54514f6b9e..a537bb8b120c 100644 --- a/app/components/hooks/DisplayName/useDisplayName.test.ts +++ b/app/components/hooks/DisplayName/useDisplayName.test.ts @@ -11,7 +11,7 @@ const UNKNOWN_ADDRESS_CHECKSUMMED = const KNOWN_NFT_ADDRESS_CHECKSUMMED = '0x495f947276749Ce646f68AC8c248420045cb7b5e'; const KNOWN_NFT_NAME_MOCK = 'Known NFT'; -const KNOWN_FIRST_PARTY_CONTRACT_NAME = 'MetaMask Pool Staking'; +const KNOWN_FIRST_PARTY_CONTRACT_NAME = 'Pool Staking'; const KNOWN_TOKEN_LIST_NAME = 'Known Token List'; jest.mock('./useWatchedNFTNames', () => ({ @@ -55,6 +55,10 @@ describe('useDisplayName', () => { expect(displayName).toEqual({ variant: DisplayNameVariant.Unknown, + contractDisplayName: undefined, + image: undefined, + isFirstPartyContractName: false, + name: undefined, }); }); }); @@ -74,6 +78,9 @@ describe('useDisplayName', () => { expect(displayName).toEqual({ variant: DisplayNameVariant.Recognized, name: KNOWN_FIRST_PARTY_CONTRACT_NAME, + contractDisplayName: undefined, + image: undefined, + isFirstPartyContractName: true, }); }); @@ -98,6 +105,9 @@ describe('useDisplayName', () => { expect(displayName).toEqual({ variant: DisplayNameVariant.Recognized, name: KNOWN_NFT_NAME_MOCK, + contractDisplayName: undefined, + image: undefined, + isFirstPartyContractName: false, }); }); diff --git a/app/components/hooks/DisplayName/useDisplayName.ts b/app/components/hooks/DisplayName/useDisplayName.ts index edb5f1839a2a..bb24343d33aa 100644 --- a/app/components/hooks/DisplayName/useDisplayName.ts +++ b/app/components/hooks/DisplayName/useDisplayName.ts @@ -16,6 +16,7 @@ export interface UseDisplayNameResponse { image?: string; name?: string; variant: DisplayNameVariant; + isFirstPartyContractName?: boolean; } /** @@ -83,13 +84,16 @@ export function useDisplayNames( nftNames[index] || {}; const name = - watchedNftName || firstPartyContractName || + watchedNftName || erc20Token?.name || nftCollectionName; const image = erc20Token?.image || nftCollectionImage; + const isFirstPartyContractName = firstPartyContractName !== undefined && + firstPartyContractName !== null; + return { contractDisplayName: erc20Token?.name, image, @@ -97,6 +101,7 @@ export function useDisplayNames( variant: name ? DisplayNameVariant.Recognized : DisplayNameVariant.Unknown, + isFirstPartyContractName }; }); } diff --git a/app/components/hooks/DisplayName/useFirstPartyContractNames.test.ts b/app/components/hooks/DisplayName/useFirstPartyContractNames.test.ts index 570762a27cbe..fea571eb24c3 100644 --- a/app/components/hooks/DisplayName/useFirstPartyContractNames.test.ts +++ b/app/components/hooks/DisplayName/useFirstPartyContractNames.test.ts @@ -2,7 +2,7 @@ import { NETWORKS_CHAIN_ID } from '../../../constants/network'; import { useFirstPartyContractNames } from './useFirstPartyContractNames'; import { NameType } from '../../UI/Name/Name.types'; -const BRIDGE_NAME_MOCK = 'MetaMask Bridge'; +const BRIDGE_NAME_MOCK = 'Bridge'; const BRIDGE_MAINNET_ADDRESS_MOCK = '0x0439e60F02a8900a951603950d8D4527f400C3f1'; const UNKNOWN_ADDRESS_MOCK = '0xabc123'; diff --git a/app/components/hooks/useAccounts/useAccounts.ts b/app/components/hooks/useAccounts/useAccounts.ts index 52dcc48b9647..c7b4e85203f3 100644 --- a/app/components/hooks/useAccounts/useAccounts.ts +++ b/app/components/hooks/useAccounts/useAccounts.ts @@ -35,7 +35,10 @@ import { InternalAccount } from '@metamask/keyring-internal-api'; import { getChainIdsToPoll } from '../../../selectors/tokensController'; import { useGetFormattedTokensPerChain } from '../useGetFormattedTokensPerChain'; import { useGetTotalFiatBalanceCrossChains } from '../useGetTotalFiatBalanceCrossChains'; -import { getFormattedAddressFromInternalAccount } from '../../../core/Multichain/utils'; +import { + getFormattedAddressFromInternalAccount, + isNonEvmAddress, +} from '../../../core/Multichain/utils'; import { getAccountBalances } from './utils'; /** @@ -49,6 +52,7 @@ const useAccounts = ({ }: UseAccountsParams = {}): UseAccounts => { const isMountedRef = useRef(false); const [accounts, setAccounts] = useState<Account[]>([]); + const [evmAccounts, setEVMAccounts] = useState<Account[]>([]); const [ensByAccountAddress, setENSByAccountAddress] = useState<EnsByAccountAddress>({}); const chainId = useSelector(selectChainId); @@ -199,6 +203,11 @@ const useAccounts = ({ ); setAccounts(flattenedAccounts); + setEVMAccounts( + flattenedAccounts.filter( + (account) => !isNonEvmAddress(account.address), + ), + ); fetchENSNames({ flattenedAccounts, startingIndex: selectedIndex }); }, // eslint-disable-next-line react-hooks/exhaustive-deps [ @@ -228,6 +237,7 @@ const useAccounts = ({ return { accounts, + evmAccounts, ensByAccountAddress, }; }; diff --git a/app/components/hooks/useAccounts/useAccounts.types.ts b/app/components/hooks/useAccounts/useAccounts.types.ts index a85caf30a776..7fc2957b0de4 100644 --- a/app/components/hooks/useAccounts/useAccounts.types.ts +++ b/app/components/hooks/useAccounts/useAccounts.types.ts @@ -82,6 +82,10 @@ export interface UseAccounts { * List of account information. */ accounts: Account[]; + /** + * List of EVM account information. + */ + evmAccounts: Account[]; /** * Mapping of ENS names by account address. */ diff --git a/app/components/hooks/useAddressBalance/useAddressBalance.test.tsx b/app/components/hooks/useAddressBalance/useAddressBalance.test.tsx index 3417c3815c92..a124160c92ff 100644 --- a/app/components/hooks/useAddressBalance/useAddressBalance.test.tsx +++ b/app/components/hooks/useAddressBalance/useAddressBalance.test.tsx @@ -9,6 +9,7 @@ import useAddressBalance from './useAddressBalance'; import backgroundState from '../../../util/test/initial-root-state'; import { createMockAccountsControllerState } from '../../../util/test/accountsControllerTestUtils'; import { BN } from 'ethereumjs-util'; +import { SolScope } from '@metamask/keyring-api'; const MOCK_ADDRESS_1 = '0x0'; const MOCK_ADDRESS_2 = '0x1'; @@ -46,6 +47,12 @@ const mockInitialState = { selectedAddress: MOCK_ADDRESS_1, }, AccountsController: MOCK_ACCOUNTS_CONTROLLER_STATE, + MultichainNetworkController: { + isEvmSelected: true, + selectedMultichainNetworkChainId: SolScope.Mainnet, + + multichainNetworkConfigurationsByChainId: {}, + }, }, }, }; diff --git a/app/components/hooks/useAlertsConfirmed.test.ts b/app/components/hooks/useAlertsConfirmed.test.ts new file mode 100644 index 000000000000..2fcac571af5c --- /dev/null +++ b/app/components/hooks/useAlertsConfirmed.test.ts @@ -0,0 +1,70 @@ +import { renderHook, act } from '@testing-library/react-hooks'; +import { useAlertsConfirmed } from './useAlertsConfirmed'; +import { Alert, Severity } from '../Views/confirmations/types/alerts'; + +describe('useAlertsConfirmed', () => { + const dangerAlertMock: Alert = { + key: 'alert1', + field: 'from', + severity: Severity.Danger, + message: 'Danger alert', + title: 'Alert 1', + }; + + const warningAlertMock: Alert = { + key: 'alert2', + severity: Severity.Warning, + message: 'Warning alert', + title: 'Alert 2', + }; + + const infoAlertMock: Alert = { + key: 'alert3', + severity: Severity.Info, + message: 'Info alert', + title: 'Alert 3', + }; + + const alertsMock = [dangerAlertMock, warningAlertMock, infoAlertMock]; + + + it('initializes with the correct alert key', () => { + const { result } = renderHook(() => useAlertsConfirmed(alertsMock)); + expect(result.current.alertKey).toBe(dangerAlertMock.key); + }); + + it('sets and gets alert confirmation status', () => { + const { result } = renderHook(() => useAlertsConfirmed(alertsMock)); + + act(() => { + result.current.setAlertConfirmed(dangerAlertMock.key, true); + }); + expect(result.current.isAlertConfirmed(dangerAlertMock.key)).toBe(true); + + act(() => { + result.current.setAlertConfirmed(dangerAlertMock.key, false); + }); + expect(result.current.isAlertConfirmed(dangerAlertMock.key)).toBe(false); + }); + + it('returns unconfirmed danger alerts', () => { + const { result } = renderHook(() => useAlertsConfirmed(alertsMock)); + expect(result.current.unconfirmedDangerAlerts).toEqual([dangerAlertMock]); + expect(result.current.hasUnconfirmedDangerAlerts).toBe(true); + }); + + it('returns unconfirmed field danger alerts', () => { + const { result } = renderHook(() => useAlertsConfirmed(alertsMock)); + expect(result.current.unconfirmedFieldDangerAlerts).toEqual([dangerAlertMock]); + expect(result.current.hasUnconfirmedFieldDangerAlerts).toBe(true); + }); + + it('sets a new alert key', () => { + const { result } = renderHook(() => useAlertsConfirmed(alertsMock)); + + act(() => { + result.current.setAlertKey(warningAlertMock.key); + }); + expect(result.current.alertKey).toBe(warningAlertMock.key); + }); +}); diff --git a/app/components/hooks/useAlertsConfirmed.ts b/app/components/hooks/useAlertsConfirmed.ts new file mode 100644 index 000000000000..60021ae90330 --- /dev/null +++ b/app/components/hooks/useAlertsConfirmed.ts @@ -0,0 +1,56 @@ +import { useCallback, useState, useMemo } from 'react'; +import { Alert, Severity } from '../Views/confirmations/types/alerts'; + +/** + * Custom hook to manage alert confirmation. + * @param alerts - Array of alerts to manage. + * @returns An object containing various alert confirmation-related states and functions. + */ +export const useAlertsConfirmed = (alerts: Alert[]) => { + const [confirmed, setConfirmed] = useState<{ [key: string]: boolean }>({}); + const [alertKey, setAlertKey] = useState(alerts[0]?.key); + + /** + * Sets the confirmation status of an alert. + * @param key - The key of the alert. + * @param confirm - The confirmation status to set. + */ + const setAlertConfirmed = useCallback((key: string, confirm: boolean) => { + setConfirmed((prevConfirmed) => ({ + ...prevConfirmed, + [key]: confirm, + })); + }, []); + + /** + * Checks if an alert is confirmed. + * @param key - The key of the alert. + * @returns True if the alert is confirmed, false otherwise. + */ + const isAlertConfirmed = useCallback((key: string) => confirmed[key] ?? false, [confirmed]); + + /** + * Unconfirmed danger alerts. + */ + const unconfirmedDangerAlerts = useMemo(() => alerts.filter( + alertSelected => !isAlertConfirmed(alertSelected.key) && alertSelected.severity === Severity.Danger + ), [alerts, isAlertConfirmed]); + + /** + * Unconfirmed field danger alerts. + */ + const unconfirmedFieldDangerAlerts = useMemo(() => alerts.filter( + alertSelected => !isAlertConfirmed(alertSelected.key) && alertSelected.severity === Severity.Danger && alertSelected.field !== undefined + ), [alerts, isAlertConfirmed]); + + return { + alertKey, + isAlertConfirmed, + setAlertConfirmed, + setAlertKey: (key: string) => setAlertKey(key), + unconfirmedDangerAlerts, + unconfirmedFieldDangerAlerts, + hasUnconfirmedDangerAlerts: unconfirmedDangerAlerts.length > 0, + hasUnconfirmedFieldDangerAlerts: unconfirmedFieldDangerAlerts.length > 0, + }; +}; diff --git a/app/components/hooks/useBlockExplorer.ts b/app/components/hooks/useBlockExplorer.ts index 9fd83afaee7e..9dc6ab7af299 100644 --- a/app/components/hooks/useBlockExplorer.ts +++ b/app/components/hooks/useBlockExplorer.ts @@ -9,14 +9,19 @@ import { selectProviderConfig, } from '../../selectors/networkController'; import Routes from '../../constants/navigation/Routes'; +import { selectIsEvmNetworkSelected } from '../../selectors/multichainNetworkController'; const useBlockExplorer = () => { const navigation = useNavigation(); const providerConfig = useSelector(selectProviderConfig); const networkConfigurations = useSelector(selectNetworkConfigurations); + const isEvmSelected = useSelector(selectIsEvmNetworkSelected); const toBlockExplorer = useCallback( (address: string) => { + // TODO: [SOLANA] to block explorer needs to be implemented + if (!isEvmSelected) return; + const { type, rpcUrl } = providerConfig; let accountLink: string; if (type === RPC && rpcUrl) { @@ -35,7 +40,7 @@ const useBlockExplorer = () => { }, }); }, - [networkConfigurations, navigation, providerConfig], + [networkConfigurations, navigation, providerConfig, isEvmSelected], ); return { toBlockExplorer, diff --git a/app/components/hooks/useCheckMultiRpcModal/useCheckMultiRpcModal.test.ts b/app/components/hooks/useCheckMultiRpcModal/useCheckMultiRpcModal.test.ts index a0ca6797db80..472b36d120d8 100644 --- a/app/components/hooks/useCheckMultiRpcModal/useCheckMultiRpcModal.test.ts +++ b/app/components/hooks/useCheckMultiRpcModal/useCheckMultiRpcModal.test.ts @@ -6,7 +6,7 @@ import { setMultiRpcMigrationModalOpen } from '../../../actions/security'; import Routes from '../../../constants/navigation/Routes'; import { isObject } from '@metamask/utils'; import { selectShowMultiRpcModal } from '../../../selectors/preferencesController'; -import { selectNetworkConfigurations } from '../../../selectors/networkController'; +import { selectEvmNetworkConfigurationsByChainId } from '../../../selectors/networkController'; // Mock the necessary modules jest.mock('react-redux', () => ({ @@ -27,7 +27,7 @@ jest.mock('../../../selectors/preferencesController', () => ({ })); jest.mock('../../../selectors/networkController', () => ({ - selectNetworkConfigurations: jest.fn(), + selectEvmNetworkConfigurationsByChainId: jest.fn(), })); describe('useCheckMultiRpcModal', () => { @@ -41,7 +41,7 @@ describe('useCheckMultiRpcModal', () => { switch (selector) { case selectShowMultiRpcModal: return true; - case selectNetworkConfigurations: + case selectEvmNetworkConfigurationsByChainId: return { network1: { rpcEndpoints: ['https://rpc1', 'https://rpc2'] }, network2: { rpcEndpoints: ['https://rpc3'] }, @@ -75,7 +75,7 @@ describe('useCheckMultiRpcModal', () => { switch (selector) { case selectShowMultiRpcModal: return false; - case selectNetworkConfigurations: + case selectEvmNetworkConfigurationsByChainId: return { network1: { rpcEndpoints: ['https://rpc1'] }, network2: { rpcEndpoints: ['https://rpc3'] }, diff --git a/app/components/hooks/useCheckMultiRpcModal/useCheckMultiRpcModal.ts b/app/components/hooks/useCheckMultiRpcModal/useCheckMultiRpcModal.ts index f2aac04e542d..5ef382dad0d9 100644 --- a/app/components/hooks/useCheckMultiRpcModal/useCheckMultiRpcModal.ts +++ b/app/components/hooks/useCheckMultiRpcModal/useCheckMultiRpcModal.ts @@ -5,12 +5,14 @@ import { isObject } from '@metamask/utils'; import Routes from '../../../constants/navigation/Routes'; import { setMultiRpcMigrationModalOpen } from '../../../actions/security'; import { selectShowMultiRpcModal } from '../../../selectors/preferencesController'; -import { selectNetworkConfigurations } from '../../../selectors/networkController'; +import { selectEvmNetworkConfigurationsByChainId } from '../../../selectors/networkController'; const useCheckMultiRpcModal = () => { const dispatch = useDispatch(); const navigation = useNavigation(); - const networkConfigurations = useSelector(selectNetworkConfigurations); + const networkConfigurations = useSelector( + selectEvmNetworkConfigurationsByChainId, + ); const showMultiRpcModal = useSelector(selectShowMultiRpcModal); diff --git a/app/components/hooks/useCheckNftAutoDetectionModal/useCheckNftAutoDetectionModal.ts b/app/components/hooks/useCheckNftAutoDetectionModal/useCheckNftAutoDetectionModal.ts index 55eb3e67f2b8..edb9777102cb 100644 --- a/app/components/hooks/useCheckNftAutoDetectionModal/useCheckNftAutoDetectionModal.ts +++ b/app/components/hooks/useCheckNftAutoDetectionModal/useCheckNftAutoDetectionModal.ts @@ -7,19 +7,19 @@ import { isMainNet } from '../../../util/networks'; import Routes from '../../../constants/navigation/Routes'; import { setNftAutoDetectionModalOpen } from '../../../actions/security'; import { RootState } from '../../../reducers'; -import { selectProviderConfig } from '../../../selectors/networkController'; +import { selectChainId } from '../../../selectors/networkController'; const useCheckNftAutoDetectionModal = () => { const dispatch = useDispatch(); const navigation = useNavigation(); const useNftDetection = useSelector(selectUseNftDetection); - const providerConfig = useSelector(selectProviderConfig); + const chainId = useSelector(selectChainId); const isNFTAutoDetectionModalViewed = useSelector( (state: RootState) => state.security.isNFTAutoDetectionModalViewed, ); const checkNftAutoDetectionModal = useCallback(() => { - const isOnMainnet = isMainNet(providerConfig.chainId); + const isOnMainnet = isMainNet(chainId); if (!useNftDetection && isOnMainnet && !isNFTAutoDetectionModalViewed) { navigation.navigate(Routes.MODAL.ROOT_MODAL_FLOW, { screen: Routes.MODAL.NFT_AUTO_DETECTION_MODAL, @@ -30,7 +30,7 @@ const useCheckNftAutoDetectionModal = () => { dispatch, isNFTAutoDetectionModalViewed, navigation, - providerConfig.chainId, + chainId, useNftDetection, ]); diff --git a/app/components/hooks/useExistingAddress.ts b/app/components/hooks/useExistingAddress.ts index e1d8c93cf0db..d1a5ef033bd1 100644 --- a/app/components/hooks/useExistingAddress.ts +++ b/app/components/hooks/useExistingAddress.ts @@ -1,22 +1,24 @@ import { toChecksumAddress } from 'ethereumjs-util'; import { useSelector } from 'react-redux'; -import { selectChainId } from '../../selectors/networkController'; import { selectInternalAccounts } from '../../selectors/accountsController'; import { toLowerCaseEquals } from '../../util/general'; import { AddressBookEntry } from '@metamask/address-book-controller'; import { selectAddressBook } from '../../selectors/addressBookController'; +import { selectIsEvmNetworkSelected } from '../../selectors/multichainNetworkController'; +import { selectEvmChainId } from '../../selectors/networkController'; type AccountInfo = Pick<AddressBookEntry, 'name' | 'address'>; const useExistingAddress = (address?: string): AccountInfo | undefined => { - const chainId = useSelector(selectChainId); + const chainId = useSelector(selectEvmChainId); + const isEvmSelected = useSelector(selectIsEvmNetworkSelected); const addressBook = useSelector(selectAddressBook); const internalAccounts = useSelector(selectInternalAccounts); - if (!address) return; - + if (!address || !isEvmSelected) return; + // TODO: [SOLANA] Revisit this before shipping, Address Book controller should support non evm networks const networkAddressBook = addressBook[chainId] || {}; const checksummedAddress = toChecksumAddress(address); diff --git a/app/components/hooks/useGetFormattedTokensPerChain.tsx b/app/components/hooks/useGetFormattedTokensPerChain.tsx index c7c94472c723..ea2e41071f4b 100644 --- a/app/components/hooks/useGetFormattedTokensPerChain.tsx +++ b/app/components/hooks/useGetFormattedTokensPerChain.tsx @@ -60,6 +60,7 @@ export const useGetFormattedTokensPerChain = ( tokensWithBalances: TokensWithBalances[]; }[]; } => { + // TODO: [SOLANA] Revisit this before shipping, `selectAllTokenBalances` selector needs to most likely be replaced by a non evm supported version const currentChainId = useSelector(selectChainId); const importedTokens: AllTokens = useSelector(selectAllTokens); const allNetworks: Record< diff --git a/app/components/hooks/useGetTotalFiatBalanceCrossChains.tsx b/app/components/hooks/useGetTotalFiatBalanceCrossChains.tsx index 8275aacab632..e57f9826d1cd 100644 --- a/app/components/hooks/useGetTotalFiatBalanceCrossChains.tsx +++ b/app/components/hooks/useGetTotalFiatBalanceCrossChains.tsx @@ -38,6 +38,7 @@ export const useGetTotalFiatBalanceCrossChains = ( }[]; }, ) => { + // TODO: [SOLANA] Revisit this before shipping, `selectNetworkConfigurations` selector needs to most likely be replaced by a non evm supported version const allNetworks = useSelector(selectNetworkConfigurations); const currencyRates = useSelector(selectCurrencyRates); const currentCurrency = useSelector(selectCurrentCurrency); @@ -57,8 +58,7 @@ export const useGetTotalFiatBalanceCrossChains = ( ].map((singleChainTokenBalances) => { const { tokensWithBalances } = singleChainTokenBalances; const matchedChainSymbol = - allNetworks[singleChainTokenBalances.chainId as `0x${string}`] - .nativeCurrency; + allNetworks[singleChainTokenBalances.chainId].nativeCurrency; const tokenFiatBalances = tokensWithBalances.map( (token) => token.tokenBalanceFiat, diff --git a/app/components/hooks/useHideFiatForTestnet/index.test.ts b/app/components/hooks/useHideFiatForTestnet/index.test.ts index ffeed063504a..37e4d1f86fd9 100644 --- a/app/components/hooks/useHideFiatForTestnet/index.test.ts +++ b/app/components/hooks/useHideFiatForTestnet/index.test.ts @@ -1,5 +1,5 @@ import { renderHook } from '@testing-library/react-hooks'; -import { selectChainId } from '../../../selectors/networkController'; +import { selectEvmChainId } from '../../../selectors/networkController'; import { TEST_NETWORK_IDS } from '../../../constants/network'; import { selectShowFiatInTestnets } from '../../../selectors/settings'; import useHideFiatForTestnet from './index'; @@ -9,7 +9,7 @@ jest.mock('react-redux', () => ({ })); jest.mock('../../../selectors/networkController', () => ({ - selectChainId: jest.fn(), + selectEvmChainId: jest.fn(), })); jest.mock('../../../selectors/settings', () => ({ @@ -18,7 +18,7 @@ jest.mock('../../../selectors/settings', () => ({ describe('useHideFiatForTestnet', () => { const mockSelectShowFiatInTestnets = jest.mocked(selectShowFiatInTestnets); - const mockSelectChainId = jest.mocked(selectChainId); + const mockSelectEvmChainId = jest.mocked(selectEvmChainId); beforeEach(() => { jest.clearAllMocks(); @@ -26,7 +26,7 @@ describe('useHideFiatForTestnet', () => { it('utilizes the specified chain id', () => { mockSelectShowFiatInTestnets.mockReturnValue(false); - mockSelectChainId.mockReturnValue(TEST_NETWORK_IDS[0]); + mockSelectEvmChainId.mockReturnValue(TEST_NETWORK_IDS[0]); const { result } = renderHook(() => useHideFiatForTestnet('0x1')); @@ -35,7 +35,7 @@ describe('useHideFiatForTestnet', () => { it('returns true if current network is a testnet and showFiatInTestnets is false', () => { mockSelectShowFiatInTestnets.mockReturnValue(false); - mockSelectChainId.mockReturnValue(TEST_NETWORK_IDS[0]); + mockSelectEvmChainId.mockReturnValue(TEST_NETWORK_IDS[0]); const { result } = renderHook(() => useHideFiatForTestnet()); @@ -44,7 +44,7 @@ describe('useHideFiatForTestnet', () => { it('returns false if current network is a testnet and showFiatInTestnets is true', () => { mockSelectShowFiatInTestnets.mockReturnValue(true); - mockSelectChainId.mockReturnValue(TEST_NETWORK_IDS[0]); + mockSelectEvmChainId.mockReturnValue(TEST_NETWORK_IDS[0]); const { result } = renderHook(() => useHideFiatForTestnet()); @@ -53,7 +53,7 @@ describe('useHideFiatForTestnet', () => { it('returns false if current network is not a testnet', () => { mockSelectShowFiatInTestnets.mockReturnValue(false); - mockSelectChainId.mockReturnValue('0x1'); + mockSelectEvmChainId.mockReturnValue('0x1'); const { result } = renderHook(() => useHideFiatForTestnet()); @@ -62,7 +62,7 @@ describe('useHideFiatForTestnet', () => { it('returns false if current network is not a testnet but showFiatInTestnets is true', () => { mockSelectShowFiatInTestnets.mockReturnValue(true); - mockSelectChainId.mockReturnValue('0x1'); + mockSelectEvmChainId.mockReturnValue('0x1'); const { result } = renderHook(() => useHideFiatForTestnet()); diff --git a/app/components/hooks/useHideFiatForTestnet/index.ts b/app/components/hooks/useHideFiatForTestnet/index.ts index 3a8ff1babcca..012f5aacaa5b 100644 --- a/app/components/hooks/useHideFiatForTestnet/index.ts +++ b/app/components/hooks/useHideFiatForTestnet/index.ts @@ -1,6 +1,6 @@ import { useSelector } from 'react-redux'; import type { Hex } from '@metamask/utils'; -import { selectChainId } from '../../../selectors/networkController'; +import { selectEvmChainId } from '../../../selectors/networkController'; import { selectShowFiatInTestnets } from '../../../selectors/settings'; import { TEST_NETWORK_IDS } from '../../../constants/network'; @@ -12,7 +12,7 @@ import { TEST_NETWORK_IDS } from '../../../constants/network'; */ export default function useHideFiatForTestnet(providedChainId?: Hex): boolean { const showFiatInTestnets = useSelector(selectShowFiatInTestnets); - const selectedChainId = useSelector(selectChainId); + const selectedChainId = useSelector(selectEvmChainId); const chainId = providedChainId ?? selectedChainId; return TEST_NETWORK_IDS.includes(chainId) && !showFiatInTestnets; } diff --git a/app/components/hooks/useMultichainBalances/useMultichainBalances.ts b/app/components/hooks/useMultichainBalances/useMultichainBalances.ts index 32226c370e1f..6216c822fa7b 100644 --- a/app/components/hooks/useMultichainBalances/useMultichainBalances.ts +++ b/app/components/hooks/useMultichainBalances/useMultichainBalances.ts @@ -21,12 +21,12 @@ import { UseMultichainBalancesHook } from './useMultichainBalances.types'; ///: BEGIN:ONLY_INCLUDE_IF(keyring-snaps) import { - selectMultichainIsEvm, selectMultichainSelectedAccountCachedBalance, selectMultichainDefaultToken, selectMultichainShouldShowFiat, selectMultichainConversionRate, } from '../../../selectors/multichain'; +import { selectIsEvmNetworkSelected } from '../../../selectors/multichainNetworkController'; ///: END:ONLY_INCLUDE_IF /** @@ -66,7 +66,7 @@ const useMultichainBalances = (): UseMultichainBalancesHook => { ); ///: BEGIN:ONLY_INCLUDE_IF(keyring-snaps) - const isEvm = useSelector(selectMultichainIsEvm); + const isEvmSelected = useSelector(selectIsEvmNetworkSelected); const multichainSelectedAccountCachedBalance = useSelector( selectMultichainSelectedAccountCachedBalance, ); @@ -132,7 +132,7 @@ const useMultichainBalances = (): UseMultichainBalancesHook => { const getDisplayBalance = () => { ///: BEGIN:ONLY_INCLUDE_IF(keyring-snaps) - if (!isEvm) { + if (!isEvmSelected) { return getNonEvmDisplayBalance(); } ///: END:ONLY_INCLUDE_IF @@ -151,7 +151,7 @@ const useMultichainBalances = (): UseMultichainBalancesHook => { const getShouldShowAggregatedPercentage = () => { ///: BEGIN:ONLY_INCLUDE_IF(keyring-snaps) - return !isTestNet(chainId) && isEvm; + return !isTestNet(chainId) && isEvmSelected; ///: END:ONLY_INCLUDE_IF // Note: This code marked as unreachable however when the above block gets removed after code fencing this return becomes necessary diff --git a/app/components/hooks/useTokenSearchDiscovery/useTokenSearchDiscovery.test.ts b/app/components/hooks/useTokenSearchDiscovery/useTokenSearchDiscovery.test.ts new file mode 100644 index 000000000000..65d26e33072b --- /dev/null +++ b/app/components/hooks/useTokenSearchDiscovery/useTokenSearchDiscovery.test.ts @@ -0,0 +1,82 @@ +import { act, renderHook } from '@testing-library/react-hooks'; +import Engine from '../../../core/Engine'; +import useTokenSearchDiscovery from './useTokenSearchDiscovery'; +import { TokenSearchParams } from '@metamask/token-search-discovery-controller'; + +jest.mock('react-redux', () => ({ + ...jest.requireActual('react-redux'), + useSelector: jest.fn(), +})); + +jest.mock('../../../core/Engine', () => ({ + context: { + TokenSearchDiscoveryController: { + searchTokens: jest.fn(), + }, + }, +})); + +describe('useTokenSearchDiscovery', () => { + beforeEach(() => { + jest.clearAllMocks(); + jest.useFakeTimers(); + }); + + afterEach(() => { + jest.useRealTimers(); + }); + + it('updates states correctly when searching tokens', async () => { + const mockSearchParams: TokenSearchParams = { + chains: ['0x1'], + query: 'DAI', + limit: '10', + }; + const mockSearchResult = [{ name: 'DAI', address: '0x123' }]; + + ( + Engine.context.TokenSearchDiscoveryController.searchTokens as jest.Mock + ).mockResolvedValueOnce(mockSearchResult); + + const { result } = renderHook(() => useTokenSearchDiscovery()); + + // Initial state + expect(result.current.isLoading).toBe(false); + expect(result.current.error).toBe(null); + expect(result.current.results).toEqual([]); + + // Call search + await act(async () => { + result.current.searchTokens(mockSearchParams); + jest.advanceTimersByTime(300); + await Promise.resolve(); + }); + + // Final state + expect(result.current.isLoading).toBe(false); + expect(result.current.error).toBe(null); + expect(result.current.results).toEqual(mockSearchResult); + expect( + Engine.context.TokenSearchDiscoveryController.searchTokens, + ).toHaveBeenCalledWith(mockSearchParams); + }); + + it('returns error and empty results if search failed', async () => { + const mockError = new Error('Search failed'); + ( + Engine.context.TokenSearchDiscoveryController.searchTokens as jest.Mock + ).mockRejectedValueOnce(mockError); + + const { result } = renderHook(() => useTokenSearchDiscovery()); + + await act(async () => { + result.current.searchTokens({}); + jest.advanceTimersByTime(300); + await Promise.resolve(); + }); + + expect(result.current.isLoading).toBe(false); + expect(result.current.error).toEqual(mockError); + expect(result.current.results).toEqual([]); + }); +}); diff --git a/app/components/hooks/useTokenSearchDiscovery/useTokenSearchDiscovery.ts b/app/components/hooks/useTokenSearchDiscovery/useTokenSearchDiscovery.ts new file mode 100644 index 000000000000..bf752842c79a --- /dev/null +++ b/app/components/hooks/useTokenSearchDiscovery/useTokenSearchDiscovery.ts @@ -0,0 +1,57 @@ +import { useState, useRef, useMemo } from 'react'; +import { useSelector } from 'react-redux'; +import { debounce } from 'lodash'; +import Engine from '../../../core/Engine'; +import { selectRecentTokenSearches } from '../../../selectors/tokenSearchDiscoveryController'; +import { + TokenSearchResponseItem, + TokenSearchParams, +} from '@metamask/token-search-discovery-controller'; + +const SEARCH_DEBOUNCE_DELAY = 300; + +export const useTokenSearchDiscovery = () => { + const recentSearches = useSelector(selectRecentTokenSearches); + const [isLoading, setIsLoading] = useState(false); + const [error, setError] = useState<Error | null>(null); + const [results, setResults] = useState<TokenSearchResponseItem[]>([]); + const latestRequestId = useRef<number>(0); + + const searchTokens = useMemo( + () => + debounce(async (params: TokenSearchParams) => { + setIsLoading(true); + setError(null); + const requestId = ++latestRequestId.current; + + try { + const { TokenSearchDiscoveryController } = Engine.context; + const result = await TokenSearchDiscoveryController.searchTokens( + params, + ); + if (requestId === latestRequestId.current) { + setResults(result); + } + } catch (err) { + if (requestId === latestRequestId.current) { + setError(err as Error); + } + } finally { + if (requestId === latestRequestId.current) { + setIsLoading(false); + } + } + }, SEARCH_DEBOUNCE_DELAY), + [], + ); + + return { + searchTokens, + recentSearches, + isLoading, + error, + results, + }; +}; + +export default useTokenSearchDiscovery; diff --git a/app/constants/first-party-contracts.ts b/app/constants/first-party-contracts.ts index ff2bc5b15b33..ea0ab018c85b 100644 --- a/app/constants/first-party-contracts.ts +++ b/app/constants/first-party-contracts.ts @@ -5,16 +5,19 @@ import { NETWORKS_CHAIN_ID } from './network'; * A map of first-party contract names to their addresses on various chains. */ const FIRST_PARTY_CONTRACT_NAMES: Record<string, Record<Hex, Hex>> = { - 'MetaMask Validator Staking': { + 'Validator Staking': { [NETWORKS_CHAIN_ID.MAINNET]: '0xDc71aFFC862fceB6aD32BE58E098423A7727bEbd', }, - 'MetaMask Pool Staking': { + 'Pooled Staking': { + [NETWORKS_CHAIN_ID.MAINNET]: '0x4FEF9D741011476750A243aC70b9789a63dd47Df', + }, + 'Third Party Staking': { [NETWORKS_CHAIN_ID.MAINNET]: '0x1f6692E78dDE07FF8da75769B6d7c716215bC7D0', }, - 'MetaMask Pool Staking (v1)': { + 'Pool Staking (v1)': { [NETWORKS_CHAIN_ID.MAINNET]: '0xc7bE520a13dC023A1b34C03F4Abdab8A43653F7B', }, - 'MetaMask Bridge': { + 'Bridge': { [NETWORKS_CHAIN_ID.MAINNET]: '0x0439e60F02a8900a951603950d8D4527f400C3f1', [NETWORKS_CHAIN_ID.OPTIMISM]: '0xB90357f2b86dbfD59c3502215d4060f71DF8ca0e', [NETWORKS_CHAIN_ID.BSC]: '0xaEc23140408534b378bf5832defc426dF8604B59', @@ -28,7 +31,7 @@ const FIRST_PARTY_CONTRACT_NAMES: Record<string, Record<Hex, Hex>> = { [NETWORKS_CHAIN_ID.BASE]: '0xa20ECbC821fB54064aa7B5C6aC81173b8b34Df71', [NETWORKS_CHAIN_ID.ARBITRUM]: '0x23981fC34e69eeDFE2BD9a0a9fCb0719Fe09DbFC', }, - 'MetaMask Swaps': { + 'Swaps': { [NETWORKS_CHAIN_ID.MAINNET]: '0x881D40237659C251811CEC9c364ef91dC08D300C', [NETWORKS_CHAIN_ID.BSC]: '0x1a1ec25DC08e98e5E93F1104B5e5cdD298707d31', [NETWORKS_CHAIN_ID.POLYGON]: '0x1a1ec25DC08e98e5E93F1104B5e5cdD298707d31', diff --git a/app/constants/navigation/Routes.ts b/app/constants/navigation/Routes.ts index 7a38bbf048d2..36a15f2c3960 100644 --- a/app/constants/navigation/Routes.ts +++ b/app/constants/navigation/Routes.ts @@ -138,6 +138,8 @@ const Routes = { EDIT_NETWORK: 'EditNetwork', SWAPS: 'Swaps', LOCK_SCREEN: 'LockScreen', + CONFIRM_FLAT_PAGE: 'Confirmation Flat Page', + CONFIRM_MODAL: 'Confirmation Modal', NOTIFICATIONS: { VIEW: 'NotificationsView', OPT_IN: 'OptIn', @@ -155,8 +157,12 @@ const Routes = { LEARN_MORE: 'LearnMore', MAX_INPUT: 'MaxInput', GAS_IMPACT: 'GasImpact', + EARN_TOKEN_LIST: 'EarnTokenList', }, }, + STANDALONE_CONFIRMATIONS: { + STAKE_DEPOSIT: 'RedesignedStakeDeposit', + }, ///: BEGIN:ONLY_INCLUDE_IF(external-snaps) SNAPS: { SNAPS_SETTINGS_LIST: 'SnapsSettingsList', diff --git a/app/constants/storage.ts b/app/constants/storage.ts index 77a41920c776..860d4d169c03 100644 --- a/app/constants/storage.ts +++ b/app/constants/storage.ts @@ -61,3 +61,5 @@ export const REVIEW_SHOWN_TIME = 'reviewShownTime'; export const themeAppearanceLight = 'light'; export const USE_TERMS = `${prefix}UserTermsAccepted${USE_TERMS_VERSION}`; + +export const SCRYPT_COMPUTED_KEY = 'scryptComputedKey'; diff --git a/app/core/Analytics/MetaMetrics.events.ts b/app/core/Analytics/MetaMetrics.events.ts index a8303c37787e..bc42c949248c 100644 --- a/app/core/Analytics/MetaMetrics.events.ts +++ b/app/core/Analytics/MetaMetrics.events.ts @@ -304,6 +304,7 @@ enum EVENT_NAME { UNSTAKE_TRANSACTION_CONFIRMED = 'Unstake Transaction Confirmed', UNSTAKE_TRANSACTION_SUBMITTED = 'Unstake Transaction Submitted', VISITED_ETH_OVERVIEW_WITH_STAKED_POSITIONS = 'Visited ETH Overview with Staked Positions', + EARN_TOKEN_LIST_ITEM_CLICKED = 'Earn Token List Item Clicked', // Force Upgrade | Automatic Security Checks FORCE_UPGRADE_UPDATE_NEEDED_PROMPT_VIEWED = 'Force Upgrade Update Needed Prompt Viewed', @@ -991,6 +992,9 @@ const events = { VISITED_ETH_OVERVIEW_WITH_STAKED_POSITIONS: generateOpt( EVENT_NAME.VISITED_ETH_OVERVIEW_WITH_STAKED_POSITIONS, ), + EARN_TOKEN_LIST_ITEM_CLICKED: generateOpt( + EVENT_NAME.EARN_TOKEN_LIST_ITEM_CLICKED, + ), }; /** diff --git a/app/core/Analytics/MetaMetrics.ts b/app/core/Analytics/MetaMetrics.ts index 21027d5b3a64..189163cd6435 100644 --- a/app/core/Analytics/MetaMetrics.ts +++ b/app/core/Analytics/MetaMetrics.ts @@ -2,7 +2,6 @@ import { createClient, GroupTraits, JsonMap, - SegmentClient, UserTraits, } from '@segment/analytics-react-native'; import axios, { AxiosHeaderValue } from 'axios'; @@ -519,9 +518,8 @@ class MetaMetrics implements IMetaMetrics { ); const segmentClient = isE2E ? undefined : createClient(config); - segmentClient?.add({ plugin: new MetaMetricsPrivacySegmentPlugin() }); - this.instance = new MetaMetrics(segmentClient as SegmentClient); + this.instance = new MetaMetrics(segmentClient as ISegmentClient); } return this.instance; } @@ -548,6 +546,9 @@ class MetaMetrics implements IMetaMetrics { this.deleteRegulationDate = await this.#getDeleteRegulationDateFromPrefs(); this.dataRecorded = await this.#getIsDataRecordedFromPrefs(); + + this.segmentClient?.add({ plugin: new MetaMetricsPrivacySegmentPlugin(this.metametricsId) }); + this.#isConfigured = true; // identify user with the latest traits diff --git a/app/core/Analytics/MetaMetrics.types.ts b/app/core/Analytics/MetaMetrics.types.ts index 7a7b3c56c24e..8cdbc17979d2 100644 --- a/app/core/Analytics/MetaMetrics.types.ts +++ b/app/core/Analytics/MetaMetrics.types.ts @@ -1,25 +1,10 @@ -import type { UserTraits, GroupTraits } from '@segment/analytics-react-native'; +import type {UserTraits, GroupTraits, SegmentClient} from '@segment/analytics-react-native'; +import { PublicInterface } from '@metamask/utils'; + /** - * custom implementation of the Segment ClientMethods type - * Allows to mock the Segment client + * Segment client restricted to the interface used by MetaMetrics */ -export interface ISegmentClient { - // track an event - track: ( - event: string, - properties?: JsonMap, - userId?: string, - anonymousId?: string, - ) => void; - // identify an user with ID and traits - identify: (userId?: string, userTraits?: UserTraits) => Promise<void>; - // add a user to a specific group - group: (groupId: string, groupTraits?: GroupTraits) => Promise<void>; - // clear the internal state of the library for the current user and group. - screen: (name: string, properties?: JsonMap) => Promise<void>; - flush: () => Promise<void>; - reset: (resetAnonymousId: boolean) => Promise<void>; -} +export type ISegmentClient = Pick<PublicInterface<SegmentClient>, 'track' | 'identify' | 'group' | 'screen' | 'flush' | 'reset' | 'add'> /** * MetaMetrics core interface @@ -173,27 +158,3 @@ export interface IDeleteRegulationStatus { hasCollectedDataSinceDeletionRequest: boolean; dataDeletionRequestStatus: DataDeleteStatus; } - -/* - * Legacy event properties structure with two distinct properties lists - * for sensitive (anonymous) and regular (non-anonymous) properties - * this structure and naming is mirroring how the extension metrics works. - * @deprecated use ITrackingEvent with MetricsEventBuilder instead - */ -export interface EventProperties { - properties?: JsonMap; - sensitiveProperties?: JsonMap; -} - -export const isCombinedProperties = ( - properties: CombinedProperties | boolean | undefined, -): properties is CombinedProperties => - typeof properties === 'object' && - properties !== null && - !Array.isArray(properties); - -/* - * EventProperties type is now legacy, direct JsonMap is for backward compatibility - * @deprecated use ITrackingEvent with MetricsEventBuilder instead - */ -export type CombinedProperties = JsonMap | EventProperties; diff --git a/app/core/Analytics/MetaMetricsPrivacySegmentPlugin.test.ts b/app/core/Analytics/MetaMetricsPrivacySegmentPlugin.test.ts index 26fc663c7399..3e2e724cc62b 100644 --- a/app/core/Analytics/MetaMetricsPrivacySegmentPlugin.test.ts +++ b/app/core/Analytics/MetaMetricsPrivacySegmentPlugin.test.ts @@ -7,8 +7,9 @@ import { TrackEventType, UserTraits, EventType, - SegmentClient, + SegmentClient, GroupEventType, } from '@segment/analytics-react-native'; +import {AliasEventType} from '@segment/analytics-react-native/src/types'; class MockSegmentClient { userInfo = { @@ -20,33 +21,64 @@ class MockSegmentClient { const mockAnalytics = new MockSegmentClient() as unknown as SegmentClient; +const mockUserId = '6D796265-7374-4953-6D65-74616D61736B'; + describe('MetaMetricsPrivacySegmentPlugin', () => { + beforeEach(() => { + jest.clearAllMocks(); + }); + it('is an enrichment plugin', () => { - const plugin = new MetaMetricsPrivacySegmentPlugin(); + const plugin = new MetaMetricsPrivacySegmentPlugin(mockUserId); expect(plugin.type).toBe(PluginType.enrichment); }); - it('sets our custom anonymousId for all events', async () => { + it('sets custom anonymousId for track events', async () => { const trackEvent: TrackEventType = { event: 'event_name', type: EventType.TrackEvent, }; - const identifyEvent: IdentifyEventType = { - type: EventType.IdentifyEvent, - }; - const plugin = new MetaMetricsPrivacySegmentPlugin(); + const plugin = new MetaMetricsPrivacySegmentPlugin(mockUserId); plugin.configure(mockAnalytics); - await plugin.execute(trackEvent); - await plugin.execute(identifyEvent); + const processedEvent = await plugin.execute(trackEvent); + + expect(processedEvent).toStrictEqual({...trackEvent, userId: mockUserId, anonymousId: METAMETRICS_ANONYMOUS_ID}); - expect(mockAnalytics.userInfo.set).toHaveBeenCalledTimes(2); + expect(mockAnalytics.userInfo.set).toHaveBeenCalledTimes(1); expect(mockAnalytics.userInfo.set).toHaveBeenCalledWith({ anonymousId: METAMETRICS_ANONYMOUS_ID, }); }); + it('does not set custom anonymousId for non track events', async () => { + const identifyEvent: IdentifyEventType = { + type: EventType.IdentifyEvent, + }; + const aliasEvent: AliasEventType = { + previousId: 'previous_id', + type: EventType.AliasEvent + }; + const groupEvent: GroupEventType = { + groupId: 'group_id', + type: EventType.GroupEvent + }; + + const plugin = new MetaMetricsPrivacySegmentPlugin(mockUserId); + plugin.configure(mockAnalytics); + + const processedIdentEvent = await plugin.execute(identifyEvent); + const processedAliasEvent = await plugin.execute(aliasEvent); + const processedGroupEvent = await plugin.execute(groupEvent); + + expect(processedIdentEvent).toStrictEqual(identifyEvent); + expect(processedAliasEvent).toStrictEqual(aliasEvent); + expect(processedGroupEvent).toStrictEqual(groupEvent); + + expect(mockAnalytics.userInfo.set).not.toHaveBeenCalled(); + }); + it('uses anonymousId as userId for anonymous track events', async () => { const event: TrackEventType = { event: 'Anonymous Event', @@ -54,17 +86,69 @@ describe('MetaMetricsPrivacySegmentPlugin', () => { properties: { anonymous: true }, }; - const plugin = new MetaMetricsPrivacySegmentPlugin(); + const plugin = new MetaMetricsPrivacySegmentPlugin(mockUserId); plugin.configure(mockAnalytics); - const result = await plugin.execute(event); + const processedEvent = await plugin.execute(event); - expect(result.userId).toBe(METAMETRICS_ANONYMOUS_ID); - expect((result as TrackEventType).properties?.anonymous).toBeUndefined(); + expect(processedEvent.userId).toBe(METAMETRICS_ANONYMOUS_ID); + expect((processedEvent as TrackEventType).properties?.anonymous).toBeUndefined(); + }); + + it('uses anonymousId as userId if provided user id is invalid', async () => { + const event: TrackEventType = { + event: 'Test Event', + type: EventType.TrackEvent + }; + + const emptyUserId = ''; + + const plugin = new MetaMetricsPrivacySegmentPlugin(emptyUserId); + plugin.configure(mockAnalytics); + + const processedEvent = await plugin.execute(event); + + expect(processedEvent.userId).toBe(METAMETRICS_ANONYMOUS_ID); + }); + + it('replaces anonymousId if not custom null id', async () => { + const event: TrackEventType = { + event: 'Test Event', + type: EventType.TrackEvent, + anonymousId: 'not-our-custom-id' + }; + + const plugin = new MetaMetricsPrivacySegmentPlugin(mockUserId); + plugin.configure(mockAnalytics); + + const processedEvent = await plugin.execute(event); + + expect(processedEvent.anonymousId).toBe(METAMETRICS_ANONYMOUS_ID); + expect(mockAnalytics.userInfo.set).toHaveBeenCalledTimes(1); + expect(mockAnalytics.userInfo.set).toHaveBeenCalledWith({ + anonymousId: METAMETRICS_ANONYMOUS_ID, + }); + }); + + it('does not replaces anonymousId if already custom null id', async () => { + const event: TrackEventType = { + event: 'Test Event', + type: EventType.TrackEvent, + anonymousId: METAMETRICS_ANONYMOUS_ID + }; + + const plugin = new MetaMetricsPrivacySegmentPlugin(mockUserId); + plugin.configure(mockAnalytics); + + const processedEvent = await plugin.execute(event); + + expect(processedEvent.anonymousId).toBe(METAMETRICS_ANONYMOUS_ID); + expect(mockAnalytics.userInfo.set).not.toHaveBeenCalled(); }); it('does not replace userId for non-anonymous track events', async () => { - const expectedUserId = '6D796265-7374-4953-6D65-74616D61736B'; + // This is a different UUIDv4 than the mockUserId + const expectedUserId = '74686973-5555-4944-4973-344B796C616E'; const event: TrackEventType = { event: 'Non-anonymous Event', @@ -73,7 +157,7 @@ describe('MetaMetricsPrivacySegmentPlugin', () => { properties: { anonymous: false }, }; - const plugin = new MetaMetricsPrivacySegmentPlugin(); + const plugin = new MetaMetricsPrivacySegmentPlugin(mockUserId); plugin.configure(mockAnalytics); const result = await plugin.execute(event); @@ -83,7 +167,8 @@ describe('MetaMetricsPrivacySegmentPlugin', () => { }); it('does not replace userId for non-track events', async () => { - const expectedUserId = '6D796265-7374-4953-6D65-74616D61736B'; + // This is a different UUIDv4 than the mockUserId + const expectedUserId = '74686973-5555-4944-4973-344B796C616E'; const identifyEvent: IdentifyEventType = { type: EventType.IdentifyEvent, @@ -91,7 +176,7 @@ describe('MetaMetricsPrivacySegmentPlugin', () => { userId: expectedUserId, }; - const plugin = new MetaMetricsPrivacySegmentPlugin(); + const plugin = new MetaMetricsPrivacySegmentPlugin(mockUserId); plugin.configure(mockAnalytics); const result = await plugin.execute(identifyEvent); diff --git a/app/core/Analytics/MetaMetricsPrivacySegmentPlugin.ts b/app/core/Analytics/MetaMetricsPrivacySegmentPlugin.ts index 02d33b1d459b..690c7a5c342e 100644 --- a/app/core/Analytics/MetaMetricsPrivacySegmentPlugin.ts +++ b/app/core/Analytics/MetaMetricsPrivacySegmentPlugin.ts @@ -18,6 +18,13 @@ import METAMETRICS_ANONYMOUS_ID from './MetaMetrics.constants'; */ class MetaMetricsPrivacySegmentPlugin extends Plugin { type = PluginType.enrichment; + userId: string; + + constructor(userId: string) { + super(); + // Default userId to our own anonymous id if empty, which should not happen but... + this.userId = userId.trim() || METAMETRICS_ANONYMOUS_ID; + } configure(analytics: SegmentClient) { super.configure(analytics); @@ -38,19 +45,33 @@ class MetaMetricsPrivacySegmentPlugin extends Plugin { // - ours is used to have an identical id for all users when we want events to be anonymous // - segment's is used to identify a user when they are not logged in and allows to merge events when they log in // We need to set it to our own anonymous value to make sure Segment SDK never uses it's own random UUID. - this.analytics?.userInfo.set({ anonymousId: METAMETRICS_ANONYMOUS_ID }); // We only update user id in track events, otherwise return event as is. if (event.type !== EventType.TrackEvent) { return event; } - if (event.properties?.anonymous) { + // if the even has no userId, that can happen when the SDK storage is not yes in sync, we set it to our userId + if(event.userId === undefined) { + event.userId = this.userId; + } + + // if the event anonymous id is not our default id, we update SDK anonymous id in storage + // and update the current event anonymous id as stored value will only be available for next events + if(event.anonymousId !== METAMETRICS_ANONYMOUS_ID) { + await this.analytics?.userInfo.set({anonymousId: METAMETRICS_ANONYMOUS_ID}); + event.anonymousId = METAMETRICS_ANONYMOUS_ID; + } + + // if the event is marked as anonymous, we replace the userId with our anonymous id + if (event.properties?.anonymous && event.userId !== METAMETRICS_ANONYMOUS_ID) { event.userId = METAMETRICS_ANONYMOUS_ID; } + // We remove the anonymous property from the event properties once we have read it // so that it is not sent to Segment delete event.properties?.anonymous; + return event; } } diff --git a/app/core/AppConstants.ts b/app/core/AppConstants.ts index 649b22457c57..07f3a341222e 100644 --- a/app/core/AppConstants.ts +++ b/app/core/AppConstants.ts @@ -112,6 +112,7 @@ export default { 'https://on-ramp.dev-api.cx.metamask.io/assets/ACHBankTransfer@3x.png', }, TERMS_AND_CONDITIONS: 'https://legal.consensys.io/metamask/terms-of-use/', + TERMS_OF_USE: 'https://metamask.io/terms', PRIVACY_POLICY: 'https://consensys.io/privacy-policy', PROFILE_SYNC: 'https://support.metamask.io/privacy-and-security/profile-privacy', diff --git a/app/core/BackgroundBridge/WalletConnectPort.ts b/app/core/BackgroundBridge/WalletConnectPort.ts index 9acd8a76d487..b7deb4d770e9 100644 --- a/app/core/BackgroundBridge/WalletConnectPort.ts +++ b/app/core/BackgroundBridge/WalletConnectPort.ts @@ -1,6 +1,6 @@ import Engine from '../Engine'; import AppConstants from '../AppConstants'; -import { selectChainId } from '../../selectors/networkController'; +import { selectEvmChainId } from '../../selectors/networkController'; import { store } from '../../store'; // eslint-disable-next-line import/no-nodejs-modules, import/no-commonjs, @typescript-eslint/no-var-requires, @typescript-eslint/no-require-imports @@ -31,7 +31,7 @@ class WalletConnectPort extends EventEmitter { accounts: [selectedAddress], }); } else if (msg?.data?.method === NOTIFICATION_NAMES.accountsChanged) { - const chainId = selectChainId(store.getState()); + const chainId = selectEvmChainId(store.getState()); this._wcRequestActions?.updateSession?.({ chainId: parseInt(chainId), accounts: msg.data.params, diff --git a/app/core/BackupVault/backupVault.test.ts b/app/core/BackupVault/backupVault.test.ts index 1d2303516096..ecd37c105e3b 100644 --- a/app/core/BackupVault/backupVault.test.ts +++ b/app/core/BackupVault/backupVault.test.ts @@ -17,6 +17,7 @@ describe('backupVault', () => { vault: undefined, keyrings: [], isUnlocked: false, + keyringsMetadata: [], }; const response = await backupVault(keyringState); expect(response.success).toBe(false); diff --git a/app/core/DeeplinkManager/Handlers/switchNetwork.ts b/app/core/DeeplinkManager/Handlers/switchNetwork.ts index 456daedce59f..1c50b0732685 100644 --- a/app/core/DeeplinkManager/Handlers/switchNetwork.ts +++ b/app/core/DeeplinkManager/Handlers/switchNetwork.ts @@ -4,7 +4,7 @@ import { handleNetworkSwitch } from '../../../util/networks/handleNetworkSwitch' import DevLogger from '../../SDKConnect/utils/DevLogger'; import DeeplinkManager from '../DeeplinkManager'; -import { selectChainId } from '../../../selectors/networkController'; +import { selectEvmChainId } from '../../../selectors/networkController'; import { store } from '../../../store'; import { toHex } from '@metamask/controller-utils'; @@ -23,7 +23,7 @@ function switchNetwork({ const networkName = handleNetworkSwitch(newChainId); if (!networkName) { - const activeChainId = selectChainId(store.getState()); + const activeChainId = selectEvmChainId(store.getState()); if (activeChainId === toHex(newChainId)) { return; } diff --git a/app/core/Engine/Engine.test.ts b/app/core/Engine/Engine.test.ts index e789918f6b8e..f54d2f1f993c 100644 --- a/app/core/Engine/Engine.test.ts +++ b/app/core/Engine/Engine.test.ts @@ -3,7 +3,11 @@ import Engine, { Engine as EngineClass } from './Engine'; import { EngineState, TransactionEventPayload } from './types'; import { backgroundState } from '../../util/test/initial-root-state'; import { zeroAddress } from 'ethereumjs-util'; -import { createMockAccountsControllerState } from '../../util/test/accountsControllerTestUtils'; +import { + createMockAccountsControllerState, + createMockInternalAccount, + MOCK_ADDRESS_1, +} from '../../util/test/accountsControllerTestUtils'; import { mockNetworkState } from '../../util/test/network'; import MetaMetrics from '../Analytics/MetaMetrics'; import { store } from '../../store'; @@ -23,7 +27,16 @@ jest.mock('../../selectors/smartTransactionsController', () => ({ jest.mock('../../selectors/settings', () => ({ selectBasicFunctionalityEnabled: jest.fn().mockReturnValue(true), })); + describe('Engine', () => { + // Create a shared mock account for tests + const validAddress = MOCK_ADDRESS_1; + const mockAccount = createMockInternalAccount(validAddress, 'Test Account'); + + afterEach(() => { + jest.restoreAllMocks(); + }); + it('should expose an API', () => { const engine = Engine.init({}); expect(engine.context).toHaveProperty('AccountTrackerController'); @@ -50,8 +63,10 @@ describe('Engine', () => { expect(engine.context).toHaveProperty('UserStorageController'); expect(engine.context).toHaveProperty('NotificationServicesController'); expect(engine.context).toHaveProperty('SelectedNetworkController'); + expect(engine.context).toHaveProperty('SnapInterfaceController'); expect(engine.context).toHaveProperty('MultichainBalancesController'); expect(engine.context).toHaveProperty('RatesController'); + expect(engine.context).toHaveProperty('MultichainNetworkController'); }); it('calling Engine.init twice returns the same instance', () => { @@ -83,6 +98,98 @@ describe('Engine', () => { ); }); + it('setSelectedAccount successfully updates selected account when address exists', () => { + const engine = Engine.init(backgroundState); + + const getAccountByAddressSpy = jest + .spyOn(engine.context.AccountsController, 'getAccountByAddress') + .mockReturnValue(mockAccount); + + const setSelectedAccountSpy = jest + .spyOn(engine.context.AccountsController, 'setSelectedAccount') + .mockImplementation(); + + const setSelectedAddressSpy = jest + .spyOn(engine.context.PreferencesController, 'setSelectedAddress') + .mockImplementation(); + + engine.setSelectedAccount(validAddress); + + expect(getAccountByAddressSpy).toHaveBeenCalledWith(validAddress); + expect(setSelectedAccountSpy).toHaveBeenCalledWith(mockAccount.id); + expect(setSelectedAddressSpy).toHaveBeenCalledWith(validAddress); + }); + + it('setAccountLabel successfully updates account label when address exists', () => { + const engine = Engine.init(backgroundState); + const label = 'New Account Name'; + + const getAccountByAddressSpy = jest + .spyOn(engine.context.AccountsController, 'getAccountByAddress') + .mockReturnValue(mockAccount); + + const setAccountNameSpy = jest + .spyOn(engine.context.AccountsController, 'setAccountName') + .mockImplementation(); + + const setAccountLabelSpy = jest + .spyOn(engine.context.PreferencesController, 'setAccountLabel') + .mockImplementation(); + + engine.setAccountLabel(validAddress, label); + + expect(getAccountByAddressSpy).toHaveBeenCalledWith(validAddress); + expect(setAccountNameSpy).toHaveBeenCalledWith(mockAccount.id, label); + expect(setAccountLabelSpy).toHaveBeenCalledWith(validAddress, label); + }); + + it('setAccountLabel throws an error if no account exists for the given address', () => { + const engine = Engine.init(backgroundState); + const invalidAddress = '0xInvalidAddress'; + const label = 'Test Account'; + + expect(() => engine.setAccountLabel(invalidAddress, label)).toThrow( + `No account found for address: ${invalidAddress}`, + ); + }); + + it('getSnapKeyring gets or creates a snap keyring', async () => { + const engine = new EngineClass(backgroundState); + const mockSnapKeyring = { type: 'Snap Keyring' }; + jest + .spyOn(engine.keyringController, 'getKeyringsByType') + .mockImplementation(() => [mockSnapKeyring]); + + const getSnapKeyringSpy = jest + .spyOn(engine, 'getSnapKeyring') + .mockImplementation(async () => mockSnapKeyring); + + const result = await engine.getSnapKeyring(); + expect(getSnapKeyringSpy).toHaveBeenCalled(); + expect(result).toEqual(mockSnapKeyring); + }); + + it('getSnapKeyring creates a new snap keyring if none exists', async () => { + const engine = new EngineClass(backgroundState); + const mockSnapKeyring = { type: 'Snap Keyring' }; + + jest + .spyOn(engine.keyringController, 'getKeyringsByType') + .mockImplementation(() => []); + + jest + .spyOn(engine.keyringController, 'addNewKeyring') + .mockImplementation(async () => mockSnapKeyring); + + const getSnapKeyringSpy = jest + .spyOn(engine, 'getSnapKeyring') + .mockImplementation(async () => mockSnapKeyring); + + const result = await engine.getSnapKeyring(); + expect(getSnapKeyringSpy).toHaveBeenCalled(); + expect(result).toEqual(mockSnapKeyring); + }); + it('normalizes CurrencyController state property conversionRate from null to 0', () => { const ticker = 'ETH'; const state = { diff --git a/app/core/Engine/Engine.ts b/app/core/Engine/Engine.ts index b7e8efde3e38..6ba28f763a21 100644 --- a/app/core/Engine/Engine.ts +++ b/app/core/Engine/Engine.ts @@ -1,6 +1,5 @@ /* eslint-disable @typescript-eslint/no-shadow */ import Crypto from 'react-native-quick-crypto'; -import { scrypt } from 'react-native-fast-crypto'; import { AccountTrackerController, @@ -65,11 +64,13 @@ import { JsonSnapsRegistry, SnapController, SnapsRegistryMessenger, + SnapInterfaceController, + SnapInterfaceControllerMessenger, } from '@metamask/snaps-controllers'; import { WebViewExecutionService } from '@metamask/snaps-controllers/react-native'; import type { NotificationArgs } from '@metamask/snaps-rpc-methods/dist/restricted/notify.cjs'; -import { getSnapsWebViewPromise } from '../../lib/snaps'; +import { createWebView, removeWebView } from '../../lib/snaps'; import { buildSnapEndowmentSpecifications, buildSnapRestrictedMethodSpecifications, @@ -80,6 +81,7 @@ import { Duplex } from 'stream'; ///: END:ONLY_INCLUDE_IF import { MetaMaskKeyring as QRHardwareKeyring } from '@keystonehq/metamask-airgapped-keyring'; import { LoggingController } from '@metamask/logging-controller'; +import { TokenSearchDiscoveryControllerMessenger } from '@metamask/token-search-discovery-controller'; import { LedgerKeyring, LedgerMobileBridge, @@ -119,15 +121,15 @@ import { detectSnapLocation, } from '../Snaps'; import { getRpcMethodMiddleware } from '../RPCMethods/RPCMethodMiddleware'; - +import { calculateScryptKey } from './controllers/identity/calculate-scrypt-key'; import { AuthenticationController, UserStorageController, } from '@metamask/profile-sync-controller'; -import { - NotificationServicesController, - NotificationServicesPushController, -} from '@metamask/notification-services-controller'; +import { getNotificationServicesControllerMessenger } from './messengers/notifications/notification-services-controller-messenger'; +import { createNotificationServicesController } from './controllers/notifications/create-notification-services-controller'; +import { getNotificationServicesPushControllerMessenger } from './messengers/notifications/notification-services-push-controller-messenger'; +import { createNotificationServicesPushController } from './controllers/notifications/create-notification-services-push-controller'; ///: END:ONLY_INCLUDE_IF import { getCaveatSpecifications, @@ -139,31 +141,20 @@ import { SignatureController, SignatureControllerOptions, } from '@metamask/signature-controller'; -import { hasProperty, Hex, Json } from '@metamask/utils'; +import { + ///: BEGIN:ONLY_INCLUDE_IF(preinstalled-snaps,external-snaps) + Duration, + inMilliseconds, + ///: END:ONLY_INCLUDE_IF + hasProperty, + Hex, + Json, +} from '@metamask/utils'; import { providerErrors } from '@metamask/rpc-errors'; import { PPOM, ppomInit } from '../../lib/ppom/PPOMView'; import RNFSStorageBackend from '../../lib/ppom/ppom-storage-backend'; -import { - ///: BEGIN:ONLY_INCLUDE_IF(keyring-snaps) - AccountsControllerSetSelectedAccountAction, - AccountsControllerGetAccountByAddressAction, - AccountsControllerSetAccountNameAction, - AccountsControllerListMultichainAccountsAction, - AccountsControllerAccountRemovedEvent, - ///: END:ONLY_INCLUDE_IF - AccountsControllerGetAccountAction, - AccountsControllerGetSelectedAccountAction, - AccountsControllerListAccountsAction, - AccountsControllerUpdateAccountMetadataAction, - AccountsControllerSelectedEvmAccountChangeEvent, - AccountsControllerSelectedAccountChangeEvent, - AccountsControllerAccountAddedEvent, - AccountsControllerAccountRenamedEvent, -} from './controllers/AccountsController/constants'; -import { AccountsControllerMessenger } from '@metamask/accounts-controller'; -import { createAccountsController } from './controllers/AccountsController/utils'; -import { createRemoteFeatureFlagController } from './controllers/RemoteFeatureFlagController'; +import { createRemoteFeatureFlagController } from './controllers/remote-feature-flag-controller'; import { captureException } from '@sentry/react-native'; import { lowerCase } from 'lodash'; import { @@ -209,7 +200,7 @@ import { trace } from '../../util/trace'; import { MetricsEventBuilder } from '../Analytics/MetricsEventBuilder'; import { JsonMap } from '../Analytics/MetaMetrics.types'; import { - ControllerMessenger, + BaseControllerMessenger, EngineState, EngineContext, TransactionEventPayload, @@ -224,19 +215,20 @@ import { getGlobalNetworkClientId, } from '../../util/networks/global-network'; import { logEngineCreation } from './utils/logger'; +import { initModularizedControllers } from './utils'; +import { accountsControllerInit } from './controllers/accounts-controller'; +import { createTokenSearchDiscoveryController } from './controllers/TokenSearchDiscoveryController'; import { SnapControllerClearSnapStateAction, SnapControllerGetSnapAction, SnapControllerGetSnapStateAction, SnapControllerHandleRequestAction, - SnapControllerStateChangeEvent, SnapControllerUpdateSnapStateAction, } from './controllers/SnapController/constants'; -import { - SnapKeyringAccountAssetListUpdatedEvent, - SnapKeyringAccountBalancesUpdatedEvent, - SnapKeyringAccountTransactionsUpdatedEvent, -} from '../SnapKeyring/constants'; +///: BEGIN:ONLY_INCLUDE_IF(keyring-snaps) +import { createMultichainAssetsController } from './controllers/MultichainAssetsController'; +///: END:ONLY_INCLUDE_IF +import { createMultichainNetworkController } from './controllers/MultichainNetworkController'; const NON_EMPTY = 'NON_EMPTY'; @@ -263,7 +255,7 @@ export class Engine { /** * The global controller messenger. */ - controllerMessenger: ControllerMessenger; + controllerMessenger: BaseControllerMessenger; /** * ComposableController reference containing all child controllers */ @@ -309,7 +301,6 @@ export class Engine { selectBasicFunctionalityEnabled(store.getState()); const approvalController = new ApprovalController({ - // @ts-expect-error TODO: Resolve mismatch between base-controller versions. messenger: this.controllerMessenger.getRestricted({ name: 'ApprovalController', allowedEvents: [], @@ -364,8 +355,22 @@ export class Engine { networkController.initializeProvider(); + const multichainNetworkControllerMessenger = + this.controllerMessenger.getRestricted({ + name: 'MultichainNetworkController', + allowedActions: [ + 'NetworkController:setActiveNetwork', + 'NetworkController:getState', + ], + allowedEvents: ['AccountsController:selectedAccountChange'], + }); + + const multichainNetworkController = createMultichainNetworkController({ + messenger: multichainNetworkControllerMessenger, + initialState: initialState.MultichainNetworkController, + }); + const assetsContractController = new AssetsContractController({ - // @ts-expect-error TODO: Resolve mismatch between base-controller versions. messenger: this.controllerMessenger.getRestricted({ name: 'AssetsContractController', allowedActions: [ @@ -382,40 +387,46 @@ export class Engine { chainId: getGlobalChainId(networkController), }); - // Create AccountsController - const accountsControllerMessenger: AccountsControllerMessenger = + const { controllersByName } = initModularizedControllers({ + controllerInitFunctions: { + AccountsController: accountsControllerInit, + }, + persistedState: initialState as EngineState, + existingControllersByName: {}, + baseControllerMessenger: this.controllerMessenger, + }); + + const accountsController = controllersByName.AccountsController; + + ///: BEGIN:ONLY_INCLUDE_IF(keyring-snaps) + + const multichainAssetsControllerMessenger = this.controllerMessenger.getRestricted({ - name: 'AccountsController', + name: 'MultichainAssetsController', allowedEvents: [ - SnapControllerStateChangeEvent, - 'KeyringController:accountRemoved', - 'KeyringController:stateChange', - SnapKeyringAccountAssetListUpdatedEvent, - SnapKeyringAccountBalancesUpdatedEvent, - SnapKeyringAccountTransactionsUpdatedEvent, - ], - allowedActions: [ - 'KeyringController:getAccounts', - 'KeyringController:getKeyringsByType', - 'KeyringController:getKeyringForAccount', + 'AccountsController:accountAdded', + 'AccountsController:accountRemoved', + 'AccountsController:accountAssetListUpdated', ], + allowedActions: ['AccountsController:listMultichainAccounts'], }); - const accountsController = createAccountsController({ - messenger: accountsControllerMessenger, - initialState: initialState.AccountsController, + + const multichainAssetsController = createMultichainAssetsController({ + messenger: multichainAssetsControllerMessenger, + initialState: initialState.MultichainAssetsController, }); - ///: BEGIN:ONLY_INCLUDE_IF(keyring-snaps) - // @ts-expect-error TODO: Resolve mismatch between base-controller versions. const multichainBalancesControllerMessenger: MultichainBalancesControllerMessenger = this.controllerMessenger.getRestricted({ name: 'MultichainBalancesController', allowedEvents: [ - AccountsControllerAccountAddedEvent, - AccountsControllerAccountRemovedEvent, + 'AccountsController:accountAdded', + 'AccountsController:accountRemoved', + 'AccountsController:accountBalancesUpdated', + 'MultichainAssetsController:stateChange', ], allowedActions: [ - AccountsControllerListMultichainAccountsAction, + 'AccountsController:listMultichainAccounts', SnapControllerHandleRequestAction, ], }); @@ -433,7 +444,6 @@ export class Engine { }); const multichainRatesController = createMultichainRatesController({ - // @ts-expect-error TODO: Resolve mismatch between base-controller versions. messenger: multichainRatesControllerMessenger, initialState: initialState.RatesController, }); @@ -448,14 +458,13 @@ export class Engine { const nftController = new NftController({ chainId: getGlobalChainId(networkController), useIpfsSubdomains: false, - // @ts-expect-error TODO: Resolve mismatch between base-controller versions. messenger: this.controllerMessenger.getRestricted({ name: 'NftController', allowedActions: [ `${approvalController.name}:addRequest`, `${networkController.name}:getNetworkClientById`, - AccountsControllerGetAccountAction, - AccountsControllerGetSelectedAccountAction, + 'AccountsController:getAccount', + 'AccountsController:getSelectedAccount', 'AssetsContractController:getERC721AssetName', 'AssetsContractController:getERC721AssetSymbol', 'AssetsContractController:getERC721TokenURI', @@ -466,7 +475,7 @@ export class Engine { allowedEvents: [ 'PreferencesController:stateChange', 'NetworkController:networkDidChange', - AccountsControllerSelectedEvmAccountChangeEvent, + 'AccountsController:selectedEvmAccountChange', ], }), state: initialState.NftController, @@ -489,21 +498,20 @@ export class Engine { // @ts-expect-error at this point in time the provider will be defined by the `networkController.initializeProvider` provider: networkController.getProviderAndBlockTracker().provider, state: initialState.TokensController, - // @ts-expect-error TODO: Resolve mismatch between base-controller versions. messenger: this.controllerMessenger.getRestricted({ name: 'TokensController', allowedActions: [ `${approvalController.name}:addRequest`, 'NetworkController:getNetworkClientById', - AccountsControllerGetAccountAction, - AccountsControllerGetSelectedAccountAction, + 'AccountsController:getAccount', + 'AccountsController:getSelectedAccount', ], allowedEvents: [ 'PreferencesController:stateChange', 'NetworkController:networkDidChange', 'NetworkController:stateChange', 'TokenListController:stateChange', - AccountsControllerSelectedEvmAccountChangeEvent, + 'AccountsController:selectedEvmAccountChange', ], }), }); @@ -514,7 +522,6 @@ export class Engine { AppConstants.NETWORK_STATE_CHANGE_EVENT, listener, ), - // @ts-expect-error TODO: Resolve mismatch between base-controller versions. messenger: this.controllerMessenger.getRestricted({ name: 'TokenListController', allowedActions: [`${networkController.name}:getNetworkClientById`], @@ -522,7 +529,6 @@ export class Engine { }), }); const currencyRateController = new CurrencyRateController({ - // @ts-expect-error TODO: Resolve mismatch between base-controller versions. messenger: this.controllerMessenger.getRestricted({ name: 'CurrencyRateController', allowedActions: [`${networkController.name}:getNetworkClientById`], @@ -581,7 +587,6 @@ export class Engine { const remoteFeatureFlagController = createRemoteFeatureFlagController({ state: initialState.RemoteFeatureFlagController, - // @ts-expect-error TODO: Resolve mismatch between base-controller versions. messenger: this.controllerMessenger.getRestricted({ name: 'RemoteFeatureFlagController', allowedActions: [], @@ -591,8 +596,18 @@ export class Engine { getMetaMetricsId: () => metaMetricsId ?? '', }); + const tokenSearchDiscoveryController = createTokenSearchDiscoveryController( + { + state: initialState.TokenSearchDiscoveryController, + messenger: this.controllerMessenger.getRestricted({ + name: 'TokenSearchDiscoveryController', + allowedActions: [], + allowedEvents: [], + }) as TokenSearchDiscoveryControllerMessenger, + }, + ); + const phishingController = new PhishingController({ - // @ts-expect-error TODO: Resolve mismatch between base-controller versions. messenger: this.controllerMessenger.getRestricted({ name: 'PhishingController', allowedActions: [], @@ -640,9 +655,9 @@ export class Engine { 'PhishingController:testOrigin', 'PhishingController:maybeUpdateState', 'KeyringController:getAccounts', - AccountsControllerSetSelectedAccountAction, - AccountsControllerGetAccountByAddressAction, - AccountsControllerSetAccountNameAction, + 'AccountsController:setSelectedAccount', + 'AccountsController:getAccountByAddress', + 'AccountsController:setAccountName', SnapControllerHandleRequestAction, SnapControllerGetSnapAction, ], @@ -656,11 +671,10 @@ export class Engine { }; additionalKeyrings.push( - snapKeyringBuilder( - snapKeyringBuildMessenger, - persistAndUpdateAccounts, - (address) => this.removeAccount(address), - ), + snapKeyringBuilder(snapKeyringBuildMessenger, { + persistKeyringHelper: () => persistAndUpdateAccounts(), + removeAccountHelper: (address) => this.removeAccount(address), + }), ); ///: END:ONLY_INCLUDE_IF @@ -670,7 +684,6 @@ export class Engine { preferencesController, ), encryptor, - // @ts-expect-error TODO: Resolve mismatch between base-controller versions. messenger: this.controllerMessenger.getRestricted({ name: 'KeyringController', allowedActions: [], @@ -762,6 +775,20 @@ export class Engine { origin, ); }, + createInterface: this.controllerMessenger.call.bind( + this.controllerMessenger, + 'SnapInterfaceController:createInterface', + ), + getInterface: this.controllerMessenger.call.bind( + this.controllerMessenger, + 'SnapInterfaceController:getInterface', + ), + updateInterface: this.controllerMessenger.call.bind( + this.controllerMessenger, + 'SnapInterfaceController:updateInterface', + ), + requestUserApproval: + approvalController.addAndShowApprovalRequest.bind(approvalController), hasPermission: (origin: string, target: string) => this.controllerMessenger.call<'PermissionController:hasPermission'>( 'PermissionController:hasPermission', @@ -796,19 +823,18 @@ export class Engine { }); const accountTrackerController = new AccountTrackerController({ - // @ts-expect-error TODO: Resolve mismatch between base-controller versions. messenger: this.controllerMessenger.getRestricted({ name: 'AccountTrackerController', allowedActions: [ - AccountsControllerGetSelectedAccountAction, - AccountsControllerListAccountsAction, + 'AccountsController:getSelectedAccount', + 'AccountsController:listAccounts', 'PreferencesController:getState', 'NetworkController:getState', 'NetworkController:getNetworkClientById', ], allowedEvents: [ - AccountsControllerSelectedEvmAccountChangeEvent, - AccountsControllerSelectedAccountChangeEvent, + 'AccountsController:selectedEvmAccountChange', + 'AccountsController:selectedAccountChange', ], }), state: initialState.AccountTrackerController ?? { accounts: {} }, @@ -957,7 +983,6 @@ export class Engine { const requireAllowlist = process.env.METAMASK_BUILD_TYPE === 'main'; const disableSnapInstallation = process.env.METAMASK_BUILD_TYPE === 'main'; const allowLocalSnaps = process.env.METAMASK_BUILD_TYPE === 'flask'; - // @ts-expect-error TODO: Resolve mismatch between base-controller versions. const snapsRegistryMessenger: SnapsRegistryMessenger = this.controllerMessenger.getRestricted({ name: 'SnapsRegistry', @@ -977,14 +1002,14 @@ export class Engine { }); this.snapExecutionService = new WebViewExecutionService({ - // @ts-expect-error TODO: Resolve mismatch between base-controller versions. messenger: this.controllerMessenger.getRestricted({ name: 'ExecutionService', allowedActions: [], allowedEvents: [], }), setupSnapProvider: setupSnapProvider.bind(this), - getWebView: () => getSnapsWebViewPromise, + createWebView, + removeWebView, }); const snapControllerMessenger = this.controllerMessenger.getRestricted({ @@ -993,6 +1018,7 @@ export class Engine { 'ExecutionService:unhandledError', 'ExecutionService:outboundRequest', 'ExecutionService:outboundResponse', + 'KeyringController:lock', ], allowedActions: [ `${approvalController.name}:addRequest`, @@ -1042,6 +1068,7 @@ export class Engine { // TODO: Replace "any" with type // eslint-disable-next-line @typescript-eslint/no-explicit-any messenger: snapControllerMessenger as any, + maxIdleTime: inMilliseconds(5, Duration.Minute), detectSnapLocation, //@ts-expect-error types need to be aligned with snaps-controllers preinstalledSnaps: PREINSTALLED_SNAPS, @@ -1056,6 +1083,27 @@ export class Engine { }, }); + const snapInterfaceControllerMessenger = + this.controllerMessenger.getRestricted({ + name: 'SnapInterfaceController', + allowedActions: [ + 'PhishingController:maybeUpdateState', + 'PhishingController:testOrigin', + 'ApprovalController:hasRequest', + 'ApprovalController:acceptRequest', + 'SnapController:get', + ], + allowedEvents: [ + 'NotificationServicesController:notificationsListUpdated', + ], + }); + + const snapInterfaceController = new SnapInterfaceController({ + messenger: + snapInterfaceControllerMessenger as unknown as SnapInterfaceControllerMessenger, + state: initialState.SnapInterfaceController, + }); + const authenticationController = new AuthenticationController.Controller({ state: initialState.AuthenticationController, // @ts-expect-error TODO: Resolve mismatch between base-controller versions. @@ -1121,10 +1169,8 @@ export class Engine { 'AuthenticationController:isSignedIn', 'AuthenticationController:performSignOut', 'AuthenticationController:performSignIn', - 'NotificationServicesController:disableNotificationServices', - 'NotificationServicesController:selectIsNotificationServicesEnabled', - AccountsControllerListAccountsAction, - AccountsControllerUpdateAccountMetadataAction, + 'AccountsController:listAccounts', + 'AccountsController:updateAccountMetadata', 'NetworkController:getState', 'NetworkController:addNetwork', 'NetworkController:removeNetwork', @@ -1133,82 +1179,31 @@ export class Engine { allowedEvents: [ 'KeyringController:unlock', 'KeyringController:lock', - AccountsControllerAccountAddedEvent, - AccountsControllerAccountRenamedEvent, + 'AccountsController:accountAdded', + 'AccountsController:accountRenamed', 'NetworkController:networkRemoved', ], }), - nativeScryptCrypto: scrypt, + nativeScryptCrypto: calculateScryptKey, }); - const notificationServicesController = - new NotificationServicesController.Controller({ - // @ts-expect-error TODO: Resolve mismatch between base-controller versions. - messenger: this.controllerMessenger.getRestricted({ - name: 'NotificationServicesController', - allowedActions: [ - 'KeyringController:getState', - 'KeyringController:getAccounts', - 'AuthenticationController:getBearerToken', - 'AuthenticationController:isSignedIn', - 'UserStorageController:enableProfileSyncing', - 'UserStorageController:getStorageKey', - 'UserStorageController:performGetStorage', - 'UserStorageController:performSetStorage', - 'NotificationServicesPushController:enablePushNotifications', - 'NotificationServicesPushController:disablePushNotifications', - 'NotificationServicesPushController:updateTriggerPushNotifications', - ], - allowedEvents: [ - 'KeyringController:unlock', - 'KeyringController:lock', - 'KeyringController:stateChange', - ], - }), - state: initialState.NotificationServicesController, - env: { - isPushIntegrated: false, - featureAnnouncements: { - platform: 'mobile', - accessToken: process.env - .FEATURES_ANNOUNCEMENTS_ACCESS_TOKEN as string, - spaceId: process.env.FEATURES_ANNOUNCEMENTS_SPACE_ID as string, - }, - }, - }); + const notificationServicesControllerMessenger = + getNotificationServicesControllerMessenger(this.controllerMessenger); + const notificationServicesController = createNotificationServicesController( + { + messenger: notificationServicesControllerMessenger, + initialState: initialState.NotificationServicesController, + }, + ); const notificationServicesPushControllerMessenger = - this.controllerMessenger.getRestricted({ - name: 'NotificationServicesPushController', - allowedActions: ['AuthenticationController:getBearerToken'], - allowedEvents: [], - }); - + getNotificationServicesPushControllerMessenger(this.controllerMessenger); const notificationServicesPushController = - new NotificationServicesPushController.Controller({ - // @ts-expect-error TODO: Resolve mismatch between base-controller versions. + createNotificationServicesPushController({ messenger: notificationServicesPushControllerMessenger, - state: initialState.NotificationServicesPushController || { - fcmToken: '', - }, - env: { - apiKey: process.env.FIREBASE_API_KEY ?? '', - authDomain: process.env.FIREBASE_AUTH_DOMAIN ?? '', - storageBucket: process.env.FIREBASE_STORAGE_BUCKET ?? '', - projectId: process.env.FIREBASE_PROJECT_ID ?? '', - messagingSenderId: process.env.FIREBASE_MESSAGING_SENDER_ID ?? '', - appId: process.env.FIREBASE_APP_ID ?? '', - measurementId: process.env.FIREBASE_MEASUREMENT_ID ?? '', - vapidKey: process.env.VAPID_KEY ?? '', - }, - config: { - isPushEnabled: true, - platform: 'mobile', - // TODO: Implement optionability for push notification handlers (depending of the platform) on the NotificationServicesPushController. - onPushNotificationReceived: () => Promise.resolve(undefined), - onPushNotificationClicked: () => Promise.resolve(undefined), - }, + initialState: initialState.NotificationServicesPushController, }); + ///: END:ONLY_INCLUDE_IF this.transactionController = new TransactionController({ @@ -1268,7 +1263,7 @@ export class Engine { messenger: this.controllerMessenger.getRestricted({ name: 'TransactionController', allowedActions: [ - AccountsControllerGetSelectedAccountAction, + 'AccountsController:getSelectedAccount', `${approvalController.name}:addRequest`, `${networkController.name}:getNetworkClientById`, `${networkController.name}:findNetworkClientIdByChainId`, @@ -1359,11 +1354,10 @@ export class Engine { TokensController: tokensController, TokenListController: tokenListController, TokenDetectionController: new TokenDetectionController({ - // @ts-expect-error TODO: Resolve mismatch between base-controller versions. messenger: this.controllerMessenger.getRestricted({ name: 'TokenDetectionController', allowedActions: [ - AccountsControllerGetSelectedAccountAction, + 'AccountsController:getSelectedAccount', 'NetworkController:getNetworkClientById', 'NetworkController:getNetworkConfigurationByNetworkClientId', 'NetworkController:getState', @@ -1372,7 +1366,7 @@ export class Engine { 'TokenListController:getState', 'TokensController:getState', 'TokensController:addDetectedTokens', - AccountsControllerGetAccountAction, + 'AccountsController:getAccount', ], allowedEvents: [ 'KeyringController:lock', @@ -1381,7 +1375,7 @@ export class Engine { 'NetworkController:networkDidChange', 'TokenListController:stateChange', 'TokensController:stateChange', - AccountsControllerSelectedEvmAccountChangeEvent, + 'AccountsController:selectedEvmAccountChange', ], }), trackMetaMetricsEvent: () => @@ -1407,7 +1401,6 @@ export class Engine { disabled: false, }), NftDetectionController: new NftDetectionController({ - // @ts-expect-error TODO: Resolve mismatch between base-controller versions. messenger: this.controllerMessenger.getRestricted({ name: 'NftDetectionController', allowedEvents: [ @@ -1419,7 +1412,7 @@ export class Engine { 'NetworkController:getState', 'NetworkController:getNetworkClientById', 'PreferencesController:getState', - AccountsControllerGetSelectedAccountAction, + 'AccountsController:getSelectedAccount', ], }), disabled: false, @@ -1431,7 +1424,6 @@ export class Engine { PhishingController: phishingController, PreferencesController: preferencesController, TokenBalancesController: new TokenBalancesController({ - // @ts-expect-error TODO: Resolve mismatch between base-controller versions. messenger: this.controllerMessenger.getRestricted({ name: 'TokenBalancesController', allowedActions: [ @@ -1452,20 +1444,19 @@ export class Engine { state: initialState.TokenBalancesController, }), TokenRatesController: new TokenRatesController({ - // @ts-expect-error TODO: Resolve mismatch between base-controller versions. messenger: this.controllerMessenger.getRestricted({ name: 'TokenRatesController', allowedActions: [ 'TokensController:getState', 'NetworkController:getNetworkClientById', 'NetworkController:getState', - AccountsControllerGetAccountAction, - AccountsControllerGetSelectedAccountAction, + 'AccountsController:getAccount', + 'AccountsController:getSelectedAccount', ], allowedEvents: [ 'TokensController:stateChange', 'NetworkController:stateChange', - AccountsControllerSelectedEvmAccountChangeEvent, + 'AccountsController:selectedEvmAccountChange', ], }), tokenPricesService: codefiTokenApiV2, @@ -1534,6 +1525,7 @@ export class Engine { isDecodeSignatureRequestEnabled: () => preferencesController.state.useTransactionSimulations, }), + TokenSearchDiscoveryController: tokenSearchDiscoveryController, LoggingController: loggingController, ///: BEGIN:ONLY_INCLUDE_IF(preinstalled-snaps,external-snaps) SnapController: this.snapController, @@ -1543,6 +1535,7 @@ export class Engine { UserStorageController: userStorageController, NotificationServicesController: notificationServicesController, NotificationServicesPushController: notificationServicesPushController, + SnapInterfaceController: snapInterfaceController, ///: END:ONLY_INCLUDE_IF AccountsController: accountsController, PPOMController: new PPOMController({ @@ -1581,7 +1574,9 @@ export class Engine { ///: BEGIN:ONLY_INCLUDE_IF(keyring-snaps) MultichainBalancesController: multichainBalancesController, RatesController: multichainRatesController, + MultichainAssetsController: multichainAssetsController, ///: END:ONLY_INCLUDE_IF + MultichainNetworkController: multichainNetworkController, }; const childControllers = Object.assign({}, this.context); @@ -1778,8 +1773,6 @@ export class Engine { TransactionController.startIncomingTransactionPolling([chainId]); ///: BEGIN:ONLY_INCLUDE_IF(keyring-snaps) - this.context.MultichainBalancesController.start(); - this.context.MultichainBalancesController.updateBalances(); this.context.RatesController.start(); ///: END:ONLY_INCLUDE_IF } @@ -1962,7 +1955,6 @@ export class Engine { await removeAccountsFromPermissions([address]); // Remove account from the keyring await this.keyringController.removeAccount(address as Hex); - return address; }; ///: END:ONLY_INCLUDE_IF @@ -2172,6 +2164,7 @@ export default { const { AccountTrackerController, AddressBookController, + SnapInterfaceController, NftController, TokenListController, CurrencyRateController, @@ -2183,6 +2176,7 @@ export default { PPOMController, TokenBalancesController, TokenRatesController, + TokenSearchDiscoveryController, TransactionController, SmartTransactionsController, SwapsController, @@ -2205,12 +2199,15 @@ export default { ///: BEGIN:ONLY_INCLUDE_IF(keyring-snaps) MultichainBalancesController, RatesController, + MultichainAssetsController, ///: END:ONLY_INCLUDE_IF + MultichainNetworkController, } = instance.datamodel.state; return { AccountTrackerController, AddressBookController, + SnapInterfaceController, NftController, TokenListController, CurrencyRateController, @@ -2222,6 +2219,7 @@ export default { PreferencesController, TokenBalancesController, TokenRatesController, + TokenSearchDiscoveryController, TokensController, TransactionController, SmartTransactionsController, @@ -2244,7 +2242,9 @@ export default { ///: BEGIN:ONLY_INCLUDE_IF(keyring-snaps) MultichainBalancesController, RatesController, + MultichainAssetsController, ///: END:ONLY_INCLUDE_IF + MultichainNetworkController, }; }, diff --git a/app/core/Engine/README.md b/app/core/Engine/README.md new file mode 100644 index 000000000000..1b719cfe3bb6 --- /dev/null +++ b/app/core/Engine/README.md @@ -0,0 +1,33 @@ +# Description + +The Engine singleton is the core of the MetaMask Mobile app. It is responsible for initializing and managing all controllers. + +# How to integrate a new controller + +- Create a messenger callback function for creating the controller's messenger + + - The function will be used to get the controller's messenger during the initialization of the controller + - It should exist in the `Engine/messengers` folder and follow the pattern of existing controllers such as `Engine/messengers/accounts-controller-messenger` + - The callback should return a restricted controller messenger with the appropriate allowed events and actions + - Add the controller name to the union type `ControllersToInitialize` in `Engine/types.ts` + - Add the controller entry to `CONTROLLER_MESSENGERS` in `Engine/messengers/index.ts` + +- Create an initialization function for the controller + + - This function will be used to initialize the controller + - It should exist in the `Engine/controllers` folder and follow the pattern of existing controllers such as `Engine/controllers/accounts-controller` + - The initialization function should return an object with a `controller` property that is the controller instance + - Import the initialization function in `Engine.ts` and add it to the `controllerInitFunctions` object when calling `initModularizedControllers` + +- Enable listening to the controller's state change event + + - This state change event is responsible for propagating the controller's state to Redux + - Add the controller's state change event name to `BACKGROUND_STATE_CHANGE_EVENT_NAMES` in `Engine/constants.ts` + +- Add the controller to the Engine's context + + - This allows the controller to be accessed via `Engine.context` when imported in other files + - Add the controller entry to the object that `this.context` is initially set to + +- Assign files to CODEOWNERS + - Add both `app/core/Engine/controllers/<example-controller>` and `app/core/Engine/messengers/<example-controller-messenger>` to the `CODEOWNERS` file and assign to them to the appropriate team diff --git a/app/core/Engine/constants.ts b/app/core/Engine/constants.ts index e8985e576631..5febdc0cbb00 100644 --- a/app/core/Engine/constants.ts +++ b/app/core/Engine/constants.ts @@ -1,4 +1,3 @@ -import { AccountsControllerStateChangeEvent } from './controllers/AccountsController/constants'; ///: BEGIN:ONLY_INCLUDE_IF(preinstalled-snaps,external-snaps) import { SnapControllerStateChangeEvent } from './controllers/SnapController/constants'; ///: END:ONLY_INCLUDE_IF @@ -18,7 +17,7 @@ export const STATELESS_NON_CONTROLLER_NAMES = [ ] as const; export const BACKGROUND_STATE_CHANGE_EVENT_NAMES = [ - AccountsControllerStateChangeEvent, + 'AccountsController:stateChange', 'AccountTrackerController:stateChange', 'AddressBookController:stateChange', 'ApprovalController:stateChange', @@ -41,7 +40,9 @@ export const BACKGROUND_STATE_CHANGE_EVENT_NAMES = [ 'TokenListController:stateChange', 'TokenRatesController:stateChange', 'TokensController:stateChange', + 'TokenSearchDiscoveryController:stateChange', 'TransactionController:stateChange', + 'MultichainNetworkController:stateChange', ///: BEGIN:ONLY_INCLUDE_IF(preinstalled-snaps,external-snaps) SnapControllerStateChangeEvent, 'SnapsRegistry:stateChange', @@ -50,9 +51,12 @@ export const BACKGROUND_STATE_CHANGE_EVENT_NAMES = [ 'UserStorageController:stateChange', 'NotificationServicesController:stateChange', 'NotificationServicesPushController:stateChange', + 'SnapInterfaceController:stateChange', ///: END:ONLY_INCLUDE_IF ///: BEGIN:ONLY_INCLUDE_IF(keyring-snaps) MultichainBalancesControllerStateChangeEvent, RatesControllerStateChangeEvent, + // TODO: Export this from the assets controller + 'MultichainAssetsController:stateChange', ///: END:ONLY_INCLUDE_IF ] as const; diff --git a/app/core/Engine/controllers/AccountsController/constants.ts b/app/core/Engine/controllers/AccountsController/constants.ts deleted file mode 100644 index de1295b40119..000000000000 --- a/app/core/Engine/controllers/AccountsController/constants.ts +++ /dev/null @@ -1,54 +0,0 @@ -import { - AccountsControllerChangeEvent as AccountsControllerStateChangeEventType, - AccountsControllerGetAccountByAddressAction as AccountsControllerGetAccountByAddressActionType, - AccountsControllerSetAccountNameAction as AccountsControllerSetAccountNameActionType, - AccountsControllerSetSelectedAccountAction as AccountsControllerSetSelectedAccountActionType, - AccountsControllerGetAccountAction as AccountsControllerGetAccountActionType, - AccountsControllerGetSelectedAccountAction as AccountsControllerGetSelectedAccountActionType, - AccountsControllerListAccountsAction as AccountsControllerListAccountsActionType, - AccountsControllerUpdateAccountMetadataAction as AccountsControllerUpdateAccountMetadataActionType, - AccountsControllerSelectedEvmAccountChangeEvent as AccountsControllerSelectedEvmAccountChangeEventType, - AccountsControllerSelectedAccountChangeEvent as AccountsControllerSelectedAccountChangeEventType, - AccountsControllerAccountAddedEvent as AccountsControllerAccountAddedEventType, - AccountsControllerAccountRenamedEvent as AccountsControllerAccountRenamedEventType, - ///: BEGIN:ONLY_INCLUDE_IF(keyring-snaps) - AccountsControllerAccountRemovedEvent as AccountsControllerAccountRemovedEventType, - AccountsControllerListMultichainAccountsAction as AccountsControllerListMultichainAccountsActionType, - ///: END:ONLY_INCLUDE_IF -} from '@metamask/accounts-controller'; - -// Action types of AccountsController -export const AccountsControllerGetAccountByAddressAction: AccountsControllerGetAccountByAddressActionType['type'] = - 'AccountsController:getAccountByAddress'; -export const AccountsControllerSetAccountNameAction: AccountsControllerSetAccountNameActionType['type'] = - 'AccountsController:setAccountName'; -export const AccountsControllerGetAccountAction: AccountsControllerGetAccountActionType['type'] = - 'AccountsController:getAccount'; -export const AccountsControllerGetSelectedAccountAction: AccountsControllerGetSelectedAccountActionType['type'] = - 'AccountsController:getSelectedAccount'; -export const AccountsControllerSetSelectedAccountAction: AccountsControllerSetSelectedAccountActionType['type'] = - 'AccountsController:setSelectedAccount'; -export const AccountsControllerListAccountsAction: AccountsControllerListAccountsActionType['type'] = - 'AccountsController:listAccounts'; -export const AccountsControllerUpdateAccountMetadataAction: AccountsControllerUpdateAccountMetadataActionType['type'] = - 'AccountsController:updateAccountMetadata'; -///: BEGIN:ONLY_INCLUDE_IF(keyring-snaps) -export const AccountsControllerListMultichainAccountsAction: AccountsControllerListMultichainAccountsActionType['type'] = - 'AccountsController:listMultichainAccounts'; -///: END:ONLY_INCLUDE_IF - -// Events of AccountsController -export const AccountsControllerStateChangeEvent: AccountsControllerStateChangeEventType['type'] = - 'AccountsController:stateChange'; -export const AccountsControllerSelectedEvmAccountChangeEvent: AccountsControllerSelectedEvmAccountChangeEventType['type'] = - 'AccountsController:selectedEvmAccountChange'; -export const AccountsControllerSelectedAccountChangeEvent: AccountsControllerSelectedAccountChangeEventType['type'] = - 'AccountsController:selectedAccountChange'; -export const AccountsControllerAccountAddedEvent: AccountsControllerAccountAddedEventType['type'] = - 'AccountsController:accountAdded'; -export const AccountsControllerAccountRenamedEvent: AccountsControllerAccountRenamedEventType['type'] = - 'AccountsController:accountRenamed'; -///: BEGIN:ONLY_INCLUDE_IF(keyring-snaps) -export const AccountsControllerAccountRemovedEvent: AccountsControllerAccountRemovedEventType['type'] = - 'AccountsController:accountRemoved'; -///: END:ONLY_INCLUDE_IF diff --git a/app/core/Engine/controllers/AccountsController/utils.test.ts b/app/core/Engine/controllers/AccountsController/utils.test.ts deleted file mode 100644 index b35ec88ce051..000000000000 --- a/app/core/Engine/controllers/AccountsController/utils.test.ts +++ /dev/null @@ -1,153 +0,0 @@ -import { - AccountsControllerMessenger, - AccountsControllerState, -} from '@metamask/accounts-controller'; -import type { - KeyringControllerAccountRemovedEvent, - KeyringControllerGetAccountsAction, - KeyringControllerGetKeyringForAccountAction, - KeyringControllerGetKeyringsByTypeAction, - KeyringControllerStateChangeEvent, -} from '@metamask/keyring-controller'; -import { SnapStateChange } from '@metamask/snaps-controllers'; -import { ExtendedControllerMessenger } from '../../../ExtendedControllerMessenger'; -import { - createAccountsController, - defaultAccountsControllerState, -} from './utils'; -import { withScope } from '@sentry/react-native'; -import { AGREED, METRICS_OPT_IN } from '../../../../constants/storage'; -import StorageWrapper from '../../../../store/storage-wrapper'; -import { logAccountsControllerCreation } from './logger'; -import { SnapControllerStateChangeEvent } from '../SnapController/constants'; -import { SnapKeyringEvents } from '@metamask/eth-snap-keyring'; -import { - SnapKeyringAccountAssetListUpdatedEvent, - SnapKeyringAccountBalancesUpdatedEvent, - SnapKeyringAccountTransactionsUpdatedEvent, -} from '../../../SnapKeyring/constants'; - -jest.mock('@sentry/react-native', () => ({ - withScope: jest.fn(), -})); -jest.mock('./logger', () => ({ - logAccountsControllerCreation: jest.fn(), -})); - -const mockedWithScope = jest.mocked(withScope); -const mockedLogAccountsControllerCreation = jest.mocked( - logAccountsControllerCreation, -); - -describe('accountControllersUtils', () => { - describe('createAccountsController', () => { - let accountsControllerMessenger: AccountsControllerMessenger; - - beforeEach(() => { - const globalMessenger = new ExtendedControllerMessenger< - | KeyringControllerGetAccountsAction - | KeyringControllerGetKeyringsByTypeAction - | KeyringControllerGetKeyringForAccountAction, - | SnapStateChange - | KeyringControllerAccountRemovedEvent - | KeyringControllerStateChangeEvent - | SnapKeyringEvents - >(); - accountsControllerMessenger = globalMessenger.getRestricted({ - name: 'AccountsController', - allowedEvents: [ - SnapControllerStateChangeEvent, - 'KeyringController:accountRemoved', - 'KeyringController:stateChange', - SnapKeyringAccountAssetListUpdatedEvent, - SnapKeyringAccountBalancesUpdatedEvent, - SnapKeyringAccountTransactionsUpdatedEvent, - ], - allowedActions: [ - 'KeyringController:getAccounts', - 'KeyringController:getKeyringsByType', - 'KeyringController:getKeyringForAccount', - ], - }); - // Mock required for Logger - StorageWrapper.getItem = jest.fn((key: string) => { - switch (key) { - case METRICS_OPT_IN: - return Promise.resolve(AGREED); - default: - return Promise.resolve(''); - } - }); - }); - - afterEach(() => { - jest.resetAllMocks(); - }); - - it('logs creation with default state when no initial state provided', () => { - createAccountsController({ - messenger: accountsControllerMessenger, - }); - expect(mockedLogAccountsControllerCreation).toHaveBeenCalledWith( - undefined, - ); - }); - - it('logs creation with provided initial state', () => { - const initialState = { - internalAccounts: { - accounts: {}, - selectedAccount: '0x1', - }, - }; - createAccountsController({ - messenger: accountsControllerMessenger, - initialState, - }); - expect(mockedLogAccountsControllerCreation).toHaveBeenCalledWith( - initialState, - ); - }); - - it('AccountsController state should be default state when no initial state is passed in', () => { - const accountsController = createAccountsController({ - messenger: accountsControllerMessenger, - }); - expect(accountsController.state).toEqual(defaultAccountsControllerState); - }); - - it('AccountsController state should be initial state when initial state is passed in', () => { - const initialAccountsControllerState: AccountsControllerState = { - internalAccounts: { - accounts: {}, - selectedAccount: '0x1', - }, - }; - const accountsController = createAccountsController({ - messenger: accountsControllerMessenger, - initialState: initialAccountsControllerState, - }); - expect(accountsController.state).toEqual(initialAccountsControllerState); - }); - - it('AccountsController name should be AccountsController', () => { - const accountsControllerName = 'AccountsController'; - const accountsController = createAccountsController({ - messenger: accountsControllerMessenger, - }); - expect(accountsController.name).toEqual(accountsControllerName); - }); - - it('should detect and log an error when controller fails to initialize', async () => { - const brokenAccountsControllerMessenger = - 'controllerMessenger' as unknown as AccountsControllerMessenger; - await expect(() => - createAccountsController({ - messenger: brokenAccountsControllerMessenger, - }), - ).toThrow(); - - expect(mockedWithScope).toHaveBeenCalledTimes(1); - }); - }); -}); diff --git a/app/core/Engine/controllers/AccountsController/utils.ts b/app/core/Engine/controllers/AccountsController/utils.ts deleted file mode 100644 index d081bed84e58..000000000000 --- a/app/core/Engine/controllers/AccountsController/utils.ts +++ /dev/null @@ -1,45 +0,0 @@ -import { - AccountsController, - AccountsControllerMessenger, - AccountsControllerState, -} from '@metamask/accounts-controller'; -import Logger from '../../../../util/Logger'; -import { logAccountsControllerCreation } from './logger'; - -// Default AccountsControllerState -export const defaultAccountsControllerState: AccountsControllerState = { - internalAccounts: { - accounts: {}, - selectedAccount: '', - }, -}; - -/** - * Creates instance of AccountsController - * - * @param options.messenger - Controller messenger instance - * @param options.initialState - Initial state of AccountsController - * @returns - AccountsController instance - */ -export const createAccountsController = ({ - messenger, - initialState, -}: { - messenger: AccountsControllerMessenger; - initialState?: AccountsControllerState; -}): AccountsController => { - try { - logAccountsControllerCreation(initialState); - const accountsController = new AccountsController({ - messenger, - state: initialState ?? defaultAccountsControllerState, - }); - return accountsController; - } catch (error) { - // Report error while initializing AccountsController - Logger.error(error as Error, 'Failed to initialize AccountsController'); - - // TODO: Direct to vault recovery to reset controller states - throw error; - } -}; diff --git a/app/core/Engine/controllers/MultichainAssetsController/index.test.ts b/app/core/Engine/controllers/MultichainAssetsController/index.test.ts new file mode 100644 index 000000000000..688af2c83bbc --- /dev/null +++ b/app/core/Engine/controllers/MultichainAssetsController/index.test.ts @@ -0,0 +1,100 @@ +import { + MultichainAssetsController, + MultichainAssetsControllerMessenger, + MultichainAssetsControllerState, +} from '@metamask/assets-controllers'; +import { ExtendedControllerMessenger } from '../../../ExtendedControllerMessenger'; +import { createMultichainAssetsController } from '.'; + +jest.mock('@metamask/assets-controllers'); + +describe('multichain assets controller', () => { + const multichainAssetsControllerClassMock = jest.mocked( + MultichainAssetsController, + ); + + let multichainAssetsControllerMessenger: MultichainAssetsControllerMessenger; + + beforeEach(() => { + jest.resetAllMocks(); + const messenger = new ExtendedControllerMessenger(); + multichainAssetsControllerMessenger = messenger.getRestricted({ + name: 'MultichainAssetsController', + allowedEvents: [ + 'AccountsController:accountAdded', + 'AccountsController:accountAdded', + 'AccountsController:accountAssetListUpdated', + ], + allowedActions: ['AccountsController:listMultichainAccounts'], + }); + }); + + it('returns controller instance', () => { + expect( + createMultichainAssetsController({ + messenger: multichainAssetsControllerMessenger, + }), + ).toBeInstanceOf(MultichainAssetsController); + }); + + it('controller state should be default state when no initial state is passed in', () => { + createMultichainAssetsController({ + messenger: multichainAssetsControllerMessenger, + }); + const multichainAssetsControllerState = + multichainAssetsControllerClassMock.mock.calls[0][0].state; + expect(multichainAssetsControllerState).toEqual({ + accountsAssets: {}, + assetsMetadata: {}, + }); + }); + + it('controller state should be initial state when initial state is passed in', () => { + const initialMultichainAssetsControllerState: MultichainAssetsControllerState = + { + accountsAssets: { + '0x1': ['erc20:1/erc20:0x456' as const], + }, + assetsMetadata: { + 'erc20:1/erc20:0x456': { + symbol: 'TEST', + name: 'Test Token', + fungible: true as const, + iconUrl: 'https://example.com/icon.png', + units: [ + { + symbol: 'TEST', + name: 'Test Token', + decimals: 18, + }, + ], + }, + }, + }; + + createMultichainAssetsController({ + messenger: multichainAssetsControllerMessenger, + initialState: initialMultichainAssetsControllerState, + }); + + const multichainAssetsControllerState = + multichainAssetsControllerClassMock.mock.calls[0][0].state; + expect(multichainAssetsControllerState).toEqual( + initialMultichainAssetsControllerState, + ); + }); + + it('should throw and log error when controller creation fails', () => { + const mockError = new Error('Test error'); + jest.spyOn(console, 'error').mockImplementation(); + multichainAssetsControllerClassMock.mockImplementation(() => { + throw mockError; + }); + + expect(() => + createMultichainAssetsController({ + messenger: multichainAssetsControllerMessenger, + }), + ).toThrow(mockError); + }); +}); diff --git a/app/core/Engine/controllers/MultichainAssetsController/index.ts b/app/core/Engine/controllers/MultichainAssetsController/index.ts new file mode 100644 index 000000000000..83291c94fde4 --- /dev/null +++ b/app/core/Engine/controllers/MultichainAssetsController/index.ts @@ -0,0 +1,41 @@ +import { + MultichainAssetsController, + MultichainAssetsControllerMessenger, + MultichainAssetsControllerState, +} from '@metamask/assets-controllers'; +import Logger from '../../../../util/Logger'; + +const defaultMultichainAssetsControllerState: MultichainAssetsControllerState = + { + accountsAssets: {}, + assetsMetadata: {}, + }; + +/** + * Creates instance of MultichainAssetsController + * + * @param options.messenger - Controller messenger instance + * @param options.initialState - Initial state of MultichainAssetsController + * @returns - MultichainAssetsController instance + */ +export const createMultichainAssetsController = ({ + messenger, + initialState, +}: { + messenger: MultichainAssetsControllerMessenger; + initialState?: MultichainAssetsControllerState; +}): MultichainAssetsController => { + try { + const multichainAssetsController = new MultichainAssetsController({ + messenger, + state: initialState ?? defaultMultichainAssetsControllerState, + }); + return multichainAssetsController; + } catch (error) { + Logger.error( + error as Error, + 'Failed to initialize MultichainAssetsController', + ); + throw error; + } +}; diff --git a/app/core/Engine/controllers/MultichainNetworkController/index.test.ts b/app/core/Engine/controllers/MultichainNetworkController/index.test.ts new file mode 100644 index 000000000000..188c910ee6d4 --- /dev/null +++ b/app/core/Engine/controllers/MultichainNetworkController/index.test.ts @@ -0,0 +1,86 @@ +import { + MultichainNetworkController, + MultichainNetworkControllerMessenger, + MultichainNetworkControllerState, + getDefaultMultichainNetworkControllerState, +} from '@metamask/multichain-network-controller'; +import { ExtendedControllerMessenger } from '../../../ExtendedControllerMessenger'; +import { createMultichainNetworkController } from '.'; +import { BtcScope } from '@metamask/keyring-api'; + +jest.mock('@metamask/multichain-network-controller'); + +describe('multichain network controller', () => { + const multichainNetworkControllerClassMock = jest.mocked( + MultichainNetworkController, + ); + + let multichainNetworkControllerMessenger: MultichainNetworkControllerMessenger; + + beforeEach(() => { + jest.resetAllMocks(); + const messenger = new ExtendedControllerMessenger(); + multichainNetworkControllerMessenger = messenger.getRestricted({ + name: 'MultichainNetworkController', + allowedActions: [ + 'NetworkController:setActiveNetwork', + 'NetworkController:getState', + ], + allowedEvents: ['AccountsController:selectedAccountChange'], + }); + }); + + it('returns controller instance', () => { + expect( + createMultichainNetworkController({ + messenger: multichainNetworkControllerMessenger, + }), + ).toBeInstanceOf(MultichainNetworkController); + }); + + it('it has default state when no initial state is passed in', () => { + createMultichainNetworkController({ + messenger: multichainNetworkControllerMessenger, + }); + const multichainNetworkControllerState = + multichainNetworkControllerClassMock.mock.calls[0][0].state; + + expect(multichainNetworkControllerState).toEqual( + getDefaultMultichainNetworkControllerState(), + ); + }); + + it('it has initial state when initial state is passed in', () => { + const initialMultichainNetworkControllerState: MultichainNetworkControllerState = + { + multichainNetworkConfigurationsByChainId: {}, + selectedMultichainNetworkChainId: BtcScope.Mainnet, + isEvmSelected: false, + }; + + createMultichainNetworkController({ + messenger: multichainNetworkControllerMessenger, + initialState: initialMultichainNetworkControllerState, + }); + + const multichainNetworkControllerState = + multichainNetworkControllerClassMock.mock.calls[0][0].state; + expect(multichainNetworkControllerState).toEqual( + initialMultichainNetworkControllerState, + ); + }); + + it('throws and logs an error when controller creation fails', () => { + const mockError = new Error('Test error'); + jest.spyOn(console, 'error').mockImplementation(); + multichainNetworkControllerClassMock.mockImplementation(() => { + throw mockError; + }); + + expect(() => + createMultichainNetworkController({ + messenger: multichainNetworkControllerMessenger, + }), + ).toThrow(mockError); + }); +}); diff --git a/app/core/Engine/controllers/MultichainNetworkController/index.ts b/app/core/Engine/controllers/MultichainNetworkController/index.ts new file mode 100644 index 000000000000..d2c3282e57fc --- /dev/null +++ b/app/core/Engine/controllers/MultichainNetworkController/index.ts @@ -0,0 +1,35 @@ +import { + MultichainNetworkController, + MultichainNetworkControllerMessenger, + MultichainNetworkControllerState, +} from '@metamask/multichain-network-controller'; +import Logger from '../../../../util/Logger'; + +/** + * Creates instance of MultichainNetworkController + * + * @param options.messenger - Controller messenger instance + * @param options.initialState - Initial state of MultichainNetworkController + * @returns - MultichainNetworkController instance + */ +export const createMultichainNetworkController = ({ + messenger, + initialState, +}: { + messenger: MultichainNetworkControllerMessenger; + initialState?: MultichainNetworkControllerState; +}): MultichainNetworkController => { + try { + const multichainNetworkController = new MultichainNetworkController({ + messenger, + state: initialState, + }); + return multichainNetworkController; + } catch (error) { + Logger.error( + error as Error, + 'Failed to initialize MultichainNetworkController', + ); + throw error; + } +}; diff --git a/app/core/Engine/controllers/TokenSearchDiscoveryController/constants.ts b/app/core/Engine/controllers/TokenSearchDiscoveryController/constants.ts new file mode 100644 index 000000000000..cbd0d569bc3e --- /dev/null +++ b/app/core/Engine/controllers/TokenSearchDiscoveryController/constants.ts @@ -0,0 +1,4 @@ +export const PORTFOLIO_API_URL = { + dev: 'https://portfolio.dev-api.cx.metamask.io/', + prod: 'https://portfolio.api.cx.metamask.io/', +}; diff --git a/app/core/Engine/controllers/TokenSearchDiscoveryController/index.ts b/app/core/Engine/controllers/TokenSearchDiscoveryController/index.ts new file mode 100644 index 000000000000..6099020bebe1 --- /dev/null +++ b/app/core/Engine/controllers/TokenSearchDiscoveryController/index.ts @@ -0,0 +1 @@ +export { createTokenSearchDiscoveryController } from './utils'; diff --git a/app/core/Engine/controllers/TokenSearchDiscoveryController/types.ts b/app/core/Engine/controllers/TokenSearchDiscoveryController/types.ts new file mode 100644 index 000000000000..28d12f4a1805 --- /dev/null +++ b/app/core/Engine/controllers/TokenSearchDiscoveryController/types.ts @@ -0,0 +1,7 @@ +import { TokenSearchDiscoveryControllerMessenger } from '@metamask/token-search-discovery-controller/dist/token-search-discovery-controller.cjs'; +import { TokenSearchDiscoveryControllerState } from '@metamask/token-search-discovery-controller'; + +export interface TokenSearchDiscoveryControllerParams { + state?: Partial<TokenSearchDiscoveryControllerState>; + messenger: TokenSearchDiscoveryControllerMessenger; +} diff --git a/app/core/Engine/controllers/TokenSearchDiscoveryController/utils.test.ts b/app/core/Engine/controllers/TokenSearchDiscoveryController/utils.test.ts new file mode 100644 index 000000000000..7a9375c84d52 --- /dev/null +++ b/app/core/Engine/controllers/TokenSearchDiscoveryController/utils.test.ts @@ -0,0 +1,192 @@ +import { createTokenSearchDiscoveryController } from './utils'; +import Logger from '../../../../util/Logger'; + +import { + TokenSearchApiService, + TokenSearchDiscoveryControllerState, +} from '@metamask/token-search-discovery-controller'; +import { TokenSearchDiscoveryControllerMessenger } from '@metamask/token-search-discovery-controller/dist/token-search-discovery-controller.cjs'; + +const mockError = new Error('Controller creation failed'); + +// Top-level mocks +jest.mock('../../../../util/Logger', () => ({ + error: jest.fn(), +})); + +jest.mock('@metamask/token-search-discovery-controller', () => ({ + TokenSearchApiService: jest.fn().mockImplementation(() => ({})), + TokenDiscoveryApiService: jest.fn().mockImplementation(() => ({})), + TokenSearchDiscoveryController: jest + .fn() + .mockImplementation( + (params: { state?: TokenSearchDiscoveryControllerState }) => ({ + state: { + lastSearchTimestamp: null, + recentSearches: [], + ...params.state, + }, + }), + ), +})); + +describe('TokenSearchDiscoveryController utils', () => { + let messenger: TokenSearchDiscoveryControllerMessenger; + + beforeEach(() => { + messenger = {} as TokenSearchDiscoveryControllerMessenger; + }); + + describe('createTokenSearchDiscoveryController', () => { + afterEach(() => { + jest.clearAllMocks(); + jest.resetModules(); + }); + + it('creates controller with initial undefined state', () => { + const controller = createTokenSearchDiscoveryController({ + state: undefined, + messenger, + }); + + expect(controller).toBeDefined(); + expect(controller.state).toStrictEqual({ + lastSearchTimestamp: null, + recentSearches: [], + }); + }); + + it('internal state matches initial state', () => { + const initialState: TokenSearchDiscoveryControllerState = { + lastSearchTimestamp: 123456789, + recentSearches: [ + { + tokenAddress: '0x123', + chainId: '0x1', + name: 'Test Token 1', + symbol: 'TEST1', + usdPrice: 1.0, + usdPricePercentChange: { + oneDay: 0.0, + }, + }, + { + tokenAddress: '0x456', + chainId: '0x1', + name: 'Test Token 2', + symbol: 'TEST2', + usdPrice: 2.0, + usdPricePercentChange: { + oneDay: 0.0, + }, + }, + ], + }; + + const controller = createTokenSearchDiscoveryController({ + state: initialState, + messenger, + }); + + expect(controller.state).toStrictEqual(initialState); + }); + + it('keeps initial extra data in controller state', () => { + const initialState = { + extraData: true, + }; + + const controller = createTokenSearchDiscoveryController({ + // @ts-expect-error giving a wrong initial state + state: initialState, + messenger, + }); + + expect(controller.state).toStrictEqual({ + lastSearchTimestamp: null, + recentSearches: [], + extraData: true, + }); + }); + + it('logs and rethrows error when controller creation fails', () => { + (TokenSearchApiService as jest.Mock).mockImplementation(() => { + throw mockError; + }); + + expect(() => + createTokenSearchDiscoveryController({ + state: undefined, + messenger, + }), + ).toThrow(mockError); + + expect(Logger.error).toHaveBeenCalledWith(mockError); + }); + }); + + describe('getPortfolioApiBaseUrl', () => { + const originalEnv = process.env; + + beforeEach(() => { + jest.resetModules(); + process.env = { ...originalEnv }; + }); + + afterEach(() => { + process.env = originalEnv; + }); + + it('returns dev URL when environment is local', () => { + process.env.METAMASK_ENVIRONMENT = 'local'; + jest.isolateModules(() => { + const { createTokenSearchDiscoveryController: freshCreate } = + jest.requireActual('./utils'); + const controller = freshCreate({ + state: undefined, + messenger, + }); + expect(controller.state).toBeDefined(); + }); + }); + + it('returns prod URL when environment is pre-release', () => { + process.env.METAMASK_ENVIRONMENT = 'pre-release'; + jest.isolateModules(() => { + const { createTokenSearchDiscoveryController: freshCreate } = + jest.requireActual('./utils'); + const controller = freshCreate({ + state: undefined, + messenger, + }); + expect(controller.state).toBeDefined(); + }); + }); + + it('returns prod URL when environment is production', () => { + process.env.METAMASK_ENVIRONMENT = 'production'; + jest.isolateModules(() => { + const { createTokenSearchDiscoveryController: freshCreate } = + jest.requireActual('./utils'); + const controller = freshCreate({ + state: undefined, + messenger, + }); + expect(controller.state).toBeDefined(); + }); + }); + + it('returns dev URL when environment is not recognized', () => { + process.env.METAMASK_ENVIRONMENT = 'unknown'; + jest.isolateModules(() => { + const { createTokenSearchDiscoveryController: freshCreate } = + jest.requireActual('./utils'); + const controller = freshCreate({ + state: undefined, + messenger, + }); + expect(controller.state).toBeDefined(); + }); + }); + }); +}); diff --git a/app/core/Engine/controllers/TokenSearchDiscoveryController/utils.ts b/app/core/Engine/controllers/TokenSearchDiscoveryController/utils.ts new file mode 100644 index 000000000000..7712bbca538e --- /dev/null +++ b/app/core/Engine/controllers/TokenSearchDiscoveryController/utils.ts @@ -0,0 +1,40 @@ +import Logger from '../../../../util/Logger'; +import { + TokenSearchApiService, + TokenSearchDiscoveryController, + TokenDiscoveryApiService, +} from '@metamask/token-search-discovery-controller'; +import { TokenSearchDiscoveryControllerParams } from './types'; +import { PORTFOLIO_API_URL } from './constants'; + +const getPortfolioApiBaseUrl = () => { + const env = process.env.METAMASK_ENVIRONMENT; + switch (env) { + case 'local': + return PORTFOLIO_API_URL.dev; + case 'pre-release': + case 'production': + return PORTFOLIO_API_URL.prod; + default: + return PORTFOLIO_API_URL.dev; + } +}; + +export const createTokenSearchDiscoveryController = ({ + state, + messenger, +}: TokenSearchDiscoveryControllerParams) => { + try { + const baseUrl = getPortfolioApiBaseUrl(); + const controller = new TokenSearchDiscoveryController({ + state, + messenger, + tokenSearchService: new TokenSearchApiService(baseUrl), + tokenDiscoveryService: new TokenDiscoveryApiService(baseUrl), + }); + return controller; + } catch (error) { + Logger.error(error as Error); + throw error; + } +}; diff --git a/app/core/Engine/controllers/accounts-controller/constants.ts b/app/core/Engine/controllers/accounts-controller/constants.ts new file mode 100644 index 000000000000..a54b1ad8c876 --- /dev/null +++ b/app/core/Engine/controllers/accounts-controller/constants.ts @@ -0,0 +1,9 @@ +import type { AccountsControllerState } from '@metamask/accounts-controller'; + +// Default AccountsControllerState +export const defaultAccountsControllerState: AccountsControllerState = { + internalAccounts: { + accounts: {}, + selectedAccount: '', + }, +}; diff --git a/app/core/Engine/controllers/accounts-controller/index.test.ts b/app/core/Engine/controllers/accounts-controller/index.test.ts new file mode 100644 index 000000000000..900b9cdfc7f4 --- /dev/null +++ b/app/core/Engine/controllers/accounts-controller/index.test.ts @@ -0,0 +1,94 @@ +import { + AccountsController, + type AccountsControllerMessenger, +} from '@metamask/accounts-controller'; +import type { ControllerInitRequest } from '../../types'; +import { buildControllerInitRequestMock } from '../../utils/test-utils'; +import { accountsControllerInit } from '.'; +import { defaultAccountsControllerState } from './constants'; +import { logAccountsControllerCreation } from './utils'; +import { ExtendedControllerMessenger } from '../../../ExtendedControllerMessenger'; + +jest.mock('./utils', () => ({ + logAccountsControllerCreation: jest.fn(), +})); + +const mockedLogAccountsControllerCreation = jest.mocked( + logAccountsControllerCreation, +); + +jest.mock('@metamask/accounts-controller'); + +describe('accounts controller init', () => { + const accountsControllerClassMock = jest.mocked(AccountsController); + let initRequestMock: jest.Mocked< + ControllerInitRequest<AccountsControllerMessenger> + >; + + beforeEach(() => { + jest.resetAllMocks(); + const baseControllerMessenger = new ExtendedControllerMessenger(); + // Create controller init request mock + initRequestMock = buildControllerInitRequestMock(baseControllerMessenger); + }); + + describe('logs are registered during controller creation', () => { + it('logs creation with default state when no initial state provided', () => { + accountsControllerInit(initRequestMock); + expect(mockedLogAccountsControllerCreation).toHaveBeenCalledWith( + defaultAccountsControllerState, + ); + }); + + it('logs creation with provided initial state', () => { + // Set initial state + const initialAccountsControllerState = { + internalAccounts: { + accounts: {}, + selectedAccount: '0x2', + }, + }; + // Update mock with initial state + initRequestMock.persistedState = { + ...initRequestMock.persistedState, + AccountsController: initialAccountsControllerState, + }; + accountsControllerInit(initRequestMock); + expect(mockedLogAccountsControllerCreation).toHaveBeenCalledWith( + initialAccountsControllerState, + ); + }); + }); + + it('returns controller instance', () => { + expect(accountsControllerInit(initRequestMock).controller).toBeInstanceOf( + AccountsController, + ); + }); + + it('controller state should be default state when no initial state is passed in', () => { + accountsControllerInit(initRequestMock); + const accountsControllerState = + accountsControllerClassMock.mock.calls[0][0].state; + expect(accountsControllerState).toEqual(defaultAccountsControllerState); + }); + + it('controller state should be initial state when initial state is passed in', () => { + // Create initial state + const initialAccountsControllerState = { + internalAccounts: { + accounts: {}, + selectedAccount: '0x2', + }, + }; + // Update mock with initial state + initRequestMock.persistedState = { + ...initRequestMock.persistedState, + AccountsController: initialAccountsControllerState, + }; + accountsControllerInit(initRequestMock); + const accountsControllerState = + accountsControllerClassMock.mock.calls[0][0].state; + expect(accountsControllerState).toEqual(initialAccountsControllerState); + }); +}); diff --git a/app/core/Engine/controllers/accounts-controller/index.ts b/app/core/Engine/controllers/accounts-controller/index.ts new file mode 100644 index 000000000000..4b1d2c17c548 --- /dev/null +++ b/app/core/Engine/controllers/accounts-controller/index.ts @@ -0,0 +1,36 @@ +import { + AccountsController, + type AccountsControllerMessenger, + type AccountsControllerState, +} from '@metamask/accounts-controller'; +import type { ControllerInitFunction } from '../../types'; +import { logAccountsControllerCreation } from './utils'; +import { defaultAccountsControllerState } from './constants'; + +// Export constants +export * from './constants'; + +/** + * Initialize the AccountsController. + * + * @param request - The request object. + * @returns The AccountsController. + */ +export const accountsControllerInit: ControllerInitFunction< + AccountsController, + AccountsControllerMessenger +> = (request) => { + const { controllerMessenger, persistedState } = request; + + const accountControllerState = (persistedState.AccountsController ?? + defaultAccountsControllerState) as AccountsControllerState; + + logAccountsControllerCreation(accountControllerState); + + const controller = new AccountsController({ + messenger: controllerMessenger, + state: accountControllerState, + }); + + return { controller }; +}; diff --git a/app/core/Engine/controllers/AccountsController/logger.test.ts b/app/core/Engine/controllers/accounts-controller/utils.test.ts similarity index 91% rename from app/core/Engine/controllers/AccountsController/logger.test.ts rename to app/core/Engine/controllers/accounts-controller/utils.test.ts index bdc58f5a83b0..0d97ad1ac2f6 100644 --- a/app/core/Engine/controllers/AccountsController/logger.test.ts +++ b/app/core/Engine/controllers/accounts-controller/utils.test.ts @@ -1,6 +1,6 @@ import Logger from '../../../../util/Logger'; -import { logAccountsControllerCreation } from './logger'; -import { defaultAccountsControllerState } from './utils'; +import { logAccountsControllerCreation } from './utils'; +import { defaultAccountsControllerState } from './constants'; import { MOCK_ACCOUNTS_CONTROLLER_STATE } from '../../../../util/test/accountsControllerTestUtils'; jest.mock('../../../../util/Logger'); diff --git a/app/core/Engine/controllers/AccountsController/logger.ts b/app/core/Engine/controllers/accounts-controller/utils.ts similarity index 84% rename from app/core/Engine/controllers/AccountsController/logger.ts rename to app/core/Engine/controllers/accounts-controller/utils.ts index 381d8e3c7a30..c5e1ad9240c9 100644 --- a/app/core/Engine/controllers/AccountsController/logger.ts +++ b/app/core/Engine/controllers/accounts-controller/utils.ts @@ -1,9 +1,9 @@ import { AccountsControllerState } from '@metamask/accounts-controller'; import Logger from '../../../../util/Logger'; -import { defaultAccountsControllerState } from './utils'; +import { defaultAccountsControllerState } from './constants'; export function logAccountsControllerCreation( - initialState?: AccountsControllerState, + initialState?: Partial<AccountsControllerState>, ) { if (!initialState) { Logger.log('Creating AccountsController with default state', { diff --git a/app/core/Engine/controllers/identity/calculate-scrypt-key.test.ts b/app/core/Engine/controllers/identity/calculate-scrypt-key.test.ts new file mode 100644 index 000000000000..1ca97655480e --- /dev/null +++ b/app/core/Engine/controllers/identity/calculate-scrypt-key.test.ts @@ -0,0 +1,136 @@ +import { calculateScryptKey, generateKeyHash } from './calculate-scrypt-key'; +import storageWrapper from '../../../../store/storage-wrapper'; +import { scrypt } from 'react-native-fast-crypto'; +import Logger from '../../../../util/Logger'; + +// we are using this node import for testing purposes +// eslint-disable-next-line import/no-nodejs-modules +import mockCrypto from 'crypto'; +jest.mock('react-native-quick-crypto', () => ({ + createHash: (algorithm: string) => mockCrypto.createHash(algorithm), +})); + +jest.mock('../../../../store/storage-wrapper'); +jest.mock('react-native-fast-crypto', () => ({ + scrypt: jest.fn(), +})); + +describe('calculateScryptKey', () => { + const arrangeInputs = () => { + const passwd = new Uint8Array([1, 2, 3, 4]); + const salt = new Uint8Array([5, 6, 7, 8]); + const N = 16384; + const r = 8; + const p = 1; + const size = 64; + return { + passwd, + salt, + N, + r, + p, + size, + }; + }; + + const arrangeMocks = () => { + const mockGetItem = jest.mocked(storageWrapper.getItem); + const mockSetItem = jest.mocked(storageWrapper.setItem); + + const mockScryptResult = new Uint8Array([1, 3, 3, 7]); + const mockScrypt = jest.mocked(scrypt).mockResolvedValue(mockScryptResult); + return { mockGetItem, mockSetItem, mockScrypt, mockScryptResult }; + }; + + const arrange = () => { + const inputs = arrangeInputs(); + const mocks = arrangeMocks(); + const cacheHash = generateKeyHash( + inputs.passwd, + inputs.salt, + inputs.N, + inputs.r, + inputs.p, + inputs.size, + ); + const cachedResultStr = Buffer.from(mocks.mockScryptResult).toString('hex'); + return { inputs, mocks, cacheHash, cachedResultStr }; + }; + + type Arrange = ReturnType<typeof arrange>; + const arrangeAct = async (overrides?: (a: Arrange) => void) => { + // Arrange + const arrangeData = arrange(); + overrides?.(arrangeData); + + // Act + const { inputs } = arrangeData; + await calculateScryptKey( + inputs.passwd, + inputs.salt, + inputs.N, + inputs.r, + inputs.p, + inputs.size, + ); + + return arrangeData; + }; + + beforeEach(() => { + jest.clearAllMocks(); + }); + + it('returns cached key if available', async () => { + const result = await arrangeAct(({ mocks, cacheHash, cachedResultStr }) => { + mocks.mockGetItem.mockResolvedValue( + JSON.stringify({ cacheHash, key: cachedResultStr }), + ); + }); + + // Assert - Storage called & new scrypt key not generated + expect(result.mocks.mockGetItem).toHaveBeenCalled(); + expect(result.mocks.mockScrypt).not.toHaveBeenCalled(); + }); + + it('computes new key if no cache is available', async () => { + const result = await arrangeAct(({ mocks }) => { + mocks.mockGetItem.mockResolvedValue(null); + }); + + // Assert - Script key generated + expect(result.mocks.mockGetItem).toHaveBeenCalled(); + expect(result.mocks.mockScrypt).toHaveBeenCalled(); + expect(result.mocks.mockSetItem).toHaveBeenCalled(); + }); + + it('logs error if fails to get cache', async () => { + const mockLogError = jest + .spyOn(Logger, 'error') + .mockImplementation(jest.fn()); + const result = await arrangeAct(({ mocks }) => { + mocks.mockGetItem.mockRejectedValue(new Error('TEST ERROR')); + }); + + // Assert - Scrypt key generated & Error Logged + expect(result.mocks.mockGetItem).toHaveBeenCalled(); + expect(result.mocks.mockScrypt).toHaveBeenCalled(); + expect(result.mocks.mockSetItem).toHaveBeenCalled(); + expect(mockLogError).toHaveBeenCalled(); + }); + + it('logs error if fails to set cache', async () => { + const mockLogError = jest + .spyOn(Logger, 'error') + .mockImplementation(jest.fn()); + const result = await arrangeAct(({ mocks }) => { + mocks.mockSetItem.mockRejectedValue(new Error('TEST ERROR')); + }); + + // Assert - Scrypt key generated & Error Logged + expect(result.mocks.mockGetItem).toHaveBeenCalled(); + expect(result.mocks.mockScrypt).toHaveBeenCalled(); + expect(result.mocks.mockSetItem).toHaveBeenCalled(); + expect(mockLogError).toHaveBeenCalled(); + }); +}); diff --git a/app/core/Engine/controllers/identity/calculate-scrypt-key.ts b/app/core/Engine/controllers/identity/calculate-scrypt-key.ts new file mode 100644 index 000000000000..5c58b423c73b --- /dev/null +++ b/app/core/Engine/controllers/identity/calculate-scrypt-key.ts @@ -0,0 +1,73 @@ +import Crypto from 'react-native-quick-crypto'; +import { scrypt } from 'react-native-fast-crypto'; +import storageWrapper from '../../../../store/storage-wrapper'; +import { SCRYPT_COMPUTED_KEY } from '../../../../constants/storage'; +import Logger from '../../../../util/Logger'; + +export const generateKeyHash = ( + passwd: Uint8Array, + salt: Uint8Array, + N: number, + r: number, + p: number, + size: number, +): string => { + const combined = new Uint8Array([ + ...passwd, + ...salt, + ...new Uint8Array([N, r, p, size]), + ]); + return Crypto.createHash('sha256').update(combined).digest('hex'); +}; + +export async function calculateScryptKey( + passwd: Uint8Array, + salt: Uint8Array, + N: number, + r: number, + p: number, + size: number, +): Promise<Uint8Array> { + const generateNewKey = (): string => + generateKeyHash(passwd, salt, N, r, p, size); + + // Get persisted key + try { + const persistedKey: string | null = await storageWrapper.getItem( + SCRYPT_COMPUTED_KEY, + ); + const data: { cacheHash: string; key: string } | null = persistedKey + ? JSON.parse(persistedKey) + : null; + const newKeyHash = generateNewKey(); + if (data?.cacheHash === newKeyHash) { + return Uint8Array.from(Buffer.from(data.key, 'hex')); + } + } catch (err) { + const errorMessage = err instanceof Error ? err.message : String(err); + Logger.error( + new Error('calculateScryptKey - Unable to get cached scrypt key'), + errorMessage, + ); + } + + const result = await scrypt(passwd, salt, N, r, p, size); + + // Set Persisted Key + try { + const newKeyHash = generateNewKey(); + const resultStr = Buffer.from(result).toString('hex'); + await storageWrapper.setItem( + SCRYPT_COMPUTED_KEY, + JSON.stringify({ cacheHash: newKeyHash, key: resultStr }), + ); + } catch (err) { + const errorMessage = err instanceof Error ? err.message : String(err); + Logger.error( + new Error('calculateScryptKey - Unable to set cached scrypt key'), + errorMessage, + ); + } + + return result; +} diff --git a/app/core/Engine/controllers/notifications/create-notification-services-controller.test.ts b/app/core/Engine/controllers/notifications/create-notification-services-controller.test.ts new file mode 100644 index 000000000000..3cc62d38f53c --- /dev/null +++ b/app/core/Engine/controllers/notifications/create-notification-services-controller.test.ts @@ -0,0 +1,88 @@ +import { + NotificationServicesControllerMessenger, + NotificationServicesControllerState, + Controller as NotificationServicesController, + defaultState, +} from '@metamask/notification-services-controller/notification-services'; +import { ExtendedControllerMessenger } from '../../../ExtendedControllerMessenger'; +import { createNotificationServicesController } from './create-notification-services-controller'; + +jest.mock('@metamask/notification-services-controller/notification-services'); + +describe('Notification Services Controller', () => { + beforeEach(() => jest.resetAllMocks()); + + const arrange = () => { + const globalMessenger = new ExtendedControllerMessenger(); + const messenger: NotificationServicesControllerMessenger = + globalMessenger.getRestricted({ + name: 'NotificationServicesController', + allowedActions: [ + // Keyring Actions + 'KeyringController:getState', + 'KeyringController:getAccounts', + // Auth Actions + 'AuthenticationController:getBearerToken', + 'AuthenticationController:isSignedIn', + 'AuthenticationController:performSignIn', + // Storage Actions + 'UserStorageController:getStorageKey', + 'UserStorageController:performGetStorage', + 'UserStorageController:performSetStorage', + // Push Actions + 'NotificationServicesPushController:enablePushNotifications', + 'NotificationServicesPushController:disablePushNotifications', + 'NotificationServicesPushController:updateTriggerPushNotifications', + 'NotificationServicesPushController:subscribeToPushNotifications', + ], + allowedEvents: [ + // Keyring Events + 'KeyringController:unlock', + 'KeyringController:lock', + 'KeyringController:stateChange', + // Push Events + 'NotificationServicesPushController:onNewNotifications', + 'NotificationServicesPushController:stateChange', + ], + }); + + const mockConstructor = jest.spyOn( + NotificationServicesController.prototype, + // @ts-expect-error - this is not something you should be able to call, but this is a mock + 'constructor', + ); + + const assertGetConstructorCall = () => + mockConstructor.mock.calls[0][0] as unknown as { + state: NotificationServicesControllerState; + }; + + return { + globalMessenger, + messenger, + mockConstructor, + assertGetConstructorCall, + }; + }; + + it('returns controller instance', () => { + const { messenger } = arrange(); + const controller = createNotificationServicesController({ messenger }); + expect(controller).toBeInstanceOf(NotificationServicesController); + }); + + it('can pass undefined as initial state', () => { + const { messenger, assertGetConstructorCall } = arrange(); + createNotificationServicesController({ messenger }); + const constructorParams = assertGetConstructorCall(); + expect(constructorParams?.state).toBe(undefined); + }); + + it('uses initial state that is provided', () => { + const { messenger, assertGetConstructorCall } = arrange(); + const state = { ...defaultState, isFeatureAnnouncementsEnabled: true }; + createNotificationServicesController({ messenger, initialState: state }); + const constructorParams = assertGetConstructorCall(); + expect(constructorParams?.state).toEqual(state); + }); +}); diff --git a/app/core/Engine/controllers/notifications/create-notification-services-controller.ts b/app/core/Engine/controllers/notifications/create-notification-services-controller.ts new file mode 100644 index 000000000000..fb7f12c7afca --- /dev/null +++ b/app/core/Engine/controllers/notifications/create-notification-services-controller.ts @@ -0,0 +1,23 @@ +import { + NotificationServicesControllerMessenger, + NotificationServicesControllerState, + Controller as NotificationServicesController, +} from '@metamask/notification-services-controller/notification-services'; + +export const createNotificationServicesController = (props: { + messenger: NotificationServicesControllerMessenger; + initialState?: Partial<NotificationServicesControllerState>; +}): NotificationServicesController => { + const notificationServicesController = new NotificationServicesController({ + messenger: props.messenger, + state: props.initialState, + env: { + featureAnnouncements: { + platform: 'mobile', + accessToken: process.env.FEATURES_ANNOUNCEMENTS_ACCESS_TOKEN as string, + spaceId: process.env.FEATURES_ANNOUNCEMENTS_SPACE_ID as string, + }, + }, + }); + return notificationServicesController; +}; diff --git a/app/core/Engine/controllers/notifications/create-notification-services-push-controller.test.ts b/app/core/Engine/controllers/notifications/create-notification-services-push-controller.test.ts new file mode 100644 index 000000000000..24b4a5f3d3fa --- /dev/null +++ b/app/core/Engine/controllers/notifications/create-notification-services-push-controller.test.ts @@ -0,0 +1,130 @@ +import { waitFor } from '@testing-library/react-native'; +import { + NotificationServicesPushControllerMessenger, + NotificationServicesPushControllerState, + defaultState, + Controller as NotificationServicesPushController, +} from '@metamask/notification-services-controller/push-services'; +import { ExtendedControllerMessenger } from '../../../ExtendedControllerMessenger'; +import { createNotificationServicesPushController } from './create-notification-services-push-controller'; +// eslint-disable-next-line import/no-namespace +import * as PushUtilsModule from './push-utils'; + +jest.mock('@metamask/notification-services-controller/push-services'); + +describe('Notification Services Controller', () => { + beforeEach(() => jest.resetAllMocks()); + + const arrangeFirebaseMocks = () => { + const mockCreateRegToken = jest.spyOn(PushUtilsModule, 'createRegToken'); + const mockDeleteRegToken = jest.spyOn(PushUtilsModule, 'deleteRegToken'); + const mockCreateSubscribeToPushNotifications = jest.spyOn( + PushUtilsModule, + 'createSubscribeToPushNotifications', + ); + const mockIsPushNotificationsEnabled = jest + .spyOn(PushUtilsModule, 'isPushNotificationsEnabled') + .mockResolvedValue(true); + + return { + mockCreateRegToken, + mockDeleteRegToken, + mockCreateSubscribeToPushNotifications, + mockIsPushNotificationsEnabled, + }; + }; + + const arrange = () => { + const globalMessenger = new ExtendedControllerMessenger(); + const messenger: NotificationServicesPushControllerMessenger = + globalMessenger.getRestricted({ + name: 'NotificationServicesPushController', + allowedActions: ['AuthenticationController:getBearerToken'], + allowedEvents: [], + }); + + const mockConstructor = jest.spyOn( + NotificationServicesPushController.prototype, + // @ts-expect-error - this is not something you should be able to call, but this is a mock + 'constructor', + ); + + const assertGetConstructorCall = () => + mockConstructor.mock.calls[0][0] as unknown as { + state: NotificationServicesPushControllerState; + }; + + const mockDisablePushNotifications = jest + .spyOn( + NotificationServicesPushController.prototype, + 'disablePushNotifications', + ) + .mockResolvedValue(); + + // Redefine .state get calls + Object.defineProperty( + NotificationServicesPushController.prototype, + 'state', + { + value: { + isPushEnabled: true, + }, + configurable: true, // Make it configurable so it can be redefined later if needed + }, + ); + + return { + globalMessenger, + messenger, + mockConstructor, + assertGetConstructorCall, + mockDisablePushNotifications, + ...arrangeFirebaseMocks(), + }; + }; + + it('returns controller instance', () => { + const { messenger } = arrange(); + const controller = createNotificationServicesPushController({ messenger }); + expect(controller).toBeInstanceOf(NotificationServicesPushController); + }); + + it('uses default state if not state provided', () => { + const { messenger, assertGetConstructorCall } = arrange(); + createNotificationServicesPushController({ messenger }); + const constructorParams = assertGetConstructorCall(); + expect(constructorParams?.state).toEqual(defaultState); + }); + + it('uses initial state that is provided', () => { + const { messenger, assertGetConstructorCall } = arrange(); + const state: NotificationServicesPushControllerState = { + ...defaultState, + fcmToken: 'TOKEN', + }; + createNotificationServicesPushController({ + messenger, + initialState: state, + }); + const constructorParams = assertGetConstructorCall(); + expect(constructorParams?.state).toEqual(state); + }); + + it('runs push notification side effect to disable the controller if the mobile device has not enabled push notifications', async () => { + // Arrange + const { + messenger, + mockIsPushNotificationsEnabled, + mockDisablePushNotifications, + } = arrange(); + mockIsPushNotificationsEnabled.mockResolvedValue(false); + + // Act + createNotificationServicesPushController({ messenger }); + + // Assert - push notifications have been disabled + await waitFor(() => { + expect(mockDisablePushNotifications).toHaveBeenCalled(); + }); + }); +}); diff --git a/app/core/Engine/controllers/notifications/create-notification-services-push-controller.ts b/app/core/Engine/controllers/notifications/create-notification-services-push-controller.ts new file mode 100644 index 000000000000..6c5701b9837e --- /dev/null +++ b/app/core/Engine/controllers/notifications/create-notification-services-push-controller.ts @@ -0,0 +1,50 @@ +import { + NotificationServicesPushControllerMessenger, + NotificationServicesPushControllerState, + defaultState, + Controller as NotificationServicesPushController, +} from '@metamask/notification-services-controller/push-services'; +import Logger from '../../../../util/Logger'; +import { + createRegToken, + createSubscribeToPushNotifications, + deleteRegToken, + isPushNotificationsEnabled, +} from './push-utils'; +import { isNotificationsFeatureEnabled } from '../../../../util/notifications'; + +export const createNotificationServicesPushController = (props: { + messenger: NotificationServicesPushControllerMessenger; + initialState?: Partial<NotificationServicesPushControllerState>; +}) => { + const notificationServicesPushController = + new NotificationServicesPushController({ + messenger: props.messenger, + state: { ...defaultState, ...props.initialState }, + config: { + platform: 'mobile', + isPushFeatureEnabled: isNotificationsFeatureEnabled(), + pushService: { + createRegToken, + deleteRegToken, + subscribeToPushNotifications: createSubscribeToPushNotifications(), + }, + }, + }); + + // Push Notification Side Effect - ensure permissions have been set + // We only need to switch push notifications off if it is enabled, but the system/device has it off + if (notificationServicesPushController.state.isPushEnabled) { + isPushNotificationsEnabled().then((isEnabled) => { + if (isEnabled === false) { + notificationServicesPushController + .disablePushNotifications() + .catch((error) => { + Logger.error(error); + }); + } + }); + } + + return notificationServicesPushController; +}; diff --git a/app/core/Engine/controllers/notifications/create-push-message.test.ts b/app/core/Engine/controllers/notifications/create-push-message.test.ts new file mode 100644 index 000000000000..dd59de5ae728 --- /dev/null +++ b/app/core/Engine/controllers/notifications/create-push-message.test.ts @@ -0,0 +1,177 @@ +import { processNotification } from '@metamask/notification-services-controller/notification-services'; +import { + createMockNotificationERC1155Received, + createMockNotificationERC1155Sent, + createMockNotificationERC20Received, + createMockNotificationERC20Sent, + createMockNotificationERC721Received, + createMockNotificationERC721Sent, + createMockNotificationEthReceived, + createMockNotificationEthSent, + createMockNotificationLidoReadyToBeWithdrawn, + createMockNotificationLidoStakeCompleted, + createMockNotificationLidoWithdrawalCompleted, + createMockNotificationLidoWithdrawalRequested, + createMockNotificationMetaMaskSwapsCompleted, + createMockNotificationRocketPoolStakeCompleted, + createMockNotificationRocketPoolUnStakeCompleted, +} from '@metamask/notification-services-controller/notification-services/mocks'; +import { createNotificationMessage } from './create-push-message'; + +describe('notification-message tests', () => { + test('displays erc20 sent notification', () => { + const notification = processNotification(createMockNotificationERC20Sent()); + const result = createNotificationMessage(notification); + + expect(result?.title).toBe('Funds sent'); + expect(result?.description).toContain('You successfully sent 4.96K USDC'); + }); + + test('displays erc20 received notification', () => { + const notification = processNotification( + createMockNotificationERC20Received(), + ); + const result = createNotificationMessage(notification); + + expect(result?.title).toBe('Funds received'); + expect(result?.description).toContain('You received 8.38B SHIB'); + }); + + test('displays eth/native sent notification', () => { + const notification = processNotification(createMockNotificationEthSent()); + const result = createNotificationMessage(notification); + + expect(result?.title).toBe('Funds sent'); + expect(result?.description).toContain('You successfully sent 0.005 ETH'); + }); + + test('displays eth/native received notification', () => { + const notification = processNotification( + createMockNotificationEthReceived(), + ); + const result = createNotificationMessage(notification); + + expect(result?.title).toBe('Funds received'); + expect(result?.description).toContain('You received 808 ETH'); + }); + + test('displays metamask swap completed notification', () => { + const notification = processNotification( + createMockNotificationMetaMaskSwapsCompleted(), + ); + const result = createNotificationMessage(notification); + + expect(result?.title).toBe('Swap completed'); + expect(result?.description).toContain('Your MetaMask Swap was successful'); + }); + + test('displays erc721 sent notification', () => { + const notification = processNotification( + createMockNotificationERC721Sent(), + ); + const result = createNotificationMessage(notification); + + expect(result?.title).toBe('NFT sent'); + expect(result?.description).toContain('You have successfully sent an NFT'); + }); + + test('displays erc721 received notification', () => { + const notification = processNotification( + createMockNotificationERC721Received(), + ); + const result = createNotificationMessage(notification); + + expect(result?.title).toBe('NFT received'); + expect(result?.description).toContain('You received new NFTs'); + }); + + test('displays erc1155 sent notification', () => { + const notification = processNotification( + createMockNotificationERC1155Sent(), + ); + const result = createNotificationMessage(notification); + + expect(result?.title).toBe('NFT sent'); + expect(result?.description).toContain('You have successfully sent an NFT'); + }); + + test('displays erc1155 received notification', () => { + const notification = processNotification( + createMockNotificationERC1155Received(), + ); + const result = createNotificationMessage(notification); + + expect(result?.title).toBe('NFT received'); + expect(result?.description).toContain('You received new NFTs'); + }); + + test('displays rocketpool stake completed notification', () => { + const notification = processNotification( + createMockNotificationRocketPoolStakeCompleted(), + ); + const result = createNotificationMessage(notification); + + expect(result?.title).toBe('Stake complete'); + expect(result?.description).toContain( + 'Your RocketPool stake was successful', + ); + }); + + test('displays rocketpool unstake completed notification', () => { + const notification = processNotification( + createMockNotificationRocketPoolUnStakeCompleted(), + ); + const result = createNotificationMessage(notification); + + expect(result?.title).toBe('Unstake complete'); + expect(result?.description).toContain( + 'Your RocketPool unstake was successful', + ); + }); + + test('displays lido stake completed notification', () => { + const notification = processNotification( + createMockNotificationLidoStakeCompleted(), + ); + const result = createNotificationMessage(notification); + + expect(result?.title).toBe('Stake complete'); + expect(result?.description).toContain('Your Lido stake was successful'); + }); + + test('displays lido stake ready to be withdrawn notification', () => { + const notification = processNotification( + createMockNotificationLidoReadyToBeWithdrawn(), + ); + const result = createNotificationMessage(notification); + + expect(result?.title).toBe('Stake ready for withdrawal'); + expect(result?.description).toContain( + 'Your Lido stake is now ready to be withdrawn', + ); + }); + + test('displays lido withdrawal requested notification', () => { + const notification = processNotification( + createMockNotificationLidoWithdrawalRequested(), + ); + const result = createNotificationMessage(notification); + + expect(result?.title).toBe('Withdrawal requested'); + expect(result?.description).toContain( + 'Your Lido withdrawal request was submitted', + ); + }); + + test('displays lido withdrawal completed notification', () => { + const notification = processNotification( + createMockNotificationLidoWithdrawalCompleted(), + ); + const result = createNotificationMessage(notification); + + expect(result?.title).toBe('Withdrawal completed'); + expect(result?.description).toContain( + 'Your Lido withdrawal was successful', + ); + }); +}); diff --git a/app/core/Engine/controllers/notifications/create-push-message.ts b/app/core/Engine/controllers/notifications/create-push-message.ts new file mode 100644 index 000000000000..d157692699dd --- /dev/null +++ b/app/core/Engine/controllers/notifications/create-push-message.ts @@ -0,0 +1,97 @@ +import { + type TranslationKeys, + createOnChainPushNotificationMessage, +} from '@metamask/notification-services-controller/push-services'; +import type { INotification } from '@metamask/notification-services-controller/notification-services'; +import { strings } from '../../../../../locales/i18n'; +import type Translations from '../../../../../locales/languages/en.json'; + +type NotificationTranslations = (typeof Translations)['notifications']; +type FlattenToString<TObj> = { + [K in keyof TObj]: TObj[K] extends string + ? `${K & string}` + : `${K & string}.${FlattenToString<TObj[K]>}`; +}[keyof TObj]; + +type NotificationStrings = + `notifications.${FlattenToString<NotificationTranslations>}`; + +const t = (name: NotificationStrings, params?: object) => + strings(name, params) ?? ''; + +const translations: TranslationKeys = { + pushPlatformNotificationsFundsSentTitle: () => + t('notifications.push_notification_content.funds_sent_title'), + pushPlatformNotificationsFundsSentDescriptionDefault: () => + t('notifications.push_notification_content.funds_sent_default_description'), + pushPlatformNotificationsFundsSentDescription: (amount, symbol) => + t('notifications.push_notification_content.funds_sent_description', { + amount, + symbol, + }), + pushPlatformNotificationsFundsReceivedTitle: () => + t('notifications.push_notification_content.funds_received_title'), + pushPlatformNotificationsFundsReceivedDescriptionDefault: () => + t( + 'notifications.push_notification_content.funds_received_default_description', + ), + pushPlatformNotificationsFundsReceivedDescription: (amount, symbol) => + t('notifications.push_notification_content.funds_received_description', { + amount, + symbol, + }), + pushPlatformNotificationsSwapCompletedTitle: () => + t('notifications.metamask_swap_completed_title'), + pushPlatformNotificationsSwapCompletedDescription: () => + t( + 'notifications.push_notification_content.metamask_swap_completed_description', + ), + pushPlatformNotificationsNftSentTitle: () => + t('notifications.push_notification_content.nft_sent_title'), + pushPlatformNotificationsNftSentDescription: () => + t('notifications.push_notification_content.nft_sent_description'), + pushPlatformNotificationsNftReceivedTitle: () => + t('notifications.push_notification_content.nft_received_title'), + pushPlatformNotificationsNftReceivedDescription: () => + t('notifications.push_notification_content.nft_received_description'), + pushPlatformNotificationsStakingRocketpoolStakeCompletedTitle: () => + t('notifications.rocketpool_stake_completed_title'), + pushPlatformNotificationsStakingRocketpoolStakeCompletedDescription: () => + t( + 'notifications.push_notification_content.rocketpool_stake_completed_description', + ), + pushPlatformNotificationsStakingRocketpoolUnstakeCompletedTitle: () => + t('notifications.rocketpool_unstake_completed_title'), + pushPlatformNotificationsStakingRocketpoolUnstakeCompletedDescription: () => + t( + 'notifications.push_notification_content.rocketpool_unstake_completed_description', + ), + pushPlatformNotificationsStakingLidoStakeCompletedTitle: () => + t('notifications.lido_stake_completed_title'), + pushPlatformNotificationsStakingLidoStakeCompletedDescription: () => + t( + 'notifications.push_notification_content.lido_stake_completed_description', + ), + pushPlatformNotificationsStakingLidoStakeReadyToBeWithdrawnTitle: () => + t('notifications.lido_stake_ready_to_be_withdrawn_title'), + pushPlatformNotificationsStakingLidoStakeReadyToBeWithdrawnDescription: () => + t( + 'notifications.push_notification_content.lido_stake_ready_to_be_withdrawn_description', + ), + pushPlatformNotificationsStakingLidoWithdrawalRequestedTitle: () => + t('notifications.lido_withdrawal_requested_title'), + pushPlatformNotificationsStakingLidoWithdrawalRequestedDescription: () => + t( + 'notifications.push_notification_content.lido_withdrawal_requested_description', + ), + pushPlatformNotificationsStakingLidoWithdrawalCompletedTitle: () => + t('notifications.lido_withdrawal_completed_title'), + pushPlatformNotificationsStakingLidoWithdrawalCompletedDescription: () => + t( + 'notifications.push_notification_content.lido_withdrawal_completed_description', + ), +}; + +export function createNotificationMessage(notification: INotification) { + return createOnChainPushNotificationMessage(notification, translations); +} diff --git a/app/core/Engine/controllers/notifications/notification-services-controller-init.test.ts b/app/core/Engine/controllers/notifications/notification-services-controller-init.test.ts new file mode 100644 index 000000000000..becade2ea129 --- /dev/null +++ b/app/core/Engine/controllers/notifications/notification-services-controller-init.test.ts @@ -0,0 +1,62 @@ +import { + NotificationServicesControllerMessenger, + defaultState, + Controller as NotificationServicesController, +} from '@metamask/notification-services-controller/notification-services'; +import Logger from '../../../../util/Logger'; +// eslint-disable-next-line import/no-namespace +import * as createNotificationServicesControllerModule from './create-notification-services-controller'; +import { notificationServicesControllerInit } from './notification-services-controller-init'; + +describe('notificationServicesControllerInit', () => { + const arrangeMocks = () => { + const mockLog = jest.spyOn(Logger, 'log'); + const mockCreateController = jest + .spyOn( + createNotificationServicesControllerModule, + 'createNotificationServicesController', + ) + .mockReturnValue({} as NotificationServicesController); + const fakeMessenger = {} as NotificationServicesControllerMessenger; + return { + mockLog, + mockCreateController, + fakeMessenger, + }; + }; + + it('logs and returns controller with default state', () => { + const { fakeMessenger, mockCreateController, mockLog } = arrangeMocks(); + + notificationServicesControllerInit({ + controllerMessenger: fakeMessenger, + persistedState: { NotificationServicesController: undefined }, + getController: jest.fn(), + }); + + expect(mockCreateController).toHaveBeenCalled(); + expect(mockLog).toHaveBeenCalledWith( + 'Creating NotificationServicesController with default state', + { + defaultState, + }, + ); + }); + + it('logs and returns controller with initial state', () => { + const { fakeMessenger, mockCreateController, mockLog } = arrangeMocks(); + + notificationServicesControllerInit({ + controllerMessenger: fakeMessenger, + persistedState: { + NotificationServicesController: { isNotificationServicesEnabled: true }, + }, + getController: jest.fn(), + }); + + expect(mockCreateController).toHaveBeenCalled(); + expect(mockLog).toHaveBeenCalledWith( + 'Creating NotificationServicesController with initial state', + ); + }); +}); diff --git a/app/core/Engine/controllers/notifications/notification-services-controller-init.ts b/app/core/Engine/controllers/notifications/notification-services-controller-init.ts new file mode 100644 index 000000000000..0ec15137292f --- /dev/null +++ b/app/core/Engine/controllers/notifications/notification-services-controller-init.ts @@ -0,0 +1,40 @@ +import { + NotificationServicesControllerMessenger, + NotificationServicesControllerState, + Controller as NotificationServicesController, + defaultState, +} from '@metamask/notification-services-controller/notification-services'; +import { ControllerInitFunction } from '../../types'; +import Logger from '../../../../util/Logger'; +import { createNotificationServicesController } from './create-notification-services-controller'; + +const logControllerCreation = ( + initialState?: Partial<NotificationServicesControllerState>, +) => { + if (!initialState) { + Logger.log('Creating NotificationServicesController with default state', { + defaultState, + }); + } else { + Logger.log('Creating NotificationServicesController with initial state'); + } +}; + +export const notificationServicesControllerInit: ControllerInitFunction< + NotificationServicesController, + NotificationServicesControllerMessenger +> = (request) => { + const { controllerMessenger, persistedState } = request; + + const initialState = persistedState.NotificationServicesController; + logControllerCreation(initialState); + + const state = persistedState.NotificationServicesController ?? defaultState; + + const controller = createNotificationServicesController({ + messenger: controllerMessenger, + initialState: state, + }); + + return { controller }; +}; diff --git a/app/core/Engine/controllers/notifications/notification-services-push-controller-init.test.ts b/app/core/Engine/controllers/notifications/notification-services-push-controller-init.test.ts new file mode 100644 index 000000000000..e060fad1bf31 --- /dev/null +++ b/app/core/Engine/controllers/notifications/notification-services-push-controller-init.test.ts @@ -0,0 +1,62 @@ +import { + NotificationServicesPushControllerMessenger, + defaultState, + Controller as NotificationServicesPushController, +} from '@metamask/notification-services-controller/push-services'; +import Logger from '../../../../util/Logger'; +// eslint-disable-next-line import/no-namespace +import * as createNotificationServicesPushControllerModule from './create-notification-services-push-controller'; +import { notificationServicesPushControllerInit } from './notification-services-push-controller-init'; + +describe('notificationServicesControllerInit', () => { + const arrangeMocks = () => { + const mockLog = jest.spyOn(Logger, 'log'); + const mockCreateController = jest + .spyOn( + createNotificationServicesPushControllerModule, + 'createNotificationServicesPushController', + ) + .mockReturnValue({} as NotificationServicesPushController); + const fakeMessenger = {} as NotificationServicesPushControllerMessenger; + return { + mockLog, + mockCreateController, + fakeMessenger, + }; + }; + + it('logs and returns controller with default state', () => { + const { fakeMessenger, mockCreateController, mockLog } = arrangeMocks(); + + notificationServicesPushControllerInit({ + controllerMessenger: fakeMessenger, + persistedState: { NotificationServicesPushController: undefined }, + getController: jest.fn(), + }); + + expect(mockCreateController).toHaveBeenCalled(); + expect(mockLog).toHaveBeenCalledWith( + 'Creating NotificationServicesPushController with default state', + { + defaultState, + }, + ); + }); + + it('logs and returns controller with initial state', () => { + const { fakeMessenger, mockCreateController, mockLog } = arrangeMocks(); + + notificationServicesPushControllerInit({ + controllerMessenger: fakeMessenger, + persistedState: { + NotificationServicesPushController: { isPushEnabled: true }, + }, + getController: jest.fn(), + }); + + expect(mockCreateController).toHaveBeenCalled(); + expect(mockLog).toHaveBeenCalledWith( + 'Creating NotificationServicesPushController with initial state', + ); + }); +}); diff --git a/app/core/Engine/controllers/notifications/notification-services-push-controller-init.ts b/app/core/Engine/controllers/notifications/notification-services-push-controller-init.ts new file mode 100644 index 000000000000..c8524b4ae07a --- /dev/null +++ b/app/core/Engine/controllers/notifications/notification-services-push-controller-init.ts @@ -0,0 +1,46 @@ +import { + NotificationServicesPushControllerMessenger, + NotificationServicesPushControllerState, + Controller as NotificationServicesPushController, + defaultState, +} from '@metamask/notification-services-controller/push-services'; +import { ControllerInitFunction } from '../../types'; +import Logger from '../../../../util/Logger'; +import { createNotificationServicesPushController } from './create-notification-services-push-controller'; + +const logControllerCreation = ( + initialState?: Partial<NotificationServicesPushControllerState>, +) => { + if (!initialState) { + Logger.log( + 'Creating NotificationServicesPushController with default state', + { + defaultState, + }, + ); + } else { + Logger.log( + 'Creating NotificationServicesPushController with initial state', + ); + } +}; + +export const notificationServicesPushControllerInit: ControllerInitFunction< + NotificationServicesPushController, + NotificationServicesPushControllerMessenger +> = (request) => { + const { controllerMessenger, persistedState } = request; + + const initialState = persistedState.NotificationServicesPushController; + logControllerCreation(initialState); + + const state = + persistedState.NotificationServicesPushController ?? defaultState; + + const controller = createNotificationServicesPushController({ + messenger: controllerMessenger, + initialState: state, + }); + + return { controller }; +}; diff --git a/app/core/Engine/controllers/notifications/push-utils.ts b/app/core/Engine/controllers/notifications/push-utils.ts new file mode 100644 index 000000000000..33f8ebbc5442 --- /dev/null +++ b/app/core/Engine/controllers/notifications/push-utils.ts @@ -0,0 +1,25 @@ +import FCMService from '../../../../util/notifications/services/FCMService'; +import NotificationsService from '../../../../util/notifications/services/NotificationService'; +import { PressActionId } from '../../../../util/notifications'; +import { createNotificationMessage } from './create-push-message'; + +export const createRegToken = FCMService.createRegToken; +export const deleteRegToken = FCMService.deleteRegToken; + +export const createSubscribeToPushNotifications = () => async () => + FCMService.listenToPushNotificationsReceived(async (notification) => { + const notificationMessage = createNotificationMessage(notification); + if (!notificationMessage) { + return; + } + + await NotificationsService.displayNotification({ + id: notification.id, + pressActionId: PressActionId.OPEN_NOTIFICATIONS_VIEW, + title: notificationMessage.title, + body: notificationMessage.description, + data: notification, + }); + }); + +export const isPushNotificationsEnabled = FCMService.isPushNotificationsEnabled; diff --git a/app/core/Engine/controllers/RemoteFeatureFlagController/index.ts b/app/core/Engine/controllers/remote-feature-flag-controller/index.ts similarity index 70% rename from app/core/Engine/controllers/RemoteFeatureFlagController/index.ts rename to app/core/Engine/controllers/remote-feature-flag-controller/index.ts index 49a15d2409e8..a44bbdaefe6c 100644 --- a/app/core/Engine/controllers/RemoteFeatureFlagController/index.ts +++ b/app/core/Engine/controllers/remote-feature-flag-controller/index.ts @@ -1 +1,2 @@ export { createRemoteFeatureFlagController } from './utils'; +export * from './utils'; diff --git a/app/core/Engine/controllers/RemoteFeatureFlagController/types.ts b/app/core/Engine/controllers/remote-feature-flag-controller/types.ts similarity index 100% rename from app/core/Engine/controllers/RemoteFeatureFlagController/types.ts rename to app/core/Engine/controllers/remote-feature-flag-controller/types.ts diff --git a/app/core/Engine/controllers/RemoteFeatureFlagController/utils.test.ts b/app/core/Engine/controllers/remote-feature-flag-controller/utils.test.ts similarity index 93% rename from app/core/Engine/controllers/RemoteFeatureFlagController/utils.test.ts rename to app/core/Engine/controllers/remote-feature-flag-controller/utils.test.ts index 1fc344dd5868..a8a92c5bf949 100644 --- a/app/core/Engine/controllers/RemoteFeatureFlagController/utils.test.ts +++ b/app/core/Engine/controllers/remote-feature-flag-controller/utils.test.ts @@ -9,7 +9,9 @@ import { v4 as uuidv4 } from 'uuid'; const mockUpdateRemoteFeatureFlags = jest.fn().mockResolvedValue(undefined); jest.mock('@metamask/remote-feature-flag-controller', () => { - const originalModule = jest.requireActual('@metamask/remote-feature-flag-controller'); + const originalModule = jest.requireActual( + '@metamask/remote-feature-flag-controller', + ); return { ...originalModule, RemoteFeatureFlagController: jest.fn().mockImplementation((params) => ({ @@ -29,7 +31,6 @@ describe('RemoteFeatureFlagController utils', () => { }); describe('createRemoteFeatureFlagController', () => { - it('calls updateRemoteFeatureFlags when enabled', () => { createRemoteFeatureFlagController({ state: undefined, @@ -65,9 +66,8 @@ describe('RemoteFeatureFlagController utils', () => { // Ensure the constructor was called with fetchInterval expect(RemoteFeatureFlagController).toHaveBeenCalledWith( - expect.objectContaining({ fetchInterval }) + expect.objectContaining({ fetchInterval }), ); }); - }); }); diff --git a/app/core/Engine/controllers/RemoteFeatureFlagController/utils.ts b/app/core/Engine/controllers/remote-feature-flag-controller/utils.ts similarity index 100% rename from app/core/Engine/controllers/RemoteFeatureFlagController/utils.ts rename to app/core/Engine/controllers/remote-feature-flag-controller/utils.ts diff --git a/app/core/Engine/messengers/accounts-controller-messenger/index.ts b/app/core/Engine/messengers/accounts-controller-messenger/index.ts new file mode 100644 index 000000000000..8e38e4b43855 --- /dev/null +++ b/app/core/Engine/messengers/accounts-controller-messenger/index.ts @@ -0,0 +1,39 @@ +import { AccountsControllerMessenger } from '@metamask/accounts-controller'; +import { SnapControllerStateChangeEvent } from '../../controllers/SnapController/constants'; +import { BaseControllerMessenger } from '../../types'; +import { + SnapKeyringAccountAssetListUpdatedEvent, + SnapKeyringAccountBalancesUpdatedEvent, + SnapKeyringAccountTransactionsUpdatedEvent, +} from '../../../SnapKeyring/constants'; + +// Export the types +export * from './types'; + +/** + * Get the AccountsControllerMessenger for the AccountsController. + * + * @param baseControllerMessenger - The base controller messenger. + * @returns The AccountsControllerMessenger. + */ +export function getAccountsControllerMessenger( + baseControllerMessenger: BaseControllerMessenger, +): AccountsControllerMessenger { + return baseControllerMessenger.getRestricted({ + name: 'AccountsController', + allowedEvents: [ + 'KeyringController:accountRemoved', + 'KeyringController:stateChange', + SnapControllerStateChangeEvent, + SnapKeyringAccountAssetListUpdatedEvent, + SnapKeyringAccountBalancesUpdatedEvent, + SnapKeyringAccountTransactionsUpdatedEvent, + 'MultichainNetworkController:networkDidChange', + ], + allowedActions: [ + 'KeyringController:getAccounts', + 'KeyringController:getKeyringsByType', + 'KeyringController:getKeyringForAccount', + ], + }); +} diff --git a/app/core/Engine/messengers/accounts-controller-messenger/types.ts b/app/core/Engine/messengers/accounts-controller-messenger/types.ts new file mode 100644 index 000000000000..dced77fb080b --- /dev/null +++ b/app/core/Engine/messengers/accounts-controller-messenger/types.ts @@ -0,0 +1,24 @@ +import { + KeyringControllerAccountRemovedEvent, + KeyringControllerGetAccountsAction, + KeyringControllerGetKeyringForAccountAction, + KeyringControllerGetKeyringsByTypeAction, + KeyringControllerStateChangeEvent, +} from '@metamask/keyring-controller'; +import { SnapControllerStateChangeEvent } from '@metamask/snaps-controllers'; + +/** + * The actions that the AccountsControllerMessenger can use. + */ +export type AccountsControllerMessengerActions = + | KeyringControllerGetAccountsAction + | KeyringControllerGetKeyringsByTypeAction + | KeyringControllerGetKeyringForAccountAction; + +/** + * The events that the AccountsControllerMessenger can handle. + */ +export type AccountsControllerMessengerEvents = + | SnapControllerStateChangeEvent + | KeyringControllerAccountRemovedEvent + | KeyringControllerStateChangeEvent; diff --git a/app/core/Engine/messengers/index.ts b/app/core/Engine/messengers/index.ts new file mode 100644 index 000000000000..773735aa61ce --- /dev/null +++ b/app/core/Engine/messengers/index.ts @@ -0,0 +1,11 @@ +import { getAccountsControllerMessenger } from './accounts-controller-messenger'; +import type { ControllerMessengerByControllerName } from '../types'; + +/** + * The messengers for the controllers that have been. + */ +export const CONTROLLER_MESSENGERS: ControllerMessengerByControllerName = { + AccountsController: { + getMessenger: getAccountsControllerMessenger, + }, +} as const; diff --git a/app/core/Engine/messengers/notifications/notification-services-controller-messenger.test.ts b/app/core/Engine/messengers/notifications/notification-services-controller-messenger.test.ts new file mode 100644 index 000000000000..4413bf9a612d --- /dev/null +++ b/app/core/Engine/messengers/notifications/notification-services-controller-messenger.test.ts @@ -0,0 +1,46 @@ +import { BaseControllerMessenger } from '../../types'; +import { getNotificationServicesControllerMessenger } from './notification-services-controller-messenger'; +import { ExtendedControllerMessenger } from '../../../ExtendedControllerMessenger'; + +describe('getNotificationServicesControllerMessenger', () => { + const arrangeMocks = () => { + const baseMessenger: BaseControllerMessenger = + new ExtendedControllerMessenger(); + const mockGetRestricted = jest.spyOn(baseMessenger, 'getRestricted'); + return { baseMessenger, mockGetRestricted }; + }; + + it('returns a restricted messenger with the correct configuration', () => { + const { baseMessenger, mockGetRestricted } = arrangeMocks(); + + const restrictedMessenger = + getNotificationServicesControllerMessenger(baseMessenger); + + expect(mockGetRestricted).toHaveBeenCalledWith({ + name: 'NotificationServicesController', + allowedActions: [ + 'KeyringController:getState', + 'KeyringController:getAccounts', + 'AuthenticationController:getBearerToken', + 'AuthenticationController:isSignedIn', + 'AuthenticationController:performSignIn', + 'UserStorageController:getStorageKey', + 'UserStorageController:performGetStorage', + 'UserStorageController:performSetStorage', + 'NotificationServicesPushController:enablePushNotifications', + 'NotificationServicesPushController:disablePushNotifications', + 'NotificationServicesPushController:updateTriggerPushNotifications', + 'NotificationServicesPushController:subscribeToPushNotifications', + ], + allowedEvents: [ + 'KeyringController:stateChange', + 'KeyringController:lock', + 'KeyringController:unlock', + 'NotificationServicesPushController:onNewNotifications', + 'NotificationServicesPushController:stateChange', + ], + }); + + expect(restrictedMessenger).toBeDefined(); + }); +}); diff --git a/app/core/Engine/messengers/notifications/notification-services-controller-messenger.ts b/app/core/Engine/messengers/notifications/notification-services-controller-messenger.ts new file mode 100644 index 000000000000..1117c6898909 --- /dev/null +++ b/app/core/Engine/messengers/notifications/notification-services-controller-messenger.ts @@ -0,0 +1,37 @@ +import type { NotificationServicesControllerMessenger } from '@metamask/notification-services-controller/notification-services'; +import { BaseControllerMessenger } from '../../types'; + +export function getNotificationServicesControllerMessenger( + baseControllerMessenger: BaseControllerMessenger, +): NotificationServicesControllerMessenger { + return baseControllerMessenger.getRestricted({ + name: 'NotificationServicesController', + allowedActions: [ + // Keyring Controller Requests + 'KeyringController:getState', + 'KeyringController:getAccounts', + // Auth Controller Requests + 'AuthenticationController:getBearerToken', + 'AuthenticationController:isSignedIn', + 'AuthenticationController:performSignIn', + // User Storage Controller Requests + 'UserStorageController:getStorageKey', + 'UserStorageController:performGetStorage', + 'UserStorageController:performSetStorage', + // Push Notification Controller Requests + 'NotificationServicesPushController:enablePushNotifications', + 'NotificationServicesPushController:disablePushNotifications', + 'NotificationServicesPushController:updateTriggerPushNotifications', + 'NotificationServicesPushController:subscribeToPushNotifications', + ], + allowedEvents: [ + // Keyring Controller Events + 'KeyringController:stateChange', + 'KeyringController:lock', + 'KeyringController:unlock', + // Push Notification Controller Events + 'NotificationServicesPushController:onNewNotifications', + 'NotificationServicesPushController:stateChange', + ], + }); +} diff --git a/app/core/Engine/messengers/notifications/notification-services-push-controller-messenger.test.ts b/app/core/Engine/messengers/notifications/notification-services-push-controller-messenger.test.ts new file mode 100644 index 000000000000..35c60c9f82dc --- /dev/null +++ b/app/core/Engine/messengers/notifications/notification-services-push-controller-messenger.test.ts @@ -0,0 +1,27 @@ +import { BaseControllerMessenger } from '../../types'; +import { ExtendedControllerMessenger } from '../../../ExtendedControllerMessenger'; +import { getNotificationServicesPushControllerMessenger } from './notification-services-push-controller-messenger'; + +describe('getNotificationServicesControllerMessenger', () => { + const arrangeMocks = () => { + const baseMessenger: BaseControllerMessenger = + new ExtendedControllerMessenger(); + const mockGetRestricted = jest.spyOn(baseMessenger, 'getRestricted'); + return { baseMessenger, mockGetRestricted }; + }; + + it('returns a restricted messenger with the correct configuration', () => { + const { baseMessenger, mockGetRestricted } = arrangeMocks(); + + const restrictedMessenger = + getNotificationServicesPushControllerMessenger(baseMessenger); + + expect(mockGetRestricted).toHaveBeenCalledWith({ + name: 'NotificationServicesPushController', + allowedActions: ['AuthenticationController:getBearerToken'], + allowedEvents: [], + }); + + expect(restrictedMessenger).toBeDefined(); + }); +}); diff --git a/app/core/Engine/messengers/notifications/notification-services-push-controller-messenger.ts b/app/core/Engine/messengers/notifications/notification-services-push-controller-messenger.ts new file mode 100644 index 000000000000..836673d1ee7c --- /dev/null +++ b/app/core/Engine/messengers/notifications/notification-services-push-controller-messenger.ts @@ -0,0 +1,12 @@ +import type { NotificationServicesPushControllerMessenger } from '@metamask/notification-services-controller/push-services'; +import { BaseControllerMessenger } from '../../types'; + +export function getNotificationServicesPushControllerMessenger( + baseControllerMessenger: BaseControllerMessenger, +): NotificationServicesPushControllerMessenger { + return baseControllerMessenger.getRestricted({ + name: 'NotificationServicesPushController', + allowedActions: ['AuthenticationController:getBearerToken'], + allowedEvents: [], + }); +} diff --git a/app/core/Engine/types.ts b/app/core/Engine/types.ts index 647a38f7a7eb..46c1f6c8cb2d 100644 --- a/app/core/Engine/types.ts +++ b/app/core/Engine/types.ts @@ -42,6 +42,10 @@ import { RatesController, RatesControllerEvents, RatesControllerActions, + MultichainAssetsController, + MultichainAssetsControllerState, + MultichainAssetsControllerEvents, + MultichainAssetsControllerActions, ///: END:ONLY_INCLUDE_IF } from '@metamask/assets-controllers'; import { @@ -132,6 +136,10 @@ import { SnapControllerActions, JsonSnapsRegistry as SnapsRegistry, SnapsRegistryState, + SnapInterfaceControllerState, + SnapInterfaceControllerEvents, + SnapInterfaceControllerActions, + SnapInterfaceController, SnapsRegistryActions, SnapsRegistryEvents, } from '@metamask/snaps-controllers'; @@ -158,10 +166,19 @@ import { AuthenticationController, UserStorageController, } from '@metamask/profile-sync-controller'; -import { - NotificationServicesPushController, - NotificationServicesController, -} from '@metamask/notification-services-controller'; +import type { + Controller as NotificationServicesController, + Actions as NotificationServicesControllerMessengerActions, + Events as NotificationServicesControllerMessengerEvents, + NotificationServicesControllerState, +} from '@metamask/notification-services-controller/notification-services'; +import type { + Controller as NotificationServicesPushController, + Actions as NotificationServicesPushControllerActions, + Events as NotificationServicesPushControllerEvents, + NotificationServicesPushControllerState, +} from '@metamask/notification-services-controller/push-services'; + ///: END:ONLY_INCLUDE_IF import { AccountsController, @@ -180,7 +197,26 @@ import { RemoteFeatureFlagControllerActions, RemoteFeatureFlagControllerEvents, } from '@metamask/remote-feature-flag-controller/dist/remote-feature-flag-controller.cjs'; +import { + RestrictedMessenger, + ActionConstraint, + EventConstraint, +} from '@metamask/base-controller'; +import { + TokenSearchDiscoveryController, + TokenSearchDiscoveryControllerState, +} from '@metamask/token-search-discovery-controller'; +import { + TokenSearchDiscoveryControllerActions, + TokenSearchDiscoveryControllerEvents, +} from '@metamask/token-search-discovery-controller/dist/token-search-discovery-controller.cjs'; import { SnapKeyringEvents } from '@metamask/eth-snap-keyring'; +import { + MultichainNetworkController, + MultichainNetworkControllerActions, + MultichainNetworkControllerState, + MultichainNetworkControllerEvents, +} from '@metamask/multichain-network-controller'; /** * Controllers that area always instantiated @@ -234,14 +270,16 @@ type GlobalActions = | LoggingControllerActions ///: BEGIN:ONLY_INCLUDE_IF(preinstalled-snaps,external-snaps) | SnapsGlobalActions + | SnapInterfaceControllerActions | AuthenticationController.Actions | UserStorageController.Actions - | NotificationServicesController.Actions - | NotificationServicesPushController.Actions + | NotificationServicesControllerMessengerActions + | NotificationServicesPushControllerActions ///: END:ONLY_INCLUDE_IF ///: BEGIN:ONLY_INCLUDE_IF(keyring-snaps) | MultichainBalancesControllerActions | RatesControllerActions + | MultichainAssetsControllerActions ///: END:ONLY_INCLUDE_IF | AccountsControllerActions | PreferencesControllerActions @@ -254,7 +292,9 @@ type GlobalActions = | SelectedNetworkControllerActions | SmartTransactionsControllerActions | AssetsContractControllerActions - | RemoteFeatureFlagControllerActions; + | RemoteFeatureFlagControllerActions + | TokenSearchDiscoveryControllerActions + | MultichainNetworkControllerActions; type GlobalEvents = | ComposableControllerEvents<EngineState> @@ -270,14 +310,16 @@ type GlobalEvents = | PermissionControllerEvents ///: BEGIN:ONLY_INCLUDE_IF(preinstalled-snaps,external-snaps) | SnapsGlobalEvents + | SnapInterfaceControllerEvents | AuthenticationController.Events | UserStorageController.Events - | NotificationServicesController.Events - | NotificationServicesPushController.Events + | NotificationServicesControllerMessengerEvents + | NotificationServicesPushControllerEvents ///: END:ONLY_INCLUDE_IF ///: BEGIN:ONLY_INCLUDE_IF(keyring-snaps) | MultichainBalancesControllerEvents | RatesControllerEvents + | MultichainAssetsControllerEvents ///: END:ONLY_INCLUDE_IF | SignatureControllerEvents | LoggingControllerEvents @@ -293,7 +335,9 @@ type GlobalEvents = | SmartTransactionsControllerEvents | AssetsContractControllerEvents | RemoteFeatureFlagControllerEvents - | SnapKeyringEvents; + | TokenSearchDiscoveryControllerEvents + | SnapKeyringEvents + | MultichainNetworkControllerEvents; // TODO: Abstract this into controller utils for TransactionController export interface TransactionEventPayload { @@ -306,7 +350,7 @@ export interface TransactionEventPayload { * Type definition for the controller messenger used in the Engine. * It extends the base ControllerMessenger with global actions and events. */ -export type ControllerMessenger = ExtendedControllerMessenger< +export type BaseControllerMessenger = ExtendedControllerMessenger< GlobalActions, GlobalEvents >; @@ -343,6 +387,7 @@ export type Controllers = { TokenListController: TokenListController; TokenDetectionController: TokenDetectionController; TokenRatesController: TokenRatesController; + TokenSearchDiscoveryController: TokenSearchDiscoveryController; TokensController: TokensController; TransactionController: TransactionController; SmartTransactionsController: SmartTransactionsController; @@ -353,14 +398,17 @@ export type Controllers = { SubjectMetadataController: SubjectMetadataController; AuthenticationController: AuthenticationController.Controller; UserStorageController: UserStorageController.Controller; - NotificationServicesController: NotificationServicesController.Controller; - NotificationServicesPushController: NotificationServicesPushController.Controller; + NotificationServicesController: NotificationServicesController; + NotificationServicesPushController: NotificationServicesPushController; + SnapInterfaceController: SnapInterfaceController; ///: END:ONLY_INCLUDE_IF SwapsController: SwapsController; ///: BEGIN:ONLY_INCLUDE_IF(keyring-snaps) MultichainBalancesController: MultichainBalancesController; RatesController: RatesController; + MultichainAssetsController: MultichainAssetsController; ///: END:ONLY_INCLUDE_IF + MultichainNetworkController: MultichainNetworkController; }; /** @@ -387,6 +435,7 @@ export type EngineState = { PhishingController: PhishingControllerState; TokenBalancesController: TokenBalancesControllerState; TokenRatesController: TokenRatesControllerState; + TokenSearchDiscoveryController: TokenSearchDiscoveryControllerState; TransactionController: TransactionControllerState; SmartTransactionsController: SmartTransactionsControllerState; SwapsController: SwapsControllerState; @@ -398,8 +447,9 @@ export type EngineState = { SubjectMetadataController: SubjectMetadataControllerState; AuthenticationController: AuthenticationController.AuthenticationControllerState; UserStorageController: UserStorageController.UserStorageControllerState; - NotificationServicesController: NotificationServicesController.NotificationServicesControllerState; - NotificationServicesPushController: NotificationServicesPushController.NotificationServicesPushControllerState; + NotificationServicesController: NotificationServicesControllerState; + NotificationServicesPushController: NotificationServicesPushControllerState; + SnapInterfaceController: SnapInterfaceControllerState; ///: END:ONLY_INCLUDE_IF PermissionController: PermissionControllerState<Permissions>; ApprovalController: ApprovalControllerState; @@ -411,5 +461,127 @@ export type EngineState = { ///: BEGIN:ONLY_INCLUDE_IF(keyring-snaps) MultichainBalancesController: MultichainBalancesControllerState; RatesController: RatesControllerState; + MultichainAssetsController: MultichainAssetsControllerState; ///: END:ONLY_INCLUDE_IF + MultichainNetworkController: MultichainNetworkControllerState; +}; + +/** Controller names */ +export type ControllerName = keyof Controllers; + +/** + * Controller type + */ +export type Controller = Controllers[ControllerName]; + +/** Map of controllers by name. */ +export type ControllerByName = { + [Name in ControllerName]: Controllers[Name]; +}; + +/** + * A restricted version of the controller messenger + */ +export type BaseRestrictedControllerMessenger = RestrictedMessenger< + string, + ActionConstraint, + EventConstraint, + string, + string +>; + +/** + * Specify controllers to initialize. + */ +export type ControllersToInitialize = 'AccountsController'; + +/** + * Callback that returns a controller messenger for a specific controller. + */ +type ControllerMessengerCallback = ( + baseControllerMessenger: BaseControllerMessenger, +) => BaseRestrictedControllerMessenger; + +/** + * Persisted state for all controllers. + * e.g. `{ TransactionController: { transactions: [] } }`. + */ +type ControllerPersistedState = Partial<{ + [Name in Exclude< + ControllerName, + (typeof STATELESS_NON_CONTROLLER_NAMES)[number] + >]: Partial<ControllerByName[Name]['state']>; +}>; + +/** + * Map of controller messengers by controller name. + */ +export type ControllerMessengerByControllerName = { + [key in ControllersToInitialize]: { + getMessenger: ControllerMessengerCallback; + }; +}; + +/** + * Request to initialize and return a controller instance. + * Includes standard data and methods not coupled to any specific controller. + */ +// eslint-disable-next-line @typescript-eslint/consistent-type-definitions +export type ControllerInitRequest< + ControllerMessengerType extends BaseRestrictedControllerMessenger, +> = { + /** + * Controller messenger for the client. + * Used to generate controller for each controller. + */ + controllerMessenger: ControllerMessengerType; + + /** + * Retrieve a controller instance by name. + * Throws an error if the controller is not yet initialized. + * + * @param name - The name of the controller to retrieve. + */ + getController<Name extends ControllerName>( + name: Name, + ): ControllerByName[Name]; + + /** + * The full persisted state for all controllers. + * Includes controller name properties. + * e.g. `{ TransactionController: { transactions: [] } }`. + */ + persistedState: ControllerPersistedState; +}; + +/** + * Function to initialize a controller instance and return associated data. + */ +export type ControllerInitFunction< + ControllerType extends Controller, + ControllerMessengerType extends BaseRestrictedControllerMessenger, +> = (request: ControllerInitRequest<ControllerMessengerType>) => { + controller: ControllerType; +}; + +/** + * Map of controller init functions by controller name. + */ +type ControllerInitFunctionByControllerName = { + [Name in ControllersToInitialize]: ControllerInitFunction< + ControllerByName[Name], + ReturnType<ControllerMessengerByControllerName[Name]['getMessenger']> + >; +}; + +/** + * Function to initialize the controllers in the engine. + */ +export type InitModularizedControllersFunction = (request: { + controllerInitFunctions: ControllerInitFunctionByControllerName; + persistedState: ControllerPersistedState; + existingControllersByName?: Partial<ControllerByName>; + baseControllerMessenger: BaseControllerMessenger; +}) => { + controllersByName: ControllerByName; }; diff --git a/app/core/Engine/utils/index.ts b/app/core/Engine/utils/index.ts new file mode 100644 index 000000000000..0cc5c80ceed5 --- /dev/null +++ b/app/core/Engine/utils/index.ts @@ -0,0 +1,2 @@ +export * from './utils'; +export * from './logger'; diff --git a/app/core/Engine/utils/test-utils.ts b/app/core/Engine/utils/test-utils.ts new file mode 100644 index 000000000000..9bfe1ebf661a --- /dev/null +++ b/app/core/Engine/utils/test-utils.ts @@ -0,0 +1,39 @@ +import { + BaseRestrictedControllerMessenger, + ControllerInitRequest, + BaseControllerMessenger, + ControllerInitFunction, +} from '../types'; +import { + AccountsController, + AccountsControllerMessenger, +} from '@metamask/accounts-controller'; + +/** + * Build a mock for the ControllerInitRequest. + * + * @returns A mocked ControllerInitRequest. + */ +export function buildControllerInitRequestMock( + controllerMessenger: BaseControllerMessenger, +): jest.Mocked<ControllerInitRequest<BaseRestrictedControllerMessenger>> { + return { + getController: jest.fn(), + persistedState: {}, + controllerMessenger: + controllerMessenger as unknown as BaseRestrictedControllerMessenger, + }; +} + +export const mockControllerInitFunction: ControllerInitFunction< + AccountsController, + AccountsControllerMessenger +> = (request) => { + const { getController } = request; + + getController('NetworkController'); + + return { + controller: jest.fn() as unknown as AccountsController, + }; +}; diff --git a/app/core/Engine/utils/test/logger.test.ts b/app/core/Engine/utils/test/logger.test.ts index 0d43dfc2fd2c..7c6e50bdc9c0 100644 --- a/app/core/Engine/utils/test/logger.test.ts +++ b/app/core/Engine/utils/test/logger.test.ts @@ -22,7 +22,12 @@ describe('logEngineCreation', () => { it('logs empty state initialization with keyring backup', () => { logEngineCreation( {}, - { vault: 'test-vault', keyrings: [], isUnlocked: false }, + { + vault: 'test-vault', + keyrings: [], + isUnlocked: false, + keyringsMetadata: [], + }, ); expect(Logger.log).toHaveBeenCalledWith( @@ -61,6 +66,7 @@ describe('logEngineCreation', () => { vault: 'test-vault', keyrings: [], isUnlocked: false, + keyringsMetadata: [], }, }; @@ -88,6 +94,7 @@ describe('logEngineCreation', () => { vault: 'test-vault', keyrings: [], isUnlocked: false, + keyringsMetadata: [], }, }; @@ -95,6 +102,7 @@ describe('logEngineCreation', () => { vault: 'backup-vault', keyrings: [], isUnlocked: false, + keyringsMetadata: [], }; logEngineCreation(initialState, keyringBackup); diff --git a/app/core/Engine/utils/utils.test.ts b/app/core/Engine/utils/utils.test.ts new file mode 100644 index 000000000000..51f411ed921b --- /dev/null +++ b/app/core/Engine/utils/utils.test.ts @@ -0,0 +1,71 @@ +import { accountsControllerInit } from '../controllers/accounts-controller'; +import { getControllerOrThrow, initModularizedControllers } from './utils'; +import { ExtendedControllerMessenger } from '../../ExtendedControllerMessenger'; +import { NetworkController } from '@metamask/network-controller'; +import { mockControllerInitFunction } from './test-utils'; +import { AccountsController } from '@metamask/accounts-controller'; + +describe('initModularizedControllers', () => { + it('should initialize controllers', () => { + const controllers = initModularizedControllers({ + existingControllersByName: {}, + controllerInitFunctions: { + AccountsController: accountsControllerInit, + }, + persistedState: {}, + baseControllerMessenger: new ExtendedControllerMessenger(), + }); + + expect(controllers.controllersByName.AccountsController).toBeDefined(); + }); + + it('should throw when controller is not found', async () => { + expect(() => + initModularizedControllers({ + existingControllersByName: {}, + controllerInitFunctions: { + AccountsController: mockControllerInitFunction, + }, + persistedState: {}, + baseControllerMessenger: new ExtendedControllerMessenger(), + }), + ).toThrow( + 'Controller requested before it was initialized: NetworkController', + ); + }); + + it('should not throw when when existing controller is found', async () => { + expect(() => + initModularizedControllers({ + existingControllersByName: { + NetworkController: jest.fn() as unknown as NetworkController, + }, + controllerInitFunctions: { + AccountsController: mockControllerInitFunction, + }, + persistedState: {}, + baseControllerMessenger: new ExtendedControllerMessenger(), + }), + ).not.toThrow(); + }); +}); + +describe('getControllerOrThrow', () => { + it('should throw when controller is not found', () => { + expect(() => + getControllerOrThrow({ + controller: undefined, + name: 'AccountsController', + }), + ).toThrow(); + }); + + it('should not throw when controller is found', () => { + expect(() => + getControllerOrThrow({ + controller: jest.fn() as unknown as AccountsController, + name: 'AccountsController', + }), + ).not.toThrow(); + }); +}); diff --git a/app/core/Engine/utils/utils.ts b/app/core/Engine/utils/utils.ts new file mode 100644 index 000000000000..eb3e2c8940e7 --- /dev/null +++ b/app/core/Engine/utils/utils.ts @@ -0,0 +1,91 @@ +import { createProjectLogger } from '@metamask/utils'; +import type { + ControllerByName, + ControllerName, + ControllersToInitialize, + InitModularizedControllersFunction, +} from '../types'; +import { CONTROLLER_MESSENGERS } from '../messengers'; + +const log = createProjectLogger('controller-init'); + +/** + * Initializes the controllers in the engine in a modular way. + * + * @param options - Options bag. + * @param options.controllerInitFunctions - Array of init functions. + * @param options.initRequest - Base request used to initialize the controllers. + + * @returns The initialized controllers and associated data. + */ +export const initModularizedControllers: InitModularizedControllersFunction = ({ + controllerInitFunctions, + persistedState, + existingControllersByName, + baseControllerMessenger, +}) => { + log('Initializing controllers', Object.keys(controllerInitFunctions).length); + + // Used by other controllers to get dependent controllers + const getController = <Name extends ControllerName>( + name: Name, + ): ControllerByName[Name] => + getControllerOrThrow({ + controller: existingControllersByName?.[name], + name, + }); + + for (const [key, controllerInitFunction] of Object.entries( + controllerInitFunctions, + )) { + const controllerName = key as ControllersToInitialize; + + // Get the messenger for the controller + const messengerCallbacks = CONTROLLER_MESSENGERS[controllerName]; + const controllerMessenger = messengerCallbacks.getMessenger( + baseControllerMessenger, + ); + + // Initialize the controller + const { controller } = controllerInitFunction({ + persistedState, + getController, + controllerMessenger, + }); + + // Add the controller to the existing controllers by name + existingControllersByName = { + ...existingControllersByName, + [controllerName]: controller, + }; + + log('Initialized controller', controllerName); + } + + return { + controllersByName: existingControllersByName as ControllerByName, + }; +}; + +/** + * Gets a controller from the existing controllers by name. + * Throws an error if the controller is not found. + * + * @param options - Options containing the controller and name. + * @param options.controller - The controller to get. + * @param options.name - The name of the controller. + * @returns The controller. + */ +export function getControllerOrThrow<Name extends ControllerName>({ + controller, + name, +}: { + controller: Partial<ControllerByName>[Name]; + name: Name; +}): ControllerByName[Name] { + if (!controller) { + throw new Error(`Controller requested before it was initialized: ${name}`); + } + + return controller; +} diff --git a/app/core/EngineService/EngineService.test.ts b/app/core/EngineService/EngineService.test.ts index dd871055e6cd..4b6298ca64dc 100644 --- a/app/core/EngineService/EngineService.test.ts +++ b/app/core/EngineService/EngineService.test.ts @@ -77,7 +77,9 @@ jest.mock('../Engine', () => { UserStorageController: { subscribe: jest.fn() }, NotificationServicesController: { subscribe: jest.fn() }, SelectedNetworkController: { subscribe: jest.fn() }, + SnapInterfaceController: { subscribe: jest.fn() }, SignatureController: { subscribe: jest.fn() }, + TokenSearchDiscoveryController: { subscribe: jest.fn() }, MultichainBalancesController: { subscribe: jest.fn() }, RatesController: { subscribe: jest.fn() }, }, diff --git a/app/core/EngineService/EngineService.ts b/app/core/EngineService/EngineService.ts index cae00ab9c54b..1cc8c20a974f 100644 --- a/app/core/EngineService/EngineService.ts +++ b/app/core/EngineService/EngineService.ts @@ -138,6 +138,7 @@ export class EngineService { keyrings: [], vault: keyringState.vault, isUnlocked: false, + keyringsMetadata: [], }; Logger.log(`${LOG_TAG}: Initializing Engine from backup:`, { diff --git a/app/core/Multichain/constants.ts b/app/core/Multichain/constants.ts index 7855047a712a..511e0514ec2f 100644 --- a/app/core/Multichain/constants.ts +++ b/app/core/Multichain/constants.ts @@ -1,21 +1,20 @@ import { CaipChainId } from '@metamask/utils'; import { - isBtcMainnetAddress, - isBtcTestnetAddress, - isSolanaAddress, -} from './utils'; -import { MultichainNetworks } from '@metamask/assets-controllers'; -import { BtcAccountType, SolAccountType } from '@metamask/keyring-api'; + BtcAccountType, + BtcScope, + SolAccountType, + SolScope, +} from '@metamask/keyring-api'; import BTC from '../../images/bitcoin-logo.png'; import SOL from '../../images/solana-logo.png'; // Image imports for React Native rendering export const MULTICHAIN_TOKEN_IMAGES = { - [MultichainNetworks.Bitcoin]: BTC, - [MultichainNetworks.Solana]: SOL, - [MultichainNetworks.BitcoinTestnet]: BTC, - [MultichainNetworks.SolanaDevnet]: SOL, - [MultichainNetworks.SolanaTestnet]: SOL, + [BtcScope.Mainnet]: BTC, + [SolScope.Mainnet]: SOL, + [BtcScope.Testnet]: BTC, + [SolScope.Devnet]: SOL, + [SolScope.Testnet]: SOL, } as const; export interface ProviderConfigWithImageUrl { @@ -37,102 +36,14 @@ export type MultichainProviderConfig = ProviderConfigWithImageUrl & { }; export const MULTICHAIN_ACCOUNT_TYPE_TO_MAINNET = { - [BtcAccountType.P2wpkh]: MultichainNetworks.Bitcoin, - [SolAccountType.DataAccount]: MultichainNetworks.Solana, + [BtcAccountType.P2wpkh]: BtcScope.Mainnet, + [SolAccountType.DataAccount]: SolScope.Mainnet, } as const; export const MULTICHAIN_NETWORK_BLOCK_EXPLORER_URL_MAP = { - [MultichainNetworks.Bitcoin]: 'https://blockstream.info/address', - [MultichainNetworks.BitcoinTestnet]: - 'https://blockstream.info/testnet/address', - [MultichainNetworks.Solana]: 'https://explorer.solana.com/', - [MultichainNetworks.SolanaDevnet]: - 'https://explorer.solana.com/?cluster=devnet', - [MultichainNetworks.SolanaTestnet]: - 'https://explorer.solana.com/?cluster=testnet', + [BtcScope.Mainnet]: 'https://blockstream.info/address', + [BtcScope.Testnet]: 'https://blockstream.info/testnet/address', + [SolScope.Mainnet]: 'https://explorer.solana.com/', + [SolScope.Devnet]: 'https://explorer.solana.com/?cluster=devnet', + [SolScope.Testnet]: 'https://explorer.solana.com/?cluster=testnet', } as const; - -export const MULTICHAIN_PROVIDER_CONFIGS: Record< - CaipChainId, - MultichainProviderConfig -> = { - [MultichainNetworks.Bitcoin]: { - chainId: MultichainNetworks.Bitcoin, - rpcUrl: '', // not used - ticker: 'BTC', - nickname: 'Bitcoin', - id: 'btc-mainnet', - type: 'rpc', - decimal: 8, - rpcPrefs: { - blockExplorerUrl: - MULTICHAIN_NETWORK_BLOCK_EXPLORER_URL_MAP[MultichainNetworks.Bitcoin], - }, - isAddressCompatible: isBtcMainnetAddress, - }, - [MultichainNetworks.BitcoinTestnet]: { - chainId: MultichainNetworks.BitcoinTestnet, - rpcUrl: '', // not used - ticker: 'BTC', - nickname: 'Bitcoin (testnet)', - id: 'btc-testnet', - type: 'rpc', - decimal: 8, - rpcPrefs: { - blockExplorerUrl: - MULTICHAIN_NETWORK_BLOCK_EXPLORER_URL_MAP[ - MultichainNetworks.BitcoinTestnet - ], - }, - isAddressCompatible: isBtcTestnetAddress, - }, - /** - * Solana - */ - [MultichainNetworks.Solana]: { - chainId: MultichainNetworks.Solana, - rpcUrl: '', // not used - ticker: 'SOL', - nickname: 'Solana', - id: 'solana-mainnet', - type: 'rpc', - decimal: 9, - rpcPrefs: { - blockExplorerUrl: - MULTICHAIN_NETWORK_BLOCK_EXPLORER_URL_MAP[MultichainNetworks.Solana], - }, - isAddressCompatible: isSolanaAddress, - }, - [MultichainNetworks.SolanaDevnet]: { - chainId: MultichainNetworks.SolanaDevnet, - rpcUrl: '', // not used - ticker: 'SOL', - nickname: 'Solana (devnet)', - id: 'solana-devnet', - type: 'rpc', - decimal: 9, - rpcPrefs: { - blockExplorerUrl: - MULTICHAIN_NETWORK_BLOCK_EXPLORER_URL_MAP[ - MultichainNetworks.SolanaDevnet - ], - }, - isAddressCompatible: isSolanaAddress, - }, - [MultichainNetworks.SolanaTestnet]: { - chainId: MultichainNetworks.SolanaTestnet, - rpcUrl: '', // not used - ticker: 'SOL', - nickname: 'Solana (testnet)', - id: 'solana-testnet', - type: 'rpc', - decimal: 9, - rpcPrefs: { - blockExplorerUrl: - MULTICHAIN_NETWORK_BLOCK_EXPLORER_URL_MAP[ - MultichainNetworks.SolanaTestnet - ], - }, - isAddressCompatible: isSolanaAddress, - }, -}; diff --git a/app/core/Multichain/test/utils.test.ts b/app/core/Multichain/test/utils.test.ts index d6a9a9858a90..ef15db0f5c27 100644 --- a/app/core/Multichain/test/utils.test.ts +++ b/app/core/Multichain/test/utils.test.ts @@ -17,9 +17,13 @@ import { isBtcTestnetAddress, getFormattedAddressFromInternalAccount, isSolanaAccount, + nonEvmNetworkChainIdByAccountAddress, + lastSelectedAccountAddressInEvmNetwork, + lastSelectedAccountAddressByNonEvmNetworkChainId, } from '../utils'; import { KeyringTypes } from '@metamask/keyring-controller'; import { toChecksumHexAddress } from '@metamask/controller-utils'; +import Engine from '../../Engine'; // P2WPKH const MOCK_BTC_MAINNET_ADDRESS = 'bc1qwl8399fz829uqvqly9tcatgrgtwp3udnhxfq4k'; @@ -117,6 +121,16 @@ const mockSolAccount: InternalAccount = { scopes: [SolScope.Mainnet, SolScope.Testnet, SolScope.Devnet], }; +// Add this at the top of the file with other imports +jest.mock('../../Engine', () => ({ + context: { + AccountsController: { + getSelectedAccount: jest.fn(), + getSelectedMultichainAccount: jest.fn(), + }, + }, +})); + describe('MultiChain utils', () => { describe('isEthAccount', () => { it('returns true for EOA accounts', () => { @@ -213,4 +227,88 @@ describe('MultiChain utils', () => { expect(formatted).toBe(MOCK_BTC_MAINNET_ADDRESS); }); }); + + describe('nonEvmNetworkChainIdByAccountAddress', () => { + it('returns Solana mainnet chain id for Solana addresses', () => { + expect(nonEvmNetworkChainIdByAccountAddress(SOL_ADDRESS)).toBe( + SolScope.Mainnet, + ); + }); + + it('returns Bitcoin mainnet chain id for Bitcoin addresses', () => { + expect( + nonEvmNetworkChainIdByAccountAddress(MOCK_BTC_MAINNET_ADDRESS), + ).toBe(BtcScope.Mainnet); + expect( + nonEvmNetworkChainIdByAccountAddress(MOCK_BTC_MAINNET_ADDRESS_2), + ).toBe(BtcScope.Mainnet); + }); + }); + + describe('lastSelectedAccountAddressInEvmNetwork', () => { + beforeEach(() => { + jest.resetModules(); + }); + + it('returns the selected EVM account address', () => { + // @ts-expect-error - getSelectedAccount is mocked in the top of the file + Engine.context.AccountsController.getSelectedAccount.mockReturnValue({ + address: MOCK_ETH_ADDRESS, + }); + + expect(lastSelectedAccountAddressInEvmNetwork()).toBe(MOCK_ETH_ADDRESS); + }); + + it('returns undefined when no account is selected', () => { + // @ts-expect-error - getSelectedAccount is mocked in the top of the file + Engine.context.AccountsController.getSelectedAccount.mockReturnValue( + undefined, + ); + + expect(lastSelectedAccountAddressInEvmNetwork()).toBeUndefined(); + }); + }); + + describe('lastSelectedAccountAddressByNonEvmNetworkChainId', () => { + beforeEach(() => { + jest.resetModules(); + }); + + it('returns the selected non-EVM account address for Solana', () => { + // @ts-expect-error - getSelectedMultichainAccount is mocked in the top of the file + Engine.context.AccountsController.getSelectedMultichainAccount.mockImplementation( + (chainId: string) => + chainId === SolScope.Mainnet ? { address: SOL_ADDRESS } : undefined, + ); + + expect( + lastSelectedAccountAddressByNonEvmNetworkChainId(SolScope.Mainnet), + ).toBe(SOL_ADDRESS); + }); + + it('returns the selected non-EVM account address for Bitcoin', () => { + // @ts-expect-error - getSelectedMultichainAccount is mocked in the top of the file + Engine.context.AccountsController.getSelectedMultichainAccount.mockImplementation( + (chainId: string) => + chainId === BtcScope.Mainnet + ? { address: MOCK_BTC_MAINNET_ADDRESS } + : undefined, + ); + + expect( + lastSelectedAccountAddressByNonEvmNetworkChainId(BtcScope.Mainnet), + ).toBe(MOCK_BTC_MAINNET_ADDRESS); + }); + + it('returns undefined when no account is selected for the chain', () => { + // @ts-expect-error - getSelectedMultichainAccount is mocked in the top of the file + Engine.context.AccountsController.getSelectedMultichainAccount.mockReturnValue( + undefined, + ); + + expect( + lastSelectedAccountAddressByNonEvmNetworkChainId(SolScope.Mainnet), + ).toBeUndefined(); + }); + }); }); diff --git a/app/core/Multichain/utils.ts b/app/core/Multichain/utils.ts index f87f91b46ccc..51f2bc0ba243 100644 --- a/app/core/Multichain/utils.ts +++ b/app/core/Multichain/utils.ts @@ -2,14 +2,14 @@ import { toChecksumHexAddress } from '@metamask/controller-utils'; import { InternalAccount } from '@metamask/keyring-internal-api'; import { EthAccountType, - ///: BEGIN:ONLY_INCLUDE_IF(keyring-snaps) + SolScope, BtcAccountType, - ///: END:ONLY_INCLUDE_IF + BtcScope, } from '@metamask/keyring-api'; -///: BEGIN:ONLY_INCLUDE_IF(keyring-snaps) +import { isAddress as isSolanaAddress } from '@solana/addresses'; +import Engine from '../Engine'; +import { CaipChainId, Hex } from '@metamask/utils'; import { validate, Network } from 'bitcoin-address-validation'; -import { isAddress as isSolAddress } from '@solana/addresses'; -///: END:ONLY_INCLUDE_IF /** * Returns whether an account is an EVM account. @@ -39,7 +39,64 @@ export function getFormattedAddressFromInternalAccount( return account.address; } -///: BEGIN:ONLY_INCLUDE_IF(keyring-snaps) +/** + * Returns whether an address is a valid Solana address, specifically an account's. + * Derived addresses (like Program's) will return false. + * See: https://stackoverflow.com/questions/71200948/how-can-i-validate-a-solana-wallet-address-with-web3js + * + * @param address - The address to check. + * @returns `true` if the address is a valid Solana address, `false` otherwise. + */ +export function isSolanaAccount(account: InternalAccount): boolean { + return isSolanaAddress(account.address); +} + +/** + * Returns whether an address is a non-EVM address. + * + * @param address - The address to check. + * @returns `true` if the address is a non-EVM address, `false` otherwise. + */ +export function isNonEvmAddress(address: string): boolean { + return isSolanaAddress(address) || isBtcMainnetAddress(address); +} + +/** + * Returns the chain id of the non-EVM network based on the account address. + * + * @param address - The address to check. + * @returns The chain id of the non-EVM network. + */ +export function nonEvmNetworkChainIdByAccountAddress(address: string): string { + if (isSolanaAddress(address)) { + return SolScope.Mainnet; + } + return BtcScope.Mainnet; +} + +export function lastSelectedAccountAddressByNonEvmNetworkChainId( + chainId: CaipChainId, +): string | undefined { + const { AccountsController } = Engine.context; + // TODO: Add teh logic if there is none last selected account what to do + return AccountsController.getSelectedMultichainAccount(chainId)?.address; +} + +export function lastSelectedAccountAddressInEvmNetwork(): string | undefined { + const { AccountsController } = Engine.context; + // TODO: Add teh logic if there is none last selected account what to do + return AccountsController.getSelectedAccount()?.address; +} + +/** + * Returns whether a chain id is a non-EVM chain id. + * + * @param chainId - The chain id to check. + * @returns `true` if the chain id is a non-EVM chain id, `false` otherwise. + */ +export function isNonEvmChainId(chainId: string | Hex | CaipChainId): boolean { + return chainId === SolScope.Mainnet || chainId === BtcScope.Mainnet; +} /** * Returns whether an account is a Bitcoin account. @@ -78,28 +135,3 @@ export function isBtcMainnetAddress(address: string): boolean { export function isBtcTestnetAddress(address: string): boolean { return validate(address, Network.testnet); } - -/** - * Returns whether an account is a Solana account. - * Derived addresses (like Program's) will return false. - * See: https://stackoverflow.com/questions/71200948/how-can-i-validate-a-solana-wallet-address-with-web3js - * - * @param address - The address to check. - * @returns `true` if the address is a valid Solana address, `false` otherwise. - */ -export function isSolanaAccount(account: InternalAccount): boolean { - return isSolanaAddress(account.address); -} - -/** - * Returns whether an address is a valid Solana address, specifically an account's. - * Derived addresses (like Program's) will return false. - * See: https://stackoverflow.com/questions/71200948/how-can-i-validate-a-solana-wallet-address-with-web3js - * - * @param address - The address to check. - * @returns `true` if the address is a valid Solana address, `false` otherwise. - */ -export function isSolanaAddress(address: string): boolean { - return isSolAddress(address); -} -///: END:ONLY_INCLUDE_IF diff --git a/app/core/Permissions/specifications.js b/app/core/Permissions/specifications.js index 6d3b0dca2f1e..463d6743d213 100644 --- a/app/core/Permissions/specifications.js +++ b/app/core/Permissions/specifications.js @@ -10,6 +10,7 @@ import { } from '@metamask/permission-controller'; import { v1 as random } from 'uuid'; import { CaveatTypes, RestrictedMethods } from './constants'; +import { isNonEvmAddress } from '../Multichain/utils'; /** * This file contains the specifications of the permissions and caveats @@ -159,43 +160,56 @@ export const getPermissionSpecifications = ({ methodImplementation: async (_args) => { const accounts = await getAllAccounts(); - const internalAccounts = getInternalAccounts(); - return accounts.sort((firstAddress, secondAddress) => { - const lowerCaseFirstAddress = firstAddress.toLowerCase(); - const firstAccount = internalAccounts.find( - (internalAccount) => - internalAccount.address.toLowerCase() === lowerCaseFirstAddress, - ); + const internalAccounts = getInternalAccounts().filter( + (account) => !isNonEvmAddress(account.address), + ); - const lowerCaseSecondAddress = secondAddress.toLowerCase(); - const secondAccount = internalAccounts.find( - (internalAccount) => - internalAccount.address.toLowerCase() === lowerCaseSecondAddress, - ); + return accounts + .filter((account) => !isNonEvmAddress(account)) + .sort((firstAddress, secondAddress) => { + const lowerCaseFirstAddress = firstAddress.toLowerCase(); + const firstAccount = internalAccounts.find( + (internalAccount) => + internalAccount.address.toLowerCase() === lowerCaseFirstAddress, + ); - if (!firstAccount) { - captureKeyringTypesWithMissingIdentities(internalAccounts, accounts); - throw new Error(`Missing identity for address: "${firstAddress}".`); - } else if (!secondAccount) { - captureKeyringTypesWithMissingIdentities(internalAccounts, accounts); - throw new Error(`Missing identity for address: "${secondAddress}".`); - } else if ( - firstAccount.metadata.lastSelected === - secondAccount.metadata.lastSelected - ) { - return 0; - } else if (firstAccount.metadata.lastSelected === undefined) { - return 1; - } else if (secondAccount.metadata.lastSelected === undefined) { - return -1; - } + const lowerCaseSecondAddress = secondAddress.toLowerCase(); + const secondAccount = internalAccounts.find( + (internalAccount) => + internalAccount.address.toLowerCase() === lowerCaseSecondAddress, + ); - return ( - secondAccount.metadata.lastSelected - - firstAccount.metadata.lastSelected - ); - }); + if (!firstAccount) { + captureKeyringTypesWithMissingIdentities( + internalAccounts, + accounts, + ); + throw new Error(`Missing identity for address: "${firstAddress}".`); + } else if (!secondAccount) { + captureKeyringTypesWithMissingIdentities( + internalAccounts, + accounts, + ); + throw new Error( + `Missing identity for address: "${secondAddress}".`, + ); + } else if ( + firstAccount.metadata.lastSelected === + secondAccount.metadata.lastSelected + ) { + return 0; + } else if (firstAccount.metadata.lastSelected === undefined) { + return 1; + } else if (secondAccount.metadata.lastSelected === undefined) { + return -1; + } + + return ( + secondAccount.metadata.lastSelected - + firstAccount.metadata.lastSelected + ); + }); }, validator: (permission, _origin, _target) => { @@ -409,5 +423,7 @@ export const unrestrictedMethods = Object.freeze([ 'snap_createInterface', 'snap_updateInterface', 'snap_getInterfaceState', + 'snap_getInterfaceContext', + 'snap_resolveInterface', ///: END:ONLY_INCLUDE_IF ]); diff --git a/app/core/Permissions/specifications.test.js b/app/core/Permissions/specifications.test.js index 9dd34c5d5a41..0ffa1ccf7ee3 100644 --- a/app/core/Permissions/specifications.test.js +++ b/app/core/Permissions/specifications.test.js @@ -23,7 +23,7 @@ describe('PermissionController specifications', () => { describe('caveat specifications', () => { it('getCaveatSpecifications returns the expected specifications object', () => { const caveatSpecifications = getCaveatSpecifications({}); - expect(Object.keys(caveatSpecifications)).toHaveLength(13); + expect(Object.keys(caveatSpecifications)).toHaveLength(14); expect( caveatSpecifications[CaveatTypes.restrictReturnedAccounts].type, ).toStrictEqual(CaveatTypes.restrictReturnedAccounts); @@ -60,6 +60,9 @@ describe('PermissionController specifications', () => { expect(caveatSpecifications.lookupMatchers.type).toStrictEqual( SnapCaveatType.LookupMatchers, ); + expect(caveatSpecifications.protocolSnapScopes.type).toStrictEqual( + SnapCaveatType.ProtocolSnapScopes, + ); }); describe('restrictReturnedAccounts', () => { diff --git a/app/core/RPCMethods/RPCMethodMiddleware.ts b/app/core/RPCMethods/RPCMethodMiddleware.ts index 932d82dc63fa..dd0b7c7136e1 100644 --- a/app/core/RPCMethods/RPCMethodMiddleware.ts +++ b/app/core/RPCMethods/RPCMethodMiddleware.ts @@ -32,7 +32,10 @@ import { v1 as random } from 'uuid'; import { getPermittedAccounts } from '../Permissions'; import AppConstants from '../AppConstants'; import PPOMUtil from '../../lib/ppom/ppom-util'; -import { selectProviderConfig } from '../../selectors/networkController'; +import { + selectEvmChainId, + selectProviderConfig, +} from '../../selectors/networkController'; import { setEventStageError, setEventStage } from '../../actions/rpcEvents'; import { isWhitelistedRPC, RPCStageTypes } from '../../reducers/rpcEvents'; import { regex } from '../../../app/util/regex'; @@ -75,6 +78,7 @@ export enum ApprovalTypes { ///: BEGIN:ONLY_INCLUDE_IF(external-snaps) INSTALL_SNAP = 'wallet_installSnap', UPDATE_SNAP = 'wallet_updateSnap', + SNAP_DIALOG = 'snap_dialog', ///: END:ONLY_INCLUDE_IF } @@ -172,6 +176,7 @@ export const checkActiveAccountAndChainId = async ({ ); if (chainId) { const providerConfig = selectProviderConfig(store.getState()); + const providerConfigChainId = selectEvmChainId(store.getState()); const networkType = providerConfig.type as NetworkType; const isInitialNetwork = networkType && getAllNetworks().includes(networkType); @@ -180,7 +185,7 @@ export const checkActiveAccountAndChainId = async ({ if (isInitialNetwork) { activeChainId = ChainId[networkType as keyof typeof ChainId]; } else if (networkType === RPC) { - activeChainId = providerConfig.chainId; + activeChainId = providerConfigChainId; } if (activeChainId && !activeChainId.startsWith('0x')) { diff --git a/app/core/RPCMethods/lib/ethereum-chain-utils.js b/app/core/RPCMethods/lib/ethereum-chain-utils.js index 48c1cc5d353b..1d9d8b58cb63 100644 --- a/app/core/RPCMethods/lib/ethereum-chain-utils.js +++ b/app/core/RPCMethods/lib/ethereum-chain-utils.js @@ -206,8 +206,11 @@ export async function switchToNetwork({ origin, isAddNetworkFlow = false, }) { - const { NetworkController, PermissionController, SelectedNetworkController } = - controllers; + const { + MultichainNetworkController, + PermissionController, + SelectedNetworkController, + } = controllers; const getCaveat = ({ target, caveatType }) => { try { return PermissionController.getCaveat(origin, target, caveatType); @@ -296,7 +299,7 @@ export async function switchToNetwork({ networkConfigurationId || networkConfiguration.networkType, ); } else { - NetworkController.setActiveNetwork( + await MultichainNetworkController.setActiveNetwork( networkConfigurationId || networkConfiguration.networkType, ); } diff --git a/app/core/RPCMethods/wallet_addEthereumChain.js b/app/core/RPCMethods/wallet_addEthereumChain.js index 59e28468c8b2..7e34c01ca971 100644 --- a/app/core/RPCMethods/wallet_addEthereumChain.js +++ b/app/core/RPCMethods/wallet_addEthereumChain.js @@ -5,8 +5,8 @@ import { providerErrors, rpcErrors } from '@metamask/rpc-errors'; import { MetaMetricsEvents, MetaMetrics } from '../../core/Analytics'; import { MetricsEventBuilder } from '../../core/Analytics/MetricsEventBuilder'; import { - selectChainId, - selectNetworkConfigurations, + selectEvmChainId, + selectEvmNetworkConfigurationsByChainId, } from '../../selectors/networkController'; import { store } from '../../store'; import checkSafeNetwork from './networkChecker.util'; @@ -48,6 +48,7 @@ const wallet_addEthereumChain = async ({ const { CurrencyRateController, NetworkController, + MultichainNetworkController, ApprovalController, PermissionController, SelectedNetworkController, @@ -69,14 +70,15 @@ const wallet_addEthereumChain = async ({ if (Object.values(actualChains).find((value) => value === chainId)) { throw rpcErrors.invalidParams(`May not specify default MetaMask chain.`); } - - const networkConfigurations = selectNetworkConfigurations(store.getState()); + const networkConfigurations = selectEvmNetworkConfigurationsByChainId( + store.getState(), + ); const existingEntry = Object.entries(networkConfigurations).find( ([, networkConfiguration]) => networkConfiguration.chainId === chainId, ); if (existingEntry) { const [chainId, networkConfiguration] = existingEntry; - const currentChainId = selectChainId(store.getState()); + const currentChainId = selectEvmChainId(store.getState()); // A network for this chain id already exists. // Update it with any new information. @@ -135,7 +137,7 @@ const wallet_addEthereumChain = async ({ chainId, controllers: { CurrencyRateController, - NetworkController, + MultichainNetworkController, PermissionController, SelectedNetworkController, }, @@ -248,7 +250,7 @@ const wallet_addEthereumChain = async ({ chainId, controllers: { CurrencyRateController, - NetworkController, + MultichainNetworkController, PermissionController, SelectedNetworkController, }, diff --git a/app/core/RPCMethods/wallet_addEthereumChain.test.js b/app/core/RPCMethods/wallet_addEthereumChain.test.js index 3051a854ffda..50514c9e15d4 100644 --- a/app/core/RPCMethods/wallet_addEthereumChain.test.js +++ b/app/core/RPCMethods/wallet_addEthereumChain.test.js @@ -29,6 +29,9 @@ jest.mock('../Engine', () => ({ addNetwork: jest.fn(), updateNetwork: jest.fn(), }, + MultichainNetworkController: { + setActiveNetwork: jest.fn(), + }, CurrencyRateController: { updateExchangeRate: jest.fn(), }, @@ -419,7 +422,7 @@ describe('RPC Method - wallet_addEthereumChain', () => { }); const spyOnSetActiveNetwork = jest.spyOn( - Engine.context.NetworkController, + Engine.context.MultichainNetworkController, 'setActiveNetwork', ); const spyOnUpdateExchangeRate = jest.spyOn( @@ -454,7 +457,7 @@ describe('RPC Method - wallet_addEthereumChain', () => { ); const spyOnSetActiveNetwork = jest.spyOn( - Engine.context.NetworkController, + Engine.context.MultichainNetworkController, 'setActiveNetwork', ); const spyOnUpdateExchangeRate = jest.spyOn( diff --git a/app/core/RPCMethods/wallet_switchEthereumChain.js b/app/core/RPCMethods/wallet_switchEthereumChain.js index 7d9d3163545b..b117b1edbf26 100644 --- a/app/core/RPCMethods/wallet_switchEthereumChain.js +++ b/app/core/RPCMethods/wallet_switchEthereumChain.js @@ -2,7 +2,7 @@ import Engine from '../Engine'; import { providerErrors, rpcErrors } from '@metamask/rpc-errors'; import { MetaMetricsEvents, MetaMetrics } from '../../core/Analytics'; import { MetricsEventBuilder } from '../../core/Analytics/MetricsEventBuilder'; -import { selectNetworkConfigurations } from '../../selectors/networkController'; +import { selectEvmNetworkConfigurationsByChainId } from '../../selectors/networkController'; import { store } from '../../store'; import { validateChainId, @@ -19,6 +19,7 @@ const wallet_switchEthereumChain = async ({ const { CurrencyRateController, NetworkController, + MultichainNetworkController, PermissionController, SelectedNetworkController, } = Engine.context; @@ -43,8 +44,10 @@ const wallet_switchEthereumChain = async ({ ); } const _chainId = validateChainId(chainId); - - const networkConfigurations = selectNetworkConfigurations(store.getState()); + // TODO: [SOLANA] - This do not support non evm networks + const networkConfigurations = selectEvmNetworkConfigurationsByChainId( + store.getState(), + ); const existingNetwork = findExistingNetwork(_chainId, networkConfigurations); if (existingNetwork) { const currentDomainSelectedNetworkClientId = @@ -64,7 +67,7 @@ const wallet_switchEthereumChain = async ({ chainId: _chainId, controllers: { CurrencyRateController, - NetworkController, + MultichainNetworkController, PermissionController, SelectedNetworkController, }, diff --git a/app/core/RPCMethods/wallet_switchEthereumChain.test.js b/app/core/RPCMethods/wallet_switchEthereumChain.test.js index c7b404f36af8..1c7f16bde447 100644 --- a/app/core/RPCMethods/wallet_switchEthereumChain.test.js +++ b/app/core/RPCMethods/wallet_switchEthereumChain.test.js @@ -20,6 +20,9 @@ jest.mock('../Engine', () => ({ setActiveNetwork: jest.fn(), getNetworkClientById: jest.fn(), }, + MultichainNetworkController: { + setActiveNetwork: jest.fn(), + }, CurrencyRateController: { updateExchangeRate: jest.fn(), }, @@ -160,7 +163,7 @@ describe('RPC Method - wallet_switchEthereumChain', () => { .spyOn(Engine.context.NetworkController, 'getNetworkClientById') .mockReturnValue({ configuration: { chainId: '0x1' } }); const spyOnSetActiveNetwork = jest.spyOn( - Engine.context.NetworkController, + Engine.context.MultichainNetworkController, 'setActiveNetwork', ); await wallet_switchEthereumChain({ @@ -202,7 +205,7 @@ describe('RPC Method - wallet_switchEthereumChain', () => { .mockReturnValue({ value: ['0x64'] }); const spyOnSetActiveNetwork = jest.spyOn( - Engine.context.NetworkController, + Engine.context.MultichainNetworkController, 'setActiveNetwork', ); await wallet_switchEthereumChain({ @@ -234,7 +237,7 @@ describe('RPC Method - wallet_switchEthereumChain', () => { .spyOn(Engine.context.NetworkController, 'getNetworkClientById') .mockReturnValue({ configuration: { chainId: '0x1' } }); const spyOnSetActiveNetwork = jest.spyOn( - Engine.context.NetworkController, + Engine.context.MultichainNetworkController, 'setActiveNetwork', ); jest diff --git a/app/core/RPCMethods/wallet_watchAsset.ts b/app/core/RPCMethods/wallet_watchAsset.ts index 6fae74b084ac..cfe0ca0e7cf9 100644 --- a/app/core/RPCMethods/wallet_watchAsset.ts +++ b/app/core/RPCMethods/wallet_watchAsset.ts @@ -9,7 +9,10 @@ import { TOKEN_NOT_SUPPORTED_FOR_NETWORK, TOKEN_NOT_VALID, } from '../../constants/error'; -import { selectChainId, selectNetworkClientId } from '../../selectors/networkController'; +import { + selectEvmChainId, + selectNetworkClientId, +} from '../../selectors/networkController'; import { isValidAddress } from 'ethereumjs-util'; import { toChecksumHexAddress } from '@metamask/controller-utils'; import { JsonRpcRequest, PendingJsonRpcResponse } from '@metamask/utils'; @@ -48,7 +51,7 @@ const wallet_watchAsset = async ({ const { TokensController } = Engine.context; const state = store.getState(); - const chainId = selectChainId(state); + const chainId = selectEvmChainId(state); const networkClientId = selectNetworkClientId(state); checkTabActive(); @@ -60,7 +63,11 @@ const wallet_watchAsset = async ({ } // Check if token exists on wallet's active network. - const isTokenOnNetwork = await isSmartContractAddress(address, chainId, networkClientId); + const isTokenOnNetwork = await isSmartContractAddress( + address, + chainId, + networkClientId, + ); if (!isTokenOnNetwork) { throw new Error(TOKEN_NOT_SUPPORTED_FOR_NETWORK); } diff --git a/app/core/SDKConnect/ConnectionManagement/connectToChannel.ts b/app/core/SDKConnect/ConnectionManagement/connectToChannel.ts index 4ccf8ff18aad..f708067c52d9 100644 --- a/app/core/SDKConnect/ConnectionManagement/connectToChannel.ts +++ b/app/core/SDKConnect/ConnectionManagement/connectToChannel.ts @@ -1,8 +1,12 @@ -import { MessageType, SendAnalytics, TrackingEvents } from '@metamask/sdk-communication-layer'; +import { + MessageType, + SendAnalytics, + TrackingEvents, +} from '@metamask/sdk-communication-layer'; import { resetConnections } from '../../../../app/actions/sdk'; import { store } from '../../../../app/store'; import Routes from '../../../constants/navigation/Routes'; -import { selectChainId } from '../../../selectors/networkController'; +import { selectEvmChainId } from '../../../selectors/networkController'; import Logger from '../../../util/Logger'; import AppConstants from '../../AppConstants'; import Engine from '../../Engine'; @@ -133,12 +137,19 @@ async function connectToChannel({ try { // We cannot request permissions if the user is on the login screen or the account connect screen otherwise it will kill other permissions requests. - const skipRoutes = [Routes.LOCK_SCREEN, Routes.ONBOARDING.LOGIN, Routes.SHEET.ACCOUNT_CONNECT]; + const skipRoutes = [ + Routes.LOCK_SCREEN, + Routes.ONBOARDING.LOGIN, + Routes.SHEET.ACCOUNT_CONNECT, + ]; // Wait for login screen to be closed await waitForCondition({ fn: () => { - const currentRouteName = connected.navigation?.getCurrentRoute()?.name; - DevLogger.log(`connectToChannel:: currentRouteName=${currentRouteName}`); + const currentRouteName = + connected.navigation?.getCurrentRoute()?.name; + DevLogger.log( + `connectToChannel:: currentRouteName=${currentRouteName}`, + ); return !!currentRouteName && !skipRoutes.includes(currentRouteName); }, context: 'connectToChannel', @@ -148,14 +159,23 @@ async function connectToChannel({ connection: connected, engine: Engine, }); - DevLogger.log(`SDKConnect::connectToChannel - checkPermissions - authorized`, res); + DevLogger.log( + `SDKConnect::connectToChannel - checkPermissions - authorized`, + res, + ); authorized = true; } catch (error) { - DevLogger.log(`SDKConnect::connectToChannel - checkPermissions - error`, error); + DevLogger.log( + `SDKConnect::connectToChannel - checkPermissions - error`, + error, + ); // first needs to connect without key exchange to send the event - await instance.state.connected[id].remote.reject({channelId: id}); + await instance.state.connected[id].remote.reject({ channelId: id }); // Send rejection event without awaiting - SendAnalytics({id, event: TrackingEvents.REJECTED, ...originatorInfo}, instance.state.socketServerUrl).catch((err: Error) => { + SendAnalytics( + { id, event: TrackingEvents.REJECTED, ...originatorInfo }, + instance.state.socketServerUrl, + ).catch((err: Error) => { Logger.error(err, 'SendAnalytics failed'); }); @@ -171,14 +191,20 @@ async function connectToChannel({ } // SDK PROTOCOL pre 0.28.0 - DevLogger.log(`SDKConnect::connectToChannel - before connect`, instance.state.connected[id]); + DevLogger.log( + `SDKConnect::connectToChannel - before connect`, + instance.state.connected[id], + ); // Initialize connection await connected.connect({ withKeyExchange: true, authorized, }); - DevLogger.log(`SDKConnect::connectToChannel - connected - state after connect`, instance.state); + DevLogger.log( + `SDKConnect::connectToChannel - connected - state after connect`, + instance.state, + ); DevLogger.log( `SDKConnect::connectToChannel - connected - authorized=${authorized} initialConnection=${initialConnection}`, @@ -192,7 +218,7 @@ async function connectToChannel({ if (authorized && initialConnection) { const accounts = await getPermittedAccounts(id); - const currentChainId = selectChainId(store.getState()); + const currentChainId = selectEvmChainId(store.getState()); connected.remote.state.channelId = id; const data = { accounts, @@ -239,7 +265,9 @@ async function connectToChannel({ } catch (error) { Logger.error(error as Error, 'Failed to connect to channel'); } finally { - DevLogger.log(`SDKConnect::connectToChannel - finally - state.connecting[${id}]=${instance.state.connecting[id]}`); + DevLogger.log( + `SDKConnect::connectToChannel - finally - state.connecting[${id}]=${instance.state.connecting[id]}`, + ); instance.state.connecting[id] = false; } } diff --git a/app/core/SnapKeyring/SnapKeyring.test.ts b/app/core/SnapKeyring/SnapKeyring.test.ts index d5d5017aef8f..0c3cbd8ee4ed 100644 --- a/app/core/SnapKeyring/SnapKeyring.test.ts +++ b/app/core/SnapKeyring/SnapKeyring.test.ts @@ -1,5 +1,10 @@ import { Messenger } from '@metamask/base-controller'; -import { EthAccountType, EthScope, KeyringEvent } from '@metamask/keyring-api'; +import { + EthAccountType, + EthScope, + KeyringEvent, + KeyringRpcMethod, +} from '@metamask/keyring-api'; import { InternalAccount } from '@metamask/keyring-internal-api'; import { snapKeyringBuilder } from './SnapKeyring'; import { @@ -8,18 +13,23 @@ import { } from './types'; import { SnapId } from '@metamask/snaps-sdk'; import { SNAP_MANAGE_ACCOUNTS_CONFIRMATION_TYPES } from '../RPCMethods/RPCMethodMiddleware'; +import { showAccountNameSuggestionDialog } from './utils/showDialog'; +import Logger from '../../util/Logger'; +import { isSnapPreinstalled } from './utils/snaps'; const mockAddRequest = jest.fn(); const mockStartFlow = jest.fn(); const mockEndFlow = jest.fn(); const mockGetAccounts = jest.fn(); -const mockSnapId: SnapId = 'snapId' as SnapId; +const mockSnapId: SnapId = 'npm:@metamask/solana-wallet-snap' as SnapId; const mockSnapName = 'mock-snap'; const mockPersisKeyringHelper = jest.fn(); const mockSetSelectedAccount = jest.fn(); const mockRemoveAccountHelper = jest.fn(); const mockGetAccountByAddress = jest.fn(); const mockSetAccountName = jest.fn(); +const mockSnapControllerHandleRequest = jest.fn(); +const mockListMultichainAccounts = jest.fn(); const mockFlowId = '123'; const address = '0x2a4d4b667D5f12C3F9Bf8F14a7B9f8D8d9b8c8fA'; @@ -58,7 +68,7 @@ const createControllerMessenger = ({ SnapKeyringBuilderAllowActions, never >().getRestricted({ - name: 'SnapKeyringBuilder', + name: 'SnapKeyring', allowedActions: [ 'ApprovalController:addRequest', 'ApprovalController:acceptRequest', @@ -71,6 +81,8 @@ const createControllerMessenger = ({ 'KeyringController:getAccounts', 'AccountsController:setSelectedAccount', 'AccountsController:getAccountByAddress', + 'AccountsController:listMultichainAccounts', + 'AccountsController:setAccountName', ], allowedEvents: [], }); @@ -95,6 +107,10 @@ const createControllerMessenger = ({ return mockSetSelectedAccount(params); case 'AccountsController:setAccountName': return mockSetAccountName.mockReturnValue(null)(params); + case 'AccountsController:listMultichainAccounts': + return mockListMultichainAccounts.mockReturnValue([])(); + case 'SnapController:handleRequest': + return mockSnapControllerHandleRequest(params); default: throw new Error( `MOCK_FAIL - unsupported messenger call: ${actionType}`, @@ -105,21 +121,67 @@ const createControllerMessenger = ({ return messenger; }; +/** + * Utility function that waits for all pending promises to be resolved. + * This is necessary when testing asynchronous execution flows that are + * initiated by synchronous calls. + * + * @returns A promise that resolves when all pending promises are completed. + */ +async function waitForAllPromises(): Promise<void> { + // Wait for next tick to flush all pending promises. It's requires since + // we are testing some asynchronous execution flows that are started by + // synchronous calls. + await new Promise(process.nextTick); +} + const createSnapKeyringBuilder = () => - snapKeyringBuilder( - createControllerMessenger(), - mockPersisKeyringHelper, - mockRemoveAccountHelper, - ); + snapKeyringBuilder(createControllerMessenger(), { + persistKeyringHelper: mockPersisKeyringHelper, + removeAccountHelper: mockRemoveAccountHelper, + }); + +// Mock the isSnapPreinstalled function +jest.mock('./utils/snaps', () => ({ + isSnapPreinstalled: jest.fn(), +})); describe('Snap Keyring Methods', () => { afterEach(() => { jest.resetAllMocks(); }); + describe('helpers', () => { + describe('showAccountNameSuggestionDialog', () => { + it('shows account name suggestion dialog and return true on user confirmation', async () => { + const controllerMessenger = createControllerMessenger(); + controllerMessenger.call('ApprovalController:startFlow'); + + await showAccountNameSuggestionDialog( + mockSnapId, + controllerMessenger, + accountNameSuggestion, + ); + + expect(mockAddRequest).toHaveBeenCalledTimes(1); + expect(mockAddRequest).toHaveBeenCalledWith([ + { + origin: mockSnapId, + type: SNAP_MANAGE_ACCOUNTS_CONFIRMATION_TYPES.showNameSnapAccount, + requestData: { + snapSuggestedAccountName: accountNameSuggestion, + }, + }, + true, + ]); + }); + }); + }); + describe('addAccount', () => { beforeEach(() => { mockAddRequest.mockReturnValue(true).mockReturnValue({ success: true }); + (isSnapPreinstalled as jest.Mock).mockReset(); }); afterEach(() => { jest.resetAllMocks(); @@ -135,7 +197,7 @@ describe('Snap Keyring Methods', () => { }, }); - expect(mockStartFlow).toHaveBeenCalledTimes(1); + expect(mockStartFlow).toHaveBeenCalledTimes(2); expect(mockAddRequest).toHaveBeenNthCalledWith(1, [ { origin: mockSnapId, @@ -146,11 +208,8 @@ describe('Snap Keyring Methods', () => { }, true, ]); - expect(mockPersisKeyringHelper).toHaveBeenCalledTimes(2); - expect(mockGetAccountByAddress).toHaveBeenCalledTimes(1); - expect(mockGetAccountByAddress).toHaveBeenCalledWith([ - mockAccount.address.toLowerCase(), - ]); + expect(mockPersisKeyringHelper).toHaveBeenCalledTimes(1); + expect(mockGetAccounts).toHaveBeenCalledTimes(1); expect(mockSetAccountName).not.toHaveBeenCalled(); expect(mockEndFlow).toHaveBeenCalledWith([{ id: mockFlowId }]); }); @@ -171,8 +230,8 @@ describe('Snap Keyring Methods', () => { }, }); - expect(mockStartFlow).toHaveBeenCalledTimes(1); - expect(mockPersisKeyringHelper).toHaveBeenCalledTimes(2); + expect(mockStartFlow).toHaveBeenCalledTimes(2); + expect(mockPersisKeyringHelper).toHaveBeenCalledTimes(1); expect(mockAddRequest).toHaveBeenNthCalledWith(1, [ { origin: mockSnapId, @@ -183,17 +242,229 @@ describe('Snap Keyring Methods', () => { }, true, ]); - expect(mockGetAccountByAddress).toHaveBeenCalledTimes(1); - expect(mockGetAccountByAddress).toHaveBeenCalledWith([ - mockAccount.address.toLowerCase(), - ]); + expect(mockGetAccounts).toHaveBeenCalledTimes(1); expect(mockSetAccountName).toHaveBeenCalledTimes(1); expect(mockSetAccountName).toHaveBeenCalledWith([ mockAccount.id, mockNameSuggestion, ]); + expect(mockEndFlow).toHaveBeenCalledTimes(2); + expect(mockEndFlow).toHaveBeenCalledWith([{ id: mockFlowId }]); + }); + + it('throws an error when user denies account creation', async () => { + // Mock the addRequest to return success: false to simulate user denial + mockAddRequest.mockReturnValueOnce({ + success: false, + }); + + const builder = createSnapKeyringBuilder(); + + // We expect the handleKeyringSnapMessage to throw an error + await expect( + builder().handleKeyringSnapMessage(mockSnapId, { + method: KeyringEvent.AccountCreated, + params: { + account: mockAccount, + displayConfirmation: false, + }, + }), + ).rejects.toThrow('User denied account creation'); + + // Verify that the approval flow was started and ended + expect(mockStartFlow).toHaveBeenCalledTimes(1); + expect(mockAddRequest).toHaveBeenCalledTimes(1); + expect(mockAddRequest).toHaveBeenCalledWith([ + { + origin: mockSnapId, + type: SNAP_MANAGE_ACCOUNTS_CONFIRMATION_TYPES.showNameSnapAccount, + requestData: { + snapSuggestedAccountName: '', + }, + }, + true, + ]); + + // Verify that the handleUserInput callback was called with false + expect(mockSnapControllerHandleRequest).not.toHaveBeenCalled(); + + // Verify that the persistKeyringHelper was not called + expect(mockPersisKeyringHelper).not.toHaveBeenCalled(); + + // Verify that the flow was ended expect(mockEndFlow).toHaveBeenCalledTimes(1); expect(mockEndFlow).toHaveBeenCalledWith([{ id: mockFlowId }]); }); + + it('ends approval flow on error', async () => { + const loggerSpy = jest.spyOn(Logger, 'error').mockImplementation(); + + const errorMessage = 'save error'; + mockPersisKeyringHelper.mockRejectedValue(new Error(errorMessage)); + mockSnapControllerHandleRequest.mockImplementation((params) => { + expect(params).toStrictEqual([ + { + snapId: mockSnapId, + origin: 'metamask', + handler: 'onKeyringRequest', + request: { + jsonrpc: '2.0', + id: expect.any(String), + method: KeyringRpcMethod.DeleteAccount, + params: { + id: mockAccount.id, + }, + }, + }, + ]); + + // We must return `null` when removing an account. + return null; + }); + const builder = createSnapKeyringBuilder(); + await builder().handleKeyringSnapMessage(mockSnapId, { + method: KeyringEvent.AccountCreated, + params: { + account: mockAccount, + displayConfirmation: false, + }, + }); + + // ! This no longer throws an error, but instead, we log it. Since this part + // ! of the flow is not awaited, so we await for it explicitly here: + await waitForAllPromises(); + expect(loggerSpy).toHaveBeenCalledWith( + new Error('save error'), + 'Error occurred while creating snap account', + ); + + expect(mockStartFlow).toHaveBeenCalledTimes(2); + expect(mockEndFlow).toHaveBeenCalledTimes(2); + expect(mockEndFlow).toHaveBeenNthCalledWith(1, [{ id: mockFlowId }]); + expect(mockEndFlow).toHaveBeenNthCalledWith(2, [{ id: mockFlowId }]); + }); + it('skips account name suggestion dialog for preinstalled snaps when displayAccountNameSuggestion is false', async () => { + // Mock isSnapPreinstalled to return true for this test + (isSnapPreinstalled as jest.Mock).mockReturnValue(true); + + const mockNameSuggestion = 'auto generated name'; + mockListMultichainAccounts.mockReturnValueOnce([]); + + const builder = createSnapKeyringBuilder(); + await builder().handleKeyringSnapMessage(mockSnapId, { + method: KeyringEvent.AccountCreated, + params: { + account: mockAccount, + displayConfirmation: false, + accountNameSuggestion: mockNameSuggestion, + displayAccountNameSuggestion: false, + }, + }); + + // Verify the account name suggestion dialog was not shown + expect(mockAddRequest).not.toHaveBeenCalledWith([ + { + origin: mockSnapId, + type: SNAP_MANAGE_ACCOUNTS_CONFIRMATION_TYPES.showNameSnapAccount, + requestData: { + snapSuggestedAccountName: mockNameSuggestion, + }, + }, + true, + ]); + + // Verify that listMultichainAccounts was called to generate a unique name + expect(mockListMultichainAccounts).toHaveBeenCalledTimes(1); + + // Verify that the account was created and named + expect(mockPersisKeyringHelper).toHaveBeenCalledTimes(1); + expect(mockSetAccountName).toHaveBeenCalledTimes(1); + expect(mockSetAccountName).toHaveBeenCalledWith([ + mockAccount.id, + mockNameSuggestion, + ]); + }); + + it('shows account name suggestion dialog for preinstalled snaps when displayAccountNameSuggestion is true', async () => { + // Mock isSnapPreinstalled to return true for this test + (isSnapPreinstalled as jest.Mock).mockReturnValue(true); + + const mockNameSuggestion = 'suggested name'; + + // Set up mockAddRequest to return success with the name + mockAddRequest.mockReturnValueOnce({ + success: true, + name: mockNameSuggestion, + }); + + const builder = createSnapKeyringBuilder(); + await builder().handleKeyringSnapMessage(mockSnapId, { + method: KeyringEvent.AccountCreated, + params: { + account: mockAccount, + displayConfirmation: false, + accountNameSuggestion: mockNameSuggestion, + displayAccountNameSuggestion: true, // This should trigger the dialog + }, + }); + + // Verify that the approval flow was started + expect(mockStartFlow).toHaveBeenCalledTimes(2); + + // Verify that the account was created and named + expect(mockPersisKeyringHelper).toHaveBeenCalledTimes(1); + expect(mockSetAccountName).toHaveBeenCalledTimes(1); + expect(mockSetAccountName).toHaveBeenCalledWith([ + mockAccount.id, + mockNameSuggestion, + ]); + + // Verify that the approval flow was ended + expect(mockEndFlow).toHaveBeenCalledTimes(2); + expect(mockEndFlow).toHaveBeenNthCalledWith(1, [{ id: mockFlowId }]); + expect(mockEndFlow).toHaveBeenNthCalledWith(2, [{ id: mockFlowId }]); + }); + + it('always shows account name suggestion dialog for non-preinstalled snaps regardless of displayAccountNameSuggestion', async () => { + // Mock isSnapPreinstalled to return false for this test + (isSnapPreinstalled as jest.Mock).mockReturnValue(false); + + const mockNameSuggestion = 'suggested name'; + mockAddRequest.mockReturnValueOnce({ + success: true, + name: mockNameSuggestion, + }); + + const builder = createSnapKeyringBuilder(); + await builder().handleKeyringSnapMessage(mockSnapId, { + method: KeyringEvent.AccountCreated, + params: { + account: mockAccount, + displayConfirmation: false, + accountNameSuggestion: mockNameSuggestion, + displayAccountNameSuggestion: false, // Even though this is false, dialog should show for non-preinstalled snaps + }, + }); + + // Verify the account name suggestion dialog was shown + expect(mockAddRequest).toHaveBeenCalledWith([ + { + origin: mockSnapId, + type: SNAP_MANAGE_ACCOUNTS_CONFIRMATION_TYPES.showNameSnapAccount, + requestData: { + snapSuggestedAccountName: mockNameSuggestion, + }, + }, + true, + ]); + + // Verify that the account was created and named + expect(mockPersisKeyringHelper).toHaveBeenCalledTimes(1); + expect(mockSetAccountName).toHaveBeenCalledTimes(1); + expect(mockSetAccountName).toHaveBeenCalledWith([ + mockAccount.id, + mockNameSuggestion, + ]); + }); }); }); diff --git a/app/core/SnapKeyring/SnapKeyring.ts b/app/core/SnapKeyring/SnapKeyring.ts index ec498b3248d5..8449c5d61b52 100644 --- a/app/core/SnapKeyring/SnapKeyring.ts +++ b/app/core/SnapKeyring/SnapKeyring.ts @@ -1,132 +1,256 @@ -import { SnapKeyring } from '@metamask/eth-snap-keyring'; +import { SnapKeyring, SnapKeyringCallbacks } from '@metamask/eth-snap-keyring'; import Logger from '../../util/Logger'; import { showAccountNameSuggestionDialog } from './utils/showDialog'; import { SnapKeyringBuilderMessenger } from './types'; +import { SnapId } from '@metamask/snaps-sdk'; +import { assertIsValidSnapId } from '@metamask/snaps-utils'; +import { getUniqueAccountName } from './utils/getUniqueAccountName'; +import { isSnapPreinstalled } from './utils/snaps'; /** - * Constructs a SnapKeyring builder with specified handlers for managing snap accounts. - * - Here is the equivalent function on the extension: https://github.com/MetaMask/metamask-extension/blob/develop/app/scripts/lib/snap-keyring/snap-keyring.ts#L111 - * - * @param controllerMessenger - The controller messenger instance. - * @param persistKeyringHelper - A function that persists all keyrings in the vault. - * @param removeAccountHelper - A function to help remove an account based on its address. - * @returns The constructed SnapKeyring builder instance with the following methods: - * - `saveState`: Persists all keyrings in the keyring controller. - * - `addAccount`: Initiates the process of adding an account with user confirmation and handling the user input. - * - `removeAccount`: Initiates the process of removing an account with user confirmation and handling the user input. - * - `redirectUser`: Redirects the user to a specified URL with a message to complete signing. This method is used to handle asynchronous signing requests. - * - `addressExists`: Returns a boolean indicating if an address exists in the keyring. + * Builder type for the Snap keyring. */ -export const snapKeyringBuilder = ( - controllerMessenger: SnapKeyringBuilderMessenger, - - persistKeyringHelper: () => Promise<void>, - removeAccountHelper: (address: string) => Promise<unknown>, -): { (): SnapKeyring; type: string } => { - const builder = () => - // @ts-expect-error TODO: Resolve mismatch between base-controller versions. - new SnapKeyring(controllerMessenger, { - addressExists: async (address: string) => - ( - await controllerMessenger.call('KeyringController:getAccounts') - ).includes(address.toLowerCase()), - - redirectUser: async (snapId: string, url: string, message: string) => { - Logger.log( - `SnapKeyring: redirectUser called with \n - - snapId: ${snapId} \n - - url: ${url} \n - - message: ${message} \n`, - ); - }, - - saveState: async () => { - await persistKeyringHelper(); - }, - - addAccount: async ( - address: string, - snapId: string, - handleUserInput: (accepted: boolean) => Promise<void>, - accountNameSuggestion = '', - ) => { - const { id: addAccountFlowId } = controllerMessenger.call( - 'ApprovalController:startFlow', +export interface SnapKeyringBuilder { + (): SnapKeyring; + type: typeof SnapKeyring.type; +} + +/** + * Helpers for the Snap keyring implementation. + */ +export interface SnapKeyringHelpers { + persistKeyringHelper: () => Promise<void>; + removeAccountHelper: (address: string) => Promise<void>; +} + +class SnapKeyringImpl implements SnapKeyringCallbacks { + readonly #messenger: SnapKeyringBuilderMessenger; + + readonly #persistKeyringHelper: SnapKeyringHelpers['persistKeyringHelper']; + + readonly #removeAccountHelper: SnapKeyringHelpers['removeAccountHelper']; + + constructor( + messenger: SnapKeyringBuilderMessenger, + { persistKeyringHelper, removeAccountHelper }: SnapKeyringHelpers, + ) { + this.#messenger = messenger; + this.#persistKeyringHelper = persistKeyringHelper; + this.#removeAccountHelper = removeAccountHelper; + } + + async addressExists(address: string) { + const addresses = await this.#messenger.call( + 'KeyringController:getAccounts', + ); + return addresses.includes(address.toLowerCase()); + } + + async saveState() { + await this.#persistKeyringHelper(); + } + + private async withApprovalFlow<Return>( + run: (flowId: string) => Promise<Return>, + ): Promise<Return> { + const { id: flowId } = this.#messenger.call('ApprovalController:startFlow'); + + try { + return await run(flowId); + } finally { + this.#messenger.call('ApprovalController:endFlow', { + id: flowId, + }); + } + } + + /** + * Get the account name from the user through a dialog. + * + * @param snapId - ID of the Snap that created the account. + * @param accountNameSuggestion - Suggested name for the account. + * @returns The name that should be used for the account. + */ + private async getAccountNameFromDialog( + snapId: SnapId, + accountNameSuggestion: string, + ): Promise<{ success: boolean; accountName?: string }> { + const { success, name: accountName } = + await showAccountNameSuggestionDialog( + snapId, + this.#messenger, + accountNameSuggestion, + ); + + return { success, accountName }; + } + + /** + * Use the account name suggestion to decide the name of the account. + * + * @param accountNameSuggestion - Suggested name for the account. + * @returns The name that should be used for the account. + */ + private async getAccountNameFromSuggestion( + accountNameSuggestion: string, + ): Promise<{ success: boolean; accountName?: string }> { + const accounts = await this.#messenger.call( + 'AccountsController:listMultichainAccounts', + ); + const accountName = getUniqueAccountName(accounts, accountNameSuggestion); + return { success: true, accountName }; + } + + private async addAccountConfirmations({ + snapId, + handleUserInput, + accountNameSuggestion, + skipAccountNameSuggestionDialog, + }: { + snapId: SnapId; + accountNameSuggestion: string; + handleUserInput: (accepted: boolean) => Promise<void>; + skipAccountNameSuggestionDialog: boolean; + }): Promise<{ accountName?: string }> { + return await this.withApprovalFlow(async (_) => { + const { success, accountName } = skipAccountNameSuggestionDialog + ? await this.getAccountNameFromSuggestion(accountNameSuggestion) + : await this.getAccountNameFromDialog(snapId, accountNameSuggestion); + + // User has cancelled account creation + await handleUserInput(success); + + if (!success) { + throw new Error('User denied account creation'); + } + + return { accountName }; + }); + } + + private async addAccountFinalize({ + accountName, + onceSaved, + }: { + address: string; + snapId: SnapId; + onceSaved: Promise<string>; + accountName?: string; + }) { + await this.withApprovalFlow(async (_) => { + try { + // First, wait for the account to be fully saved. + // NOTE: This might throw, so keep this in the `try` clause. + const accountId = await onceSaved; + + // From here, we know the account has been saved into the Snap keyring + // state, so we can safely uses this state to run post-processing. + // (e.g. renaming the account, select the account, etc...) + + // Set the selected account to the new account + this.#messenger.call( + 'AccountsController:setSelectedAccount', + accountId, ); - try { - const accountNameConfirmationResult = - await showAccountNameSuggestionDialog( - snapId, - controllerMessenger, - accountNameSuggestion, - ); - - if (accountNameConfirmationResult.success) { - try { - await persistKeyringHelper(); - await handleUserInput(accountNameConfirmationResult.success); - const account = controllerMessenger.call( - 'AccountsController:getAccountByAddress', - address, - ); - if (!account) { - throw new Error( - `Internal account not found for address: ${address}`, - ); - } - - // Set the selected account to the new account - controllerMessenger.call( - 'AccountsController:setSelectedAccount', - account.id, - ); - - if (accountNameConfirmationResult.name) { - controllerMessenger.call( - 'AccountsController:setAccountName', - account.id, - accountNameConfirmationResult.name, - ); - } - } catch (e) { - // Error occurred while naming the account - const error = (e as Error).message; - throw new Error( - `Error occurred while creating snap account: ${error}`, - ); - } - } else { - // User has cancelled account creation so remove the account from the keyring - await handleUserInput(accountNameConfirmationResult?.success); - - throw new Error('User denied account creation'); - } - } finally { - controllerMessenger.call('ApprovalController:endFlow', { - id: addAccountFlowId, - }); + if (accountName) { + this.#messenger.call( + 'AccountsController:setAccountName', + accountId, + accountName, + ); } - }, - - removeAccount: async ( - address: string, - snapId: string, - handleUserInput: (accepted: boolean) => Promise<void>, - ) => { - // TODO: Implement proper snap account confirmations. Currently, we are approving everything for testing purposes. - Logger.log( - `SnapKeyring: removeAccount called with \n - - address: ${address} \n - - handleUserInput: ${handleUserInput} \n - - snapId: ${snapId} \n`, - ); - // Approve everything for now because we have not implemented snap account confirmations yet - await handleUserInput(true); - await removeAccountHelper(address); - await persistKeyringHelper(); - }, + } catch (e) { + // Error occurred while naming the account + const error = e as Error; + // This part of the flow is not awaited, so we just log the error for now: + Logger.error(error, 'Error occurred while creating snap account'); + } + }); + } + + async addAccount( + address: string, + snapId: string, + handleUserInput: (accepted: boolean) => Promise<void>, + onceSaved: Promise<string>, + accountNameSuggestion: string = '', + displayAccountNameSuggestion: boolean = true, + ) { + assertIsValidSnapId(snapId); + + // Only pre-installed Snaps can skip the account name suggestion dialog. + const skipAccountNameSuggestionDialog = + isSnapPreinstalled(snapId) && !displayAccountNameSuggestion; + + // First part of the flow, which includes confirmation dialogs (if not skipped). + // Once confirmed, we resume the Snap execution. + const { accountName } = await this.addAccountConfirmations({ + snapId, + accountNameSuggestion, + handleUserInput, + skipAccountNameSuggestionDialog, }); + + // The second part is about selecting the newly created account and showing some other + // confirmation dialogs (or error dialogs if anything goes wrong while persisting the account + // into the state. + // eslint-disable-next-line no-void + void this.addAccountFinalize({ + address, + snapId, + onceSaved, + accountName, + }); + } + + async removeAccount( + address: string, + snapId: string, + handleUserInput: (accepted: boolean) => Promise<void>, + ) { + assertIsValidSnapId(snapId); + // TODO: Implement proper snap account confirmations. Currently, we are approving everything for testing purposes. + Logger.log( + `SnapKeyring: removeAccount called with \n + - address: ${address} \n + - handleUserInput: ${handleUserInput} \n + - snapId: ${snapId} \n`, + ); + // Approve everything for now because we have not implemented snap account confirmations yet + await handleUserInput(true); + await this.#removeAccountHelper(address); + await this.#persistKeyringHelper(); + } + + async redirectUser(snapId: string, url: string, message: string) { + Logger.log( + `SnapKeyring: redirectUser called with \n + - snapId: ${snapId} \n + - url: ${url} \n + - message: ${message} \n`, + ); + } +} + +/** + * Constructs a SnapKeyring builder with specified handlers for managing Snap accounts. + * + * @param messenger - The messenger instace. + * @param helpers - Helpers required by the Snap keyring implementation. + * @returns A Snap keyring builder. + */ +export function snapKeyringBuilder( + messenger: SnapKeyringBuilderMessenger, + helpers: SnapKeyringHelpers, +) { + const builder = (() => + new SnapKeyring( + // @ts-expect-error TODO: Resolve mismatch between base-controller versions. + messenger, + new SnapKeyringImpl(messenger, helpers), + )) as SnapKeyringBuilder; builder.type = SnapKeyring.type; + return builder; -}; +} diff --git a/app/core/SnapKeyring/types.ts b/app/core/SnapKeyring/types.ts index 96521f9ffd14..03cf78e2846c 100644 --- a/app/core/SnapKeyring/types.ts +++ b/app/core/SnapKeyring/types.ts @@ -6,6 +6,7 @@ import { AccountsControllerGetAccountByAddressAction, AccountsControllerSetAccountNameAction, AccountsControllerSetSelectedAccountAction, + AccountsControllerListMultichainAccountsAction, } from '@metamask/accounts-controller'; import type { AcceptRequest, @@ -35,6 +36,7 @@ export type SnapKeyringBuilderAllowActions = | GetSubjectMetadata | AccountsControllerSetSelectedAccountAction | AccountsControllerGetAccountByAddressAction + | AccountsControllerListMultichainAccountsAction | AccountsControllerSetAccountNameAction | SnapControllerHandleRequestActionType | SnapControllerGetSnapActionType; diff --git a/app/core/SnapKeyring/utils/getUniqueAccountName.test.ts b/app/core/SnapKeyring/utils/getUniqueAccountName.test.ts new file mode 100644 index 000000000000..ebefd51af746 --- /dev/null +++ b/app/core/SnapKeyring/utils/getUniqueAccountName.test.ts @@ -0,0 +1,51 @@ +import { InternalAccount } from '@metamask/keyring-internal-api'; +import { getUniqueAccountName } from './getUniqueAccountName'; +import { + createMockInternalAccount, + MOCK_ADDRESS_1, + MOCK_ADDRESS_2, +} from '../../../util/test/accountsControllerTestUtils'; + +describe('getUniqueAccountName', () => { + const mockAccounts: InternalAccount[] = [ + createMockInternalAccount(MOCK_ADDRESS_1, 'Account 1'), + createMockInternalAccount(MOCK_ADDRESS_2, 'Bitcoin Account'), + ]; + + it('returns the suggested name if it is not taken', () => { + const suggestedName = 'Solana Account'; + const result = getUniqueAccountName(mockAccounts, suggestedName); + expect(result).toBe(suggestedName); + }); + + it('appends a number to the name if the suggested name is taken', () => { + const suggestedName = 'Account 1'; + const result = getUniqueAccountName(mockAccounts, suggestedName); + expect(result).toBe('Account 1 2'); + }); + + it('increments the number until it finds an available name', () => { + const extendedAccounts = [ + ...mockAccounts, + createMockInternalAccount('0x123', 'Test Account'), + createMockInternalAccount('0x456', 'Test Account 2'), + createMockInternalAccount('0x789', 'Test Account 3'), + ]; + + const suggestedName = 'Test Account'; + const result = getUniqueAccountName(extendedAccounts, suggestedName); + expect(result).toBe('Test Account 4'); + }); + + it('handles empty accounts array', () => { + const suggestedName = 'New Account'; + const result = getUniqueAccountName([], suggestedName); + expect(result).toBe(suggestedName); + }); + + it('handles empty name suggestion by using a default name pattern', () => { + const suggestedName = ''; + const result = getUniqueAccountName(mockAccounts, suggestedName); + expect(result).toBe(''); // Empty string should remain empty + }); +}); diff --git a/app/core/SnapKeyring/utils/getUniqueAccountName.ts b/app/core/SnapKeyring/utils/getUniqueAccountName.ts new file mode 100644 index 000000000000..a6385a44f5a8 --- /dev/null +++ b/app/core/SnapKeyring/utils/getUniqueAccountName.ts @@ -0,0 +1,27 @@ +import { InternalAccount } from '@metamask/keyring-internal-api'; + +/** + * Get the next available account name based on the suggestion and the list of + * accounts. + * + * @param accounts - The list of accounts to check for name availability + * @param nameSuggestion - The suggested name for the account + * @returns The next available account name based on the suggestion + */ +export function getUniqueAccountName( + accounts: InternalAccount[], + nameSuggestion: string, +): string { + let suffix = 1; + let candidateName = nameSuggestion; + + const isNameTaken = (name: string) => + accounts.some((account) => account.metadata.name === name); + + while (isNameTaken(candidateName)) { + suffix += 1; + candidateName = `${nameSuggestion} ${suffix}`; + } + + return candidateName; +} diff --git a/app/core/SnapKeyring/utils/snaps.ts b/app/core/SnapKeyring/utils/snaps.ts new file mode 100644 index 000000000000..790e7cf4748c --- /dev/null +++ b/app/core/SnapKeyring/utils/snaps.ts @@ -0,0 +1,12 @@ +import { SnapId } from '@metamask/snaps-sdk'; +import PREINSTALLED_SNAPS from '../../../lib/snaps/preinstalled-snaps'; + +/** + * Check if a Snap is a preinstalled Snap. + * + * @param snapId - Snap ID to verify. + * @returns True if Snap is a preinstalled Snap, false otherwise. + */ +export function isSnapPreinstalled(snapId: SnapId) { + return PREINSTALLED_SNAPS.some((snap) => snap.snapId === snapId); +} diff --git a/app/core/Snaps/SnapBridge.ts b/app/core/Snaps/SnapBridge.ts index f6c0078fc888..3e5cb8cadab3 100644 --- a/app/core/Snaps/SnapBridge.ts +++ b/app/core/Snaps/SnapBridge.ts @@ -20,8 +20,8 @@ import Logger from '../../util/Logger'; import snapMethodMiddlewareBuilder from './SnapsMethodMiddleware'; import { SubjectType } from '@metamask/permission-controller'; -import ObjectMultiplex from '@metamask/object-multiplex'; -import createFilterMiddleware from '@metamask/eth-json-rpc-filters'; +import ObjectMultiplex from '@metamask/object-multiplex'; +import createFilterMiddleware from '@metamask/eth-json-rpc-filters'; import createSubscriptionManager from '@metamask/eth-json-rpc-filters/subscriptionManager'; import { providerAsMiddleware } from '@metamask/eth-json-rpc-middleware'; const pump = require('pump'); @@ -64,6 +64,7 @@ export default class SnapBridge { '[SNAP BRIDGE LOG] Engine+setupSnapProvider: Setup bridge for Snap', snapId, ); + this.snapId = snapId; this.stream = connectionStream; this.getRPCMethodMiddleware = getRPCMethodMiddleware; @@ -120,6 +121,7 @@ export default class SnapBridge { Logger.log('[SNAP BRIDGE LOG] Engine+setupProviderConnection'); const outStream = this.#mux.createStream('metamask-provider'); const engine = this.setupProviderEngine(); + const providerStream = createEngineStream({ engine }); // TODO: Replace "any" with type // eslint-disable-next-line @typescript-eslint/no-explicit-any diff --git a/app/core/Snaps/SnapsMethodMiddleware.ts b/app/core/Snaps/SnapsMethodMiddleware.ts index a1929e9d7800..b0251f65a2a7 100644 --- a/app/core/Snaps/SnapsMethodMiddleware.ts +++ b/app/core/Snaps/SnapsMethodMiddleware.ts @@ -71,10 +71,44 @@ const snapMethodMiddlewareBuilder = ( origin, RestrictedMethods.wallet_snap, ), + createInterface: controllerMessenger.call.bind( + controllerMessenger, + 'SnapInterfaceController:createInterface', + origin, + ), + updateInterface: controllerMessenger.call.bind( + controllerMessenger, + 'SnapInterfaceController:updateInterface', + origin, + ), + // eslint-disable-next-line @typescript-eslint/no-explicit-any + getInterfaceContext: (...args: any) => + controllerMessenger.call( + 'SnapInterfaceController:getInterface', + origin, + ...args, + ).context, + // eslint-disable-next-line @typescript-eslint/no-explicit-any + getInterfaceState: (...args: any) => + controllerMessenger.call( + 'SnapInterfaceController:getInterface', + origin, + ...args, + ).state, + resolveInterface: controllerMessenger.call.bind( + controllerMessenger, + 'SnapInterfaceController:resolveInterface', + origin, + ), getSnap: controllerMessenger.call.bind( controllerMessenger, SnapControllerGetSnapAction, ), + updateInterfaceState: controllerMessenger.call.bind( + controllerMessenger, + 'SnapInterfaceController:updateInterfaceState', + origin, + ), handleSnapRpcRequest: async (request: Omit<SnapRpcHookArgs, 'origin'>) => { const snapId = getSnapIdFromRequest(request); @@ -91,6 +125,10 @@ const snapMethodMiddlewareBuilder = ( request: request.request, }); }, + requestUserApproval: + engineContext.ApprovalController.addAndShowApprovalRequest.bind( + engineContext.ApprovalController, + ), }); export default snapMethodMiddlewareBuilder; diff --git a/app/core/Snaps/utils.ts b/app/core/Snaps/utils.ts index b06fc9adc0fd..61caceb773b1 100644 --- a/app/core/Snaps/utils.ts +++ b/app/core/Snaps/utils.ts @@ -1,6 +1,6 @@ -import { ControllerMessenger } from '../Engine'; +import type { BaseControllerMessenger } from '../Engine'; +import type { HandleSnapRequestArgs } from './types'; import { SnapControllerHandleRequestAction } from '../Engine/controllers/SnapController/constants'; -import { HandleSnapRequestArgs } from './types'; /** * Passes a JSON-RPC request object to the SnapController for execution. @@ -13,7 +13,7 @@ import { HandleSnapRequestArgs } from './types'; * @returns The result of the JSON-RPC request. */ export async function handleSnapRequest( - controllerMessenger: ControllerMessenger, + controllerMessenger: BaseControllerMessenger, args: HandleSnapRequestArgs, ) { return await controllerMessenger.call( diff --git a/app/core/WalletConnect/WalletConnect.js b/app/core/WalletConnect/WalletConnect.js index c982e11510c0..1067a3d88c02 100644 --- a/app/core/WalletConnect/WalletConnect.js +++ b/app/core/WalletConnect/WalletConnect.js @@ -26,7 +26,7 @@ import { addTransaction } from '../../util/transaction-controller'; import URL from 'url-parse'; import parseWalletConnectUri from './wc-utils'; import { store } from '../../store'; -import { selectChainId } from '../../selectors/networkController'; +import { selectEvmChainId } from '../../selectors/networkController'; import ppomUtil from '../../../app/lib/ppom/ppom-util'; const hub = new EventEmitter(); @@ -186,7 +186,8 @@ class WalletConnect { }); const { NetworkController } = Engine.context; - const networkClientId = NetworkController.findNetworkClientIdByChainId(chainId); + const networkClientId = + NetworkController.findNetworkClientIdByChainId(chainId); const trx = await addTransaction(payload.params[0], { deviceConfirmedOn: WalletDevice.MM_MOBILE, @@ -311,7 +312,7 @@ class WalletConnect { }; startSession = async (sessionData, existing) => { - const chainId = selectChainId(store.getState()); + const chainId = selectEvmChainId(store.getState()); const selectedAddress = Engine.context.AccountsController.getSelectedAccount().address?.toLowerCase(); const approveData = { diff --git a/app/core/WalletConnect/WalletConnect2Session.ts b/app/core/WalletConnect/WalletConnect2Session.ts index d24bcc976b96..17702189fa1f 100644 --- a/app/core/WalletConnect/WalletConnect2Session.ts +++ b/app/core/WalletConnect/WalletConnect2Session.ts @@ -18,8 +18,8 @@ import METHODS_TO_REDIRECT from './wc-config'; import { Minimizer } from '../NativeModules'; import { WALLET_CONNECT_ORIGIN } from '../../../app/util/walletconnect'; import { - selectChainId, - selectNetworkConfigurations, + selectEvmChainId, + selectEvmNetworkConfigurationsByChainId, } from '../../selectors/networkController'; import { store } from '../../store'; import { addTransaction } from '../../util/transaction-controller'; @@ -346,7 +346,7 @@ class WalletConnect2Session { `WC2::updateSession invalid chainId --- skip ${typeof chainId} chainId=${chainId} accounts=${accounts})`, ); // overwrite chainId with actual value. - chainId = parseInt(selectChainId(store.getState())); + chainId = parseInt(selectEvmChainId(store.getState())); DevLogger.log( `WC2::updateSession overwrite invalid chain Id with selectedChainId=${chainId}`, ); @@ -413,7 +413,7 @@ class WalletConnect2Session { ); // TODO: Misleading variable name, this is not the chain ID. This should be updated to use the chain ID. - const selectedChainId = parseInt(selectChainId(store.getState())); + const selectedChainId = parseInt(selectEvmChainId(store.getState())); if (selectedChainId !== chainId) { DevLogger.log( @@ -438,7 +438,7 @@ class WalletConnect2Session { `formatting chainId=>${chainId} ==> 0x${chainId.toString(16)}`, ); - const networkConfigurations = selectNetworkConfigurations( + const networkConfigurations = selectEvmNetworkConfigurationsByChainId( store.getState(), ); const existingNetworkDefault = getDefaultNetworkByChainId(_chainId); diff --git a/app/core/WalletConnect/WalletConnectV2.test.ts b/app/core/WalletConnect/WalletConnectV2.test.ts index 0350919b153c..b7cdf98316a0 100644 --- a/app/core/WalletConnect/WalletConnectV2.test.ts +++ b/app/core/WalletConnect/WalletConnectV2.test.ts @@ -114,13 +114,13 @@ jest.mock('../Permissions', () => ({ })); jest.mock('../../selectors/networkController', () => ({ - selectChainId: jest.fn().mockReturnValue('0x1'), + selectEvmChainId: jest.fn().mockReturnValue('0x1'), selectProviderConfig: jest.fn().mockReturnValue({ type: 'mainnet', chainId: '0x1', ticker: 'ETH', }), - selectNetworkConfigurations: jest.fn().mockReturnValue({}), + selectEvmNetworkConfigurationsByChainId: jest.fn().mockReturnValue({}), selectSelectedNetworkClientId: jest.fn().mockReturnValue('0x1'), })); diff --git a/app/core/WalletConnect/WalletConnectV2.ts b/app/core/WalletConnect/WalletConnectV2.ts index 432335c676f8..e2fca310e3f3 100644 --- a/app/core/WalletConnect/WalletConnectV2.ts +++ b/app/core/WalletConnect/WalletConnectV2.ts @@ -12,7 +12,7 @@ import { SessionTypes } from '@walletconnect/types'; import { getSdkError } from '@walletconnect/utils'; import { updateWC2Metadata } from '../../../app/actions/sdk'; -import { selectChainId } from '../../selectors/networkController'; +import { selectEvmChainId } from '../../selectors/networkController'; import { store } from '../../store'; import StorageWrapper from '../../store/storage-wrapper'; import Logger from '../../util/Logger'; @@ -96,7 +96,7 @@ export class WC2Manager { ); // TODO: Misleading variable name, this is not the chain ID. This should be updated to use the chain ID. - const chainId = selectChainId(store.getState()); + const chainId = selectEvmChainId(store.getState()); DevLogger.log( `[WC2Manager::constructor chainId=${chainId} type=${typeof chainId}`, this.navigation, @@ -219,7 +219,7 @@ export class WC2Manager { const currentRouteName = navigation.getCurrentRoute()?.name; let core; - const chainId = parseInt(selectChainId(store.getState()), 16); + const chainId = parseInt(selectEvmChainId(store.getState()), 16); DevLogger.log( `WalletConnectV2::init() chainId=${chainId} currentRouteName=${currentRouteName}`, @@ -443,7 +443,7 @@ export class WC2Manager { // use Permission controller const approvedAccounts = await getPermittedAccounts(url); // TODO: Misleading variable name, this is not the chain ID. This should be updated to use the chain ID. - const chainId = selectChainId(store.getState()); + const chainId = selectEvmChainId(store.getState()); DevLogger.log( `WC2::session_proposal getPermittedAccounts for id=${id} hostname=${url}, chainId=${chainId}`, approvedAccounts, diff --git a/app/images/branding/tiny-logo.png b/app/images/branding/tiny-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..fd68aa9d94d03d338e1e644478287e8e3041efcd GIT binary patch literal 1454 zcmV;f1yTBmP)<h;3K|Lk000e1NJLTq001Ze001Zm1^@s6jQ+T7000GbNkl<ZcmeHK zZERCj7=F&VZP%^s`r+7Cn00fTL<Vsn2r>u=ng9tAw*V?XMuGt}Q6MHp0*Me3iHSrL zgC--W7&Qnw;xZ-1C<2=dv6#X5P@urJY_N5^o&9d_y~lIAxeYpctMi|Ik|ur6c|V@> zzURE>Tp)uCGRPnUO)M|a&l&nlFn*{$NOiuhDjj8-h7NgvO8Y*mvakzJ=RL<|0skKK zV)cD1zL;y4@7GHoBaH>8Ly#FLn|jg{fV(SvfUS217FNKVrtNT?Ek(JG=u6H%cSq#Q zW7h+Oud+<_t!1dwQpf`=AsJA(ucnTW&T6E>4>Jn}JhRDH<saT!g~2S`D^MasJ+*}m zcCe-2o)6HI9l^vzh&yyyVQ(LRm@2+z78d1WjWR4TG+yzOW1V4I5>-|z8=T7Z>It<N zyX^EF-x6F$a!AUu<J^YZ4o@l!WQGpULIaw6U}GWNoZyVnV=^On;ZZAl%x)k&b+X{F zOJe!l-qCK2*P6{)ePS+O6Fn`)*?zZ3gyd*#b+<4rRea476N2e?7f|4|>dp)hQ<WVR zCY=C%u3(Q#MRzDsE6<XMwxEQ%UqxaVqgIrl0vgaPF<<oWV~y(thPRtV+>A4(<k*tt znaPIhaRqyt`eC?76vp7jcnMw$<8^kALtx}2Hy`aKF^fHEE^4u2%TX_kDQeUi!7hxK z;CDWJZKTP2mGIh&QNrq1JDEYeon&X|??J<ACkA3*bc~(OeX?(SXux<0s$BRH?HxT3 zk$?rR9OdAO0wP3YLdCA63{zh>Lqx{sD+<XXmq`gpce3OLeMkeEheY)ive@6KEU>+= z3UNlUuGFt&OQ1A9)PMpa;S%p1Lo%U*V?4_=rl6+GM3+y_QR+OoR8I$WE_wai(dE?) zp3dD$ZoX6di%U^vCM1IqXg<VGi7{~u6Np8CIW>S38<h11;8Z==%^H+>(?cu@%wNe6 zjU<eG0=;10d|;|p@N_Z=mo<AP#Na5(6dgT2ehOJ)g;GpHiB2~{P!Qnh{*&_*pyo^9 z3n_BssC6Aqh|Q9%*<w^^?!l#H4hsgtqlegyE<bd#jJ=m7>}rj}Zq`AGMurvSNCXZ( zwv*4jcS+*95^i(`FuGvOA7al>bJ?}xYrag5tb1x>zA0<TNOXzVrc}aQF$+_tl_DOF zpsl?R6~%>$F58q~5EFZGu-Su>vQn&Dxfl~Ft6+a<%1DM)syv$$^DN!_Tdtf=6<>1? zcD-BM=9HDx<uF;`ZT=B?m9r9}_qP`0RW0T(f?!HB5#*}l)lbS(>1ggj%Vqb&K3Peg z;A6Jw3wXLhKrn!q?^fboRQpG4fcM34XizUJ2fni>)cY~Xg+NFtG@wba_r{g;df<_y z2~Ni5?*!(pV!U+3QTaHJsJbI?OrOt*@<r*g7><96KtLwyy>>T(Ak7-#)3`~xrR_W` z$==m~JUcjbgkLGQ6=RVLJNGrlckFAB^pp6zLF`e`QcsX&B4gc@YE4dbv$rr_f-knp zjYb1Wst;8gv(E=PcM|%SY@%C_T;+YYN8j!3)onX`75&RLQOR7wi3WJGlfzi`gspFl zHfn@VuThK7WQ+c=VpVxsj9{08tp203(N|t>xp~OuaL!fu$qw+lx9RYKgu%R;H8AH* zRNJA<XsmTZv90FK*;#uY%qG>o7=wBNSqvm(Ylx_y4w}z?O`KS4*!ulE!?vXk<PI(B z?}d@IYd4h3ykmRXz0yxjZl?Y`?R|12#^Sqoe^88(R+g|^SPbK-1%}sJpET@9C-y)2 zj7;_IA^d#i+{Q~6FHTm4{DOi%mM?i?FaC?{WRO7y8T`-j7cmqLld!7kt^fc407*qo IM6N<$f?lY#0ssI2 literal 0 HcmV?d00001 diff --git a/app/images/image-icons.js b/app/images/image-icons.js index ea8e368969c5..43f0d3fe6e1f 100644 --- a/app/images/image-icons.js +++ b/app/images/image-icons.js @@ -12,8 +12,11 @@ import LINEA_TESTNET from './linea-testnet-logo.png'; import SEPOLIA from './sepolia-logo-dark.png'; import LINEA_MAINNET from './linea-mainnet-logo.png'; import APE_TOKEN from './ape-token.png'; +import SOLANA from './solana-logo.png'; import GRAVITY from './gravity.png'; import KAIA_MAINNET from './kaia.png'; +import FOX_LOGO from '../../app/images/branding/tiny-logo.png'; +import BTC from './bitcoin-logo.png'; export default { PALM, @@ -34,4 +37,7 @@ export default { G: GRAVITY, 'KAIA-MAINNET': KAIA_MAINNET, 'KAIA-KAIROS-TESTNET': KAIA_MAINNET, + SOLANA, + FOX_LOGO, + BTC, }; diff --git a/app/lib/ppom/ppom-util.test.ts b/app/lib/ppom/ppom-util.test.ts index 5eb6ade74061..10bb302809cb 100644 --- a/app/lib/ppom/ppom-util.test.ts +++ b/app/lib/ppom/ppom-util.test.ts @@ -124,11 +124,6 @@ describe('PPOM Utils', () => { const mockIsBlockaidFeatureEnabled = jest.mocked(isBlockaidFeatureEnabled); - const getSupportedChainIdsMock = jest.spyOn( - securityAlertAPI, - 'getSecurityAlertsAPISupportedChainIds', - ); - const normalizeTransactionParamsMock = jest.mocked( normalizeTransactionParams, ); @@ -372,7 +367,6 @@ describe('PPOM Utils', () => { it('uses security alerts API if enabled', async () => { isSecurityAlertsEnabledMock.mockReturnValue(true); - getSupportedChainIdsMock.mockResolvedValue([CHAIN_ID_MOCK]); await PPOMUtil.validateRequest(mockRequest, CHAIN_ID_MOCK); @@ -387,7 +381,6 @@ describe('PPOM Utils', () => { it('uses controller if security alerts API throws', async () => { isSecurityAlertsEnabledMock.mockReturnValue(true); - getSupportedChainIdsMock.mockResolvedValue([CHAIN_ID_MOCK]); validateWithSecurityAlertsAPIMock.mockRejectedValue( new Error('Test Error'), @@ -411,9 +404,6 @@ describe('PPOM Utils', () => { TransactionActions, 'setTransactionSecurityAlertResponse', ); - jest - .spyOn(securityAlertAPI, 'getSecurityAlertsAPISupportedChainIds') - .mockRejectedValue(new Error('Test Error')); await PPOMUtil.validateRequest(mockRequest, CHAIN_ID_MOCK); expect(spy).toHaveBeenCalledTimes(2); }); @@ -451,7 +441,6 @@ describe('PPOM Utils', () => { 'sanitizes request params if method is %s', async (method: string) => { isSecurityAlertsEnabledMock.mockReturnValue(true); - getSupportedChainIdsMock.mockResolvedValue([CHAIN_ID_MOCK]); const firstTwoParams = [ SIGN_TYPED_DATA_PARAMS_MOCK_1, diff --git a/app/lib/ppom/ppom-util.ts b/app/lib/ppom/ppom-util.ts index 14c3997107bc..c76e14528d42 100644 --- a/app/lib/ppom/ppom-util.ts +++ b/app/lib/ppom/ppom-util.ts @@ -18,13 +18,10 @@ import { import { WALLET_CONNECT_ORIGIN } from '../../util/walletconnect'; import AppConstants from '../../core/AppConstants'; import { - getSecurityAlertsAPISupportedChainIds, isSecurityAlertsAPIEnabled, validateWithSecurityAlertsAPI, } from './security-alerts-api'; import { PPOMController } from '@metamask/ppom-validator'; -import { Hex } from '@metamask/utils'; -import { SECURITY_PROVIDER_SUPPORTED_CHAIN_IDS_FALLBACK_LIST } from '../../util/networks'; export interface PPOMRequest { method: string; @@ -72,13 +69,11 @@ async function validateRequest(req: PPOMRequest, transactionId?: string) { NetworkController.state?.selectedNetworkClientId, ); const isConfirmationMethod = CONFIRMATION_METHODS.includes(req.method); - const isSupportedChain = await isChainSupported(chainId); const isBlockaidFeatEnabled = await isBlockaidFeatureEnabled(); if ( !ppomController || !isBlockaidFeatEnabled || - !isConfirmationMethod || - !isSupportedChain + !isConfirmationMethod ) { return; } @@ -138,21 +133,6 @@ async function validateRequest(req: PPOMRequest, transactionId?: string) { } } -async function isChainSupported(chainId: Hex): Promise<boolean> { - let supportedChainIds = SECURITY_PROVIDER_SUPPORTED_CHAIN_IDS_FALLBACK_LIST; - try { - if (isSecurityAlertsAPIEnabled()) { - supportedChainIds = await getSecurityAlertsAPISupportedChainIds(); - } - } catch (e) { - Logger.log( - `Error fetching supported chains from security alerts API: ${e}`, - ); - } - - return supportedChainIds.includes(chainId); -} - async function validateWithController( ppomController: PPOMController, request: PPOMRequest, @@ -257,6 +237,5 @@ function clearSignatureSecurityAlertResponse() { export default { validateRequest, - isChainSupported, clearSignatureSecurityAlertResponse, }; diff --git a/app/lib/ppom/security-alerts-api.test.ts b/app/lib/ppom/security-alerts-api.test.ts index 2ca15d220525..231972e0b86a 100644 --- a/app/lib/ppom/security-alerts-api.test.ts +++ b/app/lib/ppom/security-alerts-api.test.ts @@ -3,7 +3,6 @@ import { ResultType, } from '../../components/Views/confirmations/components/BlockaidBanner/BlockaidBanner.types'; import { - getSecurityAlertsAPISupportedChainIds, validateWithSecurityAlertsAPI, } from './security-alerts-api'; @@ -69,31 +68,4 @@ describe('Security Alerts API', () => { ); }); }); - - describe('getSecurityAlertsAPISupportedChainIds', () => { - it('sends GET request', async () => { - const SUPPORTED_CHAIN_IDS_MOCK = ['0x1', '0x2']; - fetchMock.mockResolvedValue({ - ok: true, - json: async () => SUPPORTED_CHAIN_IDS_MOCK, - }); - const response = await getSecurityAlertsAPISupportedChainIds(); - - expect(response).toEqual(SUPPORTED_CHAIN_IDS_MOCK); - - expect(fetchMock).toHaveBeenCalledTimes(1); - expect(fetchMock).toHaveBeenCalledWith( - `https://example.com/supportedChains`, - undefined, - ); - }); - - it('throws an error if response is not ok', async () => { - fetchMock.mockResolvedValue({ ok: false, status: 404 }); - - await expect(getSecurityAlertsAPISupportedChainIds()).rejects.toThrow( - 'Security alerts API request failed with status: 404', - ); - }); - }); }); diff --git a/app/lib/ppom/security-alerts-api.ts b/app/lib/ppom/security-alerts-api.ts index f710b63f7106..49eff9fe5b79 100644 --- a/app/lib/ppom/security-alerts-api.ts +++ b/app/lib/ppom/security-alerts-api.ts @@ -1,9 +1,7 @@ -import { Hex } from '@metamask/utils'; import { SecurityAlertResponse } from '../../components/Views/confirmations/components/BlockaidBanner/BlockaidBanner.types'; import AppConstants from '../../core/AppConstants'; const ENDPOINT_VALIDATE = 'validate'; -const ENDPOINT_SUPPORTED_CHAINS = 'supportedChains'; export interface SecurityAlertsAPIRequest { method: string; @@ -28,10 +26,6 @@ export async function validateWithSecurityAlertsAPI( }); } -export async function getSecurityAlertsAPISupportedChainIds(): Promise<Hex[]> { - return request(ENDPOINT_SUPPORTED_CHAINS); -} - async function request(endpoint: string, options?: RequestInit) { const url = getUrl(endpoint); diff --git a/app/lib/snaps/SnapsExecutionWebView.test.tsx b/app/lib/snaps/SnapsExecutionWebView.test.tsx new file mode 100644 index 000000000000..6746e2e8c607 --- /dev/null +++ b/app/lib/snaps/SnapsExecutionWebView.test.tsx @@ -0,0 +1,40 @@ +import React from 'react'; +import { render } from '@testing-library/react-native'; + +import { + createWebView, + removeWebView, + SnapsExecutionWebView, +} from './SnapsExecutionWebView'; + +describe('SnapsExecutionWebView', () => { + it('should render correctly', () => { + const wrapper = render(<SnapsExecutionWebView />); + expect(wrapper).toMatchInlineSnapshot(` + <RCTScrollView> + <View> + <View + style={ + { + "height": 0, + } + } + /> + </View> + </RCTScrollView> + `); + }); + + it('should create and remove WebViews correctly', async () => { + const wrapper = render(<SnapsExecutionWebView />); + createWebView('foo'); + createWebView('bar'); + wrapper.rerender(<SnapsExecutionWebView />); + expect(await wrapper.queryByTestId('foo')).toBeTruthy(); + expect(await wrapper.queryByTestId('bar')).toBeTruthy(); + removeWebView('foo'); + wrapper.rerender(<SnapsExecutionWebView />); + expect(await wrapper.queryByTestId('foo')).toBeNull(); + expect(await wrapper.queryByTestId('bar')).toBeTruthy(); + }); +}); diff --git a/app/lib/snaps/SnapsExecutionWebView.tsx b/app/lib/snaps/SnapsExecutionWebView.tsx index 94532fd80c54..b659878f0ca2 100644 --- a/app/lib/snaps/SnapsExecutionWebView.tsx +++ b/app/lib/snaps/SnapsExecutionWebView.tsx @@ -1,5 +1,5 @@ ///: BEGIN:ONLY_INCLUDE_IF(preinstalled-snaps,external-snaps) -import React, { Component, RefObject } from 'react'; +import React, { Component } from 'react'; import { View, ScrollView, NativeSyntheticEvent } from 'react-native'; import { WebViewMessageEvent, WebView } from '@metamask/react-native-webview'; import { createStyles } from './styles'; @@ -8,91 +8,121 @@ import { WebViewError } from '@metamask/react-native-webview/lib/WebViewTypes'; import { PostMessageEvent } from '@metamask/post-message-stream'; // @ts-expect-error Types are currently broken for this. import WebViewHTML from '@metamask/snaps-execution-environments/dist/browserify/webview/index.html'; +import { EmptyObject } from '@metamask/snaps-sdk'; const styles = createStyles(); -interface SnapsExecutionWebViewProps { - injectJavaScript(js: string): void; - registerMessageListener(listener: (event: PostMessageEvent) => void): void; - unregisterMessageListener(listener: (event: PostMessageEvent) => void): void; -} // This is a hack to allow us to asynchronously await the creation of the WebView. -let resolveGetWebView: (arg0: SnapsExecutionWebViewProps) => void; -let rejectGetWebView: (error: NativeSyntheticEvent<WebViewError>) => void; +// eslint-disable-next-line import/no-mutable-exports +export let createWebView: (jobId: string) => Promise<WebViewInterface>; +// eslint-disable-next-line import/no-mutable-exports +export let removeWebView: (jobId: string) => void; -export const getSnapsWebViewPromise = new Promise<WebViewInterface>( - (resolve, reject) => { - resolveGetWebView = resolve; - rejectGetWebView = reject; - }, -); +interface WebViewState { + ref?: WebView; + listener?: (event: PostMessageEvent) => void; + props: { + onWebViewMessage: (data: WebViewMessageEvent) => void; + onWebViewLoad: () => void; + onWebViewError: (error: NativeSyntheticEvent<WebViewError>) => void; + ref: (ref: WebView) => void; + }; +} // This is a class component because storing the references we are don't work in functional components. export class SnapsExecutionWebView extends Component { - // TODO: Replace "any" with type - // eslint-disable-next-line @typescript-eslint/no-explicit-any - webViewRef: RefObject<WebView> | any = null; - // TODO: Replace "any" with type - // eslint-disable-next-line @typescript-eslint/no-explicit-any - listener: any = null; - - // TODO: Replace "any" with type - // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-useless-constructor - constructor(props: any) { + webViews: Record<string, WebViewState> = {}; + + constructor(props: EmptyObject) { super(props); - } - // TODO: Replace "any" with type - // eslint-disable-next-line @typescript-eslint/no-explicit-any - setWebViewRef(ref: React.RefObject<WebView<{ any: any }>> | null) { - this.webViewRef = ref; + createWebView = this.createWebView.bind(this); + removeWebView = this.removeWebView.bind(this); } - onWebViewLoad() { - const api = { - injectJavaScript: (js: string) => { - this.webViewRef?.injectJavaScript(js); - }, - registerMessageListener: ( - listener: (event: PostMessageEvent) => void, - ) => { - this.listener = listener; - }, - unregisterMessageListener: ( - _listener: (event: PostMessageEvent) => void, - ) => { - this.listener = null; - }, - }; - - resolveGetWebView(api); - } + createWebView(jobId: string) { + const promise = new Promise<WebViewInterface>((resolve, reject) => { + const onWebViewLoad = () => { + const api = { + injectJavaScript: (js: string) => { + this.webViews[jobId]?.ref?.injectJavaScript(js); + }, + registerMessageListener: ( + listener: (event: PostMessageEvent) => void, + ) => { + if (this.webViews[jobId]) { + this.webViews[jobId].listener = listener; + } + }, + unregisterMessageListener: ( + _listener: (event: PostMessageEvent) => void, + ) => { + if (this.webViews[jobId]) { + this.webViews[jobId].listener = undefined; + } + }, + }; + resolve(api); + }; - onWebViewError(error: NativeSyntheticEvent<WebViewError>) { - rejectGetWebView(error); + const onWebViewMessage = (data: WebViewMessageEvent) => { + if (this.webViews[jobId]?.listener) { + this.webViews[jobId].listener?.( + data.nativeEvent as unknown as PostMessageEvent, + ); + } + }; + + const onWebViewError = (error: NativeSyntheticEvent<WebViewError>) => { + reject(error); + }; + + const setWebViewRef = (ref: WebView) => { + if (this.webViews[jobId]) { + this.webViews[jobId].ref = ref; + } + }; + + this.webViews[jobId] = { + props: { + onWebViewLoad, + onWebViewError, + onWebViewMessage, + ref: setWebViewRef, + }, + }; + }); + + // Force re-render. + this.forceUpdate(); + + return promise; } - onWebViewMessage(data: WebViewMessageEvent) { - if (this.listener) { - this.listener(data.nativeEvent); - } + removeWebView(jobId: string) { + delete this.webViews[jobId]; + + // Force re-render. + this.forceUpdate(); } render() { return ( <ScrollView> <View style={styles.webview}> - <WebView - ref={ - this.setWebViewRef as unknown as React.RefObject<WebView> | null - } - source={{ html: WebViewHTML, baseUrl: 'https://localhost' }} - onMessage={this.onWebViewMessage} - onError={this.onWebViewError} - onLoadEnd={this.onWebViewLoad} - originWhitelist={['*']} - javaScriptEnabled - /> + {Object.entries(this.webViews).map(([key, { props }]) => ( + <WebView + testID={key} + key={key} + ref={props.ref} + source={{ html: WebViewHTML, baseUrl: 'https://localhost' }} + onMessage={props.onWebViewMessage} + onError={props.onWebViewError} + onLoadEnd={props.onWebViewLoad} + originWhitelist={['*']} + javaScriptEnabled + /> + ))} </View> </ScrollView> ); diff --git a/app/reducers/fiatOrders/index.ts b/app/reducers/fiatOrders/index.ts index 40eec1c6938a..99f4d5bd3c0f 100644 --- a/app/reducers/fiatOrders/index.ts +++ b/app/reducers/fiatOrders/index.ts @@ -1,7 +1,7 @@ import { Order } from '@consensys/on-ramp-sdk'; import { createSelector } from 'reselect'; import { Region } from '../../components/UI/Ramp/types'; -import { selectChainId } from '../../selectors/networkController'; +import { selectEvmChainId } from '../../selectors/networkController'; import { selectSelectedInternalAccountFormattedAddress } from '../../selectors/accountsController'; import { FIAT_ORDER_PROVIDERS, @@ -146,7 +146,7 @@ const ordersSelector = (state: RootState) => (state.fiatOrders.orders as FiatOrdersState['orders']) || []; export const chainIdSelector: (state: RootState) => string = ( state: RootState, -) => getDecimalChainId(selectChainId(state)); +) => getDecimalChainId(selectEvmChainId(state)); export const selectedAddressSelector: ( state: RootState, ) => string | undefined = (state: RootState) => diff --git a/app/reducers/swaps/index.js b/app/reducers/swaps/index.js index 09cfc620d241..2023c8e0f10a 100644 --- a/app/reducers/swaps/index.js +++ b/app/reducers/swaps/index.js @@ -3,7 +3,7 @@ import { isMainnetByChainId } from '../../util/networks'; import { safeToChecksumAddress } from '../../util/address'; import { toLowerCaseEquals } from '../../util/general'; import { lte } from '../../util/lodash'; -import { selectChainId } from '../../selectors/networkController'; +import { selectEvmChainId } from '../../selectors/networkController'; import { selectAllTokens, selectTokens, @@ -54,7 +54,7 @@ function addMetadata(chainId, tokens, tokenList) { } // * Selectors -const chainIdSelector = selectChainId; +const chainIdSelector = selectEvmChainId; const swapsStateSelector = (state) => state.swaps; /** * Returns the swaps liveness state @@ -261,7 +261,7 @@ export const swapsTokensObjectSelector = createSelector( result[token.address] = undefined; } return result; - } + }, ); /** diff --git a/app/selectors/accountTrackerController.test.ts b/app/selectors/accountTrackerController.test.ts index e33c12f7fd5d..53a219fe08e2 100644 --- a/app/selectors/accountTrackerController.test.ts +++ b/app/selectors/accountTrackerController.test.ts @@ -7,6 +7,7 @@ import { RootState } from '../reducers'; import { selectAccountBalanceByChainId } from './accountTrackerController'; import { mockNetworkState } from '../util/test/network'; import mockedEngine from '../core/__mocks__/MockedEngine'; +import { SolScope } from '@metamask/keyring-api'; const MOCK_CHAIN_ID = '0x1'; @@ -39,6 +40,11 @@ describe('selectAccountBalanceByChainId', () => { }, }, }, + MultichainNetworkController: { + isEvmSelected: true, + selectedMultichainNetworkChainId: SolScope.Mainnet, + multichainNetworkConfigurationsByChainId: {}, + }, }, }, } as unknown as RootState); @@ -48,6 +54,12 @@ describe('selectAccountBalanceByChainId', () => { const result = selectAccountBalanceByChainId({ engine: { backgroundState: { + MultichainNetworkController: { + isEvmSelected: true, + selectedMultichainNetworkChainId: SolScope.Mainnet, + + multichainNetworkConfigurationsByChainId: {}, + }, NetworkController: { ...mockNetworkState({ id: 'sepolia', @@ -69,7 +81,7 @@ describe('selectAccountBalanceByChainId', () => { } as any, }, }, - } as RootState); + } as unknown as RootState); expect(result).toBeUndefined(); }); }); diff --git a/app/selectors/accountTrackerController.ts b/app/selectors/accountTrackerController.ts index 0798142afa0e..0de8689d254f 100644 --- a/app/selectors/accountTrackerController.ts +++ b/app/selectors/accountTrackerController.ts @@ -1,4 +1,3 @@ - import { createSelector } from 'reselect'; import { AccountTrackerControllerState, @@ -6,7 +5,7 @@ import { } from '@metamask/assets-controllers'; import { RootState } from '../reducers'; import { createDeepEqualSelector } from './util'; -import { selectChainId } from './networkController'; +import { selectEvmChainId } from './networkController'; import { selectSelectedInternalAccountFormattedAddress } from './accountsController'; const selectAccountTrackerControllerState = (state: RootState) => @@ -29,7 +28,7 @@ export const selectAccountsLength = createSelector( ); export const selectAccountBalanceByChainId = createDeepEqualSelector( selectAccountsByChainId, - selectChainId, + selectEvmChainId, selectSelectedInternalAccountFormattedAddress, (accountsByChainId, chainId, selectedInternalAccountChecksummedAddress) => { const accountsBalance = selectedInternalAccountChecksummedAddress diff --git a/app/selectors/accountTrackerControllerReRenders.test.tsx b/app/selectors/accountTrackerControllerReRenders.test.tsx index d384e46faff4..90d1b07b74b5 100644 --- a/app/selectors/accountTrackerControllerReRenders.test.tsx +++ b/app/selectors/accountTrackerControllerReRenders.test.tsx @@ -30,6 +30,7 @@ import { selectSelectedInternalAccountFormattedAddress, } from './accountsController'; import { selectChainId } from './networkController'; +import { MultichainNetworkController } from '@metamask/multichain-network-controller'; const MOCK_CHAIN_ID = '0x1'; const MOCK_CHAIN_ID_2 = '0x2'; @@ -107,6 +108,13 @@ jest.mock('../core/Engine', () => ({ }, }, } as Partial<NetworkController['state']>, + MultichainNetworkController: { + isEvmSelected: true, + selectedMultichainNetworkChainId: + 'solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp', + + multichainNetworkConfigurationsByChainId: {}, + } as Partial<MultichainNetworkController['state']>, AccountsController: { internalAccounts: { accounts: { @@ -232,6 +240,13 @@ describe('selectAccountBalanceByChainId', () => { }, }, } as Partial<NetworkController['state']>, + MultichainNetworkController: { + isEvmSelected: true, + selectedMultichainNetworkChainId: + 'solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp', + + multichainNetworkConfigurationsByChainId: {}, + } as Partial<MultichainNetworkController['state']>, AccountsController: MOCK_ACCOUNTS_CONTROLLER_STATE, AccountTrackerController: { accountsByChainId: { diff --git a/app/selectors/accountsController.test.ts b/app/selectors/accountsController.test.ts index f4c6a51d5c36..ed9d37694b08 100644 --- a/app/selectors/accountsController.test.ts +++ b/app/selectors/accountsController.test.ts @@ -12,7 +12,7 @@ import { selectSelectedInternalAccount, selectInternalAccounts, selectSelectedInternalAccountFormattedAddress, - hasCreatedBtcMainnetAccount, + selectHasCreatedBtcMainnetAccount, hasCreatedBtcTestnetAccount, } from './accountsController'; import { @@ -235,12 +235,12 @@ describe('Bitcoin Account Selectors', () => { describe('hasCreatedBtcMainnetAccount', () => { it('returns true when a BTC mainnet account exists', () => { const state = getStateWithAccount(btcMainnetAccount); - expect(hasCreatedBtcMainnetAccount(state)).toBe(true); + expect(selectHasCreatedBtcMainnetAccount(state)).toBe(true); }); it('returns false when no BTC mainnet account exists', () => { const state = getStateWithAccount(btcTestnetAccount); - expect(hasCreatedBtcMainnetAccount(state)).toBe(false); + expect(selectHasCreatedBtcMainnetAccount(state)).toBe(false); }); }); diff --git a/app/selectors/accountsController.ts b/app/selectors/accountsController.ts index f6811b6b4d02..d841961e93d2 100644 --- a/app/selectors/accountsController.ts +++ b/app/selectors/accountsController.ts @@ -8,9 +8,10 @@ import { EthMethod } from '@metamask/keyring-api'; import { InternalAccount } from '@metamask/keyring-internal-api'; import { getFormattedAddressFromInternalAccount, - ///: BEGIN:ONLY_INCLUDE_IF(keyring-snaps) + isSolanaAccount, isBtcAccount, isBtcMainnetAddress, + ///: BEGIN:ONLY_INCLUDE_IF(keyring-snaps) isBtcTestnetAddress, ///: END:ONLY_INCLUDE_IF } from '../core/Multichain/utils'; @@ -99,16 +100,27 @@ export const selectCanSignTransactions = createSelector( selectedAccount?.methods?.includes(EthMethod.SignTransaction) ?? false, ); -///: BEGIN:ONLY_INCLUDE_IF(keyring-snaps) +/** + * A selector that returns whether the user has already created a Solana mainnet account + */ +export const selectHasCreatedSolanaMainnetAccount = createSelector( + selectInternalAccounts, + (accounts) => accounts.some((account) => isSolanaAccount(account)), +); + /** * A selector that returns whether the user has already created a Bitcoin mainnet account */ -export function hasCreatedBtcMainnetAccount(state: RootState): boolean { - const accounts = selectInternalAccounts(state); - return accounts.some( - (account) => isBtcAccount(account) && isBtcMainnetAddress(account.address), - ); -} +export const selectHasCreatedBtcMainnetAccount = createSelector( + selectInternalAccounts, + (accounts) => + accounts.some( + (account) => + isBtcAccount(account) && isBtcMainnetAddress(account.address), + ), +); + +///: BEGIN:ONLY_INCLUDE_IF(keyring-snaps) /** * A selector that returns whether the user has already created a Bitcoin testnet account @@ -119,4 +131,15 @@ export function hasCreatedBtcTestnetAccount(state: RootState): boolean { (account) => isBtcAccount(account) && isBtcTestnetAddress(account.address), ); } + +/** + * A selector that returns the solana account address + * @param state - Root redux state + * @returns - The solana account address + */ +export const selectSolanaAccountAddress = createSelector( + selectInternalAccounts, + (accounts) => accounts.find((account) => isSolanaAccount(account))?.address, +); + ///: END:ONLY_INCLUDE_IF diff --git a/app/selectors/addressBookController.ts b/app/selectors/addressBookController.ts index eff948309b4a..95ad8e2bb5a5 100644 --- a/app/selectors/addressBookController.ts +++ b/app/selectors/addressBookController.ts @@ -1,6 +1,8 @@ import { RootState } from '../reducers'; import { createSelector } from 'reselect'; import { AddressBookControllerState } from '@metamask/address-book-controller'; +import { createDeepEqualSelector } from './util'; +import { Hex } from '@metamask/utils'; export const selectAddressBookControllerState = (state: RootState) => state.engine.backgroundState.AddressBookController; @@ -10,3 +12,14 @@ export const selectAddressBook = createSelector( (addressBookControllerState: AddressBookControllerState) => addressBookControllerState.addressBook, ); + +export const selectAddressBookByChain = createDeepEqualSelector( + [selectAddressBook, + (_state: RootState, chainId: Hex) => chainId], + (addressBook: AddressBookControllerState['addressBook'], chainId: Hex) => { + if (!addressBook[chainId]) { + return []; + } + return Object.values(addressBook[chainId]); + } +); diff --git a/app/selectors/currencyRateController.ts b/app/selectors/currencyRateController.ts index 70fca09167fb..44e615c7cf18 100644 --- a/app/selectors/currencyRateController.ts +++ b/app/selectors/currencyRateController.ts @@ -2,7 +2,7 @@ import { createSelector } from 'reselect'; import { CurrencyRateState } from '@metamask/assets-controllers'; import { RootState } from '../reducers'; import { - selectChainId, + selectEvmChainId, selectNativeCurrencyByChainId, selectTicker, } from './networkController'; @@ -13,7 +13,7 @@ const selectCurrencyRateControllerState = (state: RootState) => export const selectConversionRate = createSelector( selectCurrencyRateControllerState, - selectChainId, + selectEvmChainId, selectTicker, (state: RootState) => state.settings.showFiatOnTestnets, ( diff --git a/app/selectors/featureFlagController/index.ts b/app/selectors/featureFlagController/index.ts index a5ec99b0a5c6..88af37109f9e 100644 --- a/app/selectors/featureFlagController/index.ts +++ b/app/selectors/featureFlagController/index.ts @@ -1,6 +1,6 @@ import { createSelector } from 'reselect'; import { StateWithPartialEngine } from './types'; -import { isRemoteFeatureFlagOverrideActivated } from '../../core/Engine/controllers/RemoteFeatureFlagController/utils'; +import { isRemoteFeatureFlagOverrideActivated } from '../../core/Engine/controllers/remote-feature-flag-controller'; export interface ConfirmationRedesignRemoteFlags { signatures: boolean; diff --git a/app/selectors/gasFeeController.ts b/app/selectors/gasFeeController.ts index dee50aef14a9..06edf62655c0 100644 --- a/app/selectors/gasFeeController.ts +++ b/app/selectors/gasFeeController.ts @@ -1,7 +1,59 @@ import { createSelector } from 'reselect'; -import { GasFeeState } from '@metamask/gas-fee-controller'; +import { + GasFeeState, + type GasFeeEstimates, +} from '@metamask/gas-fee-controller'; +import { + TransactionMeta, + mergeGasFeeEstimates, +} from '@metamask/transaction-controller'; + import { RootState } from '../reducers'; import { createDeepEqualSelector } from './util'; +import { selectPendingApprovals } from './approvalController'; +import { selectTransactionMetadataById } from './transactionController'; + +export enum GasEstimateTypes { + feeMarket = 'fee-market', + legacy = 'legacy', + ethGasPrice = 'eth_gasPrice', + none = 'none', +} + +export enum NetworkCongestionThresholds { + notBusy = 0, + stable = 0.33, + busy = 0.9, +} + +function getGasFeeControllerEstimatesByChainId( + state: RootState, + chainId: string, +) { + return state.engine.backgroundState.GasFeeController + .gasFeeEstimatesByChainId?.[chainId]?.gasFeeEstimates as GasFeeEstimates; +} + +function getTransactionGasFeeEstimatesByChainId( + state: RootState, + chainId: string, +) { + const pendingApprovals = selectPendingApprovals(state); + const pendingApprovalList = Object.values(pendingApprovals ?? {}); + const firstPendingApprovalId = pendingApprovalList?.[0]?.id; + + const transactionMetadata = selectTransactionMetadataById( + state, + firstPendingApprovalId, + ) as TransactionMeta; + const transactionChainId = transactionMetadata?.chainId; + + if (transactionChainId !== chainId) { + return undefined; + } + + return transactionMetadata?.gasFeeEstimates; +} export const selectGasFeeControllerState = (state: RootState) => state.engine.backgroundState.GasFeeController; @@ -20,3 +72,18 @@ export const selectGasFeeControllerEstimateType = createSelector( selectGasFeeControllerState, (gasFeeControllerState: GasFeeState) => gasFeeControllerState.gasEstimateType, ); + +export const selectGasFeeEstimatesByChainId = createSelector( + getGasFeeControllerEstimatesByChainId, + getTransactionGasFeeEstimatesByChainId, + (gasFeeControllerEstimates, transactionGasFeeEstimates) => { + if (transactionGasFeeEstimates) { + return mergeGasFeeEstimates({ + gasFeeControllerEstimates, + transactionGasFeeEstimates, + }); + } + + return gasFeeControllerEstimates; + }, +); diff --git a/app/selectors/keyringController/testUtils.ts b/app/selectors/keyringController/testUtils.ts index cf5ef7b998f0..1c927fd65dd2 100644 --- a/app/selectors/keyringController/testUtils.ts +++ b/app/selectors/keyringController/testUtils.ts @@ -15,4 +15,5 @@ export const MOCK_KEYRINGS: KeyringObject[] = [ export const MOCK_KEYRING_CONTROLLER: KeyringControllerState = { isUnlocked: true, keyrings: MOCK_KEYRINGS, + keyringsMetadata: [], }; diff --git a/app/selectors/multichain/evm.test.ts b/app/selectors/multichain/evm.test.ts deleted file mode 100644 index 72f5ce6e9b8b..000000000000 --- a/app/selectors/multichain/evm.test.ts +++ /dev/null @@ -1,172 +0,0 @@ -import { RootState } from '../../reducers'; -import { - selectedAccountNativeTokenCachedBalanceByChainId, - selectAccountTokensAcrossChains, -} from './evm'; - -describe('Multichain Selectors', () => { - const mockState: RootState = { - engine: { - backgroundState: { - NetworkController: { - networkConfigurationsByChainId: { - '0x1': { - chainId: '0x1', - name: 'Ethereum Mainnet', - nativeCurrency: 'ETH', - }, - '0x89': { - chainId: '0x89', - name: 'Polygon', - nativeCurrency: 'MATIC', - }, - }, - }, - AccountTrackerController: { - accountsByChainId: { - '0x1': { - '0xAddress1': { - balance: '0x1', - stakedBalance: '0x2', - }, - }, - '0x89': { - '0xAddress1': { - balance: '0x3', - stakedBalance: '0x0', - }, - }, - }, - }, - TokensController: { - allTokens: { - '0x1': { - '0xAddress1': [ - { - address: '0xToken1', - symbol: 'TK1', - decimals: 18, - balance: '1000000000000000000', - }, - ], - }, - }, - }, - TokenBalancesController: { - tokenBalances: { - '0xAddress1': { - '0x1': { - '0xToken1': '0x1', - }, - }, - }, - }, - TokenRatesController: { - marketData: { - '0x1': { - '0xToken1': { price: 100 }, - }, - }, - }, - CurrencyRateController: { - currentCurrency: 'USD', - conversionRates: { - ETH: 2000, - MATIC: 1, - }, - }, - AccountsController: { - internalAccounts: { - selectedAccount: '0xAddress1', - accounts: { - '0xAddress1': { - address: '0xAddress1', - }, - }, - }, - }, - }, - }, - } as unknown as RootState; - - describe('selectedAccountNativeTokenCachedBalanceByChainId', () => { - it('should return native token balances for all chains', () => { - const result = - selectedAccountNativeTokenCachedBalanceByChainId(mockState); - expect(result).toEqual({ - '0x1': { - balance: '0x1', - stakedBalance: '0x2', - isStaked: true, - name: '', - }, - '0x89': { - balance: '0x3', - stakedBalance: '0x0', - isStaked: false, - name: '', - }, - }); - }); - - it('should return empty object when no account is selected', () => { - const stateWithoutAccount = { - ...mockState, - engine: { - ...mockState.engine, - backgroundState: { - ...mockState.engine.backgroundState, - AccountsController: { - internalAccounts: { - selectedAccount: undefined, - accounts: {}, - }, - }, - }, - }, - } as unknown as RootState; - - const result = - selectedAccountNativeTokenCachedBalanceByChainId(stateWithoutAccount); - expect(result).toEqual({}); - }); - }); - - describe('selectAccountTokensAcrossChains', () => { - it('should return tokens across all chains for selected account', () => { - const result = selectAccountTokensAcrossChains(mockState); - expect(result).toHaveProperty('0x1'); - - const chain1Tokens = result['0x1'] || []; - expect(chain1Tokens.length).toBeGreaterThan(0); - - const ethToken = chain1Tokens.find( - (token) => token.symbol === 'Ethereum' && !token.isStaked, - ); - expect(ethToken).toBeDefined(); - expect(ethToken?.isNative).toBe(true); - expect(ethToken?.isETH).toBe(true); - - const stakedEthToken = chain1Tokens.find( - (token) => token.symbol === 'Ethereum' && token.isStaked, - ); - expect(stakedEthToken).toBeDefined(); - expect(stakedEthToken?.isNative).toBe(true); - expect(stakedEthToken?.isStaked).toBe(true); - - const tk1Token = chain1Tokens.find((token) => token.symbol === 'TK1'); - expect(tk1Token).toBeDefined(); - expect(tk1Token?.isNative).toBe(false); - }); - - it('should handle multiple chains correctly', () => { - const result = selectAccountTokensAcrossChains(mockState); - expect(result).toHaveProperty('0x89'); - const polygonTokens = result['0x89']; - expect(polygonTokens.length).toBeGreaterThan(0); - expect(polygonTokens.some((token) => token.symbol === 'MATIC')).toBe( - true, - ); - }); - }); -}); diff --git a/app/selectors/multichain/evm.test.tsx b/app/selectors/multichain/evm.test.tsx new file mode 100644 index 000000000000..f9ea4252d47f --- /dev/null +++ b/app/selectors/multichain/evm.test.tsx @@ -0,0 +1,402 @@ +import React from 'react'; +import { Text } from 'react-native'; +import { RootState } from '../../reducers'; +import { + selectedAccountNativeTokenCachedBalanceByChainId, + selectAccountTokensAcrossChains, +} from './evm'; +import { SolScope } from '@metamask/keyring-api'; +import { GetByQuery } from '@testing-library/react-native/build/queries/makeQueries'; +import { + TextMatch, + TextMatchOptions, +} from '@testing-library/react-native/build/matches'; +import { CommonQueryOptions } from '@testing-library/react-native/build/queries/options'; +import { Store } from 'redux'; +import { useSelector } from 'react-redux'; +import renderWithProvider from '../../util/test/renderWithProvider'; +import Engine, { EngineState } from '../../core/Engine'; +import { act } from '@testing-library/react-native'; +import { + AccountTrackerController, + TokensController, +} from '@metamask/assets-controllers'; +import { + ETH_CHAIN_ID, + POLYGON_CHAIN_ID, +} from '@metamask/swaps-controller/dist/constants'; +import { AccountsControllerState } from '@metamask/accounts-controller'; + +describe('Multichain Selectors', () => { + const mockState: RootState = { + engine: { + backgroundState: { + NetworkController: { + networkConfigurationsByChainId: { + '0x1': { + chainId: '0x1', + name: 'Ethereum Mainnet', + nativeCurrency: 'ETH', + }, + '0x89': { + chainId: '0x89', + name: 'Polygon', + nativeCurrency: 'MATIC', + }, + }, + }, + AccountTrackerController: { + accountsByChainId: { + '0x1': { + '0xAddress1': { + balance: '0x1', + stakedBalance: '0x2', + }, + }, + '0x89': { + '0xAddress1': { + balance: '0x3', + stakedBalance: '0x0', + }, + }, + }, + }, + TokensController: { + allTokens: { + '0x1': { + '0xAddress1': [ + { + address: '0xToken1', + symbol: 'TK1', + decimals: 18, + balance: '1000000000000000000', + }, + ], + }, + }, + }, + TokenBalancesController: { + tokenBalances: { + '0xAddress1': { + '0x1': { + '0xToken1': '0x1', + }, + }, + }, + }, + TokenRatesController: { + marketData: { + '0x1': { + '0xToken1': { price: 100 }, + }, + }, + }, + CurrencyRateController: { + currentCurrency: 'USD', + conversionRates: { + ETH: 2000, + MATIC: 1, + }, + }, + AccountsController: { + internalAccounts: { + selectedAccount: '0xAddress1', + accounts: { + '0xAddress1': { + address: '0xAddress1', + }, + }, + }, + }, + MultichainNetworkController: { + multichainNetworkConfigurationsByChainId: { + [SolScope.Mainnet]: { + chainId: SolScope.Mainnet, + }, + }, + + isEvmSelected: true, + selectedMultichainNetworkChainId: SolScope.Mainnet, + }, + }, + }, + } as unknown as RootState; + + describe('selectedAccountNativeTokenCachedBalanceByChainId', () => { + it('should return native token balances for all chains', () => { + const result = + selectedAccountNativeTokenCachedBalanceByChainId(mockState); + expect(result).toEqual({ + '0x1': { + balance: '0x1', + stakedBalance: '0x2', + isStaked: true, + name: '', + }, + '0x89': { + balance: '0x3', + stakedBalance: '0x0', + isStaked: false, + name: '', + }, + }); + }); + + it('should return empty object when no account is selected', () => { + const stateWithoutAccount = { + ...mockState, + engine: { + ...mockState.engine, + backgroundState: { + ...mockState.engine.backgroundState, + AccountsController: { + internalAccounts: { + selectedAccount: undefined, + accounts: {}, + }, + }, + }, + }, + } as unknown as RootState; + + const result = + selectedAccountNativeTokenCachedBalanceByChainId(stateWithoutAccount); + expect(result).toEqual({}); + }); + }); + + describe('selectAccountTokensAcrossChains', () => { + it('should return tokens across all chains for selected account', () => { + const result = selectAccountTokensAcrossChains(mockState); + expect(result).toHaveProperty('0x1'); + + const chain1Tokens = result['0x1'] || []; + expect(chain1Tokens.length).toBeGreaterThan(0); + + const ethToken = chain1Tokens.find( + (token) => token.symbol === 'Ethereum' && !token.isStaked, + ); + expect(ethToken).toBeDefined(); + expect(ethToken?.isNative).toBe(true); + expect(ethToken?.isETH).toBe(true); + + const stakedEthToken = chain1Tokens.find( + (token) => token.symbol === 'Ethereum' && token.isStaked, + ); + expect(stakedEthToken).toBeDefined(); + expect(stakedEthToken?.isNative).toBe(true); + expect(stakedEthToken?.isStaked).toBe(true); + + const tk1Token = chain1Tokens.find((token) => token.symbol === 'TK1'); + expect(tk1Token).toBeDefined(); + expect(tk1Token?.isNative).toBe(false); + }); + + it('should handle multiple chains correctly', () => { + const result = selectAccountTokensAcrossChains(mockState); + expect(result).toHaveProperty('0x89'); + const polygonTokens = result['0x89']; + expect(polygonTokens.length).toBeGreaterThan(0); + expect(polygonTokens.some((token) => token.symbol === 'MATIC')).toBe( + true, + ); + }); + }); +}); + +const mockAccountId = '0xAddress1'; + +const mockAllTokens = { + [ETH_CHAIN_ID]: { + [mockAccountId]: [ + { + address: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48', + symbol: 'USDC', + decimals: 6, + name: 'USDC', + }, + { + address: '0x6B175474E89094C44Da98b954EedeAC495271d0F', + symbol: 'DAI', + decimals: 18, + name: 'Dai Stablecoin', + }, + ], + }, + [POLYGON_CHAIN_ID]: { + [mockAccountId]: [ + { + address: '0x0D1E753a25eBda689453309112904807625bEFBe', + symbol: 'CAKE', + decimals: 18, + image: + 'https://static.cx.metamask.io/api/v1/tokenIcons/59144/0x0d1e753a25ebda689453309112904807625befbe.png', + aggregators: ['CoinGecko', 'Lifi', 'Rubic'], + }, + ], + }, +}; + +const mockNetworkConfigurationsByChainId = { + [ETH_CHAIN_ID]: { + chainId: ETH_CHAIN_ID, + name: 'Ethereum Mainnet', + nativeCurrency: 'ETH', + }, + [POLYGON_CHAIN_ID]: { + chainId: POLYGON_CHAIN_ID, + name: 'Polygon', + nativeCurrency: 'POL', + }, +}; + +const mockAccountsByChainId = { + [ETH_CHAIN_ID]: { + [mockAccountId]: { + balance: '0x1', + stakedBalance: '0x2', + }, + }, + [POLYGON_CHAIN_ID]: { + [mockAccountId]: { + balance: '0x3', + }, + }, +}; + +const mockInternalAccounts = { + selectedAccount: mockAccountId, + accounts: { + [mockAccountId]: { + address: mockAccountId, + }, + }, +}; + +// Mock Engine for render tests +jest.mock('../../core/Engine', () => ({ + context: {}, + state: { + NetworkController: { + networkConfigurationsByChainId: mockNetworkConfigurationsByChainId, + }, + AccountTrackerController: { + accountsByChainId: mockAccountsByChainId, + } as Partial<AccountTrackerController['state']>, + TokensController: { + allTokens: mockAllTokens, + } as Partial<TokensController['state']>, + AccountsController: { + internalAccounts: mockInternalAccounts, + } as unknown as Partial<AccountsControllerState>, + } as EngineState, +})); + +describe('re-renders', () => { + const mockState: RootState = { + engine: { + backgroundState: { + NetworkController: { + networkConfigurationsByChainId: mockNetworkConfigurationsByChainId, + }, + AccountTrackerController: { + accountsByChainId: mockAccountsByChainId, + }, + TokensController: { + allTokens: mockAllTokens, + }, + AccountsController: { + internalAccounts: mockInternalAccounts, + }, + }, + }, + } as unknown as RootState; + const mockRenderCall = jest.fn(); + let getByText: GetByQuery<TextMatch, CommonQueryOptions & TextMatchOptions>; + let store: Store; + + beforeEach(() => { + mockRenderCall.mockReset(); + // Clear memoized selectors for each test + selectAccountTokensAcrossChains.memoizedResultFunc.clearCache(); + const MockComponent = () => { + const selectedAccountTokensChains = useSelector( + selectAccountTokensAcrossChains, + ); + mockRenderCall(); + return ( + <> + {selectedAccountTokensChains[ETH_CHAIN_ID]?.map((token) => ( + <Text key={token.address}>{token.name}</Text> + ))} + </> + ); + }; + const { store: testStore, getByText: testGetByText } = renderWithProvider( + <MockComponent />, + { + state: mockState, + }, + ); + getByText = testGetByText; + store = testStore; + }); + + it('re-renders token list once when new token is added', async () => { + expect(mockRenderCall).toHaveBeenCalledTimes(1); + mockRenderCall.mockReset(); + + const newToken = { + address: '0xNewTokenAddress', + symbol: 'NEW', + decimals: 18, + name: 'New Token', + }; + + Engine.state.TokensController.allTokens = { + ...mockAllTokens, + [ETH_CHAIN_ID]: { + ...mockAllTokens[ETH_CHAIN_ID], + [mockAccountId]: [ + ...mockAllTokens[ETH_CHAIN_ID][mockAccountId], + newToken, + ], + }, + }; + + act(() => { + store.dispatch({ + type: 'UPDATE_BG_STATE', + payload: { + key: 'TokensController', + }, + }); + }); + + expect(mockRenderCall).toHaveBeenCalledTimes(1); + expect(getByText(newToken.name)).toBeDefined(); + }); + + it('should return exactly same data if state does not change', async () => { + expect(mockRenderCall).toHaveBeenCalledTimes(1); + mockRenderCall.mockReset(); + const result1 = selectAccountTokensAcrossChains(mockState); + + Engine.state.TokensController.allTokens = mockAllTokens; + + act(() => { + store.dispatch({ + type: 'UPDATE_BG_STATE', + payload: { + key: 'TokensController', + }, + }); + }); + + const result2 = selectAccountTokensAcrossChains(mockState); + + expect(result1 === result2).toBe(true); + // same data should not trigger re-render + expect(mockRenderCall).toHaveBeenCalledTimes(0); + }); +}); diff --git a/app/selectors/multichain/evm.ts b/app/selectors/multichain/evm.ts index 9dac3eb83020..97ffbecb5825 100644 --- a/app/selectors/multichain/evm.ts +++ b/app/selectors/multichain/evm.ts @@ -7,7 +7,7 @@ import { } from '../accountsController'; import { selectAllTokens } from '../tokensController'; import { selectAccountsByChainId } from '../accountTrackerController'; -import { selectNetworkConfigurations } from '../networkController'; +import { selectEvmNetworkConfigurationsByChainId } from '../networkController'; import { TokenI } from '../../components/UI/Tokens/types'; import { renderFromWei, weiToFiat } from '../../util/number'; import { hexToBN, toHex } from '@metamask/controller-utils'; @@ -15,6 +15,8 @@ import { selectCurrencyRates, selectCurrentCurrency, } from '../currencyRateController'; +import { createDeepEqualSelector } from '../util'; +import { isPortfolioViewEnabled } from '../../util/networks'; interface NativeTokenBalance { balance: string; @@ -61,7 +63,7 @@ export const selectedAccountNativeTokenCachedBalanceByChainId = createSelector( */ export const selectNativeTokensAcrossChains = createSelector( [ - selectNetworkConfigurations, + selectEvmNetworkConfigurationsByChainId, selectedAccountNativeTokenCachedBalanceByChainId, selectCurrencyRates, selectCurrentCurrency, @@ -172,14 +174,15 @@ export const selectNativeTokensAcrossChains = createSelector( * @param {RootState} state - The root state. * @returns {TokensByChain} The tokens for the selected account across all chains. */ -export const selectAccountTokensAcrossChains = createSelector( - [ - selectSelectedInternalAccount, - selectAllTokens, - selectNetworkConfigurations, - selectNativeTokensAcrossChains, - ], +export const selectAccountTokensAcrossChains = createDeepEqualSelector( + selectSelectedInternalAccount, + selectAllTokens, + selectEvmNetworkConfigurationsByChainId, + selectNativeTokensAcrossChains, (selectedAccount, allTokens, networkConfigurations, nativeTokens) => { + if (!isPortfolioViewEnabled()) { + return {}; + } const selectedAddress = selectedAccount?.address; const tokensByChain: { [chainId: string]: ( diff --git a/app/selectors/multichain/multichain.test.ts b/app/selectors/multichain/multichain.test.ts index f7a719d3f4aa..eddb7524ba98 100644 --- a/app/selectors/multichain/multichain.test.ts +++ b/app/selectors/multichain/multichain.test.ts @@ -1,21 +1,17 @@ -import { - MultichainNativeAssets, - MultichainNetworks, -} from '@metamask/assets-controllers'; import { RootState } from '../../reducers'; import { selectIsBitcoinSupportEnabled, selectIsBitcoinTestnetSupportEnabled, selectIsSolanaSupportEnabled, - selectMultichainCurrentNetwork, selectMultichainDefaultToken, - selectMultichainIsBitcoin, - selectMultichainIsEvm, selectMultichainIsMainnet, - selectMultichainNetworkProviders, selectMultichainSelectedAccountCachedBalance, selectMultichainShouldShowFiat, selectMultichainConversionRate, + MultichainNativeAssets, + selectMultichainCoinRates, + selectMultichainBalances, + NETWORK_ASSETS_MAP, } from './multichain'; import { InternalAccount } from '@metamask/keyring-internal-api'; import { CHAIN_IDS } from '@metamask/transaction-controller'; @@ -27,7 +23,8 @@ import { import { Hex } from '@metamask/utils'; import { selectAccountBalanceByChainId } from '../accountTrackerController'; import { toChecksumHexAddress } from '@metamask/controller-utils'; -import { MULTICHAIN_PROVIDER_CONFIGS } from '../../core/Multichain/constants'; +import { selectIsEvmNetworkSelected } from '../multichainNetworkController'; +import { BtcScope, SolAccountType, SolScope } from '@metamask/keyring-api'; function getEvmState( chainId?: Hex, @@ -103,6 +100,12 @@ function getEvmState( fiatCurrency: 'usd', cryptocurrencies: [], }, + MultichainNetworkController: { + isEvmSelected: true, + selectedMultichainNetworkChainId: SolScope.Mainnet, + + multichainNetworkConfigurationsByChainId: {}, + }, }, }, multichainSettings: { @@ -129,6 +132,13 @@ function getNonEvmState( const selectedAccount = account ?? mockBtcAccount; + const selectedNonEvmChainId = + selectedAccount.type === SolAccountType.DataAccount + ? SolScope.Mainnet + : selectedAccount.scopes[0] === BtcScope.Testnet + ? BtcScope.Testnet + : BtcScope.Mainnet; + const state = { ...getEvmState(undefined, 1500, showFiatOnTestnets), engine: { @@ -140,6 +150,47 @@ function getNonEvmState( accounts: mockNonEvmAccountsArray, }, }, + MultichainNetworkController: { + isEvmSelected: false, + selectedMultichainNetworkChainId: selectedNonEvmChainId, + + multichainNetworkConfigurationsByChainId: { + [SolScope.Mainnet]: { + chainId: SolScope.Mainnet, + name: 'Solana Mainnet', + nativeCurrency: 'SOL', + isEvm: false, + blockExplorers: { + urls: ['https://solscan.io'], + defaultIndex: 0, + }, + ticker: 'SOL', + decimals: 9, + }, + [BtcScope.Mainnet]: { + chainId: BtcScope.Mainnet, + name: 'Bitcoin Mainnet', + nativeCurrency: 'BTC', + isEvm: false, + blockExplorers: { + urls: [], + defaultIndex: 0, + }, + ticker: 'BTC', + decimals: 8, + }, + [BtcScope.Testnet]: { + chainId: BtcScope.Testnet, + name: 'Bitcoin Testnet', + nativeCurrency: 'BTC', + isEvm: false, + blockExplorers: { + urls: [], + defaultIndex: 0, + }, + }, + }, + }, RatesController: mockBtcRate ? { rates: { @@ -183,59 +234,21 @@ describe('MultichainNonEvm Selectors', () => { }); }); - describe('selectMultichainNetworkProviders', () => { - it('returns all multichain providers', () => { - const networkProviders = selectMultichainNetworkProviders(); - expect(Array.isArray(networkProviders)).toBe(true); - expect(networkProviders.length).toBe(5); - }); - - it('returns correct decimal values for each network', () => { - const networkProviders = selectMultichainNetworkProviders(); - - // Bitcoin networks should have 8 decimals - const bitcoinMainnet = networkProviders.find( - (provider) => provider.id === 'btc-mainnet', - ); - expect(bitcoinMainnet?.decimal).toBe(8); - - const bitcoinTestnet = networkProviders.find( - (provider) => provider.id === 'btc-testnet', - ); - expect(bitcoinTestnet?.decimal).toBe(8); - - // Solana networks should have 9 decimals - const solanaMainnet = networkProviders.find( - (provider) => provider.id === 'solana-mainnet', - ); - expect(solanaMainnet?.decimal).toBe(9); - - const solanaDevnet = networkProviders.find( - (provider) => provider.id === 'solana-devnet', - ); - expect(solanaDevnet?.decimal).toBe(9); - - const solanaTestnet = networkProviders.find( - (provider) => provider.id === 'solana-testnet', - ); - expect(solanaTestnet?.decimal).toBe(9); - }); - }); describe('selectMultichainIsEvm', () => { it('returns true if selected account is EVM compatible', () => { const state = getEvmState(); - expect(selectMultichainIsEvm(state)).toBe(true); + expect(selectIsEvmNetworkSelected(state)).toBe(true); }); it('returns false if selected account is not EVM compatible', () => { const state = getNonEvmState(); - expect(selectMultichainIsEvm(state)).toBe(false); + expect(selectIsEvmNetworkSelected(state)).toBe(false); }); it('returns false if selected account is Solana', () => { const state = getNonEvmState(MOCK_SOLANA_ACCOUNT); - expect(selectMultichainIsEvm(state)).toBe(false); + expect(selectIsEvmNetworkSelected(state)).toBe(false); }); }); describe('selectMultichainIsMainnet', () => { @@ -273,28 +286,6 @@ describe('MultichainNonEvm Selectors', () => { }, ); }); - describe('selectMultichainCurrentNetwork', () => { - it('returns an EVM network provider if account is EVM', () => { - const state = getEvmState(); - - const network = selectMultichainCurrentNetwork(state); - expect(network.isEvmNetwork).toBe(true); - }); - - it('returns an non-EVM network provider if account is non-EVM', () => { - const state = getNonEvmState(); - - const network = selectMultichainCurrentNetwork(state); - expect(network.isEvmNetwork).toBe(false); - }); - - it('returns a nickname for default networks', () => { - const state = getEvmState(); - - const network = selectMultichainCurrentNetwork(state); - expect(network.nickname).toBe('Ethereum Mainnet'); - }); - }); describe('selectMultichainShouldShowFiat', () => { it('returns true if account is EVM and the network is mainnet', () => { const state = getEvmState(); @@ -339,21 +330,6 @@ describe('MultichainNonEvm Selectors', () => { expect(selectMultichainShouldShowFiat(state)).toBe(true); }); }); - describe('selectMultichainIsBitcoin', () => { - it('returns false if account is EVM', () => { - const state = getEvmState(); - expect(selectMultichainIsBitcoin(state)).toBe(false); - }); - - it('returns true if account is BTC', () => { - const state = getNonEvmState(MOCK_ACCOUNT_BIP122_P2WPKH); - expect(selectMultichainIsBitcoin(state)).toBe(true); - }); - it('returns true if account is BTC testnet', () => { - const state = getNonEvmState(MOCK_ACCOUNT_BIP122_P2WPKH_TESTNET); - expect(selectMultichainIsBitcoin(state)).toBe(true); - }); - }); describe('selectMultichainSelectedAccountCachedBalance', () => { it('returns cached balance if account is EVM', () => { const state = getEvmState(); @@ -427,14 +403,14 @@ describe('MultichainNonEvm Selectors', () => { it('returns true if account is non-EVM (bip122:*)', () => { const state = getNonEvmState(); expect(selectMultichainDefaultToken(state)).toEqual({ - symbol: MULTICHAIN_PROVIDER_CONFIGS[MultichainNetworks.Bitcoin].ticker, + symbol: 'BTC', }); }); it('returns SOL if account is Solana', () => { const state = getNonEvmState(MOCK_SOLANA_ACCOUNT); expect(selectMultichainDefaultToken(state)).toEqual({ - symbol: MULTICHAIN_PROVIDER_CONFIGS[MultichainNetworks.Solana].ticker, + symbol: 'SOL', }); }); }); @@ -477,4 +453,49 @@ describe('MultichainNonEvm Selectors', () => { expect(selectMultichainConversionRate(state)).toBe(mockSolConversionRate); }); }); + + describe('selectMultichainBalances and selectMultichainCoinRates', () => { + it('selectMultichainBalances returns balances from the MultichainBalancesController state', () => { + const state = getEvmState(); + const mockBalances = { + 'account-1': { + [MultichainNativeAssets.Bitcoin]: { amount: '10', unit: 'BTC' }, + }, + }; + state.engine.backgroundState.MultichainBalancesController.balances = + mockBalances; + expect(selectMultichainBalances(state)).toEqual(mockBalances); + }); + + it('selectMultichainCoinRates returns rates from the RatesController state', () => { + const state = getEvmState(); + const mockRates = { + eth: { + conversionRate: 2000, + conversionDate: Date.now(), + usdConversionRate: 2000, + }, + }; + state.engine.backgroundState.RatesController.rates = mockRates; + expect(selectMultichainCoinRates(state)).toEqual(mockRates); + }); + + it('NETWORK_ASSETS_MAP has correct mappings', () => { + expect(NETWORK_ASSETS_MAP[SolScope.Mainnet]).toEqual([ + MultichainNativeAssets.Solana, + ]); + expect(NETWORK_ASSETS_MAP[SolScope.Testnet]).toEqual([ + MultichainNativeAssets.SolanaTestnet, + ]); + expect(NETWORK_ASSETS_MAP[SolScope.Devnet]).toEqual([ + MultichainNativeAssets.SolanaDevnet, + ]); + expect(NETWORK_ASSETS_MAP[BtcScope.Mainnet]).toEqual([ + MultichainNativeAssets.Bitcoin, + ]); + expect(NETWORK_ASSETS_MAP[BtcScope.Testnet]).toEqual([ + MultichainNativeAssets.BitcoinTestnet, + ]); + }); + }); }); diff --git a/app/selectors/multichain/multichain.ts b/app/selectors/multichain/multichain.ts index ad2cb70588a9..db19083b5272 100644 --- a/app/selectors/multichain/multichain.ts +++ b/app/selectors/multichain/multichain.ts @@ -1,30 +1,49 @@ ///: BEGIN:ONLY_INCLUDE_IF(keyring-snaps) /* eslint-disable arrow-body-style */ -import { - MULTICHAIN_ACCOUNT_TYPE_TO_MAINNET, - MULTICHAIN_PROVIDER_CONFIGS, - MultichainProviderConfig, -} from '../../core/Multichain/constants'; -import { CaipChainId, Hex, KnownCaipNamespace } from '@metamask/utils'; +import { MULTICHAIN_ACCOUNT_TYPE_TO_MAINNET } from '../../core/Multichain/constants'; import { RootState } from '../../reducers'; import { - selectNetworkConfigurations, - selectChainId as selectEvmChainId, + selectChainId, + selectEvmChainId, selectProviderConfig as selectEvmProviderConfig, - ProviderConfig, } from '../networkController'; import { selectSelectedInternalAccount } from '../accountsController'; import { createDeepEqualSelector } from '../util'; -import { isEvmAccountType } from '@metamask/keyring-api'; +import { BtcScope, SolScope } from '@metamask/keyring-api'; import { selectConversionRate } from '../currencyRateController'; import { isMainNet } from '../../util/networks'; -import { - MultichainNetworks, - NETWORK_ASSETS_MAP, -} from '@metamask/assets-controllers'; import { selectAccountBalanceByChainId } from '../accountTrackerController'; import { selectShowFiatInTestnets } from '../settings'; +import { + selectIsEvmNetworkSelected, + selectSelectedNonEvmNetworkChainId, + selectSelectedNonEvmNetworkSymbol, +} from '../multichainNetworkController'; +/** + * @deprecated TEMPORARY SOURCE OF TRUTH TBD + * Native asset of each non evm network. + */ +export enum MultichainNativeAssets { + Bitcoin = `${BtcScope.Mainnet}/slip44:0`, + BitcoinTestnet = `${BtcScope.Testnet}/slip44:0`, + Solana = `${SolScope.Mainnet}/token:EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v`, + SolanaDevnet = `${SolScope.Devnet}/token:EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v`, + SolanaTestnet = `${SolScope.Testnet}/token:EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v`, +} + +/** + * @deprecated TEMPORARY SOURCE OF TRUTH TBD + * Maps network identifiers to their corresponding native asset types. + * Each network is mapped to an array containing its native asset for consistency. + */ +export const NETWORK_ASSETS_MAP: Record<string, MultichainNativeAssets[]> = { + [SolScope.Mainnet]: [MultichainNativeAssets.Solana], + [SolScope.Testnet]: [MultichainNativeAssets.SolanaTestnet], + [SolScope.Devnet]: [MultichainNativeAssets.SolanaDevnet], + [BtcScope.Mainnet]: [MultichainNativeAssets.Bitcoin], + [BtcScope.Testnet]: [MultichainNativeAssets.BitcoinTestnet], +}; /** * Get the state of the `bitcoinSupportEnabled` flag. * @@ -55,138 +74,23 @@ export function selectIsSolanaSupportEnabled(state: RootState) { return state.multichainSettings.solanaSupportEnabled; } -export const selectMultichainIsEvm = createDeepEqualSelector( - selectSelectedInternalAccount, - (selectedAccount) => { - // If no account selected, assume EVM for onboarding scenario - if (!selectedAccount) { - return true; - } - return isEvmAccountType(selectedAccount.type); - }, -); - -export interface MultichainNetwork { - nickname: string; - isEvmNetwork: boolean; - chainId: CaipChainId; - network: ProviderConfig | MultichainProviderConfig; -} - -export function selectMultichainNetworkProviders(): MultichainProviderConfig[] { - return Object.values(MULTICHAIN_PROVIDER_CONFIGS); -} - -export const selectMultichainCurrentNetwork = createDeepEqualSelector( - [ - selectMultichainIsEvm, - selectEvmChainId, - selectEvmProviderConfig, - selectNetworkConfigurations, - selectSelectedInternalAccount, - ], - ( - isEvm, - chainId, - providerConfig, - networkConfigurations, - selectedAccount, - ): MultichainNetwork => { - if (isEvm) { - // These are custom networks defined by the user. - const networkConfiguration = providerConfig.id - ? networkConfigurations[providerConfig.id as Hex] - : undefined; - // If there aren't any nicknames, the RPC URL is displayed. - const nickname = - networkConfiguration?.name ?? - providerConfig.nickname ?? - providerConfig.rpcUrl ?? - 'Custom Network'; - - return { - nickname, - isEvmNetwork: true, - // We assume the chain ID is `string` or `number`, so we convert it to a - // `Number` to be compliant with EIP155 CAIP chain ID - chainId: `${KnownCaipNamespace.Eip155}:${Number( - chainId, - )}` as CaipChainId, - network: providerConfig, - }; - } - - // Non-EVM networks: - if (!selectedAccount) { - throw new Error( - 'Selected account is required for non-EVM networks. This should never happen.', - ); - } - - const nonEvmNetworks = selectMultichainNetworkProviders(); - const nonEvmNetwork = nonEvmNetworks.find((provider) => - provider.isAddressCompatible(selectedAccount.address), - ); - - if (!nonEvmNetwork) { - throw new Error( - 'Could not find non-EVM provider compatible with address: ' + - selectedAccount.address, - ); - } - - return { - // TODO: Adapt this for other non-EVM networks - nickname: nonEvmNetwork.nickname, - isEvmNetwork: false, - chainId: nonEvmNetwork?.chainId, - network: nonEvmNetwork, - }; - }, -); - -/** - * Retrieves the provider configuration for a multichain network. - * - * This function extracts the `network` field from the result of `selectMultichainNetwork(state)`, - * which is expected to be a `MultichainProviderConfig` object. The naming might suggest that - * it returns a network, but it actually returns a provider configuration specific to a multichain setup. - * - * @returns The current multichain provider configuration. - */ -export const selectMultichainProviderConfig = createDeepEqualSelector( - selectMultichainCurrentNetwork, - (multichainCurrentNetwork) => multichainCurrentNetwork.network, -); - export const selectMultichainDefaultToken = createDeepEqualSelector( - selectMultichainIsEvm, + selectIsEvmNetworkSelected, selectEvmProviderConfig, - selectMultichainProviderConfig, - (isEvm, evmProviderConfig, multichainProviderConfig) => { - const symbol = isEvm - ? evmProviderConfig.ticker - : multichainProviderConfig.ticker; + selectSelectedNonEvmNetworkSymbol, + (isEvmSelected, evmProviderConfig, nonEvmTicker) => { + const symbol = isEvmSelected ? evmProviderConfig.ticker : nonEvmTicker; return { symbol }; }, ); -export const selectMultichainIsBitcoin = createDeepEqualSelector( - selectMultichainIsEvm, - selectMultichainDefaultToken, - (isEvm, token) => - !isEvm && - token.symbol === - MULTICHAIN_PROVIDER_CONFIGS[MultichainNetworks.Bitcoin].ticker, -); - export const selectMultichainIsMainnet = createDeepEqualSelector( - selectMultichainIsEvm, + selectIsEvmNetworkSelected, selectSelectedInternalAccount, selectEvmChainId, - selectMultichainProviderConfig, - (isEvm, selectedAccount, evmChainId, multichainProviderConfig) => { - if (isEvm) { + selectChainId, + (isEvmSelected, selectedAccount, evmChainId, chainId) => { + if (isEvmSelected) { return isMainNet(evmChainId); } @@ -197,7 +101,7 @@ export const selectMultichainIsMainnet = createDeepEqualSelector( const mainnet = ( MULTICHAIN_ACCOUNT_TYPE_TO_MAINNET as Record<string, string> )[selectedAccount.type]; - return multichainProviderConfig.chainId === mainnet; + return chainId === mainnet; }, ); @@ -217,11 +121,11 @@ export const selectMultichainBalances = createDeepEqualSelector( export const selectMultichainShouldShowFiat = createDeepEqualSelector( selectMultichainIsMainnet, - selectMultichainIsEvm, + selectIsEvmNetworkSelected, selectShowFiatInTestnets, - (multichainIsMainnet, isEvm, shouldShowFiatOnTestnets) => { + (multichainIsMainnet, isEvmSelected, shouldShowFiatOnTestnets) => { const isTestnet = !multichainIsMainnet; - if (isEvm) { + if (isEvmSelected) { return isTestnet ? shouldShowFiatOnTestnets : true; // Is it safe to assume that we default show fiat for mainnet? } return ( @@ -233,14 +137,14 @@ export const selectMultichainShouldShowFiat = createDeepEqualSelector( const selectNonEvmCachedBalance = createDeepEqualSelector( selectSelectedInternalAccount, selectMultichainBalances, - selectMultichainCurrentNetwork, - (selectedInternalAccount, multichainBalances, multichainCurrentNetwork) => { + selectSelectedNonEvmNetworkChainId, + (selectedInternalAccount, multichainBalances, nonEvmChainId) => { if (!selectedInternalAccount) { return undefined; } // We assume that there's at least one asset type in and that is the native // token for that network. - const asset = NETWORK_ASSETS_MAP[multichainCurrentNetwork.chainId]?.[0]; + const asset = NETWORK_ASSETS_MAP[nonEvmChainId]?.[0]; const balancesForAccount = multichainBalances?.[selectedInternalAccount.id]; const balanceOfAsset = balancesForAccount?.[asset]; return balanceOfAsset?.amount ?? 0; @@ -249,11 +153,13 @@ const selectNonEvmCachedBalance = createDeepEqualSelector( export const selectMultichainSelectedAccountCachedBalance = createDeepEqualSelector( - selectMultichainIsEvm, + selectIsEvmNetworkSelected, selectAccountBalanceByChainId, selectNonEvmCachedBalance, - (isEvm, accountBalanceByChainId, nonEvmCachedBalance) => - isEvm ? accountBalanceByChainId?.balance ?? '0x0' : nonEvmCachedBalance, + (isEvmSelected, accountBalanceByChainId, nonEvmCachedBalance) => + isEvmSelected + ? accountBalanceByChainId?.balance ?? '0x0' + : nonEvmCachedBalance, ); export function selectMultichainCoinRates(state: RootState) { @@ -261,21 +167,18 @@ export function selectMultichainCoinRates(state: RootState) { } export const selectMultichainConversionRate = createDeepEqualSelector( - selectMultichainIsEvm, + selectIsEvmNetworkSelected, selectConversionRate, selectMultichainCoinRates, - selectMultichainProviderConfig, - ( - isEvm, - evmConversionRate, - multichaincCoinRates, - multichainProviderConfig, - ) => { - if (isEvm) { + selectSelectedNonEvmNetworkSymbol, + (isEvmSelected, evmConversionRate, multichaincCoinRates, nonEvmTicker) => { + if (isEvmSelected) { return evmConversionRate; } - const ticker = multichainProviderConfig?.ticker?.toLowerCase(); - return ticker ? multichaincCoinRates?.[ticker]?.conversionRate : undefined; + // TODO: [SOLANA] - This should be mapping a caip-19 not a ticker + return nonEvmTicker + ? multichaincCoinRates?.[nonEvmTicker.toLowerCase()]?.conversionRate + : undefined; }, ); ///: END:ONLY_INCLUDE_IF diff --git a/app/selectors/multichainNetworkController/index.test.ts b/app/selectors/multichainNetworkController/index.test.ts new file mode 100644 index 000000000000..d691d28f37b2 --- /dev/null +++ b/app/selectors/multichainNetworkController/index.test.ts @@ -0,0 +1,134 @@ +import { + selectMultichainNetworkControllerState, + selectIsEvmNetworkSelected, + selectSelectedNonEvmNetworkChainId, + selectNonEvmNetworkConfigurationsByChainId, + selectSelectedNonEvmNetworkName, + selectSelectedNonEvmNativeCurrency, + selectSelectedNonEvmNetworkSymbol, +} from './index'; +import { RootState } from '../../reducers'; + +describe('Multichain Network Controller Selectors', () => { + const mockState = { + engine: { + backgroundState: { + MultichainNetworkController: { + isEvmSelected: true, + selectedMultichainNetworkChainId: + 'solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp', + multichainNetworkConfigurationsByChainId: { + 'solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp': { + name: 'Solana Mainnet', + nativeCurrency: 'solana:sol/token:sol', + ticker: 'SOL', + decimals: 9, + }, + }, + }, + }, + }, + } as unknown as RootState; + + describe('selectMultichainNetworkControllerState', () => { + it('should return the multichain network controller state', () => { + const result = selectMultichainNetworkControllerState(mockState); + expect(result).toBe( + mockState.engine.backgroundState.MultichainNetworkController, + ); + }); + }); + + describe('selectIsEvmNetworkSelected', () => { + it('should return isEvmSelected value', () => { + const result = selectIsEvmNetworkSelected(mockState); + expect(result).toBe(true); + }); + }); + + describe('selectSelectedNonEvmNetworkChainId', () => { + it('should return the selected non-EVM network chain ID', () => { + const result = selectSelectedNonEvmNetworkChainId(mockState); + expect(result).toBe('solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp'); + }); + }); + + describe('selectNonEvmNetworkConfigurationsByChainId', () => { + it('should return the non-EVM network configurations', () => { + const result = selectNonEvmNetworkConfigurationsByChainId(mockState); + expect(result).toEqual( + mockState.engine.backgroundState.MultichainNetworkController + .multichainNetworkConfigurationsByChainId, + ); + }); + }); + + describe('selectSelectedNonEvmNetworkName', () => { + it('should return the selected network name', () => { + const result = selectSelectedNonEvmNetworkName(mockState); + expect(result).toBe('Solana Mainnet'); + }); + + it('should return undefined when network is not found', () => { + const modifiedState = { + ...mockState, + engine: { + backgroundState: { + MultichainNetworkController: { + ...mockState.engine.backgroundState.MultichainNetworkController, + selectedMultichainNetworkChainId: 'unknown:chain-id', + }, + }, + }, + } as unknown as RootState; + const result = selectSelectedNonEvmNetworkName(modifiedState); + expect(result).toBeUndefined(); + }); + }); + + describe('selectSelectedNonEvmNativeCurrency', () => { + it('should return the selected network native currency', () => { + const result = selectSelectedNonEvmNativeCurrency(mockState); + expect(result).toBe('solana:sol/token:sol'); + }); + + it('should return undefined when network is not found', () => { + const modifiedState = { + ...mockState, + engine: { + backgroundState: { + MultichainNetworkController: { + ...mockState.engine.backgroundState.MultichainNetworkController, + selectedMultichainNetworkChainId: 'unknown:chain-id', + }, + }, + }, + } as unknown as RootState; + const result = selectSelectedNonEvmNativeCurrency(modifiedState); + expect(result).toBeUndefined(); + }); + }); + + describe('selectSelectedNonEvmNetworkSymbol', () => { + it('should return the selected network symbol', () => { + const result = selectSelectedNonEvmNetworkSymbol(mockState); + expect(result).toBe('SOL'); + }); + + it('should return undefined when network symbol is not found', () => { + const modifiedState = { + ...mockState, + engine: { + backgroundState: { + MultichainNetworkController: { + ...mockState.engine.backgroundState.MultichainNetworkController, + selectedMultichainNetworkChainId: 'unknown:chain-id', + }, + }, + }, + } as unknown as RootState; + const result = selectSelectedNonEvmNetworkSymbol(modifiedState); + expect(result).toBeUndefined(); + }); + }); +}); diff --git a/app/selectors/multichainNetworkController/index.ts b/app/selectors/multichainNetworkController/index.ts new file mode 100644 index 000000000000..7f0eb3a9b483 --- /dev/null +++ b/app/selectors/multichainNetworkController/index.ts @@ -0,0 +1,99 @@ +import { MultichainNetworkControllerState } from '@metamask/multichain-network-controller'; +import { RootState } from '../../reducers'; +import { createSelector } from 'reselect'; +import { CaipChainId } from '@metamask/utils'; +import { BtcScope, SolScope } from '@metamask/keyring-api'; +import imageIcons from '../../images/image-icons'; +import { ImageSourcePropType } from 'react-native'; + +export const selectMultichainNetworkControllerState = (state: RootState) => + state.engine.backgroundState?.MultichainNetworkController; + +export const selectIsEvmNetworkSelected = createSelector( + selectMultichainNetworkControllerState, + (multichainNetworkControllerState: MultichainNetworkControllerState) => + multichainNetworkControllerState.isEvmSelected, +); + +export const selectSelectedNonEvmNetworkChainId = createSelector( + selectMultichainNetworkControllerState, + (multichainNetworkControllerState: MultichainNetworkControllerState) => + multichainNetworkControllerState.selectedMultichainNetworkChainId, +); + +/** + * This selector is used to get the non-EVM network configurations by chain ID. + * It extends the network configurations with additional data for non-EVM networks that doens't have a source of truth source yet. + * + * @param state - The root state object. + * @returns An object where the keys are chain IDs and the values are network configurations. + */ +export const selectNonEvmNetworkConfigurationsByChainId = createSelector( + selectMultichainNetworkControllerState, + (multichainNetworkControllerState: MultichainNetworkControllerState) => { + const extendedNonEvmData: Record< + CaipChainId, + { + decimals: number; + imageSource: ImageSourcePropType; + ticker: string; + } + > = { + [SolScope.Mainnet]: { + decimals: 9, + imageSource: imageIcons.SOLANA, + ticker: 'SOL', + }, + [BtcScope.Mainnet]: { + decimals: 8, + imageSource: imageIcons.BTC, + ticker: 'BTC', + }, + }; + return Object.fromEntries( + Object.entries( + multichainNetworkControllerState.multichainNetworkConfigurationsByChainId || + {}, + ).map(([key, network]) => [ + key, + { ...network, ...extendedNonEvmData[network.chainId] }, + ]), + ); + }, +); + +export const selectSelectedNonEvmNetworkDecimals = createSelector( + selectNonEvmNetworkConfigurationsByChainId, + selectSelectedNonEvmNetworkChainId, + (nonEvmNetworkConfigurationsByChainId, selectedMultichainNetworkChainId) => + nonEvmNetworkConfigurationsByChainId[selectedMultichainNetworkChainId] + ?.decimals, +); + +export const selectSelectedNonEvmNetworkName = createSelector( + selectNonEvmNetworkConfigurationsByChainId, + selectSelectedNonEvmNetworkChainId, + (nonEvmNetworkConfigurationsByChainId, selectedMultichainNetworkChainId) => { + const network = + nonEvmNetworkConfigurationsByChainId[selectedMultichainNetworkChainId]; + return network?.name; + }, +); + +export const selectSelectedNonEvmNativeCurrency = createSelector( + selectNonEvmNetworkConfigurationsByChainId, + selectSelectedNonEvmNetworkChainId, + (nonEvmNetworkConfigurationsByChainId, selectedMultichainNetworkChainId) => { + const network = + nonEvmNetworkConfigurationsByChainId[selectedMultichainNetworkChainId]; + return network?.nativeCurrency; + }, +); + +export const selectSelectedNonEvmNetworkSymbol = createSelector( + selectSelectedNonEvmNetworkChainId, + selectNonEvmNetworkConfigurationsByChainId, + (selectedMultichainNetworkChainId, nonEvmNetworkConfigurationsByChainId) => + nonEvmNetworkConfigurationsByChainId[selectedMultichainNetworkChainId] + ?.ticker, +); diff --git a/app/selectors/networkController.test.ts b/app/selectors/networkController.test.ts index 6bc77fab3cd1..cf677ec22e2b 100644 --- a/app/selectors/networkController.test.ts +++ b/app/selectors/networkController.test.ts @@ -14,6 +14,7 @@ import { selectNativeCurrencyByChainId, } from './networkController'; import { RootState } from '../reducers'; +import { SolScope } from '@metamask/keyring-api'; describe('networkSelectors', () => { const mockState = { @@ -53,6 +54,12 @@ describe('networkSelectors', () => { 'custom-network': { status: 'active' }, }, }, + MultichainNetworkController: { + isEvmSelected: true, + selectedMultichainNetworkChainId: SolScope.Mainnet, + + multichainNetworkConfigurationsByChainId: {}, + }, }, }, } as unknown as RootState; diff --git a/app/selectors/networkController.ts b/app/selectors/networkController.ts index f48f800d367d..203f70469929 100644 --- a/app/selectors/networkController.ts +++ b/app/selectors/networkController.ts @@ -15,6 +15,12 @@ import { selectTokenNetworkFilter } from './preferencesController'; import { enableAllNetworksFilter } from '../components/UI/Tokens/util/enableAllNetworksFilter'; import { PopularList } from '../util/networks/customNetworks'; import { CHAIN_IDS } from '@metamask/transaction-controller'; +import { + selectNonEvmNetworkConfigurationsByChainId, + selectIsEvmNetworkSelected, + selectSelectedNonEvmNetworkChainId, +} from './multichainNetworkController'; +import { MultichainNetworkConfiguration } from '@metamask/multichain-network-controller'; interface InfuraRpcEndpoint { name?: string; @@ -127,10 +133,19 @@ export const selectTicker = createSelector( (providerConfig) => providerConfig?.ticker, ); -export const selectChainId = createSelector( +export const selectEvmChainId = createSelector( selectProviderConfig, (providerConfig) => providerConfig.chainId, ); + +export const selectChainId = createSelector( + selectSelectedNonEvmNetworkChainId, + selectEvmChainId, + selectIsEvmNetworkSelected, + (selectedNonEvmChainId, selectedEvmChainId: Hex, isEvmSelected: boolean) => + !isEvmSelected ? selectedNonEvmChainId : selectedEvmChainId, +); + export const selectProviderType = createSelector( selectProviderConfig, (providerConfig) => providerConfig.type, @@ -152,12 +167,27 @@ export const selectNetworkStatus = createSelector( ].status, ); -export const selectNetworkConfigurations = createSelector( +export const selectEvmNetworkConfigurationsByChainId = createSelector( selectNetworkControllerState, (networkControllerState: NetworkState) => networkControllerState?.networkConfigurationsByChainId, ); +export const selectNetworkConfigurations = createSelector( + selectEvmNetworkConfigurationsByChainId, + selectNonEvmNetworkConfigurationsByChainId, + ( + evmNetworkConfigurationsByChainId, + nonEvmNetworkConfigurationsByChainId, + ): Record<string, MultichainNetworkConfiguration> => { + const networkConfigurationsByChainId = { + ...evmNetworkConfigurationsByChainId, + ...nonEvmNetworkConfigurationsByChainId, + }; + return networkConfigurationsByChainId; + }, +); + export const selectNetworkClientId = createSelector( selectNetworkControllerState, (networkControllerState: NetworkState) => @@ -174,8 +204,8 @@ export const selectIsEIP1559Network = createSelector( // Selector to get the popular network configurations, this filter also testnet networks export const selectAllPopularNetworkConfigurations = createSelector( - selectNetworkConfigurations, - (networkConfigurations: Record<Hex, NetworkConfiguration>) => { + selectEvmNetworkConfigurationsByChainId, + (networkConfigurations) => { const popularNetworksChainIds = PopularList.map( (popular) => popular.chainId, ); @@ -187,8 +217,8 @@ export const selectAllPopularNetworkConfigurations = createSelector( chainId === CHAIN_IDS.MAINNET || chainId === CHAIN_IDS.LINEA_MAINNET, ) - .reduce((acc: Record<Hex, NetworkConfiguration>, chainId) => { - acc[chainId as Hex] = networkConfigurations[chainId as Hex]; + .reduce<Record<string, NetworkConfiguration>>((acc, chainId) => { + acc[chainId] = networkConfigurations[chainId as Hex]; return acc; }, {}); }, @@ -217,21 +247,24 @@ export const selectIsAllNetworks = createSelector( ); export const selectNetworkConfigurationByChainId = createSelector( - [selectNetworkConfigurations, (_state: RootState, chainId: Hex) => chainId], + [selectNetworkConfigurations, (_state: RootState, chainId) => chainId], (networkConfigurations, chainId) => networkConfigurations?.[chainId] || null, ); export const selectNativeCurrencyByChainId = createSelector( - [selectNetworkConfigurations, (_state: RootState, chainId: Hex) => chainId], + [ + selectEvmNetworkConfigurationsByChainId, + (_state: RootState, chainId) => chainId, + ], (networkConfigurations, chainId) => networkConfigurations?.[chainId]?.nativeCurrency, ); export const selectDefaultEndpointByChainId = createSelector( - selectNetworkConfigurations, + selectEvmNetworkConfigurationsByChainId, (_: RootState, chainId: Hex) => chainId, (networkConfigurations, chainId) => { - const networkConfiguration = networkConfigurations[chainId as Hex]; + const networkConfiguration = networkConfigurations[chainId]; return networkConfiguration?.rpcEndpoints?.[ networkConfiguration.defaultRpcEndpointIndex ]; @@ -248,3 +281,18 @@ export const selectRpcUrlByChainId = createSelector( selectDefaultEndpointByChainId, (defaultEndpoint) => defaultEndpoint?.url, ); + +export const checkNetworkAndAccountSupports1559 = createSelector( + selectNetworkControllerState, + (_state: RootState, networkClientId: string) => networkClientId, + (networkControllerState: NetworkState, networkClientId: string) => { + const selectedNetworkClientId = + networkControllerState.selectedNetworkClientId; + + return ( + networkControllerState.networksMetadata?.[ + networkClientId ?? selectedNetworkClientId + ]?.EIPS[1559] === true + ); + }, +); diff --git a/app/selectors/networkInfos.ts b/app/selectors/networkInfos.ts index c67247a3ea5a..051b39b60717 100644 --- a/app/selectors/networkInfos.ts +++ b/app/selectors/networkInfos.ts @@ -4,14 +4,21 @@ import { getNetworkImageSource, } from '../util/networks'; import { ProviderConfig, selectProviderConfig } from './networkController'; +import { + selectIsEvmNetworkSelected, + selectSelectedNonEvmNetworkChainId, + selectSelectedNonEvmNetworkName, +} from './multichainNetworkController'; +import { getNonEvmNetworkImageSourceByChainId } from '../util/networks/customNetworks'; +import { CaipChainId } from '@metamask/utils'; -export const selectNetworkName = createSelector( +export const selectEvmNetworkName = createSelector( selectProviderConfig, (providerConfig: ProviderConfig) => getNetworkNameFromProviderConfig(providerConfig), ); -export const selectNetworkImageSource = createSelector( +export const selectEvmNetworkImageSource = createSelector( selectProviderConfig, (providerConfig: ProviderConfig) => getNetworkImageSource({ @@ -19,3 +26,33 @@ export const selectNetworkImageSource = createSelector( chainId: providerConfig.chainId, }), ); +export const selectNetworkName = createSelector( + selectProviderConfig, + selectIsEvmNetworkSelected, + selectSelectedNonEvmNetworkName, + ( + providerConfig: ProviderConfig, + isEvmSelected: boolean, + nonEvmNetworkName: string, + ) => + !isEvmSelected + ? nonEvmNetworkName + : getNetworkNameFromProviderConfig(providerConfig), +); + +export const selectNetworkImageSource = createSelector( + selectProviderConfig, + selectIsEvmNetworkSelected, + selectSelectedNonEvmNetworkChainId, + ( + providerConfig: ProviderConfig, + isEvmSelected: boolean, + nonEvmNetworkChainId: CaipChainId, + ) => + !isEvmSelected + ? getNonEvmNetworkImageSourceByChainId(nonEvmNetworkChainId) + : getNetworkImageSource({ + networkType: providerConfig?.type, + chainId: providerConfig.chainId, + }), +); diff --git a/app/selectors/notifications/index.test.ts b/app/selectors/notifications/index.test.ts index b04eba7a8024..df81ebb9eec2 100644 --- a/app/selectors/notifications/index.test.ts +++ b/app/selectors/notifications/index.test.ts @@ -1,6 +1,7 @@ import { TRIGGER_TYPES } from '@metamask/notification-services-controller/notification-services'; import { selectIsMetamaskNotificationsEnabled, + selectIsMetaMaskPushNotificationsEnabled, selectIsMetamaskNotificationsFeatureSeen, selectIsUpdatingMetamaskNotifications, selectIsFetchingMetamaskNotifications, @@ -12,15 +13,21 @@ import { getMetamaskNotificationsUnreadCount, getMetamaskNotificationsReadCount, getOnChainMetamaskNotificationsUnreadCount, + selectIsMetaMaskPushNotificationsLoading, } from './index'; import { RootState } from '../../reducers'; -import { MOCK_NOTIFICATION_SERVICES_CONTROLLER } from './testUtils'; +import { + MOCK_NOTIFICATION_SERVICES_CONTROLLER, + MOCK_NOTIFICATION_SERVICES_PUSH_CONTROLLER, +} from './testUtils'; describe('Notification Selectors', () => { const mockState = { engine: { backgroundState: { NotificationServicesController: MOCK_NOTIFICATION_SERVICES_CONTROLLER, + NotificationServicesPushController: + MOCK_NOTIFICATION_SERVICES_PUSH_CONTROLLER, }, }, } as unknown as RootState; @@ -31,6 +38,18 @@ describe('Notification Selectors', () => { ); }); + it('selectIsMetaMaskPushNotificationsEnabled returns correct value', () => { + expect(selectIsMetaMaskPushNotificationsEnabled(mockState)).toEqual( + MOCK_NOTIFICATION_SERVICES_PUSH_CONTROLLER.isPushEnabled, + ); + }); + + it('selectIsMetaMaskPushNotificationsLoading returns correct value', () => { + expect(selectIsMetaMaskPushNotificationsLoading(mockState)).toEqual( + MOCK_NOTIFICATION_SERVICES_PUSH_CONTROLLER.isUpdatingFCMToken, + ); + }); + it('selectIsMetamaskNotificationsFeatureSeen returns correct value', () => { expect(selectIsMetamaskNotificationsFeatureSeen(mockState)).toEqual( MOCK_NOTIFICATION_SERVICES_CONTROLLER.isMetamaskNotificationsFeatureSeen, diff --git a/app/selectors/notifications/index.tsx b/app/selectors/notifications/index.tsx index 2ff6e4918a17..4efe350f3543 100644 --- a/app/selectors/notifications/index.tsx +++ b/app/selectors/notifications/index.tsx @@ -2,9 +2,13 @@ import { createSelector } from 'reselect'; import { NotificationServicesControllerState, TRIGGER_TYPES, - defaultState, + defaultState as notificationControllerServiceDefaultState, INotification, } from '@metamask/notification-services-controller/notification-services'; +import { + NotificationServicesPushControllerState, + defaultState as pushControllerDefaultState, +} from '@metamask/notification-services-controller/push-services'; import { createDeepEqualSelector } from '../util'; import { RootState } from '../../reducers'; @@ -13,13 +17,27 @@ type NotificationServicesState = NotificationServicesControllerState; const selectNotificationServicesControllerState = (state: RootState) => state?.engine?.backgroundState?.NotificationServicesController ?? - defaultState; + notificationControllerServiceDefaultState; + +const selectNotificationServicesPushControllerState = (state: RootState) => + state?.engine?.backgroundState?.NotificationServicesPushController ?? + pushControllerDefaultState; export const selectIsMetamaskNotificationsEnabled = createSelector( selectNotificationServicesControllerState, (notificationServicesControllerState: NotificationServicesState) => notificationServicesControllerState.isNotificationServicesEnabled, ); +export const selectIsMetaMaskPushNotificationsEnabled = createSelector( + selectNotificationServicesPushControllerState, + (state: NotificationServicesPushControllerState) => + Boolean(state.isPushEnabled), +); +export const selectIsMetaMaskPushNotificationsLoading = createSelector( + selectNotificationServicesPushControllerState, + (state: NotificationServicesPushControllerState) => state.isUpdatingFCMToken, +); + export const selectIsMetamaskNotificationsFeatureSeen = createSelector( selectNotificationServicesControllerState, (notificationServicesControllerState: NotificationServicesState) => diff --git a/app/selectors/notifications/testUtils.ts b/app/selectors/notifications/testUtils.ts index 269828503382..c1b96c2b0085 100644 --- a/app/selectors/notifications/testUtils.ts +++ b/app/selectors/notifications/testUtils.ts @@ -1,3 +1,4 @@ +import { defaultState } from '@metamask/notification-services-controller/push-services'; import MOCK_NOTIFICATIONS from '../../components/UI/Notification/__mocks__/mock_notifications'; export const MOCK_NOTIFICATION_SERVICES_CONTROLLER = { @@ -11,3 +12,8 @@ export const MOCK_NOTIFICATION_SERVICES_CONTROLLER = { metamaskNotificationsReadList: [], metamaskNotificationsList: MOCK_NOTIFICATIONS, }; + +export const MOCK_NOTIFICATION_SERVICES_PUSH_CONTROLLER = { + ...defaultState, + isPushEnabled: true, +}; diff --git a/app/selectors/preferencesController.ts b/app/selectors/preferencesController.ts index d820d5f98ea8..d25d40c1a0c9 100644 --- a/app/selectors/preferencesController.ts +++ b/app/selectors/preferencesController.ts @@ -1,7 +1,7 @@ import { createSelector } from 'reselect'; import { PreferencesState } from '@metamask/preferences-controller'; import { RootState } from '../reducers'; -import { selectChainId } from './networkController'; +import { selectEvmChainId } from './networkController'; import { createDeepEqualSelector } from './util'; import { Hex } from '@metamask/utils'; @@ -59,7 +59,7 @@ export const selectTokenNetworkFilter = createSelector( export const selectIsTokenNetworkFilterEqualCurrentNetwork = createDeepEqualSelector( selectPreferencesControllerState, - (state: RootState) => selectChainId(state), + (state: RootState) => selectEvmChainId(state), (preferencesControllerState: PreferencesState, chainId: Hex) => { const tokenNetworkFilter = preferencesControllerState.tokenNetworkFilter || {}; diff --git a/app/selectors/selectedNetworkController.ts b/app/selectors/selectedNetworkController.ts index 3cb73d681f5b..2bfec114798a 100644 --- a/app/selectors/selectedNetworkController.ts +++ b/app/selectors/selectedNetworkController.ts @@ -8,13 +8,14 @@ import { strings } from '../../locales/i18n'; import { selectProviderConfig, selectNetworkClientId, - selectNetworkConfigurations, selectSelectedNetworkClientId, - selectChainId as selectProviderChainId, + selectEvmChainId as selectProviderChainId, selectRpcUrl as selectProviderRpcUrl, ProviderConfig, - selectChainId, + selectEvmChainId, + selectEvmNetworkConfigurationsByChainId, } from './networkController'; +import { isNonEvmChainId } from '../core/Multichain/utils'; const selectSelectedNetworkControllerState = (state: RootState) => state?.engine?.backgroundState?.SelectedNetworkController; @@ -38,9 +39,9 @@ export const makeSelectDomainNetworkClientId = () => const selectProviderNetworkName = createSelector( [ selectProviderConfig, - selectNetworkConfigurations, + selectEvmNetworkConfigurationsByChainId, selectSelectedNetworkClientId, - selectChainId, + selectEvmChainId, ], ( providerConfig: ProviderConfig, @@ -48,6 +49,10 @@ const selectProviderNetworkName = createSelector( selectedNetworkClientId, chainId, ) => { + if (isNonEvmChainId(chainId)) { + return networkConfigurations[chainId]?.name; + } + if (providerConfig.type === 'rpc') { return networkConfigurations[chainId]?.rpcEndpoints.find( ({ networkClientId }) => networkClientId === selectedNetworkClientId, @@ -76,15 +81,14 @@ const selectProviderNetworkImageSource = createSelector( chainId: providerConfig.chainId, }), ); - export const makeSelectNetworkName = () => createSelector( [ - selectNetworkConfigurations, + selectEvmNetworkConfigurationsByChainId, selectProviderNetworkName, makeSelectDomainNetworkClientId(), selectNetworkClientId, - selectChainId, + selectEvmChainId, (_: RootState, hostname?: string) => hostname, ], ( @@ -95,7 +99,8 @@ export const makeSelectNetworkName = () => chainId, hostname, ) => { - if (!hostname || !process.env.MM_PER_DAPP_SELECTED_NETWORK) return providerNetworkName; + if (!hostname || !process.env.MM_PER_DAPP_SELECTED_NETWORK) + return providerNetworkName; const relevantNetworkClientId = domainNetworkClientId || globalNetworkClientId; return ( @@ -112,11 +117,11 @@ export const makeSelectNetworkName = () => export const makeSelectNetworkImageSource = () => createSelector( [ - selectNetworkConfigurations, + selectEvmNetworkConfigurationsByChainId, selectProviderNetworkImageSource, makeSelectDomainNetworkClientId(), selectNetworkClientId, - selectChainId, + selectEvmChainId, (_: RootState, hostname?: string) => hostname, ], ( @@ -152,7 +157,7 @@ export const makeSelectChainId = () => selectProviderChainId, makeSelectDomainNetworkClientId(), selectNetworkClientId, - selectChainId, + selectEvmChainId, (_: RootState, hostname?: string) => hostname, ], ( @@ -167,6 +172,7 @@ export const makeSelectChainId = () => } const relevantNetworkClientId = domainNetworkClientId || globalNetworkClientId; + return ( chainId || // @ts-expect-error The utils/network file is still JS @@ -175,14 +181,15 @@ export const makeSelectChainId = () => }, ); +// TODO: [SOLANA] - This do not support non evm networks, need to revisit export const makeSelectRpcUrl = () => createSelector( [ - selectNetworkConfigurations, + selectEvmNetworkConfigurationsByChainId, selectProviderRpcUrl, makeSelectDomainNetworkClientId(), selectNetworkClientId, - selectChainId, + selectEvmChainId, (_: RootState, hostname?: string) => hostname, ], ( @@ -193,7 +200,11 @@ export const makeSelectRpcUrl = () => chainId, hostname, ) => { - if (!hostname || !process.env.MM_PER_DAPP_SELECTED_NETWORK) return providerRpcUrl; + if (isNonEvmChainId(chainId)) { + return; + } + if (!hostname || !process.env.MM_PER_DAPP_SELECTED_NETWORK) + return providerRpcUrl; const relevantNetworkClientId = domainNetworkClientId || globalNetworkClientId; return networkConfigurations[chainId]?.rpcEndpoints.find( diff --git a/app/selectors/smartTransactionsController.ts b/app/selectors/smartTransactionsController.ts index fb8948e8128f..04679f8839a3 100644 --- a/app/selectors/smartTransactionsController.ts +++ b/app/selectors/smartTransactionsController.ts @@ -3,7 +3,7 @@ import { selectSmartTransactionsOptInStatus } from './preferencesController'; import { RootState } from '../reducers'; import { swapsSmartTxFlagEnabled } from '../reducers/swaps'; import { isHardwareAccount } from '../util/address'; -import { selectChainId, selectProviderConfig } from './networkController'; +import { selectEvmChainId, selectProviderConfig } from './networkController'; import { SmartTransaction, SmartTransactionStatuses, @@ -16,7 +16,7 @@ export const selectSmartTransactionsEnabled = (state: RootState) => { const addrIshardwareAccount = selectedAddress ? isHardwareAccount(selectedAddress) : false; - const chainId = selectChainId(state); + const chainId = selectEvmChainId(state); const providerConfigRpcUrl = selectProviderConfig(state).rpcUrl; const isAllowedNetwork = @@ -53,7 +53,7 @@ export const selectShouldUseSmartTransaction = (state: RootState) => { export const selectPendingSmartTransactionsBySender = (state: RootState) => { const selectedAddress = selectSelectedInternalAccountFormattedAddress(state); - const chainId = selectChainId(state); + const chainId = selectEvmChainId(state); const smartTransactions: SmartTransaction[] = state.engine.backgroundState.SmartTransactionsController diff --git a/app/selectors/snaps/interfaceController.ts b/app/selectors/snaps/interfaceController.ts new file mode 100644 index 000000000000..f8f1a4f3f6a5 --- /dev/null +++ b/app/selectors/snaps/interfaceController.ts @@ -0,0 +1,47 @@ +import { createSelector } from '@reduxjs/toolkit'; +import { createDeepEqualSelector } from '../util'; +import { RootState } from '../../reducers'; + +/** + * Get the Snap interfaces from the redux state. + * + * @param state - Redux state object. + * @returns the Snap interfaces. + */ +// eslint-disable-next-line @typescript-eslint/no-explicit-any +const getInterfaces = (state: RootState) => + state?.engine?.backgroundState?.SnapInterfaceController.interfaces; + +/** + * Input selector providing a way to pass a Snap interface ID as an argument. + * + * @param _state - Redux state object. + * @param interfaceId - ID of a Snap interface. + * @returns ID of a Snap Interface that can be used as input selector. + */ +const selectInterfaceId = (_state: RootState, interfaceId: string) => + interfaceId; + +/** + * Get a memoized version of the Snap interfaces. + */ +export const getMemoizedInterfaces = createDeepEqualSelector( + getInterfaces, + (interfaces) => interfaces, +); + +/** + * Get a Snap Interface with a given ID. + */ +export const getInterface = createSelector( + [getMemoizedInterfaces, selectInterfaceId], + (interfaces, id) => interfaces[id], +); + +/** + * Get a memoized version of a Snap interface with a given ID + */ +export const getMemoizedInterface = createDeepEqualSelector( + getInterface, + (snapInterface) => snapInterface, +); diff --git a/app/selectors/tokenBalancesController.ts b/app/selectors/tokenBalancesController.ts index dc7385e71826..021dd0497151 100644 --- a/app/selectors/tokenBalancesController.ts +++ b/app/selectors/tokenBalancesController.ts @@ -4,7 +4,7 @@ import { createSelector } from 'reselect'; import { RootState } from '../reducers'; import { TokenBalancesControllerState } from '@metamask/assets-controllers'; import { selectSelectedInternalAccountAddress } from './accountsController'; -import { selectChainId } from './networkController'; +import { selectEvmChainId } from './networkController'; const selectTokenBalancesControllerState = (state: RootState) => state.engine.backgroundState.TokenBalancesController; @@ -18,7 +18,7 @@ export const selectTokensBalances = createSelector( export const selectContractBalances = createSelector( selectTokenBalancesControllerState, selectSelectedInternalAccountAddress, - selectChainId, + selectEvmChainId, ( tokenBalancesControllerState: TokenBalancesControllerState, selectedInternalAccountAddress: string | undefined, diff --git a/app/selectors/tokenRatesController.ts b/app/selectors/tokenRatesController.ts index d27c4dc7ac87..ec223071c8d8 100644 --- a/app/selectors/tokenRatesController.ts +++ b/app/selectors/tokenRatesController.ts @@ -2,14 +2,14 @@ import { createSelector } from 'reselect'; import { TokenRatesControllerState } from '@metamask/assets-controllers'; import { RootState } from '../reducers'; -import { selectChainId } from './networkController'; +import { selectEvmChainId } from './networkController'; import { Hex } from '@metamask/utils'; const selectTokenRatesControllerState = (state: RootState) => state.engine.backgroundState.TokenRatesController; export const selectContractExchangeRates = createSelector( - selectChainId, + selectEvmChainId, selectTokenRatesControllerState, (chainId: Hex, tokenRatesControllerState: TokenRatesControllerState) => tokenRatesControllerState.marketData[chainId], diff --git a/app/selectors/tokenSearchDiscoveryController.test.ts b/app/selectors/tokenSearchDiscoveryController.test.ts new file mode 100644 index 000000000000..a9b946526ca7 --- /dev/null +++ b/app/selectors/tokenSearchDiscoveryController.test.ts @@ -0,0 +1,46 @@ +import { RootState } from '../reducers'; +import { selectRecentTokenSearches } from './tokenSearchDiscoveryController'; + +describe('Token Search Discovery Controller Selectors', () => { + const mockRecentSearches = ['ETH', 'USDC', 'DAI']; + + const mockState = { + engine: { + backgroundState: { + TokenSearchDiscoveryController: { + recentSearches: mockRecentSearches, + }, + }, + }, + } as unknown as RootState; + + describe('selectRecentTokenSearches', () => { + it('returns recent token searches from state', () => { + expect(selectRecentTokenSearches(mockState)).toEqual(mockRecentSearches); + }); + + it('returns empty array when no recent searches exist', () => { + const stateWithoutSearches = { + engine: { + backgroundState: { + TokenSearchDiscoveryController: { + recentSearches: [], + }, + }, + }, + } as unknown as RootState; + + expect(selectRecentTokenSearches(stateWithoutSearches)).toEqual([]); + }); + + it('returns empty array when TokenSearchDiscoveryController is not initialized', () => { + const stateWithoutController = { + engine: { + backgroundState: {}, + }, + } as unknown as RootState; + + expect(selectRecentTokenSearches(stateWithoutController)).toEqual([]); + }); + }); +}); diff --git a/app/selectors/tokenSearchDiscoveryController.ts b/app/selectors/tokenSearchDiscoveryController.ts new file mode 100644 index 000000000000..4aff774c7b58 --- /dev/null +++ b/app/selectors/tokenSearchDiscoveryController.ts @@ -0,0 +1,10 @@ +import { createSelector } from 'reselect'; +import { RootState } from '../reducers'; + +const selectTokenSearchDiscoveryControllerState = (state: RootState) => + state.engine.backgroundState.TokenSearchDiscoveryController; + +export const selectRecentTokenSearches = createSelector( + selectTokenSearchDiscoveryControllerState, + (state) => state?.recentSearches ?? [], +); diff --git a/app/selectors/tokensController.ts b/app/selectors/tokensController.ts index fd4e9e4448ab..56f809ed3523 100644 --- a/app/selectors/tokensController.ts +++ b/app/selectors/tokensController.ts @@ -6,10 +6,10 @@ import { createDeepEqualSelector } from './util'; import { selectSelectedInternalAccountAddress } from './accountsController'; import { isPortfolioViewEnabled } from '../util/networks'; import { - selectChainId, + selectEvmChainId, + selectEvmNetworkConfigurationsByChainId, selectIsAllNetworks, selectIsPopularNetwork, - selectNetworkConfigurations, } from './networkController'; import { PopularList } from '../util/networks/customNetworks'; import { ChainId } from '@metamask/controller-utils'; @@ -19,7 +19,7 @@ const selectTokensControllerState = (state: RootState) => export const selectTokens = createDeepEqualSelector( selectTokensControllerState, - selectChainId, + selectEvmChainId, selectSelectedInternalAccountAddress, ( tokensControllerState: TokensControllerState, @@ -38,7 +38,7 @@ export const selectTokens = createDeepEqualSelector( export const selectTokensByChainIdAndAddress = createDeepEqualSelector( selectTokensControllerState, - selectChainId, + selectEvmChainId, selectSelectedInternalAccountAddress, ( tokensControllerState: TokensControllerState, @@ -80,8 +80,8 @@ export const selectAllTokens = createSelector( ); export const getChainIdsToPoll = createDeepEqualSelector( - selectNetworkConfigurations, - selectChainId, + selectEvmNetworkConfigurationsByChainId, + selectEvmChainId, (networkConfigurations, currentChainId) => { if (!isPortfolioViewEnabled()) { return [currentChainId]; @@ -171,7 +171,7 @@ export const selectAllDetectedTokensFlat = createSelector( export const selectTransformedTokens = createSelector( selectAllTokens, selectSelectedInternalAccountAddress, - selectChainId, + selectEvmChainId, selectIsAllNetworks, selectIsPopularNetwork, ( diff --git a/app/selectors/transactionController.test.ts b/app/selectors/transactionController.test.ts index b4b78876f4e5..9f009e18369b 100644 --- a/app/selectors/transactionController.test.ts +++ b/app/selectors/transactionController.test.ts @@ -1,10 +1,195 @@ -import { RootState } from '../reducers'; -import { selectTransactions } from './transactionController'; +import { SmartTransaction } from '@metamask/smart-transactions-controller/dist/types'; +import { RootState } from '../components/UI/BasicFunctionality/BasicFunctionalityModal/BasicFunctionalityModal.test'; +import { + selectTransactions, + selectNonReplacedTransactions, + selectSwapsTransactions, + selectTransactionMetadataById, + selectSortedTransactions, +} from './transactionController'; + +jest.mock('./smartTransactionsController', () => ({ + selectPendingSmartTransactionsBySender: (state: { + pendingSmartTransactions: SmartTransaction[]; + }) => state.pendingSmartTransactions || [], +})); describe('TransactionController Selectors', () => { describe('selectTransactions', () => { it('returns transactions from TransactionController state', () => { const transactions = [{ id: 1 }, { id: 2 }]; + const state = { + engine: { + backgroundState: { + TransactionController: { + transactions, + }, + }, + }, + } as unknown as RootState; + + expect(selectTransactions(state)).toStrictEqual(transactions); + }); + }); + + describe('selectNonReplacedTransactions', () => { + it('filters out transactions that have replacedBy, replacedById, and hash all truthy', () => { + const transactions = [ + { id: '1', replacedBy: 'x', replacedById: 'y', hash: 'z' }, // should be filtered out + { id: '2', replacedBy: null, replacedById: null, hash: null }, // kept + { id: '3', replacedBy: 'a', replacedById: 'b' }, // missing hash, kept + { id: '4', replacedBy: 'a', replacedById: 'b', hash: '' }, // empty hash (falsy), kept + ]; + const state = { + engine: { + backgroundState: { + TransactionController: { + transactions, + }, + }, + }, + } as unknown as RootState; + + const expected = [ + { id: '2', replacedBy: null, replacedById: null, hash: null }, + { id: '3', replacedBy: 'a', replacedById: 'b' }, + { id: '4', replacedBy: 'a', replacedById: 'b', hash: '' }, + ]; + expect(selectNonReplacedTransactions(state)).toStrictEqual(expected); + }); + }); + + describe('selectSwapsTransactions', () => { + it('returns swapsTransactions if present', () => { + const swaps = { swap1: 'data' }; + const state = { + engine: { + backgroundState: { + TransactionController: { + transactions: [], + swapsTransactions: swaps, + }, + }, + }, + } as unknown as RootState; + expect(selectSwapsTransactions(state)).toStrictEqual(swaps); + }); + + it('returns an empty object if swapsTransactions is not present', () => { + const state = { + engine: { + backgroundState: { + TransactionController: { + transactions: [], + // swapsTransactions is missing + }, + }, + }, + } as unknown as RootState; + expect(selectSwapsTransactions(state)).toStrictEqual({}); + }); + }); + + describe('selectTransactionMetadataById', () => { + it('returns the transaction matching the given id', () => { + const transactions = [ + { id: 'a', data: 'foo' }, + { id: 'b', data: 'bar' }, + ]; + const state = { + engine: { + backgroundState: { + TransactionController: { + transactions, + }, + }, + }, + } as unknown as RootState; + expect(selectTransactionMetadataById(state, 'a')).toStrictEqual({ + id: 'a', + data: 'foo', + }); + expect(selectTransactionMetadataById(state, 'b')).toStrictEqual({ + id: 'b', + data: 'bar', + }); + }); + + it('returns undefined if no transaction matches the given id', () => { + const transactions = [{ id: 'a', data: 'foo' }]; + const state = { + engine: { + backgroundState: { + TransactionController: { + transactions, + }, + }, + }, + } as unknown as RootState; + expect( + selectTransactionMetadataById(state, 'non-existent'), + ).toBeUndefined(); + }); + }); + + describe('selectSortedTransactions', () => { + it('merges non-replaced transactions and pending smart transactions and sorts them descending by time', () => { + // Transactions with one replaced transaction and two non-replaced ones + const transactions = [ + { id: '1', time: 100 }, + { id: '2', time: 200, replacedBy: 'x', replacedById: 'y', hash: 'z' }, // replaced, filtered out + { id: '3', time: 50 }, + ]; + // Pending smart transactions provided via our mocked selector + const pendingSmartTransactions = [ + { id: '4', time: 150 }, + { id: '5', time: 250 }, + ]; + + const state = { + engine: { + backgroundState: { + TransactionController: { + transactions, + }, + }, + }, + pendingSmartTransactions, + } as unknown as RootState; + + const expectedSorted = [ + { id: '5', time: 250 }, + { id: '4', time: 150 }, + { id: '1', time: 100 }, + { id: '3', time: 50 }, + ]; + + expect(selectSortedTransactions(state)).toStrictEqual(expectedSorted); + }); + + it('handles empty arrays correctly', () => { + const state = { + engine: { + backgroundState: { + TransactionController: { + transactions: [], + }, + }, + }, + pendingSmartTransactions: [], + } as unknown as RootState; + expect(selectSortedTransactions(state)).toStrictEqual([]); + }); + + it('merge non-replaced transactions and pending smart when time is not present', () => { + // Transactions with one replaced transaction and two non-replaced ones + const transactions = [ + { id: '1' }, + { id: '2', time: 50, replacedBy: 'x', replacedById: 'y', hash: 'z' }, // replaced, filtered out + { id: '3' }, + ]; + // Pending smart transactions provided via our mocked selector + const pendingSmartTransactions = [{ id: '4' }, { id: '5', time: 250 }]; const state = { engine: { @@ -14,11 +199,17 @@ describe('TransactionController Selectors', () => { }, }, }, - }; + pendingSmartTransactions, + } as unknown as RootState; + + const expectedSorted = [ + { id: '5', time: 250 }, + { id: '1' }, + { id: '3' }, + { id: '4' }, + ]; - expect(selectTransactions(state as unknown as RootState)).toStrictEqual( - transactions, - ); + expect(selectSortedTransactions(state)).toStrictEqual(expectedSorted); }); }); }); diff --git a/app/selectors/transactionController.ts b/app/selectors/transactionController.ts index a52e102dfb86..c626cc94abc7 100644 --- a/app/selectors/transactionController.ts +++ b/app/selectors/transactionController.ts @@ -1,6 +1,7 @@ import { createSelector } from 'reselect'; import { RootState } from '../reducers'; import { createDeepEqualSelector } from './util'; +import { selectPendingSmartTransactionsBySender } from './smartTransactionsController'; const selectTransactionControllerState = (state: RootState) => state.engine.backgroundState.TransactionController; @@ -33,3 +34,11 @@ export const selectTransactionMetadataById = createDeepEqualSelector( (_: RootState, id: string) => id, (transactions, id) => transactions.find((tx) => tx.id === id), ); + +export const selectSortedTransactions = createDeepEqualSelector( + [selectNonReplacedTransactions, selectPendingSmartTransactionsBySender], + (nonReplacedTransactions, pendingSmartTransactions) => + [...nonReplacedTransactions, ...pendingSmartTransactions].sort( + (a, b) => (b?.time ?? 0) - (a?.time ?? 0), + ), +); diff --git a/app/selectors/types.ts b/app/selectors/types.ts index ecfedfb3ac43..af524cb1667a 100644 --- a/app/selectors/types.ts +++ b/app/selectors/types.ts @@ -18,9 +18,11 @@ import { GasFeeController } from '@metamask/gas-fee-controller'; import { PPOMState } from '@metamask/ppom-validator'; import { ApprovalControllerState } from '@metamask/approval-controller'; import { AccountsControllerState } from '@metamask/accounts-controller'; +import { TokenSearchDiscoveryControllerState } from '@metamask/token-search-discovery-controller'; ///: BEGIN:ONLY_INCLUDE_IF(preinstalled-snaps,external-snaps) import { SnapController } from '@metamask/snaps-controllers'; ///: END:ONLY_INCLUDE_IF + export interface EngineState { engine: { backgroundState: { @@ -45,6 +47,7 @@ export interface EngineState { TokensController: TokensControllerState; ApprovalController: ApprovalControllerState; AccountsController: AccountsControllerState; + TokenSearchDiscoveryController: TokenSearchDiscoveryControllerState; }; }; } diff --git a/app/util/address/index.ts b/app/util/address/index.ts index d4019e5f4592..b5c5ecaf77aa 100644 --- a/app/util/address/index.ts +++ b/app/util/address/index.ts @@ -168,7 +168,7 @@ export async function importAccountFromPrivateKey(private_key: string) { [pkey], ); const checksummedAddress = toChecksumHexAddress(importedAccountAddress); - return Engine.setSelectedAddress(checksummedAddress); + Engine.setSelectedAddress(checksummedAddress); } /** diff --git a/app/util/blockaid/index.test.ts b/app/util/blockaid/index.test.ts index a99a28a5b881..f1d9479e181d 100644 --- a/app/util/blockaid/index.test.ts +++ b/app/util/blockaid/index.test.ts @@ -12,11 +12,9 @@ import { import * as NetworkControllerMock from '../../selectors/networkController'; import { NETWORKS_CHAIN_ID } from '../../constants/network'; import Engine from '../../core/Engine'; -import ppomUtil from '../../lib/ppom/ppom-util'; import { getBlockaidMetricsParams, - isBlockaidSupportedOnCurrentChain, getBlockaidTransactionMetricsParams, isBlockaidFeatureEnabled, TransactionType, @@ -33,18 +31,12 @@ jest.mock('../../core/Engine', () => ({ }, })); -const mockIsChainSupported = jest.fn().mockResolvedValue(true); - describe('Blockaid util', () => { describe('getBlockaidTransactionMetricsParams', () => { beforeEach(() => { jest - .spyOn(NetworkControllerMock, 'selectChainId') + .spyOn(NetworkControllerMock, 'selectEvmChainId') .mockReturnValue(NETWORKS_CHAIN_ID.MAINNET); - - jest - .spyOn(ppomUtil, 'isChainSupported') - .mockImplementation(mockIsChainSupported); }); afterEach(() => { @@ -120,7 +112,7 @@ describe('Blockaid util', () => { describe('getBlockaidMetricsParams', () => { beforeEach(() => { jest - .spyOn(NetworkControllerMock, 'selectChainId') + .spyOn(NetworkControllerMock, 'selectEvmChainId') .mockReturnValue(NETWORKS_CHAIN_ID.MAINNET); }); @@ -135,7 +127,7 @@ describe('Blockaid util', () => { it('returns empty object when chain id is not in supported chain ids list', async () => { jest - .spyOn(NetworkControllerMock, 'selectChainId') + .spyOn(NetworkControllerMock, 'selectEvmChainId') .mockReturnValue('0x10'); const result = getBlockaidMetricsParams(undefined); expect(result).toStrictEqual({}); @@ -198,28 +190,6 @@ describe('Blockaid util', () => { }); }); - describe('isBlockaidSupportedOnCurrentChain', () => { - afterEach(() => { - jest.clearAllMocks(); - }); - - it('return true if blockaid is supported on current network', async () => { - jest - .spyOn(NetworkControllerMock, 'selectChainId') - .mockReturnValue(NETWORKS_CHAIN_ID.MAINNET); - const result = await isBlockaidSupportedOnCurrentChain(); - expect(result).toEqual(true); - }); - - it('return false if blockaid is not on current network', async () => { - jest - .spyOn(NetworkControllerMock, 'selectChainId') - .mockReturnValue(NETWORKS_CHAIN_ID.GOERLI); - const result = await isBlockaidSupportedOnCurrentChain(); - expect(result).toEqual(false); - }); - }); - describe('isBlockaidFeatureEnabled', () => { afterEach(() => { jest.clearAllMocks(); @@ -227,21 +197,26 @@ describe('Blockaid util', () => { it('return true if blockaid is supported on current network and its enabled by the user', async () => { jest - .spyOn(NetworkControllerMock, 'selectChainId') + .spyOn(NetworkControllerMock, 'selectEvmChainId') .mockReturnValue(NETWORKS_CHAIN_ID.MAINNET); const result = await isBlockaidFeatureEnabled(); expect(result).toEqual(true); }); it('return false if blockaid is not supported on current network', async () => { - jest.spyOn(NetworkControllerMock, 'selectChainId').mockReturnValue('0x9'); + Engine.context.PreferencesController.state.securityAlertsEnabled = false; + + jest + .spyOn(NetworkControllerMock, 'selectEvmChainId') + .mockReturnValue('0x9'); + const result = await isBlockaidFeatureEnabled(); expect(result).toEqual(false); }); it('return false if blockaid is not enabled by the user', async () => { jest - .spyOn(NetworkControllerMock, 'selectChainId') + .spyOn(NetworkControllerMock, 'selectEvmChainId') .mockReturnValue(NETWORKS_CHAIN_ID.MAINNET); Engine.context.PreferencesController.state.securityAlertsEnabled = false; const result = await isBlockaidFeatureEnabled(); diff --git a/app/util/blockaid/index.ts b/app/util/blockaid/index.ts index ac2690eaa661..fa6dfae7d35c 100644 --- a/app/util/blockaid/index.ts +++ b/app/util/blockaid/index.ts @@ -5,9 +5,6 @@ import type { import Engine from '../../core/Engine'; import { ResultType } from '../../components/Views/confirmations/components/BlockaidBanner/BlockaidBanner.types'; -import { store } from '../../store'; -import { selectChainId } from '../../selectors/networkController'; -import PPOMUtils from '../../lib/ppom/ppom-util'; interface TransactionSecurityAlertResponseType { securityAlertResponses: Record<string, SecurityAlertResponse>; @@ -16,18 +13,13 @@ interface TransactionSecurityAlertResponseType { export type TransactionType = TransactionMeta & TransactionSecurityAlertResponseType; -export const isBlockaidSupportedOnCurrentChain = async (): Promise<boolean> => { - const chainId = selectChainId(store.getState()); - return await PPOMUtils.isChainSupported(chainId); -}; - export const isBlockaidPreferenceEnabled = (): boolean => { const { PreferencesController } = Engine.context; return PreferencesController.state.securityAlertsEnabled; }; export const isBlockaidFeatureEnabled = async (): Promise<boolean> => - (await isBlockaidSupportedOnCurrentChain()) && isBlockaidPreferenceEnabled(); + isBlockaidPreferenceEnabled(); export const getBlockaidMetricsParams = ( securityAlertResponse?: SecurityAlertResponse, diff --git a/app/util/confirmation/signatureUtils.js b/app/util/confirmation/signatureUtils.js index bc09a742b5fd..3db2ddb9958d 100644 --- a/app/util/confirmation/signatureUtils.js +++ b/app/util/confirmation/signatureUtils.js @@ -6,7 +6,7 @@ import { WALLET_CONNECT_ORIGIN } from '../walletconnect'; import AppConstants from '../../core/AppConstants'; import { InteractionManager } from 'react-native'; import { strings } from '../../../locales/i18n'; -import { selectChainId } from '../../selectors/networkController'; +import { selectEvmChainId } from '../../selectors/networkController'; import { store } from '../../store'; import { getBlockaidMetricsParams } from '../blockaid'; import Device from '../device'; @@ -42,7 +42,7 @@ export const getAnalyticsParams = ( }; try { - const chainId = selectChainId(store.getState()); + const chainId = selectEvmChainId(store.getState()); analyticsParams.chain_id = getDecimalChainId(chainId); if (pageInfo.url) { diff --git a/app/util/conversions.js b/app/util/conversions.js index 9b568005942a..3a9040d81dd1 100644 --- a/app/util/conversions.js +++ b/app/util/conversions.js @@ -1,3 +1,4 @@ +import { hexToBN } from '@metamask/controller-utils'; import { ETH, GWEI, WEI } from './custom-gas'; import { conversionUtil, @@ -225,3 +226,7 @@ export function sumHexWEIsToRenderableEth(hexWEIs) { }), ); } + +export function multiplyHexes(hex1, hex2) { + return hexToBN(hex1).mul(hexToBN(hex2)).toString(16); +} diff --git a/app/util/conversions.test.js b/app/util/conversions.test.js new file mode 100644 index 000000000000..93b2705c2a2c --- /dev/null +++ b/app/util/conversions.test.js @@ -0,0 +1,12 @@ +import { multiplyHexes } from './conversions'; + +describe('multiplyHexes', () => { + it('should correctly multiply two hex numbers', () => { + const hex1 = '0x5'; + const hex2 = '0x5'; + const expectedResult = '19'; + + const result = multiplyHexes(hex1, hex2); + expect(result).toBe(expectedResult); + }); +}); diff --git a/app/util/logs/__snapshots__/index.test.ts.snap b/app/util/logs/__snapshots__/index.test.ts.snap index 303d67ae0676..585b1125bf2e 100644 --- a/app/util/logs/__snapshots__/index.test.ts.snap +++ b/app/util/logs/__snapshots__/index.test.ts.snap @@ -55,9 +55,31 @@ exports[`logs :: generateStateLogs generates a valid json export 1`] = ` "LoggingController": { "logs": {}, }, + "MultichainAssetsController": { + "accountsAssets": {}, + "assetsMetadata": {}, + }, "MultichainBalancesController": { "balances": {}, }, + "MultichainNetworkController": { + "isEvmSelected": true, + "multichainNetworkConfigurationsByChainId": { + "bip122:000000000019d6689c085ae165831e93": { + "chainId": "bip122:000000000019d6689c085ae165831e93", + "isEvm": false, + "name": "Bitcoin Mainnet", + "nativeCurrency": "bip122:000000000019d6689c085ae165831e93/slip44:0", + }, + "solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp": { + "chainId": "solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp", + "isEvm": false, + "name": "Solana Mainnet", + "nativeCurrency": "solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp/token:EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v", + }, + }, + "selectedMultichainNetworkChainId": "solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp", + }, "NetworkController": { "networkConfigurationsByChainId": { "0x1": { @@ -139,6 +161,8 @@ exports[`logs :: generateStateLogs generates a valid json export 1`] = ` }, "NotificationServicesPushController": { "fcmToken": "", + "isPushEnabled": true, + "isUpdatingFCMToken": false, }, "PPOMController": { "storageMetadata": [], @@ -258,6 +282,9 @@ exports[`logs :: generateStateLogs generates a valid json export 1`] = ` "snaps": {}, "unencryptedSnapStates": {}, }, + "SnapInterfaceController": { + "interfaces": {}, + }, "SnapsRegistry": { "database": null, "databaseUnavailable": false, @@ -330,6 +357,10 @@ exports[`logs :: generateStateLogs generates a valid json export 1`] = ` "TokenRatesController": { "marketData": {}, }, + "TokenSearchDiscoveryController": { + "lastSearchTimestamp": null, + "recentSearches": [], + }, "TransactionController": { "lastFetchedBlockNumbers": {}, "methodData": {}, diff --git a/app/util/networks/customNetworks.test.ts b/app/util/networks/customNetworks.test.ts index 42d826e7dd82..8d8017b3c7db 100644 --- a/app/util/networks/customNetworks.test.ts +++ b/app/util/networks/customNetworks.test.ts @@ -1,5 +1,10 @@ -import { PopularList } from './customNetworks'; +import { + PopularList, + getNonEvmNetworkImageSourceByChainId, +} from './customNetworks'; import { toHex } from '@metamask/controller-utils'; +import { SolScope } from '@metamask/keyring-api'; +import { CaipChainId } from '@metamask/utils'; describe('popularNetwork', () => { it('should have correct chainIds for all popular network', () => { @@ -19,3 +24,16 @@ describe('popularNetwork', () => { }); }); }); + +describe('getNonEvmNetworkImageSourceByChainId', () => { + it('should return image source for valid non-EVM network chainId', () => { + const imageSource = getNonEvmNetworkImageSourceByChainId(SolScope.Mainnet); + expect(imageSource).toBeDefined(); + }); + + it('should return undefined for invalid chainId', () => { + const invalidChainId = 'invalid:chain:id' as CaipChainId; + const imageSource = getNonEvmNetworkImageSourceByChainId(invalidChainId); + expect(imageSource).toBeUndefined(); + }); +}); diff --git a/app/util/networks/customNetworks.tsx b/app/util/networks/customNetworks.tsx index 3424079dddc9..a34bd9516b15 100644 --- a/app/util/networks/customNetworks.tsx +++ b/app/util/networks/customNetworks.tsx @@ -1,6 +1,9 @@ -import { Hex } from '@metamask/utils'; +import { CaipChainId, Hex } from '@metamask/utils'; import { toHex } from '@metamask/controller-utils'; import { CHAIN_IDS } from '@metamask/transaction-controller'; +///: BEGIN:ONLY_INCLUDE_IF(keyring-snaps) +import { BtcScope, SolScope } from '@metamask/keyring-api'; +///: END:ONLY_INCLUDE_IF /* eslint-disable @typescript-eslint/no-require-imports, import/no-commonjs */ const InfuraKey = process.env.MM_INFURA_PROJECT_ID; @@ -100,6 +103,16 @@ export const PopularList = [ }, ]; +export const getNonEvmNetworkImageSourceByChainId = (chainId: CaipChainId) => { + if (chainId === SolScope.Mainnet) { + return require('../../images/solana-logo.png'); + } + if (chainId === BtcScope.Mainnet) { + return require('../../images/bitcoin-logo.png'); + } + return undefined; +}; + export const INFURA_TESTNET_CHAIN_IDS = { GOERLI: '0x5', LINEA_GOERLI: '0xe704', diff --git a/app/util/networks/engineNetworkUtils.ts b/app/util/networks/engineNetworkUtils.ts index 65391429710b..8d315936e1c3 100644 --- a/app/util/networks/engineNetworkUtils.ts +++ b/app/util/networks/engineNetworkUtils.ts @@ -1,8 +1,8 @@ -import Engine from '../../core/Engine'; import { convertHexToDecimal } from '@metamask/controller-utils'; import { NetworkClientId } from '@metamask/network-controller'; import { TransactionParams } from '@metamask/transaction-controller'; -import { isStrictHexString } from '@metamask/utils'; +import { Hex, isStrictHexString } from '@metamask/utils'; +import Engine from '../../core/Engine'; /** * Convert the given value into a valid network ID. The ID is accepted @@ -43,15 +43,21 @@ export function toggleUseSafeChainsListValidation(value: boolean): void { */ export const fetchEstimatedMultiLayerL1Fee = async ( _: unknown, - { txParams, networkClientId }: { - txParams: TransactionParams, - networkClientId: NetworkClientId, - } + { + chainId, + networkClientId, + txParams, + }: { + chainId?: Hex; + txParams: TransactionParams; + networkClientId?: NetworkClientId; + }, ) => { const layer1GasFee = await Engine.context.TransactionController.getLayer1GasFee({ - transactionParams: txParams, + chainId, networkClientId, + transactionParams: txParams, }); const layer1GasFeeNoPrefix = layer1GasFee?.startsWith('0x') diff --git a/app/util/networks/handleNetworkSwitch.test.ts b/app/util/networks/handleNetworkSwitch.test.ts index b55dcde55fad..c3a1366236df 100644 --- a/app/util/networks/handleNetworkSwitch.test.ts +++ b/app/util/networks/handleNetworkSwitch.test.ts @@ -2,6 +2,7 @@ import Engine from '../../core/Engine'; import { SEPOLIA } from '../../constants/network'; import { store } from '../../store'; import { handleNetworkSwitch } from './handleNetworkSwitch'; +import { SolScope } from '@metamask/keyring-api'; const mockEngine = Engine; const mockStore = jest.mocked(store); @@ -15,6 +16,9 @@ jest.mock('../../core/Engine', () => ({ setActiveNetwork: jest.fn(), setProviderType: jest.fn(), }, + MultichainNetworkController: { + setActiveNetwork: jest.fn(), + }, }, })); @@ -30,6 +34,12 @@ function setupGetStateMock() { ({ engine: { backgroundState: { + MultichainNetworkController: { + isEvmSelected: true, + selectedMultichainNetworkChainId: SolScope.Mainnet, + + multichainNetworkConfigurationsByChainId: {}, + }, NetworkController: { selectedNetworkClientId: 'networkId1', networkConfigurationsByChainId: { @@ -105,8 +115,9 @@ describe('useHandleNetworkSwitch', () => { expect( mockEngine.context.CurrencyRateController.updateExchangeRate, ).not.toBeCalled(); + expect( - mockEngine.context.NetworkController.setActiveNetwork, + mockEngine.context.MultichainNetworkController.setActiveNetwork, ).not.toBeCalled(); expect( mockEngine.context.NetworkController.setProviderType, @@ -122,8 +133,9 @@ describe('useHandleNetworkSwitch', () => { expect( mockEngine.context.CurrencyRateController.updateExchangeRate, ).not.toBeCalled(); + expect( - mockEngine.context.NetworkController.setActiveNetwork, + mockEngine.context.MultichainNetworkController.setActiveNetwork, ).not.toBeCalled(); expect( mockEngine.context.NetworkController.setProviderType, @@ -137,7 +149,7 @@ describe('useHandleNetworkSwitch', () => { const nickname = handleNetworkSwitch('1338'); expect( - mockEngine.context.NetworkController.setActiveNetwork, + mockEngine.context.MultichainNetworkController.setActiveNetwork, ).toBeCalledWith('networkId1'); expect( mockEngine.context.NetworkController.setProviderType, @@ -153,7 +165,9 @@ describe('useHandleNetworkSwitch', () => { expect( mockEngine.context.NetworkController.setProviderType, ).not.toBeCalledWith(); - expect(mockEngine.context.NetworkController.setActiveNetwork).toBeCalled(); + expect( + mockEngine.context.MultichainNetworkController.setActiveNetwork, + ).toBeCalled(); expect(networkType).toBe(SEPOLIA); }); }); diff --git a/app/util/networks/handleNetworkSwitch.ts b/app/util/networks/handleNetworkSwitch.ts index 25563c253cd0..232bcaf1cff6 100644 --- a/app/util/networks/handleNetworkSwitch.ts +++ b/app/util/networks/handleNetworkSwitch.ts @@ -1,11 +1,11 @@ import { toHex } from '@metamask/controller-utils'; -import { NetworkController } from '@metamask/network-controller'; import Engine from '../../core/Engine'; import { - selectChainId, - selectNetworkConfigurations, + selectEvmChainId, + selectEvmNetworkConfigurationsByChainId, } from '../../selectors/networkController'; import { store } from '../../store'; +import { MultichainNetworkController } from '@metamask/multichain-network-controller'; /** * Switch to the given chain ID. @@ -21,10 +21,12 @@ const handleNetworkSwitch = (switchToChainId: string): string | undefined => { return; } - const networkController = Engine.context - .NetworkController as NetworkController; - const chainId = selectChainId(store.getState()); - const networkConfigurations = selectNetworkConfigurations(store.getState()); + const multichainNetworkController = Engine.context + .MultichainNetworkController as MultichainNetworkController; + const chainId = selectEvmChainId(store.getState()); + const networkConfigurations = selectEvmNetworkConfigurationsByChainId( + store.getState(), + ); // If current network is the same as the one we want to switch to, do nothing if (chainId === toHex(switchToChainId)) { @@ -40,7 +42,7 @@ const handleNetworkSwitch = (switchToChainId: string): string | undefined => { const [, { name: nickname, rpcEndpoints, defaultRpcEndpointIndex }] = entry; const { networkClientId } = rpcEndpoints[defaultRpcEndpointIndex]; - networkController.setActiveNetwork(networkClientId); + multichainNetworkController.setActiveNetwork(networkClientId); return nickname; } diff --git a/app/util/networks/index.js b/app/util/networks/index.js index a3d2a3726162..7fc77098482a 100644 --- a/app/util/networks/index.js +++ b/app/util/networks/index.js @@ -41,6 +41,10 @@ import { SEPOLIA_BLOCK_EXPLORER, SEPOLIA_FAUCET, } from '../../constants/urls'; +import { isNonEvmChainId } from '../../core/Multichain/utils'; +import { SolScope } from '@metamask/keyring-api'; +import { store } from '../../store'; +import { selectNonEvmNetworkConfigurationsByChainId } from '../../selectors/multichainNetworkController'; /** * List of the supported networks @@ -114,23 +118,6 @@ export const NetworkList = { const NetworkListKeys = Object.keys(NetworkList); -export const SECURITY_PROVIDER_SUPPORTED_CHAIN_IDS_FALLBACK_LIST = [ - NETWORKS_CHAIN_ID.MAINNET, - NETWORKS_CHAIN_ID.BSC, - NETWORKS_CHAIN_ID.BASE, - NETWORKS_CHAIN_ID.POLYGON, - NETWORKS_CHAIN_ID.ARBITRUM, - NETWORKS_CHAIN_ID.OPTIMISM, - NETWORKS_CHAIN_ID.AVAXCCHAIN, - NETWORKS_CHAIN_ID.LINEA_MAINNET, - NETWORKS_CHAIN_ID.SEPOLIA, - NETWORKS_CHAIN_ID.OPBNB, - NETWORKS_CHAIN_ID.ZKSYNC_ERA, - NETWORKS_CHAIN_ID.SCROLL, - NETWORKS_CHAIN_ID.BERACHAIN, - NETWORKS_CHAIN_ID.METACHAIN_ONE, -]; - export const BLOCKAID_SUPPORTED_NETWORK_NAMES = { [NETWORKS_CHAIN_ID.MAINNET]: 'Ethereum Mainnet', [NETWORKS_CHAIN_ID.BSC]: 'Binance Smart Chain', @@ -170,8 +157,15 @@ export const isMainNet = (chainId) => chainId === '0x1'; export const isLineaMainnet = (networkType) => networkType === LINEA_MAINNET; +export const isSolanaMainnet = (chainId) => chainId === SolScope.Mainnet; + export const getDecimalChainId = (chainId) => { - if (!chainId || typeof chainId !== 'string' || !chainId.startsWith('0x')) { + if ( + !chainId || + typeof chainId !== 'string' || + !chainId.startsWith('0x') || + isNonEvmChainId(chainId) + ) { return chainId; } return parseInt(chainId, 16).toString(10); @@ -301,6 +295,21 @@ export function findBlockExplorerForRpc(rpcTargetUrl, networkConfigurations) { return undefined; } +/** + * Returns block explorer for non-evm chain id + * + * @param {string} chainId - Chain ID of the network + * @returns {string} - Block explorer url + */ +export function findBlockExplorerForNonEvmChainId(chainId) { + const nonEvmNetworks = selectNonEvmNetworkConfigurationsByChainId( + store.getState(), + ); + const network = Object.values(nonEvmNetworks).find( + (network) => network.chainId === chainId, + ); + return network?.blockExplorers?.urls[network?.blockExplorers?.defaultIndex]; +} /** * Returns a boolean indicating if both URLs have the same host diff --git a/app/util/networks/index.test.ts b/app/util/networks/index.test.ts index 46b68d46cf7e..1dee7f61556b 100644 --- a/app/util/networks/index.test.ts +++ b/app/util/networks/index.test.ts @@ -67,6 +67,9 @@ jest.mock('./../../core/Engine', () => ({ }, }, }, + MultichainNetworkController: { + setActiveNetwork: () => jest.fn(), + }, PreferencesController: { state: {}, }, diff --git a/app/util/notifications/hooks/index.test.tsx b/app/util/notifications/hooks/index.test.tsx index 59535338cad5..07ff565a65b4 100644 --- a/app/util/notifications/hooks/index.test.tsx +++ b/app/util/notifications/hooks/index.test.tsx @@ -1,100 +1,45 @@ -/* eslint-disable import/no-namespace */ - -import { renderHook } from '@testing-library/react-hooks'; -import { Provider } from 'react-redux'; -import createMockStore from 'redux-mock-store'; -import React from 'react'; -import * as NotificationUtils from '../../../util/notifications'; -import FCMService from '../services/FCMService'; -import useNotificationHandler from './index'; -import initialRootState from '../../../util/test/initial-root-state'; -import * as Selectors from '../../../selectors/notifications'; import { NavigationContainerRef } from '@react-navigation/native'; - -jest.mock('../../../util/notifications', () => ({ - isNotificationsFeatureEnabled: jest.fn(), -})); - -jest.mock('../services/FCMService', () => ({ - registerAppWithFCM: jest.fn(), - saveFCMToken: jest.fn(), - registerTokenRefreshListener: jest.fn(), - listenForMessagesForeground: jest.fn(), -})); - -function arrangeMocks(isFeatureEnabled: boolean, isMetaMaskEnabled: boolean) { - jest.spyOn(NotificationUtils, 'isNotificationsFeatureEnabled') - .mockReturnValue(isFeatureEnabled); - - jest.spyOn(Selectors, 'selectIsMetamaskNotificationsEnabled') - .mockReturnValue(isMetaMaskEnabled); -} - -function arrangeStore() { - const store = createMockStore()(initialRootState); - - store.dispatch = jest.fn().mockImplementation((action) => { - if (typeof action === 'function') { - return action(store.dispatch, store.getState); - } - return Promise.resolve(); - }); - - return store; -} - -const mockNavigate = jest.fn(); -const mockNavigation = { - navigate: mockNavigate, -} as unknown as NavigationContainerRef; - -function arrangeHook() { - const store = arrangeStore(); - const hook = renderHook(() => useNotificationHandler(mockNavigation), { - wrapper: ({ children }) => <Provider store={store}>{children}</Provider>, - }); - - return hook; -} +import { renderHook } from '@testing-library/react-hooks'; +import useNotificationHandler from './index'; +// eslint-disable-next-line import/no-namespace +import * as UseRegisterPushNotificationsEffect from './useRegisterPushNotificationsEffect'; +// eslint-disable-next-line import/no-namespace +import * as UseNotifications from './useNotifications'; describe('useNotificationHandler', () => { beforeEach(() => { jest.clearAllMocks(); }); - it('does not register FCM when notifications are disabled', () => { - arrangeMocks(false, false); - - arrangeHook(); - - expect(FCMService.registerAppWithFCM).not.toHaveBeenCalled(); - expect(FCMService.saveFCMToken).not.toHaveBeenCalled(); - expect(FCMService.listenForMessagesForeground).not.toHaveBeenCalled(); - }); - - it('registers FCM when notifications feature is enabled', () => { - arrangeMocks(true, true); - - arrangeHook(); - - expect(FCMService.registerAppWithFCM).toHaveBeenCalledTimes(1); - expect(FCMService.saveFCMToken).toHaveBeenCalledTimes(1); - }); - - it('registers FCM when MetaMask notifications are enabled', () => { - arrangeMocks(true, true); - - arrangeHook(); - - expect(FCMService.registerAppWithFCM).toHaveBeenCalledTimes(1); - expect(FCMService.saveFCMToken).toHaveBeenCalledTimes(1); - }); - - it('handleNotificationCallback does nothing when notification is undefined', () => { - arrangeMocks(true, true); - - arrangeHook(); - - expect(mockNavigate).not.toHaveBeenCalled(); + const arrangeMocks = () => { + const mockNavigate = jest.fn(); + const mockNavigation = { + navigate: mockNavigate, + } as unknown as NavigationContainerRef; + + const mockUseRegisterPushNotificationsEffect = jest + .spyOn( + UseRegisterPushNotificationsEffect, + 'useRegisterPushNotificationsEffect', + ) + .mockImplementation(jest.fn()); + + const mockUseListNotificationsEffect = jest + .spyOn(UseNotifications, 'useListNotificationsEffect') + .mockImplementation(jest.fn()); + + return { + mockNavigation, + mockUseRegisterPushNotificationsEffect, + mockUseListNotificationsEffect, + }; + }; + + it('invokes the push notifications effect', async () => { + const mocks = arrangeMocks(); + renderHook(() => useNotificationHandler()); + + expect(mocks.mockUseRegisterPushNotificationsEffect).toHaveBeenCalled(); + expect(mocks.mockUseListNotificationsEffect).toHaveBeenCalled(); }); }); diff --git a/app/util/notifications/hooks/index.ts b/app/util/notifications/hooks/index.ts index f34ed31192ef..01322ed873bd 100644 --- a/app/util/notifications/hooks/index.ts +++ b/app/util/notifications/hooks/index.ts @@ -1,74 +1,12 @@ -import { useCallback, useEffect } from 'react'; -import { - INotification, - TRIGGER_TYPES, -} from '@metamask/notification-services-controller/notification-services'; - -import { useSelector } from 'react-redux'; -import { isNotificationsFeatureEnabled } from '../../../util/notifications'; - -import FCMService from '../services/FCMService'; -import NotificationsService from '../services/NotificationService'; -import { selectIsMetamaskNotificationsEnabled } from '../../../selectors/notifications'; -import { Linking } from 'react-native'; -import { NavigationContainerRef } from '@react-navigation/native'; -import Routes from '../../../constants/navigation/Routes'; - -const useNotificationHandler = (navigation: NavigationContainerRef) => { - /** - * Handles the action based on the type of notification (sent from the backend & following Notification types) that is opened - * @param notification - The notification that is opened - */ - - const isNotificationEnabled = useSelector( - selectIsMetamaskNotificationsEnabled, - ); - - const handleNotificationCallback = useCallback( - async (notification: INotification) => { - if (!notification) { - return; - } - if ( - notification.type === TRIGGER_TYPES.FEATURES_ANNOUNCEMENT && - notification.data.externalLink - ) { - Linking.openURL(notification.data.externalLink.externalLinkUrl); - } else { - navigation.navigate(Routes.NOTIFICATIONS.VIEW); - } - }, - [navigation], - ); - - const notificationEnabled = - isNotificationsFeatureEnabled() && isNotificationEnabled; - - useEffect(() => { - if (!notificationEnabled) return; - - // Firebase Cloud Messaging - FCMService.registerAppWithFCM(); - FCMService.saveFCMToken(); - FCMService.getFCMToken(); - FCMService.listenForMessagesBackground(); - - // Notifee - NotificationsService.onBackgroundEvent( - async ({ type, detail }) => - await NotificationsService.handleNotificationEvent({ - type, - detail, - callback: handleNotificationCallback, - }), - ); - - const unsubscribeForegroundEvent = FCMService.listenForMessagesForeground(); - - return () => { - unsubscribeForegroundEvent(); - }; - }, [handleNotificationCallback, notificationEnabled]); +import { useRegisterPushNotificationsEffect } from './useRegisterPushNotificationsEffect'; +import { useListNotificationsEffect } from './useNotifications'; + +/** + * Registers Push Notifications and lists notifications on startup. + */ +const useNotificationHandler = () => { + useRegisterPushNotificationsEffect(); + useListNotificationsEffect(); }; export default useNotificationHandler; diff --git a/app/util/notifications/hooks/types.ts b/app/util/notifications/hooks/types.ts index de327248428c..a53e7521099e 100644 --- a/app/util/notifications/hooks/types.ts +++ b/app/util/notifications/hooks/types.ts @@ -1,8 +1,5 @@ import type { InternalAccount } from '@metamask/keyring-internal-api'; import { KeyringTypes } from '@metamask/keyring-controller'; -import type { INotification } from '../../../util/notifications/types/notification'; - -import { MarkAsReadNotificationsParam } from '../../../actions/notification/helpers'; export interface EnableMetametricsReturn { enableMetametrics: () => Promise<string | undefined>; @@ -14,48 +11,13 @@ export interface DisableMetametricsReturn { loading: boolean; error?: string; } -export interface ListNotificationsReturn { - listNotifications: () => Promise<string | undefined>; - notificationsData: readonly INotification[]; - isLoading: boolean; - error?: string; -} -export interface CreateNotificationsReturn { - createNotifications: (accounts: string[]) => Promise<string | undefined>; - loading: boolean; - error?: string; -} -export interface EnableNotificationsReturn { - enableNotifications: () => Promise<string | undefined>; - loading: boolean; - error?: string; -} + export type AccountType = InternalAccount & { balance: string; keyring: KeyringTypes; label: string; }; -export interface DisableNotificationsReturn { - disableNotifications: () => Promise<string | undefined>; - loading: boolean; - error?: string; -} - -export interface deleteNotificationsStorageKeyReturn { - deleteNotificationsStorageKey: () => Promise<string | undefined>; - loading: boolean; - error?: string; -} - -export interface MarkNotificationAsReadReturn { - markNotificationAsRead: ( - notifications: MarkAsReadNotificationsParam, - ) => Promise<string | undefined>; - loading: boolean; - error?: string; -} - export interface SetIsProfileSyncingEnabledReturn { setIsProfileSyncingEnabled: () => Promise<string | undefined>; error?: string; diff --git a/app/util/notifications/hooks/useNotifications.test.tsx b/app/util/notifications/hooks/useNotifications.test.tsx index 6d0898d5e4d3..0fcdce2a9cdc 100644 --- a/app/util/notifications/hooks/useNotifications.test.tsx +++ b/app/util/notifications/hooks/useNotifications.test.tsx @@ -1,317 +1,321 @@ -/* eslint-disable react/prop-types */ -/* eslint-disable react/display-name */ -/* eslint-disable import/no-namespace */ -/* eslint-disable @typescript-eslint/no-var-requires */ -/* eslint-disable @typescript-eslint/no-require-imports */ -import React from 'react'; -import { renderHook, act } from '@testing-library/react-hooks'; -import { TRIGGER_TYPES } from '@metamask/notification-services-controller/notification-services'; +import { act } from '@testing-library/react-hooks'; +import { waitFor } from '@testing-library/react-native'; -import { - useListNotifications, - useCreateNotifications, - useEnableNotifications, - useDisableNotifications, - useMarkNotificationAsRead, - useDeleteNotificationsStorageKey, -} from './useNotifications'; -import createMockStore from 'redux-mock-store'; -import initialRootState from '../../../util/test/initial-root-state'; -import * as Selectors from '../../../selectors/notifications'; +// eslint-disable-next-line import/no-namespace import * as Actions from '../../../actions/notification/helpers'; -import { Provider } from 'react-redux'; import { createMockNotificationEthReceived, createMockNotificationEthSent, } from '../../../components/UI/Notification/__mocks__/mock_notifications'; +// eslint-disable-next-line import/no-namespace +import * as Selectors from '../../../selectors/notifications'; +import { renderHookWithProvider } from '../../test/renderWithProvider'; +import { + useDisableNotifications, + useEnableNotifications, + useListNotifications, + useListNotificationsEffect, + useMarkNotificationAsRead, + useResetNotifications, +} from './useNotifications'; +// eslint-disable-next-line import/no-namespace +import * as UsePushNotifications from './usePushNotifications'; jest.mock('../constants', () => ({ - ...jest.requireActual('../constants'), isNotificationsFeatureEnabled: () => true, })); -function arrangeStore() { - const store = createMockStore()(initialRootState); - - // Ensure dispatch mocks are handled correctly - store.dispatch = jest.fn().mockImplementation((action) => { - if (typeof action === 'function') { - return action(store.dispatch, store.getState); - } - return Promise.resolve(); - }); - - return store; -} - -describe('useListNotifications', () => { - beforeEach(() => { - jest.clearAllMocks(); - }); - - function arrangeSelectors() { - const getNotificationsList = jest - .spyOn(Selectors, 'getNotificationsList') - .mockReturnValue([]); - return { - getNotificationsList, - }; - } - - function arrangeActions() { - const fetchAndUpdateMetamaskNotifications = jest - .spyOn(Actions, 'fetchAndUpdateMetamaskNotifications') - .mockResolvedValue(undefined); +describe('useNotifications - useListNotifications()', () => { + const arrangeMocks = () => { + const mockFetchNotifications = jest.spyOn(Actions, 'fetchNotifications'); + const mockSelectLoading = jest.spyOn( + Selectors, + 'selectIsFetchingMetamaskNotifications', + ); + const mockSelectData = jest.spyOn(Selectors, 'getNotificationsList'); return { - fetchAndUpdateMetamaskNotifications, + mockFetchNotifications, + mockSelectLoading, + mockSelectData, }; - } - - function arrangeHook() { - const store = arrangeStore(); - const hook = renderHook(() => useListNotifications(), { - wrapper: ({ children }) => <Provider store={store}>{children}</Provider>, - }); - - return hook; - } - - it('should fetch and update the list of notifications', async () => { - const mockSelectors = arrangeSelectors(); - mockSelectors.getNotificationsList.mockReturnValue([ - createMockNotificationEthSent(), - createMockNotificationEthReceived(), - ]); - - const mockActions = arrangeActions(); + }; + + type Mocks = ReturnType<typeof arrangeMocks>; + const arrangeAct = async (mutateMocks?: (mocks: Mocks) => void) => { + // Arrange + const mocks = arrangeMocks(); + mutateMocks?.(mocks); + + // Act + const hook = renderHookWithProvider(() => useListNotifications()); + await act(() => hook.result.current.listNotifications()); + await waitFor(() => + expect(mocks.mockFetchNotifications).toHaveBeenCalled(), + ); - const { result } = arrangeHook(); + return { mocks, hook }; + }; - // Assert - initial state - expect(result.current.notificationsData.length).toBe(2); + it('successfully invokes action', async () => { + const { mocks } = await arrangeAct(); + expect(mocks.mockSelectLoading).toHaveBeenCalled(); + expect(mocks.mockSelectData).toHaveBeenCalled(); + }); - // Act - test re-fetching list - await act(async () => { - await result.current.listNotifications(); + it('creates an error when fails', async () => { + const { hook } = await arrangeAct((m) => { + m.mockFetchNotifications.mockRejectedValue(new Error('Test Error')); }); - expect( - mockActions.fetchAndUpdateMetamaskNotifications, - ).toHaveBeenCalledTimes(1); + expect(hook.result.current.error).toBeDefined(); }); }); -describe('useCreateNotifications', () => { - beforeEach(() => { - jest.clearAllMocks(); - }); - - function arrangeActions() { - const updateOnChainTriggersByAccount = jest - .spyOn(Actions, 'updateOnChainTriggersByAccount') - .mockResolvedValue(undefined); +describe('useNotifications - useListNotificationsEffect', () => { + const arrangeMocks = () => { + const mockFetchNotifications = jest.spyOn(Actions, 'fetchNotifications'); + const mockSelectLoading = jest.spyOn( + Selectors, + 'selectIsFetchingMetamaskNotifications', + ); + const mockSelectData = jest.spyOn(Selectors, 'getNotificationsList'); + const mockSelectIsMetamaskNotificationsEnabled = jest + .spyOn(Selectors, 'selectIsMetamaskNotificationsEnabled') + .mockReturnValue(true); return { - updateOnChainTriggersByAccount, + mockFetchNotifications, + mockSelectLoading, + mockSelectData, + mockSelectIsMetamaskNotificationsEnabled, }; - } + }; - function arrangeHook() { - const store = arrangeStore(); - const hook = renderHook(() => useCreateNotifications(), { - wrapper: ({ children }) => <Provider store={store}>{children}</Provider>, - }); + type Mocks = ReturnType<typeof arrangeMocks>; + const arrangeAct = async (mutateMocks?: (mocks: Mocks) => void) => { + // Arrange + const mocks = arrangeMocks(); + mutateMocks?.(mocks); - return hook; - } + // Act + const hook = renderHookWithProvider(() => useListNotificationsEffect()); - it('creates on-chain triggers for notifications', async () => { - const mockActions = arrangeActions(); - const { result } = arrangeHook(); - await act(async () => { - await result.current.createNotifications(['Account1', 'Account2']); - }); + return { mocks, hook }; + }; - expect(mockActions.updateOnChainTriggersByAccount).toHaveBeenCalledTimes(1); - expect(mockActions.updateOnChainTriggersByAccount).toHaveBeenCalledWith([ - 'Account1', - 'Account2', - ]); + it('invokes list notifications action when notifications is enabled', async () => { + const { mocks } = await arrangeAct(); + await waitFor(() => + expect(mocks.mockFetchNotifications).toHaveBeenCalled(), + ); }); -}); -describe('useEnableNotifications', () => { - beforeEach(() => { - jest.clearAllMocks(); + it(`doesn't invoke list notifications action when notifications are disabled`, async () => { + const { mocks } = await arrangeAct((m) => + m.mockSelectIsMetamaskNotificationsEnabled.mockReturnValue(false), + ); + await waitFor(() => + expect(mocks.mockFetchNotifications).not.toHaveBeenCalled(), + ); }); +}); - function arrangeSelectors() { - const selectIsMetamaskNotificationsEnabled = jest - .spyOn(Selectors, 'selectIsMetamaskNotificationsEnabled') - .mockReturnValue(true); - return { - selectIsMetamaskNotificationsEnabled, - }; - } - - function arrangeActions() { - const enableNotificationServices = jest - .spyOn(Actions, 'enableNotificationServices') - .mockResolvedValue(undefined); +describe('useNotifications - useEnableNotifications()', () => { + const arrangeMocks = () => { + const mockTogglePushNotification = jest.fn().mockResolvedValue(true); + const mockUsePushNotificationsToggle = jest + .spyOn(UsePushNotifications, 'usePushNotificationsToggle') + .mockReturnValue({ + data: true, + loading: false, + togglePushNotification: mockTogglePushNotification, + }); + const mockEnableNotifications = jest.spyOn(Actions, 'enableNotifications'); + const mockSelectLoading = jest.spyOn( + Selectors, + 'selectIsUpdatingMetamaskNotifications', + ); + const mockSelectData = jest.spyOn( + Selectors, + 'selectIsMetamaskNotificationsEnabled', + ); return { - enableNotificationServices, + mockTogglePushNotification, + mockUsePushNotificationsToggle, + mockEnableNotifications, + mockSelectLoading, + mockSelectData, }; - } - - function arrangeHook() { - const store = arrangeStore(); - const hook = renderHook(() => useEnableNotifications(), { - wrapper: ({ children }) => <Provider store={store}>{children}</Provider>, - }); + }; + + type Mocks = ReturnType<typeof arrangeMocks>; + const arrangeAct = async (mutateMocks?: (mocks: Mocks) => void) => { + // Arrange + const mocks = arrangeMocks(); + mutateMocks?.(mocks); + + // Act + const hook = renderHookWithProvider(() => useEnableNotifications()); + await act(() => hook.result.current.enableNotifications()); + await waitFor(() => + expect(mocks.mockEnableNotifications).toHaveBeenCalled(), + ); - return hook; - } + return { mocks, hook }; + }; - it('enables notifications', async () => { - arrangeSelectors(); - const mockActions = arrangeActions(); - const { result } = arrangeHook(); + it('successfully invokes action', async () => { + const { mocks } = await arrangeAct(); + expect(mocks.mockUsePushNotificationsToggle).toHaveBeenCalled(); + expect(mocks.mockTogglePushNotification).toHaveBeenCalled(); + expect(mocks.mockSelectLoading).toHaveBeenCalled(); + expect(mocks.mockSelectData).toHaveBeenCalled(); + }); - await act(async () => { - await result.current.enableNotifications(); + it('creates an error when fails', async () => { + const { hook } = await arrangeAct((m) => { + m.mockEnableNotifications.mockRejectedValue(new Error('Test Error')); }); - expect(mockActions.enableNotificationServices).toHaveBeenCalledTimes(1); + expect(hook.result.current.error).toBeDefined(); }); }); -describe('useDisableNotifications', () => { - beforeEach(() => { - jest.clearAllMocks(); - }); - - function arrangeSelectors() { - const selectIsMetamaskNotificationsEnabled = jest - .spyOn(Selectors, 'selectIsMetamaskNotificationsEnabled') - .mockReturnValue(true); - return { - selectIsMetamaskNotificationsEnabled, - }; - } - - function arrangeActions() { - const disableNotificationServices = jest - .spyOn(Actions, 'disableNotificationServices') - .mockResolvedValue(undefined); +describe('useNotifications - useDisableNotifications()', () => { + const arrangeMocks = () => { + const mockTogglePushNotification = jest.fn().mockResolvedValue(true); + const mockUsePushNotificationsToggle = jest + .spyOn(UsePushNotifications, 'usePushNotificationsToggle') + .mockReturnValue({ + data: true, + loading: false, + togglePushNotification: mockTogglePushNotification, + }); + const mockDisableNotifications = jest.spyOn( + Actions, + 'disableNotifications', + ); + const mockSelectLoading = jest.spyOn( + Selectors, + 'selectIsUpdatingMetamaskNotifications', + ); + const mockSelectData = jest.spyOn( + Selectors, + 'selectIsMetamaskNotificationsEnabled', + ); return { - disableNotificationServices, + mockTogglePushNotification, + mockUsePushNotificationsToggle, + mockDisableNotifications, + mockSelectLoading, + mockSelectData, }; - } - - function arrangeHook() { - const store = arrangeStore(); - const hook = renderHook(() => useDisableNotifications(), { - wrapper: ({ children }) => <Provider store={store}>{children}</Provider>, - }); + }; + + type Mocks = ReturnType<typeof arrangeMocks>; + const arrangeAct = async (mutateMocks?: (mocks: Mocks) => void) => { + // Arrange + const mocks = arrangeMocks(); + mutateMocks?.(mocks); + + // Act + const hook = renderHookWithProvider(() => useDisableNotifications()); + await act(() => hook.result.current.disableNotifications()); + await waitFor(() => + expect(mocks.mockDisableNotifications).toHaveBeenCalled(), + ); - return hook; - } + return { mocks, hook }; + }; - it('disables notifications', async () => { - arrangeSelectors(); - const mockActions = arrangeActions(); - const { result } = arrangeHook(); + it('successfully invokes action', async () => { + const { mocks } = await arrangeAct(); + expect(mocks.mockUsePushNotificationsToggle).toHaveBeenCalled(); + expect(mocks.mockTogglePushNotification).toHaveBeenCalled(); + expect(mocks.mockSelectLoading).toHaveBeenCalled(); + expect(mocks.mockSelectData).toHaveBeenCalled(); + }); - await act(async () => { - await result.current.disableNotifications(); + it('creates an error when fails', async () => { + const { hook } = await arrangeAct((m) => { + m.mockDisableNotifications.mockRejectedValue(new Error('Test Error')); }); - expect(mockActions.disableNotificationServices).toHaveBeenCalledTimes(1); + expect(hook.result.current.error).toBeDefined(); }); }); -describe('useMarkNotificationAsRead', () => { - beforeEach(() => { - jest.clearAllMocks(); - }); - - function arrangeActions() { - const markMetamaskNotificationsAsRead = jest - .spyOn(Actions, 'markMetamaskNotificationsAsRead') - .mockResolvedValue(undefined); - +describe('useNotifications - useMarkNotificationAsRead()', () => { + const arrangeMocks = () => { + const mockMarkNotificationsAsRead = jest + .spyOn(Actions, 'markNotificationsAsRead') + .mockImplementation(jest.fn()); + const mockData = [ + createMockNotificationEthSent(), + createMockNotificationEthReceived(), + ]; return { - markMetamaskNotificationsAsRead, + mockMarkNotificationsAsRead, + mockData, }; - } + }; - function arrangeHook() { - const store = arrangeStore(); - const hook = renderHook(() => useMarkNotificationAsRead(), { - wrapper: ({ children }) => <Provider store={store}>{children}</Provider>, - }); + it('successfully invokes action', async () => { + // Arrange + const mocks = arrangeMocks(); - return hook; - } - - it('marks specific notifications as read', async () => { - const mockActions = arrangeActions(); - const { result } = arrangeHook(); - - await act(async () => { - await result.current.markNotificationAsRead([ - { - id: '1', - isRead: true, - type: TRIGGER_TYPES.ETH_SENT, - }, - ]); - }); + // Act + const hook = renderHookWithProvider(() => useMarkNotificationAsRead()); + await act(() => hook.result.current.markNotificationAsRead(mocks.mockData)); - expect(mockActions.markMetamaskNotificationsAsRead).toHaveBeenCalledTimes( - 1, + // Assert + await waitFor(() => + expect(mocks.mockMarkNotificationsAsRead).toHaveBeenCalled(), ); - expect(mockActions.markMetamaskNotificationsAsRead).toHaveBeenCalledWith([ - { id: '1', isRead: true, type: 'eth_sent' }, - ]); }); }); -describe('useDeleteNotificationsStorageKey', () => { - beforeEach(() => { - jest.clearAllMocks(); - }); - - function arrangeActions() { - const deleteNotificationsStorageKey = jest - .spyOn(Actions, 'performDeleteStorage') - .mockResolvedValue(undefined); - +describe('useNotifications - useResetNotifications()', () => { + const arrangeMocks = () => { + const mockSelectLoading = jest + .spyOn(Selectors, 'selectIsUpdatingMetamaskNotifications') + .mockReturnValue(false); + const mockResetNotifications = jest.spyOn(Actions, 'resetNotifications'); return { - deleteNotificationsStorageKey, + mockSelectLoading, + mockResetNotifications, }; - } - - function arrangeHook() { - const store = arrangeStore(); - const hook = renderHook(() => useDeleteNotificationsStorageKey(), { - wrapper: ({ children }) => <Provider store={store}>{children}</Provider>, - }); + }; + + type Mocks = ReturnType<typeof arrangeMocks>; + const arrangeAct = async (mutateMocks?: (mocks: Mocks) => void) => { + // Arrange + const mocks = arrangeMocks(); + mutateMocks?.(mocks); + + // Act + const hook = renderHookWithProvider(() => useResetNotifications()); + await act(() => hook.result.current.resetNotifications()); + await waitFor(() => + expect(mocks.mockResetNotifications).toHaveBeenCalled(), + ); - return hook; - } + return { mocks, hook }; + }; - it('deletes notifications storage key', async () => { - const mockActions = arrangeActions(); - const { result } = arrangeHook(); + it('successfully invokes action', async () => { + const { mocks } = await arrangeAct(); + expect(mocks.mockSelectLoading).toHaveBeenCalled(); + }); - await act(async () => { - await result.current.deleteNotificationsStorageKey(); + it('creates an error when fails', async () => { + const { hook } = await arrangeAct((m) => { + m.mockResetNotifications.mockRejectedValue(new Error('Test Error')); }); - expect(mockActions.deleteNotificationsStorageKey).toHaveBeenCalledTimes(1); + expect(hook.result.current.error).toBeDefined(); }); }); diff --git a/app/util/notifications/hooks/useNotifications.ts b/app/util/notifications/hooks/useNotifications.ts index 3845a4b19636..323ad8c31ebe 100644 --- a/app/util/notifications/hooks/useNotifications.ts +++ b/app/util/notifications/hooks/useNotifications.ts @@ -1,27 +1,25 @@ -import { useState, useCallback } from 'react'; +import { useCallback, useEffect, useState } from 'react'; import { useSelector } from 'react-redux'; +import { MarkAsReadNotificationsParam } from '@metamask/notification-services-controller/notification-services'; import { - ListNotificationsReturn, - CreateNotificationsReturn, - EnableNotificationsReturn, - DisableNotificationsReturn, - MarkNotificationAsReadReturn, - deleteNotificationsStorageKeyReturn, -} from './types'; -import { getErrorMessage } from '../../../util/errorHandling'; -import { - MarkAsReadNotificationsParam, - performDeleteStorage, - disableNotificationServices, - enableNotificationServices, - fetchAndUpdateMetamaskNotifications, - markMetamaskNotificationsAsRead, - updateOnChainTriggersByAccount, + assertIsFeatureEnabled, + disableNotifications as disableNotificationsHelper, + enableNotifications as enableNotificationsHelper, + fetchNotifications, + markNotificationsAsRead as markNotificationsAsReadHelper, + resetNotifications as resetNotificationsHelper, } from '../../../actions/notification/helpers'; -import { getNotificationsList } from '../../../selectors/notifications'; -import { usePushNotifications } from './usePushNotifications'; +import { + getNotificationsList, + selectIsFetchingMetamaskNotifications, + selectIsMetamaskNotificationsEnabled, + selectIsUpdatingMetamaskNotifications, +} from '../../../selectors/notifications'; +import { usePushNotificationsToggle } from './usePushNotifications'; +import Logger from '../../Logger'; import { isNotificationsFeatureEnabled } from '../constants'; +import ErrorMessage from '../../../components/Views/confirmations/SendFlow/ErrorMessage'; /** * Custom hook to fetch and update the list of notifications. @@ -29,78 +27,58 @@ import { isNotificationsFeatureEnabled } from '../constants'; * * @returns An object containing the `listNotifications` function, loading state, and error state. */ -export function useListNotifications(): ListNotificationsReturn { - const notifications = useSelector(getNotificationsList); - const [loading, setLoading] = useState<boolean>(false); - const [error, setError] = useState<string>(); - +export function useListNotifications() { + const loading = useSelector(selectIsFetchingMetamaskNotifications); + const data = useSelector(getNotificationsList); + const [error, setError] = useState<unknown>(null); const listNotifications = useCallback(async () => { - if (!isNotificationsFeatureEnabled()) { - return; - } - - setLoading(true); - setError(undefined); - try { - const errorMessage = await fetchAndUpdateMetamaskNotifications(); - if (errorMessage) { - setError(getErrorMessage(errorMessage)); - return errorMessage; - } - } catch (e) { - const errorMessage = getErrorMessage(e); - setError(errorMessage); - return errorMessage; - } finally { - setLoading(false); - } + assertIsFeatureEnabled(); + setError(null); + await fetchNotifications().catch((e) => setError(e)); }, []); return { listNotifications, - notificationsData: notifications, + notificationsData: data, isLoading: loading, error, }; } + /** - * Custom hook to enable notifications by creating on-chain triggers. - * It manages loading and error states internally. - * - * @returns An object containing the `enableNotifications` function, loading state, and error state. + * Effect that queries for notifications on startup if notifications are enabled. */ -export function useCreateNotifications(): CreateNotificationsReturn { - const [loading, setLoading] = useState<boolean>(false); - const [error, setError] = useState<string>(); +export function useListNotificationsEffect() { + const notificationsFlagEnabled = isNotificationsFeatureEnabled(); + const notificationsControllerEnabled = useSelector( + selectIsMetamaskNotificationsEnabled, + ); - const createNotifications = useCallback(async (accounts: string[]) => { - if (!isNotificationsFeatureEnabled()) { - return; - } + const notificationsEnabled = + notificationsFlagEnabled && notificationsControllerEnabled; - setLoading(true); - setError(undefined); - try { - const errorMessage = await updateOnChainTriggersByAccount(accounts); - if (errorMessage) { - setError(getErrorMessage(errorMessage)); - return errorMessage; + const { listNotifications } = useListNotifications(); + + // App Open Effect + useEffect(() => { + const run = async () => { + try { + if (notificationsEnabled) { + await listNotifications(); + } + } catch (error) { + const errorMessage = + error instanceof Error ? error.message : String(ErrorMessage); + Logger.error( + new Error(`Failed to list notifications - ${errorMessage}`), + ); } - } catch (e) { - const errorMessage = getErrorMessage(e); - setError(errorMessage); - return errorMessage; - } finally { - setLoading(false); - } - }, []); + }; - return { - createNotifications, - loading, - error, - }; + run(); + }, [notificationsEnabled, listNotifications]); } + /** * Custom hook to enable MetaMask notifications. * This hook encapsulates the logic for enabling notifications, handling loading and error states. @@ -111,88 +89,64 @@ export function useCreateNotifications(): CreateNotificationsReturn { * - `loading`: A boolean indicating if the enabling process is ongoing. * - `error`: A string or null value representing any error that occurred during the process. */ -export function useEnableNotifications(): EnableNotificationsReturn { - const [loading, setLoading] = useState<boolean>(false); - const [error, setError] = useState<string>(); - const { switchPushNotifications } = usePushNotifications(); +export function useEnableNotifications(props = { nudgeEnablePush: true }) { + const { togglePushNotification, loading: pushLoading } = + usePushNotificationsToggle(props); + const data = useSelector(selectIsMetamaskNotificationsEnabled); + const loading = useSelector(selectIsUpdatingMetamaskNotifications); + const [error, setError] = useState<unknown>(null); const enableNotifications = useCallback(async () => { - if (!isNotificationsFeatureEnabled()) { - return; - } - - setLoading(true); - setError(undefined); - try { - const errorEnablingNotifications = await enableNotificationServices(); - const errorEnablingPushNotifications = await switchPushNotifications( - true, - ); - const errorMessage = - errorEnablingNotifications || errorEnablingPushNotifications; - - if (errorMessage) { - setError(getErrorMessage(errorMessage)); - return errorMessage; - } - } catch (e) { - const errorMessage = getErrorMessage(e); - setError(errorMessage); - return errorMessage; - } finally { - setLoading(false); - } - }, [switchPushNotifications]); + assertIsFeatureEnabled(); + setError(null); + await togglePushNotification(true).catch(() => { + /* Do Nothing */ + }); + await enableNotificationsHelper().catch((e) => setError(e)); + }, [togglePushNotification]); return { enableNotifications, - loading, + isEnablingNotifications: loading, + isEnablingPushNotifications: pushLoading, + loading: loading && pushLoading, error, + data, }; } + /** * Custom hook to disable notifications by deleting on-chain triggers associated with accounts. * It also disables snap and feature announcements. Manages loading and error states internally. * * @returns An object containing the `disableNotifications` function, loading state, and error state. */ -export function useDisableNotifications(): DisableNotificationsReturn { - const [loading, setLoading] = useState<boolean>(false); - const [error, setError] = useState<string>(); - const { switchPushNotifications } = usePushNotifications(); - const disableNotifications = useCallback(async () => { - if (!isNotificationsFeatureEnabled()) { - return; - } +export function useDisableNotifications() { + const { togglePushNotification, loading: pushLoading } = + usePushNotificationsToggle(); - setLoading(true); + const data = useSelector(selectIsMetamaskNotificationsEnabled); + const loading = useSelector(selectIsUpdatingMetamaskNotifications); + const [error, setError] = useState<string | undefined>(undefined); + const disableNotifications = useCallback(async () => { + assertIsFeatureEnabled(); setError(undefined); - try { - const errorDisablingNotifications = await disableNotificationServices(); - const errorDisablingPushNotifications = await switchPushNotifications( - false, - ); - const errorMessage = - errorDisablingNotifications || errorDisablingPushNotifications; - - if (errorMessage) { - setError(getErrorMessage(errorMessage)); - return errorMessage; - } - } catch (e) { - const errorMessage = getErrorMessage(e); - setError(errorMessage); - return errorMessage; - } finally { - setLoading(false); - } - }, [switchPushNotifications]); + await togglePushNotification(false); + await disableNotificationsHelper().catch((e) => { + Logger.error(e); + setError(`Failed to disable push notifications`); + }); + }, [togglePushNotification]); return { disableNotifications, - loading, - error, + loading: loading && pushLoading, + // This will be fixed in a separate PR to converge the types correctly + // eslint-disable-next-line @typescript-eslint/no-explicit-any + error: error as any, + data, }; } + /** * Provides a function to mark notifications as read. This hook does not take parameters itself, * but returns a function that accepts the notification parameters when called. @@ -200,33 +154,14 @@ export function useDisableNotifications(): DisableNotificationsReturn { * @returns An object containing the `markNotificationAsRead` function which takes a `notifications` * parameter of type `MarkAsReadNotificationsParam` and marks those notifications as read. */ -export function useMarkNotificationAsRead(): MarkNotificationAsReadReturn { - const [loading, setLoading] = useState<boolean>(false); - const [error, setError] = useState<string>(); - +export function useMarkNotificationAsRead() { + const [loading, setLoading] = useState(false); const markNotificationAsRead = useCallback( async (notifications: MarkAsReadNotificationsParam) => { - if (!isNotificationsFeatureEnabled()) { - return; - } - + assertIsFeatureEnabled(); setLoading(true); - setError(undefined); - try { - const errorMessage = await markMetamaskNotificationsAsRead( - notifications, - ); - if (errorMessage) { - setError(getErrorMessage(errorMessage)); - return errorMessage; - } - } catch (e) { - const errorMessage = getErrorMessage(e); - setError(errorMessage); - return errorMessage; - } finally { - setLoading(false); - } + await markNotificationsAsReadHelper(notifications); + setLoading(false); }, [], ); @@ -234,7 +169,6 @@ export function useMarkNotificationAsRead(): MarkNotificationAsReadReturn { return { markNotificationAsRead, loading, - error, }; } @@ -244,34 +178,17 @@ export function useMarkNotificationAsRead(): MarkNotificationAsReadReturn { * * @returns An object containing the `deleteNotificationsStorageKey` function, loading state, and error state. */ -export function useDeleteNotificationsStorageKey(): deleteNotificationsStorageKeyReturn { - const [loading, setLoading] = useState<boolean>(false); - const [error, setError] = useState<string>(); - - const deleteNotificationsStorageKey = useCallback(async () => { - if (!isNotificationsFeatureEnabled()) { - return; - } - - setLoading(true); - setError(undefined); - try { - const errorMessage = await performDeleteStorage(); - if (errorMessage) { - setError(getErrorMessage(errorMessage)); - return errorMessage; - } - } catch (e) { - const errorMessage = getErrorMessage(e); - setError(errorMessage); - return errorMessage; - } finally { - setLoading(false); - } +export function useResetNotifications() { + const loading = useSelector(selectIsUpdatingMetamaskNotifications); + const [error, setError] = useState<unknown>(null); + const resetNotifications = useCallback(async () => { + assertIsFeatureEnabled(); + setError(null); + await resetNotificationsHelper().catch((e) => setError(e)); }, []); return { - deleteNotificationsStorageKey, + resetNotifications, loading, error, }; diff --git a/app/util/notifications/hooks/usePushNotifications.test.ts b/app/util/notifications/hooks/usePushNotifications.test.ts new file mode 100644 index 000000000000..712dcc2fc317 --- /dev/null +++ b/app/util/notifications/hooks/usePushNotifications.test.ts @@ -0,0 +1,141 @@ +import { act } from '@testing-library/react-hooks'; +import { waitFor } from '@testing-library/react-native'; +// eslint-disable-next-line import/no-namespace +import * as Actions from '../../../actions/notification/helpers'; +// eslint-disable-next-line import/no-namespace +import * as Selectors from '../../../selectors/notifications'; +import { renderHookWithProvider } from '../../test/renderWithProvider'; +// eslint-disable-next-line import/no-namespace +import * as NotificationServiceModule from '../services/NotificationService'; +import { + usePushNotificationsToggle, + UsePushNotificationsToggleProps, +} from './usePushNotifications'; + +jest.mock('../constants', () => ({ + isNotificationsFeatureEnabled: () => true, +})); + +describe('useNotifications - usePushNotificationsToggle()', () => { + const arrangeMocks = () => { + const mockSelectEnabled = jest.spyOn( + Selectors, + 'selectIsMetaMaskPushNotificationsEnabled', + ); + const mockRequestPermission = jest.spyOn( + NotificationServiceModule, + 'requestPushPermissions', + ); + const mockHasPermission = jest.spyOn( + NotificationServiceModule, + 'hasPushPermission', + ); + const mockEnablePushNotifications = jest.spyOn( + Actions, + 'enablePushNotifications', + ); + const mockDisablePushNotifications = jest.spyOn( + Actions, + 'disablePushNotifications', + ); + + return { + mockSelectEnabled, + mockRequestPermission, + mockHasPermission, + mockEnablePushNotifications, + mockDisablePushNotifications, + }; + }; + + type Mocks = ReturnType<typeof arrangeMocks>; + const arrangeActEnableFlow = async ( + overrideMocks?: (mocks: Mocks) => void, + state?: UsePushNotificationsToggleProps, + ) => { + // Arrange + const mocks = arrangeMocks(); + overrideMocks?.(mocks); + + // Act + const hook = renderHookWithProvider(() => + usePushNotificationsToggle(state), + ); + await act(() => hook.result.current.togglePushNotification(true)); + + return { mocks, hook }; + }; + + it('enable push notifications successfully', async () => { + const { mocks } = await arrangeActEnableFlow(); + await waitFor(() => expect(mocks.mockRequestPermission).toHaveBeenCalled()); + await waitFor(() => + expect(mocks.mockEnablePushNotifications).toHaveBeenCalled(), + ); + expect(mocks.mockSelectEnabled).toHaveBeenCalled(); + expect(mocks.mockDisablePushNotifications).not.toHaveBeenCalled(); + }); + + it('enable push notifications bails if fails to request push permissions', async () => { + const { mocks } = await arrangeActEnableFlow((m) => + m.mockRequestPermission.mockRejectedValue(new Error('TEST ERROR')), + ); + await waitFor(() => expect(mocks.mockRequestPermission).toHaveBeenCalled()); + await waitFor(() => + expect(mocks.mockEnablePushNotifications).not.toHaveBeenCalled(), + ); + }); + + it('silently fails if enable push notifications action fails', async () => { + const { mocks } = await arrangeActEnableFlow((m) => + m.mockEnablePushNotifications.mockRejectedValue(new Error('TEST ERROR')), + ); + await waitFor(() => expect(mocks.mockRequestPermission).toHaveBeenCalled()); + await waitFor(() => + expect(mocks.mockEnablePushNotifications).toHaveBeenCalled(), + ); + }); + + it('does not nudge for push notifications enablement', async () => { + const { mocks } = await arrangeActEnableFlow(undefined, { + nudgeEnablePush: false, + }); + await waitFor(() => expect(mocks.mockHasPermission).toHaveBeenCalled()); + await waitFor(() => + expect(mocks.mockEnablePushNotifications).toHaveBeenCalled(), + ); + }); + + const arrangeActDisableFlow = async ( + overrideMocks?: (mocks: Mocks) => void, + ) => { + // Arrange + const mocks = arrangeMocks(); + overrideMocks?.(mocks); + + // Act + const hook = renderHookWithProvider(() => usePushNotificationsToggle()); + await act(() => hook.result.current.togglePushNotification(false)); + + return { mocks, hook }; + }; + + it('disable push notifications successfully', async () => { + const { mocks } = await arrangeActDisableFlow(); + await waitFor(() => + expect(mocks.mockDisablePushNotifications).toHaveBeenCalled(), + ); + expect(mocks.mockSelectEnabled).toHaveBeenCalled(); + expect(mocks.mockEnablePushNotifications).not.toHaveBeenCalled(); + expect(mocks.mockRequestPermission).not.toHaveBeenCalled(); + }); + + it('silently fails if disable push notifications action fails', async () => { + const { mocks } = await arrangeActDisableFlow((m) => + m.mockDisablePushNotifications.mockRejectedValue(new Error('TEST ERROR')), + ); + await waitFor(() => + expect(mocks.mockDisablePushNotifications).toHaveBeenCalled(), + ); + }); +}); diff --git a/app/util/notifications/hooks/usePushNotifications.ts b/app/util/notifications/hooks/usePushNotifications.ts index b7e2e6970465..e1dd23c0d503 100644 --- a/app/util/notifications/hooks/usePushNotifications.ts +++ b/app/util/notifications/hooks/usePushNotifications.ts @@ -1,58 +1,62 @@ -import { useState, useCallback } from 'react'; -import { getErrorMessage } from '../../errorHandling'; +import { useCallback } from 'react'; +import { useSelector } from 'react-redux'; import { - disablePushNotifications, - enablePushNotifications, + assertIsFeatureEnabled, + disablePushNotifications as disablePushNotificationsHelper, + enablePushNotifications as enablePushNotificationsHelper, } from '../../../actions/notification/helpers'; -import { mmStorage } from '../settings'; -import { UserStorage } from '@metamask/notification-services-controller/notification-services'; -import { isNotificationsFeatureEnabled } from '../constants'; +import { + selectIsMetaMaskPushNotificationsEnabled, + selectIsMetaMaskPushNotificationsLoading, +} from '../../../selectors/notifications'; +import { + hasPushPermission, + requestPushPermissions, +} from '../services/NotificationService'; -export function usePushNotifications() { - const [loading, setLoading] = useState<boolean>(false); - const [error, setError] = useState<string | null>(null); - const resetStates = useCallback(() => { - setLoading(false); - setError(null); - }, []); +export interface UsePushNotificationsToggleProps { + // Depending on the instance, we may want to nudge to enable push notifications + // Or skip nudging. + // E.g. Onboarding = nudge, settings page = don't nudge + nudgeEnablePush: boolean; +} +export function usePushNotificationsToggle( + props: UsePushNotificationsToggleProps = { nudgeEnablePush: true }, +) { + const data = useSelector(selectIsMetaMaskPushNotificationsEnabled); + const loading = useSelector(selectIsMetaMaskPushNotificationsLoading); - const switchPushNotifications = useCallback( - async (state: boolean) => { - if (!isNotificationsFeatureEnabled()) { - return; - } + const enablePushNotifications = useCallback(async () => { + assertIsFeatureEnabled(); + const pushPermCallback = props.nudgeEnablePush + ? requestPushPermissions + : hasPushPermission; - resetStates(); - setLoading(true); - let errorMessage: string | undefined; + const result = await pushPermCallback().catch(() => false); + if (!result) return; + + await enablePushNotificationsHelper().catch(() => { + /* Do Nothing */ + }); + }, [props.nudgeEnablePush]); + + const disablePushNotifications = useCallback(async () => { + assertIsFeatureEnabled(); + await disablePushNotificationsHelper().catch(() => { + /* Do Nothing */ + }); + }, []); - try { - const userStorage: UserStorage = mmStorage.getLocal('pnUserStorage'); - if (state) { - const fcmToken = mmStorage.getLocal('metaMaskFcmToken'); - errorMessage = await enablePushNotifications( - userStorage, - fcmToken?.data, - ); - } else { - errorMessage = await disablePushNotifications(userStorage); - } - if (errorMessage) { - setError(getErrorMessage(errorMessage)); - } - } catch (e) { - errorMessage = getErrorMessage(e); - setError(errorMessage); - } finally { - setLoading(false); - } + const togglePushNotification = useCallback( + async (val: boolean) => { + val ? await enablePushNotifications() : await disablePushNotifications(); }, - [resetStates], + [disablePushNotifications, enablePushNotifications], ); return { - switchPushNotifications, + data, + togglePushNotification, loading, - error, }; } diff --git a/app/util/notifications/hooks/useRegisterPushNotificationsEffect.test.ts b/app/util/notifications/hooks/useRegisterPushNotificationsEffect.test.ts new file mode 100644 index 000000000000..021b34b7d107 --- /dev/null +++ b/app/util/notifications/hooks/useRegisterPushNotificationsEffect.test.ts @@ -0,0 +1,258 @@ +import { waitFor } from '@testing-library/react-native'; +import { createMockNotificationEthSent } from '../../../components/UI/Notification/__mocks__/mock_notifications'; +import Engine from '../../../core/Engine'; +// eslint-disable-next-line import/no-namespace +import * as NotificationSelectorsModule from '../../../selectors/notifications'; +import { renderHookWithProvider } from '../../test/renderWithProvider'; +import { isNotificationsFeatureEnabled } from '../constants'; +import NotificationService from '../services/NotificationService'; +import { PressActionId } from '../types'; +import { useRegisterPushNotificationsEffect } from './useRegisterPushNotificationsEffect'; +import { EventType, Event as NotifeeEvent } from '@notifee/react-native'; + +const mockedNavigate = jest.fn(); +jest.mock('@react-navigation/native', () => { + const actualNav = jest.requireActual('@react-navigation/native'); + return { + ...actualNav, + useNavigation: jest.fn().mockImplementation(() => ({ + navigate: mockedNavigate, + })), + }; +}); + +jest.mock('../../../core/Engine', () => ({ + __esModule: true, + default: { + controllerMessenger: { + publish: jest.fn(), + }, + }, +})); + +jest.mock('../constants', () => ({ + isNotificationsFeatureEnabled: jest.fn(), +})); + +const arrangeEngineMocks = () => ({ + mockPublish: jest.mocked(Engine.controllerMessenger.publish), +}); + +const arrangeNavigationMocks = () => ({ + mockedNavigate, +}); + +const arrangeSelectorMocks = () => { + const mockIsNotificationsFeatureEnabled = jest + .mocked(isNotificationsFeatureEnabled) + .mockReturnValue(true); + + const mockSelectIsNotificationsFeatureEnabled = jest + .spyOn(NotificationSelectorsModule, 'selectIsMetamaskNotificationsEnabled') + .mockReturnValue(true); + + const mockSelectIsPushEnabled = jest + .spyOn( + NotificationSelectorsModule, + 'selectIsMetaMaskPushNotificationsEnabled', + ) + .mockReturnValue(true); + + return { + mockIsNotificationsFeatureEnabled, + mockSelectIsNotificationsFeatureEnabled, + mockSelectIsPushEnabled, + }; +}; + +export const arrangeNotificationServiceMock = () => { + const mockGetInitialNotification = jest + .spyOn(NotificationService, 'getInitialNotification') + .mockResolvedValue({ + notification: { + data: { dataStr: JSON.stringify(createMockNotificationEthSent()) }, + }, + pressAction: { id: PressActionId.OPEN_NOTIFICATIONS_VIEW }, + }); + + const mockOnBackgroundEvent = jest.spyOn( + NotificationService, + 'onBackgroundEvent', + ); + + return { mockGetInitialNotification, mockOnBackgroundEvent }; +}; + +describe('useRegisterPushNotificationsEffect - onAppOpenNotification', () => { + const arrangeMocks = () => { + const engine = arrangeEngineMocks(); + const navigation = arrangeNavigationMocks(); + const selectors = arrangeSelectorMocks(); + const notifService = arrangeNotificationServiceMock(); + + return { + engine, + navigation, + selectors, + notifService, + }; + }; + + beforeEach(() => { + jest.clearAllMocks(); + }); + + it('invokes click handler', async () => { + const { selectors, notifService, engine, navigation } = arrangeMocks(); + + renderHookWithProvider(() => useRegisterPushNotificationsEffect()); + + expect(selectors.mockIsNotificationsFeatureEnabled).toHaveBeenCalled(); + expect(selectors.mockSelectIsPushEnabled).toHaveBeenCalled(); + expect( + selectors.mockSelectIsNotificationsFeatureEnabled, + ).toHaveBeenCalled(); + expect(notifService.mockGetInitialNotification).toHaveBeenCalled(); + await waitFor(() => expect(engine.mockPublish).toHaveBeenCalled()); + await waitFor(() => expect(navigation.mockedNavigate).toHaveBeenCalled()); + }); + + it('does not invoke calls if feature not enabled', async () => { + const { selectors, notifService } = arrangeMocks(); + selectors.mockSelectIsPushEnabled.mockReturnValue(false); + + renderHookWithProvider(() => useRegisterPushNotificationsEffect()); + + expect( + selectors.mockSelectIsNotificationsFeatureEnabled, + ).toHaveBeenCalled(); + expect(selectors.mockSelectIsPushEnabled).toHaveBeenCalled(); + expect(notifService.mockGetInitialNotification).not.toHaveBeenCalled(); + }); + + it('bails early if unable to get initial notification', async () => { + const { notifService, engine } = arrangeMocks(); + notifService.mockGetInitialNotification.mockResolvedValue(null); + + renderHookWithProvider(() => useRegisterPushNotificationsEffect()); + + expect(notifService.mockGetInitialNotification).toHaveBeenCalled(); + await waitFor(() => expect(engine.mockPublish).not.toHaveBeenCalled()); + }); +}); + +describe('useRegisterPushNotificationsEffect - onBackgroundEvent', () => { + const arrangeMocks = () => { + const engine = arrangeEngineMocks(); + const navigation = arrangeNavigationMocks(); + const selectors = arrangeSelectorMocks(); + const notifService = arrangeNotificationServiceMock(); + notifService.mockGetInitialNotification.mockResolvedValue(null); // Ensure we are testing the correct effect. + + return { + engine, + navigation, + selectors, + notifService, + }; + }; + + beforeEach(() => { + jest.clearAllMocks(); + }); + + it('not listen to background events if feature not enabled', async () => { + const { selectors, notifService } = arrangeMocks(); + selectors.mockSelectIsPushEnabled.mockReturnValue(false); + + renderHookWithProvider(() => useRegisterPushNotificationsEffect()); + + expect( + selectors.mockSelectIsNotificationsFeatureEnabled, + ).toHaveBeenCalled(); + expect(selectors.mockSelectIsPushEnabled).toHaveBeenCalled(); + expect(notifService.mockOnBackgroundEvent).not.toHaveBeenCalled(); + }); + + const act = async ( + mocks: ReturnType<typeof arrangeMocks>, + mutateEvent?: (event: NotifeeEvent) => NotifeeEvent, + ) => { + expect(mocks.notifService.mockOnBackgroundEvent).toHaveBeenCalled(); + const callMockEvent = + mocks.notifService.mockOnBackgroundEvent.mock.lastCall?.[0]; + if (!callMockEvent) { + throw new Error( + 'TEST FAILURE - failed to setup mockOnBackgroundEvent mock', + ); + } + + let event = { + type: EventType.PRESS, + detail: { + pressAction: { id: PressActionId.OPEN_NOTIFICATIONS_VIEW }, + notification: { + data: { + dataStr: JSON.stringify(createMockNotificationEthSent()), + }, + }, + }, + } as unknown as NotifeeEvent; + event = mutateEvent?.(event) ?? event; + + await callMockEvent(event); + }; + + it('calls click event on successful background message', async () => { + const mocks = arrangeMocks(); + + renderHookWithProvider(() => useRegisterPushNotificationsEffect()); + + await act(mocks); + + await waitFor(() => expect(mocks.engine.mockPublish).toHaveBeenCalled()); + await waitFor(() => + expect(mocks.navigation.mockedNavigate).toHaveBeenCalled(), + ); + }); + + it('bail when there is no notification data string property', async () => { + const mocks = arrangeMocks(); + + renderHookWithProvider(() => useRegisterPushNotificationsEffect()); + + await act(mocks, (e) => { + delete e.detail.notification?.data?.dataStr; + return e; + }); + + await waitFor(() => + expect(mocks.engine.mockPublish).not.toHaveBeenCalled(), + ); + await waitFor(() => + expect(mocks.navigation.mockedNavigate).not.toHaveBeenCalled(), + ); + }); + + it('do nothing is notification is not parseable', async () => { + const mocks = arrangeMocks(); + + renderHookWithProvider(() => useRegisterPushNotificationsEffect()); + + await act(mocks, (e) => { + if (e.detail.notification?.data) { + e.detail.notification.data.dataStr = JSON.stringify({ + badData: 'hello_world', + }); + } + return e; + }); + + await waitFor(() => + expect(mocks.engine.mockPublish).not.toHaveBeenCalled(), + ); + await waitFor(() => + expect(mocks.navigation.mockedNavigate).not.toHaveBeenCalled(), + ); + }); +}); diff --git a/app/util/notifications/hooks/useRegisterPushNotificationsEffect.ts b/app/util/notifications/hooks/useRegisterPushNotificationsEffect.ts new file mode 100644 index 000000000000..54f44ba3627c --- /dev/null +++ b/app/util/notifications/hooks/useRegisterPushNotificationsEffect.ts @@ -0,0 +1,160 @@ +import { useNavigation, type NavigationProp } from '@react-navigation/native'; +import { INotification } from '@metamask/notification-services-controller/notification-services'; +import Engine from '../../../core/Engine'; +import Routes from '../../../constants/navigation/Routes'; +import NotificationsService from '../services/NotificationService'; +import { PressActionId } from '../types'; +import { useEffect } from 'react'; +import { isNotificationsFeatureEnabled } from '../constants'; +import { useSelector } from 'react-redux'; +import { + selectIsMetamaskNotificationsEnabled, + selectIsMetaMaskPushNotificationsEnabled, +} from '../../../selectors/notifications'; + +type NavigationParams = Record<string, { notification: INotification }>; + +function isINotification(n: unknown): n is INotification { + const assumedShape = n as INotification; + return Boolean(assumedShape?.type) && Boolean(assumedShape?.data); +} + +/** + * Logic for handling a push notification click. + * It will publish an event, and attempt navigation to notifications view + * @param notification - notification click received from App Start or Background + * @param navigation - navigation prop for page navigations + * @returns - void + */ +function clickPushNotification( + notification: INotification, + navigation: NavigationProp<NavigationParams>, +) { + // Publish Click Event + Engine.controllerMessenger.publish( + 'NotificationServicesPushController:pushNotificationClicked', + notification, + ); + + // Navigate + navigation.navigate(Routes.NOTIFICATIONS.DETAILS, { + notification, + }); +} + +/** + * Android Devices use a `getInitialNotifications` if a push notification cold-starts the application. + * @param navigation - navigation prop for page navigations + * @returns - void + */ +async function onAppOpenNotification( + navigation: NavigationProp<NavigationParams>, +) { + const initialNotification = + await NotificationsService.getInitialNotification(); + if (!initialNotification) { + return; + } + + const { notification, pressAction } = initialNotification; + const notificationDataStr = notification?.data?.dataStr; + + if (!notificationDataStr) { + return; + } + + try { + // Notify can only store strings + const notificationData = JSON.parse(notificationDataStr as string); + if ( + pressAction?.id === PressActionId.OPEN_NOTIFICATIONS_VIEW && + isINotification(notificationData) + ) { + clickPushNotification(notificationData, navigation); + } + } catch { + // Do Nothing + } +} + +/** + * IOS/Anroid devices will use a notifee `backgroundEvent` if a push notification is delivered and clicked on a minimised app. + * (IOS also uses this for cold-starts). + * @param navigation - navigation prop used for page navigations + */ +async function onBackgroundEvent(navigation: NavigationProp<NavigationParams>) { + NotificationsService.onBackgroundEvent((event) => + NotificationsService.handleNotificationEvent({ + ...event, + callback: (notification) => { + const pressAction = event?.detail?.pressAction; + const notificationDataStr = notification?.data?.dataStr; + + if (!notificationDataStr) { + return; + } + + try { + // Notify can only store strings + const notificationData = JSON.parse(notificationDataStr as string); + if ( + pressAction?.id === PressActionId.OPEN_NOTIFICATIONS_VIEW && + isINotification(notificationData) + ) { + clickPushNotification(notificationData, navigation); + } + } catch { + // Do Nothing + } + }, + }), + ); +} + +/** + * Effect that registers Notifee Push listeners + * - When push notifications are recieved + * - When push notifications are clicked + */ +export function useRegisterPushNotificationsEffect() { + const navigation: NavigationProp<NavigationParams> = useNavigation(); + const notificationsFlagEnabled = isNotificationsFeatureEnabled(); + const notificationsControllerEnabled = useSelector( + selectIsMetamaskNotificationsEnabled, + ); + const notificationsPushControllerEnabled = useSelector( + selectIsMetaMaskPushNotificationsEnabled, + ); + const notificationsEnabled = + notificationsFlagEnabled && + notificationsControllerEnabled && + notificationsPushControllerEnabled; + + // App Open Effect + useEffect(() => { + const run = async () => { + try { + if (notificationsEnabled) { + await onAppOpenNotification(navigation); + } + } catch { + // Do Nothing + } + }; + run(); + }, [navigation, notificationsEnabled]); + + // On Background and Foreground Events + useEffect(() => { + const run = async () => { + try { + if (notificationsEnabled) { + await onBackgroundEvent(navigation); + } + } catch { + // Do Nothing + } + }; + run(); + }, [navigation, notificationsEnabled]); +} diff --git a/app/util/notifications/hooks/useSwitchNotifications.test.tsx b/app/util/notifications/hooks/useSwitchNotifications.test.tsx index dec1378d520f..ee5795497f55 100644 --- a/app/util/notifications/hooks/useSwitchNotifications.test.tsx +++ b/app/util/notifications/hooks/useSwitchNotifications.test.tsx @@ -1,220 +1,500 @@ -/* eslint-disable react/prop-types */ -/* eslint-disable react/display-name */ -/* eslint-disable import/no-namespace */ -import createMockStore from 'redux-mock-store'; -import { act, renderHook } from '@testing-library/react-hooks'; -import { toChecksumAddress } from 'ethereumjs-util'; -import React from 'react'; -import { Provider } from 'react-redux'; -import { updateAccountState } from '../../../core/redux/slices/notifications'; -import { - useAccountSettingsProps, - useSwitchNotifications, -} from './useSwitchNotifications'; +import { act } from '@testing-library/react-hooks'; +import { waitFor } from '@testing-library/react-native'; +// eslint-disable-next-line import/no-namespace +import * as I18nModule from '../../../../locales/i18n'; +// eslint-disable-next-line import/no-namespace import * as Actions from '../../../actions/notification/helpers'; -import initialRootState from '../../test/initial-root-state'; +// eslint-disable-next-line import/no-namespace import * as Selectors from '../../../selectors/notifications'; -import { Account } from '../../../components/hooks/useAccounts/useAccounts.types'; -import { MOCK_ACCOUNTS_CONTROLLER_STATE } from '../../../util/test/accountsControllerTestUtils'; -import { Hex } from '@metamask/utils'; -import { KeyringTypes } from '@metamask/keyring-controller'; -import Engine from '../../../core/Engine'; +import { renderHookWithProvider } from '../../test/renderWithProvider'; +// eslint-disable-next-line import/no-namespace +import * as UseNotificationsModule from './useNotifications'; +import { + useAccountNotificationsToggle, + useFeatureAnnouncementToggle, + useFetchAccountNotifications, + useNotificationsToggle, + useSwitchNotificationLoadingText, +} from './useSwitchNotifications'; jest.mock('../constants', () => ({ ...jest.requireActual('../constants'), isNotificationsFeatureEnabled: () => true, })); -jest.mock('../../../core/Engine', () => ({ - context: { - NotificationServicesController: { - checkAccountsPresence: jest.fn(), - }, - }, -})); +describe('useSwitchNotifications - useNotificationsToggle', () => { + const arrangeMocks = () => { + const mockEnableNotifications = jest.fn(); + const mockUseEnableNotifications = jest + .spyOn(UseNotificationsModule, 'useEnableNotifications') + .mockReturnValue({ + data: true, + isEnablingNotifications: false, + isEnablingPushNotifications: false, + loading: false, + error: null, + enableNotifications: mockEnableNotifications, + }); + + const mockDisableNotifications = jest.fn(); + const mockUseDisableNotifications = jest + .spyOn(UseNotificationsModule, 'useDisableNotifications') + .mockReturnValue({ + data: true, + loading: false, + error: null, + disableNotifications: mockDisableNotifications, + }); -function arrangeStore() { - const store = createMockStore()(initialRootState); + return { + mockEnableNotifications, + mockUseEnableNotifications, + mockDisableNotifications, + mockUseDisableNotifications, + }; + }; - // Ensure dispatch mocks are handled correctly - store.dispatch = jest.fn().mockImplementation((action) => { - if (typeof action === 'function') { - return action(store.dispatch, store.getState); - } - return Promise.resolve(); - }); + const arrangeAct = async (val: boolean) => { + // Arrange + const mocks = arrangeMocks(); + const hook = renderHookWithProvider(() => useNotificationsToggle()); + + // Act + await act(() => hook.result.current.switchNotifications(val)); - return store; -} + return { mocks, hook }; + }; -describe('useSwitchNotifications', () => { - beforeEach(() => { - jest.clearAllMocks(); + it('performs enable switch', async () => { + const { mocks } = await arrangeAct(true); + await waitFor(() => + expect(mocks.mockEnableNotifications).toHaveBeenCalled(), + ); + expect(mocks.mockDisableNotifications).not.toHaveBeenCalled(); }); - const arrangeHook = () => { - const store = arrangeStore(); - const hook = renderHook(() => useSwitchNotifications(), { - wrapper: ({ children }) => <Provider store={store}>{children}</Provider>, - }); + it('performs disable switch', async () => { + const { mocks } = await arrangeAct(false); + await waitFor(() => + expect(mocks.mockDisableNotifications).toHaveBeenCalled(), + ); + expect(mocks.mockEnableNotifications).not.toHaveBeenCalled(); + }); +}); - return { hook, store }; - }; +describe('useSwitchNotifications - useFeatureAnnouncementToggle()', () => { + const arrangeMocks = () => { + const mockListNotifications = jest.fn(); + const mockUseListNotifications = jest + .spyOn(UseNotificationsModule, 'useListNotifications') + .mockReturnValue({ + error: null, + isLoading: false, + notificationsData: [], + listNotifications: mockListNotifications, + }); + + const mockSelectIsEnabled = jest + .spyOn(Selectors, 'selectIsMetamaskNotificationsEnabled') + .mockReturnValue(true); + const mockSelectIsFeatureAnnouncementsEnabled = jest + .spyOn(Selectors, 'selectIsFeatureAnnouncementsEnabled') + .mockReturnValue(true); - it('switchs feature announcements', async () => { - const mockSetFeatureAnnouncementEnabled = jest - .spyOn(Actions, 'setFeatureAnnouncementsEnabled') + const mockToggleFeatureAnnouncement = jest + .spyOn(Actions, 'toggleFeatureAnnouncements') .mockImplementation(jest.fn()); - const { hook } = arrangeHook(); - const { switchFeatureAnnouncements } = hook.result.current; + return { + mockListNotifications, + mockUseListNotifications, + mockSelectIsEnabled, + mockSelectIsFeatureAnnouncementsEnabled, + mockToggleFeatureAnnouncement, + }; + }; - await act(async () => { - await switchFeatureAnnouncements(true); - }); + type Mocks = ReturnType<typeof arrangeMocks>; + const arrangeAct = async (val: boolean, mutateMocks?: (m: Mocks) => void) => { + // Arrange + const mocks = arrangeMocks(); + mutateMocks?.(mocks); + const hook = renderHookWithProvider(() => useFeatureAnnouncementToggle()); - expect(mockSetFeatureAnnouncementEnabled).toHaveBeenCalledWith(true); - expect(hook.result.current.loading).toBe(false); - expect(hook.result.current.error).toBeNull(); + // Act + await act(() => hook.result.current.switchFeatureAnnouncements(val)); + + return { mocks, hook }; + }; + + it('performs enable flow', async () => { + const { mocks } = await arrangeAct(true); + await waitFor(() => + expect(mocks.mockToggleFeatureAnnouncement).toHaveBeenCalledWith(true), + ); + await waitFor(() => expect(mocks.mockListNotifications).toHaveBeenCalled()); }); - it('switchs account notifications', async () => { - const mockUpdateOnChainTriggersByAccount = jest - .spyOn(Actions, 'updateOnChainTriggersByAccount') - .mockImplementation(jest.fn()); - const mockDeleteOnChainTriggersByAccount = jest - .spyOn(Actions, 'deleteOnChainTriggersByAccount') - .mockImplementation(jest.fn()); + it('performs disable flow', async () => { + const { mocks } = await arrangeAct(false); + await waitFor(() => + expect(mocks.mockToggleFeatureAnnouncement).toHaveBeenCalledWith(false), + ); + await waitFor(() => expect(mocks.mockListNotifications).toHaveBeenCalled()); + }); + + it('bails if notifications are not enabled', async () => { + const { mocks } = await arrangeAct(true, (m) => + m.mockSelectIsEnabled.mockReturnValue(false), + ); + await waitFor(() => + expect(mocks.mockToggleFeatureAnnouncement).not.toHaveBeenCalledWith( + true, + ), + ); + await waitFor(() => + expect(mocks.mockListNotifications).not.toHaveBeenCalled(), + ); + }); +}); + +describe('useSwitchNotifications - useFetchAccountNotifications()', () => { + const arrangeMocks = () => { + const mockSelectIsUpdatingMetamaskNotificationsAccount = jest + .spyOn(Selectors, 'selectIsUpdatingMetamaskNotificationsAccount') + .mockReturnValue([]); + + const mockSelectIsEnabled = jest + .spyOn(Selectors, 'selectIsMetamaskNotificationsEnabled') + .mockReturnValue(true); - const { hook } = arrangeHook(); - const { switchAccountNotifications } = hook.result.current; + const mockFetchAccountNotificationSettings = jest + .spyOn(Actions, 'fetchAccountNotificationSettings') + .mockResolvedValue({}); - const accounts = ['account1', 'account2']; - const state = true; + return { + mockFetchAccountNotificationSettings, + mockSelectIsEnabled, + mockSelectIsUpdatingMetamaskNotificationsAccount, + }; + }; + + type Mocks = ReturnType<typeof arrangeMocks>; + const arrangeActCallback = async ( + accounts: string[], + mutateMocks?: (m: Mocks) => void, + ) => { + // Arrange + const mocks = arrangeMocks(); + mutateMocks?.(mocks); + const hook = renderHookWithProvider(() => + useFetchAccountNotifications(accounts), + ); + // Act await act(async () => { - await switchAccountNotifications(accounts, state); + await hook.result.current.update(accounts); }); - expect(mockUpdateOnChainTriggersByAccount).toHaveBeenCalledWith(accounts); - expect(mockDeleteOnChainTriggersByAccount).not.toHaveBeenCalled(); - expect(hook.result.current.loading).toBe(false); + return { mocks, hook }; + }; + + const arrangeActEffect = async ( + accounts: string[], + mutateMocks?: (m: Mocks) => void, + ) => { + // Arrange + const mocks = arrangeMocks(); + mutateMocks?.(mocks); + + // Act - render hook (which will invoke effect) + const hook = renderHookWithProvider(() => + useFetchAccountNotifications(accounts), + ); + + return { mocks, hook }; + }; + + it('fetches account notifications successfully', async () => { + const accounts = ['0x123', '0x456']; + const { mocks, hook } = await arrangeActCallback(accounts); + await waitFor(() => + expect(mocks.mockFetchAccountNotificationSettings).toHaveBeenCalledWith( + accounts, + ), + ); + expect(hook.result.current.data).toEqual({}); expect(hook.result.current.error).toBeNull(); }); - it('deletes account notifications', async () => { - const mockUpdateOnChainTriggersByAccount = jest - .spyOn(Actions, 'updateOnChainTriggersByAccount') - .mockImplementation(jest.fn()); - const mockDeleteOnChainTriggersByAccount = jest - .spyOn(Actions, 'deleteOnChainTriggersByAccount') - .mockImplementation(jest.fn()); + it('returns error if fails to fetch', async () => { + const accounts = ['0x123', '0x456']; + const errorMessage = 'Failed to get account settings'; + const { mocks, hook } = await arrangeActCallback(accounts, (m) => { + m.mockFetchAccountNotificationSettings.mockRejectedValue( + new Error(errorMessage), + ); + }); + await waitFor(() => + expect(mocks.mockFetchAccountNotificationSettings).toHaveBeenCalledWith( + accounts, + ), + ); + expect(hook.result.current.error).toBe(errorMessage); + }); - const { hook } = arrangeHook(); - const { switchAccountNotifications } = hook.result.current; + it('does not fetch if notifications are not enabled', async () => { + const accounts = ['0x123', '0x456']; + const { mocks } = await arrangeActCallback(accounts, (m) => { + m.mockSelectIsEnabled.mockReturnValue(false); + }); + await waitFor(() => + expect(mocks.mockFetchAccountNotificationSettings).not.toHaveBeenCalled(), + ); + }); - const accounts = ['account1', 'account2']; - const state = false; + it('invokes effect fetch account notifications', async () => { + const accounts = ['0x123', '0x456']; + const { mocks } = await arrangeActEffect(accounts); + await waitFor(() => + expect(mocks.mockFetchAccountNotificationSettings).toHaveBeenCalled(), + ); + }); - await act(async () => { - await switchAccountNotifications(accounts, state); + it('does not invoke effect fetch if notifications are not enabled', async () => { + const accounts = ['0x123', '0x456']; + const { mocks } = await arrangeActEffect(accounts, (m) => { + m.mockSelectIsEnabled.mockReturnValue(false); }); + await waitFor(() => + expect(mocks.mockFetchAccountNotificationSettings).not.toHaveBeenCalled(), + ); + }); - expect(mockDeleteOnChainTriggersByAccount).toHaveBeenCalledWith(accounts); - expect(mockUpdateOnChainTriggersByAccount).not.toHaveBeenCalled(); - expect(hook.result.current.loading).toBe(false); - expect(hook.result.current.error).toBeNull(); + it('does not invoke effect fetch if there are no accounts', async () => { + const accounts: string[] = []; + const { mocks } = await arrangeActEffect(accounts); + await waitFor(() => + expect(mocks.mockFetchAccountNotificationSettings).not.toHaveBeenCalled(), + ); }); }); -describe('useAccountSettingsProps', () => { - beforeEach(() => { - jest.clearAllMocks(); - }); - - const MOCK_ACCOUNT_ADDRESSES = Object.values( - MOCK_ACCOUNTS_CONTROLLER_STATE.internalAccounts.accounts, - ).map((account) => account.address); - - const MOCK_ACCOUNT_1: Account = { - name: 'Account 1', - address: toChecksumAddress(MOCK_ACCOUNT_ADDRESSES[0]) as Hex, - type: KeyringTypes.hd, - yOffset: 0, - isSelected: false, - assets: { - fiatBalance: '\n0 ETH', - }, - balanceError: undefined, +describe('useSwitchNotifications - useAccountNotificationsToggle()', () => { + const arrangeMocks = () => { + const mockListNotifications = jest.fn(); + const mockUseListNotifications = jest + .spyOn(UseNotificationsModule, 'useListNotifications') + .mockReturnValue({ + error: null, + isLoading: false, + notificationsData: [], + listNotifications: mockListNotifications, + }); + + const mockCreateNotificationsForAccount = jest + .spyOn(Actions, 'createNotificationsForAccount') + .mockImplementation(jest.fn()); + + const mockDeleteNotificationsForAccount = jest + .spyOn(Actions, 'deleteNotificationsForAccount') + .mockImplementation(jest.fn()); + + return { + mockCreateNotificationsForAccount, + mockDeleteNotificationsForAccount, + mockListNotifications, + mockUseListNotifications, + }; }; - const MOCK_ACCOUNT_2: Account = { - name: 'Account 2', - address: toChecksumAddress(MOCK_ACCOUNT_ADDRESSES[1]) as Hex, - type: KeyringTypes.hd, - yOffset: 78, - isSelected: true, - assets: { - fiatBalance: '\n< 0.00001 ETH', - }, - balanceError: undefined, + + const arrangeAct = async ( + addresses: string[], + state: boolean, + mutateMocks?: (m: ReturnType<typeof arrangeMocks>) => void, + ) => { + // Arrange + const mocks = arrangeMocks(); + mutateMocks?.(mocks); + const hook = renderHookWithProvider(() => useAccountNotificationsToggle()); + + // Act + await act(async () => { + await hook.result.current.onToggle(addresses, state); + }); + + return { mocks, hook }; }; - const MOCK_ACCOUNTS = [MOCK_ACCOUNT_1, MOCK_ACCOUNT_2]; + it('creates notifications for account', async () => { + const addresses = ['0x123', '0x456']; + const { mocks } = await arrangeAct(addresses, true); + await waitFor(() => + expect(mocks.mockCreateNotificationsForAccount).toHaveBeenCalledWith( + addresses, + ), + ); + await waitFor(() => + expect(mocks.mockDeleteNotificationsForAccount).not.toHaveBeenCalled(), + ); + await waitFor(() => expect(mocks.mockListNotifications).toHaveBeenCalled()); + }); - function arrangeHook(accounts: Account[]) { - const store = arrangeStore(); - const hook = renderHook(() => useAccountSettingsProps(accounts), { - wrapper: ({ children }) => <Provider store={store}>{children}</Provider>, + it('deletes notifications for account', async () => { + const addresses = ['0x123', '0x456']; + const { mocks } = await arrangeAct(addresses, false); + await waitFor(() => + expect(mocks.mockDeleteNotificationsForAccount).toHaveBeenCalledWith( + addresses, + ), + ); + await waitFor(() => + expect(mocks.mockCreateNotificationsForAccount).not.toHaveBeenCalled(), + ); + await waitFor(() => expect(mocks.mockListNotifications).toHaveBeenCalled()); + }); + + it('handles error during create notifications', async () => { + const addresses = ['0x123', '0x456']; + const errorMessage = 'Failed to create notifications'; + const { mocks, hook } = await arrangeAct(addresses, true, (m) => { + m.mockCreateNotificationsForAccount.mockRejectedValue( + new Error(errorMessage), + ); }); + await waitFor(() => + expect(mocks.mockCreateNotificationsForAccount).toHaveBeenCalledWith( + addresses, + ), + ); + expect(hook.result.current.error).toBe(errorMessage); + }); - return { hook, store }; - } + it('handles error during delete notifications', async () => { + const addresses = ['0x123', '0x456']; + const errorMessage = 'Failed to delete notifications'; + const { mocks, hook } = await arrangeAct(addresses, false, (m) => { + m.mockDeleteNotificationsForAccount.mockRejectedValue( + new Error(errorMessage), + ); + }); + await waitFor(() => + expect(mocks.mockDeleteNotificationsForAccount).toHaveBeenCalledWith( + addresses, + ), + ); + expect(hook.result.current.error).toBe(errorMessage); + }); +}); - function arrangeSelectors() { - const selectIsUpdatingMetamaskNotificationsAccount = jest - .spyOn(Selectors, 'selectIsUpdatingMetamaskNotificationsAccount') - .mockReturnValue([MOCK_ACCOUNTS[0].address]); +describe('useSwitchNotifications - useSwitchNotificationLoadingText()', () => { + const arrangeMocks = () => { + const mockSelectIsUpdatingMetamaskNotifications = jest + .spyOn(Selectors, 'selectIsUpdatingMetamaskNotifications') + .mockReturnValue(false); - const isMetamaskNotificationsEnabled = jest + const mockSelectIsMetamaskNotificationsEnabled = jest .spyOn(Selectors, 'selectIsMetamaskNotificationsEnabled') - .mockReturnValue(true); + .mockReturnValue(false); + + const mockSelectIsMetaMaskPushNotificationsLoading = jest + .spyOn(Selectors, 'selectIsMetaMaskPushNotificationsLoading') + .mockReturnValue(false); + + const mockSelectIsMetaMaskPushNotificationsEnabled = jest + .spyOn(Selectors, 'selectIsMetaMaskPushNotificationsEnabled') + .mockReturnValue(false); + + const mockSelectIsUpdatingMetamaskNotificationsAccount = jest + .spyOn(Selectors, 'selectIsUpdatingMetamaskNotificationsAccount') + .mockReturnValue([]); + + const mockStrings = jest + .spyOn(I18nModule, 'strings') + .mockReturnValue('Some Translation'); return { - selectIsUpdatingMetamaskNotificationsAccount, - isMetamaskNotificationsEnabled, + mockSelectIsUpdatingMetamaskNotifications, + mockSelectIsMetamaskNotificationsEnabled, + mockSelectIsMetaMaskPushNotificationsLoading, + mockSelectIsMetaMaskPushNotificationsEnabled, + mockSelectIsUpdatingMetamaskNotificationsAccount, + mockStrings, }; - } + }; - it('dispatches updateAccountState with the result of checkAccountsPresence', async () => { - const mockSelectors = arrangeSelectors(); - const mockCheckAccountsPresence = jest.fn().mockResolvedValue({ - [MOCK_ACCOUNTS[0].address]: true, - [MOCK_ACCOUNTS[1].address]: false, - }); + const arrangeAct = ( + mutateMocks?: (m: ReturnType<typeof arrangeMocks>) => void, + ) => { + // Arrange + const mocks = arrangeMocks(); + mutateMocks?.(mocks); + const hook = renderHookWithProvider(() => + useSwitchNotificationLoadingText(), + ); - Engine.context.NotificationServicesController.checkAccountsPresence = - mockCheckAccountsPresence; + return { mocks, hook }; + }; - mockSelectors.selectIsUpdatingMetamaskNotificationsAccount.mockReturnValue( - [], + it('returns disabling notifications text when notifications are being disabled', () => { + const { hook, mocks } = arrangeAct((m) => { + m.mockSelectIsUpdatingMetamaskNotifications.mockReturnValue(true); + m.mockSelectIsMetamaskNotificationsEnabled.mockReturnValue(true); + }); + expect(hook.result.current).toBeDefined(); + expect(mocks.mockStrings).toHaveBeenCalledWith( + 'app_settings.disabling_notifications', ); - mockSelectors.isMetamaskNotificationsEnabled.mockReturnValue(true); + }); - const { hook, store } = arrangeHook(MOCK_ACCOUNTS); + it('returns enabling notifications text when notifications are being enabled', () => { + const { hook, mocks } = arrangeAct((m) => { + m.mockSelectIsUpdatingMetamaskNotifications.mockReturnValue(true); + m.mockSelectIsMetamaskNotificationsEnabled.mockReturnValue(false); + }); + expect(hook.result.current).toBeDefined(); + expect(mocks.mockStrings).toHaveBeenCalledWith( + 'app_settings.enabling_notifications', + ); + }); - await act(async () => { - await hook.result.current.updateAndfetchAccountSettings(); + it('returns disabling notifications text when push notifications are being disabled', () => { + const { hook, mocks } = arrangeAct((m) => { + m.mockSelectIsMetaMaskPushNotificationsEnabled.mockReturnValue(true); + m.mockSelectIsMetaMaskPushNotificationsLoading.mockReturnValue(true); }); + expect(hook.result.current).toBeDefined(); + expect(mocks.mockStrings).toHaveBeenCalledWith( + 'app_settings.disabling_notifications', + ); + }); - expect(mockCheckAccountsPresence).toHaveBeenCalledWith( - MOCK_ACCOUNTS.map((account) => account.address), + it('returns enabling notifications text when push notifications are being enabled', () => { + const { hook, mocks } = arrangeAct((m) => { + m.mockSelectIsMetaMaskPushNotificationsEnabled.mockReturnValue(false); + m.mockSelectIsMetaMaskPushNotificationsLoading.mockReturnValue(true); + }); + expect(hook.result.current).toBeDefined(); + expect(mocks.mockStrings).toHaveBeenCalledWith( + 'app_settings.enabling_notifications', ); + }); - expect(store.dispatch).toHaveBeenCalledWith( - updateAccountState({ - [MOCK_ACCOUNTS[0].address]: true, - [MOCK_ACCOUNTS[1].address]: false, - }), + it('returns updating account settings text when accounts are being updated', () => { + const { hook, mocks } = arrangeAct((m) => { + m.mockSelectIsUpdatingMetamaskNotificationsAccount.mockReturnValue([ + '0xAddr1', + ]); + }); + expect(hook.result.current).toBeDefined(); + expect(mocks.mockStrings).toHaveBeenCalledWith( + 'app_settings.updating_account_settings', ); }); + + it('returns undefined when no loading state is active', () => { + const { mocks, hook } = arrangeAct(); + expect(hook.result.current).toBeUndefined(); + expect(mocks.mockStrings).not.toHaveBeenCalled(); + }); }); diff --git a/app/util/notifications/hooks/useSwitchNotifications.ts b/app/util/notifications/hooks/useSwitchNotifications.ts index 4d9c32e603c4..d2c96c4db2f6 100644 --- a/app/util/notifications/hooks/useSwitchNotifications.ts +++ b/app/util/notifications/hooks/useSwitchNotifications.ts @@ -1,107 +1,204 @@ -import { useState, useCallback, useMemo } from 'react'; -import { getErrorMessage } from '../../../util/errorHandling'; +import { useCallback, useEffect, useMemo, useState } from 'react'; +import { useSelector } from 'react-redux'; import { - deleteOnChainTriggersByAccount, - setFeatureAnnouncementsEnabled, - updateOnChainTriggersByAccount, + assertIsFeatureEnabled, + createNotificationsForAccount, + deleteNotificationsForAccount, + fetchAccountNotificationSettings, + toggleFeatureAnnouncements, } from '../../../actions/notification/helpers'; -import Engine from '../../../core/Engine'; -import { useDispatch } from 'react-redux'; -import { updateAccountState } from '../../../core/redux/slices/notifications'; -import { Account } from '../../../components/hooks/useAccounts/useAccounts.types'; -import Logger from '../../../util/Logger'; +import { debounce } from 'lodash'; +import { + selectIsFeatureAnnouncementsEnabled, + selectIsMetamaskNotificationsEnabled, + selectIsMetaMaskPushNotificationsEnabled, + selectIsMetaMaskPushNotificationsLoading, + selectIsUpdatingMetamaskNotifications, + selectIsUpdatingMetamaskNotificationsAccount, +} from '../../../selectors/notifications'; +import { + useListNotifications, + useEnableNotifications, + useDisableNotifications, +} from './useNotifications'; import { isNotificationsFeatureEnabled } from '../constants'; +import { strings } from '../../../../locales/i18n'; -export function useSwitchNotifications() { - const [loading, setLoading] = useState<boolean>(false); - const [error, setError] = useState<string | null>(null); - const resetStates = useCallback(() => { - setLoading(false); - setError(null); - }, []); +export function useNotificationsToggle() { + const { + enableNotifications, + data, + loading, + error: enableError, + } = useEnableNotifications({ nudgeEnablePush: false }); + const { disableNotifications, error: disableError } = + useDisableNotifications(); + + const switchNotifications = useCallback( + async (val: boolean) => { + assertIsFeatureEnabled(); + val ? await enableNotifications() : await disableNotifications(); + }, + [disableNotifications, enableNotifications], + ); + return { + switchNotifications, + data, + loading, + error: enableError || disableError, + }; +} + +export function useFeatureAnnouncementToggle() { + const { listNotifications } = useListNotifications(); + const isEnabled = useSelector(selectIsMetamaskNotificationsEnabled); + const data = useSelector(selectIsFeatureAnnouncementsEnabled); const switchFeatureAnnouncements = useCallback( - async (state: boolean) => { - if (!isNotificationsFeatureEnabled()) { + async (val: boolean) => { + assertIsFeatureEnabled(); + if (!isEnabled) { return; } - resetStates(); - setLoading(true); + await toggleFeatureAnnouncements(val); + + // Refetch notifications + debounce(listNotifications)(); + }, + [isEnabled, listNotifications], + ); + + return { + data, + switchFeatureAnnouncements, + }; +} + +export function useFetchAccountNotifications(accounts: string[]) { + const accountsBeingUpdated = useSelector( + selectIsUpdatingMetamaskNotificationsAccount, + ); + const isEnabled = useSelector(selectIsMetamaskNotificationsEnabled); + const [data, setData] = useState<Record<string, boolean>>({}); + const [loading, setLoading] = useState<boolean>(false); + const [error, setError] = useState<string | null>(null); + + // Memoize the accounts array to avoid unnecessary re-fetching + const jsonAccounts = useMemo(() => JSON.stringify(accounts), [accounts]); + + const update = useCallback( + async (addresses: string[]) => { + assertIsFeatureEnabled(); + if (!isEnabled) { + return; + } try { - const errorMessage = await setFeatureAnnouncementsEnabled(state); - if (errorMessage) { - setError(getErrorMessage(errorMessage)); - } - } catch (e) { - const errorMessage = getErrorMessage(e); - setError(errorMessage); + setLoading(true); + setError(null); + const res = await fetchAccountNotificationSettings(addresses); + setData(res); + } catch { + setError('Failed to get account settings'); } finally { setLoading(false); } }, - [resetStates], + [isEnabled], ); - const switchAccountNotifications = useCallback( - async (accounts: string[], state: boolean) => { - resetStates(); + // Effect - async get if accounts are enabled/disabled + useEffect(() => { + if (!isEnabled || !isNotificationsFeatureEnabled()) { + return; + } + const memoAccounts: string[] = JSON.parse(jsonAccounts); + if (memoAccounts.length > 0) { + update(memoAccounts); + } + }, [jsonAccounts, isEnabled, update]); + + return { + data, + initialLoading: loading, + error, + accountsBeingUpdated, + update, + }; +} + +export function useAccountNotificationsToggle() { + const { listNotifications } = useListNotifications(); + const [loading, setLoading] = useState(false); + const [error, setError] = useState<string | null>(null); + + const onToggle = useCallback( + async (addresses: string[], state: boolean) => { setLoading(true); + setError(null); try { - let errorMessage: string | undefined; if (state) { - errorMessage = await updateOnChainTriggersByAccount(accounts); + await createNotificationsForAccount(addresses); } else { - errorMessage = await deleteOnChainTriggersByAccount(accounts); - } - - if (errorMessage) { - setError(getErrorMessage(errorMessage)); + await deleteNotificationsForAccount(addresses); } } catch (e) { - const errorMessage = getErrorMessage(e); + const errorMessage = + e instanceof Error ? e.message : JSON.stringify(e ?? ''); setError(errorMessage); } finally { setLoading(false); + // Refetch notifications + debounce(listNotifications)(); } }, - [resetStates], + [listNotifications], ); return { - switchFeatureAnnouncements, - switchAccountNotifications, - loading, + onToggle, error, + loading, }; } -/** - * Account Settings Hook. - * Gets initial loading states, and returns enable/disable account states. - * Also exposes an update() method so each switch can be manually updated. - * - * @param accounts the accounts we are checking to see if notifications are enabled/disabled - * @returns props for settings page - */ +export function useSwitchNotificationLoadingText(): string | undefined { + // Notification Settings + const notificationsLoading = useSelector( + selectIsUpdatingMetamaskNotifications, + ); + const notificationEnabled = useSelector(selectIsMetamaskNotificationsEnabled); + + // Push Notification Settings + const pushNotificationsLoading = useSelector( + selectIsMetaMaskPushNotificationsLoading, + ); + const pushNotificationsEnabled = useSelector( + selectIsMetaMaskPushNotificationsEnabled, + ); -export function useAccountSettingsProps(accounts: Account[]) { - const dispatch = useDispatch(); + const accountsLoading = useSelector( + selectIsUpdatingMetamaskNotificationsAccount, + ); - // Memoize the accounts array to avoid unnecessary re-fetching - const memoAccounts = useMemo(() => accounts.map((account) => account.address),[accounts]); - const updateAndfetchAccountSettings = useCallback(async () => { - try { - const result = await Engine.context.NotificationServicesController.checkAccountsPresence(memoAccounts); - dispatch(updateAccountState(result)); - return result; - } catch (err) { - Logger.log('Failed to get account settings:', err); - } - }, [dispatch, memoAccounts]); + if (accountsLoading.length > 0) { + return strings('app_settings.updating_account_settings'); + } + + if (pushNotificationsLoading) { + return pushNotificationsEnabled + ? strings('app_settings.disabling_notifications') + : strings('app_settings.enabling_notifications'); + } + + if (notificationsLoading) { + return notificationEnabled + ? strings('app_settings.disabling_notifications') + : strings('app_settings.enabling_notifications'); + } - return { updateAndfetchAccountSettings }; + return undefined; } diff --git a/app/util/notifications/hooks/useUpdateAccountSetting.test.tsx b/app/util/notifications/hooks/useUpdateAccountSetting.test.tsx deleted file mode 100644 index 6f09e678904b..000000000000 --- a/app/util/notifications/hooks/useUpdateAccountSetting.test.tsx +++ /dev/null @@ -1,67 +0,0 @@ -import React from 'react'; -import { Provider } from 'react-redux'; -import { renderHook, act } from '@testing-library/react-hooks'; -import { useUpdateAccountSetting } from './useUpdateAccountSetting'; -import createMockStore from 'redux-mock-store'; -import initialRootState from '../../../util/test/initial-root-state'; - -function arrangeStore() { - const store = createMockStore()(initialRootState); - - // Ensure dispatch mocks are handled correctly - store.dispatch = jest.fn().mockImplementation((action) => { - if (typeof action === 'function') { - return action(store.dispatch, store.getState); - } - return Promise.resolve(); - }); - - return store; -} - -const mockRefetchAccountSettings = jest.fn(); - -describe('useUpdateAccountSetting', () => { - beforeEach(() => { - jest.clearAllMocks(); - }); - - const arrangeHook = () => { - const store = arrangeStore(); - const hook = renderHook(() => useUpdateAccountSetting('0x123', mockRefetchAccountSettings), { - wrapper: ({ children }) => <Provider store={store}>{children}</Provider>, - }); - - return hook; - }; - - it('toggleAccount calls switchAccountNotifications with the correct params', async () => { - - const { result } = arrangeHook(); - - await act(async () => { - await result.current.toggleAccount(true); - }); - - expect(result.current.loading).toBe(false); - }); - - it('toggleAccount sets loading state correctly', async () => { - const { result } = arrangeHook(); - - expect(result.current.loading).toBe(false); - - await act(async () => { - await result.current.toggleAccount(true); - }); - - expect(result.current.loading).toBe(false); - - await act(async () => { - await result.current.toggleAccount(false); - }); - - expect(result.current.loading).toBe(false); - }); -}); - diff --git a/app/util/notifications/hooks/useUpdateAccountSetting.tsx b/app/util/notifications/hooks/useUpdateAccountSetting.tsx deleted file mode 100644 index 238896f2039f..000000000000 --- a/app/util/notifications/hooks/useUpdateAccountSetting.tsx +++ /dev/null @@ -1,32 +0,0 @@ -import { useSwitchNotifications } from '../../../util/notifications/hooks/useSwitchNotifications'; -import { useListNotifications } from '../../../util/notifications/hooks/useNotifications'; -import { useCallback, useState } from 'react'; - -export function useUpdateAccountSetting(address: string, updateAndfetchAccountSettings: () => Promise<Record<string, boolean> | undefined>) { - const { switchAccountNotifications } = useSwitchNotifications(); - const { listNotifications: refetch } = useListNotifications(); - - // Local states - const [loading, setLoading] = useState(false); - - const toggleAccount = useCallback( - async (state: boolean) => { - setLoading(true); - try { - // change the account state in the controller - await switchAccountNotifications([address], state); - // Concurrently refetch account settings and notifications - await Promise.all([ - updateAndfetchAccountSettings(), - refetch() - ]); - } catch { - // Do nothing (we don't need to propagate this) - } - setLoading(false); - }, - [address, refetch, updateAndfetchAccountSettings, switchAccountNotifications], - ); - - return { toggleAccount, loading }; -} diff --git a/app/util/notifications/methods/common.test.ts b/app/util/notifications/methods/common.test.ts index d5ea5ddc2859..aca87d2ec108 100644 --- a/app/util/notifications/methods/common.test.ts +++ b/app/util/notifications/methods/common.test.ts @@ -1,13 +1,11 @@ import { formatMenuItemDate, - parseNotification, shortenString, getLeadingZeroCount, formatAmount, getUsdAmount, } from './common'; import { strings } from '../../../../locales/i18n'; -import { FirebaseMessagingTypes } from '@react-native-firebase/messaging'; describe('formatMenuItemDate', () => { beforeAll(() => { @@ -201,25 +199,6 @@ describe('getUsdAmount', () => { }); }); -describe('parseNotification', () => { - it('parses notification', () => { - const notification = { - data: { - data: { - type: 'eth_received', - data: { kind: 'eth_received' }, - }, - }, - } as unknown as FirebaseMessagingTypes.RemoteMessage; - - expect(parseNotification(notification)).toEqual({ - type: 'eth_received', - transaction: { kind: 'eth_received' }, - duration: 5000, - }); - }); -}); - describe('shortenString', () => { it('should return the same string if it is shorter than TRUNCATED_NAME_CHAR_LIMIT', () => { expect(shortenString('string')).toStrictEqual('string'); diff --git a/app/util/notifications/methods/common.ts b/app/util/notifications/methods/common.ts index f858ab595c70..0025cfffdac8 100644 --- a/app/util/notifications/methods/common.ts +++ b/app/util/notifications/methods/common.ts @@ -7,8 +7,6 @@ import { Web3Provider } from '@ethersproject/providers'; import { toHex } from '@metamask/controller-utils'; import BigNumber from 'bignumber.js'; import { - UserStorage, - USER_STORAGE_VERSION_KEY, OnChainRawNotification, OnChainRawNotificationsWithNetworkFields, TRIGGER_TYPES, @@ -20,7 +18,6 @@ import { NOTIFICATION_NETWORK_CURRENCY_SYMBOL, SUPPORTED_NOTIFICATION_BLOCK_EXPLORERS, } from '@metamask/notification-services-controller/notification-services/ui'; -import { FirebaseMessagingTypes } from '@react-native-firebase/messaging'; import Engine from '../../../core/Engine'; import { IconName } from '../../../component-library/components/Icons/Icon'; import { hexWEIToDecETH, hexWEIToDecGWEI } from '../../conversions'; @@ -486,80 +483,3 @@ export function withTimeout<T>(promise: Promise<T>, ms: number): Promise<T> { ); return Promise.race([promise, timeout]); } - -export interface NotificationTrigger { - id: string; - chainId: string; - kind: string; - address: string; -} - -type MapTriggerFn<Result> = (trigger: NotificationTrigger) => Result; - -interface TraverseTriggerOpts<Result> { - address?: string; - mapTrigger?: MapTriggerFn<Result>; -} - -const triggerToId = (trigger: NotificationTrigger) => trigger.id; -const triggerIdentity = (trigger: NotificationTrigger) => trigger; - -function traverseUserStorageTriggers<ResultTriggers = NotificationTrigger>( - userStorage: UserStorage, - options?: TraverseTriggerOpts<ResultTriggers>, -) { - const triggers: ResultTriggers[] = []; - const mapTrigger = - options?.mapTrigger ?? (triggerIdentity as MapTriggerFn<ResultTriggers>); - - for (const address in userStorage) { - if (address === (USER_STORAGE_VERSION_KEY as unknown as string)) continue; - if (options?.address && address !== options.address) continue; - for (const chain_id in userStorage[address]) { - for (const uuid in userStorage[address]?.[chain_id]) { - if (uuid) { - triggers.push( - mapTrigger({ - id: uuid, - kind: userStorage[address]?.[chain_id]?.[uuid]?.k, - chainId: chain_id, - address, - }), - ); - } - } - } - } - - return triggers; -} - -export function getUUIDs(userStorage: UserStorage, address: string): string[] { - return traverseUserStorageTriggers(userStorage, { - address, - mapTrigger: triggerToId, - }); -} - -export function getAllUUIDs(userStorage: UserStorage): string[] { - const uuids = traverseUserStorageTriggers(userStorage, { - mapTrigger: triggerToId, - }); - return uuids; -} - -export function parseNotification( - remoteMessage: FirebaseMessagingTypes.RemoteMessage, -) { - const notification = remoteMessage.data?.data; - const parsedNotification = - typeof notification === 'string' ? JSON.parse(notification) : notification; - - const notificationData = { - type: parsedNotification?.type || parsedNotification?.data?.kind, - transaction: parsedNotification?.data, - duration: 5000, - }; - - return notificationData; -} diff --git a/app/util/notifications/services/FCMService.test.ts b/app/util/notifications/services/FCMService.test.ts index cc29e672e577..47979d9b26d6 100644 --- a/app/util/notifications/services/FCMService.test.ts +++ b/app/util/notifications/services/FCMService.test.ts @@ -1,135 +1,292 @@ -import { cleanup } from '@testing-library/react-native'; -import { MMKV } from 'react-native-mmkv'; -import messaging from '@react-native-firebase/messaging'; +import messaging, { + type FirebaseMessagingTypes, +} from '@react-native-firebase/messaging'; +// eslint-disable-next-line import/no-namespace +import { processNotification } from '@metamask/notification-services-controller/notification-services'; +import { createMockNotificationEthSent } from '@metamask/notification-services-controller/notification-services/mocks'; + import FCMService from './FCMService'; -import { mmStorage, notificationStorage } from '../settings'; -import Logger from '../../../util/Logger'; - -jest.mock('../../../core/NotificationManager'); -jest.mock('../../../util/Logger'); -jest.mock('./NotificationService'); -jest.mock('../../../../locales/i18n', () => ({ - strings: jest.fn().mockReturnValue('Mocked string'), -})); - -jest.mock('../../../store', () => ({ - store: { - dispatch: jest.fn(), - }, -})); - -jest.mock('../methods', () => ({ - parseNotification: jest.fn(), -})); - -const mockedOnTokenRefresh = jest.fn((callback) => callback('fcmToken')); - -jest.mock('@react-native-firebase/messaging', () => ({ - __esModule: true, - default: jest.fn(() => ({ - onTokenRefresh: mockedOnTokenRefresh, - getToken: jest.fn(() => Promise.resolve('fcmToken')), - deleteToken: jest.fn(() => Promise.resolve()), - subscribeToTopic: jest.fn(), - unsubscribeFromTopic: jest.fn(), - hasPermission: jest.fn(() => Promise.resolve(1)), - requestPermission: jest.fn(() => Promise.resolve(1)), - setBackgroundMessageHandler: jest.fn(() => Promise.resolve()), - isDeviceRegisteredForRemoteMessages: jest.fn(() => Promise.resolve(false)), - registerDeviceForRemoteMessages: jest.fn(() => - Promise.resolve('registered'), - ), - unregisterDeviceForRemoteMessages: jest.fn(() => - Promise.resolve('unregistered'), - ), - onMessage: jest.fn(() => jest.fn()) - })) -})); - -jest.mock('../settings', () => ({ - mmStorage: { - saveLocal: jest.fn(), - getLocal: jest.fn().mockReturnValue({ data: 'fcmToken' }), - }, - notificationStorage: { - set: jest.fn(), - getString: jest.fn(), - }, -})); - -jest.mock('../../../core/NotificationManager', () => ({ - onMessageReceived: jest.fn(), -})); - -describe('FCMService', () => { - let storage: MMKV; - - afterEach(cleanup); - beforeAll(() => { - storage = notificationStorage; + +// Firebase Mock +jest.mock('@react-native-firebase/messaging', () => { + const originalModule = jest.requireActual('@react-native-firebase/messaging'); + + const hasPermission = jest.fn(); + const registerDeviceForRemoteMessages = jest.fn(); + const getToken = jest.fn(); + const deleteToken = jest.fn(); + const setBackgroundMessageHandler = jest.fn(); + const onMessage = jest.fn(); + + // Messaging() function mock + const mockMessaging = jest.fn(() => ({ + isDeviceRegisteredForRemoteMessages: false, + hasPermission, + registerDeviceForRemoteMessages, + getToken, + deleteToken, + setBackgroundMessageHandler, + onMessage, + })); + + // Retain the messaging properties + Object.assign(mockMessaging, originalModule.default); + + return { + __esModule: true, + ...originalModule, + default: mockMessaging, + }; +}); + +// Notification Services Mock +jest.mock('@metamask/notification-services-controller/notification-services'); + +const arrangeFirebaseMocks = () => { + const mockHasPermission = jest.mocked(messaging().hasPermission); + mockHasPermission.mockResolvedValue(messaging.AuthorizationStatus.AUTHORIZED); + + const mockRegisterDeviceForRemoteMessages = jest.mocked( + messaging().registerDeviceForRemoteMessages, + ); + + const mockGetToken = jest + .mocked(messaging().getToken) + .mockResolvedValue('MOCK_FCM_TOKEN'); + const mockDeleteToken = jest.mocked(messaging().deleteToken); + const mockOnMessage = jest.mocked(messaging().onMessage); + + return { + mockHasPermission, + mockRegisterDeviceForRemoteMessages, + mockGetToken, + mockDeleteToken, + mockOnMessage, + }; +}; + +describe('FCMService - createRegToken()', () => { + afterEach(() => { jest.clearAllMocks(); }); - it('gets local storage token correctly', () => { - const mockKey = 'metaMaskFcmToken'; - const mockValue = { data: 'fcmToken' }; + it('creates registration token', async () => { + const firebaseMocks = arrangeFirebaseMocks(); + + const result = await FCMService.createRegToken(); + expect(result).toBeDefined(); - storage.set(mockKey, JSON.stringify(mockValue)); - storage.getString(mockKey); + expect(firebaseMocks.mockHasPermission).toHaveBeenCalled(); + expect( + firebaseMocks.mockRegisterDeviceForRemoteMessages, + ).toHaveBeenCalled(); + expect(firebaseMocks.mockGetToken).toHaveBeenCalled(); + }); - const result = mmStorage.getLocal(mockKey); + it('returns null if push notifications are not enabled', async () => { + const firebaseMocks = arrangeFirebaseMocks(); + firebaseMocks.mockHasPermission.mockResolvedValue( + messaging.AuthorizationStatus.DENIED, + ); - expect(result).toEqual(mockValue); + const result = await FCMService.createRegToken(); + expect(result).toBe(null); + expect(firebaseMocks.mockGetToken).not.toHaveBeenCalled(); }); - it('gets FCM token', async () => { - const mockToken = 'fcmToken'; + it('returns null if fails to get FCM token', async () => { + const firebaseMocks = arrangeFirebaseMocks(); + firebaseMocks.mockGetToken.mockRejectedValueOnce(new Error('TEST ERROR')); - const token = await FCMService.getFCMToken(); - expect(token).toBe(mockToken); + const result = await FCMService.createRegToken(); + expect(result).toBe(null); + expect(firebaseMocks.mockGetToken).toHaveBeenCalled(); }); +}); + +describe('FCMService - deleteRegToken()', () => { + afterEach(() => { + jest.clearAllMocks(); + }); + + it('successfully deletes an FCM token', async () => { + const firebaseMocks = arrangeFirebaseMocks(); + + const result = await FCMService.deleteRegToken(); + expect(result).toBe(true); - it('logs if FCM token is not found', async () => { - const mockKey = 'metaMaskFcmToken'; - const mockValue = { data: undefined }; + expect(firebaseMocks.mockHasPermission).toHaveBeenCalled(); + expect(firebaseMocks.mockDeleteToken).toHaveBeenCalled(); + }); - const getLocalMock = jest.spyOn(mmStorage, 'getLocal').mockReturnValue(undefined); + it('returns true (silently passes) if push notifications are not enabled', async () => { + const firebaseMocks = arrangeFirebaseMocks(); + firebaseMocks.mockHasPermission.mockResolvedValue( + messaging.AuthorizationStatus.DENIED, + ); - storage.set(mockKey, JSON.stringify(mockValue)); - storage.getString(mockKey); + const result = await FCMService.deleteRegToken(); + expect(result).toBe(true); + expect(firebaseMocks.mockDeleteToken).not.toHaveBeenCalled(); + }); - await FCMService.getFCMToken(); - expect(Logger.log).toHaveBeenCalledWith('getFCMToken: No FCM token found'); + it('returns fails to delete FCM token', async () => { + const firebaseMocks = arrangeFirebaseMocks(); + firebaseMocks.mockDeleteToken.mockRejectedValueOnce( + new Error('TEST ERROR'), + ); - getLocalMock.mockRestore(); + const result = await FCMService.deleteRegToken(); + expect(result).toBe(false); + expect(firebaseMocks.mockDeleteToken).toHaveBeenCalled(); }); +}); - it('saves FCM token', async () => { - const mockKey = 'metaMaskFcmToken'; - const mockValue = { data: 'fcmToken' }; +describe('FCMService - isPushNotificationsEnabled()', () => { + afterEach(() => { + jest.clearAllMocks(); + }); - storage.set(mockKey, JSON.stringify(mockValue)); - storage.getString(mockKey); + it.each([ + { status: 'AUTHORIZED', code: messaging.AuthorizationStatus.AUTHORIZED }, + { status: 'PROVISIONAL', code: messaging.AuthorizationStatus.PROVISIONAL }, + ])('returns true if push notifications are $status', async ({ code }) => { + const firebaseMocks = arrangeFirebaseMocks(); + firebaseMocks.mockHasPermission.mockResolvedValue(code); - await FCMService.saveFCMToken(); - expect(mmStorage.saveLocal).toHaveBeenCalled(); + const result = await FCMService.isPushNotificationsEnabled(); + expect(result).toBe(true); + expect(firebaseMocks.mockHasPermission).toHaveBeenCalled(); }); - it('saves FCM token if permissionStatus === messaging.AuthorizationStatus.AUTHORIZED', async () => { - const mockToken = 'fcmToken'; - (messaging().requestPermission as jest.Mock).mockResolvedValue(1); - (messaging().getToken as jest.Mock).mockResolvedValue(mockToken); + it('returns false if push notifications are denied', async () => { + const firebaseMocks = arrangeFirebaseMocks(); + firebaseMocks.mockHasPermission.mockResolvedValue( + messaging.AuthorizationStatus.DENIED, + ); - await FCMService.saveFCMToken(); - expect(mmStorage.saveLocal).toHaveBeenCalledWith('metaMaskFcmToken', { data: mockToken }); + const result = await FCMService.isPushNotificationsEnabled(); + expect(result).toBe(false); + expect(firebaseMocks.mockHasPermission).toHaveBeenCalled(); }); - it('saves FCM token if permissionStatus === messaging.AuthorizationStatus.PROVISIONAL', async () => { - const mockToken = 'fcmToken'; - (messaging().requestPermission as jest.Mock).mockResolvedValue(2); - (messaging().getToken as jest.Mock).mockResolvedValue(mockToken); + it('returns false if an error occurs while checking permission', async () => { + const firebaseMocks = arrangeFirebaseMocks(); + firebaseMocks.mockHasPermission.mockRejectedValueOnce( + new Error('TEST ERROR'), + ); + + const result = await FCMService.isPushNotificationsEnabled(); + expect(result).toBe(false); + expect(firebaseMocks.mockHasPermission).toHaveBeenCalled(); + }); +}); + +describe('FCMService - listenToPushNotificationsReceived()', () => { + beforeEach(() => { + jest.clearAllMocks(); + FCMService.clearRegistration(); + }); + + const arrangeNotificationServicesMocks = () => { + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const identity = (x: any) => x; + const mockProcessNotification = jest + .mocked(processNotification) + .mockImplementation(identity); + + return { + mockProcessNotification, + }; + }; + + const arrangeMocks = () => { + const firebaseMocks = arrangeFirebaseMocks(); + const mockHandler = jest.fn(); + const mockOnMessageUnsubscribe = jest.fn(); + firebaseMocks.mockOnMessage.mockReturnValue(mockOnMessageUnsubscribe); + + return { firebaseMocks, mockOnMessageUnsubscribe, mockHandler }; + }; + + it('sets up listeners for push notifications and returns an unsubscribe handler', async () => { + const { mockHandler, firebaseMocks } = arrangeMocks(); + + const result = await FCMService.listenToPushNotificationsReceived( + mockHandler, + ); + expect(result).toBeDefined(); + expect(firebaseMocks.mockOnMessage).toHaveBeenCalled(); + }); + + it('returns null if an error occurs while setting up listeners', async () => { + const { mockHandler, firebaseMocks } = arrangeMocks(); + firebaseMocks.mockOnMessage.mockImplementationOnce(() => { + throw new Error('TEST ERROR'); + }); + + const result = await FCMService.listenToPushNotificationsReceived( + mockHandler, + ); + expect(result).toBe(null); + }); + + describe('FCMService - Process Foreground Messages', () => { + const act = async ( + mocks: ReturnType<typeof arrangeMocks>, + overridePayload = {}, + ) => { + const defaultPayload = { + data: { data: JSON.stringify(createMockNotificationEthSent()) }, + } as unknown as FirebaseMessagingTypes.RemoteMessage; + const mockPayload = { ...defaultPayload, ...overridePayload }; + + // Act - Start Listening + await FCMService.listenToPushNotificationsReceived(mocks.mockHandler); + expect(mocks.firebaseMocks.mockOnMessage).toHaveBeenCalled(); + + // Fake a new remote message has been received + const messageHandler = + mocks.firebaseMocks.mockOnMessage.mock.lastCall?.[0]; + await messageHandler?.(mockPayload); + }; + + it('invokes "processAndHandleNotification" & calls handler param', async () => { + const mocks = arrangeMocks(); + const notificationMocks = arrangeNotificationServicesMocks(); + + await act(mocks); + + // Assert - notification was processed + expect(notificationMocks.mockProcessNotification).toHaveBeenCalled(); + + // Assert - handler callback was invoked + expect(mocks.mockHandler).toHaveBeenCalled(); + }); + + it('handles invalid or non-parseable payload', async () => { + const mocks = arrangeMocks(); + arrangeNotificationServicesMocks(); + + const invalidPayload = { + data: { data: 'invalid json' }, + } as unknown as FirebaseMessagingTypes.RemoteMessage; + + await act(mocks, invalidPayload); + + expect(mocks.mockHandler).not.toHaveBeenCalled(); + }); + + it('handles errors from notification services', async () => { + const mocks = arrangeMocks(); + const notificationMocks = arrangeNotificationServicesMocks(); + notificationMocks.mockProcessNotification.mockImplementationOnce(() => { + throw new Error('TEST ERROR'); + }); + + await act(mocks); - await FCMService.saveFCMToken(); - expect(mmStorage.saveLocal).toHaveBeenCalledWith('metaMaskFcmToken', { data: mockToken }); + expect(mocks.mockHandler).not.toHaveBeenCalled(); + }); }); }); diff --git a/app/util/notifications/services/FCMService.ts b/app/util/notifications/services/FCMService.ts index 0c31f09ae923..332f0e0c8968 100644 --- a/app/util/notifications/services/FCMService.ts +++ b/app/util/notifications/services/FCMService.ts @@ -1,65 +1,181 @@ -import messaging, { FirebaseMessagingTypes } from '@react-native-firebase/messaging'; +import { + type INotification, + processNotification, + toRawOnChainNotification, + type UnprocessedOnChainRawNotification, +} from '@metamask/notification-services-controller/notification-services'; +import messaging, { + type FirebaseMessagingTypes, +} from '@react-native-firebase/messaging'; import Logger from '../../../util/Logger'; -import { mmStorage } from '../settings'; -import NotificationManager from '../../../core/NotificationManager'; -import { parseNotification } from '../methods'; -type UnsubscribeFunc = () => void +type UnsubscribeFunc = () => void; + +/** + * Utility to check if devices have enabled push notifications + * @returns boolean + */ +async function isPushNotificationsEnabled() { + try { + const permissionStatus = await messaging().hasPermission(); + return ( + permissionStatus === messaging.AuthorizationStatus.AUTHORIZED || + permissionStatus === messaging.AuthorizationStatus.PROVISIONAL + ); + } catch { + return false; + } +} + +/** + * IOS requires device registration for remote messages through APNs. + * To be invoked when creating or registering FCM tokens. + */ +async function registerForRemoteMessages() { + try { + const isRegistered = messaging().isDeviceRegisteredForRemoteMessages; + if (!isRegistered) { + await messaging().registerDeviceForRemoteMessages(); + } + } catch (error) { + // Do Nothing - silently fail + } +} + +/** + * Processes and handles a remote firebase message. + * Currently firebase messages only support wallet notifications (from our notification services). + * @param payload - Firebase Remote Message Payload. + * @param handler - Callback handler for callers to handle a notification + * @returns - void + */ +async function processAndHandleNotification( + payload: FirebaseMessagingTypes.RemoteMessage, + handler: (notification: INotification) => void | Promise<void>, +) { + try { + const payloadData = payload?.data?.data + ? String(payload?.data?.data) + : undefined; + const data: UnprocessedOnChainRawNotification | undefined = payloadData + ? JSON.parse(payloadData) + : undefined; + + if (!data) { + return; + } + + // If we are able to handle a remote push notification + // Then we do not want to render the original server notification but custom content + // Prevents duplicate notifications + delete payload.notification; + + const notificationData = toRawOnChainNotification(data); + const notification = processNotification(notificationData); + await handler(notification); + } catch (error) { + // Do Nothing, cannot parse a bad notification + Logger.log('Unable to send push notification:', { + notification: payload?.data?.data, + error, + }); + } +} class FCMService { + /** + * Creates a registration token for Firebase Cloud Messaging + * + * @returns A promise that resolves with the registration token, or null if an error occurs + */ + createRegToken = async (): Promise<string | null> => { + if (!(await isPushNotificationsEnabled())) { + return null; + } - getFCMToken = async (): Promise<string | undefined> => { - const fcmTokenLocal = await mmStorage.getLocal('metaMaskFcmToken'); - const token = fcmTokenLocal?.data || undefined; - if (!token) { - Logger.log('getFCMToken: No FCM token found'); + try { + await registerForRemoteMessages(); + const fcmToken = await messaging().getToken(); + return fcmToken; + } catch { + return null; } - return token; }; - saveFCMToken = async () => { + /** + * Deletes the Firebase Cloud Messaging registration token. + * + * @returns A promise that resolves with true if the token was successfully deleted, false otherwise. + */ + deleteRegToken = async (): Promise<boolean> => { + if (!(await isPushNotificationsEnabled())) { + return true; + } + try { - const permissionStatus = await messaging().hasPermission(); - if ( - permissionStatus === 1 || permissionStatus === 2 - ) { - const fcmToken = await messaging().getToken(); - if (fcmToken) { - mmStorage.saveLocal('metaMaskFcmToken', { data: fcmToken }); - } - } - } catch (error) { - Logger.log(error as Error, 'FCMService:: error saving'); + await messaging().deleteToken(); + return true; + } catch { + return false; } }; - listenForMessagesForeground = (): UnsubscribeFunc => messaging().onMessage(async (remoteMessage: FirebaseMessagingTypes.RemoteMessage) => { - const notificationData = parseNotification(remoteMessage); - NotificationManager.onMessageReceived(notificationData); - }); + /** + * Listener for when push notifications are received. + * Subscribed to both foreground and background messages - listenForMessagesBackground = (): void => { - messaging().setBackgroundMessageHandler(async (remoteMessage: FirebaseMessagingTypes.RemoteMessage) => { - const notificationData = parseNotification(remoteMessage); - NotificationManager.onMessageReceived(notificationData); - }); + * @param handler - handler used for displaying push notifications. Must be provided. + * @returns unsubscribe handler + */ + listenToPushNotificationsReceived = async ( + handler: (notification: INotification) => void | Promise<void>, + ): Promise<UnsubscribeFunc | null> => { + try { + // We only subscribe to foreground messages, as subscribing to background messages that contain `notification` + `data` payloads have issues + // IOS - requires payload editing (https://notifee.app/react-native/docs/ios/remote-notification-support) + // IOS - requires isHeadless injection and app modification to ship a minimal app when headless (https://rnfirebase.io/messaging/usage#background-application-state). + // Android - will cause double notifications if a remote message contains both `notification` + `data` payloads + // Firebase will still send push notifications in background + app kill as there is a `notification` payload in the remote message + await this.#registerForegroundMessages(handler); + return this.#hasRegisteredForeground; + } catch { + return null; + } }; - registerAppWithFCM = async () => { - Logger.log( - 'registerAppWithFCM status', - messaging().isDeviceRegisteredForRemoteMessages, - ); - if (!messaging().isDeviceRegisteredForRemoteMessages) { - await messaging() - .registerDeviceForRemoteMessages() - .then((status: unknown) => { - Logger.log('registerDeviceForRemoteMessages status', status); - }) - .catch((error: Error) => { - Logger.error(error); - }); + isPushNotificationsEnabled = () => isPushNotificationsEnabled(); + + /** + * Ensures we only register for foreground notifications once + */ + #hasRegisteredForeground: UnsubscribeFunc | null = null; + #registerForegroundMessages = async ( + handler: (notification: INotification) => void | Promise<void>, + ) => { + if (!(await isPushNotificationsEnabled())) { + return null; } + + if (this.#hasRegisteredForeground) { + return; + } + + try { + this.#hasRegisteredForeground = messaging().onMessage(async (payload) => { + processAndHandleNotification(payload, handler); + }); + } catch { + // Do nothing + } + }; + + /** + * Used to clear any registered listeners. + * Mostly used for tested cases + */ + clearRegistration = () => { + this.#hasRegisteredForeground?.(); + this.#hasRegisteredForeground = null; }; } export default new FCMService(); diff --git a/app/util/notifications/services/NotificationService.test.ts b/app/util/notifications/services/NotificationService.test.ts index 6b498592f0f6..59fa43323784 100644 --- a/app/util/notifications/services/NotificationService.test.ts +++ b/app/util/notifications/services/NotificationService.test.ts @@ -1,13 +1,17 @@ import notifee, { AuthorizationStatus, - AndroidChannel, - AndroidImportance, EventType, + NotificationSettings, + NativeAndroidChannel, + EventDetail, } from '@notifee/react-native'; -import { Linking } from 'react-native'; -import { ChannelId } from '../../../util/notifications/androidChannels'; -import NotificationsService from './NotificationService'; -import { LAUNCH_ACTIVITY, PressActionId } from '../types'; +import { Linking, Platform } from 'react-native'; +import { + ChannelId, + notificationChannels, +} from '../../../util/notifications/androidChannels'; +import NotificationService from './NotificationService'; +import { store } from '../../../store'; jest.mock('@notifee/react-native', () => ({ getNotificationSettings: jest.fn(), @@ -63,152 +67,344 @@ jest.mock('../../../util/Logger', () => ({ error: jest.fn(), })); -describe('NotificationsService', () => { +describe('NotificationsService - getBlockedNotifications', () => { + const arrangeMocks = () => { + const mockGetNotificationSettings = jest + .mocked(notifee.getNotificationSettings) + .mockResolvedValue({ + authorizationStatus: AuthorizationStatus.AUTHORIZED, + } as NotificationSettings); + + const mockGetChannels = jest.mocked(notifee.getChannels); + const mockChannels: NativeAndroidChannel[] = [ + { id: '1', blocked: true } as NativeAndroidChannel, + { id: '2', blocked: true } as NativeAndroidChannel, + { id: '3', blocked: true } as NativeAndroidChannel, + ]; + mockGetChannels.mockResolvedValue(mockChannels); + + return { mockGetNotificationSettings, mockGetChannels, mockChannels }; + }; + beforeEach(() => { jest.clearAllMocks(); }); - it('gets blocked notifications', async () => { - (notifee.getNotificationSettings as jest.Mock).mockResolvedValue({ - authorizationStatus: AuthorizationStatus.AUTHORIZED, + it('gets default blocked channels', async () => { + const mocks = arrangeMocks(); + mocks.mockGetNotificationSettings.mockResolvedValue({ + authorizationStatus: AuthorizationStatus.DENIED, + } as NotificationSettings); + + const result = await NotificationService.getBlockedNotifications(); + const expectedChannels = notificationChannels; + expectedChannels.forEach((c) => { + expect(result.has(c.id)).toBe(true); }); - (notifee.getChannels as jest.Mock).mockResolvedValue([ - { id: ChannelId.DEFAULT_NOTIFICATION_CHANNEL_ID, blocked: true }, - ]); + }); - const blockedNotifications = - await NotificationsService.getBlockedNotifications(); + it('gets notifee blocked channels', async () => { + const mocks = arrangeMocks(); - expect( - blockedNotifications.get(ChannelId.DEFAULT_NOTIFICATION_CHANNEL_ID), - ).toBe(true); + const result = await NotificationService.getBlockedNotifications(); + const expectedChannels = mocks.mockChannels; + expectedChannels.forEach((c) => { + expect(result.has(c.id as ChannelId)).toBe(true); + }); }); - it('handles notification press', async () => { - const detail = { - notification: { - id: 'test-id', - data: { url: 'https://example.com' }, - }, + it('returns an empty map if error is thrown', async () => { + const mocks = arrangeMocks(); + mocks.mockGetNotificationSettings.mockRejectedValue( + new Error('TEST ERROR'), + ); + + const result = await NotificationService.getBlockedNotifications(); + expect(result.size).toBe(0); + }); +}); + +describe('NotificationService - getAllPermissions', () => { + const arrangeMocks = () => { + const mockCreateChannel = jest + .mocked(notifee.createChannel) + .mockImplementation(async (c) => c.id); + const mockRequestPermisssion = jest + .mocked(notifee.requestPermission) + .mockResolvedValue({ + authorizationStatus: AuthorizationStatus.AUTHORIZED, + } as NotificationSettings); + + // Mock Block Permission Requests + const mockGetNotificationSettings = jest + .mocked(notifee.getNotificationSettings) + .mockResolvedValue({ + authorizationStatus: AuthorizationStatus.AUTHORIZED, + } as NotificationSettings); + + // Mock Request Permission + const mockRequestPushNotificationPermission = jest + .spyOn(NotificationService, 'requestPushNotificationsPermission') + .mockImplementation(async () => { + // Do nothing + }); + + return { + mockCreateChannel, + mockRequestPermisssion, + mockGetNotificationSettings, + mockRequestPushNotificationPermission, }; - const callback = jest.fn(); + }; - await NotificationsService.handleNotificationPress({ detail, callback }); + beforeEach(() => { + jest.clearAllMocks(); + }); - expect(notifee.cancelTriggerNotification).toHaveBeenCalledWith('test-id'); - expect(callback).toHaveBeenCalledWith(detail.notification); + it('returns authorised permission', async () => { + arrangeMocks(); + const result = await NotificationService.getAllPermissions(); + expect(result.permission).toBe('authorized'); }); - it('opens system settings on iOS', () => { - NotificationsService.openSystemSettings(); + it('returns denied permission', async () => { + const mocks = arrangeMocks(); + mocks.mockRequestPermisssion.mockResolvedValue({ + authorizationStatus: AuthorizationStatus.DENIED, + } as NotificationSettings); + mocks.mockGetNotificationSettings.mockResolvedValue({ + authorizationStatus: AuthorizationStatus.DENIED, + } as NotificationSettings); - expect(Linking.openSettings).toHaveBeenCalled(); + const result = await NotificationService.getAllPermissions(); + expect(result.permission).toBe('denied'); }); +}); + +describe('NotificationService - isDeviceNotificationEnabled', () => { + const arrangeMocks = () => { + const mockGetNotificationSettings = jest + .mocked(notifee.getNotificationSettings) + .mockResolvedValue({ + authorizationStatus: AuthorizationStatus.AUTHORIZED, + } as NotificationSettings); + + const mockDispatch = jest.spyOn(store, 'dispatch'); - it('creates notification channels', async () => { - const channel: AndroidChannel = { - id: ChannelId.DEFAULT_NOTIFICATION_CHANNEL_ID, - name: 'Test Channel', - importance: AndroidImportance.HIGH, + return { mockGetNotificationSettings, mockDispatch }; + }; + + beforeEach(() => { + jest.clearAllMocks(); + }); + + it('dispatches state update on authorisation check', async () => { + const mocks = arrangeMocks(); + + const act = async () => { + const result = await NotificationService.isDeviceNotificationEnabled(); + return result; }; - await NotificationsService.createChannel(channel); + // Act/Assert - notifee authorised + expect(await act()).toBe(true); + expect(mocks.mockDispatch).toHaveBeenCalledWith( + expect.objectContaining({ deviceNotificationEnabled: true }), + ); + + mocks.mockGetNotificationSettings.mockReset(); + mocks.mockDispatch.mockReset(); + mocks.mockGetNotificationSettings.mockResolvedValue({ + authorizationStatus: AuthorizationStatus.DENIED, + } as NotificationSettings); - expect(notifee.createChannel).toHaveBeenCalledWith(channel); + // Act/Assert - notifee unauthorised + expect(await act()).toBe(false); + expect(mocks.mockDispatch).toHaveBeenCalledWith( + expect.objectContaining({ deviceNotificationEnabled: false }), + ); }); +}); - it('returns authorized from getAllPermissions', async () => { - (notifee.requestPermission as jest.Mock).mockResolvedValue({ - authorizationStatus: AuthorizationStatus.AUTHORIZED, - }); - (notifee.getNotificationSettings as jest.Mock).mockResolvedValue({ - authorizationStatus: AuthorizationStatus.AUTHORIZED, - }); - (notifee.getChannels as jest.Mock).mockResolvedValue([]); +describe('NotificationService - alertPrompt buttons', () => { + it('resolves when pressing the buttons', () => { + const mockResolve = jest.fn(); + const result = NotificationService.defaultButtons(mockResolve); - const result = await NotificationsService.getAllPermissions(); - expect(result.permission).toBe('authorized'); + result[0].onPress(); + expect(mockResolve).toHaveBeenCalledWith(false); + + mockResolve.mockReset(); + + result[1].onPress(); + expect(mockResolve).toHaveBeenCalledWith(true); }); +}); - it('returns authorized from requestPermission', async () => { - (notifee.requestPermission as jest.Mock).mockResolvedValue({ - authorizationStatus: AuthorizationStatus.AUTHORIZED, - }); - const result = await NotificationsService.requestPermission(); - expect(result).toBe('authorized'); +describe('NotificationService - openSystemSettings', () => { + const arrangeMocks = () => { + const mockLinkingSettings = jest.spyOn(Linking, 'openSettings'); + const mockNotifeeSettings = jest.spyOn(notifee, 'openNotificationSettings'); + return { + mockLinkingSettings, + mockNotifeeSettings, + }; + }; + + beforeEach(() => { + jest.clearAllMocks(); }); - it('returns denied from requestPermission', async () => { - (notifee.requestPermission as jest.Mock).mockResolvedValue({ - authorizationStatus: AuthorizationStatus.DENIED, + it('performs IOS settings naviation', async () => { + const mocks = arrangeMocks(); + await NotificationService.openSystemSettings(); + expect(mocks.mockLinkingSettings).toHaveBeenCalled(); + expect(mocks.mockNotifeeSettings).not.toHaveBeenCalled(); + }); + + it('performs Android settings naviation', async () => { + const mocks = arrangeMocks(); + Platform.OS = 'android'; + await NotificationService.openSystemSettings(); + expect(mocks.mockLinkingSettings).not.toHaveBeenCalled(); + expect(mocks.mockNotifeeSettings).toHaveBeenCalled(); + }); +}); + +describe('NotificationService - handleNotificationPress', () => { + const arrangeMocks = () => { + const mockDecrementBadge = jest.spyOn( + NotificationService, + 'decrementBadgeCount', + ); + const mockCancelTriggerNotification = jest.spyOn( + NotificationService, + 'cancelTriggerNotification', + ); + const mockEvent: EventDetail = { + notification: { + id: '1', + }, + }; + const mockHandler = jest.fn(); + return { + mockDecrementBadge, + mockCancelTriggerNotification, + mockEvent, + mockHandler, + }; + }; + + beforeEach(() => { + jest.clearAllMocks(); + }); + + it('handles pressing a notification', async () => { + const mocks = arrangeMocks(); + await NotificationService.handleNotificationPress({ + detail: mocks.mockEvent, + callback: mocks.mockHandler, }); - const result = await NotificationsService.requestPermission(); - expect(result).toBe('denied'); + + expect(mocks.mockDecrementBadge).toHaveBeenCalled(); + expect(mocks.mockCancelTriggerNotification).toHaveBeenCalled(); + expect(mocks.mockHandler).toHaveBeenCalled(); }); +}); - it('handles notification event', async () => { - const callback = jest.fn(); +describe('NotificationService - handleNotificationEvent', () => { + const arrangeMocks = () => { + const mockIncrementBadge = jest.spyOn( + NotificationService, + 'incrementBadgeCount', + ); + const mockDecrementBadge = jest.spyOn( + NotificationService, + 'decrementBadgeCount', + ); + const mockCancelTriggerNotification = jest.spyOn( + NotificationService, + 'cancelTriggerNotification', + ); + const mockEvent: EventDetail = { + notification: { + id: '1', + }, + }; + const mockHandler = jest.fn(); - await NotificationsService.handleNotificationEvent({ + return { + mockIncrementBadge, + mockDecrementBadge, + mockCancelTriggerNotification, + mockEvent, + mockHandler, + }; + }; + + beforeEach(() => { + jest.clearAllMocks(); + }); + + it('handles a notification delivered event', async () => { + const mocks = arrangeMocks(); + await NotificationService.handleNotificationEvent({ type: EventType.DELIVERED, - detail: { - notification: { - id: '123', - }, - }, - callback, + detail: mocks.mockEvent, + callback: mocks.mockHandler, }); - expect(notifee.incrementBadgeCount).toHaveBeenCalledWith(1); + expect(mocks.mockIncrementBadge).toHaveBeenCalled(); + expect(mocks.mockDecrementBadge).not.toHaveBeenCalled(); + }); - await NotificationsService.handleNotificationEvent({ + it('handles a notification click event', async () => { + const mocks = arrangeMocks(); + await NotificationService.handleNotificationEvent({ type: EventType.PRESS, - detail: { - notification: { - id: '123', - }, - }, - callback, + detail: mocks.mockEvent, + callback: mocks.mockHandler, }); - expect(notifee.decrementBadgeCount).toHaveBeenCalledWith(1); - expect(notifee.cancelTriggerNotification).toHaveBeenCalledWith('123'); + expect(mocks.mockIncrementBadge).not.toHaveBeenCalled(); + expect(mocks.mockDecrementBadge).toHaveBeenCalled(); + expect(mocks.mockCancelTriggerNotification).toHaveBeenCalled(); }); +}); - it('displays notification', async () => { +describe('NotificationService - displayNotification', () => { + const arrangeMocks = () => { + const mockNotifeeDisplayNotification = jest.spyOn( + notifee, + 'displayNotification', + ); + return { + mockNotifeeDisplayNotification, + }; + }; + + beforeEach(() => { + jest.clearAllMocks(); + }); + + it('calls notifee display notification method', async () => { + const mocks = arrangeMocks(); const notification = { + id: 'Test Id', title: 'Test Title', body: 'Test Body', - data: undefined, - android: { - smallIcon: 'ic_notification_small', - largeIcon: 'ic_notification', - channelId: ChannelId.DEFAULT_NOTIFICATION_CHANNEL_ID, - pressAction: { - id: PressActionId.OPEN_NOTIFICATIONS_VIEW, - launchActivity: LAUNCH_ACTIVITY, - }, - }, - ios: { - foregroundPresentationOptions: { - alert: true, - sound: true, - badge: true, - banner: true, - list: true, - }, - interruptionLevel: 'critical', - launchImageName: 'Default', - sound: 'default', - }, + data: { myTestData: 'HelloWorld' }, }; - await NotificationsService.displayNotification({ - title: 'Test Title', - body: 'Test Body', - channelId: ChannelId.DEFAULT_NOTIFICATION_CHANNEL_ID, - }); + await NotificationService.displayNotification(notification); - expect(notifee.displayNotification).toHaveBeenCalledWith(notification); + expect(mocks.mockNotifeeDisplayNotification).toHaveBeenCalledWith( + expect.objectContaining({ + id: notification.id, + title: notification.title, + body: notification.body, + data: { dataStr: JSON.stringify(notification.data) }, + }), + ); }); }); diff --git a/app/util/notifications/services/NotificationService.ts b/app/util/notifications/services/NotificationService.ts index c3343d34a262..eb9bc0740d53 100644 --- a/app/util/notifications/services/NotificationService.ts +++ b/app/util/notifications/services/NotificationService.ts @@ -1,25 +1,24 @@ import notifee, { + AndroidChannel, AuthorizationStatus, - Event as NotifeeEvent, - EventType, EventDetail, - AndroidChannel, + EventType, + InitialNotification, + Event as NotifeeEvent, + Notification, } from '@notifee/react-native'; - -import { HandleNotificationCallback, LAUNCH_ACTIVITY, INotification as Notification, PressActionId } from '../types'; - -import { Linking, Platform, Alert as NativeAlert } from 'react-native'; +import { Linking, Alert as NativeAlert, Platform } from 'react-native'; +import { strings } from '../../../../locales/i18n'; +import { store } from '../../../store'; +import Logger from '../../../util/Logger'; import { ChannelId, notificationChannels, } from '../../../util/notifications/androidChannels'; - -import { strings } from '../../../../locales/i18n'; +import { withTimeout } from '../methods'; import { mmStorage } from '../settings'; import { STORAGE_IDS } from '../settings/storage/constants'; -import { store } from '../../../store'; -import Logger from '../../../util/Logger'; -import { withTimeout } from '../methods'; +import { LAUNCH_ACTIVITY, PressActionId } from '../types'; interface AlertButton { text: string; @@ -30,23 +29,28 @@ class NotificationsService { async getBlockedNotifications(): Promise<Map<ChannelId, boolean>> { try { const settings = await notifee.getNotificationSettings(); - const channels = await notifee.getChannels(); - - switch (settings.authorizationStatus) { - case AuthorizationStatus.NOT_DETERMINED: - case AuthorizationStatus.DENIED: - return notificationChannels.reduce((map, next) => { - map.set(next.id as ChannelId, true); - return map; - }, new Map<ChannelId, boolean>()); - } - - return channels.reduce((map, next) => { - if (next.blocked) { - map.set(next.id as ChannelId, true); + const isNotAuthorised = + settings.authorizationStatus === AuthorizationStatus.NOT_DETERMINED || + settings.authorizationStatus === AuthorizationStatus.DENIED; + + const channels = isNotAuthorised + ? notificationChannels + : await notifee.getChannels(); + + const deniedChannelMap = new Map<ChannelId, boolean>(); + channels.forEach((c) => { + // default channels + if (isNotAuthorised) { + deniedChannelMap.set(c.id as ChannelId, true); + return; + } + // known notifee channels + if ('blocked' in c && c.blocked) { + deniedChannelMap.set(c.id as ChannelId, true); } - return map; - }, new Map<ChannelId, boolean>()); + }); + + return deniedChannelMap; } catch (e) { Logger.error( e as Error, @@ -58,11 +62,15 @@ class NotificationsService { async getAllPermissions(shouldOpenSettings = true) { const promises: Promise<string>[] = notificationChannels.map( - (channel: AndroidChannel) => - withTimeout(this.createChannel(channel), 5000), + async (channel: AndroidChannel) => + await withTimeout(this.createChannel(channel), 5000), ); await Promise.allSettled(promises); - const permission = await withTimeout(this.requestPermission(), 5000); + const permission: 'authorized' | 'denied' = await withTimeout( + this.requestPermission(), + 5000, + ); + const blockedNotifications = await withTimeout( this.getBlockedNotifications(), 5000, @@ -154,8 +162,8 @@ class NotificationsService { const settings = await notifee.requestPermission(); return settings.authorizationStatus === AuthorizationStatus.AUTHORIZED || settings.authorizationStatus === AuthorizationStatus.PROVISIONAL - ? 'authorized' - : 'denied'; + ? ('authorized' as const) + : ('denied' as const); } onForegroundEvent = ( @@ -184,15 +192,15 @@ class NotificationsService { callback, }: { detail: EventDetail; - callback?: (notification: Notification) => void; + callback?: (notification: Notification | undefined) => void; }) => { this.decrementBadgeCount(1); if (detail?.notification?.id) { await this.cancelTriggerNotification(detail.notification.id); } - if (detail?.notification?.data) { - callback?.(detail.notification as Notification); + if (detail?.notification) { + callback?.(detail.notification); } }; @@ -201,9 +209,9 @@ class NotificationsService { detail, callback, }: NotifeeEvent & { - callback?: (notification: Notification) => void; + callback?: (notification: Notification | undefined) => void; }) => { - switch (type as unknown as EventType) { + switch (type) { case EventType.DELIVERED: this.incrementBadgeCount(1); break; @@ -221,14 +229,8 @@ class NotificationsService { await notifee.cancelTriggerNotification(id); }; - getInitialNotification = async ( - callback: HandleNotificationCallback - ): Promise<void> => { - const event = await notifee.getInitialNotification(); - if (event) { - callback(event.notification.data as Notification['data']); - } - }; + getInitialNotification = async (): Promise<InitialNotification | null> => + await notifee.getInitialNotification(); cancelAllNotifications = async () => { await notifee.cancelAllNotifications(); @@ -238,28 +240,35 @@ class NotificationsService { notifee.createChannel(channel); displayNotification = async ({ - channelId, + channelId = ChannelId.DEFAULT_NOTIFICATION_CHANNEL_ID, + pressActionId = PressActionId.OPEN_HOME, title, body, - data + data, + id, }: { - channelId: ChannelId - title: string - body?: string - data?: Notification['data'] + channelId?: ChannelId; + pressActionId?: PressActionId; + title: string; + body?: string; + data?: unknown; + id?: string; }): Promise<void> => { await notifee.displayNotification({ + id, title, body, - data: data as unknown as Notification['data'], + // Notifee can only store and handle data strings + data: { dataStr: JSON.stringify(data) }, android: { smallIcon: 'ic_notification_small', largeIcon: 'ic_notification', channelId: channelId ?? ChannelId.DEFAULT_NOTIFICATION_CHANNEL_ID, pressAction: { - id: PressActionId.OPEN_NOTIFICATIONS_VIEW, + id: pressActionId, launchActivity: LAUNCH_ACTIVITY, - } + }, + tag: id, }, ios: { launchImageName: 'Default', @@ -277,4 +286,16 @@ class NotificationsService { }; } -export default new NotificationsService(); \ No newline at end of file +const NotificationService = new NotificationsService(); + +export default NotificationService; + +export async function requestPushPermissions() { + const result = await NotificationService.getAllPermissions(true); + return result.permission === 'authorized'; +} + +export async function hasPushPermission() { + const result = await NotificationService.getAllPermissions(false); + return result.permission === 'authorized'; +} diff --git a/app/util/notifications/types/notification/index.ts b/app/util/notifications/types/notification/index.ts index f9aa3a0c9e02..5fd3a4f2d19e 100644 --- a/app/util/notifications/types/notification/index.ts +++ b/app/util/notifications/types/notification/index.ts @@ -10,8 +10,8 @@ export type HandleNotificationCallback = ( ) => void; export enum PressActionId { + OPEN_HOME = 'open-home-press-action-id', OPEN_NOTIFICATIONS_VIEW = 'open-notifications-view-press-action-id', - OPEN_TRANSACTIONS_VIEW = 'open-transactions-view-press-action-id', } export const LAUNCH_ACTIVITY = 'com.metamask.ui.MainActivity'; diff --git a/app/util/smart-transactions/index.test.ts b/app/util/smart-transactions/index.test.ts index 4515ed01acef..06c8cd4e1c16 100644 --- a/app/util/smart-transactions/index.test.ts +++ b/app/util/smart-transactions/index.test.ts @@ -6,7 +6,7 @@ import { getSmartTransactionMetricsProperties, } from './index'; import SmartTransactionsController from '@metamask/smart-transactions-controller'; -import type { ControllerMessenger } from '../../core/Engine'; +import type { BaseControllerMessenger } from '../../core/Engine'; describe('Smart Transactions utils', () => { describe('getTransactionType', () => { @@ -283,63 +283,27 @@ describe('Smart Transactions utils', () => { }); describe('getShouldStartFlow', () => { it('returns true for Send transaction', () => { - const res = getShouldStartApprovalRequest( - false, - true, - false, - false, - false, - ); + const res = getShouldStartApprovalRequest(false, true, false, false, false); expect(res).toBe(true); }); it('returns false for Send transaction when mobileReturnTxHashAsap is true', () => { - const res = getShouldStartApprovalRequest( - false, - true, - false, - false, - true, - ); + const res = getShouldStartApprovalRequest(false, true, false, false, true); expect(res).toBe(false); }); it('returns true for Dapp transaction', () => { - const res = getShouldStartApprovalRequest( - true, - false, - false, - false, - false, - ); + const res = getShouldStartApprovalRequest(true, false, false, false, false); expect(res).toBe(true); }); it('returns false for Dapp transaction when mobileReturnTxHashAsap is true', () => { - const res = getShouldStartApprovalRequest( - true, - false, - false, - false, - true, - ); + const res = getShouldStartApprovalRequest(true, false, false, false, true); expect(res).toBe(false); }); it('returns true for Swap approve transaction', () => { - const res = getShouldStartApprovalRequest( - false, - false, - true, - false, - false, - ); + const res = getShouldStartApprovalRequest(false, false, true, false, false); expect(res).toBe(true); }); it('returns false for Swap transaction', () => { - const res = getShouldStartApprovalRequest( - false, - false, - false, - true, - false, - ); + const res = getShouldStartApprovalRequest(false, false, false, true, false); expect(res).toBe(false); }); }); @@ -371,7 +335,7 @@ describe('Smart Transactions utils', () => { }); describe('getSmartTransactionMetricsProperties', () => { let smartTransactionsController: SmartTransactionsController; - let controllerMessenger: ControllerMessenger; + let controllerMessenger: BaseControllerMessenger; beforeEach(() => { smartTransactionsController = { @@ -379,7 +343,7 @@ describe('Smart Transactions utils', () => { } as unknown as SmartTransactionsController; controllerMessenger = { subscribe: jest.fn(), - } as unknown as ControllerMessenger; + } as unknown as BaseControllerMessenger; }); it('returns empty object if transactionMeta is undefined', async () => { diff --git a/app/util/smart-transactions/index.ts b/app/util/smart-transactions/index.ts index 4b190b5b2a01..aebf461454f0 100644 --- a/app/util/smart-transactions/index.ts +++ b/app/util/smart-transactions/index.ts @@ -9,7 +9,7 @@ import { } from '../transactions'; import SmartTransactionsController from '@metamask/smart-transactions-controller'; import { SmartTransaction } from '@metamask/smart-transactions-controller/dist/types'; -import type { ControllerMessenger } from '../../core/Engine'; +import type { BaseControllerMessenger } from '../../core/Engine'; const TIMEOUT_FOR_SMART_TRANSACTION_CONFIRMATION_DONE_EVENT = 10000; @@ -83,7 +83,7 @@ export const getShouldUpdateApprovalRequest = ( !mobileReturnTxHashAsap && (isDapp || isSend || isSwapTransaction); const waitForSmartTransactionConfirmationDone = ( - controllerMessenger: ControllerMessenger, + controllerMessenger: BaseControllerMessenger, ): Promise<SmartTransaction | undefined> => new Promise((resolve) => { controllerMessenger.subscribe( @@ -101,7 +101,7 @@ export const getSmartTransactionMetricsProperties = async ( smartTransactionsController: SmartTransactionsController, transactionMeta: TransactionMeta | undefined, waitForSmartTransaction: boolean, - controllerMessenger?: ControllerMessenger, + controllerMessenger?: BaseControllerMessenger, ) => { if (!transactionMeta) return {}; let smartTransaction = diff --git a/app/util/smart-transactions/smart-publish-hook.ts b/app/util/smart-transactions/smart-publish-hook.ts index 0f8bb4496d4a..107d23b18976 100644 --- a/app/util/smart-transactions/smart-publish-hook.ts +++ b/app/util/smart-transactions/smart-publish-hook.ts @@ -188,12 +188,9 @@ class SmartTransactionHook { return useRegularTransactionSubmit; } - const batchStatusPollingInterval = - this.#featureFlags?.smartTransactions?.batchStatusPollingInterval; + const batchStatusPollingInterval = this.#featureFlags?.smartTransactions?.batchStatusPollingInterval; if (batchStatusPollingInterval) { - this.#smartTransactionsController.setStatusRefreshInterval( - batchStatusPollingInterval, - ); + this.#smartTransactionsController.setStatusRefreshInterval(batchStatusPollingInterval); } const submitTransactionResponse = await this.#signAndSubmitTransactions({ diff --git a/app/util/test/confirm-data-helpers.ts b/app/util/test/confirm-data-helpers.ts index d6752fec18c5..0e0d37737276 100644 --- a/app/util/test/confirm-data-helpers.ts +++ b/app/util/test/confirm-data-helpers.ts @@ -5,11 +5,14 @@ import { SignatureRequestStatus, SignatureRequestType, } from '@metamask/signature-controller'; +import { GasFeeState } from '@metamask/gas-fee-controller'; import { Hex } from '@metamask/utils'; -import { TransactionControllerState } from '@metamask/transaction-controller'; +import { + TransactionControllerState, + TransactionEnvelopeType, +} from '@metamask/transaction-controller'; import { backgroundState } from './initial-root-state'; - export const confirmationRedesignRemoteFlagsState = { remoteFeatureFlags: { confirmation_redesign: { @@ -401,6 +404,73 @@ export const typedSignV4ConfirmationState = { }, }; +export const typedSignV4NFTSignatureRequest = { + id: 'c5067710-87cf-11ef-916c-71f266571322', + chainId: '0x1' as Hex, + type: SignatureRequestType.TypedSign, + messageParams: { + data: '{"domain":{"name":"Uniswap V3 Positions NFT-V1","version":"1","chainId":1,"verifyingContract":"0xC36442b4a4522E871399CD717aBDD847Ab11FE88"},"types":{"Permit":[{"name":"spender","type":"address"},{"name":"tokenId","type":"uint256"},{"name":"nonce","type":"uint256"},{"name":"deadline","type":"uint256"}]},"primaryType":"Permit","message":{"spender":"0x00000000Ede6d8D217c60f93191C060747324bca","tokenId":"3606393","nonce":"0","deadline":"1734995006"}}', + from: '0x935e73edb9ff52e23bac7f7e043a1ecd06d05477', + version: 'V4', + requestId: 14, + signatureMethod: 'eth_signTypedData_v4', + origin: 'https://metamask.github.io', + metamaskId: 'fb2029e0-b0ab-11ef-9227-05a11087c334', + meta: { + url: 'https://metamask.github.io/test-dapp/', + title: 'E2E Test Dapp', + icon: { uri: 'https://metamask.github.io/metamask-fox.svg' }, + analytics: { request_source: 'In-App-Browser' }, + }, + }, + networkClientId: '1', + status: SignatureRequestStatus.Unapproved, + time: 1733143817088, +} as SignatureRequest; + +export const typedSignV4NFTConfirmationState = { + engine: { + backgroundState: { + ...backgroundState, + ApprovalController: { + pendingApprovals: { + 'c5067710-87cf-11ef-916c-71f266571322': { + id: 'c5067710-87cf-11ef-916c-71f266571322', + origin: 'metamask.github.io', + type: SignatureRequestType.TypedSign, + time: 1733143817088, + requestData: { + data: '{"domain":{"name":"Uniswap V3 Positions NFT-V1","version":"1","chainId":1,"verifyingContract":"0xC36442b4a4522E871399CD717aBDD847Ab11FE88"},"types":{"Permit":[{"name":"spender","type":"address"},{"name":"tokenId","type":"uint256"},{"name":"nonce","type":"uint256"},{"name":"deadline","type":"uint256"}]},"primaryType":"Permit","message":{"spender":"0x00000000Ede6d8D217c60f93191C060747324bca","tokenId":"3606393","nonce":"0","deadline":"1734995006"}}', + from: '0x935e73edb9ff52e23bac7f7e043a1ecd06d05477', + version: 'V4', + requestId: 2874791875, + signatureMethod: 'eth_signTypedData_v4', + origin: 'https://metamask.github.io', + metamaskId: 'fb2029e0-b0ab-11ef-9227-05a11087c334', + meta: { + url: 'https://metamask.github.io/test-dapp/', + title: 'E2E Test Dapp', + icon: { uri: 'https://metamask.github.io/metamask-fox.svg' }, + analytics: { request_source: 'In-App-Browser' }, + }, + }, + requestState: null, + expectsResult: true, + }, + }, + pendingApprovalCount: 1, + approvalFlows: [], + }, + SignatureController: { + signatureRequests: { + 'c5067710-87cf-11ef-916c-71f266571322': + typedSignV4NFTSignatureRequest, + }, + }, + }, + }, +}; + export const securityAlertResponse = { block: 21572398, result_type: 'Malicious', @@ -495,21 +565,103 @@ export const stakingDepositConfirmationState = { data: '0xf9609f08000000000000000000000000dc47789de4ceff0e8fe9d15d728af7f17550c1640000000000000000000000000000000000000000000000000000000000000000', from: '0xdc47789de4ceff0e8fe9d15d728af7f17550c164', gas: '0x1a5bd', - maxFeePerGas: '0x74594b20', - maxPriorityFeePerGas: '0x1dcd6500', + maxFeePerGas: '0x84594b20', + maxPriorityFeePerGas: '0x4dcd6500', to: '0x4fef9d741011476750a243ac70b9789a63dd47df', value: '0x5af3107a4000', + type: TransactionEnvelopeType.feeMarket, }, type: 'stakingDeposit', userEditedGasLimit: false, userFeeLevel: 'medium', verifiedOnBlockchain: false, + gasFeeEstimates: { + high: { + maxFeePerGas: '0xd0f5f04a', + maxPriorityFeePerGas: '0x77359400', + }, + low: { + maxFeePerGas: '0x274d76df', + maxPriorityFeePerGas: '0x47be0d', + }, + medium: { + maxFeePerGas: '0x559ab26a', + maxPriorityFeePerGas: '0x1dcd6500', + }, + type: 'fee-market', + }, }, ], } as unknown as TransactionControllerState, RemoteFeatureFlagController: { ...confirmationRedesignRemoteFlagsState, }, + NetworkController: { + networksMetadata: { + mainnet: { + EIPS: { 1559: true }, + }, + sepolia: { + EIPS: { 1559: true }, + }, + }, + networkConfigurationsByChainId: { + '0x1': { + nativeCurrency: 'ETH', + rpcEndpoints: [ + { + networkClientId: 'mainnet', + }, + ], + }, + '0xaa36a7': { + nativeCurrency: 'ETH', + rpcEndpoints: [ + { + networkClientId: 'sepolia', + }, + ], + }, + }, + selectedNetworkClientId: 'mainnet', + }, + GasFeeController: { + gasFeeEstimatesByChainId: { + '0x1': { + gasEstimateType: 'fee-market', + gasFeeEstimates: { + baseFeeTrend: 'down', + estimatedBaseFee: '0.657622129', + high: { + maxWaitTimeEstimate: 30000, + minWaitTimeEstimate: 15000, + suggestedMaxFeePerGas: '3.554606064', + suggestedMaxPriorityFeePerGas: '2', + }, + historicalBaseFeeRange: ['0.570409997', '0.742901351'], + historicalPriorityFeeRange: ['0.0001', '40.023291076'], + latestPriorityFeeRange: ['0.001014498', '3'], + low: { + maxWaitTimeEstimate: 60000, + minWaitTimeEstimate: 15000, + suggestedMaxFeePerGas: '0.750628835', + suggestedMaxPriorityFeePerGas: '0.006017503', + }, + medium: { + maxWaitTimeEstimate: 45000, + minWaitTimeEstimate: 15000, + suggestedMaxFeePerGas: '1.65994205', + suggestedMaxPriorityFeePerGas: '0.5', + }, + networkCongestion: 0.10665, + priorityFeeTrend: 'up', + }, + }, + }, + } as unknown as GasFeeState, }, }, + settings: { + showFiatOnTestnets: true, + }, }; diff --git a/app/util/test/initial-background-state.json b/app/util/test/initial-background-state.json index 41b79fa480a4..e8e5812d176e 100644 --- a/app/util/test/initial-background-state.json +++ b/app/util/test/initial-background-state.json @@ -1,7 +1,8 @@ { "KeyringController": { "isUnlocked": false, - "keyrings": [] + "keyrings": [], + "keyringsMetadata": [] }, "LoggingController": { "logs": {} @@ -175,6 +176,10 @@ "TokenRatesController": { "marketData": {} }, + "TokenSearchDiscoveryController": { + "lastSearchTimestamp": null, + "recentSearches": [] + }, "TransactionController": { "lastFetchedBlockNumbers": {}, "methodData": {}, @@ -214,6 +219,9 @@ "snaps": {}, "unencryptedSnapStates": {} }, + "SnapInterfaceController": { + "interfaces": {} + }, "SnapsRegistry": { "database": null, "databaseUnavailable": false, @@ -320,7 +328,9 @@ "subscriptionAccountsSeen": [] }, "NotificationServicesPushController": { - "fcmToken": "" + "fcmToken": "", + "isPushEnabled": true, + "isUpdatingFCMToken": false }, "UserStorageController": { "hasAccountSyncingSyncedAtLeastOnce": false, @@ -344,5 +354,27 @@ "conversionRate": 0 } } + }, + "MultichainNetworkController": { + "isEvmSelected": true, + "selectedMultichainNetworkChainId": "solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp", + "multichainNetworkConfigurationsByChainId": { + "bip122:000000000019d6689c085ae165831e93": { + "chainId": "bip122:000000000019d6689c085ae165831e93", + "name": "Bitcoin Mainnet", + "nativeCurrency": "bip122:000000000019d6689c085ae165831e93/slip44:0", + "isEvm": false + }, + "solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp": { + "chainId": "solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp", + "name": "Solana Mainnet", + "nativeCurrency": "solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp/token:EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v", + "isEvm": false + } + } + }, + "MultichainAssetsController": { + "accountsAssets": {}, + "assetsMetadata": {} } } diff --git a/app/util/test/renderWithProvider.tsx b/app/util/test/renderWithProvider.tsx index 44573945b446..ec7d984f3508 100644 --- a/app/util/test/renderWithProvider.tsx +++ b/app/util/test/renderWithProvider.tsx @@ -41,6 +41,8 @@ export default function renderWithProvider( ) { const { state = {}, theme = mockTheme } = providerValues ?? {}; const store = configureStore(state); + // eslint-disable-next-line @typescript-eslint/no-require-imports, @typescript-eslint/no-var-requires + require('../../store')._updateMockState(state); const InnerProvider = ({ children }: { children: React.ReactElement }) => ( <Provider store={store}> @@ -93,7 +95,8 @@ export function renderHookWithProvider<Result, Props>( ) { const { state = {} } = providerValues ?? {}; const store = configureStore(state); - + // eslint-disable-next-line @typescript-eslint/no-require-imports, @typescript-eslint/no-var-requires + require('../../store')._updateMockState(state); const Providers = ({ children }: { children: React.ReactElement }) => ( <Provider store={store}>{children}</Provider> ); diff --git a/app/util/test/testSetup.js b/app/util/test/testSetup.js index aee4e8e9a84c..7e98af426d41 100644 --- a/app/util/test/testSetup.js +++ b/app/util/test/testSetup.js @@ -113,11 +113,16 @@ jest.mock('../../core/NotificationManager', () => ({ showSimpleNotification: jest.fn(), })); +let mockState = {}; + jest.mock('../../store', () => ({ store: { - getState: jest.fn(), + getState: jest.fn().mockImplementation(() => mockState), dispatch: jest.fn(), }, + _updateMockState: (state) => { + mockState = state; + }, })); jest.mock('../../core/NotificationManager'); @@ -346,6 +351,11 @@ jest.mock('../../core/Engine', () => require('../../core/__mocks__/MockedEngine'), ); +jest.mock('react-native-safe-area-context', () => ({ + ...jest.requireActual('react-native-safe-area-context'), + useSafeAreaInsets: () => ({ top: 0, bottom: 0, left: 0, right: 0 }), +})); + afterEach(() => { jest.restoreAllMocks(); global.gc && global.gc(true); diff --git a/attribution.txt b/attribution.txt index 6ddde27398ca..2d6e2f396c47 100644 --- a/attribution.txt +++ b/attribution.txt @@ -1,5 +1,5 @@ @0no-co/graphql.web -1.0.13 <https://github.com/0no-co/graphql.web> +1.0.11 <https://github.com/0no-co/graphql.web> MIT License Copyright (c) 0no.co @@ -30,7 +30,7 @@ abort-controller MIT License Copyright (c) 2017 Toru Nagashima -s + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights @@ -1881,27 +1881,27 @@ OTHER DEALINGS IN THE SOFTWARE. archiver-utils 2.1.0 <https://github.com/archiverjs/archiver-utils> -Copyright (c) 2015 Chris Talkington. - -Permission is hereby granted, free of charge, to any person -obtaining a copy of this software and associated documentation -files (the "Software"), to deal in the Software without -restriction, including without limitation the rights to use, -copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the -Software is furnished to do so, subject to the following -conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +Copyright (c) 2015 Chris Talkington. + +Permission is hereby granted, free of charge, to any person +obtaining a copy of this software and associated documentation +files (the "Software"), to deal in the Software without +restriction, including without limitation the rights to use, +copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the +Software is furnished to do so, subject to the following +conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES +OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT +HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** @@ -2254,7 +2254,7 @@ argsarray ****************************** array-buffer-byte-length -1.0.2 <https://github.com/inspect-js/array-buffer-byte-length> +1.0.1 <https://github.com/inspect-js/array-buffer-byte-length> MIT License Copyright (c) 2023 Inspect JS @@ -2281,7 +2281,7 @@ SOFTWARE. ****************************** arraybuffer.prototype.slice -1.0.4 <https://github.com/es-shims/ArrayBuffer.prototype.slice> +1.0.3 <https://github.com/es-shims/ArrayBuffer.prototype.slice> MIT License Copyright (c) 2023 ECMAScript Shims @@ -3212,7 +3212,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** @babel/compat-data -7.26.5 <https://github.com/babel/babel> +7.26.2 <https://github.com/babel/babel> MIT License Copyright (c) 2014-present Sebastian McKenzie and other contributors @@ -3303,7 +3303,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** @babel/generator -7.26.5 <https://github.com/babel/babel> +7.26.2 <https://github.com/babel/babel> MIT License Copyright (c) 2014-present Sebastian McKenzie and other contributors @@ -3358,35 +3358,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/helper-compilation-targets -7.26.5 <https://github.com/babel/babel> -MIT License - -Copyright (c) 2014-present Sebastian McKenzie and other contributors - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - -****************************** - -@babel/helper-create-class-features-plugin +@babel/helper-builder-binary-assignment-operator-visitor 7.25.9 <https://github.com/babel/babel> MIT License @@ -3414,64 +3386,8 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/helper-create-regexp-features-plugin -7.26.3 <https://github.com/babel/babel> -MIT License - -Copyright (c) 2014-present Sebastian McKenzie and other contributors - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - -****************************** - -@babel/helper-define-polyfill-provider -0.6.2 <https://github.com/babel/babel-polyfills> -MIT License - -Copyright (c) 2014-present Nicolò Ribaudo and other contributors - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - -****************************** - -@babel/helper-environment-visitor -7.24.7 <https://github.com/babel/babel> +@babel/helper-compilation-targets +7.25.9 <https://github.com/babel/babel> MIT License Copyright (c) 2014-present Sebastian McKenzie and other contributors @@ -3498,7 +3414,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/helper-member-expression-to-functions +@babel/helper-create-class-features-plugin 7.25.9 <https://github.com/babel/babel> MIT License @@ -3526,7 +3442,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/helper-module-imports +@babel/helper-create-regexp-features-plugin 7.25.9 <https://github.com/babel/babel> MIT License @@ -3554,11 +3470,11 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/helper-module-transforms -7.26.0 <https://github.com/babel/babel> +@babel/helper-define-polyfill-provider +0.6.2 <https://github.com/babel/babel-polyfills> MIT License -Copyright (c) 2014-present Sebastian McKenzie and other contributors +Copyright (c) 2014-present Nicolò Ribaudo and other contributors Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the @@ -3582,8 +3498,8 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/helper-optimise-call-expression -7.25.9 <https://github.com/babel/babel> +@babel/helper-environment-visitor +7.24.7 <https://github.com/babel/babel> MIT License Copyright (c) 2014-present Sebastian McKenzie and other contributors @@ -3610,8 +3526,8 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/helper-plugin-utils -7.26.5 <https://github.com/babel/babel> +@babel/helper-member-expression-to-functions +7.25.9 <https://github.com/babel/babel> MIT License Copyright (c) 2014-present Sebastian McKenzie and other contributors @@ -3638,7 +3554,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/helper-remap-async-to-generator +@babel/helper-module-imports 7.25.9 <https://github.com/babel/babel> MIT License @@ -3666,8 +3582,8 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/helper-replace-supers -7.26.5 <https://github.com/babel/babel> +@babel/helper-module-transforms +7.26.0 <https://github.com/babel/babel> MIT License Copyright (c) 2014-present Sebastian McKenzie and other contributors @@ -3694,8 +3610,8 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/helpers -7.24.5 <https://github.com/babel/babel> +@babel/helper-optimise-call-expression +7.25.9 <https://github.com/babel/babel> MIT License Copyright (c) 2014-present Sebastian McKenzie and other contributors @@ -3722,7 +3638,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/helper-skip-transparent-expression-wrappers +@babel/helper-plugin-utils 7.25.9 <https://github.com/babel/babel> MIT License @@ -3750,7 +3666,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/helper-string-parser +@babel/helper-remap-async-to-generator 7.25.9 <https://github.com/babel/babel> MIT License @@ -3778,7 +3694,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/helper-validator-identifier +@babel/helper-replace-supers 7.25.9 <https://github.com/babel/babel> MIT License @@ -3806,8 +3722,8 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/helper-validator-option -7.25.9 <https://github.com/babel/babel> +@babel/helpers +7.24.5 <https://github.com/babel/babel> MIT License Copyright (c) 2014-present Sebastian McKenzie and other contributors @@ -3834,7 +3750,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/helper-wrap-function +@babel/helper-simple-access 7.25.9 <https://github.com/babel/babel> MIT License @@ -3862,8 +3778,8 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/highlight -7.24.7 <https://github.com/babel/babel> +@babel/helper-skip-transparent-expression-wrappers +7.25.9 <https://github.com/babel/babel> MIT License Copyright (c) 2014-present Sebastian McKenzie and other contributors @@ -3890,32 +3806,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/parser -7.26.5 <https://github.com/babel/babel> -Copyright (C) 2012-2014 by various contributors (see AUTHORS) - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. - - -****************************** - -@babel/plugin-bugfix-firefox-class-in-computed-class-key +@babel/helper-string-parser 7.25.9 <https://github.com/babel/babel> MIT License @@ -3943,7 +3834,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/plugin-bugfix-safari-class-field-initializer-scope +@babel/helper-validator-identifier 7.25.9 <https://github.com/babel/babel> MIT License @@ -3971,7 +3862,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression +@babel/helper-validator-option 7.25.9 <https://github.com/babel/babel> MIT License @@ -3999,7 +3890,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining +@babel/helper-wrap-function 7.25.9 <https://github.com/babel/babel> MIT License @@ -4027,8 +3918,8 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly -7.25.9 <https://github.com/babel/babel> +@babel/highlight +7.24.7 <https://github.com/babel/babel> MIT License Copyright (c) 2014-present Sebastian McKenzie and other contributors @@ -4055,11 +3946,9 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -babel-plugin-module-resolver -5.0.2 <https://github.com/tleunen/babel-plugin-module-resolver> -The MIT License (MIT) - -Copyright (c) 2015 Tommy Leunen <tommy.leunen@gmail.com> (tommyleunen.com) +@babel/parser +7.26.2 <https://github.com/babel/babel> +Copyright (C) 2012-2014 by various contributors (see AUTHORS) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal @@ -4082,67 +3971,11 @@ THE SOFTWARE. ****************************** -babel-plugin-polyfill-corejs2 -0.4.11 <https://github.com/babel/babel-polyfills> -MIT License - -Copyright (c) 2014-present Nicolò Ribaudo and other contributors - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - -****************************** - -babel-plugin-polyfill-corejs3 -0.10.6 <https://github.com/babel/babel-polyfills> -MIT License - -Copyright (c) 2014-present Nicolò Ribaudo and other contributors - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - -****************************** - -babel-plugin-polyfill-regenerator -0.6.2 <https://github.com/babel/babel-polyfills> +@babel/plugin-bugfix-firefox-class-in-computed-class-key +7.25.9 <https://github.com/babel/babel> MIT License -Copyright (c) 2014-present Nicolò Ribaudo and other contributors +Copyright (c) 2014-present Sebastian McKenzie and other contributors Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the @@ -4166,8 +3999,8 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/plugin-proposal-async-generator-functions -7.20.7 <https://github.com/babel/babel> +@babel/plugin-bugfix-safari-class-field-initializer-scope +7.25.9 <https://github.com/babel/babel> MIT License Copyright (c) 2014-present Sebastian McKenzie and other contributors @@ -4194,8 +4027,8 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/plugin-proposal-class-properties -7.18.6 <https://github.com/babel/babel> +@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression +7.25.9 <https://github.com/babel/babel> MIT License Copyright (c) 2014-present Sebastian McKenzie and other contributors @@ -4222,7 +4055,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/plugin-proposal-decorators +@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining 7.25.9 <https://github.com/babel/babel> MIT License @@ -4250,8 +4083,8 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/plugin-proposal-export-default-from -7.24.1 <https://github.com/babel/babel> +@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly +7.25.9 <https://github.com/babel/babel> MIT License Copyright (c) 2014-present Sebastian McKenzie and other contributors @@ -4278,11 +4111,38 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/plugin-proposal-export-namespace-from -7.18.9 <https://github.com/babel/babel> +babel-plugin-module-resolver +5.0.2 <https://github.com/tleunen/babel-plugin-module-resolver> +The MIT License (MIT) + +Copyright (c) 2015 Tommy Leunen <tommy.leunen@gmail.com> (tommyleunen.com) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + + +****************************** + +babel-plugin-polyfill-corejs2 +0.4.11 <https://github.com/babel/babel-polyfills> MIT License -Copyright (c) 2014-present Sebastian McKenzie and other contributors +Copyright (c) 2014-present Nicolò Ribaudo and other contributors Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the @@ -4306,11 +4166,11 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/plugin-proposal-nullish-coalescing-operator -7.18.6 <https://github.com/babel/babel> +babel-plugin-polyfill-corejs3 +0.10.6 <https://github.com/babel/babel-polyfills> MIT License -Copyright (c) 2014-present Sebastian McKenzie and other contributors +Copyright (c) 2014-present Nicolò Ribaudo and other contributors Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the @@ -4334,11 +4194,11 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/plugin-proposal-numeric-separator -7.18.6 <https://github.com/babel/babel> +babel-plugin-polyfill-regenerator +0.6.2 <https://github.com/babel/babel-polyfills> MIT License -Copyright (c) 2014-present Sebastian McKenzie and other contributors +Copyright (c) 2014-present Nicolò Ribaudo and other contributors Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the @@ -4362,7 +4222,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/plugin-proposal-object-rest-spread +@babel/plugin-proposal-async-generator-functions 7.20.7 <https://github.com/babel/babel> MIT License @@ -4390,7 +4250,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/plugin-proposal-optional-catch-binding +@babel/plugin-proposal-class-properties 7.18.6 <https://github.com/babel/babel> MIT License @@ -4418,8 +4278,8 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/plugin-proposal-optional-chaining -7.21.0 <https://github.com/babel/babel> +@babel/plugin-proposal-decorators +7.25.9 <https://github.com/babel/babel> MIT License Copyright (c) 2014-present Sebastian McKenzie and other contributors @@ -4446,8 +4306,8 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/plugin-proposal-private-property-in-object -7.21.0-placeholder-for-preset-env.2 <https://github.com/babel/babel-plugin-proposal-private-property-in-object> +@babel/plugin-proposal-export-default-from +7.24.1 <https://github.com/babel/babel> MIT License Copyright (c) 2014-present Sebastian McKenzie and other contributors @@ -4474,35 +4334,8 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -babel-plugin-react-native-web -0.18.12 <https://github.com/necolas/react-native-web> -MIT License - -Copyright (c) Nicolas Gallagher. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - - -****************************** - -@babel/plugin-syntax-async-generators -7.8.4 <https://github.com/babel/babel/tree/master/packages/babel-plugin-syntax-async-generators> +@babel/plugin-proposal-export-namespace-from +7.18.9 <https://github.com/babel/babel> MIT License Copyright (c) 2014-present Sebastian McKenzie and other contributors @@ -4529,8 +4362,8 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/plugin-syntax-class-properties -7.12.13 <https://github.com/babel/babel> +@babel/plugin-proposal-nullish-coalescing-operator +7.18.6 <https://github.com/babel/babel> MIT License Copyright (c) 2014-present Sebastian McKenzie and other contributors @@ -4557,8 +4390,8 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/plugin-syntax-decorators -7.25.9 <https://github.com/babel/babel> +@babel/plugin-proposal-numeric-separator +7.18.6 <https://github.com/babel/babel> MIT License Copyright (c) 2014-present Sebastian McKenzie and other contributors @@ -4585,8 +4418,8 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/plugin-syntax-dynamic-import -7.8.3 <https://github.com/babel/babel/tree/master/packages/babel-plugin-syntax-dynamic-import> +@babel/plugin-proposal-object-rest-spread +7.20.7 <https://github.com/babel/babel> MIT License Copyright (c) 2014-present Sebastian McKenzie and other contributors @@ -4613,8 +4446,8 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/plugin-syntax-export-default-from -7.24.1 <https://github.com/babel/babel> +@babel/plugin-proposal-optional-catch-binding +7.18.6 <https://github.com/babel/babel> MIT License Copyright (c) 2014-present Sebastian McKenzie and other contributors @@ -4641,8 +4474,8 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/plugin-syntax-export-namespace-from -7.8.3 <https://github.com/babel/babel/tree/master/packages/babel-plugin-syntax-export-namespace-from> +@babel/plugin-proposal-optional-chaining +7.21.0 <https://github.com/babel/babel> MIT License Copyright (c) 2014-present Sebastian McKenzie and other contributors @@ -4669,8 +4502,8 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/plugin-syntax-flow -7.24.7 <https://github.com/babel/babel> +@babel/plugin-proposal-private-property-in-object +7.21.0-placeholder-for-preset-env.2 <https://github.com/babel/babel-plugin-proposal-private-property-in-object> MIT License Copyright (c) 2014-present Sebastian McKenzie and other contributors @@ -4697,36 +4530,35 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/plugin-syntax-import-assertions -7.26.0 <https://github.com/babel/babel> +babel-plugin-react-native-web +0.18.12 <https://github.com/necolas/react-native-web> MIT License -Copyright (c) 2014-present Sebastian McKenzie and other contributors +Copyright (c) Nicolas Gallagher. -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. ****************************** -@babel/plugin-syntax-import-attributes -7.26.0 <https://github.com/babel/babel> +@babel/plugin-syntax-async-generators +7.8.4 <https://github.com/babel/babel/tree/master/packages/babel-plugin-syntax-async-generators> MIT License Copyright (c) 2014-present Sebastian McKenzie and other contributors @@ -4753,8 +4585,8 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/plugin-syntax-jsx -7.25.9 <https://github.com/babel/babel> +@babel/plugin-syntax-class-properties +7.12.13 <https://github.com/babel/babel> MIT License Copyright (c) 2014-present Sebastian McKenzie and other contributors @@ -4781,8 +4613,8 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/plugin-syntax-nullish-coalescing-operator -7.8.3 <https://github.com/babel/babel/tree/master/packages/babel-plugin-syntax-nullish-coalescing-operator> +@babel/plugin-syntax-decorators +7.25.9 <https://github.com/babel/babel> MIT License Copyright (c) 2014-present Sebastian McKenzie and other contributors @@ -4809,8 +4641,8 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/plugin-syntax-numeric-separator -7.10.4 <https://github.com/babel/babel> +@babel/plugin-syntax-dynamic-import +7.8.3 <https://github.com/babel/babel/tree/master/packages/babel-plugin-syntax-dynamic-import> MIT License Copyright (c) 2014-present Sebastian McKenzie and other contributors @@ -4837,8 +4669,8 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/plugin-syntax-object-rest-spread -7.8.3 <https://github.com/babel/babel/tree/master/packages/babel-plugin-syntax-object-rest-spread> +@babel/plugin-syntax-export-default-from +7.24.1 <https://github.com/babel/babel> MIT License Copyright (c) 2014-present Sebastian McKenzie and other contributors @@ -4865,8 +4697,8 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/plugin-syntax-optional-catch-binding -7.8.3 <https://github.com/babel/babel/tree/master/packages/babel-plugin-syntax-optional-catch-binding> +@babel/plugin-syntax-export-namespace-from +7.8.3 <https://github.com/babel/babel/tree/master/packages/babel-plugin-syntax-export-namespace-from> MIT License Copyright (c) 2014-present Sebastian McKenzie and other contributors @@ -4893,8 +4725,8 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/plugin-syntax-optional-chaining -7.8.3 <https://github.com/babel/babel/tree/master/packages/babel-plugin-syntax-optional-chaining> +@babel/plugin-syntax-flow +7.24.7 <https://github.com/babel/babel> MIT License Copyright (c) 2014-present Sebastian McKenzie and other contributors @@ -4921,15 +4753,8 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -babel-plugin-syntax-trailing-function-commas -7.0.0-beta.0 <https://github.com/babel/babel/tree/master/packages/babel-plugin-syntax-trailing-function-commas> -license: MIT -authors: undefined - -****************************** - -@babel/plugin-syntax-typescript -7.24.1 <https://github.com/babel/babel> +@babel/plugin-syntax-import-assertions +7.26.0 <https://github.com/babel/babel> MIT License Copyright (c) 2014-present Sebastian McKenzie and other contributors @@ -4956,8 +4781,8 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/plugin-syntax-unicode-sets-regex -7.18.6 <https://github.com/babel/babel> +@babel/plugin-syntax-import-attributes +7.26.0 <https://github.com/babel/babel> MIT License Copyright (c) 2014-present Sebastian McKenzie and other contributors @@ -4984,7 +4809,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/plugin-transform-arrow-functions +@babel/plugin-syntax-jsx 7.25.9 <https://github.com/babel/babel> MIT License @@ -5012,8 +4837,8 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/plugin-transform-async-generator-functions -7.25.9 <https://github.com/babel/babel> +@babel/plugin-syntax-nullish-coalescing-operator +7.8.3 <https://github.com/babel/babel/tree/master/packages/babel-plugin-syntax-nullish-coalescing-operator> MIT License Copyright (c) 2014-present Sebastian McKenzie and other contributors @@ -5040,8 +4865,8 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/plugin-transform-async-to-generator -7.25.9 <https://github.com/babel/babel> +@babel/plugin-syntax-numeric-separator +7.10.4 <https://github.com/babel/babel> MIT License Copyright (c) 2014-present Sebastian McKenzie and other contributors @@ -5068,8 +4893,8 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/plugin-transform-block-scoped-functions -7.26.5 <https://github.com/babel/babel> +@babel/plugin-syntax-object-rest-spread +7.8.3 <https://github.com/babel/babel/tree/master/packages/babel-plugin-syntax-object-rest-spread> MIT License Copyright (c) 2014-present Sebastian McKenzie and other contributors @@ -5096,8 +4921,8 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/plugin-transform-block-scoping -7.25.9 <https://github.com/babel/babel> +@babel/plugin-syntax-optional-catch-binding +7.8.3 <https://github.com/babel/babel/tree/master/packages/babel-plugin-syntax-optional-catch-binding> MIT License Copyright (c) 2014-present Sebastian McKenzie and other contributors @@ -5124,8 +4949,8 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/plugin-transform-classes -7.25.9 <https://github.com/babel/babel> +@babel/plugin-syntax-optional-chaining +7.8.3 <https://github.com/babel/babel/tree/master/packages/babel-plugin-syntax-optional-chaining> MIT License Copyright (c) 2014-present Sebastian McKenzie and other contributors @@ -5152,8 +4977,15 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/plugin-transform-class-properties -7.25.9 <https://github.com/babel/babel> +babel-plugin-syntax-trailing-function-commas +7.0.0-beta.0 <https://github.com/babel/babel/tree/master/packages/babel-plugin-syntax-trailing-function-commas> +license: MIT +authors: undefined + +****************************** + +@babel/plugin-syntax-typescript +7.24.1 <https://github.com/babel/babel> MIT License Copyright (c) 2014-present Sebastian McKenzie and other contributors @@ -5180,8 +5012,8 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/plugin-transform-class-static-block -7.26.0 <https://github.com/babel/babel> +@babel/plugin-syntax-unicode-sets-regex +7.18.6 <https://github.com/babel/babel> MIT License Copyright (c) 2014-present Sebastian McKenzie and other contributors @@ -5208,7 +5040,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/plugin-transform-computed-properties +@babel/plugin-transform-arrow-functions 7.25.9 <https://github.com/babel/babel> MIT License @@ -5236,7 +5068,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/plugin-transform-destructuring +@babel/plugin-transform-async-generator-functions 7.25.9 <https://github.com/babel/babel> MIT License @@ -5264,7 +5096,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/plugin-transform-dotall-regex +@babel/plugin-transform-async-to-generator 7.25.9 <https://github.com/babel/babel> MIT License @@ -5292,7 +5124,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/plugin-transform-duplicate-keys +@babel/plugin-transform-block-scoped-functions 7.25.9 <https://github.com/babel/babel> MIT License @@ -5320,7 +5152,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/plugin-transform-duplicate-named-capturing-groups-regex +@babel/plugin-transform-block-scoping 7.25.9 <https://github.com/babel/babel> MIT License @@ -5348,7 +5180,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/plugin-transform-dynamic-import +@babel/plugin-transform-classes 7.25.9 <https://github.com/babel/babel> MIT License @@ -5376,8 +5208,8 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/plugin-transform-exponentiation-operator -7.26.3 <https://github.com/babel/babel> +@babel/plugin-transform-class-properties +7.25.9 <https://github.com/babel/babel> MIT License Copyright (c) 2014-present Sebastian McKenzie and other contributors @@ -5404,8 +5236,8 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/plugin-transform-export-namespace-from -7.25.9 <https://github.com/babel/babel> +@babel/plugin-transform-class-static-block +7.26.0 <https://github.com/babel/babel> MIT License Copyright (c) 2014-present Sebastian McKenzie and other contributors @@ -5432,35 +5264,8 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -babel-plugin-transform-flow-enums -0.0.2 <https://github.com/facebook/flow> -MIT License - -Copyright (c) Facebook, Inc. and its affiliates. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - - -****************************** - -@babel/plugin-transform-flow-strip-types -7.24.7 <https://github.com/babel/babel> +@babel/plugin-transform-computed-properties +7.25.9 <https://github.com/babel/babel> MIT License Copyright (c) 2014-present Sebastian McKenzie and other contributors @@ -5487,7 +5292,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/plugin-transform-for-of +@babel/plugin-transform-destructuring 7.25.9 <https://github.com/babel/babel> MIT License @@ -5515,7 +5320,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/plugin-transform-function-name +@babel/plugin-transform-dotall-regex 7.25.9 <https://github.com/babel/babel> MIT License @@ -5543,7 +5348,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/plugin-transform-json-strings +@babel/plugin-transform-duplicate-keys 7.25.9 <https://github.com/babel/babel> MIT License @@ -5571,7 +5376,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/plugin-transform-literals +@babel/plugin-transform-duplicate-named-capturing-groups-regex 7.25.9 <https://github.com/babel/babel> MIT License @@ -5599,7 +5404,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/plugin-transform-logical-assignment-operators +@babel/plugin-transform-dynamic-import 7.25.9 <https://github.com/babel/babel> MIT License @@ -5627,7 +5432,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/plugin-transform-member-expression-literals +@babel/plugin-transform-exponentiation-operator 7.25.9 <https://github.com/babel/babel> MIT License @@ -5655,7 +5460,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/plugin-transform-modules-amd +@babel/plugin-transform-export-namespace-from 7.25.9 <https://github.com/babel/babel> MIT License @@ -5683,8 +5488,35 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/plugin-transform-modules-commonjs -7.26.3 <https://github.com/babel/babel> +babel-plugin-transform-flow-enums +0.0.2 <https://github.com/facebook/flow> +MIT License + +Copyright (c) Facebook, Inc. and its affiliates. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + +****************************** + +@babel/plugin-transform-flow-strip-types +7.24.7 <https://github.com/babel/babel> MIT License Copyright (c) 2014-present Sebastian McKenzie and other contributors @@ -5711,7 +5543,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/plugin-transform-modules-systemjs +@babel/plugin-transform-for-of 7.25.9 <https://github.com/babel/babel> MIT License @@ -5739,7 +5571,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/plugin-transform-modules-umd +@babel/plugin-transform-function-name 7.25.9 <https://github.com/babel/babel> MIT License @@ -5767,7 +5599,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/plugin-transform-named-capturing-groups-regex +@babel/plugin-transform-json-strings 7.25.9 <https://github.com/babel/babel> MIT License @@ -5795,7 +5627,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/plugin-transform-new-target +@babel/plugin-transform-literals 7.25.9 <https://github.com/babel/babel> MIT License @@ -5823,8 +5655,8 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/plugin-transform-nullish-coalescing-operator -7.26.6 <https://github.com/babel/babel> +@babel/plugin-transform-logical-assignment-operators +7.25.9 <https://github.com/babel/babel> MIT License Copyright (c) 2014-present Sebastian McKenzie and other contributors @@ -5851,7 +5683,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/plugin-transform-numeric-separator +@babel/plugin-transform-member-expression-literals 7.25.9 <https://github.com/babel/babel> MIT License @@ -5879,35 +5711,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/plugin-transform-object-assign -7.24.1 <https://github.com/babel/babel> -The MIT License (MIT) - -Copyright (c) 2015 Jed Watson - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - - - -****************************** - -@babel/plugin-transform-object-rest-spread +@babel/plugin-transform-modules-amd 7.25.9 <https://github.com/babel/babel> MIT License @@ -5935,7 +5739,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/plugin-transform-object-super +@babel/plugin-transform-modules-commonjs 7.25.9 <https://github.com/babel/babel> MIT License @@ -5963,7 +5767,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/plugin-transform-optional-catch-binding +@babel/plugin-transform-modules-systemjs 7.25.9 <https://github.com/babel/babel> MIT License @@ -5991,7 +5795,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/plugin-transform-optional-chaining +@babel/plugin-transform-modules-umd 7.25.9 <https://github.com/babel/babel> MIT License @@ -6019,7 +5823,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/plugin-transform-parameters +@babel/plugin-transform-named-capturing-groups-regex 7.25.9 <https://github.com/babel/babel> MIT License @@ -6047,7 +5851,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/plugin-transform-private-methods +@babel/plugin-transform-new-target 7.25.9 <https://github.com/babel/babel> MIT License @@ -6075,7 +5879,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/plugin-transform-private-property-in-object +@babel/plugin-transform-nullish-coalescing-operator 7.25.9 <https://github.com/babel/babel> MIT License @@ -6103,7 +5907,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/plugin-transform-property-literals +@babel/plugin-transform-numeric-separator 7.25.9 <https://github.com/babel/babel> MIT License @@ -6131,8 +5935,36 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/plugin-transform-react-display-name -7.24.7 <https://github.com/babel/babel> +@babel/plugin-transform-object-assign +7.24.1 <https://github.com/babel/babel> +The MIT License (MIT) + +Copyright (c) 2015 Jed Watson + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + + +****************************** + +@babel/plugin-transform-object-rest-spread +7.25.9 <https://github.com/babel/babel> MIT License Copyright (c) 2014-present Sebastian McKenzie and other contributors @@ -6159,7 +5991,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/plugin-transform-react-jsx +@babel/plugin-transform-object-super 7.25.9 <https://github.com/babel/babel> MIT License @@ -6187,8 +6019,8 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/plugin-transform-react-jsx-self -7.24.5 <https://github.com/babel/babel> +@babel/plugin-transform-optional-catch-binding +7.25.9 <https://github.com/babel/babel> MIT License Copyright (c) 2014-present Sebastian McKenzie and other contributors @@ -6215,8 +6047,8 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/plugin-transform-react-jsx-source -7.24.1 <https://github.com/babel/babel> +@babel/plugin-transform-optional-chaining +7.25.9 <https://github.com/babel/babel> MIT License Copyright (c) 2014-present Sebastian McKenzie and other contributors @@ -6243,7 +6075,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/plugin-transform-regenerator +@babel/plugin-transform-parameters 7.25.9 <https://github.com/babel/babel> MIT License @@ -6271,8 +6103,8 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/plugin-transform-regexp-modifiers -7.26.0 <https://github.com/babel/babel> +@babel/plugin-transform-private-methods +7.25.9 <https://github.com/babel/babel> MIT License Copyright (c) 2014-present Sebastian McKenzie and other contributors @@ -6299,7 +6131,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/plugin-transform-reserved-words +@babel/plugin-transform-private-property-in-object 7.25.9 <https://github.com/babel/babel> MIT License @@ -6327,8 +6159,8 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/plugin-transform-runtime -7.24.3 <https://github.com/babel/babel> +@babel/plugin-transform-property-literals +7.25.9 <https://github.com/babel/babel> MIT License Copyright (c) 2014-present Sebastian McKenzie and other contributors @@ -6355,8 +6187,8 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/plugin-transform-shorthand-properties -7.25.9 <https://github.com/babel/babel> +@babel/plugin-transform-react-display-name +7.24.7 <https://github.com/babel/babel> MIT License Copyright (c) 2014-present Sebastian McKenzie and other contributors @@ -6383,7 +6215,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/plugin-transform-spread +@babel/plugin-transform-react-jsx 7.25.9 <https://github.com/babel/babel> MIT License @@ -6411,8 +6243,8 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/plugin-transform-sticky-regex -7.25.9 <https://github.com/babel/babel> +@babel/plugin-transform-react-jsx-self +7.24.5 <https://github.com/babel/babel> MIT License Copyright (c) 2014-present Sebastian McKenzie and other contributors @@ -6439,8 +6271,8 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/plugin-transform-template-literals -7.25.9 <https://github.com/babel/babel> +@babel/plugin-transform-react-jsx-source +7.24.1 <https://github.com/babel/babel> MIT License Copyright (c) 2014-present Sebastian McKenzie and other contributors @@ -6467,7 +6299,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/plugin-transform-typeof-symbol +@babel/plugin-transform-regenerator 7.25.9 <https://github.com/babel/babel> MIT License @@ -6495,8 +6327,8 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/plugin-transform-typescript -7.24.5 <https://github.com/babel/babel> +@babel/plugin-transform-regexp-modifiers +7.26.0 <https://github.com/babel/babel> MIT License Copyright (c) 2014-present Sebastian McKenzie and other contributors @@ -6523,7 +6355,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/plugin-transform-unicode-escapes +@babel/plugin-transform-reserved-words 7.25.9 <https://github.com/babel/babel> MIT License @@ -6551,8 +6383,8 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/plugin-transform-unicode-property-regex -7.25.9 <https://github.com/babel/babel> +@babel/plugin-transform-runtime +7.24.3 <https://github.com/babel/babel> MIT License Copyright (c) 2014-present Sebastian McKenzie and other contributors @@ -6579,7 +6411,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/plugin-transform-unicode-regex +@babel/plugin-transform-shorthand-properties 7.25.9 <https://github.com/babel/babel> MIT License @@ -6607,7 +6439,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/plugin-transform-unicode-sets-regex +@babel/plugin-transform-spread 7.25.9 <https://github.com/babel/babel> MIT License @@ -6635,8 +6467,8 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/preset-env -7.26.0 <https://github.com/babel/babel> +@babel/plugin-transform-sticky-regex +7.25.9 <https://github.com/babel/babel> MIT License Copyright (c) 2014-present Sebastian McKenzie and other contributors @@ -6663,42 +6495,266 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -babel-preset-expo -9.5.2 <https://github.com/expo/expo> -license: MIT -authors: Expo <support@expo.dev> - -****************************** - -babel-preset-fbjs -3.4.0 <https://github.com/facebook/fbjs> -MIT License - -Copyright (c) 2013-present, Facebook, Inc. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - - -****************************** - -@babel/preset-flow -7.24.1 <https://github.com/babel/babel> +@babel/plugin-transform-template-literals +7.25.9 <https://github.com/babel/babel> +MIT License + +Copyright (c) 2014-present Sebastian McKenzie and other contributors + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +****************************** + +@babel/plugin-transform-typeof-symbol +7.25.9 <https://github.com/babel/babel> +MIT License + +Copyright (c) 2014-present Sebastian McKenzie and other contributors + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +****************************** + +@babel/plugin-transform-typescript +7.24.5 <https://github.com/babel/babel> +MIT License + +Copyright (c) 2014-present Sebastian McKenzie and other contributors + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +****************************** + +@babel/plugin-transform-unicode-escapes +7.25.9 <https://github.com/babel/babel> +MIT License + +Copyright (c) 2014-present Sebastian McKenzie and other contributors + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +****************************** + +@babel/plugin-transform-unicode-property-regex +7.25.9 <https://github.com/babel/babel> +MIT License + +Copyright (c) 2014-present Sebastian McKenzie and other contributors + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +****************************** + +@babel/plugin-transform-unicode-regex +7.25.9 <https://github.com/babel/babel> +MIT License + +Copyright (c) 2014-present Sebastian McKenzie and other contributors + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +****************************** + +@babel/plugin-transform-unicode-sets-regex +7.25.9 <https://github.com/babel/babel> +MIT License + +Copyright (c) 2014-present Sebastian McKenzie and other contributors + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +****************************** + +@babel/preset-env +7.26.0 <https://github.com/babel/babel> +MIT License + +Copyright (c) 2014-present Sebastian McKenzie and other contributors + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +****************************** + +babel-preset-expo +9.5.2 <https://github.com/expo/expo> +license: MIT +authors: Expo <support@expo.dev> + +****************************** + +babel-preset-fbjs +3.4.0 <https://github.com/facebook/fbjs> +MIT License + +Copyright (c) 2013-present, Facebook, Inc. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + +****************************** + +@babel/preset-flow +7.24.1 <https://github.com/babel/babel> MIT License Copyright (c) 2014-present Sebastian McKenzie and other contributors @@ -6865,7 +6921,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** @babel/traverse -7.26.5 <https://github.com/babel/babel> +7.25.9 <https://github.com/babel/babel> MIT License Copyright (c) 2014-present Sebastian McKenzie and other contributors @@ -6893,7 +6949,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** @babel/types -7.26.5 <https://github.com/babel/babel> +7.26.0 <https://github.com/babel/babel> MIT License Copyright (c) 2014-present Sebastian McKenzie and other contributors @@ -7232,6 +7288,34 @@ bech32 2.0.0 <https://github.com/bitcoinjs/bech32> MIT License +Copyright (c) 2017 Pieter Wuille +Copyright (c) 2018 bitcoinjs contributors + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + +****************************** + +better-opn +3.0.2 <https://github.com/ExiaSR/better-opn> +Copyright 2018 Michael Lin <linzichunzf@hotmail.com> + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. @@ -7243,30 +7327,30 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI big-integer 1.6.51 <https://github.com/peterolson/BigInteger.js> -This is free and unencumbered software released into the public domain. - -Anyone is free to copy, modify, publish, use, compile, sell, or -distribute this software, either in source code form or as a compiled -binary, for any purpose, commercial or non-commercial, and by any -means. - -In jurisdictions that recognize copyright laws, the author or authors -of this software dedicate any and all copyright interest in the -software to the public domain. We make this dedication for the benefit -of the public at large and to the detriment of our heirs and -successors. We intend this dedication to be an overt act of -relinquishment in perpetuity of all present and future rights to this -software under copyright law. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR -OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, -ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -OTHER DEALINGS IN THE SOFTWARE. - -For more information, please refer to <http://unlicense.org> +This is free and unencumbered software released into the public domain. + +Anyone is free to copy, modify, publish, use, compile, sell, or +distribute this software, either in source code form or as a compiled +binary, for any purpose, commercial or non-commercial, and by any +means. + +In jurisdictions that recognize copyright laws, the author or authors +of this software dedicate any and all copyright interest in the +software to the public domain. We make this dedication for the benefit +of the public at large and to the detriment of our heirs and +successors. We intend this dedication to be an overt act of +relinquishment in perpetuity of all present and future rights to this +software under copyright law. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR +OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +OTHER DEALINGS IN THE SOFTWARE. + +For more information, please refer to <http://unlicense.org> ****************************** @@ -8261,7 +8345,7 @@ IN THE SOFTWARE. ****************************** browserslist -4.24.4 <https://github.com/browserslist/browserslist> +4.24.2 <https://github.com/browserslist/browserslist> The MIT License (MIT) Copyright 2014 Andrey Sitnik <andrey@sitnik.ru> and other contributors @@ -8716,7 +8800,7 @@ SOFTWARE. ****************************** call-bind -1.0.8 <https://github.com/ljharb/call-bind> +1.0.7 <https://github.com/ljharb/call-bind> MIT License Copyright (c) 2020 Jordan Harband @@ -8740,60 +8824,6 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -****************************** - -call-bind-apply-helpers -1.0.1 <https://github.com/ljharb/call-bind-apply-helpers> -MIT License - -Copyright (c) 2024 Jordan Harband - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - - -****************************** - -call-bound -1.0.3 <https://github.com/ljharb/call-bound> -MIT License - -Copyright (c) 2024 Jordan Harband - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - - ****************************** caller-callsite @@ -8932,7 +8962,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** caniuse-lite -1.0.30001695 <https://github.com/browserslist/caniuse-lite> +1.0.30001679 <https://github.com/browserslist/caniuse-lite> Attribution 4.0 International ======================================================================= @@ -9384,6 +9414,21 @@ The above copyright notice and this permission notice shall be included in all c THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +****************************** + +chalk +5.4.1 <https://github.com/chalk/chalk> +MIT License + +Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (https://sindresorhus.com) + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + ****************************** character-entities-html4 @@ -10163,26 +10208,26 @@ THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI color-name 1.1.3 <https://github.com/dfcreative/color-name> -The MIT License (MIT) -Copyright (c) 2015 Dmitry Ivanov - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - +The MIT License (MIT) +Copyright (c) 2015 Dmitry Ivanov + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** color-name 1.1.4 <https://github.com/colorjs/color-name> -The MIT License (MIT) -Copyright (c) 2015 Dmitry Ivanov - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - +The MIT License (MIT) +Copyright (c) 2015 Dmitry Ivanov + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** @@ -10290,6 +10335,34 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +****************************** + +commander +12.1.0 <https://github.com/tj/commander.js> +(The MIT License) + +Copyright (c) 2011 TJ Holowaychuk <tj@vision-media.ca> + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +'Software'), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + ****************************** commander @@ -10746,7 +10819,7 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** @consensys/on-ramp-sdk -1.28.7 <> +2.0.5 <> Copyright ConsenSys Software Inc. 2020. All rights reserved. You acknowledge and agree that ConsenSys Software Inc. (“ConsenSys”) (or ConsenSys’s licensors) own all legal right, title and interest in and to the work, software, application, source code, documentation and any other documents in this repository (collectively, the “Program”), including any intellectual property rights which subsist in the Program (whether those rights happen to be registered or not, and wherever in the world those rights may exist), whether in source code or any other form. @@ -10866,87 +10939,6 @@ TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -****************************** - -contentful -10.12.10 <https://github.com/contentful/contentful.js> -The MIT License (MIT) - -Copyright (c) 2016 Contentful - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - - -****************************** - -@contentful/content-source-maps -0.6.1 <https://github.com/contentful/live-preview> -MIT License - -Copyright (c) 2023 Contentful - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - - -****************************** - -contentful-resolve-response -1.8.1 <https://github.com/contentful/contentful-resolve-response> -MIT License - -Copyright (c) 2018 Contentful - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - - ****************************** @contentful/rich-text-html-renderer @@ -11003,116 +10995,89 @@ SOFTWARE. ****************************** -contentful-sdk-core -8.1.2 <https://github.com/contentful/contentful-sdk-core> -The MIT License (MIT) +content-hash +2.5.2 <https://github.com/pldespaigne/content-hash> +ISC License + +Copyright (c) 2018, Pierre-Louis Despaigne + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -Copyright (c) 2016 Contentful +****************************** -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: +content-type +1.0.5 <https://github.com/jshttp/content-type> +(The MIT License) -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. +Copyright (c) 2015 Douglas Christopher Wilson -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +'Software'), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -content-hash -2.5.2 <https://github.com/pldespaigne/content-hash> -ISC License +convert-source-map +2.0.0 <https://github.com/thlorenz/convert-source-map> +Copyright 2013 Thorsten Lorenz. +All rights reserved. -Copyright (c) 2018, Pierre-Louis Despaigne +Permission is hereby granted, free of charge, to any person +obtaining a copy of this software and associated documentation +files (the "Software"), to deal in the Software without +restriction, including without limitation the rights to use, +copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the +Software is furnished to do so, subject to the following +conditions: -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted, provided that the above -copyright notice and this permission notice appear in all copies. +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES +OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT +HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +OTHER DEALINGS IN THE SOFTWARE. -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES -WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR -ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN -ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF -OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ****************************** -content-type -1.0.5 <https://github.com/jshttp/content-type> +cookie +0.7.1 <https://github.com/jshttp/cookie> (The MIT License) -Copyright (c) 2015 Douglas Christopher Wilson - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -'Software'), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - -****************************** - -convert-source-map -2.0.0 <https://github.com/thlorenz/convert-source-map> -Copyright 2013 Thorsten Lorenz. -All rights reserved. - -Permission is hereby granted, free of charge, to any person -obtaining a copy of this software and associated documentation -files (the "Software"), to deal in the Software without -restriction, including without limitation the rights to use, -copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the -Software is furnished to do so, subject to the following -conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -OTHER DEALINGS IN THE SOFTWARE. - - -****************************** - -cookie -0.7.1 <https://github.com/jshttp/cookie> -(The MIT License) - -Copyright (c) 2012-2014 Roman Shtylman <shtylman@gmail.com> -Copyright (c) 2015 Douglas Christopher Wilson <doug@somethingdoug.com> +Copyright (c) 2012-2014 Roman Shtylman <shtylman@gmail.com> +Copyright (c) 2015 Douglas Christopher Wilson <doug@somethingdoug.com> Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the @@ -11175,8 +11140,8 @@ authors: TJ Holowaychuk <tj@learnboost.com> ****************************** core-js-compat -3.40.0 <https://github.com/zloirock/core-js> -Copyright (c) 2014-2025 Denis Pushkarev +3.39.0 <https://github.com/zloirock/core-js> +Copyright (c) 2014-2024 Denis Pushkarev Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal @@ -11759,7 +11724,7 @@ SOFTWARE. ****************************** cross-spawn -6.0.5 <https://github.com/moxystudio/node-cross-spawn> +6.0.6 <https://github.com/moxystudio/node-cross-spawn> The MIT License (MIT) Copyright (c) 2018 Made With MOXY Lda <hello@moxy.studio> @@ -11786,7 +11751,7 @@ THE SOFTWARE. ****************************** cross-spawn -7.0.5 <https://github.com/moxystudio/node-cross-spawn> +7.0.6 <https://github.com/moxystudio/node-cross-spawn> The MIT License (MIT) Copyright (c) 2018 Made With MOXY Lda <hello@moxy.studio> @@ -12527,7 +12492,7 @@ authors: Nathan Rajlich <nathan@tootallnate.net> (http://n8.io/) ****************************** data-view-buffer -1.0.2 <https://github.com/inspect-js/data-view-buffer> +1.0.1 <https://github.com/ljharb/data-view-buffer> MIT License Copyright (c) 2023 Jordan Harband @@ -12554,7 +12519,7 @@ SOFTWARE. ****************************** data-view-byte-length -1.0.2 <https://github.com/inspect-js/data-view-byte-length> +1.0.1 <https://github.com/ljharb/data-view-byte-length> MIT License Copyright (c) 2024 Jordan Harband @@ -12581,7 +12546,7 @@ SOFTWARE. ****************************** data-view-byte-offset -1.0.1 <https://github.com/inspect-js/data-view-byte-offset> +1.0.0 <https://github.com/ljharb/data-view-byte-offset> MIT License Copyright (c) 2024 Jordan Harband @@ -14623,33 +14588,6 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -****************************** - -dunder-proto -1.0.1 <https://github.com/es-shims/dunder-proto> -MIT License - -Copyright (c) 2024 ECMAScript Shims - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - - ****************************** duplexer @@ -14829,7 +14767,7 @@ SOFTWARE. ****************************** electron-to-chromium -1.5.83 <https://github.com/kilian/electron-to-chromium> +1.5.55 <https://github.com/kilian/electron-to-chromium> Copyright 2018 Kilian Valkhof Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies. @@ -14840,21 +14778,7 @@ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH RE ****************************** elliptic -6.5.4 <https://github.com/indutny/elliptic> -license: MIT -authors: Fedor Indutny <fedor@indutny.com> - -****************************** - -elliptic -6.5.7 <https://github.com/indutny/elliptic> -license: MIT -authors: Fedor Indutny <fedor@indutny.com> - -****************************** - -elliptic -6.6.0 <https://github.com/indutny/elliptic> +6.6.1 <https://github.com/indutny/elliptic> license: MIT authors: Fedor Indutny <fedor@indutny.com> @@ -15585,25 +15509,25 @@ SOFTWARE. eol 0.9.1 <https://github.com/ryanve/eol> -MIT License - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. +MIT License + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. ****************************** @@ -15959,7 +15883,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** es-abstract -1.23.9 <https://github.com/ljharb/es-abstract> +1.23.3 <https://github.com/ljharb/es-abstract> The MIT License (MIT) Copyright (C) 2015 Jordan Harband @@ -16115,7 +16039,7 @@ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ****************************** es-define-property -1.0.1 <https://github.com/ljharb/es-define-property> +1.0.0 <https://github.com/ljharb/es-define-property> MIT License Copyright (c) 2024 Jordan Harband @@ -17060,7 +16984,7 @@ authors: Yusuke Suzuki <utatane.tea@gmail.com> ****************************** es-set-tostringtag -2.1.0 <https://github.com/es-shims/es-set-tostringtag> +2.0.3 <https://github.com/es-shims/es-set-tostringtag> MIT License Copyright (c) 2022 ECMAScript Shims @@ -17114,7 +17038,7 @@ SOFTWARE. ****************************** es-to-primitive -1.3.0 <https://github.com/ljharb/es-to-primitive> +1.2.1 <https://github.com/ljharb/es-to-primitive> The MIT License (MIT) Copyright (c) 2015 Jordan Harband @@ -17242,32 +17166,6 @@ TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -****************************** - -eth-block-tracker -7.1.0 <https://github.com/MetaMask/eth-block-tracker> -MIT License - -Copyright (c) 2018 MetaMask - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - - ****************************** eth-ens-namehash @@ -17317,7 +17215,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** ethereum-cryptography -2.1.3 <https://github.com/ethereum/js-ethereum-cryptography> +2.2.1 <https://github.com/ethereum/js-ethereum-cryptography> The MIT License (MIT) Copyright (c) 2021 Patricio Palladino, Paul Miller, ethereum-cryptography contributors @@ -17406,7 +17304,7 @@ SOFTWARE. ****************************** @ethereumjs/common -4.3.0 <https://github.com/ethereumjs/ethereumjs-monorepo> +4.4.0 <https://github.com/ethereumjs/ethereumjs-monorepo> The MIT License (MIT) Copyright (c) 2015 @@ -18571,7 +18469,7 @@ Exhibit B - "Incompatible With Secondary Licenses" Notice ****************************** @ethereumjs/tx -5.3.0 <https://github.com/ethereumjs/ethereumjs-monorepo> +5.4.0 <https://github.com/ethereumjs/ethereumjs-monorepo> Mozilla Public License Version 2.0 ================================== @@ -19329,7 +19227,7 @@ Exhibit B - "Incompatible With Secondary Licenses" Notice ****************************** @ethereumjs/util -9.0.3 <https://github.com/ethereumjs/ethereumjs-monorepo> +9.1.0 <https://github.com/ethereumjs/ethereumjs-monorepo> Mozilla Public License Version 2.0 ================================== @@ -22021,65 +21919,6 @@ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -****************************** - -eth-phishing-detect -1.2.0 <https://github.com/MetaMask/eth-phishing-detect> -# DON'T BE A DICK PUBLIC LICENSE - -> Version 1.1, December 2016 - -> Copyright (C) 2018 kumavis - -Everyone is permitted to copy and distribute verbatim or modified -copies of this license document. - -> DON'T BE A DICK PUBLIC LICENSE -> TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - -1. Do whatever you like with the original work, just don't be a dick. - - Being a dick includes - but is not limited to - the following instances: - - 1a. Outright copyright infringement - Don't just copy this and change the name. - 1b. Selling the unmodified original with no work done what-so-ever, that's REALLY being a dick. - 1c. Modifying the original work to contain hidden harmful content. That would make you a PROPER dick. - -2. If you become rich through modifications, related works/services, or supporting the original work, -share the love. Only a dick would make loads off this work and not buy the original work's -creator(s) a pint. - -3. Code is provided with no warranty. Using somebody else's code and bitching when it goes wrong makes -you a DONKEY dick. Fix the problem yourself. A non-dick would submit the fix back. - - -****************************** - -eth-rpc-errors -4.0.3 <https://github.com/MetaMask/eth-rpc-errors> -MIT License - -Copyright (c) 2019 MetaMask - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - - ****************************** eth-url-parser @@ -22513,6 +22352,34 @@ SOFTWARE. +****************************** + +@expo/config +8.3.1 <https://github.com/expo/expo> +The MIT License (MIT) + +Copyright (c) 2015-present 650 Industries, Inc. (aka Expo) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + + ****************************** @expo/config-plugins @@ -22541,6 +22408,34 @@ SOFTWARE. +****************************** + +@expo/config-plugins +7.5.0 <https://github.com/expo/expo> +The MIT License (MIT) + +Copyright (c) 2015-present 650 Industries, Inc. (aka Expo) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + + ****************************** @expo/config-types @@ -22569,6 +22464,34 @@ SOFTWARE. +****************************** + +@expo/config-types +50.0.1 <https://github.com/expo/expo> +The MIT License (MIT) + +Copyright (c) 2020-present 650 Industries, Inc. (aka Expo) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + + ****************************** expo-constants @@ -22586,35 +22509,28 @@ authors: Dave Wasmer ****************************** expo-dev-client -2.4.13 <https://github.com/expo/expo> +3.1.0 <https://github.com/expo/expo> license: MIT authors: 650 Industries, Inc. ****************************** expo-dev-launcher -2.4.15 <https://github.com/expo/expo> -license: MIT -authors: 650 Industries, Inc. - -****************************** - -expo-dev-menu -3.2.3 <https://github.com/expo/expo> +3.1.0 <https://github.com/expo/expo> license: MIT authors: 650 Industries, Inc. ****************************** expo-dev-menu -3.2.4 <https://github.com/expo/expo> +4.1.0 <https://github.com/expo/expo> license: MIT authors: 650 Industries, Inc. ****************************** expo-dev-menu-interface -1.3.0 <https://github.com/expo/expo> +1.4.0 <https://github.com/expo/expo> license: MIT authors: 650 Industries, Inc. @@ -22679,6 +22595,34 @@ expo-file-system license: MIT authors: 650 Industries, Inc. +****************************** + +@expo/fingerprint +0.2.0 <https://github.com/expo/expo> +The MIT License (MIT) + +Copyright (c) 2015-present 650 Industries, Inc. (aka Expo) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + + ****************************** expo-font @@ -22772,7 +22716,7 @@ SOFTWARE. ****************************** expo-json-utils -0.7.1 <https://github.com/expo/expo> +0.9.0 <https://github.com/expo/expo> license: MIT authors: 650 Industries, Inc. @@ -22786,7 +22730,7 @@ authors: 650 Industries, Inc. ****************************** expo-manifests -0.7.2 <https://github.com/expo/expo> +0.9.0 <https://github.com/expo/expo> license: MIT authors: 650 Industries, Inc. @@ -22862,7 +22806,7 @@ SOFTWARE. ****************************** @expo/osascript -2.1.5 <https://github.com/expo/expo> +2.1.3 <https://github.com/expo/expo> The MIT License (MIT) Copyright (c) 2015-present 650 Industries, Inc. (aka Expo) @@ -23043,7 +22987,7 @@ SOFTWARE. ****************************** expo-updates-interface -0.10.1 <https://github.com/expo/expo> +0.12.0 <https://github.com/expo/expo> license: MIT authors: 650 Industries, Inc. @@ -23078,14 +23022,14 @@ SOFTWARE. ****************************** @expo/xcpretty -4.3.2 <https://github.com/expo/expo-cli> +4.3.1 <https://github.com/expo/expo-cli> license: BSD-3-Clause authors: Evan Bacon <bacon@expo.io> (https://github.com/evanbacon) ****************************** express -4.21.1 <https://github.com/expressjs/express> +4.21.2 <https://github.com/expressjs/express> (The MIT License) Copyright (c) 2009-2014 TJ Holowaychuk <tj@vision-media.ca> @@ -23161,33 +23105,6 @@ fast-base64-decode license: MIT authors: undefined -****************************** - -fast-copy -2.1.7 <https://github.com/planttheidea/fast-copy> -MIT License - -Copyright (c) 2018 Tony Quetano - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - - ****************************** fast-deep-equal @@ -23271,7 +23188,7 @@ THE SOFTWARE. ****************************** fast-glob -3.3.3 <https://github.com/mrmlnc/fast-glob> +3.3.2 <https://github.com/mrmlnc/fast-glob> The MIT License (MIT) Copyright (c) Denis Malinochkin @@ -23374,37 +23291,6 @@ IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -****************************** - -fast-levenshtein -2.0.6 <https://github.com/hiddentao/fast-levenshtein> -(MIT License) - -Copyright (c) 2013 [Ramesh Nair](http://www.hiddentao.com/) - -Permission is hereby granted, free of charge, to any person -obtaining a copy of this software and associated documentation -files (the "Software"), to deal in the Software without -restriction, including without limitation the rights to use, -copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the -Software is furnished to do so, subject to the following -conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -OTHER DEALINGS IN THE SOFTWARE. - - - ****************************** fastq @@ -23770,37 +23656,37 @@ specific language governing permissions and limitations under the License. fbemitter 3.0.0 <https://github.com/facebook/emitter> -BSD License - -For emitter software - -Copyright (c) 2013-present, Facebook, Inc. -All rights reserved. - -Redistribution and use in source and binary forms, with or without modification, -are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - - * Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - - * Neither the name Facebook nor the names of its contributors may be used to - endorse or promote products derived from this software without specific - prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR -ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +BSD License + +For emitter software + +Copyright (c) 2013-present, Facebook, Inc. +All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + + * Neither the name Facebook nor the names of its contributors may be used to + endorse or promote products derived from this software without specific + prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ****************************** @@ -24358,21 +24244,21 @@ authors: Firebase <firebase-support@google.com> (https://firebase.google.com/) ****************************** firebase -10.12.3 <https://github.com/firebase/firebase-js-sdk> +11.3.1 <https://github.com/firebase/firebase-js-sdk> license: Apache-2.0 authors: Firebase <firebase-support@google.com> (https://firebase.google.com/) ****************************** @firebase/analytics -0.10.4 <https://github.com/firebase/firebase-js-sdk> +0.10.11 <https://github.com/firebase/firebase-js-sdk> license: Apache-2.0 authors: Firebase <firebase-support@google.com> (https://firebase.google.com/) ****************************** @firebase/analytics -0.10.5 <https://github.com/firebase/firebase-js-sdk> +0.10.4 <https://github.com/firebase/firebase-js-sdk> license: Apache-2.0 authors: Firebase <firebase-support@google.com> (https://firebase.google.com/) @@ -24386,7 +24272,7 @@ authors: Firebase <firebase-support@google.com> (https://firebase.google.com/) ****************************** @firebase/analytics-compat -0.2.11 <https://github.com/firebase/firebase-js-sdk> +0.2.17 <https://github.com/firebase/firebase-js-sdk> license: Apache-2.0 authors: Firebase <firebase-support@google.com> (https://firebase.google.com/) @@ -24399,6 +24285,13 @@ authors: Firebase <firebase-support@google.com> (https://firebase.google.com/) ****************************** +@firebase/analytics-types +0.8.3 <https://github.com/firebase/firebase-js-sdk> +license: Apache-2.0 +authors: Firebase <firebase-support@google.com> (https://firebase.google.com/) + +****************************** + @firebase/app 0.10.5 <https://github.com/firebase/firebase-js-sdk> license: Apache-2.0 @@ -24407,21 +24300,21 @@ authors: Firebase <firebase-support@google.com> (https://firebase.google.com/) ****************************** @firebase/app -0.10.6 <https://github.com/firebase/firebase-js-sdk> +0.11.1 <https://github.com/firebase/firebase-js-sdk> license: Apache-2.0 authors: Firebase <firebase-support@google.com> (https://firebase.google.com/) ****************************** @firebase/app-check -0.8.4 <https://github.com/firebase/firebase-js-sdk> +0.8.11 <https://github.com/firebase/firebase-js-sdk> license: Apache-2.0 authors: Firebase <firebase-support@google.com> (https://firebase.google.com/) ****************************** @firebase/app-check -0.8.5 <https://github.com/firebase/firebase-js-sdk> +0.8.4 <https://github.com/firebase/firebase-js-sdk> license: Apache-2.0 authors: Firebase <firebase-support@google.com> (https://firebase.google.com/) @@ -24435,7 +24328,7 @@ authors: Firebase <firebase-support@google.com> (https://firebase.google.com/) ****************************** @firebase/app-check-compat -0.3.12 <https://github.com/firebase/firebase-js-sdk> +0.3.18 <https://github.com/firebase/firebase-js-sdk> license: Apache-2.0 authors: Firebase <firebase-support@google.com> (https://firebase.google.com/) @@ -24448,6 +24341,13 @@ authors: Firebase <firebase-support@google.com> (https://firebase.google.com/) ****************************** +@firebase/app-check-interop-types +0.3.3 <https://github.com/firebase/firebase-js-sdk> +license: Apache-2.0 +authors: Firebase <firebase-support@google.com> (https://firebase.google.com/) + +****************************** + @firebase/app-check-types 0.5.2 <https://github.com/firebase/firebase-js-sdk> license: Apache-2.0 @@ -24455,6 +24355,13 @@ authors: Firebase <firebase-support@google.com> (https://firebase.google.com/) ****************************** +@firebase/app-check-types +0.5.3 <https://github.com/firebase/firebase-js-sdk> +license: Apache-2.0 +authors: Firebase <firebase-support@google.com> (https://firebase.google.com/) + +****************************** + @firebase/app-compat 0.2.35 <https://github.com/firebase/firebase-js-sdk> license: Apache-2.0 @@ -24463,7 +24370,7 @@ authors: Firebase <firebase-support@google.com> (https://firebase.google.com/) ****************************** @firebase/app-compat -0.2.36 <https://github.com/firebase/firebase-js-sdk> +0.2.50 <https://github.com/firebase/firebase-js-sdk> license: Apache-2.0 authors: Firebase <firebase-support@google.com> (https://firebase.google.com/) @@ -24476,6 +24383,13 @@ authors: Firebase <firebase-support@google.com> (https://firebase.google.com/) ****************************** +@firebase/app-types +0.9.3 <https://github.com/firebase/firebase-js-sdk> +license: Apache-2.0 +authors: Firebase <firebase-support@google.com> (https://firebase.google.com/) + +****************************** + @firebase/auth 1.7.4 <https://github.com/firebase/firebase-js-sdk> license: Apache-2.0 @@ -24484,14 +24398,14 @@ authors: Firebase <firebase-support@google.com> (https://firebase.google.com/) ****************************** @firebase/auth -1.7.5 <https://github.com/firebase/firebase-js-sdk> +1.9.0 <https://github.com/firebase/firebase-js-sdk> license: Apache-2.0 authors: Firebase <firebase-support@google.com> (https://firebase.google.com/) ****************************** @firebase/auth-compat -0.5.10 <https://github.com/firebase/firebase-js-sdk> +0.5.18 <https://github.com/firebase/firebase-js-sdk> license: Apache-2.0 authors: Firebase <firebase-support@google.com> (https://firebase.google.com/) @@ -24511,6 +24425,13 @@ authors: Firebase <firebase-support@google.com> (https://firebase.google.com/) ****************************** +@firebase/auth-interop-types +0.2.4 <https://github.com/firebase/firebase-js-sdk> +license: Apache-2.0 +authors: Firebase <firebase-support@google.com> (https://firebase.google.com/) + +****************************** + @firebase/auth-types 0.12.2 <https://github.com/firebase/firebase-js-sdk> license: Apache-2.0 @@ -24518,29 +24439,36 @@ authors: Firebase <firebase-support@google.com> (https://firebase.google.com/) ****************************** +@firebase/auth-types +0.13.0 <https://github.com/firebase/firebase-js-sdk> +license: Apache-2.0 +authors: Firebase <firebase-support@google.com> (https://firebase.google.com/) + +****************************** + @firebase/component -0.6.7 <https://github.com/firebase/firebase-js-sdk> +0.6.12 <https://github.com/firebase/firebase-js-sdk> license: Apache-2.0 authors: Firebase <firebase-support@google.com> (https://firebase.google.com/) ****************************** @firebase/component -0.6.8 <https://github.com/firebase/firebase-js-sdk> +0.6.7 <https://github.com/firebase/firebase-js-sdk> license: Apache-2.0 authors: Firebase <firebase-support@google.com> (https://firebase.google.com/) ****************************** @firebase/database -1.0.5 <https://github.com/firebase/firebase-js-sdk> +1.0.12 <https://github.com/firebase/firebase-js-sdk> license: Apache-2.0 authors: Firebase <firebase-support@google.com> (https://firebase.google.com/) ****************************** @firebase/database -1.0.6 <https://github.com/firebase/firebase-js-sdk> +1.0.5 <https://github.com/firebase/firebase-js-sdk> license: Apache-2.0 authors: Firebase <firebase-support@google.com> (https://firebase.google.com/) @@ -24554,7 +24482,7 @@ authors: Firebase <firebase-support@google.com> (https://firebase.google.com/) ****************************** @firebase/database-compat -1.0.6 <https://github.com/firebase/firebase-js-sdk> +2.0.3 <https://github.com/firebase/firebase-js-sdk> license: Apache-2.0 authors: Firebase <firebase-support@google.com> (https://firebase.google.com/) @@ -24568,7 +24496,14 @@ authors: Firebase <firebase-support@google.com> (https://firebase.google.com/) ****************************** @firebase/database-types -1.0.4 <https://github.com/firebase/firebase-js-sdk> +1.0.8 <https://github.com/firebase/firebase-js-sdk> +license: Apache-2.0 +authors: Firebase <firebase-support@google.com> (https://firebase.google.com/) + +****************************** + +@firebase/data-connect +0.3.0 <https://github.com/firebase/firebase-js-sdk> license: Apache-2.0 authors: Firebase <firebase-support@google.com> (https://firebase.google.com/) @@ -24582,7 +24517,7 @@ authors: Firebase <firebase-support@google.com> (https://firebase.google.com/) ****************************** @firebase/firestore -4.6.4 <https://github.com/firebase/firebase-js-sdk> +4.7.8 <https://github.com/firebase/firebase-js-sdk> license: Apache-2.0 authors: Firebase <firebase-support@google.com> (https://firebase.google.com/) @@ -24596,7 +24531,7 @@ authors: Firebase <firebase-support@google.com> (https://firebase.google.com/) ****************************** @firebase/firestore-compat -0.3.33 <https://github.com/firebase/firebase-js-sdk> +0.3.43 <https://github.com/firebase/firebase-js-sdk> license: Apache-2.0 authors: Firebase <firebase-support@google.com> (https://firebase.google.com/) @@ -24609,6 +24544,13 @@ authors: Firebase <firebase-support@google.com> (https://firebase.google.com/) ****************************** +@firebase/firestore-types +3.0.3 <https://github.com/firebase/firebase-js-sdk> +license: Apache-2.0 +authors: Firebase <firebase-support@google.com> (https://firebase.google.com/) + +****************************** + @firebase/functions 0.11.5 <https://github.com/firebase/firebase-js-sdk> license: Apache-2.0 @@ -24617,7 +24559,7 @@ authors: Firebase <firebase-support@google.com> (https://firebase.google.com/) ****************************** @firebase/functions -0.11.6 <https://github.com/firebase/firebase-js-sdk> +0.12.2 <https://github.com/firebase/firebase-js-sdk> license: Apache-2.0 authors: Firebase <firebase-support@google.com> (https://firebase.google.com/) @@ -24631,7 +24573,7 @@ authors: Firebase <firebase-support@google.com> (https://firebase.google.com/) ****************************** @firebase/functions-compat -0.3.12 <https://github.com/firebase/firebase-js-sdk> +0.3.19 <https://github.com/firebase/firebase-js-sdk> license: Apache-2.0 authors: Firebase <firebase-support@google.com> (https://firebase.google.com/) @@ -24644,29 +24586,36 @@ authors: Firebase <firebase-support@google.com> (https://firebase.google.com/) ****************************** +@firebase/functions-types +0.6.3 <https://github.com/firebase/firebase-js-sdk> +license: Apache-2.0 +authors: Firebase <firebase-support@google.com> (https://firebase.google.com/) + +****************************** + @firebase/installations -0.6.7 <https://github.com/firebase/firebase-js-sdk> +0.6.12 <https://github.com/firebase/firebase-js-sdk> license: Apache-2.0 authors: Firebase <firebase-support@google.com> (https://firebase.google.com/) ****************************** @firebase/installations -0.6.8 <https://github.com/firebase/firebase-js-sdk> +0.6.7 <https://github.com/firebase/firebase-js-sdk> license: Apache-2.0 authors: Firebase <firebase-support@google.com> (https://firebase.google.com/) ****************************** @firebase/installations-compat -0.2.7 <https://github.com/firebase/firebase-js-sdk> +0.2.12 <https://github.com/firebase/firebase-js-sdk> license: Apache-2.0 authors: Firebase <firebase-support@google.com> (https://firebase.google.com/) ****************************** @firebase/installations-compat -0.2.8 <https://github.com/firebase/firebase-js-sdk> +0.2.7 <https://github.com/firebase/firebase-js-sdk> license: Apache-2.0 authors: Firebase <firebase-support@google.com> (https://firebase.google.com/) @@ -24679,6 +24628,13 @@ authors: Firebase <firebase-support@google.com> (https://firebase.google.com/) ****************************** +@firebase/installations-types +0.5.3 <https://github.com/firebase/firebase-js-sdk> +license: Apache-2.0 +authors: Firebase <firebase-support@google.com> (https://firebase.google.com/) + +****************************** + @firebase/logger 0.4.2 <https://github.com/firebase/firebase-js-sdk> license: Apache-2.0 @@ -24686,8 +24642,15 @@ authors: Firebase <firebase-support@google.com> (https://firebase.google.com/) ****************************** +@firebase/logger +0.4.4 <https://github.com/firebase/firebase-js-sdk> +license: Apache-2.0 +authors: Firebase <firebase-support@google.com> (https://firebase.google.com/) + +****************************** + @firebase/messaging -0.12.10 <https://github.com/firebase/firebase-js-sdk> +0.12.16 <https://github.com/firebase/firebase-js-sdk> license: Apache-2.0 authors: Firebase <firebase-support@google.com> (https://firebase.google.com/) @@ -24701,7 +24664,7 @@ authors: Firebase <firebase-support@google.com> (https://firebase.google.com/) ****************************** @firebase/messaging-compat -0.2.10 <https://github.com/firebase/firebase-js-sdk> +0.2.16 <https://github.com/firebase/firebase-js-sdk> license: Apache-2.0 authors: Firebase <firebase-support@google.com> (https://firebase.google.com/) @@ -24721,6 +24684,13 @@ authors: Firebase <firebase-support@google.com> (https://firebase.google.com/) ****************************** +@firebase/messaging-interop-types +0.2.3 <https://github.com/firebase/firebase-js-sdk> +license: Apache-2.0 +authors: Firebase <firebase-support@google.com> (https://firebase.google.com/) + +****************************** + @firebase/performance 0.6.7 <https://github.com/firebase/firebase-js-sdk> license: Apache-2.0 @@ -24729,21 +24699,21 @@ authors: Firebase <firebase-support@google.com> (https://firebase.google.com/) ****************************** @firebase/performance -0.6.8 <https://github.com/firebase/firebase-js-sdk> +0.7.0 <https://github.com/firebase/firebase-js-sdk> license: Apache-2.0 authors: Firebase <firebase-support@google.com> (https://firebase.google.com/) ****************************** @firebase/performance-compat -0.2.7 <https://github.com/firebase/firebase-js-sdk> +0.2.13 <https://github.com/firebase/firebase-js-sdk> license: Apache-2.0 authors: Firebase <firebase-support@google.com> (https://firebase.google.com/) ****************************** @firebase/performance-compat -0.2.8 <https://github.com/firebase/firebase-js-sdk> +0.2.7 <https://github.com/firebase/firebase-js-sdk> license: Apache-2.0 authors: Firebase <firebase-support@google.com> (https://firebase.google.com/) @@ -24756,6 +24726,13 @@ authors: Firebase <firebase-support@google.com> (https://firebase.google.com/) ****************************** +@firebase/performance-types +0.2.3 <https://github.com/firebase/firebase-js-sdk> +license: Apache-2.0 +authors: Firebase <firebase-support@google.com> (https://firebase.google.com/) + +****************************** + @firebase/remote-config 0.4.7 <https://github.com/firebase/firebase-js-sdk> license: Apache-2.0 @@ -24764,21 +24741,21 @@ authors: Firebase <firebase-support@google.com> (https://firebase.google.com/) ****************************** @firebase/remote-config -0.4.8 <https://github.com/firebase/firebase-js-sdk> +0.5.0 <https://github.com/firebase/firebase-js-sdk> license: Apache-2.0 authors: Firebase <firebase-support@google.com> (https://firebase.google.com/) ****************************** @firebase/remote-config-compat -0.2.7 <https://github.com/firebase/firebase-js-sdk> +0.2.12 <https://github.com/firebase/firebase-js-sdk> license: Apache-2.0 authors: Firebase <firebase-support@google.com> (https://firebase.google.com/) ****************************** @firebase/remote-config-compat -0.2.8 <https://github.com/firebase/firebase-js-sdk> +0.2.7 <https://github.com/firebase/firebase-js-sdk> license: Apache-2.0 authors: Firebase <firebase-support@google.com> (https://firebase.google.com/) @@ -24791,6 +24768,13 @@ authors: Firebase <firebase-support@google.com> (https://firebase.google.com/) ****************************** +@firebase/remote-config-types +0.4.0 <https://github.com/firebase/firebase-js-sdk> +license: Apache-2.0 +authors: Firebase <firebase-support@google.com> (https://firebase.google.com/) + +****************************** + @firebase/storage 0.12.5 <https://github.com/firebase/firebase-js-sdk> license: Apache-2.0 @@ -24799,21 +24783,21 @@ authors: Firebase <firebase-support@google.com> (https://firebase.google.com/) ****************************** @firebase/storage -0.12.6 <https://github.com/firebase/firebase-js-sdk> +0.13.6 <https://github.com/firebase/firebase-js-sdk> license: Apache-2.0 authors: Firebase <firebase-support@google.com> (https://firebase.google.com/) ****************************** @firebase/storage-compat -0.3.8 <https://github.com/firebase/firebase-js-sdk> +0.3.16 <https://github.com/firebase/firebase-js-sdk> license: Apache-2.0 authors: Firebase <firebase-support@google.com> (https://firebase.google.com/) ****************************** @firebase/storage-compat -0.3.9 <https://github.com/firebase/firebase-js-sdk> +0.3.8 <https://github.com/firebase/firebase-js-sdk> license: Apache-2.0 authors: Firebase <firebase-support@google.com> (https://firebase.google.com/) @@ -24826,29 +24810,36 @@ authors: Firebase <firebase-support@google.com> (https://firebase.google.com/) ****************************** +@firebase/storage-types +0.8.3 <https://github.com/firebase/firebase-js-sdk> +license: Apache-2.0 +authors: Firebase <firebase-support@google.com> (https://firebase.google.com/) + +****************************** + @firebase/util -1.9.6 <https://github.com/firebase/firebase-js-sdk> +1.10.3 <https://github.com/firebase/firebase-js-sdk> license: Apache-2.0 authors: Firebase <firebase-support@google.com> (https://firebase.google.com/) ****************************** @firebase/util -1.9.7 <https://github.com/firebase/firebase-js-sdk> +1.9.6 <https://github.com/firebase/firebase-js-sdk> license: Apache-2.0 authors: Firebase <firebase-support@google.com> (https://firebase.google.com/) ****************************** -@firebase/vertexai-preview -0.0.2 <https://github.com/firebase/firebase-js-sdk> +@firebase/vertexai +1.0.4 <https://github.com/firebase/firebase-js-sdk> license: Apache-2.0 authors: Firebase <firebase-support@google.com> (https://firebase.google.com/) ****************************** @firebase/vertexai-preview -0.0.3 <https://github.com/firebase/firebase-js-sdk> +0.0.2 <https://github.com/firebase/firebase-js-sdk> license: Apache-2.0 authors: Firebase <firebase-support@google.com> (https://firebase.google.com/) @@ -24862,7 +24853,7 @@ authors: Firebase <firebase-support@google.com> (https://firebase.google.com/) ****************************** @firebase/webchannel-wrapper -1.0.1 <https://github.com/firebase/firebase-js-sdk> +1.0.3 <https://github.com/firebase/firebase-js-sdk> license: Apache-2.0 authors: Firebase <firebase-support@google.com> (https://firebase.google.com/) @@ -24928,27 +24919,27 @@ IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. fontfaceobserver 2.3.0 <https://github.com/bramstein/fontfaceobserver> -Copyright (c) 2014 - Bram Stein - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - -1. Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. -2. Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR -ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND -ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +Copyright (c) 2014 - Bram Stein + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ****************************** @@ -25298,34 +25289,6 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -****************************** - -fsevents -2.3.3 <https://github.com/fsevents/fsevents> -MIT License ------------ - -Copyright (C) 2010-2020 by Philipp Dunkel, Ben Noordhuis, Elan Shankar, Paul Miller - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. - - ****************************** fs-extra @@ -25514,7 +25477,7 @@ THE SOFTWARE. ****************************** function.prototype.name -1.1.8 <https://github.com/es-shims/Function.prototype.name> +1.1.6 <https://github.com/es-shims/Function.prototype.name> The MIT License (MIT) Copyright (c) 2016 Jordan Harband @@ -26083,7 +26046,7 @@ SOFTWARE. ****************************** get-intrinsic -1.2.7 <https://github.com/ljharb/get-intrinsic> +1.2.4 <https://github.com/ljharb/get-intrinsic> MIT License Copyright (c) 2020 Jordan Harband @@ -26176,33 +26139,6 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -****************************** - -get-proto -1.0.1 <https://github.com/ljharb/get-proto> -MIT License - -Copyright (c) 2025 Jordan Harband - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - - ****************************** get-stream @@ -26236,7 +26172,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI ****************************** get-symbol-description -1.1.0 <https://github.com/inspect-js/get-symbol-description> +1.0.2 <https://github.com/inspect-js/get-symbol-description> MIT License Copyright (c) 2021 Inspect JS @@ -26489,7 +26425,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI ****************************** globalthis -1.0.4 <https://github.com/ljharb/System.global> +1.0.3 <https://github.com/ljharb/System.global> The MIT License (MIT) Copyright (c) 2016 Jordan Harband @@ -26552,7 +26488,7 @@ IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ****************************** gopd -1.2.0 <https://github.com/ljharb/gopd> +1.0.1 <https://github.com/ljharb/gopd> MIT License Copyright (c) 2022 Jordan Harband @@ -27423,7 +27359,7 @@ SOFTWARE. ****************************** has-proto -1.2.0 <https://github.com/inspect-js/has-proto> +1.0.3 <https://github.com/inspect-js/has-proto> MIT License Copyright (c) 2022 Inspect JS @@ -27450,7 +27386,7 @@ SOFTWARE. ****************************** has-symbols -1.1.0 <https://github.com/inspect-js/has-symbols> +1.0.3 <https://github.com/inspect-js/has-symbols> MIT License Copyright (c) 2016 Jordan Harband @@ -27548,6 +27484,32 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +****************************** + +he +1.2.0 <https://github.com/mathiasbynens/he> +Copyright Mathias Bynens <https://mathiasbynens.be/> + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + ****************************** hermes-estree @@ -28951,7 +28913,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI ****************************** internal-slot -1.1.0 <https://github.com/ljharb/internal-slot> +1.0.7 <https://github.com/ljharb/internal-slot> MIT License Copyright (c) 2019 Jordan Harband @@ -29294,7 +29256,7 @@ SOFTWARE. ****************************** is-array-buffer -3.0.5 <https://github.com/inspect-js/is-array-buffer> +3.0.4 <https://github.com/inspect-js/is-array-buffer> MIT License Copyright (c) 2015 Chen Gengyuan, Inspect JS @@ -29401,7 +29363,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** is-bigint -1.1.0 <https://github.com/inspect-js/is-bigint> +1.0.2 <https://github.com/inspect-js/is-bigint> MIT License Copyright (c) 2018 Jordan Harband @@ -29443,7 +29405,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI ****************************** is-boolean-object -1.2.1 <https://github.com/inspect-js/is-boolean-object> +1.1.2 <https://github.com/inspect-js/is-boolean-object> The MIT License (MIT) Copyright (c) 2015 Jordan Harband @@ -29541,7 +29503,7 @@ SOFTWARE. ****************************** is-core-module -2.16.1 <https://github.com/inspect-js/is-core-module> +2.13.1 <https://github.com/inspect-js/is-core-module> The MIT License (MIT) Copyright (c) 2014 Dave Justice @@ -29566,7 +29528,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** is-data-view -1.0.2 <https://github.com/inspect-js/is-data-view> +1.0.1 <https://github.com/inspect-js/is-data-view> MIT License Copyright (c) 2024 Inspect JS @@ -29593,7 +29555,7 @@ SOFTWARE. ****************************** is-date-object -1.1.0 <https://github.com/inspect-js/is-date-object> +1.0.5 <https://github.com/inspect-js/is-date-object> The MIT License (MIT) Copyright (c) 2015 Jordan Harband @@ -29765,7 +29727,7 @@ THE SOFTWARE. ****************************** is-finalizationregistry -1.1.1 <https://github.com/inspect-js/is-finalizationregistry> +1.0.2 <https://github.com/inspect-js/is-finalizationregistry> MIT License Copyright (c) 2020 Inspect JS @@ -30010,7 +29972,7 @@ THE SOFTWARE. ****************************** is-map -2.0.3 <https://github.com/inspect-js/is-map> +2.0.2 <https://github.com/inspect-js/is-map> MIT License Copyright (c) 2019 Inspect JS @@ -30062,194 +30024,8 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -is-number -7.0.0 <https://github.com/jonschlinkert/is-number> -The MIT License (MIT) - -Copyright (c) 2014-present, Jon Schlinkert. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. - - -****************************** - -is-number-object -1.1.1 <https://github.com/inspect-js/is-number-object> -The MIT License (MIT) - -Copyright (c) 2015 Jordan Harband - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - - - -****************************** - -is-object -0.1.2 <https://github.com/Colingo/is-object> -license: MIT -authors: Raynos <raynos2@gmail.com> - -****************************** - -isobject -3.0.1 <https://github.com/jonschlinkert/isobject> -The MIT License (MIT) - -Copyright (c) 2014-2017, Jon Schlinkert. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. - -****************************** - -isomorphic-ws -4.0.1 <https://github.com/heineiuo/isomorphic-ws> -The MIT License (MIT) - -Copyright (c) 2018 Zejin Zhuang <heineiuo@gmail.com> - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - -****************************** - -is-path-cwd -2.2.0 <https://github.com/sindresorhus/is-path-cwd> -MIT License - -Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com) - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - -****************************** - -is-path-inside -3.0.3 <https://github.com/sindresorhus/is-path-inside> -MIT License - -Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com) - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - -****************************** - -is-plain-obj -2.1.0 <https://github.com/sindresorhus/is-plain-obj> -MIT License - -Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com) - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - -****************************** - -is-plain-object -2.0.4 <https://github.com/jonschlinkert/is-plain-object> -The MIT License (MIT) - -Copyright (c) 2014-2017, Jon Schlinkert. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. - - -****************************** - -is-regex -1.2.1 <https://github.com/inspect-js/is-regex> +is-negative-zero +2.0.3 <https://github.com/inspect-js/is-negative-zero> The MIT License (MIT) Copyright (c) 2014 Jordan Harband @@ -30274,81 +30050,293 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -is-retry-allowed -2.2.0 <https://github.com/sindresorhus/is-retry-allowed> -MIT License - -Copyright (c) Vsevolod Strukchinsky <floatdrop@gmail.com> (github.com/floatdrop) -Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (https://sindresorhus.com) - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - -****************************** - -is-set -2.0.3 <https://github.com/inspect-js/is-set> -MIT License - -Copyright (c) 2019 Inspect JS - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - - -****************************** - -is-shared-array-buffer -1.0.4 <https://github.com/inspect-js/is-shared-array-buffer> -MIT License - -Copyright (c) 2021 Inspect JS - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - - -****************************** - -is-stream -1.1.0 <https://github.com/sindresorhus/is-stream> +is-number +7.0.0 <https://github.com/jonschlinkert/is-number> The MIT License (MIT) -Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com) +Copyright (c) 2014-present, Jon Schlinkert. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + + +****************************** + +is-number-object +1.0.7 <https://github.com/inspect-js/is-number-object> +The MIT License (MIT) + +Copyright (c) 2015 Jordan Harband + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + + +****************************** + +is-object +0.1.2 <https://github.com/Colingo/is-object> +license: MIT +authors: Raynos <raynos2@gmail.com> + +****************************** + +isobject +3.0.1 <https://github.com/jonschlinkert/isobject> +The MIT License (MIT) + +Copyright (c) 2014-2017, Jon Schlinkert. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + +****************************** + +isomorphic-ws +4.0.1 <https://github.com/heineiuo/isomorphic-ws> +The MIT License (MIT) + +Copyright (c) 2018 Zejin Zhuang <heineiuo@gmail.com> + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +****************************** + +is-path-cwd +2.2.0 <https://github.com/sindresorhus/is-path-cwd> +MIT License + +Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com) + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +****************************** + +is-path-inside +3.0.3 <https://github.com/sindresorhus/is-path-inside> +MIT License + +Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com) + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +****************************** + +is-plain-obj +2.1.0 <https://github.com/sindresorhus/is-plain-obj> +MIT License + +Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com) + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +****************************** + +is-plain-object +2.0.4 <https://github.com/jonschlinkert/is-plain-object> +The MIT License (MIT) + +Copyright (c) 2014-2017, Jon Schlinkert. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + + +****************************** + +is-regex +1.1.4 <https://github.com/inspect-js/is-regex> +The MIT License (MIT) + +Copyright (c) 2014 Jordan Harband + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +****************************** + +is-retry-allowed +2.2.0 <https://github.com/sindresorhus/is-retry-allowed> +MIT License + +Copyright (c) Vsevolod Strukchinsky <floatdrop@gmail.com> (github.com/floatdrop) +Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (https://sindresorhus.com) + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +****************************** + +is-set +2.0.2 <https://github.com/inspect-js/is-set> +MIT License + +Copyright (c) 2019 Inspect JS + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + +****************************** + +is-shared-array-buffer +1.0.3 <https://github.com/inspect-js/is-shared-array-buffer> +MIT License + +Copyright (c) 2021 Inspect JS + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + +****************************** + +is-stream +1.1.0 <https://github.com/sindresorhus/is-stream> +The MIT License (MIT) + +Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal @@ -30387,7 +30375,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI ****************************** is-string -1.1.1 <https://github.com/inspect-js/is-string> +1.0.7 <https://github.com/ljharb/is-string> The MIT License (MIT) Copyright (c) 2015 Jordan Harband @@ -30415,7 +30403,7 @@ SOFTWARE. ****************************** is-symbol -1.1.1 <https://github.com/inspect-js/is-symbol> +1.0.4 <https://github.com/inspect-js/is-symbol> The MIT License (MIT) Copyright (c) 2015 Jordan Harband @@ -30443,7 +30431,7 @@ SOFTWARE. ****************************** is-typed-array -1.1.15 <https://github.com/inspect-js/is-typed-array> +1.1.13 <https://github.com/inspect-js/is-typed-array> The MIT License (MIT) Copyright (c) 2015 Jordan Harband @@ -30562,7 +30550,7 @@ THE SOFTWARE. ****************************** is-weakmap -2.0.2 <https://github.com/inspect-js/is-weakmap> +2.0.1 <https://github.com/inspect-js/is-weakmap> MIT License Copyright (c) 2019 Inspect JS @@ -30589,7 +30577,7 @@ SOFTWARE. ****************************** is-weakref -1.1.0 <https://github.com/inspect-js/is-weakref> +1.0.2 <https://github.com/inspect-js/is-weakref> MIT License Copyright (c) 2020 Inspect JS @@ -30616,7 +30604,7 @@ SOFTWARE. ****************************** is-weakset -2.0.4 <https://github.com/inspect-js/is-weakset> +2.0.1 <https://github.com/inspect-js/is-weakset> MIT License Copyright (c) 2019 Inspect JS @@ -31347,7 +31335,7 @@ authors: undefined ****************************** @jridgewell/gen-mapping -0.3.8 <https://github.com/jridgewell/gen-mapping> +0.3.5 <https://github.com/jridgewell/gen-mapping> Copyright 2022 Justin Ridgewell <jridgewell@google.com> Permission is hereby granted, free of charge, to any person obtaining a copy @@ -31803,27 +31791,27 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. jscodeshift 0.14.0 <https://github.com/facebook/jscodeshift> -MIT License - -Copyright (c) Facebook, Inc. and its affiliates. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. +MIT License + +Copyright (c) Facebook, Inc. and its affiliates. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. ****************************** @@ -31870,32 +31858,6 @@ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -****************************** - -jsesc -3.1.0 <https://github.com/mathiasbynens/jsesc> -Copyright Mathias Bynens <https://mathiasbynens.be/> - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - ****************************** jsftp @@ -31957,27 +31919,27 @@ SOFTWARE. jsonc-parser 3.2.0 <https://github.com/microsoft/node-jsonc-parser> -The MIT License (MIT) - -Copyright (c) Microsoft - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. +The MIT License (MIT) + +Copyright (c) Microsoft + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. ****************************** @@ -32066,54 +32028,6 @@ This library is a fork of 'better-json-errors' by Kat Marchán, extended and distributed under the terms of the MIT license above. -****************************** - -json-pointer -0.6.2 <https://github.com/manuelstofer/json-pointer> -The MIT License (MIT) - -Copyright (c) 2016 Manuel Stofer - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - - -****************************** - -json-rpc-engine -6.1.0 <https://github.com/MetaMask/json-rpc-engine> -ISC License - -Copyright (c) 2020 MetaMask - -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted, provided that the above -copyright notice and this permission notice appear in all copies. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES -WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR -ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN -ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF -OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - - ****************************** json-rpc-random-id @@ -32125,201 +32039,201 @@ authors: undefined json-schema 0.4.0 <https://github.com/kriszyp/json-schema> -Dojo is available under *either* the terms of the BSD 3-Clause "New" License *or* the -Academic Free License version 2.1. As a recipient of Dojo, you may choose which -license to receive this code under (except as noted in per-module LICENSE -files). Some modules may not be the copyright of the Dojo Foundation. These -modules contain explicit declarations of copyright in both the LICENSE files in -the directories in which they reside and in the code itself. No external -contributions are allowed under licenses which are fundamentally incompatible -with the AFL-2.1 OR and BSD-3-Clause licenses that Dojo is distributed under. - -The text of the AFL-2.1 and BSD-3-Clause licenses is reproduced below. - -------------------------------------------------------------------------------- -BSD 3-Clause "New" License: -********************** - -Copyright (c) 2005-2015, The Dojo Foundation -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - * Neither the name of the Dojo Foundation nor the names of its contributors - may be used to endorse or promote products derived from this software - without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE -FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -------------------------------------------------------------------------------- -The Academic Free License, v. 2.1: -********************************** - -This Academic Free License (the "License") applies to any original work of -authorship (the "Original Work") whose owner (the "Licensor") has placed the -following notice immediately following the copyright notice for the Original -Work: - -Licensed under the Academic Free License version 2.1 - -1) Grant of Copyright License. Licensor hereby grants You a world-wide, -royalty-free, non-exclusive, perpetual, sublicenseable license to do the -following: - -a) to reproduce the Original Work in copies; - -b) to prepare derivative works ("Derivative Works") based upon the Original -Work; - -c) to distribute copies of the Original Work and Derivative Works to the -public; - -d) to perform the Original Work publicly; and - -e) to display the Original Work publicly. - -2) Grant of Patent License. Licensor hereby grants You a world-wide, -royalty-free, non-exclusive, perpetual, sublicenseable license, under patent -claims owned or controlled by the Licensor that are embodied in the Original -Work as furnished by the Licensor, to make, use, sell and offer for sale the -Original Work and Derivative Works. - -3) Grant of Source Code License. The term "Source Code" means the preferred -form of the Original Work for making modifications to it and all available -documentation describing how to modify the Original Work. Licensor hereby -agrees to provide a machine-readable copy of the Source Code of the Original -Work along with each copy of the Original Work that Licensor distributes. -Licensor reserves the right to satisfy this obligation by placing a -machine-readable copy of the Source Code in an information repository -reasonably calculated to permit inexpensive and convenient access by You for as -long as Licensor continues to distribute the Original Work, and by publishing -the address of that information repository in a notice immediately following -the copyright notice that applies to the Original Work. - -4) Exclusions From License Grant. Neither the names of Licensor, nor the names -of any contributors to the Original Work, nor any of their trademarks or -service marks, may be used to endorse or promote products derived from this -Original Work without express prior written permission of the Licensor. Nothing -in this License shall be deemed to grant any rights to trademarks, copyrights, -patents, trade secrets or any other intellectual property of Licensor except as -expressly stated herein. No patent license is granted to make, use, sell or -offer to sell embodiments of any patent claims other than the licensed claims -defined in Section 2. No right is granted to the trademarks of Licensor even if -such marks are included in the Original Work. Nothing in this License shall be -interpreted to prohibit Licensor from licensing under different terms from this -License any Original Work that Licensor otherwise would have a right to -license. - -5) This section intentionally omitted. - -6) Attribution Rights. You must retain, in the Source Code of any Derivative -Works that You create, all copyright, patent or trademark notices from the -Source Code of the Original Work, as well as any notices of licensing and any -descriptive text identified therein as an "Attribution Notice." You must cause -the Source Code for any Derivative Works that You create to carry a prominent -Attribution Notice reasonably calculated to inform recipients that You have -modified the Original Work. - -7) Warranty of Provenance and Disclaimer of Warranty. Licensor warrants that -the copyright in and to the Original Work and the patent rights granted herein -by Licensor are owned by the Licensor or are sublicensed to You under the terms -of this License with the permission of the contributor(s) of those copyrights -and patent rights. Except as expressly stated in the immediately proceeding -sentence, the Original Work is provided under this License on an "AS IS" BASIS -and WITHOUT WARRANTY, either express or implied, including, without limitation, -the warranties of NON-INFRINGEMENT, MERCHANTABILITY or FITNESS FOR A PARTICULAR -PURPOSE. THE ENTIRE RISK AS TO THE QUALITY OF THE ORIGINAL WORK IS WITH YOU. -This DISCLAIMER OF WARRANTY constitutes an essential part of this License. No -license to Original Work is granted hereunder except under this disclaimer. - -8) Limitation of Liability. Under no circumstances and under no legal theory, -whether in tort (including negligence), contract, or otherwise, shall the -Licensor be liable to any person for any direct, indirect, special, incidental, -or consequential damages of any character arising as a result of this License -or the use of the Original Work including, without limitation, damages for loss -of goodwill, work stoppage, computer failure or malfunction, or any and all -other commercial damages or losses. This limitation of liability shall not -apply to liability for death or personal injury resulting from Licensor's -negligence to the extent applicable law prohibits such limitation. Some -jurisdictions do not allow the exclusion or limitation of incidental or -consequential damages, so this exclusion and limitation may not apply to You. - -9) Acceptance and Termination. If You distribute copies of the Original Work or -a Derivative Work, You must make a reasonable effort under the circumstances to -obtain the express assent of recipients to the terms of this License. Nothing -else but this License (or another written agreement between Licensor and You) -grants You permission to create Derivative Works based upon the Original Work -or to exercise any of the rights granted in Section 1 herein, and any attempt -to do so except under the terms of this License (or another written agreement -between Licensor and You) is expressly prohibited by U.S. copyright law, the -equivalent laws of other countries, and by international treaty. Therefore, by -exercising any of the rights granted to You in Section 1 herein, You indicate -Your acceptance of this License and all of its terms and conditions. - -10) Termination for Patent Action. This License shall terminate automatically -and You may no longer exercise any of the rights granted to You by this License -as of the date You commence an action, including a cross-claim or counterclaim, -against Licensor or any licensee alleging that the Original Work infringes a -patent. This termination provision shall not apply for an action alleging -patent infringement by combinations of the Original Work with other software or -hardware. - -11) Jurisdiction, Venue and Governing Law. Any action or suit relating to this -License may be brought only in the courts of a jurisdiction wherein the -Licensor resides or in which Licensor conducts its primary business, and under -the laws of that jurisdiction excluding its conflict-of-law provisions. The -application of the United Nations Convention on Contracts for the International -Sale of Goods is expressly excluded. Any use of the Original Work outside the -scope of this License or after its termination shall be subject to the -requirements and penalties of the U.S. Copyright Act, 17 U.S.C. § 101 et -seq., the equivalent laws of other countries, and international treaty. This -section shall survive the termination of this License. - -12) Attorneys Fees. In any action to enforce the terms of this License or -seeking damages relating thereto, the prevailing party shall be entitled to -recover its costs and expenses, including, without limitation, reasonable -attorneys' fees and costs incurred in connection with such action, including -any appeal of such action. This section shall survive the termination of this -License. - -13) Miscellaneous. This License represents the complete agreement concerning -the subject matter hereof. If any provision of this License is held to be -unenforceable, such provision shall be reformed only to the extent necessary to -make it enforceable. - -14) Definition of "You" in This License. "You" throughout this License, whether -in upper or lower case, means an individual or a legal entity exercising rights -under, and complying with all of the terms of, this License. For legal -entities, "You" includes any entity that controls, is controlled by, or is -under common control with you. For purposes of this definition, "control" means -(i) the power, direct or indirect, to cause the direction or management of such -entity, whether by contract or otherwise, or (ii) ownership of fifty percent -(50%) or more of the outstanding shares, or (iii) beneficial ownership of such -entity. - -15) Right to Use. You may use the Original Work in all ways not otherwise -restricted or conditioned by this License or by law, and Licensor promises not -to interfere with or be responsible for such uses by You. - -This license is Copyright (C) 2003-2004 Lawrence E. Rosen. All rights reserved. -Permission is hereby granted to copy and distribute this license without -modification. This license may not be modified without the express written -permission of its copyright owner. +Dojo is available under *either* the terms of the BSD 3-Clause "New" License *or* the +Academic Free License version 2.1. As a recipient of Dojo, you may choose which +license to receive this code under (except as noted in per-module LICENSE +files). Some modules may not be the copyright of the Dojo Foundation. These +modules contain explicit declarations of copyright in both the LICENSE files in +the directories in which they reside and in the code itself. No external +contributions are allowed under licenses which are fundamentally incompatible +with the AFL-2.1 OR and BSD-3-Clause licenses that Dojo is distributed under. + +The text of the AFL-2.1 and BSD-3-Clause licenses is reproduced below. + +------------------------------------------------------------------------------- +BSD 3-Clause "New" License: +********************** + +Copyright (c) 2005-2015, The Dojo Foundation +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + * Neither the name of the Dojo Foundation nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +------------------------------------------------------------------------------- +The Academic Free License, v. 2.1: +********************************** + +This Academic Free License (the "License") applies to any original work of +authorship (the "Original Work") whose owner (the "Licensor") has placed the +following notice immediately following the copyright notice for the Original +Work: + +Licensed under the Academic Free License version 2.1 + +1) Grant of Copyright License. Licensor hereby grants You a world-wide, +royalty-free, non-exclusive, perpetual, sublicenseable license to do the +following: + +a) to reproduce the Original Work in copies; + +b) to prepare derivative works ("Derivative Works") based upon the Original +Work; + +c) to distribute copies of the Original Work and Derivative Works to the +public; + +d) to perform the Original Work publicly; and + +e) to display the Original Work publicly. + +2) Grant of Patent License. Licensor hereby grants You a world-wide, +royalty-free, non-exclusive, perpetual, sublicenseable license, under patent +claims owned or controlled by the Licensor that are embodied in the Original +Work as furnished by the Licensor, to make, use, sell and offer for sale the +Original Work and Derivative Works. + +3) Grant of Source Code License. The term "Source Code" means the preferred +form of the Original Work for making modifications to it and all available +documentation describing how to modify the Original Work. Licensor hereby +agrees to provide a machine-readable copy of the Source Code of the Original +Work along with each copy of the Original Work that Licensor distributes. +Licensor reserves the right to satisfy this obligation by placing a +machine-readable copy of the Source Code in an information repository +reasonably calculated to permit inexpensive and convenient access by You for as +long as Licensor continues to distribute the Original Work, and by publishing +the address of that information repository in a notice immediately following +the copyright notice that applies to the Original Work. + +4) Exclusions From License Grant. Neither the names of Licensor, nor the names +of any contributors to the Original Work, nor any of their trademarks or +service marks, may be used to endorse or promote products derived from this +Original Work without express prior written permission of the Licensor. Nothing +in this License shall be deemed to grant any rights to trademarks, copyrights, +patents, trade secrets or any other intellectual property of Licensor except as +expressly stated herein. No patent license is granted to make, use, sell or +offer to sell embodiments of any patent claims other than the licensed claims +defined in Section 2. No right is granted to the trademarks of Licensor even if +such marks are included in the Original Work. Nothing in this License shall be +interpreted to prohibit Licensor from licensing under different terms from this +License any Original Work that Licensor otherwise would have a right to +license. + +5) This section intentionally omitted. + +6) Attribution Rights. You must retain, in the Source Code of any Derivative +Works that You create, all copyright, patent or trademark notices from the +Source Code of the Original Work, as well as any notices of licensing and any +descriptive text identified therein as an "Attribution Notice." You must cause +the Source Code for any Derivative Works that You create to carry a prominent +Attribution Notice reasonably calculated to inform recipients that You have +modified the Original Work. + +7) Warranty of Provenance and Disclaimer of Warranty. Licensor warrants that +the copyright in and to the Original Work and the patent rights granted herein +by Licensor are owned by the Licensor or are sublicensed to You under the terms +of this License with the permission of the contributor(s) of those copyrights +and patent rights. Except as expressly stated in the immediately proceeding +sentence, the Original Work is provided under this License on an "AS IS" BASIS +and WITHOUT WARRANTY, either express or implied, including, without limitation, +the warranties of NON-INFRINGEMENT, MERCHANTABILITY or FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY OF THE ORIGINAL WORK IS WITH YOU. +This DISCLAIMER OF WARRANTY constitutes an essential part of this License. No +license to Original Work is granted hereunder except under this disclaimer. + +8) Limitation of Liability. Under no circumstances and under no legal theory, +whether in tort (including negligence), contract, or otherwise, shall the +Licensor be liable to any person for any direct, indirect, special, incidental, +or consequential damages of any character arising as a result of this License +or the use of the Original Work including, without limitation, damages for loss +of goodwill, work stoppage, computer failure or malfunction, or any and all +other commercial damages or losses. This limitation of liability shall not +apply to liability for death or personal injury resulting from Licensor's +negligence to the extent applicable law prohibits such limitation. Some +jurisdictions do not allow the exclusion or limitation of incidental or +consequential damages, so this exclusion and limitation may not apply to You. + +9) Acceptance and Termination. If You distribute copies of the Original Work or +a Derivative Work, You must make a reasonable effort under the circumstances to +obtain the express assent of recipients to the terms of this License. Nothing +else but this License (or another written agreement between Licensor and You) +grants You permission to create Derivative Works based upon the Original Work +or to exercise any of the rights granted in Section 1 herein, and any attempt +to do so except under the terms of this License (or another written agreement +between Licensor and You) is expressly prohibited by U.S. copyright law, the +equivalent laws of other countries, and by international treaty. Therefore, by +exercising any of the rights granted to You in Section 1 herein, You indicate +Your acceptance of this License and all of its terms and conditions. + +10) Termination for Patent Action. This License shall terminate automatically +and You may no longer exercise any of the rights granted to You by this License +as of the date You commence an action, including a cross-claim or counterclaim, +against Licensor or any licensee alleging that the Original Work infringes a +patent. This termination provision shall not apply for an action alleging +patent infringement by combinations of the Original Work with other software or +hardware. + +11) Jurisdiction, Venue and Governing Law. Any action or suit relating to this +License may be brought only in the courts of a jurisdiction wherein the +Licensor resides or in which Licensor conducts its primary business, and under +the laws of that jurisdiction excluding its conflict-of-law provisions. The +application of the United Nations Convention on Contracts for the International +Sale of Goods is expressly excluded. Any use of the Original Work outside the +scope of this License or after its termination shall be subject to the +requirements and penalties of the U.S. Copyright Act, 17 U.S.C. § 101 et +seq., the equivalent laws of other countries, and international treaty. This +section shall survive the termination of this License. + +12) Attorneys Fees. In any action to enforce the terms of this License or +seeking damages relating thereto, the prevailing party shall be entitled to +recover its costs and expenses, including, without limitation, reasonable +attorneys' fees and costs incurred in connection with such action, including +any appeal of such action. This section shall survive the termination of this +License. + +13) Miscellaneous. This License represents the complete agreement concerning +the subject matter hereof. If any provision of this License is held to be +unenforceable, such provision shall be reformed only to the extent necessary to +make it enforceable. + +14) Definition of "You" in This License. "You" throughout this License, whether +in upper or lower case, means an individual or a legal entity exercising rights +under, and complying with all of the terms of, this License. For legal +entities, "You" includes any entity that controls, is controlled by, or is +under common control with you. For purposes of this definition, "control" means +(i) the power, direct or indirect, to cause the direction or management of such +entity, whether by contract or otherwise, or (ii) ownership of fifty percent +(50%) or more of the outstanding shares, or (iii) beneficial ownership of such +entity. + +15) Right to Use. You may use the Original Work in all ways not otherwise +restricted or conditioned by this License or by law, and Licensor promises not +to interfere with or be responsible for such uses by You. + +This license is Copyright (C) 2003-2004 Lawrence E. Rosen. All rights reserved. +Permission is hereby granted to copy and distribute this license without +modification. This license may not be modified without the express written +permission of its copyright owner. ****************************** @@ -32403,27 +32317,6 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -****************************** - -json-stringify-safe -5.0.1 <https://github.com/isaacs/json-stringify-safe> -The ISC License - -Copyright (c) Isaac Z. Schlueter and Contributors - -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted, provided that the above -copyright notice and this permission notice appear in all copies. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES -WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR -ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN -ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR -IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - - ****************************** js-sha3 @@ -33342,7 +33235,7 @@ OTHER DEALINGS IN THE SOFTWARE. ****************************** @ledgerhq/cryptoassets-evm-signatures -13.5.0 <https://github.com/LedgerHQ/ledger-live> +13.5.2 <https://github.com/LedgerHQ/ledger-live> The MIT License Copyright (c) 2017-present Ledger https://www.ledger.com/ @@ -33396,7 +33289,7 @@ THE SOFTWARE. ****************************** @ledgerhq/domain-service -1.2.6 <https://github.com/LedgerHQ/ledger-live> +1.2.15 <https://github.com/LedgerHQ/ledger-live> The MIT License Copyright (c) 2017-present Ledger https://www.ledger.com/ @@ -33450,7 +33343,7 @@ THE SOFTWARE. ****************************** @ledgerhq/evm-tools -1.2.3 <https://github.com/LedgerHQ/ledger-live> +1.3.0 <https://github.com/LedgerHQ/ledger-live> The MIT License Copyright (c) 2017-present Ledger https://www.ledger.com/ @@ -33477,7 +33370,7 @@ THE SOFTWARE. ****************************** @ledgerhq/hw-app-eth -6.39.0 <https://github.com/LedgerHQ/ledger-live> +6.42.2 <https://github.com/LedgerHQ/ledger-live> The MIT License Copyright (c) 2017-present Ledger https://www.ledger.com/ @@ -33558,7 +33451,7 @@ THE SOFTWARE. ****************************** @ledgerhq/live-env -2.3.0 <https://github.com/LedgerHQ/ledger-live> +2.4.1 <https://github.com/LedgerHQ/ledger-live> The MIT License Copyright (c) 2017-present Ledger https://www.ledger.com/ @@ -33619,7 +33512,7 @@ THE SOFTWARE. ****************************** @ledgerhq/types-live -6.52.0 <https://github.com/LedgerHQ/ledger-live> +6.56.0 <https://github.com/LedgerHQ/ledger-live> The MIT License Copyright (c) 2017-present Ledger https://www.ledger.com/ @@ -34259,7 +34152,386 @@ defined by the Mozilla Public License, v. 2.0. ****************************** -lightningcss-darwin-arm64 +lightningcss-linux-x64-gnu +1.19.0 <https://github.com/parcel-bundler/lightningcss> + Mozilla Public License Version 2.0 +================================== + +1. Definitions +-------------- + +1.1. "Contributor" +means each individual or legal entity that creates, contributes to +the creation of, or owns Covered Software. + +1.2. "Contributor Version" +means the combination of the Contributions of others (if any) used +by a Contributor and that particular Contributor's Contribution. + +1.3. "Contribution" +means Covered Software of a particular Contributor. + +1.4. "Covered Software" +means Source Code Form to which the initial Contributor has attached +the notice in Exhibit A, the Executable Form of such Source Code +Form, and Modifications of such Source Code Form, in each case +including portions thereof. + +1.5. "Incompatible With Secondary Licenses" +means + +(a) that the initial Contributor has attached the notice described +in Exhibit B to the Covered Software; or + +(b) that the Covered Software was made available under the terms of +version 1.1 or earlier of the License, but not also under the +terms of a Secondary License. + +1.6. "Executable Form" +means any form of the work other than Source Code Form. + +1.7. "Larger Work" +means a work that combines Covered Software with other material, in +a separate file or files, that is not Covered Software. + +1.8. "License" +means this document. + +1.9. "Licensable" +means having the right to grant, to the maximum extent possible, +whether at the time of the initial grant or subsequently, any and +all of the rights conveyed by this License. + +1.10. "Modifications" +means any of the following: + +(a) any file in Source Code Form that results from an addition to, +deletion from, or modification of the contents of Covered +Software; or + +(b) any new file in Source Code Form that contains any Covered +Software. + +1.11. "Patent Claims" of a Contributor +means any patent claim(s), including without limitation, method, +process, and apparatus claims, in any patent Licensable by such +Contributor that would be infringed, but for the grant of the +License, by the making, using, selling, offering for sale, having +made, import, or transfer of either its Contributions or its +Contributor Version. + +1.12. "Secondary License" +means either the GNU General Public License, Version 2.0, the GNU +Lesser General Public License, Version 2.1, the GNU Affero General +Public License, Version 3.0, or any later versions of those +licenses. + +1.13. "Source Code Form" +means the form of the work preferred for making modifications. + +1.14. "You" (or "Your") +means an individual or a legal entity exercising rights under this +License. For legal entities, "You" includes any entity that +controls, is controlled by, or is under common control with You. For +purposes of this definition, "control" means (a) the power, direct +or indirect, to cause the direction or management of such entity, +whether by contract or otherwise, or (b) ownership of more than +fifty percent (50%) of the outstanding shares or beneficial +ownership of such entity. + +2. License Grants and Conditions +-------------------------------- + +2.1. Grants + +Each Contributor hereby grants You a world-wide, royalty-free, +non-exclusive license: + +(a) under intellectual property rights (other than patent or trademark) +Licensable by such Contributor to use, reproduce, make available, +modify, display, perform, distribute, and otherwise exploit its +Contributions, either on an unmodified basis, with Modifications, or +as part of a Larger Work; and + +(b) under Patent Claims of such Contributor to make, use, sell, offer +for sale, have made, import, and otherwise transfer either its +Contributions or its Contributor Version. + +2.2. Effective Date + +The licenses granted in Section 2.1 with respect to any Contribution +become effective for each Contribution on the date the Contributor first +distributes such Contribution. + +2.3. Limitations on Grant Scope + +The licenses granted in this Section 2 are the only rights granted under +this License. No additional rights or licenses will be implied from the +distribution or licensing of Covered Software under this License. +Notwithstanding Section 2.1(b) above, no patent license is granted by a +Contributor: + +(a) for any code that a Contributor has removed from Covered Software; +or + +(b) for infringements caused by: (i) Your and any other third party's +modifications of Covered Software, or (ii) the combination of its +Contributions with other software (except as part of its Contributor +Version); or + +(c) under Patent Claims infringed by Covered Software in the absence of +its Contributions. + +This License does not grant any rights in the trademarks, service marks, +or logos of any Contributor (except as may be necessary to comply with +the notice requirements in Section 3.4). + +2.4. Subsequent Licenses + +No Contributor makes additional grants as a result of Your choice to +distribute the Covered Software under a subsequent version of this +License (see Section 10.2) or under the terms of a Secondary License (if +permitted under the terms of Section 3.3). + +2.5. Representation + +Each Contributor represents that the Contributor believes its +Contributions are its original creation(s) or it has sufficient rights +to grant the rights to its Contributions conveyed by this License. + +2.6. Fair Use + +This License is not intended to limit any rights You have under +applicable copyright doctrines of fair use, fair dealing, or other +equivalents. + +2.7. Conditions + +Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted +in Section 2.1. + +3. Responsibilities +------------------- + +3.1. Distribution of Source Form + +All distribution of Covered Software in Source Code Form, including any +Modifications that You create or to which You contribute, must be under +the terms of this License. You must inform recipients that the Source +Code Form of the Covered Software is governed by the terms of this +License, and how they can obtain a copy of this License. You may not +attempt to alter or restrict the recipients' rights in the Source Code +Form. + +3.2. Distribution of Executable Form + +If You distribute Covered Software in Executable Form then: + +(a) such Covered Software must also be made available in Source Code +Form, as described in Section 3.1, and You must inform recipients of +the Executable Form how they can obtain a copy of such Source Code +Form by reasonable means in a timely manner, at a charge no more +than the cost of distribution to the recipient; and + +(b) You may distribute such Executable Form under the terms of this +License, or sublicense it under different terms, provided that the +license for the Executable Form does not attempt to limit or alter +the recipients' rights in the Source Code Form under this License. + +3.3. Distribution of a Larger Work + +You may create and distribute a Larger Work under terms of Your choice, +provided that You also comply with the requirements of this License for +the Covered Software. If the Larger Work is a combination of Covered +Software with a work governed by one or more Secondary Licenses, and the +Covered Software is not Incompatible With Secondary Licenses, this +License permits You to additionally distribute such Covered Software +under the terms of such Secondary License(s), so that the recipient of +the Larger Work may, at their option, further distribute the Covered +Software under the terms of either this License or such Secondary +License(s). + +3.4. Notices + +You may not remove or alter the substance of any license notices +(including copyright notices, patent notices, disclaimers of warranty, +or limitations of liability) contained within the Source Code Form of +the Covered Software, except that You may alter any license notices to +the extent required to remedy known factual inaccuracies. + +3.5. Application of Additional Terms + +You may choose to offer, and to charge a fee for, warranty, support, +indemnity or liability obligations to one or more recipients of Covered +Software. However, You may do so only on Your own behalf, and not on +behalf of any Contributor. You must make it absolutely clear that any +such warranty, support, indemnity, or liability obligation is offered by +You alone, and You hereby agree to indemnify every Contributor for any +liability incurred by such Contributor as a result of warranty, support, +indemnity or liability terms You offer. You may include additional +disclaimers of warranty and limitations of liability specific to any +jurisdiction. + +4. Inability to Comply Due to Statute or Regulation +--------------------------------------------------- + +If it is impossible for You to comply with any of the terms of this +License with respect to some or all of the Covered Software due to +statute, judicial order, or regulation then You must: (a) comply with +the terms of this License to the maximum extent possible; and (b) +describe the limitations and the code they affect. Such description must +be placed in a text file included with all distributions of the Covered +Software under this License. Except to the extent prohibited by statute +or regulation, such description must be sufficiently detailed for a +recipient of ordinary skill to be able to understand it. + +5. Termination +-------------- + +5.1. The rights granted under this License will terminate automatically +if You fail to comply with any of its terms. However, if You become +compliant, then the rights granted under this License from a particular +Contributor are reinstated (a) provisionally, unless and until such +Contributor explicitly and finally terminates Your grants, and (b) on an +ongoing basis, if such Contributor fails to notify You of the +non-compliance by some reasonable means prior to 60 days after You have +come back into compliance. Moreover, Your grants from a particular +Contributor are reinstated on an ongoing basis if such Contributor +notifies You of the non-compliance by some reasonable means, this is the +first time You have received notice of non-compliance with this License +from such Contributor, and You become compliant prior to 30 days after +Your receipt of the notice. + +5.2. If You initiate litigation against any entity by asserting a patent +infringement claim (excluding declaratory judgment actions, +counter-claims, and cross-claims) alleging that a Contributor Version +directly or indirectly infringes any patent, then the rights granted to +You by any and all Contributors for the Covered Software under Section +2.1 of this License shall terminate. + +5.3. In the event of termination under Sections 5.1 or 5.2 above, all +end user license agreements (excluding distributors and resellers) which +have been validly granted by You or Your distributors under this License +prior to termination shall survive termination. + +************************************************************************ +* * +* 6. Disclaimer of Warranty * +* ------------------------- * +* * +* Covered Software is provided under this License on an "as is" * +* basis, without warranty of any kind, either expressed, implied, or * +* statutory, including, without limitation, warranties that the * +* Covered Software is free of defects, merchantable, fit for a * +* particular purpose or non-infringing. The entire risk as to the * +* quality and performance of the Covered Software is with You. * +* Should any Covered Software prove defective in any respect, You * +* (not any Contributor) assume the cost of any necessary servicing, * +* repair, or correction. This disclaimer of warranty constitutes an * +* essential part of this License. No use of any Covered Software is * +* authorized under this License except under this disclaimer. * +* * +************************************************************************ + +************************************************************************ +* * +* 7. Limitation of Liability * +* -------------------------- * +* * +* Under no circumstances and under no legal theory, whether tort * +* (including negligence), contract, or otherwise, shall any * +* Contributor, or anyone who distributes Covered Software as * +* permitted above, be liable to You for any direct, indirect, * +* special, incidental, or consequential damages of any character * +* including, without limitation, damages for lost profits, loss of * +* goodwill, work stoppage, computer failure or malfunction, or any * +* and all other commercial damages or losses, even if such party * +* shall have been informed of the possibility of such damages. This * +* limitation of liability shall not apply to liability for death or * +* personal injury resulting from such party's negligence to the * +* extent applicable law prohibits such limitation. Some * +* jurisdictions do not allow the exclusion or limitation of * +* incidental or consequential damages, so this exclusion and * +* limitation may not apply to You. * +* * +************************************************************************ + +8. Litigation +------------- + +Any litigation relating to this License may be brought only in the +courts of a jurisdiction where the defendant maintains its principal +place of business and such litigation shall be governed by laws of that +jurisdiction, without reference to its conflict-of-law provisions. +Nothing in this Section shall prevent a party's ability to bring +cross-claims or counter-claims. + +9. Miscellaneous +---------------- + +This License represents the complete agreement concerning the subject +matter hereof. If any provision of this License is held to be +unenforceable, such provision shall be reformed only to the extent +necessary to make it enforceable. Any law or regulation which provides +that the language of a contract shall be construed against the drafter +shall not be used to construe this License against a Contributor. + +10. Versions of the License +--------------------------- + +10.1. New Versions + +Mozilla Foundation is the license steward. Except as provided in Section +10.3, no one other than the license steward has the right to modify or +publish new versions of this License. Each version will be given a +distinguishing version number. + +10.2. Effect of New Versions + +You may distribute the Covered Software under the terms of the version +of the License under which You originally received the Covered Software, +or under the terms of any subsequent version published by the license +steward. + +10.3. Modified Versions + +If you create software not governed by this License, and you want to +create a new license for such software, you may create and use a +modified version of this License if you rename the license and remove +any references to the name of the license steward (except to note that +such modified license differs from this License). + +10.4. Distributing Source Code Form that is Incompatible With Secondary +Licenses + +If You choose to distribute Source Code Form that is Incompatible With +Secondary Licenses under the terms of this version of the License, the +notice described in Exhibit B of this License must be attached. + +Exhibit A - Source Code Form License Notice +------------------------------------------- + +This Source Code Form is subject to the terms of the Mozilla Public +License, v. 2.0. If a copy of the MPL was not distributed with this +file, You can obtain one at https://mozilla.org/MPL/2.0/. + +If it is not possible or desirable to put the notice in a particular +file, then You may include the notice in a location (such as a LICENSE +file in a relevant directory) where a recipient would be likely to look +for such a notice. + +You may add additional accurate notices of copyright ownership. + +Exhibit B - "Incompatible With Secondary Licenses" Notice +--------------------------------------------------------- + +This Source Code Form is "Incompatible With Secondary Licenses", as +defined by the Mozilla Public License, v. 2.0. + + +****************************** + +lightningcss-linux-x64-musl 1.19.0 <https://github.com/parcel-bundler/lightningcss> Mozilla Public License Version 2.0 ================================== @@ -35065,114 +35337,8 @@ terms above. ****************************** -lodash.camelcase -4.3.0 <https://github.com/lodash/lodash> -Copyright jQuery Foundation and other contributors <https://jquery.org/> - -Based on Underscore.js, copyright Jeremy Ashkenas, -DocumentCloud and Investigative Reporters & Editors <http://underscorejs.org/> - -This software consists of voluntary contributions made by many -individuals. For exact contribution history, see the revision history -available at https://github.com/lodash/lodash - -The following license applies to all parts of this software except as -documented below: - -==== - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -==== - -Copyright and related rights for sample code are waived via CC0. Sample -code is defined as all source code displayed within the prose of the -documentation. - -CC0: http://creativecommons.org/publicdomain/zero/1.0/ - -==== - -Files located in the node_modules and vendor directories are externally -maintained libraries used by this software which have their own -licenses; we recommend you read them, as their terms may differ from the -terms above. - - -****************************** - -lodash.debounce -4.0.8 <https://github.com/lodash/lodash> -Copyright jQuery Foundation and other contributors <https://jquery.org/> - -Based on Underscore.js, copyright Jeremy Ashkenas, -DocumentCloud and Investigative Reporters & Editors <http://underscorejs.org/> - -This software consists of voluntary contributions made by many -individuals. For exact contribution history, see the revision history -available at https://github.com/lodash/lodash - -The following license applies to all parts of this software except as -documented below: - -==== - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -==== - -Copyright and related rights for sample code are waived via CC0. Sample -code is defined as all source code displayed within the prose of the -documentation. - -CC0: http://creativecommons.org/publicdomain/zero/1.0/ - -==== - -Files located in the node_modules and vendor directories are externally -maintained libraries used by this software which have their own -licenses; we recommend you read them, as their terms may differ from the -terms above. - - -****************************** - -lodash.defaults -4.2.0 <https://github.com/lodash/lodash> +lodash.camelcase +4.3.0 <https://github.com/lodash/lodash> Copyright jQuery Foundation and other contributors <https://jquery.org/> Based on Underscore.js, copyright Jeremy Ashkenas, @@ -35224,8 +35390,8 @@ terms above. ****************************** -lodash.difference -4.5.0 <https://github.com/lodash/lodash> +lodash.debounce +4.0.8 <https://github.com/lodash/lodash> Copyright jQuery Foundation and other contributors <https://jquery.org/> Based on Underscore.js, copyright Jeremy Ashkenas, @@ -35277,8 +35443,8 @@ terms above. ****************************** -lodash.flatten -4.4.0 <https://github.com/lodash/lodash> +lodash.defaults +4.2.0 <https://github.com/lodash/lodash> Copyright jQuery Foundation and other contributors <https://jquery.org/> Based on Underscore.js, copyright Jeremy Ashkenas, @@ -35330,8 +35496,8 @@ terms above. ****************************** -lodash.isarguments -3.1.0 <https://github.com/lodash/lodash> +lodash.difference +4.5.0 <https://github.com/lodash/lodash> Copyright jQuery Foundation and other contributors <https://jquery.org/> Based on Underscore.js, copyright Jeremy Ashkenas, @@ -35383,9 +35549,9 @@ terms above. ****************************** -lodash.isequal -4.5.0 <https://github.com/lodash/lodash> -Copyright JS Foundation and other contributors <https://js.foundation/> +lodash.flatten +4.4.0 <https://github.com/lodash/lodash> +Copyright jQuery Foundation and other contributors <https://jquery.org/> Based on Underscore.js, copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors <http://underscorejs.org/> @@ -35436,8 +35602,8 @@ terms above. ****************************** -lodash.isplainobject -4.0.6 <https://github.com/lodash/lodash> +lodash.isarguments +3.1.0 <https://github.com/lodash/lodash> Copyright jQuery Foundation and other contributors <https://jquery.org/> Based on Underscore.js, copyright Jeremy Ashkenas, @@ -35489,12 +35655,75 @@ terms above. ****************************** -lodash.isstring -4.0.1 <https://github.com/lodash/lodash> -Copyright 2012-2016 The Dojo Foundation <http://dojofoundation.org/> -Based on Underscore.js, copyright 2009-2016 Jeremy Ashkenas, +lodash.isequal +4.5.0 <https://github.com/lodash/lodash> +Copyright JS Foundation and other contributors <https://js.foundation/> + +Based on Underscore.js, copyright Jeremy Ashkenas, +DocumentCloud and Investigative Reporters & Editors <http://underscorejs.org/> + +This software consists of voluntary contributions made by many +individuals. For exact contribution history, see the revision history +available at https://github.com/lodash/lodash + +The following license applies to all parts of this software except as +documented below: + +==== + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +==== + +Copyright and related rights for sample code are waived via CC0. Sample +code is defined as all source code displayed within the prose of the +documentation. + +CC0: http://creativecommons.org/publicdomain/zero/1.0/ + +==== + +Files located in the node_modules and vendor directories are externally +maintained libraries used by this software which have their own +licenses; we recommend you read them, as their terms may differ from the +terms above. + + +****************************** + +lodash.isplainobject +4.0.6 <https://github.com/lodash/lodash> +Copyright jQuery Foundation and other contributors <https://jquery.org/> + +Based on Underscore.js, copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors <http://underscorejs.org/> +This software consists of voluntary contributions made by many +individuals. For exact contribution history, see the revision history +available at https://github.com/lodash/lodash + +The following license applies to all parts of this software except as +documented below: + +==== + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including @@ -35514,6 +35743,21 @@ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +==== + +Copyright and related rights for sample code are waived via CC0. Sample +code is defined as all source code displayed within the prose of the +documentation. + +CC0: http://creativecommons.org/publicdomain/zero/1.0/ + +==== + +Files located in the node_modules and vendor directories are externally +maintained libraries used by this software which have their own +licenses; we recommend you read them, as their terms may differ from the +terms above. + ****************************** @@ -35705,28 +35949,28 @@ SOFTWARE. loglevel 1.9.1 <https://github.com/pimterry/loglevel> -Copyright (c) 2013 Tim Perry - -Permission is hereby granted, free of charge, to any person -obtaining a copy of this software and associated documentation -files (the "Software"), to deal in the Software without -restriction, including without limitation the rights to use, -copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the -Software is furnished to do so, subject to the following -conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -OTHER DEALINGS IN THE SOFTWARE. +Copyright (c) 2013 Tim Perry + +Permission is hereby granted, free of charge, to any person +obtaining a copy of this software and associated documentation +files (the "Software"), to deal in the Software without +restriction, including without limitation the rights to use, +copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the +Software is furnished to do so, subject to the following +conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES +OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT +HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +OTHER DEALINGS IN THE SOFTWARE. ****************************** @@ -36523,7 +36767,7 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** luxon -3.4.3 <https://github.com/moment/luxon> +3.5.0 <https://github.com/moment/luxon> Copyright 2019 JS Foundation and other contributors Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: @@ -36632,33 +36876,6 @@ Redistribution and use in source and binary forms, with or without modification, This software is provided by the copyright holders and contributors “as is” and any express or implied warranties, including, but not limited to, the implied warranties of merchantability and fitness for a particular purpose are disclaimed. In no event shall the copyright owner or contributors be liable for any direct, indirect, incidental, special, exemplary, or consequential damages (including, but not limited to, procurement of substitute goods or services; loss of use, data, or profits; or business interruption) however caused and on any theory of liability, whether in contract, strict liability, or tort (including negligence or otherwise) arising in any way out of the use of this software, even if advised of the possibility of such damage. -****************************** - -math-intrinsics -1.1.0 <https://github.com/es-shims/math-intrinsics> -MIT License - -Copyright (c) 2024 ECMAScript Shims - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - - ****************************** md5 @@ -37122,21 +37339,21 @@ authors: Egor Gumenyuk <boo1ean0807@gmail.com> ****************************** @metamask/abi-utils -1.2.0 <https://github.com/MetaMask/abi-utils> +2.0.4 <https://github.com/MetaMask/abi-utils> license: (Apache-2.0 AND MIT) authors: Maarten Zuidhoorn <maarten@zuidhoorn.com> ****************************** @metamask/abi-utils -2.0.4 <https://github.com/MetaMask/abi-utils> +3.0.0 <https://github.com/MetaMask/abi-utils> license: (Apache-2.0 AND MIT) authors: Maarten Zuidhoorn <maarten@zuidhoorn.com> ****************************** @metamask/accounts-controller -19.0.0 <https://github.com/MetaMask/core> +24.0.1 <https://github.com/MetaMask/core> MIT License Copyright (c) 2018 MetaMask @@ -37162,7 +37379,7 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE ****************************** @metamask/address-book-controller -6.0.1 <https://github.com/MetaMask/core> +6.0.3 <https://github.com/MetaMask/core> MIT License Copyright (c) 2018 MetaMask @@ -37188,7 +37405,7 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE ****************************** @metamask/approval-controller -7.1.1 <https://github.com/MetaMask/core> +7.1.3 <https://github.com/MetaMask/core> MIT License Copyright (c) 2018 MetaMask @@ -37214,7 +37431,7 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE ****************************** @metamask/assets-controllers -44.1.0 <https://github.com/MetaMask/core> +50.0.0 <https://github.com/MetaMask/core> MIT License Copyright (c) 2018 MetaMask @@ -37240,7 +37457,7 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE ****************************** @metamask/base-controller -3.2.3 <https://github.com/MetaMask/core> +7.1.1 <https://github.com/MetaMask/core> MIT License Copyright (c) 2018 MetaMask @@ -37266,7 +37483,7 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE ****************************** @metamask/base-controller -7.0.2 <https://github.com/MetaMask/core> +8.0.0 <https://github.com/MetaMask/core> MIT License Copyright (c) 2018 MetaMask @@ -37292,7 +37509,7 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE ****************************** @metamask/bitcoin-wallet-snap -0.8.2 <https://github.com/MetaMask/snap-bitcoin-wallet> +0.9.0 <https://github.com/MetaMask/snap-bitcoin-wallet> license: (MIT-0 OR Apache-2.0) authors: undefined @@ -37320,7 +37537,7 @@ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ****************************** @metamask/composable-controller -10.0.0 <https://github.com/MetaMask/core> +11.0.0 <https://github.com/MetaMask/core> MIT License Copyright (c) 2018 MetaMask @@ -37367,7 +37584,7 @@ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ****************************** @metamask/controller-utils -11.4.3 <https://github.com/MetaMask/core> +11.5.0 <https://github.com/MetaMask/core> MIT License Copyright (c) 2018 MetaMask @@ -37393,14 +37610,33 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE ****************************** @metamask/design-tokens -4.0.0 <https://github.com/MetaMask/design-tokens> -license: MIT -authors: undefined +5.0.0 <https://github.com/MetaMask/metamask-design-system> +MIT License + +Copyright (c) 2024 MetaMask + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + ****************************** @metamask/eth-block-tracker -11.0.2 <https://github.com/MetaMask/eth-block-tracker> +11.0.4 <https://github.com/MetaMask/eth-block-tracker> MIT License Copyright (c) 2018 MetaMask @@ -37447,7 +37683,7 @@ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ****************************** @metamask/eth-hd-keyring -7.0.4 <https://github.com/MetaMask/eth-hd-keyring> +10.0.1 <https://github.com/MetaMask/eth-hd-keyring> ISC License Copyright (c) 2020 MetaMask @@ -37570,7 +37806,7 @@ THE SOFTWARE. ****************************** @metamask/eth-json-rpc-filters -8.0.0 <https://github.com/MetaMask/eth-json-rpc-filters> +9.0.0 <https://github.com/MetaMask/eth-json-rpc-filters> ISC License Copyright (c) 2020 MetaMask @@ -37612,28 +37848,7 @@ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ****************************** @metamask/eth-json-rpc-middleware -11.0.2 <https://github.com/MetaMask/eth-json-rpc-middleware> -ISC License - -Copyright (c) 2020 MetaMask - -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted, provided that the above -copyright notice and this permission notice appear in all copies. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES -WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR -ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN -ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF -OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - - -****************************** - -@metamask/eth-json-rpc-middleware -15.0.0 <https://github.com/MetaMask/eth-json-rpc-middleware> +15.2.0 <https://github.com/MetaMask/eth-json-rpc-middleware> ISC License Copyright (c) 2020 MetaMask @@ -37654,14 +37869,7 @@ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ****************************** @metamask/eth-json-rpc-provider -1.0.1 <https://github.com/MetaMask/eth-json-rpc-provider> -license: Custom: https://github.com/MetaMask/json-rpc-engine -authors: undefined - -****************************** - -@metamask/eth-json-rpc-provider -4.1.6 <https://github.com/MetaMask/core> +4.1.8 <https://github.com/MetaMask/core> ISC License Copyright (c) 2022 MetaMask @@ -37735,111 +37943,62 @@ THE SOFTWARE. ****************************** -@metamask/ethjs-unit -0.3.0 <https://github.com/MetaMask/ethjs-unit> -The MIT License (MIT) - -Copyright (c) 2016 Nick Dodson - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. - - -****************************** - -@metamask/ethjs-util -0.3.0 <https://github.com/MetaMask/ethjs-util> -The MIT License - -Copyright (c) 2016 Nick Dodson. nickdodson.com - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. - - -****************************** - -@metamask/eth-ledger-bridge-keyring -8.0.0 <https://github.com/MetaMask/eth-ledger-bridge-keyring> -ISC License - -Copyright (c) 2020 MetaMask +@metamask/ethjs-unit +0.3.0 <https://github.com/MetaMask/ethjs-unit> +The MIT License (MIT) -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted, provided that the above -copyright notice and this permission notice appear in all copies. +Copyright (c) 2016 Nick Dodson -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES -WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR -ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN -ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF -OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. -****************************** +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. -@metamask/eth-query -4.0.0 <https://github.com/MetaMask/eth-query> -license: ISC -authors: undefined ****************************** -@metamask/eth-sig-util -6.0.2 <https://github.com/MetaMask/eth-sig-util> -ISC License +@metamask/ethjs-util +0.3.0 <https://github.com/MetaMask/ethjs-util> +The MIT License -Copyright (c) 2020 MetaMask +Copyright (c) 2016 Nick Dodson. nickdodson.com -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted, provided that the above -copyright notice and this permission notice appear in all copies. +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES -WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR -ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN -ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF -OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. ****************************** -@metamask/eth-sig-util -7.0.3 <https://github.com/MetaMask/eth-sig-util> +@metamask/eth-ledger-bridge-keyring +8.0.3 <https://github.com/MetaMask/eth-ledger-bridge-keyring> ISC License Copyright (c) 2020 MetaMask @@ -37857,10 +38016,17 @@ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +****************************** + +@metamask/eth-query +4.0.0 <https://github.com/MetaMask/eth-query> +license: ISC +authors: undefined + ****************************** @metamask/eth-sig-util -8.0.0 <https://github.com/MetaMask/eth-sig-util> +8.2.0 <https://github.com/MetaMask/eth-sig-util> ISC License Copyright (c) 2020 MetaMask @@ -37881,7 +38047,7 @@ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ****************************** @metamask/eth-simple-keyring -6.0.5 <https://github.com/MetaMask/eth-simple-keyring> +8.1.1 <https://github.com/MetaMask/eth-simple-keyring> ISC License Copyright (c) 2020 MetaMask @@ -37902,14 +38068,31 @@ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ****************************** @metamask/eth-snap-keyring -4.4.0 <https://github.com/MetaMask/eth-snap-keyring> -license: Custom: https://metamask.github.io/eth-snap-keyring/latest/ -authors: undefined +11.1.0 <https://github.com/MetaMask/eth-snap-keyring> +Copyright ConsenSys Software Inc. 2022. All rights reserved. + +You acknowledge and agree that ConsenSys Software Inc. (“ConsenSys”) (or ConsenSys’s licensors) own all legal right, title and interest in and to the work, software, application, source code, documentation and any other documents in this repository (collectively, the “Program”), including any intellectual property rights which subsist in the Program (whether those rights happen to be registered or not, and wherever in the world those rights may exist), whether in source code or any other form. + +Subject to the limited license below, you may not (and you may not permit anyone else to) distribute, publish, copy, modify, merge, combine with another program, create derivative works of, reverse engineer, decompile or otherwise attempt to extract the source code of, the Program or any part thereof, except that you may contribute to this repository. + +You are granted a non-exclusive, non-transferable, non-sublicensable license to distribute, publish, copy, modify, merge, combine with another program or create derivative works of the Program (such resulting program, collectively, the “Resulting Program”) solely for Non-Commercial Use as long as you: + 1. give prominent notice (“Notice”) with each copy of the Resulting Program that the Program is used in the Resulting Program and that the Program is the copyright of ConsenSys; and + 2. subject the Resulting Program and any distribution, publication, copy, modification, merger therewith, combination with another program or derivative works thereof to the same Notice requirement and Non-Commercial Use restriction set forth herein. + +“Non-Commercial Use” means each use as described in clauses (1)-(3) below, as reasonably determined by ConsenSys in its sole discretion: + 1. personal use for research, personal study, private entertainment, hobby projects or amateur pursuits, in each case without any anticipated commercial application; + 2. use by any charitable organization, educational institution, public research organization, public safety or health organization, environmental protection organization or government institution; or + 3. the number of monthly active users of the Resulting Program across all versions thereof and platforms globally do not exceed 10,000 at any time. + +You will not use any trade mark, service mark, trade name, logo of ConsenSys or any other company or organization in a way that is likely or intended to cause confusion about the owner or authorized user of such marks, names or logos. + +If you have any questions, comments or interest in pursuing any other use cases, please reach out to us at communications@metamask.io. + ****************************** @metamask/gas-fee-controller -21.0.0 <https://github.com/MetaMask/core> +22.0.3 <https://github.com/MetaMask/core> MIT License Copyright (c) 2018 MetaMask @@ -37935,28 +38118,7 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE ****************************** @metamask/json-rpc-engine -10.0.1 <https://github.com/MetaMask/core> -ISC License - -Copyright (c) 2022 MetaMask - -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted, provided that the above -copyright notice and this permission notice appear in all copies. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES -WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR -ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN -ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF -OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - - -****************************** - -@metamask/json-rpc-engine -7.3.3 <https://github.com/MetaMask/core> +10.0.3 <https://github.com/MetaMask/core> ISC License Copyright (c) 2022 MetaMask @@ -37995,27 +38157,6 @@ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -****************************** - -@metamask/json-rpc-engine -9.0.3 <https://github.com/MetaMask/core> -ISC License - -Copyright (c) 2022 MetaMask - -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted, provided that the above -copyright notice and this permission notice appear in all copies. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES -WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR -ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN -ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF -OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - - ****************************** @metamask/json-rpc-middleware-stream @@ -38040,7 +38181,7 @@ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ****************************** @metamask/json-rpc-middleware-stream -8.0.5 <https://github.com/MetaMask/core> +8.0.7 <https://github.com/MetaMask/core> ISC License Copyright (c) 2020 MetaMask @@ -38082,10 +38223,34 @@ You will not use any trade mark, service mark, trade name, logo of ConsenSys or If you have any questions, comments or interest in pursuing any other use cases, please reach out to us at communications@metamask.io. +****************************** + +@metamask/keyring-api +17.2.0 <https://github.com/MetaMask/keyring-api> +Copyright ConsenSys Software Inc. 2022. All rights reserved. + +You acknowledge and agree that ConsenSys Software Inc. (“ConsenSys”) (or ConsenSys’s licensors) own all legal right, title and interest in and to the work, software, application, source code, documentation and any other documents in this repository (collectively, the “Program”), including any intellectual property rights which subsist in the Program (whether those rights happen to be registered or not, and wherever in the world those rights may exist), whether in source code or any other form. + +Subject to the limited license below, you may not (and you may not permit anyone else to) distribute, publish, copy, modify, merge, combine with another program, create derivative works of, reverse engineer, decompile or otherwise attempt to extract the source code of, the Program or any part thereof, except that you may contribute to this repository. + +You are granted a non-exclusive, non-transferable, non-sublicensable license to distribute, publish, copy, modify, merge, combine with another program or create derivative works of the Program (such resulting program, collectively, the “Resulting Program”) solely for Non-Commercial Use as long as you: + 1. give prominent notice (“Notice”) with each copy of the Resulting Program that the Program is used in the Resulting Program and that the Program is the copyright of ConsenSys; and + 2. subject the Resulting Program and any distribution, publication, copy, modification, merger therewith, combination with another program or derivative works thereof to the same Notice requirement and Non-Commercial Use restriction set forth herein. + +“Non-Commercial Use” means each use as described in clauses (1)-(3) below, as reasonably determined by ConsenSys in its sole discretion: + 1. personal use for research, personal study, private entertainment, hobby projects or amateur pursuits, in each case without any anticipated commercial application; + 2. use by any charitable organization, educational institution, public research organization, public safety or health organization, environmental protection organization or government institution; or + 3. the number of monthly active users of the Resulting Program across all versions thereof and platforms globally do not exceed 10,000 at any time. + +You will not use any trade mark, service mark, trade name, logo of ConsenSys or any other company or organization in a way that is likely or intended to cause confusion about the owner or authorized user of such marks, names or logos. + +If you have any questions, comments or interest in pursuing any other use cases, please reach out to us at communications@metamask.io. + + ****************************** @metamask/keyring-controller -18.0.0 <https://github.com/MetaMask/core> +19.2.1 <https://github.com/MetaMask/core> MIT License Copyright (c) 2018 MetaMask @@ -38108,10 +38273,38 @@ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +****************************** + +@metamask/keyring-internal-api +4.0.3 <https://github.com/MetaMask/accounts> +license: Custom: https://github.com/MetaMask/accounts +authors: undefined + +****************************** + +@metamask/keyring-internal-snap-client +4.0.1 <https://github.com/MetaMask/accounts> +license: Custom: https://github.com/MetaMask/accounts +authors: undefined + +****************************** + +@metamask/keyring-snap-client +4.0.1 <https://github.com/MetaMask/accounts> +license: Custom: https://github.com/MetaMask/accounts +authors: undefined + +****************************** + +@metamask/keyring-utils +2.3.1 <https://github.com/MetaMask/accounts> +license: Custom: https://github.com/MetaMask/accounts +authors: undefined + ****************************** @metamask/key-tree -10.0.0 <https://github.com/MetaMask/key-tree> +10.0.2 <https://github.com/MetaMask/key-tree> MIT License Copyright (c) 2021 MetaMask @@ -38165,36 +38358,10 @@ SOFTWARE. ****************************** @metamask/logging-controller -6.0.1 <https://github.com/MetaMask/core> +6.0.4 <https://github.com/MetaMask/core> license: MIT authors: undefined -****************************** - -@metamask/message-manager -11.0.2 <https://github.com/MetaMask/core> -MIT License - -Copyright (c) 2018 MetaMask - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - - ****************************** @metamask/message-signing-snap @@ -38224,11 +38391,11 @@ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ****************************** -@metamask/network-controller -21.1.0 <https://github.com/MetaMask/core> +@metamask/multichain-network-controller +0.1.1 <https://github.com/MetaMask/core> MIT License -Copyright (c) 2018 MetaMask +Copyright (c) 2025 MetaMask Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal @@ -38251,7 +38418,7 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE ****************************** @metamask/network-controller -22.0.2 <https://github.com/MetaMask/core> +22.2.1 <https://github.com/MetaMask/core> MIT License Copyright (c) 2018 MetaMask @@ -38304,7 +38471,7 @@ SOFTWARE. ****************************** @metamask/notification-services-controller -0.15.0 <https://github.com/MetaMask/core> +1.0.0 <https://github.com/MetaMask/core> MIT License Copyright (c) 2024 MetaMask @@ -38357,7 +38524,7 @@ THE SOFTWARE. ****************************** @metamask/object-multiplex -2.0.0 <https://github.com/MetaMask/object-multiplex> +2.1.0 <https://github.com/MetaMask/object-multiplex> ISC License Copyright (c) 2020 MetaMask @@ -38420,59 +38587,33 @@ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ****************************** @metamask/permission-controller -11.0.3 <https://github.com/MetaMask/core> -MIT License - -Copyright (c) 2018 MetaMask - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - - -****************************** - -@metamask/phishing-controller -12.0.3 <https://github.com/MetaMask/core> -MIT License - -Copyright (c) 2018 MetaMask - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - - -****************************** - -@metamask/polling-controller -11.0.0 <https://github.com/MetaMask/core> +11.0.6 <https://github.com/MetaMask/core> +MIT License + +Copyright (c) 2018 MetaMask + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + + +****************************** + +@metamask/phishing-controller +12.3.2 <https://github.com/MetaMask/core> MIT License Copyright (c) 2018 MetaMask @@ -38498,7 +38639,7 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE ****************************** @metamask/polling-controller -12.0.1 <https://github.com/MetaMask/core> +12.0.3 <https://github.com/MetaMask/core> MIT License Copyright (c) 2018 MetaMask @@ -38524,7 +38665,7 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE ****************************** @metamask/post-message-stream -8.1.1 <https://github.com/MetaMask/post-message-stream> +9.0.0 <https://github.com/MetaMask/post-message-stream> ISC License Copyright (c) 2020 MetaMask @@ -38552,7 +38693,7 @@ authors: undefined ****************************** @metamask/preferences-controller -14.0.0 <https://github.com/MetaMask/core> +15.0.1 <https://github.com/MetaMask/core> MIT License Copyright (c) 2018 MetaMask @@ -38578,7 +38719,7 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE ****************************** @metamask/profile-sync-controller -1.0.2 <https://github.com/MetaMask/core> +3.0.0 <https://github.com/MetaMask/core> MIT License Copyright (c) 2024 MetaMask @@ -38631,7 +38772,7 @@ SOFTWARE. ****************************** @metamask/providers -18.1.1 <https://github.com/MetaMask/providers> +20.0.0 <https://github.com/MetaMask/providers> MIT License Copyright (c) 2020 MetaMask @@ -38774,7 +38915,7 @@ SOFTWARE. ****************************** @metamask/remote-feature-flag-controller -1.0.0 <https://github.com/MetaMask/core> +1.5.0 <https://github.com/MetaMask/core> This project is licensed under either of * MIT license ([LICENSE.MIT](LICENSE.MIT)) @@ -38785,7 +38926,7 @@ at your option. ****************************** @metamask/rpc-errors -7.0.1 <https://github.com/MetaMask/rpc-errors> +7.0.2 <https://github.com/MetaMask/rpc-errors> MIT License Copyright (c) 2019 MetaMask @@ -38905,7 +39046,7 @@ If you have any questions, comments or interest in pursuing any other use cases, ****************************** @metamask/selected-network-controller -19.0.0 <https://github.com/MetaMask/core> +21.0.0 <https://github.com/MetaMask/core> MIT License Copyright (c) 2023 MetaMask @@ -38931,7 +39072,7 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE ****************************** @metamask/signature-controller -22.0.0 <https://github.com/MetaMask/core> +23.1.0 <https://github.com/MetaMask/core> MIT License Copyright (c) 2023 MetaMask @@ -38964,7 +39105,7 @@ authors: Dan Finlay <dan@danfinlay.com> ****************************** @metamask/smart-transactions-controller -15.0.0 <https://github.com/MetaMask/smart-transactions-controller> +16.0.1 <https://github.com/MetaMask/smart-transactions-controller> Copyright ConsenSys Software Inc. 2020. All rights reserved. You acknowledge and agree that ConsenSys Software Inc. (“ConsenSys”) (or ConsenSys’s licensors) own all legal right, title and interest in and to the work, software, application, source code, documentation and any other documents in this repository (collectively, the “Program”), including any intellectual property rights which subsist in the Program (whether those rights happen to be registered or not, and wherever in the world those rights may exist), whether in source code or any other form. @@ -38988,7 +39129,7 @@ If you have any questions, comments or interest in pursuing any other use cases, ****************************** @metamask/snaps-controllers -9.14.0 <https://github.com/MetaMask/snaps> +10.0.0 <https://github.com/MetaMask/snaps> Copyright ConsenSys Software Inc. 2021. All rights reserved. You acknowledge and agree that ConsenSys Software Inc. (“ConsenSys”) (or ConsenSys’s licensors) own all legal right, title and interest in and to the work, software, application, source code, documentation and any other documents in this repository (collectively, the “Program”), including any intellectual property rights which subsist in the Program (whether those rights happen to be registered or not, and wherever in the world those rights may exist), whether in source code or any other form. @@ -39012,7 +39153,7 @@ If you have any questions, comments or interest in pursuing any other use cases, ****************************** @metamask/snaps-execution-environments -6.10.0 <https://github.com/MetaMask/snaps> +7.0.0 <https://github.com/MetaMask/snaps> Copyright ConsenSys Software Inc. 2022. All rights reserved. You acknowledge and agree that ConsenSys Software Inc. (“ConsenSys”) (or ConsenSys’s licensors) own all legal right, title and interest in and to the work, software, application, source code, documentation and any other documents in this repository (collectively, the “Program”), including any intellectual property rights which subsist in the Program (whether those rights happen to be registered or not, and wherever in the world those rights may exist), whether in source code or any other form. @@ -39038,7 +39179,7 @@ If you have any questions, comments or interest in pursuing any other use cases, ****************************** @metamask/snaps-registry -3.2.2 <https://github.com/MetaMask/snaps-registry> +3.2.3 <https://github.com/MetaMask/snaps-registry> Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -39245,7 +39386,7 @@ If you have any questions, comments or interest in pursuing any other use cases, ****************************** @metamask/snaps-rpc-methods -11.6.0 <https://github.com/MetaMask/snaps> +11.12.0 <https://github.com/MetaMask/snaps> Copyright ConsenSys Software Inc. 2021. All rights reserved. You acknowledge and agree that ConsenSys Software Inc. (“ConsenSys”) (or ConsenSys’s licensors) own all legal right, title and interest in and to the work, software, application, source code, documentation and any other documents in this repository (collectively, the “Program”), including any intellectual property rights which subsist in the Program (whether those rights happen to be registered or not, and wherever in the world those rights may exist), whether in source code or any other form. @@ -39290,7 +39431,7 @@ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ****************************** @metamask/snaps-sdk -6.12.0 <https://github.com/MetaMask/snaps> +6.18.0 <https://github.com/MetaMask/snaps> ISC License Copyright (c) 2023 MetaMask @@ -39311,7 +39452,28 @@ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ****************************** @metamask/snaps-utils -8.6.0 <https://github.com/MetaMask/snaps> +8.10.0 <https://github.com/MetaMask/snaps> +ISC License + +Copyright (c) 2022 MetaMask + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + + +****************************** + +@metamask/snaps-utils +9.0.0 <https://github.com/MetaMask/snaps> ISC License Copyright (c) 2022 MetaMask @@ -39329,10 +39491,17 @@ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +****************************** + +@metamask/solana-wallet-snap +1.7.0 <https://github.com/MetaMask/snap-solana-wallet> +license: (MIT-0 OR Apache-2.0) +authors: undefined + ****************************** @metamask/stake-sdk -0.3.0 <https://github.com/MetaMask/stake-sdk> +1.0.0 <https://github.com/MetaMask/stake-sdk> license: Custom: https://nodejs.org authors: undefined @@ -39354,14 +39523,14 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI ****************************** @metamask/swappable-obj-proxy -2.2.0 <https://github.com/MetaMask/swappable-obj-proxy> +2.3.0 <https://github.com/MetaMask/swappable-obj-proxy> license: ISC authors: undefined ****************************** @metamask/swaps-controller -11.0.0 <https://github.com/MetaMask/swaps-controller> +12.1.0 <https://github.com/MetaMask/swaps-controller> Copyright ConsenSys Software Inc. 2022. All rights reserved. You acknowledge and agree that ConsenSys Software Inc. (“ConsenSys”) (or ConsenSys’s licensors) own all legal right, title and interest in and to the work, software, application, source code, documentation and any other documents in this repository (collectively, the “Program”), including any intellectual property rights which subsist in the Program (whether those rights happen to be registered or not, and wherever in the world those rights may exist), whether in source code or any other form. @@ -39384,11 +39553,11 @@ If you have any questions, comments or interest in pursuing any other use cases, ****************************** -@metamask/transaction-controller -39.1.0 <https://github.com/MetaMask/core> +@metamask/token-search-discovery-controller +2.1.0 <https://github.com/MetaMask/core> MIT License -Copyright (c) 2018 MetaMask +Copyright (c) 2025 MetaMask Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal @@ -39410,29 +39579,34 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE ****************************** -@metamask/utils -10.0.1 <https://github.com/MetaMask/utils> -ISC License +@metamask/transaction-controller +45.0.0 <https://github.com/MetaMask/core> +MIT License -Copyright (c) 2022 MetaMask +Copyright (c) 2018 MetaMask -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted, provided that the above -copyright notice and this permission notice appear in all copies. +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES -WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR -ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN -ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF -OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE ****************************** @metamask/utils -3.6.0 <https://github.com/MetaMask/utils> +10.0.1 <https://github.com/MetaMask/utils> ISC License Copyright (c) 2022 MetaMask @@ -39453,7 +39627,7 @@ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ****************************** @metamask/utils -5.0.2 <https://github.com/MetaMask/utils> +11.2.0 <https://github.com/MetaMask/utils> ISC License Copyright (c) 2022 MetaMask @@ -39495,7 +39669,7 @@ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ****************************** @metamask/utils -9.2.1 <https://github.com/MetaMask/utils> +9.3.0 <https://github.com/MetaMask/utils> ISC License Copyright (c) 2022 MetaMask @@ -40056,7 +40230,49 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** minipass -7.1.2 <https://github.com/isaacs/minipass> +3.1.6 <https://github.com/isaacs/minipass> +The ISC License + +Copyright (c) npm, Inc. and Contributors + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR +IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + + +****************************** + +minipass +3.3.6 <https://github.com/isaacs/minipass> +The ISC License + +Copyright (c) 2017-2022 npm, Inc., Isaac Z. Schlueter, and Contributors + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR +IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + + +****************************** + +minipass +4.2.8 <https://github.com/isaacs/minipass> The ISC License Copyright (c) 2017-2023 npm, Inc., Isaac Z. Schlueter, and Contributors @@ -41248,7 +41464,7 @@ THE SOFTWARE. ****************************** @noble/curves -1.3.0 <https://github.com/paulmillr/noble-curves> +1.4.2 <https://github.com/paulmillr/noble-curves> The MIT License (MIT) Copyright (c) 2022 Paul Miller (https://paulmillr.com) @@ -41273,8 +41489,8 @@ THE SOFTWARE. ****************************** -@noble/curves -1.4.0 <https://github.com/paulmillr/noble-curves> +@noble/hashes +1.3.3 <https://github.com/paulmillr/noble-hashes> The MIT License (MIT) Copyright (c) 2022 Paul Miller (https://paulmillr.com) @@ -41300,7 +41516,7 @@ THE SOFTWARE. ****************************** @noble/hashes -1.3.3 <https://github.com/paulmillr/noble-hashes> +1.4.0 <https://github.com/paulmillr/noble-hashes> The MIT License (MIT) Copyright (c) 2022 Paul Miller (https://paulmillr.com) @@ -41326,7 +41542,7 @@ THE SOFTWARE. ****************************** @noble/hashes -1.4.0 <https://github.com/paulmillr/noble-hashes> +1.7.1 <https://github.com/paulmillr/noble-hashes> The MIT License (MIT) Copyright (c) 2022 Paul Miller (https://paulmillr.com) @@ -42176,7 +42392,7 @@ SOFTWARE. ****************************** node-releases -2.0.19 <https://github.com/chicoxyzzy/node-releases> +2.0.18 <https://github.com/chicoxyzzy/node-releases> The MIT License Copyright (c) 2017 Sergey Rubanov (https://github.com/chicoxyzzy) @@ -42600,7 +42816,7 @@ THE SOFTWARE. ****************************** object.assign -4.1.7 <https://github.com/ljharb/object.assign> +4.1.5 <https://github.com/ljharb/object.assign> The MIT License (MIT) Copyright (c) 2014 Jordan Harband @@ -42681,7 +42897,7 @@ SOFTWARE. ****************************** object-inspect -1.13.3 <https://github.com/inspect-js/object-inspect> +1.13.1 <https://github.com/inspect-js/object-inspect> MIT License Copyright (c) 2013 James Halliday @@ -43116,6 +43332,81 @@ The above copyright notice and this permission notice shall be included in all c THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +****************************** + +osenv +0.1.5 <https://github.com/npm/osenv> +The ISC License + +Copyright (c) Isaac Z. Schlueter and Contributors + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR +IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + + +****************************** + +os-homedir +1.0.2 <https://github.com/sindresorhus/os-homedir> +The MIT License (MIT) + +Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + + +****************************** + +os-tmpdir +1.0.2 <https://github.com/sindresorhus/os-tmpdir> +The MIT License (MIT) + +Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + + ****************************** package-json-from-dist @@ -43296,7 +43587,34 @@ SOFTWARE. ****************************** -@parcel/watcher-darwin-arm64 +@parcel/watcher-linux-x64-glibc +2.3.0 <https://github.com/parcel-bundler/watcher> +MIT License + +Copyright (c) 2017-present Devon Govett + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + +****************************** + +@parcel/watcher-linux-x64-musl 2.3.0 <https://github.com/parcel-bundler/watcher> MIT License @@ -43447,24 +43765,24 @@ authors: Jeff Dickey @jdxcode path 0.12.7 <https://github.com/jinder/path> -Copyright Joyent, Inc. and other Node contributors. All rights reserved. -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to -deal in the Software without restriction, including without limitation the -rights to use, copy, modify, merge, publish, distribute, sublicense, and/or -sell copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS -IN THE SOFTWARE. +Copyright Joyent, Inc. and other Node contributors. All rights reserved. +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to +deal in the Software without restriction, including without limitation the +rights to use, copy, modify, merge, publish, distribute, sublicense, and/or +sell copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS +IN THE SOFTWARE. ****************************** @@ -43954,21 +44272,6 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -****************************** - -pify -3.0.0 <https://github.com/sindresorhus/pify> -MIT License - -Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com) - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - ****************************** pify @@ -44663,7 +44966,7 @@ SOFTWARE. ****************************** postcss -8.4.49 <https://github.com/postcss/postcss> +8.4.47 <https://github.com/postcss/postcss> The MIT License (MIT) Copyright 2013 Andrey Sitnik <andrey@sitnik.ru> @@ -45100,365 +45403,365 @@ SOFTWARE. protobufjs 7.3.2 <https://github.com/protobufjs/protobuf.js> -This license applies to all parts of protobuf.js except those files -either explicitly including or referencing a different license or -located in a directory containing a different LICENSE file. - ---- - -Copyright (c) 2016, Daniel Wirtz All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - -* Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. -* Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. -* Neither the name of its author, nor the names of its contributors - may be used to endorse or promote products derived from this software - without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - ---- - -Code generated by the command line utilities is owned by the owner -of the input file used when generating it. This code is not -standalone and requires a support library to be linked with it. This -support library is itself covered by the above license. +This license applies to all parts of protobuf.js except those files +either explicitly including or referencing a different license or +located in a directory containing a different LICENSE file. + +--- + +Copyright (c) 2016, Daniel Wirtz All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + +* Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +* Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +* Neither the name of its author, nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +--- + +Code generated by the command line utilities is owned by the owner +of the input file used when generating it. This code is not +standalone and requires a support library to be linked with it. This +support library is itself covered by the above license. ****************************** @protobufjs/aspromise 1.1.2 <https://github.com/dcodeIO/protobuf.js> -Copyright (c) 2016, Daniel Wirtz All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - -* Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. -* Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. -* Neither the name of its author, nor the names of its contributors - may be used to endorse or promote products derived from this software - without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +Copyright (c) 2016, Daniel Wirtz All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + +* Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +* Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +* Neither the name of its author, nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ****************************** @protobufjs/base64 1.1.2 <https://github.com/dcodeIO/protobuf.js> -Copyright (c) 2016, Daniel Wirtz All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - -* Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. -* Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. -* Neither the name of its author, nor the names of its contributors - may be used to endorse or promote products derived from this software - without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +Copyright (c) 2016, Daniel Wirtz All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + +* Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +* Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +* Neither the name of its author, nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ****************************** @protobufjs/codegen 2.0.4 <https://github.com/dcodeIO/protobuf.js> -Copyright (c) 2016, Daniel Wirtz All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - -* Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. -* Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. -* Neither the name of its author, nor the names of its contributors - may be used to endorse or promote products derived from this software - without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +Copyright (c) 2016, Daniel Wirtz All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + +* Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +* Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +* Neither the name of its author, nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ****************************** @protobufjs/eventemitter 1.1.0 <https://github.com/dcodeIO/protobuf.js> -Copyright (c) 2016, Daniel Wirtz All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - -* Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. -* Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. -* Neither the name of its author, nor the names of its contributors - may be used to endorse or promote products derived from this software - without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +Copyright (c) 2016, Daniel Wirtz All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + +* Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +* Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +* Neither the name of its author, nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ****************************** @protobufjs/fetch 1.1.0 <https://github.com/dcodeIO/protobuf.js> -Copyright (c) 2016, Daniel Wirtz All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - -* Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. -* Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. -* Neither the name of its author, nor the names of its contributors - may be used to endorse or promote products derived from this software - without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +Copyright (c) 2016, Daniel Wirtz All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + +* Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +* Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +* Neither the name of its author, nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ****************************** @protobufjs/float 1.0.2 <https://github.com/dcodeIO/protobuf.js> -Copyright (c) 2016, Daniel Wirtz All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - -* Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. -* Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. -* Neither the name of its author, nor the names of its contributors - may be used to endorse or promote products derived from this software - without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +Copyright (c) 2016, Daniel Wirtz All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + +* Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +* Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +* Neither the name of its author, nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ****************************** @protobufjs/inquire 1.1.0 <https://github.com/dcodeIO/protobuf.js> -Copyright (c) 2016, Daniel Wirtz All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - -* Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. -* Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. -* Neither the name of its author, nor the names of its contributors - may be used to endorse or promote products derived from this software - without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +Copyright (c) 2016, Daniel Wirtz All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + +* Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +* Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +* Neither the name of its author, nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ****************************** @protobufjs/path 1.1.2 <https://github.com/dcodeIO/protobuf.js> -Copyright (c) 2016, Daniel Wirtz All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - -* Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. -* Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. -* Neither the name of its author, nor the names of its contributors - may be used to endorse or promote products derived from this software - without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +Copyright (c) 2016, Daniel Wirtz All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + +* Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +* Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +* Neither the name of its author, nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ****************************** @protobufjs/pool 1.1.0 <https://github.com/dcodeIO/protobuf.js> -Copyright (c) 2016, Daniel Wirtz All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - -* Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. -* Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. -* Neither the name of its author, nor the names of its contributors - may be used to endorse or promote products derived from this software - without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +Copyright (c) 2016, Daniel Wirtz All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + +* Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +* Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +* Neither the name of its author, nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ****************************** @protobufjs/utf8 1.1.0 <https://github.com/dcodeIO/protobuf.js> -Copyright (c) 2016, Daniel Wirtz All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - -* Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. -* Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. -* Neither the name of its author, nor the names of its contributors - may be used to endorse or promote products derived from this software - without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +Copyright (c) 2016, Daniel Wirtz All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + +* Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +* Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +* Neither the name of its author, nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ****************************** @@ -45576,21 +45879,6 @@ The above copyright notice and this permission notice shall be included in all c THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -****************************** - -p-throttle -4.1.1 <https://github.com/sindresorhus/p-throttle> -MIT License - -Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (https://sindresorhus.com) - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - ****************************** p-try @@ -45751,6 +46039,234 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI +****************************** + +qrcode-terminal +0.11.0 <https://github.com/gtanner/qrcode-terminal> + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + +============================================================== +This product also include the following software: +============================================================== + + QRCode for JavaScript + + Copyright (c) 2009 Kazuhiko Arase + + URL: http://www.d-project.com/ + + Licensed under the MIT license: + http://www.opensource.org/licenses/mit-license.php + + The word "QR Code" is registered trademark of + DENSO WAVE INCORPORATED + http://www.denso-wave.com/qrcode/faqpatent-e.html + +Located in ./vendor/QRCode +- project has been modified to work in Node and some refactoring was done for code cleanup + + ****************************** qs @@ -46987,7 +47503,7 @@ authors: undefined ****************************** @react-native-community/blur -4.4.0 <https://github.com/react-native-community/react-native-blur> +4.4.1 <https://github.com/react-native-community/react-native-blur> MIT License Copyright (c) 2022 React Native Community @@ -48604,7 +49120,7 @@ SOFTWARE. ****************************** react-native-reanimated -3.3.0 <https://github.com/software-mansion/react-native-reanimated> +3.4.2 <https://github.com/software-mansion/react-native-reanimated> The MIT License (MIT) Copyright (c) 2016 Software Mansion <swmansion.com> @@ -49243,220 +49759,11 @@ SOFTWARE. ****************************** -react-native-view-shot -3.1.2 <https://github.com/gre/react-native-view-shot> -The MIT License (MIT) - -Copyright (c) 2016 Gaëtan Renaudeau - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - - -****************************** - -@react-native/virtualized-lists -0.72.8 <https://github.com/facebook/react-native> -license: MIT -authors: undefined - -****************************** - -react-native-webview-invoke -0.6.2 <https://github.com/pinqy520/react-native-webview-invoke> -Copyright (c) 2016 Huang Qi - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - -****************************** - -@react-navigation/bottom-tabs -5.11.11 <https://github.com/react-navigation/react-navigation> -MIT License - -Copyright (c) 2017 React Navigation Contributors - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - - -****************************** - -@react-navigation/compat -5.3.20 <https://github.com/react-navigation/react-navigation> -MIT License - -Copyright (c) 2017 React Navigation Contributors - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - - -****************************** - -@react-navigation/core -5.15.3 <https://github.com/react-navigation/react-navigation> -MIT License - -Copyright (c) 2017 React Navigation Contributors - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - - -****************************** - -@react-navigation/native -5.9.4 <https://github.com/react-navigation/react-navigation> -MIT License - -Copyright (c) 2017 React Navigation Contributors - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - - -****************************** - -@react-navigation/routers -5.7.2 <https://github.com/react-navigation/react-navigation> -MIT License - -Copyright (c) 2017 React Navigation Contributors - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - - -****************************** - -@react-navigation/stack -5.14.9 <https://github.com/react-navigation/react-navigation> -MIT License - -Copyright (c) 2017 React Navigation Contributors - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - - -****************************** - -react-redux -8.1.3 <https://github.com/reduxjs/react-redux> +react-native-view-shot +3.1.2 <https://github.com/gre/react-native-view-shot> The MIT License (MIT) -Copyright (c) 2015-present Dan Abramov +Copyright (c) 2016 Gaëtan Renaudeau Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal @@ -49477,6 +49784,215 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +****************************** + +@react-native/virtualized-lists +0.72.8 <https://github.com/facebook/react-native> +license: MIT +authors: undefined + +****************************** + +react-native-webview-invoke +0.6.2 <https://github.com/pinqy520/react-native-webview-invoke> +Copyright (c) 2016 Huang Qi + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +****************************** + +@react-navigation/bottom-tabs +5.11.11 <https://github.com/react-navigation/react-navigation> +MIT License + +Copyright (c) 2017 React Navigation Contributors + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + +****************************** + +@react-navigation/compat +5.3.20 <https://github.com/react-navigation/react-navigation> +MIT License + +Copyright (c) 2017 React Navigation Contributors + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + +****************************** + +@react-navigation/core +5.15.3 <https://github.com/react-navigation/react-navigation> +MIT License + +Copyright (c) 2017 React Navigation Contributors + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + +****************************** + +@react-navigation/native +5.9.4 <https://github.com/react-navigation/react-navigation> +MIT License + +Copyright (c) 2017 React Navigation Contributors + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + +****************************** + +@react-navigation/routers +5.7.2 <https://github.com/react-navigation/react-navigation> +MIT License + +Copyright (c) 2017 React Navigation Contributors + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + +****************************** + +@react-navigation/stack +5.14.9 <https://github.com/react-navigation/react-navigation> +MIT License + +Copyright (c) 2017 React Navigation Contributors + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + +****************************** + +react-redux +8.1.3 <https://github.com/reduxjs/react-redux> +The MIT License (MIT) + +Copyright (c) 2015-present Dan Abramov + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + ****************************** react-refresh @@ -50427,27 +50943,27 @@ SOFTWARE. @reduxjs/toolkit 1.9.7 <https://github.com/reduxjs/redux-toolkit> -MIT License - -Copyright (c) 2018 Mark Erikson - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. +MIT License + +Copyright (c) 2018 Mark Erikson + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. ****************************** @@ -50724,33 +51240,33 @@ SOFTWARE. redux-thunk 2.4.2 <https://github.com/reduxjs/redux-thunk> -The MIT License (MIT) - -Copyright (c) 2015-present Dan Abramov - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. +The MIT License (MIT) + +Copyright (c) 2015-present Dan Abramov + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. ****************************** reflect.getprototypeof -1.0.10 <https://github.com/es-shims/Reflect.getPrototypeOf> +1.0.6 <https://github.com/es-shims/Reflect.getPrototypeOf> MIT License Copyright (c) 2021 ECMAScript Shims @@ -50970,7 +51486,7 @@ SOFTWARE. ****************************** regexp.prototype.flags -1.5.4 <https://github.com/es-shims/RegExp.prototype.flags> +1.5.2 <https://github.com/es-shims/RegExp.prototype.flags> The MIT License (MIT) Copyright (C) 2014 Jordan Harband @@ -50998,7 +51514,7 @@ THE SOFTWARE. ****************************** regexpu-core -6.2.0 <https://github.com/mathiasbynens/regexpu-core> +6.1.1 <https://github.com/mathiasbynens/regexpu-core> Copyright Mathias Bynens <https://mathiasbynens.be/> Permission is hereby granted, free of charge, to any person obtaining @@ -51052,7 +51568,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** regjsparser -0.12.0 <https://github.com/jviereck/regjsparser> +0.11.2 <https://github.com/jviereck/regjsparser> Copyright (c) Julian Viereck and Contributors, All Rights Reserved. Redistribution and use in source and binary forms, with or without @@ -51076,6 +51592,13 @@ ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +****************************** + +remove-trailing-slash +0.1.1 <https://github.com/stephenmathieson/remove-trailing-slash> +license: MIT +authors: Stephen Mathieson <me@stephenmathieson.com> + ****************************** @reown/walletkit @@ -51406,60 +51929,60 @@ SOFTWARE. reselect 4.1.8 <https://github.com/reduxjs/reselect> -The MIT License (MIT) - -Copyright (c) 2015-2018 Reselect Contributors - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. +The MIT License (MIT) + +Copyright (c) 2015-2018 Reselect Contributors + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. ****************************** reselect 5.1.1 <https://github.com/reduxjs/reselect> -The MIT License (MIT) - -Copyright (c) 2015-2018 Reselect Contributors - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. +The MIT License (MIT) + +Copyright (c) 2015-2018 Reselect Contributors + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. ****************************** resolve -1.22.10 <https://github.com/browserify/resolve> +1.22.8 <https://github.com/browserify/resolve> MIT License Copyright (c) 2012 James Halliday @@ -52822,7 +53345,7 @@ rxjs ****************************** safe-array-concat -1.1.3 <https://github.com/ljharb/safe-array-concat> +1.1.2 <https://github.com/ljharb/safe-array-concat> MIT License Copyright (c) 2023 Jordan Harband @@ -52907,33 +53430,6 @@ safe-json-stringify license: MIT authors: Debitoor -****************************** - -safe-push-apply -1.0.0 <https://github.com/ljharb/safe-push-apply> -MIT License - -Copyright (c) 2024 Jordan Harband - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - - ****************************** safer-buffer @@ -52964,7 +53460,7 @@ SOFTWARE. ****************************** safe-regex-test -1.1.0 <https://github.com/ljharb/safe-regex-test> +1.0.3 <https://github.com/ljharb/safe-regex-test> MIT License Copyright (c) 2022 Jordan Harband @@ -53187,7 +53683,7 @@ THE SOFTWARE. ****************************** @scure/base -1.1.6 <https://github.com/paulmillr/scure-base> +1.1.9 <https://github.com/paulmillr/scure-base> The MIT License (MIT) Copyright (c) 2022 Paul Miller (https://paulmillr.com) @@ -53214,7 +53710,7 @@ THE SOFTWARE. ****************************** @scure/bip32 -1.3.3 <https://github.com/paulmillr/scure-bip32> +1.4.0 <https://github.com/paulmillr/scure-bip32> The MIT License (MIT) Copyright (c) 2022 Patricio Palladino, Paul Miller (paulmillr.com) @@ -53241,7 +53737,7 @@ THE SOFTWARE. ****************************** @scure/bip39 -1.2.2 <https://github.com/paulmillr/scure-bip39> +1.3.0 <https://github.com/paulmillr/scure-bip39> The MIT License (MIT) Copyright (c) 2022 Patricio Palladino, Paul Miller (paulmillr.com) @@ -53678,7 +54174,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ****************************** -@sentry/cli-darwin +@sentry/cli-linux-x64 2.36.6 <https://github.com/getsentry/sentry-cli> license: BSD-3-Clause authors: undefined @@ -54482,33 +54978,6 @@ set-immediate-shim license: MIT authors: Sindre Sorhus <sindresorhus@gmail.com> -****************************** - -set-proto -1.0.0 <https://github.com/ljharb/set-proto> -MIT License - -Copyright (c) 2024 Jordan Harband - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - - ****************************** setprototypeof @@ -55238,88 +55707,7 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** side-channel -1.1.0 <https://github.com/ljharb/side-channel> -MIT License - -Copyright (c) 2019 Jordan Harband - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - - -****************************** - -side-channel-list -1.0.0 <https://github.com/ljharb/side-channel-list> -MIT License - -Copyright (c) 2024 Jordan Harband - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - - -****************************** - -side-channel-map -1.0.1 <https://github.com/ljharb/side-channel-map> -MIT License - -Copyright (c) 2024 Jordan Harband - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - - -****************************** - -side-channel-weakmap -1.0.2 <https://github.com/ljharb/side-channel-weakmap> +1.0.6 <https://github.com/ljharb/side-channel> MIT License Copyright (c) 2019 Jordan Harband @@ -55542,28 +55930,28 @@ THE SOFTWARE. @sinclair/typebox 0.27.8 <https://github.com/sinclairzx81/typebox> -TypeBox: JSON Schema Type Builder with Static Type Resolution for TypeScript - -The MIT License (MIT) - -Copyright (c) 2017-2023 Haydn Paterson (sinclair) <haydn.developer@gmail.com> - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +TypeBox: JSON Schema Type Builder with Static Type Resolution for TypeScript + +The MIT License (MIT) + +Copyright (c) 2017-2023 Haydn Paterson (sinclair) <haydn.developer@gmail.com> + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** @@ -55954,6 +56342,162 @@ CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +****************************** + +@solana/addresses +2.0.0 <https://github.com/solana-labs/solana-web3.js> +Copyright (c) 2023 Solana Labs, Inc + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +****************************** + +@solana/assertions +2.0.0 <https://github.com/solana-labs/solana-web3.js> +Copyright (c) 2023 Solana Labs, Inc + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +****************************** + +@solana/codecs-core +2.0.0 <https://github.com/solana-labs/solana-web3.js> +Copyright (c) 2023 Solana Labs, Inc + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +****************************** + +@solana/codecs-numbers +2.0.0 <https://github.com/solana-labs/solana-web3.js> +Copyright (c) 2023 Solana Labs, Inc + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +****************************** + +@solana/codecs-strings +2.0.0 <https://github.com/solana-labs/solana-web3.js> +Copyright (c) 2023 Solana Labs, Inc + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +****************************** + +@solana/errors +2.0.0 <https://github.com/solana-labs/solana-web3.js> +Copyright (c) 2023 Solana Labs, Inc + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + ****************************** sonic-boom @@ -96669,7 +97213,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** string.prototype.trim -1.2.10 <https://github.com/es-shims/String.prototype.trim> +1.2.9 <https://github.com/es-shims/String.prototype.trim> The MIT License (MIT) Copyright (c) 2015 Jordan Harband @@ -96696,7 +97240,7 @@ SOFTWARE. ****************************** string.prototype.trimend -1.0.9 <https://github.com/es-shims/String.prototype.trimEnd> +1.0.8 <https://github.com/es-shims/String.prototype.trimEnd> MIT License Copyright (c) 2017 Khaled Al-Ansari @@ -98531,7 +99075,7 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** traverse -0.6.11 <https://github.com/ljharb/js-traverse> +0.6.10 <https://github.com/ljharb/js-traverse> MIT License Copyright (c) 2010 James Halliday and contributors @@ -98826,34 +99370,34 @@ ts-interface-checker tslib 1.14.1 <https://github.com/Microsoft/tslib> -Copyright (c) Microsoft Corporation. - -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH -REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY -AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, -INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM -LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR -OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +Copyright (c) Microsoft Corporation. + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR +OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ****************************** tslib 2.8.1 <https://github.com/Microsoft/tslib> -Copyright (c) Microsoft Corporation. - -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH -REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY -AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, -INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM -LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR -OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +Copyright (c) Microsoft Corporation. + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR +OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ****************************** @@ -99066,27 +99610,27 @@ ts-toolbelt tsutils 3.21.0 <https://github.com/ajafff/tsutils> -The MIT License (MIT) - -Copyright (c) 2017 Klaus Meinhardt - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. +The MIT License (MIT) + +Copyright (c) 2017 Klaus Meinhardt + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. ****************************** @@ -99179,36 +99723,6 @@ OTHER DEALINGS IN THE SOFTWARE. For more information, please refer to <http://unlicense.org> -****************************** - -tweetnacl-util -0.15.1 <https://github.com/dchest/tweetnacl-util-js> -This is free and unencumbered software released into the public domain. - -Anyone is free to copy, modify, publish, use, compile, sell, or -distribute this software, either in source code form or as a compiled -binary, for any purpose, commercial or non-commercial, and by any -means. - -In jurisdictions that recognize copyright laws, the author or authors -of this software dedicate any and all copyright interest in the -software to the public domain. We make this dedication for the benefit -of the public at large and to the detriment of our heirs and -successors. We intend this dedication to be an overt act of -relinquishment in perpetuity of all present and future rights to this -software under copyright law. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR -OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, -ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -OTHER DEALINGS IN THE SOFTWARE. - -For more information, please refer to <http://unlicense.org> - - ****************************** typedarray @@ -99253,7 +99767,7 @@ typedarray ****************************** typed-array-buffer -1.0.3 <https://github.com/inspect-js/typed-array-buffer> +1.0.2 <https://github.com/ljharb/typed-array-buffer> MIT License Copyright (c) 2023 Jordan Harband @@ -99280,7 +99794,7 @@ SOFTWARE. ****************************** typed-array-byte-length -1.0.3 <https://github.com/inspect-js/typed-array-byte-length> +1.0.1 <https://github.com/inspect-js/typed-array-byte-length> MIT License Copyright (c) 2020 Inspect JS @@ -99307,7 +99821,7 @@ SOFTWARE. ****************************** typed-array-byte-offset -1.0.4 <https://github.com/inspect-js/typed-array-byte-offset> +1.0.2 <https://github.com/inspect-js/typed-array-byte-offset> MIT License Copyright (c) 2020 Inspect JS @@ -99334,7 +99848,7 @@ SOFTWARE. ****************************** typed-array-length -1.0.7 <https://github.com/inspect-js/typed-array-length> +1.0.6 <https://github.com/inspect-js/typed-array-length> MIT License Copyright (c) 2020 Inspect JS @@ -99361,7 +99875,7 @@ SOFTWARE. ****************************** typedarray.prototype.slice -1.0.5 <https://github.com/es-shims/TypedArray.prototype.slice> +1.0.3 <https://github.com/es-shims/TypedArray.prototype.slice> MIT License Copyright (c) 2023 ECMAScript Shims @@ -99757,13 +100271,6 @@ authors: Sindre Sorhus <sindresorhus@gmail.com> ****************************** -type-fest -4.26.1 <https://github.com/sindresorhus/type-fest> -license: (MIT OR CC0-1.0) -authors: Sindre Sorhus <sindresorhus@gmail.com> - -****************************** - type-is 1.6.18 <https://github.com/jshttp/type-is> (The MIT License) @@ -100513,251 +101020,8 @@ authors: Mohamed Hegazy <https://github.com/mhegazy> ****************************** -@types/hammerjs -2.0.40 <https://github.com/DefinitelyTyped/DefinitelyTyped> - MIT License - - Copyright (c) Microsoft Corporation. - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in all - copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - SOFTWARE - - -****************************** - -@types/hoist-non-react-statics -3.3.5 <https://github.com/DefinitelyTyped/DefinitelyTyped> - MIT License - - Copyright (c) Microsoft Corporation. - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in all - copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - SOFTWARE - - -****************************** - -@types/istanbul-lib-coverage -2.0.3 <https://github.com/DefinitelyTyped/DefinitelyTyped> - MIT License - - Copyright (c) Microsoft Corporation. - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in all - copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - SOFTWARE - - -****************************** - -@types/istanbul-lib-report -3.0.0 <https://github.com/DefinitelyTyped/DefinitelyTyped> - MIT License - - Copyright (c) Microsoft Corporation. All rights reserved. - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in all - copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - SOFTWARE - - -****************************** - -@types/istanbul-reports -3.0.1 <https://github.com/DefinitelyTyped/DefinitelyTyped> - MIT License - - Copyright (c) Microsoft Corporation. - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in all - copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - SOFTWARE - - -****************************** - -@types/jsftp -2.1.2 <https://github.com/DefinitelyTyped/DefinitelyTyped> - MIT License - - Copyright (c) Microsoft Corporation. - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in all - copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - SOFTWARE - - -****************************** - -@types/json-schema -7.0.12 <https://github.com/DefinitelyTyped/DefinitelyTyped> - MIT License - - Copyright (c) Microsoft Corporation. - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in all - copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - SOFTWARE - - -****************************** - -@types/json-schema -7.0.15 <https://github.com/DefinitelyTyped/DefinitelyTyped> - MIT License - - Copyright (c) Microsoft Corporation. - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in all - copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - SOFTWARE - - -****************************** - -@types/klaw -3.0.3 <https://github.com/DefinitelyTyped/DefinitelyTyped> - MIT License - - Copyright (c) Microsoft Corporation. - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in all - copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - SOFTWARE - - -****************************** - -@types/lockfile -1.0.2 <https://github.com/DefinitelyTyped/DefinitelyTyped> +@types/hammerjs +2.0.40 <https://github.com/DefinitelyTyped/DefinitelyTyped> MIT License Copyright (c) Microsoft Corporation. @@ -100783,8 +101047,8 @@ authors: Mohamed Hegazy <https://github.com/mhegazy> ****************************** -@types/mime -1.3.2 <https://github.com/DefinitelyTyped/DefinitelyTyped> +@types/he +1.2.3 <https://github.com/DefinitelyTyped/DefinitelyTyped> MIT License Copyright (c) Microsoft Corporation. @@ -100810,7 +101074,88 @@ authors: Mohamed Hegazy <https://github.com/mhegazy> ****************************** -@types/mime +@types/hoist-non-react-statics +3.3.5 <https://github.com/DefinitelyTyped/DefinitelyTyped> + MIT License + + Copyright (c) Microsoft Corporation. + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all + copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + SOFTWARE + + +****************************** + +@types/istanbul-lib-coverage +2.0.3 <https://github.com/DefinitelyTyped/DefinitelyTyped> + MIT License + + Copyright (c) Microsoft Corporation. + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all + copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + SOFTWARE + + +****************************** + +@types/istanbul-lib-report +3.0.0 <https://github.com/DefinitelyTyped/DefinitelyTyped> + MIT License + + Copyright (c) Microsoft Corporation. All rights reserved. + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all + copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + SOFTWARE + + +****************************** + +@types/istanbul-reports 3.0.1 <https://github.com/DefinitelyTyped/DefinitelyTyped> MIT License @@ -100837,11 +101182,92 @@ authors: Mohamed Hegazy <https://github.com/mhegazy> ****************************** -@types/ms -0.7.31 <https://github.com/DefinitelyTyped/DefinitelyTyped> +@types/jsftp +2.1.2 <https://github.com/DefinitelyTyped/DefinitelyTyped> + MIT License + + Copyright (c) Microsoft Corporation. + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all + copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + SOFTWARE + + +****************************** + +@types/json-schema +7.0.12 <https://github.com/DefinitelyTyped/DefinitelyTyped> + MIT License + + Copyright (c) Microsoft Corporation. + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all + copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + SOFTWARE + + +****************************** + +@types/json-schema +7.0.15 <https://github.com/DefinitelyTyped/DefinitelyTyped> + MIT License + + Copyright (c) Microsoft Corporation. + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all + copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + SOFTWARE + + +****************************** + +@types/klaw +3.0.3 <https://github.com/DefinitelyTyped/DefinitelyTyped> MIT License - Copyright (c) Microsoft Corporation. All rights reserved. + Copyright (c) Microsoft Corporation. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal @@ -100862,6 +101288,114 @@ authors: Mohamed Hegazy <https://github.com/mhegazy> SOFTWARE +****************************** + +@types/lockfile +1.0.2 <https://github.com/DefinitelyTyped/DefinitelyTyped> + MIT License + + Copyright (c) Microsoft Corporation. + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all + copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + SOFTWARE + + +****************************** + +@types/mime +1.3.2 <https://github.com/DefinitelyTyped/DefinitelyTyped> + MIT License + + Copyright (c) Microsoft Corporation. + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all + copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + SOFTWARE + + +****************************** + +@types/mime +3.0.1 <https://github.com/DefinitelyTyped/DefinitelyTyped> + MIT License + + Copyright (c) Microsoft Corporation. + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all + copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + SOFTWARE + + +****************************** + +@types/ms +0.7.31 <https://github.com/DefinitelyTyped/DefinitelyTyped> + MIT License + + Copyright (c) Microsoft Corporation. All rights reserved. + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all + copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + SOFTWARE + + ****************************** @types/mv @@ -101964,10 +102498,37 @@ uint8arrays license: MIT authors: Alex Potsides <alex@achingbrain.net> +****************************** + +ulid +2.3.0 <https://github.com/ulid/javascript> +The MIT License (MIT) + +Copyright (c) 2017 Alizain Feerasta + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + ****************************** unbox-primitive -1.1.0 <https://github.com/ljharb/unbox-primitive> +1.0.2 <https://github.com/ljharb/unbox-primitive> MIT License Copyright (c) 2019 Jordan Harband @@ -102021,7 +102582,7 @@ SOFTWARE. ****************************** undici -5.28.4 <https://github.com/nodejs/undici> +5.28.5 <https://github.com/nodejs/undici> MIT License Copyright (c) Matteo Collina and Undici contributors @@ -102521,7 +103082,7 @@ SOFTWARE. ****************************** update-browserslist-db -1.1.2 <https://github.com/browserslist/update-db> +1.1.1 <https://github.com/browserslist/update-db> The MIT License (MIT) Copyright 2022 Andrey Sitnik <andrey@sitnik.ru> and other contributors @@ -102729,24 +103290,24 @@ SOFTWARE. urlpattern-polyfill 8.0.2 <https://github.com/kenchris/urlpattern-polyfill> -Copyright 2020 Intel Corporation - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +Copyright 2020 Intel Corporation + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** @@ -102779,7 +103340,7 @@ SOFTWARE. ****************************** @urql/core -5.1.0 <https://github.com/urql-graphql/urql> +5.0.8 <https://github.com/urql-graphql/urql> MIT License Copyright (c) 2018–2020 Formidable, @@ -103472,27 +104033,27 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. value-or-promise 1.0.11 <https://github.com/yaacovCR/value-or-promise> -MIT License - -Copyright (c) 2019 Yaacov Rydzinski - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. +MIT License + +Copyright (c) 2019 Yaacov Rydzinski + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. ****************************** @@ -103530,394 +104091,6 @@ TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -****************************** - -@vercel/stega -0.1.2 <> -# Mozilla Public License Version 2.0 - -1. Definitions - ---- - -1.1. "Contributor" -means each individual or legal entity that creates, contributes to -the creation of, or owns Covered Software. - -1.2. "Contributor Version" -means the combination of the Contributions of others (if any) used -by a Contributor and that particular Contributor's Contribution. - -1.3. "Contribution" -means Covered Software of a particular Contributor. - -1.4. "Covered Software" -means Source Code Form to which the initial Contributor has attached -the notice in Exhibit A, the Executable Form of such Source Code -Form, and Modifications of such Source Code Form, in each case -including portions thereof. - -1.5. "Incompatible With Secondary Licenses" -means - - (a) that the initial Contributor has attached the notice described - in Exhibit B to the Covered Software; or - - (b) that the Covered Software was made available under the terms of - version 1.1 or earlier of the License, but not also under the - terms of a Secondary License. - -1.6. "Executable Form" -means any form of the work other than Source Code Form. - -1.7. "Larger Work" -means a work that combines Covered Software with other material, in -a separate file or files, that is not Covered Software. - -1.8. "License" -means this document. - -1.9. "Licensable" -means having the right to grant, to the maximum extent possible, -whether at the time of the initial grant or subsequently, any and -all of the rights conveyed by this License. - -1.10. "Modifications" -means any of the following: - - (a) any file in Source Code Form that results from an addition to, - deletion from, or modification of the contents of Covered - Software; or - - (b) any new file in Source Code Form that contains any Covered - Software. - -1.11. "Patent Claims" of a Contributor -means any patent claim(s), including without limitation, method, -process, and apparatus claims, in any patent Licensable by such -Contributor that would be infringed, but for the grant of the -License, by the making, using, selling, offering for sale, having -made, import, or transfer of either its Contributions or its -Contributor Version. - -1.12. "Secondary License" -means either the GNU General Public License, Version 2.0, the GNU -Lesser General Public License, Version 2.1, the GNU Affero General -Public License, Version 3.0, or any later versions of those -licenses. - -1.13. "Source Code Form" -means the form of the work preferred for making modifications. - -1.14. "You" (or "Your") -means an individual or a legal entity exercising rights under this -License. For legal entities, "You" includes any entity that -controls, is controlled by, or is under common control with You. For -purposes of this definition, "control" means (a) the power, direct -or indirect, to cause the direction or management of such entity, -whether by contract or otherwise, or (b) ownership of more than -fifty percent (50%) of the outstanding shares or beneficial -ownership of such entity. - -2. License Grants and Conditions - ---- - -2.1. Grants - -Each Contributor hereby grants You a world-wide, royalty-free, -non-exclusive license: - -(a) under intellectual property rights (other than patent or trademark) -Licensable by such Contributor to use, reproduce, make available, -modify, display, perform, distribute, and otherwise exploit its -Contributions, either on an unmodified basis, with Modifications, or -as part of a Larger Work; and - -(b) under Patent Claims of such Contributor to make, use, sell, offer -for sale, have made, import, and otherwise transfer either its -Contributions or its Contributor Version. - -2.2. Effective Date - -The licenses granted in Section 2.1 with respect to any Contribution -become effective for each Contribution on the date the Contributor first -distributes such Contribution. - -2.3. Limitations on Grant Scope - -The licenses granted in this Section 2 are the only rights granted under -this License. No additional rights or licenses will be implied from the -distribution or licensing of Covered Software under this License. -Notwithstanding Section 2.1(b) above, no patent license is granted by a -Contributor: - -(a) for any code that a Contributor has removed from Covered Software; -or - -(b) for infringements caused by: (i) Your and any other third party's -modifications of Covered Software, or (ii) the combination of its -Contributions with other software (except as part of its Contributor -Version); or - -(c) under Patent Claims infringed by Covered Software in the absence of -its Contributions. - -This License does not grant any rights in the trademarks, service marks, -or logos of any Contributor (except as may be necessary to comply with -the notice requirements in Section 3.4). - -2.4. Subsequent Licenses - -No Contributor makes additional grants as a result of Your choice to -distribute the Covered Software under a subsequent version of this -License (see Section 10.2) or under the terms of a Secondary License (if -permitted under the terms of Section 3.3). - -2.5. Representation - -Each Contributor represents that the Contributor believes its -Contributions are its original creation(s) or it has sufficient rights -to grant the rights to its Contributions conveyed by this License. - -2.6. Fair Use - -This License is not intended to limit any rights You have under -applicable copyright doctrines of fair use, fair dealing, or other -equivalents. - -2.7. Conditions - -Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted -in Section 2.1. - -3. Responsibilities - ---- - -3.1. Distribution of Source Form - -All distribution of Covered Software in Source Code Form, including any -Modifications that You create or to which You contribute, must be under -the terms of this License. You must inform recipients that the Source -Code Form of the Covered Software is governed by the terms of this -License, and how they can obtain a copy of this License. You may not -attempt to alter or restrict the recipients' rights in the Source Code -Form. - -3.2. Distribution of Executable Form - -If You distribute Covered Software in Executable Form then: - -(a) such Covered Software must also be made available in Source Code -Form, as described in Section 3.1, and You must inform recipients of -the Executable Form how they can obtain a copy of such Source Code -Form by reasonable means in a timely manner, at a charge no more -than the cost of distribution to the recipient; and - -(b) You may distribute such Executable Form under the terms of this -License, or sublicense it under different terms, provided that the -license for the Executable Form does not attempt to limit or alter -the recipients' rights in the Source Code Form under this License. - -3.3. Distribution of a Larger Work - -You may create and distribute a Larger Work under terms of Your choice, -provided that You also comply with the requirements of this License for -the Covered Software. If the Larger Work is a combination of Covered -Software with a work governed by one or more Secondary Licenses, and the -Covered Software is not Incompatible With Secondary Licenses, this -License permits You to additionally distribute such Covered Software -under the terms of such Secondary License(s), so that the recipient of -the Larger Work may, at their option, further distribute the Covered -Software under the terms of either this License or such Secondary -License(s). - -3.4. Notices - -You may not remove or alter the substance of any license notices -(including copyright notices, patent notices, disclaimers of warranty, -or limitations of liability) contained within the Source Code Form of -the Covered Software, except that You may alter any license notices to -the extent required to remedy known factual inaccuracies. - -3.5. Application of Additional Terms - -You may choose to offer, and to charge a fee for, warranty, support, -indemnity or liability obligations to one or more recipients of Covered -Software. However, You may do so only on Your own behalf, and not on -behalf of any Contributor. You must make it absolutely clear that any -such warranty, support, indemnity, or liability obligation is offered by -You alone, and You hereby agree to indemnify every Contributor for any -liability incurred by such Contributor as a result of warranty, support, -indemnity or liability terms You offer. You may include additional -disclaimers of warranty and limitations of liability specific to any -jurisdiction. - -4. Inability to Comply Due to Statute or Regulation - ---- - -If it is impossible for You to comply with any of the terms of this -License with respect to some or all of the Covered Software due to -statute, judicial order, or regulation then You must: (a) comply with -the terms of this License to the maximum extent possible; and (b) -describe the limitations and the code they affect. Such description must -be placed in a text file included with all distributions of the Covered -Software under this License. Except to the extent prohibited by statute -or regulation, such description must be sufficiently detailed for a -recipient of ordinary skill to be able to understand it. - -5. Termination - ---- - -5.1. The rights granted under this License will terminate automatically -if You fail to comply with any of its terms. However, if You become -compliant, then the rights granted under this License from a particular -Contributor are reinstated (a) provisionally, unless and until such -Contributor explicitly and finally terminates Your grants, and (b) on an -ongoing basis, if such Contributor fails to notify You of the -non-compliance by some reasonable means prior to 60 days after You have -come back into compliance. Moreover, Your grants from a particular -Contributor are reinstated on an ongoing basis if such Contributor -notifies You of the non-compliance by some reasonable means, this is the -first time You have received notice of non-compliance with this License -from such Contributor, and You become compliant prior to 30 days after -Your receipt of the notice. - -5.2. If You initiate litigation against any entity by asserting a patent -infringement claim (excluding declaratory judgment actions, -counter-claims, and cross-claims) alleging that a Contributor Version -directly or indirectly infringes any patent, then the rights granted to -You by any and all Contributors for the Covered Software under Section -2.1 of this License shall terminate. - -5.3. In the event of termination under Sections 5.1 or 5.2 above, all -end user license agreements (excluding distributors and resellers) which -have been validly granted by You or Your distributors under this License -prior to termination shall survive termination. - ---- - -- * -- 6. Disclaimer of Warranty \* -- ------------------------- \* -- * -- Covered Software is provided under this License on an "as is" \* -- basis, without warranty of any kind, either expressed, implied, or \* -- statutory, including, without limitation, warranties that the \* -- Covered Software is free of defects, merchantable, fit for a \* -- particular purpose or non-infringing. The entire risk as to the \* -- quality and performance of the Covered Software is with You. \* -- Should any Covered Software prove defective in any respect, You \* -- (not any Contributor) assume the cost of any necessary servicing, \* -- repair, or correction. This disclaimer of warranty constitutes an \* -- essential part of this License. No use of any Covered Software is \* -- authorized under this License except under this disclaimer. \* -- * - ---- - ---- - -- * -- 7. Limitation of Liability \* -- -------------------------- \* -- * -- Under no circumstances and under no legal theory, whether tort \* -- (including negligence), contract, or otherwise, shall any \* -- Contributor, or anyone who distributes Covered Software as \* -- permitted above, be liable to You for any direct, indirect, \* -- special, incidental, or consequential damages of any character \* -- including, without limitation, damages for lost profits, loss of \* -- goodwill, work stoppage, computer failure or malfunction, or any \* -- and all other commercial damages or losses, even if such party \* -- shall have been informed of the possibility of such damages. This \* -- limitation of liability shall not apply to liability for death or \* -- personal injury resulting from such party's negligence to the \* -- extent applicable law prohibits such limitation. Some \* -- jurisdictions do not allow the exclusion or limitation of \* -- incidental or consequential damages, so this exclusion and \* -- limitation may not apply to You. \* -- * - ---- - -8. Litigation - ---- - -Any litigation relating to this License may be brought only in the -courts of a jurisdiction where the defendant maintains its principal -place of business and such litigation shall be governed by laws of that -jurisdiction, without reference to its conflict-of-law provisions. -Nothing in this Section shall prevent a party's ability to bring -cross-claims or counter-claims. - -9. Miscellaneous - ---- - -This License represents the complete agreement concerning the subject -matter hereof. If any provision of this License is held to be -unenforceable, such provision shall be reformed only to the extent -necessary to make it enforceable. Any law or regulation which provides -that the language of a contract shall be construed against the drafter -shall not be used to construe this License against a Contributor. - -10. Versions of the License - ---- - -10.1. New Versions - -Mozilla Foundation is the license steward. Except as provided in Section -10.3, no one other than the license steward has the right to modify or -publish new versions of this License. Each version will be given a -distinguishing version number. - -10.2. Effect of New Versions - -You may distribute the Covered Software under the terms of the version -of the License under which You originally received the Covered Software, -or under the terms of any subsequent version published by the license -steward. - -10.3. Modified Versions - -If you create software not governed by this License, and you want to -create a new license for such software, you may create and use a -modified version of this License if you rename the license and remove -any references to the name of the license steward (except to note that -such modified license differs from this License). - -10.4. Distributing Source Code Form that is Incompatible With Secondary -Licenses - -If You choose to distribute Source Code Form that is Incompatible With -Secondary Licenses under the terms of this version of the License, the -notice described in Exhibit B of this License must be attached. - -## Exhibit A - Source Code Form License Notice - -This Source Code Form is subject to the terms of the Mozilla Public -License, v. 2.0. If a copy of the MPL was not distributed with this -file, You can obtain one at http://mozilla.org/MPL/2.0/. - -If it is not possible or desirable to put the notice in a particular -file, then You may include the notice in a location (such as a LICENSE -file in a relevant directory) where a recipient would be likely to look -for such a notice. - -You may add additional accurate notices of copyright ownership. - -## Exhibit B - "Incompatible With Secondary Licenses" Notice - -This Source Code Form is "Incompatible With Secondary Licenses", as -defined by the Mozilla Public License, v. 2.0. - - ****************************** vlq @@ -107199,6 +107372,214 @@ CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. +****************************** + +web-vitals +4.2.4 <https://github.com/GoogleChrome/web-vitals> + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2020 Google LLC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + https://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + ****************************** whatwg-fetch @@ -107345,7 +107726,7 @@ IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ****************************** which-boxed-primitive -1.1.1 <https://github.com/inspect-js/which-boxed-primitive> +1.0.2 <https://github.com/inspect-js/which-boxed-primitive> MIT License Copyright (c) 2019 Jordan Harband @@ -107372,7 +107753,7 @@ SOFTWARE. ****************************** which-builtin-type -1.2.1 <https://github.com/inspect-js/which-builtin-type> +1.1.3 <https://github.com/inspect-js/which-builtin-type> MIT License Copyright (c) 2020 ECMAScript Shims @@ -107399,7 +107780,7 @@ SOFTWARE. ****************************** which-collection -1.0.2 <https://github.com/inspect-js/which-collection> +1.0.1 <https://github.com/inspect-js/which-collection> MIT License Copyright (c) 2019 Inspect JS @@ -107445,7 +107826,7 @@ THIS SOFTWARE. ****************************** which-typed-array -1.1.18 <https://github.com/inspect-js/which-typed-array> +1.1.15 <https://github.com/inspect-js/which-typed-array> The MIT License (MIT) Copyright (c) 2015 Jordan Harband @@ -107954,81 +108335,81 @@ IN THE SOFTWARE. xmlbuilder 11.0.1 <https://github.com/oozcitak/xmlbuilder-js> -The MIT License (MIT) - -Copyright (c) 2013 Ozgur Ozcitak - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. +The MIT License (MIT) + +Copyright (c) 2013 Ozgur Ozcitak + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. ****************************** xmlbuilder 14.0.0 <https://github.com/oozcitak/xmlbuilder-js> -The MIT License (MIT) - -Copyright (c) 2013 Ozgur Ozcitak - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. +The MIT License (MIT) + +Copyright (c) 2013 Ozgur Ozcitak + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. ****************************** xmlbuilder 15.1.1 <https://github.com/oozcitak/xmlbuilder-js> -The MIT License (MIT) - -Copyright (c) 2013 Ozgur Ozcitak - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. +The MIT License (MIT) + +Copyright (c) 2013 Ozgur Ozcitak + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. ****************************** diff --git a/babel.config.js b/babel.config.js index 118e11284e47..349c0cecdef7 100644 --- a/babel.config.js +++ b/babel.config.js @@ -36,6 +36,10 @@ module.exports = { test: './app/core/redux/ReduxService.ts', plugins: [['@babel/plugin-transform-private-methods', { loose: true }]], }, + { + test: './app/core/Engine/Engine.ts', + plugins: [['@babel/plugin-transform-private-methods', { loose: true }]], + }, ], env: { production: { diff --git a/bitrise.yml b/bitrise.yml index 068c41b54096..53ce336fdd60 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -165,8 +165,8 @@ stages: - run_tag_smoke_confirmations_redesigned_ios: {} - run_tag_smoke_swaps_ios: {} - run_tag_smoke_swaps_android: {} - - run_tag_smoke_stake_ios: {} - - run_tag_smoke_stake_android: {} + # run_tag_smoke_stake_ios: {} + # run_tag_smoke_stake_android: {} - run_tag_smoke_core_ios: {} - run_tag_smoke_core_android: {} - run_tag_multichain_permissions_ios: {} @@ -1525,7 +1525,7 @@ workflows: - pipeline_intermediate_files: ios/build/output/MetaMask.ipa:BITRISE_APP_STORE_IPA_PATH - deploy_path: ios/build/output/MetaMask.ipa title: Deploy iOS IPA - - deploy-to-bitrise-io@1.6.1: + - deploy-to-bitrise-io@2.2.3: is_always_run: false is_skippable: true inputs: @@ -1684,7 +1684,7 @@ workflows: - pipeline_intermediate_files: ios/build/output/MetaMask-Flask.ipa:BITRISE_APP_STORE_IPA_PATH - deploy_path: ios/build/output/MetaMask-Flask.ipa title: Deploy iOS IPA - - deploy-to-bitrise-io@1.6.1: + - deploy-to-bitrise-io@2.2.3: is_always_run: false is_skippable: true inputs: @@ -1825,16 +1825,16 @@ app: PROJECT_LOCATION_IOS: ios - opts: is_expand: false - VERSION_NAME: 7.41.0 + VERSION_NAME: 7.42.0 - opts: is_expand: false - VERSION_NUMBER: 1586 + VERSION_NUMBER: 1600 - opts: is_expand: false - FLASK_VERSION_NAME: 7.41.0 + FLASK_VERSION_NAME: 7.42.0 - opts: is_expand: false - FLASK_VERSION_NUMBER: 1586 + FLASK_VERSION_NUMBER: 1600 - opts: is_expand: false ANDROID_APK_LINK: '' diff --git a/e2e/api-mocking/mock-config/mock-events.js b/e2e/api-mocking/mock-config/mock-events.js index 1654c651c880..0d809392b95c 100644 --- a/e2e/api-mocking/mock-config/mock-events.js +++ b/e2e/api-mocking/mock-config/mock-events.js @@ -34,28 +34,6 @@ export const mockEvents = { response: suggestedGasFeesApiGanache, responseCode: 200, }, - - securityAlertApiSupportedChains: { - urlEndpoint: 'https://security-alerts.api.cx.metamask.io/supportedChains', - response: [ - '0xa4b1', - '0xa86a', - '0x2105', - '0x138d5', - '0x38', - '0xe708', - '0x1', - '0x1b6e6', - '0xcc', - '0xa', - '0x89', - '0x82750', - '0xaa36a7', - '0x144', - ], - responseCode: 200, - }, - remoteFeatureFlagsOldConfirmations: { urlEndpoint: 'https://client-config.api.cx.metamask.io/v1/flags?client=mobile&distribution=main&environment=dev', diff --git a/e2e/fixtures/fixture-builder.js b/e2e/fixtures/fixture-builder.js index cf4137c58ad5..0361c9b70879 100644 --- a/e2e/fixtures/fixture-builder.js +++ b/e2e/fixtures/fixture-builder.js @@ -4,6 +4,7 @@ import { getGanachePort } from './utils'; import { merge } from 'lodash'; import { CustomNetworks, PopularNetworksList } from '../resources/networks.e2e'; import { CHAIN_IDS } from '@metamask/transaction-controller'; +import { SolScope } from '@metamask/keyring-api'; export const DEFAULT_FIXTURE_ACCOUNT = '0x76cf1CdD1fcC252442b50D6e97207228aA4aefC3'; @@ -436,6 +437,15 @@ class FixtureBuilder { isUpdatingMetamaskNotificationsAccount: [], isCheckingAccountsPresence: false, }, + MultichainNetworkController: { + selectedMultichainNetworkChainId: SolScope.Mainnet, + multichainNetworkConfigurationsByChainId: {}, + isEvmSelected: true, + }, + MultichainAssetsController: { + accountsAssets: {}, + assetsMetadata: {}, + }, }, }, privacy: { diff --git a/e2e/pages/Browser/Confirmations/PageSections.js b/e2e/pages/Browser/Confirmations/PageSections.js index 18dbf8950863..1e9500147d15 100644 --- a/e2e/pages/Browser/Confirmations/PageSections.js +++ b/e2e/pages/Browser/Confirmations/PageSections.js @@ -1,4 +1,5 @@ import { ConfirmationPageSectionsSelectorIDs } from '../../../selectors/Confirmation/ConfirmationView.selectors'; +import Gestures from '../../../utils/Gestures'; import Matchers from '../../../utils/Matchers'; class PageSections { diff --git a/e2e/pages/Browser/TestDApp.js b/e2e/pages/Browser/TestDApp.js index 9814fde51ca0..cc30c9cb3fe8 100644 --- a/e2e/pages/Browser/TestDApp.js +++ b/e2e/pages/Browser/TestDApp.js @@ -96,6 +96,12 @@ class TestDApp { TestDappSelectorsWebIDs.ETHEREUM_SIGN, ); } + get permitSignButton() { + return Matchers.getElementByWebID( + BrowserViewSelectorsIDs.BROWSER_WEBVIEW_ID, + TestDappSelectorsWebIDs.PERMIT_SIGN, + ); + } // This taps on the transfer tokens button under the "SEND TOKENS section" get nftTransferFromTokensButton() { return Matchers.getElementByWebID( @@ -199,6 +205,10 @@ class TestDApp { await this.tapButton(this.ethereumSignButton); } + async tapPermitSignButton() { + await this.tapButton(this.permitSignButton); + } + async tapERC20TransferButton() { await this.tapButton(this.erc20TransferTokensButton); } diff --git a/e2e/pages/Ramps/BuildQuoteView.js b/e2e/pages/Ramps/BuildQuoteView.js index 150a3721336d..23455675a276 100644 --- a/e2e/pages/Ramps/BuildQuoteView.js +++ b/e2e/pages/Ramps/BuildQuoteView.js @@ -47,6 +47,14 @@ class BuildQuoteView { return Matchers.getElementByID(BuildQuoteSelectors.MAX_LIMIT_ERROR); } + get insufficientBalanceErrorMessage() { + return Matchers.getElementByID(BuildQuoteSelectors.INSUFFICIENT_BALANCE_ERROR); + } + + get keypadDeleteButton() { + return Matchers.getElementByID(BuildQuoteSelectors.KEYPAD_DELETE_BUTTON); + } + async tapCancelButton() { await Gestures.waitAndTap(this.cancelButton); } @@ -69,7 +77,7 @@ class BuildQuoteView { await Gestures.waitAndTap(this.selectCurrencyDropdown); } - async enterFiatAmount(amount) { + async enterAmount(amount) { await Gestures.waitAndTap(Matchers.getElementByID(BuildQuoteSelectors.AMOUNT_INPUT)) for (let digit = 0; digit < amount.length; digit++) { const numberButton = Matchers.getElementByText(amount[digit]); @@ -90,6 +98,13 @@ class BuildQuoteView { async tapRegionSelector() { await Gestures.waitAndTap(this.regionDropdown); } + + async tapKeypadDeleteButton(times) { + await Gestures.waitAndTap(Matchers.getElementByID(BuildQuoteSelectors.AMOUNT_INPUT)) + for (let i = 0; i < times; i++) { + await Gestures.waitAndTap(this.keypadDeleteButton); + } + } } export default new BuildQuoteView(); diff --git a/e2e/pages/Ramps/QuotesView.js b/e2e/pages/Ramps/QuotesView.js index ee01cb74e129..725dec451c20 100644 --- a/e2e/pages/Ramps/QuotesView.js +++ b/e2e/pages/Ramps/QuotesView.js @@ -4,7 +4,7 @@ import { QuoteSelectors } from '../../selectors/Ramps/Quotes.selectors'; class QuotesView { get selectAQuoteLabel() { - return Matchers.getElementByText(QuoteSelectors.SELECT_A_QUOTE); + return Matchers.getElementByText(QuoteSelectors.RECOMMENDED_QUOTE); } get quoteAmountLabel() { diff --git a/e2e/pages/Receive/PaymentRequestQrBottomSheet.js b/e2e/pages/Receive/PaymentRequestQrBottomSheet.js index 674dba57dcd7..f9267f85687b 100644 --- a/e2e/pages/Receive/PaymentRequestQrBottomSheet.js +++ b/e2e/pages/Receive/PaymentRequestQrBottomSheet.js @@ -8,7 +8,9 @@ class PaymentRequestQrBottomSheet { } get closeButton() { - return Matchers.getElementByID(SendLinkViewSelectorsIDs.CLOSE_QR_MODAL_BUTTON); + return Matchers.getElementByID( + SendLinkViewSelectorsIDs.CLOSE_QR_MODAL_BUTTON, + ); } async tapCloseButton() { diff --git a/e2e/pages/Receive/RequestPaymentModal.js b/e2e/pages/Receive/RequestPaymentModal.js index 0a01e14148eb..35d5a319715e 100644 --- a/e2e/pages/Receive/RequestPaymentModal.js +++ b/e2e/pages/Receive/RequestPaymentModal.js @@ -6,7 +6,7 @@ class RequestPaymentModal { get requestPaymentButton() { return device.getPlatform() === 'android' ? Matchers.getElementByLabel( - RequestPaymentModalSelectorsIDs.REQUEST_BUTTON, + RequestPaymentModalSelectorsIDs.REQUEST_BUTTON, ) : Matchers.getElementByID(RequestPaymentModalSelectorsIDs.REQUEST_BUTTON); } diff --git a/e2e/pages/Receive/SendLinkView.js b/e2e/pages/Receive/SendLinkView.js index a89e479d218d..a9a232ac4bf1 100644 --- a/e2e/pages/Receive/SendLinkView.js +++ b/e2e/pages/Receive/SendLinkView.js @@ -12,7 +12,9 @@ class SendLinkView { } get closeSendLinkButton() { - return Matchers.getElementByID(SendLinkViewSelectorsIDs.CLOSE_SEND_LINK_VIEW_BUTTON); + return Matchers.getElementByID( + SendLinkViewSelectorsIDs.CLOSE_SEND_LINK_VIEW_BUTTON, + ); } get qrCodeButton() { diff --git a/e2e/selectors/Browser/TestDapp.selectors.js b/e2e/selectors/Browser/TestDapp.selectors.js index 7bdd0db6e8dc..80a37385ae29 100644 --- a/e2e/selectors/Browser/TestDapp.selectors.js +++ b/e2e/selectors/Browser/TestDapp.selectors.js @@ -8,6 +8,7 @@ export const TestDappSelectorsWebIDs = { INCREASE_ALLOWANCE_BUTTON_ID: 'increaseTokenAllowance', NFT_TRANSFER_FROM_BUTTON_ID: 'transferFromButton', PERSONAL_SIGN: 'personalSign', + PERMIT_SIGN: 'signPermit', SET_APPROVAL_FOR_ALL_NFT_BUTTON_ID: 'setApprovalForAllButton', SET_APPROVAL_FOR_ALL_ERC1155_BUTTON_ID: 'setApprovalForAllERC1155Button', SIGN_TYPE_DATA: 'signTypedData', diff --git a/e2e/selectors/Confirmation/ConfirmationView.selectors.js b/e2e/selectors/Confirmation/ConfirmationView.selectors.js index 00510e33b907..c0984b8de47d 100644 --- a/e2e/selectors/Confirmation/ConfirmationView.selectors.js +++ b/e2e/selectors/Confirmation/ConfirmationView.selectors.js @@ -21,4 +21,5 @@ export const ConfirmationPageSectionsSelectorIDs = { ORIGIN_INFO_SECTION: 'origin-info-section', SIWE_SIGNING_ACCOUNT_INFO_SECTION: 'siwe-signing-account-info-section', MESSAGE_SECTION: 'message-section', + STAKING_DETAILS_SECTION: 'staking-details-section', }; diff --git a/e2e/selectors/Ramps/BuildQuote.selectors.js b/e2e/selectors/Ramps/BuildQuote.selectors.js index 984ab9c5c98a..a3d123ce916d 100644 --- a/e2e/selectors/Ramps/BuildQuote.selectors.js +++ b/e2e/selectors/Ramps/BuildQuote.selectors.js @@ -13,4 +13,6 @@ export const BuildQuoteSelectors = { DONE_BUTTON: enContent.fiat_on_ramp_aggregator.done, MIN_LIMIT_ERROR: 'min-limit-error', MAX_LIMIT_ERROR: 'max-limit-error', + INSUFFICIENT_BALANCE_ERROR: 'insufficient-balance-error', + KEYPAD_DELETE_BUTTON: 'keypad-delete-button', }; diff --git a/e2e/selectors/Ramps/Quotes.selectors.js b/e2e/selectors/Ramps/Quotes.selectors.js index e6867fff5d58..16d2e5fc5be3 100644 --- a/e2e/selectors/Ramps/Quotes.selectors.js +++ b/e2e/selectors/Ramps/Quotes.selectors.js @@ -1,7 +1,7 @@ import enContent from '../../../locales/languages/en.json'; export const QuoteSelectors = { - SELECT_A_QUOTE: enContent.fiat_on_ramp_aggregator.select_a_quote, + RECOMMENDED_QUOTE: enContent.fiat_on_ramp_aggregator.recommended_quote, QUOTE_AMOUNT_LABEL: 'quote-amount', QUOTES: 'quotes', -}; \ No newline at end of file +}; diff --git a/e2e/specs/confirmations-redesigned/signatures/security-alerts.spec.js b/e2e/specs/confirmations-redesigned/signatures/security-alerts.spec.js index a3f433a83317..e54e73cbe07a 100644 --- a/e2e/specs/confirmations-redesigned/signatures/security-alerts.spec.js +++ b/e2e/specs/confirmations-redesigned/signatures/security-alerts.spec.js @@ -43,7 +43,6 @@ describe(SmokeConfirmationsRedesigned('Security Alert API - Signature'), () => { testSpecificMock: { GET: [ mockEvents.GET.remoteFeatureFlagsReDesignedConfirmations, - mockEvents.GET.securityAlertApiSupportedChains, ...(testSpecificMock.GET ?? []), ], POST: [...(testSpecificMock.POST ?? [])], diff --git a/e2e/specs/quarantine/security-alert-send-eth.mock.failing.js b/e2e/specs/confirmations/security-alert-send-eth.mock.js similarity index 95% rename from e2e/specs/quarantine/security-alert-send-eth.mock.failing.js rename to e2e/specs/confirmations/security-alert-send-eth.mock.js index b3e346fc460e..d44538c6ca23 100644 --- a/e2e/specs/quarantine/security-alert-send-eth.mock.failing.js +++ b/e2e/specs/confirmations/security-alert-send-eth.mock.js @@ -49,7 +49,9 @@ describe(SmokeConfirmations('Security Alert API - Send flow'), () => { it('should not show security alerts for benign requests', async () => { const testSpecificMock = { - GET: [mockEvents.GET.securityAlertApiSupportedChains], + GET: [ + mockEvents.GET.remoteFeatureFlags, + ], POST: [mockEvents.POST.securityAlertApiValidate], }; @@ -67,7 +69,9 @@ describe(SmokeConfirmations('Security Alert API - Send flow'), () => { it('should show security alerts for malicious request', async () => { const testSpecificMock = { - GET: [mockEvents.GET.securityAlertApiSupportedChains], + GET: [ + mockEvents.GET.remoteFeatureFlags, + ], POST: [ { ...mockEvents.POST.securityAlertApiValidate, @@ -92,7 +96,7 @@ describe(SmokeConfirmations('Security Alert API - Send flow'), () => { it('should show security alerts for error when validating request fails', async () => { const testSpecificMock = { GET: [ - mockEvents.GET.securityAlertApiSupportedChains, + mockEvents.GET.remoteFeatureFlags, { urlEndpoint: 'https://static.cx.metamask.io/api/v1/confirmations/ppom/ppom_version.json', diff --git a/e2e/specs/confirmations/signatures/security-alert-signatures.mock.spec.js b/e2e/specs/confirmations/signatures/security-alert-signatures.mock.spec.js index 15f7b9939cdb..8525c4d5d14a 100644 --- a/e2e/specs/confirmations/signatures/security-alert-signatures.mock.spec.js +++ b/e2e/specs/confirmations/signatures/security-alert-signatures.mock.spec.js @@ -61,7 +61,6 @@ describe(SmokeConfirmations('Security Alert API - Signature'), () => { it('should sign typed message', async () => { const testSpecificMock = { GET: [ - mockEvents.GET.securityAlertApiSupportedChains, mockEvents.GET.remoteFeatureFlagsOldConfirmations, ], POST: [ @@ -87,7 +86,6 @@ describe(SmokeConfirmations('Security Alert API - Signature'), () => { it('should show security alert for malicious request', async () => { const testSpecificMock = { GET: [ - mockEvents.GET.securityAlertApiSupportedChains, mockEvents.GET.remoteFeatureFlagsOldConfirmations, ], POST: [ @@ -113,7 +111,6 @@ describe(SmokeConfirmations('Security Alert API - Signature'), () => { it('should show security alert for error when validating request fails', async () => { const testSpecificMock = { GET: [ - mockEvents.GET.securityAlertApiSupportedChains, mockEvents.GET.remoteFeatureFlagsOldConfirmations, { urlEndpoint: diff --git a/e2e/specs/ramps/offramp-limits.spec.js b/e2e/specs/ramps/offramp-limits.spec.js new file mode 100644 index 000000000000..b6e25b9f0d22 --- /dev/null +++ b/e2e/specs/ramps/offramp-limits.spec.js @@ -0,0 +1,60 @@ +'use strict'; +import { loginToApp } from '../../viewHelper'; +import FixtureBuilder from '../../fixtures/fixture-builder'; +import { withFixtures } from '../../fixtures/fixture-helper'; +import TestHelpers from '../../helpers'; +import { SmokeRamps } from '../../tags'; +import { CustomNetworks } from '../../resources/networks.e2e'; +import BuildQuoteView from '../../pages/Ramps/BuildQuoteView'; +import Assertions from '../../utils/Assertions'; +import TabBarComponent from '../../pages/wallet/TabBarComponent'; +import WalletActionsBottomSheet from '../../pages/wallet/WalletActionsBottomSheet'; +import BuyGetStartedView from '../../pages/Ramps/BuyGetStartedView'; + +describe(SmokeRamps('On-Ramp Limits'), () => { + beforeAll(async () => { + await TestHelpers.reverseServerPort(); + }); + + beforeEach(async () => { + jest.setTimeout(150000); + }); + + it('should check order min and maxlimits', async () => { + const franceRegion = { + currencies: ['/currencies/fiat/eur'], + emoji: '🇫🇷', + id: '/regions/fr', + name: 'France', + support: { buy: true, sell: true, recurringBuy: true }, + unsupported: false, + recommended: false, + detected: false, + }; + await withFixtures( + { + fixture: new FixtureBuilder() + .withNetworkController(CustomNetworks.Tenderly.Mainnet) + .withRampsSelectedRegion(franceRegion) + .withRampsSelectedPaymentMethod() + .build(), + restartDevice: true, + }, + async () => { + await loginToApp(); + await TabBarComponent.tapActions(); + await WalletActionsBottomSheet.tapSellButton(); + await BuyGetStartedView.tapGetStartedButton(); + await BuildQuoteView.enterAmount('0.001'); + await Assertions.checkIfVisible(BuildQuoteView.minLimitErrorMessage); + await BuildQuoteView.tapKeypadDeleteButton(4); + await BuildQuoteView.enterAmount('50'); + await Assertions.checkIfVisible(BuildQuoteView.maxLimitErrorMessage); + await BuildQuoteView.tapKeypadDeleteButton(2); + await BuildQuoteView.enterAmount('999'); + await Assertions.checkIfVisible(BuildQuoteView.insufficientBalanceErrorMessage); + await BuildQuoteView.tapCancelButton(); + }, + ); + }); +}); diff --git a/e2e/specs/ramps/offramp.spec.js b/e2e/specs/ramps/offramp.spec.js index 1e04a68a08d7..dcb26c887b61 100644 --- a/e2e/specs/ramps/offramp.spec.js +++ b/e2e/specs/ramps/offramp.spec.js @@ -18,7 +18,7 @@ import SellGetStartedView from '../../pages/Ramps/SellGetStartedView'; import SelectRegionView from '../../pages/Ramps/SelectRegionView'; import SelectPaymentMethodView from '../../pages/Ramps/SelectPaymentMethodView'; import BuildQuoteView from '../../pages/Ramps/BuildQuoteView'; - +import QuotesView from '../../pages/Ramps/QuotesView'; const fixtureServer = new FixtureServer(); const Regions = { @@ -72,5 +72,14 @@ describe(SmokeRamps('Off-Ramp'), () => { await SelectPaymentMethodView.tapContinueButton(); await Assertions.checkIfVisible(BuildQuoteView.amountToSellLabel); await Assertions.checkIfVisible(BuildQuoteView.getQuotesButton); + await BuildQuoteView.tapCancelButton(); + }); + + it('should show quotes', async () => { + await TabBarComponent.tapActions(); + await WalletActionsBottomSheet.tapSellButton(); + await BuildQuoteView.enterAmount('2'); + await BuildQuoteView.tapGetQuotesButton(); + await Assertions.checkIfVisible(QuotesView.quotes); }); }); diff --git a/e2e/specs/ramps/onramp-limits.spec.js b/e2e/specs/ramps/onramp-limits.spec.js index 4eda91069760..ebb38a55cf98 100644 --- a/e2e/specs/ramps/onramp-limits.spec.js +++ b/e2e/specs/ramps/onramp-limits.spec.js @@ -43,9 +43,10 @@ describe(SmokeRamps('On-Ramp Limits'), () => { await TabBarComponent.tapActions(); await WalletActionsBottomSheet.tapBuyButton(); await BuyGetStartedView.tapGetStartedButton(); - await BuildQuoteView.enterFiatAmount('1'); + await BuildQuoteView.enterAmount('1'); await Assertions.checkIfVisible(BuildQuoteView.minLimitErrorMessage); - await BuildQuoteView.enterFiatAmount('55555'); + await BuildQuoteView.tapKeypadDeleteButton(1); + await BuildQuoteView.enterAmount('55555'); await Assertions.checkIfVisible(BuildQuoteView.maxLimitErrorMessage); await BuildQuoteView.tapCancelButton(); }, diff --git a/e2e/specs/ramps/onramp.spec.js b/e2e/specs/ramps/onramp.spec.js index c71bad11775a..dc471f0f4e95 100644 --- a/e2e/specs/ramps/onramp.spec.js +++ b/e2e/specs/ramps/onramp.spec.js @@ -88,7 +88,7 @@ describe(SmokeRamps('Buy Crypto'), () => { await Assertions.checkIfTextIsDisplayed(paymentMethod); await Assertions.checkIfTextIsNotDisplayed('🇺🇸'); await Assertions.checkIfTextIsDisplayed('🇫🇷'); - await BuildQuoteView.enterFiatAmount('100'); + await BuildQuoteView.enterAmount('100'); await BuildQuoteView.tapGetQuotesButton(); await Assertions.checkIfVisible(QuotesView.quotes); await QuotesView.closeQuotesSection(); diff --git a/e2e/specs/stake/stake-action-smoke.spec.js b/e2e/specs/stake/stake-action-smoke.spec.js index 48fb0bece237..e4342a993976 100644 --- a/e2e/specs/stake/stake-action-smoke.spec.js +++ b/e2e/specs/stake/stake-action-smoke.spec.js @@ -37,7 +37,7 @@ const fixtureServer = new FixtureServer(); describe(SmokeStake('Stake from Actions'), () => { const FIRST_ROW = 0; - const AMOUNT_TO_SEND = '.01'; + const AMOUNT_TO_SEND = '.005'; let mockServer; const wallet = ethers.Wallet.createRandom(); @@ -68,6 +68,20 @@ describe(SmokeStake('Stake from Actions'), () => { jest.setTimeout(150000); }); + it('should be able to import stake test account with funds', async () => { + await Assertions.checkIfVisible(WalletView.container); + await WalletView.tapIdenticon(); + await Assertions.checkIfVisible(AccountListBottomSheet.accountList); + await AccountListBottomSheet.tapAddAccountButton(); + await AddAccountBottomSheet.tapImportAccount(); + await Assertions.checkIfVisible(ImportAccountView.container); + await ImportAccountView.enterPrivateKey(process.env.MM_STAKE_TEST_ACCOUNT_PRIVATE_KEY); + await Assertions.checkIfVisible(SuccessImportAccountView.container); + await SuccessImportAccountView.tapCloseButton(); + await AccountListBottomSheet.swipeToDismissAccountsModal(); + await Assertions.checkIfVisible(WalletView.container); + }); + it('should send ETH to new account', async () => { await TabBarComponent.tapActions(); await WalletActionsBottomSheet.tapSendButton(); @@ -87,7 +101,7 @@ describe(SmokeStake('Stake from Actions'), () => { await Assertions.checkIfTextIsNotDisplayed('$0',60000); }); - it('should be able to import the funded account', async () => { + it('should be able to import the new funded account', async () => { await Assertions.checkIfVisible(WalletView.container); await WalletView.tapIdenticon(); await Assertions.checkIfVisible(AccountListBottomSheet.accountList); @@ -105,7 +119,7 @@ describe(SmokeStake('Stake from Actions'), () => { await Assertions.checkIfVisible(TabBarComponent.tabBarWalletButton); await WalletView.tapOnEarnButton(); await Assertions.checkIfVisible(StakeView.stakeContainer); - await StakeView.enterAmount('.004'); + await StakeView.enterAmount('.002'); await StakeView.tapReview(); await StakeView.tapContinue(); await StakeConfirmView.tapConfirmButton(); @@ -128,7 +142,7 @@ describe(SmokeStake('Stake from Actions'), () => { await TestHelpers.delay(3000); await TokenOverview.tapStakeMoreButton(); await Assertions.checkIfVisible(StakeView.stakeContainer); - await StakeView.enterAmount('.003'); + await StakeView.enterAmount('.001'); await StakeView.tapReview(); await StakeView.tapContinue(); await StakeConfirmView.tapConfirmButton(); @@ -247,6 +261,14 @@ it('should Stake Claim ETH', async () => { await TokenOverview.tapClaimButton(); await StakeConfirmView.tapConfirmButton(); await TokenOverview.tapBackButton(); + //Wait for transaction to complete + try { + await Assertions.checkIfTextIsDisplayed('Transaction #3 Complete!',30000); + await TestHelpers.delay(8000); + } catch (e) { + // eslint-disable-next-line no-console + console.log(`Transaction complete didn't pop up: ${e}`); + } await TabBarComponent.tapActivity(); await Assertions.checkIfVisible(ActivitiesView.title); await Assertions.checkIfVisible(ActivitiesView.stackingClaimLabel); diff --git a/ios/MetaMask.xcodeproj/project.pbxproj b/ios/MetaMask.xcodeproj/project.pbxproj index 50f71048c92f..381f6f8b157d 100644 --- a/ios/MetaMask.xcodeproj/project.pbxproj +++ b/ios/MetaMask.xcodeproj/project.pbxproj @@ -1380,7 +1380,7 @@ CODE_SIGN_IDENTITY = "Apple Development"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1586; + CURRENT_PROJECT_VERSION = 1600; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = 48XVW22RCG; @@ -1418,7 +1418,7 @@ "${inherited}", ); LLVM_LTO = YES; - MARKETING_VERSION = 7.41.0; + MARKETING_VERSION = 7.42.0; ONLY_ACTIVE_ARCH = YES; OTHER_CFLAGS = "$(inherited)"; OTHER_LDFLAGS = ( @@ -1449,7 +1449,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMask.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1586; + CURRENT_PROJECT_VERSION = 1600; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 48XVW22RCG; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 48XVW22RCG; @@ -1484,7 +1484,7 @@ "${inherited}", ); LLVM_LTO = YES; - MARKETING_VERSION = 7.41.0; + MARKETING_VERSION = 7.42.0; ONLY_ACTIVE_ARCH = NO; OTHER_CFLAGS = "$(inherited)"; OTHER_LDFLAGS = ( @@ -1514,7 +1514,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMaskDebug.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1586; + CURRENT_PROJECT_VERSION = 1600; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = 48XVW22RCG; @@ -1551,7 +1551,7 @@ "\"$(SRCROOT)/MetaMask/System/Library/Frameworks\"", ); LLVM_LTO = YES; - MARKETING_VERSION = 7.41.0; + MARKETING_VERSION = 7.42.0; ONLY_ACTIVE_ARCH = YES; OTHER_CFLAGS = "$(inherited)"; OTHER_LDFLAGS = ( @@ -1580,7 +1580,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMask.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1586; + CURRENT_PROJECT_VERSION = 1600; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 48XVW22RCG; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 48XVW22RCG; @@ -1615,7 +1615,7 @@ "\"$(SRCROOT)/MetaMask/System/Library/Frameworks\"", ); LLVM_LTO = YES; - MARKETING_VERSION = 7.41.0; + MARKETING_VERSION = 7.42.0; ONLY_ACTIVE_ARCH = NO; OTHER_CFLAGS = "$(inherited)"; OTHER_LDFLAGS = ( @@ -1739,7 +1739,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMaskDebug.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1586; + CURRENT_PROJECT_VERSION = 1600; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = 48XVW22RCG; @@ -1776,7 +1776,7 @@ "\"$(SRCROOT)/MetaMask/System/Library/Frameworks\"", ); LLVM_LTO = YES; - MARKETING_VERSION = 7.41.0; + MARKETING_VERSION = 7.42.0; ONLY_ACTIVE_ARCH = YES; OTHER_CFLAGS = ( "$(inherited)", @@ -1808,7 +1808,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMask.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1586; + CURRENT_PROJECT_VERSION = 1600; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 48XVW22RCG; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 48XVW22RCG; @@ -1843,7 +1843,7 @@ "\"$(SRCROOT)/MetaMask/System/Library/Frameworks\"", ); LLVM_LTO = YES; - MARKETING_VERSION = 7.41.0; + MARKETING_VERSION = 7.42.0; ONLY_ACTIVE_ARCH = NO; OTHER_CFLAGS = ( "$(inherited)", diff --git a/locales/languages/en.json b/locales/languages/en.json index 45d5cf61f5c6..4f49db169ce3 100644 --- a/locales/languages/en.json +++ b/locales/languages/en.json @@ -1,4 +1,18 @@ { + "alert_system": { + "alert_modal": { + "title": "Alert", + "checkbox_label": "I have acknowledged the risk and still want to proceed", + "got_it_btn": "Got it", + "alert_details": "Alert Details" + }, + "confirm_modal": { + "title": "High risk request", + "checkbox_label": "I have acknowledged the alert and still want to proceed", + "review_alerts": "Review all alerts", + "message": "We suggest you reject this request. If you continue, you might put your assets at risk." + } + }, "blockaid_banner": { "approval_farming_description": "If you approve this request, a third party known for scams might take all your assets.", "blur_farming_description": "If you approve this request, someone can steal your assets listed on Blur.", @@ -382,29 +396,6 @@ "description": "We now support multiple RPCs for a single network. Your most recent RPC has been selected as the default one to resolve conflicting information", "accept": "Accept" }, - "nft_details": { - "bought_for": "Bought for", - "highest_floor_price": "Highest floor price", - "data_unavailable": "data unavailable", - "price_unavailable": "price unavailable", - "rank": "Rank", - "contract_address": "Contract address", - "token_id": "Token ID", - "token_symbol": "Token symbol", - "token_standard": "Token standard", - "date_created": "Date created", - "unique_token_holders": "Unique token holders", - "tokens_in_collection": "Tokens in collection", - "creator_address": "Creator address", - "last_sold": "Last sold", - "highest_current_bid": "Highest current bid", - "options": { - "view_on_os": "View on OpenSea", - "remove_nft": "Remove NFT" - }, - "attributes": "Attributes", - "disclaimer": "Disclaimer: MetaMask pulls the media file from the source URL. This URL is sometimes changed by the marketplace the NFT was minted on." - }, "qr_tab_switcher": { "scanner_tab": "Scan QR code", "receive_tab": "Your QR code" @@ -797,6 +788,7 @@ "app_settings": { "enabling_notifications": "Enabling notifications...", "disabling_notifications": "Disabling notifications...", + "updating_account_settings": "Updating account settings...", "reset_notifications_title": "Reset notifications", "reset_notifications_description": "Resetting notifications, means you're deleting your notifications storage keys and resetting all your notification history. Are you sure you want to do this?", "reset_notifications": "Reset notifications", @@ -887,6 +879,7 @@ "notifications_title": "Notifications", "notifications_desc": "Manage your notifications", "allow_notifications": "Allow notifications", + "enable_push_notifications": "Enable push notifications", "allow_notifications_desc": "Stay in the loop on what’s happening in your wallet with notifications. To use notifications, we use a profile to sync some settings across your devices.", "notifications_opts": { "customize_session_title": "Customize your notifications", @@ -1304,8 +1297,8 @@ "swap": "Swapping not supported for this account", "bridge": "Bridging not supported for this account", "send": "Sending not supported for this account", - "earn": "Earning not supported for this account", - "action": "This action is not supported for this account" + "action": "This action is not supported for this account", + "earn": "Earning not supported for this account" }, "description": "Description", "totalSupply": "Total Supply", @@ -1899,7 +1892,8 @@ "this_site_cant": "This site can't be used with your current network. Add network permissions or choose an already permitted network.", "non_permitted_network_description": "This site can't be used with your current network. Add network permissions or choose an already permitted network.", "edit_permissions": "Edit permissions", - "permitted_networks_info_sheet_description": "This is a list of networks that you've previously granted permissions to use on this site. Select one from the list or edit network permissions for this site." + "permitted_networks_info_sheet_description": "This is a list of networks that you've previously granted permissions to use on this site. Select one from the list or edit network permissions for this site.", + "connect_an_account": "Connect an account" }, "select": { "cancel": "Cancel", @@ -2251,7 +2245,7 @@ "lido_stake_completed_title": "Stake complete", "lido_withdrawal_requested_title": "Withdrawal requested", "lido_withdrawal_completed_title": "Withdrawal completed", - "lido_stake_ready_to_be_withdrawn_title": "Stake ready for withdrawal ", + "lido_stake_ready_to_be_withdrawn_title": "Stake ready for withdrawal", "erc721_sent_title": "NFT sent", "erc721_received_title": "NFT received", "erc1155_sent_title": "NFT sent", @@ -2285,36 +2279,30 @@ "lido_withdrawal_completed_message": "Unstaking complete", "lido_stake_ready_to_be_withdrawn_message": "Withdrawal requested", "push_notification_content": { + "funds_sent_title": "Funds sent", + "funds_sent_description": "You successfully sent {{amount}} {{symbol}}", + "funds_sent_default_description": "You successfully sent some tokens", + "funds_received_title": "Funds received", + "funds_received_description": "You received {{amount}} {{symbol}}", + "funds_received_default_description": "You received some tokens", "metamask_swap_completed_title": "Swap completed", "metamask_swap_completed_description": "Your MetaMask Swap was successful", - "erc20_sent_title": "Funds sent", - "erc20_sent_description": "You successfully sent {{amount}} {{token}}", - "erc20_received_title": "Funds received", - "erc20_received_description": "You received {{amount}} {{token}}", - "eth_sent_title": "Funds sent", - "eth_sent_description": "You successfully sent {{amount}} ETH", - "eth_received_title": "Funds received", - "eth_received_description": "You received {{amount}} {{token}}", + "nft_sent_title": "NFT sent", + "nft_sent_description": "You have successfully sent an NFT", + "nft_received_title": "NFT received", + "nft_received_description": "You received new NFTs", "rocketpool_stake_completed_title": "Stake complete", "rocketpool_stake_completed_description": "Your RocketPool stake was successful", "rocketpool_unstake_completed_title": "Unstake complete", "rocketpool_unstake_completed_description": "Your RocketPool unstake was successful", "lido_stake_completed_title": "Stake complete", "lido_stake_completed_description": "Your Lido stake was successful", + "lido_stake_ready_to_be_withdrawn_title": "Stake ready for withdrawal", + "lido_stake_ready_to_be_withdrawn_description": "Your Lido stake is now ready to be withdrawn", "lido_withdrawal_requested_title": "Withdrawal requested", "lido_withdrawal_requested_description": "Your Lido withdrawal request was submitted", "lido_withdrawal_completed_title": "Withdrawal completed", - "lido_withdrawal_completed_description": "Your Lido withdrawal was successful", - "lido_stake_ready_to_be_withdrawn_title": "Stake ready for withdrawal ", - "lido_stake_ready_to_be_withdrawn_description": "Your Lido stake is now ready to be withdrawn", - "erc721_sent_title": "NFT sent", - "erc721_sent_description": "You've successfully sent an NFT", - "erc721_received_title": "NFT received", - "erc721_received_description": "You received a new NFT", - "erc1155_sent_title": "NFT sent", - "erc1155_sent_description": "You've successfully sent an NFT", - "erc1155_received_title": "NFT received", - "erc1155_received_description": "You received a new NFT" + "lido_withdrawal_completed_description": "Your Lido withdrawal was successful" }, "prompt_title": "Receive Push Notifications", "notifications_enabled_error_title": "Something went wrong", @@ -2612,6 +2600,8 @@ "one_more_option": "1 more option", "more_options": "{{count}} more options", "previously_used": "Previously used", + "best_rate": "Best rate", + "most_reliable": "Most reliable", "quotes_timeout": "Quotes timeout", "request_new_quotes": "Please request new quotes to get the latest best rate.", "terms_of_service": "Terms of Service", @@ -2626,6 +2616,7 @@ "done": "Done", "fetching_quotes": "Fetching quotes", "select_a_quote": "Select a Quote", + "recommended_quote": "Recommended quote", "select_a_cryptocurrency": "Select a cryptocurrency", "select_a_cryptocurrency_description": "Select from the list of tokens available on {{network}}.", "search_by_cryptocurrency": "Search by cryptocurrency", @@ -3449,21 +3440,25 @@ "stake_annual_rate_tooltip": "Annual rate tooltip" }, "estimated_annual_rewards": "Estimated annual rewards", + "estimated_annual_reward": "Est. annual reward", + "reward_frequency": "Reward frequency", + "reward_frequency_tooltip": "Your staked balance updates every {{frequency}} to account for new rewards.", + "withdrawal_time": "Withdrawal time", "metamask_pool": "MetaMask Pool", "enter_amount": "Enter amount", "review": "Review", "not_enough_eth": "Not enough ETH", - "balance":"Balance", - "stake_eth_and_earn":"Stake ETH and earn", - "stake_any_amount_of_eth":"Stake any amount of ETH.", - "no_minimum_required":"No minimum required.", - "earn_eth_rewards":"Earn ETH rewards.", - "earn_eth_rewards_description":"Start earning as soon as you stake. Rewards compound automatically.", - "flexible_unstaking":"Flexible unstaking.", - "flexible_unstaking_description":"Unstake anytime. Typically takes less than 3 days, but can take up to 11 days to process.", - "disclaimer":"Staking does not guarantee rewards, and involves risks including a loss of funds.", - "learn_more":"Learn more", - "got_it":"Got it", + "balance": "Balance", + "stake_eth_and_earn": "Stake ETH and earn", + "stake_any_amount_of_eth": "Stake any amount of ETH.", + "no_minimum_required": "No minimum required.", + "earn_eth_rewards": "Earn ETH rewards.", + "earn_eth_rewards_description": "Start earning as soon as you stake. Rewards compound automatically.", + "flexible_unstaking": "Flexible unstaking.", + "flexible_unstaking_description": "Unstake anytime. Typically takes less than 3 days, but can take up to 11 days to process.", + "disclaimer": "Staking does not guarantee rewards, and involves risks including a loss of funds.", + "learn_more": "Learn more", + "got_it": "Got it", "your_balance": "Your balance", "stake_your_eth_cta": { "base": "Stake your ETH with MetaMask Pool and earn", @@ -3496,9 +3491,11 @@ "geo_blocked": "You’re located in a region where unstaking or staking isn’t permitted.", "approximately": "approximately" }, - "unstake_input_banner_description":"On average, it takes less than 3 days for the unstaked ETH to be claimable, but can take up to 11 days.", + "unstake_input_banner_description": "On average, it takes less than 3 days for the unstaked ETH to be claimable, but can take up to 11 days.", "max": "Max", "staking_from": "Staking from", + "advanced_details": "Advanced details", + "ethereum_mainnet": "Ethereum Mainnet", "interacting_with": "Interacting with", "12_hours": "12 hours", "terms_of_service": "Terms of service", @@ -3518,18 +3515,22 @@ "estimated_unstaking_time": "1 to 11 days", "proceed_anyway": "Proceed anyway", "gas_cost_impact": "Gas cost impact", + "select_a_token": "Select a token", + "you_could_earn": "You could earn", + "per_year_on_your_tokens": "per year on your tokens", + "deposit": "Deposit", "gas_cost_impact_warning": "Warning: the transaction gas cost will account for more than {{percentOverDeposit}}% of your deposit.", "view_earnings_history": "View earnings history", "earnings_history_title": "{{ticker}} earnings", "earnings_history_list_title": "Payout history", "apr": "APR", "interactive_chart": { - "timespan_buttons": { - "7D": "7D", - "1M": "1M", - "3M": "3M", - "6M": "6M" - } + "timespan_buttons": { + "7D": "7D", + "1M": "1M", + "3M": "3M", + "6M": "6M" + } }, "today": "Today", "one_week_average": "1 week average", @@ -3564,13 +3565,13 @@ "reset": "Reset" } }, - "drawer_general_title": "General", - "drawer_general_title_desc": "Sync settings across devices, select network preferences, and track token data", - "drawer_assets_title": "Assets", - "drawer_assets_desc": "Autodetect tokens in your wallet, display NFTs, and get batched account balance updates", - "drawer_security_title": "Security", - "drawer_security_desc": "Reduce your chances of joining unsafe networks and protect your accounts", - "network_details_check_desc": "MetaMask uses a third-party service called chainid.network to show accurate and standardized network details. This reduces your chances of connecting to malicious or incorrect network. When using this feature, your IP address is exposed to chainid.network." + "drawer_general_title": "General", + "drawer_general_title_desc": "Sync settings across devices, select network preferences, and track token data", + "drawer_assets_title": "Assets", + "drawer_assets_desc": "Autodetect tokens in your wallet, display NFTs, and get batched account balance updates", + "drawer_security_title": "Security", + "drawer_security_desc": "Reduce your chances of joining unsafe networks and protect your accounts", + "network_details_check_desc": "MetaMask uses a third-party service called chainid.network to show accurate and standardized network details. This reduces your chances of connecting to malicious or incorrect network. When using this feature, your IP address is exposed to chainid.network." }, "simulation_details": { "failed": "There was an error loading your estimation.", @@ -3620,39 +3621,58 @@ "confirm": { "reject": "Reject", "confirm": "Confirm", + "staking_footer": { + "part1": "By continuing, you agree to our ", + "terms_of_use": "Terms of Use", + "part2": " and ", + "risk_disclosure": "Risk Disclosure", + "part3": "." + }, + "label": { + "account": "Account", + "balance": "Balance", + "interacting_with": "Interacting with", + "network": "Network", + "primary_type": "Primary type", + "request_from": "Request from", + "signing_in_with": "Signing in with", + "spender": "Spender" + }, "title": { "signature": "Signature request", + "permit": "Spending cap request", + "permit_NFTs": "Withdrawal request", "signature_siwe": "Sign-in request" }, "sub_title": { + "permit": "This site wants permission to spend your tokens.", + "permit_NFTs": "This site wants permission to withdraw your NFTs.", "signature": "Review request details before you confirm.", "signature_siwe": "A site wants you to sign in to prove you own this account." }, "request_from": "Request from", + "staking_from": "Staking from", "signing_in_with": "Signing in with", "message": "Message", - "primary_type": "Primary type", "personal_sign_tooltip": "This site is asking for your signature", "details": "Details", - "account": "Account", - "balance": "Balance", - "network": "Network", "qr_get_sign": "Get Signature", "qr_scan_text": "Scan with your hardware wallet", + "sign_with_ledger": "Sign with Ledger", "siwe_message": { "url": "URL", - "network" : "Network", - "account" : "Account", - "version" : "Version", - "chain_id" : "Chain ID", - "nonce" : "Nonce", - "issued" : "Issued", + "network": "Network", + "account": "Account", + "version": "Version", + "chain_id": "Chain ID", + "nonce": "Nonce", + "issued": "Issued", "requestId": "Request ID", "resources": "Resources" }, "simulation": { "decoded_tooltip_bid_nft": "The NFT will be reflected in your wallet, when the bid is accepted.", - "decoded_tooltip_list_nft": "Expect changes only if someone buys your NFTs.", + "decoded_tooltip_list_nft": "Expect changes only if someone buys your NFTs.", "info_permit": "You're giving the spender permission to spend this many tokens from your account.", "label_change_type_bidding": "You bid", "label_change_type_listing": "You list", diff --git a/package.json b/package.json index be6a7cc71cf4..c5165d1e44f3 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "metamask", - "version": "7.41.0", + "version": "7.42.0", "private": true, "scripts": { "audit:ci": "./scripts/yarn-audit.sh", @@ -111,7 +111,6 @@ "react-native-level-fs/**/bl": "^1.2.3", "react-native-level-fs/levelup/semver": "^5.7.2", "@metamask/react-native-payments/validator": "^13.7.0", - "**/@metamask/utils": "^11.0.1", "**/minimist": "1.2.6", "d3-color": "3.1.0", "tough-cookie": "4.1.3", @@ -152,10 +151,10 @@ "@keystonehq/metamask-airgapped-keyring": "^0.13.1", "@keystonehq/ur-decoder": "^0.12.2", "@ledgerhq/react-native-hw-transport-ble": "^6.33.2", - "@metamask/accounts-controller": "^23.1.0", + "@metamask/accounts-controller": "^24.0.1", "@metamask/address-book-controller": "^6.0.3", "@metamask/approval-controller": "^7.1.0", - "@metamask/assets-controllers": "^46.0.0", + "@metamask/assets-controllers": "^50.0.0", "@metamask/base-controller": "^8.0.0", "@metamask/bitcoin-wallet-snap": "^0.9.0", "@metamask/composable-controller": "^11.0.0", @@ -167,7 +166,7 @@ "@metamask/eth-ledger-bridge-keyring": "8.0.3", "@metamask/eth-query": "^4.0.0", "@metamask/eth-sig-util": "^8.0.0", - "@metamask/eth-snap-keyring": "^10.0.0", + "@metamask/eth-snap-keyring": "^11.1.0", "@metamask/etherscan-link": "^2.0.0", "@metamask/ethjs-contract": "^0.4.1", "@metamask/ethjs-query": "^0.7.1", @@ -175,18 +174,19 @@ "@metamask/gas-fee-controller": "^22.0.3", "@metamask/json-rpc-engine": "^10.0.3", "@metamask/json-rpc-middleware-stream": "^8.0.6", - "@metamask/key-tree": "^9.0.0", - "@metamask/keyring-api": "^17.0.0", - "@metamask/keyring-controller": "^19.0.1", - "@metamask/keyring-internal-api": "^4.0.2", - "@metamask/keyring-snap-client": "^2.0.0", + "@metamask/key-tree": "^10.0.2", + "@metamask/keyring-api": "^17.2.0", + "@metamask/keyring-controller": "^19.2.0", + "@metamask/keyring-internal-api": "^4.0.3", + "@metamask/keyring-snap-client": "^4.0.1", "@metamask/logging-controller": "^6.0.4", "@metamask/message-signing-snap": "^0.3.3", + "@metamask/multichain-network-controller": "^0.1.1", "@metamask/network-controller": "^22.1.0", - "@metamask/notification-services-controller": "^0.15.0", + "@metamask/notification-services-controller": "^1.0.0", "@metamask/permission-controller": "^11.0.6", "@metamask/phishing-controller": "^12.0.3", - "@metamask/post-message-stream": "^8.0.0", + "@metamask/post-message-stream": "^9.0.0", "@metamask/ppom-validator": "0.36.0", "@metamask/preferences-controller": "^15.0.1", "@metamask/profile-sync-controller": "^3.0.0", @@ -195,7 +195,7 @@ "@metamask/react-native-payments": "^2.0.0", "@metamask/react-native-search-api": "1.0.1", "@metamask/react-native-webview": "^14.0.4", - "@metamask/remote-feature-flag-controller": "^1.3.0", + "@metamask/remote-feature-flag-controller": "^1.5.0", "@metamask/rpc-errors": "^7.0.2", "@metamask/scure-bip39": "^2.1.0", "@metamask/sdk-communication-layer": "0.29.0-wallet", @@ -203,18 +203,20 @@ "@metamask/signature-controller": "^23.1.0", "@metamask/slip44": "^4.1.0", "@metamask/smart-transactions-controller": "^16.0.1", - "@metamask/snaps-controllers": "^9.15.0", - "@metamask/snaps-execution-environments": "^6.10.0", - "@metamask/snaps-rpc-methods": "^11.7.0", - "@metamask/snaps-sdk": "^6.17.1", - "@metamask/snaps-utils": "^8.10.0", - "@metamask/solana-wallet-snap": "^1.2.0", + "@metamask/snaps-controllers": "^10.0.0", + "@metamask/snaps-execution-environments": "^7.0.0", + "@metamask/snaps-rpc-methods": "^11.12.0", + "@metamask/snaps-sdk": "^6.18.0", + "@metamask/snaps-utils": "^9.0.0", + "@metamask/solana-wallet-snap": "^1.6.0", "@metamask/stake-sdk": "^1.0.0", "@metamask/swappable-obj-proxy": "^2.1.0", "@metamask/swaps-controller": "^12.1.0", + "@metamask/token-search-discovery-controller": "^2.1.0", "@metamask/transaction-controller": "45.0.0", "@metamask/utils": "^11.1.0", "@ngraveio/bc-ur": "^1.1.6", + "@noble/hashes": "^1.7.1", "@notifee/react-native": "^9.0.0", "@react-native-async-storage/async-storage": "^1.23.1", "@react-native-clipboard/clipboard": "1.8.4", @@ -239,6 +241,7 @@ "@sentry/react-native": "^5.33.0", "@solana/addresses": "2.0.0", "@tradle/react-native-http": "2.0.1", + "@types/he": "^1.2.3", "@walletconnect/client": "^1.8.0", "@walletconnect/core": "^2.17.2", "@walletconnect/jsonrpc-types": "^1.0.4", @@ -273,6 +276,7 @@ "expo-build-properties": "~0.8.3", "expo-dev-client": "3.1.0", "fuse.js": "3.4.4", + "he": "^1.2.0", "https-browserify": "0.0.1", "human-standard-token-abi": "^2.0.0", "humanize-duration": "^3.27.2", @@ -397,7 +401,7 @@ "@metamask/mobile-provider": "^3.0.0", "@metamask/object-multiplex": "^1.1.0", "@metamask/providers": "^18.3.1", - "@metamask/test-dapp": "^8.9.0", + "@metamask/test-dapp": "^9.0.0", "@octokit/rest": "^21.0.0", "@open-rpc/mock-server": "^1.7.5", "@open-rpc/schema-utils-js": "^1.16.2", @@ -460,7 +464,7 @@ "browserstack-local": "^1.5.1", "chromedriver": "^123.0.1", "depcheck": "^1.4.7", - "detox": "^20.27.5", + "detox": "20.33.0", "dotenv": "^16.0.3", "dpdm": "^3.14.0", "enzyme": "3.9.0", diff --git a/patches/@metamask+assets-controllers+46.0.0.patch b/patches/@metamask+assets-controllers+50.0.0.patch similarity index 84% rename from patches/@metamask+assets-controllers+46.0.0.patch rename to patches/@metamask+assets-controllers+50.0.0.patch index 7bff7d0e9056..095ce3c740ee 100644 --- a/patches/@metamask+assets-controllers+46.0.0.patch +++ b/patches/@metamask+assets-controllers+50.0.0.patch @@ -1,5 +1,5 @@ diff --git a/node_modules/@metamask/assets-controllers/dist/NftController.cjs b/node_modules/@metamask/assets-controllers/dist/NftController.cjs -index 6ccbe9c..417a55e 100644 +index a390e86..4d0346d 100644 --- a/node_modules/@metamask/assets-controllers/dist/NftController.cjs +++ b/node_modules/@metamask/assets-controllers/dist/NftController.cjs @@ -13,7 +13,7 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function ( @@ -11,7 +11,7 @@ index 6ccbe9c..417a55e 100644 Object.defineProperty(exports, "__esModule", { value: true }); exports.NftController = exports.getDefaultNftControllerState = void 0; const address_1 = require("@ethersproject/address"); -@@ -53,7 +53,7 @@ class NftController extends base_controller_1.BaseController { +@@ -54,7 +54,7 @@ class NftController extends base_controller_1.BaseController { * @param options - The controller options. * @param options.chainId - The chain ID of the current network. * @param options.ipfsGateway - The configured IPFS gateway. @@ -20,8 +20,8 @@ index 6ccbe9c..417a55e 100644 * @param options.useIpfsSubdomains - Controls whether IPFS subdomains are used. * @param options.isIpfsGatewayEnabled - Controls whether IPFS is enabled or not. * @param options.onNftAdded - Callback that is called when an NFT is added. Currently used pass data -@@ -61,7 +61,7 @@ class NftController extends base_controller_1.BaseController { - * @param options.messenger - The controller messenger. +@@ -62,7 +62,7 @@ class NftController extends base_controller_1.BaseController { + * @param options.messenger - The messenger. * @param options.state - Initial state to set on this controller. */ - constructor({ chainId: initialChainId, ipfsGateway = controller_utils_1.IPFS_DEFAULT_GATEWAY_URL, openSeaEnabled = false, useIpfsSubdomains = true, isIpfsGatewayEnabled = true, onNftAdded, messenger, state = {}, }) { @@ -29,7 +29,7 @@ index 6ccbe9c..417a55e 100644 super({ name: controllerName, metadata: nftControllerMetadata, -@@ -76,14 +76,14 @@ class NftController extends base_controller_1.BaseController { +@@ -77,14 +77,14 @@ class NftController extends base_controller_1.BaseController { _NftController_selectedAccountId.set(this, void 0); _NftController_chainId.set(this, void 0); _NftController_ipfsGateway.set(this, void 0); @@ -46,7 +46,7 @@ index 6ccbe9c..417a55e 100644 __classPrivateFieldSet(this, _NftController_useIpfsSubdomains, useIpfsSubdomains, "f"); __classPrivateFieldSet(this, _NftController_isIpfsGatewayEnabled, isIpfsGatewayEnabled, "f"); __classPrivateFieldSet(this, _NftController_onNftAdded, onNftAdded, "f"); -@@ -589,7 +589,7 @@ class NftController extends base_controller_1.BaseController { +@@ -590,7 +590,7 @@ class NftController extends base_controller_1.BaseController { } } exports.NftController = NftController; @@ -55,7 +55,7 @@ index 6ccbe9c..417a55e 100644 const { configuration: { chainId }, } = this.messagingSystem.call('NetworkController:getNetworkClientById', selectedNetworkClientId); __classPrivateFieldSet(this, _NftController_chainId, chainId, "f"); }, _NftController_onPreferencesControllerStateChange = -@@ -597,16 +597,16 @@ _NftController_mutex = new WeakMap(), _NftController_selectedAccountId = new Wea +@@ -598,20 +598,20 @@ _NftController_mutex = new WeakMap(), _NftController_selectedAccountId = new Wea * Handles the state change of the preference controller. * @param preferencesState - The new state of the preference controller. * @param preferencesState.ipfsGateway - The configured IPFS gateway. @@ -67,16 +67,21 @@ index 6ccbe9c..417a55e 100644 +async function _NftController_onPreferencesControllerStateChange({ ipfsGateway, displayNftMedia, isIpfsGatewayEnabled, }) { const selectedAccount = this.messagingSystem.call('AccountsController:getSelectedAccount'); __classPrivateFieldSet(this, _NftController_selectedAccountId, selectedAccount.id, "f"); - __classPrivateFieldSet(this, _NftController_ipfsGateway, ipfsGateway, "f"); -- __classPrivateFieldSet(this, _NftController_openSeaEnabled, openSeaEnabled, "f"); -+ __classPrivateFieldSet(this, _NftController_displayNftMedia, displayNftMedia, "f"); - __classPrivateFieldSet(this, _NftController_isIpfsGatewayEnabled, isIpfsGatewayEnabled, "f"); -- const needsUpdateNftMetadata = (isIpfsGatewayEnabled && ipfsGateway !== '') || openSeaEnabled; -+ const needsUpdateNftMetadata = (isIpfsGatewayEnabled && ipfsGateway !== '') || displayNftMedia; - if (needsUpdateNftMetadata && selectedAccount) { - await __classPrivateFieldGet(this, _NftController_instances, "m", _NftController_updateNftUpdateForAccount).call(this, selectedAccount); - } -@@ -619,7 +619,7 @@ async function _NftController_onSelectedAccountChange(internalAccount) { + // Get current state values + if (__classPrivateFieldGet(this, _NftController_ipfsGateway, "f") !== ipfsGateway || +- __classPrivateFieldGet(this, _NftController_openSeaEnabled, "f") !== openSeaEnabled || ++ __classPrivateFieldGet(this, _NftController_displayNftMedia, "f") !== displayNftMedia || + __classPrivateFieldGet(this, _NftController_isIpfsGatewayEnabled, "f") !== isIpfsGatewayEnabled) { + __classPrivateFieldSet(this, _NftController_ipfsGateway, ipfsGateway, "f"); +- __classPrivateFieldSet(this, _NftController_openSeaEnabled, openSeaEnabled, "f"); ++ __classPrivateFieldSet(this, _NftController_displayNftMedia, displayNftMedia, "f"); + __classPrivateFieldSet(this, _NftController_isIpfsGatewayEnabled, isIpfsGatewayEnabled, "f"); +- const needsUpdateNftMetadata = (isIpfsGatewayEnabled && ipfsGateway !== '') || openSeaEnabled; ++ const needsUpdateNftMetadata = (isIpfsGatewayEnabled && ipfsGateway !== '') || displayNftMedia; + if (needsUpdateNftMetadata && selectedAccount) { + await __classPrivateFieldGet(this, _NftController_instances, "m", _NftController_updateNftUpdateForAccount).call(this, selectedAccount); + } +@@ -625,7 +625,7 @@ async function _NftController_onSelectedAccountChange(internalAccount) { const oldSelectedAccountId = __classPrivateFieldGet(this, _NftController_selectedAccountId, "f"); __classPrivateFieldSet(this, _NftController_selectedAccountId, internalAccount.id, "f"); const needsUpdateNftMetadata = ((__classPrivateFieldGet(this, _NftController_isIpfsGatewayEnabled, "f") && __classPrivateFieldGet(this, _NftController_ipfsGateway, "f") !== '') || @@ -85,7 +90,7 @@ index 6ccbe9c..417a55e 100644 oldSelectedAccountId !== internalAccount.id; if (needsUpdateNftMetadata) { await __classPrivateFieldGet(this, _NftController_instances, "m", _NftController_updateNftUpdateForAccount).call(this, internalAccount); -@@ -694,6 +694,7 @@ async function _NftController_getNftInformationFromApi(contractAddress, tokenId) +@@ -700,6 +700,7 @@ async function _NftController_getNftInformationFromApi(contractAddress, tokenId) description: null, image: null, standard: null, @@ -93,7 +98,7 @@ index 6ccbe9c..417a55e 100644 }; } // if we've reached this point, we have successfully fetched some data for nftInformation -@@ -738,7 +739,7 @@ async function _NftController_getNftInformationFromTokenURI(contractAddress, tok +@@ -744,7 +745,7 @@ async function _NftController_getNftInformationFromTokenURI(contractAddress, tok tokenURI: tokenURI ?? null, }; } @@ -102,7 +107,7 @@ index 6ccbe9c..417a55e 100644 if (!hasIpfsTokenURI && !isDisplayNFTMediaToggleEnabled) { return { image: null, -@@ -747,6 +748,7 @@ async function _NftController_getNftInformationFromTokenURI(contractAddress, tok +@@ -753,6 +754,7 @@ async function _NftController_getNftInformationFromTokenURI(contractAddress, tok standard: standard || null, favorite: false, tokenURI: tokenURI ?? null, @@ -110,15 +115,15 @@ index 6ccbe9c..417a55e 100644 }; } if (hasIpfsTokenURI) { -@@ -785,6 +787,7 @@ async function _NftController_getNftInformationFromTokenURI(contractAddress, tok +@@ -766,6 +768,7 @@ async function _NftController_getNftInformationFromTokenURI(contractAddress, tok standard: standard || null, favorite: false, tokenURI: tokenURI ?? null, + error: 'URI import error', }; } - }, _NftController_getNftURIAndStandard = -@@ -840,10 +843,21 @@ async function _NftController_getNftInformation(contractAddress, tokenId, networ + try { +@@ -846,10 +849,21 @@ async function _NftController_getNftInformation(contractAddress, tokenId, networ }); const [blockchainMetadata, nftApiMetadata] = await Promise.all([ (0, controller_utils_1.safelyExecute)(() => __classPrivateFieldGet(this, _NftController_instances, "m", _NftController_getNftInformationFromTokenURI).call(this, contractAddress, tokenId, networkClientId)), @@ -141,7 +146,7 @@ index 6ccbe9c..417a55e 100644 return { ...nftApiMetadata, name: blockchainMetadata?.name ?? nftApiMetadata?.name ?? null, -@@ -985,6 +999,7 @@ async function _NftController_addIndividualNft(tokenAddress, tokenId, nftMetadat +@@ -991,6 +1005,7 @@ async function _NftController_addIndividualNft(tokenAddress, tokenId, nftMetadat tokenId: tokenId.toString(), standard: nftMetadata.standard, source, @@ -150,7 +155,7 @@ index 6ccbe9c..417a55e 100644 } } diff --git a/node_modules/@metamask/assets-controllers/dist/NftController.d.cts b/node_modules/@metamask/assets-controllers/dist/NftController.d.cts -index a34725f..21e9d20 100644 +index 7b0580e..e783176 100644 --- a/node_modules/@metamask/assets-controllers/dist/NftController.d.cts +++ b/node_modules/@metamask/assets-controllers/dist/NftController.d.cts @@ -108,6 +108,7 @@ export type NftMetadata = { diff --git a/patches/@metamask+keyring-controller+19.0.1.patch b/patches/@metamask+keyring-controller+19.0.1.patch deleted file mode 100644 index c395747a3778..000000000000 --- a/patches/@metamask+keyring-controller+19.0.1.patch +++ /dev/null @@ -1,14 +0,0 @@ -diff --git a/node_modules/@metamask/keyring-controller/dist/KeyringController.cjs b/node_modules/@metamask/keyring-controller/dist/KeyringController.cjs -index 8529ba1..77871be 100644 ---- a/node_modules/@metamask/keyring-controller/dist/KeyringController.cjs -+++ b/node_modules/@metamask/keyring-controller/dist/KeyringController.cjs -@@ -1379,7 +1379,8 @@ async function _KeyringController_newKeyring(type, data) { - if (!keyring.generateRandomMnemonic) { - throw new Error(constants_1.KeyringControllerError.UnsupportedGenerateRandomMnemonic); - } -- keyring.generateRandomMnemonic(); -+ // This patch can be removed once all the keyrings types are updated across the monorepo, the work is in progress atm -+ await keyring.generateRandomMnemonic(); - await keyring.addAccounts(1); - } - await __classPrivateFieldGet(this, _KeyringController_instances, "m", _KeyringController_checkForDuplicate).call(this, type, await keyring.getAccounts()); diff --git a/patches/@metamask+post-message-stream+8.1.1.patch b/patches/@metamask+post-message-stream+9.0.0.patch similarity index 100% rename from patches/@metamask+post-message-stream+8.1.1.patch rename to patches/@metamask+post-message-stream+9.0.0.patch diff --git a/patches/@metamask+rpc-errors+7.0.1.patch b/patches/@metamask+rpc-errors+7.0.2.patch similarity index 100% rename from patches/@metamask+rpc-errors+7.0.1.patch rename to patches/@metamask+rpc-errors+7.0.2.patch diff --git a/scripts/build.sh b/scripts/build.sh index 1ea006cd97b0..6fe511f23197 100755 --- a/scripts/build.sh +++ b/scripts/build.sh @@ -571,7 +571,7 @@ buildAndroidRunE2E(){ then source $ANDROID_ENV_FILE fi - cd android && ./gradlew assembleProdDebug app:assembleAndroidTest -DtestBuildType=debug --build-cache --parallel && cd .. + cd android && ./gradlew assembleProdDebug app:assembleAndroidTest -PminSdkVersion=26 -DtestBuildType=debug --build-cache --parallel && cd .. } buildIos() { diff --git a/sonar-project.properties b/sonar-project.properties index 12e0532c996b..a4ecc01994eb 100644 --- a/sonar-project.properties +++ b/sonar-project.properties @@ -15,7 +15,7 @@ sonar.exclusions=**.stories.**, e2e/**, wdio/** sonar.test.inclusions=**.test.** # Excluded project files from coverage. -sonar.coverage.exclusions=**AccountConnectMultiSelector**, **AccountPermissionsConfirmRevokeAll**, **PermissionsSettings**, **NetworkConnectMultiSelector**, **NetworkSelectorList**, **PermissionsSummary**, **AccountConnect.tsx, **util/test**, **AccountPermissions.tsx, **NetworkVerificationInfo.tsx, **ConnectionDetails**, **TabThumbnail**, **PermittedNetworksInfoSheet**, **NetworkPermissionsConnected**, **BrowserTab**, +sonar.coverage.exclusions=**util/test** # Test coverage path in GitHub action sonar.javascript.lcov.reportPaths=/coverage/lcov.info diff --git a/yarn.lock b/yarn.lock index 2470b17bb0a9..8550ca61ab50 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2770,15 +2770,15 @@ "@firebase/util" "1.9.6" tslib "^2.1.0" -"@firebase/analytics-compat@0.2.11": - version "0.2.11" - resolved "https://registry.yarnpkg.com/@firebase/analytics-compat/-/analytics-compat-0.2.11.tgz#82995b29805f306ad862773e2cd907ae8fb7b7e5" - integrity sha512-wmXxJ49pEY7H549Pa4CDPOTzkPJnfG2Yolptg72ntTgSrbKVq+Eg9cAQY6Z5Kn9ATSQRX5oGXKlNfEk5DJBvvA== - dependencies: - "@firebase/analytics" "0.10.5" - "@firebase/analytics-types" "0.8.2" - "@firebase/component" "0.6.8" - "@firebase/util" "1.9.7" +"@firebase/analytics-compat@0.2.17": + version "0.2.17" + resolved "https://registry.yarnpkg.com/@firebase/analytics-compat/-/analytics-compat-0.2.17.tgz#c3cfc8ffb863d574ec26d86f9c8344d752832995" + integrity sha512-SJNVOeTvzdqZQvXFzj7yAirXnYcLDxh57wBFROfeowq/kRN1AqOw1tG6U4OiFOEhqi7s3xLze/LMkZatk2IEww== + dependencies: + "@firebase/analytics" "0.10.11" + "@firebase/analytics-types" "0.8.3" + "@firebase/component" "0.6.12" + "@firebase/util" "1.10.3" tslib "^2.1.0" "@firebase/analytics-types@0.8.2": @@ -2786,6 +2786,22 @@ resolved "https://registry.yarnpkg.com/@firebase/analytics-types/-/analytics-types-0.8.2.tgz#947f85346e404332aac6c996d71fd4a89cd7f87a" integrity sha512-EnzNNLh+9/sJsimsA/FGqzakmrAUKLeJvjRHlg8df1f97NLUlFidk9600y0ZgWOp3CAxn6Hjtk+08tixlUOWyw== +"@firebase/analytics-types@0.8.3": + version "0.8.3" + resolved "https://registry.yarnpkg.com/@firebase/analytics-types/-/analytics-types-0.8.3.tgz#d08cd39a6209693ca2039ba7a81570dfa6c1518f" + integrity sha512-VrIp/d8iq2g501qO46uGz3hjbDb8xzYMrbu8Tp0ovzIzrvJZ2fvmj649gTjge/b7cCCcjT0H37g1gVtlNhnkbg== + +"@firebase/analytics@0.10.11": + version "0.10.11" + resolved "https://registry.yarnpkg.com/@firebase/analytics/-/analytics-0.10.11.tgz#6896413e92613573af775c45050af889a43676da" + integrity sha512-zwuPiRE0+hgcS95JZbJ6DFQN4xYFO8IyGxpeePTV51YJMwCf3lkBa6FnZ/iXIqDKcBPMgMuuEZozI0BJWaLEYg== + dependencies: + "@firebase/component" "0.6.12" + "@firebase/installations" "0.6.12" + "@firebase/logger" "0.4.4" + "@firebase/util" "1.10.3" + tslib "^2.1.0" + "@firebase/analytics@0.10.4": version "0.10.4" resolved "https://registry.yarnpkg.com/@firebase/analytics/-/analytics-0.10.4.tgz#dc68a86774f9ee4f980708e824157617fd2b8ef7" @@ -2797,17 +2813,6 @@ "@firebase/util" "1.9.6" tslib "^2.1.0" -"@firebase/analytics@0.10.5": - version "0.10.5" - resolved "https://registry.yarnpkg.com/@firebase/analytics/-/analytics-0.10.5.tgz#a455028952bdc25b9da2b0070ebb09ca487ee09f" - integrity sha512-d0X2ksTOKHMf5zFAMKFZWXa8hSbgohsG507xFsGhF4Uet2b8uEUL/YLrEth67jXEbGEi1UQZX4AaGBxKNiDzjw== - dependencies: - "@firebase/component" "0.6.8" - "@firebase/installations" "0.6.8" - "@firebase/logger" "0.4.2" - "@firebase/util" "1.9.7" - tslib "^2.1.0" - "@firebase/app-check-compat@0.3.11": version "0.3.11" resolved "https://registry.yarnpkg.com/@firebase/app-check-compat/-/app-check-compat-0.3.11.tgz#0a5d1c72c91ba239e4dabf6fd698b27f082030ca" @@ -2820,16 +2825,16 @@ "@firebase/util" "1.9.6" tslib "^2.1.0" -"@firebase/app-check-compat@0.3.12": - version "0.3.12" - resolved "https://registry.yarnpkg.com/@firebase/app-check-compat/-/app-check-compat-0.3.12.tgz#34d826f72e058baf1aad11713fda337046fb863c" - integrity sha512-p/5w3pMih3JVT6u7g04KXgSZr6HDsQXyeWZkIe0+r71dPOlcKyUooe9/feTc8BWpjha3rUOkqQ7+JXZObwvYoQ== +"@firebase/app-check-compat@0.3.18": + version "0.3.18" + resolved "https://registry.yarnpkg.com/@firebase/app-check-compat/-/app-check-compat-0.3.18.tgz#abe63858fca86b61ea431e0d9e58ccb8bac1b275" + integrity sha512-qjozwnwYmAIdrsVGrJk+hnF1WBois54IhZR6gO0wtZQoTvWL/GtiA2F31TIgAhF0ayUiZhztOv1RfC7YyrZGDQ== dependencies: - "@firebase/app-check" "0.8.5" - "@firebase/app-check-types" "0.5.2" - "@firebase/component" "0.6.8" - "@firebase/logger" "0.4.2" - "@firebase/util" "1.9.7" + "@firebase/app-check" "0.8.11" + "@firebase/app-check-types" "0.5.3" + "@firebase/component" "0.6.12" + "@firebase/logger" "0.4.4" + "@firebase/util" "1.10.3" tslib "^2.1.0" "@firebase/app-check-interop-types@0.3.2": @@ -2837,11 +2842,31 @@ resolved "https://registry.yarnpkg.com/@firebase/app-check-interop-types/-/app-check-interop-types-0.3.2.tgz#455b6562c7a3de3ef75ea51f72dfec5829ad6997" integrity sha512-LMs47Vinv2HBMZi49C09dJxp0QT5LwDzFaVGf/+ITHe3BlIhUiLNttkATSXplc89A2lAaeTqjgqVkiRfUGyQiQ== +"@firebase/app-check-interop-types@0.3.3": + version "0.3.3" + resolved "https://registry.yarnpkg.com/@firebase/app-check-interop-types/-/app-check-interop-types-0.3.3.tgz#ed9c4a4f48d1395ef378f007476db3940aa5351a" + integrity sha512-gAlxfPLT2j8bTI/qfe3ahl2I2YcBQ8cFIBdhAQA4I2f3TndcO+22YizyGYuttLHPQEpWkhmpFW60VCFEPg4g5A== + "@firebase/app-check-types@0.5.2": version "0.5.2" resolved "https://registry.yarnpkg.com/@firebase/app-check-types/-/app-check-types-0.5.2.tgz#1221bd09b471e11bb149252f16640a0a51043cbc" integrity sha512-FSOEzTzL5bLUbD2co3Zut46iyPWML6xc4x+78TeaXMSuJap5QObfb+rVvZJtla3asN4RwU7elaQaduP+HFizDA== +"@firebase/app-check-types@0.5.3": + version "0.5.3" + resolved "https://registry.yarnpkg.com/@firebase/app-check-types/-/app-check-types-0.5.3.tgz#38ba954acf4bffe451581a32fffa20337f11d8e5" + integrity sha512-hyl5rKSj0QmwPdsAxrI5x1otDlByQ7bvNvVt8G/XPO2CSwE++rmSVf3VEhaeOR4J8ZFaF0Z0NDSmLejPweZ3ng== + +"@firebase/app-check@0.8.11": + version "0.8.11" + resolved "https://registry.yarnpkg.com/@firebase/app-check/-/app-check-0.8.11.tgz#3c67148046fea0a0a9a1eecf1a17fdc31a76eda7" + integrity sha512-42zIfRI08/7bQqczAy7sY2JqZYEv3a1eNa4fLFdtJ54vNevbBIRSEA3fZgRqWFNHalh5ohsBXdrYgFqaRIuCcQ== + dependencies: + "@firebase/component" "0.6.12" + "@firebase/logger" "0.4.4" + "@firebase/util" "1.10.3" + tslib "^2.1.0" + "@firebase/app-check@0.8.4": version "0.8.4" resolved "https://registry.yarnpkg.com/@firebase/app-check/-/app-check-0.8.4.tgz#1c965d34527d1b924fc7bd51789119b3f817bf94" @@ -2852,16 +2877,6 @@ "@firebase/util" "1.9.6" tslib "^2.1.0" -"@firebase/app-check@0.8.5": - version "0.8.5" - resolved "https://registry.yarnpkg.com/@firebase/app-check/-/app-check-0.8.5.tgz#e8b0a6d603592f6a04f2d429029f5adfe1a4d2ca" - integrity sha512-WyIckkVYAfnzsPIw6EAt/qBUANkUAVl6irF0xuJ1R9ISNyUT1h7dPAwvs/g3rsx0fpBWaHRAH0IFiN6zO6yLqQ== - dependencies: - "@firebase/component" "0.6.8" - "@firebase/logger" "0.4.2" - "@firebase/util" "1.9.7" - tslib "^2.1.0" - "@firebase/app-compat@0.2.35": version "0.2.35" resolved "https://registry.yarnpkg.com/@firebase/app-compat/-/app-compat-0.2.35.tgz#ca918736e6b06bdd63eaed24ba213059ecd55f88" @@ -2873,15 +2888,15 @@ "@firebase/util" "1.9.6" tslib "^2.1.0" -"@firebase/app-compat@0.2.36": - version "0.2.36" - resolved "https://registry.yarnpkg.com/@firebase/app-compat/-/app-compat-0.2.36.tgz#46926ee9ba0d54fc5ec4695e62588b63e2f7584a" - integrity sha512-qsf+pllpgy1IGe2f5vfenOHSX8Cs58sVR5L6h/zBlNy9Yo54B2jy61KxLpSOgyRZb18IlnLLGjo7VtGU1CHvHA== +"@firebase/app-compat@0.2.50": + version "0.2.50" + resolved "https://registry.yarnpkg.com/@firebase/app-compat/-/app-compat-0.2.50.tgz#665b6db432414229b96763e6b1cf5e38463c58d0" + integrity sha512-7yD362icKgjoNvFxwth420TNZgqCfuTJ28yQCdpyjC2fXyaZHhAbxVKnHEXGTAaUKSHWxsIy46lBKGi/x/Mflw== dependencies: - "@firebase/app" "0.10.6" - "@firebase/component" "0.6.8" - "@firebase/logger" "0.4.2" - "@firebase/util" "1.9.7" + "@firebase/app" "0.11.1" + "@firebase/component" "0.6.12" + "@firebase/logger" "0.4.4" + "@firebase/util" "1.10.3" tslib "^2.1.0" "@firebase/app-types@0.9.2": @@ -2889,6 +2904,11 @@ resolved "https://registry.yarnpkg.com/@firebase/app-types/-/app-types-0.9.2.tgz#8cbcceba784753a7c0066a4809bc22f93adee080" integrity sha512-oMEZ1TDlBz479lmABwWsWjzHwheQKiAgnuKxE0pz0IXCVx7/rtlkx1fQ6GfgK24WCrxDKMplZrT50Kh04iMbXQ== +"@firebase/app-types@0.9.3": + version "0.9.3" + resolved "https://registry.yarnpkg.com/@firebase/app-types/-/app-types-0.9.3.tgz#8408219eae9b1fb74f86c24e7150a148460414ad" + integrity sha512-kRVpIl4vVGJ4baogMDINbyrIOtOxqhkZQg4jTq3l8Lw6WSk0xfpEYzezFu+Kl4ve4fbPl79dvwRtaFqAC/ucCw== + "@firebase/app@0.10.5": version "0.10.5" resolved "https://registry.yarnpkg.com/@firebase/app/-/app-0.10.5.tgz#84d3c99b253366844335a411b568dd258800c794" @@ -2900,28 +2920,27 @@ idb "7.1.1" tslib "^2.1.0" -"@firebase/app@0.10.6": - version "0.10.6" - resolved "https://registry.yarnpkg.com/@firebase/app/-/app-0.10.6.tgz#0f96a573c18d75723ddeedb45c02c5471d9de695" - integrity sha512-/r8Ikp7TOrIIdp7v2adD2kg9SqIXMGOoJXJB1HsX7LjpjWdsoy1fMkP0HlI7GQqqRxDueHNhETx5Zn5E8HyVAQ== +"@firebase/app@0.11.1": + version "0.11.1" + resolved "https://registry.yarnpkg.com/@firebase/app/-/app-0.11.1.tgz#20663522be71307c8e5c74828bb621cdcdd3f5b4" + integrity sha512-Vz4DrNLPfDx3RwQf+4klXtu7OUYDO6xz2hlRyFawWskS7YqdtNzkDDxrqH20KDfjCF1lib46/NgchIj1+8h4wQ== dependencies: - "@firebase/component" "0.6.8" - "@firebase/logger" "0.4.2" - "@firebase/util" "1.9.7" + "@firebase/component" "0.6.12" + "@firebase/logger" "0.4.4" + "@firebase/util" "1.10.3" idb "7.1.1" tslib "^2.1.0" -"@firebase/auth-compat@0.5.10": - version "0.5.10" - resolved "https://registry.yarnpkg.com/@firebase/auth-compat/-/auth-compat-0.5.10.tgz#7705fc27883a8fafb2e85271e1d5cd7314609276" - integrity sha512-epDhgNIXmhl9DPuTW9Ec5NDJJKMFIdXBXiQI9O0xNHveow/ETtBCY86srzF7iCacqsd30CcpLwwXlhk8Y19Olg== +"@firebase/auth-compat@0.5.18": + version "0.5.18" + resolved "https://registry.yarnpkg.com/@firebase/auth-compat/-/auth-compat-0.5.18.tgz#ba1674287e6df4f95675866d6f960a9fc4a9abfc" + integrity sha512-dFBev8AMNb2AgIt9afwf/Ku4/0Wq9R9OFSeBB/xjyJt+RfQ9PnNWqU2oFphews23byLg6jle8twRA7iOYfRGRw== dependencies: - "@firebase/auth" "1.7.5" - "@firebase/auth-types" "0.12.2" - "@firebase/component" "0.6.8" - "@firebase/util" "1.9.7" + "@firebase/auth" "1.9.0" + "@firebase/auth-types" "0.13.0" + "@firebase/component" "0.6.12" + "@firebase/util" "1.10.3" tslib "^2.1.0" - undici "5.28.4" "@firebase/auth-compat@0.5.9": version "0.5.9" @@ -2940,11 +2959,21 @@ resolved "https://registry.yarnpkg.com/@firebase/auth-interop-types/-/auth-interop-types-0.2.3.tgz#927f1f2139a680b55fef0bddbff2c982b08587e8" integrity sha512-Fc9wuJGgxoxQeavybiuwgyi+0rssr76b+nHpj+eGhXFYAdudMWyfBHvFL/I5fEHniUM/UQdFzi9VXJK2iZF7FQ== +"@firebase/auth-interop-types@0.2.4": + version "0.2.4" + resolved "https://registry.yarnpkg.com/@firebase/auth-interop-types/-/auth-interop-types-0.2.4.tgz#176a08686b0685596ff03d7879b7e4115af53de0" + integrity sha512-JPgcXKCuO+CWqGDnigBtvo09HeBs5u/Ktc2GaFj2m01hLarbxthLNm7Fk8iOP1aqAtXV+fnnGj7U28xmk7IwVA== + "@firebase/auth-types@0.12.2": version "0.12.2" resolved "https://registry.yarnpkg.com/@firebase/auth-types/-/auth-types-0.12.2.tgz#f12d890585866e53b6ab18b16fa4d425c52eee6e" integrity sha512-qsEBaRMoGvHO10unlDJhaKSuPn4pyoTtlQuP1ghZfzB6rNQPuhp/N/DcFZxm9i4v0SogjCbf9reWupwIvfmH6w== +"@firebase/auth-types@0.13.0": + version "0.13.0" + resolved "https://registry.yarnpkg.com/@firebase/auth-types/-/auth-types-0.13.0.tgz#ae6e0015e3bd4bfe18edd0942b48a0a118a098d9" + integrity sha512-S/PuIjni0AQRLF+l9ck0YpsMOdE8GO2KU6ubmBB7P+7TJUCQDa3R1dlgYm9UzGbbePMZsp0xzB93f2b/CgxMOg== + "@firebase/auth@1.7.4": version "1.7.4" resolved "https://registry.yarnpkg.com/@firebase/auth/-/auth-1.7.4.tgz#0dc8083314a61598c91cfe00cb96cf2cb3d74336" @@ -2956,16 +2985,23 @@ tslib "^2.1.0" undici "5.28.4" -"@firebase/auth@1.7.5": - version "1.7.5" - resolved "https://registry.yarnpkg.com/@firebase/auth/-/auth-1.7.5.tgz#8135e0933e874231d7ebafc94f5796a19f5df39b" - integrity sha512-DMFR1OA/f1/voeuFbSORg9AP36pMgOoSb/DRgiDalLmIJsDTlQNMCu+givjMP4s/XL85+tBk2MerYnK/AscJjw== +"@firebase/auth@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@firebase/auth/-/auth-1.9.0.tgz#eea1ab78fd3d68db3cdef69a0d7fba3663a940c5" + integrity sha512-Xz2mbEYauF689qXG/4HppS2+/yGo9R7B6eNUBh3H2+XpAZTGdx8d8TFsW/BMTAK9Q95NB0pb1Bbvfx0lwofq8Q== dependencies: - "@firebase/component" "0.6.8" - "@firebase/logger" "0.4.2" - "@firebase/util" "1.9.7" + "@firebase/component" "0.6.12" + "@firebase/logger" "0.4.4" + "@firebase/util" "1.10.3" + tslib "^2.1.0" + +"@firebase/component@0.6.12": + version "0.6.12" + resolved "https://registry.yarnpkg.com/@firebase/component/-/component-0.6.12.tgz#08905a534e9b769164e7e1b1e80f6e7611eb67f3" + integrity sha512-YnxqjtohLbnb7raXt2YuA44cC1wA9GiehM/cmxrsoxKlFxBLy2V0OkRSj9gpngAE0UoJ421Wlav9ycO7lTPAUw== + dependencies: + "@firebase/util" "1.10.3" tslib "^2.1.0" - undici "5.28.4" "@firebase/component@0.6.7": version "0.6.7" @@ -2975,12 +3011,15 @@ "@firebase/util" "1.9.6" tslib "^2.1.0" -"@firebase/component@0.6.8": - version "0.6.8" - resolved "https://registry.yarnpkg.com/@firebase/component/-/component-0.6.8.tgz#899b9318c0ce0586580e8cda7eaf61296f7fb43b" - integrity sha512-LcNvxGLLGjBwB0dJUsBGCej2fqAepWyBubs4jt1Tiuns7QLbXHuyObZ4aMeBjZjWx4m8g1LoVI9QFpSaq/k4/g== +"@firebase/data-connect@0.3.0": + version "0.3.0" + resolved "https://registry.yarnpkg.com/@firebase/data-connect/-/data-connect-0.3.0.tgz#5602986c28e2ac94df2499a7cf68ad622957089e" + integrity sha512-inbLq0JyQD/d02Al3Lso0Hc8z1BVpB3dYSMFcQkeKhYyjn5bspLczLdasPbCOEUp8MOkLblLZhJuRs7Q/spFnw== dependencies: - "@firebase/util" "1.9.7" + "@firebase/auth-interop-types" "0.2.4" + "@firebase/component" "0.6.12" + "@firebase/logger" "0.4.4" + "@firebase/util" "1.10.3" tslib "^2.1.0" "@firebase/database-compat@1.0.5": @@ -2995,16 +3034,16 @@ "@firebase/util" "1.9.6" tslib "^2.1.0" -"@firebase/database-compat@1.0.6": - version "1.0.6" - resolved "https://registry.yarnpkg.com/@firebase/database-compat/-/database-compat-1.0.6.tgz#6a4966fe4a9d8bc2cb11ee98a1bb01ab954d7d66" - integrity sha512-1OGA0sLY47mkXjhICCrUTXEYFnSSXoiXWm1SHsN62b+Lzs5aKA3aWTjTUmYIoK93kDAMPkYpulSv8jcbH4Hwew== - dependencies: - "@firebase/component" "0.6.8" - "@firebase/database" "1.0.6" - "@firebase/database-types" "1.0.4" - "@firebase/logger" "0.4.2" - "@firebase/util" "1.9.7" +"@firebase/database-compat@2.0.3": + version "2.0.3" + resolved "https://registry.yarnpkg.com/@firebase/database-compat/-/database-compat-2.0.3.tgz#87f18e814c06d62fea4bfb10d3b833f4259345ca" + integrity sha512-uHGQrSUeJvsDfA+IyHW5O4vdRPsCksEzv4T4Jins+bmQgYy20ZESU4x01xrQCn/nzqKHuQMEW99CoCO7D+5NiQ== + dependencies: + "@firebase/component" "0.6.12" + "@firebase/database" "1.0.12" + "@firebase/database-types" "1.0.8" + "@firebase/logger" "0.4.4" + "@firebase/util" "1.10.3" tslib "^2.1.0" "@firebase/database-types@1.0.3": @@ -3015,13 +3054,26 @@ "@firebase/app-types" "0.9.2" "@firebase/util" "1.9.6" -"@firebase/database-types@1.0.4": - version "1.0.4" - resolved "https://registry.yarnpkg.com/@firebase/database-types/-/database-types-1.0.4.tgz#dc507f7838ed29ac3235c68ebae5fd42a562e3e8" - integrity sha512-mz9ZzbH6euFXbcBo+enuJ36I5dR5w+enJHHjy9Y5ThCdKUseqfDjW3vCp1YxE9zygFCSjJJ/z1cQ+zodvUcwPQ== +"@firebase/database-types@1.0.8": + version "1.0.8" + resolved "https://registry.yarnpkg.com/@firebase/database-types/-/database-types-1.0.8.tgz#eddcce594be118bf9aebb043b5a6d51cfb6de620" + integrity sha512-6lPWIGeufhUq1heofZULyVvWFhD01TUrkkB9vyhmksjZ4XF7NaivQp9rICMk7QNhqwa+uDCaj4j+Q8qqcSVZ9g== dependencies: - "@firebase/app-types" "0.9.2" - "@firebase/util" "1.9.7" + "@firebase/app-types" "0.9.3" + "@firebase/util" "1.10.3" + +"@firebase/database@1.0.12": + version "1.0.12" + resolved "https://registry.yarnpkg.com/@firebase/database/-/database-1.0.12.tgz#4e1807b82dc734df8596eac44d7766ff96c2de24" + integrity sha512-psFl5t6rSFHq3i3fnU1QQlc4BB9Hnhh8TgEqvQlPPm8kDLw8gYxvjqYw3c5CZW0+zKR837nwT6im/wtJUivMKw== + dependencies: + "@firebase/app-check-interop-types" "0.3.3" + "@firebase/auth-interop-types" "0.2.4" + "@firebase/component" "0.6.12" + "@firebase/logger" "0.4.4" + "@firebase/util" "1.10.3" + faye-websocket "0.11.4" + tslib "^2.1.0" "@firebase/database@1.0.5": version "1.0.5" @@ -3036,19 +3088,6 @@ faye-websocket "0.11.4" tslib "^2.1.0" -"@firebase/database@1.0.6": - version "1.0.6" - resolved "https://registry.yarnpkg.com/@firebase/database/-/database-1.0.6.tgz#cf0592b140e207e35c14efe6776fc92266ac408a" - integrity sha512-nrexUEG/fpVlHtWKkyfhTC3834kZ1WS7voNyqbBsBCqHXQOvznN5Z0L3nxBqdXSJyltNAf4ndFlQqm5gZiEczQ== - dependencies: - "@firebase/app-check-interop-types" "0.3.2" - "@firebase/auth-interop-types" "0.2.3" - "@firebase/component" "0.6.8" - "@firebase/logger" "0.4.2" - "@firebase/util" "1.9.7" - faye-websocket "0.11.4" - tslib "^2.1.0" - "@firebase/firestore-compat@0.3.32": version "0.3.32" resolved "https://registry.yarnpkg.com/@firebase/firestore-compat/-/firestore-compat-0.3.32.tgz#1357ba5f80b83f33210d4fb49a1cd346cf95b291" @@ -3060,15 +3099,15 @@ "@firebase/util" "1.9.6" tslib "^2.1.0" -"@firebase/firestore-compat@0.3.33": - version "0.3.33" - resolved "https://registry.yarnpkg.com/@firebase/firestore-compat/-/firestore-compat-0.3.33.tgz#8e591bfafb574c695b09101b98c1a1057f55c60e" - integrity sha512-i42a2l31N95CwYEB7zmfK0FS1mrO6pwOLwxavCrwu1BCFrVVVQhUheTPIda/iGguK/2Nog0RaIR1bo7QkZEz3g== +"@firebase/firestore-compat@0.3.43": + version "0.3.43" + resolved "https://registry.yarnpkg.com/@firebase/firestore-compat/-/firestore-compat-0.3.43.tgz#c62994b9b26d011a96265d6aa524a0d6b45a2c1b" + integrity sha512-zxg7YS07XQnTetGs3GADM/eA6HB4vWUp+Av4iugmTbft0fQxuTSnGm7ifctaYuR7VMTPckU9CW+oFC9QUNSYvg== dependencies: - "@firebase/component" "0.6.8" - "@firebase/firestore" "4.6.4" - "@firebase/firestore-types" "3.0.2" - "@firebase/util" "1.9.7" + "@firebase/component" "0.6.12" + "@firebase/firestore" "4.7.8" + "@firebase/firestore-types" "3.0.3" + "@firebase/util" "1.10.3" tslib "^2.1.0" "@firebase/firestore-types@3.0.2": @@ -3076,6 +3115,11 @@ resolved "https://registry.yarnpkg.com/@firebase/firestore-types/-/firestore-types-3.0.2.tgz#75c301acc5fa33943eaaa9570b963c55398cad2a" integrity sha512-wp1A+t5rI2Qc/2q7r2ZpjUXkRVPtGMd6zCLsiWurjsQpqPgFin3AhNibKcIzoF2rnToNa/XYtyWXuifjOOwDgg== +"@firebase/firestore-types@3.0.3": + version "3.0.3" + resolved "https://registry.yarnpkg.com/@firebase/firestore-types/-/firestore-types-3.0.3.tgz#7d0c3dd8850c0193d8f5ee0cc8f11961407742c1" + integrity sha512-hD2jGdiWRxB/eZWF89xcK9gF8wvENDJkzpVFb4aGkzfEaKxVRD1kjz1t1Wj8VZEp2LCB53Yx1zD8mrhQu87R6Q== + "@firebase/firestore@4.6.3": version "4.6.3" resolved "https://registry.yarnpkg.com/@firebase/firestore/-/firestore-4.6.3.tgz#87ad38dfd0a0f16e79682177102ee1328d59af44" @@ -3090,19 +3134,18 @@ tslib "^2.1.0" undici "5.28.4" -"@firebase/firestore@4.6.4": - version "4.6.4" - resolved "https://registry.yarnpkg.com/@firebase/firestore/-/firestore-4.6.4.tgz#f53fcfc3ecfeb844f2147a43382d013d21e64968" - integrity sha512-vk2MoH5HxYEhiNg1l+yBXq1Fkhue/11bFg4HdlTv6BJHcTnnAj2a+/afPpatcW4MOdYA3Tv+d5nGzWbbOC1SHw== +"@firebase/firestore@4.7.8": + version "4.7.8" + resolved "https://registry.yarnpkg.com/@firebase/firestore/-/firestore-4.7.8.tgz#38b124a4d50a390934f70d916a84546376abdf4e" + integrity sha512-eDvVJ/I5vSmIdGmLHJAK1OcviigIxjjia6i5/AkMFq6vZMt7CBXA0B5Xz9pGRCZ7WewFcsCbK1ZUQoYJ91+Cew== dependencies: - "@firebase/component" "0.6.8" - "@firebase/logger" "0.4.2" - "@firebase/util" "1.9.7" - "@firebase/webchannel-wrapper" "1.0.1" + "@firebase/component" "0.6.12" + "@firebase/logger" "0.4.4" + "@firebase/util" "1.10.3" + "@firebase/webchannel-wrapper" "1.0.3" "@grpc/grpc-js" "~1.9.0" "@grpc/proto-loader" "^0.7.8" tslib "^2.1.0" - undici "5.28.4" "@firebase/functions-compat@0.3.11": version "0.3.11" @@ -3115,15 +3158,15 @@ "@firebase/util" "1.9.6" tslib "^2.1.0" -"@firebase/functions-compat@0.3.12": - version "0.3.12" - resolved "https://registry.yarnpkg.com/@firebase/functions-compat/-/functions-compat-0.3.12.tgz#aae387eb48466df1d031fc5bb755c657cfeb5994" - integrity sha512-r3XUb5VlITWpML46JymfJPkK6I9j4SNlO7qWIXUc0TUmkv0oAfVoiIt1F83/NuMZXaGr4YWA/794nVSy4GV8tw== +"@firebase/functions-compat@0.3.19": + version "0.3.19" + resolved "https://registry.yarnpkg.com/@firebase/functions-compat/-/functions-compat-0.3.19.tgz#f1d1ce51674a6ee8d5449b721374d35243dc3002" + integrity sha512-uw4tR8NcJCDu86UD63Za8A8SgFgmAVFb1XsGlkuBY7gpLyZWEFavWnwRkZ/8cUwpqUhp/SptXFZ1WFJSnOokLw== dependencies: - "@firebase/component" "0.6.8" - "@firebase/functions" "0.11.6" - "@firebase/functions-types" "0.6.2" - "@firebase/util" "1.9.7" + "@firebase/component" "0.6.12" + "@firebase/functions" "0.12.2" + "@firebase/functions-types" "0.6.3" + "@firebase/util" "1.10.3" tslib "^2.1.0" "@firebase/functions-types@0.6.2": @@ -3131,6 +3174,11 @@ resolved "https://registry.yarnpkg.com/@firebase/functions-types/-/functions-types-0.6.2.tgz#03b4ec9259d2f57548a3909d6a35ae35ad243552" integrity sha512-0KiJ9lZ28nS2iJJvimpY4nNccV21rkQyor5Iheu/nq8aKXJqtJdeSlZDspjPSBBiHRzo7/GMUttegnsEITqR+w== +"@firebase/functions-types@0.6.3": + version "0.6.3" + resolved "https://registry.yarnpkg.com/@firebase/functions-types/-/functions-types-0.6.3.tgz#f5faf770248b13f45d256f614230da6a11bfb654" + integrity sha512-EZoDKQLUHFKNx6VLipQwrSMh01A1SaL3Wg6Hpi//x6/fJ6Ee4hrAeswK99I5Ht8roiniKHw4iO0B1Oxj5I4plg== + "@firebase/functions@0.11.5": version "0.11.5" resolved "https://registry.yarnpkg.com/@firebase/functions/-/functions-0.11.5.tgz#e4187ae3ae262b0482114f7ad418600ca84f3459" @@ -3144,18 +3192,28 @@ tslib "^2.1.0" undici "5.28.4" -"@firebase/functions@0.11.6": - version "0.11.6" - resolved "https://registry.yarnpkg.com/@firebase/functions/-/functions-0.11.6.tgz#607991a3a870051e6456d7ccb0217fac6305db89" - integrity sha512-GPfIBPtpwQvsC7SQbgaUjLTdja0CsNwMoKSgrzA1FGGRk4NX6qO7VQU6XCwBiAFWbpbQex6QWkSMsCzLx1uibQ== +"@firebase/functions@0.12.2": + version "0.12.2" + resolved "https://registry.yarnpkg.com/@firebase/functions/-/functions-0.12.2.tgz#bea33b35437278228be563dfc02520d8623d43f4" + integrity sha512-iKpFDoCYk/Qm+Qwv5ynRb9/yq64QOt0A0+t9NuekyAZnSoV56kSNq/PmsVmBauar5SlmEjhHk6QKdMBP9S0gXA== + dependencies: + "@firebase/app-check-interop-types" "0.3.3" + "@firebase/auth-interop-types" "0.2.4" + "@firebase/component" "0.6.12" + "@firebase/messaging-interop-types" "0.2.3" + "@firebase/util" "1.10.3" + tslib "^2.1.0" + +"@firebase/installations-compat@0.2.12": + version "0.2.12" + resolved "https://registry.yarnpkg.com/@firebase/installations-compat/-/installations-compat-0.2.12.tgz#ee6396f3cc787c0dd4fc5dd87fec1db9dbb40c97" + integrity sha512-RhcGknkxmFu92F6Jb3rXxv6a4sytPjJGifRZj8MSURPuv2Xu+/AispCXEfY1ZraobhEHTG5HLGsP6R4l9qB5aA== dependencies: - "@firebase/app-check-interop-types" "0.3.2" - "@firebase/auth-interop-types" "0.2.3" - "@firebase/component" "0.6.8" - "@firebase/messaging-interop-types" "0.2.2" - "@firebase/util" "1.9.7" + "@firebase/component" "0.6.12" + "@firebase/installations" "0.6.12" + "@firebase/installations-types" "0.5.3" + "@firebase/util" "1.10.3" tslib "^2.1.0" - undici "5.28.4" "@firebase/installations-compat@0.2.7": version "0.2.7" @@ -3168,22 +3226,26 @@ "@firebase/util" "1.9.6" tslib "^2.1.0" -"@firebase/installations-compat@0.2.8": - version "0.2.8" - resolved "https://registry.yarnpkg.com/@firebase/installations-compat/-/installations-compat-0.2.8.tgz#ebc908afe84db2754b19a62f7655608911e13819" - integrity sha512-pI2q8JFHB7yIq/szmhzGSWXtOvtzl6tCUmyykv5C8vvfOVJUH6mP4M4iwjbK8S1JotKd/K70+JWyYlxgQ0Kpyw== - dependencies: - "@firebase/component" "0.6.8" - "@firebase/installations" "0.6.8" - "@firebase/installations-types" "0.5.2" - "@firebase/util" "1.9.7" - tslib "^2.1.0" - "@firebase/installations-types@0.5.2": version "0.5.2" resolved "https://registry.yarnpkg.com/@firebase/installations-types/-/installations-types-0.5.2.tgz#4d4949e0e83ced7f36cbee009355cd305a36e158" integrity sha512-que84TqGRZJpJKHBlF2pkvc1YcXrtEDOVGiDjovP/a3s6W4nlbohGXEsBJo0JCeeg/UG9A+DEZVDUV9GpklUzA== +"@firebase/installations-types@0.5.3": + version "0.5.3" + resolved "https://registry.yarnpkg.com/@firebase/installations-types/-/installations-types-0.5.3.tgz#cac8a14dd49f09174da9df8ae453f9b359c3ef2f" + integrity sha512-2FJI7gkLqIE0iYsNQ1P751lO3hER+Umykel+TkLwHj6plzWVxqvfclPUZhcKFVQObqloEBTmpi2Ozn7EkCABAA== + +"@firebase/installations@0.6.12": + version "0.6.12" + resolved "https://registry.yarnpkg.com/@firebase/installations/-/installations-0.6.12.tgz#6d9ad14e60caa8fae4ec0120c0e46ceb9d6fbdae" + integrity sha512-ES/WpuAV2k2YtBTvdaknEo7IY8vaGjIjS3zhnHSAIvY9KwTR8XZFXOJoZ3nSkjN1A5R4MtEh+07drnzPDg9vaw== + dependencies: + "@firebase/component" "0.6.12" + "@firebase/util" "1.10.3" + idb "7.1.1" + tslib "^2.1.0" + "@firebase/installations@0.6.7": version "0.6.7" resolved "https://registry.yarnpkg.com/@firebase/installations/-/installations-0.6.7.tgz#4fc60ca86e838d7c45dfd1d4926d000060bd1079" @@ -3194,16 +3256,6 @@ idb "7.1.1" tslib "^2.1.0" -"@firebase/installations@0.6.8": - version "0.6.8" - resolved "https://registry.yarnpkg.com/@firebase/installations/-/installations-0.6.8.tgz#f9c9d493bce04b04ca28814e926ef3ed71f033d6" - integrity sha512-57V374qdb2+wT5v7+ntpLXBjZkO6WRgmAUbVkRfFTM/4t980p0FesbqTAcOIiM8U866UeuuuF8lYH70D3jM/jQ== - dependencies: - "@firebase/component" "0.6.8" - "@firebase/util" "1.9.7" - idb "7.1.1" - tslib "^2.1.0" - "@firebase/logger@0.4.2": version "0.4.2" resolved "https://registry.yarnpkg.com/@firebase/logger/-/logger-0.4.2.tgz#74dfcfeedee810deb8a7080d5b7eba56aa16ffa2" @@ -3211,14 +3263,21 @@ dependencies: tslib "^2.1.0" -"@firebase/messaging-compat@0.2.10": - version "0.2.10" - resolved "https://registry.yarnpkg.com/@firebase/messaging-compat/-/messaging-compat-0.2.10.tgz#08711f75e2d517fd209bfbc65b1f754b09b2121c" - integrity sha512-FXQm7rcowkDm8kFLduHV35IRYCRo+Ng0PIp/t1+EBuEbyplaKkGjZ932pE+owf/XR+G/60ku2QRBptRGLXZydg== +"@firebase/logger@0.4.4": + version "0.4.4" + resolved "https://registry.yarnpkg.com/@firebase/logger/-/logger-0.4.4.tgz#29e8379d20fd1149349a195ee6deee4573a86f48" + integrity sha512-mH0PEh1zoXGnaR8gD1DeGeNZtWFKbnz9hDO91dIml3iou1gpOnLqXQ2dJfB71dj6dpmUjcQ6phY3ZZJbjErr9g== dependencies: - "@firebase/component" "0.6.8" - "@firebase/messaging" "0.12.10" - "@firebase/util" "1.9.7" + tslib "^2.1.0" + +"@firebase/messaging-compat@0.2.16": + version "0.2.16" + resolved "https://registry.yarnpkg.com/@firebase/messaging-compat/-/messaging-compat-0.2.16.tgz#533af4542a54b932146d175d5687aedd428be972" + integrity sha512-9HZZ88Ig3zQ0ok/Pwt4gQcNsOhoEy8hDHoGsV1am6ulgMuGuDVD2gl11Lere2ksL+msM12Lddi2x/7TCqmODZw== + dependencies: + "@firebase/component" "0.6.12" + "@firebase/messaging" "0.12.16" + "@firebase/util" "1.10.3" tslib "^2.1.0" "@firebase/messaging-compat@0.2.9": @@ -3236,15 +3295,20 @@ resolved "https://registry.yarnpkg.com/@firebase/messaging-interop-types/-/messaging-interop-types-0.2.2.tgz#81042f7e9739733fa4571d17f6eb6869522754d0" integrity sha512-l68HXbuD2PPzDUOFb3aG+nZj5KA3INcPwlocwLZOzPp9rFM9yeuI9YLl6DQfguTX5eAGxO0doTR+rDLDvQb5tA== -"@firebase/messaging@0.12.10": - version "0.12.10" - resolved "https://registry.yarnpkg.com/@firebase/messaging/-/messaging-0.12.10.tgz#29909f909b9588d44864732377d88de11f3b3ed3" - integrity sha512-fGbxJPKpl2DIKNJGhbk4mYPcM+qE2gl91r6xPoiol/mN88F5Ym6UeRdMVZah+pijh9WxM55alTYwXuW40r1Y2Q== - dependencies: - "@firebase/component" "0.6.8" - "@firebase/installations" "0.6.8" - "@firebase/messaging-interop-types" "0.2.2" - "@firebase/util" "1.9.7" +"@firebase/messaging-interop-types@0.2.3": + version "0.2.3" + resolved "https://registry.yarnpkg.com/@firebase/messaging-interop-types/-/messaging-interop-types-0.2.3.tgz#e647c9cd1beecfe6a6e82018a6eec37555e4da3e" + integrity sha512-xfzFaJpzcmtDjycpDeCUj0Ge10ATFi/VHVIvEEjDNc3hodVBQADZ7BWQU7CuFpjSHE+eLuBI13z5F/9xOoGX8Q== + +"@firebase/messaging@0.12.16": + version "0.12.16" + resolved "https://registry.yarnpkg.com/@firebase/messaging/-/messaging-0.12.16.tgz#bd8a768274bdc4368396bd9eaa356bffb998bef2" + integrity sha512-VJ8sCEIeP3+XkfbJA7410WhYGHdloYFZXoHe/vt+vNVDGw8JQPTQSVTRvjrUprEf5I4Tbcnpr2H34lS6zhCHSA== + dependencies: + "@firebase/component" "0.6.12" + "@firebase/installations" "0.6.12" + "@firebase/messaging-interop-types" "0.2.3" + "@firebase/util" "1.10.3" idb "7.1.1" tslib "^2.1.0" @@ -3260,6 +3324,18 @@ idb "7.1.1" tslib "^2.1.0" +"@firebase/performance-compat@0.2.13": + version "0.2.13" + resolved "https://registry.yarnpkg.com/@firebase/performance-compat/-/performance-compat-0.2.13.tgz#29bb94909c10553b40ca97e7f7d0e163bad8a77d" + integrity sha512-pB0SMQj2TLQ6roDcX0YQDWvUnVgsVOl0VnUvyT/VBdCUuQYDHobZsPEuQsoEqmPA44KS/Gl0oyKqf+I8UPtRgw== + dependencies: + "@firebase/component" "0.6.12" + "@firebase/logger" "0.4.4" + "@firebase/performance" "0.7.0" + "@firebase/performance-types" "0.2.3" + "@firebase/util" "1.10.3" + tslib "^2.1.0" + "@firebase/performance-compat@0.2.7": version "0.2.7" resolved "https://registry.yarnpkg.com/@firebase/performance-compat/-/performance-compat-0.2.7.tgz#30e29934326888b164c67e5f3709c3a8e580a8d6" @@ -3272,23 +3348,16 @@ "@firebase/util" "1.9.6" tslib "^2.1.0" -"@firebase/performance-compat@0.2.8": - version "0.2.8" - resolved "https://registry.yarnpkg.com/@firebase/performance-compat/-/performance-compat-0.2.8.tgz#d97bab3fd0c147c7f796e9b8f78712bc0b83699c" - integrity sha512-o7TFClRVJd3VIBoY7KZQqtCeW0PC6v9uBzM6Lfw3Nc9D7hM6OonqecYvh7NwJ6R14k+xM27frLS4BcCvFHKw2A== - dependencies: - "@firebase/component" "0.6.8" - "@firebase/logger" "0.4.2" - "@firebase/performance" "0.6.8" - "@firebase/performance-types" "0.2.2" - "@firebase/util" "1.9.7" - tslib "^2.1.0" - "@firebase/performance-types@0.2.2": version "0.2.2" resolved "https://registry.yarnpkg.com/@firebase/performance-types/-/performance-types-0.2.2.tgz#7b78cd2ab2310bac89a63348d93e67e01eb06dd7" integrity sha512-gVq0/lAClVH5STrIdKnHnCo2UcPLjJlDUoEB/tB4KM+hAeHUxWKnpT0nemUPvxZ5nbdY/pybeyMe8Cs29gEcHA== +"@firebase/performance-types@0.2.3": + version "0.2.3" + resolved "https://registry.yarnpkg.com/@firebase/performance-types/-/performance-types-0.2.3.tgz#5ce64e90fa20ab5561f8b62a305010cf9fab86fb" + integrity sha512-IgkyTz6QZVPAq8GSkLYJvwSLr3LS9+V6vNPQr0x4YozZJiLF5jYixj0amDtATf1X0EtYHqoPO48a9ija8GocxQ== + "@firebase/performance@0.6.7": version "0.6.7" resolved "https://registry.yarnpkg.com/@firebase/performance/-/performance-0.6.7.tgz#7d6c4e5ec61df7369d87fb4a5c0af4e0cedee69b" @@ -3300,15 +3369,28 @@ "@firebase/util" "1.9.6" tslib "^2.1.0" -"@firebase/performance@0.6.8": - version "0.6.8" - resolved "https://registry.yarnpkg.com/@firebase/performance/-/performance-0.6.8.tgz#668b0fc207389f7829fd3bfb6614fe819b7db124" - integrity sha512-F+alziiIZ6Yn8FG47mxwljq+4XkgkT2uJIFRlkyViUQRLzrogaUJW6u/+6ZrePXnouKlKIwzqos3PVJraPEcCA== +"@firebase/performance@0.7.0": + version "0.7.0" + resolved "https://registry.yarnpkg.com/@firebase/performance/-/performance-0.7.0.tgz#1cd82039f7e06e0f059287dfa21705c68ec9a691" + integrity sha512-L91PwYuiJdKXKSRqsWNicvTppAJVzKjye03UlegeD6TkpKjb93T8AmJ9B0Mt0bcWHCNtnnRBCdSCvD2U9GZDjw== dependencies: - "@firebase/component" "0.6.8" - "@firebase/installations" "0.6.8" - "@firebase/logger" "0.4.2" - "@firebase/util" "1.9.7" + "@firebase/component" "0.6.12" + "@firebase/installations" "0.6.12" + "@firebase/logger" "0.4.4" + "@firebase/util" "1.10.3" + tslib "^2.1.0" + web-vitals "^4.2.4" + +"@firebase/remote-config-compat@0.2.12": + version "0.2.12" + resolved "https://registry.yarnpkg.com/@firebase/remote-config-compat/-/remote-config-compat-0.2.12.tgz#ae0b597b3228deef0e3c6b2c6e631f19213eca4c" + integrity sha512-91jLWPtubIuPBngg9SzwvNCWzhMLcyBccmt7TNZP+y1cuYFNOWWHKUXQ3IrxCLB7WwLqQaEu7fTDAjHsTyBsSw== + dependencies: + "@firebase/component" "0.6.12" + "@firebase/logger" "0.4.4" + "@firebase/remote-config" "0.5.0" + "@firebase/remote-config-types" "0.4.0" + "@firebase/util" "1.10.3" tslib "^2.1.0" "@firebase/remote-config-compat@0.2.7": @@ -3323,23 +3405,16 @@ "@firebase/util" "1.9.6" tslib "^2.1.0" -"@firebase/remote-config-compat@0.2.8": - version "0.2.8" - resolved "https://registry.yarnpkg.com/@firebase/remote-config-compat/-/remote-config-compat-0.2.8.tgz#a6df065c1fd0a943e84ee0e76acfc6c1bede42f9" - integrity sha512-UxSFOp6dzFj2AHB8Bq/BYtbq5iFyizKx4Rd6WxAdaKYM8cnPMeK+l2v+Oogtjae+AeyHRI+MfL2acsfVe5cd2A== - dependencies: - "@firebase/component" "0.6.8" - "@firebase/logger" "0.4.2" - "@firebase/remote-config" "0.4.8" - "@firebase/remote-config-types" "0.3.2" - "@firebase/util" "1.9.7" - tslib "^2.1.0" - "@firebase/remote-config-types@0.3.2": version "0.3.2" resolved "https://registry.yarnpkg.com/@firebase/remote-config-types/-/remote-config-types-0.3.2.tgz#a5d1009c6fd08036c5cd4f28764e3cd694f966d5" integrity sha512-0BC4+Ud7y2aPTyhXJTMTFfrGGLqdYXrUB9sJVAB8NiqJswDTc4/2qrE/yfUbnQJhbSi6ZaTTBKyG3n1nplssaA== +"@firebase/remote-config-types@0.4.0": + version "0.4.0" + resolved "https://registry.yarnpkg.com/@firebase/remote-config-types/-/remote-config-types-0.4.0.tgz#91b9a836d5ca30ced68c1516163b281fbb544537" + integrity sha512-7p3mRE/ldCNYt8fmWMQ/MSGRmXYlJ15Rvs9Rk17t8p0WwZDbeK7eRmoI1tvCPaDzn9Oqh+yD6Lw+sGLsLg4kKg== + "@firebase/remote-config@0.4.7": version "0.4.7" resolved "https://registry.yarnpkg.com/@firebase/remote-config/-/remote-config-0.4.7.tgz#1afd6f3089e3c66ed6909eb60d0eb1329d27c9ff" @@ -3351,15 +3426,26 @@ "@firebase/util" "1.9.6" tslib "^2.1.0" -"@firebase/remote-config@0.4.8": - version "0.4.8" - resolved "https://registry.yarnpkg.com/@firebase/remote-config/-/remote-config-0.4.8.tgz#b6a79acdf73554e0ee31c278162b85592fc8c1f3" - integrity sha512-AMLqe6wfIRnjc6FkCWOSUjhc1fSTEf8o+cv1NolFvbiJ/tU+TqN4pI7pT+MIKQzNiq5fxLehkOx+xtAQBxPJKQ== +"@firebase/remote-config@0.5.0": + version "0.5.0" + resolved "https://registry.yarnpkg.com/@firebase/remote-config/-/remote-config-0.5.0.tgz#30212fa77adba8a62fc6408eb32122147ae80790" + integrity sha512-weiEbpBp5PBJTHUWR4GwI7ZacaAg68BKha5QnZ8Go65W4oQjEWqCW/rfskABI/OkrGijlL3CUmCB/SA6mVo0qA== dependencies: - "@firebase/component" "0.6.8" - "@firebase/installations" "0.6.8" - "@firebase/logger" "0.4.2" - "@firebase/util" "1.9.7" + "@firebase/component" "0.6.12" + "@firebase/installations" "0.6.12" + "@firebase/logger" "0.4.4" + "@firebase/util" "1.10.3" + tslib "^2.1.0" + +"@firebase/storage-compat@0.3.16": + version "0.3.16" + resolved "https://registry.yarnpkg.com/@firebase/storage-compat/-/storage-compat-0.3.16.tgz#49ab9c572bb172e6335c099d95a48bee0f17cc98" + integrity sha512-EeMuok/s0r938lEomia8XILEqSYULm7HcYZ/GTZLDWur0kMf2ktuPVZiTdRiwEV3Iki7FtQO5txrQ/0pLRVLAw== + dependencies: + "@firebase/component" "0.6.12" + "@firebase/storage" "0.13.6" + "@firebase/storage-types" "0.8.3" + "@firebase/util" "1.10.3" tslib "^2.1.0" "@firebase/storage-compat@0.3.8": @@ -3373,22 +3459,16 @@ "@firebase/util" "1.9.6" tslib "^2.1.0" -"@firebase/storage-compat@0.3.9": - version "0.3.9" - resolved "https://registry.yarnpkg.com/@firebase/storage-compat/-/storage-compat-0.3.9.tgz#42496a7b5f7c384f0ea590d704934465102b4527" - integrity sha512-WWgAp5bTW961oIsCc9+98m4MIVKpEqztAlIngfHfwO/x3DYoBPRl/awMRG3CAXyVxG+7B7oHC5IsnqM+vTwx2A== - dependencies: - "@firebase/component" "0.6.8" - "@firebase/storage" "0.12.6" - "@firebase/storage-types" "0.8.2" - "@firebase/util" "1.9.7" - tslib "^2.1.0" - "@firebase/storage-types@0.8.2": version "0.8.2" resolved "https://registry.yarnpkg.com/@firebase/storage-types/-/storage-types-0.8.2.tgz#edb321b8a3872a9f74e1f27de046f160021c8e1f" integrity sha512-0vWu99rdey0g53lA7IShoA2Lol1jfnPovzLDUBuon65K7uKG9G+L5uO05brD9pMw+l4HRFw23ah3GwTGpEav6g== +"@firebase/storage-types@0.8.3": + version "0.8.3" + resolved "https://registry.yarnpkg.com/@firebase/storage-types/-/storage-types-0.8.3.tgz#2531ef593a3452fc12c59117195d6485c6632d3d" + integrity sha512-+Muk7g9uwngTpd8xn9OdF/D48uiQ7I1Fae7ULsWPuKoCH3HU7bfFPhxtJYzyhjdniowhuDpQcfPmuNRAqZEfvg== + "@firebase/storage@0.12.5": version "0.12.5" resolved "https://registry.yarnpkg.com/@firebase/storage/-/storage-0.12.5.tgz#9277b4f838572ba78f017aa6207c6d7545400846" @@ -3399,15 +3479,21 @@ tslib "^2.1.0" undici "5.28.4" -"@firebase/storage@0.12.6": - version "0.12.6" - resolved "https://registry.yarnpkg.com/@firebase/storage/-/storage-0.12.6.tgz#49b2c77f10fd97da913a93e37c86cdff92a805eb" - integrity sha512-Zgb9WuehJxzhj7pGXUvkAEaH+3HvLjD9xSZ9nepuXf5f8378xME7oGJtREr/RnepdDA5YW0XIxe0QQBNHpe1nw== +"@firebase/storage@0.13.6": + version "0.13.6" + resolved "https://registry.yarnpkg.com/@firebase/storage/-/storage-0.13.6.tgz#322def6cda335df991ce9787aa5ef5650db901bd" + integrity sha512-BEJLYQzVgAoglRl5VRIRZ91RRBZgS/O37/PSGQJBYNuoLmFZUrtwrlLTOAwG776NlO9VQR+K2j15/36Lr2EqHA== + dependencies: + "@firebase/component" "0.6.12" + "@firebase/util" "1.10.3" + tslib "^2.1.0" + +"@firebase/util@1.10.3": + version "1.10.3" + resolved "https://registry.yarnpkg.com/@firebase/util/-/util-1.10.3.tgz#63fc5fea7b36236219c4875731597494416678d1" + integrity sha512-wfoF5LTy0m2ufUapV0ZnpcGQvuavTbJ5Qr1Ze9OJGL70cSMvhDyjS4w2121XdA3lGZSTOsDOyGhpoDtYwck85A== dependencies: - "@firebase/component" "0.6.8" - "@firebase/util" "1.9.7" tslib "^2.1.0" - undici "5.28.4" "@firebase/util@1.9.6": version "1.9.6" @@ -3416,13 +3502,6 @@ dependencies: tslib "^2.1.0" -"@firebase/util@1.9.7": - version "1.9.7" - resolved "https://registry.yarnpkg.com/@firebase/util/-/util-1.9.7.tgz#c03b0ae065b3bba22800da0bd5314ef030848038" - integrity sha512-fBVNH/8bRbYjqlbIhZ+lBtdAAS4WqZumx03K06/u7fJSpz1TGjEMm1ImvKD47w+xaFKIP2ori6z8BrbakRfjJA== - dependencies: - tslib "^2.1.0" - "@firebase/vertexai-preview@0.0.2": version "0.0.2" resolved "https://registry.yarnpkg.com/@firebase/vertexai-preview/-/vertexai-preview-0.0.2.tgz#a17454e4899bf4b3fa07322fb204659e7cfa5868" @@ -3434,15 +3513,15 @@ "@firebase/util" "1.9.6" tslib "^2.1.0" -"@firebase/vertexai-preview@0.0.3": - version "0.0.3" - resolved "https://registry.yarnpkg.com/@firebase/vertexai-preview/-/vertexai-preview-0.0.3.tgz#73dea839439ebdbb5ccd946f297ede5b57e6e7e9" - integrity sha512-KVtUWLp+ScgiwkDKAvNkVucAyhLVQp6C6lhnVEuIg4mWhWcS3oerjAeVhZT4uNofKwWxRsOaB2Yec7DMTXlQPQ== +"@firebase/vertexai@1.0.4": + version "1.0.4" + resolved "https://registry.yarnpkg.com/@firebase/vertexai/-/vertexai-1.0.4.tgz#1966ddfb32492d004f595f639e57162d488c84ba" + integrity sha512-Nkf/r4u166b4Id6zrrW0Qtg1KyZpQvvYchtkebamnHtIfY+Qnt51I/sx4Saos/WrmO8SnrSU850LfmJ7pehYXg== dependencies: - "@firebase/app-check-interop-types" "0.3.2" - "@firebase/component" "0.6.8" - "@firebase/logger" "0.4.2" - "@firebase/util" "1.9.7" + "@firebase/app-check-interop-types" "0.3.3" + "@firebase/component" "0.6.12" + "@firebase/logger" "0.4.4" + "@firebase/util" "1.10.3" tslib "^2.1.0" "@firebase/webchannel-wrapper@1.0.0": @@ -3450,10 +3529,10 @@ resolved "https://registry.yarnpkg.com/@firebase/webchannel-wrapper/-/webchannel-wrapper-1.0.0.tgz#a0e11b39fa3ef56ed5333bf321f581037aeda033" integrity sha512-zuWxyfXNbsKbm96HhXzainONPFqRcoZblQ++e9cAIGUuHfl2cFSBzW01jtesqWG/lqaUyX3H8O1y9oWboGNQBA== -"@firebase/webchannel-wrapper@1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@firebase/webchannel-wrapper/-/webchannel-wrapper-1.0.1.tgz#0b62c9f47f557a5b4adc073bb0a47542ce6af4c4" - integrity sha512-jmEnr/pk0yVkA7mIlHNnxCi+wWzOFUg0WyIotgkKAb2u1J7fAeDBcVNSTjTihbAYNusCLQdW5s9IJ5qwnEufcQ== +"@firebase/webchannel-wrapper@1.0.3": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@firebase/webchannel-wrapper/-/webchannel-wrapper-1.0.3.tgz#a73bab8eb491d7b8b7be2f0e6c310647835afe83" + integrity sha512-2xCRM9q9FlzGZCdgDMJwc0gyUkWFtkosy7Xxr6sFgQwn+wMNIWd7xIvYNauU1r64B5L5rsGKy/n9TKJ0aAFeqQ== "@flatten-js/interval-tree@^1.1.2": version "1.1.3" @@ -4420,7 +4499,7 @@ resolved "https://registry.yarnpkg.com/@mantine/hooks/-/hooks-7.8.0.tgz#fc32e07746689459c4b049dc581d1dbda5545686" integrity sha512-+70fkgjhVJeJ+nJqnburIM3UAsfvxat1Low9HMPobLbv64FIdB4Nzu5ct3qojNQ58r5sK01tg5UoFIJYslaVrg== -"@metamask/abi-utils@^2.0.3", "@metamask/abi-utils@^2.0.4": +"@metamask/abi-utils@^2.0.3": version "2.0.4" resolved "https://registry.yarnpkg.com/@metamask/abi-utils/-/abi-utils-2.0.4.tgz#20908c1d910f7a17a89fdf5778a5c59d5cb8b8be" integrity sha512-StnIgUB75x7a7AgUhiaUZDpCsqGp7VkNnZh2XivXkJ6mPkE83U8ARGQj5MbRis7VJY8BC5V1AbB1fjdh0hupPQ== @@ -4436,19 +4515,20 @@ "@metamask/superstruct" "^3.1.0" "@metamask/utils" "^11.0.1" -"@metamask/accounts-controller@^23.1.0": - version "23.1.0" - resolved "https://registry.yarnpkg.com/@metamask/accounts-controller/-/accounts-controller-23.1.0.tgz#f399f0a92d280abb3ec222fe46fe3d86bb97bcfb" - integrity sha512-woIahBg0PqzfcP/O4iIk2yk1WGmUIA2a4qplok2OEV0a2ZAIENfyaysvDCXwC5RO8Ka53mX/cDn/lRd4rFNeLw== +"@metamask/accounts-controller@^24.0.1": + version "24.0.1" + resolved "https://registry.yarnpkg.com/@metamask/accounts-controller/-/accounts-controller-24.0.1.tgz#e2743744a0f4b48e74cccde7d8de6eb30f55662a" + integrity sha512-bjTaqriUplaMXBEPGfrK9UuU9/EVb8IqS3rzGsFA/v1MkgYmUF1JHNUCsLDrxE9DbANHXM4phsuXeXroIiz6eA== dependencies: "@ethereumjs/util" "^8.1.0" "@metamask/base-controller" "^8.0.0" - "@metamask/eth-snap-keyring" "^10.0.0" - "@metamask/keyring-api" "^17.0.0" - "@metamask/keyring-internal-api" "^4.0.1" + "@metamask/eth-snap-keyring" "^11.1.0" + "@metamask/keyring-api" "^17.2.0" + "@metamask/keyring-internal-api" "^4.0.3" + "@metamask/network-controller" "^22.2.1" "@metamask/snaps-sdk" "^6.17.1" "@metamask/snaps-utils" "^8.10.0" - "@metamask/utils" "^11.1.0" + "@metamask/utils" "^11.2.0" deepmerge "^4.2.2" ethereum-cryptography "^2.1.2" immer "^9.0.6" @@ -4463,20 +4543,20 @@ "@metamask/controller-utils" "^11.5.0" "@metamask/utils" "^11.1.0" -"@metamask/approval-controller@^7.1.0", "@metamask/approval-controller@^7.1.1": - version "7.1.1" - resolved "https://registry.yarnpkg.com/@metamask/approval-controller/-/approval-controller-7.1.1.tgz#184a280647922c0bdc6644e10292c6db903a7062" - integrity sha512-sMIoO7UQ8M9Ry7qWzcqPR4leJ/P3iq4xbdqzLLLzi8Wm1l3419hSOpk04QEa2HBWJZUiGcRCkc74s/iw4OLzhg== +"@metamask/approval-controller@^7.1.0", "@metamask/approval-controller@^7.1.3": + version "7.1.3" + resolved "https://registry.yarnpkg.com/@metamask/approval-controller/-/approval-controller-7.1.3.tgz#2d28dfb9261806ab31855ec63bd6781fbd7a4ebf" + integrity sha512-1xfcJoHOTf2S+0JLN82ayYvO8VwxloZDvhTqJHNaqsDSgfx6TtC50+nBBahAGQxxtiTBrI3ZwwwDATpfutWwdg== dependencies: - "@metamask/base-controller" "^7.0.2" - "@metamask/rpc-errors" "^7.0.1" - "@metamask/utils" "^10.0.0" - nanoid "^3.1.31" + "@metamask/base-controller" "^8.0.0" + "@metamask/rpc-errors" "^7.0.2" + "@metamask/utils" "^11.1.0" + nanoid "^3.3.8" -"@metamask/assets-controllers@^46.0.0": - version "46.0.0" - resolved "https://registry.yarnpkg.com/@metamask/assets-controllers/-/assets-controllers-46.0.0.tgz#b3bb495eae490b24ea451d2e1b1a7fba7de9580e" - integrity sha512-iHaS+74ROQBynyLKUuzub5+kYVHuE29L8YJExpq4UJf4vnO7L5FTYEcNCplxBrCzS8qWinZ2RwS5OoUfvXYAKg== +"@metamask/assets-controllers@^50.0.0": + version "50.0.0" + resolved "https://registry.yarnpkg.com/@metamask/assets-controllers/-/assets-controllers-50.0.0.tgz#de2e30659a32ac9371cfc055c1c4107336145808" + integrity sha512-mPT5g0GovgxQrZp7n/U85qxECbbezSdEL7Da5tGlbE5LkEwcEaYYBwVnlrE7Tv1cOrrW/GENlR1eG0nyDPvVlQ== dependencies: "@ethereumjs/util" "^8.1.0" "@ethersproject/abi" "^5.7.0" @@ -4485,28 +4565,28 @@ "@ethersproject/contracts" "^5.7.0" "@ethersproject/providers" "^5.7.0" "@metamask/abi-utils" "^2.0.3" - "@metamask/base-controller" "^7.1.1" + "@metamask/base-controller" "^8.0.0" "@metamask/contract-metadata" "^2.4.0" - "@metamask/controller-utils" "^11.4.5" + "@metamask/controller-utils" "^11.5.0" "@metamask/eth-query" "^4.0.0" + "@metamask/keyring-api" "^17.0.0" "@metamask/metamask-eth-abis" "^3.1.1" - "@metamask/polling-controller" "^12.0.2" + "@metamask/polling-controller" "^12.0.3" "@metamask/rpc-errors" "^7.0.2" - "@metamask/snaps-utils" "^8.3.0" - "@metamask/utils" "^11.0.1" + "@metamask/snaps-utils" "^8.10.0" + "@metamask/utils" "^11.1.0" "@types/bn.js" "^5.1.5" "@types/uuid" "^8.3.0" async-mutex "^0.5.0" bitcoin-address-validation "^2.2.3" bn.js "^5.2.1" - cockatiel "^3.1.2" immer "^9.0.6" lodash "^4.17.21" multiformats "^13.1.0" single-call-balance-checker-abi "^1.0.0" uuid "^8.3.2" -"@metamask/base-controller@^7.0.1", "@metamask/base-controller@^7.0.2", "@metamask/base-controller@^7.0.3", "@metamask/base-controller@^7.1.0", "@metamask/base-controller@^7.1.1": +"@metamask/base-controller@^7.0.1", "@metamask/base-controller@^7.0.2", "@metamask/base-controller@^7.0.3", "@metamask/base-controller@^7.1.1": version "7.1.1" resolved "https://registry.yarnpkg.com/@metamask/base-controller/-/base-controller-7.1.1.tgz#837216ee099563b2106202fa0ed376dc909dfbb9" integrity sha512-4nbA6RL9y0SdHdn4MmMTREX6ISJL7OGHn0GXXszv0tp1fdjsn+SBs28uu1a9ceg1J7R/lO6JH7jAAz8zRtt8Nw== @@ -4561,7 +4641,7 @@ resolved "https://registry.yarnpkg.com/@metamask/contract-metadata/-/contract-metadata-2.5.0.tgz#33921fa9c15eb1863f55dcd5f75467ae15614ebb" integrity sha512-+j7jEcp0P1OUMEpa/OIwfJs/ahBC/akwgWxaRTSWX2SWABvlUKBVRMtslfL94Qj2wN2xw8xjaUy5nSHqrznqDA== -"@metamask/controller-utils@^11.0.0", "@metamask/controller-utils@^11.3.0", "@metamask/controller-utils@^11.4.4", "@metamask/controller-utils@^11.4.5", "@metamask/controller-utils@^11.5.0": +"@metamask/controller-utils@^11.0.0", "@metamask/controller-utils@^11.3.0", "@metamask/controller-utils@^11.4.4", "@metamask/controller-utils@^11.5.0": version "11.5.0" resolved "https://registry.yarnpkg.com/@metamask/controller-utils/-/controller-utils-11.5.0.tgz#27daa18c6d2b63189bdb21cd7c6550d81b5e2581" integrity sha512-WXR6f33YzT4RSb5HK6RKg9CrE4sJO1mMrrtPZgmvdFRxPm+KE5tPrnEgnlhjrVzRB0eZov76hd+jSutezqRAbg== @@ -4593,26 +4673,27 @@ resolved "https://registry.yarnpkg.com/@metamask/eslint-plugin-design-tokens/-/eslint-plugin-design-tokens-1.1.0.tgz#c9d4471f04f62bfb307aa261d11b7a674eb27961" integrity sha512-33BJTEl96wXrkNdydNgTnfz3C0XP6/FdYbKzNnM8wT3XeVOkF/EOt8oiY8X4stXlNKDJtKyQchxENgZwS8sl9w== -"@metamask/eth-block-tracker@^11.0.1", "@metamask/eth-block-tracker@^11.0.2": - version "11.0.2" - resolved "https://registry.yarnpkg.com/@metamask/eth-block-tracker/-/eth-block-tracker-11.0.2.tgz#7890a4430bd6a92577585a66d7958771bfd88ec8" - integrity sha512-R1J3n2WY3PyEfYELc45MVFw7+6iKu7O3S/nBU0icmM3Q2mVqDMpctF5Z5pAZDYYEW35h7tTU2KJfUb1DrXzWcg== +"@metamask/eth-block-tracker@^11.0.3", "@metamask/eth-block-tracker@^11.0.4": + version "11.0.4" + resolved "https://registry.yarnpkg.com/@metamask/eth-block-tracker/-/eth-block-tracker-11.0.4.tgz#20fc468c9ed6d8d61da514184e546a9faee5fa64" + integrity sha512-t/em7d7lmV6FqU/4bPRaImhYQPp7ZXy2mYzh/3FocYGAhSOqjL107uqLb5lds8EdIp1rqO4Hm+NgNhgKI8yhIw== dependencies: "@metamask/eth-json-rpc-provider" "^4.1.5" "@metamask/safe-event-emitter" "^3.1.1" - "@metamask/utils" "^9.1.0" + "@metamask/utils" "^11.0.1" json-rpc-random-id "^1.0.1" pify "^5.0.0" -"@metamask/eth-hd-keyring@^7.0.4": - version "7.0.4" - resolved "https://registry.yarnpkg.com/@metamask/eth-hd-keyring/-/eth-hd-keyring-7.0.4.tgz#1db788db66d956b8334a1b174983b753e39701d6" - integrity sha512-+qXgo8hetQbRJb/j4poloBng1HxNMTQvZG2SsGmfXaauQrpIk7T7T/r3i8K0v1rKVwhqELooyRuB0QzWE1OrRQ== +"@metamask/eth-hd-keyring@^10.0.0": + version "10.0.1" + resolved "https://registry.yarnpkg.com/@metamask/eth-hd-keyring/-/eth-hd-keyring-10.0.1.tgz#43e817a07b9f50f39b27155d697db55d5fa4237c" + integrity sha512-Ebzpd/Gejcsuz5zX+qL5Wou/JHT2gb5zxxHz30NJIHRO1xIe/nFOaNW5Q6InIddb1reemQe21xqHHPTnVghnwQ== dependencies: "@ethereumjs/util" "^8.1.0" - "@metamask/eth-sig-util" "^7.0.3" + "@metamask/eth-sig-util" "^8.2.0" + "@metamask/key-tree" "^10.0.2" "@metamask/scure-bip39" "^2.1.1" - "@metamask/utils" "^9.2.1" + "@metamask/utils" "^11.1.0" ethereum-cryptography "^2.1.2" "@metamask/eth-hd-keyring@^9.0.0": @@ -4648,32 +4729,32 @@ "@metamask/rpc-errors" "^7.0.0" "@metamask/utils" "^9.1.0" -"@metamask/eth-json-rpc-middleware@^15.0.0": - version "15.0.0" - resolved "https://registry.yarnpkg.com/@metamask/eth-json-rpc-middleware/-/eth-json-rpc-middleware-15.0.0.tgz#167288ad4618438af9d1bda75d238cb0facfde3f" - integrity sha512-RkmaPQPWGH1qggaq0sStwVIeamiJOjf/2jBJfbX78r/nDCai8ddY/zHpATJr42SvtRYD0JrCPjo6v356IDzjQw== +"@metamask/eth-json-rpc-middleware@^15.0.0", "@metamask/eth-json-rpc-middleware@^15.0.1": + version "15.2.0" + resolved "https://registry.yarnpkg.com/@metamask/eth-json-rpc-middleware/-/eth-json-rpc-middleware-15.2.0.tgz#9b14aa566ae95d2eb19cc4a1f89f937a9028ac4e" + integrity sha512-5fcL7m/LKwSjlOqOSsVmjSgWIOy5GE0hxpoSmbcYHhQuYWiLYRtdNi9iPif6+tO8PdIabgxqrvoLND6Iz8RixQ== dependencies: - "@metamask/eth-block-tracker" "^11.0.1" - "@metamask/eth-json-rpc-provider" "^4.1.5" - "@metamask/eth-sig-util" "^7.0.3" - "@metamask/json-rpc-engine" "^10.0.0" - "@metamask/rpc-errors" "^7.0.0" - "@metamask/utils" "^9.1.0" + "@metamask/eth-block-tracker" "^11.0.4" + "@metamask/eth-json-rpc-provider" "^4.1.7" + "@metamask/eth-sig-util" "^8.1.2" + "@metamask/json-rpc-engine" "^10.0.2" + "@metamask/rpc-errors" "^7.0.2" + "@metamask/utils" "^11.1.0" "@types/bn.js" "^5.1.5" bn.js "^5.2.1" klona "^2.0.6" pify "^5.0.0" safe-stable-stringify "^2.4.3" -"@metamask/eth-json-rpc-provider@^4.1.5", "@metamask/eth-json-rpc-provider@^4.1.6": - version "4.1.6" - resolved "https://registry.yarnpkg.com/@metamask/eth-json-rpc-provider/-/eth-json-rpc-provider-4.1.6.tgz#5d86ee7db6ff94b0abe1f00ef02aeffa60536497" - integrity sha512-32gz41C416E0P+b6YpG/2Ne1UoyqxHRGT9xBh1LTFaWvZXfGQxjSTdK+AEVG01pZ8Mf8Bgp8z2SpEsWcE9ZCng== +"@metamask/eth-json-rpc-provider@^4.1.5", "@metamask/eth-json-rpc-provider@^4.1.6", "@metamask/eth-json-rpc-provider@^4.1.7", "@metamask/eth-json-rpc-provider@^4.1.8": + version "4.1.8" + resolved "https://registry.yarnpkg.com/@metamask/eth-json-rpc-provider/-/eth-json-rpc-provider-4.1.8.tgz#1ff84270b240b75d14064bcc2ecb3bb14e718401" + integrity sha512-aU3VkuDSSot+RtRhQOUMdlu3LAZ5fE/rOdq5mUOKtFwefZPQTttoI59KY+qj5zzGIbSh6as5PQ55rAAs7jMO3A== dependencies: - "@metamask/json-rpc-engine" "^10.0.1" - "@metamask/rpc-errors" "^7.0.1" + "@metamask/json-rpc-engine" "^10.0.3" + "@metamask/rpc-errors" "^7.0.2" "@metamask/safe-event-emitter" "^3.0.0" - "@metamask/utils" "^10.0.0" + "@metamask/utils" "^11.1.0" uuid "^8.3.2" "@metamask/eth-ledger-bridge-keyring@8.0.3": @@ -4696,18 +4777,6 @@ json-rpc-random-id "^1.0.0" xtend "^4.0.1" -"@metamask/eth-sig-util@^7.0.3": - version "7.0.3" - resolved "https://registry.yarnpkg.com/@metamask/eth-sig-util/-/eth-sig-util-7.0.3.tgz#be9e444fe0b8474c04e2ff42fd983173767f6ac0" - integrity sha512-PAtGnOkYvh90k2lEZldq/FK7GTLF6WxE+2bV85PoA3pqlJnmJCAY62tuvxHSwnVngSKlc4mcNvjnUg2eYO6JGg== - dependencies: - "@ethereumjs/util" "^8.1.0" - "@metamask/abi-utils" "^2.0.4" - "@metamask/utils" "^9.0.0" - "@scure/base" "~1.1.3" - ethereum-cryptography "^2.1.2" - tweetnacl "^1.0.3" - "@metamask/eth-sig-util@^8.0.0", "@metamask/eth-sig-util@^8.1.2", "@metamask/eth-sig-util@^8.2.0": version "8.2.0" resolved "https://registry.yarnpkg.com/@metamask/eth-sig-util/-/eth-sig-util-8.2.0.tgz#f114ca5b2a1a997b467933c902e7ec44123eb8fb" @@ -4721,29 +4790,29 @@ ethereum-cryptography "^2.1.2" tweetnacl "^1.0.3" -"@metamask/eth-simple-keyring@^6.0.5": - version "6.0.5" - resolved "https://registry.yarnpkg.com/@metamask/eth-simple-keyring/-/eth-simple-keyring-6.0.5.tgz#3e2f783092f9d873740e43852880216192802290" - integrity sha512-VqpD/TnBMHyEC/16YNEcGF+A29tZ/bwMKZTjFvQTQbTjbDS9ext2zmZsO9KA6PBGqGkoIdAERuKoxedjcCWoYg== +"@metamask/eth-simple-keyring@^8.1.0": + version "8.1.1" + resolved "https://registry.yarnpkg.com/@metamask/eth-simple-keyring/-/eth-simple-keyring-8.1.1.tgz#23bc2813dad92bffef5d7e37b4eed78c780db81f" + integrity sha512-/qcnwkzjtluM96IGTeCN7X2efI4GurxW8sMpj/oxN5sb69CMsr22WiMe1cRHQ0iM+hzlWRyxySFye4wPZENgvw== dependencies: "@ethereumjs/util" "^8.1.0" - "@metamask/eth-sig-util" "^7.0.3" - "@metamask/utils" "^9.2.1" + "@metamask/eth-sig-util" "^8.2.0" + "@metamask/utils" "^11.1.0" ethereum-cryptography "^2.1.2" randombytes "^2.1.0" -"@metamask/eth-snap-keyring@^10.0.0": - version "10.0.0" - resolved "https://registry.yarnpkg.com/@metamask/eth-snap-keyring/-/eth-snap-keyring-10.0.0.tgz#d0fc41ee4f9ec60c144a6230fde49c2684713d19" - integrity sha512-BOUZ1uM5sszDpFoJnWN5PhtOkz7laE8uUMF36Vqs1czmRkeHRREluuUMpyKUlFmk1XmVj6toRui6l8ayUXAAkg== +"@metamask/eth-snap-keyring@^11.1.0": + version "11.1.0" + resolved "https://registry.yarnpkg.com/@metamask/eth-snap-keyring/-/eth-snap-keyring-11.1.0.tgz#a1eb56a7f6d1ee81b1a26b5ad9be6bf893dd31d4" + integrity sha512-gXnnzt9Tg4bhieUbC+5ox3O7KXSM3AfHQob0zQfm7QZ/i1XBoLrzt+1YDyE2CbZ1uIVbhfROC+rRrPfFM5peHA== dependencies: "@ethereumjs/tx" "^4.2.0" "@metamask/base-controller" "^7.1.1" "@metamask/eth-sig-util" "^8.2.0" - "@metamask/keyring-api" "^17.0.0" - "@metamask/keyring-internal-api" "^4.0.2" - "@metamask/keyring-internal-snap-client" "^4.0.0" - "@metamask/keyring-utils" "^2.0.0" + "@metamask/keyring-api" "^17.2.0" + "@metamask/keyring-internal-api" "^4.0.3" + "@metamask/keyring-internal-snap-client" "^4.0.1" + "@metamask/keyring-utils" "^2.3.0" "@metamask/superstruct" "^3.1.0" "@metamask/utils" "^11.1.0" "@types/uuid" "^9.0.8" @@ -4830,7 +4899,7 @@ bn.js "^5.2.1" uuid "^8.3.2" -"@metamask/json-rpc-engine@^10.0.0", "@metamask/json-rpc-engine@^10.0.1", "@metamask/json-rpc-engine@^10.0.2", "@metamask/json-rpc-engine@^10.0.3": +"@metamask/json-rpc-engine@^10.0.0", "@metamask/json-rpc-engine@^10.0.2", "@metamask/json-rpc-engine@^10.0.3": version "10.0.3" resolved "https://registry.yarnpkg.com/@metamask/json-rpc-engine/-/json-rpc-engine-10.0.3.tgz#9258c4718abe305121872414a5c828e43cfcc0f9" integrity sha512-p01QhlLIiTFXivEJCRx0LXEvPUaUPCedI9A8qV9jcLGGNSj1UTWM9GeifoeTweOMdmpIk5Rxg10H9f0JPUC9Ig== @@ -4858,17 +4927,17 @@ "@metamask/utils" "^8.3.0" readable-stream "^3.6.2" -"@metamask/json-rpc-middleware-stream@^8.0.5", "@metamask/json-rpc-middleware-stream@^8.0.6": - version "8.0.6" - resolved "https://registry.yarnpkg.com/@metamask/json-rpc-middleware-stream/-/json-rpc-middleware-stream-8.0.6.tgz#3b8a6ccbdee2176285b05a3fe644d5f9a602669a" - integrity sha512-wE2CfuNZHnWbSjLEPCCb4MSyWgbQBUI5cslGZb+uRdXNzYOM/RDfq8FAdl6HhjmldHKdBFCW0L3kDr8frgahqA== +"@metamask/json-rpc-middleware-stream@^8.0.6", "@metamask/json-rpc-middleware-stream@^8.0.7": + version "8.0.7" + resolved "https://registry.yarnpkg.com/@metamask/json-rpc-middleware-stream/-/json-rpc-middleware-stream-8.0.7.tgz#5a6647a602abe23ff00cd94a219a232e6b926e70" + integrity sha512-s7ugj+b4QYkQ+3VjRDdsp8GfKOKrxvI6HzaZg4TJrfSV+SO/Ky4TGo4Aib1gtv3/8muCPYAPGtjFVYWVAVJ6jw== dependencies: - "@metamask/json-rpc-engine" "^10.0.2" + "@metamask/json-rpc-engine" "^10.0.3" "@metamask/safe-event-emitter" "^3.0.0" - "@metamask/utils" "^11.0.1" + "@metamask/utils" "^11.1.0" readable-stream "^3.6.2" -"@metamask/key-tree@^10.0.0", "@metamask/key-tree@^10.0.1", "@metamask/key-tree@^10.0.2": +"@metamask/key-tree@^10.0.0", "@metamask/key-tree@^10.0.2": version "10.0.2" resolved "https://registry.yarnpkg.com/@metamask/key-tree/-/key-tree-10.0.2.tgz#d6fe993cdae423adc5a755a14a19b4a951416f56" integrity sha512-GFCPZfiiaJAjAXthdvgxa4/ZD41IOZyCVc5MjgWnzj6Euur5URPqhMuefak6hBtY/Hz50gbDwLn8ODj4hbFF3A== @@ -4903,101 +4972,72 @@ uuid "^9.0.1" webextension-polyfill "^0.12.0" -"@metamask/keyring-api@^13.0.0": - version "13.0.0" - resolved "https://registry.yarnpkg.com/@metamask/keyring-api/-/keyring-api-13.0.0.tgz#593607911ffbab9df699bd3335603262f0ba12e5" - integrity sha512-8eemwtSzG3c4Q+zcWPKxRKBMuiApfvND7j0l4xt561wkksueaU2uF/SHUJ3MuPYtKh3Mg1gCcnj9sZ3rh1yRgA== - dependencies: - "@metamask/keyring-utils" "^1.0.0" - "@metamask/superstruct" "^3.1.0" - "@metamask/utils" "^11.0.1" - bech32 "^2.0.0" - -"@metamask/keyring-api@^17.0.0": - version "17.0.0" - resolved "https://registry.yarnpkg.com/@metamask/keyring-api/-/keyring-api-17.0.0.tgz#016e2b9a4dc116a063aa362a23b6c441d5e043d1" - integrity sha512-e0i+4pHjjCLHahdsnpqll2crfhW7655fS2oz89EMVatt4TSTNwNCQEdMu4MLrRFgz8e0K+RMoXGpshHp16DDlQ== +"@metamask/keyring-api@^17.0.0", "@metamask/keyring-api@^17.2.0": + version "17.2.0" + resolved "https://registry.yarnpkg.com/@metamask/keyring-api/-/keyring-api-17.2.0.tgz#a70994762179de36f6acc83b27f79f4cdfa491d0" + integrity sha512-XFIcwyxIeDmQ1B+2fLZNziIbfHJNrNcppOvZBA8p2o2rdhGL/KtuiNQb0bnnmV3tTHTYUfxkjoAd9c5dyuJfTQ== dependencies: - "@metamask/keyring-utils" "^2.0.0" + "@metamask/keyring-utils" "^2.3.0" "@metamask/superstruct" "^3.1.0" "@metamask/utils" "^11.1.0" bech32 "^2.0.0" -"@metamask/keyring-controller@^19.0.1": - version "19.0.1" - resolved "https://registry.yarnpkg.com/@metamask/keyring-controller/-/keyring-controller-19.0.1.tgz#6fee40a46a780a720f4c864ea779673569be06a7" - integrity sha512-6dNQBaJanAKEg7V0ksnWyqxHY1r3YCe910OF6DpnN97NZIPx3tba2zy32jbQWGPG6XaybfTG1xdUBtdYdeTpQA== +"@metamask/keyring-controller@^19.0.1", "@metamask/keyring-controller@^19.2.0": + version "19.2.1" + resolved "https://registry.yarnpkg.com/@metamask/keyring-controller/-/keyring-controller-19.2.1.tgz#47be936b39e8ac822d759b00f495cff067f857c7" + integrity sha512-Q0d3bM9SieJzfpMMYLzaVjN+EQNApnddTdufsYbzRYqBV8b5cdFCMoYapQvDFL/nPqBO9e4bXpei6ka6kiusBQ== dependencies: "@ethereumjs/util" "^8.1.0" "@keystonehq/metamask-airgapped-keyring" "^0.14.1" - "@metamask/base-controller" "^7.0.2" + "@metamask/base-controller" "^8.0.0" "@metamask/browser-passworder" "^4.3.0" - "@metamask/eth-hd-keyring" "^7.0.4" - "@metamask/eth-sig-util" "^8.0.0" - "@metamask/eth-simple-keyring" "^6.0.5" - "@metamask/keyring-api" "^10.1.0" - "@metamask/message-manager" "^11.0.2" - "@metamask/utils" "^10.0.0" + "@metamask/eth-hd-keyring" "^10.0.0" + "@metamask/eth-sig-util" "^8.2.0" + "@metamask/eth-simple-keyring" "^8.1.0" + "@metamask/keyring-api" "^17.2.0" + "@metamask/keyring-internal-api" "^4.0.3" + "@metamask/utils" "^11.2.0" async-mutex "^0.5.0" ethereumjs-wallet "^1.0.1" immer "^9.0.6" + ulid "^2.3.0" -"@metamask/keyring-internal-api@^4.0.1", "@metamask/keyring-internal-api@^4.0.2": - version "4.0.2" - resolved "https://registry.yarnpkg.com/@metamask/keyring-internal-api/-/keyring-internal-api-4.0.2.tgz#0283bb725ab0f17e6ff720c773dc475af06126b1" - integrity sha512-y8KeTRS6M0xjGOCaCcvAxC7FDYLmIn4O/XVFMa5k91MTT5DDnlmSH73JYpIFulaZ3cgiR/NvK9KlwiuqZ6GtiQ== +"@metamask/keyring-internal-api@^4.0.3": + version "4.0.3" + resolved "https://registry.yarnpkg.com/@metamask/keyring-internal-api/-/keyring-internal-api-4.0.3.tgz#af4a1e078603336e803a8d231b596685328fb0d9" + integrity sha512-owAZ8eAode0XMz2c6cy1wbB+YLsAGbB5zj283eZtIn4MgFxPRflJHdPj+rZQW1FXHKt3tTO9Ly8BeblqeFHU8A== dependencies: - "@metamask/keyring-api" "^17.0.0" - "@metamask/keyring-utils" "^2.0.0" + "@metamask/keyring-api" "^17.2.0" + "@metamask/keyring-utils" "^2.3.0" "@metamask/superstruct" "^3.1.0" "@metamask/utils" "^11.1.0" -"@metamask/keyring-internal-snap-client@^4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@metamask/keyring-internal-snap-client/-/keyring-internal-snap-client-4.0.0.tgz#856e2ed7f0880692ac540331f58d36582034f3af" - integrity sha512-Ms5PNqj/8NfiovE1aGXjHzBjQnSx+/KdaygSipSmUj4tsi4tGVxaCn/Nxf6GHxgoDCU+88OsexLCEfNH6mZI9Q== +"@metamask/keyring-internal-snap-client@^4.0.1": + version "4.0.1" + resolved "https://registry.yarnpkg.com/@metamask/keyring-internal-snap-client/-/keyring-internal-snap-client-4.0.1.tgz#dba7340b7f61b7dbf3724f38bd962128a291b922" + integrity sha512-5xc60bSmgRr5iZi+X7Ijwz+v3IOMsxGDbJy9AqOuwMiL9PCi4bxCfRXsJeGlmfm0g3d1R4svyugbC9zNuTbQfQ== dependencies: "@metamask/base-controller" "^7.1.1" - "@metamask/keyring-api" "^17.0.0" - "@metamask/keyring-snap-client" "^4.0.0" - "@metamask/keyring-utils" "^2.0.0" + "@metamask/keyring-api" "^17.2.0" + "@metamask/keyring-snap-client" "^4.0.1" + "@metamask/keyring-utils" "^2.3.0" -"@metamask/keyring-snap-client@^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@metamask/keyring-snap-client/-/keyring-snap-client-2.0.0.tgz#395af45471ba8bf79e4778d5afd6dd56327b9e97" - integrity sha512-P6xR4sbYEp9vhg5yxTcPLDW1fFve1FHgYT72HS10KXZQvKlGgoOwZe8kcNpQGarqa/Cr4IwzpULJP8Xm/sAF+w== - dependencies: - "@metamask/keyring-api" "^13.0.0" - "@metamask/keyring-utils" "^1.0.0" - "@metamask/superstruct" "^3.1.0" - "@types/uuid" "^9.0.8" - uuid "^9.0.1" - webextension-polyfill "^0.12.0" - -"@metamask/keyring-snap-client@^4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@metamask/keyring-snap-client/-/keyring-snap-client-4.0.0.tgz#630b0f1f11e555507d5e91fe7dc84ebada75e5cf" - integrity sha512-ZVZwCQnbYbnqenU0LYO1erF70pdgZDqbgiCljDZ2NDwGlUHX2vrMVeCmFtw2zTnIr3IMo6DR+ybEKjVoAe2Gog== +"@metamask/keyring-snap-client@^4.0.1": + version "4.0.1" + resolved "https://registry.yarnpkg.com/@metamask/keyring-snap-client/-/keyring-snap-client-4.0.1.tgz#36a3d3420326e140327c95a60c77cf24cefc1c06" + integrity sha512-dte5wl8URdF1hRMriXYB6bxRlAdks+hVG3uMTiYkwnOhEs40xhDQ606AZ1dbppygtOc7m5xnunenPhr5g1T1IA== dependencies: - "@metamask/keyring-api" "^17.0.0" - "@metamask/keyring-utils" "^2.0.0" + "@metamask/keyring-api" "^17.2.0" + "@metamask/keyring-utils" "^2.3.0" "@metamask/superstruct" "^3.1.0" "@types/uuid" "^9.0.8" uuid "^9.0.1" webextension-polyfill "^0.12.0" -"@metamask/keyring-utils@^1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@metamask/keyring-utils/-/keyring-utils-1.0.0.tgz#06a5df63c57304811ec56ac6e250c4628da435b8" - integrity sha512-adxVCKPHnai4w1+ZUNwL0T2DfxMpjcQucMKfa74oQuxoqjbTBDKeW6FzJwRzFspYEuRMhOLFOMUuZQQMgyF1OQ== - dependencies: - "@metamask/superstruct" "^3.1.0" - "@metamask/utils" "^9.3.0" - -"@metamask/keyring-utils@^2.0.0": - version "2.1.0" - resolved "https://registry.yarnpkg.com/@metamask/keyring-utils/-/keyring-utils-2.1.0.tgz#5f7e382ca7925aaee1b859b30270607a0a7a0c29" - integrity sha512-1K3MFjNya/8YZ1EhFPilL8nVi3h8C5qGsdSJBrvXkEVGVPbZDLsQuPnzeuG1MoZk6wWcByo6h/8CPDlefCVe1Q== +"@metamask/keyring-utils@^2.3.0": + version "2.3.1" + resolved "https://registry.yarnpkg.com/@metamask/keyring-utils/-/keyring-utils-2.3.1.tgz#a30f9dd4a3d576980739ebdbee1e66ad66abfdc8" + integrity sha512-NCmWZGoOPhDX8Krsx+NZvd3eUqeSmJoEXMUBxM8tKmoxajzRs2A1ZT5bv5rDUSCZoUy+R2D8w/HV+wT3PijTYQ== dependencies: "@ethereumjs/tx" "^4.2.0" "@metamask/superstruct" "^3.1.0" @@ -5013,19 +5053,6 @@ "@metamask/controller-utils" "^11.5.0" uuid "^8.3.2" -"@metamask/message-manager@^11.0.2": - version "11.0.2" - resolved "https://registry.yarnpkg.com/@metamask/message-manager/-/message-manager-11.0.2.tgz#805ac8d2184c56d973a787bdc7c9571024348ce6" - integrity sha512-j8DgWn7ACfwZtLFqeAYx4U/TquBEtcPYa81LjhoZYK39W/MQVr4ZKAmGEKxKRruMLz50GX7ciOEZU9SBtPBAog== - dependencies: - "@metamask/base-controller" "^7.0.2" - "@metamask/controller-utils" "^11.4.4" - "@metamask/eth-sig-util" "^8.0.0" - "@metamask/utils" "^10.0.0" - "@types/uuid" "^8.3.0" - jsonschema "^1.2.4" - uuid "^8.3.2" - "@metamask/message-signing-snap@^0.3.3": version "0.3.3" resolved "https://registry.yarnpkg.com/@metamask/message-signing-snap/-/message-signing-snap-0.3.3.tgz#0c37814baa7bb58c2b8bc84caa08b247ba78067b" @@ -5049,22 +5076,32 @@ resolved "https://registry.yarnpkg.com/@metamask/mobile-provider/-/mobile-provider-3.0.0.tgz#8a6a5a0874c8cbe4b468f63dfc57117d207f9595" integrity sha512-XwFJk0rd9lAZR5xS3VC7ypEhD7DvZR2gi2Ch6PHnODIqeS9Te3OdVKK5+jHI4his8v/zs6LWdFdlRtx5/jL96w== -"@metamask/network-controller@^22.1.0": - version "22.1.0" - resolved "https://registry.yarnpkg.com/@metamask/network-controller/-/network-controller-22.1.0.tgz#b4c81a31fc52147d12131bfb16c77c1c1cfbe43c" - integrity sha512-wvP2HUBQCWvlvBkuhqMNtd6+D/cJa343ABFLfCLNrQsk8QjdHPFw/QDIqC+QXTPxyrPWw9GL5akaLb//rmO1NA== +"@metamask/multichain-network-controller@^0.1.1": + version "0.1.1" + resolved "https://registry.yarnpkg.com/@metamask/multichain-network-controller/-/multichain-network-controller-0.1.1.tgz#d91e98660b63f334e8df98f7ba68fe412c4e01e5" + integrity sha512-XDfTb9RZbyQ+1U+xqV3lJH6/8Msru4CmIL2iNJ8KQLwJJvfQsNgSkT4Y0+nYbiWKACOe/ahjBpx0Y7rgmqSjWg== dependencies: - "@metamask/base-controller" "^7.0.2" - "@metamask/controller-utils" "^11.4.4" - "@metamask/eth-block-tracker" "^11.0.2" + "@metamask/base-controller" "^8.0.0" + "@metamask/keyring-api" "^17.0.0" + "@metamask/utils" "^11.1.0" + "@solana/addresses" "^2.0.0" + +"@metamask/network-controller@^22.1.0", "@metamask/network-controller@^22.2.1": + version "22.2.1" + resolved "https://registry.yarnpkg.com/@metamask/network-controller/-/network-controller-22.2.1.tgz#6141c6c1ac26be1e78381f1d77804030e0e769ea" + integrity sha512-jqfhqWcZgoLxCQqc890YwlCOKB+SlKqGEWKfJA3gZ3f8fuHSXCzIgin0vw5MLPtFTXCMUSuTTbohtXjedbaqIQ== + dependencies: + "@metamask/base-controller" "^8.0.0" + "@metamask/controller-utils" "^11.5.0" + "@metamask/eth-block-tracker" "^11.0.3" "@metamask/eth-json-rpc-infura" "^10.0.0" - "@metamask/eth-json-rpc-middleware" "^15.0.0" - "@metamask/eth-json-rpc-provider" "^4.1.6" + "@metamask/eth-json-rpc-middleware" "^15.0.1" + "@metamask/eth-json-rpc-provider" "^4.1.8" "@metamask/eth-query" "^4.0.0" - "@metamask/json-rpc-engine" "^10.0.1" - "@metamask/rpc-errors" "^7.0.1" - "@metamask/swappable-obj-proxy" "^2.2.0" - "@metamask/utils" "^10.0.0" + "@metamask/json-rpc-engine" "^10.0.3" + "@metamask/rpc-errors" "^7.0.2" + "@metamask/swappable-obj-proxy" "^2.3.0" + "@metamask/utils" "^11.1.0" async-mutex "^0.5.0" fast-deep-equal "^3.1.3" immer "^9.0.6" @@ -5081,17 +5118,17 @@ "@ethersproject/providers" "^5.7.2" async-mutex "^0.3.1" -"@metamask/notification-services-controller@^0.15.0": - version "0.15.0" - resolved "https://registry.yarnpkg.com/@metamask/notification-services-controller/-/notification-services-controller-0.15.0.tgz#d846fa49df62838a8ae48e80a8fee098730f06b0" - integrity sha512-RJtCI0GkVLStmhNoq9QNqSQNag6gD37iWU/qU19ds5PujSrtmfS5t2Sk6YRNV3SkRrfiIFrhGDToUDBDBu13OA== +"@metamask/notification-services-controller@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@metamask/notification-services-controller/-/notification-services-controller-1.0.0.tgz#54fe5f799bd01145875e87ad2ad6a76a072cb159" + integrity sha512-r9nfCPTu04QElJ5ErZVEiIFNanyS7zoibA++H2HhOUmVQPqiYRdzVDkW3IBN9aZ12Jhhr4/ZTgcnBGo+1JQ7og== dependencies: "@contentful/rich-text-html-renderer" "^16.5.2" - "@metamask/base-controller" "^7.0.2" - "@metamask/controller-utils" "^11.4.4" - "@metamask/utils" "^10.0.0" + "@metamask/base-controller" "^8.0.0" + "@metamask/controller-utils" "^11.5.0" + "@metamask/utils" "^11.2.0" bignumber.js "^9.1.2" - firebase "^10.11.0" + firebase "^11.2.0" loglevel "^1.8.1" uuid "^8.3.2" @@ -5112,10 +5149,10 @@ once "^1.4.0" readable-stream "^2.3.3" -"@metamask/object-multiplex@^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@metamask/object-multiplex/-/object-multiplex-2.0.0.tgz#aa6e4aa7b4e2f457ea4bb51cd7281d931e0aa35d" - integrity sha512-+ItrieVZie3j2LfYE0QkdW3dsEMfMEp419IGx1zyeLqjRZ14iQUPRO0H6CGgfAAoC0x6k2PfCAGRwJUA9BMrqA== +"@metamask/object-multiplex@^2.0.0", "@metamask/object-multiplex@^2.1.0": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@metamask/object-multiplex/-/object-multiplex-2.1.0.tgz#5e2e908fc46aee581cbba809870eeee0e571cbb6" + integrity sha512-4vKIiv0DQxljcXwfpnbsXcfa5glMj5Zg9mqn4xpIWqkv6uJ2ma5/GtUfLFSxhlxnR8asRMv8dDmWya1Tc1sDFA== dependencies: once "^1.4.0" readable-stream "^3.6.2" @@ -5136,7 +5173,7 @@ "@metamask/safe-event-emitter" "^3.0.0" readable-stream "^3.6.2" -"@metamask/permission-controller@^11.0.3", "@metamask/permission-controller@^11.0.5", "@metamask/permission-controller@^11.0.6": +"@metamask/permission-controller@^11.0.5", "@metamask/permission-controller@^11.0.6": version "11.0.6" resolved "https://registry.yarnpkg.com/@metamask/permission-controller/-/permission-controller-11.0.6.tgz#4069f6ed29d514a7e897f177efc9f798bba8668a" integrity sha512-BGznKBEiSZMsF7TuyBUp5xt93nfhGHyl4xAs1rvJUNUWVSUtry+mb1A6H8bq82/T4ZrxNhrnx3ISYr99ZDo7rA== @@ -5151,21 +5188,20 @@ immer "^9.0.6" nanoid "^3.3.8" -"@metamask/phishing-controller@^12.0.2", "@metamask/phishing-controller@^12.0.3": - version "12.0.3" - resolved "https://registry.yarnpkg.com/@metamask/phishing-controller/-/phishing-controller-12.0.3.tgz#f1a5a2046e4c7a04613b4c41bc19771cf8235db7" - integrity sha512-CR1qN2FkMJp+MyNSXVTvrZY7MjCdkvsofW/kyv6oshPtLV6BGBWFyueS2UgjMNsmQDW/vMXUJMZfcMS6rs3S4w== +"@metamask/phishing-controller@^12.0.3", "@metamask/phishing-controller@^12.3.2": + version "12.3.2" + resolved "https://registry.yarnpkg.com/@metamask/phishing-controller/-/phishing-controller-12.3.2.tgz#1cfae4d720dccf0febc1adb1b9da119e2fbeab56" + integrity sha512-ER1dslHU1Wen8vcmw2LTtC7sTqbQ+bBmZsij4Qzrv160lt7k9FaVkLOKmWqf+ZaprMzO3Gxh3ZiGJYTX7XkpMg== dependencies: - "@metamask/base-controller" "^7.0.1" - "@metamask/controller-utils" "^11.3.0" + "@metamask/base-controller" "^8.0.0" + "@metamask/controller-utils" "^11.5.0" "@noble/hashes" "^1.4.0" "@types/punycode" "^2.1.0" - eth-phishing-detect "^1.2.0" ethereum-cryptography "^2.1.2" fastest-levenshtein "^1.0.16" punycode "^2.1.1" -"@metamask/polling-controller@^12.0.0", "@metamask/polling-controller@^12.0.2", "@metamask/polling-controller@^12.0.3": +"@metamask/polling-controller@^12.0.0", "@metamask/polling-controller@^12.0.3": version "12.0.3" resolved "https://registry.yarnpkg.com/@metamask/polling-controller/-/polling-controller-12.0.3.tgz#377716f6c8610373aed1319d2a10d75c12a50f6f" integrity sha512-YOsFgyqd5s32WQfTWwBS4hGOGrIVL92AUh+WeF3Gb2Q7vblnz7152PW354+fT9xG3Uk/zdtss35LrltxQvlc/A== @@ -5177,12 +5213,12 @@ fast-json-stable-stringify "^2.1.0" uuid "^8.3.2" -"@metamask/post-message-stream@^8.0.0", "@metamask/post-message-stream@^8.1.1": - version "8.1.1" - resolved "https://registry.yarnpkg.com/@metamask/post-message-stream/-/post-message-stream-8.1.1.tgz#fd8f4c2363921aaf15c0fa56d087fa9f2d93f047" - integrity sha512-Z5LHqE8MI0g9xKT7dOr4G11Qjf2bWg9rFonpFnUJwxJvfIl6KuGVnfOTo7PVXH3zdlWotlhhC2F65QW9WxVSPQ== +"@metamask/post-message-stream@^9.0.0": + version "9.0.0" + resolved "https://registry.yarnpkg.com/@metamask/post-message-stream/-/post-message-stream-9.0.0.tgz#1b1249eb7d378cc1eda8abe6b2f882f6dd923c46" + integrity sha512-JQVu+aENg8r4LiZPPEsmaa+N9j3ecBcumtAEWZ+N5tB6qX/WcLLwCsfNidCx7zQCR0ritgx3lLbZ/sVqkNZ2OQ== dependencies: - "@metamask/utils" "^9.0.0" + "@metamask/utils" "^11.0.1" readable-stream "3.6.2" "@metamask/ppom-validator@0.36.0": @@ -5242,7 +5278,7 @@ readable-stream "^3.6.2" webextension-polyfill "^0.10.0" -"@metamask/providers@^18.1.1", "@metamask/providers@^18.3.1": +"@metamask/providers@^18.3.1": version "18.3.1" resolved "https://registry.yarnpkg.com/@metamask/providers/-/providers-18.3.1.tgz#b49351134cbe77034db67774cc4ff473e259158c" integrity sha512-4wHCA24KDwq/eVnAu+/+N7BEuMNN63kdN295u8Wkdc76puyig3lJdcGGne+TEjiILG34twr9rjZPOWTCwOUcDg== @@ -5259,6 +5295,23 @@ is-stream "^2.0.0" readable-stream "^3.6.2" +"@metamask/providers@^20.0.0": + version "20.0.0" + resolved "https://registry.yarnpkg.com/@metamask/providers/-/providers-20.0.0.tgz#78996a9ba9e2a10fb41bb5d7b749dc21a75df62c" + integrity sha512-DbTTBAJYGbEQUXOhF/vsmV2Ge8h5RRBKtc+YgeWge5Xa9p1VunaZxTcmQe7XpU0Vs5yHWkbLeZxyxz/571Cn8g== + dependencies: + "@metamask/json-rpc-engine" "^10.0.2" + "@metamask/json-rpc-middleware-stream" "^8.0.6" + "@metamask/object-multiplex" "^2.0.0" + "@metamask/rpc-errors" "^7.0.2" + "@metamask/safe-event-emitter" "^3.1.1" + "@metamask/utils" "^11.0.1" + detect-browser "^5.2.0" + extension-port-stream "^4.1.0" + fast-deep-equal "^3.1.3" + is-stream "^2.0.0" + readable-stream "^3.6.2" + "@metamask/react-native-actionsheet@2.4.2": version "2.4.2" resolved "https://registry.yarnpkg.com/@metamask/react-native-actionsheet/-/react-native-actionsheet-2.4.2.tgz#9f956fe9e784d92c8e33656877fcfaabe4a482f1" @@ -5293,17 +5346,17 @@ escape-string-regexp "^4.0.0" invariant "2.2.4" -"@metamask/remote-feature-flag-controller@^1.3.0": - version "1.3.0" - resolved "https://registry.yarnpkg.com/@metamask/remote-feature-flag-controller/-/remote-feature-flag-controller-1.3.0.tgz#b83fc08c413b229b24046c84e2599d4dab2bafd8" - integrity sha512-h5DnnqbFxLsm8N98rrlVwUpQvvH03epb+1YhRMghIKa5WtjyoERV2wp0MuSH8l2Or4+ccx8eLv/X2bsnmtujGw== +"@metamask/remote-feature-flag-controller@^1.5.0": + version "1.5.0" + resolved "https://registry.yarnpkg.com/@metamask/remote-feature-flag-controller/-/remote-feature-flag-controller-1.5.0.tgz#3a5078d698c1e603e51c4d3f155ce9d228ae07ea" + integrity sha512-r+t/t3jKjpsVdoOVWWt6ulZHRhQn8gAMLID1l0QvQgmzQy87ayTDU7WAnyw+jFyO4z+OA/uCwj4EwN+M2rPXgA== dependencies: - "@metamask/base-controller" "^7.1.0" - "@metamask/utils" "^11.0.1" - cockatiel "^3.1.2" + "@metamask/base-controller" "^8.0.0" + "@metamask/controller-utils" "^11.5.0" + "@metamask/utils" "^11.2.0" uuid "^8.3.2" -"@metamask/rpc-errors@7.0.2", "@metamask/rpc-errors@^6.2.1", "@metamask/rpc-errors@^7.0.0", "@metamask/rpc-errors@^7.0.1", "@metamask/rpc-errors@^7.0.2": +"@metamask/rpc-errors@7.0.2", "@metamask/rpc-errors@^6.2.1", "@metamask/rpc-errors@^7.0.0", "@metamask/rpc-errors@^7.0.2": version "7.0.2" resolved "https://registry.yarnpkg.com/@metamask/rpc-errors/-/rpc-errors-7.0.2.tgz#d07b2ebfcf111556dfe93dc78699742ebe755359" integrity sha512-YYYHsVYd46XwY2QZzpGeU4PSdRhHdxnzkB8piWGvJW2xbikZ3R+epAYEL4q/K8bh9JPTucsUdwRFnACor1aOYw== @@ -5386,56 +5439,58 @@ fast-json-patch "^3.1.0" lodash "^4.17.21" -"@metamask/snaps-controllers@^9.15.0": - version "9.15.0" - resolved "https://registry.yarnpkg.com/@metamask/snaps-controllers/-/snaps-controllers-9.15.0.tgz#2091d72e0a8bd4c637e8b25e3222e597b5d62060" - integrity sha512-ElvlaX6u2MKwiuDbZ7yoJw6YuRhMspUcx0OnDSj1PhjF1apoKnOJVR/968BshqNDsTpDFFsGdvbFMX7wE3yLPQ== +"@metamask/snaps-controllers@^10.0.0": + version "10.0.0" + resolved "https://registry.yarnpkg.com/@metamask/snaps-controllers/-/snaps-controllers-10.0.0.tgz#f5a4cdb0642713248b0291dd1bd4bf9ba0a09887" + integrity sha512-OEsMhAEQA/ueA0IHb1vw+I85vrrqtjLyFCvB3ZbxROv0z7F1rBDGJf0KxuJPfe0iB6yskqDiTnXyxEqQxEjSfA== dependencies: - "@metamask/approval-controller" "^7.1.1" - "@metamask/base-controller" "^7.0.2" - "@metamask/json-rpc-engine" "^10.0.1" - "@metamask/json-rpc-middleware-stream" "^8.0.5" - "@metamask/key-tree" "^10.0.1" - "@metamask/object-multiplex" "^2.0.0" - "@metamask/permission-controller" "^11.0.3" - "@metamask/phishing-controller" "^12.0.2" - "@metamask/post-message-stream" "^8.1.1" - "@metamask/rpc-errors" "^7.0.1" - "@metamask/snaps-registry" "^3.2.2" - "@metamask/snaps-rpc-methods" "^11.7.0" - "@metamask/snaps-sdk" "^6.13.0" - "@metamask/snaps-utils" "^8.6.1" - "@metamask/utils" "^10.0.0" + "@metamask/approval-controller" "^7.1.3" + "@metamask/base-controller" "^8.0.0" + "@metamask/json-rpc-engine" "^10.0.2" + "@metamask/json-rpc-middleware-stream" "^8.0.7" + "@metamask/key-tree" "^10.0.2" + "@metamask/object-multiplex" "^2.1.0" + "@metamask/permission-controller" "^11.0.6" + "@metamask/phishing-controller" "^12.3.2" + "@metamask/post-message-stream" "^9.0.0" + "@metamask/rpc-errors" "^7.0.2" + "@metamask/snaps-registry" "^3.2.3" + "@metamask/snaps-rpc-methods" "^11.12.0" + "@metamask/snaps-sdk" "^6.18.0" + "@metamask/snaps-utils" "^9.0.0" + "@metamask/utils" "^11.2.0" "@xstate/fsm" "^2.0.0" + async-mutex "^0.5.0" browserify-zlib "^0.2.0" concat-stream "^2.0.0" fast-deep-equal "^3.1.3" get-npm-tarball-url "^2.0.3" immer "^9.0.6" + luxon "^3.5.0" nanoid "^3.1.31" readable-stream "^3.6.2" readable-web-to-node-stream "^3.0.2" semver "^7.5.4" tar-stream "^3.1.7" -"@metamask/snaps-execution-environments@^6.10.0": - version "6.10.0" - resolved "https://registry.yarnpkg.com/@metamask/snaps-execution-environments/-/snaps-execution-environments-6.10.0.tgz#f83f13d6fb6258fa6ae54e402064d933ee6122aa" - integrity sha512-5LRnwsTjOnV5ioBTNvoRQ4aMwuKJWjx5xxl0te1RfKMBmRw2CoREmVhLE8zosB/LJMgWsBS+QdeBOJMkjjJdlQ== +"@metamask/snaps-execution-environments@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@metamask/snaps-execution-environments/-/snaps-execution-environments-7.0.0.tgz#0218b7bde9bf051308a0235dd4364905d772728c" + integrity sha512-0EwW2dGupU+5uvPY/o00P+CboYhaOERuZNci2nMWcIdZOE6LFE6cMn3hpgyV3gyHEOIIAZ7aCiZ+CJiHDlEO/w== dependencies: - "@metamask/json-rpc-engine" "^10.0.1" - "@metamask/object-multiplex" "^2.0.0" - "@metamask/post-message-stream" "^8.1.1" - "@metamask/providers" "^18.1.1" - "@metamask/rpc-errors" "^7.0.1" - "@metamask/snaps-sdk" "^6.11.0" - "@metamask/snaps-utils" "^8.6.0" + "@metamask/json-rpc-engine" "^10.0.2" + "@metamask/object-multiplex" "^2.1.0" + "@metamask/post-message-stream" "^9.0.0" + "@metamask/providers" "^20.0.0" + "@metamask/rpc-errors" "^7.0.2" + "@metamask/snaps-sdk" "^6.18.0" + "@metamask/snaps-utils" "^9.0.0" "@metamask/superstruct" "^3.1.0" - "@metamask/utils" "^10.0.0" + "@metamask/utils" "^11.2.0" nanoid "^3.1.31" readable-stream "^3.6.2" -"@metamask/snaps-registry@^3.2.2", "@metamask/snaps-registry@^3.2.3": +"@metamask/snaps-registry@^3.2.3": version "3.2.3" resolved "https://registry.yarnpkg.com/@metamask/snaps-registry/-/snaps-registry-3.2.3.tgz#7385482ded8929b7feca5659e9344b0b171c871d" integrity sha512-XO5zk2DMLlixk5tKydIxYn0seSU453oR8PAoorVkgvCRmprdGC4qNqxfDZ7t1xf5qquqHvRaNHQ/Ir5cAwxXyw== @@ -5445,19 +5500,20 @@ "@noble/curves" "^1.2.0" "@noble/hashes" "^1.3.2" -"@metamask/snaps-rpc-methods@^11.7.0": - version "11.7.0" - resolved "https://registry.yarnpkg.com/@metamask/snaps-rpc-methods/-/snaps-rpc-methods-11.7.0.tgz#b4695cf740a8482c441bb2ce8ab6e17237749c96" - integrity sha512-qScT32npTnjdCLKpF20thHfYSg/G/pmOunHf5yMw46qvQHQYRnMtCLtDvhGjehXgTDiGzaQgVkireckYb//9mg== +"@metamask/snaps-rpc-methods@^11.12.0": + version "11.12.0" + resolved "https://registry.yarnpkg.com/@metamask/snaps-rpc-methods/-/snaps-rpc-methods-11.12.0.tgz#70db88ce3780f3556cb3b8f27d847f644230401f" + integrity sha512-F2kK8btlE7uG4JPn3kgGgyBynt+eSH+FE1BGSAjqbd95kaUqT9W1oFq8zZsxXpjRxQOKbLW06g7uZe3yvaNUog== dependencies: - "@metamask/key-tree" "^10.0.1" - "@metamask/permission-controller" "^11.0.3" - "@metamask/rpc-errors" "^7.0.1" - "@metamask/snaps-sdk" "^6.13.0" - "@metamask/snaps-utils" "^8.6.1" + "@metamask/key-tree" "^10.0.2" + "@metamask/permission-controller" "^11.0.6" + "@metamask/rpc-errors" "^7.0.2" + "@metamask/snaps-sdk" "^6.18.0" + "@metamask/snaps-utils" "^9.0.0" "@metamask/superstruct" "^3.1.0" - "@metamask/utils" "^10.0.0" + "@metamask/utils" "^11.2.0" "@noble/hashes" "^1.3.1" + luxon "^3.5.0" "@metamask/snaps-sdk@^3.1.1": version "3.2.0" @@ -5471,18 +5527,18 @@ fast-xml-parser "^4.3.4" superstruct "^1.0.3" -"@metamask/snaps-sdk@^6.11.0", "@metamask/snaps-sdk@^6.13.0", "@metamask/snaps-sdk@^6.17.0", "@metamask/snaps-sdk@^6.17.1", "@metamask/snaps-sdk@^6.7.0": - version "6.17.1" - resolved "https://registry.yarnpkg.com/@metamask/snaps-sdk/-/snaps-sdk-6.17.1.tgz#9bd25c4ff417e1572ef1a9bf59ba7cfb65ff5f46" - integrity sha512-5eWXMBzmX2QOtHxKBsuEcm1+BjqkgPioEtmoaCkiBoWihJ4kh88Lh6OZUmZhPH6Kyo2MlrtdZ1RmYbq/rme2xg== +"@metamask/snaps-sdk@^6.17.0", "@metamask/snaps-sdk@^6.17.1", "@metamask/snaps-sdk@^6.18.0", "@metamask/snaps-sdk@^6.7.0": + version "6.18.0" + resolved "https://registry.yarnpkg.com/@metamask/snaps-sdk/-/snaps-sdk-6.18.0.tgz#eab82b54c8f76363e5d1089e162d5be4303e6442" + integrity sha512-RIESsNGJDkrpOCVkLdwoPBI3twH8st3qG4k3lYQ2yu9OC//18mORWiloKhPc61QyrD3l7Doo4D6AsWmSpMxlJQ== dependencies: "@metamask/key-tree" "^10.0.2" - "@metamask/providers" "^18.3.1" + "@metamask/providers" "^20.0.0" "@metamask/rpc-errors" "^7.0.2" "@metamask/superstruct" "^3.1.0" - "@metamask/utils" "^11.0.1" + "@metamask/utils" "^11.2.0" -"@metamask/snaps-utils@^8.10.0", "@metamask/snaps-utils@^8.3.0", "@metamask/snaps-utils@^8.6.0", "@metamask/snaps-utils@^8.6.1": +"@metamask/snaps-utils@^8.10.0", "@metamask/snaps-utils@^8.3.0": version "8.10.0" resolved "https://registry.yarnpkg.com/@metamask/snaps-utils/-/snaps-utils-8.10.0.tgz#ae44480887908643bdf134d3a96f9994cd52f693" integrity sha512-3UXDVwk9H8Led76VSCbF/fuB90fBa9ZBAHftwD7HSIOsZeYkEkvie+3B+4rCEExBCXcfpyj/eiDgMpHg3orqhQ== @@ -5511,22 +5567,51 @@ ses "^1.1.0" validate-npm-package-name "^5.0.0" -"@metamask/solana-wallet-snap@^1.2.0": - version "1.2.0" - resolved "https://registry.yarnpkg.com/@metamask/solana-wallet-snap/-/solana-wallet-snap-1.2.0.tgz#7d0db28a58cbd728306427144039d28f56f6d477" - integrity sha512-XG1NzrJu2Xvo6PKr5f3Ij6ojEBNGh1H/2WJCcCMSoKZUEl8UG5i8rmZ+SVcZJ0Jhr88sbredNXlAzqGESz2VBA== +"@metamask/snaps-utils@^9.0.0": + version "9.0.0" + resolved "https://registry.yarnpkg.com/@metamask/snaps-utils/-/snaps-utils-9.0.0.tgz#5590f37ba280228d5eb8e7828a8cd05ce749eb6d" + integrity sha512-kgMbgUl8O/Gn1QGggfTJK/mAqB4cwlGjlY0crFGB6FUkgYGo4Xpr8ZCB3e+TT5n8CrtpJsTtNz7AXVuLncvb4w== + dependencies: + "@babel/core" "^7.23.2" + "@babel/types" "^7.23.0" + "@metamask/base-controller" "^8.0.0" + "@metamask/key-tree" "^10.0.2" + "@metamask/permission-controller" "^11.0.6" + "@metamask/rpc-errors" "^7.0.2" + "@metamask/slip44" "^4.1.0" + "@metamask/snaps-registry" "^3.2.3" + "@metamask/snaps-sdk" "^6.18.0" + "@metamask/superstruct" "^3.1.0" + "@metamask/utils" "^11.2.0" + "@noble/hashes" "^1.3.1" + "@scure/base" "^1.1.1" + chalk "^4.1.2" + cron-parser "^4.5.0" + fast-deep-equal "^3.1.3" + fast-json-stable-stringify "^2.1.0" + fast-xml-parser "^4.4.1" + marked "^12.0.1" + rfdc "^1.3.0" + semver "^7.5.4" + ses "^1.1.0" + validate-npm-package-name "^5.0.0" + +"@metamask/solana-wallet-snap@^1.6.0": + version "1.7.0" + resolved "https://registry.yarnpkg.com/@metamask/solana-wallet-snap/-/solana-wallet-snap-1.7.0.tgz#218a4f3a6cead9c3074b603fc0c26097ca04b975" + integrity sha512-sugayOl93m19e9rEnkZj3sy1QXpUqt9k3SfHUosOHSWAdT+tHtz8tGzy8Chgz9vECuZGwT7jotvbJ1PYBpOsjA== "@metamask/stake-sdk@^1.0.0": version "1.0.0" resolved "https://registry.npmjs.org/@metamask/stake-sdk/-/stake-sdk-1.0.0.tgz#44f599a0b9a785a03c5c40a2dffd9f463045de0e" integrity sha512-AjpQq2fstCpqcgMuIAW1VLaKdUmmdR5zQCJz1KgaXVkp9MFCa3GWfrgfZynN2S+h+39hst/2KNHHOeJrGWYGGw== -"@metamask/superstruct@^3.1.0": +"@metamask/superstruct@^3.0.0", "@metamask/superstruct@^3.1.0": version "3.1.0" resolved "https://registry.yarnpkg.com/@metamask/superstruct/-/superstruct-3.1.0.tgz#148f786a674fba3ac885c1093ab718515bf7f648" integrity sha512-N08M56HdOgBfRKkrgCMZvQppkZGcArEop3kixNEtVbJKm6P9Cfg0YkI6X0s1g78sNrj2fWUwvJADdZuzJgFttA== -"@metamask/swappable-obj-proxy@^2.1.0", "@metamask/swappable-obj-proxy@^2.2.0", "@metamask/swappable-obj-proxy@^2.3.0": +"@metamask/swappable-obj-proxy@^2.1.0", "@metamask/swappable-obj-proxy@^2.3.0": version "2.3.0" resolved "https://registry.yarnpkg.com/@metamask/swappable-obj-proxy/-/swappable-obj-proxy-2.3.0.tgz#276819d24f1b411c768441efb6098c1743d6f67a" integrity sha512-+VFE6wVWve86SLiUI3jyhJjizUezpOnwvRyem7EP79Mml+oSm48gQ4W8QqeQqTugbrlCsxtFI4QNEPotQsll6Q== @@ -5547,10 +5632,18 @@ bn.js "^5.2.1" human-standard-token-abi "^2.0.0" -"@metamask/test-dapp@^8.9.0": - version "8.9.0" - resolved "https://registry.yarnpkg.com/@metamask/test-dapp/-/test-dapp-8.9.0.tgz#bac680e8f0007b3a11440f7e311674d6457d37ed" - integrity sha512-N/WfmdrzJm+xbpuqJsfMrlrAhiNDsllIpwt9gDDeEKDlQAfJnMtT9xvOvBJbXY7zgMdtGZuD+KY64jNKabbuVQ== +"@metamask/test-dapp@^9.0.0": + version "9.0.0" + resolved "https://registry.yarnpkg.com/@metamask/test-dapp/-/test-dapp-9.0.0.tgz#ff97c2f3439113588017345b688294f6e67d8a23" + integrity sha512-ZB62icsFJ6qhJOcUL+hrCURydV99D2F9fLk1wvCu9XAPVzP6PbEKC52CqSJZh/sErbcpBsYUiP3xgt0h7pR8Ng== + +"@metamask/token-search-discovery-controller@^2.1.0": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@metamask/token-search-discovery-controller/-/token-search-discovery-controller-2.1.0.tgz#ff8f78134da5b2451603ccf957ab67a1ba399db2" + integrity sha512-mda8IZAZGb0IN91fZqn5KvuvF36iwLgkH5ZLiOwRy6kbMsNFat0Lmqtapg1R2QoHPAEm0LGs7RPepBu1NftURw== + dependencies: + "@metamask/base-controller" "^8.0.0" + "@metamask/utils" "^11.1.0" "@metamask/transaction-controller@45.0.0": version "45.0.0" @@ -5577,7 +5670,22 @@ lodash "^4.17.21" uuid "^8.3.2" -"@metamask/utils@^10.0.0", "@metamask/utils@^11.0.1", "@metamask/utils@^11.1.0", "@metamask/utils@^8.2.0", "@metamask/utils@^8.3.0", "@metamask/utils@^9.0.0", "@metamask/utils@^9.1.0", "@metamask/utils@^9.2.1", "@metamask/utils@^9.3.0": +"@metamask/utils@^10.0.0": + version "10.0.1" + resolved "https://registry.yarnpkg.com/@metamask/utils/-/utils-10.0.1.tgz#a765f96c20e35fc51c068fb9f88a3332b40b215e" + integrity sha512-zHgAitJtRwviVVFnRUA2PLRMaAwatr3jiHgiH7mPicJaeSK4ma01aGR4fHy0iy5tlVo1ZiioTmJ1Hbp8FZ6pSg== + dependencies: + "@ethereumjs/tx" "^4.2.0" + "@metamask/superstruct" "^3.1.0" + "@noble/hashes" "^1.3.1" + "@scure/base" "^1.1.3" + "@types/debug" "^4.1.7" + debug "^4.3.4" + pony-cause "^2.1.10" + semver "^7.5.4" + uuid "^9.0.1" + +"@metamask/utils@^11.0.1", "@metamask/utils@^11.1.0", "@metamask/utils@^11.2.0": version "11.2.0" resolved "https://registry.yarnpkg.com/@metamask/utils/-/utils-11.2.0.tgz#f2b35cbe6536c56071b0971f97f2395b860885c4" integrity sha512-5Y4bd8Axvi2kJKjp6Jlbb9wyoTrSZxQjWvVGPevpErAc7SCUYUuW0QOOPVu7YmT+bzisTpnFnRE8LjtwYCKGAg== @@ -5592,6 +5700,36 @@ semver "^7.5.4" uuid "^9.0.1" +"@metamask/utils@^8.2.0", "@metamask/utils@^8.3.0": + version "8.5.0" + resolved "https://registry.yarnpkg.com/@metamask/utils/-/utils-8.5.0.tgz#ddd0d4012d5191809404c97648a837ea9962cceb" + integrity sha512-I6bkduevXb72TIM9q2LRO63JSsF9EXduh3sBr9oybNX2hNNpr/j1tEjXrsG0Uabm4MJ1xkGAQEMwifvKZIkyxQ== + dependencies: + "@ethereumjs/tx" "^4.2.0" + "@metamask/superstruct" "^3.0.0" + "@noble/hashes" "^1.3.1" + "@scure/base" "^1.1.3" + "@types/debug" "^4.1.7" + debug "^4.3.4" + pony-cause "^2.1.10" + semver "^7.5.4" + uuid "^9.0.1" + +"@metamask/utils@^9.0.0", "@metamask/utils@^9.1.0", "@metamask/utils@^9.2.1": + version "9.3.0" + resolved "https://registry.yarnpkg.com/@metamask/utils/-/utils-9.3.0.tgz#4726bd7f5d6a43ea8425b6d663ab9207f617c2d1" + integrity sha512-w8CVbdkDrVXFJbfBSlDfafDR6BAkpDmv1bC1UJVCoVny5tW2RKAdn9i68Xf7asYT4TnUhl/hN4zfUiKQq9II4g== + dependencies: + "@ethereumjs/tx" "^4.2.0" + "@metamask/superstruct" "^3.1.0" + "@noble/hashes" "^1.3.1" + "@scure/base" "^1.1.3" + "@types/debug" "^4.1.7" + debug "^4.3.4" + pony-cause "^2.1.10" + semver "^7.5.4" + uuid "^9.0.1" + "@native-html/css-processor@1.11.0": version "1.11.0" resolved "https://registry.yarnpkg.com/@native-html/css-processor/-/css-processor-1.11.0.tgz#27d02e5123b0849f4986d44060ba3f235a15f552" @@ -5646,11 +5784,16 @@ dependencies: "@noble/hashes" "1.4.0" -"@noble/hashes@1.4.0", "@noble/hashes@^1.1.2", "@noble/hashes@^1.3.1", "@noble/hashes@^1.3.2", "@noble/hashes@^1.4.0", "@noble/hashes@~1.4.0": +"@noble/hashes@1.4.0", "@noble/hashes@~1.4.0": version "1.4.0" resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.4.0.tgz#45814aa329f30e4fe0ba49426f49dfccdd066426" integrity sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg== +"@noble/hashes@^1.1.2", "@noble/hashes@^1.3.1", "@noble/hashes@^1.3.2", "@noble/hashes@^1.4.0", "@noble/hashes@^1.7.1": + version "1.7.1" + resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.7.1.tgz#5738f6d765710921e7a751e00c20ae091ed8db0f" + integrity sha512-B8XBPsn4vT/KJAGqDzbwztd+6Yte3P4V7iafm24bxgDe/mlRuK6xmWPuCNrKt2vDafZ8MfJLlchDG/vYafQEjQ== + "@noble/hashes@~1.3.2": version "1.3.3" resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.3.3.tgz#39908da56a4adc270147bb07968bf3b16cfe1699" @@ -7227,7 +7370,7 @@ resolved "https://registry.yarnpkg.com/@socket.io/component-emitter/-/component-emitter-3.1.0.tgz#96116f2a912e0c02817345b3c10751069920d553" integrity sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg== -"@solana/addresses@2.0.0": +"@solana/addresses@2.0.0", "@solana/addresses@^2.0.0": version "2.0.0" resolved "https://registry.yarnpkg.com/@solana/addresses/-/addresses-2.0.0.tgz#d1b01a38e0b48d7e4fea223821655a0c2b903c28" integrity sha512-8n3c/mUlH1/z+pM8e7OJ6uDSXw26Be0dgYiokiqblO66DGQ0d+7pqFUFZ5pEGjJ9PU2lDTSfY8rHf4cemOqwzQ== @@ -9686,6 +9829,11 @@ resolved "https://registry.yarnpkg.com/@types/hammerjs/-/hammerjs-2.0.40.tgz#ded0240b6ea1ad7afc1e60374c49087aaea5dbd8" integrity sha512-VbjwR1fhsn2h2KXAY4oy1fm7dCxaKy0D+deTb8Ilc3Eo3rc5+5eA4rfYmZaHgNJKxVyI0f6WIXzO2zLkVmQPHA== +"@types/he@^1.2.3": + version "1.2.3" + resolved "https://registry.yarnpkg.com/@types/he/-/he-1.2.3.tgz#c33ca3096f30cbd5d68d78211572de3f9adff75a" + integrity sha512-q67/qwlxblDzEDvzHhVkwc1gzVWxaNxeyHUBF4xElrvjL11O+Ytze+1fGpBHlr/H9myiBUaUXNnNPmBHxxfAcA== + "@types/hoist-non-react-statics@^3.3.1": version "3.3.5" resolved "https://registry.yarnpkg.com/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.5.tgz#dab7867ef789d87e2b4b0003c9d65c49cc44a494" @@ -15191,15 +15339,15 @@ detect-node@^2.0.4: resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.1.0.tgz#c9c70775a49c3d03bc2c06d9a73be550f978f8b1" integrity sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g== -detox-copilot@^0.0.23: - version "0.0.23" - resolved "https://registry.yarnpkg.com/detox-copilot/-/detox-copilot-0.0.23.tgz#724aeb62424018b4b6d5620bb0dc7e800e4e4f6b" - integrity sha512-qDSdLwgPUMVawpE0R3agNWd2U69ilTnhf+SodSqqrkmTI0oG67IfkACvwox+K9Slcc8ki6y0Bw6QVBi54MqpaA== +detox-copilot@^0.0.27: + version "0.0.27" + resolved "https://registry.yarnpkg.com/detox-copilot/-/detox-copilot-0.0.27.tgz#350ee91ae6ba77acac78513ccbda7aafcb3c6faf" + integrity sha512-H2febTNp0arVx2A8rvM1C2BwDiBEP/2Ya8Hd1mVyV66rR5u8om1gdIypaRGm+plpTLCHhlefe4+7qLtHgVzpng== -detox@^20.27.5: - version "20.27.5" - resolved "https://registry.yarnpkg.com/detox/-/detox-20.27.5.tgz#f67d1a0c9ddbb2b6edb838e1b32c63b486be66ea" - integrity sha512-JBe3fONwaSxYubd/36SZh3c2MaYs+Cx7sOA4GJfh16QTyoB7XvvbGrSlQDTbag/f0j5RZt4judPtg5A3P1/Uhg== +detox@20.33.0: + version "20.33.0" + resolved "https://registry.yarnpkg.com/detox/-/detox-20.33.0.tgz#5a032b0ef2987294e741d10e91600a532e253a3a" + integrity sha512-9KZC3NgCav/IvuWm/EaKNIL5lV2bJf23PPK67OHS2dMhJsDsNBRWP9k3RN7hzLzzUwAXMMoOmk+S1OpOsazNFA== dependencies: ajv "^8.6.3" bunyan "^1.8.12" @@ -15207,7 +15355,7 @@ detox@^20.27.5: caf "^15.0.1" chalk "^4.0.0" child-process-promise "^2.2.0" - detox-copilot "^0.0.23" + detox-copilot "^0.0.27" execa "^5.1.1" find-up "^5.0.0" fs-extra "^11.0.0" @@ -16480,13 +16628,6 @@ eth-method-registry@^4.0.0: "@metamask/ethjs-contract" "^0.4.1" "@metamask/ethjs-query" "^0.7.1" -eth-phishing-detect@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/eth-phishing-detect/-/eth-phishing-detect-1.2.0.tgz#11b357776b2d1b98a9ac594a1343e5184fc26bf0" - integrity sha512-+M7D4dhu5tkSA9b5eiBwDeJCjwy+7Lv49nuTEw8fNZIZUAVZC3d2XHatBq1MOW7J8kxNGbBdgBuIf65opI7Tkg== - dependencies: - fast-levenshtein "^2.0.6" - eth-url-parser@1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/eth-url-parser/-/eth-url-parser-1.0.4.tgz#310a99f331abdb8d603c74131568fb773e609cd8" @@ -17565,38 +17706,39 @@ firebase@10.12.2: "@firebase/util" "1.9.6" "@firebase/vertexai-preview" "0.0.2" -firebase@^10.11.0: - version "10.12.3" - resolved "https://registry.yarnpkg.com/firebase/-/firebase-10.12.3.tgz#b94510728f603a15367b95e12a00b366700ba7f8" - integrity sha512-dO2cQ8eP6RnM2wcGzbxnoljjjMBf1suUrHYFftjSpbPn/8bEx959cwTRDHqBx3MwSzNsg6zZV/wiWydJPhUKgw== - dependencies: - "@firebase/analytics" "0.10.5" - "@firebase/analytics-compat" "0.2.11" - "@firebase/app" "0.10.6" - "@firebase/app-check" "0.8.5" - "@firebase/app-check-compat" "0.3.12" - "@firebase/app-compat" "0.2.36" - "@firebase/app-types" "0.9.2" - "@firebase/auth" "1.7.5" - "@firebase/auth-compat" "0.5.10" - "@firebase/database" "1.0.6" - "@firebase/database-compat" "1.0.6" - "@firebase/firestore" "4.6.4" - "@firebase/firestore-compat" "0.3.33" - "@firebase/functions" "0.11.6" - "@firebase/functions-compat" "0.3.12" - "@firebase/installations" "0.6.8" - "@firebase/installations-compat" "0.2.8" - "@firebase/messaging" "0.12.10" - "@firebase/messaging-compat" "0.2.10" - "@firebase/performance" "0.6.8" - "@firebase/performance-compat" "0.2.8" - "@firebase/remote-config" "0.4.8" - "@firebase/remote-config-compat" "0.2.8" - "@firebase/storage" "0.12.6" - "@firebase/storage-compat" "0.3.9" - "@firebase/util" "1.9.7" - "@firebase/vertexai-preview" "0.0.3" +firebase@^11.2.0: + version "11.3.1" + resolved "https://registry.yarnpkg.com/firebase/-/firebase-11.3.1.tgz#1507b2b1e3af17418fbe009e82d7bc30a6b5117c" + integrity sha512-P4YVFM0Bm2d8aO61SCEMF8E1pYgieGLrmr/LFw7vs6sAMebwuwHt+Wug+1qL2fhAHWPwpWbCLsdJH8NQ+4Sw8Q== + dependencies: + "@firebase/analytics" "0.10.11" + "@firebase/analytics-compat" "0.2.17" + "@firebase/app" "0.11.1" + "@firebase/app-check" "0.8.11" + "@firebase/app-check-compat" "0.3.18" + "@firebase/app-compat" "0.2.50" + "@firebase/app-types" "0.9.3" + "@firebase/auth" "1.9.0" + "@firebase/auth-compat" "0.5.18" + "@firebase/data-connect" "0.3.0" + "@firebase/database" "1.0.12" + "@firebase/database-compat" "2.0.3" + "@firebase/firestore" "4.7.8" + "@firebase/firestore-compat" "0.3.43" + "@firebase/functions" "0.12.2" + "@firebase/functions-compat" "0.3.19" + "@firebase/installations" "0.6.12" + "@firebase/installations-compat" "0.2.12" + "@firebase/messaging" "0.12.16" + "@firebase/messaging-compat" "0.2.16" + "@firebase/performance" "0.7.0" + "@firebase/performance-compat" "0.2.13" + "@firebase/remote-config" "0.5.0" + "@firebase/remote-config-compat" "0.2.12" + "@firebase/storage" "0.13.6" + "@firebase/storage-compat" "0.3.16" + "@firebase/util" "1.10.3" + "@firebase/vertexai" "1.0.4" flat-cache@^3.0.4: version "3.0.4" @@ -18711,9 +18853,9 @@ html-element-map@^1.0.0: call-bind "^1.0.2" html-entities@^2.1.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-2.4.0.tgz#edd0cee70402584c8c76cc2c0556db09d1f45061" - integrity sha512-igBTJcNNNhvZFRtm8uA6xMY6xYleeDwn3PeBCkDz7tHttv4F2hsDI2aPgNERWzvRcNYHNT3ymRaQzllmXj4YsQ== + version "2.5.2" + resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-2.5.2.tgz#201a3cf95d3a15be7099521620d19dfb4f65359f" + integrity sha512-K//PSRMQk4FZ78Kyau+mZurHn3FH0Vwr+H36eE0rPbeYkRRi9YxceYPhuN60UwWorxyKHhqoAJl2OFKa4BVtaA== html-escaper@^2.0.0: version "2.0.2" @@ -20634,7 +20776,7 @@ jsonpath-plus@^7.2.0: resolved "https://registry.yarnpkg.com/jsonpath-plus/-/jsonpath-plus-7.2.0.tgz#7ad94e147b3ed42f7939c315d2b9ce490c5a3899" integrity sha512-zBfiUPM5nD0YZSBT/o/fbCUlCcepMIdP0CJZxM1+KgA4f2T206f6VAg9e7mX35+KlMaIc5qXW34f3BnwJ3w+RA== -jsonschema@^1.2.4, jsonschema@^1.4.1: +jsonschema@^1.4.1: version "1.4.1" resolved "https://registry.yarnpkg.com/jsonschema/-/jsonschema-1.4.1.tgz#cc4c3f0077fb4542982973d8a083b6b34f482dab" integrity sha512-S6cATIPVv1z0IlxdN+zUk5EPjkGCdnhN4wVSBlvoUO1tOLJootbo9CquNJmbIh4yikWHiUedhRYrNPn1arpEmQ== @@ -28309,6 +28451,11 @@ uint8arrays@^3.0.0: dependencies: multiformats "^9.4.2" +ulid@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/ulid/-/ulid-2.3.0.tgz#93063522771a9774121a84d126ecd3eb9804071f" + integrity sha512-keqHubrlpvT6G2wH0OEfSW4mquYRcbe/J8NMmveoQOjUqmo+hXtO+ORCpWhdbZ7k72UtY61BL7haGxW6enBnjw== + unbox-primitive@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.2.tgz#29032021057d5e6cdbd08c5129c226dff8ed6f9e" @@ -28870,6 +29017,11 @@ wdio-cucumberjs-json-reporter@^4.4.3: strip-ansi "^6.0.1" webdriverio "~7.16.13" +web-vitals@^4.2.4: + version "4.2.4" + resolved "https://registry.yarnpkg.com/web-vitals/-/web-vitals-4.2.4.tgz#1d20bc8590a37769bd0902b289550936069184b7" + integrity sha512-r4DIlprAGwJ7YM11VZp4R884m0Vmgr6EAKe3P+kO0PPj3Unqyvv59rczf6UiGcb9Z8QxZVcqKNwv/g0WNdWwsw== + webdriver@7.16.16: version "7.16.16" resolved "https://registry.yarnpkg.com/webdriver/-/webdriver-7.16.16.tgz#fee2158d52a6fa4052a35f497d6cdc6bbb6ef733" From 7096f94fd5875450e8a6ee69ce0de2a0f0a45f47 Mon Sep 17 00:00:00 2001 From: "runway-github[bot]" <73448015+runway-github[bot]@users.noreply.github.com> Date: Mon, 17 Mar 2025 23:56:08 +0000 Subject: [PATCH 049/473] chore(runway): cherry-pick fix: cp-7.43.0 add remote feature flag for notifications (#14048) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - fix: cp-7.43.0 add remote feature flag for notifications (#14028) ## **Description** Adds remote feature flag for notifications (so we can turn on/off dynamically without the build flag) ## **Related issues** Fixes: ## **Manual testing steps** ## **Screenshots/Recordings** <!-- If applicable, add screenshots and/or recordings to visualize the before and after of your change. --> ### **Before** <!-- [screenshots/recordings] --> ### **After** <!-- [screenshots/recordings] --> ## **Pre-merge author checklist** - [x] I’ve followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile Coding Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [x] I've completed the PR template to the best of my ability - [x] I’ve included tests if applicable - [x] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [x] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. ## **Pre-merge reviewer checklist** - [ ] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [ ] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots. [9d582bd](https://github.com/MetaMask/metamask-mobile/commit/9d582bd3f3cd331e173b46a10e5d4760d57c29d5) Co-authored-by: Prithpal Sooriya <prithpal.sooriya@consensys.net> --- ...reate-notification-services-push-controller.ts | 3 +-- app/util/notifications/constants/config.ts | 15 ++++++++++++++- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/app/core/Engine/controllers/notifications/create-notification-services-push-controller.ts b/app/core/Engine/controllers/notifications/create-notification-services-push-controller.ts index 6c5701b9837e..bf769074e9ed 100644 --- a/app/core/Engine/controllers/notifications/create-notification-services-push-controller.ts +++ b/app/core/Engine/controllers/notifications/create-notification-services-push-controller.ts @@ -11,7 +11,6 @@ import { deleteRegToken, isPushNotificationsEnabled, } from './push-utils'; -import { isNotificationsFeatureEnabled } from '../../../../util/notifications'; export const createNotificationServicesPushController = (props: { messenger: NotificationServicesPushControllerMessenger; @@ -23,7 +22,7 @@ export const createNotificationServicesPushController = (props: { state: { ...defaultState, ...props.initialState }, config: { platform: 'mobile', - isPushFeatureEnabled: isNotificationsFeatureEnabled(), + isPushFeatureEnabled: true, pushService: { createRegToken, deleteRegToken, diff --git a/app/util/notifications/constants/config.ts b/app/util/notifications/constants/config.ts index 274c9a45c16a..2afb2dcc46a2 100644 --- a/app/util/notifications/constants/config.ts +++ b/app/util/notifications/constants/config.ts @@ -1,5 +1,18 @@ +import Engine from '../../../core/Engine'; + +/** + * This feature flag compromises of a build-time flag as well as a remote flag. + * NOTE: this does not use the remote flag redux selectors, so UI is prone to being stale. + * - This is okay in our case as we make this function call on all notification actions. + * + * @returns boolean if notifications feature is enabled. + */ export const isNotificationsFeatureEnabled = () => - process.env.MM_NOTIFICATIONS_UI_ENABLED === 'true'; + process.env.MM_NOTIFICATIONS_UI_ENABLED === 'true' && + Boolean( + Engine?.context?.RemoteFeatureFlagController?.state?.remoteFeatureFlags + ?.assetsNotificationsEnabled, + ); export enum ModalFieldType { ASSET = 'ModalField-Asset', From 29117abfc059c66fd9b67db0755bd37247dce412 Mon Sep 17 00:00:00 2001 From: "runway-github[bot]" <73448015+runway-github[bot]@users.noreply.github.com> Date: Mon, 17 Mar 2025 23:56:36 +0000 Subject: [PATCH 050/473] chore(runway): cherry-pick fix: cp-7.43.0 remove network fee section in notification details (#14058) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - fix: cp-7.43.0 remove network fee section in notification details (#14050) This is an expensive set of RPC calls which we plan to optimise in the backend. This is causing some slowness in the UI, and is not critical for this MVP. ## **Description** <!-- Write a short description of the changes included in this pull request, also include relevant motivation and context. Have in mind the following questions: 1. What is the reason for the change? 2. What is the improvement/solution? --> ## **Related issues** Fixes: ## **Manual testing steps** 1. Create a funds sent notification. 2. Navigate to notification details. 3. See if the network fee dropdown is removed. ## **Screenshots/Recordings** <!-- If applicable, add screenshots and/or recordings to visualize the before and after of your change. --> ### **Before** https://www.loom.com/share/2bb90faf9c984ea4a7411ceb1a9695e2?sid=4aea94af-0f5c-4507-89c0-86ff15b05bc2 ### **After** There is no "network fee" section, and notifications load faster and are much more responsive. ![Screenshot 2025-03-17 at 14 23 18](https://github.com/user-attachments/assets/3b90a8c6-04b6-4209-bbb3-cef0da3ca950) ## **Pre-merge author checklist** - [x] I’ve followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile Coding Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [x] I've completed the PR template to the best of my ability - [x] I’ve included tests if applicable - [x] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [x] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. ## **Pre-merge reviewer checklist** - [ ] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [ ] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots. [f975775](https://github.com/MetaMask/metamask-mobile/commit/f975775f0199869cfee8ef8386ac59c2d66e26fb) Co-authored-by: Prithpal Sooriya <prithpal.sooriya@consensys.net> --- .../Details/__snapshots__/index.test.tsx.snap | 73 ------------------- .../erc1155-sent-received.tsx | 5 -- .../erc20-sent-received.ts | 5 -- .../erc721-sent-received.tsx | 5 -- .../eth-sent-received/eth-sent-received.tsx | 5 -- .../notification-states/stake/stake.tsx | 5 -- .../swap-completed/swap-completed.tsx | 5 -- 7 files changed, 103 deletions(-) diff --git a/app/components/Views/Notifications/Details/__snapshots__/index.test.tsx.snap b/app/components/Views/Notifications/Details/__snapshots__/index.test.tsx.snap index 001927010efe..90d95a7fd4b6 100644 --- a/app/components/Views/Notifications/Details/__snapshots__/index.test.tsx.snap +++ b/app/components/Views/Notifications/Details/__snapshots__/index.test.tsx.snap @@ -971,79 +971,6 @@ exports[`NotificationsDetails renders correctly 1`] = ` </Text> </View> </View> - <View - style={ - { - "flexDirection": "row", - "gap": 16, - "minWidth": "100%", - "paddingVertical": 5, - } - } - > - <View - onLayout={[Function]} - > - <View - style={ - { - "alignItems": "center", - "flexDirection": "row", - "gap": 8, - } - } - > - <View - style={ - { - "position": "relative", - } - } - > - <View - style={ - [ - { - "borderRadius": 6, - "height": 45, - "marginTop": 8, - "width": 32, - }, - { - "backgroundColor": "#E1E9EE", - "overflow": "hidden", - }, - ] - } - /> - </View> - <View - style={ - { - "position": "relative", - } - } - > - <View - style={ - [ - { - "borderRadius": 6, - "height": 45, - "marginTop": 8, - "width": 682, - }, - { - "backgroundColor": "#E1E9EE", - "overflow": "hidden", - }, - ] - } - /> - </View> - </View> - </View> - </View> <TouchableOpacity accessibilityRole="button" accessible={true} diff --git a/app/util/notifications/notification-states/erc1155-sent-received/erc1155-sent-received.tsx b/app/util/notifications/notification-states/erc1155-sent-received/erc1155-sent-received.tsx index d6d0ad9823f3..2e30628ab6c1 100644 --- a/app/util/notifications/notification-states/erc1155-sent-received/erc1155-sent-received.tsx +++ b/app/util/notifications/notification-states/erc1155-sent-received/erc1155-sent-received.tsx @@ -13,7 +13,6 @@ import { } from '../types/NotificationState'; import { getNativeTokenDetailsByChainId, - getNetworkFees, getNotificationBadge, } from '../../methods/common'; import { ModalField } from '../types/NotificationModalDetails'; @@ -108,10 +107,6 @@ const state: NotificationState<ERC1155Notification> = { iconUrl: nativeTokenDetails?.image, name: nativeTokenDetails?.name, }, - { - type: ModalFieldType.NETWORK_FEE, - getNetworkFees: () => getNetworkFees(notification), - }, ], footer: { type: ModalFooterType.BLOCK_EXPLORER, diff --git a/app/util/notifications/notification-states/erc20-sent-received/erc20-sent-received.ts b/app/util/notifications/notification-states/erc20-sent-received/erc20-sent-received.ts index 3fc31a09edce..ef4cfe2fdb71 100644 --- a/app/util/notifications/notification-states/erc20-sent-received/erc20-sent-received.ts +++ b/app/util/notifications/notification-states/erc20-sent-received/erc20-sent-received.ts @@ -10,7 +10,6 @@ import { import { getAmount, getNativeTokenDetailsByChainId, - getNetworkFees, getNotificationBadge, } from '../../methods/common'; import { getTokenAmount, getTokenUSDAmount } from '../token-amounts'; @@ -101,10 +100,6 @@ const state: NotificationState<ERC20Notification> = { iconUrl: nativeTokenDetails?.image, name: nativeTokenDetails?.name, }, - { - type: ModalFieldType.NETWORK_FEE, - getNetworkFees: () => getNetworkFees(notification), - }, ], footer: { type: ModalFooterType.BLOCK_EXPLORER, diff --git a/app/util/notifications/notification-states/erc721-sent-received/erc721-sent-received.tsx b/app/util/notifications/notification-states/erc721-sent-received/erc721-sent-received.tsx index c54bdb03f5dc..423c683fe55f 100644 --- a/app/util/notifications/notification-states/erc721-sent-received/erc721-sent-received.tsx +++ b/app/util/notifications/notification-states/erc721-sent-received/erc721-sent-received.tsx @@ -13,7 +13,6 @@ import { } from '../types/NotificationState'; import { getNativeTokenDetailsByChainId, - getNetworkFees, getNotificationBadge, } from '../../methods/common'; import { formatAddress } from '../../../address'; @@ -99,10 +98,6 @@ const state: NotificationState<ERC721Notification> = { iconUrl: nativeTokenDetails?.image, name: nativeTokenDetails?.name, }, - { - type: ModalFieldType.NETWORK_FEE, - getNetworkFees: () => getNetworkFees(notification), - }, ], footer: { type: ModalFooterType.BLOCK_EXPLORER, diff --git a/app/util/notifications/notification-states/eth-sent-received/eth-sent-received.tsx b/app/util/notifications/notification-states/eth-sent-received/eth-sent-received.tsx index c8d663e00884..ca0f0695ddea 100644 --- a/app/util/notifications/notification-states/eth-sent-received/eth-sent-received.tsx +++ b/app/util/notifications/notification-states/eth-sent-received/eth-sent-received.tsx @@ -11,7 +11,6 @@ import { getNativeTokenDetailsByChainId, getNotificationBadge, formatAmount, - getNetworkFees, } from '../../methods/common'; import { formatAddress } from '../../../address'; @@ -108,10 +107,6 @@ const state: NotificationState<NativeSentReceiveNotification> = { iconUrl: nativeTokenDetails?.image, name: nativeTokenDetails?.name, }, - { - type: ModalFieldType.NETWORK_FEE, - getNetworkFees: () => getNetworkFees(notification), - }, ], footer: { type: ModalFooterType.BLOCK_EXPLORER, diff --git a/app/util/notifications/notification-states/stake/stake.tsx b/app/util/notifications/notification-states/stake/stake.tsx index d854dce7ee62..150ecf4413c0 100644 --- a/app/util/notifications/notification-states/stake/stake.tsx +++ b/app/util/notifications/notification-states/stake/stake.tsx @@ -6,7 +6,6 @@ import { NotificationState } from '../types/NotificationState'; import { getAmount, getNativeTokenDetailsByChainId, - getNetworkFees, getNotificationBadge, } from '../../methods/common'; import { ModalField } from '../types/NotificationModalDetails'; @@ -155,10 +154,6 @@ const state: NotificationState<StakeNotification> = { ? notification.data.stake_out.image : notification.data.stake_in.image, }, - { - type: ModalFieldType.NETWORK_FEE, - getNetworkFees: () => getNetworkFees(notification), - }, ], footer: { type: ModalFooterType.BLOCK_EXPLORER, diff --git a/app/util/notifications/notification-states/swap-completed/swap-completed.tsx b/app/util/notifications/notification-states/swap-completed/swap-completed.tsx index 0609b167fb37..0ce3e73cc387 100644 --- a/app/util/notifications/notification-states/swap-completed/swap-completed.tsx +++ b/app/util/notifications/notification-states/swap-completed/swap-completed.tsx @@ -6,7 +6,6 @@ import { NotificationState } from '../types/NotificationState'; import { getAmount, getNativeTokenDetailsByChainId, - getNetworkFees, getNotificationBadge, } from '../../methods/common'; import { getTokenAmount, getTokenUSDAmount } from '../token-amounts'; @@ -94,10 +93,6 @@ const state: NotificationState<SwapCompletedNotification> = { 1 / parseFloat(notification.data.rate) ).toFixed(5)} ${notification.data.token_in.symbol}`, }, - { - type: ModalFieldType.NETWORK_FEE, - getNetworkFees: () => getNetworkFees(notification), - }, ], footer: { type: ModalFooterType.BLOCK_EXPLORER, From fc81512e5911edc5d6c7e1ba56ec399ce0620359 Mon Sep 17 00:00:00 2001 From: "runway-github[bot]" <73448015+runway-github[bot]@users.noreply.github.com> Date: Mon, 17 Mar 2025 23:57:03 +0000 Subject: [PATCH 051/473] chore(runway): cherry-pick fix: cp-7.43.0 moved xcode 16 as default and applied xcode 15 only to testflight builds (#14061) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - fix: moved xcode 16 as default and applied xcode 15 only to testflight builds (#14032) <!-- Please submit this PR as a draft initially. Do not mark it as "Ready for review" until the template has been completely filled out, and PR status checks have passed at least once. --> ## **Description** This PR fixes and Xcode 16 vs. 15 compatibility issue with E2E and TestFlight releases. Prior to this PR E2E was failing but allowed TestFlight releases. ## **Related issues** Fixes: ## **Manual testing steps** 1.[ Run TestFlight build should succeed](https://app.bitrise.io/app/be69d4368ee7e86d/pipelines/82a9490d-8e0c-40c9-bb55-1c4a4b06609a) 2. [Run E2E build should succeed](https://app.bitrise.io/app/be69d4368ee7e86d/pipelines/95fca2de-a0c7-4a9f-aa0a-0380fb9efe0c) ## **Screenshots/Recordings** <!-- If applicable, add screenshots and/or recordings to visualize the before and after of your change. --> ### **Before** <!-- [screenshots/recordings] --> ### **After** <!-- [screenshots/recordings] --> ## **Pre-merge author checklist** - [ ] I’ve followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile Coding Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [ ] I've completed the PR template to the best of my ability - [ ] I’ve included tests if applicable - [ ] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [ ] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. ## **Pre-merge reviewer checklist** - [ ] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [ ] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots. Co-authored-by: metamaskbot <metamaskbot@users.noreply.github.com> [7ad57a0](https://github.com/MetaMask/metamask-mobile/commit/7ad57a0ebee1c6e5a9195146c60e436405a23a53) Co-authored-by: sethkfman <10342624+sethkfman@users.noreply.github.com> Co-authored-by: metamaskbot <metamaskbot@users.noreply.github.com> --- bitrise.yml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/bitrise.yml b/bitrise.yml index a447a83c6a44..5fe2e46ddc07 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -1538,6 +1538,10 @@ workflows: - pipeline_intermediate_files: sourcemaps/ios/index.js.map:BITRISE_APP_STORE_SOURCEMAP_PATH - deploy_path: sourcemaps/ios/index.js.map title: Deploy Source Map + meta: + bitrise.io: + stack: osx-xcode-15.0.x + machine_type_id: g2.mac.large build_ios_release_and_upload_sourcemaps: envs: - SENTRY_DISABLE_AUTO_UPLOAD: 'false' @@ -1861,7 +1865,7 @@ app: COREPACK_VERSION: 0.28.0 meta: bitrise.io: - stack: osx-xcode-15.0.x + stack: osx-xcode-16.2.x machine_type_id: g2.mac.large trigger_map: - push_branch: release/* From 23ab8fabae4833771b05e9b8d8ef8756f8e0c943 Mon Sep 17 00:00:00 2001 From: "runway-github[bot]" <73448015+runway-github[bot]@users.noreply.github.com> Date: Mon, 17 Mar 2025 23:57:27 +0000 Subject: [PATCH 052/473] chore(runway): cherry-pick fix: cp-7.43.0 Updated ThemeProvider to no longer have wrapping View (#14063) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - fix: cp-7.43.0 Updated ThemeProvider to no longer have wrapping View (#14056) <!-- Please submit this PR as a draft initially. Do not mark it as "Ready for review" until the template has been completely filled out, and PR status checks have passed at least once. --> ## **Description** This PR updated the ThemeProvider to no longer have wrapping View <!-- Write a short description of the changes included in this pull request, also include relevant motivation and context. Have in mind the following questions: 1. What is the reason for the change? 2. What is the improvement/solution? --> ## **Related issues** Fixes: Bitrise errors https://app.bitrise.io/app/be69d4368ee7e86d/pipelines/5260ec4d-6e9a-4a39-9710-7fc2f1af3db6 ## **Manual testing steps** 1. Go to this page... 2. 3. ## **Screenshots/Recordings** <!-- If applicable, add screenshots and/or recordings to visualize the before and after of your change. --> ### **Before** <!-- [screenshots/recordings] --> ### **After** https://github.com/user-attachments/assets/fc79a1ee-3f0d-44b6-93a0-ea6566c751fe https://github.com/user-attachments/assets/bfd1dae2-ff1d-400e-b6e5-a588f89b9d7b <!-- [screenshots/recordings] --> ## **Pre-merge author checklist** - [x] I’ve followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile Coding Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [x] I've completed the PR template to the best of my ability - [x] I’ve included tests if applicable - [x] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [x] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. ## **Pre-merge reviewer checklist** - [ ] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [ ] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots. [abea17a](https://github.com/MetaMask/metamask-mobile/commit/abea17acefd6ebce8197103b97d2b2a7ae8bf97d) Co-authored-by: Brian August Nguyen <brianacnguyen@gmail.com> --- .storybook/decorators/withTheme.tsx | 24 +++++++-- .../ThemeProvider/ThemeProvider.constants.ts | 3 -- .../ThemeProvider/ThemeProvider.test.tsx | 50 ++++++++++--------- .../providers/ThemeProvider/ThemeProvider.tsx | 18 +------ 4 files changed, 49 insertions(+), 46 deletions(-) delete mode 100644 app/component-library/providers/ThemeProvider/ThemeProvider.constants.ts diff --git a/.storybook/decorators/withTheme.tsx b/.storybook/decorators/withTheme.tsx index 78e0568e1c9a..c93599733e59 100644 --- a/.storybook/decorators/withTheme.tsx +++ b/.storybook/decorators/withTheme.tsx @@ -1,8 +1,26 @@ import React from 'react'; +import { Dimensions, View } from 'react-native'; +import { useAppTheme } from '../../app/util/theme'; + import ThemeProvider from '../../app/component-library/providers/ThemeProvider/ThemeProvider'; -const withTheme = (storyFn: () => React.ReactNode) => ( - <ThemeProvider>{storyFn()}</ThemeProvider> -); +const withTheme = (storyFn: () => React.ReactNode) => { + const { width: windowWidth, height: windowHeight } = Dimensions.get('window'); + const theme = useAppTheme(); + + return ( + <ThemeProvider> + <View + style={{ + width: windowWidth, + height: windowHeight, + backgroundColor: theme.colors.background.alternative, + }} + > + {storyFn()} + </View> + </ThemeProvider> + ); +}; export default withTheme; diff --git a/app/component-library/providers/ThemeProvider/ThemeProvider.constants.ts b/app/component-library/providers/ThemeProvider/ThemeProvider.constants.ts deleted file mode 100644 index f1bdcc8ca1ab..000000000000 --- a/app/component-library/providers/ThemeProvider/ThemeProvider.constants.ts +++ /dev/null @@ -1,3 +0,0 @@ -/* eslint-disable import/prefer-default-export */ -// Test IDs -export const THEMEPROVIDER_TESTID = 'theme-provider'; diff --git a/app/component-library/providers/ThemeProvider/ThemeProvider.test.tsx b/app/component-library/providers/ThemeProvider/ThemeProvider.test.tsx index d66b1e574a11..57ee356672b9 100644 --- a/app/component-library/providers/ThemeProvider/ThemeProvider.test.tsx +++ b/app/component-library/providers/ThemeProvider/ThemeProvider.test.tsx @@ -1,37 +1,41 @@ -// Third party dependencies import React from 'react'; -import { render } from '@testing-library/react-native'; import { View } from 'react-native'; -import configureStore from 'redux-mock-store'; -import { Provider } from 'react-redux'; // External dependencies -import { mockTheme } from '../../../util/theme'; +import { ThemeContext } from '../../../util/theme'; +import renderWithProvider from '../../../util/test/renderWithProvider'; // Internal dependencies import ThemeProvider from './ThemeProvider'; -import { THEMEPROVIDER_TESTID } from './ThemeProvider.constants'; - -// Create a mock store -const mockStore = configureStore([]); -const store = mockStore({ - user: { - appTheme: mockTheme.themeAppearance, // or any other relevant initial state - }, -}); describe('ThemeProvider', () => { - it('should provide the correct theme to its children', () => { - const { getByTestId } = render( - <Provider store={store}> - <ThemeProvider> - <View /> - </ThemeProvider> - </Provider>, + it('renders children correctly', () => { + const { getByTestId } = renderWithProvider( + <ThemeProvider> + <View testID="child-component" /> + </ThemeProvider>, ); - expect(getByTestId(THEMEPROVIDER_TESTID).props.style.backgroundColor).toBe( - mockTheme.colors.background.alternative, + expect(getByTestId('child-component')).toBeTruthy(); + }); + + it('provides the correct theme via ThemeContext', () => { + let themeValue = { + brandColors: { + black: '', + }, + }; + const TestComponent = () => { + themeValue = React.useContext(ThemeContext); + return null; + }; + + renderWithProvider( + <ThemeProvider> + <TestComponent /> + </ThemeProvider>, ); + + expect(themeValue.brandColors.black).toStrictEqual('#000000'); }); }); diff --git a/app/component-library/providers/ThemeProvider/ThemeProvider.tsx b/app/component-library/providers/ThemeProvider/ThemeProvider.tsx index f708396d1f24..8fb0929d098e 100644 --- a/app/component-library/providers/ThemeProvider/ThemeProvider.tsx +++ b/app/component-library/providers/ThemeProvider/ThemeProvider.tsx @@ -1,29 +1,13 @@ // Third party dependencies import React from 'react'; -import { Dimensions, View } from 'react-native'; // External dependencies import { useAppTheme, ThemeContext } from '../../../util/theme'; -// Internal dependencies -import { THEMEPROVIDER_TESTID } from './ThemeProvider.constants'; - const ThemeProvider = ({ children }: { children: React.ReactNode }) => { - const { width: windowWidth, height: windowHeight } = Dimensions.get('window'); const theme = useAppTheme(); return ( - <ThemeContext.Provider value={theme}> - <View - style={{ - width: windowWidth, - height: windowHeight, - backgroundColor: theme.colors.background.alternative, - }} - testID={THEMEPROVIDER_TESTID} - > - {children} - </View> - </ThemeContext.Provider> + <ThemeContext.Provider value={theme}>{children}</ThemeContext.Provider> ); }; From bdc2bdc8c59d0b765c3ec35d236261e0478e03a5 Mon Sep 17 00:00:00 2001 From: metamaskbot <metamaskbot@users.noreply.github.com> Date: Tue, 18 Mar 2025 00:03:15 +0000 Subject: [PATCH 053/473] Bump version number to 1627 --- android/app/build.gradle | 2 +- bitrise.yml | 4 ++-- ios/MetaMask.xcodeproj/project.pbxproj | 12 ++++++------ 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/android/app/build.gradle b/android/app/build.gradle index bb13481c7cdd..4499464e7c3a 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -179,7 +179,7 @@ android { minSdkVersion rootProject.ext.minSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion versionName "7.43.0" - versionCode 1624 + versionCode 1627 testBuildType System.getProperty('testBuildType', 'debug') missingDimensionStrategy 'react-native-camera', 'general' testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" diff --git a/bitrise.yml b/bitrise.yml index 5fe2e46ddc07..a5bcb563aa9e 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -1832,13 +1832,13 @@ app: VERSION_NAME: 7.43.0 - opts: is_expand: false - VERSION_NUMBER: 1624 + VERSION_NUMBER: 1627 - opts: is_expand: false FLASK_VERSION_NAME: 7.43.0 - opts: is_expand: false - FLASK_VERSION_NUMBER: 1624 + FLASK_VERSION_NUMBER: 1627 - opts: is_expand: false ANDROID_APK_LINK: '' diff --git a/ios/MetaMask.xcodeproj/project.pbxproj b/ios/MetaMask.xcodeproj/project.pbxproj index e771ba5145ba..c844fa136d41 100644 --- a/ios/MetaMask.xcodeproj/project.pbxproj +++ b/ios/MetaMask.xcodeproj/project.pbxproj @@ -1380,7 +1380,7 @@ CODE_SIGN_IDENTITY = "Apple Development"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1624; + CURRENT_PROJECT_VERSION = 1627; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = 48XVW22RCG; @@ -1449,7 +1449,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMask.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1624; + CURRENT_PROJECT_VERSION = 1627; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 48XVW22RCG; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 48XVW22RCG; @@ -1514,7 +1514,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMaskDebug.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1624; + CURRENT_PROJECT_VERSION = 1627; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = 48XVW22RCG; @@ -1580,7 +1580,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMask.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1624; + CURRENT_PROJECT_VERSION = 1627; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 48XVW22RCG; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 48XVW22RCG; @@ -1739,7 +1739,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMaskDebug.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1624; + CURRENT_PROJECT_VERSION = 1627; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = 48XVW22RCG; @@ -1808,7 +1808,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMask.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1624; + CURRENT_PROJECT_VERSION = 1627; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 48XVW22RCG; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 48XVW22RCG; From 8ae9871f7c936460fd49f7c92931c1ac2469bd96 Mon Sep 17 00:00:00 2001 From: "runway-github[bot]" <73448015+runway-github[bot]@users.noreply.github.com> Date: Tue, 18 Mar 2025 00:12:21 +0000 Subject: [PATCH 054/473] chore(runway): cherry-pick fix: cp-7.42.0 Refactor AddNickname with missing data (#14073) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - fix: cp-7.42.0 Refactor AddNickname with missing data (#14008) ## **Description** Add nickname component was missing importing variables! This passed CI because the comment was forgotten to be addressed: // @ts-nocheck - Confirmations team or Transactions team Sentry issue: https://metamask.sentry.io/issues/6313090523/?project=2299799 <!-- Write a short description of the changes included in this pull request, also include relevant motivation and context. Have in mind the following questions: 1. What is the reason for the change? 2. What is the improvement/solution? --> ## **Related issues** Fixes: ## **Manual testing steps** 1. Go to this page... 2. 3. ## **Screenshots/Recordings** <!-- If applicable, add screenshots and/or recordings to visualize the before and after of your change. --> ### **Before** <!-- [screenshots/recordings] --> https://github.com/user-attachments/assets/587a7455-2290-4040-850d-384f0eacf5f1 ### **After** <!-- [screenshots/recordings] --> https://github.com/user-attachments/assets/348c7683-8e7e-40f0-bdbf-0f30c8d9e64f ## **Pre-merge author checklist** - [ ] I’ve followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile Coding Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [ ] I've completed the PR template to the best of my ability - [ ] I’ve included tests if applicable - [ ] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [ ] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. ## **Pre-merge reviewer checklist** - [ ] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [ ] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots. --------- Co-authored-by: OGPoyraz <omergoktugpoyraz@gmail.com> [64d3ac2](https://github.com/MetaMask/metamask-mobile/commit/64d3ac246d81060ed4414401c635f1fface7bea1) Co-authored-by: tommasini <46944231+tommasini@users.noreply.github.com> Co-authored-by: OGPoyraz <omergoktugpoyraz@gmail.com> --- .../ApproveView/Approve/index.js | 5 ++++ .../AddNickname/index.tsx | 25 ++++++++----------- .../AddNickname/types.ts | 5 ++-- 3 files changed, 17 insertions(+), 18 deletions(-) diff --git a/app/components/Views/confirmations/ApproveView/Approve/index.js b/app/components/Views/confirmations/ApproveView/Approve/index.js index f8b53bfb5e1c..987c6b84744a 100644 --- a/app/components/Views/confirmations/ApproveView/Approve/index.js +++ b/app/components/Views/confirmations/ApproveView/Approve/index.js @@ -48,6 +48,7 @@ import { selectEvmNetworkConfigurationsByChainId, selectProviderTypeByChainId, selectRpcUrlByChainId, + selectEvmChainId, } from '../../../../../selectors/networkController'; import { selectConversionRateByChainId, @@ -852,6 +853,10 @@ class Approve extends PureComponent { address={address} savedContactListToArray={savedContactListToArray} addressNickname={addressNickname} + providerType={providerType} + providerChainId={chainId} + providerRpcTarget={providerRpcTarget} + networkConfigurations={networkConfigurations} /> ) : this.state.isBlockExplorerVisible && !isNonEvmChainId(chainId) ? ( <ShowBlockExplorer diff --git a/app/components/Views/confirmations/components/ApproveTransactionReview/AddNickname/index.tsx b/app/components/Views/confirmations/components/ApproveTransactionReview/AddNickname/index.tsx index d23461a7261b..685ec20d17a8 100644 --- a/app/components/Views/confirmations/components/ApproveTransactionReview/AddNickname/index.tsx +++ b/app/components/Views/confirmations/components/ApproveTransactionReview/AddNickname/index.tsx @@ -1,5 +1,3 @@ -// eslint-disable-next-line @typescript-eslint/ban-ts-comment -// @ts-nocheck - Confirmations team or Transactions team import React, { useState, useEffect, useCallback } from 'react'; import { SafeAreaView, View, TextInput, TouchableOpacity } from 'react-native'; import AntDesignIcon from 'react-native-vector-icons/AntDesign'; @@ -8,7 +6,7 @@ import Engine from '../../../../../../core/Engine'; import { MetaMetricsEvents } from '../../../../../../core/Analytics'; import { toChecksumAddress } from 'ethereumjs-util'; -import { connect } from 'react-redux'; +import { connect, useSelector } from 'react-redux'; import StyledButton from '../../../../../UI/StyledButton'; import Text from '../../../../../../component-library/components/Texts/Text'; import InfoModal from '../../../../../UI/Swaps/components/InfoModal'; @@ -32,12 +30,12 @@ import { CONTACT_ALREADY_SAVED, SYMBOL_ERROR, } from '../../../../../../constants/error'; -import { selectEvmNetworkConfigurationsByChainId } from '../../../../../../selectors/networkController'; import { useMetrics } from '../../../../../../components/hooks/useMetrics'; import { selectInternalAccounts } from '../../../../../../selectors/accountsController'; import { RootState } from '../../../../../../reducers'; import { selectAddressBook } from '../../../../../../selectors/addressBookController'; import { selectIsEvmNetworkSelected } from '../../../../../../selectors/multichainNetworkController'; +import { NetworkType } from '@metamask/controller-utils'; const getAnalyticsParams = () => ({}); @@ -159,13 +157,14 @@ const AddNickname = (props: AddNicknameProps) => { return errorMessage; }; - const hasBlockExplorer = !isEvmSelected - ? false - : shouldShowBlockExplorer( - providerType, - providerRpcTarget, - networkConfigurations, - ); + const hasBlockExplorer = + !isEvmSelected || !providerRpcTarget + ? false + : shouldShowBlockExplorer( + providerType as NetworkType, + providerRpcTarget, + networkConfigurations, + ); return ( <SafeAreaView style={styles.container}> @@ -265,12 +264,8 @@ const AddNickname = (props: AddNicknameProps) => { }; const mapStateToProps = (state: RootState) => ({ - providerType: selectProviderType(state), - providerRpcTarget: selectRpcUrl(state), - providerChainId: selectEvmChainId(state), addressBook: selectAddressBook(state), internalAccounts: selectInternalAccounts(state), - networkConfigurations: selectEvmNetworkConfigurationsByChainId(state), }); // TODO: Replace "any" with type diff --git a/app/components/Views/confirmations/components/ApproveTransactionReview/AddNickname/types.ts b/app/components/Views/confirmations/components/ApproveTransactionReview/AddNickname/types.ts index 32ce99fcbdb2..0559815f56f7 100644 --- a/app/components/Views/confirmations/components/ApproveTransactionReview/AddNickname/types.ts +++ b/app/components/Views/confirmations/components/ApproveTransactionReview/AddNickname/types.ts @@ -1,5 +1,4 @@ import { AddressBookControllerState } from '@metamask/address-book-controller'; -import { NetworkType } from '@metamask/controller-utils'; import { InternalAccount } from '@metamask/keyring-internal-api'; import type { NetworkState } from '@metamask/network-controller'; import { Hex } from '@metamask/utils'; @@ -13,10 +12,10 @@ export interface AddNicknameProps { // TODO: Replace "any" with type // eslint-disable-next-line @typescript-eslint/no-explicit-any showModalAlert: (config: any) => void; - providerType: NetworkType; + providerType: string; providerChainId: Hex; providerNetwork: string; - providerRpcTarget: string; + providerRpcTarget: string | undefined; addressBook: AddressBookControllerState['addressBook']; internalAccounts: InternalAccount[]; } From 2cd2efb02162df82e85d94875f4af85e2f830aab Mon Sep 17 00:00:00 2001 From: MetaMask Bot <37885440+metamaskbot@users.noreply.github.com> Date: Tue, 18 Mar 2025 12:12:28 -0400 Subject: [PATCH 055/473] chore: chore/7.43.0-Changelog (#14017) This PR updates the change log for 7.43.0 and generates the test plan here [commit.csv](https://github.com/MetaMask/metamask-mobile/blob/chore/7.43.0-Changelog/commits.csv) --------- Co-authored-by: metamaskbot <metamaskbot@users.noreply.github.com> Co-authored-by: Aslau Mario-Daniel <marioaslau@gmail.com> --- CHANGELOG.md | 638 +++++++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 573 insertions(+), 65 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 963179a801ea..272849d40753 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,5 @@ # Changelog + All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), @@ -8,6 +9,108 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [7.43.0] +### Uncategorized + +- Bump version number to 1617 +- chore: Performance instrumentation for adding a snap account ([#13984](https://github.com/MetaMask/metamask-mobile/pull/13984)) +- chore: restructure transactions and define CODEOWNERS ([#13733](https://github.com/MetaMask/metamask-mobile/pull/13733)) +- chore: Bump Babel ([#13979](https://github.com/MetaMask/metamask-mobile/pull/13979)) +- chore: adds necessary initial code to work with non-evm transactions ([#13954](https://github.com/MetaMask/metamask-mobile/pull/13954)) +- chore: added staking team as codeowners for earn-controller files ([#13940](https://github.com/MetaMask/metamask-mobile/pull/13940)) +- chore: Bump axios ([#13950](https://github.com/MetaMask/metamask-mobile/pull/13950)) +- chore: Update `CODEOWNERS` file for template renderer ([#13918](https://github.com/MetaMask/metamask-mobile/pull/13918)) +- chore(snaps): Refactor Snap UI components folder structure ([#13905](https://github.com/MetaMask/metamask-mobile/pull/13905)) +- chore: upgrade NDK 26 on bitrise.yml ([#13862](https://github.com/MetaMask/metamask-mobile/pull/13862)) +- chore: add workflow_dispatch to security-code-scanner ([#13759](https://github.com/MetaMask/metamask-mobile/pull/13759)) +- chore: upgrade Xcode 16 on bitrise.yml ([#13807](https://github.com/MetaMask/metamask-mobile/pull/13807)) +- chore: update identity codeowners ([#13855](https://github.com/MetaMask/metamask-mobile/pull/13855)) +- chore: update swaps destination token search text ([#13605](https://github.com/MetaMask/metamask-mobile/pull/13605)) +- chore: Enable key caching of keyring controller ([#13675](https://github.com/MetaMask/metamask-mobile/pull/13675)) +- chore: update network info component for non evm networks ([#13734](https://github.com/MetaMask/metamask-mobile/pull/13734)) +- ci: Use ubuntu-latest ([#13844](https://github.com/MetaMask/metamask-mobile/pull/13844)) +- Slack prod cfg ([#13752](https://github.com/MetaMask/metamask-mobile/pull/13752)) +- refactor: Update Snaps-related controllers to use modular initialisation ([#13971](https://github.com/MetaMask/metamask-mobile/pull/13971)) +- refactor: Replace redesign confirmation BottomModal with BottomSheet ([#13268](https://github.com/MetaMask/metamask-mobile/pull/13268)) + +### Added + +- feat(ramp): estimate gasLimit for ERC20 transfers (sell feature) ([#12467](https://github.com/MetaMask/metamask-mobile/pull/12467)) +- feat(snaps): Add Snap UI Skeleton component integration and mapping ([#13966](https://github.com/MetaMask/metamask-mobile/pull/13966)) +- feat(snaps): Add icon next to SnapUILink ([#13878](https://github.com/MetaMask/metamask-mobile/pull/13878)) +- feat(snaps): Add Snap UI Spinner component ([#13832](https://github.com/MetaMask/metamask-mobile/pull/13832)) +- feat(ramp): payment method selector UI update ([#13722](https://github.com/MetaMask/metamask-mobile/pull/13722)) +- feat(snaps): Add support for full border radius for SnapUIImage ([#13816](https://github.com/MetaMask/metamask-mobile/pull/13816)) +- feat(ramp): enable non-evm support for Ramp, buy only ([#13718](https://github.com/MetaMask/metamask-mobile/pull/13718)) +- feat: Add confirmation UI metrics infra and some redesigned staking deposit events ([#13919](https://github.com/MetaMask/metamask-mobile/pull/13919)) +- feat: Add gas included swaps ([#13972](https://github.com/MetaMask/metamask-mobile/pull/13972)) +- feat: Add Base to Smart Transaction supported chains ([#13920](https://github.com/MetaMask/metamask-mobile/pull/13920)) +- feat: Add token list item pressed event ([#13808](https://github.com/MetaMask/metamask-mobile/pull/13808)) +- feat: STAKE-934 update staking hooks to consume earn controller selectors ([#13939](https://github.com/MetaMask/metamask-mobile/pull/13939)) +- feat: adding skeleton component ([#13780](https://github.com/MetaMask/metamask-mobile/pull/13780)) +- feat: Implement unstaking confirmation ([#13921](https://github.com/MetaMask/metamask-mobile/pull/13921)) +- feat: revisit currencies list ([#13879](https://github.com/MetaMask/metamask-mobile/pull/13879)) +- feat: bridge input screen ([#13847](https://github.com/MetaMask/metamask-mobile/pull/13847)) +- feat: Implement tooltip component on mobile ([#13860](https://github.com/MetaMask/metamask-mobile/pull/13860)) +- feat: support DAI while it's being deprecated ([#13666](https://github.com/MetaMask/metamask-mobile/pull/13666)) +- feat: Implement redesigned staking withdrawals component ([#13826](https://github.com/MetaMask/metamask-mobile/pull/13826)) +- feat: bump profile-sync-controller and migrate to the controller init pattern ([#13859](https://github.com/MetaMask/metamask-mobile/pull/13859)) +- feat: Multi chain send flow ([#13854](https://github.com/MetaMask/metamask-mobile/pull/13854)) +- feat: STAKE-934: added earn-controller pooled staking selectors ([#13875](https://github.com/MetaMask/metamask-mobile/pull/13875)) +- feat: STAKE-934 add earn controller to engine ([#13778](https://github.com/MetaMask/metamask-mobile/pull/13778)) +- feat: bump @metamask/notification-services-controller to 2.0.0 ([#13857](https://github.com/MetaMask/metamask-mobile/pull/13857)) +- feat: add bridge controllers to Engine ([#13750](https://github.com/MetaMask/metamask-mobile/pull/13750)) +- feat: add InlineAlert component ([#13709](https://github.com/MetaMask/metamask-mobile/pull/13709)) +- feat: add MultipleAlertModal component ([#13683](https://github.com/MetaMask/metamask-mobile/pull/13683)) +- feat: Add Snaps UI `Selector` component ([#13747](https://github.com/MetaMask/metamask-mobile/pull/13747)) +- feat: added **/**mocks**/** to sonar.coverage.exclusions ([#13787](https://github.com/MetaMask/metamask-mobile/pull/13787)) +- feat: add `GeneralAlertBanner` component ([#13627](https://github.com/MetaMask/metamask-mobile/pull/13627)) + +### Fixed + +- fix(close bug report action): target branch name has been renamed stable ([#13755](https://github.com/MetaMask/metamask-mobile/pull/13755)) +- fix(sentry sampling): reduce by 25% our sentry trace sample rate to avoid exceeding our quota ([#13745](https://github.com/MetaMask/metamask-mobile/pull/13745)) +- fix(deps): unpin ethereumjs-abi@0.6,x ethereumjs-util@6.x ([#11972](https://github.com/MetaMask/metamask-mobile/pull/11972)) +- fix: Uppercase currency code ([#13967](https://github.com/MetaMask/metamask-mobile/pull/13967)) +- fix: Max balance for dApp erc20 approval ([#13881](https://github.com/MetaMask/metamask-mobile/pull/13881)) +- fix: fix network filter on switch network from dapp ([#13987](https://github.com/MetaMask/metamask-mobile/pull/13987)) +- fix: Move the SnapExecutionService render up in the stack ([#13998](https://github.com/MetaMask/metamask-mobile/pull/13998)) +- fix: Manage order for app services initialization ([#13912](https://github.com/MetaMask/metamask-mobile/pull/13912)) +- fix: use correct updating text when toggling notifications ([#13943](https://github.com/MetaMask/metamask-mobile/pull/13943)) +- fix: cp-7.42.0 fix history transactions loading ([#13959](https://github.com/MetaMask/metamask-mobile/pull/13959)) +- fix: error when asset chain is not available in account controller state ([#13951](https://github.com/MetaMask/metamask-mobile/pull/13951)) +- fix: margin incrementally applied to icon when bottom sheet opened ([#13946](https://github.com/MetaMask/metamask-mobile/pull/13946)) +- fix: STX swap failures when needing to approve erc20 ([#13653](https://github.com/MetaMask/metamask-mobile/pull/13653)) +- fix: cp-7.42.0 Move AssetsPollingProvider down a level to persist tab label ([#13962](https://github.com/MetaMask/metamask-mobile/pull/13962)) +- fix: MMASSETS-626-new-rpc-no-confirmation ([#13883](https://github.com/MetaMask/metamask-mobile/pull/13883)) +- fix: Use proper implementation for `getUnlockPromise` ([#13947](https://github.com/MetaMask/metamask-mobile/pull/13947)) +- fix: Migration of `TransactionController` to modularised controller init ([#13817](https://github.com/MetaMask/metamask-mobile/pull/13817)) +- fix: cp-7.42.0`Tokens` screen performance degradation ([#13907](https://github.com/MetaMask/metamask-mobile/pull/13907)) +- fix: Confirm ScrollView and readd drag down and backdrop click to close ([#13913](https://github.com/MetaMask/metamask-mobile/pull/13913)) +- fix: Persist scrypt derived storage keys to Keychain/Keystore on iOS/Android ([#13899](https://github.com/MetaMask/metamask-mobile/pull/13899)) +- fix: cp-7.42.0 enable notifications UI ([#13877](https://github.com/MetaMask/metamask-mobile/pull/13877)) +- fix: main balance formatting ([#13818](https://github.com/MetaMask/metamask-mobile/pull/13818)) +- fix: cp-7.42.0 Display account label in re-designs confirmation page account info section ([#13853](https://github.com/MetaMask/metamask-mobile/pull/13853)) +- fix: add autoscroll in RPC URL form when virtual keyboard blocks content ([#13831](https://github.com/MetaMask/metamask-mobile/pull/13831)) +- fix: Missing POL percentage trend ([#13812](https://github.com/MetaMask/metamask-mobile/pull/13812)) +- fix: cp-7.42.0 Disable signature re-designs for ledger account ([#13858](https://github.com/MetaMask/metamask-mobile/pull/13858)) +- fix: prevent network selector modal from going behind IOS keyboard ([#13810](https://github.com/MetaMask/metamask-mobile/pull/13810)) +- fix: Permit Simulation vertical overflow, title padding, and collapsed message alignment ([#13830](https://github.com/MetaMask/metamask-mobile/pull/13830)) +- fix: Deal with a couple of crashes when rendering Snaps UI ([#13828](https://github.com/MetaMask/metamask-mobile/pull/13828)) +- fix: Multichain balances ([#13742](https://github.com/MetaMask/metamask-mobile/pull/13742)) +- fix: tsdoc multi rpc for non evm networks ([#13688](https://github.com/MetaMask/metamask-mobile/pull/13688)) +- fix: Improve Snaps UI spacing rules ([#13797](https://github.com/MetaMask/metamask-mobile/pull/13797)) +- fix: cp-7.42.0 improve performance of notifications loading when opening the app ([#13803](https://github.com/MetaMask/metamask-mobile/pull/13803)) +- fix: Redesign Confirmation bold font weight text ([#13706](https://github.com/MetaMask/metamask-mobile/pull/13706)) +- fix: receive network name in receive asset screen ([#13746](https://github.com/MetaMask/metamask-mobile/pull/13746)) +- fix: fix setup files ([#13799](https://github.com/MetaMask/metamask-mobile/pull/13799)) +- fix: fix balance display in account info signature request ([#13740](https://github.com/MetaMask/metamask-mobile/pull/13740)) +- fix: Remove `transactionMetrics` from persisted storage ([#13793](https://github.com/MetaMask/metamask-mobile/pull/13793)) +- fix: cp-7.42.0 push notification settings bugs ([#13772](https://github.com/MetaMask/metamask-mobile/pull/13772)) +- fix: bitrise missing signature elements following BottomModal → BottomSheet refactor ([#13783](https://github.com/MetaMask/metamask-mobile/pull/13783)) +- fix: permit simulation overflow ([#13769](https://github.com/MetaMask/metamask-mobile/pull/13769)) +- fix: Improve redesigned staking deposit confirmation navigation ([#13743](https://github.com/MetaMask/metamask-mobile/pull/13743)) +- fix: fixes ramp quote selection test ([#13756](https://github.com/MetaMask/metamask-mobile/pull/13756)) + ## [7.41.0] ### Added @@ -61,7 +164,6 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - fix: fix sort feature ([#13277](https://github.com/MetaMask/metamask-mobile/pull/13277)) - fix: metrics call during onboarding ([#13226](https://github.com/MetaMask/metamask-mobile/pull/13226)) - ## [7.40.0] ### Added @@ -73,7 +175,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#13195](https://github.com/MetaMask/metamask-mobile/pull/13195): feat: Adding date field type in typed sign data tree (#13195) - [#13135](https://github.com/MetaMask/metamask-mobile/pull/13135): feat: hide primary type displayed in collapsed message section if simulation is enabled (#13135) - [#13041](https://github.com/MetaMask/metamask-mobile/pull/13041): feat: Decoding Simulation Metrics (#13041) -- [#12627](https://github.com/MetaMask/metamask-mobile/pull/12627): feat: Enable feature Flag Values with Scope Based on ""threshold"" (#12627) +- [#12627](https://github.com/MetaMask/metamask-mobile/pull/12627): feat: Enable feature Flag Values with Scope Based on ""threshold"" (#12627) - [#13018](https://github.com/MetaMask/metamask-mobile/pull/13018): feat: add earn button to wallet actions (#13018) - [#13154](https://github.com/MetaMask/metamask-mobile/pull/13154): feat: STAKE-929 build token list item component (#13154) - [#13108](https://github.com/MetaMask/metamask-mobile/pull/13108): feat: STAKE-927 build upsell banner component (#13108) @@ -106,7 +208,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#13185](https://github.com/MetaMask/metamask-mobile/pull/13185): test: fix edit account regression test (#13185) - [#13082](https://github.com/MetaMask/metamask-mobile/pull/13082): chore: add fiat value to token and sort desc by fiat (#13082) - [#13221](https://github.com/MetaMask/metamask-mobile/pull/13221): refactor(navigation): unify dapp redirect logic to prevent premature navigation (#13221) -- [#13157](https://github.com/MetaMask/metamask-mobile/pull/13157): chore: upgrading to design tokens v5.0.0 (#13157) +- [#13157](https://github.com/MetaMask/metamask-mobile/pull/13157): chore: upgrading to design tokens v5.0.0 (#13157) ### Fixed @@ -117,7 +219,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#13218](https://github.com/MetaMask/metamask-mobile/pull/13218): fix: fix send flow on token detail page (#13218) - [#13200](https://github.com/MetaMask/metamask-mobile/pull/13200): fix: fix edit network and delete network with tokenNetworkFilter (#13… (#13200) - [#13228](https://github.com/MetaMask/metamask-mobile/pull/13228): fix: fix balance after swap (#13228) -- [#13199](https://github.com/MetaMask/metamask-mobile/pull/13199): fix: failure to convert undefined value to hex object (#13199) +- [#13199](https://github.com/MetaMask/metamask-mobile/pull/13199): fix: failure to convert undefined value to hex object (#13199) - [#13141](https://github.com/MetaMask/metamask-mobile/pull/13141): fix: fix edit network and delete network with tokenNetworkFilter (#13141) - [#13177](https://github.com/MetaMask/metamask-mobile/pull/13177): fix: token details network name (#13162) (#13177) - [#12843](https://github.com/MetaMask/metamask-mobile/pull/12843): fix: improve assets perfs + fix blurred balances and prices (#12843) @@ -149,7 +251,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#13119](https://github.com/MetaMask/metamask-mobile/pull/13119): fix: Fix Samsung freeze by reverting reanimated version and bump expo-dev-client (#13119) ## [7.39.0] + ### Added + - [#13030](https://github.com/MetaMask/metamask-mobile/pull/13030): feat: ""Unlimited"" value Decoding Simulation and account and message modal UI/UX updates (#13030) - [#12994](https://github.com/MetaMask/metamask-mobile/pull/12994): feat: Redesign Signature Decoding Simulation (#12994) - [#12606](https://github.com/MetaMask/metamask-mobile/pull/12606): feat: Create Permit Simulation (#12606) @@ -167,6 +271,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#12811](https://github.com/MetaMask/metamask-mobile/pull/12811): feat: add detected tokens automatically (#12811) ### Changed + - [#12984](https://github.com/MetaMask/metamask-mobile/pull/12984): chore: Update assets and accounts packages (#12984) - [#12822](https://github.com/MetaMask/metamask-mobile/pull/12822): chore: Improve Keyring/Accounts error handling and logs (#12822) - [#13026](https://github.com/MetaMask/metamask-mobile/pull/13026): test: Redesign Signature Decoding Simulation (#13026) @@ -193,7 +298,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#12830](https://github.com/MetaMask/metamask-mobile/pull/12830): test(3615): E2E to check the labels displaying the default account and chain (#12830) - [#12915](https://github.com/MetaMask/metamask-mobile/pull/12915): chore: remove dead code that had been added for multichain permission early in the project but not used anymore (#12915) - [#12762](https://github.com/MetaMask/metamask-mobile/pull/12762): test(3615): add ability to check if chain permission is checked (#12762) -- [#12809](https://github.com/MetaMask/metamask-mobile/pull/12809): refactor: rename multichain e2e pipeline (#12809) +- [#12809](https://github.com/MetaMask/metamask-mobile/pull/12809): refactor: rename multichain e2e pipeline (#12809) - [#12807](https://github.com/MetaMask/metamask-mobile/pull/12807): chore(tests): move multichain assets test so it runs as part of the assets bitrise workflow (#12807) - [#12791](https://github.com/MetaMask/metamask-mobile/pull/12791): chore: update js.env.example to include examples of chain permissions to true (#12791) - [#12714](https://github.com/MetaMask/metamask-mobile/pull/12714): refactor(tests): move multichain test files to a new folder structure (#12714) @@ -214,6 +319,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#12643](https://github.com/MetaMask/metamask-mobile/pull/12643): chore(ramp): upgrade sdk to 1.28.8 (#12643) ### Fixed + - [#13027](https://github.com/MetaMask/metamask-mobile/pull/13027): fix: Fix disappearing security alert response (#13027) - [#12694](https://github.com/MetaMask/metamask-mobile/pull/12694): fix: small refactoring of the latest migration script + add a new migration case (#12694) - [#12929](https://github.com/MetaMask/metamask-mobile/pull/12929): fix: Keep latest 50 history instead of first 50 (#12929) @@ -264,11 +370,15 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#12853](https://github.com/MetaMask/metamask-mobile/pull/12853): fix(12849): alert toast blocking tab navigation (#12853) ## [7.38.1] + ### Fixed + - [#13067](https://github.com/MetaMask/metamask-mobile/pull/13067)fix: remove expo changes (#13067) ## [7.38.0] + ### Added + - [#12427](https://github.com/MetaMask/metamask-mobile/pull/12427): feat: implement remote feature flag controller (#12427) - [#12507](https://github.com/MetaMask/metamask-mobile/pull/12507): feat: activate portfolio view (#12507) - [#12540](https://github.com/MetaMask/metamask-mobile/pull/12540): feat: migrate Base network RPC from https://mainnet.base.org to base-… (#12540) @@ -285,20 +395,21 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#12431](https://github.com/MetaMask/metamask-mobile/pull/12431): feat: multi chain asset list (#12431) ### Changed + - [#12623](https://github.com/MetaMask/metamask-mobile/pull/12623): chore: update bug template to include feature branches (#12623) - [#12538](https://github.com/MetaMask/metamask-mobile/pull/12538): chore: Chore/12435 mvp handle engine does not exist (#12538) - [#12617](https://github.com/MetaMask/metamask-mobile/pull/12617): docs: Update README.md with new expo instructions (#12617) - [#12559](https://github.com/MetaMask/metamask-mobile/pull/12559): test: move remaining modal pages and selectors to their respective folders (#12559) - [#12556](https://github.com/MetaMask/metamask-mobile/pull/12556): test: remove redundent tests in quarantine folder (#12556) -- [#12558](https://github.com/MetaMask/metamask-mobile/pull/12558): test: Create e2e tag for multi chain (#12558) +- [#12558](https://github.com/MetaMask/metamask-mobile/pull/12558): test: Create e2e tag for multi chain (#12558) - [#12531](https://github.com/MetaMask/metamask-mobile/pull/12531): test: Move files to Wallet folder (#12531) - [#12511](https://github.com/MetaMask/metamask-mobile/pull/12511): test: Move files to Onboarding folder (#12511) - [#12512](https://github.com/MetaMask/metamask-mobile/pull/12512): test: address regression pipeline slow down (#12512) - [#12513](https://github.com/MetaMask/metamask-mobile/pull/12513): ci: disable security e2e tests (#12513) - [#12602](https://github.com/MetaMask/metamask-mobile/pull/12602): chore: Additional e2e test to support `PortfolioView` (#12602) -- [#12321](https://github.com/MetaMask/metamask-mobile/pull/12321): refactor: remove global network from transaction controller (#12321) +- [#12321](https://github.com/MetaMask/metamask-mobile/pull/12321): refactor: remove global network from transaction controller (#12321) - [#12536](https://github.com/MetaMask/metamask-mobile/pull/12536): test: fix mock server (#12536) -- [#12288](https://github.com/MetaMask/metamask-mobile/pull/12288): test: add e2e test for security alert api (#12288) +- [#12288](https://github.com/MetaMask/metamask-mobile/pull/12288): test: add e2e test for security alert api (#12288) - [#12597](https://github.com/MetaMask/metamask-mobile/pull/12597): test(3615): additional e2e scenarios editing permissions and non permitted networks (#12597) - [#12488](https://github.com/MetaMask/metamask-mobile/pull/12488): test(3615): add new e2e test for initial dapp connection and non permitted flow (#12488) - [#12532](https://github.com/MetaMask/metamask-mobile/pull/12532): refactor: de-anonymize insensitive properties of swaps events (#12532) @@ -316,6 +427,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#12551](https://github.com/MetaMask/metamask-mobile/pull/12551): chore: Bump Snaps packages (#12551) ### Fixed + - [#12650](https://github.com/MetaMask/metamask-mobile/pull/12650): fix: fix swaps button on asset overview page for multichain feature (#12650) - [#12659](https://github.com/MetaMask/metamask-mobile/pull/12659): fix: fix token details navigation (#12659) - [#12624](https://github.com/MetaMask/metamask-mobile/pull/12624): fix: add new translations (#12624) @@ -339,18 +451,22 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#12630](https://github.com/MetaMask/metamask-mobile/pull/12630): fix: hide tokens without balance for multichain (#12630) ## [7.37.1] + ### Fixed + - [#12577](https://github.com/MetaMask/metamask-mobile/pull/12577): chore: bump {gas-fee,network,selected-network,notification-services,profile-sync,signature}-controller (#12577) - [#12694](https://github.com/MetaMask/metamask-mobile/pull/12694): fix: small refactoring of the latest migration script + add a new migration case (#12694) - [#12664](https://github.com/MetaMask/metamask-mobile/pull/12664): fix: mark transactions as failed for cancelled / unknown smart transactions (#12664) ## [7.37.0] + ### Added + - [#12091](https://github.com/MetaMask/metamask-mobile/pull/12091): feat: 2020 Add a performance test for iOS in Bitrise (#12091) - [#12148](https://github.com/MetaMask/metamask-mobile/pull/12148): feat: Enable smart transactions for new users (#12148) - [#12442](https://github.com/MetaMask/metamask-mobile/pull/12442): test: add a new unit test to cover for multichain feature flags ON (#12442) - [#12420](https://github.com/MetaMask/metamask-mobile/pull/12420): feat(3598): non permitted chain flow small improvements (#12420) -- [#12198](https://github.com/MetaMask/metamask-mobile/pull/12198): feat: custom names for snap accounts (Flask only) (#12198) +- [#12198](https://github.com/MetaMask/metamask-mobile/pull/12198): feat: custom names for snap accounts (Flask only) (#12198) - [#12396](https://github.com/MetaMask/metamask-mobile/pull/12396): feat(ramp): enable buy button in asset overview (#12396) - [#11613](https://github.com/MetaMask/metamask-mobile/pull/11613): feat(ramp): improve amount editing formatting (#11613) - [#12393](https://github.com/MetaMask/metamask-mobile/pull/12393): feat: Creating data tree for signed type V1 signatures (#12393) @@ -366,6 +482,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#12452](https://github.com/MetaMask/metamask-mobile/pull/12452): feat: updated staking events to use withMetaMetrics helper (#12337) (#12452) ### Changed + - [#12356](https://github.com/MetaMask/metamask-mobile/pull/12356): chore: Remove unnecessary event prop (#12356) - [#12425](https://github.com/MetaMask/metamask-mobile/pull/12425): ci: create ci workflow for multichain flow (#12425) - [#12350](https://github.com/MetaMask/metamask-mobile/pull/12350): chore: Bump Snaps packages (#12350) @@ -380,15 +497,16 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#12238](https://github.com/MetaMask/metamask-mobile/pull/12238): chore: update codeowners (#12238) - [#12416](https://github.com/MetaMask/metamask-mobile/pull/12416): chore: Chore/update accounts controller messenger code owner (#12416) - [#12366](https://github.com/MetaMask/metamask-mobile/pull/12366): chore: #12184 MVP split engine file (#12366) -- [#12362](https://github.com/MetaMask/metamask-mobile/pull/12362): chore: Unit tests for tags approval controller undefined (#12362) +- [#12362](https://github.com/MetaMask/metamask-mobile/pull/12362): chore: Unit tests for tags approval controller undefined (#12362) - [#12332](https://github.com/MetaMask/metamask-mobile/pull/12332): chore: do not show staked eth balance when balance is zero on homepage or asset detail (#12332) - [#12413](https://github.com/MetaMask/metamask-mobile/pull/12413): chore: simplify cicd rls script (#12413) - [#12334](https://github.com/MetaMask/metamask-mobile/pull/12334): chore: updating filter icon (#12334) ### Fixed + - [#12313](https://github.com/MetaMask/metamask-mobile/pull/12313): fix: Remove run all tests section (#12313) - [#12489](https://github.com/MetaMask/metamask-mobile/pull/12489): fix: replace end of navigation init and UIStartup span (#12489) -- [#12331](https://github.com/MetaMask/metamask-mobile/pull/12331): fix: tags pending approvals receiving undefined (#12331) +- [#12331](https://github.com/MetaMask/metamask-mobile/pull/12331): fix: tags pending approvals receiving undefined (#12331) - [#10486](https://github.com/MetaMask/metamask-mobile/pull/10486): fix: limit ReactNativeWebview message size (#10486) - [#12478](https://github.com/MetaMask/metamask-mobile/pull/12478): fix: incorrect event source in analytics and connection (#12478) - [#10786](https://github.com/MetaMask/metamask-mobile/pull/10786): fix: added icon to walletconnect metadata (#10786) @@ -405,7 +523,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#12375](https://github.com/MetaMask/metamask-mobile/pull/12375): fix: breaking selector due to missing controller state (#12375) ## [7.36.0] + ### Added + - [#12015](https://github.com/MetaMask/metamask-mobile/pull/12015): feat: 1957 crash screen redesign (#12015) - [#12110](https://github.com/MetaMask/metamask-mobile/pull/12110): feat: display staking transaction methods (#12110) - [#12290](https://github.com/MetaMask/metamask-mobile/pull/12290): feat: STAKE-827: track additional pooled staking events (#12290) @@ -428,6 +548,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#11836](https://github.com/MetaMask/metamask-mobile/pull/11836): feat: upgrade @metamask/eth-ledger-bridge-keyring (#11836) ### Changed + - [#11898](https://github.com/MetaMask/metamask-mobile/pull/11898): chore: New Crowdin translations by Github Action (#11898) - [#12292](https://github.com/MetaMask/metamask-mobile/pull/12292): chore: Allow for higher versions of ruby (#12292) - [#12291](https://github.com/MetaMask/metamask-mobile/pull/12291): chore: Remove notifications logic from wallet view (#12276) (#12291) @@ -452,6 +573,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#12225](https://github.com/MetaMask/metamask-mobile/pull/12225): chore: bump `@metamask/ppom-validator` to `0.35.1` (#12225) ### Fixed + - [#12166](https://github.com/MetaMask/metamask-mobile/pull/12166): fix: remove SmokeNotifications tests for android on smoke tests pipeline (#12166) - [#12217](https://github.com/MetaMask/metamask-mobile/pull/12217): fix: e2e: use different wallet SRP for non accounts tests (#12217) - [#12197](https://github.com/MetaMask/metamask-mobile/pull/12197): fix: E2E: quarantine import-wallet-account tests (#12197) @@ -472,15 +594,19 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#12282](https://github.com/MetaMask/metamask-mobile/pull/12282): fix: Lock ruby version to 3.1.6 and bump pod to 1.16.2 (#12282) ## [7.35.1] + ### Fixed + - [#12331](https://github.com/MetaMask/metamask-mobile/pull/12331): fix: tags pending approvals receiving undefined (#12331) ## [7.35.0] + ### Added + - [#12107](https://github.com/MetaMask/metamask-mobile/pull/12107): feat: Add re-simulation feature (#12107) - [#11770](https://github.com/MetaMask/metamask-mobile/pull/11770): feat: enable Security Alerts API (#11770) - [#11812](https://github.com/MetaMask/metamask-mobile/pull/11812): feat: network value component for re-designed confirmation pages (#11812) -- [#11608](https://github.com/MetaMask/metamask-mobile/pull/11608): feat: enable sentry performance reporting on local development builds (#11608) +- [#11608](https://github.com/MetaMask/metamask-mobile/pull/11608): feat: enable sentry performance reporting on local development builds (#11608) - [#11190](https://github.com/MetaMask/metamask-mobile/pull/11190): feat(NOTIFY-1096): add account syncing (#11190) - [#12138](https://github.com/MetaMask/metamask-mobile/pull/12138): feat: update staking eligibility and unstaking time details (#12138) - [#12084](https://github.com/MetaMask/metamask-mobile/pull/12084): feat: enable mobile native pooled staking experience for users (#12084) @@ -490,7 +616,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#11611](https://github.com/MetaMask/metamask-mobile/pull/11611): feat: STAKE-841 build unstake review confirmation screen (#11611) - [#11891](https://github.com/MetaMask/metamask-mobile/pull/11891): feat: add live staking data with geo-blocking support (#11891) - [#11845](https://github.com/MetaMask/metamask-mobile/pull/11845): feat: STAKE-805 integrate stake method (#11845) -- [#11668](https://github.com/MetaMask/metamask-mobile/pull/11668): feat: Add StakeSdkProvider with stake-sdk (#11668) +- [#11668](https://github.com/MetaMask/metamask-mobile/pull/11668): feat: Add StakeSdkProvider with stake-sdk (#11668) - [#11963](https://github.com/MetaMask/metamask-mobile/pull/11963): feat(2808): edit network permissions (#11963) - [#12060](https://github.com/MetaMask/metamask-mobile/pull/12060): feat: add favorites to browser menu (#12060) - [#11965](https://github.com/MetaMask/metamask-mobile/pull/11965): feat(3417): sensitive text component (#11965) @@ -503,6 +629,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#11451](https://github.com/MetaMask/metamask-mobile/pull/11451): feat: Remove Account Snap Warning (Flask) (#11451) ### Changed + - [#11911](https://github.com/MetaMask/metamask-mobile/pull/11911): chore: upgrade signature controller to remove message managers (#11911) - [#12150](https://github.com/MetaMask/metamask-mobile/pull/12150): chore: upgrade nodejs to v20.17 (#12150) - [#12135](https://github.com/MetaMask/metamask-mobile/pull/12135): test: Move files to Settings folder (#12135) @@ -549,8 +676,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#11983](https://github.com/MetaMask/metamask-mobile/pull/11983): test: Refactor EditAccountNameView.js & EnableSecurityChecksView.js files to follow page object model (#11983) ### Fixed + - [#11768](https://github.com/MetaMask/metamask-mobile/pull/11768): fix: fix non regression tests (#11768) -- [#11947](https://github.com/MetaMask/metamask-mobile/pull/11947): fix: Fiat value displayed only for the native token in simulations (#11947) +- [#11947](https://github.com/MetaMask/metamask-mobile/pull/11947): fix: Fiat value displayed only for the native token in simulations (#11947) - [#12126](https://github.com/MetaMask/metamask-mobile/pull/12126): fix: Reuse main logic for migration52 (#12126) - [#12125](https://github.com/MetaMask/metamask-mobile/pull/12125): fix: revert the nvm update (#12125) - [#12112](https://github.com/MetaMask/metamask-mobile/pull/12112): fix: Update TransactionProtectionModal import (#12112) @@ -583,13 +711,17 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#11769](https://github.com/MetaMask/metamask-mobile/pull/11769): fix: Fix the mobile crash due to ledger bluetooth relative exception (#11769) ## [7.34.1] + ### Fixed + - [#12205](https://github.com/MetaMask/metamask-mobile/pull/12205): fix: add contractBalances as dependency - [#12236](https://github.com/MetaMask/metamask-mobile/pull/12236): fix: Add migration to fix NotificationServicesController bug (#12236) - [#12228](https://github.com/MetaMask/metamask-mobile/pull/12228): fix: Update transaction-controller version ## [7.34.0] + ### Added + - [#11578](https://github.com/MetaMask/metamask-mobile/pull/11578): feat: 1653 first feature flag poc (#11578) - [#11705](https://github.com/MetaMask/metamask-mobile/pull/11705): feat: Transition from Multiple Networks with Same ChainID to Unique Networks with Distinct ChainIDs and Multiple RPC URLs (#11705) - [#11685](https://github.com/MetaMask/metamask-mobile/pull/11685): feat: multi rpc modal (#11685) @@ -614,6 +746,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#11127](https://github.com/MetaMask/metamask-mobile/pull/11127): feat(1702): enhanced onboarding settings config (#11127) ### Changed + - [#11852](https://github.com/MetaMask/metamask-mobile/pull/11852): chore: readd date time picker (#11852) - [#11831](https://github.com/MetaMask/metamask-mobile/pull/11831): chore: Add conditional for api specification test (#11831) - [#11838](https://github.com/MetaMask/metamask-mobile/pull/11838): chore: revert tags commit (#11838) @@ -650,11 +783,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#11525](https://github.com/MetaMask/metamask-mobile/pull/11525): chore(js-ts): Convert app/components/UI/StyledButton/styledButtonStyles.js to TypeScript (#11525) - [#11385](https://github.com/MetaMask/metamask-mobile/pull/11385): refactor(1702-5): incoming transactions and network details settings into reusable components (#11385) - [#11381](https://github.com/MetaMask/metamask-mobile/pull/11381): refactor(1702-4): ipfs gateway settings and display nft media settings components (#11381) -- [#11614](https://github.com/MetaMask/metamask-mobile/pull/11614): chore: Update UX CodeOwners responsibilities (#11614) +- [#11614](https://github.com/MetaMask/metamask-mobile/pull/11614): chore: Update UX CodeOwners responsibilities (#11614) - [#11709](https://github.com/MetaMask/metamask-mobile/pull/11709): chore: updating codeowners to remove mobile-devs from component library (#11709) - [#11617](https://github.com/MetaMask/metamask-mobile/pull/11617): chore: chore/7.33.0-Changelog (#11617) ### Fixed + - [#11787](https://github.com/MetaMask/metamask-mobile/pull/11787): fix: non deterministic date in test (#11787) - [#11762](https://github.com/MetaMask/metamask-mobile/pull/11762): fix: snapshot of test to enable ci (#11762) - [#11632](https://github.com/MetaMask/metamask-mobile/pull/11632): fix: add custom and add popular network detox test (#11632) @@ -674,7 +808,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#11603](https://github.com/MetaMask/metamask-mobile/pull/11603): fix: await for detect origin before logging analytics (#11603) - [#11595](https://github.com/MetaMask/metamask-mobile/pull/11595): fix: fix signature requested analytics (#11595) - [#11592](https://github.com/MetaMask/metamask-mobile/pull/11592): fix: fix walletconnect source validation (#11592) -- [#11802](https://github.com/MetaMask/metamask-mobile/pull/11802): fix: persist token and phishing list (#11802) +- [#11802](https://github.com/MetaMask/metamask-mobile/pull/11802): fix: persist token and phishing list (#11802) - [#11729](https://github.com/MetaMask/metamask-mobile/pull/11729): fix: support for batch of signature requests (#11729) - [#11771](https://github.com/MetaMask/metamask-mobile/pull/11771): fix: Add `preferContractSymbol` to Name components (#11771) - [#11730](https://github.com/MetaMask/metamask-mobile/pull/11730): fix: Use domain for origin pill component (#11730) @@ -684,15 +818,21 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#11431](https://github.com/MetaMask/metamask-mobile/pull/11431): fix: refactor notifications unit tests (#11431) ## [7.33.2] + ### Fixed + - [#10952](https://github.com/MetaMask/metamask-mobile/pull/10952): refactor(ramp): update ramp copy (#10952) ## [7.33.1] + ### Fixed + - [#12073](https://github.com/MetaMask/metamask-mobile/pull/12073): feat: Simulation re-trigger (#12073) ## [7.33.0] + ### Added + - [#11507](https://github.com/MetaMask/metamask-mobile/pull/11507): feat: 10550 Re-introduce test for measuring cold app start + JS bundle load time (#11507) - [#11318](https://github.com/MetaMask/metamask-mobile/pull/11318): feat: app event manager and attribution id parameters (#11318) - [#11445](https://github.com/MetaMask/metamask-mobile/pull/11445): feat: add the abilty to hide the disconnect all button as well as showing and hiding the accounts row when necessary (#11445) @@ -718,6 +858,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#11069](https://github.com/MetaMask/metamask-mobile/pull/11069): feat: react native fast crypto for notifications (#11069) ### Changed + - [#11379](https://github.com/MetaMask/metamask-mobile/pull/11379): refactor: rename the feature flag since it had a typo (#11379) - [#11615](https://github.com/MetaMask/metamask-mobile/pull/11615): chore: exclude temporarily sentry SDK advisory (#11615) - [#11577](https://github.com/MetaMask/metamask-mobile/pull/11577): ci: disable swaps e2e workflow (#11577) @@ -773,6 +914,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#11352](https://github.com/MetaMask/metamask-mobile/pull/11352): chore(deps): Bump `@metamask/accounts-controller` to `^18.2.1` ### Fixed + - [#11512](https://github.com/MetaMask/metamask-mobile/pull/11512): fix: android firebase docs template (#11512) - [#11430](https://github.com/MetaMask/metamask-mobile/pull/11430): fix: refactor Logger usage (#11430) - [#11250](https://github.com/MetaMask/metamask-mobile/pull/11250): fix: push notifications (#11250) @@ -780,7 +922,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#11467](https://github.com/MetaMask/metamask-mobile/pull/11467): fix: Reorder prep_environment (#11467) - [#11367](https://github.com/MetaMask/metamask-mobile/pull/11367): fix: Update steps of the methods that are no longer valid (#11367) - [#11400](https://github.com/MetaMask/metamask-mobile/pull/11400): fix: Stop crowdin action from creating branches (#11400) -- [#11348](https://github.com/MetaMask/metamask-mobile/pull/11348): fix: splash screen image on android (#11348) +- [#11348](https://github.com/MetaMask/metamask-mobile/pull/11348): fix: splash screen image on android (#11348) - [#11346](https://github.com/MetaMask/metamask-mobile/pull/11346): fix: splash screen image on android (#11346) - [#11554](https://github.com/MetaMask/metamask-mobile/pull/11554): fix: Fix/use portfolio home page (#11554) - [#11443](https://github.com/MetaMask/metamask-mobile/pull/11443): fix: react native quick crypto ios build bug (#11443) @@ -796,7 +938,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#11518](https://github.com/MetaMask/metamask-mobile/pull/11518): fix(11482): incorrect QR code error (#11518) ## [7.32.0] + ### Added + - [#10294](https://github.com/MetaMask/metamask-mobile/pull/10294): feat: create redux slice for featureFlags (#10294) - [#11314](https://github.com/MetaMask/metamask-mobile/pull/11314): feat: reject connection properly (#11314) - [#11132](https://github.com/MetaMask/metamask-mobile/pull/11132): feat: Add performance tracing infrastructure (#11132) @@ -813,7 +957,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#11175](https://github.com/MetaMask/metamask-mobile/pull/11175): feat: add product announcements toggle (#11175) ### Changed -- [#11148](https://github.com/MetaMask/metamask-mobile/pull/11148): chore: remove animation and add new splash screen (#11148) + +- [#11148](https://github.com/MetaMask/metamask-mobile/pull/11148): chore: remove animation and add new splash screen (#11148) - [#11306](https://github.com/MetaMask/metamask-mobile/pull/11306): chore: update @sentry/react-native to version 5.33.0 (#11306) - [#11144](https://github.com/MetaMask/metamask-mobile/pull/11144): test: E2E Mocking Setup For Detox Tests (#11144) - [#11212](https://github.com/MetaMask/metamask-mobile/pull/11212): chore: Update CI workflow triggers to support release branches (#11212) @@ -839,13 +984,14 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#11235](https://github.com/MetaMask/metamask-mobile/pull/11235): ci: avoid running release pipeline on every commit to the release branch (#11235) - [#11094](https://github.com/MetaMask/metamask-mobile/pull/11094): chore: chore/7.31.0-Changelog (#11094) - [#10788](https://github.com/MetaMask/metamask-mobile/pull/10788): chore: Add `@metamask/selected-network-controller` & integrate (#10788) -- [#11122](https://github.com/MetaMask/metamask-mobile/pull/11122): test: e2e for auto-lock (#11122) +- [#11122](https://github.com/MetaMask/metamask-mobile/pull/11122): test: e2e for auto-lock (#11122) - [#11143](https://github.com/MetaMask/metamask-mobile/pull/11143): chore: bump react native webview to 14.0.3 version (#11143) - [#11284](https://github.com/MetaMask/metamask-mobile/pull/11284): chore: add notifications state awareness inapp badge (#11284) - [#11082](https://github.com/MetaMask/metamask-mobile/pull/11082): chore: bump network controller 20.0.0 (#11082) - [#10821](https://github.com/MetaMask/metamask-mobile/pull/10821): chore(deps): bump `accounts-controller` to v18.1.0 and `keyring-api` to v8.1.0 (#10821) ### Fixed + - [#11117](https://github.com/MetaMask/metamask-mobile/pull/11117): fix: add feat flag (#11117) - [#11084](https://github.com/MetaMask/metamask-mobile/pull/11084): fix: locks api spec version for api spec tests (#11084) - [#11310](https://github.com/MetaMask/metamask-mobile/pull/11310): fix: quick fix on feature flag & notification state (#11310) @@ -878,11 +1024,15 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#11098](https://github.com/MetaMask/metamask-mobile/pull/11098): fix: badge count and ui polishing (#11098) ## [7.31.1] + ### Fixed + - [#11631](https://github.com/MetaMask/metamask-mobile/pull/11631): fix: Fixes UI issue in token details (#11631) ## [7.31.0] + ### Added + - [#10747](https://github.com/MetaMask/metamask-mobile/pull/10747): feat: 2805 grant permission to network with missmatching rpc url (#10747) - [#10715](https://github.com/MetaMask/metamask-mobile/pull/10715): feat: 2795 disconnect all account permission multichain edit account screen (#10715) - [#10347](https://github.com/MetaMask/metamask-mobile/pull/10347): feat: refactor WalletConnect v2 and add unit tests (#10347) @@ -890,11 +1040,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#10562](https://github.com/MetaMask/metamask-mobile/pull/10562): feat: New token detail view (#10562) - [#10876](https://github.com/MetaMask/metamask-mobile/pull/10876): feat: js bundle size ci gate (#10876) - [#10847](https://github.com/MetaMask/metamask-mobile/pull/10847): feat: add pooled staking feature flag (#10847) -- [#2796](https://github.com/MetaMask/metamask-mobile/pull/2796): feat(2796): permission settings for multichain +- [#2796](https://github.com/MetaMask/metamask-mobile/pull/2796): feat(2796): permission settings for multichain - [#10727](https://github.com/MetaMask/metamask-mobile/pull/10727): feat: add ledger live deviation path support (#10727) - ### Changed + - [#10749](https://github.com/MetaMask/metamask-mobile/pull/10749): chore(deps): bump rexml from 3.3.3 to 3.3.6 in the bundler group across 1 directory (#10749) - [#10794](https://github.com/MetaMask/metamask-mobile/pull/10794): Release-update-BS-URL (#10794) - [#11088](https://github.com/MetaMask/metamask-mobile/pull/11088): chore: add new track events for enabling/disabling basic functionality (#11088) @@ -930,7 +1080,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#10325](https://github.com/MetaMask/metamask-mobile/pull/10325): chore: updated avatargroup to take in all avatars (#10325) - [#10616](https://github.com/MetaMask/metamask-mobile/pull/10616): chore: upgrade network controller to version 19.0.0 (#10616) - [#11001](https://github.com/MetaMask/metamask-mobile/pull/11001): test: Fix swap smoke tests (#11001) -- [#10953](https://github.com/MetaMask/metamask-mobile/pull/10953): test: replaced TestHelpers function call with equivalent from Assertions (#10953) +- [#10953](https://github.com/MetaMask/metamask-mobile/pull/10953): test: replaced TestHelpers function call with equivalent from Assertions (#10953) - [#10897](https://github.com/MetaMask/metamask-mobile/pull/10897): test: Fix Swap e2e test failure (#10897) - [#10874](https://github.com/MetaMask/metamask-mobile/pull/10874): chore: add new `keyring-snaps` code fence (#10874) - [#10913](https://github.com/MetaMask/metamask-mobile/pull/10913): test: e2e srp reveal regression update (#10913) @@ -940,6 +1090,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#10714](https://github.com/MetaMask/metamask-mobile/pull/10714): test: Refactor AccountListView Page object (#10714) ### Fixed + - [#10518](https://github.com/MetaMask/metamask-mobile/pull/10518): fix: refactor blockaid utils sync functions to async (#10518) - [#11020](https://github.com/MetaMask/metamask-mobile/pull/11020): fix: Fix broken unit test in `Sendflow` tests (#11020) - [#10385](https://github.com/MetaMask/metamask-mobile/pull/10385): fix: no insufficient funds warning (#10385) @@ -981,7 +1132,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#10792](https://github.com/MetaMask/metamask-mobile/pull/10792): fix: refactor notifications utils (#10792) ## [7.30.0] + ### Added + - [#10748](https://github.com/MetaMask/metamask-mobile/pull/10748): feat: Add yarn flipper script (#10748) - [#10739](https://github.com/MetaMask/metamask-mobile/pull/10739): feat: Feat/add redux debugger (#10739) - [#10589](https://github.com/MetaMask/metamask-mobile/pull/10589): feat: Feat/10521 react-native-performance mvp for measuring app start + JS bundle load times (#10589) @@ -997,6 +1150,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#9950](https://github.com/MetaMask/metamask-mobile/pull/9950): feat: QR-based add NGRAVE ZERO Hardware (#9950) ### Changed + - [#10746](https://github.com/MetaMask/metamask-mobile/pull/10746): chore: fix another batch of TS errors (#10746) - [#10735](https://github.com/MetaMask/metamask-mobile/pull/10735): chore: Add E2E folders to sonar exclusion list (#10735) - [#10697](https://github.com/MetaMask/metamask-mobile/pull/10697): chore: Add more typescript fixes (#10697) @@ -1052,6 +1206,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#10539](https://github.com/MetaMask/metamask-mobile/pull/10539): chore: enhance Source Detection Logic in Analytics Parameters (#10539) ### Fixed + - [#10649](https://github.com/MetaMask/metamask-mobile/pull/10649): fix: Update test dapp favorite selector (#10649) - [#10641](https://github.com/MetaMask/metamask-mobile/pull/10641): fix: Add missing pod lock changes (#10641) - [#10613](https://github.com/MetaMask/metamask-mobile/pull/10613): fix: useBlockExplorer hook (#10613) @@ -1077,16 +1232,22 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#10693](https://github.com/MetaMask/metamask-mobile/pull/10693): fix: notification second round fixes (#10693) ## [7.29.2] + ### Fixed + - [#10965](https://github.com/MetaMask/metamask-mobile/pull/10965): fix: gas never loading during send + high gas fee after deep link (#10965) - [#11005](https://github.com/MetaMask/metamask-mobile/pull/11005): fix: Add missing allowedAction NetworkController:findNetworkClientIdByChainId to transactionController (#11005) ## [7.29.1] + ### Fixed + - [#10831](https://github.com/MetaMask/metamask-mobile/pull/10831): feat: Update Polygon from MATIC to POL (#10831) ## [7.29.0] + ### Added + - [#9578](https://github.com/MetaMask/metamask-mobile/pull/9578): feat: type `renderHookWithProvider` (#9578) - [#10277](https://github.com/MetaMask/metamask-mobile/pull/10277): feat: New nft details page (#10277) - [#9469](https://github.com/MetaMask/metamask-mobile/pull/9469): feat: nft + swap metrics (#9469) @@ -1102,8 +1263,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#10363](https://github.com/MetaMask/metamask-mobile/pull/10363): feat: add notifications UI components to be used by Views (#10363) ### Changed + - [#10531](https://github.com/MetaMask/metamask-mobile/pull/10531): chore: fix release action (#10531) -- [#10471](https://github.com/MetaMask/metamask-mobile/pull/10471): chore: Typescript type coverage util lib folders (#10471) +- [#10471](https://github.com/MetaMask/metamask-mobile/pull/10471): chore: Typescript type coverage util lib folders (#10471) - [#10507](https://github.com/MetaMask/metamask-mobile/pull/10507): chore: core related files selectors refactor (#10507) - [#10508](https://github.com/MetaMask/metamask-mobile/pull/10508): chore: abort on fail smoke e2e pipeline (#10508) - [#10417](https://github.com/MetaMask/metamask-mobile/pull/10417): chore: Dapp protocol qr code scanning (#10417) @@ -1131,6 +1293,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#9589](https://github.com/MetaMask/metamask-mobile/pull/9589): test(ramp): add `useApplePay` tests (#9589) ### Fixed + - [#9744](https://github.com/MetaMask/metamask-mobile/pull/9744): fix: fix/9350 Use consistent commit hash on Bitrise e2e smoke tests (#9744) - [#10511](https://github.com/MetaMask/metamask-mobile/pull/10511): fix: crash on reload fix by patch (#10511) - [#10481](https://github.com/MetaMask/metamask-mobile/pull/10481): fix: Added parse errors to be caught on vault corruption flow (#10481) @@ -1149,12 +1312,16 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#10303](https://github.com/MetaMask/metamask-mobile/pull/10303): fix: page navigation during QR accounts selection (#10303) ## [7.28.1] + ### Fixed + - [#10637](https://github.com/MetaMask/metamask-mobile/pull/10637): fix: swap button blocked by SwapsController polling issue (#10637) - [#10654](https://github.com/MetaMask/metamask-mobile/pull/10654): fix: hot fix for ledger account select screen to provide disclaimer copy information. (#10654) ## [7.28.0] + ### Added + - [#10252](https://github.com/MetaMask/metamask-mobile/pull/10252): feat: regression label (#10252) - [#10214](https://github.com/MetaMask/metamask-mobile/pull/10214): feat: Partially local WebView for Snaps (#10214) - [#10103](https://github.com/MetaMask/metamask-mobile/pull/10103): feat: update walletconnect se-sdk (#10103) @@ -1164,10 +1331,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#10109](https://github.com/MetaMask/metamask-mobile/pull/10109): feat: multiple accounts support in ledger (#10109) ### Changed + - [#10278](https://github.com/MetaMask/metamask-mobile/pull/10278): chore: disable snaps feat from main temporarily (#10278) - [#10329](https://github.com/MetaMask/metamask-mobile/pull/10329): test: Disable bitrise slack notification step (#10329) - [#10172](https://github.com/MetaMask/metamask-mobile/pull/10172): chore: changelog release automation (#10172) -- [#10282](https://github.com/MetaMask/metamask-mobile/pull/10282): chore: update Android SDK to API Level 34 (#10282) +- [#10282](https://github.com/MetaMask/metamask-mobile/pull/10282): chore: update Android SDK to API Level 34 (#10282) - [#10241](https://github.com/MetaMask/metamask-mobile/pull/10241): chore: add Sentry snapshot with masked data (#10241) - [#10289](https://github.com/MetaMask/metamask-mobile/pull/10289): chore: Download state logs on login screen (#10289) - [#10291](https://github.com/MetaMask/metamask-mobile/pull/10291): chore: Update webview to v 14.0.2 (#10291) @@ -1187,6 +1355,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#10274](https://github.com/MetaMask/metamask-mobile/pull/10274): chore: New Crowdin translations by Github Action (#10274) ### Fixed + - [#10308](https://github.com/MetaMask/metamask-mobile/pull/10308): fix: correctly get current PR number in bitrise e2e workflow (#10308) - [#10232](https://github.com/MetaMask/metamask-mobile/pull/10232): fix: fixes missing analytics data for non-web dapps that don't have a url (no… (#10232) - [#10264](https://github.com/MetaMask/metamask-mobile/pull/10264): fix: skip blockaid validations for users internal accounts (#10264) @@ -1194,11 +1363,15 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#10279](https://github.com/MetaMask/metamask-mobile/pull/10279): fix: use ACTIONS_WRITE_TOKEN in attributions workflow (#10279) ## [7.27.1] + ### Fixed + - [#10438](https://github.com/MetaMask/metamask-mobile/pull/10438): cherry-pick: update @blockaid/ppom_release package to version 1.5.1 (#10435) #10438 ## [7.27.0] + ### Added + - [#7759](https://github.com/MetaMask/metamask-mobile/pull/7759): feat: upgrade react-native-webview (#7759) - [#10000](https://github.com/MetaMask/metamask-mobile/pull/10000): feat: support security alerts API (#10000) - [#10039](https://github.com/MetaMask/metamask-mobile/pull/10039): feat: enable transaction simulations (#10039) @@ -1210,11 +1383,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#10121](https://github.com/MetaMask/metamask-mobile/pull/10121): feat: enables snaps feature flag on mobile (#10121) - [#10040](https://github.com/MetaMask/metamask-mobile/pull/10040): feat: edit networks UI redesign (#10040) - [#10120](https://github.com/MetaMask/metamask-mobile/pull/10120): feat: add i18n to for the add/edit network ui re-design (#10120) -- [#9961](https://github.com/MetaMask/metamask-mobile/pull/9961): feat: adding search to the network bottomsheet as part of the networks management UI redesign (#9961) +- [#9961](https://github.com/MetaMask/metamask-mobile/pull/9961): feat: adding search to the network bottomsheet as part of the networks management UI redesign (#9961) - [#10112](https://github.com/MetaMask/metamask-mobile/pull/10112): feat: Add the ""is_smart_transaction"" prop for the ""Swap Started"" event (#10112) - [#10086](https://github.com/MetaMask/metamask-mobile/pull/10086): feat: Add team label to pr (#10086) ### Changed + - [#10153](https://github.com/MetaMask/metamask-mobile/pull/10153): chore: Migrate AsyncStorage to mmkv (#10153) - [#10071](https://github.com/MetaMask/metamask-mobile/pull/10071): chore: New Crowdin translations by Github Action (#10071) - [#9441](https://github.com/MetaMask/metamask-mobile/pull/9441): chore: Convert initial background state to typed background state (#9441) @@ -1240,6 +1414,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#10063](https://github.com/MetaMask/metamask-mobile/pull/10063): chore: Refactor Snaps integration (#10063) ### Fixed + - [#10168](https://github.com/MetaMask/metamask-mobile/pull/10168): fix: convert Sentry messages to log (#10168) - [#9918](https://github.com/MetaMask/metamask-mobile/pull/9918): fix: hide amount in simulations for testnets if its opt out (#9918) - [#10164](https://github.com/MetaMask/metamask-mobile/pull/10164): fix: Stop running fencing logic on `node_modules` (#10164) @@ -1266,11 +1441,15 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#10064](https://github.com/MetaMask/metamask-mobile/pull/10064): fix: Always mark the STX Opt In modal as seen (#10064) ## [7.26.1] + ### Fixed + - [#9724](https://github.com/MetaMask/metamask-mobile/pull/9724): feat: remove selectIdentities in favour of selectInternalAccounts ## [7.26.0] + ### Added + - [#9937](https://github.com/MetaMask/metamask-mobile/pull/9937): feat: modification of the network bottom sheet to use the new UI redesign by adding the popular network section as additional network (#9937) - [#9856](https://github.com/MetaMask/metamask-mobile/pull/9856): feat: new attribution github workflow (#9856) - [#9768](https://github.com/MetaMask/metamask-mobile/pull/9768): feat: add MetaMetrics delete on Wallet delete (#9768) @@ -1290,6 +1469,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#9473](https://github.com/MetaMask/metamask-mobile/pull/9473): feat: notifications details screen (#9473) ### Changed + - [#9884](https://github.com/MetaMask/metamask-mobile/pull/9884): chore(pr template + readme): add link to contributor docs (#9884) - [#9863](https://github.com/MetaMask/metamask-mobile/pull/9863): chore: Revert ""fix: swaps quote nan to bnjs (#9848)"" (#9863) - [#9915](https://github.com/MetaMask/metamask-mobile/pull/9915): test: 1454 refactor modal pages batch 4 (#9915) @@ -1328,6 +1508,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#9234](https://github.com/MetaMask/metamask-mobile/pull/9234): chore: update the 'CODEOWNERS' file to include directories relevant to the 'sdk-devs' team (#9234) ### Fixed + - [#9903](https://github.com/MetaMask/metamask-mobile/pull/9903): fix: upgrade test failure fix for 7.24.0 release branch (#9903) - [#9844](https://github.com/MetaMask/metamask-mobile/pull/9844): fix: confirmations failing ci tests (#9844) - [#9831](https://github.com/MetaMask/metamask-mobile/pull/9831): fix: Fix audit ci (#9831) @@ -1352,7 +1533,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#9934](https://github.com/MetaMask/metamask-mobile/pull/9934): fix: flakey CI asdf node version (#9934) - [#9584](https://github.com/MetaMask/metamask-mobile/pull/9584): fix: @metamask/swaps-controller v6 -> v9 (#9584) - [#9867](https://github.com/MetaMask/metamask-mobile/pull/9867): fix: only remove SES from exception if exception exists (#9867) -- [#9870](https://github.com/MetaMask/metamask-mobile/pull/9870): fix: yarn deduplicate release/7.24.0 to fix dupe in #9864 (#9870) +- [#9870](https://github.com/MetaMask/metamask-mobile/pull/9870): fix: yarn deduplicate release/7.24.0 to fix dupe in #9864 (#9870) - [#9842](https://github.com/MetaMask/metamask-mobile/pull/9842): fix: error validating wallet connect signature with security provider (#9842) - [#9999](https://github.com/MetaMask/metamask-mobile/pull/9999): fix: new locales (#9999) - [#9826](https://github.com/MetaMask/metamask-mobile/pull/9826): fix: add migration for linea goerli (#9826) @@ -1361,39 +1542,50 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#9746](https://github.com/MetaMask/metamask-mobile/pull/9746): fix: render images of networks removed from popularNetwork list (#9746) - [#9970](https://github.com/MetaMask/metamask-mobile/pull/9970): fix: error 'Invalid character in NaN' while gas editing (#9970) - [#9902](https://github.com/MetaMask/metamask-mobile/pull/9902): fix: Update PPOM controller to fix handling of HTTP status codes (#9902) -- [#9943](https://github.com/MetaMask/metamask-mobile/pull/9943): fix: Duplicate accounts (#9943) +- [#9943](https://github.com/MetaMask/metamask-mobile/pull/9943): fix: Duplicate accounts (#9943) - [#9974](https://github.com/MetaMask/metamask-mobile/pull/9974): fix(ramp): memoize asset before passing it to balance hook (#9968) (#9974) - [#9882](https://github.com/MetaMask/metamask-mobile/pull/9882): fix: edit account name screen display incorrect account name (#9882) - [#9891](https://github.com/MetaMask/metamask-mobile/pull/9891): fix: bug report template - remove reference to recordit (#9891) - [#9755](https://github.com/MetaMask/metamask-mobile/pull/9755): fix: display the DApp URL in connect screen for MetaMask IOS-SDK (#9755) ## [7.24.4] + ### Fixed + - [10064](https://github.com/MetaMask/metamask-mobile/pull/10064) fix: Always mark the STX Opt In modal as seen - [10088](https://github.com/MetaMask/metamask-mobile/pull/10088) fix: Swap with unapproved token - [10099](https://github.com/MetaMask/metamask-mobile/pull/10099) fix: stx on ramps missing origin ## [7.24.3] + ### Fixed + - [#10045](https://github.com/MetaMask/metamask-mobile/pull/10045): fix: Update ppom package to 1.4.8 (#10041) ## [7.24.2] + ### Added + - [#9687](https://github.com/MetaMask/metamask-mobile/pull/9687): feat: adds "data collection for marketing" toggles ### Fixed + - [#9905](https://github.com/MetaMask/metamask-mobile/pull/9905): fix: remove metametrics redundant calls and improve compliance ## [7.24.1] + ### Fixed + - [#9943](https://github.com/MetaMask/metamask-mobile/pull/9943): fix: Remove duplicate accounts (#9943) - [#10006](https://github.com/MetaMask/metamask-mobile/pull/10006): fix: Fix order of accounts (#10006) - [#10004](https://github.com/MetaMask/metamask-mobile/pull/10004): fix: Synchronize account names (#10004) - [#9974](https://github.com/MetaMask/metamask-mobile/pull/9974): fix: Fix freeze on buy and sell flow (#9974) -- [#9980](https://github.com/MetaMask/metamask-mobile/pull/9980): fix: Fix initialization crash / login error "Engine does not exist (#9980) +- [#9980](https://github.com/MetaMask/metamask-mobile/pull/9980): fix: Fix initialization crash / login error "Engine does not exist (#9980) ## [7.24.0] + ### Added + - [#9767](https://github.com/MetaMask/metamask-mobile/pull/9767): feat: push Privacy policy date to 2024 Jun 18 12:00 UTC (#9767) - [#9707](https://github.com/MetaMask/metamask-mobile/pull/9707): feat: adds strings for the opt in toggles (#9707) - [#9661](https://github.com/MetaMask/metamask-mobile/pull/9661): feat: smart-tx opt in modal 2 (#9661) @@ -1401,7 +1593,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#9442](https://github.com/MetaMask/metamask-mobile/pull/9442): feat: smart-tx-small-logic (#9442) - [#9204](https://github.com/MetaMask/metamask-mobile/pull/9204): feat: Add new privacy policy alert toast (#9204) - [#9651](https://github.com/MetaMask/metamask-mobile/pull/9651): feat: Upgrade signature Controller to v14 (#9651) -- [#9394](https://github.com/MetaMask/metamask-mobile/pull/9394): feat: Network & Gas & Assets & Utils controllers update (#9394) +- [#9394](https://github.com/MetaMask/metamask-mobile/pull/9394): feat: Network & Gas & Assets & Utils controllers update (#9394) - [#9625](https://github.com/MetaMask/metamask-mobile/pull/9625): feat: Update signature controller v13 (#9625) - [#9129](https://github.com/MetaMask/metamask-mobile/pull/9129): feat: setting to show fiat values on testnets (#9129) - [#9740](https://github.com/MetaMask/metamask-mobile/pull/9740): feat: Update checkbox to be able to override checkbox style (#9740) @@ -1409,6 +1601,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#9572](https://github.com/MetaMask/metamask-mobile/pull/9572): feat: notifications onboarding wizard - [8 of 10] (#9572) ### Changed + - [#9612](https://github.com/MetaMask/metamask-mobile/pull/9612): revert: feat(swaps): enable Base for swaps (#9286) (#9612) - [#9735](https://github.com/MetaMask/metamask-mobile/pull/9735): chore: add swaps team to swaps domain folder (#9735) - [#9683](https://github.com/MetaMask/metamask-mobile/pull/9683): refactor: the network name and image utils into selectors (#9683) @@ -1428,10 +1621,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#9609](https://github.com/MetaMask/metamask-mobile/pull/9609): chore: add deprecated tag to the websiteicon component (#9609) - [#9619](https://github.com/MetaMask/metamask-mobile/pull/9619): chore(deps): remove unused react-native-v8 (#9619) - [#9599](https://github.com/MetaMask/metamask-mobile/pull/9599): chore: update Encryptor CODEOWNER to Accounts Team (#9599) -- [#9734](https://github.com/MetaMask/metamask-mobile/pull/9734): test: Added swap ERC20->ETH test case (#9734) +- [#9734](https://github.com/MetaMask/metamask-mobile/pull/9734): test: Added swap ERC20->ETH test case (#9734) - [#9712](https://github.com/MetaMask/metamask-mobile/pull/9712): chore: remove unnecessary patch imports and change the patch branch name (#9712) ### Fixed + - [#9301](https://github.com/MetaMask/metamask-mobile/pull/9301): fix: flaky tests issues template skip 2 (#9301) - [#9774](https://github.com/MetaMask/metamask-mobile/pull/9774): fix: unit tests (#9774) - [#9706](https://github.com/MetaMask/metamask-mobile/pull/9706): fix: QR scanner crash when user dismisses camera view in web view (#9706) @@ -1458,7 +1652,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#9616](https://github.com/MetaMask/metamask-mobile/pull/9616): fix: fix the issue 9560 which QR code accounts has been reappeared aftter user `remove wallets` (#9616) ## [7.23.0] + ### Added + - [#9595](https://github.com/MetaMask/metamask-mobile/pull/9595): feat: Upgrade to react-native-svg to 15.2.0 (#9595) - [#9305](https://github.com/MetaMask/metamask-mobile/pull/9305): feat: Update SignatureController v6.1.3 + LoggingController v2.0.0 (#9305) - [#9546](https://github.com/MetaMask/metamask-mobile/pull/9546): feat: fix logs for 1709 (#9546) @@ -1467,7 +1663,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#9286](https://github.com/MetaMask/metamask-mobile/pull/9286): feat(swaps): enable Base for swaps (#9286) - [#9495](https://github.com/MetaMask/metamask-mobile/pull/9495): feat: url bar no longer shown in the tab thumnail list view (#9495) - [#9474](https://github.com/MetaMask/metamask-mobile/pull/9474): feat: add localizations for the browser tab (#9474) -- [#9435](https://github.com/MetaMask/metamask-mobile/pull/9435): feat: sdk async persistence and protocol upgrade (#9435) +- [#9435](https://github.com/MetaMask/metamask-mobile/pull/9435): feat: sdk async persistence and protocol upgrade (#9435) - [#9119](https://github.com/MetaMask/metamask-mobile/pull/9119): feat(ramp): add activation keys labels and DS components (#9119) - [#9372](https://github.com/MetaMask/metamask-mobile/pull/9372): feat: Add `useTokenListName` hook for `Name` component (#9372) - [#9407](https://github.com/MetaMask/metamask-mobile/pull/9407): feat: Add `useFirstPartyContractName` hook (#9407) @@ -1481,8 +1677,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#9401](https://github.com/MetaMask/metamask-mobile/pull/9401): feat: updated styling in badgenetwork (#9401) ### Changed -- [#9571](https://github.com/MetaMask/metamask-mobile/pull/9571): chore: revert feat: notifications onboarding wizard (#9392) (#9571) -- [#9610](https://github.com/MetaMask/metamask-mobile/pull/9610): test: Fix flakiness caused by the notification permission dialog which caused confirmation test flakiness (#9610) + +- [#9571](https://github.com/MetaMask/metamask-mobile/pull/9571): chore: revert feat: notifications onboarding wizard (#9392) (#9571) +- [#9610](https://github.com/MetaMask/metamask-mobile/pull/9610): test: Fix flakiness caused by the notification permission dialog which caused confirmation test flakiness (#9610) - [#9577](https://github.com/MetaMask/metamask-mobile/pull/9577): chore: Chore/1742 remove vault recreation log in (#9577) - [#9576](https://github.com/MetaMask/metamask-mobile/pull/9576): chore: Update migrations with Fatal Errors (#9576) - [#9529](https://github.com/MetaMask/metamask-mobile/pull/9529): test: Refactor browser and testdapp page objects (#9529) @@ -1505,11 +1702,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#9484](https://github.com/MetaMask/metamask-mobile/pull/9484): chore(devDeps): @actions/github@^5.1.1->^6.0.0 (#9484) - [#9454](https://github.com/MetaMask/metamask-mobile/pull/9454): chore: Update Jest to v29 (#9454) - [#9475](https://github.com/MetaMask/metamask-mobile/pull/9475): chore: Fix handling of generated ppom files (#9475) -- [#9388](https://github.com/MetaMask/metamask-mobile/pull/9388): chore: initial *.metafi and *.metaswap URL migrations (#9388) +- [#9388](https://github.com/MetaMask/metamask-mobile/pull/9388): chore: initial _.metafi and _.metaswap URL migrations (#9388) - [#9455](https://github.com/MetaMask/metamask-mobile/pull/9455): chore(iyarc): remove resolved audit advisory (#9455) - [#8557](https://github.com/MetaMask/metamask-mobile/pull/8557): chore: remove unused @metamask/oss-attribution-generator (#8557) ### Fixed + - [#9525](https://github.com/MetaMask/metamask-mobile/pull/9525): fix: fix regression tests (#9525) - [#9411](https://github.com/MetaMask/metamask-mobile/pull/9411): fix: refactor mechanism for sending analytics events (#9411) - [#9575](https://github.com/MetaMask/metamask-mobile/pull/9575): fix: Add missing wallet_addEthereumChain to unrestricted list (#9575) @@ -1539,7 +1737,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#9143](https://github.com/MetaMask/metamask-mobile/pull/9143): fix: Yarn 1.22.22 (#9143) ## [7.22.0] + ### Added + - [#9329](https://github.com/MetaMask/metamask-mobile/pull/9329): feat: Added log to capture failing exception for getItem (#9329) - [#9271](https://github.com/MetaMask/metamask-mobile/pull/9271): feat: update phishing controller v8.0.0 (#9271) - [#9254](https://github.com/MetaMask/metamask-mobile/pull/9254): feat: Update Gas fee controller v10 (#9254) @@ -1563,6 +1763,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#9030](https://github.com/MetaMask/metamask-mobile/pull/9030): feat: Extend blockaid validations to base network (#9030) ### Changed + - [#9393](https://github.com/MetaMask/metamask-mobile/pull/9393): test: Fix failing regression test basic fun feat (#9393) - [#9386](https://github.com/MetaMask/metamask-mobile/pull/9386): chore: Revert #9263 feat: add notifications onboarding wizard (#9386) - [#8909](https://github.com/MetaMask/metamask-mobile/pull/8909): test: 1453 refactor modal pages batch 3 (#8909) @@ -1581,6 +1782,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#9093](https://github.com/MetaMask/metamask-mobile/pull/9093): refactor: migrate Encryptor to TypeScript and increase PBKDF2 iterations number (#9093) ### Fixed + - [#9302](https://github.com/MetaMask/metamask-mobile/pull/9302): fix: e2e test permission problem (#9302) - [#9395](https://github.com/MetaMask/metamask-mobile/pull/9395): fix(translations): Fix hard coded repo name left from testing in diff repo (#9395) - [#9337](https://github.com/MetaMask/metamask-mobile/pull/9337): fix: show banner alert if account balance is insufficient (#9337) @@ -1614,7 +1816,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#9283](https://github.com/MetaMask/metamask-mobile/pull/9283): fix: missing walletConnect prop (#9283) ## [7.21.0] + ### Added + - [#9065](https://github.com/MetaMask/metamask-mobile/pull/9065): feat: Update network controller to version 13.0.1 (#9065) - [#9166](https://github.com/MetaMask/metamask-mobile/pull/9166): feat: signature controller update to v6.0.0 (#9166) - [#9194](https://github.com/MetaMask/metamask-mobile/pull/9194): feat: 7.19.1 (#9194) @@ -1630,6 +1834,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#8701](https://github.com/MetaMask/metamask-mobile/pull/8701): feat: notifications (#8701) ### Changed + - [#9199](https://github.com/MetaMask/metamask-mobile/pull/9199): chore: Chore/resolve xcode changes (#9199) - [#9197](https://github.com/MetaMask/metamask-mobile/pull/9197): test: Change instances of messages to enContent while importing from locales (#9197) - [#9181](https://github.com/MetaMask/metamask-mobile/pull/9181): test: fix rpc test on Ci for Android (#9181) @@ -1652,11 +1857,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#5093](https://github.com/MetaMask/metamask-mobile/pull/5093): chore: Bump pify from 4.0.1 to 6.1.0 (#5093) ### Fixed + - [#8958](https://github.com/MetaMask/metamask-mobile/pull/8958): fix: unit test metametrics at app startup (#8958) - [#9206](https://github.com/MetaMask/metamask-mobile/pull/9206): fix: fix nfts displayed on account and refactor collectibles component (#9206) - [#9174](https://github.com/MetaMask/metamask-mobile/pull/9174): fix: change CUSTOM_TOKEN_IMPORTED tracking mode (#9174) - [#9148](https://github.com/MetaMask/metamask-mobile/pull/9148): fix: Tokens disappearing when updating (#9148) -- [#9123](https://github.com/MetaMask/metamask-mobile/pull/9123): fix: Revert Update controller utils to 5.0.2 (#9123) +- [#9123](https://github.com/MetaMask/metamask-mobile/pull/9123): fix: Revert Update controller utils to 5.0.2 (#9123) - [#8603](https://github.com/MetaMask/metamask-mobile/pull/8603): fix: nft detection running too many times (#8603) - [#9125](https://github.com/MetaMask/metamask-mobile/pull/9125): fix: add display warning for mumbai (#9125) - [#9150](https://github.com/MetaMask/metamask-mobile/pull/9150): fix: wc connections and permissions system network improvement (#9150) @@ -1666,11 +1872,15 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#9075](https://github.com/MetaMask/metamask-mobile/pull/9075): fix: Send ppom metrics when transaction is cancelled. (#9075) ## [7.20.1] + ### Fixed + - [#9092](https://github.com/MetaMask/metamask-mobile/pull/9092): fix: check HD keyring ## [7.20.0] + ### Added + - [#8982](https://github.com/MetaMask/metamask-mobile/pull/8982): feat: Update gas fee controller to version 6.1.2 - [#9079](https://github.com/MetaMask/metamask-mobile/pull/9079): feat: Update controller utils to 5.0.2 - [#9036](https://github.com/MetaMask/metamask-mobile/pull/9036): feat: Adding blockaid validations for sepolia network @@ -1686,6 +1896,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#8986](https://github.com/MetaMask/metamask-mobile/pull/8986): feat: Updated Assets Controllers to v11.1.0 ### Changed + - [#8967](https://github.com/MetaMask/metamask-mobile/pull/8967): chore: Handle async migrations & add migration tests - [#8826](https://github.com/MetaMask/metamask-mobile/pull/8826): refactor: update Ledger connection instructions - [#9038](https://github.com/MetaMask/metamask-mobile/pull/9038): chore: Consolidate and simplify isTest condition @@ -1704,6 +1915,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#8959](https://github.com/MetaMask/metamask-mobile/pull/8959): chore: Migrate another (3/3) batch of unit tests away from enzyme ### Fixed + - [#9000](https://github.com/MetaMask/metamask-mobile/pull/9000): fix: Revert "test: [android] run tests on the first emulator in your list … - [#8998](https://github.com/MetaMask/metamask-mobile/pull/8998): fix: Revert "fix: hardcode emulator name to fix failing android tests on C… - [#8995](https://github.com/MetaMask/metamask-mobile/pull/8995): fix: hardcode emulator name to fix failing android tests on CI @@ -1726,11 +1938,15 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#8932](https://github.com/MetaMask/metamask-mobile/pull/8932): fix: breaking change from `@metamask/transaction-controller` regarding Ledger transactions ## [7.19.1] + ### Fixed + - [#9193](https://github.com/MetaMask/metamask-mobile/pull/9193): fix(ramp): default networks state to array ## [7.19.0] + ### Added + - [#8935](https://github.com/MetaMask/metamask-mobile/pull/8935): feat: Remove powered by blockaid line - [#8908](https://github.com/MetaMask/metamask-mobile/pull/8908): feat: add linea sepolia network and deprecate Linea Goerli network - [#8881](https://github.com/MetaMask/metamask-mobile/pull/8881): feat: patch for assets controller v11.0.1 @@ -1746,6 +1962,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#8768](https://github.com/MetaMask/metamask-mobile/pull/8768): feat: state logs in the exported file with app version and build number ### Changed + - [#8789](https://github.com/MetaMask/metamask-mobile/pull/8789): ci: 8253 - Add fitness function action for enzyme imports - [#8919](https://github.com/MetaMask/metamask-mobile/pull/8919): chore: Include env variable copying into yarn setup command - [#8964](https://github.com/MetaMask/metamask-mobile/pull/8964): chore: added platform team as codeowner to component-lib, patches, bitrise.yml @@ -1781,6 +1998,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#8802](https://github.com/MetaMask/metamask-mobile/pull/8802): chore: Remove `glob` resolution ### Fixed + - [#8774](https://github.com/MetaMask/metamask-mobile/pull/8774): fix: normalize transaction parameters before PPOM validation - [#8838](https://github.com/MetaMask/metamask-mobile/pull/8838): fix: Rename DAPP_VISITED to DAPP_VIEWED - [#8784](https://github.com/MetaMask/metamask-mobile/pull/8784): fix: update usage of OP goerli to OP Sepolia @@ -1809,7 +2027,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#8496](https://github.com/MetaMask/metamask-mobile/pull/8496): fix: redirection issue after chain switch on sign request ## [7.18.0] + ### Added + - [#8729](https://github.com/MetaMask/metamask-mobile/pull/8729): feat(ramp): add event when user expands quotes - [#8787](https://github.com/MetaMask/metamask-mobile/pull/8787): feat: add MetaMetrics custom flush vars and log - [#8680](https://github.com/MetaMask/metamask-mobile/pull/8680): feat(ramp): add previously used tag @@ -1843,6 +2063,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#8673](https://github.com/MetaMask/metamask-mobile/pull/8673): feat: new trackErrorAsAnalytics for segment ### Changed + - [#8803](https://github.com/MetaMask/metamask-mobile/pull/8803): chore: Remove unnecessary resolutions - [#8792](https://github.com/MetaMask/metamask-mobile/pull/8792): test: Fix tag in regression test - [#8791](https://github.com/MetaMask/metamask-mobile/pull/8791): test: add contact us e2e @@ -1859,6 +2080,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#8644](https://github.com/MetaMask/metamask-mobile/pull/8644): test: Refactor settings page object ### Fixed + - [#8801](https://github.com/MetaMask/metamask-mobile/pull/8801): fix(ramp): undefined payment method - [#8798](https://github.com/MetaMask/metamask-mobile/pull/8798): fix: remove unnecessary post message stream patch - [#8572](https://github.com/MetaMask/metamask-mobile/pull/8572): fix: fake native tokens need better UX error handling @@ -1884,12 +2106,16 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#8615](https://github.com/MetaMask/metamask-mobile/pull/8615): fix: Fix add custom rpc detox test script ## [7.17.1] + ### Fixed + - [#8870](https://github.com/MetaMask/metamask-mobile/pull/8870): fix: update PPOM to v1.4.4 - [#8892](https://github.com/MetaMask/metamask-mobile/pull/8892): fix: Tokens disappearing ## [7.17.0] + ### Added + - [#8520](https://github.com/MetaMask/metamask-mobile/pull/8520): feat: Feature/1300 dapp visit event - [#8354](https://github.com/MetaMask/metamask-mobile/pull/8354): feat(ramp): add Terms of Service provider link to quotes - [#8579](https://github.com/MetaMask/metamask-mobile/pull/8579): feat: translate fake native tokens need better UX error handling @@ -1911,6 +2137,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#8413](https://github.com/MetaMask/metamask-mobile/pull/8413): feat: Update SES lockdown options ### Changed + - [#8457](https://github.com/MetaMask/metamask-mobile/pull/8457): refactor(ramp): add routes folder - [#8510](https://github.com/MetaMask/metamask-mobile/pull/8510): chore: upgrading design tokens package and typescript conventions - [#8478](https://github.com/MetaMask/metamask-mobile/pull/8478): chore: bumping code coverage thresholds @@ -1923,6 +2150,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#8514](https://github.com/MetaMask/metamask-mobile/pull/8514): chore(ramp): upgrade sdk to 1.26.2 ### Fixed + - [#8348](https://github.com/MetaMask/metamask-mobile/pull/8348): fix: update nft metadata on page refresh - [#8556](https://github.com/MetaMask/metamask-mobile/pull/8556): fix: improve native balance fetch logic on the UX - [#8605](https://github.com/MetaMask/metamask-mobile/pull/8605): fix: Update ppom_release to fix fail ppom security validation check @@ -1956,7 +2184,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#8476](https://github.com/MetaMask/metamask-mobile/pull/8476): fix: Fix title color type in settings drawer ## [7.16.0] + ### Added + - [#8093](https://github.com/MetaMask/metamask-mobile/pull/8093): feat: decouple account selector from qr code connector - [#8383](https://github.com/MetaMask/metamask-mobile/pull/8383): feat: add translation for privacy toggle - [#8412](https://github.com/MetaMask/metamask-mobile/pull/8412): feat: Blockaid experimental settings should be visible on all networks @@ -1973,6 +2203,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#8030](https://github.com/MetaMask/metamask-mobile/pull/8030): feat: New Crowdin translations by Github Action ### Changed + - [#8452](https://github.com/MetaMask/metamask-mobile/pull/8452): refactor: Replace SheetBottom with BottomSheet in WalletActions - [#8451](https://github.com/MetaMask/metamask-mobile/pull/8451): refactor: Replace SheetBottom with BottomSheet in ShowIpfsGatewaySheet - [#8450](https://github.com/MetaMask/metamask-mobile/pull/8450): refactor: Replace SheetBottom with BottomSheet in ShowDisplayNFTMediaSheet @@ -2018,6 +2249,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#8272](https://github.com/MetaMask/metamask-mobile/pull/8272): chore: adds snapController selector and initial state ### Fixed + - [#8460](https://github.com/MetaMask/metamask-mobile/pull/8460): fix: typos in en.json - [#8453](https://github.com/MetaMask/metamask-mobile/pull/8453): fix: show only blockaid multichain on whats new - [#8421](https://github.com/MetaMask/metamask-mobile/pull/8421): fix: patch handling of missing token price @@ -2046,9 +2278,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#8278](https://github.com/MetaMask/metamask-mobile/pull/8278): fix: scanning dapp QR code does not open in-app browser and navigate to dapp #8277 - [#8247](https://github.com/MetaMask/metamask-mobile/pull/8247): fix: fix inconsistency in the popular tab - ## [7.15.0] + ### Added + - [#8080](https://github.com/MetaMask/metamask-mobile/pull/8080): feat(ramp): add sell quick amounts with gas estimations - [#8204](https://github.com/MetaMask/metamask-mobile/pull/8204): feat: update blockaid dependency to latest version - [#8215](https://github.com/MetaMask/metamask-mobile/pull/8215): feat: Android sdk dapp icon support @@ -2063,6 +2296,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#8097](https://github.com/MetaMask/metamask-mobile/pull/8097): feat(ramp): keep region always up to date ### Changed + - [#8231](https://github.com/MetaMask/metamask-mobile/pull/8231): test: 1328 refactor modals page batch 1 - [#8229](https://github.com/MetaMask/metamask-mobile/pull/8229): refactor(ramp): update callback url for dev/staging - [#8217](https://github.com/MetaMask/metamask-mobile/pull/8217): test: fixed Swap smoke and regression test failures @@ -2103,6 +2337,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#8044](https://github.com/MetaMask/metamask-mobile/pull/8044): refactor: Updated navigational Navbar Headers with DS components ### Fixed + - [#8230](https://github.com/MetaMask/metamask-mobile/pull/8230): fix: refresh ownership status for nfts - [#8248](https://github.com/MetaMask/metamask-mobile/pull/8248): fix: update PPOM validator version to fix validation after network change - [#8233](https://github.com/MetaMask/metamask-mobile/pull/8233): fix: enabling blockaid should be possible only if user is on mainnet @@ -2129,7 +2364,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#8029](https://github.com/MetaMask/metamask-mobile/pull/8029): fix: blockaid analytics code typos ## [7.14.0] + ### Added + - [#8016](https://github.com/MetaMask/metamask-mobile/pull/8016): feat(ramp): add sell deeplink - [#7962](https://github.com/MetaMask/metamask-mobile/pull/7962): feat(ramp): add sell notification texts - [#8047](https://github.com/MetaMask/metamask-mobile/pull/8047): feat: Added RadioButton to DS @@ -2152,7 +2389,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#7861](https://github.com/MetaMask/metamask-mobile/pull/7861): feat: enable Blockaid on iOS - [#7864](https://github.com/MetaMask/metamask-mobile/pull/7864): feat(ramp): sell what's new modal content - ### Changed +### Changed + - [#7908](https://github.com/MetaMask/metamask-mobile/pull/7908): chore: tranfer the DeeplinkManager file from JS to TS - [#7972](https://github.com/MetaMask/metamask-mobile/pull/7972): chore: Replace local code fence transform with `@metamask/build-utils` - [#7925](https://github.com/MetaMask/metamask-mobile/pull/7925): chore: refactor the DeeplinkManager into smaller parts and add unit tests @@ -2175,7 +2413,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#7689](https://github.com/MetaMask/metamask-mobile/pull/7689): refactor: generate nonces using nonce tracker - [#7896](https://github.com/MetaMask/metamask-mobile/pull/7896): test: Remove duplicate methods on Gesture class - ### Fixed +### Fixed + - [#7953](https://github.com/MetaMask/metamask-mobile/pull/7953): fix: correct proptypes array in WebsiteIcon component - [#7886](https://github.com/MetaMask/metamask-mobile/pull/7886): fix: Fix `eth_signTypedData` signatures containing `0x` - [#7935](https://github.com/MetaMask/metamask-mobile/pull/7935): fix: bitrise cocoapods issue in bitrise @@ -2198,26 +2437,37 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#7976](https://github.com/MetaMask/metamask-mobile/pull/7976): fix: blockaid mobile performance improvements ## [7.12.5] + ### Added + - [#8156](https://github.com/MetaMask/metamask-mobile/pull/8156): feat: migrate to latest Token rates controller ### Fixed + - [#8155](https://github.com/MetaMask/metamask-mobile/pull/8155): fix: OpenSea V1 -> V2 patch ## [7.12.3] + ### Fixed + - [#8102](https://github.com/MetaMask/metamask-mobile/pull/8102): fix: prevent bad svg urls in react-native-svg ## [7.12.2] + ### Fixed -- [#8057](https://github.com/MetaMask/metamask-mobile/pull/8057): fix: Disable SES on iOS + +- [#8057](https://github.com/MetaMask/metamask-mobile/pull/8057): fix: Disable SES on iOS ## [7.12.1] + ### Fixed + - [#7991](https://github.com/MetaMask/metamask-mobile/pull/7991): fix: patch for token rates controller with coin gecko endpoint ## [7.12.0] + ### Added + - [#7037](https://github.com/MetaMask/metamask-mobile/pull/7037): feat(off-ramp): add off-ramp feature - [#7734](https://github.com/MetaMask/metamask-mobile/pull/7734): feat: enable code fence capabilities on mobile app. - [#7754](https://github.com/MetaMask/metamask-mobile/pull/7754): feat: add a return to app modal only for ios 17 when an sdk operation is done @@ -2239,6 +2489,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#7708](https://github.com/MetaMask/metamask-mobile/pull/7708): feat: configure metro listener port ### Changed + - [#7860](https://github.com/MetaMask/metamask-mobile/pull/7860): refactor: Updated Toast story - [#7391](https://github.com/MetaMask/metamask-mobile/pull/7391): refactor: Convert Button stories to csf format - [#7393](https://github.com/MetaMask/metamask-mobile/pull/7393): refactor: Convert Badge stories to csf format @@ -2265,6 +2516,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#7704](https://github.com/MetaMask/metamask-mobile/pull/7704): refactor: logger.js to typescript and optimize for dev ### Fixed + - [#7859](https://github.com/MetaMask/metamask-mobile/pull/7859): fix: microphone and camera on webview - [#7776](https://github.com/MetaMask/metamask-mobile/pull/7776): fix: WalletConnect requests should show loading banner for blockaid - [#7838](https://github.com/MetaMask/metamask-mobile/pull/7838): fix: remove unused .tools-versions to prioritize nvm @@ -2302,7 +2554,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#7642](https://github.com/MetaMask/metamask-mobile/pull/7642): fix: action view btn not able translate ## [7.11.0] + ### Added + - [#7251](https://github.com/MetaMask/metamask-mobile/pull/7251): feat: #999 - RTK consolidate reducers - [#7628](https://github.com/MetaMask/metamask-mobile/pull/7628): feat: sdk batch rpc calls - [#7655](https://github.com/MetaMask/metamask-mobile/pull/7655): feat: node to version 18.17.1 @@ -2315,6 +2569,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#7419](https://github.com/MetaMask/metamask-mobile/pull/7419): feat: Add metrics for provider calls coming from ppom on mobile ### Changed + - [#7349](https://github.com/MetaMask/metamask-mobile/pull/7349): refactor: Convert Form stories - [#7414](https://github.com/MetaMask/metamask-mobile/pull/7414): refactor: Convert List stories to csf format - [#7468](https://github.com/MetaMask/metamask-mobile/pull/7468): refactor: Convert Text stories to csf format @@ -2352,6 +2607,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#7574](https://github.com/MetaMask/metamask-mobile/pull/7574): chore: minor bump on react native dev tools to address audit issue ### Fixed + - [#7692](https://github.com/MetaMask/metamask-mobile/pull/7692): fix: sdk and deeplink init process - [#7687](https://github.com/MetaMask/metamask-mobile/pull/7687): fix: refactor selectors and fix request token test - [#7491](https://github.com/MetaMask/metamask-mobile/pull/7491): fix: Warn users when connecting to a website on the eth-phishing-detect list on mobile @@ -2372,13 +2628,15 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#7540](https://github.com/MetaMask/metamask-mobile/pull/7540): fix: token decimals fetched from the chain - [#7546](https://github.com/MetaMask/metamask-mobile/pull/7546): fix link to testnet faucets - [#7557](https://github.com/MetaMask/metamask-mobile/pull/7557): fix(issue template): encourage recordings -- [#7813](https://github.com/MetaMask/metamask-mobile/pull/7813): fix: Add microphone permissions to iOS +- [#7813](https://github.com/MetaMask/metamask-mobile/pull/7813): fix: Add microphone permissions to iOS - [#7737](https://github.com/MetaMask/metamask-mobile/pull/7737): fix: Use custom controls for iOS video - [#7811](https://github.com/MetaMask/metamask-mobile/pull/7811): fix: Lock yarn to 1.22.19 -- [#7733](https://github.com/MetaMask/metamask-mobile/pull/7733): fix: silence PollingBlockTracker Sentry +- [#7733](https://github.com/MetaMask/metamask-mobile/pull/7733): fix: silence PollingBlockTracker Sentry ## [7.10.0] + ### Added + - [#7154](https://github.com/MetaMask/metamask-mobile/pull/7154): feat: incoming transactions by network - [#7541](https://github.com/MetaMask/metamask-mobile/pull/7541): feat: Add EIP-6963 Provider - [#7256](https://github.com/MetaMask/metamask-mobile/pull/7256): feat: Enable zkSync Era in Swaps @@ -2390,6 +2648,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#7584](https://github.com/MetaMask/metamask-mobile/pull/7584): feat: re-create connect_sign feature ### Changed + - [#7574](https://github.com/MetaMask/metamask-mobile/pull/7574): chore: minor bump on react native dev tools to address audit issue - [#7354](https://github.com/MetaMask/metamask-mobile/pull/7354): chore: New Crowdin translations by Github Action - [#7542](https://github.com/MetaMask/metamask-mobile/pull/7542): chore: @metamask/test-dapp@^7.1.0->^7.2.0 @@ -2423,11 +2682,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#7372](https://github.com/MetaMask/metamask-mobile/pull/7372): test: reorg signatures tests to maximize efficiency - [#7356](https://github.com/MetaMask/metamask-mobile/pull/7356): test: Add dynamic allocation port for ganache, fixtures and test dapp - [#7130](https://github.com/MetaMask/metamask-mobile/pull/7130): chore(deps): dedupe semver -- [#7128](https://github.com/MetaMask/metamask-mobile/pull/7128): deps: Dedupe `ethers`@5.* +- [#7128](https://github.com/MetaMask/metamask-mobile/pull/7128): deps: Dedupe `ethers`@5.\* - [#7366](https://github.com/MetaMask/metamask-mobile/pull/7366): ci(bitrise): trigger smoke test on every merge to main - [#7364](https://github.com/MetaMask/metamask-mobile/pull/7364): chore: bump Node to v16.20 ### Fixed + - [#7540](https://github.com/MetaMask/metamask-mobile/pull/7540): fix: token decimals fetched from the chain - [#7531](https://github.com/MetaMask/metamask-mobile/pull/7531): fix: depcheck@^1.4.5->^1.4.7 - [#7483](https://github.com/MetaMask/metamask-mobile/pull/7483): fix: android os connection issue @@ -2452,11 +2712,15 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#7362](https://github.com/MetaMask/metamask-mobile/pull/7362): fix(action): update fetch-depth parameter to fetch only the last commit ## [7.9.1] + ### Fixed + - [#7653](https://github.com/MetaMask/metamask-mobile/pull/7653): fix: revert nonce logic in transaction controller ## [7.9.0] + ### Added + - [#7341](https://github.com/MetaMask/metamask-mobile/pull/7341): feat(ramp): add webview debug by env vars - [#7345](https://github.com/MetaMask/metamask-mobile/pull/7345): feat: remove unused react-native-webrtc package - [#7212](https://github.com/MetaMask/metamask-mobile/pull/7212): feat: extend the time we resume the session without showing OTP @@ -2466,6 +2730,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#7052](https://github.com/MetaMask/metamask-mobile/pull/7052): feat: Ipfs implementation (#6968) ### Changed + - [#7028](https://github.com/MetaMask/metamask-mobile/pull/7028): chore: New Crowdin translations by Github Action - [#7159](https://github.com/MetaMask/metamask-mobile/pull/7159): refactor: custom network component - [#7277](https://github.com/MetaMask/metamask-mobile/pull/7277): chore: 5.8.1 Sentry SDK Upgrade @@ -2482,6 +2747,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#7225](https://github.com/MetaMask/metamask-mobile/pull/7225): test: Signatures refactor with fixtures ### Fixed + - [#7309](https://github.com/MetaMask/metamask-mobile/pull/7309): fix: Fix Podfile.lock versions - [#7308](https://github.com/MetaMask/metamask-mobile/pull/7308): fix: Fix e2e smoke tests caused by failed pod install step - [#7197](https://github.com/MetaMask/metamask-mobile/pull/7197): fix: Key the address book by chain ID instead of network ID @@ -2495,9 +2761,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#7276](https://github.com/MetaMask/metamask-mobile/pull/7276): fix: handle overlapping add network requests - [#7278](https://github.com/MetaMask/metamask-mobile/pull/7278): fix: Fix console errors upon switching networks - ## [7.8.0] + ### Added + - [#7068](https://github.com/MetaMask/metamask-mobile/pull/7068): feat: Adding blockaid banner to confirmation pages - [#7186](https://github.com/MetaMask/metamask-mobile/pull/7186): feat: translation ipfs banner - [#7038](https://github.com/MetaMask/metamask-mobile/pull/7038): feat: Blockaid preference @@ -2505,6 +2772,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#7107](https://github.com/MetaMask/metamask-mobile/pull/7107): feat: update README XCode and python instructions ### Changed + - [#7213](https://github.com/MetaMask/metamask-mobile/pull/7213): chore: Normalize transaction controller patch - [#7226](https://github.com/MetaMask/metamask-mobile/pull/7226): chore: add script to patch transaction controller - [#7140](https://github.com/MetaMask/metamask-mobile/pull/7140): chore: Update confirmation page layout for Blockaid alerts @@ -2516,7 +2784,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#7182](https://github.com/MetaMask/metamask-mobile/pull/7182): refactor: Fix documented return type of `handleNetworkSwitch` - [#7168](https://github.com/MetaMask/metamask-mobile/pull/7168): test: Screenshots on failure should only be done on the last retry for ios - [#7179](https://github.com/MetaMask/metamask-mobile/pull/7179): refactor: Add tests for `checkAddress` and fix types -- [#7118](https://github.com/MetaMask/metamask-mobile/pull/7118): deps: dedupe @babel/*, babel-* +- [#7118](https://github.com/MetaMask/metamask-mobile/pull/7118): deps: dedupe @babel/_, babel-_ - [#7032](https://github.com/MetaMask/metamask-mobile/pull/7032): devDeps: @lavamoat/allow-scripts@1.0.6->2.3.1 - [#7124](https://github.com/MetaMask/metamask-mobile/pull/7124): ci: Add depcheck test - [#7156](https://github.com/MetaMask/metamask-mobile/pull/7156): refactor: Refactor `isTestNet` to accept chain ID @@ -2532,6 +2800,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#7100](https://github.com/MetaMask/metamask-mobile/pull/7100): ci: Add type check lint to CI ### Fixed + - [#7187](https://github.com/MetaMask/metamask-mobile/pull/7187): fix: sonar coverage path - [#7106](https://github.com/MetaMask/metamask-mobile/pull/7106): fix: rename signature events and fix failing unit test - [#7077](https://github.com/MetaMask/metamask-mobile/pull/7077): fix: Warning when rejecting an approval request with id XYZ not found @@ -2551,7 +2820,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#7096](https://github.com/MetaMask/metamask-mobile/pull/7096): fix: Fix Engine `controllerMessenger` type errors ## [7.7.0] + ### Added + - [#7090](https://github.com/MetaMask/metamask-mobile/pull/7090): feat: add translations for new contextual sheet display nft media - [#6727](https://github.com/MetaMask/metamask-mobile/pull/6727): style: Update Button's pressed and disabled states - [#7075](https://github.com/MetaMask/metamask-mobile/pull/7075): feat: incoming transactions translations @@ -2561,6 +2832,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#6983](https://github.com/MetaMask/metamask-mobile/pull/6983): feat: 940 e2e migrate senderc721 test to detox ### Changed + - [#6998](https://github.com/MetaMask/metamask-mobile/pull/6998): refactor: use block tracker to poll incoming transactions - [#6872](https://github.com/MetaMask/metamask-mobile/pull/6872): refactor: Update controller packages to v44 - [#7091](https://github.com/MetaMask/metamask-mobile/pull/7091): refactor: Simplify Engine constructor @@ -2579,6 +2851,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#6898](https://github.com/MetaMask/metamask-mobile/pull/6898): refactor: Update `@metamask/assets-controllers` patch ### Fixed + - [#7050](https://github.com/MetaMask/metamask-mobile/pull/7050): fix: Update terms of use header to match new copy - [#7086](https://github.com/MetaMask/metamask-mobile/pull/7086): fix: ext contributor SonarCloud - [#7029](https://github.com/MetaMask/metamask-mobile/pull/7029): fix: crowdin action upload @@ -2591,7 +2864,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#7024](https://github.com/MetaMask/metamask-mobile/pull/7024): fix(action): octokit not supported on MetaMask repos ## [7.6.0] + ### Added + - [#6938](https://github.com/MetaMask/metamask-mobile/pull/6938): feat(release): 7.5.0 - [#7026](https://github.com/MetaMask/metamask-mobile/pull/7026): feat: new translations for nft media - [#6779](https://github.com/MetaMask/metamask-mobile/pull/6779): feat: Add security alerts settings to experimental tab @@ -2603,6 +2878,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#6832](https://github.com/MetaMask/metamask-mobile/pull/6832): feat: add support for template and header on result pages ### Changed + - [#6913](https://github.com/MetaMask/metamask-mobile/pull/6913): chore: remove unused Jest preprocessor - [#6840](https://github.com/MetaMask/metamask-mobile/pull/6840): chore(deps): bump word-wrap from 1.2.3 to 1.2.4 - [#6930](https://github.com/MetaMask/metamask-mobile/pull/6930): docs: Update QA section in PR template @@ -2616,6 +2892,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#6936](https://github.com/MetaMask/metamask-mobile/pull/6936): chore: remove onBackdropPress for signatures ### Fixed + - [#6653](https://github.com/MetaMask/metamask-mobile/pull/6653): fix: #893 fix immediate lock timer - [#6910](https://github.com/MetaMask/metamask-mobile/pull/6910): fix: remove translations files being pushed up to crowdin - [#6947](https://github.com/MetaMask/metamask-mobile/pull/6947): fix: Fix TS errors in `component-library` directory @@ -2633,7 +2910,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#6864](https://github.com/MetaMask/metamask-mobile/pull/6864): fix: custom position logic for badgeWrapper ## [7.5.0] + ### Added + - [#6865](https://github.com/MetaMask/metamask-mobile/pull/6865): feat: Create a performance E2E test for warm starts - [#6187](https://github.com/MetaMask/metamask-mobile/pull/6187): feat: Add guidelines for contributors - [#6732](https://github.com/MetaMask/metamask-mobile/pull/6732): feat: add missing `wallet_requestPermissions` and `wallet_getPermissions` to the mobile API. @@ -2649,6 +2928,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#6755](https://github.com/MetaMask/metamask-mobile/pull/6755): feat: sdk protocol update ### Changed + - [#6884](https://github.com/MetaMask/metamask-mobile/pull/6884): chore: Update `@metamask/controller-utils` to v3.4 - [#6876](https://github.com/MetaMask/metamask-mobile/pull/6876): chore: Update Jest to v28 - [#6784](https://github.com/MetaMask/metamask-mobile/pull/6784): refactor: Use selectors for token list controller state access @@ -2656,9 +2936,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#6752](https://github.com/MetaMask/metamask-mobile/pull/6752): refactor: Use selectors for currency rate controller state access - [#6687](https://github.com/MetaMask/metamask-mobile/pull/6687): refactor: split approvals into separate files - [#6848](https://github.com/MetaMask/metamask-mobile/pull/6848): refactor: Use Redux network controller state -- [#6775](https://github.com/MetaMask/metamask-mobile/pull/6775): refactor: Use selectors for preferences controller state +- [#6775](https://github.com/MetaMask/metamask-mobile/pull/6775): refactor: Use selectors for preferences controller state - [#6808](https://github.com/MetaMask/metamask-mobile/pull/6808): refactor: Updated constants structure for button to remove -access + access - [#6814](https://github.com/MetaMask/metamask-mobile/pull/6814): refactor(ramp): rename fiat aggregator folder to ramp - [#6804](https://github.com/MetaMask/metamask-mobile/pull/6804): refactor(on-ramp): refactor quotes screen - [#6820](https://github.com/MetaMask/metamask-mobile/pull/6820): refactor: Use selectors for nft controller state access @@ -2673,6 +2953,7 @@ access - [#6080](https://github.com/MetaMask/metamask-mobile/pull/6080): refactor: TypeScript ~4.8.4 and ESLint deps upgrades and initial type fixes ### Fixed + - [#6863](https://github.com/MetaMask/metamask-mobile/pull/6863): fix: misalignment issue for multiselect cells - [#6600](https://github.com/MetaMask/metamask-mobile/pull/6600): refactor: accept SignController approval request from frontend - [#6844](https://github.com/MetaMask/metamask-mobile/pull/6844): fix: Android filename validation when downloading from browser @@ -2688,7 +2969,9 @@ access - [#6903](https://github.com/MetaMask/metamask-mobile/pull/6903): fix: Fix crash when switching to Linea ## [7.4.0] + ### Added + - [#6805](https://github.com/MetaMask/metamask-mobile/pull/6805): feat(on-ramp): upgrade on-ramp SDK with apple pay support - [#6679](https://github.com/MetaMask/metamask-mobile/pull/6679): feat(on-ramp): upgrade on-ramp-sdk to v1.22.0 with abort controller support - [#6799](https://github.com/MetaMask/metamask-mobile/pull/6799): feat: prioritize resume over deeplink to accelerate reconnection flow @@ -2699,6 +2982,7 @@ access - [#6755](https://github.com/MetaMask/metamask-mobile/pull/6755): feat: sdk protocol update ### Changed + - [#6804](https://github.com/MetaMask/metamask-mobile/pull/6804): refactor(on-ramp): refactor quotes screen - [#6784](https://github.com/MetaMask/metamask-mobile/pull/6784): refactor: Use selectors for token list controller state access - [#6758](https://github.com/MetaMask/metamask-mobile/pull/6758): refactor: Use selectors for tokens controller state access @@ -2707,6 +2991,7 @@ access - [#6752](https://github.com/MetaMask/metamask-mobile/pull/6752): refactor: Use selectors for currency rate controller state access ### Fixed + - [#6754](https://github.com/MetaMask/metamask-mobile/pull/6754): fix: sending an ERC20 token with an amount with more decimals than the token decimal, results in nothing - [#6790](https://github.com/MetaMask/metamask-mobile/pull/6790): fix: update snapshot for linea mainnet - [#6587](https://github.com/MetaMask/metamask-mobile/pull/6587): fix: Improves handling of missing WCv2 Project ID @@ -2715,11 +3000,15 @@ access - [#6753](https://github.com/MetaMask/metamask-mobile/pull/6753): fix: Delete collectible media reproductor ## [7.3.1] + ### Fixed + - [#6833](https://github.com/MetaMask/metamask-mobile/pull/6833): fix: invalid transaction data used for approve transaction ## [7.3.0] + ### Added + - [#6220](https://github.com/MetaMask/metamask-mobile/pull/6220): feat: Upgrade React Native to 0.71.6 - [#6596](https://github.com/MetaMask/metamask-mobile/pull/6596): feat: Memoise token balance controler hook - [#6639](https://github.com/MetaMask/metamask-mobile/pull/6639): feat: approval flow for add & switch network @@ -2732,6 +3021,7 @@ access - [#6499](https://github.com/MetaMask/metamask-mobile/pull/6499): feat: `eth_accounts` return all permitted accounts ### Changed + - [#6662](https://github.com/MetaMask/metamask-mobile/pull/6662): refactor: Remove dead network controller code - [#6664](https://github.com/MetaMask/metamask-mobile/pull/6664): refactor: Simplify `isMainnet` utility function - [#6723](https://github.com/MetaMask/metamask-mobile/pull/6723): refactor: Updated checkbox style and icon @@ -2743,6 +3033,7 @@ access - [#6641](https://github.com/MetaMask/metamask-mobile/pull/6641): refactor: approve and reject transactions using approval controller ### Fixed + - [#6741](https://github.com/MetaMask/metamask-mobile/pull/6741): fix: onPress prop added to SelectItem component - [#6722](https://github.com/MetaMask/metamask-mobile/pull/6722): fix: WC2 error management and SDK 'authorized' event - [#6729](https://github.com/MetaMask/metamask-mobile/pull/6729): fix: update multi select snapshot @@ -2752,7 +3043,9 @@ access - [#6637](https://github.com/MetaMask/metamask-mobile/pull/6637): fix: Support Decimal Comma for Token Custom Spend Cap ## [7.2.0] + ### Added + - [#6632](https://github.com/MetaMask/metamask-mobile/pull/6632): feat: add linea mainnet alert message - [#6496](https://github.com/MetaMask/metamask-mobile/pull/6496): feat(551): add Linea Mainnet - [#6494](https://github.com/MetaMask/metamask-mobile/pull/6494): feat: Update banner component to show/hide details section @@ -2769,6 +3062,7 @@ access - [#6486](https://github.com/MetaMask/metamask-mobile/pull/6486): feat: Add disabled prop on base button ### Changed + - [#6612](https://github.com/MetaMask/metamask-mobile/pull/6612): chore: approve txn when gas estimation ready - [#6054](https://github.com/MetaMask/metamask-mobile/pull/6054): chore: Improve TagURL - [#6520](https://github.com/MetaMask/metamask-mobile/pull/6520): chore: improve variable name @@ -2785,6 +3079,7 @@ access - [#6357](https://github.com/MetaMask/metamask-mobile/pull/6357): refactor: use approval controller for watch asset confirmation ### Fixed + - [#6549](https://github.com/MetaMask/metamask-mobile/pull/6549): fix: Networks text alignement - [#6634](https://github.com/MetaMask/metamask-mobile/pull/6634): fix: disable next button if custom input is invalid - [#6491](https://github.com/MetaMask/metamask-mobile/pull/6491): fix: refactor linea testnet implementation @@ -2797,11 +3092,13 @@ access - [#6473](https://github.com/MetaMask/metamask-mobile/pull/6473): fix: fix for swaps button displaying on unsupported networks - [#6464](https://github.com/MetaMask/metamask-mobile/pull/6464): fix: bug domain not shown on signature - [#6517](https://github.com/MetaMask/metamask-mobile/pull/6517): fix: remove duplicate ganache steps definitions -- [#6299](https://github.com/MetaMask/metamask-mobile/pull/6299): fix: for from address balance shown for ERC20 transfers +- [#6299](https://github.com/MetaMask/metamask-mobile/pull/6299): fix: for from address balance shown for ERC20 transfers - [#6471](https://github.com/MetaMask/metamask-mobile/pull/6471): fix: Approve default ERC20 ## [7.1.0] + ### Added + - [#6351](https://github.com/MetaMask/metamask-mobile/pull/6351): feat: use thunk to handle processed order side effects - [#5829](https://github.com/MetaMask/metamask-mobile/pull/5829): feat: order of browser page load events - [#6230](https://github.com/MetaMask/metamask-mobile/pull/6230): feat: Asset Overview / Token Detail view redesign @@ -2820,6 +3117,7 @@ access - [#6334](https://github.com/MetaMask/metamask-mobile/pull/6334): feat: Aurora Token Detection ### Changed + - [#6406](https://github.com/MetaMask/metamask-mobile/pull/6406): chore: Use core signature controller - [#6427](https://github.com/MetaMask/metamask-mobile/pull/6427): refactor: Refactor unit tests for React Native 0.71.6 upgrade - [#6192](https://github.com/MetaMask/metamask-mobile/pull/6192): chore: Show account balance in signature screen @@ -2837,6 +3135,7 @@ access - [#6345](https://github.com/MetaMask/metamask-mobile/pull/6345): chore: es.js file ### Fixed + - [#6439](https://github.com/MetaMask/metamask-mobile/pull/6439): fix: remove invalid accessibilityRole value - [#6442](https://github.com/MetaMask/metamask-mobile/pull/6442): fix(ci): Remove `restore-build` steps - [#6311](https://github.com/MetaMask/metamask-mobile/pull/6311): fix: token balance displayed in approval pages @@ -2844,15 +3143,21 @@ access - [#6350](https://github.com/MetaMask/metamask-mobile/pull/6350): fix: ENS name displayed on confirm send page ## [7.0.1] + ### Changed + - [#6558](https://github.com/MetaMask/metamask-mobile/pull/6558): refactor(whats-new-modal): remove onramp content ## [7.0.0] + ### Added + - [#6536](https://github.com/MetaMask/metamask-mobile/pull/6380): [FEATURE] WalletConnect v2 Integration (#6380) ## [6.6.0] + ### Added + - [#6325](https://github.com/MetaMask/metamask-mobile/pull/6325): [FEATURE] Add development environment to onramp-sdk - [#6165](https://github.com/MetaMask/metamask-mobile/pull/6165): [FEATURE] Edit account name view - [#6093](https://github.com/MetaMask/metamask-mobile/pull/6093): [FEATURE] Account actions on wallet view @@ -2860,12 +3165,14 @@ access - [#6085](https://github.com/MetaMask/metamask-mobile/pull/6085): [FEATURE] Update account section with card ### Changed + - [#6228](https://github.com/MetaMask/metamask-mobile/pull/6228): [UPDATE] Checkbox component - [#6226](https://github.com/MetaMask/metamask-mobile/pull/6226): [UPDATE] Button's icon props and button org - [#6255](https://github.com/MetaMask/metamask-mobile/pull/6255): [UPDATE] Onboarding translation updated - [#6210](https://github.com/MetaMask/metamask-mobile/pull/6210): [UPDATE] Extend the readme documentation to cover E2E testing in more detail. ### Fixed + - [#6249](https://github.com/MetaMask/metamask-mobile/pull/6249): [FIX] Terms of Use checkbox test id - [#5866](https://github.com/MetaMask/metamask-mobile/pull/5866): [FIX] sturdier check - [#6340](https://github.com/MetaMask/metamask-mobile/pull/6340): [FIX] Missing network name onramp @@ -2874,10 +3181,10 @@ access - [#6246](https://github.com/MetaMask/metamask-mobile/pull/6246): [FIX] Wrong to account information on confirmation page - [#6253](https://github.com/MetaMask/metamask-mobile/pull/6253): [FIX] Confirm button should be disabled if account has no balance - - ## [6.5.0] + ### Added + - [#5743](https://github.com/MetaMask/metamask-mobile/pull/5743): [FEATURE] On-ramp: Add buy-crypto deeplink - [#6166](https://github.com/MetaMask/metamask-mobile/pull/6166): [FEATURE] trigger walletconnect modal using approval controller - [#6223](https://github.com/MetaMask/metamask-mobile/pull/6223): [IMPROVEMENT] Update to Node.js v16 @@ -2898,19 +3205,22 @@ access - [#6056](https://github.com/MetaMask/metamask-mobile/pull/6056): [IMPROVEMENT] Show Identicon for unknown token and if token icon is unknown ### Changed + - [#6157](https://github.com/MetaMask/metamask-mobile/pull/6157): [REFACTOR] Change Password setting - [#6173](https://github.com/MetaMask/metamask-mobile/pull/6173): [REFACTOR] Auto Lock section ### Fixed + - [#6201](https://github.com/MetaMask/metamask-mobile/pull/6201): [FIX] [SDK] Missing redirect breaking backward compatibility - [#6232](https://github.com/MetaMask/metamask-mobile/pull/6232): [FIX] bottom margin for detecting end of the page - [#6185](https://github.com/MetaMask/metamask-mobile/pull/6185): [FIX] remove pubnub package and associated sync with extension code - [#5718](https://github.com/MetaMask/metamask-mobile/pull/5718): [FIX] Nonce Too Low for Approve Transaction - [#6076](https://github.com/MetaMask/metamask-mobile/pull/6076): [BUGFIX] Fixes WalletConnect deep links (wc:// schema) not working properly - ## [6.4.0] + ### Added + - [#6144](https://github.com/MetaMask/metamask-mobile/pull/6144): [FEATURE] New Crowdin translations by Github Action - [#6143](https://github.com/MetaMask/metamask-mobile/pull/6143): [UPDATE] Crowdin token to use METAMASKBOT_CROWDIN_TOKEN - [#5627](https://github.com/MetaMask/metamask-mobile/pull/5627): [IMPROVEMENT] Refactor remaining `web3-provider-engine` methods @@ -2929,6 +3239,7 @@ access - [#6060](https://github.com/MetaMask/metamask-mobile/pull/6060): [IMPROVEMENT] Refactor send transaction v2 ### Changed + - [#6134](https://github.com/MetaMask/metamask-mobile/pull/6134): [REFACTOR] Reveal Private Key section - [#6015](https://github.com/MetaMask/metamask-mobile/pull/6015): [UPDATE] sentry version and enable performance metrics @@ -2936,12 +3247,15 @@ access - [#6006](https://github.com/MetaMask/metamask-mobile/pull/6006): [UPDATE] Upgrade xcode version ### Fixed + - [#6109](https://github.com/MetaMask/metamask-mobile/pull/6109): [FIX] linea network order in dropdown + remove feature toggle for linea (#6072) - [#6058](https://github.com/MetaMask/metamask-mobile/pull/6058): [FIX] broken erc721 approve token link - [#6122](https://github.com/MetaMask/metamask-mobile/pull/6122): [FIX] TypeError: undefined is not an object (evaluating 'n.find') ## [6.3.0] + ### Added + - [#6039](https://github.com/MetaMask/metamask-mobile/pull/6039): [ENHANCEMENT] Improve Android setup instructions - [#5996](https://github.com/MetaMask/metamask-mobile/pull/5996): [ENHANCEMENT] Add document to refactor signature request code - [#5958](https://github.com/MetaMask/metamask-mobile/pull/5958): [FEATURE] add consensys zkevm (Linea) support @@ -2959,10 +3273,12 @@ access - [#5327](https://github.com/MetaMask/metamask-mobile/pull/5327): [FEATURE] Verify Contract Details ### Changed + - [#5669](https://github.com/MetaMask/metamask-mobile/pull/5669): [UPDATE] http-cache-semantics from 4.1.0 to 4.1.1 - [#5959](https://github.com/MetaMask/metamask-mobile/pull/5959): [UPDATE] @xmldom/xmldom from 0.8.3 to 0.8.6 ### Fixed + - [#5962](https://github.com/MetaMask/metamask-mobile/pull/5962): [FIX] Remove select address as a prop on App index.js - [#5941](https://github.com/MetaMask/metamask-mobile/pull/5941): [FIX] bundle video in app to prevent crash when not available - [#5839](https://github.com/MetaMask/metamask-mobile/pull/5839): [FIX] Clear Hex data when Token Transfer reverts ETH @@ -2972,7 +3288,9 @@ access - [#6025](https://github.com/MetaMask/metamask-mobile/pull/6025): [FIX] Add url-parse lib to our MainNavigator ## [6.2.0] + ### Added + - [#5807](https://github.com/MetaMask/metamask-mobile/pull/5807): [IMPROVEMENT] "preview build" support to Bitrise - [#5870](https://github.com/MetaMask/metamask-mobile/pull/5870): [IMPROVEMENT] On-ramp: Add buy crypto home button - [#5529](https://github.com/MetaMask/metamask-mobile/pull/5529): [IMPROVEMENT] Network Controller refactor to use the same selector @@ -2986,6 +3304,7 @@ access - [#5374](https://github.com/MetaMask/metamask-mobile/pull/5374): [IMPROVEMENT] Authentication refactor ### Changed + - [#5924](https://github.com/MetaMask/metamask-mobile/pull/5924): [UPDATE] the README setup steps - [#5775](https://github.com/MetaMask/metamask-mobile/pull/5775): [UPDATE] Security Privacy Remember me feature - [#5803](https://github.com/MetaMask/metamask-mobile/pull/5803): [UPDATE] Sentry: remove DSN value from codebase @@ -2995,21 +3314,27 @@ access - [#5901](https://github.com/MetaMask/metamask-mobile/pull/5901): [UPDATE] assets-controllers patch ### Fixed + - [#5890](https://github.com/MetaMask/metamask-mobile/pull/5890): [FIX] Swap with wallet connect - [#5750](https://github.com/MetaMask/metamask-mobile/pull/5750): [FIX] Enable clipboard for private credentials - ## [6.1.2] + ### Fixed + - [#5925](https://github.com/MetaMask/metamask-mobile/pull/5925): [FIX] handle all ios biometric errors and create wallet - [#5906](https://github.com/MetaMask/metamask-mobile/pull/5906): [FIX] Add try-catch to recreateVault ## [6.1.1] + ### Fixed + - [#5848](https://github.com/MetaMask/metamask-mobile/pull/5848): [FIX] Remove default eth sign ## [6.1.0] + ### Added + - [#5461](https://github.com/MetaMask/metamask-mobile/pull/5461): [IMPROVEMENT] On-ramp: Refactor Payment Methods view to componentization - [#5813](https://github.com/MetaMask/metamask-mobile/pull/5813): [FEATURE] Add copy for portfolio button for translations - [#5797](https://github.com/MetaMask/metamask-mobile/pull/5797): [IMPROVEMENT] Remove phishing list update engine removal @@ -3035,9 +3360,11 @@ access - [#5218](https://github.com/MetaMask/metamask-mobile/pull/5218): [IMPROVEMENT] Improve deeplinks experience ### Changed + - [#5768](https://github.com/MetaMask/metamask-mobile/pull/5768): [UPGRADE] Segment Analytics 2.13.0 ### Fixed + - [#5657](https://github.com/MetaMask/metamask-mobile/pull/5657): [FIX] fix the RequestTokenFlow E2E test - [#5675](https://github.com/MetaMask/metamask-mobile/pull/5675): [FIX] Fix eslint commit hook - [#5608](https://github.com/MetaMask/metamask-mobile/pull/5608): [FIX] SRP recover when an error is thrown @@ -3064,11 +3391,15 @@ access - [#5729](https://github.com/MetaMask/metamask-mobile/pull/5729): [FIX] Bump react-native-reanimated to 2.14.0 ## [6.0.1] + ### Fixed + - [#5799](https://github.com/MetaMask/metamask-mobile/pull/5799): [FIX] Browser: handle unsupported URLs ## [6.0.0] + ### Added + - [#5062](https://github.com/MetaMask/metamask-mobile/pull/5062): [FEATURE] Implement Permission System - [#5659](https://github.com/MetaMask/metamask-mobile/pull/5659): [IMPROVEMENT] E2E fix tapReminder step - [#5641](https://github.com/MetaMask/metamask-mobile/pull/5641): [IMPROVEMENT] Use Set when filtering blocklist @@ -3084,12 +3415,14 @@ access - [#5559](https://github.com/MetaMask/metamask-mobile/pull/5559): [ANALYTICS] Add analytics events for SRP reveal ### Changed + - [#5594](https://github.com/MetaMask/metamask-mobile/pull/5594): [UPGRADE] bumped ua-parser-js to 0.7.33 - [#5580](https://github.com/MetaMask/metamask-mobile/pull/5580): [UPGRADE] Bump cookiejar from 2.1.2 to 2.1.4 - [#5471](https://github.com/MetaMask/metamask-mobile/pull/5471): [UPGRADE] Bump luxon from 3.1.1 to 3.2.1 - [#5450](https://github.com/MetaMask/metamask-mobile/pull/5450): [UPGRADE] Bump json5 from 1.0.1 to 1.0.2 ### Fixed + - [#5626](https://github.com/MetaMask/metamask-mobile/pull/5626): [FIX] SRP Quiz content and translations - [#5612](https://github.com/MetaMask/metamask-mobile/pull/5612): [FIX] Make Prettier work in wdio directory - [#5605](https://github.com/MetaMask/metamask-mobile/pull/5605): [FIX] Handle ENS Address Error @@ -3099,9 +3432,10 @@ access - [#5714](https://github.com/MetaMask/metamask-mobile/pull/5714): [FIX] Importing private key via QR code redirects to browser - [#5709](https://github.com/MetaMask/metamask-mobile/pull/5709): [FIX] Settings networks icons were missing - ## [5.14.0] + ### Added + - [#5535](https://github.com/MetaMask/metamask-mobile/pull/5535): [IMPROVEMENT] Add content for "Add friction to revealing SRP" - [#5506](https://github.com/MetaMask/metamask-mobile/pull/5506): [IMPROVEMENT] On-ramp: Add NavBar tests to GetStarted and Regions Views - [#5495](https://github.com/MetaMask/metamask-mobile/pull/5495): [IMPROVEMENT] Copy update for metamask fee on swaps @@ -3142,9 +3476,11 @@ access - [#5430](https://github.com/MetaMask/metamask-mobile/pull/5430): [IMPROVEMENT] Remove Text as any occurrences ### Changed + - [#5496](https://github.com/MetaMask/metamask-mobile/pull/5496): [REVERT] Onramp - Remove Text as any ocurrences ### Fixed + - [#5219](https://github.com/MetaMask/metamask-mobile/pull/5219): [FIX] Update selected network when delete network manually inserted - [#5440](https://github.com/MetaMask/metamask-mobile/pull/5440): [FIX] Approval error when insufficient balance - [#5468](https://github.com/MetaMask/metamask-mobile/pull/5468): [FIX] Screenshot deterrent analytics @@ -3161,7 +3497,9 @@ access - [#5444](https://github.com/MetaMask/metamask-mobile/pull/5444): [FIX] Fix unecessary executions of useEffect ## [5.13.0] + ### Added + - [#5424](https://github.com/MetaMask/metamask-mobile/pull/5424): [IMPROVEMENT] Add Screenshot Warning to ImportPrivateKey - [#4670](https://github.com/MetaMask/metamask-mobile/pull/4670): [FEAT] Screenshot Warning - [#5376](https://github.com/MetaMask/metamask-mobile/pull/5376): [IMPROVEMENT] Include L1 fee in the Send flow and on the tx detail page for Optimism @@ -3170,6 +3508,7 @@ access - [#5083](https://github.com/MetaMask/metamask-mobile/pull/5083): [IMPROVEMENT] Component: Custom Spending Cap ### Changed + - [#5381](https://github.com/MetaMask/metamask-mobile/pull/5381): [UPDATE] Bumped contract-metadata to 2.1.0 - [#5422](https://github.com/MetaMask/metamask-mobile/pull/5422): [UPDATE] Add custom network and Import custom token - [#5200](https://github.com/MetaMask/metamask-mobile/pull/5200): [UPDATE] Update Controllers to version 33.0.0 @@ -3178,28 +3517,36 @@ access - [#5351](https://github.com/MetaMask/metamask-mobile/pull/5351): [REMOVE] On-ramp: remove old on-ramp experience ### Fixed + - [#5400](https://github.com/MetaMask/metamask-mobile/pull/5400): [FIX] jest expect type - [#5115](https://github.com/MetaMask/metamask-mobile/pull/5115): [FIX] cancelling transaction when user does not give dapp permission to transfer funds - ## [5.12.3] + ### Changed + - Hotfix version bump for iOS only release, no code changes ## [5.12.1] + ### Added + - [#5307](https://github.com/MetaMask/metamask-mobile/pull/5307): [IMPROVEMENT] Remove RPC URL, Block Explorer URL, Network Name from metrics -- [#5355](https://github.com/MetaMask/metamask-mobile/pull/5355): [IMPROVEMENT] Sanitize privacy settings before sending to Sentry +- [#5355](https://github.com/MetaMask/metamask-mobile/pull/5355): [IMPROVEMENT] Sanitize privacy settings before sending to Sentry ### Changed + - [#5362](https://github.com/MetaMask/metamask-mobile/pull/5362): [UPDATE] Copy for Opt in metrics screen and enable custom mainnet RPC - [#5366](https://github.com/MetaMask/metamask-mobile/pull/5366): [UPDATE] On-ramp Refactor wyre authentication URL approach ### Fixed + - [#5360](https://github.com/MetaMask/metamask-mobile/pull/5360): [FIX] Onboarding wizard automatic update modal ## [5.12.0] + ### Added + - [#5335](https://github.com/MetaMask/metamask-mobile/pull/5335): [IMPROVEMENT] On-ramp: Add useRegions hook and fix availablePaymentMethods - [#5333](https://github.com/MetaMask/metamask-mobile/pull/5333): [IMPROVEMENT] Only fetch minimum versions if permissions enabled - [#5238](https://github.com/MetaMask/metamask-mobile/pull/5238): [IMPROVEMENT] Browser experience @@ -3214,6 +3561,7 @@ access - [#5194](https://github.com/MetaMask/metamask-mobile/pull/5194): [FEATURE] Add more granular killswitches for swaps ### Changed + - [#5237](https://github.com/MetaMask/metamask-mobile/pull/5237): [DEPENDENCIES] Update Segment dependencies - [#5220](https://github.com/MetaMask/metamask-mobile/pull/5220): [UPDATE] On-ramp-sdk@1.3.1: Wyre Apple Pay auth support and inAppBrowser hook - [#5266](https://github.com/MetaMask/metamask-mobile/pull/5266): [REMOVE] On-ramp: Remove disabled button in amount to buy screen @@ -3222,6 +3570,7 @@ access - [#5331](https://github.com/MetaMask/metamask-mobile/pull/5331): [UPDATE] Bump @metamask/swaps-controller ### Fixed + - [#5264](https://github.com/MetaMask/metamask-mobile/pull/5264): [FIX] Date msBetweenDates test - [#5268](https://github.com/MetaMask/metamask-mobile/pull/5268): [FIX] On-Ramp: Fix typos from payment method icon and contact support - [#5269](https://github.com/MetaMask/metamask-mobile/pull/5269): [FIX] On-Ramp: Fix 1.3.1 creating undefined custom order ids @@ -3233,9 +3582,10 @@ access - [#5169](https://github.com/MetaMask/metamask-mobile/pull/5169): [FIX] Miscalculation on toWei func when passing valid numbers in scientific notation - [#5337](https://github.com/MetaMask/metamask-mobile/pull/5337): [FIX] Send ERC-20 tokens on legacy networks - ## [5.11.0] + ### Added + - [#5088](https://github.com/MetaMask/metamask-mobile/pull/5088): [IMPROVEMENT] Add no payment methods screen - [#5223](https://github.com/MetaMask/metamask-mobile/pull/5223): [IMPROVEMENT] Add payment method icons support - [#5198](https://github.com/MetaMask/metamask-mobile/pull/5198): [IMPROVEMENT] Improve loading experience @@ -3244,7 +3594,9 @@ access - [#5188](https://github.com/MetaMask/metamask-mobile/pull/5188): [IMPROVEMENT] Networks-flow appium feature file ## [5.10.0] + ### Added + - [#5202](https://github.com/MetaMask/metamask-mobile/pull/5202): [FEAT] On-Ramp: allow Harmony ONE - [#5195](https://github.com/MetaMask/metamask-mobile/pull/5195): [FEAT] Onramp: Add exclude from purchases to onramp aggregator orders - [#5158](https://github.com/MetaMask/metamask-mobile/pull/5158): [FEAT] On-Ramp: Provider payment method custom action and custom order ids @@ -3254,6 +3606,7 @@ access - [#4888](https://github.com/MetaMask/metamask-mobile/pull/4888): [FEAT] Extend popular network list ### Changed + - [#5096](https://github.com/MetaMask/metamask-mobile/pull/5096): [UPDATE] Update audit list - [#4835](https://github.com/MetaMask/metamask-mobile/pull/4835): [UPDATE] Refactor SendTransaction Component - [#5113](https://github.com/MetaMask/metamask-mobile/pull/5113): [UPDATE] avoid using Rinkeby in wallet & import network test @@ -3262,6 +3615,7 @@ access - [#5064](https://github.com/MetaMask/metamask-mobile/pull/5064): [UPDATE] Refactor Approve Component ### Fixed + - [#5142](https://github.com/MetaMask/metamask-mobile/pull/5142): [FIX] Fix high severity audit issues - [#4235](https://github.com/MetaMask/metamask-mobile/pull/4235): [FIX] Delete contact on android fixed - [#5116](https://github.com/MetaMask/metamask-mobile/pull/5116): [FIX] Updated EditLegacy Component @@ -3272,11 +3626,15 @@ access - [#5217](https://github.com/MetaMask/metamask-mobile/pull/5217): [FIX] Send to the wrong address ## [5.9.1] + ### Fixed + - [#5172](https://github.com/MetaMask/metamask-mobile/pull/5172): [FIX] ENS name being resolved correctly ## [5.9.0] + ### Added + - [#5077](https://github.com/MetaMask/metamask-mobile/pull/5077): [FEATURE] translations for permission system - [#5040](https://github.com/MetaMask/metamask-mobile/pull/5040): [ADD] Component/4721-card - [#5065](https://github.com/MetaMask/metamask-mobile/pull/5065): [ENHANCEMENT] added shadows to useAppTheme @@ -3288,14 +3646,16 @@ access - [#5025](https://github.com/MetaMask/metamask-mobile/pull/5025): [ENHANCEMENT] Remove all "Ooops" copies ### Changed + - [#5024](https://github.com/MetaMask/metamask-mobile/pull/5024): [UPDATE] app name for release-to-store step - [#5006](https://github.com/MetaMask/metamask-mobile/pull/5006): [UPDATE] Bump @keystonehq/ur-decoder from 0.3.0 to 0.6.1 - [#5033](https://github.com/MetaMask/metamask-mobile/pull/5033): [UPDATE] default iOS simulator - [#5058](https://github.com/MetaMask/metamask-mobile/pull/5058): [UPDATE] patch vm2 via resolution -- [#5039](https://github.com/MetaMask/metamask-mobile/pull/5039): [UPDATE] update shadow tokens +- [#5039](https://github.com/MetaMask/metamask-mobile/pull/5039): [UPDATE] update shadow tokens - [#4804](https://github.com/MetaMask/metamask-mobile/pull/4804): [UPDATE] GasPolling refactor UpdateEIP1559Transaction Component ### Fixed + - [#5035](https://github.com/MetaMask/metamask-mobile/pull/5035): [FIX] On-Ramp: Fix autolock dispatch for apple pay - [#5079](https://github.com/MetaMask/metamask-mobile/pull/5079): [FIX] Network switch during QR scan in Send Flow - [#5034](https://github.com/MetaMask/metamask-mobile/pull/5034): [FIX] Wallet Connect PR#4934 and PR#4861 @@ -3304,11 +3664,15 @@ access - [#5044](https://github.com/MetaMask/metamask-mobile/pull/5044): [FIX] evaluating ‘transaction.status’ ## [5.8.1] + ### Added + - [#4286](https://github.com/MetaMask/metamask-mobile/pull/4286): [ENHANCEMENT] Integrates MetaMask SDK support ## [5.8.0] + ### Added + - [#4833](https://github.com/MetaMask/metamask-mobile/pull/4833): [ENHANCEMENT] Implement new QA builds for both Android and iOS - [#4993](https://github.com/MetaMask/metamask-mobile/pull/4993): [ENHANCEMENT] On-Ramp: Add scrolling to payment methods and make logo property optional - [#4997](https://github.com/MetaMask/metamask-mobile/pull/4997): [ENHANCEMENT] SRP Reveal Timestamp @@ -3322,6 +3686,7 @@ access - [#4938](https://github.com/MetaMask/metamask-mobile/pull/4938): [ENHANCEMENT] Bump git-clone version to 6 in Bitrise machines ### Changed + - [#4755](https://github.com/MetaMask/metamask-mobile/pull/4755): [UPDATE] - New template fields added to reflect newer requirements for PRs - [#4782](https://github.com/MetaMask/metamask-mobile/pull/4782): [DEPENDENCIES] Detox version bump from 19.6.5 to 19.7.1 - [#4941](https://github.com/MetaMask/metamask-mobile/pull/4941): [DEPENDENCIES] Replace "@react-native-community/async-storage" for "@react-native-async-storage/async-storage" @@ -3329,6 +3694,7 @@ access - [#3438](https://github.com/MetaMask/metamask-mobile/pull/3438): [DEPENDENCIES] Bump metro from 0.59.0 to 0.66.2 ### Fixed + - [#5018](https://github.com/MetaMask/metamask-mobile/pull/5018): [FIX] Vault corruption error log - [#4972](https://github.com/MetaMask/metamask-mobile/pull/4972): [FIX] Unable to Speedup/Cancel legacy transactions - [#4430](https://github.com/MetaMask/metamask-mobile/pull/4430): [FIX] Keystone: Pagination and missing addresses @@ -3337,7 +3703,9 @@ access - [#4958](https://github.com/MetaMask/metamask-mobile/pull/4958): [FIX] WebView Origin Allowlist ## [5.7.0] + ### Added + - [#4897](https://github.com/MetaMask/metamask-mobile/pull/4897): [IMPROVEMENT] Automatic security checks settings - [#4902](https://github.com/MetaMask/metamask-mobile/pull/4902): [IMPROVEMENT] Deprecated networks Alert border fixed - [#4885](https://github.com/MetaMask/metamask-mobile/pull/4885): [IMPROVEMENT] Implement warning for deprecated test networks, kovan, ropsten and rinkeby @@ -3352,12 +3720,14 @@ access - [#4809](https://github.com/MetaMask/metamask-mobile/pull/4809): [IMPROVEMENT] Component/4779 Audit ### Changed + - [#4839](https://github.com/MetaMask/metamask-mobile/pull/4839): [DEPENDENCIES] Introduce @testing-library/react-hooks dependency - [#4595](https://github.com/MetaMask/metamask-mobile/pull/4595): [DEPENDENCIES] Upgrade react-native-device-info to 9.0.2 - [#4748](https://github.com/MetaMask/metamask-mobile/pull/4748): [UPGRADE] Patch bump for SoLoader version on Android - [#4896](https://github.com/MetaMask/metamask-mobile/pull/4896): [DEPENDENCIES] Upgrade on-ramp-sdk to 1.2.0 ### Fixed + - [#4905](https://github.com/MetaMask/metamask-mobile/pull/4905): [FIX] Update send flow - [#4407](https://github.com/MetaMask/metamask-mobile/pull/4407): [FIX] Add browser cookies support on Android - [#4898](https://github.com/MetaMask/metamask-mobile/pull/4898): [FIX] Test sanitizeUrlInput error @@ -3373,12 +3743,16 @@ access - [#4799](https://github.com/MetaMask/metamask-mobile/pull/4799): [FIX] Reveal SRP or Private Key wrong password error ## [5.6.1] + ### Uncategorized + - [#4966](https://github.com/MetaMask/metamask-mobile/pull/4966): [FIX] Add http and https protocol to webview origin whitelist - [#4967](https://github.com/MetaMask/metamask-mobile/pull/4967): [FIX] Correct url parse ## [5.6.0] + ### Uncategorized + - [#4821](https://github.com/MetaMask/metamask-mobile/pull/4821): [FIX] Staging env redirection url for onramp - [#4742](https://github.com/MetaMask/metamask-mobile/pull/4742): [ADD] On-Ramp generic error view event - [#4743](https://github.com/MetaMask/metamask-mobile/pull/4743): [ADD] Payment Method logos @@ -3398,11 +3772,15 @@ access - [#4636](https://github.com/MetaMask/metamask-mobile/pull/4636): [FIX] NFT transfer with big token id ## [5.5.1] + ### Changed + - [UPDATE](https://github.com/MetaMask/dapps/pull/137): [UPDATE] Disable iOS explore links ## [5.5.0] + ### Uncategorized + - [#4475](https://github.com/MetaMask/metamask-mobile/pull/4475): [IMPROVEMENT] Swaps support for hardware wallet - [#4627](https://github.com/MetaMask/metamask-mobile/pull/4627): [IMPROVEMENT] Add typing support for payment methods to be used instead of payment IDs - [#4625](https://github.com/MetaMask/metamask-mobile/pull/4625): [FIX] Handle SecureKeychain failed access while passcode enabled @@ -3420,7 +3798,9 @@ access - [#4612](https://github.com/MetaMask/metamask-mobile/pull/4612): [IMPROVEMENT] Componentize Token Avatar ## [5.4.0] + ### Uncategorized + - [#4604](https://github.com/MetaMask/metamask-mobile/pull/4604): [IMPROVEMENT] Change quotes error to individual events - [#4497](https://github.com/MetaMask/metamask-mobile/pull/4497): [IMPROVEMENT] Add amount to onramp analytics events - [#4496](https://github.com/MetaMask/metamask-mobile/pull/4496): [IMPROVEMENT] Add currency destination symbol to purchase submitted @@ -3459,7 +3839,9 @@ access - [#4531](https://github.com/MetaMask/metamask-mobile/pull/4531): [IMPROVEMENT] Add delete wallet step spec ## [5.3.0] + ### Uncategorized + - [#4506](https://github.com/MetaMask/metamask-mobile/pull/4506): [IMPROVEMENT] Add OnRamp aggregator translations - [#4389](https://github.com/MetaMask/metamask-mobile/pull/4389): [FEAT] Easy delete data - [#4510](https://github.com/MetaMask/metamask-mobile/pull/4510): [IMPROVEMENT] Update RPC URL for xDai @@ -3489,7 +3871,9 @@ access - [#4367](https://github.com/MetaMask/metamask-mobile/pull/4367): [IMPROVEMENT] Make text hex data selectable ## [5.2.0] + ### Uncategorized + - [#4349](https://github.com/MetaMask/metamask-mobile/pull/4349): [FIX] Subtitle mapping - [#4344](https://github.com/MetaMask/metamask-mobile/pull/4344): [FIX] Fix homepage scripts and env import - [#4345](https://github.com/MetaMask/metamask-mobile/pull/4345): [FIX] Fix check for empty tokens list @@ -3509,7 +3893,9 @@ access - [#4183](https://github.com/MetaMask/metamask-mobile/pull/4183): [FIX] excluded audit because no available patch ## [5.1.0] + ### Uncategorized + - [#3929](https://github.com/MetaMask/metamask-mobile/pull/3929): [IMPROVEMENT] Defaults to current network if chain id not specified in QR codes - [#4159](https://github.com/MetaMask/metamask-mobile/pull/4159): [IMPROVEMENT] - iCloud Backup Restriction - [#4035](https://github.com/MetaMask/metamask-mobile/pull/4035): [FIX] Issue #207 @@ -3527,14 +3913,18 @@ access - [#4113](https://github.com/MetaMask/metamask-mobile/pull/4113): [FIX] Add ticker to SelectQRAccounts - [#3980](https://github.com/MetaMask/metamask-mobile/pull/3980): [FIX] Patch network specific asset modal (Token detection) - [#4154](https://github.com/MetaMask/metamask-mobile/pull/4154): [FIX] Update react-native-webview+11.13.0.patch -- [#4135](https://github.com/MetaMask/metamask-mobile/pull/4135): [IMPROVEMENT]browser improvement +- [#4135](https://github.com/MetaMask/metamask-mobile/pull/4135): [IMPROVEMENT]browser improvement ## [5.0.1] + ### Fixed + - [FIX] iOS Hotfix - Add LinkPresentation library ## [5.0.0] + ### Uncategorized + - [#3971](https://github.com/MetaMask/metamask-mobile/pull/3971): [FIX] Fix issues releated to deep/universal links - [#3925](https://github.com/MetaMask/metamask-mobile/pull/3925): [FEAT] Allow ApplePay in Transak webview. - [#4047](https://github.com/MetaMask/metamask-mobile/pull/4047): [FIX] Fix attribution url @@ -3545,7 +3935,9 @@ access - [#3948](https://github.com/MetaMask/metamask-mobile/pull/3948): [FIX] Update button on WebviewError ## [4.4.0] + ### Uncategorized + - [#3910](https://github.com/MetaMask/metamask-mobile/pull/3910): [IMPROVEMENT] Network Specific Asset Education - [#3877](https://github.com/MetaMask/metamask-mobile/pull/3877): [IMPROVEMENT] Add OSS attribution - [#3731](https://github.com/MetaMask/metamask-mobile/pull/3731): [FIX] Fix formatting of gas price for all conversion currencies @@ -3555,13 +3947,17 @@ access - [#3969](https://github.com/MetaMask/metamask-mobile/pull/3969): [FIX] Fix typo in network modal ## [4.3.1] + ### Fixed + - [#3946](https://github.com/MetaMask/metamask-mobile/pull/3946): [FIX] Fix error boundary SRP - [#3947](https://github.com/MetaMask/metamask-mobile/pull/3947): [FIX] Fix gas carousel price estimate - [#3940](https://github.com/MetaMask/metamask-mobile/pull/3940): [FIX] Fix browser crash ## [4.3.0] + ### Uncategorized + - [#3916](https://github.com/MetaMask/metamask-mobile/pull/3916): [FIX] Patch Android clipboard crasher - [#3776](https://github.com/MetaMask/metamask-mobile/pull/3776): [IMPROVEMENT] Enable dark mode - [#3899](https://github.com/MetaMask/metamask-mobile/pull/3899): [IMPROVEMENT] Improve WalletConnect checks @@ -3586,7 +3982,9 @@ access - [#3638](https://github.com/MetaMask/metamask-mobile/pull/3638): [IMPROVEMENT] Upgrade controllers to 25.1.0 ## [4.2.2] + ### Uncategorized + - [#3841](https://github.com/MetaMask/metamask-mobile/pull/3841): [FIX] Fix custom network icons on Wallet Overview - [#3839](https://github.com/MetaMask/metamask-mobile/pull/3839): [FIX] Update en.json - [#3838](https://github.com/MetaMask/metamask-mobile/pull/3838): [FIX] Fix onramp BUSD address. Add wc_description string @@ -3612,11 +4010,15 @@ access - [#3690](https://github.com/MetaMask/metamask-mobile/pull/3690): [FIX] Revert svg crash ## [4.1.1] + ### Uncategorized + - [3810](https://github.com/MetaMask/metamask-mobile/pull/3810) [FIX] Avalanche token crash ## [4.1.0] + ### Uncategorized + - [#3741](https://github.com/MetaMask/metamask-mobile/pull/3741): [FIX] Potential error message from missing transactions details - [#3738](https://github.com/MetaMask/metamask-mobile/pull/3738): [FIX] Error message for missing chain ID in deeplink - [#3725](https://github.com/MetaMask/metamask-mobile/pull/3725): [FIX] Login decrypt bug @@ -3642,18 +4044,24 @@ access - [#3672](https://github.com/MetaMask/metamask-mobile/pull/3672): [IMPROVEMENT] Bump simple-get from 2.8.1 to 4.0.1 ## [4.0.1] + ### Fixed + - [#3658](https://github.com/MetaMask/metamask-mobile/pull/3658): [HOTFIX] 4.0.1 - BN crash and NFT Improvement ## [4.0.0] + ### Uncategorized + - [#3509](https://github.com/MetaMask/metamask-mobile/pull/3509): [IMPROVEMENT] Upgrade to React Native 0.66.3 - [#3623](https://github.com/MetaMask/metamask-mobile/pull/3623): [FIX] Fix swaps slider button re-rendering - [#3481](https://github.com/MetaMask/metamask-mobile/pull/3481): [FIX] Fix confirm button disabled on txn confirmation - [#3495](https://github.com/MetaMask/metamask-mobile/pull/3495): [IMPROVEMENT] Reduce png file image weight using TinyPng cli tool ## [3.8.0] + ### Uncategorized + - [#3457](https://github.com/MetaMask/metamask-mobile/pull/3457): [FEAT] User review prompt - [#3465](https://github.com/MetaMask/metamask-mobile/pull/3465): [FIX] 3464 fix login bug - [#3430](https://github.com/MetaMask/metamask-mobile/pull/3430): [IMPROVEMENT] Add better initial state for swaps loading tokens @@ -3665,7 +4073,9 @@ access - [#3443](https://github.com/MetaMask/metamask-mobile/pull/3443): [UPDATE] Disable Sync with Extension ## [3.7.0] + ### Uncategorized + - [#3405](https://github.com/MetaMask/metamask-mobile/pull/3405): [FIX] Remove Metric Opt In event - [#3412](https://github.com/MetaMask/metamask-mobile/pull/3412): [UPGRADE] Android SDK and dependencies to support SDK 30 - [#3371](https://github.com/MetaMask/metamask-mobile/pull/3371): [FIX] iOS FaceID Deny Handler @@ -3681,7 +4091,9 @@ access - [#3357](https://github.com/MetaMask/metamask-mobile/pull/3357): [FIX] 404 dead links in readme ## [3.6.0] + ### Uncategorized + - [#3301](https://github.com/MetaMask/metamask-mobile/pull/3301): [FEATURE] ERC-1155 and custom network support - [#3343](https://github.com/MetaMask/metamask-mobile/pull/3343): [IMPROVEMENT] Add IPFS support for NFTs - [#3352](https://github.com/MetaMask/metamask-mobile/pull/3352): [FIX] Fix rendering issue when viewing data on transaction review screen @@ -3689,7 +4101,9 @@ access - [#3290](https://github.com/MetaMask/metamask-mobile/pull/3290): [FIX] Fix lost data when using wallet connect for ERC20 token transaction ## [3.5.0] + ### Uncategorized + - [#3340](https://github.com/MetaMask/metamask-mobile/pull/3340): [IMPROVEMENT] Reduce persisted data - [#3330](https://github.com/MetaMask/metamask-mobile/pull/3330): [IMPROVEMENT] Refactor EngineService - [#3325](https://github.com/MetaMask/metamask-mobile/pull/3325): [IMPROVEMENT] Isolate persisted data @@ -3708,7 +4122,9 @@ access - [#3271](https://github.com/MetaMask/metamask-mobile/pull/3271): [FIX] Update React Native dependecy links in README.md ## [3.4.1] + ### Uncategorized + - [#3260](https://github.com/MetaMask/metamask-mobile/pull/3260): [FIX] Turn off token detection by default - [#3261](https://github.com/MetaMask/metamask-mobile/pull/3261): [FIX] Fix blank screen on fresh start - [#3254](https://github.com/MetaMask/metamask-mobile/pull/3254): [IMPROVEMENT] Isolate LICENSE file @@ -3738,7 +4154,9 @@ access - [#3115](https://github.com/MetaMask/metamask-mobile/pull/3115): [IMPROVEMENT] Update README.md ## [3.3.0] + ### Uncategorized + - [#3099](https://github.com/MetaMask/metamask-mobile/pull/3099): [FEATURE] Transaction state improvement - [UPGRADE] react-native-webview 11.0.2 -> 11.13.0 - [#3101](https://github.com/MetaMask/metamask-mobile/pull/3101): [UPDATE] update swaps-controller and send clientId on fetchSwapsFeatureLiveness @@ -3760,7 +4178,9 @@ access - [#3057](https://github.com/MetaMask/metamask-mobile/pull/3057): [UPDATE] Remove SwapsLiveness checks for non supported networks ## [3.2.0] + ### Uncategorized + - [#3046](https://github.com/MetaMask/metamask-mobile/pull/3046): [FIX] Token Transfer to address - [#2878](https://github.com/MetaMask/metamask-mobile/pull/2878): [2783] Change default account name for ENS reversed-resolved name - [#3029](https://github.com/MetaMask/metamask-mobile/pull/3029): [FIX] Video Subtitles Not Loading Properly @@ -3769,7 +4189,9 @@ access - [#2718](https://github.com/MetaMask/metamask-mobile/pull/2718): Switched to sslip.io instead of xip.io ## [3.1.0] + ### Uncategorized + - [#3026](https://github.com/MetaMask/metamask-mobile/pull/3026): [FIX] Fix edit button - [#2981](https://github.com/MetaMask/metamask-mobile/pull/2981): [FIX] Delete Message - [#3017](https://github.com/MetaMask/metamask-mobile/pull/3017): [FIX] Fix deep links bug related to branch updates @@ -3787,11 +4209,15 @@ access - [#2973](https://github.com/MetaMask/metamask-mobile/pull/2973): [FEATURE] On-Ramp: Add on-ramp analytics ## [3.0.1] + ### Uncategorized + - Patch to fix Wyre and Transak ## [3.0.0] + ### Uncategorized + - [#2959](https://github.com/MetaMask/metamask-mobile/pull/2959): UI fixes - [#2957](https://github.com/MetaMask/metamask-mobile/pull/2957): Fix gas information info modal on swaps - [#2955](https://github.com/MetaMask/metamask-mobile/pull/2955): [EIP1559] Improve time estimates @@ -3808,7 +4234,9 @@ access - [#2890](https://github.com/MetaMask/metamask-mobile/pull/2890): Bump addressable from 2.7.0 to 2.8.0 in /ios ## [2.6.0] + ### Uncategorized + - [#2865](https://github.com/MetaMask/metamask-mobile/pull/2865): Added support for custom network gas estimates - [#2854](https://github.com/MetaMask/metamask-mobile/pull/2854): Fix time formatting on transactions - [#2883](https://github.com/MetaMask/metamask-mobile/pull/2883): Swaps: Fix isZero undefined error @@ -3816,7 +4244,9 @@ access - [#2709](https://github.com/MetaMask/metamask-mobile/pull/2709): Remove Picker deprecation warning ## [2.5.0] + ### Uncategorized + - [#2809](https://github.com/MetaMask/metamask-mobile/pull/2809): Optional chaining dollarBalance - [#2776](https://github.com/MetaMask/metamask-mobile/pull/2776): Fix: empty state when using fiat on non-mainnet transactions - [#2777](https://github.com/MetaMask/metamask-mobile/pull/2777): Add isInteraction: false @@ -3842,7 +4272,9 @@ access - [#2727](https://github.com/MetaMask/metamask-mobile/pull/2727): Add missing required prop in tests ## [2.4.0] + ### Uncategorized + - [#2618](https://github.com/MetaMask/metamask-mobile/pull/2618): Collectibles experience - [#2698](https://github.com/MetaMask/metamask-mobile/pull/2698): bugfix: navigation routeName is null - [#2692](https://github.com/MetaMask/metamask-mobile/pull/2692): Fix custom gas crash @@ -3857,7 +4289,9 @@ access - [#2628](https://github.com/MetaMask/metamask-mobile/pull/2628): Feature/use toLowerCaseCompare ## [2.3.0] + ### Uncategorized + - [#2674](https://github.com/MetaMask/metamask-mobile/pull/2674): Fix deploy contract and create token testnets - [#2669](https://github.com/MetaMask/metamask-mobile/pull/2669): Key off accounts - [#2670](https://github.com/MetaMask/metamask-mobile/pull/2670): Bump hosted-git-info from 2.8.8 to 2.8.9 @@ -3900,7 +4334,9 @@ access - [#2568](https://github.com/MetaMask/metamask-mobile/pull/2568): resolve isENS without case sensitivity (#2545) ## [2.2.0] + ### Uncategorized + - [#2547](https://github.com/MetaMask/metamask-mobile/pull/2547): Include decimalsToShow in balanceToFiatNumber - [#2554](https://github.com/MetaMask/metamask-mobile/pull/2554): Bug fix/sync import time - [#2546](https://github.com/MetaMask/metamask-mobile/pull/2546): Fix analytics try catch @@ -3927,19 +4363,27 @@ access - [#2381](https://github.com/MetaMask/metamask-mobile/pull/2381): Display correct number of decimals for 'usd' fiat ## [2.1.3] + ### Uncategorized + - [#2548](https://github.com/MetaMask/metamask-mobile/pull/2548): Hotfix analytics try catch ## [2.1.2] + ### Uncategorized + - [#2538](https://github.com/MetaMask/metamask-mobile/pull/2538): fix/connection change handler ## [2.1.1] + ### Uncategorized + - [#2520](https://github.com/MetaMask/metamask-mobile/pull/2520): Check provider status ## [2.1.0] + ### Uncategorized + - [#2487](https://github.com/MetaMask/metamask-mobile/pull/2487): Fix/analytics v1 priority1 - [#2456](https://github.com/MetaMask/metamask-mobile/pull/2456): Analytics v2 (priority 1) - [#2408](https://github.com/MetaMask/metamask-mobile/pull/2408): Fix/gas estimations @@ -3961,7 +4405,9 @@ access - [#2431](https://github.com/MetaMask/metamask-mobile/pull/2431): Update BN import ## [2.0.1] + ### Uncategorized + - [#2430](https://github.com/MetaMask/metamask-mobile/pull/2430): Fix/send to style - [#2426](https://github.com/MetaMask/metamask-mobile/pull/2426): bugfix/allow seedphrases when locked - [#2422](https://github.com/MetaMask/metamask-mobile/pull/2422): bugfix/delete wallet with random password @@ -3970,7 +4416,9 @@ access - [#2156](https://github.com/MetaMask/metamask-mobile/pull/2156): Translations with update script ## [2.0.0] + ### Uncategorized + - [#2383](https://github.com/MetaMask/metamask-mobile/pull/2383): swaps/received destination amount - [#2379](https://github.com/MetaMask/metamask-mobile/pull/2379): Swaps/fix decode tx render amounts - [#2377](https://github.com/MetaMask/metamask-mobile/pull/2377): bugfix/dont modify local transactions @@ -3991,7 +4439,9 @@ access - [#2265](https://github.com/MetaMask/metamask-mobile/pull/2265): Fix input state ## [1.0.11] + ### Uncategorized + - [#2257](https://github.com/MetaMask/metamask-mobile/pull/2257): bugfix/use bignumber for transfer deeplinks - [#2256](https://github.com/MetaMask/metamask-mobile/pull/2256): Fix account list scroll - [#2243](https://github.com/MetaMask/metamask-mobile/pull/2243): TransactionController from controllers @@ -4018,12 +4468,16 @@ access - [#2142](https://github.com/MetaMask/metamask-mobile/pull/2142): Display boolean values when signing typed data ## [1.0.10] + ### Uncategorized + - [#2164](https://github.com/MetaMask/metamask-mobile/pull/2164): Initialize NetworkController.provider with chainId (#2164) - [#2161](https://github.com/MetaMask/metamask-mobile/pull/2161): chainid migration (#2161) ## [1.0.9] + ### Uncategorized + - [#2149](https://github.com/MetaMask/metamask-mobile/pull/2149): update tests for new logic - [#2145](https://github.com/MetaMask/metamask-mobile/pull/2145): Add missing brew installation steps - [#2146](https://github.com/MetaMask/metamask-mobile/pull/2146): @metamask/mobile-provider@2.0.1 @@ -4053,7 +4507,9 @@ access - [#1994](https://github.com/MetaMask/metamask-mobile/pull/1994): Feature: Initial Swaps amount view (#1994) ## [1.0.8] + ### Uncategorized + - [#2040](https://github.com/MetaMask/metamask-mobile/pull/2040): Update vault error message (#2040) - [#2034](https://github.com/MetaMask/metamask-mobile/pull/2034): Fix asyncstorage limit (#2034) - [#2038](https://github.com/MetaMask/metamask-mobile/pull/2038): metamask wc deeplink (#2038) @@ -4062,7 +4518,9 @@ access - [#2008](https://github.com/MetaMask/metamask-mobile/pull/2008): Add Apple Pay correct label (#2008) ## [1.0.7] + ### Uncategorized + - [#2005](https://github.com/MetaMask/metamask-mobile/pull/2005): Fix activeTabUrl (#2005) - [#2003](https://github.com/MetaMask/metamask-mobile/pull/2003): Bugfix/android choose password (#2003) - [#1992](https://github.com/MetaMask/metamask-mobile/pull/1992): Android api level (#1992) @@ -4071,9 +4529,10 @@ access - [#1968](https://github.com/MetaMask/metamask-mobile/pull/1968): Add MetaSwaps feature flag and initial nav stack (#1968) - [#1967](https://github.com/MetaMask/metamask-mobile/pull/1967): Add Keypad component (#1967) - ## [1.0.6] + ### Uncategorized + - [#1990](https://github.com/MetaMask/metamask-mobile/pull/1990): Fixed importing accounts when reseting password (#1990) - [#1988](https://github.com/MetaMask/metamask-mobile/pull/1988): bugfix/protect wallet modal (#1988) - [#1985](https://github.com/MetaMask/metamask-mobile/pull/1985): Fix seedphrase handling in QRScanner (#1985) @@ -4113,15 +4572,21 @@ access - [#1861](https://github.com/MetaMask/metamask-mobile/pull/1861): Get e2e working for seedphrase and login (#1861) ## [1.0.5] + ### Uncategorized + - [#1889](https://github.com/MetaMask/metamask-mobile/pull/1889): Fix scientific notation string not convertable to BN (#1889) ## [1.0.4] + ### Uncategorized + - [#1882](https://github.com/MetaMask/metamask-mobile/pull/1882): Error boundary (#1882) ## [1.0.3] + ### Uncategorized + - [#1865](https://github.com/MetaMask/metamask-mobile/pull/1865): bugfix/login (#1865) - [#1863](https://github.com/MetaMask/metamask-mobile/pull/1863): transak countries update (#1863) - [#1829](https://github.com/MetaMask/metamask-mobile/pull/1829): Improvement/browser refactor (#1829) @@ -4153,16 +4618,22 @@ access - [#1787](https://github.com/MetaMask/metamask-mobile/pull/1787): Add missing currency conversions (#1787) ## [1.0.2] + ### Uncategorized + - [#1812](https://github.com/MetaMask/metamask-mobile/pull/1812): Add logger on login (#1812) ## [1.0.1] + ### Uncategorized + - [#1795](https://github.com/MetaMask/metamask-mobile/pull/1795): Update react native aes crypto forked (#1795) - [#1796](https://github.com/MetaMask/metamask-mobile/pull/1796): bugfix/mixpanel android in app notifications (#1796) ## [1.0.0] + ### Uncategorized + - [#1790](https://github.com/MetaMask/metamask-mobile/pull/1790): Bugfix/payment request and wallet connect origin on tx (#1790) - [#1791](https://github.com/MetaMask/metamask-mobile/pull/1791): Fix send receive buttons style (#1791) - [#1785](https://github.com/MetaMask/metamask-mobile/pull/1785): Use @metamask/controllers@2.0.5 (#1785) @@ -4190,7 +4661,9 @@ access - [#1727](https://github.com/MetaMask/metamask-mobile/pull/1727): Bump json from 2.2.0 to 2.3.1 in /ios (#1727) ## [0.2.20] + ### Uncategorized + - [#1751](https://github.com/MetaMask/metamask-mobile/pull/1751): bugfix/payment requests & deeplinks (#1751) - [#1732](https://github.com/MetaMask/metamask-mobile/pull/1732): Copy edits (#1732) - [#1750](https://github.com/MetaMask/metamask-mobile/pull/1750): Don't allow for zero in custom gas price (#1750) @@ -4242,18 +4715,24 @@ access - [#1640](https://github.com/MetaMask/metamask-mobile/pull/1640): enable-apple-pay (#1640) ## [0.2.19] + ### Uncategorized + - [#1661](https://github.com/MetaMask/metamask-mobile/pull/1661): bugfix/Use eth gas API - [#1653](https://github.com/MetaMask/metamask-mobile/pull/1653): Add ETH_GAS_STATION_API_KEY (#1653) ## [0.2.18] + ### Uncategorized + - [#1636](https://github.com/MetaMask/metamask-mobile/pull/1636): Add padding to CustomGas back button (#1636) - [#1637](https://github.com/MetaMask/metamask-mobile/pull/1637): Bugfix/incoming notifications (#1637) - [#1628](https://github.com/MetaMask/metamask-mobile/pull/1628): Fix network color indicator on transactionHeader for connect screens (#1628) ## [0.2.17] + ### Uncategorized + - [#1629](https://github.com/MetaMask/metamask-mobile/pull/1629): bugfix/custom gas modal (#1629) - [#1625](https://github.com/MetaMask/metamask-mobile/pull/1625): Bugfix/wc connect on app closed (#1625) - [#1624](https://github.com/MetaMask/metamask-mobile/pull/1624): Wallet connect update + Support for simple notifications (#1624) @@ -4290,7 +4769,9 @@ access - [#1584](https://github.com/MetaMask/metamask-mobile/pull/1584): make sign tests great again (#1584) ## [0.2.16] + ### Uncategorized + - [#1582](https://github.com/MetaMask/metamask-mobile/pull/1582): Instapay deposit navbar cancel (#1582) - [#1570](https://github.com/MetaMask/metamask-mobile/pull/1570): Disable confirm screen edit button when no tokens of a payment request (#1570) - [#1574](https://github.com/MetaMask/metamask-mobile/pull/1574): Ensure collectibles that use 'transfer' method show a fee in tx history list (#1574) @@ -4315,7 +4796,9 @@ access - [#1524](https://github.com/MetaMask/metamask-mobile/pull/1524): Loosen nvmrc (#1524) ## [0.2.15] + ### Uncategorized + - [#1529](https://github.com/MetaMask/metamask-mobile/pull/1529): sentry android production (#1529) - [#1528](https://github.com/MetaMask/metamask-mobile/pull/1528): Bugfix/sentry in circle ci (#1528) - [#1527](https://github.com/MetaMask/metamask-mobile/pull/1527): env to production (#1527) @@ -4345,7 +4828,7 @@ access - [#1449](https://github.com/MetaMask/metamask-mobile/pull/1449): Use setTimeout hack to get paste context back (#1449) - [#1450](https://github.com/MetaMask/metamask-mobile/pull/1450): Fix remove bookmark functionality, closes #1396 (#1450) - [#1376](https://github.com/MetaMask/metamask-mobile/pull/1376): Replace Fabric Crashlytics with Sentry (#1376) -- [#1441](https://github.com/MetaMask/metamask-mobile/pull/1441): Detox: Address Book Tests (#1441) +- [#1441](https://github.com/MetaMask/metamask-mobile/pull/1441): Detox: Address Book Tests (#1441) - [#1447](https://github.com/MetaMask/metamask-mobile/pull/1447): ci: Update CircleCI config version (#1447) - [#1439](https://github.com/MetaMask/metamask-mobile/pull/1439): Update README.md (#1439) - [#1436](https://github.com/MetaMask/metamask-mobile/pull/1436): Update mkdirp and minimist (#1436) @@ -4359,7 +4842,9 @@ access - [#1425](https://github.com/MetaMask/metamask-mobile/pull/1425): Detox: Upate dapp-initated-txn tests (#1425) ## [0.2.14] + ### Uncategorized + - [#1413](https://github.com/MetaMask/metamask-mobile/pull/1413): Fix accountsChanged notification (#1413) - [#1411](https://github.com/MetaMask/metamask-mobile/pull/1411): bugfix: payment request (#1411) - [#1410](https://github.com/MetaMask/metamask-mobile/pull/1410): bugfix: ios close icon (#1410) @@ -4412,29 +4897,37 @@ access - [#1252](https://github.com/MetaMask/metamask-mobile/pull/1252): Bugfix: cancel and speedup insufficient funds (#1252) ## [0.2.13] + ### Uncategorized + - [#1250](https://github.com/MetaMask/metamask-mobile/pull/1250): Bump excon from 0.64.0 to 0.71.0 in /ios (#1250) - [#1246](https://github.com/MetaMask/metamask-mobile/pull/1246): bugfix: wizard back (#1246) - [#1235](https://github.com/MetaMask/metamask-mobile/pull/1235): Detox: Request token flow (#1235) - [#1234](https://github.com/MetaMask/metamask-mobile/pull/1234): bump migration version (#1234) ## [0.2.12] + ### Uncategorized + - [#1224](https://github.com/MetaMask/metamask-mobile/pull/1224): Bugfix: asset ens tx (#1224) - [#1225](https://github.com/MetaMask/metamask-mobile/pull/1225): update bug report link (#1225) - [#1215](https://github.com/MetaMask/metamask-mobile/pull/1215): Detox: Fix Android e2e Tests (#1215) - [#1223](https://github.com/MetaMask/metamask-mobile/pull/1223): Bugfix: contract deployments (#1223) - [#1222](https://github.com/MetaMask/metamask-mobile/pull/1222): bugfix: android show hex input instapay send (#1222) -- [#1214](https://github.com/MetaMask/metamask-mobile/pull/1214): pass metametrics context to homepage (#1214) +- [#1214](https://github.com/MetaMask/metamask-mobile/pull/1214): pass metametrics context to homepage (#1214) ## [0.2.11] + ### Uncategorized + - [#1212](https://github.com/MetaMask/metamask-mobile/pull/1212): Provider missing properties (#1212) - [#1207](https://github.com/MetaMask/metamask-mobile/pull/1207): Fix typo on Import Account screen (#1207) - [#1198](https://github.com/MetaMask/metamask-mobile/pull/1198): Migrate to SAI (#1198) ## [0.2.10] + ### Uncategorized + - [#1205](https://github.com/MetaMask/metamask-mobile/pull/1205): Disable speedup instapay (#1205) - [#1204](https://github.com/MetaMask/metamask-mobile/pull/1204): Fix injection on Android (#1204) - [#1203](https://github.com/MetaMask/metamask-mobile/pull/1203): Update support email (#1203) @@ -4469,19 +4962,27 @@ access - [#1146](https://github.com/MetaMask/metamask-mobile/pull/1146): fix instapay logs app version (#1146) ## [0.2.8] + ### Uncategorized + - [#1145](https://github.com/MetaMask/metamask-mobile/pull/1145): Support URLs on QR code scanner (#1145) ## [0.2.7] + ### Uncategorized + - [#1143](https://github.com/MetaMask/metamask-mobile/pull/1143): Minor bugfixes (#1143) ## [0.2.6] + ### Uncategorized + - [#1139](https://github.com/MetaMask/metamask-mobile/pull/1139): Fix onboarding carousel dimensions (#1139) ## [0.2.5] + ### Uncategorized + - [#1136](https://github.com/MetaMask/metamask-mobile/pull/1136): Select correct profiles (#1136) - [#1135](https://github.com/MetaMask/metamask-mobile/pull/1135): Fix fastlane config (#1135) - [#1134](https://github.com/MetaMask/metamask-mobile/pull/1134): renew certs if needed (#1134) @@ -4547,9 +5048,11 @@ access - [#1044](https://github.com/MetaMask/metamask-mobile/pull/1044): remove uiwebview ocurrences (#1044) ## [0.2.4] + ### Uncategorized + - [#1038](https://github.com/MetaMask/metamask-mobile/pull/1038): Fix Approval (#1038) -: [#1037](https://github.com/MetaMask/metamask-mobile/pull/1037): Fix walletconnect :#1037) + : [#1037](https://github.com/MetaMask/metamask-mobile/pull/1037): Fix walletconnect :#1037) - [#1036](https://github.com/MetaMask/metamask-mobile/pull/1036): Bugfix: browser crash (#1036) - [#1034](https://github.com/MetaMask/metamask-mobile/pull/1034): Bump 0.2.4 (#1034) - [#1027](https://github.com/MetaMask/metamask-mobile/pull/1027): Improvement: approval token transfer data (#1027) @@ -4567,7 +5070,9 @@ access - [#1008](https://github.com/MetaMask/metamask-mobile/pull/1008): bump walletconnect (#1008) ## [0.2.3] + ### Uncategorized + - [#972](https://github.com/MetaMask/metamask-mobile/pull/972): bump version (#972) - [#989](https://github.com/MetaMask/metamask-mobile/pull/989): Bugfix: Fix mobile sync & Security options (#989) - [#1000](https://github.com/MetaMask/metamask-mobile/pull/1000): bugfix: tx edit dropdowns in small devices (#1000) @@ -4598,10 +5103,13 @@ access - [#957](https://github.com/MetaMask/metamask-mobile/pull/957): fix timeouts (#957) - [#954](https://github.com/MetaMask/metamask-mobile/pull/954): Bugfix: onboarding navigation (#954) -[Unreleased]: https://github.com/metamask/metamask-mobile/compare/v7.38.2...HEAD -[7.38.2]: https://github.com/metamask/metamask-mobile/compare/v7.38.1...v7.38.2 -[7.38.1]: https://github.com/metamask/metamask-mobile/compare/v7.38.0...v7.38.1 -[7.38.0]: https://github.com/metamask/metamask-mobile/compare/v7.37.1...v7.38.0 +[Unreleased]: https://github.com/MetaMask/metamask-mobile/compare/v7.43.0...HEAD +[7.43.0]: https://github.com/MetaMask/metamask-mobile/compare/v7.41.0...v7.43.0 +[7.41.0]: https://github.com/MetaMask/metamask-mobile/compare/v7.40.0...v7.41.0 +[7.40.0]: https://github.com/MetaMask/metamask-mobile/compare/v7.39.0...v7.40.0 +[7.39.0]: https://github.com/MetaMask/metamask-mobile/compare/v7.38.1...v7.39.0 +[7.38.1]: https://github.com/MetaMask/metamask-mobile/compare/v7.38.0...v7.38.1 +[7.38.0]: https://github.com/MetaMask/metamask-mobile/compare/v7.37.1...v7.38.0 [7.37.1]: https://github.com/MetaMask/metamask-mobile/compare/v7.37.0...v7.37.1 [7.37.0]: https://github.com/MetaMask/metamask-mobile/compare/v7.36.0...v7.37.0 [7.36.0]: https://github.com/MetaMask/metamask-mobile/compare/v7.35.1...v7.36.0 From 943e78a61faf453b0e404bac829b8f4d9d97cf16 Mon Sep 17 00:00:00 2001 From: "runway-github[bot]" <73448015+runway-github[bot]@users.noreply.github.com> Date: Wed, 19 Mar 2025 17:37:27 +0000 Subject: [PATCH 056/473] chore(runway): cherry-pick fix: cp-7.43.0 useInterval deps (#14123) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - fix: cp-7.43.0 useInterval deps (#14105) <!-- Please submit this PR as a draft initially. Do not mark it as "Ready for review" until the template has been completely filled out, and PR status checks have passed at least once. --> ## **Description** The dependencies of a useEffect hooks were mistakenly passed as a whole options object instead of individual options. This PR destructures and uses the individual options as dependencies ## **Related issues** Fixes: #14043 ## **Manual testing steps** 1. Go to this page... 2. 3. ## **Screenshots/Recordings** <!-- If applicable, add screenshots and/or recordings to visualize the before and after of your change. --> ### **Before** <!-- [screenshots/recordings] --> ### **After** <!-- [screenshots/recordings] --> ## **Pre-merge author checklist** - [ ] I’ve followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile Coding Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [ ] I've completed the PR template to the best of my ability - [ ] I’ve included tests if applicable - [ ] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [ ] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. ## **Pre-merge reviewer checklist** - [ ] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [ ] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots. --------- Co-authored-by: AxelGes <axelges9@gmail.com> [c2b035f](https://github.com/MetaMask/metamask-mobile/commit/c2b035fdad49a67f085aff5f72f1313dc4cc7d52) Co-authored-by: Pedro Pablo Aste Kompen <wachunei@gmail.com> Co-authored-by: AxelGes <axelges9@gmail.com> --- .../hooks/useERC20GasLimitEstimation.test.ts | 58 +++++++++---------- app/components/hooks/useInterval.ts | 6 +- 2 files changed, 30 insertions(+), 34 deletions(-) diff --git a/app/components/UI/Ramp/hooks/useERC20GasLimitEstimation.test.ts b/app/components/UI/Ramp/hooks/useERC20GasLimitEstimation.test.ts index 5c6d586ab406..a4dc6cfa7011 100644 --- a/app/components/UI/Ramp/hooks/useERC20GasLimitEstimation.test.ts +++ b/app/components/UI/Ramp/hooks/useERC20GasLimitEstimation.test.ts @@ -122,12 +122,18 @@ describe('useERC20GasLimitEstimation', () => { renderHook(() => useERC20GasLimitEstimation(defaultParams)); + // Wait for immediate execution await act(async () => { - jest.runOnlyPendingTimers(); await Promise.resolve(); }); + expect(mockGetGasLimit).toHaveBeenCalledTimes(1); - expect(mockGetGasLimit).toHaveBeenCalledTimes(3); // Immediate + first interval + immediate from interval + // Advance timer and check interval execution + await act(async () => { + jest.advanceTimersByTime(POLLING_INTERVAL); + await Promise.resolve(); + }); + expect(mockGetGasLimit).toHaveBeenCalledTimes(2); jest.useRealTimers(); }); @@ -161,24 +167,22 @@ describe('useERC20GasLimitEstimation', () => { useERC20GasLimitEstimation(defaultParams), ); - // Wait for initial call to complete + // Wait for immediate execution await act(async () => { await Promise.resolve(); }); - - // 2 calls: one from immediate flag and one from initial render - expect(mockGetGasLimit).toHaveBeenCalledTimes(2); + expect(mockGetGasLimit).toHaveBeenCalledTimes(1); unmount(); // Advance timers after unmount await act(async () => { - jest.advanceTimersByTime(15000); + jest.advanceTimersByTime(POLLING_INTERVAL); await Promise.resolve(); }); - // 2 calls since polling stopped after unmount - expect(mockGetGasLimit).toHaveBeenCalledTimes(2); + // Should still be 1 since polling stopped + expect(mockGetGasLimit).toHaveBeenCalledTimes(1); jest.useRealTimers(); }); @@ -193,24 +197,16 @@ describe('useERC20GasLimitEstimation', () => { }, ); - // Initial render will trigger: - // 1. Initial call from hook execution - // 2. Immediate flag call + // Wait for initial call await act(async () => { await Promise.resolve(); + jest.runOnlyPendingTimers(); }); + // Should be 2 because of immediate flag + initial effect expect(mockGetGasLimit).toHaveBeenCalledTimes(2); - // Advance timer to trigger interval - await act(async () => { - jest.advanceTimersByTime(POLLING_INTERVAL); - await Promise.resolve(); - }); - - expect(mockGetGasLimit).toHaveBeenCalledTimes(3); - - mockGetGasLimit.mockClear(); + mockGetGasLimit.mockClear(); // Clear the call count // Trigger rerender with new amount rerender({ @@ -221,9 +217,10 @@ describe('useERC20GasLimitEstimation', () => { // Wait for rerender effect await act(async () => { await Promise.resolve(); + jest.runOnlyPendingTimers(); }); - // Should have 1 call from the rerender + // Should be 1 new call from the rerender expect(mockGetGasLimit).toHaveBeenCalledTimes(1); expect(mockGenerateTransferData).toHaveBeenCalledWith( 'transfer', @@ -233,7 +230,7 @@ describe('useERC20GasLimitEstimation', () => { ); jest.useRealTimers(); - }, 15000); + }); it('handles invalid amount or decimals', async () => { const consoleSpy = jest @@ -248,15 +245,16 @@ describe('useERC20GasLimitEstimation', () => { const { result } = renderHook(() => useERC20GasLimitEstimation(params)); + // expect an immediate error await act(async () => { - await new Promise((resolve) => setTimeout(resolve, 0)); + await Promise.resolve(); }); expect(result.current).toBe(21000); // Should maintain default gas limit expect(consoleSpy).toHaveBeenCalled(); consoleSpy.mockRestore(); - }); + }, 10000); it('handles empty or invalid addresses', async () => { const params = { @@ -267,13 +265,14 @@ describe('useERC20GasLimitEstimation', () => { const { result } = renderHook(() => useERC20GasLimitEstimation(params)); + // expect an immediate result await act(async () => { - await new Promise((resolve) => setTimeout(resolve, 0)); + await Promise.resolve(); }); expect(result.current).toBe(21000); expect(mockGetGasLimit).not.toHaveBeenCalled(); - }); + }, 10000); it('updates gas estimation when chainId changes', async () => { jest.useFakeTimers(); @@ -285,10 +284,6 @@ describe('useERC20GasLimitEstimation', () => { }, ); - await act(async () => { - await Promise.resolve(); - }); - mockGetGasLimit.mockClear(); // Trigger rerender with new chainId @@ -299,6 +294,7 @@ describe('useERC20GasLimitEstimation', () => { await act(async () => { await Promise.resolve(); + jest.runOnlyPendingTimers(); }); expect(mockGetGasLimit).toHaveBeenCalledWith( diff --git a/app/components/hooks/useInterval.ts b/app/components/hooks/useInterval.ts index 2117f6caa2e2..60e3669af4ce 100644 --- a/app/components/hooks/useInterval.ts +++ b/app/components/hooks/useInterval.ts @@ -6,8 +6,9 @@ interface IntervalOptions { } function useInterval(callback: () => void, options: IntervalOptions) { - const savedCallback = useRef<() => void>(); + const { delay = null, immediate = false } = options; + const savedCallback = useRef<() => void>(); // Remember the latest function. useEffect(() => { savedCallback.current = callback; @@ -18,7 +19,6 @@ function useInterval(callback: () => void, options: IntervalOptions) { function tick() { savedCallback.current?.(); } - const { delay = null, immediate = false } = options; if (delay !== null && delay > 0) { if (immediate) { tick(); @@ -27,7 +27,7 @@ function useInterval(callback: () => void, options: IntervalOptions) { return () => clearInterval(id); } - }, [options]); + }, [delay, immediate]); } export default useInterval; From 793adc18a11d045c9b7243e0f5b5054d9282278b Mon Sep 17 00:00:00 2001 From: "runway-github[bot]" <73448015+runway-github[bot]@users.noreply.github.com> Date: Wed, 19 Mar 2025 19:02:45 +0000 Subject: [PATCH 057/473] chore(runway): cherry-pick fix: Xcode 16 bitcode upload issue (#14129) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - fix: Xcode 16 bitcode upload issue (#14124) <!-- Please submit this PR as a draft initially. Do not mark it as "Ready for review" until the template has been completely filled out, and PR status checks have passed at least once. --> ## **Description** <!-- Write a short description of the changes included in this pull request, also include relevant motivation and context. Have in mind the following questions: 1. What is the reason for the change? 2. What is the improvement/solution? --> This PR fixes the issue where uploading to the App Store fails due to Xcode 16 requirements around removing bitcode. We now add a strip bitcode script at the end of the build phase, which ensures that all bitcode is removed after deps have been installed. ## **Related issues** Fixes: ## **Manual testing steps** The `release_ios_to_store_pipeline` should upload successfully without bitcode issues. ## **Screenshots/Recordings** <!-- If applicable, add screenshots and/or recordings to visualize the before and after of your change. --> ### **Before** <!-- [screenshots/recordings] --> Failure - https://app.bitrise.io/app/be69d4368ee7e86d/pipelines/40bf6f30-69c4-4daa-a5ac-91d9e5b0d084 ### **After** <!-- [screenshots/recordings] --> Success - https://app.bitrise.io/app/be69d4368ee7e86d/pipelines/d413e93e-74e9-4906-a465-5a05647d0da9 ## **Pre-merge author checklist** - [x] I’ve followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile Coding Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [x] I've completed the PR template to the best of my ability - [x] I’ve included tests if applicable - [x] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [x] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. ## **Pre-merge reviewer checklist** - [x] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [x] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots. [06e712e](https://github.com/MetaMask/metamask-mobile/commit/06e712edd50fd37fdf267d03b30ee561b4eed775) Co-authored-by: Cal Leung <cal.leung@consensys.net> --- ios/MetaMask.xcodeproj/project.pbxproj | 57 ++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) diff --git a/ios/MetaMask.xcodeproj/project.pbxproj b/ios/MetaMask.xcodeproj/project.pbxproj index c844fa136d41..751a8fe71ee6 100644 --- a/ios/MetaMask.xcodeproj/project.pbxproj +++ b/ios/MetaMask.xcodeproj/project.pbxproj @@ -653,6 +653,7 @@ 1315792FDF9ED5C1277541D0 /* [CP] Embed Pods Frameworks */, FFED9AB1AACD0DA25EAA971D /* [CP] Copy Pods Resources */, 9F2FDF243A79F1A3A790828C /* [CP-User] [RNFB] Core Configuration */, + B04B18D52D8B340C00C5C2CE /* Strip Bitcode */, ); buildRules = ( ); @@ -679,6 +680,7 @@ 22A0CDFA61EAF4604801C08E /* [CP] Embed Pods Frameworks */, E6DF8EB7C7F8301263C260CE /* [CP] Copy Pods Resources */, 7DCEC09F2EFA897359942504 /* [CP-User] [RNFB] Core Configuration */, + B04B18D72D8B34BE00C5C2CE /* Strip Bitcode */, ); buildRules = ( ); @@ -705,6 +707,7 @@ C809907F60335F19DA480743 /* [CP] Embed Pods Frameworks */, 475B37D211D24FD533A25DD4 /* [CP] Copy Pods Resources */, 13E0EBB030DB9498ACF206AC /* [CP-User] [RNFB] Core Configuration */, + B04B18D62D8B34AD00C5C2CE /* Strip Bitcode */, ); buildRules = ( ); @@ -1199,6 +1202,60 @@ shellPath = /bin/sh; shellScript = "# This script configures Expo modules and generates the modules provider file.\nbash -l -c \"./Pods/Target\\ Support\\ Files/Pods-MetaMask-Flask/expo-configure-project.sh\"\n"; }; + B04B18D52D8B340C00C5C2CE /* Strip Bitcode */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + ); + name = "Strip Bitcode"; + outputFileListPaths = ( + ); + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "# Script for stripping bitcode when building using Xcode 16+ and uploading to the App Store\n# Reference - https://discuss.bitrise.io/t/xcode-16-known-issues/24484\n# This script should be last to ensure that all bitcode is stripped after dependencies are installed\n\nfind \"${BUILT_PRODUCTS_DIR}/${FRAMEWORKS_FOLDER_PATH}\" -name 'OpenSSL' -exec xcrun bitcode_strip {} -r -o {} \\;\n"; + }; + B04B18D62D8B34AD00C5C2CE /* Strip Bitcode */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + ); + name = "Strip Bitcode"; + outputFileListPaths = ( + ); + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "# Script for stripping bitcode when building using Xcode 16+ and uploading to the App Store\n# Reference - https://discuss.bitrise.io/t/xcode-16-known-issues/24484\n# This script should be last to ensure that all bitcode is stripped after dependencies are installed\n\nfind \"${BUILT_PRODUCTS_DIR}/${FRAMEWORKS_FOLDER_PATH}\" -name 'OpenSSL' -exec xcrun bitcode_strip {} -r -o {} \\;\n"; + }; + B04B18D72D8B34BE00C5C2CE /* Strip Bitcode */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + ); + name = "Strip Bitcode"; + outputFileListPaths = ( + ); + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "# Script for stripping bitcode when building using Xcode 16+ and uploading to the App Store\n# Reference - https://discuss.bitrise.io/t/xcode-16-known-issues/24484\n# This script should be last to ensure that all bitcode is stripped after dependencies are installed\n\nfind \"${BUILT_PRODUCTS_DIR}/${FRAMEWORKS_FOLDER_PATH}\" -name 'OpenSSL' -exec xcrun bitcode_strip {} -r -o {} \\;\n"; + }; B339FF00289ABD70001B89FB /* Override xcconfig files */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; From 156dfe4e177344961578181f3db85226d5ff1a79 Mon Sep 17 00:00:00 2001 From: metamaskbot <metamaskbot@users.noreply.github.com> Date: Wed, 19 Mar 2025 23:06:11 +0000 Subject: [PATCH 058/473] Bump version number to 1638 --- android/app/build.gradle | 2 +- bitrise.yml | 4 ++-- ios/MetaMask.xcodeproj/project.pbxproj | 12 ++++++------ 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/android/app/build.gradle b/android/app/build.gradle index 4499464e7c3a..5310804f704c 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -179,7 +179,7 @@ android { minSdkVersion rootProject.ext.minSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion versionName "7.43.0" - versionCode 1627 + versionCode 1638 testBuildType System.getProperty('testBuildType', 'debug') missingDimensionStrategy 'react-native-camera', 'general' testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" diff --git a/bitrise.yml b/bitrise.yml index a5bcb563aa9e..e69c9032e568 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -1832,13 +1832,13 @@ app: VERSION_NAME: 7.43.0 - opts: is_expand: false - VERSION_NUMBER: 1627 + VERSION_NUMBER: 1638 - opts: is_expand: false FLASK_VERSION_NAME: 7.43.0 - opts: is_expand: false - FLASK_VERSION_NUMBER: 1627 + FLASK_VERSION_NUMBER: 1638 - opts: is_expand: false ANDROID_APK_LINK: '' diff --git a/ios/MetaMask.xcodeproj/project.pbxproj b/ios/MetaMask.xcodeproj/project.pbxproj index 751a8fe71ee6..6ce22b55ab58 100644 --- a/ios/MetaMask.xcodeproj/project.pbxproj +++ b/ios/MetaMask.xcodeproj/project.pbxproj @@ -1437,7 +1437,7 @@ CODE_SIGN_IDENTITY = "Apple Development"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1627; + CURRENT_PROJECT_VERSION = 1638; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = 48XVW22RCG; @@ -1506,7 +1506,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMask.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1627; + CURRENT_PROJECT_VERSION = 1638; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 48XVW22RCG; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 48XVW22RCG; @@ -1571,7 +1571,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMaskDebug.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1627; + CURRENT_PROJECT_VERSION = 1638; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = 48XVW22RCG; @@ -1637,7 +1637,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMask.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1627; + CURRENT_PROJECT_VERSION = 1638; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 48XVW22RCG; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 48XVW22RCG; @@ -1796,7 +1796,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMaskDebug.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1627; + CURRENT_PROJECT_VERSION = 1638; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = 48XVW22RCG; @@ -1865,7 +1865,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMask.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1627; + CURRENT_PROJECT_VERSION = 1638; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 48XVW22RCG; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 48XVW22RCG; From a15af4b9a49eaa6d43d194d8e3739bbbba7e32e2 Mon Sep 17 00:00:00 2001 From: Aslau Mario-Daniel <marioaslau@gmail.com> Date: Thu, 20 Mar 2025 19:15:36 +0000 Subject: [PATCH 059/473] =?UTF-8?q?fix:=20cp-7.43.0=20QR=20hardware=20sign?= =?UTF-8?q?ature=20requests=20not=20showing=20result=20afte=E2=80=A6=20(#1?= =?UTF-8?q?4165)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit …r signing (#14117) Fix - QR hardware signature requests not showing result after signing Fixes: https://github.com/MetaMask/metamask-mobile/issues/14052 1. Switch to QR hardware account 2. Go to testdapp and submit a signature 3. It should work ac expected TODO - [X] I’ve followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile Coding Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [X] I've completed the PR template to the best of my ability - [X] I’ve included tests if applicable - [X] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [X] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. - [ ] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [ ] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots. <!-- Please submit this PR as a draft initially. Do not mark it as "Ready for review" until the template has been completely filled out, and PR status checks have passed at least once. --> ## **Description** <!-- Write a short description of the changes included in this pull request, also include relevant motivation and context. Have in mind the following questions: 1. What is the reason for the change? 2. What is the improvement/solution? --> ## **Related issues** Fixes: ## **Manual testing steps** 1. Go to this page... 2. 3. ## **Screenshots/Recordings** <!-- If applicable, add screenshots and/or recordings to visualize the before and after of your change. --> ### **Before** <!-- [screenshots/recordings] --> ### **After** <!-- [screenshots/recordings] --> ## **Pre-merge author checklist** - [ ] I’ve followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile Coding Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [ ] I've completed the PR template to the best of my ability - [ ] I’ve included tests if applicable - [ ] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [ ] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. ## **Pre-merge reviewer checklist** - [ ] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [ ] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots. --------- Co-authored-by: Jyoti Puri <jyotipuri@gmail.com> --- .../hooks/useConfirmActions.test.ts | 56 +++++++++++++++++++ .../confirmations/hooks/useConfirmActions.ts | 14 +++-- 2 files changed, 66 insertions(+), 4 deletions(-) diff --git a/app/components/Views/confirmations/hooks/useConfirmActions.test.ts b/app/components/Views/confirmations/hooks/useConfirmActions.test.ts index ea5fcebcb8f6..27c6f7f196ce 100644 --- a/app/components/Views/confirmations/hooks/useConfirmActions.test.ts +++ b/app/components/Views/confirmations/hooks/useConfirmActions.test.ts @@ -12,6 +12,8 @@ import PPOMUtil from '../../../../lib/ppom/ppom-util'; import * as QRHardwareHook from '../context/QRHardwareContext/QRHardwareContext'; // eslint-disable-next-line import/no-namespace import * as LedgerContext from '../context/LedgerContext/LedgerContext'; +// eslint-disable-next-line import/no-namespace +import * as SmartTransactionsSelector from '../../../../selectors/smartTransactionsController'; import { useConfirmActions } from './useConfirmActions'; jest.mock('@react-navigation/native', () => ({ @@ -147,6 +149,24 @@ describe('useConfirmAction', () => { expect(clearSecurityAlertResponseSpy).not.toHaveBeenCalled(); }); + it('call acceptPendingApproval with parameters waitForResult as true for signatures even if smart transactions are enabled', async () => { + jest + .spyOn(SmartTransactionsSelector, 'selectShouldUseSmartTransaction') + .mockReturnValue(true); + const personalSignId = '76b33b40-7b5c-11ef-bc0a-25bce29dbc09'; + const { result } = renderHookWithProvider(() => useConfirmActions(), { + state: personalSignatureConfirmationState, + }); + result?.current?.onConfirm(); + expect(Engine.acceptPendingApproval).toHaveBeenCalledTimes(1); + expect(Engine.acceptPendingApproval).toHaveBeenCalledWith( + personalSignId, + personalSignatureConfirmationState.engine.backgroundState + .ApprovalController.pendingApprovals[personalSignId].requestData, + { deleteAfterResult: true, handleErrors: false, waitForResult: true }, + ); + }); + it('call required callbacks when reject button is clicked', async () => { const clearSecurityAlertResponseSpy = jest.spyOn( PPOMUtil, @@ -179,4 +199,40 @@ describe('useConfirmAction', () => { expect(navigateMock).toHaveBeenCalledTimes(1); expect(navigateMock).toHaveBeenCalledWith(Routes.TRANSACTIONS_VIEW); }); + + it('call acceptPendingApproval with parameters waitForResult as false for transactions if smart transactions are enabled', async () => { + jest + .spyOn(SmartTransactionsSelector, 'selectShouldUseSmartTransaction') + .mockReturnValue(true); + const transactionId = '699ca2f0-e459-11ef-b6f6-d182277cf5e1'; + const { result } = renderHookWithProvider(() => useConfirmActions(), { + state: stakingDepositConfirmationState, + }); + result?.current?.onConfirm(); + expect(Engine.acceptPendingApproval).toHaveBeenCalledTimes(1); + expect(Engine.acceptPendingApproval).toHaveBeenCalledWith( + transactionId, + stakingDepositConfirmationState.engine.backgroundState.ApprovalController + .pendingApprovals[transactionId].requestData, + { deleteAfterResult: true, handleErrors: false, waitForResult: false }, + ); + }); + + it('call acceptPendingApproval with parameters waitForResult as true for transactions if smart transactions are not enabled', async () => { + jest + .spyOn(SmartTransactionsSelector, 'selectShouldUseSmartTransaction') + .mockReturnValue(false); + const transactionId = '699ca2f0-e459-11ef-b6f6-d182277cf5e1'; + const { result } = renderHookWithProvider(() => useConfirmActions(), { + state: stakingDepositConfirmationState, + }); + result?.current?.onConfirm(); + expect(Engine.acceptPendingApproval).toHaveBeenCalledTimes(1); + expect(Engine.acceptPendingApproval).toHaveBeenCalledWith( + transactionId, + stakingDepositConfirmationState.engine.backgroundState.ApprovalController + .pendingApprovals[transactionId].requestData, + { deleteAfterResult: true, handleErrors: false, waitForResult: true }, + ); + }); }); diff --git a/app/components/Views/confirmations/hooks/useConfirmActions.ts b/app/components/Views/confirmations/hooks/useConfirmActions.ts index 78262c0b35d4..82fd447bed29 100644 --- a/app/components/Views/confirmations/hooks/useConfirmActions.ts +++ b/app/components/Views/confirmations/hooks/useConfirmActions.ts @@ -10,6 +10,8 @@ import { useQRHardwareContext } from '../context/QRHardwareContext'; import useApprovalRequest from './useApprovalRequest'; import { useSignatureMetrics } from './useSignatureMetrics'; import { useTransactionMetadataRequest } from './useTransactionMetadataRequest'; +import { selectShouldUseSmartTransaction } from '../../../../selectors/smartTransactionsController'; +import { useSelector } from 'react-redux'; export const useConfirmActions = () => { const { @@ -26,7 +28,10 @@ export const useConfirmActions = () => { const { ledgerSigningInProgress, openLedgerSignModal } = useLedgerContext(); const navigation = useNavigation(); const transactionMetadata = useTransactionMetadataRequest(); - const isStakingDepositConfirmation = isStakingConfirmation( + const shouldUseSmartTransaction = useSelector( + selectShouldUseSmartTransaction, + ); + const isOneOfTheStakingConfirmations = isStakingConfirmation( transactionMetadata?.type as string, ); @@ -59,12 +64,12 @@ export const useConfirmActions = () => { return; } await onRequestConfirm({ - waitForResult: false, + waitForResult: isSignatureReq || !shouldUseSmartTransaction, deleteAfterResult: true, handleErrors: false, }); - if (isStakingDepositConfirmation) { + if (isOneOfTheStakingConfirmations) { navigation.navigate(Routes.TRANSACTIONS_VIEW); } else { navigation.goBack(); @@ -83,7 +88,8 @@ export const useConfirmActions = () => { captureSignatureMetrics, onRequestConfirm, isSignatureReq, - isStakingDepositConfirmation, + isOneOfTheStakingConfirmations, + shouldUseSmartTransaction, ]); return { onConfirm, onReject }; From d1d1fe6471eb301a9fb65cbb6b6584f98f8d3805 Mon Sep 17 00:00:00 2001 From: Aslau Mario-Daniel <marioaslau@gmail.com> Date: Thu, 20 Mar 2025 20:39:58 +0000 Subject: [PATCH 060/473] fix: cp-7.43.0 bell icon colour and styles (#14084) (#14163) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fixes bell icon colour from blue (primary colour) to black to match other icons. Fixes: 1. Enable notifications feature flag 2. Login 3. See bell colour. <!-- If applicable, add screenshots and/or recordings to visualize the before and after of your change. --> <!-- [screenshots/recordings] --> Android ![Screenshot 2025-03-18 at 11 51 50](https://github.com/user-attachments/assets/91846995-3df8-48c5-8bd9-0c1f8891bfb7) IOS ![Screenshot 2025-03-18 at 11 53 31](https://github.com/user-attachments/assets/3de159f4-43b2-4d7e-8e56-8b73ba48e9e6) - [x] I’ve followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile Coding Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [x] I've completed the PR template to the best of my ability - [x] I’ve included tests if applicable - [x] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [x] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. - [ ] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [ ] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots. <!-- Please submit this PR as a draft initially. Do not mark it as "Ready for review" until the template has been completely filled out, and PR status checks have passed at least once. --> ## **Description** <!-- Write a short description of the changes included in this pull request, also include relevant motivation and context. Have in mind the following questions: 1. What is the reason for the change? 2. What is the improvement/solution? --> ## **Related issues** Fixes: ## **Manual testing steps** 1. Go to this page... 2. 3. ## **Screenshots/Recordings** <!-- If applicable, add screenshots and/or recordings to visualize the before and after of your change. --> ### **Before** <!-- [screenshots/recordings] --> ### **After** <!-- [screenshots/recordings] --> ## **Pre-merge author checklist** - [ ] I’ve followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile Coding Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [ ] I've completed the PR template to the best of my ability - [ ] I’ve included tests if applicable - [ ] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [ ] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. ## **Pre-merge reviewer checklist** - [ ] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [ ] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots. --------- Co-authored-by: Prithpal Sooriya <prithpal.sooriya@consensys.net> --- app/components/UI/Navbar/index.js | 45 +++++++++---------- .../Wallet/__snapshots__/index.test.tsx.snap | 7 --- 2 files changed, 21 insertions(+), 31 deletions(-) diff --git a/app/components/UI/Navbar/index.js b/app/components/UI/Navbar/index.js index 4202db817c05..f1040c305207 100644 --- a/app/components/UI/Navbar/index.js +++ b/app/components/UI/Navbar/index.js @@ -102,9 +102,6 @@ const styles = StyleSheet.create({ paddingHorizontal: Device.isAndroid() ? 22 : 18, paddingVertical: Device.isAndroid() ? 14 : 8, }, - notificationButton: { - marginHorizontal: 4, - }, disabled: { opacity: 0.3, }, @@ -129,9 +126,6 @@ const styles = StyleSheet.create({ leftElementContainer: { marginLeft: 16, }, - notificationsWrapper: { - marginHorizontal: 4, - }, notificationsBadge: { width: 8, height: 8, @@ -139,7 +133,7 @@ const styles = StyleSheet.create({ position: 'absolute', top: 2, - right: 10, + right: 4, }, headerLeftButton: { marginHorizontal: 16, @@ -1047,30 +1041,33 @@ export function getWalletNavbarOptions( > <AddressCopy /> </View> - <View style={styles.notificationsWrapper}> - {isNotificationsFeatureEnabled() && ( + {isNotificationsFeatureEnabled() && ( + <View> + {/* Icon */} <ButtonIcon - iconColor={IconColor.Primary} + iconColor={IconColor.Default} onPress={handleNotificationOnPress} iconName={IconName.Notification} size={IconSize.Xl} testID={WalletViewSelectorsIDs.WALLET_NOTIFICATIONS_BUTTON} style={styles.notificationButton} /> - )} - {isNotificationEnabled && ( - <View - style={[ - styles.notificationsBadge, - { - backgroundColor: unreadNotificationCount - ? themeColors.error.default - : themeColors.background.transparent, - }, - ]} - /> - )} - </View> + + {/* Badge Dot */} + {isNotificationEnabled && ( + <View + style={[ + styles.notificationsBadge, + { + backgroundColor: unreadNotificationCount + ? themeColors.error.default + : themeColors.background.transparent, + }, + ]} + /> + )} + </View> + )} <ButtonIcon iconColor={IconColor.Default} diff --git a/app/components/Views/Wallet/__snapshots__/index.test.tsx.snap b/app/components/Views/Wallet/__snapshots__/index.test.tsx.snap index 383d27fcaf70..25c95d155337 100644 --- a/app/components/Views/Wallet/__snapshots__/index.test.tsx.snap +++ b/app/components/Views/Wallet/__snapshots__/index.test.tsx.snap @@ -538,13 +538,6 @@ exports[`Wallet should render correctly 1`] = ` </RNGestureHandlerButton> </View> </View> - <View - style={ - { - "marginHorizontal": 4, - } - } - /> <TouchableOpacity accessible={true} activeOpacity={1} From 77f2c7608fef65b6a4bbc6a2c8a9794047ab06e0 Mon Sep 17 00:00:00 2001 From: Aslau Mario-Daniel <marioaslau@gmail.com> Date: Fri, 21 Mar 2025 18:55:41 +0000 Subject: [PATCH 061/473] =?UTF-8?q?ci:=20cp-7.43.0=20add=20trigger=20to=20?= =?UTF-8?q?kick=20off=20qa=20builds=20after=20release=20is=20publ=E2=80=A6?= =?UTF-8?q?=20(#14188)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit …ished (#14092) <!-- Please submit this PR as a draft initially. Do not mark it as "Ready for review" until the template has been completely filled out, and PR status checks have passed at least once. --> ## **Description** The changes in the original [PR](https://github.com/MetaMask/metamask-mobile/pull/13506) is no longer in main. This PR readds these changes. > The purpose of this PR is to clean up our trigger map. Furthermore, we want to trigger QA builds after a release was tagged. ## **Related issues** Fixes: ## **Manual testing steps** 1. Go to this page... 2. 3. ## **Screenshots/Recordings** <!-- If applicable, add screenshots and/or recordings to visualize the before and after of your change. --> ### **Before** <!-- [screenshots/recordings] --> ### **After** <!-- [screenshots/recordings] --> ## **Pre-merge author checklist** - [ ] I’ve followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile Coding Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [ ] I've completed the PR template to the best of my ability - [ ] I’ve included tests if applicable - [ ] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [ ] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. ## **Pre-merge reviewer checklist** - [ ] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [ ] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots. <!-- Please submit this PR as a draft initially. Do not mark it as "Ready for review" until the template has been completely filled out, and PR status checks have passed at least once. --> ## **Description** <!-- Write a short description of the changes included in this pull request, also include relevant motivation and context. Have in mind the following questions: 1. What is the reason for the change? 2. What is the improvement/solution? --> ## **Related issues** Fixes: ## **Manual testing steps** 1. Go to this page... 2. 3. ## **Screenshots/Recordings** <!-- If applicable, add screenshots and/or recordings to visualize the before and after of your change. --> ### **Before** <!-- [screenshots/recordings] --> ### **After** <!-- [screenshots/recordings] --> ## **Pre-merge author checklist** - [ ] I’ve followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile Coding Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [ ] I've completed the PR template to the best of my ability - [ ] I’ve included tests if applicable - [ ] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [ ] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. ## **Pre-merge reviewer checklist** - [ ] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [ ] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots. Co-authored-by: Curtis David <Curtis.David7@gmail.com> --- bitrise.yml | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/bitrise.yml b/bitrise.yml index e69c9032e568..0c6017344fa5 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -1874,9 +1874,5 @@ trigger_map: pipeline: app_launch_times_and_expo_pipeline - tag: 'qa-*' pipeline: create_qa_builds_pipeline - - tag: 'dev-e2e-*' - pipeline: pr_smoke_e2e_pipeline - - tag: 'v*.*.*-RC-*' - pipeline: release_e2e_pipeline - - push_branch: detox/address-regression-tests-slowdown - pipeline: multichain_permissions_e2e_pipeline + - tag: 'v*.*.*' + pipeline: create_qa_builds_pipeline From 08c412593d9ad452366683aa3e8262994d1dc257 Mon Sep 17 00:00:00 2001 From: "runway-github[bot]" <73448015+runway-github[bot]@users.noreply.github.com> Date: Fri, 21 Mar 2025 20:56:39 +0000 Subject: [PATCH 062/473] chore(runway): cherry-pick fix: Disable Snaps APIs when using WalletConnect or SDK (#14195) - fix: Disable Snaps APIs when using WalletConnect or SDK (#14187) <!-- Please submit this PR as a draft initially. Do not mark it as "Ready for review" until the template has been completely filled out, and PR status checks have passed at least once. --> ## **Description** Disable the Snaps APIs in WalletConnect and SDK contexts. [14038be](https://github.com/MetaMask/metamask-mobile/commit/14038be8dd31bd2367d86a7e69e11a6d5e3e5a34) Co-authored-by: Frederik Bolding <frederik.bolding@gmail.com> --- app/core/BackgroundBridge/BackgroundBridge.js | 39 +++++++++++++------ 1 file changed, 28 insertions(+), 11 deletions(-) diff --git a/app/core/BackgroundBridge/BackgroundBridge.js b/app/core/BackgroundBridge/BackgroundBridge.js index 964a6da967a4..26c4f235bf6d 100644 --- a/app/core/BackgroundBridge/BackgroundBridge.js +++ b/app/core/BackgroundBridge/BackgroundBridge.js @@ -21,6 +21,7 @@ import WalletConnectPort from './WalletConnectPort'; import Port from './Port'; import { store } from '../../store'; ///: BEGIN:ONLY_INCLUDE_IF(preinstalled-snaps,external-snaps) +import { rpcErrors } from '@metamask/rpc-errors'; import snapMethodMiddlewareBuilder from '../Snaps/SnapsMethodMiddleware'; import { SubjectType } from '@metamask/permission-controller'; ///: END:ONLY_INCLUDE_IF @@ -442,6 +443,18 @@ export class BackgroundBridge extends EventEmitter { // Sentry tracing middleware engine.push(createTracingMiddleware()); + ///: BEGIN:ONLY_INCLUDE_IF(preinstalled-snaps,external-snaps) + // These Snaps RPC methods are disabled in WalletConnect and SDK for now + if (this.isMMSDK || this.isWalletConnect) { + engine.push((req, _res, next, end) => { + if (['wallet_snap'].includes(req.method)) { + return end(rpcErrors.methodNotFound({ data: { method: req.method } })); + } + return next(); + }); + } + ///: END:ONLY_INCLUDE_IF + // Append PermissionController middleware engine.push( Engine.context.PermissionController.createPermissionMiddleware({ @@ -452,16 +465,18 @@ export class BackgroundBridge extends EventEmitter { ); ///: BEGIN:ONLY_INCLUDE_IF(preinstalled-snaps,external-snaps) - // Snaps middleware - engine.push( - snapMethodMiddlewareBuilder( - Engine.context, - Engine.controllerMessenger, - this.url, - // We assume that origins connecting through the BackgroundBridge are websites - SubjectType.Website, - ), - ); + // The Snaps middleware is disabled in WalletConnect and SDK for now. + if (!this.isMMSDK && !this.isWalletConnect) { + engine.push( + snapMethodMiddlewareBuilder( + Engine.context, + Engine.controllerMessenger, + this.url, + // We assume that origins connecting through the BackgroundBridge are websites + SubjectType.Website, + ), + ); + } ///: END:ONLY_INCLUDE_IF // user-facing RPC methods @@ -493,7 +508,9 @@ export class BackgroundBridge extends EventEmitter { */ getState() { const vault = Engine.context.KeyringController.state.vault; - const { PreferencesController: { selectedAddress } } = Engine.datamodel.state; + const { + PreferencesController: { selectedAddress }, + } = Engine.datamodel.state; return { isInitialized: !!vault, isUnlocked: true, From cf2cc7d15ea487d4900db38a0669a9ebda107efe Mon Sep 17 00:00:00 2001 From: metamaskbot <metamaskbot@users.noreply.github.com> Date: Fri, 21 Mar 2025 21:00:12 +0000 Subject: [PATCH 063/473] Bump version number to 1649 --- android/app/build.gradle | 2 +- bitrise.yml | 4 ++-- ios/MetaMask.xcodeproj/project.pbxproj | 12 ++++++------ 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/android/app/build.gradle b/android/app/build.gradle index 5310804f704c..9ebfd5929071 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -179,7 +179,7 @@ android { minSdkVersion rootProject.ext.minSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion versionName "7.43.0" - versionCode 1638 + versionCode 1649 testBuildType System.getProperty('testBuildType', 'debug') missingDimensionStrategy 'react-native-camera', 'general' testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" diff --git a/bitrise.yml b/bitrise.yml index 0c6017344fa5..28adcf06db4c 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -1832,13 +1832,13 @@ app: VERSION_NAME: 7.43.0 - opts: is_expand: false - VERSION_NUMBER: 1638 + VERSION_NUMBER: 1649 - opts: is_expand: false FLASK_VERSION_NAME: 7.43.0 - opts: is_expand: false - FLASK_VERSION_NUMBER: 1638 + FLASK_VERSION_NUMBER: 1649 - opts: is_expand: false ANDROID_APK_LINK: '' diff --git a/ios/MetaMask.xcodeproj/project.pbxproj b/ios/MetaMask.xcodeproj/project.pbxproj index 6ce22b55ab58..df8a0032cd64 100644 --- a/ios/MetaMask.xcodeproj/project.pbxproj +++ b/ios/MetaMask.xcodeproj/project.pbxproj @@ -1437,7 +1437,7 @@ CODE_SIGN_IDENTITY = "Apple Development"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1638; + CURRENT_PROJECT_VERSION = 1649; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = 48XVW22RCG; @@ -1506,7 +1506,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMask.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1638; + CURRENT_PROJECT_VERSION = 1649; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 48XVW22RCG; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 48XVW22RCG; @@ -1571,7 +1571,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMaskDebug.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1638; + CURRENT_PROJECT_VERSION = 1649; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = 48XVW22RCG; @@ -1637,7 +1637,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMask.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1638; + CURRENT_PROJECT_VERSION = 1649; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 48XVW22RCG; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 48XVW22RCG; @@ -1796,7 +1796,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMaskDebug.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1638; + CURRENT_PROJECT_VERSION = 1649; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = 48XVW22RCG; @@ -1865,7 +1865,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMask.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1638; + CURRENT_PROJECT_VERSION = 1649; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 48XVW22RCG; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 48XVW22RCG; From 33a4d77592cb64f784367acd357ab770a255e294 Mon Sep 17 00:00:00 2001 From: MetaMask Bot <37885440+metamaskbot@users.noreply.github.com> Date: Mon, 24 Mar 2025 12:08:25 -0230 Subject: [PATCH 064/473] feat: 7.42.1 (#14109) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This is the release candidate for version 7.42.1. The changelog will be found in another PR chore/7.42.1-Changelog. # Team sign-off checklist - [ ] team-mobile-platform # Reference - Testing plan sheet - https://docs.google.com/spreadsheets/d/1tsoodlAlyvEUpkkcNcbZ4PM9HuC9cEM80RZeoVv5OCQ/edit?gid=404070372#gid=404070372 --------- Co-authored-by: Owen Craston <owen.craston@consensys.net> Co-authored-by: Brian August Nguyen <brianacnguyen@gmail.com> Co-authored-by: Nico MASSART <NicolasMassart@users.noreply.github.com> Co-authored-by: Davide Brocchetto <davide.brocchetto@consensys.net> Co-authored-by: Vince Howard <vincenguyenhoward@gmail.com> Co-authored-by: Eric Bishard <eric@httpjunkie.com> Co-authored-by: metamaskbot <metamaskbot@users.noreply.github.com> Co-authored-by: Curtis David <Curtis.David7@gmail.com> Co-authored-by: Jyoti Puri <jyotipuri@gmail.com> Co-authored-by: Salim TOUBAL <salim.toubal@outlook.com> Co-authored-by: Prithpal Sooriya <prithpal.sooriya@consensys.net> Co-authored-by: sahar-fehri <sahar.fehri@consensys.net> Co-authored-by: CW <chris.wilcox@consensys.net> Co-authored-by: Pedro Figueiredo <ganseki.figueiredo@gmail.com> Co-authored-by: digiwand <20778143+digiwand@users.noreply.github.com> Co-authored-by: tommasini <46944231+tommasini@users.noreply.github.com> Co-authored-by: Matthew Grainger <46547583+Matt561@users.noreply.github.com> Co-authored-by: Gustavo Antunes <17601467+gantunesr@users.noreply.github.com> Co-authored-by: Vinicius Stevam <45455812+vinistevam@users.noreply.github.com> Co-authored-by: EtherWizard33 <165834542+EtherWizard33@users.noreply.github.com> Co-authored-by: Bryan Fullam <bryan.fullam@consensys.net> Co-authored-by: Devin Stewart <49423028+Bigshmow@users.noreply.github.com> Co-authored-by: Ziad Saab <ziad.saab@gmail.com> Co-authored-by: sethkfman <10342624+sethkfman@users.noreply.github.com> Co-authored-by: Nicholas Smith <nick.smith@consensys.net> Co-authored-by: OGPoyraz <omergoktugpoyraz@gmail.com> Co-authored-by: George Weiler <georgejweiler@gmail.com> Co-authored-by: Cal Leung <cal.leung@consensys.net> Co-authored-by: Amitabh Aggarwal <aggarwal.amitabh@gmail.com> Co-authored-by: Nick Gambino <35090461+gambinish@users.noreply.github.com> Co-authored-by: Gauthier Petetin <gauthierpetetin@hotmail.com> Co-authored-by: Frederik Bolding <frederik.bolding@gmail.com> Co-authored-by: infiniteflower <139582705+infiniteflower@users.noreply.github.com> Co-authored-by: Iván <ivan.canete@consensys.net> Co-authored-by: Daniel Cross <dan.s.cross@icloud.com> Co-authored-by: Owen Craston <owengc12@gmail.com> Co-authored-by: Daniel <80175477+dan437@users.noreply.github.com> Co-authored-by: Kylan Hurt <6249205+smilingkylan@users.noreply.github.com> Co-authored-by: jake-perkins <128608287+jake-perkins@users.noreply.github.com> Co-authored-by: Xiaoming Wang <7315988+dawnseeker8@users.noreply.github.com> Co-authored-by: David Drazic <david@timechaser.org> Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: runway-github[bot] <73448015+runway-github[bot]@users.noreply.github.com> Co-authored-by: Aslau Mario-Daniel <marioaslau@gmail.com> --- .github/CODEOWNERS | 4 + .iyarc | 5 - .storybook/decorators/withTheme.tsx | 24 +- CHANGELOG.md | 7 + android/app/build.gradle | 4 +- app/actions/user/index.ts | 10 + app/actions/user/types.ts | 7 +- .../ThemeProvider/ThemeProvider.constants.ts | 3 - .../ThemeProvider/ThemeProvider.test.tsx | 50 +- .../providers/ThemeProvider/ThemeProvider.tsx | 18 +- app/components/Nav/App/App.test.tsx | 94 +++ app/components/Nav/App/{index.js => App.tsx} | 619 +++++++----------- .../Nav/App/__snapshots__/index.test.tsx.snap | 314 --------- app/components/Nav/App/index.test.tsx | 66 -- app/components/Nav/App/index.ts | 1 + .../ControllersGate/ControllersGate.test.tsx | 57 ++ .../Nav/ControllersGate/ControllersGate.tsx | 25 + app/components/Nav/ControllersGate/index.ts | 3 + app/components/Nav/ControllersGate/types.ts | 7 + .../NavigationProvider.test.tsx | 107 +++ .../NavigationProvider/NavigationProvider.tsx | 83 +++ .../Nav/NavigationProvider/index.ts | 1 + .../Nav/NavigationProvider/types.ts | 7 + .../Views/OnboardingSuccess/index.tsx | 4 +- .../Root/__snapshots__/index.test.tsx.snap | 313 +-------- app/components/Views/Root/index.js | 95 --- app/components/Views/Root/index.test.tsx | 107 ++- app/components/Views/Root/index.tsx | 79 +++ app/components/Views/Root/types.ts | 7 + .../ApproveView/Approve/index.js | 1 - .../DeleteWallet/useDeleteWallet.test.tsx | 6 + app/constants/error.ts | 2 - app/core/BackupVault/backupVault.test.ts | 33 +- app/core/BackupVault/backupVault.ts | 46 +- app/core/Engine/Engine.test.ts | 46 ++ app/core/Engine/Engine.ts | 18 +- app/core/EngineService/EngineService.ts | 12 +- app/core/NavigationService.ts | 15 - .../NavigationService.test.ts | 65 ++ .../NavigationService/NavigationService.ts | 52 ++ app/core/NavigationService/index.ts | 1 + app/reducers/user/index.ts | 6 + app/reducers/user/selectors.test.ts | 48 ++ app/reducers/user/selectors.ts | 11 + app/reducers/user/types.ts | 1 + app/store/index.ts | 4 +- app/store/persistConfig.ts | 3 +- app/store/sagas/index.ts | 12 +- app/util/test/testSetup.js | 4 +- attribution.txt | 12 +- babel.config.js | 4 + bitrise.yml | 46 +- ios/MetaMask.xcodeproj/project.pbxproj | 81 ++- package.json | 6 +- yarn.lock | 59 +- 55 files changed, 1343 insertions(+), 1372 deletions(-) delete mode 100644 app/component-library/providers/ThemeProvider/ThemeProvider.constants.ts create mode 100644 app/components/Nav/App/App.test.tsx rename app/components/Nav/App/{index.js => App.tsx} (66%) delete mode 100644 app/components/Nav/App/__snapshots__/index.test.tsx.snap delete mode 100644 app/components/Nav/App/index.test.tsx create mode 100644 app/components/Nav/App/index.ts create mode 100644 app/components/Nav/ControllersGate/ControllersGate.test.tsx create mode 100644 app/components/Nav/ControllersGate/ControllersGate.tsx create mode 100644 app/components/Nav/ControllersGate/index.ts create mode 100644 app/components/Nav/ControllersGate/types.ts create mode 100644 app/components/Nav/NavigationProvider/NavigationProvider.test.tsx create mode 100644 app/components/Nav/NavigationProvider/NavigationProvider.tsx create mode 100644 app/components/Nav/NavigationProvider/index.ts create mode 100644 app/components/Nav/NavigationProvider/types.ts delete mode 100644 app/components/Views/Root/index.js create mode 100644 app/components/Views/Root/index.tsx create mode 100644 app/components/Views/Root/types.ts delete mode 100644 app/core/NavigationService.ts create mode 100644 app/core/NavigationService/NavigationService.test.ts create mode 100644 app/core/NavigationService/NavigationService.ts create mode 100644 app/core/NavigationService/index.ts create mode 100644 app/reducers/user/selectors.test.ts diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index b74a3c5cf56a..f974e24a57ae 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -19,6 +19,10 @@ bitrise.yml @MetaMask/mobile-pla yarn.lock @MetaMask/mobile-platform ios/Podfile.lock @MetaMask/mobile-platform app/components/Views/BrowserTab/BrowserTab.tsx @MetaMask/mobile-platform +app/components/Nav/NavigationProvider @MetaMask/mobile-platform +app/components/Nav/ControllersGate @MetaMask/mobile-platform +app/components/Views/Root @MetaMask/mobile-platform +app/core/NavigationService @MetaMask/mobile-platform app/core/Engine/messengers/ @MetaMask/mobile-platform app/core/Engine/utils/ @MetaMask/mobile-platform app/core/Engine/constants/ @MetaMask/mobile-platform diff --git a/.iyarc b/.iyarc index c9bf0c62f57c..e69de29bb2d1 100644 --- a/.iyarc +++ b/.iyarc @@ -1,5 +0,0 @@ -# Temp bypass for release already submitted - -GHSA-jr5f-v2jv-69x6 - -GHSA-968p-4wvh-cqc8 \ No newline at end of file diff --git a/.storybook/decorators/withTheme.tsx b/.storybook/decorators/withTheme.tsx index 78e0568e1c9a..c93599733e59 100644 --- a/.storybook/decorators/withTheme.tsx +++ b/.storybook/decorators/withTheme.tsx @@ -1,8 +1,26 @@ import React from 'react'; +import { Dimensions, View } from 'react-native'; +import { useAppTheme } from '../../app/util/theme'; + import ThemeProvider from '../../app/component-library/providers/ThemeProvider/ThemeProvider'; -const withTheme = (storyFn: () => React.ReactNode) => ( - <ThemeProvider>{storyFn()}</ThemeProvider> -); +const withTheme = (storyFn: () => React.ReactNode) => { + const { width: windowWidth, height: windowHeight } = Dimensions.get('window'); + const theme = useAppTheme(); + + return ( + <ThemeProvider> + <View + style={{ + width: windowWidth, + height: windowHeight, + backgroundColor: theme.colors.background.alternative, + }} + > + {storyFn()} + </View> + </ThemeProvider> + ); +}; export default withTheme; diff --git a/CHANGELOG.md b/CHANGELOG.md index 346cac77777f..866039be93bf 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,13 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +## [7.42.1] + +### Fixed + +- fix: Manage order for app services initialization ([#13912](https://github.com/MetaMask/metamask-mobile/pull/13912)) +- fix: #9487 Remove false vault back up failure log ([#14038](https://github.com/MetaMask/metamask-mobile/pull/14038)) + ## [7.42.0] ### Added diff --git a/android/app/build.gradle b/android/app/build.gradle index c5fe7cc1497f..cd3693d1b53b 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -178,8 +178,8 @@ android { applicationId "io.metamask" minSdkVersion rootProject.ext.minSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion - versionName "7.42.0" - versionCode 1600 + versionName "7.42.1" + versionCode 1637 testBuildType System.getProperty('testBuildType', 'debug') missingDimensionStrategy 'react-native-camera', 'general' testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" diff --git a/app/actions/user/index.ts b/app/actions/user/index.ts index 9071fcffd507..e1ed95712996 100644 --- a/app/actions/user/index.ts +++ b/app/actions/user/index.ts @@ -20,6 +20,7 @@ import { type SetAppThemeAction, type CheckedAuthAction, type PersistedDataLoadedAction, + type SetAppServicesReadyAction, UserActionType, } from './types'; @@ -159,3 +160,12 @@ export function onPersistedDataLoaded(): PersistedDataLoadedAction { type: UserActionType.ON_PERSISTED_DATA_LOADED, }; } + +/** + * Action to signal that app services are ready + */ +export function setAppServicesReady(): SetAppServicesReadyAction { + return { + type: UserActionType.SET_APP_SERVICES_READY, + }; +} diff --git a/app/actions/user/types.ts b/app/actions/user/types.ts index 704aee6092dc..ce1e41a30049 100644 --- a/app/actions/user/types.ts +++ b/app/actions/user/types.ts @@ -23,6 +23,7 @@ export enum UserActionType { SET_GAS_EDUCATION_CAROUSEL_SEEN = 'SET_GAS_EDUCATION_CAROUSEL_SEEN', SET_APP_THEME = 'SET_APP_THEME', CHECKED_AUTH = 'CHECKED_AUTH', + SET_APP_SERVICES_READY = 'SET_APP_SERVICES_READY', } // User actions @@ -85,6 +86,9 @@ export type CheckedAuthAction = Action<UserActionType.CHECKED_AUTH> & { payload: { initialScreen: string }; }; +export type SetAppServicesReadyAction = + Action<UserActionType.SET_APP_SERVICES_READY>; + /** * User actions union type */ @@ -108,4 +112,5 @@ export type UserAction = | LoadingUnsetAction | SetGasEducationCarouselSeenAction | SetAppThemeAction - | CheckedAuthAction; + | CheckedAuthAction + | SetAppServicesReadyAction; diff --git a/app/component-library/providers/ThemeProvider/ThemeProvider.constants.ts b/app/component-library/providers/ThemeProvider/ThemeProvider.constants.ts deleted file mode 100644 index f1bdcc8ca1ab..000000000000 --- a/app/component-library/providers/ThemeProvider/ThemeProvider.constants.ts +++ /dev/null @@ -1,3 +0,0 @@ -/* eslint-disable import/prefer-default-export */ -// Test IDs -export const THEMEPROVIDER_TESTID = 'theme-provider'; diff --git a/app/component-library/providers/ThemeProvider/ThemeProvider.test.tsx b/app/component-library/providers/ThemeProvider/ThemeProvider.test.tsx index d66b1e574a11..57ee356672b9 100644 --- a/app/component-library/providers/ThemeProvider/ThemeProvider.test.tsx +++ b/app/component-library/providers/ThemeProvider/ThemeProvider.test.tsx @@ -1,37 +1,41 @@ -// Third party dependencies import React from 'react'; -import { render } from '@testing-library/react-native'; import { View } from 'react-native'; -import configureStore from 'redux-mock-store'; -import { Provider } from 'react-redux'; // External dependencies -import { mockTheme } from '../../../util/theme'; +import { ThemeContext } from '../../../util/theme'; +import renderWithProvider from '../../../util/test/renderWithProvider'; // Internal dependencies import ThemeProvider from './ThemeProvider'; -import { THEMEPROVIDER_TESTID } from './ThemeProvider.constants'; - -// Create a mock store -const mockStore = configureStore([]); -const store = mockStore({ - user: { - appTheme: mockTheme.themeAppearance, // or any other relevant initial state - }, -}); describe('ThemeProvider', () => { - it('should provide the correct theme to its children', () => { - const { getByTestId } = render( - <Provider store={store}> - <ThemeProvider> - <View /> - </ThemeProvider> - </Provider>, + it('renders children correctly', () => { + const { getByTestId } = renderWithProvider( + <ThemeProvider> + <View testID="child-component" /> + </ThemeProvider>, ); - expect(getByTestId(THEMEPROVIDER_TESTID).props.style.backgroundColor).toBe( - mockTheme.colors.background.alternative, + expect(getByTestId('child-component')).toBeTruthy(); + }); + + it('provides the correct theme via ThemeContext', () => { + let themeValue = { + brandColors: { + black: '', + }, + }; + const TestComponent = () => { + themeValue = React.useContext(ThemeContext); + return null; + }; + + renderWithProvider( + <ThemeProvider> + <TestComponent /> + </ThemeProvider>, ); + + expect(themeValue.brandColors.black).toStrictEqual('#000000'); }); }); diff --git a/app/component-library/providers/ThemeProvider/ThemeProvider.tsx b/app/component-library/providers/ThemeProvider/ThemeProvider.tsx index f708396d1f24..8fb0929d098e 100644 --- a/app/component-library/providers/ThemeProvider/ThemeProvider.tsx +++ b/app/component-library/providers/ThemeProvider/ThemeProvider.tsx @@ -1,29 +1,13 @@ // Third party dependencies import React from 'react'; -import { Dimensions, View } from 'react-native'; // External dependencies import { useAppTheme, ThemeContext } from '../../../util/theme'; -// Internal dependencies -import { THEMEPROVIDER_TESTID } from './ThemeProvider.constants'; - const ThemeProvider = ({ children }: { children: React.ReactNode }) => { - const { width: windowWidth, height: windowHeight } = Dimensions.get('window'); const theme = useAppTheme(); return ( - <ThemeContext.Provider value={theme}> - <View - style={{ - width: windowWidth, - height: windowHeight, - backgroundColor: theme.colors.background.alternative, - }} - testID={THEMEPROVIDER_TESTID} - > - {children} - </View> - </ThemeContext.Provider> + <ThemeContext.Provider value={theme}>{children}</ThemeContext.Provider> ); }; diff --git a/app/components/Nav/App/App.test.tsx b/app/components/Nav/App/App.test.tsx new file mode 100644 index 000000000000..be2b170cf3b5 --- /dev/null +++ b/app/components/Nav/App/App.test.tsx @@ -0,0 +1,94 @@ +import { + DeepPartial, + renderScreen, +} from '../../../util/test/renderWithProvider'; +import { backgroundState } from '../../../util/test/initial-root-state'; +import App from '.'; +import { MetaMetrics } from '../../../core/Analytics'; +import { waitFor } from '@testing-library/react-native'; +import { RootState } from '../../../reducers'; +import StorageWrapper from '../../../store/storage-wrapper'; +import { Authentication } from '../../../core'; +import Routes from '../../../constants/navigation/Routes'; + +const initialState: DeepPartial<RootState> = { + user: { + userLoggedIn: true, + }, + engine: { + backgroundState, + }, +}; + +jest.mock('../../../core/NavigationService', () => ({ + navigation: { + reset: jest.fn(), + }, +})); + +// Mock the navigation hook +const mockNavigate = jest.fn(); +const mockReset = jest.fn(); +jest.mock('@react-navigation/native', () => ({ + ...jest.requireActual('@react-navigation/native'), + useNavigation: () => ({ + navigate: mockNavigate, + reset: mockReset, + }), +})); + +jest.mock('../../../core/Analytics/MetaMetrics'); + +const mockMetrics = { + configure: jest.fn(), + addTraitsToUser: jest.fn(), +}; + +// Need to mock this module since it uses store.getState, which interferes with the mocks from this test file. +jest.mock( + '../../../util/metrics/UserSettingsAnalyticsMetaData/generateUserProfileAnalyticsMetaData', + () => jest.fn().mockReturnValue({ userProp: 'User value' }), +); + +jest.mock( + '../../../util/metrics/DeviceAnalyticsMetaData/generateDeviceAnalyticsMetaData', + () => jest.fn().mockReturnValue({ deviceProp: 'Device value' }), +); + +(MetaMetrics.getInstance as jest.Mock).mockReturnValue(mockMetrics); + +describe('App', () => { + beforeEach(() => { + jest.clearAllMocks(); + mockNavigate.mockClear(); + }); + + it('configures MetaMetrics instance and identifies user on startup', async () => { + renderScreen(App, { name: 'App' }, { state: initialState }); + await waitFor(() => { + expect(mockMetrics.configure).toHaveBeenCalledTimes(1); + }); + }); + + describe('Authentication flow logic', () => { + it('navigates to onboarding when user does not exist', async () => { + jest.spyOn(StorageWrapper, 'getItem').mockResolvedValue(null); + renderScreen(App, { name: 'App' }, { state: initialState }); + await waitFor(() => { + expect(mockReset).toHaveBeenCalledWith({ + routes: [{ name: Routes.ONBOARDING.ROOT_NAV }], + }); + }); + }); + it('navigates to login when user exists and logs in', async () => { + jest.spyOn(StorageWrapper, 'getItem').mockResolvedValue(true); + jest.spyOn(Authentication, 'appTriggeredAuth').mockResolvedValue(); + renderScreen(App, { name: 'App' }, { state: initialState }); + await waitFor(() => { + expect(mockReset).toHaveBeenCalledWith({ + routes: [{ name: Routes.ONBOARDING.HOME_NAV }], + }); + }); + }); + }); +}); diff --git a/app/components/Nav/App/index.js b/app/components/Nav/App/App.tsx similarity index 66% rename from app/components/Nav/App/index.js rename to app/components/Nav/App/App.tsx index e2a54e4a37e4..bfa5b2b0624f 100644 --- a/app/components/Nav/App/index.js +++ b/app/components/Nav/App/App.tsx @@ -5,8 +5,11 @@ import React, { useRef, useState, } from 'react'; -import { CommonActions, NavigationContainer } from '@react-navigation/native'; -import PropTypes from 'prop-types'; +import { + CommonActions, + useNavigation, + useRoute, +} from '@react-navigation/native'; import { Linking, ///: BEGIN:ONLY_INCLUDE_IF(preinstalled-snaps,external-snaps) @@ -34,21 +37,14 @@ import SharedDeeplinkManager from '../../../core/DeeplinkManager/SharedDeeplinkM import branch from 'react-native-branch'; import AppConstants from '../../../core/AppConstants'; import Logger from '../../../util/Logger'; -import { connect, useDispatch } from 'react-redux'; +import { useDispatch, useSelector } from 'react-redux'; import { CURRENT_APP_VERSION, EXISTING_USER, LAST_APP_VERSION, } from '../../../constants/storage'; import { getVersion } from 'react-native-device-info'; -import { - setCurrentBottomNavRoute, - setCurrentRoute, - onNavigationReady, -} from '../../../actions/navigation'; -import { findRouteNameFromNavigatorState } from '../../../util/general'; import { Authentication } from '../../../core/'; -import { useTheme } from '../../../util/theme'; import Device from '../../../util/device'; import SDKConnect from '../../../core/SDKConnect/SDKConnect'; import { colors as importedColors } from '../../../styles/common'; @@ -58,8 +54,8 @@ import Toast, { ToastContext, } from '../../../component-library/components/Toast'; import AccountSelector from '../../../components/Views/AccountSelector'; -import { TokenSortBottomSheet } from '../../../components/UI/Tokens/TokensBottomSheet/TokenSortBottomSheet.tsx'; -import { TokenFilterBottomSheet } from '../../../components/UI/Tokens/TokensBottomSheet/TokenFilterBottomSheet.tsx'; +import { TokenSortBottomSheet } from '../../../components/UI/Tokens/TokensBottomSheet/TokenSortBottomSheet'; +import { TokenFilterBottomSheet } from '../../../components/UI/Tokens/TokensBottomSheet/TokenFilterBottomSheet'; import AccountConnect from '../../../components/Views/AccountConnect'; import AccountPermissions from '../../../components/Views/AccountPermissions'; import { AccountPermissionsScreens } from '../../../components/Views/AccountPermissions/AccountPermissions.types'; @@ -98,7 +94,6 @@ import WC2Manager, { } from '../../../../app/core/WalletConnect/WalletConnectV2'; import { DevLogger } from '../../../../app/core/SDKConnect/utils/DevLogger'; import { PPOMView } from '../../../lib/ppom/PPOMView'; -import NavigationService from '../../../core/NavigationService'; import LockScreen from '../../Views/LockScreen'; import StorageWrapper from '../../../store/storage-wrapper'; import ShowIpfsGatewaySheet from '../../Views/ShowIpfsGatewaySheet/ShowIpfsGatewaySheet'; @@ -144,7 +139,9 @@ import { TraceOperation, } from '../../../util/trace'; import getUIStartupSpan from '../../../core/Performance/UIStartup'; +import { selectUserLoggedIn } from '../../../reducers/user/selectors'; import { Confirm } from '../../Views/confirmations/Confirm'; +import NavigationService from '../../../core/NavigationService'; const clearStackNavigatorOptions = { headerShown: false, @@ -161,54 +158,50 @@ const clearStackNavigatorOptions = { const Stack = createStackNavigator(); -const OnboardingSuccessComponent = () => ( - <OnboardingSuccess - onDone={() => - NavigationService.navigation.reset({ routes: [{ name: 'HomeNav' }] }) - } - /> -); +const OnboardingSuccessComponent = () => { + const navigation = useNavigation(); + return ( + <OnboardingSuccess + onDone={() => navigation.reset({ routes: [{ name: 'HomeNav' }] })} + /> + ); +}; -const OnboardingSuccessComponentNoSRP = () => ( - <OnboardingSuccess - noSRP - onDone={() => - NavigationService.navigation.reset({ - routes: [{ name: 'HomeNav' }], - }) - } - /> -); +const OnboardingSuccessComponentNoSRP = () => { + const navigation = useNavigation(); + return ( + <OnboardingSuccess + noSRP + onDone={() => + navigation.reset({ + routes: [{ name: 'HomeNav' }], + }) + } + /> + ); +}; const OnboardingSuccessFlow = () => ( - <Stack.Navigator - name={Routes.ONBOARDING.SUCCESS_FLOW} - initialRouteName={Routes.ONBOARDING.SUCCESS} - > + <Stack.Navigator initialRouteName={Routes.ONBOARDING.SUCCESS}> <Stack.Screen name={Routes.ONBOARDING.SUCCESS} component={OnboardingSuccessComponent} // Used in SRP flow - options={OnboardingSuccess.navigationOptions} /> <Stack.Screen name={Routes.ONBOARDING.DEFAULT_SETTINGS} // This is being used in import wallet flow component={DefaultSettings} - options={DefaultSettings.navigationOptions} /> <Stack.Screen name={Routes.ONBOARDING.GENERAL_SETTINGS} component={OnboardingGeneralSettings} - options={DefaultSettings.navigationOptions} /> <Stack.Screen name={Routes.ONBOARDING.ASSETS_SETTINGS} component={OnboardingAssetsSettings} - options={DefaultSettings.navigationOptions} /> <Stack.Screen name={Routes.ONBOARDING.SECURITY_SETTINGS} component={OnboardingSecuritySettings} - options={DefaultSettings.navigationOptions} /> </Stack.Navigator> ); @@ -218,31 +211,11 @@ const OnboardingSuccessFlow = () => ( */ const OnboardingNav = () => ( <Stack.Navigator initialRouteName="OnboardingCarousel"> - <Stack.Screen - name="Onboarding" - component={Onboarding} - options={Onboarding.navigationOptions} - /> - <Stack.Screen - name="OnboardingCarousel" - component={OnboardingCarousel} - options={OnboardingCarousel.navigationOptions} - /> - <Stack.Screen - name="ChoosePassword" - component={ChoosePassword} - options={ChoosePassword.navigationOptions} - /> - <Stack.Screen - name="AccountBackupStep1" - component={AccountBackupStep1} - options={AccountBackupStep1.navigationOptions} - /> - <Stack.Screen - name="AccountBackupStep1B" - component={AccountBackupStep1B} - options={AccountBackupStep1B.navigationOptions} - /> + <Stack.Screen name="Onboarding" component={Onboarding} /> + <Stack.Screen name="OnboardingCarousel" component={OnboardingCarousel} /> + <Stack.Screen name="ChoosePassword" component={ChoosePassword} /> + <Stack.Screen name="AccountBackupStep1" component={AccountBackupStep1} /> + <Stack.Screen name="AccountBackupStep1B" component={AccountBackupStep1B} /> <Stack.Screen name={Routes.ONBOARDING.SUCCESS_FLOW} component={OnboardingSuccessFlow} @@ -251,38 +224,19 @@ const OnboardingNav = () => ( <Stack.Screen name={Routes.ONBOARDING.SUCCESS} component={OnboardingSuccessComponentNoSRP} // Used in SRP flow - options={OnboardingSuccess.navigationOptions} /> <Stack.Screen name={Routes.ONBOARDING.DEFAULT_SETTINGS} // This is being used in import wallet flow component={DefaultSettings} - options={DefaultSettings.navigationOptions} - /> - <Stack.Screen - name="ManualBackupStep1" - component={ManualBackupStep1} - options={ManualBackupStep1.navigationOptions} - /> - <Stack.Screen - name="ManualBackupStep2" - component={ManualBackupStep2} - options={ManualBackupStep2.navigationOptions} - /> - <Stack.Screen - name="ManualBackupStep3" - component={ManualBackupStep3} - options={ManualBackupStep3.navigationOptions} /> + <Stack.Screen name="ManualBackupStep1" component={ManualBackupStep1} /> + <Stack.Screen name="ManualBackupStep2" component={ManualBackupStep2} /> + <Stack.Screen name="ManualBackupStep3" component={ManualBackupStep3} /> <Stack.Screen name={Routes.ONBOARDING.IMPORT_FROM_SECRET_RECOVERY_PHRASE} component={ImportFromSecretRecoveryPhrase} - options={ImportFromSecretRecoveryPhrase.navigationOptions} - /> - <Stack.Screen - name="OptinMetrics" - component={OptinMetrics} - options={OptinMetrics.navigationOptions} /> + <Stack.Screen name="OptinMetrics" component={OptinMetrics} /> </Stack.Navigator> ); @@ -292,11 +246,7 @@ const OnboardingNav = () => ( */ const SimpleWebviewScreen = () => ( <Stack.Navigator mode={'modal'}> - <Stack.Screen - name={Routes.WEBVIEW.SIMPLE} - component={SimpleWebview} - options={SimpleWebview.navigationOptions} - /> + <Stack.Screen name={Routes.WEBVIEW.SIMPLE} component={SimpleWebview} /> </Stack.Navigator> ); @@ -307,16 +257,8 @@ const OnboardingRootNav = () => ( screenOptions={{ headerShown: false }} > <Stack.Screen name="OnboardingNav" component={OnboardingNav} /> - <Stack.Screen - name={Routes.QR_TAB_SWITCHER} - component={QRTabSwitcher} - header={null} - /> - <Stack.Screen - name={Routes.WEBVIEW.MAIN} - header={null} - component={SimpleWebviewScreen} - /> + <Stack.Screen name={Routes.QR_TAB_SWITCHER} component={QRTabSwitcher} /> + <Stack.Screen name={Routes.WEBVIEW.MAIN} component={SimpleWebviewScreen} /> </Stack.Navigator> ); @@ -340,23 +282,20 @@ const VaultRecoveryFlow = () => ( </Stack.Navigator> ); -const EditAccountNameFlow = () => ( - <Stack.Navigator> - <Stack.Screen name="EditAccountName" component={EditAccountName} /> - </Stack.Navigator> -); +const AddNetworkFlow = () => { + const route = useRoute(); + + return ( + <Stack.Navigator> + <Stack.Screen + name="AddNetwork" + component={NetworkSettings} + initialParams={route?.params} + /> + </Stack.Navigator> + ); +}; -// eslint-disable-next-line react/prop-types -const AddNetworkFlow = ({ route }) => ( - <Stack.Navigator> - <Stack.Screen - name="AddNetwork" - component={NetworkSettings} - // eslint-disable-next-line react/prop-types - initialParams={route?.params} - /> - </Stack.Navigator> -); const DetectedTokensFlow = () => ( <Stack.Navigator mode={'modal'} @@ -537,13 +476,7 @@ const ImportPrivateKeyView = () => ( name="ImportPrivateKeySuccess" component={ImportPrivateKeySuccess} /> - <Stack.Screen - name={Routes.QR_TAB_SWITCHER} - component={QRTabSwitcher} - screenOptions={{ - headerShown: false, - }} - /> + <Stack.Screen name={Routes.QR_TAB_SWITCHER} component={QRTabSwitcher} /> </Stack.Navigator> ); @@ -572,11 +505,10 @@ const LedgerConnectFlow = () => ( ); const ConnectHardwareWalletFlow = () => ( - <Stack.Navigator name="ConnectHardwareWallet"> + <Stack.Navigator> <Stack.Screen name={Routes.HW.SELECT_DEVICE} component={SelectHardwareWallet} - options={SelectHardwareWallet.navigationOptions} /> </Stack.Navigator> ); @@ -599,18 +531,139 @@ const ConfirmDappRequest = () => ( </Stack.Navigator> ); -const App = (props) => { - const { userLoggedIn } = props; - // FIXME: Remove this when the unit tests are resolved for rendering this component. This property is only used by unit tests at the moment. Tests break when this is removed. - const supressRender = props?.route?.params?.supressRender; - const [navigator, setNavigator] = useState(undefined); - const prevNavigator = useRef(navigator); - const queueOfHandleDeeplinkFunctions = useRef([]); - const { colors } = useTheme(); +const AppFlow = () => { + const userLoggedIn = useSelector(selectUserLoggedIn); + + return ( + <Stack.Navigator + initialRouteName={Routes.FOX_LOADER} + mode={'modal'} + screenOptions={{ + headerShown: false, + cardStyle: { backgroundColor: importedColors.transparent }, + animationEnabled: false, + }} + > + {userLoggedIn && ( + // Render only if wallet is unlocked + // Note: This is probably not needed but nice to ensure that wallet isn't accessible when it is locked + <Stack.Screen + name={Routes.ONBOARDING.HOME_NAV} + component={Main} + options={{ headerShown: false }} + /> + )} + <Stack.Screen name={Routes.FOX_LOADER} component={FoxLoader} /> + <Stack.Screen + name={Routes.ONBOARDING.LOGIN} + component={Login} + options={{ headerShown: false }} + /> + <Stack.Screen + name="OnboardingRootNav" + component={OnboardingRootNav} + options={{ headerShown: false }} + /> + <Stack.Screen + name={Routes.ONBOARDING.SUCCESS_FLOW} + component={OnboardingSuccessFlow} + options={{ headerShown: false }} + /> + <Stack.Screen + name={Routes.VAULT_RECOVERY.RESTORE_WALLET} + component={VaultRecoveryFlow} + /> + <Stack.Screen + name={Routes.MODAL.ROOT_MODAL_FLOW} + component={RootModalFlow} + /> + <Stack.Screen + name="ImportPrivateKeyView" + component={ImportPrivateKeyView} + options={{ animationEnabled: true }} + /> + <Stack.Screen + name="ConnectQRHardwareFlow" + component={ConnectQRHardwareFlow} + options={{ animationEnabled: true }} + /> + <Stack.Screen + name={Routes.HW.CONNECT_LEDGER} + component={LedgerConnectFlow} + /> + <Stack.Screen + name={Routes.HW.CONNECT} + component={ConnectHardwareWalletFlow} + /> + <Stack.Screen + options={{ + //Refer to - https://reactnavigation.org/docs/stack-navigator/#animations + cardStyle: { backgroundColor: importedColors.transparent }, + cardStyleInterpolator: () => ({ + overlayStyle: { + opacity: 0, + }, + }), + }} + name={Routes.LEDGER_TRANSACTION_MODAL} + component={LedgerTransactionModal} + /> + <Stack.Screen + options={{ + //Refer to - https://reactnavigation.org/docs/stack-navigator/#animations + cardStyle: { backgroundColor: importedColors.transparent }, + cardStyleInterpolator: () => ({ + overlayStyle: { + opacity: 0, + }, + }), + }} + name={Routes.LEDGER_MESSAGE_SIGN_MODAL} + component={LedgerMessageSignModal} + /> + <Stack.Screen name={Routes.OPTIONS_SHEET} component={OptionsSheet} /> + <Stack.Screen + name="EditAccountName" + component={EditAccountName} + options={{ animationEnabled: true }} + /> + <Stack.Screen + name={Routes.ADD_NETWORK} + component={AddNetworkFlow} + options={{ animationEnabled: true }} + /> + {isNetworkUiRedesignEnabled() ? ( + <Stack.Screen + name={Routes.EDIT_NETWORK} + component={AddNetworkFlow} + options={{ animationEnabled: true }} + /> + ) : null} + <Stack.Screen + name={Routes.LOCK_SCREEN} + component={LockScreen} + options={{ gestureEnabled: false }} + /> + <Stack.Screen + name={Routes.CONFIRM_FLAT_PAGE} + component={ConfirmRequest} + /> + <Stack.Screen + name={Routes.CONFIRM_MODAL} + component={ConfirmDappRequest} + /> + </Stack.Navigator> + ); +}; + +const App: React.FC = () => { + const userLoggedIn = useSelector(selectUserLoggedIn); + const [onboarded, setOnboarded] = useState(false); + const navigation = useNavigation(); + const queueOfHandleDeeplinkFunctions = useRef<(() => void)[]>([]); const { toastRef } = useContext(ToastContext); const dispatch = useDispatch(); - const sdkInit = useRef(); - const [onboarded, setOnboarded] = useState(false); + const sdkInit = useRef<boolean | undefined>(undefined); const isFirstRender = useRef(true); @@ -624,23 +677,12 @@ const App = (props) => { isFirstRender.current = false; } - const triggerSetCurrentRoute = (route) => { - dispatch(setCurrentRoute(route)); - if (route === 'Wallet' || route === 'BrowserView') { - setOnboarded(true); - dispatch(setCurrentBottomNavRoute(route)); - } - }; - useEffect(() => { - if (prevNavigator.current || !navigator) return; - - endTrace({ name: TraceName.NavInit }); + // End trace when first render is complete endTrace({ name: TraceName.UIStartup }); - }, [navigator]); + }, []); useEffect(() => { - if (prevNavigator.current || !navigator) return; const appTriggeredAuth = async () => { const existingUser = await StorageWrapper.getItem(EXISTING_USER); setOnboarded(!!existingUser); @@ -657,16 +699,15 @@ const App = (props) => { }, ); // we need to reset the navigator here so that the user cannot go back to the login screen - navigator.reset({ routes: [{ name: Routes.ONBOARDING.HOME_NAV }] }); + navigation.reset({ routes: [{ name: Routes.ONBOARDING.HOME_NAV }] }); } else { - navigator.reset({ routes: [{ name: Routes.ONBOARDING.ROOT_NAV }] }); + navigation.reset({ routes: [{ name: Routes.ONBOARDING.ROOT_NAV }] }); } } catch (error) { + const errorMessage = (error as Error).message; // if there are no credentials, then they were cleared in the last session and we should not show biometrics on the login screen - if ( - error.message === AUTHENTICATION_APP_TRIGGERED_AUTH_NO_CREDENTIALS - ) { - navigator.dispatch( + if (errorMessage === AUTHENTICATION_APP_TRIGGERED_AUTH_NO_CREDENTIALS) { + navigation.dispatch( CommonActions.setParams({ locked: true, }), @@ -676,7 +717,7 @@ const App = (props) => { await Authentication.lockApp({ reset: false }); trackErrorAsAnalytics( 'App: Max Attempts Reached', - error?.message, + errorMessage, `Unlock attempts: 1`, ); } @@ -684,7 +725,7 @@ const App = (props) => { appTriggeredAuth().catch((error) => { Logger.error(error, 'App: Error in appTriggeredAuth'); }); - }, [navigator, queueOfHandleDeeplinkFunctions]); + }, [navigation, queueOfHandleDeeplinkFunctions]); const handleDeeplink = useCallback(({ error, params, uri }) => { if (error) { @@ -699,7 +740,7 @@ const App = (props) => { }); } } catch (e) { - Logger.error(e, `Deeplink: Error parsing deeplink`); + Logger.error(e as Error, `Deeplink: Error parsing deeplink`); } }, []); @@ -718,47 +759,35 @@ const App = (props) => { }, [handleDeeplink]); useEffect(() => { - if (navigator) { - // Initialize deep link manager - SharedDeeplinkManager.init({ - navigation: { - navigate: (routeName, opts) => { - if (navigator) { - const params = { name: routeName, params: opts }; - navigator.dispatch?.(CommonActions.navigate(params)); - } - }, - }, - dispatch, - }); + // Initialize deep link manager + SharedDeeplinkManager.init({ + navigation, + dispatch, + }); - if (!prevNavigator.current) { - // Subscribe to incoming deeplinks - // Branch.io documentation: https://help.branch.io/developers-hub/docs/react-native - branch.subscribe((opts) => { - const { error } = opts; + // Subscribe to incoming deeplinks + // Branch.io documentation: https://help.branch.io/developers-hub/docs/react-native + branch.subscribe((opts) => { + const { error } = opts; - if (error) { - // Log error for analytics and continue handling deeplink - const branchError = new Error(error); - Logger.error(branchError, 'Error subscribing to branch.'); - } + if (error) { + // Log error for analytics and continue handling deeplink + const branchError = new Error(error); + Logger.error(branchError, 'Error subscribing to branch.'); + } - if (sdkInit.current) { - handleDeeplink(opts); - } else { - queueOfHandleDeeplinkFunctions.current = - queueOfHandleDeeplinkFunctions.current.concat([ - () => { - handleDeeplink(opts); - }, - ]); - } - }); + if (sdkInit.current) { + handleDeeplink(opts); + } else { + queueOfHandleDeeplinkFunctions.current = + queueOfHandleDeeplinkFunctions.current.concat([ + () => { + handleDeeplink(opts); + }, + ]); } - prevNavigator.current = navigator; - } - }, [dispatch, handleDeeplink, navigator, queueOfHandleDeeplinkFunctions]); + }); + }, [dispatch, handleDeeplink, navigation, queueOfHandleDeeplinkFunctions]); useEffect(() => { const initMetrics = async () => { @@ -773,16 +802,14 @@ const App = (props) => { useEffect(() => { // Init SDKConnect only if the navigator is ready, user is onboarded, and SDK is not initialized. async function initSDKConnect() { - if ( - navigator?.getCurrentRoute && - onboarded && - sdkInit.current === undefined && - userLoggedIn - ) { + if (onboarded && sdkInit.current === undefined && userLoggedIn) { sdkInit.current = false; try { const sdkConnect = SDKConnect.getInstance(); - await sdkConnect.init({ navigation: navigator, context: 'Nav/App' }); + await sdkConnect.init({ + context: 'Nav/App', + navigation: NavigationService.navigation, + }); await SDKConnect.getInstance().postInit(() => { setTimeout(() => { queueOfHandleDeeplinkFunctions.current = []; @@ -803,26 +830,25 @@ const App = (props) => { .catch((err) => { Logger.error(err, 'Error initializing SDKConnect'); }); - }, [navigator, onboarded, userLoggedIn]); + }, [onboarded, userLoggedIn]); useEffect(() => { - const currentRoute = navigator?.getCurrentRoute(); - if (isWC2Enabled && currentRoute !== undefined) { - DevLogger.log( - `WalletConnect: Initializing WalletConnect Manager route=${currentRoute.name}`, + if (isWC2Enabled) { + DevLogger.log(`WalletConnect: Initializing WalletConnect Manager`); + WC2Manager.init({ navigation: NavigationService.navigation }).catch( + (err) => { + console.error('Cannot initialize WalletConnect Manager.', err); + }, ); - WC2Manager.init({ navigation: navigator }).catch((err) => { - console.error('Cannot initialize WalletConnect Manager.', err); - }); } - }, [navigator]); + }, []); useEffect(() => { async function startApp() { const existingUser = await StorageWrapper.getItem(EXISTING_USER); if (!existingUser) { // List of chainIds to add (as hex strings) - const chainIdsToAdd = [ + const chainIdsToAdd: `0x${string}`[] = [ CHAIN_IDS.ARBITRUM, CHAIN_IDS.BASE, CHAIN_IDS.BSC, @@ -855,7 +881,7 @@ const App = (props) => { ], }); } catch (error) { - Logger.error(error); + Logger.error(error as Error); } } } @@ -880,7 +906,7 @@ const App = (props) => { } } } catch (error) { - Logger.error(error); + Logger.error(error as Error); } } @@ -889,19 +915,7 @@ const App = (props) => { }); }, []); - const setNavigatorRef = (ref) => { - if (!prevNavigator.current) { - setNavigator(ref); - NavigationService.setNavigationRef(ref); - } - }; - - /** - * Triggers when the navigation is ready - */ - const onNavigationReadyHandler = () => dispatch(onNavigationReady()); - - return supressRender ? null : ( + return ( <> { ///: BEGIN:ONLY_INCLUDE_IF(preinstalled-snaps,external-snaps) @@ -913,155 +927,10 @@ const App = (props) => { ///: END:ONLY_INCLUDE_IF } <PPOMView /> - <NavigationContainer - // Prevents artifacts when navigating between screens - theme={{ - colors: { - background: colors.background.default, - }, - }} - ref={setNavigatorRef} - onStateChange={(state) => { - // Updates redux with latest route. Used by DrawerView component. - const currentRoute = findRouteNameFromNavigatorState(state.routes); - triggerSetCurrentRoute(currentRoute); - }} - onReady={onNavigationReadyHandler} - > - <Stack.Navigator - initialRouteName={Routes.FOX_LOADER} - mode={'modal'} - screenOptions={{ - headerShown: false, - cardStyle: { backgroundColor: importedColors.transparent }, - animationEnabled: false, - }} - > - <Stack.Screen name={Routes.FOX_LOADER} component={FoxLoader} /> - <Stack.Screen - name={Routes.ONBOARDING.LOGIN} - component={Login} - options={{ headerShown: false }} - /> - <Stack.Screen - name="OnboardingRootNav" - component={OnboardingRootNav} - options={{ headerShown: false }} - /> - <Stack.Screen - name={Routes.ONBOARDING.SUCCESS_FLOW} - component={OnboardingSuccessFlow} - options={{ headerShown: false }} - /> - {userLoggedIn && ( - <Stack.Screen - name={Routes.ONBOARDING.HOME_NAV} - component={Main} - options={{ headerShown: false }} - /> - )} - <Stack.Screen - name={Routes.VAULT_RECOVERY.RESTORE_WALLET} - component={VaultRecoveryFlow} - /> - <Stack.Screen - name={Routes.MODAL.ROOT_MODAL_FLOW} - component={RootModalFlow} - /> - <Stack.Screen - name="ImportPrivateKeyView" - component={ImportPrivateKeyView} - options={{ animationEnabled: true }} - /> - <Stack.Screen - name="ConnectQRHardwareFlow" - component={ConnectQRHardwareFlow} - options={{ animationEnabled: true }} - /> - <Stack.Screen - name={Routes.HW.CONNECT_LEDGER} - component={LedgerConnectFlow} - /> - <Stack.Screen - name={Routes.HW.CONNECT} - component={ConnectHardwareWalletFlow} - /> - <Stack.Screen - options={{ - //Refer to - https://reactnavigation.org/docs/stack-navigator/#animations - cardStyle: { backgroundColor: importedColors.transparent }, - cardStyleInterpolator: () => ({ - overlayStyle: { - opacity: 0, - }, - }), - }} - name={Routes.LEDGER_TRANSACTION_MODAL} - component={LedgerTransactionModal} - /> - <Stack.Screen - options={{ - //Refer to - https://reactnavigation.org/docs/stack-navigator/#animations - cardStyle: { backgroundColor: importedColors.transparent }, - cardStyleInterpolator: () => ({ - overlayStyle: { - opacity: 0, - }, - }), - }} - name={Routes.LEDGER_MESSAGE_SIGN_MODAL} - component={LedgerMessageSignModal} - /> - <Stack.Screen name={Routes.OPTIONS_SHEET} component={OptionsSheet} /> - <Stack.Screen - name="EditAccountName" - component={EditAccountName} - options={{ animationEnabled: true }} - /> - <Stack.Screen - name={Routes.ADD_NETWORK} - component={AddNetworkFlow} - options={{ animationEnabled: true }} - /> - {isNetworkUiRedesignEnabled() ? ( - <Stack.Screen - name={Routes.EDIT_NETWORK} - component={AddNetworkFlow} - options={{ animationEnabled: true }} - /> - ) : null} - - <Stack.Screen - name={Routes.LOCK_SCREEN} - component={LockScreen} - options={{ gestureEnabled: false }} - /> - <Stack.Screen - name={Routes.CONFIRM_FLAT_PAGE} - component={ConfirmRequest} - /> - <Stack.Screen - name={Routes.CONFIRM_MODAL} - component={ConfirmDappRequest} - /> - </Stack.Navigator> - </NavigationContainer> + <AppFlow /> <Toast ref={toastRef} /> </> ); }; -App.propTypes = { - userLoggedIn: PropTypes.bool.isRequired, - route: PropTypes.shape({ - params: PropTypes.shape({ - supressRender: PropTypes.bool, - }), - }), -}; - -const mapStateToProps = (state) => ({ - userLoggedIn: state.user.userLoggedIn, -}); - -export default connect(mapStateToProps)(App); +export default App; diff --git a/app/components/Nav/App/__snapshots__/index.test.tsx.snap b/app/components/Nav/App/__snapshots__/index.test.tsx.snap deleted file mode 100644 index 79ae05627292..000000000000 --- a/app/components/Nav/App/__snapshots__/index.test.tsx.snap +++ /dev/null @@ -1,314 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`App renders according to latest snapshot 1`] = ` -<View - style={ - { - "flex": 1, - } - } -> - <RNCSafeAreaProvider - onInsetsChange={[Function]} - style={ - [ - { - "flex": 1, - }, - undefined, - ] - } - > - <View - collapsable={false} - pointerEvents="box-none" - style={ - { - "zIndex": 1, - } - } - > - <View - accessibilityElementsHidden={false} - importantForAccessibility="auto" - onLayout={[Function]} - pointerEvents="box-none" - style={null} - > - <View - collapsable={false} - pointerEvents="box-none" - style={ - { - "bottom": 0, - "left": 0, - "opacity": 1, - "position": "absolute", - "right": 0, - "top": 0, - "zIndex": 0, - } - } - > - <View - collapsable={false} - style={ - { - "backgroundColor": "rgb(255, 255, 255)", - "borderBottomColor": "rgb(216, 216, 216)", - "flex": 1, - "shadowColor": "rgb(216, 216, 216)", - "shadowOffset": { - "height": 0.5, - "width": 0, - }, - "shadowOpacity": 0.85, - "shadowRadius": 0, - } - } - /> - </View> - <View - collapsable={false} - pointerEvents="box-none" - style={ - { - "height": 64, - "maxHeight": undefined, - "minHeight": undefined, - "opacity": undefined, - "transform": undefined, - } - } - > - <View - pointerEvents="none" - style={ - { - "height": 20, - } - } - /> - <View - pointerEvents="box-none" - style={ - { - "alignItems": "center", - "flex": 1, - "flexDirection": "row", - "justifyContent": "center", - } - } - > - <View - collapsable={false} - pointerEvents="box-none" - style={ - { - "marginHorizontal": 16, - "opacity": 1, - } - } - > - <Text - accessibilityRole="header" - aria-level="1" - collapsable={false} - numberOfLines={1} - onLayout={[Function]} - style={ - { - "color": "rgb(28, 28, 30)", - "fontSize": 17, - "fontWeight": "600", - } - } - > - App - </Text> - </View> - </View> - </View> - </View> - </View> - <RNSScreenContainer - onLayout={[Function]} - style={ - { - "flex": 1, - } - } - > - <RNSScreen - activityState={2} - collapsable={false} - gestureResponseDistance={ - { - "bottom": -1, - "end": -1, - "start": -1, - "top": -1, - } - } - pointerEvents="box-none" - style={ - { - "bottom": 0, - "left": 0, - "position": "absolute", - "right": 0, - "top": 0, - } - } - > - <View - collapsable={false} - style={ - { - "opacity": 1, - } - } - /> - <View - accessibilityElementsHidden={false} - closing={false} - gestureVelocityImpact={0.3} - importantForAccessibility="auto" - onClose={[Function]} - onGestureBegin={[Function]} - onGestureCanceled={[Function]} - onGestureEnd={[Function]} - onOpen={[Function]} - onTransition={[Function]} - pointerEvents="box-none" - style={ - [ - { - "overflow": undefined, - }, - { - "bottom": 0, - "left": 0, - "position": "absolute", - "right": 0, - "top": 0, - }, - ] - } - transitionSpec={ - { - "close": { - "animation": "spring", - "config": { - "damping": 500, - "mass": 3, - "overshootClamping": true, - "restDisplacementThreshold": 10, - "restSpeedThreshold": 10, - "stiffness": 1000, - }, - }, - "open": { - "animation": "spring", - "config": { - "damping": 500, - "mass": 3, - "overshootClamping": true, - "restDisplacementThreshold": 10, - "restSpeedThreshold": 10, - "stiffness": 1000, - }, - }, - } - } - > - <View - collapsable={false} - needsOffscreenAlphaCompositing={false} - pointerEvents="box-none" - style={ - { - "flex": 1, - } - } - > - <View - collapsable={false} - onGestureHandlerEvent={[Function]} - onGestureHandlerStateChange={[Function]} - style={ - { - "flex": 1, - "transform": [ - { - "translateX": 0, - }, - { - "translateX": 0, - }, - ], - } - } - > - <View - collapsable={false} - pointerEvents="none" - style={ - { - "backgroundColor": "rgb(242, 242, 242)", - "bottom": 0, - "left": 0, - "position": "absolute", - "shadowColor": "#000", - "shadowOffset": { - "height": 1, - "width": -1, - }, - "shadowOpacity": 0.3, - "shadowRadius": 5, - "top": 0, - "width": 3, - } - } - /> - <View - style={ - [ - { - "flex": 1, - "overflow": "hidden", - }, - [ - { - "backgroundColor": "rgb(242, 242, 242)", - }, - undefined, - ], - ] - } - > - <View - style={ - { - "flex": 1, - "flexDirection": "column-reverse", - } - } - > - <View - style={ - { - "flex": 1, - } - } - /> - </View> - </View> - </View> - </View> - </View> - </RNSScreen> - </RNSScreenContainer> - </RNCSafeAreaProvider> -</View> -`; diff --git a/app/components/Nav/App/index.test.tsx b/app/components/Nav/App/index.test.tsx deleted file mode 100644 index 6271239052ed..000000000000 --- a/app/components/Nav/App/index.test.tsx +++ /dev/null @@ -1,66 +0,0 @@ -import { - DeepPartial, - renderScreen, -} from '../../../util/test/renderWithProvider'; -import { backgroundState } from '../../../util/test/initial-root-state'; -import App from './'; -import { MetaMetrics } from '../../../core/Analytics'; -import { waitFor } from '@testing-library/react-native'; -import { RootState } from '../../../reducers'; - -const initialState: DeepPartial<RootState> = { - user: { - userLoggedIn: true, - }, - engine: { - backgroundState, - }, -}; - -jest.mock('../../../core/Analytics/MetaMetrics'); - -const mockMetrics = { - configure: jest.fn(), - addTraitsToUser: jest.fn(), -}; - -// Need to mock this module since it uses store.getState, which interferes with the mocks from this test file. -jest.mock( - '../../../util/metrics/UserSettingsAnalyticsMetaData/generateUserProfileAnalyticsMetaData', - () => jest.fn().mockReturnValue({ userProp: 'User value' }), -); - -jest.mock( - '../../../util/metrics/DeviceAnalyticsMetaData/generateDeviceAnalyticsMetaData', - () => jest.fn().mockReturnValue({ deviceProp: 'Device value' }), -); - -(MetaMetrics.getInstance as jest.Mock).mockReturnValue(mockMetrics); - -describe('App', () => { - beforeEach(() => { - jest.clearAllMocks(); - }); - - it('renders according to latest snapshot', () => { - const { toJSON } = renderScreen( - App, - { name: 'App' }, - { state: initialState }, - { supressRender: true }, - ); - expect(toJSON()).toMatchSnapshot(); - }); - - it('configures MetaMetrics instance and identifies user on startup', async () => { - renderScreen( - App, - { name: 'App' }, - { state: initialState }, - { supressRender: true }, - ); - await waitFor(() => { - expect(mockMetrics.configure).toHaveBeenCalledTimes(1); - }); - }); -}); diff --git a/app/components/Nav/App/index.ts b/app/components/Nav/App/index.ts new file mode 100644 index 000000000000..9122fa1a9e0c --- /dev/null +++ b/app/components/Nav/App/index.ts @@ -0,0 +1 @@ +export { default } from './App'; diff --git a/app/components/Nav/ControllersGate/ControllersGate.test.tsx b/app/components/Nav/ControllersGate/ControllersGate.test.tsx new file mode 100644 index 000000000000..d48002ca3413 --- /dev/null +++ b/app/components/Nav/ControllersGate/ControllersGate.test.tsx @@ -0,0 +1,57 @@ +import React from 'react'; +// Jest accepts prefixing out-of-scope variables with `mock` +import { View as MockView } from 'react-native'; +import { render } from '@testing-library/react-native'; +import ControllersGate from './ControllersGate'; +import { useSelector } from 'react-redux'; + +const MOCK_FOX_LOADER_ID = 'FOX_LOADER_ID'; +const MOCK_CHILDREN_ID = 'MOCK_CHILDREN_ID'; +const MOCK_INITIAL_STATE = { + user: { + appServicesReady: true, + }, +}; + +jest.mock('react-redux', () => ({ + ...jest.requireActual('react-redux'), + useSelector: jest + .fn() + .mockImplementation((callback) => callback(MOCK_INITIAL_STATE)), +})); + +jest.mock( + '../../UI/FoxLoader', + () => + function MockFoxLoader() { + return <MockView testID={MOCK_FOX_LOADER_ID}>Fox Loader</MockView>; + }, +); + +describe('ControllersGate', () => { + const mockChildren = ( + <MockView testID={MOCK_CHILDREN_ID}>Test Children</MockView> + ); + + it('renders children when appServicesReady is true', () => { + (useSelector as jest.Mock).mockReturnValue(true); + + const { getByTestId, queryByTestId } = render( + <ControllersGate>{mockChildren}</ControllersGate>, + ); + + expect(getByTestId(MOCK_CHILDREN_ID)).toBeTruthy(); + expect(queryByTestId(MOCK_FOX_LOADER_ID)).toBeNull(); + }); + + it('renders FoxLoader when appServicesReady is false', () => { + (useSelector as jest.Mock).mockReturnValue(false); + + const { getByTestId, queryByTestId } = render( + <ControllersGate>{mockChildren}</ControllersGate>, + ); + + expect(getByTestId(MOCK_FOX_LOADER_ID)).toBeTruthy(); + expect(queryByTestId(MOCK_CHILDREN_ID)).toBeNull(); + }); +}); diff --git a/app/components/Nav/ControllersGate/ControllersGate.tsx b/app/components/Nav/ControllersGate/ControllersGate.tsx new file mode 100644 index 000000000000..24d7c8546a36 --- /dev/null +++ b/app/components/Nav/ControllersGate/ControllersGate.tsx @@ -0,0 +1,25 @@ +import React from 'react'; +import { ControllersGateProps } from './types'; +import { useSelector } from 'react-redux'; +import { selectAppServicesReady } from '../../../reducers/user/selectors'; +import FoxLoader from '../../UI/FoxLoader'; +/** + * A higher order component that gate keeps the children until the app services are finished loaded + * + * @param props - The props for the ControllersGate component + * @param props.children - The children to render + * @returns - The ControllersGate component + */ +const ControllersGate: React.FC<ControllersGateProps> = ({ + children, +}: ControllersGateProps) => { + const appServicesReady = useSelector(selectAppServicesReady); + + return ( + <React.Fragment> + {appServicesReady ? children : <FoxLoader />} + </React.Fragment> + ); +}; + +export default ControllersGate; diff --git a/app/components/Nav/ControllersGate/index.ts b/app/components/Nav/ControllersGate/index.ts new file mode 100644 index 000000000000..5f360bfd290d --- /dev/null +++ b/app/components/Nav/ControllersGate/index.ts @@ -0,0 +1,3 @@ +export { default } from './ControllersGate'; + +export * from './types'; diff --git a/app/components/Nav/ControllersGate/types.ts b/app/components/Nav/ControllersGate/types.ts new file mode 100644 index 000000000000..eec2a11ec4ed --- /dev/null +++ b/app/components/Nav/ControllersGate/types.ts @@ -0,0 +1,7 @@ +/** + * Props for the ControllersGate component + */ +// eslint-disable-next-line @typescript-eslint/consistent-type-definitions +export type ControllersGateProps = { + children: React.ReactNode; +}; diff --git a/app/components/Nav/NavigationProvider/NavigationProvider.test.tsx b/app/components/Nav/NavigationProvider/NavigationProvider.test.tsx new file mode 100644 index 000000000000..567da06dde9c --- /dev/null +++ b/app/components/Nav/NavigationProvider/NavigationProvider.test.tsx @@ -0,0 +1,107 @@ +import React from 'react'; +import { render } from '@testing-library/react-native'; +import NavigationProvider from './NavigationProvider'; +import { useDispatch } from 'react-redux'; +import { View, Text } from 'react-native'; +import { onNavigationReady } from '../../../actions/navigation'; +import NavigationService from '../../../core/NavigationService'; +import { NavigationContainerRef } from '@react-navigation/native'; +import { endTrace, trace, TraceName } from '../../../util/trace'; + +jest.mock('../../../util/trace', () => { + const actual = jest.requireActual('../../../util/trace'); + return { + ...actual, + trace: jest.fn(), + endTrace: jest.fn(), + }; +}); + +// Mock UIStartup to prevent second trace from being called (for testing purposes) +jest.mock('../../../core/Performance/UIStartup', () => jest.fn()); + +jest.mock('../../../core/NavigationService', () => ({ + navigation: jest.fn(), +})); + +jest.mock('react-redux', () => ({ + useDispatch: jest.fn(), +})); + +jest.mock('../../../util/theme', () => ({ + useTheme: jest.fn().mockReturnValue({ + colors: { + background: { + default: '#FFFFFF', + }, + }, + }), +})); + +describe('NavigationProvider', () => { + const mockDispatch = jest.fn(); + + beforeEach(() => { + jest.clearAllMocks(); + NavigationService.navigation = + undefined as unknown as NavigationContainerRef; + (useDispatch as jest.Mock).mockReturnValue(mockDispatch); + }); + + it('renders children correctly', () => { + const testMessage = 'Test Child Component'; + const { getByText } = render( + <NavigationProvider> + <Text>{testMessage}</Text> + </NavigationProvider>, + ); + + expect(getByText(testMessage)).toBeTruthy(); + }); + + it('dispatches navigation ready action when ready', async () => { + render( + <NavigationProvider> + <View /> + </NavigationProvider>, + ); + + expect(mockDispatch).toHaveBeenCalledWith(onNavigationReady()); + }); + + it('sets navigation reference correctly', () => { + expect(NavigationService.navigation).not.toBeDefined(); + + render( + <NavigationProvider> + <View /> + </NavigationProvider>, + ); + + expect(NavigationService.navigation).toBeDefined(); + expect(NavigationService.navigation).toHaveProperty('navigate'); + }); + + it('Measures performance trace order when navigation provider is initialized', () => { + // Track calls in array to test for correct order + const traceCalls: { functionName: string; name: string }[] = []; + const mockTraceCall = + (functionName: string) => + ({ name }: { name: string }) => { + traceCalls.push({ functionName, name }); + }; + (trace as jest.Mock).mockImplementation(mockTraceCall('trace')); + (endTrace as jest.Mock).mockImplementation(mockTraceCall('endTrace')); + + render( + <NavigationProvider> + <View /> + </NavigationProvider>, + ); + + expect(traceCalls).toEqual([ + { functionName: 'trace', name: TraceName.NavInit }, + { functionName: 'endTrace', name: TraceName.NavInit }, + ]); + }); +}); diff --git a/app/components/Nav/NavigationProvider/NavigationProvider.tsx b/app/components/Nav/NavigationProvider/NavigationProvider.tsx new file mode 100644 index 000000000000..c67754c434e4 --- /dev/null +++ b/app/components/Nav/NavigationProvider/NavigationProvider.tsx @@ -0,0 +1,83 @@ +import React, { useRef } from 'react'; +import { + NavigationContainer, + NavigationContainerRef, + Theme, +} from '@react-navigation/native'; +import { createStackNavigator } from '@react-navigation/stack'; +import { useTheme } from '../../../util/theme'; +import { onNavigationReady } from '../../../actions/navigation'; +import { useDispatch } from 'react-redux'; +import NavigationService from '../../../core/NavigationService'; +import { + trace, + endTrace, + TraceOperation, + TraceName, +} from '../../../util/trace'; +import getUIStartupSpan from '../../../core/Performance/UIStartup'; +import { NavigationProviderProps } from './types'; + +const Stack = createStackNavigator(); + +/** + * Provides the navigation context to the app + */ +const NavigationProvider: React.FC<NavigationProviderProps> = ({ + children, +}) => { + const { colors } = useTheme(); + const dispatch = useDispatch(); + const hasInitialized = useRef(false); + + // Start trace when navigation provider is initialized + if (!hasInitialized.current) { + trace({ + name: TraceName.NavInit, + parentContext: getUIStartupSpan(), + op: TraceOperation.NavInit, + }); + hasInitialized.current = true; + } + + /** + * Triggers when the navigation is ready + */ + const onReady = () => { + // End trace when navigation is ready + endTrace({ name: TraceName.NavInit }); + // Dispatch navigation ready action, used by sagas + dispatch(onNavigationReady()); + }; + + /** + * Sets the navigation ref on the NavigationService + */ + const setNavigationRef = (ref: NavigationContainerRef) => { + // This condition only happens on unmount. But that should never happen since this is meant to always be mounted. + if (!ref) { + return; + } + NavigationService.navigation = ref; + }; + + return ( + <NavigationContainer + // TODO: Check if other color properties are needed + theme={{ colors: { background: colors.background.default } } as Theme} + onReady={onReady} + ref={setNavigationRef} + > + <Stack.Navigator + initialRouteName="NavigationProvider" + screenOptions={{ headerShown: false }} + > + <Stack.Screen name="NavigationChildren"> + {() => <>{children}</>} + </Stack.Screen> + </Stack.Navigator> + </NavigationContainer> + ); +}; + +export default NavigationProvider; diff --git a/app/components/Nav/NavigationProvider/index.ts b/app/components/Nav/NavigationProvider/index.ts new file mode 100644 index 000000000000..521271a5ae2f --- /dev/null +++ b/app/components/Nav/NavigationProvider/index.ts @@ -0,0 +1 @@ +export { default } from './NavigationProvider'; diff --git a/app/components/Nav/NavigationProvider/types.ts b/app/components/Nav/NavigationProvider/types.ts new file mode 100644 index 000000000000..7204c82d7e8e --- /dev/null +++ b/app/components/Nav/NavigationProvider/types.ts @@ -0,0 +1,7 @@ +/** + * Props for the NavigationProvider component + */ +// eslint-disable-next-line @typescript-eslint/consistent-type-definitions +export type NavigationProviderProps = { + children: React.ReactNode; +}; diff --git a/app/components/Views/OnboardingSuccess/index.tsx b/app/components/Views/OnboardingSuccess/index.tsx index cb3d2d859d14..a4b384ffdd57 100644 --- a/app/components/Views/OnboardingSuccess/index.tsx +++ b/app/components/Views/OnboardingSuccess/index.tsx @@ -35,8 +35,8 @@ import styles from './index.styles'; interface OnboardingSuccessProps { onDone: () => void; - backedUpSRP: boolean; - noSRP: boolean; + backedUpSRP?: boolean; + noSRP?: boolean; } const OnboardingSuccess = ({ diff --git a/app/components/Views/Root/__snapshots__/index.test.tsx.snap b/app/components/Views/Root/__snapshots__/index.test.tsx.snap index 5673c7c3bec6..91e132b9ae24 100644 --- a/app/components/Views/Root/__snapshots__/index.test.tsx.snap +++ b/app/components/Views/Root/__snapshots__/index.test.tsx.snap @@ -1,314 +1,3 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`Root should render correctly 1`] = ` -<View - style={ - { - "flex": 1, - } - } -> - <RNCSafeAreaProvider - onInsetsChange={[Function]} - style={ - [ - { - "flex": 1, - }, - undefined, - ] - } - > - <View - collapsable={false} - pointerEvents="box-none" - style={ - { - "zIndex": 1, - } - } - > - <View - accessibilityElementsHidden={false} - importantForAccessibility="auto" - onLayout={[Function]} - pointerEvents="box-none" - style={null} - > - <View - collapsable={false} - pointerEvents="box-none" - style={ - { - "bottom": 0, - "left": 0, - "opacity": 1, - "position": "absolute", - "right": 0, - "top": 0, - "zIndex": 0, - } - } - > - <View - collapsable={false} - style={ - { - "backgroundColor": "rgb(255, 255, 255)", - "borderBottomColor": "rgb(216, 216, 216)", - "flex": 1, - "shadowColor": "rgb(216, 216, 216)", - "shadowOffset": { - "height": 0.5, - "width": 0, - }, - "shadowOpacity": 0.85, - "shadowRadius": 0, - } - } - /> - </View> - <View - collapsable={false} - pointerEvents="box-none" - style={ - { - "height": 64, - "maxHeight": undefined, - "minHeight": undefined, - "opacity": undefined, - "transform": undefined, - } - } - > - <View - pointerEvents="none" - style={ - { - "height": 20, - } - } - /> - <View - pointerEvents="box-none" - style={ - { - "alignItems": "center", - "flex": 1, - "flexDirection": "row", - "justifyContent": "center", - } - } - > - <View - collapsable={false} - pointerEvents="box-none" - style={ - { - "marginHorizontal": 16, - "opacity": 1, - } - } - > - <Text - accessibilityRole="header" - aria-level="1" - collapsable={false} - numberOfLines={1} - onLayout={[Function]} - style={ - { - "color": "rgb(28, 28, 30)", - "fontSize": 17, - "fontWeight": "600", - } - } - > - Root - </Text> - </View> - </View> - </View> - </View> - </View> - <RNSScreenContainer - onLayout={[Function]} - style={ - { - "flex": 1, - } - } - > - <RNSScreen - activityState={2} - collapsable={false} - gestureResponseDistance={ - { - "bottom": -1, - "end": -1, - "start": -1, - "top": -1, - } - } - pointerEvents="box-none" - style={ - { - "bottom": 0, - "left": 0, - "position": "absolute", - "right": 0, - "top": 0, - } - } - > - <View - collapsable={false} - style={ - { - "opacity": 1, - } - } - /> - <View - accessibilityElementsHidden={false} - closing={false} - gestureVelocityImpact={0.3} - importantForAccessibility="auto" - onClose={[Function]} - onGestureBegin={[Function]} - onGestureCanceled={[Function]} - onGestureEnd={[Function]} - onOpen={[Function]} - onTransition={[Function]} - pointerEvents="box-none" - style={ - [ - { - "overflow": undefined, - }, - { - "bottom": 0, - "left": 0, - "position": "absolute", - "right": 0, - "top": 0, - }, - ] - } - transitionSpec={ - { - "close": { - "animation": "spring", - "config": { - "damping": 500, - "mass": 3, - "overshootClamping": true, - "restDisplacementThreshold": 10, - "restSpeedThreshold": 10, - "stiffness": 1000, - }, - }, - "open": { - "animation": "spring", - "config": { - "damping": 500, - "mass": 3, - "overshootClamping": true, - "restDisplacementThreshold": 10, - "restSpeedThreshold": 10, - "stiffness": 1000, - }, - }, - } - } - > - <View - collapsable={false} - needsOffscreenAlphaCompositing={false} - pointerEvents="box-none" - style={ - { - "flex": 1, - } - } - > - <View - collapsable={false} - onGestureHandlerEvent={[Function]} - onGestureHandlerStateChange={[Function]} - style={ - { - "flex": 1, - "transform": [ - { - "translateX": 0, - }, - { - "translateX": 0, - }, - ], - } - } - > - <View - collapsable={false} - pointerEvents="none" - style={ - { - "backgroundColor": "rgb(242, 242, 242)", - "bottom": 0, - "left": 0, - "position": "absolute", - "shadowColor": "#000", - "shadowOffset": { - "height": 1, - "width": -1, - }, - "shadowOpacity": 0.3, - "shadowRadius": 5, - "top": 0, - "width": 3, - } - } - /> - <View - style={ - [ - { - "flex": 1, - "overflow": "hidden", - }, - [ - { - "backgroundColor": "rgb(242, 242, 242)", - }, - undefined, - ], - ] - } - > - <View - style={ - { - "flex": 1, - "flexDirection": "column-reverse", - } - } - > - <View - style={ - { - "flex": 1, - } - } - /> - </View> - </View> - </View> - </View> - </View> - </RNSScreen> - </RNSScreenContainer> - </RNCSafeAreaProvider> -</View> -`; +exports[`Root should render correctly 1`] = `null`; diff --git a/app/components/Views/Root/index.js b/app/components/Views/Root/index.js deleted file mode 100644 index 7ffa81485d3b..000000000000 --- a/app/components/Views/Root/index.js +++ /dev/null @@ -1,95 +0,0 @@ -import React, { PureComponent } from 'react'; -import PropTypes from 'prop-types'; -import { Provider } from 'react-redux'; -import { PersistGate } from 'redux-persist/lib/integration/react'; -import { store, persistor } from '../../../store/'; -import App from '../../Nav/App'; -import SecureKeychain from '../../../core/SecureKeychain'; -import EntryScriptWeb3 from '../../../core/EntryScriptWeb3'; -import Logger from '../../../util/Logger'; -import ErrorBoundary from '../ErrorBoundary'; -import { useAppTheme, ThemeContext } from '../../../util/theme'; -import { ToastContextWrapper } from '../../../component-library/components/Toast'; -import { SafeAreaProvider } from 'react-native-safe-area-context'; -import { isTest } from '../../../util/test/utils'; - -/** - * Top level of the component hierarchy - * App component is wrapped by the provider from react-redux - */ -export default class Root extends PureComponent { - static propTypes = { - foxCode: PropTypes.string, - }; - - static defaultProps = { - foxCode: 'null', - }; - - async waitForStore() { - // Wait until store is initialized - await new Promise((resolve) => { - const intervalId = setInterval(() => { - if (store && persistor) { - clearInterval(intervalId); - resolve(); - } - }, 100); - }); - } - - constructor(props) { - super(props); - if (props.foxCode === '') { - const foxCodeError = new Error('WARN - foxCode is an empty string'); - Logger.error(foxCodeError); - } - SecureKeychain.init(props.foxCode); - // Init EntryScriptWeb3 asynchronously on the background - EntryScriptWeb3.init(); - - this.state = { - isLoading: true, // Track loading state - isTest, - }; - } - - async componentDidMount() { - const { isTest } = this.state; - if (isTest) { - await this.waitForStore(); - this.setState({ isLoading: false }); - } - } - - render() { - const { isTest, isLoading } = this.state; - if (isTest && isLoading) { - return null; - } - - return ( - <Provider store={store}> - <PersistGate persistor={persistor}> - <ConnectedRoot /> - </PersistGate> - </Provider> - ); - } -} - -const ConnectedRoot = () => { - const theme = useAppTheme(); - - return ( - <SafeAreaProvider> - <ThemeContext.Provider value={theme}> - <ToastContextWrapper> - <ErrorBoundary view="Root"> - <App /> - </ErrorBoundary> - </ToastContextWrapper> - </ThemeContext.Provider> - </SafeAreaProvider> - ); -}; diff --git a/app/components/Views/Root/index.test.tsx b/app/components/Views/Root/index.test.tsx index 258bad53dfbd..c5ea3f8ed31c 100644 --- a/app/components/Views/Root/index.test.tsx +++ b/app/components/Views/Root/index.test.tsx @@ -1,38 +1,91 @@ -import { renderScreen } from '../../../util/test/renderWithProvider'; +import React from 'react'; +import { View as MockView } from 'react-native'; import Root from './'; +import { render, waitFor } from '@testing-library/react-native'; +import SecureKeychain from '../../../core/SecureKeychain'; +import EntryScriptWeb3 from '../../../core/EntryScriptWeb3'; -jest.mock('redux-persist', () => { - const real = jest.requireActual('redux-persist'); - const mockPersistReducer = jest - .fn() - .mockImplementation((_, reducers) => reducers); - const mockCombineReducers = jest +const MOCK_CHILD_ID = 'MOCK_CHILD_ID'; + +jest.mock('react-native-safe-area-context', () => ({ + SafeAreaProvider: jest .fn() - // TODO: Replace "any" with type - // eslint-disable-next-line @typescript-eslint/no-explicit-any - .mockReturnValue((reducers: any) => reducers); - - return { - ...real, - persistReducer: mockPersistReducer, - combineReducers: mockCombineReducers, - }; -}); + .mockImplementation(() => <MockView testID={MOCK_CHILD_ID} />), +})); -jest.mock('../../../util/test/configureStore', () => { - const configureMockStore = jest.requireActual('redux-mock-store').default; - return () => configureMockStore([])(); -}); +jest.mock('../../../core/SecureKeychain', () => ({ + init: jest.fn(), +})); + +jest.mock('../../../core/EntryScriptWeb3', () => ({ + init: jest.fn(), +})); describe('Root', () => { it('should render correctly', () => { - const initialState = {}; + const { toJSON } = render(<Root foxCode="" />); - const { toJSON } = renderScreen( - Root, - { name: 'Root' }, - { state: initialState }, - ); expect(toJSON()).toMatchSnapshot(); }); + + it('should initialize SecureKeychain', async () => { + render(<Root foxCode="" />); + + await waitFor(() => { + expect(SecureKeychain.init).toHaveBeenCalled(); + expect(EntryScriptWeb3.init).toHaveBeenCalled(); + }); + }); + + it('should render children if isTest OR isLoading is false', async () => { + jest.isolateModules(() => { + jest.mock('../../../util/test/utils', () => ({ + isTest: false, + })); + jest.mock('react', () => { + const mockIsLoading = false; + const mockSetIsLoading = jest.fn(); + return { + ...jest.requireActual('react'), + // Mock isLoading state to be false + useState: jest + .fn() + .mockImplementation(() => [mockIsLoading, mockSetIsLoading]), + useEffect: jest.fn(), + }; + }); + // Import Root after mocking isTest + // eslint-disable-next-line @typescript-eslint/no-require-imports, @typescript-eslint/no-var-requires + const RootComponent = require('./index').default; + + const { getByTestId } = render(<RootComponent foxCode="" />); + expect(getByTestId(MOCK_CHILD_ID)).toBeDefined(); + }); + }); + + it('should render children if isTest AND isLoading is true', async () => { + jest.isolateModules(() => { + jest.mock('../../../util/test/utils', () => ({ + isTest: true, + })); + jest.mock('react', () => { + const mockIsLoading = true; + const mockSetIsLoading = jest.fn(); + return { + ...jest.requireActual('react'), + // Mock isLoading state to be true + useState: jest + .fn() + .mockImplementation(() => [mockIsLoading, mockSetIsLoading]), + useEffect: jest.fn(), + }; + }); + // Import Root after mocking isTest + // eslint-disable-next-line @typescript-eslint/no-require-imports, @typescript-eslint/no-var-requires + const RootComponent = require('./index').default; + + const { toJSON } = render(<RootComponent foxCode="" />); + expect(toJSON()).toBeNull(); + }); + }); }); diff --git a/app/components/Views/Root/index.tsx b/app/components/Views/Root/index.tsx new file mode 100644 index 000000000000..891c22189b3e --- /dev/null +++ b/app/components/Views/Root/index.tsx @@ -0,0 +1,79 @@ +import React, { useEffect, useState } from 'react'; +import { Provider } from 'react-redux'; +import { PersistGate } from 'redux-persist/lib/integration/react'; +import { store, persistor } from '../../../store'; +import App from '../../Nav/App'; +import SecureKeychain from '../../../core/SecureKeychain'; +import EntryScriptWeb3 from '../../../core/EntryScriptWeb3'; +import Logger from '../../../util/Logger'; +import ErrorBoundary from '../ErrorBoundary'; +import ThemeProvider from '../../../component-library/providers/ThemeProvider/ThemeProvider'; +import { ToastContextWrapper } from '../../../component-library/components/Toast'; +import { SafeAreaProvider } from 'react-native-safe-area-context'; +import { RootProps } from './types'; +import NavigationProvider from '../../Nav/NavigationProvider'; +import ControllersGate from '../../Nav/ControllersGate'; +import { isTest } from '../../../util/test/utils'; + +/** + * Top level of the component hierarchy + * App component is wrapped by the provider from react-redux + */ +const Root = ({ foxCode }: RootProps) => { + const [isLoading, setIsLoading] = useState(true); + + /** + * Wait for store to be initialized in Detox tests + * Note: This is a workaround for an issue with Detox where the store is not initialized + */ + const waitForStore = () => + new Promise((resolve) => { + const intervalId = setInterval(() => { + if (store && persistor) { + clearInterval(intervalId); + setIsLoading(false); + resolve(null); + } + }, 100); + }); + + useEffect(() => { + if (foxCode === '') { + const foxCodeError = new Error('WARN - foxCode is an empty string'); + Logger.error(foxCodeError); + } + SecureKeychain.init(foxCode); + // Init EntryScriptWeb3 asynchronously on the background + EntryScriptWeb3.init(); + // Wait for store to be initialized in Detox tests + if (isTest) { + waitForStore(); + } + }, [foxCode]); + + if (isTest && isLoading) { + return null; + } + + return ( + <SafeAreaProvider> + <Provider store={store}> + <PersistGate persistor={persistor}> + <ThemeProvider> + <NavigationProvider> + <ControllersGate> + <ToastContextWrapper> + <ErrorBoundary view="Root"> + <App /> + </ErrorBoundary> + </ToastContextWrapper> + </ControllersGate> + </NavigationProvider> + </ThemeProvider> + </PersistGate> + </Provider> + </SafeAreaProvider> + ); +}; + +export default Root; diff --git a/app/components/Views/Root/types.ts b/app/components/Views/Root/types.ts new file mode 100644 index 000000000000..ab5e35beb68a --- /dev/null +++ b/app/components/Views/Root/types.ts @@ -0,0 +1,7 @@ +/** + * Props for the Root component + */ +// eslint-disable-next-line @typescript-eslint/consistent-type-definitions +export type RootProps = { + foxCode: string; +}; diff --git a/app/components/Views/confirmations/ApproveView/Approve/index.js b/app/components/Views/confirmations/ApproveView/Approve/index.js index 987c6b84744a..02ea380b2e4e 100644 --- a/app/components/Views/confirmations/ApproveView/Approve/index.js +++ b/app/components/Views/confirmations/ApproveView/Approve/index.js @@ -48,7 +48,6 @@ import { selectEvmNetworkConfigurationsByChainId, selectProviderTypeByChainId, selectRpcUrlByChainId, - selectEvmChainId, } from '../../../../../selectors/networkController'; import { selectConversionRateByChainId, diff --git a/app/components/hooks/DeleteWallet/useDeleteWallet.test.tsx b/app/components/hooks/DeleteWallet/useDeleteWallet.test.tsx index fba7a25cd52a..a007713e6f4a 100644 --- a/app/components/hooks/DeleteWallet/useDeleteWallet.test.tsx +++ b/app/components/hooks/DeleteWallet/useDeleteWallet.test.tsx @@ -5,6 +5,12 @@ import { Authentication } from '../../../core'; import AUTHENTICATION_TYPE from '../../../constants/userProperties'; import Engine from '../../../core/Engine'; +jest.mock('../../../core/NavigationService', () => ({ + navigation: { + reset: jest.fn(), + }, +})); + jest.mock('../../../core/Engine', () => ({ resetState: jest.fn(), context: { diff --git a/app/constants/error.ts b/app/constants/error.ts index 9c146ee0c1f3..7c62a667d4e4 100644 --- a/app/constants/error.ts +++ b/app/constants/error.ts @@ -45,8 +45,6 @@ export const NO_VAULT_IN_BACKUP_ERROR = 'No vault in backup'; // backupVault export const VAULT_BACKUP_FAILED = 'Vault backup failed'; -export const VAULT_BACKUP_FAILED_UNDEFINED = - 'Unable to backup vault as it is undefined'; export const VAULT_FAILED_TO_GET_VAULT_FROM_BACKUP = 'getVaultFromBackup failed to retrieve vault'; diff --git a/app/core/BackupVault/backupVault.test.ts b/app/core/BackupVault/backupVault.test.ts index ecd37c105e3b..caad44e22ecc 100644 --- a/app/core/BackupVault/backupVault.test.ts +++ b/app/core/BackupVault/backupVault.test.ts @@ -1,6 +1,7 @@ +import { VAULT_BACKUP_FAILED } from '../../constants/error'; import { backupVault } from './backupVault'; -import { VAULT_BACKUP_FAILED_UNDEFINED } from '../../constants/error'; import { KeyringControllerState } from '@metamask/keyring-controller'; +import { setInternetCredentials } from 'react-native-keychain'; //TODO Mock the react-native-keychain module test the other functions inside backupVault /* @@ -12,15 +13,39 @@ import { KeyringControllerState } from '@metamask/keyring-controller'; More information on the issue can be found here: https://github.com/oblador/react-native-keychain/issues/460 */ describe('backupVault', () => { - it('should return an error response when the vault is undefined', async () => { + it('should throw when vault backup fails', async () => { + // Mock the setInternetCredentials function to return false, which simulates a failed vault backup + (setInternetCredentials as jest.Mock).mockResolvedValue(false); + + const keyringState: KeyringControllerState = { + vault: undefined, + keyrings: [], + isUnlocked: false, + keyringsMetadata: [], + }; + + expect(async () => await backupVault(keyringState)).rejects.toThrow( + VAULT_BACKUP_FAILED, + ); + }); + + it('should return success response when vault backup succeeds', async () => { + const mockedSuccessResponse = { success: true }; + + // Mock the setInternetCredentials function to return a success response, which simulates a successful vault backup + (setInternetCredentials as jest.Mock).mockResolvedValue( + mockedSuccessResponse, + ); + const keyringState: KeyringControllerState = { vault: undefined, keyrings: [], isUnlocked: false, keyringsMetadata: [], }; + const response = await backupVault(keyringState); - expect(response.success).toBe(false); - expect(response.error).toBe(VAULT_BACKUP_FAILED_UNDEFINED); + + expect(response).toEqual(mockedSuccessResponse); }); }); diff --git a/app/core/BackupVault/backupVault.ts b/app/core/BackupVault/backupVault.ts index b93fe4c1b6e4..145676daf2fd 100644 --- a/app/core/BackupVault/backupVault.ts +++ b/app/core/BackupVault/backupVault.ts @@ -9,7 +9,6 @@ import { } from 'react-native-keychain'; import { VAULT_BACKUP_FAILED, - VAULT_BACKUP_FAILED_UNDEFINED, VAULT_FAILED_TO_GET_VAULT_FROM_BACKUP, } from '../../constants/error'; @@ -37,35 +36,26 @@ interface KeyringBackupResponse { export async function backupVault( keyringState: KeyringControllerState, ): Promise<KeyringBackupResponse> { - if (keyringState.vault) { - const backupResult = await setInternetCredentials( - VAULT_BACKUP_KEY, - VAULT_BACKUP_KEY, - keyringState.vault, - options, - ); - if (backupResult === false) { - const vaultBackupFailedError = new Error(VAULT_BACKUP_KEY); - Logger.error(vaultBackupFailedError, VAULT_BACKUP_FAILED); - const response: KeyringBackupResponse = { - success: false, - error: VAULT_BACKUP_FAILED, - }; - return response; - } - const response: KeyringBackupResponse = { - success: true, - vault: keyringState.vault, - }; - return response; + const keyringVault = keyringState.vault as string; + + // Backup vault + const backupResult = await setInternetCredentials( + VAULT_BACKUP_KEY, + VAULT_BACKUP_KEY, + keyringVault, + options, + ); + + // Vault backup failed, throw error + if (!backupResult) { + throw new Error(VAULT_BACKUP_FAILED); } - const vaultBackupUndefinedError = new Error(VAULT_BACKUP_KEY); - Logger.error(vaultBackupUndefinedError, VAULT_BACKUP_FAILED_UNDEFINED); - const response: KeyringBackupResponse = { - success: false, - error: VAULT_BACKUP_FAILED_UNDEFINED, + + // Vault backup successful, return response + return { + success: true, + vault: keyringState.vault, }; - return response; } /** diff --git a/app/core/Engine/Engine.test.ts b/app/core/Engine/Engine.test.ts index f54d2f1f993c..3af962234690 100644 --- a/app/core/Engine/Engine.test.ts +++ b/app/core/Engine/Engine.test.ts @@ -16,7 +16,12 @@ import { Hex } from '@metamask/utils'; import { TransactionMeta } from '@metamask/transaction-controller'; import { RootState } from '../../reducers'; import { MetricsEventBuilder } from '../Analytics/MetricsEventBuilder'; +import { KeyringControllerState } from '@metamask/keyring-controller'; +import { backupVault } from '../BackupVault'; +jest.mock('../BackupVault', () => ({ + backupVault: jest.fn().mockResolvedValue({ success: true, vault: 'vault' }), +})); jest.unmock('./Engine'); jest.mock('../../store', () => ({ store: { getState: jest.fn(() => ({ engine: {} })) }, @@ -35,6 +40,7 @@ describe('Engine', () => { afterEach(() => { jest.restoreAllMocks(); + (backupVault as jest.Mock).mockReset(); }); it('should expose an API', () => { @@ -75,6 +81,46 @@ describe('Engine', () => { expect(engine).toStrictEqual(newEngine); }); + it('should backup vault when Engine is initialized and vault exists', () => { + (backupVault as jest.Mock).mockResolvedValue({ + success: true, + vault: 'vault', + }); + const engine = Engine.init({}); + const newEngine = Engine.init({}); + expect(engine).toStrictEqual(newEngine); + engine.controllerMessenger.publish( + 'KeyringController:stateChange', + { + vault: 'vault', + isUnlocked: false, + keyrings: [], + keyringsMetadata: [], + } as KeyringControllerState, + [], + ); + expect(backupVault).toHaveBeenCalled(); + }); + + it('should not backup vault when Engine is initialized and vault is empty', () => { + // backupVault will not be called so return value doesn't matter here + (backupVault as jest.Mock).mockResolvedValue(undefined); + const engine = Engine.init({}); + const newEngine = Engine.init({}); + expect(engine).toStrictEqual(newEngine); + engine.controllerMessenger.publish( + 'KeyringController:stateChange', + { + vault: undefined, + isUnlocked: false, + keyrings: [], + keyringsMetadata: [], + } as KeyringControllerState, + [], + ); + expect(backupVault).not.toHaveBeenCalled(); + }); + it('calling Engine.destroy deletes the old instance', async () => { const engine = Engine.init({}); await engine.destroyEngineInstance(); diff --git a/app/core/Engine/Engine.ts b/app/core/Engine/Engine.ts index 6ba28f763a21..68673f1a00e7 100644 --- a/app/core/Engine/Engine.ts +++ b/app/core/Engine/Engine.ts @@ -1747,18 +1747,20 @@ export class Engine { handleVaultBackup() { this.controllerMessenger.subscribe( AppConstants.KEYRING_STATE_CHANGE_EVENT, - (state: KeyringControllerState) => + (state: KeyringControllerState) => { + if (!state.vault) { + return; + } + + // Back up vault if it exists backupVault(state) - .then((result) => { - if (result.success) { - Logger.log('Engine', 'Vault back up successful'); - } else { - Logger.log('Engine', 'Vault backup failed', result.error); - } + .then(() => { + Logger.log('Engine', 'Vault back up successful'); }) .catch((error) => { Logger.error(error, 'Engine Vault backup failed'); - }), + }); + }, ); } diff --git a/app/core/EngineService/EngineService.ts b/app/core/EngineService/EngineService.ts index 1cc8c20a974f..6f6c6e46a040 100644 --- a/app/core/EngineService/EngineService.ts +++ b/app/core/EngineService/EngineService.ts @@ -69,10 +69,14 @@ export class EngineService { error as Error, 'Failed to initialize Engine! Falling back to vault recovery.', ); - // Navigate to vault recovery - NavigationService.navigation?.reset({ - routes: [{ name: Routes.VAULT_RECOVERY.RESTORE_WALLET }], - }); + + // Give the navigation stack a chance to load + // This can be removed if the vault recovery flow is moved higher up in the stack + setTimeout(() => { + NavigationService.navigation.reset({ + routes: [{ name: Routes.VAULT_RECOVERY.RESTORE_WALLET }], + }); + }, 150); } endTrace({ name: TraceName.EngineInitialization }); }; diff --git a/app/core/NavigationService.ts b/app/core/NavigationService.ts deleted file mode 100644 index e76d8c2de02b..000000000000 --- a/app/core/NavigationService.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { NavigationProp } from '@react-navigation/native'; - -class NavigationService { - // TODO: Replace "any" with type - // eslint-disable-next-line @typescript-eslint/no-explicit-any - navigation?: NavigationProp<any>; - - // TODO: Replace "any" with type - // eslint-disable-next-line @typescript-eslint/no-explicit-any - setNavigationRef(navRef: NavigationProp<any>) { - this.navigation = navRef; - } -} - -export default new NavigationService(); diff --git a/app/core/NavigationService/NavigationService.test.ts b/app/core/NavigationService/NavigationService.test.ts new file mode 100644 index 000000000000..ba25193eb179 --- /dev/null +++ b/app/core/NavigationService/NavigationService.test.ts @@ -0,0 +1,65 @@ +import NavigationService from './NavigationService'; +import Logger from '../../util/Logger'; +import type { NavigationContainerRef } from '@react-navigation/native'; + +describe('NavigationService', () => { + let mockNavigation: NavigationContainerRef; + + beforeEach(() => { + // Reset any internal state + jest.clearAllMocks(); + + // Create a mock navigation + mockNavigation = { + navigate: jest.fn(), + } as unknown as NavigationContainerRef; + + // Spy on Logger + jest.spyOn(Logger, 'error'); + }); + + describe('navigation getter', () => { + it('should throw error if navigation does not exist', () => { + expect(() => NavigationService.navigation).toThrow( + 'Navigation reference does not exist!', + ); + expect(Logger.error).toHaveBeenCalledWith( + new Error('Navigation reference does not exist!'), + ); + }); + + it('should return navigation if it exists', () => { + NavigationService.navigation = mockNavigation; + expect(NavigationService.navigation).toBe(mockNavigation); + }); + }); + + describe('navigation setter', () => { + it('should throw error if navigation is invalid', () => { + const invalidNavigation = {} as NavigationContainerRef; + + expect(() => { + NavigationService.navigation = invalidNavigation; + }).toThrow('Navigation reference is not valid!'); + + expect(Logger.error).toHaveBeenCalledWith( + new Error('Navigation reference is not valid!'), + ); + }); + + it('should set navigation if valid', () => { + NavigationService.navigation = mockNavigation; + expect(NavigationService.navigation).toBe(mockNavigation); + }); + + it('should validate navigation has required methods', () => { + const incompleteNavigation = { + // missing navigate + } as unknown as NavigationContainerRef; + + expect(() => { + NavigationService.navigation = incompleteNavigation; + }).toThrow('Navigation reference is not valid!'); + }); + }); +}); diff --git a/app/core/NavigationService/NavigationService.ts b/app/core/NavigationService/NavigationService.ts new file mode 100644 index 000000000000..afc401854fd4 --- /dev/null +++ b/app/core/NavigationService/NavigationService.ts @@ -0,0 +1,52 @@ +import { NavigationContainerRef } from '@react-navigation/native'; +import Logger from '../../util/Logger'; + +/** + * Navigation service that manages the navigation object + */ +class NavigationService { + static #navigation: NavigationContainerRef; + + /** + * Checks that the navigation object exists + */ + static #assertNavigationExists() { + if (!this.#navigation) { + const error = new Error('Navigation reference does not exist!'); + Logger.error(error); + throw error; + } + return this.#navigation; + } + + /** + * Checks that the navigation object is valid + */ + static #assertNavigationRefType(navRef: NavigationContainerRef) { + if (typeof navRef?.navigate !== 'function') { + const error = new Error('Navigation reference is not valid!'); + Logger.error(error); + throw error; + } + return this.#navigation; + } + + /** + * Set the navigation object + * @param navRef + */ + static set navigation(navRef: NavigationContainerRef) { + this.#assertNavigationRefType(navRef); + this.#navigation = navRef; + } + + /** + * Get the navigation object + */ + static get navigation() { + this.#assertNavigationExists(); + return this.#navigation; + } +} + +export default NavigationService; diff --git a/app/core/NavigationService/index.ts b/app/core/NavigationService/index.ts new file mode 100644 index 000000000000..64de52ba0f34 --- /dev/null +++ b/app/core/NavigationService/index.ts @@ -0,0 +1 @@ +export { default } from './NavigationService'; diff --git a/app/reducers/user/index.ts b/app/reducers/user/index.ts index 5941561d6ea0..1ff742fdb580 100644 --- a/app/reducers/user/index.ts +++ b/app/reducers/user/index.ts @@ -22,6 +22,7 @@ export const userInitialState: UserState = { initialScreen: '', appTheme: AppThemeKey.os, ambiguousAddressEntries: {}, + appServicesReady: false, }; /** @@ -109,6 +110,11 @@ const userReducer = ( ...state, appTheme: action.payload.theme, }; + case UserActionType.SET_APP_SERVICES_READY: + return { + ...state, + appServicesReady: true, + }; default: return state; } diff --git a/app/reducers/user/selectors.test.ts b/app/reducers/user/selectors.test.ts new file mode 100644 index 000000000000..593f13026ce8 --- /dev/null +++ b/app/reducers/user/selectors.test.ts @@ -0,0 +1,48 @@ +// NavigationProvider.test.tsx +import { renderHook } from '@testing-library/react-hooks'; +import { useSelector } from 'react-redux'; +import { + selectAppServicesReady, + selectUserLoggedIn, + selectUserState, +} from './selectors'; + +// Mock the redux store state +const mockState = { + user: { + appServicesReady: false, + userLoggedIn: true, + }, +}; + +// Mock react-redux +jest.mock('react-redux', () => ({ + useSelector: jest.fn((selector) => selector(mockState)), +})); + +describe('user state selectors', () => { + beforeEach(() => { + jest.clearAllMocks(); + }); + + describe('selectUserState', () => { + it('should return the entire user state', () => { + const { result } = renderHook(() => useSelector(selectUserState)); + expect(result.current).toEqual(mockState.user); + }); + }); + + describe('selectAppServicesReady', () => { + it('should return false when services are not ready', () => { + const { result } = renderHook(() => useSelector(selectAppServicesReady)); + expect(result.current).toBe(false); + }); + }); + + describe('selectUserLoggedIn', () => { + it('should return true when user is logged in', () => { + const { result } = renderHook(() => useSelector(selectUserLoggedIn)); + expect(result.current).toBe(true); + }); + }); +}); diff --git a/app/reducers/user/selectors.ts b/app/reducers/user/selectors.ts index 2341b19cad81..6fa728c4a63c 100644 --- a/app/reducers/user/selectors.ts +++ b/app/reducers/user/selectors.ts @@ -4,3 +4,14 @@ import { RootState } from '..'; * Selects the user state */ export const selectUserState = (state: RootState) => state.user; + +/** + * Selects the appServicesReady state + */ +export const selectAppServicesReady = (state: RootState) => + state.user.appServicesReady; + +/** + * Selects the userLoggedIn state + */ +export const selectUserLoggedIn = (state: RootState) => state.user.userLoggedIn; diff --git a/app/reducers/user/types.ts b/app/reducers/user/types.ts index 4080aebc5eec..18cad4998474 100644 --- a/app/reducers/user/types.ts +++ b/app/reducers/user/types.ts @@ -16,4 +16,5 @@ export interface UserState { initialScreen: string; appTheme: AppThemeKey; ambiguousAddressEntries: Record<string, unknown>; + appServicesReady: boolean; } diff --git a/app/store/index.ts b/app/store/index.ts index 03e433ba75da..d225a8fc1a7a 100644 --- a/app/store/index.ts +++ b/app/store/index.ts @@ -1,6 +1,6 @@ import { AnyAction } from 'redux'; import { configureStore } from '@reduxjs/toolkit'; -import { persistStore, persistReducer } from 'redux-persist'; +import { persistStore, persistReducer, Persistor } from 'redux-persist'; import createSagaMiddleware from 'redux-saga'; import { rootSaga } from './sagas'; import rootReducer, { RootState } from '../reducers'; @@ -22,7 +22,7 @@ const pReducer = persistReducer<RootState, AnyAction>( ); // eslint-disable-next-line import/no-mutable-exports -let store: ReduxStore, persistor; +let store: ReduxStore, persistor: Persistor; const createStoreAndPersistor = async () => { trace({ name: TraceName.StoreInit, diff --git a/app/store/persistConfig.ts b/app/store/persistConfig.ts index 81159b944aa3..69b987842145 100644 --- a/app/store/persistConfig.ts +++ b/app/store/persistConfig.ts @@ -97,7 +97,8 @@ const persistTransform = createTransform( const persistUserTransform = createTransform( (inboundState: UserState) => { - const { initialScreen, isAuthChecked, ...state } = inboundState; + const { initialScreen, isAuthChecked, appServicesReady, ...state } = + inboundState; // Reconstruct data to persist return state; }, diff --git a/app/store/sagas/index.ts b/app/store/sagas/index.ts index b7b0724a993a..bea2f301c2a1 100644 --- a/app/store/sagas/index.ts +++ b/app/store/sagas/index.ts @@ -6,6 +6,7 @@ import { AuthErrorAction, InterruptBiometricsAction, lockApp, + setAppServicesReady, UserActionType, } from '../../actions/user'; import { NavigationActionType } from '../../actions/navigation'; @@ -134,10 +135,15 @@ export function* startAppServices() { take(UserActionType.ON_PERSISTED_DATA_LOADED), take(NavigationActionType.ON_NAVIGATION_READY), ]); - // Start services - EngineService.start(); + + // Start Engine service + yield call(EngineService.start); + + // Start AppStateEventProcessor AppStateEventProcessor.start(); - // TODO: Track a property in redux to gate keep the app until services are initialized + + // Unblock the ControllersGate + yield put(setAppServicesReady()); } // Main generator function that initializes other sagas in parallel. diff --git a/app/util/test/testSetup.js b/app/util/test/testSetup.js index 7e98af426d41..4aa7e7b6b087 100644 --- a/app/util/test/testSetup.js +++ b/app/util/test/testSetup.js @@ -183,9 +183,7 @@ jest.mock('react-native-keychain', () => ({ jest.mock('react-native-share', () => 'RNShare'); jest.mock('react-native-branch', () => ({ - BranchSubscriber: () => { - () => 'RNBranch'; - }, + subscribe: jest.fn(), })); jest.mock('react-native-sensors', () => 'RNSensors'); jest.mock('@metamask/react-native-search-api', () => 'SearchApi'); diff --git a/attribution.txt b/attribution.txt index 2d6e2f396c47..61ac617345ca 100644 --- a/attribution.txt +++ b/attribution.txt @@ -3104,7 +3104,7 @@ SOFTWARE. ****************************** axios -1.7.4 <https://github.com/axios/axios> +1.8.2 <https://github.com/axios/axios> # Copyright (c) 2014-present Matt Zabriskie & Collaborators Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: @@ -3723,7 +3723,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** @babel/helpers -7.24.5 <https://github.com/babel/babel> +7.26.10 <https://github.com/babel/babel> MIT License Copyright (c) 2014-present Sebastian McKenzie and other contributors @@ -3947,7 +3947,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** @babel/parser -7.26.2 <https://github.com/babel/babel> +7.26.10 <https://github.com/babel/babel> Copyright (C) 2012-2014 by various contributors (see AUTHORS) Permission is hereby granted, free of charge, to any person obtaining a copy @@ -6865,7 +6865,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** @babel/runtime -7.26.0 <https://github.com/babel/babel> +7.26.10 <https://github.com/babel/babel> MIT License Copyright (c) 2014-present Sebastian McKenzie and other contributors @@ -6893,7 +6893,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** @babel/template -7.25.9 <https://github.com/babel/babel> +7.26.9 <https://github.com/babel/babel> MIT License Copyright (c) 2014-present Sebastian McKenzie and other contributors @@ -6949,7 +6949,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** @babel/types -7.26.0 <https://github.com/babel/babel> +7.26.10 <https://github.com/babel/babel> MIT License Copyright (c) 2014-present Sebastian McKenzie and other contributors diff --git a/babel.config.js b/babel.config.js index 349c0cecdef7..d813092175ca 100644 --- a/babel.config.js +++ b/babel.config.js @@ -40,6 +40,10 @@ module.exports = { test: './app/core/Engine/Engine.ts', plugins: [['@babel/plugin-transform-private-methods', { loose: true }]], }, + { + test: './app/core/NavigationService/NavigationService.ts', + plugins: [['@babel/plugin-transform-private-methods', { loose: true }]], + }, ], env: { production: { diff --git a/bitrise.yml b/bitrise.yml index 53ce336fdd60..dd1ffacf7aea 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -436,6 +436,38 @@ workflows: - issue_number: '$GITHUB_PR_NUMBER' - api_base_url: 'https://api.github.com' - update_comment_tag: '$GITHUB_PR_HASH' + - script@1: + is_always_run: true + title: Label PR with success + inputs: + - content: |- + #!/usr/bin/env bash + # Define label data + LABELS_JSON='{"labels":["bitrise-result-ready"]}' + + # API URL to add labels to a PR + API_URL="https://api.github.com/repos/$BITRISEIO_GIT_REPOSITORY_OWNER/$BITRISEIO_GIT_REPOSITORY_SLUG/issues/$GITHUB_PR_NUMBER/labels" + + # Perform the curl request and capture the HTTP status code + HTTP_RESPONSE=$(curl -s -o response.txt -w "%{http_code}" -X POST -H "Authorization: token $GITHUB_ACCESS_TOKEN" -H "Accept: application/vnd.github.v3+json" -d "$LABELS_JSON" "$API_URL") + + # Output the HTTP status code + echo "HTTP Response Code: $HTTP_RESPONSE" + + # Optionally check the response + echo "HTTP Response Code: $HTTP_RESPONSE" + + if [ "$HTTP_RESPONSE" -ne 200 ]; then + echo "Failed to apply label. Status code: $HTTP_RESPONSE" + cat response.txt # Show error message from GitHub if any + else + echo "Label applied successfully." + fi + + # Clean up the response file + rm response.txt + + # Send a Slack message when workflow fails notify_failure: before_run: @@ -1538,6 +1570,10 @@ workflows: - pipeline_intermediate_files: sourcemaps/ios/index.js.map:BITRISE_APP_STORE_SOURCEMAP_PATH - deploy_path: sourcemaps/ios/index.js.map title: Deploy Source Map + meta: + bitrise.io: + stack: osx-xcode-15.0.x + machine_type_id: g2.mac.large build_ios_release_and_upload_sourcemaps: envs: - SENTRY_DISABLE_AUTO_UPLOAD: 'false' @@ -1825,16 +1861,16 @@ app: PROJECT_LOCATION_IOS: ios - opts: is_expand: false - VERSION_NAME: 7.42.0 + VERSION_NAME: 7.42.1 - opts: is_expand: false - VERSION_NUMBER: 1600 + VERSION_NUMBER: 1637 - opts: is_expand: false - FLASK_VERSION_NAME: 7.42.0 + FLASK_VERSION_NAME: 7.42.1 - opts: is_expand: false - FLASK_VERSION_NUMBER: 1600 + FLASK_VERSION_NUMBER: 1637 - opts: is_expand: false ANDROID_APK_LINK: '' @@ -1861,7 +1897,7 @@ app: COREPACK_VERSION: 0.28.0 meta: bitrise.io: - stack: osx-xcode-15.0.x + stack: osx-xcode-16.2.x machine_type_id: g2.mac.large trigger_map: - push_branch: release/* diff --git a/ios/MetaMask.xcodeproj/project.pbxproj b/ios/MetaMask.xcodeproj/project.pbxproj index 381f6f8b157d..403827ea341e 100644 --- a/ios/MetaMask.xcodeproj/project.pbxproj +++ b/ios/MetaMask.xcodeproj/project.pbxproj @@ -653,6 +653,7 @@ 1315792FDF9ED5C1277541D0 /* [CP] Embed Pods Frameworks */, FFED9AB1AACD0DA25EAA971D /* [CP] Copy Pods Resources */, 9F2FDF243A79F1A3A790828C /* [CP-User] [RNFB] Core Configuration */, + B04B18D52D8B340C00C5C2CE /* Strip Bitcode */, ); buildRules = ( ); @@ -679,6 +680,7 @@ 22A0CDFA61EAF4604801C08E /* [CP] Embed Pods Frameworks */, E6DF8EB7C7F8301263C260CE /* [CP] Copy Pods Resources */, 7DCEC09F2EFA897359942504 /* [CP-User] [RNFB] Core Configuration */, + B04B18D72D8B34BE00C5C2CE /* Strip Bitcode */, ); buildRules = ( ); @@ -705,6 +707,7 @@ C809907F60335F19DA480743 /* [CP] Embed Pods Frameworks */, 475B37D211D24FD533A25DD4 /* [CP] Copy Pods Resources */, 13E0EBB030DB9498ACF206AC /* [CP-User] [RNFB] Core Configuration */, + B04B18D62D8B34AD00C5C2CE /* Strip Bitcode */, ); buildRules = ( ); @@ -1199,6 +1202,60 @@ shellPath = /bin/sh; shellScript = "# This script configures Expo modules and generates the modules provider file.\nbash -l -c \"./Pods/Target\\ Support\\ Files/Pods-MetaMask-Flask/expo-configure-project.sh\"\n"; }; + B04B18D52D8B340C00C5C2CE /* Strip Bitcode */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + ); + name = "Strip Bitcode"; + outputFileListPaths = ( + ); + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "# Script for stripping bitcode when building using Xcode 16+ and uploading to the App Store\n# Reference - https://discuss.bitrise.io/t/xcode-16-known-issues/24484\n# This script should be last to ensure that all bitcode is stripped after dependencies are installed\n\nfind \"${BUILT_PRODUCTS_DIR}/${FRAMEWORKS_FOLDER_PATH}\" -name 'OpenSSL' -exec xcrun bitcode_strip {} -r -o {} \\;\n"; + }; + B04B18D62D8B34AD00C5C2CE /* Strip Bitcode */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + ); + name = "Strip Bitcode"; + outputFileListPaths = ( + ); + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "# Script for stripping bitcode when building using Xcode 16+ and uploading to the App Store\n# Reference - https://discuss.bitrise.io/t/xcode-16-known-issues/24484\n# This script should be last to ensure that all bitcode is stripped after dependencies are installed\n\nfind \"${BUILT_PRODUCTS_DIR}/${FRAMEWORKS_FOLDER_PATH}\" -name 'OpenSSL' -exec xcrun bitcode_strip {} -r -o {} \\;\n"; + }; + B04B18D72D8B34BE00C5C2CE /* Strip Bitcode */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + ); + name = "Strip Bitcode"; + outputFileListPaths = ( + ); + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "# Script for stripping bitcode when building using Xcode 16+ and uploading to the App Store\n# Reference - https://discuss.bitrise.io/t/xcode-16-known-issues/24484\n# This script should be last to ensure that all bitcode is stripped after dependencies are installed\n\nfind \"${BUILT_PRODUCTS_DIR}/${FRAMEWORKS_FOLDER_PATH}\" -name 'OpenSSL' -exec xcrun bitcode_strip {} -r -o {} \\;\n"; + }; B339FF00289ABD70001B89FB /* Override xcconfig files */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; @@ -1380,7 +1437,7 @@ CODE_SIGN_IDENTITY = "Apple Development"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1600; + CURRENT_PROJECT_VERSION = 1637; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = 48XVW22RCG; @@ -1418,7 +1475,7 @@ "${inherited}", ); LLVM_LTO = YES; - MARKETING_VERSION = 7.42.0; + MARKETING_VERSION = 7.42.1; ONLY_ACTIVE_ARCH = YES; OTHER_CFLAGS = "$(inherited)"; OTHER_LDFLAGS = ( @@ -1449,7 +1506,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMask.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1600; + CURRENT_PROJECT_VERSION = 1637; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 48XVW22RCG; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 48XVW22RCG; @@ -1484,7 +1541,7 @@ "${inherited}", ); LLVM_LTO = YES; - MARKETING_VERSION = 7.42.0; + MARKETING_VERSION = 7.42.1; ONLY_ACTIVE_ARCH = NO; OTHER_CFLAGS = "$(inherited)"; OTHER_LDFLAGS = ( @@ -1514,7 +1571,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMaskDebug.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1600; + CURRENT_PROJECT_VERSION = 1637; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = 48XVW22RCG; @@ -1551,7 +1608,7 @@ "\"$(SRCROOT)/MetaMask/System/Library/Frameworks\"", ); LLVM_LTO = YES; - MARKETING_VERSION = 7.42.0; + MARKETING_VERSION = 7.42.1; ONLY_ACTIVE_ARCH = YES; OTHER_CFLAGS = "$(inherited)"; OTHER_LDFLAGS = ( @@ -1580,7 +1637,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMask.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1600; + CURRENT_PROJECT_VERSION = 1637; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 48XVW22RCG; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 48XVW22RCG; @@ -1615,7 +1672,7 @@ "\"$(SRCROOT)/MetaMask/System/Library/Frameworks\"", ); LLVM_LTO = YES; - MARKETING_VERSION = 7.42.0; + MARKETING_VERSION = 7.42.1; ONLY_ACTIVE_ARCH = NO; OTHER_CFLAGS = "$(inherited)"; OTHER_LDFLAGS = ( @@ -1739,7 +1796,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMaskDebug.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1600; + CURRENT_PROJECT_VERSION = 1637; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = 48XVW22RCG; @@ -1776,7 +1833,7 @@ "\"$(SRCROOT)/MetaMask/System/Library/Frameworks\"", ); LLVM_LTO = YES; - MARKETING_VERSION = 7.42.0; + MARKETING_VERSION = 7.42.1; ONLY_ACTIVE_ARCH = YES; OTHER_CFLAGS = ( "$(inherited)", @@ -1808,7 +1865,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMask.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1600; + CURRENT_PROJECT_VERSION = 1637; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 48XVW22RCG; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 48XVW22RCG; @@ -1843,7 +1900,7 @@ "\"$(SRCROOT)/MetaMask/System/Library/Frameworks\"", ); LLVM_LTO = YES; - MARKETING_VERSION = 7.42.0; + MARKETING_VERSION = 7.42.1; ONLY_ACTIVE_ARCH = NO; OTHER_CFLAGS = ( "$(inherited)", diff --git a/package.json b/package.json index c5165d1e44f3..4ed9010ee412 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "metamask", - "version": "7.42.0", + "version": "7.42.1", "private": true, "scripts": { "audit:ci": "./scripts/yarn-audit.sh", @@ -115,7 +115,7 @@ "d3-color": "3.1.0", "tough-cookie": "4.1.3", "crypto-js": "4.2.0", - "axios": "^1.7.4", + "axios": "^1.8.2", "react-native-ble-plx": "3.1.2", "**/babel-runtime/regenerator-runtime": "^0.13.8", "redux-persist-filesystem-storage/react-native-blob-util": "^0.19.9", @@ -251,7 +251,7 @@ "@xmldom/xmldom": "^0.8.10", "appium-adb": "^9.11.4", "asyncstorage-down": "4.2.0", - "axios": "^1.6.8", + "axios": "^1.8.2", "base-64": "1.0.0", "bignumber.js": "^9.0.1", "bitcoin-address-validation": "2.2.3", diff --git a/yarn.lock b/yarn.lock index 8550ca61ab50..7ba49ff5f884 100644 --- a/yarn.lock +++ b/yarn.lock @@ -269,7 +269,7 @@ dependencies: "@babel/highlight" "^7.10.4" -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.16.7", "@babel/code-frame@^7.24.2", "@babel/code-frame@^7.25.9": +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.16.7", "@babel/code-frame@^7.24.2", "@babel/code-frame@^7.25.9", "@babel/code-frame@^7.26.2": version "7.26.2" resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.26.2.tgz#4b5fab97d33338eff916235055f0ebc21e573a85" integrity sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ== @@ -486,13 +486,12 @@ "@babel/types" "^7.25.9" "@babel/helpers@^7.24.5": - version "7.24.5" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.24.5.tgz#fedeb87eeafa62b621160402181ad8585a22a40a" - integrity sha512-CiQmBMMpMQHwM5m01YnrM6imUG1ebgYJ+fAIW4FZe6m4qHTPaRHti+R8cggAwkdz4oXhtO4/K9JWlh+8hIfR2Q== + version "7.26.10" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.26.10.tgz#6baea3cd62ec2d0c1068778d63cb1314f6637384" + integrity sha512-UPYc3SauzZ3JGgj87GgZ89JVdC5dj0AoetR5Bw6wj4niittNyFh6+eOGonYvJ1ao6B8lEa3Q3klS7ADZ53bc5g== dependencies: - "@babel/template" "^7.24.0" - "@babel/traverse" "^7.24.5" - "@babel/types" "^7.24.5" + "@babel/template" "^7.26.9" + "@babel/types" "^7.26.10" "@babel/highlight@^7.10.4": version "7.24.7" @@ -504,12 +503,12 @@ js-tokens "^4.0.0" picocolors "^1.0.0" -"@babel/parser@^7.1.0", "@babel/parser@^7.13.16", "@babel/parser@^7.14.7", "@babel/parser@^7.20.0", "@babel/parser@^7.20.15", "@babel/parser@^7.20.7", "@babel/parser@^7.21.3", "@babel/parser@^7.23.0", "@babel/parser@^7.23.9", "@babel/parser@^7.24.5", "@babel/parser@^7.25.9", "@babel/parser@^7.26.2": - version "7.26.2" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.26.2.tgz#fd7b6f487cfea09889557ef5d4eeb9ff9a5abd11" - integrity sha512-DWMCZH9WA4Maitz2q21SRKHo9QXZxkDsbNZoVD62gusNtNBBqDg9i7uOhASfTfIGNzW+O+r7+jAlM8dwphcJKQ== +"@babel/parser@^7.1.0", "@babel/parser@^7.13.16", "@babel/parser@^7.14.7", "@babel/parser@^7.20.0", "@babel/parser@^7.20.15", "@babel/parser@^7.20.7", "@babel/parser@^7.21.3", "@babel/parser@^7.23.0", "@babel/parser@^7.23.9", "@babel/parser@^7.24.5", "@babel/parser@^7.25.9", "@babel/parser@^7.26.2", "@babel/parser@^7.26.9": + version "7.26.10" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.26.10.tgz#e9bdb82f14b97df6569b0b038edd436839c57749" + integrity sha512-6aQR2zGE/QFi8JpDLjUZEPYOs7+mhKXm86VaKFiLP35JQwQb6bwUE+XbvkH0EptsYhbNBSUGaUBLKqxH1xSgsA== dependencies: - "@babel/types" "^7.26.0" + "@babel/types" "^7.26.10" "@babel/plugin-bugfix-firefox-class-in-computed-class-key@^7.25.9": version "7.25.9" @@ -1371,20 +1370,20 @@ source-map-support "^0.5.16" "@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.12.1", "@babel/runtime@^7.12.13", "@babel/runtime@^7.12.5", "@babel/runtime@^7.13.10", "@babel/runtime@^7.15.4", "@babel/runtime@^7.17.8", "@babel/runtime@^7.20.0", "@babel/runtime@^7.20.13", "@babel/runtime@^7.24.1", "@babel/runtime@^7.24.5", "@babel/runtime@^7.3.1", "@babel/runtime@^7.4.4", "@babel/runtime@^7.5.5", "@babel/runtime@^7.6.3", "@babel/runtime@^7.7.2", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2": - version "7.26.0" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.26.0.tgz#8600c2f595f277c60815256418b85356a65173c1" - integrity sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw== + version "7.26.10" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.26.10.tgz#a07b4d8fa27af131a633d7b3524db803eb4764c2" + integrity sha512-2WJMeRQPHKSPemqk/awGrAiuFfzBmOIPXKizAsVhWH9YJqLZ0H+HS4c8loHGgW6utJ3E/ejXQUsiGaQy2NZ9Fw== dependencies: regenerator-runtime "^0.14.0" -"@babel/template@^7.0.0", "@babel/template@^7.24.0", "@babel/template@^7.25.9", "@babel/template@^7.3.3": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.25.9.tgz#ecb62d81a8a6f5dc5fe8abfc3901fc52ddf15016" - integrity sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg== +"@babel/template@^7.0.0", "@babel/template@^7.24.0", "@babel/template@^7.25.9", "@babel/template@^7.26.9", "@babel/template@^7.3.3": + version "7.26.9" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.26.9.tgz#4577ad3ddf43d194528cff4e1fa6b232fa609bb2" + integrity sha512-qyRplbeIpNZhmzOysF/wFMuP9sctmh2cFzRAZOn1YapxBsE1i9bJIY586R/WBLfLcmcBlM8ROBiQURnnNy+zfA== dependencies: - "@babel/code-frame" "^7.25.9" - "@babel/parser" "^7.25.9" - "@babel/types" "^7.25.9" + "@babel/code-frame" "^7.26.2" + "@babel/parser" "^7.26.9" + "@babel/types" "^7.26.9" "@babel/traverse@^7.20.0", "@babel/traverse@^7.23.2", "@babel/traverse@^7.24.5", "@babel/traverse@^7.25.9", "@babel/traverse@^7.7.4": version "7.25.9" @@ -1399,10 +1398,10 @@ debug "^4.3.1" globals "^11.1.0" -"@babel/types@^7.0.0", "@babel/types@^7.15.6", "@babel/types@^7.20.0", "@babel/types@^7.20.7", "@babel/types@^7.23.0", "@babel/types@^7.24.5", "@babel/types@^7.24.7", "@babel/types@^7.25.9", "@babel/types@^7.26.0", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4": - version "7.26.0" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.26.0.tgz#deabd08d6b753bc8e0f198f8709fb575e31774ff" - integrity sha512-Z/yiTPj+lDVnF7lWeKCIJzaIkI0vYO87dMpZ4bg4TDrFe4XXLFWL1TbXU27gBP3QccxV9mZICCrnjnYlJjXHOA== +"@babel/types@^7.0.0", "@babel/types@^7.15.6", "@babel/types@^7.20.0", "@babel/types@^7.20.7", "@babel/types@^7.23.0", "@babel/types@^7.24.5", "@babel/types@^7.24.7", "@babel/types@^7.25.9", "@babel/types@^7.26.0", "@babel/types@^7.26.10", "@babel/types@^7.26.9", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4": + version "7.26.10" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.26.10.tgz#396382f6335bd4feb65741eacfc808218f859259" + integrity sha512-emqcG3vHrpxUKTrxcblR36dcrcoRDvKmnL/dCL6ZsHaShW80qxCAcNhzQZrpeM765VzEos+xOi4s+r4IXzTwdQ== dependencies: "@babel/helper-string-parser" "^7.25.9" "@babel/helper-validator-identifier" "^7.25.9" @@ -12610,10 +12609,10 @@ axios-retry@^3.1.2: "@babel/runtime" "^7.15.4" is-retry-allowed "^2.2.0" -axios@1.4.0, axios@1.7.7, axios@^0.28.0, axios@^1.6.7, axios@^1.6.8, axios@^1.7.4: - version "1.7.4" - resolved "https://registry.yarnpkg.com/axios/-/axios-1.7.4.tgz#4c8ded1b43683c8dd362973c393f3ede24052aa2" - integrity sha512-DukmaFRnY6AzAALSH4J2M3k6PkaC+MfaAGdEERRWcC9q3/TWQwLpHR8ZRLKTdQ3aBDL64EdluRDjJqKw+BPZEw== +axios@1.4.0, axios@1.7.7, axios@^0.28.0, axios@^1.6.7, axios@^1.8.2: + version "1.8.2" + resolved "https://registry.yarnpkg.com/axios/-/axios-1.8.2.tgz#fabe06e241dfe83071d4edfbcaa7b1c3a40f7979" + integrity sha512-ls4GYBm5aig9vWx8AWDSGLpnpDQRtWAfrjU+EuytuODrFBkqesN2RkOQCBzrA1RQNHw1SmRMSDDDSwzNAYQ6Rg== dependencies: follow-redirects "^1.15.6" form-data "^4.0.0" From f2bfff18c8e3b341cf3346feab02604c492586df Mon Sep 17 00:00:00 2001 From: "runway-github[bot]" <73448015+runway-github[bot]@users.noreply.github.com> Date: Mon, 24 Mar 2025 14:50:19 -0600 Subject: [PATCH 065/473] chore(runway): cherry-pick chore: 7.42.0 stable sync (#14119) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - chore: 7.42.0 stable sync (#14093) ## **Description** This PR sync stable and main with the latest release 7.42.0 ## **Related issues** Fixes: ## **Manual testing steps** 1. Go to this page... 2. 3. ## **Screenshots/Recordings** <!-- If applicable, add screenshots and/or recordings to visualize the before and after of your change. --> ### **Before** <!-- [screenshots/recordings] --> ### **After** <!-- [screenshots/recordings] --> ## **Pre-merge author checklist** - [ ] I’ve followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile Coding Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [ ] I've completed the PR template to the best of my ability - [ ] I’ve included tests if applicable - [ ] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [ ] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. ## **Pre-merge reviewer checklist** - [ ] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [ ] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots. --------- Co-authored-by: metamaskbot <metamaskbot@users.noreply.github.com> Co-authored-by: MetaMask Bot <37885440+metamaskbot@users.noreply.github.com> Co-authored-by: runway-github[bot] <73448015+runway-github[bot]@users.noreply.github.com> Co-authored-by: Vince Howard <vincenguyenhoward@gmail.com> Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: sahar-fehri <sahar.fehri@consensys.net> Co-authored-by: Aslau Mario-Daniel <marioaslau@gmail.com> Co-authored-by: Eric Bishard <eric@httpjunkie.com> Co-authored-by: Owen Craston <owen.craston@consensys.net> Co-authored-by: tommasini <46944231+tommasini@users.noreply.github.com> Co-authored-by: Curtis David <Curtis.David7@gmail.com> Co-authored-by: Davide Brocchetto <davide.brocchetto@consensys.net> Co-authored-by: Matthew Grainger <46547583+Matt561@users.noreply.github.com> Co-authored-by: OGPoyraz <omergoktugpoyraz@gmail.com> Co-authored-by: Daniel <80175477+dan437@users.noreply.github.com> Co-authored-by: Jyoti Puri <jyotipuri@gmail.com> Co-authored-by: Prithpal Sooriya <prithpal.sooriya@consensys.net> Co-authored-by: Xiaoming Wang <7315988+dawnseeker8@users.noreply.github.com> Co-authored-by: Brian August Nguyen <brianacnguyen@gmail.com> Co-authored-by: Nico MASSART <NicolasMassart@users.noreply.github.com> Co-authored-by: Salim TOUBAL <salim.toubal@outlook.com> Co-authored-by: CW <chris.wilcox@consensys.net> Co-authored-by: Pedro Figueiredo <ganseki.figueiredo@gmail.com> Co-authored-by: digiwand <20778143+digiwand@users.noreply.github.com> Co-authored-by: Gustavo Antunes <17601467+gantunesr@users.noreply.github.com> Co-authored-by: Vinicius Stevam <45455812+vinistevam@users.noreply.github.com> Co-authored-by: EtherWizard33 <165834542+EtherWizard33@users.noreply.github.com> Co-authored-by: Bryan Fullam <bryan.fullam@consensys.net> Co-authored-by: Devin Stewart <49423028+Bigshmow@users.noreply.github.com> Co-authored-by: Ziad Saab <ziad.saab@gmail.com> Co-authored-by: Nicholas Smith <nick.smith@consensys.net> Co-authored-by: George Weiler <georgejweiler@gmail.com> Co-authored-by: Cal Leung <cal.leung@consensys.net> Co-authored-by: Amitabh Aggarwal <aggarwal.amitabh@gmail.com> Co-authored-by: Nick Gambino <35090461+gambinish@users.noreply.github.com> Co-authored-by: Gauthier Petetin <gauthierpetetin@hotmail.com> Co-authored-by: Frederik Bolding <frederik.bolding@gmail.com> Co-authored-by: infiniteflower <139582705+infiniteflower@users.noreply.github.com> Co-authored-by: Iván <ivan.canete@consensys.net> Co-authored-by: Daniel Cross <dan.s.cross@icloud.com> Co-authored-by: Owen Craston <owengc12@gmail.com> Co-authored-by: Kylan Hurt <6249205+smilingkylan@users.noreply.github.com> Co-authored-by: jake-perkins <128608287+jake-perkins@users.noreply.github.com> Co-authored-by: David Drazic <david@timechaser.org> [92ed8d1](https://github.com/MetaMask/metamask-mobile/commit/92ed8d1cb1c35e787146896c4eea11463b286410) --------- Co-authored-by: metamaskbot <metamaskbot@users.noreply.github.com> Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: George Weiler <georgejweiler@gmail.com> Co-authored-by: runway-github[bot] <73448015+runway-github[bot]@users.noreply.github.com> Co-authored-by: Prithpal Sooriya <prithpal.sooriya@consensys.net> Co-authored-by: sahar-fehri <sahar.fehri@consensys.net> Co-authored-by: salimtb <salim.toubal@outlook.com> Co-authored-by: MetaMask Bot <37885440+metamaskbot@users.noreply.github.com> Co-authored-by: sethkfman <10342624+sethkfman@users.noreply.github.com> Co-authored-by: Jyoti Puri <jyotipuri@gmail.com> Co-authored-by: digiwand <20778143+digiwand@users.noreply.github.com> Co-authored-by: Brian Nguyen <brianacnguyen@gmail.com> Co-authored-by: Nick Gambino <35090461+gambinish@users.noreply.github.com> Co-authored-by: Frederik Bolding <frederik.bolding@gmail.com> Co-authored-by: Cal Leung <cal.leung@consensys.net> --- CHANGELOG.md | 112 ++++++++++++++++++++++++++++++++++++++++----------- 1 file changed, 88 insertions(+), 24 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 272849d40753..26f427c2d8d9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,29 +9,6 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [7.43.0] -### Uncategorized - -- Bump version number to 1617 -- chore: Performance instrumentation for adding a snap account ([#13984](https://github.com/MetaMask/metamask-mobile/pull/13984)) -- chore: restructure transactions and define CODEOWNERS ([#13733](https://github.com/MetaMask/metamask-mobile/pull/13733)) -- chore: Bump Babel ([#13979](https://github.com/MetaMask/metamask-mobile/pull/13979)) -- chore: adds necessary initial code to work with non-evm transactions ([#13954](https://github.com/MetaMask/metamask-mobile/pull/13954)) -- chore: added staking team as codeowners for earn-controller files ([#13940](https://github.com/MetaMask/metamask-mobile/pull/13940)) -- chore: Bump axios ([#13950](https://github.com/MetaMask/metamask-mobile/pull/13950)) -- chore: Update `CODEOWNERS` file for template renderer ([#13918](https://github.com/MetaMask/metamask-mobile/pull/13918)) -- chore(snaps): Refactor Snap UI components folder structure ([#13905](https://github.com/MetaMask/metamask-mobile/pull/13905)) -- chore: upgrade NDK 26 on bitrise.yml ([#13862](https://github.com/MetaMask/metamask-mobile/pull/13862)) -- chore: add workflow_dispatch to security-code-scanner ([#13759](https://github.com/MetaMask/metamask-mobile/pull/13759)) -- chore: upgrade Xcode 16 on bitrise.yml ([#13807](https://github.com/MetaMask/metamask-mobile/pull/13807)) -- chore: update identity codeowners ([#13855](https://github.com/MetaMask/metamask-mobile/pull/13855)) -- chore: update swaps destination token search text ([#13605](https://github.com/MetaMask/metamask-mobile/pull/13605)) -- chore: Enable key caching of keyring controller ([#13675](https://github.com/MetaMask/metamask-mobile/pull/13675)) -- chore: update network info component for non evm networks ([#13734](https://github.com/MetaMask/metamask-mobile/pull/13734)) -- ci: Use ubuntu-latest ([#13844](https://github.com/MetaMask/metamask-mobile/pull/13844)) -- Slack prod cfg ([#13752](https://github.com/MetaMask/metamask-mobile/pull/13752)) -- refactor: Update Snaps-related controllers to use modular initialisation ([#13971](https://github.com/MetaMask/metamask-mobile/pull/13971)) -- refactor: Replace redesign confirmation BottomModal with BottomSheet ([#13268](https://github.com/MetaMask/metamask-mobile/pull/13268)) - ### Added - feat(ramp): estimate gasLimit for ERC20 transfers (sell feature) ([#12467](https://github.com/MetaMask/metamask-mobile/pull/12467)) @@ -111,6 +88,92 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - fix: Improve redesigned staking deposit confirmation navigation ([#13743](https://github.com/MetaMask/metamask-mobile/pull/13743)) - fix: fixes ramp quote selection test ([#13756](https://github.com/MetaMask/metamask-mobile/pull/13756)) +## [7.42.0] + +### Added + +- feat(snaps): Add Snap UI Banner component ([#13735](https://github.com/MetaMask/metamask-mobile/pull/13735)) +- feat(ramps): adds some properties to ramp quote analytics events ([#13754](https://github.com/MetaMask/metamask-mobile/pull/13754)) +- feat(ramps): adds most reliable tag to ramp quotes ([#13495](https://github.com/MetaMask/metamask-mobile/pull/13495)) +- feat: Make Snaps UI footers properly sticky ([#13736](https://github.com/MetaMask/metamask-mobile/pull/13736)) +- feat: Add token hero rounded amount tooltip ([#13685](https://github.com/MetaMask/metamask-mobile/pull/13685)) +- feat: make Snap account creation flow async + displayAccountNameSuggestion flag ([#13703](https://github.com/MetaMask/metamask-mobile/pull/13703)) +- feat: bump notifications services controller to v1.0.0 ([#13716](https://github.com/MetaMask/metamask-mobile/pull/13716)) +- feat: add `ConfirmAlertModal` component ([#13604](https://github.com/MetaMask/metamask-mobile/pull/13604)) +- feat: Implement Snaps address UI components ([#13712](https://github.com/MetaMask/metamask-mobile/pull/13712)) +- feat: add `AlertModal` component ([#13483](https://github.com/MetaMask/metamask-mobile/pull/13483)) +- feat: More Snaps UI components ([#13668](https://github.com/MetaMask/metamask-mobile/pull/13668)) +- feat: Support standalone confirmation for re-redesigned confirmations ([#13550](https://github.com/MetaMask/metamask-mobile/pull/13550)) +- feat: Non evm network global selector ([#13307](https://github.com/MetaMask/metamask-mobile/pull/13307)) +- feat: publish slack release testing status ([#13468](https://github.com/MetaMask/metamask-mobile/pull/13468)) +- feat: Limit Segment tracked events to only random 1% of users ([#13534](https://github.com/MetaMask/metamask-mobile/pull/13534)) +- feat: snaps dynamic UI ([#12429](https://github.com/MetaMask/metamask-mobile/pull/12429)) +- feat: refactor cleanup notification hooks and UI ([#13647](https://github.com/MetaMask/metamask-mobile/pull/13647)) +- feat: Implement `GasFeeDetails` ([#13634](https://github.com/MetaMask/metamask-mobile/pull/13634)) +- feat: Add support for ledger wallet in new signature designs ([#13402](https://github.com/MetaMask/metamask-mobile/pull/13402)) +- feat: Migrate tooltips to use BottomModal components ([#13631](https://github.com/MetaMask/metamask-mobile/pull/13631)) +- feat: Refactor/12873 modular controller init ([#13065](https://github.com/MetaMask/metamask-mobile/pull/13065)) +- feat: add initial structure for Alert System ([#13382](https://github.com/MetaMask/metamask-mobile/pull/13382)) +- feat: add better default style support for android push notifications ([#13271](https://github.com/MetaMask/metamask-mobile/pull/13271)) +- feat: add EarnTokenSelector component for stablecoin lending ([#13595](https://github.com/MetaMask/metamask-mobile/pull/13595)) +- feat: adds best rate quote tag to ramp quotes ([#13486](https://github.com/MetaMask/metamask-mobile/pull/13486)) +- feat: Implement staking advanced details ([#13551](https://github.com/MetaMask/metamask-mobile/pull/13551)) +- feat: Implement staking terms and disclosure footer ([#13588](https://github.com/MetaMask/metamask-mobile/pull/13588)) +- feat: add tokens search discovery controller ([#13111](https://github.com/MetaMask/metamask-mobile/pull/13111)) +- feat: bridge feature routing skeleton ([#13404](https://github.com/MetaMask/metamask-mobile/pull/13404)) +- feat: bump notification services controller ([#13529](https://github.com/MetaMask/metamask-mobile/pull/13529)) +- feat: Adding scroll button to confirmation pages ([#13552](https://github.com/MetaMask/metamask-mobile/pull/13552)) +- feat: Port first party staking contracts from extension to mobile ([#13555](https://github.com/MetaMask/metamask-mobile/pull/13555)) +- feat: STAKE-898: build select token component for earn products ([#13258](https://github.com/MetaMask/metamask-mobile/pull/13258)) +- feat: Add Redesign Permit support; fix: InfoRow padding and alignment ([#13369](https://github.com/MetaMask/metamask-mobile/pull/13369)) +- feat: Implement staking details section ([#13475](https://github.com/MetaMask/metamask-mobile/pull/13475)) +- feat: update FCM and Notification Services to better support push impl ([#13441](https://github.com/MetaMask/metamask-mobile/pull/13441)) +- feat: adding navigation to confirmation pages ([#13461](https://github.com/MetaMask/metamask-mobile/pull/13461)) +- feat: enable STX by default with migration and notification ([#12857](https://github.com/MetaMask/metamask-mobile/pull/12857)) + +### Fixed + +- fix(action): Improve bug report creation ([#13562](https://github.com/MetaMask/metamask-mobile/pull/13562)) +- fix(action): revert recent change, due to impossibility to indicate working directory for reusable workflows from github-tools repo ([#13629](https://github.com/MetaMask/metamask-mobile/pull/13629)) +- fix(13492): background shapes animation stories and centering fix ([#13503](https://github.com/MetaMask/metamask-mobile/pull/13503)) +- fix: Adhere to locale settings for Annual Rewards in ETH and in Fiat ([#13660](https://github.com/MetaMask/metamask-mobile/pull/13660)) +- fix: Analytics issue where anonymousId and userId are not properly defined on first sent event ([#13405](https://github.com/MetaMask/metamask-mobile/pull/13405)) +- fix: app store icon ([#13724](https://github.com/MetaMask/metamask-mobile/pull/13724)) +- fix: cp-7.41.0 13708 fix the submitQRSignature scope issue ([#13714](https://github.com/MetaMask/metamask-mobile/pull/13714)) +- fix: network of the asset when pressed in popular list view ([#13713](https://github.com/MetaMask/metamask-mobile/pull/13713)) +- fix: Revert native HMACSHA512 usage ([#13711](https://github.com/MetaMask/metamask-mobile/pull/13711)) +- fix: Remove scroll button from confirmation page ([#13680](https://github.com/MetaMask/metamask-mobile/pull/13680)) +- fix: cp-7.41.0 support NFT collectibles that have multiple images ([#13689](https://github.com/MetaMask/metamask-mobile/pull/13689)) +- fix: cp-7.41.0 implement transparent app icons for improved dark/light mode handling ([#13597](https://github.com/MetaMask/metamask-mobile/pull/13597)) +- fix: `@metamask/transaction-controller` version to exact `45.0.0` ([#13690](https://github.com/MetaMask/metamask-mobile/pull/13690)) +- fix: hide simulation button pill value if no value loaded ([#13663](https://github.com/MetaMask/metamask-mobile/pull/13663)) +- fix: TypedSignDecoded revoke state changes should show "Revoke" not "Spending cap" ([#13665](https://github.com/MetaMask/metamask-mobile/pull/13665)) +- fix: cp-7.41.0 Handle better errors by getting tags in pre-init ([#13598](https://github.com/MetaMask/metamask-mobile/pull/13598)) +- fix: mobile crash issue during revoke with low gas ([#13655](https://github.com/MetaMask/metamask-mobile/pull/13655)) +- fix: origin url displayed for signatures ([#13681](https://github.com/MetaMask/metamask-mobile/pull/13681)) +- fix: swaps using hardware wallets or QR scan wallets are broken ([#13657](https://github.com/MetaMask/metamask-mobile/pull/13657)) +- fix: cp-7.41.0 Temporarily revert gas included swaps ([#13639](https://github.com/MetaMask/metamask-mobile/pull/13639)) +- fix: cp-7.41.0 Prevent flickering on `RetryModal` ([#13637](https://github.com/MetaMask/metamask-mobile/pull/13637)) +- fix: rm duplicate locale entry ([#13635](https://github.com/MetaMask/metamask-mobile/pull/13635)) +- fix: Disabling sentry capturing temporarily till we address issue with url missing protocol ([#13636](https://github.com/MetaMask/metamask-mobile/pull/13636)) +- fix: Confirm button should not be disabled for user to scroll to the bottom of confirmation page ([#13628](https://github.com/MetaMask/metamask-mobile/pull/13628)) +- fix: accessibility issue with footer buttons ([#13626](https://github.com/MetaMask/metamask-mobile/pull/13626)) +- fix: error thrown from DisplayURL component ([#13624](https://github.com/MetaMask/metamask-mobile/pull/13624)) +- fix: STAKE-946: fix inconsistent pooled staking reward rate ([#13594](https://github.com/MetaMask/metamask-mobile/pull/13594)) +- fix: confirm scroll icon color and add scrollEventThrottle prop ([#13600](https://github.com/MetaMask/metamask-mobile/pull/13600)) +- fix: Fix `undefined` `chainId` or `networkClientId` on fetchEstimatedMultiLayer params ([#13606](https://github.com/MetaMask/metamask-mobile/pull/13606)) +- fix: Disable staking deposit for hw wallets ([#13517](https://github.com/MetaMask/metamask-mobile/pull/13517)) +- fix: update toLocaleString locale to undefined ([#13589](https://github.com/MetaMask/metamask-mobile/pull/13589)) +- fix: tooltip display for text should have label ([#13572](https://github.com/MetaMask/metamask-mobile/pull/13572)) +- fix: Reject transaction as user closes modal by swiping out ([#13573](https://github.com/MetaMask/metamask-mobile/pull/13573)) +- fix: remove supported chains check ([#13047](https://github.com/MetaMask/metamask-mobile/pull/13047)) +- fix: additional app icons and remove tint fields ([#13544](https://github.com/MetaMask/metamask-mobile/pull/13544)) +- fix: update plist to include CFBundleIconName for app icons ([#13530](https://github.com/MetaMask/metamask-mobile/pull/13530)) +- fix: cp-7.41.0 fix main aggregated account balance ([#13513](https://github.com/MetaMask/metamask-mobile/pull/13513)) +- fix: cp-7.41.0 fix account selector balance ([#13484](https://github.com/MetaMask/metamask-mobile/pull/13484)) +- fix: account tracker polling called twice ([#13473](https://github.com/MetaMask/metamask-mobile/pull/13473)) +- fix: IPFS gateway down in settings ([#13357](https://github.com/MetaMask/metamask-mobile/pull/13357)) + ## [7.41.0] ### Added @@ -5104,7 +5167,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#954](https://github.com/MetaMask/metamask-mobile/pull/954): Bugfix: onboarding navigation (#954) [Unreleased]: https://github.com/MetaMask/metamask-mobile/compare/v7.43.0...HEAD -[7.43.0]: https://github.com/MetaMask/metamask-mobile/compare/v7.41.0...v7.43.0 +[7.43.0]: https://github.com/MetaMask/metamask-mobile/compare/v7.42.0...v7.43.0 +[7.42.0]: https://github.com/MetaMask/metamask-mobile/compare/v7.41.0...v7.42.0 [7.41.0]: https://github.com/MetaMask/metamask-mobile/compare/v7.40.0...v7.41.0 [7.40.0]: https://github.com/MetaMask/metamask-mobile/compare/v7.39.0...v7.40.0 [7.39.0]: https://github.com/MetaMask/metamask-mobile/compare/v7.38.1...v7.39.0 From 55f787b7eaf72fb7eb63c41595361490e3809c1c Mon Sep 17 00:00:00 2001 From: "runway-github[bot]" <73448015+runway-github[bot]@users.noreply.github.com> Date: Tue, 25 Mar 2025 10:09:45 -0600 Subject: [PATCH 066/473] chore(runway): cherry-pick chore: 7.42.1 stable-main sync (#14213) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - chore: 7.42.1 stable-main sync (#14208) <!-- Please submit this PR as a draft initially. Do not mark it as "Ready for review" until the template has been completely filled out, and PR status checks have passed at least once. --> ## **Description** Stable-main sync for 7.42.1 ## **Related issues** Fixes: ## **Manual testing steps** 1. Go to this page... 2. 3. ## **Screenshots/Recordings** <!-- If applicable, add screenshots and/or recordings to visualize the before and after of your change. --> ### **Before** <!-- [screenshots/recordings] --> ### **After** <!-- [screenshots/recordings] --> ## **Pre-merge author checklist** - [ ] I’ve followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile Coding Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [ ] I've completed the PR template to the best of my ability - [ ] I’ve included tests if applicable - [ ] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [ ] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. ## **Pre-merge reviewer checklist** - [ ] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [ ] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots. --------- Co-authored-by: metamaskbot <metamaskbot@users.noreply.github.com> Co-authored-by: MetaMask Bot <37885440+metamaskbot@users.noreply.github.com> Co-authored-by: runway-github[bot] <73448015+runway-github[bot]@users.noreply.github.com> Co-authored-by: Vince Howard <vincenguyenhoward@gmail.com> Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: sahar-fehri <sahar.fehri@consensys.net> Co-authored-by: Aslau Mario-Daniel <marioaslau@gmail.com> Co-authored-by: Eric Bishard <eric@httpjunkie.com> Co-authored-by: Owen Craston <owen.craston@consensys.net> Co-authored-by: tommasini <46944231+tommasini@users.noreply.github.com> Co-authored-by: Curtis David <Curtis.David7@gmail.com> Co-authored-by: Davide Brocchetto <davide.brocchetto@consensys.net> Co-authored-by: Matthew Grainger <46547583+Matt561@users.noreply.github.com> Co-authored-by: OGPoyraz <omergoktugpoyraz@gmail.com> Co-authored-by: Daniel <80175477+dan437@users.noreply.github.com> Co-authored-by: Jyoti Puri <jyotipuri@gmail.com> Co-authored-by: Prithpal Sooriya <prithpal.sooriya@consensys.net> Co-authored-by: Xiaoming Wang <7315988+dawnseeker8@users.noreply.github.com> Co-authored-by: Brian August Nguyen <brianacnguyen@gmail.com> Co-authored-by: Nico MASSART <NicolasMassart@users.noreply.github.com> Co-authored-by: Salim TOUBAL <salim.toubal@outlook.com> Co-authored-by: CW <chris.wilcox@consensys.net> Co-authored-by: Pedro Figueiredo <ganseki.figueiredo@gmail.com> Co-authored-by: digiwand <20778143+digiwand@users.noreply.github.com> Co-authored-by: Gustavo Antunes <17601467+gantunesr@users.noreply.github.com> Co-authored-by: Vinicius Stevam <45455812+vinistevam@users.noreply.github.com> Co-authored-by: EtherWizard33 <165834542+EtherWizard33@users.noreply.github.com> Co-authored-by: Bryan Fullam <bryan.fullam@consensys.net> Co-authored-by: Devin Stewart <49423028+Bigshmow@users.noreply.github.com> Co-authored-by: Ziad Saab <ziad.saab@gmail.com> Co-authored-by: Nicholas Smith <nick.smith@consensys.net> Co-authored-by: George Weiler <georgejweiler@gmail.com> Co-authored-by: Cal Leung <cal.leung@consensys.net> Co-authored-by: Amitabh Aggarwal <aggarwal.amitabh@gmail.com> Co-authored-by: Nick Gambino <35090461+gambinish@users.noreply.github.com> Co-authored-by: Gauthier Petetin <gauthierpetetin@hotmail.com> Co-authored-by: Frederik Bolding <frederik.bolding@gmail.com> Co-authored-by: infiniteflower <139582705+infiniteflower@users.noreply.github.com> Co-authored-by: Iván <ivan.canete@consensys.net> Co-authored-by: Daniel Cross <dan.s.cross@icloud.com> Co-authored-by: Owen Craston <owengc12@gmail.com> Co-authored-by: Kylan Hurt <6249205+smilingkylan@users.noreply.github.com> Co-authored-by: jake-perkins <128608287+jake-perkins@users.noreply.github.com> Co-authored-by: David Drazic <david@timechaser.org> [d9896e9](https://github.com/MetaMask/metamask-mobile/commit/d9896e9c901bb90608fdac11c6d964dd60e1a6d4) Co-authored-by: sethkfman <10342624+sethkfman@users.noreply.github.com> --- CHANGELOG.md | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 26f427c2d8d9..9a78e81b0686 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -88,6 +88,13 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - fix: Improve redesigned staking deposit confirmation navigation ([#13743](https://github.com/MetaMask/metamask-mobile/pull/13743)) - fix: fixes ramp quote selection test ([#13756](https://github.com/MetaMask/metamask-mobile/pull/13756)) +## [7.42.1] + +### Fixed + +- fix: Manage order for app services initialization ([#13912](https://github.com/MetaMask/metamask-mobile/pull/13912)) +- fix: #9487 Remove false vault back up failure log ([#14038](https://github.com/MetaMask/metamask-mobile/pull/14038)) + ## [7.42.0] ### Added @@ -5167,7 +5174,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#954](https://github.com/MetaMask/metamask-mobile/pull/954): Bugfix: onboarding navigation (#954) [Unreleased]: https://github.com/MetaMask/metamask-mobile/compare/v7.43.0...HEAD -[7.43.0]: https://github.com/MetaMask/metamask-mobile/compare/v7.42.0...v7.43.0 +[7.43.0]: https://github.com/MetaMask/metamask-mobile/compare/v7.42.1...v7.43.0 +[7.42.1]: https://github.com/MetaMask/metamask-mobile/compare/v7.42.0...v7.42.1 [7.42.0]: https://github.com/MetaMask/metamask-mobile/compare/v7.41.0...v7.42.0 [7.41.0]: https://github.com/MetaMask/metamask-mobile/compare/v7.40.0...v7.41.0 [7.40.0]: https://github.com/MetaMask/metamask-mobile/compare/v7.39.0...v7.40.0 From e2df128799d0822d516076eb9cb7615002f21f6d Mon Sep 17 00:00:00 2001 From: "runway-github[bot]" <73448015+runway-github[bot]@users.noreply.github.com> Date: Tue, 25 Mar 2025 18:21:52 +0000 Subject: [PATCH 067/473] chore(runway): cherry-pick fix: cp-7.43.0 correctly fetch token rates during onboarding (#14220) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - fix: cp-7.43.0 correctly fetch token rates during onboarding (#14207) <!-- Please submit this PR as a draft initially. Do not mark it as "Ready for review" until the template has been completely filled out, and PR status checks have passed at least once. --> ## **Description** After some debugging, we saw that when we detect new tokens and perform a balance update, if there is a rates request that is in-flight, we will abort other requests. This meant that we abort the newly detected tokens so will show the error seen in the bug. This doesn't happen that often, but is apparent during onboarding. We hypothesis that our recent performance improvements have reduced the number of times we stop/start polling services (including token rates polling), this uncovered this bug. This patch is similar to this core fix: https://github.com/MetaMask/core/pull/5531 ## **Related issues** Fixes: https://github.com/MetaMask/metamask-mobile/issues/13788 ## **Manual testing steps** See bug repro steps 1. Have a fresh install of the app 2. Onboard 3. switch to polygon ## **Screenshots/Recordings** <!-- If applicable, add screenshots and/or recordings to visualize the before and after of your change. --> ### **Before** <!-- [screenshots/recordings] --> ### **After** <!-- [screenshots/recordings] --> ## **Pre-merge author checklist** - [x] I’ve followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile Coding Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [x] I've completed the PR template to the best of my ability - [x] I’ve included tests if applicable - [x] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [x] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. ## **Pre-merge reviewer checklist** - [ ] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [ ] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots. [ce15808](https://github.com/MetaMask/metamask-mobile/commit/ce15808ef167e78376f3b51b65511fd10236e431) Co-authored-by: Prithpal Sooriya <prithpal.sooriya@consensys.net> --- .../@metamask+assets-controllers+51.0.2.patch | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/patches/@metamask+assets-controllers+51.0.2.patch b/patches/@metamask+assets-controllers+51.0.2.patch index 095ce3c740ee..75678db7c08a 100644 --- a/patches/@metamask+assets-controllers+51.0.2.patch +++ b/patches/@metamask+assets-controllers+51.0.2.patch @@ -166,3 +166,29 @@ index 7b0580e..e783176 100644 collection?: Collection; address?: string; attributes?: Attributes[]; +diff --git a/node_modules/@metamask/assets-controllers/dist/TokenRatesController.cjs b/node_modules/@metamask/assets-controllers/dist/TokenRatesController.cjs +index c6d715d..696a24b 100644 +--- a/node_modules/@metamask/assets-controllers/dist/TokenRatesController.cjs ++++ b/node_modules/@metamask/assets-controllers/dist/TokenRatesController.cjs +@@ -165,7 +165,7 @@ class TokenRatesController extends (0, polling_controller_1.StaticIntervalPollin + return; + } + const tokenAddresses = __classPrivateFieldGet(this, _TokenRatesController_instances, "m", _TokenRatesController_getTokenAddresses).call(this, chainId); +- const updateKey = `${chainId}:${nativeCurrency}`; ++ const updateKey = `${chainId}:${nativeCurrency}:${tokenAddresses.length}`; + if (updateKey in __classPrivateFieldGet(this, _TokenRatesController_inProcessExchangeRateUpdates, "f")) { + // This prevents redundant updates + // This promise is resolved after the in-progress update has finished, +diff --git a/node_modules/@metamask/assets-controllers/dist/TokenRatesController.mjs b/node_modules/@metamask/assets-controllers/dist/TokenRatesController.mjs +index 396f361..9469ba4 100644 +--- a/node_modules/@metamask/assets-controllers/dist/TokenRatesController.mjs ++++ b/node_modules/@metamask/assets-controllers/dist/TokenRatesController.mjs +@@ -162,7 +162,7 @@ export class TokenRatesController extends StaticIntervalPollingController() { + return; + } + const tokenAddresses = __classPrivateFieldGet(this, _TokenRatesController_instances, "m", _TokenRatesController_getTokenAddresses).call(this, chainId); +- const updateKey = `${chainId}:${nativeCurrency}`; ++ const updateKey = `${chainId}:${nativeCurrency}:${tokenAddresses.length}`; + if (updateKey in __classPrivateFieldGet(this, _TokenRatesController_inProcessExchangeRateUpdates, "f")) { + // This prevents redundant updates + // This promise is resolved after the in-progress update has finished, From 83a0a8998628610b1a027fae32667fc07990582c Mon Sep 17 00:00:00 2001 From: Matthew Grainger <46547583+Matt561@users.noreply.github.com> Date: Tue, 25 Mar 2025 20:52:05 +0000 Subject: [PATCH 068/473] cp-7.43.0: fix race condition for fresh installs causing geo block (#14234) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit <!-- Please submit this PR as a draft initially. Do not mark it as "Ready for review" until the template has been completely filled out, and PR status checks have passed at least once. --> ## **Description** This PR bumps the `@metamask/earn-controller` dependency version to `^0.10.0` and fixes a breaking change when calling `refreshPooledStakes` in the `usePooledStakes` hook. <!-- Write a short description of the changes included in this pull request, also include relevant motivation and context. Have in mind the following questions: 1. What is the reason for the change? 2. What is the improvement/solution? --> ## **Related issues** Jira Ticket: [STAKE-964: Fix geo-block race condition for fresh app installs](https://consensyssoftware.atlassian.net/browse/STAKE-964) ## **Manual testing steps** 1. Do a clean/fresh install of the application. 2. Onboard as you would normally to the wallet. 3. Once you've made it to the token list screen (home screen) click on Ethereum 4. You should **not** see the geo-block banner. If you don't have a pooled-staking position you should see the stake CTA. If you do have a pool-staked position you should see your staking balance. ## **Pre-merge author checklist** - [x] I’ve followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile Coding Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [x] I've completed the PR template to the best of my ability - [ ] I’ve included tests if applicable - [ ] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [x] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. ## **Pre-merge reviewer checklist** - [ ] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [ ] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots. --- app/components/UI/Stake/hooks/usePooledStakes.ts | 4 +++- package.json | 2 +- yarn.lock | 8 ++++---- 3 files changed, 8 insertions(+), 6 deletions(-) diff --git a/app/components/UI/Stake/hooks/usePooledStakes.ts b/app/components/UI/Stake/hooks/usePooledStakes.ts index de643c56ba03..9fe8b81397e1 100644 --- a/app/components/UI/Stake/hooks/usePooledStakes.ts +++ b/app/components/UI/Stake/hooks/usePooledStakes.ts @@ -26,7 +26,9 @@ const usePooledStakes = () => { setError(null); try { - await Engine.context.EarnController.refreshPooledStakes(true); + await Engine.context.EarnController.refreshPooledStakes({ + resetCache: true, + }); } catch (err) { setError('Failed to fetch pooled stakes'); } finally { diff --git a/package.json b/package.json index c10ae462f632..18f1bce9b547 100644 --- a/package.json +++ b/package.json @@ -162,7 +162,7 @@ "@metamask/composable-controller": "^11.0.0", "@metamask/controller-utils": "^11.3.0", "@metamask/design-tokens": "^5.0.0", - "@metamask/earn-controller": "^0.8.0", + "@metamask/earn-controller": "^0.10.0", "@metamask/eth-hd-keyring": "^9.0.0", "@metamask/eth-json-rpc-filters": "^9.0.0", "@metamask/eth-json-rpc-middleware": "^15.0.0", diff --git a/yarn.lock b/yarn.lock index 4b640a197833..3aa5ef5b4975 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4692,10 +4692,10 @@ resolved "https://registry.yarnpkg.com/@metamask/design-tokens/-/design-tokens-5.0.0.tgz#b749fc9d6556a0c2be159c6448b48796e0c14c6f" integrity sha512-dpTV8+wuGQNS69JdWamfuMM2EAIpKXDGjXG63tGRe1N27JVvq4l5p5dBtJtWzc061MVspm45EXK6jDrvlJyGDg== -"@metamask/earn-controller@^0.8.0": - version "0.8.0" - resolved "https://registry.npmjs.org/@metamask/earn-controller/-/earn-controller-0.8.0.tgz#766798c60468279a9f4081bd960a8c502238c0b9" - integrity sha512-USRDcBNZr3h7K05lvswizryEOJM2f1iQvbztWzwB6gVipA345lZqapiUuzhPYDH8Ej3T4yfbyRCG5BN4m6i6Sg== +"@metamask/earn-controller@^0.10.0": + version "0.10.0" + resolved "https://registry.npmjs.org/@metamask/earn-controller/-/earn-controller-0.10.0.tgz#890587d9e51e4fbaa8e85f09077c040e85a99462" + integrity sha512-vhywGCsaQphYyDwYksjk7+DZMQAeeC94lpDs6xUEV3xr0l1rG3NR5Ubqhl29oFwYsPV/0HGAbiGW9i3UYOBvkQ== dependencies: "@ethersproject/providers" "^5.7.0" "@metamask/base-controller" "^8.0.0" From 27208b0ac96f3dab6b2257da15ae55544a18af40 Mon Sep 17 00:00:00 2001 From: Aslau Mario-Daniel <marioaslau@gmail.com> Date: Tue, 25 Mar 2025 21:33:12 +0000 Subject: [PATCH 069/473] fix: Loading state bug (#14096) (#14235) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit <!-- Please submit this PR as a draft initially. Do not mark it as "Ready for review" until the template has been completely filled out, and PR status checks have passed at least once. --> ## **Description** This fixes our loading state bug, where the const was not evaluating correctly due to capitalization issues. We are trying to improve this loading state logic soon here: https://github.com/MetaMask/metamask-mobile/issues/13996 ## **Related issues** Fixes: ## **Manual testing steps** 1. Go to this page... 2. 3. ## **Screenshots/Recordings** ### **Before** ![Screenshot 2025-03-17 at 13 14 56](https://github.com/user-attachments/assets/1a9041af-2f71-4eb1-a777-55e40e8c87bc) ### **After** ![Screenshot 2025-03-18 at 8 21 40 AM](https://github.com/user-attachments/assets/470c224d-e2e7-4e54-91a7-89df62fd34de) ## **Pre-merge author checklist** - [x] I’ve followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile Coding Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [x] I've completed the PR template to the best of my ability - [x] I’ve included tests if applicable - [x] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [x] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. ## **Pre-merge reviewer checklist** - [ ] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [ ] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots. <!-- Please submit this PR as a draft initially. Do not mark it as "Ready for review" until the template has been completely filled out, and PR status checks have passed at least once. --> ## **Description** <!-- Write a short description of the changes included in this pull request, also include relevant motivation and context. Have in mind the following questions: 1. What is the reason for the change? 2. What is the improvement/solution? --> ## **Related issues** Fixes: ## **Manual testing steps** 1. Go to this page... 2. 3. ## **Screenshots/Recordings** <!-- If applicable, add screenshots and/or recordings to visualize the before and after of your change. --> ### **Before** <!-- [screenshots/recordings] --> ### **After** <!-- [screenshots/recordings] --> ## **Pre-merge author checklist** - [ ] I’ve followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile Coding Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [ ] I've completed the PR template to the best of my ability - [ ] I’ve included tests if applicable - [ ] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [ ] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. ## **Pre-merge reviewer checklist** - [ ] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [ ] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots. Co-authored-by: Nick Gambino <35090461+gambinish@users.noreply.github.com> --- app/components/UI/AssetElement/index.tsx | 7 +++++-- app/components/UI/Tokens/constants.ts | 1 + 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/app/components/UI/AssetElement/index.tsx b/app/components/UI/AssetElement/index.tsx index ff39a4eac1ac..84ef2f351e14 100644 --- a/app/components/UI/AssetElement/index.tsx +++ b/app/components/UI/AssetElement/index.tsx @@ -8,6 +8,7 @@ import generateTestId from '../../../../wdio/utils/generateTestId'; import { getAssetTestId } from '../../../../wdio/screen-objects/testIDs/Screens/WalletView.testIds'; import { TOKEN_BALANCE_LOADING, + TOKEN_BALANCE_LOADING_UPPERCASE, TOKEN_RATE_UNDEFINED, } from '../Tokens/constants'; import { Colors } from '../../../util/theme/models'; @@ -103,7 +104,8 @@ const AssetElement: React.FC<AssetElementProps> = ({ length={SensitiveTextLength.Medium} testID={FIAT_BALANCE_TEST_ID} > - {balance === TOKEN_BALANCE_LOADING ? ( + {balance === TOKEN_BALANCE_LOADING || + balance === TOKEN_BALANCE_LOADING_UPPERCASE ? ( <SkeletonText thin style={styles.skeleton} /> ) : ( balance @@ -118,7 +120,8 @@ const AssetElement: React.FC<AssetElementProps> = ({ length={SensitiveTextLength.Short} testID={MAIN_BALANCE_TEST_ID} > - {mainBalance === TOKEN_BALANCE_LOADING ? ( + {mainBalance === TOKEN_BALANCE_LOADING || + mainBalance === TOKEN_BALANCE_LOADING_UPPERCASE ? ( <SkeletonText thin style={styles.skeleton} /> ) : ( mainBalance diff --git a/app/components/UI/Tokens/constants.ts b/app/components/UI/Tokens/constants.ts index ee3d2ef78c14..e6c50e264576 100644 --- a/app/components/UI/Tokens/constants.ts +++ b/app/components/UI/Tokens/constants.ts @@ -1,3 +1,4 @@ export const TOKEN_RATE_UNDEFINED = 'tokenRateUndefined'; export const TOKEN_BALANCE_LOADING = 'tokenBalanceLoading'; +export const TOKEN_BALANCE_LOADING_UPPERCASE = 'TOKENBALANCELOADING'; export const DECIMALS_TO_SHOW = 2; From 01e3767917dcc805be2867a2fb3d260313c98be9 Mon Sep 17 00:00:00 2001 From: "runway-github[bot]" <73448015+runway-github[bot]@users.noreply.github.com> Date: Tue, 25 Mar 2025 22:56:36 +0000 Subject: [PATCH 070/473] chore(runway): cherry-pick fix: bump `@metamask/keyring-controller` to `^19.2.2` (#14236) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - fix: bump `@metamask/keyring-controller` to `^19.2.2` (#14229) <!-- Please submit this PR as a draft initially. Do not mark it as "Ready for review" until the template has been completely filled out, and PR status checks have passed at least once. --> ## **Description** <!-- Write a short description of the changes included in this pull request, also include relevant motivation and context. Have in mind the following questions: 1. What is the reason for the change? 2. What is the improvement/solution? --> `@metamask/keyring-controller` is being updated to 19.2.2 including the following changes: ```markdown ## [19.2.2] ### Fixed - Fixed duplication of unsupported keyrings ([#5535](https://github.com/MetaMask/core/pull/5535)) - Enforce keyrings metadata alignment when unlocking existing vault ([#5535](https://github.com/MetaMask/core/pull/5535)) - Fixed frozen object mutation attempt when updating metadata ([#5535](https://github.com/MetaMask/core/pull/5535)) ## [19.2.1] ### Changed - Bump `@metamask/keyring-api"` from `^17.0.0` to `^17.2.0` ([#5366](https://github.com/MetaMask/core/pull/5366)) - Bump `@metamask/keyring-internal-api` from `^4.0.1` to `^4.0.3` ([#5356](https://github.com/MetaMask/core/pull/5356)), ([#5366](https://github.com/MetaMask/core/pull/5366)) ### Fixed - Ensure authorization contract address is provided ([#5353](https://github.com/MetaMask/core/pull/5353)) ``` ## **Related issues** Fixes: ## **Manual testing steps** 1. Go to this page... 2. 3. ## **Screenshots/Recordings** <!-- If applicable, add screenshots and/or recordings to visualize the before and after of your change. --> ### **Before** <!-- [screenshots/recordings] --> ### **After** <!-- [screenshots/recordings] --> ## **Pre-merge author checklist** - [ ] I’ve followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile Coding Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [ ] I've completed the PR template to the best of my ability - [ ] I’ve included tests if applicable - [ ] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [ ] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. ## **Pre-merge reviewer checklist** - [ ] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [ ] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots. [99faccf](https://github.com/MetaMask/metamask-mobile/commit/99faccf54f2669fe4207510cb67b5609a0826f7e) Co-authored-by: Michele Esposito <34438276+mikesposito@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 18f1bce9b547..c06385251ab1 100644 --- a/package.json +++ b/package.json @@ -179,7 +179,7 @@ "@metamask/json-rpc-middleware-stream": "^8.0.6", "@metamask/key-tree": "^10.0.2", "@metamask/keyring-api": "^17.2.1", - "@metamask/keyring-controller": "^19.2.0", + "@metamask/keyring-controller": "^19.2.2", "@metamask/keyring-internal-api": "^4.0.3", "@metamask/keyring-snap-client": "^4.0.1", "@metamask/logging-controller": "^6.0.4", diff --git a/yarn.lock b/yarn.lock index 3aa5ef5b4975..e66c69657dcf 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5031,10 +5031,10 @@ "@metamask/utils" "^11.1.0" bech32 "^2.0.0" -"@metamask/keyring-controller@^19.2.0": - version "19.2.1" - resolved "https://registry.yarnpkg.com/@metamask/keyring-controller/-/keyring-controller-19.2.1.tgz#47be936b39e8ac822d759b00f495cff067f857c7" - integrity sha512-Q0d3bM9SieJzfpMMYLzaVjN+EQNApnddTdufsYbzRYqBV8b5cdFCMoYapQvDFL/nPqBO9e4bXpei6ka6kiusBQ== +"@metamask/keyring-controller@^19.2.2": + version "19.2.2" + resolved "https://registry.yarnpkg.com/@metamask/keyring-controller/-/keyring-controller-19.2.2.tgz#07ac7c350c8209c5d15e16ad8909d6cce9d88f6a" + integrity sha512-xbQFWMXjmDQr2IoEp2XuWHil4nREyQ8cqYF4/K6RZR76JfdziyAsJIsUknLcm1h9DwoJHDs2EpX6UaPLeccT0A== dependencies: "@ethereumjs/util" "^8.1.0" "@keystonehq/metamask-airgapped-keyring" "^0.14.1" From 931bae0a8352f784c5ae81f7bff45f737a7dcc2f Mon Sep 17 00:00:00 2001 From: Aslau Mario-Daniel <marioaslau@gmail.com> Date: Tue, 25 Mar 2025 23:17:55 +0000 Subject: [PATCH 071/473] fix: ramps: change token to tap and confirm (#14197) (#14238) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit <!-- Please submit this PR as a draft initially. Do not mark it as "Ready for review" until the template has been completely filled out, and PR status checks have passed at least once. --> ## **Description** Fix flaky test on bitrise worflow [run_tag_smoke_ramps_android](https://app.bitrise.io/build/4b53c128-c163-45c6-a504-54144add2918). - Fix `./e2e/specs/ramps/onramp.spec.js` to select LINK token since DAI is no longer shown at top of default token list - Quarantine `./e2e/specs/ramps/deeplink-to-buy-flow.spec.j` test <!-- Write a short description of the changes included in this pull request, also include relevant motivation and context. Have in mind the following questions: 1. What is the reason for the change? 2. What is the improvement/solution? --> ## **Related issues** Fixes: [run_tag_smoke_ramps_android](https://app.bitrise.io/build/4b53c128-c163-45c6-a504-54144add2918) ## **Manual testing steps** 1. Go to this page... 2. 3. ## **Screenshots/Recordings** <!-- If applicable, add screenshots and/or recordings to visualize the before and after of your change. --> ### **Before** <!-- [screenshots/recordings] --> https://app.bitrise.io/build/32e43f51-cb83-41b0-98be-512a4a30a7d8 ### **After** [run_tag_smoke_ramps_android](https://app.bitrise.io/build/4b53c128-c163-45c6-a504-54144add2918) <!-- [screenshots/recordings] --> ## **Pre-merge author checklist** - [x] I’ve followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile Coding Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [x] I've completed the PR template to the best of my ability - [x] I’ve included tests if applicable - [ ] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [x] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. ## **Pre-merge reviewer checklist** - [x] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [x] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots. <!-- Please submit this PR as a draft initially. Do not mark it as "Ready for review" until the template has been completely filled out, and PR status checks have passed at least once. --> ## **Description** <!-- Write a short description of the changes included in this pull request, also include relevant motivation and context. Have in mind the following questions: 1. What is the reason for the change? 2. What is the improvement/solution? --> ## **Related issues** Fixes: ## **Manual testing steps** 1. Go to this page... 2. 3. ## **Screenshots/Recordings** <!-- If applicable, add screenshots and/or recordings to visualize the before and after of your change. --> ### **Before** <!-- [screenshots/recordings] --> ### **After** <!-- [screenshots/recordings] --> ## **Pre-merge author checklist** - [ ] I’ve followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile Coding Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [ ] I've completed the PR template to the best of my ability - [ ] I’ve included tests if applicable - [ ] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [ ] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. ## **Pre-merge reviewer checklist** - [ ] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [ ] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots. Co-authored-by: CW <chris.wilcox@consensys.net> --- e2e/specs/{ramps => quarantine}/deeplink-to-buy-flow.spec.js | 0 e2e/specs/ramps/onramp.spec.js | 4 ++-- 2 files changed, 2 insertions(+), 2 deletions(-) rename e2e/specs/{ramps => quarantine}/deeplink-to-buy-flow.spec.js (100%) diff --git a/e2e/specs/ramps/deeplink-to-buy-flow.spec.js b/e2e/specs/quarantine/deeplink-to-buy-flow.spec.js similarity index 100% rename from e2e/specs/ramps/deeplink-to-buy-flow.spec.js rename to e2e/specs/quarantine/deeplink-to-buy-flow.spec.js diff --git a/e2e/specs/ramps/onramp.spec.js b/e2e/specs/ramps/onramp.spec.js index dc471f0f4e95..a686de369fb4 100644 --- a/e2e/specs/ramps/onramp.spec.js +++ b/e2e/specs/ramps/onramp.spec.js @@ -75,14 +75,14 @@ describe(SmokeRamps('Buy Crypto'), () => { await BuildQuoteView.tapCurrencySelector(); await SelectCurrencyView.tapCurrencyOption('Euro'); await BuildQuoteView.tapTokenDropdown('Ethereum'); - await TokenSelectBottomSheet.tapTokenByName('DAI'); + await TokenSelectBottomSheet.tapTokenByName('LINK'); await BuildQuoteView.tapRegionSelector(); await SelectRegionView.tapRegionOption('France'); await BuildQuoteView.tapPaymentMethodDropdown('Debit or Credit'); await SelectPaymentMethodView.tapPaymentMethodOption(paymentMethod); await Assertions.checkIfTextIsDisplayed('€0'); await Assertions.checkIfTextIsNotDisplayed('$0'); - await Assertions.checkIfTextIsDisplayed('Dai Stablecoin'); + await Assertions.checkIfTextIsDisplayed('Chainlink'); await Assertions.checkIfTextIsNotDisplayed('Ethereum'); await Assertions.checkIfTextIsNotDisplayed('Debit or Credit'); await Assertions.checkIfTextIsDisplayed(paymentMethod); From c31b444a5bcbebf3b19046035e5aa79fce82cb6b Mon Sep 17 00:00:00 2001 From: Aslau Mario-Daniel <marioaslau@gmail.com> Date: Tue, 25 Mar 2025 23:18:04 +0000 Subject: [PATCH 072/473] test: Fix Swap smoke tests (#14186) (#14239) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit <!-- Please submit this PR as a draft initially. Do not mark it as "Ready for review" until the template has been completely filled out, and PR status checks have passed at least once. --> ## **Description** <!-- Small fix for Swap smoke tests --> ## **Related issues** Fixes: ## **Manual testing steps** 1. Go to this page... 2. 3. ## **Screenshots/Recordings** <!-- If applicable, add screenshots and/or recordings to visualize the before and after of your change. --> ### **Before** <!-- [screenshots/recordings] --> ### **After** <!-- [screenshots/recordings] --> ## **Pre-merge author checklist** - [x] I’ve followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile Coding Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [x] I've completed the PR template to the best of my ability - [ ] I’ve included tests if applicable - [ ] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [ ] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. ## **Pre-merge reviewer checklist** - [x] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [x] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots. <!-- Please submit this PR as a draft initially. Do not mark it as "Ready for review" until the template has been completely filled out, and PR status checks have passed at least once. --> ## **Description** <!-- Write a short description of the changes included in this pull request, also include relevant motivation and context. Have in mind the following questions: 1. What is the reason for the change? 2. What is the improvement/solution? --> ## **Related issues** Fixes: ## **Manual testing steps** 1. Go to this page... 2. 3. ## **Screenshots/Recordings** <!-- If applicable, add screenshots and/or recordings to visualize the before and after of your change. --> ### **Before** <!-- [screenshots/recordings] --> ### **After** <!-- [screenshots/recordings] --> ## **Pre-merge author checklist** - [ ] I’ve followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile Coding Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [ ] I've completed the PR template to the best of my ability - [ ] I’ve included tests if applicable - [ ] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [ ] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. ## **Pre-merge reviewer checklist** - [ ] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [ ] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots. Co-authored-by: Davide Brocchetto <davide.brocchetto@consensys.net> --- e2e/specs/swaps/swap-action-regression.spec.js | 2 +- e2e/specs/swaps/swap-action-smoke.spec.js | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/e2e/specs/swaps/swap-action-regression.spec.js b/e2e/specs/swaps/swap-action-regression.spec.js index 1bf618b8ad38..7c206516a3ff 100644 --- a/e2e/specs/swaps/swap-action-regression.spec.js +++ b/e2e/specs/swaps/swap-action-regression.spec.js @@ -117,7 +117,7 @@ describe(Regression('Multiple Swaps from Actions'), () => { await QuoteView.tapOnSelectSourceToken(); await QuoteView.tapSearchToken(); await QuoteView.typeSearchToken(sourceTokenSymbol); - + await TestHelpers.delay(2000); await QuoteView.selectToken(sourceTokenSymbol); } await QuoteView.enterSwapAmount(quantity); diff --git a/e2e/specs/swaps/swap-action-smoke.spec.js b/e2e/specs/swaps/swap-action-smoke.spec.js index 82183ea5d83e..2fc7ea026af0 100644 --- a/e2e/specs/swaps/swap-action-smoke.spec.js +++ b/e2e/specs/swaps/swap-action-smoke.spec.js @@ -117,8 +117,8 @@ describe(SmokeSwaps('Swap from Actions'), () => { await QuoteView.tapOnSelectSourceToken(); await QuoteView.tapSearchToken(); await QuoteView.typeSearchToken(sourceTokenSymbol); - - await QuoteView.selectToken(sourceTokenSymbol); + await TestHelpers.delay(2000); + await QuoteView.selectToken(sourceTokenSymbol, 2); } await QuoteView.enterSwapAmount(quantity); @@ -128,7 +128,7 @@ describe(SmokeSwaps('Swap from Actions'), () => { await QuoteView.tapSearchToken(); await QuoteView.typeSearchToken(destTokenSymbol); await TestHelpers.delay(2000); - await QuoteView.selectToken(destTokenSymbol); + await QuoteView.selectToken(destTokenSymbol, 2); } else await QuoteView.selectToken(destTokenSymbol, firstElement); //Make sure slippage is zero for wrapped tokens From 66b33ab6e31cbc9a47d46eddc43ebc5106e7d2bf Mon Sep 17 00:00:00 2001 From: metamaskbot <metamaskbot@users.noreply.github.com> Date: Tue, 25 Mar 2025 23:24:56 +0000 Subject: [PATCH 073/473] Bump version number to 1651 --- android/app/build.gradle | 2 +- bitrise.yml | 4 ++-- ios/MetaMask.xcodeproj/project.pbxproj | 12 ++++++------ 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/android/app/build.gradle b/android/app/build.gradle index 9ebfd5929071..171790c5097a 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -179,7 +179,7 @@ android { minSdkVersion rootProject.ext.minSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion versionName "7.43.0" - versionCode 1649 + versionCode 1651 testBuildType System.getProperty('testBuildType', 'debug') missingDimensionStrategy 'react-native-camera', 'general' testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" diff --git a/bitrise.yml b/bitrise.yml index 28adcf06db4c..de68193e75b0 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -1832,13 +1832,13 @@ app: VERSION_NAME: 7.43.0 - opts: is_expand: false - VERSION_NUMBER: 1649 + VERSION_NUMBER: 1651 - opts: is_expand: false FLASK_VERSION_NAME: 7.43.0 - opts: is_expand: false - FLASK_VERSION_NUMBER: 1649 + FLASK_VERSION_NUMBER: 1651 - opts: is_expand: false ANDROID_APK_LINK: '' diff --git a/ios/MetaMask.xcodeproj/project.pbxproj b/ios/MetaMask.xcodeproj/project.pbxproj index df8a0032cd64..375d3111ed1c 100644 --- a/ios/MetaMask.xcodeproj/project.pbxproj +++ b/ios/MetaMask.xcodeproj/project.pbxproj @@ -1437,7 +1437,7 @@ CODE_SIGN_IDENTITY = "Apple Development"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1649; + CURRENT_PROJECT_VERSION = 1651; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = 48XVW22RCG; @@ -1506,7 +1506,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMask.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1649; + CURRENT_PROJECT_VERSION = 1651; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 48XVW22RCG; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 48XVW22RCG; @@ -1571,7 +1571,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMaskDebug.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1649; + CURRENT_PROJECT_VERSION = 1651; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = 48XVW22RCG; @@ -1637,7 +1637,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMask.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1649; + CURRENT_PROJECT_VERSION = 1651; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 48XVW22RCG; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 48XVW22RCG; @@ -1796,7 +1796,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMaskDebug.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1649; + CURRENT_PROJECT_VERSION = 1651; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = 48XVW22RCG; @@ -1865,7 +1865,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMask.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1649; + CURRENT_PROJECT_VERSION = 1651; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 48XVW22RCG; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 48XVW22RCG; From 5606df6ed7f706513a71e6197d0b7a538c0ac8d4 Mon Sep 17 00:00:00 2001 From: metamaskbot <metamaskbot@users.noreply.github.com> Date: Thu, 27 Mar 2025 16:05:30 +0000 Subject: [PATCH 074/473] Bump version number to 1656 --- android/app/build.gradle | 2 +- bitrise.yml | 4 ++-- ios/MetaMask.xcodeproj/project.pbxproj | 12 ++++++------ 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/android/app/build.gradle b/android/app/build.gradle index 171790c5097a..87807ad8f1d7 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -179,7 +179,7 @@ android { minSdkVersion rootProject.ext.minSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion versionName "7.43.0" - versionCode 1651 + versionCode 1656 testBuildType System.getProperty('testBuildType', 'debug') missingDimensionStrategy 'react-native-camera', 'general' testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" diff --git a/bitrise.yml b/bitrise.yml index de68193e75b0..a7e4be3258b0 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -1832,13 +1832,13 @@ app: VERSION_NAME: 7.43.0 - opts: is_expand: false - VERSION_NUMBER: 1651 + VERSION_NUMBER: 1656 - opts: is_expand: false FLASK_VERSION_NAME: 7.43.0 - opts: is_expand: false - FLASK_VERSION_NUMBER: 1651 + FLASK_VERSION_NUMBER: 1656 - opts: is_expand: false ANDROID_APK_LINK: '' diff --git a/ios/MetaMask.xcodeproj/project.pbxproj b/ios/MetaMask.xcodeproj/project.pbxproj index 375d3111ed1c..41cc8485a09f 100644 --- a/ios/MetaMask.xcodeproj/project.pbxproj +++ b/ios/MetaMask.xcodeproj/project.pbxproj @@ -1437,7 +1437,7 @@ CODE_SIGN_IDENTITY = "Apple Development"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1651; + CURRENT_PROJECT_VERSION = 1656; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = 48XVW22RCG; @@ -1506,7 +1506,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMask.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1651; + CURRENT_PROJECT_VERSION = 1656; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 48XVW22RCG; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 48XVW22RCG; @@ -1571,7 +1571,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMaskDebug.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1651; + CURRENT_PROJECT_VERSION = 1656; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = 48XVW22RCG; @@ -1637,7 +1637,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMask.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1651; + CURRENT_PROJECT_VERSION = 1656; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 48XVW22RCG; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 48XVW22RCG; @@ -1796,7 +1796,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMaskDebug.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1651; + CURRENT_PROJECT_VERSION = 1656; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = 48XVW22RCG; @@ -1865,7 +1865,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMask.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1651; + CURRENT_PROJECT_VERSION = 1656; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 48XVW22RCG; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 48XVW22RCG; From 952356667a24bad5c7f4cf5148812cefdcd57b9f Mon Sep 17 00:00:00 2001 From: metamaskbot <metamaskbot@users.noreply.github.com> Date: Thu, 27 Mar 2025 14:06:21 -0600 Subject: [PATCH 075/473] fix lint errors --- .../UI/Stake/hooks/useVaultApyAverages.tsx | 1 + app/components/UI/Stake/hooks/useVaultData.ts | 60 ------ .../AccountNetworkInfoCollapsed.styles.ts | 5 - .../TypedSignDecoded.test.tsx | 10 - .../components/ValueDisplay/ValueDisplay.tsx | 8 - app/core/Engine/Engine.ts | 16 -- app/core/redux/slices/staking/index.test.ts | 187 ------------------ app/core/redux/slices/staking/index.ts | 108 ---------- 8 files changed, 1 insertion(+), 394 deletions(-) delete mode 100644 app/components/UI/Stake/hooks/useVaultData.ts delete mode 100644 app/core/redux/slices/staking/index.test.ts delete mode 100644 app/core/redux/slices/staking/index.ts diff --git a/app/components/UI/Stake/hooks/useVaultApyAverages.tsx b/app/components/UI/Stake/hooks/useVaultApyAverages.tsx index 4f139ba1f364..0b2df5f9a67b 100644 --- a/app/components/UI/Stake/hooks/useVaultApyAverages.tsx +++ b/app/components/UI/Stake/hooks/useVaultApyAverages.tsx @@ -2,6 +2,7 @@ import { useState } from 'react'; import { useSelector } from 'react-redux'; import Engine from '../../../../core/Engine'; import { pooledStakingSelectors } from '../../../../selectors/earnController'; +import { DEFAULT_VAULT_APY_AVERAGES } from '../constants'; const useVaultApyAverages = () => { const [isLoading, setIsLoading] = useState(false); diff --git a/app/components/UI/Stake/hooks/useVaultData.ts b/app/components/UI/Stake/hooks/useVaultData.ts deleted file mode 100644 index 42330831554c..000000000000 --- a/app/components/UI/Stake/hooks/useVaultData.ts +++ /dev/null @@ -1,60 +0,0 @@ -import { useSelector, useDispatch } from 'react-redux'; -import { useEffect, useCallback, useState } from 'react'; -import { selectEvmChainId } from '../../../../selectors/networkController'; -import { hexToNumber } from '@metamask/utils'; -import { - selectVaultData, - setVaultData, -} from '../../../../core/redux/slices/staking'; -import { stakingApiService } from '../sdk/stakeSdkProvider'; - -const useVaultData = () => { - const dispatch = useDispatch(); - const chainId = useSelector(selectEvmChainId); - const { vaultData } = useSelector(selectVaultData); - - const [isLoading, setIsLoading] = useState(false); - const [error, setError] = useState<string | null>(null); - - const fetchVaultData = useCallback(async () => { - if (!stakingApiService) return; - - setIsLoading(true); - setError(null); - - try { - const numericChainId = hexToNumber(chainId); - const vaultDataResponse = await stakingApiService.getVaultData( - numericChainId, - ); - dispatch(setVaultData(vaultDataResponse)); - } catch (err) { - setError('Failed to fetch vault data'); - } finally { - setIsLoading(false); - } - }, [chainId, dispatch]); - - useEffect(() => { - fetchVaultData(); - }, [fetchVaultData]); - - const apy = vaultData?.apy || '0'; - const annualRewardRatePercentage = apy ? parseFloat(apy) : 0; - const annualRewardRateDecimal = annualRewardRatePercentage / 100; - - const annualRewardRate = - annualRewardRatePercentage === 0 - ? '0%' - : `${annualRewardRatePercentage.toFixed(1)}%`; - - return { - vaultData, - isLoadingVaultData: isLoading, - error, - annualRewardRate, - annualRewardRateDecimal, - }; -}; - -export default useVaultData; diff --git a/app/components/Views/confirmations/components/Confirm/AccountNetworkInfo/AccountNetworkInfoCollapsed/AccountNetworkInfoCollapsed.styles.ts b/app/components/Views/confirmations/components/Confirm/AccountNetworkInfo/AccountNetworkInfoCollapsed/AccountNetworkInfoCollapsed.styles.ts index c12fd89a72e6..3f7a12176deb 100644 --- a/app/components/Views/confirmations/components/Confirm/AccountNetworkInfo/AccountNetworkInfoCollapsed/AccountNetworkInfoCollapsed.styles.ts +++ b/app/components/Views/confirmations/components/Confirm/AccountNetworkInfo/AccountNetworkInfoCollapsed/AccountNetworkInfoCollapsed.styles.ts @@ -30,11 +30,6 @@ const styleSheet = (params: { theme: Theme }) => { marginStart: 8, paddingHorizontal: 12, }, - accountLabel: { - borderRadius: 16, - marginStart: 8, - paddingHorizontal: 12, - }, networkName: { color: theme.colors.text.default, ...fontStyles.normal, diff --git a/app/components/Views/confirmations/components/Confirm/Info/TypedSignV3V4/Simulation/TypedSignDecoded/TypedSignDecoded.test.tsx b/app/components/Views/confirmations/components/Confirm/Info/TypedSignV3V4/Simulation/TypedSignDecoded/TypedSignDecoded.test.tsx index 06e1d8aa45fe..aa9c3be395fc 100644 --- a/app/components/Views/confirmations/components/Confirm/Info/TypedSignV3V4/Simulation/TypedSignDecoded/TypedSignDecoded.test.tsx +++ b/app/components/Views/confirmations/components/Confirm/Info/TypedSignV3V4/Simulation/TypedSignDecoded/TypedSignDecoded.test.tsx @@ -36,16 +36,6 @@ const stateChangesRevoke = [ }, ]; -const stateChangesRevoke = [ - { - assetType: 'ERC20', - changeType: DecodingDataChangeType.Revoke, - address: '0x3fc91a3afd70395cd496c647d5a6cc9d4b2b7fad', - amount: '12345', - contractAddress: '0x6b175474e89094c44da98b954eedeac495271d0f', - }, -]; - const stateChangesListingERC1155: DecodingDataStateChanges = [ { assetType: 'NATIVE', diff --git a/app/components/Views/confirmations/components/Confirm/Info/TypedSignV3V4/Simulation/components/ValueDisplay/ValueDisplay.tsx b/app/components/Views/confirmations/components/Confirm/Info/TypedSignV3V4/Simulation/components/ValueDisplay/ValueDisplay.tsx index a6e24358e493..ab1387fde6ee 100644 --- a/app/components/Views/confirmations/components/Confirm/Info/TypedSignV3V4/Simulation/components/ValueDisplay/ValueDisplay.tsx +++ b/app/components/Views/confirmations/components/Confirm/Info/TypedSignV3V4/Simulation/components/ValueDisplay/ValueDisplay.tsx @@ -177,14 +177,6 @@ const SimulationValueDisplay: React.FC<SimulationValueDisplayParams> = ({ tokenId, ); - // Avoid empty button pill container - const showValueButtonPill = Boolean( - isPendingTokenDetails || - shouldShowUnlimitedValue || - tokenValue !== null || - tokenId, - ); - function handlePressTokenValue() { setHasValueModalOpen(true); } diff --git a/app/core/Engine/Engine.ts b/app/core/Engine/Engine.ts index 55056337599b..0d721b004a98 100644 --- a/app/core/Engine/Engine.ts +++ b/app/core/Engine/Engine.ts @@ -327,21 +327,6 @@ export class Engine { networkController.initializeProvider(); - const multichainNetworkControllerMessenger = - this.controllerMessenger.getRestricted({ - name: 'MultichainNetworkController', - allowedActions: [ - 'NetworkController:setActiveNetwork', - 'NetworkController:getState', - ], - allowedEvents: ['AccountsController:selectedAccountChange'], - }); - - const multichainNetworkController = createMultichainNetworkController({ - messenger: multichainNetworkControllerMessenger, - initialState: initialState.MultichainNetworkController, - }); - const assetsContractController = new AssetsContractController({ messenger: this.controllerMessenger.getRestricted({ name: 'AssetsContractController', @@ -1281,7 +1266,6 @@ export class Engine { UserStorageController: userStorageController, NotificationServicesController: notificationServicesController, NotificationServicesPushController: notificationServicesPushController, - SnapInterfaceController: snapInterfaceController, ///: END:ONLY_INCLUDE_IF AccountsController: accountsController, PPOMController: new PPOMController({ diff --git a/app/core/redux/slices/staking/index.test.ts b/app/core/redux/slices/staking/index.test.ts deleted file mode 100644 index 971a636117a3..000000000000 --- a/app/core/redux/slices/staking/index.test.ts +++ /dev/null @@ -1,187 +0,0 @@ -import reducer, { - setPooledStakes, - setVaultData, - setStakingEligibility, - selectPooledStakesData, - selectVaultData, - selectStakingEligibility, - setVaultApys, - setVaultApyAverages, - selectVaultApys, - selectVaultApyAverages, -} from '.'; -import { - MOCK_GET_POOLED_STAKES_API_RESPONSE, - MOCK_GET_VAULT_RESPONSE, -} from '../../../../components/UI/Stake/__mocks__/mockData'; -import type { - PooledStake, - VaultDailyApy, - VaultData, -} from '@metamask/stake-sdk'; -import type { RootState } from '../../../../reducers'; -import { - MOCK_VAULT_APY_AVERAGES, - MOCK_VAULT_APYS_ONE_YEAR, -} from '../../../../components/UI/Stake/components/PoolStakingLearnMoreModal/mockVaultRewards'; -import { DEFAULT_VAULT_APY_AVERAGES } from '../../../../components/UI/Stake/constants'; - -describe('PooledStaking', () => { - const initialState = { - pooledStakes: {} as PooledStake, - exchangeRate: '', - vaultData: {} as VaultData, - isEligible: false, - vaultApyAverages: DEFAULT_VAULT_APY_AVERAGES, - vaultApys: [] as VaultDailyApy[], - }; - - const mockRootState: Partial<RootState> = { - staking: { - pooledStakes: MOCK_GET_POOLED_STAKES_API_RESPONSE.accounts[0], - exchangeRate: MOCK_GET_POOLED_STAKES_API_RESPONSE.exchangeRate, - vaultData: MOCK_GET_VAULT_RESPONSE, - isEligible: true, - vaultApyAverages: MOCK_VAULT_APY_AVERAGES, - vaultApys: MOCK_VAULT_APYS_ONE_YEAR, - }, - }; - - afterEach(() => { - jest.clearAllMocks(); - }); - - describe('when handling initial state', () => { - it('returns default initial state', () => { - const action = { type: 'unknown' }; - - const state = reducer(undefined, action); - - expect(state).toEqual(initialState); - }); - }); - - describe('when setting pooled stakes', () => { - it('updates pooled stakes and exchange rate', () => { - const { accounts, exchangeRate } = MOCK_GET_POOLED_STAKES_API_RESPONSE; - const pooledStakes = accounts[0]; - - const state = reducer( - initialState, - setPooledStakes({ pooledStakes, exchangeRate }), - ); - - expect(state.pooledStakes).toEqual(pooledStakes); - expect(state.exchangeRate).toEqual(exchangeRate); - expect(state.pooledStakes.assets).toEqual('5791332670714232000'); - }); - }); - - describe('when setting vault data', () => { - it('updates vault data', () => { - const state = reducer( - initialState, - setVaultData(MOCK_GET_VAULT_RESPONSE), - ); - - expect(state.vaultData).toEqual(MOCK_GET_VAULT_RESPONSE); - expect(state.vaultData.apy).toEqual( - '2.853065141088762750393474836309926', - ); - }); - }); - - describe('when setting staking eligibility', () => { - it('updates eligibility to true', () => { - const state = reducer(initialState, setStakingEligibility(true)); - - expect(state.isEligible).toEqual(true); - }); - - it('updates eligibility to false', () => { - const stateWithEligibility = { - ...initialState, - isEligible: true, - }; - - const state = reducer(stateWithEligibility, setStakingEligibility(false)); - - expect(state.isEligible).toEqual(false); - }); - }); - - describe('when setting vault apys', () => { - it('updates vaultApys', () => { - const state = reducer( - initialState, - setVaultApys(MOCK_VAULT_APYS_ONE_YEAR), - ); - - expect(state.vaultApys).toEqual(MOCK_VAULT_APYS_ONE_YEAR); - }); - }); - - describe('when settings vault apy averages', () => { - it('updates vaultApyAverages', () => { - const state = reducer( - initialState, - setVaultApyAverages(MOCK_VAULT_APY_AVERAGES), - ); - - expect(state.vaultApyAverages).toEqual(MOCK_VAULT_APY_AVERAGES); - }); - }); - - describe('selectors', () => { - describe('when selecting pooled stakes data', () => { - it('returns pooled stakes and exchange rate', () => { - const result = selectPooledStakesData(mockRootState as RootState); - - expect(result).toEqual({ - pooledStakesData: MOCK_GET_POOLED_STAKES_API_RESPONSE.accounts[0], - exchangeRate: MOCK_GET_POOLED_STAKES_API_RESPONSE.exchangeRate, - }); - }); - }); - - describe('when selecting vault data', () => { - it('returns vault information', () => { - const result = selectVaultData(mockRootState as RootState); - - expect(result).toEqual({ - vaultData: MOCK_GET_VAULT_RESPONSE, - }); - }); - }); - - describe('when selecting staking eligibility', () => { - it('returns eligibility status', () => { - const result = selectStakingEligibility(mockRootState as RootState); - - expect(result).toEqual({ - isEligible: true, - }); - }); - }); - - describe('when selecting vault apys', () => { - it('return vault apys', () => { - const result = selectVaultApys(mockRootState as RootState); - - expect(result).toEqual({ - vaultApys: MOCK_VAULT_APYS_ONE_YEAR, - }); - }); - }); - - describe('when selecting vault apy averages', () => { - it('return vault apy averages', () => { - const result = selectVaultApyAverages(mockRootState as RootState); - - expect(result).toEqual({ - vaultApyAverages: MOCK_VAULT_APY_AVERAGES, - }); - }); - }); - }); -}); diff --git a/app/core/redux/slices/staking/index.ts b/app/core/redux/slices/staking/index.ts deleted file mode 100644 index 1d8c665c1f2d..000000000000 --- a/app/core/redux/slices/staking/index.ts +++ /dev/null @@ -1,108 +0,0 @@ -import type { - PooledStake, - VaultData, - VaultDailyApy, - VaultApyAverages, -} from '@metamask/stake-sdk'; -import { createSlice, type PayloadAction } from '@reduxjs/toolkit'; -import { createSelector } from 'reselect'; -import type { RootState } from '../../../../reducers'; -import { DEFAULT_VAULT_APY_AVERAGES } from '../../../../components/UI/Stake/constants'; - -interface PooledStakingState { - pooledStakes: PooledStake; - exchangeRate: string; - vaultData: VaultData; - vaultApys: VaultDailyApy[]; - vaultApyAverages: VaultApyAverages; - isEligible: boolean; -} - -export const initialState: PooledStakingState = { - pooledStakes: {} as PooledStake, - exchangeRate: '', - vaultData: {} as VaultData, - vaultApys: [], - vaultApyAverages: DEFAULT_VAULT_APY_AVERAGES, - isEligible: false, -}; - -export const name = 'staking'; - -const slice = createSlice({ - name, - initialState, - reducers: { - setPooledStakes: ( - state, - action: PayloadAction<{ - pooledStakes: PooledStake; - exchangeRate: string; - }>, - ) => { - state.pooledStakes = action.payload.pooledStakes; - state.exchangeRate = action.payload.exchangeRate; - }, - setVaultData: (state, action: PayloadAction<VaultData>) => { - state.vaultData = action.payload; - }, - setVaultApys: (state, action: PayloadAction<VaultDailyApy[]>) => { - state.vaultApys = action.payload; - }, - setVaultApyAverages: (state, action: PayloadAction<VaultApyAverages>) => { - state.vaultApyAverages = action.payload; - }, - setStakingEligibility: (state, action: PayloadAction<boolean>) => { - state.isEligible = action.payload; - }, - }, -}); - -const { actions, reducer } = slice; -export default reducer; -export const { - setPooledStakes, - setVaultData, - setVaultApys, - setVaultApyAverages, - setStakingEligibility, -} = actions; - -// Selectors -const selectPooledStakingState = (state: RootState) => state.staking; - -export const selectPooledStakesData = createSelector( - selectPooledStakingState, - (stakingState) => ({ - pooledStakesData: stakingState.pooledStakes, - exchangeRate: stakingState.exchangeRate, - }), -); - -export const selectVaultData = createSelector( - selectPooledStakingState, - (stakingState) => ({ - vaultData: stakingState.vaultData, - }), -); - -export const selectVaultApys = createSelector( - selectPooledStakingState, - (stakingState) => ({ - vaultApys: stakingState.vaultApys, - }), -); - -export const selectVaultApyAverages = createSelector( - selectPooledStakingState, - (stakingState) => ({ - vaultApyAverages: stakingState.vaultApyAverages, - }), -); - -export const selectStakingEligibility = createSelector( - selectPooledStakingState, - (stakingState) => ({ - isEligible: stakingState.isEligible, - }), -); From 5e1f7fd759e529153fe31df9668dfa42d1ac1272 Mon Sep 17 00:00:00 2001 From: MetaMask Bot <metamaskbot@users.noreply.github.com> Date: Thu, 27 Mar 2025 20:17:48 +0000 Subject: [PATCH 076/473] Update Attributions --- attribution.txt | 880 +++++++++++++++--------------------------------- 1 file changed, 279 insertions(+), 601 deletions(-) diff --git a/attribution.txt b/attribution.txt index 61ac617345ca..9da3ee7eb2ec 100644 --- a/attribution.txt +++ b/attribution.txt @@ -7382,61 +7382,6 @@ The above copyright notice and this permission notice shall be included in all c THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -****************************** - -bindings -1.5.0 <https://github.com/TooTallNate/node-bindings> -(The MIT License) - -Copyright (c) 2012 Nathan Rajlich <nathan@tootallnate.net> - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -'Software'), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - -****************************** - -bip66 -1.1.5 <https://github.com/bitcoinjs/bip66> -The MIT License (MIT) - -Copyright (c) 2015 Daniel Cousens - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - - ****************************** bitcoin-address-validation @@ -14531,36 +14476,6 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -****************************** - -drbg.js -1.0.1 <https://github.com/cryptocoinjs/drbg.js> -The MIT License (MIT) - -Copyright (c) 2016 Kirill Fomichev - -Parts of this software are based on elliptic -Copyright (c) 2014-2016 Fedor Indutny - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. - - ****************************** dset @@ -17248,7 +17163,7 @@ authors: Dan Finlay ****************************** ethereumjs-abi -0.6.6 <https://github.com/axic/ethereumjs-abi> +0.6.8 <https://github.com/axic/ethereumjs-abi> The MIT License (MIT) Copyright (c) 2015 Alex Beregszaszi @@ -19606,386 +19521,7 @@ Exhibit B - "Incompatible With Secondary Licenses" Notice ****************************** ethereumjs-util -5.2.1 <https://github.com/ethereumjs/ethereumjs-util> -Mozilla Public License Version 2.0 -================================== - -1. Definitions --------------- - -1.1. "Contributor" - means each individual or legal entity that creates, contributes to - the creation of, or owns Covered Software. - -1.2. "Contributor Version" - means the combination of the Contributions of others (if any) used - by a Contributor and that particular Contributor's Contribution. - -1.3. "Contribution" - means Covered Software of a particular Contributor. - -1.4. "Covered Software" - means Source Code Form to which the initial Contributor has attached - the notice in Exhibit A, the Executable Form of such Source Code - Form, and Modifications of such Source Code Form, in each case - including portions thereof. - -1.5. "Incompatible With Secondary Licenses" - means - - (a) that the initial Contributor has attached the notice described - in Exhibit B to the Covered Software; or - - (b) that the Covered Software was made available under the terms of - version 1.1 or earlier of the License, but not also under the - terms of a Secondary License. - -1.6. "Executable Form" - means any form of the work other than Source Code Form. - -1.7. "Larger Work" - means a work that combines Covered Software with other material, in - a separate file or files, that is not Covered Software. - -1.8. "License" - means this document. - -1.9. "Licensable" - means having the right to grant, to the maximum extent possible, - whether at the time of the initial grant or subsequently, any and - all of the rights conveyed by this License. - -1.10. "Modifications" - means any of the following: - - (a) any file in Source Code Form that results from an addition to, - deletion from, or modification of the contents of Covered - Software; or - - (b) any new file in Source Code Form that contains any Covered - Software. - -1.11. "Patent Claims" of a Contributor - means any patent claim(s), including without limitation, method, - process, and apparatus claims, in any patent Licensable by such - Contributor that would be infringed, but for the grant of the - License, by the making, using, selling, offering for sale, having - made, import, or transfer of either its Contributions or its - Contributor Version. - -1.12. "Secondary License" - means either the GNU General Public License, Version 2.0, the GNU - Lesser General Public License, Version 2.1, the GNU Affero General - Public License, Version 3.0, or any later versions of those - licenses. - -1.13. "Source Code Form" - means the form of the work preferred for making modifications. - -1.14. "You" (or "Your") - means an individual or a legal entity exercising rights under this - License. For legal entities, "You" includes any entity that - controls, is controlled by, or is under common control with You. For - purposes of this definition, "control" means (a) the power, direct - or indirect, to cause the direction or management of such entity, - whether by contract or otherwise, or (b) ownership of more than - fifty percent (50%) of the outstanding shares or beneficial - ownership of such entity. - -2. License Grants and Conditions --------------------------------- - -2.1. Grants - -Each Contributor hereby grants You a world-wide, royalty-free, -non-exclusive license: - -(a) under intellectual property rights (other than patent or trademark) - Licensable by such Contributor to use, reproduce, make available, - modify, display, perform, distribute, and otherwise exploit its - Contributions, either on an unmodified basis, with Modifications, or - as part of a Larger Work; and - -(b) under Patent Claims of such Contributor to make, use, sell, offer - for sale, have made, import, and otherwise transfer either its - Contributions or its Contributor Version. - -2.2. Effective Date - -The licenses granted in Section 2.1 with respect to any Contribution -become effective for each Contribution on the date the Contributor first -distributes such Contribution. - -2.3. Limitations on Grant Scope - -The licenses granted in this Section 2 are the only rights granted under -this License. No additional rights or licenses will be implied from the -distribution or licensing of Covered Software under this License. -Notwithstanding Section 2.1(b) above, no patent license is granted by a -Contributor: - -(a) for any code that a Contributor has removed from Covered Software; - or - -(b) for infringements caused by: (i) Your and any other third party's - modifications of Covered Software, or (ii) the combination of its - Contributions with other software (except as part of its Contributor - Version); or - -(c) under Patent Claims infringed by Covered Software in the absence of - its Contributions. - -This License does not grant any rights in the trademarks, service marks, -or logos of any Contributor (except as may be necessary to comply with -the notice requirements in Section 3.4). - -2.4. Subsequent Licenses - -No Contributor makes additional grants as a result of Your choice to -distribute the Covered Software under a subsequent version of this -License (see Section 10.2) or under the terms of a Secondary License (if -permitted under the terms of Section 3.3). - -2.5. Representation - -Each Contributor represents that the Contributor believes its -Contributions are its original creation(s) or it has sufficient rights -to grant the rights to its Contributions conveyed by this License. - -2.6. Fair Use - -This License is not intended to limit any rights You have under -applicable copyright doctrines of fair use, fair dealing, or other -equivalents. - -2.7. Conditions - -Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted -in Section 2.1. - -3. Responsibilities -------------------- - -3.1. Distribution of Source Form - -All distribution of Covered Software in Source Code Form, including any -Modifications that You create or to which You contribute, must be under -the terms of this License. You must inform recipients that the Source -Code Form of the Covered Software is governed by the terms of this -License, and how they can obtain a copy of this License. You may not -attempt to alter or restrict the recipients' rights in the Source Code -Form. - -3.2. Distribution of Executable Form - -If You distribute Covered Software in Executable Form then: - -(a) such Covered Software must also be made available in Source Code - Form, as described in Section 3.1, and You must inform recipients of - the Executable Form how they can obtain a copy of such Source Code - Form by reasonable means in a timely manner, at a charge no more - than the cost of distribution to the recipient; and - -(b) You may distribute such Executable Form under the terms of this - License, or sublicense it under different terms, provided that the - license for the Executable Form does not attempt to limit or alter - the recipients' rights in the Source Code Form under this License. - -3.3. Distribution of a Larger Work - -You may create and distribute a Larger Work under terms of Your choice, -provided that You also comply with the requirements of this License for -the Covered Software. If the Larger Work is a combination of Covered -Software with a work governed by one or more Secondary Licenses, and the -Covered Software is not Incompatible With Secondary Licenses, this -License permits You to additionally distribute such Covered Software -under the terms of such Secondary License(s), so that the recipient of -the Larger Work may, at their option, further distribute the Covered -Software under the terms of either this License or such Secondary -License(s). - -3.4. Notices - -You may not remove or alter the substance of any license notices -(including copyright notices, patent notices, disclaimers of warranty, -or limitations of liability) contained within the Source Code Form of -the Covered Software, except that You may alter any license notices to -the extent required to remedy known factual inaccuracies. - -3.5. Application of Additional Terms - -You may choose to offer, and to charge a fee for, warranty, support, -indemnity or liability obligations to one or more recipients of Covered -Software. However, You may do so only on Your own behalf, and not on -behalf of any Contributor. You must make it absolutely clear that any -such warranty, support, indemnity, or liability obligation is offered by -You alone, and You hereby agree to indemnify every Contributor for any -liability incurred by such Contributor as a result of warranty, support, -indemnity or liability terms You offer. You may include additional -disclaimers of warranty and limitations of liability specific to any -jurisdiction. - -4. Inability to Comply Due to Statute or Regulation ---------------------------------------------------- - -If it is impossible for You to comply with any of the terms of this -License with respect to some or all of the Covered Software due to -statute, judicial order, or regulation then You must: (a) comply with -the terms of this License to the maximum extent possible; and (b) -describe the limitations and the code they affect. Such description must -be placed in a text file included with all distributions of the Covered -Software under this License. Except to the extent prohibited by statute -or regulation, such description must be sufficiently detailed for a -recipient of ordinary skill to be able to understand it. - -5. Termination --------------- - -5.1. The rights granted under this License will terminate automatically -if You fail to comply with any of its terms. However, if You become -compliant, then the rights granted under this License from a particular -Contributor are reinstated (a) provisionally, unless and until such -Contributor explicitly and finally terminates Your grants, and (b) on an -ongoing basis, if such Contributor fails to notify You of the -non-compliance by some reasonable means prior to 60 days after You have -come back into compliance. Moreover, Your grants from a particular -Contributor are reinstated on an ongoing basis if such Contributor -notifies You of the non-compliance by some reasonable means, this is the -first time You have received notice of non-compliance with this License -from such Contributor, and You become compliant prior to 30 days after -Your receipt of the notice. - -5.2. If You initiate litigation against any entity by asserting a patent -infringement claim (excluding declaratory judgment actions, -counter-claims, and cross-claims) alleging that a Contributor Version -directly or indirectly infringes any patent, then the rights granted to -You by any and all Contributors for the Covered Software under Section -2.1 of this License shall terminate. - -5.3. In the event of termination under Sections 5.1 or 5.2 above, all -end user license agreements (excluding distributors and resellers) which -have been validly granted by You or Your distributors under this License -prior to termination shall survive termination. - -************************************************************************ -* * -* 6. Disclaimer of Warranty * -* ------------------------- * -* * -* Covered Software is provided under this License on an "as is" * -* basis, without warranty of any kind, either expressed, implied, or * -* statutory, including, without limitation, warranties that the * -* Covered Software is free of defects, merchantable, fit for a * -* particular purpose or non-infringing. The entire risk as to the * -* quality and performance of the Covered Software is with You. * -* Should any Covered Software prove defective in any respect, You * -* (not any Contributor) assume the cost of any necessary servicing, * -* repair, or correction. This disclaimer of warranty constitutes an * -* essential part of this License. No use of any Covered Software is * -* authorized under this License except under this disclaimer. * -* * -************************************************************************ - -************************************************************************ -* * -* 7. Limitation of Liability * -* -------------------------- * -* * -* Under no circumstances and under no legal theory, whether tort * -* (including negligence), contract, or otherwise, shall any * -* Contributor, or anyone who distributes Covered Software as * -* permitted above, be liable to You for any direct, indirect, * -* special, incidental, or consequential damages of any character * -* including, without limitation, damages for lost profits, loss of * -* goodwill, work stoppage, computer failure or malfunction, or any * -* and all other commercial damages or losses, even if such party * -* shall have been informed of the possibility of such damages. This * -* limitation of liability shall not apply to liability for death or * -* personal injury resulting from such party's negligence to the * -* extent applicable law prohibits such limitation. Some * -* jurisdictions do not allow the exclusion or limitation of * -* incidental or consequential damages, so this exclusion and * -* limitation may not apply to You. * -* * -************************************************************************ - -8. Litigation -------------- - -Any litigation relating to this License may be brought only in the -courts of a jurisdiction where the defendant maintains its principal -place of business and such litigation shall be governed by laws of that -jurisdiction, without reference to its conflict-of-law provisions. -Nothing in this Section shall prevent a party's ability to bring -cross-claims or counter-claims. - -9. Miscellaneous ----------------- - -This License represents the complete agreement concerning the subject -matter hereof. If any provision of this License is held to be -unenforceable, such provision shall be reformed only to the extent -necessary to make it enforceable. Any law or regulation which provides -that the language of a contract shall be construed against the drafter -shall not be used to construe this License against a Contributor. - -10. Versions of the License ---------------------------- - -10.1. New Versions - -Mozilla Foundation is the license steward. Except as provided in Section -10.3, no one other than the license steward has the right to modify or -publish new versions of this License. Each version will be given a -distinguishing version number. - -10.2. Effect of New Versions - -You may distribute the Covered Software under the terms of the version -of the License under which You originally received the Covered Software, -or under the terms of any subsequent version published by the license -steward. - -10.3. Modified Versions - -If you create software not governed by this License, and you want to -create a new license for such software, you may create and use a -modified version of this License if you rename the license and remove -any references to the name of the license steward (except to note that -such modified license differs from this License). - -10.4. Distributing Source Code Form that is Incompatible With Secondary -Licenses - -If You choose to distribute Source Code Form that is Incompatible With -Secondary Licenses under the terms of this version of the License, the -notice described in Exhibit B of this License must be attached. - -Exhibit A - Source Code Form License Notice -------------------------------------------- - - This Source Code Form is subject to the terms of the Mozilla Public - License, v. 2.0. If a copy of the MPL was not distributed with this - file, You can obtain one at http://mozilla.org/MPL/2.0/. - -If it is not possible or desirable to put the notice in a particular -file, then You may include the notice in a location (such as a LICENSE -file in a relevant directory) where a recipient would be likely to look -for such a notice. - -You may add additional accurate notices of copyright ownership. - -Exhibit B - "Incompatible With Secondary Licenses" Notice ---------------------------------------------------------- - - This Source Code Form is "Incompatible With Secondary Licenses", as - defined by the Mozilla Public License, v. 2.0. - - -****************************** - -ethereumjs-util -6.1.0 <https://github.com/ethereumjs/ethereumjs-util> +6.2.1 <https://github.com/ethereumjs/ethereumjs-util> Mozilla Public License Version 2.0 ================================== @@ -23804,32 +23340,6 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -****************************** - -file-uri-to-path -1.0.0 <https://github.com/TooTallNate/file-uri-to-path> -Copyright (c) 2014 Nathan Rajlich <nathan@tootallnate.net> - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -'Software'), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - ****************************** fill-range @@ -32516,33 +32026,6 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -****************************** - -keccak -1.4.0 <https://github.com/cryptocoinjs/keccak> -The MIT License (MIT) - -Copyright (c) 2016 https://github.com/cryptocoinjs/keccak contributors - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. - - ****************************** keccak @@ -37353,7 +36836,7 @@ authors: Maarten Zuidhoorn <maarten@zuidhoorn.com> ****************************** @metamask/accounts-controller -24.0.1 <https://github.com/MetaMask/core> +24.1.0 <https://github.com/MetaMask/core> MIT License Copyright (c) 2018 MetaMask @@ -37431,7 +36914,7 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE ****************************** @metamask/assets-controllers -50.0.0 <https://github.com/MetaMask/core> +51.0.2 <https://github.com/MetaMask/core> MIT License Copyright (c) 2018 MetaMask @@ -37513,6 +36996,58 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE license: (MIT-0 OR Apache-2.0) authors: undefined +****************************** + +@metamask/bridge-controller +3.0.0 <https://github.com/MetaMask/core> +MIT License + +Copyright (c) 2025 MetaMask + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + + +****************************** + +@metamask/bridge-status-controller +3.0.0 <https://github.com/MetaMask/core> +MIT License + +Copyright (c) 2025 MetaMask + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + + ****************************** @metamask/browser-passworder @@ -37584,7 +37119,7 @@ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ****************************** @metamask/controller-utils -11.5.0 <https://github.com/MetaMask/core> +11.6.0 <https://github.com/MetaMask/core> MIT License Copyright (c) 2018 MetaMask @@ -37633,6 +37168,32 @@ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +****************************** + +@metamask/earn-controller +0.10.0 <https://github.com/MetaMask/core> +MIT License + +Copyright (c) 2025 MetaMask + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + + ****************************** @metamask/eth-block-tracker @@ -37701,6 +37262,27 @@ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +****************************** + +@metamask/eth-hd-keyring +11.0.0 <https://github.com/MetaMask/eth-hd-keyring> +ISC License + +Copyright (c) 2020 MetaMask + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + + ****************************** @metamask/eth-hd-keyring @@ -38065,6 +37647,27 @@ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +****************************** + +@metamask/eth-simple-keyring +9.0.0 <https://github.com/MetaMask/eth-simple-keyring> +ISC License + +Copyright (c) 2020 MetaMask + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + + ****************************** @metamask/eth-snap-keyring @@ -38202,7 +37805,7 @@ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ****************************** @metamask/keyring-api -10.1.0 <https://github.com/MetaMask/keyring-api> +17.2.1 <https://github.com/MetaMask/keyring-api> Copyright ConsenSys Software Inc. 2022. All rights reserved. You acknowledge and agree that ConsenSys Software Inc. (“ConsenSys”) (or ConsenSys’s licensors) own all legal right, title and interest in and to the work, software, application, source code, documentation and any other documents in this repository (collectively, the “Program”), including any intellectual property rights which subsist in the Program (whether those rights happen to be registered or not, and wherever in the world those rights may exist), whether in source code or any other form. @@ -38225,32 +37828,34 @@ If you have any questions, comments or interest in pursuing any other use cases, ****************************** -@metamask/keyring-api -17.2.0 <https://github.com/MetaMask/keyring-api> -Copyright ConsenSys Software Inc. 2022. All rights reserved. - -You acknowledge and agree that ConsenSys Software Inc. (“ConsenSys”) (or ConsenSys’s licensors) own all legal right, title and interest in and to the work, software, application, source code, documentation and any other documents in this repository (collectively, the “Program”), including any intellectual property rights which subsist in the Program (whether those rights happen to be registered or not, and wherever in the world those rights may exist), whether in source code or any other form. - -Subject to the limited license below, you may not (and you may not permit anyone else to) distribute, publish, copy, modify, merge, combine with another program, create derivative works of, reverse engineer, decompile or otherwise attempt to extract the source code of, the Program or any part thereof, except that you may contribute to this repository. - -You are granted a non-exclusive, non-transferable, non-sublicensable license to distribute, publish, copy, modify, merge, combine with another program or create derivative works of the Program (such resulting program, collectively, the “Resulting Program”) solely for Non-Commercial Use as long as you: - 1. give prominent notice (“Notice”) with each copy of the Resulting Program that the Program is used in the Resulting Program and that the Program is the copyright of ConsenSys; and - 2. subject the Resulting Program and any distribution, publication, copy, modification, merger therewith, combination with another program or derivative works thereof to the same Notice requirement and Non-Commercial Use restriction set forth herein. - -“Non-Commercial Use” means each use as described in clauses (1)-(3) below, as reasonably determined by ConsenSys in its sole discretion: - 1. personal use for research, personal study, private entertainment, hobby projects or amateur pursuits, in each case without any anticipated commercial application; - 2. use by any charitable organization, educational institution, public research organization, public safety or health organization, environmental protection organization or government institution; or - 3. the number of monthly active users of the Resulting Program across all versions thereof and platforms globally do not exceed 10,000 at any time. - -You will not use any trade mark, service mark, trade name, logo of ConsenSys or any other company or organization in a way that is likely or intended to cause confusion about the owner or authorized user of such marks, names or logos. - -If you have any questions, comments or interest in pursuing any other use cases, please reach out to us at communications@metamask.io. +@metamask/keyring-controller +19.2.2 <https://github.com/MetaMask/core> +MIT License + +Copyright (c) 2018 MetaMask + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE ****************************** @metamask/keyring-controller -19.2.1 <https://github.com/MetaMask/core> +20.0.0 <https://github.com/MetaMask/core> MIT License Copyright (c) 2018 MetaMask @@ -38282,6 +37887,20 @@ authors: undefined ****************************** +@metamask/keyring-internal-api +5.0.0 <https://github.com/MetaMask/accounts> +license: Custom: https://github.com/MetaMask/accounts +authors: undefined + +****************************** + +@metamask/keyring-internal-api +6.0.0 <https://github.com/MetaMask/accounts> +license: Custom: https://github.com/MetaMask/accounts +authors: undefined + +****************************** + @metamask/keyring-internal-snap-client 4.0.1 <https://github.com/MetaMask/accounts> license: Custom: https://github.com/MetaMask/accounts @@ -38303,6 +37922,13 @@ authors: undefined ****************************** +@metamask/keyring-utils +3.0.0 <https://github.com/MetaMask/accounts> +license: Custom: https://github.com/MetaMask/accounts +authors: undefined + +****************************** + @metamask/key-tree 10.0.2 <https://github.com/MetaMask/key-tree> MIT License @@ -38415,6 +38041,32 @@ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +****************************** + +@metamask/multichain-transactions-controller +0.7.0 <https://github.com/MetaMask/core> +MIT License + +Copyright (c) 2025 MetaMask + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + + ****************************** @metamask/network-controller @@ -38471,7 +38123,7 @@ SOFTWARE. ****************************** @metamask/notification-services-controller -1.0.0 <https://github.com/MetaMask/core> +2.0.0 <https://github.com/MetaMask/core> MIT License Copyright (c) 2024 MetaMask @@ -38613,7 +38265,7 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE ****************************** @metamask/phishing-controller -12.3.2 <https://github.com/MetaMask/core> +12.4.0 <https://github.com/MetaMask/core> MIT License Copyright (c) 2018 MetaMask @@ -38719,7 +38371,7 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE ****************************** @metamask/profile-sync-controller -3.0.0 <https://github.com/MetaMask/core> +9.0.0 <https://github.com/MetaMask/core> MIT License Copyright (c) 2024 MetaMask @@ -39105,7 +38757,7 @@ authors: Dan Finlay <dan@danfinlay.com> ****************************** @metamask/smart-transactions-controller -16.0.1 <https://github.com/MetaMask/smart-transactions-controller> +16.1.0 <https://github.com/MetaMask/smart-transactions-controller> Copyright ConsenSys Software Inc. 2020. All rights reserved. You acknowledge and agree that ConsenSys Software Inc. (“ConsenSys”) (or ConsenSys’s licensors) own all legal right, title and interest in and to the work, software, application, source code, documentation and any other documents in this repository (collectively, the “Program”), including any intellectual property rights which subsist in the Program (whether those rights happen to be registered or not, and wherever in the world those rights may exist), whether in source code or any other form. @@ -39150,6 +38802,30 @@ You will not use any trade mark, service mark, trade name, logo of ConsenSys or If you have any questions, comments or interest in pursuing any other use cases, please reach out to us at metamask.license@consensys.net. +****************************** + +@metamask/snaps-controllers +9.19.1 <https://github.com/MetaMask/snaps> +Copyright ConsenSys Software Inc. 2021. All rights reserved. + +You acknowledge and agree that ConsenSys Software Inc. (“ConsenSys”) (or ConsenSys’s licensors) own all legal right, title and interest in and to the work, software, application, source code, documentation and any other documents in this repository (collectively, the “Program”), including any intellectual property rights which subsist in the Program (whether those rights happen to be registered or not, and wherever in the world those rights may exist), whether in source code or any other form. + +Subject to the limited license below, you may not (and you may not permit anyone else to) distribute, publish, copy, modify, merge, combine with another program, create derivative works of, reverse engineer, decompile or otherwise attempt to extract the source code of, the Program or any part thereof, except that you may contribute to this repository. + +You are granted a non-exclusive, non-transferable, non-sublicensable license to distribute, publish, copy, modify, merge, combine with another program or create derivative works of the Program (such resulting program, collectively, the “Resulting Program”) solely for Non-Commercial Use as long as you: + 1. give prominent notice (“Notice”) with each copy of the Resulting Program that the Program is used in the Resulting Program and that the Program is the copyright of ConsenSys; and + 2. subject the Resulting Program and any distribution, publication, copy, modification, merger therewith, combination with another program or derivative works thereof to the same Notice requirement and Non-Commercial Use restriction set forth herein. + +“Non-Commercial Use” means each use as described in clauses (1)-(3) below, as reasonably determined by ConsenSys in its sole discretion: + 1. personal use for research, personal study, private entertainment, hobby projects or amateur pursuits, in each case without any anticipated commercial application; + 2. use by any charitable organization, educational institution, public research organization, public safety or health organization, environmental protection organization or government institution; or + 3. the number of monthly active users of the Resulting Program across all versions thereof and platforms globally do not exceed 10,000 at any time. + +You will not use any trade mark, service mark, trade name, logo of ConsenSys or any other company or organization in a way that is likely or intended to cause confusion about the owner or authorized user of such marks, names or logos. + +If you have any questions, comments or interest in pursuing any other use cases, please reach out to us at metamask.license@consensys.net. + + ****************************** @metamask/snaps-execution-environments @@ -39386,7 +39062,7 @@ If you have any questions, comments or interest in pursuing any other use cases, ****************************** @metamask/snaps-rpc-methods -11.12.0 <https://github.com/MetaMask/snaps> +11.13.1 <https://github.com/MetaMask/snaps> Copyright ConsenSys Software Inc. 2021. All rights reserved. You acknowledge and agree that ConsenSys Software Inc. (“ConsenSys”) (or ConsenSys’s licensors) own all legal right, title and interest in and to the work, software, application, source code, documentation and any other documents in this repository (collectively, the “Program”), including any intellectual property rights which subsist in the Program (whether those rights happen to be registered or not, and wherever in the world those rights may exist), whether in source code or any other form. @@ -39431,7 +39107,7 @@ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ****************************** @metamask/snaps-sdk -6.18.0 <https://github.com/MetaMask/snaps> +6.19.0 <https://github.com/MetaMask/snaps> ISC License Copyright (c) 2023 MetaMask @@ -39473,7 +39149,7 @@ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ****************************** @metamask/snaps-utils -9.0.0 <https://github.com/MetaMask/snaps> +9.0.1 <https://github.com/MetaMask/snaps> ISC License Copyright (c) 2022 MetaMask @@ -39494,7 +39170,7 @@ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ****************************** @metamask/solana-wallet-snap -1.7.0 <https://github.com/MetaMask/snap-solana-wallet> +1.9.0 <https://github.com/MetaMask/snap-solana-wallet> license: (MIT-0 OR Apache-2.0) authors: undefined @@ -41124,21 +40800,6 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -****************************** - -nan -2.20.0 <https://github.com/nodejs/nan> -The MIT License (MIT) - -Copyright (c) 2018 [NAN contributors](<https://github.com/nodejs/nan#wg-members--collaborators>) - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - ****************************** nanoid @@ -53761,36 +53422,6 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -****************************** - -secp256k1 -3.8.1 <https://github.com/cryptocoinjs/secp256k1-node> -The MIT License (MIT) - -Copyright (c) 2014-2016 secp256k1-node contributors - -Parts of this software are based on bn.js, elliptic, hash.js -Copyright (c) 2014-2016 Fedor Indutny - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. - - ****************************** secp256k1 @@ -100352,6 +99983,33 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. SOFTWARE +****************************** + +@types/bn.js +4.11.6 <https://github.com/DefinitelyTyped/DefinitelyTyped> + MIT License + + Copyright (c) Microsoft Corporation. All rights reserved. + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all + copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + SOFTWARE + + ****************************** @types/bn.js @@ -101480,7 +101138,7 @@ authors: Mohamed Hegazy <https://github.com/mhegazy> ****************************** @types/node -20.14.11 <https://github.com/DefinitelyTyped/DefinitelyTyped> +22.7.5 <https://github.com/DefinitelyTyped/DefinitelyTyped> MIT License Copyright (c) Microsoft Corporation. @@ -102609,9 +102267,29 @@ SOFTWARE. ****************************** undici-types -5.26.5 <https://github.com/nodejs/undici> -license: MIT -authors: Daniele Belardi <https://github.com/dnlup>, Ethan Arrowood <https://github.com/ethan-arrowood>, Matteo Collina <https://github.com/mcollina>, Matthew Aitken <https://github.com/KhafraDev>, Robert Nagy <https://github.com/ronag>, Szymon Marczak <https://github.com/szmarczak>, Tomas Della Vedova <https://github.com/delvedor> +6.19.8 <https://github.com/nodejs/undici> +MIT License + +Copyright (c) Matteo Collina and Undici contributors + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + ****************************** From 6af48d4d591d7b7ef2d9ebd44117b2f00eee9862 Mon Sep 17 00:00:00 2001 From: metamaskbot <metamaskbot@users.noreply.github.com> Date: Thu, 27 Mar 2025 14:22:16 -0600 Subject: [PATCH 077/473] remove unadded files --- .../SnapsDialogApproval.tsx | 142 -- .../SnapUIAddress/SnapUIAddress.test.tsx | 193 --- .../Snaps/SnapUIAddress/SnapUIAddress.tsx | 73 - .../__snapshots__/SnapUIAddress.test.tsx.snap | 1399 ----------------- .../Snaps/SnapUIAddress/useDisplayName.ts | 59 - app/components/UI/Bridge/index.js | 33 - .../SnapUIAddress/SnapUIAddress.test.tsx | 198 --- .../UI/Snaps/SnapUIAddress/SnapUIAddress.tsx | 73 - .../__snapshots__/SnapUIAddress.test.tsx.snap | 1399 ----------------- .../UI/Snaps/SnapUIAddress/useDisplayName.ts | 59 - .../UI/Snaps/SnapUIAvatar/SnapUIAvatar.tsx | 74 - .../UI/Snaps/SnapUIImage/SnapUIImage.tsx | 34 - .../UI/Snaps/SnapUIInput/SnapUIInput.test.tsx | 110 -- .../UI/Snaps/SnapUIInput/SnapUIInput.tsx | 81 - .../UI/Snaps/SnapUILink/SnapUILink.tsx | 35 - .../AdvancedDetails/AdvancedDetails.styles.ts | 15 - .../AdvancedDetails/AdvancedDetails.test.tsx | 28 - .../AdvancedDetails/AdvancedDetails.tsx | 59 - .../Info/StakingDeposit/Navbar.test.tsx | 33 - .../Confirm/Info/StakingDeposit/Navbar.tsx | 50 - app/core/Engine/Engine.ts | 18 +- .../MultichainAssetsController/index.test.ts | 100 -- .../MultichainAssetsController/index.ts | 41 - .../MultichainNetworkController/index.test.ts | 86 - .../MultichainNetworkController/index.ts | 35 - 25 files changed, 8 insertions(+), 4419 deletions(-) delete mode 100644 app/components/Snaps/SnapDialogApproval/SnapsDialogApproval.tsx delete mode 100644 app/components/Snaps/SnapUIAddress/SnapUIAddress.test.tsx delete mode 100644 app/components/Snaps/SnapUIAddress/SnapUIAddress.tsx delete mode 100644 app/components/Snaps/SnapUIAddress/__snapshots__/SnapUIAddress.test.tsx.snap delete mode 100644 app/components/Snaps/SnapUIAddress/useDisplayName.ts delete mode 100644 app/components/UI/Bridge/index.js delete mode 100644 app/components/UI/Snaps/SnapUIAddress/SnapUIAddress.test.tsx delete mode 100644 app/components/UI/Snaps/SnapUIAddress/SnapUIAddress.tsx delete mode 100644 app/components/UI/Snaps/SnapUIAddress/__snapshots__/SnapUIAddress.test.tsx.snap delete mode 100644 app/components/UI/Snaps/SnapUIAddress/useDisplayName.ts delete mode 100644 app/components/UI/Snaps/SnapUIAvatar/SnapUIAvatar.tsx delete mode 100644 app/components/UI/Snaps/SnapUIImage/SnapUIImage.tsx delete mode 100644 app/components/UI/Snaps/SnapUIInput/SnapUIInput.test.tsx delete mode 100644 app/components/UI/Snaps/SnapUIInput/SnapUIInput.tsx delete mode 100644 app/components/UI/Snaps/SnapUILink/SnapUILink.tsx delete mode 100644 app/components/Views/confirmations/components/Confirm/AdvancedDetails/AdvancedDetails.styles.ts delete mode 100644 app/components/Views/confirmations/components/Confirm/AdvancedDetails/AdvancedDetails.test.tsx delete mode 100644 app/components/Views/confirmations/components/Confirm/AdvancedDetails/AdvancedDetails.tsx delete mode 100644 app/components/Views/confirmations/components/Confirm/Info/StakingDeposit/Navbar.test.tsx delete mode 100644 app/components/Views/confirmations/components/Confirm/Info/StakingDeposit/Navbar.tsx delete mode 100644 app/core/Engine/controllers/MultichainAssetsController/index.test.ts delete mode 100644 app/core/Engine/controllers/MultichainAssetsController/index.ts delete mode 100644 app/core/Engine/controllers/MultichainNetworkController/index.test.ts delete mode 100644 app/core/Engine/controllers/MultichainNetworkController/index.ts diff --git a/app/components/Snaps/SnapDialogApproval/SnapsDialogApproval.tsx b/app/components/Snaps/SnapDialogApproval/SnapsDialogApproval.tsx deleted file mode 100644 index 922bee393f0a..000000000000 --- a/app/components/Snaps/SnapDialogApproval/SnapsDialogApproval.tsx +++ /dev/null @@ -1,142 +0,0 @@ -///: BEGIN:ONLY_INCLUDE_IF(preinstalled-snaps) -import React, { useState } from 'react'; -import { View } from 'react-native'; -import { useStyles } from '../../hooks/useStyles'; -import { strings } from '../../../../locales/i18n'; -import stylesheet from './SnapDialogApproval.styles'; -import useApprovalRequest from '../../Views/confirmations/hooks/useApprovalRequest'; -import ApprovalModal from '../../Approvals/ApprovalModal'; -import BottomSheetFooter, { - ButtonsAlignment, -} from '../../../component-library/components/BottomSheets/BottomSheetFooter'; -import { - ButtonVariants, - ButtonSize, -} from '../../../component-library/components/Buttons/Button'; -import Engine from '../../../core/Engine'; -import { SnapUIRenderer } from '../SnapUIRenderer/SnapUIRenderer'; -import { Json } from '@metamask/snaps-sdk'; -import { DIALOG_APPROVAL_TYPES } from '@metamask/snaps-rpc-methods'; - -export enum TemplateConfirmation { - Ok = 'template_confirmation.ok', - CANCEL = 'template_confirmation.cancel', -} - -const SnapDialogApproval = () => { - const [isLoading, setIsLoading] = useState(false); - const { approvalRequest } = useApprovalRequest(); - const { styles } = useStyles(stylesheet, {}); - - const onCancel = async () => { - if (!approvalRequest) return; - await Engine.acceptPendingApproval( - approvalRequest.id, - null as unknown as Record<string, Json>, - ); - await Engine.context.SnapInterfaceController.deleteInterface( - approvalRequest.id, - ); - }; - - const onConfirm = async () => { - setIsLoading(true); - if (!approvalRequest) return; - await Engine.acceptPendingApproval( - approvalRequest.id, - true as unknown as Record<string, Json>, - ); - await Engine.context.SnapInterfaceController.deleteInterface( - approvalRequest.id, - ); - - setIsLoading(false); - }; - - const onReject = async () => { - if (!approvalRequest) return; - - await Engine.acceptPendingApproval( - approvalRequest.id, - false as unknown as Record<string, Json>, - ); - await Engine.context.SnapInterfaceController.deleteInterface( - approvalRequest.id, - ); - }; - - if ( - approvalRequest?.type !== DIALOG_APPROVAL_TYPES.alert && - approvalRequest?.type !== DIALOG_APPROVAL_TYPES.confirmation && - approvalRequest?.type !== DIALOG_APPROVAL_TYPES.default - ) - return null; - - const getDialogButtons = (type: string | undefined) => { - switch (type) { - case DIALOG_APPROVAL_TYPES.alert: - return [ - { - variant: ButtonVariants.Primary, - label: strings(TemplateConfirmation.Ok), - size: ButtonSize.Lg, - onPress: onCancel, - }, - ]; - - case DIALOG_APPROVAL_TYPES.confirmation: - return [ - { - variant: ButtonVariants.Secondary, - label: strings(TemplateConfirmation.CANCEL), - size: ButtonSize.Lg, - onPress: onReject, - }, - { - variant: ButtonVariants.Primary, - label: strings('transactions.approve'), - size: ButtonSize.Lg, - onPress: onConfirm, - }, - ]; - default: - return []; - } - }; - - const buttons = getDialogButtons(approvalRequest?.type); - const snapId = approvalRequest?.origin; - const interfaceId = approvalRequest?.requestData?.id; - - return ( - <ApprovalModal - isVisible={ - approvalRequest?.type === DIALOG_APPROVAL_TYPES.alert || - approvalRequest?.type === DIALOG_APPROVAL_TYPES.confirmation || - approvalRequest?.type === DIALOG_APPROVAL_TYPES.default - } - onCancel={onCancel} - > - <View style={styles.root}> - <SnapUIRenderer - snapId={snapId} - interfaceId={interfaceId} - isLoading={isLoading} - onCancel={onCancel} - useFooter={approvalRequest?.type === DIALOG_APPROVAL_TYPES.default} - /> - {approvalRequest?.type !== DIALOG_APPROVAL_TYPES.default && ( - <View style={styles.actionContainer}> - <BottomSheetFooter - buttonsAlignment={ButtonsAlignment.Horizontal} - buttonPropsArray={buttons} - /> - </View> - )} - </View> - </ApprovalModal> - ); -}; - -export default SnapDialogApproval; -///: END:ONLY_INCLUDE_IF diff --git a/app/components/Snaps/SnapUIAddress/SnapUIAddress.test.tsx b/app/components/Snaps/SnapUIAddress/SnapUIAddress.test.tsx deleted file mode 100644 index f05913facc55..000000000000 --- a/app/components/Snaps/SnapUIAddress/SnapUIAddress.test.tsx +++ /dev/null @@ -1,193 +0,0 @@ -import React from 'react'; -import { SnapUIAddress } from './SnapUIAddress'; -import renderWithProvider from '../../../util/test/renderWithProvider'; - -const baseMockState = { - state: { - engine: { - backgroundState: { - KeyringController: { - keyrings: [] - }, - AccountsController: { - internalAccounts: { - accounts: { - 'foo': { - address: '0xab16a96D359eC26a11e2C2b3d8f8B8942d5Bfcdb', - metadata: { - name: 'My Account', - } - } - } - } - }, - AddressBookController: { - addressBook: { - '0x1': { - '0xab16a96D359eC26a11e2C2b3d8f8B8942d5Bfcda': { - address: '0xab16a96D359eC26a11e2C2b3d8f8B8942d5Bfcda', - name: 'Test Contact', - } - } - } - } - } - }, - } -}; - -const mockStateWithoutBlockies = { - state: { - ...baseMockState.state, - settings: { - useBlockieIcon: false, - }, - }, -}; - -const mockStateWithBlockies = { - state: { - ...baseMockState.state, - settings: { - useBlockieIcon: true, - }, - }, -}; - -describe('SnapUIAddress', () => { - it('renders legacy Ethereum address', () => { - const { toJSON } = renderWithProvider( - <SnapUIAddress address="0xab16a96d359ec26a11e2c2b3d8f8b8942d5bfcdb" />, - mockStateWithoutBlockies, - ); - - expect(toJSON()).toMatchSnapshot(); - }); - - it('renders Ethereum address', () => { - const { toJSON } = renderWithProvider( - <SnapUIAddress address="eip155:1:0xab16a96D359eC26a11e2C2b3d8f8B8942d5Bfcdb" />, - mockStateWithoutBlockies, - ); - - expect(toJSON()).toMatchSnapshot(); - }); - - it('renders account name', () => { - const { getByText } = renderWithProvider( - <SnapUIAddress address="eip155:1:0xab16a96D359eC26a11e2C2b3d8f8B8942d5Bfcdb" displayName />, - baseMockState - ); - - expect(getByText('My Account')).toBeDefined(); - }); - - it('renders contact name', () => { - const { getByText } = renderWithProvider( - <SnapUIAddress address="eip155:1:0xab16a96D359eC26a11e2C2b3d8f8B8942d5Bfcda" displayName />, - baseMockState - ); - - expect(getByText('Test Contact')).toBeDefined(); - }); - - - it('renders Ethereum address with blockie', () => { - const { toJSON } = renderWithProvider( - <SnapUIAddress address="eip155:1:0xab16a96D359eC26a11e2C2b3d8f8B8942d5Bfcdb" />, - mockStateWithBlockies, - ); - - expect(toJSON()).toMatchSnapshot(); - }); - - it('renders Bitcoin address', () => { - const { toJSON } = renderWithProvider( - <SnapUIAddress address="bip122:000000000019d6689c085ae165831e93:128Lkh3S7CkDTBZ8W7BbpsN3YYizJMp8p6" />, - mockStateWithoutBlockies, - ); - - expect(toJSON()).toMatchSnapshot(); - }); - - it('renders Bitcoin address with blockie', () => { - const { toJSON } = renderWithProvider( - <SnapUIAddress address="bip122:000000000019d6689c085ae165831e93:128Lkh3S7CkDTBZ8W7BbpsN3YYizJMp8p6" />, - mockStateWithBlockies, - ); - - expect(toJSON()).toMatchSnapshot(); - }); - - it('renders Cosmos address', () => { - const { toJSON } = renderWithProvider( - <SnapUIAddress address="cosmos:cosmoshub-3:cosmos1t2uflqwqe0fsj0shcfkrvpukewcw40yjj6hdc0" />, - mockStateWithoutBlockies, - ); - - expect(toJSON()).toMatchSnapshot(); - }); - - it('renders Cosmos address with blockie', () => { - const { toJSON } = renderWithProvider( - <SnapUIAddress address="cosmos:cosmoshub-3:cosmos1t2uflqwqe0fsj0shcfkrvpukewcw40yjj6hdc0" />, - mockStateWithBlockies, - ); - - expect(toJSON()).toMatchSnapshot(); - }); - - it('renders Polkadot address', () => { - const { toJSON } = renderWithProvider( - <SnapUIAddress address="polkadot:b0a8d493285c2df73290dfb7e61f870f:5hmuyxw9xdgbpptgypokw4thfyoe3ryenebr381z9iaegmfy" />, - mockStateWithoutBlockies, - ); - - expect(toJSON()).toMatchSnapshot(); - }); - - it('renders Polkadot address with blockie', () => { - const { toJSON } = renderWithProvider( - <SnapUIAddress address="polkadot:b0a8d493285c2df73290dfb7e61f870f:5hmuyxw9xdgbpptgypokw4thfyoe3ryenebr381z9iaegmfy" />, - mockStateWithBlockies, - ); - - expect(toJSON()).toMatchSnapshot(); - }); - - it('renders Starknet address', () => { - const { toJSON } = renderWithProvider( - <SnapUIAddress address="starknet:SN_GOERLI:0x02dd1b492765c064eac4039e3841aa5f382773b598097a40073bd8b48170ab57" />, - mockStateWithoutBlockies, - ); - - expect(toJSON()).toMatchSnapshot(); - }); - - it('renders Starknet address with blockie', () => { - const { toJSON } = renderWithProvider( - <SnapUIAddress address="starknet:SN_GOERLI:0x02dd1b492765c064eac4039e3841aa5f382773b598097a40073bd8b48170ab57" />, - mockStateWithBlockies, - ); - - expect(toJSON()).toMatchSnapshot(); - }); - - it('renders Hedera address', () => { - const { toJSON } = renderWithProvider( - <SnapUIAddress address="hedera:mainnet:0.0.1234567890-zbhlt" />, - mockStateWithoutBlockies, - ); - - expect(toJSON()).toMatchSnapshot(); - }); - - it('renders Hedera address with blockie', () => { - const { toJSON } = renderWithProvider( - <SnapUIAddress address="hedera:mainnet:0.0.1234567890-zbhlt" />, - mockStateWithBlockies, - ); - - expect(toJSON()).toMatchSnapshot(); - }); -}); diff --git a/app/components/Snaps/SnapUIAddress/SnapUIAddress.tsx b/app/components/Snaps/SnapUIAddress/SnapUIAddress.tsx deleted file mode 100644 index e1abb7e75188..000000000000 --- a/app/components/Snaps/SnapUIAddress/SnapUIAddress.tsx +++ /dev/null @@ -1,73 +0,0 @@ -import React, { useMemo } from 'react'; -import { - CaipAccountId, - isHexString, - parseCaipAccountId, -} from '@metamask/utils'; -import { toChecksumHexAddress } from '@metamask/controller-utils'; -import { SnapUIAvatar } from '../SnapUIAvatar/SnapUIAvatar'; -import { shortenString } from '../../../util/notifications/methods'; -import Text, { - TextVariant, -} from '../../../component-library/components/Texts/Text'; -import { Box } from '../../UI/Box/Box'; -import { AlignItems, FlexDirection } from '../../UI/Box/box.types'; -import { useDisplayName } from './useDisplayName'; - -export interface SnapUIAddressProps { - // The address must be a CAIP-10 string. - address: string; - // This is not currently exposed to Snaps. - avatarSize?: 'xs' | 'sm' | 'md' | 'lg'; - truncate?: boolean; - displayName?: boolean; - avatar?: boolean; -} - -export const SnapUIAddress: React.FunctionComponent<SnapUIAddressProps> = ({ - address, - avatarSize = 'md', - truncate = true, - displayName = false, - avatar = true, -}) => { - const caipIdentifier = useMemo(() => { - if (isHexString(address)) { - // For legacy address inputs we assume them to be Ethereum addresses. - // NOTE: This means the chain ID is not gonna be reliable. - return `eip155:1:${address}`; - } - - return address; - }, [address]); - - const parsed = useMemo( - () => parseCaipAccountId(caipIdentifier as CaipAccountId), - [caipIdentifier], - ); - - // For EVM addresses, we make sure they are checksummed. - const transformedAddress = - parsed.chain.namespace === 'eip155' - ? toChecksumHexAddress(parsed.address) - : parsed.address; - - const formattedAddress = truncate - ? shortenString(transformedAddress) - : address; - - const name = useDisplayName(parsed); - - return ( - <Box - flexDirection={FlexDirection.Row} - alignItems={AlignItems.center} - gap={8} - > - {avatar && <SnapUIAvatar address={caipIdentifier} size={avatarSize} />} - <Text variant={TextVariant.BodyMD} color="inherit"> - {displayName && name ? name : formattedAddress} - </Text> - </Box> - ); -}; diff --git a/app/components/Snaps/SnapUIAddress/__snapshots__/SnapUIAddress.test.tsx.snap b/app/components/Snaps/SnapUIAddress/__snapshots__/SnapUIAddress.test.tsx.snap deleted file mode 100644 index 1df64d384a80..000000000000 --- a/app/components/Snaps/SnapUIAddress/__snapshots__/SnapUIAddress.test.tsx.snap +++ /dev/null @@ -1,1399 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`SnapUIAddress renders Bitcoin address 1`] = ` -<View - alignItems="center" - flexDirection="row" - gap={8} - style={ - [ - { - "alignItems": "center", - "flexDirection": "row", - "gap": 8, - }, - undefined, - ] - } -> - <View - style={ - [ - { - "overflow": "hidden", - }, - { - "backgroundColor": "#2452E1", - "borderRadius": 16, - "height": 32, - "width": 32, - }, - undefined, - ] - } - > - <RNSVGSvgView - bbHeight={32} - bbWidth={32} - focusable={false} - height={32} - style={ - [ - { - "backgroundColor": "transparent", - "borderWidth": 0, - }, - { - "flex": 0, - "height": 32, - "width": 32, - }, - ] - } - width={32} - > - <RNSVGGroup - fill={ - { - "payload": 4278190080, - "type": 0, - } - } - > - <RNSVGRect - fill={ - { - "payload": 4278404701, - "type": 0, - } - } - height={32} - matrix={ - [ - -0.6142852000989433, - 0.7890840848346906, - -0.7890840848346906, - -0.6142852000989433, - 41.38442220412787, - 14.429364796825299, - ] - } - propList={ - [ - "fill", - ] - } - width={32} - x={0} - y={0} - /> - <RNSVGRect - fill={ - { - "payload": 4294399745, - "type": 0, - } - } - height={32} - matrix={ - [ - -0.8910065241883678, - 0.45399049973954686, - -0.45399049973954686, - -0.8910065241883678, - 44.69178448403159, - 34.07206191418916, - ] - } - propList={ - [ - "fill", - ] - } - width={32} - x={0} - y={0} - /> - <RNSVGRect - fill={ - { - "payload": 4278286988, - "type": 0, - } - } - height={32} - matrix={ - [ - -0.8348478632634064, - 0.5504807400849958, - -0.5504807400849958, - -0.8348478632634064, - 46.616692080655206, - 43.018475720213836, - ] - } - propList={ - [ - "fill", - ] - } - width={32} - x={0} - y={0} - /> - </RNSVGGroup> - </RNSVGSvgView> - </View> - <Text - accessibilityRole="text" - style={ - { - "color": "inherit", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, - "fontWeight": "400", - "letterSpacing": 0, - "lineHeight": 22, - } - } - > - 128Lkh3...Mp8p6 - </Text> -</View> -`; - -exports[`SnapUIAddress renders Bitcoin address with blockie 1`] = ` -<View - alignItems="center" - flexDirection="row" - gap={8} - style={ - [ - { - "alignItems": "center", - "flexDirection": "row", - "gap": 8, - }, - undefined, - ] - } -> - <Image - borderRadius={16} - height={32} - source={ - { - "uri": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAMAAAD04JH5AAAACVBMVEUpdqkxxtA7z9EPkoDKAAAAA3RSTlP////6yOLMAABAi0lEQVR42gGAQH+/AAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICJ+wuAXhHr2sAAAAASUVORK5CYII=", - } - } - width={32} - /> - <Text - accessibilityRole="text" - style={ - { - "color": "inherit", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, - "fontWeight": "400", - "letterSpacing": 0, - "lineHeight": 22, - } - } - > - 128Lkh3...Mp8p6 - </Text> -</View> -`; - -exports[`SnapUIAddress renders Cosmos address 1`] = ` -<View - alignItems="center" - flexDirection="row" - gap={8} - style={ - [ - { - "alignItems": "center", - "flexDirection": "row", - "gap": 8, - }, - undefined, - ] - } -> - <View - style={ - [ - { - "overflow": "hidden", - }, - { - "backgroundColor": "#033B5D", - "borderRadius": 16, - "height": 32, - "width": 32, - }, - undefined, - ] - } - > - <RNSVGSvgView - bbHeight={32} - bbWidth={32} - focusable={false} - height={32} - style={ - [ - { - "backgroundColor": "transparent", - "borderWidth": 0, - }, - { - "flex": 0, - "height": 32, - "width": 32, - }, - ] - } - width={32} - > - <RNSVGGroup - fill={ - { - "payload": 4278190080, - "type": 0, - } - } - > - <RNSVGRect - fill={ - { - "payload": 4280564449, - "type": 0, - } - } - height={32} - matrix={ - [ - -0.19765734037912552, - -0.980271174621722, - 0.980271174621722, - -0.19765734037912552, - -7.0989167163851015, - 36.124741566654706, - ] - } - propList={ - [ - "fill", - ] - } - width={32} - x={0} - y={0} - /> - <RNSVGRect - fill={ - { - "payload": 4294711597, - "type": 0, - } - } - height={32} - matrix={ - [ - -0.9865721616069695, - -0.16332596224162213, - 0.16332596224162213, - -0.9865721616069695, - 34.849276460507994, - 44.34205740189883, - ] - } - propList={ - [ - "fill", - ] - } - width={32} - x={0} - y={0} - /> - <RNSVGRect - fill={ - { - "payload": 4293849856, - "type": 0, - } - } - height={32} - matrix={ - [ - 0.4383711467890774, - -0.898794046299167, - 0.898794046299167, - 0.4383711467890774, - -31.02462951759497, - 5.576360605670079, - ] - } - propList={ - [ - "fill", - ] - } - width={32} - x={0} - y={0} - /> - </RNSVGGroup> - </RNSVGSvgView> - </View> - <Text - accessibilityRole="text" - style={ - { - "color": "inherit", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, - "fontWeight": "400", - "letterSpacing": 0, - "lineHeight": 22, - } - } - > - cosmos1...6hdc0 - </Text> -</View> -`; - -exports[`SnapUIAddress renders Cosmos address with blockie 1`] = ` -<View - alignItems="center" - flexDirection="row" - gap={8} - style={ - [ - { - "alignItems": "center", - "flexDirection": "row", - "gap": 8, - }, - undefined, - ] - } -> - <Image - borderRadius={16} - height={32} - source={ - { - "uri": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAMAAAD04JH5AAAACVBMVEU7MYWX3joghpi+PrwkAAAAA3RSTlP////6yOLMAABAi0lEQVR42gGAQH+/AAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBIF0mAWfyM7MAAAAASUVORK5CYII=", - } - } - width={32} - /> - <Text - accessibilityRole="text" - style={ - { - "color": "inherit", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, - "fontWeight": "400", - "letterSpacing": 0, - "lineHeight": 22, - } - } - > - cosmos1...6hdc0 - </Text> -</View> -`; - -exports[`SnapUIAddress renders Ethereum address 1`] = ` -<View - alignItems="center" - flexDirection="row" - gap={8} - style={ - [ - { - "alignItems": "center", - "flexDirection": "row", - "gap": 8, - }, - undefined, - ] - } -> - <View - style={ - [ - { - "overflow": "hidden", - }, - { - "backgroundColor": "#C71452", - "borderRadius": 16, - "height": 32, - "width": 32, - }, - undefined, - ] - } - > - <RNSVGSvgView - bbHeight={32} - bbWidth={32} - focusable={false} - height={32} - style={ - [ - { - "backgroundColor": "transparent", - "borderWidth": 0, - }, - { - "flex": 0, - "height": 32, - "width": 32, - }, - ] - } - width={32} - > - <RNSVGGroup - fill={ - { - "payload": 4278190080, - "type": 0, - } - } - > - <RNSVGRect - fill={ - { - "payload": 4294022658, - "type": 0, - } - } - height={32} - matrix={ - [ - -0.6374239897486895, - -0.7705132427757894, - 0.7705132427757894, - -0.6374239897486895, - 11.053062989283362, - 43.47891226439789, - ] - } - propList={ - [ - "fill", - ] - } - width={32} - x={0} - y={0} - /> - <RNSVGRect - fill={ - { - "payload": 4280577249, - "type": 0, - } - } - height={32} - matrix={ - [ - -0.41786707380107674, - -0.9085081775267219, - 0.9085081775267219, - -0.41786707380107674, - -5.348907952243133, - 27.780085344551686, - ] - } - propList={ - [ - "fill", - ] - } - width={32} - x={0} - y={0} - /> - <RNSVGRect - fill={ - { - "payload": 4278291595, - "type": 0, - } - } - height={32} - matrix={ - [ - -0.9943379441332046, - 0.10626407133623336, - -0.10626407133623336, - -0.9943379441332046, - 52.03432629974044, - 53.45795917102963, - ] - } - propList={ - [ - "fill", - ] - } - width={32} - x={0} - y={0} - /> - </RNSVGGroup> - </RNSVGSvgView> - </View> - <Text - accessibilityRole="text" - style={ - { - "color": "inherit", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, - "fontWeight": "400", - "letterSpacing": 0, - "lineHeight": 22, - } - } - > - 0xab16a...Bfcdb - </Text> -</View> -`; - -exports[`SnapUIAddress renders Ethereum address with blockie 1`] = ` -<View - alignItems="center" - flexDirection="row" - gap={8} - style={ - [ - { - "alignItems": "center", - "flexDirection": "row", - "gap": 8, - }, - undefined, - ] - } -> - <Image - borderRadius={16} - height={32} - source={ - { - "uri": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAMAAAD04JH5AAAACVBMVEXfzEuAVsrUUj5Qp4uTAAAAA3RSTlP////6yOLMAABAi0lEQVR42gGAQH+/AAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAptEeAW5/BekAAAAASUVORK5CYII=", - } - } - width={32} - /> - <Text - accessibilityRole="text" - style={ - { - "color": "inherit", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, - "fontWeight": "400", - "letterSpacing": 0, - "lineHeight": 22, - } - } - > - 0xab16a...Bfcdb - </Text> -</View> -`; - -exports[`SnapUIAddress renders Hedera address 1`] = ` -<View - alignItems="center" - flexDirection="row" - gap={8} - style={ - [ - { - "alignItems": "center", - "flexDirection": "row", - "gap": 8, - }, - undefined, - ] - } -> - <View - style={ - [ - { - "overflow": "hidden", - }, - { - "backgroundColor": "#FC1950", - "borderRadius": 16, - "height": 32, - "width": 32, - }, - undefined, - ] - } - > - <RNSVGSvgView - bbHeight={32} - bbWidth={32} - focusable={false} - height={32} - style={ - [ - { - "backgroundColor": "transparent", - "borderWidth": 0, - }, - { - "flex": 0, - "height": 32, - "width": 32, - }, - ] - } - width={32} - > - <RNSVGGroup - fill={ - { - "payload": 4278190080, - "type": 0, - } - } - > - <RNSVGRect - fill={ - { - "payload": 4291236927, - "type": 0, - } - } - height={32} - matrix={ - [ - 0.14953534344370936, - 0.9887563810470059, - -0.9887563810470059, - 0.14953534344370936, - 37.320467000349105, - 1.602385558164804, - ] - } - propList={ - [ - "fill", - ] - } - width={32} - x={0} - y={0} - /> - <RNSVGRect - fill={ - { - "payload": 4294398209, - "type": 0, - } - } - height={32} - matrix={ - [ - -0.3452981989985342, - -0.938493022759556, - 0.938493022759556, - -0.3452981989985342, - -8.606649434280506, - 42.19889068879461, - ] - } - propList={ - [ - "fill", - ] - } - width={32} - x={0} - y={0} - /> - <RNSVGRect - fill={ - { - "payload": 4278405213, - "type": 0, - } - } - height={32} - matrix={ - [ - 0.7804304073383298, - -0.6252426563357052, - 0.6252426563357052, - 0.7804304073383298, - 12.291347391312584, - -7.449445396869988, - ] - } - propList={ - [ - "fill", - ] - } - width={32} - x={0} - y={0} - /> - </RNSVGGroup> - </RNSVGSvgView> - </View> - <Text - accessibilityRole="text" - style={ - { - "color": "inherit", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, - "fontWeight": "400", - "letterSpacing": 0, - "lineHeight": 22, - } - } - > - 0.0.123...zbhlt - </Text> -</View> -`; - -exports[`SnapUIAddress renders Hedera address with blockie 1`] = ` -<View - alignItems="center" - flexDirection="row" - gap={8} - style={ - [ - { - "alignItems": "center", - "flexDirection": "row", - "gap": 8, - }, - undefined, - ] - } -> - <Image - borderRadius={16} - height={32} - source={ - { - "uri": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAMAAAD04JH5AAAACVBMVEXndD9EiSTjBxK7NmS1AAAAA3RSTlP////6yOLMAABAi0lEQVR42gGAQH+/AAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBC9c+AWISzuoAAAAASUVORK5CYII=", - } - } - width={32} - /> - <Text - accessibilityRole="text" - style={ - { - "color": "inherit", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, - "fontWeight": "400", - "letterSpacing": 0, - "lineHeight": 22, - } - } - > - 0.0.123...zbhlt - </Text> -</View> -`; - -exports[`SnapUIAddress renders Polkadot address 1`] = ` -<View - alignItems="center" - flexDirection="row" - gap={8} - style={ - [ - { - "alignItems": "center", - "flexDirection": "row", - "gap": 8, - }, - undefined, - ] - } -> - <View - style={ - [ - { - "overflow": "hidden", - }, - { - "backgroundColor": "#15C5F2", - "borderRadius": 16, - "height": 32, - "width": 32, - }, - undefined, - ] - } - > - <RNSVGSvgView - bbHeight={32} - bbWidth={32} - focusable={false} - height={32} - style={ - [ - { - "backgroundColor": "transparent", - "borderWidth": 0, - }, - { - "flex": 0, - "height": 32, - "width": 32, - }, - ] - } - width={32} - > - <RNSVGGroup - fill={ - { - "payload": 4278190080, - "type": 0, - } - } - > - <RNSVGRect - fill={ - { - "payload": 4280585185, - "type": 0, - } - } - height={32} - matrix={ - [ - -0.6600016679609368, - -0.7512641335035111, - 0.7512641335035111, - -0.6600016679609368, - 13.607164573260809, - 37.80415490169137, - ] - } - propList={ - [ - "fill", - ] - } - width={32} - x={0} - y={0} - /> - <RNSVGRect - fill={ - { - "payload": 4278291572, - "type": 0, - } - } - height={32} - matrix={ - [ - -0.9961946980917455, - 0.0871557427476582, - -0.0871557427476582, - -0.9961946980917455, - 47.96746618105496, - 30.71565010314135, - ] - } - propList={ - [ - "fill", - ] - } - width={32} - x={0} - y={0} - /> - <RNSVGRect - fill={ - { - "payload": 4294012418, - "type": 0, - } - } - height={32} - matrix={ - [ - 0.953190667792947, - 0.3023698907504445, - -0.3023698907504445, - 0.953190667792947, - 27.920878733171854, - -3.4443162292122325, - ] - } - propList={ - [ - "fill", - ] - } - width={32} - x={0} - y={0} - /> - </RNSVGGroup> - </RNSVGSvgView> - </View> - <Text - accessibilityRole="text" - style={ - { - "color": "inherit", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, - "fontWeight": "400", - "letterSpacing": 0, - "lineHeight": 22, - } - } - > - 5hmuyxw...egmfy - </Text> -</View> -`; - -exports[`SnapUIAddress renders Polkadot address with blockie 1`] = ` -<View - alignItems="center" - flexDirection="row" - gap={8} - style={ - [ - { - "alignItems": "center", - "flexDirection": "row", - "gap": 8, - }, - undefined, - ] - } -> - <Image - borderRadius={16} - height={32} - source={ - { - "uri": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAMAAAD04JH5AAAACVBMVEWONyASgTR7lxMyit4TAAAAA3RSTlP////6yOLMAABAi0lEQVR42gGAQH+/AAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBiAhCAWH8DQcAAAAASUVORK5CYII=", - } - } - width={32} - /> - <Text - accessibilityRole="text" - style={ - { - "color": "inherit", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, - "fontWeight": "400", - "letterSpacing": 0, - "lineHeight": 22, - } - } - > - 5hmuyxw...egmfy - </Text> -</View> -`; - -exports[`SnapUIAddress renders Starknet address 1`] = ` -<View - alignItems="center" - flexDirection="row" - gap={8} - style={ - [ - { - "alignItems": "center", - "flexDirection": "row", - "gap": 8, - }, - undefined, - ] - } -> - <View - style={ - [ - { - "overflow": "hidden", - }, - { - "backgroundColor": "#C7146E", - "borderRadius": 16, - "height": 32, - "width": 32, - }, - undefined, - ] - } - > - <RNSVGSvgView - bbHeight={32} - bbWidth={32} - focusable={false} - height={32} - style={ - [ - { - "backgroundColor": "transparent", - "borderWidth": 0, - }, - { - "flex": 0, - "height": 32, - "width": 32, - }, - ] - } - width={32} - > - <RNSVGGroup - fill={ - { - "payload": 4278190080, - "type": 0, - } - } - > - <RNSVGRect - fill={ - { - "payload": 4280584673, - "type": 0, - } - } - height={32} - matrix={ - [ - 0.6454576877239506, - 0.7637960286346421, - -0.7637960286346421, - 0.6454576877239506, - 19.72240983294027, - -10.014248315377227, - ] - } - propList={ - [ - "fill", - ] - } - width={32} - x={0} - y={0} - /> - <RNSVGRect - fill={ - { - "payload": 4294152960, - "type": 0, - } - } - height={32} - matrix={ - [ - 0.9909831997148363, - -0.13398618541829194, - 0.13398618541829194, - 0.9909831997148363, - -18.754789048385472, - -5.941873265706983, - ] - } - propList={ - [ - "fill", - ] - } - width={32} - x={0} - y={0} - /> - <RNSVGRect - fill={ - { - "payload": 4279616242, - "type": 0, - } - } - height={32} - matrix={ - [ - -0.7965299180241964, - -0.6045991148623747, - 0.6045991148623747, - -0.7965299180241964, - -4.3840057335908575, - 41.26998414158069, - ] - } - propList={ - [ - "fill", - ] - } - width={32} - x={0} - y={0} - /> - </RNSVGGroup> - </RNSVGSvgView> - </View> - <Text - accessibilityRole="text" - style={ - { - "color": "inherit", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, - "fontWeight": "400", - "letterSpacing": 0, - "lineHeight": 22, - } - } - > - 0x02dd1...0ab57 - </Text> -</View> -`; - -exports[`SnapUIAddress renders Starknet address with blockie 1`] = ` -<View - alignItems="center" - flexDirection="row" - gap={8} - style={ - [ - { - "alignItems": "center", - "flexDirection": "row", - "gap": 8, - }, - undefined, - ] - } -> - <Image - borderRadius={16} - height={32} - source={ - { - "uri": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAMAAAD04JH5AAAACVBMVEVpc9IWhYjg9F/LoqLsAAAAA3RSTlP////6yOLMAABAi0lEQVR42gGAQH+/AAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAkks2AfzvMOsAAAAASUVORK5CYII=", - } - } - width={32} - /> - <Text - accessibilityRole="text" - style={ - { - "color": "inherit", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, - "fontWeight": "400", - "letterSpacing": 0, - "lineHeight": 22, - } - } - > - 0x02dd1...0ab57 - </Text> -</View> -`; - -exports[`SnapUIAddress renders legacy Ethereum address 1`] = ` -<View - alignItems="center" - flexDirection="row" - gap={8} - style={ - [ - { - "alignItems": "center", - "flexDirection": "row", - "gap": 8, - }, - undefined, - ] - } -> - <View - style={ - [ - { - "overflow": "hidden", - }, - { - "backgroundColor": "#C71452", - "borderRadius": 16, - "height": 32, - "width": 32, - }, - undefined, - ] - } - > - <RNSVGSvgView - bbHeight={32} - bbWidth={32} - focusable={false} - height={32} - style={ - [ - { - "backgroundColor": "transparent", - "borderWidth": 0, - }, - { - "flex": 0, - "height": 32, - "width": 32, - }, - ] - } - width={32} - > - <RNSVGGroup - fill={ - { - "payload": 4278190080, - "type": 0, - } - } - > - <RNSVGRect - fill={ - { - "payload": 4294022658, - "type": 0, - } - } - height={32} - matrix={ - [ - -0.6374239897486895, - -0.7705132427757894, - 0.7705132427757894, - -0.6374239897486895, - 11.053062989283362, - 43.47891226439789, - ] - } - propList={ - [ - "fill", - ] - } - width={32} - x={0} - y={0} - /> - <RNSVGRect - fill={ - { - "payload": 4280577249, - "type": 0, - } - } - height={32} - matrix={ - [ - -0.41786707380107674, - -0.9085081775267219, - 0.9085081775267219, - -0.41786707380107674, - -5.348907952243133, - 27.780085344551686, - ] - } - propList={ - [ - "fill", - ] - } - width={32} - x={0} - y={0} - /> - <RNSVGRect - fill={ - { - "payload": 4278291595, - "type": 0, - } - } - height={32} - matrix={ - [ - -0.9943379441332046, - 0.10626407133623336, - -0.10626407133623336, - -0.9943379441332046, - 52.03432629974044, - 53.45795917102963, - ] - } - propList={ - [ - "fill", - ] - } - width={32} - x={0} - y={0} - /> - </RNSVGGroup> - </RNSVGSvgView> - </View> - <Text - accessibilityRole="text" - style={ - { - "color": "inherit", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, - "fontWeight": "400", - "letterSpacing": 0, - "lineHeight": 22, - } - } - > - 0xab16a...Bfcdb - </Text> -</View> -`; diff --git a/app/components/Snaps/SnapUIAddress/useDisplayName.ts b/app/components/Snaps/SnapUIAddress/useDisplayName.ts deleted file mode 100644 index 465562116469..000000000000 --- a/app/components/Snaps/SnapUIAddress/useDisplayName.ts +++ /dev/null @@ -1,59 +0,0 @@ -import { - CaipChainId, - KnownCaipNamespace, - CaipNamespace, -} from '@metamask/utils'; -import { useSelector } from 'react-redux'; -import { decimalToHex } from '../../../util/conversions'; -import { RootState } from '../../../reducers'; -import { selectInternalAccounts } from '../../../selectors/accountsController'; -import { toLowerCaseEquals } from '../../../util/general'; -import { selectAddressBookByChain } from '../../../selectors/addressBookController'; - -export interface UseDisplayNameParams { - chain: { - namespace: CaipNamespace; - reference: string; - }; - chainId: CaipChainId; - address: string; -} - -/** - * Get the display name for an address. - * This will look for an account name in the state, and if not found, it will look for an address book entry. - * - * @param params - The parsed CAIP-10 ID. - * @returns The display name for the address. - */ -export const useDisplayName = ( - params: UseDisplayNameParams, -): string | undefined => { - const { - address, - chain: { namespace, reference }, - } = params; - - const isEip155 = namespace === KnownCaipNamespace.Eip155; - - const accounts = useSelector(selectInternalAccounts); - - const account = accounts.find((possibleAccount) => - toLowerCaseEquals(possibleAccount.address, address), - ); - - const chainAddressBook = useSelector((state: RootState) => - selectAddressBookByChain( - state, - `0x${decimalToHex(isEip155 ? reference : `0`)}`, - ), - ); - - const addressBookEntry = chainAddressBook.find((contact) => - toLowerCaseEquals(contact.address, address), - ); - - return ( - account?.metadata?.name || (isEip155 && addressBookEntry?.name) || undefined - ); -}; diff --git a/app/components/UI/Bridge/index.js b/app/components/UI/Bridge/index.js deleted file mode 100644 index 557e83120625..000000000000 --- a/app/components/UI/Bridge/index.js +++ /dev/null @@ -1,33 +0,0 @@ -import React from 'react'; -import { StyleSheet, View } from 'react-native'; -import ScreenView from '../../Base/ScreenView'; -import { useTheme } from '../../../util/theme'; -import Text from '../../../component-library/components/Texts/Text'; - -const createStyles = (colors) => - StyleSheet.create({ - container: { backgroundColor: colors.background.default }, - content: { - flexGrow: 1, - justifyContent: 'center', - }, - }); - -const BridgeView = () => { - const { colors } = useTheme(); - const styles = createStyles(colors); - - return ( - <ScreenView - style={styles.container} - contentContainerStyle={styles.screen} - keyboardShouldPersistTaps="handled" - > - <View style={styles.content}> - <Text>Bridge</Text> - </View> - </ScreenView> - ); -}; - -export default BridgeView; diff --git a/app/components/UI/Snaps/SnapUIAddress/SnapUIAddress.test.tsx b/app/components/UI/Snaps/SnapUIAddress/SnapUIAddress.test.tsx deleted file mode 100644 index 15bc6a453b2a..000000000000 --- a/app/components/UI/Snaps/SnapUIAddress/SnapUIAddress.test.tsx +++ /dev/null @@ -1,198 +0,0 @@ -import React from 'react'; -import { SnapUIAddress } from './SnapUIAddress'; -import renderWithProvider from '../../../../util/test/renderWithProvider'; - -const baseMockState = { - state: { - engine: { - backgroundState: { - KeyringController: { - keyrings: [], - }, - AccountsController: { - internalAccounts: { - accounts: { - foo: { - address: '0xab16a96D359eC26a11e2C2b3d8f8B8942d5Bfcdb', - metadata: { - name: 'My Account', - }, - }, - }, - }, - }, - AddressBookController: { - addressBook: { - '0x1': { - '0xab16a96D359eC26a11e2C2b3d8f8B8942d5Bfcda': { - address: '0xab16a96D359eC26a11e2C2b3d8f8B8942d5Bfcda', - name: 'Test Contact', - }, - }, - }, - }, - }, - }, - }, -}; - -const mockStateWithoutBlockies = { - state: { - ...baseMockState.state, - settings: { - useBlockieIcon: false, - }, - }, -}; - -const mockStateWithBlockies = { - state: { - ...baseMockState.state, - settings: { - useBlockieIcon: true, - }, - }, -}; - -describe('SnapUIAddress', () => { - it('renders legacy Ethereum address', () => { - const { toJSON } = renderWithProvider( - <SnapUIAddress address="0xab16a96d359ec26a11e2c2b3d8f8b8942d5bfcdb" />, - mockStateWithoutBlockies, - ); - - expect(toJSON()).toMatchSnapshot(); - }); - - it('renders Ethereum address', () => { - const { toJSON } = renderWithProvider( - <SnapUIAddress address="eip155:1:0xab16a96D359eC26a11e2C2b3d8f8B8942d5Bfcdb" />, - mockStateWithoutBlockies, - ); - - expect(toJSON()).toMatchSnapshot(); - }); - - it('renders account name', () => { - const { getByText } = renderWithProvider( - <SnapUIAddress - address="eip155:1:0xab16a96D359eC26a11e2C2b3d8f8B8942d5Bfcdb" - displayName - />, - baseMockState, - ); - - expect(getByText('My Account')).toBeDefined(); - }); - - it('renders contact name', () => { - const { getByText } = renderWithProvider( - <SnapUIAddress - address="eip155:1:0xab16a96D359eC26a11e2C2b3d8f8B8942d5Bfcda" - displayName - />, - baseMockState, - ); - - expect(getByText('Test Contact')).toBeDefined(); - }); - - it('renders Ethereum address with blockie', () => { - const { toJSON } = renderWithProvider( - <SnapUIAddress address="eip155:1:0xab16a96D359eC26a11e2C2b3d8f8B8942d5Bfcdb" />, - mockStateWithBlockies, - ); - - expect(toJSON()).toMatchSnapshot(); - }); - - it('renders Bitcoin address', () => { - const { toJSON } = renderWithProvider( - <SnapUIAddress address="bip122:000000000019d6689c085ae165831e93:128Lkh3S7CkDTBZ8W7BbpsN3YYizJMp8p6" />, - mockStateWithoutBlockies, - ); - - expect(toJSON()).toMatchSnapshot(); - }); - - it('renders Bitcoin address with blockie', () => { - const { toJSON } = renderWithProvider( - <SnapUIAddress address="bip122:000000000019d6689c085ae165831e93:128Lkh3S7CkDTBZ8W7BbpsN3YYizJMp8p6" />, - mockStateWithBlockies, - ); - - expect(toJSON()).toMatchSnapshot(); - }); - - it('renders Cosmos address', () => { - const { toJSON } = renderWithProvider( - <SnapUIAddress address="cosmos:cosmoshub-3:cosmos1t2uflqwqe0fsj0shcfkrvpukewcw40yjj6hdc0" />, - mockStateWithoutBlockies, - ); - - expect(toJSON()).toMatchSnapshot(); - }); - - it('renders Cosmos address with blockie', () => { - const { toJSON } = renderWithProvider( - <SnapUIAddress address="cosmos:cosmoshub-3:cosmos1t2uflqwqe0fsj0shcfkrvpukewcw40yjj6hdc0" />, - mockStateWithBlockies, - ); - - expect(toJSON()).toMatchSnapshot(); - }); - - it('renders Polkadot address', () => { - const { toJSON } = renderWithProvider( - <SnapUIAddress address="polkadot:b0a8d493285c2df73290dfb7e61f870f:5hmuyxw9xdgbpptgypokw4thfyoe3ryenebr381z9iaegmfy" />, - mockStateWithoutBlockies, - ); - - expect(toJSON()).toMatchSnapshot(); - }); - - it('renders Polkadot address with blockie', () => { - const { toJSON } = renderWithProvider( - <SnapUIAddress address="polkadot:b0a8d493285c2df73290dfb7e61f870f:5hmuyxw9xdgbpptgypokw4thfyoe3ryenebr381z9iaegmfy" />, - mockStateWithBlockies, - ); - - expect(toJSON()).toMatchSnapshot(); - }); - - it('renders Starknet address', () => { - const { toJSON } = renderWithProvider( - <SnapUIAddress address="starknet:SN_GOERLI:0x02dd1b492765c064eac4039e3841aa5f382773b598097a40073bd8b48170ab57" />, - mockStateWithoutBlockies, - ); - - expect(toJSON()).toMatchSnapshot(); - }); - - it('renders Starknet address with blockie', () => { - const { toJSON } = renderWithProvider( - <SnapUIAddress address="starknet:SN_GOERLI:0x02dd1b492765c064eac4039e3841aa5f382773b598097a40073bd8b48170ab57" />, - mockStateWithBlockies, - ); - - expect(toJSON()).toMatchSnapshot(); - }); - - it('renders Hedera address', () => { - const { toJSON } = renderWithProvider( - <SnapUIAddress address="hedera:mainnet:0.0.1234567890-zbhlt" />, - mockStateWithoutBlockies, - ); - - expect(toJSON()).toMatchSnapshot(); - }); - - it('renders Hedera address with blockie', () => { - const { toJSON } = renderWithProvider( - <SnapUIAddress address="hedera:mainnet:0.0.1234567890-zbhlt" />, - mockStateWithBlockies, - ); - - expect(toJSON()).toMatchSnapshot(); - }); -}); diff --git a/app/components/UI/Snaps/SnapUIAddress/SnapUIAddress.tsx b/app/components/UI/Snaps/SnapUIAddress/SnapUIAddress.tsx deleted file mode 100644 index da52e2ee86ac..000000000000 --- a/app/components/UI/Snaps/SnapUIAddress/SnapUIAddress.tsx +++ /dev/null @@ -1,73 +0,0 @@ -import React, { useMemo } from 'react'; -import { - CaipAccountId, - isHexString, - parseCaipAccountId, -} from '@metamask/utils'; -import { toChecksumHexAddress } from '@metamask/controller-utils'; -import { SnapUIAvatar } from '../SnapUIAvatar/SnapUIAvatar'; -import { shortenString } from '../../../../util/notifications/methods'; -import Text, { - TextVariant, -} from '../../../../component-library/components/Texts/Text'; -import { Box } from '../../Box/Box'; -import { AlignItems, FlexDirection } from '../../Box/box.types'; -import { useDisplayName } from './useDisplayName'; - -export interface SnapUIAddressProps { - // The address must be a CAIP-10 string. - address: string; - // This is not currently exposed to Snaps. - avatarSize?: 'xs' | 'sm' | 'md' | 'lg'; - truncate?: boolean; - displayName?: boolean; - avatar?: boolean; -} - -export const SnapUIAddress: React.FunctionComponent<SnapUIAddressProps> = ({ - address, - avatarSize = 'md', - truncate = true, - displayName = false, - avatar = true, -}) => { - const caipIdentifier = useMemo(() => { - if (isHexString(address)) { - // For legacy address inputs we assume them to be Ethereum addresses. - // NOTE: This means the chain ID is not gonna be reliable. - return `eip155:1:${address}`; - } - - return address; - }, [address]); - - const parsed = useMemo( - () => parseCaipAccountId(caipIdentifier as CaipAccountId), - [caipIdentifier], - ); - - // For EVM addresses, we make sure they are checksummed. - const transformedAddress = - parsed.chain.namespace === 'eip155' - ? toChecksumHexAddress(parsed.address) - : parsed.address; - - const formattedAddress = truncate - ? shortenString(transformedAddress) - : address; - - const name = useDisplayName(parsed); - - return ( - <Box - flexDirection={FlexDirection.Row} - alignItems={AlignItems.center} - gap={8} - > - {avatar && <SnapUIAvatar address={caipIdentifier} size={avatarSize} />} - <Text variant={TextVariant.BodyMD} color="inherit"> - {displayName && name ? name : formattedAddress} - </Text> - </Box> - ); -}; diff --git a/app/components/UI/Snaps/SnapUIAddress/__snapshots__/SnapUIAddress.test.tsx.snap b/app/components/UI/Snaps/SnapUIAddress/__snapshots__/SnapUIAddress.test.tsx.snap deleted file mode 100644 index 1df64d384a80..000000000000 --- a/app/components/UI/Snaps/SnapUIAddress/__snapshots__/SnapUIAddress.test.tsx.snap +++ /dev/null @@ -1,1399 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`SnapUIAddress renders Bitcoin address 1`] = ` -<View - alignItems="center" - flexDirection="row" - gap={8} - style={ - [ - { - "alignItems": "center", - "flexDirection": "row", - "gap": 8, - }, - undefined, - ] - } -> - <View - style={ - [ - { - "overflow": "hidden", - }, - { - "backgroundColor": "#2452E1", - "borderRadius": 16, - "height": 32, - "width": 32, - }, - undefined, - ] - } - > - <RNSVGSvgView - bbHeight={32} - bbWidth={32} - focusable={false} - height={32} - style={ - [ - { - "backgroundColor": "transparent", - "borderWidth": 0, - }, - { - "flex": 0, - "height": 32, - "width": 32, - }, - ] - } - width={32} - > - <RNSVGGroup - fill={ - { - "payload": 4278190080, - "type": 0, - } - } - > - <RNSVGRect - fill={ - { - "payload": 4278404701, - "type": 0, - } - } - height={32} - matrix={ - [ - -0.6142852000989433, - 0.7890840848346906, - -0.7890840848346906, - -0.6142852000989433, - 41.38442220412787, - 14.429364796825299, - ] - } - propList={ - [ - "fill", - ] - } - width={32} - x={0} - y={0} - /> - <RNSVGRect - fill={ - { - "payload": 4294399745, - "type": 0, - } - } - height={32} - matrix={ - [ - -0.8910065241883678, - 0.45399049973954686, - -0.45399049973954686, - -0.8910065241883678, - 44.69178448403159, - 34.07206191418916, - ] - } - propList={ - [ - "fill", - ] - } - width={32} - x={0} - y={0} - /> - <RNSVGRect - fill={ - { - "payload": 4278286988, - "type": 0, - } - } - height={32} - matrix={ - [ - -0.8348478632634064, - 0.5504807400849958, - -0.5504807400849958, - -0.8348478632634064, - 46.616692080655206, - 43.018475720213836, - ] - } - propList={ - [ - "fill", - ] - } - width={32} - x={0} - y={0} - /> - </RNSVGGroup> - </RNSVGSvgView> - </View> - <Text - accessibilityRole="text" - style={ - { - "color": "inherit", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, - "fontWeight": "400", - "letterSpacing": 0, - "lineHeight": 22, - } - } - > - 128Lkh3...Mp8p6 - </Text> -</View> -`; - -exports[`SnapUIAddress renders Bitcoin address with blockie 1`] = ` -<View - alignItems="center" - flexDirection="row" - gap={8} - style={ - [ - { - "alignItems": "center", - "flexDirection": "row", - "gap": 8, - }, - undefined, - ] - } -> - <Image - borderRadius={16} - height={32} - source={ - { - "uri": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAMAAAD04JH5AAAACVBMVEUpdqkxxtA7z9EPkoDKAAAAA3RSTlP////6yOLMAABAi0lEQVR42gGAQH+/AAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICJ+wuAXhHr2sAAAAASUVORK5CYII=", - } - } - width={32} - /> - <Text - accessibilityRole="text" - style={ - { - "color": "inherit", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, - "fontWeight": "400", - "letterSpacing": 0, - "lineHeight": 22, - } - } - > - 128Lkh3...Mp8p6 - </Text> -</View> -`; - -exports[`SnapUIAddress renders Cosmos address 1`] = ` -<View - alignItems="center" - flexDirection="row" - gap={8} - style={ - [ - { - "alignItems": "center", - "flexDirection": "row", - "gap": 8, - }, - undefined, - ] - } -> - <View - style={ - [ - { - "overflow": "hidden", - }, - { - "backgroundColor": "#033B5D", - "borderRadius": 16, - "height": 32, - "width": 32, - }, - undefined, - ] - } - > - <RNSVGSvgView - bbHeight={32} - bbWidth={32} - focusable={false} - height={32} - style={ - [ - { - "backgroundColor": "transparent", - "borderWidth": 0, - }, - { - "flex": 0, - "height": 32, - "width": 32, - }, - ] - } - width={32} - > - <RNSVGGroup - fill={ - { - "payload": 4278190080, - "type": 0, - } - } - > - <RNSVGRect - fill={ - { - "payload": 4280564449, - "type": 0, - } - } - height={32} - matrix={ - [ - -0.19765734037912552, - -0.980271174621722, - 0.980271174621722, - -0.19765734037912552, - -7.0989167163851015, - 36.124741566654706, - ] - } - propList={ - [ - "fill", - ] - } - width={32} - x={0} - y={0} - /> - <RNSVGRect - fill={ - { - "payload": 4294711597, - "type": 0, - } - } - height={32} - matrix={ - [ - -0.9865721616069695, - -0.16332596224162213, - 0.16332596224162213, - -0.9865721616069695, - 34.849276460507994, - 44.34205740189883, - ] - } - propList={ - [ - "fill", - ] - } - width={32} - x={0} - y={0} - /> - <RNSVGRect - fill={ - { - "payload": 4293849856, - "type": 0, - } - } - height={32} - matrix={ - [ - 0.4383711467890774, - -0.898794046299167, - 0.898794046299167, - 0.4383711467890774, - -31.02462951759497, - 5.576360605670079, - ] - } - propList={ - [ - "fill", - ] - } - width={32} - x={0} - y={0} - /> - </RNSVGGroup> - </RNSVGSvgView> - </View> - <Text - accessibilityRole="text" - style={ - { - "color": "inherit", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, - "fontWeight": "400", - "letterSpacing": 0, - "lineHeight": 22, - } - } - > - cosmos1...6hdc0 - </Text> -</View> -`; - -exports[`SnapUIAddress renders Cosmos address with blockie 1`] = ` -<View - alignItems="center" - flexDirection="row" - gap={8} - style={ - [ - { - "alignItems": "center", - "flexDirection": "row", - "gap": 8, - }, - undefined, - ] - } -> - <Image - borderRadius={16} - height={32} - source={ - { - "uri": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAMAAAD04JH5AAAACVBMVEU7MYWX3joghpi+PrwkAAAAA3RSTlP////6yOLMAABAi0lEQVR42gGAQH+/AAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBIF0mAWfyM7MAAAAASUVORK5CYII=", - } - } - width={32} - /> - <Text - accessibilityRole="text" - style={ - { - "color": "inherit", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, - "fontWeight": "400", - "letterSpacing": 0, - "lineHeight": 22, - } - } - > - cosmos1...6hdc0 - </Text> -</View> -`; - -exports[`SnapUIAddress renders Ethereum address 1`] = ` -<View - alignItems="center" - flexDirection="row" - gap={8} - style={ - [ - { - "alignItems": "center", - "flexDirection": "row", - "gap": 8, - }, - undefined, - ] - } -> - <View - style={ - [ - { - "overflow": "hidden", - }, - { - "backgroundColor": "#C71452", - "borderRadius": 16, - "height": 32, - "width": 32, - }, - undefined, - ] - } - > - <RNSVGSvgView - bbHeight={32} - bbWidth={32} - focusable={false} - height={32} - style={ - [ - { - "backgroundColor": "transparent", - "borderWidth": 0, - }, - { - "flex": 0, - "height": 32, - "width": 32, - }, - ] - } - width={32} - > - <RNSVGGroup - fill={ - { - "payload": 4278190080, - "type": 0, - } - } - > - <RNSVGRect - fill={ - { - "payload": 4294022658, - "type": 0, - } - } - height={32} - matrix={ - [ - -0.6374239897486895, - -0.7705132427757894, - 0.7705132427757894, - -0.6374239897486895, - 11.053062989283362, - 43.47891226439789, - ] - } - propList={ - [ - "fill", - ] - } - width={32} - x={0} - y={0} - /> - <RNSVGRect - fill={ - { - "payload": 4280577249, - "type": 0, - } - } - height={32} - matrix={ - [ - -0.41786707380107674, - -0.9085081775267219, - 0.9085081775267219, - -0.41786707380107674, - -5.348907952243133, - 27.780085344551686, - ] - } - propList={ - [ - "fill", - ] - } - width={32} - x={0} - y={0} - /> - <RNSVGRect - fill={ - { - "payload": 4278291595, - "type": 0, - } - } - height={32} - matrix={ - [ - -0.9943379441332046, - 0.10626407133623336, - -0.10626407133623336, - -0.9943379441332046, - 52.03432629974044, - 53.45795917102963, - ] - } - propList={ - [ - "fill", - ] - } - width={32} - x={0} - y={0} - /> - </RNSVGGroup> - </RNSVGSvgView> - </View> - <Text - accessibilityRole="text" - style={ - { - "color": "inherit", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, - "fontWeight": "400", - "letterSpacing": 0, - "lineHeight": 22, - } - } - > - 0xab16a...Bfcdb - </Text> -</View> -`; - -exports[`SnapUIAddress renders Ethereum address with blockie 1`] = ` -<View - alignItems="center" - flexDirection="row" - gap={8} - style={ - [ - { - "alignItems": "center", - "flexDirection": "row", - "gap": 8, - }, - undefined, - ] - } -> - <Image - borderRadius={16} - height={32} - source={ - { - "uri": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAMAAAD04JH5AAAACVBMVEXfzEuAVsrUUj5Qp4uTAAAAA3RSTlP////6yOLMAABAi0lEQVR42gGAQH+/AAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAptEeAW5/BekAAAAASUVORK5CYII=", - } - } - width={32} - /> - <Text - accessibilityRole="text" - style={ - { - "color": "inherit", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, - "fontWeight": "400", - "letterSpacing": 0, - "lineHeight": 22, - } - } - > - 0xab16a...Bfcdb - </Text> -</View> -`; - -exports[`SnapUIAddress renders Hedera address 1`] = ` -<View - alignItems="center" - flexDirection="row" - gap={8} - style={ - [ - { - "alignItems": "center", - "flexDirection": "row", - "gap": 8, - }, - undefined, - ] - } -> - <View - style={ - [ - { - "overflow": "hidden", - }, - { - "backgroundColor": "#FC1950", - "borderRadius": 16, - "height": 32, - "width": 32, - }, - undefined, - ] - } - > - <RNSVGSvgView - bbHeight={32} - bbWidth={32} - focusable={false} - height={32} - style={ - [ - { - "backgroundColor": "transparent", - "borderWidth": 0, - }, - { - "flex": 0, - "height": 32, - "width": 32, - }, - ] - } - width={32} - > - <RNSVGGroup - fill={ - { - "payload": 4278190080, - "type": 0, - } - } - > - <RNSVGRect - fill={ - { - "payload": 4291236927, - "type": 0, - } - } - height={32} - matrix={ - [ - 0.14953534344370936, - 0.9887563810470059, - -0.9887563810470059, - 0.14953534344370936, - 37.320467000349105, - 1.602385558164804, - ] - } - propList={ - [ - "fill", - ] - } - width={32} - x={0} - y={0} - /> - <RNSVGRect - fill={ - { - "payload": 4294398209, - "type": 0, - } - } - height={32} - matrix={ - [ - -0.3452981989985342, - -0.938493022759556, - 0.938493022759556, - -0.3452981989985342, - -8.606649434280506, - 42.19889068879461, - ] - } - propList={ - [ - "fill", - ] - } - width={32} - x={0} - y={0} - /> - <RNSVGRect - fill={ - { - "payload": 4278405213, - "type": 0, - } - } - height={32} - matrix={ - [ - 0.7804304073383298, - -0.6252426563357052, - 0.6252426563357052, - 0.7804304073383298, - 12.291347391312584, - -7.449445396869988, - ] - } - propList={ - [ - "fill", - ] - } - width={32} - x={0} - y={0} - /> - </RNSVGGroup> - </RNSVGSvgView> - </View> - <Text - accessibilityRole="text" - style={ - { - "color": "inherit", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, - "fontWeight": "400", - "letterSpacing": 0, - "lineHeight": 22, - } - } - > - 0.0.123...zbhlt - </Text> -</View> -`; - -exports[`SnapUIAddress renders Hedera address with blockie 1`] = ` -<View - alignItems="center" - flexDirection="row" - gap={8} - style={ - [ - { - "alignItems": "center", - "flexDirection": "row", - "gap": 8, - }, - undefined, - ] - } -> - <Image - borderRadius={16} - height={32} - source={ - { - "uri": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAMAAAD04JH5AAAACVBMVEXndD9EiSTjBxK7NmS1AAAAA3RSTlP////6yOLMAABAi0lEQVR42gGAQH+/AAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBC9c+AWISzuoAAAAASUVORK5CYII=", - } - } - width={32} - /> - <Text - accessibilityRole="text" - style={ - { - "color": "inherit", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, - "fontWeight": "400", - "letterSpacing": 0, - "lineHeight": 22, - } - } - > - 0.0.123...zbhlt - </Text> -</View> -`; - -exports[`SnapUIAddress renders Polkadot address 1`] = ` -<View - alignItems="center" - flexDirection="row" - gap={8} - style={ - [ - { - "alignItems": "center", - "flexDirection": "row", - "gap": 8, - }, - undefined, - ] - } -> - <View - style={ - [ - { - "overflow": "hidden", - }, - { - "backgroundColor": "#15C5F2", - "borderRadius": 16, - "height": 32, - "width": 32, - }, - undefined, - ] - } - > - <RNSVGSvgView - bbHeight={32} - bbWidth={32} - focusable={false} - height={32} - style={ - [ - { - "backgroundColor": "transparent", - "borderWidth": 0, - }, - { - "flex": 0, - "height": 32, - "width": 32, - }, - ] - } - width={32} - > - <RNSVGGroup - fill={ - { - "payload": 4278190080, - "type": 0, - } - } - > - <RNSVGRect - fill={ - { - "payload": 4280585185, - "type": 0, - } - } - height={32} - matrix={ - [ - -0.6600016679609368, - -0.7512641335035111, - 0.7512641335035111, - -0.6600016679609368, - 13.607164573260809, - 37.80415490169137, - ] - } - propList={ - [ - "fill", - ] - } - width={32} - x={0} - y={0} - /> - <RNSVGRect - fill={ - { - "payload": 4278291572, - "type": 0, - } - } - height={32} - matrix={ - [ - -0.9961946980917455, - 0.0871557427476582, - -0.0871557427476582, - -0.9961946980917455, - 47.96746618105496, - 30.71565010314135, - ] - } - propList={ - [ - "fill", - ] - } - width={32} - x={0} - y={0} - /> - <RNSVGRect - fill={ - { - "payload": 4294012418, - "type": 0, - } - } - height={32} - matrix={ - [ - 0.953190667792947, - 0.3023698907504445, - -0.3023698907504445, - 0.953190667792947, - 27.920878733171854, - -3.4443162292122325, - ] - } - propList={ - [ - "fill", - ] - } - width={32} - x={0} - y={0} - /> - </RNSVGGroup> - </RNSVGSvgView> - </View> - <Text - accessibilityRole="text" - style={ - { - "color": "inherit", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, - "fontWeight": "400", - "letterSpacing": 0, - "lineHeight": 22, - } - } - > - 5hmuyxw...egmfy - </Text> -</View> -`; - -exports[`SnapUIAddress renders Polkadot address with blockie 1`] = ` -<View - alignItems="center" - flexDirection="row" - gap={8} - style={ - [ - { - "alignItems": "center", - "flexDirection": "row", - "gap": 8, - }, - undefined, - ] - } -> - <Image - borderRadius={16} - height={32} - source={ - { - "uri": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAMAAAD04JH5AAAACVBMVEWONyASgTR7lxMyit4TAAAAA3RSTlP////6yOLMAABAi0lEQVR42gGAQH+/AAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBiAhCAWH8DQcAAAAASUVORK5CYII=", - } - } - width={32} - /> - <Text - accessibilityRole="text" - style={ - { - "color": "inherit", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, - "fontWeight": "400", - "letterSpacing": 0, - "lineHeight": 22, - } - } - > - 5hmuyxw...egmfy - </Text> -</View> -`; - -exports[`SnapUIAddress renders Starknet address 1`] = ` -<View - alignItems="center" - flexDirection="row" - gap={8} - style={ - [ - { - "alignItems": "center", - "flexDirection": "row", - "gap": 8, - }, - undefined, - ] - } -> - <View - style={ - [ - { - "overflow": "hidden", - }, - { - "backgroundColor": "#C7146E", - "borderRadius": 16, - "height": 32, - "width": 32, - }, - undefined, - ] - } - > - <RNSVGSvgView - bbHeight={32} - bbWidth={32} - focusable={false} - height={32} - style={ - [ - { - "backgroundColor": "transparent", - "borderWidth": 0, - }, - { - "flex": 0, - "height": 32, - "width": 32, - }, - ] - } - width={32} - > - <RNSVGGroup - fill={ - { - "payload": 4278190080, - "type": 0, - } - } - > - <RNSVGRect - fill={ - { - "payload": 4280584673, - "type": 0, - } - } - height={32} - matrix={ - [ - 0.6454576877239506, - 0.7637960286346421, - -0.7637960286346421, - 0.6454576877239506, - 19.72240983294027, - -10.014248315377227, - ] - } - propList={ - [ - "fill", - ] - } - width={32} - x={0} - y={0} - /> - <RNSVGRect - fill={ - { - "payload": 4294152960, - "type": 0, - } - } - height={32} - matrix={ - [ - 0.9909831997148363, - -0.13398618541829194, - 0.13398618541829194, - 0.9909831997148363, - -18.754789048385472, - -5.941873265706983, - ] - } - propList={ - [ - "fill", - ] - } - width={32} - x={0} - y={0} - /> - <RNSVGRect - fill={ - { - "payload": 4279616242, - "type": 0, - } - } - height={32} - matrix={ - [ - -0.7965299180241964, - -0.6045991148623747, - 0.6045991148623747, - -0.7965299180241964, - -4.3840057335908575, - 41.26998414158069, - ] - } - propList={ - [ - "fill", - ] - } - width={32} - x={0} - y={0} - /> - </RNSVGGroup> - </RNSVGSvgView> - </View> - <Text - accessibilityRole="text" - style={ - { - "color": "inherit", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, - "fontWeight": "400", - "letterSpacing": 0, - "lineHeight": 22, - } - } - > - 0x02dd1...0ab57 - </Text> -</View> -`; - -exports[`SnapUIAddress renders Starknet address with blockie 1`] = ` -<View - alignItems="center" - flexDirection="row" - gap={8} - style={ - [ - { - "alignItems": "center", - "flexDirection": "row", - "gap": 8, - }, - undefined, - ] - } -> - <Image - borderRadius={16} - height={32} - source={ - { - "uri": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAMAAAD04JH5AAAACVBMVEVpc9IWhYjg9F/LoqLsAAAAA3RSTlP////6yOLMAABAi0lEQVR42gGAQH+/AAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAkks2AfzvMOsAAAAASUVORK5CYII=", - } - } - width={32} - /> - <Text - accessibilityRole="text" - style={ - { - "color": "inherit", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, - "fontWeight": "400", - "letterSpacing": 0, - "lineHeight": 22, - } - } - > - 0x02dd1...0ab57 - </Text> -</View> -`; - -exports[`SnapUIAddress renders legacy Ethereum address 1`] = ` -<View - alignItems="center" - flexDirection="row" - gap={8} - style={ - [ - { - "alignItems": "center", - "flexDirection": "row", - "gap": 8, - }, - undefined, - ] - } -> - <View - style={ - [ - { - "overflow": "hidden", - }, - { - "backgroundColor": "#C71452", - "borderRadius": 16, - "height": 32, - "width": 32, - }, - undefined, - ] - } - > - <RNSVGSvgView - bbHeight={32} - bbWidth={32} - focusable={false} - height={32} - style={ - [ - { - "backgroundColor": "transparent", - "borderWidth": 0, - }, - { - "flex": 0, - "height": 32, - "width": 32, - }, - ] - } - width={32} - > - <RNSVGGroup - fill={ - { - "payload": 4278190080, - "type": 0, - } - } - > - <RNSVGRect - fill={ - { - "payload": 4294022658, - "type": 0, - } - } - height={32} - matrix={ - [ - -0.6374239897486895, - -0.7705132427757894, - 0.7705132427757894, - -0.6374239897486895, - 11.053062989283362, - 43.47891226439789, - ] - } - propList={ - [ - "fill", - ] - } - width={32} - x={0} - y={0} - /> - <RNSVGRect - fill={ - { - "payload": 4280577249, - "type": 0, - } - } - height={32} - matrix={ - [ - -0.41786707380107674, - -0.9085081775267219, - 0.9085081775267219, - -0.41786707380107674, - -5.348907952243133, - 27.780085344551686, - ] - } - propList={ - [ - "fill", - ] - } - width={32} - x={0} - y={0} - /> - <RNSVGRect - fill={ - { - "payload": 4278291595, - "type": 0, - } - } - height={32} - matrix={ - [ - -0.9943379441332046, - 0.10626407133623336, - -0.10626407133623336, - -0.9943379441332046, - 52.03432629974044, - 53.45795917102963, - ] - } - propList={ - [ - "fill", - ] - } - width={32} - x={0} - y={0} - /> - </RNSVGGroup> - </RNSVGSvgView> - </View> - <Text - accessibilityRole="text" - style={ - { - "color": "inherit", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, - "fontWeight": "400", - "letterSpacing": 0, - "lineHeight": 22, - } - } - > - 0xab16a...Bfcdb - </Text> -</View> -`; diff --git a/app/components/UI/Snaps/SnapUIAddress/useDisplayName.ts b/app/components/UI/Snaps/SnapUIAddress/useDisplayName.ts deleted file mode 100644 index f8cf6d42108f..000000000000 --- a/app/components/UI/Snaps/SnapUIAddress/useDisplayName.ts +++ /dev/null @@ -1,59 +0,0 @@ -import { - CaipChainId, - KnownCaipNamespace, - CaipNamespace, -} from '@metamask/utils'; -import { useSelector } from 'react-redux'; -import { decimalToHex } from '../../../../util/conversions'; -import { RootState } from '../../../../reducers'; -import { selectInternalAccounts } from '../../../../selectors/accountsController'; -import { toLowerCaseEquals } from '../../../../util/general'; -import { selectAddressBookByChain } from '../../../../selectors/addressBookController'; - -export interface UseDisplayNameParams { - chain: { - namespace: CaipNamespace; - reference: string; - }; - chainId: CaipChainId; - address: string; -} - -/** - * Get the display name for an address. - * This will look for an account name in the state, and if not found, it will look for an address book entry. - * - * @param params - The parsed CAIP-10 ID. - * @returns The display name for the address. - */ -export const useDisplayName = ( - params: UseDisplayNameParams, -): string | undefined => { - const { - address, - chain: { namespace, reference }, - } = params; - - const isEip155 = namespace === KnownCaipNamespace.Eip155; - - const accounts = useSelector(selectInternalAccounts); - - const account = accounts.find((possibleAccount) => - toLowerCaseEquals(possibleAccount.address, address), - ); - - const chainAddressBook = useSelector((state: RootState) => - selectAddressBookByChain( - state, - `0x${decimalToHex(isEip155 ? reference : `0`)}`, - ), - ); - - const addressBookEntry = chainAddressBook.find((contact) => - toLowerCaseEquals(contact.address, address), - ); - - return ( - account?.metadata?.name || (isEip155 && addressBookEntry?.name) || undefined - ); -}; diff --git a/app/components/UI/Snaps/SnapUIAvatar/SnapUIAvatar.tsx b/app/components/UI/Snaps/SnapUIAvatar/SnapUIAvatar.tsx deleted file mode 100644 index a04b76e09db6..000000000000 --- a/app/components/UI/Snaps/SnapUIAvatar/SnapUIAvatar.tsx +++ /dev/null @@ -1,74 +0,0 @@ -import React, { useMemo } from 'react'; -import { useSelector } from 'react-redux'; -import { - CaipAccountAddress, - CaipAccountId, - CaipNamespace, - KnownCaipNamespace, - parseCaipAccountId, - stringToBytes, -} from '@metamask/utils'; -import { Image } from 'react-native'; -import Jazzicon from 'react-native-jazzicon'; -import { toDataUrl } from '../../../../util/blockies'; -import { RootState } from '../../../../reducers'; - -export const DIAMETERS: Record<string, number> = { - xs: 16, - sm: 24, - md: 32, - lg: 40, -}; - -export interface SnapUIAvatarProps { - // The address must be a CAIP-10 string. - address: string; - size?: 'xs' | 'sm' | 'md' | 'lg'; -} - -function getJazziconSeed( - namespace: CaipNamespace, - address: CaipAccountAddress, -) { - if (namespace === KnownCaipNamespace.Eip155) { - // Default behaviour for EIP155 namespace to match existing Jazzicons - return parseInt(address.slice(2, 10), 16); - } - return Array.from(stringToBytes(address.normalize('NFKC').toLowerCase())); -} - -export const SnapUIAvatar: React.FunctionComponent<SnapUIAvatarProps> = ({ - address, - size = 'md', -}) => { - const parsed = useMemo( - () => parseCaipAccountId(address as CaipAccountId), - [address], - ); - const useBlockie = useSelector( - (state: RootState) => state.settings.useBlockieIcon, - ); - - const diameter = DIAMETERS[size]; - - if (useBlockie) { - return ( - <Image - source={{ uri: toDataUrl(parsed.address) }} - height={diameter} - width={diameter} - borderRadius={diameter / 2} - /> - ); - } - - const seed = getJazziconSeed(parsed.chain.namespace, parsed.address); - - return ( - <Jazzicon - // @ts-expect-error The underlying PRNG supports the seed being an array but the component is typed wrong. - seed={seed} - size={diameter} - /> - ); -}; diff --git a/app/components/UI/Snaps/SnapUIImage/SnapUIImage.tsx b/app/components/UI/Snaps/SnapUIImage/SnapUIImage.tsx deleted file mode 100644 index 5f4b36fee437..000000000000 --- a/app/components/UI/Snaps/SnapUIImage/SnapUIImage.tsx +++ /dev/null @@ -1,34 +0,0 @@ -///: BEGIN:ONLY_INCLUDE_IF(preinstalled-snaps,external-snaps) -import React, { useMemo } from 'react'; -import { ImageStyle, StyleProp } from 'react-native'; -import { SvgUri } from 'react-native-svg'; - -export interface SnapUIImageProps { - value: string; - style?: StyleProp<ImageStyle>; - width?: number; - height?: number; - borderRadius?: number; -} - -export const SnapUIImage: React.FC<SnapUIImageProps> = ({ - value, - width, - height, - style, - borderRadius, -}) => { - const uri = useMemo( - () => `data:image/svg+xml;utf8,${encodeURIComponent(value)}`, - [value], - ); - - return ( - <SvgUri - testID="snaps-ui-image" - uri={uri} - style={[{ width, height, borderRadius }, style]} - /> - ); -}; -///: END:ONLY_INCLUDE_IF diff --git a/app/components/UI/Snaps/SnapUIInput/SnapUIInput.test.tsx b/app/components/UI/Snaps/SnapUIInput/SnapUIInput.test.tsx deleted file mode 100644 index 5a428424b953..000000000000 --- a/app/components/UI/Snaps/SnapUIInput/SnapUIInput.test.tsx +++ /dev/null @@ -1,110 +0,0 @@ -import React from 'react'; -import { render, fireEvent } from '@testing-library/react-native'; -import { SnapUIInput } from './SnapUIInput'; -import { useSnapInterfaceContext } from '../../../Snaps/SnapInterfaceContext'; - -// Mock the entire module -jest.mock('../../../Snaps/SnapInterfaceContext'); - -describe('SnapUIInput', () => { - const mockHandleInputChange = jest.fn(); - const mockSetCurrentFocusedInput = jest.fn(); - const mockGetValue = jest.fn(); - - beforeEach(() => { - // Set up the mock implementation before each test - (useSnapInterfaceContext as jest.Mock).mockReturnValue({ - handleInputChange: mockHandleInputChange, - getValue: mockGetValue, - setCurrentFocusedInput: mockSetCurrentFocusedInput, - focusedInput: null, - }); - - // Clear all mocks before each test - jest.clearAllMocks(); - }); - - it('renders with initial value', () => { - mockGetValue.mockReturnValue('initial value'); - - const { getByDisplayValue } = render(<SnapUIInput name="testInput" />); - - expect(getByDisplayValue('initial value')).toBeTruthy(); - }); - - it('handles input changes', () => { - const { getByTestId } = render(<SnapUIInput name="testInput" />); - - const input = getByTestId('textfield'); - fireEvent.changeText(input, 'new value'); - - expect(mockHandleInputChange).toHaveBeenCalledWith( - 'testInput', - 'new value', - undefined, - ); - }); - - it('handles form input changes', () => { - const { getByTestId } = render( - <SnapUIInput name="testInput" form="testForm" />, - ); - - const input = getByTestId('textfield'); - fireEvent.changeText(input, 'new value'); - - expect(mockHandleInputChange).toHaveBeenCalledWith( - 'testInput', - 'new value', - 'testForm', - ); - }); - - it('handles focus events', () => { - const { getByTestId } = render(<SnapUIInput name="testInput" />); - - const input = getByTestId('textfield'); - fireEvent(input, 'focus'); - - expect(mockSetCurrentFocusedInput).toHaveBeenCalledWith('testInput'); - }); - - it('handles blur events', () => { - const { getByTestId } = render(<SnapUIInput name="testInput" />); - - const input = getByTestId('textfield'); - fireEvent(input, 'blur'); - - expect(mockSetCurrentFocusedInput).toHaveBeenCalledWith(null); - }); - - it('updates value when initialValue changes', () => { - mockGetValue.mockReturnValue('initial value'); - - const { getByDisplayValue, rerender } = render( - <SnapUIInput name="testInput" />, - ); - - expect(getByDisplayValue('initial value')).toBeTruthy(); - - mockGetValue.mockReturnValue('updated value'); - rerender(<SnapUIInput name="testInput" />); - - expect(getByDisplayValue('updated value')).toBeTruthy(); - }); - - it('maintains focus state when re-rendered', () => { - (useSnapInterfaceContext as jest.Mock).mockReturnValue({ - handleInputChange: mockHandleInputChange, - getValue: mockGetValue, - setCurrentFocusedInput: mockSetCurrentFocusedInput, - focusedInput: 'testInput', - }); - - const { getByTestId } = render(<SnapUIInput name="testInput" />); - const input = getByTestId('textfield'); - - expect(input).toBeTruthy(); - expect(useSnapInterfaceContext().focusedInput).toBe('testInput'); - }); -}); diff --git a/app/components/UI/Snaps/SnapUIInput/SnapUIInput.tsx b/app/components/UI/Snaps/SnapUIInput/SnapUIInput.tsx deleted file mode 100644 index 58f6951fe589..000000000000 --- a/app/components/UI/Snaps/SnapUIInput/SnapUIInput.tsx +++ /dev/null @@ -1,81 +0,0 @@ -import React, { useEffect, useRef, useState } from 'react'; -import { useSnapInterfaceContext } from '../../../Snaps/SnapInterfaceContext'; -import { TextInput } from 'react-native'; -import TextField, { - TextFieldSize, -} from '../../../../component-library/components/Form/TextField'; -import HelpText, { - HelpTextSeverity, -} from '../../../../component-library/components/Form/HelpText'; -import Label from '../../../../component-library/components/Form/Label'; -import { Box } from '../../Box/Box'; - -export interface SnapUIInputProps { - name: string; - form?: string; - label?: string; - error?: string; -} - -export const SnapUIInput = ({ - name, - form, - label, - error, - ...props -}: SnapUIInputProps) => { - const { handleInputChange, getValue, focusedInput, setCurrentFocusedInput } = - useSnapInterfaceContext(); - - const inputRef = useRef<TextInput>(null); - - const initialValue = getValue(name, form) as string; - - const [value, setValue] = useState(initialValue ?? ''); - - useEffect(() => { - if (initialValue !== undefined && initialValue !== null) { - setValue(initialValue); - } - }, [initialValue]); - - /* - * Focus input if the last focused input was this input - * This avoids loosing the focus when the UI is re-rendered - */ - useEffect(() => { - if (inputRef.current && focusedInput === name) { - inputRef.current.focus(); - } - }, [inputRef, name, focusedInput]); - - const handleChange = (text: string) => { - setValue(text); - handleInputChange(name, text, form); - }; - - const handleFocus = () => setCurrentFocusedInput(name); - const handleBlur = () => setCurrentFocusedInput(null); - - return ( - <Box> - {label && <Label>{label}</Label>} - <TextField - {...props} - size={TextFieldSize.Lg} - ref={inputRef} - onFocus={handleFocus} - onBlur={handleBlur} - id={name} - value={value} - onChangeText={handleChange} - /> - {error && ( - // eslint-disable-next-line react-native/no-inline-styles - <HelpText severity={HelpTextSeverity.Error} style={{ marginTop: 4 }}> - {error} - </HelpText> - )} - </Box> - ); -}; diff --git a/app/components/UI/Snaps/SnapUILink/SnapUILink.tsx b/app/components/UI/Snaps/SnapUILink/SnapUILink.tsx deleted file mode 100644 index f113a3c7bc81..000000000000 --- a/app/components/UI/Snaps/SnapUILink/SnapUILink.tsx +++ /dev/null @@ -1,35 +0,0 @@ -///: BEGIN:ONLY_INCLUDE_IF(preinstalled-snaps,external-snaps) -import { LinkChildren } from '@metamask/snaps-sdk/jsx'; -import React from 'react'; -import { Linking } from 'react-native'; -import ButtonLink from '../../../../component-library/components/Buttons/Button/variants/ButtonLink'; -import { TextColor } from '../../../../component-library/components/Texts/Text'; - -export interface SnapUILinkProps { - children: LinkChildren; - href: string; -} - -const validateUrl = (href: string) => { - if (!href.startsWith('https://')) { - throw new Error('Invalid URL'); - } -}; - -const onPress = (href: string) => { - validateUrl(href); - Linking.openURL(href); -}; - -// TODO: This component should show a modal for links when not using preinstalled Snaps -// TODO: This component should have an icon next to it -export const SnapUILink: React.FC<SnapUILinkProps> = ({ href, children }) => ( - <ButtonLink - testID="snaps-ui-link" - // @ts-expect-error This prop is not part of the type but it works. - color={TextColor.Info} - onPress={() => onPress(href)} - label={children} - /> -); -///: END:ONLY_INCLUDE_IF diff --git a/app/components/Views/confirmations/components/Confirm/AdvancedDetails/AdvancedDetails.styles.ts b/app/components/Views/confirmations/components/Confirm/AdvancedDetails/AdvancedDetails.styles.ts deleted file mode 100644 index a19058e5b92b..000000000000 --- a/app/components/Views/confirmations/components/Confirm/AdvancedDetails/AdvancedDetails.styles.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { StyleSheet } from 'react-native'; - -const styleSheet = () => - StyleSheet.create({ - container: { - paddingVertical: 8, - }, - networkContainer: { - display: 'flex', - flexDirection: 'row', - alignItems: 'center', - }, - }); - -export default styleSheet; diff --git a/app/components/Views/confirmations/components/Confirm/AdvancedDetails/AdvancedDetails.test.tsx b/app/components/Views/confirmations/components/Confirm/AdvancedDetails/AdvancedDetails.test.tsx deleted file mode 100644 index ba72bead01fd..000000000000 --- a/app/components/Views/confirmations/components/Confirm/AdvancedDetails/AdvancedDetails.test.tsx +++ /dev/null @@ -1,28 +0,0 @@ -import { fireEvent } from '@testing-library/react-native'; -import React from 'react'; -import { stakingDepositConfirmationState } from '../../../../../../util/test/confirm-data-helpers'; -import renderWithProvider from '../../../../../../util/test/renderWithProvider'; -import AdvancedDetails from './AdvancedDetails'; - -describe('AdvancedDetails', () => { - it('contains values for staking deposit', async () => { - const { getByText } = renderWithProvider(<AdvancedDetails />, { - state: stakingDepositConfirmationState, - }); - - expect(getByText('Advanced details')).toBeDefined(); - - fireEvent(getByText('Advanced details'), 'onPress'); - - expect(getByText('Advanced details')).toBeDefined(); - - expect(getByText('Staking from')).toBeDefined(); - expect(getByText('0xDc477...0c164')).toBeDefined(); - - expect(getByText('Interacting with')).toBeDefined(); - expect(getByText('Pooled Staking')).toBeDefined(); - - expect(getByText('Network')).toBeDefined(); - expect(getByText('Ethereum Mainnet')).toBeDefined(); - }); -}); diff --git a/app/components/Views/confirmations/components/Confirm/AdvancedDetails/AdvancedDetails.tsx b/app/components/Views/confirmations/components/Confirm/AdvancedDetails/AdvancedDetails.tsx deleted file mode 100644 index 7deac4d06def..000000000000 --- a/app/components/Views/confirmations/components/Confirm/AdvancedDetails/AdvancedDetails.tsx +++ /dev/null @@ -1,59 +0,0 @@ -import { CHAIN_IDS, TransactionMeta } from '@metamask/transaction-controller'; -import React from 'react'; -import { View } from 'react-native'; -import { strings } from '../../../../../../../locales/i18n'; -import { AvatarSize } from '../../../../../../component-library/components/Avatars/Avatar'; -import Badge, { - BadgeVariant, -} from '../../../../../../component-library/components/Badges/Badge'; -import Text from '../../../../../../component-library/components/Texts/Text'; -import { useStyles } from '../../../../../../component-library/hooks'; -import images from '../../../../../../images/image-icons'; -import Name from '../../../../../UI/Name'; -import { NameType } from '../../../../../UI/Name/Name.types'; -import { useTransactionMetadataRequest } from '../../../hooks/useTransactionMetadataRequest'; -import InfoRow from '../../UI/InfoRow'; -import InfoSectionAccordion from '../../UI/InfoSectionAccordion'; -import InfoRowDivider from '../InfoRowDivider'; -import styleSheet from './AdvancedDetails.styles'; - -const AdvancedDetails = () => { - const { styles } = useStyles(styleSheet, {}); - const transactionMeta = useTransactionMetadataRequest(); - - return ( - <View style={styles.container}> - <InfoSectionAccordion header={strings('stake.advanced_details')}> - <InfoRow label={strings('confirm.staking_from')}> - <Name - type={NameType.EthereumAddress} - value={(transactionMeta as TransactionMeta).txParams.from} - variation={CHAIN_IDS.MAINNET} - /> - </InfoRow> - <InfoRow label={strings('confirm.label.interacting_with')}> - <Name - type={NameType.EthereumAddress} - value={(transactionMeta as TransactionMeta).txParams.to as string} - variation={CHAIN_IDS.MAINNET} - /> - </InfoRow> - <InfoRowDivider /> - <InfoRow label={strings('confirm.label.network')}> - <View style={styles.networkContainer}> - <Badge - size={AvatarSize.Xs} - imageSource={images.ETHEREUM} - variant={BadgeVariant.Network} - isScaled={false} - /> - <Text>{' '}</Text> - <Text>{strings('stake.ethereum_mainnet')}</Text> - </View> - </InfoRow> - </InfoSectionAccordion> - </View> - ); -}; - -export default AdvancedDetails; diff --git a/app/components/Views/confirmations/components/Confirm/Info/StakingDeposit/Navbar.test.tsx b/app/components/Views/confirmations/components/Confirm/Info/StakingDeposit/Navbar.test.tsx deleted file mode 100644 index 1b24a6409a75..000000000000 --- a/app/components/Views/confirmations/components/Confirm/Info/StakingDeposit/Navbar.test.tsx +++ /dev/null @@ -1,33 +0,0 @@ -import React from 'react'; -import { render } from '@testing-library/react-native'; -import { getStakingDepositNavbar } from './Navbar'; - -describe('getStakingDepositNavbar', () => { - it('renders the header title correctly', () => { - const title = 'Test Title'; - const { getByText } = render( - <> - {getStakingDepositNavbar({ title, onReject: jest.fn() }).headerTitle()} - </>, - ); - - expect(getByText(title)).toBeTruthy(); - }); - - it('calls onReject when the back button is pressed', () => { - const onRejectMock = jest.fn(); - const { getByTestId } = render( - <> - {getStakingDepositNavbar({ - title: 'Test Title', - onReject: onRejectMock, - }).headerLeft()} - </>, - ); - - const backButton = getByTestId('staking-deposit-navbar-back-button'); - backButton.props.onPress(); - - expect(onRejectMock).toHaveBeenCalled(); - }); -}); diff --git a/app/components/Views/confirmations/components/Confirm/Info/StakingDeposit/Navbar.tsx b/app/components/Views/confirmations/components/Confirm/Info/StakingDeposit/Navbar.tsx deleted file mode 100644 index 4e889634580e..000000000000 --- a/app/components/Views/confirmations/components/Confirm/Info/StakingDeposit/Navbar.tsx +++ /dev/null @@ -1,50 +0,0 @@ -import React from 'react'; -import { StyleSheet, View } from 'react-native'; -import { - default as MorphText, - TextVariant, -} from '../../../../../../../component-library/components/Texts/Text'; -import ButtonIcon, { - ButtonIconSizes, -} from '../../../../../../../component-library/components/Buttons/ButtonIcon'; -import { IconName } from '../../../../../../../component-library/components/Icons/Icon'; - -export function getStakingDepositNavbar({ - title, - onReject, -}: { - title: string; - onReject: () => void; -}) { - const innerStyles = StyleSheet.create({ - headerLeft: { - marginHorizontal: 16, - }, - headerTitle: { - alignItems: 'center', - }, - }); - - function handleBackPress() { - if (onReject) { - onReject(); - } - } - - return { - headerTitle: () => ( - <View style={innerStyles.headerTitle}> - <MorphText variant={TextVariant.HeadingMD}>{title}</MorphText> - </View> - ), - headerLeft: () => ( - <ButtonIcon - size={ButtonIconSizes.Lg} - iconName={IconName.ArrowLeft} - onPress={handleBackPress} - style={innerStyles.headerLeft} - testID="staking-deposit-navbar-back-button" - /> - ), - }; -} diff --git a/app/core/Engine/Engine.ts b/app/core/Engine/Engine.ts index 0d721b004a98..e8bdbf74a900 100644 --- a/app/core/Engine/Engine.ts +++ b/app/core/Engine/Engine.ts @@ -1482,20 +1482,18 @@ export class Engine { handleVaultBackup() { this.controllerMessenger.subscribe( AppConstants.KEYRING_STATE_CHANGE_EVENT, - (state: KeyringControllerState) => { - if (!state.vault) { - return; - } - - // Back up vault if it exists + (state: KeyringControllerState) => backupVault(state) - .then(() => { - Logger.log('Engine', 'Vault back up successful'); + .then((result) => { + if (result.success) { + Logger.log('Engine', 'Vault back up successful'); + } else { + Logger.log('Engine', 'Vault backup failed', result.error); + } }) .catch((error) => { Logger.error(error, 'Engine Vault backup failed'); - }); - }, + }), ); } diff --git a/app/core/Engine/controllers/MultichainAssetsController/index.test.ts b/app/core/Engine/controllers/MultichainAssetsController/index.test.ts deleted file mode 100644 index 688af2c83bbc..000000000000 --- a/app/core/Engine/controllers/MultichainAssetsController/index.test.ts +++ /dev/null @@ -1,100 +0,0 @@ -import { - MultichainAssetsController, - MultichainAssetsControllerMessenger, - MultichainAssetsControllerState, -} from '@metamask/assets-controllers'; -import { ExtendedControllerMessenger } from '../../../ExtendedControllerMessenger'; -import { createMultichainAssetsController } from '.'; - -jest.mock('@metamask/assets-controllers'); - -describe('multichain assets controller', () => { - const multichainAssetsControllerClassMock = jest.mocked( - MultichainAssetsController, - ); - - let multichainAssetsControllerMessenger: MultichainAssetsControllerMessenger; - - beforeEach(() => { - jest.resetAllMocks(); - const messenger = new ExtendedControllerMessenger(); - multichainAssetsControllerMessenger = messenger.getRestricted({ - name: 'MultichainAssetsController', - allowedEvents: [ - 'AccountsController:accountAdded', - 'AccountsController:accountAdded', - 'AccountsController:accountAssetListUpdated', - ], - allowedActions: ['AccountsController:listMultichainAccounts'], - }); - }); - - it('returns controller instance', () => { - expect( - createMultichainAssetsController({ - messenger: multichainAssetsControllerMessenger, - }), - ).toBeInstanceOf(MultichainAssetsController); - }); - - it('controller state should be default state when no initial state is passed in', () => { - createMultichainAssetsController({ - messenger: multichainAssetsControllerMessenger, - }); - const multichainAssetsControllerState = - multichainAssetsControllerClassMock.mock.calls[0][0].state; - expect(multichainAssetsControllerState).toEqual({ - accountsAssets: {}, - assetsMetadata: {}, - }); - }); - - it('controller state should be initial state when initial state is passed in', () => { - const initialMultichainAssetsControllerState: MultichainAssetsControllerState = - { - accountsAssets: { - '0x1': ['erc20:1/erc20:0x456' as const], - }, - assetsMetadata: { - 'erc20:1/erc20:0x456': { - symbol: 'TEST', - name: 'Test Token', - fungible: true as const, - iconUrl: 'https://example.com/icon.png', - units: [ - { - symbol: 'TEST', - name: 'Test Token', - decimals: 18, - }, - ], - }, - }, - }; - - createMultichainAssetsController({ - messenger: multichainAssetsControllerMessenger, - initialState: initialMultichainAssetsControllerState, - }); - - const multichainAssetsControllerState = - multichainAssetsControllerClassMock.mock.calls[0][0].state; - expect(multichainAssetsControllerState).toEqual( - initialMultichainAssetsControllerState, - ); - }); - - it('should throw and log error when controller creation fails', () => { - const mockError = new Error('Test error'); - jest.spyOn(console, 'error').mockImplementation(); - multichainAssetsControllerClassMock.mockImplementation(() => { - throw mockError; - }); - - expect(() => - createMultichainAssetsController({ - messenger: multichainAssetsControllerMessenger, - }), - ).toThrow(mockError); - }); -}); diff --git a/app/core/Engine/controllers/MultichainAssetsController/index.ts b/app/core/Engine/controllers/MultichainAssetsController/index.ts deleted file mode 100644 index 83291c94fde4..000000000000 --- a/app/core/Engine/controllers/MultichainAssetsController/index.ts +++ /dev/null @@ -1,41 +0,0 @@ -import { - MultichainAssetsController, - MultichainAssetsControllerMessenger, - MultichainAssetsControllerState, -} from '@metamask/assets-controllers'; -import Logger from '../../../../util/Logger'; - -const defaultMultichainAssetsControllerState: MultichainAssetsControllerState = - { - accountsAssets: {}, - assetsMetadata: {}, - }; - -/** - * Creates instance of MultichainAssetsController - * - * @param options.messenger - Controller messenger instance - * @param options.initialState - Initial state of MultichainAssetsController - * @returns - MultichainAssetsController instance - */ -export const createMultichainAssetsController = ({ - messenger, - initialState, -}: { - messenger: MultichainAssetsControllerMessenger; - initialState?: MultichainAssetsControllerState; -}): MultichainAssetsController => { - try { - const multichainAssetsController = new MultichainAssetsController({ - messenger, - state: initialState ?? defaultMultichainAssetsControllerState, - }); - return multichainAssetsController; - } catch (error) { - Logger.error( - error as Error, - 'Failed to initialize MultichainAssetsController', - ); - throw error; - } -}; diff --git a/app/core/Engine/controllers/MultichainNetworkController/index.test.ts b/app/core/Engine/controllers/MultichainNetworkController/index.test.ts deleted file mode 100644 index 188c910ee6d4..000000000000 --- a/app/core/Engine/controllers/MultichainNetworkController/index.test.ts +++ /dev/null @@ -1,86 +0,0 @@ -import { - MultichainNetworkController, - MultichainNetworkControllerMessenger, - MultichainNetworkControllerState, - getDefaultMultichainNetworkControllerState, -} from '@metamask/multichain-network-controller'; -import { ExtendedControllerMessenger } from '../../../ExtendedControllerMessenger'; -import { createMultichainNetworkController } from '.'; -import { BtcScope } from '@metamask/keyring-api'; - -jest.mock('@metamask/multichain-network-controller'); - -describe('multichain network controller', () => { - const multichainNetworkControllerClassMock = jest.mocked( - MultichainNetworkController, - ); - - let multichainNetworkControllerMessenger: MultichainNetworkControllerMessenger; - - beforeEach(() => { - jest.resetAllMocks(); - const messenger = new ExtendedControllerMessenger(); - multichainNetworkControllerMessenger = messenger.getRestricted({ - name: 'MultichainNetworkController', - allowedActions: [ - 'NetworkController:setActiveNetwork', - 'NetworkController:getState', - ], - allowedEvents: ['AccountsController:selectedAccountChange'], - }); - }); - - it('returns controller instance', () => { - expect( - createMultichainNetworkController({ - messenger: multichainNetworkControllerMessenger, - }), - ).toBeInstanceOf(MultichainNetworkController); - }); - - it('it has default state when no initial state is passed in', () => { - createMultichainNetworkController({ - messenger: multichainNetworkControllerMessenger, - }); - const multichainNetworkControllerState = - multichainNetworkControllerClassMock.mock.calls[0][0].state; - - expect(multichainNetworkControllerState).toEqual( - getDefaultMultichainNetworkControllerState(), - ); - }); - - it('it has initial state when initial state is passed in', () => { - const initialMultichainNetworkControllerState: MultichainNetworkControllerState = - { - multichainNetworkConfigurationsByChainId: {}, - selectedMultichainNetworkChainId: BtcScope.Mainnet, - isEvmSelected: false, - }; - - createMultichainNetworkController({ - messenger: multichainNetworkControllerMessenger, - initialState: initialMultichainNetworkControllerState, - }); - - const multichainNetworkControllerState = - multichainNetworkControllerClassMock.mock.calls[0][0].state; - expect(multichainNetworkControllerState).toEqual( - initialMultichainNetworkControllerState, - ); - }); - - it('throws and logs an error when controller creation fails', () => { - const mockError = new Error('Test error'); - jest.spyOn(console, 'error').mockImplementation(); - multichainNetworkControllerClassMock.mockImplementation(() => { - throw mockError; - }); - - expect(() => - createMultichainNetworkController({ - messenger: multichainNetworkControllerMessenger, - }), - ).toThrow(mockError); - }); -}); diff --git a/app/core/Engine/controllers/MultichainNetworkController/index.ts b/app/core/Engine/controllers/MultichainNetworkController/index.ts deleted file mode 100644 index d2c3282e57fc..000000000000 --- a/app/core/Engine/controllers/MultichainNetworkController/index.ts +++ /dev/null @@ -1,35 +0,0 @@ -import { - MultichainNetworkController, - MultichainNetworkControllerMessenger, - MultichainNetworkControllerState, -} from '@metamask/multichain-network-controller'; -import Logger from '../../../../util/Logger'; - -/** - * Creates instance of MultichainNetworkController - * - * @param options.messenger - Controller messenger instance - * @param options.initialState - Initial state of MultichainNetworkController - * @returns - MultichainNetworkController instance - */ -export const createMultichainNetworkController = ({ - messenger, - initialState, -}: { - messenger: MultichainNetworkControllerMessenger; - initialState?: MultichainNetworkControllerState; -}): MultichainNetworkController => { - try { - const multichainNetworkController = new MultichainNetworkController({ - messenger, - state: initialState, - }); - return multichainNetworkController; - } catch (error) { - Logger.error( - error as Error, - 'Failed to initialize MultichainNetworkController', - ); - throw error; - } -}; From 2aadfefa8605e5f99c06b1c967c485e85ed33e3e Mon Sep 17 00:00:00 2001 From: metamaskbot <metamaskbot@users.noreply.github.com> Date: Thu, 27 Mar 2025 15:06:39 -0600 Subject: [PATCH 078/473] fix lint errors --- .../UI/Stake/hooks/useVaultApyAverages.tsx | 6 +- app/components/UI/Swaps/index.js | 2 +- app/components/UI/Swaps/utils/index.js | 3 + app/constants/error.ts | 2 + app/constants/storage.ts | 2 - app/core/BackupVault/backupVault.test.ts | 31 +--- app/core/BackupVault/backupVault.ts | 46 +++--- app/core/Engine/Engine.test.ts | 45 ------ app/core/Engine/Engine.ts | 1 + app/reducers/fiatOrders/index.ts | 4 +- app/util/smart-transactions/index.test.ts | 145 ++++++++++++++++++ bitrise.yml | 32 ---- 12 files changed, 187 insertions(+), 132 deletions(-) diff --git a/app/components/UI/Stake/hooks/useVaultApyAverages.tsx b/app/components/UI/Stake/hooks/useVaultApyAverages.tsx index 0b2df5f9a67b..76db78a6bf19 100644 --- a/app/components/UI/Stake/hooks/useVaultApyAverages.tsx +++ b/app/components/UI/Stake/hooks/useVaultApyAverages.tsx @@ -2,7 +2,6 @@ import { useState } from 'react'; import { useSelector } from 'react-redux'; import Engine from '../../../../core/Engine'; import { pooledStakingSelectors } from '../../../../selectors/earnController'; -import { DEFAULT_VAULT_APY_AVERAGES } from '../constants'; const useVaultApyAverages = () => { const [isLoading, setIsLoading] = useState(false); @@ -26,10 +25,7 @@ const useVaultApyAverages = () => { }; return { - vaultApyAverages: - Object.keys(vaultApyAverages).length === 0 - ? DEFAULT_VAULT_APY_AVERAGES - : vaultApyAverages, + vaultApyAverages, refreshVaultApyAverages: fetchVaultAprs, isLoadingVaultApyAverages: isLoading, error, diff --git a/app/components/UI/Swaps/index.js b/app/components/UI/Swaps/index.js index d76d25fffb41..15f3a3bccc10 100644 --- a/app/components/UI/Swaps/index.js +++ b/app/components/UI/Swaps/index.js @@ -737,7 +737,7 @@ function SwapsAmountView({ strings('swaps.available_to_swap', { asset: `${balance} ${sourceToken.symbol}`, })} - {!isSwapsNativeAsset(sourceToken) && hasBalance && ( + {showMaxBalanceLink && ( <Text style={styles.linkText} onPress={handleUseMax}> {' '} {strings('swaps.use_max')} diff --git a/app/components/UI/Swaps/utils/index.js b/app/components/UI/Swaps/utils/index.js index a92abca5b818..9f560f67d14a 100644 --- a/app/components/UI/Swaps/utils/index.js +++ b/app/components/UI/Swaps/utils/index.js @@ -119,6 +119,7 @@ export function getQuotesNavigationsParams(route) { * @param {string} sourceAmount Amount in minimal token units of sourceToken to be swapped * @param {string} fromAddress Current address attempting to swap * @param {string} networkClientId Current network client ID + * @param {boolean} enableGasIncludedQuotes Enable quotes with gas included */ export function getFetchParams({ slippage = 1, @@ -127,6 +128,7 @@ export function getFetchParams({ sourceAmount, walletAddress, networkClientId, + enableGasIncludedQuotes, }) { return { slippage, @@ -139,6 +141,7 @@ export function getFetchParams({ destinationTokenInfo: destinationToken, networkClientId, }, + enableGasIncludedQuotes, }; } diff --git a/app/constants/error.ts b/app/constants/error.ts index 7c62a667d4e4..9c146ee0c1f3 100644 --- a/app/constants/error.ts +++ b/app/constants/error.ts @@ -45,6 +45,8 @@ export const NO_VAULT_IN_BACKUP_ERROR = 'No vault in backup'; // backupVault export const VAULT_BACKUP_FAILED = 'Vault backup failed'; +export const VAULT_BACKUP_FAILED_UNDEFINED = + 'Unable to backup vault as it is undefined'; export const VAULT_FAILED_TO_GET_VAULT_FROM_BACKUP = 'getVaultFromBackup failed to retrieve vault'; diff --git a/app/constants/storage.ts b/app/constants/storage.ts index 860d4d169c03..77a41920c776 100644 --- a/app/constants/storage.ts +++ b/app/constants/storage.ts @@ -61,5 +61,3 @@ export const REVIEW_SHOWN_TIME = 'reviewShownTime'; export const themeAppearanceLight = 'light'; export const USE_TERMS = `${prefix}UserTermsAccepted${USE_TERMS_VERSION}`; - -export const SCRYPT_COMPUTED_KEY = 'scryptComputedKey'; diff --git a/app/core/BackupVault/backupVault.test.ts b/app/core/BackupVault/backupVault.test.ts index caad44e22ecc..6fceb81b2585 100644 --- a/app/core/BackupVault/backupVault.test.ts +++ b/app/core/BackupVault/backupVault.test.ts @@ -1,7 +1,6 @@ -import { VAULT_BACKUP_FAILED } from '../../constants/error'; import { backupVault } from './backupVault'; +import { VAULT_BACKUP_FAILED_UNDEFINED } from '../../constants/error'; import { KeyringControllerState } from '@metamask/keyring-controller'; -import { setInternetCredentials } from 'react-native-keychain'; //TODO Mock the react-native-keychain module test the other functions inside backupVault /* @@ -13,30 +12,7 @@ import { setInternetCredentials } from 'react-native-keychain'; More information on the issue can be found here: https://github.com/oblador/react-native-keychain/issues/460 */ describe('backupVault', () => { - it('should throw when vault backup fails', async () => { - // Mock the setInternetCredentials function to return false, which simulates a failed vault backup - (setInternetCredentials as jest.Mock).mockResolvedValue(false); - - const keyringState: KeyringControllerState = { - vault: undefined, - keyrings: [], - isUnlocked: false, - keyringsMetadata: [], - }; - - expect(async () => await backupVault(keyringState)).rejects.toThrow( - VAULT_BACKUP_FAILED, - ); - }); - - it('should return success response when vault backup succeeds', async () => { - const mockedSuccessResponse = { success: true }; - - // Mock the setInternetCredentials function to return a success response, which simulates a successful vault backup - (setInternetCredentials as jest.Mock).mockResolvedValue( - mockedSuccessResponse, - ); - + it('should return an error response when the vault is undefined', async () => { const keyringState: KeyringControllerState = { vault: undefined, keyrings: [], @@ -45,7 +21,8 @@ describe('backupVault', () => { }; const response = await backupVault(keyringState); + expect(response.success).toBe(false); - expect(response).toEqual(mockedSuccessResponse); + expect(response.error).toBe(VAULT_BACKUP_FAILED_UNDEFINED); }); }); diff --git a/app/core/BackupVault/backupVault.ts b/app/core/BackupVault/backupVault.ts index 145676daf2fd..b93fe4c1b6e4 100644 --- a/app/core/BackupVault/backupVault.ts +++ b/app/core/BackupVault/backupVault.ts @@ -9,6 +9,7 @@ import { } from 'react-native-keychain'; import { VAULT_BACKUP_FAILED, + VAULT_BACKUP_FAILED_UNDEFINED, VAULT_FAILED_TO_GET_VAULT_FROM_BACKUP, } from '../../constants/error'; @@ -36,26 +37,35 @@ interface KeyringBackupResponse { export async function backupVault( keyringState: KeyringControllerState, ): Promise<KeyringBackupResponse> { - const keyringVault = keyringState.vault as string; - - // Backup vault - const backupResult = await setInternetCredentials( - VAULT_BACKUP_KEY, - VAULT_BACKUP_KEY, - keyringVault, - options, - ); - - // Vault backup failed, throw error - if (!backupResult) { - throw new Error(VAULT_BACKUP_FAILED); + if (keyringState.vault) { + const backupResult = await setInternetCredentials( + VAULT_BACKUP_KEY, + VAULT_BACKUP_KEY, + keyringState.vault, + options, + ); + if (backupResult === false) { + const vaultBackupFailedError = new Error(VAULT_BACKUP_KEY); + Logger.error(vaultBackupFailedError, VAULT_BACKUP_FAILED); + const response: KeyringBackupResponse = { + success: false, + error: VAULT_BACKUP_FAILED, + }; + return response; + } + const response: KeyringBackupResponse = { + success: true, + vault: keyringState.vault, + }; + return response; } - - // Vault backup successful, return response - return { - success: true, - vault: keyringState.vault, + const vaultBackupUndefinedError = new Error(VAULT_BACKUP_KEY); + Logger.error(vaultBackupUndefinedError, VAULT_BACKUP_FAILED_UNDEFINED); + const response: KeyringBackupResponse = { + success: false, + error: VAULT_BACKUP_FAILED_UNDEFINED, }; + return response; } /** diff --git a/app/core/Engine/Engine.test.ts b/app/core/Engine/Engine.test.ts index 436d9026525a..959d4e8957cf 100644 --- a/app/core/Engine/Engine.test.ts +++ b/app/core/Engine/Engine.test.ts @@ -16,12 +16,7 @@ import { Hex } from '@metamask/utils'; import { TransactionMeta } from '@metamask/transaction-controller'; import { RootState } from '../../reducers'; import { MetricsEventBuilder } from '../Analytics/MetricsEventBuilder'; -import { KeyringControllerState } from '@metamask/keyring-controller'; -import { backupVault } from '../BackupVault'; -jest.mock('../BackupVault', () => ({ - backupVault: jest.fn().mockResolvedValue({ success: true, vault: 'vault' }), -})); jest.unmock('./Engine'); jest.mock('../../store', () => ({ store: { getState: jest.fn(() => ({ engine: {} })) }, @@ -98,46 +93,6 @@ describe('Engine', () => { expect(engine).toStrictEqual(newEngine); }); - it('should backup vault when Engine is initialized and vault exists', () => { - (backupVault as jest.Mock).mockResolvedValue({ - success: true, - vault: 'vault', - }); - const engine = Engine.init({}); - const newEngine = Engine.init({}); - expect(engine).toStrictEqual(newEngine); - engine.controllerMessenger.publish( - 'KeyringController:stateChange', - { - vault: 'vault', - isUnlocked: false, - keyrings: [], - keyringsMetadata: [], - } as KeyringControllerState, - [], - ); - expect(backupVault).toHaveBeenCalled(); - }); - - it('should not backup vault when Engine is initialized and vault is empty', () => { - // backupVault will not be called so return value doesn't matter here - (backupVault as jest.Mock).mockResolvedValue(undefined); - const engine = Engine.init({}); - const newEngine = Engine.init({}); - expect(engine).toStrictEqual(newEngine); - engine.controllerMessenger.publish( - 'KeyringController:stateChange', - { - vault: undefined, - isUnlocked: false, - keyrings: [], - keyringsMetadata: [], - } as KeyringControllerState, - [], - ); - expect(backupVault).not.toHaveBeenCalled(); - }); - it('calling Engine.destroy deletes the old instance', async () => { const engine = Engine.init({}); await engine.destroyEngineInstance(); diff --git a/app/core/Engine/Engine.ts b/app/core/Engine/Engine.ts index e8bdbf74a900..5169b8da5170 100644 --- a/app/core/Engine/Engine.ts +++ b/app/core/Engine/Engine.ts @@ -206,6 +206,7 @@ import { multichainNetworkControllerInit } from './controllers/multichain-networ import { currencyRateControllerInit } from './controllers/currency-rate-controller/currency-rate-controller-init'; import { EarnController } from '@metamask/earn-controller'; import { TransactionControllerInit } from './controllers/transaction-controller'; +import { SnapInterfaceController } from '@metamask/snaps-controllers'; const NON_EMPTY = 'NON_EMPTY'; diff --git a/app/reducers/fiatOrders/index.ts b/app/reducers/fiatOrders/index.ts index def0cae6442b..61475b31fabc 100644 --- a/app/reducers/fiatOrders/index.ts +++ b/app/reducers/fiatOrders/index.ts @@ -1,7 +1,7 @@ import { Order } from '@consensys/on-ramp-sdk'; import { createSelector } from 'reselect'; import { Region } from '../../components/UI/Ramp/types'; -import { selectEvmChainId } from '../../selectors/networkController'; +import { selectChainId } from '../../selectors/networkController'; import { selectSelectedInternalAccountFormattedAddress } from '../../selectors/accountsController'; import { FIAT_ORDER_PROVIDERS, @@ -146,7 +146,7 @@ const ordersSelector = (state: RootState) => (state.fiatOrders.orders as FiatOrdersState['orders']) || []; export const chainIdSelector: (state: RootState) => string = ( state: RootState, -) => getDecimalChainId(selectEvmChainId(state)); +) => getDecimalChainId(selectChainId(state)); export const selectedAddressSelector: ( state: RootState, ) => string | undefined = (state: RootState) => diff --git a/app/util/smart-transactions/index.test.ts b/app/util/smart-transactions/index.test.ts index 3616af5a5d0b..ad14867530ee 100644 --- a/app/util/smart-transactions/index.test.ts +++ b/app/util/smart-transactions/index.test.ts @@ -4,6 +4,9 @@ import { getShouldUpdateApprovalRequest, getTransactionType, getSmartTransactionMetricsProperties, + getTradeTxTokenFee, + getGasIncludedTransactionFees, + type GasIncludedQuote, } from './index'; import SmartTransactionsController from '@metamask/smart-transactions-controller'; import type { BaseControllerMessenger } from '../../core/Engine'; @@ -505,4 +508,146 @@ describe('Smart Transactions utils', () => { }); }); }); + + describe('getTradeTxTokenFee', () => { + it('returns the token fee when the full path exists', () => { + const mockQuote = { + tradeTxFees: { + fees: [ + { + tokenFees: ['mockTokenFee'], + }, + ], + cancelFees: {}, + feeEstimate: '0x0', + gasLimit: '0x0', + gasUsed: '0x0', + }, + approvalTxFees: null, + } as unknown as GasIncludedQuote; + + const result = getTradeTxTokenFee(mockQuote); + expect(result).toBe('mockTokenFee'); + }); + + it('returns undefined when tradeTxFees is missing', () => { + const mockQuote = { + tradeTxFees: null, + approvalTxFees: null, + } as GasIncludedQuote; + + const result = getTradeTxTokenFee(mockQuote); + expect(result).toBeUndefined(); + }); + it('returns undefined when fees array is empty', () => { + const mockQuote = { + tradeTxFees: { + fees: [], + cancelFees: {}, + feeEstimate: '0x0', + gasLimit: '0x0', + gasUsed: '0x0', + }, + approvalTxFees: null, + } as unknown as GasIncludedQuote; + + const result = getTradeTxTokenFee(mockQuote); + expect(result).toBeUndefined(); + }); + + it('returns undefined when tokenFees array is empty', () => { + const mockQuote = { + tradeTxFees: { + fees: [ + { + tokenFees: [], + }, + ], + }, + } as unknown as GasIncludedQuote; + + const result = getTradeTxTokenFee(mockQuote); + expect(result).toBeUndefined(); + }); + + it('returns undefined when tokenFees is undefined', () => { + const mockQuote = { + tradeTxFees: { + fees: [{}], + }, + } as unknown as GasIncludedQuote; + + const result = getTradeTxTokenFee(mockQuote); + expect(result).toBeUndefined(); + }); + }); + + describe('getGasIncludedTransactionFees', () => { + it('returns transaction fees when gas is included and token fee exists', () => { + const mockQuote = { + tradeTxFees: { + fees: [ + { + tokenFees: ['mockTokenFee'], + }, + ], + cancelFees: {}, + feeEstimate: '0x0', + gasLimit: '0x0', + gasUsed: '0x0', + }, + approvalTxFees: { + cancelFees: {}, + feeEstimate: '0x0', + gasLimit: '0x0', + gasUsed: '0x0', + }, + isGasIncludedTrade: true, + } as unknown as GasIncludedQuote; + + const result = getGasIncludedTransactionFees(mockQuote); + expect(result).toEqual({ + approvalTxFees: mockQuote.approvalTxFees, + tradeTxFees: mockQuote.tradeTxFees, + }); + }); + + it('returns undefined when gas is not included', () => { + const mockQuote = { + tradeTxFees: { + fees: [ + { + tokenFees: ['mockTokenFee'], + }, + ], + cancelFees: {}, + feeEstimate: '0x0', + gasLimit: '0x0', + gasUsed: '0x0', + }, + approvalTxFees: null, + isGasIncludedTrade: false, + } as unknown as GasIncludedQuote; + + const result = getGasIncludedTransactionFees(mockQuote); + expect(result).toBeUndefined(); + }); + + it('returns undefined when token fee does not exist', () => { + const mockQuote = { + tradeTxFees: { + fees: [{}], + cancelFees: {}, + feeEstimate: '0x0', + gasLimit: '0x0', + gasUsed: '0x0', + }, + approvalTxFees: null, + isGasIncludedTrade: true, + } as unknown as GasIncludedQuote; + + const result = getGasIncludedTransactionFees(mockQuote); + expect(result).toBeUndefined(); + }); + }); }); diff --git a/bitrise.yml b/bitrise.yml index de9d3abb538e..a7e4be3258b0 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -436,38 +436,6 @@ workflows: - issue_number: '$GITHUB_PR_NUMBER' - api_base_url: 'https://api.github.com' - update_comment_tag: '$GITHUB_PR_HASH' - - script@1: - is_always_run: true - title: Label PR with success - inputs: - - content: |- - #!/usr/bin/env bash - # Define label data - LABELS_JSON='{"labels":["bitrise-result-ready"]}' - - # API URL to add labels to a PR - API_URL="https://api.github.com/repos/$BITRISEIO_GIT_REPOSITORY_OWNER/$BITRISEIO_GIT_REPOSITORY_SLUG/issues/$GITHUB_PR_NUMBER/labels" - - # Perform the curl request and capture the HTTP status code - HTTP_RESPONSE=$(curl -s -o response.txt -w "%{http_code}" -X POST -H "Authorization: token $GITHUB_ACCESS_TOKEN" -H "Accept: application/vnd.github.v3+json" -d "$LABELS_JSON" "$API_URL") - - # Output the HTTP status code - echo "HTTP Response Code: $HTTP_RESPONSE" - - # Optionally check the response - echo "HTTP Response Code: $HTTP_RESPONSE" - - if [ "$HTTP_RESPONSE" -ne 200 ]; then - echo "Failed to apply label. Status code: $HTTP_RESPONSE" - cat response.txt # Show error message from GitHub if any - else - echo "Label applied successfully." - fi - - # Clean up the response file - rm response.txt - - # Send a Slack message when workflow fails notify_failure: before_run: From a5f749a951e83ada5f65fa5f70fe7a90b69c1b6a Mon Sep 17 00:00:00 2001 From: metamaskbot <metamaskbot@users.noreply.github.com> Date: Thu, 27 Mar 2025 15:14:34 -0600 Subject: [PATCH 079/473] re added snap ui address --- .../SnapUIAddress/SnapUIAddress.test.tsx | 198 +++ .../Snaps/SnapUIAddress/SnapUIAddress.tsx | 73 + .../__snapshots__/SnapUIAddress.test.tsx.snap | 1399 +++++++++++++++++ .../Snaps/SnapUIAddress/useDisplayName.ts | 59 + 4 files changed, 1729 insertions(+) create mode 100644 app/components/Snaps/SnapUIAddress/SnapUIAddress.test.tsx create mode 100644 app/components/Snaps/SnapUIAddress/SnapUIAddress.tsx create mode 100644 app/components/Snaps/SnapUIAddress/__snapshots__/SnapUIAddress.test.tsx.snap create mode 100644 app/components/Snaps/SnapUIAddress/useDisplayName.ts diff --git a/app/components/Snaps/SnapUIAddress/SnapUIAddress.test.tsx b/app/components/Snaps/SnapUIAddress/SnapUIAddress.test.tsx new file mode 100644 index 000000000000..733a6db02556 --- /dev/null +++ b/app/components/Snaps/SnapUIAddress/SnapUIAddress.test.tsx @@ -0,0 +1,198 @@ +import React from 'react'; +import { SnapUIAddress } from './SnapUIAddress'; +import renderWithProvider from '../../../util/test/renderWithProvider'; + +const baseMockState = { + state: { + engine: { + backgroundState: { + KeyringController: { + keyrings: [], + }, + AccountsController: { + internalAccounts: { + accounts: { + foo: { + address: '0xab16a96D359eC26a11e2C2b3d8f8B8942d5Bfcdb', + metadata: { + name: 'My Account', + }, + }, + }, + }, + }, + AddressBookController: { + addressBook: { + '0x1': { + '0xab16a96D359eC26a11e2C2b3d8f8B8942d5Bfcda': { + address: '0xab16a96D359eC26a11e2C2b3d8f8B8942d5Bfcda', + name: 'Test Contact', + }, + }, + }, + }, + }, + }, + }, +}; + +const mockStateWithoutBlockies = { + state: { + ...baseMockState.state, + settings: { + useBlockieIcon: false, + }, + }, +}; + +const mockStateWithBlockies = { + state: { + ...baseMockState.state, + settings: { + useBlockieIcon: true, + }, + }, +}; + +describe('SnapUIAddress', () => { + it('renders legacy Ethereum address', () => { + const { toJSON } = renderWithProvider( + <SnapUIAddress address="0xab16a96d359ec26a11e2c2b3d8f8b8942d5bfcdb" />, + mockStateWithoutBlockies, + ); + + expect(toJSON()).toMatchSnapshot(); + }); + + it('renders Ethereum address', () => { + const { toJSON } = renderWithProvider( + <SnapUIAddress address="eip155:1:0xab16a96D359eC26a11e2C2b3d8f8B8942d5Bfcdb" />, + mockStateWithoutBlockies, + ); + + expect(toJSON()).toMatchSnapshot(); + }); + + it('renders account name', () => { + const { getByText } = renderWithProvider( + <SnapUIAddress + address="eip155:1:0xab16a96D359eC26a11e2C2b3d8f8B8942d5Bfcdb" + displayName + />, + baseMockState, + ); + + expect(getByText('My Account')).toBeDefined(); + }); + + it('renders contact name', () => { + const { getByText } = renderWithProvider( + <SnapUIAddress + address="eip155:1:0xab16a96D359eC26a11e2C2b3d8f8B8942d5Bfcda" + displayName + />, + baseMockState, + ); + + expect(getByText('Test Contact')).toBeDefined(); + }); + + it('renders Ethereum address with blockie', () => { + const { toJSON } = renderWithProvider( + <SnapUIAddress address="eip155:1:0xab16a96D359eC26a11e2C2b3d8f8B8942d5Bfcdb" />, + mockStateWithBlockies, + ); + + expect(toJSON()).toMatchSnapshot(); + }); + + it('renders Bitcoin address', () => { + const { toJSON } = renderWithProvider( + <SnapUIAddress address="bip122:000000000019d6689c085ae165831e93:128Lkh3S7CkDTBZ8W7BbpsN3YYizJMp8p6" />, + mockStateWithoutBlockies, + ); + + expect(toJSON()).toMatchSnapshot(); + }); + + it('renders Bitcoin address with blockie', () => { + const { toJSON } = renderWithProvider( + <SnapUIAddress address="bip122:000000000019d6689c085ae165831e93:128Lkh3S7CkDTBZ8W7BbpsN3YYizJMp8p6" />, + mockStateWithBlockies, + ); + + expect(toJSON()).toMatchSnapshot(); + }); + + it('renders Cosmos address', () => { + const { toJSON } = renderWithProvider( + <SnapUIAddress address="cosmos:cosmoshub-3:cosmos1t2uflqwqe0fsj0shcfkrvpukewcw40yjj6hdc0" />, + mockStateWithoutBlockies, + ); + + expect(toJSON()).toMatchSnapshot(); + }); + + it('renders Cosmos address with blockie', () => { + const { toJSON } = renderWithProvider( + <SnapUIAddress address="cosmos:cosmoshub-3:cosmos1t2uflqwqe0fsj0shcfkrvpukewcw40yjj6hdc0" />, + mockStateWithBlockies, + ); + + expect(toJSON()).toMatchSnapshot(); + }); + + it('renders Polkadot address', () => { + const { toJSON } = renderWithProvider( + <SnapUIAddress address="polkadot:b0a8d493285c2df73290dfb7e61f870f:5hmuyxw9xdgbpptgypokw4thfyoe3ryenebr381z9iaegmfy" />, + mockStateWithoutBlockies, + ); + + expect(toJSON()).toMatchSnapshot(); + }); + + it('renders Polkadot address with blockie', () => { + const { toJSON } = renderWithProvider( + <SnapUIAddress address="polkadot:b0a8d493285c2df73290dfb7e61f870f:5hmuyxw9xdgbpptgypokw4thfyoe3ryenebr381z9iaegmfy" />, + mockStateWithBlockies, + ); + + expect(toJSON()).toMatchSnapshot(); + }); + + it('renders Starknet address', () => { + const { toJSON } = renderWithProvider( + <SnapUIAddress address="starknet:SN_GOERLI:0x02dd1b492765c064eac4039e3841aa5f382773b598097a40073bd8b48170ab57" />, + mockStateWithoutBlockies, + ); + + expect(toJSON()).toMatchSnapshot(); + }); + + it('renders Starknet address with blockie', () => { + const { toJSON } = renderWithProvider( + <SnapUIAddress address="starknet:SN_GOERLI:0x02dd1b492765c064eac4039e3841aa5f382773b598097a40073bd8b48170ab57" />, + mockStateWithBlockies, + ); + + expect(toJSON()).toMatchSnapshot(); + }); + + it('renders Hedera address', () => { + const { toJSON } = renderWithProvider( + <SnapUIAddress address="hedera:mainnet:0.0.1234567890-zbhlt" />, + mockStateWithoutBlockies, + ); + + expect(toJSON()).toMatchSnapshot(); + }); + + it('renders Hedera address with blockie', () => { + const { toJSON } = renderWithProvider( + <SnapUIAddress address="hedera:mainnet:0.0.1234567890-zbhlt" />, + mockStateWithBlockies, + ); + + expect(toJSON()).toMatchSnapshot(); + }); +}); diff --git a/app/components/Snaps/SnapUIAddress/SnapUIAddress.tsx b/app/components/Snaps/SnapUIAddress/SnapUIAddress.tsx new file mode 100644 index 000000000000..e1abb7e75188 --- /dev/null +++ b/app/components/Snaps/SnapUIAddress/SnapUIAddress.tsx @@ -0,0 +1,73 @@ +import React, { useMemo } from 'react'; +import { + CaipAccountId, + isHexString, + parseCaipAccountId, +} from '@metamask/utils'; +import { toChecksumHexAddress } from '@metamask/controller-utils'; +import { SnapUIAvatar } from '../SnapUIAvatar/SnapUIAvatar'; +import { shortenString } from '../../../util/notifications/methods'; +import Text, { + TextVariant, +} from '../../../component-library/components/Texts/Text'; +import { Box } from '../../UI/Box/Box'; +import { AlignItems, FlexDirection } from '../../UI/Box/box.types'; +import { useDisplayName } from './useDisplayName'; + +export interface SnapUIAddressProps { + // The address must be a CAIP-10 string. + address: string; + // This is not currently exposed to Snaps. + avatarSize?: 'xs' | 'sm' | 'md' | 'lg'; + truncate?: boolean; + displayName?: boolean; + avatar?: boolean; +} + +export const SnapUIAddress: React.FunctionComponent<SnapUIAddressProps> = ({ + address, + avatarSize = 'md', + truncate = true, + displayName = false, + avatar = true, +}) => { + const caipIdentifier = useMemo(() => { + if (isHexString(address)) { + // For legacy address inputs we assume them to be Ethereum addresses. + // NOTE: This means the chain ID is not gonna be reliable. + return `eip155:1:${address}`; + } + + return address; + }, [address]); + + const parsed = useMemo( + () => parseCaipAccountId(caipIdentifier as CaipAccountId), + [caipIdentifier], + ); + + // For EVM addresses, we make sure they are checksummed. + const transformedAddress = + parsed.chain.namespace === 'eip155' + ? toChecksumHexAddress(parsed.address) + : parsed.address; + + const formattedAddress = truncate + ? shortenString(transformedAddress) + : address; + + const name = useDisplayName(parsed); + + return ( + <Box + flexDirection={FlexDirection.Row} + alignItems={AlignItems.center} + gap={8} + > + {avatar && <SnapUIAvatar address={caipIdentifier} size={avatarSize} />} + <Text variant={TextVariant.BodyMD} color="inherit"> + {displayName && name ? name : formattedAddress} + </Text> + </Box> + ); +}; diff --git a/app/components/Snaps/SnapUIAddress/__snapshots__/SnapUIAddress.test.tsx.snap b/app/components/Snaps/SnapUIAddress/__snapshots__/SnapUIAddress.test.tsx.snap new file mode 100644 index 000000000000..1df64d384a80 --- /dev/null +++ b/app/components/Snaps/SnapUIAddress/__snapshots__/SnapUIAddress.test.tsx.snap @@ -0,0 +1,1399 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`SnapUIAddress renders Bitcoin address 1`] = ` +<View + alignItems="center" + flexDirection="row" + gap={8} + style={ + [ + { + "alignItems": "center", + "flexDirection": "row", + "gap": 8, + }, + undefined, + ] + } +> + <View + style={ + [ + { + "overflow": "hidden", + }, + { + "backgroundColor": "#2452E1", + "borderRadius": 16, + "height": 32, + "width": 32, + }, + undefined, + ] + } + > + <RNSVGSvgView + bbHeight={32} + bbWidth={32} + focusable={false} + height={32} + style={ + [ + { + "backgroundColor": "transparent", + "borderWidth": 0, + }, + { + "flex": 0, + "height": 32, + "width": 32, + }, + ] + } + width={32} + > + <RNSVGGroup + fill={ + { + "payload": 4278190080, + "type": 0, + } + } + > + <RNSVGRect + fill={ + { + "payload": 4278404701, + "type": 0, + } + } + height={32} + matrix={ + [ + -0.6142852000989433, + 0.7890840848346906, + -0.7890840848346906, + -0.6142852000989433, + 41.38442220412787, + 14.429364796825299, + ] + } + propList={ + [ + "fill", + ] + } + width={32} + x={0} + y={0} + /> + <RNSVGRect + fill={ + { + "payload": 4294399745, + "type": 0, + } + } + height={32} + matrix={ + [ + -0.8910065241883678, + 0.45399049973954686, + -0.45399049973954686, + -0.8910065241883678, + 44.69178448403159, + 34.07206191418916, + ] + } + propList={ + [ + "fill", + ] + } + width={32} + x={0} + y={0} + /> + <RNSVGRect + fill={ + { + "payload": 4278286988, + "type": 0, + } + } + height={32} + matrix={ + [ + -0.8348478632634064, + 0.5504807400849958, + -0.5504807400849958, + -0.8348478632634064, + 46.616692080655206, + 43.018475720213836, + ] + } + propList={ + [ + "fill", + ] + } + width={32} + x={0} + y={0} + /> + </RNSVGGroup> + </RNSVGSvgView> + </View> + <Text + accessibilityRole="text" + style={ + { + "color": "inherit", + "fontFamily": "EuclidCircularB-Regular", + "fontSize": 14, + "fontWeight": "400", + "letterSpacing": 0, + "lineHeight": 22, + } + } + > + 128Lkh3...Mp8p6 + </Text> +</View> +`; + +exports[`SnapUIAddress renders Bitcoin address with blockie 1`] = ` +<View + alignItems="center" + flexDirection="row" + gap={8} + style={ + [ + { + "alignItems": "center", + "flexDirection": "row", + "gap": 8, + }, + undefined, + ] + } +> + <Image + borderRadius={16} + height={32} + source={ + { + "uri": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAMAAAD04JH5AAAACVBMVEUpdqkxxtA7z9EPkoDKAAAAA3RSTlP////6yOLMAABAi0lEQVR42gGAQH+/AAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICJ+wuAXhHr2sAAAAASUVORK5CYII=", + } + } + width={32} + /> + <Text + accessibilityRole="text" + style={ + { + "color": "inherit", + "fontFamily": "EuclidCircularB-Regular", + "fontSize": 14, + "fontWeight": "400", + "letterSpacing": 0, + "lineHeight": 22, + } + } + > + 128Lkh3...Mp8p6 + </Text> +</View> +`; + +exports[`SnapUIAddress renders Cosmos address 1`] = ` +<View + alignItems="center" + flexDirection="row" + gap={8} + style={ + [ + { + "alignItems": "center", + "flexDirection": "row", + "gap": 8, + }, + undefined, + ] + } +> + <View + style={ + [ + { + "overflow": "hidden", + }, + { + "backgroundColor": "#033B5D", + "borderRadius": 16, + "height": 32, + "width": 32, + }, + undefined, + ] + } + > + <RNSVGSvgView + bbHeight={32} + bbWidth={32} + focusable={false} + height={32} + style={ + [ + { + "backgroundColor": "transparent", + "borderWidth": 0, + }, + { + "flex": 0, + "height": 32, + "width": 32, + }, + ] + } + width={32} + > + <RNSVGGroup + fill={ + { + "payload": 4278190080, + "type": 0, + } + } + > + <RNSVGRect + fill={ + { + "payload": 4280564449, + "type": 0, + } + } + height={32} + matrix={ + [ + -0.19765734037912552, + -0.980271174621722, + 0.980271174621722, + -0.19765734037912552, + -7.0989167163851015, + 36.124741566654706, + ] + } + propList={ + [ + "fill", + ] + } + width={32} + x={0} + y={0} + /> + <RNSVGRect + fill={ + { + "payload": 4294711597, + "type": 0, + } + } + height={32} + matrix={ + [ + -0.9865721616069695, + -0.16332596224162213, + 0.16332596224162213, + -0.9865721616069695, + 34.849276460507994, + 44.34205740189883, + ] + } + propList={ + [ + "fill", + ] + } + width={32} + x={0} + y={0} + /> + <RNSVGRect + fill={ + { + "payload": 4293849856, + "type": 0, + } + } + height={32} + matrix={ + [ + 0.4383711467890774, + -0.898794046299167, + 0.898794046299167, + 0.4383711467890774, + -31.02462951759497, + 5.576360605670079, + ] + } + propList={ + [ + "fill", + ] + } + width={32} + x={0} + y={0} + /> + </RNSVGGroup> + </RNSVGSvgView> + </View> + <Text + accessibilityRole="text" + style={ + { + "color": "inherit", + "fontFamily": "EuclidCircularB-Regular", + "fontSize": 14, + "fontWeight": "400", + "letterSpacing": 0, + "lineHeight": 22, + } + } + > + cosmos1...6hdc0 + </Text> +</View> +`; + +exports[`SnapUIAddress renders Cosmos address with blockie 1`] = ` +<View + alignItems="center" + flexDirection="row" + gap={8} + style={ + [ + { + "alignItems": "center", + "flexDirection": "row", + "gap": 8, + }, + undefined, + ] + } +> + <Image + borderRadius={16} + height={32} + source={ + { + "uri": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAMAAAD04JH5AAAACVBMVEU7MYWX3joghpi+PrwkAAAAA3RSTlP////6yOLMAABAi0lEQVR42gGAQH+/AAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBIF0mAWfyM7MAAAAASUVORK5CYII=", + } + } + width={32} + /> + <Text + accessibilityRole="text" + style={ + { + "color": "inherit", + "fontFamily": "EuclidCircularB-Regular", + "fontSize": 14, + "fontWeight": "400", + "letterSpacing": 0, + "lineHeight": 22, + } + } + > + cosmos1...6hdc0 + </Text> +</View> +`; + +exports[`SnapUIAddress renders Ethereum address 1`] = ` +<View + alignItems="center" + flexDirection="row" + gap={8} + style={ + [ + { + "alignItems": "center", + "flexDirection": "row", + "gap": 8, + }, + undefined, + ] + } +> + <View + style={ + [ + { + "overflow": "hidden", + }, + { + "backgroundColor": "#C71452", + "borderRadius": 16, + "height": 32, + "width": 32, + }, + undefined, + ] + } + > + <RNSVGSvgView + bbHeight={32} + bbWidth={32} + focusable={false} + height={32} + style={ + [ + { + "backgroundColor": "transparent", + "borderWidth": 0, + }, + { + "flex": 0, + "height": 32, + "width": 32, + }, + ] + } + width={32} + > + <RNSVGGroup + fill={ + { + "payload": 4278190080, + "type": 0, + } + } + > + <RNSVGRect + fill={ + { + "payload": 4294022658, + "type": 0, + } + } + height={32} + matrix={ + [ + -0.6374239897486895, + -0.7705132427757894, + 0.7705132427757894, + -0.6374239897486895, + 11.053062989283362, + 43.47891226439789, + ] + } + propList={ + [ + "fill", + ] + } + width={32} + x={0} + y={0} + /> + <RNSVGRect + fill={ + { + "payload": 4280577249, + "type": 0, + } + } + height={32} + matrix={ + [ + -0.41786707380107674, + -0.9085081775267219, + 0.9085081775267219, + -0.41786707380107674, + -5.348907952243133, + 27.780085344551686, + ] + } + propList={ + [ + "fill", + ] + } + width={32} + x={0} + y={0} + /> + <RNSVGRect + fill={ + { + "payload": 4278291595, + "type": 0, + } + } + height={32} + matrix={ + [ + -0.9943379441332046, + 0.10626407133623336, + -0.10626407133623336, + -0.9943379441332046, + 52.03432629974044, + 53.45795917102963, + ] + } + propList={ + [ + "fill", + ] + } + width={32} + x={0} + y={0} + /> + </RNSVGGroup> + </RNSVGSvgView> + </View> + <Text + accessibilityRole="text" + style={ + { + "color": "inherit", + "fontFamily": "EuclidCircularB-Regular", + "fontSize": 14, + "fontWeight": "400", + "letterSpacing": 0, + "lineHeight": 22, + } + } + > + 0xab16a...Bfcdb + </Text> +</View> +`; + +exports[`SnapUIAddress renders Ethereum address with blockie 1`] = ` +<View + alignItems="center" + flexDirection="row" + gap={8} + style={ + [ + { + "alignItems": "center", + "flexDirection": "row", + "gap": 8, + }, + undefined, + ] + } +> + <Image + borderRadius={16} + height={32} + source={ + { + "uri": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAMAAAD04JH5AAAACVBMVEXfzEuAVsrUUj5Qp4uTAAAAA3RSTlP////6yOLMAABAi0lEQVR42gGAQH+/AAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAptEeAW5/BekAAAAASUVORK5CYII=", + } + } + width={32} + /> + <Text + accessibilityRole="text" + style={ + { + "color": "inherit", + "fontFamily": "EuclidCircularB-Regular", + "fontSize": 14, + "fontWeight": "400", + "letterSpacing": 0, + "lineHeight": 22, + } + } + > + 0xab16a...Bfcdb + </Text> +</View> +`; + +exports[`SnapUIAddress renders Hedera address 1`] = ` +<View + alignItems="center" + flexDirection="row" + gap={8} + style={ + [ + { + "alignItems": "center", + "flexDirection": "row", + "gap": 8, + }, + undefined, + ] + } +> + <View + style={ + [ + { + "overflow": "hidden", + }, + { + "backgroundColor": "#FC1950", + "borderRadius": 16, + "height": 32, + "width": 32, + }, + undefined, + ] + } + > + <RNSVGSvgView + bbHeight={32} + bbWidth={32} + focusable={false} + height={32} + style={ + [ + { + "backgroundColor": "transparent", + "borderWidth": 0, + }, + { + "flex": 0, + "height": 32, + "width": 32, + }, + ] + } + width={32} + > + <RNSVGGroup + fill={ + { + "payload": 4278190080, + "type": 0, + } + } + > + <RNSVGRect + fill={ + { + "payload": 4291236927, + "type": 0, + } + } + height={32} + matrix={ + [ + 0.14953534344370936, + 0.9887563810470059, + -0.9887563810470059, + 0.14953534344370936, + 37.320467000349105, + 1.602385558164804, + ] + } + propList={ + [ + "fill", + ] + } + width={32} + x={0} + y={0} + /> + <RNSVGRect + fill={ + { + "payload": 4294398209, + "type": 0, + } + } + height={32} + matrix={ + [ + -0.3452981989985342, + -0.938493022759556, + 0.938493022759556, + -0.3452981989985342, + -8.606649434280506, + 42.19889068879461, + ] + } + propList={ + [ + "fill", + ] + } + width={32} + x={0} + y={0} + /> + <RNSVGRect + fill={ + { + "payload": 4278405213, + "type": 0, + } + } + height={32} + matrix={ + [ + 0.7804304073383298, + -0.6252426563357052, + 0.6252426563357052, + 0.7804304073383298, + 12.291347391312584, + -7.449445396869988, + ] + } + propList={ + [ + "fill", + ] + } + width={32} + x={0} + y={0} + /> + </RNSVGGroup> + </RNSVGSvgView> + </View> + <Text + accessibilityRole="text" + style={ + { + "color": "inherit", + "fontFamily": "EuclidCircularB-Regular", + "fontSize": 14, + "fontWeight": "400", + "letterSpacing": 0, + "lineHeight": 22, + } + } + > + 0.0.123...zbhlt + </Text> +</View> +`; + +exports[`SnapUIAddress renders Hedera address with blockie 1`] = ` +<View + alignItems="center" + flexDirection="row" + gap={8} + style={ + [ + { + "alignItems": "center", + "flexDirection": "row", + "gap": 8, + }, + undefined, + ] + } +> + <Image + borderRadius={16} + height={32} + source={ + { + "uri": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAMAAAD04JH5AAAACVBMVEXndD9EiSTjBxK7NmS1AAAAA3RSTlP////6yOLMAABAi0lEQVR42gGAQH+/AAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBC9c+AWISzuoAAAAASUVORK5CYII=", + } + } + width={32} + /> + <Text + accessibilityRole="text" + style={ + { + "color": "inherit", + "fontFamily": "EuclidCircularB-Regular", + "fontSize": 14, + "fontWeight": "400", + "letterSpacing": 0, + "lineHeight": 22, + } + } + > + 0.0.123...zbhlt + </Text> +</View> +`; + +exports[`SnapUIAddress renders Polkadot address 1`] = ` +<View + alignItems="center" + flexDirection="row" + gap={8} + style={ + [ + { + "alignItems": "center", + "flexDirection": "row", + "gap": 8, + }, + undefined, + ] + } +> + <View + style={ + [ + { + "overflow": "hidden", + }, + { + "backgroundColor": "#15C5F2", + "borderRadius": 16, + "height": 32, + "width": 32, + }, + undefined, + ] + } + > + <RNSVGSvgView + bbHeight={32} + bbWidth={32} + focusable={false} + height={32} + style={ + [ + { + "backgroundColor": "transparent", + "borderWidth": 0, + }, + { + "flex": 0, + "height": 32, + "width": 32, + }, + ] + } + width={32} + > + <RNSVGGroup + fill={ + { + "payload": 4278190080, + "type": 0, + } + } + > + <RNSVGRect + fill={ + { + "payload": 4280585185, + "type": 0, + } + } + height={32} + matrix={ + [ + -0.6600016679609368, + -0.7512641335035111, + 0.7512641335035111, + -0.6600016679609368, + 13.607164573260809, + 37.80415490169137, + ] + } + propList={ + [ + "fill", + ] + } + width={32} + x={0} + y={0} + /> + <RNSVGRect + fill={ + { + "payload": 4278291572, + "type": 0, + } + } + height={32} + matrix={ + [ + -0.9961946980917455, + 0.0871557427476582, + -0.0871557427476582, + -0.9961946980917455, + 47.96746618105496, + 30.71565010314135, + ] + } + propList={ + [ + "fill", + ] + } + width={32} + x={0} + y={0} + /> + <RNSVGRect + fill={ + { + "payload": 4294012418, + "type": 0, + } + } + height={32} + matrix={ + [ + 0.953190667792947, + 0.3023698907504445, + -0.3023698907504445, + 0.953190667792947, + 27.920878733171854, + -3.4443162292122325, + ] + } + propList={ + [ + "fill", + ] + } + width={32} + x={0} + y={0} + /> + </RNSVGGroup> + </RNSVGSvgView> + </View> + <Text + accessibilityRole="text" + style={ + { + "color": "inherit", + "fontFamily": "EuclidCircularB-Regular", + "fontSize": 14, + "fontWeight": "400", + "letterSpacing": 0, + "lineHeight": 22, + } + } + > + 5hmuyxw...egmfy + </Text> +</View> +`; + +exports[`SnapUIAddress renders Polkadot address with blockie 1`] = ` +<View + alignItems="center" + flexDirection="row" + gap={8} + style={ + [ + { + "alignItems": "center", + "flexDirection": "row", + "gap": 8, + }, + undefined, + ] + } +> + <Image + borderRadius={16} + height={32} + source={ + { + "uri": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAMAAAD04JH5AAAACVBMVEWONyASgTR7lxMyit4TAAAAA3RSTlP////6yOLMAABAi0lEQVR42gGAQH+/AAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBiAhCAWH8DQcAAAAASUVORK5CYII=", + } + } + width={32} + /> + <Text + accessibilityRole="text" + style={ + { + "color": "inherit", + "fontFamily": "EuclidCircularB-Regular", + "fontSize": 14, + "fontWeight": "400", + "letterSpacing": 0, + "lineHeight": 22, + } + } + > + 5hmuyxw...egmfy + </Text> +</View> +`; + +exports[`SnapUIAddress renders Starknet address 1`] = ` +<View + alignItems="center" + flexDirection="row" + gap={8} + style={ + [ + { + "alignItems": "center", + "flexDirection": "row", + "gap": 8, + }, + undefined, + ] + } +> + <View + style={ + [ + { + "overflow": "hidden", + }, + { + "backgroundColor": "#C7146E", + "borderRadius": 16, + "height": 32, + "width": 32, + }, + undefined, + ] + } + > + <RNSVGSvgView + bbHeight={32} + bbWidth={32} + focusable={false} + height={32} + style={ + [ + { + "backgroundColor": "transparent", + "borderWidth": 0, + }, + { + "flex": 0, + "height": 32, + "width": 32, + }, + ] + } + width={32} + > + <RNSVGGroup + fill={ + { + "payload": 4278190080, + "type": 0, + } + } + > + <RNSVGRect + fill={ + { + "payload": 4280584673, + "type": 0, + } + } + height={32} + matrix={ + [ + 0.6454576877239506, + 0.7637960286346421, + -0.7637960286346421, + 0.6454576877239506, + 19.72240983294027, + -10.014248315377227, + ] + } + propList={ + [ + "fill", + ] + } + width={32} + x={0} + y={0} + /> + <RNSVGRect + fill={ + { + "payload": 4294152960, + "type": 0, + } + } + height={32} + matrix={ + [ + 0.9909831997148363, + -0.13398618541829194, + 0.13398618541829194, + 0.9909831997148363, + -18.754789048385472, + -5.941873265706983, + ] + } + propList={ + [ + "fill", + ] + } + width={32} + x={0} + y={0} + /> + <RNSVGRect + fill={ + { + "payload": 4279616242, + "type": 0, + } + } + height={32} + matrix={ + [ + -0.7965299180241964, + -0.6045991148623747, + 0.6045991148623747, + -0.7965299180241964, + -4.3840057335908575, + 41.26998414158069, + ] + } + propList={ + [ + "fill", + ] + } + width={32} + x={0} + y={0} + /> + </RNSVGGroup> + </RNSVGSvgView> + </View> + <Text + accessibilityRole="text" + style={ + { + "color": "inherit", + "fontFamily": "EuclidCircularB-Regular", + "fontSize": 14, + "fontWeight": "400", + "letterSpacing": 0, + "lineHeight": 22, + } + } + > + 0x02dd1...0ab57 + </Text> +</View> +`; + +exports[`SnapUIAddress renders Starknet address with blockie 1`] = ` +<View + alignItems="center" + flexDirection="row" + gap={8} + style={ + [ + { + "alignItems": "center", + "flexDirection": "row", + "gap": 8, + }, + undefined, + ] + } +> + <Image + borderRadius={16} + height={32} + source={ + { + "uri": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAMAAAD04JH5AAAACVBMVEVpc9IWhYjg9F/LoqLsAAAAA3RSTlP////6yOLMAABAi0lEQVR42gGAQH+/AAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgICAgICAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAkks2AfzvMOsAAAAASUVORK5CYII=", + } + } + width={32} + /> + <Text + accessibilityRole="text" + style={ + { + "color": "inherit", + "fontFamily": "EuclidCircularB-Regular", + "fontSize": 14, + "fontWeight": "400", + "letterSpacing": 0, + "lineHeight": 22, + } + } + > + 0x02dd1...0ab57 + </Text> +</View> +`; + +exports[`SnapUIAddress renders legacy Ethereum address 1`] = ` +<View + alignItems="center" + flexDirection="row" + gap={8} + style={ + [ + { + "alignItems": "center", + "flexDirection": "row", + "gap": 8, + }, + undefined, + ] + } +> + <View + style={ + [ + { + "overflow": "hidden", + }, + { + "backgroundColor": "#C71452", + "borderRadius": 16, + "height": 32, + "width": 32, + }, + undefined, + ] + } + > + <RNSVGSvgView + bbHeight={32} + bbWidth={32} + focusable={false} + height={32} + style={ + [ + { + "backgroundColor": "transparent", + "borderWidth": 0, + }, + { + "flex": 0, + "height": 32, + "width": 32, + }, + ] + } + width={32} + > + <RNSVGGroup + fill={ + { + "payload": 4278190080, + "type": 0, + } + } + > + <RNSVGRect + fill={ + { + "payload": 4294022658, + "type": 0, + } + } + height={32} + matrix={ + [ + -0.6374239897486895, + -0.7705132427757894, + 0.7705132427757894, + -0.6374239897486895, + 11.053062989283362, + 43.47891226439789, + ] + } + propList={ + [ + "fill", + ] + } + width={32} + x={0} + y={0} + /> + <RNSVGRect + fill={ + { + "payload": 4280577249, + "type": 0, + } + } + height={32} + matrix={ + [ + -0.41786707380107674, + -0.9085081775267219, + 0.9085081775267219, + -0.41786707380107674, + -5.348907952243133, + 27.780085344551686, + ] + } + propList={ + [ + "fill", + ] + } + width={32} + x={0} + y={0} + /> + <RNSVGRect + fill={ + { + "payload": 4278291595, + "type": 0, + } + } + height={32} + matrix={ + [ + -0.9943379441332046, + 0.10626407133623336, + -0.10626407133623336, + -0.9943379441332046, + 52.03432629974044, + 53.45795917102963, + ] + } + propList={ + [ + "fill", + ] + } + width={32} + x={0} + y={0} + /> + </RNSVGGroup> + </RNSVGSvgView> + </View> + <Text + accessibilityRole="text" + style={ + { + "color": "inherit", + "fontFamily": "EuclidCircularB-Regular", + "fontSize": 14, + "fontWeight": "400", + "letterSpacing": 0, + "lineHeight": 22, + } + } + > + 0xab16a...Bfcdb + </Text> +</View> +`; diff --git a/app/components/Snaps/SnapUIAddress/useDisplayName.ts b/app/components/Snaps/SnapUIAddress/useDisplayName.ts new file mode 100644 index 000000000000..465562116469 --- /dev/null +++ b/app/components/Snaps/SnapUIAddress/useDisplayName.ts @@ -0,0 +1,59 @@ +import { + CaipChainId, + KnownCaipNamespace, + CaipNamespace, +} from '@metamask/utils'; +import { useSelector } from 'react-redux'; +import { decimalToHex } from '../../../util/conversions'; +import { RootState } from '../../../reducers'; +import { selectInternalAccounts } from '../../../selectors/accountsController'; +import { toLowerCaseEquals } from '../../../util/general'; +import { selectAddressBookByChain } from '../../../selectors/addressBookController'; + +export interface UseDisplayNameParams { + chain: { + namespace: CaipNamespace; + reference: string; + }; + chainId: CaipChainId; + address: string; +} + +/** + * Get the display name for an address. + * This will look for an account name in the state, and if not found, it will look for an address book entry. + * + * @param params - The parsed CAIP-10 ID. + * @returns The display name for the address. + */ +export const useDisplayName = ( + params: UseDisplayNameParams, +): string | undefined => { + const { + address, + chain: { namespace, reference }, + } = params; + + const isEip155 = namespace === KnownCaipNamespace.Eip155; + + const accounts = useSelector(selectInternalAccounts); + + const account = accounts.find((possibleAccount) => + toLowerCaseEquals(possibleAccount.address, address), + ); + + const chainAddressBook = useSelector((state: RootState) => + selectAddressBookByChain( + state, + `0x${decimalToHex(isEip155 ? reference : `0`)}`, + ), + ); + + const addressBookEntry = chainAddressBook.find((contact) => + toLowerCaseEquals(contact.address, address), + ); + + return ( + account?.metadata?.name || (isEip155 && addressBookEntry?.name) || undefined + ); +}; From 31e6073e01301c7ae48ae71f63cf00c0d1955131 Mon Sep 17 00:00:00 2001 From: metamaskbot <metamaskbot@users.noreply.github.com> Date: Thu, 27 Mar 2025 15:23:29 -0600 Subject: [PATCH 080/473] fix lint warning --- app/core/Engine/Engine.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/app/core/Engine/Engine.ts b/app/core/Engine/Engine.ts index 5169b8da5170..e8bdbf74a900 100644 --- a/app/core/Engine/Engine.ts +++ b/app/core/Engine/Engine.ts @@ -206,7 +206,6 @@ import { multichainNetworkControllerInit } from './controllers/multichain-networ import { currencyRateControllerInit } from './controllers/currency-rate-controller/currency-rate-controller-init'; import { EarnController } from '@metamask/earn-controller'; import { TransactionControllerInit } from './controllers/transaction-controller'; -import { SnapInterfaceController } from '@metamask/snaps-controllers'; const NON_EMPTY = 'NON_EMPTY'; From 9152dbd3f5dcf1c4e73890117db95e4f59c30711 Mon Sep 17 00:00:00 2001 From: metamaskbot <metamaskbot@users.noreply.github.com> Date: Thu, 27 Mar 2025 15:25:01 -0600 Subject: [PATCH 081/473] fix snapshot --- .../__snapshots__/QuotesView.test.ts.snap | 29 ------------------- 1 file changed, 29 deletions(-) diff --git a/app/components/UI/Swaps/__snapshots__/QuotesView.test.ts.snap b/app/components/UI/Swaps/__snapshots__/QuotesView.test.ts.snap index 55574ef49b2a..9218eb35333c 100644 --- a/app/components/UI/Swaps/__snapshots__/QuotesView.test.ts.snap +++ b/app/components/UI/Swaps/__snapshots__/QuotesView.test.ts.snap @@ -2068,35 +2068,6 @@ exports[`QuotesView should render quote screen 1`] = ` transparent={true} visible={false} /> - <Modal - animationType="none" - deviceHeight={null} - deviceWidth={null} - hardwareAccelerated={false} - hideModalContentWhileAnimating={false} - onBackdropPress={[Function]} - onModalHide={[Function]} - onModalWillHide={[Function]} - onModalWillShow={[Function]} - onRequestClose={[Function]} - onSwipeComplete={[Function]} - panResponderThreshold={4} - scrollHorizontal={false} - scrollOffset={0} - scrollOffsetMax={0} - scrollTo={null} - statusBarTranslucent={false} - supportedOrientations={ - [ - "portrait", - "landscape", - ] - } - swipeDirection="down" - swipeThreshold={100} - transparent={true} - visible={false} - /> </View> </RCTScrollView> </RCTSafeAreaView> From 39cd78af656ee9ec48ae2553aa0dca3383dded51 Mon Sep 17 00:00:00 2001 From: metamaskbot <metamaskbot@users.noreply.github.com> Date: Thu, 27 Mar 2025 15:35:51 -0600 Subject: [PATCH 082/473] update snapshot --- .../__snapshots__/QuotesView.test.ts.snap | 58 +++++++++++++++++++ 1 file changed, 58 insertions(+) diff --git a/app/components/UI/Swaps/__snapshots__/QuotesView.test.ts.snap b/app/components/UI/Swaps/__snapshots__/QuotesView.test.ts.snap index 9218eb35333c..b4896ace545d 100644 --- a/app/components/UI/Swaps/__snapshots__/QuotesView.test.ts.snap +++ b/app/components/UI/Swaps/__snapshots__/QuotesView.test.ts.snap @@ -2068,6 +2068,64 @@ exports[`QuotesView should render quote screen 1`] = ` transparent={true} visible={false} /> + <Modal + animationType="none" + deviceHeight={null} + deviceWidth={null} + hardwareAccelerated={false} + hideModalContentWhileAnimating={false} + onBackdropPress={[Function]} + onModalHide={[Function]} + onModalWillHide={[Function]} + onModalWillShow={[Function]} + onRequestClose={[Function]} + onSwipeComplete={[Function]} + panResponderThreshold={4} + scrollHorizontal={false} + scrollOffset={0} + scrollOffsetMax={0} + scrollTo={null} + statusBarTranslucent={false} + supportedOrientations={ + [ + "portrait", + "landscape", + ] + } + swipeDirection="down" + swipeThreshold={100} + transparent={true} + visible={false} + /> + <Modal + animationType="none" + deviceHeight={null} + deviceWidth={null} + hardwareAccelerated={false} + hideModalContentWhileAnimating={false} + onBackdropPress={[Function]} + onModalHide={[Function]} + onModalWillHide={[Function]} + onModalWillShow={[Function]} + onRequestClose={[Function]} + onSwipeComplete={[Function]} + panResponderThreshold={4} + scrollHorizontal={false} + scrollOffset={0} + scrollOffsetMax={0} + scrollTo={null} + statusBarTranslucent={false} + supportedOrientations={ + [ + "portrait", + "landscape", + ] + } + swipeDirection="down" + swipeThreshold={100} + transparent={true} + visible={false} + /> </View> </RCTScrollView> </RCTSafeAreaView> From 09473d03045573a50b0b7a039e0b13d8ca05b0a7 Mon Sep 17 00:00:00 2001 From: sethkfman <10342624+sethkfman@users.noreply.github.com> Date: Thu, 27 Mar 2025 16:24:01 -0600 Subject: [PATCH 083/473] chore: 7.43.0 stable main sync (#14279) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit <!-- Please submit this PR as a draft initially. Do not mark it as "Ready for review" until the template has been completely filled out, and PR status checks have passed at least once. --> ## **Description** This PR sync stable and main with the 7.43.0 release. ## **Related issues** Fixes: ## **Manual testing steps** 1. Go to this page... 2. 3. ## **Screenshots/Recordings** <!-- If applicable, add screenshots and/or recordings to visualize the before and after of your change. --> ### **Before** <!-- [screenshots/recordings] --> ### **After** <!-- [screenshots/recordings] --> ## **Pre-merge author checklist** - [ ] I’ve followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile Coding Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [ ] I've completed the PR template to the best of my ability - [ ] I’ve included tests if applicable - [ ] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [ ] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. ## **Pre-merge reviewer checklist** - [ ] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [ ] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots. --------- Co-authored-by: metamaskbot <metamaskbot@users.noreply.github.com> Co-authored-by: MetaMask Bot <37885440+metamaskbot@users.noreply.github.com> Co-authored-by: runway-github[bot] <73448015+runway-github[bot]@users.noreply.github.com> Co-authored-by: Vince Howard <vincenguyenhoward@gmail.com> Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: sahar-fehri <sahar.fehri@consensys.net> Co-authored-by: Aslau Mario-Daniel <marioaslau@gmail.com> Co-authored-by: Eric Bishard <eric@httpjunkie.com> Co-authored-by: Owen Craston <owen.craston@consensys.net> Co-authored-by: tommasini <46944231+tommasini@users.noreply.github.com> Co-authored-by: Curtis David <Curtis.David7@gmail.com> Co-authored-by: Davide Brocchetto <davide.brocchetto@consensys.net> Co-authored-by: Matthew Grainger <46547583+Matt561@users.noreply.github.com> Co-authored-by: OGPoyraz <omergoktugpoyraz@gmail.com> Co-authored-by: Daniel <80175477+dan437@users.noreply.github.com> Co-authored-by: Jyoti Puri <jyotipuri@gmail.com> Co-authored-by: Prithpal Sooriya <prithpal.sooriya@consensys.net> Co-authored-by: Xiaoming Wang <7315988+dawnseeker8@users.noreply.github.com> Co-authored-by: Nick Gambino <35090461+gambinish@users.noreply.github.com> Co-authored-by: Brian August Nguyen <brianacnguyen@gmail.com> Co-authored-by: Nico MASSART <NicolasMassart@users.noreply.github.com> Co-authored-by: Salim TOUBAL <salim.toubal@outlook.com> Co-authored-by: CW <chris.wilcox@consensys.net> Co-authored-by: Pedro Figueiredo <ganseki.figueiredo@gmail.com> Co-authored-by: digiwand <20778143+digiwand@users.noreply.github.com> Co-authored-by: Gustavo Antunes <17601467+gantunesr@users.noreply.github.com> Co-authored-by: Vinicius Stevam <45455812+vinistevam@users.noreply.github.com> Co-authored-by: EtherWizard33 <165834542+EtherWizard33@users.noreply.github.com> Co-authored-by: Bryan Fullam <bryan.fullam@consensys.net> Co-authored-by: Devin Stewart <49423028+Bigshmow@users.noreply.github.com> Co-authored-by: Ziad Saab <ziad.saab@gmail.com> Co-authored-by: Nicholas Smith <nick.smith@consensys.net> Co-authored-by: George Weiler <georgejweiler@gmail.com> Co-authored-by: Cal Leung <cal.leung@consensys.net> Co-authored-by: Amitabh Aggarwal <aggarwal.amitabh@gmail.com> Co-authored-by: Gauthier Petetin <gauthierpetetin@hotmail.com> Co-authored-by: Frederik Bolding <frederik.bolding@gmail.com> Co-authored-by: infiniteflower <139582705+infiniteflower@users.noreply.github.com> Co-authored-by: Iván <ivan.canete@consensys.net> Co-authored-by: Daniel Cross <dan.s.cross@icloud.com> Co-authored-by: Owen Craston <owengc12@gmail.com> Co-authored-by: Kylan Hurt <6249205+smilingkylan@users.noreply.github.com> Co-authored-by: jake-perkins <128608287+jake-perkins@users.noreply.github.com> Co-authored-by: David Drazic <david@timechaser.org> Co-authored-by: Pedro Pablo Aste Kompen <wachunei@gmail.com> Co-authored-by: AxelGes <axelges9@gmail.com> Co-authored-by: Michele Esposito <34438276+mikesposito@users.noreply.github.com> --- CHANGELOG.md | 85 +++++++++++++++++++++++++- android/app/build.gradle | 4 +- bitrise.yml | 10 +-- ios/MetaMask.xcodeproj/project.pbxproj | 24 ++++---- package.json | 2 +- 5 files changed, 104 insertions(+), 21 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 866039be93bf..9a78e81b0686 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,87 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +## [7.43.0] + +### Added + +- feat(ramp): estimate gasLimit for ERC20 transfers (sell feature) ([#12467](https://github.com/MetaMask/metamask-mobile/pull/12467)) +- feat(snaps): Add Snap UI Skeleton component integration and mapping ([#13966](https://github.com/MetaMask/metamask-mobile/pull/13966)) +- feat(snaps): Add icon next to SnapUILink ([#13878](https://github.com/MetaMask/metamask-mobile/pull/13878)) +- feat(snaps): Add Snap UI Spinner component ([#13832](https://github.com/MetaMask/metamask-mobile/pull/13832)) +- feat(ramp): payment method selector UI update ([#13722](https://github.com/MetaMask/metamask-mobile/pull/13722)) +- feat(snaps): Add support for full border radius for SnapUIImage ([#13816](https://github.com/MetaMask/metamask-mobile/pull/13816)) +- feat(ramp): enable non-evm support for Ramp, buy only ([#13718](https://github.com/MetaMask/metamask-mobile/pull/13718)) +- feat: Add confirmation UI metrics infra and some redesigned staking deposit events ([#13919](https://github.com/MetaMask/metamask-mobile/pull/13919)) +- feat: Add gas included swaps ([#13972](https://github.com/MetaMask/metamask-mobile/pull/13972)) +- feat: Add Base to Smart Transaction supported chains ([#13920](https://github.com/MetaMask/metamask-mobile/pull/13920)) +- feat: Add token list item pressed event ([#13808](https://github.com/MetaMask/metamask-mobile/pull/13808)) +- feat: STAKE-934 update staking hooks to consume earn controller selectors ([#13939](https://github.com/MetaMask/metamask-mobile/pull/13939)) +- feat: adding skeleton component ([#13780](https://github.com/MetaMask/metamask-mobile/pull/13780)) +- feat: Implement unstaking confirmation ([#13921](https://github.com/MetaMask/metamask-mobile/pull/13921)) +- feat: revisit currencies list ([#13879](https://github.com/MetaMask/metamask-mobile/pull/13879)) +- feat: bridge input screen ([#13847](https://github.com/MetaMask/metamask-mobile/pull/13847)) +- feat: Implement tooltip component on mobile ([#13860](https://github.com/MetaMask/metamask-mobile/pull/13860)) +- feat: support DAI while it's being deprecated ([#13666](https://github.com/MetaMask/metamask-mobile/pull/13666)) +- feat: Implement redesigned staking withdrawals component ([#13826](https://github.com/MetaMask/metamask-mobile/pull/13826)) +- feat: bump profile-sync-controller and migrate to the controller init pattern ([#13859](https://github.com/MetaMask/metamask-mobile/pull/13859)) +- feat: Multi chain send flow ([#13854](https://github.com/MetaMask/metamask-mobile/pull/13854)) +- feat: STAKE-934: added earn-controller pooled staking selectors ([#13875](https://github.com/MetaMask/metamask-mobile/pull/13875)) +- feat: STAKE-934 add earn controller to engine ([#13778](https://github.com/MetaMask/metamask-mobile/pull/13778)) +- feat: bump @metamask/notification-services-controller to 2.0.0 ([#13857](https://github.com/MetaMask/metamask-mobile/pull/13857)) +- feat: add bridge controllers to Engine ([#13750](https://github.com/MetaMask/metamask-mobile/pull/13750)) +- feat: add InlineAlert component ([#13709](https://github.com/MetaMask/metamask-mobile/pull/13709)) +- feat: add MultipleAlertModal component ([#13683](https://github.com/MetaMask/metamask-mobile/pull/13683)) +- feat: Add Snaps UI `Selector` component ([#13747](https://github.com/MetaMask/metamask-mobile/pull/13747)) +- feat: added **/**mocks**/** to sonar.coverage.exclusions ([#13787](https://github.com/MetaMask/metamask-mobile/pull/13787)) +- feat: add `GeneralAlertBanner` component ([#13627](https://github.com/MetaMask/metamask-mobile/pull/13627)) + +### Fixed + +- fix(close bug report action): target branch name has been renamed stable ([#13755](https://github.com/MetaMask/metamask-mobile/pull/13755)) +- fix(sentry sampling): reduce by 25% our sentry trace sample rate to avoid exceeding our quota ([#13745](https://github.com/MetaMask/metamask-mobile/pull/13745)) +- fix(deps): unpin ethereumjs-abi@0.6,x ethereumjs-util@6.x ([#11972](https://github.com/MetaMask/metamask-mobile/pull/11972)) +- fix: Uppercase currency code ([#13967](https://github.com/MetaMask/metamask-mobile/pull/13967)) +- fix: Max balance for dApp erc20 approval ([#13881](https://github.com/MetaMask/metamask-mobile/pull/13881)) +- fix: fix network filter on switch network from dapp ([#13987](https://github.com/MetaMask/metamask-mobile/pull/13987)) +- fix: Move the SnapExecutionService render up in the stack ([#13998](https://github.com/MetaMask/metamask-mobile/pull/13998)) +- fix: Manage order for app services initialization ([#13912](https://github.com/MetaMask/metamask-mobile/pull/13912)) +- fix: use correct updating text when toggling notifications ([#13943](https://github.com/MetaMask/metamask-mobile/pull/13943)) +- fix: cp-7.42.0 fix history transactions loading ([#13959](https://github.com/MetaMask/metamask-mobile/pull/13959)) +- fix: error when asset chain is not available in account controller state ([#13951](https://github.com/MetaMask/metamask-mobile/pull/13951)) +- fix: margin incrementally applied to icon when bottom sheet opened ([#13946](https://github.com/MetaMask/metamask-mobile/pull/13946)) +- fix: STX swap failures when needing to approve erc20 ([#13653](https://github.com/MetaMask/metamask-mobile/pull/13653)) +- fix: cp-7.42.0 Move AssetsPollingProvider down a level to persist tab label ([#13962](https://github.com/MetaMask/metamask-mobile/pull/13962)) +- fix: MMASSETS-626-new-rpc-no-confirmation ([#13883](https://github.com/MetaMask/metamask-mobile/pull/13883)) +- fix: Use proper implementation for `getUnlockPromise` ([#13947](https://github.com/MetaMask/metamask-mobile/pull/13947)) +- fix: Migration of `TransactionController` to modularised controller init ([#13817](https://github.com/MetaMask/metamask-mobile/pull/13817)) +- fix: cp-7.42.0`Tokens` screen performance degradation ([#13907](https://github.com/MetaMask/metamask-mobile/pull/13907)) +- fix: Confirm ScrollView and readd drag down and backdrop click to close ([#13913](https://github.com/MetaMask/metamask-mobile/pull/13913)) +- fix: Persist scrypt derived storage keys to Keychain/Keystore on iOS/Android ([#13899](https://github.com/MetaMask/metamask-mobile/pull/13899)) +- fix: cp-7.42.0 enable notifications UI ([#13877](https://github.com/MetaMask/metamask-mobile/pull/13877)) +- fix: main balance formatting ([#13818](https://github.com/MetaMask/metamask-mobile/pull/13818)) +- fix: cp-7.42.0 Display account label in re-designs confirmation page account info section ([#13853](https://github.com/MetaMask/metamask-mobile/pull/13853)) +- fix: add autoscroll in RPC URL form when virtual keyboard blocks content ([#13831](https://github.com/MetaMask/metamask-mobile/pull/13831)) +- fix: Missing POL percentage trend ([#13812](https://github.com/MetaMask/metamask-mobile/pull/13812)) +- fix: cp-7.42.0 Disable signature re-designs for ledger account ([#13858](https://github.com/MetaMask/metamask-mobile/pull/13858)) +- fix: prevent network selector modal from going behind IOS keyboard ([#13810](https://github.com/MetaMask/metamask-mobile/pull/13810)) +- fix: Permit Simulation vertical overflow, title padding, and collapsed message alignment ([#13830](https://github.com/MetaMask/metamask-mobile/pull/13830)) +- fix: Deal with a couple of crashes when rendering Snaps UI ([#13828](https://github.com/MetaMask/metamask-mobile/pull/13828)) +- fix: Multichain balances ([#13742](https://github.com/MetaMask/metamask-mobile/pull/13742)) +- fix: tsdoc multi rpc for non evm networks ([#13688](https://github.com/MetaMask/metamask-mobile/pull/13688)) +- fix: Improve Snaps UI spacing rules ([#13797](https://github.com/MetaMask/metamask-mobile/pull/13797)) +- fix: cp-7.42.0 improve performance of notifications loading when opening the app ([#13803](https://github.com/MetaMask/metamask-mobile/pull/13803)) +- fix: Redesign Confirmation bold font weight text ([#13706](https://github.com/MetaMask/metamask-mobile/pull/13706)) +- fix: receive network name in receive asset screen ([#13746](https://github.com/MetaMask/metamask-mobile/pull/13746)) +- fix: fix setup files ([#13799](https://github.com/MetaMask/metamask-mobile/pull/13799)) +- fix: fix balance display in account info signature request ([#13740](https://github.com/MetaMask/metamask-mobile/pull/13740)) +- fix: Remove `transactionMetrics` from persisted storage ([#13793](https://github.com/MetaMask/metamask-mobile/pull/13793)) +- fix: cp-7.42.0 push notification settings bugs ([#13772](https://github.com/MetaMask/metamask-mobile/pull/13772)) +- fix: bitrise missing signature elements following BottomModal → BottomSheet refactor ([#13783](https://github.com/MetaMask/metamask-mobile/pull/13783)) +- fix: permit simulation overflow ([#13769](https://github.com/MetaMask/metamask-mobile/pull/13769)) +- fix: Improve redesigned staking deposit confirmation navigation ([#13743](https://github.com/MetaMask/metamask-mobile/pull/13743)) +- fix: fixes ramp quote selection test ([#13756](https://github.com/MetaMask/metamask-mobile/pull/13756)) + ## [7.42.1] ### Fixed @@ -5092,7 +5173,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#957](https://github.com/MetaMask/metamask-mobile/pull/957): fix timeouts (#957) - [#954](https://github.com/MetaMask/metamask-mobile/pull/954): Bugfix: onboarding navigation (#954) -[Unreleased]: https://github.com/MetaMask/metamask-mobile/compare/v7.42.0...HEAD +[Unreleased]: https://github.com/MetaMask/metamask-mobile/compare/v7.43.0...HEAD +[7.43.0]: https://github.com/MetaMask/metamask-mobile/compare/v7.42.1...v7.43.0 +[7.42.1]: https://github.com/MetaMask/metamask-mobile/compare/v7.42.0...v7.42.1 [7.42.0]: https://github.com/MetaMask/metamask-mobile/compare/v7.41.0...v7.42.0 [7.41.0]: https://github.com/MetaMask/metamask-mobile/compare/v7.40.0...v7.41.0 [7.40.0]: https://github.com/MetaMask/metamask-mobile/compare/v7.39.0...v7.40.0 diff --git a/android/app/build.gradle b/android/app/build.gradle index 0c6e2b665224..ad8436cb6e38 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -178,8 +178,8 @@ android { applicationId "io.metamask" minSdkVersion rootProject.ext.minSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion - versionName "7.42.99" - versionCode 1623 + versionName "7.43.0" + versionCode 1656 testBuildType System.getProperty('testBuildType', 'debug') missingDimensionStrategy 'react-native-camera', 'general' testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" diff --git a/bitrise.yml b/bitrise.yml index 6553b8e0b5b4..55f5774ad4ae 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -2122,16 +2122,16 @@ app: PROJECT_LOCATION_IOS: ios - opts: is_expand: false - VERSION_NAME: 7.42.1 + VERSION_NAME: 7.43.0 - opts: is_expand: false - VERSION_NUMBER: 1623 + VERSION_NUMBER: 1656 - opts: is_expand: false - FLASK_VERSION_NAME: 7.42.1 + FLASK_VERSION_NAME: 7.43.0 - opts: is_expand: false - FLASK_VERSION_NUMBER: 1623 + FLASK_VERSION_NUMBER: 1656 - opts: is_expand: false ANDROID_APK_LINK: '' @@ -2168,4 +2168,4 @@ trigger_map: - tag: 'qa-*' pipeline: create_qa_builds_pipeline - tag: 'v*.*.*' - pipeline: create_qa_builds_pipeline + pipeline: create_qa_builds_pipeline \ No newline at end of file diff --git a/ios/MetaMask.xcodeproj/project.pbxproj b/ios/MetaMask.xcodeproj/project.pbxproj index 59b39b829718..1b9f63c7eba4 100644 --- a/ios/MetaMask.xcodeproj/project.pbxproj +++ b/ios/MetaMask.xcodeproj/project.pbxproj @@ -1437,7 +1437,7 @@ CODE_SIGN_IDENTITY = "Apple Development"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1637; + CURRENT_PROJECT_VERSION = 1656; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = 48XVW22RCG; @@ -1475,7 +1475,7 @@ "${inherited}", ); LLVM_LTO = YES; - MARKETING_VERSION = 7.42.99; + MARKETING_VERSION = 7.43.0; ONLY_ACTIVE_ARCH = YES; OTHER_CFLAGS = "$(inherited)"; OTHER_LDFLAGS = ( @@ -1506,7 +1506,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMask.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1637; + CURRENT_PROJECT_VERSION = 1656; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 48XVW22RCG; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 48XVW22RCG; @@ -1541,7 +1541,7 @@ "${inherited}", ); LLVM_LTO = YES; - MARKETING_VERSION = 7.42.99; + MARKETING_VERSION = 7.43.0; ONLY_ACTIVE_ARCH = NO; OTHER_CFLAGS = "$(inherited)"; OTHER_LDFLAGS = ( @@ -1571,7 +1571,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMaskDebug.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1637; + CURRENT_PROJECT_VERSION = 1656; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = 48XVW22RCG; @@ -1608,7 +1608,7 @@ "\"$(SRCROOT)/MetaMask/System/Library/Frameworks\"", ); LLVM_LTO = YES; - MARKETING_VERSION = 7.42.99; + MARKETING_VERSION = 7.43.0; ONLY_ACTIVE_ARCH = YES; OTHER_CFLAGS = "$(inherited)"; OTHER_LDFLAGS = ( @@ -1637,7 +1637,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMask.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1637; + CURRENT_PROJECT_VERSION = 1656; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 48XVW22RCG; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 48XVW22RCG; @@ -1672,7 +1672,7 @@ "\"$(SRCROOT)/MetaMask/System/Library/Frameworks\"", ); LLVM_LTO = YES; - MARKETING_VERSION = 7.42.99; + MARKETING_VERSION = 7.43.0; ONLY_ACTIVE_ARCH = NO; OTHER_CFLAGS = "$(inherited)"; OTHER_LDFLAGS = ( @@ -1796,7 +1796,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMaskDebug.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1637; + CURRENT_PROJECT_VERSION = 1656; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = 48XVW22RCG; @@ -1833,7 +1833,7 @@ "\"$(SRCROOT)/MetaMask/System/Library/Frameworks\"", ); LLVM_LTO = YES; - MARKETING_VERSION = 7.42.99; + MARKETING_VERSION = 7.43.0; ONLY_ACTIVE_ARCH = YES; OTHER_CFLAGS = ( "$(inherited)", @@ -1865,7 +1865,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMask.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1637; + CURRENT_PROJECT_VERSION = 1656; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 48XVW22RCG; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 48XVW22RCG; @@ -1900,7 +1900,7 @@ "\"$(SRCROOT)/MetaMask/System/Library/Frameworks\"", ); LLVM_LTO = YES; - MARKETING_VERSION = 7.42.99; + MARKETING_VERSION = 7.43.0; ONLY_ACTIVE_ARCH = NO; OTHER_CFLAGS = ( "$(inherited)", diff --git a/package.json b/package.json index 8fb5fc453820..9a208c69f897 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "metamask", - "version": "7.42.99", + "version": "7.43.0", "private": true, "scripts": { "audit:ci": "./scripts/yarn-audit.sh", From 18ed5e96256256d81aa75a8e4b5014a854694e89 Mon Sep 17 00:00:00 2001 From: metamaskbot <metamaskbot@users.noreply.github.com> Date: Thu, 27 Mar 2025 16:42:44 -0600 Subject: [PATCH 084/473] fix version bump --- android/app/build.gradle | 2 +- bitrise.yml | 4 ++-- ios/MetaMask.xcodeproj/project.pbxproj | 12 ++++++------ package.json | 2 +- 4 files changed, 10 insertions(+), 10 deletions(-) diff --git a/android/app/build.gradle b/android/app/build.gradle index ad8436cb6e38..406668bf210c 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -178,7 +178,7 @@ android { applicationId "io.metamask" minSdkVersion rootProject.ext.minSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion - versionName "7.43.0" + versionName "7.44.0" versionCode 1656 testBuildType System.getProperty('testBuildType', 'debug') missingDimensionStrategy 'react-native-camera', 'general' diff --git a/bitrise.yml b/bitrise.yml index 55f5774ad4ae..96a6c24807b6 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -2122,13 +2122,13 @@ app: PROJECT_LOCATION_IOS: ios - opts: is_expand: false - VERSION_NAME: 7.43.0 + VERSION_NAME: 7.44.0 - opts: is_expand: false VERSION_NUMBER: 1656 - opts: is_expand: false - FLASK_VERSION_NAME: 7.43.0 + FLASK_VERSION_NAME: 7.44.0 - opts: is_expand: false FLASK_VERSION_NUMBER: 1656 diff --git a/ios/MetaMask.xcodeproj/project.pbxproj b/ios/MetaMask.xcodeproj/project.pbxproj index 1b9f63c7eba4..71782d8567f6 100644 --- a/ios/MetaMask.xcodeproj/project.pbxproj +++ b/ios/MetaMask.xcodeproj/project.pbxproj @@ -1475,7 +1475,7 @@ "${inherited}", ); LLVM_LTO = YES; - MARKETING_VERSION = 7.43.0; + MARKETING_VERSION = 7.44.0; ONLY_ACTIVE_ARCH = YES; OTHER_CFLAGS = "$(inherited)"; OTHER_LDFLAGS = ( @@ -1541,7 +1541,7 @@ "${inherited}", ); LLVM_LTO = YES; - MARKETING_VERSION = 7.43.0; + MARKETING_VERSION = 7.44.0; ONLY_ACTIVE_ARCH = NO; OTHER_CFLAGS = "$(inherited)"; OTHER_LDFLAGS = ( @@ -1608,7 +1608,7 @@ "\"$(SRCROOT)/MetaMask/System/Library/Frameworks\"", ); LLVM_LTO = YES; - MARKETING_VERSION = 7.43.0; + MARKETING_VERSION = 7.44.0; ONLY_ACTIVE_ARCH = YES; OTHER_CFLAGS = "$(inherited)"; OTHER_LDFLAGS = ( @@ -1672,7 +1672,7 @@ "\"$(SRCROOT)/MetaMask/System/Library/Frameworks\"", ); LLVM_LTO = YES; - MARKETING_VERSION = 7.43.0; + MARKETING_VERSION = 7.44.0; ONLY_ACTIVE_ARCH = NO; OTHER_CFLAGS = "$(inherited)"; OTHER_LDFLAGS = ( @@ -1833,7 +1833,7 @@ "\"$(SRCROOT)/MetaMask/System/Library/Frameworks\"", ); LLVM_LTO = YES; - MARKETING_VERSION = 7.43.0; + MARKETING_VERSION = 7.44.0; ONLY_ACTIVE_ARCH = YES; OTHER_CFLAGS = ( "$(inherited)", @@ -1900,7 +1900,7 @@ "\"$(SRCROOT)/MetaMask/System/Library/Frameworks\"", ); LLVM_LTO = YES; - MARKETING_VERSION = 7.43.0; + MARKETING_VERSION = 7.44.0; ONLY_ACTIVE_ARCH = NO; OTHER_CFLAGS = ( "$(inherited)", diff --git a/package.json b/package.json index 9a208c69f897..4e069d124574 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "metamask", - "version": "7.43.0", + "version": "7.44.0", "private": true, "scripts": { "audit:ci": "./scripts/yarn-audit.sh", From 8b072e3a0d93060c6e56023db857ccd475fe3b8c Mon Sep 17 00:00:00 2001 From: metamaskbot <metamaskbot@users.noreply.github.com> Date: Thu, 27 Mar 2025 22:52:49 +0000 Subject: [PATCH 085/473] bump semvar version to 7.44.0 && build version to 1658 --- android/app/build.gradle | 2 +- bitrise.yml | 4 ++-- ios/MetaMask.xcodeproj/project.pbxproj | 12 ++++++------ 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/android/app/build.gradle b/android/app/build.gradle index 406668bf210c..f060f4ac2a36 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -179,7 +179,7 @@ android { minSdkVersion rootProject.ext.minSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion versionName "7.44.0" - versionCode 1656 + versionCode 1658 testBuildType System.getProperty('testBuildType', 'debug') missingDimensionStrategy 'react-native-camera', 'general' testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" diff --git a/bitrise.yml b/bitrise.yml index 96a6c24807b6..4b9b11f1b8d8 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -2125,13 +2125,13 @@ app: VERSION_NAME: 7.44.0 - opts: is_expand: false - VERSION_NUMBER: 1656 + VERSION_NUMBER: 1658 - opts: is_expand: false FLASK_VERSION_NAME: 7.44.0 - opts: is_expand: false - FLASK_VERSION_NUMBER: 1656 + FLASK_VERSION_NUMBER: 1658 - opts: is_expand: false ANDROID_APK_LINK: '' diff --git a/ios/MetaMask.xcodeproj/project.pbxproj b/ios/MetaMask.xcodeproj/project.pbxproj index 71782d8567f6..237e8095fd7a 100644 --- a/ios/MetaMask.xcodeproj/project.pbxproj +++ b/ios/MetaMask.xcodeproj/project.pbxproj @@ -1437,7 +1437,7 @@ CODE_SIGN_IDENTITY = "Apple Development"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1656; + CURRENT_PROJECT_VERSION = 1658; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = 48XVW22RCG; @@ -1506,7 +1506,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMask.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1656; + CURRENT_PROJECT_VERSION = 1658; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 48XVW22RCG; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 48XVW22RCG; @@ -1571,7 +1571,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMaskDebug.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1656; + CURRENT_PROJECT_VERSION = 1658; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = 48XVW22RCG; @@ -1637,7 +1637,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMask.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1656; + CURRENT_PROJECT_VERSION = 1658; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 48XVW22RCG; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 48XVW22RCG; @@ -1796,7 +1796,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMaskDebug.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1656; + CURRENT_PROJECT_VERSION = 1658; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = 48XVW22RCG; @@ -1865,7 +1865,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMask.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1656; + CURRENT_PROJECT_VERSION = 1658; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 48XVW22RCG; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 48XVW22RCG; From b1bc821498f272f28a7d51e44fed14167e8f161d Mon Sep 17 00:00:00 2001 From: sethkfman <10342624+sethkfman@users.noreply.github.com> Date: Thu, 27 Mar 2025 13:46:58 -0600 Subject: [PATCH 086/473] fix: yml formatting causing error (#14277) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## **Description** This PR adjust a minor formatting issue causing problems on the `bitrise.yml` script. ## **Related issues** Fixes: ## **Manual testing steps** 1. Go to this page... 2. 3. ## **Screenshots/Recordings** <!-- If applicable, add screenshots and/or recordings to visualize the before and after of your change. --> ### **Before** <!-- [screenshots/recordings] --> ### **After** <!-- [screenshots/recordings] --> ## **Pre-merge author checklist** - [ ] I’ve followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile Coding Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [ ] I've completed the PR template to the best of my ability - [ ] I’ve included tests if applicable - [ ] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [ ] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. ## **Pre-merge reviewer checklist** - [ ] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [ ] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots. Co-authored-by: metamaskbot <metamaskbot@users.noreply.github.com> --- bitrise.yml | 86 ++++++++++++++++++++++++++--------------------------- 1 file changed, 43 insertions(+), 43 deletions(-) diff --git a/bitrise.yml b/bitrise.yml index 665d01fdd595..6679a1bf8a0c 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -1411,49 +1411,49 @@ workflows: inputs: - ndk_version: $NDK_VERSION - gradlew_path: $PROJECT_LOCATION/gradlew - - script@1: - inputs: - - content: |- - #!/usr/bin/env bash - node -v - GIT_BRANCH=$BITRISE_GIT_BRANCH METAMASK_BUILD_TYPE='main' METAMASK_ENVIRONMENT='qa' yarn build:android:pre-release:bundle:qa - title: Build Android Pre-Release Bundle - is_always_run: false - - save-gradle-cache@1: {} - - deploy-to-bitrise-io@2.2.3: - is_always_run: false - is_skippable: true - inputs: - - deploy_path: $PROJECT_LOCATION/app/build/outputs/apk/qa/release/$QA_APK_NAME.apk - title: Bitrise Deploy APK - - deploy-to-bitrise-io@2.2.3: - is_always_run: false - is_skippable: true - inputs: - - deploy_path: $PROJECT_LOCATION/app/build/outputs/apk/qa/release/sha512sums.txt - title: Bitrise Deploy Checksum - - deploy-to-bitrise-io@2.2.3: - is_always_run: false - is_skippable: true - inputs: - - deploy_path: $PROJECT_LOCATION/app/build/outputs/mapping/qaRelease/mapping.txt - title: Bitrise ProGuard Map Files - - deploy-to-bitrise-io@2.2.3: - is_always_run: false - is_skippable: true - inputs: - - deploy_path: $PROJECT_LOCATION/app/build/outputs/bundle/qaRelease/app-qa-release.aab - title: Bitrise Deploy AAB - - deploy-to-bitrise-io@2.2.3: - is_always_run: false - is_skippable: true - inputs: - - deploy_path: sourcemaps/android/index.js.map - title: Bitrise Deploy Sourcemaps - meta: - bitrise.io: - stack: linux-docker-android-22.04 - machine_type_id: elite-xl + - script@1: + inputs: + - content: |- + #!/usr/bin/env bash + node -v + GIT_BRANCH=$BITRISE_GIT_BRANCH METAMASK_BUILD_TYPE='main' METAMASK_ENVIRONMENT='qa' yarn build:android:pre-release:bundle:qa + title: Build Android Pre-Release Bundle + is_always_run: false + - save-gradle-cache@1: {} + - deploy-to-bitrise-io@2.2.3: + is_always_run: false + is_skippable: true + inputs: + - deploy_path: $PROJECT_LOCATION/app/build/outputs/apk/qa/release/$QA_APK_NAME.apk + title: Bitrise Deploy APK + - deploy-to-bitrise-io@2.2.3: + is_always_run: false + is_skippable: true + inputs: + - deploy_path: $PROJECT_LOCATION/app/build/outputs/apk/qa/release/sha512sums.txt + title: Bitrise Deploy Checksum + - deploy-to-bitrise-io@2.2.3: + is_always_run: false + is_skippable: true + inputs: + - deploy_path: $PROJECT_LOCATION/app/build/outputs/mapping/qaRelease/mapping.txt + title: Bitrise ProGuard Map Files + - deploy-to-bitrise-io@2.2.3: + is_always_run: false + is_skippable: true + inputs: + - deploy_path: $PROJECT_LOCATION/app/build/outputs/bundle/qaRelease/app-qa-release.aab + title: Bitrise Deploy AAB + - deploy-to-bitrise-io@2.2.3: + is_always_run: false + is_skippable: true + inputs: + - deploy_path: sourcemaps/android/index.js.map + title: Bitrise Deploy Sourcemaps + meta: + bitrise.io: + stack: linux-docker-android-22.04 + machine_type_id: elite-xl build_android_qa_flask: before_run: - code_setup From 5bb230f23eb3f2e6f3b79e0fd774470d65f7a2cc Mon Sep 17 00:00:00 2001 From: metamaskbot <metamaskbot@users.noreply.github.com> Date: Thu, 27 Mar 2025 23:02:02 +0000 Subject: [PATCH 087/473] Bump version number to 1659 --- android/app/build.gradle | 2 +- bitrise.yml | 4 ++-- ios/MetaMask.xcodeproj/project.pbxproj | 12 ++++++------ 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/android/app/build.gradle b/android/app/build.gradle index f060f4ac2a36..bfc7075a5176 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -179,7 +179,7 @@ android { minSdkVersion rootProject.ext.minSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion versionName "7.44.0" - versionCode 1658 + versionCode 1659 testBuildType System.getProperty('testBuildType', 'debug') missingDimensionStrategy 'react-native-camera', 'general' testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" diff --git a/bitrise.yml b/bitrise.yml index 6679a1bf8a0c..74e08df67e71 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -2125,13 +2125,13 @@ app: VERSION_NAME: 7.44.0 - opts: is_expand: false - VERSION_NUMBER: 1658 + VERSION_NUMBER: 1659 - opts: is_expand: false FLASK_VERSION_NAME: 7.44.0 - opts: is_expand: false - FLASK_VERSION_NUMBER: 1658 + FLASK_VERSION_NUMBER: 1659 - opts: is_expand: false ANDROID_APK_LINK: '' diff --git a/ios/MetaMask.xcodeproj/project.pbxproj b/ios/MetaMask.xcodeproj/project.pbxproj index 237e8095fd7a..57cc1b32f734 100644 --- a/ios/MetaMask.xcodeproj/project.pbxproj +++ b/ios/MetaMask.xcodeproj/project.pbxproj @@ -1437,7 +1437,7 @@ CODE_SIGN_IDENTITY = "Apple Development"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1658; + CURRENT_PROJECT_VERSION = 1659; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = 48XVW22RCG; @@ -1506,7 +1506,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMask.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1658; + CURRENT_PROJECT_VERSION = 1659; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 48XVW22RCG; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 48XVW22RCG; @@ -1571,7 +1571,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMaskDebug.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1658; + CURRENT_PROJECT_VERSION = 1659; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = 48XVW22RCG; @@ -1637,7 +1637,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMask.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1658; + CURRENT_PROJECT_VERSION = 1659; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 48XVW22RCG; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 48XVW22RCG; @@ -1796,7 +1796,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMaskDebug.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1658; + CURRENT_PROJECT_VERSION = 1659; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = 48XVW22RCG; @@ -1865,7 +1865,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMask.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1658; + CURRENT_PROJECT_VERSION = 1659; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 48XVW22RCG; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 48XVW22RCG; From ea4a1b71c8b1e367370af79326004cd4ff57e33c Mon Sep 17 00:00:00 2001 From: metamaskbot <metamaskbot@users.noreply.github.com> Date: Thu, 27 Mar 2025 23:27:38 +0000 Subject: [PATCH 088/473] Bump version number to 1660 --- android/app/build.gradle | 2 +- bitrise.yml | 4 ++-- ios/MetaMask.xcodeproj/project.pbxproj | 12 ++++++------ 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/android/app/build.gradle b/android/app/build.gradle index bfc7075a5176..268411542ef5 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -179,7 +179,7 @@ android { minSdkVersion rootProject.ext.minSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion versionName "7.44.0" - versionCode 1659 + versionCode 1660 testBuildType System.getProperty('testBuildType', 'debug') missingDimensionStrategy 'react-native-camera', 'general' testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" diff --git a/bitrise.yml b/bitrise.yml index 74e08df67e71..4eaca02314ca 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -2125,13 +2125,13 @@ app: VERSION_NAME: 7.44.0 - opts: is_expand: false - VERSION_NUMBER: 1659 + VERSION_NUMBER: 1660 - opts: is_expand: false FLASK_VERSION_NAME: 7.44.0 - opts: is_expand: false - FLASK_VERSION_NUMBER: 1659 + FLASK_VERSION_NUMBER: 1660 - opts: is_expand: false ANDROID_APK_LINK: '' diff --git a/ios/MetaMask.xcodeproj/project.pbxproj b/ios/MetaMask.xcodeproj/project.pbxproj index 57cc1b32f734..4bdc8fd66751 100644 --- a/ios/MetaMask.xcodeproj/project.pbxproj +++ b/ios/MetaMask.xcodeproj/project.pbxproj @@ -1437,7 +1437,7 @@ CODE_SIGN_IDENTITY = "Apple Development"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1659; + CURRENT_PROJECT_VERSION = 1660; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = 48XVW22RCG; @@ -1506,7 +1506,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMask.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1659; + CURRENT_PROJECT_VERSION = 1660; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 48XVW22RCG; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 48XVW22RCG; @@ -1571,7 +1571,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMaskDebug.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1659; + CURRENT_PROJECT_VERSION = 1660; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = 48XVW22RCG; @@ -1637,7 +1637,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMask.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1659; + CURRENT_PROJECT_VERSION = 1660; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 48XVW22RCG; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 48XVW22RCG; @@ -1796,7 +1796,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMaskDebug.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1659; + CURRENT_PROJECT_VERSION = 1660; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = 48XVW22RCG; @@ -1865,7 +1865,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMask.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1659; + CURRENT_PROJECT_VERSION = 1660; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 48XVW22RCG; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 48XVW22RCG; From b2f3465b0fbdc0b124036f8642c933e02a47ff02 Mon Sep 17 00:00:00 2001 From: MetaMask Bot <37885440+metamaskbot@users.noreply.github.com> Date: Mon, 31 Mar 2025 15:29:57 -0400 Subject: [PATCH 089/473] chore: chore/7.44.0-Changelog (#14282) This PR updates the change log for 7.44.0 and generates the test plan here [commit.csv](https://github.com/MetaMask/metamask-mobile/blob/chore/7.44.0-Changelog/commits.csv) --------- Co-authored-by: metamaskbot <metamaskbot@users.noreply.github.com> Co-authored-by: sethkfman <10342624+sethkfman@users.noreply.github.com> --- CHANGELOG.md | 76 +++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 75 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9a78e81b0686..612afa79fa4b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,79 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +## [7.44.0] + +### Added + +- feat(ramp): add backpress handler to expanded quotes view ([#14210](https://github.com/MetaMask/metamask-mobile/pull/14210)) +- feat(4213-3): network badge positioning ([#14071](https://github.com/MetaMask/metamask-mobile/pull/14071)) +- feat(4213-1): rounded square network icons ([#14065](https://github.com/MetaMask/metamask-mobile/pull/14065)) +- feat(4213-2) update network icons ([#14069](https://github.com/MetaMask/metamask-mobile/pull/14069)) +- feat(ramp): add non evm balance ([#13948](https://github.com/MetaMask/metamask-mobile/pull/13948)) +- feat: add quote info modal component ([#14263](https://github.com/MetaMask/metamask-mobile/pull/14263)) +- feat: SPL TokenList v2 ([#14126](https://github.com/MetaMask/metamask-mobile/pull/14126)) +- feat: Bridge dest token ([#14135](https://github.com/MetaMask/metamask-mobile/pull/14135)) +- feat: Adding BSC to STX Supported Chains Array (prod) ([#14230](https://github.com/MetaMask/metamask-mobile/pull/14230)) +- feat: add wallet_revokePermissions rpc call ([#14091](https://github.com/MetaMask/metamask-mobile/pull/14091)) +- feat: Add `getPreferences` hook ([#14062](https://github.com/MetaMask/metamask-mobile/pull/14062)) +- feat: Enforce 3-minute idle time for BrowserTabs before unmounting them ([#14175](https://github.com/MetaMask/metamask-mobile/pull/14175)) +- feat: Add Linea to Smart Transaction supported chains ([#14018](https://github.com/MetaMask/metamask-mobile/pull/14018)) +- feat: import srp ([#13768](https://github.com/MetaMask/metamask-mobile/pull/13768)) +- feat: add inline alert (origin mismatch) to SIWE ([#13773](https://github.com/MetaMask/metamask-mobile/pull/13773)) +- feat: Add BSC to Smart Transaction supported chains ([#13964](https://github.com/MetaMask/metamask-mobile/pull/13964)) +- feat: STAKE-902: build lending empty state component ([#14107](https://github.com/MetaMask/metamask-mobile/pull/14107)) +- feat: use new identity hooks ([#14081](https://github.com/MetaMask/metamask-mobile/pull/14081)) +- feat: add bridge slippage modal component using segmented control ([#14070](https://github.com/MetaMask/metamask-mobile/pull/14070)) +- feat: add carousel component ([#13010](https://github.com/MetaMask/metamask-mobile/pull/13010)) +- feat: STAKE-958 - added migration 070 to remove unused staking state ([#14089](https://github.com/MetaMask/metamask-mobile/pull/14089)) +- feat: Implement claim rewards confirmation ([#14049](https://github.com/MetaMask/metamask-mobile/pull/14049)) +- feat: Implement Segment sampling for expected errors ([#13874](https://github.com/MetaMask/metamask-mobile/pull/13874)) +- feat: Rename `transactionMetrics` to `confirmationMetrics` ([#14080](https://github.com/MetaMask/metamask-mobile/pull/14080)) +- feat: Add `TransactionController` metric handlers ([#14020](https://github.com/MetaMask/metamask-mobile/pull/14020)) +- feat: e2e gate ([#13696](https://github.com/MetaMask/metamask-mobile/pull/13696)) +- feat: add segmented control component ([#14066](https://github.com/MetaMask/metamask-mobile/pull/14066)) +- feat: Implement MaxBrowserTabModal at 5 browser tabs ([#14033](https://github.com/MetaMask/metamask-mobile/pull/14033)) +- feat: add button toggle component ([#14064](https://github.com/MetaMask/metamask-mobile/pull/14064)) +- feat: bridge source token selector ([#13915](https://github.com/MetaMask/metamask-mobile/pull/13915)) +- feat: add new identity hooks ([#14045](https://github.com/MetaMask/metamask-mobile/pull/14045)) +- feat: bridge tx submission ([#13577](https://github.com/MetaMask/metamask-mobile/pull/13577)) +- feat: integrate blockaid alert into the Alert System ([#13744](https://github.com/MetaMask/metamask-mobile/pull/13744)) + +### Fixed + +- fix: reduce tests worker for only performance tests ([#14051](https://github.com/MetaMask/metamask-mobile/pull/14051)) +- fix: scroll for the confirmation screen ([#14269](https://github.com/MetaMask/metamask-mobile/pull/14269)) +- fix: STAKE-964: bumped @metamask/earn-controller dependency to resolve pooled-staking geo-block for fresh installs ([#14257](https://github.com/MetaMask/metamask-mobile/pull/14257)) +- fix(snaps): Update snap footer buttons ([#13953](https://github.com/MetaMask/metamask-mobile/pull/13953)) +- fix: default open links turn true with attaching the protocol per intent filter ([#14222](https://github.com/MetaMask/metamask-mobile/pull/14222)) +- fix: waitAndTap on ad carousel banner ([#14198](https://github.com/MetaMask/metamask-mobile/pull/14198)) +- fix: bump `@metamask/keyring-controller` to `^19.2.2` ([#14229](https://github.com/MetaMask/metamask-mobile/pull/14229)) +- fix: return the same track event reference ([#14205](https://github.com/MetaMask/metamask-mobile/pull/14205)) +- fix: Fix mobile redesigned transaction metrics ([#14219](https://github.com/MetaMask/metamask-mobile/pull/14219)) +- fix: Display correct snap name when connecting ([#14204](https://github.com/MetaMask/metamask-mobile/pull/14204)) +- fix: Add staking claim event location ([#14203](https://github.com/MetaMask/metamask-mobile/pull/14203)) +- fix: ramps: change token to tap and confirm ([#14197](https://github.com/MetaMask/metamask-mobile/pull/14197)) +- fix: Fix a number of rendering problems with `AvatarFavicon` ([#14191](https://github.com/MetaMask/metamask-mobile/pull/14191)) +- fix: Disable Snaps APIs when using WalletConnect or SDK ([#14187](https://github.com/MetaMask/metamask-mobile/pull/14187)) +- fix: yarn setup bitrise ([#14174](https://github.com/MetaMask/metamask-mobile/pull/14174)) +- fix: Address final design adjustments for redesigned confirmations ([#14113](https://github.com/MetaMask/metamask-mobile/pull/14113)) +- fix: Add support for swipe navigation on android for staking confirma… ([#14125](https://github.com/MetaMask/metamask-mobile/pull/14125)) +- fix: Snap account actions ([#14013](https://github.com/MetaMask/metamask-mobile/pull/14013)) +- fix: toggle to display the correct balance ([#13916](https://github.com/MetaMask/metamask-mobile/pull/13916)) +- fix: Xcode 16 bitcode upload issue ([#14124](https://github.com/MetaMask/metamask-mobile/pull/14124)) +- fix: change function in `interfaceController.ts` to a memorised function to imporve performance ([#14090](https://github.com/MetaMask/metamask-mobile/pull/14090)) +- fix: Not report invalid URL errors to sentry ([#14115](https://github.com/MetaMask/metamask-mobile/pull/14115)) +- fix: Loading state bug ([#14096](https://github.com/MetaMask/metamask-mobile/pull/14096)) +- fix: android BottomSheet missing padding bottom ([#13993](https://github.com/MetaMask/metamask-mobile/pull/13993)) +- fix: prevent unintentional remote feature flag override ([#14086](https://github.com/MetaMask/metamask-mobile/pull/14086)) +- fix: when cancelling signature by swiping modal out it should not navigate back ([#14085](https://github.com/MetaMask/metamask-mobile/pull/14085)) +- fix: fix cannot read length property ([#14046](https://github.com/MetaMask/metamask-mobile/pull/14046)) +- fix: account name / label overflow on re-designed confirmation pages ([#14044](https://github.com/MetaMask/metamask-mobile/pull/14044)) +- fix: moved xcode 16 as default and applied xcode 15 only to testflight builds ([#14032](https://github.com/MetaMask/metamask-mobile/pull/14032)) +- fix: inherit icon size from text component parent ([#14024](https://github.com/MetaMask/metamask-mobile/pull/14024)) +- fix: animation added for loading state on SnapUILink button ([#13973](https://github.com/MetaMask/metamask-mobile/pull/13973)) +- fix: Revert "chore: upgrade Xcode 16 on bitrise.yml" ([#14012](https://github.com/MetaMask/metamask-mobile/pull/14012)) + ## [7.43.0] ### Added @@ -5173,7 +5246,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#957](https://github.com/MetaMask/metamask-mobile/pull/957): fix timeouts (#957) - [#954](https://github.com/MetaMask/metamask-mobile/pull/954): Bugfix: onboarding navigation (#954) -[Unreleased]: https://github.com/MetaMask/metamask-mobile/compare/v7.43.0...HEAD +[Unreleased]: https://github.com/MetaMask/metamask-mobile/compare/v7.44.0...HEAD +[7.44.0]: https://github.com/MetaMask/metamask-mobile/compare/v7.43.0...v7.44.0 [7.43.0]: https://github.com/MetaMask/metamask-mobile/compare/v7.42.1...v7.43.0 [7.42.1]: https://github.com/MetaMask/metamask-mobile/compare/v7.42.0...v7.42.1 [7.42.0]: https://github.com/MetaMask/metamask-mobile/compare/v7.41.0...v7.42.0 From e4e67f6999e686c09a49ee76420e87326f7db07b Mon Sep 17 00:00:00 2001 From: metamaskbot <metamaskbot@users.noreply.github.com> Date: Mon, 31 Mar 2025 19:31:08 +0000 Subject: [PATCH 090/473] Bump version number to 1663 --- android/app/build.gradle | 2 +- bitrise.yml | 4 ++-- ios/MetaMask.xcodeproj/project.pbxproj | 12 ++++++------ 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/android/app/build.gradle b/android/app/build.gradle index 268411542ef5..b165ab55e79a 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -179,7 +179,7 @@ android { minSdkVersion rootProject.ext.minSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion versionName "7.44.0" - versionCode 1660 + versionCode 1663 testBuildType System.getProperty('testBuildType', 'debug') missingDimensionStrategy 'react-native-camera', 'general' testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" diff --git a/bitrise.yml b/bitrise.yml index 4eaca02314ca..4a2d456207ba 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -2125,13 +2125,13 @@ app: VERSION_NAME: 7.44.0 - opts: is_expand: false - VERSION_NUMBER: 1660 + VERSION_NUMBER: 1663 - opts: is_expand: false FLASK_VERSION_NAME: 7.44.0 - opts: is_expand: false - FLASK_VERSION_NUMBER: 1660 + FLASK_VERSION_NUMBER: 1663 - opts: is_expand: false ANDROID_APK_LINK: '' diff --git a/ios/MetaMask.xcodeproj/project.pbxproj b/ios/MetaMask.xcodeproj/project.pbxproj index 4bdc8fd66751..78d00a1918f4 100644 --- a/ios/MetaMask.xcodeproj/project.pbxproj +++ b/ios/MetaMask.xcodeproj/project.pbxproj @@ -1437,7 +1437,7 @@ CODE_SIGN_IDENTITY = "Apple Development"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1660; + CURRENT_PROJECT_VERSION = 1663; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = 48XVW22RCG; @@ -1506,7 +1506,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMask.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1660; + CURRENT_PROJECT_VERSION = 1663; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 48XVW22RCG; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 48XVW22RCG; @@ -1571,7 +1571,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMaskDebug.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1660; + CURRENT_PROJECT_VERSION = 1663; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = 48XVW22RCG; @@ -1637,7 +1637,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMask.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1660; + CURRENT_PROJECT_VERSION = 1663; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 48XVW22RCG; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 48XVW22RCG; @@ -1796,7 +1796,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMaskDebug.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1660; + CURRENT_PROJECT_VERSION = 1663; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = 48XVW22RCG; @@ -1865,7 +1865,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMask.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1660; + CURRENT_PROJECT_VERSION = 1663; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 48XVW22RCG; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 48XVW22RCG; From 43c72d7025bbee8eb3821332e5ffe4d3b8b597b8 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 2 Apr 2025 13:20:28 -0700 Subject: [PATCH 091/473] chore: cherry-pick #14379 (#14389) This PR cherry-picks #14379 Co-authored-by: Owen Craston <owen.craston@consensys.net> --- app/components/hooks/useAccounts/useAccounts.ts | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/app/components/hooks/useAccounts/useAccounts.ts b/app/components/hooks/useAccounts/useAccounts.ts index ed2680791273..e607ea345711 100644 --- a/app/components/hooks/useAccounts/useAccounts.ts +++ b/app/components/hooks/useAccounts/useAccounts.ts @@ -40,6 +40,7 @@ import { isNonEvmAddress, } from '../../../core/Multichain/utils'; import { getAccountBalances } from './utils'; +import { isEvmAccountType } from '@metamask/keyring-api'; /** * Hook that returns both wallet accounts and ens name information. @@ -175,6 +176,7 @@ const useAccounts = ({ const balanceTicker = getTicker(ticker); const balanceLabel = `${balanceFiat}\n${balanceETH} ${balanceTicker}`; const balanceError = checkBalanceError?.(balanceWeiHex); + const isEvmAccount = isEvmAccountType(internalAccount.type); const isBalanceAvailable = isMultiAccountBalancesEnabled || isSelected; const mappedAccount: Account = { @@ -185,9 +187,11 @@ const useAccounts = ({ isSelected, // TODO - Also fetch assets. Reference AccountList component. // assets - assets: isBalanceAvailable - ? { fiatBalance: balanceLabel } - : undefined, + assets: + // TODO = Render non evm assets. This is a temporary fix. + isBalanceAvailable && isEvmAccount + ? { fiatBalance: balanceLabel } + : undefined, balanceError, }; // Calculate height of the account item. From 59d2e5cc2ade66ea5cdde04dc695a0905348f7d1 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 3 Apr 2025 19:47:54 +0200 Subject: [PATCH 092/473] chore: cherry-pick #cherry-pick-7.44.0-import-srp (#14404) This PR cherry-picks #cherry-pick-7.44.0-import-srp Co-authored-by: Monte Lai <monte.lai@consensys.net> --- .../ImportNewSecretRecoveryPhrase/index.tsx | 18 +++++++++++++----- locales/languages/en.json | 1 + 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/app/components/Views/ImportNewSecretRecoveryPhrase/index.tsx b/app/components/Views/ImportNewSecretRecoveryPhrase/index.tsx index 37a1e959c916..805d41d15747 100644 --- a/app/components/Views/ImportNewSecretRecoveryPhrase/index.tsx +++ b/app/components/Views/ImportNewSecretRecoveryPhrase/index.tsx @@ -316,10 +316,18 @@ const ImportNewSecretRecoveryPhrase = () => { }); navigation.navigate('WalletView'); } catch (e) { - Alert.alert( - strings('import_new_secret_recovery_phrase.error_title'), - strings('import_new_secret_recovery_phrase.error_message'), - ); + if ( + (e as Error)?.message === 'This mnemonic has already been imported.' + ) { + Alert.alert( + strings('import_new_secret_recovery_phrase.error_duplicate_srp'), + ); + } else { + Alert.alert( + strings('import_new_secret_recovery_phrase.error_title'), + strings('import_new_secret_recovery_phrase.error_message'), + ); + } setLoading(false); } }; @@ -415,7 +423,7 @@ const ImportNewSecretRecoveryPhrase = () => { containerStyle={styles.button} type={'confirm'} onPress={onSubmit} - disabled={srpError || !isValidSrp} + disabled={Boolean(srpError) || !isValidSrp} testID={ImportSRPIDs.IMPORT_BUTTON} > {loading ? ( diff --git a/locales/languages/en.json b/locales/languages/en.json index 487b88ef4ce3..93f0ac05d873 100644 --- a/locales/languages/en.json +++ b/locales/languages/en.json @@ -2054,6 +2054,7 @@ "error_multiple_srp_word_error_2": " and ", "error_multiple_srp_word_error_3": " are incorrect or misspelled.", "error_invalid_srp": "Invalid Secret Recovery Phrase", + "error_duplicate_srp": "This Secret Recovery Phrase has already been imported.", "success_1": "Secret Recovery Phrase", "success_2": "imported" From 738e47167f16c979e5996143dbabd1c7b037b6e6 Mon Sep 17 00:00:00 2001 From: metamaskbot <metamaskbot@users.noreply.github.com> Date: Thu, 3 Apr 2025 18:18:01 +0000 Subject: [PATCH 093/473] Bump version number to 1670 --- android/app/build.gradle | 2 +- bitrise.yml | 4 ++-- ios/MetaMask.xcodeproj/project.pbxproj | 12 ++++++------ 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/android/app/build.gradle b/android/app/build.gradle index b165ab55e79a..ef6f7b6e0c93 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -179,7 +179,7 @@ android { minSdkVersion rootProject.ext.minSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion versionName "7.44.0" - versionCode 1663 + versionCode 1670 testBuildType System.getProperty('testBuildType', 'debug') missingDimensionStrategy 'react-native-camera', 'general' testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" diff --git a/bitrise.yml b/bitrise.yml index 4a2d456207ba..666f45db517b 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -2125,13 +2125,13 @@ app: VERSION_NAME: 7.44.0 - opts: is_expand: false - VERSION_NUMBER: 1663 + VERSION_NUMBER: 1670 - opts: is_expand: false FLASK_VERSION_NAME: 7.44.0 - opts: is_expand: false - FLASK_VERSION_NUMBER: 1663 + FLASK_VERSION_NUMBER: 1670 - opts: is_expand: false ANDROID_APK_LINK: '' diff --git a/ios/MetaMask.xcodeproj/project.pbxproj b/ios/MetaMask.xcodeproj/project.pbxproj index 78d00a1918f4..6efcb9315ae5 100644 --- a/ios/MetaMask.xcodeproj/project.pbxproj +++ b/ios/MetaMask.xcodeproj/project.pbxproj @@ -1437,7 +1437,7 @@ CODE_SIGN_IDENTITY = "Apple Development"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1663; + CURRENT_PROJECT_VERSION = 1670; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = 48XVW22RCG; @@ -1506,7 +1506,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMask.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1663; + CURRENT_PROJECT_VERSION = 1670; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 48XVW22RCG; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 48XVW22RCG; @@ -1571,7 +1571,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMaskDebug.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1663; + CURRENT_PROJECT_VERSION = 1670; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = 48XVW22RCG; @@ -1637,7 +1637,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMask.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1663; + CURRENT_PROJECT_VERSION = 1670; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 48XVW22RCG; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 48XVW22RCG; @@ -1796,7 +1796,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMaskDebug.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1663; + CURRENT_PROJECT_VERSION = 1670; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = 48XVW22RCG; @@ -1865,7 +1865,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMask.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1663; + CURRENT_PROJECT_VERSION = 1670; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 48XVW22RCG; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 48XVW22RCG; From 8ce8d99cf3ee4ecc9d282cf803f1231950e32c07 Mon Sep 17 00:00:00 2001 From: metamaskbot <metamaskbot@users.noreply.github.com> Date: Thu, 3 Apr 2025 20:13:25 +0000 Subject: [PATCH 094/473] Bump version number to 1671 --- android/app/build.gradle | 2 +- bitrise.yml | 4 ++-- ios/MetaMask.xcodeproj/project.pbxproj | 12 ++++++------ 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/android/app/build.gradle b/android/app/build.gradle index ef6f7b6e0c93..0fbe2b1c5672 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -179,7 +179,7 @@ android { minSdkVersion rootProject.ext.minSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion versionName "7.44.0" - versionCode 1670 + versionCode 1671 testBuildType System.getProperty('testBuildType', 'debug') missingDimensionStrategy 'react-native-camera', 'general' testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" diff --git a/bitrise.yml b/bitrise.yml index 666f45db517b..a030a9b77aac 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -2125,13 +2125,13 @@ app: VERSION_NAME: 7.44.0 - opts: is_expand: false - VERSION_NUMBER: 1670 + VERSION_NUMBER: 1671 - opts: is_expand: false FLASK_VERSION_NAME: 7.44.0 - opts: is_expand: false - FLASK_VERSION_NUMBER: 1670 + FLASK_VERSION_NUMBER: 1671 - opts: is_expand: false ANDROID_APK_LINK: '' diff --git a/ios/MetaMask.xcodeproj/project.pbxproj b/ios/MetaMask.xcodeproj/project.pbxproj index 6efcb9315ae5..9876af35bde9 100644 --- a/ios/MetaMask.xcodeproj/project.pbxproj +++ b/ios/MetaMask.xcodeproj/project.pbxproj @@ -1437,7 +1437,7 @@ CODE_SIGN_IDENTITY = "Apple Development"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1670; + CURRENT_PROJECT_VERSION = 1671; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = 48XVW22RCG; @@ -1506,7 +1506,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMask.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1670; + CURRENT_PROJECT_VERSION = 1671; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 48XVW22RCG; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 48XVW22RCG; @@ -1571,7 +1571,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMaskDebug.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1670; + CURRENT_PROJECT_VERSION = 1671; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = 48XVW22RCG; @@ -1637,7 +1637,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMask.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1670; + CURRENT_PROJECT_VERSION = 1671; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 48XVW22RCG; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 48XVW22RCG; @@ -1796,7 +1796,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMaskDebug.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1670; + CURRENT_PROJECT_VERSION = 1671; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = 48XVW22RCG; @@ -1865,7 +1865,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMask.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1670; + CURRENT_PROJECT_VERSION = 1671; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 48XVW22RCG; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 48XVW22RCG; From a5574cc4dceaecda02e97ca8f86d1ddefe747440 Mon Sep 17 00:00:00 2001 From: Owen Craston <owen.craston@consensys.net> Date: Thu, 3 Apr 2025 15:39:19 -0700 Subject: [PATCH 095/473] fix: Remove bitcoin from beta release (cherry pick from #14406) (#14418) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit MetaMask is in the process of releasing Solana in version 7.44.0. This build is currently using the beta features set. The problem is that Bitcoin was also included in the `keyring-snaps` feature set but this feature is not ready yet. In order to remove Bitcoin from the latest release, I have created a new code fence feature flag called `bitcoin` (same as extension) and moved the Bitcoin features inside of this code fence. The result is that user will not see any Bitcoin related actions in their wallet. I also removed the multichainSettings since they were defaulted to true anyway and were not used at all. Fixes: https://github.com/MetaMask/metamask-mobile/issues/14360 1. edit your `.js.env` file and change the `METAMASK_BUILD_TYPE` to `beta` 2. source .js.env 3. yarn setup && yarn start:ios 4. create / import a wallet 5. Once you have created the wallet, click on the account selector list 6. click "add account or hardware wallet" 7. you should NOT see Bitcoin or Bitcoin testnet as an option anymore 8. you SHOULD see Solana as an option 9. Pressing Solana creates a valid solana account for you. <!-- If applicable, add screenshots and/or recordings to visualize the before and after of your change. --> <image src="https://github.com/user-attachments/assets/b4395c9f-d594-4543-a4b7-df842201774b" height="600" width="300" /> <image src="https://github.com/user-attachments/assets/bfdfaaf5-d6b5-43a2-962a-c23f62cb85ea" height="600" width="300" /> <image src="https://github.com/user-attachments/assets/4117cda6-968c-4afa-9f75-2319f7e2823e" height="600" width="300" /> This feature is still available on flask. <image src="https://github.com/user-attachments/assets/5f421c40-fa4d-4977-8ee0-8cf11c087167" height="600" width="300" /> - [x] I’ve followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile Coding Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [x] I've completed the PR template to the best of my ability - [x] I’ve included tests if applicable - [x] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [x] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. - [x] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [x] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots. <!-- Please submit this PR as a draft initially. Do not mark it as "Ready for review" until the template has been completely filled out, and PR status checks have passed at least once. --> --- app/actions/multichain/state.ts | 7 -- .../AddAccountActions.test.tsx | 5 - .../AddAccountActions/AddAccountActions.tsx | 104 ++++++++---------- app/lib/snaps/preinstalled-snaps.ts | 8 +- app/reducers/index.ts | 11 -- app/reducers/multichain/index.ts | 13 --- app/selectors/multichain/multichain.test.ts | 24 ---- app/selectors/multichain/multichain.ts | 29 ----- app/store/persistConfig.ts | 8 +- app/util/test/initial-root-state.ts | 6 - metro.transform.js | 2 + 11 files changed, 53 insertions(+), 164 deletions(-) delete mode 100644 app/actions/multichain/state.ts delete mode 100644 app/reducers/multichain/index.ts diff --git a/app/actions/multichain/state.ts b/app/actions/multichain/state.ts deleted file mode 100644 index a2015e89b599..000000000000 --- a/app/actions/multichain/state.ts +++ /dev/null @@ -1,7 +0,0 @@ -///: BEGIN:ONLY_INCLUDE_IF(keyring-snaps) -export interface MultichainSettingsState { - bitcoinSupportEnabled: boolean; - bitcoinTestnetSupportEnabled: boolean; - solanaSupportEnabled: boolean; -} -///: END:ONLY_INCLUDE_IF diff --git a/app/components/Views/AddAccountActions/AddAccountActions.test.tsx b/app/components/Views/AddAccountActions/AddAccountActions.test.tsx index 854c4fc16d21..7f961f4686ab 100644 --- a/app/components/Views/AddAccountActions/AddAccountActions.test.tsx +++ b/app/components/Views/AddAccountActions/AddAccountActions.test.tsx @@ -58,11 +58,6 @@ const mockInitialState = { KeyringController: MOCK_KEYRING_CONTROLLER, }, }, - multichainSettings: { - bitcoinSupportEnabled: true, - bitcoinTestnetSupportEnabled: true, - solanaSupportEnabled: true, - }, }; const mockProps = { diff --git a/app/components/Views/AddAccountActions/AddAccountActions.tsx b/app/components/Views/AddAccountActions/AddAccountActions.tsx index 823843a564aa..4f59223b2f64 100644 --- a/app/components/Views/AddAccountActions/AddAccountActions.tsx +++ b/app/components/Views/AddAccountActions/AddAccountActions.tsx @@ -32,19 +32,16 @@ import Text, { ///: BEGIN:ONLY_INCLUDE_IF(keyring-snaps) import { CaipChainId } from '@metamask/utils'; import { KeyringClient } from '@metamask/keyring-snap-client'; -import { BitcoinWalletSnapSender } from '../../../core/SnapKeyring/BitcoinWalletSnap'; import { SolanaWalletSnapSender } from '../../../core/SnapKeyring/SolanaWalletSnap'; -import { useSelector } from 'react-redux'; +///: END:ONLY_INCLUDE_IF +///: BEGIN:ONLY_INCLUDE_IF(bitcoin) import { selectHasCreatedBtcMainnetAccount, hasCreatedBtcTestnetAccount, } from '../../../selectors/accountsController'; -import { - selectIsBitcoinSupportEnabled, - selectIsBitcoinTestnetSupportEnabled, - selectIsSolanaSupportEnabled, -} from '../../../selectors/multichain'; +import { BitcoinWalletSnapSender } from '../../../core/SnapKeyring/BitcoinWalletSnap'; import { BtcScope, SolScope } from '@metamask/keyring-api'; +import { useSelector } from 'react-redux'; ///: END:ONLY_INCLUDE_IF const AddAccountActions = ({ onBack }: AddAccountActionsProps) => { @@ -100,15 +97,7 @@ const AddAccountActions = ({ onBack }: AddAccountActionsProps) => { } }, [onBack, setIsLoading, trackEvent, createEventBuilder]); - ///: BEGIN:ONLY_INCLUDE_IF(keyring-snaps) - const isBitcoinSupportEnabled = useSelector(selectIsBitcoinSupportEnabled); - - const isBitcoinTestnetSupportEnabled = useSelector( - selectIsBitcoinTestnetSupportEnabled, - ); - - const isSolanaSupportEnabled = useSelector(selectIsSolanaSupportEnabled); - + ///: BEGIN:ONLY_INCLUDE_IF(bitcoin) const isBtcMainnetAccountAlreadyCreated = useSelector( selectHasCreatedBtcMainnetAccount, ); @@ -133,7 +122,8 @@ const AddAccountActions = ({ onBack }: AddAccountActionsProps) => { setIsLoading(false); } }; - + ///: END:ONLY_INCLUDE_IF + ///: BEGIN:ONLY_INCLUDE_IF(keyring-snaps) const createSolanaAccount = async (scope: CaipChainId) => { try { setIsLoading(true); @@ -182,49 +172,43 @@ const AddAccountActions = ({ onBack }: AddAccountActionsProps) => { { ///: BEGIN:ONLY_INCLUDE_IF(keyring-snaps) } - {isSolanaSupportEnabled && ( - <AccountAction - actionTitle={strings('account_actions.add_solana_account')} - iconName={IconName.Add} - onPress={async () => { - await createSolanaAccount(SolScope.Mainnet); - }} - disabled={isLoading} - testID={ - AddAccountBottomSheetSelectorsIDs.ADD_SOLANA_ACCOUNT_BUTTON - } - /> - )} - {isBitcoinSupportEnabled && ( - <AccountAction - actionTitle={strings( - 'account_actions.add_bitcoin_account_mainnet', - )} - iconName={IconName.Add} - onPress={async () => { - await createBitcoinAccount(BtcScope.Mainnet); - }} - disabled={isLoading || isBtcMainnetAccountAlreadyCreated} - testID={ - AddAccountBottomSheetSelectorsIDs.ADD_BITCOIN_ACCOUNT_BUTTON - } - /> - )} - {isBitcoinTestnetSupportEnabled && ( - <AccountAction - actionTitle={strings( - 'account_actions.add_bitcoin_account_testnet', - )} - iconName={IconName.Add} - onPress={async () => { - await createBitcoinAccount(BtcScope.Testnet); - }} - disabled={isLoading || isBtcTestnetAccountAlreadyCreated} - testID={ - AddAccountBottomSheetSelectorsIDs.ADD_BITCOIN_TESTNET_ACCOUNT_BUTTON - } - /> - )} + <AccountAction + actionTitle={strings('account_actions.add_solana_account')} + iconName={IconName.Add} + onPress={async () => { + await createSolanaAccount(SolScope.Mainnet); + }} + disabled={isLoading} + testID={AddAccountBottomSheetSelectorsIDs.ADD_SOLANA_ACCOUNT_BUTTON} + /> + { + ///: END:ONLY_INCLUDE_IF + } + { + ///: BEGIN:ONLY_INCLUDE_IF(bitcoin) + } + <AccountAction + actionTitle={strings('account_actions.add_bitcoin_account_mainnet')} + iconName={IconName.Add} + onPress={async () => { + await createBitcoinAccount(BtcScope.Mainnet); + }} + disabled={isLoading || isBtcMainnetAccountAlreadyCreated} + testID={ + AddAccountBottomSheetSelectorsIDs.ADD_BITCOIN_ACCOUNT_BUTTON + } + /> + <AccountAction + actionTitle={strings('account_actions.add_bitcoin_account_testnet')} + iconName={IconName.Add} + onPress={async () => { + await createBitcoinAccount(BtcScope.Testnet); + }} + disabled={isLoading || isBtcTestnetAccountAlreadyCreated} + testID={ + AddAccountBottomSheetSelectorsIDs.ADD_BITCOIN_TESTNET_ACCOUNT_BUTTON + } + /> { ///: END:ONLY_INCLUDE_IF } diff --git a/app/lib/snaps/preinstalled-snaps.ts b/app/lib/snaps/preinstalled-snaps.ts index 6b81b326ca1c..4ed90ec77c54 100644 --- a/app/lib/snaps/preinstalled-snaps.ts +++ b/app/lib/snaps/preinstalled-snaps.ts @@ -1,16 +1,20 @@ import type { PreinstalledSnap } from '@metamask/snaps-controllers'; import MessageSigningSnap from '@metamask/message-signing-snap/dist/preinstalled-snap.json'; ///: BEGIN:ONLY_INCLUDE_IF(keyring-snaps) -import BitcoinWalletSnap from '@metamask/bitcoin-wallet-snap/dist/preinstalled-snap.json'; import SolanaWalletSnap from '@metamask/solana-wallet-snap/dist/preinstalled-snap.json'; ///: END:ONLY_INCLUDE_IF +///: BEGIN:ONLY_INCLUDE_IF(bitcoin) +import BitcoinWalletSnap from '@metamask/bitcoin-wallet-snap/dist/preinstalled-snap.json'; +///: END:ONLY_INCLUDE_IF const PREINSTALLED_SNAPS: readonly PreinstalledSnap[] = Object.freeze([ MessageSigningSnap as PreinstalledSnap, ///: BEGIN:ONLY_INCLUDE_IF(keyring-snaps) - BitcoinWalletSnap as unknown as PreinstalledSnap, SolanaWalletSnap as unknown as PreinstalledSnap, ///: END:ONLY_INCLUDE_IF + ///: BEGIN:ONLY_INCLUDE_IF(bitcoin) + BitcoinWalletSnap as unknown as PreinstalledSnap, + ///: END:ONLY_INCLUDE_IF ]); export default PREINSTALLED_SNAPS; diff --git a/app/reducers/index.ts b/app/reducers/index.ts index 042a1fc4bc8b..472f87c43c94 100644 --- a/app/reducers/index.ts +++ b/app/reducers/index.ts @@ -32,11 +32,6 @@ import notificationsAccountsProvider from '../core/redux/slices/notifications'; import bannersReducer, { BannersState } from './banners'; import bridgeReducer from '../core/redux/slices/bridge'; -///: BEGIN:ONLY_INCLUDE_IF(keyring-snaps) -import { MultichainSettingsState } from '../actions/multichain/state'; -import multichainReducer from './multichain'; -///: END:ONLY_INCLUDE_IF - /** * Infer state from a reducer * @@ -126,9 +121,6 @@ export interface RootState { notifications: StateFromReducer<typeof notificationsAccountsProvider>; bridge: StateFromReducer<typeof bridgeReducer>; banners: BannersState; - ///: BEGIN:ONLY_INCLUDE_IF(keyring-snaps) - multichainSettings: MultichainSettingsState; - ///: END:ONLY_INCLUDE_IF } // TODO: Fix the Action type. It's set to `any` now because some of the @@ -169,9 +161,6 @@ const rootReducer = combineReducers<RootState, any>({ bridge: bridgeReducer, banners: bannersReducer, confirmationMetrics: confirmationMetricsReducer, - ///: BEGIN:ONLY_INCLUDE_IF(keyring-snaps) - multichainSettings: multichainReducer, - ///: END:ONLY_INCLUDE_IF }); export default rootReducer; diff --git a/app/reducers/multichain/index.ts b/app/reducers/multichain/index.ts deleted file mode 100644 index 64027883d97b..000000000000 --- a/app/reducers/multichain/index.ts +++ /dev/null @@ -1,13 +0,0 @@ -///: BEGIN:ONLY_INCLUDE_IF(keyring-snaps) -import { MultichainSettingsState } from '../../actions/multichain/state'; - -export const initialState: MultichainSettingsState = { - bitcoinSupportEnabled: true, - bitcoinTestnetSupportEnabled: true, - solanaSupportEnabled: true, -}; - -const multichainReducer = (state = initialState) => state; - -export default multichainReducer; -///: END:ONLY_INCLUDE_IF diff --git a/app/selectors/multichain/multichain.test.ts b/app/selectors/multichain/multichain.test.ts index 3dfaed3410b0..2b17ebc5041f 100644 --- a/app/selectors/multichain/multichain.test.ts +++ b/app/selectors/multichain/multichain.test.ts @@ -1,8 +1,5 @@ import { RootState } from '../../reducers'; import { - selectIsBitcoinSupportEnabled, - selectIsBitcoinTestnetSupportEnabled, - selectIsSolanaSupportEnabled, selectMultichainDefaultToken, selectMultichainIsMainnet, selectMultichainSelectedAccountCachedBalance, @@ -134,11 +131,6 @@ function getEvmState( }, }, }, - multichainSettings: { - bitcoinSupportEnabled: true, - bitcoinTestnetSupportEnabled: false, - solanaSupportEnabled: true, - }, settings: { showFiatOnTestnets, }, @@ -255,22 +247,6 @@ describe('MultichainNonEvm Selectors', () => { beforeEach(() => { jest.resetAllMocks(); }); - describe('Multichain Support Flags', () => { - it('returns bitcoin support enabled state', () => { - const mockState = getEvmState(); - expect(selectIsBitcoinSupportEnabled(mockState)).toBe(true); - }); - - it('returns bitcoin testnet support enabled state', () => { - const mockState = getEvmState(); - expect(selectIsBitcoinTestnetSupportEnabled(mockState)).toBe(false); - }); - it('returns Solana support enabled state', () => { - const mockState = getEvmState(); - expect(selectIsSolanaSupportEnabled(mockState)).toBe(true); - }); - }); - describe('selectMultichainIsEvm', () => { it('returns true if selected account is EVM compatible', () => { const state = getEvmState(); diff --git a/app/selectors/multichain/multichain.ts b/app/selectors/multichain/multichain.ts index a536c7c0cd51..4a60f0583cd8 100644 --- a/app/selectors/multichain/multichain.ts +++ b/app/selectors/multichain/multichain.ts @@ -52,35 +52,6 @@ export const MULTICHAIN_NETWORK_TO_ASSET_TYPES: Record< [BtcScope.Mainnet]: [MultichainNativeAssets.Bitcoin], [BtcScope.Testnet]: [MultichainNativeAssets.BitcoinTestnet], }; -/** - * Get the state of the `bitcoinSupportEnabled` flag. - * - * @param {*} state - * @returns The state of the `bitcoinSupportEnabled` flag. - */ -export function selectIsBitcoinSupportEnabled(state: RootState) { - return state.multichainSettings.bitcoinSupportEnabled; -} - -/** - * Get the state of the `bitcoinTestnetSupportEnabled` flag. - * - * @param {*} state - * @returns The state of the `bitcoinTestnetSupportEnabled` flag. - */ -export function selectIsBitcoinTestnetSupportEnabled(state: RootState) { - return state.multichainSettings.bitcoinTestnetSupportEnabled; -} - -/** - * Get the state of the `solanaSupportEnabled` flag. - * - * @param {*} state - * @returns The state of the `solanaSupportEnabled` flag. - */ -export function selectIsSolanaSupportEnabled(state: RootState) { - return state.multichainSettings.solanaSupportEnabled; -} export const selectMultichainDefaultToken = createDeepEqualSelector( selectIsEvmNetworkSelected, diff --git a/app/store/persistConfig.ts b/app/store/persistConfig.ts index 174a5ede8d89..e7efe881762b 100644 --- a/app/store/persistConfig.ts +++ b/app/store/persistConfig.ts @@ -118,13 +118,7 @@ const persistUserTransform = createTransform( const persistConfig = { key: 'root', version, - blacklist: [ - 'onboarding', - 'rpcEvents', - 'accounts', - 'multichainSettings', - 'confirmationMetrics', - ], + blacklist: ['onboarding', 'rpcEvents', 'accounts', 'confirmationMetrics'], storage: MigratedStorage, transforms: [persistTransform, persistUserTransform], stateReconciler: autoMergeLevel2, // see "Merge Process" section for details. diff --git a/app/util/test/initial-root-state.ts b/app/util/test/initial-root-state.ts index 5773ba387a55..9daccfb24762 100644 --- a/app/util/test/initial-root-state.ts +++ b/app/util/test/initial-root-state.ts @@ -9,9 +9,6 @@ import { initialState as initialBridgeState } from '../../core/redux/slices/brid import initialBackgroundState from './initial-background-state.json'; import { userInitialState } from '../../reducers/user'; import { initialNavigationState } from '../../reducers/navigation'; -///: BEGIN:ONLY_INCLUDE_IF(keyring-snaps) -import { initialState as initialMultichainSettingsState } from '../../reducers/multichain'; -///: END:ONLY_INCLUDE_IF // A cast is needed here because we use enums in some controllers, and TypeScript doesn't consider // the string value of an enum as satisfying an enum type. @@ -53,9 +50,6 @@ const initialRootState: RootState = { originThrottling, notifications: {}, bridge: initialBridgeState, - ///: BEGIN:ONLY_INCLUDE_IF(keyring-snaps) - multichainSettings: initialMultichainSettingsState, - ///: END:ONLY_INCLUDE_IF banners: { dismissedBanners: [], }, diff --git a/metro.transform.js b/metro.transform.js index d3abf9908338..90ee2c3caf43 100644 --- a/metro.transform.js +++ b/metro.transform.js @@ -19,6 +19,7 @@ const availableFeatures = new Set([ 'beta', 'keyring-snaps', 'multi-srp', + 'bitcoin', ]); const mainFeatureSet = new Set(['preinstalled-snaps']); @@ -29,6 +30,7 @@ const flaskFeatureSet = new Set([ 'external-snaps', 'keyring-snaps', 'multi-srp', + 'bitcoin', ]); /** From a9881dc56dc8cb33a6c4e4a42dd16c7dbbe2d9f3 Mon Sep 17 00:00:00 2001 From: metamaskbot <metamaskbot@users.noreply.github.com> Date: Thu, 3 Apr 2025 22:43:58 +0000 Subject: [PATCH 096/473] Bump version number to 1672 --- android/app/build.gradle | 2 +- bitrise.yml | 4 ++-- ios/MetaMask.xcodeproj/project.pbxproj | 12 ++++++------ 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/android/app/build.gradle b/android/app/build.gradle index 0fbe2b1c5672..b9f8f5847a32 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -179,7 +179,7 @@ android { minSdkVersion rootProject.ext.minSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion versionName "7.44.0" - versionCode 1671 + versionCode 1672 testBuildType System.getProperty('testBuildType', 'debug') missingDimensionStrategy 'react-native-camera', 'general' testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" diff --git a/bitrise.yml b/bitrise.yml index a030a9b77aac..f5850b893572 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -2125,13 +2125,13 @@ app: VERSION_NAME: 7.44.0 - opts: is_expand: false - VERSION_NUMBER: 1671 + VERSION_NUMBER: 1672 - opts: is_expand: false FLASK_VERSION_NAME: 7.44.0 - opts: is_expand: false - FLASK_VERSION_NUMBER: 1671 + FLASK_VERSION_NUMBER: 1672 - opts: is_expand: false ANDROID_APK_LINK: '' diff --git a/ios/MetaMask.xcodeproj/project.pbxproj b/ios/MetaMask.xcodeproj/project.pbxproj index 9876af35bde9..ad0387b1f761 100644 --- a/ios/MetaMask.xcodeproj/project.pbxproj +++ b/ios/MetaMask.xcodeproj/project.pbxproj @@ -1437,7 +1437,7 @@ CODE_SIGN_IDENTITY = "Apple Development"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1671; + CURRENT_PROJECT_VERSION = 1672; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = 48XVW22RCG; @@ -1506,7 +1506,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMask.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1671; + CURRENT_PROJECT_VERSION = 1672; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 48XVW22RCG; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 48XVW22RCG; @@ -1571,7 +1571,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMaskDebug.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1671; + CURRENT_PROJECT_VERSION = 1672; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = 48XVW22RCG; @@ -1637,7 +1637,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMask.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1671; + CURRENT_PROJECT_VERSION = 1672; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 48XVW22RCG; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 48XVW22RCG; @@ -1796,7 +1796,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMaskDebug.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1671; + CURRENT_PROJECT_VERSION = 1672; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = 48XVW22RCG; @@ -1865,7 +1865,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMask.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1671; + CURRENT_PROJECT_VERSION = 1672; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 48XVW22RCG; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 48XVW22RCG; From 890a439b01c8ddb7e3b8a01fb49ad8897a117ba6 Mon Sep 17 00:00:00 2001 From: Nico MASSART <NicolasMassart@users.noreply.github.com> Date: Fri, 4 Apr 2025 07:49:51 +0200 Subject: [PATCH 097/473] chore: cherry pick fix: cp-7.44.0 Add new feature flag for staking confirmations (#14401) (#14409) This PR cherry-picks fix: cp-7.44.0 Add new feature flag for staking confirmations (#14401) Co-authored-by: OGPoyraz <omergoktugpoyraz@gmail.com> --- .../Stake/Views/StakeInputView/StakeInputView.test.tsx | 4 ++-- .../UI/Stake/Views/StakeInputView/StakeInputView.tsx | 2 +- .../Views/UnstakeInputView/UnstakeInputView.test.tsx | 10 ++++++---- .../Stake/Views/UnstakeInputView/UnstakeInputView.tsx | 4 ++-- .../components/GasImpactModal/GasImpactModal.test.tsx | 4 ++-- .../UI/Stake/components/GasImpactModal/index.tsx | 2 +- .../StakingBanners/ClaimBanner/ClaimBanner.tsx | 4 ++-- .../hooks/useConfirmationRedesignEnabled.test.ts | 2 +- .../hooks/useConfirmationRedesignEnabled.ts | 2 +- app/selectors/featureFlagController/index.ts | 8 ++++---- app/util/test/confirm-data-helpers.ts | 2 +- 11 files changed, 23 insertions(+), 21 deletions(-) diff --git a/app/components/UI/Stake/Views/StakeInputView/StakeInputView.test.tsx b/app/components/UI/Stake/Views/StakeInputView/StakeInputView.test.tsx index 0548c93e9992..04daf2eced00 100644 --- a/app/components/UI/Stake/Views/StakeInputView/StakeInputView.test.tsx +++ b/app/components/UI/Stake/Views/StakeInputView/StakeInputView.test.tsx @@ -226,7 +226,7 @@ describe('StakeInputView', () => { selectConfirmationRedesignFlagsMock.mockImplementation( () => ({ - staking_transactions: false, + staking_confirmations: false, } as ConfirmationRedesignRemoteFlags), ); usePoolStakedDepositMock.mockReturnValue({ @@ -363,7 +363,7 @@ describe('StakeInputView', () => { it('redesigned stake deposit confirmation view', async () => { const attemptDepositTransactionMock = jest.fn().mockResolvedValue({}); selectConfirmationRedesignFlagsMock.mockReturnValue({ - staking_transactions: true, + staking_confirmations: true, } as ConfirmationRedesignRemoteFlags); usePoolStakedDepositMock.mockReturnValue({ diff --git a/app/components/UI/Stake/Views/StakeInputView/StakeInputView.tsx b/app/components/UI/Stake/Views/StakeInputView/StakeInputView.tsx index 2b27143bc517..a2a1463e59c9 100644 --- a/app/components/UI/Stake/Views/StakeInputView/StakeInputView.tsx +++ b/app/components/UI/Stake/Views/StakeInputView/StakeInputView.tsx @@ -42,7 +42,7 @@ const StakeInputView = ({ route }: StakeInputViewProps) => { selectConfirmationRedesignFlags, ); const isStakingDepositRedesignedEnabled = - confirmationRedesignFlags?.staking_transactions; + confirmationRedesignFlags?.staking_confirmations; const activeAccount = useSelector(selectSelectedInternalAccount); const { diff --git a/app/components/UI/Stake/Views/UnstakeInputView/UnstakeInputView.test.tsx b/app/components/UI/Stake/Views/UnstakeInputView/UnstakeInputView.test.tsx index 52d6764ae895..6aef55bbd645 100644 --- a/app/components/UI/Stake/Views/UnstakeInputView/UnstakeInputView.test.tsx +++ b/app/components/UI/Stake/Views/UnstakeInputView/UnstakeInputView.test.tsx @@ -111,7 +111,7 @@ jest.mock('../../hooks/usePoolStakedUnstake', () => ({ jest.mock('../../../../../selectors/featureFlagController', () => ({ selectConfirmationRedesignFlags: jest.fn(() => ({ - staking_transactions: false, + staking_confirmations: false, })), })); @@ -175,15 +175,17 @@ describe('UnstakeInputView', () => { }); }); - describe('when staking_transactions feature flag is enabled', () => { + describe('when staking_confirmations feature flag is enabled', () => { let originalMock: jest.Mock; let mockAttemptUnstakeTransaction: jest.Mock; beforeEach(() => { originalMock = jest.requireMock('../../../../../selectors/featureFlagController').selectConfirmationRedesignFlags as jest.Mock; - jest.requireMock('../../../../../selectors/featureFlagController').selectConfirmationRedesignFlags = jest.fn(() => ({ - staking_transactions: true, + jest.requireMock( + '../../../../../selectors/featureFlagController', + ).selectConfirmationRedesignFlags = jest.fn(() => ({ + staking_confirmations: true, })); mockAttemptUnstakeTransaction = jest.fn().mockResolvedValue(undefined); diff --git a/app/components/UI/Stake/Views/UnstakeInputView/UnstakeInputView.tsx b/app/components/UI/Stake/Views/UnstakeInputView/UnstakeInputView.tsx index 7a5a7ee598cf..5b828b0e9f11 100644 --- a/app/components/UI/Stake/Views/UnstakeInputView/UnstakeInputView.tsx +++ b/app/components/UI/Stake/Views/UnstakeInputView/UnstakeInputView.tsx @@ -95,7 +95,7 @@ const UnstakeInputView = () => { const handleUnstakePress = useCallback(async () => { const isStakingDepositRedesignedEnabled = - confirmationRedesignFlags?.staking_transactions; + confirmationRedesignFlags?.staking_confirmations; const unstakeButtonClickEventProperties = { selected_provider: EVENT_PROVIDERS.CONSENSYS, @@ -160,7 +160,7 @@ const UnstakeInputView = () => { trackEvent, attemptUnstakeTransaction, activeAccount?.address, - confirmationRedesignFlags?.staking_transactions, + confirmationRedesignFlags?.staking_confirmations, ]); return ( diff --git a/app/components/UI/Stake/components/GasImpactModal/GasImpactModal.test.tsx b/app/components/UI/Stake/components/GasImpactModal/GasImpactModal.test.tsx index a0b180a8e60c..ecbffd1733d6 100644 --- a/app/components/UI/Stake/components/GasImpactModal/GasImpactModal.test.tsx +++ b/app/components/UI/Stake/components/GasImpactModal/GasImpactModal.test.tsx @@ -100,7 +100,7 @@ describe('GasImpactModal', () => { ); selectConfirmationRedesignFlagsMock.mockReturnValue({ - staking_transactions: false, + staking_confirmations: false, } as ConfirmationRedesignRemoteFlags); useNavigationMock.mockReturnValue({ @@ -149,7 +149,7 @@ describe('GasImpactModal', () => { it('redesigned stake deposit confirmation view', async () => { const attemptDepositTransactionMock = jest.fn().mockResolvedValue({}); selectConfirmationRedesignFlagsMock.mockReturnValue({ - staking_transactions: true, + staking_confirmations: true, } as ConfirmationRedesignRemoteFlags); usePoolStakedDepositMock.mockReturnValue({ diff --git a/app/components/UI/Stake/components/GasImpactModal/index.tsx b/app/components/UI/Stake/components/GasImpactModal/index.tsx index 89b1e2428f00..2d20f816b357 100644 --- a/app/components/UI/Stake/components/GasImpactModal/index.tsx +++ b/app/components/UI/Stake/components/GasImpactModal/index.tsx @@ -37,7 +37,7 @@ const GasImpactModal = ({ route }: GasImpactModalProps) => { selectConfirmationRedesignFlags, ); const isStakingDepositRedesignedEnabled = - confirmationRedesignFlags?.staking_transactions; + confirmationRedesignFlags?.staking_confirmations; const { attemptDepositTransaction } = usePoolStakedDeposit(); const activeAccount = useSelector(selectSelectedInternalAccount); const { navigate } = useNavigation(); diff --git a/app/components/UI/Stake/components/StakingBalance/StakingBanners/ClaimBanner/ClaimBanner.tsx b/app/components/UI/Stake/components/StakingBalance/StakingBanners/ClaimBanner/ClaimBanner.tsx index 9c1636f90cf1..a7c1a0baabf2 100644 --- a/app/components/UI/Stake/components/StakingBalance/StakingBanners/ClaimBanner/ClaimBanner.tsx +++ b/app/components/UI/Stake/components/StakingBalance/StakingBanners/ClaimBanner/ClaimBanner.tsx @@ -58,7 +58,7 @@ const ClaimBanner = ({ claimableAmount, style }: StakeBannerProps) => { selectConfirmationRedesignFlags, ); const isStakingDepositRedesignedEnabled = - confirmationRedesignFlags?.staking_transactions; + confirmationRedesignFlags?.staking_confirmations; const navigation = useNavigation(); useFocusEffect( @@ -176,7 +176,7 @@ const ClaimBanner = ({ claimableAmount, style }: StakeBannerProps) => { [claimableAmount], ); - const isLoadingOnClaim = shouldAttemptClaim || isSubmittingClaimTransaction + const isLoadingOnClaim = shouldAttemptClaim || isSubmittingClaimTransaction; return ( <Banner diff --git a/app/components/Views/confirmations/hooks/useConfirmationRedesignEnabled.test.ts b/app/components/Views/confirmations/hooks/useConfirmationRedesignEnabled.test.ts index a65504d27558..39c07038ab5a 100644 --- a/app/components/Views/confirmations/hooks/useConfirmationRedesignEnabled.test.ts +++ b/app/components/Views/confirmations/hooks/useConfirmationRedesignEnabled.test.ts @@ -108,7 +108,7 @@ describe('useConfirmationRedesignEnabled', () => { it('returns false when remote flag is disabled', async () => { const withDisabledFlag = cloneDeep(stakingDepositConfirmationState); - withDisabledFlag.engine.backgroundState.RemoteFeatureFlagController.remoteFeatureFlags.confirmation_redesign.staking_transactions = + withDisabledFlag.engine.backgroundState.RemoteFeatureFlagController.remoteFeatureFlags.confirmation_redesign.staking_confirmations = false; const { result } = renderHookWithProvider( useConfirmationRedesignEnabled, diff --git a/app/components/Views/confirmations/hooks/useConfirmationRedesignEnabled.ts b/app/components/Views/confirmations/hooks/useConfirmationRedesignEnabled.ts index 2898715626fb..fb0392bcd7d0 100644 --- a/app/components/Views/confirmations/hooks/useConfirmationRedesignEnabled.ts +++ b/app/components/Views/confirmations/hooks/useConfirmationRedesignEnabled.ts @@ -70,7 +70,7 @@ function isRedesignedTransaction({ } if (isStakingConfirmation(transactionMetadata?.type as string)) { - return confirmationRedesignFlags?.staking_transactions; + return confirmationRedesignFlags?.staking_confirmations; } return false; diff --git a/app/selectors/featureFlagController/index.ts b/app/selectors/featureFlagController/index.ts index 88af37109f9e..99fbc650a075 100644 --- a/app/selectors/featureFlagController/index.ts +++ b/app/selectors/featureFlagController/index.ts @@ -4,7 +4,7 @@ import { isRemoteFeatureFlagOverrideActivated } from '../../core/Engine/controll export interface ConfirmationRedesignRemoteFlags { signatures: boolean; - staking_transactions: boolean; + staking_confirmations: boolean; } function getFeatureFlagValue( @@ -41,9 +41,9 @@ export const selectConfirmationRedesignFlags = createSelector( (remoteFeatureFlags?.confirmation_redesign as unknown as ConfirmationRedesignRemoteFlags) ?? {}; - const isStakingTransactionsEnabled = getFeatureFlagValue( + const isStakingConfirmationsEnabled = getFeatureFlagValue( process.env.FEATURE_FLAG_REDESIGNED_STAKING_TRANSACTIONS, - confirmationRedesignFlags.staking_transactions, + confirmationRedesignFlags.staking_confirmations, ); const isSignaturesEnabled = getFeatureFlagValue( @@ -53,7 +53,7 @@ export const selectConfirmationRedesignFlags = createSelector( return { ...confirmationRedesignFlags, - staking_transactions: isStakingTransactionsEnabled, + staking_confirmations: isStakingConfirmationsEnabled, signatures: isSignaturesEnabled, }; }, diff --git a/app/util/test/confirm-data-helpers.ts b/app/util/test/confirm-data-helpers.ts index 9a9044130dcc..6533bc8ab720 100644 --- a/app/util/test/confirm-data-helpers.ts +++ b/app/util/test/confirm-data-helpers.ts @@ -20,7 +20,7 @@ export const confirmationRedesignRemoteFlagsState = { remoteFeatureFlags: { confirmation_redesign: { signatures: true, - staking_transactions: true, + staking_confirmations: true, }, }, }; From 179bea3250d84f77a82b03dac669668b259db90d Mon Sep 17 00:00:00 2001 From: metamaskbot <metamaskbot@users.noreply.github.com> Date: Fri, 4 Apr 2025 06:04:03 +0000 Subject: [PATCH 098/473] Bump version number to 1673 --- android/app/build.gradle | 2 +- bitrise.yml | 4 ++-- ios/MetaMask.xcodeproj/project.pbxproj | 12 ++++++------ 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/android/app/build.gradle b/android/app/build.gradle index b9f8f5847a32..237090dd3786 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -179,7 +179,7 @@ android { minSdkVersion rootProject.ext.minSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion versionName "7.44.0" - versionCode 1672 + versionCode 1673 testBuildType System.getProperty('testBuildType', 'debug') missingDimensionStrategy 'react-native-camera', 'general' testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" diff --git a/bitrise.yml b/bitrise.yml index f5850b893572..fd57eb453fec 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -2125,13 +2125,13 @@ app: VERSION_NAME: 7.44.0 - opts: is_expand: false - VERSION_NUMBER: 1672 + VERSION_NUMBER: 1673 - opts: is_expand: false FLASK_VERSION_NAME: 7.44.0 - opts: is_expand: false - FLASK_VERSION_NUMBER: 1672 + FLASK_VERSION_NUMBER: 1673 - opts: is_expand: false ANDROID_APK_LINK: '' diff --git a/ios/MetaMask.xcodeproj/project.pbxproj b/ios/MetaMask.xcodeproj/project.pbxproj index ad0387b1f761..0894c726d1b3 100644 --- a/ios/MetaMask.xcodeproj/project.pbxproj +++ b/ios/MetaMask.xcodeproj/project.pbxproj @@ -1437,7 +1437,7 @@ CODE_SIGN_IDENTITY = "Apple Development"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1672; + CURRENT_PROJECT_VERSION = 1673; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = 48XVW22RCG; @@ -1506,7 +1506,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMask.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1672; + CURRENT_PROJECT_VERSION = 1673; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 48XVW22RCG; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 48XVW22RCG; @@ -1571,7 +1571,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMaskDebug.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1672; + CURRENT_PROJECT_VERSION = 1673; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = 48XVW22RCG; @@ -1637,7 +1637,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMask.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1672; + CURRENT_PROJECT_VERSION = 1673; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 48XVW22RCG; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 48XVW22RCG; @@ -1796,7 +1796,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMaskDebug.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1672; + CURRENT_PROJECT_VERSION = 1673; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = 48XVW22RCG; @@ -1865,7 +1865,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMask.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1672; + CURRENT_PROJECT_VERSION = 1673; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 48XVW22RCG; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 48XVW22RCG; From fff0f52bd71afe2364007dccff061cc5e6409958 Mon Sep 17 00:00:00 2001 From: metamaskbot <metamaskbot@users.noreply.github.com> Date: Fri, 4 Apr 2025 21:45:20 +0000 Subject: [PATCH 099/473] Bump version number to 1674 --- android/app/build.gradle | 2 +- bitrise.yml | 4 ++-- ios/MetaMask.xcodeproj/project.pbxproj | 12 ++++++------ 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/android/app/build.gradle b/android/app/build.gradle index 237090dd3786..80d9b94e7921 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -179,7 +179,7 @@ android { minSdkVersion rootProject.ext.minSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion versionName "7.44.0" - versionCode 1673 + versionCode 1674 testBuildType System.getProperty('testBuildType', 'debug') missingDimensionStrategy 'react-native-camera', 'general' testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" diff --git a/bitrise.yml b/bitrise.yml index fd57eb453fec..c2bd19a879b9 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -2125,13 +2125,13 @@ app: VERSION_NAME: 7.44.0 - opts: is_expand: false - VERSION_NUMBER: 1673 + VERSION_NUMBER: 1674 - opts: is_expand: false FLASK_VERSION_NAME: 7.44.0 - opts: is_expand: false - FLASK_VERSION_NUMBER: 1673 + FLASK_VERSION_NUMBER: 1674 - opts: is_expand: false ANDROID_APK_LINK: '' diff --git a/ios/MetaMask.xcodeproj/project.pbxproj b/ios/MetaMask.xcodeproj/project.pbxproj index 0894c726d1b3..7cf546e300f5 100644 --- a/ios/MetaMask.xcodeproj/project.pbxproj +++ b/ios/MetaMask.xcodeproj/project.pbxproj @@ -1437,7 +1437,7 @@ CODE_SIGN_IDENTITY = "Apple Development"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1673; + CURRENT_PROJECT_VERSION = 1674; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = 48XVW22RCG; @@ -1506,7 +1506,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMask.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1673; + CURRENT_PROJECT_VERSION = 1674; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 48XVW22RCG; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 48XVW22RCG; @@ -1571,7 +1571,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMaskDebug.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1673; + CURRENT_PROJECT_VERSION = 1674; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = 48XVW22RCG; @@ -1637,7 +1637,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMask.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1673; + CURRENT_PROJECT_VERSION = 1674; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 48XVW22RCG; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 48XVW22RCG; @@ -1796,7 +1796,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMaskDebug.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1673; + CURRENT_PROJECT_VERSION = 1674; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = 48XVW22RCG; @@ -1865,7 +1865,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMask.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1673; + CURRENT_PROJECT_VERSION = 1674; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 48XVW22RCG; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 48XVW22RCG; From 794475cd6b4eb8d0734e0b3fcf07cadfb09ba026 Mon Sep 17 00:00:00 2001 From: Curtis David <Curtis.David7@gmail.com> Date: Fri, 4 Apr 2025 18:10:39 -0400 Subject: [PATCH 100/473] fix: cp fix(14255): invalid url on account list (#14420) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## **Description** Issue: The network controller may return data that is missing or malformed Solution: Add a guard clause when building the block explorer URL. When `undefined` is thrown, The "View on Etherscan" option will not be shown in the edit account bottom sheet Also fixed an issue where the fixture builder was return malformed network configurations object which would crash on tests ## **Related issues** Fixes: #[14255](https://github.com/MetaMask/metamask-mobile/issues/14255) ## **Manual testing steps** ### Normal Flow 1. Goto wallet home screen 2. Switch to any network 3. Click on the account switch button up top 4. Click on the kebab icon next to an account 5. The bottom sheet should appear as normal 6. If the network controller returns any malformed object that relates to building a block explorer url, the "View on Etherscan" should not be shown ### E2E Flow #### To test the guard clause 1. Comment out the guard clause ```typescript if (!explorer) { return undefined; } ``` 2. Undo all the changes from `e2e/fixtures/fixture-builder.js` in this PR 3. Run `yarn test:e2e:ios:debug:build` this will give you a build with a malformed network which is Localhost in this case 4. Run `yarn test:e2e:ios:debug:run e2e/specs/accounts/change-account-name.spec.js` and observe the invalid url error 5. Comment back the guard clause and re-run the e2e test and it should pass without the changes from `e2e/fixtures/fixture-builder.js` #### To test the fixture fix 1. Comment out the guard clause ```typescript if (!explorer) { return undefined; } ``` 2. Run `yarn test:e2e:ios:debug:run e2e/specs/accounts/change-account-name.spec.js` and it will pass ## **Screenshots/Recordings** | Before | After | |:---:|:---:| |![before](https://github.com/user-attachments/assets/d6e939bc-c439-432e-8bb0-c5abd5335ac0)|![after](https://github.com/user-attachments/assets/a7aa3a6f-2eca-4c5a-a004-2cb72121ceeb)| ### **Before** NA ### **After** NA ## **Pre-merge author checklist** - [x] I’ve followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile Coding Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [x] I've completed the PR template to the best of my ability - [x] I’ve included tests if applicable - [x] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [x] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. ## **Pre-merge reviewer checklist** - [x] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [x] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots. <!-- Please submit this PR as a draft initially. Do not mark it as "Ready for review" until the template has been completely filled out, and PR status checks have passed at least once. --> ## **Description** <!-- Write a short description of the changes included in this pull request, also include relevant motivation and context. Have in mind the following questions: 1. What is the reason for the change? 2. What is the improvement/solution? --> ## **Related issues** Fixes: ## **Manual testing steps** 1. Go to this page... 2. 3. ## **Screenshots/Recordings** <!-- If applicable, add screenshots and/or recordings to visualize the before and after of your change. --> ### **Before** <!-- [screenshots/recordings] --> ### **After** <!-- [screenshots/recordings] --> ## **Pre-merge author checklist** - [ ] I’ve followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile Coding Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [ ] I've completed the PR template to the best of my ability - [ ] I’ve included tests if applicable - [ ] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [ ] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. ## **Pre-merge reviewer checklist** - [ ] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [ ] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots. Co-authored-by: Vince Howard <vincenguyenhoward@gmail.com> --- app/components/Views/AccountActions/AccountActions.tsx | 6 +++++- e2e/fixtures/fixture-builder.js | 6 ++++-- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/app/components/Views/AccountActions/AccountActions.tsx b/app/components/Views/AccountActions/AccountActions.tsx index 7f5c9de5924c..fb48887b0d57 100644 --- a/app/components/Views/AccountActions/AccountActions.tsx +++ b/app/components/Views/AccountActions/AccountActions.tsx @@ -99,6 +99,11 @@ const AccountActions = () => { providerConfig.rpcUrl, networkConfigurations, ); + + if (!explorer) { + return undefined; + } + return { url: `${explorer}/address/${selectedAccount.address}`, title: new URL(explorer).hostname, @@ -132,7 +137,6 @@ const AccountActions = () => { } return undefined; } - return undefined; }, [ networkConfigurations, providerConfig.rpcUrl, diff --git a/e2e/fixtures/fixture-builder.js b/e2e/fixtures/fixture-builder.js index 6a089f67113a..5e8c7725b032 100644 --- a/e2e/fixtures/fixture-builder.js +++ b/e2e/fixtures/fixture-builder.js @@ -190,7 +190,8 @@ class FixtureBuilder { }, ], defaultRpcEndpointIndex: 0, - blockExplorerUrls: [], + defaultBlockExplorerUrlIndex: 0, + blockExplorerUrls: ['https://test.io'], name: 'Localhost', nativeCurrency: 'ETH', }, @@ -879,7 +880,8 @@ class FixtureBuilder { }, ], defaultRpcEndpointIndex: 0, - blockExplorerUrls: [], + defaultBlockExplorerUrlIndex: 0, + blockExplorerUrls: ['https://test.io'], name: 'Localhost', nativeCurrency: 'ETH', }; From 31728bed53d91ac32aa60e725766febd37b55772 Mon Sep 17 00:00:00 2001 From: Curtis David <Curtis.David7@gmail.com> Date: Fri, 4 Apr 2025 18:10:52 -0400 Subject: [PATCH 101/473] fix: Cherry pick Fix swap smoke tests (#14388) (#14421) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit <!-- Please submit this PR as a draft initially. Do not mark it as "Ready for review" until the template has been completely filled out, and PR status checks have passed at least once. --> ## **Description** This fixes the Swap smoke tests failing in the pipeline ## **Related issues** Fixes: ## **Manual testing steps** 1. Go to this page... 2. 3. ## **Screenshots/Recordings** <!-- If applicable, add screenshots and/or recordings to visualize the before and after of your change. --> ### **Before** <!-- [screenshots/recordings] --> ### **After** <!-- [screenshots/recordings] --> ## **Pre-merge author checklist** - [x] I’ve followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile Coding Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [x] I've completed the PR template to the best of my ability - [x] I’ve included tests if applicable - [ ] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [ ] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. ## **Pre-merge reviewer checklist** - [x] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [x] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots. <!-- Please submit this PR as a draft initially. Do not mark it as "Ready for review" until the template has been completely filled out, and PR status checks have passed at least once. --> ## **Description** <!-- Write a short description of the changes included in this pull request, also include relevant motivation and context. Have in mind the following questions: 1. What is the reason for the change? 2. What is the improvement/solution? --> ## **Related issues** Fixes: ## **Manual testing steps** 1. Go to this page... 2. 3. ## **Screenshots/Recordings** <!-- If applicable, add screenshots and/or recordings to visualize the before and after of your change. --> ### **Before** <!-- [screenshots/recordings] --> ### **After** <!-- [screenshots/recordings] --> ## **Pre-merge author checklist** - [ ] I’ve followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile Coding Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [ ] I've completed the PR template to the best of my ability - [ ] I’ve included tests if applicable - [ ] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [ ] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. ## **Pre-merge reviewer checklist** - [ ] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [ ] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots. Co-authored-by: Davide Brocchetto <davide.brocchetto@consensys.net> --- e2e/specs/swaps/swap-action-smoke.spec.js | 4 ++-- e2e/specs/swaps/swap-token-chart.spec.js | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/e2e/specs/swaps/swap-action-smoke.spec.js b/e2e/specs/swaps/swap-action-smoke.spec.js index 2fc7ea026af0..c94a01883e8c 100644 --- a/e2e/specs/swaps/swap-action-smoke.spec.js +++ b/e2e/specs/swaps/swap-action-smoke.spec.js @@ -118,7 +118,7 @@ describe(SmokeSwaps('Swap from Actions'), () => { await QuoteView.tapSearchToken(); await QuoteView.typeSearchToken(sourceTokenSymbol); await TestHelpers.delay(2000); - await QuoteView.selectToken(sourceTokenSymbol, 2); + await QuoteView.selectToken(sourceTokenSymbol, 1); } await QuoteView.enterSwapAmount(quantity); @@ -128,7 +128,7 @@ describe(SmokeSwaps('Swap from Actions'), () => { await QuoteView.tapSearchToken(); await QuoteView.typeSearchToken(destTokenSymbol); await TestHelpers.delay(2000); - await QuoteView.selectToken(destTokenSymbol, 2); + await QuoteView.selectToken(destTokenSymbol, 1); } else await QuoteView.selectToken(destTokenSymbol, firstElement); //Make sure slippage is zero for wrapped tokens diff --git a/e2e/specs/swaps/swap-token-chart.spec.js b/e2e/specs/swaps/swap-token-chart.spec.js index e172f0c8d23b..11d6c53ec03d 100644 --- a/e2e/specs/swaps/swap-token-chart.spec.js +++ b/e2e/specs/swaps/swap-token-chart.spec.js @@ -97,7 +97,7 @@ describe(Regression('Swap from Token view'), () => { await QuoteView.tapOnSelectDestToken(); await QuoteView.tapSearchToken(); await QuoteView.typeSearchToken(destTokenSymbol); - await TestHelpers.delay(1000); + await TestHelpers.delay(3000); await QuoteView.selectToken(destTokenSymbol); await QuoteView.tapOnGetQuotes(); await Assertions.checkIfVisible(SwapView.fetchingQuotes); From c370c4f43c821492a6eb7eba53cf887dbea31074 Mon Sep 17 00:00:00 2001 From: Owen Craston <owen.craston@consensys.net> Date: Fri, 4 Apr 2025 19:30:40 -0700 Subject: [PATCH 102/473] fix: create Solana account in beta builds (cherry pick from #14460) (#14462) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## Description When this [PR was merged](https://github.com/MetaMask/metamask-mobile/pull/14406), it broke the beta builds when creating a solana account. A user would press the create solana account button and nothing would happen. This was due to an issue with the code fences. This PR addresses this issue by moving the appropriate type imports inside the appropriate code fence. Fixes: https://github.com/MetaMask/metamask-mobile/issues/14459 1. ensure that you are building metamask-beta by changing the value of METAMASK_BUILD_TYPE in the .js.env file to "beta" 2. yarn setup && yarn start:ios 3. import a wallet 4. click on the selected account at the top of the screen 5. click on "add new account or hardware wallet" 6. click solana 7. A solana account should be created and the network should be switched. https://github.com/user-attachments/assets/c6186d79-2335-45e3-948c-39e9182f3873 https://github.com/user-attachments/assets/e3b0c6ac-8dcd-494d-9cb1-f91fc9f1863e - [ ] I’ve followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile Coding Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [ ] I've completed the PR template to the best of my ability - [ ] I’ve included tests if applicable - [ ] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [ ] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. - [ ] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [ ] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots. <!-- Please submit this PR as a draft initially. Do not mark it as "Ready for review" until the template has been completely filled out, and PR status checks have passed at least once. --> --- app/components/Views/AddAccountActions/AddAccountActions.tsx | 5 ++++- app/core/SnapKeyring/BitcoinWalletSnap.ts | 2 +- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/app/components/Views/AddAccountActions/AddAccountActions.tsx b/app/components/Views/AddAccountActions/AddAccountActions.tsx index 4f59223b2f64..fe11e0b34476 100644 --- a/app/components/Views/AddAccountActions/AddAccountActions.tsx +++ b/app/components/Views/AddAccountActions/AddAccountActions.tsx @@ -33,6 +33,8 @@ import Text, { import { CaipChainId } from '@metamask/utils'; import { KeyringClient } from '@metamask/keyring-snap-client'; import { SolanaWalletSnapSender } from '../../../core/SnapKeyring/SolanaWalletSnap'; +// eslint-disable-next-line import/no-duplicates +import { SolScope } from '@metamask/keyring-api'; ///: END:ONLY_INCLUDE_IF ///: BEGIN:ONLY_INCLUDE_IF(bitcoin) import { @@ -40,8 +42,9 @@ import { hasCreatedBtcTestnetAccount, } from '../../../selectors/accountsController'; import { BitcoinWalletSnapSender } from '../../../core/SnapKeyring/BitcoinWalletSnap'; -import { BtcScope, SolScope } from '@metamask/keyring-api'; import { useSelector } from 'react-redux'; +// eslint-disable-next-line no-duplicate-imports, import/no-duplicates +import { BtcScope } from '@metamask/keyring-api'; ///: END:ONLY_INCLUDE_IF const AddAccountActions = ({ onBack }: AddAccountActionsProps) => { diff --git a/app/core/SnapKeyring/BitcoinWalletSnap.ts b/app/core/SnapKeyring/BitcoinWalletSnap.ts index 8c9780ca7f7e..75608f8be018 100644 --- a/app/core/SnapKeyring/BitcoinWalletSnap.ts +++ b/app/core/SnapKeyring/BitcoinWalletSnap.ts @@ -1,4 +1,4 @@ -///: BEGIN:ONLY_INCLUDE_IF(keyring-snaps) +///: BEGIN:ONLY_INCLUDE_IF(bitcoin) import { SnapId } from '@metamask/snaps-sdk'; import { Sender } from '@metamask/keyring-snap-client'; import { HandlerType } from '@metamask/snaps-utils'; From d56471c549dbda00b0c8687e1e208bee51ab1b67 Mon Sep 17 00:00:00 2001 From: Curtis David <Curtis.David7@gmail.com> Date: Sat, 5 Apr 2025 12:45:27 -0400 Subject: [PATCH 103/473] test: move limits ramps test to quarantine (#14436) (#14461) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## **Description** We have a test case to check the off-ramps limits, but those limits are set by external providers, and any change made by them will break the test. I'm moving this test to quarantine and we'll need to handle this with fixtures in the future. ## **Related issues** Fixes: e2e pipeline failing ## **Manual testing steps** ## **Screenshots/Recordings** ### **Before** <!-- [screenshots/recordings] --> ### **After** <!-- [screenshots/recordings] --> ## **Pre-merge author checklist** - [ x ] I’ve followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile Coding Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [ x ] I've completed the PR template to the best of my ability - [ x ] I’ve included tests if applicable - [ x ] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [ x ] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. ## **Pre-merge reviewer checklist** - [ ] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [ ] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots. <!-- Please submit this PR as a draft initially. Do not mark it as "Ready for review" until the template has been completely filled out, and PR status checks have passed at least once. --> ## **Description** <!-- Write a short description of the changes included in this pull request, also include relevant motivation and context. Have in mind the following questions: 1. What is the reason for the change? 2. What is the improvement/solution? --> ## **Related issues** Fixes: ## **Manual testing steps** 1. Go to this page... 2. 3. ## **Screenshots/Recordings** <!-- If applicable, add screenshots and/or recordings to visualize the before and after of your change. --> ### **Before** <!-- [screenshots/recordings] --> ### **After** <!-- [screenshots/recordings] --> ## **Pre-merge author checklist** - [ ] I’ve followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile Coding Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [ ] I've completed the PR template to the best of my ability - [ ] I’ve included tests if applicable - [ ] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [ ] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. ## **Pre-merge reviewer checklist** - [ ] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [ ] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots. Co-authored-by: Iván <ivan.canete@consensys.net> --- e2e/specs/{ramps => quarantine}/offramp-limits.spec.js | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename e2e/specs/{ramps => quarantine}/offramp-limits.spec.js (100%) diff --git a/e2e/specs/ramps/offramp-limits.spec.js b/e2e/specs/quarantine/offramp-limits.spec.js similarity index 100% rename from e2e/specs/ramps/offramp-limits.spec.js rename to e2e/specs/quarantine/offramp-limits.spec.js From 21718d5ae545de30d4f23a3e8fef6f42acb1492c Mon Sep 17 00:00:00 2001 From: "runway-github[bot]" <73448015+runway-github[bot]@users.noreply.github.com> Date: Tue, 8 Apr 2025 08:27:48 +0200 Subject: [PATCH 104/473] chore(runway): cherry-pick fix: cp-7.44.0 Fix header styling for redesigned staking confirmations (#14496) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - fix: cp-7.44.0 Fix header styling for redesigned staking confirmations (#14472) <!-- Please submit this PR as a draft initially. Do not mark it as "Ready for review" until the template has been completely filled out, and PR status checks have passed at least once. --> ## **Description** <!-- Write a short description of the changes included in this pull request, also include relevant motivation and context. Have in mind the following questions: 1. What is the reason for the change? 2. What is the improvement/solution? --> This PR aims to fix background of staking confirmations. ## **Related issues** Fixes: https://github.com/MetaMask/MetaMask-planning/issues/4580 ## **Manual testing steps** N/A ## **Screenshots/Recordings** <!-- If applicable, add screenshots and/or recordings to visualize the before and after of your change. --> ### **Before** ![Screenshot 2025-04-07 at 11 08 44](https://github.com/user-attachments/assets/6bc1c161-3bcb-492d-ad61-bd0034a43082) ### **After** ![Screenshot 2025-04-07 at 11 08 20](https://github.com/user-attachments/assets/dc6352b7-f2b1-465c-9074-74c5fc4a11a3) ## **Pre-merge author checklist** - [ ] I’ve followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile Coding Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [ ] I've completed the PR template to the best of my ability - [ ] I’ve included tests if applicable - [ ] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [ ] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. ## **Pre-merge reviewer checklist** - [ ] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [ ] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots. [77def5d](https://github.com/MetaMask/metamask-mobile/commit/77def5d082cb2ce3f13b9e99af17ecb8789f5417) Co-authored-by: OGPoyraz <omergoktugpoyraz@gmail.com> --- .../Info/StakingClaim/StakingClaim.test.tsx | 1 + .../StakingDeposit/StakingDeposit.test.tsx | 1 + .../StakingWithdrawal.test.tsx | 1 + .../components/Confirm/Navbar/Navbar.test.tsx | 22 +++++++++++++++++-- .../components/Confirm/Navbar/Navbar.tsx | 9 ++++++++ .../confirmations/hooks/useNavbar.test.ts | 5 +++++ .../Views/confirmations/hooks/useNavbar.ts | 8 +++++-- 7 files changed, 43 insertions(+), 4 deletions(-) diff --git a/app/components/Views/confirmations/components/Confirm/Info/StakingClaim/StakingClaim.test.tsx b/app/components/Views/confirmations/components/Confirm/Info/StakingClaim/StakingClaim.test.tsx index 77653edf6965..24fe12bc5725 100644 --- a/app/components/Views/confirmations/components/Confirm/Info/StakingClaim/StakingClaim.test.tsx +++ b/app/components/Views/confirmations/components/Confirm/Info/StakingClaim/StakingClaim.test.tsx @@ -81,6 +81,7 @@ describe('StakingClaim', () => { title: 'Claim', onReject: mockOnReject, addBackButton: false, + theme: expect.any(Object), }); }); }); diff --git a/app/components/Views/confirmations/components/Confirm/Info/StakingDeposit/StakingDeposit.test.tsx b/app/components/Views/confirmations/components/Confirm/Info/StakingDeposit/StakingDeposit.test.tsx index cfb8f7965b58..61a05016aca1 100644 --- a/app/components/Views/confirmations/components/Confirm/Info/StakingDeposit/StakingDeposit.test.tsx +++ b/app/components/Views/confirmations/components/Confirm/Info/StakingDeposit/StakingDeposit.test.tsx @@ -93,6 +93,7 @@ describe('StakingDeposit', () => { title: 'Stake', onReject: mockOnReject, addBackButton: true, + theme: expect.any(Object), }); }); diff --git a/app/components/Views/confirmations/components/Confirm/Info/StakingWithdrawal/StakingWithdrawal.test.tsx b/app/components/Views/confirmations/components/Confirm/Info/StakingWithdrawal/StakingWithdrawal.test.tsx index 2297e2df36be..845e517fefbb 100644 --- a/app/components/Views/confirmations/components/Confirm/Info/StakingWithdrawal/StakingWithdrawal.test.tsx +++ b/app/components/Views/confirmations/components/Confirm/Info/StakingWithdrawal/StakingWithdrawal.test.tsx @@ -102,6 +102,7 @@ describe('StakingWithdrawal', () => { title: 'Unstake', onReject: mockOnReject, addBackButton: true, + theme: expect.any(Object), }); }); diff --git a/app/components/Views/confirmations/components/Confirm/Navbar/Navbar.test.tsx b/app/components/Views/confirmations/components/Confirm/Navbar/Navbar.test.tsx index 1201d9f791a9..f5ca326b6901 100644 --- a/app/components/Views/confirmations/components/Confirm/Navbar/Navbar.test.tsx +++ b/app/components/Views/confirmations/components/Confirm/Navbar/Navbar.test.tsx @@ -1,13 +1,24 @@ import React from 'react'; import { render } from '@testing-library/react-native'; import { getNavbar } from './Navbar'; +import { Theme } from '../../../../../../util/theme/models'; describe('getStakingDepositNavbar', () => { it('renders the header title correctly', () => { const title = 'Test Title'; const { getByText } = render( <> - {getNavbar({ title, onReject: jest.fn() }).headerTitle()} + {getNavbar({ + onReject: jest.fn(), + theme: { + colors: { + background: { + alternative: 'red', + }, + }, + } as Theme, + title, + }).headerTitle()} </>, ); @@ -19,8 +30,15 @@ describe('getStakingDepositNavbar', () => { const { getByTestId } = render( <> {getNavbar({ - title: 'Test Title', onReject: onRejectMock, + theme: { + colors: { + background: { + alternative: 'red', + }, + }, + } as Theme, + title: 'Test Title', }).headerLeft()} </>, ); diff --git a/app/components/Views/confirmations/components/Confirm/Navbar/Navbar.tsx b/app/components/Views/confirmations/components/Confirm/Navbar/Navbar.tsx index ab2b6ca1f08a..3e411313a25c 100644 --- a/app/components/Views/confirmations/components/Confirm/Navbar/Navbar.tsx +++ b/app/components/Views/confirmations/components/Confirm/Navbar/Navbar.tsx @@ -9,15 +9,18 @@ import { TextVariant, } from '../../../../../../component-library/components/Texts/Text'; import Device from '../../../../../../util/device'; +import { Theme } from '../../../../../../util/theme/models'; export function getNavbar({ title, onReject, addBackButton = true, + theme, }: { title: string; onReject: () => void; addBackButton?: boolean; + theme: Theme; }) { const innerStyles = StyleSheet.create({ headerLeft: { @@ -28,6 +31,11 @@ export function getNavbar({ alignItems: 'center', marginRight: Device.isAndroid() ? 60 : undefined, }, + headerStyle: { + backgroundColor: theme.colors.background.alternative, + // @ts-expect-error - null is the only way to remove the shadow but it's not typed + shadowOffset: null, + }, }); function handleBackPress() { @@ -51,5 +59,6 @@ export function getNavbar({ testID={`${title}-navbar-back-button`} /> ), + headerStyle: innerStyles.headerStyle, }; } diff --git a/app/components/Views/confirmations/hooks/useNavbar.test.ts b/app/components/Views/confirmations/hooks/useNavbar.test.ts index d14e2fdc66dd..7505ec890e0f 100644 --- a/app/components/Views/confirmations/hooks/useNavbar.test.ts +++ b/app/components/Views/confirmations/hooks/useNavbar.test.ts @@ -1,5 +1,6 @@ import { renderHook } from '@testing-library/react-hooks'; import { useNavigation } from '@react-navigation/native'; +import { Theme } from '../../../../util/theme/models'; import { getNavbar } from '../components/Confirm/Navbar/Navbar'; import { useConfirmActions } from './useConfirmActions'; import useNavbar from './useNavbar'; @@ -48,12 +49,14 @@ describe('useNavbar', () => { title: mockTitle, onReject: mockOnReject, addBackButton: true, + theme: expect.any(Object), }); expect(mockSetOptions).toHaveBeenCalledWith( getNavbar({ title: mockTitle, onReject: mockOnReject, addBackButton: true, + theme: {} as Theme, }), ); }); @@ -72,6 +75,7 @@ describe('useNavbar', () => { title: 'Updated Title', onReject: mockOnReject, addBackButton: true, + theme: expect.any(Object), }); }); @@ -87,6 +91,7 @@ describe('useNavbar', () => { title: mockTitle, onReject: newOnReject, addBackButton: true, + theme: expect.any(Object), }); }); }); diff --git a/app/components/Views/confirmations/hooks/useNavbar.ts b/app/components/Views/confirmations/hooks/useNavbar.ts index 5ba939708269..10d1bc98fe09 100644 --- a/app/components/Views/confirmations/hooks/useNavbar.ts +++ b/app/components/Views/confirmations/hooks/useNavbar.ts @@ -1,13 +1,16 @@ import { useNavigation } from '@react-navigation/native'; import { StackNavigationProp } from '@react-navigation/stack'; import { useEffect } from 'react'; +import { useTheme } from '../../../../util/theme'; import { StakeNavigationParamsList } from '../../../UI/Stake/types'; import { getNavbar } from '../components/Confirm/Navbar/Navbar'; import { useConfirmActions } from './useConfirmActions'; const useNavbar = (title: string, addBackButton = true) => { - const navigation = useNavigation<StackNavigationProp<StakeNavigationParamsList>>(); + const navigation = + useNavigation<StackNavigationProp<StakeNavigationParamsList>>(); const { onReject } = useConfirmActions(); + const theme = useTheme(); useEffect(() => { navigation.setOptions( @@ -15,9 +18,10 @@ const useNavbar = (title: string, addBackButton = true) => { title, onReject, addBackButton, + theme, }), ); - }, [navigation, onReject, title, addBackButton]); + }, [navigation, onReject, theme, title, addBackButton]); }; export default useNavbar; From bb3bf3dbe9df61d10c1916c7c64d868ce23e10a5 Mon Sep 17 00:00:00 2001 From: OGPoyraz <omergoktugpoyraz@gmail.com> Date: Tue, 8 Apr 2025 13:13:04 +0200 Subject: [PATCH 105/473] Cherry pick `9d20463` into `7.44.0` (#14501) Cherry-pick https://github.com/MetaMask/metamask-mobile/commit/9d204637f5f3c6e762d2a4304860d605fb9b764b into `7.44.0` --- app/core/Analytics/MetaMetrics.events.ts | 6 - app/core/Engine/Engine.test.ts | 142 +------------- app/core/Engine/Engine.ts | 91 --------- .../transaction-controller/data-helpers.ts | 71 +++++++ .../transaction-controller-init.test.ts | 102 +++++----- .../transaction-controller-init.ts | 61 +++--- .../transaction-event-handlers.test.ts | 154 +++++++++------ .../transaction-event-handlers.ts | 178 +++++++----------- .../transaction-controller/types.ts | 9 +- .../transaction-controller/utils.ts | 23 ++- .../transaction-controller-messenger.ts | 9 +- app/core/Engine/types.ts | 8 - 12 files changed, 346 insertions(+), 508 deletions(-) create mode 100644 app/core/Engine/controllers/transaction-controller/data-helpers.ts diff --git a/app/core/Analytics/MetaMetrics.events.ts b/app/core/Analytics/MetaMetrics.events.ts index 2150475e3bb4..a738f99a7076 100644 --- a/app/core/Analytics/MetaMetrics.events.ts +++ b/app/core/Analytics/MetaMetrics.events.ts @@ -393,10 +393,6 @@ enum EVENT_NAME { // Smart transactions SMART_TRANSACTION_OPT_IN = 'Smart Transaction Opt In', - // Transactions - // Fired when the transaction reaches a final state (e.g., CONFIRMED, FAILED, DROPPED). - TRANSACTION_FINALIZED = 'Transaction Finalized', - // Simulations INCOMPLETE_ASSET_DISPLAYED = 'Incomplete Asset Displayed', @@ -889,8 +885,6 @@ const events = { INCOMPLETE_ASSET_DISPLAYED: generateOpt( EVENT_NAME.INCOMPLETE_ASSET_DISPLAYED, ), - // Transactions - TRANSACTION_FINALIZED: generateOpt(EVENT_NAME.TRANSACTION_FINALIZED), // Nft auto detection modal NFT_AUTO_DETECTION_MODAL_ENABLE: generateOpt( EVENT_NAME.NFT_AUTO_DETECTION_ENABLED_MODAL, diff --git a/app/core/Engine/Engine.test.ts b/app/core/Engine/Engine.test.ts index 2e9292d90472..9eb354f46845 100644 --- a/app/core/Engine/Engine.test.ts +++ b/app/core/Engine/Engine.test.ts @@ -1,6 +1,6 @@ import { MarketDataDetails } from '@metamask/assets-controllers'; import Engine, { Engine as EngineClass } from './Engine'; -import { EngineState, TransactionEventPayload } from './types'; +import { EngineState } from './types'; import { backgroundState } from '../../util/test/initial-root-state'; import { zeroAddress } from 'ethereumjs-util'; import { @@ -9,13 +9,7 @@ import { MOCK_ADDRESS_1, } from '../../util/test/accountsControllerTestUtils'; import { mockNetworkState } from '../../util/test/network'; -import MetaMetrics from '../Analytics/MetaMetrics'; -import { store } from '../../store'; -import { MetaMetricsEvents } from '../Analytics'; import { Hex } from '@metamask/utils'; -import { TransactionMeta } from '@metamask/transaction-controller'; -import { RootState } from '../../reducers'; -import { MetricsEventBuilder } from '../Analytics/MetricsEventBuilder'; import { KeyringControllerState } from '@metamask/keyring-controller'; import { backupVault } from '../BackupVault'; @@ -528,137 +522,3 @@ describe('Engine', () => { }); }); }); - -describe('Transaction event handlers', () => { - let engine: EngineClass; - - beforeEach(() => { - engine = Engine.init({}); - jest.spyOn(MetaMetrics.getInstance(), 'trackEvent').mockImplementation(); - jest.spyOn(store, 'getState').mockReturnValue({} as RootState); - }); - - afterEach(() => { - engine?.destroyEngineInstance(); - jest.clearAllMocks(); - }); - - describe('_handleTransactionFinalizedEvent', () => { - it('tracks event with basic properties when smart transactions are disabled', async () => { - const properties = { status: 'confirmed' }; - const transactionEventPayload: TransactionEventPayload = { - transactionMeta: { hash: '0x123' } as TransactionMeta, - }; - - await engine._handleTransactionFinalizedEvent( - transactionEventPayload, - properties, - ); - - const expectedEvent = MetricsEventBuilder.createEventBuilder( - MetaMetricsEvents.TRANSACTION_FINALIZED, - ) - .addProperties(properties) - .build(); - - expect(MetaMetrics.getInstance().trackEvent).toHaveBeenCalledWith( - expectedEvent, - ); - }); - - it('does not process smart transaction metrics if transactionMeta is missing', async () => { - const properties = { status: 'failed' }; - const transactionEventPayload = {} as TransactionEventPayload; - - await engine._handleTransactionFinalizedEvent( - transactionEventPayload, - properties, - ); - - const expectedEvent = MetricsEventBuilder.createEventBuilder( - MetaMetricsEvents.TRANSACTION_FINALIZED, - ) - .addProperties(properties) - .build(); - - expect(MetaMetrics.getInstance().trackEvent).toHaveBeenCalledWith( - expectedEvent, - ); - }); - }); - - describe('Transaction status handlers', () => { - it('tracks dropped transactions', async () => { - const transactionEventPayload: TransactionEventPayload = { - transactionMeta: { hash: '0x123' } as TransactionMeta, - }; - - await engine._handleTransactionDropped(transactionEventPayload); - - const expectedEvent = MetricsEventBuilder.createEventBuilder( - MetaMetricsEvents.TRANSACTION_FINALIZED, - ) - .addProperties({ status: 'dropped' }) - .build(); - - expect(MetaMetrics.getInstance().trackEvent).toHaveBeenCalledWith( - expectedEvent, - ); - }); - - it('tracks confirmed transactions', async () => { - const transactionMeta = { hash: '0x123' } as TransactionMeta; - - await engine._handleTransactionConfirmed(transactionMeta); - - const expectedEvent = MetricsEventBuilder.createEventBuilder( - MetaMetricsEvents.TRANSACTION_FINALIZED, - ) - .addProperties({ status: 'confirmed' }) - .build(); - - expect(MetaMetrics.getInstance().trackEvent).toHaveBeenCalledWith( - expectedEvent, - ); - }); - - it('tracks failed transactions', async () => { - const transactionEventPayload: TransactionEventPayload = { - transactionMeta: { hash: '0x123' } as TransactionMeta, - }; - - await engine._handleTransactionFailed(transactionEventPayload); - - const expectedEvent = MetricsEventBuilder.createEventBuilder( - MetaMetricsEvents.TRANSACTION_FINALIZED, - ) - .addProperties({ status: 'failed' }) - .build(); - - expect(MetaMetrics.getInstance().trackEvent).toHaveBeenCalledWith( - expectedEvent, - ); - }); - }); - - describe('_addTransactionControllerListeners', () => { - it('subscribes to transaction events', () => { - jest.spyOn(engine.controllerMessenger, 'subscribe'); - - engine._addTransactionControllerListeners(); - - expect(engine.controllerMessenger.subscribe).toHaveBeenCalledWith( - 'TransactionController:transactionDropped', - engine._handleTransactionDropped, - ); - expect(engine.controllerMessenger.subscribe).toHaveBeenCalledWith( - 'TransactionController:transactionConfirmed', - engine._handleTransactionConfirmed, - ); - expect(engine.controllerMessenger.subscribe).toHaveBeenCalledWith( - 'TransactionController:transactionFailed', - engine._handleTransactionFailed, - ); - }); - }); -}); diff --git a/app/core/Engine/Engine.ts b/app/core/Engine/Engine.ts index 61c05b7ee2e2..9050bcdd7f71 100644 --- a/app/core/Engine/Engine.ts +++ b/app/core/Engine/Engine.ts @@ -130,7 +130,6 @@ import { import SmartTransactionsController from '@metamask/smart-transactions-controller'; import { getAllowedSmartTransactionsChainIds } from '../../../app/constants/smartTransactions'; import { selectBasicFunctionalityEnabled } from '../../selectors/settings'; -import { selectShouldUseSmartTransaction } from '../../selectors/smartTransactionsController'; import { selectSwapsChainFeatureFlags } from '../../reducers/swaps'; import { ClientId } from '@metamask/smart-transactions-controller/dist/types'; import { zeroAddress } from 'ethereumjs-util'; @@ -176,15 +175,12 @@ import { SnapControllerUpdateSnapStateAction, } from './controllers/snaps'; ///: END:ONLY_INCLUDE_IF -import { getSmartTransactionMetricsProperties } from '../../util/smart-transactions'; import { trace } from '../../util/trace'; import { MetricsEventBuilder } from '../Analytics/MetricsEventBuilder'; -import { JsonMap } from '../Analytics/MetaMetrics.types'; import { BaseControllerMessenger, EngineState, EngineContext, - TransactionEventPayload, StatefulControllers, } from './types'; import { @@ -1489,97 +1485,10 @@ export class Engine { this.configureControllersOnNetworkChange(); this.startPolling(); this.handleVaultBackup(); - this._addTransactionControllerListeners(); Engine.instance = this; } - // Logs the "Transaction Finalized" event after a transaction was either confirmed, dropped or failed. - _handleTransactionFinalizedEvent = async ( - transactionEventPayload: TransactionEventPayload, - properties: JsonMap, - ) => { - const shouldUseSmartTransaction = selectShouldUseSmartTransaction( - store.getState(), - ); - if ( - !shouldUseSmartTransaction || - !transactionEventPayload.transactionMeta - ) { - MetaMetrics.getInstance().trackEvent( - MetricsEventBuilder.createEventBuilder( - MetaMetricsEvents.TRANSACTION_FINALIZED, - ) - .addProperties(properties) - .build(), - ); - return; - } - const { transactionMeta } = transactionEventPayload; - const { SmartTransactionsController } = this.context; - const waitForSmartTransaction = true; - const smartTransactionMetricsProperties = - await getSmartTransactionMetricsProperties( - SmartTransactionsController, - transactionMeta, - waitForSmartTransaction, - this.controllerMessenger, - ); - MetaMetrics.getInstance().trackEvent( - MetricsEventBuilder.createEventBuilder( - MetaMetricsEvents.TRANSACTION_FINALIZED, - ) - .addProperties(smartTransactionMetricsProperties) - .addProperties(properties) - .build(), - ); - }; - - _handleTransactionDropped = async ( - transactionEventPayload: TransactionEventPayload, - ) => { - const properties = { status: 'dropped' }; - await this._handleTransactionFinalizedEvent( - transactionEventPayload, - properties, - ); - }; - - _handleTransactionConfirmed = async (transactionMeta: TransactionMeta) => { - const properties = { status: 'confirmed' }; - await this._handleTransactionFinalizedEvent( - { transactionMeta }, - properties, - ); - }; - - _handleTransactionFailed = async ( - transactionEventPayload: TransactionEventPayload, - ) => { - const properties = { status: 'failed' }; - await this._handleTransactionFinalizedEvent( - transactionEventPayload, - properties, - ); - }; - - _addTransactionControllerListeners() { - this.controllerMessenger.subscribe( - 'TransactionController:transactionDropped', - this._handleTransactionDropped, - ); - - this.controllerMessenger.subscribe( - 'TransactionController:transactionConfirmed', - this._handleTransactionConfirmed, - ); - - this.controllerMessenger.subscribe( - 'TransactionController:transactionFailed', - this._handleTransactionFailed, - ); - } - handleVaultBackup() { this.controllerMessenger.subscribe( AppConstants.KEYRING_STATE_CHANGE_EVENT, diff --git a/app/core/Engine/controllers/transaction-controller/data-helpers.ts b/app/core/Engine/controllers/transaction-controller/data-helpers.ts new file mode 100644 index 000000000000..4731c8bdd015 --- /dev/null +++ b/app/core/Engine/controllers/transaction-controller/data-helpers.ts @@ -0,0 +1,71 @@ +import { merge } from 'lodash'; + +export const enabledSmartTransactionsState = { + engine: { + backgroundState: { + SmartTransactionsController: { + enabled: true, + smartTransactionsState: { + liveness: true, + }, + }, + AccountsController: { + internalAccounts: { + selectedAccount: 'account1', + accounts: { + account1: { + address: '0x123', + }, + }, + }, + }, + NetworkController: { + selectedNetworkClientId: 'mainnet', + networkConfigurationsByChainId: { + '0x1': { + chainId: '0x1', + rpcEndpoints: [ + { + networkClientId: 'mainnet', + type: 'infura', + url: 'https://mainnet.infura.io/v3/{infuraProjectId}', + }, + ], + defaultRpcEndpointIndex: 0, + nativeCurrency: 'ETH', + }, + }, + }, + PreferencesController: { + smartTransactionsOptInStatus: true, + }, + }, + }, + swaps: { + featureFlags: { + smart_transactions: { + mobile_active: true, + }, + smartTransactions: { + mobileActive: true, + }, + }, + }, + selectedAccount: { + address: '0x1234567890123456789012345678901234567890', + }, +}; + +export const disabledSmartTransactionsState = merge( + {}, + enabledSmartTransactionsState, + { + engine: { + backgroundState: { + PreferencesController: { + smartTransactionsOptInStatus: false, + }, + }, + }, + }, +); diff --git a/app/core/Engine/controllers/transaction-controller/transaction-controller-init.test.ts b/app/core/Engine/controllers/transaction-controller/transaction-controller-init.test.ts index bcb989eab8db..6eb93b0872a6 100644 --- a/app/core/Engine/controllers/transaction-controller/transaction-controller-init.test.ts +++ b/app/core/Engine/controllers/transaction-controller/transaction-controller-init.test.ts @@ -19,9 +19,7 @@ import { TransactionControllerInit } from './transaction-controller-init'; import { handleTransactionAdded, handleTransactionApproved, - handleTransactionConfirmed, - handleTransactionDropped, - handleTransactionFailed, + handleTransactionFinalized, handleTransactionRejected, handleTransactionSubmitted, } from './transaction-event-handlers'; @@ -92,11 +90,9 @@ describe('Transaction Controller Init', () => { ); const getGlobalChainIdMock = jest.mocked(getGlobalChainId); const handleTransactionApprovedMock = jest.mocked(handleTransactionApproved); - const handleTransactionConfirmedMock = jest.mocked( - handleTransactionConfirmed, + const handleTransactionFinalizedMock = jest.mocked( + handleTransactionFinalized, ); - const handleTransactionDroppedMock = jest.mocked(handleTransactionDropped); - const handleTransactionFailedMock = jest.mocked(handleTransactionFailed); const handleTransactionRejectedMock = jest.mocked(handleTransactionRejected); const handleTransactionSubmittedMock = jest.mocked( handleTransactionSubmitted, @@ -313,58 +309,62 @@ describe('Transaction Controller Init', () => { TransactionControllerInit(requestMock); - // Verify all events are subscribed - expect(Object.keys(subscribeCallbacks).length).toBe(7); - const mockTransactionMeta = { id: '123', status: 'approved', } as TransactionMeta; - subscribeCallbacks['TransactionController:transactionApproved']({ - transactionMeta: mockTransactionMeta, - }); - - expect(handleTransactionApprovedMock).toHaveBeenCalledWith( - mockTransactionMeta, - expect.objectContaining({ - getTransactionMetricProperties: expect.any(Function), - }), - ); - - subscribeCallbacks['TransactionController:transactionConfirmed']( - mockTransactionMeta, - ); - expect(handleTransactionConfirmedMock).toHaveBeenCalledWith( - mockTransactionMeta, - expect.objectContaining({ - getTransactionMetricProperties: expect.any(Function), - }), - ); - - subscribeCallbacks['TransactionController:transactionDropped']({ - transactionMeta: mockTransactionMeta, - }); - expect(handleTransactionDroppedMock).toHaveBeenCalled(); + const handlerContext = { + getState: expect.any(Function), + initMessenger: expect.any(Object), + smartTransactionsController: expect.any(Object), + }; - subscribeCallbacks['TransactionController:transactionFailed']({ - transactionMeta: mockTransactionMeta, - }); - expect(handleTransactionFailedMock).toHaveBeenCalled(); + const eventHandlerMap = [ + { + event: 'TransactionController:transactionApproved', + handler: handleTransactionApprovedMock, + payload: { transactionMeta: mockTransactionMeta }, + }, + { + event: 'TransactionController:transactionConfirmed', + handler: handleTransactionFinalizedMock, + payload: mockTransactionMeta, + }, + { + event: 'TransactionController:transactionDropped', + handler: handleTransactionFinalizedMock, + payload: { transactionMeta: mockTransactionMeta }, + }, + { + event: 'TransactionController:transactionFailed', + handler: handleTransactionFinalizedMock, + payload: { transactionMeta: mockTransactionMeta }, + }, + { + event: 'TransactionController:transactionRejected', + handler: handleTransactionRejectedMock, + payload: { transactionMeta: mockTransactionMeta }, + }, + { + event: 'TransactionController:transactionSubmitted', + handler: handleTransactionSubmittedMock, + payload: { transactionMeta: mockTransactionMeta }, + }, + { + event: 'TransactionController:unapprovedTransactionAdded', + handler: handleTransactionAddedMock, + payload: mockTransactionMeta, + }, + ]; - subscribeCallbacks['TransactionController:transactionRejected']({ - transactionMeta: mockTransactionMeta, - }); - expect(handleTransactionRejectedMock).toHaveBeenCalled(); + // Verify all events are subscribed + expect(Object.keys(subscribeCallbacks).length).toBe(eventHandlerMap.length); - subscribeCallbacks['TransactionController:transactionSubmitted']({ - transactionMeta: mockTransactionMeta, + // Test each event handler + eventHandlerMap.forEach(({ event, handler, payload }) => { + subscribeCallbacks[event](payload); + expect(handler).toHaveBeenCalledWith(mockTransactionMeta, handlerContext); }); - expect(handleTransactionSubmittedMock).toHaveBeenCalled(); - - subscribeCallbacks['TransactionController:unapprovedTransactionAdded']( - mockTransactionMeta, - ); - expect(handleTransactionAddedMock).toHaveBeenCalled(); }); }); diff --git a/app/core/Engine/controllers/transaction-controller/transaction-controller-init.ts b/app/core/Engine/controllers/transaction-controller/transaction-controller-init.ts index 2e0547d94961..4fbcea115b1d 100644 --- a/app/core/Engine/controllers/transaction-controller/transaction-controller-init.ts +++ b/app/core/Engine/controllers/transaction-controller/transaction-controller-init.ts @@ -21,9 +21,7 @@ import { import { handleTransactionAdded, handleTransactionApproved, - handleTransactionConfirmed, - handleTransactionDropped, - handleTransactionFailed, + handleTransactionFinalized, handleTransactionRejected, handleTransactionSubmitted, } from './transaction-event-handlers'; @@ -33,7 +31,7 @@ import type { ControllerInitFunction, ControllerInitRequest, } from '../../types'; -import type { TransactionMetrics } from './types'; +import type { TransactionEventHandlerRequest } from './types'; export const TransactionControllerInit: ControllerInitFunction< TransactionController, @@ -112,6 +110,7 @@ export const TransactionControllerInit: ControllerInitFunction< addTransactionControllerListeners({ initMessenger, getState, + smartTransactionsController, }); return { controller: transactionController }; @@ -188,71 +187,75 @@ function getControllers( }; } -function addTransactionControllerListeners({ - initMessenger, - getState, -}: { - initMessenger: TransactionControllerInitMessenger; - getState: () => RootState; -}) { - const getTransactionMetricProperties = ( - transactionId: string, - ): TransactionMetrics => { - const state = getState(); - return (state.confirmationMetrics.metricsById?.[transactionId] || - {}) as unknown as TransactionMetrics; - }; - - const transactionMetricRequest = { - getTransactionMetricProperties, - }; +function addTransactionControllerListeners( + transactionEventHandlerRequest: TransactionEventHandlerRequest, +) { + const { initMessenger } = transactionEventHandlerRequest; initMessenger.subscribe( 'TransactionController:transactionApproved', ({ transactionMeta }: { transactionMeta: TransactionMeta }) => { - handleTransactionApproved(transactionMeta, transactionMetricRequest); + handleTransactionApproved( + transactionMeta, + transactionEventHandlerRequest, + ); }, ); initMessenger.subscribe( 'TransactionController:transactionConfirmed', (transactionMeta: TransactionMeta) => { - handleTransactionConfirmed(transactionMeta, transactionMetricRequest); + handleTransactionFinalized( + transactionMeta, + transactionEventHandlerRequest, + ); }, ); initMessenger.subscribe( 'TransactionController:transactionDropped', ({ transactionMeta }: { transactionMeta: TransactionMeta }) => { - handleTransactionDropped(transactionMeta, transactionMetricRequest); + handleTransactionFinalized( + transactionMeta, + transactionEventHandlerRequest, + ); }, ); initMessenger.subscribe( 'TransactionController:transactionFailed', ({ transactionMeta }: { transactionMeta: TransactionMeta }) => { - handleTransactionFailed(transactionMeta, transactionMetricRequest); + handleTransactionFinalized( + transactionMeta, + transactionEventHandlerRequest, + ); }, ); initMessenger.subscribe( 'TransactionController:transactionRejected', ({ transactionMeta }: { transactionMeta: TransactionMeta }) => { - handleTransactionRejected(transactionMeta, transactionMetricRequest); + handleTransactionRejected( + transactionMeta, + transactionEventHandlerRequest, + ); }, ); initMessenger.subscribe( 'TransactionController:transactionSubmitted', ({ transactionMeta }: { transactionMeta: TransactionMeta }) => { - handleTransactionSubmitted(transactionMeta, transactionMetricRequest); + handleTransactionSubmitted( + transactionMeta, + transactionEventHandlerRequest, + ); }, ); initMessenger.subscribe( 'TransactionController:unapprovedTransactionAdded', (transactionMeta: TransactionMeta) => { - handleTransactionAdded(transactionMeta, transactionMetricRequest); + handleTransactionAdded(transactionMeta, transactionEventHandlerRequest); }, ); } diff --git a/app/core/Engine/controllers/transaction-controller/transaction-event-handlers.test.ts b/app/core/Engine/controllers/transaction-controller/transaction-event-handlers.test.ts index 0a41ad479939..d1e40abc7166 100644 --- a/app/core/Engine/controllers/transaction-controller/transaction-event-handlers.test.ts +++ b/app/core/Engine/controllers/transaction-controller/transaction-event-handlers.test.ts @@ -1,16 +1,24 @@ import type { TransactionMeta } from '@metamask/transaction-controller'; +import { merge } from 'lodash'; + import { MetaMetrics } from '../../../Analytics'; import { TRANSACTION_EVENTS } from '../../../Analytics/events/confirmations'; import { MetricsEventBuilder } from '../../../Analytics/MetricsEventBuilder'; +import { getSmartTransactionMetricsProperties } from '../../../../util/smart-transactions'; import { handleTransactionAdded, handleTransactionApproved, - handleTransactionConfirmed, - handleTransactionDropped, - handleTransactionFailed, + handleTransactionFinalized, handleTransactionRejected, handleTransactionSubmitted, } from './transaction-event-handlers'; +import { TransactionEventHandlerRequest } from './types'; +import { + disabledSmartTransactionsState, + enabledSmartTransactionsState, +} from './data-helpers'; + +jest.mock('../../../../util/smart-transactions'); // Mock dependencies jest.mock('../../../Analytics', () => ({ @@ -26,6 +34,13 @@ jest.mock('../../../Analytics/MetricsEventBuilder', () => ({ })); describe('Transaction Event Handlers', () => { + const mockGetSmartTransactionMetricsProperties = jest.mocked( + getSmartTransactionMetricsProperties, + ); + const mockGetState = jest.fn(); + const mockInitMessenger = jest.fn(); + const mockSmartTransactionsController = jest.fn(); + const mockTransactionMeta = { id: 'test-id', chainId: '0x1', @@ -35,16 +50,16 @@ describe('Transaction Event Handlers', () => { txParams: {}, } as unknown as TransactionMeta; - const mockTransactionMetrics = { - properties: { test_property: 'test_value' }, - sensitiveProperties: { sensitive_property: 'sensitive_value' }, + const mockSmartTransactionMetricsProperties = { + smart_transaction_timed_out: false, + smart_transaction_proxied: false, }; const mockTransactionMetricRequest = { - getTransactionMetricProperties: jest - .fn() - .mockReturnValue(mockTransactionMetrics), - }; + getState: mockGetState, + initMessenger: mockInitMessenger, + smartTransactionsController: mockSmartTransactionsController, + } as unknown as TransactionEventHandlerRequest; const mockEventBuilder = { addProperties: jest.fn().mockReturnThis(), @@ -67,6 +82,23 @@ describe('Transaction Event Handlers', () => { (MetaMetrics.getInstance as jest.Mock).mockReturnValue( mockMetaMetricsInstance, ); + + mockGetSmartTransactionMetricsProperties.mockResolvedValue( + mockSmartTransactionMetricsProperties, + ); + + mockGetState.mockReturnValue( + merge({}, enabledSmartTransactionsState, { + confirmationMetrics: { + metricsById: { + [mockTransactionMeta.id]: { + properties: { test_property: 'test_value' }, + sensitiveProperties: { sensitive_property: 'sensitive_value' }, + }, + }, + }, + }), + ); }); const handlerTestCases = [ @@ -79,38 +111,10 @@ describe('Transaction Event Handlers', () => { handlerName: 'handleTransactionApproved', handler: handleTransactionApproved, event: TRANSACTION_EVENTS.TRANSACTION_APPROVED, - extraAssertions: ( - eventBuilder: jest.Mocked<MetricsEventBuilder>, - _transactionMeta: TransactionMeta, - ) => { - const expectedProperties = { - chain_id: '0x1', - transaction_internal_id: 'test-id', - transaction_type: 'unknown', - test_property: 'test_value', - }; - - expect(eventBuilder.addProperties).toHaveBeenCalledWith( - expect.objectContaining(expectedProperties), - ); - expect(eventBuilder.addSensitiveProperties).toHaveBeenCalledWith( - expect.objectContaining({ sensitive_property: 'sensitive_value' }), - ); - }, - }, - { - handlerName: 'handleTransactionConfirmed', - handler: handleTransactionConfirmed, - event: TRANSACTION_EVENTS.TRANSACTION_FINALIZED, }, { - handlerName: 'handleTransactionDropped', - handler: handleTransactionDropped, - event: TRANSACTION_EVENTS.TRANSACTION_FINALIZED, - }, - { - handlerName: 'handleTransactionFailed', - handler: handleTransactionFailed, + handlerName: 'handleTransactionFinalized', + handler: handleTransactionFinalized, event: TRANSACTION_EVENTS.TRANSACTION_FINALIZED, }, { @@ -127,34 +131,24 @@ describe('Transaction Event Handlers', () => { it.each(handlerTestCases)( '$handlerName should generate and track event with correct properties', - ({ handler, event, extraAssertions }) => { - handler(mockTransactionMeta, mockTransactionMetricRequest); + async ({ handler, event }) => { + await handler(mockTransactionMeta, mockTransactionMetricRequest); - expect( - mockTransactionMetricRequest.getTransactionMetricProperties, - ).toHaveBeenCalledWith('test-id'); expect(MetricsEventBuilder.createEventBuilder).toHaveBeenCalledWith( event, ); - if (extraAssertions) { - extraAssertions( - mockEventBuilder as unknown as jest.Mocked<MetricsEventBuilder>, - mockTransactionMeta, - ); - } - expect(mockEventBuilder.build).toHaveBeenCalled(); + expect(mockTrackEvent).toHaveBeenCalled(); }, ); it('handles missing transaction metrics properties', () => { - mockTransactionMetricRequest.getTransactionMetricProperties.mockReturnValueOnce( - { - properties: {}, - sensitiveProperties: {}, + mockGetState.mockReturnValueOnce({ + confirmationMetrics: { + metricsById: {}, }, - ); + }); handleTransactionApproved( mockTransactionMeta, @@ -166,9 +160,11 @@ describe('Transaction Event Handlers', () => { }); it('handles undefined transaction metrics', () => { - mockTransactionMetricRequest.getTransactionMetricProperties.mockReturnValueOnce( - undefined, - ); + mockGetState.mockReturnValueOnce({ + confirmationMetrics: { + metricsById: {}, + }, + }); expect(() => { handleTransactionApproved( @@ -177,4 +173,42 @@ describe('Transaction Event Handlers', () => { ); }).not.toThrow(); }); + + describe('handleTransactionFinalized', () => { + it('adds STX metrics properties if smart transactions are enabled', async () => { + await handleTransactionFinalized( + mockTransactionMeta, + mockTransactionMetricRequest, + ); + + expect(mockEventBuilder.addProperties).toHaveBeenCalledWith( + expect.objectContaining(mockSmartTransactionMetricsProperties), + ); + }); + + it('does not add STX metrics properties if smart transactions are not enabled', async () => { + mockGetState.mockReturnValue( + merge({}, disabledSmartTransactionsState, { + confirmationMetrics: { + metricsById: { + [mockTransactionMeta.id]: { + properties: { test_property: 'test_value' }, + sensitiveProperties: { sensitive_property: 'sensitive_value' }, + }, + }, + }, + }), + ); + + await handleTransactionFinalized( + mockTransactionMeta, + mockTransactionMetricRequest, + ); + + expect(mockEventBuilder.addProperties).toHaveBeenCalled(); + expect(mockEventBuilder.addProperties).not.toHaveBeenCalledWith( + expect.objectContaining(mockSmartTransactionMetricsProperties), + ); + }); + }); }); diff --git a/app/core/Engine/controllers/transaction-controller/transaction-event-handlers.ts b/app/core/Engine/controllers/transaction-controller/transaction-event-handlers.ts index 716bbc7fcca8..8683285584b1 100644 --- a/app/core/Engine/controllers/transaction-controller/transaction-event-handlers.ts +++ b/app/core/Engine/controllers/transaction-controller/transaction-event-handlers.ts @@ -2,131 +2,81 @@ import { merge } from 'lodash'; import type { TransactionMeta } from '@metamask/transaction-controller'; import { TRANSACTION_EVENTS } from '../../../Analytics/events/confirmations'; +import { selectShouldUseSmartTransaction } from '../../../../selectors/smartTransactionsController'; +import { getSmartTransactionMetricsProperties } from '../../../../util/smart-transactions'; import { MetaMetrics } from '../../../Analytics'; +import { BaseControllerMessenger } from '../../types'; import { generateDefaultTransactionMetrics, generateEvent } from './utils'; -import type { TransactionMetricRequest } from './types'; - -export const handleTransactionAdded = ( +import type { TransactionEventHandlerRequest } from './types'; + +// Generic handler for simple transaction events +const createTransactionEventHandler = ( + eventType: (typeof TRANSACTION_EVENTS)[keyof typeof TRANSACTION_EVENTS], +) => ( + transactionMeta: TransactionMeta, + transactionEventHandlerRequest: TransactionEventHandlerRequest, + ) => { + const defaultTransactionMetricProperties = + generateDefaultTransactionMetrics( + eventType, + transactionMeta, + transactionEventHandlerRequest, + ); + + const event = generateEvent(defaultTransactionMetricProperties); + MetaMetrics.getInstance().trackEvent(event); + }; + +// Simple handlers - no unique properties / actions +export const handleTransactionAdded = createTransactionEventHandler( + TRANSACTION_EVENTS.TRANSACTION_ADDED, +); +export const handleTransactionApproved = createTransactionEventHandler( + TRANSACTION_EVENTS.TRANSACTION_APPROVED, +); +export const handleTransactionRejected = createTransactionEventHandler( + TRANSACTION_EVENTS.TRANSACTION_REJECTED, +); +export const handleTransactionSubmitted = createTransactionEventHandler( + TRANSACTION_EVENTS.TRANSACTION_SUBMITTED, +); + +// Intentionally using TRANSACTION_FINALIZED for confirmed/failed/dropped transactions +// as unified type for all finalized transactions. +// Status could be derived from transactionMeta.status +export async function handleTransactionFinalized( transactionMeta: TransactionMeta, - transactionMetricRequest: TransactionMetricRequest, -) => { - const defaultTransactionMetricProperties = generateDefaultTransactionMetrics( - TRANSACTION_EVENTS.TRANSACTION_ADDED, - transactionMeta, - transactionMetricRequest, - ); - - const mergedEventProperties = merge({}, defaultTransactionMetricProperties); - - const event = generateEvent(mergedEventProperties); - - MetaMetrics.getInstance().trackEvent(event); -}; + transactionEventHandlerRequest: TransactionEventHandlerRequest, +) { + const { getState, initMessenger, smartTransactionsController } = + transactionEventHandlerRequest; -export const handleTransactionApproved = ( - transactionMeta: TransactionMeta, - transactionMetricRequest: TransactionMetricRequest, -) => { - const defaultTransactionMetricProperties = generateDefaultTransactionMetrics( - TRANSACTION_EVENTS.TRANSACTION_APPROVED, - transactionMeta, - transactionMetricRequest, - ); - - const mergedEventProperties = merge({}, defaultTransactionMetricProperties); - - const event = generateEvent(mergedEventProperties); - - MetaMetrics.getInstance().trackEvent(event); -}; - -export const handleTransactionConfirmed = ( - transactionMeta: TransactionMeta, - transactionMetricRequest: TransactionMetricRequest, -) => { - // Intentionally using TRANSACTION_FINALIZED for confirmed transactions - // as unified type for all finalized transactions const defaultTransactionMetricProperties = generateDefaultTransactionMetrics( TRANSACTION_EVENTS.TRANSACTION_FINALIZED, transactionMeta, - transactionMetricRequest, + transactionEventHandlerRequest, ); - const mergedEventProperties = merge({}, defaultTransactionMetricProperties); - - const event = generateEvent(mergedEventProperties); - - MetaMetrics.getInstance().trackEvent(event); -}; - -export const handleTransactionDropped = ( - transactionMeta: TransactionMeta, - transactionMetricRequest: TransactionMetricRequest, -) => { - // Intentionally using TRANSACTION_FINALIZED for dropped transactions - // as unified type for all finalized transactions - const defaultTransactionMetricProperties = generateDefaultTransactionMetrics( - TRANSACTION_EVENTS.TRANSACTION_FINALIZED, - transactionMeta, - transactionMetricRequest, + let stxMetricsProperties = {}; + + const shouldUseSmartTransaction = selectShouldUseSmartTransaction(getState()); + if (shouldUseSmartTransaction) { + stxMetricsProperties = await getSmartTransactionMetricsProperties( + smartTransactionsController, + transactionMeta, + true, + initMessenger as unknown as BaseControllerMessenger, + ); + } + + const mergedEventProperties = merge( + { + properties: stxMetricsProperties, + }, + defaultTransactionMetricProperties, ); - const mergedEventProperties = merge({}, defaultTransactionMetricProperties); - - const event = generateEvent(mergedEventProperties); - - MetaMetrics.getInstance().trackEvent(event); -}; - -export const handleTransactionFailed = ( - transactionMeta: TransactionMeta, - transactionMetricRequest: TransactionMetricRequest, -) => { - // Intentionally using TRANSACTION_FINALIZED for failed transactions - // as unified type for all finalized transactions - const defaultTransactionMetricProperties = generateDefaultTransactionMetrics( - TRANSACTION_EVENTS.TRANSACTION_FINALIZED, - transactionMeta, - transactionMetricRequest, - ); - - const mergedEventProperties = merge({}, defaultTransactionMetricProperties); - - const event = generateEvent(mergedEventProperties); - - MetaMetrics.getInstance().trackEvent(event); -}; - -export const handleTransactionRejected = ( - transactionMeta: TransactionMeta, - transactionMetricRequest: TransactionMetricRequest, -) => { - const defaultTransactionMetricProperties = generateDefaultTransactionMetrics( - TRANSACTION_EVENTS.TRANSACTION_REJECTED, - transactionMeta, - transactionMetricRequest, - ); - - const mergedEventProperties = merge({}, defaultTransactionMetricProperties); - - const event = generateEvent(mergedEventProperties); - - MetaMetrics.getInstance().trackEvent(event); -}; - -export const handleTransactionSubmitted = ( - transactionMeta: TransactionMeta, - transactionMetricRequest: TransactionMetricRequest, -) => { - const defaultTransactionMetricProperties = generateDefaultTransactionMetrics( - TRANSACTION_EVENTS.TRANSACTION_SUBMITTED, - transactionMeta, - transactionMetricRequest, - ); - - const mergedEventProperties = merge({}, defaultTransactionMetricProperties); - const event = generateEvent(mergedEventProperties); MetaMetrics.getInstance().trackEvent(event); -}; +} diff --git a/app/core/Engine/controllers/transaction-controller/types.ts b/app/core/Engine/controllers/transaction-controller/types.ts index 9c42d3008720..91584b354733 100644 --- a/app/core/Engine/controllers/transaction-controller/types.ts +++ b/app/core/Engine/controllers/transaction-controller/types.ts @@ -1,4 +1,7 @@ import { JsonMap } from '../../../Analytics/MetaMetrics.types'; +import SmartTransactionsController from '@metamask/smart-transactions-controller'; +import type { RootState } from '../../../../reducers'; +import { TransactionControllerInitMessenger } from '../../messengers/transaction-controller-messenger'; // In order to not import from redux slice, type is defined here export interface TransactionMetrics { @@ -6,6 +9,8 @@ export interface TransactionMetrics { sensitiveProperties: JsonMap; } -export interface TransactionMetricRequest { - getTransactionMetricProperties: (id: string) => TransactionMetrics; +export interface TransactionEventHandlerRequest { + getState: () => RootState; + initMessenger: TransactionControllerInitMessenger; + smartTransactionsController: SmartTransactionsController; } diff --git a/app/core/Engine/controllers/transaction-controller/utils.ts b/app/core/Engine/controllers/transaction-controller/utils.ts index b7f40d3631b7..b68118c0d538 100644 --- a/app/core/Engine/controllers/transaction-controller/utils.ts +++ b/app/core/Engine/controllers/transaction-controller/utils.ts @@ -3,14 +3,20 @@ import { type TransactionMeta, } from '@metamask/transaction-controller'; import { merge } from 'lodash'; +import type { RootState } from '../../../../reducers'; import { MetricsEventBuilder } from '../../../Analytics/MetricsEventBuilder'; import { JsonMap, IMetaMetricsEvent, } from '../../../Analytics/MetaMetrics.types'; -import type { TransactionMetricRequest } from './types'; +import type { + TransactionEventHandlerRequest, + TransactionMetrics, +} from './types'; -export function getTransactionTypeValue(transactionType: TransactionType | undefined) { +export function getTransactionTypeValue( + transactionType: TransactionType | undefined, +) { switch (transactionType) { case TransactionType.bridgeApproval: return 'bridge_approval'; @@ -62,10 +68,19 @@ export function getTransactionTypeValue(transactionType: TransactionType | undef } } +const getConfirmationMetricProperties = ( + getState: () => RootState, + transactionId: string, +): TransactionMetrics => { + const state = getState(); + return (state.confirmationMetrics.metricsById?.[transactionId] || + {}) as unknown as TransactionMetrics; +}; + export function generateDefaultTransactionMetrics( metametricsEvent: IMetaMetricsEvent, transactionMeta: TransactionMeta, - { getTransactionMetricProperties }: TransactionMetricRequest, + { getState }: TransactionEventHandlerRequest, ) { const { chainId, id, type, status } = transactionMeta; @@ -79,7 +94,7 @@ export function generateDefaultTransactionMetrics( status, }, }, - getTransactionMetricProperties(id), + getConfirmationMetricProperties(getState, id), ); return mergedDefaultProperties; diff --git a/app/core/Engine/messengers/transaction-controller-messenger/transaction-controller-messenger.ts b/app/core/Engine/messengers/transaction-controller-messenger/transaction-controller-messenger.ts index 94b8d7be93aa..d6c5341669d2 100644 --- a/app/core/Engine/messengers/transaction-controller-messenger/transaction-controller-messenger.ts +++ b/app/core/Engine/messengers/transaction-controller-messenger/transaction-controller-messenger.ts @@ -17,7 +17,10 @@ import { TransactionControllerTransactionSubmittedEvent, TransactionControllerUnapprovedTransactionAddedEvent, } from '@metamask/transaction-controller'; -import { SmartTransactionsControllerSmartTransactionEvent } from '@metamask/smart-transactions-controller'; +import { + SmartTransactionsControllerSmartTransactionEvent, + SmartTransactionsControllerSmartTransactionConfirmationDoneEvent, +} from '@metamask/smart-transactions-controller'; type MessengerActions = | ApprovalControllerActions @@ -35,7 +38,8 @@ type MessengerEvents = | TransactionControllerTransactionSubmittedEvent | TransactionControllerUnapprovedTransactionAddedEvent | NetworkControllerStateChangeEvent - | SmartTransactionsControllerSmartTransactionEvent; + | SmartTransactionsControllerSmartTransactionEvent + | SmartTransactionsControllerSmartTransactionConfirmationDoneEvent; export type TransactionControllerInitMessenger = ReturnType< typeof getTransactionControllerInitMessenger @@ -71,6 +75,7 @@ export function getTransactionControllerInitMessenger( 'TransactionController:transactionSubmitted', 'TransactionController:unapprovedTransactionAdded', 'SmartTransactionsController:smartTransaction', + 'SmartTransactionsController:smartTransactionConfirmationDone', ], allowedActions: [ 'ApprovalController:addRequest', diff --git a/app/core/Engine/types.ts b/app/core/Engine/types.ts index 18873ad3c78b..5d48cbae2481 100644 --- a/app/core/Engine/types.ts +++ b/app/core/Engine/types.ts @@ -97,7 +97,6 @@ import { TransactionControllerActions, TransactionControllerEvents, TransactionControllerState, - TransactionMeta, } from '@metamask/transaction-controller'; import { GasFeeController, @@ -392,13 +391,6 @@ type GlobalEvents = | BridgeStatusControllerEvents | EarnControllerEvents; -// TODO: Abstract this into controller utils for TransactionController -export interface TransactionEventPayload { - transactionMeta: TransactionMeta; - actionId?: string; - error?: string; -} - /** * Type definition for the controller messenger used in the Engine. * It extends the base ControllerMessenger with global actions and events. From ae912df349438fe8bb813a380c05fcf81be68b32 Mon Sep 17 00:00:00 2001 From: OGPoyraz <omergoktugpoyraz@gmail.com> Date: Tue, 8 Apr 2025 13:28:02 +0200 Subject: [PATCH 106/473] Cherry pick `7744ef4` into `7.44.0` (#14505) Cherry-pick https://github.com/MetaMask/metamask-mobile/commit/7744ef48af80f037f6bd0dd65717b5c19edeba20 into `7.44.0` --- .../hooks/useConfirmationRedesignEnabled.ts | 2 +- .../metrics.test.ts} | 60 ++++++++--------- .../metrics.ts} | 30 ++++----- .../event-handlers/notification.test.ts | 67 +++++++++++++++++++ .../event-handlers/notification.ts | 16 +++++ .../transaction-controller-init.test.ts | 59 +++++++++------- .../transaction-controller-init.ts | 39 +++++++---- 7 files changed, 190 insertions(+), 83 deletions(-) rename app/core/Engine/controllers/transaction-controller/{transaction-event-handlers.test.ts => event-handlers/metrics.test.ts} (75%) rename app/core/Engine/controllers/transaction-controller/{transaction-event-handlers.ts => event-handlers/metrics.ts} (69%) create mode 100644 app/core/Engine/controllers/transaction-controller/event-handlers/notification.test.ts create mode 100644 app/core/Engine/controllers/transaction-controller/event-handlers/notification.ts diff --git a/app/components/Views/confirmations/hooks/useConfirmationRedesignEnabled.ts b/app/components/Views/confirmations/hooks/useConfirmationRedesignEnabled.ts index fb0392bcd7d0..c36c8ccb7c9f 100644 --- a/app/components/Views/confirmations/hooks/useConfirmationRedesignEnabled.ts +++ b/app/components/Views/confirmations/hooks/useConfirmationRedesignEnabled.ts @@ -22,7 +22,7 @@ const REDESIGNED_SIGNATURE_TYPES = [ ApprovalType.PersonalSign, ]; -const REDESIGNED_TRANSACTION_TYPES = [ +export const REDESIGNED_TRANSACTION_TYPES = [ TransactionType.stakingDeposit, TransactionType.stakingUnstake, TransactionType.stakingClaim, diff --git a/app/core/Engine/controllers/transaction-controller/transaction-event-handlers.test.ts b/app/core/Engine/controllers/transaction-controller/event-handlers/metrics.test.ts similarity index 75% rename from app/core/Engine/controllers/transaction-controller/transaction-event-handlers.test.ts rename to app/core/Engine/controllers/transaction-controller/event-handlers/metrics.test.ts index d1e40abc7166..847cf4039265 100644 --- a/app/core/Engine/controllers/transaction-controller/transaction-event-handlers.test.ts +++ b/app/core/Engine/controllers/transaction-controller/event-handlers/metrics.test.ts @@ -1,39 +1,39 @@ import type { TransactionMeta } from '@metamask/transaction-controller'; import { merge } from 'lodash'; -import { MetaMetrics } from '../../../Analytics'; -import { TRANSACTION_EVENTS } from '../../../Analytics/events/confirmations'; -import { MetricsEventBuilder } from '../../../Analytics/MetricsEventBuilder'; -import { getSmartTransactionMetricsProperties } from '../../../../util/smart-transactions'; +import { MetaMetrics } from '../../../../Analytics'; +import { TRANSACTION_EVENTS } from '../../../../Analytics/events/confirmations'; +import { MetricsEventBuilder } from '../../../../Analytics/MetricsEventBuilder'; +import { getSmartTransactionMetricsProperties } from '../../../../../util/smart-transactions'; import { - handleTransactionAdded, - handleTransactionApproved, - handleTransactionFinalized, - handleTransactionRejected, - handleTransactionSubmitted, -} from './transaction-event-handlers'; -import { TransactionEventHandlerRequest } from './types'; + handleTransactionAddedEventForMetrics, + handleTransactionApprovedEventForMetrics, + handleTransactionFinalizedEventForMetrics, + handleTransactionRejectedEventForMetrics, + handleTransactionSubmittedEventForMetrics, +} from './metrics'; +import { TransactionEventHandlerRequest } from '../types'; import { disabledSmartTransactionsState, enabledSmartTransactionsState, -} from './data-helpers'; +} from '../data-helpers'; -jest.mock('../../../../util/smart-transactions'); +jest.mock('../../../../../util/smart-transactions'); // Mock dependencies -jest.mock('../../../Analytics', () => ({ +jest.mock('../../../../Analytics', () => ({ MetaMetrics: { getInstance: jest.fn(), }, })); -jest.mock('../../../Analytics/MetricsEventBuilder', () => ({ +jest.mock('../../../../Analytics/MetricsEventBuilder', () => ({ MetricsEventBuilder: { createEventBuilder: jest.fn(), }, })); -describe('Transaction Event Handlers', () => { +describe('Transaction Metric Event Handlers', () => { const mockGetSmartTransactionMetricsProperties = jest.mocked( getSmartTransactionMetricsProperties, ); @@ -103,28 +103,28 @@ describe('Transaction Event Handlers', () => { const handlerTestCases = [ { - handlerName: 'handleTransactionAdded', - handler: handleTransactionAdded, + handlerName: 'handleTransactionAddedEventForMetrics', + handler: handleTransactionAddedEventForMetrics, event: TRANSACTION_EVENTS.TRANSACTION_ADDED, }, { - handlerName: 'handleTransactionApproved', - handler: handleTransactionApproved, + handlerName: 'handleTransactionApprovedEventForMetrics', + handler: handleTransactionApprovedEventForMetrics, event: TRANSACTION_EVENTS.TRANSACTION_APPROVED, }, { - handlerName: 'handleTransactionFinalized', - handler: handleTransactionFinalized, + handlerName: 'handleTransactionFinalizedEventForMetrics', + handler: handleTransactionFinalizedEventForMetrics, event: TRANSACTION_EVENTS.TRANSACTION_FINALIZED, }, { - handlerName: 'handleTransactionRejected', - handler: handleTransactionRejected, + handlerName: 'handleTransactionRejectedEventForMetrics', + handler: handleTransactionRejectedEventForMetrics, event: TRANSACTION_EVENTS.TRANSACTION_REJECTED, }, { - handlerName: 'handleTransactionSubmitted', - handler: handleTransactionSubmitted, + handlerName: 'handleTransactionSubmittedEventForMetrics', + handler: handleTransactionSubmittedEventForMetrics, event: TRANSACTION_EVENTS.TRANSACTION_SUBMITTED, }, ]; @@ -150,7 +150,7 @@ describe('Transaction Event Handlers', () => { }, }); - handleTransactionApproved( + handleTransactionApprovedEventForMetrics( mockTransactionMeta, mockTransactionMetricRequest, ); @@ -167,7 +167,7 @@ describe('Transaction Event Handlers', () => { }); expect(() => { - handleTransactionApproved( + handleTransactionApprovedEventForMetrics( mockTransactionMeta, mockTransactionMetricRequest, ); @@ -176,7 +176,7 @@ describe('Transaction Event Handlers', () => { describe('handleTransactionFinalized', () => { it('adds STX metrics properties if smart transactions are enabled', async () => { - await handleTransactionFinalized( + await handleTransactionFinalizedEventForMetrics( mockTransactionMeta, mockTransactionMetricRequest, ); @@ -200,7 +200,7 @@ describe('Transaction Event Handlers', () => { }), ); - await handleTransactionFinalized( + await handleTransactionFinalizedEventForMetrics( mockTransactionMeta, mockTransactionMetricRequest, ); diff --git a/app/core/Engine/controllers/transaction-controller/transaction-event-handlers.ts b/app/core/Engine/controllers/transaction-controller/event-handlers/metrics.ts similarity index 69% rename from app/core/Engine/controllers/transaction-controller/transaction-event-handlers.ts rename to app/core/Engine/controllers/transaction-controller/event-handlers/metrics.ts index 8683285584b1..d6a4d6e7928b 100644 --- a/app/core/Engine/controllers/transaction-controller/transaction-event-handlers.ts +++ b/app/core/Engine/controllers/transaction-controller/event-handlers/metrics.ts @@ -1,18 +1,18 @@ import { merge } from 'lodash'; import type { TransactionMeta } from '@metamask/transaction-controller'; -import { TRANSACTION_EVENTS } from '../../../Analytics/events/confirmations'; +import { TRANSACTION_EVENTS } from '../../../../Analytics/events/confirmations'; -import { selectShouldUseSmartTransaction } from '../../../../selectors/smartTransactionsController'; -import { getSmartTransactionMetricsProperties } from '../../../../util/smart-transactions'; -import { MetaMetrics } from '../../../Analytics'; -import { BaseControllerMessenger } from '../../types'; -import { generateDefaultTransactionMetrics, generateEvent } from './utils'; -import type { TransactionEventHandlerRequest } from './types'; +import { selectShouldUseSmartTransaction } from '../../../../../selectors/smartTransactionsController'; +import { getSmartTransactionMetricsProperties } from '../../../../../util/smart-transactions'; +import { MetaMetrics } from '../../../../Analytics'; +import { BaseControllerMessenger } from '../../../types'; +import { generateDefaultTransactionMetrics, generateEvent } from '../utils'; +import type { TransactionEventHandlerRequest } from '../types'; // Generic handler for simple transaction events -const createTransactionEventHandler = ( - eventType: (typeof TRANSACTION_EVENTS)[keyof typeof TRANSACTION_EVENTS], -) => ( +const createTransactionEventHandler = + (eventType: (typeof TRANSACTION_EVENTS)[keyof typeof TRANSACTION_EVENTS]) => + ( transactionMeta: TransactionMeta, transactionEventHandlerRequest: TransactionEventHandlerRequest, ) => { @@ -28,23 +28,23 @@ const createTransactionEventHandler = ( }; // Simple handlers - no unique properties / actions -export const handleTransactionAdded = createTransactionEventHandler( +export const handleTransactionAddedEventForMetrics = createTransactionEventHandler( TRANSACTION_EVENTS.TRANSACTION_ADDED, ); -export const handleTransactionApproved = createTransactionEventHandler( +export const handleTransactionApprovedEventForMetrics = createTransactionEventHandler( TRANSACTION_EVENTS.TRANSACTION_APPROVED, ); -export const handleTransactionRejected = createTransactionEventHandler( +export const handleTransactionRejectedEventForMetrics = createTransactionEventHandler( TRANSACTION_EVENTS.TRANSACTION_REJECTED, ); -export const handleTransactionSubmitted = createTransactionEventHandler( +export const handleTransactionSubmittedEventForMetrics = createTransactionEventHandler( TRANSACTION_EVENTS.TRANSACTION_SUBMITTED, ); // Intentionally using TRANSACTION_FINALIZED for confirmed/failed/dropped transactions // as unified type for all finalized transactions. // Status could be derived from transactionMeta.status -export async function handleTransactionFinalized( +export async function handleTransactionFinalizedEventForMetrics( transactionMeta: TransactionMeta, transactionEventHandlerRequest: TransactionEventHandlerRequest, ) { diff --git a/app/core/Engine/controllers/transaction-controller/event-handlers/notification.test.ts b/app/core/Engine/controllers/transaction-controller/event-handlers/notification.test.ts new file mode 100644 index 000000000000..338a86d4b380 --- /dev/null +++ b/app/core/Engine/controllers/transaction-controller/event-handlers/notification.test.ts @@ -0,0 +1,67 @@ +import { + TransactionType, + type TransactionMeta, +} from '@metamask/transaction-controller'; +import { handleShowNotification } from './notification'; +import NotificationManager from '../../../../NotificationManager'; + +jest.mock('../../../../NotificationManager', () => ({ + watchSubmittedTransaction: jest.fn(), +})); + +describe('handleShowNotification', () => { + beforeEach(() => { + jest.clearAllMocks(); + }); + + it('call watchSubmittedTransaction for redesigned transaction types', () => { + const transactionMeta = { + type: TransactionType.stakingDeposit, + id: '123', + status: 'submitted', + time: Date.now(), + transaction: {}, + } as unknown as TransactionMeta; + + handleShowNotification(transactionMeta); + + expect(NotificationManager.watchSubmittedTransaction).toHaveBeenCalledWith( + transactionMeta, + ); + expect(NotificationManager.watchSubmittedTransaction).toHaveBeenCalledTimes( + 1, + ); + }); + + it('not call watchSubmittedTransaction for non-redesigned transaction types', () => { + const transactionMeta = { + type: TransactionType.cancel, + id: '123', + status: 'submitted', + time: Date.now(), + transaction: {}, + } as unknown as TransactionMeta; + + handleShowNotification(transactionMeta); + + expect( + NotificationManager.watchSubmittedTransaction, + ).not.toHaveBeenCalled(); + }); + + it('handle undefined transaction type', () => { + const transactionMeta = { + type: undefined, + id: '123', + status: 'submitted', + time: Date.now(), + transaction: {}, + } as unknown as TransactionMeta; + + handleShowNotification(transactionMeta); + + expect( + NotificationManager.watchSubmittedTransaction, + ).not.toHaveBeenCalled(); + }); +}); diff --git a/app/core/Engine/controllers/transaction-controller/event-handlers/notification.ts b/app/core/Engine/controllers/transaction-controller/event-handlers/notification.ts new file mode 100644 index 000000000000..ba71ee6ea8ff --- /dev/null +++ b/app/core/Engine/controllers/transaction-controller/event-handlers/notification.ts @@ -0,0 +1,16 @@ +import { + TransactionType, + type TransactionMeta, +} from '@metamask/transaction-controller'; +import NotificationManager from '../../../../NotificationManager'; +import { REDESIGNED_TRANSACTION_TYPES } from '../../../../../components/Views/confirmations/hooks/useConfirmationRedesignEnabled'; + +export function handleShowNotification(transactionMeta: TransactionMeta) { + if ( + REDESIGNED_TRANSACTION_TYPES.includes( + transactionMeta.type as TransactionType, + ) + ) { + NotificationManager.watchSubmittedTransaction(transactionMeta); + } +} diff --git a/app/core/Engine/controllers/transaction-controller/transaction-controller-init.test.ts b/app/core/Engine/controllers/transaction-controller/transaction-controller-init.test.ts index 6eb93b0872a6..313640df703d 100644 --- a/app/core/Engine/controllers/transaction-controller/transaction-controller-init.test.ts +++ b/app/core/Engine/controllers/transaction-controller/transaction-controller-init.test.ts @@ -17,19 +17,19 @@ import { TransactionControllerInitMessenger } from '../../messengers/transaction import { ControllerInitRequest } from '../../types'; import { TransactionControllerInit } from './transaction-controller-init'; import { - handleTransactionAdded, - handleTransactionApproved, - handleTransactionFinalized, - handleTransactionRejected, - handleTransactionSubmitted, -} from './transaction-event-handlers'; + handleTransactionAddedEventForMetrics, + handleTransactionApprovedEventForMetrics, + handleTransactionFinalizedEventForMetrics, + handleTransactionRejectedEventForMetrics, + handleTransactionSubmittedEventForMetrics, +} from './event-handlers/metrics'; jest.mock('@metamask/transaction-controller'); jest.mock('../../../../reducers/swaps'); jest.mock('../../../../selectors/smartTransactionsController'); jest.mock('../../../../util/networks/global-network'); jest.mock('../../../../util/smart-transactions/smart-publish-hook'); -jest.mock('./transaction-event-handlers'); +jest.mock('./event-handlers/metrics'); /** * Build a mock NetworkController. @@ -89,15 +89,21 @@ describe('Transaction Controller Init', () => { selectSwapsChainFeatureFlags, ); const getGlobalChainIdMock = jest.mocked(getGlobalChainId); - const handleTransactionApprovedMock = jest.mocked(handleTransactionApproved); - const handleTransactionFinalizedMock = jest.mocked( - handleTransactionFinalized, + const handleTransactionApprovedEventForMetricsMock = jest.mocked( + handleTransactionApprovedEventForMetrics, ); - const handleTransactionRejectedMock = jest.mocked(handleTransactionRejected); - const handleTransactionSubmittedMock = jest.mocked( - handleTransactionSubmitted, + const handleTransactionFinalizedEventForMetricsMock = jest.mocked( + handleTransactionFinalizedEventForMetrics, + ); + const handleTransactionRejectedEventForMetricsMock = jest.mocked( + handleTransactionRejectedEventForMetrics, + ); + const handleTransactionSubmittedEventForMetricsMock = jest.mocked( + handleTransactionSubmittedEventForMetrics, + ); + const handleTransactionAddedEventForMetricsMock = jest.mocked( + handleTransactionAddedEventForMetrics, ); - const handleTransactionAddedMock = jest.mocked(handleTransactionAdded); /** * Extract a constructor option passed to the controller. @@ -323,38 +329,45 @@ describe('Transaction Controller Init', () => { const eventHandlerMap = [ { event: 'TransactionController:transactionApproved', - handler: handleTransactionApprovedMock, + handler: handleTransactionApprovedEventForMetricsMock, payload: { transactionMeta: mockTransactionMeta }, + expectedArgs: [mockTransactionMeta, handlerContext], }, { event: 'TransactionController:transactionConfirmed', - handler: handleTransactionFinalizedMock, + handler: handleTransactionFinalizedEventForMetricsMock, payload: mockTransactionMeta, + expectedArgs: [mockTransactionMeta, handlerContext], }, { event: 'TransactionController:transactionDropped', - handler: handleTransactionFinalizedMock, + handler: handleTransactionFinalizedEventForMetricsMock, payload: { transactionMeta: mockTransactionMeta }, + expectedArgs: [mockTransactionMeta, handlerContext], }, { event: 'TransactionController:transactionFailed', - handler: handleTransactionFinalizedMock, + handler: handleTransactionFinalizedEventForMetricsMock, payload: { transactionMeta: mockTransactionMeta }, + expectedArgs: [mockTransactionMeta, handlerContext], }, { event: 'TransactionController:transactionRejected', - handler: handleTransactionRejectedMock, + handler: handleTransactionRejectedEventForMetricsMock, payload: { transactionMeta: mockTransactionMeta }, + expectedArgs: [mockTransactionMeta, handlerContext], }, { event: 'TransactionController:transactionSubmitted', - handler: handleTransactionSubmittedMock, + handler: handleTransactionSubmittedEventForMetricsMock, payload: { transactionMeta: mockTransactionMeta }, + expectedArgs: [mockTransactionMeta, handlerContext], }, { event: 'TransactionController:unapprovedTransactionAdded', - handler: handleTransactionAddedMock, + handler: handleTransactionAddedEventForMetricsMock, payload: mockTransactionMeta, + expectedArgs: [mockTransactionMeta, handlerContext], }, ]; @@ -362,9 +375,9 @@ describe('Transaction Controller Init', () => { expect(Object.keys(subscribeCallbacks).length).toBe(eventHandlerMap.length); // Test each event handler - eventHandlerMap.forEach(({ event, handler, payload }) => { + eventHandlerMap.forEach(({ event, handler, payload, expectedArgs }) => { subscribeCallbacks[event](payload); - expect(handler).toHaveBeenCalledWith(mockTransactionMeta, handlerContext); + expect(handler).toHaveBeenCalledWith(...expectedArgs); }); }); }); diff --git a/app/core/Engine/controllers/transaction-controller/transaction-controller-init.ts b/app/core/Engine/controllers/transaction-controller/transaction-controller-init.ts index 4fbcea115b1d..97916b2929d4 100644 --- a/app/core/Engine/controllers/transaction-controller/transaction-controller-init.ts +++ b/app/core/Engine/controllers/transaction-controller/transaction-controller-init.ts @@ -18,13 +18,6 @@ import { submitSmartTransactionHook, type SubmitSmartTransactionRequest, } from '../../../../util/smart-transactions/smart-publish-hook'; -import { - handleTransactionAdded, - handleTransactionApproved, - handleTransactionFinalized, - handleTransactionRejected, - handleTransactionSubmitted, -} from './transaction-event-handlers'; import type { RootState } from '../../../../reducers'; import { TransactionControllerInitMessenger } from '../../messengers/transaction-controller-messenger'; import type { @@ -32,6 +25,14 @@ import type { ControllerInitRequest, } from '../../types'; import type { TransactionEventHandlerRequest } from './types'; +import { + handleTransactionApprovedEventForMetrics, + handleTransactionRejectedEventForMetrics, + handleTransactionSubmittedEventForMetrics, + handleTransactionAddedEventForMetrics, + handleTransactionFinalizedEventForMetrics, +} from './event-handlers/metrics'; +import { handleShowNotification } from './event-handlers/notification'; export const TransactionControllerInit: ControllerInitFunction< TransactionController, @@ -195,7 +196,14 @@ function addTransactionControllerListeners( initMessenger.subscribe( 'TransactionController:transactionApproved', ({ transactionMeta }: { transactionMeta: TransactionMeta }) => { - handleTransactionApproved( + handleShowNotification(transactionMeta); + }, + ); + + initMessenger.subscribe( + 'TransactionController:transactionApproved', + ({ transactionMeta }: { transactionMeta: TransactionMeta }) => { + handleTransactionApprovedEventForMetrics( transactionMeta, transactionEventHandlerRequest, ); @@ -205,7 +213,7 @@ function addTransactionControllerListeners( initMessenger.subscribe( 'TransactionController:transactionConfirmed', (transactionMeta: TransactionMeta) => { - handleTransactionFinalized( + handleTransactionFinalizedEventForMetrics( transactionMeta, transactionEventHandlerRequest, ); @@ -215,7 +223,7 @@ function addTransactionControllerListeners( initMessenger.subscribe( 'TransactionController:transactionDropped', ({ transactionMeta }: { transactionMeta: TransactionMeta }) => { - handleTransactionFinalized( + handleTransactionFinalizedEventForMetrics( transactionMeta, transactionEventHandlerRequest, ); @@ -225,7 +233,7 @@ function addTransactionControllerListeners( initMessenger.subscribe( 'TransactionController:transactionFailed', ({ transactionMeta }: { transactionMeta: TransactionMeta }) => { - handleTransactionFinalized( + handleTransactionFinalizedEventForMetrics( transactionMeta, transactionEventHandlerRequest, ); @@ -235,7 +243,7 @@ function addTransactionControllerListeners( initMessenger.subscribe( 'TransactionController:transactionRejected', ({ transactionMeta }: { transactionMeta: TransactionMeta }) => { - handleTransactionRejected( + handleTransactionRejectedEventForMetrics( transactionMeta, transactionEventHandlerRequest, ); @@ -245,7 +253,7 @@ function addTransactionControllerListeners( initMessenger.subscribe( 'TransactionController:transactionSubmitted', ({ transactionMeta }: { transactionMeta: TransactionMeta }) => { - handleTransactionSubmitted( + handleTransactionSubmittedEventForMetrics( transactionMeta, transactionEventHandlerRequest, ); @@ -255,7 +263,10 @@ function addTransactionControllerListeners( initMessenger.subscribe( 'TransactionController:unapprovedTransactionAdded', (transactionMeta: TransactionMeta) => { - handleTransactionAdded(transactionMeta, transactionEventHandlerRequest); + handleTransactionAddedEventForMetrics( + transactionMeta, + transactionEventHandlerRequest, + ); }, ); } From 2e302f03cfa7b1d85264f7150856398beeaa7534 Mon Sep 17 00:00:00 2001 From: "runway-github[bot]" <73448015+runway-github[bot]@users.noreply.github.com> Date: Tue, 8 Apr 2025 17:20:59 +0200 Subject: [PATCH 107/473] chore(runway): cherry-pick c804616 (#14509) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - build: add resolution for metro/image-size (#14482) ## **Description** Adds a resolution for `metro/image-size`. This package is used by `@react-native/metro-config`. DEV NOTE - this is a dev dependency, why is it being picked up? Are we using this in our application code somewhere? ## **Related issues** Fixes: https://github.com/advisories/GHSA-m5qc-5hw7-8vg7 ## **Manual testing steps** Test to ensure the app correctly bundles and runs. ## **Screenshots/Recordings** <!-- If applicable, add screenshots and/or recordings to visualize the before and after of your change. --> ### **Before** <!-- [screenshots/recordings] --> ### **After** <!-- [screenshots/recordings] --> ## **Pre-merge author checklist** - [ ] I’ve followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile Coding Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [ ] I've completed the PR template to the best of my ability - [ ] I’ve included tests if applicable - [ ] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [ ] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. ## **Pre-merge reviewer checklist** - [ ] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [ ] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots. [c804616](https://github.com/MetaMask/metamask-mobile/commit/c804616cd262ae2e228429861d4a3b8b84f90197) Co-authored-by: Prithpal Sooriya <prithpal.sooriya@consensys.net> --- package.json | 3 ++- yarn.lock | 8 ++++---- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 4e069d124574..f91f1d24e157 100644 --- a/package.json +++ b/package.json @@ -144,7 +144,8 @@ "nanoid": "^3.3.8", "undici": "5.28.5", "**/@ethersproject/signing-key/elliptic": "^6.6.1", - "**/@walletconnect/utils/elliptic": "^6.6.1" + "**/@walletconnect/utils/elliptic": "^6.6.1", + "metro/image-size": "^1.2.1" }, "dependencies": { "@config-plugins/detox": "^8.0.0", diff --git a/yarn.lock b/yarn.lock index 81b0925188da..efbe07ae5806 100644 --- a/yarn.lock +++ b/yarn.lock @@ -18660,10 +18660,10 @@ ignore@^5.0.5, ignore@^5.2.0, ignore@^5.2.4, ignore@^5.3.1: resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.2.tgz#3cd40e729f3643fd87cb04e50bf0eb722bc596f5" integrity sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g== -image-size@^1.0.2: - version "1.1.1" - resolved "https://registry.yarnpkg.com/image-size/-/image-size-1.1.1.tgz#ddd67d4dc340e52ac29ce5f546a09f4e29e840ac" - integrity sha512-541xKlUw6jr/6gGuk92F+mYM5zaFAc5ahphvkqvNe2bQ6gVBkd6bfrmVJ2t4KDAfikAYZyIqTnktX3i6/aQDrQ== +image-size@^1.0.2, image-size@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/image-size/-/image-size-1.2.1.tgz#ee118aedfe666db1a6ee12bed5821cde3740276d" + integrity sha512-rH+46sQJ2dlwfjfhCyNx5thzrv+dtmBIhPHk0zgRUukHzZ/kRueTJXoYYsclBaKcSMBWuGbOFXtioLpzTb5euw== dependencies: queue "6.0.2" From 00d1f98f55df99702fe803ee26fbebe9052b2274 Mon Sep 17 00:00:00 2001 From: Owen Craston <owen.craston@consensys.net> Date: Tue, 8 Apr 2025 14:43:05 -0700 Subject: [PATCH 108/473] fix: SDK Connection when multichain account is selected (cherry pick from #14494) (#14522) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit # Description This PR addresses an issue reported by @christopherferreira9. When connecting to the MetaMask SDK while your current selected account is a multichain account (solana, bitcoin etc), the AccountConnect component would not provide an account to be connected. The connect button was not disabled so when a user would press connect, it would fail since no account was selected. My solution is... 1. create a new selector called `selectPreviouslySelectedEvmAccount` which returns the previously selected EVM account 2. in the AccountConnect component, if the current chainId is non evm, set the initial selected account to the previously selected EVM account. 3. The result is, when the user tries to connect to the SDK while their currently selected account is a Solana account, the user would still be prompted to connect their EVM account. 4. Users can connect multi non evm accounts by clicking the "connect multiple accounts" button which will only show their EVM accounts. Fixes: https://github.com/MetaMask/metamask-mobile/issues/14426 Fixes https://github.com/MetaMask/metamask-mobile/issues/14427 1. edit the `.js.env` file such that the METAMASK_BUILD_TYPE is set to `beta` 2. `yarn setup` 3. Build the branch on a real Physical device. Easiest option is to build the app using expo via runway. docs on this can be found here: https://github.com/MetaMask/metamask-mobile?tab=readme-ov-file#for-internal-developers 5. Select Solana in the wallet 6. Open [this dapp](https://metamask.github.io/metamask-sdk/release-110.0.0/packages/examples/react-demo/build/index.html) on your desktop browser 7. Click connect on the dapp 8. Scan the QR Code with MetaMask -> The connection modal presents no accounts 9. Accepting on this modal rejects the connection (see dapp console) <!-- If applicable, add screenshots and/or recordings to visualize the before and after of your change. --> <img width="339" alt="Screenshot 2025-04-07 at 7 11 29 PM" src="https://github.com/user-attachments/assets/13e69ca9-1950-46bd-a3ed-9bac1410f90e" /> https://github.com/user-attachments/assets/7a1f1c8d-fee2-4a66-960d-ece10f2adae2 <image src="https://github.com/user-attachments/assets/a659e4c5-6772-4bb4-979e-4d1347c5d01a" height="500" width="250" /> https://github.com/user-attachments/assets/36135b80-60f7-4299-9d56-0d113f24bdc7 https://github.com/user-attachments/assets/cf246473-d70b-4fca-b533-3049f35358e4 - [ ] I’ve followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile Coding Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [ ] I've completed the PR template to the best of my ability - [ ] I’ve included tests if applicable - [ ] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [ ] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. - [ ] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [ ] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots. --- .../AccountConnect/AccountConnect.test.tsx | 125 ++++++-- .../Views/AccountConnect/AccountConnect.tsx | 17 +- .../AccountConnect.test.tsx.snap | 299 ++++++++++-------- app/selectors/accountsController.test.ts | 253 +++++++++++++++ app/selectors/accountsController.ts | 36 ++- 5 files changed, 562 insertions(+), 168 deletions(-) diff --git a/app/components/Views/AccountConnect/AccountConnect.test.tsx b/app/components/Views/AccountConnect/AccountConnect.test.tsx index fe773dc887ec..0a48e12dac9f 100644 --- a/app/components/Views/AccountConnect/AccountConnect.test.tsx +++ b/app/components/Views/AccountConnect/AccountConnect.test.tsx @@ -8,6 +8,11 @@ import { RootState } from '../../../reducers'; import { fireEvent } from '@testing-library/react-native'; import AccountConnectMultiSelector from './AccountConnectMultiSelector/AccountConnectMultiSelector'; import Engine from '../../../core/Engine'; +import { + createMockAccountsControllerState as createMockAccountsControllerStateUtil, + MOCK_ADDRESS_1 as mockAddress1, + MOCK_ADDRESS_2 as mockAddress2, +} from '../../../util/test/accountsControllerTestUtils'; const mockedNavigate = jest.fn(); const mockedGoBack = jest.fn(); @@ -49,20 +54,36 @@ jest.mock('react-native-safe-area-context', () => { }; }); -jest.mock('../../../core/Engine', () => ({ - context: { - PhishingController: { - maybeUpdateState: jest.fn(), - test: jest.fn((url: string) => { - if (url === 'phishing.com') return { result: true }; - return { result: false }; - }), - }, - PermissionController: { - rejectPermissionsRequest: jest.fn(), +jest.mock('../../../core/Engine', () => { + const { + createMockAccountsControllerState, + MOCK_ADDRESS_1, + MOCK_ADDRESS_2, + // eslint-disable-next-line @typescript-eslint/no-require-imports, @typescript-eslint/no-var-requires + } = require('../../../util/test/accountsControllerTestUtils'); + const mockAccountsState = createMockAccountsControllerState( + [MOCK_ADDRESS_1, MOCK_ADDRESS_2], + MOCK_ADDRESS_1, + ); + + return { + context: { + PhishingController: { + maybeUpdateState: jest.fn(), + test: jest.fn((url: string) => { + if (url === 'phishing.com') return { result: true }; + return { result: false }; + }), + }, + PermissionController: { + rejectPermissionsRequest: jest.fn(), + }, + AccountsController: { + state: mockAccountsState, + }, }, - }, -})); + }; +}); const mockRemoveChannel = jest.fn(); @@ -79,11 +100,45 @@ jest.mock('../../../core/SDKConnect/utils/isUUID', () => ({ isUUID: () => false, })); +// Mock useAccounts to return test accounts +jest.mock('../../hooks/useAccounts', () => ({ + useAccounts: jest.fn(() => ({ + evmAccounts: [ + { + address: mockAddress1, + name: 'Account 1', + }, + { + address: mockAddress2, + name: 'Account 2', + }, + ], + ensByAccountAddress: {}, + })), +})); + +// Setup test state with proper account data const mockInitialState: DeepPartial<RootState> = { settings: {}, engine: { backgroundState: { ...backgroundState, + AccountsController: createMockAccountsControllerStateUtil( + [mockAddress2, mockAddress2], + mockAddress1, + ), + NetworkController: { + networkConfigurationsByChainId: { + '0x1': { + chainId: '0x1', + name: 'Ethereum', + rpcEndpoints: [{ url: 'https://mainnet.infura.io/v3/test' }], + blockExplorerUrls: ['https://etherscan.io'], + nativeCurrency: 'ETH', + }, + }, + selectedNetworkClientId: '1', + }, }, }, }; @@ -112,6 +167,7 @@ describe('AccountConnect', () => { { state: mockInitialState }, ); + // Create a new snapshot since the component UI has changed expect(toJSON()).toMatchSnapshot(); }); @@ -176,30 +232,31 @@ describe('AccountConnect', () => { }); describe('AccountConnectMultiSelector handlers', () => { - it('should handle onPrimaryActionButtonPress correctly', () => { + it('invokes onPrimaryActionButtonPress property and renders permissions summary', async () => { // Render the container component with necessary props - const { getByTestId, UNSAFE_getByType } = renderWithProvider( - <AccountConnect - route={{ - params: { - hostInfo: { - metadata: { - id: 'mockId', - // Using a valid URL format to ensure PermissionsSummary renders first - origin: 'https://example.com', - }, - permissions: { - eth_accounts: { - parentCapability: 'eth_accounts', + const { getByTestId, UNSAFE_getByType, findByTestId } = + renderWithProvider( + <AccountConnect + route={{ + params: { + hostInfo: { + metadata: { + id: 'mockId', + // Using a valid URL format to ensure PermissionsSummary renders first + origin: 'https://example.com', + }, + permissions: { + eth_accounts: { + parentCapability: 'eth_accounts', + }, }, }, + permissionRequestId: 'test', }, - permissionRequestId: 'test', - }, - }} - />, - { state: mockInitialState }, - ); + }} + />, + { state: mockInitialState }, + ); // First find and click the edit button on PermissionsSummary to show MultiSelector const editButton = getByTestId('permission-summary-container'); @@ -212,7 +269,7 @@ describe('AccountConnect', () => { multiSelector.props.onPrimaryActionButtonPress(); // Verify that the screen changed back to PermissionsSummary - expect(getByTestId('permission-summary-container')).toBeDefined(); + expect(await findByTestId('permission-summary-container')).toBeDefined(); }); }); diff --git a/app/components/Views/AccountConnect/AccountConnect.tsx b/app/components/Views/AccountConnect/AccountConnect.tsx index 6a2148f2b317..23347e40f1d1 100644 --- a/app/components/Views/AccountConnect/AccountConnect.tsx +++ b/app/components/Views/AccountConnect/AccountConnect.tsx @@ -28,6 +28,7 @@ import Engine from '../../../core/Engine'; import { selectAccountsLength } from '../../../selectors/accountTrackerController'; import { selectInternalAccounts, + selectPreviouslySelectedEvmAccount, selectSelectedInternalAccountFormattedAddress, } from '../../../selectors/accountsController'; import { isDefaultAccountName } from '../../../util/ENSUtils'; @@ -82,6 +83,7 @@ import { selectEvmNetworkConfigurationsByChainId } from '../../../selectors/netw import { isUUID } from '../../../core/SDKConnect/utils/isUUID'; import useOriginSource from '../../hooks/useOriginSource'; import { selectIsEvmNetworkSelected } from '../../../selectors/multichainNetworkController'; +import { getFormattedAddressFromInternalAccount } from '../../../core/Multichain/utils'; const createStyles = () => StyleSheet.create({ @@ -104,10 +106,21 @@ const AccountConnect = (props: AccountConnectProps) => { selectSelectedInternalAccountFormattedAddress, ); - const isEvmSelected = useSelector(selectIsEvmNetworkSelected); + const previouslySelectedEvmAccount = useSelector( + selectPreviouslySelectedEvmAccount, + ); + const isEvmSelected = useSelector(selectIsEvmNetworkSelected); const [selectedAddresses, setSelectedAddresses] = useState<string[]>( - selectedWalletAddress && isEvmSelected ? [selectedWalletAddress] : [], + selectedWalletAddress && isEvmSelected + ? [selectedWalletAddress] + : [ + previouslySelectedEvmAccount + ? getFormattedAddressFromInternalAccount( + previouslySelectedEvmAccount, + ) + : '', + ], ); const [confirmedAddresses, setConfirmedAddresses] = useState<string[]>(selectedAddresses); diff --git a/app/components/Views/AccountConnect/__snapshots__/AccountConnect.test.tsx.snap b/app/components/Views/AccountConnect/__snapshots__/AccountConnect.test.tsx.snap index 3f70d6ba37cf..908c4f47a0fa 100644 --- a/app/components/Views/AccountConnect/__snapshots__/AccountConnect.test.tsx.snap +++ b/app/components/Views/AccountConnect/__snapshots__/AccountConnect.test.tsx.snap @@ -361,7 +361,7 @@ exports[`AccountConnect renders correctly 1`] = ` } } > - Connect an account + Requesting for Account 2 </Text> </Text> </View> @@ -373,7 +373,169 @@ exports[`AccountConnect renders correctly 1`] = ` "minWidth": "25%", } } - /> + > + <View + style={ + { + "alignItems": "center", + "flexDirection": "row", + } + } + > + <View + style={ + { + "marginLeft": 0, + } + } + testID="avatargroup-avatar-container-0" + > + <View + style={ + { + "backgroundColor": "#ffffff", + "borderColor": "#ffffff", + "borderRadius": 8, + "borderWidth": 1.5, + "height": 16, + "overflow": "hidden", + "width": 16, + } + } + testID="avatargroup-avatar" + > + <View + style={ + [ + { + "overflow": "hidden", + }, + { + "backgroundColor": "#FC4800", + "borderRadius": 8, + "height": 16, + "width": 16, + }, + undefined, + ] + } + > + <RNSVGSvgView + bbHeight={16} + bbWidth={16} + focusable={false} + height={16} + style={ + [ + { + "backgroundColor": "transparent", + "borderWidth": 0, + }, + { + "flex": 0, + "height": 16, + "width": 16, + }, + ] + } + width={16} + > + <RNSVGGroup + fill={ + { + "payload": 4278190080, + "type": 0, + } + } + > + <RNSVGRect + fill={ + { + "payload": 4278291575, + "type": 0, + } + } + height={16} + matrix={ + [ + -0.41310442982454204, + -0.910683660806177, + 0.910683660806177, + -0.41310442982454204, + 4.404802817153955, + 20.16808402411075, + ] + } + propList={ + [ + "fill", + ] + } + width={16} + x={0} + y={0} + /> + <RNSVGRect + fill={ + { + "payload": 4278410587, + "type": 0, + } + } + height={16} + matrix={ + [ + 0.903335292863301, + -0.42893513340314526, + 0.42893513340314526, + 0.903335292863301, + -9.297010789302583, + 3.362634662066926, + ] + } + propList={ + [ + "fill", + ] + } + width={16} + x={0} + y={0} + /> + <RNSVGRect + fill={ + { + "payload": 4294382337, + "type": 0, + } + } + height={16} + matrix={ + [ + -0.6921431738704069, + -0.7217602280983622, + 0.7217602280983622, + -0.6921431738704069, + -6.169639630140347, + 15.20799235933167, + ] + } + propList={ + [ + "fill", + ] + } + width={16} + x={0} + y={0} + /> + </RNSVGGroup> + </RNSVGSvgView> + </View> + </View> + </View> + </View> + </View> </View> </View> <View @@ -515,7 +677,7 @@ exports[`AccountConnect renders correctly 1`] = ` } } > - Requesting for 4 networks + Requesting for Ethereum </Text> </Text> </View> @@ -574,120 +736,6 @@ exports[`AccountConnect renders correctly 1`] = ` /> </View> </View> - <View - style={ - { - "marginLeft": -6, - } - } - testID="avatargroup-avatar-container-1" - > - <View - style={ - { - "alignItems": "center", - "backgroundColor": "#ffffff", - "borderColor": "#ffffff", - "borderRadius": 8, - "borderWidth": 1.5, - "height": 16, - "justifyContent": "center", - "overflow": "hidden", - "width": 16, - } - } - testID="avatargroup-avatar" - > - <Image - onError={[Function]} - resizeMode="contain" - source={1} - style={ - { - "height": 16, - "width": 16, - } - } - testID="network-avatar-image" - /> - </View> - </View> - <View - style={ - { - "marginLeft": -6, - } - } - testID="avatargroup-avatar-container-2" - > - <View - style={ - { - "alignItems": "center", - "backgroundColor": "#ffffff", - "borderColor": "#ffffff", - "borderRadius": 8, - "borderWidth": 1.5, - "height": 16, - "justifyContent": "center", - "overflow": "hidden", - "width": 16, - } - } - testID="avatargroup-avatar" - > - <Image - onError={[Function]} - resizeMode="contain" - source={1} - style={ - { - "height": 16, - "width": 16, - } - } - testID="network-avatar-image" - /> - </View> - </View> - <View - style={ - { - "marginLeft": -6, - } - } - testID="avatargroup-avatar-container-3" - > - <View - style={ - { - "alignItems": "center", - "backgroundColor": "#ffffff", - "borderColor": "#ffffff", - "borderRadius": 8, - "borderWidth": 1.5, - "height": 16, - "justifyContent": "center", - "overflow": "hidden", - "width": 16, - } - } - testID="avatargroup-avatar" - > - <Image - onError={[Function]} - resizeMode="contain" - source={1} - style={ - { - "height": 16, - "width": 16, - } - } - testID="network-avatar-image" - /> - </View> - </View> </View> </View> </View> @@ -804,8 +852,9 @@ exports[`AccountConnect renders correctly 1`] = ` <TouchableOpacity accessibilityRole="button" accessible={true} - activeOpacity={1} - disabled={true} + activeOpacity={0.2} + disabled={false} + onPress={[Function]} style={ [ [ @@ -827,9 +876,7 @@ exports[`AccountConnect renders correctly 1`] = ` }, ], ], - { - "opacity": 0.6, - }, + null, ] } testID="connect-button" @@ -843,9 +890,7 @@ exports[`AccountConnect renders correctly 1`] = ` "fontWeight": "500", "textAlign": "center", }, - { - "color": "#dcdcdc", - }, + null, [ { "fontFamily": "EuclidCircularB-Bold", @@ -858,9 +903,7 @@ exports[`AccountConnect renders correctly 1`] = ` }, undefined, ], - { - "opacity": 0.6, - }, + null, ] } > diff --git a/app/selectors/accountsController.test.ts b/app/selectors/accountsController.test.ts index 0599f7128719..b2ab01d6de03 100644 --- a/app/selectors/accountsController.test.ts +++ b/app/selectors/accountsController.test.ts @@ -21,6 +21,7 @@ import { selectCanSignTransactions, selectSolanaAccountAddress, selectSolanaAccount, + selectPreviouslySelectedEvmAccount, } from './accountsController'; import { MOCK_ACCOUNTS_CONTROLLER_STATE, @@ -493,3 +494,255 @@ describe('selectCanSignTransactions', () => { expect(selectCanSignTransactions(state)).toBe(false); }); }); + +describe('selectPreviouslySelectedEvmAccount', () => { + // Helper to create an EVM account with a lastSelected timestamp + const createEvmAccountWithLastSelected = ( + address: string, + name: string, + lastSelectedTimestamp: number, + ): InternalAccount => { + const account = createMockInternalAccount( + address, + name, + KeyringTypes.hd, + EthAccountType.Eoa, + ); + + // Add lastSelected to metadata + return { + ...account, + metadata: { + ...account.metadata, + lastSelected: lastSelectedTimestamp, + }, + }; + }; + + it('returns the most recently selected EVM account based on lastSelected timestamp', () => { + const accountOldest = createEvmAccountWithLastSelected( + '0x111', + 'Oldest Account', + 1000, + ); + + const accountMiddle = createEvmAccountWithLastSelected( + '0x222', + 'Middle Account', + 2000, + ); + + const accountNewest = createEvmAccountWithLastSelected( + '0x333', + 'Newest Account', + 3000, + ); + + // Test state with all accounts + const state = { + engine: { + backgroundState: { + AccountsController: { + internalAccounts: { + accounts: { + [accountOldest.id]: accountOldest, + [accountMiddle.id]: accountMiddle, + [accountNewest.id]: accountNewest, + }, + selectedAccount: accountMiddle.id, // Currently selected doesn't affect the result + }, + }, + KeyringController: MOCK_KEYRING_CONTROLLER, + }, + }, + } as RootState; + expect(selectPreviouslySelectedEvmAccount(state)).toEqual(accountNewest); + }); + + it('handles EVM accounts without lastSelected timestamps', () => { + // Create one account with lastSelected timestamp + const accountWithTimestamp = createEvmAccountWithLastSelected( + '0x111', + 'Account With Timestamp', + 1000, + ); + + // Create another account without lastSelected timestamp + const accountWithoutTimestamp = createMockInternalAccount( + '0x222', + 'Account Without Timestamp', + KeyringTypes.hd, + EthAccountType.Eoa, + ); + + // Test state with both accounts + const state = { + engine: { + backgroundState: { + AccountsController: { + internalAccounts: { + accounts: { + [accountWithTimestamp.id]: accountWithTimestamp, + [accountWithoutTimestamp.id]: accountWithoutTimestamp, + }, + selectedAccount: accountWithoutTimestamp.id, + }, + }, + KeyringController: MOCK_KEYRING_CONTROLLER, + }, + }, + } as RootState; + + // Should return the account with timestamp as it's considered more recently selected + expect(selectPreviouslySelectedEvmAccount(state)).toEqual( + accountWithTimestamp, + ); + }); + + it('returns the first account when multiple EVM accounts exist but none have lastSelected timestamps', () => { + // Create multiple accounts without lastSelected timestamps + const account1 = createMockInternalAccount( + '0x111', + 'First Account', + KeyringTypes.hd, + EthAccountType.Eoa, + ); + + const account2 = createMockInternalAccount( + '0x222', + 'Second Account', + KeyringTypes.hd, + EthAccountType.Eoa, + ); + + const account3 = createMockInternalAccount( + '0x333', + 'Third Account', + KeyringTypes.hd, + EthAccountType.Eoa, + ); + + // Test state with all accounts + const state = { + engine: { + backgroundState: { + AccountsController: { + internalAccounts: { + accounts: { + [account1.id]: account1, + [account2.id]: account2, + [account3.id]: account3, + }, + selectedAccount: account2.id, + }, + }, + KeyringController: MOCK_KEYRING_CONTROLLER, + }, + }, + } as RootState; + + // The first account in the sorted list should be returned as they all have the same default timestamp (0) + const result = selectPreviouslySelectedEvmAccount(state); + expect(result).toEqual(account1); + }); + + it('only returns EVM accounts when mixed with non-EVM accounts', () => { + // Create a mix of EVM and non-EVM accounts with timestamps + const evmAccount = createEvmAccountWithLastSelected( + '0x111', + 'EVM Account', + 1000, + ); + + // Non-EVM accounts with higher timestamps that should be ignored + const solAccount = { + ...createMockInternalAccount( + 'solana_address_456', + 'Solana Account', + KeyringTypes.snap, + SolAccountType.DataAccount, + ), + metadata: { + name: 'Solana Account', + importTime: 1684232000456, + keyring: { type: KeyringTypes.snap }, + lastSelected: 2000, // Higher timestamp that should be ignored + }, + }; + + const btcAccount = { + ...createMockInternalAccount( + 'bc1q123xyz', + 'Bitcoin Account', + KeyringTypes.snap, + BtcAccountType.P2wpkh, + ), + metadata: { + name: 'Bitcoin Account', + importTime: 1684232000456, + keyring: { type: KeyringTypes.snap }, + lastSelected: 3000, // Highest timestamp that should be ignored + }, + }; + + // Test state with mixed accounts + const state = { + engine: { + backgroundState: { + AccountsController: { + internalAccounts: { + accounts: { + [evmAccount.id]: evmAccount, + [solAccount.id]: solAccount, + [btcAccount.id]: btcAccount, + }, + selectedAccount: solAccount.id, // Non-EVM account is currently selected + }, + }, + KeyringController: MOCK_KEYRING_CONTROLLER, + }, + }, + } as RootState; + + // Should return the EVM account even though non-EVM accounts have higher lastSelected timestamps + expect(selectPreviouslySelectedEvmAccount(state)).toEqual(evmAccount); + }); + + it('returns undefined when no EVM accounts exist', () => { + // Create only non-EVM accounts (Solana and Bitcoin) + const solAccount = createMockInternalAccount( + 'solana_address_456', + 'Solana Account', + KeyringTypes.snap, + SolAccountType.DataAccount, + ); + + const btcAccount = createMockInternalAccount( + 'bc1q123xyz', + 'Bitcoin Account', + KeyringTypes.snap, + BtcAccountType.P2wpkh, + ); + + // Test state with no EVM accounts + const state = { + engine: { + backgroundState: { + AccountsController: { + internalAccounts: { + accounts: { + [solAccount.id]: solAccount, + [btcAccount.id]: btcAccount, + }, + selectedAccount: solAccount.id, + }, + }, + KeyringController: MOCK_KEYRING_CONTROLLER, + }, + }, + } as RootState; + + // Should return undefined as there are no EVM accounts + expect(selectPreviouslySelectedEvmAccount(state)).toBeUndefined(); + }); +}); diff --git a/app/selectors/accountsController.ts b/app/selectors/accountsController.ts index 730f841af02e..141d415d14e7 100644 --- a/app/selectors/accountsController.ts +++ b/app/selectors/accountsController.ts @@ -4,7 +4,12 @@ import { createSelector } from 'reselect'; import { RootState } from '../reducers'; import { createDeepEqualSelector } from './util'; import { selectFlattenedKeyringAccounts } from './keyringController'; -import { BtcMethod, EthMethod, SolMethod } from '@metamask/keyring-api'; +import { + BtcMethod, + EthMethod, + SolMethod, + isEvmAccountType, +} from '@metamask/keyring-api'; import { InternalAccount } from '@metamask/keyring-internal-api'; import { getFormattedAddressFromInternalAccount, @@ -72,12 +77,35 @@ export const selectSelectedInternalAccount = createDeepEqualSelector( /** * A memoized selector that returns the selected internal account address in checksum format */ -export const selectSelectedInternalAccountFormattedAddress = createSelector( - selectSelectedInternalAccount, - (account) => +export const selectSelectedInternalAccountFormattedAddress = + createDeepEqualSelector(selectSelectedInternalAccount, (account) => account?.address ? getFormattedAddressFromInternalAccount(account) : undefined, + ); + +/** + * A memoized selector that returns the previously selected EVM account + */ +export const selectPreviouslySelectedEvmAccount = createDeepEqualSelector( + selectInternalAccounts, + (accounts) => { + const evmAccounts = accounts.filter((account) => + isEvmAccountType(account.type), + ); + + if (evmAccounts.length === 0) { + return undefined; + } + + const previouslySelectedEvmAccount = [...evmAccounts].sort((a, b) => { + const aTimestamp = a?.metadata?.lastSelected || 0; + const bTimestamp = b?.metadata?.lastSelected || 0; + return bTimestamp - aTimestamp; + })[0]; + + return previouslySelectedEvmAccount; + }, ); /** From 2143eece851b8e65092b1539d19ca98b3f175c07 Mon Sep 17 00:00:00 2001 From: "runway-github[bot]" <73448015+runway-github[bot]@users.noreply.github.com> Date: Wed, 9 Apr 2025 12:16:04 +0200 Subject: [PATCH 109/473] chore(runway): cherry-pick STAKE-1005 refresh staking data when staking txs are confirmed (#14541) - fix: cp-7.44.0 STAKE-1005 refresh staking data when staking txs are confirmed (#14520) --- .../StakingBanners/ClaimBanner/ClaimBanner.tsx | 9 ++------- .../FooterButtonGroup/FooterButtonGroup.tsx | 5 +---- app/core/Engine/Engine.ts | 1 + .../earn-controller-messenger/index.ts | 1 + package.json | 2 +- yarn.lock | 18 +++++++++--------- 6 files changed, 15 insertions(+), 21 deletions(-) diff --git a/app/components/UI/Stake/components/StakingBalance/StakingBanners/ClaimBanner/ClaimBanner.tsx b/app/components/UI/Stake/components/StakingBalance/StakingBanners/ClaimBanner/ClaimBanner.tsx index a7c1a0baabf2..5959fdfa4a54 100644 --- a/app/components/UI/Stake/components/StakingBalance/StakingBanners/ClaimBanner/ClaimBanner.tsx +++ b/app/components/UI/Stake/components/StakingBalance/StakingBanners/ClaimBanner/ClaimBanner.tsx @@ -47,10 +47,7 @@ const ClaimBanner = ({ claimableAmount, style }: StakeBannerProps) => { const [shouldAttemptClaim, setShouldAttemptClaim] = useState(false); const { attemptPoolStakedClaimTransaction } = usePoolStakedClaim(); const { stakingContract } = useStakeContext(); - const { - pooledStakesData, - refreshPooledStakes - } = usePooledStakes(); + const { pooledStakesData } = usePooledStakes(); const chainId = useSelector(selectEvmChainId); const { isStakingSupportedChain } = useStakingChain(); @@ -64,7 +61,7 @@ const ClaimBanner = ({ claimableAmount, style }: StakeBannerProps) => { useFocusEffect( useCallback(() => { setIsSubmittingClaimTransaction(false); - }, []) + }, []), ); const attemptClaim = useCallback(async () => { @@ -109,7 +106,6 @@ const ClaimBanner = ({ claimableAmount, style }: StakeBannerProps) => { Engine.controllerMessenger.subscribeOnceIf( 'TransactionController:transactionConfirmed', () => { - refreshPooledStakes(); setIsSubmittingClaimTransaction(false); }, (transactionMeta) => transactionMeta.id === transactionId, @@ -139,7 +135,6 @@ const ClaimBanner = ({ claimableAmount, style }: StakeBannerProps) => { attemptPoolStakedClaimTransaction, createEventBuilder, trackEvent, - refreshPooledStakes, claimableAmount, isStakingDepositRedesignedEnabled, navigation, diff --git a/app/components/UI/Stake/components/StakingConfirmation/ConfirmationFooter/FooterButtonGroup/FooterButtonGroup.tsx b/app/components/UI/Stake/components/StakingConfirmation/ConfirmationFooter/FooterButtonGroup/FooterButtonGroup.tsx index ec37e504eb94..6a8191fc5388 100644 --- a/app/components/UI/Stake/components/StakingConfirmation/ConfirmationFooter/FooterButtonGroup/FooterButtonGroup.tsx +++ b/app/components/UI/Stake/components/StakingConfirmation/ConfirmationFooter/FooterButtonGroup/FooterButtonGroup.tsx @@ -23,7 +23,6 @@ import { } from './FooterButtonGroup.types'; import Routes from '../../../../../../../constants/navigation/Routes'; import usePoolStakedUnstake from '../../../../hooks/usePoolStakedUnstake'; -import usePooledStakes from '../../../../hooks/usePooledStakes'; import { MetaMetricsEvents, useMetrics, @@ -66,7 +65,6 @@ const FooterButtonGroup = ({ valueWei, action }: FooterButtonGroupProps) => { const activeAccount = useSelector(selectSelectedInternalAccount); const { attemptDepositTransaction } = usePoolStakedDeposit(); - const { refreshPooledStakes } = usePooledStakes(); const { attemptUnstakeTransaction } = usePoolStakedUnstake(); @@ -143,12 +141,11 @@ const FooterButtonGroup = ({ valueWei, action }: FooterButtonGroupProps) => { 'TransactionController:transactionConfirmed', () => { submitTxMetaMetric(STAKING_TX_METRIC_EVENTS[action].CONFIRMED); - refreshPooledStakes(); }, (transactionMeta) => transactionMeta.id === transactionId, ); }, - [action, navigate, refreshPooledStakes, submitTxMetaMetric], + [action, navigate, submitTxMetaMetric], ); const handleConfirmation = async () => { diff --git a/app/core/Engine/Engine.ts b/app/core/Engine/Engine.ts index 9050bcdd7f71..aab187ac2689 100644 --- a/app/core/Engine/Engine.ts +++ b/app/core/Engine/Engine.ts @@ -1154,6 +1154,7 @@ export class Engine { allowedEvents: [ 'AccountsController:selectedAccountChange', 'NetworkController:stateChange', + 'TransactionController:transactionConfirmed', ], allowedActions: [ 'AccountsController:getSelectedAccount', diff --git a/app/core/Engine/messengers/earn-controller-messenger/index.ts b/app/core/Engine/messengers/earn-controller-messenger/index.ts index 50e9d34be25d..73361785b3be 100644 --- a/app/core/Engine/messengers/earn-controller-messenger/index.ts +++ b/app/core/Engine/messengers/earn-controller-messenger/index.ts @@ -15,6 +15,7 @@ export function getEarnControllerMessenger( allowedEvents: [ 'AccountsController:selectedAccountChange', 'NetworkController:stateChange', + 'TransactionController:transactionConfirmed', ], allowedActions: [ 'AccountsController:getSelectedAccount', diff --git a/package.json b/package.json index f91f1d24e157..05402687b6e0 100644 --- a/package.json +++ b/package.json @@ -165,7 +165,7 @@ "@metamask/composable-controller": "^11.0.0", "@metamask/controller-utils": "^11.3.0", "@metamask/design-tokens": "^5.0.0", - "@metamask/earn-controller": "^0.10.0", + "@metamask/earn-controller": "^0.11.0", "@metamask/eth-hd-keyring": "^12.1.0", "@metamask/eth-json-rpc-filters": "^9.0.0", "@metamask/eth-json-rpc-middleware": "^15.0.0", diff --git a/yarn.lock b/yarn.lock index efbe07ae5806..e731d7910e78 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4541,10 +4541,10 @@ resolved "https://registry.yarnpkg.com/@metamask/contract-metadata/-/contract-metadata-2.5.0.tgz#33921fa9c15eb1863f55dcd5f75467ae15614ebb" integrity sha512-+j7jEcp0P1OUMEpa/OIwfJs/ahBC/akwgWxaRTSWX2SWABvlUKBVRMtslfL94Qj2wN2xw8xjaUy5nSHqrznqDA== -"@metamask/controller-utils@^11.0.0", "@metamask/controller-utils@^11.3.0", "@metamask/controller-utils@^11.4.4", "@metamask/controller-utils@^11.5.0", "@metamask/controller-utils@^11.6.0": - version "11.6.0" - resolved "https://registry.npmjs.org/@metamask/controller-utils/-/controller-utils-11.6.0.tgz#68bae4323ad4a68811befadc018043e6c15f6cc1" - integrity sha512-7dcaimnRxNzQBVXdadNH/oezBkfxYJ2bK2qB09d9mYjUY3+/dyWX2BYcUXSb1BOJlyJxtVDEN1+sqIRMnoqL/Q== +"@metamask/controller-utils@^11.0.0", "@metamask/controller-utils@^11.3.0", "@metamask/controller-utils@^11.4.4", "@metamask/controller-utils@^11.5.0", "@metamask/controller-utils@^11.6.0", "@metamask/controller-utils@^11.7.0": + version "11.7.0" + resolved "https://registry.npmjs.org/@metamask/controller-utils/-/controller-utils-11.7.0.tgz#1186daecffff9dec6846f64f9da7a319dd9c9a83" + integrity sha512-Q2TPmTJT6L/ixBk5TEb+mJ1NRyFAGe+VjFuulNQMVu6AanEBeGSoxsuBnAzWQlIgbt3/EHGP7o31ep1H5gr5Gw== dependencies: "@ethereumjs/util" "^9.1.0" "@metamask/eth-query" "^4.0.0" @@ -4563,14 +4563,14 @@ resolved "https://registry.yarnpkg.com/@metamask/design-tokens/-/design-tokens-5.0.0.tgz#b749fc9d6556a0c2be159c6448b48796e0c14c6f" integrity sha512-dpTV8+wuGQNS69JdWamfuMM2EAIpKXDGjXG63tGRe1N27JVvq4l5p5dBtJtWzc061MVspm45EXK6jDrvlJyGDg== -"@metamask/earn-controller@^0.10.0": - version "0.10.0" - resolved "https://registry.npmjs.org/@metamask/earn-controller/-/earn-controller-0.10.0.tgz#890587d9e51e4fbaa8e85f09077c040e85a99462" - integrity sha512-vhywGCsaQphYyDwYksjk7+DZMQAeeC94lpDs6xUEV3xr0l1rG3NR5Ubqhl29oFwYsPV/0HGAbiGW9i3UYOBvkQ== +"@metamask/earn-controller@^0.11.0": + version "0.11.0" + resolved "https://registry.npmjs.org/@metamask/earn-controller/-/earn-controller-0.11.0.tgz#47da160db26efd4b6b3e75dfd3c430541fe4b9b0" + integrity sha512-uxiuMYPd1pntHV3s4fq7At4fFSVlJ5LyRjKMVy4ySj+brsLpi8uAaD21ci4AEpvx3mB3NPCyxzCdKYwVRurtIw== dependencies: "@ethersproject/providers" "^5.7.0" "@metamask/base-controller" "^8.0.0" - "@metamask/controller-utils" "^11.6.0" + "@metamask/controller-utils" "^11.7.0" "@metamask/stake-sdk" "^1.0.0" "@metamask/eslint-config-typescript@^9.0.0": From 6dab3a0892c03342a84b35dd062e39cf96044da1 Mon Sep 17 00:00:00 2001 From: Nico MASSART <NicolasMassart@users.noreply.github.com> Date: Wed, 9 Apr 2025 12:29:24 +0200 Subject: [PATCH 110/473] cherry-pick 70ddf46 (#14547) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit manual cherry-pick 70ddf46 for PR #14383 Conflicts fixed Co-authored-by: Iván <ivan.canete@consensys.net> --- e2e/specs/ramps/onramp.spec.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/e2e/specs/ramps/onramp.spec.js b/e2e/specs/ramps/onramp.spec.js index a686de369fb4..44f3fee95e0b 100644 --- a/e2e/specs/ramps/onramp.spec.js +++ b/e2e/specs/ramps/onramp.spec.js @@ -82,7 +82,7 @@ describe(SmokeRamps('Buy Crypto'), () => { await SelectPaymentMethodView.tapPaymentMethodOption(paymentMethod); await Assertions.checkIfTextIsDisplayed('€0'); await Assertions.checkIfTextIsNotDisplayed('$0'); - await Assertions.checkIfTextIsDisplayed('Chainlink'); + await Assertions.checkIfTextIsDisplayed('Dai Stablecoin'); await Assertions.checkIfTextIsNotDisplayed('Ethereum'); await Assertions.checkIfTextIsNotDisplayed('Debit or Credit'); await Assertions.checkIfTextIsDisplayed(paymentMethod); From d36abec78cea7522467791b550668a4bfb5a87e3 Mon Sep 17 00:00:00 2001 From: "runway-github[bot]" <73448015+runway-github[bot]@users.noreply.github.com> Date: Wed, 9 Apr 2025 12:41:49 +0200 Subject: [PATCH 111/473] chore(runway): cherry-pick test: update token selection function for flaky test (#14337) (#14546) --- app/components/UI/Ramp/components/TokenSelectModal.tsx | 2 ++ e2e/pages/Ramps/TokenSelectBottomSheet.js | 9 +++++++-- e2e/selectors/Ramps/SelectToken.selectors.js | 3 +++ 3 files changed, 12 insertions(+), 2 deletions(-) create mode 100644 e2e/selectors/Ramps/SelectToken.selectors.js diff --git a/app/components/UI/Ramp/components/TokenSelectModal.tsx b/app/components/UI/Ramp/components/TokenSelectModal.tsx index d230e6aedd33..308c110203c4 100644 --- a/app/components/UI/Ramp/components/TokenSelectModal.tsx +++ b/app/components/UI/Ramp/components/TokenSelectModal.tsx @@ -27,6 +27,7 @@ import Text, { TextColor, TextVariant, } from '../../../../component-library/components/Texts/Text'; +import { selectTokenSelectors } from '../../../../../e2e/selectors/Ramps/SelectToken.selectors'; const createStyles = (colors: Colors) => StyleSheet.create({ @@ -208,6 +209,7 @@ function TokenSelectModal({ placeholderTextColor={colors.text.muted} value={searchString} onChangeText={handleSearchTextChange} + testID={selectTokenSelectors.TOKEN_SELECT_MODAL_SEARCH_INPUT} /> {searchString.length > 0 && ( <TouchableOpacity onPress={handleClearSearch}> diff --git a/e2e/pages/Ramps/TokenSelectBottomSheet.js b/e2e/pages/Ramps/TokenSelectBottomSheet.js index 0625e6bcf0c2..62cf998720e3 100644 --- a/e2e/pages/Ramps/TokenSelectBottomSheet.js +++ b/e2e/pages/Ramps/TokenSelectBottomSheet.js @@ -1,10 +1,15 @@ import Matchers from '../../utils/Matchers'; import Gestures from '../../utils/Gestures'; +import { selectTokenSelectors } from '../../selectors/Ramps/SelectToken.selectors'; class TokenSelectBottomSheet { - async tapTokenByName(token) { - const tokenName = await Matchers.getElementByText(token); + get tokenSearchInput() { + return Matchers.getElementByID(selectTokenSelectors.TOKEN_SELECT_MODAL_SEARCH_INPUT); + } + async tapTokenByName(token) { + await Gestures.typeTextAndHideKeyboard(this.tokenSearchInput, token); + const tokenName = await Matchers.getElementByText(token, 1); await Gestures.waitAndTap(tokenName); } } diff --git a/e2e/selectors/Ramps/SelectToken.selectors.js b/e2e/selectors/Ramps/SelectToken.selectors.js new file mode 100644 index 000000000000..eb69680a71dd --- /dev/null +++ b/e2e/selectors/Ramps/SelectToken.selectors.js @@ -0,0 +1,3 @@ +export const selectTokenSelectors = { + TOKEN_SELECT_MODAL_SEARCH_INPUT: 'token-select-modal-search-input', +}; From da1afa5c138c66b577734b91a91841e4fb772d50 Mon Sep 17 00:00:00 2001 From: "runway-github[bot]" <73448015+runway-github[bot]@users.noreply.github.com> Date: Wed, 9 Apr 2025 12:43:59 +0200 Subject: [PATCH 112/473] chore(runway): cherry-pick test: update token used in ramps test (#14363) (#14512) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit cherry-pick test: update token used in ramps test (#14363) Co-authored-by: Iván <ivan.canete@consensys.net> Co-authored-by: Nico MASSART <NicolasMassart@users.noreply.github.com> --- e2e/specs/ramps/onramp.spec.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/e2e/specs/ramps/onramp.spec.js b/e2e/specs/ramps/onramp.spec.js index 44f3fee95e0b..dc471f0f4e95 100644 --- a/e2e/specs/ramps/onramp.spec.js +++ b/e2e/specs/ramps/onramp.spec.js @@ -75,7 +75,7 @@ describe(SmokeRamps('Buy Crypto'), () => { await BuildQuoteView.tapCurrencySelector(); await SelectCurrencyView.tapCurrencyOption('Euro'); await BuildQuoteView.tapTokenDropdown('Ethereum'); - await TokenSelectBottomSheet.tapTokenByName('LINK'); + await TokenSelectBottomSheet.tapTokenByName('DAI'); await BuildQuoteView.tapRegionSelector(); await SelectRegionView.tapRegionOption('France'); await BuildQuoteView.tapPaymentMethodDropdown('Debit or Credit'); From fa579fe8a97e17ae6c35cdb62c4ba51fd8f7634e Mon Sep 17 00:00:00 2001 From: "runway-github[bot]" <73448015+runway-github[bot]@users.noreply.github.com> Date: Wed, 9 Apr 2025 12:59:01 +0200 Subject: [PATCH 113/473] chore(runway): cherry-pick b7c4950 (#14433) (#14484) - fix: Disable auto correct on Snaps UI inputs [cp-7.44.0] (#14433) Co-authored-by: Frederik Bolding <frederik.bolding@gmail.com> Co-authored-by: Nico MASSART <NicolasMassart@users.noreply.github.com> --- app/components/Snaps/SnapUIInput/SnapUIInput.tsx | 2 ++ .../__snapshots__/SnapUIRenderer.test.tsx.snap | 16 ++++++++++++++++ 2 files changed, 18 insertions(+) diff --git a/app/components/Snaps/SnapUIInput/SnapUIInput.tsx b/app/components/Snaps/SnapUIInput/SnapUIInput.tsx index 7677e44af5cf..4e286fe094f7 100644 --- a/app/components/Snaps/SnapUIInput/SnapUIInput.tsx +++ b/app/components/Snaps/SnapUIInput/SnapUIInput.tsx @@ -72,6 +72,8 @@ export const SnapUIInput = ({ id={name} value={value} onChangeText={handleChange} + autoCapitalize="none" + autoCorrect={false} /> {error && ( // eslint-disable-next-line react-native/no-inline-styles diff --git a/app/components/Snaps/SnapUIRenderer/__snapshots__/SnapUIRenderer.test.tsx.snap b/app/components/Snaps/SnapUIRenderer/__snapshots__/SnapUIRenderer.test.tsx.snap index 86f3eda791a9..18d91b9a0e08 100644 --- a/app/components/Snaps/SnapUIRenderer/__snapshots__/SnapUIRenderer.test.tsx.snap +++ b/app/components/Snaps/SnapUIRenderer/__snapshots__/SnapUIRenderer.test.tsx.snap @@ -229,6 +229,8 @@ exports[`SnapUIRenderer prefills interactive inputs with existing state 1`] = ` } > <TextInput + autoCapitalize="none" + autoCorrect={false} autoFocus={false} editable={true} id="input" @@ -350,6 +352,8 @@ exports[`SnapUIRenderer re-renders when the interface changes 1`] = ` } > <TextInput + autoCapitalize="none" + autoCorrect={false} autoFocus={false} editable={true} id="input" @@ -409,6 +413,8 @@ exports[`SnapUIRenderer re-renders when the interface changes 1`] = ` } > <TextInput + autoCapitalize="none" + autoCorrect={false} autoFocus={false} editable={true} id="input2" @@ -530,6 +536,8 @@ exports[`SnapUIRenderer re-syncs state when the interface changes 1`] = ` } > <TextInput + autoCapitalize="none" + autoCorrect={false} autoFocus={false} editable={true} id="input" @@ -589,6 +597,8 @@ exports[`SnapUIRenderer re-syncs state when the interface changes 1`] = ` } > <TextInput + autoCapitalize="none" + autoCorrect={false} autoFocus={false} editable={true} id="input2" @@ -1594,6 +1604,8 @@ exports[`SnapUIRenderer supports fields with multiple components 1`] = ` } > <TextInput + autoCapitalize="none" + autoCorrect={false} autoFocus={false} editable={true} id="input" @@ -1800,6 +1812,8 @@ exports[`SnapUIRenderer supports forms with fields 1`] = ` } > <TextInput + autoCapitalize="none" + autoCorrect={false} autoFocus={false} editable={true} id="input" @@ -2804,6 +2818,8 @@ exports[`SnapUIRenderer supports interactive inputs 1`] = ` } > <TextInput + autoCapitalize="none" + autoCorrect={false} autoFocus={false} editable={true} id="input" From c19d30979a0105d3171093686618b26d35a13d88 Mon Sep 17 00:00:00 2001 From: "runway-github[bot]" <73448015+runway-github[bot]@users.noreply.github.com> Date: Wed, 9 Apr 2025 13:29:57 +0200 Subject: [PATCH 114/473] chore(runway): cherry-pick fix: 3273 keyboard blocks send flow (Solana) (#14403) (#14548) - fix: 3273 keyboard blocks send flow (Solana) (#14403) Co-authored-by: Daniel Cross <dan.s.cross@icloud.com> --- .../Approvals/ApprovalModal/ApprovalModal.tsx | 2 + .../InstallSnapApproval.tsx | 10 +- .../SnapAccountCustomNameApproval.tsx | 1 + .../SnapDialogApproval/SnapDialogApproval.tsx | 1 + .../SnapUIRenderer.test.tsx.snap | 673 +++++++++--------- .../Snaps/SnapUISelector/SnapUISelector.tsx | 6 +- .../Snaps/SnapUITooltip/SnapUITooltip.tsx | 2 +- 7 files changed, 371 insertions(+), 324 deletions(-) diff --git a/app/components/Approvals/ApprovalModal/ApprovalModal.tsx b/app/components/Approvals/ApprovalModal/ApprovalModal.tsx index 8b7391424d5e..ef31ae4a9221 100644 --- a/app/components/Approvals/ApprovalModal/ApprovalModal.tsx +++ b/app/components/Approvals/ApprovalModal/ApprovalModal.tsx @@ -7,6 +7,7 @@ export interface ApprovalModalProps { isVisible: boolean; onCancel: () => void; children: React.ReactNode; + avoidKeyboard?: boolean; } const styles = StyleSheet.create({ @@ -33,6 +34,7 @@ const ApprovalModal = (props: ApprovalModalProps) => { onSwipeComplete={props.onCancel} swipeDirection={'down'} propagateSwipe + avoidKeyboard={props.avoidKeyboard} > {props.children} </Modal> diff --git a/app/components/Approvals/InstallSnapApproval/InstallSnapApproval.tsx b/app/components/Approvals/InstallSnapApproval/InstallSnapApproval.tsx index 1e075401dc16..e866275d833e 100644 --- a/app/components/Approvals/InstallSnapApproval/InstallSnapApproval.tsx +++ b/app/components/Approvals/InstallSnapApproval/InstallSnapApproval.tsx @@ -1,7 +1,9 @@ ///: BEGIN:ONLY_INCLUDE_IF(preinstalled-snaps,external-snaps) import React, { useEffect, useState } from 'react'; import ApprovalModal from '../ApprovalModal'; -import useApprovalRequest, { ApprovalRequestType } from '../../Views/confirmations/hooks/useApprovalRequest'; +import useApprovalRequest, { + ApprovalRequestType, +} from '../../Views/confirmations/hooks/useApprovalRequest'; import { ApprovalTypes } from '../../../core/RPCMethods/RPCMethodMiddleware'; import { SnapInstallState } from './InstallSnapApproval.types'; import { @@ -165,7 +167,11 @@ const InstallSnapApproval = () => { const content = renderModalContent(); return content ? ( - <ApprovalModal isVisible={installState !== undefined} onCancel={onReject}> + <ApprovalModal + isVisible={installState !== undefined} + onCancel={onReject} + avoidKeyboard + > {content} </ApprovalModal> ) : null; diff --git a/app/components/Approvals/SnapAccountCustomNameApproval/SnapAccountCustomNameApproval.tsx b/app/components/Approvals/SnapAccountCustomNameApproval/SnapAccountCustomNameApproval.tsx index 7853f97fbaf0..f2f21de003d6 100644 --- a/app/components/Approvals/SnapAccountCustomNameApproval/SnapAccountCustomNameApproval.tsx +++ b/app/components/Approvals/SnapAccountCustomNameApproval/SnapAccountCustomNameApproval.tsx @@ -88,6 +88,7 @@ const SnapAccountCustomNameApproval = () => { approvalRequest?.type === SNAP_MANAGE_ACCOUNTS_CONFIRMATION_TYPES.showNameSnapAccount } + avoidKeyboard onCancel={onReject} > <View testID={SNAP_ACCOUNT_CUSTOM_NAME_APPROVAL} style={styles.root}> diff --git a/app/components/Snaps/SnapDialogApproval/SnapDialogApproval.tsx b/app/components/Snaps/SnapDialogApproval/SnapDialogApproval.tsx index 922bee393f0a..5ae7361656df 100644 --- a/app/components/Snaps/SnapDialogApproval/SnapDialogApproval.tsx +++ b/app/components/Snaps/SnapDialogApproval/SnapDialogApproval.tsx @@ -116,6 +116,7 @@ const SnapDialogApproval = () => { approvalRequest?.type === DIALOG_APPROVAL_TYPES.default } onCancel={onCancel} + avoidKeyboard > <View style={styles.root}> <SnapUIRenderer diff --git a/app/components/Snaps/SnapUIRenderer/__snapshots__/SnapUIRenderer.test.tsx.snap b/app/components/Snaps/SnapUIRenderer/__snapshots__/SnapUIRenderer.test.tsx.snap index 18d91b9a0e08..05770da7d7a9 100644 --- a/app/components/Snaps/SnapUIRenderer/__snapshots__/SnapUIRenderer.test.tsx.snap +++ b/app/components/Snaps/SnapUIRenderer/__snapshots__/SnapUIRenderer.test.tsx.snap @@ -2200,249 +2200,328 @@ exports[`SnapUIRenderer supports forms with fields 1`] = ` } /> <View - collapsable={false} - deviceHeight={null} - deviceWidth={null} - hideModalContentWhileAnimating={false} - onBackdropPress={[Function]} - onModalHide={[Function]} - onModalWillHide={[Function]} - onModalWillShow={[Function]} - onMoveShouldSetResponder={[Function]} - onMoveShouldSetResponderCapture={[Function]} - onResponderEnd={[Function]} - onResponderGrant={[Function]} - onResponderMove={[Function]} - onResponderReject={[Function]} - onResponderRelease={[Function]} - onResponderStart={[Function]} - onResponderTerminate={[Function]} - onResponderTerminationRequest={[Function]} - onStartShouldSetResponder={[Function]} - onStartShouldSetResponderCapture={[Function]} - onSwipeComplete={[Function]} - panResponderThreshold={4} + onLayout={[Function]} pointerEvents="box-none" - scrollHorizontal={false} - scrollOffset={0} - scrollOffsetMax={0} - scrollTo={null} - statusBarTranslucent={false} style={ - { - "flex": 1, - "justifyContent": "flex-end", - "left": 0, - "margin": 0, - "top": 0, - "transform": [ + [ + [ + { + "margin": 37.5, + "transform": [ + { + "translateY": 0, + }, + ], + }, { - "translateY": 1334, + "flex": 1, + "justifyContent": "center", + }, + { + "justifyContent": "flex-end", + "margin": 0, + }, + { + "margin": 0, }, ], - } - } - supportedOrientations={ - [ - "portrait", - "landscape", + { + "paddingBottom": 0, + }, ] } - swipeDirection="down" - swipeThreshold={100} > <View + collapsable={false} + deviceHeight={null} + deviceWidth={null} + hideModalContentWhileAnimating={false} + onBackdropPress={[Function]} + onModalHide={[Function]} + onModalWillHide={[Function]} + onModalWillShow={[Function]} + onMoveShouldSetResponder={[Function]} + onMoveShouldSetResponderCapture={[Function]} + onResponderEnd={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderReject={[Function]} + onResponderRelease={[Function]} + onResponderStart={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} + onStartShouldSetResponderCapture={[Function]} + onSwipeComplete={[Function]} + panResponderThreshold={4} + pointerEvents="box-none" + scrollHorizontal={false} + scrollOffset={0} + scrollOffsetMax={0} + scrollTo={null} + statusBarTranslucent={false} style={ { - "backgroundColor": "#ffffff", - "borderTopLeftRadius": 24, - "borderTopRightRadius": 24, - "minHeight": 300, - "overflow": "hidden", - "paddingBottom": 20, + "flex": 1, + "justifyContent": "flex-end", + "left": 0, + "margin": 0, + "top": 0, + "transform": [ + { + "translateY": 1334, + }, + ], } } + supportedOrientations={ + [ + "portrait", + "landscape", + ] + } + swipeDirection="down" + swipeThreshold={100} > <View style={ - [ - { - "backgroundColor": "#ffffff", - "flexDirection": "row", - "padding": 16, - }, - false, - ] + { + "backgroundColor": "#ffffff", + "borderTopLeftRadius": 24, + "borderTopRightRadius": 24, + "minHeight": 300, + "overflow": "hidden", + "paddingBottom": 20, + } } - testID="header" > <View style={ - { - "width": undefined, - } + [ + { + "backgroundColor": "#ffffff", + "flexDirection": "row", + "padding": 16, + }, + false, + ] } + testID="header" > <View - onLayout={[Function]} - > - <TouchableOpacity - accessible={true} - activeOpacity={1} - disabled={false} - onPress={[Function]} - onPressIn={[Function]} - onPressOut={[Function]} - style={ - { - "alignItems": "center", - "borderRadius": 8, - "height": 24, - "justifyContent": "center", - "opacity": 1, - "width": 24, - } + style={ + { + "width": undefined, } + } + > + <View + onLayout={[Function]} > - <SvgMock - color="#141618" - height={16} - name="ArrowLeft" + <TouchableOpacity + accessible={true} + activeOpacity={1} + disabled={false} + onPress={[Function]} + onPressIn={[Function]} + onPressOut={[Function]} style={ { - "height": 16, - "width": 16, + "alignItems": "center", + "borderRadius": 8, + "height": 24, + "justifyContent": "center", + "opacity": 1, + "width": 24, } } - width={16} - /> - </TouchableOpacity> + > + <SvgMock + color="#141618" + height={16} + name="ArrowLeft" + style={ + { + "height": 16, + "width": 16, + } + } + width={16} + /> + </TouchableOpacity> + </View> </View> - </View> - <View - style={ - { - "alignItems": "center", - "flex": 1, - "marginHorizontal": 16, - } - } - > - <Text - accessibilityRole="text" + <View style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", - "fontSize": 16, - "fontWeight": "700", - "letterSpacing": 0, - "lineHeight": 24, - "textAlign": "center", + "alignItems": "center", + "flex": 1, + "marginHorizontal": 16, } } - testID="header-title" > - Select an option - </Text> - </View> - <View - style={ - { - "width": undefined, - } - } - > - <View - onLayout={[Function]} - /> - </View> - </View> - <RCTScrollView> - <View> + <Text + accessibilityRole="text" + style={ + { + "color": "#141618", + "fontFamily": "EuclidCircularB-Bold", + "fontSize": 16, + "fontWeight": "700", + "letterSpacing": 0, + "lineHeight": 24, + "textAlign": "center", + } + } + testID="header-title" + > + Select an option + </Text> + </View> <View - flexDirection="column" - gap={8} style={ - [ - { - "flexDirection": "column", - "gap": 8, - }, - { - "paddingLeft": 16, - "paddingRight": 16, - }, - ] + { + "width": undefined, + } } > - <TouchableOpacity - accessibilityRole="button" - accessible={true} - activeOpacity={1} - onPress={[Function]} + <View + onLayout={[Function]} + /> + </View> + </View> + <RCTScrollView> + <View> + <View + flexDirection="column" + gap={8} style={ - { - "alignItems": "center", - "alignSelf": "stretch", - "backgroundColor": "transparent", - "borderRadius": 8, - "flexDirection": "row", - "height": "auto", - "justifyContent": "center", - "maxHeight": 64, - "minHeight": 48, - "paddingBottom": 8, - "paddingHorizontal": 16, - "paddingLeft": 16, - "paddingRight": 16, - "paddingTop": 8, - } + [ + { + "flexDirection": "column", + "gap": 8, + }, + { + "paddingLeft": 16, + "paddingRight": 16, + }, + ] } > - <View - alignItems="center" - flexDirection="row" - justifyContent="space-between" + <TouchableOpacity + accessibilityRole="button" + accessible={true} + activeOpacity={1} + onPress={[Function]} style={ - [ - { - "alignItems": "center", - "flexDirection": "row", - "justifyContent": "space-between", - }, - { - "flex": 1, - }, - ] + { + "alignItems": "center", + "alignSelf": "stretch", + "backgroundColor": "transparent", + "borderRadius": 8, + "flexDirection": "row", + "height": "auto", + "justifyContent": "center", + "maxHeight": 64, + "minHeight": 48, + "paddingBottom": 8, + "paddingHorizontal": 16, + "paddingLeft": 16, + "paddingRight": 16, + "paddingTop": 8, + } } - testID="snaps-ui-card" > <View alignItems="center" flexDirection="row" - gap={16} + justifyContent="space-between" style={ [ { "alignItems": "center", "flexDirection": "row", - "gap": 16, + "justifyContent": "space-between", + }, + { + "flex": 1, }, - undefined, ] } + testID="snaps-ui-card" > + <View + alignItems="center" + flexDirection="row" + gap={16} + style={ + [ + { + "alignItems": "center", + "flexDirection": "row", + "gap": 16, + }, + undefined, + ] + } + > + <View + flexDirection="column" + style={ + [ + { + "flexDirection": "column", + }, + undefined, + ] + } + > + <Text + accessibilityRole="text" + ellipsizeMode="tail" + style={ + { + "color": "#141618", + "fontFamily": "EuclidCircularB-Medium", + "fontSize": 14, + "fontWeight": "500", + "letterSpacing": 0, + "lineHeight": 22, + } + } + > + CardTitle1 + </Text> + <Text + accessibilityRole="text" + ellipsizeMode="tail" + style={ + { + "color": "#6a737d", + "fontFamily": "EuclidCircularB-Regular", + "fontSize": 14, + "fontWeight": "400", + "letterSpacing": 0, + "lineHeight": 22, + } + } + > + CardDescription1 + </Text> + </View> + </View> <View flexDirection="column" style={ [ { "flexDirection": "column", + "textAlign": "right", }, undefined, ] } + textAlign="right" > <Text accessibilityRole="text" @@ -2458,7 +2537,7 @@ exports[`SnapUIRenderer supports forms with fields 1`] = ` } } > - CardTitle1 + CardValue1 </Text> <Text accessibilityRole="text" @@ -2474,125 +2553,125 @@ exports[`SnapUIRenderer supports forms with fields 1`] = ` } } > - CardDescription1 + CardExtra1 </Text> </View> </View> - <View - flexDirection="column" - style={ - [ - { - "flexDirection": "column", - "textAlign": "right", - }, - undefined, - ] - } - textAlign="right" - > - <Text - accessibilityRole="text" - ellipsizeMode="tail" - style={ - { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, - "fontWeight": "500", - "letterSpacing": 0, - "lineHeight": 22, - } - } - > - CardValue1 - </Text> - <Text - accessibilityRole="text" - ellipsizeMode="tail" - style={ - { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, - "fontWeight": "400", - "letterSpacing": 0, - "lineHeight": 22, - } - } - > - CardExtra1 - </Text> - </View> - </View> - </TouchableOpacity> - <TouchableOpacity - accessibilityRole="button" - accessible={true} - activeOpacity={1} - onPress={[Function]} - style={ - { - "alignItems": "center", - "alignSelf": "stretch", - "backgroundColor": "transparent", - "borderRadius": 8, - "flexDirection": "row", - "height": "auto", - "justifyContent": "center", - "maxHeight": 64, - "minHeight": 48, - "paddingBottom": 8, - "paddingHorizontal": 16, - "paddingLeft": 16, - "paddingRight": 16, - "paddingTop": 8, - } - } - > - <View - alignItems="center" - flexDirection="row" - justifyContent="space-between" + </TouchableOpacity> + <TouchableOpacity + accessibilityRole="button" + accessible={true} + activeOpacity={1} + onPress={[Function]} style={ - [ - { - "alignItems": "center", - "flexDirection": "row", - "justifyContent": "space-between", - }, - { - "flex": 1, - }, - ] + { + "alignItems": "center", + "alignSelf": "stretch", + "backgroundColor": "transparent", + "borderRadius": 8, + "flexDirection": "row", + "height": "auto", + "justifyContent": "center", + "maxHeight": 64, + "minHeight": 48, + "paddingBottom": 8, + "paddingHorizontal": 16, + "paddingLeft": 16, + "paddingRight": 16, + "paddingTop": 8, + } } - testID="snaps-ui-card" > <View alignItems="center" flexDirection="row" - gap={16} + justifyContent="space-between" style={ [ { "alignItems": "center", "flexDirection": "row", - "gap": 16, + "justifyContent": "space-between", + }, + { + "flex": 1, }, - undefined, ] } + testID="snaps-ui-card" > + <View + alignItems="center" + flexDirection="row" + gap={16} + style={ + [ + { + "alignItems": "center", + "flexDirection": "row", + "gap": 16, + }, + undefined, + ] + } + > + <View + flexDirection="column" + style={ + [ + { + "flexDirection": "column", + }, + undefined, + ] + } + > + <Text + accessibilityRole="text" + ellipsizeMode="tail" + style={ + { + "color": "#141618", + "fontFamily": "EuclidCircularB-Medium", + "fontSize": 14, + "fontWeight": "500", + "letterSpacing": 0, + "lineHeight": 22, + } + } + > + CardTitle2 + </Text> + <Text + accessibilityRole="text" + ellipsizeMode="tail" + style={ + { + "color": "#6a737d", + "fontFamily": "EuclidCircularB-Regular", + "fontSize": 14, + "fontWeight": "400", + "letterSpacing": 0, + "lineHeight": 22, + } + } + > + CardDescription2 + </Text> + </View> + </View> <View flexDirection="column" style={ [ { "flexDirection": "column", + "textAlign": "right", }, undefined, ] } + textAlign="right" > <Text accessibilityRole="text" @@ -2608,7 +2687,7 @@ exports[`SnapUIRenderer supports forms with fields 1`] = ` } } > - CardTitle2 + CardValue2 </Text> <Text accessibilityRole="text" @@ -2624,61 +2703,15 @@ exports[`SnapUIRenderer supports forms with fields 1`] = ` } } > - CardDescription2 + CardExtra2 </Text> </View> </View> - <View - flexDirection="column" - style={ - [ - { - "flexDirection": "column", - "textAlign": "right", - }, - undefined, - ] - } - textAlign="right" - > - <Text - accessibilityRole="text" - ellipsizeMode="tail" - style={ - { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, - "fontWeight": "500", - "letterSpacing": 0, - "lineHeight": 22, - } - } - > - CardValue2 - </Text> - <Text - accessibilityRole="text" - ellipsizeMode="tail" - style={ - { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, - "fontWeight": "400", - "letterSpacing": 0, - "lineHeight": 22, - } - } - > - CardExtra2 - </Text> - </View> - </View> - </TouchableOpacity> + </TouchableOpacity> + </View> </View> - </View> - </RCTScrollView> + </RCTScrollView> + </View> </View> </View> </Modal> diff --git a/app/components/Snaps/SnapUISelector/SnapUISelector.tsx b/app/components/Snaps/SnapUISelector/SnapUISelector.tsx index 77c9f749831d..4ad5a3c6ea60 100644 --- a/app/components/Snaps/SnapUISelector/SnapUISelector.tsx +++ b/app/components/Snaps/SnapUISelector/SnapUISelector.tsx @@ -119,7 +119,11 @@ export const SnapUISelector: React.FunctionComponent<SnapUISelectorProps> = ({ </HelpText> )} </Box> - <ApprovalModal isVisible={isModalOpen} onCancel={handleModalClose}> + <ApprovalModal + isVisible={isModalOpen} + onCancel={handleModalClose} + avoidKeyboard + > <View style={styles.modal}> <BottomSheetHeader onBack={handleModalClose}> {title} diff --git a/app/components/Snaps/SnapUITooltip/SnapUITooltip.tsx b/app/components/Snaps/SnapUITooltip/SnapUITooltip.tsx index 3b0e15d9fbea..ec79f58367b4 100644 --- a/app/components/Snaps/SnapUITooltip/SnapUITooltip.tsx +++ b/app/components/Snaps/SnapUITooltip/SnapUITooltip.tsx @@ -29,7 +29,7 @@ export const SnapUITooltip: FunctionComponent<SnapUITooltipProps> = ({ return ( <> <TouchableOpacity onPress={handleOnOpen}>{children}</TouchableOpacity> - <ApprovalModal isVisible={isOpen} onCancel={handleOnCancel}> + <ApprovalModal isVisible={isOpen} onCancel={handleOnCancel} avoidKeyboard> <View style={styles.modal}> <BottomSheetHeader onBack={handleOnCancel} /> <ScrollView style={styles.content}>{content}</ScrollView> From a0ae616e582f65919a3d436a39f13090eb15886d Mon Sep 17 00:00:00 2001 From: "runway-github[bot]" <73448015+runway-github[bot]@users.noreply.github.com> Date: Wed, 9 Apr 2025 15:09:14 +0200 Subject: [PATCH 115/473] chore(runway): cherry-pick 2ab39eb (#14475) (#14483) - fix: Prevent re-renders of Field component in Snaps UI [cp-7.44.0] (#14475) Co-authored-by: Frederik Bolding <frederik.bolding@gmail.com> Co-authored-by: Nico MASSART <NicolasMassart@users.noreply.github.com> --- app/components/Snaps/SnapUIRenderer/utils.ts | 59 ++++++++++++-------- 1 file changed, 36 insertions(+), 23 deletions(-) diff --git a/app/components/Snaps/SnapUIRenderer/utils.ts b/app/components/Snaps/SnapUIRenderer/utils.ts index a7eb790c858f..c4dda2c28a1c 100644 --- a/app/components/Snaps/SnapUIRenderer/utils.ts +++ b/app/components/Snaps/SnapUIRenderer/utils.ts @@ -1,5 +1,10 @@ -import { JSXElement, GenericSnapElement, Text } from '@metamask/snaps-sdk/jsx'; -import { hasChildren } from '@metamask/snaps-utils'; +import { + JSXElement, + GenericSnapElement, + Text, + InputElement, +} from '@metamask/snaps-sdk/jsx'; +import { getJsxChildren, hasChildren } from '@metamask/snaps-utils'; import { memoize } from 'lodash'; import { sha256 } from '@noble/hashes/sha256'; import { @@ -26,6 +31,27 @@ export interface MapToTemplateParams { size?: string; } +/** + * Registry of element types that are used within Field element. + */ +export const FIELD_ELEMENT_TYPES = [ + 'FileInput', + 'Input', + 'Dropdown', + 'RadioGroup', + 'Checkbox', + 'Selector', +]; + +/** + * Search for the element that is considered to be primary child element of a Field. + * + * @param children - Children elements specified within Field element. + * @returns Number, representing index of a primary field in the array of children elements. + */ +export const getPrimaryChildElementIndex = (children: JSXElement[]) => + children.findIndex((c) => FIELD_ELEMENT_TYPES.includes(c.type)); + /** * Get a truncated version of component children to use in a hash. * @@ -39,6 +65,14 @@ function getChildrenForHash(component: JSXElement) { const { children } = component.props; + // Field has special handling to determine the primary child to use for the key + if (component.type === 'Field') { + const fieldChildren = getJsxChildren(component) as JSXElement[]; + const primaryChildIndex = getPrimaryChildElementIndex(fieldChildren); + const primaryChild = fieldChildren[primaryChildIndex] as InputElement; + return { type: primaryChild?.type, name: primaryChild?.props?.name }; + } + if (typeof children === 'string') { // For the hash we reduce long strings return children.slice(0, 5000); @@ -187,27 +221,6 @@ export const mergeValue = <Type extends State>( return { ...state, [name]: value }; }; -/** - * Registry of element types that are used within Field element. - */ -export const FIELD_ELEMENT_TYPES = [ - 'FileInput', - 'Input', - 'Dropdown', - 'RadioGroup', - 'Checkbox', - 'Selector', -]; - -/** - * Search for the element that is considered to be primary child element of a Field. - * - * @param children - Children elements specified within Field element. - * @returns Number, representing index of a primary field in the array of children elements. - */ -export const getPrimaryChildElementIndex = (children: JSXElement[]) => - children.findIndex((c) => FIELD_ELEMENT_TYPES.includes(c.type)); - /** * Map Snap custom size for border radius to mobile compatible size. * From 5c653b5c01c382e04fb3ba1bd28db6f4d8541ab5 Mon Sep 17 00:00:00 2001 From: "runway-github[bot]" <73448015+runway-github[bot]@users.noreply.github.com> Date: Wed, 9 Apr 2025 19:45:20 +0200 Subject: [PATCH 116/473] chore(runway): cherry-pick fix: activity reloads every minute (#14465) (#14567) - fix: activity reloads every minute (#14465) Co-authored-by: Alejandro Garcia Anglada <aganglada@gmail.com> Co-authored-by: Daniel Cross <dan.s.cross@icloud.com> Co-authored-by: Antonio Regadas <antonio.regadas@consensys.net> --- .../MultichainTransactionsView.test.tsx | 30 ++----------- .../MultichainTransactionsView.tsx | 45 ++++--------------- app/selectors/multichain/multichain.test.ts | 12 ++++- app/selectors/multichain/multichain.ts | 12 ++++- 4 files changed, 31 insertions(+), 68 deletions(-) diff --git a/app/components/Views/MultichainTransactionsView/MultichainTransactionsView.test.tsx b/app/components/Views/MultichainTransactionsView/MultichainTransactionsView.test.tsx index a899a911ba83..7666f03d6d61 100644 --- a/app/components/Views/MultichainTransactionsView/MultichainTransactionsView.test.tsx +++ b/app/components/Views/MultichainTransactionsView/MultichainTransactionsView.test.tsx @@ -1,7 +1,7 @@ import React from 'react'; import { useNavigation } from '@react-navigation/native'; import { useSelector } from 'react-redux'; -import { act, render, waitFor } from '@testing-library/react-native'; +import { render } from '@testing-library/react-native'; import { TransactionType } from '@metamask/keyring-api'; import MultichainTransactionsView from './MultichainTransactionsView'; import { selectSolanaAccountTransactions } from '../../../selectors/multichain'; @@ -122,11 +122,6 @@ describe('MultichainTransactionsView', () => { }); }); - it('renders loading state initially', () => { - const { getByTestId } = customRender(<MultichainTransactionsView />); - expect(getByTestId('transactions-loading-indicator')).toBeTruthy(); - }); - it('handles case when transactions data is not available', async () => { (useSelector as jest.Mock).mockImplementation((selector) => { if (selector === selectSelectedInternalAccountFormattedAddress) { @@ -138,32 +133,13 @@ describe('MultichainTransactionsView', () => { return null; }); - const { getByText, queryByTestId } = customRender( - <MultichainTransactionsView />, - ); + const { getByText } = customRender(<MultichainTransactionsView />); - act(() => { - jest.advanceTimersByTime(600); - }); - - await waitFor(() => { - expect(queryByTestId('transactions-loading-indicator')).toBeNull(); - }); expect(getByText('wallet.no_transactions')).toBeTruthy(); }); it('renders transaction list items when transactions are available', async () => { - const { queryByTestId, queryAllByTestId } = customRender( - <MultichainTransactionsView />, - ); - - act(() => { - jest.advanceTimersByTime(600); - }); - - await waitFor(() => { - expect(queryByTestId('transactions-loading-indicator')).toBeNull(); - }); + const { queryAllByTestId } = customRender(<MultichainTransactionsView />); const transactionItems = queryAllByTestId('transaction-item'); expect(transactionItems.length).toBe(2); diff --git a/app/components/Views/MultichainTransactionsView/MultichainTransactionsView.tsx b/app/components/Views/MultichainTransactionsView/MultichainTransactionsView.tsx index 3bd917c3b1b2..b671a38d38b3 100644 --- a/app/components/Views/MultichainTransactionsView/MultichainTransactionsView.tsx +++ b/app/components/Views/MultichainTransactionsView/MultichainTransactionsView.tsx @@ -1,5 +1,5 @@ -import React, { useState, useEffect } from 'react'; -import { View, ActivityIndicator } from 'react-native'; +import React, { useMemo } from 'react'; +import { View } from 'react-native'; import { useSelector } from 'react-redux'; import { useNavigation } from '@react-navigation/native'; import { FlashList } from '@shopify/flash-list'; @@ -29,32 +29,15 @@ const MultichainTransactionsView = () => { const selectedAddress = useSelector( selectSelectedInternalAccountFormattedAddress, ); - const [loading, setLoading] = useState(true); - const [transactions, setTransactions] = useState<Transaction[]>([]); + const solanaAccountTransactions = useSelector( selectSolanaAccountTransactions, ); - useEffect(() => { - setLoading(true); - - // use the selector selectSolanaAccountTransactions - // simple timeout to simulate loading - const timer = setTimeout(() => { - // check if solanaAccountTransactions is an object with transactions property - if ( - solanaAccountTransactions && - 'transactions' in solanaAccountTransactions - ) { - setTransactions(solanaAccountTransactions.transactions); - } else { - setTransactions([]); - } - setLoading(false); - }, 500); - - return () => clearTimeout(timer); - }, [solanaAccountTransactions]); + const transactions = useMemo( + () => solanaAccountTransactions?.transactions, + [solanaAccountTransactions], + ); const renderEmptyList = () => ( <View style={style.emptyContainer}> @@ -96,18 +79,6 @@ const MultichainTransactionsView = () => { /> ); - if (loading) { - return ( - <View style={style.loader}> - <ActivityIndicator - size="large" - color={colors.primary.default} - testID={`transactions-loading-indicator`} - /> - </View> - ); - } - return ( <View style={style.wrapper}> <FlashList @@ -116,7 +87,7 @@ const MultichainTransactionsView = () => { keyExtractor={(item) => item.id} ListEmptyComponent={renderEmptyList} style={baseStyles.flexGrow} - ListFooterComponent={transactions.length > 0 ? renderViewMore() : null} + ListFooterComponent={transactions?.length > 0 ? renderViewMore() : null} estimatedItemSize={200} /> </View> diff --git a/app/selectors/multichain/multichain.test.ts b/app/selectors/multichain/multichain.test.ts index 2b17ebc5041f..f35c1018a1b7 100644 --- a/app/selectors/multichain/multichain.test.ts +++ b/app/selectors/multichain/multichain.test.ts @@ -760,7 +760,11 @@ describe('MultichainNonEvm Selectors', () => { it('returns empty array when no Solana account is selected', () => { const state = getEvmState(); - expect(selectSolanaAccountTransactions(state)).toEqual([]); + expect(selectSolanaAccountTransactions(state)).toEqual({ + lastUpdated: 0, + next: null, + transactions: [], + }); }); it('returns empty array when Solana account has no transactions', () => { @@ -769,7 +773,11 @@ describe('MultichainNonEvm Selectors', () => { state.engine.backgroundState.MultichainTransactionsController.nonEvmTransactions = {}; - expect(selectSolanaAccountTransactions(state)).toEqual([]); + expect(selectSolanaAccountTransactions(state)).toEqual({ + lastUpdated: 0, + next: null, + transactions: [], + }); }); }); }); diff --git a/app/selectors/multichain/multichain.ts b/app/selectors/multichain/multichain.ts index 4a60f0583cd8..0fd027bbbe2b 100644 --- a/app/selectors/multichain/multichain.ts +++ b/app/selectors/multichain/multichain.ts @@ -305,15 +305,23 @@ export const selectMultichainNetworkAggregatedBalance = createDeepEqualSelector( }, ); +const DEFAULT_TRANSACTION_STATE_ENTRY = { + transactions: [], + next: null, + lastUpdated: 0, +}; + export const selectSolanaAccountTransactions = createDeepEqualSelector( selectMultichainTransactions, selectSolanaAccount, (nonEvmTransactions, selectedAccount) => { if (!selectedAccount) { - return []; + return DEFAULT_TRANSACTION_STATE_ENTRY; } - return nonEvmTransactions[selectedAccount.id] || []; + return ( + nonEvmTransactions[selectedAccount.id] ?? DEFAULT_TRANSACTION_STATE_ENTRY + ); }, ); From 255e68f8bfdf64bff96984344a72c475a748a74a Mon Sep 17 00:00:00 2001 From: metamaskbot <metamaskbot@users.noreply.github.com> Date: Wed, 9 Apr 2025 18:35:41 +0000 Subject: [PATCH 117/473] Bump version number to 1676 --- android/app/build.gradle | 2 +- bitrise.yml | 4 ++-- ios/MetaMask.xcodeproj/project.pbxproj | 12 ++++++------ 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/android/app/build.gradle b/android/app/build.gradle index 80d9b94e7921..84d69254d241 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -179,7 +179,7 @@ android { minSdkVersion rootProject.ext.minSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion versionName "7.44.0" - versionCode 1674 + versionCode 1676 testBuildType System.getProperty('testBuildType', 'debug') missingDimensionStrategy 'react-native-camera', 'general' testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" diff --git a/bitrise.yml b/bitrise.yml index c2bd19a879b9..31fb3302483d 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -2125,13 +2125,13 @@ app: VERSION_NAME: 7.44.0 - opts: is_expand: false - VERSION_NUMBER: 1674 + VERSION_NUMBER: 1676 - opts: is_expand: false FLASK_VERSION_NAME: 7.44.0 - opts: is_expand: false - FLASK_VERSION_NUMBER: 1674 + FLASK_VERSION_NUMBER: 1676 - opts: is_expand: false ANDROID_APK_LINK: '' diff --git a/ios/MetaMask.xcodeproj/project.pbxproj b/ios/MetaMask.xcodeproj/project.pbxproj index 7cf546e300f5..f5df088baec2 100644 --- a/ios/MetaMask.xcodeproj/project.pbxproj +++ b/ios/MetaMask.xcodeproj/project.pbxproj @@ -1437,7 +1437,7 @@ CODE_SIGN_IDENTITY = "Apple Development"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1674; + CURRENT_PROJECT_VERSION = 1676; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = 48XVW22RCG; @@ -1506,7 +1506,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMask.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1674; + CURRENT_PROJECT_VERSION = 1676; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 48XVW22RCG; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 48XVW22RCG; @@ -1571,7 +1571,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMaskDebug.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1674; + CURRENT_PROJECT_VERSION = 1676; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = 48XVW22RCG; @@ -1637,7 +1637,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMask.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1674; + CURRENT_PROJECT_VERSION = 1676; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 48XVW22RCG; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 48XVW22RCG; @@ -1796,7 +1796,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMaskDebug.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1674; + CURRENT_PROJECT_VERSION = 1676; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = 48XVW22RCG; @@ -1865,7 +1865,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMask.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1674; + CURRENT_PROJECT_VERSION = 1676; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 48XVW22RCG; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 48XVW22RCG; From 9bacddaf281aa4033e3da3efb5a0d1143abaab39 Mon Sep 17 00:00:00 2001 From: metamaskbot <metamaskbot@users.noreply.github.com> Date: Wed, 9 Apr 2025 20:40:47 +0000 Subject: [PATCH 118/473] Bump version number to 1677 --- android/app/build.gradle | 2 +- bitrise.yml | 4 ++-- ios/MetaMask.xcodeproj/project.pbxproj | 12 ++++++------ 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/android/app/build.gradle b/android/app/build.gradle index 84d69254d241..5c232838f63a 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -179,7 +179,7 @@ android { minSdkVersion rootProject.ext.minSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion versionName "7.44.0" - versionCode 1676 + versionCode 1677 testBuildType System.getProperty('testBuildType', 'debug') missingDimensionStrategy 'react-native-camera', 'general' testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" diff --git a/bitrise.yml b/bitrise.yml index 31fb3302483d..c51217a9dd32 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -2125,13 +2125,13 @@ app: VERSION_NAME: 7.44.0 - opts: is_expand: false - VERSION_NUMBER: 1676 + VERSION_NUMBER: 1677 - opts: is_expand: false FLASK_VERSION_NAME: 7.44.0 - opts: is_expand: false - FLASK_VERSION_NUMBER: 1676 + FLASK_VERSION_NUMBER: 1677 - opts: is_expand: false ANDROID_APK_LINK: '' diff --git a/ios/MetaMask.xcodeproj/project.pbxproj b/ios/MetaMask.xcodeproj/project.pbxproj index f5df088baec2..2dbff31ccfbc 100644 --- a/ios/MetaMask.xcodeproj/project.pbxproj +++ b/ios/MetaMask.xcodeproj/project.pbxproj @@ -1437,7 +1437,7 @@ CODE_SIGN_IDENTITY = "Apple Development"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1676; + CURRENT_PROJECT_VERSION = 1677; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = 48XVW22RCG; @@ -1506,7 +1506,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMask.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1676; + CURRENT_PROJECT_VERSION = 1677; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 48XVW22RCG; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 48XVW22RCG; @@ -1571,7 +1571,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMaskDebug.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1676; + CURRENT_PROJECT_VERSION = 1677; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = 48XVW22RCG; @@ -1637,7 +1637,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMask.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1676; + CURRENT_PROJECT_VERSION = 1677; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 48XVW22RCG; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 48XVW22RCG; @@ -1796,7 +1796,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMaskDebug.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1676; + CURRENT_PROJECT_VERSION = 1677; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = 48XVW22RCG; @@ -1865,7 +1865,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMask.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1676; + CURRENT_PROJECT_VERSION = 1677; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 48XVW22RCG; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 48XVW22RCG; From bd8a49c7a207be73f9b4c51f2c9f6145a0aa950d Mon Sep 17 00:00:00 2001 From: metamaskbot <metamaskbot@users.noreply.github.com> Date: Wed, 9 Apr 2025 22:22:03 +0000 Subject: [PATCH 119/473] Bump version number to 1678 --- android/app/build.gradle | 2 +- bitrise.yml | 4 ++-- ios/MetaMask.xcodeproj/project.pbxproj | 12 ++++++------ 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/android/app/build.gradle b/android/app/build.gradle index 5c232838f63a..e21bdc34adc7 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -179,7 +179,7 @@ android { minSdkVersion rootProject.ext.minSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion versionName "7.44.0" - versionCode 1677 + versionCode 1678 testBuildType System.getProperty('testBuildType', 'debug') missingDimensionStrategy 'react-native-camera', 'general' testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" diff --git a/bitrise.yml b/bitrise.yml index c51217a9dd32..68f2a87916e0 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -2125,13 +2125,13 @@ app: VERSION_NAME: 7.44.0 - opts: is_expand: false - VERSION_NUMBER: 1677 + VERSION_NUMBER: 1678 - opts: is_expand: false FLASK_VERSION_NAME: 7.44.0 - opts: is_expand: false - FLASK_VERSION_NUMBER: 1677 + FLASK_VERSION_NUMBER: 1678 - opts: is_expand: false ANDROID_APK_LINK: '' diff --git a/ios/MetaMask.xcodeproj/project.pbxproj b/ios/MetaMask.xcodeproj/project.pbxproj index 2dbff31ccfbc..c9b85bf579d3 100644 --- a/ios/MetaMask.xcodeproj/project.pbxproj +++ b/ios/MetaMask.xcodeproj/project.pbxproj @@ -1437,7 +1437,7 @@ CODE_SIGN_IDENTITY = "Apple Development"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1677; + CURRENT_PROJECT_VERSION = 1678; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = 48XVW22RCG; @@ -1506,7 +1506,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMask.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1677; + CURRENT_PROJECT_VERSION = 1678; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 48XVW22RCG; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 48XVW22RCG; @@ -1571,7 +1571,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMaskDebug.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1677; + CURRENT_PROJECT_VERSION = 1678; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = 48XVW22RCG; @@ -1637,7 +1637,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMask.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1677; + CURRENT_PROJECT_VERSION = 1678; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 48XVW22RCG; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 48XVW22RCG; @@ -1796,7 +1796,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMaskDebug.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1677; + CURRENT_PROJECT_VERSION = 1678; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = 48XVW22RCG; @@ -1865,7 +1865,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMask.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1677; + CURRENT_PROJECT_VERSION = 1678; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 48XVW22RCG; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 48XVW22RCG; From f3c7b9aabf390277bd2335a52a19b2a414d77de4 Mon Sep 17 00:00:00 2001 From: "runway-github[bot]" <73448015+runway-github[bot]@users.noreply.github.com> Date: Thu, 10 Apr 2025 14:04:03 +0200 Subject: [PATCH 120/473] chore(runway): cherry-pick fix: deeplinks when non evm network is selected (#14521) (#14581) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - fix: deeplinks when non evm network is selected (#14521) Co-authored-by: tommasini <46944231+tommasini@users.noreply.github.com> Co-authored-by: João Loureiro <175489935+joaoloureirop@users.noreply.github.com> --- .../Handlers/handleEthereumUrl.test.ts | 37 +++++++++++++++++++ .../Handlers/handleEthereumUrl.ts | 7 ++++ 2 files changed, 44 insertions(+) diff --git a/app/core/DeeplinkManager/Handlers/handleEthereumUrl.test.ts b/app/core/DeeplinkManager/Handlers/handleEthereumUrl.test.ts index d0e41c0f27b4..be67aa1c2c52 100644 --- a/app/core/DeeplinkManager/Handlers/handleEthereumUrl.test.ts +++ b/app/core/DeeplinkManager/Handlers/handleEthereumUrl.test.ts @@ -5,6 +5,8 @@ import { NetworkSwitchErrorType } from '../../../constants/error'; import DeeplinkManager from '../DeeplinkManager'; import handleEthereumUrl from './handleEthereumUrl'; import { getDecimalChainId } from '../../../util/networks'; +import Engine from '../../Engine'; +import { MAINNET } from '../../../constants/network'; jest.mock('react-native'); @@ -20,6 +22,17 @@ jest.mock('../../../../locales/i18n', () => ({ strings: jest.fn((key) => key), })); +jest.mock('../../Engine', () => ({ + context: { + MultichainNetworkController: { + state: { + isEvmSelected: true, + }, + setActiveNetwork: jest.fn(), + }, + }, +})); + describe('handleEthereumUrl', () => { let deeplinkManager: DeeplinkManager; const mockParse = parse as jest.Mock; @@ -271,4 +284,28 @@ describe('handleEthereumUrl', () => { expect.any(Object), // The exact expectations here depend on the intended behavior ); }); + + it('switch to mainnet when isEvmSelected is false', async () => { + const url = 'ethereum:transfer'; + const origin = 'test_origin'; + const mockSetActiveNetwork = jest.fn(); + + mockParse.mockReturnValue({ + function_name: ETH_ACTIONS.TRANSFER, + chain_id: 1, + parameters: {}, + }); + + // Override the mock for this specific test + const mockState = Engine.context.MultichainNetworkController.state as { + isEvmSelected: boolean; + }; + mockState.isEvmSelected = false; + Engine.context.MultichainNetworkController.setActiveNetwork = + mockSetActiveNetwork; + + await handleEthereumUrl({ deeplinkManager, url, origin }); + + expect(mockSetActiveNetwork).toHaveBeenCalledWith(MAINNET); + }); }); diff --git a/app/core/DeeplinkManager/Handlers/handleEthereumUrl.ts b/app/core/DeeplinkManager/Handlers/handleEthereumUrl.ts index 9c2b2b68a501..405071be9828 100644 --- a/app/core/DeeplinkManager/Handlers/handleEthereumUrl.ts +++ b/app/core/DeeplinkManager/Handlers/handleEthereumUrl.ts @@ -7,6 +7,8 @@ import formattedDeeplinkParsedValue from '../../../util/formattedDeeplinkParsedV import { NetworkSwitchErrorType } from '../../../constants/error'; import { CHAIN_IDS } from '@metamask/transaction-controller'; import { getDecimalChainId } from '../../../util/networks'; +import Engine from '../../Engine'; +import { MAINNET } from '../../../constants/network'; async function handleEthereumUrl({ deeplinkManager, @@ -28,6 +30,11 @@ async function handleEthereumUrl({ const txMeta = { ...ethUrl, source: url }; try { + const { MultichainNetworkController } = Engine.context; + + if (!MultichainNetworkController.state.isEvmSelected) { + await MultichainNetworkController.setActiveNetwork(MAINNET); + } // If the deeplink has a goerli chainId, show deprecation modal and return if ( ethUrl.chain_id === getDecimalChainId(CHAIN_IDS.GOERLI) || From 0e52988125a208c5bfcce432ec0dc69450eee73e Mon Sep 17 00:00:00 2001 From: "runway-github[bot]" <73448015+runway-github[bot]@users.noreply.github.com> Date: Thu, 10 Apr 2025 14:21:27 +0200 Subject: [PATCH 121/473] chore(runway): cherry-pick fix: Resolve a couple of Snaps UI dark mode issues (#14353) (#14568) - fix: Resolve a couple of Snaps UI dark mode issues (#14353) Co-authored-by: Frederik Bolding <frederik.bolding@gmail.com> --- .../Snaps/SnapUIAddress/SnapUIAddress.tsx | 3 ++- .../__snapshots__/SnapUIAddress.test.tsx.snap | 26 +++++++++---------- .../SnapUIFooterButton/SnapUIFooterButton.tsx | 13 ++++------ .../SnapUIRenderer.test.tsx.snap | 12 ++++----- .../SnapUISelector/SnapUISelector.styles.ts | 4 +-- 5 files changed, 28 insertions(+), 30 deletions(-) diff --git a/app/components/Snaps/SnapUIAddress/SnapUIAddress.tsx b/app/components/Snaps/SnapUIAddress/SnapUIAddress.tsx index e1abb7e75188..63d5601073ba 100644 --- a/app/components/Snaps/SnapUIAddress/SnapUIAddress.tsx +++ b/app/components/Snaps/SnapUIAddress/SnapUIAddress.tsx @@ -58,6 +58,7 @@ export const SnapUIAddress: React.FunctionComponent<SnapUIAddressProps> = ({ const name = useDisplayName(parsed); + // TODO: This component should inherit font color, e.g. for link. return ( <Box flexDirection={FlexDirection.Row} @@ -65,7 +66,7 @@ export const SnapUIAddress: React.FunctionComponent<SnapUIAddressProps> = ({ gap={8} > {avatar && <SnapUIAvatar address={caipIdentifier} size={avatarSize} />} - <Text variant={TextVariant.BodyMD} color="inherit"> + <Text variant={TextVariant.BodyMD}> {displayName && name ? name : formattedAddress} </Text> </Box> diff --git a/app/components/Snaps/SnapUIAddress/__snapshots__/SnapUIAddress.test.tsx.snap b/app/components/Snaps/SnapUIAddress/__snapshots__/SnapUIAddress.test.tsx.snap index 1df64d384a80..59a854807d29 100644 --- a/app/components/Snaps/SnapUIAddress/__snapshots__/SnapUIAddress.test.tsx.snap +++ b/app/components/Snaps/SnapUIAddress/__snapshots__/SnapUIAddress.test.tsx.snap @@ -148,7 +148,7 @@ exports[`SnapUIAddress renders Bitcoin address 1`] = ` accessibilityRole="text" style={ { - "color": "inherit", + "color": "#141618", "fontFamily": "EuclidCircularB-Regular", "fontSize": 14, "fontWeight": "400", @@ -192,7 +192,7 @@ exports[`SnapUIAddress renders Bitcoin address with blockie 1`] = ` accessibilityRole="text" style={ { - "color": "inherit", + "color": "#141618", "fontFamily": "EuclidCircularB-Regular", "fontSize": 14, "fontWeight": "400", @@ -354,7 +354,7 @@ exports[`SnapUIAddress renders Cosmos address 1`] = ` accessibilityRole="text" style={ { - "color": "inherit", + "color": "#141618", "fontFamily": "EuclidCircularB-Regular", "fontSize": 14, "fontWeight": "400", @@ -398,7 +398,7 @@ exports[`SnapUIAddress renders Cosmos address with blockie 1`] = ` accessibilityRole="text" style={ { - "color": "inherit", + "color": "#141618", "fontFamily": "EuclidCircularB-Regular", "fontSize": 14, "fontWeight": "400", @@ -560,7 +560,7 @@ exports[`SnapUIAddress renders Ethereum address 1`] = ` accessibilityRole="text" style={ { - "color": "inherit", + "color": "#141618", "fontFamily": "EuclidCircularB-Regular", "fontSize": 14, "fontWeight": "400", @@ -604,7 +604,7 @@ exports[`SnapUIAddress renders Ethereum address with blockie 1`] = ` accessibilityRole="text" style={ { - "color": "inherit", + "color": "#141618", "fontFamily": "EuclidCircularB-Regular", "fontSize": 14, "fontWeight": "400", @@ -766,7 +766,7 @@ exports[`SnapUIAddress renders Hedera address 1`] = ` accessibilityRole="text" style={ { - "color": "inherit", + "color": "#141618", "fontFamily": "EuclidCircularB-Regular", "fontSize": 14, "fontWeight": "400", @@ -810,7 +810,7 @@ exports[`SnapUIAddress renders Hedera address with blockie 1`] = ` accessibilityRole="text" style={ { - "color": "inherit", + "color": "#141618", "fontFamily": "EuclidCircularB-Regular", "fontSize": 14, "fontWeight": "400", @@ -972,7 +972,7 @@ exports[`SnapUIAddress renders Polkadot address 1`] = ` accessibilityRole="text" style={ { - "color": "inherit", + "color": "#141618", "fontFamily": "EuclidCircularB-Regular", "fontSize": 14, "fontWeight": "400", @@ -1016,7 +1016,7 @@ exports[`SnapUIAddress renders Polkadot address with blockie 1`] = ` accessibilityRole="text" style={ { - "color": "inherit", + "color": "#141618", "fontFamily": "EuclidCircularB-Regular", "fontSize": 14, "fontWeight": "400", @@ -1178,7 +1178,7 @@ exports[`SnapUIAddress renders Starknet address 1`] = ` accessibilityRole="text" style={ { - "color": "inherit", + "color": "#141618", "fontFamily": "EuclidCircularB-Regular", "fontSize": 14, "fontWeight": "400", @@ -1222,7 +1222,7 @@ exports[`SnapUIAddress renders Starknet address with blockie 1`] = ` accessibilityRole="text" style={ { - "color": "inherit", + "color": "#141618", "fontFamily": "EuclidCircularB-Regular", "fontSize": 14, "fontWeight": "400", @@ -1384,7 +1384,7 @@ exports[`SnapUIAddress renders legacy Ethereum address 1`] = ` accessibilityRole="text" style={ { - "color": "inherit", + "color": "#141618", "fontFamily": "EuclidCircularB-Regular", "fontSize": 14, "fontWeight": "400", diff --git a/app/components/Snaps/SnapUIFooterButton/SnapUIFooterButton.tsx b/app/components/Snaps/SnapUIFooterButton/SnapUIFooterButton.tsx index eee244c1269f..db07723ee9a7 100644 --- a/app/components/Snaps/SnapUIFooterButton/SnapUIFooterButton.tsx +++ b/app/components/Snaps/SnapUIFooterButton/SnapUIFooterButton.tsx @@ -11,10 +11,7 @@ import { SnapIcon } from '../SnapIcon/SnapIcon'; import Text from '../../../component-library/components/Texts/Text'; import { useSelector } from 'react-redux'; import { selectSnaps } from '../../../selectors/snaps/snapController'; -import { - DEFAULT_BUTTONPRIMARY_LABEL_COLOR, - DEFAULT_BUTTONPRIMARY_LABEL_TEXTVARIANT, -} from '../../../component-library/components/Buttons/Button/variants/ButtonPrimary/ButtonPrimary.constants'; +import { DEFAULT_BUTTONPRIMARY_LABEL_TEXTVARIANT } from '../../../component-library/components/Buttons/Button/variants/ButtonPrimary/ButtonPrimary.constants'; import { FlexDirection, JustifyContent, @@ -32,7 +29,7 @@ const localStyles = StyleSheet.create({ flexDirection: FlexDirection.Row, alignItems: AlignItems.center, justifyContent: JustifyContent.center, - gap: 4, + gap: 8, }, }); @@ -100,7 +97,7 @@ export const SnapUIFooterButton: FunctionComponent<SnapUIFooterButtonProps> = ({ return ( <ActivityIndicator size="small" - color={DEFAULT_BUTTONPRIMARY_LABEL_COLOR} + color={theme.colors.primary.inverse} /> ); } else if (isSnapAction && !hideSnapBranding) { @@ -109,7 +106,7 @@ export const SnapUIFooterButton: FunctionComponent<SnapUIFooterButtonProps> = ({ <SnapIcon snapId={snapId} avatarSize={IconSize.Sm} /> <Text variant={DEFAULT_BUTTONPRIMARY_LABEL_TEXTVARIANT} - color={DEFAULT_BUTTONPRIMARY_LABEL_COLOR} + color={theme.colors.primary.inverse} > {children} </Text> @@ -121,7 +118,7 @@ export const SnapUIFooterButton: FunctionComponent<SnapUIFooterButtonProps> = ({ variant={DEFAULT_BUTTONPRIMARY_LABEL_TEXTVARIANT} color={ variant === ButtonVariants.Primary - ? DEFAULT_BUTTONPRIMARY_LABEL_COLOR + ? theme.colors.primary.inverse : theme.colors.primary.default } > diff --git a/app/components/Snaps/SnapUIRenderer/__snapshots__/SnapUIRenderer.test.tsx.snap b/app/components/Snaps/SnapUIRenderer/__snapshots__/SnapUIRenderer.test.tsx.snap index 05770da7d7a9..e4588b9d799c 100644 --- a/app/components/Snaps/SnapUIRenderer/__snapshots__/SnapUIRenderer.test.tsx.snap +++ b/app/components/Snaps/SnapUIRenderer/__snapshots__/SnapUIRenderer.test.tsx.snap @@ -1141,7 +1141,7 @@ exports[`SnapUIRenderer renders complex nested components 1`] = ` { "alignItems": "center", "flexDirection": "row", - "gap": 4, + "gap": 8, "justifyContent": "center", } } @@ -1370,7 +1370,7 @@ exports[`SnapUIRenderer renders footers 1`] = ` { "alignItems": "center", "flexDirection": "row", - "gap": 4, + "gap": 8, "justifyContent": "center", } } @@ -1986,7 +1986,7 @@ exports[`SnapUIRenderer supports forms with fields 1`] = ` "flexDirection": "row", "height": "auto", "justifyContent": "center", - "maxHeight": 64, + "maxHeight": 58, "minHeight": 48, "paddingBottom": 8, "paddingHorizontal": 16, @@ -2422,7 +2422,7 @@ exports[`SnapUIRenderer supports forms with fields 1`] = ` "flexDirection": "row", "height": "auto", "justifyContent": "center", - "maxHeight": 64, + "maxHeight": 58, "minHeight": 48, "paddingBottom": 8, "paddingHorizontal": 16, @@ -2572,7 +2572,7 @@ exports[`SnapUIRenderer supports forms with fields 1`] = ` "flexDirection": "row", "height": "auto", "justifyContent": "center", - "maxHeight": 64, + "maxHeight": 58, "minHeight": 48, "paddingBottom": 8, "paddingHorizontal": 16, @@ -3055,7 +3055,7 @@ exports[`SnapUIRenderer supports the onCancel prop 1`] = ` { "alignItems": "center", "flexDirection": "row", - "gap": 4, + "gap": 8, "justifyContent": "center", } } diff --git a/app/components/Snaps/SnapUISelector/SnapUISelector.styles.ts b/app/components/Snaps/SnapUISelector/SnapUISelector.styles.ts index 00ee4bf6a3bd..bb4b120174e7 100644 --- a/app/components/Snaps/SnapUISelector/SnapUISelector.styles.ts +++ b/app/components/Snaps/SnapUISelector/SnapUISelector.styles.ts @@ -29,7 +29,7 @@ const styleSheet = (params: { theme: Theme }) => { backgroundColor: colors.background.default, height: 'auto', minHeight: 48, - maxHeight: 64, + maxHeight: 58, borderColor: colors.border.muted, borderWidth: 1, borderRadius: 8, @@ -42,7 +42,7 @@ const styleSheet = (params: { theme: Theme }) => { backgroundColor: importedColors.transparent, height: 'auto', minHeight: 48, - maxHeight: 64, + maxHeight: 58, borderRadius: 8, paddingTop: 8, paddingBottom: 8, From e1b3f2cb621ec6e93d78a1632faa2c2c8ccb462f Mon Sep 17 00:00:00 2001 From: "runway-github[bot]" <73448015+runway-github[bot]@users.noreply.github.com> Date: Thu, 10 Apr 2025 16:14:01 +0200 Subject: [PATCH 122/473] chore(runway): cherry-pick a09607a (#14088) (#14585) - fix: cp-7.44.0 Update traits when tracked settings change 2/2 (#14088) --------- Co-authored-by: Nico MASSART <NicolasMassart@users.noreply.github.com> --- .../UI/CollectibleDetectionModal/index.tsx | 10 ++- .../NFTAutoDetectionModal.test.tsx | 53 ++++++++++++ .../NFTAutoDetectionModal.tsx | 12 ++- .../AutoDetectNFTSettings/index.test.tsx | 6 +- .../Settings/AutoDetectNFTSettings/index.tsx | 15 +++- .../__snapshots__/index.test.tsx.snap | 2 +- .../AutoDetectTokensSettings/index.test.tsx | 40 ++++++++- .../AutoDetectTokensSettings/index.tsx | 17 +++- .../BatchAccountBalanceSettings/index.tsx | 10 ++- .../__snapshots__/index.test.tsx.snap | 2 +- .../DisplayNFTMediaSettings/index.test.tsx | 48 ++++++++++- .../DisplayNFTMediaSettings/index.tsx | 16 +++- .../Sections/BlockaidSettings.tsx | 33 +++++--- .../ShowDisplayNFTMediaSheet.test.tsx | 81 ++++++++++++++++++- .../ShowDisplayNFTMediaSheet.tsx | 13 ++- .../ShowDisplayNFTMediaSheet.test.tsx.snap | 2 +- 16 files changed, 323 insertions(+), 37 deletions(-) diff --git a/app/components/UI/CollectibleDetectionModal/index.tsx b/app/components/UI/CollectibleDetectionModal/index.tsx index 760e876b1538..d25c0724405d 100644 --- a/app/components/UI/CollectibleDetectionModal/index.tsx +++ b/app/components/UI/CollectibleDetectionModal/index.tsx @@ -19,6 +19,8 @@ import { hideNftFetchingLoadingIndicator, showNftFetchingLoadingIndicator, } from '../../../reducers/collectibles'; +import { UserProfileProperty } from '../../../util/metrics/UserSettingsAnalyticsMetaData/UserProfileAnalyticsMetaData.types'; +import { useMetrics } from '../../hooks/useMetrics'; const styles = StyleSheet.create({ alertBar: { @@ -30,6 +32,7 @@ const styles = StyleSheet.create({ const CollectibleDetectionModal = () => { const { colors } = useTheme(); const { toastRef } = useContext(ToastContext); + const { addTraitsToUser } = useMetrics(); const showToastAndEnableNFtDetection = useCallback(async () => { // show toast @@ -45,6 +48,11 @@ const CollectibleDetectionModal = () => { const { PreferencesController, NftDetectionController } = Engine.context; PreferencesController.setDisplayNftMedia(true); PreferencesController.setUseNftDetection(true); + const traits = { + [UserProfileProperty.ENABLE_OPENSEA_API]: UserProfileProperty.ON, + [UserProfileProperty.NFT_AUTODETECTION]: UserProfileProperty.ON, + }; + addTraitsToUser(traits); // Call detect nfts showNftFetchingLoadingIndicator(); try { @@ -52,7 +60,7 @@ const CollectibleDetectionModal = () => { } finally { hideNftFetchingLoadingIndicator(); } - }, [colors.primary.inverse, toastRef]); + }, [colors.primary.inverse, toastRef, addTraitsToUser]); return ( <View style={styles.alertBar}> diff --git a/app/components/Views/NFTAutoDetectionModal/NFTAutoDetectionModal.test.tsx b/app/components/Views/NFTAutoDetectionModal/NFTAutoDetectionModal.test.tsx index 3196b86151bd..6f325ba92a44 100644 --- a/app/components/Views/NFTAutoDetectionModal/NFTAutoDetectionModal.test.tsx +++ b/app/components/Views/NFTAutoDetectionModal/NFTAutoDetectionModal.test.tsx @@ -8,6 +8,8 @@ import Routes from '../../../constants/navigation/Routes'; import Engine from '../../../core/Engine'; import { fireEvent } from '@testing-library/react-native'; import { RootState } from 'app/reducers'; +import { MetaMetricsEvents, useMetrics } from '../../hooks/useMetrics'; +import { MetricsEventBuilder } from '../../../core/Analytics/MetricsEventBuilder'; const setUseNftDetectionSpy = jest.spyOn( Engine.context.PreferencesController, @@ -37,6 +39,25 @@ const initialState = { }, }; +jest.mock('../../hooks/useMetrics'); + +const mockTrackEvent = jest.fn(); +const mockAddTraitsToUser = jest.fn(); + +(useMetrics as jest.MockedFn<typeof useMetrics>).mockReturnValue({ + trackEvent: mockTrackEvent, + createEventBuilder: MetricsEventBuilder.createEventBuilder, + enable: jest.fn(), + addTraitsToUser: mockAddTraitsToUser, + createDataDeletionTask: jest.fn(), + checkDataDeleteStatus: jest.fn(), + getDeleteRegulationCreationDate: jest.fn(), + getDeleteRegulationId: jest.fn(), + isDataRecorded: jest.fn(), + isEnabled: jest.fn(), + getMetaMetricsId: jest.fn(), +}); + const Stack = createStackNavigator(); const renderComponent = (state: DeepPartial<RootState> = {}) => @@ -72,6 +93,18 @@ describe('NFT Auto detection modal', () => { fireEvent.press(allowButton); expect(setUseNftDetectionSpy).toHaveBeenCalled(); expect(setDisplayNftMediaSpy).toHaveBeenCalled(); + + expect(mockAddTraitsToUser).toHaveBeenCalledWith({ + 'Enable OpenSea API': 'ON', + 'NFT Autodetection': 'ON', + }); + expect(mockTrackEvent).toHaveBeenCalledWith( + MetricsEventBuilder.createEventBuilder( + MetaMetricsEvents.NFT_AUTO_DETECTION_MODAL_ENABLE, + ) + .addProperties({ chainId: '0x1' }) + .build(), + ); }); it('calls setDisplayNftMedia when clicking on allow button if displayNftMedia if on', () => { @@ -81,6 +114,17 @@ describe('NFT Auto detection modal', () => { fireEvent.press(allowButton); expect(setUseNftDetectionSpy).toHaveBeenCalled(); expect(setDisplayNftMediaSpy).not.toHaveBeenCalled(); + + expect(mockAddTraitsToUser).toHaveBeenCalledWith({ + 'NFT Autodetection': 'ON', + }); + expect(mockTrackEvent).toHaveBeenCalledWith( + MetricsEventBuilder.createEventBuilder( + MetaMetricsEvents.NFT_AUTO_DETECTION_MODAL_ENABLE, + ) + .addProperties({ chainId: '0x1' }) + .build(), + ); }); it('Does not call setUseNftDetection nor setDisplayNftMedia when clicking on not right now button', () => { @@ -90,5 +134,14 @@ describe('NFT Auto detection modal', () => { fireEvent.press(cancelButton); expect(setUseNftDetectionSpy).not.toHaveBeenCalled(); expect(setDisplayNftMediaSpy).not.toHaveBeenCalled(); + + expect(mockAddTraitsToUser).not.toHaveBeenCalled(); + expect(mockTrackEvent).toHaveBeenCalledWith( + MetricsEventBuilder.createEventBuilder( + MetaMetricsEvents.NFT_AUTO_DETECTION_MODAL_DISABLE, + ) + .addProperties({ chainId: '0x1' }) + .build(), + ); }); }); diff --git a/app/components/Views/NFTAutoDetectionModal/NFTAutoDetectionModal.tsx b/app/components/Views/NFTAutoDetectionModal/NFTAutoDetectionModal.tsx index f26eacfc7eec..477801a20f2c 100644 --- a/app/components/Views/NFTAutoDetectionModal/NFTAutoDetectionModal.tsx +++ b/app/components/Views/NFTAutoDetectionModal/NFTAutoDetectionModal.tsx @@ -25,6 +25,7 @@ import { MetaMetricsEvents } from '../../../core/Analytics'; import { selectEvmChainId } from '../../../selectors/networkController'; import { useSelector } from 'react-redux'; import { selectDisplayNftMedia } from '../../../selectors/preferencesController'; +import { UserProfileProperty } from '../../../util/metrics/UserSettingsAnalyticsMetaData/UserProfileAnalyticsMetaData.types'; const walletImage = require('../../../images/wallet-alpha.png'); @@ -34,7 +35,7 @@ const NFTAutoDetectionModal = () => { const navigation = useNavigation(); const chainId = useSelector(selectEvmChainId); const displayNftMedia = useSelector(selectDisplayNftMedia); - const { trackEvent, createEventBuilder } = useMetrics(); + const { trackEvent, createEventBuilder, addTraitsToUser } = useMetrics(); const enableNftDetectionAndDismissModal = (value: boolean) => { if (value) { @@ -43,6 +44,15 @@ const NFTAutoDetectionModal = () => { PreferencesController.setDisplayNftMedia(true); } PreferencesController.setUseNftDetection(true); + + const traits = { + [UserProfileProperty.NFT_AUTODETECTION]: UserProfileProperty.ON, + ...(!displayNftMedia && { + [UserProfileProperty.ENABLE_OPENSEA_API]: UserProfileProperty.ON, + }), + }; + addTraitsToUser(traits); + trackEvent( createEventBuilder(MetaMetricsEvents.NFT_AUTO_DETECTION_MODAL_ENABLE) .addProperties({ diff --git a/app/components/Views/Settings/AutoDetectNFTSettings/index.test.tsx b/app/components/Views/Settings/AutoDetectNFTSettings/index.test.tsx index 7e47468c8d32..f60d44015cc4 100644 --- a/app/components/Views/Settings/AutoDetectNFTSettings/index.test.tsx +++ b/app/components/Views/Settings/AutoDetectNFTSettings/index.test.tsx @@ -122,13 +122,15 @@ describe('AutoDetectNFTSettings', () => { ).toHaveBeenCalledWith(true); expect(mockAddTraitsToUser).toHaveBeenCalledWith({ 'NFT Autodetection': 'ON', + 'Enable OpenSea API': 'ON', }); expect(mockTrackEvent).toHaveBeenCalledWith( MetricsEventBuilder.createEventBuilder( MetaMetricsEvents.NFT_AUTO_DETECTION_ENABLED, ) .addProperties({ - 'NFT Autodetection': 'ON', + 'NFT Autodetection': true, + 'Enable OpenSea API': true, location: 'app_settings', }) .build(), @@ -154,7 +156,7 @@ describe('AutoDetectNFTSettings', () => { MetaMetricsEvents.NFT_AUTO_DETECTION_ENABLED, ) .addProperties({ - 'NFT Autodetection': 'OFF', + 'NFT Autodetection': false, location: 'app_settings', }) .build(), diff --git a/app/components/Views/Settings/AutoDetectNFTSettings/index.tsx b/app/components/Views/Settings/AutoDetectNFTSettings/index.tsx index f656a2377e4a..123845e09159 100644 --- a/app/components/Views/Settings/AutoDetectNFTSettings/index.tsx +++ b/app/components/Views/Settings/AutoDetectNFTSettings/index.tsx @@ -34,16 +34,23 @@ const AutoDetectNFTSettings = () => { PreferencesController.setDisplayNftMedia(value); } PreferencesController.setUseNftDetection(value); - const traits = { + + addTraitsToUser({ + ...(value && { + [UserProfileProperty.ENABLE_OPENSEA_API]: value + ? UserProfileProperty.ON + : UserProfileProperty.OFF, + }), [UserProfileProperty.NFT_AUTODETECTION]: value ? UserProfileProperty.ON : UserProfileProperty.OFF, - }; - addTraitsToUser(traits); + }); + trackEvent( createEventBuilder(MetaMetricsEvents.NFT_AUTO_DETECTION_ENABLED) .addProperties({ - ...traits, + ...(value && { [UserProfileProperty.ENABLE_OPENSEA_API]: value }), + [UserProfileProperty.NFT_AUTODETECTION]: value, location: 'app_settings', }) .build(), diff --git a/app/components/Views/Settings/AutoDetectTokensSettings/__snapshots__/index.test.tsx.snap b/app/components/Views/Settings/AutoDetectTokensSettings/__snapshots__/index.test.tsx.snap index a324351f863b..030f02c8e054 100644 --- a/app/components/Views/Settings/AutoDetectTokensSettings/__snapshots__/index.test.tsx.snap +++ b/app/components/Views/Settings/AutoDetectTokensSettings/__snapshots__/index.test.tsx.snap @@ -1,6 +1,6 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`AssetSettings should render correctly 1`] = ` +exports[`AssetSettings render matches snapshot 1`] = ` <View style={ { diff --git a/app/components/Views/Settings/AutoDetectTokensSettings/index.test.tsx b/app/components/Views/Settings/AutoDetectTokensSettings/index.test.tsx index c463bb86e38c..04012c773fb7 100644 --- a/app/components/Views/Settings/AutoDetectTokensSettings/index.test.tsx +++ b/app/components/Views/Settings/AutoDetectTokensSettings/index.test.tsx @@ -10,6 +10,7 @@ import { backgroundState } from '../../../../util/test/initial-root-state'; // Internal dependencies import AssetSettings from '.'; import { TOKEN_DETECTION_TOGGLE } from './index.constants'; +import { useMetrics } from '../../../hooks/useMetrics'; let mockSetUseTokenDetection: jest.Mock; @@ -31,6 +32,24 @@ jest.mock('../../../../core/Engine', () => { }; }); +jest.mock('../../../hooks/useMetrics'); + +const mockAddTraitsToUser = jest.fn(); + +(useMetrics as jest.MockedFn<typeof useMetrics>).mockReturnValue({ + trackEvent: jest.fn(), + createEventBuilder: jest.fn(), + enable: jest.fn(), + addTraitsToUser: mockAddTraitsToUser, + createDataDeletionTask: jest.fn(), + checkDataDeleteStatus: jest.fn(), + getDeleteRegulationCreationDate: jest.fn(), + getDeleteRegulationId: jest.fn(), + isDataRecorded: jest.fn(), + isEnabled: jest.fn(), + getMetaMetricsId: jest.fn(), +}); + describe('AssetSettings', () => { beforeEach(() => { jest.clearAllMocks(); @@ -48,7 +67,7 @@ describe('AssetSettings', () => { }, }; - it('should render correctly', () => { + it('render matches snapshot', () => { const tree = renderWithProvider(<AssetSettings />, { state: initialState, }); @@ -56,13 +75,30 @@ describe('AssetSettings', () => { }); describe('Token Detection', () => { - it('should toggle token detection when switch is pressed', () => { + it('toggles token detection off', () => { const { getByTestId } = renderWithProvider(<AssetSettings />, { state: initialState, }); const toggleSwitch = getByTestId(TOKEN_DETECTION_TOGGLE); fireEvent(toggleSwitch, 'onValueChange', false); expect(mockSetUseTokenDetection).toHaveBeenCalledWith(false); + expect(mockAddTraitsToUser).toHaveBeenCalledWith({ + token_detection_enable: 'OFF', + }); + }); + + it('toggles token detection on', () => { + initialState.engine.backgroundState.PreferencesController.useTokenDetection = + false; + const { getByTestId } = renderWithProvider(<AssetSettings />, { + state: initialState, + }); + const toggleSwitch = getByTestId(TOKEN_DETECTION_TOGGLE); + fireEvent(toggleSwitch, 'onValueChange', true); + expect(mockSetUseTokenDetection).toHaveBeenCalledWith(true); + expect(mockAddTraitsToUser).toHaveBeenCalledWith({ + token_detection_enable: 'ON', + }); }); }); }); diff --git a/app/components/Views/Settings/AutoDetectTokensSettings/index.tsx b/app/components/Views/Settings/AutoDetectTokensSettings/index.tsx index d6ba8bb075e2..ee95d18142fb 100644 --- a/app/components/Views/Settings/AutoDetectTokensSettings/index.tsx +++ b/app/components/Views/Settings/AutoDetectTokensSettings/index.tsx @@ -17,17 +17,28 @@ import Text, { // Internal dependencies import styleSheet from './index.styles'; import { TOKEN_DETECTION_TOGGLE } from './index.constants'; +import { UserProfileProperty } from '../../../../util/metrics/UserSettingsAnalyticsMetaData/UserProfileAnalyticsMetaData.types'; +import { useMetrics } from '../../../hooks/useMetrics'; const AutoDetectTokensSettings = () => { const theme = useTheme(); const { colors } = theme; const { styles } = useStyles(styleSheet, {}); + const { addTraitsToUser } = useMetrics(); const isTokenDetectionEnabled = useSelector(selectUseTokenDetection); - const toggleTokenDetection = useCallback((value: boolean) => { - Engine.context.PreferencesController.setUseTokenDetection(value); - }, []); + const toggleTokenDetection = useCallback( + (value: boolean) => { + Engine.context.PreferencesController.setUseTokenDetection(value); + addTraitsToUser({ + [UserProfileProperty.TOKEN_DETECTION]: value + ? UserProfileProperty.ON + : UserProfileProperty.OFF, + }); + }, + [addTraitsToUser], + ); return ( <View style={styles.setting}> diff --git a/app/components/Views/Settings/BatchAccountBalanceSettings/index.tsx b/app/components/Views/Settings/BatchAccountBalanceSettings/index.tsx index 46e4133aa7ad..01688c803231 100644 --- a/app/components/Views/Settings/BatchAccountBalanceSettings/index.tsx +++ b/app/components/Views/Settings/BatchAccountBalanceSettings/index.tsx @@ -16,12 +16,15 @@ import { BATCH_BALANCE_REQUESTS_SECTION, SECURITY_PRIVACY_MULTI_ACCOUNT_BALANCES_TOGGLE_ID, } from './index.constants'; +import { UserProfileProperty } from '../../../../util/metrics/UserSettingsAnalyticsMetaData/UserProfileAnalyticsMetaData.types'; +import { useMetrics } from '../../../hooks/useMetrics'; const BatchAccountBalanceSettings = () => { const { PreferencesController } = Engine.context; const theme = useTheme(); const { colors } = theme; const { styles } = useStyles(styleSheet, {}); + const { addTraitsToUser } = useMetrics(); const isMultiAccountBalancesEnabled = useSelector( selectIsMultiAccountBalancesEnabled, @@ -32,8 +35,13 @@ const BatchAccountBalanceSettings = () => { PreferencesController.setIsMultiAccountBalancesEnabled( multiAccountBalancesEnabled, ); + addTraitsToUser({ + [UserProfileProperty.MULTI_ACCOUNT_BALANCE]: multiAccountBalancesEnabled + ? UserProfileProperty.ON + : UserProfileProperty.OFF, + }); }, - [PreferencesController], + [PreferencesController, addTraitsToUser], ); return ( diff --git a/app/components/Views/Settings/DisplayNFTMediaSettings/__snapshots__/index.test.tsx.snap b/app/components/Views/Settings/DisplayNFTMediaSettings/__snapshots__/index.test.tsx.snap index d065aa713fe2..123ab022ad66 100644 --- a/app/components/Views/Settings/DisplayNFTMediaSettings/__snapshots__/index.test.tsx.snap +++ b/app/components/Views/Settings/DisplayNFTMediaSettings/__snapshots__/index.test.tsx.snap @@ -1,6 +1,6 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`DisplayNFTMediaSettings should render correctly 1`] = ` +exports[`DisplayNFTMediaSettings render matches snapshot 1`] = ` <View style={ { diff --git a/app/components/Views/Settings/DisplayNFTMediaSettings/index.test.tsx b/app/components/Views/Settings/DisplayNFTMediaSettings/index.test.tsx index 830474e13d6c..9b8841dc853e 100644 --- a/app/components/Views/Settings/DisplayNFTMediaSettings/index.test.tsx +++ b/app/components/Views/Settings/DisplayNFTMediaSettings/index.test.tsx @@ -5,6 +5,8 @@ import renderWithProvider from '../../../../util/test/renderWithProvider'; import { backgroundState } from '../../../../util/test/initial-root-state'; import DisplayNFTMediaSettings from '.'; import { NFT_DISPLAY_MEDIA_MODE_SECTION } from './index.constants'; +import { useMetrics } from '../../../hooks/useMetrics'; +import { MetricsEventBuilder } from '../../../../core/Analytics/MetricsEventBuilder'; let mockSetDisplayNftMedia: jest.Mock; let mockSetUseNftDetection: jest.Mock; @@ -30,6 +32,25 @@ jest.mock('../../../../core/Engine', () => { }; }); +jest.mock('../../../hooks/useMetrics'); + +const mockTrackEvent = jest.fn(); +const mockAddTraitsToUser = jest.fn(); + +(useMetrics as jest.MockedFn<typeof useMetrics>).mockReturnValue({ + trackEvent: mockTrackEvent, + createEventBuilder: MetricsEventBuilder.createEventBuilder, + enable: jest.fn(), + addTraitsToUser: mockAddTraitsToUser, + createDataDeletionTask: jest.fn(), + checkDataDeleteStatus: jest.fn(), + getDeleteRegulationCreationDate: jest.fn(), + getDeleteRegulationId: jest.fn(), + isDataRecorded: jest.fn(), + isEnabled: jest.fn(), + getMetaMetricsId: jest.fn(), +}); + describe('DisplayNFTMediaSettings', () => { beforeEach(() => { jest.clearAllMocks(); @@ -48,7 +69,7 @@ describe('DisplayNFTMediaSettings', () => { }, }; - it('should render correctly', () => { + it('render matches snapshot', () => { const tree = renderWithProvider(<DisplayNFTMediaSettings />, { state: initialState, }); @@ -56,19 +77,42 @@ describe('DisplayNFTMediaSettings', () => { }); describe('Display NFT Media', () => { - it('should toggle display NFT media when switch is pressed', () => { + it('toggles display NFT media ON', () => { const { getByTestId } = renderWithProvider(<DisplayNFTMediaSettings />, { state: initialState, }); const toggleSwitch = getByTestId(NFT_DISPLAY_MEDIA_MODE_SECTION); fireEvent(toggleSwitch, 'onValueChange', true); + + // only displayNftMedia should be set to true + // useNftDetection should remain false as it's optional expect(mockSetDisplayNftMedia).toHaveBeenCalledWith(true); expect(mockSetUseNftDetection).not.toHaveBeenCalled(); + expect(mockAddTraitsToUser).toHaveBeenCalledWith({ + 'Enable OpenSea API': 'ON', + }); + }); + + it('toggles display NFT media OFF', () => { + initialState.engine.backgroundState.PreferencesController.displayNftMedia = + true; + + const { getByTestId } = renderWithProvider(<DisplayNFTMediaSettings />, { + state: initialState, + }); + const toggleSwitch = getByTestId(NFT_DISPLAY_MEDIA_MODE_SECTION); fireEvent(toggleSwitch, 'onValueChange', false); + + // Both displayNftMedia and useNftDetection should be set to false + // as useNftDetection is dependent on displayNftMedia expect(mockSetDisplayNftMedia).toHaveBeenCalledWith(false); expect(mockSetUseNftDetection).toHaveBeenCalledWith(false); + expect(mockAddTraitsToUser).toHaveBeenCalledWith({ + 'NFT Autodetection': 'OFF', + 'Enable OpenSea API': 'OFF', + }); }); }); }); diff --git a/app/components/Views/Settings/DisplayNFTMediaSettings/index.tsx b/app/components/Views/Settings/DisplayNFTMediaSettings/index.tsx index 00f35360306c..78c07db64879 100644 --- a/app/components/Views/Settings/DisplayNFTMediaSettings/index.tsx +++ b/app/components/Views/Settings/DisplayNFTMediaSettings/index.tsx @@ -12,18 +12,32 @@ import Text, { } from '../../../../component-library/components/Texts/Text'; import styleSheet from './index.styles'; import { NFT_DISPLAY_MEDIA_MODE_SECTION } from './index.constants'; +import { UserProfileProperty } from '../../../../util/metrics/UserSettingsAnalyticsMetaData/UserProfileAnalyticsMetaData.types'; +import { useMetrics } from '../../../hooks/useMetrics'; const DisplayNFTMediaSettings = () => { const theme = useTheme(); const { colors } = theme; const { styles } = useStyles(styleSheet, {}); + const { addTraitsToUser } = useMetrics(); const displayNftMedia = useSelector(selectDisplayNftMedia); const toggleDisplayNftMedia = (value: boolean) => { const { PreferencesController } = Engine.context; PreferencesController?.setDisplayNftMedia(value); - if (!value) PreferencesController?.setUseNftDetection(value); + if (!value) { + PreferencesController?.setUseNftDetection(false); + } + const traits = { + [UserProfileProperty.ENABLE_OPENSEA_API]: value + ? UserProfileProperty.ON + : UserProfileProperty.OFF, + ...(!value && { + [UserProfileProperty.NFT_AUTODETECTION]: UserProfileProperty.OFF, + }), + }; + addTraitsToUser(traits); }; return ( diff --git a/app/components/Views/Settings/SecuritySettings/Sections/BlockaidSettings.tsx b/app/components/Views/Settings/SecuritySettings/Sections/BlockaidSettings.tsx index 98a068e294bd..03cdecabad90 100644 --- a/app/components/Views/Settings/SecuritySettings/Sections/BlockaidSettings.tsx +++ b/app/components/Views/Settings/SecuritySettings/Sections/BlockaidSettings.tsx @@ -13,29 +13,36 @@ import { MetaMetricsEvents } from '../../../../../core/Analytics'; import SECURITY_ALERTS_TOGGLE_TEST_ID from '../constants'; import createStyles from './BlockaidSettings.styles'; import { useMetrics } from '../../../../../components/hooks/useMetrics'; +import { UserProfileProperty } from '../../../../../util/metrics/UserSettingsAnalyticsMetaData/UserProfileAnalyticsMetaData.types'; const BlockaidSettings = () => { const theme = useTheme(); const { colors } = useTheme(); - const { trackEvent, createEventBuilder } = useMetrics(); + const { trackEvent, createEventBuilder, addTraitsToUser } = useMetrics(); const styles = createStyles(); const securityAlertsEnabled = useSelector(selectIsSecurityAlertsEnabled); const toggleSecurityAlertsEnabled = () => { + const newSecurityAlertsEnabledState = !securityAlertsEnabled; + const { PreferencesController } = Engine.context; + PreferencesController?.setSecurityAlertsEnabled( + newSecurityAlertsEnabledState, + ); + + trackEvent( + createEventBuilder(MetaMetricsEvents.SETTINGS_SECURITY_ALERTS_ENABLED) + .addProperties({ + security_alerts_enabled: newSecurityAlertsEnabledState, + }) + .build(), + ); - if (securityAlertsEnabled) { - PreferencesController?.setSecurityAlertsEnabled(false); - trackEvent( - createEventBuilder(MetaMetricsEvents.SETTINGS_SECURITY_ALERTS_ENABLED) - .addProperties({ - security_alerts_enabled: false, - }) - .build(), - ); - } else { - PreferencesController?.setSecurityAlertsEnabled(true); - } + addTraitsToUser({ + [UserProfileProperty.SECURITY_PROVIDERS]: newSecurityAlertsEnabledState + ? 'blockaid' + : '', + }); }; return ( diff --git a/app/components/Views/ShowDisplayMediaNFTSheet/ShowDisplayNFTMediaSheet.test.tsx b/app/components/Views/ShowDisplayMediaNFTSheet/ShowDisplayNFTMediaSheet.test.tsx index 767fad715b04..c481df8559b7 100644 --- a/app/components/Views/ShowDisplayMediaNFTSheet/ShowDisplayNFTMediaSheet.test.tsx +++ b/app/components/Views/ShowDisplayMediaNFTSheet/ShowDisplayNFTMediaSheet.test.tsx @@ -5,6 +5,22 @@ import { backgroundState } from '../../../util/test/initial-root-state'; import ShowDisplayNFTMediaSheet from './ShowDisplayNFTMediaSheet'; import Routes from '../../../constants/navigation/Routes'; +import {fireEvent} from '@testing-library/react-native'; +import Engine from '../../../core/Engine'; +import {useMetrics} from '../../hooks/useMetrics'; + +const setDisplayNftMediaSpy = jest.spyOn( + Engine.context.PreferencesController, + 'setDisplayNftMedia', +); +jest.mock('../../../core/Engine', () => ({ + context: { + PreferencesController: { + setUseNftDetection: jest.fn(), + setDisplayNftMedia: jest.fn(), + }, + }, +})); const initialState = { engine: { @@ -12,10 +28,33 @@ const initialState = { }, }; +jest.mock('../../hooks/useMetrics'); + +const mockAddTraitsToUser = jest.fn(); + +(useMetrics as jest.MockedFn<typeof useMetrics>).mockReturnValue({ + trackEvent: jest.fn(), + createEventBuilder: jest.fn(), + enable: jest.fn(), + addTraitsToUser: mockAddTraitsToUser, + createDataDeletionTask: jest.fn(), + checkDataDeleteStatus: jest.fn(), + getDeleteRegulationCreationDate: jest.fn(), + getDeleteRegulationId: jest.fn(), + isDataRecorded: jest.fn(), + isEnabled: jest.fn(), + getMetaMetricsId: jest.fn(), +}); + const Stack = createStackNavigator(); describe('ShowNftSheet', () => { - it('should render correctly', () => { + + beforeEach(() => { + jest.clearAllMocks(); + }); + + it('render matches snapshot', () => { const { toJSON } = renderWithProvider( <Stack.Navigator> <Stack.Screen name={Routes.SHEET.SHOW_NFT_DISPLAY_MEDIA}> @@ -29,4 +68,44 @@ describe('ShowNftSheet', () => { expect(toJSON()).toMatchSnapshot(); }); + + it('setDisplayNftMedia to true on confirm', () => { + const { getByText } = renderWithProvider( + <Stack.Navigator> + <Stack.Screen name={Routes.SHEET.SHOW_NFT_DISPLAY_MEDIA}> + {() => <ShowDisplayNFTMediaSheet />} + </Stack.Screen> + </Stack.Navigator>, + { + state: initialState, + }, + ); + + const confirmButton = getByText('Confirm'); + + fireEvent.press(confirmButton); + + expect(setDisplayNftMediaSpy).toHaveBeenCalledWith(true); + expect(mockAddTraitsToUser).toHaveBeenCalledWith({'Enable OpenSea API': 'ON'}); + }); + + it('do not call setDisplayNftMedia on cancel', () => { + const { getByText } = renderWithProvider( + <Stack.Navigator> + <Stack.Screen name={Routes.SHEET.SHOW_NFT_DISPLAY_MEDIA}> + {() => <ShowDisplayNFTMediaSheet />} + </Stack.Screen> + </Stack.Navigator>, + { + state: initialState, + }, + ); + + const cancelButton = getByText('Cancel'); + + fireEvent.press(cancelButton); + + expect(setDisplayNftMediaSpy).not.toHaveBeenCalled(); + expect(mockAddTraitsToUser).not.toHaveBeenCalled(); + }); }); diff --git a/app/components/Views/ShowDisplayMediaNFTSheet/ShowDisplayNFTMediaSheet.tsx b/app/components/Views/ShowDisplayMediaNFTSheet/ShowDisplayNFTMediaSheet.tsx index 2b039a88d149..5eba2fc19c73 100644 --- a/app/components/Views/ShowDisplayMediaNFTSheet/ShowDisplayNFTMediaSheet.tsx +++ b/app/components/Views/ShowDisplayMediaNFTSheet/ShowDisplayNFTMediaSheet.tsx @@ -14,16 +14,23 @@ import SheetActionView from '../../../components/UI/SheetActionView'; // Internal dependencies import createStyles from './ShowDisplayNFTMediaSheet.styles'; +import { UserProfileProperty } from '../../../util/metrics/UserSettingsAnalyticsMetaData/UserProfileAnalyticsMetaData.types'; +import { useMetrics } from '../../hooks/useMetrics'; const ShowDisplayNftMediaSheet = () => { const styles = createStyles(); const sheetRef = useRef<BottomSheetRef>(null); + const { addTraitsToUser } = useMetrics(); const onConfirm = () => { const { PreferencesController } = Engine.context; - sheetRef.current?.onCloseBottomSheet(() => - PreferencesController.setDisplayNftMedia(true), - ); + sheetRef.current?.onCloseBottomSheet(() => { + PreferencesController.setDisplayNftMedia(true); + const traits = { + [UserProfileProperty.ENABLE_OPENSEA_API]: UserProfileProperty.ON, + }; + addTraitsToUser(traits); + }); }; const onCancel = () => { diff --git a/app/components/Views/ShowDisplayMediaNFTSheet/__snapshots__/ShowDisplayNFTMediaSheet.test.tsx.snap b/app/components/Views/ShowDisplayMediaNFTSheet/__snapshots__/ShowDisplayNFTMediaSheet.test.tsx.snap index e8274f8a2271..8ea2fc5bb584 100644 --- a/app/components/Views/ShowDisplayMediaNFTSheet/__snapshots__/ShowDisplayNFTMediaSheet.test.tsx.snap +++ b/app/components/Views/ShowDisplayMediaNFTSheet/__snapshots__/ShowDisplayNFTMediaSheet.test.tsx.snap @@ -1,6 +1,6 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`ShowNftSheet should render correctly 1`] = ` +exports[`ShowNftSheet render matches snapshot 1`] = ` <View style={ { From eae1be3b1460c21eae1609e9e7a97293849ca233 Mon Sep 17 00:00:00 2001 From: metamaskbot <metamaskbot@users.noreply.github.com> Date: Thu, 10 Apr 2025 20:39:56 +0000 Subject: [PATCH 123/473] bump semvar version to 7.45.0 && build version to 1680 --- android/app/build.gradle | 4 ++-- bitrise.yml | 8 ++++---- ios/MetaMask.xcodeproj/project.pbxproj | 24 ++++++++++++------------ package.json | 2 +- 4 files changed, 19 insertions(+), 19 deletions(-) diff --git a/android/app/build.gradle b/android/app/build.gradle index ad8436cb6e38..b29c08757487 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -178,8 +178,8 @@ android { applicationId "io.metamask" minSdkVersion rootProject.ext.minSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion - versionName "7.43.0" - versionCode 1656 + versionName "7.45.0" + versionCode 1680 testBuildType System.getProperty('testBuildType', 'debug') missingDimensionStrategy 'react-native-camera', 'general' testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" diff --git a/bitrise.yml b/bitrise.yml index 5f9e3f8453ef..7e3110012504 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -2232,16 +2232,16 @@ app: PROJECT_LOCATION_IOS: ios - opts: is_expand: false - VERSION_NAME: 7.43.0 + VERSION_NAME: 7.45.0 - opts: is_expand: false - VERSION_NUMBER: 1656 + VERSION_NUMBER: 1680 - opts: is_expand: false - FLASK_VERSION_NAME: 7.43.0 + FLASK_VERSION_NAME: 7.45.0 - opts: is_expand: false - FLASK_VERSION_NUMBER: 1656 + FLASK_VERSION_NUMBER: 1680 - opts: is_expand: false ANDROID_APK_LINK: '' diff --git a/ios/MetaMask.xcodeproj/project.pbxproj b/ios/MetaMask.xcodeproj/project.pbxproj index 4054da37f005..a2bb527a8ebf 100644 --- a/ios/MetaMask.xcodeproj/project.pbxproj +++ b/ios/MetaMask.xcodeproj/project.pbxproj @@ -1261,7 +1261,7 @@ CODE_SIGN_IDENTITY = "Apple Development"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1656; + CURRENT_PROJECT_VERSION = 1680; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = 48XVW22RCG; @@ -1299,7 +1299,7 @@ "${inherited}", ); LLVM_LTO = YES; - MARKETING_VERSION = 7.43.0; + MARKETING_VERSION = 7.45.0; ONLY_ACTIVE_ARCH = YES; OTHER_CFLAGS = "$(inherited)"; OTHER_LDFLAGS = ( @@ -1330,7 +1330,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMask.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1656; + CURRENT_PROJECT_VERSION = 1680; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 48XVW22RCG; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 48XVW22RCG; @@ -1365,7 +1365,7 @@ "${inherited}", ); LLVM_LTO = YES; - MARKETING_VERSION = 7.43.0; + MARKETING_VERSION = 7.45.0; ONLY_ACTIVE_ARCH = NO; OTHER_CFLAGS = "$(inherited)"; OTHER_LDFLAGS = ( @@ -1395,7 +1395,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMaskDebug.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1656; + CURRENT_PROJECT_VERSION = 1680; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = 48XVW22RCG; @@ -1432,7 +1432,7 @@ "\"$(SRCROOT)/MetaMask/System/Library/Frameworks\"", ); LLVM_LTO = YES; - MARKETING_VERSION = 7.43.0; + MARKETING_VERSION = 7.45.0; ONLY_ACTIVE_ARCH = YES; OTHER_CFLAGS = "$(inherited)"; OTHER_LDFLAGS = ( @@ -1461,7 +1461,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMask.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1656; + CURRENT_PROJECT_VERSION = 1680; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 48XVW22RCG; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 48XVW22RCG; @@ -1496,7 +1496,7 @@ "\"$(SRCROOT)/MetaMask/System/Library/Frameworks\"", ); LLVM_LTO = YES; - MARKETING_VERSION = 7.43.0; + MARKETING_VERSION = 7.45.0; ONLY_ACTIVE_ARCH = NO; OTHER_CFLAGS = "$(inherited)"; OTHER_LDFLAGS = ( @@ -1620,7 +1620,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMaskDebug.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1656; + CURRENT_PROJECT_VERSION = 1680; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = 48XVW22RCG; @@ -1657,7 +1657,7 @@ "\"$(SRCROOT)/MetaMask/System/Library/Frameworks\"", ); LLVM_LTO = YES; - MARKETING_VERSION = 7.43.0; + MARKETING_VERSION = 7.45.0; ONLY_ACTIVE_ARCH = YES; OTHER_CFLAGS = ( "$(inherited)", @@ -1689,7 +1689,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMask.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1656; + CURRENT_PROJECT_VERSION = 1680; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 48XVW22RCG; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 48XVW22RCG; @@ -1724,7 +1724,7 @@ "\"$(SRCROOT)/MetaMask/System/Library/Frameworks\"", ); LLVM_LTO = YES; - MARKETING_VERSION = 7.43.0; + MARKETING_VERSION = 7.45.0; ONLY_ACTIVE_ARCH = NO; OTHER_CFLAGS = ( "$(inherited)", diff --git a/package.json b/package.json index 56ccdf46b35a..3e7aff2551b3 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "metamask", - "version": "7.43.0", + "version": "7.45.0", "private": true, "scripts": { "audit:ci": "./scripts/yarn-audit.sh", From f361ca3e2e04afae816db0710338a40cb2c7c366 Mon Sep 17 00:00:00 2001 From: metamaskbot <metamaskbot@users.noreply.github.com> Date: Thu, 10 Apr 2025 23:08:47 +0000 Subject: [PATCH 124/473] Bump version number to 1681 --- android/app/build.gradle | 2 +- bitrise.yml | 4 ++-- ios/MetaMask.xcodeproj/project.pbxproj | 12 ++++++------ 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/android/app/build.gradle b/android/app/build.gradle index b29c08757487..87c2e75350ba 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -179,7 +179,7 @@ android { minSdkVersion rootProject.ext.minSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion versionName "7.45.0" - versionCode 1680 + versionCode 1681 testBuildType System.getProperty('testBuildType', 'debug') missingDimensionStrategy 'react-native-camera', 'general' testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" diff --git a/bitrise.yml b/bitrise.yml index 7e3110012504..dea80b670f35 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -2235,13 +2235,13 @@ app: VERSION_NAME: 7.45.0 - opts: is_expand: false - VERSION_NUMBER: 1680 + VERSION_NUMBER: 1681 - opts: is_expand: false FLASK_VERSION_NAME: 7.45.0 - opts: is_expand: false - FLASK_VERSION_NUMBER: 1680 + FLASK_VERSION_NUMBER: 1681 - opts: is_expand: false ANDROID_APK_LINK: '' diff --git a/ios/MetaMask.xcodeproj/project.pbxproj b/ios/MetaMask.xcodeproj/project.pbxproj index a2bb527a8ebf..6f520d5fa289 100644 --- a/ios/MetaMask.xcodeproj/project.pbxproj +++ b/ios/MetaMask.xcodeproj/project.pbxproj @@ -1261,7 +1261,7 @@ CODE_SIGN_IDENTITY = "Apple Development"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1680; + CURRENT_PROJECT_VERSION = 1681; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = 48XVW22RCG; @@ -1330,7 +1330,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMask.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1680; + CURRENT_PROJECT_VERSION = 1681; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 48XVW22RCG; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 48XVW22RCG; @@ -1395,7 +1395,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMaskDebug.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1680; + CURRENT_PROJECT_VERSION = 1681; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = 48XVW22RCG; @@ -1461,7 +1461,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMask.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1680; + CURRENT_PROJECT_VERSION = 1681; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 48XVW22RCG; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 48XVW22RCG; @@ -1620,7 +1620,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMaskDebug.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1680; + CURRENT_PROJECT_VERSION = 1681; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = 48XVW22RCG; @@ -1689,7 +1689,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMask.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1680; + CURRENT_PROJECT_VERSION = 1681; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 48XVW22RCG; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 48XVW22RCG; From 1b99c45f49c169cb612696fbf7314d8a3b31f3c3 Mon Sep 17 00:00:00 2001 From: MetaMask Bot <37885440+metamaskbot@users.noreply.github.com> Date: Thu, 10 Apr 2025 18:37:14 -0600 Subject: [PATCH 125/473] chore: chore/7.45.0-Changelog (#14598) This PR updates the change log for 7.45.0 and generates the test plan here [commit.csv](https://github.com/MetaMask/metamask-mobile/blob/chore/7.45.0-Changelog/commits.csv) --------- Co-authored-by: metamaskbot <metamaskbot@users.noreply.github.com> --- CHANGELOG.md | 161 ++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 160 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9a78e81b0686..12d39e1fba5e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,164 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +## [7.45.0] + +### Added + +- feat(4213-2) update network icons ([#14069](https://github.com/MetaMask/metamask-mobile/pull/14069)) +- feat(ramp): add backpress handler to expanded quotes view ([#14210](https://github.com/MetaMask/metamask-mobile/pull/14210)) +- feat(ramp): paymentMethods refactor for sdk evolution ([#13464](https://github.com/MetaMask/metamask-mobile/pull/13464)) +- feat(ramp): erc20 gas and balance checks for off-ramp ([#12526](https://github.com/MetaMask/metamask-mobile/pull/12526)) +- feat(4213-3): network badge positioning ([#14071](https://github.com/MetaMask/metamask-mobile/pull/14071)) +- feat(4213-1): rounded square network icons ([#14065](https://github.com/MetaMask/metamask-mobile/pull/14065)) +- feat: new cicd integration changelog-check ([#14011](https://github.com/MetaMask/metamask-mobile/pull/14011)) +- feat: 14467 expo ios simulator ([#14569](https://github.com/MetaMask/metamask-mobile/pull/14569)) +- feat: Auto-failover to Quicknode when Infura is down ([#14139](https://github.com/MetaMask/metamask-mobile/pull/14139)) +- feat: bridge solana bridge button ([#14364](https://github.com/MetaMask/metamask-mobile/pull/14364)) +- feat: multi srp reveal seed ([#13825](https://github.com/MetaMask/metamask-mobile/pull/13825)) +- feat: add account syncing ([#14291](https://github.com/MetaMask/metamask-mobile/pull/14291)) +- feat: Add support for native asset token images on custom networks ([#14491](https://github.com/MetaMask/metamask-mobile/pull/14491)) +- feat: feature flag to disable epd ([#14407](https://github.com/MetaMask/metamask-mobile/pull/14407)) +- feat: api request logging ([#14083](https://github.com/MetaMask/metamask-mobile/pull/14083)) +- feat: bridge top tokens ([#14258](https://github.com/MetaMask/metamask-mobile/pull/14258)) +- feat: add `MegaETH Testnet` as default network ([#14241](https://github.com/MetaMask/metamask-mobile/pull/14241)) +- feat: add new `completedOnboarding` onboarding state property ([#14370](https://github.com/MetaMask/metamask-mobile/pull/14370)) +- feat: Init asset details balance, remove PV flag ([#14439](https://github.com/MetaMask/metamask-mobile/pull/14439)) +- feat: util file for phishing detection ([#14232](https://github.com/MetaMask/metamask-mobile/pull/14232)) +- feat: upgrade `@testing-library/react-native` to `13.2.0` ([#14450](https://github.com/MetaMask/metamask-mobile/pull/14450)) +- feat: add metrics for Alert System ([#14246](https://github.com/MetaMask/metamask-mobile/pull/14246)) +- feat: Updated design-tokens package to 7.0 ([#14395](https://github.com/MetaMask/metamask-mobile/pull/14395)) +- feat: bump `@metamask/notification-services-controller` to `^5.0.1` ([#14296](https://github.com/MetaMask/metamask-mobile/pull/14296)) +- feat: added mmpoly and mmsans font files ([#14394](https://github.com/MetaMask/metamask-mobile/pull/14394)) +- feat: Snaps UI text styling inheritance ([#14355](https://github.com/MetaMask/metamask-mobile/pull/14355)) +- feat: solana opt-in modal ([#14298](https://github.com/MetaMask/metamask-mobile/pull/14298)) +- feat: add quote details card component to Bridge UI ([#14264](https://github.com/MetaMask/metamask-mobile/pull/14264)) +- feat: add accounts to different srps ([#13852](https://github.com/MetaMask/metamask-mobile/pull/13852)) +- feat: Support input types on `SnapUIInput` ([#14312](https://github.com/MetaMask/metamask-mobile/pull/14312)) +- feat: multichain trx history ([#13922](https://github.com/MetaMask/metamask-mobile/pull/13922)) +- feat: escape / sanitize signTypedData update ([#14280](https://github.com/MetaMask/metamask-mobile/pull/14280)) +- feat: add phishing tracking events to PhishingModal component ([#14254](https://github.com/MetaMask/metamask-mobile/pull/14254)) +- feat: upgrade to brand evolution colors ([#14218](https://github.com/MetaMask/metamask-mobile/pull/14218)) +- feat: add quote info modal component ([#14263](https://github.com/MetaMask/metamask-mobile/pull/14263)) +- feat: SPL TokenList v2 ([#14126](https://github.com/MetaMask/metamask-mobile/pull/14126)) +- feat: Bridge dest token ([#14135](https://github.com/MetaMask/metamask-mobile/pull/14135)) +- feat: Adding BSC to STX Supported Chains Array (prod) ([#14230](https://github.com/MetaMask/metamask-mobile/pull/14230)) +- feat: add wallet_revokePermissions rpc call ([#14091](https://github.com/MetaMask/metamask-mobile/pull/14091)) +- feat: Add `getPreferences` hook ([#14062](https://github.com/MetaMask/metamask-mobile/pull/14062)) +- feat: Enforce 3-minute idle time for BrowserTabs before unmounting them ([#14175](https://github.com/MetaMask/metamask-mobile/pull/14175)) +- feat: Add Linea to Smart Transaction supported chains ([#14018](https://github.com/MetaMask/metamask-mobile/pull/14018)) +- feat: import srp ([#13768](https://github.com/MetaMask/metamask-mobile/pull/13768)) +- feat: add inline alert (origin mismatch) to SIWE ([#13773](https://github.com/MetaMask/metamask-mobile/pull/13773)) +- feat: Add BSC to Smart Transaction supported chains ([#13964](https://github.com/MetaMask/metamask-mobile/pull/13964)) +- feat: STAKE-902: build lending empty state component ([#14107](https://github.com/MetaMask/metamask-mobile/pull/14107)) +- feat: use new identity hooks ([#14081](https://github.com/MetaMask/metamask-mobile/pull/14081)) +- feat: add bridge slippage modal component using segmented control ([#14070](https://github.com/MetaMask/metamask-mobile/pull/14070)) +- feat: add carousel component ([#13010](https://github.com/MetaMask/metamask-mobile/pull/13010)) +- feat: STAKE-958 - added migration 070 to remove unused staking state ([#14089](https://github.com/MetaMask/metamask-mobile/pull/14089)) +- feat: Implement claim rewards confirmation ([#14049](https://github.com/MetaMask/metamask-mobile/pull/14049)) +- feat: Implement Segment sampling for expected errors ([#13874](https://github.com/MetaMask/metamask-mobile/pull/13874)) +- feat: Rename `transactionMetrics` to `confirmationMetrics` ([#14080](https://github.com/MetaMask/metamask-mobile/pull/14080)) +- feat: Add `TransactionController` metric handlers ([#14020](https://github.com/MetaMask/metamask-mobile/pull/14020)) +- feat: e2e gate ([#13696](https://github.com/MetaMask/metamask-mobile/pull/13696)) +- feat: add segmented control component ([#14066](https://github.com/MetaMask/metamask-mobile/pull/14066)) +- feat: Implement MaxBrowserTabModal at 5 browser tabs ([#14033](https://github.com/MetaMask/metamask-mobile/pull/14033)) +- feat: add button toggle component ([#14064](https://github.com/MetaMask/metamask-mobile/pull/14064)) +- feat: bridge source token selector ([#13915](https://github.com/MetaMask/metamask-mobile/pull/13915)) +- feat: add new identity hooks ([#14045](https://github.com/MetaMask/metamask-mobile/pull/14045)) +- feat: bridge tx submission ([#13577](https://github.com/MetaMask/metamask-mobile/pull/13577)) +- feat: integrate blockaid alert into the Alert System ([#13744](https://github.com/MetaMask/metamask-mobile/pull/13744)) + +### Fixed + +- fix: cp-7.45.0 fix block explorer link for default networks on trx detail modal. ([#14498](https://github.com/MetaMask/metamask-mobile/pull/14498)) +- fix(14255): invalid url on account list ([#14259](https://github.com/MetaMask/metamask-mobile/pull/14259)) +- fix(snaps): Update snap footer buttons ([#13953](https://github.com/MetaMask/metamask-mobile/pull/13953)) +- fix(14305): removed background color for header in QR code screen ([#14411](https://github.com/MetaMask/metamask-mobile/pull/14411)) +- fix: deeplinks when non evm network is selected ([#14521](https://github.com/MetaMask/metamask-mobile/pull/14521)) +- fix: account syncing flaky E2E tests ([#14557](https://github.com/MetaMask/metamask-mobile/pull/14557)) +- fix: show multisrp banner ([#14564](https://github.com/MetaMask/metamask-mobile/pull/14564)) +- fix: Crowdin Action ([#14562](https://github.com/MetaMask/metamask-mobile/pull/14562)) +- fix: 10371 hide biometrics button on manual lock ([#14396](https://github.com/MetaMask/metamask-mobile/pull/14396)) +- fix: temporarily disable identity E2E ([#14570](https://github.com/MetaMask/metamask-mobile/pull/14570)) +- fix: cp-7.44.0 STAKE-1005 refresh staking data when staking txs are confirmed ([#14520](https://github.com/MetaMask/metamask-mobile/pull/14520)) +- fix: SDK Connection when multichain account is selected ([#14494](https://github.com/MetaMask/metamask-mobile/pull/14494)) +- fix: activity reloads every minute ([#14465](https://github.com/MetaMask/metamask-mobile/pull/14465)) +- fix: prevent text overlap in notification opt-in modal ([#14481](https://github.com/MetaMask/metamask-mobile/pull/14481)) +- fix: cp-7.44.0 Update traits when tracked settings change 2/2 ([#14088](https://github.com/MetaMask/metamask-mobile/pull/14088)) +- fix: cp-7.44.0 Add notification when redesigned transaction confirmation submitted and finalized ([#14495](https://github.com/MetaMask/metamask-mobile/pull/14495)) +- fix: cp-7.44.0 Fix header styling for redesigned staking confirmations ([#14472](https://github.com/MetaMask/metamask-mobile/pull/14472)) +- fix: update `ConfirmAlertModal` copy blockaid ([#14206](https://github.com/MetaMask/metamask-mobile/pull/14206)) +- fix: code fence name - show only in Beta ([#14490](https://github.com/MetaMask/metamask-mobile/pull/14490)) +- fix: Prevent re-renders of Field component in Snaps UI [cp-7.44.0] ([#14475](https://github.com/MetaMask/metamask-mobile/pull/14475)) +- fix: hide show private key in non-evm accounts ([#14466](https://github.com/MetaMask/metamask-mobile/pull/14466)) +- fix: fix typo in network message ([#14434](https://github.com/MetaMask/metamask-mobile/pull/14434)) +- fix: create Solana account in beta builds ([#14460](https://github.com/MetaMask/metamask-mobile/pull/14460)) +- fix: activity showing same transactions ([#14449](https://github.com/MetaMask/metamask-mobile/pull/14449)) +- fix: Prevent Snap footer buttons from being pushed out of the modal ([#14430](https://github.com/MetaMask/metamask-mobile/pull/14430)) +- fix: Disable auto correct on Snaps UI inputs [cp-7.44.0] ([#14433](https://github.com/MetaMask/metamask-mobile/pull/14433)) +- fix: 3273 keyboard blocks send flow (Solana) ([#14403](https://github.com/MetaMask/metamask-mobile/pull/14403)) +- fix: fix dark mode for trx history network selector ([#14416](https://github.com/MetaMask/metamask-mobile/pull/14416)) +- fix: #3931 Stop loading when enabling biometrics from settings ([#14412](https://github.com/MetaMask/metamask-mobile/pull/14412)) +- fix: Remove bitcoin from beta release ([#14406](https://github.com/MetaMask/metamask-mobile/pull/14406)) +- fix: cp-7.44.0 Add new feature flag for staking confirmations ([#14401](https://github.com/MetaMask/metamask-mobile/pull/14401)) +- fix: E2E phishing test on android ([#14402](https://github.com/MetaMask/metamask-mobile/pull/14402)) +- fix: import button ([#14398](https://github.com/MetaMask/metamask-mobile/pull/14398)) +- fix: #13410: Don't switch networks when 'Close' button is tapped in Add Network flow ([#14297](https://github.com/MetaMask/metamask-mobile/pull/14297)) +- fix: clear error if the srp is cleared manually. ([#14327](https://github.com/MetaMask/metamask-mobile/pull/14327)) +- fix: small update for event consistency ([#14357](https://github.com/MetaMask/metamask-mobile/pull/14357)) +- fix: Hide account list selector balance for non evm accounts ([#14379](https://github.com/MetaMask/metamask-mobile/pull/14379)) +- fix: Dont send empty set "Token Added" event to Mixpanel ([#14303](https://github.com/MetaMask/metamask-mobile/pull/14303)) +- fix: Resolve a couple of Snaps UI dark mode issues ([#14353](https://github.com/MetaMask/metamask-mobile/pull/14353)) +- fix: anonymous props that's not moved to sensitive props ([#12931](https://github.com/MetaMask/metamask-mobile/pull/12931)) +- fix: notification switch loading flicker ([#14331](https://github.com/MetaMask/metamask-mobile/pull/14331)) +- fix: Relocate confirmations code to `legacy` folder ([#14313](https://github.com/MetaMask/metamask-mobile/pull/14313)) +- fix: ledger singing on re-designed signature pages ([#14266](https://github.com/MetaMask/metamask-mobile/pull/14266)) +- fix: adds translations for a Swap tx in the Multichain activity view ([#14314](https://github.com/MetaMask/metamask-mobile/pull/14314)) +- fix: Fix missing invalid password for login #13558 ([#14308](https://github.com/MetaMask/metamask-mobile/pull/14308)) +- fix: Remove `Transaction Finalized` event tied to STX ([#14293](https://github.com/MetaMask/metamask-mobile/pull/14293)) +- fix: yml formatting causing error ([#14277](https://github.com/MetaMask/metamask-mobile/pull/14277)) +- fix: reduce tests worker for only performance tests ([#14051](https://github.com/MetaMask/metamask-mobile/pull/14051)) +- fix: scroll for the confirmation screen ([#14269](https://github.com/MetaMask/metamask-mobile/pull/14269)) +- fix: STAKE-964: bumped @metamask/earn-controller dependency to resolve pooled-staking geo-block for fresh installs ([#14257](https://github.com/MetaMask/metamask-mobile/pull/14257)) +- fix: default open links turn true with attaching the protocol per intent filter ([#14222](https://github.com/MetaMask/metamask-mobile/pull/14222)) +- fix: waitAndTap on ad carousel banner ([#14198](https://github.com/MetaMask/metamask-mobile/pull/14198)) +- fix: bump `@metamask/keyring-controller` to `^19.2.2` ([#14229](https://github.com/MetaMask/metamask-mobile/pull/14229)) +- fix: return the same track event reference ([#14205](https://github.com/MetaMask/metamask-mobile/pull/14205)) +- fix: Fix mobile redesigned transaction metrics ([#14219](https://github.com/MetaMask/metamask-mobile/pull/14219)) +- fix: cp-7.43.0 correctly fetch token rates during onboarding ([#14207](https://github.com/MetaMask/metamask-mobile/pull/14207)) +- fix: Display correct snap name when connecting ([#14204](https://github.com/MetaMask/metamask-mobile/pull/14204)) +- fix: Add staking claim event location ([#14203](https://github.com/MetaMask/metamask-mobile/pull/14203)) +- fix: ramps: change token to tap and confirm ([#14197](https://github.com/MetaMask/metamask-mobile/pull/14197)) +- fix: Fix a number of rendering problems with `AvatarFavicon` ([#14191](https://github.com/MetaMask/metamask-mobile/pull/14191)) +- fix: Disable Snaps APIs when using WalletConnect or SDK ([#14187](https://github.com/MetaMask/metamask-mobile/pull/14187)) +- fix: yarn setup bitrise ([#14174](https://github.com/MetaMask/metamask-mobile/pull/14174)) +- fix: Address final design adjustments for redesigned confirmations ([#14113](https://github.com/MetaMask/metamask-mobile/pull/14113)) +- fix: Add support for swipe navigation on android for staking confirma… ([#14125](https://github.com/MetaMask/metamask-mobile/pull/14125)) +- fix: cp-7.43.0 QR hardware signature requests not showing result after signing ([#14117](https://github.com/MetaMask/metamask-mobile/pull/14117)) +- fix: Snap account actions ([#14013](https://github.com/MetaMask/metamask-mobile/pull/14013)) +- fix: toggle to display the correct balance ([#13916](https://github.com/MetaMask/metamask-mobile/pull/13916)) +- fix: Xcode 16 bitcode upload issue ([#14124](https://github.com/MetaMask/metamask-mobile/pull/14124)) +- fix: cp-7.43.0 useInterval deps ([#14105](https://github.com/MetaMask/metamask-mobile/pull/14105)) +- fix: change function in `interfaceController.ts` to a memorised function to imporve performance ([#14090](https://github.com/MetaMask/metamask-mobile/pull/14090)) +- fix: cp-7.43.0 bell icon colour and styles ([#14084](https://github.com/MetaMask/metamask-mobile/pull/14084)) +- fix: Not report invalid URL errors to sentry ([#14115](https://github.com/MetaMask/metamask-mobile/pull/14115)) +- fix: Loading state bug ([#14096](https://github.com/MetaMask/metamask-mobile/pull/14096)) +- fix: android BottomSheet missing padding bottom ([#13993](https://github.com/MetaMask/metamask-mobile/pull/13993)) +- fix: prevent unintentional remote feature flag override ([#14086](https://github.com/MetaMask/metamask-mobile/pull/14086)) +- fix: when cancelling signature by swiping modal out it should not navigate back ([#14085](https://github.com/MetaMask/metamask-mobile/pull/14085)) +- fix: fix cannot read length property ([#14046](https://github.com/MetaMask/metamask-mobile/pull/14046)) +- fix: cp-7.43.0 Updated ThemeProvider to no longer have wrapping View ([#14056](https://github.com/MetaMask/metamask-mobile/pull/14056)) +- fix: cp-7.43.0 remove network fee section in notification details ([#14050](https://github.com/MetaMask/metamask-mobile/pull/14050)) +- fix: cp-7.43.0 updated root to use themeprovider ([#14040](https://github.com/MetaMask/metamask-mobile/pull/14040)) +- fix: cp-7.43.0 add remote feature flag for notifications ([#14028](https://github.com/MetaMask/metamask-mobile/pull/14028)) +- fix: account name / label overflow on re-designed confirmation pages ([#14044](https://github.com/MetaMask/metamask-mobile/pull/14044)) +- fix: cp-7.43.0 - Temporarily disable notifications ([#14036](https://github.com/MetaMask/metamask-mobile/pull/14036)) +- fix: moved xcode 16 as default and applied xcode 15 only to testflight builds ([#14032](https://github.com/MetaMask/metamask-mobile/pull/14032)) +- fix: inherit icon size from text component parent ([#14024](https://github.com/MetaMask/metamask-mobile/pull/14024)) +- fix: cp-7.42.0 Refactor AddNickname with missing data ([#14008](https://github.com/MetaMask/metamask-mobile/pull/14008)) +- fix: animation added for loading state on SnapUILink button ([#13973](https://github.com/MetaMask/metamask-mobile/pull/13973)) +- fix: Revert "chore: upgrade Xcode 16 on bitrise.yml" ([#14012](https://github.com/MetaMask/metamask-mobile/pull/14012)) + ## [7.43.0] ### Added @@ -5173,7 +5331,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#957](https://github.com/MetaMask/metamask-mobile/pull/957): fix timeouts (#957) - [#954](https://github.com/MetaMask/metamask-mobile/pull/954): Bugfix: onboarding navigation (#954) -[Unreleased]: https://github.com/MetaMask/metamask-mobile/compare/v7.43.0...HEAD +[Unreleased]: https://github.com/MetaMask/metamask-mobile/compare/v7.45.0...HEAD +[7.45.0]: https://github.com/MetaMask/metamask-mobile/compare/v7.43.0...v7.45.0 [7.43.0]: https://github.com/MetaMask/metamask-mobile/compare/v7.42.1...v7.43.0 [7.42.1]: https://github.com/MetaMask/metamask-mobile/compare/v7.42.0...v7.42.1 [7.42.0]: https://github.com/MetaMask/metamask-mobile/compare/v7.41.0...v7.42.0 From 9ae6de640947b6b4356ef4a85e89d705194b02cc Mon Sep 17 00:00:00 2001 From: metamaskbot <metamaskbot@users.noreply.github.com> Date: Fri, 11 Apr 2025 01:04:11 +0000 Subject: [PATCH 126/473] Bump version number to 1682 --- android/app/build.gradle | 2 +- bitrise.yml | 4 ++-- ios/MetaMask.xcodeproj/project.pbxproj | 12 ++++++------ 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/android/app/build.gradle b/android/app/build.gradle index 87c2e75350ba..bd272e548953 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -179,7 +179,7 @@ android { minSdkVersion rootProject.ext.minSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion versionName "7.45.0" - versionCode 1681 + versionCode 1682 testBuildType System.getProperty('testBuildType', 'debug') missingDimensionStrategy 'react-native-camera', 'general' testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" diff --git a/bitrise.yml b/bitrise.yml index dea80b670f35..03b9c1f158dd 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -2235,13 +2235,13 @@ app: VERSION_NAME: 7.45.0 - opts: is_expand: false - VERSION_NUMBER: 1681 + VERSION_NUMBER: 1682 - opts: is_expand: false FLASK_VERSION_NAME: 7.45.0 - opts: is_expand: false - FLASK_VERSION_NUMBER: 1681 + FLASK_VERSION_NUMBER: 1682 - opts: is_expand: false ANDROID_APK_LINK: '' diff --git a/ios/MetaMask.xcodeproj/project.pbxproj b/ios/MetaMask.xcodeproj/project.pbxproj index 6f520d5fa289..49ecfcaa58f2 100644 --- a/ios/MetaMask.xcodeproj/project.pbxproj +++ b/ios/MetaMask.xcodeproj/project.pbxproj @@ -1261,7 +1261,7 @@ CODE_SIGN_IDENTITY = "Apple Development"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1681; + CURRENT_PROJECT_VERSION = 1682; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = 48XVW22RCG; @@ -1330,7 +1330,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMask.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1681; + CURRENT_PROJECT_VERSION = 1682; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 48XVW22RCG; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 48XVW22RCG; @@ -1395,7 +1395,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMaskDebug.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1681; + CURRENT_PROJECT_VERSION = 1682; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = 48XVW22RCG; @@ -1461,7 +1461,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMask.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1681; + CURRENT_PROJECT_VERSION = 1682; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 48XVW22RCG; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 48XVW22RCG; @@ -1620,7 +1620,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMaskDebug.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1681; + CURRENT_PROJECT_VERSION = 1682; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = 48XVW22RCG; @@ -1689,7 +1689,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMask.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1681; + CURRENT_PROJECT_VERSION = 1682; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 48XVW22RCG; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 48XVW22RCG; From 6d20d23ac182b68f0064faa812b4546a4b470290 Mon Sep 17 00:00:00 2001 From: Nicolas MASSART <nicolas.massart@consensys.net> Date: Fri, 11 Apr 2025 18:53:32 +0200 Subject: [PATCH 127/473] update attribution file --- attribution.txt | 781 +++++++++++++++++++----------------------------- 1 file changed, 302 insertions(+), 479 deletions(-) diff --git a/attribution.txt b/attribution.txt index 9da3ee7eb2ec..b4c9036e90f7 100644 --- a/attribution.txt +++ b/attribution.txt @@ -24799,6 +24799,34 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +****************************** + +fsevents +2.3.3 <https://github.com/fsevents/fsevents> +MIT License +----------- + +Copyright (C) 2010-2020 by Philipp Dunkel, Ben Noordhuis, Elan Shankar, Paul Miller + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + + ****************************** fs-extra @@ -28156,7 +28184,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** image-size -1.1.1 <https://github.com/image-size/image-size> +1.2.1 <https://github.com/image-size/image-size> The MIT License (MIT) Copyright © 2013-Present Aditya Yadav, http://netroy.in @@ -33635,386 +33663,7 @@ defined by the Mozilla Public License, v. 2.0. ****************************** -lightningcss-linux-x64-gnu -1.19.0 <https://github.com/parcel-bundler/lightningcss> - Mozilla Public License Version 2.0 -================================== - -1. Definitions --------------- - -1.1. "Contributor" -means each individual or legal entity that creates, contributes to -the creation of, or owns Covered Software. - -1.2. "Contributor Version" -means the combination of the Contributions of others (if any) used -by a Contributor and that particular Contributor's Contribution. - -1.3. "Contribution" -means Covered Software of a particular Contributor. - -1.4. "Covered Software" -means Source Code Form to which the initial Contributor has attached -the notice in Exhibit A, the Executable Form of such Source Code -Form, and Modifications of such Source Code Form, in each case -including portions thereof. - -1.5. "Incompatible With Secondary Licenses" -means - -(a) that the initial Contributor has attached the notice described -in Exhibit B to the Covered Software; or - -(b) that the Covered Software was made available under the terms of -version 1.1 or earlier of the License, but not also under the -terms of a Secondary License. - -1.6. "Executable Form" -means any form of the work other than Source Code Form. - -1.7. "Larger Work" -means a work that combines Covered Software with other material, in -a separate file or files, that is not Covered Software. - -1.8. "License" -means this document. - -1.9. "Licensable" -means having the right to grant, to the maximum extent possible, -whether at the time of the initial grant or subsequently, any and -all of the rights conveyed by this License. - -1.10. "Modifications" -means any of the following: - -(a) any file in Source Code Form that results from an addition to, -deletion from, or modification of the contents of Covered -Software; or - -(b) any new file in Source Code Form that contains any Covered -Software. - -1.11. "Patent Claims" of a Contributor -means any patent claim(s), including without limitation, method, -process, and apparatus claims, in any patent Licensable by such -Contributor that would be infringed, but for the grant of the -License, by the making, using, selling, offering for sale, having -made, import, or transfer of either its Contributions or its -Contributor Version. - -1.12. "Secondary License" -means either the GNU General Public License, Version 2.0, the GNU -Lesser General Public License, Version 2.1, the GNU Affero General -Public License, Version 3.0, or any later versions of those -licenses. - -1.13. "Source Code Form" -means the form of the work preferred for making modifications. - -1.14. "You" (or "Your") -means an individual or a legal entity exercising rights under this -License. For legal entities, "You" includes any entity that -controls, is controlled by, or is under common control with You. For -purposes of this definition, "control" means (a) the power, direct -or indirect, to cause the direction or management of such entity, -whether by contract or otherwise, or (b) ownership of more than -fifty percent (50%) of the outstanding shares or beneficial -ownership of such entity. - -2. License Grants and Conditions --------------------------------- - -2.1. Grants - -Each Contributor hereby grants You a world-wide, royalty-free, -non-exclusive license: - -(a) under intellectual property rights (other than patent or trademark) -Licensable by such Contributor to use, reproduce, make available, -modify, display, perform, distribute, and otherwise exploit its -Contributions, either on an unmodified basis, with Modifications, or -as part of a Larger Work; and - -(b) under Patent Claims of such Contributor to make, use, sell, offer -for sale, have made, import, and otherwise transfer either its -Contributions or its Contributor Version. - -2.2. Effective Date - -The licenses granted in Section 2.1 with respect to any Contribution -become effective for each Contribution on the date the Contributor first -distributes such Contribution. - -2.3. Limitations on Grant Scope - -The licenses granted in this Section 2 are the only rights granted under -this License. No additional rights or licenses will be implied from the -distribution or licensing of Covered Software under this License. -Notwithstanding Section 2.1(b) above, no patent license is granted by a -Contributor: - -(a) for any code that a Contributor has removed from Covered Software; -or - -(b) for infringements caused by: (i) Your and any other third party's -modifications of Covered Software, or (ii) the combination of its -Contributions with other software (except as part of its Contributor -Version); or - -(c) under Patent Claims infringed by Covered Software in the absence of -its Contributions. - -This License does not grant any rights in the trademarks, service marks, -or logos of any Contributor (except as may be necessary to comply with -the notice requirements in Section 3.4). - -2.4. Subsequent Licenses - -No Contributor makes additional grants as a result of Your choice to -distribute the Covered Software under a subsequent version of this -License (see Section 10.2) or under the terms of a Secondary License (if -permitted under the terms of Section 3.3). - -2.5. Representation - -Each Contributor represents that the Contributor believes its -Contributions are its original creation(s) or it has sufficient rights -to grant the rights to its Contributions conveyed by this License. - -2.6. Fair Use - -This License is not intended to limit any rights You have under -applicable copyright doctrines of fair use, fair dealing, or other -equivalents. - -2.7. Conditions - -Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted -in Section 2.1. - -3. Responsibilities -------------------- - -3.1. Distribution of Source Form - -All distribution of Covered Software in Source Code Form, including any -Modifications that You create or to which You contribute, must be under -the terms of this License. You must inform recipients that the Source -Code Form of the Covered Software is governed by the terms of this -License, and how they can obtain a copy of this License. You may not -attempt to alter or restrict the recipients' rights in the Source Code -Form. - -3.2. Distribution of Executable Form - -If You distribute Covered Software in Executable Form then: - -(a) such Covered Software must also be made available in Source Code -Form, as described in Section 3.1, and You must inform recipients of -the Executable Form how they can obtain a copy of such Source Code -Form by reasonable means in a timely manner, at a charge no more -than the cost of distribution to the recipient; and - -(b) You may distribute such Executable Form under the terms of this -License, or sublicense it under different terms, provided that the -license for the Executable Form does not attempt to limit or alter -the recipients' rights in the Source Code Form under this License. - -3.3. Distribution of a Larger Work - -You may create and distribute a Larger Work under terms of Your choice, -provided that You also comply with the requirements of this License for -the Covered Software. If the Larger Work is a combination of Covered -Software with a work governed by one or more Secondary Licenses, and the -Covered Software is not Incompatible With Secondary Licenses, this -License permits You to additionally distribute such Covered Software -under the terms of such Secondary License(s), so that the recipient of -the Larger Work may, at their option, further distribute the Covered -Software under the terms of either this License or such Secondary -License(s). - -3.4. Notices - -You may not remove or alter the substance of any license notices -(including copyright notices, patent notices, disclaimers of warranty, -or limitations of liability) contained within the Source Code Form of -the Covered Software, except that You may alter any license notices to -the extent required to remedy known factual inaccuracies. - -3.5. Application of Additional Terms - -You may choose to offer, and to charge a fee for, warranty, support, -indemnity or liability obligations to one or more recipients of Covered -Software. However, You may do so only on Your own behalf, and not on -behalf of any Contributor. You must make it absolutely clear that any -such warranty, support, indemnity, or liability obligation is offered by -You alone, and You hereby agree to indemnify every Contributor for any -liability incurred by such Contributor as a result of warranty, support, -indemnity or liability terms You offer. You may include additional -disclaimers of warranty and limitations of liability specific to any -jurisdiction. - -4. Inability to Comply Due to Statute or Regulation ---------------------------------------------------- - -If it is impossible for You to comply with any of the terms of this -License with respect to some or all of the Covered Software due to -statute, judicial order, or regulation then You must: (a) comply with -the terms of this License to the maximum extent possible; and (b) -describe the limitations and the code they affect. Such description must -be placed in a text file included with all distributions of the Covered -Software under this License. Except to the extent prohibited by statute -or regulation, such description must be sufficiently detailed for a -recipient of ordinary skill to be able to understand it. - -5. Termination --------------- - -5.1. The rights granted under this License will terminate automatically -if You fail to comply with any of its terms. However, if You become -compliant, then the rights granted under this License from a particular -Contributor are reinstated (a) provisionally, unless and until such -Contributor explicitly and finally terminates Your grants, and (b) on an -ongoing basis, if such Contributor fails to notify You of the -non-compliance by some reasonable means prior to 60 days after You have -come back into compliance. Moreover, Your grants from a particular -Contributor are reinstated on an ongoing basis if such Contributor -notifies You of the non-compliance by some reasonable means, this is the -first time You have received notice of non-compliance with this License -from such Contributor, and You become compliant prior to 30 days after -Your receipt of the notice. - -5.2. If You initiate litigation against any entity by asserting a patent -infringement claim (excluding declaratory judgment actions, -counter-claims, and cross-claims) alleging that a Contributor Version -directly or indirectly infringes any patent, then the rights granted to -You by any and all Contributors for the Covered Software under Section -2.1 of this License shall terminate. - -5.3. In the event of termination under Sections 5.1 or 5.2 above, all -end user license agreements (excluding distributors and resellers) which -have been validly granted by You or Your distributors under this License -prior to termination shall survive termination. - -************************************************************************ -* * -* 6. Disclaimer of Warranty * -* ------------------------- * -* * -* Covered Software is provided under this License on an "as is" * -* basis, without warranty of any kind, either expressed, implied, or * -* statutory, including, without limitation, warranties that the * -* Covered Software is free of defects, merchantable, fit for a * -* particular purpose or non-infringing. The entire risk as to the * -* quality and performance of the Covered Software is with You. * -* Should any Covered Software prove defective in any respect, You * -* (not any Contributor) assume the cost of any necessary servicing, * -* repair, or correction. This disclaimer of warranty constitutes an * -* essential part of this License. No use of any Covered Software is * -* authorized under this License except under this disclaimer. * -* * -************************************************************************ - -************************************************************************ -* * -* 7. Limitation of Liability * -* -------------------------- * -* * -* Under no circumstances and under no legal theory, whether tort * -* (including negligence), contract, or otherwise, shall any * -* Contributor, or anyone who distributes Covered Software as * -* permitted above, be liable to You for any direct, indirect, * -* special, incidental, or consequential damages of any character * -* including, without limitation, damages for lost profits, loss of * -* goodwill, work stoppage, computer failure or malfunction, or any * -* and all other commercial damages or losses, even if such party * -* shall have been informed of the possibility of such damages. This * -* limitation of liability shall not apply to liability for death or * -* personal injury resulting from such party's negligence to the * -* extent applicable law prohibits such limitation. Some * -* jurisdictions do not allow the exclusion or limitation of * -* incidental or consequential damages, so this exclusion and * -* limitation may not apply to You. * -* * -************************************************************************ - -8. Litigation -------------- - -Any litigation relating to this License may be brought only in the -courts of a jurisdiction where the defendant maintains its principal -place of business and such litigation shall be governed by laws of that -jurisdiction, without reference to its conflict-of-law provisions. -Nothing in this Section shall prevent a party's ability to bring -cross-claims or counter-claims. - -9. Miscellaneous ----------------- - -This License represents the complete agreement concerning the subject -matter hereof. If any provision of this License is held to be -unenforceable, such provision shall be reformed only to the extent -necessary to make it enforceable. Any law or regulation which provides -that the language of a contract shall be construed against the drafter -shall not be used to construe this License against a Contributor. - -10. Versions of the License ---------------------------- - -10.1. New Versions - -Mozilla Foundation is the license steward. Except as provided in Section -10.3, no one other than the license steward has the right to modify or -publish new versions of this License. Each version will be given a -distinguishing version number. - -10.2. Effect of New Versions - -You may distribute the Covered Software under the terms of the version -of the License under which You originally received the Covered Software, -or under the terms of any subsequent version published by the license -steward. - -10.3. Modified Versions - -If you create software not governed by this License, and you want to -create a new license for such software, you may create and use a -modified version of this License if you rename the license and remove -any references to the name of the license steward (except to note that -such modified license differs from this License). - -10.4. Distributing Source Code Form that is Incompatible With Secondary -Licenses - -If You choose to distribute Source Code Form that is Incompatible With -Secondary Licenses under the terms of this version of the License, the -notice described in Exhibit B of this License must be attached. - -Exhibit A - Source Code Form License Notice -------------------------------------------- - -This Source Code Form is subject to the terms of the Mozilla Public -License, v. 2.0. If a copy of the MPL was not distributed with this -file, You can obtain one at https://mozilla.org/MPL/2.0/. - -If it is not possible or desirable to put the notice in a particular -file, then You may include the notice in a location (such as a LICENSE -file in a relevant directory) where a recipient would be likely to look -for such a notice. - -You may add additional accurate notices of copyright ownership. - -Exhibit B - "Incompatible With Secondary Licenses" Notice ---------------------------------------------------------- - -This Source Code Form is "Incompatible With Secondary Licenses", as -defined by the Mozilla Public License, v. 2.0. - - -****************************** - -lightningcss-linux-x64-musl +lightningcss-darwin-arm64 1.19.0 <https://github.com/parcel-bundler/lightningcss> Mozilla Public License Version 2.0 ================================== @@ -36999,7 +36648,7 @@ authors: undefined ****************************** @metamask/bridge-controller -3.0.0 <https://github.com/MetaMask/core> +7.0.0 <https://github.com/MetaMask/core> MIT License Copyright (c) 2025 MetaMask @@ -37025,7 +36674,7 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE ****************************** @metamask/bridge-status-controller -3.0.0 <https://github.com/MetaMask/core> +7.0.0 <https://github.com/MetaMask/core> MIT License Copyright (c) 2025 MetaMask @@ -37119,7 +36768,7 @@ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ****************************** @metamask/controller-utils -11.6.0 <https://github.com/MetaMask/core> +11.7.0 <https://github.com/MetaMask/core> MIT License Copyright (c) 2018 MetaMask @@ -37171,7 +36820,7 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE ****************************** @metamask/earn-controller -0.10.0 <https://github.com/MetaMask/core> +0.11.0 <https://github.com/MetaMask/core> MIT License Copyright (c) 2025 MetaMask @@ -37265,28 +36914,7 @@ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ****************************** @metamask/eth-hd-keyring -11.0.0 <https://github.com/MetaMask/eth-hd-keyring> -ISC License - -Copyright (c) 2020 MetaMask - -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted, provided that the above -copyright notice and this permission notice appear in all copies. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES -WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR -ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN -ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF -OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - - -****************************** - -@metamask/eth-hd-keyring -9.0.0 <https://github.com/MetaMask/eth-hd-keyring> +12.1.0 <https://github.com/MetaMask/eth-hd-keyring> ISC License Copyright (c) 2020 MetaMask @@ -37629,7 +37257,7 @@ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ****************************** @metamask/eth-simple-keyring -8.1.1 <https://github.com/MetaMask/eth-simple-keyring> +10.0.0 <https://github.com/MetaMask/eth-simple-keyring> ISC License Copyright (c) 2020 MetaMask @@ -37650,7 +37278,7 @@ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ****************************** @metamask/eth-simple-keyring -9.0.0 <https://github.com/MetaMask/eth-simple-keyring> +8.1.1 <https://github.com/MetaMask/eth-simple-keyring> ISC License Copyright (c) 2020 MetaMask @@ -37805,7 +37433,7 @@ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ****************************** @metamask/keyring-api -17.2.1 <https://github.com/MetaMask/keyring-api> +17.3.0 <https://github.com/MetaMask/keyring-api> Copyright ConsenSys Software Inc. 2022. All rights reserved. You acknowledge and agree that ConsenSys Software Inc. (“ConsenSys”) (or ConsenSys’s licensors) own all legal right, title and interest in and to the work, software, application, source code, documentation and any other documents in this repository (collectively, the “Program”), including any intellectual property rights which subsist in the Program (whether those rights happen to be registered or not, and wherever in the world those rights may exist), whether in source code or any other form. @@ -37855,7 +37483,7 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE ****************************** @metamask/keyring-controller -20.0.0 <https://github.com/MetaMask/core> +21.0.0 <https://github.com/MetaMask/core> MIT License Copyright (c) 2018 MetaMask @@ -37887,13 +37515,6 @@ authors: undefined ****************************** -@metamask/keyring-internal-api -5.0.0 <https://github.com/MetaMask/accounts> -license: Custom: https://github.com/MetaMask/accounts -authors: undefined - -****************************** - @metamask/keyring-internal-api 6.0.0 <https://github.com/MetaMask/accounts> license: Custom: https://github.com/MetaMask/accounts @@ -37930,7 +37551,7 @@ authors: undefined ****************************** @metamask/key-tree -10.0.2 <https://github.com/MetaMask/key-tree> +10.1.1 <https://github.com/MetaMask/key-tree> MIT License Copyright (c) 2021 MetaMask @@ -38044,7 +37665,7 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE ****************************** @metamask/multichain-transactions-controller -0.7.0 <https://github.com/MetaMask/core> +0.7.2 <https://github.com/MetaMask/core> MIT License Copyright (c) 2025 MetaMask @@ -38265,7 +37886,7 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE ****************************** @metamask/phishing-controller -12.4.0 <https://github.com/MetaMask/core> +12.4.1 <https://github.com/MetaMask/core> MIT License Copyright (c) 2018 MetaMask @@ -38371,7 +37992,7 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE ****************************** @metamask/profile-sync-controller -9.0.0 <https://github.com/MetaMask/core> +10.1.0 <https://github.com/MetaMask/core> MIT License Copyright (c) 2024 MetaMask @@ -38567,7 +38188,7 @@ SOFTWARE. ****************************** @metamask/remote-feature-flag-controller -1.5.0 <https://github.com/MetaMask/core> +1.6.0 <https://github.com/MetaMask/core> This project is licensed under either of * MIT license ([LICENSE.MIT](LICENSE.MIT)) @@ -38781,31 +38402,7 @@ If you have any questions, comments or interest in pursuing any other use cases, ****************************** @metamask/snaps-controllers -10.0.0 <https://github.com/MetaMask/snaps> -Copyright ConsenSys Software Inc. 2021. All rights reserved. - -You acknowledge and agree that ConsenSys Software Inc. (“ConsenSys”) (or ConsenSys’s licensors) own all legal right, title and interest in and to the work, software, application, source code, documentation and any other documents in this repository (collectively, the “Program”), including any intellectual property rights which subsist in the Program (whether those rights happen to be registered or not, and wherever in the world those rights may exist), whether in source code or any other form. - -Subject to the limited license below, you may not (and you may not permit anyone else to) distribute, publish, copy, modify, merge, combine with another program, create derivative works of, reverse engineer, decompile or otherwise attempt to extract the source code of, the Program or any part thereof, except that you may contribute to this repository. - -You are granted a non-exclusive, non-transferable, non-sublicensable license to distribute, publish, copy, modify, merge, combine with another program or create derivative works of the Program (such resulting program, collectively, the “Resulting Program”) solely for Non-Commercial Use as long as you: - 1. give prominent notice (“Notice”) with each copy of the Resulting Program that the Program is used in the Resulting Program and that the Program is the copyright of ConsenSys; and - 2. subject the Resulting Program and any distribution, publication, copy, modification, merger therewith, combination with another program or derivative works thereof to the same Notice requirement and Non-Commercial Use restriction set forth herein. - -“Non-Commercial Use” means each use as described in clauses (1)-(3) below, as reasonably determined by ConsenSys in its sole discretion: - 1. personal use for research, personal study, private entertainment, hobby projects or amateur pursuits, in each case without any anticipated commercial application; - 2. use by any charitable organization, educational institution, public research organization, public safety or health organization, environmental protection organization or government institution; or - 3. the number of monthly active users of the Resulting Program across all versions thereof and platforms globally do not exceed 10,000 at any time. - -You will not use any trade mark, service mark, trade name, logo of ConsenSys or any other company or organization in a way that is likely or intended to cause confusion about the owner or authorized user of such marks, names or logos. - -If you have any questions, comments or interest in pursuing any other use cases, please reach out to us at metamask.license@consensys.net. - - -****************************** - -@metamask/snaps-controllers -9.19.1 <https://github.com/MetaMask/snaps> +11.0.0 <https://github.com/MetaMask/snaps> Copyright ConsenSys Software Inc. 2021. All rights reserved. You acknowledge and agree that ConsenSys Software Inc. (“ConsenSys”) (or ConsenSys’s licensors) own all legal right, title and interest in and to the work, software, application, source code, documentation and any other documents in this repository (collectively, the “Program”), including any intellectual property rights which subsist in the Program (whether those rights happen to be registered or not, and wherever in the world those rights may exist), whether in source code or any other form. @@ -39062,7 +38659,7 @@ If you have any questions, comments or interest in pursuing any other use cases, ****************************** @metamask/snaps-rpc-methods -11.13.1 <https://github.com/MetaMask/snaps> +12.0.0 <https://github.com/MetaMask/snaps> Copyright ConsenSys Software Inc. 2021. All rights reserved. You acknowledge and agree that ConsenSys Software Inc. (“ConsenSys”) (or ConsenSys’s licensors) own all legal right, title and interest in and to the work, software, application, source code, documentation and any other documents in this repository (collectively, the “Program”), including any intellectual property rights which subsist in the Program (whether those rights happen to be registered or not, and wherever in the world those rights may exist), whether in source code or any other form. @@ -39170,7 +38767,7 @@ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ****************************** @metamask/solana-wallet-snap -1.9.0 <https://github.com/MetaMask/snap-solana-wallet> +1.16.0 <https://github.com/MetaMask/snap-solana-wallet> license: (MIT-0 OR Apache-2.0) authors: undefined @@ -41150,6 +40747,32 @@ THE SOFTWARE. ****************************** +@noble/curves +1.8.1 <https://github.com/paulmillr/noble-curves> +The MIT License (MIT) + +Copyright (c) 2022 Paul Miller (https://paulmillr.com) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the “Software”), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + +****************************** + @noble/hashes 1.3.3 <https://github.com/paulmillr/noble-hashes> The MIT License (MIT) @@ -43248,34 +42871,7 @@ SOFTWARE. ****************************** -@parcel/watcher-linux-x64-glibc -2.3.0 <https://github.com/parcel-bundler/watcher> -MIT License - -Copyright (c) 2017-present Devon Govett - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - - -****************************** - -@parcel/watcher-linux-x64-musl +@parcel/watcher-darwin-arm64 2.3.0 <https://github.com/parcel-bundler/watcher> MIT License @@ -50517,6 +50113,213 @@ TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +****************************** + +recyclerlistview +4.2.3 <https://github.com/Flipkart/recyclerlistview> + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright {yyyy} {name of copyright owner} + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + ****************************** redis-errors @@ -53805,7 +53608,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ****************************** -@sentry/cli-linux-x64 +@sentry/cli-darwin 2.36.6 <https://github.com/getsentry/sentry-cli> license: BSD-3-Clause authors: undefined @@ -55335,6 +55138,19 @@ ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +****************************** + +@shopify/flash-list +1.7.6 <https://github.com/Shopify/flash-list> +Copyright 2022-present, Shopify Inc. + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + ****************************** side-channel @@ -99033,6 +98849,13 @@ PERFORMANCE OF THIS SOFTWARE. ****************************** +ts-object-utils +0.0.5 <https://github.com/naqvitalha/ts-object-utils> +license: ISC +authors: naqvitalha <naqvitalha@gmail.com> + +****************************** + ts-toolbelt 6.15.5 <https://github.com/millsp/ts-toolbelt> Apache License From ec5668a98166e2c546500ec579698a79126a6f82 Mon Sep 17 00:00:00 2001 From: MetaMask Bot <metamaskbot@users.noreply.github.com> Date: Fri, 11 Apr 2025 18:38:02 +0000 Subject: [PATCH 128/473] Update Attributions --- attribution.txt | 440 ++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 409 insertions(+), 31 deletions(-) diff --git a/attribution.txt b/attribution.txt index b4c9036e90f7..a6ed72f948d2 100644 --- a/attribution.txt +++ b/attribution.txt @@ -24799,34 +24799,6 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -****************************** - -fsevents -2.3.3 <https://github.com/fsevents/fsevents> -MIT License ------------ - -Copyright (C) 2010-2020 by Philipp Dunkel, Ben Noordhuis, Elan Shankar, Paul Miller - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. - - ****************************** fs-extra @@ -33663,7 +33635,386 @@ defined by the Mozilla Public License, v. 2.0. ****************************** -lightningcss-darwin-arm64 +lightningcss-linux-x64-gnu +1.19.0 <https://github.com/parcel-bundler/lightningcss> + Mozilla Public License Version 2.0 +================================== + +1. Definitions +-------------- + +1.1. "Contributor" +means each individual or legal entity that creates, contributes to +the creation of, or owns Covered Software. + +1.2. "Contributor Version" +means the combination of the Contributions of others (if any) used +by a Contributor and that particular Contributor's Contribution. + +1.3. "Contribution" +means Covered Software of a particular Contributor. + +1.4. "Covered Software" +means Source Code Form to which the initial Contributor has attached +the notice in Exhibit A, the Executable Form of such Source Code +Form, and Modifications of such Source Code Form, in each case +including portions thereof. + +1.5. "Incompatible With Secondary Licenses" +means + +(a) that the initial Contributor has attached the notice described +in Exhibit B to the Covered Software; or + +(b) that the Covered Software was made available under the terms of +version 1.1 or earlier of the License, but not also under the +terms of a Secondary License. + +1.6. "Executable Form" +means any form of the work other than Source Code Form. + +1.7. "Larger Work" +means a work that combines Covered Software with other material, in +a separate file or files, that is not Covered Software. + +1.8. "License" +means this document. + +1.9. "Licensable" +means having the right to grant, to the maximum extent possible, +whether at the time of the initial grant or subsequently, any and +all of the rights conveyed by this License. + +1.10. "Modifications" +means any of the following: + +(a) any file in Source Code Form that results from an addition to, +deletion from, or modification of the contents of Covered +Software; or + +(b) any new file in Source Code Form that contains any Covered +Software. + +1.11. "Patent Claims" of a Contributor +means any patent claim(s), including without limitation, method, +process, and apparatus claims, in any patent Licensable by such +Contributor that would be infringed, but for the grant of the +License, by the making, using, selling, offering for sale, having +made, import, or transfer of either its Contributions or its +Contributor Version. + +1.12. "Secondary License" +means either the GNU General Public License, Version 2.0, the GNU +Lesser General Public License, Version 2.1, the GNU Affero General +Public License, Version 3.0, or any later versions of those +licenses. + +1.13. "Source Code Form" +means the form of the work preferred for making modifications. + +1.14. "You" (or "Your") +means an individual or a legal entity exercising rights under this +License. For legal entities, "You" includes any entity that +controls, is controlled by, or is under common control with You. For +purposes of this definition, "control" means (a) the power, direct +or indirect, to cause the direction or management of such entity, +whether by contract or otherwise, or (b) ownership of more than +fifty percent (50%) of the outstanding shares or beneficial +ownership of such entity. + +2. License Grants and Conditions +-------------------------------- + +2.1. Grants + +Each Contributor hereby grants You a world-wide, royalty-free, +non-exclusive license: + +(a) under intellectual property rights (other than patent or trademark) +Licensable by such Contributor to use, reproduce, make available, +modify, display, perform, distribute, and otherwise exploit its +Contributions, either on an unmodified basis, with Modifications, or +as part of a Larger Work; and + +(b) under Patent Claims of such Contributor to make, use, sell, offer +for sale, have made, import, and otherwise transfer either its +Contributions or its Contributor Version. + +2.2. Effective Date + +The licenses granted in Section 2.1 with respect to any Contribution +become effective for each Contribution on the date the Contributor first +distributes such Contribution. + +2.3. Limitations on Grant Scope + +The licenses granted in this Section 2 are the only rights granted under +this License. No additional rights or licenses will be implied from the +distribution or licensing of Covered Software under this License. +Notwithstanding Section 2.1(b) above, no patent license is granted by a +Contributor: + +(a) for any code that a Contributor has removed from Covered Software; +or + +(b) for infringements caused by: (i) Your and any other third party's +modifications of Covered Software, or (ii) the combination of its +Contributions with other software (except as part of its Contributor +Version); or + +(c) under Patent Claims infringed by Covered Software in the absence of +its Contributions. + +This License does not grant any rights in the trademarks, service marks, +or logos of any Contributor (except as may be necessary to comply with +the notice requirements in Section 3.4). + +2.4. Subsequent Licenses + +No Contributor makes additional grants as a result of Your choice to +distribute the Covered Software under a subsequent version of this +License (see Section 10.2) or under the terms of a Secondary License (if +permitted under the terms of Section 3.3). + +2.5. Representation + +Each Contributor represents that the Contributor believes its +Contributions are its original creation(s) or it has sufficient rights +to grant the rights to its Contributions conveyed by this License. + +2.6. Fair Use + +This License is not intended to limit any rights You have under +applicable copyright doctrines of fair use, fair dealing, or other +equivalents. + +2.7. Conditions + +Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted +in Section 2.1. + +3. Responsibilities +------------------- + +3.1. Distribution of Source Form + +All distribution of Covered Software in Source Code Form, including any +Modifications that You create or to which You contribute, must be under +the terms of this License. You must inform recipients that the Source +Code Form of the Covered Software is governed by the terms of this +License, and how they can obtain a copy of this License. You may not +attempt to alter or restrict the recipients' rights in the Source Code +Form. + +3.2. Distribution of Executable Form + +If You distribute Covered Software in Executable Form then: + +(a) such Covered Software must also be made available in Source Code +Form, as described in Section 3.1, and You must inform recipients of +the Executable Form how they can obtain a copy of such Source Code +Form by reasonable means in a timely manner, at a charge no more +than the cost of distribution to the recipient; and + +(b) You may distribute such Executable Form under the terms of this +License, or sublicense it under different terms, provided that the +license for the Executable Form does not attempt to limit or alter +the recipients' rights in the Source Code Form under this License. + +3.3. Distribution of a Larger Work + +You may create and distribute a Larger Work under terms of Your choice, +provided that You also comply with the requirements of this License for +the Covered Software. If the Larger Work is a combination of Covered +Software with a work governed by one or more Secondary Licenses, and the +Covered Software is not Incompatible With Secondary Licenses, this +License permits You to additionally distribute such Covered Software +under the terms of such Secondary License(s), so that the recipient of +the Larger Work may, at their option, further distribute the Covered +Software under the terms of either this License or such Secondary +License(s). + +3.4. Notices + +You may not remove or alter the substance of any license notices +(including copyright notices, patent notices, disclaimers of warranty, +or limitations of liability) contained within the Source Code Form of +the Covered Software, except that You may alter any license notices to +the extent required to remedy known factual inaccuracies. + +3.5. Application of Additional Terms + +You may choose to offer, and to charge a fee for, warranty, support, +indemnity or liability obligations to one or more recipients of Covered +Software. However, You may do so only on Your own behalf, and not on +behalf of any Contributor. You must make it absolutely clear that any +such warranty, support, indemnity, or liability obligation is offered by +You alone, and You hereby agree to indemnify every Contributor for any +liability incurred by such Contributor as a result of warranty, support, +indemnity or liability terms You offer. You may include additional +disclaimers of warranty and limitations of liability specific to any +jurisdiction. + +4. Inability to Comply Due to Statute or Regulation +--------------------------------------------------- + +If it is impossible for You to comply with any of the terms of this +License with respect to some or all of the Covered Software due to +statute, judicial order, or regulation then You must: (a) comply with +the terms of this License to the maximum extent possible; and (b) +describe the limitations and the code they affect. Such description must +be placed in a text file included with all distributions of the Covered +Software under this License. Except to the extent prohibited by statute +or regulation, such description must be sufficiently detailed for a +recipient of ordinary skill to be able to understand it. + +5. Termination +-------------- + +5.1. The rights granted under this License will terminate automatically +if You fail to comply with any of its terms. However, if You become +compliant, then the rights granted under this License from a particular +Contributor are reinstated (a) provisionally, unless and until such +Contributor explicitly and finally terminates Your grants, and (b) on an +ongoing basis, if such Contributor fails to notify You of the +non-compliance by some reasonable means prior to 60 days after You have +come back into compliance. Moreover, Your grants from a particular +Contributor are reinstated on an ongoing basis if such Contributor +notifies You of the non-compliance by some reasonable means, this is the +first time You have received notice of non-compliance with this License +from such Contributor, and You become compliant prior to 30 days after +Your receipt of the notice. + +5.2. If You initiate litigation against any entity by asserting a patent +infringement claim (excluding declaratory judgment actions, +counter-claims, and cross-claims) alleging that a Contributor Version +directly or indirectly infringes any patent, then the rights granted to +You by any and all Contributors for the Covered Software under Section +2.1 of this License shall terminate. + +5.3. In the event of termination under Sections 5.1 or 5.2 above, all +end user license agreements (excluding distributors and resellers) which +have been validly granted by You or Your distributors under this License +prior to termination shall survive termination. + +************************************************************************ +* * +* 6. Disclaimer of Warranty * +* ------------------------- * +* * +* Covered Software is provided under this License on an "as is" * +* basis, without warranty of any kind, either expressed, implied, or * +* statutory, including, without limitation, warranties that the * +* Covered Software is free of defects, merchantable, fit for a * +* particular purpose or non-infringing. The entire risk as to the * +* quality and performance of the Covered Software is with You. * +* Should any Covered Software prove defective in any respect, You * +* (not any Contributor) assume the cost of any necessary servicing, * +* repair, or correction. This disclaimer of warranty constitutes an * +* essential part of this License. No use of any Covered Software is * +* authorized under this License except under this disclaimer. * +* * +************************************************************************ + +************************************************************************ +* * +* 7. Limitation of Liability * +* -------------------------- * +* * +* Under no circumstances and under no legal theory, whether tort * +* (including negligence), contract, or otherwise, shall any * +* Contributor, or anyone who distributes Covered Software as * +* permitted above, be liable to You for any direct, indirect, * +* special, incidental, or consequential damages of any character * +* including, without limitation, damages for lost profits, loss of * +* goodwill, work stoppage, computer failure or malfunction, or any * +* and all other commercial damages or losses, even if such party * +* shall have been informed of the possibility of such damages. This * +* limitation of liability shall not apply to liability for death or * +* personal injury resulting from such party's negligence to the * +* extent applicable law prohibits such limitation. Some * +* jurisdictions do not allow the exclusion or limitation of * +* incidental or consequential damages, so this exclusion and * +* limitation may not apply to You. * +* * +************************************************************************ + +8. Litigation +------------- + +Any litigation relating to this License may be brought only in the +courts of a jurisdiction where the defendant maintains its principal +place of business and such litigation shall be governed by laws of that +jurisdiction, without reference to its conflict-of-law provisions. +Nothing in this Section shall prevent a party's ability to bring +cross-claims or counter-claims. + +9. Miscellaneous +---------------- + +This License represents the complete agreement concerning the subject +matter hereof. If any provision of this License is held to be +unenforceable, such provision shall be reformed only to the extent +necessary to make it enforceable. Any law or regulation which provides +that the language of a contract shall be construed against the drafter +shall not be used to construe this License against a Contributor. + +10. Versions of the License +--------------------------- + +10.1. New Versions + +Mozilla Foundation is the license steward. Except as provided in Section +10.3, no one other than the license steward has the right to modify or +publish new versions of this License. Each version will be given a +distinguishing version number. + +10.2. Effect of New Versions + +You may distribute the Covered Software under the terms of the version +of the License under which You originally received the Covered Software, +or under the terms of any subsequent version published by the license +steward. + +10.3. Modified Versions + +If you create software not governed by this License, and you want to +create a new license for such software, you may create and use a +modified version of this License if you rename the license and remove +any references to the name of the license steward (except to note that +such modified license differs from this License). + +10.4. Distributing Source Code Form that is Incompatible With Secondary +Licenses + +If You choose to distribute Source Code Form that is Incompatible With +Secondary Licenses under the terms of this version of the License, the +notice described in Exhibit B of this License must be attached. + +Exhibit A - Source Code Form License Notice +------------------------------------------- + +This Source Code Form is subject to the terms of the Mozilla Public +License, v. 2.0. If a copy of the MPL was not distributed with this +file, You can obtain one at https://mozilla.org/MPL/2.0/. + +If it is not possible or desirable to put the notice in a particular +file, then You may include the notice in a location (such as a LICENSE +file in a relevant directory) where a recipient would be likely to look +for such a notice. + +You may add additional accurate notices of copyright ownership. + +Exhibit B - "Incompatible With Secondary Licenses" Notice +--------------------------------------------------------- + +This Source Code Form is "Incompatible With Secondary Licenses", as +defined by the Mozilla Public License, v. 2.0. + + +****************************** + +lightningcss-linux-x64-musl 1.19.0 <https://github.com/parcel-bundler/lightningcss> Mozilla Public License Version 2.0 ================================== @@ -42871,7 +43222,34 @@ SOFTWARE. ****************************** -@parcel/watcher-darwin-arm64 +@parcel/watcher-linux-x64-glibc +2.3.0 <https://github.com/parcel-bundler/watcher> +MIT License + +Copyright (c) 2017-present Devon Govett + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + +****************************** + +@parcel/watcher-linux-x64-musl 2.3.0 <https://github.com/parcel-bundler/watcher> MIT License @@ -53608,7 +53986,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ****************************** -@sentry/cli-darwin +@sentry/cli-linux-x64 2.36.6 <https://github.com/getsentry/sentry-cli> license: BSD-3-Clause authors: undefined From 4301e472b91af9c62e4f9938bf4fc160f93e2c05 Mon Sep 17 00:00:00 2001 From: Owen Craston <owen.craston@consensys.net> Date: Fri, 11 Apr 2025 12:07:05 -0700 Subject: [PATCH 129/473] feat: Multichain account list balance (cherry pick from #14278) (#14615) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR enables the account balances for non evm accounts (Solana) to be renders in the Account Selector List. This change was achieved by leveraging the existing logic in the `useMultichainBalances` hook which is already used in production to display both evm and non evm account balances for the selected account on the main wallet page. I had to expand this logic to not only derive the balance for the selected account on the selected chain but instead to derive the balances for all accounts. This way we can lookup the `MultichainBalancesData` (defined in useMultichainBalances.types.ts) in a map where the key is the account ID. The key changes that enabled this change were the following... 1. multichain.ts - refactor some of the balance selector to use util functions so that they could be reused. - created a new selector called `selectMultichainNetworkAggregatedBalanceForAllAccounts` which, uses the same logic as `selectSelectedAccountMultichainNetworkAggregatedBalance` except for all accounts and returns a map of account ids and `MultichainNetworkAggregatedBalance` 2. useMultichainBalances.ts - modified the return type of this hook so that it returns a map of account balance data and account ids as well as one single object for the selected account. The return type looks like this... ```ts export interface UseMultichainBalancesHook { multichainBalancesForAllAccounts: Record< InternalAccount['id'], MultichainBalancesData >; selectedAccountMultichainBalance?: MultichainBalancesData; } ``` - I also had to decouple the the hook from the currently selected chainId. This means that we must select the evmChainId (either currently selected or previously selected chainId), and the nonEvmChainId (either currently selected or previously selected) 3. useAccounts.ts - removed all of the balance computation inside the useAccounts hook (mostly through the `getAccountBalances` util that I removed) in favour of the results from the useMultichainBalances hook. - Memoized many of the functions in this hook. 4. Engine.ts - renamed `getTotalFiatAccountBalance` to `getTotalEvmFiatAccountBalance` - Modified `getTotalEvmFiatAccountBalance` to take an optional InternalAccount param that allows this function to derive the evm balance for a specified account not just the currently selected account - Modified the `getTotalEvmFiatAccountBalance` to use `TokenController.allTokens` instead of `TokenController.tokens` which is tied to the currently selected account Fixes: https://github.com/MetaMask/accounts-planning/issues/697 1. ensure you are building flask by verifying that your .js.env file contains export METAMASK_BUILD_TYPE="flask" 2. yarn setup && yarn start:ios 3. Import an account that has a balance, I can provide you with an SRP from 1Password if needed. 4. click on "add account or hardware wallet" 5. click on Solana account 6. Once the account is created, open the account selector list 7. The balance that is rendered on the right side of the the cell should match the balance rendered on the main wallet view. It should show your total fiat balance which is the sum of all of your native tokens (ETH/SOL) plus the sum of all of your token balances (ERC20/SPL tokens). This fiat balance should be in your currently selected currency and it should also show your native token balance. 8. Changing your selected account between non evm and evm should not change the balances you see in the account list. 9. Both EVM and Solana balances should be correct 10. changing your selected currency should be reflected in balance in the accounts list. 11. If you switch the network to a test net, the fiat balance should not be rendered and instead you should see your token balance. <image src="https://github.com/user-attachments/assets/e1952e3e-4547-415d-bd2e-90843565a204" height="600" width="300" /> https://github.com/user-attachments/assets/762f9946-f19f-499d-b140-50226c694c9a <image src="https://github.com/user-attachments/assets/13b073f6-8708-4c0f-9afa-f6f2eadd9ebb" height="600" width="300" /> <image src="https://github.com/user-attachments/assets/89ece564-2535-419c-82e4-09d1667018ed" height="600" width="300" /> <image src="https://github.com/user-attachments/assets/60db4406-9137-4084-b7ad-39b7c06672da" height="600" width="300" /> - [ ] I’ve followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile Coding Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [ ] I've completed the PR template to the best of my ability - [ ] I’ve included tests if applicable - [ ] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [ ] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. - [ ] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [ ] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots. --- .../AccountSelector.test.tsx | 195 ++++--- .../AccountSelector.test.tsx.snap | 489 ------------------ .../TokenDetails/TokenDetails.test.tsx | 2 +- app/components/UI/Carousel/index.test.tsx | 26 +- app/components/UI/Carousel/index.tsx | 5 +- app/components/UI/DrawerView/index.js | 2 +- app/components/UI/DrawerView/index.test.tsx | 2 +- .../PermissionsSummary.test.tsx | 40 ++ .../PermissionsSummary.test.tsx.snap | 44 +- .../UI/SwitchCustomNetwork/index.test.tsx | 37 ++ app/components/UI/Tabs/index.test.tsx | 37 ++ .../TokenList/PortfolioBalance/index.test.tsx | 20 +- .../TokenList/PortfolioBalance/index.tsx | 16 +- app/components/UI/Tokens/index.test.tsx | 2 +- .../Views/AssetOptions/AssetOptions.test.tsx | 2 +- .../NetworkSelector/NetworkSelector.test.tsx | 2 +- app/components/Views/Wallet/index.test.tsx | 8 +- .../confirmations/Confirm/Confirm.test.tsx | 2 +- .../AccountNetworkInfo.test.tsx | 2 +- .../AccountNetworkInfoCollapsed.test.tsx | 2 +- .../AccountNetworkInfoExpanded.test.tsx | 36 +- .../AccountNetworkInfoExpanded.tsx | 4 +- .../components/Confirm/Info/Info.test.tsx | 2 +- .../Info/PersonalSign/PersonalSign.test.tsx | 2 +- .../Info/StakingClaim/StakingClaim.test.tsx | 13 +- .../StakingDeposit/StakingDeposit.test.tsx | 2 +- .../StakingWithdrawal.test.tsx | 2 +- .../Info/TypedSignV1/TypedSignV1.test.tsx | 2 +- .../Info/TypedSignV3V4/TypedSignV3V4.test.tsx | 2 +- .../hooks/useAccountInfo.test.ts | 2 +- .../confirmations/hooks/useAccountInfo.ts | 2 +- .../useConfirmationRedesignEnabled.test.ts | 2 +- .../hooks/useAccounts/useAccounts.test.ts | 51 +- .../hooks/useAccounts/useAccounts.ts | 220 ++++---- app/components/hooks/useAccounts/utils.ts | 62 --- .../hooks/useGetFormattedTokensPerChain.tsx | 191 ++++--- .../useGetTotalFiatBalanceCrossChains.tsx | 199 +++---- .../useMultichainBalances.test.ts | 89 +++- .../useMultichainBalances.ts | 335 ++++++++---- .../useMultichainBalances.types.ts | 14 +- app/core/Engine/Engine.test.ts | 176 +++++-- app/core/Engine/Engine.ts | 71 ++- app/selectors/currencyRateController.ts | 3 +- app/selectors/multichain/multichain.test.ts | 97 +++- app/selectors/multichain/multichain.ts | 189 +++++-- .../multichainNetworkController/index.ts | 3 +- app/selectors/networkController.ts | 4 +- 47 files changed, 1431 insertions(+), 1279 deletions(-) delete mode 100644 app/components/hooks/useAccounts/utils.ts diff --git a/app/components/UI/AccountSelectorList/AccountSelector.test.tsx b/app/components/UI/AccountSelectorList/AccountSelector.test.tsx index ad29f6ceb5d4..b96d6e790820 100644 --- a/app/components/UI/AccountSelectorList/AccountSelector.test.tsx +++ b/app/components/UI/AccountSelectorList/AccountSelector.test.tsx @@ -21,7 +21,6 @@ import Engine from '../../../core/Engine'; import { CellComponentSelectorsIDs } from '../../../../e2e/selectors/wallet/CellComponent.selectors'; // eslint-disable-next-line import/no-namespace -import * as Utils from '../../hooks/useAccounts/utils'; import { KeyringTypes } from '@metamask/keyring-controller'; const BUSINESS_ACCOUNT = '0xC4955C0d639D99699Bfd7Ec54d9FaFEe40e4D272'; @@ -49,6 +48,38 @@ jest.mock('@react-navigation/native', () => ({ }), })); +// Mock useAccounts +jest.mock('../../../components/hooks/useAccounts', () => ({ + useAccounts: jest.fn().mockImplementation(() => ({ + accounts: [ + { + name: 'Account 1', + address: '0xC4955C0d639D99699Bfd7Ec54d9FaFEe40e4D272', + assets: { + fiatBalance: '$3200.00\n1 ETH', + }, + type: 'HD Key Tree', + yOffset: 0, + isSelected: true, + balanceError: undefined, + }, + { + name: 'Account 2', + address: '0xd018538C87232FF95acbCe4870629b75640a78E7', + assets: { + fiatBalance: '$6400.00\n2 ETH', + }, + type: 'HD Key Tree', + yOffset: 78, + isSelected: false, + balanceError: undefined, + }, + ], + evmAccounts: [], + ensByAccountAddress: {}, + })), +})); + // Mock Engine jest.mock('../../../core/Engine', () => ({ context: { @@ -106,6 +137,36 @@ const onRemoveImportedAccount = jest.fn(); const AccountSelectorListUseAccounts: React.FC<AccountSelectorListProps> = ({ privacyMode = false, }) => { + if (privacyMode) { + (useAccounts as jest.Mock).mockImplementationOnce(() => ({ + accounts: [ + { + name: 'Account 1', + address: '0xC4955C0d639D99699Bfd7Ec54d9FaFEe40e4D272', + assets: { + fiatBalance: '$3200.00\n1 ETH', + }, + type: 'HD Key Tree', + yOffset: 0, + isSelected: true, + balanceError: undefined, + }, + { + name: 'Account 2', + address: '0xd018538C87232FF95acbCe4870629b75640a78E7', + assets: { + fiatBalance: '$6400.00\n2 ETH', + }, + type: 'HD Key Tree', + yOffset: 78, + isSelected: false, + balanceError: undefined, + }, + ], + evmAccounts: [], + ensByAccountAddress: {}, + })); + } const { accounts, ensByAccountAddress } = useAccounts(); return ( <AccountSelectorList @@ -145,16 +206,6 @@ const renderComponent = ( describe('AccountSelectorList', () => { beforeEach(() => { - jest.spyOn(Utils, 'getAccountBalances').mockReturnValueOnce({ - balanceETH: '1', - balanceFiat: '$3200.00', - balanceWeiHex: '', - }); - jest.spyOn(Utils, 'getAccountBalances').mockReturnValueOnce({ - balanceETH: '2', - balanceFiat: '$6400.00', - balanceWeiHex: '', - }); onSelectAccount.mockClear(); onRemoveImportedAccount.mockClear(); }); @@ -193,38 +244,6 @@ describe('AccountSelectorList', () => { }); }); - it('should render all accounts but only the balance for selected account', async () => { - const { queryByTestId, getAllByTestId, toJSON } = renderComponent({ - engine: { - ...initialState.engine, - backgroundState: { - ...initialState.engine.backgroundState, - PreferencesController: { - ...initialState.engine.backgroundState.PreferencesController, - isMultiAccountBalancesEnabled: false, - }, - AccountsController: MOCK_ACCOUNTS_CONTROLLER_STATE, - }, - }, - }); - - await waitFor(async () => { - const accounts = getAllByTestId(regex.accountBalance); - expect(accounts.length).toBe(1); - - const businessAccountItem = await queryByTestId( - `${AccountListBottomSheetSelectorsIDs.ACCOUNT_BALANCE_BY_ADDRESS_TEST_ID}-${BUSINESS_ACCOUNT}`, - ); - - expect(within(businessAccountItem).getByText(regex.eth(1))).toBeDefined(); - expect( - within(businessAccountItem).getByText(regex.usd(3200)), - ).toBeDefined(); - - expect(toJSON()).toMatchSnapshot(); - }); - }); - it('renders all accounts with right accessory', async () => { const { getAllByTestId, toJSON } = renderComponent( initialState, @@ -315,6 +334,7 @@ describe('AccountSelectorList', () => { }); it('allows account removal for simple keyring type', async () => { const mockAlert = jest.spyOn(Alert, 'alert'); + mockAlert.mockReset(); mockAlert.mockImplementation( (_title, _message, buttons?: AlertButton[]) => { // Simulate user clicking "Yes, remove it" @@ -322,6 +342,25 @@ describe('AccountSelectorList', () => { }, ); + // Mock account data for a simple keyring account + (useAccounts as jest.Mock).mockImplementationOnce(() => ({ + accounts: [ + { + name: 'Account 1', + address: BUSINESS_ACCOUNT, + assets: { + fiatBalance: '$3200.00\n1 ETH', + }, + type: KeyringTypes.simple, // Important: must be simple type for removal + yOffset: 0, + isSelected: true, + balanceError: undefined, + }, + ], + evmAccounts: [], + ensByAccountAddress: {}, + })); + // Create a state with a simple keyring account const mockAccountsWithSimple = createMockAccountsControllerState([ BUSINESS_ACCOUNT, @@ -362,22 +401,23 @@ describe('AccountSelectorList', () => { expect.any(Array), { cancelable: false }, ); + }); - // Verify onRemoveImportedAccount was called with correct parameters - expect(onRemoveImportedAccount).toHaveBeenCalledWith({ - removedAddress: BUSINESS_ACCOUNT, - }); - - // Verify KeyringController.removeAccount was called - expect( - Engine.context.KeyringController.removeAccount, - ).toHaveBeenCalledWith(BUSINESS_ACCOUNT); + // Verify onRemoveImportedAccount was called with correct parameters + expect(onRemoveImportedAccount).toHaveBeenCalledWith({ + removedAddress: BUSINESS_ACCOUNT, }); + // Verify KeyringController.removeAccount was called + expect(Engine.context.KeyringController.removeAccount).toHaveBeenCalledWith( + BUSINESS_ACCOUNT, + ); + mockAlert.mockRestore(); }); it('allows account removal for snap keyring type', async () => { const mockAlert = jest.spyOn(Alert, 'alert'); + mockAlert.mockReset(); mockAlert.mockImplementation( (_title, _message, buttons?: AlertButton[]) => { // Simulate user clicking "Yes, remove it" @@ -385,6 +425,36 @@ describe('AccountSelectorList', () => { }, ); + // Mock account data for a snap account + (useAccounts as jest.Mock).mockImplementationOnce(() => ({ + accounts: [ + { + name: 'Snap Account 1', + address: MOCK_ADDRESS_1, + assets: { + fiatBalance: '$3200.00\n1 ETH', + }, + type: KeyringTypes.snap, // Important: must be snap type for removal + yOffset: 0, + isSelected: true, + balanceError: undefined, + }, + { + name: 'Snap Account 2', + address: MOCK_ADDRESS_2, + assets: { + fiatBalance: '$6400.00\n2 ETH', + }, + type: KeyringTypes.snap, // Important: must be snap type for removal + yOffset: 78, + isSelected: false, + balanceError: undefined, + }, + ], + evmAccounts: [], + ensByAccountAddress: {}, + })); + const mockAccountsWithSnap = createMockAccountsControllerStateWithSnap( [MOCK_ADDRESS_1, MOCK_ADDRESS_2], 'MetaMask Simple Snap Keyring', @@ -408,6 +478,7 @@ describe('AccountSelectorList', () => { // Trigger long press on the first cell that should correspond to MOCK_ADDRESS_1 cells[0].props.onLongPress(); + // Need to wait for the Alert to be called await waitFor(() => { // Verify Alert was shown with correct text expect(mockAlert).toHaveBeenCalledWith( @@ -416,19 +487,19 @@ describe('AccountSelectorList', () => { expect.any(Array), { cancelable: false }, ); + }); - // Verify onRemoveImportedAccount was called with correct parameters - expect(onRemoveImportedAccount).toHaveBeenCalledWith({ - removedAddress: MOCK_ADDRESS_1, - nextActiveAddress: MOCK_ADDRESS_2, - }); - - // Verify KeyringController.removeAccount was called - expect( - Engine.context.KeyringController.removeAccount, - ).toHaveBeenCalledWith(MOCK_ADDRESS_1); + // Verify onRemoveImportedAccount was called with correct parameters + expect(onRemoveImportedAccount).toHaveBeenCalledWith({ + removedAddress: MOCK_ADDRESS_1, + nextActiveAddress: MOCK_ADDRESS_2, }); + // Verify KeyringController.removeAccount was called + expect(Engine.context.KeyringController.removeAccount).toHaveBeenCalledWith( + MOCK_ADDRESS_1, + ); + mockAlert.mockRestore(); }); }); diff --git a/app/components/UI/AccountSelectorList/__snapshots__/AccountSelector.test.tsx.snap b/app/components/UI/AccountSelectorList/__snapshots__/AccountSelector.test.tsx.snap index aa773c37020a..cb1d47eafd83 100644 --- a/app/components/UI/AccountSelectorList/__snapshots__/AccountSelector.test.tsx.snap +++ b/app/components/UI/AccountSelectorList/__snapshots__/AccountSelector.test.tsx.snap @@ -2221,492 +2221,3 @@ exports[`AccountSelectorList renders correctly 1`] = ` </View> </RCTScrollView> `; - -exports[`AccountSelectorList should render all accounts but only the balance for selected account 1`] = ` -<RCTScrollView - collapsable={false} - data={ - [ - { - "address": "0xC4955C0d639D99699Bfd7Ec54d9FaFEe40e4D272", - "assets": { - "fiatBalance": "$3200.00 -1 ETH", - }, - "balanceError": undefined, - "isSelected": true, - "name": "Account 1", - "type": "HD Key Tree", - "yOffset": 0, - }, - { - "address": "0xd018538C87232FF95acbCe4870629b75640a78E7", - "assets": undefined, - "balanceError": undefined, - "isSelected": false, - "name": "Account 2", - "type": "HD Key Tree", - "yOffset": 78, - }, - ] - } - getItem={[Function]} - getItemCount={[Function]} - initialNumToRender={999} - keyExtractor={[Function]} - onContentSizeChange={[Function]} - onGestureHandlerEvent={[Function]} - onGestureHandlerStateChange={[Function]} - onLayout={[Function]} - onMomentumScrollBegin={[Function]} - onMomentumScrollEnd={[Function]} - onScroll={[Function]} - onScrollBeginDrag={[Function]} - onScrollEndDrag={[Function]} - removeClippedSubviews={false} - renderItem={[Function]} - renderScrollComponent={[Function]} - scrollEventThrottle={50} - stickyHeaderIndices={[]} - viewabilityConfigCallbackPairs={[]} -> - <View> - <View - onFocusCapture={[Function]} - onLayout={[Function]} - style={null} - > - <View - style={ - { - "alignItems": "center", - "backgroundColor": "#4459ff1a", - "flexDirection": "row", - } - } - > - <TouchableOpacity - onLongPress={[Function]} - onPress={[Function]} - style={ - { - "alignItems": "center", - "flex": 1, - "opacity": 1, - "padding": 16, - "position": "relative", - "zIndex": 1, - } - } - testID="select-with-menu" - > - <View - accessibilityRole="none" - accessible={true} - style={ - { - "alignItems": "flex-start", - "flexDirection": "column", - "padding": 16, - "paddingBottom": 0, - "paddingLeft": 0, - "paddingRight": 0, - "paddingTop": 0, - "zIndex": 2, - } - } - > - <View - style={ - { - "alignItems": "center", - "flexDirection": "row", - } - } - > - <View - style={ - { - "alignItems": "center", - "flexDirection": "row", - "opacity": 1, - } - } - > - <View - style={ - { - "backgroundColor": "#ffffff", - "borderRadius": 16, - "height": 32, - "marginRight": 16, - "overflow": "hidden", - "width": 32, - } - } - testID="cellbase-avatar" - > - <Image - source={ - { - "uri": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAMAAAD04JH5AAAACVBMVEXdS1D5VCcriEUyFsCiAAAAA3RSTlP////6yOLMAABAi0lEQVR42gGAQH+/AAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEB1YUoAZL8IcwAAAAASUVORK5CYII=", - } - } - style={ - { - "flex": 1, - } - } - /> - </View> - <View - style={ - { - "alignItems": "flex-start", - "flex": 1, - } - } - > - <Text - accessibilityRole="text" - numberOfLines={1} - style={ - { - "color": "#121314", - "fontFamily": "CentraNo1-Book", - "fontSize": 16, - "fontWeight": "400", - "letterSpacing": 0, - "lineHeight": 24, - } - } - testID="cellbase-avatar-title" - > - Account 1 - </Text> - <View> - <Text - accessibilityRole="text" - numberOfLines={1} - style={ - { - "color": "#686e7d", - "fontFamily": "CentraNo1-Book", - "fontSize": 16, - "fontWeight": "400", - "letterSpacing": 0, - "lineHeight": 24, - } - } - > - 0xC495...D272 - </Text> - </View> - </View> - <View - style={ - { - "marginLeft": 16, - } - } - > - <View - style={ - { - "alignItems": "flex-end", - "flexDirection": "column", - } - } - testID="account-balance-by-address-0xC4955C0d639D99699Bfd7Ec54d9FaFEe40e4D272" - > - <Text - accessibilityRole="text" - style={ - { - "color": "#121314", - "fontFamily": "CentraNo1-Book", - "fontSize": 16, - "fontWeight": "400", - "letterSpacing": 0, - "lineHeight": 24, - "textAlign": "right", - } - } - > - $3200.00 - </Text> - <Text - accessibilityRole="text" - style={ - { - "color": "#121314", - "fontFamily": "CentraNo1-Book", - "fontSize": 16, - "fontWeight": "400", - "letterSpacing": 0, - "lineHeight": 24, - "textAlign": "right", - } - } - > - 1 ETH - </Text> - </View> - </View> - </View> - </View> - </View> - <View - accessibilityRole="checkbox" - accessible={true} - style={ - { - "backgroundColor": "#4459ff1a", - "bottom": 0, - "flexDirection": "row", - "left": 0, - "position": "absolute", - "right": 0, - "top": 0, - "width": 4, - } - } - > - <View - style={ - { - "backgroundColor": "#4459ff", - "borderRadius": 2, - "marginLeft": 4, - "marginVertical": 4, - "width": 4, - } - } - /> - </View> - </TouchableOpacity> - <View - style={ - { - "paddingRight": 20, - } - } - > - <TouchableOpacity - accessibilityRole="button" - accessible={true} - activeOpacity={1} - disabled={false} - onPress={[Function]} - onPressIn={[Function]} - onPressOut={[Function]} - style={ - { - "alignItems": "center", - "borderRadius": 8, - "height": 24, - "justifyContent": "center", - "opacity": 1, - "width": 24, - } - } - testID="main-wallet-account-actions-0" - > - <SvgMock - color="#121314" - height={16} - name="MoreVertical" - style={ - { - "height": 16, - "width": 16, - } - } - width={16} - /> - </TouchableOpacity> - </View> - </View> - </View> - <View - onFocusCapture={[Function]} - onLayout={[Function]} - style={null} - > - <View - style={ - { - "alignItems": "center", - "backgroundColor": "#ffffff", - "flexDirection": "row", - } - } - > - <TouchableOpacity - onLongPress={[Function]} - onPress={[Function]} - style={ - { - "alignItems": "center", - "flex": 1, - "opacity": 1, - "padding": 16, - "position": "relative", - "zIndex": 1, - } - } - testID="select-with-menu" - > - <View - accessibilityRole="none" - accessible={true} - style={ - { - "alignItems": "flex-start", - "flexDirection": "column", - "padding": 16, - "paddingBottom": 0, - "paddingLeft": 0, - "paddingRight": 0, - "paddingTop": 0, - "zIndex": 2, - } - } - > - <View - style={ - { - "alignItems": "center", - "flexDirection": "row", - } - } - > - <View - style={ - { - "alignItems": "center", - "flexDirection": "row", - "opacity": 1, - } - } - > - <View - style={ - { - "backgroundColor": "#ffffff", - "borderRadius": 16, - "height": 32, - "marginRight": 16, - "overflow": "hidden", - "width": 32, - } - } - testID="cellbase-avatar" - > - <Image - source={ - { - "uri": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAMAAAD04JH5AAAACVBMVEUUEPe9KtdD3HbfvBRsAAAAA3RSTlP////6yOLMAABAi0lEQVR42gGAQH+/AAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICTxE4AfldXr0AAAAASUVORK5CYII=", - } - } - style={ - { - "flex": 1, - } - } - /> - </View> - <View - style={ - { - "alignItems": "flex-start", - "flex": 1, - } - } - > - <Text - accessibilityRole="text" - numberOfLines={1} - style={ - { - "color": "#121314", - "fontFamily": "CentraNo1-Book", - "fontSize": 16, - "fontWeight": "400", - "letterSpacing": 0, - "lineHeight": 24, - } - } - testID="cellbase-avatar-title" - > - Account 2 - </Text> - <View> - <Text - accessibilityRole="text" - numberOfLines={1} - style={ - { - "color": "#686e7d", - "fontFamily": "CentraNo1-Book", - "fontSize": 16, - "fontWeight": "400", - "letterSpacing": 0, - "lineHeight": 24, - } - } - > - 0xd018...78E7 - </Text> - </View> - </View> - </View> - </View> - </View> - </TouchableOpacity> - <View - style={ - { - "paddingRight": 20, - } - } - > - <TouchableOpacity - accessibilityRole="button" - accessible={true} - activeOpacity={1} - disabled={false} - onPress={[Function]} - onPressIn={[Function]} - onPressOut={[Function]} - style={ - { - "alignItems": "center", - "borderRadius": 8, - "height": 24, - "justifyContent": "center", - "opacity": 1, - "width": 24, - } - } - testID="main-wallet-account-actions-1" - > - <SvgMock - color="#121314" - height={16} - name="MoreVertical" - style={ - { - "height": 16, - "width": 16, - } - } - width={16} - /> - </TouchableOpacity> - </View> - </View> - </View> - </View> -</RCTScrollView> -`; diff --git a/app/components/UI/AssetOverview/TokenDetails/TokenDetails.test.tsx b/app/components/UI/AssetOverview/TokenDetails/TokenDetails.test.tsx index 01338fa84807..cf97270a2334 100644 --- a/app/components/UI/AssetOverview/TokenDetails/TokenDetails.test.tsx +++ b/app/components/UI/AssetOverview/TokenDetails/TokenDetails.test.tsx @@ -20,7 +20,7 @@ import * as reactRedux from 'react-redux'; import * as StakeConstants from '../../Stake/constants'; import { strings } from '../../../../../locales/i18n'; jest.mock('../../../../core/Engine', () => ({ - getTotalFiatAccountBalance: jest.fn(), + getTotalEvmFiatAccountBalance: jest.fn(), context: { TokensController: {}, }, diff --git a/app/components/UI/Carousel/index.test.tsx b/app/components/UI/Carousel/index.test.tsx index 4383583fdc8e..abc5e12302cc 100644 --- a/app/components/UI/Carousel/index.test.tsx +++ b/app/components/UI/Carousel/index.test.tsx @@ -7,7 +7,7 @@ import { WalletViewSelectorsIDs } from '../../../../e2e/selectors/wallet/WalletV import { backgroundState } from '../../../util/test/initial-root-state'; jest.mock('../../../core/Engine', () => ({ - getTotalFiatAccountBalance: jest.fn(), + getTotalEvmFiatAccountBalance: jest.fn(), context: { TokensController: { ignoreTokens: jest.fn(() => Promise.resolve()), @@ -46,7 +46,7 @@ jest.mock('@react-navigation/native', () => ({ })); jest.mock('../../../core/Engine', () => ({ - getTotalFiatAccountBalance: jest.fn(), + getTotalEvmFiatAccountBalance: jest.fn(), })); const selectShowFiatInTestnets = jest.fn(); @@ -104,6 +104,28 @@ jest.mock('../../../images/banners/banner_image_aggregated.png', () => ({ uri: 'aggregated-image', })); +// Mock useMultichainBalances hook +jest.mock('../../../components/hooks/useMultichainBalances', () => ({ + useMultichainBalances: jest.fn().mockReturnValue({ + selectedAccountMultichainBalance: { + displayBalance: '$0.00', + displayCurrency: 'USD', + totalFiatBalance: 0, + totalNativeTokenBalance: '0', + nativeTokenUnit: 'ETH', + tokenFiatBalancesCrossChains: [], + shouldShowAggregatedPercentage: false, + isPortfolioVieEnabled: true, + aggregatedBalance: { + ethFiat: 0, + tokenFiat: 0, + tokenFiat1dAgo: 0, + ethFiat1dAgo: 0, + }, + }, + }), +})); + const mockDispatch = jest.fn(); const mockNavigate = jest.fn(); diff --git a/app/components/UI/Carousel/index.tsx b/app/components/UI/Carousel/index.tsx index 7c8e230a79fa..2239a554618a 100644 --- a/app/components/UI/Carousel/index.tsx +++ b/app/components/UI/Carousel/index.tsx @@ -28,13 +28,14 @@ export const Carousel: FC<CarouselProps> = ({ style }) => { const [selectedIndex, setSelectedIndex] = useState(0); const [pressedSlideId, setPressedSlideId] = useState<string | null>(null); const { trackEvent, createEventBuilder } = useMetrics(); - const { multichainBalances } = useMultichainBalances(); + const { selectedAccountMultichainBalance } = useMultichainBalances(); const { colors } = useTheme(); const dispatch = useDispatch(); const { navigate } = useNavigation(); const { styles } = useStyles(styleSheet, { style }); const dismissedBanners = useSelector(selectDismissedBanners); - const isZeroBalance = multichainBalances.totalFiatBalance === 0; + const isZeroBalance = + selectedAccountMultichainBalance?.totalFiatBalance === 0; const slidesConfig = useMemo( () => diff --git a/app/components/UI/DrawerView/index.js b/app/components/UI/DrawerView/index.js index a3d2831e8072..b3b391996baa 100644 --- a/app/components/UI/DrawerView/index.js +++ b/app/components/UI/DrawerView/index.js @@ -1063,7 +1063,7 @@ class DrawerView extends PureComponent { (accounts[this.selectedChecksummedAddress] && renderFromWei(accounts[this.selectedChecksummedAddress].balance)) || 0; - const fiatBalance = Engine.getTotalFiatAccountBalance(); + const fiatBalance = Engine.getTotalEvmFiatAccountBalance(); const totalFiatBalance = fiatBalance.ethFiat + fiatBalance.tokenFiat; if (totalFiatBalance !== Number(this.previousBalance)) { this.previousBalance = this.currentBalance; diff --git a/app/components/UI/DrawerView/index.test.tsx b/app/components/UI/DrawerView/index.test.tsx index db98d215af73..270875da49a9 100644 --- a/app/components/UI/DrawerView/index.test.tsx +++ b/app/components/UI/DrawerView/index.test.tsx @@ -28,7 +28,7 @@ jest.mock('../../../core/Engine', () => { const { MOCK_ACCOUNTS_CONTROLLER_STATE: mockAccountsControllerState } = jest.requireActual('../../../util/test/accountsControllerTestUtils'); return { - getTotalFiatAccountBalance: () => ({ ethFiat: 0, tokenFiat: 0 }), + getTotalEvmFiatAccountBalance: () => ({ ethFiat: 0, tokenFiat: 0 }), context: { KeyringController: { state: { diff --git a/app/components/UI/PermissionsSummary/PermissionsSummary.test.tsx b/app/components/UI/PermissionsSummary/PermissionsSummary.test.tsx index 5ce8f2a4f7b3..83e2bcf6f080 100644 --- a/app/components/UI/PermissionsSummary/PermissionsSummary.test.tsx +++ b/app/components/UI/PermissionsSummary/PermissionsSummary.test.tsx @@ -6,6 +6,46 @@ import { MOCK_ACCOUNTS_CONTROLLER_STATE } from '../../../util/test/accountsContr const mockedNavigate = jest.fn(); +// Mock useSelectedAccount hook +jest.mock('../Tabs/TabThumbnail/useSelectedAccount', () => ({ + __esModule: true, + default: jest.fn().mockReturnValue({ + name: 'Account 2', + address: '0x0', + isSelected: true, + assets: { + fiatBalance: '$3200', + }, + }), +})); + +// Mock useAccounts hook +jest.mock('../../../components/hooks/useAccounts', () => ({ + useAccounts: jest.fn().mockReturnValue({ + accounts: [ + { + name: 'Account 2', + address: '0x0', + isSelected: true, + assets: { + fiatBalance: '$3200', + }, + }, + ], + evmAccounts: [ + { + name: 'Account 2', + address: '0x0', + isSelected: true, + assets: { + fiatBalance: '$3200', + }, + }, + ], + ensByAccountAddress: {}, + }), +})); + jest.mock('@react-navigation/native', () => { const actualNav = jest.requireActual('@react-navigation/native'); return { diff --git a/app/components/UI/PermissionsSummary/__snapshots__/PermissionsSummary.test.tsx.snap b/app/components/UI/PermissionsSummary/__snapshots__/PermissionsSummary.test.tsx.snap index cab0321cac06..a82cf511d72a 100644 --- a/app/components/UI/PermissionsSummary/__snapshots__/PermissionsSummary.test.tsx.snap +++ b/app/components/UI/PermissionsSummary/__snapshots__/PermissionsSummary.test.tsx.snap @@ -278,7 +278,7 @@ exports[`PermissionsSummary should render correctly 1`] = ` "overflow": "hidden", }, { - "backgroundColor": "#FC4800", + "backgroundColor": "#1593F2", "borderRadius": 8, "height": 16, "width": 16, @@ -318,19 +318,19 @@ exports[`PermissionsSummary should render correctly 1`] = ` <RNSVGRect fill={ { - "payload": 4278291575, + "payload": 4280574177, "type": 0, } } height={16} matrix={ [ - -0.41310442982454204, - -0.910683660806177, - 0.910683660806177, - -0.41310442982454204, - 4.404802817153955, - 20.16808402411075, + -0.14608302856241107, + 0.9892723329629884, + -0.9892723329629884, + -0.14608302856241107, + 18.877507984599454, + -1.41266974682138, ] } propList={ @@ -345,19 +345,19 @@ exports[`PermissionsSummary should render correctly 1`] = ` <RNSVGRect fill={ { - "payload": 4278410587, + "payload": 4294395137, "type": 0, } } height={16} matrix={ [ - 0.903335292863301, - -0.42893513340314526, - 0.42893513340314526, - 0.903335292863301, - -9.297010789302583, - 3.362634662066926, + -0.02094241988335673, + -0.9997806834748455, + 0.9997806834748455, + -0.02094241988335673, + -7.512435753557014, + 20.161960644608932, ] } propList={ @@ -372,19 +372,19 @@ exports[`PermissionsSummary should render correctly 1`] = ` <RNSVGRect fill={ { - "payload": 4294382337, + "payload": 4294736640, "type": 0, } } height={16} matrix={ [ - -0.6921431738704069, - -0.7217602280983622, - 0.7217602280983622, - -0.6921431738704069, - -6.169639630140347, - 15.20799235933167, + -0.458649554484315, + 0.8886172326549487, + -0.8886172326549487, + -0.458649554484315, + 14.2400072574634, + 19.300266514976617, ] } propList={ diff --git a/app/components/UI/SwitchCustomNetwork/index.test.tsx b/app/components/UI/SwitchCustomNetwork/index.test.tsx index eca85d5732ce..d1e32c8392e7 100644 --- a/app/components/UI/SwitchCustomNetwork/index.test.tsx +++ b/app/components/UI/SwitchCustomNetwork/index.test.tsx @@ -26,6 +26,43 @@ const mockInitialState = { }, }; +jest.mock('../../../components/hooks/useAccounts', () => { + // eslint-disable-next-line @typescript-eslint/no-require-imports, @typescript-eslint/no-var-requires + const { KeyringTypes } = require('@metamask/keyring-controller'); + + return { + useAccounts: () => ({ + accounts: [ + { + name: 'Account 1', + address: '0x0000000000000000000000000000000000000001', + type: KeyringTypes.hd, + yOffset: 0, + isSelected: true, + assets: { + fiatBalance: '$0.00\n0 ETH', + }, + balanceError: undefined, + }, + ], + evmAccounts: [ + { + name: 'Account 1', + address: '0x0000000000000000000000000000000000000001', + type: KeyringTypes.hd, + yOffset: 0, + isSelected: true, + assets: { + fiatBalance: '$0.00\n0 ETH', + }, + balanceError: undefined, + }, + ], + ensByAccountAddress: {}, + }), + }; +}); + describe('SwitchCustomNetwork', () => { it('should render correctly', () => { const { toJSON } = renderWithProvider( diff --git a/app/components/UI/Tabs/index.test.tsx b/app/components/UI/Tabs/index.test.tsx index 36ca5b367127..1cc6400179b2 100644 --- a/app/components/UI/Tabs/index.test.tsx +++ b/app/components/UI/Tabs/index.test.tsx @@ -25,6 +25,43 @@ jest.mock('react-native-safe-area-context', () => { }; }); +jest.mock('../../../components/hooks/useAccounts', () => { + // eslint-disable-next-line @typescript-eslint/no-require-imports, @typescript-eslint/no-var-requires + const { KeyringTypes } = require('@metamask/keyring-controller'); + + return { + useAccounts: () => ({ + accounts: [ + { + name: 'Account 1', + address: '0x0000000000000000000000000000000000000001', + type: KeyringTypes.hd, + yOffset: 0, + isSelected: true, + assets: { + fiatBalance: '$0.00\n0 ETH', + }, + balanceError: undefined, + }, + ], + evmAccounts: [ + { + name: 'Account 1', + address: '0x0000000000000000000000000000000000000001', + type: KeyringTypes.hd, + yOffset: 0, + isSelected: true, + assets: { + fiatBalance: '$0.00\n0 ETH', + }, + balanceError: undefined, + }, + ], + ensByAccountAddress: {}, + }), + }; +}); + describe('Tabs', () => { it('should render correctly', () => { const { toJSON } = renderWithProvider( diff --git a/app/components/UI/Tokens/TokenList/PortfolioBalance/index.test.tsx b/app/components/UI/Tokens/TokenList/PortfolioBalance/index.test.tsx index 01f1fa4edb83..80483625766f 100644 --- a/app/components/UI/Tokens/TokenList/PortfolioBalance/index.test.tsx +++ b/app/components/UI/Tokens/TokenList/PortfolioBalance/index.test.tsx @@ -11,8 +11,26 @@ import { EYE_SLASH_ICON_TEST_ID, EYE_ICON_TEST_ID } from './index.constants'; const { PreferencesController } = Engine.context; +// Mock Date.now() to return a fixed timestamp for deterministic tests +const FIXED_TIMESTAMP = 123; +global.Date.now = jest.fn(() => FIXED_TIMESTAMP); + +// Mock the useMultichainBalances hook +const mockSelectedAccountMultichainBalance = { + displayBalance: '$123.45', + totalFiatBalance: '123.45', + shouldShowAggregatedPercentage: true, + tokenFiatBalancesCrossChains: [], +}; + +jest.mock('../../../../hooks/useMultichainBalances', () => ({ + useMultichainBalances: () => ({ + selectedAccountMultichainBalance: mockSelectedAccountMultichainBalance, + }), +})); + jest.mock('../../../../../core/Engine', () => ({ - getTotalFiatAccountBalance: jest.fn(), + getTotalEvmFiatAccountBalance: jest.fn(), context: { TokensController: { ignoreTokens: jest.fn(() => Promise.resolve()), diff --git a/app/components/UI/Tokens/TokenList/PortfolioBalance/index.tsx b/app/components/UI/Tokens/TokenList/PortfolioBalance/index.tsx index d026a46d6f26..ffc74890b436 100644 --- a/app/components/UI/Tokens/TokenList/PortfolioBalance/index.tsx +++ b/app/components/UI/Tokens/TokenList/PortfolioBalance/index.tsx @@ -45,7 +45,7 @@ export const PortfolioBalance = React.memo(() => { const navigation = useNavigation(); const { trackEvent, isEnabled, createEventBuilder } = useMetrics(); - const { multichainBalances } = useMultichainBalances(); + const { selectedAccountMultichainBalance } = useMultichainBalances(); const onOpenPortfolio = useCallback(() => { const existingPortfolioTab = browserTabs.find(({ url }: BrowserTab) => @@ -100,16 +100,20 @@ export const PortfolioBalance = React.memo(() => { ]); const renderAggregatedPercentage = () => { - if (!multichainBalances.shouldShowAggregatedPercentage) { + if ( + !selectedAccountMultichainBalance || + !selectedAccountMultichainBalance?.shouldShowAggregatedPercentage || + selectedAccountMultichainBalance?.totalFiatBalance === undefined + ) { return null; } return ( <AggregatedPercentageCrossChains privacyMode={privacyMode} - totalFiatCrossChains={multichainBalances.totalFiatBalance} + totalFiatCrossChains={selectedAccountMultichainBalance.totalFiatBalance} tokenFiatBalancesCrossChains={ - multichainBalances.tokenFiatBalancesCrossChains + selectedAccountMultichainBalance.tokenFiatBalancesCrossChains } /> ); @@ -126,7 +130,7 @@ export const PortfolioBalance = React.memo(() => { <View style={styles.portfolioBalance}> <View> <View> - {multichainBalances?.displayBalance ? ( + {selectedAccountMultichainBalance?.displayBalance ? ( <View style={styles.balanceContainer}> <SensitiveText isHidden={privacyMode} @@ -134,7 +138,7 @@ export const PortfolioBalance = React.memo(() => { testID={WalletViewSelectorsIDs.TOTAL_BALANCE_TEXT} variant={TextVariant.DisplayMD} > - {multichainBalances.displayBalance} + {selectedAccountMultichainBalance.displayBalance} </SensitiveText> <TouchableOpacity onPress={() => toggleIsBalanceAndAssetsHidden(!privacyMode)} diff --git a/app/components/UI/Tokens/index.test.tsx b/app/components/UI/Tokens/index.test.tsx index f88c4a7270e6..25ed1ba53731 100644 --- a/app/components/UI/Tokens/index.test.tsx +++ b/app/components/UI/Tokens/index.test.tsx @@ -31,7 +31,7 @@ jest.mock('./TokensBottomSheet', () => ({ })); jest.mock('../../../core/Engine', () => ({ - getTotalFiatAccountBalance: jest.fn(), + getTotalEvmFiatAccountBalance: jest.fn(), context: { TokensController: { ignoreTokens: jest.fn(() => Promise.resolve()), diff --git a/app/components/Views/AssetOptions/AssetOptions.test.tsx b/app/components/Views/AssetOptions/AssetOptions.test.tsx index 8a59ff8325a4..8ea3395c97dd 100644 --- a/app/components/Views/AssetOptions/AssetOptions.test.tsx +++ b/app/components/Views/AssetOptions/AssetOptions.test.tsx @@ -54,7 +54,7 @@ jest.mock('../../../core/Engine', () => ({ updateExchangeRatesByChainId: jest.fn(() => Promise.resolve()), }, }, - getTotalFiatAccountBalance: jest.fn(), + getTotalEvmFiatAccountBalance: jest.fn(), })); jest.mock('../../../selectors/networkController', () => ({ diff --git a/app/components/Views/NetworkSelector/NetworkSelector.test.tsx b/app/components/Views/NetworkSelector/NetworkSelector.test.tsx index 011d81f2af66..3efb5e75d7ba 100644 --- a/app/components/Views/NetworkSelector/NetworkSelector.test.tsx +++ b/app/components/Views/NetworkSelector/NetworkSelector.test.tsx @@ -51,7 +51,7 @@ jest.mock('@react-navigation/native', () => { }); jest.mock('../../../core/Engine', () => ({ - getTotalFiatAccountBalance: jest.fn(), + getTotalEvmFiatAccountBalance: jest.fn(), context: { NetworkController: { setActiveNetwork: jest.fn(), diff --git a/app/components/Views/Wallet/index.test.tsx b/app/components/Views/Wallet/index.test.tsx index 78c1f7535756..7426d7b03d5d 100644 --- a/app/components/Views/Wallet/index.test.tsx +++ b/app/components/Views/Wallet/index.test.tsx @@ -24,7 +24,13 @@ jest.mock('../../../core/Engine', () => { const { MOCK_ACCOUNTS_CONTROLLER_STATE: mockAccountsControllerState } = jest.requireActual('../../../util/test/accountsControllerTestUtils'); return { - getTotalFiatAccountBalance: jest.fn(), + getTotalEvmFiatAccountBalance: jest.fn().mockReturnValue({ + totalNativeTokenBalance: { amount: '1', unit: 'ETH' }, + totalBalanceFiat: 3200, + balances: { + '0x0': { amount: '1', unit: 'ETH' }, + }, + }), context: { NftController: { allNfts: { diff --git a/app/components/Views/confirmations/Confirm/Confirm.test.tsx b/app/components/Views/confirmations/Confirm/Confirm.test.tsx index bc229f790ae7..59c94f7223ae 100644 --- a/app/components/Views/confirmations/Confirm/Confirm.test.tsx +++ b/app/components/Views/confirmations/Confirm/Confirm.test.tsx @@ -49,7 +49,7 @@ jest.mock('react-native-safe-area-context', () => { }); jest.mock('../../../../core/Engine', () => ({ - getTotalFiatAccountBalance: () => ({ tokenFiat: 10 }), + getTotalEvmFiatAccountBalance: () => ({ tokenFiat: 10 }), context: { KeyringController: { state: { diff --git a/app/components/Views/confirmations/components/Confirm/AccountNetworkInfo/AccountNetworkInfo.test.tsx b/app/components/Views/confirmations/components/Confirm/AccountNetworkInfo/AccountNetworkInfo.test.tsx index 1499505c950a..0652855395c4 100644 --- a/app/components/Views/confirmations/components/Confirm/AccountNetworkInfo/AccountNetworkInfo.test.tsx +++ b/app/components/Views/confirmations/components/Confirm/AccountNetworkInfo/AccountNetworkInfo.test.tsx @@ -5,7 +5,7 @@ import { personalSignatureConfirmationState } from '../../../../../../util/test/ import AccountNetworkInfo from './AccountNetworkInfo'; jest.mock('../../../../../../core/Engine', () => ({ - getTotalFiatAccountBalance: () => ({ tokenFiat: 10 }), + getTotalEvmFiatAccountBalance: () => ({ tokenFiat: 10 }), context: { AccountsController: { state: { diff --git a/app/components/Views/confirmations/components/Confirm/AccountNetworkInfo/AccountNetworkInfoCollapsed/AccountNetworkInfoCollapsed.test.tsx b/app/components/Views/confirmations/components/Confirm/AccountNetworkInfo/AccountNetworkInfoCollapsed/AccountNetworkInfoCollapsed.test.tsx index 748eb734a21d..6bb3e62434b4 100644 --- a/app/components/Views/confirmations/components/Confirm/AccountNetworkInfo/AccountNetworkInfoCollapsed/AccountNetworkInfoCollapsed.test.tsx +++ b/app/components/Views/confirmations/components/Confirm/AccountNetworkInfo/AccountNetworkInfoCollapsed/AccountNetworkInfoCollapsed.test.tsx @@ -12,7 +12,7 @@ jest.mock('../../../../../../../util/address', () => ({ })); jest.mock('../../../../../../../core/Engine', () => ({ - getTotalFiatAccountBalance: () => ({ tokenFiat: 10 }), + getTotalEvmFiatAccountBalance: () => ({ tokenFiat: 10 }), })); describe('AccountNetworkInfoCollapsed', () => { diff --git a/app/components/Views/confirmations/components/Confirm/AccountNetworkInfo/AccountNetworkInfoExpanded/AccountNetworkInfoExpanded.test.tsx b/app/components/Views/confirmations/components/Confirm/AccountNetworkInfo/AccountNetworkInfoExpanded/AccountNetworkInfoExpanded.test.tsx index 6a1884c05092..2c2c6274bda9 100644 --- a/app/components/Views/confirmations/components/Confirm/AccountNetworkInfo/AccountNetworkInfoExpanded/AccountNetworkInfoExpanded.test.tsx +++ b/app/components/Views/confirmations/components/Confirm/AccountNetworkInfo/AccountNetworkInfoExpanded/AccountNetworkInfoExpanded.test.tsx @@ -3,6 +3,7 @@ import renderWithProvider from '../../../../../../../util/test/renderWithProvide import { personalSignatureConfirmationState } from '../../../../../../../util/test/confirm-data-helpers'; import AccountNetworkInfoExpanded from './AccountNetworkInfoExpanded'; import { isPortfolioViewEnabled } from '../../../../../../../util/networks'; +import { useMultichainBalances } from '../../../../../../../components/hooks/useMultichainBalances'; jest.mock('../../../../../../../util/networks', () => ({ ...jest.requireActual('../../../../../../../util/networks'), @@ -10,15 +11,48 @@ jest.mock('../../../../../../../util/networks', () => ({ })); jest.mock('../../../../../../../core/Engine', () => ({ - getTotalFiatAccountBalance: () => ({ tokenFiat: 10 }), + getTotalEvmFiatAccountBalance: jest.fn().mockReturnValue({ + totalNativeTokenBalance: { amount: '0', unit: 'ETH' }, + totalBalanceFiat: 0, + balances: { + '0x0': { amount: '0', unit: 'ETH' }, + }, + }), })); +jest.mock( + '../../../../../../../components/hooks/useMultichainBalances', + () => ({ + useMultichainBalances: jest.fn(), + }), +); + describe('AccountNetworkInfoExpanded', () => { const mockIsPortfolioViewEnabled = jest.mocked(isPortfolioViewEnabled); + const mockUseMultichainBalances = jest.mocked(useMultichainBalances); beforeEach(() => { jest.clearAllMocks(); mockIsPortfolioViewEnabled.mockReturnValue(false); + mockUseMultichainBalances.mockReturnValue({ + selectedAccountMultichainBalance: { + displayBalance: '$0.00', + displayCurrency: 'USD', + totalFiatBalance: 0, + totalNativeTokenBalance: '0', + nativeTokenUnit: 'ETH', + tokenFiatBalancesCrossChains: [], + shouldShowAggregatedPercentage: false, + isPortfolioVieEnabled: true, + aggregatedBalance: { + ethFiat: 0, + tokenFiat: 0, + tokenFiat1dAgo: 0, + ethFiat1dAgo: 0, + }, + }, + multichainBalancesForAllAccounts: {}, + }); }); it('should match snapshot when isPortfolioViewEnabled is true', () => { diff --git a/app/components/Views/confirmations/components/Confirm/AccountNetworkInfo/AccountNetworkInfoExpanded/AccountNetworkInfoExpanded.tsx b/app/components/Views/confirmations/components/Confirm/AccountNetworkInfo/AccountNetworkInfoExpanded/AccountNetworkInfoExpanded.tsx index 3ff7ff3b115e..163d50df9bc4 100644 --- a/app/components/Views/confirmations/components/Confirm/AccountNetworkInfo/AccountNetworkInfoExpanded/AccountNetworkInfoExpanded.tsx +++ b/app/components/Views/confirmations/components/Confirm/AccountNetworkInfo/AccountNetworkInfoExpanded/AccountNetworkInfoExpanded.tsx @@ -17,8 +17,8 @@ const AccountNetworkInfoExpanded = () => { const fromAddress = signatureRequest?.messageParams?.from as string; const { accountAddress } = useAccountInfo(fromAddress); - const { multichainBalances } = useMultichainBalances(); - const balanceToDisplay = multichainBalances.displayBalance; + const { selectedAccountMultichainBalance } = useMultichainBalances(); + const balanceToDisplay = selectedAccountMultichainBalance?.displayBalance; return ( <View> diff --git a/app/components/Views/confirmations/components/Confirm/Info/Info.test.tsx b/app/components/Views/confirmations/components/Confirm/Info/Info.test.tsx index be88e4e3eaa1..c3c62385353a 100644 --- a/app/components/Views/confirmations/components/Confirm/Info/Info.test.tsx +++ b/app/components/Views/confirmations/components/Confirm/Info/Info.test.tsx @@ -18,7 +18,7 @@ const MockText = Text; jest.mock('./QRInfo', () => () => <MockText>QR Scanning Component</MockText>); jest.mock('../../../../../../core/Engine', () => ({ - getTotalFiatAccountBalance: () => ({ tokenFiat: 10 }), + getTotalEvmFiatAccountBalance: () => ({ tokenFiat: 10 }), context: { KeyringController: { state: { diff --git a/app/components/Views/confirmations/components/Confirm/Info/PersonalSign/PersonalSign.test.tsx b/app/components/Views/confirmations/components/Confirm/Info/PersonalSign/PersonalSign.test.tsx index f37c2e6e6447..bc86db93f408 100644 --- a/app/components/Views/confirmations/components/Confirm/Info/PersonalSign/PersonalSign.test.tsx +++ b/app/components/Views/confirmations/components/Confirm/Info/PersonalSign/PersonalSign.test.tsx @@ -9,7 +9,7 @@ import { import PersonalSign from './PersonalSign'; jest.mock('../../../../../../../core/Engine', () => ({ - getTotalFiatAccountBalance: () => ({ tokenFiat: 10 }), + getTotalEvmFiatAccountBalance: () => ({ tokenFiat: 10 }), context: { KeyringController: { state: { diff --git a/app/components/Views/confirmations/components/Confirm/Info/StakingClaim/StakingClaim.test.tsx b/app/components/Views/confirmations/components/Confirm/Info/StakingClaim/StakingClaim.test.tsx index 24fe12bc5725..b6ef03a2d57c 100644 --- a/app/components/Views/confirmations/components/Confirm/Info/StakingClaim/StakingClaim.test.tsx +++ b/app/components/Views/confirmations/components/Confirm/Info/StakingClaim/StakingClaim.test.tsx @@ -7,7 +7,7 @@ import { getNavbar } from '../../Navbar/Navbar'; import StakingClaim from './StakingClaim'; jest.mock('../../../../../../../core/Engine', () => ({ - getTotalFiatAccountBalance: () => ({ tokenFiat: 10 }), + getTotalEvmFiatAccountBalance: () => ({ tokenFiat: 10 }), context: { NetworkController: { getNetworkConfigurationByNetworkClientId: jest.fn(), @@ -62,12 +62,15 @@ describe('StakingClaim', () => { const mockRoute: RouteProp<{ params: { amountWei: string } }, 'params'> = { key: 'test', name: 'params', - params: { amountWei: '1000000000000000000' } + params: { amountWei: '1000000000000000000' }, }; - const { getByText } = renderWithProvider(<StakingClaim route={mockRoute} />, { - state: stakingClaimConfirmationState, - }); + const { getByText } = renderWithProvider( + <StakingClaim route={mockRoute} />, + { + state: stakingClaimConfirmationState, + }, + ); expect(getByText('Estimated changes')).toBeDefined(); expect(getByText('Claiming to')).toBeDefined(); expect(getByText('Interacting with')).toBeDefined(); diff --git a/app/components/Views/confirmations/components/Confirm/Info/StakingDeposit/StakingDeposit.test.tsx b/app/components/Views/confirmations/components/Confirm/Info/StakingDeposit/StakingDeposit.test.tsx index 61a05016aca1..51bb67960e39 100644 --- a/app/components/Views/confirmations/components/Confirm/Info/StakingDeposit/StakingDeposit.test.tsx +++ b/app/components/Views/confirmations/components/Confirm/Info/StakingDeposit/StakingDeposit.test.tsx @@ -10,7 +10,7 @@ import { getNavbar } from '../../Navbar/Navbar'; import StakingDeposit from './StakingDeposit'; jest.mock('../../../../../../../core/Engine', () => ({ - getTotalFiatAccountBalance: () => ({ tokenFiat: 10 }), + getTotalEvmFiatAccountBalance: () => ({ tokenFiat: 10 }), context: { NetworkController: { getNetworkConfigurationByNetworkClientId: jest.fn(), diff --git a/app/components/Views/confirmations/components/Confirm/Info/StakingWithdrawal/StakingWithdrawal.test.tsx b/app/components/Views/confirmations/components/Confirm/Info/StakingWithdrawal/StakingWithdrawal.test.tsx index 845e517fefbb..87e5653091ee 100644 --- a/app/components/Views/confirmations/components/Confirm/Info/StakingWithdrawal/StakingWithdrawal.test.tsx +++ b/app/components/Views/confirmations/components/Confirm/Info/StakingWithdrawal/StakingWithdrawal.test.tsx @@ -8,7 +8,7 @@ import { getNavbar } from '../../Navbar/Navbar'; import StakingWithdrawal from './StakingWithdrawal'; jest.mock('../../../../../../../core/Engine', () => ({ - getTotalFiatAccountBalance: () => ({ tokenFiat: 10 }), + getTotalEvmFiatAccountBalance: () => ({ tokenFiat: 10 }), context: { NetworkController: { getNetworkConfigurationByNetworkClientId: jest.fn(), diff --git a/app/components/Views/confirmations/components/Confirm/Info/TypedSignV1/TypedSignV1.test.tsx b/app/components/Views/confirmations/components/Confirm/Info/TypedSignV1/TypedSignV1.test.tsx index 37eeffd55edc..d05e4620f980 100644 --- a/app/components/Views/confirmations/components/Confirm/Info/TypedSignV1/TypedSignV1.test.tsx +++ b/app/components/Views/confirmations/components/Confirm/Info/TypedSignV1/TypedSignV1.test.tsx @@ -5,7 +5,7 @@ import { typedSignV1ConfirmationState } from '../../../../../../../util/test/con import TypedSignV1 from './TypedSignV1'; jest.mock('../../../../../../../core/Engine', () => ({ - getTotalFiatAccountBalance: () => ({ tokenFiat: 10 }), + getTotalEvmFiatAccountBalance: () => ({ tokenFiat: 10 }), context: { KeyringController: { state: { diff --git a/app/components/Views/confirmations/components/Confirm/Info/TypedSignV3V4/TypedSignV3V4.test.tsx b/app/components/Views/confirmations/components/Confirm/Info/TypedSignV3V4/TypedSignV3V4.test.tsx index eda9f314306e..9bcd2fbcd6c3 100644 --- a/app/components/Views/confirmations/components/Confirm/Info/TypedSignV3V4/TypedSignV3V4.test.tsx +++ b/app/components/Views/confirmations/components/Confirm/Info/TypedSignV3V4/TypedSignV3V4.test.tsx @@ -10,7 +10,7 @@ import TypedSignV3V4 from './TypedSignV3V4'; jest.mock('../../../../../../../core/Engine', () => ({ resetState: jest.fn(), - getTotalFiatAccountBalance: () => ({ tokenFiat: 10 }), + getTotalEvmFiatAccountBalance: () => ({ tokenFiat: 10 }), context: { KeyringController: { state: { diff --git a/app/components/Views/confirmations/hooks/useAccountInfo.test.ts b/app/components/Views/confirmations/hooks/useAccountInfo.test.ts index 67e207cc372f..d7c55e9f2b20 100644 --- a/app/components/Views/confirmations/hooks/useAccountInfo.test.ts +++ b/app/components/Views/confirmations/hooks/useAccountInfo.test.ts @@ -8,7 +8,7 @@ import { RootState } from '../../../../reducers'; import useAccountInfo from './useAccountInfo'; jest.mock('../../../../core/Engine', () => ({ - getTotalFiatAccountBalance: () => ({ tokenFiat: 10 }), + getTotalEvmFiatAccountBalance: () => ({ tokenFiat: 10 }), })); const MOCK_ADDRESS = '0x0'; diff --git a/app/components/Views/confirmations/hooks/useAccountInfo.ts b/app/components/Views/confirmations/hooks/useAccountInfo.ts index 1f0dc36db9c8..519616c7257b 100644 --- a/app/components/Views/confirmations/hooks/useAccountInfo.ts +++ b/app/components/Views/confirmations/hooks/useAccountInfo.ts @@ -18,7 +18,7 @@ const useAccountInfo = (address: string) => { address, ); const currentCurrency = useSelector(selectCurrentCurrency); - const balance = Engine.getTotalFiatAccountBalance(); + const balance = Engine.getTotalEvmFiatAccountBalance(); const accountFiatBalance = `${formatWithThreshold( balance.tokenFiat, 0, diff --git a/app/components/Views/confirmations/hooks/useConfirmationRedesignEnabled.test.ts b/app/components/Views/confirmations/hooks/useConfirmationRedesignEnabled.test.ts index f437aa27b2d1..649c2bd06027 100644 --- a/app/components/Views/confirmations/hooks/useConfirmationRedesignEnabled.test.ts +++ b/app/components/Views/confirmations/hooks/useConfirmationRedesignEnabled.test.ts @@ -18,7 +18,7 @@ jest.mock('../../../../util/address', () => ({ })); jest.mock('../../../../core/Engine', () => ({ - getTotalFiatAccountBalance: () => ({ tokenFiat: 10 }), + getTotalEvmFiatAccountBalance: () => ({ tokenFiat: 10 }), context: { KeyringController: { state: { diff --git a/app/components/hooks/useAccounts/useAccounts.test.ts b/app/components/hooks/useAccounts/useAccounts.test.ts index ad33a8da426b..82dff598ec78 100644 --- a/app/components/hooks/useAccounts/useAccounts.test.ts +++ b/app/components/hooks/useAccounts/useAccounts.test.ts @@ -8,12 +8,16 @@ import { Account } from './useAccounts.types'; import { Hex } from '@metamask/utils'; // eslint-disable-next-line import/no-namespace import * as networks from '../../../util/networks'; -import { getAccountBalances } from './utils'; -const mockReturnGetAccountBalances = getAccountBalances as jest.Mock; - -jest.mock('./utils', () => ({ - getAccountBalances: jest.fn(), +jest.mock('../../../core/Engine', () => ({ + getTotalEvmFiatAccountBalance: jest.fn().mockReturnValue({ + ethFiat: 0, + ethFiat1dAgo: 0, + tokenFiat: 0, + tokenFiat1dAgo: 0, + totalNativeTokenBalance: '0', + ticker: 'ETH', + }), })); const MOCK_ENS_CACHED_NAME = 'fox.eth'; @@ -31,7 +35,7 @@ const MOCK_ACCOUNT_1: Account = { yOffset: 0, isSelected: false, assets: { - fiatBalance: '\n0 ETH', + fiatBalance: '$0.00\n0 ETH', }, balanceError: undefined, }; @@ -42,7 +46,7 @@ const MOCK_ACCOUNT_2: Account = { yOffset: 78, isSelected: true, assets: { - fiatBalance: '\n< 0.00001 ETH', + fiatBalance: '$0.00\n0 ETH', }, balanceError: undefined, }; @@ -98,21 +102,11 @@ describe('useAccounts', () => { }); it('populates balanceError property for accounts', async () => { - mockReturnGetAccountBalances.mockReturnValueOnce({ - balanceWeiHex: '0x0', - balanceETH: 0, - balanceFiat: 0, - }); - mockReturnGetAccountBalances.mockReturnValueOnce({ - balanceWeiHex: '0x5', - balanceETH: '< 0.00001', - balanceFiat: 0, - }); const expectedBalanceError = 'Insufficient funds'; const { result, waitForNextUpdate } = renderHook(() => useAccounts({ checkBalanceError: (balance) => - balance === '0x0' ? 'Insufficient funds' : '', + balance === '0' ? 'Insufficient funds' : '', }), ); await act(async () => { @@ -121,21 +115,10 @@ describe('useAccounts', () => { expect(result.current.accounts[0].balanceError).toStrictEqual( expectedBalanceError, ); - expect(result.current.accounts[1].balanceError).toStrictEqual(''); }); it('returns internal accounts', async () => { jest.spyOn(networks, 'isPortfolioViewEnabled').mockReturnValue(false); - mockReturnGetAccountBalances.mockReturnValueOnce({ - balanceWeiHex: '0x0', - balanceETH: '0', - balanceFiat: '', - }); - mockReturnGetAccountBalances.mockReturnValueOnce({ - balanceWeiHex: '0x5', - balanceETH: '< 0.00001', - balanceFiat: '', - }); const expectedInternalAccounts: Account[] = [ MOCK_ACCOUNT_1, MOCK_ACCOUNT_2, @@ -148,16 +131,6 @@ describe('useAccounts', () => { }); it('returns ENS name when available', async () => { - mockReturnGetAccountBalances.mockReturnValueOnce({ - balanceWeiHex: '0x0', - balanceETH: '0', - balanceFiat: '', - }); - mockReturnGetAccountBalances.mockReturnValueOnce({ - balanceWeiHex: '0x5', - balanceETH: '< 0.00001', - balanceFiat: '', - }); const expectedENSNames = { [MOCK_ACCOUNT_1.address]: MOCK_ENS_CACHED_NAME, }; diff --git a/app/components/hooks/useAccounts/useAccounts.ts b/app/components/hooks/useAccounts/useAccounts.ts index e607ea345711..7327b370816c 100644 --- a/app/components/hooks/useAccounts/useAccounts.ts +++ b/app/components/hooks/useAccounts/useAccounts.ts @@ -1,24 +1,12 @@ // Third party dependencies. -import { useCallback, useEffect, useRef, useState } from 'react'; +import { useCallback, useEffect, useRef, useState, useMemo } from 'react'; import { useSelector } from 'react-redux'; import { KeyringTypes } from '@metamask/keyring-controller'; // External Dependencies. import { doENSReverseLookup } from '../../../util/ENSUtils'; -import { getTicker } from '../../../util/transactions'; -import { - selectChainId, - selectEvmTicker, -} from '../../../selectors/networkController'; -import { - selectConversionRate, - selectCurrentCurrency, -} from '../../../selectors/currencyRateController'; -import { selectAccounts } from '../../../selectors/accountTrackerController'; -import { - selectIsMultiAccountBalancesEnabled, - selectIsTokenNetworkFilterEqualCurrentNetwork, -} from '../../../selectors/preferencesController'; +import { selectChainId } from '../../../selectors/networkController'; +import { selectIsMultiAccountBalancesEnabled } from '../../../selectors/preferencesController'; import { selectInternalAccounts, selectSelectedInternalAccount, @@ -32,15 +20,11 @@ import { UseAccountsParams, } from './useAccounts.types'; import { InternalAccount } from '@metamask/keyring-internal-api'; -import { getChainIdsToPoll } from '../../../selectors/tokensController'; -import { useGetFormattedTokensPerChain } from '../useGetFormattedTokensPerChain'; -import { useGetTotalFiatBalanceCrossChains } from '../useGetTotalFiatBalanceCrossChains'; import { getFormattedAddressFromInternalAccount, isNonEvmAddress, } from '../../../core/Multichain/utils'; -import { getAccountBalances } from './utils'; -import { isEvmAccountType } from '@metamask/keyring-api'; +import { useMultichainBalances } from '../useMultichainBalances'; /** * Hook that returns both wallet accounts and ens name information. @@ -57,40 +41,19 @@ const useAccounts = ({ const [ensByAccountAddress, setENSByAccountAddress] = useState<EnsByAccountAddress>({}); const chainId = useSelector(selectChainId); - const accountInfoByAddress = useSelector(selectAccounts); - const conversionRate = useSelector(selectConversionRate); - const currentCurrency = useSelector(selectCurrentCurrency); - const ticker = useSelector(selectEvmTicker); const internalAccounts = useSelector(selectInternalAccounts); const selectedInternalAccount = useSelector(selectSelectedInternalAccount); + const { multichainBalancesForAllAccounts } = useMultichainBalances(); + const isMultiAccountBalancesEnabled = useSelector( selectIsMultiAccountBalancesEnabled, ); - // Agg balance Start - const allChainIDs = useSelector(getChainIdsToPoll); - const isTokenNetworkFilterEqualCurrentNetwork = useSelector( - selectIsTokenNetworkFilterEqualCurrentNetwork, - ); - const formattedTokensWithBalancesPerChain = useGetFormattedTokensPerChain( - internalAccounts, - !isTokenNetworkFilterEqualCurrentNetwork, - allChainIDs, - ); - const totalFiatBalancesCrossChain = useGetTotalFiatBalanceCrossChains( - internalAccounts, - formattedTokensWithBalancesPerChain, - ); - - // Agg balance End - - // Memoize checkBalanceErrorFn so it doesn't cause an infinite loop const checkBalanceError = useCallback( (balance: string) => checkBalanceErrorFn?.(balance), // eslint-disable-next-line react-hooks/exhaustive-deps [], ); - const fetchENSNames = useCallback( async ({ flattenedAccounts, @@ -145,90 +108,99 @@ const useAccounts = ({ [chainId], ); - const getAccounts = useCallback( - () => { - if (!isMountedRef.current) return; - // Keep track of the Y position of account item. Used for scrolling purposes. - let yOffset = 0; - let selectedIndex = 0; - const flattenedAccounts: Account[] = internalAccounts.map( - (internalAccount: InternalAccount, index: number) => { - const formattedAddress = - getFormattedAddressFromInternalAccount(internalAccount); - const isSelected = - selectedInternalAccount?.address === internalAccount.address; - if (isSelected) { - selectedIndex = index; - } - - // TODO - Improve UI to either include loading and/or balance load failures. - // TODO - Non EVM accounts like BTC do not use hex formatted balances. We will need to modify this to support multiple chains in the future. - const { balanceETH, balanceFiat, balanceWeiHex } = getAccountBalances( - { - internalAccount, - accountInfoByAddress, - totalFiatBalancesCrossChain, - conversionRate, - currentCurrency, - }, - ); + // Memoize the balance calculation to prevent it from causing re-renders + const accountBalances = useMemo(() => { + const balances: Record< + string, + { + displayBalance: string; + balanceError: string | undefined; + } + > = {}; + + internalAccounts.forEach((account) => { + const balanceForAccount = multichainBalancesForAllAccounts?.[account.id]; + const displayBalance = balanceForAccount + ? `${balanceForAccount.displayBalance}\n${balanceForAccount.totalNativeTokenBalance} ${balanceForAccount.nativeTokenUnit}` + : ''; + + const error = + balanceForAccount.totalFiatBalance !== undefined + ? checkBalanceError?.(balanceForAccount.totalFiatBalance.toString()) + : undefined; + + balances[account.id] = { + displayBalance, + balanceError: typeof error === 'string' ? error : undefined, + }; + }); + + return balances; + }, [internalAccounts, multichainBalancesForAllAccounts, checkBalanceError]); + + const getAccounts = useCallback(() => { + if (!isMountedRef.current) return; + // Keep track of the Y position of account item. Used for scrolling purposes. + let yOffset = 0; + let selectedIndex = 0; + const flattenedAccounts: Account[] = internalAccounts.map( + (internalAccount: InternalAccount, index: number) => { + const formattedAddress = + getFormattedAddressFromInternalAccount(internalAccount); + const isSelected = + selectedInternalAccount?.address === internalAccount.address; + if (isSelected) { + selectedIndex = index; + } - const balanceTicker = getTicker(ticker); - const balanceLabel = `${balanceFiat}\n${balanceETH} ${balanceTicker}`; - const balanceError = checkBalanceError?.(balanceWeiHex); - const isEvmAccount = isEvmAccountType(internalAccount.type); - const isBalanceAvailable = - isMultiAccountBalancesEnabled || isSelected; - const mappedAccount: Account = { - name: internalAccount.metadata.name, - address: formattedAddress, - type: internalAccount.metadata.keyring.type as KeyringTypes, - yOffset, - isSelected, - // TODO - Also fetch assets. Reference AccountList component. - // assets - assets: - // TODO = Render non evm assets. This is a temporary fix. - isBalanceAvailable && isEvmAccount - ? { fiatBalance: balanceLabel } - : undefined, - balanceError, - }; - // Calculate height of the account item. - yOffset += 78; - if (balanceError) { - yOffset += 22; - } - if (internalAccount.metadata.keyring.type !== KeyringTypes.hd) { - yOffset += 24; - } - return mappedAccount; - }, - ); - - setAccounts(flattenedAccounts); - setEVMAccounts( - flattenedAccounts.filter( - (account) => !isNonEvmAddress(account.address), - ), - ); - fetchENSNames({ flattenedAccounts, startingIndex: selectedIndex }); - }, // eslint-disable-next-line react-hooks/exhaustive-deps - [ - selectedInternalAccount, - fetchENSNames, - accountInfoByAddress, - conversionRate, - currentCurrency, - ticker, - isMultiAccountBalancesEnabled, - internalAccounts, - checkBalanceError, - ], - ); + const accountBalance = accountBalances[internalAccount.id] || { + displayBalance: '', + balanceError: undefined, + }; + + const isBalanceAvailable = isMultiAccountBalancesEnabled || isSelected; + const mappedAccount: Account = { + name: internalAccount.metadata.name, + address: formattedAddress, + type: internalAccount.metadata.keyring.type as KeyringTypes, + yOffset, + isSelected, + // TODO - Also fetch assets. Reference AccountList component. + // assets + assets: + isBalanceAvailable && accountBalance.displayBalance + ? { + fiatBalance: accountBalance.displayBalance, + } + : undefined, + balanceError: accountBalance.balanceError, + }; + // Calculate height of the account item. + yOffset += 78; + if (accountBalance.balanceError) { + yOffset += 22; + } + if (internalAccount.metadata.keyring.type !== KeyringTypes.hd) { + yOffset += 24; + } + return mappedAccount; + }, + ); + + setAccounts(flattenedAccounts); + setEVMAccounts( + flattenedAccounts.filter((account) => !isNonEvmAddress(account.address)), + ); + fetchENSNames({ flattenedAccounts, startingIndex: selectedIndex }); + }, [ + internalAccounts, + fetchENSNames, + selectedInternalAccount?.address, + accountBalances, // Use the memoized balances instead of multichainBalancesForAllAccounts + isMultiAccountBalancesEnabled, + ]); useEffect(() => { - // eslint-disable-next-line if (!isMountedRef.current) { isMountedRef.current = true; } diff --git a/app/components/hooks/useAccounts/utils.ts b/app/components/hooks/useAccounts/utils.ts deleted file mode 100644 index 438c4166dc7c..000000000000 --- a/app/components/hooks/useAccounts/utils.ts +++ /dev/null @@ -1,62 +0,0 @@ -import { InternalAccount } from '@metamask/keyring-internal-api'; -import { getFormattedAddressFromInternalAccount } from '../../../core/Multichain/utils'; -import { BigNumber } from 'ethers'; -import { - hexToBN, - renderFiat, - renderFromWei, - weiToFiat, -} from '../../../util/number'; -import { AccountInformation } from '@metamask/assets-controllers'; -import { TotalFiatBalancesCrossChains } from '../useGetTotalFiatBalanceCrossChains'; -import { isPortfolioViewEnabled } from '../../../util/networks'; - -interface AccountInfo { - [address: string]: AccountInformation; -} - -export const getAccountBalances = ({ - internalAccount, - accountInfoByAddress, - totalFiatBalancesCrossChain, - conversionRate, - currentCurrency, -}: { - internalAccount: InternalAccount; - accountInfoByAddress: AccountInfo; - totalFiatBalancesCrossChain: TotalFiatBalancesCrossChains; - conversionRate: number | null | undefined; - currentCurrency: string; -}) => { - const formattedAddress = - getFormattedAddressFromInternalAccount(internalAccount); - const balanceWeiHex = - accountInfoByAddress?.[formattedAddress]?.balance || '0x0'; - const stakedBalanceWeiHex = - accountInfoByAddress?.[formattedAddress]?.stakedBalance || '0x0'; - const totalBalanceWeiHex = BigNumber.from(balanceWeiHex) - .add(BigNumber.from(stakedBalanceWeiHex)) - .toHexString(); - const balanceETH = renderFromWei(totalBalanceWeiHex); // Gives ETH - // IF portfolio view is active, display aggregated fiat balance cross chains - let balanceFiat; - if (isPortfolioViewEnabled()) { - const totalFiatBalance = - totalFiatBalancesCrossChain[internalAccount?.address as string] - ?.totalFiatBalance; - balanceFiat = - totalFiatBalance !== undefined - ? `${renderFiat(totalFiatBalance, currentCurrency)}` - : ''; - } else { - balanceFiat = - weiToFiat(hexToBN(totalBalanceWeiHex), conversionRate, currentCurrency) || - ''; - } - - return { - balanceETH, - balanceFiat, - balanceWeiHex, - }; -}; diff --git a/app/components/hooks/useGetFormattedTokensPerChain.tsx b/app/components/hooks/useGetFormattedTokensPerChain.tsx index ea2e41071f4b..ca2d6c5382a6 100644 --- a/app/components/hooks/useGetFormattedTokensPerChain.tsx +++ b/app/components/hooks/useGetFormattedTokensPerChain.tsx @@ -19,6 +19,7 @@ import { MarketDataDetails, Token } from '@metamask/assets-controllers'; import { InternalAccount } from '@metamask/keyring-internal-api'; import { isTestNet } from '../../util/networks'; import { selectShowFiatInTestnets } from '../../selectors/settings'; +import { useMemo } from 'react'; interface AllTokens { [chainId: string]: { @@ -79,95 +80,115 @@ export const useGetFormattedTokensPerChain = ( const currencyRates = useSelector(selectCurrencyRates); const showFiatOnTestnets = useSelector(selectShowFiatInTestnets); - //If the current network is a testnet, UI should display 0 unless conversions are enabled - const validAccounts = - accounts.length > 0 && accounts.every((item) => item !== undefined); - if (!validAccounts || (isTestNet(currentChainId) && !showFiatOnTestnets)) { - return {}; - } + return useMemo(() => { + //If the current network is a testnet, UI should display 0 unless conversions are enabled + const validAccounts = + accounts.length > 0 && accounts.every((item) => item !== undefined); + if (!validAccounts || (isTestNet(currentChainId) && !showFiatOnTestnets)) { + return {}; + } - const networksToFormat = shouldAggregateAcrossChains - ? allChainIDs - : [currentChainId]; + const networksToFormat = shouldAggregateAcrossChains + ? allChainIDs + : [currentChainId]; - const result: { - [address: string]: { + function getTokenFiatBalances({ + tokens, + accountAddress, + chainId, + tokenExchangeRates, + conversionRate, + decimalsToShow, + }: { + tokens: Token[]; + accountAddress: string; chainId: string; - tokensWithBalances: TokensWithBalances[]; - }[]; - } = {}; - function getTokenFiatBalances({ - tokens, - accountAddress, - chainId, - tokenExchangeRates, - conversionRate, - decimalsToShow, - }: { - tokens: Token[]; - accountAddress: string; - chainId: string; - tokenExchangeRates: { - [tokenAddress: string]: MarketDataDetails; - }; - conversionRate: number; - decimalsToShow: number | undefined; - }) { - const formattedTokens = []; - for (const token of tokens) { - const hexBalance = - currentTokenBalances[accountAddress]?.[chainId]?.[token.address] ?? - '0x0'; - - const decimalBalance = renderFromTokenMinimalUnit( - hexBalance, - token.decimals, - ); - const exchangeRate = tokenExchangeRates?.[token.address]?.price; - - const tokenBalanceFiat = balanceToFiatNumber( - decimalBalance, - conversionRate, - exchangeRate, - decimalsToShow, - ); - - formattedTokens.push({ - address: token.address, - symbol: token.symbol, - decimals: token.decimals, - balance: decimalBalance, - tokenBalanceFiat, - }); + tokenExchangeRates: { + [tokenAddress: string]: MarketDataDetails; + }; + conversionRate: number; + decimalsToShow: number | undefined; + }) { + const formattedTokens = []; + for (const token of tokens) { + const hexBalance = + currentTokenBalances[accountAddress]?.[chainId]?.[token.address] ?? + '0x0'; + + const decimalBalance = renderFromTokenMinimalUnit( + hexBalance, + token.decimals, + ); + const exchangeRate = tokenExchangeRates?.[token.address]?.price; + + const tokenBalanceFiat = balanceToFiatNumber( + decimalBalance, + conversionRate, + exchangeRate, + decimalsToShow, + ); + + formattedTokens.push({ + address: token.address, + symbol: token.symbol, + decimals: token.decimals, + balance: decimalBalance, + tokenBalanceFiat, + }); + } + return formattedTokens; } - return formattedTokens; - } - - for (const account of accounts) { - const formattedPerNetwork = []; - for (const singleChain of networksToFormat) { - const tokens: Token[] = - importedTokens?.[singleChain]?.[account?.address] ?? []; - const matchedChainSymbol = allNetworks[singleChain].nativeCurrency; - const conversionRate = - currencyRates?.[matchedChainSymbol]?.conversionRate ?? 0; - const tokenExchangeRates = marketData?.[toHexadecimal(singleChain)]; - const decimalsToShow = (currentCurrency === 'usd' && 2) || undefined; - const tokensWithBalances = getTokenFiatBalances({ - tokens, - accountAddress: account.address, - chainId: singleChain, - tokenExchangeRates, - conversionRate, - decimalsToShow, - }); - formattedPerNetwork.push({ - chainId: singleChain, - tokensWithBalances, - }); + + const result: { + [address: string]: { + chainId: string; + tokensWithBalances: TokensWithBalances[]; + }[]; + } = {}; + + for (const account of accounts) { + const formattedPerNetwork = []; + for (const singleChain of networksToFormat) { + // Skip if the network configuration doesn't exist + if (!allNetworks[singleChain]) { + continue; + } + + const tokens: Token[] = + importedTokens?.[singleChain]?.[account?.address] ?? []; + const matchedChainSymbol = allNetworks[singleChain].nativeCurrency; + const conversionRate = + currencyRates?.[matchedChainSymbol]?.conversionRate ?? 0; + const tokenExchangeRates = marketData?.[toHexadecimal(singleChain)]; + const decimalsToShow = (currentCurrency === 'usd' && 2) || undefined; + const tokensWithBalances = getTokenFiatBalances({ + tokens, + accountAddress: account.address, + chainId: singleChain, + tokenExchangeRates, + conversionRate, + decimalsToShow, + }); + formattedPerNetwork.push({ + chainId: singleChain, + tokensWithBalances, + }); + } + result[account.address] = formattedPerNetwork; } - result[account.address] = formattedPerNetwork; - } - return result; + return result; + }, [ + accounts, + allChainIDs, + allNetworks, + currentChainId, + currentCurrency, + currentTokenBalances, + currencyRates, + importedTokens, + marketData, + shouldAggregateAcrossChains, + showFiatOnTestnets, + ]); }; diff --git a/app/components/hooks/useGetTotalFiatBalanceCrossChains.tsx b/app/components/hooks/useGetTotalFiatBalanceCrossChains.tsx index e57f9826d1cd..92930ff10d4f 100644 --- a/app/components/hooks/useGetTotalFiatBalanceCrossChains.tsx +++ b/app/components/hooks/useGetTotalFiatBalanceCrossChains.tsx @@ -14,6 +14,7 @@ import { import { InternalAccount } from '@metamask/keyring-internal-api'; import { selectShowFiatInTestnets } from '../../selectors/settings'; import { isTestNet } from '../../util/networks'; +import { useMemo } from 'react'; interface TokenFiatBalancesCrossChains { chainId: string; @@ -46,100 +47,124 @@ export const useGetTotalFiatBalanceCrossChains = ( const showFiatOnTestnets = useSelector(selectShowFiatInTestnets); const currentChainId = useSelector(selectChainId); - const validAccounts = - accounts.length > 0 && accounts.every((item) => item !== undefined); - if (!validAccounts || (isTestNet(currentChainId) && !showFiatOnTestnets)) { - return {}; - } - - const tokenFiatBalancesCrossChains = accounts.map((account) => { - const formattedPerNetwork = formattedTokensWithBalancesPerChain[ - account.address - ].map((singleChainTokenBalances) => { - const { tokensWithBalances } = singleChainTokenBalances; - const matchedChainSymbol = - allNetworks[singleChainTokenBalances.chainId].nativeCurrency; - - const tokenFiatBalances = tokensWithBalances.map( - (token) => token.tokenBalanceFiat, - ); - - const decimalsToShow = (currentCurrency === 'usd' && 2) || undefined; - const conversionRate = - currencyRates?.[matchedChainSymbol]?.conversionRate ?? 0; - let ethFiat = 0; - if ( - account && - accountsByChainId?.[toHexadecimal(singleChainTokenBalances.chainId)]?.[ - toChecksumHexAddress(account.address) - ] - ) { - const balanceBN = hexToBN( - accountsByChainId[toHexadecimal(singleChainTokenBalances.chainId)][ - toChecksumHexAddress(account.address) - ].balance, - ); - const stakedBalanceBN = hexToBN( - accountsByChainId[toHexadecimal(singleChainTokenBalances.chainId)][ - toChecksumHexAddress(account.address) - ].stakedBalance || '0x00', - ); - const totalAccountBalance = balanceBN - .add(stakedBalanceBN) - .toString('hex'); - ethFiat = weiToFiatNumber( - totalAccountBalance, - conversionRate, - decimalsToShow, - ); + return useMemo(() => { + const validAccounts = + accounts.length > 0 && accounts.every((item) => item !== undefined); + if (!validAccounts || (isTestNet(currentChainId) && !showFiatOnTestnets)) { + return {}; + } + + function getERC20TotalBalance(arr: number[]) { + let sum = 0; + for (const num of arr) { + sum += num; } + return sum; + } - return { - ...singleChainTokenBalances, - tokenFiatBalances, - nativeFiatValue: ethFiat, - }; - }); + function getTotalTokenFiat(array: TokenFiatBalancesCrossChains[]) { + let totalTokenFiat = 0; + let totalFiatBalance = 0; - return { - [account.address]: formattedPerNetwork, - }; - }); + for (const tokenFiatBalances of array) { + const tokenTmpTotal = getERC20TotalBalance( + tokenFiatBalances.tokenFiatBalances, + ); + totalTokenFiat += tokenTmpTotal; + totalFiatBalance += tokenTmpTotal + tokenFiatBalances.nativeFiatValue; + } - function getERC20TotalBalance(arr: number[]) { - let sum = 0; - for (const num of arr) { - sum += num; - } - return sum; - } - - function getTotalTokenFiat(array: TokenFiatBalancesCrossChains[]) { - let totalTokenFiat = 0; - let totalFiatBalance = 0; - - for (const tokenFiatBalances of array) { - const tokenTmpTotal = getERC20TotalBalance( - tokenFiatBalances.tokenFiatBalances, - ); - totalTokenFiat += tokenTmpTotal; - totalFiatBalance += tokenTmpTotal + tokenFiatBalances.nativeFiatValue; + return { totalTokenFiat, totalFiatBalance }; } - return { totalTokenFiat, totalFiatBalance }; - } - - const aggregatedBalPerAccount: TotalFiatBalancesCrossChains = {}; - for (const accountElement of tokenFiatBalancesCrossChains) { - for (const [key, value] of Object.entries(accountElement)) { - const { totalFiatBalance, totalTokenFiat } = getTotalTokenFiat(value); - aggregatedBalPerAccount[key] = { - totalFiatBalance, - totalTokenFiat, - tokenFiatBalancesCrossChains: value, + const tokenFiatBalancesCrossChains = accounts.map((account) => { + // Check if the account address exists in formattedTokensWithBalancesPerChain + if (!formattedTokensWithBalancesPerChain[account.address]) { + return { [account.address]: [] }; + } + + const formattedPerNetwork = formattedTokensWithBalancesPerChain[ + account.address + ].map((singleChainTokenBalances) => { + const { tokensWithBalances } = singleChainTokenBalances; + const matchedChainSymbol = + allNetworks[singleChainTokenBalances.chainId]?.nativeCurrency; + + if (!matchedChainSymbol) { + return { + ...singleChainTokenBalances, + tokenFiatBalances: [], + nativeFiatValue: 0, + }; + } + + const tokenFiatBalances = tokensWithBalances.map( + (token) => token.tokenBalanceFiat, + ); + + const decimalsToShow = (currentCurrency === 'usd' && 2) || undefined; + const conversionRate = + currencyRates?.[matchedChainSymbol]?.conversionRate ?? 0; + let ethFiat = 0; + if ( + account && + accountsByChainId?.[ + toHexadecimal(singleChainTokenBalances.chainId) + ]?.[toChecksumHexAddress(account.address)] + ) { + const balanceBN = hexToBN( + accountsByChainId[toHexadecimal(singleChainTokenBalances.chainId)][ + toChecksumHexAddress(account.address) + ].balance, + ); + const stakedBalanceBN = hexToBN( + accountsByChainId[toHexadecimal(singleChainTokenBalances.chainId)][ + toChecksumHexAddress(account.address) + ].stakedBalance || '0x00', + ); + const totalAccountBalance = balanceBN + .add(stakedBalanceBN) + .toString('hex'); + ethFiat = weiToFiatNumber( + totalAccountBalance, + conversionRate, + decimalsToShow, + ); + } + + return { + ...singleChainTokenBalances, + tokenFiatBalances, + nativeFiatValue: ethFiat, + }; + }); + + return { + [account.address]: formattedPerNetwork, }; + }); + + const aggregatedBalPerAccount: TotalFiatBalancesCrossChains = {}; + for (const accountElement of tokenFiatBalancesCrossChains) { + for (const [key, value] of Object.entries(accountElement)) { + const { totalFiatBalance, totalTokenFiat } = getTotalTokenFiat(value); + aggregatedBalPerAccount[key] = { + totalFiatBalance, + totalTokenFiat, + tokenFiatBalancesCrossChains: value, + }; + } } - } - return aggregatedBalPerAccount; + return aggregatedBalPerAccount; + }, [ + accounts, + formattedTokensWithBalancesPerChain, + allNetworks, + currencyRates, + currentCurrency, + accountsByChainId, + showFiatOnTestnets, + currentChainId, + ]); }; diff --git a/app/components/hooks/useMultichainBalances/useMultichainBalances.test.ts b/app/components/hooks/useMultichainBalances/useMultichainBalances.test.ts index f1e14d9513bb..83879230ba50 100644 --- a/app/components/hooks/useMultichainBalances/useMultichainBalances.test.ts +++ b/app/components/hooks/useMultichainBalances/useMultichainBalances.test.ts @@ -49,7 +49,7 @@ jest.mock('react-redux', () => ({ })); jest.mock('../../../core/Engine', () => ({ - getTotalFiatAccountBalance: jest.fn(), + getTotalEvmFiatAccountBalance: jest.fn(), })); jest.mock('../useGetFormattedTokensPerChain', () => ({ @@ -75,6 +75,15 @@ describe('useMultichainBalances', () => { }); it('returns default values when no balances are available', () => { + const mockBalance = { + ethFiat: 0, + tokenFiat: 0, + tokenFiat1dAgo: 0, + ethFiat1dAgo: 0, + totalNativeTokenBalance: '0', + ticker: 'ETH', + }; + const aggregatedBalance = { ethFiat: 0, tokenFiat: 0, @@ -82,18 +91,19 @@ describe('useMultichainBalances', () => { ethFiat1dAgo: 0, }; - (Engine.getTotalFiatAccountBalance as jest.Mock).mockReturnValue( - aggregatedBalance, + (Engine.getTotalEvmFiatAccountBalance as jest.Mock).mockReturnValue( + mockBalance, ); const { result } = renderHook(() => useMultichainBalances()); - expect(result.current.multichainBalances).toEqual({ + expect(result.current.selectedAccountMultichainBalance).toEqual({ displayBalance: '$0.00', displayCurrency: 'USD', tokenFiatBalancesCrossChains: [], totalFiatBalance: 0, - totalTokenFiat: 0, + totalNativeTokenBalance: '0', + nativeTokenUnit: 'ETH', shouldShowAggregatedPercentage: true, isPortfolioVieEnabled: false, aggregatedBalance, @@ -101,6 +111,15 @@ describe('useMultichainBalances', () => { }); it('calculates display balance correctly with ETH and token balances', () => { + const mockBalance = { + ethFiat: 100, + tokenFiat: 50, + tokenFiat1dAgo: 45, + ethFiat1dAgo: 95, + totalNativeTokenBalance: '0.05', + ticker: 'ETH', + }; + const aggregatedBalance = { ethFiat: 100, tokenFiat: 50, @@ -108,16 +127,18 @@ describe('useMultichainBalances', () => { ethFiat1dAgo: 95, }; - (Engine.getTotalFiatAccountBalance as jest.Mock).mockReturnValue( - aggregatedBalance, + (Engine.getTotalEvmFiatAccountBalance as jest.Mock).mockReturnValue( + mockBalance, ); const { result } = renderHook(() => useMultichainBalances()); - expect(result.current.multichainBalances.displayBalance).toBe('$150.00'); - expect(result.current.multichainBalances.aggregatedBalance).toEqual( - aggregatedBalance, - ); + expect( + result.current.selectedAccountMultichainBalance?.displayBalance, + ).toBe('$150.00'); + expect( + result.current.selectedAccountMultichainBalance?.aggregatedBalance, + ).toEqual(aggregatedBalance); }); it('handles portfolio view mode correctly', () => { @@ -156,29 +177,57 @@ describe('useMultichainBalances', () => { }, }; + const mockBalance = { + ethFiat: 0, + tokenFiat: 0, + tokenFiat1dAgo: 0, + ethFiat1dAgo: 0, + totalNativeTokenBalance: '0.5', + ticker: 'ETH', + }; + + (Engine.getTotalEvmFiatAccountBalance as jest.Mock).mockReturnValue( + mockBalance, + ); + (useGetTotalFiatBalanceCrossChains as jest.Mock).mockReturnValue( mockTotalFiatBalancesCrossChain, ); const { result } = renderHook(() => useMultichainBalances()); - expect(result.current.multichainBalances.isPortfolioVieEnabled).toBe(true); - expect(result.current.multichainBalances.totalFiatBalance).toBe( - mockTotalFiatBalance, - ); - expect(result.current.multichainBalances.totalTokenFiat).toBe( - mockTokenFiatBalance, - ); - expect(result.current.multichainBalances.displayBalance).toBe('$1,000.00'); + expect( + result.current.selectedAccountMultichainBalance?.isPortfolioVieEnabled, + ).toBe(true); + expect( + result.current.selectedAccountMultichainBalance?.totalFiatBalance, + ).toBe(mockTotalFiatBalance); + expect( + result.current.selectedAccountMultichainBalance?.displayBalance, + ).toBe('$1,000.00'); }); it('does not show aggregated percentage on test networks', () => { (isTestNet as jest.Mock).mockReturnValue(true); + const mockBalance = { + ethFiat: 0, + tokenFiat: 0, + tokenFiat1dAgo: 0, + ethFiat1dAgo: 0, + totalNativeTokenBalance: '0', + ticker: 'ETH', + }; + + (Engine.getTotalEvmFiatAccountBalance as jest.Mock).mockReturnValue( + mockBalance, + ); + const { result } = renderHook(() => useMultichainBalances()); expect( - result.current.multichainBalances.shouldShowAggregatedPercentage, + result.current.selectedAccountMultichainBalance + ?.shouldShowAggregatedPercentage, ).toBe(false); }); }); diff --git a/app/components/hooks/useMultichainBalances/useMultichainBalances.ts b/app/components/hooks/useMultichainBalances/useMultichainBalances.ts index 7c996683eca0..88c92b48b68e 100644 --- a/app/components/hooks/useMultichainBalances/useMultichainBalances.ts +++ b/app/components/hooks/useMultichainBalances/useMultichainBalances.ts @@ -7,28 +7,38 @@ import { selectIsPopularNetwork, selectProviderConfig, selectEvmTicker, + selectEvmChainId, } from '../../../selectors/networkController'; import { selectCurrentCurrency } from '../../../selectors/currencyRateController'; import { selectIsTokenNetworkFilterEqualCurrentNetwork } from '../../../selectors/preferencesController'; -import { selectSelectedInternalAccount } from '../../../selectors/accountsController'; +import { + selectInternalAccounts, + selectSelectedInternalAccount, +} from '../../../selectors/accountsController'; import { getChainIdsToPoll } from '../../../selectors/tokensController'; import { useGetFormattedTokensPerChain } from '../useGetFormattedTokensPerChain'; import { useGetTotalFiatBalanceCrossChains } from '../useGetTotalFiatBalanceCrossChains'; import { InternalAccount } from '@metamask/keyring-internal-api'; import useIsOriginalNativeTokenSymbol from '../useIsOriginalNativeTokenSymbol/useIsOriginalNativeTokenSymbol'; -import { UseMultichainBalancesHook } from './useMultichainBalances.types'; +import { + MultichainBalancesData, + UseMultichainBalancesHook, +} from './useMultichainBalances.types'; import { formatWithThreshold } from '../../../util/assets'; ///: BEGIN:ONLY_INCLUDE_IF(keyring-snaps) import { - selectMultichainSelectedAccountCachedBalance, - selectMultichainDefaultToken, selectMultichainShouldShowFiat, - selectMultichainConversionRate, - selectMultichainNetworkAggregatedBalance, + getMultichainNetworkAggregatedBalance, + selectMultichainBalances, + selectMultichainAssets, + selectMultichainAssetsRates, + MultichainNetworkAggregatedBalance, } from '../../../selectors/multichain'; -import { selectIsEvmNetworkSelected } from '../../../selectors/multichainNetworkController'; +import { selectSelectedNonEvmNetworkChainId } from '../../../selectors/multichainNetworkController'; +import { isEvmAccountType } from '@metamask/keyring-api'; ///: END:ONLY_INCLUDE_IF import I18n from '../../../../locales/i18n'; +import { useCallback, useMemo } from 'react'; /** * Hook to manage portfolio balance data across chains. @@ -37,8 +47,10 @@ import I18n from '../../../../locales/i18n'; */ const useMultichainBalances = (): UseMultichainBalancesHook => { // Production selectors (EVM) + const accountsList = useSelector(selectInternalAccounts); const selectedInternalAccount = useSelector(selectSelectedInternalAccount); const chainId = useSelector(selectChainId); + const evmChainId = useSelector(selectEvmChainId); const currentCurrency = useSelector(selectCurrentCurrency); const allChainIDs = useSelector(getChainIdsToPoll); const isTokenNetworkFilterEqualCurrentNetwork = useSelector( @@ -50,140 +62,247 @@ const useMultichainBalances = (): UseMultichainBalancesHook => { // Production hooks (EVM) const formattedTokensWithBalancesPerChain = useGetFormattedTokensPerChain( - [selectedInternalAccount as InternalAccount], + accountsList, !isTokenNetworkFilterEqualCurrentNetwork && isPopularNetwork, allChainIDs, ); - const totalFiatBalancesCrossChain = useGetTotalFiatBalanceCrossChains( - [selectedInternalAccount as InternalAccount], + const totalFiatBalancesCrossEvmChain = useGetTotalFiatBalanceCrossChains( + accountsList, formattedTokensWithBalancesPerChain, ); - const isOriginalNativeTokenSymbol = useIsOriginalNativeTokenSymbol( - chainId, + const isOriginalNativeEvmTokenSymbol = useIsOriginalNativeTokenSymbol( + evmChainId, ticker, type, ); ///: BEGIN:ONLY_INCLUDE_IF(keyring-snaps) - const isEvmSelected = useSelector(selectIsEvmNetworkSelected); - const multichainSelectedAccountCachedBalance = useSelector( - selectMultichainSelectedAccountCachedBalance, - ); - const { symbol } = useSelector(selectMultichainDefaultToken); const shouldShowFiat = useSelector(selectMultichainShouldShowFiat); - const multichainConversionRate = useSelector(selectMultichainConversionRate); - const multichainBalance = useSelector( - selectMultichainNetworkAggregatedBalance, - ); + const multichainBalances = useSelector(selectMultichainBalances); + const multichainAssets = useSelector(selectMultichainAssets); + const multichainAssetsRates = useSelector(selectMultichainAssetsRates); + const nonEvmChainId = useSelector(selectSelectedNonEvmNetworkChainId); ///: END:ONLY_INCLUDE_IF - // Production balance calculation (EVM) - const getEvmDisplayBalance = () => { - const balance = Engine.getTotalFiatAccountBalance(); - let total; + const isPortfolioEnabled = isPortfolioViewEnabled(); + + // Production balance calculartion (EVM) + const getEvmBalance = useCallback( + (account: InternalAccount) => { + const balance = Engine.getTotalEvmFiatAccountBalance(account); + let total; - if (isOriginalNativeTokenSymbol) { - if (isPortfolioViewEnabled()) { + if (isOriginalNativeEvmTokenSymbol) { + if (isPortfolioEnabled) { + total = + totalFiatBalancesCrossEvmChain[account?.address as string] + ?.totalFiatBalance ?? 0; + } else { + const tokenFiatTotal = balance?.tokenFiat ?? 0; + const ethFiatTotal = balance?.ethFiat ?? 0; + total = tokenFiatTotal + ethFiatTotal; + } + } else if (isPortfolioEnabled) { total = - totalFiatBalancesCrossChain[ - selectedInternalAccount?.address as string - ]?.totalFiatBalance ?? 0; + totalFiatBalancesCrossEvmChain[account?.address as string] + ?.totalTokenFiat ?? 0; } else { - const tokenFiatTotal = balance?.tokenFiat ?? 0; - const ethFiatTotal = balance?.ethFiat ?? 0; - total = tokenFiatTotal + ethFiatTotal; + total = balance?.tokenFiat ?? 0; } - } else if (isPortfolioViewEnabled()) { - total = - totalFiatBalancesCrossChain[selectedInternalAccount?.address as string] - ?.totalTokenFiat ?? 0; - } else { - total = balance?.tokenFiat ?? 0; - } - return formatWithThreshold(total, 0, I18n.locale, { - style: 'currency', - currency: currentCurrency.toUpperCase(), - }); - }; + const displayBalance = formatWithThreshold(total, 0, I18n.locale, { + style: 'currency', + currency: currentCurrency.toUpperCase(), + }); + + return { + displayBalance, + totalFiatBalance: total, + totalNativeTokenBalance: balance?.totalNativeTokenBalance, + nativeTokenUnit: balance?.ticker, + }; + }, + [ + currentCurrency, + isOriginalNativeEvmTokenSymbol, + isPortfolioEnabled, + totalFiatBalancesCrossEvmChain, + ], + ); ///: BEGIN:ONLY_INCLUDE_IF(keyring-snaps) - const getMultiChainFiatBalance = (currency: string) => { - return formatWithThreshold( - parseFloat(multichainBalance.totalBalanceFiat), - 0, - I18n.locale, - { + const getMultiChainFiatBalance = useCallback( + (balance: number | undefined, currency: string) => { + if (balance === undefined) return '0'; + return formatWithThreshold(balance, 0, I18n.locale, { style: 'currency', currency: currency.toUpperCase(), - }, - ); - }; - - const getNonEvmDisplayBalance = () => { - if (!shouldShowFiat) { - return `${multichainSelectedAccountCachedBalance} ${symbol}`; - } - if (multichainSelectedAccountCachedBalance && multichainConversionRate) { - return getMultiChainFiatBalance(currentCurrency); - } + }); + }, + [], + ); - if (!multichainSelectedAccountCachedBalance) { - return undefined; - } + const getNonEvmDisplayBalance = useCallback( + (nonEvmAccountBalance: MultichainNetworkAggregatedBalance) => { + if (!shouldShowFiat || !nonEvmAccountBalance.totalBalanceFiat) { + if (!nonEvmAccountBalance.totalNativeTokenBalance) { + return '0'; + } + return `${nonEvmAccountBalance.totalNativeTokenBalance.amount} ${nonEvmAccountBalance.totalNativeTokenBalance.unit}`; + } - // default to native token symbol - return `${multichainSelectedAccountCachedBalance} ${symbol}`; - }; + return getMultiChainFiatBalance( + nonEvmAccountBalance.totalBalanceFiat, + currentCurrency, + ); + }, + [currentCurrency, getMultiChainFiatBalance, shouldShowFiat], + ); ///: END:ONLY_INCLUDE_IF - const getDisplayBalance = () => { - ///: BEGIN:ONLY_INCLUDE_IF(keyring-snaps) - if (!isEvmSelected) { - return getNonEvmDisplayBalance(); - } - ///: END:ONLY_INCLUDE_IF - return getEvmDisplayBalance(); - }; + const getAggregatedBalance = useMemo( + () => (account: InternalAccount) => { + const balance = Engine.getTotalEvmFiatAccountBalance(account); + return { + ethFiat: balance?.ethFiat ?? 0, + tokenFiat: balance?.tokenFiat ?? 0, + tokenFiat1dAgo: balance?.tokenFiat1dAgo ?? 0, + ethFiat1dAgo: balance?.ethFiat1dAgo ?? 0, + }; + }, + [], + ); - const getAggregatedBalance = () => { - const balance = Engine.getTotalFiatAccountBalance(); - return { - ethFiat: balance?.ethFiat ?? 0, - tokenFiat: balance?.tokenFiat ?? 0, - tokenFiat1dAgo: balance?.tokenFiat1dAgo ?? 0, - ethFiat1dAgo: balance?.ethFiat1dAgo ?? 0, - }; - }; + const getAccountBalanceData = useCallback( + ( + account: InternalAccount, + ): { + displayBalance: string; + totalFiatBalance: number | undefined; + totalNativeTokenBalance: string | undefined; + nativeTokenUnit: string; + } => { + ///: BEGIN:ONLY_INCLUDE_IF(keyring-snaps) + if (!isEvmAccountType(account.type)) { + const nonEvmAccountBalance = getMultichainNetworkAggregatedBalance( + account, + multichainBalances, + multichainAssets, + multichainAssetsRates, + nonEvmChainId, + ); + return { + displayBalance: getNonEvmDisplayBalance(nonEvmAccountBalance), + totalFiatBalance: nonEvmAccountBalance.totalBalanceFiat, + totalNativeTokenBalance: + nonEvmAccountBalance.totalNativeTokenBalance?.amount, + nativeTokenUnit: + nonEvmAccountBalance.totalNativeTokenBalance?.unit || '', + }; + } + ///: END:ONLY_INCLUDE_IF + const evmAccountBalance = getEvmBalance(account); + return { + displayBalance: evmAccountBalance.displayBalance, + totalFiatBalance: evmAccountBalance.totalFiatBalance, + totalNativeTokenBalance: + evmAccountBalance.totalNativeTokenBalance?.toString() || '0', + nativeTokenUnit: evmAccountBalance.nativeTokenUnit || '', + }; + }, + [ + getEvmBalance, + ///: BEGIN:ONLY_INCLUDE_IF(keyring-snaps) + getNonEvmDisplayBalance, + multichainAssets, + multichainAssetsRates, + multichainBalances, + nonEvmChainId, + ///: END:ONLY_INCLUDE_IF + ], + ); - const getShouldShowAggregatedPercentage = () => { - ///: BEGIN:ONLY_INCLUDE_IF(keyring-snaps) - return !isTestNet(chainId) && isEvmSelected; - ///: END:ONLY_INCLUDE_IF + const getShouldShowAggregatedPercentage = useMemo( + // eslint-disable-next-line @typescript-eslint/no-unused-vars + () => (account: InternalAccount) => { + ///: BEGIN:ONLY_INCLUDE_IF(keyring-snaps) + return !isTestNet(chainId) && isEvmAccountType(account.type); + ///: END:ONLY_INCLUDE_IF - // Note: This code marked as unreachable however when the above block gets removed after code fencing this return becomes necessary - return !isTestNet(chainId); - }; + // Note: This code marked as unreachable however when the above block gets removed after code fencing this return becomes necessary + return !isTestNet(chainId); + }, + [chainId], + ); + + // Create a stable reference for each account's balance data + const allAccountBalances = useMemo(() => { + const result: Record<string, MultichainBalancesData> = {}; + + for (const account of accountsList) { + const accountBalanceData = getAccountBalanceData(account); + result[account.id] = { + displayBalance: accountBalanceData.displayBalance, + displayCurrency: currentCurrency, + totalFiatBalance: accountBalanceData.totalFiatBalance, + totalNativeTokenBalance: accountBalanceData.totalNativeTokenBalance, + nativeTokenUnit: accountBalanceData.nativeTokenUnit, + tokenFiatBalancesCrossChains: + totalFiatBalancesCrossEvmChain[account.address] + ?.tokenFiatBalancesCrossChains ?? [], + shouldShowAggregatedPercentage: + getShouldShowAggregatedPercentage(account), + isPortfolioVieEnabled: isPortfolioEnabled, + aggregatedBalance: getAggregatedBalance(account), + }; + } + + return result; + }, [ + accountsList, + currentCurrency, + getAccountBalanceData, + getAggregatedBalance, + getShouldShowAggregatedPercentage, + isPortfolioEnabled, + totalFiatBalancesCrossEvmChain, + ]); + + const selectedAccountMultichainBalance = useMemo(() => { + if (selectedInternalAccount) { + const accountBalanceData = getAccountBalanceData(selectedInternalAccount); + return { + displayBalance: accountBalanceData.displayBalance, + displayCurrency: currentCurrency, + totalFiatBalance: accountBalanceData.totalFiatBalance, + totalNativeTokenBalance: accountBalanceData.totalNativeTokenBalance, + nativeTokenUnit: accountBalanceData.nativeTokenUnit, + tokenFiatBalancesCrossChains: + totalFiatBalancesCrossEvmChain[selectedInternalAccount.address] + ?.tokenFiatBalancesCrossChains ?? [], + shouldShowAggregatedPercentage: getShouldShowAggregatedPercentage( + selectedInternalAccount, + ), + isPortfolioVieEnabled: isPortfolioEnabled, + aggregatedBalance: getAggregatedBalance(selectedInternalAccount), + }; + } + return undefined; + }, [ + currentCurrency, + getAccountBalanceData, + getAggregatedBalance, + getShouldShowAggregatedPercentage, + isPortfolioEnabled, + selectedInternalAccount, + totalFiatBalancesCrossEvmChain, + ]); return { - multichainBalances: { - displayBalance: getDisplayBalance(), - displayCurrency: currentCurrency, - tokenFiatBalancesCrossChains: - totalFiatBalancesCrossChain[selectedInternalAccount?.address as string] - ?.tokenFiatBalancesCrossChains ?? [], - totalFiatBalance: - totalFiatBalancesCrossChain[selectedInternalAccount?.address as string] - ?.totalFiatBalance ?? 0, - totalTokenFiat: - totalFiatBalancesCrossChain[selectedInternalAccount?.address as string] - ?.totalTokenFiat ?? 0, - shouldShowAggregatedPercentage: getShouldShowAggregatedPercentage(), - isPortfolioVieEnabled: isPortfolioViewEnabled(), - aggregatedBalance: getAggregatedBalance(), - }, + multichainBalancesForAllAccounts: allAccountBalances, + selectedAccountMultichainBalance, }; }; diff --git a/app/components/hooks/useMultichainBalances/useMultichainBalances.types.ts b/app/components/hooks/useMultichainBalances/useMultichainBalances.types.ts index 4df572916758..905048658cba 100644 --- a/app/components/hooks/useMultichainBalances/useMultichainBalances.types.ts +++ b/app/components/hooks/useMultichainBalances/useMultichainBalances.types.ts @@ -1,17 +1,23 @@ +import { InternalAccount } from '@metamask/keyring-internal-api'; import { AggregatedPercentageProps } from '../../../component-library/components-temp/Price/AggregatedPercentage/AggregatedPercentage.types'; import { AggregatedPercentageCrossChainsProps } from '../../../component-library/components-temp/Price/AggregatedPercentage/AggregatedPercentageCrossChains.types'; export interface MultichainBalancesData { - displayBalance: string | undefined; + displayBalance?: string; displayCurrency: string; tokenFiatBalancesCrossChains: AggregatedPercentageCrossChainsProps['tokenFiatBalancesCrossChains']; - totalFiatBalance: number; - totalTokenFiat: number; + totalFiatBalance: number | undefined; + totalNativeTokenBalance: string | undefined; + nativeTokenUnit: string; shouldShowAggregatedPercentage: boolean; isPortfolioVieEnabled: boolean; aggregatedBalance: AggregatedPercentageProps; } export interface UseMultichainBalancesHook { - multichainBalances: MultichainBalancesData; + multichainBalancesForAllAccounts: Record< + InternalAccount['id'], + MultichainBalancesData + >; + selectedAccountMultichainBalance?: MultichainBalancesData; } diff --git a/app/core/Engine/Engine.test.ts b/app/core/Engine/Engine.test.ts index ed003b97517a..22f66b28a705 100644 --- a/app/core/Engine/Engine.test.ts +++ b/app/core/Engine/Engine.test.ts @@ -277,11 +277,12 @@ describe('Engine', () => { }); }); - describe('getTotalFiatAccountBalance', () => { + describe('getTotalEvmFiatAccountBalance', () => { let engine: EngineClass; afterEach(() => engine?.destroyEngineInstance()); const selectedAddress = '0x9DeE4BF1dE9E3b930E511Db5cEBEbC8d6F855Db0'; + const selectedAccountId = 'test-account-id'; const chainId: Hex = '0x1'; const ticker = 'ETH'; const ethConversionRate = 4000; // $4,000 / ETH @@ -289,10 +290,21 @@ describe('Engine', () => { const stakedEthBalance = 1; const state: Partial<EngineState> = { - AccountsController: createMockAccountsControllerState( - [selectedAddress], - selectedAddress, - ), + AccountsController: { + ...createMockAccountsControllerState( + [selectedAddress], + selectedAddress, + ), + internalAccounts: { + accounts: { + [selectedAccountId]: createMockInternalAccount( + selectedAddress, + 'Test Account', + ), + }, + selectedAccount: selectedAccountId, + }, + }, AccountTrackerController: { accountsByChainId: { [chainId]: { @@ -323,12 +335,14 @@ describe('Engine', () => { it('calculates when theres no balances', () => { engine = Engine.init(state); - const totalFiatBalance = engine.getTotalFiatAccountBalance(); + const totalFiatBalance = engine.getTotalEvmFiatAccountBalance(); expect(totalFiatBalance).toStrictEqual({ ethFiat: 0, ethFiat1dAgo: 0, tokenFiat: 0, tokenFiat1dAgo: 0, + ticker: '', + totalNativeTokenBalance: '0', }); }); @@ -342,13 +356,13 @@ describe('Engine', () => { [chainId]: { [zeroAddress()]: { pricePercentChange1d: ethPricePercentChange1d, - } as MarketDataDetails, + } as Partial<MarketDataDetails> as MarketDataDetails, }, }, }, }); - const totalFiatBalance = engine.getTotalFiatAccountBalance(); + const totalFiatBalance = engine.getTotalEvmFiatAccountBalance(); const ethFiat = ethBalance * ethConversionRate; expect(totalFiatBalance).toStrictEqual({ @@ -356,64 +370,92 @@ describe('Engine', () => { ethFiat1dAgo: ethFiat / (1 + ethPricePercentChange1d / 100), tokenFiat: 0, tokenFiat1dAgo: 0, + ticker: 'ETH', + totalNativeTokenBalance: '1', }); }); it('calculates when there are ETH and tokens', () => { const ethPricePercentChange1d = 5; + const token1Address = '0x0001' as Hex; + const token2Address = '0x0002' as Hex; + const tokens = [ { - address: '0x001', + address: token1Address, balance: 1, - price: '1', + price: 1, pricePercentChange1d: -1, + decimals: 18, + symbol: 'TEST1', }, { - address: '0x002', + address: token2Address, balance: 2, - price: '2', + price: 2, pricePercentChange1d: 2, + decimals: 18, + symbol: 'TEST2', }, ]; engine = Engine.init({ ...state, TokensController: { - tokens: tokens.map((token) => ({ - address: token.address, - balance: token.balance, - decimals: 18, - symbol: 'TEST', + tokens: tokens.map(({ address, balance, decimals, symbol }) => ({ + address, + balance, + decimals, + symbol, })), ignoredTokens: [], detectedTokens: [], - allTokens: {}, + allTokens: { + [chainId]: { + [selectedAddress]: tokens.map( + ({ address, balance, decimals, symbol }) => ({ + address, + balance, + decimals, + symbol, + }), + ), + }, + }, allIgnoredTokens: {}, allDetectedTokens: {}, }, + TokenBalancesController: { + tokenBalances: { + [selectedAddress as Hex]: { + [chainId]: { + [token1Address]: '0x0de0b6b3a7640000', // 1 token with 18 decimals in hex + [token2Address]: '0x1bc16d674ec80000', // 2 tokens with 18 decimals in hex + }, + }, + }, + }, TokenRatesController: { marketData: { [chainId]: { [zeroAddress()]: { pricePercentChange1d: ethPricePercentChange1d, - }, - ...tokens.reduce( - (acc, token) => ({ - ...acc, - [token.address]: { - price: token.price, - pricePercentChange1d: token.pricePercentChange1d, - }, - }), - {}, - ), + } as unknown as MarketDataDetails, + [token1Address]: { + price: tokens[0].price, + pricePercentChange1d: tokens[0].pricePercentChange1d, + } as unknown as MarketDataDetails, + [token2Address]: { + price: tokens[1].price, + pricePercentChange1d: tokens[1].pricePercentChange1d, + } as unknown as MarketDataDetails, }, }, }, }); - const totalFiatBalance = engine.getTotalFiatAccountBalance(); + const totalFiatBalance = engine.getTotalEvmFiatAccountBalance(); const ethFiat = ethBalance * ethConversionRate; const [tokenFiat, tokenFiat1dAgo] = tokens.reduce( @@ -432,24 +474,33 @@ describe('Engine', () => { ethFiat1dAgo: ethFiat / (1 + ethPricePercentChange1d / 100), tokenFiat, tokenFiat1dAgo, + ticker: 'ETH', + totalNativeTokenBalance: '1', }); }); it('calculates when there is ETH and staked ETH and tokens', () => { const ethPricePercentChange1d = 5; + const token1Address = '0x0001' as Hex; + const token2Address = '0x0002' as Hex; + const tokens = [ { - address: '0x001', + address: token1Address, balance: 1, - price: '1', + price: 1, pricePercentChange1d: -1, + decimals: 18, + symbol: 'TEST1', }, { - address: '0x002', + address: token2Address, balance: 2, - price: '2', + price: 2, pricePercentChange1d: 2, + decimals: 18, + symbol: 'TEST2', }, ]; @@ -472,40 +523,59 @@ describe('Engine', () => { }, }, TokensController: { - tokens: tokens.map((token) => ({ - address: token.address, - balance: token.balance, - decimals: 18, - symbol: 'TEST', + tokens: tokens.map(({ address, balance, decimals, symbol }) => ({ + address, + balance, + decimals, + symbol, })), ignoredTokens: [], detectedTokens: [], - allTokens: {}, + allTokens: { + [chainId]: { + [selectedAddress]: tokens.map( + ({ address, balance, decimals, symbol }) => ({ + address, + balance, + decimals, + symbol, + }), + ), + }, + }, allIgnoredTokens: {}, allDetectedTokens: {}, }, + TokenBalancesController: { + tokenBalances: { + [selectedAddress as Hex]: { + [chainId]: { + [token1Address]: '0x0de0b6b3a7640000', // 1 token with 18 decimals in hex + [token2Address]: '0x1bc16d674ec80000', // 2 tokens with 18 decimals in hex + }, + }, + }, + }, TokenRatesController: { marketData: { [chainId]: { [zeroAddress()]: { pricePercentChange1d: ethPricePercentChange1d, - }, - ...tokens.reduce( - (acc, token) => ({ - ...acc, - [token.address]: { - price: token.price, - pricePercentChange1d: token.pricePercentChange1d, - }, - }), - {}, - ), + } as unknown as MarketDataDetails, + [token1Address]: { + price: tokens[0].price, + pricePercentChange1d: tokens[0].pricePercentChange1d, + } as unknown as MarketDataDetails, + [token2Address]: { + price: tokens[1].price, + pricePercentChange1d: tokens[1].pricePercentChange1d, + } as unknown as MarketDataDetails, }, }, }, }); - const totalFiatBalance = engine.getTotalFiatAccountBalance(); + const totalFiatBalance = engine.getTotalEvmFiatAccountBalance(); const ethFiat = (ethBalance + stakedEthBalance) * ethConversionRate; const [tokenFiat, tokenFiat1dAgo] = tokens.reduce( ([fiat, fiat1d], token) => { @@ -523,6 +593,8 @@ describe('Engine', () => { ethFiat1dAgo: ethFiat / (1 + ethPricePercentChange1d / 100), tokenFiat, tokenFiat1dAgo, + ticker: 'ETH', + totalNativeTokenBalance: '1', }); }); }); diff --git a/app/core/Engine/Engine.ts b/app/core/Engine/Engine.ts index dbb7a6f89435..45ac9c81df76 100644 --- a/app/core/Engine/Engine.ts +++ b/app/core/Engine/Engine.ts @@ -81,6 +81,7 @@ import { weiToFiatNumber, toHexadecimal, hexToBN, + renderFromWei, } from '../../util/number'; import NotificationManager from '../NotificationManager'; import Logger from '../../util/Logger'; @@ -126,12 +127,7 @@ import { selectBasicFunctionalityEnabled } from '../../selectors/settings'; import { selectSwapsChainFeatureFlags } from '../../reducers/swaps'; import { ClientId } from '@metamask/smart-transactions-controller/dist/types'; import { zeroAddress } from 'ethereumjs-util'; -import { - ApprovalType, - ChainId, - handleFetch, - toChecksumHexAddress, -} from '@metamask/controller-utils'; +import { ApprovalType, ChainId, handleFetch } from '@metamask/controller-utils'; import { ExtendedControllerMessenger } from '../ExtendedControllerMessenger'; import DomainProxyMap from '../../lib/DomainProxyMap/DomainProxyMap'; import { @@ -209,6 +205,8 @@ import { } from './controllers/network-controller/messenger-action-handlers'; import { INFURA_PROJECT_ID } from '../../constants/network'; import { getIsQuicknodeEndpointUrl } from './controllers/network-controller/utils'; +import { InternalAccount } from '@metamask/keyring-internal-api'; +import { toFormattedAddress } from '../../util/address'; const NON_EMPTY = 'NON_EMPTY'; @@ -1620,11 +1618,15 @@ export class Engine { AccountTrackerController.refresh(); } - getTotalFiatAccountBalance = (): { + getTotalEvmFiatAccountBalance = ( + account?: InternalAccount, + ): { ethFiat: number; tokenFiat: number; tokenFiat1dAgo: number; ethFiat1dAgo: number; + totalNativeTokenBalance: string; + ticker: string; } => { const { CurrencyRateController, @@ -1636,13 +1638,16 @@ export class Engine { NetworkController, } = this.context; - const selectedInternalAccount = AccountsController.getAccount( - AccountsController.state.internalAccounts.selectedAccount, - ); + const selectedInternalAccount = + account ?? + AccountsController.getAccount( + AccountsController.state.internalAccounts.selectedAccount, + ); if (selectedInternalAccount) { - const selectSelectedInternalAccountFormattedAddress = - toChecksumHexAddress(selectedInternalAccount.address); + const selectedInternalAccountFormattedAddress = toFormattedAddress( + selectedInternalAccount.address, + ); const { currentCurrency } = CurrencyRateController.state; const { chainId, ticker } = NetworkController.getNetworkClientById( getGlobalNetworkClientId(NetworkController), @@ -1650,7 +1655,14 @@ export class Engine { const { settings: { showFiatOnTestnets } = {} } = store.getState(); if (isTestNet(chainId) && !showFiatOnTestnets) { - return { ethFiat: 0, tokenFiat: 0, ethFiat1dAgo: 0, tokenFiat1dAgo: 0 }; + return { + ethFiat: 0, + tokenFiat: 0, + ethFiat1dAgo: 0, + tokenFiat1dAgo: 0, + totalNativeTokenBalance: '0', + ticker: '', + }; } const conversionRate = @@ -1658,7 +1670,11 @@ export class Engine { 0; const { accountsByChainId } = AccountTrackerController.state; - const { tokens } = TokensController.state; + const chainIdHex = toHexadecimal(chainId); + const tokens = + TokensController.state.allTokens?.[chainIdHex]?.[ + selectedInternalAccount.address + ] || []; const { marketData } = TokenRatesController.state; const tokenExchangeRates = marketData?.[toHexadecimal(chainId)]; @@ -1666,22 +1682,25 @@ export class Engine { let ethFiat1dAgo = 0; let tokenFiat = 0; let tokenFiat1dAgo = 0; + let totalNativeTokenBalance = '0'; const decimalsToShow = (currentCurrency === 'usd' && 2) || undefined; if ( accountsByChainId?.[toHexadecimal(chainId)]?.[ - selectSelectedInternalAccountFormattedAddress + selectedInternalAccountFormattedAddress ] ) { - // TODO - Non EVM accounts like BTC do not use hex formatted balances. We will need to modify this to use CAIP-2 identifiers in the future. - const balanceBN = hexToBN( + const balanceHex = accountsByChainId[toHexadecimal(chainId)][ - selectSelectedInternalAccountFormattedAddress - ].balance, - ); + selectedInternalAccountFormattedAddress + ].balance; + + const balanceBN = hexToBN(balanceHex); + totalNativeTokenBalance = renderFromWei(balanceHex); + // TODO - Non EVM accounts like BTC do not use hex formatted balances. We will need to modify this to use CAIP-2 identifiers in the future. const stakedBalanceBN = hexToBN( accountsByChainId[toHexadecimal(chainId)][ - selectSelectedInternalAccountFormattedAddress + selectedInternalAccountFormattedAddress ].stakedBalance || '0x00', ); const totalAccountBalance = balanceBN @@ -1751,6 +1770,8 @@ export class Engine { ethFiat1dAgo: ethFiat1dAgo ?? 0, tokenFiat: tokenFiat ?? 0, tokenFiat1dAgo: tokenFiat1dAgo ?? 0, + totalNativeTokenBalance: totalNativeTokenBalance ?? '0', + ticker, }; } // if selectedInternalAccount is undefined, return default 0 value. @@ -1759,6 +1780,8 @@ export class Engine { tokenFiat: 0, ethFiat1dAgo: 0, tokenFiat1dAgo: 0, + totalNativeTokenBalance: '0', + ticker: '', }; }; @@ -1842,7 +1865,7 @@ export class Engine { } } - const fiatBalance = this.getTotalFiatAccountBalance() || 0; + const fiatBalance = this.getTotalEvmFiatAccountBalance() || 0; const totalFiatBalance = fiatBalance.ethFiat + fiatBalance.ethFiat; return totalFiatBalance > 0 || tokenFound || nfts.length > 0; @@ -2121,9 +2144,9 @@ export default { return instance.datamodel; }, - getTotalFiatAccountBalance() { + getTotalEvmFiatAccountBalance(account?: InternalAccount) { assertEngineExists(instance); - return instance.getTotalFiatAccountBalance(); + return instance.getTotalEvmFiatAccountBalance(account); }, hasFunds() { diff --git a/app/selectors/currencyRateController.ts b/app/selectors/currencyRateController.ts index e2d3e1a240e1..79d69360fa55 100644 --- a/app/selectors/currencyRateController.ts +++ b/app/selectors/currencyRateController.ts @@ -7,6 +7,7 @@ import { selectEvmTicker, } from './networkController'; import { isTestNet } from '../../app/util/networks'; +import { createDeepEqualSelector } from './util'; const selectCurrencyRateControllerState = (state: RootState) => state?.engine?.backgroundState?.CurrencyRateController; @@ -37,7 +38,7 @@ export const selectCurrencyRates = createSelector( currencyRateControllerState?.currencyRates, ); -export const selectCurrentCurrency = createSelector( +export const selectCurrentCurrency = createDeepEqualSelector( selectCurrencyRateControllerState, (currencyRateControllerState: CurrencyRateState) => currencyRateControllerState?.currentCurrency, diff --git a/app/selectors/multichain/multichain.test.ts b/app/selectors/multichain/multichain.test.ts index f35c1018a1b7..ceae6a5aef17 100644 --- a/app/selectors/multichain/multichain.test.ts +++ b/app/selectors/multichain/multichain.test.ts @@ -11,7 +11,7 @@ import { MULTICHAIN_NETWORK_TO_ASSET_TYPES, selectMultichainTransactions, selectMultichainTokenList, - selectMultichainNetworkAggregatedBalance, + selectSelectedAccountMultichainNetworkAggregatedBalance, selectSolanaAccountTransactions, } from './multichain'; import { InternalAccount } from '@metamask/keyring-internal-api'; @@ -21,7 +21,7 @@ import { MOCK_ACCOUNT_BIP122_P2WPKH, MOCK_SOLANA_ACCOUNT, } from '../../util/test/accountsControllerTestUtils'; -import { Hex } from '@metamask/utils'; +import { CaipAssetType, Hex } from '@metamask/utils'; import { selectAccountBalanceByChainId } from '../accountTrackerController'; import { toChecksumHexAddress } from '@metamask/controller-utils'; import { selectIsEvmNetworkSelected } from '../multichainNetworkController'; @@ -688,26 +688,80 @@ describe('MultichainNonEvm Selectors', () => { }); it('returns aggregated balances in native and fiat', () => { - const selectedInternalAccountId = 'ae247df6-3911-47f7-9e36-28e6a7d96078'; - const assetId = MultichainNativeAssets.Bitcoin; - const assetId2 = - 'bip122:000000000019d6689c085ae165831e93/slip44:WBTC' as MultichainNativeAssets; - const mockState = getNonEvmState(); + const mockState = getNonEvmState(MOCK_SOLANA_ACCOUNT); + // Get the account ID from the test account to ensure they match + const solanaAccountId = MOCK_SOLANA_ACCOUNT.id; + + // Use Solana native asset + const solNativeAssetId = MultichainNativeAssets.Solana; + // Use a different SPL token (non-native) with a different unit + const solTokenAssetId = `${SolScope.Mainnet}/token:JUPyiwrYJFskUPiHa7hkeR8VUtAeFoSYbKedZNsDvCN`; const mockBalances = { - [selectedInternalAccountId]: { - [assetId]: { amount: '10', unit: 'BTC' }, - [assetId2]: { amount: '20', unit: 'BTC' }, + [solanaAccountId]: { + // Native SOL balance + [solNativeAssetId]: { amount: '10', unit: 'SOL' }, + // SPL token balance with a different unit + [solTokenAssetId]: { amount: '20', unit: 'JUP' }, }, }; const mockAssets = { - [selectedInternalAccountId]: [assetId, assetId2], + [solanaAccountId]: [ + solNativeAssetId, + solTokenAssetId, + ] as CaipAssetType[], + }; + + const mockAssetsRates = { + [solNativeAssetId]: { rate: '100', conversionTime: 0 }, + [solTokenAssetId]: { rate: '2', conversionTime: 0 }, + }; + + // Inject mocks into state + mockState.engine.backgroundState.MultichainBalancesController.balances = + mockBalances; + mockState.engine.backgroundState.MultichainAssetsController.accountsAssets = + mockAssets; + mockState.engine.backgroundState.MultichainAssetsRatesController.conversionRates = + mockAssetsRates; + + // Explicitly set the selected account to make sure it matches + mockState.engine.backgroundState.AccountsController.internalAccounts.selectedAccount = + solanaAccountId; + + const result = + selectSelectedAccountMultichainNetworkAggregatedBalance(mockState); + + // Expect only the native asset amount + expect(result.totalNativeTokenBalance?.amount).toEqual('10'); + expect(result.totalNativeTokenBalance?.unit).toEqual('SOL'); + // Expect total fiat balance: (10 SOL * $100) + (20 JUP * $2) = $1000 + $40 = $1040 + expect(result.totalBalanceFiat).toEqual(1040); + }); + + it('returns undefined balances when no assets found for the chain', () => { + const mockState = getNonEvmState(MOCK_SOLANA_ACCOUNT); + // Get the account ID from the test account to ensure they match + const solanaAccountId = MOCK_SOLANA_ACCOUNT.id; + + // Create mock assets for a different chain (not Solana) + const btcNativeAssetId = MultichainNativeAssets.Bitcoin; + const mockAssets = { + [solanaAccountId]: [btcNativeAssetId] as CaipAssetType[], }; + // Set balances only for Bitcoin, not for Solana + const mockBalances = { + [solanaAccountId]: { + // Only BTC balance, no SOL + [btcNativeAssetId]: { amount: '0.5', unit: 'BTC' }, + }, + }; + + // Set rates const mockAssetsRates = { - [assetId]: { rate: '2000', conversionTime: 0 }, - [assetId2]: { rate: '1000', conversionTime: 0 }, + [btcNativeAssetId]: { rate: '40000', conversionTime: 0 }, }; // Inject mocks into state @@ -718,10 +772,21 @@ describe('MultichainNonEvm Selectors', () => { mockState.engine.backgroundState.MultichainAssetsRatesController.conversionRates = mockAssetsRates; - const result = selectMultichainNetworkAggregatedBalance(mockState); + // Select Solana account and chain + mockState.engine.backgroundState.AccountsController.internalAccounts.selectedAccount = + solanaAccountId; + mockState.engine.backgroundState.MultichainNetworkController.selectedMultichainNetworkChainId = + SolScope.Mainnet; + + const result = + selectSelectedAccountMultichainNetworkAggregatedBalance(mockState); - expect(result.totalBalance).toEqual('30'); - expect(result.totalBalanceFiat).toEqual('40000'); + // Should return undefined values since there are no Solana assets + expect(result.totalNativeTokenBalance).toBeUndefined(); + expect(result.totalBalanceFiat).toBeUndefined(); + expect(result.balances).toEqual({ + [btcNativeAssetId]: { amount: '0.5', unit: 'BTC' }, + }); }); }); diff --git a/app/selectors/multichain/multichain.ts b/app/selectors/multichain/multichain.ts index 27c0c9be32d9..f2b319328519 100644 --- a/app/selectors/multichain/multichain.ts +++ b/app/selectors/multichain/multichain.ts @@ -7,9 +7,12 @@ import { selectEvmChainId, selectProviderConfig as selectEvmProviderConfig, } from '../networkController'; -import { selectSelectedInternalAccount } from '../accountsController'; +import { + selectInternalAccounts, + selectSelectedInternalAccount, +} from '../accountsController'; import { createDeepEqualSelector } from '../util'; -import { BtcScope, SolScope } from '@metamask/keyring-api'; +import { Balance, BtcScope, SolScope } from '@metamask/keyring-api'; import { selectConversionRate } from '../currencyRateController'; import { isMainNet } from '../../util/networks'; import { selectAccountBalanceByChainId } from '../accountTrackerController'; @@ -21,6 +24,13 @@ import { } from '../multichainNetworkController'; import { parseCaipAssetType } from '@metamask/utils'; import BigNumber from 'bignumber.js'; +import { InternalAccount } from '@metamask/keyring-internal-api'; +import { + MultichainAssetsControllerState, + MultichainAssetsRatesControllerState, + MultichainBalancesControllerState, +} from '@metamask/assets-controllers'; +import { SupportedCaipChainId } from '@metamask/multichain-network-controller'; /** * @deprecated TEMPORARY SOURCE OF TRUTH TBD @@ -110,6 +120,19 @@ export const selectMultichainShouldShowFiat = createDeepEqualSelector( }, ); +const getNonEvmCachedBalance = ( + internalAccount: InternalAccount, + multichainBalances: MultichainBalancesControllerState['balances'], + nonEvmChainId: SupportedCaipChainId, +) => { + // We assume that there's at least one asset type in and that is the native + // token for that network. + const asset = MULTICHAIN_NETWORK_TO_ASSET_TYPES[nonEvmChainId]?.[0]; + const balancesForAccount = multichainBalances?.[internalAccount.id]; + const balanceOfAsset = balancesForAccount?.[asset]; + return balanceOfAsset?.amount ?? undefined; +}; + const selectNonEvmCachedBalance = createDeepEqualSelector( selectSelectedInternalAccount, selectMultichainBalances, @@ -118,12 +141,11 @@ const selectNonEvmCachedBalance = createDeepEqualSelector( if (!selectedInternalAccount) { return undefined; } - // We assume that there's at least one asset type in and that is the native - // token for that network. - const asset = MULTICHAIN_NETWORK_TO_ASSET_TYPES[nonEvmChainId]?.[0]; - const balancesForAccount = multichainBalances?.[selectedInternalAccount.id]; - const balanceOfAsset = balancesForAccount?.[asset]; - return balanceOfAsset?.amount ?? undefined; + return getNonEvmCachedBalance( + selectedInternalAccount, + multichainBalances, + nonEvmChainId, + ); }, ); @@ -257,50 +279,131 @@ export const selectMultichainTokenList = createDeepEqualSelector( }, ); -export const selectMultichainNetworkAggregatedBalance = createDeepEqualSelector( - selectSelectedInternalAccount, - selectMultichainBalances, - selectMultichainAssets, - selectMultichainAssetsRates, - selectSelectedNonEvmNetworkChainId, - ( - selectedAccountAddress, - multichainBalances, - assets, - assetsRates, - nonEvmNetworkChainId, - ) => { - if (!selectedAccountAddress) { - return { totalBalance: '0', totalBalanceFiat: '0' }; - } +export interface MultichainNetworkAggregatedBalance { + totalNativeTokenBalance: Balance | undefined; + totalBalanceFiat: number | undefined; + balances: Record<string, Balance> | undefined; +} - const assetIds = assets?.[selectedAccountAddress.id] || []; - const balances = multichainBalances?.[selectedAccountAddress.id]; +export const getMultichainNetworkAggregatedBalance = ( + account: InternalAccount, + multichainBalances: MultichainBalancesControllerState['balances'], + multichainAssets: MultichainAssetsControllerState['accountsAssets'], + multichainAssetsRates: MultichainAssetsRatesControllerState['conversionRates'], + nonEvmChainId: SupportedCaipChainId, +): MultichainNetworkAggregatedBalance => { + const assetIds = multichainAssets?.[account.id] || []; + const balances = multichainBalances?.[account.id] || {}; - let totalBalance = new BigNumber(0); - let totalBalanceFiat = new BigNumber(0); + // Find the native asset for this chain + const nativeAsset = MULTICHAIN_NETWORK_TO_ASSET_TYPES[nonEvmChainId]?.[0]; - for (const assetId of assetIds) { - const { chainId } = parseCaipAssetType(assetId); + // Default values for native token + let totalNativeTokenBalance: Balance | undefined; + let totalBalanceFiat: BigNumber | undefined; - if (chainId !== nonEvmNetworkChainId) { - continue; - } + for (const assetId of assetIds) { + const { chainId } = parseCaipAssetType(assetId); - const balance = balances?.[assetId] || { amount: '0', unit: '' }; - const rate = assetsRates?.[assetId]?.rate || '0'; - const balanceInFiat = new BigNumber(balance.amount).times(rate); + if (chainId !== nonEvmChainId) { + continue; + } + + const balance = balances[assetId] || { amount: '0', unit: '' }; + + // Safely handle undefined rate + const rate = multichainAssetsRates?.[assetId]?.rate; + const balanceInFiat = + balance.amount && rate + ? new BigNumber(balance.amount).times(rate) + : new BigNumber(0); + + // Only update native token balance if this is the native asset + if (assetId === nativeAsset) { + totalNativeTokenBalance = balance; + } - totalBalance = totalBalance.plus(balance.amount); + // Always add to total fiat balance + if (totalBalanceFiat) { totalBalanceFiat = totalBalanceFiat.plus(balanceInFiat); + } else { + totalBalanceFiat = balanceInFiat; } + } + + return { + totalNativeTokenBalance, + totalBalanceFiat: totalBalanceFiat + ? totalBalanceFiat.toNumber() + : undefined, + balances, + }; +}; - return { - totalBalance: totalBalance.toString(), - totalBalanceFiat: totalBalanceFiat.toString(), - }; - }, -); +export const selectSelectedAccountMultichainNetworkAggregatedBalance = + createDeepEqualSelector( + selectSelectedInternalAccount, + selectMultichainBalances, + selectMultichainAssets, + selectMultichainAssetsRates, + selectSelectedNonEvmNetworkChainId, + ( + selectedAccount, + multichainBalances, + assets, + assetsRates, + nonEvmNetworkChainId, + ): MultichainNetworkAggregatedBalance => { + if (!selectedAccount) { + return { + totalNativeTokenBalance: undefined, + totalBalanceFiat: undefined, + balances: {}, + }; + } + return getMultichainNetworkAggregatedBalance( + selectedAccount, + multichainBalances, + assets, + assetsRates, + nonEvmNetworkChainId, + ); + }, + ); + +interface MultichainNetworkAggregatedBalanceForAllAccounts { + [accountId: InternalAccount['id']]: MultichainNetworkAggregatedBalance; +} + +export const selectMultichainNetworkAggregatedBalanceForAllAccounts = + createDeepEqualSelector( + selectInternalAccounts, + selectMultichainBalances, + selectMultichainAssets, + selectMultichainAssetsRates, + selectSelectedNonEvmNetworkChainId, + ( + internalAccounts, + multichainBalances, + assets, + assetsRates, + nonEvmNetworkChainId, + ): MultichainNetworkAggregatedBalanceForAllAccounts => { + return internalAccounts.reduce( + (acc, account) => ({ + ...acc, + [account.id]: getMultichainNetworkAggregatedBalance( + account, + multichainBalances, + assets, + assetsRates, + nonEvmNetworkChainId, + ), + }), + {}, + ); + }, + ); const DEFAULT_TRANSACTION_STATE_ENTRY = { transactions: [], diff --git a/app/selectors/multichainNetworkController/index.ts b/app/selectors/multichainNetworkController/index.ts index 7f0eb3a9b483..f99ccfa7a3e3 100644 --- a/app/selectors/multichainNetworkController/index.ts +++ b/app/selectors/multichainNetworkController/index.ts @@ -5,6 +5,7 @@ import { CaipChainId } from '@metamask/utils'; import { BtcScope, SolScope } from '@metamask/keyring-api'; import imageIcons from '../../images/image-icons'; import { ImageSourcePropType } from 'react-native'; +import { createDeepEqualSelector } from '../util'; export const selectMultichainNetworkControllerState = (state: RootState) => state.engine.backgroundState?.MultichainNetworkController; @@ -15,7 +16,7 @@ export const selectIsEvmNetworkSelected = createSelector( multichainNetworkControllerState.isEvmSelected, ); -export const selectSelectedNonEvmNetworkChainId = createSelector( +export const selectSelectedNonEvmNetworkChainId = createDeepEqualSelector( selectMultichainNetworkControllerState, (multichainNetworkControllerState: MultichainNetworkControllerState) => multichainNetworkControllerState.selectedMultichainNetworkChainId, diff --git a/app/selectors/networkController.ts b/app/selectors/networkController.ts index 611dcb3ea918..277787f63754 100644 --- a/app/selectors/networkController.ts +++ b/app/selectors/networkController.ts @@ -129,7 +129,7 @@ export const selectProviderConfig = createDeepEqualSelector( }, ); -export const selectEvmTicker = createSelector( +export const selectEvmTicker = createDeepEqualSelector( selectProviderConfig, (providerConfig) => providerConfig?.ticker, ); @@ -147,7 +147,7 @@ export const selectEvmChainId = createSelector( (providerConfig) => providerConfig.chainId, ); -export const selectChainId = createSelector( +export const selectChainId = createDeepEqualSelector( selectSelectedNonEvmNetworkChainId, selectEvmChainId, selectIsEvmNetworkSelected, From 986edaf901770a625579755bc51d281f111e49ef Mon Sep 17 00:00:00 2001 From: metamaskbot <metamaskbot@users.noreply.github.com> Date: Fri, 11 Apr 2025 14:08:58 -0600 Subject: [PATCH 130/473] sync stable with release --- CHANGELOG.md | 86 +- app/components/Nav/Main/RootRPCMethodsUI.js | 1 - .../SnapUIAddress/SnapUIAddress.test.tsx | 39 +- .../components/ValueDisplay/ValueDisplay.tsx | 64 +- app/util/smart-transactions/index.test.ts | 36 +- attribution.txt | 8610 +++++++++-------- locales/languages/en.json | 5 - 7 files changed, 4564 insertions(+), 4277 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 12d39e1fba5e..f99a3182b8ee 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -45,34 +45,6 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - feat: escape / sanitize signTypedData update ([#14280](https://github.com/MetaMask/metamask-mobile/pull/14280)) - feat: add phishing tracking events to PhishingModal component ([#14254](https://github.com/MetaMask/metamask-mobile/pull/14254)) - feat: upgrade to brand evolution colors ([#14218](https://github.com/MetaMask/metamask-mobile/pull/14218)) -- feat: add quote info modal component ([#14263](https://github.com/MetaMask/metamask-mobile/pull/14263)) -- feat: SPL TokenList v2 ([#14126](https://github.com/MetaMask/metamask-mobile/pull/14126)) -- feat: Bridge dest token ([#14135](https://github.com/MetaMask/metamask-mobile/pull/14135)) -- feat: Adding BSC to STX Supported Chains Array (prod) ([#14230](https://github.com/MetaMask/metamask-mobile/pull/14230)) -- feat: add wallet_revokePermissions rpc call ([#14091](https://github.com/MetaMask/metamask-mobile/pull/14091)) -- feat: Add `getPreferences` hook ([#14062](https://github.com/MetaMask/metamask-mobile/pull/14062)) -- feat: Enforce 3-minute idle time for BrowserTabs before unmounting them ([#14175](https://github.com/MetaMask/metamask-mobile/pull/14175)) -- feat: Add Linea to Smart Transaction supported chains ([#14018](https://github.com/MetaMask/metamask-mobile/pull/14018)) -- feat: import srp ([#13768](https://github.com/MetaMask/metamask-mobile/pull/13768)) -- feat: add inline alert (origin mismatch) to SIWE ([#13773](https://github.com/MetaMask/metamask-mobile/pull/13773)) -- feat: Add BSC to Smart Transaction supported chains ([#13964](https://github.com/MetaMask/metamask-mobile/pull/13964)) -- feat: STAKE-902: build lending empty state component ([#14107](https://github.com/MetaMask/metamask-mobile/pull/14107)) -- feat: use new identity hooks ([#14081](https://github.com/MetaMask/metamask-mobile/pull/14081)) -- feat: add bridge slippage modal component using segmented control ([#14070](https://github.com/MetaMask/metamask-mobile/pull/14070)) -- feat: add carousel component ([#13010](https://github.com/MetaMask/metamask-mobile/pull/13010)) -- feat: STAKE-958 - added migration 070 to remove unused staking state ([#14089](https://github.com/MetaMask/metamask-mobile/pull/14089)) -- feat: Implement claim rewards confirmation ([#14049](https://github.com/MetaMask/metamask-mobile/pull/14049)) -- feat: Implement Segment sampling for expected errors ([#13874](https://github.com/MetaMask/metamask-mobile/pull/13874)) -- feat: Rename `transactionMetrics` to `confirmationMetrics` ([#14080](https://github.com/MetaMask/metamask-mobile/pull/14080)) -- feat: Add `TransactionController` metric handlers ([#14020](https://github.com/MetaMask/metamask-mobile/pull/14020)) -- feat: e2e gate ([#13696](https://github.com/MetaMask/metamask-mobile/pull/13696)) -- feat: add segmented control component ([#14066](https://github.com/MetaMask/metamask-mobile/pull/14066)) -- feat: Implement MaxBrowserTabModal at 5 browser tabs ([#14033](https://github.com/MetaMask/metamask-mobile/pull/14033)) -- feat: add button toggle component ([#14064](https://github.com/MetaMask/metamask-mobile/pull/14064)) -- feat: bridge source token selector ([#13915](https://github.com/MetaMask/metamask-mobile/pull/13915)) -- feat: add new identity hooks ([#14045](https://github.com/MetaMask/metamask-mobile/pull/14045)) -- feat: bridge tx submission ([#13577](https://github.com/MetaMask/metamask-mobile/pull/13577)) -- feat: integrate blockaid alert into the Alert System ([#13744](https://github.com/MetaMask/metamask-mobile/pull/13744)) ### Fixed @@ -126,12 +98,56 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - fix: reduce tests worker for only performance tests ([#14051](https://github.com/MetaMask/metamask-mobile/pull/14051)) - fix: scroll for the confirmation screen ([#14269](https://github.com/MetaMask/metamask-mobile/pull/14269)) - fix: STAKE-964: bumped @metamask/earn-controller dependency to resolve pooled-staking geo-block for fresh installs ([#14257](https://github.com/MetaMask/metamask-mobile/pull/14257)) + +## [7.44.0] + +### Added + +- feat(ramp): add backpress handler to expanded quotes view ([#14210](https://github.com/MetaMask/metamask-mobile/pull/14210)) +- feat(4213-3): network badge positioning ([#14071](https://github.com/MetaMask/metamask-mobile/pull/14071)) +- feat(4213-1): rounded square network icons ([#14065](https://github.com/MetaMask/metamask-mobile/pull/14065)) +- feat(4213-2) update network icons ([#14069](https://github.com/MetaMask/metamask-mobile/pull/14069)) +- feat(ramp): add non evm balance ([#13948](https://github.com/MetaMask/metamask-mobile/pull/13948)) +- feat: add quote info modal component ([#14263](https://github.com/MetaMask/metamask-mobile/pull/14263)) +- feat: SPL TokenList v2 ([#14126](https://github.com/MetaMask/metamask-mobile/pull/14126)) +- feat: Bridge dest token ([#14135](https://github.com/MetaMask/metamask-mobile/pull/14135)) +- feat: Adding BSC to STX Supported Chains Array (prod) ([#14230](https://github.com/MetaMask/metamask-mobile/pull/14230)) +- feat: add wallet_revokePermissions rpc call ([#14091](https://github.com/MetaMask/metamask-mobile/pull/14091)) +- feat: Add `getPreferences` hook ([#14062](https://github.com/MetaMask/metamask-mobile/pull/14062)) +- feat: Enforce 3-minute idle time for BrowserTabs before unmounting them ([#14175](https://github.com/MetaMask/metamask-mobile/pull/14175)) +- feat: Add Linea to Smart Transaction supported chains ([#14018](https://github.com/MetaMask/metamask-mobile/pull/14018)) +- feat: import srp ([#13768](https://github.com/MetaMask/metamask-mobile/pull/13768)) +- feat: add inline alert (origin mismatch) to SIWE ([#13773](https://github.com/MetaMask/metamask-mobile/pull/13773)) +- feat: Add BSC to Smart Transaction supported chains ([#13964](https://github.com/MetaMask/metamask-mobile/pull/13964)) +- feat: STAKE-902: build lending empty state component ([#14107](https://github.com/MetaMask/metamask-mobile/pull/14107)) +- feat: use new identity hooks ([#14081](https://github.com/MetaMask/metamask-mobile/pull/14081)) +- feat: add bridge slippage modal component using segmented control ([#14070](https://github.com/MetaMask/metamask-mobile/pull/14070)) +- feat: add carousel component ([#13010](https://github.com/MetaMask/metamask-mobile/pull/13010)) +- feat: STAKE-958 - added migration 070 to remove unused staking state ([#14089](https://github.com/MetaMask/metamask-mobile/pull/14089)) +- feat: Implement claim rewards confirmation ([#14049](https://github.com/MetaMask/metamask-mobile/pull/14049)) +- feat: Implement Segment sampling for expected errors ([#13874](https://github.com/MetaMask/metamask-mobile/pull/13874)) +- feat: Rename `transactionMetrics` to `confirmationMetrics` ([#14080](https://github.com/MetaMask/metamask-mobile/pull/14080)) +- feat: Add `TransactionController` metric handlers ([#14020](https://github.com/MetaMask/metamask-mobile/pull/14020)) +- feat: e2e gate ([#13696](https://github.com/MetaMask/metamask-mobile/pull/13696)) +- feat: add segmented control component ([#14066](https://github.com/MetaMask/metamask-mobile/pull/14066)) +- feat: Implement MaxBrowserTabModal at 5 browser tabs ([#14033](https://github.com/MetaMask/metamask-mobile/pull/14033)) +- feat: add button toggle component ([#14064](https://github.com/MetaMask/metamask-mobile/pull/14064)) +- feat: bridge source token selector ([#13915](https://github.com/MetaMask/metamask-mobile/pull/13915)) +- feat: add new identity hooks ([#14045](https://github.com/MetaMask/metamask-mobile/pull/14045)) +- feat: bridge tx submission ([#13577](https://github.com/MetaMask/metamask-mobile/pull/13577)) +- feat: integrate blockaid alert into the Alert System ([#13744](https://github.com/MetaMask/metamask-mobile/pull/13744)) + +### Fixed + +- fix: reduce tests worker for only performance tests ([#14051](https://github.com/MetaMask/metamask-mobile/pull/14051)) +- fix: scroll for the confirmation screen ([#14269](https://github.com/MetaMask/metamask-mobile/pull/14269)) +- fix: STAKE-964: bumped @metamask/earn-controller dependency to resolve pooled-staking geo-block for fresh installs ([#14257](https://github.com/MetaMask/metamask-mobile/pull/14257)) +- fix(snaps): Update snap footer buttons ([#13953](https://github.com/MetaMask/metamask-mobile/pull/13953)) - fix: default open links turn true with attaching the protocol per intent filter ([#14222](https://github.com/MetaMask/metamask-mobile/pull/14222)) - fix: waitAndTap on ad carousel banner ([#14198](https://github.com/MetaMask/metamask-mobile/pull/14198)) - fix: bump `@metamask/keyring-controller` to `^19.2.2` ([#14229](https://github.com/MetaMask/metamask-mobile/pull/14229)) - fix: return the same track event reference ([#14205](https://github.com/MetaMask/metamask-mobile/pull/14205)) - fix: Fix mobile redesigned transaction metrics ([#14219](https://github.com/MetaMask/metamask-mobile/pull/14219)) -- fix: cp-7.43.0 correctly fetch token rates during onboarding ([#14207](https://github.com/MetaMask/metamask-mobile/pull/14207)) - fix: Display correct snap name when connecting ([#14204](https://github.com/MetaMask/metamask-mobile/pull/14204)) - fix: Add staking claim event location ([#14203](https://github.com/MetaMask/metamask-mobile/pull/14203)) - fix: ramps: change token to tap and confirm ([#14197](https://github.com/MetaMask/metamask-mobile/pull/14197)) @@ -140,28 +156,19 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - fix: yarn setup bitrise ([#14174](https://github.com/MetaMask/metamask-mobile/pull/14174)) - fix: Address final design adjustments for redesigned confirmations ([#14113](https://github.com/MetaMask/metamask-mobile/pull/14113)) - fix: Add support for swipe navigation on android for staking confirma… ([#14125](https://github.com/MetaMask/metamask-mobile/pull/14125)) -- fix: cp-7.43.0 QR hardware signature requests not showing result after signing ([#14117](https://github.com/MetaMask/metamask-mobile/pull/14117)) - fix: Snap account actions ([#14013](https://github.com/MetaMask/metamask-mobile/pull/14013)) - fix: toggle to display the correct balance ([#13916](https://github.com/MetaMask/metamask-mobile/pull/13916)) - fix: Xcode 16 bitcode upload issue ([#14124](https://github.com/MetaMask/metamask-mobile/pull/14124)) -- fix: cp-7.43.0 useInterval deps ([#14105](https://github.com/MetaMask/metamask-mobile/pull/14105)) - fix: change function in `interfaceController.ts` to a memorised function to imporve performance ([#14090](https://github.com/MetaMask/metamask-mobile/pull/14090)) -- fix: cp-7.43.0 bell icon colour and styles ([#14084](https://github.com/MetaMask/metamask-mobile/pull/14084)) - fix: Not report invalid URL errors to sentry ([#14115](https://github.com/MetaMask/metamask-mobile/pull/14115)) - fix: Loading state bug ([#14096](https://github.com/MetaMask/metamask-mobile/pull/14096)) - fix: android BottomSheet missing padding bottom ([#13993](https://github.com/MetaMask/metamask-mobile/pull/13993)) - fix: prevent unintentional remote feature flag override ([#14086](https://github.com/MetaMask/metamask-mobile/pull/14086)) - fix: when cancelling signature by swiping modal out it should not navigate back ([#14085](https://github.com/MetaMask/metamask-mobile/pull/14085)) - fix: fix cannot read length property ([#14046](https://github.com/MetaMask/metamask-mobile/pull/14046)) -- fix: cp-7.43.0 Updated ThemeProvider to no longer have wrapping View ([#14056](https://github.com/MetaMask/metamask-mobile/pull/14056)) -- fix: cp-7.43.0 remove network fee section in notification details ([#14050](https://github.com/MetaMask/metamask-mobile/pull/14050)) -- fix: cp-7.43.0 updated root to use themeprovider ([#14040](https://github.com/MetaMask/metamask-mobile/pull/14040)) -- fix: cp-7.43.0 add remote feature flag for notifications ([#14028](https://github.com/MetaMask/metamask-mobile/pull/14028)) - fix: account name / label overflow on re-designed confirmation pages ([#14044](https://github.com/MetaMask/metamask-mobile/pull/14044)) -- fix: cp-7.43.0 - Temporarily disable notifications ([#14036](https://github.com/MetaMask/metamask-mobile/pull/14036)) - fix: moved xcode 16 as default and applied xcode 15 only to testflight builds ([#14032](https://github.com/MetaMask/metamask-mobile/pull/14032)) - fix: inherit icon size from text component parent ([#14024](https://github.com/MetaMask/metamask-mobile/pull/14024)) -- fix: cp-7.42.0 Refactor AddNickname with missing data ([#14008](https://github.com/MetaMask/metamask-mobile/pull/14008)) - fix: animation added for loading state on SnapUILink button ([#13973](https://github.com/MetaMask/metamask-mobile/pull/13973)) - fix: Revert "chore: upgrade Xcode 16 on bitrise.yml" ([#14012](https://github.com/MetaMask/metamask-mobile/pull/14012)) @@ -5332,7 +5339,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#954](https://github.com/MetaMask/metamask-mobile/pull/954): Bugfix: onboarding navigation (#954) [Unreleased]: https://github.com/MetaMask/metamask-mobile/compare/v7.45.0...HEAD -[7.45.0]: https://github.com/MetaMask/metamask-mobile/compare/v7.43.0...v7.45.0 +[7.45.0]: https://github.com/MetaMask/metamask-mobile/compare/v7.44.0...v7.45.0 +[7.44.0]: https://github.com/MetaMask/metamask-mobile/compare/v7.43.0...v7.44.0 [7.43.0]: https://github.com/MetaMask/metamask-mobile/compare/v7.42.1...v7.43.0 [7.42.1]: https://github.com/MetaMask/metamask-mobile/compare/v7.42.0...v7.42.1 [7.42.0]: https://github.com/MetaMask/metamask-mobile/compare/v7.41.0...v7.42.0 diff --git a/app/components/Nav/Main/RootRPCMethodsUI.js b/app/components/Nav/Main/RootRPCMethodsUI.js index 3982ddc014ed..5ab4614c9b29 100644 --- a/app/components/Nav/Main/RootRPCMethodsUI.js +++ b/app/components/Nav/Main/RootRPCMethodsUI.js @@ -240,7 +240,6 @@ const RootRPCMethodsUI = (props) => { quote_vs_executionRatio: quoteVsExecutionRatio, token_to_amount_received: tokenToAmountReceived.toString(), is_smart_transaction: props.shouldUseSmartTransaction, - gas_included: analyticsParams.isGasIncludedTrade, ...smartTransactionMetricsProperties, available_quotes: analyticsParams.available_quotes, best_quote_source: analyticsParams.best_quote_source, diff --git a/app/components/Snaps/SnapUIAddress/SnapUIAddress.test.tsx b/app/components/Snaps/SnapUIAddress/SnapUIAddress.test.tsx index f05913facc55..733a6db02556 100644 --- a/app/components/Snaps/SnapUIAddress/SnapUIAddress.test.tsx +++ b/app/components/Snaps/SnapUIAddress/SnapUIAddress.test.tsx @@ -7,19 +7,19 @@ const baseMockState = { engine: { backgroundState: { KeyringController: { - keyrings: [] + keyrings: [], }, AccountsController: { internalAccounts: { accounts: { - 'foo': { + foo: { address: '0xab16a96D359eC26a11e2C2b3d8f8B8942d5Bfcdb', metadata: { name: 'My Account', - } - } - } - } + }, + }, + }, + }, }, AddressBookController: { addressBook: { @@ -27,13 +27,13 @@ const baseMockState = { '0xab16a96D359eC26a11e2C2b3d8f8B8942d5Bfcda': { address: '0xab16a96D359eC26a11e2C2b3d8f8B8942d5Bfcda', name: 'Test Contact', - } - } - } - } - } + }, + }, + }, + }, + }, }, - } + }, }; const mockStateWithoutBlockies = { @@ -75,8 +75,11 @@ describe('SnapUIAddress', () => { it('renders account name', () => { const { getByText } = renderWithProvider( - <SnapUIAddress address="eip155:1:0xab16a96D359eC26a11e2C2b3d8f8B8942d5Bfcdb" displayName />, - baseMockState + <SnapUIAddress + address="eip155:1:0xab16a96D359eC26a11e2C2b3d8f8B8942d5Bfcdb" + displayName + />, + baseMockState, ); expect(getByText('My Account')).toBeDefined(); @@ -84,14 +87,16 @@ describe('SnapUIAddress', () => { it('renders contact name', () => { const { getByText } = renderWithProvider( - <SnapUIAddress address="eip155:1:0xab16a96D359eC26a11e2C2b3d8f8B8942d5Bfcda" displayName />, - baseMockState + <SnapUIAddress + address="eip155:1:0xab16a96D359eC26a11e2C2b3d8f8B8942d5Bfcda" + displayName + />, + baseMockState, ); expect(getByText('Test Contact')).toBeDefined(); }); - it('renders Ethereum address with blockie', () => { const { toJSON } = renderWithProvider( <SnapUIAddress address="eip155:1:0xab16a96D359eC26a11e2C2b3d8f8B8942d5Bfcdb" />, diff --git a/app/components/Views/confirmations/components/Confirm/Info/TypedSignV3V4/Simulation/components/ValueDisplay/ValueDisplay.tsx b/app/components/Views/confirmations/components/Confirm/Info/TypedSignV3V4/Simulation/components/ValueDisplay/ValueDisplay.tsx index 3afd83119d0b..ab1387fde6ee 100644 --- a/app/components/Views/confirmations/components/Confirm/Info/TypedSignV3V4/Simulation/components/ValueDisplay/ValueDisplay.tsx +++ b/app/components/Views/confirmations/components/Confirm/Info/TypedSignV3V4/Simulation/components/ValueDisplay/ValueDisplay.tsx @@ -31,7 +31,10 @@ import { calcTokenAmount } from '../../../../../../../../../../util/transactions import { useGetTokenStandardAndDetails } from '../../../../../../../hooks/useGetTokenStandardAndDetails'; import useTrackERC20WithoutDecimalInformation from '../../../../../../../hooks/useTrackERC20WithoutDecimalInformation'; import { TOKEN_VALUE_UNLIMITED_THRESHOLD } from '../../../../../../../utils/confirm'; -import { isPermitDaiRevoke, isPermitDaiUnlimited } from '../../../../../../../utils/signature'; +import { + isPermitDaiRevoke, + isPermitDaiUnlimited, +} from '../../../../../../../utils/signature'; import { TokenDetailsERC20 } from '../../../../../../../utils/token'; import BottomModal from '../../../../../../UI/BottomModal'; @@ -133,7 +136,8 @@ const SimulationValueDisplay: React.FC<SimulationValueDisplayParams> = ({ const isNFT = tokenId !== undefined && tokenId !== '0'; const isDaiUnlimited = isPermitDaiUnlimited(tokenContract, allowed); const isDaiRevoke = isPermitDaiRevoke(tokenContract, allowed, value); - const isRevoke = isDaiRevoke || modalHeaderText === strings('confirm.title.permit_revoke'); + const isRevoke = + isDaiRevoke || modalHeaderText === strings('confirm.title.permit_revoke'); const tokenAmount = isNumberValue(value) && !tokenId @@ -160,35 +164,45 @@ const SimulationValueDisplay: React.FC<SimulationValueDisplayParams> = ({ ? formatAmountMaxPrecision('en-US', tokenAmount) : null; - const showUnlimitedValue = isDaiUnlimited || + const showUnlimitedValue = + isDaiUnlimited || (canDisplayValueAsUnlimited && - Number(value) > TOKEN_VALUE_UNLIMITED_THRESHOLD); + Number(value) > TOKEN_VALUE_UNLIMITED_THRESHOLD); // Avoid empty button pill container - const showValueButtonPill = Boolean(isPendingTokenDetails - || showUnlimitedValue - || (tokenValue !== null || tokenId)); + const showValueButtonPill = Boolean( + isPendingTokenDetails || + showUnlimitedValue || + tokenValue !== null || + tokenId, + ); function handlePressTokenValue() { setHasValueModalOpen(true); } - return ( - <View style={styles.wrapper}> - <View style={styles.flexRowTokenValueAndAddress}> - <View style={styles.valueAndAddress}> - {showValueButtonPill && - <AnimatedPulse isPulsing={isPendingTokenDetails} testID="simulation-value-display-loader"> - <ButtonPill - isDisabled={isNFT || tokenValueMaxPrecision === null} - onPress={handlePressTokenValue} - onPressIn={handlePressTokenValue} - onPressOut={handlePressTokenValue} - style={[credit && styles.valueIsCredit, debit && styles.valueIsDebit]} - > - {isPendingTokenDetails ? - <View style={styles.loaderButtonPillEmptyContent} /> - : + return ( + <View style={styles.wrapper}> + <View style={styles.flexRowTokenValueAndAddress}> + <View style={styles.valueAndAddress}> + {showValueButtonPill && ( + <AnimatedPulse + isPulsing={isPendingTokenDetails} + testID="simulation-value-display-loader" + > + <ButtonPill + isDisabled={isNFT || tokenValueMaxPrecision === null} + onPress={handlePressTokenValue} + onPressIn={handlePressTokenValue} + onPressOut={handlePressTokenValue} + style={[ + credit && styles.valueIsCredit, + debit && styles.valueIsDebit, + ]} + > + {isPendingTokenDetails ? ( + <View style={styles.loaderButtonPillEmptyContent} /> + ) : ( <Text> {credit && '+ '} {debit && '- '} @@ -203,10 +217,10 @@ const SimulationValueDisplay: React.FC<SimulationValueDisplayParams> = ({ })} {tokenId && `#${tokenId}`} </Text> - } + )} </ButtonPill> </AnimatedPulse> - } + )} <View style={styles.marginStart4}> <Address address={tokenContract} chainId={chainId} /> </View> diff --git a/app/util/smart-transactions/index.test.ts b/app/util/smart-transactions/index.test.ts index a6bf97f62c47..ad14867530ee 100644 --- a/app/util/smart-transactions/index.test.ts +++ b/app/util/smart-transactions/index.test.ts @@ -513,13 +513,15 @@ describe('Smart Transactions utils', () => { it('returns the token fee when the full path exists', () => { const mockQuote = { tradeTxFees: { - fees: [{ - tokenFees: ['mockTokenFee'], - }], + fees: [ + { + tokenFees: ['mockTokenFee'], + }, + ], cancelFees: {}, feeEstimate: '0x0', gasLimit: '0x0', - gasUsed: '0x0' + gasUsed: '0x0', }, approvalTxFees: null, } as unknown as GasIncludedQuote; @@ -544,7 +546,7 @@ describe('Smart Transactions utils', () => { cancelFees: {}, feeEstimate: '0x0', gasLimit: '0x0', - gasUsed: '0x0' + gasUsed: '0x0', }, approvalTxFees: null, } as unknown as GasIncludedQuote; @@ -584,19 +586,21 @@ describe('Smart Transactions utils', () => { it('returns transaction fees when gas is included and token fee exists', () => { const mockQuote = { tradeTxFees: { - fees: [{ - tokenFees: ['mockTokenFee'], - }], + fees: [ + { + tokenFees: ['mockTokenFee'], + }, + ], cancelFees: {}, feeEstimate: '0x0', gasLimit: '0x0', - gasUsed: '0x0' + gasUsed: '0x0', }, approvalTxFees: { cancelFees: {}, feeEstimate: '0x0', gasLimit: '0x0', - gasUsed: '0x0' + gasUsed: '0x0', }, isGasIncludedTrade: true, } as unknown as GasIncludedQuote; @@ -611,13 +615,15 @@ describe('Smart Transactions utils', () => { it('returns undefined when gas is not included', () => { const mockQuote = { tradeTxFees: { - fees: [{ - tokenFees: ['mockTokenFee'], - }], + fees: [ + { + tokenFees: ['mockTokenFee'], + }, + ], cancelFees: {}, feeEstimate: '0x0', gasLimit: '0x0', - gasUsed: '0x0' + gasUsed: '0x0', }, approvalTxFees: null, isGasIncludedTrade: false, @@ -634,7 +640,7 @@ describe('Smart Transactions utils', () => { cancelFees: {}, feeEstimate: '0x0', gasLimit: '0x0', - gasUsed: '0x0' + gasUsed: '0x0', }, approvalTxFees: null, isGasIncludedTrade: true, diff --git a/attribution.txt b/attribution.txt index 6ddde27398ca..a6ed72f948d2 100644 --- a/attribution.txt +++ b/attribution.txt @@ -1,5 +1,5 @@ @0no-co/graphql.web -1.0.13 <https://github.com/0no-co/graphql.web> +1.0.11 <https://github.com/0no-co/graphql.web> MIT License Copyright (c) 0no.co @@ -30,7 +30,7 @@ abort-controller MIT License Copyright (c) 2017 Toru Nagashima -s + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights @@ -1881,27 +1881,27 @@ OTHER DEALINGS IN THE SOFTWARE. archiver-utils 2.1.0 <https://github.com/archiverjs/archiver-utils> -Copyright (c) 2015 Chris Talkington. - -Permission is hereby granted, free of charge, to any person -obtaining a copy of this software and associated documentation -files (the "Software"), to deal in the Software without -restriction, including without limitation the rights to use, -copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the -Software is furnished to do so, subject to the following -conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +Copyright (c) 2015 Chris Talkington. + +Permission is hereby granted, free of charge, to any person +obtaining a copy of this software and associated documentation +files (the "Software"), to deal in the Software without +restriction, including without limitation the rights to use, +copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the +Software is furnished to do so, subject to the following +conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES +OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT +HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** @@ -2254,7 +2254,7 @@ argsarray ****************************** array-buffer-byte-length -1.0.2 <https://github.com/inspect-js/array-buffer-byte-length> +1.0.1 <https://github.com/inspect-js/array-buffer-byte-length> MIT License Copyright (c) 2023 Inspect JS @@ -2281,7 +2281,7 @@ SOFTWARE. ****************************** arraybuffer.prototype.slice -1.0.4 <https://github.com/es-shims/ArrayBuffer.prototype.slice> +1.0.3 <https://github.com/es-shims/ArrayBuffer.prototype.slice> MIT License Copyright (c) 2023 ECMAScript Shims @@ -3104,7 +3104,7 @@ SOFTWARE. ****************************** axios -1.7.4 <https://github.com/axios/axios> +1.8.2 <https://github.com/axios/axios> # Copyright (c) 2014-present Matt Zabriskie & Collaborators Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: @@ -3212,7 +3212,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** @babel/compat-data -7.26.5 <https://github.com/babel/babel> +7.26.2 <https://github.com/babel/babel> MIT License Copyright (c) 2014-present Sebastian McKenzie and other contributors @@ -3303,7 +3303,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** @babel/generator -7.26.5 <https://github.com/babel/babel> +7.26.2 <https://github.com/babel/babel> MIT License Copyright (c) 2014-present Sebastian McKenzie and other contributors @@ -3358,35 +3358,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/helper-compilation-targets -7.26.5 <https://github.com/babel/babel> -MIT License - -Copyright (c) 2014-present Sebastian McKenzie and other contributors - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - -****************************** - -@babel/helper-create-class-features-plugin +@babel/helper-builder-binary-assignment-operator-visitor 7.25.9 <https://github.com/babel/babel> MIT License @@ -3414,64 +3386,8 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/helper-create-regexp-features-plugin -7.26.3 <https://github.com/babel/babel> -MIT License - -Copyright (c) 2014-present Sebastian McKenzie and other contributors - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - -****************************** - -@babel/helper-define-polyfill-provider -0.6.2 <https://github.com/babel/babel-polyfills> -MIT License - -Copyright (c) 2014-present Nicolò Ribaudo and other contributors - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - -****************************** - -@babel/helper-environment-visitor -7.24.7 <https://github.com/babel/babel> +@babel/helper-compilation-targets +7.25.9 <https://github.com/babel/babel> MIT License Copyright (c) 2014-present Sebastian McKenzie and other contributors @@ -3498,7 +3414,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/helper-member-expression-to-functions +@babel/helper-create-class-features-plugin 7.25.9 <https://github.com/babel/babel> MIT License @@ -3526,7 +3442,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/helper-module-imports +@babel/helper-create-regexp-features-plugin 7.25.9 <https://github.com/babel/babel> MIT License @@ -3554,11 +3470,11 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/helper-module-transforms -7.26.0 <https://github.com/babel/babel> +@babel/helper-define-polyfill-provider +0.6.2 <https://github.com/babel/babel-polyfills> MIT License -Copyright (c) 2014-present Sebastian McKenzie and other contributors +Copyright (c) 2014-present Nicolò Ribaudo and other contributors Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the @@ -3582,8 +3498,8 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/helper-optimise-call-expression -7.25.9 <https://github.com/babel/babel> +@babel/helper-environment-visitor +7.24.7 <https://github.com/babel/babel> MIT License Copyright (c) 2014-present Sebastian McKenzie and other contributors @@ -3610,8 +3526,8 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/helper-plugin-utils -7.26.5 <https://github.com/babel/babel> +@babel/helper-member-expression-to-functions +7.25.9 <https://github.com/babel/babel> MIT License Copyright (c) 2014-present Sebastian McKenzie and other contributors @@ -3638,7 +3554,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/helper-remap-async-to-generator +@babel/helper-module-imports 7.25.9 <https://github.com/babel/babel> MIT License @@ -3666,8 +3582,8 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/helper-replace-supers -7.26.5 <https://github.com/babel/babel> +@babel/helper-module-transforms +7.26.0 <https://github.com/babel/babel> MIT License Copyright (c) 2014-present Sebastian McKenzie and other contributors @@ -3694,8 +3610,8 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/helpers -7.24.5 <https://github.com/babel/babel> +@babel/helper-optimise-call-expression +7.25.9 <https://github.com/babel/babel> MIT License Copyright (c) 2014-present Sebastian McKenzie and other contributors @@ -3722,7 +3638,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/helper-skip-transparent-expression-wrappers +@babel/helper-plugin-utils 7.25.9 <https://github.com/babel/babel> MIT License @@ -3750,7 +3666,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/helper-string-parser +@babel/helper-remap-async-to-generator 7.25.9 <https://github.com/babel/babel> MIT License @@ -3778,7 +3694,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/helper-validator-identifier +@babel/helper-replace-supers 7.25.9 <https://github.com/babel/babel> MIT License @@ -3806,8 +3722,8 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/helper-validator-option -7.25.9 <https://github.com/babel/babel> +@babel/helpers +7.26.10 <https://github.com/babel/babel> MIT License Copyright (c) 2014-present Sebastian McKenzie and other contributors @@ -3834,7 +3750,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/helper-wrap-function +@babel/helper-simple-access 7.25.9 <https://github.com/babel/babel> MIT License @@ -3862,8 +3778,8 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/highlight -7.24.7 <https://github.com/babel/babel> +@babel/helper-skip-transparent-expression-wrappers +7.25.9 <https://github.com/babel/babel> MIT License Copyright (c) 2014-present Sebastian McKenzie and other contributors @@ -3890,32 +3806,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/parser -7.26.5 <https://github.com/babel/babel> -Copyright (C) 2012-2014 by various contributors (see AUTHORS) - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. - - -****************************** - -@babel/plugin-bugfix-firefox-class-in-computed-class-key +@babel/helper-string-parser 7.25.9 <https://github.com/babel/babel> MIT License @@ -3943,7 +3834,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/plugin-bugfix-safari-class-field-initializer-scope +@babel/helper-validator-identifier 7.25.9 <https://github.com/babel/babel> MIT License @@ -3971,7 +3862,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression +@babel/helper-validator-option 7.25.9 <https://github.com/babel/babel> MIT License @@ -3999,7 +3890,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining +@babel/helper-wrap-function 7.25.9 <https://github.com/babel/babel> MIT License @@ -4027,8 +3918,8 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly -7.25.9 <https://github.com/babel/babel> +@babel/highlight +7.24.7 <https://github.com/babel/babel> MIT License Copyright (c) 2014-present Sebastian McKenzie and other contributors @@ -4055,11 +3946,9 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -babel-plugin-module-resolver -5.0.2 <https://github.com/tleunen/babel-plugin-module-resolver> -The MIT License (MIT) - -Copyright (c) 2015 Tommy Leunen <tommy.leunen@gmail.com> (tommyleunen.com) +@babel/parser +7.26.10 <https://github.com/babel/babel> +Copyright (C) 2012-2014 by various contributors (see AUTHORS) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal @@ -4082,67 +3971,11 @@ THE SOFTWARE. ****************************** -babel-plugin-polyfill-corejs2 -0.4.11 <https://github.com/babel/babel-polyfills> -MIT License - -Copyright (c) 2014-present Nicolò Ribaudo and other contributors - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - -****************************** - -babel-plugin-polyfill-corejs3 -0.10.6 <https://github.com/babel/babel-polyfills> -MIT License - -Copyright (c) 2014-present Nicolò Ribaudo and other contributors - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - -****************************** - -babel-plugin-polyfill-regenerator -0.6.2 <https://github.com/babel/babel-polyfills> +@babel/plugin-bugfix-firefox-class-in-computed-class-key +7.25.9 <https://github.com/babel/babel> MIT License -Copyright (c) 2014-present Nicolò Ribaudo and other contributors +Copyright (c) 2014-present Sebastian McKenzie and other contributors Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the @@ -4166,8 +3999,8 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/plugin-proposal-async-generator-functions -7.20.7 <https://github.com/babel/babel> +@babel/plugin-bugfix-safari-class-field-initializer-scope +7.25.9 <https://github.com/babel/babel> MIT License Copyright (c) 2014-present Sebastian McKenzie and other contributors @@ -4194,8 +4027,8 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/plugin-proposal-class-properties -7.18.6 <https://github.com/babel/babel> +@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression +7.25.9 <https://github.com/babel/babel> MIT License Copyright (c) 2014-present Sebastian McKenzie and other contributors @@ -4222,7 +4055,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/plugin-proposal-decorators +@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining 7.25.9 <https://github.com/babel/babel> MIT License @@ -4250,8 +4083,8 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/plugin-proposal-export-default-from -7.24.1 <https://github.com/babel/babel> +@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly +7.25.9 <https://github.com/babel/babel> MIT License Copyright (c) 2014-present Sebastian McKenzie and other contributors @@ -4278,11 +4111,38 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/plugin-proposal-export-namespace-from -7.18.9 <https://github.com/babel/babel> +babel-plugin-module-resolver +5.0.2 <https://github.com/tleunen/babel-plugin-module-resolver> +The MIT License (MIT) + +Copyright (c) 2015 Tommy Leunen <tommy.leunen@gmail.com> (tommyleunen.com) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + + +****************************** + +babel-plugin-polyfill-corejs2 +0.4.11 <https://github.com/babel/babel-polyfills> MIT License -Copyright (c) 2014-present Sebastian McKenzie and other contributors +Copyright (c) 2014-present Nicolò Ribaudo and other contributors Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the @@ -4306,11 +4166,11 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/plugin-proposal-nullish-coalescing-operator -7.18.6 <https://github.com/babel/babel> +babel-plugin-polyfill-corejs3 +0.10.6 <https://github.com/babel/babel-polyfills> MIT License -Copyright (c) 2014-present Sebastian McKenzie and other contributors +Copyright (c) 2014-present Nicolò Ribaudo and other contributors Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the @@ -4334,11 +4194,11 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/plugin-proposal-numeric-separator -7.18.6 <https://github.com/babel/babel> +babel-plugin-polyfill-regenerator +0.6.2 <https://github.com/babel/babel-polyfills> MIT License -Copyright (c) 2014-present Sebastian McKenzie and other contributors +Copyright (c) 2014-present Nicolò Ribaudo and other contributors Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the @@ -4362,7 +4222,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/plugin-proposal-object-rest-spread +@babel/plugin-proposal-async-generator-functions 7.20.7 <https://github.com/babel/babel> MIT License @@ -4390,7 +4250,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/plugin-proposal-optional-catch-binding +@babel/plugin-proposal-class-properties 7.18.6 <https://github.com/babel/babel> MIT License @@ -4418,8 +4278,8 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/plugin-proposal-optional-chaining -7.21.0 <https://github.com/babel/babel> +@babel/plugin-proposal-decorators +7.25.9 <https://github.com/babel/babel> MIT License Copyright (c) 2014-present Sebastian McKenzie and other contributors @@ -4446,8 +4306,8 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/plugin-proposal-private-property-in-object -7.21.0-placeholder-for-preset-env.2 <https://github.com/babel/babel-plugin-proposal-private-property-in-object> +@babel/plugin-proposal-export-default-from +7.24.1 <https://github.com/babel/babel> MIT License Copyright (c) 2014-present Sebastian McKenzie and other contributors @@ -4474,35 +4334,8 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -babel-plugin-react-native-web -0.18.12 <https://github.com/necolas/react-native-web> -MIT License - -Copyright (c) Nicolas Gallagher. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - - -****************************** - -@babel/plugin-syntax-async-generators -7.8.4 <https://github.com/babel/babel/tree/master/packages/babel-plugin-syntax-async-generators> +@babel/plugin-proposal-export-namespace-from +7.18.9 <https://github.com/babel/babel> MIT License Copyright (c) 2014-present Sebastian McKenzie and other contributors @@ -4529,8 +4362,8 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/plugin-syntax-class-properties -7.12.13 <https://github.com/babel/babel> +@babel/plugin-proposal-nullish-coalescing-operator +7.18.6 <https://github.com/babel/babel> MIT License Copyright (c) 2014-present Sebastian McKenzie and other contributors @@ -4557,8 +4390,8 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/plugin-syntax-decorators -7.25.9 <https://github.com/babel/babel> +@babel/plugin-proposal-numeric-separator +7.18.6 <https://github.com/babel/babel> MIT License Copyright (c) 2014-present Sebastian McKenzie and other contributors @@ -4585,8 +4418,8 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/plugin-syntax-dynamic-import -7.8.3 <https://github.com/babel/babel/tree/master/packages/babel-plugin-syntax-dynamic-import> +@babel/plugin-proposal-object-rest-spread +7.20.7 <https://github.com/babel/babel> MIT License Copyright (c) 2014-present Sebastian McKenzie and other contributors @@ -4613,8 +4446,8 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/plugin-syntax-export-default-from -7.24.1 <https://github.com/babel/babel> +@babel/plugin-proposal-optional-catch-binding +7.18.6 <https://github.com/babel/babel> MIT License Copyright (c) 2014-present Sebastian McKenzie and other contributors @@ -4641,8 +4474,8 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/plugin-syntax-export-namespace-from -7.8.3 <https://github.com/babel/babel/tree/master/packages/babel-plugin-syntax-export-namespace-from> +@babel/plugin-proposal-optional-chaining +7.21.0 <https://github.com/babel/babel> MIT License Copyright (c) 2014-present Sebastian McKenzie and other contributors @@ -4669,8 +4502,8 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/plugin-syntax-flow -7.24.7 <https://github.com/babel/babel> +@babel/plugin-proposal-private-property-in-object +7.21.0-placeholder-for-preset-env.2 <https://github.com/babel/babel-plugin-proposal-private-property-in-object> MIT License Copyright (c) 2014-present Sebastian McKenzie and other contributors @@ -4697,36 +4530,35 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/plugin-syntax-import-assertions -7.26.0 <https://github.com/babel/babel> +babel-plugin-react-native-web +0.18.12 <https://github.com/necolas/react-native-web> MIT License -Copyright (c) 2014-present Sebastian McKenzie and other contributors +Copyright (c) Nicolas Gallagher. -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. ****************************** -@babel/plugin-syntax-import-attributes -7.26.0 <https://github.com/babel/babel> +@babel/plugin-syntax-async-generators +7.8.4 <https://github.com/babel/babel/tree/master/packages/babel-plugin-syntax-async-generators> MIT License Copyright (c) 2014-present Sebastian McKenzie and other contributors @@ -4753,8 +4585,8 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/plugin-syntax-jsx -7.25.9 <https://github.com/babel/babel> +@babel/plugin-syntax-class-properties +7.12.13 <https://github.com/babel/babel> MIT License Copyright (c) 2014-present Sebastian McKenzie and other contributors @@ -4781,8 +4613,8 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/plugin-syntax-nullish-coalescing-operator -7.8.3 <https://github.com/babel/babel/tree/master/packages/babel-plugin-syntax-nullish-coalescing-operator> +@babel/plugin-syntax-decorators +7.25.9 <https://github.com/babel/babel> MIT License Copyright (c) 2014-present Sebastian McKenzie and other contributors @@ -4809,8 +4641,8 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/plugin-syntax-numeric-separator -7.10.4 <https://github.com/babel/babel> +@babel/plugin-syntax-dynamic-import +7.8.3 <https://github.com/babel/babel/tree/master/packages/babel-plugin-syntax-dynamic-import> MIT License Copyright (c) 2014-present Sebastian McKenzie and other contributors @@ -4837,8 +4669,8 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/plugin-syntax-object-rest-spread -7.8.3 <https://github.com/babel/babel/tree/master/packages/babel-plugin-syntax-object-rest-spread> +@babel/plugin-syntax-export-default-from +7.24.1 <https://github.com/babel/babel> MIT License Copyright (c) 2014-present Sebastian McKenzie and other contributors @@ -4865,8 +4697,8 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/plugin-syntax-optional-catch-binding -7.8.3 <https://github.com/babel/babel/tree/master/packages/babel-plugin-syntax-optional-catch-binding> +@babel/plugin-syntax-export-namespace-from +7.8.3 <https://github.com/babel/babel/tree/master/packages/babel-plugin-syntax-export-namespace-from> MIT License Copyright (c) 2014-present Sebastian McKenzie and other contributors @@ -4893,8 +4725,8 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/plugin-syntax-optional-chaining -7.8.3 <https://github.com/babel/babel/tree/master/packages/babel-plugin-syntax-optional-chaining> +@babel/plugin-syntax-flow +7.24.7 <https://github.com/babel/babel> MIT License Copyright (c) 2014-present Sebastian McKenzie and other contributors @@ -4921,15 +4753,8 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -babel-plugin-syntax-trailing-function-commas -7.0.0-beta.0 <https://github.com/babel/babel/tree/master/packages/babel-plugin-syntax-trailing-function-commas> -license: MIT -authors: undefined - -****************************** - -@babel/plugin-syntax-typescript -7.24.1 <https://github.com/babel/babel> +@babel/plugin-syntax-import-assertions +7.26.0 <https://github.com/babel/babel> MIT License Copyright (c) 2014-present Sebastian McKenzie and other contributors @@ -4956,8 +4781,8 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/plugin-syntax-unicode-sets-regex -7.18.6 <https://github.com/babel/babel> +@babel/plugin-syntax-import-attributes +7.26.0 <https://github.com/babel/babel> MIT License Copyright (c) 2014-present Sebastian McKenzie and other contributors @@ -4984,7 +4809,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/plugin-transform-arrow-functions +@babel/plugin-syntax-jsx 7.25.9 <https://github.com/babel/babel> MIT License @@ -5012,8 +4837,8 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/plugin-transform-async-generator-functions -7.25.9 <https://github.com/babel/babel> +@babel/plugin-syntax-nullish-coalescing-operator +7.8.3 <https://github.com/babel/babel/tree/master/packages/babel-plugin-syntax-nullish-coalescing-operator> MIT License Copyright (c) 2014-present Sebastian McKenzie and other contributors @@ -5040,8 +4865,8 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/plugin-transform-async-to-generator -7.25.9 <https://github.com/babel/babel> +@babel/plugin-syntax-numeric-separator +7.10.4 <https://github.com/babel/babel> MIT License Copyright (c) 2014-present Sebastian McKenzie and other contributors @@ -5068,8 +4893,8 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/plugin-transform-block-scoped-functions -7.26.5 <https://github.com/babel/babel> +@babel/plugin-syntax-object-rest-spread +7.8.3 <https://github.com/babel/babel/tree/master/packages/babel-plugin-syntax-object-rest-spread> MIT License Copyright (c) 2014-present Sebastian McKenzie and other contributors @@ -5096,8 +4921,8 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/plugin-transform-block-scoping -7.25.9 <https://github.com/babel/babel> +@babel/plugin-syntax-optional-catch-binding +7.8.3 <https://github.com/babel/babel/tree/master/packages/babel-plugin-syntax-optional-catch-binding> MIT License Copyright (c) 2014-present Sebastian McKenzie and other contributors @@ -5124,8 +4949,8 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/plugin-transform-classes -7.25.9 <https://github.com/babel/babel> +@babel/plugin-syntax-optional-chaining +7.8.3 <https://github.com/babel/babel/tree/master/packages/babel-plugin-syntax-optional-chaining> MIT License Copyright (c) 2014-present Sebastian McKenzie and other contributors @@ -5152,8 +4977,15 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/plugin-transform-class-properties -7.25.9 <https://github.com/babel/babel> +babel-plugin-syntax-trailing-function-commas +7.0.0-beta.0 <https://github.com/babel/babel/tree/master/packages/babel-plugin-syntax-trailing-function-commas> +license: MIT +authors: undefined + +****************************** + +@babel/plugin-syntax-typescript +7.24.1 <https://github.com/babel/babel> MIT License Copyright (c) 2014-present Sebastian McKenzie and other contributors @@ -5180,8 +5012,8 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/plugin-transform-class-static-block -7.26.0 <https://github.com/babel/babel> +@babel/plugin-syntax-unicode-sets-regex +7.18.6 <https://github.com/babel/babel> MIT License Copyright (c) 2014-present Sebastian McKenzie and other contributors @@ -5208,7 +5040,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/plugin-transform-computed-properties +@babel/plugin-transform-arrow-functions 7.25.9 <https://github.com/babel/babel> MIT License @@ -5236,7 +5068,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/plugin-transform-destructuring +@babel/plugin-transform-async-generator-functions 7.25.9 <https://github.com/babel/babel> MIT License @@ -5264,7 +5096,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/plugin-transform-dotall-regex +@babel/plugin-transform-async-to-generator 7.25.9 <https://github.com/babel/babel> MIT License @@ -5292,7 +5124,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/plugin-transform-duplicate-keys +@babel/plugin-transform-block-scoped-functions 7.25.9 <https://github.com/babel/babel> MIT License @@ -5320,7 +5152,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/plugin-transform-duplicate-named-capturing-groups-regex +@babel/plugin-transform-block-scoping 7.25.9 <https://github.com/babel/babel> MIT License @@ -5348,7 +5180,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/plugin-transform-dynamic-import +@babel/plugin-transform-classes 7.25.9 <https://github.com/babel/babel> MIT License @@ -5376,8 +5208,8 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/plugin-transform-exponentiation-operator -7.26.3 <https://github.com/babel/babel> +@babel/plugin-transform-class-properties +7.25.9 <https://github.com/babel/babel> MIT License Copyright (c) 2014-present Sebastian McKenzie and other contributors @@ -5404,8 +5236,8 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/plugin-transform-export-namespace-from -7.25.9 <https://github.com/babel/babel> +@babel/plugin-transform-class-static-block +7.26.0 <https://github.com/babel/babel> MIT License Copyright (c) 2014-present Sebastian McKenzie and other contributors @@ -5432,35 +5264,8 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -babel-plugin-transform-flow-enums -0.0.2 <https://github.com/facebook/flow> -MIT License - -Copyright (c) Facebook, Inc. and its affiliates. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - - -****************************** - -@babel/plugin-transform-flow-strip-types -7.24.7 <https://github.com/babel/babel> +@babel/plugin-transform-computed-properties +7.25.9 <https://github.com/babel/babel> MIT License Copyright (c) 2014-present Sebastian McKenzie and other contributors @@ -5487,7 +5292,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/plugin-transform-for-of +@babel/plugin-transform-destructuring 7.25.9 <https://github.com/babel/babel> MIT License @@ -5515,7 +5320,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/plugin-transform-function-name +@babel/plugin-transform-dotall-regex 7.25.9 <https://github.com/babel/babel> MIT License @@ -5543,7 +5348,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/plugin-transform-json-strings +@babel/plugin-transform-duplicate-keys 7.25.9 <https://github.com/babel/babel> MIT License @@ -5571,7 +5376,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/plugin-transform-literals +@babel/plugin-transform-duplicate-named-capturing-groups-regex 7.25.9 <https://github.com/babel/babel> MIT License @@ -5599,7 +5404,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/plugin-transform-logical-assignment-operators +@babel/plugin-transform-dynamic-import 7.25.9 <https://github.com/babel/babel> MIT License @@ -5627,7 +5432,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/plugin-transform-member-expression-literals +@babel/plugin-transform-exponentiation-operator 7.25.9 <https://github.com/babel/babel> MIT License @@ -5655,7 +5460,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/plugin-transform-modules-amd +@babel/plugin-transform-export-namespace-from 7.25.9 <https://github.com/babel/babel> MIT License @@ -5683,8 +5488,35 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/plugin-transform-modules-commonjs -7.26.3 <https://github.com/babel/babel> +babel-plugin-transform-flow-enums +0.0.2 <https://github.com/facebook/flow> +MIT License + +Copyright (c) Facebook, Inc. and its affiliates. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + +****************************** + +@babel/plugin-transform-flow-strip-types +7.24.7 <https://github.com/babel/babel> MIT License Copyright (c) 2014-present Sebastian McKenzie and other contributors @@ -5711,7 +5543,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/plugin-transform-modules-systemjs +@babel/plugin-transform-for-of 7.25.9 <https://github.com/babel/babel> MIT License @@ -5739,7 +5571,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/plugin-transform-modules-umd +@babel/plugin-transform-function-name 7.25.9 <https://github.com/babel/babel> MIT License @@ -5767,7 +5599,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/plugin-transform-named-capturing-groups-regex +@babel/plugin-transform-json-strings 7.25.9 <https://github.com/babel/babel> MIT License @@ -5795,7 +5627,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/plugin-transform-new-target +@babel/plugin-transform-literals 7.25.9 <https://github.com/babel/babel> MIT License @@ -5823,8 +5655,8 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/plugin-transform-nullish-coalescing-operator -7.26.6 <https://github.com/babel/babel> +@babel/plugin-transform-logical-assignment-operators +7.25.9 <https://github.com/babel/babel> MIT License Copyright (c) 2014-present Sebastian McKenzie and other contributors @@ -5851,7 +5683,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/plugin-transform-numeric-separator +@babel/plugin-transform-member-expression-literals 7.25.9 <https://github.com/babel/babel> MIT License @@ -5879,35 +5711,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/plugin-transform-object-assign -7.24.1 <https://github.com/babel/babel> -The MIT License (MIT) - -Copyright (c) 2015 Jed Watson - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - - - -****************************** - -@babel/plugin-transform-object-rest-spread +@babel/plugin-transform-modules-amd 7.25.9 <https://github.com/babel/babel> MIT License @@ -5935,7 +5739,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/plugin-transform-object-super +@babel/plugin-transform-modules-commonjs 7.25.9 <https://github.com/babel/babel> MIT License @@ -5963,7 +5767,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/plugin-transform-optional-catch-binding +@babel/plugin-transform-modules-systemjs 7.25.9 <https://github.com/babel/babel> MIT License @@ -5991,7 +5795,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/plugin-transform-optional-chaining +@babel/plugin-transform-modules-umd 7.25.9 <https://github.com/babel/babel> MIT License @@ -6019,7 +5823,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/plugin-transform-parameters +@babel/plugin-transform-named-capturing-groups-regex 7.25.9 <https://github.com/babel/babel> MIT License @@ -6047,7 +5851,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/plugin-transform-private-methods +@babel/plugin-transform-new-target 7.25.9 <https://github.com/babel/babel> MIT License @@ -6075,7 +5879,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/plugin-transform-private-property-in-object +@babel/plugin-transform-nullish-coalescing-operator 7.25.9 <https://github.com/babel/babel> MIT License @@ -6103,7 +5907,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/plugin-transform-property-literals +@babel/plugin-transform-numeric-separator 7.25.9 <https://github.com/babel/babel> MIT License @@ -6131,8 +5935,36 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/plugin-transform-react-display-name -7.24.7 <https://github.com/babel/babel> +@babel/plugin-transform-object-assign +7.24.1 <https://github.com/babel/babel> +The MIT License (MIT) + +Copyright (c) 2015 Jed Watson + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + + +****************************** + +@babel/plugin-transform-object-rest-spread +7.25.9 <https://github.com/babel/babel> MIT License Copyright (c) 2014-present Sebastian McKenzie and other contributors @@ -6159,7 +5991,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/plugin-transform-react-jsx +@babel/plugin-transform-object-super 7.25.9 <https://github.com/babel/babel> MIT License @@ -6187,8 +6019,8 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/plugin-transform-react-jsx-self -7.24.5 <https://github.com/babel/babel> +@babel/plugin-transform-optional-catch-binding +7.25.9 <https://github.com/babel/babel> MIT License Copyright (c) 2014-present Sebastian McKenzie and other contributors @@ -6215,8 +6047,8 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/plugin-transform-react-jsx-source -7.24.1 <https://github.com/babel/babel> +@babel/plugin-transform-optional-chaining +7.25.9 <https://github.com/babel/babel> MIT License Copyright (c) 2014-present Sebastian McKenzie and other contributors @@ -6243,7 +6075,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/plugin-transform-regenerator +@babel/plugin-transform-parameters 7.25.9 <https://github.com/babel/babel> MIT License @@ -6271,8 +6103,8 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/plugin-transform-regexp-modifiers -7.26.0 <https://github.com/babel/babel> +@babel/plugin-transform-private-methods +7.25.9 <https://github.com/babel/babel> MIT License Copyright (c) 2014-present Sebastian McKenzie and other contributors @@ -6299,7 +6131,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/plugin-transform-reserved-words +@babel/plugin-transform-private-property-in-object 7.25.9 <https://github.com/babel/babel> MIT License @@ -6327,8 +6159,8 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/plugin-transform-runtime -7.24.3 <https://github.com/babel/babel> +@babel/plugin-transform-property-literals +7.25.9 <https://github.com/babel/babel> MIT License Copyright (c) 2014-present Sebastian McKenzie and other contributors @@ -6355,8 +6187,8 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/plugin-transform-shorthand-properties -7.25.9 <https://github.com/babel/babel> +@babel/plugin-transform-react-display-name +7.24.7 <https://github.com/babel/babel> MIT License Copyright (c) 2014-present Sebastian McKenzie and other contributors @@ -6383,7 +6215,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/plugin-transform-spread +@babel/plugin-transform-react-jsx 7.25.9 <https://github.com/babel/babel> MIT License @@ -6411,8 +6243,8 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/plugin-transform-sticky-regex -7.25.9 <https://github.com/babel/babel> +@babel/plugin-transform-react-jsx-self +7.24.5 <https://github.com/babel/babel> MIT License Copyright (c) 2014-present Sebastian McKenzie and other contributors @@ -6439,8 +6271,8 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/plugin-transform-template-literals -7.25.9 <https://github.com/babel/babel> +@babel/plugin-transform-react-jsx-source +7.24.1 <https://github.com/babel/babel> MIT License Copyright (c) 2014-present Sebastian McKenzie and other contributors @@ -6467,7 +6299,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/plugin-transform-typeof-symbol +@babel/plugin-transform-regenerator 7.25.9 <https://github.com/babel/babel> MIT License @@ -6495,8 +6327,8 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/plugin-transform-typescript -7.24.5 <https://github.com/babel/babel> +@babel/plugin-transform-regexp-modifiers +7.26.0 <https://github.com/babel/babel> MIT License Copyright (c) 2014-present Sebastian McKenzie and other contributors @@ -6523,7 +6355,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/plugin-transform-unicode-escapes +@babel/plugin-transform-reserved-words 7.25.9 <https://github.com/babel/babel> MIT License @@ -6551,8 +6383,8 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/plugin-transform-unicode-property-regex -7.25.9 <https://github.com/babel/babel> +@babel/plugin-transform-runtime +7.24.3 <https://github.com/babel/babel> MIT License Copyright (c) 2014-present Sebastian McKenzie and other contributors @@ -6579,7 +6411,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/plugin-transform-unicode-regex +@babel/plugin-transform-shorthand-properties 7.25.9 <https://github.com/babel/babel> MIT License @@ -6607,7 +6439,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/plugin-transform-unicode-sets-regex +@babel/plugin-transform-spread 7.25.9 <https://github.com/babel/babel> MIT License @@ -6635,8 +6467,8 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -@babel/preset-env -7.26.0 <https://github.com/babel/babel> +@babel/plugin-transform-sticky-regex +7.25.9 <https://github.com/babel/babel> MIT License Copyright (c) 2014-present Sebastian McKenzie and other contributors @@ -6663,42 +6495,266 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -babel-preset-expo -9.5.2 <https://github.com/expo/expo> -license: MIT -authors: Expo <support@expo.dev> - -****************************** - -babel-preset-fbjs -3.4.0 <https://github.com/facebook/fbjs> -MIT License - -Copyright (c) 2013-present, Facebook, Inc. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - - -****************************** - -@babel/preset-flow -7.24.1 <https://github.com/babel/babel> +@babel/plugin-transform-template-literals +7.25.9 <https://github.com/babel/babel> +MIT License + +Copyright (c) 2014-present Sebastian McKenzie and other contributors + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +****************************** + +@babel/plugin-transform-typeof-symbol +7.25.9 <https://github.com/babel/babel> +MIT License + +Copyright (c) 2014-present Sebastian McKenzie and other contributors + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +****************************** + +@babel/plugin-transform-typescript +7.24.5 <https://github.com/babel/babel> +MIT License + +Copyright (c) 2014-present Sebastian McKenzie and other contributors + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +****************************** + +@babel/plugin-transform-unicode-escapes +7.25.9 <https://github.com/babel/babel> +MIT License + +Copyright (c) 2014-present Sebastian McKenzie and other contributors + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +****************************** + +@babel/plugin-transform-unicode-property-regex +7.25.9 <https://github.com/babel/babel> +MIT License + +Copyright (c) 2014-present Sebastian McKenzie and other contributors + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +****************************** + +@babel/plugin-transform-unicode-regex +7.25.9 <https://github.com/babel/babel> +MIT License + +Copyright (c) 2014-present Sebastian McKenzie and other contributors + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +****************************** + +@babel/plugin-transform-unicode-sets-regex +7.25.9 <https://github.com/babel/babel> +MIT License + +Copyright (c) 2014-present Sebastian McKenzie and other contributors + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +****************************** + +@babel/preset-env +7.26.0 <https://github.com/babel/babel> +MIT License + +Copyright (c) 2014-present Sebastian McKenzie and other contributors + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +****************************** + +babel-preset-expo +9.5.2 <https://github.com/expo/expo> +license: MIT +authors: Expo <support@expo.dev> + +****************************** + +babel-preset-fbjs +3.4.0 <https://github.com/facebook/fbjs> +MIT License + +Copyright (c) 2013-present, Facebook, Inc. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + +****************************** + +@babel/preset-flow +7.24.1 <https://github.com/babel/babel> MIT License Copyright (c) 2014-present Sebastian McKenzie and other contributors @@ -6809,7 +6865,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** @babel/runtime -7.26.0 <https://github.com/babel/babel> +7.26.10 <https://github.com/babel/babel> MIT License Copyright (c) 2014-present Sebastian McKenzie and other contributors @@ -6837,7 +6893,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** @babel/template -7.25.9 <https://github.com/babel/babel> +7.26.9 <https://github.com/babel/babel> MIT License Copyright (c) 2014-present Sebastian McKenzie and other contributors @@ -6865,7 +6921,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** @babel/traverse -7.26.5 <https://github.com/babel/babel> +7.25.9 <https://github.com/babel/babel> MIT License Copyright (c) 2014-present Sebastian McKenzie and other contributors @@ -6893,7 +6949,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** @babel/types -7.26.5 <https://github.com/babel/babel> +7.26.10 <https://github.com/babel/babel> MIT License Copyright (c) 2014-present Sebastian McKenzie and other contributors @@ -7232,6 +7288,34 @@ bech32 2.0.0 <https://github.com/bitcoinjs/bech32> MIT License +Copyright (c) 2017 Pieter Wuille +Copyright (c) 2018 bitcoinjs contributors + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + +****************************** + +better-opn +3.0.2 <https://github.com/ExiaSR/better-opn> +Copyright 2018 Michael Lin <linzichunzf@hotmail.com> + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. @@ -7243,30 +7327,30 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI big-integer 1.6.51 <https://github.com/peterolson/BigInteger.js> -This is free and unencumbered software released into the public domain. - -Anyone is free to copy, modify, publish, use, compile, sell, or -distribute this software, either in source code form or as a compiled -binary, for any purpose, commercial or non-commercial, and by any -means. - -In jurisdictions that recognize copyright laws, the author or authors -of this software dedicate any and all copyright interest in the -software to the public domain. We make this dedication for the benefit -of the public at large and to the detriment of our heirs and -successors. We intend this dedication to be an overt act of -relinquishment in perpetuity of all present and future rights to this -software under copyright law. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR -OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, -ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -OTHER DEALINGS IN THE SOFTWARE. - -For more information, please refer to <http://unlicense.org> +This is free and unencumbered software released into the public domain. + +Anyone is free to copy, modify, publish, use, compile, sell, or +distribute this software, either in source code form or as a compiled +binary, for any purpose, commercial or non-commercial, and by any +means. + +In jurisdictions that recognize copyright laws, the author or authors +of this software dedicate any and all copyright interest in the +software to the public domain. We make this dedication for the benefit +of the public at large and to the detriment of our heirs and +successors. We intend this dedication to be an overt act of +relinquishment in perpetuity of all present and future rights to this +software under copyright law. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR +OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +OTHER DEALINGS IN THE SOFTWARE. + +For more information, please refer to <http://unlicense.org> ****************************** @@ -7298,61 +7382,6 @@ The above copyright notice and this permission notice shall be included in all c THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -****************************** - -bindings -1.5.0 <https://github.com/TooTallNate/node-bindings> -(The MIT License) - -Copyright (c) 2012 Nathan Rajlich <nathan@tootallnate.net> - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -'Software'), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - -****************************** - -bip66 -1.1.5 <https://github.com/bitcoinjs/bip66> -The MIT License (MIT) - -Copyright (c) 2015 Daniel Cousens - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - - ****************************** bitcoin-address-validation @@ -8261,7 +8290,7 @@ IN THE SOFTWARE. ****************************** browserslist -4.24.4 <https://github.com/browserslist/browserslist> +4.24.2 <https://github.com/browserslist/browserslist> The MIT License (MIT) Copyright 2014 Andrey Sitnik <andrey@sitnik.ru> and other contributors @@ -8716,7 +8745,7 @@ SOFTWARE. ****************************** call-bind -1.0.8 <https://github.com/ljharb/call-bind> +1.0.7 <https://github.com/ljharb/call-bind> MIT License Copyright (c) 2020 Jordan Harband @@ -8740,60 +8769,6 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -****************************** - -call-bind-apply-helpers -1.0.1 <https://github.com/ljharb/call-bind-apply-helpers> -MIT License - -Copyright (c) 2024 Jordan Harband - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - - -****************************** - -call-bound -1.0.3 <https://github.com/ljharb/call-bound> -MIT License - -Copyright (c) 2024 Jordan Harband - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - - ****************************** caller-callsite @@ -8932,7 +8907,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** caniuse-lite -1.0.30001695 <https://github.com/browserslist/caniuse-lite> +1.0.30001679 <https://github.com/browserslist/caniuse-lite> Attribution 4.0 International ======================================================================= @@ -9384,6 +9359,21 @@ The above copyright notice and this permission notice shall be included in all c THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +****************************** + +chalk +5.4.1 <https://github.com/chalk/chalk> +MIT License + +Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (https://sindresorhus.com) + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + ****************************** character-entities-html4 @@ -10163,26 +10153,26 @@ THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI color-name 1.1.3 <https://github.com/dfcreative/color-name> -The MIT License (MIT) -Copyright (c) 2015 Dmitry Ivanov - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - +The MIT License (MIT) +Copyright (c) 2015 Dmitry Ivanov + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** color-name 1.1.4 <https://github.com/colorjs/color-name> -The MIT License (MIT) -Copyright (c) 2015 Dmitry Ivanov - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - +The MIT License (MIT) +Copyright (c) 2015 Dmitry Ivanov + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** @@ -10290,6 +10280,34 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +****************************** + +commander +12.1.0 <https://github.com/tj/commander.js> +(The MIT License) + +Copyright (c) 2011 TJ Holowaychuk <tj@vision-media.ca> + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +'Software'), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + ****************************** commander @@ -10746,7 +10764,7 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** @consensys/on-ramp-sdk -1.28.7 <> +2.0.5 <> Copyright ConsenSys Software Inc. 2020. All rights reserved. You acknowledge and agree that ConsenSys Software Inc. (“ConsenSys”) (or ConsenSys’s licensors) own all legal right, title and interest in and to the work, software, application, source code, documentation and any other documents in this repository (collectively, the “Program”), including any intellectual property rights which subsist in the Program (whether those rights happen to be registered or not, and wherever in the world those rights may exist), whether in source code or any other form. @@ -10866,87 +10884,6 @@ TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -****************************** - -contentful -10.12.10 <https://github.com/contentful/contentful.js> -The MIT License (MIT) - -Copyright (c) 2016 Contentful - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - - -****************************** - -@contentful/content-source-maps -0.6.1 <https://github.com/contentful/live-preview> -MIT License - -Copyright (c) 2023 Contentful - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - - -****************************** - -contentful-resolve-response -1.8.1 <https://github.com/contentful/contentful-resolve-response> -MIT License - -Copyright (c) 2018 Contentful - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - - ****************************** @contentful/rich-text-html-renderer @@ -11003,116 +10940,89 @@ SOFTWARE. ****************************** -contentful-sdk-core -8.1.2 <https://github.com/contentful/contentful-sdk-core> -The MIT License (MIT) +content-hash +2.5.2 <https://github.com/pldespaigne/content-hash> +ISC License + +Copyright (c) 2018, Pierre-Louis Despaigne + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -Copyright (c) 2016 Contentful +****************************** -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: +content-type +1.0.5 <https://github.com/jshttp/content-type> +(The MIT License) -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. +Copyright (c) 2015 Douglas Christopher Wilson -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +'Software'), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -content-hash -2.5.2 <https://github.com/pldespaigne/content-hash> -ISC License +convert-source-map +2.0.0 <https://github.com/thlorenz/convert-source-map> +Copyright 2013 Thorsten Lorenz. +All rights reserved. -Copyright (c) 2018, Pierre-Louis Despaigne +Permission is hereby granted, free of charge, to any person +obtaining a copy of this software and associated documentation +files (the "Software"), to deal in the Software without +restriction, including without limitation the rights to use, +copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the +Software is furnished to do so, subject to the following +conditions: -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted, provided that the above -copyright notice and this permission notice appear in all copies. +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES +OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT +HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +OTHER DEALINGS IN THE SOFTWARE. -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES -WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR -ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN -ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF -OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ****************************** -content-type -1.0.5 <https://github.com/jshttp/content-type> +cookie +0.7.1 <https://github.com/jshttp/cookie> (The MIT License) -Copyright (c) 2015 Douglas Christopher Wilson - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -'Software'), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - -****************************** - -convert-source-map -2.0.0 <https://github.com/thlorenz/convert-source-map> -Copyright 2013 Thorsten Lorenz. -All rights reserved. - -Permission is hereby granted, free of charge, to any person -obtaining a copy of this software and associated documentation -files (the "Software"), to deal in the Software without -restriction, including without limitation the rights to use, -copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the -Software is furnished to do so, subject to the following -conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -OTHER DEALINGS IN THE SOFTWARE. - - -****************************** - -cookie -0.7.1 <https://github.com/jshttp/cookie> -(The MIT License) - -Copyright (c) 2012-2014 Roman Shtylman <shtylman@gmail.com> -Copyright (c) 2015 Douglas Christopher Wilson <doug@somethingdoug.com> +Copyright (c) 2012-2014 Roman Shtylman <shtylman@gmail.com> +Copyright (c) 2015 Douglas Christopher Wilson <doug@somethingdoug.com> Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the @@ -11175,8 +11085,8 @@ authors: TJ Holowaychuk <tj@learnboost.com> ****************************** core-js-compat -3.40.0 <https://github.com/zloirock/core-js> -Copyright (c) 2014-2025 Denis Pushkarev +3.39.0 <https://github.com/zloirock/core-js> +Copyright (c) 2014-2024 Denis Pushkarev Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal @@ -11759,7 +11669,7 @@ SOFTWARE. ****************************** cross-spawn -6.0.5 <https://github.com/moxystudio/node-cross-spawn> +6.0.6 <https://github.com/moxystudio/node-cross-spawn> The MIT License (MIT) Copyright (c) 2018 Made With MOXY Lda <hello@moxy.studio> @@ -11786,7 +11696,7 @@ THE SOFTWARE. ****************************** cross-spawn -7.0.5 <https://github.com/moxystudio/node-cross-spawn> +7.0.6 <https://github.com/moxystudio/node-cross-spawn> The MIT License (MIT) Copyright (c) 2018 Made With MOXY Lda <hello@moxy.studio> @@ -12527,7 +12437,7 @@ authors: Nathan Rajlich <nathan@tootallnate.net> (http://n8.io/) ****************************** data-view-buffer -1.0.2 <https://github.com/inspect-js/data-view-buffer> +1.0.1 <https://github.com/ljharb/data-view-buffer> MIT License Copyright (c) 2023 Jordan Harband @@ -12554,7 +12464,7 @@ SOFTWARE. ****************************** data-view-byte-length -1.0.2 <https://github.com/inspect-js/data-view-byte-length> +1.0.1 <https://github.com/ljharb/data-view-byte-length> MIT License Copyright (c) 2024 Jordan Harband @@ -12581,7 +12491,7 @@ SOFTWARE. ****************************** data-view-byte-offset -1.0.1 <https://github.com/inspect-js/data-view-byte-offset> +1.0.0 <https://github.com/ljharb/data-view-byte-offset> MIT License Copyright (c) 2024 Jordan Harband @@ -14566,36 +14476,6 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -****************************** - -drbg.js -1.0.1 <https://github.com/cryptocoinjs/drbg.js> -The MIT License (MIT) - -Copyright (c) 2016 Kirill Fomichev - -Parts of this software are based on elliptic -Copyright (c) 2014-2016 Fedor Indutny - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. - - ****************************** dset @@ -14623,33 +14503,6 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -****************************** - -dunder-proto -1.0.1 <https://github.com/es-shims/dunder-proto> -MIT License - -Copyright (c) 2024 ECMAScript Shims - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - - ****************************** duplexer @@ -14829,7 +14682,7 @@ SOFTWARE. ****************************** electron-to-chromium -1.5.83 <https://github.com/kilian/electron-to-chromium> +1.5.55 <https://github.com/kilian/electron-to-chromium> Copyright 2018 Kilian Valkhof Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies. @@ -14840,21 +14693,7 @@ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH RE ****************************** elliptic -6.5.4 <https://github.com/indutny/elliptic> -license: MIT -authors: Fedor Indutny <fedor@indutny.com> - -****************************** - -elliptic -6.5.7 <https://github.com/indutny/elliptic> -license: MIT -authors: Fedor Indutny <fedor@indutny.com> - -****************************** - -elliptic -6.6.0 <https://github.com/indutny/elliptic> +6.6.1 <https://github.com/indutny/elliptic> license: MIT authors: Fedor Indutny <fedor@indutny.com> @@ -15585,25 +15424,25 @@ SOFTWARE. eol 0.9.1 <https://github.com/ryanve/eol> -MIT License - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. +MIT License + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. ****************************** @@ -15959,7 +15798,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** es-abstract -1.23.9 <https://github.com/ljharb/es-abstract> +1.23.3 <https://github.com/ljharb/es-abstract> The MIT License (MIT) Copyright (C) 2015 Jordan Harband @@ -16115,7 +15954,7 @@ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ****************************** es-define-property -1.0.1 <https://github.com/ljharb/es-define-property> +1.0.0 <https://github.com/ljharb/es-define-property> MIT License Copyright (c) 2024 Jordan Harband @@ -17060,7 +16899,7 @@ authors: Yusuke Suzuki <utatane.tea@gmail.com> ****************************** es-set-tostringtag -2.1.0 <https://github.com/es-shims/es-set-tostringtag> +2.0.3 <https://github.com/es-shims/es-set-tostringtag> MIT License Copyright (c) 2022 ECMAScript Shims @@ -17114,7 +16953,7 @@ SOFTWARE. ****************************** es-to-primitive -1.3.0 <https://github.com/ljharb/es-to-primitive> +1.2.1 <https://github.com/ljharb/es-to-primitive> The MIT License (MIT) Copyright (c) 2015 Jordan Harband @@ -17242,32 +17081,6 @@ TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -****************************** - -eth-block-tracker -7.1.0 <https://github.com/MetaMask/eth-block-tracker> -MIT License - -Copyright (c) 2018 MetaMask - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - - ****************************** eth-ens-namehash @@ -17317,7 +17130,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** ethereum-cryptography -2.1.3 <https://github.com/ethereum/js-ethereum-cryptography> +2.2.1 <https://github.com/ethereum/js-ethereum-cryptography> The MIT License (MIT) Copyright (c) 2021 Patricio Palladino, Paul Miller, ethereum-cryptography contributors @@ -17350,7 +17163,7 @@ authors: Dan Finlay ****************************** ethereumjs-abi -0.6.6 <https://github.com/axic/ethereumjs-abi> +0.6.8 <https://github.com/axic/ethereumjs-abi> The MIT License (MIT) Copyright (c) 2015 Alex Beregszaszi @@ -17406,7 +17219,7 @@ SOFTWARE. ****************************** @ethereumjs/common -4.3.0 <https://github.com/ethereumjs/ethereumjs-monorepo> +4.4.0 <https://github.com/ethereumjs/ethereumjs-monorepo> The MIT License (MIT) Copyright (c) 2015 @@ -18571,7 +18384,7 @@ Exhibit B - "Incompatible With Secondary Licenses" Notice ****************************** @ethereumjs/tx -5.3.0 <https://github.com/ethereumjs/ethereumjs-monorepo> +5.4.0 <https://github.com/ethereumjs/ethereumjs-monorepo> Mozilla Public License Version 2.0 ================================== @@ -19329,386 +19142,7 @@ Exhibit B - "Incompatible With Secondary Licenses" Notice ****************************** @ethereumjs/util -9.0.3 <https://github.com/ethereumjs/ethereumjs-monorepo> -Mozilla Public License Version 2.0 -================================== - -1. Definitions --------------- - -1.1. "Contributor" - means each individual or legal entity that creates, contributes to - the creation of, or owns Covered Software. - -1.2. "Contributor Version" - means the combination of the Contributions of others (if any) used - by a Contributor and that particular Contributor's Contribution. - -1.3. "Contribution" - means Covered Software of a particular Contributor. - -1.4. "Covered Software" - means Source Code Form to which the initial Contributor has attached - the notice in Exhibit A, the Executable Form of such Source Code - Form, and Modifications of such Source Code Form, in each case - including portions thereof. - -1.5. "Incompatible With Secondary Licenses" - means - - (a) that the initial Contributor has attached the notice described - in Exhibit B to the Covered Software; or - - (b) that the Covered Software was made available under the terms of - version 1.1 or earlier of the License, but not also under the - terms of a Secondary License. - -1.6. "Executable Form" - means any form of the work other than Source Code Form. - -1.7. "Larger Work" - means a work that combines Covered Software with other material, in - a separate file or files, that is not Covered Software. - -1.8. "License" - means this document. - -1.9. "Licensable" - means having the right to grant, to the maximum extent possible, - whether at the time of the initial grant or subsequently, any and - all of the rights conveyed by this License. - -1.10. "Modifications" - means any of the following: - - (a) any file in Source Code Form that results from an addition to, - deletion from, or modification of the contents of Covered - Software; or - - (b) any new file in Source Code Form that contains any Covered - Software. - -1.11. "Patent Claims" of a Contributor - means any patent claim(s), including without limitation, method, - process, and apparatus claims, in any patent Licensable by such - Contributor that would be infringed, but for the grant of the - License, by the making, using, selling, offering for sale, having - made, import, or transfer of either its Contributions or its - Contributor Version. - -1.12. "Secondary License" - means either the GNU General Public License, Version 2.0, the GNU - Lesser General Public License, Version 2.1, the GNU Affero General - Public License, Version 3.0, or any later versions of those - licenses. - -1.13. "Source Code Form" - means the form of the work preferred for making modifications. - -1.14. "You" (or "Your") - means an individual or a legal entity exercising rights under this - License. For legal entities, "You" includes any entity that - controls, is controlled by, or is under common control with You. For - purposes of this definition, "control" means (a) the power, direct - or indirect, to cause the direction or management of such entity, - whether by contract or otherwise, or (b) ownership of more than - fifty percent (50%) of the outstanding shares or beneficial - ownership of such entity. - -2. License Grants and Conditions --------------------------------- - -2.1. Grants - -Each Contributor hereby grants You a world-wide, royalty-free, -non-exclusive license: - -(a) under intellectual property rights (other than patent or trademark) - Licensable by such Contributor to use, reproduce, make available, - modify, display, perform, distribute, and otherwise exploit its - Contributions, either on an unmodified basis, with Modifications, or - as part of a Larger Work; and - -(b) under Patent Claims of such Contributor to make, use, sell, offer - for sale, have made, import, and otherwise transfer either its - Contributions or its Contributor Version. - -2.2. Effective Date - -The licenses granted in Section 2.1 with respect to any Contribution -become effective for each Contribution on the date the Contributor first -distributes such Contribution. - -2.3. Limitations on Grant Scope - -The licenses granted in this Section 2 are the only rights granted under -this License. No additional rights or licenses will be implied from the -distribution or licensing of Covered Software under this License. -Notwithstanding Section 2.1(b) above, no patent license is granted by a -Contributor: - -(a) for any code that a Contributor has removed from Covered Software; - or - -(b) for infringements caused by: (i) Your and any other third party's - modifications of Covered Software, or (ii) the combination of its - Contributions with other software (except as part of its Contributor - Version); or - -(c) under Patent Claims infringed by Covered Software in the absence of - its Contributions. - -This License does not grant any rights in the trademarks, service marks, -or logos of any Contributor (except as may be necessary to comply with -the notice requirements in Section 3.4). - -2.4. Subsequent Licenses - -No Contributor makes additional grants as a result of Your choice to -distribute the Covered Software under a subsequent version of this -License (see Section 10.2) or under the terms of a Secondary License (if -permitted under the terms of Section 3.3). - -2.5. Representation - -Each Contributor represents that the Contributor believes its -Contributions are its original creation(s) or it has sufficient rights -to grant the rights to its Contributions conveyed by this License. - -2.6. Fair Use - -This License is not intended to limit any rights You have under -applicable copyright doctrines of fair use, fair dealing, or other -equivalents. - -2.7. Conditions - -Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted -in Section 2.1. - -3. Responsibilities -------------------- - -3.1. Distribution of Source Form - -All distribution of Covered Software in Source Code Form, including any -Modifications that You create or to which You contribute, must be under -the terms of this License. You must inform recipients that the Source -Code Form of the Covered Software is governed by the terms of this -License, and how they can obtain a copy of this License. You may not -attempt to alter or restrict the recipients' rights in the Source Code -Form. - -3.2. Distribution of Executable Form - -If You distribute Covered Software in Executable Form then: - -(a) such Covered Software must also be made available in Source Code - Form, as described in Section 3.1, and You must inform recipients of - the Executable Form how they can obtain a copy of such Source Code - Form by reasonable means in a timely manner, at a charge no more - than the cost of distribution to the recipient; and - -(b) You may distribute such Executable Form under the terms of this - License, or sublicense it under different terms, provided that the - license for the Executable Form does not attempt to limit or alter - the recipients' rights in the Source Code Form under this License. - -3.3. Distribution of a Larger Work - -You may create and distribute a Larger Work under terms of Your choice, -provided that You also comply with the requirements of this License for -the Covered Software. If the Larger Work is a combination of Covered -Software with a work governed by one or more Secondary Licenses, and the -Covered Software is not Incompatible With Secondary Licenses, this -License permits You to additionally distribute such Covered Software -under the terms of such Secondary License(s), so that the recipient of -the Larger Work may, at their option, further distribute the Covered -Software under the terms of either this License or such Secondary -License(s). - -3.4. Notices - -You may not remove or alter the substance of any license notices -(including copyright notices, patent notices, disclaimers of warranty, -or limitations of liability) contained within the Source Code Form of -the Covered Software, except that You may alter any license notices to -the extent required to remedy known factual inaccuracies. - -3.5. Application of Additional Terms - -You may choose to offer, and to charge a fee for, warranty, support, -indemnity or liability obligations to one or more recipients of Covered -Software. However, You may do so only on Your own behalf, and not on -behalf of any Contributor. You must make it absolutely clear that any -such warranty, support, indemnity, or liability obligation is offered by -You alone, and You hereby agree to indemnify every Contributor for any -liability incurred by such Contributor as a result of warranty, support, -indemnity or liability terms You offer. You may include additional -disclaimers of warranty and limitations of liability specific to any -jurisdiction. - -4. Inability to Comply Due to Statute or Regulation ---------------------------------------------------- - -If it is impossible for You to comply with any of the terms of this -License with respect to some or all of the Covered Software due to -statute, judicial order, or regulation then You must: (a) comply with -the terms of this License to the maximum extent possible; and (b) -describe the limitations and the code they affect. Such description must -be placed in a text file included with all distributions of the Covered -Software under this License. Except to the extent prohibited by statute -or regulation, such description must be sufficiently detailed for a -recipient of ordinary skill to be able to understand it. - -5. Termination --------------- - -5.1. The rights granted under this License will terminate automatically -if You fail to comply with any of its terms. However, if You become -compliant, then the rights granted under this License from a particular -Contributor are reinstated (a) provisionally, unless and until such -Contributor explicitly and finally terminates Your grants, and (b) on an -ongoing basis, if such Contributor fails to notify You of the -non-compliance by some reasonable means prior to 60 days after You have -come back into compliance. Moreover, Your grants from a particular -Contributor are reinstated on an ongoing basis if such Contributor -notifies You of the non-compliance by some reasonable means, this is the -first time You have received notice of non-compliance with this License -from such Contributor, and You become compliant prior to 30 days after -Your receipt of the notice. - -5.2. If You initiate litigation against any entity by asserting a patent -infringement claim (excluding declaratory judgment actions, -counter-claims, and cross-claims) alleging that a Contributor Version -directly or indirectly infringes any patent, then the rights granted to -You by any and all Contributors for the Covered Software under Section -2.1 of this License shall terminate. - -5.3. In the event of termination under Sections 5.1 or 5.2 above, all -end user license agreements (excluding distributors and resellers) which -have been validly granted by You or Your distributors under this License -prior to termination shall survive termination. - -************************************************************************ -* * -* 6. Disclaimer of Warranty * -* ------------------------- * -* * -* Covered Software is provided under this License on an "as is" * -* basis, without warranty of any kind, either expressed, implied, or * -* statutory, including, without limitation, warranties that the * -* Covered Software is free of defects, merchantable, fit for a * -* particular purpose or non-infringing. The entire risk as to the * -* quality and performance of the Covered Software is with You. * -* Should any Covered Software prove defective in any respect, You * -* (not any Contributor) assume the cost of any necessary servicing, * -* repair, or correction. This disclaimer of warranty constitutes an * -* essential part of this License. No use of any Covered Software is * -* authorized under this License except under this disclaimer. * -* * -************************************************************************ - -************************************************************************ -* * -* 7. Limitation of Liability * -* -------------------------- * -* * -* Under no circumstances and under no legal theory, whether tort * -* (including negligence), contract, or otherwise, shall any * -* Contributor, or anyone who distributes Covered Software as * -* permitted above, be liable to You for any direct, indirect, * -* special, incidental, or consequential damages of any character * -* including, without limitation, damages for lost profits, loss of * -* goodwill, work stoppage, computer failure or malfunction, or any * -* and all other commercial damages or losses, even if such party * -* shall have been informed of the possibility of such damages. This * -* limitation of liability shall not apply to liability for death or * -* personal injury resulting from such party's negligence to the * -* extent applicable law prohibits such limitation. Some * -* jurisdictions do not allow the exclusion or limitation of * -* incidental or consequential damages, so this exclusion and * -* limitation may not apply to You. * -* * -************************************************************************ - -8. Litigation -------------- - -Any litigation relating to this License may be brought only in the -courts of a jurisdiction where the defendant maintains its principal -place of business and such litigation shall be governed by laws of that -jurisdiction, without reference to its conflict-of-law provisions. -Nothing in this Section shall prevent a party's ability to bring -cross-claims or counter-claims. - -9. Miscellaneous ----------------- - -This License represents the complete agreement concerning the subject -matter hereof. If any provision of this License is held to be -unenforceable, such provision shall be reformed only to the extent -necessary to make it enforceable. Any law or regulation which provides -that the language of a contract shall be construed against the drafter -shall not be used to construe this License against a Contributor. - -10. Versions of the License ---------------------------- - -10.1. New Versions - -Mozilla Foundation is the license steward. Except as provided in Section -10.3, no one other than the license steward has the right to modify or -publish new versions of this License. Each version will be given a -distinguishing version number. - -10.2. Effect of New Versions - -You may distribute the Covered Software under the terms of the version -of the License under which You originally received the Covered Software, -or under the terms of any subsequent version published by the license -steward. - -10.3. Modified Versions - -If you create software not governed by this License, and you want to -create a new license for such software, you may create and use a -modified version of this License if you rename the license and remove -any references to the name of the license steward (except to note that -such modified license differs from this License). - -10.4. Distributing Source Code Form that is Incompatible With Secondary -Licenses - -If You choose to distribute Source Code Form that is Incompatible With -Secondary Licenses under the terms of this version of the License, the -notice described in Exhibit B of this License must be attached. - -Exhibit A - Source Code Form License Notice -------------------------------------------- - - This Source Code Form is subject to the terms of the Mozilla Public - License, v. 2.0. If a copy of the MPL was not distributed with this - file, You can obtain one at http://mozilla.org/MPL/2.0/. - -If it is not possible or desirable to put the notice in a particular -file, then You may include the notice in a location (such as a LICENSE -file in a relevant directory) where a recipient would be likely to look -for such a notice. - -You may add additional accurate notices of copyright ownership. - -Exhibit B - "Incompatible With Secondary Licenses" Notice ---------------------------------------------------------- - - This Source Code Form is "Incompatible With Secondary Licenses", as - defined by the Mozilla Public License, v. 2.0. - - -****************************** - -ethereumjs-util -5.2.1 <https://github.com/ethereumjs/ethereumjs-util> +9.1.0 <https://github.com/ethereumjs/ethereumjs-monorepo> Mozilla Public License Version 2.0 ================================== @@ -20087,7 +19521,7 @@ Exhibit B - "Incompatible With Secondary Licenses" Notice ****************************** ethereumjs-util -6.1.0 <https://github.com/ethereumjs/ethereumjs-util> +6.2.1 <https://github.com/ethereumjs/ethereumjs-util> Mozilla Public License Version 2.0 ================================== @@ -21779,96 +21213,15 @@ THE SOFTWARE. ****************************** -ethjs-ens -2.0.1 <https://github.com/flyswatter/ethjs-ens> -license: ISC -authors: Dan Finlay - -****************************** - -ethjs-filter -0.1.5 <https://github.com/ethjs/ethjs-filter> -The MIT License - -Copyright (c) 2016 Nick Dodson. nickdodson.com - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. - - -****************************** - -ethjs-format -0.2.2 <https://github.com/ethjs/ethjs-format> -The MIT License - -Copyright (c) 2016 Nick Dodson. nickdodson.com - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. - - -****************************** - -ethjs-query -0.2.9 <https://github.com/ethjs/ethjs-query> -The MIT License - -Copyright (c) 2016 Nick Dodson. nickdodson.com - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. - - -****************************** - -ethjs-rpc -0.1.5 <https://github.com/ethjs/ethjs-rpc> +ethjs-ens +2.0.1 <https://github.com/flyswatter/ethjs-ens> +license: ISC +authors: Dan Finlay + +****************************** + +ethjs-filter +0.1.5 <https://github.com/ethjs/ethjs-filter> The MIT License Copyright (c) 2016 Nick Dodson. nickdodson.com @@ -21894,8 +21247,8 @@ THE SOFTWARE. ****************************** -ethjs-schema -0.1.5 <https://github.com/ethjs/ethjs-schema> +ethjs-format +0.2.2 <https://github.com/ethjs/ethjs-format> The MIT License Copyright (c) 2016 Nick Dodson. nickdodson.com @@ -21921,8 +21274,8 @@ THE SOFTWARE. ****************************** -ethjs-schema -0.2.1 <https://github.com/ethjs/ethjs-schema> +ethjs-query +0.2.9 <https://github.com/ethjs/ethjs-query> The MIT License Copyright (c) 2016 Nick Dodson. nickdodson.com @@ -21948,8 +21301,8 @@ THE SOFTWARE. ****************************** -ethjs-util -0.1.3 <https://github.com/ethjs/ethjs-util> +ethjs-rpc +0.1.5 <https://github.com/ethjs/ethjs-rpc> The MIT License Copyright (c) 2016 Nick Dodson. nickdodson.com @@ -21975,8 +21328,8 @@ THE SOFTWARE. ****************************** -ethjs-util -0.1.6 <https://github.com/ethjs/ethjs-util> +ethjs-schema +0.1.5 <https://github.com/ethjs/ethjs-schema> The MIT License Copyright (c) 2016 Nick Dodson. nickdodson.com @@ -22002,64 +21355,65 @@ THE SOFTWARE. ****************************** -eth-method-registry -4.0.0 <https://github.com/MetaMask/eth-method-registry> -ISC License - -Copyright (c) 2020 MetaMask - -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted, provided that the above -copyright notice and this permission notice appear in all copies. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES -WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR -ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN -ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF -OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - +ethjs-schema +0.2.1 <https://github.com/ethjs/ethjs-schema> +The MIT License -****************************** +Copyright (c) 2016 Nick Dodson. nickdodson.com -eth-phishing-detect -1.2.0 <https://github.com/MetaMask/eth-phishing-detect> -# DON'T BE A DICK PUBLIC LICENSE +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: -> Version 1.1, December 2016 +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. -> Copyright (C) 2018 kumavis +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. -Everyone is permitted to copy and distribute verbatim or modified -copies of this license document. -> DON'T BE A DICK PUBLIC LICENSE -> TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION +****************************** -1. Do whatever you like with the original work, just don't be a dick. +ethjs-util +0.1.3 <https://github.com/ethjs/ethjs-util> +The MIT License - Being a dick includes - but is not limited to - the following instances: +Copyright (c) 2016 Nick Dodson. nickdodson.com - 1a. Outright copyright infringement - Don't just copy this and change the name. - 1b. Selling the unmodified original with no work done what-so-ever, that's REALLY being a dick. - 1c. Modifying the original work to contain hidden harmful content. That would make you a PROPER dick. +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: -2. If you become rich through modifications, related works/services, or supporting the original work, -share the love. Only a dick would make loads off this work and not buy the original work's -creator(s) a pint. +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. -3. Code is provided with no warranty. Using somebody else's code and bitching when it goes wrong makes -you a DONKEY dick. Fix the problem yourself. A non-dick would submit the fix back. +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. ****************************** -eth-rpc-errors -4.0.3 <https://github.com/MetaMask/eth-rpc-errors> -MIT License +ethjs-util +0.1.6 <https://github.com/ethjs/ethjs-util> +The MIT License -Copyright (c) 2019 MetaMask +Copyright (c) 2016 Nick Dodson. nickdodson.com Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal @@ -22068,16 +21422,37 @@ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + + +****************************** + +eth-method-registry +4.0.0 <https://github.com/MetaMask/eth-method-registry> +ISC License + +Copyright (c) 2020 MetaMask + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ****************************** @@ -22513,6 +21888,34 @@ SOFTWARE. +****************************** + +@expo/config +8.3.1 <https://github.com/expo/expo> +The MIT License (MIT) + +Copyright (c) 2015-present 650 Industries, Inc. (aka Expo) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + + ****************************** @expo/config-plugins @@ -22541,6 +21944,34 @@ SOFTWARE. +****************************** + +@expo/config-plugins +7.5.0 <https://github.com/expo/expo> +The MIT License (MIT) + +Copyright (c) 2015-present 650 Industries, Inc. (aka Expo) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + + ****************************** @expo/config-types @@ -22569,6 +22000,34 @@ SOFTWARE. +****************************** + +@expo/config-types +50.0.1 <https://github.com/expo/expo> +The MIT License (MIT) + +Copyright (c) 2020-present 650 Industries, Inc. (aka Expo) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + + ****************************** expo-constants @@ -22586,35 +22045,28 @@ authors: Dave Wasmer ****************************** expo-dev-client -2.4.13 <https://github.com/expo/expo> +3.1.0 <https://github.com/expo/expo> license: MIT authors: 650 Industries, Inc. ****************************** expo-dev-launcher -2.4.15 <https://github.com/expo/expo> +3.1.0 <https://github.com/expo/expo> license: MIT authors: 650 Industries, Inc. ****************************** expo-dev-menu -3.2.3 <https://github.com/expo/expo> -license: MIT -authors: 650 Industries, Inc. - -****************************** - -expo-dev-menu -3.2.4 <https://github.com/expo/expo> +4.1.0 <https://github.com/expo/expo> license: MIT authors: 650 Industries, Inc. ****************************** expo-dev-menu-interface -1.3.0 <https://github.com/expo/expo> +1.4.0 <https://github.com/expo/expo> license: MIT authors: 650 Industries, Inc. @@ -22679,6 +22131,34 @@ expo-file-system license: MIT authors: 650 Industries, Inc. +****************************** + +@expo/fingerprint +0.2.0 <https://github.com/expo/expo> +The MIT License (MIT) + +Copyright (c) 2015-present 650 Industries, Inc. (aka Expo) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + + ****************************** expo-font @@ -22772,7 +22252,7 @@ SOFTWARE. ****************************** expo-json-utils -0.7.1 <https://github.com/expo/expo> +0.9.0 <https://github.com/expo/expo> license: MIT authors: 650 Industries, Inc. @@ -22786,7 +22266,7 @@ authors: 650 Industries, Inc. ****************************** expo-manifests -0.7.2 <https://github.com/expo/expo> +0.9.0 <https://github.com/expo/expo> license: MIT authors: 650 Industries, Inc. @@ -22862,7 +22342,7 @@ SOFTWARE. ****************************** @expo/osascript -2.1.5 <https://github.com/expo/expo> +2.1.3 <https://github.com/expo/expo> The MIT License (MIT) Copyright (c) 2015-present 650 Industries, Inc. (aka Expo) @@ -23043,7 +22523,7 @@ SOFTWARE. ****************************** expo-updates-interface -0.10.1 <https://github.com/expo/expo> +0.12.0 <https://github.com/expo/expo> license: MIT authors: 650 Industries, Inc. @@ -23078,14 +22558,14 @@ SOFTWARE. ****************************** @expo/xcpretty -4.3.2 <https://github.com/expo/expo-cli> +4.3.1 <https://github.com/expo/expo-cli> license: BSD-3-Clause authors: Evan Bacon <bacon@expo.io> (https://github.com/evanbacon) ****************************** express -4.21.1 <https://github.com/expressjs/express> +4.21.2 <https://github.com/expressjs/express> (The MIT License) Copyright (c) 2009-2014 TJ Holowaychuk <tj@vision-media.ca> @@ -23161,33 +22641,6 @@ fast-base64-decode license: MIT authors: undefined -****************************** - -fast-copy -2.1.7 <https://github.com/planttheidea/fast-copy> -MIT License - -Copyright (c) 2018 Tony Quetano - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - - ****************************** fast-deep-equal @@ -23271,7 +22724,7 @@ THE SOFTWARE. ****************************** fast-glob -3.3.3 <https://github.com/mrmlnc/fast-glob> +3.3.2 <https://github.com/mrmlnc/fast-glob> The MIT License (MIT) Copyright (c) Denis Malinochkin @@ -23374,37 +22827,6 @@ IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -****************************** - -fast-levenshtein -2.0.6 <https://github.com/hiddentao/fast-levenshtein> -(MIT License) - -Copyright (c) 2013 [Ramesh Nair](http://www.hiddentao.com/) - -Permission is hereby granted, free of charge, to any person -obtaining a copy of this software and associated documentation -files (the "Software"), to deal in the Software without -restriction, including without limitation the rights to use, -copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the -Software is furnished to do so, subject to the following -conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -OTHER DEALINGS IN THE SOFTWARE. - - - ****************************** fastq @@ -23770,37 +23192,37 @@ specific language governing permissions and limitations under the License. fbemitter 3.0.0 <https://github.com/facebook/emitter> -BSD License - -For emitter software - -Copyright (c) 2013-present, Facebook, Inc. -All rights reserved. - -Redistribution and use in source and binary forms, with or without modification, -are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - - * Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - - * Neither the name Facebook nor the names of its contributors may be used to - endorse or promote products derived from this software without specific - prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR -ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +BSD License + +For emitter software + +Copyright (c) 2013-present, Facebook, Inc. +All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + + * Neither the name Facebook nor the names of its contributors may be used to + endorse or promote products derived from this software without specific + prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ****************************** @@ -23918,32 +23340,6 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -****************************** - -file-uri-to-path -1.0.0 <https://github.com/TooTallNate/file-uri-to-path> -Copyright (c) 2014 Nathan Rajlich <nathan@tootallnate.net> - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -'Software'), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - ****************************** fill-range @@ -24358,21 +23754,21 @@ authors: Firebase <firebase-support@google.com> (https://firebase.google.com/) ****************************** firebase -10.12.3 <https://github.com/firebase/firebase-js-sdk> +11.3.1 <https://github.com/firebase/firebase-js-sdk> license: Apache-2.0 authors: Firebase <firebase-support@google.com> (https://firebase.google.com/) ****************************** @firebase/analytics -0.10.4 <https://github.com/firebase/firebase-js-sdk> +0.10.11 <https://github.com/firebase/firebase-js-sdk> license: Apache-2.0 authors: Firebase <firebase-support@google.com> (https://firebase.google.com/) ****************************** @firebase/analytics -0.10.5 <https://github.com/firebase/firebase-js-sdk> +0.10.4 <https://github.com/firebase/firebase-js-sdk> license: Apache-2.0 authors: Firebase <firebase-support@google.com> (https://firebase.google.com/) @@ -24386,7 +23782,7 @@ authors: Firebase <firebase-support@google.com> (https://firebase.google.com/) ****************************** @firebase/analytics-compat -0.2.11 <https://github.com/firebase/firebase-js-sdk> +0.2.17 <https://github.com/firebase/firebase-js-sdk> license: Apache-2.0 authors: Firebase <firebase-support@google.com> (https://firebase.google.com/) @@ -24399,6 +23795,13 @@ authors: Firebase <firebase-support@google.com> (https://firebase.google.com/) ****************************** +@firebase/analytics-types +0.8.3 <https://github.com/firebase/firebase-js-sdk> +license: Apache-2.0 +authors: Firebase <firebase-support@google.com> (https://firebase.google.com/) + +****************************** + @firebase/app 0.10.5 <https://github.com/firebase/firebase-js-sdk> license: Apache-2.0 @@ -24407,21 +23810,21 @@ authors: Firebase <firebase-support@google.com> (https://firebase.google.com/) ****************************** @firebase/app -0.10.6 <https://github.com/firebase/firebase-js-sdk> +0.11.1 <https://github.com/firebase/firebase-js-sdk> license: Apache-2.0 authors: Firebase <firebase-support@google.com> (https://firebase.google.com/) ****************************** @firebase/app-check -0.8.4 <https://github.com/firebase/firebase-js-sdk> +0.8.11 <https://github.com/firebase/firebase-js-sdk> license: Apache-2.0 authors: Firebase <firebase-support@google.com> (https://firebase.google.com/) ****************************** @firebase/app-check -0.8.5 <https://github.com/firebase/firebase-js-sdk> +0.8.4 <https://github.com/firebase/firebase-js-sdk> license: Apache-2.0 authors: Firebase <firebase-support@google.com> (https://firebase.google.com/) @@ -24435,7 +23838,7 @@ authors: Firebase <firebase-support@google.com> (https://firebase.google.com/) ****************************** @firebase/app-check-compat -0.3.12 <https://github.com/firebase/firebase-js-sdk> +0.3.18 <https://github.com/firebase/firebase-js-sdk> license: Apache-2.0 authors: Firebase <firebase-support@google.com> (https://firebase.google.com/) @@ -24448,6 +23851,13 @@ authors: Firebase <firebase-support@google.com> (https://firebase.google.com/) ****************************** +@firebase/app-check-interop-types +0.3.3 <https://github.com/firebase/firebase-js-sdk> +license: Apache-2.0 +authors: Firebase <firebase-support@google.com> (https://firebase.google.com/) + +****************************** + @firebase/app-check-types 0.5.2 <https://github.com/firebase/firebase-js-sdk> license: Apache-2.0 @@ -24455,6 +23865,13 @@ authors: Firebase <firebase-support@google.com> (https://firebase.google.com/) ****************************** +@firebase/app-check-types +0.5.3 <https://github.com/firebase/firebase-js-sdk> +license: Apache-2.0 +authors: Firebase <firebase-support@google.com> (https://firebase.google.com/) + +****************************** + @firebase/app-compat 0.2.35 <https://github.com/firebase/firebase-js-sdk> license: Apache-2.0 @@ -24463,7 +23880,7 @@ authors: Firebase <firebase-support@google.com> (https://firebase.google.com/) ****************************** @firebase/app-compat -0.2.36 <https://github.com/firebase/firebase-js-sdk> +0.2.50 <https://github.com/firebase/firebase-js-sdk> license: Apache-2.0 authors: Firebase <firebase-support@google.com> (https://firebase.google.com/) @@ -24476,6 +23893,13 @@ authors: Firebase <firebase-support@google.com> (https://firebase.google.com/) ****************************** +@firebase/app-types +0.9.3 <https://github.com/firebase/firebase-js-sdk> +license: Apache-2.0 +authors: Firebase <firebase-support@google.com> (https://firebase.google.com/) + +****************************** + @firebase/auth 1.7.4 <https://github.com/firebase/firebase-js-sdk> license: Apache-2.0 @@ -24484,14 +23908,14 @@ authors: Firebase <firebase-support@google.com> (https://firebase.google.com/) ****************************** @firebase/auth -1.7.5 <https://github.com/firebase/firebase-js-sdk> +1.9.0 <https://github.com/firebase/firebase-js-sdk> license: Apache-2.0 authors: Firebase <firebase-support@google.com> (https://firebase.google.com/) ****************************** @firebase/auth-compat -0.5.10 <https://github.com/firebase/firebase-js-sdk> +0.5.18 <https://github.com/firebase/firebase-js-sdk> license: Apache-2.0 authors: Firebase <firebase-support@google.com> (https://firebase.google.com/) @@ -24511,6 +23935,13 @@ authors: Firebase <firebase-support@google.com> (https://firebase.google.com/) ****************************** +@firebase/auth-interop-types +0.2.4 <https://github.com/firebase/firebase-js-sdk> +license: Apache-2.0 +authors: Firebase <firebase-support@google.com> (https://firebase.google.com/) + +****************************** + @firebase/auth-types 0.12.2 <https://github.com/firebase/firebase-js-sdk> license: Apache-2.0 @@ -24518,29 +23949,36 @@ authors: Firebase <firebase-support@google.com> (https://firebase.google.com/) ****************************** +@firebase/auth-types +0.13.0 <https://github.com/firebase/firebase-js-sdk> +license: Apache-2.0 +authors: Firebase <firebase-support@google.com> (https://firebase.google.com/) + +****************************** + @firebase/component -0.6.7 <https://github.com/firebase/firebase-js-sdk> +0.6.12 <https://github.com/firebase/firebase-js-sdk> license: Apache-2.0 authors: Firebase <firebase-support@google.com> (https://firebase.google.com/) ****************************** @firebase/component -0.6.8 <https://github.com/firebase/firebase-js-sdk> +0.6.7 <https://github.com/firebase/firebase-js-sdk> license: Apache-2.0 authors: Firebase <firebase-support@google.com> (https://firebase.google.com/) ****************************** @firebase/database -1.0.5 <https://github.com/firebase/firebase-js-sdk> +1.0.12 <https://github.com/firebase/firebase-js-sdk> license: Apache-2.0 authors: Firebase <firebase-support@google.com> (https://firebase.google.com/) ****************************** @firebase/database -1.0.6 <https://github.com/firebase/firebase-js-sdk> +1.0.5 <https://github.com/firebase/firebase-js-sdk> license: Apache-2.0 authors: Firebase <firebase-support@google.com> (https://firebase.google.com/) @@ -24554,7 +23992,7 @@ authors: Firebase <firebase-support@google.com> (https://firebase.google.com/) ****************************** @firebase/database-compat -1.0.6 <https://github.com/firebase/firebase-js-sdk> +2.0.3 <https://github.com/firebase/firebase-js-sdk> license: Apache-2.0 authors: Firebase <firebase-support@google.com> (https://firebase.google.com/) @@ -24568,7 +24006,14 @@ authors: Firebase <firebase-support@google.com> (https://firebase.google.com/) ****************************** @firebase/database-types -1.0.4 <https://github.com/firebase/firebase-js-sdk> +1.0.8 <https://github.com/firebase/firebase-js-sdk> +license: Apache-2.0 +authors: Firebase <firebase-support@google.com> (https://firebase.google.com/) + +****************************** + +@firebase/data-connect +0.3.0 <https://github.com/firebase/firebase-js-sdk> license: Apache-2.0 authors: Firebase <firebase-support@google.com> (https://firebase.google.com/) @@ -24582,7 +24027,7 @@ authors: Firebase <firebase-support@google.com> (https://firebase.google.com/) ****************************** @firebase/firestore -4.6.4 <https://github.com/firebase/firebase-js-sdk> +4.7.8 <https://github.com/firebase/firebase-js-sdk> license: Apache-2.0 authors: Firebase <firebase-support@google.com> (https://firebase.google.com/) @@ -24596,7 +24041,7 @@ authors: Firebase <firebase-support@google.com> (https://firebase.google.com/) ****************************** @firebase/firestore-compat -0.3.33 <https://github.com/firebase/firebase-js-sdk> +0.3.43 <https://github.com/firebase/firebase-js-sdk> license: Apache-2.0 authors: Firebase <firebase-support@google.com> (https://firebase.google.com/) @@ -24609,6 +24054,13 @@ authors: Firebase <firebase-support@google.com> (https://firebase.google.com/) ****************************** +@firebase/firestore-types +3.0.3 <https://github.com/firebase/firebase-js-sdk> +license: Apache-2.0 +authors: Firebase <firebase-support@google.com> (https://firebase.google.com/) + +****************************** + @firebase/functions 0.11.5 <https://github.com/firebase/firebase-js-sdk> license: Apache-2.0 @@ -24617,7 +24069,7 @@ authors: Firebase <firebase-support@google.com> (https://firebase.google.com/) ****************************** @firebase/functions -0.11.6 <https://github.com/firebase/firebase-js-sdk> +0.12.2 <https://github.com/firebase/firebase-js-sdk> license: Apache-2.0 authors: Firebase <firebase-support@google.com> (https://firebase.google.com/) @@ -24631,7 +24083,7 @@ authors: Firebase <firebase-support@google.com> (https://firebase.google.com/) ****************************** @firebase/functions-compat -0.3.12 <https://github.com/firebase/firebase-js-sdk> +0.3.19 <https://github.com/firebase/firebase-js-sdk> license: Apache-2.0 authors: Firebase <firebase-support@google.com> (https://firebase.google.com/) @@ -24644,29 +24096,36 @@ authors: Firebase <firebase-support@google.com> (https://firebase.google.com/) ****************************** +@firebase/functions-types +0.6.3 <https://github.com/firebase/firebase-js-sdk> +license: Apache-2.0 +authors: Firebase <firebase-support@google.com> (https://firebase.google.com/) + +****************************** + @firebase/installations -0.6.7 <https://github.com/firebase/firebase-js-sdk> +0.6.12 <https://github.com/firebase/firebase-js-sdk> license: Apache-2.0 authors: Firebase <firebase-support@google.com> (https://firebase.google.com/) ****************************** @firebase/installations -0.6.8 <https://github.com/firebase/firebase-js-sdk> +0.6.7 <https://github.com/firebase/firebase-js-sdk> license: Apache-2.0 authors: Firebase <firebase-support@google.com> (https://firebase.google.com/) ****************************** @firebase/installations-compat -0.2.7 <https://github.com/firebase/firebase-js-sdk> +0.2.12 <https://github.com/firebase/firebase-js-sdk> license: Apache-2.0 authors: Firebase <firebase-support@google.com> (https://firebase.google.com/) ****************************** @firebase/installations-compat -0.2.8 <https://github.com/firebase/firebase-js-sdk> +0.2.7 <https://github.com/firebase/firebase-js-sdk> license: Apache-2.0 authors: Firebase <firebase-support@google.com> (https://firebase.google.com/) @@ -24679,6 +24138,13 @@ authors: Firebase <firebase-support@google.com> (https://firebase.google.com/) ****************************** +@firebase/installations-types +0.5.3 <https://github.com/firebase/firebase-js-sdk> +license: Apache-2.0 +authors: Firebase <firebase-support@google.com> (https://firebase.google.com/) + +****************************** + @firebase/logger 0.4.2 <https://github.com/firebase/firebase-js-sdk> license: Apache-2.0 @@ -24686,8 +24152,15 @@ authors: Firebase <firebase-support@google.com> (https://firebase.google.com/) ****************************** +@firebase/logger +0.4.4 <https://github.com/firebase/firebase-js-sdk> +license: Apache-2.0 +authors: Firebase <firebase-support@google.com> (https://firebase.google.com/) + +****************************** + @firebase/messaging -0.12.10 <https://github.com/firebase/firebase-js-sdk> +0.12.16 <https://github.com/firebase/firebase-js-sdk> license: Apache-2.0 authors: Firebase <firebase-support@google.com> (https://firebase.google.com/) @@ -24701,7 +24174,7 @@ authors: Firebase <firebase-support@google.com> (https://firebase.google.com/) ****************************** @firebase/messaging-compat -0.2.10 <https://github.com/firebase/firebase-js-sdk> +0.2.16 <https://github.com/firebase/firebase-js-sdk> license: Apache-2.0 authors: Firebase <firebase-support@google.com> (https://firebase.google.com/) @@ -24721,6 +24194,13 @@ authors: Firebase <firebase-support@google.com> (https://firebase.google.com/) ****************************** +@firebase/messaging-interop-types +0.2.3 <https://github.com/firebase/firebase-js-sdk> +license: Apache-2.0 +authors: Firebase <firebase-support@google.com> (https://firebase.google.com/) + +****************************** + @firebase/performance 0.6.7 <https://github.com/firebase/firebase-js-sdk> license: Apache-2.0 @@ -24729,21 +24209,21 @@ authors: Firebase <firebase-support@google.com> (https://firebase.google.com/) ****************************** @firebase/performance -0.6.8 <https://github.com/firebase/firebase-js-sdk> +0.7.0 <https://github.com/firebase/firebase-js-sdk> license: Apache-2.0 authors: Firebase <firebase-support@google.com> (https://firebase.google.com/) ****************************** @firebase/performance-compat -0.2.7 <https://github.com/firebase/firebase-js-sdk> +0.2.13 <https://github.com/firebase/firebase-js-sdk> license: Apache-2.0 authors: Firebase <firebase-support@google.com> (https://firebase.google.com/) ****************************** @firebase/performance-compat -0.2.8 <https://github.com/firebase/firebase-js-sdk> +0.2.7 <https://github.com/firebase/firebase-js-sdk> license: Apache-2.0 authors: Firebase <firebase-support@google.com> (https://firebase.google.com/) @@ -24756,6 +24236,13 @@ authors: Firebase <firebase-support@google.com> (https://firebase.google.com/) ****************************** +@firebase/performance-types +0.2.3 <https://github.com/firebase/firebase-js-sdk> +license: Apache-2.0 +authors: Firebase <firebase-support@google.com> (https://firebase.google.com/) + +****************************** + @firebase/remote-config 0.4.7 <https://github.com/firebase/firebase-js-sdk> license: Apache-2.0 @@ -24764,21 +24251,21 @@ authors: Firebase <firebase-support@google.com> (https://firebase.google.com/) ****************************** @firebase/remote-config -0.4.8 <https://github.com/firebase/firebase-js-sdk> +0.5.0 <https://github.com/firebase/firebase-js-sdk> license: Apache-2.0 authors: Firebase <firebase-support@google.com> (https://firebase.google.com/) ****************************** @firebase/remote-config-compat -0.2.7 <https://github.com/firebase/firebase-js-sdk> +0.2.12 <https://github.com/firebase/firebase-js-sdk> license: Apache-2.0 authors: Firebase <firebase-support@google.com> (https://firebase.google.com/) ****************************** @firebase/remote-config-compat -0.2.8 <https://github.com/firebase/firebase-js-sdk> +0.2.7 <https://github.com/firebase/firebase-js-sdk> license: Apache-2.0 authors: Firebase <firebase-support@google.com> (https://firebase.google.com/) @@ -24791,6 +24278,13 @@ authors: Firebase <firebase-support@google.com> (https://firebase.google.com/) ****************************** +@firebase/remote-config-types +0.4.0 <https://github.com/firebase/firebase-js-sdk> +license: Apache-2.0 +authors: Firebase <firebase-support@google.com> (https://firebase.google.com/) + +****************************** + @firebase/storage 0.12.5 <https://github.com/firebase/firebase-js-sdk> license: Apache-2.0 @@ -24799,21 +24293,21 @@ authors: Firebase <firebase-support@google.com> (https://firebase.google.com/) ****************************** @firebase/storage -0.12.6 <https://github.com/firebase/firebase-js-sdk> +0.13.6 <https://github.com/firebase/firebase-js-sdk> license: Apache-2.0 authors: Firebase <firebase-support@google.com> (https://firebase.google.com/) ****************************** @firebase/storage-compat -0.3.8 <https://github.com/firebase/firebase-js-sdk> +0.3.16 <https://github.com/firebase/firebase-js-sdk> license: Apache-2.0 authors: Firebase <firebase-support@google.com> (https://firebase.google.com/) ****************************** @firebase/storage-compat -0.3.9 <https://github.com/firebase/firebase-js-sdk> +0.3.8 <https://github.com/firebase/firebase-js-sdk> license: Apache-2.0 authors: Firebase <firebase-support@google.com> (https://firebase.google.com/) @@ -24826,29 +24320,36 @@ authors: Firebase <firebase-support@google.com> (https://firebase.google.com/) ****************************** +@firebase/storage-types +0.8.3 <https://github.com/firebase/firebase-js-sdk> +license: Apache-2.0 +authors: Firebase <firebase-support@google.com> (https://firebase.google.com/) + +****************************** + @firebase/util -1.9.6 <https://github.com/firebase/firebase-js-sdk> +1.10.3 <https://github.com/firebase/firebase-js-sdk> license: Apache-2.0 authors: Firebase <firebase-support@google.com> (https://firebase.google.com/) ****************************** @firebase/util -1.9.7 <https://github.com/firebase/firebase-js-sdk> +1.9.6 <https://github.com/firebase/firebase-js-sdk> license: Apache-2.0 authors: Firebase <firebase-support@google.com> (https://firebase.google.com/) ****************************** -@firebase/vertexai-preview -0.0.2 <https://github.com/firebase/firebase-js-sdk> +@firebase/vertexai +1.0.4 <https://github.com/firebase/firebase-js-sdk> license: Apache-2.0 authors: Firebase <firebase-support@google.com> (https://firebase.google.com/) ****************************** @firebase/vertexai-preview -0.0.3 <https://github.com/firebase/firebase-js-sdk> +0.0.2 <https://github.com/firebase/firebase-js-sdk> license: Apache-2.0 authors: Firebase <firebase-support@google.com> (https://firebase.google.com/) @@ -24862,7 +24363,7 @@ authors: Firebase <firebase-support@google.com> (https://firebase.google.com/) ****************************** @firebase/webchannel-wrapper -1.0.1 <https://github.com/firebase/firebase-js-sdk> +1.0.3 <https://github.com/firebase/firebase-js-sdk> license: Apache-2.0 authors: Firebase <firebase-support@google.com> (https://firebase.google.com/) @@ -24928,27 +24429,27 @@ IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. fontfaceobserver 2.3.0 <https://github.com/bramstein/fontfaceobserver> -Copyright (c) 2014 - Bram Stein - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - -1. Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. -2. Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR -ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND -ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +Copyright (c) 2014 - Bram Stein + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ****************************** @@ -25298,34 +24799,6 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -****************************** - -fsevents -2.3.3 <https://github.com/fsevents/fsevents> -MIT License ------------ - -Copyright (C) 2010-2020 by Philipp Dunkel, Ben Noordhuis, Elan Shankar, Paul Miller - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. - - ****************************** fs-extra @@ -25514,7 +24987,7 @@ THE SOFTWARE. ****************************** function.prototype.name -1.1.8 <https://github.com/es-shims/Function.prototype.name> +1.1.6 <https://github.com/es-shims/Function.prototype.name> The MIT License (MIT) Copyright (c) 2016 Jordan Harband @@ -26082,38 +25555,11 @@ SOFTWARE. ****************************** -get-intrinsic -1.2.7 <https://github.com/ljharb/get-intrinsic> -MIT License - -Copyright (c) 2020 Jordan Harband - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - - -****************************** - -get-npm-tarball-url -2.1.0 <https://github.com/pnpm/get-npm-tarball-url> +get-intrinsic +1.2.4 <https://github.com/ljharb/get-intrinsic> MIT License -Copyright (c) 2017-2023 Zoltan Kochan <z@kochan.io> +Copyright (c) 2020 Jordan Harband Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal @@ -26136,26 +25582,11 @@ SOFTWARE. ****************************** -get-port -3.2.0 <https://github.com/sindresorhus/get-port> -MIT License - -Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com) - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - -****************************** - -get-port-please -3.1.1 <https://github.com/unjs/get-port-please> +get-npm-tarball-url +2.1.0 <https://github.com/pnpm/get-npm-tarball-url> MIT License -Copyright (c) Pooya Parsa <pooya@pi0.io> +Copyright (c) 2017-2023 Zoltan Kochan <z@kochan.io> Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal @@ -26178,11 +25609,26 @@ SOFTWARE. ****************************** -get-proto -1.0.1 <https://github.com/ljharb/get-proto> +get-port +3.2.0 <https://github.com/sindresorhus/get-port> +MIT License + +Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com) + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +****************************** + +get-port-please +3.1.1 <https://github.com/unjs/get-port-please> MIT License -Copyright (c) 2025 Jordan Harband +Copyright (c) Pooya Parsa <pooya@pi0.io> Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal @@ -26236,7 +25682,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI ****************************** get-symbol-description -1.1.0 <https://github.com/inspect-js/get-symbol-description> +1.0.2 <https://github.com/inspect-js/get-symbol-description> MIT License Copyright (c) 2021 Inspect JS @@ -26489,7 +25935,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI ****************************** globalthis -1.0.4 <https://github.com/ljharb/System.global> +1.0.3 <https://github.com/ljharb/System.global> The MIT License (MIT) Copyright (c) 2016 Jordan Harband @@ -26552,7 +25998,7 @@ IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ****************************** gopd -1.2.0 <https://github.com/ljharb/gopd> +1.0.1 <https://github.com/ljharb/gopd> MIT License Copyright (c) 2022 Jordan Harband @@ -27423,7 +26869,7 @@ SOFTWARE. ****************************** has-proto -1.2.0 <https://github.com/inspect-js/has-proto> +1.0.3 <https://github.com/inspect-js/has-proto> MIT License Copyright (c) 2022 Inspect JS @@ -27450,7 +26896,7 @@ SOFTWARE. ****************************** has-symbols -1.1.0 <https://github.com/inspect-js/has-symbols> +1.0.3 <https://github.com/inspect-js/has-symbols> MIT License Copyright (c) 2016 Jordan Harband @@ -27548,6 +26994,32 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +****************************** + +he +1.2.0 <https://github.com/mathiasbynens/he> +Copyright Mathias Bynens <https://mathiasbynens.be/> + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + ****************************** hermes-estree @@ -28684,7 +28156,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** image-size -1.1.1 <https://github.com/image-size/image-size> +1.2.1 <https://github.com/image-size/image-size> The MIT License (MIT) Copyright © 2013-Present Aditya Yadav, http://netroy.in @@ -28951,7 +28423,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI ****************************** internal-slot -1.1.0 <https://github.com/ljharb/internal-slot> +1.0.7 <https://github.com/ljharb/internal-slot> MIT License Copyright (c) 2019 Jordan Harband @@ -29294,7 +28766,7 @@ SOFTWARE. ****************************** is-array-buffer -3.0.5 <https://github.com/inspect-js/is-array-buffer> +3.0.4 <https://github.com/inspect-js/is-array-buffer> MIT License Copyright (c) 2015 Chen Gengyuan, Inspect JS @@ -29401,7 +28873,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** is-bigint -1.1.0 <https://github.com/inspect-js/is-bigint> +1.0.2 <https://github.com/inspect-js/is-bigint> MIT License Copyright (c) 2018 Jordan Harband @@ -29443,7 +28915,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI ****************************** is-boolean-object -1.2.1 <https://github.com/inspect-js/is-boolean-object> +1.1.2 <https://github.com/inspect-js/is-boolean-object> The MIT License (MIT) Copyright (c) 2015 Jordan Harband @@ -29541,7 +29013,7 @@ SOFTWARE. ****************************** is-core-module -2.16.1 <https://github.com/inspect-js/is-core-module> +2.13.1 <https://github.com/inspect-js/is-core-module> The MIT License (MIT) Copyright (c) 2014 Dave Justice @@ -29566,7 +29038,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** is-data-view -1.0.2 <https://github.com/inspect-js/is-data-view> +1.0.1 <https://github.com/inspect-js/is-data-view> MIT License Copyright (c) 2024 Inspect JS @@ -29593,7 +29065,7 @@ SOFTWARE. ****************************** is-date-object -1.1.0 <https://github.com/inspect-js/is-date-object> +1.0.5 <https://github.com/inspect-js/is-date-object> The MIT License (MIT) Copyright (c) 2015 Jordan Harband @@ -29765,7 +29237,7 @@ THE SOFTWARE. ****************************** is-finalizationregistry -1.1.1 <https://github.com/inspect-js/is-finalizationregistry> +1.0.2 <https://github.com/inspect-js/is-finalizationregistry> MIT License Copyright (c) 2020 Inspect JS @@ -30010,7 +29482,7 @@ THE SOFTWARE. ****************************** is-map -2.0.3 <https://github.com/inspect-js/is-map> +2.0.2 <https://github.com/inspect-js/is-map> MIT License Copyright (c) 2019 Inspect JS @@ -30060,6 +29532,32 @@ IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +****************************** + +is-negative-zero +2.0.3 <https://github.com/inspect-js/is-negative-zero> +The MIT License (MIT) + +Copyright (c) 2014 Jordan Harband + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + ****************************** is-number @@ -30090,7 +29588,7 @@ THE SOFTWARE. ****************************** is-number-object -1.1.1 <https://github.com/inspect-js/is-number-object> +1.0.7 <https://github.com/inspect-js/is-number-object> The MIT License (MIT) Copyright (c) 2015 Jordan Harband @@ -30249,7 +29747,7 @@ THE SOFTWARE. ****************************** is-regex -1.2.1 <https://github.com/inspect-js/is-regex> +1.1.4 <https://github.com/inspect-js/is-regex> The MIT License (MIT) Copyright (c) 2014 Jordan Harband @@ -30291,7 +29789,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI ****************************** is-set -2.0.3 <https://github.com/inspect-js/is-set> +2.0.2 <https://github.com/inspect-js/is-set> MIT License Copyright (c) 2019 Inspect JS @@ -30318,7 +29816,7 @@ SOFTWARE. ****************************** is-shared-array-buffer -1.0.4 <https://github.com/inspect-js/is-shared-array-buffer> +1.0.3 <https://github.com/inspect-js/is-shared-array-buffer> MIT License Copyright (c) 2021 Inspect JS @@ -30387,7 +29885,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI ****************************** is-string -1.1.1 <https://github.com/inspect-js/is-string> +1.0.7 <https://github.com/ljharb/is-string> The MIT License (MIT) Copyright (c) 2015 Jordan Harband @@ -30415,7 +29913,7 @@ SOFTWARE. ****************************** is-symbol -1.1.1 <https://github.com/inspect-js/is-symbol> +1.0.4 <https://github.com/inspect-js/is-symbol> The MIT License (MIT) Copyright (c) 2015 Jordan Harband @@ -30443,7 +29941,7 @@ SOFTWARE. ****************************** is-typed-array -1.1.15 <https://github.com/inspect-js/is-typed-array> +1.1.13 <https://github.com/inspect-js/is-typed-array> The MIT License (MIT) Copyright (c) 2015 Jordan Harband @@ -30562,7 +30060,7 @@ THE SOFTWARE. ****************************** is-weakmap -2.0.2 <https://github.com/inspect-js/is-weakmap> +2.0.1 <https://github.com/inspect-js/is-weakmap> MIT License Copyright (c) 2019 Inspect JS @@ -30589,7 +30087,7 @@ SOFTWARE. ****************************** is-weakref -1.1.0 <https://github.com/inspect-js/is-weakref> +1.0.2 <https://github.com/inspect-js/is-weakref> MIT License Copyright (c) 2020 Inspect JS @@ -30616,7 +30114,7 @@ SOFTWARE. ****************************** is-weakset -2.0.4 <https://github.com/inspect-js/is-weakset> +2.0.1 <https://github.com/inspect-js/is-weakset> MIT License Copyright (c) 2019 Inspect JS @@ -31347,7 +30845,7 @@ authors: undefined ****************************** @jridgewell/gen-mapping -0.3.8 <https://github.com/jridgewell/gen-mapping> +0.3.5 <https://github.com/jridgewell/gen-mapping> Copyright 2022 Justin Ridgewell <jridgewell@google.com> Permission is hereby granted, free of charge, to any person obtaining a copy @@ -31803,27 +31301,27 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. jscodeshift 0.14.0 <https://github.com/facebook/jscodeshift> -MIT License - -Copyright (c) Facebook, Inc. and its affiliates. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. +MIT License + +Copyright (c) Facebook, Inc. and its affiliates. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. ****************************** @@ -31870,32 +31368,6 @@ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -****************************** - -jsesc -3.1.0 <https://github.com/mathiasbynens/jsesc> -Copyright Mathias Bynens <https://mathiasbynens.be/> - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - ****************************** jsftp @@ -31957,27 +31429,27 @@ SOFTWARE. jsonc-parser 3.2.0 <https://github.com/microsoft/node-jsonc-parser> -The MIT License (MIT) - -Copyright (c) Microsoft - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. +The MIT License (MIT) + +Copyright (c) Microsoft + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. ****************************** @@ -32066,54 +31538,6 @@ This library is a fork of 'better-json-errors' by Kat Marchán, extended and distributed under the terms of the MIT license above. -****************************** - -json-pointer -0.6.2 <https://github.com/manuelstofer/json-pointer> -The MIT License (MIT) - -Copyright (c) 2016 Manuel Stofer - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - - -****************************** - -json-rpc-engine -6.1.0 <https://github.com/MetaMask/json-rpc-engine> -ISC License - -Copyright (c) 2020 MetaMask - -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted, provided that the above -copyright notice and this permission notice appear in all copies. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES -WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR -ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN -ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF -OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - - ****************************** json-rpc-random-id @@ -32125,201 +31549,201 @@ authors: undefined json-schema 0.4.0 <https://github.com/kriszyp/json-schema> -Dojo is available under *either* the terms of the BSD 3-Clause "New" License *or* the -Academic Free License version 2.1. As a recipient of Dojo, you may choose which -license to receive this code under (except as noted in per-module LICENSE -files). Some modules may not be the copyright of the Dojo Foundation. These -modules contain explicit declarations of copyright in both the LICENSE files in -the directories in which they reside and in the code itself. No external -contributions are allowed under licenses which are fundamentally incompatible -with the AFL-2.1 OR and BSD-3-Clause licenses that Dojo is distributed under. - -The text of the AFL-2.1 and BSD-3-Clause licenses is reproduced below. - -------------------------------------------------------------------------------- -BSD 3-Clause "New" License: -********************** - -Copyright (c) 2005-2015, The Dojo Foundation -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - * Neither the name of the Dojo Foundation nor the names of its contributors - may be used to endorse or promote products derived from this software - without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE -FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -------------------------------------------------------------------------------- -The Academic Free License, v. 2.1: -********************************** - -This Academic Free License (the "License") applies to any original work of -authorship (the "Original Work") whose owner (the "Licensor") has placed the -following notice immediately following the copyright notice for the Original -Work: - -Licensed under the Academic Free License version 2.1 - -1) Grant of Copyright License. Licensor hereby grants You a world-wide, -royalty-free, non-exclusive, perpetual, sublicenseable license to do the -following: - -a) to reproduce the Original Work in copies; - -b) to prepare derivative works ("Derivative Works") based upon the Original -Work; - -c) to distribute copies of the Original Work and Derivative Works to the -public; - -d) to perform the Original Work publicly; and - -e) to display the Original Work publicly. - -2) Grant of Patent License. Licensor hereby grants You a world-wide, -royalty-free, non-exclusive, perpetual, sublicenseable license, under patent -claims owned or controlled by the Licensor that are embodied in the Original -Work as furnished by the Licensor, to make, use, sell and offer for sale the -Original Work and Derivative Works. - -3) Grant of Source Code License. The term "Source Code" means the preferred -form of the Original Work for making modifications to it and all available -documentation describing how to modify the Original Work. Licensor hereby -agrees to provide a machine-readable copy of the Source Code of the Original -Work along with each copy of the Original Work that Licensor distributes. -Licensor reserves the right to satisfy this obligation by placing a -machine-readable copy of the Source Code in an information repository -reasonably calculated to permit inexpensive and convenient access by You for as -long as Licensor continues to distribute the Original Work, and by publishing -the address of that information repository in a notice immediately following -the copyright notice that applies to the Original Work. - -4) Exclusions From License Grant. Neither the names of Licensor, nor the names -of any contributors to the Original Work, nor any of their trademarks or -service marks, may be used to endorse or promote products derived from this -Original Work without express prior written permission of the Licensor. Nothing -in this License shall be deemed to grant any rights to trademarks, copyrights, -patents, trade secrets or any other intellectual property of Licensor except as -expressly stated herein. No patent license is granted to make, use, sell or -offer to sell embodiments of any patent claims other than the licensed claims -defined in Section 2. No right is granted to the trademarks of Licensor even if -such marks are included in the Original Work. Nothing in this License shall be -interpreted to prohibit Licensor from licensing under different terms from this -License any Original Work that Licensor otherwise would have a right to -license. - -5) This section intentionally omitted. - -6) Attribution Rights. You must retain, in the Source Code of any Derivative -Works that You create, all copyright, patent or trademark notices from the -Source Code of the Original Work, as well as any notices of licensing and any -descriptive text identified therein as an "Attribution Notice." You must cause -the Source Code for any Derivative Works that You create to carry a prominent -Attribution Notice reasonably calculated to inform recipients that You have -modified the Original Work. - -7) Warranty of Provenance and Disclaimer of Warranty. Licensor warrants that -the copyright in and to the Original Work and the patent rights granted herein -by Licensor are owned by the Licensor or are sublicensed to You under the terms -of this License with the permission of the contributor(s) of those copyrights -and patent rights. Except as expressly stated in the immediately proceeding -sentence, the Original Work is provided under this License on an "AS IS" BASIS -and WITHOUT WARRANTY, either express or implied, including, without limitation, -the warranties of NON-INFRINGEMENT, MERCHANTABILITY or FITNESS FOR A PARTICULAR -PURPOSE. THE ENTIRE RISK AS TO THE QUALITY OF THE ORIGINAL WORK IS WITH YOU. -This DISCLAIMER OF WARRANTY constitutes an essential part of this License. No -license to Original Work is granted hereunder except under this disclaimer. - -8) Limitation of Liability. Under no circumstances and under no legal theory, -whether in tort (including negligence), contract, or otherwise, shall the -Licensor be liable to any person for any direct, indirect, special, incidental, -or consequential damages of any character arising as a result of this License -or the use of the Original Work including, without limitation, damages for loss -of goodwill, work stoppage, computer failure or malfunction, or any and all -other commercial damages or losses. This limitation of liability shall not -apply to liability for death or personal injury resulting from Licensor's -negligence to the extent applicable law prohibits such limitation. Some -jurisdictions do not allow the exclusion or limitation of incidental or -consequential damages, so this exclusion and limitation may not apply to You. - -9) Acceptance and Termination. If You distribute copies of the Original Work or -a Derivative Work, You must make a reasonable effort under the circumstances to -obtain the express assent of recipients to the terms of this License. Nothing -else but this License (or another written agreement between Licensor and You) -grants You permission to create Derivative Works based upon the Original Work -or to exercise any of the rights granted in Section 1 herein, and any attempt -to do so except under the terms of this License (or another written agreement -between Licensor and You) is expressly prohibited by U.S. copyright law, the -equivalent laws of other countries, and by international treaty. Therefore, by -exercising any of the rights granted to You in Section 1 herein, You indicate -Your acceptance of this License and all of its terms and conditions. - -10) Termination for Patent Action. This License shall terminate automatically -and You may no longer exercise any of the rights granted to You by this License -as of the date You commence an action, including a cross-claim or counterclaim, -against Licensor or any licensee alleging that the Original Work infringes a -patent. This termination provision shall not apply for an action alleging -patent infringement by combinations of the Original Work with other software or -hardware. - -11) Jurisdiction, Venue and Governing Law. Any action or suit relating to this -License may be brought only in the courts of a jurisdiction wherein the -Licensor resides or in which Licensor conducts its primary business, and under -the laws of that jurisdiction excluding its conflict-of-law provisions. The -application of the United Nations Convention on Contracts for the International -Sale of Goods is expressly excluded. Any use of the Original Work outside the -scope of this License or after its termination shall be subject to the -requirements and penalties of the U.S. Copyright Act, 17 U.S.C. § 101 et -seq., the equivalent laws of other countries, and international treaty. This -section shall survive the termination of this License. - -12) Attorneys Fees. In any action to enforce the terms of this License or -seeking damages relating thereto, the prevailing party shall be entitled to -recover its costs and expenses, including, without limitation, reasonable -attorneys' fees and costs incurred in connection with such action, including -any appeal of such action. This section shall survive the termination of this -License. - -13) Miscellaneous. This License represents the complete agreement concerning -the subject matter hereof. If any provision of this License is held to be -unenforceable, such provision shall be reformed only to the extent necessary to -make it enforceable. - -14) Definition of "You" in This License. "You" throughout this License, whether -in upper or lower case, means an individual or a legal entity exercising rights -under, and complying with all of the terms of, this License. For legal -entities, "You" includes any entity that controls, is controlled by, or is -under common control with you. For purposes of this definition, "control" means -(i) the power, direct or indirect, to cause the direction or management of such -entity, whether by contract or otherwise, or (ii) ownership of fifty percent -(50%) or more of the outstanding shares, or (iii) beneficial ownership of such -entity. - -15) Right to Use. You may use the Original Work in all ways not otherwise -restricted or conditioned by this License or by law, and Licensor promises not -to interfere with or be responsible for such uses by You. - -This license is Copyright (C) 2003-2004 Lawrence E. Rosen. All rights reserved. -Permission is hereby granted to copy and distribute this license without -modification. This license may not be modified without the express written -permission of its copyright owner. +Dojo is available under *either* the terms of the BSD 3-Clause "New" License *or* the +Academic Free License version 2.1. As a recipient of Dojo, you may choose which +license to receive this code under (except as noted in per-module LICENSE +files). Some modules may not be the copyright of the Dojo Foundation. These +modules contain explicit declarations of copyright in both the LICENSE files in +the directories in which they reside and in the code itself. No external +contributions are allowed under licenses which are fundamentally incompatible +with the AFL-2.1 OR and BSD-3-Clause licenses that Dojo is distributed under. + +The text of the AFL-2.1 and BSD-3-Clause licenses is reproduced below. + +------------------------------------------------------------------------------- +BSD 3-Clause "New" License: +********************** + +Copyright (c) 2005-2015, The Dojo Foundation +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + * Neither the name of the Dojo Foundation nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +------------------------------------------------------------------------------- +The Academic Free License, v. 2.1: +********************************** + +This Academic Free License (the "License") applies to any original work of +authorship (the "Original Work") whose owner (the "Licensor") has placed the +following notice immediately following the copyright notice for the Original +Work: + +Licensed under the Academic Free License version 2.1 + +1) Grant of Copyright License. Licensor hereby grants You a world-wide, +royalty-free, non-exclusive, perpetual, sublicenseable license to do the +following: + +a) to reproduce the Original Work in copies; + +b) to prepare derivative works ("Derivative Works") based upon the Original +Work; + +c) to distribute copies of the Original Work and Derivative Works to the +public; + +d) to perform the Original Work publicly; and + +e) to display the Original Work publicly. + +2) Grant of Patent License. Licensor hereby grants You a world-wide, +royalty-free, non-exclusive, perpetual, sublicenseable license, under patent +claims owned or controlled by the Licensor that are embodied in the Original +Work as furnished by the Licensor, to make, use, sell and offer for sale the +Original Work and Derivative Works. + +3) Grant of Source Code License. The term "Source Code" means the preferred +form of the Original Work for making modifications to it and all available +documentation describing how to modify the Original Work. Licensor hereby +agrees to provide a machine-readable copy of the Source Code of the Original +Work along with each copy of the Original Work that Licensor distributes. +Licensor reserves the right to satisfy this obligation by placing a +machine-readable copy of the Source Code in an information repository +reasonably calculated to permit inexpensive and convenient access by You for as +long as Licensor continues to distribute the Original Work, and by publishing +the address of that information repository in a notice immediately following +the copyright notice that applies to the Original Work. + +4) Exclusions From License Grant. Neither the names of Licensor, nor the names +of any contributors to the Original Work, nor any of their trademarks or +service marks, may be used to endorse or promote products derived from this +Original Work without express prior written permission of the Licensor. Nothing +in this License shall be deemed to grant any rights to trademarks, copyrights, +patents, trade secrets or any other intellectual property of Licensor except as +expressly stated herein. No patent license is granted to make, use, sell or +offer to sell embodiments of any patent claims other than the licensed claims +defined in Section 2. No right is granted to the trademarks of Licensor even if +such marks are included in the Original Work. Nothing in this License shall be +interpreted to prohibit Licensor from licensing under different terms from this +License any Original Work that Licensor otherwise would have a right to +license. + +5) This section intentionally omitted. + +6) Attribution Rights. You must retain, in the Source Code of any Derivative +Works that You create, all copyright, patent or trademark notices from the +Source Code of the Original Work, as well as any notices of licensing and any +descriptive text identified therein as an "Attribution Notice." You must cause +the Source Code for any Derivative Works that You create to carry a prominent +Attribution Notice reasonably calculated to inform recipients that You have +modified the Original Work. + +7) Warranty of Provenance and Disclaimer of Warranty. Licensor warrants that +the copyright in and to the Original Work and the patent rights granted herein +by Licensor are owned by the Licensor or are sublicensed to You under the terms +of this License with the permission of the contributor(s) of those copyrights +and patent rights. Except as expressly stated in the immediately proceeding +sentence, the Original Work is provided under this License on an "AS IS" BASIS +and WITHOUT WARRANTY, either express or implied, including, without limitation, +the warranties of NON-INFRINGEMENT, MERCHANTABILITY or FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY OF THE ORIGINAL WORK IS WITH YOU. +This DISCLAIMER OF WARRANTY constitutes an essential part of this License. No +license to Original Work is granted hereunder except under this disclaimer. + +8) Limitation of Liability. Under no circumstances and under no legal theory, +whether in tort (including negligence), contract, or otherwise, shall the +Licensor be liable to any person for any direct, indirect, special, incidental, +or consequential damages of any character arising as a result of this License +or the use of the Original Work including, without limitation, damages for loss +of goodwill, work stoppage, computer failure or malfunction, or any and all +other commercial damages or losses. This limitation of liability shall not +apply to liability for death or personal injury resulting from Licensor's +negligence to the extent applicable law prohibits such limitation. Some +jurisdictions do not allow the exclusion or limitation of incidental or +consequential damages, so this exclusion and limitation may not apply to You. + +9) Acceptance and Termination. If You distribute copies of the Original Work or +a Derivative Work, You must make a reasonable effort under the circumstances to +obtain the express assent of recipients to the terms of this License. Nothing +else but this License (or another written agreement between Licensor and You) +grants You permission to create Derivative Works based upon the Original Work +or to exercise any of the rights granted in Section 1 herein, and any attempt +to do so except under the terms of this License (or another written agreement +between Licensor and You) is expressly prohibited by U.S. copyright law, the +equivalent laws of other countries, and by international treaty. Therefore, by +exercising any of the rights granted to You in Section 1 herein, You indicate +Your acceptance of this License and all of its terms and conditions. + +10) Termination for Patent Action. This License shall terminate automatically +and You may no longer exercise any of the rights granted to You by this License +as of the date You commence an action, including a cross-claim or counterclaim, +against Licensor or any licensee alleging that the Original Work infringes a +patent. This termination provision shall not apply for an action alleging +patent infringement by combinations of the Original Work with other software or +hardware. + +11) Jurisdiction, Venue and Governing Law. Any action or suit relating to this +License may be brought only in the courts of a jurisdiction wherein the +Licensor resides or in which Licensor conducts its primary business, and under +the laws of that jurisdiction excluding its conflict-of-law provisions. The +application of the United Nations Convention on Contracts for the International +Sale of Goods is expressly excluded. Any use of the Original Work outside the +scope of this License or after its termination shall be subject to the +requirements and penalties of the U.S. Copyright Act, 17 U.S.C. § 101 et +seq., the equivalent laws of other countries, and international treaty. This +section shall survive the termination of this License. + +12) Attorneys Fees. In any action to enforce the terms of this License or +seeking damages relating thereto, the prevailing party shall be entitled to +recover its costs and expenses, including, without limitation, reasonable +attorneys' fees and costs incurred in connection with such action, including +any appeal of such action. This section shall survive the termination of this +License. + +13) Miscellaneous. This License represents the complete agreement concerning +the subject matter hereof. If any provision of this License is held to be +unenforceable, such provision shall be reformed only to the extent necessary to +make it enforceable. + +14) Definition of "You" in This License. "You" throughout this License, whether +in upper or lower case, means an individual or a legal entity exercising rights +under, and complying with all of the terms of, this License. For legal +entities, "You" includes any entity that controls, is controlled by, or is +under common control with you. For purposes of this definition, "control" means +(i) the power, direct or indirect, to cause the direction or management of such +entity, whether by contract or otherwise, or (ii) ownership of fifty percent +(50%) or more of the outstanding shares, or (iii) beneficial ownership of such +entity. + +15) Right to Use. You may use the Original Work in all ways not otherwise +restricted or conditioned by this License or by law, and Licensor promises not +to interfere with or be responsible for such uses by You. + +This license is Copyright (C) 2003-2004 Lawrence E. Rosen. All rights reserved. +Permission is hereby granted to copy and distribute this license without +modification. This license may not be modified without the express written +permission of its copyright owner. ****************************** @@ -32403,27 +31827,6 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -****************************** - -json-stringify-safe -5.0.1 <https://github.com/isaacs/json-stringify-safe> -The ISC License - -Copyright (c) Isaac Z. Schlueter and Contributors - -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted, provided that the above -copyright notice and this permission notice appear in all copies. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES -WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR -ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN -ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR -IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - - ****************************** js-sha3 @@ -32623,33 +32026,6 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -****************************** - -keccak -1.4.0 <https://github.com/cryptocoinjs/keccak> -The MIT License (MIT) - -Copyright (c) 2016 https://github.com/cryptocoinjs/keccak contributors - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. - - ****************************** keccak @@ -33342,7 +32718,7 @@ OTHER DEALINGS IN THE SOFTWARE. ****************************** @ledgerhq/cryptoassets-evm-signatures -13.5.0 <https://github.com/LedgerHQ/ledger-live> +13.5.2 <https://github.com/LedgerHQ/ledger-live> The MIT License Copyright (c) 2017-present Ledger https://www.ledger.com/ @@ -33396,7 +32772,7 @@ THE SOFTWARE. ****************************** @ledgerhq/domain-service -1.2.6 <https://github.com/LedgerHQ/ledger-live> +1.2.15 <https://github.com/LedgerHQ/ledger-live> The MIT License Copyright (c) 2017-present Ledger https://www.ledger.com/ @@ -33450,7 +32826,7 @@ THE SOFTWARE. ****************************** @ledgerhq/evm-tools -1.2.3 <https://github.com/LedgerHQ/ledger-live> +1.3.0 <https://github.com/LedgerHQ/ledger-live> The MIT License Copyright (c) 2017-present Ledger https://www.ledger.com/ @@ -33477,7 +32853,7 @@ THE SOFTWARE. ****************************** @ledgerhq/hw-app-eth -6.39.0 <https://github.com/LedgerHQ/ledger-live> +6.42.2 <https://github.com/LedgerHQ/ledger-live> The MIT License Copyright (c) 2017-present Ledger https://www.ledger.com/ @@ -33558,7 +32934,7 @@ THE SOFTWARE. ****************************** @ledgerhq/live-env -2.3.0 <https://github.com/LedgerHQ/ledger-live> +2.4.1 <https://github.com/LedgerHQ/ledger-live> The MIT License Copyright (c) 2017-present Ledger https://www.ledger.com/ @@ -33619,7 +32995,7 @@ THE SOFTWARE. ****************************** @ledgerhq/types-live -6.52.0 <https://github.com/LedgerHQ/ledger-live> +6.56.0 <https://github.com/LedgerHQ/ledger-live> The MIT License Copyright (c) 2017-present Ledger https://www.ledger.com/ @@ -34259,7 +33635,386 @@ defined by the Mozilla Public License, v. 2.0. ****************************** -lightningcss-darwin-arm64 +lightningcss-linux-x64-gnu +1.19.0 <https://github.com/parcel-bundler/lightningcss> + Mozilla Public License Version 2.0 +================================== + +1. Definitions +-------------- + +1.1. "Contributor" +means each individual or legal entity that creates, contributes to +the creation of, or owns Covered Software. + +1.2. "Contributor Version" +means the combination of the Contributions of others (if any) used +by a Contributor and that particular Contributor's Contribution. + +1.3. "Contribution" +means Covered Software of a particular Contributor. + +1.4. "Covered Software" +means Source Code Form to which the initial Contributor has attached +the notice in Exhibit A, the Executable Form of such Source Code +Form, and Modifications of such Source Code Form, in each case +including portions thereof. + +1.5. "Incompatible With Secondary Licenses" +means + +(a) that the initial Contributor has attached the notice described +in Exhibit B to the Covered Software; or + +(b) that the Covered Software was made available under the terms of +version 1.1 or earlier of the License, but not also under the +terms of a Secondary License. + +1.6. "Executable Form" +means any form of the work other than Source Code Form. + +1.7. "Larger Work" +means a work that combines Covered Software with other material, in +a separate file or files, that is not Covered Software. + +1.8. "License" +means this document. + +1.9. "Licensable" +means having the right to grant, to the maximum extent possible, +whether at the time of the initial grant or subsequently, any and +all of the rights conveyed by this License. + +1.10. "Modifications" +means any of the following: + +(a) any file in Source Code Form that results from an addition to, +deletion from, or modification of the contents of Covered +Software; or + +(b) any new file in Source Code Form that contains any Covered +Software. + +1.11. "Patent Claims" of a Contributor +means any patent claim(s), including without limitation, method, +process, and apparatus claims, in any patent Licensable by such +Contributor that would be infringed, but for the grant of the +License, by the making, using, selling, offering for sale, having +made, import, or transfer of either its Contributions or its +Contributor Version. + +1.12. "Secondary License" +means either the GNU General Public License, Version 2.0, the GNU +Lesser General Public License, Version 2.1, the GNU Affero General +Public License, Version 3.0, or any later versions of those +licenses. + +1.13. "Source Code Form" +means the form of the work preferred for making modifications. + +1.14. "You" (or "Your") +means an individual or a legal entity exercising rights under this +License. For legal entities, "You" includes any entity that +controls, is controlled by, or is under common control with You. For +purposes of this definition, "control" means (a) the power, direct +or indirect, to cause the direction or management of such entity, +whether by contract or otherwise, or (b) ownership of more than +fifty percent (50%) of the outstanding shares or beneficial +ownership of such entity. + +2. License Grants and Conditions +-------------------------------- + +2.1. Grants + +Each Contributor hereby grants You a world-wide, royalty-free, +non-exclusive license: + +(a) under intellectual property rights (other than patent or trademark) +Licensable by such Contributor to use, reproduce, make available, +modify, display, perform, distribute, and otherwise exploit its +Contributions, either on an unmodified basis, with Modifications, or +as part of a Larger Work; and + +(b) under Patent Claims of such Contributor to make, use, sell, offer +for sale, have made, import, and otherwise transfer either its +Contributions or its Contributor Version. + +2.2. Effective Date + +The licenses granted in Section 2.1 with respect to any Contribution +become effective for each Contribution on the date the Contributor first +distributes such Contribution. + +2.3. Limitations on Grant Scope + +The licenses granted in this Section 2 are the only rights granted under +this License. No additional rights or licenses will be implied from the +distribution or licensing of Covered Software under this License. +Notwithstanding Section 2.1(b) above, no patent license is granted by a +Contributor: + +(a) for any code that a Contributor has removed from Covered Software; +or + +(b) for infringements caused by: (i) Your and any other third party's +modifications of Covered Software, or (ii) the combination of its +Contributions with other software (except as part of its Contributor +Version); or + +(c) under Patent Claims infringed by Covered Software in the absence of +its Contributions. + +This License does not grant any rights in the trademarks, service marks, +or logos of any Contributor (except as may be necessary to comply with +the notice requirements in Section 3.4). + +2.4. Subsequent Licenses + +No Contributor makes additional grants as a result of Your choice to +distribute the Covered Software under a subsequent version of this +License (see Section 10.2) or under the terms of a Secondary License (if +permitted under the terms of Section 3.3). + +2.5. Representation + +Each Contributor represents that the Contributor believes its +Contributions are its original creation(s) or it has sufficient rights +to grant the rights to its Contributions conveyed by this License. + +2.6. Fair Use + +This License is not intended to limit any rights You have under +applicable copyright doctrines of fair use, fair dealing, or other +equivalents. + +2.7. Conditions + +Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted +in Section 2.1. + +3. Responsibilities +------------------- + +3.1. Distribution of Source Form + +All distribution of Covered Software in Source Code Form, including any +Modifications that You create or to which You contribute, must be under +the terms of this License. You must inform recipients that the Source +Code Form of the Covered Software is governed by the terms of this +License, and how they can obtain a copy of this License. You may not +attempt to alter or restrict the recipients' rights in the Source Code +Form. + +3.2. Distribution of Executable Form + +If You distribute Covered Software in Executable Form then: + +(a) such Covered Software must also be made available in Source Code +Form, as described in Section 3.1, and You must inform recipients of +the Executable Form how they can obtain a copy of such Source Code +Form by reasonable means in a timely manner, at a charge no more +than the cost of distribution to the recipient; and + +(b) You may distribute such Executable Form under the terms of this +License, or sublicense it under different terms, provided that the +license for the Executable Form does not attempt to limit or alter +the recipients' rights in the Source Code Form under this License. + +3.3. Distribution of a Larger Work + +You may create and distribute a Larger Work under terms of Your choice, +provided that You also comply with the requirements of this License for +the Covered Software. If the Larger Work is a combination of Covered +Software with a work governed by one or more Secondary Licenses, and the +Covered Software is not Incompatible With Secondary Licenses, this +License permits You to additionally distribute such Covered Software +under the terms of such Secondary License(s), so that the recipient of +the Larger Work may, at their option, further distribute the Covered +Software under the terms of either this License or such Secondary +License(s). + +3.4. Notices + +You may not remove or alter the substance of any license notices +(including copyright notices, patent notices, disclaimers of warranty, +or limitations of liability) contained within the Source Code Form of +the Covered Software, except that You may alter any license notices to +the extent required to remedy known factual inaccuracies. + +3.5. Application of Additional Terms + +You may choose to offer, and to charge a fee for, warranty, support, +indemnity or liability obligations to one or more recipients of Covered +Software. However, You may do so only on Your own behalf, and not on +behalf of any Contributor. You must make it absolutely clear that any +such warranty, support, indemnity, or liability obligation is offered by +You alone, and You hereby agree to indemnify every Contributor for any +liability incurred by such Contributor as a result of warranty, support, +indemnity or liability terms You offer. You may include additional +disclaimers of warranty and limitations of liability specific to any +jurisdiction. + +4. Inability to Comply Due to Statute or Regulation +--------------------------------------------------- + +If it is impossible for You to comply with any of the terms of this +License with respect to some or all of the Covered Software due to +statute, judicial order, or regulation then You must: (a) comply with +the terms of this License to the maximum extent possible; and (b) +describe the limitations and the code they affect. Such description must +be placed in a text file included with all distributions of the Covered +Software under this License. Except to the extent prohibited by statute +or regulation, such description must be sufficiently detailed for a +recipient of ordinary skill to be able to understand it. + +5. Termination +-------------- + +5.1. The rights granted under this License will terminate automatically +if You fail to comply with any of its terms. However, if You become +compliant, then the rights granted under this License from a particular +Contributor are reinstated (a) provisionally, unless and until such +Contributor explicitly and finally terminates Your grants, and (b) on an +ongoing basis, if such Contributor fails to notify You of the +non-compliance by some reasonable means prior to 60 days after You have +come back into compliance. Moreover, Your grants from a particular +Contributor are reinstated on an ongoing basis if such Contributor +notifies You of the non-compliance by some reasonable means, this is the +first time You have received notice of non-compliance with this License +from such Contributor, and You become compliant prior to 30 days after +Your receipt of the notice. + +5.2. If You initiate litigation against any entity by asserting a patent +infringement claim (excluding declaratory judgment actions, +counter-claims, and cross-claims) alleging that a Contributor Version +directly or indirectly infringes any patent, then the rights granted to +You by any and all Contributors for the Covered Software under Section +2.1 of this License shall terminate. + +5.3. In the event of termination under Sections 5.1 or 5.2 above, all +end user license agreements (excluding distributors and resellers) which +have been validly granted by You or Your distributors under this License +prior to termination shall survive termination. + +************************************************************************ +* * +* 6. Disclaimer of Warranty * +* ------------------------- * +* * +* Covered Software is provided under this License on an "as is" * +* basis, without warranty of any kind, either expressed, implied, or * +* statutory, including, without limitation, warranties that the * +* Covered Software is free of defects, merchantable, fit for a * +* particular purpose or non-infringing. The entire risk as to the * +* quality and performance of the Covered Software is with You. * +* Should any Covered Software prove defective in any respect, You * +* (not any Contributor) assume the cost of any necessary servicing, * +* repair, or correction. This disclaimer of warranty constitutes an * +* essential part of this License. No use of any Covered Software is * +* authorized under this License except under this disclaimer. * +* * +************************************************************************ + +************************************************************************ +* * +* 7. Limitation of Liability * +* -------------------------- * +* * +* Under no circumstances and under no legal theory, whether tort * +* (including negligence), contract, or otherwise, shall any * +* Contributor, or anyone who distributes Covered Software as * +* permitted above, be liable to You for any direct, indirect, * +* special, incidental, or consequential damages of any character * +* including, without limitation, damages for lost profits, loss of * +* goodwill, work stoppage, computer failure or malfunction, or any * +* and all other commercial damages or losses, even if such party * +* shall have been informed of the possibility of such damages. This * +* limitation of liability shall not apply to liability for death or * +* personal injury resulting from such party's negligence to the * +* extent applicable law prohibits such limitation. Some * +* jurisdictions do not allow the exclusion or limitation of * +* incidental or consequential damages, so this exclusion and * +* limitation may not apply to You. * +* * +************************************************************************ + +8. Litigation +------------- + +Any litigation relating to this License may be brought only in the +courts of a jurisdiction where the defendant maintains its principal +place of business and such litigation shall be governed by laws of that +jurisdiction, without reference to its conflict-of-law provisions. +Nothing in this Section shall prevent a party's ability to bring +cross-claims or counter-claims. + +9. Miscellaneous +---------------- + +This License represents the complete agreement concerning the subject +matter hereof. If any provision of this License is held to be +unenforceable, such provision shall be reformed only to the extent +necessary to make it enforceable. Any law or regulation which provides +that the language of a contract shall be construed against the drafter +shall not be used to construe this License against a Contributor. + +10. Versions of the License +--------------------------- + +10.1. New Versions + +Mozilla Foundation is the license steward. Except as provided in Section +10.3, no one other than the license steward has the right to modify or +publish new versions of this License. Each version will be given a +distinguishing version number. + +10.2. Effect of New Versions + +You may distribute the Covered Software under the terms of the version +of the License under which You originally received the Covered Software, +or under the terms of any subsequent version published by the license +steward. + +10.3. Modified Versions + +If you create software not governed by this License, and you want to +create a new license for such software, you may create and use a +modified version of this License if you rename the license and remove +any references to the name of the license steward (except to note that +such modified license differs from this License). + +10.4. Distributing Source Code Form that is Incompatible With Secondary +Licenses + +If You choose to distribute Source Code Form that is Incompatible With +Secondary Licenses under the terms of this version of the License, the +notice described in Exhibit B of this License must be attached. + +Exhibit A - Source Code Form License Notice +------------------------------------------- + +This Source Code Form is subject to the terms of the Mozilla Public +License, v. 2.0. If a copy of the MPL was not distributed with this +file, You can obtain one at https://mozilla.org/MPL/2.0/. + +If it is not possible or desirable to put the notice in a particular +file, then You may include the notice in a location (such as a LICENSE +file in a relevant directory) where a recipient would be likely to look +for such a notice. + +You may add additional accurate notices of copyright ownership. + +Exhibit B - "Incompatible With Secondary Licenses" Notice +--------------------------------------------------------- + +This Source Code Form is "Incompatible With Secondary Licenses", as +defined by the Mozilla Public License, v. 2.0. + + +****************************** + +lightningcss-linux-x64-musl 1.19.0 <https://github.com/parcel-bundler/lightningcss> Mozilla Public License Version 2.0 ================================== @@ -35436,65 +35191,22 @@ terms above. ****************************** -lodash.isplainobject -4.0.6 <https://github.com/lodash/lodash> -Copyright jQuery Foundation and other contributors <https://jquery.org/> - -Based on Underscore.js, copyright Jeremy Ashkenas, -DocumentCloud and Investigative Reporters & Editors <http://underscorejs.org/> - -This software consists of voluntary contributions made by many -individuals. For exact contribution history, see the revision history -available at https://github.com/lodash/lodash - -The following license applies to all parts of this software except as -documented below: - -==== - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -==== - -Copyright and related rights for sample code are waived via CC0. Sample -code is defined as all source code displayed within the prose of the -documentation. - -CC0: http://creativecommons.org/publicdomain/zero/1.0/ - -==== - -Files located in the node_modules and vendor directories are externally -maintained libraries used by this software which have their own -licenses; we recommend you read them, as their terms may differ from the -terms above. - - -****************************** - -lodash.isstring -4.0.1 <https://github.com/lodash/lodash> -Copyright 2012-2016 The Dojo Foundation <http://dojofoundation.org/> -Based on Underscore.js, copyright 2009-2016 Jeremy Ashkenas, +lodash.isplainobject +4.0.6 <https://github.com/lodash/lodash> +Copyright jQuery Foundation and other contributors <https://jquery.org/> + +Based on Underscore.js, copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors <http://underscorejs.org/> +This software consists of voluntary contributions made by many +individuals. For exact contribution history, see the revision history +available at https://github.com/lodash/lodash + +The following license applies to all parts of this software except as +documented below: + +==== + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including @@ -35514,6 +35226,21 @@ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +==== + +Copyright and related rights for sample code are waived via CC0. Sample +code is defined as all source code displayed within the prose of the +documentation. + +CC0: http://creativecommons.org/publicdomain/zero/1.0/ + +==== + +Files located in the node_modules and vendor directories are externally +maintained libraries used by this software which have their own +licenses; we recommend you read them, as their terms may differ from the +terms above. + ****************************** @@ -35705,28 +35432,28 @@ SOFTWARE. loglevel 1.9.1 <https://github.com/pimterry/loglevel> -Copyright (c) 2013 Tim Perry - -Permission is hereby granted, free of charge, to any person -obtaining a copy of this software and associated documentation -files (the "Software"), to deal in the Software without -restriction, including without limitation the rights to use, -copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the -Software is furnished to do so, subject to the following -conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -OTHER DEALINGS IN THE SOFTWARE. +Copyright (c) 2013 Tim Perry + +Permission is hereby granted, free of charge, to any person +obtaining a copy of this software and associated documentation +files (the "Software"), to deal in the Software without +restriction, including without limitation the rights to use, +copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the +Software is furnished to do so, subject to the following +conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES +OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT +HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +OTHER DEALINGS IN THE SOFTWARE. ****************************** @@ -36523,7 +36250,7 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** luxon -3.4.3 <https://github.com/moment/luxon> +3.5.0 <https://github.com/moment/luxon> Copyright 2019 JS Foundation and other contributors Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: @@ -36632,33 +36359,6 @@ Redistribution and use in source and binary forms, with or without modification, This software is provided by the copyright holders and contributors “as is” and any express or implied warranties, including, but not limited to, the implied warranties of merchantability and fitness for a particular purpose are disclaimed. In no event shall the copyright owner or contributors be liable for any direct, indirect, incidental, special, exemplary, or consequential damages (including, but not limited to, procurement of substitute goods or services; loss of use, data, or profits; or business interruption) however caused and on any theory of liability, whether in contract, strict liability, or tort (including negligence or otherwise) arising in any way out of the use of this software, even if advised of the possibility of such damage. -****************************** - -math-intrinsics -1.1.0 <https://github.com/es-shims/math-intrinsics> -MIT License - -Copyright (c) 2024 ECMAScript Shims - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - - ****************************** md5 @@ -37122,21 +36822,21 @@ authors: Egor Gumenyuk <boo1ean0807@gmail.com> ****************************** @metamask/abi-utils -1.2.0 <https://github.com/MetaMask/abi-utils> +2.0.4 <https://github.com/MetaMask/abi-utils> license: (Apache-2.0 AND MIT) authors: Maarten Zuidhoorn <maarten@zuidhoorn.com> ****************************** @metamask/abi-utils -2.0.4 <https://github.com/MetaMask/abi-utils> +3.0.0 <https://github.com/MetaMask/abi-utils> license: (Apache-2.0 AND MIT) authors: Maarten Zuidhoorn <maarten@zuidhoorn.com> ****************************** @metamask/accounts-controller -19.0.0 <https://github.com/MetaMask/core> +24.1.0 <https://github.com/MetaMask/core> MIT License Copyright (c) 2018 MetaMask @@ -37162,7 +36862,7 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE ****************************** @metamask/address-book-controller -6.0.1 <https://github.com/MetaMask/core> +6.0.3 <https://github.com/MetaMask/core> MIT License Copyright (c) 2018 MetaMask @@ -37188,7 +36888,7 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE ****************************** @metamask/approval-controller -7.1.1 <https://github.com/MetaMask/core> +7.1.3 <https://github.com/MetaMask/core> MIT License Copyright (c) 2018 MetaMask @@ -37214,7 +36914,7 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE ****************************** @metamask/assets-controllers -44.1.0 <https://github.com/MetaMask/core> +51.0.2 <https://github.com/MetaMask/core> MIT License Copyright (c) 2018 MetaMask @@ -37240,7 +36940,7 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE ****************************** @metamask/base-controller -3.2.3 <https://github.com/MetaMask/core> +7.1.1 <https://github.com/MetaMask/core> MIT License Copyright (c) 2018 MetaMask @@ -37266,7 +36966,7 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE ****************************** @metamask/base-controller -7.0.2 <https://github.com/MetaMask/core> +8.0.0 <https://github.com/MetaMask/core> MIT License Copyright (c) 2018 MetaMask @@ -37292,10 +36992,62 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE ****************************** @metamask/bitcoin-wallet-snap -0.8.2 <https://github.com/MetaMask/snap-bitcoin-wallet> +0.9.0 <https://github.com/MetaMask/snap-bitcoin-wallet> license: (MIT-0 OR Apache-2.0) authors: undefined +****************************** + +@metamask/bridge-controller +7.0.0 <https://github.com/MetaMask/core> +MIT License + +Copyright (c) 2025 MetaMask + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + + +****************************** + +@metamask/bridge-status-controller +7.0.0 <https://github.com/MetaMask/core> +MIT License + +Copyright (c) 2025 MetaMask + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + + ****************************** @metamask/browser-passworder @@ -37320,7 +37072,7 @@ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ****************************** @metamask/composable-controller -10.0.0 <https://github.com/MetaMask/core> +11.0.0 <https://github.com/MetaMask/core> MIT License Copyright (c) 2018 MetaMask @@ -37367,7 +37119,7 @@ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ****************************** @metamask/controller-utils -11.4.3 <https://github.com/MetaMask/core> +11.7.0 <https://github.com/MetaMask/core> MIT License Copyright (c) 2018 MetaMask @@ -37393,14 +37145,59 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE ****************************** @metamask/design-tokens -4.0.0 <https://github.com/MetaMask/design-tokens> -license: MIT -authors: undefined +5.0.0 <https://github.com/MetaMask/metamask-design-system> +MIT License + +Copyright (c) 2024 MetaMask + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + + +****************************** + +@metamask/earn-controller +0.11.0 <https://github.com/MetaMask/core> +MIT License + +Copyright (c) 2025 MetaMask + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + ****************************** @metamask/eth-block-tracker -11.0.2 <https://github.com/MetaMask/eth-block-tracker> +11.0.4 <https://github.com/MetaMask/eth-block-tracker> MIT License Copyright (c) 2018 MetaMask @@ -37447,7 +37244,7 @@ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ****************************** @metamask/eth-hd-keyring -7.0.4 <https://github.com/MetaMask/eth-hd-keyring> +10.0.1 <https://github.com/MetaMask/eth-hd-keyring> ISC License Copyright (c) 2020 MetaMask @@ -37468,7 +37265,7 @@ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ****************************** @metamask/eth-hd-keyring -9.0.0 <https://github.com/MetaMask/eth-hd-keyring> +12.1.0 <https://github.com/MetaMask/eth-hd-keyring> ISC License Copyright (c) 2020 MetaMask @@ -37570,7 +37367,7 @@ THE SOFTWARE. ****************************** @metamask/eth-json-rpc-filters -8.0.0 <https://github.com/MetaMask/eth-json-rpc-filters> +9.0.0 <https://github.com/MetaMask/eth-json-rpc-filters> ISC License Copyright (c) 2020 MetaMask @@ -37612,28 +37409,7 @@ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ****************************** @metamask/eth-json-rpc-middleware -11.0.2 <https://github.com/MetaMask/eth-json-rpc-middleware> -ISC License - -Copyright (c) 2020 MetaMask - -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted, provided that the above -copyright notice and this permission notice appear in all copies. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES -WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR -ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN -ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF -OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - - -****************************** - -@metamask/eth-json-rpc-middleware -15.0.0 <https://github.com/MetaMask/eth-json-rpc-middleware> +15.2.0 <https://github.com/MetaMask/eth-json-rpc-middleware> ISC License Copyright (c) 2020 MetaMask @@ -37654,14 +37430,7 @@ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ****************************** @metamask/eth-json-rpc-provider -1.0.1 <https://github.com/MetaMask/eth-json-rpc-provider> -license: Custom: https://github.com/MetaMask/json-rpc-engine -authors: undefined - -****************************** - -@metamask/eth-json-rpc-provider -4.1.6 <https://github.com/MetaMask/core> +4.1.8 <https://github.com/MetaMask/core> ISC License Copyright (c) 2022 MetaMask @@ -37790,7 +37559,7 @@ THE SOFTWARE. ****************************** @metamask/eth-ledger-bridge-keyring -8.0.0 <https://github.com/MetaMask/eth-ledger-bridge-keyring> +8.0.3 <https://github.com/MetaMask/eth-ledger-bridge-keyring> ISC License Copyright (c) 2020 MetaMask @@ -37818,28 +37587,7 @@ authors: undefined ****************************** @metamask/eth-sig-util -6.0.2 <https://github.com/MetaMask/eth-sig-util> -ISC License - -Copyright (c) 2020 MetaMask - -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted, provided that the above -copyright notice and this permission notice appear in all copies. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES -WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR -ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN -ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF -OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - - -****************************** - -@metamask/eth-sig-util -7.0.3 <https://github.com/MetaMask/eth-sig-util> +8.2.0 <https://github.com/MetaMask/eth-sig-util> ISC License Copyright (c) 2020 MetaMask @@ -37859,8 +37607,8 @@ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ****************************** -@metamask/eth-sig-util -8.0.0 <https://github.com/MetaMask/eth-sig-util> +@metamask/eth-simple-keyring +10.0.0 <https://github.com/MetaMask/eth-simple-keyring> ISC License Copyright (c) 2020 MetaMask @@ -37881,7 +37629,7 @@ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ****************************** @metamask/eth-simple-keyring -6.0.5 <https://github.com/MetaMask/eth-simple-keyring> +8.1.1 <https://github.com/MetaMask/eth-simple-keyring> ISC License Copyright (c) 2020 MetaMask @@ -37902,14 +37650,31 @@ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ****************************** @metamask/eth-snap-keyring -4.4.0 <https://github.com/MetaMask/eth-snap-keyring> -license: Custom: https://metamask.github.io/eth-snap-keyring/latest/ -authors: undefined +11.1.0 <https://github.com/MetaMask/eth-snap-keyring> +Copyright ConsenSys Software Inc. 2022. All rights reserved. + +You acknowledge and agree that ConsenSys Software Inc. (“ConsenSys”) (or ConsenSys’s licensors) own all legal right, title and interest in and to the work, software, application, source code, documentation and any other documents in this repository (collectively, the “Program”), including any intellectual property rights which subsist in the Program (whether those rights happen to be registered or not, and wherever in the world those rights may exist), whether in source code or any other form. + +Subject to the limited license below, you may not (and you may not permit anyone else to) distribute, publish, copy, modify, merge, combine with another program, create derivative works of, reverse engineer, decompile or otherwise attempt to extract the source code of, the Program or any part thereof, except that you may contribute to this repository. + +You are granted a non-exclusive, non-transferable, non-sublicensable license to distribute, publish, copy, modify, merge, combine with another program or create derivative works of the Program (such resulting program, collectively, the “Resulting Program”) solely for Non-Commercial Use as long as you: + 1. give prominent notice (“Notice”) with each copy of the Resulting Program that the Program is used in the Resulting Program and that the Program is the copyright of ConsenSys; and + 2. subject the Resulting Program and any distribution, publication, copy, modification, merger therewith, combination with another program or derivative works thereof to the same Notice requirement and Non-Commercial Use restriction set forth herein. + +“Non-Commercial Use” means each use as described in clauses (1)-(3) below, as reasonably determined by ConsenSys in its sole discretion: + 1. personal use for research, personal study, private entertainment, hobby projects or amateur pursuits, in each case without any anticipated commercial application; + 2. use by any charitable organization, educational institution, public research organization, public safety or health organization, environmental protection organization or government institution; or + 3. the number of monthly active users of the Resulting Program across all versions thereof and platforms globally do not exceed 10,000 at any time. + +You will not use any trade mark, service mark, trade name, logo of ConsenSys or any other company or organization in a way that is likely or intended to cause confusion about the owner or authorized user of such marks, names or logos. + +If you have any questions, comments or interest in pursuing any other use cases, please reach out to us at communications@metamask.io. + ****************************** @metamask/gas-fee-controller -21.0.0 <https://github.com/MetaMask/core> +22.0.3 <https://github.com/MetaMask/core> MIT License Copyright (c) 2018 MetaMask @@ -37935,28 +37700,7 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE ****************************** @metamask/json-rpc-engine -10.0.1 <https://github.com/MetaMask/core> -ISC License - -Copyright (c) 2022 MetaMask - -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted, provided that the above -copyright notice and this permission notice appear in all copies. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES -WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR -ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN -ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF -OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - - -****************************** - -@metamask/json-rpc-engine -7.3.3 <https://github.com/MetaMask/core> +10.0.3 <https://github.com/MetaMask/core> ISC License Copyright (c) 2022 MetaMask @@ -37995,27 +37739,6 @@ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -****************************** - -@metamask/json-rpc-engine -9.0.3 <https://github.com/MetaMask/core> -ISC License - -Copyright (c) 2022 MetaMask - -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted, provided that the above -copyright notice and this permission notice appear in all copies. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES -WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR -ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN -ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF -OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - - ****************************** @metamask/json-rpc-middleware-stream @@ -38040,7 +37763,7 @@ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ****************************** @metamask/json-rpc-middleware-stream -8.0.5 <https://github.com/MetaMask/core> +8.0.7 <https://github.com/MetaMask/core> ISC License Copyright (c) 2020 MetaMask @@ -38061,7 +37784,7 @@ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ****************************** @metamask/keyring-api -10.1.0 <https://github.com/MetaMask/keyring-api> +17.3.0 <https://github.com/MetaMask/keyring-api> Copyright ConsenSys Software Inc. 2022. All rights reserved. You acknowledge and agree that ConsenSys Software Inc. (“ConsenSys”) (or ConsenSys’s licensors) own all legal right, title and interest in and to the work, software, application, source code, documentation and any other documents in this repository (collectively, the “Program”), including any intellectual property rights which subsist in the Program (whether those rights happen to be registered or not, and wherever in the world those rights may exist), whether in source code or any other form. @@ -38085,7 +37808,7 @@ If you have any questions, comments or interest in pursuing any other use cases, ****************************** @metamask/keyring-controller -18.0.0 <https://github.com/MetaMask/core> +19.2.2 <https://github.com/MetaMask/core> MIT License Copyright (c) 2018 MetaMask @@ -38110,11 +37833,11 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE ****************************** -@metamask/key-tree -10.0.0 <https://github.com/MetaMask/key-tree> +@metamask/keyring-controller +21.0.0 <https://github.com/MetaMask/core> MIT License -Copyright (c) 2021 MetaMask +Copyright (c) 2018 MetaMask Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal @@ -38132,13 +37855,54 @@ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. +****************************** + +@metamask/keyring-internal-api +4.0.3 <https://github.com/MetaMask/accounts> +license: Custom: https://github.com/MetaMask/accounts +authors: undefined + +****************************** + +@metamask/keyring-internal-api +6.0.0 <https://github.com/MetaMask/accounts> +license: Custom: https://github.com/MetaMask/accounts +authors: undefined + +****************************** + +@metamask/keyring-internal-snap-client +4.0.1 <https://github.com/MetaMask/accounts> +license: Custom: https://github.com/MetaMask/accounts +authors: undefined + +****************************** + +@metamask/keyring-snap-client +4.0.1 <https://github.com/MetaMask/accounts> +license: Custom: https://github.com/MetaMask/accounts +authors: undefined + +****************************** + +@metamask/keyring-utils +2.3.1 <https://github.com/MetaMask/accounts> +license: Custom: https://github.com/MetaMask/accounts +authors: undefined + +****************************** + +@metamask/keyring-utils +3.0.0 <https://github.com/MetaMask/accounts> +license: Custom: https://github.com/MetaMask/accounts +authors: undefined + ****************************** @metamask/key-tree -9.1.2 <https://github.com/MetaMask/key-tree> +10.1.1 <https://github.com/MetaMask/key-tree> MIT License Copyright (c) 2021 MetaMask @@ -38164,18 +37928,11 @@ SOFTWARE. ****************************** -@metamask/logging-controller -6.0.1 <https://github.com/MetaMask/core> -license: MIT -authors: undefined - -****************************** - -@metamask/message-manager -11.0.2 <https://github.com/MetaMask/core> +@metamask/key-tree +9.1.2 <https://github.com/MetaMask/key-tree> MIT License -Copyright (c) 2018 MetaMask +Copyright (c) 2021 MetaMask Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal @@ -38193,7 +37950,15 @@ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + +****************************** +@metamask/logging-controller +6.0.4 <https://github.com/MetaMask/core> +license: MIT +authors: undefined ****************************** @@ -38224,11 +37989,37 @@ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ****************************** -@metamask/network-controller -21.1.0 <https://github.com/MetaMask/core> +@metamask/multichain-network-controller +0.1.1 <https://github.com/MetaMask/core> MIT License -Copyright (c) 2018 MetaMask +Copyright (c) 2025 MetaMask + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + + +****************************** + +@metamask/multichain-transactions-controller +0.7.2 <https://github.com/MetaMask/core> +MIT License + +Copyright (c) 2025 MetaMask Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal @@ -38251,7 +38042,7 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE ****************************** @metamask/network-controller -22.0.2 <https://github.com/MetaMask/core> +22.2.1 <https://github.com/MetaMask/core> MIT License Copyright (c) 2018 MetaMask @@ -38304,7 +38095,7 @@ SOFTWARE. ****************************** @metamask/notification-services-controller -0.15.0 <https://github.com/MetaMask/core> +2.0.0 <https://github.com/MetaMask/core> MIT License Copyright (c) 2024 MetaMask @@ -38357,7 +38148,7 @@ THE SOFTWARE. ****************************** @metamask/object-multiplex -2.0.0 <https://github.com/MetaMask/object-multiplex> +2.1.0 <https://github.com/MetaMask/object-multiplex> ISC License Copyright (c) 2020 MetaMask @@ -38420,7 +38211,7 @@ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ****************************** @metamask/permission-controller -11.0.3 <https://github.com/MetaMask/core> +11.0.6 <https://github.com/MetaMask/core> MIT License Copyright (c) 2018 MetaMask @@ -38446,7 +38237,7 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE ****************************** @metamask/phishing-controller -12.0.3 <https://github.com/MetaMask/core> +12.4.1 <https://github.com/MetaMask/core> MIT License Copyright (c) 2018 MetaMask @@ -38472,33 +38263,7 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE ****************************** @metamask/polling-controller -11.0.0 <https://github.com/MetaMask/core> -MIT License - -Copyright (c) 2018 MetaMask - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - - -****************************** - -@metamask/polling-controller -12.0.1 <https://github.com/MetaMask/core> +12.0.3 <https://github.com/MetaMask/core> MIT License Copyright (c) 2018 MetaMask @@ -38524,7 +38289,7 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE ****************************** @metamask/post-message-stream -8.1.1 <https://github.com/MetaMask/post-message-stream> +9.0.0 <https://github.com/MetaMask/post-message-stream> ISC License Copyright (c) 2020 MetaMask @@ -38552,7 +38317,7 @@ authors: undefined ****************************** @metamask/preferences-controller -14.0.0 <https://github.com/MetaMask/core> +15.0.1 <https://github.com/MetaMask/core> MIT License Copyright (c) 2018 MetaMask @@ -38578,7 +38343,7 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE ****************************** @metamask/profile-sync-controller -1.0.2 <https://github.com/MetaMask/core> +10.1.0 <https://github.com/MetaMask/core> MIT License Copyright (c) 2024 MetaMask @@ -38631,7 +38396,7 @@ SOFTWARE. ****************************** @metamask/providers -18.1.1 <https://github.com/MetaMask/providers> +20.0.0 <https://github.com/MetaMask/providers> MIT License Copyright (c) 2020 MetaMask @@ -38774,7 +38539,7 @@ SOFTWARE. ****************************** @metamask/remote-feature-flag-controller -1.0.0 <https://github.com/MetaMask/core> +1.6.0 <https://github.com/MetaMask/core> This project is licensed under either of * MIT license ([LICENSE.MIT](LICENSE.MIT)) @@ -38785,7 +38550,7 @@ at your option. ****************************** @metamask/rpc-errors -7.0.1 <https://github.com/MetaMask/rpc-errors> +7.0.2 <https://github.com/MetaMask/rpc-errors> MIT License Copyright (c) 2019 MetaMask @@ -38905,7 +38670,7 @@ If you have any questions, comments or interest in pursuing any other use cases, ****************************** @metamask/selected-network-controller -19.0.0 <https://github.com/MetaMask/core> +21.0.0 <https://github.com/MetaMask/core> MIT License Copyright (c) 2023 MetaMask @@ -38931,7 +38696,7 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE ****************************** @metamask/signature-controller -22.0.0 <https://github.com/MetaMask/core> +23.1.0 <https://github.com/MetaMask/core> MIT License Copyright (c) 2023 MetaMask @@ -38964,7 +38729,7 @@ authors: Dan Finlay <dan@danfinlay.com> ****************************** @metamask/smart-transactions-controller -15.0.0 <https://github.com/MetaMask/smart-transactions-controller> +16.1.0 <https://github.com/MetaMask/smart-transactions-controller> Copyright ConsenSys Software Inc. 2020. All rights reserved. You acknowledge and agree that ConsenSys Software Inc. (“ConsenSys”) (or ConsenSys’s licensors) own all legal right, title and interest in and to the work, software, application, source code, documentation and any other documents in this repository (collectively, the “Program”), including any intellectual property rights which subsist in the Program (whether those rights happen to be registered or not, and wherever in the world those rights may exist), whether in source code or any other form. @@ -38988,7 +38753,7 @@ If you have any questions, comments or interest in pursuing any other use cases, ****************************** @metamask/snaps-controllers -9.14.0 <https://github.com/MetaMask/snaps> +11.0.0 <https://github.com/MetaMask/snaps> Copyright ConsenSys Software Inc. 2021. All rights reserved. You acknowledge and agree that ConsenSys Software Inc. (“ConsenSys”) (or ConsenSys’s licensors) own all legal right, title and interest in and to the work, software, application, source code, documentation and any other documents in this repository (collectively, the “Program”), including any intellectual property rights which subsist in the Program (whether those rights happen to be registered or not, and wherever in the world those rights may exist), whether in source code or any other form. @@ -39012,7 +38777,7 @@ If you have any questions, comments or interest in pursuing any other use cases, ****************************** @metamask/snaps-execution-environments -6.10.0 <https://github.com/MetaMask/snaps> +7.0.0 <https://github.com/MetaMask/snaps> Copyright ConsenSys Software Inc. 2022. All rights reserved. You acknowledge and agree that ConsenSys Software Inc. (“ConsenSys”) (or ConsenSys’s licensors) own all legal right, title and interest in and to the work, software, application, source code, documentation and any other documents in this repository (collectively, the “Program”), including any intellectual property rights which subsist in the Program (whether those rights happen to be registered or not, and wherever in the world those rights may exist), whether in source code or any other form. @@ -39038,7 +38803,7 @@ If you have any questions, comments or interest in pursuing any other use cases, ****************************** @metamask/snaps-registry -3.2.2 <https://github.com/MetaMask/snaps-registry> +3.2.3 <https://github.com/MetaMask/snaps-registry> Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -39245,7 +39010,7 @@ If you have any questions, comments or interest in pursuing any other use cases, ****************************** @metamask/snaps-rpc-methods -11.6.0 <https://github.com/MetaMask/snaps> +12.0.0 <https://github.com/MetaMask/snaps> Copyright ConsenSys Software Inc. 2021. All rights reserved. You acknowledge and agree that ConsenSys Software Inc. (“ConsenSys”) (or ConsenSys’s licensors) own all legal right, title and interest in and to the work, software, application, source code, documentation and any other documents in this repository (collectively, the “Program”), including any intellectual property rights which subsist in the Program (whether those rights happen to be registered or not, and wherever in the world those rights may exist), whether in source code or any other form. @@ -39290,7 +39055,7 @@ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ****************************** @metamask/snaps-sdk -6.12.0 <https://github.com/MetaMask/snaps> +6.19.0 <https://github.com/MetaMask/snaps> ISC License Copyright (c) 2023 MetaMask @@ -39311,7 +39076,7 @@ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ****************************** @metamask/snaps-utils -8.6.0 <https://github.com/MetaMask/snaps> +8.10.0 <https://github.com/MetaMask/snaps> ISC License Copyright (c) 2022 MetaMask @@ -39329,10 +39094,38 @@ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +****************************** + +@metamask/snaps-utils +9.0.1 <https://github.com/MetaMask/snaps> +ISC License + +Copyright (c) 2022 MetaMask + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + + +****************************** + +@metamask/solana-wallet-snap +1.16.0 <https://github.com/MetaMask/snap-solana-wallet> +license: (MIT-0 OR Apache-2.0) +authors: undefined + ****************************** @metamask/stake-sdk -0.3.0 <https://github.com/MetaMask/stake-sdk> +1.0.0 <https://github.com/MetaMask/stake-sdk> license: Custom: https://nodejs.org authors: undefined @@ -39354,14 +39147,14 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI ****************************** @metamask/swappable-obj-proxy -2.2.0 <https://github.com/MetaMask/swappable-obj-proxy> +2.3.0 <https://github.com/MetaMask/swappable-obj-proxy> license: ISC authors: undefined ****************************** @metamask/swaps-controller -11.0.0 <https://github.com/MetaMask/swaps-controller> +12.1.0 <https://github.com/MetaMask/swaps-controller> Copyright ConsenSys Software Inc. 2022. All rights reserved. You acknowledge and agree that ConsenSys Software Inc. (“ConsenSys”) (or ConsenSys’s licensors) own all legal right, title and interest in and to the work, software, application, source code, documentation and any other documents in this repository (collectively, the “Program”), including any intellectual property rights which subsist in the Program (whether those rights happen to be registered or not, and wherever in the world those rights may exist), whether in source code or any other form. @@ -39384,11 +39177,11 @@ If you have any questions, comments or interest in pursuing any other use cases, ****************************** -@metamask/transaction-controller -39.1.0 <https://github.com/MetaMask/core> +@metamask/token-search-discovery-controller +2.1.0 <https://github.com/MetaMask/core> MIT License -Copyright (c) 2018 MetaMask +Copyright (c) 2025 MetaMask Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal @@ -39410,29 +39203,34 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE ****************************** -@metamask/utils -10.0.1 <https://github.com/MetaMask/utils> -ISC License +@metamask/transaction-controller +45.0.0 <https://github.com/MetaMask/core> +MIT License -Copyright (c) 2022 MetaMask +Copyright (c) 2018 MetaMask -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted, provided that the above -copyright notice and this permission notice appear in all copies. +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES -WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR -ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN -ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF -OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE ****************************** @metamask/utils -3.6.0 <https://github.com/MetaMask/utils> +10.0.1 <https://github.com/MetaMask/utils> ISC License Copyright (c) 2022 MetaMask @@ -39453,7 +39251,7 @@ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ****************************** @metamask/utils -5.0.2 <https://github.com/MetaMask/utils> +11.2.0 <https://github.com/MetaMask/utils> ISC License Copyright (c) 2022 MetaMask @@ -39495,7 +39293,7 @@ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ****************************** @metamask/utils -9.2.1 <https://github.com/MetaMask/utils> +9.3.0 <https://github.com/MetaMask/utils> ISC License Copyright (c) 2022 MetaMask @@ -40056,7 +39854,49 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** minipass -7.1.2 <https://github.com/isaacs/minipass> +3.1.6 <https://github.com/isaacs/minipass> +The ISC License + +Copyright (c) npm, Inc. and Contributors + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR +IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + + +****************************** + +minipass +3.3.6 <https://github.com/isaacs/minipass> +The ISC License + +Copyright (c) 2017-2022 npm, Inc., Isaac Z. Schlueter, and Contributors + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR +IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + + +****************************** + +minipass +4.2.8 <https://github.com/isaacs/minipass> The ISC License Copyright (c) 2017-2023 npm, Inc., Isaac Z. Schlueter, and Contributors @@ -40908,21 +40748,6 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -****************************** - -nan -2.20.0 <https://github.com/nodejs/nan> -The MIT License (MIT) - -Copyright (c) 2018 [NAN contributors](<https://github.com/nodejs/nan#wg-members--collaborators>) - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - ****************************** nanoid @@ -41248,7 +41073,7 @@ THE SOFTWARE. ****************************** @noble/curves -1.3.0 <https://github.com/paulmillr/noble-curves> +1.4.2 <https://github.com/paulmillr/noble-curves> The MIT License (MIT) Copyright (c) 2022 Paul Miller (https://paulmillr.com) @@ -41274,7 +41099,7 @@ THE SOFTWARE. ****************************** @noble/curves -1.4.0 <https://github.com/paulmillr/noble-curves> +1.8.1 <https://github.com/paulmillr/noble-curves> The MIT License (MIT) Copyright (c) 2022 Paul Miller (https://paulmillr.com) @@ -41351,6 +41176,32 @@ THE SOFTWARE. ****************************** +@noble/hashes +1.7.1 <https://github.com/paulmillr/noble-hashes> +The MIT License (MIT) + +Copyright (c) 2022 Paul Miller (https://paulmillr.com) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the “Software”), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + +****************************** + nocache 3.0.4 <https://github.com/helmetjs/nocache> The MIT License (MIT) @@ -42176,7 +42027,7 @@ SOFTWARE. ****************************** node-releases -2.0.19 <https://github.com/chicoxyzzy/node-releases> +2.0.18 <https://github.com/chicoxyzzy/node-releases> The MIT License Copyright (c) 2017 Sergey Rubanov (https://github.com/chicoxyzzy) @@ -42600,7 +42451,7 @@ THE SOFTWARE. ****************************** object.assign -4.1.7 <https://github.com/ljharb/object.assign> +4.1.5 <https://github.com/ljharb/object.assign> The MIT License (MIT) Copyright (c) 2014 Jordan Harband @@ -42681,7 +42532,7 @@ SOFTWARE. ****************************** object-inspect -1.13.3 <https://github.com/inspect-js/object-inspect> +1.13.1 <https://github.com/inspect-js/object-inspect> MIT License Copyright (c) 2013 James Halliday @@ -42996,11 +42847,305 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -on-headers -1.0.2 <https://github.com/jshttp/on-headers> +on-headers +1.0.2 <https://github.com/jshttp/on-headers> +(The MIT License) + +Copyright (c) 2014 Douglas Christopher Wilson + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +'Software'), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +****************************** + +open +6.4.0 <https://github.com/sindresorhus/open> +MIT License + +Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com) + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +****************************** + +open +8.4.2 <https://github.com/sindresorhus/open> +MIT License + +Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (https://sindresorhus.com) + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +****************************** + +opencollective-postinstall +2.0.3 <https://github.com/opencollective/opencollective-postinstall> +MIT License + +Copyright (c) 2018 Open Collective + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + +****************************** + +opencv-bindings +4.5.5 <https://github.com/wesuuu/opencvjs> +license: ISC +authors: undefined + +****************************** + +ora +3.4.0 <https://github.com/sindresorhus/ora> +MIT License + +Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com) + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +****************************** + +ora +5.4.1 <https://github.com/sindresorhus/ora> +MIT License + +Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (https://sindresorhus.com) + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +****************************** + +osenv +0.1.5 <https://github.com/npm/osenv> +The ISC License + +Copyright (c) Isaac Z. Schlueter and Contributors + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR +IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + + +****************************** + +os-homedir +1.0.2 <https://github.com/sindresorhus/os-homedir> +The MIT License (MIT) + +Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + + +****************************** + +os-tmpdir +1.0.2 <https://github.com/sindresorhus/os-tmpdir> +The MIT License (MIT) + +Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + + +****************************** + +package-json-from-dist +1.0.1 <https://github.com/isaacs/package-json-from-dist> +All packages under `src/` are licensed according to the terms in +their respective `LICENSE` or `LICENSE.md` files. + +The remainder of this project is licensed under the Blue Oak +Model License, as follows: + +----- + +# Blue Oak Model License + +Version 1.0.0 + +## Purpose + +This license gives everyone as much permission to work with +this software as possible, while protecting contributors +from liability. + +## Acceptance + +In order to receive this license, you must agree to its +rules. The rules of this license are both obligations +under that agreement and conditions to your license. +You must not do anything with this software that triggers +a rule that you cannot or will not follow. + +## Copyright + +Each contributor licenses you to do everything with this +software that would otherwise infringe that contributor's +copyright in it. + +## Notices + +You must ensure that everyone who gets a copy of +any part of this software from you, with or without +changes, also gets the text of this license or a link to +<https://blueoakcouncil.org/license/1.0.0>. + +## Excuse + +If anyone notifies you in writing that you have not +complied with [Notices](#notices), you can keep your +license by taking all practical steps to comply within 30 +days after the notice. If you do not do so, your license +ends immediately. + +## Patent + +Each contributor licenses you to do everything with this +software that would otherwise infringe any patent claims +they can license or become able to license. + +## Reliability + +No contributor can revoke this license. + +## No Liability + +***As far as the law allows, this software comes as is, +without any warranty or condition, and no contributor +will be liable to anyone for any damages related to this +software or this license, under any kind of legal claim.*** + + +****************************** + +pac-proxy-agent +7.0.2 <https://github.com/TooTallNate/proxy-agents> +(The MIT License) + +Copyright (c) 2014 Nathan Rajlich <nathan@tootallnate.net> + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +'Software'), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +****************************** + +pac-resolver +7.0.1 <https://github.com/TooTallNate/proxy-agents> (The MIT License) -Copyright (c) 2014 Douglas Christopher Wilson +Copyright (c) 2013 Nathan Rajlich <nathan@tootallnate.net> Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the @@ -43021,44 +43166,13 @@ CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -****************************** - -open -6.4.0 <https://github.com/sindresorhus/open> -MIT License - -Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com) - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - -****************************** - -open -8.4.2 <https://github.com/sindresorhus/open> -MIT License - -Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (https://sindresorhus.com) - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - ****************************** -opencollective-postinstall -2.0.3 <https://github.com/opencollective/opencollective-postinstall> -MIT License +pako +1.0.11 <https://github.com/nodeca/pako> +(The MIT License) -Copyright (c) 2018 Open Collective +Copyright (C) 2014-2017 by Vitaly Puzrin and Andrei Tuputcyn Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal @@ -43067,186 +43181,25 @@ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - - -****************************** - -opencv-bindings -4.5.5 <https://github.com/wesuuu/opencvjs> -license: ISC -authors: undefined - -****************************** - -ora -3.4.0 <https://github.com/sindresorhus/ora> -MIT License - -Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com) - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. ****************************** -ora -5.4.1 <https://github.com/sindresorhus/ora> +@parcel/watcher +2.3.0 <https://github.com/parcel-bundler/watcher> MIT License -Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (https://sindresorhus.com) - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - -****************************** - -package-json-from-dist -1.0.1 <https://github.com/isaacs/package-json-from-dist> -All packages under `src/` are licensed according to the terms in -their respective `LICENSE` or `LICENSE.md` files. - -The remainder of this project is licensed under the Blue Oak -Model License, as follows: - ------ - -# Blue Oak Model License - -Version 1.0.0 - -## Purpose - -This license gives everyone as much permission to work with -this software as possible, while protecting contributors -from liability. - -## Acceptance - -In order to receive this license, you must agree to its -rules. The rules of this license are both obligations -under that agreement and conditions to your license. -You must not do anything with this software that triggers -a rule that you cannot or will not follow. - -## Copyright - -Each contributor licenses you to do everything with this -software that would otherwise infringe that contributor's -copyright in it. - -## Notices - -You must ensure that everyone who gets a copy of -any part of this software from you, with or without -changes, also gets the text of this license or a link to -<https://blueoakcouncil.org/license/1.0.0>. - -## Excuse - -If anyone notifies you in writing that you have not -complied with [Notices](#notices), you can keep your -license by taking all practical steps to comply within 30 -days after the notice. If you do not do so, your license -ends immediately. - -## Patent - -Each contributor licenses you to do everything with this -software that would otherwise infringe any patent claims -they can license or become able to license. - -## Reliability - -No contributor can revoke this license. - -## No Liability - -***As far as the law allows, this software comes as is, -without any warranty or condition, and no contributor -will be liable to anyone for any damages related to this -software or this license, under any kind of legal claim.*** - - -****************************** - -pac-proxy-agent -7.0.2 <https://github.com/TooTallNate/proxy-agents> -(The MIT License) - -Copyright (c) 2014 Nathan Rajlich <nathan@tootallnate.net> - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -'Software'), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - -****************************** - -pac-resolver -7.0.1 <https://github.com/TooTallNate/proxy-agents> -(The MIT License) - -Copyright (c) 2013 Nathan Rajlich <nathan@tootallnate.net> - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -'Software'), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -****************************** - -pako -1.0.11 <https://github.com/nodeca/pako> -(The MIT License) - -Copyright (C) 2014-2017 by Vitaly Puzrin and Andrei Tuputcyn +Copyright (c) 2017-present Devon Govett Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal @@ -43255,21 +43208,21 @@ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. ****************************** -@parcel/watcher +@parcel/watcher-linux-x64-glibc 2.3.0 <https://github.com/parcel-bundler/watcher> MIT License @@ -43296,7 +43249,7 @@ SOFTWARE. ****************************** -@parcel/watcher-darwin-arm64 +@parcel/watcher-linux-x64-musl 2.3.0 <https://github.com/parcel-bundler/watcher> MIT License @@ -43447,24 +43400,24 @@ authors: Jeff Dickey @jdxcode path 0.12.7 <https://github.com/jinder/path> -Copyright Joyent, Inc. and other Node contributors. All rights reserved. -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to -deal in the Software without restriction, including without limitation the -rights to use, copy, modify, merge, publish, distribute, sublicense, and/or -sell copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS -IN THE SOFTWARE. +Copyright Joyent, Inc. and other Node contributors. All rights reserved. +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to +deal in the Software without restriction, including without limitation the +rights to use, copy, modify, merge, publish, distribute, sublicense, and/or +sell copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS +IN THE SOFTWARE. ****************************** @@ -43954,21 +43907,6 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -****************************** - -pify -3.0.0 <https://github.com/sindresorhus/pify> -MIT License - -Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com) - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - ****************************** pify @@ -44663,7 +44601,7 @@ SOFTWARE. ****************************** postcss -8.4.49 <https://github.com/postcss/postcss> +8.4.47 <https://github.com/postcss/postcss> The MIT License (MIT) Copyright 2013 Andrey Sitnik <andrey@sitnik.ru> @@ -45100,365 +45038,365 @@ SOFTWARE. protobufjs 7.3.2 <https://github.com/protobufjs/protobuf.js> -This license applies to all parts of protobuf.js except those files -either explicitly including or referencing a different license or -located in a directory containing a different LICENSE file. - ---- - -Copyright (c) 2016, Daniel Wirtz All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - -* Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. -* Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. -* Neither the name of its author, nor the names of its contributors - may be used to endorse or promote products derived from this software - without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - ---- - -Code generated by the command line utilities is owned by the owner -of the input file used when generating it. This code is not -standalone and requires a support library to be linked with it. This -support library is itself covered by the above license. +This license applies to all parts of protobuf.js except those files +either explicitly including or referencing a different license or +located in a directory containing a different LICENSE file. + +--- + +Copyright (c) 2016, Daniel Wirtz All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + +* Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +* Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +* Neither the name of its author, nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +--- + +Code generated by the command line utilities is owned by the owner +of the input file used when generating it. This code is not +standalone and requires a support library to be linked with it. This +support library is itself covered by the above license. ****************************** @protobufjs/aspromise 1.1.2 <https://github.com/dcodeIO/protobuf.js> -Copyright (c) 2016, Daniel Wirtz All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - -* Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. -* Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. -* Neither the name of its author, nor the names of its contributors - may be used to endorse or promote products derived from this software - without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +Copyright (c) 2016, Daniel Wirtz All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + +* Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +* Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +* Neither the name of its author, nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ****************************** @protobufjs/base64 1.1.2 <https://github.com/dcodeIO/protobuf.js> -Copyright (c) 2016, Daniel Wirtz All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - -* Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. -* Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. -* Neither the name of its author, nor the names of its contributors - may be used to endorse or promote products derived from this software - without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +Copyright (c) 2016, Daniel Wirtz All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + +* Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +* Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +* Neither the name of its author, nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ****************************** @protobufjs/codegen 2.0.4 <https://github.com/dcodeIO/protobuf.js> -Copyright (c) 2016, Daniel Wirtz All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - -* Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. -* Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. -* Neither the name of its author, nor the names of its contributors - may be used to endorse or promote products derived from this software - without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +Copyright (c) 2016, Daniel Wirtz All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + +* Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +* Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +* Neither the name of its author, nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ****************************** @protobufjs/eventemitter 1.1.0 <https://github.com/dcodeIO/protobuf.js> -Copyright (c) 2016, Daniel Wirtz All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - -* Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. -* Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. -* Neither the name of its author, nor the names of its contributors - may be used to endorse or promote products derived from this software - without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +Copyright (c) 2016, Daniel Wirtz All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + +* Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +* Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +* Neither the name of its author, nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ****************************** @protobufjs/fetch 1.1.0 <https://github.com/dcodeIO/protobuf.js> -Copyright (c) 2016, Daniel Wirtz All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - -* Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. -* Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. -* Neither the name of its author, nor the names of its contributors - may be used to endorse or promote products derived from this software - without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +Copyright (c) 2016, Daniel Wirtz All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + +* Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +* Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +* Neither the name of its author, nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ****************************** @protobufjs/float 1.0.2 <https://github.com/dcodeIO/protobuf.js> -Copyright (c) 2016, Daniel Wirtz All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - -* Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. -* Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. -* Neither the name of its author, nor the names of its contributors - may be used to endorse or promote products derived from this software - without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +Copyright (c) 2016, Daniel Wirtz All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + +* Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +* Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +* Neither the name of its author, nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ****************************** @protobufjs/inquire 1.1.0 <https://github.com/dcodeIO/protobuf.js> -Copyright (c) 2016, Daniel Wirtz All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - -* Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. -* Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. -* Neither the name of its author, nor the names of its contributors - may be used to endorse or promote products derived from this software - without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +Copyright (c) 2016, Daniel Wirtz All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + +* Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +* Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +* Neither the name of its author, nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ****************************** @protobufjs/path 1.1.2 <https://github.com/dcodeIO/protobuf.js> -Copyright (c) 2016, Daniel Wirtz All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - -* Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. -* Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. -* Neither the name of its author, nor the names of its contributors - may be used to endorse or promote products derived from this software - without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +Copyright (c) 2016, Daniel Wirtz All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + +* Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +* Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +* Neither the name of its author, nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ****************************** @protobufjs/pool 1.1.0 <https://github.com/dcodeIO/protobuf.js> -Copyright (c) 2016, Daniel Wirtz All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - -* Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. -* Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. -* Neither the name of its author, nor the names of its contributors - may be used to endorse or promote products derived from this software - without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +Copyright (c) 2016, Daniel Wirtz All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + +* Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +* Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +* Neither the name of its author, nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ****************************** @protobufjs/utf8 1.1.0 <https://github.com/dcodeIO/protobuf.js> -Copyright (c) 2016, Daniel Wirtz All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - -* Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. -* Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. -* Neither the name of its author, nor the names of its contributors - may be used to endorse or promote products derived from this software - without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +Copyright (c) 2016, Daniel Wirtz All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + +* Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +* Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +* Neither the name of its author, nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ****************************** @@ -45576,21 +45514,6 @@ The above copyright notice and this permission notice shall be included in all c THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -****************************** - -p-throttle -4.1.1 <https://github.com/sindresorhus/p-throttle> -MIT License - -Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (https://sindresorhus.com) - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - ****************************** p-try @@ -45751,6 +45674,234 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI +****************************** + +qrcode-terminal +0.11.0 <https://github.com/gtanner/qrcode-terminal> + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + +============================================================== +This product also include the following software: +============================================================== + + QRCode for JavaScript + + Copyright (c) 2009 Kazuhiko Arase + + URL: http://www.d-project.com/ + + Licensed under the MIT license: + http://www.opensource.org/licenses/mit-license.php + + The word "QR Code" is registered trademark of + DENSO WAVE INCORPORATED + http://www.denso-wave.com/qrcode/faqpatent-e.html + +Located in ./vendor/QRCode +- project has been modified to work in Node and some refactoring was done for code cleanup + + ****************************** qs @@ -46987,7 +47138,7 @@ authors: undefined ****************************** @react-native-community/blur -4.4.0 <https://github.com/react-native-community/react-native-blur> +4.4.1 <https://github.com/react-native-community/react-native-blur> MIT License Copyright (c) 2022 React Native Community @@ -48604,7 +48755,7 @@ SOFTWARE. ****************************** react-native-reanimated -3.3.0 <https://github.com/software-mansion/react-native-reanimated> +3.4.2 <https://github.com/software-mansion/react-native-reanimated> The MIT License (MIT) Copyright (c) 2016 Software Mansion <swmansion.com> @@ -49243,220 +49394,193 @@ SOFTWARE. ****************************** -react-native-view-shot -3.1.2 <https://github.com/gre/react-native-view-shot> -The MIT License (MIT) - -Copyright (c) 2016 Gaëtan Renaudeau - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - - -****************************** - -@react-native/virtualized-lists -0.72.8 <https://github.com/facebook/react-native> -license: MIT -authors: undefined - -****************************** - -react-native-webview-invoke -0.6.2 <https://github.com/pinqy520/react-native-webview-invoke> -Copyright (c) 2016 Huang Qi - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - -****************************** - -@react-navigation/bottom-tabs -5.11.11 <https://github.com/react-navigation/react-navigation> -MIT License - -Copyright (c) 2017 React Navigation Contributors - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - - -****************************** - -@react-navigation/compat -5.3.20 <https://github.com/react-navigation/react-navigation> -MIT License - -Copyright (c) 2017 React Navigation Contributors - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - - -****************************** - -@react-navigation/core -5.15.3 <https://github.com/react-navigation/react-navigation> -MIT License - -Copyright (c) 2017 React Navigation Contributors - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - - -****************************** - -@react-navigation/native -5.9.4 <https://github.com/react-navigation/react-navigation> -MIT License - -Copyright (c) 2017 React Navigation Contributors - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - - -****************************** - -@react-navigation/routers -5.7.2 <https://github.com/react-navigation/react-navigation> -MIT License - -Copyright (c) 2017 React Navigation Contributors - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - - -****************************** - -@react-navigation/stack -5.14.9 <https://github.com/react-navigation/react-navigation> -MIT License - -Copyright (c) 2017 React Navigation Contributors - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - - -****************************** - -react-redux -8.1.3 <https://github.com/reduxjs/react-redux> +react-native-view-shot +3.1.2 <https://github.com/gre/react-native-view-shot> The MIT License (MIT) -Copyright (c) 2015-present Dan Abramov +Copyright (c) 2016 Gaëtan Renaudeau + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + +****************************** + +@react-native/virtualized-lists +0.72.8 <https://github.com/facebook/react-native> +license: MIT +authors: undefined + +****************************** + +react-native-webview-invoke +0.6.2 <https://github.com/pinqy520/react-native-webview-invoke> +Copyright (c) 2016 Huang Qi + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +****************************** + +@react-navigation/bottom-tabs +5.11.11 <https://github.com/react-navigation/react-navigation> +MIT License + +Copyright (c) 2017 React Navigation Contributors + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + +****************************** + +@react-navigation/compat +5.3.20 <https://github.com/react-navigation/react-navigation> +MIT License + +Copyright (c) 2017 React Navigation Contributors + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + +****************************** + +@react-navigation/core +5.15.3 <https://github.com/react-navigation/react-navigation> +MIT License + +Copyright (c) 2017 React Navigation Contributors + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + +****************************** + +@react-navigation/native +5.9.4 <https://github.com/react-navigation/react-navigation> +MIT License + +Copyright (c) 2017 React Navigation Contributors + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + +****************************** + +@react-navigation/routers +5.7.2 <https://github.com/react-navigation/react-navigation> +MIT License + +Copyright (c) 2017 React Navigation Contributors + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + +****************************** + +@react-navigation/stack +5.14.9 <https://github.com/react-navigation/react-navigation> +MIT License + +Copyright (c) 2017 React Navigation Contributors Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal @@ -49477,6 +49601,33 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +****************************** + +react-redux +8.1.3 <https://github.com/reduxjs/react-redux> +The MIT License (MIT) + +Copyright (c) 2015-present Dan Abramov + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + ****************************** react-refresh @@ -50340,6 +50491,213 @@ TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +****************************** + +recyclerlistview +4.2.3 <https://github.com/Flipkart/recyclerlistview> + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright {yyyy} {name of copyright owner} + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + ****************************** redis-errors @@ -50427,27 +50785,27 @@ SOFTWARE. @reduxjs/toolkit 1.9.7 <https://github.com/reduxjs/redux-toolkit> -MIT License - -Copyright (c) 2018 Mark Erikson - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. +MIT License + +Copyright (c) 2018 Mark Erikson + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. ****************************** @@ -50724,33 +51082,33 @@ SOFTWARE. redux-thunk 2.4.2 <https://github.com/reduxjs/redux-thunk> -The MIT License (MIT) - -Copyright (c) 2015-present Dan Abramov - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. +The MIT License (MIT) + +Copyright (c) 2015-present Dan Abramov + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. ****************************** reflect.getprototypeof -1.0.10 <https://github.com/es-shims/Reflect.getPrototypeOf> +1.0.6 <https://github.com/es-shims/Reflect.getPrototypeOf> MIT License Copyright (c) 2021 ECMAScript Shims @@ -50970,7 +51328,7 @@ SOFTWARE. ****************************** regexp.prototype.flags -1.5.4 <https://github.com/es-shims/RegExp.prototype.flags> +1.5.2 <https://github.com/es-shims/RegExp.prototype.flags> The MIT License (MIT) Copyright (C) 2014 Jordan Harband @@ -50998,7 +51356,7 @@ THE SOFTWARE. ****************************** regexpu-core -6.2.0 <https://github.com/mathiasbynens/regexpu-core> +6.1.1 <https://github.com/mathiasbynens/regexpu-core> Copyright Mathias Bynens <https://mathiasbynens.be/> Permission is hereby granted, free of charge, to any person obtaining @@ -51052,7 +51410,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** regjsparser -0.12.0 <https://github.com/jviereck/regjsparser> +0.11.2 <https://github.com/jviereck/regjsparser> Copyright (c) Julian Viereck and Contributors, All Rights Reserved. Redistribution and use in source and binary forms, with or without @@ -51076,6 +51434,13 @@ ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +****************************** + +remove-trailing-slash +0.1.1 <https://github.com/stephenmathieson/remove-trailing-slash> +license: MIT +authors: Stephen Mathieson <me@stephenmathieson.com> + ****************************** @reown/walletkit @@ -51406,60 +51771,60 @@ SOFTWARE. reselect 4.1.8 <https://github.com/reduxjs/reselect> -The MIT License (MIT) - -Copyright (c) 2015-2018 Reselect Contributors - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. +The MIT License (MIT) + +Copyright (c) 2015-2018 Reselect Contributors + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. ****************************** reselect 5.1.1 <https://github.com/reduxjs/reselect> -The MIT License (MIT) - -Copyright (c) 2015-2018 Reselect Contributors - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. +The MIT License (MIT) + +Copyright (c) 2015-2018 Reselect Contributors + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. ****************************** resolve -1.22.10 <https://github.com/browserify/resolve> +1.22.8 <https://github.com/browserify/resolve> MIT License Copyright (c) 2012 James Halliday @@ -52822,7 +53187,7 @@ rxjs ****************************** safe-array-concat -1.1.3 <https://github.com/ljharb/safe-array-concat> +1.1.2 <https://github.com/ljharb/safe-array-concat> MIT License Copyright (c) 2023 Jordan Harband @@ -52907,33 +53272,6 @@ safe-json-stringify license: MIT authors: Debitoor -****************************** - -safe-push-apply -1.0.0 <https://github.com/ljharb/safe-push-apply> -MIT License - -Copyright (c) 2024 Jordan Harband - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - - ****************************** safer-buffer @@ -52964,7 +53302,7 @@ SOFTWARE. ****************************** safe-regex-test -1.1.0 <https://github.com/ljharb/safe-regex-test> +1.0.3 <https://github.com/ljharb/safe-regex-test> MIT License Copyright (c) 2022 Jordan Harband @@ -53187,7 +53525,7 @@ THE SOFTWARE. ****************************** @scure/base -1.1.6 <https://github.com/paulmillr/scure-base> +1.1.9 <https://github.com/paulmillr/scure-base> The MIT License (MIT) Copyright (c) 2022 Paul Miller (https://paulmillr.com) @@ -53214,7 +53552,7 @@ THE SOFTWARE. ****************************** @scure/bip32 -1.3.3 <https://github.com/paulmillr/scure-bip32> +1.4.0 <https://github.com/paulmillr/scure-bip32> The MIT License (MIT) Copyright (c) 2022 Patricio Palladino, Paul Miller (paulmillr.com) @@ -53241,7 +53579,7 @@ THE SOFTWARE. ****************************** @scure/bip39 -1.2.2 <https://github.com/paulmillr/scure-bip39> +1.3.0 <https://github.com/paulmillr/scure-bip39> The MIT License (MIT) Copyright (c) 2022 Patricio Palladino, Paul Miller (paulmillr.com) @@ -53265,36 +53603,6 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -****************************** - -secp256k1 -3.8.1 <https://github.com/cryptocoinjs/secp256k1-node> -The MIT License (MIT) - -Copyright (c) 2014-2016 secp256k1-node contributors - -Parts of this software are based on bn.js, elliptic, hash.js -Copyright (c) 2014-2016 Fedor Indutny - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. - - ****************************** secp256k1 @@ -53678,7 +53986,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ****************************** -@sentry/cli-darwin +@sentry/cli-linux-x64 2.36.6 <https://github.com/getsentry/sentry-cli> license: BSD-3-Clause authors: undefined @@ -54482,33 +54790,6 @@ set-immediate-shim license: MIT authors: Sindre Sorhus <sindresorhus@gmail.com> -****************************** - -set-proto -1.0.0 <https://github.com/ljharb/set-proto> -MIT License - -Copyright (c) 2024 Jordan Harband - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - - ****************************** setprototypeof @@ -55237,89 +55518,21 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -side-channel -1.1.0 <https://github.com/ljharb/side-channel> -MIT License - -Copyright (c) 2019 Jordan Harband - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - - -****************************** - -side-channel-list -1.0.0 <https://github.com/ljharb/side-channel-list> -MIT License - -Copyright (c) 2024 Jordan Harband - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - - -****************************** - -side-channel-map -1.0.1 <https://github.com/ljharb/side-channel-map> -MIT License - -Copyright (c) 2024 Jordan Harband +@shopify/flash-list +1.7.6 <https://github.com/Shopify/flash-list> +Copyright 2022-present, Shopify Inc. -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** -side-channel-weakmap -1.0.2 <https://github.com/ljharb/side-channel-weakmap> +side-channel +1.0.6 <https://github.com/ljharb/side-channel> MIT License Copyright (c) 2019 Jordan Harband @@ -55542,28 +55755,28 @@ THE SOFTWARE. @sinclair/typebox 0.27.8 <https://github.com/sinclairzx81/typebox> -TypeBox: JSON Schema Type Builder with Static Type Resolution for TypeScript - -The MIT License (MIT) - -Copyright (c) 2017-2023 Haydn Paterson (sinclair) <haydn.developer@gmail.com> - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +TypeBox: JSON Schema Type Builder with Static Type Resolution for TypeScript + +The MIT License (MIT) + +Copyright (c) 2017-2023 Haydn Paterson (sinclair) <haydn.developer@gmail.com> + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** @@ -55954,6 +56167,162 @@ CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +****************************** + +@solana/addresses +2.0.0 <https://github.com/solana-labs/solana-web3.js> +Copyright (c) 2023 Solana Labs, Inc + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +****************************** + +@solana/assertions +2.0.0 <https://github.com/solana-labs/solana-web3.js> +Copyright (c) 2023 Solana Labs, Inc + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +****************************** + +@solana/codecs-core +2.0.0 <https://github.com/solana-labs/solana-web3.js> +Copyright (c) 2023 Solana Labs, Inc + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +****************************** + +@solana/codecs-numbers +2.0.0 <https://github.com/solana-labs/solana-web3.js> +Copyright (c) 2023 Solana Labs, Inc + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +****************************** + +@solana/codecs-strings +2.0.0 <https://github.com/solana-labs/solana-web3.js> +Copyright (c) 2023 Solana Labs, Inc + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +****************************** + +@solana/errors +2.0.0 <https://github.com/solana-labs/solana-web3.js> +Copyright (c) 2023 Solana Labs, Inc + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + ****************************** sonic-boom @@ -96669,7 +97038,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** string.prototype.trim -1.2.10 <https://github.com/es-shims/String.prototype.trim> +1.2.9 <https://github.com/es-shims/String.prototype.trim> The MIT License (MIT) Copyright (c) 2015 Jordan Harband @@ -96696,7 +97065,7 @@ SOFTWARE. ****************************** string.prototype.trimend -1.0.9 <https://github.com/es-shims/String.prototype.trimEnd> +1.0.8 <https://github.com/es-shims/String.prototype.trimEnd> MIT License Copyright (c) 2017 Khaled Al-Ansari @@ -98531,7 +98900,7 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** traverse -0.6.11 <https://github.com/ljharb/js-traverse> +0.6.10 <https://github.com/ljharb/js-traverse> MIT License Copyright (c) 2010 James Halliday and contributors @@ -98826,35 +99195,42 @@ ts-interface-checker tslib 1.14.1 <https://github.com/Microsoft/tslib> -Copyright (c) Microsoft Corporation. - -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH -REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY -AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, -INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM -LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR -OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +Copyright (c) Microsoft Corporation. + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR +OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ****************************** tslib 2.8.1 <https://github.com/Microsoft/tslib> -Copyright (c) Microsoft Corporation. +Copyright (c) Microsoft Corporation. + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR +OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted. +****************************** -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH -REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY -AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, -INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM -LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR -OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR -PERFORMANCE OF THIS SOFTWARE. +ts-object-utils +0.0.5 <https://github.com/naqvitalha/ts-object-utils> +license: ISC +authors: naqvitalha <naqvitalha@gmail.com> ****************************** @@ -99066,27 +99442,27 @@ ts-toolbelt tsutils 3.21.0 <https://github.com/ajafff/tsutils> -The MIT License (MIT) - -Copyright (c) 2017 Klaus Meinhardt - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. +The MIT License (MIT) + +Copyright (c) 2017 Klaus Meinhardt + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. ****************************** @@ -99179,36 +99555,6 @@ OTHER DEALINGS IN THE SOFTWARE. For more information, please refer to <http://unlicense.org> -****************************** - -tweetnacl-util -0.15.1 <https://github.com/dchest/tweetnacl-util-js> -This is free and unencumbered software released into the public domain. - -Anyone is free to copy, modify, publish, use, compile, sell, or -distribute this software, either in source code form or as a compiled -binary, for any purpose, commercial or non-commercial, and by any -means. - -In jurisdictions that recognize copyright laws, the author or authors -of this software dedicate any and all copyright interest in the -software to the public domain. We make this dedication for the benefit -of the public at large and to the detriment of our heirs and -successors. We intend this dedication to be an overt act of -relinquishment in perpetuity of all present and future rights to this -software under copyright law. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR -OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, -ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -OTHER DEALINGS IN THE SOFTWARE. - -For more information, please refer to <http://unlicense.org> - - ****************************** typedarray @@ -99253,7 +99599,7 @@ typedarray ****************************** typed-array-buffer -1.0.3 <https://github.com/inspect-js/typed-array-buffer> +1.0.2 <https://github.com/ljharb/typed-array-buffer> MIT License Copyright (c) 2023 Jordan Harband @@ -99280,7 +99626,7 @@ SOFTWARE. ****************************** typed-array-byte-length -1.0.3 <https://github.com/inspect-js/typed-array-byte-length> +1.0.1 <https://github.com/inspect-js/typed-array-byte-length> MIT License Copyright (c) 2020 Inspect JS @@ -99307,7 +99653,7 @@ SOFTWARE. ****************************** typed-array-byte-offset -1.0.4 <https://github.com/inspect-js/typed-array-byte-offset> +1.0.2 <https://github.com/inspect-js/typed-array-byte-offset> MIT License Copyright (c) 2020 Inspect JS @@ -99334,7 +99680,7 @@ SOFTWARE. ****************************** typed-array-length -1.0.7 <https://github.com/inspect-js/typed-array-length> +1.0.6 <https://github.com/inspect-js/typed-array-length> MIT License Copyright (c) 2020 Inspect JS @@ -99361,7 +99707,7 @@ SOFTWARE. ****************************** typedarray.prototype.slice -1.0.5 <https://github.com/es-shims/TypedArray.prototype.slice> +1.0.3 <https://github.com/es-shims/TypedArray.prototype.slice> MIT License Copyright (c) 2023 ECMAScript Shims @@ -99757,13 +100103,6 @@ authors: Sindre Sorhus <sindresorhus@gmail.com> ****************************** -type-fest -4.26.1 <https://github.com/sindresorhus/type-fest> -license: (MIT OR CC0-1.0) -authors: Sindre Sorhus <sindresorhus@gmail.com> - -****************************** - type-is 1.6.18 <https://github.com/jshttp/type-is> (The MIT License) @@ -99845,6 +100184,33 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. SOFTWARE +****************************** + +@types/bn.js +4.11.6 <https://github.com/DefinitelyTyped/DefinitelyTyped> + MIT License + + Copyright (c) Microsoft Corporation. All rights reserved. + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all + copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + SOFTWARE + + ****************************** @types/bn.js @@ -100540,8 +100906,8 @@ authors: Mohamed Hegazy <https://github.com/mhegazy> ****************************** -@types/hoist-non-react-statics -3.3.5 <https://github.com/DefinitelyTyped/DefinitelyTyped> +@types/he +1.2.3 <https://github.com/DefinitelyTyped/DefinitelyTyped> MIT License Copyright (c) Microsoft Corporation. @@ -100567,8 +100933,8 @@ authors: Mohamed Hegazy <https://github.com/mhegazy> ****************************** -@types/istanbul-lib-coverage -2.0.3 <https://github.com/DefinitelyTyped/DefinitelyTyped> +@types/hoist-non-react-statics +3.3.5 <https://github.com/DefinitelyTyped/DefinitelyTyped> MIT License Copyright (c) Microsoft Corporation. @@ -100594,11 +100960,11 @@ authors: Mohamed Hegazy <https://github.com/mhegazy> ****************************** -@types/istanbul-lib-report -3.0.0 <https://github.com/DefinitelyTyped/DefinitelyTyped> +@types/istanbul-lib-coverage +2.0.3 <https://github.com/DefinitelyTyped/DefinitelyTyped> MIT License - Copyright (c) Microsoft Corporation. All rights reserved. + Copyright (c) Microsoft Corporation. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal @@ -100619,6 +100985,33 @@ authors: Mohamed Hegazy <https://github.com/mhegazy> SOFTWARE +****************************** + +@types/istanbul-lib-report +3.0.0 <https://github.com/DefinitelyTyped/DefinitelyTyped> + MIT License + + Copyright (c) Microsoft Corporation. All rights reserved. + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all + copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + SOFTWARE + + ****************************** @types/istanbul-reports @@ -100839,27 +101232,27 @@ authors: Mohamed Hegazy <https://github.com/mhegazy> @types/ms 0.7.31 <https://github.com/DefinitelyTyped/DefinitelyTyped> - MIT License - - Copyright (c) Microsoft Corporation. All rights reserved. - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in all - copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - SOFTWARE + MIT License + + Copyright (c) Microsoft Corporation. All rights reserved. + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all + copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + SOFTWARE ****************************** @@ -100946,7 +101339,7 @@ authors: Mohamed Hegazy <https://github.com/mhegazy> ****************************** @types/node -20.14.11 <https://github.com/DefinitelyTyped/DefinitelyTyped> +22.7.5 <https://github.com/DefinitelyTyped/DefinitelyTyped> MIT License Copyright (c) Microsoft Corporation. @@ -101964,10 +102357,37 @@ uint8arrays license: MIT authors: Alex Potsides <alex@achingbrain.net> +****************************** + +ulid +2.3.0 <https://github.com/ulid/javascript> +The MIT License (MIT) + +Copyright (c) 2017 Alizain Feerasta + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + ****************************** unbox-primitive -1.1.0 <https://github.com/ljharb/unbox-primitive> +1.0.2 <https://github.com/ljharb/unbox-primitive> MIT License Copyright (c) 2019 Jordan Harband @@ -102021,7 +102441,7 @@ SOFTWARE. ****************************** undici -5.28.4 <https://github.com/nodejs/undici> +5.28.5 <https://github.com/nodejs/undici> MIT License Copyright (c) Matteo Collina and Undici contributors @@ -102048,9 +102468,29 @@ SOFTWARE. ****************************** undici-types -5.26.5 <https://github.com/nodejs/undici> -license: MIT -authors: Daniele Belardi <https://github.com/dnlup>, Ethan Arrowood <https://github.com/ethan-arrowood>, Matteo Collina <https://github.com/mcollina>, Matthew Aitken <https://github.com/KhafraDev>, Robert Nagy <https://github.com/ronag>, Szymon Marczak <https://github.com/szmarczak>, Tomas Della Vedova <https://github.com/delvedor> +6.19.8 <https://github.com/nodejs/undici> +MIT License + +Copyright (c) Matteo Collina and Undici contributors + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + ****************************** @@ -102521,7 +102961,7 @@ SOFTWARE. ****************************** update-browserslist-db -1.1.2 <https://github.com/browserslist/update-db> +1.1.1 <https://github.com/browserslist/update-db> The MIT License (MIT) Copyright 2022 Andrey Sitnik <andrey@sitnik.ru> and other contributors @@ -102729,24 +103169,24 @@ SOFTWARE. urlpattern-polyfill 8.0.2 <https://github.com/kenchris/urlpattern-polyfill> -Copyright 2020 Intel Corporation - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +Copyright 2020 Intel Corporation + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** @@ -102779,7 +103219,7 @@ SOFTWARE. ****************************** @urql/core -5.1.0 <https://github.com/urql-graphql/urql> +5.0.8 <https://github.com/urql-graphql/urql> MIT License Copyright (c) 2018–2020 Formidable, @@ -103472,27 +103912,27 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. value-or-promise 1.0.11 <https://github.com/yaacovCR/value-or-promise> -MIT License - -Copyright (c) 2019 Yaacov Rydzinski - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. +MIT License + +Copyright (c) 2019 Yaacov Rydzinski + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. ****************************** @@ -103530,394 +103970,6 @@ TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -****************************** - -@vercel/stega -0.1.2 <> -# Mozilla Public License Version 2.0 - -1. Definitions - ---- - -1.1. "Contributor" -means each individual or legal entity that creates, contributes to -the creation of, or owns Covered Software. - -1.2. "Contributor Version" -means the combination of the Contributions of others (if any) used -by a Contributor and that particular Contributor's Contribution. - -1.3. "Contribution" -means Covered Software of a particular Contributor. - -1.4. "Covered Software" -means Source Code Form to which the initial Contributor has attached -the notice in Exhibit A, the Executable Form of such Source Code -Form, and Modifications of such Source Code Form, in each case -including portions thereof. - -1.5. "Incompatible With Secondary Licenses" -means - - (a) that the initial Contributor has attached the notice described - in Exhibit B to the Covered Software; or - - (b) that the Covered Software was made available under the terms of - version 1.1 or earlier of the License, but not also under the - terms of a Secondary License. - -1.6. "Executable Form" -means any form of the work other than Source Code Form. - -1.7. "Larger Work" -means a work that combines Covered Software with other material, in -a separate file or files, that is not Covered Software. - -1.8. "License" -means this document. - -1.9. "Licensable" -means having the right to grant, to the maximum extent possible, -whether at the time of the initial grant or subsequently, any and -all of the rights conveyed by this License. - -1.10. "Modifications" -means any of the following: - - (a) any file in Source Code Form that results from an addition to, - deletion from, or modification of the contents of Covered - Software; or - - (b) any new file in Source Code Form that contains any Covered - Software. - -1.11. "Patent Claims" of a Contributor -means any patent claim(s), including without limitation, method, -process, and apparatus claims, in any patent Licensable by such -Contributor that would be infringed, but for the grant of the -License, by the making, using, selling, offering for sale, having -made, import, or transfer of either its Contributions or its -Contributor Version. - -1.12. "Secondary License" -means either the GNU General Public License, Version 2.0, the GNU -Lesser General Public License, Version 2.1, the GNU Affero General -Public License, Version 3.0, or any later versions of those -licenses. - -1.13. "Source Code Form" -means the form of the work preferred for making modifications. - -1.14. "You" (or "Your") -means an individual or a legal entity exercising rights under this -License. For legal entities, "You" includes any entity that -controls, is controlled by, or is under common control with You. For -purposes of this definition, "control" means (a) the power, direct -or indirect, to cause the direction or management of such entity, -whether by contract or otherwise, or (b) ownership of more than -fifty percent (50%) of the outstanding shares or beneficial -ownership of such entity. - -2. License Grants and Conditions - ---- - -2.1. Grants - -Each Contributor hereby grants You a world-wide, royalty-free, -non-exclusive license: - -(a) under intellectual property rights (other than patent or trademark) -Licensable by such Contributor to use, reproduce, make available, -modify, display, perform, distribute, and otherwise exploit its -Contributions, either on an unmodified basis, with Modifications, or -as part of a Larger Work; and - -(b) under Patent Claims of such Contributor to make, use, sell, offer -for sale, have made, import, and otherwise transfer either its -Contributions or its Contributor Version. - -2.2. Effective Date - -The licenses granted in Section 2.1 with respect to any Contribution -become effective for each Contribution on the date the Contributor first -distributes such Contribution. - -2.3. Limitations on Grant Scope - -The licenses granted in this Section 2 are the only rights granted under -this License. No additional rights or licenses will be implied from the -distribution or licensing of Covered Software under this License. -Notwithstanding Section 2.1(b) above, no patent license is granted by a -Contributor: - -(a) for any code that a Contributor has removed from Covered Software; -or - -(b) for infringements caused by: (i) Your and any other third party's -modifications of Covered Software, or (ii) the combination of its -Contributions with other software (except as part of its Contributor -Version); or - -(c) under Patent Claims infringed by Covered Software in the absence of -its Contributions. - -This License does not grant any rights in the trademarks, service marks, -or logos of any Contributor (except as may be necessary to comply with -the notice requirements in Section 3.4). - -2.4. Subsequent Licenses - -No Contributor makes additional grants as a result of Your choice to -distribute the Covered Software under a subsequent version of this -License (see Section 10.2) or under the terms of a Secondary License (if -permitted under the terms of Section 3.3). - -2.5. Representation - -Each Contributor represents that the Contributor believes its -Contributions are its original creation(s) or it has sufficient rights -to grant the rights to its Contributions conveyed by this License. - -2.6. Fair Use - -This License is not intended to limit any rights You have under -applicable copyright doctrines of fair use, fair dealing, or other -equivalents. - -2.7. Conditions - -Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted -in Section 2.1. - -3. Responsibilities - ---- - -3.1. Distribution of Source Form - -All distribution of Covered Software in Source Code Form, including any -Modifications that You create or to which You contribute, must be under -the terms of this License. You must inform recipients that the Source -Code Form of the Covered Software is governed by the terms of this -License, and how they can obtain a copy of this License. You may not -attempt to alter or restrict the recipients' rights in the Source Code -Form. - -3.2. Distribution of Executable Form - -If You distribute Covered Software in Executable Form then: - -(a) such Covered Software must also be made available in Source Code -Form, as described in Section 3.1, and You must inform recipients of -the Executable Form how they can obtain a copy of such Source Code -Form by reasonable means in a timely manner, at a charge no more -than the cost of distribution to the recipient; and - -(b) You may distribute such Executable Form under the terms of this -License, or sublicense it under different terms, provided that the -license for the Executable Form does not attempt to limit or alter -the recipients' rights in the Source Code Form under this License. - -3.3. Distribution of a Larger Work - -You may create and distribute a Larger Work under terms of Your choice, -provided that You also comply with the requirements of this License for -the Covered Software. If the Larger Work is a combination of Covered -Software with a work governed by one or more Secondary Licenses, and the -Covered Software is not Incompatible With Secondary Licenses, this -License permits You to additionally distribute such Covered Software -under the terms of such Secondary License(s), so that the recipient of -the Larger Work may, at their option, further distribute the Covered -Software under the terms of either this License or such Secondary -License(s). - -3.4. Notices - -You may not remove or alter the substance of any license notices -(including copyright notices, patent notices, disclaimers of warranty, -or limitations of liability) contained within the Source Code Form of -the Covered Software, except that You may alter any license notices to -the extent required to remedy known factual inaccuracies. - -3.5. Application of Additional Terms - -You may choose to offer, and to charge a fee for, warranty, support, -indemnity or liability obligations to one or more recipients of Covered -Software. However, You may do so only on Your own behalf, and not on -behalf of any Contributor. You must make it absolutely clear that any -such warranty, support, indemnity, or liability obligation is offered by -You alone, and You hereby agree to indemnify every Contributor for any -liability incurred by such Contributor as a result of warranty, support, -indemnity or liability terms You offer. You may include additional -disclaimers of warranty and limitations of liability specific to any -jurisdiction. - -4. Inability to Comply Due to Statute or Regulation - ---- - -If it is impossible for You to comply with any of the terms of this -License with respect to some or all of the Covered Software due to -statute, judicial order, or regulation then You must: (a) comply with -the terms of this License to the maximum extent possible; and (b) -describe the limitations and the code they affect. Such description must -be placed in a text file included with all distributions of the Covered -Software under this License. Except to the extent prohibited by statute -or regulation, such description must be sufficiently detailed for a -recipient of ordinary skill to be able to understand it. - -5. Termination - ---- - -5.1. The rights granted under this License will terminate automatically -if You fail to comply with any of its terms. However, if You become -compliant, then the rights granted under this License from a particular -Contributor are reinstated (a) provisionally, unless and until such -Contributor explicitly and finally terminates Your grants, and (b) on an -ongoing basis, if such Contributor fails to notify You of the -non-compliance by some reasonable means prior to 60 days after You have -come back into compliance. Moreover, Your grants from a particular -Contributor are reinstated on an ongoing basis if such Contributor -notifies You of the non-compliance by some reasonable means, this is the -first time You have received notice of non-compliance with this License -from such Contributor, and You become compliant prior to 30 days after -Your receipt of the notice. - -5.2. If You initiate litigation against any entity by asserting a patent -infringement claim (excluding declaratory judgment actions, -counter-claims, and cross-claims) alleging that a Contributor Version -directly or indirectly infringes any patent, then the rights granted to -You by any and all Contributors for the Covered Software under Section -2.1 of this License shall terminate. - -5.3. In the event of termination under Sections 5.1 or 5.2 above, all -end user license agreements (excluding distributors and resellers) which -have been validly granted by You or Your distributors under this License -prior to termination shall survive termination. - ---- - -- * -- 6. Disclaimer of Warranty \* -- ------------------------- \* -- * -- Covered Software is provided under this License on an "as is" \* -- basis, without warranty of any kind, either expressed, implied, or \* -- statutory, including, without limitation, warranties that the \* -- Covered Software is free of defects, merchantable, fit for a \* -- particular purpose or non-infringing. The entire risk as to the \* -- quality and performance of the Covered Software is with You. \* -- Should any Covered Software prove defective in any respect, You \* -- (not any Contributor) assume the cost of any necessary servicing, \* -- repair, or correction. This disclaimer of warranty constitutes an \* -- essential part of this License. No use of any Covered Software is \* -- authorized under this License except under this disclaimer. \* -- * - ---- - ---- - -- * -- 7. Limitation of Liability \* -- -------------------------- \* -- * -- Under no circumstances and under no legal theory, whether tort \* -- (including negligence), contract, or otherwise, shall any \* -- Contributor, or anyone who distributes Covered Software as \* -- permitted above, be liable to You for any direct, indirect, \* -- special, incidental, or consequential damages of any character \* -- including, without limitation, damages for lost profits, loss of \* -- goodwill, work stoppage, computer failure or malfunction, or any \* -- and all other commercial damages or losses, even if such party \* -- shall have been informed of the possibility of such damages. This \* -- limitation of liability shall not apply to liability for death or \* -- personal injury resulting from such party's negligence to the \* -- extent applicable law prohibits such limitation. Some \* -- jurisdictions do not allow the exclusion or limitation of \* -- incidental or consequential damages, so this exclusion and \* -- limitation may not apply to You. \* -- * - ---- - -8. Litigation - ---- - -Any litigation relating to this License may be brought only in the -courts of a jurisdiction where the defendant maintains its principal -place of business and such litigation shall be governed by laws of that -jurisdiction, without reference to its conflict-of-law provisions. -Nothing in this Section shall prevent a party's ability to bring -cross-claims or counter-claims. - -9. Miscellaneous - ---- - -This License represents the complete agreement concerning the subject -matter hereof. If any provision of this License is held to be -unenforceable, such provision shall be reformed only to the extent -necessary to make it enforceable. Any law or regulation which provides -that the language of a contract shall be construed against the drafter -shall not be used to construe this License against a Contributor. - -10. Versions of the License - ---- - -10.1. New Versions - -Mozilla Foundation is the license steward. Except as provided in Section -10.3, no one other than the license steward has the right to modify or -publish new versions of this License. Each version will be given a -distinguishing version number. - -10.2. Effect of New Versions - -You may distribute the Covered Software under the terms of the version -of the License under which You originally received the Covered Software, -or under the terms of any subsequent version published by the license -steward. - -10.3. Modified Versions - -If you create software not governed by this License, and you want to -create a new license for such software, you may create and use a -modified version of this License if you rename the license and remove -any references to the name of the license steward (except to note that -such modified license differs from this License). - -10.4. Distributing Source Code Form that is Incompatible With Secondary -Licenses - -If You choose to distribute Source Code Form that is Incompatible With -Secondary Licenses under the terms of this version of the License, the -notice described in Exhibit B of this License must be attached. - -## Exhibit A - Source Code Form License Notice - -This Source Code Form is subject to the terms of the Mozilla Public -License, v. 2.0. If a copy of the MPL was not distributed with this -file, You can obtain one at http://mozilla.org/MPL/2.0/. - -If it is not possible or desirable to put the notice in a particular -file, then You may include the notice in a location (such as a LICENSE -file in a relevant directory) where a recipient would be likely to look -for such a notice. - -You may add additional accurate notices of copyright ownership. - -## Exhibit B - "Incompatible With Secondary Licenses" Notice - -This Source Code Form is "Incompatible With Secondary Licenses", as -defined by the Mozilla Public License, v. 2.0. - - ****************************** vlq @@ -107199,6 +107251,214 @@ CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. +****************************** + +web-vitals +4.2.4 <https://github.com/GoogleChrome/web-vitals> + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2020 Google LLC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + https://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + ****************************** whatwg-fetch @@ -107345,7 +107605,7 @@ IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ****************************** which-boxed-primitive -1.1.1 <https://github.com/inspect-js/which-boxed-primitive> +1.0.2 <https://github.com/inspect-js/which-boxed-primitive> MIT License Copyright (c) 2019 Jordan Harband @@ -107372,7 +107632,7 @@ SOFTWARE. ****************************** which-builtin-type -1.2.1 <https://github.com/inspect-js/which-builtin-type> +1.1.3 <https://github.com/inspect-js/which-builtin-type> MIT License Copyright (c) 2020 ECMAScript Shims @@ -107399,7 +107659,7 @@ SOFTWARE. ****************************** which-collection -1.0.2 <https://github.com/inspect-js/which-collection> +1.0.1 <https://github.com/inspect-js/which-collection> MIT License Copyright (c) 2019 Inspect JS @@ -107445,7 +107705,7 @@ THIS SOFTWARE. ****************************** which-typed-array -1.1.18 <https://github.com/inspect-js/which-typed-array> +1.1.15 <https://github.com/inspect-js/which-typed-array> The MIT License (MIT) Copyright (c) 2015 Jordan Harband @@ -107954,81 +108214,81 @@ IN THE SOFTWARE. xmlbuilder 11.0.1 <https://github.com/oozcitak/xmlbuilder-js> -The MIT License (MIT) - -Copyright (c) 2013 Ozgur Ozcitak - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. +The MIT License (MIT) + +Copyright (c) 2013 Ozgur Ozcitak + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. ****************************** xmlbuilder 14.0.0 <https://github.com/oozcitak/xmlbuilder-js> -The MIT License (MIT) - -Copyright (c) 2013 Ozgur Ozcitak - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. +The MIT License (MIT) + +Copyright (c) 2013 Ozgur Ozcitak + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. ****************************** xmlbuilder 15.1.1 <https://github.com/oozcitak/xmlbuilder-js> -The MIT License (MIT) - -Copyright (c) 2013 Ozgur Ozcitak - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. +The MIT License (MIT) + +Copyright (c) 2013 Ozgur Ozcitak + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. ****************************** diff --git a/locales/languages/en.json b/locales/languages/en.json index 440cbd34ba2b..ca67be2f1385 100644 --- a/locales/languages/en.json +++ b/locales/languages/en.json @@ -2931,12 +2931,9 @@ "n_quotes": "{{numberOfQuotes}} quotes", "view_details": "View details", "estimated_gas_fee": "Estimated gas fee", - "gas_fee": "Gas fee", - "included": "included", "max_gas_fee": "Max gas fee", "edit": "Edit", "quotes_include_fee": "Quotes include a {{fee}}% MetaMask fee", - "quotes_include_gas_and_metamask_fee": "Quote includes gas and a {{fee}}% MetaMask fee", "tap_to_swap": "Tap to Swap", "swipe_to_swap": "Swipe to swap", "swipe_to": "Swipe to", @@ -3006,8 +3003,6 @@ "high_recommendation": "Swaps are typically time sensitive. “High” will help avoid potential losses due to changes in market conditions.", "recommended": "Recommended", "recommended_gas": "Recommended gas fee", - "gas_included_tooltip_explanation": "This quote incorporates gas fees by adjusting the token amount sent or received. You may receive ETH in a separate transaction on your activity list.", - "gas_included_tooltip_explanation_link_text": "Learn more about gas fees", "gas_education_title": "Estimated gas fees", "gas_education_1": "Gas fees are paid to crypto miners who process transactions on the ", "gas_education_2_ethereum": "Ethereum network.", From 4cc2fc15ed4e5799663f978bed436377aa387473 Mon Sep 17 00:00:00 2001 From: metamaskbot <metamaskbot@users.noreply.github.com> Date: Fri, 11 Apr 2025 14:15:10 -0600 Subject: [PATCH 131/473] remove invalid changes --- app/components/Nav/Main/RootRPCMethodsUI.js | 1 + attribution.txt | 2110 +++++++++---------- locales/languages/en.json | 5 + 3 files changed, 1061 insertions(+), 1055 deletions(-) diff --git a/app/components/Nav/Main/RootRPCMethodsUI.js b/app/components/Nav/Main/RootRPCMethodsUI.js index 5ab4614c9b29..3982ddc014ed 100644 --- a/app/components/Nav/Main/RootRPCMethodsUI.js +++ b/app/components/Nav/Main/RootRPCMethodsUI.js @@ -240,6 +240,7 @@ const RootRPCMethodsUI = (props) => { quote_vs_executionRatio: quoteVsExecutionRatio, token_to_amount_received: tokenToAmountReceived.toString(), is_smart_transaction: props.shouldUseSmartTransaction, + gas_included: analyticsParams.isGasIncludedTrade, ...smartTransactionMetricsProperties, available_quotes: analyticsParams.available_quotes, best_quote_source: analyticsParams.best_quote_source, diff --git a/attribution.txt b/attribution.txt index a6ed72f948d2..9dbd4c0ee992 100644 --- a/attribution.txt +++ b/attribution.txt @@ -1881,27 +1881,27 @@ OTHER DEALINGS IN THE SOFTWARE. archiver-utils 2.1.0 <https://github.com/archiverjs/archiver-utils> -Copyright (c) 2015 Chris Talkington. - -Permission is hereby granted, free of charge, to any person -obtaining a copy of this software and associated documentation -files (the "Software"), to deal in the Software without -restriction, including without limitation the rights to use, -copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the -Software is furnished to do so, subject to the following -conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +Copyright (c) 2015 Chris Talkington. + +Permission is hereby granted, free of charge, to any person +obtaining a copy of this software and associated documentation +files (the "Software"), to deal in the Software without +restriction, including without limitation the rights to use, +copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the +Software is furnished to do so, subject to the following +conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES +OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT +HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** @@ -7327,30 +7327,30 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI big-integer 1.6.51 <https://github.com/peterolson/BigInteger.js> -This is free and unencumbered software released into the public domain. - -Anyone is free to copy, modify, publish, use, compile, sell, or -distribute this software, either in source code form or as a compiled -binary, for any purpose, commercial or non-commercial, and by any -means. - -In jurisdictions that recognize copyright laws, the author or authors -of this software dedicate any and all copyright interest in the -software to the public domain. We make this dedication for the benefit -of the public at large and to the detriment of our heirs and -successors. We intend this dedication to be an overt act of -relinquishment in perpetuity of all present and future rights to this -software under copyright law. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR -OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, -ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -OTHER DEALINGS IN THE SOFTWARE. - -For more information, please refer to <http://unlicense.org> +This is free and unencumbered software released into the public domain. + +Anyone is free to copy, modify, publish, use, compile, sell, or +distribute this software, either in source code form or as a compiled +binary, for any purpose, commercial or non-commercial, and by any +means. + +In jurisdictions that recognize copyright laws, the author or authors +of this software dedicate any and all copyright interest in the +software to the public domain. We make this dedication for the benefit +of the public at large and to the detriment of our heirs and +successors. We intend this dedication to be an overt act of +relinquishment in perpetuity of all present and future rights to this +software under copyright law. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR +OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +OTHER DEALINGS IN THE SOFTWARE. + +For more information, please refer to <http://unlicense.org> ****************************** @@ -10153,26 +10153,26 @@ THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI color-name 1.1.3 <https://github.com/dfcreative/color-name> -The MIT License (MIT) -Copyright (c) 2015 Dmitry Ivanov - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - +The MIT License (MIT) +Copyright (c) 2015 Dmitry Ivanov + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** color-name 1.1.4 <https://github.com/colorjs/color-name> -The MIT License (MIT) -Copyright (c) 2015 Dmitry Ivanov - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - +The MIT License (MIT) +Copyright (c) 2015 Dmitry Ivanov + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** @@ -10942,20 +10942,20 @@ SOFTWARE. content-hash 2.5.2 <https://github.com/pldespaigne/content-hash> -ISC License - -Copyright (c) 2018, Pierre-Louis Despaigne - -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted, provided that the above -copyright notice and this permission notice appear in all copies. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES -WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR -ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN -ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +ISC License + +Copyright (c) 2018, Pierre-Louis Despaigne + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ****************************** @@ -15424,25 +15424,25 @@ SOFTWARE. eol 0.9.1 <https://github.com/ryanve/eol> -MIT License - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. +MIT License + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. ****************************** @@ -23192,37 +23192,37 @@ specific language governing permissions and limitations under the License. fbemitter 3.0.0 <https://github.com/facebook/emitter> -BSD License - -For emitter software - -Copyright (c) 2013-present, Facebook, Inc. -All rights reserved. - -Redistribution and use in source and binary forms, with or without modification, -are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - - * Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - - * Neither the name Facebook nor the names of its contributors may be used to - endorse or promote products derived from this software without specific - prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR -ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +BSD License + +For emitter software + +Copyright (c) 2013-present, Facebook, Inc. +All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + + * Neither the name Facebook nor the names of its contributors may be used to + endorse or promote products derived from this software without specific + prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ****************************** @@ -24429,27 +24429,27 @@ IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. fontfaceobserver 2.3.0 <https://github.com/bramstein/fontfaceobserver> -Copyright (c) 2014 - Bram Stein - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - -1. Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. -2. Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR -ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND -ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +Copyright (c) 2014 - Bram Stein + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ****************************** @@ -31301,27 +31301,27 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. jscodeshift 0.14.0 <https://github.com/facebook/jscodeshift> -MIT License - -Copyright (c) Facebook, Inc. and its affiliates. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. +MIT License + +Copyright (c) Facebook, Inc. and its affiliates. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. ****************************** @@ -31429,27 +31429,27 @@ SOFTWARE. jsonc-parser 3.2.0 <https://github.com/microsoft/node-jsonc-parser> -The MIT License (MIT) - -Copyright (c) Microsoft - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. +The MIT License (MIT) + +Copyright (c) Microsoft + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. ****************************** @@ -31549,201 +31549,201 @@ authors: undefined json-schema 0.4.0 <https://github.com/kriszyp/json-schema> -Dojo is available under *either* the terms of the BSD 3-Clause "New" License *or* the -Academic Free License version 2.1. As a recipient of Dojo, you may choose which -license to receive this code under (except as noted in per-module LICENSE -files). Some modules may not be the copyright of the Dojo Foundation. These -modules contain explicit declarations of copyright in both the LICENSE files in -the directories in which they reside and in the code itself. No external -contributions are allowed under licenses which are fundamentally incompatible -with the AFL-2.1 OR and BSD-3-Clause licenses that Dojo is distributed under. - -The text of the AFL-2.1 and BSD-3-Clause licenses is reproduced below. - -------------------------------------------------------------------------------- -BSD 3-Clause "New" License: -********************** - -Copyright (c) 2005-2015, The Dojo Foundation -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - * Neither the name of the Dojo Foundation nor the names of its contributors - may be used to endorse or promote products derived from this software - without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE -FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -------------------------------------------------------------------------------- -The Academic Free License, v. 2.1: -********************************** - -This Academic Free License (the "License") applies to any original work of -authorship (the "Original Work") whose owner (the "Licensor") has placed the -following notice immediately following the copyright notice for the Original -Work: - -Licensed under the Academic Free License version 2.1 - -1) Grant of Copyright License. Licensor hereby grants You a world-wide, -royalty-free, non-exclusive, perpetual, sublicenseable license to do the -following: - -a) to reproduce the Original Work in copies; - -b) to prepare derivative works ("Derivative Works") based upon the Original -Work; - -c) to distribute copies of the Original Work and Derivative Works to the -public; - -d) to perform the Original Work publicly; and - -e) to display the Original Work publicly. - -2) Grant of Patent License. Licensor hereby grants You a world-wide, -royalty-free, non-exclusive, perpetual, sublicenseable license, under patent -claims owned or controlled by the Licensor that are embodied in the Original -Work as furnished by the Licensor, to make, use, sell and offer for sale the -Original Work and Derivative Works. - -3) Grant of Source Code License. The term "Source Code" means the preferred -form of the Original Work for making modifications to it and all available -documentation describing how to modify the Original Work. Licensor hereby -agrees to provide a machine-readable copy of the Source Code of the Original -Work along with each copy of the Original Work that Licensor distributes. -Licensor reserves the right to satisfy this obligation by placing a -machine-readable copy of the Source Code in an information repository -reasonably calculated to permit inexpensive and convenient access by You for as -long as Licensor continues to distribute the Original Work, and by publishing -the address of that information repository in a notice immediately following -the copyright notice that applies to the Original Work. - -4) Exclusions From License Grant. Neither the names of Licensor, nor the names -of any contributors to the Original Work, nor any of their trademarks or -service marks, may be used to endorse or promote products derived from this -Original Work without express prior written permission of the Licensor. Nothing -in this License shall be deemed to grant any rights to trademarks, copyrights, -patents, trade secrets or any other intellectual property of Licensor except as -expressly stated herein. No patent license is granted to make, use, sell or -offer to sell embodiments of any patent claims other than the licensed claims -defined in Section 2. No right is granted to the trademarks of Licensor even if -such marks are included in the Original Work. Nothing in this License shall be -interpreted to prohibit Licensor from licensing under different terms from this -License any Original Work that Licensor otherwise would have a right to -license. - -5) This section intentionally omitted. - -6) Attribution Rights. You must retain, in the Source Code of any Derivative -Works that You create, all copyright, patent or trademark notices from the -Source Code of the Original Work, as well as any notices of licensing and any -descriptive text identified therein as an "Attribution Notice." You must cause -the Source Code for any Derivative Works that You create to carry a prominent -Attribution Notice reasonably calculated to inform recipients that You have -modified the Original Work. - -7) Warranty of Provenance and Disclaimer of Warranty. Licensor warrants that -the copyright in and to the Original Work and the patent rights granted herein -by Licensor are owned by the Licensor or are sublicensed to You under the terms -of this License with the permission of the contributor(s) of those copyrights -and patent rights. Except as expressly stated in the immediately proceeding -sentence, the Original Work is provided under this License on an "AS IS" BASIS -and WITHOUT WARRANTY, either express or implied, including, without limitation, -the warranties of NON-INFRINGEMENT, MERCHANTABILITY or FITNESS FOR A PARTICULAR -PURPOSE. THE ENTIRE RISK AS TO THE QUALITY OF THE ORIGINAL WORK IS WITH YOU. -This DISCLAIMER OF WARRANTY constitutes an essential part of this License. No -license to Original Work is granted hereunder except under this disclaimer. - -8) Limitation of Liability. Under no circumstances and under no legal theory, -whether in tort (including negligence), contract, or otherwise, shall the -Licensor be liable to any person for any direct, indirect, special, incidental, -or consequential damages of any character arising as a result of this License -or the use of the Original Work including, without limitation, damages for loss -of goodwill, work stoppage, computer failure or malfunction, or any and all -other commercial damages or losses. This limitation of liability shall not -apply to liability for death or personal injury resulting from Licensor's -negligence to the extent applicable law prohibits such limitation. Some -jurisdictions do not allow the exclusion or limitation of incidental or -consequential damages, so this exclusion and limitation may not apply to You. - -9) Acceptance and Termination. If You distribute copies of the Original Work or -a Derivative Work, You must make a reasonable effort under the circumstances to -obtain the express assent of recipients to the terms of this License. Nothing -else but this License (or another written agreement between Licensor and You) -grants You permission to create Derivative Works based upon the Original Work -or to exercise any of the rights granted in Section 1 herein, and any attempt -to do so except under the terms of this License (or another written agreement -between Licensor and You) is expressly prohibited by U.S. copyright law, the -equivalent laws of other countries, and by international treaty. Therefore, by -exercising any of the rights granted to You in Section 1 herein, You indicate -Your acceptance of this License and all of its terms and conditions. - -10) Termination for Patent Action. This License shall terminate automatically -and You may no longer exercise any of the rights granted to You by this License -as of the date You commence an action, including a cross-claim or counterclaim, -against Licensor or any licensee alleging that the Original Work infringes a -patent. This termination provision shall not apply for an action alleging -patent infringement by combinations of the Original Work with other software or -hardware. - -11) Jurisdiction, Venue and Governing Law. Any action or suit relating to this -License may be brought only in the courts of a jurisdiction wherein the -Licensor resides or in which Licensor conducts its primary business, and under -the laws of that jurisdiction excluding its conflict-of-law provisions. The -application of the United Nations Convention on Contracts for the International -Sale of Goods is expressly excluded. Any use of the Original Work outside the -scope of this License or after its termination shall be subject to the -requirements and penalties of the U.S. Copyright Act, 17 U.S.C. § 101 et -seq., the equivalent laws of other countries, and international treaty. This -section shall survive the termination of this License. - -12) Attorneys Fees. In any action to enforce the terms of this License or -seeking damages relating thereto, the prevailing party shall be entitled to -recover its costs and expenses, including, without limitation, reasonable -attorneys' fees and costs incurred in connection with such action, including -any appeal of such action. This section shall survive the termination of this -License. - -13) Miscellaneous. This License represents the complete agreement concerning -the subject matter hereof. If any provision of this License is held to be -unenforceable, such provision shall be reformed only to the extent necessary to -make it enforceable. - -14) Definition of "You" in This License. "You" throughout this License, whether -in upper or lower case, means an individual or a legal entity exercising rights -under, and complying with all of the terms of, this License. For legal -entities, "You" includes any entity that controls, is controlled by, or is -under common control with you. For purposes of this definition, "control" means -(i) the power, direct or indirect, to cause the direction or management of such -entity, whether by contract or otherwise, or (ii) ownership of fifty percent -(50%) or more of the outstanding shares, or (iii) beneficial ownership of such -entity. - -15) Right to Use. You may use the Original Work in all ways not otherwise -restricted or conditioned by this License or by law, and Licensor promises not -to interfere with or be responsible for such uses by You. - -This license is Copyright (C) 2003-2004 Lawrence E. Rosen. All rights reserved. -Permission is hereby granted to copy and distribute this license without -modification. This license may not be modified without the express written -permission of its copyright owner. +Dojo is available under *either* the terms of the BSD 3-Clause "New" License *or* the +Academic Free License version 2.1. As a recipient of Dojo, you may choose which +license to receive this code under (except as noted in per-module LICENSE +files). Some modules may not be the copyright of the Dojo Foundation. These +modules contain explicit declarations of copyright in both the LICENSE files in +the directories in which they reside and in the code itself. No external +contributions are allowed under licenses which are fundamentally incompatible +with the AFL-2.1 OR and BSD-3-Clause licenses that Dojo is distributed under. + +The text of the AFL-2.1 and BSD-3-Clause licenses is reproduced below. + +------------------------------------------------------------------------------- +BSD 3-Clause "New" License: +********************** + +Copyright (c) 2005-2015, The Dojo Foundation +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + * Neither the name of the Dojo Foundation nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +------------------------------------------------------------------------------- +The Academic Free License, v. 2.1: +********************************** + +This Academic Free License (the "License") applies to any original work of +authorship (the "Original Work") whose owner (the "Licensor") has placed the +following notice immediately following the copyright notice for the Original +Work: + +Licensed under the Academic Free License version 2.1 + +1) Grant of Copyright License. Licensor hereby grants You a world-wide, +royalty-free, non-exclusive, perpetual, sublicenseable license to do the +following: + +a) to reproduce the Original Work in copies; + +b) to prepare derivative works ("Derivative Works") based upon the Original +Work; + +c) to distribute copies of the Original Work and Derivative Works to the +public; + +d) to perform the Original Work publicly; and + +e) to display the Original Work publicly. + +2) Grant of Patent License. Licensor hereby grants You a world-wide, +royalty-free, non-exclusive, perpetual, sublicenseable license, under patent +claims owned or controlled by the Licensor that are embodied in the Original +Work as furnished by the Licensor, to make, use, sell and offer for sale the +Original Work and Derivative Works. + +3) Grant of Source Code License. The term "Source Code" means the preferred +form of the Original Work for making modifications to it and all available +documentation describing how to modify the Original Work. Licensor hereby +agrees to provide a machine-readable copy of the Source Code of the Original +Work along with each copy of the Original Work that Licensor distributes. +Licensor reserves the right to satisfy this obligation by placing a +machine-readable copy of the Source Code in an information repository +reasonably calculated to permit inexpensive and convenient access by You for as +long as Licensor continues to distribute the Original Work, and by publishing +the address of that information repository in a notice immediately following +the copyright notice that applies to the Original Work. + +4) Exclusions From License Grant. Neither the names of Licensor, nor the names +of any contributors to the Original Work, nor any of their trademarks or +service marks, may be used to endorse or promote products derived from this +Original Work without express prior written permission of the Licensor. Nothing +in this License shall be deemed to grant any rights to trademarks, copyrights, +patents, trade secrets or any other intellectual property of Licensor except as +expressly stated herein. No patent license is granted to make, use, sell or +offer to sell embodiments of any patent claims other than the licensed claims +defined in Section 2. No right is granted to the trademarks of Licensor even if +such marks are included in the Original Work. Nothing in this License shall be +interpreted to prohibit Licensor from licensing under different terms from this +License any Original Work that Licensor otherwise would have a right to +license. + +5) This section intentionally omitted. + +6) Attribution Rights. You must retain, in the Source Code of any Derivative +Works that You create, all copyright, patent or trademark notices from the +Source Code of the Original Work, as well as any notices of licensing and any +descriptive text identified therein as an "Attribution Notice." You must cause +the Source Code for any Derivative Works that You create to carry a prominent +Attribution Notice reasonably calculated to inform recipients that You have +modified the Original Work. + +7) Warranty of Provenance and Disclaimer of Warranty. Licensor warrants that +the copyright in and to the Original Work and the patent rights granted herein +by Licensor are owned by the Licensor or are sublicensed to You under the terms +of this License with the permission of the contributor(s) of those copyrights +and patent rights. Except as expressly stated in the immediately proceeding +sentence, the Original Work is provided under this License on an "AS IS" BASIS +and WITHOUT WARRANTY, either express or implied, including, without limitation, +the warranties of NON-INFRINGEMENT, MERCHANTABILITY or FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY OF THE ORIGINAL WORK IS WITH YOU. +This DISCLAIMER OF WARRANTY constitutes an essential part of this License. No +license to Original Work is granted hereunder except under this disclaimer. + +8) Limitation of Liability. Under no circumstances and under no legal theory, +whether in tort (including negligence), contract, or otherwise, shall the +Licensor be liable to any person for any direct, indirect, special, incidental, +or consequential damages of any character arising as a result of this License +or the use of the Original Work including, without limitation, damages for loss +of goodwill, work stoppage, computer failure or malfunction, or any and all +other commercial damages or losses. This limitation of liability shall not +apply to liability for death or personal injury resulting from Licensor's +negligence to the extent applicable law prohibits such limitation. Some +jurisdictions do not allow the exclusion or limitation of incidental or +consequential damages, so this exclusion and limitation may not apply to You. + +9) Acceptance and Termination. If You distribute copies of the Original Work or +a Derivative Work, You must make a reasonable effort under the circumstances to +obtain the express assent of recipients to the terms of this License. Nothing +else but this License (or another written agreement between Licensor and You) +grants You permission to create Derivative Works based upon the Original Work +or to exercise any of the rights granted in Section 1 herein, and any attempt +to do so except under the terms of this License (or another written agreement +between Licensor and You) is expressly prohibited by U.S. copyright law, the +equivalent laws of other countries, and by international treaty. Therefore, by +exercising any of the rights granted to You in Section 1 herein, You indicate +Your acceptance of this License and all of its terms and conditions. + +10) Termination for Patent Action. This License shall terminate automatically +and You may no longer exercise any of the rights granted to You by this License +as of the date You commence an action, including a cross-claim or counterclaim, +against Licensor or any licensee alleging that the Original Work infringes a +patent. This termination provision shall not apply for an action alleging +patent infringement by combinations of the Original Work with other software or +hardware. + +11) Jurisdiction, Venue and Governing Law. Any action or suit relating to this +License may be brought only in the courts of a jurisdiction wherein the +Licensor resides or in which Licensor conducts its primary business, and under +the laws of that jurisdiction excluding its conflict-of-law provisions. The +application of the United Nations Convention on Contracts for the International +Sale of Goods is expressly excluded. Any use of the Original Work outside the +scope of this License or after its termination shall be subject to the +requirements and penalties of the U.S. Copyright Act, 17 U.S.C. § 101 et +seq., the equivalent laws of other countries, and international treaty. This +section shall survive the termination of this License. + +12) Attorneys Fees. In any action to enforce the terms of this License or +seeking damages relating thereto, the prevailing party shall be entitled to +recover its costs and expenses, including, without limitation, reasonable +attorneys' fees and costs incurred in connection with such action, including +any appeal of such action. This section shall survive the termination of this +License. + +13) Miscellaneous. This License represents the complete agreement concerning +the subject matter hereof. If any provision of this License is held to be +unenforceable, such provision shall be reformed only to the extent necessary to +make it enforceable. + +14) Definition of "You" in This License. "You" throughout this License, whether +in upper or lower case, means an individual or a legal entity exercising rights +under, and complying with all of the terms of, this License. For legal +entities, "You" includes any entity that controls, is controlled by, or is +under common control with you. For purposes of this definition, "control" means +(i) the power, direct or indirect, to cause the direction or management of such +entity, whether by contract or otherwise, or (ii) ownership of fifty percent +(50%) or more of the outstanding shares, or (iii) beneficial ownership of such +entity. + +15) Right to Use. You may use the Original Work in all ways not otherwise +restricted or conditioned by this License or by law, and Licensor promises not +to interfere with or be responsible for such uses by You. + +This license is Copyright (C) 2003-2004 Lawrence E. Rosen. All rights reserved. +Permission is hereby granted to copy and distribute this license without +modification. This license may not be modified without the express written +permission of its copyright owner. ****************************** @@ -35432,28 +35432,28 @@ SOFTWARE. loglevel 1.9.1 <https://github.com/pimterry/loglevel> -Copyright (c) 2013 Tim Perry - -Permission is hereby granted, free of charge, to any person -obtaining a copy of this software and associated documentation -files (the "Software"), to deal in the Software without -restriction, including without limitation the rights to use, -copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the -Software is furnished to do so, subject to the following -conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -OTHER DEALINGS IN THE SOFTWARE. +Copyright (c) 2013 Tim Perry + +Permission is hereby granted, free of charge, to any person +obtaining a copy of this software and associated documentation +files (the "Software"), to deal in the Software without +restriction, including without limitation the rights to use, +copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the +Software is furnished to do so, subject to the following +conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES +OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT +HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +OTHER DEALINGS IN THE SOFTWARE. ****************************** @@ -43400,24 +43400,24 @@ authors: Jeff Dickey @jdxcode path 0.12.7 <https://github.com/jinder/path> -Copyright Joyent, Inc. and other Node contributors. All rights reserved. -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to -deal in the Software without restriction, including without limitation the -rights to use, copy, modify, merge, publish, distribute, sublicense, and/or -sell copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS -IN THE SOFTWARE. +Copyright Joyent, Inc. and other Node contributors. All rights reserved. +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to +deal in the Software without restriction, including without limitation the +rights to use, copy, modify, merge, publish, distribute, sublicense, and/or +sell copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS +IN THE SOFTWARE. ****************************** @@ -45038,365 +45038,365 @@ SOFTWARE. protobufjs 7.3.2 <https://github.com/protobufjs/protobuf.js> -This license applies to all parts of protobuf.js except those files -either explicitly including or referencing a different license or -located in a directory containing a different LICENSE file. - ---- - -Copyright (c) 2016, Daniel Wirtz All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - -* Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. -* Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. -* Neither the name of its author, nor the names of its contributors - may be used to endorse or promote products derived from this software - without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - ---- - -Code generated by the command line utilities is owned by the owner -of the input file used when generating it. This code is not -standalone and requires a support library to be linked with it. This -support library is itself covered by the above license. +This license applies to all parts of protobuf.js except those files +either explicitly including or referencing a different license or +located in a directory containing a different LICENSE file. + +--- + +Copyright (c) 2016, Daniel Wirtz All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + +* Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +* Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +* Neither the name of its author, nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +--- + +Code generated by the command line utilities is owned by the owner +of the input file used when generating it. This code is not +standalone and requires a support library to be linked with it. This +support library is itself covered by the above license. ****************************** @protobufjs/aspromise 1.1.2 <https://github.com/dcodeIO/protobuf.js> -Copyright (c) 2016, Daniel Wirtz All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - -* Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. -* Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. -* Neither the name of its author, nor the names of its contributors - may be used to endorse or promote products derived from this software - without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +Copyright (c) 2016, Daniel Wirtz All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + +* Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +* Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +* Neither the name of its author, nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ****************************** @protobufjs/base64 1.1.2 <https://github.com/dcodeIO/protobuf.js> -Copyright (c) 2016, Daniel Wirtz All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - -* Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. -* Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. -* Neither the name of its author, nor the names of its contributors - may be used to endorse or promote products derived from this software - without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +Copyright (c) 2016, Daniel Wirtz All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + +* Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +* Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +* Neither the name of its author, nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ****************************** @protobufjs/codegen 2.0.4 <https://github.com/dcodeIO/protobuf.js> -Copyright (c) 2016, Daniel Wirtz All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - -* Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. -* Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. -* Neither the name of its author, nor the names of its contributors - may be used to endorse or promote products derived from this software - without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +Copyright (c) 2016, Daniel Wirtz All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + +* Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +* Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +* Neither the name of its author, nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ****************************** @protobufjs/eventemitter 1.1.0 <https://github.com/dcodeIO/protobuf.js> -Copyright (c) 2016, Daniel Wirtz All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - -* Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. -* Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. -* Neither the name of its author, nor the names of its contributors - may be used to endorse or promote products derived from this software - without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +Copyright (c) 2016, Daniel Wirtz All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + +* Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +* Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +* Neither the name of its author, nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ****************************** @protobufjs/fetch 1.1.0 <https://github.com/dcodeIO/protobuf.js> -Copyright (c) 2016, Daniel Wirtz All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - -* Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. -* Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. -* Neither the name of its author, nor the names of its contributors - may be used to endorse or promote products derived from this software - without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +Copyright (c) 2016, Daniel Wirtz All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + +* Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +* Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +* Neither the name of its author, nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ****************************** @protobufjs/float 1.0.2 <https://github.com/dcodeIO/protobuf.js> -Copyright (c) 2016, Daniel Wirtz All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - -* Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. -* Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. -* Neither the name of its author, nor the names of its contributors - may be used to endorse or promote products derived from this software - without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +Copyright (c) 2016, Daniel Wirtz All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + +* Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +* Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +* Neither the name of its author, nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ****************************** @protobufjs/inquire 1.1.0 <https://github.com/dcodeIO/protobuf.js> -Copyright (c) 2016, Daniel Wirtz All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - -* Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. -* Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. -* Neither the name of its author, nor the names of its contributors - may be used to endorse or promote products derived from this software - without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +Copyright (c) 2016, Daniel Wirtz All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + +* Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +* Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +* Neither the name of its author, nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ****************************** @protobufjs/path 1.1.2 <https://github.com/dcodeIO/protobuf.js> -Copyright (c) 2016, Daniel Wirtz All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - -* Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. -* Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. -* Neither the name of its author, nor the names of its contributors - may be used to endorse or promote products derived from this software - without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +Copyright (c) 2016, Daniel Wirtz All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + +* Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +* Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +* Neither the name of its author, nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ****************************** @protobufjs/pool 1.1.0 <https://github.com/dcodeIO/protobuf.js> -Copyright (c) 2016, Daniel Wirtz All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - -* Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. -* Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. -* Neither the name of its author, nor the names of its contributors - may be used to endorse or promote products derived from this software - without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +Copyright (c) 2016, Daniel Wirtz All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + +* Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +* Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +* Neither the name of its author, nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ****************************** @protobufjs/utf8 1.1.0 <https://github.com/dcodeIO/protobuf.js> -Copyright (c) 2016, Daniel Wirtz All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - -* Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. -* Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. -* Neither the name of its author, nor the names of its contributors - may be used to endorse or promote products derived from this software - without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +Copyright (c) 2016, Daniel Wirtz All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + +* Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +* Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +* Neither the name of its author, nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ****************************** @@ -49605,27 +49605,27 @@ SOFTWARE. react-redux 8.1.3 <https://github.com/reduxjs/react-redux> -The MIT License (MIT) - -Copyright (c) 2015-present Dan Abramov - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. +The MIT License (MIT) + +Copyright (c) 2015-present Dan Abramov + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. ****************************** @@ -50785,27 +50785,27 @@ SOFTWARE. @reduxjs/toolkit 1.9.7 <https://github.com/reduxjs/redux-toolkit> -MIT License - -Copyright (c) 2018 Mark Erikson - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. +MIT License + +Copyright (c) 2018 Mark Erikson + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. ****************************** @@ -51082,27 +51082,27 @@ SOFTWARE. redux-thunk 2.4.2 <https://github.com/reduxjs/redux-thunk> -The MIT License (MIT) - -Copyright (c) 2015-present Dan Abramov - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. +The MIT License (MIT) + +Copyright (c) 2015-present Dan Abramov + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. ****************************** @@ -51771,54 +51771,54 @@ SOFTWARE. reselect 4.1.8 <https://github.com/reduxjs/reselect> -The MIT License (MIT) - -Copyright (c) 2015-2018 Reselect Contributors - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. +The MIT License (MIT) + +Copyright (c) 2015-2018 Reselect Contributors + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. ****************************** reselect 5.1.1 <https://github.com/reduxjs/reselect> -The MIT License (MIT) - -Copyright (c) 2015-2018 Reselect Contributors - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. +The MIT License (MIT) + +Copyright (c) 2015-2018 Reselect Contributors + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. ****************************** @@ -55755,28 +55755,28 @@ THE SOFTWARE. @sinclair/typebox 0.27.8 <https://github.com/sinclairzx81/typebox> -TypeBox: JSON Schema Type Builder with Static Type Resolution for TypeScript - -The MIT License (MIT) - -Copyright (c) 2017-2023 Haydn Paterson (sinclair) <haydn.developer@gmail.com> - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +TypeBox: JSON Schema Type Builder with Static Type Resolution for TypeScript + +The MIT License (MIT) + +Copyright (c) 2017-2023 Haydn Paterson (sinclair) <haydn.developer@gmail.com> + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** @@ -99195,34 +99195,34 @@ ts-interface-checker tslib 1.14.1 <https://github.com/Microsoft/tslib> -Copyright (c) Microsoft Corporation. - -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH -REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY -AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, -INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM -LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR -OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +Copyright (c) Microsoft Corporation. + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR +OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ****************************** tslib 2.8.1 <https://github.com/Microsoft/tslib> -Copyright (c) Microsoft Corporation. - -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH -REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY -AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, -INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM -LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR -OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +Copyright (c) Microsoft Corporation. + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR +OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ****************************** @@ -99442,27 +99442,27 @@ ts-toolbelt tsutils 3.21.0 <https://github.com/ajafff/tsutils> -The MIT License (MIT) - -Copyright (c) 2017 Klaus Meinhardt - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. +The MIT License (MIT) + +Copyright (c) 2017 Klaus Meinhardt + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. ****************************** @@ -100188,27 +100188,27 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. @types/bn.js 4.11.6 <https://github.com/DefinitelyTyped/DefinitelyTyped> - MIT License - - Copyright (c) Microsoft Corporation. All rights reserved. - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in all - copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - SOFTWARE + MIT License + + Copyright (c) Microsoft Corporation. All rights reserved. + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all + copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + SOFTWARE ****************************** @@ -100989,27 +100989,27 @@ authors: Mohamed Hegazy <https://github.com/mhegazy> @types/istanbul-lib-report 3.0.0 <https://github.com/DefinitelyTyped/DefinitelyTyped> - MIT License - - Copyright (c) Microsoft Corporation. All rights reserved. - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in all - copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - SOFTWARE + MIT License + + Copyright (c) Microsoft Corporation. All rights reserved. + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all + copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + SOFTWARE ****************************** @@ -101232,27 +101232,27 @@ authors: Mohamed Hegazy <https://github.com/mhegazy> @types/ms 0.7.31 <https://github.com/DefinitelyTyped/DefinitelyTyped> - MIT License - - Copyright (c) Microsoft Corporation. All rights reserved. - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in all - copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - SOFTWARE + MIT License + + Copyright (c) Microsoft Corporation. All rights reserved. + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all + copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + SOFTWARE ****************************** @@ -103169,24 +103169,24 @@ SOFTWARE. urlpattern-polyfill 8.0.2 <https://github.com/kenchris/urlpattern-polyfill> -Copyright 2020 Intel Corporation - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +Copyright 2020 Intel Corporation + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************** @@ -103912,27 +103912,27 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. value-or-promise 1.0.11 <https://github.com/yaacovCR/value-or-promise> -MIT License - -Copyright (c) 2019 Yaacov Rydzinski - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. +MIT License + +Copyright (c) 2019 Yaacov Rydzinski + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. ****************************** @@ -108214,81 +108214,81 @@ IN THE SOFTWARE. xmlbuilder 11.0.1 <https://github.com/oozcitak/xmlbuilder-js> -The MIT License (MIT) - -Copyright (c) 2013 Ozgur Ozcitak - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. +The MIT License (MIT) + +Copyright (c) 2013 Ozgur Ozcitak + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. ****************************** xmlbuilder 14.0.0 <https://github.com/oozcitak/xmlbuilder-js> -The MIT License (MIT) - -Copyright (c) 2013 Ozgur Ozcitak - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. +The MIT License (MIT) + +Copyright (c) 2013 Ozgur Ozcitak + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. ****************************** xmlbuilder 15.1.1 <https://github.com/oozcitak/xmlbuilder-js> -The MIT License (MIT) - -Copyright (c) 2013 Ozgur Ozcitak - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. +The MIT License (MIT) + +Copyright (c) 2013 Ozgur Ozcitak + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. ****************************** diff --git a/locales/languages/en.json b/locales/languages/en.json index ca67be2f1385..440cbd34ba2b 100644 --- a/locales/languages/en.json +++ b/locales/languages/en.json @@ -2931,9 +2931,12 @@ "n_quotes": "{{numberOfQuotes}} quotes", "view_details": "View details", "estimated_gas_fee": "Estimated gas fee", + "gas_fee": "Gas fee", + "included": "included", "max_gas_fee": "Max gas fee", "edit": "Edit", "quotes_include_fee": "Quotes include a {{fee}}% MetaMask fee", + "quotes_include_gas_and_metamask_fee": "Quote includes gas and a {{fee}}% MetaMask fee", "tap_to_swap": "Tap to Swap", "swipe_to_swap": "Swipe to swap", "swipe_to": "Swipe to", @@ -3003,6 +3006,8 @@ "high_recommendation": "Swaps are typically time sensitive. “High” will help avoid potential losses due to changes in market conditions.", "recommended": "Recommended", "recommended_gas": "Recommended gas fee", + "gas_included_tooltip_explanation": "This quote incorporates gas fees by adjusting the token amount sent or received. You may receive ETH in a separate transaction on your activity list.", + "gas_included_tooltip_explanation_link_text": "Learn more about gas fees", "gas_education_title": "Estimated gas fees", "gas_education_1": "Gas fees are paid to crypto miners who process transactions on the ", "gas_education_2_ethereum": "Ethereum network.", From 9f8d8d3abc4cf9f2c8ce9fdce334028a05a46b94 Mon Sep 17 00:00:00 2001 From: metamaskbot <metamaskbot@users.noreply.github.com> Date: Fri, 11 Apr 2025 14:18:31 -0600 Subject: [PATCH 132/473] fix snaps tests --- .../SnapUIAddress/SnapUIAddress.test.tsx | 39 ++++++++----------- 1 file changed, 17 insertions(+), 22 deletions(-) diff --git a/app/components/Snaps/SnapUIAddress/SnapUIAddress.test.tsx b/app/components/Snaps/SnapUIAddress/SnapUIAddress.test.tsx index 733a6db02556..f05913facc55 100644 --- a/app/components/Snaps/SnapUIAddress/SnapUIAddress.test.tsx +++ b/app/components/Snaps/SnapUIAddress/SnapUIAddress.test.tsx @@ -7,19 +7,19 @@ const baseMockState = { engine: { backgroundState: { KeyringController: { - keyrings: [], + keyrings: [] }, AccountsController: { internalAccounts: { accounts: { - foo: { + 'foo': { address: '0xab16a96D359eC26a11e2C2b3d8f8B8942d5Bfcdb', metadata: { name: 'My Account', - }, - }, - }, - }, + } + } + } + } }, AddressBookController: { addressBook: { @@ -27,13 +27,13 @@ const baseMockState = { '0xab16a96D359eC26a11e2C2b3d8f8B8942d5Bfcda': { address: '0xab16a96D359eC26a11e2C2b3d8f8B8942d5Bfcda', name: 'Test Contact', - }, - }, - }, - }, - }, + } + } + } + } + } }, - }, + } }; const mockStateWithoutBlockies = { @@ -75,11 +75,8 @@ describe('SnapUIAddress', () => { it('renders account name', () => { const { getByText } = renderWithProvider( - <SnapUIAddress - address="eip155:1:0xab16a96D359eC26a11e2C2b3d8f8B8942d5Bfcdb" - displayName - />, - baseMockState, + <SnapUIAddress address="eip155:1:0xab16a96D359eC26a11e2C2b3d8f8B8942d5Bfcdb" displayName />, + baseMockState ); expect(getByText('My Account')).toBeDefined(); @@ -87,16 +84,14 @@ describe('SnapUIAddress', () => { it('renders contact name', () => { const { getByText } = renderWithProvider( - <SnapUIAddress - address="eip155:1:0xab16a96D359eC26a11e2C2b3d8f8B8942d5Bfcda" - displayName - />, - baseMockState, + <SnapUIAddress address="eip155:1:0xab16a96D359eC26a11e2C2b3d8f8B8942d5Bfcda" displayName />, + baseMockState ); expect(getByText('Test Contact')).toBeDefined(); }); + it('renders Ethereum address with blockie', () => { const { toJSON } = renderWithProvider( <SnapUIAddress address="eip155:1:0xab16a96D359eC26a11e2C2b3d8f8B8942d5Bfcdb" />, From fa1b050952548713881c93718c4b313512586fc8 Mon Sep 17 00:00:00 2001 From: metamaskbot <metamaskbot@users.noreply.github.com> Date: Fri, 11 Apr 2025 14:19:16 -0600 Subject: [PATCH 133/473] fix changes --- .../components/ValueDisplay/ValueDisplay.tsx | 64 ++++++++----------- 1 file changed, 25 insertions(+), 39 deletions(-) diff --git a/app/components/Views/confirmations/components/Confirm/Info/TypedSignV3V4/Simulation/components/ValueDisplay/ValueDisplay.tsx b/app/components/Views/confirmations/components/Confirm/Info/TypedSignV3V4/Simulation/components/ValueDisplay/ValueDisplay.tsx index ab1387fde6ee..3afd83119d0b 100644 --- a/app/components/Views/confirmations/components/Confirm/Info/TypedSignV3V4/Simulation/components/ValueDisplay/ValueDisplay.tsx +++ b/app/components/Views/confirmations/components/Confirm/Info/TypedSignV3V4/Simulation/components/ValueDisplay/ValueDisplay.tsx @@ -31,10 +31,7 @@ import { calcTokenAmount } from '../../../../../../../../../../util/transactions import { useGetTokenStandardAndDetails } from '../../../../../../../hooks/useGetTokenStandardAndDetails'; import useTrackERC20WithoutDecimalInformation from '../../../../../../../hooks/useTrackERC20WithoutDecimalInformation'; import { TOKEN_VALUE_UNLIMITED_THRESHOLD } from '../../../../../../../utils/confirm'; -import { - isPermitDaiRevoke, - isPermitDaiUnlimited, -} from '../../../../../../../utils/signature'; +import { isPermitDaiRevoke, isPermitDaiUnlimited } from '../../../../../../../utils/signature'; import { TokenDetailsERC20 } from '../../../../../../../utils/token'; import BottomModal from '../../../../../../UI/BottomModal'; @@ -136,8 +133,7 @@ const SimulationValueDisplay: React.FC<SimulationValueDisplayParams> = ({ const isNFT = tokenId !== undefined && tokenId !== '0'; const isDaiUnlimited = isPermitDaiUnlimited(tokenContract, allowed); const isDaiRevoke = isPermitDaiRevoke(tokenContract, allowed, value); - const isRevoke = - isDaiRevoke || modalHeaderText === strings('confirm.title.permit_revoke'); + const isRevoke = isDaiRevoke || modalHeaderText === strings('confirm.title.permit_revoke'); const tokenAmount = isNumberValue(value) && !tokenId @@ -164,45 +160,35 @@ const SimulationValueDisplay: React.FC<SimulationValueDisplayParams> = ({ ? formatAmountMaxPrecision('en-US', tokenAmount) : null; - const showUnlimitedValue = - isDaiUnlimited || + const showUnlimitedValue = isDaiUnlimited || (canDisplayValueAsUnlimited && - Number(value) > TOKEN_VALUE_UNLIMITED_THRESHOLD); + Number(value) > TOKEN_VALUE_UNLIMITED_THRESHOLD); // Avoid empty button pill container - const showValueButtonPill = Boolean( - isPendingTokenDetails || - showUnlimitedValue || - tokenValue !== null || - tokenId, - ); + const showValueButtonPill = Boolean(isPendingTokenDetails + || showUnlimitedValue + || (tokenValue !== null || tokenId)); function handlePressTokenValue() { setHasValueModalOpen(true); } - return ( - <View style={styles.wrapper}> - <View style={styles.flexRowTokenValueAndAddress}> - <View style={styles.valueAndAddress}> - {showValueButtonPill && ( - <AnimatedPulse - isPulsing={isPendingTokenDetails} - testID="simulation-value-display-loader" - > - <ButtonPill - isDisabled={isNFT || tokenValueMaxPrecision === null} - onPress={handlePressTokenValue} - onPressIn={handlePressTokenValue} - onPressOut={handlePressTokenValue} - style={[ - credit && styles.valueIsCredit, - debit && styles.valueIsDebit, - ]} - > - {isPendingTokenDetails ? ( - <View style={styles.loaderButtonPillEmptyContent} /> - ) : ( + return ( + <View style={styles.wrapper}> + <View style={styles.flexRowTokenValueAndAddress}> + <View style={styles.valueAndAddress}> + {showValueButtonPill && + <AnimatedPulse isPulsing={isPendingTokenDetails} testID="simulation-value-display-loader"> + <ButtonPill + isDisabled={isNFT || tokenValueMaxPrecision === null} + onPress={handlePressTokenValue} + onPressIn={handlePressTokenValue} + onPressOut={handlePressTokenValue} + style={[credit && styles.valueIsCredit, debit && styles.valueIsDebit]} + > + {isPendingTokenDetails ? + <View style={styles.loaderButtonPillEmptyContent} /> + : <Text> {credit && '+ '} {debit && '- '} @@ -217,10 +203,10 @@ const SimulationValueDisplay: React.FC<SimulationValueDisplayParams> = ({ })} {tokenId && `#${tokenId}`} </Text> - )} + } </ButtonPill> </AnimatedPulse> - )} + } <View style={styles.marginStart4}> <Address address={tokenContract} chainId={chainId} /> </View> From 5105296778bcb66b566e7edb297278dc7d378e87 Mon Sep 17 00:00:00 2001 From: metamaskbot <metamaskbot@users.noreply.github.com> Date: Fri, 11 Apr 2025 14:20:51 -0600 Subject: [PATCH 134/473] fix changes to smart tx --- app/util/smart-transactions/index.test.ts | 36 ++++++++++------------- 1 file changed, 15 insertions(+), 21 deletions(-) diff --git a/app/util/smart-transactions/index.test.ts b/app/util/smart-transactions/index.test.ts index ad14867530ee..a6bf97f62c47 100644 --- a/app/util/smart-transactions/index.test.ts +++ b/app/util/smart-transactions/index.test.ts @@ -513,15 +513,13 @@ describe('Smart Transactions utils', () => { it('returns the token fee when the full path exists', () => { const mockQuote = { tradeTxFees: { - fees: [ - { - tokenFees: ['mockTokenFee'], - }, - ], + fees: [{ + tokenFees: ['mockTokenFee'], + }], cancelFees: {}, feeEstimate: '0x0', gasLimit: '0x0', - gasUsed: '0x0', + gasUsed: '0x0' }, approvalTxFees: null, } as unknown as GasIncludedQuote; @@ -546,7 +544,7 @@ describe('Smart Transactions utils', () => { cancelFees: {}, feeEstimate: '0x0', gasLimit: '0x0', - gasUsed: '0x0', + gasUsed: '0x0' }, approvalTxFees: null, } as unknown as GasIncludedQuote; @@ -586,21 +584,19 @@ describe('Smart Transactions utils', () => { it('returns transaction fees when gas is included and token fee exists', () => { const mockQuote = { tradeTxFees: { - fees: [ - { - tokenFees: ['mockTokenFee'], - }, - ], + fees: [{ + tokenFees: ['mockTokenFee'], + }], cancelFees: {}, feeEstimate: '0x0', gasLimit: '0x0', - gasUsed: '0x0', + gasUsed: '0x0' }, approvalTxFees: { cancelFees: {}, feeEstimate: '0x0', gasLimit: '0x0', - gasUsed: '0x0', + gasUsed: '0x0' }, isGasIncludedTrade: true, } as unknown as GasIncludedQuote; @@ -615,15 +611,13 @@ describe('Smart Transactions utils', () => { it('returns undefined when gas is not included', () => { const mockQuote = { tradeTxFees: { - fees: [ - { - tokenFees: ['mockTokenFee'], - }, - ], + fees: [{ + tokenFees: ['mockTokenFee'], + }], cancelFees: {}, feeEstimate: '0x0', gasLimit: '0x0', - gasUsed: '0x0', + gasUsed: '0x0' }, approvalTxFees: null, isGasIncludedTrade: false, @@ -640,7 +634,7 @@ describe('Smart Transactions utils', () => { cancelFees: {}, feeEstimate: '0x0', gasLimit: '0x0', - gasUsed: '0x0', + gasUsed: '0x0' }, approvalTxFees: null, isGasIncludedTrade: true, From d2092b29f87a9551538054bee9ade9ba57423ba7 Mon Sep 17 00:00:00 2001 From: "runway-github[bot]" <73448015+runway-github[bot]@users.noreply.github.com> Date: Mon, 14 Apr 2025 12:24:39 -0600 Subject: [PATCH 135/473] chore(runway): cherry-pick b8f23e3 (#14658) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - fix: Fix/deploy bitrise ipa path (#14639) <!-- Please submit this PR as a draft initially. Do not mark it as "Ready for review" until the template has been completely filled out, and PR status checks have passed at least once. --> ## **Description** <!-- Write a short description of the changes included in this pull request, also include relevant motivation and context. Have in mind the following questions: 1. What is the reason for the change? 2. What is the improvement/solution? --> This PR preserves the pipeline variable for the IPA when releasing iOS to store ## **Related issues** Fixes: ## **Manual testing steps** - Run `release_ios_to_store_pipeline` against this branch - IPA should be deployed to store ## **Screenshots/Recordings** <!-- If applicable, add screenshots and/or recordings to visualize the before and after of your change. --> ### **Before** <!-- [screenshots/recordings] --> ### **After** <!-- [screenshots/recordings] --> https://app.bitrise.io/build/4c052bb6-8b38-4a84-a845-017629ed549a ## **Pre-merge author checklist** - [x] I’ve followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile Coding Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [x] I've completed the PR template to the best of my ability - [x] I’ve included tests if applicable - [x] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [x] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. ## **Pre-merge reviewer checklist** - [x] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [x] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots. --------- Co-authored-by: metamaskbot <metamaskbot@users.noreply.github.com> [b8f23e3](https://github.com/MetaMask/metamask-mobile/commit/b8f23e3379fbdc58a617592364d2b0a0104d0aeb) --------- Co-authored-by: Cal Leung <cal.leung@consensys.net> Co-authored-by: metamaskbot <metamaskbot@users.noreply.github.com> --- bitrise.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bitrise.yml b/bitrise.yml index 03b9c1f158dd..ce4ae57011c4 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -1832,13 +1832,13 @@ workflows: fi # Export new names as environment variables - envman add --key RENAMED_BINARY_FILE --value "$NEW_BASE_NAME$BINARY_EXTENSION" envman add --key RENAMED_ARCHIVE_FILE --value "$NEW_BASE_NAME.xcarchive" envman add --key BINARY_DEPLOY_PATH --value "$BUILD_DIR/$NEW_BASE_NAME$BINARY_EXTENSION" - deploy-to-bitrise-io@2.2.3: is_always_run: false is_skippable: true inputs: + - pipeline_intermediate_files: $BINARY_DEPLOY_PATH:BITRISE_APP_STORE_IPA_PATH - deploy_path: $BINARY_DEPLOY_PATH - is_compress: true title: Deploy iOS Binary From 2824770b4c45355070a2b9cee3dd7d4d0aadfc08 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ant=C3=B3nio=20Regadas?= <antonio.regadas@consensys.net> Date: Tue, 15 Apr 2025 15:46:09 +0100 Subject: [PATCH 136/473] fix: cherry pick solana color property fix (#14668) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit <!-- Please submit this PR as a draft initially. Do not mark it as "Ready for review" until the template has been completely filled out, and PR status checks have passed at least once. --> ## **Description** No conflicts. Cherry-pick commit: [4981ce8a26390ceec8b38ac58075ed136d7e21de](https://github.com/MetaMask/metamask-mobile/commit/4981ce8a26390ceec8b38ac58075ed136d7e21de) Original PR: https://github.com/MetaMask/metamask-mobile/pull/14664 ## **Related issues** Fixes: https://github.com/MetaMask/metamask-mobile/issues/14657 ## **Manual testing steps** 1. Go to this page... 2. 3. ## **Screenshots/Recordings** <!-- If applicable, add screenshots and/or recordings to visualize the before and after of your change. --> ### **Before** ### **After** ## **Pre-merge author checklist** - [ ] I’ve followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile Coding Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [ ] I've completed the PR template to the best of my ability - [ ] I’ve included tests if applicable - [ ] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [ ] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. ## **Pre-merge reviewer checklist** - [ ] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [ ] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots. <!-- Please submit this PR as a draft initially. Do not mark it as "Ready for review" until the template has been completely filled out, and PR status checks have passed at least once. --> ## **Description** <!-- Write a short description of the changes included in this pull request, also include relevant motivation and context. Have in mind the following questions: 1. What is the reason for the change? 2. What is the improvement/solution? --> ## **Related issues** Fixes: ## **Manual testing steps** 1. Go to this page... 2. 3. ## **Screenshots/Recordings** <!-- If applicable, add screenshots and/or recordings to visualize the before and after of your change. --> ### **Before** <!-- [screenshots/recordings] --> ### **After** <!-- [screenshots/recordings] --> ## **Pre-merge author checklist** - [ ] I’ve followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile Coding Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [ ] I've completed the PR template to the best of my ability - [ ] I’ve included tests if applicable - [ ] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [ ] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. ## **Pre-merge reviewer checklist** - [ ] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [ ] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots. --- .../SnapAccountCustomNameApproval.styles.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/app/components/Approvals/SnapAccountCustomNameApproval/SnapAccountCustomNameApproval.styles.ts b/app/components/Approvals/SnapAccountCustomNameApproval/SnapAccountCustomNameApproval.styles.ts index ce8c32319f50..5e8f8cecdef3 100644 --- a/app/components/Approvals/SnapAccountCustomNameApproval/SnapAccountCustomNameApproval.styles.ts +++ b/app/components/Approvals/SnapAccountCustomNameApproval/SnapAccountCustomNameApproval.styles.ts @@ -37,6 +37,7 @@ const styleSheet = (params: { theme: Theme }) => { borderRadius: 4, padding: 10, marginVertical: 10, + color: colors.text.default, }, }); }; From da2cec078e8f8ae77541323782c4d1b2839726aa Mon Sep 17 00:00:00 2001 From: Shane T <muldots@gmail.com> Date: Tue, 15 Apr 2025 16:35:09 +0100 Subject: [PATCH 137/473] cherry-pick(7.45): enable multi-SRP (#14676) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit <!-- Please submit this PR as a draft initially. Do not mark it as "Ready for review" until the template has been completely filled out, and PR status checks have passed at least once. --> Enable Multi-SRP Linked: https://github.com/MetaMask/metamask-mobile/pull/14558 1. Go to this page... 2. 3. <!-- If applicable, add screenshots and/or recordings to visualize the before and after of your change. --> <!-- [screenshots/recordings] --> <!-- [screenshots/recordings] --> - [X] I’ve followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile Coding Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [X] I've completed the PR template to the best of my ability - [X] I’ve included tests if applicable - [X] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [X] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. - [ ] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [ ] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots. --------- <!-- Please submit this PR as a draft initially. Do not mark it as "Ready for review" until the template has been completely filled out, and PR status checks have passed at least once. --> ## **Description** <!-- Write a short description of the changes included in this pull request, also include relevant motivation and context. Have in mind the following questions: 1. What is the reason for the change? 2. What is the improvement/solution? --> ## **Related issues** Fixes: ## **Manual testing steps** 1. Go to this page... 2. 3. ## **Screenshots/Recordings** <!-- If applicable, add screenshots and/or recordings to visualize the before and after of your change. --> ### **Before** <!-- [screenshots/recordings] --> ### **After** <!-- [screenshots/recordings] --> ## **Pre-merge author checklist** - [ ] I’ve followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile Coding Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [ ] I've completed the PR template to the best of my ability - [ ] I’ve included tests if applicable - [ ] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [ ] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. ## **Pre-merge reviewer checklist** - [ ] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [ ] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots. Co-authored-by: yande <110056475+Andepande@users.noreply.github.com> Co-authored-by: Monte Lai <monte.lai@consensys.net> --- app/util/address/index.ts | 2 -- metro.transform.js | 4 ++-- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/app/util/address/index.ts b/app/util/address/index.ts index bcb1dc7b051f..2e000d1bf0c9 100644 --- a/app/util/address/index.ts +++ b/app/util/address/index.ts @@ -39,9 +39,7 @@ import { NetworkType, toChecksumHexAddress } from '@metamask/controller-utils'; import { NetworkClientId, NetworkState } from '@metamask/network-controller'; import { AccountImportStrategy, - ///: BEGIN:ONLY_INCLUDE_IF(keyring-snaps) KeyringTypes, - ///: END:ONLY_INCLUDE_IF } from '@metamask/keyring-controller'; import { Hex, isHexString } from '@metamask/utils'; import PREINSTALLED_SNAPS from '../../lib/snaps/preinstalled-snaps'; diff --git a/metro.transform.js b/metro.transform.js index 90ee2c3caf43..3d01299fa2e0 100644 --- a/metro.transform.js +++ b/metro.transform.js @@ -22,8 +22,8 @@ const availableFeatures = new Set([ 'bitcoin', ]); -const mainFeatureSet = new Set(['preinstalled-snaps']); -const betaFeatureSet = new Set(['beta', 'preinstalled-snaps', 'keyring-snaps']); +const mainFeatureSet = new Set(['preinstalled-snaps', 'multi-srp']); +const betaFeatureSet = new Set(['beta', 'preinstalled-snaps', 'keyring-snaps', 'multi-srp']); const flaskFeatureSet = new Set([ 'flask', 'preinstalled-snaps', From 4a7789da4594bcd26d7fafbb656a7631d2e85189 Mon Sep 17 00:00:00 2001 From: metamaskbot <metamaskbot@users.noreply.github.com> Date: Tue, 15 Apr 2025 16:49:02 +0000 Subject: [PATCH 138/473] Bump version number to 1688 --- android/app/build.gradle | 2 +- bitrise.yml | 4 ++-- ios/MetaMask.xcodeproj/project.pbxproj | 12 ++++++------ 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/android/app/build.gradle b/android/app/build.gradle index bd272e548953..7bd1bf1a9427 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -179,7 +179,7 @@ android { minSdkVersion rootProject.ext.minSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion versionName "7.45.0" - versionCode 1682 + versionCode 1688 testBuildType System.getProperty('testBuildType', 'debug') missingDimensionStrategy 'react-native-camera', 'general' testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" diff --git a/bitrise.yml b/bitrise.yml index ce4ae57011c4..7d209df487dd 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -2235,13 +2235,13 @@ app: VERSION_NAME: 7.45.0 - opts: is_expand: false - VERSION_NUMBER: 1682 + VERSION_NUMBER: 1688 - opts: is_expand: false FLASK_VERSION_NAME: 7.45.0 - opts: is_expand: false - FLASK_VERSION_NUMBER: 1682 + FLASK_VERSION_NUMBER: 1688 - opts: is_expand: false ANDROID_APK_LINK: '' diff --git a/ios/MetaMask.xcodeproj/project.pbxproj b/ios/MetaMask.xcodeproj/project.pbxproj index 49ecfcaa58f2..78cdf6011033 100644 --- a/ios/MetaMask.xcodeproj/project.pbxproj +++ b/ios/MetaMask.xcodeproj/project.pbxproj @@ -1261,7 +1261,7 @@ CODE_SIGN_IDENTITY = "Apple Development"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1682; + CURRENT_PROJECT_VERSION = 1688; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = 48XVW22RCG; @@ -1330,7 +1330,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMask.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1682; + CURRENT_PROJECT_VERSION = 1688; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 48XVW22RCG; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 48XVW22RCG; @@ -1395,7 +1395,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMaskDebug.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1682; + CURRENT_PROJECT_VERSION = 1688; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = 48XVW22RCG; @@ -1461,7 +1461,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMask.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1682; + CURRENT_PROJECT_VERSION = 1688; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 48XVW22RCG; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 48XVW22RCG; @@ -1620,7 +1620,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMaskDebug.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1682; + CURRENT_PROJECT_VERSION = 1688; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = 48XVW22RCG; @@ -1689,7 +1689,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMask.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1682; + CURRENT_PROJECT_VERSION = 1688; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 48XVW22RCG; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 48XVW22RCG; From 827714e0abcc0c25a54d15a6d9f1dfbbf410cad0 Mon Sep 17 00:00:00 2001 From: metamaskbot <metamaskbot@users.noreply.github.com> Date: Tue, 15 Apr 2025 17:36:00 +0000 Subject: [PATCH 139/473] Bump version number to 1689 --- android/app/build.gradle | 2 +- bitrise.yml | 4 ++-- ios/MetaMask.xcodeproj/project.pbxproj | 12 ++++++------ 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/android/app/build.gradle b/android/app/build.gradle index 7bd1bf1a9427..9f68478f2116 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -179,7 +179,7 @@ android { minSdkVersion rootProject.ext.minSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion versionName "7.45.0" - versionCode 1688 + versionCode 1689 testBuildType System.getProperty('testBuildType', 'debug') missingDimensionStrategy 'react-native-camera', 'general' testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" diff --git a/bitrise.yml b/bitrise.yml index 7d209df487dd..b7982ad17704 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -2235,13 +2235,13 @@ app: VERSION_NAME: 7.45.0 - opts: is_expand: false - VERSION_NUMBER: 1688 + VERSION_NUMBER: 1689 - opts: is_expand: false FLASK_VERSION_NAME: 7.45.0 - opts: is_expand: false - FLASK_VERSION_NUMBER: 1688 + FLASK_VERSION_NUMBER: 1689 - opts: is_expand: false ANDROID_APK_LINK: '' diff --git a/ios/MetaMask.xcodeproj/project.pbxproj b/ios/MetaMask.xcodeproj/project.pbxproj index 78cdf6011033..b2591e44005b 100644 --- a/ios/MetaMask.xcodeproj/project.pbxproj +++ b/ios/MetaMask.xcodeproj/project.pbxproj @@ -1261,7 +1261,7 @@ CODE_SIGN_IDENTITY = "Apple Development"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1688; + CURRENT_PROJECT_VERSION = 1689; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = 48XVW22RCG; @@ -1330,7 +1330,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMask.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1688; + CURRENT_PROJECT_VERSION = 1689; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 48XVW22RCG; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 48XVW22RCG; @@ -1395,7 +1395,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMaskDebug.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1688; + CURRENT_PROJECT_VERSION = 1689; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = 48XVW22RCG; @@ -1461,7 +1461,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMask.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1688; + CURRENT_PROJECT_VERSION = 1689; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 48XVW22RCG; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 48XVW22RCG; @@ -1620,7 +1620,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMaskDebug.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1688; + CURRENT_PROJECT_VERSION = 1689; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = 48XVW22RCG; @@ -1689,7 +1689,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMask.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1688; + CURRENT_PROJECT_VERSION = 1689; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 48XVW22RCG; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 48XVW22RCG; From 011e279d616785cafef6994528636a50dc1097dd Mon Sep 17 00:00:00 2001 From: Elliot Winkler <elliot.winkler@gmail.com> Date: Wed, 16 Apr 2025 06:47:25 -0600 Subject: [PATCH 140/473] chore: Revert "feat: Auto-failover to Quicknode when Infura is down (#14139)" (#14688) This reverts commit 420add20a9b9b8b5673ec37ddead826ff9253f39. This feature is not as well-tested as we'd like and we need more time to ensure it is working the way we want. --- .../CellSelectWithMenu/CellSelectWithMenu.tsx | 64 +- .../CellSelectWithMenu.test.tsx.snap | 31 +- .../foundation/CellBase/CellBase.types.ts | 2 +- app/components/Nav/App/App.tsx | 1 - .../AccountSelector.test.tsx.snap | 186 ++- app/components/UI/NetworkModal/index.tsx | 22 +- .../NetworkSwitcher/NetworkSwitcher.test.tsx | 1 - .../Views/NetworkSwitcher/NetworkSwitcher.tsx | 12 +- .../UI/Ramp/hooks/useRampNetworksDetail.ts | 5 +- .../TokenFilterBottomSheet.test.tsx | 2 - .../util/enableAllNetworksFilter.test.ts | 7 - .../RpcSelectionModal.test.tsx | 5 - .../NetworkSelector.test.tsx.snap | 6 + .../CustomNetworkView/CustomNetwork.tsx | 9 +- .../CustomNetworkView/CustomNetwork.types.ts | 18 +- .../NetworksSettings/NetworkSettings/index.js | 280 ++-- .../NetworkSettings/index.test.tsx | 65 +- app/constants/network.js | 2 - app/core/Analytics/MetaMetrics.events.ts | 8 - app/core/Engine/Engine.ts | 113 +- .../messenger-action-handlers.test.ts | 169 --- .../messenger-action-handlers.ts | 121 -- .../controllers/network-controller/utils.ts | 32 - .../RPCMethods/wallet_addEthereumChain.js | 3 - .../wallet_addEthereumChain.test.js | 1 - ...accountTrackerControllerReRenders.test.tsx | 6 - app/store/migrations/055.test.ts | 42 +- app/store/migrations/073.test.ts | 1193 ----------------- app/store/migrations/073.ts | 205 --- app/store/migrations/index.ts | 2 - app/util/address/index.test.ts | 1 - app/util/bridge/hooks/useAddToken.ts | 1 - app/util/networks/customNetworks.tsx | 51 +- app/util/onlyKeepHost.test.ts | 15 - app/util/onlyKeepHost.ts | 13 - app/util/stripKeyFromInfuraUrl.test.ts | 24 - app/util/stripKeyFromInfuraUrl.ts | 17 - app/util/stripProtocol.test.ts | 29 - app/util/stripProtocol.ts | 16 - app/util/test/network.ts | 1 - babel.config.tests.js | 26 - bitrise.yml | 2 +- jest.config.js | 2 +- locales/languages/en.json | 4 +- 44 files changed, 409 insertions(+), 2406 deletions(-) delete mode 100644 app/core/Engine/controllers/network-controller/messenger-action-handlers.test.ts delete mode 100644 app/core/Engine/controllers/network-controller/messenger-action-handlers.ts delete mode 100644 app/core/Engine/controllers/network-controller/utils.ts delete mode 100644 app/store/migrations/073.test.ts delete mode 100644 app/store/migrations/073.ts delete mode 100644 app/util/onlyKeepHost.test.ts delete mode 100644 app/util/onlyKeepHost.ts delete mode 100644 app/util/stripKeyFromInfuraUrl.test.ts delete mode 100644 app/util/stripKeyFromInfuraUrl.ts delete mode 100644 app/util/stripProtocol.test.ts delete mode 100644 app/util/stripProtocol.ts delete mode 100644 babel.config.tests.js diff --git a/app/component-library/components-temp/CellSelectWithMenu/CellSelectWithMenu.tsx b/app/component-library/components-temp/CellSelectWithMenu/CellSelectWithMenu.tsx index 6fe0a03662b4..3327adff85b3 100644 --- a/app/component-library/components-temp/CellSelectWithMenu/CellSelectWithMenu.tsx +++ b/app/component-library/components-temp/CellSelectWithMenu/CellSelectWithMenu.tsx @@ -36,30 +36,10 @@ const CellSelectWithMenu = ({ children, withAvatar = true, showSecondaryTextIcon = true, - onTextClick, ...props }: CellSelectWithMenuProps) => { const { styles } = useStyles(styleSheet, { style }); - const renderSecondaryText = () => ( - <> - <Text - numberOfLines={1} - variant={DEFAULT_CELLBASE_AVATAR_SECONDARYTEXT_TEXTVARIANT} - style={styles.secondaryText} - > - {secondaryText} - </Text> - {showSecondaryTextIcon && ( - <Icon - name={IconName.ArrowDown} - size={IconSize.Xss} - style={styles.arrowStyle} - /> - )} - </> - ); - return ( <ListItemMultiSelectButton isSelected={isSelected} @@ -79,34 +59,36 @@ const CellSelectWithMenu = ({ ) : null} <View style={styles.cellBaseInfo}> - {title === undefined || - title === null || - typeof title === 'string' || - typeof title === 'number' || - typeof title === 'boolean' ? ( - <Text - numberOfLines={1} - variant={DEFAULT_CELLBASE_AVATAR_TITLE_TEXTVARIANT} - testID={CellComponentSelectorsIDs.BASE_TITLE} - > - {title} - </Text> - ) : ( - title - )} - {!!secondaryText && onTextClick && ( + <Text + numberOfLines={1} + variant={DEFAULT_CELLBASE_AVATAR_TITLE_TEXTVARIANT} + testID={CellComponentSelectorsIDs.BASE_TITLE} + > + {title} + </Text> + {!!secondaryText && ( <TouchableWithoutFeedback> <TouchableOpacity style={styles.containerRow} - onPress={onTextClick} + onPress={props.onTextClick} > - {renderSecondaryText()} + <Text + numberOfLines={1} + variant={DEFAULT_CELLBASE_AVATAR_SECONDARYTEXT_TEXTVARIANT} + style={styles.secondaryText} + > + {secondaryText} + </Text> + {showSecondaryTextIcon && ( + <Icon + name={IconName.ArrowDown} + size={IconSize.Xss} + style={styles.arrowStyle} + /> + )} </TouchableOpacity> </TouchableWithoutFeedback> )} - {!!secondaryText && !onTextClick && ( - <View>{renderSecondaryText()}</View> - )} {!!tagLabel && ( <Tag testID={CellComponentSelectorsIDs.TAG_LABEL} diff --git a/app/component-library/components-temp/CellSelectWithMenu/__snapshots__/CellSelectWithMenu.test.tsx.snap b/app/component-library/components-temp/CellSelectWithMenu/__snapshots__/CellSelectWithMenu.test.tsx.snap index 18ba46c2a7f8..d46d2efccd99 100644 --- a/app/component-library/components-temp/CellSelectWithMenu/__snapshots__/CellSelectWithMenu.test.tsx.snap +++ b/app/component-library/components-temp/CellSelectWithMenu/__snapshots__/CellSelectWithMenu.test.tsx.snap @@ -221,7 +221,34 @@ exports[`CellSelectWithMenu should render with default settings correctly 1`] = > Orangefox.eth </Text> - <View> + <TouchableOpacity + accessibilityState={ + { + "busy": undefined, + "checked": undefined, + "disabled": undefined, + "expanded": undefined, + "selected": undefined, + } + } + accessible={true} + focusable={false} + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} + style={ + { + "alignItems": "flex-start", + "flexDirection": "row", + "marginBottom": 0, + "zIndex": 1, + } + } + > <Text accessibilityRole="text" numberOfLines={1} @@ -252,7 +279,7 @@ exports[`CellSelectWithMenu should render with default settings correctly 1`] = } width={10} /> - </View> + </TouchableOpacity> <View style={ { diff --git a/app/component-library/components/Cells/Cell/foundation/CellBase/CellBase.types.ts b/app/component-library/components/Cells/Cell/foundation/CellBase/CellBase.types.ts index 6bf1bb924082..172cb99124db 100644 --- a/app/component-library/components/Cells/Cell/foundation/CellBase/CellBase.types.ts +++ b/app/component-library/components/Cells/Cell/foundation/CellBase/CellBase.types.ts @@ -16,7 +16,7 @@ export interface CellBaseProps { /** * Title of the Cell Account, 1 line truncation. */ - title: React.ReactNode; + title: string; /** * Optional secondary text below the title, 1 line truncation. */ diff --git a/app/components/Nav/App/App.tsx b/app/components/Nav/App/App.tsx index 1188e189d951..b7220be14ee5 100644 --- a/app/components/Nav/App/App.tsx +++ b/app/components/Nav/App/App.tsx @@ -916,7 +916,6 @@ const App: React.FC = () => { rpcEndpoints: [ { url: network.rpcUrl, - failoverUrls: network.failoverRpcUrls, name: network.nickname, type: RpcEndpointType.Custom, }, diff --git a/app/components/UI/AccountSelectorList/__snapshots__/AccountSelector.test.tsx.snap b/app/components/UI/AccountSelectorList/__snapshots__/AccountSelector.test.tsx.snap index cb1d47eafd83..2d2c57dd0afc 100644 --- a/app/components/UI/AccountSelectorList/__snapshots__/AccountSelector.test.tsx.snap +++ b/app/components/UI/AccountSelectorList/__snapshots__/AccountSelector.test.tsx.snap @@ -281,7 +281,34 @@ exports[`AccountSelectorList renders all accounts with balances 1`] = ` > Account 1 </Text> - <View> + <TouchableOpacity + accessibilityState={ + { + "busy": undefined, + "checked": undefined, + "disabled": undefined, + "expanded": undefined, + "selected": undefined, + } + } + accessible={true} + focusable={false} + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} + style={ + { + "alignItems": "flex-start", + "flexDirection": "row", + "marginBottom": 0, + "zIndex": 1, + } + } + > <Text accessibilityRole="text" numberOfLines={1} @@ -298,7 +325,7 @@ exports[`AccountSelectorList renders all accounts with balances 1`] = ` > 0xC495...D272 </Text> - </View> + </TouchableOpacity> </View> <View style={ @@ -654,7 +681,34 @@ exports[`AccountSelectorList renders all accounts with balances 1`] = ` > Account 2 </Text> - <View> + <TouchableOpacity + accessibilityState={ + { + "busy": undefined, + "checked": undefined, + "disabled": undefined, + "expanded": undefined, + "selected": undefined, + } + } + accessible={true} + focusable={false} + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} + style={ + { + "alignItems": "flex-start", + "flexDirection": "row", + "marginBottom": 0, + "zIndex": 1, + } + } + > <Text accessibilityRole="text" numberOfLines={1} @@ -671,7 +725,7 @@ exports[`AccountSelectorList renders all accounts with balances 1`] = ` > 0xd018...78E7 </Text> - </View> + </TouchableOpacity> </View> <View style={ @@ -1056,7 +1110,34 @@ exports[`AccountSelectorList renders all accounts with right accessory 1`] = ` > Account 1 </Text> - <View> + <TouchableOpacity + accessibilityState={ + { + "busy": undefined, + "checked": undefined, + "disabled": undefined, + "expanded": undefined, + "selected": undefined, + } + } + accessible={true} + focusable={false} + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} + style={ + { + "alignItems": "flex-start", + "flexDirection": "row", + "marginBottom": 0, + "zIndex": 1, + } + } + > <Text accessibilityRole="text" numberOfLines={1} @@ -1073,7 +1154,7 @@ exports[`AccountSelectorList renders all accounts with right accessory 1`] = ` > 0xC495...D272 </Text> - </View> + </TouchableOpacity> </View> <View style={ @@ -1365,7 +1446,34 @@ exports[`AccountSelectorList renders all accounts with right accessory 1`] = ` > Account 2 </Text> - <View> + <TouchableOpacity + accessibilityState={ + { + "busy": undefined, + "checked": undefined, + "disabled": undefined, + "expanded": undefined, + "selected": undefined, + } + } + accessible={true} + focusable={false} + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} + style={ + { + "alignItems": "flex-start", + "flexDirection": "row", + "marginBottom": 0, + "zIndex": 1, + } + } + > <Text accessibilityRole="text" numberOfLines={1} @@ -1382,7 +1490,7 @@ exports[`AccountSelectorList renders all accounts with right accessory 1`] = ` > 0xd018...78E7 </Text> - </View> + </TouchableOpacity> </View> <View style={ @@ -1729,7 +1837,34 @@ exports[`AccountSelectorList renders correctly 1`] = ` > Account 1 </Text> - <View> + <TouchableOpacity + accessibilityState={ + { + "busy": undefined, + "checked": undefined, + "disabled": undefined, + "expanded": undefined, + "selected": undefined, + } + } + accessible={true} + focusable={false} + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} + style={ + { + "alignItems": "flex-start", + "flexDirection": "row", + "marginBottom": 0, + "zIndex": 1, + } + } + > <Text accessibilityRole="text" numberOfLines={1} @@ -1746,7 +1881,7 @@ exports[`AccountSelectorList renders correctly 1`] = ` > 0xC495...D272 </Text> - </View> + </TouchableOpacity> </View> <View style={ @@ -2102,7 +2237,34 @@ exports[`AccountSelectorList renders correctly 1`] = ` > Account 2 </Text> - <View> + <TouchableOpacity + accessibilityState={ + { + "busy": undefined, + "checked": undefined, + "disabled": undefined, + "expanded": undefined, + "selected": undefined, + } + } + accessible={true} + focusable={false} + onClick={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} + style={ + { + "alignItems": "flex-start", + "flexDirection": "row", + "marginBottom": 0, + "zIndex": 1, + } + } + > <Text accessibilityRole="text" numberOfLines={1} @@ -2119,7 +2281,7 @@ exports[`AccountSelectorList renders correctly 1`] = ` > 0xd018...78E7 </Text> - </View> + </TouchableOpacity> </View> <View style={ diff --git a/app/components/UI/NetworkModal/index.tsx b/app/components/UI/NetworkModal/index.tsx index 28e9afdb2c73..9659cd8e6e28 100644 --- a/app/components/UI/NetworkModal/index.tsx +++ b/app/components/UI/NetworkModal/index.tsx @@ -46,7 +46,6 @@ import { RpcEndpointType, AddNetworkFields, } from '@metamask/network-controller'; -import { Network } from '../../../util/networks/customNetworks'; export interface SafeChain { chainId: string; @@ -58,9 +57,9 @@ export interface SafeChain { interface NetworkProps { isVisible: boolean; onClose: () => void; - networkConfiguration: Network & { - formattedRpcUrl?: string | null; - }; + // TODO: Replace "any" with type + // eslint-disable-next-line @typescript-eslint/no-explicit-any + networkConfiguration: any; // TODO: Replace "any" with type // eslint-disable-next-line @typescript-eslint/no-explicit-any navigation: any; @@ -80,7 +79,6 @@ const NetworkModals = (props: NetworkProps) => { nickname, ticker, rpcUrl, - failoverRpcUrls, formattedRpcUrl, rpcPrefs: { blockExplorerUrl, imageUrl }, }, @@ -134,14 +132,8 @@ const NetworkModals = (props: NetworkProps) => { [customNetworkInformation.chainId]: true, }); } else { - const normalizedTokenNetworkFilter = Object.fromEntries( - Object.entries(tokenNetworkFilter).map(([key, value]) => [ - key, - Boolean(value), - ]), - ); PreferencesController.setTokenNetworkFilter({ - ...normalizedTokenNetworkFilter, + ...tokenNetworkFilter, [customNetworkInformation.chainId]: true, }); } @@ -261,7 +253,6 @@ const NetworkModals = (props: NetworkProps) => { rpcEndpoints: [ { url: rpcUrl, - failoverUrls: failoverRpcUrls, name: nickname, type: RpcEndpointType.Custom, }, @@ -306,7 +297,6 @@ const NetworkModals = (props: NetworkProps) => { const handleNewNetwork = async ( networkId: `0x${string}`, networkRpcUrl: string, - networkFailoverRpcUrls: string[], name: string, nativeCurrency: string, networkBlockExplorerUrl: string, @@ -324,12 +314,11 @@ const NetworkModals = (props: NetworkProps) => { rpcEndpoints: [ { url: networkRpcUrl, - failoverUrls: networkFailoverRpcUrls, name, type: RpcEndpointType.Custom, }, ], - } satisfies AddNetworkFields; + } as AddNetworkFields; return NetworkController.addNetwork(networkConfig); }; @@ -362,7 +351,6 @@ const NetworkModals = (props: NetworkProps) => { const addedNetwork = await handleNewNetwork( chainId, rpcUrl, - failoverRpcUrls, nickname, ticker, blockExplorerUrl, diff --git a/app/components/UI/Ramp/Views/NetworkSwitcher/NetworkSwitcher.test.tsx b/app/components/UI/Ramp/Views/NetworkSwitcher/NetworkSwitcher.test.tsx index 25f8eb0f0454..b2b294a230f2 100644 --- a/app/components/UI/Ramp/Views/NetworkSwitcher/NetworkSwitcher.test.tsx +++ b/app/components/UI/Ramp/Views/NetworkSwitcher/NetworkSwitcher.test.tsx @@ -64,7 +64,6 @@ const mockedNetworksDetails = [ imageUrl: 'https://static.cx.metamask.io/api/v1/tokenIcons/42220/0x471ece3750da237f93b8e339c536989b8978a438.png', }, - isEvm: true, }, ]; diff --git a/app/components/UI/Ramp/Views/NetworkSwitcher/NetworkSwitcher.tsx b/app/components/UI/Ramp/Views/NetworkSwitcher/NetworkSwitcher.tsx index 1121672be974..3f754e12a1e2 100644 --- a/app/components/UI/Ramp/Views/NetworkSwitcher/NetworkSwitcher.tsx +++ b/app/components/UI/Ramp/Views/NetworkSwitcher/NetworkSwitcher.tsx @@ -23,6 +23,7 @@ import imageIcons from '../../../../../images/image-icons'; import Text from '../../../../Base/Text'; import CustomNetwork from '../../../../Views/Settings/NetworksSettings/NetworkSettings/CustomNetworkView/CustomNetwork'; import customNetworkStyles from '../../../../Views/Settings/NetworksSettings/NetworkSettings/styles'; +import { Network } from '../../../../Views/Settings/NetworksSettings/NetworkSettings/CustomNetworkView/CustomNetwork.types'; import useFetchRampNetworks from '../../hooks/useFetchRampNetworks'; import useRampNetwork from '../../hooks/useRampNetwork'; @@ -39,10 +40,7 @@ import { selectEvmNetworkConfigurationsByChainId } from '../../../../../selector import { strings } from '../../../../../../locales/i18n'; import Routes from '../../../../../constants/navigation/Routes'; -import { - Network, - PopularList, -} from '../../../../../util/networks/customNetworks'; +import { PopularList } from '../../../../../util/networks/customNetworks'; import { getDecimalChainId } from '../../../../../util/networks'; function NetworkSwitcher() { @@ -101,11 +99,7 @@ function NetworkSwitcher() { ({ chainId }) => toHex(chainId) === rampSupportedNetworkChainIdAsHex, ); if (networkDetail) { - activeNetworkDetails.push({ - ...networkDetail, - chainId: toHex(networkDetail.chainId), - failoverRpcUrls: [], - }); + activeNetworkDetails.push(networkDetail); } }); diff --git a/app/components/UI/Ramp/hooks/useRampNetworksDetail.ts b/app/components/UI/Ramp/hooks/useRampNetworksDetail.ts index 637429179a30..9aea6323451e 100644 --- a/app/components/UI/Ramp/hooks/useRampNetworksDetail.ts +++ b/app/components/UI/Ramp/hooks/useRampNetworksDetail.ts @@ -2,13 +2,12 @@ import { useCallback, useEffect, useState } from 'react'; import { SDK } from '../sdk'; import Logger from '../../../../util/Logger'; +import { Network } from '../../../Views/Settings/NetworksSettings/NetworkSettings/CustomNetworkView/CustomNetwork.types'; function useRampNetworksDetail() { const [isLoading, setIsLoading] = useState(true); const [error, setError] = useState<Error>(); - const [networksDetails, setNetworksDetails] = useState< - Awaited<ReturnType<(typeof SDK)['getNetworkDetails']>> - >([]); + const [networksDetails, setNetworksDetails] = useState<Network[]>([]); const getNetworksDetail = useCallback(async () => { try { setError(undefined); diff --git a/app/components/UI/Tokens/TokensBottomSheet/TokenFilterBottomSheet.test.tsx b/app/components/UI/Tokens/TokensBottomSheet/TokenFilterBottomSheet.test.tsx index fd30540012df..c0b0e2f4249d 100644 --- a/app/components/UI/Tokens/TokensBottomSheet/TokenFilterBottomSheet.test.tsx +++ b/app/components/UI/Tokens/TokensBottomSheet/TokenFilterBottomSheet.test.tsx @@ -29,7 +29,6 @@ const mockNetworks: Record<Hex, NetworkConfiguration> = { rpcEndpoints: [ { url: 'https://mainnet.infura.io/v3', - failoverUrls: [], networkClientId: NETWORK_CHAIN_ID.MAINNET, type: RpcEndpointType.Custom, name: 'Ethereum', @@ -46,7 +45,6 @@ const mockNetworks: Record<Hex, NetworkConfiguration> = { rpcEndpoints: [ { url: 'https://polygon-rpc.com', - failoverUrls: [], name: 'Polygon', networkClientId: NETWORK_CHAIN_ID.POLYGON, type: RpcEndpointType.Custom, diff --git a/app/components/UI/Tokens/util/enableAllNetworksFilter.test.ts b/app/components/UI/Tokens/util/enableAllNetworksFilter.test.ts index f5660d973b25..0a41d9c6db74 100644 --- a/app/components/UI/Tokens/util/enableAllNetworksFilter.test.ts +++ b/app/components/UI/Tokens/util/enableAllNetworksFilter.test.ts @@ -34,7 +34,6 @@ describe('enableAllNetworksFilter', () => { type: RpcEndpointType.Custom, networkClientId: NETWORK_CHAIN_ID.MAINNET, url: 'https://mainnet.infura.io/v3/{infuraProjectId}', - failoverUrls: [], }, ], }, @@ -49,7 +48,6 @@ describe('enableAllNetworksFilter', () => { type: RpcEndpointType.Custom, networkClientId: NETWORK_CHAIN_ID.POLYGON, url: 'https://polygon-rpc.com', - failoverUrls: [], }, ], }, @@ -81,7 +79,6 @@ describe('enableAllNetworksFilter', () => { type: RpcEndpointType.Custom, networkClientId: NETWORK_CHAIN_ID.FLARE_MAINNET, url: 'https://flare-rpc.com', - failoverUrls: [], }, ], }, @@ -96,7 +93,6 @@ describe('enableAllNetworksFilter', () => { type: RpcEndpointType.Custom, networkClientId: NETWORK_CHAIN_ID.SONGBIRD_TESTNET, url: 'https://songbird-rpc.flare.network', - failoverUrls: [], }, ], }, @@ -123,7 +119,6 @@ describe('enableAllNetworksFilter', () => { type: RpcEndpointType.Custom, networkClientId: NETWORK_CHAIN_ID.MAINNET, url: 'https://mainnet.infura.io/v3/your-api-key', - failoverUrls: [], }, ], }, @@ -138,7 +133,6 @@ describe('enableAllNetworksFilter', () => { type: RpcEndpointType.Custom, networkClientId: NETWORK_CHAIN_ID.POLYGON, url: 'https://polygon-rpc.com', - failoverUrls: [], }, ], }, @@ -153,7 +147,6 @@ describe('enableAllNetworksFilter', () => { type: RpcEndpointType.Custom, networkClientId: NETWORK_CHAIN_ID.BASE, url: 'https://base-rpc.com', - failoverUrls: [], }, ], }, diff --git a/app/components/Views/NetworkSelector/RpcSelectionModal/RpcSelectionModal.test.tsx b/app/components/Views/NetworkSelector/RpcSelectionModal/RpcSelectionModal.test.tsx index f3f86fec0722..247b4fc552c4 100644 --- a/app/components/Views/NetworkSelector/RpcSelectionModal/RpcSelectionModal.test.tsx +++ b/app/components/Views/NetworkSelector/RpcSelectionModal/RpcSelectionModal.test.tsx @@ -29,7 +29,6 @@ const MOCK_STORE_STATE = { rpcEndpoints: [ { url: 'https://mainnet.infura.io/v3/{infuraProjectId}', - failoverUrls: [], networkClientId: 'mainnet', }, ], @@ -47,7 +46,6 @@ const MOCK_STORE_STATE = { rpcEndpoints: [ { url: 'https://linea.infura.io/v3/{infuraProjectId}', - failoverUrls: [], networkClientId: 'lineaMainnet', }, ], @@ -65,7 +63,6 @@ const MOCK_STORE_STATE = { rpcEndpoints: [ { url: 'https://test.infura.io/v3/{infuraProjectId}', - failoverUrls: [], networkClientId: 'testMainnet', }, ], @@ -161,7 +158,6 @@ const mockNetworks: Record<Hex, NetworkConfiguration> = { rpcEndpoints: [ { url: 'https://mainnet.infura.io/v3', - failoverUrls: [], networkClientId: NETWORK_CHAIN_ID.MAINNET, type: RpcEndpointType.Custom, name: 'Ethereum', @@ -178,7 +174,6 @@ const mockNetworks: Record<Hex, NetworkConfiguration> = { rpcEndpoints: [ { url: 'https://polygon-rpc.com', - failoverUrls: [], name: 'Polygon', networkClientId: NETWORK_CHAIN_ID.POLYGON, type: RpcEndpointType.Custom, diff --git a/app/components/Views/NetworkSelector/__snapshots__/NetworkSelector.test.tsx.snap b/app/components/Views/NetworkSelector/__snapshots__/NetworkSelector.test.tsx.snap index baa406b507ce..fb80d7ea9199 100644 --- a/app/components/Views/NetworkSelector/__snapshots__/NetworkSelector.test.tsx.snap +++ b/app/components/Views/NetworkSelector/__snapshots__/NetworkSelector.test.tsx.snap @@ -1857,6 +1857,7 @@ exports[`Network Selector renders correctly when network UI redesign is enabled disabled={false} onLongPress={[Function]} onPress={[Function]} + onTextClick={[Function]} style={ { "alignItems": "center", @@ -2102,6 +2103,7 @@ exports[`Network Selector renders correctly when network UI redesign is enabled disabled={false} onLongPress={[Function]} onPress={[Function]} + onTextClick={[Function]} style={ { "alignItems": "center", @@ -2319,6 +2321,7 @@ exports[`Network Selector renders correctly when network UI redesign is enabled disabled={false} onLongPress={[Function]} onPress={[Function]} + onTextClick={[Function]} style={ { "alignItems": "center", @@ -2536,6 +2539,7 @@ exports[`Network Selector renders correctly when network UI redesign is enabled disabled={false} onLongPress={[Function]} onPress={[Function]} + onTextClick={[Function]} style={ { "alignItems": "center", @@ -2753,6 +2757,7 @@ exports[`Network Selector renders correctly when network UI redesign is enabled disabled={false} onLongPress={[Function]} onPress={[Function]} + onTextClick={[Function]} style={ { "alignItems": "center", @@ -2970,6 +2975,7 @@ exports[`Network Selector renders correctly when network UI redesign is enabled disabled={false} onLongPress={[Function]} onPress={[Function]} + onTextClick={[Function]} style={ { "alignItems": "center", diff --git a/app/components/Views/Settings/NetworksSettings/NetworkSettings/CustomNetworkView/CustomNetwork.tsx b/app/components/Views/Settings/NetworksSettings/NetworkSettings/CustomNetworkView/CustomNetwork.tsx index 4b4866954b11..bd5302fb84fd 100644 --- a/app/components/Views/Settings/NetworksSettings/NetworkSettings/CustomNetworkView/CustomNetwork.tsx +++ b/app/components/Views/Settings/NetworksSettings/NetworkSettings/CustomNetworkView/CustomNetwork.tsx @@ -9,12 +9,9 @@ import EmptyPopularList from '../emptyList'; import { useNavigation } from '@react-navigation/native'; import { strings } from '../../../../../../../locales/i18n'; import { useTheme } from '../../../../../../util/theme'; -import { - Network, - PopularList, -} from '../../../../../../util/networks/customNetworks'; +import { PopularList } from '../../../../../../util/networks/customNetworks'; import createStyles from '../styles'; -import { CustomNetworkProps } from './CustomNetwork.types'; +import { CustomNetworkProps, Network } from './CustomNetwork.types'; import { selectChainId, selectNetworkConfigurations, @@ -86,7 +83,7 @@ const CustomNetwork = ({ return ( <> - {isNetworkModalVisible && selectedNetwork && ( + {isNetworkModalVisible && ( <NetworkModals showPopularNetworkModal={showPopularNetworkModal} isVisible={isNetworkModalVisible} diff --git a/app/components/Views/Settings/NetworksSettings/NetworkSettings/CustomNetworkView/CustomNetwork.types.ts b/app/components/Views/Settings/NetworksSettings/NetworkSettings/CustomNetworkView/CustomNetwork.types.ts index eca82d241abc..c219762c00f6 100644 --- a/app/components/Views/Settings/NetworksSettings/NetworkSettings/CustomNetworkView/CustomNetwork.types.ts +++ b/app/components/Views/Settings/NetworksSettings/NetworkSettings/CustomNetworkView/CustomNetwork.types.ts @@ -1,5 +1,21 @@ +import { ImageSourcePropType } from 'react-native'; import { TabBarProps } from 'react-native-scrollable-tab-view'; -import { Network } from '../../../../../../util/networks/customNetworks'; + +export interface Network { + chainId: string; + nickname: string; + rpcPrefs: { + blockExplorerUrl: string; + imageSource?: ImageSourcePropType; + imageUrl?: string; + }; + rpcUrl: string; + ticker: string; + /** + * Not supported by Infura + */ + warning?: boolean; +} export interface ExtendedNetwork extends Network { name?: string; diff --git a/app/components/Views/Settings/NetworksSettings/NetworkSettings/index.js b/app/components/Views/Settings/NetworksSettings/NetworkSettings/index.js index d23244a54986..849757401ddd 100644 --- a/app/components/Views/Settings/NetworksSettings/NetworkSettings/index.js +++ b/app/components/Views/Settings/NetworksSettings/NetworkSettings/index.js @@ -44,7 +44,7 @@ import { showNetworkOnboardingAction } from '../../../../../actions/onboardNetwo import sanitizeUrl, { compareSanitizedUrl, } from '../../../../../util/sanitizeUrl'; -import onlyKeepHost from '../../../../../util/onlyKeepHost'; +import hideKeyFromUrl from '../../../../../util/hideKeyFromUrl'; import { themeAppearanceLight } from '../../../../../constants/storage'; import { scale, moderateScale } from 'react-native-size-matters'; import CustomNetwork from './CustomNetworkView/CustomNetwork'; @@ -60,7 +60,10 @@ import { } from '../../../../../selectors/networkController'; import { regex } from '../../../../../../app/util/regex'; import { NetworksViewSelectorsIDs } from '../../../../../../e2e/selectors/Settings/NetworksView.selectors'; -import { isSafeChainId, toHex } from '@metamask/controller-utils'; +import { + isSafeChainId, + toHex, +} from '@metamask/controller-utils'; import { CustomDefaultNetworkIDs } from '../../../../../../e2e/selectors/Onboarding/CustomDefaultNetwork.selectors'; import { updateIncomingTransactions } from '../../../../../util/transaction-controller'; import { withMetricsAwareness } from '../../../../../components/hooks/useMetrics'; @@ -93,11 +96,6 @@ import { getFontFamily, TextVariant, } from '../../../../../component-library/components/Texts/Text'; -import { DEFAULT_CELLBASE_AVATAR_TITLE_TEXTVARIANT } from '../../../../../component-library/components/Cells/Cell/foundation/CellBase/CellBase.constants'; -import Tag from '../../../../../component-library/components/Tags/Tag/Tag'; -import { CellComponentSelectorsIDs } from '../../../../../../e2e/selectors/wallet/CellComponent.selectors'; -import stripProtocol from '../../../../../util/stripProtocol'; -import stripKeyFromInfuraUrl from '../../../../../util/stripKeyFromInfuraUrl'; const createStyles = (colors) => StyleSheet.create({ @@ -218,7 +216,7 @@ const createStyles = (colors) => borderColor: staticColors.transparent, padding: 0, }, - inputDisabled: { + onboardingInputDisabled: { borderColor: colors.border.muted, color: colors.text.muted, }, @@ -393,11 +391,6 @@ const createStyles = (colors) => flex: 1, flexDirection: 'column', }, - rpcTitleWrapper: { - flexDirection: 'row', - alignItems: 'center', - gap: 4, - }, }); const allNetworks = getAllNetworks(); @@ -466,7 +459,6 @@ export class NetworkSettings extends PureComponent { state = { rpcUrl: undefined, - failoverRpcUrls: [], rpcName: undefined, rpcUrlFrom: undefined, rpcNameForm: '', @@ -554,7 +546,6 @@ export class NetworkSettings extends PureComponent { ticker, editable, rpcUrl, - failoverRpcUrls, rpcUrls, blockExplorerUrls, rpcName, @@ -564,31 +555,28 @@ export class NetworkSettings extends PureComponent { if (allNetworks.find((net) => networkTypeOrRpcUrl === net)) { const networkInformation = Networks[networkTypeOrRpcUrl]; chainId = networkInformation.chainId.toString(); - const networkConfiguration = networkConfigurations?.[chainId]; - const defaultRpcEndpoint = networkConfiguration - ? networkConfiguration.rpcEndpoints[ - networkConfiguration.defaultRpcEndpointIndex - ] - : undefined; - nickname = networkConfiguration?.name; + nickname = networkConfigurations?.[chainId]?.name; editable = false; - blockExplorerUrl = networkConfiguration - ? networkConfiguration.blockExplorerUrls[ - networkConfiguration.defaultBlockExplorerUrlIndex - ] - : undefined; - rpcUrl = defaultRpcEndpoint?.url; - failoverRpcUrls = defaultRpcEndpoint?.failoverUrls; - rpcName = defaultRpcEndpoint - ? defaultRpcEndpoint.type === 'infura' - ? 'Infura' - : defaultRpcEndpoint.name - : undefined; - rpcUrls = networkConfiguration?.rpcEndpoints; - blockExplorerUrls = networkConfiguration?.blockExplorerUrls; - - ticker = networkConfiguration?.nativeCurrency; + blockExplorerUrl = + networkConfigurations?.[chainId]?.blockExplorerUrls[ + networkConfigurations?.[chainId]?.defaultBlockExplorerUrlIndex + ]; + rpcUrl = + networkConfigurations?.[chainId]?.rpcEndpoints[ + networkConfigurations?.[chainId]?.defaultRpcEndpointIndex + ]?.url; + rpcName = + networkConfigurations?.[chainId]?.rpcEndpoints[ + networkConfigurations?.[chainId]?.defaultRpcEndpointIndex + ]?.type ?? + networkConfigurations?.[chainId]?.rpcEndpoints[ + networkConfigurations?.[chainId]?.defaultRpcEndpointIndex + ]?.name; + rpcUrls = networkConfigurations?.[chainId]?.rpcEndpoints; + blockExplorerUrls = networkConfigurations?.[chainId]?.blockExplorerUrls; + + ticker = networkConfigurations?.[chainId]?.nativeCurrency; } else { const networkConfiguration = Object.values(networkConfigurations).find( ({ rpcEndpoints, defaultRpcEndpointIndex }) => @@ -596,11 +584,6 @@ export class NetworkSettings extends PureComponent { rpcEndpoints[defaultRpcEndpointIndex].networkClientId === networkTypeOrRpcUrl, ); - const defaultRpcEndpoint = networkConfiguration - ? networkConfiguration.rpcEndpoints[ - networkConfiguration.defaultRpcEndpointIndex - ] - : undefined; nickname = networkConfiguration?.name; chainId = networkConfiguration?.chainId; blockExplorerUrl = @@ -609,15 +592,19 @@ export class NetworkSettings extends PureComponent { ]; ticker = networkConfiguration?.nativeCurrency; editable = true; - rpcUrl = defaultRpcEndpoint?.url; - failoverRpcUrls = defaultRpcEndpoint?.failoverUrls; + rpcUrl = + networkConfigurations?.[chainId]?.rpcEndpoints[ + networkConfigurations?.[chainId]?.defaultRpcEndpointIndex + ]?.url; rpcUrls = networkConfiguration?.rpcEndpoints; blockExplorerUrls = networkConfiguration?.blockExplorerUrls; - rpcName = defaultRpcEndpoint - ? defaultRpcEndpoint.type === 'infura' - ? 'Infura' - : defaultRpcEndpoint.name - : undefined; + rpcName = + networkConfiguration?.rpcEndpoints[ + networkConfiguration?.defaultRpcEndpointIndex + ]?.name ?? + networkConfiguration?.rpcEndpoints[ + networkConfiguration?.defaultRpcEndpointIndex + ]?.type; selectedRpcEndpointIndex = networkConfiguration?.defaultRpcEndpointIndex; @@ -625,7 +612,6 @@ export class NetworkSettings extends PureComponent { const initialState = rpcUrl + - failoverRpcUrls + blockExplorerUrl + nickname + chainId + @@ -635,7 +621,6 @@ export class NetworkSettings extends PureComponent { blockExplorerUrls; this.setState({ rpcUrl, - failoverRpcUrls, rpcName, rpcUrls, blockExplorerUrls, @@ -1207,7 +1192,7 @@ export class NetworkSettings extends PureComponent { validateName = (chainToMatch = null) => { const { nickname, networkList, chainId } = this.state; const { useSafeChainsListValidation } = this.props; - + if (!useSafeChainsListValidation) { return; } @@ -1216,9 +1201,7 @@ export class NetworkSettings extends PureComponent { const name = chainToMatch?.name || networkList?.name || null; // Determine nameToUse based on chainId and nickname comparison - const nameToUse = isValidNetworkName(chainId, name, nickname) - ? undefined - : name; + const nameToUse = isValidNetworkName(chainId, name, nickname) ? undefined : name; // Update state with warningName this.setState({ @@ -1312,21 +1295,17 @@ export class NetworkSettings extends PureComponent { } const rpcName = name ?? ''; - const newRpcUrl = { - url, - failoverUrls: [], - name: rpcName, - type: RpcEndpointType.Custom, - }; await this.setState((prevState) => ({ - rpcUrls: [...prevState.rpcUrls, newRpcUrl], + rpcUrls: [ + ...prevState.rpcUrls, + { url, name: rpcName, type: RpcEndpointType.Custom }, + ], })); await this.setState({ - rpcUrl: newRpcUrl.url, - failoverRpcUrls: newRpcUrl.failoverUrls, - rpcName: newRpcUrl.name, + rpcUrl: url, + rpcName: name, }); this.closeAddRpcForm(); @@ -1382,13 +1361,11 @@ export class NetworkSettings extends PureComponent { this.getCurrentState(); }; - onRpcUrlChangeWithName = async (url, failoverUrls, name, type) => { + onRpcUrlChangeWithName = async (url, name, type) => { const nameToUse = name ?? type; const { addMode } = this.state; await this.setState({ - rpcName: nameToUse, rpcUrl: url, - failoverRpcUrls: failoverUrls, validatedRpcURL: false, warningRpcUrl: undefined, warningChainId: undefined, @@ -1396,6 +1373,10 @@ export class NetworkSettings extends PureComponent { warningName: undefined, }); + await this.setState({ + rpcName: nameToUse, + }); + this.validateName(); if (addMode) { this.validateChainId(); @@ -1629,10 +1610,7 @@ export class NetworkSettings extends PureComponent { ...networkConfiguration, formattedRpcUrl: networkConfiguration.warning ? null - : formatNetworkRpcUrl( - networkConfiguration.rpcUrl, - networkConfiguration.chainId, - ), + : hideKeyFromUrl(networkConfiguration.rpcUrl), }, }); }; @@ -1640,7 +1618,6 @@ export class NetworkSettings extends PureComponent { customNetwork = () => { const { rpcUrl, - failoverRpcUrls, rpcUrls, blockExplorerUrls, blockExplorerUrl, @@ -1675,8 +1652,16 @@ export class NetworkSettings extends PureComponent { this.context.themeAppearance || themeAppearanceLight; const styles = createStyles(colors); - const formatNetworkRpcUrl = (rpcUrl) => { - return stripProtocol(stripKeyFromInfuraUrl(rpcUrl)); + const formatNetworkRpcUrl = (rpcUrl, chainId) => { + const isNetworkPrePopulated = PopularList.find( + (val) => val.rpcUrl === rpcUrl && val.chainId === chainId, + ); + if (isNetworkPrePopulated !== undefined) { + if (isNetworkPrePopulated.warning) { + return null; + } + return hideKeyFromUrl(isNetworkPrePopulated.rpcUrl); + } }; const inputStyle = [ styles.input, @@ -1722,7 +1707,7 @@ export class NetworkSettings extends PureComponent { : styles.input, inputWidth, isCustomMainnet ? styles.onboardingInput : undefined, - !addMode ? styles.inputDisabled : undefined, + !addMode ? styles.onboardingInputDisabled : undefined, ]; const isRPCEditable = isCustomMainnet || editable; @@ -1737,7 +1722,6 @@ export class NetworkSettings extends PureComponent { const selectedNetwork = { rpcUrl: url.href, - failoverRpcUrls: [], ticker, nickname, rpcPrefs: { @@ -1984,24 +1968,20 @@ export class NetworkSettings extends PureComponent { key={rpcUrl} testID={NetworksViewSelectorsIDs.ICON_BUTTON_RPC} variant={CellVariant.SelectWithMenu} - title={ - <View style={styles.rpcTitleWrapper}> - <View> - <Text - numberOfLines={1} - variant={DEFAULT_CELLBASE_AVATAR_TITLE_TEXTVARIANT} - testID={CellComponentSelectorsIDs.BASE_TITLE} - > - {rpcName || formatNetworkRpcUrl(rpcUrl)} - </Text> - </View> - {failoverRpcUrls.length > 0 && ( - <Tag label={strings('app_settings.failover')} /> - )} - </View> - } - secondaryText={rpcName ? formatNetworkRpcUrl(rpcUrl) : ''} - showSecondaryTextIcon={false} + title={rpcName || rpcUrl} + // Conditionally include secondaryText only if rpcName exists + {...(rpcName + ? { + secondaryText: + hideKeyFromUrl(rpcUrl) ?? + hideKeyFromUrl( + networkConfigurations?.[chainId]?.rpcEndpoints?.[ + networkConfigurations?.[chainId] + ?.defaultRpcEndpointIndex + ]?.url, + ), + } + : {})} isSelected={false} withAvatar={false} onPress={this.openRpcModal} @@ -2017,7 +1997,7 @@ export class NetworkSettings extends PureComponent { style={inputErrorRpcStyle} autoCapitalize={'none'} autoCorrect={false} - value={formatNetworkRpcUrl(rpcUrl)} + value={formatNetworkRpcUrl(rpcUrl, chainId) || rpcUrl} editable={isRPCEditable} onChangeText={this.onRpcUrlChange} onBlur={() => { @@ -2048,19 +2028,6 @@ export class NetworkSettings extends PureComponent { ) : null} - {failoverRpcUrls.length > 0 && ( - <> - <Text style={styles.label}> - {strings('app_settings.network_failover_rpc_url_label')} - </Text> - <TextInput - style={[styles.input, styles.inputDisabled]} - value={onlyKeepHost(failoverRpcUrls[0])} - editable={false} - /> - </> - )} - <Text style={styles.label}> {strings('app_settings.network_chain_id_label')} </Text> @@ -2412,69 +2379,36 @@ export class NetworkSettings extends PureComponent { <ScrollView contentContainerStyle={styles.scrollViewContent}> {rpcUrls.length > 0 ? ( <View> - {rpcUrls.map(({ url, failoverUrls, name, type }) => { - const formattedName = type === 'infura' ? 'Infura' : name; - return ( - <Cell - key={`${url}-${name}`} - variant={CellVariant.SelectWithMenu} - title={ - <View style={styles.rpcTitleWrapper}> - <View> - <Text - numberOfLines={1} - variant={ - DEFAULT_CELLBASE_AVATAR_TITLE_TEXTVARIANT - } - testID={CellComponentSelectorsIDs.BASE_TITLE} - > - {formattedName || formatNetworkRpcUrl(url)} - </Text> - </View> - {failoverUrls.length > 0 && ( - <Tag label={strings('app_settings.failover')} /> - )} - </View> - } - secondaryText={ - formattedName ? formatNetworkRpcUrl(rpcUrl) : '' - } - showSecondaryTextIcon={false} - isSelected={rpcUrl === url} - withAvatar={false} - onPress={async () => { - await this.onRpcUrlChangeWithName( - url, - failoverUrls, - name, - type, - ); - this.closeRpcModal(); - }} - showButtonIcon={ - rpcUrl !== url && type !== RpcEndpointType.Infura - } - buttonIcon={IconName.Trash} - buttonProps={{ - onButtonClick: () => { - this.onRpcUrlDelete(url); - }, - }} - onTextClick={async () => { - await this.onRpcUrlChangeWithName( - url, - failoverUrls, - name, - type, - ); - this.closeRpcModal(); - }} - avatarProps={{ - variant: AvatarVariant.Token, - }} - /> - ); - })} + {rpcUrls.map(({ url, name, type }) => ( + <Cell + key={`${url}-${name}`} + variant={CellVariant.SelectWithMenu} + title={name || type} + secondaryText={hideKeyFromUrl(url)} + isSelected={rpcUrl === url} + withAvatar={false} + onPress={async () => { + await this.onRpcUrlChangeWithName(url, name, type); + this.closeRpcModal(); + }} + showButtonIcon={ + rpcUrl !== url && type !== RpcEndpointType.Infura + } + buttonIcon={IconName.Trash} + buttonProps={{ + onButtonClick: () => { + this.onRpcUrlDelete(url); + }, + }} + onTextClick={async () => { + await this.onRpcUrlChangeWithName(url, name, type); + this.closeRpcModal(); + }} + avatarProps={{ + variant: AvatarVariant.Token, + }} + /> + ))} </View> ) : null} <View style={styles.scrollableBox}> diff --git a/app/components/Views/Settings/NetworksSettings/NetworkSettings/index.test.tsx b/app/components/Views/Settings/NetworksSettings/NetworkSettings/index.test.tsx index 190d1746bcea..ba86c4fec7d6 100644 --- a/app/components/Views/Settings/NetworksSettings/NetworkSettings/index.test.tsx +++ b/app/components/Views/Settings/NetworksSettings/NetworkSettings/index.test.tsx @@ -87,9 +87,8 @@ const SAMPLE_NETWORKSETTINGS_PROPS = { rpcEndpoints: [ { networkClientId: 'mainnet', - type: 'custom', + type: 'Custom', url: 'https://mainnet.infura.io/v3/YOUR-PROJECT-ID', - failoverUrls: [], }, ], }, @@ -97,14 +96,7 @@ const SAMPLE_NETWORKSETTINGS_PROPS = { '0x5': { chainId: '0x5', name: 'Goerli', - rpcEndpoints: [ - { - networkClientId: 'goerli', - type: 'custom', - url: 'https://goerli.infura.io/v3/{infuraProjectId}', - failoverUrls: [], - }, - ], + rpcEndpoints: [{ url: 'https://goerli.infura.io/v3/{infuraProjectId}' }], }, }, networkOnboardedState: { '0x1': true, '0xe708': true }, @@ -270,7 +262,6 @@ describe('NetworkSettings', () => { networkClientId: 'mainnet', type: 'Infura', url: 'https://mainnet.infura.io/v3/', - failoverUrls: [], }, ], name: 'Ethereum Main Network', @@ -325,7 +316,6 @@ describe('NetworkSettings', () => { networkClientId: 'mainnet', type: 'Infura', url: 'https://mainnet.infura.io/v3/', - failoverUrls: [], }, ], name: 'Ethereum Main Network', @@ -371,7 +361,6 @@ describe('NetworkSettings', () => { { networkClientId: 'mainnet', url: 'https://mainnet.infura.io/v3/YOUR-PROJECT-ID', - failoverUrls: [], type: RpcEndpointType.Custom, }, ], @@ -421,7 +410,6 @@ describe('NetworkSettings', () => { rpcEndpoints: [ { url: 'https://mainnet.infura.io/v3/YOUR-PROJECT-ID', - failoverUrls: [], type: RpcEndpointType.Custom, name: 'Ethereum mainnet', }, @@ -535,7 +523,6 @@ describe('NetworkSettings', () => { rpcEndpoints: [ { url: 'https://rinkeby.infura.io/v3/YOUR-PROJECT-ID', - failoverUrls: [], type: RpcEndpointType.Infura, }, ], @@ -993,12 +980,7 @@ describe('NetworkSettings', () => { // Set complete form state wrapper.setState({ rpcUrls: [ - { - url: 'http://localhost:8545', - failoverUrls: [], - type: 'custom', - name: 'test', - }, + { url: 'http://localhost:8545', type: 'custom', name: 'test' }, ], rpcUrl: 'http://localhost:8545', chainId: '0x1', @@ -1156,7 +1138,7 @@ describe('NetworkSettings', () => { // Assert that state was updated expect(wrapper.state('rpcUrl')).toBe('https://example.com'); expect(wrapper.state('validatedRpcURL')).toBe(false); - expect(wrapper.state('rpcName')).toBe('Custom'); + expect(wrapper.state('rpcName')).toBe('Test Network'); expect(wrapper.state('warningRpcUrl')).toBeUndefined(); expect(wrapper.state('warningChainId')).toBeUndefined(); expect(wrapper.state('warningSymbol')).toBeUndefined(); @@ -1174,7 +1156,6 @@ describe('NetworkSettings', () => { await instance.onRpcUrlChangeWithName( 'https://example.com', - [], null, 'Custom', ); @@ -1227,7 +1208,6 @@ describe('NetworkSettings', () => { networkClientId: 'mainnet', type: 'Infura', url: 'https://mainnet.infura.io/v3/', - failoverUrls: [], }, ], name: 'Ethereum Main Network', @@ -1305,7 +1285,6 @@ describe('NetworkSettings', () => { rpcEndpoints: [ { url: 'https://custom-network.io', - failoverUrls: [], type: RpcEndpointType.Custom, }, ], @@ -1392,7 +1371,6 @@ describe('NetworkSettings', () => { networkClientId: 'mainnet', type: 'Infura', url: 'https://mainnet.infura.io/v3/', - failoverUrls: [], }, ], name: 'Ethereum Main Network', @@ -1418,14 +1396,7 @@ describe('NetworkSettings', () => { await instance.handleNetworkUpdate({ rpcUrl: 'http://localhost:8080', - rpcUrls: [ - { - url: 'http://localhost:8080', - failoverUrls: [], - type: 'custom', - name: '', - }, - ], + rpcUrls: [{ url: 'http://localhost:8080', type: 'custom', name: '' }], blockExplorerUrls: ['https://etherscan.io'], isNetworkExists: [], chainId: '0x1', @@ -1444,12 +1415,7 @@ describe('NetworkSettings', () => { name: undefined, nativeCurrency: undefined, rpcEndpoints: [ - { - name: '', - type: 'custom', - url: 'http://localhost:8080', - failoverUrls: [], - }, + { name: '', type: 'custom', url: 'http://localhost:8080' }, ], }), { replacementSelectedRpcEndpointIndex: 0 }, @@ -1464,22 +1430,14 @@ describe('NetworkSettings', () => { chainId: '0x1', name: 'Mainnet', rpcEndpoints: [ - { - url: 'https://mainnet.infura.io/v3/{infuraProjectId}', - failoverUrls: [], - }, + { url: 'https://mainnet.infura.io/v3/{infuraProjectId}' }, ], }, '0x5': { chainId: '0x5', name: 'Goerli', rpcEndpoints: [ - { - type: 'custom', - networkClientId: 'goerli', - url: 'https://goerli.infura.io/v3/{infuraProjectId}', - failoverUrls: [], - }, + { url: 'https://goerli.infura.io/v3/{infuraProjectId}' }, ], }, }; @@ -1508,12 +1466,7 @@ describe('NetworkSettings', () => { chainId: '0x2', name: 'Another Network', rpcEndpoints: [ - { - type: 'custom', - networkClientId: 'goerli', - url: 'https://goerli.infura.io/v3/{infuraProjectId}', - failoverUrls: [], - }, + { url: 'https://goerli.infura.io/v3/{infuraProjectId}' }, ], }; diff --git a/app/constants/network.js b/app/constants/network.js index 5b6d59a7ccab..4a54ffc22d63 100644 --- a/app/constants/network.js +++ b/app/constants/network.js @@ -1,7 +1,5 @@ import { NetworkType, toHex } from '@metamask/controller-utils'; -export const INFURA_PROJECT_ID = process.env.MM_INFURA_PROJECT_ID; - export const MAINNET = 'mainnet'; export const HOMESTEAD = 'homestead'; export const GOERLI = 'goerli'; diff --git a/app/core/Analytics/MetaMetrics.events.ts b/app/core/Analytics/MetaMetrics.events.ts index 46bfd5dc4aa9..a054af4ccbfd 100644 --- a/app/core/Analytics/MetaMetrics.events.ts +++ b/app/core/Analytics/MetaMetrics.events.ts @@ -421,10 +421,6 @@ enum EVENT_NAME { // Tooltip TOOLTIP_OPENED = 'Tooltip Opened', - - // RPC Failover - RPC_SERVICE_UNAVAILABLE = 'RPC Service Unavailable', - RPC_SERVICE_DEGRADED = 'RPC Service Degraded', } enum ACTIONS { @@ -1016,10 +1012,6 @@ const events = { EVENT_NAME.EARN_TOKEN_LIST_ITEM_CLICKED, ), TOKEN_DETAILS_OPENED: generateOpt(EVENT_NAME.TOKEN_LIST_ITEM_PRESSED), - - // RPC Failover - RPC_SERVICE_UNAVAILABLE: generateOpt(EVENT_NAME.RPC_SERVICE_UNAVAILABLE), - RPC_SERVICE_DEGRADED: generateOpt(EVENT_NAME.RPC_SERVICE_DEGRADED), }; /** diff --git a/app/core/Engine/Engine.ts b/app/core/Engine/Engine.ts index 45ac9c81df76..c9a040bc0a16 100644 --- a/app/core/Engine/Engine.ts +++ b/app/core/Engine/Engine.ts @@ -24,8 +24,8 @@ import { ///: END:ONLY_INCLUDE_IF } from '@metamask/keyring-controller'; import { - getDefaultNetworkControllerState, NetworkController, + NetworkControllerMessenger, NetworkState, NetworkStatus, } from '@metamask/network-controller'; @@ -198,13 +198,6 @@ import { GasFeeControllerInit } from './controllers/gas-fee-controller'; import I18n from '../../../locales/i18n'; import { Platform } from '@metamask/profile-sync-controller/sdk'; import { isProductSafetyDappScanningEnabled } from '../../util/phishingDetection'; -import { getFailoverUrlsForInfuraNetwork } from '../../util/networks/customNetworks'; -import { - onRpcEndpointDegraded, - onRpcEndpointUnavailable, -} from './controllers/network-controller/messenger-action-handlers'; -import { INFURA_PROJECT_ID } from '../../constants/network'; -import { getIsQuicknodeEndpointUrl } from './controllers/network-controller/utils'; import { InternalAccount } from '@metamask/keyring-internal-api'; import { toFormattedAddress } from '../../util/address'; @@ -309,100 +302,22 @@ export class Engine { }, }); - const networkControllerMessenger = this.controllerMessenger.getRestricted({ - name: 'NetworkController', - allowedEvents: [], - allowedActions: [], - }); - - const additionalDefaultNetworks = [ChainId['megaeth-testnet']]; - - let initialNetworkControllerState = initialState.NetworkController; - if (!initialNetworkControllerState) { - initialNetworkControllerState = getDefaultNetworkControllerState( - additionalDefaultNetworks, - ); - - // Add failovers for default Infura RPC endpoints - initialNetworkControllerState.networkConfigurationsByChainId[ - ChainId.mainnet - ].rpcEndpoints[0].failoverUrls = - getFailoverUrlsForInfuraNetwork('ethereum-mainnet'); - initialNetworkControllerState.networkConfigurationsByChainId[ - ChainId['linea-mainnet'] - ].rpcEndpoints[0].failoverUrls = - getFailoverUrlsForInfuraNetwork('linea-mainnet'); - } - - const infuraProjectId = INFURA_PROJECT_ID || NON_EMPTY; const networkControllerOpts = { - infuraProjectId, - state: initialNetworkControllerState, - messenger: networkControllerMessenger, - getRpcServiceOptions: (rpcEndpointUrl: string) => { - const commonOptions = { - fetch: globalThis.fetch.bind(globalThis), - btoa: globalThis.btoa.bind(globalThis), - }; - - if (getIsQuicknodeEndpointUrl(rpcEndpointUrl)) { - return { - ...commonOptions, - policyOptions: { - // There is currently a bug in the block tracker (and probably - // also the middleware layers) that result in a flurry of retries - // when an RPC endpoint goes down, causing us to pretty - // immediately enter a 30-minute cooldown period during which all - // requests will be dropped. This isn't a problem for Infura, as - // we need a long cooldown anyway to prevent spamming it while it - // is down. But Quicknode is a different story. When we fail over - // to it, we expect it to be down at first while it is being - // automatically activated. So dropping requests for a lengthy - // period would defeat the point. Shortening the cooldown period - // mitigates this problem. - circuitBreakDuration: 5000, - }, - }; - } - - return commonOptions; - }, - additionalDefaultNetworks, + infuraProjectId: process.env.MM_INFURA_PROJECT_ID || NON_EMPTY, + state: initialState.NetworkController, + messenger: this.controllerMessenger.getRestricted({ + name: 'NetworkController', + allowedEvents: [], + allowedActions: [], + }) as unknown as NetworkControllerMessenger, + getRpcServiceOptions: () => ({ + fetch, + btoa, + }), + additionalDefaultNetworks: [ChainId['megaeth-testnet']], }; const networkController = new NetworkController(networkControllerOpts); - networkControllerMessenger.subscribe( - 'NetworkController:rpcEndpointUnavailable', - async ({ chainId, endpointUrl, error }) => { - onRpcEndpointUnavailable({ - chainId, - endpointUrl, - infuraProjectId, - error, - trackEvent: ({ event, properties }) => { - const metricsEvent = MetricsEventBuilder.createEventBuilder(event) - .addProperties(properties) - .build(); - MetaMetrics.getInstance().trackEvent(metricsEvent); - }, - }); - }, - ); - networkControllerMessenger.subscribe( - 'NetworkController:rpcEndpointDegraded', - async ({ chainId, endpointUrl }) => { - onRpcEndpointDegraded({ - chainId, - endpointUrl, - infuraProjectId, - trackEvent: ({ event, properties }) => { - const metricsEvent = MetricsEventBuilder.createEventBuilder(event) - .addProperties(properties) - .build(); - MetaMetrics.getInstance().trackEvent(metricsEvent); - }, - }); - }, - ); + networkController.initializeProvider(); const assetsContractController = new AssetsContractController({ diff --git a/app/core/Engine/controllers/network-controller/messenger-action-handlers.test.ts b/app/core/Engine/controllers/network-controller/messenger-action-handlers.test.ts deleted file mode 100644 index c9861d0ece39..000000000000 --- a/app/core/Engine/controllers/network-controller/messenger-action-handlers.test.ts +++ /dev/null @@ -1,169 +0,0 @@ -import { QUICKNODE_ENDPOINT_URLS_BY_INFURA_NETWORK_NAME } from '../../../../util/networks/customNetworks'; -import { onRpcEndpointUnavailable } from './messenger-action-handlers'; - -const QUICKNODE_MAINNET_URL = 'https://example.quicknode.com/mainnet'; -const QUICKNODE_LINEA_MAINNET_URL = - 'https://example.quicknode.com/linea-mainnet'; -const QUICKNODE_ARBITRUM_URL = 'https://example.quicknode.com/arbitrum'; -const QUICKNODE_AVALANCHE_URL = 'https://example.quicknode.com/avalanche'; -const QUICKNODE_OPTIMISM_URL = 'https://example.quicknode.com/optimism'; -const QUICKNODE_POLYGON_URL = 'https://example.quicknode.com/polygon'; -const QUICKNODE_BASE_URL = 'https://example.quicknode.com/base'; - -describe('onRpcEndpointUnavailable', () => { - let originalEnv: NodeJS.ProcessEnv; - - beforeEach(() => { - originalEnv = { ...process.env }; - - process.env.QUICKNODE_MAINNET_URL = QUICKNODE_MAINNET_URL; - process.env.QUICKNODE_LINEA_MAINNET_URL = QUICKNODE_LINEA_MAINNET_URL; - process.env.QUICKNODE_ARBITRUM_URL = QUICKNODE_ARBITRUM_URL; - process.env.QUICKNODE_AVALANCHE_URL = QUICKNODE_AVALANCHE_URL; - process.env.QUICKNODE_OPTIMISM_URL = QUICKNODE_OPTIMISM_URL; - process.env.QUICKNODE_POLYGON_URL = QUICKNODE_POLYGON_URL; - process.env.QUICKNODE_BASE_URL = QUICKNODE_BASE_URL; - }); - - afterEach(() => { - for (const key of new Set([ - ...Object.keys(originalEnv), - ...Object.keys(process.env), - ])) { - if (originalEnv[key]) { - process.env[key] = originalEnv[key]; - } else { - delete process.env[key]; - } - } - }); - - it('creates a Segment event if the endpoint is an Infura URL containing our API key and the error is not a connection error', () => { - const infuraProjectId = 'the-infura-project-id'; - const trackEvent = jest.fn(); - - onRpcEndpointUnavailable({ - chainId: '0xaa36a7', - endpointUrl: `https://some-subdomain.infura.io/v3/${infuraProjectId}`, - error: new Error('some error'), - infuraProjectId, - trackEvent, - }); - - expect(trackEvent).toHaveBeenCalledWith({ - event: { - category: 'RPC Service Unavailable', - }, - properties: { - chain_id_caip: 'eip155:11155111', - rpc_endpoint_url: 'some-subdomain.infura.io', - }, - }); - }); - - it('does not create a Segment event if the endpoint is an Infura URL but does not contain our API key', () => { - const trackEvent = jest.fn(); - - onRpcEndpointUnavailable({ - chainId: '0xaa36a7', - endpointUrl: - 'https://some-subdomain.infura.io/v3/different-infura-project-id', - error: new Error('some error'), - infuraProjectId: 'the-infura-project-id', - trackEvent, - }); - - expect(trackEvent).not.toHaveBeenCalled(); - }); - - it('does not create a Segment event if the endpoint URL ends with infura.io, contains our API key, and the error is not a connection error', () => { - const infuraProjectId = 'the-infura-project-id'; - const trackEvent = jest.fn(); - - onRpcEndpointUnavailable({ - chainId: '0xaa36a7', - endpointUrl: `https://someinfura.io/v3/${infuraProjectId}`, - error: new Error('some error'), - infuraProjectId, - trackEvent, - }); - - expect(trackEvent).not.toHaveBeenCalled(); - }); - - it('does not create a Segment event if the endpoint is an Infura URL containing our API key but the error is a connection error', () => { - const trackEvent = jest.fn(); - - onRpcEndpointUnavailable({ - chainId: '0xaa36a7', - endpointUrl: 'https://some-subdomain.infura.io/v3/the-infura-project-id', - error: new TypeError('Failed to fetch'), - infuraProjectId: 'the-infura-project-id', - trackEvent, - }); - - expect(trackEvent).not.toHaveBeenCalled(); - }); - - for (const [infuraNetwork, getQuicknodeEndpointUrl] of Object.entries( - QUICKNODE_ENDPOINT_URLS_BY_INFURA_NETWORK_NAME, - )) { - describe(`for the Infura network ${infuraNetwork}`, () => { - it(`creates a Segment event if the endpoint is a known Quicknode URL and the error is not a connection error`, () => { - // We can assume this is set. - // eslint-disable-next-line @typescript-eslint/no-non-null-assertion - const endpointUrl = getQuicknodeEndpointUrl()!; - const trackEvent = jest.fn(); - - onRpcEndpointUnavailable({ - chainId: '0xaa36a7', - endpointUrl, - error: new Error('some error'), - infuraProjectId: 'the-infura-project-id', - trackEvent, - }); - - expect(trackEvent).toHaveBeenCalledWith({ - event: { - category: 'RPC Service Unavailable', - }, - properties: { - chain_id_caip: 'eip155:11155111', - rpc_endpoint_url: 'example.quicknode.com', - }, - }); - }); - - it(`creates a Segment event if the endpoint is a known Quicknode URL but the error is a connection error`, () => { - // We can assume this is set. - // eslint-disable-next-line @typescript-eslint/no-non-null-assertion - const endpointUrl = getQuicknodeEndpointUrl()!; - const trackEvent = jest.fn(); - - onRpcEndpointUnavailable({ - chainId: '0xaa36a7', - endpointUrl, - error: new TypeError('Failed to fetch'), - infuraProjectId: 'the-infura-project-id', - trackEvent, - }); - - expect(trackEvent).not.toHaveBeenCalled(); - }); - }); - } - - it('does not create a Segment event given a non-Infura, non-Quicknode URL', () => { - const trackEvent = jest.fn(); - - onRpcEndpointUnavailable({ - chainId: '0xaa36a7', - endpointUrl: 'http://some.custom.endpoint', - error: new Error('some error'), - infuraProjectId: 'the-infura-project-id', - trackEvent, - }); - - expect(trackEvent).not.toHaveBeenCalled(); - }); -}); diff --git a/app/core/Engine/controllers/network-controller/messenger-action-handlers.ts b/app/core/Engine/controllers/network-controller/messenger-action-handlers.ts deleted file mode 100644 index eb59909c49ff..000000000000 --- a/app/core/Engine/controllers/network-controller/messenger-action-handlers.ts +++ /dev/null @@ -1,121 +0,0 @@ -import { isConnectionError } from '@metamask/network-controller'; -import { Hex, hexToNumber } from '@metamask/utils'; -import onlyKeepHost from '../../../../util/onlyKeepHost'; -import { IMetaMetricsEvent, MetaMetricsEvents } from '../../../Analytics'; -import Logger from '../../../../util/Logger'; -import { ITrackingEvent, JsonMap } from '../../../Analytics/MetaMetrics.types'; -import { getIsInfuraEndpointUrl, getIsQuicknodeEndpointUrl } from './utils'; - -/** - * Handler for the `NetworkController:rpcEndpointUnavailable` messenger action, - * which is called when an RPC endpoint cannot be reached or does not respond - * successfully after a sufficient number of retries. - * - * In this case: - * - * - When we detect that Infura is down, we create an event in Segment so that - * Quicknode can be automatically enabled. - * - When we detect that Quicknode is down, we create an event in Segment so - * that Quicknode can be automatically re-enabled. - * - * @param args - The arguments. - * @param args.chainId - The chain ID that the endpoint represents. - * @param args.endpointUrl - The URL of the endpoint. - * @param args.error - The connection or response error encountered after making - * a request to the RPC endpoint. - * @param args.infuraProjectId - Our Infura project ID. - * @param args.trackEvent - The function that will create the Segment event. - */ -export function onRpcEndpointUnavailable({ - chainId, - endpointUrl, - error, - infuraProjectId, - trackEvent, -}: { - chainId: Hex; - endpointUrl: string; - error: unknown; - infuraProjectId: string; - trackEvent: (options: { - event: IMetaMetricsEvent | ITrackingEvent; - properties: JsonMap; - }) => void; -}): void { - const isInfuraEndpointUrl = getIsInfuraEndpointUrl( - endpointUrl, - infuraProjectId, - ); - const isQuicknodeEndpointUrl = getIsQuicknodeEndpointUrl(endpointUrl); - if ( - (isInfuraEndpointUrl || isQuicknodeEndpointUrl) && - !isConnectionError(error) - ) { - Logger.log( - `Creating Segment event "${ - MetaMetricsEvents.RPC_SERVICE_UNAVAILABLE.category - }" with chain_id_caip: "eip155:${hexToNumber( - chainId, - )}", rpc_endpoint_url: ${onlyKeepHost(endpointUrl)}`, - ); - trackEvent({ - event: MetaMetricsEvents.RPC_SERVICE_UNAVAILABLE, - properties: { - chain_id_caip: `eip155:${hexToNumber(chainId)}`, - rpc_endpoint_url: onlyKeepHost(endpointUrl), - }, - }); - } -} - -/** - * Handler for the `NetworkController:rpcEndpointDegraded` messenger action, - * which is called when an RPC endpoint is slow to return a successful response, - * or it cannot be reached or does not respond successfully after some number of - * retries. - * - * In this case, when we detect that Infura or Quicknode are degraded, we create - * an event in Segment so that we know to investigate further. - * - * @param args - The arguments. - * @param args.chainId - The chain ID that the endpoint represents. - * @param args.endpointUrl - The URL of the endpoint. - * @param args.infuraProjectId - Our Infura project ID. - * @param args.trackEvent - The function that will create the Segment event. - */ -export function onRpcEndpointDegraded({ - chainId, - endpointUrl, - infuraProjectId, - trackEvent, -}: { - chainId: Hex; - endpointUrl: string; - infuraProjectId: string; - trackEvent: (options: { - event: IMetaMetricsEvent | ITrackingEvent; - properties: JsonMap; - }) => void; -}): void { - const isInfuraEndpointUrl = getIsInfuraEndpointUrl( - endpointUrl, - infuraProjectId, - ); - const isQuicknodeEndpointUrl = getIsQuicknodeEndpointUrl(endpointUrl); - if (isInfuraEndpointUrl || isQuicknodeEndpointUrl) { - Logger.log( - `Creating Segment event "${ - MetaMetricsEvents.RPC_SERVICE_DEGRADED.category - }" with chain_id_caip: "eip155:${chainId}", rpc_endpoint_url: ${onlyKeepHost( - endpointUrl, - )}`, - ); - trackEvent({ - event: MetaMetricsEvents.RPC_SERVICE_DEGRADED, - properties: { - chain_id_caip: `eip155:${chainId}`, - rpc_endpoint_url: onlyKeepHost(endpointUrl), - }, - }); - } -} diff --git a/app/core/Engine/controllers/network-controller/utils.ts b/app/core/Engine/controllers/network-controller/utils.ts deleted file mode 100644 index a3ad71855152..000000000000 --- a/app/core/Engine/controllers/network-controller/utils.ts +++ /dev/null @@ -1,32 +0,0 @@ -import { escapeRegExp } from 'lodash'; -import { QUICKNODE_ENDPOINT_URLS_BY_INFURA_NETWORK_NAME } from '../../../../util/networks/customNetworks'; - -/** - * Determines whether the given RPC endpoint URL matches an Infura URL that uses - * our API key. - * - * @param endpointUrl - The URL of the RPC endpoint. - * @param infuraProjectId - Our Infura project ID. - * @returns True if the URL is an Infura URL, false otherwise. - */ -export function getIsInfuraEndpointUrl( - endpointUrl: string, - infuraProjectId: string, -): boolean { - return new RegExp( - `^https://[^.]+\\.infura\\.io/v3/${escapeRegExp(infuraProjectId)}$`, - 'u', - ).test(endpointUrl); -} - -/** - * Determines whether the given RPC endpoint URL matches a known Quicknode URL. - * - * @param endpointUrl - The URL of the RPC endpoint. - * @returns True if the URL is a Quicknode URL, false otherwise. - */ -export function getIsQuicknodeEndpointUrl(endpointUrl: string): boolean { - return Object.values(QUICKNODE_ENDPOINT_URLS_BY_INFURA_NETWORK_NAME) - .map((getUrl) => getUrl()) - .includes(endpointUrl); -} diff --git a/app/core/RPCMethods/wallet_addEthereumChain.js b/app/core/RPCMethods/wallet_addEthereumChain.js index dec26072b929..87a873c66d7a 100644 --- a/app/core/RPCMethods/wallet_addEthereumChain.js +++ b/app/core/RPCMethods/wallet_addEthereumChain.js @@ -110,7 +110,6 @@ const wallet_addEthereumChain = async ({ existingNetworkConfiguration.rpcEndpoints, { url: firstValidRPCUrl, - failoverUrls: [], type: RpcEndpointType.Custom, name: chainName, }, @@ -197,7 +196,6 @@ const wallet_addEthereumChain = async ({ existingNetworkConfiguration.rpcEndpoints, { url: firstValidRPCUrl, - failoverUrls: [], type: RpcEndpointType.Custom, name: chainName, }, @@ -239,7 +237,6 @@ const wallet_addEthereumChain = async ({ rpcEndpoints: [ { url: firstValidRPCUrl, - failoverUrls: [], name: chainName, type: RpcEndpointType.Custom, }, diff --git a/app/core/RPCMethods/wallet_addEthereumChain.test.js b/app/core/RPCMethods/wallet_addEthereumChain.test.js index a03b0f563c69..0e053d6a996c 100644 --- a/app/core/RPCMethods/wallet_addEthereumChain.test.js +++ b/app/core/RPCMethods/wallet_addEthereumChain.test.js @@ -483,7 +483,6 @@ describe('RPC Method - wallet_addEthereumChain', () => { name: 'Test Chain', type: 'custom', url: 'https://different-rpc-url.com', - failoverUrls: [], }, ]), defaultRpcEndpointIndex: 1, diff --git a/app/selectors/accountTrackerControllerReRenders.test.tsx b/app/selectors/accountTrackerControllerReRenders.test.tsx index e47e40f5e0ca..4108018fd18b 100644 --- a/app/selectors/accountTrackerControllerReRenders.test.tsx +++ b/app/selectors/accountTrackerControllerReRenders.test.tsx @@ -75,7 +75,6 @@ jest.mock('../core/Engine', () => ({ networkClientId: 'mainnet', type: 'infura', url: 'https://mainnet.infura.io/v3', - failoverUrls: [], }, ], }, @@ -90,7 +89,6 @@ jest.mock('../core/Engine', () => ({ networkClientId: 'testNetwork', type: 'custom', url: 'https://test.mainnet.io', - failoverUrls: [], }, ], }, @@ -105,7 +103,6 @@ jest.mock('../core/Engine', () => ({ networkClientId: 'binance', type: 'custom', url: 'https://binance.infura.io/v3', - failoverUrls: [], }, ], }, @@ -210,7 +207,6 @@ describe('selectAccountBalanceByChainId', () => { networkClientId: 'mainnet', type: 'infura', url: 'https://mainnet.infura.io/v3', - failoverUrls: [], }, ], }, @@ -225,7 +221,6 @@ describe('selectAccountBalanceByChainId', () => { networkClientId: 'testNetwork', type: 'custom', url: 'https://test.mainnet.io', - failoverUrls: [], }, ], }, @@ -240,7 +235,6 @@ describe('selectAccountBalanceByChainId', () => { networkClientId: 'binance', type: 'custom', url: 'https://binance.infura.io/v3', - failoverUrls: [], }, ], }, diff --git a/app/store/migrations/055.test.ts b/app/store/migrations/055.test.ts index 48030cc5ffcc..77dfd6da315e 100644 --- a/app/store/migrations/055.test.ts +++ b/app/store/migrations/055.test.ts @@ -150,6 +150,8 @@ describe(`migration #${version}`, () => { expectedNetwork.defaultRpcEndpointIndex = expectedNetwork.rpcEndpoints.push({ networkClientId: customNetwork.id, + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-expect-error name: customNetwork.nickname, url: customNetwork.rpcUrl, type: 'custom', @@ -214,7 +216,7 @@ describe(`migration #${version}`, () => { }, }; - const defaultStateToExpect = defaultPostMigrationState(); + const defaultStateToExpect = defaultPostMigrationState() as NetworkState; const expectedNetwork = { ...defaultStateToExpect.networkConfigurationsByChainId[ @@ -502,38 +504,18 @@ describe(`migration #${version}`, () => { // The state of the network controller post migration for just the // built-in networks. As if there were no custom networks defined. -function defaultPostMigrationState(): { - selectedNetworkClientId: string; - networksMetadata: Record<string, string>; - networkConfigurationsByChainId: Record< - `0x${string}`, - { - chainId: `0x${string}`; - rpcEndpoints: { - name?: string; - networkClientId: string; - url: string; - type: 'infura' | 'custom'; - }[]; - defaultRpcEndpointIndex: number; - blockExplorerUrls: string[]; - defaultBlockExplorerUrlIndex: number; - name: string; - nativeCurrency: string; - } - >; -} { +function defaultPostMigrationState() { const state = { selectedNetworkClientId: 'mainnet', networksMetadata: {}, networkConfigurationsByChainId: { '0x1': { - chainId: '0x1' as const, + chainId: '0x1', rpcEndpoints: [ { networkClientId: 'mainnet', url: 'https://mainnet.infura.io/v3/{infuraProjectId}', - type: 'infura' as const, + type: 'infura', }, ], defaultRpcEndpointIndex: 0, @@ -543,12 +525,12 @@ function defaultPostMigrationState(): { nativeCurrency: 'ETH', }, '0xaa36a7': { - chainId: '0xaa36a7' as const, + chainId: '0xaa36a7', rpcEndpoints: [ { networkClientId: 'sepolia', url: 'https://sepolia.infura.io/v3/{infuraProjectId}', - type: 'infura' as const, + type: 'infura', }, ], defaultRpcEndpointIndex: 0, @@ -558,12 +540,12 @@ function defaultPostMigrationState(): { nativeCurrency: 'SepoliaETH', }, '0xe705': { - chainId: '0xe705' as const, + chainId: '0xe705', rpcEndpoints: [ { networkClientId: 'linea-sepolia', url: 'https://linea-sepolia.infura.io/v3/{infuraProjectId}', - type: 'infura' as const, + type: 'infura', }, ], defaultRpcEndpointIndex: 0, @@ -573,12 +555,12 @@ function defaultPostMigrationState(): { nativeCurrency: 'LineaETH', }, '0xe708': { - chainId: '0xe708' as const, + chainId: '0xe708', rpcEndpoints: [ { networkClientId: 'linea-mainnet', url: 'https://linea-mainnet.infura.io/v3/{infuraProjectId}', - type: 'infura' as const, + type: 'infura', }, ], defaultRpcEndpointIndex: 0, diff --git a/app/store/migrations/073.test.ts b/app/store/migrations/073.test.ts deleted file mode 100644 index 7703a3fdaf7f..000000000000 --- a/app/store/migrations/073.test.ts +++ /dev/null @@ -1,1193 +0,0 @@ -import { RpcEndpointType } from '@metamask/network-controller'; -import { captureException } from '@sentry/react-native'; -import migrate from './073'; - -jest.mock('@sentry/react-native', () => ({ - captureException: jest.fn(), -})); -const captureExceptionMock = jest.mocked(captureException); - -const VERSION = 73; - -const MM_INFURA_PROJECT_ID = 'some-infura-project-id'; -const QUICKNODE_MAINNET_URL = 'https://example.quicknode.com/mainnet'; -const QUICKNODE_LINEA_MAINNET_URL = - 'https://example.quicknode.com/linea-mainnet'; -const QUICKNODE_ARBITRUM_URL = 'https://example.quicknode.com/arbitrum'; -const QUICKNODE_AVALANCHE_URL = 'https://example.quicknode.com/avalanche'; -const QUICKNODE_OPTIMISM_URL = 'https://example.quicknode.com/optimism'; -const QUICKNODE_POLYGON_URL = 'https://example.quicknode.com/polygon'; -const QUICKNODE_BASE_URL = 'https://example.quicknode.com/base'; - -describe(`Migration #${VERSION}`, () => { - let originalEnv: NodeJS.ProcessEnv; - - beforeEach(() => { - jest.restoreAllMocks(); - jest.resetAllMocks(); - - originalEnv = { ...process.env }; - }); - - afterEach(() => { - for (const key of new Set([ - ...Object.keys(originalEnv), - ...Object.keys(process.env), - ])) { - if (originalEnv[key]) { - process.env[key] = originalEnv[key]; - } else { - delete process.env[key]; - } - } - }); - - it('logs an error and returns the state unchanged if MM_INFURA_PROJECT_ID is not set', async () => { - const state = {}; - const expectedState = state; - - const newState = migrate(state); - - expect(newState).toBe(expectedState); - expect(captureExceptionMock).toHaveBeenCalledWith( - expect.objectContaining({ - message: `FATAL ERROR: Migration ${VERSION}: No MM_INFURA_PROJECT_ID set!`, - }), - ); - }); - - it('logs an error and returns the state unchanged if the state is not an object', () => { - process.env.MM_INFURA_PROJECT_ID = MM_INFURA_PROJECT_ID; - const state = 'not-an-object'; - const expectedState = state; - - const newState = migrate(state); - - expect(newState).toBe(expectedState); - expect(captureExceptionMock).toHaveBeenCalledWith( - expect.objectContaining({ - message: `FATAL ERROR: Migration ${VERSION}: Expected state to be an object, but is string`, - }), - ); - }); - - it('logs an error and returns the state unchanged if state.engine is missing', () => { - process.env.MM_INFURA_PROJECT_ID = MM_INFURA_PROJECT_ID; - const state = {}; - const expectedState = state; - - const newState = migrate(state); - - expect(newState).toBe(expectedState); - expect(captureExceptionMock).toHaveBeenCalledWith( - expect.objectContaining({ - message: `FATAL ERROR: Migration ${VERSION}: Missing state.engine`, - }), - ); - }); - - it('logs an error and returns the state unchanged if state.engine is not object', () => { - process.env.MM_INFURA_PROJECT_ID = MM_INFURA_PROJECT_ID; - const state = { engine: 'not-an-object' }; - const expectedState = state; - - const newState = migrate(state); - - expect(newState).toBe(expectedState); - expect(captureExceptionMock).toHaveBeenCalledWith( - expect.objectContaining({ - message: `FATAL ERROR: Migration ${VERSION}: Expected state.engine to be an object, but is string`, - }), - ); - }); - - it('logs an error and returns the state unchanged if state.engine.backgroundState is missing', () => { - process.env.MM_INFURA_PROJECT_ID = MM_INFURA_PROJECT_ID; - const state = { - engine: {}, - }; - const expectedState = state; - - const newState = migrate(state); - - expect(newState).toBe(expectedState); - expect(captureExceptionMock).toHaveBeenCalledWith( - expect.objectContaining({ - message: `FATAL ERROR: Migration ${VERSION}: Missing state.engine.backgroundState`, - }), - ); - }); - - it('logs an error and returns the state unchanged if state.engine.backgroundState is not an object', () => { - process.env.MM_INFURA_PROJECT_ID = MM_INFURA_PROJECT_ID; - const state = { - engine: { - backgroundState: 'not-an-object', - }, - }; - const expectedState = state; - - const newState = migrate(state); - - expect(newState).toBe(expectedState); - expect(captureExceptionMock).toHaveBeenCalledWith( - expect.objectContaining({ - message: `FATAL ERROR: Migration ${VERSION}: Expected state.engine.backgroundState to be an object, but is string`, - }), - ); - }); - - it('logs an error and returns the state unchanged if state.engine.backgroundState.NetworkController is missing', async () => { - process.env.MM_INFURA_PROJECT_ID = MM_INFURA_PROJECT_ID; - const state = { - engine: { - backgroundState: {}, - }, - }; - const expectedState = state; - - const newState = migrate(state); - - expect(newState).toBe(expectedState); - expect(captureExceptionMock).toHaveBeenCalledWith( - expect.objectContaining({ - message: `FATAL ERROR: Migration ${VERSION}: Missing state.engine.backgroundState.NetworkController`, - }), - ); - }); - - it('logs an error and returns the state unchanged if state.engine.backgroundState.NetworkController is not an object', async () => { - process.env.MM_INFURA_PROJECT_ID = MM_INFURA_PROJECT_ID; - const state = { - engine: { - backgroundState: { - NetworkController: 'not-an-object', - }, - }, - }; - const expectedState = state; - - const newState = migrate(state); - - expect(newState).toBe(expectedState); - expect(captureExceptionMock).toHaveBeenCalledWith( - expect.objectContaining({ - message: `FATAL ERROR: Migration ${VERSION}: Expected state.engine.backgroundState.NetworkController to be an object, but is string`, - }), - ); - }); - - it('logs an error and returns the state unchanged if state.engine.backgroundState.NetworkController.networkConfigurationsByChainId is missing', async () => { - process.env.MM_INFURA_PROJECT_ID = MM_INFURA_PROJECT_ID; - const state = { - engine: { - backgroundState: { - NetworkController: {}, - }, - }, - }; - const expectedState = state; - - const newState = migrate(state); - - expect(newState).toBe(expectedState); - expect(captureExceptionMock).toHaveBeenCalledWith( - expect.objectContaining({ - message: `FATAL ERROR: Migration ${VERSION}: Missing state.engine.backgroundState.NetworkController.networkConfigurationsByChainId`, - }), - ); - }); - - it('logs an error and returns the state unchanged if NetworkController.networkConfigurationsByChainId is not an object', async () => { - process.env.MM_INFURA_PROJECT_ID = MM_INFURA_PROJECT_ID; - const state = { - engine: { - backgroundState: { - NetworkController: { - networkConfigurationsByChainId: 'not-an-object', - }, - }, - }, - }; - const expectedState = state; - - const newState = migrate(state); - - expect(newState).toBe(expectedState); - expect(captureExceptionMock).toHaveBeenCalledWith( - expect.objectContaining({ - message: `FATAL ERROR: Migration ${VERSION}: Expected state.engine.backgroundState.NetworkController.networkConfigurationsByChainId to be an object, but is string`, - }), - ); - }); - - it('returns the state unchanged if state.engine.backgroundState.NetworkController.networkConfigurationsByChainId is empty', async () => { - process.env.MM_INFURA_PROJECT_ID = MM_INFURA_PROJECT_ID; - const state = { - engine: { - backgroundState: { - NetworkController: { - networkConfigurationsByChainId: {}, - }, - }, - }, - }; - const expectedState = state; - - const newState = migrate(state); - - expect(newState).toStrictEqual(expectedState); - }); - - it('does not update any network configurations that are not objects', async () => { - process.env.MM_INFURA_PROJECT_ID = MM_INFURA_PROJECT_ID; - process.env.QUICKNODE_LINEA_MAINNET_URL = QUICKNODE_LINEA_MAINNET_URL; - const state = { - engine: { - backgroundState: { - NetworkController: { - networkConfigurationsByChainId: { - '0x1': 'not-an-object', - '0xe708': { - rpcEndpoints: [ - { - type: RpcEndpointType.Infura, - url: `https://linea-mainnet.infura.io/v3/{infuraProjectId}`, - }, - ], - }, - }, - }, - }, - }, - }; - const expectedState = { - engine: { - backgroundState: { - NetworkController: { - networkConfigurationsByChainId: { - '0x1': 'not-an-object', - '0xe708': { - rpcEndpoints: [ - { - type: RpcEndpointType.Infura, - url: `https://linea-mainnet.infura.io/v3/{infuraProjectId}`, - failoverUrls: [QUICKNODE_LINEA_MAINNET_URL], - }, - ], - }, - }, - }, - }, - }, - }; - - const newState = migrate(state); - - expect(newState).toStrictEqual(expectedState); - }); - - it('does not update any network configurations that do not have rpcEndpoints', async () => { - process.env.MM_INFURA_PROJECT_ID = MM_INFURA_PROJECT_ID; - process.env.QUICKNODE_LINEA_MAINNET_URL = QUICKNODE_LINEA_MAINNET_URL; - const state = { - engine: { - backgroundState: { - NetworkController: { - networkConfigurationsByChainId: { - '0x1': {}, - '0xe708': { - rpcEndpoints: [ - { - type: RpcEndpointType.Infura, - url: `https://linea-mainnet.infura.io/v3/{infuraProjectId}`, - }, - ], - }, - }, - }, - }, - }, - }; - const expectedState = { - engine: { - backgroundState: { - NetworkController: { - networkConfigurationsByChainId: { - '0x1': {}, - '0xe708': { - rpcEndpoints: [ - { - type: RpcEndpointType.Infura, - url: `https://linea-mainnet.infura.io/v3/{infuraProjectId}`, - failoverUrls: [QUICKNODE_LINEA_MAINNET_URL], - }, - ], - }, - }, - }, - }, - }, - }; - - const newState = migrate(state); - - expect(newState).toStrictEqual(expectedState); - }); - - it('assigns an empty set of failover URLs to custom RPC endpoints that use non-Infura URLs', async () => { - process.env.MM_INFURA_PROJECT_ID = MM_INFURA_PROJECT_ID; - process.env.QUICKNODE_LINEA_MAINNET_URL = QUICKNODE_LINEA_MAINNET_URL; - const state = { - engine: { - backgroundState: { - NetworkController: { - networkConfigurationsByChainId: { - '0x539': { - rpcEndpoints: [ - { - type: RpcEndpointType.Custom, - url: 'https://foo.com', - }, - ], - }, - '0xe708': { - rpcEndpoints: [ - { - type: RpcEndpointType.Infura, - url: `https://linea-mainnet.infura.io/v3/{infuraProjectId}`, - }, - ], - }, - }, - }, - }, - }, - }; - const expectedState = { - engine: { - backgroundState: { - NetworkController: { - networkConfigurationsByChainId: { - '0x539': { - rpcEndpoints: [ - { - type: RpcEndpointType.Custom, - url: 'https://foo.com', - failoverUrls: [], - }, - ], - }, - '0xe708': { - rpcEndpoints: [ - { - type: RpcEndpointType.Infura, - url: `https://linea-mainnet.infura.io/v3/{infuraProjectId}`, - failoverUrls: [QUICKNODE_LINEA_MAINNET_URL], - }, - ], - }, - }, - }, - }, - }, - }; - - const newState = migrate(state); - - expect(newState).toStrictEqual(expectedState); - }); - - it('assigns an empty set of failover URLs to custom RPC endpoints that contain an Infura URL but do not use our API key', async () => { - process.env.MM_INFURA_PROJECT_ID = MM_INFURA_PROJECT_ID; - process.env.QUICKNODE_LINEA_MAINNET_URL = QUICKNODE_LINEA_MAINNET_URL; - const state = { - engine: { - backgroundState: { - NetworkController: { - networkConfigurationsByChainId: { - '0x1': { - rpcEndpoints: [ - { - type: RpcEndpointType.Custom, - url: 'https://mainnet.infura.io/v3/some-other-api-key', - }, - ], - }, - '0xe708': { - rpcEndpoints: [ - { - type: RpcEndpointType.Infura, - url: `https://linea-mainnet.infura.io/v3/{infuraProjectId}`, - }, - ], - }, - }, - }, - }, - }, - }; - const expectedState = { - engine: { - backgroundState: { - NetworkController: { - networkConfigurationsByChainId: { - '0x1': { - rpcEndpoints: [ - { - type: RpcEndpointType.Custom, - url: 'https://mainnet.infura.io/v3/some-other-api-key', - failoverUrls: [], - }, - ], - }, - '0xe708': { - rpcEndpoints: [ - { - type: RpcEndpointType.Infura, - url: `https://linea-mainnet.infura.io/v3/{infuraProjectId}`, - failoverUrls: [QUICKNODE_LINEA_MAINNET_URL], - }, - ], - }, - }, - }, - }, - }, - }; - - const newState = migrate(state); - - expect(newState).toStrictEqual(expectedState); - }); - - it('assigns failover URLs to known Infura RPC endpoints', async () => { - process.env.MM_INFURA_PROJECT_ID = MM_INFURA_PROJECT_ID; - process.env.QUICKNODE_MAINNET_URL = QUICKNODE_MAINNET_URL; - process.env.QUICKNODE_LINEA_MAINNET_URL = QUICKNODE_LINEA_MAINNET_URL; - process.env.QUICKNODE_ARBITRUM_URL = QUICKNODE_ARBITRUM_URL; - process.env.QUICKNODE_AVALANCHE_URL = QUICKNODE_AVALANCHE_URL; - process.env.QUICKNODE_OPTIMISM_URL = QUICKNODE_OPTIMISM_URL; - process.env.QUICKNODE_POLYGON_URL = QUICKNODE_POLYGON_URL; - process.env.QUICKNODE_BASE_URL = QUICKNODE_BASE_URL; - const state = { - engine: { - backgroundState: { - NetworkController: { - networkConfigurationsByChainId: { - '0x1': { - rpcEndpoints: [ - { - type: RpcEndpointType.Infura, - url: `https://mainnet.infura.io/v3/{infuraProjectId}`, - }, - ], - }, - '0xe708': { - rpcEndpoints: [ - { - type: RpcEndpointType.Infura, - url: `https://linea-mainnet.infura.io/v3/{infuraProjectId}`, - }, - ], - }, - '0xa4b1': { - rpcEndpoints: [ - { - type: RpcEndpointType.Infura, - url: `https://arbitrum.infura.io/v3/{infuraProjectId}`, - }, - ], - }, - '0xa86a': { - rpcEndpoints: [ - { - type: RpcEndpointType.Infura, - url: `https://avalanche.infura.io/v3/{infuraProjectId}`, - }, - ], - }, - '0xa': { - rpcEndpoints: [ - { - type: RpcEndpointType.Infura, - url: `https://optimism.infura.io/v3/{infuraProjectId}`, - }, - ], - }, - '0x89': { - rpcEndpoints: [ - { - type: RpcEndpointType.Infura, - url: `https://polygon.infura.io/v3/{infuraProjectId}`, - }, - ], - }, - '0x2105': { - rpcEndpoints: [ - { - type: RpcEndpointType.Infura, - url: `https://base.infura.io/v3/{infuraProjectId}`, - }, - ], - }, - }, - }, - }, - }, - }; - const expectedState = { - engine: { - backgroundState: { - NetworkController: { - networkConfigurationsByChainId: { - '0x1': { - rpcEndpoints: [ - { - type: RpcEndpointType.Infura, - url: `https://mainnet.infura.io/v3/{infuraProjectId}`, - failoverUrls: [QUICKNODE_MAINNET_URL], - }, - ], - }, - '0xe708': { - rpcEndpoints: [ - { - type: RpcEndpointType.Infura, - url: `https://linea-mainnet.infura.io/v3/{infuraProjectId}`, - failoverUrls: [QUICKNODE_LINEA_MAINNET_URL], - }, - ], - }, - '0xa4b1': { - rpcEndpoints: [ - { - type: RpcEndpointType.Infura, - url: `https://arbitrum.infura.io/v3/{infuraProjectId}`, - failoverUrls: [QUICKNODE_ARBITRUM_URL], - }, - ], - }, - '0xa86a': { - rpcEndpoints: [ - { - type: RpcEndpointType.Infura, - url: `https://avalanche.infura.io/v3/{infuraProjectId}`, - failoverUrls: [QUICKNODE_AVALANCHE_URL], - }, - ], - }, - '0xa': { - rpcEndpoints: [ - { - type: RpcEndpointType.Infura, - url: `https://optimism.infura.io/v3/{infuraProjectId}`, - failoverUrls: [QUICKNODE_OPTIMISM_URL], - }, - ], - }, - '0x89': { - rpcEndpoints: [ - { - type: RpcEndpointType.Infura, - url: `https://polygon.infura.io/v3/{infuraProjectId}`, - failoverUrls: [QUICKNODE_POLYGON_URL], - }, - ], - }, - '0x2105': { - rpcEndpoints: [ - { - type: RpcEndpointType.Infura, - url: `https://base.infura.io/v3/{infuraProjectId}`, - failoverUrls: [QUICKNODE_BASE_URL], - }, - ], - }, - }, - }, - }, - }, - }; - - const newState = migrate(state); - - expect(newState).toStrictEqual(expectedState); - }); - - it('assigns an empty set of failover URLs to any Infura endpoints for which the appropriate environment variable is not set', async () => { - process.env.MM_INFURA_PROJECT_ID = MM_INFURA_PROJECT_ID; - const state = { - engine: { - backgroundState: { - NetworkController: { - networkConfigurationsByChainId: { - '0x1': { - rpcEndpoints: [ - { - type: RpcEndpointType.Infura, - url: `https://mainnet.infura.io/v3/{infuraProjectId}`, - }, - ], - }, - '0xe708': { - rpcEndpoints: [ - { - type: RpcEndpointType.Infura, - url: `https://linea-mainnet.infura.io/v3/{infuraProjectId}`, - }, - ], - }, - '0xa4b1': { - rpcEndpoints: [ - { - type: RpcEndpointType.Infura, - url: `https://arbitrum.infura.io/v3/{infuraProjectId}`, - }, - ], - }, - '0xa86a': { - rpcEndpoints: [ - { - type: RpcEndpointType.Infura, - url: `https://avalanche.infura.io/v3/{infuraProjectId}`, - }, - ], - }, - '0xa': { - rpcEndpoints: [ - { - type: RpcEndpointType.Infura, - url: `https://optimism.infura.io/v3/{infuraProjectId}`, - }, - ], - }, - '0x89': { - rpcEndpoints: [ - { - type: RpcEndpointType.Infura, - url: `https://polygon.infura.io/v3/{infuraProjectId}`, - }, - ], - }, - '0x2105': { - rpcEndpoints: [ - { - type: RpcEndpointType.Infura, - url: `https://base.infura.io/v3/{infuraProjectId}`, - }, - ], - }, - }, - }, - }, - }, - }; - const expectedState = { - engine: { - backgroundState: { - NetworkController: { - networkConfigurationsByChainId: { - '0x1': { - rpcEndpoints: [ - { - type: RpcEndpointType.Infura, - url: `https://mainnet.infura.io/v3/{infuraProjectId}`, - failoverUrls: [], - }, - ], - }, - '0xe708': { - rpcEndpoints: [ - { - type: RpcEndpointType.Infura, - url: `https://linea-mainnet.infura.io/v3/{infuraProjectId}`, - failoverUrls: [], - }, - ], - }, - '0xa4b1': { - rpcEndpoints: [ - { - type: RpcEndpointType.Infura, - url: `https://arbitrum.infura.io/v3/{infuraProjectId}`, - failoverUrls: [], - }, - ], - }, - '0xa86a': { - rpcEndpoints: [ - { - type: RpcEndpointType.Infura, - url: `https://avalanche.infura.io/v3/{infuraProjectId}`, - failoverUrls: [], - }, - ], - }, - '0xa': { - rpcEndpoints: [ - { - type: RpcEndpointType.Infura, - url: `https://optimism.infura.io/v3/{infuraProjectId}`, - failoverUrls: [], - }, - ], - }, - '0x89': { - rpcEndpoints: [ - { - type: RpcEndpointType.Infura, - url: `https://polygon.infura.io/v3/{infuraProjectId}`, - failoverUrls: [], - }, - ], - }, - '0x2105': { - rpcEndpoints: [ - { - type: RpcEndpointType.Infura, - url: `https://base.infura.io/v3/{infuraProjectId}`, - failoverUrls: [], - }, - ], - }, - }, - }, - }, - }, - }; - - const newState = migrate(state); - - expect(newState).toStrictEqual(expectedState); - }); - - it('does not update any Infura RPC endpoints that already have failover URLs defined', async () => { - process.env.MM_INFURA_PROJECT_ID = MM_INFURA_PROJECT_ID; - process.env.QUICKNODE_LINEA_MAINNET_URL = QUICKNODE_LINEA_MAINNET_URL; - const state = { - engine: { - backgroundState: { - NetworkController: { - networkConfigurationsByChainId: { - '0x1': { - rpcEndpoints: [ - { - type: RpcEndpointType.Infura, - url: `https://mainnet.infura.io/v3/{infuraProjectId}`, - failoverUrls: ['https://foo.com'], - }, - ], - }, - '0xe708': { - rpcEndpoints: [ - { - type: RpcEndpointType.Infura, - url: `https://linea-mainnet.infura.io/v3/{infuraProjectId}`, - }, - ], - }, - }, - }, - }, - }, - }; - const expectedState = { - engine: { - backgroundState: { - NetworkController: { - networkConfigurationsByChainId: { - '0x1': { - rpcEndpoints: [ - { - type: RpcEndpointType.Infura, - url: `https://mainnet.infura.io/v3/{infuraProjectId}`, - failoverUrls: ['https://foo.com'], - }, - ], - }, - '0xe708': { - rpcEndpoints: [ - { - type: RpcEndpointType.Infura, - url: `https://linea-mainnet.infura.io/v3/{infuraProjectId}`, - failoverUrls: [QUICKNODE_LINEA_MAINNET_URL], - }, - ], - }, - }, - }, - }, - }, - }; - - const newState = migrate(state); - - expect(newState).toStrictEqual(expectedState); - }); - - it('assigns failover URLs to custom RPC endpoints that are actually Infura RPC endpoints in disguise', async () => { - process.env.MM_INFURA_PROJECT_ID = MM_INFURA_PROJECT_ID; - process.env.QUICKNODE_MAINNET_URL = QUICKNODE_MAINNET_URL; - process.env.QUICKNODE_LINEA_MAINNET_URL = QUICKNODE_LINEA_MAINNET_URL; - process.env.QUICKNODE_ARBITRUM_URL = QUICKNODE_ARBITRUM_URL; - process.env.QUICKNODE_AVALANCHE_URL = QUICKNODE_AVALANCHE_URL; - process.env.QUICKNODE_OPTIMISM_URL = QUICKNODE_OPTIMISM_URL; - process.env.QUICKNODE_POLYGON_URL = QUICKNODE_POLYGON_URL; - process.env.QUICKNODE_BASE_URL = QUICKNODE_BASE_URL; - const state = { - engine: { - backgroundState: { - NetworkController: { - networkConfigurationsByChainId: { - '0x1': { - rpcEndpoints: [ - { - type: RpcEndpointType.Custom, - url: `https://mainnet.infura.io/v3/${MM_INFURA_PROJECT_ID}`, - }, - ], - }, - '0xe708': { - rpcEndpoints: [ - { - type: RpcEndpointType.Custom, - url: `https://linea-mainnet.infura.io/v3/${MM_INFURA_PROJECT_ID}`, - }, - ], - }, - '0xa4b1': { - rpcEndpoints: [ - { - type: RpcEndpointType.Custom, - url: `https://arbitrum.infura.io/v3/${MM_INFURA_PROJECT_ID}`, - }, - ], - }, - '0xa86a': { - rpcEndpoints: [ - { - type: RpcEndpointType.Custom, - url: `https://avalanche.infura.io/v3/${MM_INFURA_PROJECT_ID}`, - }, - ], - }, - '0xa': { - rpcEndpoints: [ - { - type: RpcEndpointType.Custom, - url: `https://optimism.infura.io/v3/${MM_INFURA_PROJECT_ID}`, - }, - ], - }, - '0x89': { - rpcEndpoints: [ - { - type: RpcEndpointType.Custom, - url: `https://polygon.infura.io/v3/${MM_INFURA_PROJECT_ID}`, - }, - ], - }, - '0x2105': { - rpcEndpoints: [ - { - type: RpcEndpointType.Custom, - url: `https://base.infura.io/v3/${MM_INFURA_PROJECT_ID}`, - }, - ], - }, - }, - }, - }, - }, - }; - const expectedState = { - engine: { - backgroundState: { - NetworkController: { - networkConfigurationsByChainId: { - '0x1': { - rpcEndpoints: [ - { - type: RpcEndpointType.Custom, - url: `https://mainnet.infura.io/v3/${MM_INFURA_PROJECT_ID}`, - failoverUrls: [QUICKNODE_MAINNET_URL], - }, - ], - }, - '0xe708': { - rpcEndpoints: [ - { - type: RpcEndpointType.Custom, - url: `https://linea-mainnet.infura.io/v3/${MM_INFURA_PROJECT_ID}`, - failoverUrls: [QUICKNODE_LINEA_MAINNET_URL], - }, - ], - }, - '0xa4b1': { - rpcEndpoints: [ - { - type: RpcEndpointType.Custom, - url: `https://arbitrum.infura.io/v3/${MM_INFURA_PROJECT_ID}`, - failoverUrls: [QUICKNODE_ARBITRUM_URL], - }, - ], - }, - '0xa86a': { - rpcEndpoints: [ - { - type: RpcEndpointType.Custom, - url: `https://avalanche.infura.io/v3/${MM_INFURA_PROJECT_ID}`, - failoverUrls: [QUICKNODE_AVALANCHE_URL], - }, - ], - }, - '0xa': { - rpcEndpoints: [ - { - type: RpcEndpointType.Custom, - url: `https://optimism.infura.io/v3/${MM_INFURA_PROJECT_ID}`, - failoverUrls: [QUICKNODE_OPTIMISM_URL], - }, - ], - }, - '0x89': { - rpcEndpoints: [ - { - type: RpcEndpointType.Custom, - url: `https://polygon.infura.io/v3/${MM_INFURA_PROJECT_ID}`, - failoverUrls: [QUICKNODE_POLYGON_URL], - }, - ], - }, - '0x2105': { - rpcEndpoints: [ - { - type: RpcEndpointType.Custom, - url: `https://base.infura.io/v3/${MM_INFURA_PROJECT_ID}`, - failoverUrls: [QUICKNODE_BASE_URL], - }, - ], - }, - }, - }, - }, - }, - }; - - const newState = migrate(state); - - expect(newState).toStrictEqual(expectedState); - }); - - it('assigns an empty set of failover URLs to custom RPC endpoints that are actually Infura RPC endpoints in disguise but for which the appropriate environment variables are not set', async () => { - process.env.MM_INFURA_PROJECT_ID = MM_INFURA_PROJECT_ID; - const state = { - engine: { - backgroundState: { - NetworkController: { - networkConfigurationsByChainId: { - '0x1': { - rpcEndpoints: [ - { - type: RpcEndpointType.Custom, - url: `https://mainnet.infura.io/v3/${MM_INFURA_PROJECT_ID}`, - }, - ], - }, - '0xe708': { - rpcEndpoints: [ - { - type: RpcEndpointType.Custom, - url: `https://linea-mainnet.infura.io/v3/${MM_INFURA_PROJECT_ID}`, - }, - ], - }, - '0xa4b1': { - rpcEndpoints: [ - { - type: RpcEndpointType.Custom, - url: `https://arbitrum.infura.io/v3/${MM_INFURA_PROJECT_ID}`, - }, - ], - }, - '0xa86a': { - rpcEndpoints: [ - { - type: RpcEndpointType.Custom, - url: `https://avalanche.infura.io/v3/${MM_INFURA_PROJECT_ID}`, - }, - ], - }, - '0xa': { - rpcEndpoints: [ - { - type: RpcEndpointType.Custom, - url: `https://optimism.infura.io/v3/${MM_INFURA_PROJECT_ID}`, - }, - ], - }, - '0x89': { - rpcEndpoints: [ - { - type: RpcEndpointType.Custom, - url: `https://polygon.infura.io/v3/${MM_INFURA_PROJECT_ID}`, - }, - ], - }, - '0x2105': { - rpcEndpoints: [ - { - type: RpcEndpointType.Custom, - url: `https://base.infura.io/v3/${MM_INFURA_PROJECT_ID}`, - }, - ], - }, - }, - }, - }, - }, - }; - const expectedState = { - engine: { - backgroundState: { - NetworkController: { - networkConfigurationsByChainId: { - '0x1': { - rpcEndpoints: [ - { - type: RpcEndpointType.Custom, - url: `https://mainnet.infura.io/v3/${MM_INFURA_PROJECT_ID}`, - failoverUrls: [], - }, - ], - }, - '0xe708': { - rpcEndpoints: [ - { - type: RpcEndpointType.Custom, - url: `https://linea-mainnet.infura.io/v3/${MM_INFURA_PROJECT_ID}`, - failoverUrls: [], - }, - ], - }, - '0xa4b1': { - rpcEndpoints: [ - { - type: RpcEndpointType.Custom, - url: `https://arbitrum.infura.io/v3/${MM_INFURA_PROJECT_ID}`, - failoverUrls: [], - }, - ], - }, - '0xa86a': { - rpcEndpoints: [ - { - type: RpcEndpointType.Custom, - url: `https://avalanche.infura.io/v3/${MM_INFURA_PROJECT_ID}`, - failoverUrls: [], - }, - ], - }, - '0xa': { - rpcEndpoints: [ - { - type: RpcEndpointType.Custom, - url: `https://optimism.infura.io/v3/${MM_INFURA_PROJECT_ID}`, - failoverUrls: [], - }, - ], - }, - '0x89': { - rpcEndpoints: [ - { - type: RpcEndpointType.Custom, - url: `https://polygon.infura.io/v3/${MM_INFURA_PROJECT_ID}`, - failoverUrls: [], - }, - ], - }, - '0x2105': { - rpcEndpoints: [ - { - type: RpcEndpointType.Custom, - url: `https://base.infura.io/v3/${MM_INFURA_PROJECT_ID}`, - failoverUrls: [], - }, - ], - }, - }, - }, - }, - }, - }; - - const newState = migrate(state); - - expect(newState).toStrictEqual(expectedState); - }); - - it('does not update any in-disguise Infura RPC endpoints that already have failover URLs defined', async () => { - process.env.MM_INFURA_PROJECT_ID = MM_INFURA_PROJECT_ID; - process.env.QUICKNODE_LINEA_MAINNET_URL = QUICKNODE_LINEA_MAINNET_URL; - const state = { - engine: { - backgroundState: { - NetworkController: { - networkConfigurationsByChainId: { - '0x1': { - rpcEndpoints: [ - { - type: RpcEndpointType.Custom, - url: `https://mainnet.infura.io/v3/${MM_INFURA_PROJECT_ID}`, - failoverUrls: ['https://foo.com'], - }, - ], - }, - '0xe708': { - rpcEndpoints: [ - { - type: RpcEndpointType.Custom, - url: `https://linea-mainnet.infura.io/v3/${MM_INFURA_PROJECT_ID}`, - }, - ], - }, - }, - }, - }, - }, - }; - const expectedState = { - engine: { - backgroundState: { - NetworkController: { - networkConfigurationsByChainId: { - '0x1': { - rpcEndpoints: [ - { - type: RpcEndpointType.Custom, - url: `https://mainnet.infura.io/v3/${MM_INFURA_PROJECT_ID}`, - failoverUrls: ['https://foo.com'], - }, - ], - }, - '0xe708': { - rpcEndpoints: [ - { - type: RpcEndpointType.Custom, - url: `https://linea-mainnet.infura.io/v3/${MM_INFURA_PROJECT_ID}`, - failoverUrls: [QUICKNODE_LINEA_MAINNET_URL], - }, - ], - }, - }, - }, - }, - }, - }; - - const newState = migrate(state); - - expect(newState).toStrictEqual(expectedState); - }); -}); diff --git a/app/store/migrations/073.ts b/app/store/migrations/073.ts deleted file mode 100644 index 4727099c489a..000000000000 --- a/app/store/migrations/073.ts +++ /dev/null @@ -1,205 +0,0 @@ -import { RpcEndpointType } from '@metamask/network-controller'; -import { getErrorMessage, hasProperty, Hex, isObject } from '@metamask/utils'; -import { captureException } from '@sentry/react-native'; -import { cloneDeep, escapeRegExp } from 'lodash'; - -const VERSION = 73; - -// Chains supported by Infura that are either built in or featured, -// mapped to their corresponding failover URLs. -// Copied from `PopularList` in app/util/networks/customNetworks.ts: -// <https://github.com/MetaMask/metamask-mobile/blob/c29c22bf2ad62171c4cad3b4156500a1347aa7dc/app/util/networks/customNetworks.tsx#L12> -export const INFURA_CHAINS_WITH_FAILOVERS: Map< - Hex, - { subdomain: string; getFailoverUrl: () => string | undefined } -> = new Map([ - [ - '0x1', - { - subdomain: 'mainnet', - getFailoverUrl: () => process.env.QUICKNODE_MAINNET_URL, - }, - ], - // linea mainnet - [ - '0xe708', - { - subdomain: 'linea-mainnet', - getFailoverUrl: () => process.env.QUICKNODE_LINEA_MAINNET_URL, - }, - ], - [ - '0xa4b1', - { - subdomain: 'arbitrum', - getFailoverUrl: () => process.env.QUICKNODE_ARBITRUM_URL, - }, - ], - [ - '0xa86a', - { - subdomain: 'avalanche', - getFailoverUrl: () => process.env.QUICKNODE_AVALANCHE_URL, - }, - ], - [ - '0xa', - { - subdomain: 'optimism', - getFailoverUrl: () => process.env.QUICKNODE_OPTIMISM_URL, - }, - ], - [ - '0x89', - { - subdomain: 'polygon', - getFailoverUrl: () => process.env.QUICKNODE_POLYGON_URL, - }, - ], - [ - '0x2105', - { - subdomain: 'base', - getFailoverUrl: () => process.env.QUICKNODE_BASE_URL, - }, - ], -]); - -export default function migrate(state: unknown) { - const newState = cloneDeep(state); - - try { - updateState(newState); - return newState; - } catch (error) { - captureException( - new Error(`FATAL ERROR: Migration ${VERSION}: ${getErrorMessage(error)}`), - ); - return state; - } -} - -function updateState(state: unknown) { - if (!process.env.MM_INFURA_PROJECT_ID) { - throw new Error('No MM_INFURA_PROJECT_ID set!'); - } - - if (!isObject(state)) { - throw new Error(`Expected state to be an object, but is ${typeof state}`); - } - - if (!hasProperty(state, 'engine')) { - throw new Error('Missing state.engine'); - } - - if (!isObject(state.engine)) { - throw new Error( - `Expected state.engine to be an object, but is ${typeof state.engine}`, - ); - } - - if (!hasProperty(state.engine, 'backgroundState')) { - throw new Error('Missing state.engine.backgroundState'); - } - - if (!isObject(state.engine.backgroundState)) { - throw new Error( - `Expected state.engine.backgroundState to be an object, but is ${typeof state - .engine.backgroundState}`, - ); - } - - if (!hasProperty(state.engine.backgroundState, 'NetworkController')) { - throw new Error('Missing state.engine.backgroundState.NetworkController'); - } - - if (!isObject(state.engine.backgroundState.NetworkController)) { - throw new Error( - `Expected state.engine.backgroundState.NetworkController to be an object, but is ${typeof state - .engine.backgroundState.NetworkController}`, - ); - } - - if ( - !hasProperty( - state.engine.backgroundState.NetworkController, - 'networkConfigurationsByChainId', - ) - ) { - throw new Error( - 'Missing state.engine.backgroundState.NetworkController.networkConfigurationsByChainId', - ); - } - - if ( - !isObject( - state.engine.backgroundState.NetworkController - .networkConfigurationsByChainId, - ) - ) { - throw new Error( - `Expected state.engine.backgroundState.NetworkController.networkConfigurationsByChainId to be an object, but is ${typeof state - .engine.backgroundState.NetworkController - .networkConfigurationsByChainId}`, - ); - } - - const { networkConfigurationsByChainId } = - state.engine.backgroundState.NetworkController; - - for (const [chainId, networkConfiguration] of Object.entries( - networkConfigurationsByChainId, - )) { - const infuraChainWithFailover = INFURA_CHAINS_WITH_FAILOVERS.get( - chainId as Hex, - ); - - if ( - !isObject(networkConfiguration) || - !hasProperty(networkConfiguration, 'rpcEndpoints') || - !Array.isArray(networkConfiguration.rpcEndpoints) - ) { - continue; - } - - networkConfiguration.rpcEndpoints = networkConfiguration.rpcEndpoints.map( - (rpcEndpoint) => { - if ( - !isObject(rpcEndpoint) || - !hasProperty(rpcEndpoint, 'url') || - typeof rpcEndpoint.url !== 'string' || - hasProperty(rpcEndpoint, 'failoverUrls') - ) { - return rpcEndpoint; - } - - // All featured networks that use Infura get added as custom RPC - // endpoints, not Infura RPC endpoints - const match = rpcEndpoint.url.match( - new RegExp( - `https://(.+?)\\.infura\\.io/v3/${escapeRegExp( - process.env.MM_INFURA_PROJECT_ID, - )}`, - 'u', - ), - ); - const isInfuraLike = - match && - infuraChainWithFailover && - match[1] === infuraChainWithFailover.subdomain; - - const failoverUrl = infuraChainWithFailover?.getFailoverUrl(); - - const failoverUrls = - failoverUrl && - (rpcEndpoint.type === RpcEndpointType.Infura || isInfuraLike) - ? [failoverUrl] - : []; - return { - ...rpcEndpoint, - failoverUrls, - }; - }, - ); - } -} diff --git a/app/store/migrations/index.ts b/app/store/migrations/index.ts index df296b052095..35d2dde15ad0 100644 --- a/app/store/migrations/index.ts +++ b/app/store/migrations/index.ts @@ -73,7 +73,6 @@ import migration69 from './069'; import migration70 from './070'; import migration71 from './071'; import migration72 from './072'; -import migration73 from './073'; // Add migrations above this line import { validatePostMigrationState } from '../validateMigration/validateMigration'; @@ -163,7 +162,6 @@ export const migrationList: MigrationsList = { 70: migration70, 71: migration71, 72: migration72, - 73: migration73, }; // Enable both synchronous and asynchronous migrations diff --git a/app/util/address/index.test.ts b/app/util/address/index.test.ts index 0ae7abbe8ac6..587f725574ad 100644 --- a/app/util/address/index.test.ts +++ b/app/util/address/index.test.ts @@ -287,7 +287,6 @@ describe('shouldShowBlockExplorer', () => { networkClientId: 'networkId1', type: RpcEndpointType.Custom, url: 'https://mainnet.infura.io/v3/123', - failoverUrls: [], }, ], }, diff --git a/app/util/bridge/hooks/useAddToken.ts b/app/util/bridge/hooks/useAddToken.ts index a2ec3d81a940..0027f5795939 100644 --- a/app/util/bridge/hooks/useAddToken.ts +++ b/app/util/bridge/hooks/useAddToken.ts @@ -49,7 +49,6 @@ export default function useAddToken() { rpcEndpoints: [ { url: featuredRpc.rpcUrl, - failoverUrls: featuredRpc.failoverRpcUrls, type: RpcEndpointType.Custom, }, ], diff --git a/app/util/networks/customNetworks.tsx b/app/util/networks/customNetworks.tsx index b66f3682be33..23a3838ad4f4 100644 --- a/app/util/networks/customNetworks.tsx +++ b/app/util/networks/customNetworks.tsx @@ -1,4 +1,3 @@ -import { ImageSourcePropType } from 'react-native'; import { CaipChainId, Hex } from '@metamask/utils'; import { toHex } from '@metamask/controller-utils'; import { CHAIN_IDS } from '@metamask/transaction-controller'; @@ -10,49 +9,11 @@ import { BtcScope, SolScope } from '@metamask/keyring-api'; const InfuraKey = process.env.MM_INFURA_PROJECT_ID; const infuraProjectId = InfuraKey === 'null' ? '' : InfuraKey; -export interface Network { - chainId: Hex; - nickname: string; - rpcPrefs: { - blockExplorerUrl: string; - imageSource?: ImageSourcePropType; - imageUrl?: string; - }; - rpcUrl: string; - failoverRpcUrls: string[]; - ticker: string; - /** - * Not supported by Infura - */ - warning?: boolean; -} - -export const QUICKNODE_ENDPOINT_URLS_BY_INFURA_NETWORK_NAME = { - 'ethereum-mainnet': () => process.env.QUICKNODE_MAINNET_URL, - 'linea-mainnet': () => process.env.QUICKNODE_LINEA_MAINNET_URL, - 'arbitrum-mainnet': () => process.env.QUICKNODE_ARBITRUM_URL, - 'avalanche-mainnet': () => process.env.QUICKNODE_AVALANCHE_URL, - 'optimism-mainnet': () => process.env.QUICKNODE_OPTIMISM_URL, - 'polygon-mainnet': () => process.env.QUICKNODE_POLYGON_URL, - 'base-mainnet': () => process.env.QUICKNODE_BASE_URL, -}; - -export function getFailoverUrlsForInfuraNetwork( - infuraNetwork: keyof typeof QUICKNODE_ENDPOINT_URLS_BY_INFURA_NETWORK_NAME, -) { - const url = QUICKNODE_ENDPOINT_URLS_BY_INFURA_NETWORK_NAME[infuraNetwork](); - if (url) { - return [url]; - } - return []; -} - export const PopularList = [ { chainId: toHex('43114'), nickname: 'Avalanche C-Chain', rpcUrl: `https://avalanche-mainnet.infura.io/v3/${infuraProjectId}`, - failoverRpcUrls: getFailoverUrlsForInfuraNetwork('avalanche-mainnet'), ticker: 'AVAX', rpcPrefs: { blockExplorerUrl: 'https://snowtrace.io', @@ -64,7 +25,6 @@ export const PopularList = [ chainId: toHex('42161'), nickname: 'Arbitrum One', rpcUrl: `https://arbitrum-mainnet.infura.io/v3/${infuraProjectId}`, - failoverRpcUrls: getFailoverUrlsForInfuraNetwork('arbitrum-mainnet'), ticker: 'ETH', rpcPrefs: { blockExplorerUrl: 'https://arbiscan.io', @@ -76,7 +36,6 @@ export const PopularList = [ chainId: toHex('56'), nickname: 'BNB Smart Chain Mainnet', rpcUrl: 'https://bsc-dataseed1.binance.org', - failoverRpcUrls: [], ticker: 'BNB', warning: true, rpcPrefs: { @@ -89,7 +48,6 @@ export const PopularList = [ chainId: toHex('8453'), nickname: 'Base', rpcUrl: `https://base-mainnet.infura.io/v3/${infuraProjectId}`, - failoverRpcUrls: getFailoverUrlsForInfuraNetwork('base-mainnet'), ticker: 'ETH', warning: true, rpcPrefs: { @@ -102,7 +60,6 @@ export const PopularList = [ chainId: toHex('10'), nickname: 'OP Mainnet', rpcUrl: `https://optimism-mainnet.infura.io/v3/${infuraProjectId}`, - failoverRpcUrls: getFailoverUrlsForInfuraNetwork('optimism-mainnet'), ticker: 'ETH', rpcPrefs: { blockExplorerUrl: 'https://optimistic.etherscan.io', @@ -114,8 +71,6 @@ export const PopularList = [ chainId: toHex('11297108109'), nickname: 'Palm', rpcUrl: `https://palm-mainnet.infura.io/v3/${infuraProjectId}`, - // Quicknode does not support Palm at this time - failoverRpcUrls: [], ticker: 'PALM', rpcPrefs: { blockExplorerUrl: 'https://explorer.palm.io', @@ -127,7 +82,6 @@ export const PopularList = [ chainId: toHex('137'), nickname: 'Polygon Mainnet', rpcUrl: `https://polygon-mainnet.infura.io/v3/${infuraProjectId}`, - failoverRpcUrls: getFailoverUrlsForInfuraNetwork('polygon-mainnet'), ticker: 'POL', rpcPrefs: { blockExplorerUrl: 'https://polygonscan.com', @@ -139,7 +93,6 @@ export const PopularList = [ chainId: toHex('324'), nickname: 'zkSync Mainnet', rpcUrl: `https://mainnet.era.zksync.io`, - failoverRpcUrls: [], ticker: 'ETH', warning: true, rpcPrefs: { @@ -148,7 +101,7 @@ export const PopularList = [ imageSource: require('../../images/zk-sync.png'), }, }, -] satisfies Network[]; +]; export const getNonEvmNetworkImageSourceByChainId = (chainId: CaipChainId) => { if (chainId === SolScope.Mainnet) { @@ -245,7 +198,6 @@ export const UnpopularNetworkList = [ chainId: toHex('250'), nickname: 'Fantom Opera', rpcUrl: 'https://rpc.ftm.tools/', - failoverRpcUrls: [], ticker: 'FTM', warning: true, rpcPrefs: { @@ -258,7 +210,6 @@ export const UnpopularNetworkList = [ chainId: toHex('1666600000'), nickname: 'Harmony Mainnet Shard 0', rpcUrl: 'https://api.harmony.one/', - failoverRpcUrls: [], ticker: 'ONE', warning: true, rpcPrefs: { diff --git a/app/util/onlyKeepHost.test.ts b/app/util/onlyKeepHost.test.ts deleted file mode 100644 index 13ad26a155ef..000000000000 --- a/app/util/onlyKeepHost.test.ts +++ /dev/null @@ -1,15 +0,0 @@ -import onlyKeepHost from './onlyKeepHost'; - -describe('onlyKeepHost', () => { - it('returns only the host of the URL and drops everything else', () => { - expect(onlyKeepHost('http://foo.com/bar')).toStrictEqual('foo.com'); - }); - - it('preserves subdomains', () => { - expect(onlyKeepHost('http://foo.bar.com/baz')).toStrictEqual('foo.bar.com'); - }); - - it('returns an invalid URL unchanged', () => { - expect(onlyKeepHost('invalid URL')).toStrictEqual('invalid URL'); - }); -}); diff --git a/app/util/onlyKeepHost.ts b/app/util/onlyKeepHost.ts deleted file mode 100644 index 74b24399404c..000000000000 --- a/app/util/onlyKeepHost.ts +++ /dev/null @@ -1,13 +0,0 @@ -const onlyKeepHost = (url: string) => { - if (!url) { - return url; - } - - try { - return new URL(url).host; - } catch (error) { - return url; - } -}; - -export default onlyKeepHost; diff --git a/app/util/stripKeyFromInfuraUrl.test.ts b/app/util/stripKeyFromInfuraUrl.test.ts deleted file mode 100644 index b295407ec797..000000000000 --- a/app/util/stripKeyFromInfuraUrl.test.ts +++ /dev/null @@ -1,24 +0,0 @@ -import { INFURA_PROJECT_ID } from '../constants/network'; -import stripKeyFromInfuraUrl from './stripKeyFromInfuraUrl'; - -describe('stripKeyFromInfuraUrl', () => { - it('returns undefined if given undefined', () => { - expect(stripKeyFromInfuraUrl(undefined)).toBeUndefined(); - }); - - it('returns an empty string if given an empty string', () => { - expect(stripKeyFromInfuraUrl('')).toBe(''); - }); - - it('removes the path from a masked Infura URL', () => { - expect(stripKeyFromInfuraUrl('http://foo.io/v3/{infuraProjectId}')).toBe( - 'http://foo.io', - ); - }); - - it('removes the path from a non-masked Infura URL', () => { - expect(stripKeyFromInfuraUrl(`http://foo.io/v3/${INFURA_PROJECT_ID}`)).toBe( - 'http://foo.io', - ); - }); -}); diff --git a/app/util/stripKeyFromInfuraUrl.ts b/app/util/stripKeyFromInfuraUrl.ts deleted file mode 100644 index b3e8b31ae33e..000000000000 --- a/app/util/stripKeyFromInfuraUrl.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { INFURA_PROJECT_ID } from '../constants/network'; - -const stripKeyFromInfuraUrl = (endpoint: string | undefined) => { - if (!endpoint) return endpoint; - - let modifiedEndpoint = endpoint; - - if (modifiedEndpoint.endsWith('/v3/{infuraProjectId}')) { - modifiedEndpoint = modifiedEndpoint.replace('/v3/{infuraProjectId}', ''); - } else if (modifiedEndpoint.endsWith(`/v3/${INFURA_PROJECT_ID}`)) { - modifiedEndpoint = modifiedEndpoint.replace(`/v3/${INFURA_PROJECT_ID}`, ''); - } - - return modifiedEndpoint; -}; - -export default stripKeyFromInfuraUrl; diff --git a/app/util/stripProtocol.test.ts b/app/util/stripProtocol.test.ts deleted file mode 100644 index 0262c6eb56e4..000000000000 --- a/app/util/stripProtocol.test.ts +++ /dev/null @@ -1,29 +0,0 @@ -import stripProtocol from './stripProtocol'; - -describe('stripProtocol', () => { - it('returns undefined if given undefined', () => { - expect(stripProtocol(undefined)).toBeUndefined(); - }); - - it('returns an empty string if given an empty string', () => { - expect(stripProtocol('')).toBe(''); - }); - - it('returns the host plus pathname of the URL, discarding everything else', () => { - expect(stripProtocol('http://foo.com/bar?baz=qux')).toBe('foo.com/bar'); - }); - - it('preserves subdomains', () => { - expect(stripProtocol('http://foo.bar.com/baz?qux=bug')).toBe( - 'foo.bar.com/baz', - ); - }); - - it('returns a URL fragment without a path if it is just a slash', () => { - expect(stripProtocol('http://foo.com/')).toBe('foo.com'); - }); - - it('returns an invalid URL unchanged', () => { - expect(stripProtocol('invalid URL')).toStrictEqual('invalid URL'); - }); -}); diff --git a/app/util/stripProtocol.ts b/app/util/stripProtocol.ts deleted file mode 100644 index 92f8fccdbf10..000000000000 --- a/app/util/stripProtocol.ts +++ /dev/null @@ -1,16 +0,0 @@ -const stripProtocol = (url: string | undefined) => { - if (!url) { - return url; - } - - try { - const parsedUrl = new URL(url); - return `${parsedUrl.host}${ - parsedUrl.pathname === '/' ? '' : parsedUrl.pathname - }`; - } catch (error) { - return url; - } -}; - -export default stripProtocol; diff --git a/app/util/test/network.ts b/app/util/test/network.ts index 5db350c87c6f..33fc493f727a 100644 --- a/app/util/test/network.ts +++ b/app/util/test/network.ts @@ -49,7 +49,6 @@ export const mockNetworkState = ( networkClientId: network.id ?? uuidv4(), type: network.type ?? RpcEndpointType.Custom, url: rpc, - failoverUrls: [], }, ], defaultRpcEndpointIndex: 0, diff --git a/babel.config.tests.js b/babel.config.tests.js deleted file mode 100644 index 59abd5bf9a09..000000000000 --- a/babel.config.tests.js +++ /dev/null @@ -1,26 +0,0 @@ -/* eslint-disable import/no-commonjs */ - -const baseConfig = require('./babel.config'); - -const newPlugins = baseConfig.plugins.filter( - (plugin) => plugin !== 'transform-inline-environment-variables', -); - -const newOverrides = [ - ...baseConfig.overrides, - // Don't transform environment variables for files that depend on them. - { - exclude: [ - 'app/store/migrations/**', - 'app/core/Engine/controllers/network-controller/messenger-action-handlers.test.ts', - 'app/util/networks/customNetworks.tsx', - ], - plugins: ['transform-inline-environment-variables'], - }, -]; - -module.exports = { - ...baseConfig, - plugins: newPlugins, - overrides: newOverrides, -}; diff --git a/bitrise.yml b/bitrise.yml index b7982ad17704..4597808534e1 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -181,7 +181,7 @@ stages: - run_tag_multichain_permissions_android: {} run_smoke_e2e_ios_android_stage: workflows: - #- run_ios_api_specs: {} + - run_ios_api_specs: {} - run_tag_smoke_accounts_ios: {} - run_tag_smoke_accounts_android: {} - run_tag_smoke_identity_ios: {} diff --git a/jest.config.js b/jest.config.js index 3dfde3572b3a..d54cc45b1f88 100644 --- a/jest.config.js +++ b/jest.config.js @@ -20,7 +20,7 @@ const config = { 'node_modules/(?!((@metamask/)?(@react-native|react-native|redux-persist-filesystem|@react-navigation|@react-native-community|@react-native-masked-view|react-navigation|react-navigation-redux-helpers|@sentry|d3-color|@notifee)))', ], transform: { - '^.+\\.[jt]sx?$': ['babel-jest', { configFile: './babel.config.tests.js' }], + '^.+\\.[jt]sx?$': 'babel-jest', '^.+\\.(png|jpg|jpeg|gif|webp|svg|mp4)$': '<rootDir>/app/util/test/assetFileTransformer.js', }, diff --git a/locales/languages/en.json b/locales/languages/en.json index 440cbd34ba2b..2d51a6e3085d 100644 --- a/locales/languages/en.json +++ b/locales/languages/en.json @@ -966,11 +966,9 @@ "networks_desc": "Add and edit custom RPC networks", "network_name_label": "Network Name", "network_name_placeholder": "Network Name (optional)", - "network_rpc_url_label": "RPC URL", + "network_rpc_url_label": "RPC Url", "network_rpc_name_label": "RPC Name", "network_rpc_placeholder": "New RPC Network", - "network_failover_rpc_url_label": "Failover RPC URL", - "failover": "Failover", "network_chain_id_label": "Chain ID", "network_chain_id_placeholder": "Chain ID", "network_symbol_label": "Symbol", From 205298b8e835a8f25f3b6e3cb00dc3490d92b935 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 16 Apr 2025 07:42:08 -0700 Subject: [PATCH 141/473] chore: cherry-pick #14686 (#14700) This PR cherry-picks #14686 Co-authored-by: Owen Craston <owen.craston@consensys.net> --- app/core/Analytics/MetaMetrics.events.ts | 9 +- .../SnapKeyring/trackSnapAccountEvent.test.ts | 60 +++++++ .../SnapKeyring/trackSnapAccountEvent.ts | 33 ++++ app/core/SnapKeyring/SnapKeyring.test.ts | 111 +++++++++++++ app/core/SnapKeyring/SnapKeyring.ts | 41 ++++- app/core/SnapKeyring/utils/snaps.test.ts | 152 ++++++++++++++++++ app/core/SnapKeyring/utils/snaps.ts | 36 +++++ 7 files changed, 437 insertions(+), 5 deletions(-) create mode 100644 app/core/Analytics/helpers/SnapKeyring/trackSnapAccountEvent.test.ts create mode 100644 app/core/Analytics/helpers/SnapKeyring/trackSnapAccountEvent.ts create mode 100644 app/core/SnapKeyring/utils/snaps.test.ts diff --git a/app/core/Analytics/MetaMetrics.events.ts b/app/core/Analytics/MetaMetrics.events.ts index a054af4ccbfd..d19aa04302df 100644 --- a/app/core/Analytics/MetaMetrics.events.ts +++ b/app/core/Analytics/MetaMetrics.events.ts @@ -381,6 +381,9 @@ enum EVENT_NAME { // Remove an account ACCOUNT_REMOVED = 'Account removed', + ACCOUNT_REMOVE_FAILED = 'Account remove failed', + // Account added + ACCOUNT_ADDED = 'Account Added', //Notifications ALL_NOTIFICATIONS = 'All Notifications', @@ -489,11 +492,11 @@ const events = { EVENT_NAME.CONNECT_REQUEST_OTPFAILURE, ), CONNECT_REQUEST_CANCELLED: generateOpt(EVENT_NAME.CONNECT_REQUEST_CANCELLED), - + // Phishing events PHISHING_PAGE_DISPLAYED: generateOpt(EVENT_NAME.PHISHING_PAGE_DISPLAYED), PROCEED_ANYWAY_CLICKED: generateOpt(EVENT_NAME.PROCEED_ANYWAY_CLICKED), - + WALLET_OPENED: generateOpt(EVENT_NAME.WALLET_OPENED), TOKEN_ADDED: generateOpt(EVENT_NAME.TOKEN_ADDED), COLLECTIBLE_ADDED: generateOpt(EVENT_NAME.COLLECTIBLE_ADDED), @@ -859,6 +862,8 @@ const events = { // Remove an account ACCOUNT_REMOVED: generateOpt(EVENT_NAME.ACCOUNT_REMOVED), + ACCOUNT_REMOVE_FAILED: generateOpt(EVENT_NAME.ACCOUNT_REMOVE_FAILED), + ACCOUNT_ADDED: generateOpt(EVENT_NAME.ACCOUNT_ADDED), // Smart transactions SMART_TRANSACTION_OPT_IN: generateOpt(EVENT_NAME.SMART_TRANSACTION_OPT_IN), diff --git a/app/core/Analytics/helpers/SnapKeyring/trackSnapAccountEvent.test.ts b/app/core/Analytics/helpers/SnapKeyring/trackSnapAccountEvent.test.ts new file mode 100644 index 000000000000..a66e1f7c6ed7 --- /dev/null +++ b/app/core/Analytics/helpers/SnapKeyring/trackSnapAccountEvent.test.ts @@ -0,0 +1,60 @@ +import { IMetaMetricsEvent, MetaMetrics } from '../..'; +import { trackSnapAccountEvent } from './trackSnapAccountEvent'; +import { MetricsEventBuilder } from '../../MetricsEventBuilder'; +import { IMetaMetrics } from '../../MetaMetrics.types'; + +const mockTrackEvent = jest.fn(); +const mockAddProperties = jest.fn().mockReturnThis(); +const mockBuild = jest.fn().mockReturnValue({ mockBuiltEvent: true }); +const mockCreateEventBuilder = jest.fn().mockReturnValue({ + addProperties: mockAddProperties, + build: mockBuild, +}); + +jest + .spyOn(MetricsEventBuilder, 'createEventBuilder') + .mockImplementation(mockCreateEventBuilder); + +jest.spyOn(MetaMetrics, 'getInstance').mockReturnValue({ + trackEvent: mockTrackEvent, + isEnabled: jest.fn(), + enable: jest.fn(), + addTraitsToUser: jest.fn(), + group: jest.fn(), + reset: jest.fn(), + flush: jest.fn(), + createDataDeletionTask: jest.fn(), + checkDataDeleteStatus: jest.fn(), + getDeleteRegulationCreationDate: jest.fn(), + getDeleteRegulationId: jest.fn(), + isDataRecorded: jest.fn(), + configure: jest.fn(), + getMetaMetricsId: jest.fn(), +} as IMetaMetrics); + +describe('trackSnapAccountEvent', () => { + const mockMetricEvent: IMetaMetricsEvent = { + category: 'testCategory', + properties: { name: 'testEvent' }, + }; + const mockSnapId = 'npm:@metamask/test-snap'; + const mockSnapName = 'Test Snap'; + + beforeEach(() => { + jest.clearAllMocks(); + }); + + it('should create and track an event with the correct properties', () => { + trackSnapAccountEvent(mockMetricEvent, mockSnapId, mockSnapName); + expect(mockCreateEventBuilder).toHaveBeenCalledWith(mockMetricEvent); + expect(mockAddProperties).toHaveBeenCalledWith({ + account_type: 'Snap', + snap_id: mockSnapId, + snap_name: mockSnapName, + }); + + expect(mockBuild).toHaveBeenCalled(); + // Verify MetaMetrics trackEvent was called with the built event + expect(mockTrackEvent).toHaveBeenCalledWith({ mockBuiltEvent: true }); + }); +}); diff --git a/app/core/Analytics/helpers/SnapKeyring/trackSnapAccountEvent.ts b/app/core/Analytics/helpers/SnapKeyring/trackSnapAccountEvent.ts new file mode 100644 index 000000000000..c1b69cef8678 --- /dev/null +++ b/app/core/Analytics/helpers/SnapKeyring/trackSnapAccountEvent.ts @@ -0,0 +1,33 @@ +import { IMetaMetricsEvent, MetaMetrics } from '../..'; +import Logger from '../../../../util/Logger'; +import { MetricsEventBuilder } from '../../MetricsEventBuilder'; + +/** + * Track a Snap account-related event. + * + * @param metricEvent - The name of the event to track. + * @param snapId - The ID of the Snap. + * @param snapName - The name of the Snap. + */ +export function trackSnapAccountEvent( + metricEvent: IMetaMetricsEvent, + snapId: string, + snapName: string, +): void { + try { + const event = MetricsEventBuilder.createEventBuilder(metricEvent) + .addProperties({ + account_type: 'Snap', + snap_id: snapId, + snap_name: snapName, + }) + .build(); + + MetaMetrics.getInstance().trackEvent(event); + } catch (error) { + Logger.error( + error as Error, + `Error tracking snap account event: ${JSON.stringify(metricEvent)}`, + ); + } +} diff --git a/app/core/SnapKeyring/SnapKeyring.test.ts b/app/core/SnapKeyring/SnapKeyring.test.ts index 0c3cbd8ee4ed..189e3151144c 100644 --- a/app/core/SnapKeyring/SnapKeyring.test.ts +++ b/app/core/SnapKeyring/SnapKeyring.test.ts @@ -16,6 +16,7 @@ import { SNAP_MANAGE_ACCOUNTS_CONFIRMATION_TYPES } from '../RPCMethods/RPCMethod import { showAccountNameSuggestionDialog } from './utils/showDialog'; import Logger from '../../util/Logger'; import { isSnapPreinstalled } from './utils/snaps'; +import { trackSnapAccountEvent } from '../Analytics/helpers/SnapKeyring/trackSnapAccountEvent'; const mockAddRequest = jest.fn(); const mockStartFlow = jest.fn(); @@ -144,6 +145,12 @@ const createSnapKeyringBuilder = () => // Mock the isSnapPreinstalled function jest.mock('./utils/snaps', () => ({ isSnapPreinstalled: jest.fn(), + getSnapName: jest.fn().mockReturnValue('Mock Snap Name'), +})); + +// Mock the trackSnapAccountEvent function +jest.mock('../Analytics/helpers/SnapKeyring/trackSnapAccountEvent', () => ({ + trackSnapAccountEvent: jest.fn(), })); describe('Snap Keyring Methods', () => { @@ -212,6 +219,12 @@ describe('Snap Keyring Methods', () => { expect(mockGetAccounts).toHaveBeenCalledTimes(1); expect(mockSetAccountName).not.toHaveBeenCalled(); expect(mockEndFlow).toHaveBeenCalledWith([{ id: mockFlowId }]); + + // Wait for any pending promises (including the account finalization which tracks the event) + await waitForAllPromises(); + + // Verify trackSnapAccountEvent was called for successful account creation + expect(trackSnapAccountEvent).toHaveBeenCalled(); }); it('handles account creation with user defined name', async () => { @@ -250,6 +263,12 @@ describe('Snap Keyring Methods', () => { ]); expect(mockEndFlow).toHaveBeenCalledTimes(2); expect(mockEndFlow).toHaveBeenCalledWith([{ id: mockFlowId }]); + + // Wait for any pending promises (including the account finalization which tracks the event) + await waitForAllPromises(); + + // Verify trackSnapAccountEvent was called + expect(trackSnapAccountEvent).toHaveBeenCalled(); }); it('throws an error when user denies account creation', async () => { @@ -342,6 +361,7 @@ describe('Snap Keyring Methods', () => { expect(mockEndFlow).toHaveBeenCalledTimes(2); expect(mockEndFlow).toHaveBeenNthCalledWith(1, [{ id: mockFlowId }]); expect(mockEndFlow).toHaveBeenNthCalledWith(2, [{ id: mockFlowId }]); + expect(trackSnapAccountEvent).not.toHaveBeenCalled(); }); it('skips account name suggestion dialog for preinstalled snaps when displayAccountNameSuggestion is false', async () => { // Mock isSnapPreinstalled to return true for this test @@ -467,4 +487,95 @@ describe('Snap Keyring Methods', () => { ]); }); }); + describe('removeAccount', () => { + beforeEach(() => { + mockAddRequest.mockReturnValue(true).mockReturnValue({ success: true }); + (isSnapPreinstalled as jest.Mock).mockReset(); + }); + afterEach(() => { + jest.resetAllMocks(); + }); + + it('calls removeAccountHelper and persistKeyringHelper when account is deleted', async () => { + const builder = createSnapKeyringBuilder(); + const snapKeyring = builder(); + + // First add an account to the keyring so that it can be removed + // NOTE: This callback will not be triggered if there are no accounts in the keyring + await snapKeyring.handleKeyringSnapMessage(mockSnapId, { + method: KeyringEvent.AccountCreated, + params: { + account: mockAccount, + displayConfirmation: false, + }, + }); + + // Reset mocks after account creation + mockRemoveAccountHelper.mockReset(); + mockPersisKeyringHelper.mockReset(); + + // Now delete the account + await snapKeyring.handleKeyringSnapMessage(mockSnapId, { + method: KeyringEvent.AccountDeleted, + params: { + id: mockAccount.id, + }, + }); + + expect(mockRemoveAccountHelper).toHaveBeenCalledTimes(1); + expect(mockRemoveAccountHelper).toHaveBeenCalledWith( + mockAccount.address.toLowerCase(), + ); + expect(mockPersisKeyringHelper).toHaveBeenCalledTimes(2); + + // Verify trackSnapAccountEvent was called + expect(trackSnapAccountEvent).toHaveBeenCalled(); + }); + + it('handles errors when removing an account', async () => { + const loggerSpy = jest.spyOn(Logger, 'error').mockImplementation(); + + // Set up mock to throw an error + const errorMessage = 'Failed to remove account'; + mockRemoveAccountHelper.mockRejectedValue(new Error(errorMessage)); + + const builder = createSnapKeyringBuilder(); + const snapKeyring = builder(); + + // First add an account to the keyring so that it can be removed + await snapKeyring.handleKeyringSnapMessage(mockSnapId, { + method: KeyringEvent.AccountCreated, + params: { + account: mockAccount, + displayConfirmation: false, + }, + }); + + // Reset mocks after account creation + mockRemoveAccountHelper.mockReset(); + mockPersisKeyringHelper.mockReset(); + mockRemoveAccountHelper.mockRejectedValue(new Error(errorMessage)); + + // Expect the error to be thrown + await expect( + snapKeyring.handleKeyringSnapMessage(mockSnapId, { + method: KeyringEvent.AccountDeleted, + params: { + id: mockAccount.id, + }, + }), + ).rejects.toThrow(errorMessage); + + // Verify error was logged + expect(loggerSpy).toHaveBeenCalledWith( + expect.objectContaining({ message: errorMessage }), + expect.stringContaining( + `Error removing snap account: ${mockAccount.address.toLowerCase()}`, + ), + ); + + // Verify trackSnapAccountEvent was called for error case + expect(trackSnapAccountEvent).toHaveBeenCalled(); + }); + }); }); diff --git a/app/core/SnapKeyring/SnapKeyring.ts b/app/core/SnapKeyring/SnapKeyring.ts index b9f82eb95e50..adc9949bc001 100644 --- a/app/core/SnapKeyring/SnapKeyring.ts +++ b/app/core/SnapKeyring/SnapKeyring.ts @@ -10,10 +10,12 @@ import { SnapKeyringBuilderMessenger } from './types'; import { SnapId } from '@metamask/snaps-sdk'; import { assertIsValidSnapId } from '@metamask/snaps-utils'; import { getUniqueAccountName } from './utils/getUniqueAccountName'; -import { isSnapPreinstalled } from './utils/snaps'; +import { getSnapName, isSnapPreinstalled } from './utils/snaps'; import { endTrace, trace, TraceName, TraceOperation } from '../../util/trace'; import { getTraceTags } from '../../util/sentry/tags'; import { store } from '../../store'; +import { MetaMetricsEvents } from '../../core/Analytics/MetaMetrics.events'; +import { trackSnapAccountEvent } from '../Analytics/helpers/SnapKeyring/trackSnapAccountEvent'; /** * Builder type for the Snap keyring. @@ -140,6 +142,8 @@ class SnapKeyringImpl implements SnapKeyringCallbacks { } private async addAccountFinalize({ + address: _address, + snapId, accountName, onceSaved, }: { @@ -176,6 +180,15 @@ class SnapKeyringImpl implements SnapKeyringCallbacks { accountName, ); } + + // Track successful account addition + const snapName = getSnapName(snapId as SnapId, this.#messenger); + trackSnapAccountEvent( + MetaMetricsEvents.ACCOUNT_ADDED, + snapId, + snapName, + ); + endTrace({ name: TraceName.AddSnapAccount, }); @@ -231,6 +244,7 @@ class SnapKeyringImpl implements SnapKeyringCallbacks { handleUserInput: (accepted: boolean) => Promise<void>, ) { assertIsValidSnapId(snapId); + // TODO: Implement proper snap account confirmations. Currently, we are approving everything for testing purposes. Logger.log( `SnapKeyring: removeAccount called with \n @@ -238,10 +252,31 @@ class SnapKeyringImpl implements SnapKeyringCallbacks { - handleUserInput: ${handleUserInput} \n - snapId: ${snapId} \n`, ); + // Approve everything for now because we have not implemented snap account confirmations yet await handleUserInput(true); - await this.#removeAccountHelper(address); - await this.#persistKeyringHelper(); + + try { + await this.#removeAccountHelper(address); + await this.#persistKeyringHelper(); + + // Track successful account removal + const snapName = getSnapName(snapId as SnapId, this.#messenger); + trackSnapAccountEvent( + MetaMetricsEvents.ACCOUNT_REMOVED, + snapId, + snapName, + ); + } catch (error) { + Logger.error(error as Error, `Error removing snap account: ${address}`); + const snapName = getSnapName(snapId as SnapId, this.#messenger); + trackSnapAccountEvent( + MetaMetricsEvents.ACCOUNT_REMOVED, + snapId, + snapName, + ); + throw error; + } } async redirectUser(snapId: string, url: string, message: string) { diff --git a/app/core/SnapKeyring/utils/snaps.test.ts b/app/core/SnapKeyring/utils/snaps.test.ts new file mode 100644 index 000000000000..52066fcb389a --- /dev/null +++ b/app/core/SnapKeyring/utils/snaps.test.ts @@ -0,0 +1,152 @@ +import { SnapId } from '@metamask/snaps-sdk'; +import { SnapKeyringBuilderMessenger } from '../types'; +import { + isSnapPreinstalled, + isMultichainWalletSnap, + getSnapName, +} from './snaps'; +import { + stripSnapPrefix, + getLocalizedSnapManifest, +} from '@metamask/snaps-utils'; + +// Mock the Bitcoin and Solana wallet snap IDs +const MOCK_BITCOIN_WALLET_SNAP_ID = + 'npm:@metamask/bitcoin-wallet-snap' as SnapId; +const MOCK_SOLANA_WALLET_SNAP_ID = 'npm:@metamask/solana-wallet-snap' as SnapId; + +// Mock dependencies +jest.mock('../../../lib/snaps/preinstalled-snaps', () => ({ + __esModule: true, + default: [ + { snapId: 'npm:@metamask/test-snap-1' }, + { snapId: 'npm:@metamask/test-snap-2' }, + ], +})); + +// Mock the Engine +jest.mock('../../../core/Engine', () => ({ + controllerMessenger: { + call: jest.fn(), + }, +})); + +// Mock the BitcoinWalletSnap module +jest.mock('../BitcoinWalletSnap', () => ({ + BITCOIN_WALLET_SNAP_ID: 'npm:@metamask/bitcoin-wallet-snap', +})); + +// Mock the SolanaWalletSnap module +jest.mock('../SolanaWalletSnap', () => ({ + SOLANA_WALLET_SNAP_ID: 'npm:@metamask/solana-wallet-snap', +})); + +jest.mock('@metamask/snaps-utils', () => ({ + stripSnapPrefix: jest.fn((snapId) => snapId.replace('npm:', '')), + getLocalizedSnapManifest: jest.fn(), +})); + +jest.mock('../../../../locales/i18n', () => ({ + __esModule: true, + default: { + locale: 'en-US', + }, +})); + +describe('snaps utility functions', () => { + beforeEach(() => { + jest.clearAllMocks(); + }); + + describe('isSnapPreinstalled', () => { + it('should return true for preinstalled snap', () => { + const snapId = 'npm:@metamask/test-snap-1' as SnapId; + expect(isSnapPreinstalled(snapId)).toBe(true); + }); + + it('should return false for non-preinstalled snap', () => { + const snapId = 'npm:@metamask/non-preinstalled-snap' as SnapId; + expect(isSnapPreinstalled(snapId)).toBe(false); + }); + }); + + describe('isMultichainWalletSnap', () => { + it('should return true for Bitcoin wallet snap', () => { + expect(isMultichainWalletSnap(MOCK_BITCOIN_WALLET_SNAP_ID)).toBe(true); + }); + + it('should return true for Solana wallet snap', () => { + expect(isMultichainWalletSnap(MOCK_SOLANA_WALLET_SNAP_ID)).toBe(true); + }); + + it('should return false for non-multichain wallet snap', () => { + const snapId = 'npm:@metamask/other-snap' as SnapId; + expect(isMultichainWalletSnap(snapId)).toBe(false); + }); + }); + + describe('getSnapName', () => { + // Create a proper mock for the messenger + const mockCall = jest.fn(); + const mockMessenger = { + call: mockCall, + } as unknown as SnapKeyringBuilderMessenger; + + beforeEach(() => { + mockCall.mockReset(); + }); + + it('should return stripped snap id when snap is not found', () => { + const snapId = 'npm:@metamask/not-found-snap' as SnapId; + mockCall.mockReturnValue(null); + + const result = getSnapName(snapId, mockMessenger); + + expect(mockCall).toHaveBeenCalledWith('SnapController:get', snapId); + expect(stripSnapPrefix).toHaveBeenCalledWith(snapId); + expect(result).toBe('@metamask/not-found-snap'); + }); + + it('should return proposedName when snap has no localization files', () => { + const snapId = 'npm:@metamask/test-snap' as SnapId; + const mockSnap = { + manifest: { + proposedName: 'Test Snap', + }, + }; + mockCall.mockReturnValue(mockSnap); + + const result = getSnapName(snapId, mockMessenger); + + expect(mockCall).toHaveBeenCalledWith('SnapController:get', snapId); + expect(result).toBe('Test Snap'); + }); + + it('should return localized proposedName when snap has localization files', () => { + const snapId = 'npm:@metamask/localized-snap' as SnapId; + const mockSnap = { + manifest: { + proposedName: 'Original Name', + }, + localizationFiles: { + 'en-US': { content: { proposedName: 'Localized Name' } }, + }, + }; + mockCall.mockReturnValue(mockSnap); + + (getLocalizedSnapManifest as jest.Mock).mockReturnValue({ + proposedName: 'Localized Name', + }); + + const result = getSnapName(snapId, mockMessenger); + + expect(mockCall).toHaveBeenCalledWith('SnapController:get', snapId); + expect(getLocalizedSnapManifest).toHaveBeenCalledWith( + mockSnap.manifest, + 'en-US', + mockSnap.localizationFiles, + ); + expect(result).toBe('Localized Name'); + }); + }); +}); diff --git a/app/core/SnapKeyring/utils/snaps.ts b/app/core/SnapKeyring/utils/snaps.ts index 7f130ce4ce49..20731c650c7c 100644 --- a/app/core/SnapKeyring/utils/snaps.ts +++ b/app/core/SnapKeyring/utils/snaps.ts @@ -2,6 +2,12 @@ import { SnapId } from '@metamask/snaps-sdk'; import PREINSTALLED_SNAPS from '../../../lib/snaps/preinstalled-snaps'; import { BITCOIN_WALLET_SNAP_ID } from '../BitcoinWalletSnap'; import { SOLANA_WALLET_SNAP_ID } from '../SolanaWalletSnap'; +import { + getLocalizedSnapManifest, + stripSnapPrefix, +} from '@metamask/snaps-utils'; +import { SnapKeyringBuilderMessenger } from '../types'; +import I18n from '../../../../locales/i18n'; /** * Check if a Snap is a preinstalled Snap. @@ -32,3 +38,33 @@ const ALLOW_LISTED_SNAPS = [BITCOIN_WALLET_SNAP_ID, SOLANA_WALLET_SNAP_ID]; export function isMultichainWalletSnap(id: SnapId): boolean { return ALLOW_LISTED_SNAPS.includes(id); } + +/** + * Get the localized Snap name or some fallback name otherwise. + * + * @param snapId - Snap ID. + * @param messenger - Snap keyring messenger. + * @returns The Snap name. + */ +export function getSnapName( + snapId: SnapId, + messenger: SnapKeyringBuilderMessenger, +) { + const snap = messenger.call('SnapController:get', snapId); + const currentLocale = I18n.locale; + + if (!snap) { + return stripSnapPrefix(snapId); + } + + if (snap.localizationFiles) { + const localizedManifest = getLocalizedSnapManifest( + snap.manifest, + currentLocale, + snap.localizationFiles, + ); + return localizedManifest.proposedName; + } + + return snap.manifest.proposedName; +} From a48f7146c27391d2ce2f59a85bfeccf0e859e371 Mon Sep 17 00:00:00 2001 From: "runway-github[bot]" <73448015+runway-github[bot]@users.noreply.github.com> Date: Fri, 18 Apr 2025 14:19:50 -0600 Subject: [PATCH 142/473] chore(runway): cherry-pick fix: cp-7.45.0 Update @keystonehq packages and Ledger library to solve QR wallet and Ledger Sign transaction issue. (#14729) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - fix: cp-7.45.0 Update @keystonehq packages and Ledger library to solve QR wallet and Ledger Sign transaction issue. (#14555) <!-- Please submit this PR as a draft initially. Do not mark it as "Ready for review" until the template has been completely filled out, and PR status checks have passed at least once. --> ## **Description** This PR is required by https://github.com/MetaMask/accounts-planning/issues/903 to update the keystonehq library to latest to solve the `out of memory` issue in keystone qr devices. This PR also upgrade @metamask/eth-ledger-bridge-keyring to solve Serv 1 issue of #14648 due to same cause of @ethieumjs/tx upgrade in many core library. and fix #14662 issue due to TransactionController upgrade. <!-- Write a short description of the changes included in this pull request, also include relevant motivation and context. Have in mind the following questions: 1. What is the reason for the change? 2. What is the improvement/solution? --> ## **Related issues** Fixes: https://github.com/MetaMask/accounts-planning/issues/903 #14648 #14662 ## **Manual testing steps** please test the build with metamask test-dapp especially `deploy ERC20` and `deploy ERC1155` contract to see any `out of memory` happening, this PR can't prevent `out of memory` happening but can reduce the chance to make that error occur. the proper fix of this issue will be done by `keystone` team to upgrade their firmware. For ledger, please check all transaction flow working. it is better to do full regression tests in both ledger and Keystone. ## **Screenshots/Recordings** <!-- If applicable, add screenshots and/or recordings to visualize the before and after of your change. --> ### **Before** <!-- [screenshots/recordings] --> ### **After** <!-- [screenshots/recordings] --> ## **Pre-merge author checklist** - [x] I’ve followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile Coding Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [x] I've completed the PR template to the best of my ability - [x] I’ve included tests if applicable - [x] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [x] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. ## **Pre-merge reviewer checklist** - [x] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [x] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots. --------- Co-authored-by: sethkfman <10342624+sethkfman@users.noreply.github.com> [71b9084](https://github.com/MetaMask/metamask-mobile/commit/71b908436a486a6f146d36d827a94c47a266b4a2) Co-authored-by: Xiaoming Wang <7315988+dawnseeker8@users.noreply.github.com> Co-authored-by: sethkfman <10342624+sethkfman@users.noreply.github.com> --- .../EarnInputView/EarnInputView.test.tsx | 2 +- .../StakingEarningsHistory.utils.ts | 17 +-- .../confirmations/legacy/Approval/index.js | 3 - .../confirmations/legacy/Approve/index.js | 3 - .../legacy/ApproveView/Approve/index.js | 4 +- .../legacy/SendFlow/Confirm/index.js | 6 +- .../legacy/SendFlow/Confirm/utils.test.ts | 12 +- .../legacy/SendFlow/Confirm/utils.ts | 3 +- app/core/Ledger/Ledger.ts | 1 - app/store/migrations/029.ts | 5 +- app/store/migrations/031.ts | 1 - app/store/migrations/072.ts | 4 +- app/util/address/index.ts | 17 ++- app/util/transactions/index.test.ts | 2 +- package.json | 12 +- yarn.lock | 119 +++++++++--------- 16 files changed, 109 insertions(+), 102 deletions(-) diff --git a/app/components/UI/Earn/Views/EarnInputView/EarnInputView.test.tsx b/app/components/UI/Earn/Views/EarnInputView/EarnInputView.test.tsx index c654ac99292f..5f2d83921ba3 100644 --- a/app/components/UI/Earn/Views/EarnInputView/EarnInputView.test.tsx +++ b/app/components/UI/Earn/Views/EarnInputView/EarnInputView.test.tsx @@ -58,7 +58,7 @@ const MOCK_USDC_MAINNET_ASSET = createMockToken({ CHAIN_IDS.MAINNET, TOKENS_WITH_DEFAULT_OPTIONS.USDC, ), - address: '0xusDC123', + address: '0x123232', }); const mockSetOptions = jest.fn(); diff --git a/app/components/UI/Stake/components/StakingEarnings/StakingEarningsHistory/StakingEarningsHistory.utils.ts b/app/components/UI/Stake/components/StakingEarnings/StakingEarningsHistory/StakingEarningsHistory.utils.ts index 7c818d96c2d4..36ccf313a6b5 100644 --- a/app/components/UI/Stake/components/StakingEarnings/StakingEarningsHistory/StakingEarningsHistory.utils.ts +++ b/app/components/UI/Stake/components/StakingEarnings/StakingEarningsHistory/StakingEarningsHistory.utils.ts @@ -8,11 +8,11 @@ import { fromWei, } from '../../../../../../util/number'; import { BN } from 'ethereumjs-util'; -import { TimePeriodGroupInfo } from './StakingEarningsHistory.types'; +import type { TimePeriodGroupInfo } from './StakingEarningsHistory.types'; import { DateRange } from './StakingEarningsTimePeriod/StakingEarningsTimePeriod.types'; import BigNumber from 'bignumber.js'; -import { EarningHistory } from '../../../hooks/useStakingEarningsHistory'; -import { TokenI } from '../../../../Tokens/types'; +import type { EarningHistory } from '../../../hooks/useStakingEarningsHistory'; +import type { TokenI } from '../../../../Tokens/types'; /** * Formats the date string into a time period group info object @@ -119,8 +119,8 @@ export const formatRewardsWei = ( if (!isRemoveSpecialCharacters) { // return a string with possible special characters in display formatting return asset.isETH - ? renderFromWei(rewardsValue) - : renderFromTokenMinimalUnit(rewardsValue, asset.decimals); + ? renderFromWei(rewardsValue.toString()) + : renderFromTokenMinimalUnit(rewardsValue.toString(), asset.decimals); } // return a string without special characters return asset.isETH @@ -165,11 +165,14 @@ export const formatRewardsFiat = ( exchangeRate: number = 0, ): string => { if (asset.isETH) { - const weiFiatNumber = weiToFiatNumber(new BN(rewardsValue), conversionRate); + const weiFiatNumber = weiToFiatNumber( + rewardsValue.toString(), + conversionRate, + ); return renderFiat(weiFiatNumber, currency, 2); } const balanceFiatNumber = balanceToFiatNumber( - renderFromTokenMinimalUnit(rewardsValue, asset.decimals), + renderFromTokenMinimalUnit(rewardsValue.toString(), asset.decimals), conversionRate, exchangeRate, ); diff --git a/app/components/Views/confirmations/legacy/Approval/index.js b/app/components/Views/confirmations/legacy/Approval/index.js index d92f28ab8c86..fc4846615a5a 100644 --- a/app/components/Views/confirmations/legacy/Approval/index.js +++ b/app/components/Views/confirmations/legacy/Approval/index.js @@ -459,7 +459,6 @@ class Approval extends PureComponent { }; onLedgerConfirmation = (approve, transactionId, gaParams) => { - const { TransactionController } = Engine.context; try { //manual cancel from UI when transaction is awaiting from ledger confirmation if (!approve) { @@ -470,8 +469,6 @@ class Approval extends PureComponent { this.#transactionFinishedListener, ); - TransactionController.cancelTransaction(transactionId); - this.showWalletConnectNotification(); this.props.metrics.trackEvent( diff --git a/app/components/Views/confirmations/legacy/Approve/index.js b/app/components/Views/confirmations/legacy/Approve/index.js index c09f82bef14d..867e4b10be23 100644 --- a/app/components/Views/confirmations/legacy/Approve/index.js +++ b/app/components/Views/confirmations/legacy/Approve/index.js @@ -468,7 +468,6 @@ class Approve extends PureComponent { onLedgerConfirmation = (approve, transactionId, gaParams) => { const { metrics } = this.props; - const { TransactionController } = Engine.context; try { //manual cancel from UI when transaction is awaiting from ledger confirmation if (!approve) { @@ -479,8 +478,6 @@ class Approve extends PureComponent { this.#transactionFinishedSubscription, ); - TransactionController.cancelTransaction(transactionId); - metrics.trackEvent( metrics .createEventBuilder(MetaMetricsEvents.APPROVAL_CANCELLED) diff --git a/app/components/Views/confirmations/legacy/ApproveView/Approve/index.js b/app/components/Views/confirmations/legacy/ApproveView/Approve/index.js index 79f0dddce28b..62360007348d 100644 --- a/app/components/Views/confirmations/legacy/ApproveView/Approve/index.js +++ b/app/components/Views/confirmations/legacy/ApproveView/Approve/index.js @@ -468,7 +468,7 @@ class Approve extends PureComponent { onLedgerConfirmation = (approve, transactionId, gaParams) => { const { metrics } = this.props; - const { TransactionController } = Engine.context; + try { //manual cancel from UI when transaction is awaiting from ledger confirmation if (!approve) { @@ -479,8 +479,6 @@ class Approve extends PureComponent { this.#transactionFinishedSubscription, ); - TransactionController.cancelTransaction(transactionId); - metrics.trackEvent( metrics .createEventBuilder(MetaMetricsEvents.APPROVAL_CANCELLED) diff --git a/app/components/Views/confirmations/legacy/SendFlow/Confirm/index.js b/app/components/Views/confirmations/legacy/SendFlow/Confirm/index.js index f68a320fd4f7..e5e5d1c918a4 100644 --- a/app/components/Views/confirmations/legacy/SendFlow/Confirm/index.js +++ b/app/components/Views/confirmations/legacy/SendFlow/Confirm/index.js @@ -925,13 +925,11 @@ class Confirm extends PureComponent { assetType, gaParams, ) => { - const { TransactionController } = Engine.context; + const { navigation } = this.props; // Manual cancel from UI or rejected from ledger device. try { - if (!approve) { - TransactionController.cancelTransaction(transactionMeta.id); - } else { + if (approve) { await new Promise((resolve) => resolve(result)); if (transactionMeta.error) { diff --git a/app/components/Views/confirmations/legacy/SendFlow/Confirm/utils.test.ts b/app/components/Views/confirmations/legacy/SendFlow/Confirm/utils.test.ts index b420188ed1a0..781056203c65 100644 --- a/app/components/Views/confirmations/legacy/SendFlow/Confirm/utils.test.ts +++ b/app/components/Views/confirmations/legacy/SendFlow/Confirm/utils.test.ts @@ -29,11 +29,13 @@ describe('updateTransactionToMaxValue', () => { // Calculate expected max transaction value const accountBalanceBN = new BN('2386f26fc10000', 16); // 0.1 ether in wei - const transactionFeeMax = new BN(toWei('0.01', 'ether'), 10); - const expectedMaxTransactionValueBN = - accountBalanceBN.sub(transactionFeeMax); - const expectedMaxTransactionValueHex = - '0x' + expectedMaxTransactionValueBN.toString(16); + const transactionFeeMax = toWei('0.01', 'ether'); + const expectedMaxTransactionValueBN = accountBalanceBN.sub( + new BN(transactionFeeMax.toString()), + ); + const expectedMaxTransactionValueHex = `0x${expectedMaxTransactionValueBN.toString( + 16, + )}`; // Check if setTransactionValue was called with the correct value expect(setTransactionValue).toHaveBeenCalledWith( diff --git a/app/components/Views/confirmations/legacy/SendFlow/Confirm/utils.ts b/app/components/Views/confirmations/legacy/SendFlow/Confirm/utils.ts index 3f5107e76f4e..e6169e261a94 100644 --- a/app/components/Views/confirmations/legacy/SendFlow/Confirm/utils.ts +++ b/app/components/Views/confirmations/legacy/SendFlow/Confirm/utils.ts @@ -28,7 +28,8 @@ export const updateTransactionToMaxValue = async ({ : legacyGasTransaction; const accountBalanceBN = new BN(remove0x(accountBalance), 16); - const transactionFeeMax = new BN(toWei(gasFeeMaxNative, 'ether'), 16); + const gasFeeInWei = toWei(gasFeeMaxNative, 'ether').toString(); + const transactionFeeMax = new BN(gasFeeInWei); const maxTransactionValueBN = accountBalanceBN.sub(transactionFeeMax); diff --git a/app/core/Ledger/Ledger.ts b/app/core/Ledger/Ledger.ts index 5596c35be256..fc655bb10ce8 100644 --- a/app/core/Ledger/Ledger.ts +++ b/app/core/Ledger/Ledger.ts @@ -38,7 +38,6 @@ export const withLedgerKeyring = async <CallbackResult = void>( const keyringController = Engine.context.KeyringController; return await keyringController.withKeyring( { type: ExtendedKeyringTypes.ledger }, - // @ts-expect-error The Ledger keyring is not compatible with our keyring type yet operation, // TODO: Refactor this to stop creating the keyring on-demand // Instead create it only in response to an explicit user action, and do diff --git a/app/store/migrations/029.ts b/app/store/migrations/029.ts index af4f1ebf1ba1..9a1728b088f1 100644 --- a/app/store/migrations/029.ts +++ b/app/store/migrations/029.ts @@ -2,7 +2,6 @@ import { toHex } from '@metamask/controller-utils'; import { Hex, hasProperty, isObject } from '@metamask/utils'; import { regex } from '../../../app/util/regex'; -//@ts-expect-error - This error is expected, but ethereumjs-util exports this function import { isHexString } from 'ethereumjs-util'; import { TransactionParams } from '@metamask/transaction-controller'; import { captureException } from '@sentry/react-native'; @@ -466,13 +465,13 @@ export default async function migrate(stateAsync: unknown) { if (Array.isArray(transactionControllerState.transactions)) { transactionControllerState.transactions.forEach( (transaction: TransactionParams, index: number) => { - if (transaction && !isHexString(transaction.chainId)) { + if (transaction?.chainId && !isHexString(transaction.chainId)) { if ( Array.isArray(transactionControllerState.transactions) && isObject(transactionControllerState.transactions[index]) ) { transactionControllerState.transactions[index].chainId = toHex( - transaction.chainId as string, + transaction.chainId, ); } } diff --git a/app/store/migrations/031.ts b/app/store/migrations/031.ts index ba4b06ca1192..0ad5dcdf64e3 100644 --- a/app/store/migrations/031.ts +++ b/app/store/migrations/031.ts @@ -6,7 +6,6 @@ import { TokensControllerState, } from '@metamask/assets-controllers'; import { toHex } from '@metamask/controller-utils'; -//@ts-expect-error - This error is expected, but ethereumjs-util exports this function import { isHexString } from 'ethereumjs-util'; /** diff --git a/app/store/migrations/072.ts b/app/store/migrations/072.ts index 5f7b172e0d70..934c231676ad 100644 --- a/app/store/migrations/072.ts +++ b/app/store/migrations/072.ts @@ -1,7 +1,7 @@ import { captureException } from '@sentry/react-native'; import { hasProperty, isObject } from '@metamask/utils'; import { type NetworkConfiguration, RpcEndpointType } from '@metamask/network-controller'; -import { +import { ChainId, BuiltInNetworkName, NetworkNickname, @@ -62,7 +62,7 @@ const migration = (state: unknown): unknown => { // Regardless if the network already exists, we will overwrite it with our default MegaETH configuration. state.engine.backgroundState.NetworkController.networkConfigurationsByChainId[ megaethTestnetChainId - ] = megaethTestnetConfiguration + ] = megaethTestnetConfiguration; } return state; } catch (error) { diff --git a/app/util/address/index.ts b/app/util/address/index.ts index 2e000d1bf0c9..0b4f433219c3 100644 --- a/app/util/address/index.ts +++ b/app/util/address/index.ts @@ -3,7 +3,6 @@ import { isValidAddress, addHexPrefix, isValidChecksumAddress, - //@ts-expect-error - This error is expected, but ethereumjs-util exports this function isHexPrefixed, } from 'ethereumjs-util'; import punycode from 'punycode/punycode'; @@ -33,15 +32,21 @@ import { selectChainId } from '../../selectors/networkController'; import { store } from '../../store'; import { regex } from '../../../app/util/regex'; import Logger from '../../../app/util/Logger'; -import { InternalAccount } from '@metamask/keyring-internal-api'; -import { AddressBookControllerState } from '@metamask/address-book-controller'; -import { NetworkType, toChecksumHexAddress } from '@metamask/controller-utils'; -import { NetworkClientId, NetworkState } from '@metamask/network-controller'; +import type { InternalAccount } from '@metamask/keyring-internal-api'; +import type { AddressBookControllerState } from '@metamask/address-book-controller'; +import { + type NetworkType, + toChecksumHexAddress, +} from '@metamask/controller-utils'; +import type { + NetworkClientId, + NetworkState, +} from '@metamask/network-controller'; import { AccountImportStrategy, KeyringTypes, } from '@metamask/keyring-controller'; -import { Hex, isHexString } from '@metamask/utils'; +import { type Hex, isHexString } from '@metamask/utils'; import PREINSTALLED_SNAPS from '../../lib/snaps/preinstalled-snaps'; const { diff --git a/app/util/transactions/index.test.ts b/app/util/transactions/index.test.ts index 5c7a4a77d0ed..e006561b1b6e 100644 --- a/app/util/transactions/index.test.ts +++ b/app/util/transactions/index.test.ts @@ -1181,7 +1181,7 @@ describe('Transactions utils :: isApprovalTransaction', () => { }); describe('Transactions utils :: getTransactionReviewActionKey', () => { - const transaction = { to: '0xContractAddress' }; + const transaction = { to: '0x1234567890123456789012345678901234567890' }; const chainId = '1'; it('returns `Unknown Method` review action key when transaction action key exists', async () => { const expectedReviewActionKey = 'Unknown Method'; diff --git a/package.json b/package.json index 3e7aff2551b3..ec14ae1cbeed 100644 --- a/package.json +++ b/package.json @@ -146,13 +146,15 @@ "undici": "5.28.5", "**/@ethersproject/signing-key/elliptic": "^6.6.1", "**/@walletconnect/utils/elliptic": "^6.6.1", + "@metamask/keyring-controller/@ethereumjs/tx": "npm:@ethereumjs/tx@5.4.0", + "@keystonehq/metamask-airgapped-keyring": "^0.15.2", "metro/image-size": "^1.2.1" }, "dependencies": { "@config-plugins/detox": "^8.0.0", "@consensys/on-ramp-sdk": "^2.0.14", - "@keystonehq/bc-ur-registry-eth": "^0.19.1", - "@keystonehq/metamask-airgapped-keyring": "^0.13.1", + "@keystonehq/bc-ur-registry-eth": "^0.21.0", + "@keystonehq/metamask-airgapped-keyring": "^0.15.2", "@keystonehq/ur-decoder": "^0.12.2", "@ledgerhq/react-native-hw-transport-ble": "^6.33.2", "@metamask/accounts-controller": "^27.0.0", @@ -170,7 +172,7 @@ "@metamask/eth-hd-keyring": "^12.1.0", "@metamask/eth-json-rpc-filters": "^9.0.0", "@metamask/eth-json-rpc-middleware": "^15.0.0", - "@metamask/eth-ledger-bridge-keyring": "8.0.3", + "@metamask/eth-ledger-bridge-keyring": "^11.0.3", "@metamask/eth-query": "^4.0.0", "@metamask/eth-sig-util": "^8.0.0", "@metamask/eth-snap-keyring": "^12.1.1", @@ -278,7 +280,7 @@ "eth-ens-namehash": "2.0.8", "eth-url-parser": "1.0.4", "ethereumjs-abi": "^0.6.8", - "ethereumjs-util": "^6.2.0", + "ethereumjs-util": "^7.0.10", "ethers": "^5.0.14", "ethjs-ens": "2.0.1", "eventemitter2": "^6.4.9", @@ -623,4 +625,4 @@ } }, "packageManager": "yarn@1.22.22" -} +} \ No newline at end of file diff --git a/yarn.lock b/yarn.lock index 7d22212edf18..c0639be020a4 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1845,7 +1845,7 @@ "@ethereumjs/util" "^8.1.0" crc-32 "^1.2.0" -"@ethereumjs/common@^4.4.0": +"@ethereumjs/common@^4.1.0", "@ethereumjs/common@^4.4.0": version "4.4.0" resolved "https://registry.yarnpkg.com/@ethereumjs/common/-/common-4.4.0.tgz#fba41612f527a815bf304e98653d6b5fc5d6d4de" integrity sha512-Fy5hMqF6GsE6DpYTyqdDIJPJgUtDn4dL120zKw+Pswuo+iLyBsEYuSyzMw6NVzD2vDzcBG9fE4+qX4X2bPc97w== @@ -1857,12 +1857,22 @@ resolved "https://registry.yarnpkg.com/@ethereumjs/rlp/-/rlp-4.0.1.tgz#626fabfd9081baab3d0a3074b0c7ecaf674aaa41" integrity sha512-tqsQiBQDQdmPWE1xkkBq4rlSW5QZpLOUJ5RJh2/9fug+q9tnUhuZoVLk7s0scUIKTOzEtR72DFBXI4WiZcMpvw== -"@ethereumjs/rlp@^5.0.2": +"@ethereumjs/rlp@^5.0.1", "@ethereumjs/rlp@^5.0.2": version "5.0.2" resolved "https://registry.yarnpkg.com/@ethereumjs/rlp/-/rlp-5.0.2.tgz#c89bd82f2f3bec248ab2d517ae25f5bbc4aac842" integrity sha512-DziebCdg4JpGlEqEdGgXmjqcFoJi+JGulUXwEjsZGAscAQ7MyD/7LE/GVCP29vEQxKc7AAwjT3A2ywHp2xfoCA== -"@ethereumjs/tx@^4.0.2", "@ethereumjs/tx@^4.2.0": +"@ethereumjs/tx@5.1.0": + version "5.1.0" + resolved "https://registry.yarnpkg.com/@ethereumjs/tx/-/tx-5.1.0.tgz#c61a9048ec09fff360b18188224aae90c370e57f" + integrity sha512-VUhw2+4yXArJZRWhPjmZFrN4WUjUo0qUZUszVpW2KzsGlqCFf67kwJcH9Rca5eS0CRHjr2qHJLpvYOjNuaXVdA== + dependencies: + "@ethereumjs/common" "^4.1.0" + "@ethereumjs/rlp" "^5.0.1" + "@ethereumjs/util" "^9.0.1" + ethereum-cryptography "^2.1.2" + +"@ethereumjs/tx@^4.2.0": version "4.2.0" resolved "https://registry.yarnpkg.com/@ethereumjs/tx/-/tx-4.2.0.tgz#5988ae15daf5a3b3c815493bc6b495e76009e853" integrity sha512-1nc6VO4jtFd172BbSnTnDQVr9IYBFl1y4xPzZdtkrkKIncBCkdbgfdRV+MiTkJYAtTxvV12GRZLqBFT1PNK6Yw== @@ -1872,7 +1882,7 @@ "@ethereumjs/util" "^8.1.0" ethereum-cryptography "^2.0.0" -"@ethereumjs/tx@^5.2.1", "@ethereumjs/tx@^5.4.0": +"@ethereumjs/tx@^5.2.1", "@ethereumjs/tx@^5.4.0", "@ethereumjs/tx@npm:@ethereumjs/tx@5.4.0": version "5.4.0" resolved "https://registry.yarnpkg.com/@ethereumjs/tx/-/tx-5.4.0.tgz#6f47894cc3e2d4e63d87c62b41ed7e8180a1de58" integrity sha512-SCHnK7m/AouZ7nyoR0MEXw1OO/tQojSbp88t8oxhwes5iZkZCtfFdUrJaiIb72qIpH2FVw6s1k1uP7LXuH7PsA== @@ -1882,6 +1892,14 @@ "@ethereumjs/util" "^9.1.0" ethereum-cryptography "^2.2.1" +"@ethereumjs/util@9.1.0", "@ethereumjs/util@^9.0.1", "@ethereumjs/util@^9.0.2", "@ethereumjs/util@^9.0.3", "@ethereumjs/util@^9.1.0": + version "9.1.0" + resolved "https://registry.yarnpkg.com/@ethereumjs/util/-/util-9.1.0.tgz#75e3898a3116d21c135fa9e29886565609129bce" + integrity sha512-XBEKsYqLGXLah9PNJbgdkigthkG7TAGvlD/sH12beMXEyHDyigfcbdvHhmLyDWgDyOJn4QwiQUaF7yeuhnjdog== + dependencies: + "@ethereumjs/rlp" "^5.0.2" + ethereum-cryptography "^2.2.1" + "@ethereumjs/util@^8.0.0", "@ethereumjs/util@^8.1.0": version "8.1.0" resolved "https://registry.yarnpkg.com/@ethereumjs/util/-/util-8.1.0.tgz#299df97fb6b034e0577ce9f94c7d9d1004409ed4" @@ -1891,14 +1909,6 @@ ethereum-cryptography "^2.0.0" micro-ftch "^0.3.1" -"@ethereumjs/util@^9.0.2", "@ethereumjs/util@^9.1.0": - version "9.1.0" - resolved "https://registry.yarnpkg.com/@ethereumjs/util/-/util-9.1.0.tgz#75e3898a3116d21c135fa9e29886565609129bce" - integrity sha512-XBEKsYqLGXLah9PNJbgdkigthkG7TAGvlD/sH12beMXEyHDyigfcbdvHhmLyDWgDyOJn4QwiQUaF7yeuhnjdog== - dependencies: - "@ethereumjs/rlp" "^5.0.2" - ethereum-cryptography "^2.2.1" - "@ethersproject/abi@5.7.0", "@ethersproject/abi@^5.7.0": version "5.7.0" resolved "https://registry.yarnpkg.com/@ethersproject/abi/-/abi-5.7.0.tgz#b3f3e045bbbeed1af3947335c247ad625a44e449" @@ -4374,12 +4384,13 @@ resolved "https://registry.yarnpkg.com/@keystonehq/alias-sampling/-/alias-sampling-0.1.2.tgz#63af931ffe6500aef4c0d87775a5b279189abf8d" integrity sha512-5ukLB3bcgltgaFfQfYKYwHDUbwHicekYo53fSEa7xhVkAEqsA74kxdIwoBIURmGUtXe3EVIRm4SYlgcrt2Ri0w== -"@keystonehq/base-eth-keyring@^0.14.1": - version "0.14.1" - resolved "https://registry.yarnpkg.com/@keystonehq/base-eth-keyring/-/base-eth-keyring-0.14.1.tgz#b838524678e5d3e70c0f1e9e1089baece6ef5f87" - integrity sha512-rhsbN7YlwWEcaUcwapApZe4EC/xQFJVnU0CpzLN0r9b2nqyEp8q9oz42jPr8W6vXHD72bezAZKMvqU/6rCecQQ== +"@keystonehq/base-eth-keyring@0.15.1": + version "0.15.1" + resolved "https://registry.yarnpkg.com/@keystonehq/base-eth-keyring/-/base-eth-keyring-0.15.1.tgz#360b6df8dfdc87a3021256fe1173d9d7516ad1ae" + integrity sha512-YaHTT5tJwTR4OUpn5nc3v4pZxNSqXZH3TON736fwTEZ+iIofzFTIW4NRBQ/0rQ/S2Y785T92D+imZH/fTVhUpw== dependencies: - "@ethereumjs/tx" "^4.0.2" + "@ethereumjs/rlp" "^4.0.1" + "@ethereumjs/tx" "5.1.0" "@ethereumjs/util" "^8.0.0" "@keystonehq/bc-ur-registry-eth" "^0.19.1" hdkey "^2.0.1" @@ -4396,6 +4407,16 @@ hdkey "^2.0.1" uuid "^8.3.2" +"@keystonehq/bc-ur-registry-eth@^0.21.0": + version "0.21.0" + resolved "https://registry.yarnpkg.com/@keystonehq/bc-ur-registry-eth/-/bc-ur-registry-eth-0.21.0.tgz#bc390c10dacfff4dd51aba6b0a2f56c5af0592ad" + integrity sha512-zINEpmaH+oPwqY6E0qKUvm13AhdOb+BIJ9OVWTGUDhUNltFH4dehicJv6bCg8gTSnBGc9ghWzpGRw5+PflGtMg== + dependencies: + "@ethereumjs/util" "^9.0.3" + "@keystonehq/bc-ur-registry" "^0.7.0" + hdkey "^2.0.1" + uuid "^8.3.2" + "@keystonehq/bc-ur-registry-eth@^0.6.12": version "0.6.14" resolved "https://registry.yarnpkg.com/@keystonehq/bc-ur-registry-eth/-/bc-ur-registry-eth-0.6.14.tgz#4b8c34d653278524eb574a2879910072ee621ae0" @@ -4424,25 +4445,24 @@ bs58check "^2.1.2" tslib "^2.3.0" -"@keystonehq/metamask-airgapped-keyring@^0.13.1": - version "0.13.1" - resolved "https://registry.yarnpkg.com/@keystonehq/metamask-airgapped-keyring/-/metamask-airgapped-keyring-0.13.1.tgz#286be5bd2fa1b2a43dc749c4501270cc70701e9d" - integrity sha512-muEBn/EXHCMtW2EJpLYRCW+3QVyLVCn/BHLPOxqx+rEOJnOZZexMR91fmCLSYo86v27DQMs76nlsnHc2WcGBng== +"@keystonehq/bc-ur-registry@^0.7.0": + version "0.7.0" + resolved "https://registry.yarnpkg.com/@keystonehq/bc-ur-registry/-/bc-ur-registry-0.7.0.tgz#d0322d6a5cd2796dd0e40662c47b5a95ec917d9a" + integrity sha512-E6NUd6Y+YYM+IcYGOEXfO9+MU1s63Qjm8brtHftvNhxbdXhGtTYIsa4FQmqZ6q34q91bMkMqUQFsQYPmIxcxfg== dependencies: - "@ethereumjs/tx" "^4.0.2" - "@keystonehq/base-eth-keyring" "^0.14.1" - "@keystonehq/bc-ur-registry-eth" "^0.19.1" - "@metamask/obs-store" "^7.0.0" - rlp "^2.2.6" - uuid "^8.3.2" + "@ngraveio/bc-ur" "^1.1.5" + bs58check "^2.1.2" + tslib "^2.3.0" -"@keystonehq/metamask-airgapped-keyring@^0.14.1": - version "0.14.1" - resolved "https://registry.yarnpkg.com/@keystonehq/metamask-airgapped-keyring/-/metamask-airgapped-keyring-0.14.1.tgz#1b797f7ad40fc908e411f201694fb31ebaa564d6" - integrity sha512-ffBa+LMkZUMj0KKW/YYoncxuUqsnBPn9xss1kHEgvva5GviylMcosbVyV2AAbtnRii1VK6wTSWzAzUdR8giq3A== +"@keystonehq/metamask-airgapped-keyring@^0.14.1", "@keystonehq/metamask-airgapped-keyring@^0.15.2": + version "0.15.2" + resolved "https://registry.yarnpkg.com/@keystonehq/metamask-airgapped-keyring/-/metamask-airgapped-keyring-0.15.2.tgz#d4b8aa807458124d437b3537253d570231b82bac" + integrity sha512-csC7m+7CbWwl2Qhm41/apOAR1KOkLdjXxChfKVRR+k4+KCOMQvUnzksnymhAtnkEOiePGjpf9ZuGeJtYD4h52w== dependencies: - "@ethereumjs/tx" "^4.0.2" - "@keystonehq/base-eth-keyring" "^0.14.1" + "@ethereumjs/rlp" "^4.0.1" + "@ethereumjs/tx" "5.1.0" + "@ethereumjs/util" "9.1.0" + "@keystonehq/base-eth-keyring" "0.15.1" "@keystonehq/bc-ur-registry-eth" "^0.19.1" "@metamask/obs-store" "^9.0.0" rlp "^2.2.6" @@ -4961,16 +4981,16 @@ "@metamask/utils" "^11.1.0" uuid "^8.3.2" -"@metamask/eth-ledger-bridge-keyring@8.0.3": - version "8.0.3" - resolved "https://registry.yarnpkg.com/@metamask/eth-ledger-bridge-keyring/-/eth-ledger-bridge-keyring-8.0.3.tgz#5b39f5d76f7741e838bb7f21de902d41e5e71370" - integrity sha512-yQSxmsH/DtSjSXp5WT7seklsVfEjeOVu9E1PP0y/GIQoFJqhEIIt7WIf6Qz6KryY1jVOethnRcXMBecXSgVk/A== +"@metamask/eth-ledger-bridge-keyring@^11.0.3": + version "11.0.3" + resolved "https://registry.yarnpkg.com/@metamask/eth-ledger-bridge-keyring/-/eth-ledger-bridge-keyring-11.0.3.tgz#9b646626e833d553ce174e35d2f7217aee3253ce" + integrity sha512-eezvOIpBJi3XrClx3vPG6AfomoaG6FKUHsQ1o1H+L0Czj5n036TioubzYThx4PWI5+cWZCw4r8X8uGKdCkjAcw== dependencies: "@ethereumjs/rlp" "^5.0.2" - "@ethereumjs/tx" "^4.2.0" - "@ethereumjs/util" "^8.1.0" + "@ethereumjs/tx" "^5.4.0" + "@ethereumjs/util" "^9.1.0" "@ledgerhq/hw-app-eth" "^6.42.0" - "@metamask/eth-sig-util" "^8.1.2" + "@metamask/eth-sig-util" "^8.2.0" hdkey "^2.1.0" "@metamask/eth-query@^4.0.0": @@ -5384,14 +5404,6 @@ once "^1.4.0" readable-stream "^3.6.2" -"@metamask/obs-store@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@metamask/obs-store/-/obs-store-7.0.0.tgz#6cae5f28306bb3e83a381bc9ae22682316095bd3" - integrity sha512-Tr61Uu9CGXkCg5CZwOYRMQERd+y6fbtrtLd/PzDTPHO5UJpmSbU+7MPcQK7d1DwZCOCeCIvhmZSUCvYliC8uGw== - dependencies: - "@metamask/safe-event-emitter" "^2.0.0" - through2 "^2.0.3" - "@metamask/obs-store@^9.0.0": version "9.0.0" resolved "https://registry.yarnpkg.com/@metamask/obs-store/-/obs-store-9.0.0.tgz#fa50c988b4635817ff0454bc9763b1cf6b37d9e9" @@ -5601,11 +5613,6 @@ "@metamask/utils" "^11.0.1" fast-safe-stringify "^2.0.6" -"@metamask/safe-event-emitter@^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@metamask/safe-event-emitter/-/safe-event-emitter-2.0.0.tgz#af577b477c683fad17c619a78208cede06f9605c" - integrity sha512-/kSXhY692qiV1MXu6EeOZvg5nECLclxNXcKCxJ3cXQgYuRymRHpdx/t7JXfsK+JLjwA1e1c1/SBrlQYpusC29Q== - "@metamask/safe-event-emitter@^3.0.0", "@metamask/safe-event-emitter@^3.1.1": version "3.1.1" resolved "https://registry.yarnpkg.com/@metamask/safe-event-emitter/-/safe-event-emitter-3.1.1.tgz#e89b840a7af8097a8ed4953d8dc8470d1302d3ef" @@ -16435,7 +16442,7 @@ ethereumjs-abi@^0.6.8: bn.js "^4.11.8" ethereumjs-util "^6.0.0" -ethereumjs-util@^6.0.0, ethereumjs-util@^6.2.0: +ethereumjs-util@^6.0.0: version "6.2.1" resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-6.2.1.tgz#fcb4e4dd5ceacb9d2305426ab1a5cd93e3163b69" integrity sha512-W2Ktez4L01Vexijrm5EB6w7dg4n/TgpoYU4avuT5T3Vmnw/eCRtiBrJfQYS/DCSvDIOLn2k57GcHdeBcgVxAqw== @@ -16448,7 +16455,7 @@ ethereumjs-util@^6.0.0, ethereumjs-util@^6.2.0: ethjs-util "0.1.6" rlp "^2.2.3" -ethereumjs-util@^7.0.8, ethereumjs-util@^7.1.2: +ethereumjs-util@^7.0.10, ethereumjs-util@^7.0.8, ethereumjs-util@^7.1.2: version "7.1.5" resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-7.1.5.tgz#9ecf04861e4fbbeed7465ece5f23317ad1129181" integrity sha512-SDl5kKrQAudFBUe5OJM9Ac6WmMyYmXX/6sTmLZ3ffG2eY6ZIGBes3pEDxNN6V72WyOw4CPD5RomKdsa8DAAwLg== @@ -27358,7 +27365,7 @@ through2@3.0.1: dependencies: readable-stream "2 || 3" -through2@^2.0.0, through2@^2.0.1, through2@^2.0.3: +through2@^2.0.0, through2@^2.0.1: version "2.0.5" resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== From 425269e9a3d0c078966295c4c1044d126d4fb51f Mon Sep 17 00:00:00 2001 From: metamaskbot <metamaskbot@users.noreply.github.com> Date: Fri, 18 Apr 2025 22:08:28 +0000 Subject: [PATCH 143/473] Bump version number to 1711 --- android/app/build.gradle | 2 +- bitrise.yml | 4 ++-- ios/MetaMask.xcodeproj/project.pbxproj | 12 ++++++------ 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/android/app/build.gradle b/android/app/build.gradle index 9f68478f2116..00eb922d95b0 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -179,7 +179,7 @@ android { minSdkVersion rootProject.ext.minSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion versionName "7.45.0" - versionCode 1689 + versionCode 1711 testBuildType System.getProperty('testBuildType', 'debug') missingDimensionStrategy 'react-native-camera', 'general' testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" diff --git a/bitrise.yml b/bitrise.yml index 4597808534e1..45fa2b14c359 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -2235,13 +2235,13 @@ app: VERSION_NAME: 7.45.0 - opts: is_expand: false - VERSION_NUMBER: 1689 + VERSION_NUMBER: 1711 - opts: is_expand: false FLASK_VERSION_NAME: 7.45.0 - opts: is_expand: false - FLASK_VERSION_NUMBER: 1689 + FLASK_VERSION_NUMBER: 1711 - opts: is_expand: false ANDROID_APK_LINK: '' diff --git a/ios/MetaMask.xcodeproj/project.pbxproj b/ios/MetaMask.xcodeproj/project.pbxproj index b2591e44005b..7780df2d9117 100644 --- a/ios/MetaMask.xcodeproj/project.pbxproj +++ b/ios/MetaMask.xcodeproj/project.pbxproj @@ -1261,7 +1261,7 @@ CODE_SIGN_IDENTITY = "Apple Development"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1689; + CURRENT_PROJECT_VERSION = 1711; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = 48XVW22RCG; @@ -1330,7 +1330,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMask.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1689; + CURRENT_PROJECT_VERSION = 1711; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 48XVW22RCG; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 48XVW22RCG; @@ -1395,7 +1395,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMaskDebug.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1689; + CURRENT_PROJECT_VERSION = 1711; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = 48XVW22RCG; @@ -1461,7 +1461,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMask.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1689; + CURRENT_PROJECT_VERSION = 1711; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 48XVW22RCG; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 48XVW22RCG; @@ -1620,7 +1620,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMaskDebug.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1689; + CURRENT_PROJECT_VERSION = 1711; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = 48XVW22RCG; @@ -1689,7 +1689,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMask.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1689; + CURRENT_PROJECT_VERSION = 1711; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 48XVW22RCG; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 48XVW22RCG; From 7edb1c7e69137bc9c01b50f563f2de689f5fa661 Mon Sep 17 00:00:00 2001 From: "runway-github[bot]" <73448015+runway-github[bot]@users.noreply.github.com> Date: Fri, 18 Apr 2025 16:18:48 -0600 Subject: [PATCH 144/473] chore(runway): cherry-pick fix: cp-7.45.0 STAKE-1010: fix missing staking data if app loads with non-Ethereum mainnet network selected (#14746) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - fix: cp-7.45.0 STAKE-1010: fix missing staking data if app loads with non-Ethereum mainnet network selected (#14709) <!-- Please submit this PR as a draft initially. Do not mark it as "Ready for review" until the template has been completely filled out, and PR status checks have passed at least once. --> ## **Description** <!-- Write a short description of the changes included in this pull request, also include relevant motivation and context. Have in mind the following questions: 1. What is the reason for the change? 2. What is the improvement/solution? --> This PR fixes an issue where staking data would not be available until a user manually selects "Ethereum mainnet" from the network picker. For example, if a user had Base as their active network and re-opened the app staking data wouldn't be available. ## **Related issues** Jira ticket: [STAKE-1010: Staked ETH info not loaded in ETH token page until user has selected 'Ethereum' in network picker](https://consensyssoftware.atlassian.net/browse/STAKE-1010) ## **Manual testing steps** 1. Open the wallet and select Base as the active network 2. Close the app and remove from background apps switcher 3. Reopen the wallet. Base should still be set as the active network. 4. Click on Ethereum or Staked Ethereum from the token list **If you have staked ETH** 5. You should see your balance and "your earnings" section **If you don't have staked ETH** 5. You should see the "Stake ETH and earn" CTA with a non `0.0%` reward rate. <!-- If applicable, add screenshots and/or recordings to visualize the before and after of your change. --> ## **Pre-merge author checklist** - [x] I’ve followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile Coding Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [x] I've completed the PR template to the best of my ability - [ ] I’ve included tests if applicable - [ ] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [x] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. ## **Pre-merge reviewer checklist** - [ ] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [ ] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots. [260e5d7](https://github.com/MetaMask/metamask-mobile/commit/260e5d7a63084e3d9209502d29b90f3eb0b861a9) Co-authored-by: Matthew Grainger <46547583+Matt561@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index ec14ae1cbeed..dbeeaa253800 100644 --- a/package.json +++ b/package.json @@ -168,7 +168,7 @@ "@metamask/composable-controller": "^11.0.0", "@metamask/controller-utils": "^11.7.0", "@metamask/design-tokens": "^7.0.0", - "@metamask/earn-controller": "^0.11.0", + "@metamask/earn-controller": "^0.12.0", "@metamask/eth-hd-keyring": "^12.1.0", "@metamask/eth-json-rpc-filters": "^9.0.0", "@metamask/eth-json-rpc-middleware": "^15.0.0", diff --git a/yarn.lock b/yarn.lock index c0639be020a4..18b26659b419 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4870,10 +4870,10 @@ resolved "https://registry.yarnpkg.com/@metamask/design-tokens/-/design-tokens-7.0.0.tgz#3434c19fb52a0cba15242085867236c3ec1c2aea" integrity sha512-M92BTgygZ4zteKL0tlWnXMpeWUY2cyraP1g+f6xIH67litdSu5iUyp2nhzVIlzHwGR+ycQAaicSscKyKm3aUVQ== -"@metamask/earn-controller@^0.11.0": - version "0.11.0" - resolved "https://registry.npmjs.org/@metamask/earn-controller/-/earn-controller-0.11.0.tgz#47da160db26efd4b6b3e75dfd3c430541fe4b9b0" - integrity sha512-uxiuMYPd1pntHV3s4fq7At4fFSVlJ5LyRjKMVy4ySj+brsLpi8uAaD21ci4AEpvx3mB3NPCyxzCdKYwVRurtIw== +"@metamask/earn-controller@^0.12.0": + version "0.12.0" + resolved "https://registry.npmjs.org/@metamask/earn-controller/-/earn-controller-0.12.0.tgz#3cdbeef52f1ce58f914a7160933ea11b4ea3bd31" + integrity sha512-jgGmDULSdhJHpyN+/wEFbcxO2HW3PHwiHQQ/4NsleISYcnRyWxEnsjtPOkjb5RK1YAViKh6tOiK8mv91gnbYQQ== dependencies: "@ethersproject/providers" "^5.7.0" "@metamask/base-controller" "^8.0.0" From a573592d5e1652085a63be05927b45912a021748 Mon Sep 17 00:00:00 2001 From: metamaskbot <metamaskbot@users.noreply.github.com> Date: Sat, 19 Apr 2025 00:51:38 +0000 Subject: [PATCH 145/473] Bump version number to 1712 --- android/app/build.gradle | 2 +- bitrise.yml | 4 ++-- ios/MetaMask.xcodeproj/project.pbxproj | 12 ++++++------ 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/android/app/build.gradle b/android/app/build.gradle index 00eb922d95b0..fa7d929af6d0 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -179,7 +179,7 @@ android { minSdkVersion rootProject.ext.minSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion versionName "7.45.0" - versionCode 1711 + versionCode 1712 testBuildType System.getProperty('testBuildType', 'debug') missingDimensionStrategy 'react-native-camera', 'general' testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" diff --git a/bitrise.yml b/bitrise.yml index 45fa2b14c359..e9af7d3ecc63 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -2235,13 +2235,13 @@ app: VERSION_NAME: 7.45.0 - opts: is_expand: false - VERSION_NUMBER: 1711 + VERSION_NUMBER: 1712 - opts: is_expand: false FLASK_VERSION_NAME: 7.45.0 - opts: is_expand: false - FLASK_VERSION_NUMBER: 1711 + FLASK_VERSION_NUMBER: 1712 - opts: is_expand: false ANDROID_APK_LINK: '' diff --git a/ios/MetaMask.xcodeproj/project.pbxproj b/ios/MetaMask.xcodeproj/project.pbxproj index 7780df2d9117..4cb153d1c4d6 100644 --- a/ios/MetaMask.xcodeproj/project.pbxproj +++ b/ios/MetaMask.xcodeproj/project.pbxproj @@ -1261,7 +1261,7 @@ CODE_SIGN_IDENTITY = "Apple Development"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1711; + CURRENT_PROJECT_VERSION = 1712; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = 48XVW22RCG; @@ -1330,7 +1330,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMask.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1711; + CURRENT_PROJECT_VERSION = 1712; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 48XVW22RCG; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 48XVW22RCG; @@ -1395,7 +1395,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMaskDebug.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1711; + CURRENT_PROJECT_VERSION = 1712; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = 48XVW22RCG; @@ -1461,7 +1461,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMask.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1711; + CURRENT_PROJECT_VERSION = 1712; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 48XVW22RCG; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 48XVW22RCG; @@ -1620,7 +1620,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMaskDebug.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1711; + CURRENT_PROJECT_VERSION = 1712; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = 48XVW22RCG; @@ -1689,7 +1689,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMask.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1711; + CURRENT_PROJECT_VERSION = 1712; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 48XVW22RCG; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 48XVW22RCG; From b4d55f925851581aef58feb331d9d15fbc1167ea Mon Sep 17 00:00:00 2001 From: "runway-github[bot]" <73448015+runway-github[bot]@users.noreply.github.com> Date: Sat, 19 Apr 2025 08:59:33 -0600 Subject: [PATCH 146/473] chore(runway): cherry-pick fix: fix solana key in asset list (#14751) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - fix: fix solana key in asset list (#14738) ## **Description** PR fixes app crash when the user creates a solana account and navigates back to main view. ## **Related issues** Fixes: ## **Manual testing steps** 1. Build on flask 2. Create a new solana account 3. Navigate back to the main view and you should not see the app crash ## **Screenshots/Recordings** <!-- If applicable, add screenshots and/or recordings to visualize the before and after of your change. --> ### **Before** <!-- [screenshots/recordings] --> ### **After** <!-- [screenshots/recordings] --> ## **Pre-merge author checklist** - [ ] I’ve followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile Coding Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [ ] I've completed the PR template to the best of my ability - [ ] I’ve included tests if applicable - [ ] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [ ] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. ## **Pre-merge reviewer checklist** - [ ] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [ ] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots. [d4815a3](https://github.com/MetaMask/metamask-mobile/commit/d4815a3cc9a9421d1c26ccd86fa1ae4a87ba351b) Co-authored-by: sahar-fehri <sahar.fehri@consensys.net> --- app/components/UI/Tokens/TokenList/TokenListItem/index.tsx | 4 +++- e2e/specs/ramps/onramp.spec.js | 6 +++--- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/app/components/UI/Tokens/TokenList/TokenListItem/index.tsx b/app/components/UI/Tokens/TokenList/TokenListItem/index.tsx index 2a8a8c1c8e15..7fc03e23bb96 100644 --- a/app/components/UI/Tokens/TokenList/TokenListItem/index.tsx +++ b/app/components/UI/Tokens/TokenList/TokenListItem/index.tsx @@ -100,7 +100,9 @@ export const TokenListItem = React.memo( const styles = createStyles(colors); - const itemAddress = safeToChecksumAddress(asset.address); + const itemAddress = isEvmNetworkSelected + ? safeToChecksumAddress(asset.address) + : asset.address; // Choose values based on multichain or legacy const exchangeRates = multiChainMarketData?.[chainId as Hex]; diff --git a/e2e/specs/ramps/onramp.spec.js b/e2e/specs/ramps/onramp.spec.js index dc471f0f4e95..a82c78f08982 100644 --- a/e2e/specs/ramps/onramp.spec.js +++ b/e2e/specs/ramps/onramp.spec.js @@ -67,8 +67,9 @@ describe(SmokeRamps('Buy Crypto'), () => { await BuildQuoteView.tapCancelButton(); }); - it('should change parameters and select a quote', async () => { - const paymentMethod = device.getPlatform() === 'ios' ? 'Apple Pay' : 'Google Pay'; + it.skip('should change parameters and select a quote', async () => { + const paymentMethod = + device.getPlatform() === 'ios' ? 'Apple Pay' : 'Google Pay'; await TabBarComponent.tapActions(); await WalletActionsBottomSheet.tapBuyButton(); @@ -94,5 +95,4 @@ describe(SmokeRamps('Buy Crypto'), () => { await QuotesView.closeQuotesSection(); await BuildQuoteView.tapCancelButton(); }); - }); From 1cc48ba5d0938375baa9d91b2ddf6171b5f7712c Mon Sep 17 00:00:00 2001 From: metamaskbot <metamaskbot@users.noreply.github.com> Date: Sat, 19 Apr 2025 15:00:41 +0000 Subject: [PATCH 147/473] Bump version number to 1713 --- android/app/build.gradle | 2 +- bitrise.yml | 4 ++-- ios/MetaMask.xcodeproj/project.pbxproj | 12 ++++++------ 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/android/app/build.gradle b/android/app/build.gradle index fa7d929af6d0..04622d414734 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -179,7 +179,7 @@ android { minSdkVersion rootProject.ext.minSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion versionName "7.45.0" - versionCode 1712 + versionCode 1713 testBuildType System.getProperty('testBuildType', 'debug') missingDimensionStrategy 'react-native-camera', 'general' testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" diff --git a/bitrise.yml b/bitrise.yml index e9af7d3ecc63..31855c62334c 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -2235,13 +2235,13 @@ app: VERSION_NAME: 7.45.0 - opts: is_expand: false - VERSION_NUMBER: 1712 + VERSION_NUMBER: 1713 - opts: is_expand: false FLASK_VERSION_NAME: 7.45.0 - opts: is_expand: false - FLASK_VERSION_NUMBER: 1712 + FLASK_VERSION_NUMBER: 1713 - opts: is_expand: false ANDROID_APK_LINK: '' diff --git a/ios/MetaMask.xcodeproj/project.pbxproj b/ios/MetaMask.xcodeproj/project.pbxproj index 4cb153d1c4d6..971598108f92 100644 --- a/ios/MetaMask.xcodeproj/project.pbxproj +++ b/ios/MetaMask.xcodeproj/project.pbxproj @@ -1261,7 +1261,7 @@ CODE_SIGN_IDENTITY = "Apple Development"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1712; + CURRENT_PROJECT_VERSION = 1713; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = 48XVW22RCG; @@ -1330,7 +1330,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMask.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1712; + CURRENT_PROJECT_VERSION = 1713; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 48XVW22RCG; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 48XVW22RCG; @@ -1395,7 +1395,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMaskDebug.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1712; + CURRENT_PROJECT_VERSION = 1713; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = 48XVW22RCG; @@ -1461,7 +1461,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMask.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1712; + CURRENT_PROJECT_VERSION = 1713; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 48XVW22RCG; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 48XVW22RCG; @@ -1620,7 +1620,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMaskDebug.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1712; + CURRENT_PROJECT_VERSION = 1713; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = 48XVW22RCG; @@ -1689,7 +1689,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMask.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1712; + CURRENT_PROJECT_VERSION = 1713; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 48XVW22RCG; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 48XVW22RCG; From 9321c837be04daa9a7bc207b87e359bafe961f3f Mon Sep 17 00:00:00 2001 From: metamaskbot <metamaskbot@users.noreply.github.com> Date: Sun, 20 Apr 2025 00:10:13 +0000 Subject: [PATCH 148/473] Bump version number to 1714 --- android/app/build.gradle | 2 +- bitrise.yml | 4 ++-- ios/MetaMask.xcodeproj/project.pbxproj | 12 ++++++------ 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/android/app/build.gradle b/android/app/build.gradle index 04622d414734..aeaaf7454f37 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -179,7 +179,7 @@ android { minSdkVersion rootProject.ext.minSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion versionName "7.45.0" - versionCode 1713 + versionCode 1714 testBuildType System.getProperty('testBuildType', 'debug') missingDimensionStrategy 'react-native-camera', 'general' testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" diff --git a/bitrise.yml b/bitrise.yml index 31855c62334c..6346c5935c14 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -2235,13 +2235,13 @@ app: VERSION_NAME: 7.45.0 - opts: is_expand: false - VERSION_NUMBER: 1713 + VERSION_NUMBER: 1714 - opts: is_expand: false FLASK_VERSION_NAME: 7.45.0 - opts: is_expand: false - FLASK_VERSION_NUMBER: 1713 + FLASK_VERSION_NUMBER: 1714 - opts: is_expand: false ANDROID_APK_LINK: '' diff --git a/ios/MetaMask.xcodeproj/project.pbxproj b/ios/MetaMask.xcodeproj/project.pbxproj index 971598108f92..235554e98d8e 100644 --- a/ios/MetaMask.xcodeproj/project.pbxproj +++ b/ios/MetaMask.xcodeproj/project.pbxproj @@ -1261,7 +1261,7 @@ CODE_SIGN_IDENTITY = "Apple Development"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1713; + CURRENT_PROJECT_VERSION = 1714; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = 48XVW22RCG; @@ -1330,7 +1330,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMask.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1713; + CURRENT_PROJECT_VERSION = 1714; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 48XVW22RCG; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 48XVW22RCG; @@ -1395,7 +1395,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMaskDebug.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1713; + CURRENT_PROJECT_VERSION = 1714; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = 48XVW22RCG; @@ -1461,7 +1461,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMask.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1713; + CURRENT_PROJECT_VERSION = 1714; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 48XVW22RCG; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 48XVW22RCG; @@ -1620,7 +1620,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMaskDebug.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1713; + CURRENT_PROJECT_VERSION = 1714; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = 48XVW22RCG; @@ -1689,7 +1689,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMask.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1713; + CURRENT_PROJECT_VERSION = 1714; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 48XVW22RCG; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 48XVW22RCG; From f76cb36c1ea7db9a454b2612853be31a246839f4 Mon Sep 17 00:00:00 2001 From: metamaskbot <metamaskbot@users.noreply.github.com> Date: Sun, 20 Apr 2025 00:49:49 +0000 Subject: [PATCH 149/473] Bump version number to 1715 --- android/app/build.gradle | 2 +- bitrise.yml | 4 ++-- ios/MetaMask.xcodeproj/project.pbxproj | 12 ++++++------ 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/android/app/build.gradle b/android/app/build.gradle index aeaaf7454f37..72f3ba7d3da1 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -179,7 +179,7 @@ android { minSdkVersion rootProject.ext.minSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion versionName "7.45.0" - versionCode 1714 + versionCode 1715 testBuildType System.getProperty('testBuildType', 'debug') missingDimensionStrategy 'react-native-camera', 'general' testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" diff --git a/bitrise.yml b/bitrise.yml index 6346c5935c14..3a6a9dc3ac4f 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -2235,13 +2235,13 @@ app: VERSION_NAME: 7.45.0 - opts: is_expand: false - VERSION_NUMBER: 1714 + VERSION_NUMBER: 1715 - opts: is_expand: false FLASK_VERSION_NAME: 7.45.0 - opts: is_expand: false - FLASK_VERSION_NUMBER: 1714 + FLASK_VERSION_NUMBER: 1715 - opts: is_expand: false ANDROID_APK_LINK: '' diff --git a/ios/MetaMask.xcodeproj/project.pbxproj b/ios/MetaMask.xcodeproj/project.pbxproj index 235554e98d8e..d39e128bab18 100644 --- a/ios/MetaMask.xcodeproj/project.pbxproj +++ b/ios/MetaMask.xcodeproj/project.pbxproj @@ -1261,7 +1261,7 @@ CODE_SIGN_IDENTITY = "Apple Development"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1714; + CURRENT_PROJECT_VERSION = 1715; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = 48XVW22RCG; @@ -1330,7 +1330,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMask.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1714; + CURRENT_PROJECT_VERSION = 1715; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 48XVW22RCG; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 48XVW22RCG; @@ -1395,7 +1395,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMaskDebug.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1714; + CURRENT_PROJECT_VERSION = 1715; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = 48XVW22RCG; @@ -1461,7 +1461,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMask.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1714; + CURRENT_PROJECT_VERSION = 1715; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 48XVW22RCG; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 48XVW22RCG; @@ -1620,7 +1620,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMaskDebug.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1714; + CURRENT_PROJECT_VERSION = 1715; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = 48XVW22RCG; @@ -1689,7 +1689,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMask.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1714; + CURRENT_PROJECT_VERSION = 1715; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 48XVW22RCG; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 48XVW22RCG; From 9e8c5853900d00512f0f2e5cfceff70305df7220 Mon Sep 17 00:00:00 2001 From: "runway-github[bot]" <73448015+runway-github[bot]@users.noreply.github.com> Date: Mon, 21 Apr 2025 11:23:01 -0600 Subject: [PATCH 150/473] chore(runway): cherry-pick fix: not setting default slippage for non stablecoin pairs (#14760) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - fix: not setting default slippage for non stablecoin pairs (#14730) <!-- Please submit this PR as a draft initially. Do not mark it as "Ready for review" until the template has been completely filled out, and PR status checks have passed at least once. --> ## **Description** <!-- Write a short description of the changes included in this pull request, also include relevant motivation and context. Have in mind the following questions: 1. What is the reason for the change? 2. What is the improvement/solution? --> This PR fixes an issue where if you were on a stablecoin pair then selected a pair of tokens which were both not stablecoins, we would be keeping the default slippage as 0.5%. This will set the default slippage to 2% for non stablecoin pairs. ## **Related issues** Fixes: ## **Manual testing steps** 1. Go to Swaps 2. Select USDC and USDT as the pair 3. See slippage be set to 0.5% 4. Change USDC to ETH 5. See slippage be set to 2% ## **Screenshots/Recordings** <!-- If applicable, add screenshots and/or recordings to visualize the before and after of your change. --> ### **Before** <!-- [screenshots/recordings] --> ### **After** <!-- [screenshots/recordings] --> https://github.com/user-attachments/assets/f0a67e3d-acbf-4ab9-a0a7-2860e175027f ## **Pre-merge author checklist** - [x] I’ve followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile Coding Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [x] I've completed the PR template to the best of my ability - [x] I’ve included tests if applicable - [ ] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [x] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. ## **Pre-merge reviewer checklist** - [ ] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [ ] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots. [14fd5f2](https://github.com/MetaMask/metamask-mobile/commit/14fd5f227f009828e441978b759b30f63dc53d5f) Co-authored-by: infiniteflower <139582705+infiniteflower@users.noreply.github.com> --- CHANGELOG.md | 6 + app/components/UI/Swaps/index.js | 2 + .../useStablecoinsDefaultSlippage.test.tsx | 169 ++++++++++++++---- .../UI/Swaps/useStablecoinsDefaultSlippage.ts | 109 +++++++++-- 4 files changed, 241 insertions(+), 45 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f99a3182b8ee..2c0bea7caed2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -48,6 +48,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Fixed +- fix(swaps): set default slippage when source or destination token is not stablecoin ([#14730](https://github.com/MetaMask/metamask-mobile/pull/14730)) - fix: cp-7.45.0 fix block explorer link for default networks on trx detail modal. ([#14498](https://github.com/MetaMask/metamask-mobile/pull/14498)) - fix(14255): invalid url on account list ([#14259](https://github.com/MetaMask/metamask-mobile/pull/14259)) - fix(snaps): Update snap footer buttons ([#13953](https://github.com/MetaMask/metamask-mobile/pull/13953)) @@ -171,6 +172,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - fix: inherit icon size from text component parent ([#14024](https://github.com/MetaMask/metamask-mobile/pull/14024)) - fix: animation added for loading state on SnapUILink button ([#13973](https://github.com/MetaMask/metamask-mobile/pull/13973)) - fix: Revert "chore: upgrade Xcode 16 on bitrise.yml" ([#14012](https://github.com/MetaMask/metamask-mobile/pull/14012)) +<<<<<<< HEAD +======= +- fix(bridge): hide staked native assets from token selectors ([#14457](https://github.com/MetaMask/metamask-mobile/pull/14457)) + +>>>>>>> 14fd5f227f (fix: not setting default slippage for non stablecoin pairs (#14730)) ## [7.43.0] diff --git a/app/components/UI/Swaps/index.js b/app/components/UI/Swaps/index.js index 27b84f904497..4c1ba7d36787 100644 --- a/app/components/UI/Swaps/index.js +++ b/app/components/UI/Swaps/index.js @@ -595,9 +595,11 @@ function SwapsAmountView({ destinationTokenAddress, ); if (enableDirectWrapping && !isDirectWrapping) { + // ETH <> WETH, set slippage to 0 setSlippage(0); setIsDirectWrapping(true); } else if (isDirectWrapping && !enableDirectWrapping) { + // Coming out of ETH <> WETH to a non (ETH <> WETH) pair, reset slippage setSlippage(AppConstants.SWAPS.DEFAULT_SLIPPAGE); setIsDirectWrapping(false); } diff --git a/app/components/UI/Swaps/useStablecoinsDefaultSlippage.test.tsx b/app/components/UI/Swaps/useStablecoinsDefaultSlippage.test.tsx index f87a6c055457..473fadb5fb30 100644 --- a/app/components/UI/Swaps/useStablecoinsDefaultSlippage.test.tsx +++ b/app/components/UI/Swaps/useStablecoinsDefaultSlippage.test.tsx @@ -1,7 +1,11 @@ import { renderHookWithProvider } from '../../../util/test/renderWithProvider'; -import { useStablecoinsDefaultSlippage } from './useStablecoinsDefaultSlippage'; +import { + useStablecoinsDefaultSlippage, + handleStablecoinSlippage, +} from './useStablecoinsDefaultSlippage'; import { Hex } from '@metamask/utils'; import { swapsUtils } from '@metamask/swaps-controller'; +import AppConstants from '../../../core/AppConstants'; describe('useStablecoinsDefaultSlippage', () => { const mockSetSlippage = jest.fn(); @@ -79,7 +83,7 @@ describe('useStablecoinsDefaultSlippage', () => { renderHookWithProvider( () => useStablecoinsDefaultSlippage({ - sourceTokenAddress: '0x6b175474e89094c44da98b954eedeac495271d0f', // DAI (not in the list) + sourceTokenAddress: '0x123', // Non-stablecoin destTokenAddress: '0xdac17f958d2ee523a2206206994597c13d831ec7', // USDT chainId: swapsUtils.ETH_CHAIN_ID as Hex, setSlippage: mockSetSlippage, @@ -95,7 +99,7 @@ describe('useStablecoinsDefaultSlippage', () => { () => useStablecoinsDefaultSlippage({ sourceTokenAddress: '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48', // USDC - destTokenAddress: '0x6b175474e89094c44da98b954eedeac495271d0f', // DAI (not in the list) + destTokenAddress: '0x123', // Non-stablecoin chainId: swapsUtils.ETH_CHAIN_ID as Hex, setSlippage: mockSetSlippage, }), @@ -147,44 +151,147 @@ describe('useStablecoinsDefaultSlippage', () => { expect(mockSetSlippage).not.toHaveBeenCalled(); }); +}); - it('calls setSlippage only once when dependencies change', () => { - // First render with stablecoins - const { rerender } = renderHookWithProvider( - () => - useStablecoinsDefaultSlippage({ - sourceTokenAddress: '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48', // USDC - destTokenAddress: '0xdac17f958d2ee523a2206206994597c13d831ec7', // USDT - chainId: swapsUtils.ETH_CHAIN_ID as Hex, - setSlippage: mockSetSlippage, - }), - { state: initialState }, +describe('handleStablecoinSlippage', () => { + const mockSetSlippage = jest.fn(); + + beforeEach(() => { + jest.clearAllMocks(); + }); + + it('sets stablecoin slippage when both tokens are stablecoins', () => { + handleStablecoinSlippage({ + sourceTokenAddress: '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48', // USDC + destTokenAddress: '0xdac17f958d2ee523a2206206994597c13d831ec7', // USDT + chainId: swapsUtils.ETH_CHAIN_ID as Hex, + setSlippage: mockSetSlippage, + }); + + expect(mockSetSlippage).toHaveBeenCalledWith( + AppConstants.SWAPS.DEFAULT_SLIPPAGE_STABLECOINS, ); + }); - // First render should call setSlippage - expect(mockSetSlippage).toHaveBeenCalledTimes(1); + it('does not set slippage when source token is not on the list of stablecoins', () => { + handleStablecoinSlippage({ + sourceTokenAddress: '0x123', // Non-stablecoin + destTokenAddress: '0xdac17f958d2ee523a2206206994597c13d831ec7', // USDT + chainId: swapsUtils.ETH_CHAIN_ID as Hex, + setSlippage: mockSetSlippage, + }); - // Clear the mock to track subsequent calls - mockSetSlippage.mockClear(); + expect(mockSetSlippage).not.toHaveBeenCalled(); + }); - // Rerender with the same props should not call setSlippage again - rerender({}); + it('does not set slippage when destination token is not on the list of stablecoins', () => { + handleStablecoinSlippage({ + sourceTokenAddress: '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48', // USDC + destTokenAddress: '0x123', // Non-stablecoin + chainId: swapsUtils.ETH_CHAIN_ID as Hex, + setSlippage: mockSetSlippage, + }); expect(mockSetSlippage).not.toHaveBeenCalled(); + }); - // Create a new hook instance with different props - renderHookWithProvider( - () => - useStablecoinsDefaultSlippage({ - sourceTokenAddress: '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48', // USDC - destTokenAddress: '0x2791bca1f2de4661ed88a30c99a7a9449aa84174', // USDC.e on Polygon - chainId: swapsUtils.ETH_CHAIN_ID as Hex, - setSlippage: mockSetSlippage, - }), - { state: initialState }, + it('does not set slippage when chain ID is not supported', () => { + handleStablecoinSlippage({ + sourceTokenAddress: '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48', // USDC + destTokenAddress: '0xdac17f958d2ee523a2206206994597c13d831ec7', // USDT + chainId: '0x9999' as Hex, // Unsupported chain ID + setSlippage: mockSetSlippage, + }); + + expect(mockSetSlippage).not.toHaveBeenCalled(); + }); + + it('does not set slippage when source token address is missing', () => { + handleStablecoinSlippage({ + destTokenAddress: '0xdac17f958d2ee523a2206206994597c13d831ec7', // USDT + chainId: swapsUtils.ETH_CHAIN_ID as Hex, + setSlippage: mockSetSlippage, + }); + + expect(mockSetSlippage).not.toHaveBeenCalled(); + }); + + it('does not set slippage when destination token address is missing', () => { + handleStablecoinSlippage({ + sourceTokenAddress: '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48', // USDC + chainId: swapsUtils.ETH_CHAIN_ID as Hex, + setSlippage: mockSetSlippage, + }); + + expect(mockSetSlippage).not.toHaveBeenCalled(); + }); + + it('resets slippage to default when transitioning from stablecoin pair to non-stablecoin pair', () => { + handleStablecoinSlippage({ + sourceTokenAddress: '0x123', // Non-stablecoin + destTokenAddress: '0x456', // Non-stablecoin + chainId: swapsUtils.ETH_CHAIN_ID as Hex, + setSlippage: mockSetSlippage, + prevSourceTokenAddress: '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48', // USDC + prevDestTokenAddress: '0xdac17f958d2ee523a2206206994597c13d831ec7', // USDT + }); + + expect(mockSetSlippage).toHaveBeenCalledWith( + AppConstants.SWAPS.DEFAULT_SLIPPAGE, ); + }); + + it('does not reset slippage when transitioning from non-stablecoin pair to another non-stablecoin pair', () => { + handleStablecoinSlippage({ + sourceTokenAddress: '0x6b175474e89094c44da98b954eedeac495271d0f', // DAI + destTokenAddress: '0x2260fac5e5542a773aa44fbcfedf7c193bc2c599', // WBTC + chainId: swapsUtils.ETH_CHAIN_ID as Hex, + setSlippage: mockSetSlippage, + prevSourceTokenAddress: '0x123', // Non-stablecoin + prevDestTokenAddress: '0xdac17f958d2ee523a2206206994597c13d831ec7', // USDT + }); + + expect(mockSetSlippage).not.toHaveBeenCalled(); + }); + + it('sets default slippage when transitioning from non-stablecoin pair to stablecoin pair', () => { + handleStablecoinSlippage({ + sourceTokenAddress: '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48', // USDC + destTokenAddress: '0xdac17f958d2ee523a2206206994597c13d831ec7', // USDT + chainId: swapsUtils.ETH_CHAIN_ID as Hex, + setSlippage: mockSetSlippage, + prevSourceTokenAddress: '0x123', // Non-stablecoin + prevDestTokenAddress: '0x2260fac5e5542a773aa44fbcfedf7c193bc2c599', // WBTC + }); + + expect(mockSetSlippage).toHaveBeenCalledWith( + AppConstants.SWAPS.DEFAULT_SLIPPAGE_STABLECOINS, + ); + }); + + it('handles transition from stablecoin pair to missing token addresses', () => { + handleStablecoinSlippage({ + sourceTokenAddress: undefined, + destTokenAddress: undefined, + chainId: swapsUtils.ETH_CHAIN_ID as Hex, + setSlippage: mockSetSlippage, + prevSourceTokenAddress: '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48', // USDC + prevDestTokenAddress: '0xdac17f958d2ee523a2206206994597c13d831ec7', // USDT + }); + + expect(mockSetSlippage).not.toHaveBeenCalled(); + }); + + it('does not reset slippage when previous token addresses are missing', () => { + handleStablecoinSlippage({ + sourceTokenAddress: '0x123', // Non-stablecoin + destTokenAddress: '0x456', // Non-stablecoin + chainId: swapsUtils.ETH_CHAIN_ID as Hex, + setSlippage: mockSetSlippage, + prevSourceTokenAddress: undefined, + prevDestTokenAddress: undefined, + }); - // Should not call setSlippage because tokens are on different chains expect(mockSetSlippage).not.toHaveBeenCalled(); }); }); diff --git a/app/components/UI/Swaps/useStablecoinsDefaultSlippage.ts b/app/components/UI/Swaps/useStablecoinsDefaultSlippage.ts index 108f5f71438c..97639a12e669 100644 --- a/app/components/UI/Swaps/useStablecoinsDefaultSlippage.ts +++ b/app/components/UI/Swaps/useStablecoinsDefaultSlippage.ts @@ -3,6 +3,7 @@ import AppConstants from '../../../core/AppConstants'; import { Hex } from '@metamask/utils'; import { swapsUtils } from '@metamask/swaps-controller'; import { toChecksumHexAddress } from '@metamask/controller-utils'; +import usePrevious from '../../hooks/usePrevious'; // USDC and USDT for now const StablecoinsByChainId: Partial<Record<Hex, Set<string>>> = { @@ -49,6 +50,81 @@ const StablecoinsByChainId: Partial<Record<Hex, Set<string>>> = { ]), }; +/** + * This function checks if the source and destination tokens are both stablecoins. + * @param sourceTokenAddress - The address of the source token. + * @param destTokenAddress - The address of the destination token. + * @param chainId - The chain id of the swap. + * @returns true if the source and destination tokens are both stablecoins, false otherwise. + */ +const getIsStablecoinPair = ( + sourceTokenAddress: string, + destTokenAddress: string, + chainId: Hex, +) => { + const stablecoins = StablecoinsByChainId[chainId]; + + if (!stablecoins) return false; + + return ( + (stablecoins.has(sourceTokenAddress.toLowerCase()) || + stablecoins.has(toChecksumHexAddress(sourceTokenAddress))) && + (stablecoins.has(destTokenAddress.toLowerCase()) || + stablecoins.has(toChecksumHexAddress(destTokenAddress))) + ); +}; + +/** + * This function handles the slippage for stablecoins swaps. + * It checks if the source and destination tokens are both stablecoins and if so, + * it sets the slippage to 0.5%. + * @param sourceTokenAddress - The address of the source token. + * @param destTokenAddress - The address of the destination token. + * @param chainId - The chain id of the swap. + * @param setSlippage - The function to set the slippage. + * @param prevSourceTokenAddress - The previous source token address. + * @param prevDestTokenAddress - The previous destination token address. + */ +export const handleStablecoinSlippage = ({ + sourceTokenAddress, + destTokenAddress, + chainId, + setSlippage, + prevSourceTokenAddress, + prevDestTokenAddress, +}: { + sourceTokenAddress?: string; + destTokenAddress?: string; + chainId: Hex; + setSlippage: (slippage: number) => void; + prevSourceTokenAddress?: string; + prevDestTokenAddress?: string; +}) => { + if (!sourceTokenAddress || !destTokenAddress) return; + + const isStablecoinPair = getIsStablecoinPair( + sourceTokenAddress, + destTokenAddress, + chainId, + ); + + if (isStablecoinPair) { + setSlippage(AppConstants.SWAPS.DEFAULT_SLIPPAGE_STABLECOINS); + } + + if (!prevSourceTokenAddress || !prevDestTokenAddress) return; + + const prevIsStablecoinPair = getIsStablecoinPair( + prevSourceTokenAddress, + prevDestTokenAddress, + chainId, + ); + + if (prevIsStablecoinPair && !isStablecoinPair) { + setSlippage(AppConstants.SWAPS.DEFAULT_SLIPPAGE); + } +}; + /** * This hook is used to update the slippage for stablecoins swaps. * It checks if the source and destination tokens are both stablecoins and if so, @@ -69,19 +145,24 @@ export const useStablecoinsDefaultSlippage = ({ chainId: Hex; setSlippage: (slippage: number) => void; }) => { - useEffect(() => { - const stablecoins = StablecoinsByChainId[chainId]; + const prevSourceTokenAddress = usePrevious(sourceTokenAddress); + const prevDestTokenAddress = usePrevious(destTokenAddress); - if ( - stablecoins && - sourceTokenAddress && - destTokenAddress && - (stablecoins.has(sourceTokenAddress.toLowerCase()) || - stablecoins.has(toChecksumHexAddress(sourceTokenAddress))) && - (stablecoins.has(destTokenAddress.toLowerCase()) || - stablecoins.has(toChecksumHexAddress(destTokenAddress))) - ) { - setSlippage(AppConstants.SWAPS.DEFAULT_SLIPPAGE_STABLECOINS); - } - }, [setSlippage, sourceTokenAddress, destTokenAddress, chainId]); + useEffect(() => { + handleStablecoinSlippage({ + sourceTokenAddress, + destTokenAddress, + chainId, + setSlippage, + prevSourceTokenAddress, + prevDestTokenAddress, + }); + }, [ + setSlippage, + sourceTokenAddress, + destTokenAddress, + chainId, + prevSourceTokenAddress, + prevDestTokenAddress, + ]); }; From cec092b8731918c5edebb85c82bb42e5b1bc7a60 Mon Sep 17 00:00:00 2001 From: metamaskbot <metamaskbot@users.noreply.github.com> Date: Mon, 21 Apr 2025 17:24:43 +0000 Subject: [PATCH 151/473] Bump version number to 1717 --- android/app/build.gradle | 2 +- bitrise.yml | 4 ++-- ios/MetaMask.xcodeproj/project.pbxproj | 12 ++++++------ 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/android/app/build.gradle b/android/app/build.gradle index 72f3ba7d3da1..634e9b1ab9f9 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -179,7 +179,7 @@ android { minSdkVersion rootProject.ext.minSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion versionName "7.45.0" - versionCode 1715 + versionCode 1717 testBuildType System.getProperty('testBuildType', 'debug') missingDimensionStrategy 'react-native-camera', 'general' testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" diff --git a/bitrise.yml b/bitrise.yml index 3a6a9dc3ac4f..ef229b8419f0 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -2235,13 +2235,13 @@ app: VERSION_NAME: 7.45.0 - opts: is_expand: false - VERSION_NUMBER: 1715 + VERSION_NUMBER: 1717 - opts: is_expand: false FLASK_VERSION_NAME: 7.45.0 - opts: is_expand: false - FLASK_VERSION_NUMBER: 1715 + FLASK_VERSION_NUMBER: 1717 - opts: is_expand: false ANDROID_APK_LINK: '' diff --git a/ios/MetaMask.xcodeproj/project.pbxproj b/ios/MetaMask.xcodeproj/project.pbxproj index d39e128bab18..6d8aa5adccbf 100644 --- a/ios/MetaMask.xcodeproj/project.pbxproj +++ b/ios/MetaMask.xcodeproj/project.pbxproj @@ -1261,7 +1261,7 @@ CODE_SIGN_IDENTITY = "Apple Development"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1715; + CURRENT_PROJECT_VERSION = 1717; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = 48XVW22RCG; @@ -1330,7 +1330,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMask.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1715; + CURRENT_PROJECT_VERSION = 1717; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 48XVW22RCG; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 48XVW22RCG; @@ -1395,7 +1395,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMaskDebug.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1715; + CURRENT_PROJECT_VERSION = 1717; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = 48XVW22RCG; @@ -1461,7 +1461,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMask.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1715; + CURRENT_PROJECT_VERSION = 1717; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 48XVW22RCG; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 48XVW22RCG; @@ -1620,7 +1620,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMaskDebug.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1715; + CURRENT_PROJECT_VERSION = 1717; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = 48XVW22RCG; @@ -1689,7 +1689,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMask.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1715; + CURRENT_PROJECT_VERSION = 1717; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 48XVW22RCG; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 48XVW22RCG; From be5ff91b7feb68eb38761c02e8f4227f3ad3f832 Mon Sep 17 00:00:00 2001 From: metamaskbot <metamaskbot@users.noreply.github.com> Date: Mon, 21 Apr 2025 17:52:13 +0000 Subject: [PATCH 152/473] Bump version number to 1718 --- android/app/build.gradle | 2 +- bitrise.yml | 4 ++-- ios/MetaMask.xcodeproj/project.pbxproj | 12 ++++++------ 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/android/app/build.gradle b/android/app/build.gradle index 634e9b1ab9f9..647c453fc51e 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -179,7 +179,7 @@ android { minSdkVersion rootProject.ext.minSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion versionName "7.45.0" - versionCode 1717 + versionCode 1718 testBuildType System.getProperty('testBuildType', 'debug') missingDimensionStrategy 'react-native-camera', 'general' testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" diff --git a/bitrise.yml b/bitrise.yml index ef229b8419f0..b5e66cabc44c 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -2235,13 +2235,13 @@ app: VERSION_NAME: 7.45.0 - opts: is_expand: false - VERSION_NUMBER: 1717 + VERSION_NUMBER: 1718 - opts: is_expand: false FLASK_VERSION_NAME: 7.45.0 - opts: is_expand: false - FLASK_VERSION_NUMBER: 1717 + FLASK_VERSION_NUMBER: 1718 - opts: is_expand: false ANDROID_APK_LINK: '' diff --git a/ios/MetaMask.xcodeproj/project.pbxproj b/ios/MetaMask.xcodeproj/project.pbxproj index 6d8aa5adccbf..15cdbb1285b8 100644 --- a/ios/MetaMask.xcodeproj/project.pbxproj +++ b/ios/MetaMask.xcodeproj/project.pbxproj @@ -1261,7 +1261,7 @@ CODE_SIGN_IDENTITY = "Apple Development"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1717; + CURRENT_PROJECT_VERSION = 1718; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = 48XVW22RCG; @@ -1330,7 +1330,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMask.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1717; + CURRENT_PROJECT_VERSION = 1718; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 48XVW22RCG; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 48XVW22RCG; @@ -1395,7 +1395,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMaskDebug.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1717; + CURRENT_PROJECT_VERSION = 1718; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = 48XVW22RCG; @@ -1461,7 +1461,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMask.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1717; + CURRENT_PROJECT_VERSION = 1718; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 48XVW22RCG; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 48XVW22RCG; @@ -1620,7 +1620,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMaskDebug.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1717; + CURRENT_PROJECT_VERSION = 1718; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = 48XVW22RCG; @@ -1689,7 +1689,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMask.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1717; + CURRENT_PROJECT_VERSION = 1718; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 48XVW22RCG; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 48XVW22RCG; From f3d8bdccfa2d427facd4140948f11b80e5a0987d Mon Sep 17 00:00:00 2001 From: "runway-github[bot]" <73448015+runway-github[bot]@users.noreply.github.com> Date: Wed, 23 Apr 2025 12:47:13 +0200 Subject: [PATCH 153/473] chore(runway): cherry-pick fix: cp-7.45.0 padding for android (#14787) - fix: cp-7.45.0 padding for android (#14725) --- CHANGELOG.md | 4 ++++ .../SolanaNewFeatureContent.styles.ts | 5 +++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2c0bea7caed2..9a2fb9718c11 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [7.45.0] +### Fixed + +- fix: updates a padding style specifically for Android devices ([#14725](https://github.com/MetaMask/metamask-mobile/pull/14725)) + ### Added - feat(4213-2) update network icons ([#14069](https://github.com/MetaMask/metamask-mobile/pull/14069)) diff --git a/app/components/UI/SolanaNewFeatureContent/SolanaNewFeatureContent.styles.ts b/app/components/UI/SolanaNewFeatureContent/SolanaNewFeatureContent.styles.ts index d500d22c25a3..34c13e2a2af4 100644 --- a/app/components/UI/SolanaNewFeatureContent/SolanaNewFeatureContent.styles.ts +++ b/app/components/UI/SolanaNewFeatureContent/SolanaNewFeatureContent.styles.ts @@ -1,4 +1,5 @@ import { StyleSheet } from 'react-native'; +import Device from '../../../util/device'; import { fontStyles } from '../../../styles/common'; const createStyles = (colors: { @@ -15,7 +16,7 @@ const createStyles = (colors: { backgroundColor: colors.background.default, borderRadius: 12, padding: 24, - paddingBottom: 0, + paddingBottom: Device.isAndroid() ? 24 : 0, alignItems: 'center', }, title: { @@ -35,4 +36,4 @@ const createStyles = (colors: { }, }); -export default createStyles; \ No newline at end of file +export default createStyles; From 7505b3dc23eab3f5244bf3b8563927a80dd76454 Mon Sep 17 00:00:00 2001 From: "runway-github[bot]" <73448015+runway-github[bot]@users.noreply.github.com> Date: Wed, 23 Apr 2025 12:49:13 +0200 Subject: [PATCH 154/473] chore(runway): cherry-pick fix: Switch chains when sending NFT on different chain (#14783) - fix: Switch chains when sending NFT on different chain (#14749) --- .../Views/NftDetails/NftDetails.tsx | 20 ++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/app/components/Views/NftDetails/NftDetails.tsx b/app/components/Views/NftDetails/NftDetails.tsx index 4fd10c38e63b..d0844d6f2836 100644 --- a/app/components/Views/NftDetails/NftDetails.tsx +++ b/app/components/Views/NftDetails/NftDetails.tsx @@ -47,6 +47,9 @@ import { renderShortText } from '../../../util/general'; import { prefixUrlWithProtocol } from '../../../util/browser'; import { formatTimestampToYYYYMMDD } from '../../../util/date'; import MAX_TOKEN_ID_LENGTH from './nftDetails.utils'; +import Engine from '../../../core/Engine'; +import { toHex } from '@metamask/controller-utils'; +import { Hex } from '@metamask/utils'; const NftDetails = () => { const navigation = useNavigation(); @@ -164,11 +167,26 @@ const NftDetails = () => { }; const onSend = useCallback(async () => { + const chainIdHex = toHex(collectible?.chainId as number) as Hex; + if (chainIdHex !== chainId) { + const { NetworkController, MultichainNetworkController } = Engine.context; + const networkConfiguration = + NetworkController.getNetworkConfigurationByChainId(chainIdHex); + + const networkClientId = + networkConfiguration?.rpcEndpoints?.[ + networkConfiguration.defaultRpcEndpointIndex + ]?.networkClientId; + + await MultichainNetworkController.setActiveNetwork( + networkClientId as string, + ); + } dispatch( newAssetTransaction({ contractName: collectible.name, ...collectible }), ); navigation.navigate('SendFlowView'); - }, [collectible, navigation, dispatch]); + }, [collectible, chainId, dispatch, navigation]); const isTradable = useCallback( () => From 3d6fc18f0c2b2bd2ae5dfed65e3cd37ea1c6ef20 Mon Sep 17 00:00:00 2001 From: Monte Lai <monte.lai@consensys.net> Date: Wed, 23 Apr 2025 21:34:32 +0800 Subject: [PATCH 155/473] cp: PR 14718 to release 7.45.0 (#14797) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## **Description** <!-- Please submit this PR as a draft initially. Do not mark it as "Ready for review" until the template has been completely filled out, and PR status checks have passed at least once. --> This pr fixes the input text color to show the alternative text color in dark mode and moves validation logic into a validation file. Changes: 1. ImportNewSecretRecoveryPhrase dark mode text color. 2. Moved logic into a new validation file <!-- Write a short description of the changes included in this pull request, also include relevant motivation and context. Have in mind the following questions: 1. What is the reason for the change? 3. What is the improvement/solution? --> Fixes: https://consensyssoftware.atlassian.net/browse/MMMULTISRP-172?atlOrigin=eyJpIjoiODc2NzY1Y2RjMGExNDBiMzlkODY2OWFkOWNkYjIxMTUiLCJwIjoiaiJ9 1. Go to account actions 2. Click on `Secret Recovery Phrase` 4. Enter a word 5. Switch to dark mode and see that the text color is visible. <!-- If applicable, add screenshots and/or recordings to visualize the before and after of your change. --> <!-- [screenshots/recordings] --> ![Screenshot 2025-04-17 at 19 13 05](https://github.com/user-attachments/assets/8dc35491-b45f-4eb5-8ceb-02ece09208f0) <!-- [screenshots/recordings] --> - [x] I’ve followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile Coding Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [x] I've completed the PR template to the best of my ability - [x] I’ve included tests if applicable - [x] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [x] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. - [ ] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [ ] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots. --- CHANGELOG.md | 10 +- .../ImportNewSecretRecoveryPhrase/index.tsx | 120 ++---------------- .../validation.ts | 107 ++++++++++++++++ 3 files changed, 124 insertions(+), 113 deletions(-) create mode 100644 app/components/Views/ImportNewSecretRecoveryPhrase/validation.ts diff --git a/CHANGELOG.md b/CHANGELOG.md index 9a2fb9718c11..c82c8b72f9b6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,9 +9,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [7.45.0] -### Fixed +### Changed -- fix: updates a padding style specifically for Android devices ([#14725](https://github.com/MetaMask/metamask-mobile/pull/14725)) +- fix(multi-srp): display errors only after all the words are have been entered ([#14607](https://github.com/MetaMask/metamask-mobile/pull/14607)) +- fix(multi-srp): display alternative text color when in dark mode([#14718](https://github.com/MetaMask/metamask-mobile/pull/14718)) ### Added @@ -103,6 +104,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - fix: reduce tests worker for only performance tests ([#14051](https://github.com/MetaMask/metamask-mobile/pull/14051)) - fix: scroll for the confirmation screen ([#14269](https://github.com/MetaMask/metamask-mobile/pull/14269)) - fix: STAKE-964: bumped @metamask/earn-controller dependency to resolve pooled-staking geo-block for fresh installs ([#14257](https://github.com/MetaMask/metamask-mobile/pull/14257)) +- fix: updates a padding style specifically for Android devices ([#14725](https://github.com/MetaMask/metamask-mobile/pull/14725)) +- fix(swaps): set default slippage when source or destination token is not stablecoin ([#14730](https://github.com/MetaMask/metamask-mobile/pull/14730)) ## [7.44.0] @@ -176,11 +179,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - fix: inherit icon size from text component parent ([#14024](https://github.com/MetaMask/metamask-mobile/pull/14024)) - fix: animation added for loading state on SnapUILink button ([#13973](https://github.com/MetaMask/metamask-mobile/pull/13973)) - fix: Revert "chore: upgrade Xcode 16 on bitrise.yml" ([#14012](https://github.com/MetaMask/metamask-mobile/pull/14012)) -<<<<<<< HEAD -======= - fix(bridge): hide staked native assets from token selectors ([#14457](https://github.com/MetaMask/metamask-mobile/pull/14457)) ->>>>>>> 14fd5f227f (fix: not setting default slippage for non stablecoin pairs (#14730)) ## [7.43.0] diff --git a/app/components/Views/ImportNewSecretRecoveryPhrase/index.tsx b/app/components/Views/ImportNewSecretRecoveryPhrase/index.tsx index 137983d31093..836f2f8d93b5 100644 --- a/app/components/Views/ImportNewSecretRecoveryPhrase/index.tsx +++ b/app/components/Views/ImportNewSecretRecoveryPhrase/index.tsx @@ -33,7 +33,6 @@ import Icon, { } from '../../../component-library/components/Icons/Icon'; import ButtonLink from '../../../component-library/components/Buttons/Button/variants/ButtonLink'; import { ButtonSize } from '../../../component-library/components/Buttons/Button'; -import { wordlist } from '@metamask/scure-bip39/dist/wordlists/english'; import { isValidMnemonic } from '../../../util/validators'; import useCopyClipboard from '../Notifications/Details/hooks/useCopyClipboard'; import ClipboardManager from '../../../core/ClipboardManager'; @@ -46,6 +45,14 @@ import { } from '../../../component-library/components/Toast'; import { useSelector } from 'react-redux'; import { selectHDKeyrings } from '../../../selectors/keyringController'; +import { + validateSRP, + validateCompleteness, + validateCase, + validateWords, + validateMnemonic, +} from './validation'; +import { AppThemeKey } from '../../../util/theme/models'; const defaultNumberOfWords = 12; @@ -105,9 +112,6 @@ const ImportNewSecretRecoveryPhrase = () => { } }, [inputWidth]); - const hasUpperCase = (draftSrp: string) => - draftSrp !== draftSrp.toLowerCase(); - const hasEmptySrp = useMemo( () => secretRecoveryPhrase.every((word) => word === ''), [secretRecoveryPhrase], @@ -135,110 +139,6 @@ const ImportNewSecretRecoveryPhrase = () => { const onSrpChange = useCallback( (newDraftSrp: string[]) => { - const validateSRP = (phrase: string[], words: boolean[]) => { - if (!phrase.some((word) => word !== '')) { - return { error: '', words }; - } - - const state = { - error: '', - words: phrase.map((word) => !wordlist.includes(word)), - }; - - return state; - }; - - const validateCompleteness = ( - state: { error: string; words: boolean[] }, - phrase: string[], - ) => { - if (state.error) { - return state; - } - if (phrase.some((word) => word === '')) { - return { - ...state, - error: strings( - 'import_new_secret_recovery_phrase.error_number_of_words_error_message', - ), - }; - } - return state; - }; - - const validateCase = ( - state: { error: string; words: boolean[] }, - phrase: string, - ) => { - if (state.error) { - return state; - } - if (hasUpperCase(phrase)) { - return { - ...state, - error: strings( - 'import_new_secret_recovery_phrase.error_srp_is_case_sensitive', - ), - }; - } - return state; - }; - - const validateWords = (state: { error: string; words: boolean[] }) => { - if (state.error) { - return state; - } - - const invalidWordIndices = state.words - .map((invalid, index) => (invalid ? index + 1 : 0)) - .filter((index) => index !== 0); - - if (invalidWordIndices.length === 0) { - return state; - } - if (invalidWordIndices.length === 1) { - return { - ...state, - error: `${strings( - 'import_new_secret_recovery_phrase.error_srp_word_error_1', - )}${invalidWordIndices[0]}${strings( - 'import_new_secret_recovery_phrase.error_srp_word_error_2', - )}`, - }; - } - - const lastIndex = invalidWordIndices.pop(); - const firstPart = invalidWordIndices.join(', '); - return { - ...state, - error: `${strings( - 'import_new_secret_recovery_phrase.error_multiple_srp_word_error_1', - )}${firstPart}${strings( - 'import_new_secret_recovery_phrase.error_multiple_srp_word_error_2', - )}${lastIndex}${strings( - 'import_new_secret_recovery_phrase.error_multiple_srp_word_error_3', - )}`, - }; - }; - - const validateMnemonic = ( - state: { error: string; words: boolean[] }, - phrase: string, - ) => { - if (state.error) { - return state; - } - if (!isValidMnemonic(phrase)) { - return { - ...state, - error: strings( - 'import_new_secret_recovery_phrase.error_invalid_srp', - ), - }; - } - return state; - }; - const hideErrorIfSrpIsEmpty = ( state: { error: string; words: boolean[] }, phrase: string[], @@ -401,6 +301,10 @@ const ImportNewSecretRecoveryPhrase = () => { borderColor: invalidSRPWords[index] ? colors.error.default : colors.border.muted, + color: + themeAppearance === AppThemeKey.light + ? colors.text.default + : colors.text.alternative, }} autoCapitalize="none" keyboardAppearance={themeAppearance} diff --git a/app/components/Views/ImportNewSecretRecoveryPhrase/validation.ts b/app/components/Views/ImportNewSecretRecoveryPhrase/validation.ts new file mode 100644 index 000000000000..cdca71fbf1e1 --- /dev/null +++ b/app/components/Views/ImportNewSecretRecoveryPhrase/validation.ts @@ -0,0 +1,107 @@ +import { isValidMnemonic } from 'ethers/lib/utils'; +import { wordlist } from '@metamask/scure-bip39/dist/wordlists/english'; +import { strings } from '../../../../locales/i18n'; + +const hasUpperCase = (draftSrp: string) => draftSrp !== draftSrp.toLowerCase(); + +export const validateSRP = (phrase: string[], words: boolean[]) => { + if (!phrase.some((word) => word !== '')) { + return { error: '', words }; + } + + const state = { + error: '', + words: phrase.map((word) => !wordlist.includes(word)), + }; + + return state; +}; + +export const validateCompleteness = ( + state: { error: string; words: boolean[] }, + phrase: string[], +) => { + if (state.error) { + return state; + } + if (phrase.some((word) => word === '')) { + return { + ...state, + error: strings( + 'import_new_secret_recovery_phrase.error_number_of_words_error_message', + ), + }; + } + return state; +}; + +export const validateCase = ( + state: { error: string; words: boolean[] }, + phrase: string, +) => { + if (state.error) { + return state; + } + if (hasUpperCase(phrase)) { + return { + ...state, + error: strings( + 'import_new_secret_recovery_phrase.error_srp_is_case_sensitive', + ), + }; + } + return state; +}; + +export const validateWords = (state: { error: string; words: boolean[] }) => { + if (state.error) { + return state; + } + + const invalidWordIndices = state.words + .map((invalid, index) => (invalid ? index + 1 : 0)) + .filter((index) => index !== 0); + + if (invalidWordIndices.length === 0) { + return state; + } + if (invalidWordIndices.length === 1) { + return { + ...state, + error: `${strings( + 'import_new_secret_recovery_phrase.error_srp_word_error_1', + )}${invalidWordIndices[0]}${strings( + 'import_new_secret_recovery_phrase.error_srp_word_error_2', + )}`, + }; + } + + const lastIndex = invalidWordIndices.pop(); + const firstPart = invalidWordIndices.join(', '); + return { + ...state, + error: `${strings( + 'import_new_secret_recovery_phrase.error_multiple_srp_word_error_1', + )}${firstPart}${strings( + 'import_new_secret_recovery_phrase.error_multiple_srp_word_error_2', + )}${lastIndex}${strings( + 'import_new_secret_recovery_phrase.error_multiple_srp_word_error_3', + )}`, + }; +}; + +export const validateMnemonic = ( + state: { error: string; words: boolean[] }, + phrase: string, +) => { + if (state.error) { + return state; + } + if (!isValidMnemonic(phrase)) { + return { + ...state, + error: strings('import_new_secret_recovery_phrase.error_invalid_srp'), + }; + } + return state; +}; From a2642677f5ccc029ed02f5d07f73b43a23dce09c Mon Sep 17 00:00:00 2001 From: metamaskbot <metamaskbot@users.noreply.github.com> Date: Wed, 23 Apr 2025 16:10:47 +0000 Subject: [PATCH 156/473] Bump version number to 1724 --- android/app/build.gradle | 2 +- bitrise.yml | 4 ++-- ios/MetaMask.xcodeproj/project.pbxproj | 12 ++++++------ 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/android/app/build.gradle b/android/app/build.gradle index 647c453fc51e..34ecc9634fc3 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -179,7 +179,7 @@ android { minSdkVersion rootProject.ext.minSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion versionName "7.45.0" - versionCode 1718 + versionCode 1724 testBuildType System.getProperty('testBuildType', 'debug') missingDimensionStrategy 'react-native-camera', 'general' testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" diff --git a/bitrise.yml b/bitrise.yml index b5e66cabc44c..6b2cfcb5674f 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -2235,13 +2235,13 @@ app: VERSION_NAME: 7.45.0 - opts: is_expand: false - VERSION_NUMBER: 1718 + VERSION_NUMBER: 1724 - opts: is_expand: false FLASK_VERSION_NAME: 7.45.0 - opts: is_expand: false - FLASK_VERSION_NUMBER: 1718 + FLASK_VERSION_NUMBER: 1724 - opts: is_expand: false ANDROID_APK_LINK: '' diff --git a/ios/MetaMask.xcodeproj/project.pbxproj b/ios/MetaMask.xcodeproj/project.pbxproj index 15cdbb1285b8..8d93bbeb5536 100644 --- a/ios/MetaMask.xcodeproj/project.pbxproj +++ b/ios/MetaMask.xcodeproj/project.pbxproj @@ -1261,7 +1261,7 @@ CODE_SIGN_IDENTITY = "Apple Development"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1718; + CURRENT_PROJECT_VERSION = 1724; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = 48XVW22RCG; @@ -1330,7 +1330,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMask.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1718; + CURRENT_PROJECT_VERSION = 1724; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 48XVW22RCG; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 48XVW22RCG; @@ -1395,7 +1395,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMaskDebug.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1718; + CURRENT_PROJECT_VERSION = 1724; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = 48XVW22RCG; @@ -1461,7 +1461,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMask.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1718; + CURRENT_PROJECT_VERSION = 1724; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 48XVW22RCG; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 48XVW22RCG; @@ -1620,7 +1620,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMaskDebug.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1718; + CURRENT_PROJECT_VERSION = 1724; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = 48XVW22RCG; @@ -1689,7 +1689,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMask.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1718; + CURRENT_PROJECT_VERSION = 1724; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 48XVW22RCG; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 48XVW22RCG; From 0fdf7ec607f3be84d5a8fbb4b4a119c37732f007 Mon Sep 17 00:00:00 2001 From: "runway-github[bot]" <73448015+runway-github[bot]@users.noreply.github.com> Date: Wed, 23 Apr 2025 14:39:39 -0600 Subject: [PATCH 157/473] chore(runway): cherry-pick bd2259d (#14804) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - fix: re-enable basic functionality onPersistComplete (#14761) <!-- Please submit this PR as a draft initially. Do not mark it as "Ready for review" until the template has been completely filled out, and PR status checks have passed at least once. --> ## **Description** <!-- Write a short description of the changes included in this pull request, also include relevant motivation and context. Have in mind the following questions: 1. What is the reason for the change? 2. What is the improvement/solution? --> ## **Related issues** Fixes [4709](https://github.com/MetaMask/MetaMask-planning/issues/4709) ## **Manual testing steps** 1. Follow steps in issue ## **Screenshots/Recordings** <!-- If applicable, add screenshots and/or recordings to visualize the before and after of your change. --> ### **Before** <!-- [screenshots/recordings] --> ### **After** <!-- [screenshots/recordings] --> ## **Pre-merge author checklist** - [ ] I’ve followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile Coding Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [ ] I've completed the PR template to the best of my ability - [ ] I’ve included tests if applicable - [ ] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [ ] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. ## **Pre-merge reviewer checklist** - [ ] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [ ] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots. --------- Co-authored-by: Ziad Saab <ziad.saab@gmail.com> [bd2259d](https://github.com/MetaMask/metamask-mobile/commit/bd2259d3e78b1bf4aada4a8ec8b203a67d14df2b) --------- Co-authored-by: Frank von Hoven <141057783+frankvonhoven@users.noreply.github.com> Co-authored-by: Ziad Saab <ziad.saab@gmail.com> Co-authored-by: Cal Leung <cal.leung@consensys.net> --- .iyarc | 2 ++ app/store/index.ts | 3 +++ 2 files changed, 5 insertions(+) diff --git a/.iyarc b/.iyarc index e69de29bb2d1..696cadaf6480 100644 --- a/.iyarc +++ b/.iyarc @@ -0,0 +1,2 @@ +# Advisory exclusions +GHSA-h9w6-f932-gq62 \ No newline at end of file diff --git a/app/store/index.ts b/app/store/index.ts index d225a8fc1a7a..67a584756a85 100644 --- a/app/store/index.ts +++ b/app/store/index.ts @@ -14,6 +14,7 @@ import persistConfig from './persistConfig'; import getUIStartupSpan from '../core/Performance/UIStartup'; import ReduxService, { ReduxStore } from '../core/redux'; import { onPersistedDataLoaded } from '../actions/user'; +import { toggleBasicFunctionality } from '../actions/settings'; // TODO: Improve type safety by using real Action types instead of `AnyAction` const pReducer = persistReducer<RootState, AnyAction>( @@ -67,6 +68,8 @@ const createStoreAndPersistor = async () => { endTrace({ name: TraceName.StoreInit }); // Signal that persisted data has been loaded store.dispatch(onPersistedDataLoaded()); + // This sets the basic functionality value from the persisted state when the app is restarted + store.dispatch(toggleBasicFunctionality(store.getState().settings.basicFunctionalityEnabled)); }; persistor = persistStore(store, null, onPersistComplete); From 2192cb1f02c5bac1e6a17de233758f0d6f9e50bd Mon Sep 17 00:00:00 2001 From: Vinicius Stevam <45455812+vinistevam@users.noreply.github.com> Date: Thu, 24 Apr 2025 14:12:48 +0100 Subject: [PATCH 158/473] cp: cherry-pick adfb8a1 (#14832) - fix: blockaid metrics to properly merge into the ui_customizations (#14764) --- .../hooks/useSignatureMetrics.test.ts | 88 ++++++++++++++++++- .../hooks/useSignatureMetrics.ts | 7 +- app/util/blockaid/index.test.ts | 24 +++++ 3 files changed, 114 insertions(+), 5 deletions(-) diff --git a/app/components/Views/confirmations/hooks/useSignatureMetrics.test.ts b/app/components/Views/confirmations/hooks/useSignatureMetrics.test.ts index ee227b23e6ca..374f891e56a2 100644 --- a/app/components/Views/confirmations/hooks/useSignatureMetrics.test.ts +++ b/app/components/Views/confirmations/hooks/useSignatureMetrics.test.ts @@ -5,6 +5,7 @@ import { typedSignV4SignatureRequest, } from '../../../../util/test/confirm-data-helpers'; import { renderHookWithProvider } from '../../../../util/test/renderWithProvider'; +import { Reason, ResultType, SecurityAlertSource } from '../legacy/components/BlockaidBanner/BlockaidBanner.types'; import { useSignatureMetrics } from './useSignatureMetrics'; const mockTypedSignV4SignatureRequest = typedSignV4SignatureRequest; @@ -44,7 +45,47 @@ const SignatureMetrics = { security_alert_response: 'Malicious', security_alert_source: 'api', signature_type: 'eth_signTypedData', - ui_customizations: ['flagged_as_malicious'], + ui_customizations: ['redesigned_confirmation', 'flagged_as_malicious'], + version: 'V4', +}; + +const securityAlertResponseLoading = { + result_type: ResultType.RequestInProgress, + reason: Reason.notApplicable, + source: SecurityAlertSource.API, + providerRequestsCount: { + eth_call: 5, + eth_getCode: 3, + }, + features: [], +}; + +const SignatureMetricsLoading = { + account_type: '0x935e73edb9ff52e23bac7f7e043a1ecd06d05477', + chain_id: '1', + dapp_host_name: 'metamask.github.io', + eip712_primary_type: 'Permit', + request_source: 'In-App-Browser', + security_alert_reason: 'not_applicable', + security_alert_response: 'loading', + security_alert_source: 'api', + signature_type: 'eth_signTypedData', + ui_customizations: ['redesigned_confirmation', 'security_alert_loading'], + version: 'V4', + ppom_eth_call_count: 5, + ppom_eth_getCode_count: 3, +}; + +const securityAlertResponseUndefined = undefined; + +const SignatureMetricsUndefined = { + account_type: '0x935e73edb9ff52e23bac7f7e043a1ecd06d05477', + chain_id: '1', + dapp_host_name: 'metamask.github.io', + eip712_primary_type: 'Permit', + request_source: 'In-App-Browser', + signature_type: 'eth_signTypedData', + ui_customizations: ['redesigned_confirmation'], version: 'V4', }; @@ -52,6 +93,7 @@ describe('useSignatureMetrics', () => { beforeEach(() => { jest.clearAllMocks(); }); + it('should capture metrics events correctly', async () => { const { result } = renderHookWithProvider(() => useSignatureMetrics(), { state: { @@ -73,4 +115,48 @@ describe('useSignatureMetrics', () => { expect(mockTrackEvent).toHaveBeenCalledTimes(3); expect(mockAddProperties).toHaveBeenLastCalledWith(SignatureMetrics); }); + + it('captures metrics events correctly with loading security alert response', async () => { + const { result } = renderHookWithProvider(() => useSignatureMetrics(), { + state: { + ...typedSignV4ConfirmationState, + signatureRequest: { securityAlertResponse: securityAlertResponseLoading }, + }, + }); + + expect(mockTrackEvent).toHaveBeenCalledTimes(1); + expect(mockAddProperties).toHaveBeenCalledWith(SignatureMetricsLoading); + result?.current?.captureSignatureMetrics( + MetaMetricsEvents.SIGNATURE_APPROVED, + ); + expect(mockTrackEvent).toHaveBeenCalledTimes(2); + expect(mockAddProperties).toHaveBeenLastCalledWith(SignatureMetricsLoading); + result?.current?.captureSignatureMetrics( + MetaMetricsEvents.SIGNATURE_REJECTED, + ); + expect(mockTrackEvent).toHaveBeenCalledTimes(3); + expect(mockAddProperties).toHaveBeenLastCalledWith(SignatureMetricsLoading); + }); + + it('captures metrics events correctly with undefined security alert response', async () => { + const { result } = renderHookWithProvider(() => useSignatureMetrics(), { + state: { + ...typedSignV4ConfirmationState, + signatureRequest: { securityAlertResponse: securityAlertResponseUndefined }, + }, + }); + + expect(mockTrackEvent).toHaveBeenCalledTimes(1); + expect(mockAddProperties).toHaveBeenCalledWith(SignatureMetricsUndefined); + result?.current?.captureSignatureMetrics( + MetaMetricsEvents.SIGNATURE_APPROVED, + ); + expect(mockTrackEvent).toHaveBeenCalledTimes(2); + expect(mockAddProperties).toHaveBeenLastCalledWith(SignatureMetricsUndefined); + result?.current?.captureSignatureMetrics( + MetaMetricsEvents.SIGNATURE_REJECTED, + ); + expect(mockTrackEvent).toHaveBeenCalledTimes(3); + expect(mockAddProperties).toHaveBeenLastCalledWith(SignatureMetricsUndefined); + }); }); diff --git a/app/components/Views/confirmations/hooks/useSignatureMetrics.ts b/app/components/Views/confirmations/hooks/useSignatureMetrics.ts index dea5cc0aee2d..b1549621356c 100644 --- a/app/components/Views/confirmations/hooks/useSignatureMetrics.ts +++ b/app/components/Views/confirmations/hooks/useSignatureMetrics.ts @@ -38,6 +38,7 @@ const getAnalyticsParams = ( confirmationMetrics: Record<string, unknown>, ) => { const { meta = {}, from, version } = messageParams; + const { ui_customizations = [], ...blockaidProperties } = securityAlertResponse ? getBlockaidMetricsParams(securityAlertResponse) : {}; return { account_type: getAddressAccountType(from as string), @@ -45,17 +46,15 @@ const getAnalyticsParams = ( signature_type: type, version: version || 'N/A', chain_id: chainId ? getDecimalChainId(chainId) : '', - ui_customizations: ['redesigned_confirmation'], + ui_customizations: ['redesigned_confirmation', ...ui_customizations as string[]], ...(primaryType ? { eip712_primary_type: primaryType } : {}), ...(meta.analytics as Record<string, string>), - ...(securityAlertResponse - ? getBlockaidMetricsParams(securityAlertResponse) - : {}), ...getSignatureDecodingEventProps( decodingData, decodingLoading, isSimulationEnabled, ), + ...blockaidProperties, ...confirmationMetrics, }; }; diff --git a/app/util/blockaid/index.test.ts b/app/util/blockaid/index.test.ts index 626cdafebb15..236096e5d079 100644 --- a/app/util/blockaid/index.test.ts +++ b/app/util/blockaid/index.test.ts @@ -188,6 +188,30 @@ describe('Blockaid util', () => { security_alert_reason: Reason.notApplicable, }); }); + + it('should return additionalParams object when result_type is RequestInProgress', async () => { + const securityAlertResponse: SecurityAlertResponse & { source: string } = + { + result_type: ResultType.RequestInProgress, + reason: Reason.notApplicable, + source: SecurityAlertSource.API, + providerRequestsCount: { + eth_call: 5, + eth_getCode: 3, + }, + features: [], + }; + + const result = getBlockaidMetricsParams(securityAlertResponse); + expect(result).toEqual({ + ui_customizations: ['security_alert_loading'], + security_alert_response: 'loading', + security_alert_reason: Reason.notApplicable, + security_alert_source: SecurityAlertSource.API, + ppom_eth_call_count: 5, + ppom_eth_getCode_count: 3, + }); + }); }); describe('isBlockaidFeatureEnabled', () => { From 193598d2a865cd5fb2a17e3284f01bea66fc8299 Mon Sep 17 00:00:00 2001 From: metamaskbot <metamaskbot@users.noreply.github.com> Date: Thu, 24 Apr 2025 22:06:10 +0000 Subject: [PATCH 159/473] bump semvar version to 7.46.0 && build version to 1727 --- android/app/build.gradle | 4 ++-- bitrise.yml | 8 ++++---- ios/MetaMask.xcodeproj/project.pbxproj | 24 ++++++++++++------------ package.json | 2 +- 4 files changed, 19 insertions(+), 19 deletions(-) diff --git a/android/app/build.gradle b/android/app/build.gradle index cb98afe0b4a2..3c803096f2de 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -178,8 +178,8 @@ android { applicationId "io.metamask" minSdkVersion rootProject.ext.minSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion - versionName "7.44.0" - versionCode 1685 + versionName "7.46.0" + versionCode 1727 testBuildType System.getProperty('testBuildType', 'debug') missingDimensionStrategy 'react-native-camera', 'general' testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" diff --git a/bitrise.yml b/bitrise.yml index ef465128ad02..0fde722d8709 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -2210,16 +2210,16 @@ app: PROJECT_LOCATION_IOS: ios - opts: is_expand: false - VERSION_NAME: 7.44.0 + VERSION_NAME: 7.46.0 - opts: is_expand: false - VERSION_NUMBER: 1685 + VERSION_NUMBER: 1727 - opts: is_expand: false - FLASK_VERSION_NAME: 7.44.0 + FLASK_VERSION_NAME: 7.46.0 - opts: is_expand: false - FLASK_VERSION_NUMBER: 1685 + FLASK_VERSION_NUMBER: 1727 - opts: is_expand: false ANDROID_APK_LINK: '' diff --git a/ios/MetaMask.xcodeproj/project.pbxproj b/ios/MetaMask.xcodeproj/project.pbxproj index 1d7a82a69d06..cc50cbf84af9 100644 --- a/ios/MetaMask.xcodeproj/project.pbxproj +++ b/ios/MetaMask.xcodeproj/project.pbxproj @@ -1261,7 +1261,7 @@ CODE_SIGN_IDENTITY = "Apple Development"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1685; + CURRENT_PROJECT_VERSION = 1727; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = 48XVW22RCG; @@ -1299,7 +1299,7 @@ "${inherited}", ); LLVM_LTO = YES; - MARKETING_VERSION = 7.44.0; + MARKETING_VERSION = 7.46.0; ONLY_ACTIVE_ARCH = YES; OTHER_CFLAGS = "$(inherited)"; OTHER_LDFLAGS = ( @@ -1330,7 +1330,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMask.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1685; + CURRENT_PROJECT_VERSION = 1727; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 48XVW22RCG; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 48XVW22RCG; @@ -1365,7 +1365,7 @@ "${inherited}", ); LLVM_LTO = YES; - MARKETING_VERSION = 7.44.0; + MARKETING_VERSION = 7.46.0; ONLY_ACTIVE_ARCH = NO; OTHER_CFLAGS = "$(inherited)"; OTHER_LDFLAGS = ( @@ -1395,7 +1395,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMaskDebug.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1685; + CURRENT_PROJECT_VERSION = 1727; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = 48XVW22RCG; @@ -1432,7 +1432,7 @@ "\"$(SRCROOT)/MetaMask/System/Library/Frameworks\"", ); LLVM_LTO = YES; - MARKETING_VERSION = 7.44.0; + MARKETING_VERSION = 7.46.0; ONLY_ACTIVE_ARCH = YES; OTHER_CFLAGS = "$(inherited)"; OTHER_LDFLAGS = ( @@ -1461,7 +1461,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMask.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1685; + CURRENT_PROJECT_VERSION = 1727; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 48XVW22RCG; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 48XVW22RCG; @@ -1496,7 +1496,7 @@ "\"$(SRCROOT)/MetaMask/System/Library/Frameworks\"", ); LLVM_LTO = YES; - MARKETING_VERSION = 7.44.0; + MARKETING_VERSION = 7.46.0; ONLY_ACTIVE_ARCH = NO; OTHER_CFLAGS = "$(inherited)"; OTHER_LDFLAGS = ( @@ -1620,7 +1620,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMaskDebug.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1685; + CURRENT_PROJECT_VERSION = 1727; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = 48XVW22RCG; @@ -1657,7 +1657,7 @@ "\"$(SRCROOT)/MetaMask/System/Library/Frameworks\"", ); LLVM_LTO = YES; - MARKETING_VERSION = 7.44.0; + MARKETING_VERSION = 7.46.0; ONLY_ACTIVE_ARCH = YES; OTHER_CFLAGS = ( "$(inherited)", @@ -1689,7 +1689,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMask.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1685; + CURRENT_PROJECT_VERSION = 1727; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 48XVW22RCG; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 48XVW22RCG; @@ -1724,7 +1724,7 @@ "\"$(SRCROOT)/MetaMask/System/Library/Frameworks\"", ); LLVM_LTO = YES; - MARKETING_VERSION = 7.44.0; + MARKETING_VERSION = 7.46.0; ONLY_ACTIVE_ARCH = NO; OTHER_CFLAGS = ( "$(inherited)", diff --git a/package.json b/package.json index 850c0e43fdfb..9a12d5af3f11 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "metamask", - "version": "7.44.0", + "version": "7.46.0", "private": true, "scripts": { "audit:ci": "./scripts/yarn-audit.sh", From edc7356dd0d8a9eb1635004f78453ec06926e33b Mon Sep 17 00:00:00 2001 From: Nick Gambino <35090461+gambinish@users.noreply.github.com> Date: Thu, 24 Apr 2025 22:33:39 +0000 Subject: [PATCH 160/473] chore(runway): cherry-pick feat: cp-7.46.0 Solana Token Details (#14736) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## **Description** Integrates the Multichain AssetOverview screen, enabling support for Solana token details. This introduces the foundational UI and logic needed to support additional non-EVM chains such as Bitcoin in the future. - Leverages new Multichain controllers for data sourcing - Continues to handle EVM assets through separate state paths ## **Related issues** Fixes: ## **Manual testing steps** 1. Add a prefunded Solana account 2. Navigate to the Solana AssetOverview page 3. Verify the following elements render correctly: - Token balances - Fiat rates - Price charts - Interval price difference - Market data (now fully dynamic) ## **Screenshots/Recordings** https://github.com/user-attachments/assets/ffa7e17a-7ce2-47ee-b7ad-90eaefc0c34e ## **Pre-merge author checklist** - [x] I’ve followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile Coding Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [x] I've completed the PR template to the best of my ability - [x] I’ve included tests if applicable - [x] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [x] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. ## **Pre-merge reviewer checklist** - [ ] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [ ] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots. --- .../UI/AssetOverview/AssetOverview.test.tsx | 29 +- .../UI/AssetOverview/AssetOverview.tsx | 91 +++-- .../UI/AssetOverview/Price/Price.test.tsx | 6 + .../UI/AssetOverview/Price/Price.tsx | 23 +- .../TokenDetails/TokenDetails.test.tsx | 52 ++- .../TokenDetails/TokenDetails.tsx | 221 ++++++----- .../__snapshots__/TokenDetails.test.tsx.snap | 6 +- .../__snapshots__/AssetOverview.test.tsx.snap | 362 ++++++++++++------ .../utils/calculateAssetPrice.test.ts | 144 +++++++ .../utils/calculateAssetPrice.ts | 92 +++++ .../utils/getTokenDetails.test.ts | 193 ++++++++++ .../UI/AssetOverview/utils/getTokenDetails.ts | 37 ++ .../AssetOverview/utils/marketDetails.test.ts | 120 ++++++ .../UI/AssetOverview/utils/marketDetails.ts | 156 ++++++++ .../Tokens/TokenList/TokenListItem/index.tsx | 7 - app/components/Views/Asset/index.js | 17 +- .../hooks/useTokenHistoricalPrices.ts | 116 ++++-- app/selectors/multichain/evm.ts | 42 +- 18 files changed, 1426 insertions(+), 288 deletions(-) create mode 100644 app/components/UI/AssetOverview/utils/calculateAssetPrice.test.ts create mode 100644 app/components/UI/AssetOverview/utils/calculateAssetPrice.ts create mode 100644 app/components/UI/AssetOverview/utils/getTokenDetails.test.ts create mode 100644 app/components/UI/AssetOverview/utils/getTokenDetails.ts create mode 100644 app/components/UI/AssetOverview/utils/marketDetails.test.ts create mode 100644 app/components/UI/AssetOverview/utils/marketDetails.ts diff --git a/app/components/UI/AssetOverview/AssetOverview.test.tsx b/app/components/UI/AssetOverview/AssetOverview.test.tsx index cb0acf2404f7..ab3eb566edd9 100644 --- a/app/components/UI/AssetOverview/AssetOverview.test.tsx +++ b/app/components/UI/AssetOverview/AssetOverview.test.tsx @@ -73,8 +73,8 @@ const mockInitialState = { logo: 'https://upload.wikimedia.org/wikipedia/commons/0/05/Ethereum_logo_2014.svg', name: 'Ethereum', symbol: 'ETH', - price: {} - } + price: {}, + }, ], }, }, @@ -129,12 +129,14 @@ jest.mock('../../../core/Engine', () => ({ }, })); -const mockAddPopularNetwork = jest.fn().mockImplementation(() => Promise.resolve()); +const mockAddPopularNetwork = jest + .fn() + .mockImplementation(() => Promise.resolve()); jest.mock('../../../components/hooks/useAddNetwork', () => ({ useAddNetwork: jest.fn().mockImplementation(() => ({ - addPopularNetwork: mockAddPopularNetwork, - networkModal: null, - })) + addPopularNetwork: mockAddPopularNetwork, + networkModal: null, + })), })); const asset = { @@ -437,6 +439,7 @@ describe('AssetOverview', () => { <AssetOverview asset={{ ...asset, + address: 'solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp/slip44:501', chainId: SolScope.Mainnet, isNative: true, }} @@ -455,6 +458,13 @@ describe('AssetOverview', () => { MultichainNetworkController: { selectedMultichainNetworkChainId: SolScope.Mainnet, }, + MultichainAssetsRatesController: { + conversionRates: { + 'solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp/slip44:501': { + rate: '151.23', + }, + }, + }, }, }, }, @@ -488,12 +498,15 @@ describe('AssetOverview', () => { destinationToken: assetFromSearch.address, sourcePage: 'MainView', chainId: assetFromSearch.chainId, - } + }, }); }); it('should prompt to add the network if coming from search and on a different chain', async () => { - (Engine.context.NetworkController.getNetworkConfigurationByChainId as jest.Mock).mockReturnValueOnce(null); + ( + Engine.context.NetworkController + .getNetworkConfigurationByChainId as jest.Mock + ).mockReturnValueOnce(null); const differentChainAssetFromSearch = { ...assetFromSearch, chainId: '0xa', diff --git a/app/components/UI/AssetOverview/AssetOverview.tsx b/app/components/UI/AssetOverview/AssetOverview.tsx index 6378c4d9d8a1..834e7b173e8d 100644 --- a/app/components/UI/AssetOverview/AssetOverview.tsx +++ b/app/components/UI/AssetOverview/AssetOverview.tsx @@ -1,8 +1,13 @@ -import React, { useCallback, useEffect } from 'react'; +import React, { useCallback, useEffect, useMemo } from 'react'; import { TouchableOpacity, View } from 'react-native'; import { useNavigation } from '@react-navigation/native'; import { useDispatch, useSelector } from 'react-redux'; -import { Hex } from '@metamask/utils'; +import { + Hex, + ///: BEGIN:ONLY_INCLUDE_IF(keyring-snaps) + CaipAssetId, + ///: END:ONLY_INCLUDE_IF +} from '@metamask/utils'; import I18n, { strings } from '../../../../locales/i18n'; import { TokenOverviewSelectorsIDs } from '../../../../e2e/selectors/wallet/TokenOverview.selectors'; import { newAssetTransaction } from '../../../actions/transaction'; @@ -52,7 +57,10 @@ import { useMetrics } from '../../../components/hooks/useMetrics'; import { createBuyNavigationDetails } from '../Ramp/routes/utils'; import { TokenI } from '../Tokens/types'; import AssetDetailsActions from '../../../components/Views/AssetDetails/AssetDetailsActions'; -import { isAssetFromSearch, selectTokenDisplayData } from '../../../selectors/tokenSearchDiscoveryDataController'; +import { + isAssetFromSearch, + selectTokenDisplayData, +} from '../../../selectors/tokenSearchDiscoveryDataController'; import { selectIsEvmNetworkSelected } from '../../../selectors/multichainNetworkController'; import { formatWithThreshold } from '../../../util/assets'; import { @@ -61,6 +69,11 @@ import { } from '../Bridge/hooks/useSwapBridgeNavigation'; import { swapsUtils } from '@metamask/swaps-controller'; import { TraceName, endTrace } from '../../../util/trace'; +///: BEGIN:ONLY_INCLUDE_IF(keyring-snaps) +import { selectMultichainAssetsRates } from '../../../selectors/multichain'; +///: END:ONLY_INCLUDE_IF +import { calculateAssetPrice } from './utils/calculateAssetPrice'; + interface AssetOverviewProps { asset: TokenI; displayBuyButton?: boolean; @@ -102,10 +115,20 @@ const AssetOverview: React.FC<AssetOverviewProps> = ({ const ticker = nativeCurrency; const selectedNetworkClientId = useSelector(selectSelectedNetworkClientId); const isEvmSelected = useSelector(selectIsEvmNetworkSelected); + const tokenResult = useSelector((state: RootState) => + selectTokenDisplayData(state, asset.chainId as Hex, asset.address as Hex), + ); + ///: BEGIN:ONLY_INCLUDE_IF(keyring-snaps) + const multichainAssetsRates = useSelector(selectMultichainAssetsRates); + + const multichainAssetRates = + multichainAssetsRates?.[asset.address as CaipAssetId]; + ///: END:ONLY_INCLUDE_IF const currentAddress = asset.address as Hex; const { data: prices = [], isLoading } = useTokenHistoricalPrices({ + asset, address: currentAddress, chainId, timePeriod, @@ -237,13 +260,21 @@ const AssetOverview: React.FC<AssetOverviewProps> = ({ </View> ); + const chartNavigationButtons: TimePeriod[] = useMemo( + () => + isEvmSelected + ? ['1d', '1w', '1m', '3m', '1y', '3y'] + : ['1d', '1w', '1m', '3m', '1y'], + [isEvmSelected], + ); + const handleSelectTimePeriod = useCallback((_timePeriod: TimePeriod) => { setTimePeriod(_timePeriod); }, []); const renderChartNavigationButton = useCallback( () => - (['1d', '1w', '1m', '3m', '1y', '3y'] as TimePeriod[]).map((label) => ( + chartNavigationButtons.map((label) => ( <ChartNavigationButton key={label} label={strings( @@ -253,9 +284,12 @@ const AssetOverview: React.FC<AssetOverviewProps> = ({ selected={timePeriod === label} /> )), - [handleSelectTimePeriod, timePeriod], + [handleSelectTimePeriod, timePeriod, chartNavigationButtons], ); - const itemAddress = safeToChecksumAddress(asset.address); + + const itemAddress = isEvmSelected + ? safeToChecksumAddress(asset.address) + : asset.address; const currentChainId = chainId as Hex; const exchangeRate = @@ -299,25 +333,38 @@ const AssetOverview: React.FC<AssetOverviewProps> = ({ asset.isETH ? asset.ticker : asset.symbol }`; - const tokenResult = useSelector((state: RootState) => selectTokenDisplayData(state, asset.chainId as Hex, asset.address as Hex)); + const convertedMultichainAssetRates = + !isEvmSelected && multichainAssetRates + ? { + rate: Number(multichainAssetRates.rate), + marketData: undefined, + } + : undefined; let currentPrice = 0; let priceDiff = 0; + let comparePrice = 0; if (isAssetFromSearch(asset) && tokenResult?.found) { currentPrice = tokenResult.price?.price || 0; } else { - const tickerConversionRate = - conversionRateByTicker?.[nativeCurrency]?.conversionRate ?? 0; - currentPrice = - exchangeRate && tickerConversionRate - ? exchangeRate * tickerConversionRate - : 0; - } - - const comparePrice = prices[0]?.[1] || 0; - if (currentPrice !== undefined && currentPrice !== null) { - priceDiff = currentPrice - comparePrice; + const { + currentPrice: calculatedPrice, + priceDiff: calculatedPriceDiff, + comparePrice: calculatedComparePrice, + } = calculateAssetPrice({ + _asset: asset, + isEvmNetworkSelected: isEvmSelected, + exchangeRate, + tickerConversionRate: + conversionRateByTicker?.[nativeCurrency]?.conversionRate ?? undefined, + prices, + multichainAssetRates: convertedMultichainAssetRates, + timePeriod, + }); + currentPrice = calculatedPrice; + priceDiff = calculatedPriceDiff; + comparePrice = calculatedComparePrice; } return ( @@ -335,6 +382,10 @@ const AssetOverview: React.FC<AssetOverviewProps> = ({ comparePrice={comparePrice} isLoading={isLoading} timePeriod={timePeriod} + ///: BEGIN:ONLY_INCLUDE_IF(keyring-snaps) + multichainAssetsRates={multichainAssetsRates} + ///: END:ONLY_INCLUDE_IF + isEvmNetworkSelected={isEvmSelected} /> <View style={styles.chartNavigationWrapper}> {renderChartNavigationButton()} @@ -358,10 +409,6 @@ const AssetOverview: React.FC<AssetOverviewProps> = ({ <View style={styles.tokenDetailsWrapper}> <TokenDetails asset={asset} /> </View> - {/* Commented out since we are going to re enable it after curating content */} - {/* <View style={styles.aboutWrapper}> - // <AboutAsset asset={asset} chainId={chainId} /> - </View> */} {networkModal} </View> )} diff --git a/app/components/UI/AssetOverview/Price/Price.test.tsx b/app/components/UI/AssetOverview/Price/Price.test.tsx index 80ccfa370d7f..fec6917c1372 100644 --- a/app/components/UI/AssetOverview/Price/Price.test.tsx +++ b/app/components/UI/AssetOverview/Price/Price.test.tsx @@ -6,6 +6,8 @@ import { TimePeriod, TokenPrice, } from '../../../../components/hooks/useTokenHistoricalPrices'; +import { AssetConversion } from '@metamask/snaps-sdk'; +import { CaipAssetId } from '@metamask/utils'; const mockAsset: TokenI = { name: 'Ethereum', @@ -36,6 +38,8 @@ const mockProps: { comparePrice: number; isLoading: boolean; timePeriod: TimePeriod; + isEvmNetworkSelected: boolean; + multichainAssetsRates: Record<CaipAssetId, AssetConversion>; } = { asset: mockAsset, prices: mockPrices, @@ -45,6 +49,8 @@ const mockProps: { comparePrice: 100, isLoading: false, timePeriod: '1d', + isEvmNetworkSelected: true, + multichainAssetsRates: {}, }; describe('Price Component', () => { diff --git a/app/components/UI/AssetOverview/Price/Price.tsx b/app/components/UI/AssetOverview/Price/Price.tsx index 1fdc4db8be4a..e854073ad627 100644 --- a/app/components/UI/AssetOverview/Price/Price.tsx +++ b/app/components/UI/AssetOverview/Price/Price.tsx @@ -19,6 +19,10 @@ import { distributeDataPoints } from '../PriceChart/utils'; import styleSheet from './Price.styles'; import { TokenOverviewSelectorsIDs } from '../../../../../e2e/selectors/wallet/TokenOverview.selectors'; import { TokenI } from '../../Tokens/types'; +///: BEGIN:ONLY_INCLUDE_IF(keyring-snaps) +import { CaipAssetId } from '@metamask/utils'; +import { AssetConversion } from '@metamask/snaps-sdk'; +///: END:ONLY_INCLUDE_IF interface PriceProps { asset: TokenI; @@ -29,6 +33,10 @@ interface PriceProps { comparePrice: number; isLoading: boolean; timePeriod: TimePeriod; + ///: BEGIN:ONLY_INCLUDE_IF(keyring-snaps) + multichainAssetsRates: Record<CaipAssetId, AssetConversion>; + ///: END:ONLY_INCLUDE_IF + isEvmNetworkSelected: boolean; } const Price = ({ @@ -40,7 +48,16 @@ const Price = ({ comparePrice, isLoading, timePeriod, + ///: BEGIN:ONLY_INCLUDE_IF(keyring-snaps) + multichainAssetsRates, + ///: END:ONLY_INCLUDE_IF + isEvmNetworkSelected, }: PriceProps) => { + ///: BEGIN:ONLY_INCLUDE_IF(keyring-snaps) + const multichainAssetRates = + multichainAssetsRates[asset.address as CaipAssetId]; + ///: END:ONLY_INCLUDE_IF + const [activeChartIndex, setActiveChartIndex] = useState<number>(-1); const distributedPriceData = useMemo(() => { @@ -64,8 +81,10 @@ const Price = ({ '3y': strings('asset_overview.chart_time_period.3y'), }; - const price: number = - distributedPriceData[activeChartIndex]?.[1] || currentPrice; + const price: number = isEvmNetworkSelected + ? distributedPriceData[activeChartIndex]?.[1] || currentPrice + : Number(multichainAssetRates.rate); + const date: string | undefined = distributedPriceData[activeChartIndex]?.[0] ? toDateFormat(distributedPriceData[activeChartIndex]?.[0]) : timePeriodTextDict[timePeriod]; diff --git a/app/components/UI/AssetOverview/TokenDetails/TokenDetails.test.tsx b/app/components/UI/AssetOverview/TokenDetails/TokenDetails.test.tsx index faa21b64d073..d979dfea56a3 100644 --- a/app/components/UI/AssetOverview/TokenDetails/TokenDetails.test.tsx +++ b/app/components/UI/AssetOverview/TokenDetails/TokenDetails.test.tsx @@ -19,6 +19,8 @@ import * as reactRedux from 'react-redux'; // eslint-disable-next-line import/no-namespace import * as StakeConstants from '../../Stake/constants'; import { strings } from '../../../../../locales/i18n'; +import { selectMultichainAssetsRates } from '../../../../selectors/multichain'; +import { selectIsEvmNetworkSelected } from '../../../../selectors/multichainNetworkController'; jest.mock('../../../../core/Engine', () => ({ getTotalEvmFiatAccountBalance: jest.fn(), context: { @@ -147,9 +149,22 @@ describe('TokenDetails', () => { const useSelectorSpy = jest.spyOn(reactRedux, 'useSelector'); useSelectorSpy.mockImplementation((selectorOrCallback) => { const SELECTOR_MOCKS = { - selectTokenMarketDataByChainId: mockTokenMarketDataByChainId['0x1'], + selectIsEvmNetworkSelected: true, + selectEvmTokenMarketData: { + marketData: + mockTokenMarketDataByChainId['0x1'][ + '0x6B175474E89094C44Da98b954EedeAC495271d0F' + ], + metadata: { + decimals: 18, + conversionRate: 2712.15, + aggregators: ['Metamask', 'Coinmarketcap'], + }, + }, + selectTokenMarketDataByChainId: {}, selectConversionRateBySymbol: mockExchangeRate, selectNativeCurrencyByChainId: 'ETH', + selectMultichainAssetsRates: {}, } as const; if (typeof selectorOrCallback === 'function') { @@ -166,11 +181,19 @@ describe('TokenDetails', () => { case selectTokenList: return mockAssets; case selectContractExchangeRates: - return mockContractExchangeRates; + return {}; case selectConversionRate: return mockExchangeRate; case selectCurrentCurrency: return mockCurrentCurrency; + case selectProviderConfig: + return { ticker: 'ETH' }; + case selectEvmTicker: + return 'ETH'; + case selectMultichainAssetsRates: + return {}; + case selectIsEvmNetworkSelected: + return true; default: return undefined; } @@ -196,19 +219,18 @@ describe('TokenDetails', () => { expect(getByText('Metamask, Coinmarketcap')).toBeDefined(); expect(getByText('Market details')).toBeDefined(); expect(getByText('Market Cap')).toBeDefined(); - expect(getByText('5.22B')).toBeDefined(); expect(getByText('Total Volume (24h)')).toBeDefined(); - expect(getByText('147.65M')).toBeDefined(); + expect(getByText('$147.65M')).toBeDefined(); expect(getByText('Volume / Market Cap')).toBeDefined(); expect(getByText('2.83%')).toBeDefined(); expect(getByText('Circulating supply')).toBeDefined(); expect(getByText('5.21B')).toBeDefined(); expect(getByText('All time high')).toBeDefined(); + expect(getByText('$1.22')).toBeDefined(); expect(getByText('All time low')).toBeDefined(); expect(getByText('$0.88')).toBeDefined(); expect(getByText('2.83%')).toBeDefined(); expect(getByText('Fully diluted')).toBeDefined(); - expect(getByText('1.92M')).toBeDefined(); expect(toJSON()).toMatchSnapshot(); }); @@ -218,6 +240,7 @@ describe('TokenDetails', () => { selectTokenMarketDataByChainId: {}, selectConversionRateBySymbol: mockExchangeRate, selectNativeCurrencyByChainId: 'ETH', + selectMultichainAssetsRates: {}, } as const; useSelectorSpy.mockImplementation((selectorOrCallback) => { @@ -244,6 +267,8 @@ describe('TokenDetails', () => { return { ticker: 'ETH' }; case selectEvmTicker: return 'ETH'; + case selectMultichainAssetsRates: + return {}; default: return undefined; } @@ -255,6 +280,7 @@ describe('TokenDetails', () => { state: initialState, }, ); + expect(getByText('Token details')).toBeDefined(); expect(queryByText('Market details')).toBeNull(); }); @@ -263,7 +289,12 @@ describe('TokenDetails', () => { const useSelectorSpy = jest.spyOn(reactRedux, 'useSelector'); useSelectorSpy.mockImplementation((selectorOrCallback) => { const SELECTOR_MOCKS = { - selectTokenMarketDataByChainId: mockTokenMarketDataByChainId['0x1'], + selectEvmTokenMarketData: { + marketData: + mockTokenMarketDataByChainId['0x1'][ + '0x6B175474E89094C44Da98b954EedeAC495271d0F' + ], + }, selectConversionRateBySymbol: mockExchangeRate, selectNativeCurrencyByChainId: 'ETH', } as const; @@ -279,23 +310,26 @@ describe('TokenDetails', () => { } switch (selectorOrCallback) { - case selectTokenList: - return {}; case selectContractExchangeRates: return mockContractExchangeRates; case selectConversionRate: return mockExchangeRate; case selectCurrentCurrency: return mockCurrentCurrency; + case selectMultichainAssetsRates: + return {}; + case selectIsEvmNetworkSelected: + return true; default: return undefined; } }); - const { getByText, queryByText } = renderWithProvider( + const { getByText, queryByText, debug } = renderWithProvider( <TokenDetails asset={mockDAI} />, { state: initialState }, ); + debug(); expect(queryByText('Token details')).toBeNull(); expect(getByText('Market details')).toBeDefined(); }); diff --git a/app/components/UI/AssetOverview/TokenDetails/TokenDetails.tsx b/app/components/UI/AssetOverview/TokenDetails/TokenDetails.tsx index 8abb605ade38..f73787a6e576 100644 --- a/app/components/UI/AssetOverview/TokenDetails/TokenDetails.tsx +++ b/app/components/UI/AssetOverview/TokenDetails/TokenDetails.tsx @@ -1,32 +1,43 @@ -import { zeroAddress } from 'ethereumjs-util'; -import { Hex } from '@metamask/utils'; +import { + ///: BEGIN:ONLY_INCLUDE_IF(keyring-snaps) + CaipAssetId, + ///: END:ONLY_INCLUDE_IF + Hex, +} from '@metamask/utils'; import { RootState } from '../../../../reducers'; -import React from 'react'; +import React, { useMemo } from 'react'; import { View } from 'react-native'; import { useSelector } from 'react-redux'; import i18n from '../../../../../locales/i18n'; import { useStyles } from '../../../../component-library/hooks'; import styleSheet from './TokenDetails.styles'; import { safeToChecksumAddress } from '../../../../util/address'; -import { selectTokenList } from '../../../../selectors/tokenListController'; -import { selectTokenMarketDataByChainId } from '../../../../selectors/tokenRatesController'; -import { selectConversionRateBySymbol, selectCurrentCurrency } from '../../../../selectors/currencyRateController'; -import { selectNativeCurrencyByChainId } from '../../../../selectors/networkController'; import { - convertDecimalToPercentage, - localizeLargeNumber, -} from '../../../../util/number'; -import { formatCurrency } from '../../../../util/confirm-tx'; + selectConversionRateBySymbol, + selectCurrentCurrency, +} from '../../../../selectors/currencyRateController'; +import { selectNativeCurrencyByChainId } from '../../../../selectors/networkController'; import Logger from '../../../../util/Logger'; import TokenDetailsList from './TokenDetailsList'; import MarketDetailsList from './MarketDetailsList'; import { TokenI } from '../../Tokens/types'; import StakingEarnings from '../../Stake/components/StakingEarnings'; -import { isAssetFromSearch, selectTokenDisplayData } from '../../../../selectors/tokenSearchDiscoveryDataController'; +import { + isAssetFromSearch, + selectTokenDisplayData, +} from '../../../../selectors/tokenSearchDiscoveryDataController'; import { isSupportedLendingTokenByChainId } from '../../Earn/utils/token'; import EarnEmptyStateCta from '../../Earn/components/EmptyStateCta'; import { parseFloatSafe } from '../../Earn/utils'; import { isStablecoinLendingFeatureEnabled } from '../../Stake/constants'; +import { selectIsEvmNetworkSelected } from '../../../../selectors/multichainNetworkController'; +import { selectEvmTokenMarketData } from '../../../../selectors/multichain/evm'; +///: BEGIN:ONLY_INCLUDE_IF(keyring-snaps) +import { selectMultichainAssetsRates } from '../../../../selectors/multichain'; +///: END:ONLY_INCLUDE_IF +import { MarketDataDetails } from '@metamask/assets-controllers'; +import { formatMarketDetails } from '../utils/marketDetails'; +import { getTokenDetails } from '../utils/getTokenDetails'; export interface TokenDetails { contractAddress: string | null; @@ -48,11 +59,13 @@ interface TokenDetailsProps { asset: TokenI; } +interface EvmMarketData { + metadata?: Record<string, string | number | string[]>; + marketData?: MarketDataDetails; +} + const TokenDetails: React.FC<TokenDetailsProps> = ({ asset }) => { const { styles } = useStyles(styleSheet, {}); - const tokenExchangeRatesByChainId = useSelector((state: RootState) => - selectTokenMarketDataByChainId(state, asset.chainId as Hex), - ); const nativeCurrency = useSelector((state: RootState) => selectNativeCurrencyByChainId(state, asset.chainId as Hex), ); @@ -60,91 +73,111 @@ const TokenDetails: React.FC<TokenDetailsProps> = ({ asset }) => { selectConversionRateBySymbol(state, nativeCurrency), ); const currentCurrency = useSelector(selectCurrentCurrency); - const tokenContractAddress = safeToChecksumAddress(asset.address); - const tokenList = useSelector(selectTokenList); - let conversionRate; - if (isAssetFromSearch(asset)) { - conversionRate = 1; - } else { - conversionRate = conversionRateBySymbol; - } + const isEvmNetworkSelected = useSelector(selectIsEvmNetworkSelected); - const tokenExchangeRates = tokenExchangeRatesByChainId; + const tokenContractAddress = isEvmNetworkSelected + ? safeToChecksumAddress(asset.address) + : asset.address; - let tokenMetadata; - let marketData; + const tokenSearchResult = useSelector((state: RootState) => + selectTokenDisplayData(state, asset.chainId as Hex, asset.address as Hex), + ); + + ///: BEGIN:ONLY_INCLUDE_IF(keyring-snaps) + const allMultichainAssetsRates = useSelector(selectMultichainAssetsRates); - const tokenResult = useSelector((state: RootState) => selectTokenDisplayData(state, asset.chainId as Hex, asset.address as Hex)); + const multichainAssetRates = + allMultichainAssetsRates[asset.address as CaipAssetId]; - if (isAssetFromSearch(asset) && tokenResult?.found && tokenResult.price) { - marketData = tokenResult.price; - tokenMetadata = tokenResult.token; - } else if (asset.isETH) { - marketData = tokenExchangeRates?.[zeroAddress() as Hex]; - } else if (tokenContractAddress) { - tokenMetadata = tokenList?.[tokenContractAddress.toLowerCase()]; - marketData = tokenExchangeRates?.[tokenContractAddress as Hex]; + const nonEvmMarketData = multichainAssetRates?.marketData; + const nonEvmMetadata = { + rate: Number(multichainAssetRates?.rate), + conversionTime: Number(multichainAssetRates?.conversionTime), + }; + ///: END:ONLY_INCLUDE_IF + + const evmMarketData = useSelector((state: RootState) => + isEvmNetworkSelected + ? selectEvmTokenMarketData(state, { + chainId: asset.chainId as Hex, + tokenAddress: asset.address, + }) + : null, + ) as EvmMarketData | null; + + const evmConversionRate = isAssetFromSearch(asset) + ? 1 + : conversionRateBySymbol; + + const conversionRate = isEvmNetworkSelected + ? evmConversionRate + : nonEvmMetadata.rate; + + let marketData; + let tokenMetadata; + + if ( + isAssetFromSearch(asset) && + tokenSearchResult?.found && + tokenSearchResult.price + ) { + marketData = tokenSearchResult.price; + tokenMetadata = tokenSearchResult.token; } else { - Logger.log('cannot find contract address'); - return null; + tokenMetadata = isEvmNetworkSelected ? evmMarketData?.metadata : null; + marketData = isEvmNetworkSelected + ? evmMarketData?.marketData + : nonEvmMarketData; } + const tokenDetails = useMemo( + () => + getTokenDetails( + asset, + isEvmNetworkSelected, + tokenContractAddress, + tokenMetadata as Record<string, string | number | string[]>, + ), + [asset, isEvmNetworkSelected, tokenContractAddress, tokenMetadata], + ); - if (!conversionRate || conversionRate < 0) { - Logger.log('invalid conversion rate'); - return null; - } + const marketDetails = useMemo(() => { + if (!marketData) return; - const tokenDetails: TokenDetails = asset.isETH - ? { - contractAddress: zeroAddress(), - tokenDecimal: 18, - tokenList: '', - } - : { - contractAddress: tokenContractAddress || null, - tokenDecimal: tokenMetadata?.decimals || null, - tokenList: tokenMetadata?.aggregators?.join(', ') || null, - }; - - const marketDetails: MarketDetails = { - marketCap: - marketData?.marketCap > 0 - ? localizeLargeNumber(i18n, conversionRate * marketData.marketCap) - : null, - totalVolume: - marketData?.totalVolume > 0 - ? localizeLargeNumber(i18n, conversionRate * marketData.totalVolume) - : null, - volumeToMarketCap: - marketData?.marketCap > 0 - ? convertDecimalToPercentage( - marketData.totalVolume / marketData.marketCap, - ) - : null, - circulatingSupply: - marketData?.circulatingSupply > 0 - ? localizeLargeNumber(i18n, marketData.circulatingSupply) - : null, - allTimeHigh: - marketData?.allTimeHigh > 0 - ? formatCurrency( - conversionRate * marketData.allTimeHigh, - currentCurrency, - ) - : null, - allTimeLow: - marketData?.allTimeLow > 0 - ? formatCurrency( - conversionRate * marketData.allTimeLow, - currentCurrency, - ) - : null, - fullyDiluted: - marketData?.dilutedMarketCap > 0 - ? localizeLargeNumber(i18n, marketData.dilutedMarketCap) - : null, - }; + if (!conversionRate || conversionRate < 0) { + Logger.log('invalid conversion rate'); + return; + } + + return formatMarketDetails( + { + marketCap: marketData.marketCap + ? Number(marketData.marketCap) + : undefined, + totalVolume: marketData.totalVolume + ? Number(marketData.totalVolume) + : undefined, + circulatingSupply: marketData.circulatingSupply + ? Number(marketData.circulatingSupply) + : undefined, + allTimeHigh: marketData.allTimeHigh + ? Number(marketData.allTimeHigh) + : undefined, + allTimeLow: marketData.allTimeLow + ? Number(marketData.allTimeLow) + : undefined, + dilutedMarketCap: (marketData as MarketDataDetails)?.dilutedMarketCap + ? Number((marketData as MarketDataDetails).dilutedMarketCap) + : undefined, + }, + { + locale: i18n.locale, + currentCurrency, + isEvmNetworkSelected, + conversionRate, + }, + ); + }, [marketData, currentCurrency, isEvmNetworkSelected, conversionRate]); const hasAssetBalance = asset.balanceFiat && parseFloatSafe(asset.balanceFiat) > 0; @@ -155,10 +188,12 @@ const TokenDetails: React.FC<TokenDetailsProps> = ({ asset }) => { {isStablecoinLendingFeatureEnabled() && isSupportedLendingTokenByChainId(asset.symbol, asset.chainId ?? '') && hasAssetBalance && <EarnEmptyStateCta token={asset} />} - {(asset.isETH || tokenMetadata) && ( + {(asset.isETH || tokenMetadata || !isEvmNetworkSelected) && ( <TokenDetailsList tokenDetails={tokenDetails} /> )} - {marketData && <MarketDetailsList marketDetails={marketDetails} />} + {marketData && marketDetails && ( + <MarketDetailsList marketDetails={marketDetails} /> + )} </View> ); }; diff --git a/app/components/UI/AssetOverview/TokenDetails/__snapshots__/TokenDetails.test.tsx.snap b/app/components/UI/AssetOverview/TokenDetails/__snapshots__/TokenDetails.test.tsx.snap index 8ab0d2b1e40b..22b087762e30 100644 --- a/app/components/UI/AssetOverview/TokenDetails/__snapshots__/TokenDetails.test.tsx.snap +++ b/app/components/UI/AssetOverview/TokenDetails/__snapshots__/TokenDetails.test.tsx.snap @@ -260,7 +260,7 @@ exports[`TokenDetails should render correctly 1`] = ` } } > - 5.22B + $5.22B </Text> </View> <View @@ -300,7 +300,7 @@ exports[`TokenDetails should render correctly 1`] = ` } } > - 147.65M + $147.65M </Text> </View> <View @@ -500,7 +500,7 @@ exports[`TokenDetails should render correctly 1`] = ` } } > - 1.92M + $5.22B </Text> </View> </View> diff --git a/app/components/UI/AssetOverview/__snapshots__/AssetOverview.test.tsx.snap b/app/components/UI/AssetOverview/__snapshots__/AssetOverview.test.tsx.snap index 470dc8ecd134..2ca14b187703 100644 --- a/app/components/UI/AssetOverview/__snapshots__/AssetOverview.test.tsx.snap +++ b/app/components/UI/AssetOverview/__snapshots__/AssetOverview.test.tsx.snap @@ -1142,7 +1142,16 @@ exports[`AssetOverview should render correctly 1`] = ` "paddingHorizontal": 16, } } - /> + > + <View + style={ + { + "gap": 24, + "marginTop": 24, + } + } + /> + </View> </View> </View> `; @@ -2326,7 +2335,16 @@ exports[`AssetOverview should render native balances even if there are no accoun "paddingHorizontal": 16, } } - /> + > + <View + style={ + { + "gap": 24, + "marginTop": 24, + } + } + /> + </View> </View> </View> `; @@ -2380,41 +2398,7 @@ exports[`AssetOverview should render native balances when non evm network is sel } testID="token-price" > - <View - style={ - { - "paddingTop": 8, - } - } - > - <View - onLayout={[Function]} - > - <View - style={ - { - "position": "relative", - } - } - > - <View - style={ - [ - { - "borderRadius": 6, - "height": 32, - "width": 100, - }, - { - "backgroundColor": "#E1E9EE", - "overflow": "hidden", - }, - ] - } - /> - </View> - </View> - </View> + $151.23 </Text> <Text accessibilityRole="text" @@ -2429,76 +2413,110 @@ exports[`AssetOverview should render native balances when non evm network is sel } } > - <View + <Text + accessibilityRole="text" style={ { - "paddingTop": 2, + "color": "#1c7e33", + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, + "fontWeight": "500", + "letterSpacing": 0, + "lineHeight": 24, } } - testID="loading-price-diff" > - <View - onLayout={[Function]} - > - <View - style={ + <Text + allowFontScaling={false} + style={ + [ { - "position": "relative", - } + "color": undefined, + "fontSize": 16, + }, + { + "marginTop": 10, + }, + { + "fontFamily": "Feather", + "fontStyle": "normal", + "fontWeight": "normal", + }, + {}, + ] + } + > +  + </Text> + + $151.23 + ( + + + Infinity + %) + + <Text + accessibilityRole="text" + style={ + { + "color": "#686e7d", + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, + "fontWeight": "500", + "letterSpacing": 0, + "lineHeight": 24, } - > - <View - style={ - [ - { - "borderRadius": 6, - "height": 18, - "width": 150, - }, - { - "backgroundColor": "#E1E9EE", - "overflow": "hidden", - }, - ] - } - /> - </View> - </View> - </View> + } + > + Today + </Text> + </Text> </Text> </View> <View style={ { - "paddingHorizontal": 16, - "paddingTop": 10, + "height": 576.96, + "marginVertical": 10, + "paddingLeft": 0, + "paddingRight": 0, + "paddingTop": 0, "width": 750, } } > <View - onLayout={[Function]} + onMoveShouldSetResponder={[Function]} + onMoveShouldSetResponderCapture={[Function]} + onResponderEnd={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderReject={[Function]} + onResponderRelease={[Function]} + onResponderStart={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} + onStartShouldSetResponderCapture={[Function]} + style={ + { + "flex": 1, + } + } > <View style={ { - "position": "relative", + "flex": 1, } } > <View + onLayout={[Function]} style={ - [ - { - "borderRadius": 6, - "height": 586.96, - "width": 718, - }, - { - "backgroundColor": "#E1E9EE", - "overflow": "hidden", - }, - ] + { + "flex": 1, + } } /> </View> @@ -2670,37 +2688,6 @@ exports[`AssetOverview should render native balances when non evm network is sel 1Y </Text> </TouchableOpacity> - <TouchableOpacity - onPress={[Function]} - style={ - { - "alignItems": "center", - "backgroundColor": "#ffffff", - "borderRadius": 40, - "justifyContent": "center", - "paddingHorizontal": 8, - "paddingLeft": 10, - "paddingVertical": 2, - } - } - > - <Text - accessibilityRole="text" - style={ - { - "color": "#686e7d", - "fontFamily": "CentraNo1-Book", - "fontSize": 14, - "fontWeight": "400", - "letterSpacing": 3, - "lineHeight": 22, - "textAlign": "center", - } - } - > - 3Y - </Text> - </TouchableOpacity> </View> <View style={ @@ -3507,7 +3494,156 @@ exports[`AssetOverview should render native balances when non evm network is sel "paddingHorizontal": 16, } } - /> + > + <View + style={ + { + "gap": 24, + "marginTop": 24, + } + } + > + <View> + <Text + accessibilityRole="text" + style={ + { + "color": "#121314", + "fontFamily": "CentraNo1-Bold", + "fontSize": 18, + "fontWeight": "700", + "letterSpacing": 0, + "lineHeight": 24, + "paddingVertical": 8, + } + } + > + Token details + </Text> + <View + style={ + { + "paddingBottom": 8, + "paddingTop": 8, + } + } + > + <View + style={ + [ + { + "flexDirection": "row", + "justifyContent": "space-between", + "paddingVertical": 4, + }, + { + "paddingTop": 0, + }, + ] + } + > + <Text + accessibilityRole="text" + style={ + { + "color": "#686e7d", + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, + "fontWeight": "500", + "letterSpacing": 0, + "lineHeight": 24, + } + } + > + Contract address + </Text> + <TouchableOpacity + onPress={[Function]} + style={ + { + "alignItems": "center", + "backgroundColor": "#4459ff1a", + "borderRadius": 20, + "flexDirection": "row", + "marginLeft": 8, + "paddingHorizontal": 8, + } + } + > + <Text + accessibilityRole="text" + style={ + { + "color": "#4459ff", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, + "fontWeight": "400", + "letterSpacing": 0, + "lineHeight": 22, + } + } + > + solana:...4:501 + </Text> + <SvgMock + color="#4459ff" + height={16} + name="Copy" + style={ + { + "height": 16, + "marginLeft": 4, + "width": 16, + } + } + width={16} + /> + </TouchableOpacity> + </View> + <View + style={ + { + "flexDirection": "row", + "justifyContent": "space-between", + "paddingVertical": 4, + } + } + > + <Text + accessibilityRole="text" + style={ + { + "color": "#686e7d", + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, + "fontWeight": "500", + "letterSpacing": 0, + "lineHeight": 24, + } + } + > + Token decimal + </Text> + <Text + accessibilityRole="text" + style={ + { + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, + "fontWeight": "400", + "letterSpacing": 0, + "lineHeight": 22, + } + } + > + 18 + </Text> + </View> + </View> + </View> + </View> + </View> </View> </View> `; diff --git a/app/components/UI/AssetOverview/utils/calculateAssetPrice.test.ts b/app/components/UI/AssetOverview/utils/calculateAssetPrice.test.ts new file mode 100644 index 000000000000..af301ac9946b --- /dev/null +++ b/app/components/UI/AssetOverview/utils/calculateAssetPrice.test.ts @@ -0,0 +1,144 @@ +import { calculateAssetPrice } from './calculateAssetPrice'; +import { TokenI } from '../../Tokens/types'; +import { TokenPrice } from '../../../../components/hooks/useTokenHistoricalPrices'; + +const mockAsset: TokenI = { + name: 'Ethereum', + ticker: 'ETH', + symbol: 'Ethereum', + address: '0x0', + aggregators: [], + decimals: 18, + image: '', + balance: '100', + balanceFiat: '$100', + logo: '', + isETH: true, + isNative: true, +}; + +const mockPrices: TokenPrice[] = [ + ['1736761237983', 100], + ['1736761237986', 105], +]; + +describe('calculateAssetPrice', () => { + it('should calculate EVM asset price correctly', () => { + const result = calculateAssetPrice({ + _asset: mockAsset, + isEvmNetworkSelected: true, + exchangeRate: 2000, + tickerConversionRate: 1.5, + prices: mockPrices, + timePeriod: '1d', + }); + + expect(result).toEqual({ + currentPrice: 3000, // 2000 * 1.5 + priceDiff: 2900, // 3000 - 100 + comparePrice: 100, + pricePercentChange: undefined, + }); + }); + + it('should calculate non-EVM asset price correctly with price percent change', () => { + const result = calculateAssetPrice({ + _asset: mockAsset, + isEvmNetworkSelected: false, + prices: mockPrices, + timePeriod: '1d', + multichainAssetRates: { + rate: 2500, + marketData: { + pricePercentChange: { + P1D: 4.5, + P7D: 13.8, + P30D: 5.7, + }, + }, + }, + }); + + expect(result).toEqual({ + currentPrice: 2500, + priceDiff: 2400, // 2500 - 100 + comparePrice: 100, + pricePercentChange: 4.5, // P1D for 1d timePeriod + }); + }); + + it('should handle missing rates', () => { + const result = calculateAssetPrice({ + _asset: mockAsset, + isEvmNetworkSelected: true, + prices: mockPrices, + timePeriod: '1d', + }); + + expect(result).toEqual({ + currentPrice: 0, + priceDiff: -100, // 0 - 100 + comparePrice: 100, + pricePercentChange: undefined, + }); + }); + + it('should handle missing multichain rates', () => { + const result = calculateAssetPrice({ + _asset: mockAsset, + isEvmNetworkSelected: false, + prices: mockPrices, + timePeriod: '1d', + }); + + expect(result).toEqual({ + currentPrice: 0, + priceDiff: 0, + comparePrice: 100, + pricePercentChange: undefined, + }); + }); + + it('should handle different time periods for price percent change', () => { + const multichainAssetRates = { + rate: 2500, + marketData: { + pricePercentChange: { + P1D: 4.5, + P7D: 13.8, + P30D: 5.7, + P200D: 6.3, + P1Y: -4.0, + }, + }, + }; + + const result1d = calculateAssetPrice({ + _asset: mockAsset, + isEvmNetworkSelected: false, + prices: mockPrices, + timePeriod: '1d', + multichainAssetRates, + }); + + const result1w = calculateAssetPrice({ + _asset: mockAsset, + isEvmNetworkSelected: false, + prices: mockPrices, + timePeriod: '1w', + multichainAssetRates, + }); + + const result1m = calculateAssetPrice({ + _asset: mockAsset, + isEvmNetworkSelected: false, + prices: mockPrices, + timePeriod: '1m', + multichainAssetRates, + }); + + expect(result1d.pricePercentChange).toBe(4.5); // P1D + expect(result1w.pricePercentChange).toBe(13.8); // P7D + expect(result1m.pricePercentChange).toBe(5.7); // P30D + }); +}); diff --git a/app/components/UI/AssetOverview/utils/calculateAssetPrice.ts b/app/components/UI/AssetOverview/utils/calculateAssetPrice.ts new file mode 100644 index 000000000000..d642d054e9c9 --- /dev/null +++ b/app/components/UI/AssetOverview/utils/calculateAssetPrice.ts @@ -0,0 +1,92 @@ +import { TokenI } from '../../Tokens/types'; +import { + TimePeriod, + TokenPrice, +} from '../../../../components/hooks/useTokenHistoricalPrices'; + +interface MarketData { + pricePercentChange?: { + PT1H?: number; + P1D?: number; + P7D?: number; + P14D?: number; + P30D?: number; + P200D?: number; + P1Y?: number; + }; +} + +interface CalculateAssetPriceParams { + _asset: TokenI; // Prefix with underscore to indicate it's intentionally unused + isEvmNetworkSelected: boolean; + exchangeRate?: number; + tickerConversionRate?: number; + prices: TokenPrice[]; + multichainAssetRates?: { + rate: number; + marketData?: MarketData; + }; + timePeriod: TimePeriod; +} + +interface CalculateAssetPriceResult { + currentPrice: number; + priceDiff: number; + comparePrice: number; + pricePercentChange?: number; +} + +const TIME_PERIOD_TO_MARKET_DATA_KEY: Record< + TimePeriod, + keyof NonNullable<MarketData['pricePercentChange']> +> = { + '1d': 'P1D', + '1w': 'P7D', + '7d': 'P7D', + '1m': 'P30D', + '3m': 'P200D', + '1y': 'P1Y', + '3y': 'P1Y', // TODO: Add 3y market data key +}; + +export const calculateAssetPrice = ({ + isEvmNetworkSelected, + exchangeRate, + tickerConversionRate, + prices, + multichainAssetRates, + timePeriod, +}: CalculateAssetPriceParams): CalculateAssetPriceResult => { + let currentPrice = 0; + let priceDiff = 0; + const comparePrice = prices[0]?.[1] || 0; + let pricePercentChange: number | undefined; + + if (isEvmNetworkSelected) { + // EVM price calculation + currentPrice = + exchangeRate && tickerConversionRate + ? exchangeRate * tickerConversionRate + : 0; + + if (currentPrice !== undefined && currentPrice !== null) { + priceDiff = currentPrice - comparePrice; + } + } else if (multichainAssetRates?.rate) { + // Non-EVM price calculation + currentPrice = multichainAssetRates.rate; + priceDiff = currentPrice - comparePrice; + + // Get price percent change from market data + const marketDataKey = TIME_PERIOD_TO_MARKET_DATA_KEY[timePeriod]; + pricePercentChange = + multichainAssetRates.marketData?.pricePercentChange?.[marketDataKey]; + } + + return { + currentPrice, + priceDiff, + comparePrice, + pricePercentChange, + }; +}; diff --git a/app/components/UI/AssetOverview/utils/getTokenDetails.test.ts b/app/components/UI/AssetOverview/utils/getTokenDetails.test.ts new file mode 100644 index 000000000000..cf08001215f6 --- /dev/null +++ b/app/components/UI/AssetOverview/utils/getTokenDetails.test.ts @@ -0,0 +1,193 @@ +import { zeroAddress } from 'ethereumjs-util'; +import { getTokenDetails } from './getTokenDetails'; +import { TokenI } from '../../Tokens/types'; + +describe('getTokenDetails', () => { + // Base test data + const mockAsset: TokenI = { + address: '0x123', + symbol: 'TEST', + decimals: 18, + aggregators: ['uniswap', '1inch'], + isETH: false, + chainId: '0x1', + image: 'https://example.com/image.png', + name: 'Test Token', + balance: '1000000000000000000', + logo: 'https://example.com/logo.png', + }; + + const mockEvmMetadata = { + decimals: 18, + aggregators: ['uniswap', '1inch'], + }; + + describe('Network-specific behavior', () => { + it('should format token details for non-EVM networks', () => { + const result = getTokenDetails( + mockAsset, + false, + undefined, + mockEvmMetadata, + ); + + expect(result).toEqual({ + contractAddress: '0x123', + tokenDecimal: 18, + tokenList: 'uniswap, 1inch', + }); + }); + + it('should format ETH token details for EVM networks', () => { + const ethAsset: TokenI = { + ...mockAsset, + isETH: true, + }; + + const result = getTokenDetails( + ethAsset, + true, + undefined, + mockEvmMetadata, + ); + + expect(result).toEqual({ + contractAddress: zeroAddress(), + tokenDecimal: 18, + tokenList: '', + }); + }); + + it('should format regular token details for EVM networks', () => { + const result = getTokenDetails(mockAsset, true, '0x456', mockEvmMetadata); + + expect(result).toEqual({ + contractAddress: '0x456', + tokenDecimal: 18, + tokenList: 'uniswap, 1inch', + }); + }); + }); + + describe('Metadata handling', () => { + it('should handle missing decimals in token metadata', () => { + const metadataWithoutDecimals = { + aggregators: ['uniswap'], + }; + + const result = getTokenDetails( + mockAsset, + true, + '0x456', + metadataWithoutDecimals, + ); + + expect(result).toEqual({ + contractAddress: '0x456', + tokenDecimal: null, + tokenList: 'uniswap', + }); + }); + + it('should handle missing aggregators in token metadata', () => { + const metadataWithoutAggregators = { + decimals: 18, + }; + + const result = getTokenDetails( + mockAsset, + true, + '0x456', + metadataWithoutAggregators, + ); + + expect(result).toEqual({ + contractAddress: '0x456', + tokenDecimal: 18, + tokenList: null, + }); + }); + + it('should handle invalid aggregators type in token metadata', () => { + const metadataWithInvalidAggregators = { + decimals: 18, + aggregators: 'uniswap' as unknown as string[], + }; + + const result = getTokenDetails( + mockAsset, + true, + '0x456', + metadataWithInvalidAggregators, + ); + + expect(result).toEqual({ + contractAddress: '0x456', + tokenDecimal: 18, + tokenList: null, + }); + }); + }); + + describe('Asset property handling', () => { + it('should handle empty address in asset', () => { + const assetWithoutAddress: TokenI = { + ...mockAsset, + address: '', + }; + + const result = getTokenDetails( + assetWithoutAddress, + false, + undefined, + mockEvmMetadata, + ); + + expect(result).toEqual({ + contractAddress: null, + tokenDecimal: 18, + tokenList: 'uniswap, 1inch', + }); + }); + + it('should handle zero decimals in asset', () => { + const assetWithoutDecimals: TokenI = { + ...mockAsset, + decimals: 0, + }; + + const result = getTokenDetails( + assetWithoutDecimals, + false, + undefined, + mockEvmMetadata, + ); + + expect(result).toEqual({ + contractAddress: '0x123', + tokenDecimal: null, + tokenList: 'uniswap, 1inch', + }); + }); + + it('should handle empty aggregators array in asset', () => { + const assetWithoutAggregators: TokenI = { + ...mockAsset, + aggregators: [], + }; + + const result = getTokenDetails( + assetWithoutAggregators, + false, + undefined, + mockEvmMetadata, + ); + + expect(result).toEqual({ + contractAddress: '0x123', + tokenDecimal: 18, + tokenList: null, + }); + }); + }); +}); diff --git a/app/components/UI/AssetOverview/utils/getTokenDetails.ts b/app/components/UI/AssetOverview/utils/getTokenDetails.ts new file mode 100644 index 000000000000..4b7ed05d70c6 --- /dev/null +++ b/app/components/UI/AssetOverview/utils/getTokenDetails.ts @@ -0,0 +1,37 @@ +import { zeroAddress } from 'ethereumjs-util'; +import { TokenI } from '../../Tokens/types'; +import { TokenDetails } from '../TokenDetails/TokenDetails'; + +export const getTokenDetails = ( + asset: TokenI, + isEvmNetworkSelected: boolean, + tokenContractAddress: string | undefined, + tokenMetadata: Record<string, string | number | string[]>, +): TokenDetails => { + if (!isEvmNetworkSelected) { + return { + contractAddress: asset.address || null, + tokenDecimal: asset.decimals || null, + tokenList: asset.aggregators.join(', ') || null, + }; + } + + if (asset.isETH) { + return { + contractAddress: zeroAddress(), + tokenDecimal: 18, + tokenList: '', + }; + } + + return { + contractAddress: tokenContractAddress ?? null, + tokenDecimal: + typeof tokenMetadata?.decimals === 'number' + ? tokenMetadata.decimals + : null, + tokenList: Array.isArray(tokenMetadata?.aggregators) + ? tokenMetadata.aggregators.join(', ') + : null, + }; +}; diff --git a/app/components/UI/AssetOverview/utils/marketDetails.test.ts b/app/components/UI/AssetOverview/utils/marketDetails.test.ts new file mode 100644 index 000000000000..e6fb8f142141 --- /dev/null +++ b/app/components/UI/AssetOverview/utils/marketDetails.test.ts @@ -0,0 +1,120 @@ +import { formatMarketDetails } from './marketDetails'; + +describe('formatMarketDetails', () => { + const mockOptions = { + locale: 'en-US', + currentCurrency: 'USD', + isEvmNetworkSelected: true, + conversionRate: 1.5, + }; + + it('should format market details correctly with all values', () => { + const marketData = { + marketCap: 1000000, + totalVolume: 500000, + circulatingSupply: 1000000, + allTimeHigh: 100, + allTimeLow: 50, + dilutedMarketCap: 2000000, + }; + + const result = formatMarketDetails(marketData, mockOptions); + + expect(result).toEqual({ + marketCap: '$1.50M', + totalVolume: '$750.00K', + volumeToMarketCap: '50.00%', + circulatingSupply: '1.00M', + allTimeHigh: '$150.00', + allTimeLow: '$75.00', + fullyDiluted: '$3.00M', + }); + }); + + it('should handle null values correctly', () => { + const marketData = { + marketCap: 0, + totalVolume: undefined, + circulatingSupply: undefined, + allTimeHigh: 0, + allTimeLow: undefined, + dilutedMarketCap: undefined, + }; + + const result = formatMarketDetails(marketData, mockOptions); + + expect(result).toEqual({ + marketCap: null, + totalVolume: null, + volumeToMarketCap: null, + circulatingSupply: null, + allTimeHigh: null, + allTimeLow: null, + fullyDiluted: null, + }); + }); + + it('should handle non-EVM network correctly', () => { + const marketData = { + marketCap: 1000000, + totalVolume: 500000, + circulatingSupply: 1000000, + allTimeHigh: 100, + allTimeLow: 50, + dilutedMarketCap: 2000000, + }; + + const nonEvmOptions = { + ...mockOptions, + isEvmNetworkSelected: false, + }; + + const result = formatMarketDetails(marketData, nonEvmOptions); + + expect(result).toEqual({ + marketCap: '$1.00M', + totalVolume: '$500.00K', + volumeToMarketCap: '50.00%', + circulatingSupply: '1.00M', + allTimeHigh: '$100.00', + allTimeLow: '$50.00', + fullyDiluted: '$2.00M', + }); + }); + + it('should format market details correctly for French locale', () => { + // Test data with realistic market values + const marketData = { + marketCap: 1000000, + totalVolume: 500000, + circulatingSupply: 1000000, + allTimeHigh: 100, + allTimeLow: 50, + dilutedMarketCap: 2000000, + }; + + const frenchLocaleOptions = { + ...mockOptions, + locale: 'fr-FR', + currentCurrency: 'EUR', + }; + + const formattedMarketDetails = formatMarketDetails( + marketData, + frenchLocaleOptions, + ); + + // Expected French-formatted values with currency + const expectedFormattedValues = { + marketCap: '1,50\xa0M\xa0€', // 1.5M EUR + totalVolume: '750,00\xa0k\xa0€', // 750K EUR + volumeToMarketCap: '50,00\xa0%', // 50% volume to market cap ratio + circulatingSupply: '1,00\xa0M', // 1M tokens + allTimeHigh: '150,00\xa0€', // 150 EUR + allTimeLow: '75,00\xa0€', // 75 EUR + fullyDiluted: '3,00\xa0M\xa0€', // 3M EUR + }; + + expect(formattedMarketDetails).toEqual(expectedFormattedValues); + }); +}); diff --git a/app/components/UI/AssetOverview/utils/marketDetails.ts b/app/components/UI/AssetOverview/utils/marketDetails.ts new file mode 100644 index 000000000000..6fef2aaf459b --- /dev/null +++ b/app/components/UI/AssetOverview/utils/marketDetails.ts @@ -0,0 +1,156 @@ +import { formatWithThreshold } from '../../../../util/assets'; + +export interface MarketData { + marketCap?: number; + totalVolume?: number; + circulatingSupply?: number; + allTimeHigh?: number; + allTimeLow?: number; + dilutedMarketCap?: number; +} + +export interface MarketDetails { + marketCap: string | null; + totalVolume: string | null; + volumeToMarketCap: string | null; + circulatingSupply: string | null; + allTimeHigh: string | null; + allTimeLow: string | null; + fullyDiluted: string | null; +} + +interface FormatMarketDetailsOptions { + locale: string; + currentCurrency: string; + isEvmNetworkSelected: boolean; + conversionRate: number; +} + +/** + * Formats market details with consistent formatting options + */ +export const formatMarketDetails = ( + marketData: MarketData, + options: FormatMarketDetailsOptions, +): MarketDetails => { + const { locale, currentCurrency, isEvmNetworkSelected, conversionRate } = + options; + + const marketCap = + marketData.marketCap && marketData.marketCap > 0 + ? formatWithThreshold( + isEvmNetworkSelected + ? marketData.marketCap * conversionRate + : marketData.marketCap, + 0.01, + locale, + { + style: 'currency', + notation: 'compact', + currency: currentCurrency, + minimumFractionDigits: 2, + maximumFractionDigits: 2, + }, + ) + : null; + + const totalVolume = + marketData.totalVolume && marketData.totalVolume > 0 + ? formatWithThreshold( + isEvmNetworkSelected + ? marketData.totalVolume * conversionRate + : marketData.totalVolume, + 0.01, + locale, + { + style: 'currency', + notation: 'compact', + currency: currentCurrency, + minimumFractionDigits: 2, + maximumFractionDigits: 2, + }, + ) + : null; + + const volumeToMarketCap = + marketData.marketCap && marketData.totalVolume && marketData.marketCap > 0 + ? formatWithThreshold( + marketData.totalVolume / marketData.marketCap, + 0.0001, + locale, + { + style: 'percent', + minimumFractionDigits: 2, + maximumFractionDigits: 2, + }, + ) + : null; + + const circulatingSupply = + marketData.circulatingSupply && marketData.circulatingSupply > 0 + ? formatWithThreshold(marketData.circulatingSupply, 0.01, locale, { + style: 'decimal', + notation: 'compact', + maximumFractionDigits: 2, + minimumFractionDigits: 2, + }) + : null; + + const allTimeHigh = + marketData.allTimeHigh && marketData.allTimeHigh > 0 + ? formatWithThreshold( + isEvmNetworkSelected + ? marketData.allTimeHigh * conversionRate + : marketData.allTimeHigh, + 0.01, + locale, + { + style: 'currency', + currency: currentCurrency, + }, + ) + : null; + + const allTimeLow = + marketData.allTimeLow && marketData.allTimeLow > 0 + ? formatWithThreshold( + isEvmNetworkSelected + ? marketData.allTimeLow * conversionRate + : marketData.allTimeLow, + 0.01, + locale, + { + style: 'currency', + currency: currentCurrency, + }, + ) + : null; + + const fullyDiluted = + marketData.dilutedMarketCap && marketData.dilutedMarketCap > 0 + ? formatWithThreshold( + isEvmNetworkSelected + ? marketData.dilutedMarketCap * conversionRate + : marketData.dilutedMarketCap, + 0.01, + locale, + { + style: 'currency', + notation: 'compact', + currency: currentCurrency, + minimumFractionDigits: 2, + maximumFractionDigits: 2, + }, + ) + : null; + + return { + marketCap, + totalVolume, + volumeToMarketCap, + circulatingSupply, + allTimeHigh, + allTimeLow, + fullyDiluted, + }; +}; diff --git a/app/components/UI/Tokens/TokenList/TokenListItem/index.tsx b/app/components/UI/Tokens/TokenList/TokenListItem/index.tsx index 0b46f9ff8501..f23fff7c4015 100644 --- a/app/components/UI/Tokens/TokenList/TokenListItem/index.tsx +++ b/app/components/UI/Tokens/TokenList/TokenListItem/index.tsx @@ -283,13 +283,6 @@ export const TokenListItem = React.memo( .build(), ); - // Token details are currently only supported for EVM networks. - // This early return prevents navigation to token details for non-EVM networks. - // TODO: Remove this when shipping the multichain token details feature, which is slated for 7.45 RC - if (!isEvmNetworkSelected) { - return; - } - // if the asset is staked, navigate to the native asset details if (asset.isStaked) { return navigation.navigate('Asset', { diff --git a/app/components/Views/Asset/index.js b/app/components/Views/Asset/index.js index a4c8e4359f78..b2e8410701d2 100644 --- a/app/components/Views/Asset/index.js +++ b/app/components/Views/Asset/index.js @@ -69,7 +69,10 @@ import { } from '../../../selectors/transactionController'; import Logger from '../../../util/Logger'; import { TOKEN_CATEGORY_HASH } from '../../UI/TransactionElement/utils'; -import { isAssetFromSearch, selectSupportedSwapTokenAddressesForChainId } from '../../../selectors/tokenSearchDiscoveryDataController'; +import { + isAssetFromSearch, + selectSupportedSwapTokenAddressesForChainId, +} from '../../../selectors/tokenSearchDiscoveryDataController'; import { isNonEvmChainId } from '../../../core/Multichain/utils'; import isBridgeAllowed from '../../UI/Bridge/utils/isBridgeAllowed'; @@ -233,7 +236,8 @@ class Asset extends PureComponent { false, navigation, colors, - shouldShowMoreOptionsInNavBar + // TODO: remove !isNonEvmChainId check once bottom sheet options are fixed for non-EVM chains + shouldShowMoreOptionsInNavBar && !isNonEvmChainId(chainId) ? () => navigation.navigate(Routes.MODAL.ROOT_MODAL_FLOW, { screen: 'AssetOptions', @@ -525,7 +529,9 @@ class Asset extends PureComponent { if (asset.isETH || asset.isNative) { isAssetAllowed = true; } else if (isAssetFromSearch(asset)) { - isAssetAllowed = this.props.searchDiscoverySwapsTokens?.includes(asset.address?.toLowerCase()); + isAssetAllowed = this.props.searchDiscoverySwapsTokens?.includes( + asset.address?.toLowerCase(), + ); } else { isAssetAllowed = asset.address?.toLowerCase() in this.props.swapsTokens; } @@ -588,7 +594,10 @@ const mapStateToProps = (state, { route }) => ({ swapsTokens: isPortfolioViewEnabled() ? swapsTokensMultiChainObjectSelector(state) : swapsTokensObjectSelector(state), - searchDiscoverySwapsTokens: selectSupportedSwapTokenAddressesForChainId(state, route.params.chainId), + searchDiscoverySwapsTokens: selectSupportedSwapTokenAddressesForChainId( + state, + route.params.chainId, + ), swapsTransactions: selectSwapsTransactions(state), conversionRate: selectConversionRate(state), currentCurrency: selectCurrentCurrency(state), diff --git a/app/components/hooks/useTokenHistoricalPrices.ts b/app/components/hooks/useTokenHistoricalPrices.ts index 366a397a7788..c2381617191a 100644 --- a/app/components/hooks/useTokenHistoricalPrices.ts +++ b/app/components/hooks/useTokenHistoricalPrices.ts @@ -1,13 +1,43 @@ -import { Hex } from '@metamask/utils'; +import { CaipAssetId, Hex } from '@metamask/utils'; import { getDecimalChainId } from '../../util/networks'; import { useState, useEffect } from 'react'; +///: BEGIN:ONLY_INCLUDE_IF(keyring-snaps) +import { selectMultichainHistoricalPrices } from '../../selectors/multichain'; +///: END:ONLY_INCLUDE_IF +import { useSelector } from 'react-redux'; +import { selectIsEvmNetworkSelected } from '../../selectors/multichainNetworkController'; +import Engine from '../../core/Engine'; +import { TokenI } from '../UI/Tokens/types'; export type TimePeriod = '1d' | '1w' | '7d' | '1m' | '3m' | '1y' | '3y'; export type TokenPrice = [string, number]; const placeholderPrices = Array(289).fill(['0', 0] as TokenPrice); + +export const standardizeTimeInterval = (timePeriod: TimePeriod) => { + switch (timePeriod) { + case '1d': + return 'P1D'; + case '1w': + return 'P7D'; + case '7d': + return 'P7D'; + case '1m': + return 'P1M'; + case '3m': + return 'P3M'; + case '1y': + return 'P1Y'; + case '3y': + return 'P3Y'; + default: + return 'P1D'; + } +}; + const useTokenHistoricalPrices = ({ + asset, address, chainId, timePeriod, @@ -15,6 +45,7 @@ const useTokenHistoricalPrices = ({ to, vsCurrency, }: { + asset: TokenI; address: string; chainId: Hex; timePeriod: TimePeriod; @@ -26,43 +57,80 @@ const useTokenHistoricalPrices = ({ isLoading: boolean; error: Error | undefined; } => { + ///: BEGIN:ONLY_INCLUDE_IF(keyring-snaps) + const multichainHistoricalPrices = useSelector( + selectMultichainHistoricalPrices, + ); + ///: END:ONLY_INCLUDE_IF + const isEvmSelected = useSelector(selectIsEvmNetworkSelected); const [prices, setPrices] = useState<TokenPrice[]>(placeholderPrices); const [isLoading, setIsLoading] = useState(true); const [error, setError] = useState<Error>(); + useEffect(() => { const fetchPrices = async () => { setIsLoading(true); try { - const baseUri = 'https://price.api.cx.metamask.io/v1'; - const uri = new URL( - `${baseUri}/chains/${getDecimalChainId( - chainId, - )}/historical-prices/${address}`, - ); - uri.searchParams.set( - 'timePeriod', - timePeriod === '1w' ? '7d' : timePeriod, - ); - uri.searchParams.set('vsCurrency', vsCurrency); - if (from && to) { - uri.searchParams.set('from', from.toString()); - uri.searchParams.set('to', to.toString()); - } + if (!isEvmSelected) { + const caip19Address = asset.address as CaipAssetId; + const standardizedTimeInterval = standardizeTimeInterval(timePeriod); + + await Engine.context.MultichainAssetsRatesController.fetchHistoricalPricesForAsset( + caip19Address, + ); + const result = + multichainHistoricalPrices[caip19Address][vsCurrency].intervals[ + standardizedTimeInterval + ]; - const response = await fetch(uri.toString()); - const data: { prices: TokenPrice[] } = await response.json(); + // Transform to ensure first value is string and second is number with max precision + const transformedResult = result.map( + ([timestamp, price]) => + [timestamp.toString(), Number(price)] as TokenPrice, + ); + setPrices(transformedResult); + } else { + const baseUri = 'https://price.api.cx.metamask.io/v1'; + const uri = new URL( + `${baseUri}/chains/${getDecimalChainId( + chainId, + )}/historical-prices/${address}`, + ); + uri.searchParams.set( + 'timePeriod', + timePeriod === '1w' ? '7d' : timePeriod, + ); + uri.searchParams.set('vsCurrency', vsCurrency); + if (from && to) { + uri.searchParams.set('from', from.toString()); + uri.searchParams.set('to', to.toString()); + } - setPrices(data.prices as TokenPrice[]); - // TODO: Replace "any" with type - // eslint-disable-next-line @typescript-eslint/no-explicit-any - } catch (e: any) { - setError(e); + const response = await fetch(uri.toString()); + const data: { prices: TokenPrice[] } = await response.json(); + setPrices(data.prices as TokenPrice[]); + } + } catch (e: unknown) { + setError(e as Error); } finally { setIsLoading(false); } }; fetchPrices(); - }, [address, chainId, timePeriod, from, to, vsCurrency]); + }, [ + address, + chainId, + timePeriod, + from, + to, + vsCurrency, + isEvmSelected, + asset.address, + ///: BEGIN:ONLY_INCLUDE_IF(keyring-snaps) + multichainHistoricalPrices, + ///: END:ONLY_INCLUDE_IF + ]); + return { data: prices, isLoading, error }; }; diff --git a/app/selectors/multichain/evm.ts b/app/selectors/multichain/evm.ts index 065004dd21e5..5e0f70aa99e3 100644 --- a/app/selectors/multichain/evm.ts +++ b/app/selectors/multichain/evm.ts @@ -43,6 +43,8 @@ import { isTestNet } from '../../util/networks'; import { selectTokenMarketData } from '../tokenRatesController'; import { deriveBalanceFromAssetMarketDetails } from '../../components/UI/Tokens/util'; import { RootState } from '../../reducers'; +import { selectTokenList } from '../tokenListController'; +import { safeToChecksumAddress } from '../../util/address'; interface NativeTokenBalance { balance: string; @@ -130,9 +132,13 @@ export const selectNativeTokensAcrossChainsForAddress = createSelector( const nativeChainId = token.chainId as Hex; const nativeTokenInfoByChainId = nativeTokenBalancesByChainId[nativeChainId]; - const isETH = ['ETH', 'GOETH', 'SepoliaETH', 'LineaETH', 'MegaETH'].includes( - token.nativeCurrency || '', - ); + const isETH = [ + 'ETH', + 'GOETH', + 'SepoliaETH', + 'LineaETH', + 'MegaETH', + ].includes(token.nativeCurrency || ''); const name = isETH ? 'Ethereum' : token.nativeCurrency; const logo = isETH ? '../images/eth-logo-new.png' : ''; @@ -477,3 +483,33 @@ export const selectEvmTokenFiatBalances = createDeepEqualSelector( ).balanceFiatCalculation; }), ); + +export const selectEvmTokenMarketData = createDeepEqualSelector( + [ + selectTokenList, + selectTokenMarketData, + (_state: RootState, params: { chainId: Hex; tokenAddress?: string }) => + params.chainId, + (_state: RootState, params: { chainId: Hex; tokenAddress?: string }) => + params.tokenAddress, + ], + (tokenList, marketData, chainId, tokenAddress) => { + // Handle native token case (no address) + if (!tokenAddress) { + return marketData?.[chainId]?.[zeroAddress() as Hex]; + } + + // Get checksummed address + const checksumAddress = safeToChecksumAddress(tokenAddress); + if (!checksumAddress) return null; + + // Get token metadata and market data + const tokenMetadata = tokenList?.[checksumAddress.toLowerCase()]; + const tokenMarketData = marketData?.[chainId]?.[checksumAddress as Hex]; + + return { + metadata: tokenMetadata, + marketData: tokenMarketData, + }; + }, +); From 004570deefbf29ef08dbdb86c96f43e3df19183c Mon Sep 17 00:00:00 2001 From: "runway-github[bot]" <73448015+runway-github[bot]@users.noreply.github.com> Date: Fri, 25 Apr 2025 12:49:39 +0200 Subject: [PATCH 161/473] chore(runway): cherry-pick New Crowdin translations by Github Action (#14871) - New Crowdin translations by Github Action (#14588) Co-authored-by: metamaskbot <metamaskbot@users.noreply.github.com> Co-authored-by: Nico MASSART <NicolasMassart@users.noreply.github.com> [42a5fdf](https://github.com/MetaMask/metamask-mobile/commit/42a5fdff8d1506d64bbcdf51a1c5afb40d8afa16) Co-authored-by: MetaMask Bot <37885440+metamaskbot@users.noreply.github.com> Co-authored-by: metamaskbot <metamaskbot@users.noreply.github.com> Co-authored-by: Nico MASSART <NicolasMassart@users.noreply.github.com> --- locales/languages/de.json | 66 ++++++++++++++++++++++++++++++++---- locales/languages/el.json | 66 ++++++++++++++++++++++++++++++++---- locales/languages/es.json | 70 ++++++++++++++++++++++++++++++++++----- locales/languages/fr.json | 66 ++++++++++++++++++++++++++++++++---- locales/languages/hi.json | 66 ++++++++++++++++++++++++++++++++---- locales/languages/id.json | 66 ++++++++++++++++++++++++++++++++---- locales/languages/ja.json | 66 ++++++++++++++++++++++++++++++++---- locales/languages/ko.json | 66 ++++++++++++++++++++++++++++++++---- locales/languages/pt.json | 66 ++++++++++++++++++++++++++++++++---- locales/languages/ru.json | 66 ++++++++++++++++++++++++++++++++---- locales/languages/tl.json | 66 ++++++++++++++++++++++++++++++++---- locales/languages/tr.json | 68 ++++++++++++++++++++++++++++++++----- locales/languages/vi.json | 66 ++++++++++++++++++++++++++++++++---- locales/languages/zh.json | 66 ++++++++++++++++++++++++++++++++---- 14 files changed, 829 insertions(+), 101 deletions(-) diff --git a/locales/languages/de.json b/locales/languages/de.json index 5f7cd51fb021..2d02ebbd65e1 100644 --- a/locales/languages/de.json +++ b/locales/languages/de.json @@ -27,6 +27,11 @@ "domain_mismatch": { "title": "Verdächtige Anmeldeanfrage", "message": "Die Website, die die Anfrage stellt, ist nicht die Website, bei der Sie sich anmelden. Es könnte sich um einen Versuch handeln, Ihre Anmeldedaten zu stehlen." + }, + "insufficient_balance": { + "title": "Insufficient funds", + "message": "You do not have enough %{nativeCurrency} in your account to pay for network fees.", + "buy_action": "Buy %{nativeCurrency}" } }, "blockaid_banner": { @@ -78,10 +83,11 @@ "connector": "bei" }, "autocomplete": { - "placeholder": "", + "placeholder": "Search by token, site or address", "recents": "Aktuelle", "favorites": "Favoriten", - "sites": "Websites" + "sites": "Websites", + "tokens": "Tokens" }, "navigation": { "back": "Zurück", @@ -785,7 +791,17 @@ "add_new_hd_account_helper_text": "Die geheime Wiederherstellungsphrase, aus der Ihr neues Konto generiert wird", "accounts": "Konten", "show_accounts": "Anzeigen", - "hide_accounts": "Verbergen" + "hide_accounts": "Verbergen", + "labels": { + "bitcoin_testnet_account_name": "Bitcoin Testnet Account", + "bitcoin_account_name": "Bitcoin Account", + "solana_devnet_account_name": "Solana Devnet Account", + "solana_testnet_account_name": "Solana Testnet Account", + "solana_account_name": "Solana Account" + }, + "error_messages": { + "failed_to_create_account": "Failed to create {{clientType}} account" + } }, "toast": { "connected_and_active": "verbunden und aktiv.", @@ -1117,6 +1133,11 @@ "snaps": { "title": "Snaps", "description": "Überblicken und verwalten Sie Ihre Snaps", + "snap_ui": { + "link": { + "accessibilityHint": "Opens in a new tab" + } + }, "snap_settings": { "remove_snap_section_title": "Snap entfernen", "remove_snap_section_description": "Diese Aktion löscht den Snap, seine Daten und die ihm erteilten Berechtigungen.", @@ -1487,6 +1508,7 @@ "gas_fee_slow": "LANGSAM", "hex_data": "Hex-Daten", "custom_nonce": "Nonce", + "custom_nonce_tooltip": "This is the transaction number of an account. Nonce for the first transaction is 0 and it increases in sequential order.", "this_is_an_advanced": "Dies ist eine erweiterte Funktion zum Stornieren oder Beschleunigen ausstehender Transaktionen.", "current_suggested_nonce": "Aktuelle empfohlene Nonce:", "edit_transaction_nonce": "Transaktions-Nonce anpassen", @@ -1765,6 +1787,7 @@ "tx_details_not_available": "Nicht verfügbar", "smart_contract_interaction": "Smart Contract-Interaktion", "swaps_transaction": "Swaps-Transaktion", + "bridge_transaction": "Bridge", "approve": "Genehmigen", "increase_allowance": "Zulage erhöhen", "set_approval_for_all": "Erlaubnis für alle erteilen", @@ -2839,6 +2862,7 @@ } }, "swaps": { + "title": "Swap", "onboarding": { "get_the": "Sichern Sie sich den", "best_price": "bester Preis", @@ -3780,19 +3804,22 @@ "permit": "Ausgabenobergrenzeanfrage", "permit_revoke": "Genehmigung entfernen", "permit_NFTs": "Auszahlungsanfrage", - "signature_siwe": "Anmeldeanfrage" + "signature_siwe": "Anmeldeanfrage", + "contract_interaction": "Transaction request" }, "sub_title": { "permit": "Diese Website möchte die Genehmigung, Ihre Tokens auszugeben.", "permit_NFTs": "Diese Website möchte die Genehmigung, Ihre NFTs auszuzahlen.", "signature": "Überprüfen Sie vor der Bestätigung die Details der Anfrage.", - "signature_siwe": "Eine Website verlangt von Ihnen, sich anzumelden, um zu beweisen, dass Sie der Inhaber dieses Kontos sind." + "signature_siwe": "Eine Website verlangt von Ihnen, sich anzumelden, um zu beweisen, dass Sie der Inhaber dieses Kontos sind.", + "contract_interaction": "Review request details before you confirm." }, "request_from": "Anfrage von", "staking_from": "Staking von", "signing_in_with": "Anmelden mit", "message": "Nachricht", "personal_sign_tooltip": "Diese Website ersucht um Ihre Signatur", + "transaction_tooltip": "This site is asking for your transaction", "details": "Details", "qr_get_sign": "Signatur abrufen", "qr_scan_text": "Mit Ihrer Hardware-Wallet scannen", @@ -3827,7 +3854,9 @@ "unavailable": "Nicht verfügbar" }, "unlimited": "Unbegrenzt", - "none": "Keine" + "none": "Keine", + "advanced_details": "Advanced details", + "interacting_with": "Interacting with" }, "change_in_simulation_modal": { "title": "Ergebnisse haben sich geändert", @@ -3868,6 +3897,29 @@ "time": "Zeit", "quote_info_content": "Dieses Angebot bietet die beste Rendite aus unserer Suche. Es basiert auf dem Swap-Satz, einschließlich Bridging-Gebühren und einer MetaMask-Gebühr von 0,875 %, aber ohne Gas-Gebühren. Die Gas-Gebühren variieren je nach Netzwerkaktivität und Transaktionskomplexität.", "quote_info_title": "Warum wir dieses Angebot empfehlen", - "see_other_quotes": "Andere Angebote sehen" + "see_other_quotes": "Andere Angebote sehen", + "receive_at": "Receive at", + "error_banner_description": "This trade route isn't available right now. Try changing the amount, network, or token and we'll find the best option.", + "insufficient_funds": "Insufficient funds", + "select_amount": "Select amount", + "bridge_to": "Bridge to", + "title": "Bridge", + "submitting_transaction": "Submitting", + "fetching_quote": "Fetching quote" + }, + "bridge_transaction_details": { + "status": "Status", + "date": "Date", + "total_gas_fee": "Total gas fee", + "estimated_completion": "Est. completion", + "bridge_step_action_bridge_complete": "{{destSymbol}} received on {{destChainName}}", + "bridge_step_action_bridge_pending": "Receiving {{destSymbol}} on {{destChainName}}", + "bridge_step_action_swap_complete": "Swapped {{srcSymbol}} for {{destSymbol}}", + "bridge_step_action_swap_pending": "Swapping {{srcSymbol}} for {{destSymbol}}", + "view_on_block_explorer": "View on Block Explorer", + "block_explorer_description": "This transaction lives on two networks. The first link shows the source; the second shows the destination once it’s confirmed.", + "transaction_details": "Transaction Details", + "bridge_to_chain": "Bridge to {{chainName}}", + "recipient": "Recipient" } } diff --git a/locales/languages/el.json b/locales/languages/el.json index 6b4f48bd56b8..92e649c02d67 100644 --- a/locales/languages/el.json +++ b/locales/languages/el.json @@ -27,6 +27,11 @@ "domain_mismatch": { "title": "Ύποπτο αίτημα σύνδεσης", "message": "Ο ιστότοπος που υποβάλλει το αίτημα δεν είναι ο ιστότοπος στον οποίο συνδέεστε. Ενδέχεται να πρόκειται για απόπειρα κλοπής των στοιχείων σύνδεσής σας." + }, + "insufficient_balance": { + "title": "Insufficient funds", + "message": "You do not have enough %{nativeCurrency} in your account to pay for network fees.", + "buy_action": "Buy %{nativeCurrency}" } }, "blockaid_banner": { @@ -78,10 +83,11 @@ "connector": "σε" }, "autocomplete": { - "placeholder": "Αναζήτηση ανά ιστότοπο ή διεύθυνση", + "placeholder": "Search by token, site or address", "recents": "Πρόσφατα", "favorites": "Αγαπημένα", - "sites": "Ιστότοποι" + "sites": "Ιστότοποι", + "tokens": "Tokens" }, "navigation": { "back": "Πίσω", @@ -785,7 +791,17 @@ "add_new_hd_account_helper_text": "Η Μυστική Φράση Ανάκτησης από την οποία θα δημιουργηθεί ο νέος σας λογαριασμός", "accounts": "λογαριασμοί", "show_accounts": "Εμφάνιση", - "hide_accounts": "Απόκρυψη" + "hide_accounts": "Απόκρυψη", + "labels": { + "bitcoin_testnet_account_name": "Bitcoin Testnet Account", + "bitcoin_account_name": "Bitcoin Account", + "solana_devnet_account_name": "Solana Devnet Account", + "solana_testnet_account_name": "Solana Testnet Account", + "solana_account_name": "Solana Account" + }, + "error_messages": { + "failed_to_create_account": "Failed to create {{clientType}} account" + } }, "toast": { "connected_and_active": "συνδεδεμένοι και ενεργοί.", @@ -1117,6 +1133,11 @@ "snaps": { "title": "Snaps", "description": "Επισκόπηση και διαχείριση των snaps σας", + "snap_ui": { + "link": { + "accessibilityHint": "Opens in a new tab" + } + }, "snap_settings": { "remove_snap_section_title": "Αφαίρεση του snap", "remove_snap_section_description": "Αυτή η ενέργεια θα διαγράψει το snap, τα δεδομένα του και τις άδειες που του έχουν χορηγηθεί.", @@ -1487,6 +1508,7 @@ "gas_fee_slow": "ΑΡΓΑ", "hex_data": "Δεκαεξαδικά Δεδομένα", "custom_nonce": "Αριθμός συναλλαγής (nonce)", + "custom_nonce_tooltip": "This is the transaction number of an account. Nonce for the first transaction is 0 and it increases in sequential order.", "this_is_an_advanced": "Αυτή είναι μια λειτουργία για προχωρημένους που χρησιμοποιείται για να ακυρώσει ή να επιταχύνει τυχόν εκκρεμείς συναλλαγές.", "current_suggested_nonce": "Τρέχον προτεινόμενο nonce:", "edit_transaction_nonce": "Επεξεργασία nonce συναλλαγής", @@ -1765,6 +1787,7 @@ "tx_details_not_available": "Μη διαθέσιμο", "smart_contract_interaction": "Αλληλεπίδραση έξυπνου συμβολαίου", "swaps_transaction": "Συναλλαγή ανταλλαγής", + "bridge_transaction": "Bridge", "approve": "Έγκριση", "increase_allowance": "Αύξηση των αποδοχών", "set_approval_for_all": "Ορίστε την έγκριση για όλους", @@ -2839,6 +2862,7 @@ } }, "swaps": { + "title": "Swap", "onboarding": { "get_the": "Πάρτε την", "best_price": "καλύτερη τιμή", @@ -3780,19 +3804,22 @@ "permit": "Αίτημα ανώτατου ορίου δαπανών", "permit_revoke": "Κατάργηση άδειας", "permit_NFTs": "Αίτημα ανάληψης", - "signature_siwe": "Αίτημα σύνδεσης" + "signature_siwe": "Αίτημα σύνδεσης", + "contract_interaction": "Transaction request" }, "sub_title": { "permit": "Αυτός ο ιστότοπος θέλει άδεια για να δαπανήσει τα tokens σας.", "permit_NFTs": "Αυτός ο ιστότοπος θέλει άδεια για την ανάληψη των NFT σας.", "signature": "Ελέγξτε τις λεπτομέρειες του αιτήματος πριν επιβεβαιώσετε.", - "signature_siwe": "Ένας ιστότοπος θέλει να συνδεθείτε για να αποδείξετε ότι είστε ο κάτοχος αυτού του λογαριασμού." + "signature_siwe": "Ένας ιστότοπος θέλει να συνδεθείτε για να αποδείξετε ότι είστε ο κάτοχος αυτού του λογαριασμού.", + "contract_interaction": "Review request details before you confirm." }, "request_from": "Ζητήθηκε από", "staking_from": "Ποντάρισμα από", "signing_in_with": "Σύνδεση με", "message": "Μήνυμα", "personal_sign_tooltip": "Αυτός ο ιστότοπος ζητάει την υπογραφή σας", + "transaction_tooltip": "This site is asking for your transaction", "details": "Λεπτομέρειες", "qr_get_sign": "Λήψη υπογραφής", "qr_scan_text": "Σαρώστε με το πορτοφόλι υλικού σας", @@ -3827,7 +3854,9 @@ "unavailable": "Μη διαθέσιμο" }, "unlimited": "Απεριόριστα", - "none": "Τίποτα" + "none": "Τίποτα", + "advanced_details": "Advanced details", + "interacting_with": "Interacting with" }, "change_in_simulation_modal": { "title": "Τα αποτελέσματα έχουν αλλάξει", @@ -3868,6 +3897,29 @@ "time": "Ώρα", "quote_info_content": "Αυτή η προσφορά παρέχει την καλύτερη απόδοση από την αναζήτησή μας. Βασίζεται στο επιτόκιο swap (ανταλλαγής), συμπεριλαμβανομένων των τελών διασύνδεσης και μια χρέωση 0,875% στο MetaMask, αλλά όχι των τελών συναλλαγών. Τα τέλη συναλλαγών ποικίλλουν ανάλογα με τη δραστηριότητα του δικτύου και την πολυπλοκότητα της συναλλαγής.", "quote_info_title": "Γιατί προτείνουμε αυτή την προσφορά", - "see_other_quotes": "Δείτε άλλες προσφορές" + "see_other_quotes": "Δείτε άλλες προσφορές", + "receive_at": "Receive at", + "error_banner_description": "This trade route isn't available right now. Try changing the amount, network, or token and we'll find the best option.", + "insufficient_funds": "Insufficient funds", + "select_amount": "Select amount", + "bridge_to": "Bridge to", + "title": "Bridge", + "submitting_transaction": "Submitting", + "fetching_quote": "Fetching quote" + }, + "bridge_transaction_details": { + "status": "Status", + "date": "Date", + "total_gas_fee": "Total gas fee", + "estimated_completion": "Est. completion", + "bridge_step_action_bridge_complete": "{{destSymbol}} received on {{destChainName}}", + "bridge_step_action_bridge_pending": "Receiving {{destSymbol}} on {{destChainName}}", + "bridge_step_action_swap_complete": "Swapped {{srcSymbol}} for {{destSymbol}}", + "bridge_step_action_swap_pending": "Swapping {{srcSymbol}} for {{destSymbol}}", + "view_on_block_explorer": "View on Block Explorer", + "block_explorer_description": "This transaction lives on two networks. The first link shows the source; the second shows the destination once it’s confirmed.", + "transaction_details": "Transaction Details", + "bridge_to_chain": "Bridge to {{chainName}}", + "recipient": "Recipient" } } diff --git a/locales/languages/es.json b/locales/languages/es.json index f5d56b2c89c6..70a58371f232 100644 --- a/locales/languages/es.json +++ b/locales/languages/es.json @@ -13,7 +13,7 @@ "message": "Le sugerimos que rechace esta solicitud. Si continúa, podría poner en peligro sus activos.", "title_blockaid": "Sus activos pueden estar en peligro", "blockaid": { - "message": "Si confirma esta solicitud, podría perder sus activos. Le recomendamos que cancele esta solicitud.", + "message": "Si confirma esta solicitud, podría perder sus activos. Le recomendamos que la cancele.", "message1": "Si confirma esta solicitud, permitirá que un estafador retire y gaste sus activos. No los recuperará.", "message2": "Está enviando sus activos a un estafador. Si continúa, perderá esos activos.", "message3": "Si continúa, todos los activos que ha registrado en OpenSea podrían estar en peligro.", @@ -27,6 +27,11 @@ "domain_mismatch": { "title": "Solicitud de inicio de sesión sospechosa", "message": "El sitio que realiza la solicitud no es el sitio en el que está iniciando sesión. Esto podría ser un intento de robo de sus credenciales de inicio de sesión." + }, + "insufficient_balance": { + "title": "Insufficient funds", + "message": "You do not have enough %{nativeCurrency} in your account to pay for network fees.", + "buy_action": "Buy %{nativeCurrency}" } }, "blockaid_banner": { @@ -78,10 +83,11 @@ "connector": "en" }, "autocomplete": { - "placeholder": "Búsqueda por sitio o dirección", + "placeholder": "Search by token, site or address", "recents": "Recientes", "favorites": "Favoritos", - "sites": "Sitios" + "sites": "Sitios", + "tokens": "Tokens" }, "navigation": { "back": "Volver", @@ -785,7 +791,17 @@ "add_new_hd_account_helper_text": "La frase secreta de recuperación de su nueva cuenta se generará a partir de", "accounts": "cuentas", "show_accounts": "Mostrar", - "hide_accounts": "Ocultar" + "hide_accounts": "Ocultar", + "labels": { + "bitcoin_testnet_account_name": "Bitcoin Testnet Account", + "bitcoin_account_name": "Bitcoin Account", + "solana_devnet_account_name": "Solana Devnet Account", + "solana_testnet_account_name": "Solana Testnet Account", + "solana_account_name": "Solana Account" + }, + "error_messages": { + "failed_to_create_account": "Failed to create {{clientType}} account" + } }, "toast": { "connected_and_active": "conectado y activo.", @@ -1117,6 +1133,11 @@ "snaps": { "title": "Snaps", "description": "Revise y gestione sus snaps", + "snap_ui": { + "link": { + "accessibilityHint": "Opens in a new tab" + } + }, "snap_settings": { "remove_snap_section_title": "Eliminar Snap", "remove_snap_section_description": "Esta acción eliminará el snap, sus datos y revocará sus permisos otorgados.", @@ -1487,6 +1508,7 @@ "gas_fee_slow": "LENTO", "hex_data": "Datos hexadecimales", "custom_nonce": "Nonce", + "custom_nonce_tooltip": "This is the transaction number of an account. Nonce for the first transaction is 0 and it increases in sequential order.", "this_is_an_advanced": "Esta es una función avanzada que se usa para cancelar o acelerar transacciones pendientes.", "current_suggested_nonce": "Nonce actual sugerido:", "edit_transaction_nonce": "Editar nonce de transacción", @@ -1765,6 +1787,7 @@ "tx_details_not_available": "No disponible", "smart_contract_interaction": "Interacción con el contrato inteligente", "swaps_transaction": "Transacción de intercambios", + "bridge_transaction": "Bridge", "approve": "Aprobar", "increase_allowance": "Aumentar la asignación", "set_approval_for_all": "Establecer aprobación para todos", @@ -2251,7 +2274,7 @@ "proceed_anyway": "continuar de todas formas,", "but_please_do_so_at_your_own_risk": "pero hágalo bajo su propia responsabilidad.", "report_detection_problem": "Informar sobre un problema de detección", - "share_on_twitter": "Si le resultó útil, ¡compártalo en X!", + "share_on_twitter": "Si esto le resultó útil, ¡compártalo en X!", "share_text": "MetaMask me protegió de visitar un sitio potencialmente peligroso: {{url}}. ¡Manténgase seguro!" }, "notifications": { @@ -2839,6 +2862,7 @@ } }, "swaps": { + "title": "Swap", "onboarding": { "get_the": "Obtenga", "best_price": "el mejor precio", @@ -3780,19 +3804,22 @@ "permit": "Solicitud de límite de gasto", "permit_revoke": "Eliminar permiso", "permit_NFTs": "Solicitud de retiro", - "signature_siwe": "Solicitud de inicio de sesión" + "signature_siwe": "Solicitud de inicio de sesión", + "contract_interaction": "Transaction request" }, "sub_title": { "permit": "Este sitio necesita permiso para gastar sus tokens.", "permit_NFTs": "Este sitio necesita permiso para retirar sus NFT.", "signature": "Revise los detalles de la solicitud antes de confirmar.", - "signature_siwe": "Un sitio quiere que inicie sesión para demostrar que usted es el titular de esta cuenta." + "signature_siwe": "Un sitio quiere que inicie sesión para demostrar que usted es el titular de esta cuenta.", + "contract_interaction": "Review request details before you confirm." }, "request_from": "Solicitud de", "staking_from": "Staking de", "signing_in_with": "Iniciando sesión con", "message": "Mensaje", "personal_sign_tooltip": "Este sitio solicita su firma", + "transaction_tooltip": "This site is asking for your transaction", "details": "Detalles", "qr_get_sign": "Obtener firma", "qr_scan_text": "Escanee con su monedero físico", @@ -3827,7 +3854,9 @@ "unavailable": "No disponible" }, "unlimited": "Ilimitado", - "none": "Ninguno" + "none": "Ninguno", + "advanced_details": "Advanced details", + "interacting_with": "Interacting with" }, "change_in_simulation_modal": { "title": "Los resultados cambiaron", @@ -3868,6 +3897,29 @@ "time": "Hora", "quote_info_content": "Esta cotización ofrece el mejor rendimiento según nuestra búsqueda. Se basa en la tarifa de intercambio, incluidas las tarifas de puente y una tarifa MetaMask del 0,875 %, pero no las tarifas de gas. Las tarifas de gas varían según la actividad de la red y la complejidad de la transacción.", "quote_info_title": "Por qué recomendamos esta cotización", - "see_other_quotes": "Ver otras cotizaciones" + "see_other_quotes": "Ver otras cotizaciones", + "receive_at": "Receive at", + "error_banner_description": "This trade route isn't available right now. Try changing the amount, network, or token and we'll find the best option.", + "insufficient_funds": "Insufficient funds", + "select_amount": "Select amount", + "bridge_to": "Bridge to", + "title": "Bridge", + "submitting_transaction": "Submitting", + "fetching_quote": "Fetching quote" + }, + "bridge_transaction_details": { + "status": "Status", + "date": "Date", + "total_gas_fee": "Total gas fee", + "estimated_completion": "Est. completion", + "bridge_step_action_bridge_complete": "{{destSymbol}} received on {{destChainName}}", + "bridge_step_action_bridge_pending": "Receiving {{destSymbol}} on {{destChainName}}", + "bridge_step_action_swap_complete": "Swapped {{srcSymbol}} for {{destSymbol}}", + "bridge_step_action_swap_pending": "Swapping {{srcSymbol}} for {{destSymbol}}", + "view_on_block_explorer": "View on Block Explorer", + "block_explorer_description": "This transaction lives on two networks. The first link shows the source; the second shows the destination once it’s confirmed.", + "transaction_details": "Transaction Details", + "bridge_to_chain": "Bridge to {{chainName}}", + "recipient": "Recipient" } } diff --git a/locales/languages/fr.json b/locales/languages/fr.json index 2fda178f00da..d82612410197 100644 --- a/locales/languages/fr.json +++ b/locales/languages/fr.json @@ -27,6 +27,11 @@ "domain_mismatch": { "title": "Demande de connexion suspecte", "message": "Le site à l’origine de la demande n’est pas celui auquel vous essayez de vous connecter. Il peut s’agir d’une tentative de vol de vos identifiants de connexion." + }, + "insufficient_balance": { + "title": "Insufficient funds", + "message": "You do not have enough %{nativeCurrency} in your account to pay for network fees.", + "buy_action": "Buy %{nativeCurrency}" } }, "blockaid_banner": { @@ -78,10 +83,11 @@ "connector": "à" }, "autocomplete": { - "placeholder": "Rechercher par site ou par adresse", + "placeholder": "Search by token, site or address", "recents": "Récents", "favorites": "Favoris", - "sites": "Sites" + "sites": "Sites", + "tokens": "Tokens" }, "navigation": { "back": "Retour", @@ -785,7 +791,17 @@ "add_new_hd_account_helper_text": "La phrase secrète de récupération à partir de laquelle votre nouveau compte sera généré", "accounts": "comptes", "show_accounts": "Afficher", - "hide_accounts": "Masquer" + "hide_accounts": "Masquer", + "labels": { + "bitcoin_testnet_account_name": "Bitcoin Testnet Account", + "bitcoin_account_name": "Bitcoin Account", + "solana_devnet_account_name": "Solana Devnet Account", + "solana_testnet_account_name": "Solana Testnet Account", + "solana_account_name": "Solana Account" + }, + "error_messages": { + "failed_to_create_account": "Failed to create {{clientType}} account" + } }, "toast": { "connected_and_active": "connecté et actif.", @@ -1117,6 +1133,11 @@ "snaps": { "title": "Snaps", "description": "Aperçu et gestion de vos Snaps", + "snap_ui": { + "link": { + "accessibilityHint": "Opens in a new tab" + } + }, "snap_settings": { "remove_snap_section_title": "Supprimer ce Snap", "remove_snap_section_description": "Cette action supprimera le Snap, ses données et les autorisations qui lui ont été accordées.", @@ -1487,6 +1508,7 @@ "gas_fee_slow": "LENT", "hex_data": "Données hexadécimales", "custom_nonce": "Nonce", + "custom_nonce_tooltip": "This is the transaction number of an account. Nonce for the first transaction is 0 and it increases in sequential order.", "this_is_an_advanced": "Il s’agit d’une fonction avancée utilisée pour annuler ou accélérer toute transaction en attente.", "current_suggested_nonce": "Nonce actuel suggéré :", "edit_transaction_nonce": "Personnaliser le nonce de transaction", @@ -1765,6 +1787,7 @@ "tx_details_not_available": "Non disponible", "smart_contract_interaction": "Interaction de contrats intelligents", "swaps_transaction": "Transaction de swap", + "bridge_transaction": "Bridge", "approve": "Approuver", "increase_allowance": "Augmenter la provision", "set_approval_for_all": "Définir l’approbation pour tous", @@ -2839,6 +2862,7 @@ } }, "swaps": { + "title": "Swap", "onboarding": { "get_the": "Bénéficiez en permanence", "best_price": "du meilleur prix", @@ -3780,19 +3804,22 @@ "permit": "Demande de plafonnement des dépenses", "permit_revoke": "Supprimer l’autorisation", "permit_NFTs": "Demande de retrait", - "signature_siwe": "Demande de connexion" + "signature_siwe": "Demande de connexion", + "contract_interaction": "Transaction request" }, "sub_title": { "permit": "Ce site demande l’autorisation de dépenser vos jetons.", "permit_NFTs": "Ce site demande l’autorisation de retirer vos jetons.", "signature": "Vérifiez les détails de la demande avant de la confirmer.", - "signature_siwe": "Un site vous demande de vous connecter pour prouver que vous êtes le titulaire de ce compte." + "signature_siwe": "Un site vous demande de vous connecter pour prouver que vous êtes le titulaire de ce compte.", + "contract_interaction": "Review request details before you confirm." }, "request_from": "Demande de", "staking_from": "Staking à partir de", "signing_in_with": "Se connecter avec", "message": "Message", "personal_sign_tooltip": "Ce site demande votre signature", + "transaction_tooltip": "This site is asking for your transaction", "details": "Détails", "qr_get_sign": "Obtenir la signature", "qr_scan_text": "Scannez avec votre portefeuille matériel", @@ -3827,7 +3854,9 @@ "unavailable": "Non disponible" }, "unlimited": "Illimité", - "none": "Aucun" + "none": "Aucun", + "advanced_details": "Advanced details", + "interacting_with": "Interacting with" }, "change_in_simulation_modal": { "title": "Les résultats ont changé", @@ -3868,6 +3897,29 @@ "time": "Temps", "quote_info_content": "D’après nos recherches, cette cotation offre le meilleur rendement. Elle prend en compte le taux de change, les frais d’établissement d’une passerelle et les frais de MetaMask de 0,875 %, mais pas les frais de gaz. Les frais de gaz varient en fonction de l’activité du réseau et de la complexité de la transaction.", "quote_info_title": "Pourquoi nous recommandons cette cotation", - "see_other_quotes": "Voir d’autres cotations" + "see_other_quotes": "Voir d’autres cotations", + "receive_at": "Receive at", + "error_banner_description": "This trade route isn't available right now. Try changing the amount, network, or token and we'll find the best option.", + "insufficient_funds": "Insufficient funds", + "select_amount": "Select amount", + "bridge_to": "Bridge to", + "title": "Bridge", + "submitting_transaction": "Submitting", + "fetching_quote": "Fetching quote" + }, + "bridge_transaction_details": { + "status": "Status", + "date": "Date", + "total_gas_fee": "Total gas fee", + "estimated_completion": "Est. completion", + "bridge_step_action_bridge_complete": "{{destSymbol}} received on {{destChainName}}", + "bridge_step_action_bridge_pending": "Receiving {{destSymbol}} on {{destChainName}}", + "bridge_step_action_swap_complete": "Swapped {{srcSymbol}} for {{destSymbol}}", + "bridge_step_action_swap_pending": "Swapping {{srcSymbol}} for {{destSymbol}}", + "view_on_block_explorer": "View on Block Explorer", + "block_explorer_description": "This transaction lives on two networks. The first link shows the source; the second shows the destination once it’s confirmed.", + "transaction_details": "Transaction Details", + "bridge_to_chain": "Bridge to {{chainName}}", + "recipient": "Recipient" } } diff --git a/locales/languages/hi.json b/locales/languages/hi.json index 2e63bdfd0a09..2f6176378973 100644 --- a/locales/languages/hi.json +++ b/locales/languages/hi.json @@ -27,6 +27,11 @@ "domain_mismatch": { "title": "संदिग्ध साइन-इन अनुरोध", "message": "अनुरोध करने वाली साइट वह साइट नहीं है जिस पर आप साइन इन कर रहे हैं। यह आपके लॉगिन क्रेडेंशियल चुराने का प्रयास हो सकता है।" + }, + "insufficient_balance": { + "title": "Insufficient funds", + "message": "You do not have enough %{nativeCurrency} in your account to pay for network fees.", + "buy_action": "Buy %{nativeCurrency}" } }, "blockaid_banner": { @@ -78,10 +83,11 @@ "connector": "पर" }, "autocomplete": { - "placeholder": "साइट या एड्रेस से ढूंढें", + "placeholder": "Search by token, site or address", "recents": "हालिया", "favorites": "पसंदीदा", - "sites": "साइट्स" + "sites": "साइट्स", + "tokens": "Tokens" }, "navigation": { "back": "वापस", @@ -785,7 +791,17 @@ "add_new_hd_account_helper_text": "सीक्रेट रिकवरी फ्रेज़ जिससे आपका नया अकाउंट जनरेट होगा", "accounts": "एकाउंट्स", "show_accounts": "दिखाएं", - "hide_accounts": "छुपाएं" + "hide_accounts": "छुपाएं", + "labels": { + "bitcoin_testnet_account_name": "Bitcoin Testnet Account", + "bitcoin_account_name": "Bitcoin Account", + "solana_devnet_account_name": "Solana Devnet Account", + "solana_testnet_account_name": "Solana Testnet Account", + "solana_account_name": "Solana Account" + }, + "error_messages": { + "failed_to_create_account": "Failed to create {{clientType}} account" + } }, "toast": { "connected_and_active": "कनेक्ट किया हुआ और सक्रिय।", @@ -1117,6 +1133,11 @@ "snaps": { "title": "Snaps", "description": "अपने Snaps को ओवरव्यू करें और उन्हें मैनेज करें", + "snap_ui": { + "link": { + "accessibilityHint": "Opens in a new tab" + } + }, "snap_settings": { "remove_snap_section_title": "Snap हटाएं", "remove_snap_section_description": "ये कदम Snap और उसके डेटा को और उसके द्वारा दी गई अनुमतियों को हटा देगा।", @@ -1487,6 +1508,7 @@ "gas_fee_slow": "धीमा", "hex_data": "हेक्स डेटा", "custom_nonce": "नॉन्स (nonce)", + "custom_nonce_tooltip": "This is the transaction number of an account. Nonce for the first transaction is 0 and it increases in sequential order.", "this_is_an_advanced": "यह एक एडवांस फीचर है जिसका उपयोग किसी विचाराधीन लेन-देन को रद्द करने या तेज करने में किया जाता है।", "current_suggested_nonce": "वर्तमान सुझाए गए नॉन्स:", "edit_transaction_nonce": "लेन-देन नॉन्स को संपादित करें", @@ -1765,6 +1787,7 @@ "tx_details_not_available": "उपलब्ध नहीं है", "smart_contract_interaction": "स्मार्ट अनुबंध संपर्क", "swaps_transaction": "स्वैप का लेन-देन", + "bridge_transaction": "Bridge", "approve": "स्वीकृति दें", "increase_allowance": "भत्ता बढ़ाएं", "set_approval_for_all": "सभी के लिए एप्रूवल सेट करें", @@ -2839,6 +2862,7 @@ } }, "swaps": { + "title": "Swap", "onboarding": { "get_the": "पाएं", "best_price": "सबसे अच्छी कीमत", @@ -3780,19 +3804,22 @@ "permit": "खर्च करने की सीमा का अनुरोध", "permit_revoke": "अनुमति हटाएं", "permit_NFTs": "विदड्रॉवल का अनुरोध", - "signature_siwe": "साइन-इन का अनुरोध" + "signature_siwe": "साइन-इन का अनुरोध", + "contract_interaction": "Transaction request" }, "sub_title": { "permit": "यह साइट आपके टोकन खर्च करने की अनुमति चाहती है।", "permit_NFTs": "यह साइट आपके NFTs को निकालने की अनुमति चाहती है।", "signature": "कन्फर्म करने से पहले अनुरोध विवरण की समीक्षा करें।", - "signature_siwe": "एक साइट चाहती है कि आप यह साबित करने के लिए साइन इन करें कि यह अकाउंट आपका है।" + "signature_siwe": "एक साइट चाहती है कि आप यह साबित करने के लिए साइन इन करें कि यह अकाउंट आपका है।", + "contract_interaction": "Review request details before you confirm." }, "request_from": "इनसे मिला अनुरोध", "staking_from": "से स्टेक किया जा रहा है", "signing_in_with": "के साथ साइन इन किया जा रहा है", "message": "संदेश", "personal_sign_tooltip": "यह साइट आपका सिग्नेचर मांग रही है", + "transaction_tooltip": "This site is asking for your transaction", "details": "विवरण", "qr_get_sign": "सिग्नेचर प्राप्त करें", "qr_scan_text": "अपने हार्डवेयर वॉलेट के साथ स्कैन करें", @@ -3827,7 +3854,9 @@ "unavailable": "अनुपलब्ध" }, "unlimited": "असीमित", - "none": "कोई नहीं" + "none": "कोई नहीं", + "advanced_details": "Advanced details", + "interacting_with": "Interacting with" }, "change_in_simulation_modal": { "title": "परिणाम बदल गए हैं", @@ -3868,6 +3897,29 @@ "time": "समय", "quote_info_content": "यह कोटेशन हमारी खोज से सबसे अच्छा रिटर्न प्रदान करता है। यह स्वैप दर पर आधारित है, जिसमें ब्रिजिंग फीस और 0.875% MetaMask शुल्क शामिल है, लेकिन गैस फीस नहीं। गैस फीस नेटवर्क गतिविधि और ट्रांसेक्शन जटिलता के साथ अलग-अलग होता है।", "quote_info_title": "हम इस कोटेशन का सुझाव क्यों देते हैं", - "see_other_quotes": "अन्य कोटेशन देखें" + "see_other_quotes": "अन्य कोटेशन देखें", + "receive_at": "Receive at", + "error_banner_description": "This trade route isn't available right now. Try changing the amount, network, or token and we'll find the best option.", + "insufficient_funds": "Insufficient funds", + "select_amount": "Select amount", + "bridge_to": "Bridge to", + "title": "Bridge", + "submitting_transaction": "Submitting", + "fetching_quote": "Fetching quote" + }, + "bridge_transaction_details": { + "status": "Status", + "date": "Date", + "total_gas_fee": "Total gas fee", + "estimated_completion": "Est. completion", + "bridge_step_action_bridge_complete": "{{destSymbol}} received on {{destChainName}}", + "bridge_step_action_bridge_pending": "Receiving {{destSymbol}} on {{destChainName}}", + "bridge_step_action_swap_complete": "Swapped {{srcSymbol}} for {{destSymbol}}", + "bridge_step_action_swap_pending": "Swapping {{srcSymbol}} for {{destSymbol}}", + "view_on_block_explorer": "View on Block Explorer", + "block_explorer_description": "This transaction lives on two networks. The first link shows the source; the second shows the destination once it’s confirmed.", + "transaction_details": "Transaction Details", + "bridge_to_chain": "Bridge to {{chainName}}", + "recipient": "Recipient" } } diff --git a/locales/languages/id.json b/locales/languages/id.json index dafc19bc7498..11062cbadf5c 100644 --- a/locales/languages/id.json +++ b/locales/languages/id.json @@ -27,6 +27,11 @@ "domain_mismatch": { "title": "Permintaan masuk yang mencurigakan", "message": "Situs yang mengajukan permintaan tersebut bukanlah situs yang Anda masuki. Ini mungkin merupakan upaya untuk mencuri kredensial masuk Anda." + }, + "insufficient_balance": { + "title": "Insufficient funds", + "message": "You do not have enough %{nativeCurrency} in your account to pay for network fees.", + "buy_action": "Buy %{nativeCurrency}" } }, "blockaid_banner": { @@ -78,10 +83,11 @@ "connector": "pada" }, "autocomplete": { - "placeholder": "Cari berdasarkan situs atau alamat", + "placeholder": "Search by token, site or address", "recents": "Terbaru", "favorites": "Favorit", - "sites": "Situs" + "sites": "Situs", + "tokens": "Tokens" }, "navigation": { "back": "Kembali", @@ -785,7 +791,17 @@ "add_new_hd_account_helper_text": "Frasa Pemulihan Rahasia akun baru Anda akan dibuat dari", "accounts": "akun", "show_accounts": "Tampilkan", - "hide_accounts": "Sembunyikan" + "hide_accounts": "Sembunyikan", + "labels": { + "bitcoin_testnet_account_name": "Bitcoin Testnet Account", + "bitcoin_account_name": "Bitcoin Account", + "solana_devnet_account_name": "Solana Devnet Account", + "solana_testnet_account_name": "Solana Testnet Account", + "solana_account_name": "Solana Account" + }, + "error_messages": { + "failed_to_create_account": "Failed to create {{clientType}} account" + } }, "toast": { "connected_and_active": "terhubung dan aktif.", @@ -1117,6 +1133,11 @@ "snaps": { "title": "Snap", "description": "Tinjau dan kelola Snap", + "snap_ui": { + "link": { + "accessibilityHint": "Opens in a new tab" + } + }, "snap_settings": { "remove_snap_section_title": "Hapus Snap", "remove_snap_section_description": "Tindakan ini akan menghapus Snap, datanya, serta izin yang diberikan.", @@ -1487,6 +1508,7 @@ "gas_fee_slow": "LAMBAT", "hex_data": "Data Hex", "custom_nonce": "Nonce", + "custom_nonce_tooltip": "This is the transaction number of an account. Nonce for the first transaction is 0 and it increases in sequential order.", "this_is_an_advanced": "Ini merupakan fitur lanjutan yang digunakan untuk membatalkan atau mempercepat transaksi yang berstatus menunggu.", "current_suggested_nonce": "Nonce yang disarankan saat ini:", "edit_transaction_nonce": "Edit nonce transaksi", @@ -1765,6 +1787,7 @@ "tx_details_not_available": "Tidak tersedia", "smart_contract_interaction": "Interaksi kontrak cerdas", "swaps_transaction": "Transaksi swap", + "bridge_transaction": "Bridge", "approve": "Setujui", "increase_allowance": "Tingkatkan Persetujuan", "set_approval_for_all": "Atur Persetujuan Untuk Semua", @@ -2839,6 +2862,7 @@ } }, "swaps": { + "title": "Swap", "onboarding": { "get_the": "Dapatkan", "best_price": "harga terbaik", @@ -3780,19 +3804,22 @@ "permit": "Permintaan batas penggunaan", "permit_revoke": "Hapus izin", "permit_NFTs": "Permintaan penarikan", - "signature_siwe": "Permintaan masuk" + "signature_siwe": "Permintaan masuk", + "contract_interaction": "Transaction request" }, "sub_title": { "permit": "Situs ini meminta izin untuk menggunakan token Anda.", "permit_NFTs": "Situs ini meminta izin untuk menarik NFT Anda.", "signature": "Tinjau detail permintaan sebelum mengonfirmasi.", - "signature_siwe": "Sebuah situs ingin Anda masuk untuk membuktikan bahwa Anda merupakan pemilik akun ini." + "signature_siwe": "Sebuah situs ingin Anda masuk untuk membuktikan bahwa Anda merupakan pemilik akun ini.", + "contract_interaction": "Review request details before you confirm." }, "request_from": "Permintaan dari", "staking_from": "Stake dari", "signing_in_with": "Masuk dengan", "message": "Pesan", "personal_sign_tooltip": "Situs ini meminta tanda tangan Anda", + "transaction_tooltip": "This site is asking for your transaction", "details": "Detail", "qr_get_sign": "Dapatkan Tanda Tangan", "qr_scan_text": "Pindai dengan dompet perangkat keras", @@ -3827,7 +3854,9 @@ "unavailable": "Tidak tersedia" }, "unlimited": "Tak terbatas", - "none": "Kosong" + "none": "Kosong", + "advanced_details": "Advanced details", + "interacting_with": "Interacting with" }, "change_in_simulation_modal": { "title": "Hasil telah berubah", @@ -3868,6 +3897,29 @@ "time": "Waktu", "quote_info_content": "Kuotasi ini menawarkan hasil terbaik dari pencarian kami. Kuotasi ini didasarkan pada nilai tukar, termasuk biaya bridge dan biaya MetaMask 0,875%, tetapi tidak termasuk biaya gas. Biaya gas bervariasi tergantung aktivitas jaringan dan kompleksitas transaksi.", "quote_info_title": "Alasan kami merekomendasikan kuotasi ini", - "see_other_quotes": "Lihat kuotasi lainnya" + "see_other_quotes": "Lihat kuotasi lainnya", + "receive_at": "Receive at", + "error_banner_description": "This trade route isn't available right now. Try changing the amount, network, or token and we'll find the best option.", + "insufficient_funds": "Insufficient funds", + "select_amount": "Select amount", + "bridge_to": "Bridge to", + "title": "Bridge", + "submitting_transaction": "Submitting", + "fetching_quote": "Fetching quote" + }, + "bridge_transaction_details": { + "status": "Status", + "date": "Date", + "total_gas_fee": "Total gas fee", + "estimated_completion": "Est. completion", + "bridge_step_action_bridge_complete": "{{destSymbol}} received on {{destChainName}}", + "bridge_step_action_bridge_pending": "Receiving {{destSymbol}} on {{destChainName}}", + "bridge_step_action_swap_complete": "Swapped {{srcSymbol}} for {{destSymbol}}", + "bridge_step_action_swap_pending": "Swapping {{srcSymbol}} for {{destSymbol}}", + "view_on_block_explorer": "View on Block Explorer", + "block_explorer_description": "This transaction lives on two networks. The first link shows the source; the second shows the destination once it’s confirmed.", + "transaction_details": "Transaction Details", + "bridge_to_chain": "Bridge to {{chainName}}", + "recipient": "Recipient" } } diff --git a/locales/languages/ja.json b/locales/languages/ja.json index d656d0844946..a141badd5fbc 100644 --- a/locales/languages/ja.json +++ b/locales/languages/ja.json @@ -27,6 +27,11 @@ "domain_mismatch": { "title": "不審なサインイン要求", "message": "要求を行っているサイトはサインインしようとしているサイトではありません。これはログイン情報を盗む試みかもしれません。" + }, + "insufficient_balance": { + "title": "Insufficient funds", + "message": "You do not have enough %{nativeCurrency} in your account to pay for network fees.", + "buy_action": "Buy %{nativeCurrency}" } }, "blockaid_banner": { @@ -78,10 +83,11 @@ "connector": "at" }, "autocomplete": { - "placeholder": "サイトまたはアドレスで検索", + "placeholder": "Search by token, site or address", "recents": "最近", "favorites": "お気に入り", - "sites": "サイト" + "sites": "サイト", + "tokens": "Tokens" }, "navigation": { "back": "戻る", @@ -785,7 +791,17 @@ "add_new_hd_account_helper_text": "新しいアカウントの生成元となるシークレットリカバリーフレーズ", "accounts": "アカウント", "show_accounts": "表示", - "hide_accounts": "非表示" + "hide_accounts": "非表示", + "labels": { + "bitcoin_testnet_account_name": "Bitcoin Testnet Account", + "bitcoin_account_name": "Bitcoin Account", + "solana_devnet_account_name": "Solana Devnet Account", + "solana_testnet_account_name": "Solana Testnet Account", + "solana_account_name": "Solana Account" + }, + "error_messages": { + "failed_to_create_account": "Failed to create {{clientType}} account" + } }, "toast": { "connected_and_active": "接続済みかつ有効です。", @@ -1117,6 +1133,11 @@ "snaps": { "title": "Snap", "description": "Snapの概要と管理", + "snap_ui": { + "link": { + "accessibilityHint": "Opens in a new tab" + } + }, "snap_settings": { "remove_snap_section_title": "Snapの削除", "remove_snap_section_description": "この操作により、Snapとそのデータが削除され、与えられたアクセス許可が取り消されます。", @@ -1487,6 +1508,7 @@ "gas_fee_slow": "低速", "hex_data": "16進データ", "custom_nonce": "ナンス", + "custom_nonce_tooltip": "This is the transaction number of an account. Nonce for the first transaction is 0 and it increases in sequential order.", "this_is_an_advanced": "これは保留中のトランザクションをキャンセルまたは高速化する高度な機能です。", "current_suggested_nonce": "現在サポートされているナンス:", "edit_transaction_nonce": "トランザクションナンスを編集", @@ -1765,6 +1787,7 @@ "tx_details_not_available": "利用できません", "smart_contract_interaction": "スマートコントラクトのインタラクション", "swaps_transaction": "スワップトランザクション", + "bridge_transaction": "Bridge", "approve": "承認", "increase_allowance": "許容額を増やす", "set_approval_for_all": "すべてを承認に設定", @@ -2839,6 +2862,7 @@ } }, "swaps": { + "title": "Swap", "onboarding": { "get_the": "トップの", "best_price": "流動性", @@ -3780,19 +3804,22 @@ "permit": "使用上限要求", "permit_revoke": "アクセス許可を取り消す", "permit_NFTs": "出金リクエスト", - "signature_siwe": "サインイン要求" + "signature_siwe": "サインイン要求", + "contract_interaction": "Transaction request" }, "sub_title": { "permit": "このサイトがトークンの使用許可を求めています。", "permit_NFTs": "このサイトがNFTの引き出し許可を求めています。", "signature": "確定する前にリクエストの詳細を確認してください。", - "signature_siwe": "このアカウントの所有者であることを証明するために、サイトがサインインを求めています。" + "signature_siwe": "このアカウントの所有者であることを証明するために、サイトがサインインを求めています。", + "contract_interaction": "Review request details before you confirm." }, "request_from": "要求元", "staking_from": "ステーキング元", "signing_in_with": "サインイン方法", "message": "メッセージ", "personal_sign_tooltip": "このサイトが署名を求めています", + "transaction_tooltip": "This site is asking for your transaction", "details": "詳細", "qr_get_sign": "署名を取得", "qr_scan_text": "ハードウェアウォレットでスキャン", @@ -3827,7 +3854,9 @@ "unavailable": "利用不可" }, "unlimited": "無制限", - "none": "なし" + "none": "なし", + "advanced_details": "Advanced details", + "interacting_with": "Interacting with" }, "change_in_simulation_modal": { "title": "結果が変更になりました", @@ -3868,6 +3897,29 @@ "time": "時間", "quote_info_content": "このクォートは、当社の検索で最も有利な条件を提供します。クォートはスワップレートに基づくもので、ブリッジ手数料と0.875%のMetaMask手数料が含まれていますが、ガス代は別になります。ガス代はネットワークのアクティビティとトランザクションの複雑さによって異なります。", "quote_info_title": "このクォートをお勧めする理由", - "see_other_quotes": "他のクォートを表示" + "see_other_quotes": "他のクォートを表示", + "receive_at": "Receive at", + "error_banner_description": "This trade route isn't available right now. Try changing the amount, network, or token and we'll find the best option.", + "insufficient_funds": "Insufficient funds", + "select_amount": "Select amount", + "bridge_to": "Bridge to", + "title": "Bridge", + "submitting_transaction": "Submitting", + "fetching_quote": "Fetching quote" + }, + "bridge_transaction_details": { + "status": "Status", + "date": "Date", + "total_gas_fee": "Total gas fee", + "estimated_completion": "Est. completion", + "bridge_step_action_bridge_complete": "{{destSymbol}} received on {{destChainName}}", + "bridge_step_action_bridge_pending": "Receiving {{destSymbol}} on {{destChainName}}", + "bridge_step_action_swap_complete": "Swapped {{srcSymbol}} for {{destSymbol}}", + "bridge_step_action_swap_pending": "Swapping {{srcSymbol}} for {{destSymbol}}", + "view_on_block_explorer": "View on Block Explorer", + "block_explorer_description": "This transaction lives on two networks. The first link shows the source; the second shows the destination once it’s confirmed.", + "transaction_details": "Transaction Details", + "bridge_to_chain": "Bridge to {{chainName}}", + "recipient": "Recipient" } } diff --git a/locales/languages/ko.json b/locales/languages/ko.json index 887ab28b96b1..3fb80d45af1a 100644 --- a/locales/languages/ko.json +++ b/locales/languages/ko.json @@ -27,6 +27,11 @@ "domain_mismatch": { "title": "의심스러운 로그인 요청", "message": "요청을 보낸 사이트는 회원님이 로그인하려는 사이트가 아닙니다. 로그인 정보를 훔치려는 시도일 수 있습니다." + }, + "insufficient_balance": { + "title": "Insufficient funds", + "message": "You do not have enough %{nativeCurrency} in your account to pay for network fees.", + "buy_action": "Buy %{nativeCurrency}" } }, "blockaid_banner": { @@ -78,10 +83,11 @@ "connector": ":" }, "autocomplete": { - "placeholder": "사이트 또는 주소로 검색", + "placeholder": "Search by token, site or address", "recents": "최근", "favorites": "즐겨찾기", - "sites": "사이트" + "sites": "사이트", + "tokens": "Tokens" }, "navigation": { "back": "뒤로", @@ -785,7 +791,17 @@ "add_new_hd_account_helper_text": "새 계정이 생성될 때 사용될 비밀복구구문", "accounts": "계정", "show_accounts": "표시", - "hide_accounts": "숨기기" + "hide_accounts": "숨기기", + "labels": { + "bitcoin_testnet_account_name": "Bitcoin Testnet Account", + "bitcoin_account_name": "Bitcoin Account", + "solana_devnet_account_name": "Solana Devnet Account", + "solana_testnet_account_name": "Solana Testnet Account", + "solana_account_name": "Solana Account" + }, + "error_messages": { + "failed_to_create_account": "Failed to create {{clientType}} account" + } }, "toast": { "connected_and_active": "연결되어 활성화됨.", @@ -1117,6 +1133,11 @@ "snaps": { "title": "Snap", "description": "Snap 개요 및 관리", + "snap_ui": { + "link": { + "accessibilityHint": "Opens in a new tab" + } + }, "snap_settings": { "remove_snap_section_title": "Snap 제거", "remove_snap_section_description": "이렇게 하면 Snap과 데이터가 삭제되고 허용된 권한이 취소됩니다.", @@ -1487,6 +1508,7 @@ "gas_fee_slow": "느림", "hex_data": "헥스 데이터", "custom_nonce": "논스", + "custom_nonce_tooltip": "This is the transaction number of an account. Nonce for the first transaction is 0 and it increases in sequential order.", "this_is_an_advanced": "이 기능은 대기 중인 트랜잭션을 취소하거나 속도를 향상하는 고급 기능입니다.", "current_suggested_nonce": "현재 제안된 논스:", "edit_transaction_nonce": "논스 트랜잭션 편집", @@ -1765,6 +1787,7 @@ "tx_details_not_available": "이용할 수 없음", "smart_contract_interaction": "스마트 계약 인터렉션", "swaps_transaction": "스와프 트랜잭션", + "bridge_transaction": "Bridge", "approve": "승인", "increase_allowance": "한도 증가", "set_approval_for_all": "모두 승인 설정", @@ -2839,6 +2862,7 @@ } }, "swaps": { + "title": "Swap", "onboarding": { "get_the": "최고의", "best_price": "가격을", @@ -3780,19 +3804,22 @@ "permit": "지출 한도 요청", "permit_revoke": "권한 제거", "permit_NFTs": "출금 요청", - "signature_siwe": "로그인 요청" + "signature_siwe": "로그인 요청", + "contract_interaction": "Transaction request" }, "sub_title": { "permit": "이 사이트에서 토큰 사용 권한을 요청합니다.", "permit_NFTs": "이 사이트에서 NFT 인출 권한을 요청합니다.", "signature": "컨펌하기 전에 요청 세부 사항을 검토하세요.", - "signature_siwe": "어떤 사이트에서 귀하가 이 계정을 소유했는지 확인하기 위해 로그인을 요청하고 있습니다." + "signature_siwe": "어떤 사이트에서 귀하가 이 계정을 소유했는지 확인하기 위해 로그인을 요청하고 있습니다.", + "contract_interaction": "Review request details before you confirm." }, "request_from": "요청자:", "staking_from": "스테이킹 출처:", "signing_in_with": "다음으로 로그인 중", "message": "메시지", "personal_sign_tooltip": "서명이 필요한 사이트입니다", + "transaction_tooltip": "This site is asking for your transaction", "details": "세부 정보", "qr_get_sign": "서명 받기", "qr_scan_text": "하드웨어 지갑으로 스캔하기", @@ -3827,7 +3854,9 @@ "unavailable": "사용 불가" }, "unlimited": "무제한", - "none": "없음" + "none": "없음", + "advanced_details": "Advanced details", + "interacting_with": "Interacting with" }, "change_in_simulation_modal": { "title": "결과가 변경되었습니다", @@ -3868,6 +3897,29 @@ "time": "시간", "quote_info_content": "이 견적은 검색 결과 중 가장 높은 수익을 제공합니다. 브릿징 수수료와 0.875% MetaMask 수수료가 포함된 스왑 비율을 기반으로 하며, 가스비는 포함되어 있지 않습니다. 가스비는 네트워크 활동과 트랜잭션 복잡성에 따라 달라집니다.", "quote_info_title": "이 견적 추천 이유", - "see_other_quotes": "다른 견적 보기" + "see_other_quotes": "다른 견적 보기", + "receive_at": "Receive at", + "error_banner_description": "This trade route isn't available right now. Try changing the amount, network, or token and we'll find the best option.", + "insufficient_funds": "Insufficient funds", + "select_amount": "Select amount", + "bridge_to": "Bridge to", + "title": "Bridge", + "submitting_transaction": "Submitting", + "fetching_quote": "Fetching quote" + }, + "bridge_transaction_details": { + "status": "Status", + "date": "Date", + "total_gas_fee": "Total gas fee", + "estimated_completion": "Est. completion", + "bridge_step_action_bridge_complete": "{{destSymbol}} received on {{destChainName}}", + "bridge_step_action_bridge_pending": "Receiving {{destSymbol}} on {{destChainName}}", + "bridge_step_action_swap_complete": "Swapped {{srcSymbol}} for {{destSymbol}}", + "bridge_step_action_swap_pending": "Swapping {{srcSymbol}} for {{destSymbol}}", + "view_on_block_explorer": "View on Block Explorer", + "block_explorer_description": "This transaction lives on two networks. The first link shows the source; the second shows the destination once it’s confirmed.", + "transaction_details": "Transaction Details", + "bridge_to_chain": "Bridge to {{chainName}}", + "recipient": "Recipient" } } diff --git a/locales/languages/pt.json b/locales/languages/pt.json index f7b03f41b909..585f54c20bf1 100644 --- a/locales/languages/pt.json +++ b/locales/languages/pt.json @@ -27,6 +27,11 @@ "domain_mismatch": { "title": "Solicitação de entrada suspeita", "message": "O site solicitante não é o site em que você está fazendo login. Isso pode ser uma tentativa de roubar suas credenciais de login." + }, + "insufficient_balance": { + "title": "Insufficient funds", + "message": "You do not have enough %{nativeCurrency} in your account to pay for network fees.", + "buy_action": "Buy %{nativeCurrency}" } }, "blockaid_banner": { @@ -78,10 +83,11 @@ "connector": "em" }, "autocomplete": { - "placeholder": "Pesquisar por site ou por endereço", + "placeholder": "Search by token, site or address", "recents": "Recentes", "favorites": "Favoritos", - "sites": "Sites" + "sites": "Sites", + "tokens": "Tokens" }, "navigation": { "back": "Voltar", @@ -785,7 +791,17 @@ "add_new_hd_account_helper_text": "A frase de recuperação secreta de sua nova conta será gerada de", "accounts": "contas", "show_accounts": "Exibir", - "hide_accounts": "Ocultar" + "hide_accounts": "Ocultar", + "labels": { + "bitcoin_testnet_account_name": "Bitcoin Testnet Account", + "bitcoin_account_name": "Bitcoin Account", + "solana_devnet_account_name": "Solana Devnet Account", + "solana_testnet_account_name": "Solana Testnet Account", + "solana_account_name": "Solana Account" + }, + "error_messages": { + "failed_to_create_account": "Failed to create {{clientType}} account" + } }, "toast": { "connected_and_active": "conectada e ativa.", @@ -1117,6 +1133,11 @@ "snaps": { "title": "Snaps", "description": "Visualize e gerencie seus Snaps", + "snap_ui": { + "link": { + "accessibilityHint": "Opens in a new tab" + } + }, "snap_settings": { "remove_snap_section_title": "Remover Snap", "remove_snap_section_description": "Esta ação excluirá o Snap, seus dados e suas permissões.", @@ -1487,6 +1508,7 @@ "gas_fee_slow": "LENTO", "hex_data": "Dados hexa", "custom_nonce": "Nonce", + "custom_nonce_tooltip": "This is the transaction number of an account. Nonce for the first transaction is 0 and it increases in sequential order.", "this_is_an_advanced": "Esse é um recurso avançado usado para cancelar ou acelerar qualquer transação pendente.", "current_suggested_nonce": "Nonce atual sugerido:", "edit_transaction_nonce": "Editar nonce da transação", @@ -1765,6 +1787,7 @@ "tx_details_not_available": "Não disponível", "smart_contract_interaction": "Interação com contrato inteligente", "swaps_transaction": "Transação de trocas", + "bridge_transaction": "Bridge", "approve": "Aprovar", "increase_allowance": "Aumentar permissão", "set_approval_for_all": "Definir aprovação para todos", @@ -2839,6 +2862,7 @@ } }, "swaps": { + "title": "Swap", "onboarding": { "get_the": "Encontre o", "best_price": "melhor preço", @@ -3780,19 +3804,22 @@ "permit": "Solicitação de limite de gastos", "permit_revoke": "Remover permissão", "permit_NFTs": "Solicitação de saque", - "signature_siwe": "Solicitação de login" + "signature_siwe": "Solicitação de login", + "contract_interaction": "Transaction request" }, "sub_title": { "permit": "Este site quer permissão para gastar seus tokens.", "permit_NFTs": "Este site quer permissão para sacar seus NFTs.", "signature": "Revise os detalhes da solicitação antes de confirmar.", - "signature_siwe": "Um site deseja que você faça login para comprovar que você é o titular desta conta." + "signature_siwe": "Um site deseja que você faça login para comprovar que você é o titular desta conta.", + "contract_interaction": "Review request details before you confirm." }, "request_from": "Solicitação de", "staking_from": "Staking de", "signing_in_with": "Fazendo login com", "message": "Mensagem", "personal_sign_tooltip": "Este site está solicitando sua assinatura", + "transaction_tooltip": "This site is asking for your transaction", "details": "Detalhes", "qr_get_sign": "Obter assinatura", "qr_scan_text": "Leia com sua carteira de hardware", @@ -3827,7 +3854,9 @@ "unavailable": "Indisponível" }, "unlimited": "Ilimitado", - "none": "Nenhum" + "none": "Nenhum", + "advanced_details": "Advanced details", + "interacting_with": "Interacting with" }, "change_in_simulation_modal": { "title": "Os resultados mudaram", @@ -3868,6 +3897,29 @@ "time": "Horário", "quote_info_content": "Esta cotação oferece o melhor retorno segundo nossa pesquisa. Ela se baseia na taxa de troca, incluindo taxas de ponte e uma taxa de 0,875% da MetaMask, mas não as taxas de gás. Estas variam conforme a atividade da rede e a complexidade da transação.", "quote_info_title": "Por que recomendamos essa cotação", - "see_other_quotes": "Ver outras cotações" + "see_other_quotes": "Ver outras cotações", + "receive_at": "Receive at", + "error_banner_description": "This trade route isn't available right now. Try changing the amount, network, or token and we'll find the best option.", + "insufficient_funds": "Insufficient funds", + "select_amount": "Select amount", + "bridge_to": "Bridge to", + "title": "Bridge", + "submitting_transaction": "Submitting", + "fetching_quote": "Fetching quote" + }, + "bridge_transaction_details": { + "status": "Status", + "date": "Date", + "total_gas_fee": "Total gas fee", + "estimated_completion": "Est. completion", + "bridge_step_action_bridge_complete": "{{destSymbol}} received on {{destChainName}}", + "bridge_step_action_bridge_pending": "Receiving {{destSymbol}} on {{destChainName}}", + "bridge_step_action_swap_complete": "Swapped {{srcSymbol}} for {{destSymbol}}", + "bridge_step_action_swap_pending": "Swapping {{srcSymbol}} for {{destSymbol}}", + "view_on_block_explorer": "View on Block Explorer", + "block_explorer_description": "This transaction lives on two networks. The first link shows the source; the second shows the destination once it’s confirmed.", + "transaction_details": "Transaction Details", + "bridge_to_chain": "Bridge to {{chainName}}", + "recipient": "Recipient" } } diff --git a/locales/languages/ru.json b/locales/languages/ru.json index e670b4b7e91b..967b517eabdf 100644 --- a/locales/languages/ru.json +++ b/locales/languages/ru.json @@ -27,6 +27,11 @@ "domain_mismatch": { "title": "Подозрительный запрос на вход", "message": "Сайт, делающий запрос, не является тем сайтом, на который вы входите. Это может быть попыткой украсть ваши учетные данные для входа." + }, + "insufficient_balance": { + "title": "Insufficient funds", + "message": "You do not have enough %{nativeCurrency} in your account to pay for network fees.", + "buy_action": "Buy %{nativeCurrency}" } }, "blockaid_banner": { @@ -78,10 +83,11 @@ "connector": "в" }, "autocomplete": { - "placeholder": "Поиск по сайту или адресу", + "placeholder": "Search by token, site or address", "recents": "Недавние", "favorites": "Избранное", - "sites": "Сайты" + "sites": "Сайты", + "tokens": "Tokens" }, "navigation": { "back": "Назад", @@ -785,7 +791,17 @@ "add_new_hd_account_helper_text": "Секретная фраза для восстановления, на основе которой будет сгенерирован ваш счет", "accounts": "счета", "show_accounts": "Показать", - "hide_accounts": "Скрыть" + "hide_accounts": "Скрыть", + "labels": { + "bitcoin_testnet_account_name": "Bitcoin Testnet Account", + "bitcoin_account_name": "Bitcoin Account", + "solana_devnet_account_name": "Solana Devnet Account", + "solana_testnet_account_name": "Solana Testnet Account", + "solana_account_name": "Solana Account" + }, + "error_messages": { + "failed_to_create_account": "Failed to create {{clientType}} account" + } }, "toast": { "connected_and_active": "подключен и активен.", @@ -1117,6 +1133,11 @@ "snaps": { "title": "Snaps", "description": "Обзор ваших snaps и управление ими", + "snap_ui": { + "link": { + "accessibilityHint": "Opens in a new tab" + } + }, "snap_settings": { "remove_snap_section_title": "Удалить snap", "remove_snap_section_description": "Это действие приведет к удалению snap, его данных и предоставленных ему разрешений.", @@ -1487,6 +1508,7 @@ "gas_fee_slow": "МЕДЛЕННО", "hex_data": "Шестнадцатеричные данные", "custom_nonce": "Одноразовый код", + "custom_nonce_tooltip": "This is the transaction number of an account. Nonce for the first transaction is 0 and it increases in sequential order.", "this_is_an_advanced": "Это расширенная функция, используемая для отмены или ускорения любых ожидающих транзакций.", "current_suggested_nonce": "Текущий рекомендуемый одноразовый код:", "edit_transaction_nonce": "Изменить одноразовый номер транзакции", @@ -1765,6 +1787,7 @@ "tx_details_not_available": "Недоступен", "smart_contract_interaction": "Взаимодействие со смарт-контрактом", "swaps_transaction": "Транзакция свопа", + "bridge_transaction": "Bridge", "approve": "Одобрить", "increase_allowance": "Увеличить квоту", "set_approval_for_all": "Одобрить все", @@ -2839,6 +2862,7 @@ } }, "swaps": { + "title": "Swap", "onboarding": { "get_the": "Получите", "best_price": "лучшую цену", @@ -3780,19 +3804,22 @@ "permit": "Запрос на ограничение расходов", "permit_revoke": "Удалить разрешение", "permit_NFTs": "Запрос на вывод средств", - "signature_siwe": "Запрос на вход" + "signature_siwe": "Запрос на вход", + "contract_interaction": "Transaction request" }, "sub_title": { "permit": "Этот сайт запрашивает разрешение на трату ваших токенов.", "permit_NFTs": "Этот сайт запрашивает разрешение на вывод ваших NFT.", "signature": "Прежде чем подтвердить запрос, просмотрите детали запроса.", - "signature_siwe": "Сайт хочет, чтобы вы вошли в систему, чтобы доказать, что вы являетесь владельцем этого счета." + "signature_siwe": "Сайт хочет, чтобы вы вошли в систему, чтобы доказать, что вы являетесь владельцем этого счета.", + "contract_interaction": "Review request details before you confirm." }, "request_from": "Запрос от", "staking_from": "Стейкинг от", "signing_in_with": "Вход через", "message": "Сообщение", "personal_sign_tooltip": "Этот сайт запрашивает вашу подпись", + "transaction_tooltip": "This site is asking for your transaction", "details": "Подробности", "qr_get_sign": "Получить подпись", "qr_scan_text": "Отсканируйте с помощью вашего аппаратного кошелька", @@ -3827,7 +3854,9 @@ "unavailable": "Недоступно" }, "unlimited": "Неограничено", - "none": "Нет" + "none": "Нет", + "advanced_details": "Advanced details", + "interacting_with": "Interacting with" }, "change_in_simulation_modal": { "title": "Результаты изменились", @@ -3868,6 +3897,29 @@ "time": "Время", "quote_info_content": "Эта котировка самая выгодная из найденных нами вариантов. Она основана на ставке свопа, включая комиссию за создание моста и комиссию MetaMask в размере 0,875%, но не на плату за газ. Размер платы за газ зависят от активности сети и сложности транзакции.", "quote_info_title": "Почему мы рекомендуем эту котировку", - "see_other_quotes": "Смотреть другие котировки" + "see_other_quotes": "Смотреть другие котировки", + "receive_at": "Receive at", + "error_banner_description": "This trade route isn't available right now. Try changing the amount, network, or token and we'll find the best option.", + "insufficient_funds": "Insufficient funds", + "select_amount": "Select amount", + "bridge_to": "Bridge to", + "title": "Bridge", + "submitting_transaction": "Submitting", + "fetching_quote": "Fetching quote" + }, + "bridge_transaction_details": { + "status": "Status", + "date": "Date", + "total_gas_fee": "Total gas fee", + "estimated_completion": "Est. completion", + "bridge_step_action_bridge_complete": "{{destSymbol}} received on {{destChainName}}", + "bridge_step_action_bridge_pending": "Receiving {{destSymbol}} on {{destChainName}}", + "bridge_step_action_swap_complete": "Swapped {{srcSymbol}} for {{destSymbol}}", + "bridge_step_action_swap_pending": "Swapping {{srcSymbol}} for {{destSymbol}}", + "view_on_block_explorer": "View on Block Explorer", + "block_explorer_description": "This transaction lives on two networks. The first link shows the source; the second shows the destination once it’s confirmed.", + "transaction_details": "Transaction Details", + "bridge_to_chain": "Bridge to {{chainName}}", + "recipient": "Recipient" } } diff --git a/locales/languages/tl.json b/locales/languages/tl.json index a861ae67b756..a6fc22772e44 100644 --- a/locales/languages/tl.json +++ b/locales/languages/tl.json @@ -27,6 +27,11 @@ "domain_mismatch": { "title": "Kahina-hinalang kahilingan sa pag-sign in", "message": "Ang site na humihiling ay hindi ang site kung saan ka nagsa-sign in. Maaaring isa itong pagtatangkang nakawin ang iyong mga kredensyal sa pag-login." + }, + "insufficient_balance": { + "title": "Insufficient funds", + "message": "You do not have enough %{nativeCurrency} in your account to pay for network fees.", + "buy_action": "Buy %{nativeCurrency}" } }, "blockaid_banner": { @@ -78,10 +83,11 @@ "connector": "sa" }, "autocomplete": { - "placeholder": "Maghanap ayon sa site o address", + "placeholder": "Search by token, site or address", "recents": "Mga Kamakailan", "favorites": "Mga Paborito", - "sites": "Mga Site" + "sites": "Mga Site", + "tokens": "Tokens" }, "navigation": { "back": "Bumalik", @@ -785,7 +791,17 @@ "add_new_hd_account_helper_text": "Ang iyong bagong account mula sa kung saan bubuuin ang Lihim na Parirala sa Pagbawi", "accounts": "mga account", "show_accounts": "Ipakita", - "hide_accounts": "Itago" + "hide_accounts": "Itago", + "labels": { + "bitcoin_testnet_account_name": "Bitcoin Testnet Account", + "bitcoin_account_name": "Bitcoin Account", + "solana_devnet_account_name": "Solana Devnet Account", + "solana_testnet_account_name": "Solana Testnet Account", + "solana_account_name": "Solana Account" + }, + "error_messages": { + "failed_to_create_account": "Failed to create {{clientType}} account" + } }, "toast": { "connected_and_active": "konektado at aktibo.", @@ -1117,6 +1133,11 @@ "snaps": { "title": "Mga Snap", "description": "I-overview at pamahalaan ang iyong mga snap", + "snap_ui": { + "link": { + "accessibilityHint": "Opens in a new tab" + } + }, "snap_settings": { "remove_snap_section_title": "Alisin ang Snap", "remove_snap_section_description": "Idi-delete ng aksyong ito ang snap, ang data nito, at ang mga ipinagkaloob na pahintulot nito.", @@ -1487,6 +1508,7 @@ "gas_fee_slow": "MABAGAL", "hex_data": "Hex na Data", "custom_nonce": "Nonce", + "custom_nonce_tooltip": "This is the transaction number of an account. Nonce for the first transaction is 0 and it increases in sequential order.", "this_is_an_advanced": "Isa itong advanced na feature na ginagamit para makansela o mapabilis ang anumang nakabinbing transaksyon.", "current_suggested_nonce": "Kasalukuyang iminumungkahing nonce:", "edit_transaction_nonce": "I-edit ang nonce ng transaksyon", @@ -1765,6 +1787,7 @@ "tx_details_not_available": "Hindi available", "smart_contract_interaction": "Interaksyon sa smart na kontrata", "swaps_transaction": "Transaksyon sa mga swap", + "bridge_transaction": "Bridge", "approve": "Aprubahan", "increase_allowance": "Dagdag na Allowance", "set_approval_for_all": "Itakda ang Pag-apruba Para sa Lahat", @@ -2839,6 +2862,7 @@ } }, "swaps": { + "title": "Swap", "onboarding": { "get_the": "Makuha ang", "best_price": "pinakasulit na presyo", @@ -3780,19 +3804,22 @@ "permit": "Kahilingan sa limitasyon sa paggastos", "permit_revoke": "Alisin ang pahintulot", "permit_NFTs": "Kahilingang mag-withdraw", - "signature_siwe": "Kahilingan sa pag-sign in" + "signature_siwe": "Kahilingan sa pag-sign in", + "contract_interaction": "Transaction request" }, "sub_title": { "permit": "Kailangan ng site na ito ng pahintulot para gastusin ang mga token mo.", "permit_NFTs": "Kailangan ng site na ito ng pahintulot para i-withdraw ang mga NFT mo.", "signature": "Suriin ang mga detalye ng kahilingan bago mo kumpirmahin.", - "signature_siwe": "Hinihiling ng site na mag-sign in ka para patunayan na ikaw ang may-ari ng account na ito." + "signature_siwe": "Hinihiling ng site na mag-sign in ka para patunayan na ikaw ang may-ari ng account na ito.", + "contract_interaction": "Review request details before you confirm." }, "request_from": "Kahilingan mula sa/kay", "staking_from": "Pag-stake mula sa/kay", "signing_in_with": "Nagsa-sign in gamit ang", "message": "Mensahe", "personal_sign_tooltip": "Hinihingi ng site na ito ang iyong pirma", + "transaction_tooltip": "This site is asking for your transaction", "details": "Mga detalye", "qr_get_sign": "Kumuha ng Lagda", "qr_scan_text": "I-scan gamit ang iyong wallet na hardware", @@ -3827,7 +3854,9 @@ "unavailable": "Hindi available" }, "unlimited": "Walang limitasyon", - "none": "Wala" + "none": "Wala", + "advanced_details": "Advanced details", + "interacting_with": "Interacting with" }, "change_in_simulation_modal": { "title": "Nagbago ang mga resulta", @@ -3868,6 +3897,29 @@ "time": "Oras", "quote_info_content": "Nag-aalok ang quote na ito ng pinakamainam na return mula sa aming paghahanap. Nakabatay ito sa rate ng pag-swap, kabilang ang mga bayad sa pag-bridge at 0.875% na bayad sa MetaMask, ngunit hindi ito mga bayad sa gas. Iba-iba ang mga bayad sa gas depende sa aktibidad ng network at pagiging kumplikado ng transaksyon.", "quote_info_title": "Bakit namin inirerekomenda ang quote na ito", - "see_other_quotes": "Tingnan ang ibang mga quote" + "see_other_quotes": "Tingnan ang ibang mga quote", + "receive_at": "Receive at", + "error_banner_description": "This trade route isn't available right now. Try changing the amount, network, or token and we'll find the best option.", + "insufficient_funds": "Insufficient funds", + "select_amount": "Select amount", + "bridge_to": "Bridge to", + "title": "Bridge", + "submitting_transaction": "Submitting", + "fetching_quote": "Fetching quote" + }, + "bridge_transaction_details": { + "status": "Status", + "date": "Date", + "total_gas_fee": "Total gas fee", + "estimated_completion": "Est. completion", + "bridge_step_action_bridge_complete": "{{destSymbol}} received on {{destChainName}}", + "bridge_step_action_bridge_pending": "Receiving {{destSymbol}} on {{destChainName}}", + "bridge_step_action_swap_complete": "Swapped {{srcSymbol}} for {{destSymbol}}", + "bridge_step_action_swap_pending": "Swapping {{srcSymbol}} for {{destSymbol}}", + "view_on_block_explorer": "View on Block Explorer", + "block_explorer_description": "This transaction lives on two networks. The first link shows the source; the second shows the destination once it’s confirmed.", + "transaction_details": "Transaction Details", + "bridge_to_chain": "Bridge to {{chainName}}", + "recipient": "Recipient" } } diff --git a/locales/languages/tr.json b/locales/languages/tr.json index 3250f544f946..4ffc3ace469e 100644 --- a/locales/languages/tr.json +++ b/locales/languages/tr.json @@ -27,6 +27,11 @@ "domain_mismatch": { "title": "Şüpheli giriş talebi", "message": "Talepte bulunan site giriş yaptığınız site değil. Bu, oturum açma bilgilerinizi çalma teşebbüsü olabilir." + }, + "insufficient_balance": { + "title": "Insufficient funds", + "message": "You do not have enough %{nativeCurrency} in your account to pay for network fees.", + "buy_action": "Buy %{nativeCurrency}" } }, "blockaid_banner": { @@ -78,10 +83,11 @@ "connector": "saat" }, "autocomplete": { - "placeholder": "Siteye veya adrese göre ara", + "placeholder": "Search by token, site or address", "recents": "Son Ziyaret Edilenler", "favorites": "Favoriler", - "sites": "Siteler" + "sites": "Siteler", + "tokens": "Tokens" }, "navigation": { "back": "Geri", @@ -785,7 +791,17 @@ "add_new_hd_account_helper_text": "Yeni hesabınızın oluşturulacağı Gizli Kurtarma İfadesi", "accounts": "hesap", "show_accounts": "Göster", - "hide_accounts": "Gizle" + "hide_accounts": "Gizle", + "labels": { + "bitcoin_testnet_account_name": "Bitcoin Testnet Account", + "bitcoin_account_name": "Bitcoin Account", + "solana_devnet_account_name": "Solana Devnet Account", + "solana_testnet_account_name": "Solana Testnet Account", + "solana_account_name": "Solana Account" + }, + "error_messages": { + "failed_to_create_account": "Failed to create {{clientType}} account" + } }, "toast": { "connected_and_active": "bağlandı ve aktif.", @@ -1117,6 +1133,11 @@ "snaps": { "title": "Snap'ler", "description": "Snap'leriniz için genel bakış ve yönetim", + "snap_ui": { + "link": { + "accessibilityHint": "Opens in a new tab" + } + }, "snap_settings": { "remove_snap_section_title": "Snap'i kaldır", "remove_snap_section_description": "Bu eylem snap'i, verilerini ve verilen izinlerini siler.", @@ -1487,6 +1508,7 @@ "gas_fee_slow": "YAVAŞ", "hex_data": "On Altılı Veriler", "custom_nonce": "Nonce", + "custom_nonce_tooltip": "This is the transaction number of an account. Nonce for the first transaction is 0 and it increases in sequential order.", "this_is_an_advanced": "Bu, bekleyen işlemleri iptal etmek veya hızlandırmak için kullanılan gelişmiş bir özelliktir.", "current_suggested_nonce": "Geçerli önerilen nonce:", "edit_transaction_nonce": "İşlem nonce numarasını düzenle", @@ -1765,6 +1787,7 @@ "tx_details_not_available": "Mevcut değil", "smart_contract_interaction": "Akıllı sözleşme etkileşimi", "swaps_transaction": "Swap işlemi", + "bridge_transaction": "Bridge", "approve": "Onayla", "increase_allowance": "Ödeneği Artır", "set_approval_for_all": "Tümüne Onay Ver", @@ -2839,6 +2862,7 @@ } }, "swaps": { + "title": "Swap", "onboarding": { "get_the": "Tüm zamanların en iyi likidite", "best_price": "kaynaklarından", @@ -3518,7 +3542,7 @@ "feature_2_title": "Solana hesaplarını içe aktar", "feature_2_description": "Başka bir cüzdandan Solana hesabınızı taşımak için bir Gizli Kurtarma İfadesini içe aktarın.", "feature_3_title": "Daha fazla özellik çok yakında", - "feature_3_description": "Solana dapp'leri, NFT'ler, donanım cüzdanı desteği ve daha fazlası çok yakında." + "feature_3_description": "Solana merkeziyetsiz uygulamaları, NFT'ler, donanım cüzdanı desteği ve daha fazlası çok yakında." }, "ipfs_gateway_banner": { "ipfs_gateway_banner_title": "IPFS ağ geçidi", @@ -3780,19 +3804,22 @@ "permit": "Harcama üst limiti", "permit_revoke": "İzni kaldır", "permit_NFTs": "Para çekme talebi", - "signature_siwe": "Giriş talebi" + "signature_siwe": "Giriş talebi", + "contract_interaction": "Transaction request" }, "sub_title": { "permit": "Bu site token'larınızı harcamak için izin istiyor.", "permit_NFTs": "Bu site NFT'lerinizi çekmek için izin istiyor.", "signature": "Onaylamadan önce talep bilgilerini inceleyin.", - "signature_siwe": "Bir site, bu hesabın sahibinin siz olduğunuzu kanıtlamak için giriş yapmanızı istiyor." + "signature_siwe": "Bir site, bu hesabın sahibinin siz olduğunuzu kanıtlamak için giriş yapmanızı istiyor.", + "contract_interaction": "Review request details before you confirm." }, "request_from": "Talebi gönderen", "staking_from": "Stake edilecek yer", "signing_in_with": "Şununla giriş yapılıyor:", "message": "Mesaj", "personal_sign_tooltip": "Bu site imzanızı istiyor", + "transaction_tooltip": "This site is asking for your transaction", "details": "Ayrıntılar", "qr_get_sign": "İmza Al", "qr_scan_text": "Donanım cüzdanınızla tarayın", @@ -3827,7 +3854,9 @@ "unavailable": "Mevcut değil" }, "unlimited": "Sınırsız", - "none": "Hiçbiri" + "none": "Hiçbiri", + "advanced_details": "Advanced details", + "interacting_with": "Interacting with" }, "change_in_simulation_modal": { "title": "Sonuçlar değişti", @@ -3868,6 +3897,29 @@ "time": "Zaman", "quote_info_content": "Aramamıza göre bu teklif en iyi getiriyi sunmaktadır. Swap oranına dayanır ve köprüleme ücretleri ve %0,875 MetaMask ücreti dahildir ancak gaz ücretleri dahil değildir. Gaz ücretleri ağ faaliyetine ve işlemin karmaşıklığına göre değişiklik gösterebilir.", "quote_info_title": "Neden bu teklifi öneriyoruz", - "see_other_quotes": "Diğer teklifleri gör" + "see_other_quotes": "Diğer teklifleri gör", + "receive_at": "Receive at", + "error_banner_description": "This trade route isn't available right now. Try changing the amount, network, or token and we'll find the best option.", + "insufficient_funds": "Insufficient funds", + "select_amount": "Select amount", + "bridge_to": "Bridge to", + "title": "Bridge", + "submitting_transaction": "Submitting", + "fetching_quote": "Fetching quote" + }, + "bridge_transaction_details": { + "status": "Status", + "date": "Date", + "total_gas_fee": "Total gas fee", + "estimated_completion": "Est. completion", + "bridge_step_action_bridge_complete": "{{destSymbol}} received on {{destChainName}}", + "bridge_step_action_bridge_pending": "Receiving {{destSymbol}} on {{destChainName}}", + "bridge_step_action_swap_complete": "Swapped {{srcSymbol}} for {{destSymbol}}", + "bridge_step_action_swap_pending": "Swapping {{srcSymbol}} for {{destSymbol}}", + "view_on_block_explorer": "View on Block Explorer", + "block_explorer_description": "This transaction lives on two networks. The first link shows the source; the second shows the destination once it’s confirmed.", + "transaction_details": "Transaction Details", + "bridge_to_chain": "Bridge to {{chainName}}", + "recipient": "Recipient" } } diff --git a/locales/languages/vi.json b/locales/languages/vi.json index 133f1d709aff..1c205480f1eb 100644 --- a/locales/languages/vi.json +++ b/locales/languages/vi.json @@ -27,6 +27,11 @@ "domain_mismatch": { "title": "Yêu cầu đăng nhập đáng ngờ", "message": "Trang web thực hiện yêu cầu không phải là trang web bạn đang đăng nhập. Đây có thể là một nỗ lực đánh cắp thông tin đăng nhập của bạn." + }, + "insufficient_balance": { + "title": "Insufficient funds", + "message": "You do not have enough %{nativeCurrency} in your account to pay for network fees.", + "buy_action": "Buy %{nativeCurrency}" } }, "blockaid_banner": { @@ -78,10 +83,11 @@ "connector": "tại" }, "autocomplete": { - "placeholder": "Tìm kiếm theo trang web hoặc địa chỉ", + "placeholder": "Search by token, site or address", "recents": "Gần đây", "favorites": "Yêu thích", - "sites": "Trang web" + "sites": "Trang web", + "tokens": "Tokens" }, "navigation": { "back": "Quay lại", @@ -785,7 +791,17 @@ "add_new_hd_account_helper_text": "Tài khoản mới của bạn sẽ được tạo từ Cụm từ khôi phục bí mật này", "accounts": "tài khoản", "show_accounts": "Hiển thị", - "hide_accounts": "Ẩn" + "hide_accounts": "Ẩn", + "labels": { + "bitcoin_testnet_account_name": "Bitcoin Testnet Account", + "bitcoin_account_name": "Bitcoin Account", + "solana_devnet_account_name": "Solana Devnet Account", + "solana_testnet_account_name": "Solana Testnet Account", + "solana_account_name": "Solana Account" + }, + "error_messages": { + "failed_to_create_account": "Failed to create {{clientType}} account" + } }, "toast": { "connected_and_active": "đã được kết nối và đang hoạt động.", @@ -1117,6 +1133,11 @@ "snaps": { "title": "Snap", "description": "Tổng quan và quản lý Snap của bạn", + "snap_ui": { + "link": { + "accessibilityHint": "Opens in a new tab" + } + }, "snap_settings": { "remove_snap_section_title": "Xóa Snap", "remove_snap_section_description": "Hành động này sẽ xóa Snap, cũng như dữ liệu và các quyền đã cấp của Snap đó.", @@ -1487,6 +1508,7 @@ "gas_fee_slow": "CHẬM", "hex_data": "Dữ liệu với mã hex", "custom_nonce": "Nonce", + "custom_nonce_tooltip": "This is the transaction number of an account. Nonce for the first transaction is 0 and it increases in sequential order.", "this_is_an_advanced": "Đây là tính năng nâng cao, được dùng để hủy hoặc tăng tốc bất kỳ giao dịch đang chờ xử lý nào.", "current_suggested_nonce": "Số nonce được đề xuất hiện tại:", "edit_transaction_nonce": "Sửa số nonce giao dịch", @@ -1765,6 +1787,7 @@ "tx_details_not_available": "Không có sẵn", "smart_contract_interaction": "Tương tác hợp đồng thông minh", "swaps_transaction": "Giao dịch hoán đổi", + "bridge_transaction": "Bridge", "approve": "Chấp thuận", "increase_allowance": "Tăng hạn mức", "set_approval_for_all": "Thiết lập phê duyệt tất cả", @@ -2839,6 +2862,7 @@ } }, "swaps": { + "title": "Swap", "onboarding": { "get_the": "Nhận", "best_price": "giá tốt nhất", @@ -3780,19 +3804,22 @@ "permit": "Yêu cầu giới hạn chi tiêu", "permit_revoke": "Xóa quyền", "permit_NFTs": "Yêu cầu rút tiền", - "signature_siwe": "Yêu cầu đăng nhập" + "signature_siwe": "Yêu cầu đăng nhập", + "contract_interaction": "Transaction request" }, "sub_title": { "permit": "Trang web này muốn được cấp quyền chi tiêu token của bạn.", "permit_NFTs": "Trang web này muốn được cấp quyền rút NFT của bạn.", "signature": "Xem lại thông tin yêu cầu trước khi bạn xác nhận.", - "signature_siwe": "Trang web muốn bạn đăng nhập để chứng minh bạn sở hữu tài khoản này." + "signature_siwe": "Trang web muốn bạn đăng nhập để chứng minh bạn sở hữu tài khoản này.", + "contract_interaction": "Review request details before you confirm." }, "request_from": "Yêu cầu từ", "staking_from": "Ký gửi từ", "signing_in_with": "Đăng nhập bằng", "message": "Thông báo", "personal_sign_tooltip": "Trang web này đang yêu cầu chữ ký của bạn", + "transaction_tooltip": "This site is asking for your transaction", "details": "Chi tiết", "qr_get_sign": "Lấy Chữ Ký", "qr_scan_text": "Quét bằng ví cứng của bạn", @@ -3827,7 +3854,9 @@ "unavailable": "Không khả dụng" }, "unlimited": "Không giới hạn", - "none": "Không có" + "none": "Không có", + "advanced_details": "Advanced details", + "interacting_with": "Interacting with" }, "change_in_simulation_modal": { "title": "Kết quả đã thay đổi", @@ -3868,6 +3897,29 @@ "time": "Thời gian", "quote_info_content": "Báo giá này mang lại lợi nhuận tốt nhất từ kết quả tìm kiếm của chúng tôi. Được dựa trên tỷ giá hoán đổi, bao gồm phí cầu nối và phí 0,875% của MetaMask, không bao gồm phí gas. Phí gas thay đổi theo hoạt động mạng và độ phức tạp của giao dịch.", "quote_info_title": "Tại sao chúng tôi đề xuất báo giá này", - "see_other_quotes": "Xem các báo giá khác" + "see_other_quotes": "Xem các báo giá khác", + "receive_at": "Receive at", + "error_banner_description": "This trade route isn't available right now. Try changing the amount, network, or token and we'll find the best option.", + "insufficient_funds": "Insufficient funds", + "select_amount": "Select amount", + "bridge_to": "Bridge to", + "title": "Bridge", + "submitting_transaction": "Submitting", + "fetching_quote": "Fetching quote" + }, + "bridge_transaction_details": { + "status": "Status", + "date": "Date", + "total_gas_fee": "Total gas fee", + "estimated_completion": "Est. completion", + "bridge_step_action_bridge_complete": "{{destSymbol}} received on {{destChainName}}", + "bridge_step_action_bridge_pending": "Receiving {{destSymbol}} on {{destChainName}}", + "bridge_step_action_swap_complete": "Swapped {{srcSymbol}} for {{destSymbol}}", + "bridge_step_action_swap_pending": "Swapping {{srcSymbol}} for {{destSymbol}}", + "view_on_block_explorer": "View on Block Explorer", + "block_explorer_description": "This transaction lives on two networks. The first link shows the source; the second shows the destination once it’s confirmed.", + "transaction_details": "Transaction Details", + "bridge_to_chain": "Bridge to {{chainName}}", + "recipient": "Recipient" } } diff --git a/locales/languages/zh.json b/locales/languages/zh.json index 79eae3524c6d..771310a9b4a4 100644 --- a/locales/languages/zh.json +++ b/locales/languages/zh.json @@ -27,6 +27,11 @@ "domain_mismatch": { "title": "可疑登录请求", "message": "发起请求的网站并非您要登录的网站。可能试图窃取您的登录凭据。" + }, + "insufficient_balance": { + "title": "Insufficient funds", + "message": "You do not have enough %{nativeCurrency} in your account to pay for network fees.", + "buy_action": "Buy %{nativeCurrency}" } }, "blockaid_banner": { @@ -78,10 +83,11 @@ "connector": "于" }, "autocomplete": { - "placeholder": "按网站或地址搜索", + "placeholder": "Search by token, site or address", "recents": "最近", "favorites": "收藏", - "sites": "网站" + "sites": "网站", + "tokens": "Tokens" }, "navigation": { "back": "返回", @@ -785,7 +791,17 @@ "add_new_hd_account_helper_text": "用于生成您的新账户的私钥助记词", "accounts": "账户", "show_accounts": "显示", - "hide_accounts": "隐藏" + "hide_accounts": "隐藏", + "labels": { + "bitcoin_testnet_account_name": "Bitcoin Testnet Account", + "bitcoin_account_name": "Bitcoin Account", + "solana_devnet_account_name": "Solana Devnet Account", + "solana_testnet_account_name": "Solana Testnet Account", + "solana_account_name": "Solana Account" + }, + "error_messages": { + "failed_to_create_account": "Failed to create {{clientType}} account" + } }, "toast": { "connected_and_active": "已连接且处于活动状态。", @@ -1117,6 +1133,11 @@ "snaps": { "title": "Snap", "description": "查看和管理 Snap", + "snap_ui": { + "link": { + "accessibilityHint": "Opens in a new tab" + } + }, "snap_settings": { "remove_snap_section_title": "去除 Snap", "remove_snap_section_description": "此操作将会删除 Snap 及其数据,并撤销您获授予的许可。", @@ -1487,6 +1508,7 @@ "gas_fee_slow": "慢", "hex_data": "十六进制数据", "custom_nonce": "Nonce", + "custom_nonce_tooltip": "This is the transaction number of an account. Nonce for the first transaction is 0 and it increases in sequential order.", "this_is_an_advanced": "这是一个高级功能,用于取消或加快任何未完成交易。", "current_suggested_nonce": "目前建议的 nonce:", "edit_transaction_nonce": "编辑交易 nonce", @@ -1765,6 +1787,7 @@ "tx_details_not_available": "不可用", "smart_contract_interaction": "智能合约交互", "swaps_transaction": "兑换交易", + "bridge_transaction": "Bridge", "approve": "批准", "increase_allowance": "增加限额", "set_approval_for_all": "设置批准所有", @@ -2839,6 +2862,7 @@ } }, "swaps": { + "title": "Swap", "onboarding": { "get_the": "获取", "best_price": "来自", @@ -3780,19 +3804,22 @@ "permit": "支出上限请求", "permit_revoke": "去除许可", "permit_NFTs": "提取请求", - "signature_siwe": "登录请求" + "signature_siwe": "登录请求", + "contract_interaction": "Transaction request" }, "sub_title": { "permit": "该网站想获得花费您的代币的许可。", "permit_NFTs": "该网站想获得提取您的 NFT 的许可。", "signature": "在确认之前检查请求详情。", - "signature_siwe": "一个网站需要您登录来证明您拥有此账户。" + "signature_siwe": "一个网站需要您登录来证明您拥有此账户。", + "contract_interaction": "Review request details before you confirm." }, "request_from": "请求来自", "staking_from": "质押提供商", "signing_in_with": "使用以下方式登录", "message": "消息", "personal_sign_tooltip": "此网站要求您签名", + "transaction_tooltip": "This site is asking for your transaction", "details": "详情", "qr_get_sign": "获取签名", "qr_scan_text": "使用您的硬件钱包扫描", @@ -3827,7 +3854,9 @@ "unavailable": "不可用" }, "unlimited": "无限制", - "none": "无" + "none": "无", + "advanced_details": "Advanced details", + "interacting_with": "Interacting with" }, "change_in_simulation_modal": { "title": "结果已发生变化", @@ -3868,6 +3897,29 @@ "time": "时间", "quote_info_content": "此报价是我们搜索中能为您提供的最优回报。其基于当前兑换汇率计算,包含桥接费用及 0.875% 的 MetaMask 手续费,但不含燃料费。燃料费根据网络活动及交易复杂度动态变化。", "quote_info_title": "我们推荐此报价的原因", - "see_other_quotes": "查看其他报价" + "see_other_quotes": "查看其他报价", + "receive_at": "Receive at", + "error_banner_description": "This trade route isn't available right now. Try changing the amount, network, or token and we'll find the best option.", + "insufficient_funds": "Insufficient funds", + "select_amount": "Select amount", + "bridge_to": "Bridge to", + "title": "Bridge", + "submitting_transaction": "Submitting", + "fetching_quote": "Fetching quote" + }, + "bridge_transaction_details": { + "status": "Status", + "date": "Date", + "total_gas_fee": "Total gas fee", + "estimated_completion": "Est. completion", + "bridge_step_action_bridge_complete": "{{destSymbol}} received on {{destChainName}}", + "bridge_step_action_bridge_pending": "Receiving {{destSymbol}} on {{destChainName}}", + "bridge_step_action_swap_complete": "Swapped {{srcSymbol}} for {{destSymbol}}", + "bridge_step_action_swap_pending": "Swapping {{srcSymbol}} for {{destSymbol}}", + "view_on_block_explorer": "View on Block Explorer", + "block_explorer_description": "This transaction lives on two networks. The first link shows the source; the second shows the destination once it’s confirmed.", + "transaction_details": "Transaction Details", + "bridge_to_chain": "Bridge to {{chainName}}", + "recipient": "Recipient" } } From a8c5b8b2fffc32c6b5d9bf1c21a325f83b94bd13 Mon Sep 17 00:00:00 2001 From: metamaskbot <metamaskbot@users.noreply.github.com> Date: Fri, 25 Apr 2025 11:02:22 +0000 Subject: [PATCH 162/473] Bump version number to 1728 --- android/app/build.gradle | 2 +- bitrise.yml | 4 ++-- ios/MetaMask.xcodeproj/project.pbxproj | 12 ++++++------ 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/android/app/build.gradle b/android/app/build.gradle index 34ecc9634fc3..8257e4049742 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -179,7 +179,7 @@ android { minSdkVersion rootProject.ext.minSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion versionName "7.45.0" - versionCode 1724 + versionCode 1728 testBuildType System.getProperty('testBuildType', 'debug') missingDimensionStrategy 'react-native-camera', 'general' testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" diff --git a/bitrise.yml b/bitrise.yml index 6b2cfcb5674f..f1956f390734 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -2235,13 +2235,13 @@ app: VERSION_NAME: 7.45.0 - opts: is_expand: false - VERSION_NUMBER: 1724 + VERSION_NUMBER: 1728 - opts: is_expand: false FLASK_VERSION_NAME: 7.45.0 - opts: is_expand: false - FLASK_VERSION_NUMBER: 1724 + FLASK_VERSION_NUMBER: 1728 - opts: is_expand: false ANDROID_APK_LINK: '' diff --git a/ios/MetaMask.xcodeproj/project.pbxproj b/ios/MetaMask.xcodeproj/project.pbxproj index 8d93bbeb5536..934ebf9a6501 100644 --- a/ios/MetaMask.xcodeproj/project.pbxproj +++ b/ios/MetaMask.xcodeproj/project.pbxproj @@ -1261,7 +1261,7 @@ CODE_SIGN_IDENTITY = "Apple Development"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1724; + CURRENT_PROJECT_VERSION = 1728; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = 48XVW22RCG; @@ -1330,7 +1330,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMask.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1724; + CURRENT_PROJECT_VERSION = 1728; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 48XVW22RCG; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 48XVW22RCG; @@ -1395,7 +1395,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMaskDebug.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1724; + CURRENT_PROJECT_VERSION = 1728; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = 48XVW22RCG; @@ -1461,7 +1461,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMask.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1724; + CURRENT_PROJECT_VERSION = 1728; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 48XVW22RCG; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 48XVW22RCG; @@ -1620,7 +1620,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMaskDebug.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1724; + CURRENT_PROJECT_VERSION = 1728; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = 48XVW22RCG; @@ -1689,7 +1689,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMask.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1724; + CURRENT_PROJECT_VERSION = 1728; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 48XVW22RCG; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 48XVW22RCG; From 284644328b2453f6ea711169f46881e3ab8a149a Mon Sep 17 00:00:00 2001 From: metamaskbot <metamaskbot@users.noreply.github.com> Date: Fri, 25 Apr 2025 13:27:21 +0000 Subject: [PATCH 163/473] Bump version number to 1729 --- android/app/build.gradle | 2 +- bitrise.yml | 4 ++-- ios/MetaMask.xcodeproj/project.pbxproj | 12 ++++++------ 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/android/app/build.gradle b/android/app/build.gradle index 3c803096f2de..8d3cd59cc23f 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -179,7 +179,7 @@ android { minSdkVersion rootProject.ext.minSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion versionName "7.46.0" - versionCode 1727 + versionCode 1729 testBuildType System.getProperty('testBuildType', 'debug') missingDimensionStrategy 'react-native-camera', 'general' testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" diff --git a/bitrise.yml b/bitrise.yml index 0fde722d8709..ef8da58d9abf 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -2213,13 +2213,13 @@ app: VERSION_NAME: 7.46.0 - opts: is_expand: false - VERSION_NUMBER: 1727 + VERSION_NUMBER: 1729 - opts: is_expand: false FLASK_VERSION_NAME: 7.46.0 - opts: is_expand: false - FLASK_VERSION_NUMBER: 1727 + FLASK_VERSION_NUMBER: 1729 - opts: is_expand: false ANDROID_APK_LINK: '' diff --git a/ios/MetaMask.xcodeproj/project.pbxproj b/ios/MetaMask.xcodeproj/project.pbxproj index cc50cbf84af9..be73efd5d631 100644 --- a/ios/MetaMask.xcodeproj/project.pbxproj +++ b/ios/MetaMask.xcodeproj/project.pbxproj @@ -1261,7 +1261,7 @@ CODE_SIGN_IDENTITY = "Apple Development"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1727; + CURRENT_PROJECT_VERSION = 1729; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = 48XVW22RCG; @@ -1330,7 +1330,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMask.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1727; + CURRENT_PROJECT_VERSION = 1729; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 48XVW22RCG; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 48XVW22RCG; @@ -1395,7 +1395,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMaskDebug.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1727; + CURRENT_PROJECT_VERSION = 1729; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = 48XVW22RCG; @@ -1461,7 +1461,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMask.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1727; + CURRENT_PROJECT_VERSION = 1729; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 48XVW22RCG; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 48XVW22RCG; @@ -1620,7 +1620,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMaskDebug.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1727; + CURRENT_PROJECT_VERSION = 1729; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = 48XVW22RCG; @@ -1689,7 +1689,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMask.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1727; + CURRENT_PROJECT_VERSION = 1729; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 48XVW22RCG; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 48XVW22RCG; From 175820979a7b06ff5244b227f33980918341fc6d Mon Sep 17 00:00:00 2001 From: metamaskbot <metamaskbot@users.noreply.github.com> Date: Fri, 25 Apr 2025 15:06:00 +0000 Subject: [PATCH 164/473] Bump version number to 1731 --- android/app/build.gradle | 2 +- bitrise.yml | 4 ++-- ios/MetaMask.xcodeproj/project.pbxproj | 12 ++++++------ 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/android/app/build.gradle b/android/app/build.gradle index 8d3cd59cc23f..54d3072c7c85 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -179,7 +179,7 @@ android { minSdkVersion rootProject.ext.minSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion versionName "7.46.0" - versionCode 1729 + versionCode 1731 testBuildType System.getProperty('testBuildType', 'debug') missingDimensionStrategy 'react-native-camera', 'general' testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" diff --git a/bitrise.yml b/bitrise.yml index ef8da58d9abf..f0f03b2d6583 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -2213,13 +2213,13 @@ app: VERSION_NAME: 7.46.0 - opts: is_expand: false - VERSION_NUMBER: 1729 + VERSION_NUMBER: 1731 - opts: is_expand: false FLASK_VERSION_NAME: 7.46.0 - opts: is_expand: false - FLASK_VERSION_NUMBER: 1729 + FLASK_VERSION_NUMBER: 1731 - opts: is_expand: false ANDROID_APK_LINK: '' diff --git a/ios/MetaMask.xcodeproj/project.pbxproj b/ios/MetaMask.xcodeproj/project.pbxproj index be73efd5d631..6e0830cdb659 100644 --- a/ios/MetaMask.xcodeproj/project.pbxproj +++ b/ios/MetaMask.xcodeproj/project.pbxproj @@ -1261,7 +1261,7 @@ CODE_SIGN_IDENTITY = "Apple Development"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1729; + CURRENT_PROJECT_VERSION = 1731; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = 48XVW22RCG; @@ -1330,7 +1330,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMask.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1729; + CURRENT_PROJECT_VERSION = 1731; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 48XVW22RCG; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 48XVW22RCG; @@ -1395,7 +1395,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMaskDebug.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1729; + CURRENT_PROJECT_VERSION = 1731; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = 48XVW22RCG; @@ -1461,7 +1461,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMask.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1729; + CURRENT_PROJECT_VERSION = 1731; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 48XVW22RCG; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 48XVW22RCG; @@ -1620,7 +1620,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMaskDebug.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1729; + CURRENT_PROJECT_VERSION = 1731; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = 48XVW22RCG; @@ -1689,7 +1689,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMask.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1729; + CURRENT_PROJECT_VERSION = 1731; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 48XVW22RCG; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 48XVW22RCG; From 16027e623ac8c38f6ad6af23559e1412d17ce87a Mon Sep 17 00:00:00 2001 From: Owen Craston <owen.craston@consensys.net> Date: Fri, 25 Apr 2025 11:03:22 -0700 Subject: [PATCH 165/473] fix: Account List Performance Issues (cherry pick from #14817) (#14876) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit <!-- Please submit this PR as a draft initially. Do not mark it as "Ready for review" until the template has been completely filled out, and PR status checks have passed at least once. --> This PR addresses serious performance issues when opening the account list on mobile. This issue is especially problematic when the user has lots of accounts. Based on my measurements, `the account list took almost 12 (11.96) seconds to open on main vs only 3 seconds with my current fix`. The number of re renders on the AccountSelector component went from `34` to `5`. This means... - `Time to render was reduced by ~74%` _((11.96 - 3.11)/11.96) * 100 = 73.9966555184%_ - `Re renders were reduced by ~ 85%` _((34-5)/34)*100 = 85.2941176471_ - Device: Google Pixel 6 - 18 accounts. One Solana account with balances. - Debug mode There are several components to this change. 1. The most important change was [this commit](https://github.com/MetaMask/metamask-mobile/pull/14817/commits/ad560294472e98af38c55194bacc0ecf7d553a21). This change makes it so that we only upset the ENS state in the `useAccounts` hook if we have changes. 2. Then I broke up the useMultichainBalances hook into two different hooks. Before we calculated the balance for all accounts AND the selected account in one hook. Now there are two hooks, `useSelectedAccountMultichainBalances` and `useMultichainBalancesForAllAccounts`. This is a small improvement but it makes it so that for screens where we only need to calculate the selected accounts balance, we do not do any extra computation for the other accounts. 3. Better memoization of the AccountSelector component. Progresses: https://github.com/MetaMask/metamask-mobile/issues/14623 Fixes: https://github.com/MetaMask/metamask-mobile/issues/14863 1. If you want to test with a Solana account, make sure you edit the METAMASK_BUILD_TYPE to be `beta` in the `.js.env` 4. `yarn setup && yarn watch:clean` 5. Create / Import a wallet, preferably with funds 6. create many accounts, the more the better. These can be eth accounts or Solana accounts. I tested with 18 accounts 7. open the account list by clicking the selected account at the top of the screen. 8. You should notice an improvement in how long it takes for this screen to render. The subseuent times you open the account list should be even faster. 9. Verify that all the info in the account list is valid... - All account should be present - Account names should be correct - Account balances should be correct - Account actions (view on etherscan etc) should still work <!-- If applicable, add screenshots and/or recordings to visualize the before and after of your change. --> https://github.com/user-attachments/assets/dbcdd9f4-ed2a-4775-b2cb-f91ef71fbc23 Profiler: <img width="1728" alt="Screenshot 2025-04-24 at 12 02 02 PM" src="https://github.com/user-attachments/assets/d7f3cabd-8a5f-42a8-b3b4-2c507825ab6e" /> https://github.com/user-attachments/assets/08d8139a-d7a0-4749-8d03-dd88391a75d6 Profiler: <img width="1728" alt="Screenshot 2025-04-24 at 11 52 14 AM" src="https://github.com/user-attachments/assets/e0cdbf28-6a3a-4802-918c-601ba9f8c195" /> - [ ] I’ve followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile Coding Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [ ] I've completed the PR template to the best of my ability - [ ] I’ve included tests if applicable - [ ] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [ ] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. - [ ] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [ ] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots. --- .../AccountSelectorList.tsx | 5 +- app/components/UI/Carousel/index.test.tsx | 2 +- app/components/UI/Carousel/index.tsx | 5 +- .../TokenList/PortfolioBalance/index.test.tsx | 2 +- .../TokenList/PortfolioBalance/index.tsx | 5 +- .../Views/AccountSelector/AccountSelector.tsx | 69 ++-- .../AccountNetworkInfoExpanded.test.tsx | 11 +- .../AccountNetworkInfoExpanded.tsx | 5 +- .../hooks/useAccounts/useAccounts.ts | 22 +- .../hooks/useMultichainBalances/index.ts | 5 +- .../useMultichainBalances.ts | 309 ---------------- .../useMultichainBalances.types.ts | 5 +- ...seMultichainBalancesForAllAccounts.test.ts | 332 ++++++++++++++++++ .../useMultichainBalancesForAllAccounts.ts | 140 ++++++++ ...SelectedAccountMultichainBalances.test.ts} | 50 ++- .../useSelectedAccountMultichainBalances.ts | 134 +++++++ .../hooks/useMultichainBalances/utils.ts | 170 +++++++++ app/selectors/multichain/multichain.ts | 2 +- app/selectors/settings.ts | 3 +- 19 files changed, 905 insertions(+), 371 deletions(-) delete mode 100644 app/components/hooks/useMultichainBalances/useMultichainBalances.ts create mode 100644 app/components/hooks/useMultichainBalances/useMultichainBalancesForAllAccounts.test.ts create mode 100644 app/components/hooks/useMultichainBalances/useMultichainBalancesForAllAccounts.ts rename app/components/hooks/useMultichainBalances/{useMultichainBalances.test.ts => useSelectedAccountMultichainBalances.test.ts} (77%) create mode 100644 app/components/hooks/useMultichainBalances/useSelectedAccountMultichainBalances.ts create mode 100644 app/components/hooks/useMultichainBalances/utils.ts diff --git a/app/components/UI/AccountSelectorList/AccountSelectorList.tsx b/app/components/UI/AccountSelectorList/AccountSelectorList.tsx index 4cb4b44fe3cd..65625deec107 100644 --- a/app/components/UI/AccountSelectorList/AccountSelectorList.tsx +++ b/app/components/UI/AccountSelectorList/AccountSelectorList.tsx @@ -28,7 +28,7 @@ import { isDefaultAccountName } from '../../../util/ENSUtils'; import { strings } from '../../../../locales/i18n'; import { AvatarVariant } from '../../../component-library/components/Avatars/Avatar/Avatar.types'; import { Account, Assets } from '../../hooks/useAccounts'; -import UntypedEngine from '../../../core/Engine'; +import Engine from '../../../core/Engine'; import { removeAccountsFromPermissions } from '../../../core/Permissions'; import Routes from '../../../constants/navigation/Routes'; @@ -56,9 +56,6 @@ const AccountSelectorList = ({ const { navigate } = useNavigation(); // TODO: Replace "any" with type // eslint-disable-next-line @typescript-eslint/no-explicit-any - const Engine = UntypedEngine as any; - // TODO: Replace "any" with type - // eslint-disable-next-line @typescript-eslint/no-explicit-any const accountListRef = useRef<any>(null); const accountsLengthRef = useRef<number>(0); const { styles } = useStyles(styleSheet, {}); diff --git a/app/components/UI/Carousel/index.test.tsx b/app/components/UI/Carousel/index.test.tsx index abc5e12302cc..0eb38ec134e4 100644 --- a/app/components/UI/Carousel/index.test.tsx +++ b/app/components/UI/Carousel/index.test.tsx @@ -106,7 +106,7 @@ jest.mock('../../../images/banners/banner_image_aggregated.png', () => ({ // Mock useMultichainBalances hook jest.mock('../../../components/hooks/useMultichainBalances', () => ({ - useMultichainBalances: jest.fn().mockReturnValue({ + useSelectedAccountMultichainBalances: jest.fn().mockReturnValue({ selectedAccountMultichainBalance: { displayBalance: '$0.00', displayCurrency: 'USD', diff --git a/app/components/UI/Carousel/index.tsx b/app/components/UI/Carousel/index.tsx index 2239a554618a..8b0c5e426b9f 100644 --- a/app/components/UI/Carousel/index.tsx +++ b/app/components/UI/Carousel/index.tsx @@ -16,7 +16,7 @@ import { dismissBanner } from '../../../reducers/banners'; import Text, { TextVariant, } from '../../../component-library/components/Texts/Text'; -import { useMultichainBalances } from '../../hooks/useMultichainBalances'; +import { useSelectedAccountMultichainBalances } from '../../hooks/useMultichainBalances'; import { useMetrics } from '../../../components/hooks/useMetrics'; import { useTheme } from '../../../util/theme'; import { WalletViewSelectorsIDs } from '../../../../e2e/selectors/wallet/WalletView.selectors'; @@ -28,7 +28,8 @@ export const Carousel: FC<CarouselProps> = ({ style }) => { const [selectedIndex, setSelectedIndex] = useState(0); const [pressedSlideId, setPressedSlideId] = useState<string | null>(null); const { trackEvent, createEventBuilder } = useMetrics(); - const { selectedAccountMultichainBalance } = useMultichainBalances(); + const { selectedAccountMultichainBalance } = + useSelectedAccountMultichainBalances(); const { colors } = useTheme(); const dispatch = useDispatch(); const { navigate } = useNavigation(); diff --git a/app/components/UI/Tokens/TokenList/PortfolioBalance/index.test.tsx b/app/components/UI/Tokens/TokenList/PortfolioBalance/index.test.tsx index 80483625766f..4c37c37d42c5 100644 --- a/app/components/UI/Tokens/TokenList/PortfolioBalance/index.test.tsx +++ b/app/components/UI/Tokens/TokenList/PortfolioBalance/index.test.tsx @@ -24,7 +24,7 @@ const mockSelectedAccountMultichainBalance = { }; jest.mock('../../../../hooks/useMultichainBalances', () => ({ - useMultichainBalances: () => ({ + useSelectedAccountMultichainBalances: () => ({ selectedAccountMultichainBalance: mockSelectedAccountMultichainBalance, }), })); diff --git a/app/components/UI/Tokens/TokenList/PortfolioBalance/index.tsx b/app/components/UI/Tokens/TokenList/PortfolioBalance/index.tsx index ffc74890b436..884d3bd6d1eb 100644 --- a/app/components/UI/Tokens/TokenList/PortfolioBalance/index.tsx +++ b/app/components/UI/Tokens/TokenList/PortfolioBalance/index.tsx @@ -30,7 +30,7 @@ import { WalletViewSelectorsIDs } from '../../../../../../e2e/selectors/wallet/W import { strings } from '../../../../../../locales/i18n'; import { EYE_SLASH_ICON_TEST_ID, EYE_ICON_TEST_ID } from './index.constants'; import AggregatedPercentageCrossChains from '../../../../../component-library/components-temp/Price/AggregatedPercentage/AggregatedPercentageCrossChains'; -import { useMultichainBalances } from '../../../../hooks/useMultichainBalances'; +import { useSelectedAccountMultichainBalances } from '../../../../hooks/useMultichainBalances'; import Loader from '../../../../../component-library/components-temp/Loader/Loader'; export const PortfolioBalance = React.memo(() => { @@ -45,7 +45,8 @@ export const PortfolioBalance = React.memo(() => { const navigation = useNavigation(); const { trackEvent, isEnabled, createEventBuilder } = useMetrics(); - const { selectedAccountMultichainBalance } = useMultichainBalances(); + const { selectedAccountMultichainBalance } = + useSelectedAccountMultichainBalances(); const onOpenPortfolio = useCallback(() => { const existingPortfolioTab = browserTabs.find(({ url }: BrowserTab) => diff --git a/app/components/Views/AccountSelector/AccountSelector.tsx b/app/components/Views/AccountSelector/AccountSelector.tsx index ee85c2416dbc..ce6492bc5ccf 100644 --- a/app/components/Views/AccountSelector/AccountSelector.tsx +++ b/app/components/Views/AccountSelector/AccountSelector.tsx @@ -3,6 +3,7 @@ import React, { Fragment, useCallback, useEffect, + useMemo, useRef, useState, } from 'react'; @@ -14,7 +15,7 @@ import BottomSheet, { BottomSheetRef, } from '../../../component-library/components/BottomSheets/BottomSheet'; import SheetHeader from '../../../component-library/components/Sheet/SheetHeader'; -import UntypedEngine from '../../../core/Engine'; +import Engine from '../../../core/Engine'; import { MetaMetricsEvents } from '../../../core/Analytics'; import { strings } from '../../../../locales/i18n'; import { useAccounts } from '../../hooks/useAccounts'; @@ -43,25 +44,31 @@ import AddNewHdAccount from '../AddNewHdAccount'; const AccountSelector = ({ route }: AccountSelectorProps) => { const dispatch = useDispatch(); const { trackEvent, createEventBuilder } = useMetrics(); + const routeParams = useMemo(() => route?.params, [route?.params]); const { onSelectAccount, checkBalanceError, disablePrivacyMode, navigateToAddAccountActions, - } = route.params || {}; + } = routeParams || {}; - const { reloadAccounts } = useSelector((state: RootState) => state.accounts); - // TODO: Replace "any" with type - // eslint-disable-next-line @typescript-eslint/no-explicit-any - const Engine = UntypedEngine as any; + const reloadAccounts = useSelector( + (state: RootState) => state.accounts.reloadAccounts, + ); const privacyMode = useSelector(selectPrivacyMode); const sheetRef = useRef<BottomSheetRef>(null); - const { accounts, ensByAccountAddress } = useAccounts({ - checkBalanceError, - isLoading: reloadAccounts, - }); + + // Memoize useAccounts parameters to prevent unnecessary recalculations + const accountsParams = useMemo( + () => ({ + checkBalanceError, + isLoading: reloadAccounts, + }), + [checkBalanceError, reloadAccounts], + ); + const { accounts, ensByAccountAddress } = useAccounts(accountsParams); const [screen, setScreen] = useState<AccountSelectorScreens>( - navigateToAddAccountActions ?? AccountSelectorScreens.AccountSelector, + () => navigateToAddAccountActions ?? AccountSelectorScreens.AccountSelector, ); useEffect(() => { endTrace({ name: TraceName.AccountList }); @@ -88,14 +95,29 @@ const AccountSelector = ({ route }: AccountSelectorProps) => { .build(), ); }, - [Engine, accounts?.length, onSelectAccount, trackEvent, createEventBuilder], + [accounts?.length, onSelectAccount, trackEvent, createEventBuilder], ); + // Handler for adding accounts + const handleAddAccount = useCallback(() => { + setScreen(AccountSelectorScreens.AddAccountActions); + }, []); + + // Handler for returning from add accounts screen + const handleBackToSelector = useCallback(() => { + setScreen(AccountSelectorScreens.AccountSelector); + }, []); + + // Handler for returning from add hd account screen + const handleBackToAddHdAccountSelector = useCallback(() => { + setScreen(AccountSelectorScreens.AddHdAccountSelector); + }, []); + const onRemoveImportedAccount = useCallback( ({ nextActiveAddress }: { nextActiveAddress: string }) => { nextActiveAddress && Engine.setSelectedAddress(nextActiveAddress); }, - [Engine], + [], ); const renderAccountSelector = useCallback( @@ -117,7 +139,7 @@ const AccountSelector = ({ route }: AccountSelectorProps) => { label={strings('account_actions.add_account_or_hardware_wallet')} width={ButtonWidthTypes.Full} size={ButtonSize.Lg} - onPress={() => setScreen(AccountSelectorScreens.AddAccountActions)} + onPress={handleAddAccount} testID={ AccountListBottomSheetSelectorsIDs.ACCOUNT_LIST_ADD_BUTTON_ID } @@ -132,28 +154,23 @@ const AccountSelector = ({ route }: AccountSelectorProps) => { onRemoveImportedAccount, privacyMode, disablePrivacyMode, + handleAddAccount, ], ); const renderAddAccountActions = useCallback( () => ( <AddAccountActions - onBack={() => setScreen(AccountSelectorScreens.AccountSelector)} - onAddHdAccount={() => - setScreen(AccountSelectorScreens.AddHdAccountSelector) - } + onBack={handleBackToSelector} + onAddHdAccount={handleBackToAddHdAccountSelector} /> ), - [], + [handleBackToSelector, handleBackToAddHdAccountSelector], ); const renderAddHdAccountSelector = useCallback( - () => ( - <AddNewHdAccount - onBack={() => setScreen(AccountSelectorScreens.AccountSelector)} - /> - ), - [], + () => <AddNewHdAccount onBack={handleBackToSelector} />, + [handleBackToSelector], ); const renderAccountScreens = useCallback(() => { @@ -177,4 +194,4 @@ const AccountSelector = ({ route }: AccountSelectorProps) => { return <BottomSheet ref={sheetRef}>{renderAccountScreens()}</BottomSheet>; }; -export default AccountSelector; +export default React.memo(AccountSelector); diff --git a/app/components/Views/confirmations/components/Confirm/AccountNetworkInfo/AccountNetworkInfoExpanded/AccountNetworkInfoExpanded.test.tsx b/app/components/Views/confirmations/components/Confirm/AccountNetworkInfo/AccountNetworkInfoExpanded/AccountNetworkInfoExpanded.test.tsx index 2c2c6274bda9..1b318ef82462 100644 --- a/app/components/Views/confirmations/components/Confirm/AccountNetworkInfo/AccountNetworkInfoExpanded/AccountNetworkInfoExpanded.test.tsx +++ b/app/components/Views/confirmations/components/Confirm/AccountNetworkInfo/AccountNetworkInfoExpanded/AccountNetworkInfoExpanded.test.tsx @@ -3,7 +3,7 @@ import renderWithProvider from '../../../../../../../util/test/renderWithProvide import { personalSignatureConfirmationState } from '../../../../../../../util/test/confirm-data-helpers'; import AccountNetworkInfoExpanded from './AccountNetworkInfoExpanded'; import { isPortfolioViewEnabled } from '../../../../../../../util/networks'; -import { useMultichainBalances } from '../../../../../../../components/hooks/useMultichainBalances'; +import { useSelectedAccountMultichainBalances } from '../../../../../../../components/hooks/useMultichainBalances'; jest.mock('../../../../../../../util/networks', () => ({ ...jest.requireActual('../../../../../../../util/networks'), @@ -23,18 +23,20 @@ jest.mock('../../../../../../../core/Engine', () => ({ jest.mock( '../../../../../../../components/hooks/useMultichainBalances', () => ({ - useMultichainBalances: jest.fn(), + useSelectedAccountMultichainBalances: jest.fn(), }), ); describe('AccountNetworkInfoExpanded', () => { const mockIsPortfolioViewEnabled = jest.mocked(isPortfolioViewEnabled); - const mockUseMultichainBalances = jest.mocked(useMultichainBalances); + const mockUseSelectedAccountMultichainBalances = jest.mocked( + useSelectedAccountMultichainBalances, + ); beforeEach(() => { jest.clearAllMocks(); mockIsPortfolioViewEnabled.mockReturnValue(false); - mockUseMultichainBalances.mockReturnValue({ + mockUseSelectedAccountMultichainBalances.mockReturnValue({ selectedAccountMultichainBalance: { displayBalance: '$0.00', displayCurrency: 'USD', @@ -51,7 +53,6 @@ describe('AccountNetworkInfoExpanded', () => { ethFiat1dAgo: 0, }, }, - multichainBalancesForAllAccounts: {}, }); }); diff --git a/app/components/Views/confirmations/components/Confirm/AccountNetworkInfo/AccountNetworkInfoExpanded/AccountNetworkInfoExpanded.tsx b/app/components/Views/confirmations/components/Confirm/AccountNetworkInfo/AccountNetworkInfoExpanded/AccountNetworkInfoExpanded.tsx index 163d50df9bc4..e5a25e5c18f4 100644 --- a/app/components/Views/confirmations/components/Confirm/AccountNetworkInfo/AccountNetworkInfoExpanded/AccountNetworkInfoExpanded.tsx +++ b/app/components/Views/confirmations/components/Confirm/AccountNetworkInfo/AccountNetworkInfoExpanded/AccountNetworkInfoExpanded.tsx @@ -9,7 +9,7 @@ import Network from '../../../UI/InfoRow/InfoValue/Network'; import { useSignatureRequest } from '../../../../hooks/useSignatureRequest'; import { Hex } from '@metamask/utils'; import { renderShortAddress } from '../../../../../../../util/address'; -import { useMultichainBalances } from '../../../../../../hooks/useMultichainBalances'; +import { useSelectedAccountMultichainBalances } from '../../../../../../hooks/useMultichainBalances'; const AccountNetworkInfoExpanded = () => { const signatureRequest = useSignatureRequest(); @@ -17,7 +17,8 @@ const AccountNetworkInfoExpanded = () => { const fromAddress = signatureRequest?.messageParams?.from as string; const { accountAddress } = useAccountInfo(fromAddress); - const { selectedAccountMultichainBalance } = useMultichainBalances(); + const { selectedAccountMultichainBalance } = + useSelectedAccountMultichainBalances(); const balanceToDisplay = selectedAccountMultichainBalance?.displayBalance; return ( diff --git a/app/components/hooks/useAccounts/useAccounts.ts b/app/components/hooks/useAccounts/useAccounts.ts index 7327b370816c..9a84699192a0 100644 --- a/app/components/hooks/useAccounts/useAccounts.ts +++ b/app/components/hooks/useAccounts/useAccounts.ts @@ -24,7 +24,7 @@ import { getFormattedAddressFromInternalAccount, isNonEvmAddress, } from '../../../core/Multichain/utils'; -import { useMultichainBalances } from '../useMultichainBalances'; +import { useMultichainBalancesForAllAccounts } from '../useMultichainBalances'; /** * Hook that returns both wallet accounts and ens name information. @@ -44,7 +44,8 @@ const useAccounts = ({ const internalAccounts = useSelector(selectInternalAccounts); const selectedInternalAccount = useSelector(selectSelectedInternalAccount); - const { multichainBalancesForAllAccounts } = useMultichainBalances(); + const { multichainBalancesForAllAccounts } = + useMultichainBalancesForAllAccounts(); const isMultiAccountBalancesEnabled = useSelector( selectIsMultiAccountBalancesEnabled, @@ -65,7 +66,8 @@ const useAccounts = ({ // Ensure index exists in account list. let safeStartingIndex = startingIndex; let mirrorIndex = safeStartingIndex - 1; - let latestENSbyAccountAddress: EnsByAccountAddress = {}; + const latestENSbyAccountAddress: EnsByAccountAddress = {}; + let hasChanges = false; if (startingIndex < 0) { safeStartingIndex = 0; @@ -81,10 +83,8 @@ const useAccounts = ({ chainId, ); if (ens) { - latestENSbyAccountAddress = { - ...latestENSbyAccountAddress, - [address]: ens, - }; + latestENSbyAccountAddress[address] = ens; + hasChanges = true; } } catch (e) { // ENS either doesn't exist or failed to fetch. @@ -102,7 +102,13 @@ const useAccounts = ({ } mirrorIndex--; safeStartingIndex++; - setENSByAccountAddress(latestENSbyAccountAddress); + } + // Only update state if we have new ENS names + if (hasChanges && isMountedRef.current) { + setENSByAccountAddress((prevState) => ({ + ...prevState, + ...latestENSbyAccountAddress, + })); } }, [chainId], diff --git a/app/components/hooks/useMultichainBalances/index.ts b/app/components/hooks/useMultichainBalances/index.ts index 6982280664f4..b0ee78faf585 100644 --- a/app/components/hooks/useMultichainBalances/index.ts +++ b/app/components/hooks/useMultichainBalances/index.ts @@ -1,5 +1,6 @@ -export { default as useMultichainBalances } from './useMultichainBalances'; +export { default as useMultichainBalancesForAllAccounts } from './useMultichainBalancesForAllAccounts'; +export { default as useSelectedAccountMultichainBalances } from './useSelectedAccountMultichainBalances'; export type { - UseMultichainBalancesHook, + UseSelectedAccountMultichainBalancesHook, MultichainBalancesData, } from './useMultichainBalances.types'; diff --git a/app/components/hooks/useMultichainBalances/useMultichainBalances.ts b/app/components/hooks/useMultichainBalances/useMultichainBalances.ts deleted file mode 100644 index 88c92b48b68e..000000000000 --- a/app/components/hooks/useMultichainBalances/useMultichainBalances.ts +++ /dev/null @@ -1,309 +0,0 @@ -/* eslint-disable arrow-body-style */ -import { useSelector } from 'react-redux'; -import Engine from '../../../core/Engine'; -import { isTestNet, isPortfolioViewEnabled } from '../../../util/networks'; -import { - selectChainId, - selectIsPopularNetwork, - selectProviderConfig, - selectEvmTicker, - selectEvmChainId, -} from '../../../selectors/networkController'; -import { selectCurrentCurrency } from '../../../selectors/currencyRateController'; -import { selectIsTokenNetworkFilterEqualCurrentNetwork } from '../../../selectors/preferencesController'; -import { - selectInternalAccounts, - selectSelectedInternalAccount, -} from '../../../selectors/accountsController'; -import { getChainIdsToPoll } from '../../../selectors/tokensController'; -import { useGetFormattedTokensPerChain } from '../useGetFormattedTokensPerChain'; -import { useGetTotalFiatBalanceCrossChains } from '../useGetTotalFiatBalanceCrossChains'; -import { InternalAccount } from '@metamask/keyring-internal-api'; -import useIsOriginalNativeTokenSymbol from '../useIsOriginalNativeTokenSymbol/useIsOriginalNativeTokenSymbol'; -import { - MultichainBalancesData, - UseMultichainBalancesHook, -} from './useMultichainBalances.types'; -import { formatWithThreshold } from '../../../util/assets'; -///: BEGIN:ONLY_INCLUDE_IF(keyring-snaps) -import { - selectMultichainShouldShowFiat, - getMultichainNetworkAggregatedBalance, - selectMultichainBalances, - selectMultichainAssets, - selectMultichainAssetsRates, - MultichainNetworkAggregatedBalance, -} from '../../../selectors/multichain'; -import { selectSelectedNonEvmNetworkChainId } from '../../../selectors/multichainNetworkController'; -import { isEvmAccountType } from '@metamask/keyring-api'; -///: END:ONLY_INCLUDE_IF -import I18n from '../../../../locales/i18n'; -import { useCallback, useMemo } from 'react'; - -/** - * Hook to manage portfolio balance data across chains. - * - * @returns Portfolio balance data - */ -const useMultichainBalances = (): UseMultichainBalancesHook => { - // Production selectors (EVM) - const accountsList = useSelector(selectInternalAccounts); - const selectedInternalAccount = useSelector(selectSelectedInternalAccount); - const chainId = useSelector(selectChainId); - const evmChainId = useSelector(selectEvmChainId); - const currentCurrency = useSelector(selectCurrentCurrency); - const allChainIDs = useSelector(getChainIdsToPoll); - const isTokenNetworkFilterEqualCurrentNetwork = useSelector( - selectIsTokenNetworkFilterEqualCurrentNetwork, - ); - const isPopularNetwork = useSelector(selectIsPopularNetwork); - const { type } = useSelector(selectProviderConfig); - const ticker = useSelector(selectEvmTicker); - - // Production hooks (EVM) - const formattedTokensWithBalancesPerChain = useGetFormattedTokensPerChain( - accountsList, - !isTokenNetworkFilterEqualCurrentNetwork && isPopularNetwork, - allChainIDs, - ); - - const totalFiatBalancesCrossEvmChain = useGetTotalFiatBalanceCrossChains( - accountsList, - formattedTokensWithBalancesPerChain, - ); - - const isOriginalNativeEvmTokenSymbol = useIsOriginalNativeTokenSymbol( - evmChainId, - ticker, - type, - ); - - ///: BEGIN:ONLY_INCLUDE_IF(keyring-snaps) - const shouldShowFiat = useSelector(selectMultichainShouldShowFiat); - const multichainBalances = useSelector(selectMultichainBalances); - const multichainAssets = useSelector(selectMultichainAssets); - const multichainAssetsRates = useSelector(selectMultichainAssetsRates); - const nonEvmChainId = useSelector(selectSelectedNonEvmNetworkChainId); - ///: END:ONLY_INCLUDE_IF - - const isPortfolioEnabled = isPortfolioViewEnabled(); - - // Production balance calculartion (EVM) - const getEvmBalance = useCallback( - (account: InternalAccount) => { - const balance = Engine.getTotalEvmFiatAccountBalance(account); - let total; - - if (isOriginalNativeEvmTokenSymbol) { - if (isPortfolioEnabled) { - total = - totalFiatBalancesCrossEvmChain[account?.address as string] - ?.totalFiatBalance ?? 0; - } else { - const tokenFiatTotal = balance?.tokenFiat ?? 0; - const ethFiatTotal = balance?.ethFiat ?? 0; - total = tokenFiatTotal + ethFiatTotal; - } - } else if (isPortfolioEnabled) { - total = - totalFiatBalancesCrossEvmChain[account?.address as string] - ?.totalTokenFiat ?? 0; - } else { - total = balance?.tokenFiat ?? 0; - } - - const displayBalance = formatWithThreshold(total, 0, I18n.locale, { - style: 'currency', - currency: currentCurrency.toUpperCase(), - }); - - return { - displayBalance, - totalFiatBalance: total, - totalNativeTokenBalance: balance?.totalNativeTokenBalance, - nativeTokenUnit: balance?.ticker, - }; - }, - [ - currentCurrency, - isOriginalNativeEvmTokenSymbol, - isPortfolioEnabled, - totalFiatBalancesCrossEvmChain, - ], - ); - - ///: BEGIN:ONLY_INCLUDE_IF(keyring-snaps) - const getMultiChainFiatBalance = useCallback( - (balance: number | undefined, currency: string) => { - if (balance === undefined) return '0'; - return formatWithThreshold(balance, 0, I18n.locale, { - style: 'currency', - currency: currency.toUpperCase(), - }); - }, - [], - ); - - const getNonEvmDisplayBalance = useCallback( - (nonEvmAccountBalance: MultichainNetworkAggregatedBalance) => { - if (!shouldShowFiat || !nonEvmAccountBalance.totalBalanceFiat) { - if (!nonEvmAccountBalance.totalNativeTokenBalance) { - return '0'; - } - return `${nonEvmAccountBalance.totalNativeTokenBalance.amount} ${nonEvmAccountBalance.totalNativeTokenBalance.unit}`; - } - - return getMultiChainFiatBalance( - nonEvmAccountBalance.totalBalanceFiat, - currentCurrency, - ); - }, - [currentCurrency, getMultiChainFiatBalance, shouldShowFiat], - ); - ///: END:ONLY_INCLUDE_IF - - const getAggregatedBalance = useMemo( - () => (account: InternalAccount) => { - const balance = Engine.getTotalEvmFiatAccountBalance(account); - return { - ethFiat: balance?.ethFiat ?? 0, - tokenFiat: balance?.tokenFiat ?? 0, - tokenFiat1dAgo: balance?.tokenFiat1dAgo ?? 0, - ethFiat1dAgo: balance?.ethFiat1dAgo ?? 0, - }; - }, - [], - ); - - const getAccountBalanceData = useCallback( - ( - account: InternalAccount, - ): { - displayBalance: string; - totalFiatBalance: number | undefined; - totalNativeTokenBalance: string | undefined; - nativeTokenUnit: string; - } => { - ///: BEGIN:ONLY_INCLUDE_IF(keyring-snaps) - if (!isEvmAccountType(account.type)) { - const nonEvmAccountBalance = getMultichainNetworkAggregatedBalance( - account, - multichainBalances, - multichainAssets, - multichainAssetsRates, - nonEvmChainId, - ); - return { - displayBalance: getNonEvmDisplayBalance(nonEvmAccountBalance), - totalFiatBalance: nonEvmAccountBalance.totalBalanceFiat, - totalNativeTokenBalance: - nonEvmAccountBalance.totalNativeTokenBalance?.amount, - nativeTokenUnit: - nonEvmAccountBalance.totalNativeTokenBalance?.unit || '', - }; - } - ///: END:ONLY_INCLUDE_IF - const evmAccountBalance = getEvmBalance(account); - return { - displayBalance: evmAccountBalance.displayBalance, - totalFiatBalance: evmAccountBalance.totalFiatBalance, - totalNativeTokenBalance: - evmAccountBalance.totalNativeTokenBalance?.toString() || '0', - nativeTokenUnit: evmAccountBalance.nativeTokenUnit || '', - }; - }, - [ - getEvmBalance, - ///: BEGIN:ONLY_INCLUDE_IF(keyring-snaps) - getNonEvmDisplayBalance, - multichainAssets, - multichainAssetsRates, - multichainBalances, - nonEvmChainId, - ///: END:ONLY_INCLUDE_IF - ], - ); - - const getShouldShowAggregatedPercentage = useMemo( - // eslint-disable-next-line @typescript-eslint/no-unused-vars - () => (account: InternalAccount) => { - ///: BEGIN:ONLY_INCLUDE_IF(keyring-snaps) - return !isTestNet(chainId) && isEvmAccountType(account.type); - ///: END:ONLY_INCLUDE_IF - - // Note: This code marked as unreachable however when the above block gets removed after code fencing this return becomes necessary - return !isTestNet(chainId); - }, - [chainId], - ); - - // Create a stable reference for each account's balance data - const allAccountBalances = useMemo(() => { - const result: Record<string, MultichainBalancesData> = {}; - - for (const account of accountsList) { - const accountBalanceData = getAccountBalanceData(account); - result[account.id] = { - displayBalance: accountBalanceData.displayBalance, - displayCurrency: currentCurrency, - totalFiatBalance: accountBalanceData.totalFiatBalance, - totalNativeTokenBalance: accountBalanceData.totalNativeTokenBalance, - nativeTokenUnit: accountBalanceData.nativeTokenUnit, - tokenFiatBalancesCrossChains: - totalFiatBalancesCrossEvmChain[account.address] - ?.tokenFiatBalancesCrossChains ?? [], - shouldShowAggregatedPercentage: - getShouldShowAggregatedPercentage(account), - isPortfolioVieEnabled: isPortfolioEnabled, - aggregatedBalance: getAggregatedBalance(account), - }; - } - - return result; - }, [ - accountsList, - currentCurrency, - getAccountBalanceData, - getAggregatedBalance, - getShouldShowAggregatedPercentage, - isPortfolioEnabled, - totalFiatBalancesCrossEvmChain, - ]); - - const selectedAccountMultichainBalance = useMemo(() => { - if (selectedInternalAccount) { - const accountBalanceData = getAccountBalanceData(selectedInternalAccount); - return { - displayBalance: accountBalanceData.displayBalance, - displayCurrency: currentCurrency, - totalFiatBalance: accountBalanceData.totalFiatBalance, - totalNativeTokenBalance: accountBalanceData.totalNativeTokenBalance, - nativeTokenUnit: accountBalanceData.nativeTokenUnit, - tokenFiatBalancesCrossChains: - totalFiatBalancesCrossEvmChain[selectedInternalAccount.address] - ?.tokenFiatBalancesCrossChains ?? [], - shouldShowAggregatedPercentage: getShouldShowAggregatedPercentage( - selectedInternalAccount, - ), - isPortfolioVieEnabled: isPortfolioEnabled, - aggregatedBalance: getAggregatedBalance(selectedInternalAccount), - }; - } - return undefined; - }, [ - currentCurrency, - getAccountBalanceData, - getAggregatedBalance, - getShouldShowAggregatedPercentage, - isPortfolioEnabled, - selectedInternalAccount, - totalFiatBalancesCrossEvmChain, - ]); - - return { - multichainBalancesForAllAccounts: allAccountBalances, - selectedAccountMultichainBalance, - }; -}; - -export default useMultichainBalances; diff --git a/app/components/hooks/useMultichainBalances/useMultichainBalances.types.ts b/app/components/hooks/useMultichainBalances/useMultichainBalances.types.ts index 905048658cba..4b89f0cb0f09 100644 --- a/app/components/hooks/useMultichainBalances/useMultichainBalances.types.ts +++ b/app/components/hooks/useMultichainBalances/useMultichainBalances.types.ts @@ -14,10 +14,13 @@ export interface MultichainBalancesData { aggregatedBalance: AggregatedPercentageProps; } -export interface UseMultichainBalancesHook { +export interface UseAllAccountsMultichainBalancesHook { multichainBalancesForAllAccounts: Record< InternalAccount['id'], MultichainBalancesData >; +} + +export interface UseSelectedAccountMultichainBalancesHook { selectedAccountMultichainBalance?: MultichainBalancesData; } diff --git a/app/components/hooks/useMultichainBalances/useMultichainBalancesForAllAccounts.test.ts b/app/components/hooks/useMultichainBalances/useMultichainBalancesForAllAccounts.test.ts new file mode 100644 index 000000000000..658b8c06f31f --- /dev/null +++ b/app/components/hooks/useMultichainBalances/useMultichainBalancesForAllAccounts.test.ts @@ -0,0 +1,332 @@ +import { renderHook } from '@testing-library/react-hooks'; +import useMultichainBalances from './useMultichainBalancesForAllAccounts'; +import { backgroundState } from '../../../util/test/initial-root-state'; +import { + MOCK_ACCOUNTS_CONTROLLER_STATE, + expectedUuid, + expectedUuid2, + internalAccount1, + internalAccount2, +} from '../../../util/test/accountsControllerTestUtils'; +import Engine from '../../../core/Engine'; +import { isTestNet, isPortfolioViewEnabled } from '../../../util/networks'; +import { useGetTotalFiatBalanceCrossChains } from '../useGetTotalFiatBalanceCrossChains'; +import { RootState } from '../../../reducers'; +import { TokensWithBalances } from '../useGetFormattedTokensPerChain'; + +const mockUseSelector = jest.fn(); + +const MOCK_SELECTED_ACCOUNT_ID = + MOCK_ACCOUNTS_CONTROLLER_STATE.internalAccounts.selectedAccount; + +const MOCK_SELECTED_INTERNAL_ACCOUNT = + MOCK_ACCOUNTS_CONTROLLER_STATE.internalAccounts.accounts[ + MOCK_SELECTED_ACCOUNT_ID + ]; + +const MOCK_STORE_STATE = { + settings: {}, + engine: { + backgroundState: { + ...backgroundState, + AccountsController: MOCK_ACCOUNTS_CONTROLLER_STATE, + NetworkController: { + providerConfig: { + type: 'mainnet', + chainId: '0x1', + ticker: 'ETH', + }, + }, + CurrencyRateController: { + currentCurrency: 'USD', + conversionRate: 1, + }, + PreferencesController: { + isTokenNetworkFilterEqualCurrentNetwork: true, + }, + }, + }, +} as unknown as RootState; + +jest.mock('react-redux', () => ({ + ...jest.requireActual('react-redux'), + useSelector: (selector: (state: RootState) => unknown) => + mockUseSelector(selector), +})); + +jest.mock('../../../core/Engine', () => ({ + getTotalEvmFiatAccountBalance: jest.fn(), +})); + +jest.mock('../useGetFormattedTokensPerChain', () => ({ + useGetFormattedTokensPerChain: jest.fn().mockReturnValue({}), +})); + +jest.mock('../useGetTotalFiatBalanceCrossChains', () => ({ + useGetTotalFiatBalanceCrossChains: jest.fn().mockReturnValue({}), +})); + +jest.mock('../../../util/networks', () => ({ + ...jest.requireActual('../../../util/networks'), + isTestNet: jest.fn().mockReturnValue(false), + isPortfolioViewEnabled: jest.fn().mockReturnValue(false), +})); + +describe('useMultichainBalancesForAllAccounts', () => { + beforeEach(() => { + jest.clearAllMocks(); + mockUseSelector.mockImplementation((selector) => + selector(MOCK_STORE_STATE), + ); + }); + + it('returns default values when no balances are available', () => { + const mockBalance = { + ethFiat: 0, + tokenFiat: 0, + tokenFiat1dAgo: 0, + ethFiat1dAgo: 0, + totalNativeTokenBalance: '0', + ticker: 'ETH', + }; + + const aggregatedBalance = { + ethFiat: 0, + tokenFiat: 0, + tokenFiat1dAgo: 0, + ethFiat1dAgo: 0, + }; + + (Engine.getTotalEvmFiatAccountBalance as jest.Mock).mockReturnValue( + mockBalance, + ); + + const { result } = renderHook(() => useMultichainBalances()); + + expect( + result.current.multichainBalancesForAllAccounts[MOCK_SELECTED_ACCOUNT_ID], + ).toEqual({ + displayBalance: '$0.00', + displayCurrency: 'USD', + tokenFiatBalancesCrossChains: [], + totalFiatBalance: 0, + totalNativeTokenBalance: '0', + nativeTokenUnit: 'ETH', + shouldShowAggregatedPercentage: true, + isPortfolioVieEnabled: false, + aggregatedBalance, + }); + }); + + it('calculates display balance correctly with ETH and token balances', () => { + const mockBalance = { + ethFiat: 100, + tokenFiat: 50, + tokenFiat1dAgo: 45, + ethFiat1dAgo: 95, + totalNativeTokenBalance: '0.05', + ticker: 'ETH', + }; + + const aggregatedBalance = { + ethFiat: 100, + tokenFiat: 50, + tokenFiat1dAgo: 45, + ethFiat1dAgo: 95, + }; + + (Engine.getTotalEvmFiatAccountBalance as jest.Mock).mockReturnValue( + mockBalance, + ); + + const { result } = renderHook(() => useMultichainBalances()); + + expect( + result.current.multichainBalancesForAllAccounts[MOCK_SELECTED_ACCOUNT_ID] + ?.displayBalance, + ).toBe('$150.00'); + expect( + result.current.multichainBalancesForAllAccounts[MOCK_SELECTED_ACCOUNT_ID] + ?.aggregatedBalance, + ).toEqual(aggregatedBalance); + }); + + it('handles portfolio view mode correctly', () => { + (isPortfolioViewEnabled as jest.Mock).mockReturnValue(true); + const mockTotalFiatBalance = 1000; + const mockTokenFiatBalance = 500; + + const mockTokensWithBalances: TokensWithBalances[] = [ + { + address: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48', + symbol: 'USDC', + decimals: 6, + balance: '500', + tokenBalanceFiat: 500, + }, + ]; + + const mockTotalFiatBalancesCrossChain = { + [MOCK_SELECTED_INTERNAL_ACCOUNT.address]: { + totalFiatBalance: mockTotalFiatBalance, + totalTokenFiat: mockTokenFiatBalance, + tokenFiatBalancesCrossChains: [ + { + chainId: '0x1', + nativeFiatValue: 500, + tokenFiatBalances: [mockTokenFiatBalance], + tokensWithBalances: mockTokensWithBalances, + }, + { + chainId: '0x89', + nativeFiatValue: 500, + tokenFiatBalances: [mockTokenFiatBalance], + tokensWithBalances: mockTokensWithBalances, + }, + ], + }, + }; + + const mockBalance = { + ethFiat: 0, + tokenFiat: 0, + tokenFiat1dAgo: 0, + ethFiat1dAgo: 0, + totalNativeTokenBalance: '0.5', + ticker: 'ETH', + }; + + (Engine.getTotalEvmFiatAccountBalance as jest.Mock).mockReturnValue( + mockBalance, + ); + + (useGetTotalFiatBalanceCrossChains as jest.Mock).mockReturnValue( + mockTotalFiatBalancesCrossChain, + ); + + const { result } = renderHook(() => useMultichainBalances()); + + expect( + result.current.multichainBalancesForAllAccounts[MOCK_SELECTED_ACCOUNT_ID] + ?.isPortfolioVieEnabled, + ).toBe(true); + expect( + result.current.multichainBalancesForAllAccounts[MOCK_SELECTED_ACCOUNT_ID] + ?.totalFiatBalance, + ).toBe(mockTotalFiatBalance); + expect( + result.current.multichainBalancesForAllAccounts[MOCK_SELECTED_ACCOUNT_ID] + ?.displayBalance, + ).toBe('$1,000.00'); + }); + + it('does not show aggregated percentage on test networks', () => { + (isTestNet as jest.Mock).mockReturnValue(true); + + const mockBalance = { + ethFiat: 0, + tokenFiat: 0, + tokenFiat1dAgo: 0, + ethFiat1dAgo: 0, + totalNativeTokenBalance: '0', + ticker: 'ETH', + }; + + (Engine.getTotalEvmFiatAccountBalance as jest.Mock).mockReturnValue( + mockBalance, + ); + + const { result } = renderHook(() => useMultichainBalances()); + + expect( + result.current.multichainBalancesForAllAccounts[MOCK_SELECTED_ACCOUNT_ID] + ?.shouldShowAggregatedPercentage, + ).toBe(false); + }); + + it('returns balances for all accounts', () => { + // Use the predefined account IDs from the test utils + const firstAccountId = expectedUuid; + const secondAccountId = expectedUuid2; + + // Use the predefined internal accounts from test utils + const mockInternalAccounts = [internalAccount1, internalAccount2]; + + // Override the selector mock to return our test accounts + mockUseSelector.mockImplementation((selector) => { + // Check if this is the accounts selector by matching with the state structure + if ( + selector(MOCK_STORE_STATE) === + MOCK_STORE_STATE.engine.backgroundState.AccountsController + .internalAccounts.accounts + ) { + return mockInternalAccounts; + } + return selector(MOCK_STORE_STATE); + }); + + const mockBalance = { + ethFiat: 50, + tokenFiat: 25, + tokenFiat1dAgo: 20, + ethFiat1dAgo: 45, + totalNativeTokenBalance: '0.025', + ticker: 'ETH', + }; + + (Engine.getTotalEvmFiatAccountBalance as jest.Mock).mockReturnValue( + mockBalance, + ); + + // Mock cross chain balances for both accounts + const mockTotalFiatBalancesCrossChain = { + [internalAccount1.address]: { + totalFiatBalance: 75, + totalTokenFiat: 25, + tokenFiatBalancesCrossChains: [], + }, + [internalAccount2.address]: { + totalFiatBalance: 75, + totalTokenFiat: 25, + tokenFiatBalancesCrossChains: [], + }, + }; + + (useGetTotalFiatBalanceCrossChains as jest.Mock).mockReturnValue( + mockTotalFiatBalancesCrossChain, + ); + + const { result } = renderHook(() => useMultichainBalances()); + + // Verify we have balances for both accounts + expect( + Object.keys(result.current.multichainBalancesForAllAccounts), + ).toHaveLength(2); + + // Test for specific account IDs from the test utils + expect(result.current.multichainBalancesForAllAccounts).toHaveProperty( + firstAccountId, + ); + expect(result.current.multichainBalancesForAllAccounts).toHaveProperty( + secondAccountId, + ); + + // Verify the balances for both accounts + expect( + result.current.multichainBalancesForAllAccounts[firstAccountId] + ?.displayBalance, + ).toBe('$75.00'); + expect( + result.current.multichainBalancesForAllAccounts[firstAccountId] + ?.totalNativeTokenBalance, + ).toBe('0.025'); + expect( + result.current.multichainBalancesForAllAccounts[secondAccountId] + ?.displayBalance, + ).toBe('$75.00'); + expect( + result.current.multichainBalancesForAllAccounts[secondAccountId] + ?.totalNativeTokenBalance, + ).toBe('0.025'); + }); +}); diff --git a/app/components/hooks/useMultichainBalances/useMultichainBalancesForAllAccounts.ts b/app/components/hooks/useMultichainBalances/useMultichainBalancesForAllAccounts.ts new file mode 100644 index 000000000000..7898e315538f --- /dev/null +++ b/app/components/hooks/useMultichainBalances/useMultichainBalancesForAllAccounts.ts @@ -0,0 +1,140 @@ +import { useSelector } from 'react-redux'; +import { isPortfolioViewEnabled } from '../../../util/networks'; +import { + selectChainId, + selectIsPopularNetwork, + selectProviderConfig, + selectEvmTicker, + selectEvmChainId, +} from '../../../selectors/networkController'; +import { selectCurrentCurrency } from '../../../selectors/currencyRateController'; +import { selectIsTokenNetworkFilterEqualCurrentNetwork } from '../../../selectors/preferencesController'; +import { selectInternalAccounts } from '../../../selectors/accountsController'; +import { getChainIdsToPoll } from '../../../selectors/tokensController'; +import { useGetFormattedTokensPerChain } from '../useGetFormattedTokensPerChain'; +import { useGetTotalFiatBalanceCrossChains } from '../useGetTotalFiatBalanceCrossChains'; +import useIsOriginalNativeTokenSymbol from '../useIsOriginalNativeTokenSymbol/useIsOriginalNativeTokenSymbol'; +import { + MultichainBalancesData, + UseAllAccountsMultichainBalancesHook, +} from './useMultichainBalances.types'; +///: BEGIN:ONLY_INCLUDE_IF(keyring-snaps) +import { + selectMultichainShouldShowFiat, + selectMultichainBalances, + selectMultichainAssets, + selectMultichainAssetsRates, +} from '../../../selectors/multichain'; +import { selectSelectedNonEvmNetworkChainId } from '../../../selectors/multichainNetworkController'; +///: END:ONLY_INCLUDE_IF +import { useMemo } from 'react'; +import { + getAccountBalanceData, + getAggregatedBalance, + getShouldShowAggregatedPercentage, +} from './utils'; +import { SupportedCaipChainId } from '@metamask/multichain-network-controller'; +/** + * Hook to manage portfolio balance data across chains. + * + * @returns Portfolio balance data + */ +const useMultichainBalancesForAllAccounts = + (): UseAllAccountsMultichainBalancesHook => { + const accountsList = useSelector(selectInternalAccounts); + const chainId = useSelector(selectChainId); + const evmChainId = useSelector(selectEvmChainId); + const currentCurrency = useSelector(selectCurrentCurrency); + const allChainIDs = useSelector(getChainIdsToPoll); + const isTokenNetworkFilterEqualCurrentNetwork = useSelector( + selectIsTokenNetworkFilterEqualCurrentNetwork, + ); + const isPopularNetwork = useSelector(selectIsPopularNetwork); + const { type } = useSelector(selectProviderConfig); + const ticker = useSelector(selectEvmTicker); + + const formattedTokensWithBalancesPerChain = useGetFormattedTokensPerChain( + accountsList, + !isTokenNetworkFilterEqualCurrentNetwork && isPopularNetwork, + allChainIDs, + ); + + const totalFiatBalancesCrossEvmChain = useGetTotalFiatBalanceCrossChains( + accountsList, + formattedTokensWithBalancesPerChain, + ); + + const isOriginalNativeEvmTokenSymbol = useIsOriginalNativeTokenSymbol( + evmChainId, + ticker, + type, + ); + + ///: BEGIN:ONLY_INCLUDE_IF(keyring-snaps) + const shouldShowFiat = useSelector(selectMultichainShouldShowFiat); + const multichainBalances = useSelector(selectMultichainBalances); + const multichainAssets = useSelector(selectMultichainAssets); + const multichainAssetsRates = useSelector(selectMultichainAssetsRates); + const nonEvmChainId = useSelector(selectSelectedNonEvmNetworkChainId); + ///: END:ONLY_INCLUDE_IF + + const isPortfolioEnabled = isPortfolioViewEnabled(); + + // Create a stable reference for each account's balance data + const allAccountBalances = useMemo(() => { + const result: Record<string, MultichainBalancesData> = {}; + + for (const account of accountsList) { + const accountBalanceData = getAccountBalanceData( + account, + currentCurrency, + totalFiatBalancesCrossEvmChain, + isOriginalNativeEvmTokenSymbol, + ///: BEGIN:ONLY_INCLUDE_IF(keyring-snaps) + multichainBalances, + multichainAssets, + multichainAssetsRates, + nonEvmChainId, + shouldShowFiat, + ///: END:ONLY_INCLUDE_IF + ); + result[account.id] = { + displayBalance: accountBalanceData.displayBalance, + displayCurrency: currentCurrency, + totalFiatBalance: accountBalanceData.totalFiatBalance, + totalNativeTokenBalance: accountBalanceData.totalNativeTokenBalance, + nativeTokenUnit: accountBalanceData.nativeTokenUnit, + tokenFiatBalancesCrossChains: + totalFiatBalancesCrossEvmChain[account.address] + ?.tokenFiatBalancesCrossChains ?? [], + shouldShowAggregatedPercentage: getShouldShowAggregatedPercentage( + account, + chainId as SupportedCaipChainId, + ), + isPortfolioVieEnabled: isPortfolioEnabled, + aggregatedBalance: getAggregatedBalance(account), + }; + } + + return result; + }, [ + accountsList, + chainId, + currentCurrency, + isOriginalNativeEvmTokenSymbol, + isPortfolioEnabled, + totalFiatBalancesCrossEvmChain, + ///: BEGIN:ONLY_INCLUDE_IF(keyring-snaps) + multichainAssets, + multichainAssetsRates, + multichainBalances, + nonEvmChainId, + shouldShowFiat, + ///: END:ONLY_INCLUDE_IF + ]); + return { + multichainBalancesForAllAccounts: allAccountBalances, + }; + }; + +export default useMultichainBalancesForAllAccounts; diff --git a/app/components/hooks/useMultichainBalances/useMultichainBalances.test.ts b/app/components/hooks/useMultichainBalances/useSelectedAccountMultichainBalances.test.ts similarity index 77% rename from app/components/hooks/useMultichainBalances/useMultichainBalances.test.ts rename to app/components/hooks/useMultichainBalances/useSelectedAccountMultichainBalances.test.ts index 83879230ba50..74e9469051c9 100644 --- a/app/components/hooks/useMultichainBalances/useMultichainBalances.test.ts +++ b/app/components/hooks/useMultichainBalances/useSelectedAccountMultichainBalances.test.ts @@ -1,5 +1,5 @@ import { renderHook } from '@testing-library/react-hooks'; -import useMultichainBalances from './useMultichainBalances'; +import useSelectedAccountMultichainBalances from './useSelectedAccountMultichainBalances'; import { backgroundState } from '../../../util/test/initial-root-state'; import { MOCK_ACCOUNTS_CONTROLLER_STATE } from '../../../util/test/accountsControllerTestUtils'; import Engine from '../../../core/Engine'; @@ -66,7 +66,7 @@ jest.mock('../../../util/networks', () => ({ isPortfolioViewEnabled: jest.fn().mockReturnValue(false), })); -describe('useMultichainBalances', () => { +describe('useSelectedAccountMultichainBalances', () => { beforeEach(() => { jest.clearAllMocks(); mockUseSelector.mockImplementation((selector) => @@ -95,7 +95,7 @@ describe('useMultichainBalances', () => { mockBalance, ); - const { result } = renderHook(() => useMultichainBalances()); + const { result } = renderHook(() => useSelectedAccountMultichainBalances()); expect(result.current.selectedAccountMultichainBalance).toEqual({ displayBalance: '$0.00', @@ -131,7 +131,7 @@ describe('useMultichainBalances', () => { mockBalance, ); - const { result } = renderHook(() => useMultichainBalances()); + const { result } = renderHook(() => useSelectedAccountMultichainBalances()); expect( result.current.selectedAccountMultichainBalance?.displayBalance, @@ -194,7 +194,7 @@ describe('useMultichainBalances', () => { mockTotalFiatBalancesCrossChain, ); - const { result } = renderHook(() => useMultichainBalances()); + const { result } = renderHook(() => useSelectedAccountMultichainBalances()); expect( result.current.selectedAccountMultichainBalance?.isPortfolioVieEnabled, @@ -223,11 +223,49 @@ describe('useMultichainBalances', () => { mockBalance, ); - const { result } = renderHook(() => useMultichainBalances()); + const { result } = renderHook(() => useSelectedAccountMultichainBalances()); expect( result.current.selectedAccountMultichainBalance ?.shouldShowAggregatedPercentage, ).toBe(false); }); + + it('returns undefined when no selected account is available', () => { + // Create a modified state with no selected account + const stateWithNoSelectedAccount = { + ...MOCK_STORE_STATE, + engine: { + ...MOCK_STORE_STATE.engine, + backgroundState: { + ...MOCK_STORE_STATE.engine.backgroundState, + AccountsController: { + ...MOCK_STORE_STATE.engine.backgroundState.AccountsController, + internalAccounts: { + ...MOCK_STORE_STATE.engine.backgroundState.AccountsController + .internalAccounts, + // Set selected account to an ID that doesn't exist + selectedAccount: 'non-existent-id', + }, + }, + }, + }, + }; + + // Reset the mocks to make sure previous test state doesn't affect this one + jest.clearAllMocks(); + + // Use our modified state for this test only + mockUseSelector.mockImplementation((selector) => + selector(stateWithNoSelectedAccount), + ); + + // Reset mock for useGetTotalFiatBalanceCrossChains to ensure we don't + // have leftover values from other tests + (useGetTotalFiatBalanceCrossChains as jest.Mock).mockReturnValue({}); + + const { result } = renderHook(() => useSelectedAccountMultichainBalances()); + + expect(result.current.selectedAccountMultichainBalance).toBeUndefined(); + }); }); diff --git a/app/components/hooks/useMultichainBalances/useSelectedAccountMultichainBalances.ts b/app/components/hooks/useMultichainBalances/useSelectedAccountMultichainBalances.ts new file mode 100644 index 000000000000..8788f7ce0d81 --- /dev/null +++ b/app/components/hooks/useMultichainBalances/useSelectedAccountMultichainBalances.ts @@ -0,0 +1,134 @@ +import { useSelector } from 'react-redux'; +import { isPortfolioViewEnabled } from '../../../util/networks'; +import { + selectChainId, + selectIsPopularNetwork, + selectProviderConfig, + selectEvmTicker, + selectEvmChainId, +} from '../../../selectors/networkController'; +import { selectCurrentCurrency } from '../../../selectors/currencyRateController'; +import { selectIsTokenNetworkFilterEqualCurrentNetwork } from '../../../selectors/preferencesController'; +import { selectSelectedInternalAccount } from '../../../selectors/accountsController'; +import { getChainIdsToPoll } from '../../../selectors/tokensController'; +import { useGetFormattedTokensPerChain } from '../useGetFormattedTokensPerChain'; +import { useGetTotalFiatBalanceCrossChains } from '../useGetTotalFiatBalanceCrossChains'; +import { InternalAccount } from '@metamask/keyring-internal-api'; +import useIsOriginalNativeTokenSymbol from '../useIsOriginalNativeTokenSymbol/useIsOriginalNativeTokenSymbol'; +import { UseSelectedAccountMultichainBalancesHook } from './useMultichainBalances.types'; +///: BEGIN:ONLY_INCLUDE_IF(keyring-snaps) +import { + selectMultichainShouldShowFiat, + selectMultichainBalances, + selectMultichainAssets, + selectMultichainAssetsRates, +} from '../../../selectors/multichain'; +import { selectSelectedNonEvmNetworkChainId } from '../../../selectors/multichainNetworkController'; +///: END:ONLY_INCLUDE_IF +import { useMemo } from 'react'; +import { + getAccountBalanceData, + getAggregatedBalance, + getShouldShowAggregatedPercentage, +} from './utils'; +import { SupportedCaipChainId } from '@metamask/multichain-network-controller'; +/** + * Hook to manage portfolio balance data across chains. + * + * @returns Portfolio balance data + */ +const useSelectedAccountMultichainBalances = + (): UseSelectedAccountMultichainBalancesHook => { + const selectedInternalAccount = useSelector(selectSelectedInternalAccount); + const chainId = useSelector(selectChainId); + const evmChainId = useSelector(selectEvmChainId); + const currentCurrency = useSelector(selectCurrentCurrency); + const allChainIDs = useSelector(getChainIdsToPoll); + const isTokenNetworkFilterEqualCurrentNetwork = useSelector( + selectIsTokenNetworkFilterEqualCurrentNetwork, + ); + const isPopularNetwork = useSelector(selectIsPopularNetwork); + const { type } = useSelector(selectProviderConfig); + const ticker = useSelector(selectEvmTicker); + + const formattedTokensWithBalancesPerChain = useGetFormattedTokensPerChain( + [selectedInternalAccount as InternalAccount], + !isTokenNetworkFilterEqualCurrentNetwork && isPopularNetwork, + allChainIDs, + ); + + const totalFiatBalancesCrossEvmChain = useGetTotalFiatBalanceCrossChains( + [selectedInternalAccount as InternalAccount], + formattedTokensWithBalancesPerChain, + ); + + const isOriginalNativeEvmTokenSymbol = useIsOriginalNativeTokenSymbol( + evmChainId, + ticker, + type, + ); + + ///: BEGIN:ONLY_INCLUDE_IF(keyring-snaps) + const shouldShowFiat = useSelector(selectMultichainShouldShowFiat); + const multichainBalances = useSelector(selectMultichainBalances); + const multichainAssets = useSelector(selectMultichainAssets); + const multichainAssetsRates = useSelector(selectMultichainAssetsRates); + const nonEvmChainId = useSelector(selectSelectedNonEvmNetworkChainId); + ///: END:ONLY_INCLUDE_IF + + const isPortfolioEnabled = isPortfolioViewEnabled(); + + const selectedAccountMultichainBalance = useMemo(() => { + if (selectedInternalAccount) { + const accountBalanceData = getAccountBalanceData( + selectedInternalAccount, + currentCurrency, + totalFiatBalancesCrossEvmChain, + isOriginalNativeEvmTokenSymbol, + ///: BEGIN:ONLY_INCLUDE_IF(keyring-snaps) + multichainBalances, + multichainAssets, + multichainAssetsRates, + nonEvmChainId, + shouldShowFiat, + ///: END:ONLY_INCLUDE_IF + ); + return { + displayBalance: accountBalanceData.displayBalance, + displayCurrency: currentCurrency, + totalFiatBalance: accountBalanceData.totalFiatBalance, + totalNativeTokenBalance: accountBalanceData.totalNativeTokenBalance, + nativeTokenUnit: accountBalanceData.nativeTokenUnit, + tokenFiatBalancesCrossChains: + totalFiatBalancesCrossEvmChain[selectedInternalAccount.address] + ?.tokenFiatBalancesCrossChains ?? [], + shouldShowAggregatedPercentage: getShouldShowAggregatedPercentage( + selectedInternalAccount, + chainId as SupportedCaipChainId, + ), + isPortfolioVieEnabled: isPortfolioEnabled, + aggregatedBalance: getAggregatedBalance(selectedInternalAccount), + }; + } + return undefined; + }, [ + selectedInternalAccount, + chainId, + currentCurrency, + isOriginalNativeEvmTokenSymbol, + isPortfolioEnabled, + totalFiatBalancesCrossEvmChain, + ///: BEGIN:ONLY_INCLUDE_IF(keyring-snaps) + multichainAssets, + multichainAssetsRates, + multichainBalances, + nonEvmChainId, + shouldShowFiat, + ///: END:ONLY_INCLUDE_IF + ]); + return { + selectedAccountMultichainBalance, + }; + }; + +export default useSelectedAccountMultichainBalances; diff --git a/app/components/hooks/useMultichainBalances/utils.ts b/app/components/hooks/useMultichainBalances/utils.ts new file mode 100644 index 000000000000..ccf3bcc7bc71 --- /dev/null +++ b/app/components/hooks/useMultichainBalances/utils.ts @@ -0,0 +1,170 @@ +/* eslint-disable arrow-body-style */ +import { InternalAccount } from '@metamask/keyring-internal-api'; +///: BEGIN:ONLY_INCLUDE_IF(keyring-snaps) +import { + getMultichainNetworkAggregatedBalance, + MultichainNetworkAggregatedBalance, +} from '../../../selectors/multichain'; +import { isEvmAccountType } from '@metamask/keyring-api'; +import { + MultichainAssetsControllerState, + MultichainAssetsRatesControllerState, + MultichainBalancesControllerState, +} from '@metamask/assets-controllers'; +///: END:ONLY_INCLUDE_IF +import { formatWithThreshold } from '../../../util/assets'; +import I18n from '../../../../locales/i18n'; +import Engine from '../../../core/Engine'; +import { SupportedCaipChainId } from '@metamask/multichain-network-controller'; +import { TotalFiatBalancesCrossChains } from '../useGetTotalFiatBalanceCrossChains'; +import { isPortfolioViewEnabled, isTestNet } from '../../../util/networks'; + +// Production balance calculation (EVM) +const getEvmBalance = ( + account: InternalAccount, + isOriginalNativeEvmTokenSymbol: boolean, + totalFiatBalancesCrossEvmChain: TotalFiatBalancesCrossChains, + currentCurrency: string, +) => { + const balance = Engine.getTotalEvmFiatAccountBalance(account); + let total; + + const isPortfolioEnabled = isPortfolioViewEnabled(); + + if (isOriginalNativeEvmTokenSymbol) { + if (isPortfolioEnabled) { + total = + totalFiatBalancesCrossEvmChain[account?.address as string] + ?.totalFiatBalance ?? 0; + } else { + const tokenFiatTotal = balance?.tokenFiat ?? 0; + const ethFiatTotal = balance?.ethFiat ?? 0; + total = tokenFiatTotal + ethFiatTotal; + } + } else if (isPortfolioEnabled) { + total = + totalFiatBalancesCrossEvmChain[account?.address as string] + ?.totalTokenFiat ?? 0; + } else { + total = balance?.tokenFiat ?? 0; + } + + const displayBalance = formatWithThreshold(total, 0, I18n.locale, { + style: 'currency', + currency: currentCurrency.toUpperCase(), + }); + + return { + displayBalance, + totalFiatBalance: total, + totalNativeTokenBalance: balance?.totalNativeTokenBalance, + nativeTokenUnit: balance?.ticker, + }; +}; + +///: BEGIN:ONLY_INCLUDE_IF(keyring-snaps) +const getMultiChainFiatBalance = ( + balance: number | undefined, + currency: string, +) => { + if (balance === undefined) return '0'; + return formatWithThreshold(balance, 0, I18n.locale, { + style: 'currency', + currency: currency.toUpperCase(), + }); +}; + +const getNonEvmDisplayBalance = ( + nonEvmAccountBalance: MultichainNetworkAggregatedBalance, + shouldShowFiat: boolean, + currentCurrency: string, +) => { + if (!shouldShowFiat || !nonEvmAccountBalance.totalBalanceFiat) { + if (!nonEvmAccountBalance.totalNativeTokenBalance) { + return '0'; + } + return `${nonEvmAccountBalance.totalNativeTokenBalance.amount} ${nonEvmAccountBalance.totalNativeTokenBalance.unit}`; + } + + return getMultiChainFiatBalance( + nonEvmAccountBalance.totalBalanceFiat, + currentCurrency, + ); +}; +///: END:ONLY_INCLUDE_IF + +export const getShouldShowAggregatedPercentage = + // eslint-disable-next-line @typescript-eslint/no-unused-vars + (account: InternalAccount, chainId: SupportedCaipChainId) => { + ///: BEGIN:ONLY_INCLUDE_IF(keyring-snaps) + return !isTestNet(chainId) && isEvmAccountType(account.type); + ///: END:ONLY_INCLUDE_IF + + // Note: This code marked as unreachable however when the above block gets removed after code fencing this return becomes necessary + return !isTestNet(chainId); + }; + +export const getAggregatedBalance = (account: InternalAccount) => { + const balance = Engine.getTotalEvmFiatAccountBalance(account); + return { + ethFiat: balance?.ethFiat ?? 0, + tokenFiat: balance?.tokenFiat ?? 0, + tokenFiat1dAgo: balance?.tokenFiat1dAgo ?? 0, + ethFiat1dAgo: balance?.ethFiat1dAgo ?? 0, + }; +}; + +export const getAccountBalanceData = ( + account: InternalAccount, + currentCurrency: string, + totalFiatBalancesCrossEvmChain: TotalFiatBalancesCrossChains, + isOriginalNativeEvmTokenSymbol: boolean, + ///: BEGIN:ONLY_INCLUDE_IF(keyring-snaps) + multichainBalances: MultichainBalancesControllerState['balances'], + multichainAssets: MultichainAssetsControllerState['accountsAssets'], + multichainAssetsRates: MultichainAssetsRatesControllerState['conversionRates'], + nonEvmChainId: SupportedCaipChainId, + shouldShowFiat: boolean, + ///: END:ONLY_INCLUDE_IF +): { + displayBalance: string; + totalFiatBalance: number | undefined; + totalNativeTokenBalance: string | undefined; + nativeTokenUnit: string; +} => { + ///: BEGIN:ONLY_INCLUDE_IF(keyring-snaps) + if (!isEvmAccountType(account.type)) { + const nonEvmAccountBalance = getMultichainNetworkAggregatedBalance( + account, + multichainBalances, + multichainAssets, + multichainAssetsRates, + nonEvmChainId, + ); + return { + displayBalance: getNonEvmDisplayBalance( + nonEvmAccountBalance, + shouldShowFiat, + currentCurrency, + ), + totalFiatBalance: nonEvmAccountBalance.totalBalanceFiat, + totalNativeTokenBalance: + nonEvmAccountBalance.totalNativeTokenBalance?.amount, + nativeTokenUnit: nonEvmAccountBalance.totalNativeTokenBalance?.unit || '', + }; + } + ///: END:ONLY_INCLUDE_IF + const evmAccountBalance = getEvmBalance( + account, + isOriginalNativeEvmTokenSymbol, + totalFiatBalancesCrossEvmChain, + currentCurrency, + ); + return { + displayBalance: evmAccountBalance.displayBalance, + totalFiatBalance: evmAccountBalance.totalFiatBalance, + totalNativeTokenBalance: + evmAccountBalance.totalNativeTokenBalance?.toString() || '0', + nativeTokenUnit: evmAccountBalance.nativeTokenUnit || '', + }; +}; diff --git a/app/selectors/multichain/multichain.ts b/app/selectors/multichain/multichain.ts index f2b319328519..781efb0d519c 100644 --- a/app/selectors/multichain/multichain.ts +++ b/app/selectors/multichain/multichain.ts @@ -109,7 +109,7 @@ export const selectMultichainShouldShowFiat = createDeepEqualSelector( selectMultichainIsMainnet, selectIsEvmNetworkSelected, selectShowFiatInTestnets, - (multichainIsMainnet, isEvmSelected, shouldShowFiatOnTestnets) => { + (multichainIsMainnet, isEvmSelected, shouldShowFiatOnTestnets): boolean => { const isTestnet = !multichainIsMainnet; if (isEvmSelected) { return isTestnet ? shouldShowFiatOnTestnets : true; // Is it safe to assume that we default show fiat for mainnet? diff --git a/app/selectors/settings.ts b/app/selectors/settings.ts index 510ba93f5480..52f5366dcfd7 100644 --- a/app/selectors/settings.ts +++ b/app/selectors/settings.ts @@ -5,7 +5,8 @@ const selectSettings = (state: RootState) => state.settings; export const selectShowFiatInTestnets = createSelector( selectSettings, - (settingsState: Record<string, unknown>) => settingsState.showFiatOnTestnets, + (settingsState: Record<string, unknown>) => + settingsState.showFiatOnTestnets as boolean, ); export const selectPrimaryCurrency = createSelector( From 2defa47856c159b56698f421395e13a836acaa05 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 25 Apr 2025 11:46:38 -0700 Subject: [PATCH 166/473] chore: cherry-pick #14873 (#14899) This PR cherry-picks #14873 Co-authored-by: Owen Craston <owen.craston@consensys.net> --- .../QRAccountDisplay.test.tsx | 46 ++++++++++++- .../QRAccountDisplay/QRAccountDisplay.tsx | 4 +- app/util/address/index.test.ts | 65 +++++++++++++++++++ app/util/address/index.ts | 2 +- 4 files changed, 111 insertions(+), 6 deletions(-) diff --git a/app/components/Views/QRAccountDisplay/QRAccountDisplay.test.tsx b/app/components/Views/QRAccountDisplay/QRAccountDisplay.test.tsx index 73fcfded50ea..f65c60ff8764 100644 --- a/app/components/Views/QRAccountDisplay/QRAccountDisplay.test.tsx +++ b/app/components/Views/QRAccountDisplay/QRAccountDisplay.test.tsx @@ -4,6 +4,7 @@ import { fireEvent } from '@testing-library/react-native'; import { renderScreen } from '../../../util/test/renderWithProvider'; import backgroundState from '../../../util/test/initial-background-state.json'; import ClipboardManager from '../../../core/ClipboardManager'; +import { MOCK_SOLANA_ACCOUNT } from '../../../util/test/accountsControllerTestUtils'; const initialState = { engine: { @@ -26,7 +27,9 @@ jest.mock('../../../core/ClipboardManager', () => { }; }); -const TestWrapper = () => <QRAccountDisplay accountAddress={ACCOUNT} />; +const TestWrapper = ({ accountAddress }: { accountAddress: string }) => ( + <QRAccountDisplay accountAddress={accountAddress} /> +); describe('QRAccountDisplay', () => { beforeEach(() => { @@ -35,7 +38,7 @@ describe('QRAccountDisplay', () => { it('render matches snapshot', () => { const { toJSON } = renderScreen( - TestWrapper, + () => <TestWrapper accountAddress={ACCOUNT} />, { name: 'QRAccountDisplay' }, // @ts-expect-error initialBackgroundState throws error { state: initialState }, @@ -45,7 +48,7 @@ describe('QRAccountDisplay', () => { it('copies address to clipboard and checks clipboard content', async () => { const { getByTestId } = renderScreen( - TestWrapper, + () => <TestWrapper accountAddress={ACCOUNT} />, { name: 'QRAccountDisplay' }, // @ts-expect-error initialBackgroundState throws error { state: initialState }, @@ -58,4 +61,41 @@ describe('QRAccountDisplay', () => { expect(ClipboardManager.getString()).toBe(ACCOUNT); expect(copyButton).toBeTruthy(); }); + + it('correctly renders Solana account address without 0x prefix', () => { + const stateWithSolanaAccount = { + engine: { + backgroundState: { + ...backgroundState, + AccountsController: { + internalAccounts: { + accounts: { + [MOCK_SOLANA_ACCOUNT.id]: MOCK_SOLANA_ACCOUNT, + }, + }, + }, + }, + }, + }; + + const { getByText, queryByText } = renderScreen( + () => <TestWrapper accountAddress={MOCK_SOLANA_ACCOUNT.address} />, + { name: 'QRAccountDisplay' }, + // @ts-expect-error initialBackgroundState throws error + { state: stateWithSolanaAccount }, + ); + + // Verify the component shows the account name + expect(getByText('Solana Account')).toBeTruthy(); + + // Checking that the address doesn't contain 0x prefix by verifying the starting characters + expect(queryByText(/^0x/)).toBeNull(); + + // Check the component shows the correct Solana address + // We're looking for a text node that contains the starting characters of the Solana address + expect(getByText(/7EcDhS/)).toBeTruthy(); + + // Verify the end of the address is also present + expect(getByText(/CFLtV$/)).toBeTruthy(); + }); }); diff --git a/app/components/Views/QRAccountDisplay/QRAccountDisplay.tsx b/app/components/Views/QRAccountDisplay/QRAccountDisplay.tsx index d56e4ad3088d..b3b50c51176f 100644 --- a/app/components/Views/QRAccountDisplay/QRAccountDisplay.tsx +++ b/app/components/Views/QRAccountDisplay/QRAccountDisplay.tsx @@ -28,8 +28,8 @@ const ADDRESS_SUFFIX_LENGTH = 5; const QRAccountDisplay = (props: { accountAddress: string }) => { const { styles } = useStyles(styleSheet, {}); const addr = props.accountAddress; - const identities = useSelector(selectInternalAccounts); - const accountLabel = renderAccountName(addr, identities); + const accounts = useSelector(selectInternalAccounts); + const accountLabel = renderAccountName(addr, accounts); const { toastRef } = useContext(ToastContext); const addressStart = addr.substring(0, ADDRESS_PREFIX_LENGTH); const addressMiddle: string = addr.substring( diff --git a/app/util/address/index.test.ts b/app/util/address/index.test.ts index 38ad000958c2..85dc1ed5bcfd 100644 --- a/app/util/address/index.test.ts +++ b/app/util/address/index.test.ts @@ -17,6 +17,7 @@ import { isSnapAccount, toFormattedAddress, isHDOrFirstPartySnapAccount, + renderAccountName, } from '.'; import { mockHDKeyringAddress, @@ -31,6 +32,22 @@ import { } from '../test/accountsControllerTestUtils'; import { KeyringTypes } from '@metamask/keyring-controller'; +jest.mock('../../store', () => ({ + store: { + getState: jest.fn().mockReturnValue({ + engine: { + backgroundState: { + NetworkController: { + provider: { + chainId: '0x1', + }, + }, + }, + }, + }), + }, +})); + jest.mock('../../core/Engine', () => { const { MOCK_KEYRING_CONTROLLER_STATE } = jest.requireActual( '../test/keyringControllerTestUtils', @@ -53,6 +70,17 @@ jest.mock('../../core/Engine', () => { }; }); +// Mock the selectors used in renderAccountName +jest.mock('../../selectors/networkController', () => ({ + selectChainId: jest.fn().mockReturnValue('0x1'), +})); + +// Mock the ENS utils +jest.mock('../../util/ENSUtils', () => ({ + getCachedENSName: jest.fn().mockReturnValue(''), + isDefaultAccountName: jest.fn().mockReturnValue(false), +})); + describe('isENS', () => { it('should return false by default', () => { expect(isENS()).toBe(false); @@ -113,6 +141,43 @@ describe('renderSlightlyLongAddress', () => { }); }); +describe('renderAccountName', () => { + describe('with Ethereum accounts', () => { + it('returns the account name for a known Ethereum account', () => { + const ethAddress = internalAccount1.address; + const accounts = [internalAccount1]; + expect(renderAccountName(ethAddress, accounts)).toBe('Account 1'); + }); + + it('returns a shortened address for unknown Ethereum accounts', () => { + const unknownAddress = '0x1234567890123456789012345678901234567890'; + const accounts = [internalAccount1]; + // The shortened address format is first 7 chars + ... + last 5 chars + expect(renderAccountName(unknownAddress, accounts)).toBe( + '0x12345...67890', + ); + }); + }); + + describe('with Solana accounts', () => { + it('returns the account name for a known Solana account', () => { + const solanaAddress = MOCK_SOLANA_ACCOUNT.address; + const accounts = [MOCK_SOLANA_ACCOUNT]; + expect(renderAccountName(solanaAddress, accounts)).toBe('Solana Account'); + }); + + it('returns a shortened address for unknown Solana accounts', () => { + const unknownSolanaAddress = + '7EcDhSYGxXyscszYEp35KHN8vvw3svAuLKTzXwCFLtV'; + const accounts = [internalAccount1]; // Only contains Ethereum account + // The shortened address format is first 7 chars + ... + last 5 chars + expect(renderAccountName(unknownSolanaAddress, accounts)).toBe( + '7EcDhSY...CFLtV', + ); + }); + }); +}); + describe('formatAddress', () => { const mockEvmAddress = '0xC4955C0d639D99699Bfd7Ec54d9FaFEe40e4D272'; const mockBtcAddress = 'bc1qxy2kgdygjrsqtzq2n0yrf2493p83kkfjhx0wlh'; diff --git a/app/util/address/index.ts b/app/util/address/index.ts index efe5ec82a981..751ced791726 100644 --- a/app/util/address/index.ts +++ b/app/util/address/index.ts @@ -136,7 +136,7 @@ export function renderAccountName( internalAccounts: InternalAccount[], ) { const chainId = selectChainId(store.getState()); - address = toChecksumHexAddress(address); + address = toFormattedAddress(address); const account = internalAccounts.find((acc) => toLowerCaseEquals(acc.address, address), ); From fe35e8eb33aa5b97358b9fc682ee9e7a480e607f Mon Sep 17 00:00:00 2001 From: "runway-github[bot]" <73448015+runway-github[bot]@users.noreply.github.com> Date: Fri, 25 Apr 2025 13:37:04 -0600 Subject: [PATCH 167/473] chore(runway): cherry-pick fix: cp-7.45.0 WC automatically update network permissions when switching chains (#14819) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - fix: cp-7.45.0 WC automatically update network permissions when switching chains (#14782) ## **Description** When using `wallet_switchEthereumChain` via WalletConnect on a chain that wasn't previously permitted, the chain is granted permissions in the PermissionComtroller. It seems currently switching to a non-permitted chain via `switchToNetwork` will ask the user for permission, so granting permissions when we successfully switch seems to be fix issues with mismatching WalletConnect namespaces vs what the Wallet is currently allowing ## **Related issues** Fixes: #14757 ## **Manual testing steps** 1. Go to https://appkit-lab.reown.com/library/wagmi/ on your desktop browser 2. Click connect ont he dapp 3. Scan the QRCode and edit the permitted networks for Mainnet only 4. Switch to Polygon (or any other chain) from the dapp -> see error on the dapp and the dapp gets disconnected. ## **Screenshots/Recordings** <!-- If applicable, add screenshots and/or recordings to visualize the before and after of your change. --> ### **Before** https://github.com/user-attachments/assets/bd938a98-97ef-4b63-af02-f879612d7bec ### **After** https://github.com/user-attachments/assets/3d31a6a9-8443-4a00-a1ce-0e6caeb1336a ## **Pre-merge author checklist** - [x] I’ve followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile Coding Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [x] I've completed the PR template to the best of my ability - [x] I’ve included tests if applicable - [x] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [x] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. ## **Pre-merge reviewer checklist** - [ ] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [ ] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots. [e35780c](https://github.com/MetaMask/metamask-mobile/commit/e35780cb8baa00532ea34f708ea6319953416386) Co-authored-by: Eddie Penta <ecp4224@gmail.com> --- app/core/Permissions/index.test.ts | 149 ++++++++++++++++++ app/core/Permissions/index.ts | 73 +++++++++ .../WalletConnect2Session.test.ts | 40 +++++ .../WalletConnect/WalletConnect2Session.ts | 23 ++- app/core/WalletConnect/wc-utils.test.ts | 25 +++ app/core/WalletConnect/wc-utils.ts | 24 ++- 6 files changed, 324 insertions(+), 10 deletions(-) diff --git a/app/core/Permissions/index.test.ts b/app/core/Permissions/index.test.ts index fbffb798e89e..facf8eff93b0 100644 --- a/app/core/Permissions/index.test.ts +++ b/app/core/Permissions/index.test.ts @@ -2,6 +2,8 @@ import { getPermittedAccounts, getPermittedChains, switchActiveAccounts, + addPermittedChain, + removePermittedChain, } from './index'; import { errorCodes as rpcErrorCodes } from '@metamask/rpc-errors'; import { RestrictedMethods, CaveatTypes } from './constants'; @@ -15,6 +17,7 @@ jest.mock('../Engine', () => ({ executeRestrictedMethod: jest.fn(), getCaveat: jest.fn(), updateCaveat: jest.fn(), + grantPermissions: jest.fn(), }, AccountsController: { getSelectedAccount: jest.fn(), @@ -164,4 +167,150 @@ describe('Permission Management Functions', () => { ); }); }); + + describe('addPermittedChain', () => { + it('adds a new chain to permitted chains', async () => { + const hostname = 'example.com'; + const chainId = '0x1'; + Engine.context.PermissionController.getCaveat.mockReturnValue({ + value: ['0xa'], + }); + Engine.context.PermissionController.grantPermissions.mockResolvedValue(undefined); + + await addPermittedChain(hostname, chainId); + + expect(Engine.context.PermissionController.getCaveat).toHaveBeenCalledWith( + hostname, + PermissionKeys.permittedChains, + CaveatTypes.restrictNetworkSwitching, + ); + expect(Engine.context.PermissionController.grantPermissions).toHaveBeenCalledWith({ + approvedPermissions: { + [PermissionKeys.permittedChains]: { + caveats: [ + { type: CaveatTypes.restrictNetworkSwitching, value: ['0xa', '0x1'] }, + ], + }, + }, + subject: { + origin: hostname, + }, + preserveExistingPermissions: true, + }); + }); + + it('does not add chain if already permitted', async () => { + const hostname = 'example.com'; + const chainId = '0x1'; + Engine.context.PermissionController.getCaveat.mockReturnValue({ + value: ['0xa', '0x1'], + }); + + await addPermittedChain(hostname, chainId); + + expect(Engine.context.PermissionController.getCaveat).toHaveBeenCalledWith( + hostname, + PermissionKeys.permittedChains, + CaveatTypes.restrictNetworkSwitching, + ); + expect(Engine.context.PermissionController.grantPermissions).not.toHaveBeenCalled(); + }); + + it('handles empty initial permitted chains', async () => { + const hostname = 'example.com'; + const chainId = '0x1'; + Engine.context.PermissionController.getCaveat.mockReturnValue({ + value: [], + }); + + await addPermittedChain(hostname, chainId); + + expect(Engine.context.PermissionController.grantPermissions).toHaveBeenCalledWith({ + approvedPermissions: { + [PermissionKeys.permittedChains]: { + caveats: [ + { type: CaveatTypes.restrictNetworkSwitching, value: ['0x1'] }, + ], + }, + }, + subject: { + origin: hostname, + }, + preserveExistingPermissions: true, + }); + }); + }); + + describe('removePermittedChain', () => { + it('removes a chain from permitted chains', async () => { + const hostname = 'example.com'; + const chainId = '0x1'; + Engine.context.PermissionController.getCaveat.mockReturnValue({ + value: ['0xa', '0x1', '0x5'], + }); + Engine.context.PermissionController.grantPermissions.mockResolvedValue(undefined); + + await removePermittedChain(hostname, chainId); + + expect(Engine.context.PermissionController.getCaveat).toHaveBeenCalledWith( + hostname, + PermissionKeys.permittedChains, + CaveatTypes.restrictNetworkSwitching, + ); + expect(Engine.context.PermissionController.grantPermissions).toHaveBeenCalledWith({ + approvedPermissions: { + [PermissionKeys.permittedChains]: { + caveats: [ + { type: CaveatTypes.restrictNetworkSwitching, value: ['0xa', '0x5'] }, + ], + }, + }, + subject: { + origin: hostname, + }, + preserveExistingPermissions: true, + }); + }); + + it('does not update permissions if chain is not in permitted chains', async () => { + const hostname = 'example.com'; + const chainId = '0x99'; + Engine.context.PermissionController.getCaveat.mockReturnValue({ + value: ['0xa', '0x1'], + }); + + await removePermittedChain(hostname, chainId); + + expect(Engine.context.PermissionController.getCaveat).toHaveBeenCalledWith( + hostname, + PermissionKeys.permittedChains, + CaveatTypes.restrictNetworkSwitching, + ); + expect(Engine.context.PermissionController.grantPermissions).not.toHaveBeenCalled(); + }); + + it('handles removing the last chain from permitted chains', async () => { + const hostname = 'example.com'; + const chainId = '0x1'; + Engine.context.PermissionController.getCaveat.mockReturnValue({ + value: ['0x1'], + }); + + await removePermittedChain(hostname, chainId); + + expect(Engine.context.PermissionController.grantPermissions).toHaveBeenCalledWith({ + approvedPermissions: { + [PermissionKeys.permittedChains]: { + caveats: [ + { type: CaveatTypes.restrictNetworkSwitching, value: [] }, + ], + }, + }, + subject: { + origin: hostname, + }, + preserveExistingPermissions: true, + }); + }); + }); }); diff --git a/app/core/Permissions/index.ts b/app/core/Permissions/index.ts index cc6b4e78110a..a2aad48c1506 100644 --- a/app/core/Permissions/index.ts +++ b/app/core/Permissions/index.ts @@ -220,6 +220,79 @@ export const getPermittedAccounts = async ( } }; +/** + * Add a permitted chain for the given the host. + * + * @param hostname - Subject to add permitted chain. Ex: A Dapp is a subject + * @param chainId - ChainId to add. + */ +export const addPermittedChain = async (hostname: string, chainId: string) => { + const { PermissionController } = Engine.context; + + const caveat = PermissionController.getCaveat( + hostname, + PermissionKeys.permittedChains, + CaveatTypes.restrictNetworkSwitching + ); + + const currentPermittedChains = caveat.value; + if (currentPermittedChains.includes(chainId)) { + return; + } + + const newPermittedChains = [...currentPermittedChains, chainId]; + + await PermissionController.grantPermissions({ + approvedPermissions: { + [PermissionKeys.permittedChains]: { + caveats: [ + { type: CaveatTypes.restrictNetworkSwitching, value: newPermittedChains }, + ], + }, + }, + subject: { + origin: hostname, + }, + preserveExistingPermissions: true, + }); +}; + +/** + * Remove a permitted chain for the given the host. + * + * @param hostname - Subject to remove permitted chain. Ex: A Dapp is a subject + * @param chainId - ChainId to remove. + */ +export const removePermittedChain = async (hostname: string, chainId: string) => { + const { PermissionController } = Engine.context; + const caveat = PermissionController.getCaveat( + hostname, + PermissionKeys.permittedChains, + CaveatTypes.restrictNetworkSwitching + ); + + const currentPermittedChains = caveat.value; + if (!currentPermittedChains.includes(chainId)) { + return; + } + + const newPermittedChains = currentPermittedChains.filter((chain: string) => chain !== chainId); + + await PermissionController.grantPermissions({ + approvedPermissions: { + [PermissionKeys.permittedChains]: { + caveats: [ + { type: CaveatTypes.restrictNetworkSwitching, value: newPermittedChains }, + ], + }, + }, + subject: { + origin: hostname, + }, + preserveExistingPermissions: true, + }); +} + /** * Get permitted chains for the given the host. * diff --git a/app/core/WalletConnect/WalletConnect2Session.test.ts b/app/core/WalletConnect/WalletConnect2Session.test.ts index 6746f209b6a8..30b99539a696 100644 --- a/app/core/WalletConnect/WalletConnect2Session.test.ts +++ b/app/core/WalletConnect/WalletConnect2Session.test.ts @@ -625,4 +625,44 @@ describe('WalletConnect2Session', () => { expect((session as any).requestsToRedirect['789']).toBe(true); }); }); + + it('handles wallet_switchEthereumChain correctly', async () => { + // Setup spies + const handleChainChangeSpy = jest.spyOn(session as any, 'handleChainChange'); + const approveRequestSpy = jest.spyOn(session, 'approveRequest'); + + // Create a mock switch chain request + const chainIdHex = '0x89'; // Polygon + const switchChainRequest = { + id: '42', + topic: mockSession.topic, + params: { + request: { + method: 'wallet_switchEthereumChain', + params: [{ chainId: chainIdHex }], + }, + chainId: 'eip155:1', // Current chain before switch + }, + verifyContext: { + verified: { + origin: 'https://example.com' + } + }, + }; + + // Store the request ID in the topicByRequestId map + (session as any).topicByRequestId[switchChainRequest.id] = switchChainRequest.topic; + + // Call handleRequest with the switchChainRequest + await session.handleRequest(switchChainRequest as any); + + // Verify handleChainChange was called with the decimal chain ID + expect(handleChainChangeSpy).toHaveBeenCalledWith(parseInt(chainIdHex, 16)); // 137 in decimal + + // Verify approveRequest was called with the correct parameters + expect(approveRequestSpy).toHaveBeenCalledWith({ + id: switchChainRequest.id + '', + result: true + }); + }); }); diff --git a/app/core/WalletConnect/WalletConnect2Session.ts b/app/core/WalletConnect/WalletConnect2Session.ts index 53e247da9cce..4dec18c2a307 100644 --- a/app/core/WalletConnect/WalletConnect2Session.ts +++ b/app/core/WalletConnect/WalletConnect2Session.ts @@ -248,17 +248,23 @@ class WalletConnect2Session { const currentNamespaces = this.session.namespaces; const newChainId = `eip155:${chainIdDecimal}`; const updatedChains = [ - ...new Set([...(currentNamespaces.eip155?.chains || []), newChainId]), + ...new Set([...(currentNamespaces?.eip155?.chains || []), newChainId]), ]; + const accounts = [...new Set((currentNamespaces?.eip155?.accounts || []).map((acc) => acc.split(':')[2]))].map((account) => `${newChainId}:${account}`); + + const updatedAccounts = [ + ...new Set([...(currentNamespaces?.eip155?.accounts || []), ...accounts]), + ] + const updatedNamespaces = { ...currentNamespaces, eip155: { - ...currentNamespaces.eip155, + ...(currentNamespaces?.eip155 || {}), chains: updatedChains, - methods: currentNamespaces.eip155.methods, - events: currentNamespaces.eip155.events, - accounts: currentNamespaces.eip155.accounts, + methods: currentNamespaces?.eip155?.methods || [], + events: currentNamespaces?.eip155?.events || [], + accounts: updatedAccounts, }, }; @@ -451,7 +457,8 @@ class WalletConnect2Session { const verified = requestEvent.verifyContext?.verified; const origin = verified?.origin ?? this.session.peer.metadata.url; const method = requestEvent.params.request.method; - const caip2ChainId = method === 'wallet_switchEthereumChain' ? `eip155:${parseInt(requestEvent.params.request.params[0].chainId, 16)}` : requestEvent.params.chainId; + const isSwitchingChain = method === 'wallet_switchEthereumChain'; + const caip2ChainId = isSwitchingChain ? `eip155:${parseInt(requestEvent.params.request.params[0].chainId, 16)}` : requestEvent.params.chainId; const methodParams = requestEvent.params.request.params; DevLogger.log( @@ -459,7 +466,7 @@ class WalletConnect2Session { ); try { - const allowed = await checkWCPermissions({ origin, caip2ChainId }); + const allowed = await checkWCPermissions({ origin, caip2ChainId, allowSwitchingToNewChain: isSwitchingChain }); DevLogger.log( `WC2::handleRequest caip2ChainId=${caip2ChainId} is allowed=${allowed}`, ); @@ -499,6 +506,8 @@ class WalletConnect2Session { if (method === 'wallet_switchEthereumChain') { this.handleChainChange(parseInt(caip2ChainId.split(':')[1], 10)); + // respond to the request as successful + await this.approveRequest({ id: requestEvent.id + '', result: true }); return; } diff --git a/app/core/WalletConnect/wc-utils.test.ts b/app/core/WalletConnect/wc-utils.test.ts index 60ef55f58c72..12e53e30f841 100644 --- a/app/core/WalletConnect/wc-utils.test.ts +++ b/app/core/WalletConnect/wc-utils.test.ts @@ -45,6 +45,7 @@ jest.mock('../../../app/store', () => { jest.mock('../Permissions', () => ({ getPermittedAccounts: jest.fn().mockResolvedValue(['0x123']), getPermittedChains: jest.fn().mockResolvedValue(['eip155:1']), + addPermittedChain: jest.fn().mockResolvedValue(undefined), })); jest.mock('../../selectors/networkController', () => ({ @@ -275,6 +276,30 @@ describe('WalletConnect Utils', () => { }); expect(switchToNetwork).toHaveBeenCalled(); }); + + it('adds permitted chain when allowSwitchingToNewChain is true', async () => { + // Mock that the chain is not permitted + const mockPermittedChains = jest.requireMock('../Permissions').getPermittedChains; + mockPermittedChains.mockResolvedValueOnce([]); + + // Mock the addPermittedChain function + const mockAddPermittedChain = jest.requireMock('../Permissions').addPermittedChain; + + // Test with allowSwitchingToNewChain set to true + const result = await checkWCPermissions({ + origin: 'test-dapp.com', + caip2ChainId: 'eip155:3', + allowSwitchingToNewChain: true, + }); + + // Verify addPermittedChain was called with the right parameters + expect(mockAddPermittedChain).toHaveBeenCalledWith( + 'test-dapp.com', + '0x3' + ); + expect(switchToNetwork).toHaveBeenCalled(); + expect(result).toBe(true); + }); }); describe('onRequestUserApproval', () => { diff --git a/app/core/WalletConnect/wc-utils.ts b/app/core/WalletConnect/wc-utils.ts index 4ac569193d77..832288b933d1 100644 --- a/app/core/WalletConnect/wc-utils.ts +++ b/app/core/WalletConnect/wc-utils.ts @@ -10,7 +10,7 @@ import { selectProviderConfig, } from '../../selectors/networkController'; import Engine from '../Engine'; -import { getPermittedAccounts, getPermittedChains } from '../Permissions'; +import { addPermittedChain, getPermittedAccounts, getPermittedChains, removePermittedChain } from '../Permissions'; import { findExistingNetwork, switchToNetwork, @@ -246,7 +246,8 @@ export const onRequestUserApproval = (origin: string) => async (args: any) => { export const checkWCPermissions = async ({ origin, caip2ChainId, -}: { origin: string; caip2ChainId: string }) => { + allowSwitchingToNewChain = false, +}: { origin: string; caip2ChainId: string; allowSwitchingToNewChain?: boolean }) => { const networkConfigurations = selectNetworkConfigurations(store.getState()); const decimalChainId = caip2ChainId.split(':')[1]; const hexChainIdString = `0x${parseInt(decimalChainId, 10).toString(16)}`; @@ -274,7 +275,9 @@ export const checkWCPermissions = async ({ ); - if (!isAllowedChainId) { + + // If the chainId is not permitted and we're not allowed to switch to a new chain, throw an error + if (!isAllowedChainId && !allowSwitchingToNewChain) { DevLogger.log(`WC::checkWCPermissions chainId is not permitted`); throw rpcErrors.invalidParams({ message: `Invalid parameters: active chainId is different than the one provided.`, @@ -288,6 +291,13 @@ export const checkWCPermissions = async ({ if (caip2ChainId !== activeCaip2ChainId) { try { + if (!isAllowedChainId && allowSwitchingToNewChain) { + // Preemptively add the chain to the permitted chains + // This is to prevent a race condition where WalletConnect is told about the chain switch before permissions are updated + DevLogger.log(`WC::checkWCPermissions adding permitted chain for ${origin}:`, hexChainIdString); + await addPermittedChain(getHostname(origin), hexChainIdString); + } + await switchToNetwork({ network: existingNetwork, chainId: hexChainIdString, @@ -303,6 +313,14 @@ export const checkWCPermissions = async ({ `WC::checkWCPermissions error switching to network:`, error, ); + + if (!isAllowedChainId && allowSwitchingToNewChain) { + // If we failed to switch to the network, remove the chain from the permitted chains + // This is so we don't leave any dangling permissions if the user rejects the switch + DevLogger.log(`WC::checkWCPermissions removing permitted chain for ${origin}:`, hexChainIdString); + await removePermittedChain(getHostname(origin), hexChainIdString); + } + return false; } } From dc422abd1d98e0b580b2bee64b85d462436eb84c Mon Sep 17 00:00:00 2001 From: "runway-github[bot]" <73448015+runway-github[bot]@users.noreply.github.com> Date: Fri, 25 Apr 2025 14:27:54 -0600 Subject: [PATCH 168/473] chore(runway): cherry-pick chore: Report undefined selected account in migrations (#14901) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - chore: Report undefined selected account in migrations (#14823) <!-- Please submit this PR as a draft initially. Do not mark it as "Ready for review" until the template has been completely filled out, and PR status checks have passed at least once. --> ## **Description** <!-- Write a short description of the changes included in this pull request, also include relevant motivation and context. Have in mind the following questions: 1. What is the reason for the change? 2. What is the improvement/solution? --> Findings from undefined account ID continues to point to migrations returning a state with an undefined selectedAccount property - https://github.com/MetaMask/metamask-mobile/issues/14276. It's possible that the property is also undefined prior to being migrated. In any case, we're adding more logs to the migrations that mutate selectedAccount to filter out the possibility of migrations producing an undefined state. We've also fixed the error log where validation was not reporting any issues regarding selectedAccount. ## **Related issues** Fixes: https://github.com/MetaMask/metamask-mobile/issues/14822 ## **Manual testing steps** 1. Go to this page... 2. 3. ## **Screenshots/Recordings** <!-- If applicable, add screenshots and/or recordings to visualize the before and after of your change. --> ### **Before** <!-- [screenshots/recordings] --> ### **After** <!-- [screenshots/recordings] --> ## **Pre-merge author checklist** - [x] I’ve followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile Coding Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [x] I've completed the PR template to the best of my ability - [x] I’ve included tests if applicable - [x] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [x] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. ## **Pre-merge reviewer checklist** - [x] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [x] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots. [c9616b2](https://github.com/MetaMask/metamask-mobile/commit/c9616b2b805f82e9abfd014cff4678cfaff96940) Co-authored-by: Cal Leung <cal.leung@consensys.net> --- app/store/migrations/036.test.ts | 50 +++++++++++++++++-- app/store/migrations/036.ts | 15 ++++++ app/store/migrations/042.test.ts | 19 +++++++ app/store/migrations/042.ts | 7 +++ app/store/migrations/052.test.ts | 22 ++++++++ app/store/migrations/052.ts | 8 +++ app/store/migrations/059.test.ts | 23 +++++++++ app/store/migrations/059.ts | 8 +++ .../accountsController.test.ts | 35 ++++++++++++- .../validateMigration/accountsController.ts | 11 ++-- 10 files changed, 187 insertions(+), 11 deletions(-) diff --git a/app/store/migrations/036.test.ts b/app/store/migrations/036.test.ts index 9f48e457b9a5..afd48c5d955a 100644 --- a/app/store/migrations/036.test.ts +++ b/app/store/migrations/036.test.ts @@ -1,3 +1,4 @@ +/* eslint-disable @typescript-eslint/no-require-imports, @typescript-eslint/no-var-requires */ import { EthAccountType, EthMethod, EthScope } from '@metamask/keyring-api'; import { InternalAccount } from '@metamask/keyring-internal-api'; import migrate, { Identity } from './036'; @@ -91,10 +92,11 @@ function createMockState( } describe('Migration #036', () => { + beforeEach(() => { + mockedCaptureException.mockReset(); + }); + describe('createDefaultAccountsController', () => { - beforeEach(() => { - mockedCaptureException.mockReset(); - }); it('should throw if state.engine is not defined', () => { const newState = migrate({}); expect(newState).toStrictEqual({}); @@ -456,5 +458,47 @@ describe('Migration #036', () => { }, }); }); + + it('should capture exception if internalAccount.id is undefined', () => { + // Mock getUUIDFromAddressOfNormalAccount to return undefined + jest + .spyOn( + require('@metamask/accounts-controller'), + 'getUUIDFromAddressOfNormalAccount', + ) + .mockReturnValue(undefined); + + const oldState = createMockState( + createMockPreferenceControllerState( + [{ name: 'Account 1', address: MOCK_ADDRESS_1 }], + undefined, + ), + ); + migrate(oldState); + expect(mockedCaptureException.mock.calls[1][0].message).toBe( + `Migration 36: selectedAccount will be undefined because internalAccount.id is undefined.`, + ); + }); + + it('should capture exception if selectedAccount.id is undefined', () => { + // Mock getUUIDFromAddressOfNormalAccount to return undefined + jest + .spyOn( + require('@metamask/accounts-controller'), + 'getUUIDFromAddressOfNormalAccount', + ) + .mockReturnValue(undefined); + + const oldState = createMockState( + createMockPreferenceControllerState( + [{ name: 'Account 1', address: MOCK_ADDRESS_1 }], + MOCK_ADDRESS_1, + ), + ); + migrate(oldState); + expect(mockedCaptureException.mock.calls[0][0].message).toBe( + `Migration 36: selectedAccount will be undefined because selectedAccount.id is undefined.`, + ); + }); }); }); diff --git a/app/store/migrations/036.ts b/app/store/migrations/036.ts index 1fea81290619..76fe8b484a5b 100644 --- a/app/store/migrations/036.ts +++ b/app/store/migrations/036.ts @@ -170,7 +170,15 @@ function createSelectedAccountForAccountsController( state.engine.backgroundState.PreferencesController?.identities, ); const internalAccount = findInternalAccountByAddress(state, firstAddress); + if (internalAccount) { + if (internalAccount.id === undefined) { + captureException( + new Error( + `Migration 36: selectedAccount will be undefined because internalAccount.id is undefined.`, + ), + ); + } state.engine.backgroundState.AccountsController.internalAccounts.selectedAccount = internalAccount.id; state.engine.backgroundState.PreferencesController.selectedAddress = @@ -181,6 +189,13 @@ function createSelectedAccountForAccountsController( const selectedAccount = findInternalAccountByAddress(state, selectedAddress); if (selectedAccount) { + if (selectedAccount.id === undefined) { + captureException( + new Error( + `Migration 36: selectedAccount will be undefined because selectedAccount.id is undefined.`, + ), + ); + } state.engine.backgroundState.AccountsController.internalAccounts.selectedAccount = selectedAccount.id; } diff --git a/app/store/migrations/042.test.ts b/app/store/migrations/042.test.ts index 5936d32f9e22..88ef93ecfbd7 100644 --- a/app/store/migrations/042.test.ts +++ b/app/store/migrations/042.test.ts @@ -406,6 +406,25 @@ describe('Migration #042', () => { ); }); + it('should capture exception if AccountsController.internalAccounts.selectedAccount is undefined', () => { + const oldState = { + engine: { + backgroundState: { + AccountsController: { + internalAccounts: { + accounts: {}, + selectedAccount: undefined, + }, + }, + }, + }, + }; + migrate(oldState); + expect(mockedCaptureException.mock.calls[0][0].message).toBe( + 'Migration 42: selectedAccount will be undefined because newSelectedAccountId is undefined. selectedAddress: undefined, addressMap[selectedAddress]: undefined', + ); + }); + it('should handle cases with no duplicates correctly', () => { const uniqueState = { internalAccounts: { diff --git a/app/store/migrations/042.ts b/app/store/migrations/042.ts index 62ab512881ec..1d3032b24849 100644 --- a/app/store/migrations/042.ts +++ b/app/store/migrations/042.ts @@ -91,5 +91,12 @@ function mergeInternalAccounts(state: ValidState) { const newSelectedAccountId = addressMap[selectedAddress] || Object.keys(mergedAccounts)[0]; // Default to the first account in the list accountsController.internalAccounts.accounts = mergedAccounts; + if (newSelectedAccountId === undefined) { + captureException( + new Error( + `Migration 42: selectedAccount will be undefined because newSelectedAccountId is undefined. selectedAddress: ${selectedAddress}, addressMap[selectedAddress]: ${addressMap[selectedAddress]}`, + ), + ); + } accountsController.internalAccounts.selectedAccount = newSelectedAccountId; } diff --git a/app/store/migrations/052.test.ts b/app/store/migrations/052.test.ts index 907673d06c98..cf2e51d1f5e1 100644 --- a/app/store/migrations/052.test.ts +++ b/app/store/migrations/052.test.ts @@ -194,4 +194,26 @@ describe('Migration #52', () => { expect(newState).toStrictEqual(validState); }); + + it('captures exception if Object.values(accounts)[0].id is undefined', () => { + const badState = { + engine: { + backgroundState: { + AccountsController: { + internalAccounts: { + accounts: { + [expectedUuid]: { ...internalAccount1, id: undefined }, + }, + selectedAccount: undefined, + }, + }, + }, + }, + }; + + migration(badState); + expect(mockedCaptureException.mock.calls[0][0].message).toBe( + 'Migration 52: selectedAccount will be undefined because Object.values(accounts)[0].id is undefined.', + ); + }); }); diff --git a/app/store/migrations/052.ts b/app/store/migrations/052.ts index 0b9a81f795ef..dc3cc8d03f99 100644 --- a/app/store/migrations/052.ts +++ b/app/store/migrations/052.ts @@ -85,10 +85,18 @@ export const migration52 = (state: unknown, migrationNumber: number) => { accountsControllerState.internalAccounts; // Set selectedAccount by default if selectedAccount is undefined or account no longer exists for the selectedAccount + // console.log('WOASHHH3', accounts, selectedAccount); if ( Object.values(accounts).length > 0 && (!selectedAccount || (selectedAccount && !accounts[selectedAccount])) ) { + if (Object.values(accounts)[0].id === undefined) { + captureException( + new Error( + `Migration 52: selectedAccount will be undefined because Object.values(accounts)[0].id is undefined.`, + ), + ); + } accountsControllerState.internalAccounts.selectedAccount = Object.values(accounts)[0].id; } diff --git a/app/store/migrations/059.test.ts b/app/store/migrations/059.test.ts index 11161ff03885..a5af682f4afd 100644 --- a/app/store/migrations/059.test.ts +++ b/app/store/migrations/059.test.ts @@ -131,6 +131,29 @@ describe('Migration #59 - Fix crasher related to undefined selectedAccount on Ac expect(migratedState).toStrictEqual(expectedState); }); + it('should capture exception if attempting to set selectedAccount when first account id is undefined', async () => { + const oldState = { + engine: { + backgroundState: { + AccountsController: { + internalAccounts: { + accounts: { + [expectedUuid]: { ...internalAccount1, id: undefined }, + [expectedUuid2]: internalAccount2, + }, + selectedAccount: undefined, + }, + }, + }, + }, + }; + + await migrate(oldState); + expect(mockedCaptureException.mock.calls[0][0].message).toBe( + `Migration 59: selectedAccount will be undefined because firstAccount.id is undefined.`, + ); + }); + it('should leave selectedAccount alone if it is not undefined', async () => { const oldState = { engine: { diff --git a/app/store/migrations/059.ts b/app/store/migrations/059.ts index 5415d882ddee..8daef82e0f53 100644 --- a/app/store/migrations/059.ts +++ b/app/store/migrations/059.ts @@ -1,6 +1,7 @@ import { hasProperty, isObject } from '@metamask/utils'; import { ensureValidState } from './util'; import Logger from '../../util/Logger'; +import { captureException } from '@sentry/react-native'; /** * Migration for checking if selectedAccount on AccountsController is undefined @@ -49,6 +50,13 @@ export default function migrate(state: unknown) { Logger.log( `Migration 59: Setting selectedAccount to the id of the first account.`, ); + if (firstAccount.id === undefined) { + captureException( + new Error( + `Migration 59: selectedAccount will be undefined because firstAccount.id is undefined.`, + ), + ); + } state.engine.backgroundState.AccountsController.internalAccounts.selectedAccount = firstAccount.id; } diff --git a/app/store/validateMigration/accountsController.test.ts b/app/store/validateMigration/accountsController.test.ts index 722ff4abd05c..e43eb57a5c66 100644 --- a/app/store/validateMigration/accountsController.test.ts +++ b/app/store/validateMigration/accountsController.test.ts @@ -71,7 +71,7 @@ describe('validateAccountsController', () => { createMockState({ internalAccounts: { accounts: {}, - selectedAccount: '', + selectedAccount: 'dummy-account', }, }) as RootState, ); @@ -107,7 +107,38 @@ describe('validateAccountsController', () => { }) as RootState, ); expect(errors).toEqual([ - `${LOG_TAG}: AccountsController selectedAccount is missing or empty.`, + `${LOG_TAG}: AccountsController selectedAccount is missing or empty. selectedAccount: `, + ]); + }); + + it('returns error if selectedAccount is undefined', () => { + const errors = validateAccountsController( + createMockState({ + internalAccounts: { + accounts: { + 'account-1': { + id: 'account-1', + address: '0x123', + type: 'eip155:eoa', + scopes: [EthScope.Eoa], + options: {} as Record<string, Json>, + methods: [], + metadata: { + name: 'Account 1', + lastSelected: 0, + importTime: Date.now(), + keyring: { + type: 'HD Key Tree', + }, + }, + }, + }, + selectedAccount: undefined as unknown as string, + }, + }) as RootState, + ); + expect(errors).toEqual([ + `${LOG_TAG}: AccountsController selectedAccount is missing or empty. selectedAccount: undefined`, ]); }); diff --git a/app/store/validateMigration/accountsController.ts b/app/store/validateMigration/accountsController.ts index 20d608fb8efc..b86dd1b38c27 100644 --- a/app/store/validateMigration/accountsController.ts +++ b/app/store/validateMigration/accountsController.ts @@ -34,23 +34,22 @@ export const validateAccountsController: ValidationCheck = (rootState) => { const { selectedAccount, accounts } = accountsState.internalAccounts; // 2. Confirm there is at least one account - if (!accounts || Object.keys(accounts).length === 0) { + const hasAccounts = accounts && Object.keys(accounts).length > 0; + if (!hasAccounts) { errors.push( `${LOG_TAG}: AccountsController No accounts found in internalAccounts.accounts.`, ); - return errors; } // 3. Check that selectedAccount is non-empty - if (!selectedAccount) { + if (selectedAccount === undefined || selectedAccount === '') { errors.push( - `${LOG_TAG}: AccountsController selectedAccount is missing or empty.`, + `${LOG_TAG}: AccountsController selectedAccount is missing or empty. selectedAccount: ${selectedAccount}`, ); - return errors; } // 4. Confirm the selectedAccount ID exists in internalAccounts.accounts - if (!accounts[selectedAccount]) { + if (hasAccounts && selectedAccount && !accounts[selectedAccount]) { errors.push( `${LOG_TAG}: AccountsController The selectedAccount '${selectedAccount}' does not exist in the accounts record.`, ); From 2f9c8033c571ba7cf910153314d43ba5c84afec6 Mon Sep 17 00:00:00 2001 From: metamaskbot <metamaskbot@users.noreply.github.com> Date: Fri, 25 Apr 2025 20:56:20 +0000 Subject: [PATCH 169/473] Bump version number to 1732 --- android/app/build.gradle | 2 +- bitrise.yml | 4 ++-- ios/MetaMask.xcodeproj/project.pbxproj | 12 ++++++------ 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/android/app/build.gradle b/android/app/build.gradle index 8257e4049742..9cc8f295ff18 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -179,7 +179,7 @@ android { minSdkVersion rootProject.ext.minSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion versionName "7.45.0" - versionCode 1728 + versionCode 1732 testBuildType System.getProperty('testBuildType', 'debug') missingDimensionStrategy 'react-native-camera', 'general' testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" diff --git a/bitrise.yml b/bitrise.yml index f1956f390734..965871d68677 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -2235,13 +2235,13 @@ app: VERSION_NAME: 7.45.0 - opts: is_expand: false - VERSION_NUMBER: 1728 + VERSION_NUMBER: 1732 - opts: is_expand: false FLASK_VERSION_NAME: 7.45.0 - opts: is_expand: false - FLASK_VERSION_NUMBER: 1728 + FLASK_VERSION_NUMBER: 1732 - opts: is_expand: false ANDROID_APK_LINK: '' diff --git a/ios/MetaMask.xcodeproj/project.pbxproj b/ios/MetaMask.xcodeproj/project.pbxproj index 934ebf9a6501..2481f15df218 100644 --- a/ios/MetaMask.xcodeproj/project.pbxproj +++ b/ios/MetaMask.xcodeproj/project.pbxproj @@ -1261,7 +1261,7 @@ CODE_SIGN_IDENTITY = "Apple Development"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1728; + CURRENT_PROJECT_VERSION = 1732; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = 48XVW22RCG; @@ -1330,7 +1330,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMask.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1728; + CURRENT_PROJECT_VERSION = 1732; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 48XVW22RCG; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 48XVW22RCG; @@ -1395,7 +1395,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMaskDebug.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1728; + CURRENT_PROJECT_VERSION = 1732; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = 48XVW22RCG; @@ -1461,7 +1461,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMask.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1728; + CURRENT_PROJECT_VERSION = 1732; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 48XVW22RCG; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 48XVW22RCG; @@ -1620,7 +1620,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMaskDebug.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1728; + CURRENT_PROJECT_VERSION = 1732; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = 48XVW22RCG; @@ -1689,7 +1689,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMask.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1728; + CURRENT_PROJECT_VERSION = 1732; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 48XVW22RCG; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 48XVW22RCG; From cc6766a18a344ecb73528a7b7894bbaaea2cdaa4 Mon Sep 17 00:00:00 2001 From: "runway-github[bot]" <73448015+runway-github[bot]@users.noreply.github.com> Date: Mon, 28 Apr 2025 09:24:07 -0600 Subject: [PATCH 170/473] chore(runway): cherry-pick fix: cp-7.46.0 fix solana token list render (#14919) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - fix: cp-7.46.0 fix solana token list render (#14898) ## **Description** PR to fix token list render after account creation ## **Related issues** Fixes: ## **Manual testing steps** 1. Create a first solana account 2. Create a second account 3. You should see your tokens without having to switch accounts ## **Screenshots/Recordings** <!-- If applicable, add screenshots and/or recordings to visualize the before and after of your change. --> ### **Before** <!-- [screenshots/recordings] --> https://github.com/user-attachments/assets/68fd46eb-7536-48a3-8a41-0b5455a1acf6 ### **After** <!-- [screenshots/recordings] --> https://github.com/user-attachments/assets/7274db03-2dd2-4667-9b36-301943ca1200 ## **Pre-merge author checklist** - [ ] I’ve followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile Coding Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [ ] I've completed the PR template to the best of my ability - [ ] I’ve included tests if applicable - [ ] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [ ] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. ## **Pre-merge reviewer checklist** - [ ] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [ ] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots. [8f22725](https://github.com/MetaMask/metamask-mobile/commit/8f227252f2c575cc72157b107b212fb5fa5f70e7) Co-authored-by: sahar-fehri <sahar.fehri@consensys.net> --- .../UI/Bridge/hooks/useLatestBalance/index.ts | 15 ++- app/components/UI/Tokens/index.tsx | 12 ++- app/selectors/multichain/multichain.test.ts | 96 ------------------- app/selectors/multichain/multichain.ts | 9 -- 4 files changed, 21 insertions(+), 111 deletions(-) diff --git a/app/components/UI/Bridge/hooks/useLatestBalance/index.ts b/app/components/UI/Bridge/hooks/useLatestBalance/index.ts index 096707ca0ab6..93e7d0f64107 100644 --- a/app/components/UI/Bridge/hooks/useLatestBalance/index.ts +++ b/app/components/UI/Bridge/hooks/useLatestBalance/index.ts @@ -4,13 +4,19 @@ import { abiERC20 } from '@metamask/metamask-eth-abis'; import { Web3Provider } from '@ethersproject/providers'; import { formatUnits, getAddress, parseUnits } from 'ethers/lib/utils'; import { useSelector } from 'react-redux'; -import { selectSelectedInternalAccountFormattedAddress } from '../../../../../selectors/accountsController'; +import { + ///: BEGIN:ONLY_INCLUDE_IF(keyring-snaps) + selectSelectedInternalAccount, + ///: END:ONLY_INCLUDE_IF + selectSelectedInternalAccountFormattedAddress, +} from '../../../../../selectors/accountsController'; import { getProviderByChainId } from '../../../../../util/notifications/methods/common'; import { BigNumber, constants, Contract } from 'ethers'; import usePrevious from '../../../../hooks/usePrevious'; ///: BEGIN:ONLY_INCLUDE_IF(keyring-snaps) import { isSolanaChainId } from '@metamask/bridge-controller'; -import { selectMultichainTokenList } from '../../../../../selectors/multichain/multichain'; +import { selectMultichainTokenListForAccountId } from '../../../../../selectors/multichain/multichain'; +import { RootState } from '../../../../../reducers'; ///: END:ONLY_INCLUDE_IF export async function fetchAtomicTokenBalance( @@ -69,7 +75,10 @@ export const useLatestBalance = ( ///: BEGIN:ONLY_INCLUDE_IF(keyring-snaps) // Returns native SOL and SPL tokens, contains balance and fiat values // Balance and fiat values are not truncated - const nonEvmTokens = useSelector(selectMultichainTokenList); + const selectedAccount = useSelector(selectSelectedInternalAccount); + const nonEvmTokens = useSelector((state: RootState) => + selectMultichainTokenListForAccountId(state, selectedAccount?.id), + ); ///: END:ONLY_INCLUDE_IF const chainId = token.chainId; diff --git a/app/components/UI/Tokens/index.tsx b/app/components/UI/Tokens/index.tsx index 07df7e63fdd4..d59f0aad05e1 100644 --- a/app/components/UI/Tokens/index.tsx +++ b/app/components/UI/Tokens/index.tsx @@ -35,7 +35,7 @@ import { selectEvmTokenFiatBalances, selectEvmTokens, ///: BEGIN:ONLY_INCLUDE_IF(keyring-snaps) - selectMultichainTokenList, + selectMultichainTokenListForAccountId, ///: END:ONLY_INCLUDE_IF } from '../../../selectors/multichain'; import { TraceName, endTrace, trace } from '../../../util/trace'; @@ -45,6 +45,9 @@ import { selectIsEvmNetworkSelected } from '../../../selectors/multichainNetwork import { AssetPollingProvider } from '../../hooks/AssetPolling/AssetPollingProvider'; import { TokenListControlBar } from './TokenListControlBar'; import { selectSelectedInternalAccount } from '../../../selectors/accountsController'; +///: BEGIN:ONLY_INCLUDE_IF(keyring-snaps) +import { RootState } from '../../../reducers'; +///: END:ONLY_INCLUDE_IF interface TokenListNavigationParamList { AddAsset: { assetType: string }; @@ -74,12 +77,15 @@ const Tokens = memo(() => { const [tokenToRemove, setTokenToRemove] = useState<TokenI>(); const [refreshing, setRefreshing] = useState(false); const [isAddTokenEnabled, setIsAddTokenEnabled] = useState(true); + const selectedAccount = useSelector(selectSelectedInternalAccount); // non-evm ///: BEGIN:ONLY_INCLUDE_IF(keyring-snaps) - const nonEvmTokens = useSelector(selectMultichainTokenList); + const nonEvmTokens = useSelector((state: RootState) => + selectMultichainTokenListForAccountId(state, selectedAccount?.id), +); ///: END:ONLY_INCLUDE_IF - const selectedAccount = useSelector(selectSelectedInternalAccount); + const tokenListData = isEvmSelected ? evmTokens : nonEvmTokens; diff --git a/app/selectors/multichain/multichain.test.ts b/app/selectors/multichain/multichain.test.ts index 1d799a980fee..bd27f0b9b882 100644 --- a/app/selectors/multichain/multichain.test.ts +++ b/app/selectors/multichain/multichain.test.ts @@ -10,7 +10,6 @@ import { selectMultichainBalances, MULTICHAIN_NETWORK_TO_ASSET_TYPES, selectMultichainTransactions, - selectMultichainTokenList, selectSelectedAccountMultichainNetworkAggregatedBalance, selectSolanaAccountTransactions, selectMultichainHistoricalPrices, @@ -588,101 +587,6 @@ describe('MultichainNonEvm Selectors', () => { }); }); - describe('selectMultichainTokenList', () => { - it('returns a list of tokens', () => { - const selectedInternalAccountId = 'ae247df6-3911-47f7-9e36-28e6a7d96078'; - const state = getNonEvmState(); - const mockBalances = { - [selectedInternalAccountId]: { - [MultichainNativeAssets.Bitcoin]: { amount: '10', unit: 'BTC' }, - }, - }; - const mockAssets = { - [selectedInternalAccountId]: [MultichainNativeAssets.Bitcoin], - }; - const mockAssetsMetadata = { - [MultichainNativeAssets.Bitcoin]: { - name: 'Bitcoin', - symbol: 'BTC', - units: [{ name: 'Bitcoin', symbol: 'BTC', decimals: 8 }], - iconUrl: 'https://example.com/btc.png', - fungible: true as const, - }, - }; - const mockAssetsRates = { - [MultichainNativeAssets.Bitcoin]: { rate: '2000', conversionTime: 0 }, - }; - state.engine.backgroundState.MultichainBalancesController.balances = - mockBalances; - state.engine.backgroundState.MultichainAssetsController.accountsAssets = - mockAssets; - state.engine.backgroundState.MultichainAssetsController.assetsMetadata = - mockAssetsMetadata; - state.engine.backgroundState.MultichainAssetsRatesController.conversionRates = - mockAssetsRates; - - const tokenList = selectMultichainTokenList(state); - - expect(tokenList.length).toEqual(1); - expect(tokenList[0].name).toEqual('Bitcoin'); - expect(tokenList[0].symbol).toEqual('BTC'); - expect(tokenList[0].balance).toEqual('10'); - }); - - it('filters out tokens not matching nonEVM network chain ID', () => { - const selectedInternalAccountId = 'ae247df6-3911-47f7-9e36-28e6a7d96078'; - const state = getNonEvmState(); - - const nonMatchingAssetId = - 'eip155:1/erc20:0x6b175474e89094c44da98b954eedeac495271d0f'; // Ethereum Mainnet - - state.engine.backgroundState.MultichainBalancesController.balances = { - [selectedInternalAccountId]: { - [nonMatchingAssetId]: { amount: '5', unit: 'DAI' }, - }, - }; - state.engine.backgroundState.MultichainAssetsController.accountsAssets = { - [selectedInternalAccountId]: [nonMatchingAssetId], - }; - - const tokenList = selectMultichainTokenList(state); - expect(tokenList).toEqual([]); - }); - - it('returns an empty array if selected account is undefined', () => { - const state = getNonEvmState(); - state.engine.backgroundState.AccountsController.internalAccounts.selectedAccount = - 'foo'; - - const tokenList = selectMultichainTokenList(state); - - expect(tokenList).toEqual([]); - }); - - it('uses fallback metadata when asset metadata is missing', () => { - const selectedInternalAccountId = 'ae247df6-3911-47f7-9e36-28e6a7d96078'; - const state = getNonEvmState(); - - const btcCaip = 'bip122:000000000019d6689c085ae165831e93/slip44:0'; - - state.engine.backgroundState.MultichainBalancesController.balances = { - [selectedInternalAccountId]: { - [btcCaip]: { amount: '1', unit: 'BTC' }, - }, - }; - state.engine.backgroundState.MultichainAssetsController.accountsAssets = { - [selectedInternalAccountId]: [btcCaip], - }; - state.engine.backgroundState.MultichainAssetsController.assetsMetadata = - {}; // fallback will be used - - const tokenList = selectMultichainTokenList(state); - expect(tokenList[0].name).toBe('BTC'); - expect(tokenList[0].symbol).toBe('BTC'); - expect(tokenList[0].balance).toBe('1'); - }); - }); - describe('selectMultichainNetworkAggregatedBalance', () => { beforeEach(() => { jest.clearAllMocks(); diff --git a/app/selectors/multichain/multichain.ts b/app/selectors/multichain/multichain.ts index 3e91edb1e357..c61f99a18894 100644 --- a/app/selectors/multichain/multichain.ts +++ b/app/selectors/multichain/multichain.ts @@ -283,15 +283,6 @@ export const selectMultichainTokenListForAccountId = createDeepEqualSelector( return tokens; }, ); - -export const selectMultichainTokenList = createDeepEqualSelector( - (state: RootState) => state, - selectSelectedInternalAccount, - (state, selectedAccount) => { - return selectMultichainTokenListForAccountId(state, selectedAccount?.id); - }, -); - export interface MultichainNetworkAggregatedBalance { totalNativeTokenBalance: Balance | undefined; totalBalanceFiat: number | undefined; From 6a9d7c4239ce92850d93d7feb208fad0cf9a7b43 Mon Sep 17 00:00:00 2001 From: "runway-github[bot]" <73448015+runway-github[bot]@users.noreply.github.com> Date: Mon, 28 Apr 2025 09:25:11 -0600 Subject: [PATCH 171/473] chore(runway): cherry-pick feat(ramps): adds performance tracing for initial ramp experience load (#14903) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - feat(ramps): adds performance tracing for initial ramp experience load (#14810) <!-- Please submit this PR as a draft initially. Do not mark it as "Ready for review" until the template has been completely filled out, and PR status checks have passed at least once. --> ## **Description** <!-- Write a short description of the changes included in this pull request, also include relevant motivation and context. Have in mind the following questions: 1. What is the reason for the change? 2. What is the improvement/solution? --> This PR adds performance tracing for the buy and sell experiences. Trace starts when user clicks the buy or sell button, and ends when the build quote page is displayed. This requires all ramps data to be available such as the regions, payment methods, fiats and cryptoCurrencies. ## **Related issues** Fixes: ## **Manual testing steps** 1. Go to this page... 2. 3. ## **Screenshots/Recordings** <!-- If applicable, add screenshots and/or recordings to visualize the before and after of your change. --> ### **Before** <!-- [screenshots/recordings] --> ### **After** https://github.com/user-attachments/assets/c42c2fda-0674-439d-bf07-ca64daaba740 <!-- [screenshots/recordings] --> ## **Pre-merge author checklist** - [ ] I’ve followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile Coding Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [ ] I've completed the PR template to the best of my ability - [ ] I’ve included tests if applicable - [ ] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [ ] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. ## **Pre-merge reviewer checklist** - [ ] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [ ] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots. [667acfc](https://github.com/MetaMask/metamask-mobile/commit/667acfcea5a67fd1b44bc3e8044481db488ba2e9) Co-authored-by: George Weiler <georgejweiler@gmail.com> --- .../Ramp/Views/BuildQuote/BuildQuote.test.tsx | 40 ++++++++++++++++++- .../UI/Ramp/Views/BuildQuote/BuildQuote.tsx | 18 +++++++++ .../WalletActions/WalletActions.test.tsx | 39 +++++++++++++++++- .../Views/WalletActions/WalletActions.tsx | 30 +++++++++++--- app/util/trace.ts | 1 + 5 files changed, 120 insertions(+), 8 deletions(-) diff --git a/app/components/UI/Ramp/Views/BuildQuote/BuildQuote.test.tsx b/app/components/UI/Ramp/Views/BuildQuote/BuildQuote.test.tsx index 360158717180..6fe254477f38 100644 --- a/app/components/UI/Ramp/Views/BuildQuote/BuildQuote.test.tsx +++ b/app/components/UI/Ramp/Views/BuildQuote/BuildQuote.test.tsx @@ -25,6 +25,7 @@ import { toTokenMinimalUnit } from '../../../../../util/number'; import { RampType } from '../../../../../reducers/fiatOrders/types'; import { NATIVE_ADDRESS } from '../../../../../constants/on-ramp'; import { MOCK_ACCOUNTS_CONTROLLER_STATE } from '../../../../../util/test/accountsControllerTestUtils'; +import { endTrace, TraceName } from '../../../../../util/trace'; const getByRoleButton = (name?: string | RegExp) => screen.getByRole('button', { name }); @@ -262,6 +263,13 @@ jest.mock('../../../../../util/navigation/navUtils', () => ({ jest.mock('../../hooks/useAnalytics', () => () => mockTrackEvent); +jest.mock('../../../../../util/trace', () => ({ + endTrace: jest.fn(), + TraceName: { + LoadRampExperience: 'Load Ramp Experience', + }, +})); + describe('BuildQuote View', () => { afterEach(() => { mockNavigate.mockClear(); @@ -271,6 +279,7 @@ describe('BuildQuote View', () => { mockPop.mockClear(); mockTrackEvent.mockClear(); (mockUseRampSDKInitialValues.setSelectedRegion as jest.Mock).mockClear(); + jest.clearAllMocks(); }); beforeEach(() => { @@ -359,14 +368,14 @@ describe('BuildQuote View', () => { it('calls setOptions when rendering', async () => { render(BuildQuote); - expect(mockSetOptions).toBeCalledTimes(1); + expect(mockSetOptions).toHaveBeenCalled(); mockSetOptions.mockReset(); mockUseRampSDKValues.isBuy = false; mockUseRampSDKValues.isSell = true; render(BuildQuote); - expect(mockSetOptions).toBeCalledTimes(1); + expect(mockSetOptions).toHaveBeenCalled(); }); it('navigates and tracks event on cancel button press', async () => { @@ -393,6 +402,33 @@ describe('BuildQuote View', () => { }); }); + it('calls endTrace when the conditions are met', () => { + render(BuildQuote); + expect(endTrace).toHaveBeenCalledWith({ + name: TraceName.LoadRampExperience, + }); + }); + + it('does not call endTrace if conditions are not met', () => { + mockUseRampSDKValues = { + ...mockUseRampSDKInitialValues, + sdkError: new Error('sdkError'), + }; + render(BuildQuote); + expect(endTrace).not.toHaveBeenCalled(); + }); + + it('only calls endTrace once', () => { + render(BuildQuote); + act(() => { + mockUseRegionsValues = { + ...mockUseRegionsInitialValues, + isFetching: true, + }; + }); + expect(endTrace).toHaveBeenCalledTimes(1); + }); + describe('Regions data', () => { it('renders the loading page when regions are loading', async () => { mockUseRegionsValues = { diff --git a/app/components/UI/Ramp/Views/BuildQuote/BuildQuote.tsx b/app/components/UI/Ramp/Views/BuildQuote/BuildQuote.tsx index e1e44e575b10..a84660ee6d64 100644 --- a/app/components/UI/Ramp/Views/BuildQuote/BuildQuote.tsx +++ b/app/components/UI/Ramp/Views/BuildQuote/BuildQuote.tsx @@ -83,6 +83,7 @@ import Text, { } from '../../../../../component-library/components/Texts/Text'; import ListItemColumnEnd from '../../components/ListItemColumnEnd'; import { BuildQuoteSelectors } from '../../../../../../e2e/selectors/Ramps/BuildQuote.selectors'; +import { endTrace, TraceName } from '../../../../../util/trace'; // TODO: Replace "any" with type // eslint-disable-next-line @typescript-eslint/no-explicit-any @@ -635,6 +636,23 @@ const BuildQuote = () => { errorCryptoCurrencies, ]); + const [shouldEndTrace, setShouldEndTrace] = useState(true); + useEffect(() => { + if ( + shouldEndTrace && + !sdkError && + !error && + !isFetching && + cryptoCurrencies && + cryptoCurrencies.length > 0 + ) { + endTrace({ + name: TraceName.LoadRampExperience, + }); + setShouldEndTrace(false); + } + }, [cryptoCurrencies, error, isFetching, rampType, sdkError, shouldEndTrace]); + if (sdkError) { return ( <ScreenLayout> diff --git a/app/components/Views/WalletActions/WalletActions.test.tsx b/app/components/Views/WalletActions/WalletActions.test.tsx index 010b23246c08..35bb3255917d 100644 --- a/app/components/Views/WalletActions/WalletActions.test.tsx +++ b/app/components/Views/WalletActions/WalletActions.test.tsx @@ -30,6 +30,8 @@ import { import Engine from '../../../core/Engine'; import { isStablecoinLendingFeatureEnabled } from '../../UI/Stake/constants'; import { sendMultichainTransaction } from '../../../core/SnapKeyring/utils/sendMultichainTransaction'; +import { trace, TraceName } from '../../../util/trace'; +import { RampType } from '../../../reducers/fiatOrders/types'; jest.mock('../../../core/SnapKeyring/utils/sendMultichainTransaction', () => ({ sendMultichainTransaction: jest.fn(), @@ -56,7 +58,9 @@ jest.mock('@metamask/bridge-controller', () => { ...actual, getNativeAssetForChainId: jest.fn((chainId) => { if (chainId === 'solana:mainnet') { - return actual.getNativeAssetForChainId('solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp'); + return actual.getNativeAssetForChainId( + 'solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp', + ); } return actual.getNativeAssetForChainId(chainId); }), @@ -203,6 +207,13 @@ jest.mock('react-native-safe-area-context', () => { }; }); +jest.mock('../../../util/trace', () => ({ + trace: jest.fn(), + TraceName: { + LoadRampExperience: 'LoadRampExperience', + }, +})); + describe('WalletActions', () => { afterEach(() => { mockNavigate.mockClear(); @@ -314,6 +325,32 @@ describe('WalletActions', () => { getByTestId(WalletActionsBottomSheetSelectorsIDs.BUY_BUTTON), ); expect(mockNavigate).toHaveBeenCalled(); + expect(trace).toHaveBeenCalledWith({ + name: TraceName.LoadRampExperience, + tags: { + rampType: RampType.BUY, + }, + }); + }); + + it('should call the onSell function when the Sell button is pressed', () => { + jest + .requireMock('../../UI/Ramp/hooks/useRampNetwork') + .default.mockReturnValue([true]); + const { getByTestId } = renderWithProvider(<WalletActions />, { + state: mockInitialState, + }); + + fireEvent.press( + getByTestId(WalletActionsBottomSheetSelectorsIDs.SELL_BUTTON), + ); + expect(mockNavigate).toHaveBeenCalled(); + expect(trace).toHaveBeenCalledWith({ + name: TraceName.LoadRampExperience, + tags: { + rampType: RampType.SELL, + }, + }); }); it('should call the onSend function when the Send button is pressed', () => { diff --git a/app/components/Views/WalletActions/WalletActions.tsx b/app/components/Views/WalletActions/WalletActions.tsx index 0311ba49b928..48caa4a81530 100644 --- a/app/components/Views/WalletActions/WalletActions.tsx +++ b/app/components/Views/WalletActions/WalletActions.tsx @@ -36,6 +36,7 @@ import { createBuyNavigationDetails, createSellNavigationDetails, } from '../../UI/Ramp/routes/utils'; +import { trace, TraceName } from '../../../util/trace'; // eslint-disable-next-line no-duplicate-imports, import/no-duplicates import { selectCanSignTransactions } from '../../../selectors/accountsController'; import { WalletActionType } from '../../UI/WalletAction/WalletAction.types'; @@ -49,7 +50,11 @@ import { isMultichainWalletSnap } from '../../../core/SnapKeyring/utils/snaps'; import { selectSelectedInternalAccount } from '../../../selectors/accountsController'; import { sendMultichainTransaction } from '../../../core/SnapKeyring/utils/sendMultichainTransaction'; ///: END:ONLY_INCLUDE_IF -import { useSwapBridgeNavigation, SwapBridgeNavigationLocation } from '../../UI/Bridge/hooks/useSwapBridgeNavigation'; +import { + useSwapBridgeNavigation, + SwapBridgeNavigationLocation, +} from '../../UI/Bridge/hooks/useSwapBridgeNavigation'; +import { RampType } from '../../../reducers/fiatOrders/types'; const WalletActions = () => { const { styles } = useStyles(styleSheet, {}); @@ -67,10 +72,11 @@ const WalletActions = () => { ///: END:ONLY_INCLUDE_IF const canSignTransactions = useSelector(selectCanSignTransactions); - const { goToBridge: goToBridgeBase, goToSwaps: goToSwapsBase } = useSwapBridgeNavigation({ - location: SwapBridgeNavigationLocation.TabBar, - sourcePage: 'MainView', - }); + const { goToBridge: goToBridgeBase, goToSwaps: goToSwapsBase } = + useSwapBridgeNavigation({ + location: SwapBridgeNavigationLocation.TabBar, + sourcePage: 'MainView', + }); const closeBottomSheetAndNavigate = useCallback( (navigateFunc: () => void) => { @@ -142,6 +148,13 @@ const WalletActions = () => { }) .build(), ); + + trace({ + name: TraceName.LoadRampExperience, + tags: { + rampType: RampType.BUY, + }, + }); }, [ closeBottomSheetAndNavigate, navigate, @@ -164,6 +177,13 @@ const WalletActions = () => { }) .build(), ); + + trace({ + name: TraceName.LoadRampExperience, + tags: { + rampType: RampType.SELL, + }, + }); }, [ closeBottomSheetAndNavigate, navigate, diff --git a/app/util/trace.ts b/app/util/trace.ts index 3624824fadd8..14d8b83a20fe 100644 --- a/app/util/trace.ts +++ b/app/util/trace.ts @@ -47,6 +47,7 @@ export enum TraceName { AssetDetails = 'Asset Details', ImportNfts = 'Import Nfts', ImportTokens = 'Import Tokens', + LoadRampExperience = 'Load Ramp Experience', } export enum TraceOperation { From 395623ef14ac19e32f71bd6aa7e4108298bebd70 Mon Sep 17 00:00:00 2001 From: "runway-github[bot]" <73448015+runway-github[bot]@users.noreply.github.com> Date: Mon, 28 Apr 2025 09:26:05 -0600 Subject: [PATCH 172/473] chore(runway): cherry-pick feat(bridge): cp-7.46.0 implement bridge controller metrics (#14875) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - feat(bridge): cp-7.46.0 implement bridge controller metrics (#14846) <!-- Please submit this PR as a draft initially. Do not mark it as "Ready for review" until the template has been completely filled out, and PR status checks have passed at least once. --> ## **Description** Updates the bridge controller initialization to enable controller-side metrics for swap/bridge. <!-- Write a short description of the changes included in this pull request, also include relevant motivation and context. Have in mind the following questions: 1. What is the reason for the change? 2. What is the improvement/solution? --> ## **Related issues** Fixes: [MMS-1894](https://consensyssoftware.atlassian.net/browse/MMS-1894) ## **Manual testing steps** 1. Go to bridge 2. See controller-side metrics events such as "Unified SwapBridge Input Changed" firing ## **Screenshots/Recordings** <!-- If applicable, add screenshots and/or recordings to visualize the before and after of your change. --> ### **Before** <!-- [screenshots/recordings] --> ### **After** <!-- [screenshots/recordings] --> ## **Pre-merge author checklist** - [x] I’ve followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile Coding Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [x] I've completed the PR template to the best of my ability - [x] I’ve included tests if applicable - [x] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [x] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. ## **Pre-merge reviewer checklist** - [ ] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [ ] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots. [MMS-1894]: https://consensyssoftware.atlassian.net/browse/MMS-1894?atlOrigin=eyJpIjoiNWRkNTljNzYxNjVmNDY3MDlhMDU5Y2ZhYzA5YTRkZjUiLCJwIjoiZ2l0aHViLWNvbS1KU1cifQ --------- Co-authored-by: Amitabh Aggarwal <aggarwal.amitabh@gmail.com> [15e0f26](https://github.com/MetaMask/metamask-mobile/commit/15e0f2664157237ad014e6cfc205ba7c6ee9b7a4) [MMS-1894]: https://consensyssoftware.atlassian.net/browse/MMS-1894?atlOrigin=eyJpIjoiNWRkNTljNzYxNjVmNDY3MDlhMDU5Y2ZhYzA5YTRkZjUiLCJwIjoiZ2l0aHViLWNvbS1KU1cifQ [MMS-1894]: https://consensyssoftware.atlassian.net/browse/MMS-1894?atlOrigin=eyJpIjoiNWRkNTljNzYxNjVmNDY3MDlhMDU5Y2ZhYzA5YTRkZjUiLCJwIjoiZ2l0aHViLWNvbS1KU1cifQ Co-authored-by: Bryan Fullam <bryan.fullam@consensys.net> Co-authored-by: Amitabh Aggarwal <aggarwal.amitabh@gmail.com> --- .../Views/WalletActions/WalletActions.tsx | 19 +--------- app/core/Engine/Engine.ts | 38 +++++++++++-------- 2 files changed, 24 insertions(+), 33 deletions(-) diff --git a/app/components/Views/WalletActions/WalletActions.tsx b/app/components/Views/WalletActions/WalletActions.tsx index 48caa4a81530..c4a16838003e 100644 --- a/app/components/Views/WalletActions/WalletActions.tsx +++ b/app/components/Views/WalletActions/WalletActions.tsx @@ -281,24 +281,7 @@ const WalletActions = () => { closeBottomSheetAndNavigate(() => { goToBridgeBase(); }); - - trackEvent( - createEventBuilder(MetaMetricsEvents.BRIDGE_BUTTON_CLICKED) - .addProperties({ - text: 'Bridge', - tokenSymbol: '', - location: 'TabBar', - chain_id: getDecimalChainId(chainId), - }) - .build(), - ); - }, [ - closeBottomSheetAndNavigate, - goToBridgeBase, - trackEvent, - chainId, - createEventBuilder, - ]); + }, [closeBottomSheetAndNavigate, goToBridgeBase]); const sendIconStyle = useMemo( () => ({ diff --git a/app/core/Engine/Engine.ts b/app/core/Engine/Engine.ts index 52e77416b949..460eea03a75b 100644 --- a/app/core/Engine/Engine.ts +++ b/app/core/Engine/Engine.ts @@ -1029,19 +1029,18 @@ export class Engine { getMetaMetricsProps: () => Promise.resolve({}), // Return MetaMetrics props once we enable HW wallets for smart transactions. }); - const tokenSearchDiscoveryDataController = new TokenSearchDiscoveryDataController({ - tokenPricesService: codefiTokenApiV2, - swapsSupportedChainIds, - fetchSwapsTokensThresholdMs: AppConstants.SWAPS.CACHE_TOKENS_THRESHOLD, - fetchTokens: swapsUtils.fetchTokens, - messenger: this.controllerMessenger.getRestricted({ - name: 'TokenSearchDiscoveryDataController', - allowedActions: [ - 'CurrencyRateController:getState' - ], - allowedEvents: [], - }), - }); + const tokenSearchDiscoveryDataController = + new TokenSearchDiscoveryDataController({ + tokenPricesService: codefiTokenApiV2, + swapsSupportedChainIds, + fetchSwapsTokensThresholdMs: AppConstants.SWAPS.CACHE_TOKENS_THRESHOLD, + fetchTokens: swapsUtils.fetchTokens, + messenger: this.controllerMessenger.getRestricted({ + name: 'TokenSearchDiscoveryDataController', + allowedActions: ['CurrencyRateController:getState'], + allowedEvents: [], + }), + }); /* bridge controller Initialization */ const bridgeController = new BridgeController({ @@ -1077,8 +1076,16 @@ export class Engine { config: { customBridgeApiBaseUrl: BRIDGE_DEV_API_BASE_URL, }, - trackMetaMetricsFn: () => { - //TODO: Implement trackMetaMetricsFn + trackMetaMetricsFn: (event, properties) => { + const metricsEvent = MetricsEventBuilder.createEventBuilder({ + // category property here maps to event name + category: event, + }) + .addProperties({ + ...(properties ?? {}), + }) + .build(); + MetaMetrics.getInstance().trackEvent(metricsEvent); }, }); @@ -1092,6 +1099,7 @@ export class Engine { 'NetworkController:getState', 'TokensController:addDetectedTokens', 'BridgeController:getBridgeERC20Allowance', + 'BridgeController:trackUnifiedSwapBridgeEvent', 'GasFeeController:getState', 'AccountsController:getAccountByAddress', 'SnapController:handleRequest', From 3b55130ea746478c726299f7eb1087f194af43b4 Mon Sep 17 00:00:00 2001 From: "runway-github[bot]" <73448015+runway-github[bot]@users.noreply.github.com> Date: Mon, 28 Apr 2025 09:44:58 -0600 Subject: [PATCH 173/473] chore(runway): cherry-pick feat(ramps): adds sentry tracing to ramp quote load (#14936) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - feat(ramps): adds sentry tracing to ramp quote load (#14824) <!-- Please submit this PR as a draft initially. Do not mark it as "Ready for review" until the template has been completely filled out, and PR status checks have passed at least once. --> ## **Description** <!-- Write a short description of the changes included in this pull request, also include relevant motivation and context. Have in mind the following questions: 1. What is the reason for the change? 2. What is the improvement/solution? --> This PR adds sentry tracing to the ramp quote fetch. ## **Related issues** Fixes: ## **Manual testing steps** 1. Go to this page... 2. 3. ## **Screenshots/Recordings** <!-- If applicable, add screenshots and/or recordings to visualize the before and after of your change. --> ### **Before** <!-- [screenshots/recordings] --> ### **After** <!-- [screenshots/recordings] --> ## **Pre-merge author checklist** - [ ] I’ve followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile Coding Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [ ] I've completed the PR template to the best of my ability - [ ] I’ve included tests if applicable - [ ] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [ ] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. ## **Pre-merge reviewer checklist** - [ ] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [x] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots. [009a578](https://github.com/MetaMask/metamask-mobile/commit/009a57883adf999950003b352d55fdfd8c83f8cb) Co-authored-by: George Weiler <georgejweiler@gmail.com> --- .../Ramp/Views/BuildQuote/BuildQuote.test.tsx | 20 ++++++++++++++++++- .../UI/Ramp/Views/BuildQuote/BuildQuote.tsx | 9 ++++++++- .../UI/Ramp/Views/Quotes/Quotes.test.tsx | 16 ++++++++++++++- .../UI/Ramp/Views/Quotes/Quotes.tsx | 3 +++ app/util/trace.ts | 1 + 5 files changed, 46 insertions(+), 3 deletions(-) diff --git a/app/components/UI/Ramp/Views/BuildQuote/BuildQuote.test.tsx b/app/components/UI/Ramp/Views/BuildQuote/BuildQuote.test.tsx index 6fe254477f38..615e8ca51ae9 100644 --- a/app/components/UI/Ramp/Views/BuildQuote/BuildQuote.test.tsx +++ b/app/components/UI/Ramp/Views/BuildQuote/BuildQuote.test.tsx @@ -25,7 +25,7 @@ import { toTokenMinimalUnit } from '../../../../../util/number'; import { RampType } from '../../../../../reducers/fiatOrders/types'; import { NATIVE_ADDRESS } from '../../../../../constants/on-ramp'; import { MOCK_ACCOUNTS_CONTROLLER_STATE } from '../../../../../util/test/accountsControllerTestUtils'; -import { endTrace, TraceName } from '../../../../../util/trace'; +import { trace, endTrace, TraceName } from '../../../../../util/trace'; const getByRoleButton = (name?: string | RegExp) => screen.getByRole('button', { name }); @@ -219,6 +219,7 @@ const mockUseRampSDKInitialValues: Partial<RampSDK> = { selectedNetworkName: 'Ethereum', sdkError: undefined, setSelectedPaymentMethodId: mockSetSelectedPaymentMethodId, + rampType: RampType.BUY, isBuy: true, isSell: false, }; @@ -264,8 +265,10 @@ jest.mock('../../../../../util/navigation/navUtils', () => ({ jest.mock('../../hooks/useAnalytics', () => () => mockTrackEvent); jest.mock('../../../../../util/trace', () => ({ + trace: jest.fn(), endTrace: jest.fn(), TraceName: { + RampQuoteLoading: 'Ramp Quote Loading', LoadRampExperience: 'Load Ramp Experience', }, })); @@ -852,9 +855,17 @@ describe('BuildQuote View', () => { chain_id_destination: '1', location: 'Amount to Buy Screen', }); + + expect(trace).toHaveBeenCalledWith({ + name: TraceName.RampQuoteLoading, + tags: { + rampType: RampType.BUY, + }, + }); }); it('Directs the user to the sell quotes page with correct parameters', () => { + mockUseRampSDKValues.rampType = RampType.SELL; mockUseRampSDKValues.isBuy = false; mockUseRampSDKValues.isSell = true; render(BuildQuote); @@ -888,5 +899,12 @@ describe('BuildQuote View', () => { chain_id_source: '1', location: 'Amount to Sell Screen', }); + + expect(trace).toHaveBeenCalledWith({ + name: TraceName.RampQuoteLoading, + tags: { + rampType: RampType.SELL, + }, + }); }); }); diff --git a/app/components/UI/Ramp/Views/BuildQuote/BuildQuote.tsx b/app/components/UI/Ramp/Views/BuildQuote/BuildQuote.tsx index a84660ee6d64..191f392c896c 100644 --- a/app/components/UI/Ramp/Views/BuildQuote/BuildQuote.tsx +++ b/app/components/UI/Ramp/Views/BuildQuote/BuildQuote.tsx @@ -83,7 +83,7 @@ import Text, { } from '../../../../../component-library/components/Texts/Text'; import ListItemColumnEnd from '../../components/ListItemColumnEnd'; import { BuildQuoteSelectors } from '../../../../../../e2e/selectors/Ramps/BuildQuote.selectors'; -import { endTrace, TraceName } from '../../../../../util/trace'; +import { trace, endTrace, TraceName } from '../../../../../util/trace'; // TODO: Replace "any" with type // eslint-disable-next-line @typescript-eslint/no-explicit-any @@ -564,6 +564,12 @@ const BuildQuote = () => { location: screenLocation, }; + trace({ + name: TraceName.RampQuoteLoading, + tags: { + rampType, + }, + }); if (isBuy) { trackEvent('ONRAMP_QUOTES_REQUESTED', { ...analyticsPayload, @@ -581,6 +587,7 @@ const BuildQuote = () => { } } }, [ + rampType, screenLocation, amount, amountNumber, diff --git a/app/components/UI/Ramp/Views/Quotes/Quotes.test.tsx b/app/components/UI/Ramp/Views/Quotes/Quotes.test.tsx index b9db2b68c1ae..eb53fa0fa278 100644 --- a/app/components/UI/Ramp/Views/Quotes/Quotes.test.tsx +++ b/app/components/UI/Ramp/Views/Quotes/Quotes.test.tsx @@ -29,6 +29,7 @@ import Routes from '../../../../../constants/navigation/Routes'; import { backgroundState } from '../../../../../util/test/initial-root-state'; import { RampType, Region } from '../../types'; import { PaymentCustomAction } from '@consensys/on-ramp-sdk/dist/API'; +import { endTrace, TraceName } from '../../../../../util/trace'; function render(Component: React.ComponentType) { return renderScreen( @@ -182,6 +183,13 @@ jest.mock('../../hooks/useQuotesAndCustomActions', () => jest.fn(() => mockUseQuotesAndCustomActionsValues), ); +jest.mock('../../../../../util/trace', () => ({ + endTrace: jest.fn(), + TraceName: { + RampQuoteLoading: 'Ramp Quote Loading', + }, +})); + describe('Quotes', () => { afterEach(() => { jest.clearAllMocks(); @@ -843,12 +851,15 @@ describe('Quotes', () => { }); }); - it('calls track event on quotes received and quote error', async () => { + it('calls endTrace and track event on quotes received and quote error', async () => { render(Quotes); act(() => { jest.advanceTimersByTime(3000); jest.clearAllTimers(); }); + expect(endTrace).toHaveBeenCalledWith({ + name: TraceName.RampQuoteLoading, + }); expect(mockTrackEvent.mock.calls).toMatchInlineSnapshot(` [ [ @@ -900,6 +911,9 @@ describe('Quotes', () => { jest.advanceTimersByTime(3000); jest.clearAllTimers(); }); + expect(endTrace).toHaveBeenCalledWith({ + name: TraceName.RampQuoteLoading, + }); expect(mockTrackEvent.mock.calls).toMatchInlineSnapshot(` [ [ diff --git a/app/components/UI/Ramp/Views/Quotes/Quotes.tsx b/app/components/UI/Ramp/Views/Quotes/Quotes.tsx index 3c121c56cbca..1a232842a955 100644 --- a/app/components/UI/Ramp/Views/Quotes/Quotes.tsx +++ b/app/components/UI/Ramp/Views/Quotes/Quotes.tsx @@ -62,6 +62,7 @@ import { isBuyQuote } from '../../utils'; import { getOrdersProviders } from './../../../../../reducers/fiatOrders'; import { QuoteSelectors } from '../../../../../../e2e/selectors/Ramps/Quotes.selectors'; import useFiatCurrencies from '../../hooks/useFiatCurrencies'; +import { endTrace, TraceName } from '../../../../../util/trace'; export interface QuotesParams { amount: number | string; @@ -659,6 +660,8 @@ function Quotes() { provider_offramp_best_price: providerBestPrice, }); } + + endTrace({ name: TraceName.RampQuoteLoading }); } quotesWithError.forEach((quoteError) => { diff --git a/app/util/trace.ts b/app/util/trace.ts index 14d8b83a20fe..1236f12bd635 100644 --- a/app/util/trace.ts +++ b/app/util/trace.ts @@ -47,6 +47,7 @@ export enum TraceName { AssetDetails = 'Asset Details', ImportNfts = 'Import Nfts', ImportTokens = 'Import Tokens', + RampQuoteLoading = 'Ramp Quote Loading', LoadRampExperience = 'Load Ramp Experience', } From 13af0eb2251a4b43cae3feb6082149a5c1acb5fa Mon Sep 17 00:00:00 2001 From: "runway-github[bot]" <73448015+runway-github[bot]@users.noreply.github.com> Date: Mon, 28 Apr 2025 09:45:11 -0600 Subject: [PATCH 174/473] chore(runway): cherry-pick fix(bridge): cp-7.46.0 keyboard not appearing when error banner is displayed (#14869) - fix(bridge): cp-7.46.0 keyboard not appearing when error banner is displayed (#14862) <!-- Please submit this PR as a draft initially. Do not mark it as "Ready for review" until the template has been completely filled out, and PR status checks have passed at least once. --> ## **Description** <!-- Write a short description of the changes included in this pull request, also include relevant motivation and context. Have in mind the following questions: 1. What is the reason for the change? 2. What is the improvement/solution? --> This PR addresses an issue where the keyboard would not appear when an error banner is displayed in the BridgeView component. The changes reorder the error handling logic to ensure proper keyboard behavior while maintaining error visibility. 1. Reason for change: The keyboard was being dismissed when error banner appeared, preventing user input 2. Solution: Reordered error handling conditions to maintain keyboard visibility while showing error banner ## **Related issues** Fixes: [MMS-2306](https://consensyssoftware.atlassian.net/browse/MMS-2306) ## **Manual testing steps** 1. Go to the Bridge screen 2. Enter an invalid amount that triggers an error 3. Verify the keyboard remains visible when the error banner appears 4. Verify you can still edit the input field while error banner is shown ## **Screenshots/Recordings** <!-- If applicable, add screenshots and/or recordings to visualize the before and after of your change. --> ### **Before** <!-- [screenshots/recordings] --> ### **After** <!-- [screenshots/recordings] --> ## **Pre-merge author checklist** - [x] I've followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile Coding Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [x] I've completed the PR template to the best of my ability - [x] I've included tests if applicable - [x] I've documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [x] I've applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. ## **Pre-merge reviewer checklist** - [ ] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [ ] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots. [MMS-2306]: https://consensyssoftware.atlassian.net/browse/MMS-2306?atlOrigin=eyJpIjoiNWRkNTljNzYxNjVmNDY3MDlhMDU5Y2ZhYzA5YTRkZjUiLCJwIjoiZ2l0aHViLWNvbS1KU1cifQ [d80df03](https://github.com/MetaMask/metamask-mobile/commit/d80df03bf8857bb8fbcffc9fad31d5ba48332f6b) [MMS-2306]: https://consensyssoftware.atlassian.net/browse/MMS-2306?atlOrigin=eyJpIjoiNWRkNTljNzYxNjVmNDY3MDlhMDU5Y2ZhYzA5YTRkZjUiLCJwIjoiZ2l0aHViLWNvbS1KU1cifQ Co-authored-by: Amitabh Aggarwal <aggarwal.amitabh@gmail.com> Co-authored-by: sethkfman <10342624+sethkfman@users.noreply.github.com> --- CHANGELOG.md | 4 +- .../Views/BridgeView/BridgeView.test.tsx | 4 ++ .../UI/Bridge/Views/BridgeView/index.tsx | 61 +++++++++---------- 3 files changed, 36 insertions(+), 33 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c810d9b780cc..15de8f971076 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,10 +7,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] -- feat(bridge): use dynamic slippage for single-chain Solana swaps ([#14805](https://github.com/MetaMask/metamask-mobile/pull/14805)) - ### Added +- feat(bridge): use dynamic slippage for single-chain Solana swaps ([#14805](https://github.com/MetaMask/metamask-mobile/pull/14805)) - feat(bridge): enhance bridging with network fee estimation and UI improvements ([#14786](https://github.com/MetaMask/metamask-mobile/pull/14786)) - feat(ramp): auto-select region ([#14780](https://github.com/MetaMask/metamask-mobile/pull/14780)) - feat(bridge): add solana chain support and improve bridge state management ([#14713](https://github.com/MetaMask/metamask-mobile/pull/14713)) @@ -38,6 +37,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Fixed +- fix(bridge): keyboard not appearing when error banner is displayed ([#14862](https://github.com/MetaMask/metamask-mobile/pull/14862)) - fix(bridge): fix not switching networks when selecting source token ([#14712](https://github.com/MetaMask/metamask-mobile/pull/14712)) - fix: updates a padding style specifically for Android devices ([#14725](https://github.com/MetaMask/metamask-mobile/pull/14725)) - fix(bridge): enhance UI/UX with improved input handling and layout adjustments ([#14781](https://github.com/MetaMask/metamask-mobile/pull/14781)) diff --git a/app/components/UI/Bridge/Views/BridgeView/BridgeView.test.tsx b/app/components/UI/Bridge/Views/BridgeView/BridgeView.test.tsx index c2e159505ac4..d8d1906404d6 100644 --- a/app/components/UI/Bridge/Views/BridgeView/BridgeView.test.tsx +++ b/app/components/UI/Bridge/Views/BridgeView/BridgeView.test.tsx @@ -374,6 +374,7 @@ describe('BridgeView', () => { }, quotesLoadingStatus: RequestStatus.FETCHED, quotes: [mockQuotes[0] as unknown as QuoteResponse], + quotesLastFetched: 12, }, }); @@ -415,6 +416,7 @@ describe('BridgeView', () => { }, quotesLoadingStatus: RequestStatus.FETCHED, quotes: [mockQuotes[0] as unknown as QuoteResponse], + quotesLastFetched: 12, }, bridgeReducerOverrides: { sourceAmount: '1.0', // Less than balance of 2.0 ETH @@ -441,6 +443,7 @@ describe('BridgeView', () => { }, quotesLoadingStatus: RequestStatus.FETCHED, quotes: [mockQuotes[0] as unknown as QuoteResponse], + quotesLastFetched: 12, }, bridgeReducerOverrides: { sourceAmount: '1.0', // Less than balance of 2.0 ETH @@ -472,6 +475,7 @@ describe('BridgeView', () => { }, quotesLoadingStatus: RequestStatus.FETCHED, quotes: [mockQuotes[0] as unknown as QuoteResponse], + quotesLastFetched: 12, }, bridgeReducerOverrides: { sourceAmount: '1.0', // Less than balance of 2.0 ETH diff --git a/app/components/UI/Bridge/Views/BridgeView/index.tsx b/app/components/UI/Bridge/Views/BridgeView/index.tsx index 3ee59a44f1fa..fef0e3a4060c 100644 --- a/app/components/UI/Bridge/Views/BridgeView/index.tsx +++ b/app/components/UI/Bridge/Views/BridgeView/index.tsx @@ -285,17 +285,6 @@ const BridgeView = () => { }; const renderBottomContent = () => { - if (isError) { - return ( - <Box style={styles.buttonContainer}> - <BannerAlert - severity={BannerAlertSeverity.Error} - description={strings('bridge.error_banner_description')} - /> - </Box> - ); - } - if (!hasValidBridgeInputs || isInputFocused) { return ( <Box style={styles.buttonContainer}> @@ -316,29 +305,39 @@ const BridgeView = () => { ); } - if (!activeQuote && !quotesLastFetched) { - return; + if (isError) { + return ( + <Box style={styles.buttonContainer}> + <BannerAlert + severity={BannerAlertSeverity.Error} + description={strings('bridge.error_banner_description')} + /> + </Box> + ); } return ( - <Box style={styles.buttonContainer}> - <Button - variant={ButtonVariants.Primary} - label={getButtonLabel()} - onPress={handleContinue} - style={styles.button} - isDisabled={hasInsufficientBalance || isSubmittingTx} - /> - <Button - variant={ButtonVariants.Link} - label={ - <Text color={TextColor.Alternative}> - {strings('bridge.terms_and_conditions')} - </Text> - } - onPress={handleTermsPress} - /> - </Box> + activeQuote && + quotesLastFetched && ( + <Box style={styles.buttonContainer}> + <Button + variant={ButtonVariants.Primary} + label={getButtonLabel()} + onPress={handleContinue} + style={styles.button} + isDisabled={hasInsufficientBalance || isSubmittingTx} + /> + <Button + variant={ButtonVariants.Link} + label={ + <Text color={TextColor.Alternative}> + {strings('bridge.terms_and_conditions')} + </Text> + } + onPress={handleTermsPress} + /> + </Box> + ) ); }; From 3275275f12229e50fd1e157e73253ceec6a95d02 Mon Sep 17 00:00:00 2001 From: "runway-github[bot]" <73448015+runway-github[bot]@users.noreply.github.com> Date: Mon, 28 Apr 2025 09:46:43 -0600 Subject: [PATCH 175/473] =?UTF-8?q?chore(runway):=20cherry-pick=20fix:=20c?= =?UTF-8?q?p-7.46.0=20navigate=20to=20activity=20page=20before=20solana=20?= =?UTF-8?q?originating=20swap/bridge=E2=80=A6=20(#14870)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - fix: cp-7.46.0 navigate to activity page before solana originating swap/bridge… (#14861) <!-- Please submit this PR as a draft initially. Do not mark it as "Ready for review" until the template has been completely filled out, and PR status checks have passed at least once. --> ## **Description** Because snaps prevent navigation after tx submission, it's necessary to navigate to the activity page BEFORE the tx is submitted. This is terrible UX and absolutely a temporary fix until a better solution is found, hopefully within the next few days. <!-- Write a short description of the changes included in this pull request, also include relevant motivation and context. Have in mind the following questions: 1. What is the reason for the change? 2. What is the improvement/solution? --> ## **Related issues** Fixes: ## **Manual testing steps** 1. Go to this solana swap/bridge 2. Click "continue" button 3. Get navigated to activity page ## **Screenshots/Recordings** <!-- If applicable, add screenshots and/or recordings to visualize the before and after of your change. --> ### **Before** <!-- [screenshots/recordings] --> ### **After** <!-- [screenshots/recordings] --> ## **Pre-merge author checklist** - [x] I’ve followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile Coding Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [x] I've completed the PR template to the best of my ability - [x] I’ve included tests if applicable - [x] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [x] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. ## **Pre-merge reviewer checklist** - [ ] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [ ] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots. [667436c](https://github.com/MetaMask/metamask-mobile/commit/667436ca7f91462f27e227327fe37f0ff0a5175c) Co-authored-by: Bryan Fullam <bryan.fullam@consensys.net> Co-authored-by: sethkfman <10342624+sethkfman@users.noreply.github.com> --- app/components/UI/Bridge/Views/BridgeView/index.tsx | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/app/components/UI/Bridge/Views/BridgeView/index.tsx b/app/components/UI/Bridge/Views/BridgeView/index.tsx index fef0e3a4060c..6495e5a479a0 100644 --- a/app/components/UI/Bridge/Views/BridgeView/index.tsx +++ b/app/components/UI/Bridge/Views/BridgeView/index.tsx @@ -34,6 +34,7 @@ import { selectIsEvmSolanaBridge, selectIsSolanaSwap, setSlippage, + selectIsSolanaToEvm, } from '../../../../../core/redux/slices/bridge'; import { ethers } from 'ethers'; import { @@ -107,7 +108,7 @@ const BridgeView = () => { const isEvmSolanaBridge = useSelector(selectIsEvmSolanaBridge); const isSolanaSwap = useSelector(selectIsSolanaSwap); - + const isSolanaToEvm = useSelector(selectIsSolanaToEvm); // inputRef is used to programmatically blur the input field after a delay // This gives users time to type before the keyboard disappears // The ref is typed to only expose the blur method we need @@ -251,6 +252,11 @@ const BridgeView = () => { const handleContinue = async () => { if (activeQuote) { setIsSubmittingTx(true); + // TEMPORARY: If tx originates from Solana, navigate to transactions view BEFORE submitting the tx + // Necessary because snaps prevents navigation after tx is submitted + if (isSolanaSwap || isSolanaToEvm) { + navigation.navigate(Routes.TRANSACTIONS_VIEW); + } await submitBridgeTx({ quoteResponse: activeQuote, }); From d863ce3ec07cdd840cad439cefe0cd48de362896 Mon Sep 17 00:00:00 2001 From: metamaskbot <metamaskbot@users.noreply.github.com> Date: Mon, 28 Apr 2025 16:01:12 +0000 Subject: [PATCH 176/473] Bump version number to 1733 --- android/app/build.gradle | 2 +- bitrise.yml | 4 ++-- ios/MetaMask.xcodeproj/project.pbxproj | 12 ++++++------ 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/android/app/build.gradle b/android/app/build.gradle index 54d3072c7c85..d181f312dc42 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -179,7 +179,7 @@ android { minSdkVersion rootProject.ext.minSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion versionName "7.46.0" - versionCode 1731 + versionCode 1733 testBuildType System.getProperty('testBuildType', 'debug') missingDimensionStrategy 'react-native-camera', 'general' testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" diff --git a/bitrise.yml b/bitrise.yml index f0f03b2d6583..a67ca31636eb 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -2213,13 +2213,13 @@ app: VERSION_NAME: 7.46.0 - opts: is_expand: false - VERSION_NUMBER: 1731 + VERSION_NUMBER: 1733 - opts: is_expand: false FLASK_VERSION_NAME: 7.46.0 - opts: is_expand: false - FLASK_VERSION_NUMBER: 1731 + FLASK_VERSION_NUMBER: 1733 - opts: is_expand: false ANDROID_APK_LINK: '' diff --git a/ios/MetaMask.xcodeproj/project.pbxproj b/ios/MetaMask.xcodeproj/project.pbxproj index 6e0830cdb659..7f8a051c0b9b 100644 --- a/ios/MetaMask.xcodeproj/project.pbxproj +++ b/ios/MetaMask.xcodeproj/project.pbxproj @@ -1261,7 +1261,7 @@ CODE_SIGN_IDENTITY = "Apple Development"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1731; + CURRENT_PROJECT_VERSION = 1733; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = 48XVW22RCG; @@ -1330,7 +1330,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMask.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1731; + CURRENT_PROJECT_VERSION = 1733; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 48XVW22RCG; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 48XVW22RCG; @@ -1395,7 +1395,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMaskDebug.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1731; + CURRENT_PROJECT_VERSION = 1733; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = 48XVW22RCG; @@ -1461,7 +1461,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMask.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1731; + CURRENT_PROJECT_VERSION = 1733; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 48XVW22RCG; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 48XVW22RCG; @@ -1620,7 +1620,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMaskDebug.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1731; + CURRENT_PROJECT_VERSION = 1733; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = 48XVW22RCG; @@ -1689,7 +1689,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMask.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1731; + CURRENT_PROJECT_VERSION = 1733; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 48XVW22RCG; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 48XVW22RCG; From 7ad83bf491a975cb4584c1bc9753fa99857b6b01 Mon Sep 17 00:00:00 2001 From: metamaskbot <metamaskbot@users.noreply.github.com> Date: Mon, 28 Apr 2025 17:42:33 +0000 Subject: [PATCH 177/473] Bump version number to 1734 --- android/app/build.gradle | 2 +- bitrise.yml | 4 ++-- ios/MetaMask.xcodeproj/project.pbxproj | 12 ++++++------ 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/android/app/build.gradle b/android/app/build.gradle index d181f312dc42..2f1d0b0c52c6 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -179,7 +179,7 @@ android { minSdkVersion rootProject.ext.minSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion versionName "7.46.0" - versionCode 1733 + versionCode 1734 testBuildType System.getProperty('testBuildType', 'debug') missingDimensionStrategy 'react-native-camera', 'general' testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" diff --git a/bitrise.yml b/bitrise.yml index a67ca31636eb..2ef37336da84 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -2213,13 +2213,13 @@ app: VERSION_NAME: 7.46.0 - opts: is_expand: false - VERSION_NUMBER: 1733 + VERSION_NUMBER: 1734 - opts: is_expand: false FLASK_VERSION_NAME: 7.46.0 - opts: is_expand: false - FLASK_VERSION_NUMBER: 1733 + FLASK_VERSION_NUMBER: 1734 - opts: is_expand: false ANDROID_APK_LINK: '' diff --git a/ios/MetaMask.xcodeproj/project.pbxproj b/ios/MetaMask.xcodeproj/project.pbxproj index 7f8a051c0b9b..08e6b11468d5 100644 --- a/ios/MetaMask.xcodeproj/project.pbxproj +++ b/ios/MetaMask.xcodeproj/project.pbxproj @@ -1261,7 +1261,7 @@ CODE_SIGN_IDENTITY = "Apple Development"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1733; + CURRENT_PROJECT_VERSION = 1734; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = 48XVW22RCG; @@ -1330,7 +1330,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMask.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1733; + CURRENT_PROJECT_VERSION = 1734; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 48XVW22RCG; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 48XVW22RCG; @@ -1395,7 +1395,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMaskDebug.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1733; + CURRENT_PROJECT_VERSION = 1734; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = 48XVW22RCG; @@ -1461,7 +1461,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMask.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1733; + CURRENT_PROJECT_VERSION = 1734; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 48XVW22RCG; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 48XVW22RCG; @@ -1620,7 +1620,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMaskDebug.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1733; + CURRENT_PROJECT_VERSION = 1734; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = 48XVW22RCG; @@ -1689,7 +1689,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMask.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1733; + CURRENT_PROJECT_VERSION = 1734; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 48XVW22RCG; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 48XVW22RCG; From 667c1ee3ca44bf74eedc2c85ef72e1ec3eff3e77 Mon Sep 17 00:00:00 2001 From: Prithpal Sooriya <prithpal.sooriya@consensys.net> Date: Mon, 28 Apr 2025 20:05:05 +0100 Subject: [PATCH 178/473] perf: Add patch to parallelize account tracker API calls (#14928) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## **Description** Adds patch for Account Tracker parallelization. This is added in `@metamask/assets-controllers@59.0.0`. This change is already in main - introduced in this PR https://github.com/MetaMask/metamask-mobile/pull/14768 ## **Related issues** Fixes: https://github.com/MetaMask/metamask-mobile/issues/14856 ## **Manual testing steps** Test asset flows. ## **Screenshots/Recordings** <!-- If applicable, add screenshots and/or recordings to visualize the before and after of your change. --> ### **Before** <!-- [screenshots/recordings] --> ### **After** <!-- [screenshots/recordings] --> ## **Pre-merge author checklist** - [x] I’ve followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile Coding Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [x] I've completed the PR template to the best of my ability - [x] I’ve included tests if applicable - [x] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [x] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. ## **Pre-merge reviewer checklist** - [ ] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [ ] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots. --- .../@metamask+assets-controllers+55.0.1.patch | 68 +++++++++++++++++++ 1 file changed, 68 insertions(+) diff --git a/patches/@metamask+assets-controllers+55.0.1.patch b/patches/@metamask+assets-controllers+55.0.1.patch index cf4a54b850b8..0beb6d9bfbab 100644 --- a/patches/@metamask+assets-controllers+55.0.1.patch +++ b/patches/@metamask+assets-controllers+55.0.1.patch @@ -1,3 +1,71 @@ +diff --git a/node_modules/@metamask/assets-controllers/dist/AccountTrackerController.cjs b/node_modules/@metamask/assets-controllers/dist/AccountTrackerController.cjs +index b654e87..7a2bde8 100644 +--- a/node_modules/@metamask/assets-controllers/dist/AccountTrackerController.cjs ++++ b/node_modules/@metamask/assets-controllers/dist/AccountTrackerController.cjs +@@ -136,38 +136,45 @@ class AccountTrackerController extends (0, polling_controller_1.StaticIntervalPo + * @param networkClientId - Optional networkClientId to fetch a network client with + */ + async refresh(networkClientId) { ++ // Can be removed after @metamask/assets-controllers@59.0.0 + const selectedAccount = this.messagingSystem.call('AccountsController:getSelectedAccount'); + const releaseLock = await __classPrivateFieldGet(this, _AccountTrackerController_refreshMutex, "f").acquire(); + try { + const { chainId, ethQuery } = __classPrivateFieldGet(this, _AccountTrackerController_instances, "m", _AccountTrackerController_getCorrectNetworkClient).call(this, networkClientId); + this.syncAccounts(chainId); +- const { accounts, accountsByChainId } = this.state; ++ const { accountsByChainId } = this.state; + const { isMultiAccountBalancesEnabled } = this.messagingSystem.call('PreferencesController:getState'); + const accountsToUpdate = isMultiAccountBalancesEnabled +- ? Object.keys(accounts) ++ ? Object.keys(accountsByChainId[chainId]) + : [(0, controller_utils_1.toChecksumHexAddress)(selectedAccount.address)]; + const accountsForChain = { ...accountsByChainId[chainId] }; +- for (const address of accountsToUpdate) { +- const balance = await __classPrivateFieldGet(this, _AccountTrackerController_instances, "m", _AccountTrackerController_getBalanceFromChain).call(this, address, ethQuery); +- if (balance) { ++ ++ // Use Promise.allSettled to handle multiple asynchronous operations concurrently ++ const balancePromises = accountsToUpdate.map(async (address) => { ++ const balancePromise = __classPrivateFieldGet(this, _AccountTrackerController_instances, "m", _AccountTrackerController_getBalanceFromChain).call(this, address, ethQuery); ++ const stakedBalancePromise = __classPrivateFieldGet(this, _AccountTrackerController_includeStakedAssets, "f") ++ ? __classPrivateFieldGet(this, _AccountTrackerController_getStakedBalanceForChain, "f").call(this, address, networkClientId) ++ : Promise.resolve(null); ++ const [balanceResult, stakedBalanceResult] = await Promise.allSettled([ ++ balancePromise, ++ stakedBalancePromise, ++ ]); ++ if (balanceResult.status === 'fulfilled' && balanceResult.value) { + accountsForChain[address] = { +- balance, ++ balance: balanceResult.value, + }; + } +- if (__classPrivateFieldGet(this, _AccountTrackerController_includeStakedAssets, "f")) { +- const stakedBalance = await __classPrivateFieldGet(this, _AccountTrackerController_getStakedBalanceForChain, "f").call(this, address, networkClientId); +- if (stakedBalance) { +- accountsForChain[address] = { +- ...accountsForChain[address], +- stakedBalance, +- }; +- } ++ if (stakedBalanceResult.status === 'fulfilled' && ++ stakedBalanceResult.value) { ++ accountsForChain[address] = { ++ ...accountsForChain[address], ++ stakedBalance: stakedBalanceResult.value, ++ }; + } +- } ++ }); ++ // Wait for all promises to settle ++ await Promise.allSettled(balancePromises); + this.update((state) => { +- if (chainId === __classPrivateFieldGet(this, _AccountTrackerController_instances, "m", _AccountTrackerController_getCurrentChainId).call(this)) { +- state.accounts = accountsForChain; +- } + state.accountsByChainId[chainId] = accountsForChain; + }); + } diff --git a/node_modules/@metamask/assets-controllers/dist/NftController.cjs b/node_modules/@metamask/assets-controllers/dist/NftController.cjs index 0f15eb6..179932b 100644 --- a/node_modules/@metamask/assets-controllers/dist/NftController.cjs From 92630442247b306eed6c38c43430fc326839323e Mon Sep 17 00:00:00 2001 From: "runway-github[bot]" <73448015+runway-github[bot]@users.noreply.github.com> Date: Mon, 28 Apr 2025 15:00:40 -0600 Subject: [PATCH 179/473] chore(runway): cherry-pick chore: Bump Snaps packages (cp-7.46.0) (#14947) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - chore: Bump Snaps packages (cp-7.46.0) (#14922) <!-- Please submit this PR as a draft initially. Do not mark it as "Ready for review" until the template has been completely filled out, and PR status checks have passed at least once. --> ## **Description** This bumps several Snaps packages, which contain some performance improvements. ## **Related issues** Fixes: ## **Manual testing steps** 1. Go to this page... 2. 3. ## **Screenshots/Recordings** <!-- If applicable, add screenshots and/or recordings to visualize the before and after of your change. --> ### **Before** <!-- [screenshots/recordings] --> ### **After** <!-- [screenshots/recordings] --> ## **Pre-merge author checklist** - [x] I’ve followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile Coding Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [x] I've completed the PR template to the best of my ability - [x] I’ve included tests if applicable - [x] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [x] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. ## **Pre-merge reviewer checklist** - [ ] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [ ] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots. [eae6f51](https://github.com/MetaMask/metamask-mobile/commit/eae6f51e6d5444a175f9284591401620b82aa8af) Co-authored-by: Maarten Zuidhoorn <maarten@zuidhoorn.com> --- .iyarc | 2 - app/util/test/initial-background-state.json | 3 +- package.json | 8 +- yarn.lock | 92 ++++++++++----------- 4 files changed, 52 insertions(+), 53 deletions(-) delete mode 100644 .iyarc diff --git a/.iyarc b/.iyarc deleted file mode 100644 index 696cadaf6480..000000000000 --- a/.iyarc +++ /dev/null @@ -1,2 +0,0 @@ -# Advisory exclusions -GHSA-h9w6-f932-gq62 \ No newline at end of file diff --git a/app/util/test/initial-background-state.json b/app/util/test/initial-background-state.json index b7652233185c..11e8facca05d 100644 --- a/app/util/test/initial-background-state.json +++ b/app/util/test/initial-background-state.json @@ -142,7 +142,8 @@ "phishingLists": [], "whitelist": [], "hotlistLastFetched": 0, - "stalelistLastFetched": 0 + "stalelistLastFetched": 0, + "urlScanCache": {} }, "PreferencesController": { "featureFlags": {}, diff --git a/package.json b/package.json index 9a12d5af3f11..d2b1f3eb6c44 100644 --- a/package.json +++ b/package.json @@ -215,11 +215,11 @@ "@metamask/signature-controller": "^27.1.0", "@metamask/slip44": "^4.1.0", "@metamask/smart-transactions-controller": "^16.2.0", - "@metamask/snaps-controllers": "^11.2.2", - "@metamask/snaps-execution-environments": "^7.2.1", + "@metamask/snaps-controllers": "^11.2.3", + "@metamask/snaps-execution-environments": "^7.2.2", "@metamask/snaps-rpc-methods": "^12.1.0", - "@metamask/snaps-sdk": "^6.22.0", - "@metamask/snaps-utils": "^9.2.0", + "@metamask/snaps-sdk": "^6.22.1", + "@metamask/snaps-utils": "^9.2.1", "@metamask/solana-wallet-snap": "^1.22.0", "@metamask/stake-sdk": "^1.0.0", "@metamask/swappable-obj-proxy": "^2.1.0", diff --git a/yarn.lock b/yarn.lock index 0cb294b8c472..5e05631475d9 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1681,10 +1681,10 @@ resolved "https://registry.yarnpkg.com/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.0.1.tgz#08de79f54eb3406f9daaf77c76e35313da963963" integrity sha512-jT/qyKZ9rzLErtrjGgdkMBn2OP8wl0G3sQlBb3YPryvKHsjvINUhVaPFfP+fpBcOkmrVOVEEHQFJ7nbj2TH2gw== -"@endo/env-options@^1.1.1": - version "1.1.1" - resolved "https://registry.yarnpkg.com/@endo/env-options/-/env-options-1.1.1.tgz#eee630f8eff01580ec49e0dedcb1b6cef05d89a4" - integrity sha512-uCwlJ8Vkndx/VBBo36BdYHdxSoQPy7ZZpwyJNfv86Rh4B1IZfqzCRPf0u0mPgJdzOr7lShQey60SuYwoMSZ9Xg== +"@endo/env-options@^1.1.8": + version "1.1.8" + resolved "https://registry.yarnpkg.com/@endo/env-options/-/env-options-1.1.8.tgz#dbfcfbf7574f2a793155281d035c8d6f809f5828" + integrity sha512-Xtxw9n33I4guo8q0sDyZiRuxlfaopM454AKiELgU7l3tqsylCut6IBZ0fPy4ltSHsBib7M3yF7OEMoIuLwzWVg== "@es-joy/jsdoccomment@~0.37.1": version "0.37.1" @@ -5398,13 +5398,13 @@ immer "^9.0.6" nanoid "^3.3.8" -"@metamask/phishing-controller@^12.4.1": - version "12.4.1" - resolved "https://registry.yarnpkg.com/@metamask/phishing-controller/-/phishing-controller-12.4.1.tgz#afce80b16d04856c53a8be9d24961d3fb272a2db" - integrity sha512-UOTl0z8lVXlx3p32Kp0YtLN5YiXgodT0JXNNS/f5Q2KLlwoYTvVctb/cDyKzBDf/mWvECy1+npKCM43aQ5clTA== +"@metamask/phishing-controller@^12.4.1", "@metamask/phishing-controller@^12.5.0": + version "12.5.0" + resolved "https://registry.yarnpkg.com/@metamask/phishing-controller/-/phishing-controller-12.5.0.tgz#b65502a32e5be891a7edfde5d5dbdb78b904557c" + integrity sha512-h34Gfh0gnZ5cf+hE7HaCpVWEdtDDDx3XoMd15nT+R4kW50mJNNWSo6ptZ9uaxJFlbW53wII9vzvurKZPIOMZFg== dependencies: "@metamask/base-controller" "^8.0.0" - "@metamask/controller-utils" "^11.6.0" + "@metamask/controller-utils" "^11.7.0" "@noble/hashes" "^1.4.0" "@types/punycode" "^2.1.0" ethereum-cryptography "^2.1.2" @@ -5497,10 +5497,10 @@ is-stream "^2.0.0" readable-stream "^3.6.2" -"@metamask/providers@^21.0.0": - version "21.0.0" - resolved "https://registry.yarnpkg.com/@metamask/providers/-/providers-21.0.0.tgz#4c23601e163a501b5cfb3853e227243685d1348a" - integrity sha512-qSKfQQYX4AsKxWcalJjmIce557wa9KWlRqSzMbmpcC2ULo3JlYCfJIi42u3mooaPxK2l+9AdtzLSVbLRsBYnPA== +"@metamask/providers@^22.0.1": + version "22.0.1" + resolved "https://registry.yarnpkg.com/@metamask/providers/-/providers-22.0.1.tgz#eedb84ac13dd771d5d86e7a89968e3280f655be6" + integrity sha512-RWB32NLL2DIgUII17UY7R3n2eU5fTrXXA0Z137VIO7pQeLcL9xiVqfqhtCDKfMW9K7Pw68U4Qme4lhLrhJcZBQ== dependencies: "@metamask/json-rpc-engine" "^10.0.2" "@metamask/json-rpc-middleware-stream" "^8.0.6" @@ -5636,10 +5636,10 @@ fast-json-patch "^3.1.0" lodash "^4.17.21" -"@metamask/snaps-controllers@^11.2.2": - version "11.2.2" - resolved "https://registry.yarnpkg.com/@metamask/snaps-controllers/-/snaps-controllers-11.2.2.tgz#f8e83a1a6796f028100448a93905d3ce55e7f0fe" - integrity sha512-ADDH/ViYlfbu++lgFusptkUZP+D0oibMA28ImhrlF6BybKYfZ0mM8rhNpBsG/kdnzLVgmiEr4AUKn0pg0q3FCQ== +"@metamask/snaps-controllers@^11.2.3": + version "11.2.3" + resolved "https://registry.yarnpkg.com/@metamask/snaps-controllers/-/snaps-controllers-11.2.3.tgz#b5ddcc2d8cec092b0a0cc3098c5b02a6950b0c7d" + integrity sha512-zNLA3JdRkcpiCRivo7qiwNpv79WSTYtVR29wy3Rp0oCs7WwsxRvicl8IlMp+AjWjfQ7jUXiSiMo0nwzvrgloFw== dependencies: "@metamask/approval-controller" "^7.1.3" "@metamask/base-controller" "^8.0.0" @@ -5648,13 +5648,13 @@ "@metamask/key-tree" "^10.1.1" "@metamask/object-multiplex" "^2.1.0" "@metamask/permission-controller" "^11.0.6" - "@metamask/phishing-controller" "^12.4.1" + "@metamask/phishing-controller" "^12.5.0" "@metamask/post-message-stream" "^9.0.0" "@metamask/rpc-errors" "^7.0.2" "@metamask/snaps-registry" "^3.2.3" "@metamask/snaps-rpc-methods" "^12.1.0" - "@metamask/snaps-sdk" "^6.22.0" - "@metamask/snaps-utils" "^9.2.0" + "@metamask/snaps-sdk" "^6.22.1" + "@metamask/snaps-utils" "^9.2.1" "@metamask/utils" "^11.4.0" "@xstate/fsm" "^2.0.0" async-mutex "^0.5.0" @@ -5670,20 +5670,20 @@ semver "^7.5.4" tar-stream "^3.1.7" -"@metamask/snaps-execution-environments@^7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@metamask/snaps-execution-environments/-/snaps-execution-environments-7.2.1.tgz#629046cf7c9652c36ac35129f3856c80a1ffa4f3" - integrity sha512-ica+LZoRvgUjwtHiiyM0uZ5l5pBas7WCN636qIwBlX3NSNBcRgHIHYVdrIquECKcdTKQw5Y/+vq3tBqPVjD2Og== +"@metamask/snaps-execution-environments@^7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@metamask/snaps-execution-environments/-/snaps-execution-environments-7.2.2.tgz#872747ccbcb5bc79c395b434fe088e0daeca343a" + integrity sha512-AmyaHhOijmchcx29o1v9q5SpKLQPtJU+lEKwgGv0CzZscvE/UZATea32LtnAAJJumSvKRNioKWAF65ikeXG8yg== dependencies: "@metamask/json-rpc-engine" "^10.0.2" "@metamask/object-multiplex" "^2.1.0" "@metamask/post-message-stream" "^9.0.0" - "@metamask/providers" "^21.0.0" + "@metamask/providers" "^22.0.1" "@metamask/rpc-errors" "^7.0.2" - "@metamask/snaps-sdk" "^6.22.0" - "@metamask/snaps-utils" "^9.2.0" + "@metamask/snaps-sdk" "^6.22.1" + "@metamask/snaps-utils" "^9.2.1" "@metamask/superstruct" "^3.2.1" - "@metamask/utils" "^11.2.0" + "@metamask/utils" "^11.4.0" nanoid "^3.3.10" readable-stream "^3.6.2" @@ -5712,16 +5712,16 @@ "@noble/hashes" "^1.7.1" luxon "^3.5.0" -"@metamask/snaps-sdk@^6.17.0", "@metamask/snaps-sdk@^6.17.1", "@metamask/snaps-sdk@^6.22.0": - version "6.22.0" - resolved "https://registry.yarnpkg.com/@metamask/snaps-sdk/-/snaps-sdk-6.22.0.tgz#38cd412568a3ce90db64ed52f930999ad9ae02b9" - integrity sha512-xZNQJ0UNQ1+5oZsZ2gph+8kO1B1Gr5hyYvshM2hPlhbaMA7W9C4c7pUUAWw7BOJ0JrCDSnPY//o1pjImYKxNOg== +"@metamask/snaps-sdk@^6.17.0", "@metamask/snaps-sdk@^6.17.1", "@metamask/snaps-sdk@^6.22.0", "@metamask/snaps-sdk@^6.22.1": + version "6.22.1" + resolved "https://registry.yarnpkg.com/@metamask/snaps-sdk/-/snaps-sdk-6.22.1.tgz#740b52dde4182b1851d507d8032f6e3e355b91c9" + integrity sha512-fnm7rdqC+VfAAntWm/xP8PW+ySEkUdJY3UU7/b74I3Qaujd5TlBqJSxp9K+DQIyR+aZZWITFZxxqpMq4JTaBQA== dependencies: "@metamask/key-tree" "^10.1.1" - "@metamask/providers" "^21.0.0" + "@metamask/providers" "^22.0.1" "@metamask/rpc-errors" "^7.0.2" "@metamask/superstruct" "^3.2.1" - "@metamask/utils" "^11.2.0" + "@metamask/utils" "^11.4.0" "@metamask/snaps-utils@^8.10.0": version "8.10.0" @@ -5752,10 +5752,10 @@ ses "^1.1.0" validate-npm-package-name "^5.0.0" -"@metamask/snaps-utils@^9.2.0": - version "9.2.0" - resolved "https://registry.yarnpkg.com/@metamask/snaps-utils/-/snaps-utils-9.2.0.tgz#9601c3bef6ae94adf449986207ff17166c6666a7" - integrity sha512-nmaTXXNGnLDTjcQxtovZwe2HCWJeeH4eLcSIyd9ops6R3ci1+DkrU8U0SYJPUO99jO88A6Lt4CSOivF5Rtrsig== +"@metamask/snaps-utils@^9.2.0", "@metamask/snaps-utils@^9.2.1": + version "9.2.1" + resolved "https://registry.yarnpkg.com/@metamask/snaps-utils/-/snaps-utils-9.2.1.tgz#3c5bff8a7b5c486227133d0176929beb893d98b2" + integrity sha512-Nt901AUu7KU5o/bo2giCvvrcflzWWXIc3xMoRE66ZKVlOYB/4DicTqcnSqK15VCeFgqYVrIRpfnNcEmfmA0uUA== dependencies: "@babel/core" "^7.23.2" "@babel/types" "^7.23.0" @@ -5765,9 +5765,9 @@ "@metamask/rpc-errors" "^7.0.2" "@metamask/slip44" "^4.1.0" "@metamask/snaps-registry" "^3.2.3" - "@metamask/snaps-sdk" "^6.22.0" + "@metamask/snaps-sdk" "^6.22.1" "@metamask/superstruct" "^3.2.1" - "@metamask/utils" "^11.2.0" + "@metamask/utils" "^11.4.0" "@noble/hashes" "^1.7.1" "@scure/base" "^1.1.1" chalk "^4.1.2" @@ -5779,7 +5779,7 @@ marked "^12.0.1" rfdc "^1.3.0" semver "^7.5.4" - ses "^1.1.0" + ses "^1.12.0" validate-npm-package-name "^5.0.0" "@metamask/solana-wallet-snap@^1.22.0": @@ -25988,12 +25988,12 @@ serve-static@1.16.2, serve-static@^1.13.1: parseurl "~1.3.3" send "0.19.0" -ses@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/ses/-/ses-1.2.0.tgz#88cea67bec9c6538bcc740baa939711622457c52" - integrity sha512-+klZ2zjFPbHAkf9owGeih+ZB1lqUqvVoCeL5IpNXmIZPhI5rGE1tR729EZmfBzmPh8j+CrsLr/+cTZUmHGFr9g== +ses@^1.1.0, ses@^1.12.0: + version "1.12.0" + resolved "https://registry.yarnpkg.com/ses/-/ses-1.12.0.tgz#f3cf22f67126cbd373aea0c501753952653699b1" + integrity sha512-jvmwXE2lFxIIY1j76hFjewIIhYMR9Slo3ynWZGtGl5M7VUCw3EA0wetS+JCIbl2UcSQjAT0yGAHkyxPJreuC9w== dependencies: - "@endo/env-options" "^1.1.1" + "@endo/env-options" "^1.1.8" set-blocking@2.0.0, set-blocking@^2.0.0: version "2.0.0" From cdef28ce9b05e5b99ee0b97e825fee2377165e0b Mon Sep 17 00:00:00 2001 From: "runway-github[bot]" <73448015+runway-github[bot]@users.noreply.github.com> Date: Mon, 28 Apr 2025 15:00:59 -0600 Subject: [PATCH 180/473] chore(runway): cherry-pick fix(ramp): cp-7.46.0 non evm address balance (#14946) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - fix(ramp): cp-7.46.0 non evm address balance (#14858) <!-- Please submit this PR as a draft initially. Do not mark it as "Ready for review" until the template has been completely filled out, and PR status checks have passed at least once. --> ## **Description** Fixes a bug where a solana address was being passed to a function expecting `0x..` addresses. Related: https://consensys.slack.com/archives/C04G8UGLL4R/p1745447050063689 ## **Related issues** Fixes: ## **Manual testing steps** 1. Go to Buy in Solana account 2. App must not crash 3. ## **Screenshots/Recordings** <!-- If applicable, add screenshots and/or recordings to visualize the before and after of your change. --> ### **Before** <!-- [screenshots/recordings] --> ### **After** <!-- [screenshots/recordings] --> ## **Pre-merge author checklist** - [ ] I’ve followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile Coding Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [ ] I've completed the PR template to the best of my ability - [ ] I’ve included tests if applicable - [ ] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [ ] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. ## **Pre-merge reviewer checklist** - [ ] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [ ] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots. [1e9fd15](https://github.com/MetaMask/metamask-mobile/commit/1e9fd150786c1de356cd9186d145c336fe4a0ddc) Co-authored-by: Pedro Pablo Aste Kompen <wachunei@gmail.com> --- app/components/UI/Ramp/Views/BuildQuote/BuildQuote.tsx | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/app/components/UI/Ramp/Views/BuildQuote/BuildQuote.tsx b/app/components/UI/Ramp/Views/BuildQuote/BuildQuote.tsx index 191f392c896c..27fd2bcb0568 100644 --- a/app/components/UI/Ramp/Views/BuildQuote/BuildQuote.tsx +++ b/app/components/UI/Ramp/Views/BuildQuote/BuildQuote.tsx @@ -83,6 +83,7 @@ import Text, { } from '../../../../../component-library/components/Texts/Text'; import ListItemColumnEnd from '../../components/ListItemColumnEnd'; import { BuildQuoteSelectors } from '../../../../../../e2e/selectors/Ramps/BuildQuote.selectors'; +import { isNonEvmAddress } from '../../../../../core/Multichain/utils'; import { trace, endTrace, TraceName } from '../../../../../util/trace'; // TODO: Replace "any" with type @@ -245,9 +246,14 @@ const BuildQuote = () => { [selectedAsset], ); + const addressForBalance = useMemo( + () => (isNonEvmAddress(selectedAddress) ? undefined : selectedAddress), + [selectedAddress], + ); + const { addressBalance } = useAddressBalance( assetForBalance as Asset, - selectedAddress, + addressForBalance, true, ); From d5e2fdcaa4409e5a44a6f962a1bdd7625ec991be Mon Sep 17 00:00:00 2001 From: metamaskbot <metamaskbot@users.noreply.github.com> Date: Mon, 28 Apr 2025 21:08:22 +0000 Subject: [PATCH 181/473] Bump version number to 1735 --- android/app/build.gradle | 2 +- bitrise.yml | 4 ++-- ios/MetaMask.xcodeproj/project.pbxproj | 12 ++++++------ 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/android/app/build.gradle b/android/app/build.gradle index 2f1d0b0c52c6..27c5a04cc19b 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -179,7 +179,7 @@ android { minSdkVersion rootProject.ext.minSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion versionName "7.46.0" - versionCode 1734 + versionCode 1735 testBuildType System.getProperty('testBuildType', 'debug') missingDimensionStrategy 'react-native-camera', 'general' testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" diff --git a/bitrise.yml b/bitrise.yml index 2ef37336da84..6d2383b299cd 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -2213,13 +2213,13 @@ app: VERSION_NAME: 7.46.0 - opts: is_expand: false - VERSION_NUMBER: 1734 + VERSION_NUMBER: 1735 - opts: is_expand: false FLASK_VERSION_NAME: 7.46.0 - opts: is_expand: false - FLASK_VERSION_NUMBER: 1734 + FLASK_VERSION_NUMBER: 1735 - opts: is_expand: false ANDROID_APK_LINK: '' diff --git a/ios/MetaMask.xcodeproj/project.pbxproj b/ios/MetaMask.xcodeproj/project.pbxproj index 08e6b11468d5..2d0e75f533d3 100644 --- a/ios/MetaMask.xcodeproj/project.pbxproj +++ b/ios/MetaMask.xcodeproj/project.pbxproj @@ -1261,7 +1261,7 @@ CODE_SIGN_IDENTITY = "Apple Development"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1734; + CURRENT_PROJECT_VERSION = 1735; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = 48XVW22RCG; @@ -1330,7 +1330,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMask.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1734; + CURRENT_PROJECT_VERSION = 1735; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 48XVW22RCG; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 48XVW22RCG; @@ -1395,7 +1395,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMaskDebug.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1734; + CURRENT_PROJECT_VERSION = 1735; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = 48XVW22RCG; @@ -1461,7 +1461,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMask.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1734; + CURRENT_PROJECT_VERSION = 1735; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 48XVW22RCG; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 48XVW22RCG; @@ -1620,7 +1620,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMaskDebug.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1734; + CURRENT_PROJECT_VERSION = 1735; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = 48XVW22RCG; @@ -1689,7 +1689,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMask.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1734; + CURRENT_PROJECT_VERSION = 1735; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 48XVW22RCG; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 48XVW22RCG; From 75fd133506322fee666d8e0fb427a32c2aea7b9e Mon Sep 17 00:00:00 2001 From: "runway-github[bot]" <73448015+runway-github[bot]@users.noreply.github.com> Date: Mon, 28 Apr 2025 16:12:51 -0600 Subject: [PATCH 182/473] chore(runway): cherry-pick chore(ramp): cp-7.46.0 update ramp sdk to 2.1.5 (#14950) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - chore(ramp): cp-7.46.0 update ramp sdk to 2.1.5 (#14595) <!-- Please submit this PR as a draft initially. Do not mark it as "Ready for review" until the template has been completely filled out, and PR status checks have passed at least once. --> ## **Description** Upgrades `onramp-sdk@2.1.3` which has changes intended to improve load times for the ramp experience. <!-- Write a short description of the changes included in this pull request, also include relevant motivation and context. Have in mind the following questions: 1. What is the reason for the change? 2. What is the improvement/solution? --> ## **Related issues** Fixes: ## **Manual testing steps** 1. Go to this page... 2. 3. ## **Screenshots/Recordings** <!-- If applicable, add screenshots and/or recordings to visualize the before and after of your change. --> ### **Before** <!-- [screenshots/recordings] --> ### **After** <!-- [screenshots/recordings] --> ## **Pre-merge author checklist** - [x] I’ve followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile Coding Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [x] I've completed the PR template to the best of my ability - [x] I’ve included tests if applicable - [x] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [x] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. ## **Pre-merge reviewer checklist** - [ ] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [ ] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots. --------- Co-authored-by: AxelGes <axelges9@gmail.com> Co-authored-by: Pedro Pablo Aste Kompen <wachunei@gmail.com> Co-authored-by: Curtis David <Curtis.David7@gmail.com> [2c2f546](https://github.com/MetaMask/metamask-mobile/commit/2c2f54698904f50fe0eb717c8818ea6f064c4359) Co-authored-by: George Weiler <georgejweiler@gmail.com> Co-authored-by: AxelGes <axelges9@gmail.com> Co-authored-by: Pedro Pablo Aste Kompen <wachunei@gmail.com> Co-authored-by: Curtis David <Curtis.David7@gmail.com> --- e2e/specs/ramps/onramp.spec.js | 2 +- package.json | 2 +- yarn.lock | 8 ++++---- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/e2e/specs/ramps/onramp.spec.js b/e2e/specs/ramps/onramp.spec.js index 549ce08ec238..e846f5bb3ab1 100644 --- a/e2e/specs/ramps/onramp.spec.js +++ b/e2e/specs/ramps/onramp.spec.js @@ -65,7 +65,7 @@ describe(SmokeTrade('Buy Crypto'), () => { await BuildQuoteView.tapCancelButton(); }); - it('should change parameters and select a quote', async () => { + it.skip('should change parameters and select a quote', async () => { const platform = device.getPlatform(); let paymentMethod; diff --git a/package.json b/package.json index d2b1f3eb6c44..2052529fb3b4 100644 --- a/package.json +++ b/package.json @@ -152,7 +152,7 @@ }, "dependencies": { "@config-plugins/detox": "^8.0.0", - "@consensys/on-ramp-sdk": "^2.0.14", + "@consensys/on-ramp-sdk": "^2.1.5", "@keystonehq/bc-ur-registry-eth": "^0.21.0", "@keystonehq/metamask-airgapped-keyring": "^0.15.2", "@keystonehq/ur-decoder": "^0.12.2", diff --git a/yarn.lock b/yarn.lock index 5e05631475d9..20fa47440ddd 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1433,10 +1433,10 @@ dependencies: expo-build-properties "~0.12.1" -"@consensys/on-ramp-sdk@^2.0.14": - version "2.0.14" - resolved "https://registry.yarnpkg.com/@consensys/on-ramp-sdk/-/on-ramp-sdk-2.0.14.tgz#140f3fc114f9b45ce3f4e087e91176bb7f8dde04" - integrity sha512-/Q48Gl+ptGPnU5vAAmzoUzsHoO6ivqQNvnJ5msyuZ0Eok3EeuAFDohDcKy4R2xHTxMirRnj0e1ZF69YCwTUIvQ== +"@consensys/on-ramp-sdk@^2.1.5": + version "2.1.5" + resolved "https://registry.yarnpkg.com/@consensys/on-ramp-sdk/-/on-ramp-sdk-2.1.5.tgz#6f9db25cc941603c05cc90a332c6740d5801e67a" + integrity sha512-P1UpkC/SYV2sAvfo1p+mUCCm+Ksg+Vdm9gOyuhNBFQw6eAtfsXq1V8wnN+R0+OJweYlq8fOH5ZZc/JvOWXveww== dependencies: async "^3.2.3" axios "^1.8.3" From 0c9515380bc3ff2a95eb25b50532c380bf170867 Mon Sep 17 00:00:00 2001 From: "runway-github[bot]" <73448015+runway-github[bot]@users.noreply.github.com> Date: Mon, 28 Apr 2025 16:41:12 -0600 Subject: [PATCH 183/473] chore(runway): cherry-pick chore(ramp): cp-7.46.0 upgrade sdk to v2.1.6 (#14951) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - chore(ramp): cp-7.46.0 upgrade sdk to v2.1.6 (#14930) <!-- Please submit this PR as a draft initially. Do not mark it as "Ready for review" until the template has been completely filled out, and PR status checks have passed at least once. --> ## **Description** Minor version upgrade to ramp SDK which includes a URL change to use new endpoints with better caching. <!-- Write a short description of the changes included in this pull request, also include relevant motivation and context. Have in mind the following questions: 1. What is the reason for the change? 2. What is the improvement/solution? --> ## **Related issues** Fixes: ## **Manual testing steps** 1. Go to this page... 2. 3. ## **Screenshots/Recordings** <!-- If applicable, add screenshots and/or recordings to visualize the before and after of your change. --> ### **Before** <!-- [screenshots/recordings] --> ### **After** <!-- [screenshots/recordings] --> ## **Pre-merge author checklist** - [ ] I’ve followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile Coding Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [ ] I've completed the PR template to the best of my ability - [ ] I’ve included tests if applicable - [ ] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [ ] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. ## **Pre-merge reviewer checklist** - [ ] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [ ] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots. [5eb00cc](https://github.com/MetaMask/metamask-mobile/commit/5eb00cce1a45d66988436f8ab46bfa5d29624532) Co-authored-by: Pedro Pablo Aste Kompen <wachunei@gmail.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 2052529fb3b4..1739f0c51c4a 100644 --- a/package.json +++ b/package.json @@ -152,7 +152,7 @@ }, "dependencies": { "@config-plugins/detox": "^8.0.0", - "@consensys/on-ramp-sdk": "^2.1.5", + "@consensys/on-ramp-sdk": "2.1.6", "@keystonehq/bc-ur-registry-eth": "^0.21.0", "@keystonehq/metamask-airgapped-keyring": "^0.15.2", "@keystonehq/ur-decoder": "^0.12.2", diff --git a/yarn.lock b/yarn.lock index 20fa47440ddd..0788c4eda78c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1433,10 +1433,10 @@ dependencies: expo-build-properties "~0.12.1" -"@consensys/on-ramp-sdk@^2.1.5": - version "2.1.5" - resolved "https://registry.yarnpkg.com/@consensys/on-ramp-sdk/-/on-ramp-sdk-2.1.5.tgz#6f9db25cc941603c05cc90a332c6740d5801e67a" - integrity sha512-P1UpkC/SYV2sAvfo1p+mUCCm+Ksg+Vdm9gOyuhNBFQw6eAtfsXq1V8wnN+R0+OJweYlq8fOH5ZZc/JvOWXveww== +"@consensys/on-ramp-sdk@2.1.6": + version "2.1.6" + resolved "https://registry.yarnpkg.com/@consensys/on-ramp-sdk/-/on-ramp-sdk-2.1.6.tgz#653dfae5569bd39c34010c04402792b9eae3f58e" + integrity sha512-UQUfkprykk5wshQLtCopf+BLyOnKTShrpQJ5UVFtqcT7B8WjESjpBXEZwAPr+UAbOGEDUaYzjUNHojnwMWwYCQ== dependencies: async "^3.2.3" axios "^1.8.3" From e0729541e68b12db57397cf0a470358dc2ab1216 Mon Sep 17 00:00:00 2001 From: "runway-github[bot]" <73448015+runway-github[bot]@users.noreply.github.com> Date: Mon, 28 Apr 2025 16:59:37 -0600 Subject: [PATCH 184/473] chore(runway): cherry-pick feat(bridge): cp-7.46.0 enable bridge UI in bitrise.yml (#14953) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - feat(bridge): cp-7.46.0 enable bridge UI in bitrise.yml (#14948) <!-- Please submit this PR as a draft initially. Do not mark it as "Ready for review" until the template has been completely filled out, and PR status checks have passed at least once. --> ## **Description** This PR adds a new temp bitrise env variable to enable the Bridge UI in mobile. This will enable the new solana swaps/bridge using bitrise variables to unblock other teams from testing on the 7.46.0 RC build. This will be removed in the PR [here](https://github.com/MetaMask/metamask-mobile/pull/14865) where @infiniteflower is working to integrate remote feature flags . This will give him more time to test his feature flag work and unblock teams to test the new solana swap and bridge. ## **Related issues** Fixes: ## **Manual testing steps** 1. Start the app on main without setting any .js.env variable related to bridge 2. You should see the new native bridge UI ## **Screenshots/Recordings** <!-- If applicable, add screenshots and/or recordings to visualize the before and after of your change. --> ### **Before** <!-- [screenshots/recordings] --> ### **After** <!-- [screenshots/recordings] --> ## **Pre-merge author checklist** - [x] I’ve followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile Coding Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [x] I've completed the PR template to the best of my ability - [x] I’ve included tests if applicable - [x] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [x] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. ## **Pre-merge reviewer checklist** - [ ] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [ ] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots. [d8220d1](https://github.com/MetaMask/metamask-mobile/commit/d8220d11e7f50f01b286cd04cf4f90b6db13d937) Co-authored-by: Amitabh Aggarwal <aggarwal.amitabh@gmail.com> --- bitrise.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/bitrise.yml b/bitrise.yml index 6d2383b299cd..c6ac299f0f1e 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -2160,6 +2160,9 @@ app: - opts: is_expand: false MM_NETWORK_UI_REDESIGN_ENABLED: false + - opts: + is_expand: false + MM_BRIDGE_UI_ENABLED: true - opts: is_expand: false PORTFOLIO_VIEW: true From b2e1616c48d8ca7e1c49594ba1f7ca8c0dea2044 Mon Sep 17 00:00:00 2001 From: metamaskbot <metamaskbot@users.noreply.github.com> Date: Mon, 28 Apr 2025 23:01:09 +0000 Subject: [PATCH 185/473] Bump version number to 1736 --- android/app/build.gradle | 2 +- bitrise.yml | 4 ++-- ios/MetaMask.xcodeproj/project.pbxproj | 12 ++++++------ 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/android/app/build.gradle b/android/app/build.gradle index 27c5a04cc19b..846c2decebe0 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -179,7 +179,7 @@ android { minSdkVersion rootProject.ext.minSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion versionName "7.46.0" - versionCode 1735 + versionCode 1736 testBuildType System.getProperty('testBuildType', 'debug') missingDimensionStrategy 'react-native-camera', 'general' testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" diff --git a/bitrise.yml b/bitrise.yml index c6ac299f0f1e..6d58183f9f49 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -2216,13 +2216,13 @@ app: VERSION_NAME: 7.46.0 - opts: is_expand: false - VERSION_NUMBER: 1735 + VERSION_NUMBER: 1736 - opts: is_expand: false FLASK_VERSION_NAME: 7.46.0 - opts: is_expand: false - FLASK_VERSION_NUMBER: 1735 + FLASK_VERSION_NUMBER: 1736 - opts: is_expand: false ANDROID_APK_LINK: '' diff --git a/ios/MetaMask.xcodeproj/project.pbxproj b/ios/MetaMask.xcodeproj/project.pbxproj index 2d0e75f533d3..1a4095003c27 100644 --- a/ios/MetaMask.xcodeproj/project.pbxproj +++ b/ios/MetaMask.xcodeproj/project.pbxproj @@ -1261,7 +1261,7 @@ CODE_SIGN_IDENTITY = "Apple Development"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1735; + CURRENT_PROJECT_VERSION = 1736; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = 48XVW22RCG; @@ -1330,7 +1330,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMask.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1735; + CURRENT_PROJECT_VERSION = 1736; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 48XVW22RCG; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 48XVW22RCG; @@ -1395,7 +1395,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMaskDebug.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1735; + CURRENT_PROJECT_VERSION = 1736; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = 48XVW22RCG; @@ -1461,7 +1461,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMask.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1735; + CURRENT_PROJECT_VERSION = 1736; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 48XVW22RCG; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 48XVW22RCG; @@ -1620,7 +1620,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMaskDebug.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1735; + CURRENT_PROJECT_VERSION = 1736; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = 48XVW22RCG; @@ -1689,7 +1689,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMask.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1735; + CURRENT_PROJECT_VERSION = 1736; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 48XVW22RCG; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 48XVW22RCG; From 3a72a59ad08a1aaeb3ff72b12e12e5dfcf080590 Mon Sep 17 00:00:00 2001 From: metamaskbot <metamaskbot@users.noreply.github.com> Date: Mon, 28 Apr 2025 23:23:53 +0000 Subject: [PATCH 186/473] Bump version number to 1737 --- android/app/build.gradle | 2 +- bitrise.yml | 4 ++-- ios/MetaMask.xcodeproj/project.pbxproj | 12 ++++++------ 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/android/app/build.gradle b/android/app/build.gradle index 846c2decebe0..42be2e59ba4b 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -179,7 +179,7 @@ android { minSdkVersion rootProject.ext.minSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion versionName "7.46.0" - versionCode 1736 + versionCode 1737 testBuildType System.getProperty('testBuildType', 'debug') missingDimensionStrategy 'react-native-camera', 'general' testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" diff --git a/bitrise.yml b/bitrise.yml index 6d58183f9f49..c3e62a722596 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -2216,13 +2216,13 @@ app: VERSION_NAME: 7.46.0 - opts: is_expand: false - VERSION_NUMBER: 1736 + VERSION_NUMBER: 1737 - opts: is_expand: false FLASK_VERSION_NAME: 7.46.0 - opts: is_expand: false - FLASK_VERSION_NUMBER: 1736 + FLASK_VERSION_NUMBER: 1737 - opts: is_expand: false ANDROID_APK_LINK: '' diff --git a/ios/MetaMask.xcodeproj/project.pbxproj b/ios/MetaMask.xcodeproj/project.pbxproj index 1a4095003c27..5bdd21abc081 100644 --- a/ios/MetaMask.xcodeproj/project.pbxproj +++ b/ios/MetaMask.xcodeproj/project.pbxproj @@ -1261,7 +1261,7 @@ CODE_SIGN_IDENTITY = "Apple Development"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1736; + CURRENT_PROJECT_VERSION = 1737; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = 48XVW22RCG; @@ -1330,7 +1330,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMask.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1736; + CURRENT_PROJECT_VERSION = 1737; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 48XVW22RCG; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 48XVW22RCG; @@ -1395,7 +1395,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMaskDebug.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1736; + CURRENT_PROJECT_VERSION = 1737; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = 48XVW22RCG; @@ -1461,7 +1461,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMask.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1736; + CURRENT_PROJECT_VERSION = 1737; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 48XVW22RCG; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 48XVW22RCG; @@ -1620,7 +1620,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMaskDebug.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1736; + CURRENT_PROJECT_VERSION = 1737; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = 48XVW22RCG; @@ -1689,7 +1689,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMask.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1736; + CURRENT_PROJECT_VERSION = 1737; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 48XVW22RCG; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 48XVW22RCG; From 0c882d65e673093ce3ff6d5bcf78eed9e25e6f79 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 28 Apr 2025 17:37:09 -0600 Subject: [PATCH 187/473] chore: cherry-pick #14920 (#14955) This PR cherry-picks #14920 Co-authored-by: Prithpal Sooriya <prithpal.sooriya@consensys.net> --- .../BottomSheetDialog/BottomSheetDialog.constants.ts | 4 ++-- app/component-library/components/Overlay/Overlay.constants.ts | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/app/component-library/components/BottomSheets/BottomSheet/foundation/BottomSheetDialog/BottomSheetDialog.constants.ts b/app/component-library/components/BottomSheets/BottomSheet/foundation/BottomSheetDialog/BottomSheetDialog.constants.ts index 0fe149de8b35..362252461dc5 100644 --- a/app/component-library/components/BottomSheets/BottomSheet/foundation/BottomSheetDialog/BottomSheetDialog.constants.ts +++ b/app/component-library/components/BottomSheets/BottomSheet/foundation/BottomSheetDialog/BottomSheetDialog.constants.ts @@ -8,12 +8,12 @@ import { AnimationDuration } from '../../../../../constants/animation.constants' * The animation duration used for initial render. */ export const DEFAULT_BOTTOMSHEETDIALOG_DISPLAY_DURATION = - AnimationDuration.Regularly; + AnimationDuration.Immediately; /** * This number represents the swipe speed to meet the velocity threshold. */ export const DEFAULT_BOTTOMSHEETDIALOG_SWIPETHRESHOLD_DURATION = - AnimationDuration.Regularly; + AnimationDuration.Immediately; /** * This indicates that 60% of the sheet needs to be offscreen to meet the distance threshold. */ diff --git a/app/component-library/components/Overlay/Overlay.constants.ts b/app/component-library/components/Overlay/Overlay.constants.ts index 70e9c557a7f1..9b825352c89e 100644 --- a/app/component-library/components/Overlay/Overlay.constants.ts +++ b/app/component-library/components/Overlay/Overlay.constants.ts @@ -4,4 +4,4 @@ import { AnimationDuration } from '../../constants/animation.constants'; // Defaults -export const DEFAULT_OVERLAY_ANIMATION_DURATION = AnimationDuration.Regularly; +export const DEFAULT_OVERLAY_ANIMATION_DURATION = AnimationDuration.Immediately; From 6420b119568e6a438bc70c09d6cfe6a92db3d773 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 28 Apr 2025 17:38:05 -0600 Subject: [PATCH 188/473] chore: cherry-pick #14925 (#14956) This PR cherry-picks #14925 Co-authored-by: Prithpal Sooriya <prithpal.sooriya@consensys.net> Co-authored-by: sethkfman <10342624+sethkfman@users.noreply.github.com> --- .../Tokens/TokenList/TokenListItem/index.tsx | 3 -- app/components/UI/Tokens/index.tsx | 49 +++++++++---------- .../AssetPollingProvider.test.tsx | 6 +-- .../AssetPolling/AssetPollingProvider.tsx | 8 +-- 4 files changed, 29 insertions(+), 37 deletions(-) diff --git a/app/components/UI/Tokens/TokenList/TokenListItem/index.tsx b/app/components/UI/Tokens/TokenList/TokenListItem/index.tsx index 7fc03e23bb96..5b5136269ce5 100644 --- a/app/components/UI/Tokens/TokenList/TokenListItem/index.tsx +++ b/app/components/UI/Tokens/TokenList/TokenListItem/index.tsx @@ -3,7 +3,6 @@ import { View } from 'react-native'; import { Hex, isCaipChainId } from '@metamask/utils'; import { useSelector } from 'react-redux'; import { useNavigation } from '@react-navigation/native'; -import useTokenBalancesController from '../../../../hooks/useTokenBalancesController/useTokenBalancesController'; import { useTheme } from '../../../../../util/theme'; import { TOKEN_BALANCE_LOADING, TOKEN_RATE_UNDEFINED } from '../../constants'; import { deriveBalanceFromAssetMarketDetails } from '../../util/deriveBalanceFromAssetMarketDetails'; @@ -78,8 +77,6 @@ export const TokenListItem = React.memo( const navigation = useNavigation(); const { colors } = useTheme(); - useTokenBalancesController(); - const isEvmNetworkSelected = useSelector(selectIsEvmNetworkSelected); const selectedInternalAccountAddress = useSelector( selectSelectedInternalAccountAddress, diff --git a/app/components/UI/Tokens/index.tsx b/app/components/UI/Tokens/index.tsx index 07df7e63fdd4..2e1ed06f86e0 100644 --- a/app/components/UI/Tokens/index.tsx +++ b/app/components/UI/Tokens/index.tsx @@ -189,32 +189,31 @@ const Tokens = memo(() => { ); return ( - <AssetPollingProvider> - <View - style={styles.wrapper} - testID={WalletViewSelectorsIDs.TOKENS_CONTAINER} - > - <TokenListControlBar goToAddToken={goToAddToken} /> - {tokensList && ( - <TokenList - tokens={tokensList} - refreshing={refreshing} - isAddTokenEnabled={isAddTokenEnabled} - onRefresh={onRefresh} - showRemoveMenu={showRemoveMenu} - goToAddToken={goToAddToken} - /> - )} - <ActionSheet - ref={actionSheet as LegacyRef<typeof ActionSheet>} - title={strings('wallet.remove_token_title')} - options={[strings('wallet.remove'), strings('wallet.cancel')]} - cancelButtonIndex={1} - destructiveButtonIndex={0} - onPress={onActionSheetPress} + <View + style={styles.wrapper} + testID={WalletViewSelectorsIDs.TOKENS_CONTAINER} + > + <AssetPollingProvider /> + <TokenListControlBar goToAddToken={goToAddToken} /> + {tokensList && ( + <TokenList + tokens={tokensList} + refreshing={refreshing} + isAddTokenEnabled={isAddTokenEnabled} + onRefresh={onRefresh} + showRemoveMenu={showRemoveMenu} + goToAddToken={goToAddToken} /> - </View> - </AssetPollingProvider> + )} + <ActionSheet + ref={actionSheet as LegacyRef<typeof ActionSheet>} + title={strings('wallet.remove_token_title')} + options={[strings('wallet.remove'), strings('wallet.cancel')]} + cancelButtonIndex={1} + destructiveButtonIndex={0} + onPress={onActionSheetPress} + /> + </View> ); }); diff --git a/app/components/hooks/AssetPolling/AssetPollingProvider.test.tsx b/app/components/hooks/AssetPolling/AssetPollingProvider.test.tsx index c954398b018d..c3e3e41453b0 100644 --- a/app/components/hooks/AssetPolling/AssetPollingProvider.test.tsx +++ b/app/components/hooks/AssetPolling/AssetPollingProvider.test.tsx @@ -12,11 +12,7 @@ jest.mock('./useAccountTrackerPolling', () => jest.fn()); describe('AssetPollingProvider', () => { it('should call all polling hooks', () => { - render( - <AssetPollingProvider> - <div></div> - </AssetPollingProvider>, - ); + render(<AssetPollingProvider />); expect(jest.requireMock('./useCurrencyRatePolling')).toHaveBeenCalled(); expect(jest.requireMock('./useTokenRatesPolling')).toHaveBeenCalled(); diff --git a/app/components/hooks/AssetPolling/AssetPollingProvider.tsx b/app/components/hooks/AssetPolling/AssetPollingProvider.tsx index 4cc7f880aece..94689c5afdb8 100644 --- a/app/components/hooks/AssetPolling/AssetPollingProvider.tsx +++ b/app/components/hooks/AssetPolling/AssetPollingProvider.tsx @@ -1,4 +1,4 @@ -import React, { ReactNode } from 'react'; +import React from 'react'; import useCurrencyRatePolling from './useCurrencyRatePolling'; import useTokenRatesPolling from './useTokenRatesPolling'; import useTokenDetectionPolling from './useTokenDetectionPolling'; @@ -9,7 +9,7 @@ import useAccountTrackerPolling from './useAccountTrackerPolling'; // This provider is a step towards making controller polling fully UI based. // Eventually, individual UI components will call the use*Polling hooks to // poll and return particular data. This polls globally in the meantime. -export const AssetPollingProvider = ({ children }: { children: ReactNode }) => { +export const AssetPollingProvider = React.memo(() => { useCurrencyRatePolling(); useTokenRatesPolling(); useTokenDetectionPolling(); @@ -17,5 +17,5 @@ export const AssetPollingProvider = ({ children }: { children: ReactNode }) => { useTokenListPolling(); useTokenBalancesPolling(); - return <>{children}</>; -}; + return null; +}); From ab0b21783f999abc2040962d918c9353c9f2d069 Mon Sep 17 00:00:00 2001 From: metamaskbot <metamaskbot@users.noreply.github.com> Date: Mon, 28 Apr 2025 23:39:08 +0000 Subject: [PATCH 189/473] Bump version number to 1738 --- android/app/build.gradle | 2 +- bitrise.yml | 4 ++-- ios/MetaMask.xcodeproj/project.pbxproj | 12 ++++++------ 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/android/app/build.gradle b/android/app/build.gradle index 9cc8f295ff18..87c730a0ddb4 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -179,7 +179,7 @@ android { minSdkVersion rootProject.ext.minSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion versionName "7.45.0" - versionCode 1732 + versionCode 1738 testBuildType System.getProperty('testBuildType', 'debug') missingDimensionStrategy 'react-native-camera', 'general' testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" diff --git a/bitrise.yml b/bitrise.yml index 965871d68677..5d9b981f9cc8 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -2235,13 +2235,13 @@ app: VERSION_NAME: 7.45.0 - opts: is_expand: false - VERSION_NUMBER: 1732 + VERSION_NUMBER: 1738 - opts: is_expand: false FLASK_VERSION_NAME: 7.45.0 - opts: is_expand: false - FLASK_VERSION_NUMBER: 1732 + FLASK_VERSION_NUMBER: 1738 - opts: is_expand: false ANDROID_APK_LINK: '' diff --git a/ios/MetaMask.xcodeproj/project.pbxproj b/ios/MetaMask.xcodeproj/project.pbxproj index 2481f15df218..64e12de74ac3 100644 --- a/ios/MetaMask.xcodeproj/project.pbxproj +++ b/ios/MetaMask.xcodeproj/project.pbxproj @@ -1261,7 +1261,7 @@ CODE_SIGN_IDENTITY = "Apple Development"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1732; + CURRENT_PROJECT_VERSION = 1738; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = 48XVW22RCG; @@ -1330,7 +1330,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMask.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1732; + CURRENT_PROJECT_VERSION = 1738; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 48XVW22RCG; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 48XVW22RCG; @@ -1395,7 +1395,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMaskDebug.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1732; + CURRENT_PROJECT_VERSION = 1738; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = 48XVW22RCG; @@ -1461,7 +1461,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMask.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1732; + CURRENT_PROJECT_VERSION = 1738; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 48XVW22RCG; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 48XVW22RCG; @@ -1620,7 +1620,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMaskDebug.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1732; + CURRENT_PROJECT_VERSION = 1738; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = 48XVW22RCG; @@ -1689,7 +1689,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMask.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1732; + CURRENT_PROJECT_VERSION = 1738; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 48XVW22RCG; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 48XVW22RCG; From ad7fc0cd4156c4124a59c1635fd82d4b073c14ff Mon Sep 17 00:00:00 2001 From: "runway-github[bot]" <73448015+runway-github[bot]@users.noreply.github.com> Date: Tue, 29 Apr 2025 17:00:42 +0200 Subject: [PATCH 190/473] chore(runway): cherry-pick add percent change for asset list v2 (#14962) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - fix: cp-7.46.0 add percent change for asset list v2 (#14892) ## **Description** Adds asset list 24h price change ## **Related issues** Fixes: ## **Manual testing steps** 1. Switch to a Solana account 2. You should be able to see the 24h percent change on the asset list and aggregated balance ## **Screenshots/Recordings** <!-- If applicable, add screenshots and/or recordings to visualize the before and after of your change. --> ### **Before** <!-- [screenshots/recordings] --> ### **After** <!-- [screenshots/recordings] --> <img width="391" alt="Screenshot 2025-04-24 at 15 44 55" src="https://github.com/user-attachments/assets/07aa7f85-ada1-45e2-96a4-dfd442df7d09" /> ## **Pre-merge author checklist** - [ ] I’ve followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile Coding Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [ ] I've completed the PR template to the best of my ability - [ ] I’ve included tests if applicable - [ ] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [ ] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. ## **Pre-merge reviewer checklist** - [ ] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [ ] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots. [32ecc2c](https://github.com/MetaMask/metamask-mobile/commit/32ecc2ceb6907a543660b305314522babd016f2b) --------- Co-authored-by: sahar-fehri <sahar.fehri@consensys.net> Co-authored-by: Nico MASSART <NicolasMassart@users.noreply.github.com> --- .../NonEvmAggregatedPercentage.test.tsx | 173 ++++++++++++++++++ .../NonEvmAggregatedPercentage.tsx | 157 ++++++++++++++++ .../Price/AggregatedPercentage/utils.ts | 45 +++++ .../TokenList/PortfolioBalance/index.test.tsx | 6 + .../TokenList/PortfolioBalance/index.tsx | 9 +- .../Tokens/TokenList/TokenListItem/index.tsx | 46 +++-- .../useMultichainBalances.ts | 15 +- app/selectors/accountsController.ts | 4 +- app/selectors/multichain/multichain.test.ts | 2 +- app/selectors/multichain/multichain.ts | 21 ++- 10 files changed, 444 insertions(+), 34 deletions(-) create mode 100644 app/component-library/components-temp/Price/AggregatedPercentage/NonEvmAggregatedPercentage.test.tsx create mode 100644 app/component-library/components-temp/Price/AggregatedPercentage/NonEvmAggregatedPercentage.tsx diff --git a/app/component-library/components-temp/Price/AggregatedPercentage/NonEvmAggregatedPercentage.test.tsx b/app/component-library/components-temp/Price/AggregatedPercentage/NonEvmAggregatedPercentage.test.tsx new file mode 100644 index 000000000000..e30aae115644 --- /dev/null +++ b/app/component-library/components-temp/Price/AggregatedPercentage/NonEvmAggregatedPercentage.test.tsx @@ -0,0 +1,173 @@ +import React from 'react'; +import { render } from '@testing-library/react-native'; +import { mockTheme } from '../../../../util/theme'; +import { useSelector } from 'react-redux'; +import { selectCurrentCurrency } from '../../../../selectors/currencyRateController'; +import { + FORMATTED_VALUE_PRICE_TEST_ID, + FORMATTED_PERCENTAGE_TEST_ID, +} from './AggregatedPercentage.constants'; +import NonEvmAggregatedPercentage from './NonEvmAggregatedPercentage'; +// eslint-disable-next-line import/no-namespace +import * as multichain from '../../../../selectors/multichain/multichain'; +import { selectMultichainAssetsRates } from '../../../../selectors/multichain/multichain'; + +const mockGetMultichainNetworkAggregatedBalance = { + tokenBalances: { + 'solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp/slip44:501': { + amount: '1', + unit: 'SOL', + }, + 'solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp/token:2zMMhcVQEXDtdE6vsFS7S7D5oUodfJHE8vd1gnBouauv': + { + amount: '5', + unit: 'PENGU', + }, + 'solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp/token:EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v': + { + amount: '10', + unit: 'USDC', + }, + }, + fiatBalances: { + 'solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp/slip44:501': '1', + 'solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp/token:2zMMhcVQEXDtdE6vsFS7S7D5oUodfJHE8vd1gnBouauv': + '5.4', + 'solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp/token:EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v': + '10.', + }, + totalBalanceFiat: 16.4, + totalNativeTokenBalance: { + amount: '1', + unit: 'SOL', + }, +}; + +const mockMultichainAssetsRatesPositive = { + 'solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp/slip44:501': { + marketData: { + pricePercentChange: { + P1D: +1.1, + }, + }, + rate: '147.98', + }, + 'solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp/token:2zMMhcVQEXDtdE6vsFS7S7D5oUodfJHE8vd1gnBouauv': + { + marketData: { + pricePercentChange: { + P1D: +2.7, + }, + }, + rate: '0.00624788', + }, + 'solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp/token:EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v': + { + marketData: { + pricePercentChange: { + P1D: +0.5, + }, + }, + rate: '0.999998', + }, +}; + +const mockMultichainAssetsRatesNegative = { + 'solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp/slip44:501': { + marketData: { + pricePercentChange: { + P1D: -1.1, + }, + }, + rate: '147.98', + }, + 'solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp/token:2zMMhcVQEXDtdE6vsFS7S7D5oUodfJHE8vd1gnBouauv': + { + marketData: { + pricePercentChange: { + P1D: -2.7, + }, + }, + rate: '0.00624788', + }, + 'solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp/token:EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v': + { + marketData: { + pricePercentChange: { + P1D: -0.5, + }, + }, + rate: '0.999998', + }, +}; + +jest.mock('react-redux', () => ({ + ...jest.requireActual('react-redux'), + useSelector: jest.fn(), +})); +describe('NonEvmAggregatedPercentage', () => { + beforeEach(() => { + (useSelector as jest.Mock).mockImplementation((selector) => { + if (selector === selectCurrentCurrency) return 'USD'; + }); + }); + afterEach(() => { + (useSelector as jest.Mock).mockClear(); + }); + + it('renders positive percentage change correctly', () => { + jest + .spyOn(multichain, 'getMultichainNetworkAggregatedBalance') + .mockReturnValue(mockGetMultichainNetworkAggregatedBalance); + (useSelector as jest.Mock).mockImplementation((selector) => { + if (selector === selectCurrentCurrency) return 'USD'; + if (selector === selectMultichainAssetsRates) + return mockMultichainAssetsRatesPositive; + }); + const { getByText } = render(<NonEvmAggregatedPercentage />); + + expect(getByText('(+1.25%)')).toBeTruthy(); + expect(getByText('+$0.20')).toBeTruthy(); + + expect(getByText('(+1.25%)').props.style).toMatchObject({ + color: mockTheme.colors.success.default, + }); + }); + + it('renders negative percentage change correctly', () => { + jest + .spyOn(multichain, 'getMultichainNetworkAggregatedBalance') + .mockReturnValue(mockGetMultichainNetworkAggregatedBalance); + (useSelector as jest.Mock).mockImplementation((selector) => { + if (selector === selectCurrentCurrency) return 'USD'; + if (selector === selectMultichainAssetsRates) + return mockMultichainAssetsRatesNegative; + }); + const { getByText } = render(<NonEvmAggregatedPercentage />); + + expect(getByText('(-1.27%)')).toBeTruthy(); + expect(getByText('-$0.21')).toBeTruthy(); + + expect(getByText('(-1.27%)').props.style).toMatchObject({ + color: mockTheme.colors.error.default, + }); + }); + + it('renders correctly with privacy mode on', () => { + jest + .spyOn(multichain, 'getMultichainNetworkAggregatedBalance') + .mockReturnValue(mockGetMultichainNetworkAggregatedBalance); + (useSelector as jest.Mock).mockImplementation((selector) => { + if (selector === selectCurrentCurrency) return 'USD'; + if (selector === selectMultichainAssetsRates) + return mockMultichainAssetsRatesNegative; + }); + const { getByTestId } = render(<NonEvmAggregatedPercentage privacyMode />); + + const formattedPercentage = getByTestId(FORMATTED_PERCENTAGE_TEST_ID); + const formattedValuePrice = getByTestId(FORMATTED_VALUE_PRICE_TEST_ID); + + expect(formattedPercentage.props.children).toBe('••••••••••'); + expect(formattedValuePrice.props.children).toBe('••••••••••'); + }); +}); diff --git a/app/component-library/components-temp/Price/AggregatedPercentage/NonEvmAggregatedPercentage.tsx b/app/component-library/components-temp/Price/AggregatedPercentage/NonEvmAggregatedPercentage.tsx new file mode 100644 index 000000000000..c9890df89505 --- /dev/null +++ b/app/component-library/components-temp/Price/AggregatedPercentage/NonEvmAggregatedPercentage.tsx @@ -0,0 +1,157 @@ +import React, { useCallback, useMemo } from 'react'; +import { + TextColor, + TextVariant, +} from '../../../../component-library/components/Texts/Text'; +import SensitiveText from '../../../../component-library/components/Texts/SensitiveText'; +import { View } from 'react-native'; +import { useSelector } from 'react-redux'; +import { selectCurrentCurrency } from '../../../../selectors/currencyRateController'; +import styleSheet from './AggregatedPercentage.styles'; +import { useStyles } from '../../../hooks'; +import { + FORMATTED_VALUE_PRICE_TEST_ID, + FORMATTED_PERCENTAGE_TEST_ID, +} from './AggregatedPercentage.constants'; +import { + getMultichainNetworkAggregatedBalance, + selectMultichainAssets, + selectMultichainAssetsRates, + selectMultichainBalances, +} from '../../../../selectors/multichain/multichain'; +import { selectSelectedInternalAccount } from '../../../../selectors/accountsController'; +import { selectSelectedNonEvmNetworkChainId } from '../../../../selectors/multichainNetworkController'; +import { InternalAccount } from '@metamask/keyring-internal-api'; +import { CaipAssetType } from '@metamask/keyring-api'; +import { getCalculatedTokenAmount1dAgo } from './AggregatedPercentageCrossChains'; +import { getFormattedPercentageChange, getFormattedValuePrice } from './utils'; +import i18n from '../../../../../locales/i18n'; + +const isValidAmount = (amount: number | null | undefined): boolean => + amount !== null && amount !== undefined && !Number.isNaN(amount); + +const NonEvmAggregatedPercentage = ({ + privacyMode = false, +}: { + privacyMode?: boolean; +}) => { + const { styles } = useStyles(styleSheet, {}); + + const currentCurrency = useSelector(selectCurrentCurrency); + + const account = useSelector(selectSelectedInternalAccount); + const multichainBalances = useSelector(selectMultichainBalances); + const multichainAssets = useSelector(selectMultichainAssets); + const multichainAssetsRates = useSelector(selectMultichainAssetsRates); + const nonEvmChainId = useSelector(selectSelectedNonEvmNetworkChainId); + + // refactor this to memoize + const nonEvmAccountBalance = useMemo( + () => + getMultichainNetworkAggregatedBalance( + account as InternalAccount, + multichainBalances, + multichainAssets, + multichainAssetsRates, + nonEvmChainId, + ), + [ + account, + multichainBalances, + multichainAssets, + multichainAssetsRates, + nonEvmChainId, + ], + ); + + const nonEvmFiatBalancesArray = useMemo(() => { + if (!nonEvmAccountBalance?.fiatBalances) { + return []; + } + return Object.entries(nonEvmAccountBalance.fiatBalances).map( + ([id, amount]) => ({ + id: id as CaipAssetType, + fiatAmount: Number(amount), + }), + ); + }, [nonEvmAccountBalance?.fiatBalances]); + + // memoize this + const getNonEvmTotalFiat1dAgo = useCallback(() => { + const totalNonEvm1dAgo = nonEvmFiatBalancesArray.reduce( + (total1dAgo: number, item: { id: CaipAssetType; fiatAmount: number }) => { + const pricePercentChange1d = + multichainAssetsRates?.[item.id]?.marketData?.pricePercentChange + .P1D ?? 0; + const splTokenFiat1dAgo = getCalculatedTokenAmount1dAgo( + Number(item.fiatAmount), + pricePercentChange1d, + ); + return total1dAgo + Number(splTokenFiat1dAgo); + }, + 0, + ); + + return totalNonEvm1dAgo; + }, [nonEvmFiatBalancesArray, multichainAssetsRates]); + + const totalNonEvmBalance = nonEvmAccountBalance?.totalBalanceFiat; + if (!totalNonEvmBalance) { + return null; + } + + const totalNonEvmBalance1dAgo = getNonEvmTotalFiat1dAgo(); + const amountChange = totalNonEvmBalance - totalNonEvmBalance1dAgo; + + const percentageChange = + totalNonEvmBalance1dAgo === 0 + ? 0 + : (amountChange / totalNonEvmBalance1dAgo) * 100 || 0; + + let percentageTextColor = TextColor.Default; + + if (!privacyMode) { + if (percentageChange === 0) { + percentageTextColor = TextColor.Default; + } else if (percentageChange > 0) { + percentageTextColor = TextColor.Success; + } else { + percentageTextColor = TextColor.Error; + } + } else { + percentageTextColor = TextColor.Alternative; + } + + const formattedPercentage = isValidAmount(percentageChange) + ? getFormattedPercentageChange(percentageChange, i18n.locale) + : ''; + + const formattedValuePrice = isValidAmount(amountChange) + ? getFormattedValuePrice(amountChange, currentCurrency) + : ''; + + return ( + <View style={styles.wrapper}> + <SensitiveText + isHidden={privacyMode} + length="10" + color={percentageTextColor} + variant={TextVariant.BodyMDMedium} + testID={FORMATTED_VALUE_PRICE_TEST_ID} + > + {formattedValuePrice} + </SensitiveText> + <SensitiveText + isHidden={privacyMode} + length="10" + color={percentageTextColor} + variant={TextVariant.BodyMDMedium} + testID={FORMATTED_PERCENTAGE_TEST_ID} + > + {formattedPercentage} + </SensitiveText> + </View> + ); +}; + +export default React.memo(NonEvmAggregatedPercentage); diff --git a/app/component-library/components-temp/Price/AggregatedPercentage/utils.ts b/app/component-library/components-temp/Price/AggregatedPercentage/utils.ts index 77aea4b2ac2d..740b99d42bc8 100644 --- a/app/component-library/components-temp/Price/AggregatedPercentage/utils.ts +++ b/app/component-library/components-temp/Price/AggregatedPercentage/utils.ts @@ -1,4 +1,6 @@ +import i18n from '../../../../../locales/i18n'; import { DECIMALS_TO_SHOW } from '../../../../components/UI/Tokens/constants'; +import { formatWithThreshold } from '../../../../util/assets'; import { renderFiat } from '../../../../util/number'; import { TextColor } from '../../../components/Texts/Text'; @@ -30,3 +32,46 @@ export const getPercentageTextColor = ( } return percentageTextColor; }; + +export const getFormattedPercentageChange = ( + percentageChange: number, + locale: string, +) => { + const isPositiveChange = percentageChange >= 0; + + const formattedPercentage = formatWithThreshold( + Math.abs(percentageChange) / 100, // Take abs here to avoid confusing <0.01% formatting + 0.0001, + locale, + { + style: 'percent', + maximumFractionDigits: 2, + minimumFractionDigits: 2, + }, + ); + + const signPrefix = isPositiveChange ? '+' : '-'; + + return `(${signPrefix}${formattedPercentage})`; +}; + +export const getFormattedValuePrice = ( + amountChange: number, + currentCurrency: string, +) => { + const isPositiveChange = amountChange >= 0; + + const formattedAmount = formatWithThreshold( + Math.abs(amountChange), + 0.01, + i18n.locale, + { + style: 'currency', + currency: currentCurrency, + }, + ); + + const signPrefix = isPositiveChange ? '+' : '-'; + + return `${signPrefix}${formattedAmount}`; +}; diff --git a/app/components/UI/Tokens/TokenList/PortfolioBalance/index.test.tsx b/app/components/UI/Tokens/TokenList/PortfolioBalance/index.test.tsx index 80483625766f..15d992244ccf 100644 --- a/app/components/UI/Tokens/TokenList/PortfolioBalance/index.test.tsx +++ b/app/components/UI/Tokens/TokenList/PortfolioBalance/index.test.tsx @@ -133,12 +133,18 @@ const initialState = { TokenBalancesController: { tokenBalances: {}, }, + MultichainNetworkController: { + isEvmSelected: true, + }, }, }, settings: { primaryCurrency: 'usd', hideZeroBalanceTokens: true, }, + browser: { + tabs: [], + }, security: { dataCollectionForMarketing: true, }, diff --git a/app/components/UI/Tokens/TokenList/PortfolioBalance/index.tsx b/app/components/UI/Tokens/TokenList/PortfolioBalance/index.tsx index ffc74890b436..d59b0c27654a 100644 --- a/app/components/UI/Tokens/TokenList/PortfolioBalance/index.tsx +++ b/app/components/UI/Tokens/TokenList/PortfolioBalance/index.tsx @@ -30,8 +30,10 @@ import { WalletViewSelectorsIDs } from '../../../../../../e2e/selectors/wallet/W import { strings } from '../../../../../../locales/i18n'; import { EYE_SLASH_ICON_TEST_ID, EYE_ICON_TEST_ID } from './index.constants'; import AggregatedPercentageCrossChains from '../../../../../component-library/components-temp/Price/AggregatedPercentage/AggregatedPercentageCrossChains'; -import { useMultichainBalances } from '../../../../hooks/useMultichainBalances'; import Loader from '../../../../../component-library/components-temp/Loader/Loader'; +import NonEvmAggregatedPercentage from '../../../../../component-library/components-temp/Price/AggregatedPercentage/NonEvmAggregatedPercentage'; +import { selectIsEvmNetworkSelected } from '../../../../../selectors/multichainNetworkController'; +import { useMultichainBalances } from '../../../../hooks/useMultichainBalances'; export const PortfolioBalance = React.memo(() => { const { PreferencesController } = Engine.context; @@ -46,6 +48,7 @@ export const PortfolioBalance = React.memo(() => { const { trackEvent, isEnabled, createEventBuilder } = useMetrics(); const { selectedAccountMultichainBalance } = useMultichainBalances(); + const isEvmSelected = useSelector(selectIsEvmNetworkSelected); const onOpenPortfolio = useCallback(() => { const existingPortfolioTab = browserTabs.find(({ url }: BrowserTab) => @@ -108,6 +111,10 @@ export const PortfolioBalance = React.memo(() => { return null; } + if (!isEvmSelected) { + return <NonEvmAggregatedPercentage privacyMode={privacyMode} />; + } + return ( <AggregatedPercentageCrossChains privacyMode={privacyMode} diff --git a/app/components/UI/Tokens/TokenList/TokenListItem/index.tsx b/app/components/UI/Tokens/TokenList/TokenListItem/index.tsx index 0dd7c31b4e58..0b46f9ff8501 100644 --- a/app/components/UI/Tokens/TokenList/TokenListItem/index.tsx +++ b/app/components/UI/Tokens/TokenList/TokenListItem/index.tsx @@ -1,6 +1,12 @@ import React, { useCallback, useMemo } from 'react'; import { View } from 'react-native'; -import { Hex, isCaipChainId } from '@metamask/utils'; +import { + ///: BEGIN:ONLY_INCLUDE_IF(keyring-snaps) + CaipAssetType, + ///: END:ONLY_INCLUDE_IF(keyring-snaps) + Hex, + isCaipChainId, +} from '@metamask/utils'; import { useSelector } from 'react-redux'; import { useNavigation } from '@react-navigation/native'; import useTokenBalancesController from '../../../../hooks/useTokenBalancesController/useTokenBalancesController'; @@ -56,7 +62,9 @@ import { getNativeTokenAddress } from '@metamask/assets-controllers'; import { formatWithThreshold } from '../../../../../util/assets'; import { CustomNetworkNativeImgMapping } from './CustomNetworkNativeImgMapping'; import { TraceName, trace } from '../../../../../util/trace'; - +///: BEGIN:ONLY_INCLUDE_IF(keyring-snaps) +import { selectMultichainAssetsRates } from '../../../../../selectors/multichain/multichain'; +///: END:ONLY_INCLUDE_IF(keyring-snaps) interface TokenListItemProps { asset: TokenI; showScamWarningModal: boolean; @@ -100,7 +108,9 @@ export const TokenListItem = React.memo( const multiChainCurrencyRates = useSelector(selectCurrencyRates); const styles = createStyles(colors); - + ///: BEGIN:ONLY_INCLUDE_IF(keyring-snaps) + const allMultichainAssetsRates = useSelector(selectMultichainAssetsRates); + ///: END:ONLY_INCLUDE_IF(keyring-snaps) const itemAddress = isEvmNetworkSelected ? safeToChecksumAddress(asset.address) : asset.address; @@ -159,16 +169,24 @@ export const TokenListItem = React.memo( ], ); - const tokenPercentageChange = asset.address - ? multiChainMarketData?.[chainId as Hex]?.[asset.address as Hex] - ?.pricePercentChange1d - : undefined; - - const pricePercentChange1d = asset.isNative - ? multiChainMarketData?.[chainId as Hex]?.[ - getNativeTokenAddress(chainId as Hex) as Hex - ]?.pricePercentChange1d - : tokenPercentageChange; + const getPricePercentChange1d = () => { + const tokenPercentageChange = asset.address + ? multiChainMarketData?.[chainId as Hex]?.[asset.address as Hex] + ?.pricePercentChange1d + : undefined; + const evmPricePercentChange1d = asset.isNative + ? multiChainMarketData?.[chainId as Hex]?.[ + getNativeTokenAddress(chainId as Hex) as Hex + ]?.pricePercentChange1d + : tokenPercentageChange; + if (isEvmNetworkSelected) { + return evmPricePercentChange1d; + } + ///: BEGIN:ONLY_INCLUDE_IF(keyring-snaps) + return allMultichainAssetsRates[asset?.address as CaipAssetType] + ?.marketData?.pricePercentChange?.P1D; + ///: END:ONLY_INCLUDE_IF(keyring-snaps) + }; // render balances according to primary currency let mainBalance; @@ -363,7 +381,7 @@ export const TokenListItem = React.memo( )} </View> {!isTestNet(chainId) && showPercentageChange ? ( - <PercentageChange value={pricePercentChange1d} /> + <PercentageChange value={getPricePercentChange1d()} /> ) : null} </View> <ScamWarningIcon diff --git a/app/components/hooks/useMultichainBalances/useMultichainBalances.ts b/app/components/hooks/useMultichainBalances/useMultichainBalances.ts index 88c92b48b68e..0bc0780612c4 100644 --- a/app/components/hooks/useMultichainBalances/useMultichainBalances.ts +++ b/app/components/hooks/useMultichainBalances/useMultichainBalances.ts @@ -225,13 +225,7 @@ const useMultichainBalances = (): UseMultichainBalancesHook => { ); const getShouldShowAggregatedPercentage = useMemo( - // eslint-disable-next-line @typescript-eslint/no-unused-vars - () => (account: InternalAccount) => { - ///: BEGIN:ONLY_INCLUDE_IF(keyring-snaps) - return !isTestNet(chainId) && isEvmAccountType(account.type); - ///: END:ONLY_INCLUDE_IF - - // Note: This code marked as unreachable however when the above block gets removed after code fencing this return becomes necessary + () => () => { return !isTestNet(chainId); }, [chainId], @@ -252,8 +246,7 @@ const useMultichainBalances = (): UseMultichainBalancesHook => { tokenFiatBalancesCrossChains: totalFiatBalancesCrossEvmChain[account.address] ?.tokenFiatBalancesCrossChains ?? [], - shouldShowAggregatedPercentage: - getShouldShowAggregatedPercentage(account), + shouldShowAggregatedPercentage: getShouldShowAggregatedPercentage(), isPortfolioVieEnabled: isPortfolioEnabled, aggregatedBalance: getAggregatedBalance(account), }; @@ -282,9 +275,7 @@ const useMultichainBalances = (): UseMultichainBalancesHook => { tokenFiatBalancesCrossChains: totalFiatBalancesCrossEvmChain[selectedInternalAccount.address] ?.tokenFiatBalancesCrossChains ?? [], - shouldShowAggregatedPercentage: getShouldShowAggregatedPercentage( - selectedInternalAccount, - ), + shouldShowAggregatedPercentage: getShouldShowAggregatedPercentage(), isPortfolioVieEnabled: isPortfolioEnabled, aggregatedBalance: getAggregatedBalance(selectedInternalAccount), }; diff --git a/app/selectors/accountsController.ts b/app/selectors/accountsController.ts index c4b9ce22efdd..783cbb2c0ffa 100644 --- a/app/selectors/accountsController.ts +++ b/app/selectors/accountsController.ts @@ -58,7 +58,9 @@ export const selectInternalAccounts = createDeepEqualSelector( */ export const selectSelectedInternalAccount = createDeepEqualSelector( selectAccountsControllerState, - (accountsControllerState: AccountsControllerState) => { + ( + accountsControllerState: AccountsControllerState, + ): InternalAccount | undefined => { const accountId = accountsControllerState.internalAccounts.selectedAccount; const account = accountsControllerState.internalAccounts.accounts[accountId]; diff --git a/app/selectors/multichain/multichain.test.ts b/app/selectors/multichain/multichain.test.ts index bd27f0b9b882..43fdaa2a5616 100644 --- a/app/selectors/multichain/multichain.test.ts +++ b/app/selectors/multichain/multichain.test.ts @@ -689,7 +689,7 @@ describe('MultichainNonEvm Selectors', () => { // Should return undefined values since there are no Solana assets expect(result.totalNativeTokenBalance).toBeUndefined(); expect(result.totalBalanceFiat).toBeUndefined(); - expect(result.balances).toEqual({ + expect(result.tokenBalances).toEqual({ [btcNativeAssetId]: { amount: '0.5', unit: 'BTC' }, }); }); diff --git a/app/selectors/multichain/multichain.ts b/app/selectors/multichain/multichain.ts index c61f99a18894..5bbb6a85c968 100644 --- a/app/selectors/multichain/multichain.ts +++ b/app/selectors/multichain/multichain.ts @@ -22,7 +22,7 @@ import { selectSelectedNonEvmNetworkChainId, selectSelectedNonEvmNetworkSymbol, } from '../multichainNetworkController'; -import { parseCaipAssetType } from '@metamask/utils'; +import { CaipAssetType, parseCaipAssetType } from '@metamask/utils'; import BigNumber from 'bignumber.js'; import { InternalAccount } from '@metamask/keyring-internal-api'; import { @@ -194,6 +194,7 @@ export const selectMultichainTransactions = createDeepEqualSelector( multichainTransactionsControllerState.nonEvmTransactions, ); +// TODO: refactor this file to use createDeepEqualSelector export function selectMultichainAssets(state: RootState) { return state.engine.backgroundState.MultichainAssetsController.accountsAssets; } @@ -202,11 +203,16 @@ export function selectMultichainAssetsMetadata(state: RootState) { return state.engine.backgroundState.MultichainAssetsController.assetsMetadata; } -export function selectMultichainAssetsRates(state: RootState) { +export function selectMultichainAssetsRatesState(state: RootState) { return state.engine.backgroundState.MultichainAssetsRatesController .conversionRates; } +export const selectMultichainAssetsRates = createDeepEqualSelector( + selectMultichainAssetsRatesState, + (conversionRates) => conversionRates, +); + export function selectMultichainHistoricalPrices(state: RootState) { return state.engine.backgroundState.MultichainAssetsRatesController .historicalPrices; @@ -286,7 +292,8 @@ export const selectMultichainTokenListForAccountId = createDeepEqualSelector( export interface MultichainNetworkAggregatedBalance { totalNativeTokenBalance: Balance | undefined; totalBalanceFiat: number | undefined; - balances: Record<string, Balance> | undefined; + tokenBalances: Record<string, Balance> | undefined; + fiatBalances: Record<CaipAssetType, string> | undefined; } export const getMultichainNetworkAggregatedBalance = ( @@ -305,6 +312,7 @@ export const getMultichainNetworkAggregatedBalance = ( // Default values for native token let totalNativeTokenBalance: Balance | undefined; let totalBalanceFiat: BigNumber | undefined; + const fiatBalances: Record<string, string> = {}; for (const assetId of assetIds) { const { chainId } = parseCaipAssetType(assetId); @@ -321,6 +329,7 @@ export const getMultichainNetworkAggregatedBalance = ( balance.amount && rate ? new BigNumber(balance.amount).times(rate) : new BigNumber(0); + fiatBalances[assetId] = balanceInFiat.toString(); // Only update native token balance if this is the native asset if (assetId === nativeAsset) { @@ -340,7 +349,8 @@ export const getMultichainNetworkAggregatedBalance = ( totalBalanceFiat: totalBalanceFiat ? totalBalanceFiat.toNumber() : undefined, - balances, + tokenBalances: balances, + fiatBalances, }; }; @@ -362,7 +372,8 @@ export const selectSelectedAccountMultichainNetworkAggregatedBalance = return { totalNativeTokenBalance: undefined, totalBalanceFiat: undefined, - balances: {}, + tokenBalances: {}, + fiatBalances: {}, }; } return getMultichainNetworkAggregatedBalance( From e84775bedc8c736c445b74dd91d888b68f8b6c20 Mon Sep 17 00:00:00 2001 From: "runway-github[bot]" <73448015+runway-github[bot]@users.noreply.github.com> Date: Tue, 29 Apr 2025 19:47:09 +0200 Subject: [PATCH 191/473] chore(runway): cherry-pick fix: proceed anyways looping when EPD enabled (#14982) - fix: proceed anyways looping when EPD enabled (#14905) --- .../Views/BrowserTab/BrowserTab.tsx | 43 ++++++++++++------- 1 file changed, 27 insertions(+), 16 deletions(-) diff --git a/app/components/Views/BrowserTab/BrowserTab.tsx b/app/components/Views/BrowserTab/BrowserTab.tsx index e0f8c2eec194..6818060687a7 100644 --- a/app/components/Views/BrowserTab/BrowserTab.tsx +++ b/app/components/Views/BrowserTab/BrowserTab.tsx @@ -107,7 +107,10 @@ import { getURLProtocol } from '../../../util/general'; import { PROTOCOLS } from '../../../constants/deeplinks'; import Options from './components/Options'; import IpfsBanner from './components/IpfsBanner'; -import UrlAutocomplete, { AutocompleteSearchResult, UrlAutocompleteRef } from '../../UI/UrlAutocomplete'; +import UrlAutocomplete, { + AutocompleteSearchResult, + UrlAutocompleteRef, +} from '../../UI/UrlAutocomplete'; import { selectSearchEngine } from '../../../reducers/browser/selectors'; import { getPhishingTestResult, @@ -753,7 +756,9 @@ export const BrowserTab: React.FC<BrowserTabProps> = ({ // TODO: Make sure to replace with cache hits once EPD has been deprecated. if (!isProductSafetyDappScanningEnabled()) { const scanResult = getPhishingTestResult(urlToLoad); - if (scanResult.result) { + let whitelistUrlInput = prefixUrlWithProtocol(urlToLoad); + whitelistUrlInput = whitelistUrlInput.replace(/\/$/, ''); // removes trailing slash + if (scanResult.result && !whitelist.includes(whitelistUrlInput)) { handleNotAllowedUrl(urlToLoad); return false; } @@ -1194,19 +1199,22 @@ export const BrowserTab: React.FC<BrowserTabProps> = ({ /** * Handle autocomplete selection */ - const onSelect = useCallback((item: AutocompleteSearchResult) => { - // Unfocus the url bar and hide the autocomplete results - urlBarRef.current?.hide(); - - if (item.category === 'tokens') { - navigation.navigate(Routes.BROWSER.ASSET_LOADER, { - chainId: item.chainId, - address: item.address, - }); - } else { - onSubmitEditing(item.url); - } - }, [onSubmitEditing, navigation]); + const onSelect = useCallback( + (item: AutocompleteSearchResult) => { + // Unfocus the url bar and hide the autocomplete results + urlBarRef.current?.hide(); + + if (item.category === 'tokens') { + navigation.navigate(Routes.BROWSER.ASSET_LOADER, { + chainId: item.chainId, + address: item.address, + }); + } else { + onSubmitEditing(item.url); + } + }, + [onSubmitEditing, navigation], + ); /** * Handle autocomplete dismissal @@ -1222,7 +1230,10 @@ export const BrowserTab: React.FC<BrowserTabProps> = ({ /** * Hide the autocomplete results */ - const hideAutocomplete = useCallback(() => autocompleteRef.current?.hide(), []); + const hideAutocomplete = useCallback( + () => autocompleteRef.current?.hide(), + [], + ); const onCancelUrlBar = useCallback(() => { hideAutocomplete(); From de440949d8e78d389ea32280375c5e9cea5a8d14 Mon Sep 17 00:00:00 2001 From: MetaMask Bot <37885440+metamaskbot@users.noreply.github.com> Date: Tue, 29 Apr 2025 16:38:04 -0400 Subject: [PATCH 192/473] feat: 7.45.0 (#14597) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit # 🚀 v7.45.0 Testing & Release Quality Process Hi Team, As part of our new **MetaMask Release Quality Process**, here’s a quick overview of the key processes, testing strategies, and milestones to ensure a smooth and high-quality deployment. --- ## 📋 Key Processes ### Testing Strategy - **Developer Teams:** Conduct regression and exploratory testing for your functional areas, including automated and manual tests for critical workflows. - **QA Team:** Focus on exploratory testing across the wallet, prioritize high-impact areas, and triage any Sentry errors found during testing. - **Customer Success Team:** Validate new functionalities and provide feedback to support release monitoring. ### GitHub Signoff - Each team must **sign off on the Release Candidate (RC)** via GitHub by the end of the validation timeline (**Tuesday EOD PT**). - Ensure all tests outlined in the Testing Plan are executed, and any identified issues are addressed. ### Issue Resolution - **Resolve all Release Blockers** (Sev0 and Sev1) by **Tuesday EOD PT**. - For unresolved blockers, PRs may be reverted, or feature flags disabled to maintain release quality and timelines. ### Cherry-Picking Criteria - Only **critical fixes** meeting outlined criteria will be cherry-picked. - Developers must ensure these fixes are thoroughly reviewed, tested, and merged by **Tuesday EOD PT**. --- ## 🗓️ Timeline and Milestones 1. **Today (Friday):** Begin Release Candidate validation. 2. **Tuesday EOD PT:** Finalize RC with all fixes and cherry-picks. 3. **Wednesday:** Buffer day for final checks. 4. **Thursday:** Submit release to app stores and begin rollout to 1% of users. 5. **Monday:** Scale deployment to 10%. 6. **Tuesday:** Full rollout to 100%. --- ## ✅ Signoff Checklist Each team is responsible for signing off via GitHub. Use the checkbox below to track signoff completion: # Team sign-off checklist - [x] Accounts - [x] Assets - [x] Confirmations - [x] Design System - [x] Identity - [x] Mobile Platform - [x] Network Enablement - [x] Product Safety - [x] Ramp - [x] SDK - [x] Snaps Platform - [x] Solana - [x] Stake/Earn - [x] Swaps and Bridge - [x] Wallet Framework - [x] Wallet UX This process is a major step forward in ensuring release stability and quality. Let’s stay aligned and make this release a success! 🚀 Feel free to reach out if you have questions or need clarification. Many thanks in advance # Reference - Testing plan sheet - https://docs.google.com/spreadsheets/d/1tsoodlAlyvEUpkkcNcbZ4PM9HuC9cEM80RZeoVv5OCQ/edit?usp=sharing --------- Signed-off-by: augmentedmode <jacob.lebowitz@consensys.net> Co-authored-by: metamaskbot <metamaskbot@users.noreply.github.com> Co-authored-by: sethkfman <10342624+sethkfman@users.noreply.github.com> Co-authored-by: George Marshall <george.marshall@consensys.net> Co-authored-by: Vince Howard <vincenguyenhoward@gmail.com> Co-authored-by: runway-github[bot] <73448015+runway-github[bot]@users.noreply.github.com> Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: sahar-fehri <sahar.fehri@consensys.net> Co-authored-by: Aslau Mario-Daniel <marioaslau@gmail.com> Co-authored-by: Eric Bishard <eric@httpjunkie.com> Co-authored-by: Owen Craston <owen.craston@consensys.net> Co-authored-by: tommasini <46944231+tommasini@users.noreply.github.com> Co-authored-by: Curtis David <Curtis.David7@gmail.com> Co-authored-by: Davide Brocchetto <davide.brocchetto@consensys.net> Co-authored-by: Matthew Grainger <46547583+Matt561@users.noreply.github.com> Co-authored-by: OGPoyraz <omergoktugpoyraz@gmail.com> Co-authored-by: Daniel <80175477+dan437@users.noreply.github.com> Co-authored-by: Jyoti Puri <jyotipuri@gmail.com> Co-authored-by: Prithpal Sooriya <prithpal.sooriya@consensys.net> Co-authored-by: Xiaoming Wang <7315988+dawnseeker8@users.noreply.github.com> Co-authored-by: Nick Gambino <35090461+gambinish@users.noreply.github.com> Co-authored-by: Brian August Nguyen <brianacnguyen@gmail.com> Co-authored-by: Nico MASSART <NicolasMassart@users.noreply.github.com> Co-authored-by: Salim TOUBAL <salim.toubal@outlook.com> Co-authored-by: CW <chris.wilcox@consensys.net> Co-authored-by: Pedro Figueiredo <ganseki.figueiredo@gmail.com> Co-authored-by: digiwand <20778143+digiwand@users.noreply.github.com> Co-authored-by: Gustavo Antunes <17601467+gantunesr@users.noreply.github.com> Co-authored-by: Vinicius Stevam <45455812+vinistevam@users.noreply.github.com> Co-authored-by: EtherWizard33 <165834542+EtherWizard33@users.noreply.github.com> Co-authored-by: Bryan Fullam <bryan.fullam@consensys.net> Co-authored-by: Devin Stewart <49423028+Bigshmow@users.noreply.github.com> Co-authored-by: Ziad Saab <ziad.saab@gmail.com> Co-authored-by: Nicholas Smith <nick.smith@consensys.net> Co-authored-by: George Weiler <georgejweiler@gmail.com> Co-authored-by: Cal Leung <cal.leung@consensys.net> Co-authored-by: Amitabh Aggarwal <aggarwal.amitabh@gmail.com> Co-authored-by: Gauthier Petetin <gauthierpetetin@hotmail.com> Co-authored-by: Frederik Bolding <frederik.bolding@gmail.com> Co-authored-by: infiniteflower <139582705+infiniteflower@users.noreply.github.com> Co-authored-by: Iván <ivan.canete@consensys.net> Co-authored-by: Daniel Cross <dan.s.cross@icloud.com> Co-authored-by: Owen Craston <owengc12@gmail.com> Co-authored-by: Kylan Hurt <6249205+smilingkylan@users.noreply.github.com> Co-authored-by: jake-perkins <128608287+jake-perkins@users.noreply.github.com> Co-authored-by: David Drazic <david@timechaser.org> Co-authored-by: Pedro Pablo Aste Kompen <wachunei@gmail.com> Co-authored-by: AxelGes <axelges9@gmail.com> Co-authored-by: Michele Esposito <34438276+mikesposito@users.noreply.github.com> Co-authored-by: AugmentedMode <31675118+AugmentedMode@users.noreply.github.com> Co-authored-by: António Regadas <antonio.regadas@consensys.net> Co-authored-by: Monte Lai <monte.lai@consensys.net> Co-authored-by: yande <110056475+Andepande@users.noreply.github.com> Co-authored-by: Mathieu Artu <mathieu.artu@consensys.net> Co-authored-by: mar <72634565+mindofmar@users.noreply.github.com> Co-authored-by: David Walsh <davidwalsh83@gmail.com> Co-authored-by: Elliot Winkler <elliot.winkler@gmail.com> Co-authored-by: AxelGes <34173844+AxelGes@users.noreply.github.com> Co-authored-by: George Weiler <george.weiler@consensys.net> Co-authored-by: Charly Chevalier <charly.chevalier@consensys.net> Co-authored-by: Alejandro Garcia Anglada <aganglada@gmail.com> Co-authored-by: Stanley Yuen <102275989+stanleyyconsensys@users.noreply.github.com> Co-authored-by: wantedsystem <amine.harty@consensys.net> Co-authored-by: cmd-ob <ola.bale@consensys.net> Co-authored-by: Yande <andepandy@outlook.com> Co-authored-by: Maarten Zuidhoorn <maarten@zuidhoorn.com> Co-authored-by: Hassan Malik <41640681+hmalik88@users.noreply.github.com> Co-authored-by: Bernardo Garces Chapero <bernardo.chapero@consensys.net> Co-authored-by: cryptodev-2s <109512101+cryptodev-2s@users.noreply.github.com> Co-authored-by: ffmcgee <51971598+ffmcgee725@users.noreply.github.com> Co-authored-by: tommasini <tommasini15@gmail.com> Co-authored-by: João Loureiro <175489935+joaoloureirop@users.noreply.github.com> Co-authored-by: abretonc7s <107169956+abretonc7s@users.noreply.github.com> Co-authored-by: Tamas <soostamas.hu@gmail.com> Co-authored-by: Edward Penta <eddie.penta@consensys.net> Co-authored-by: Christopher Ferreira <104831203+christopherferreira9@users.noreply.github.com> Co-authored-by: Eddie Penta <ecp4224@gmail.com> Co-authored-by: Desi McAdam <desi.mcadam@gmail.com> Co-authored-by: Shane T <muldots@gmail.com> Co-authored-by: Frank von Hoven <141057783+frankvonhoven@users.noreply.github.com> --- .github/CODEOWNERS | 13 +- .../scripts/bitrise/bitrise-results-check.ts | 7 +- .github/workflows/changelog-check.yml | 18 + .github/workflows/crowdin-branch-cleanup.yml | 78 - ...rowdin-branch-pr-ready-for-translation.yml | 54 - ...-pull-branch-pr-completed-translations.yml | 64 - .../crowdin-reusable-translation-download.yml | 68 - ...owdin-upload-both-sources-translations.yml | 31 - .gitignore | 3 + .iyarc | 2 + .js.env.example | 1 - CHANGELOG.md | 105 +- README.md | 3 +- android/app/build.gradle | 4 +- .../assets/fonts/EuclidCircularB-Bold.otf | Bin 115104 -> 0 bytes .../fonts/EuclidCircularB-BoldItalic.otf | Bin 117752 -> 0 bytes .../assets/fonts/EuclidCircularB-Light.otf | Bin 106492 -> 0 bytes .../fonts/EuclidCircularB-LightItalic.otf | Bin 109964 -> 0 bytes .../assets/fonts/EuclidCircularB-Medium.otf | Bin 116808 -> 0 bytes .../fonts/EuclidCircularB-MediumItalic.otf | Bin 119648 -> 0 bytes .../assets/fonts/EuclidCircularB-Regular.otf | Bin 115168 -> 0 bytes .../fonts/EuclidCircularB-RegularItalic.otf | Bin 119480 -> 0 bytes .../assets/fonts/EuclidCircularB-Semibold.otf | Bin 117828 -> 0 bytes .../fonts/EuclidCircularB-SemiboldItalic.otf | Bin 121384 -> 0 bytes .../src/main/assets/fonts/MMPoly-Regular.otf | Bin 0 -> 136028 bytes .../app/src/main/assets/fonts/MMSans-Bold.otf | Bin 0 -> 111676 bytes .../src/main/assets/fonts/MMSans-Medium.otf | Bin 0 -> 111352 bytes .../src/main/assets/fonts/Roboto-Black.ttf | Bin 171480 -> 0 bytes .../main/assets/fonts/Roboto-BlackItalic.ttf | Bin 177552 -> 0 bytes .../app/src/main/assets/fonts/Roboto-Bold.ttf | Bin 170760 -> 0 bytes .../main/assets/fonts/Roboto-BoldItalic.ttf | Bin 174952 -> 0 bytes .../src/main/assets/fonts/Roboto-Italic.ttf | Bin 173932 -> 0 bytes .../src/main/assets/fonts/Roboto-Light.ttf | Bin 170420 -> 0 bytes .../main/assets/fonts/Roboto-LightItalic.ttf | Bin 176616 -> 0 bytes .../src/main/assets/fonts/Roboto-Medium.ttf | Bin 172064 -> 0 bytes .../main/assets/fonts/Roboto-MediumItalic.ttf | Bin 176864 -> 0 bytes .../src/main/assets/fonts/Roboto-Regular.ttf | Bin 171676 -> 0 bytes .../app/src/main/assets/fonts/Roboto-Thin.ttf | Bin 171904 -> 0 bytes .../main/assets/fonts/Roboto-ThinItalic.ttf | Bin 176300 -> 0 bytes android/link-assets-manifest.json | 88 +- app/actions/identity/index.test.ts | 16 + app/actions/identity/index.ts | 20 + app/actions/multiSrp/index.test.ts | 73 +- app/actions/multiSrp/index.ts | 52 +- app/actions/onboarding/index.test.ts | 41 + app/actions/onboarding/index.ts | 20 +- app/actions/signatureRequest/index.ts | 2 +- .../__snapshots__/TagBase.test.tsx.snap | 16 +- .../__snapshots__/ButtonPill.test.tsx.snap | 4 +- .../__snapshots__/ButtonToggle.test.tsx.snap | 22 +- .../CellSelectWithMenu.test.tsx.snap | 26 +- .../ContractBoxBase.test.tsx.snap | 4 +- .../CustomInput/CustomInput.styles.ts | 2 + .../__snapshots__/CustomInput.test.tsx.snap | 10 +- .../CustomSpendCap.test.tsx.snap | 70 +- .../__snapshots__/KeyValueRow.test.tsx.snap | 80 +- .../ListItemMultiSelectButton.test.tsx.snap | 2 +- .../AggregatedPercentage.test.tsx.snap | 16 +- ...regatedPercentageCrossChains.test.tsx.snap | 16 +- .../PercentageChange.test.tsx.snap | 8 +- .../SegmentedControl.test.tsx.snap | 86 +- .../__snapshots__/TagColored.test.tsx.snap | 10 +- .../AccordionHeader.test.tsx.snap | 8 +- .../__snapshots__/AvatarIcon.test.tsx.snap | 2 +- .../__snapshots__/AvatarGroup.test.tsx.snap | 10 +- .../__snapshots__/BadgeNetwork.test.tsx.snap | 2 +- .../BadgeNotifications.test.tsx.snap | 2 +- .../__snapshots__/BadgeStatus.test.tsx.snap | 2 +- .../Banner/__snapshots__/Banner.test.tsx.snap | 108 +- .../__snapshots__/BannerAlert.test.tsx.snap | 38 +- .../__snapshots__/BannerTip.test.tsx.snap | 34 +- .../BottomSheetDialog.constants.ts | 4 +- .../BottomSheetDialog.test.tsx.snap | 6 +- .../BottomSheetFooter.test.tsx.snap | 18 +- .../BottomSheetHeader.test.tsx.snap | 4 +- .../__snapshots__/ButtonBase.test.tsx.snap | 8 +- .../__snapshots__/ButtonLink.test.tsx.snap | 16 +- .../__snapshots__/ButtonPrimary.test.tsx.snap | 8 +- .../ButtonSecondary.test.tsx.snap | 12 +- .../__snapshots__/ButtonIcon.test.tsx.snap | 2 +- .../Card/__snapshots__/Card.test.tsx.snap | 2 +- .../Cell/__snapshots__/Cell.test.tsx.snap | 94 +- .../__snapshots__/CellBase.test.tsx.snap | 30 +- .../__snapshots__/CellDisplay.test.tsx.snap | 32 +- .../CellMultiSelect.test.tsx.snap | 32 +- .../__snapshots__/CellSelect.test.tsx.snap | 30 +- .../components/Checkbox/Checkbox.test.tsx | 15 +- .../__snapshots__/Checkbox.test.tsx.snap | 2 +- .../__snapshots__/TextField.test.tsx.snap | 2 +- .../foundation/Input/Input.styles.ts | 3 +- .../Input/__snapshots__/Input.test.tsx.snap | 8 +- .../components/HeaderBase/HeaderBase.test.tsx | 15 +- .../__snapshots__/HeaderBase.test.tsx.snap | 4 +- .../Icon/__snapshots__/Icon.test.tsx.snap | 2 +- .../ListItemMultiSelect.test.tsx.snap | 2 +- .../ModalConfirmation.test.tsx.snap | 2 +- .../ModalMandatory/ModalMandatory.styles.ts | 4 + .../TabBar/__snapshots__/TabBar.test.tsx.snap | 12 +- .../__snapshots__/TabBarItem.test.tsx.snap | 2 +- .../components/Overlay/Overlay.constants.ts | 2 +- .../__snapshots__/PickerAccount.test.tsx.snap | 20 +- .../__snapshots__/PickerBase.test.tsx.snap | 4 +- .../__snapshots__/PickerNetwork.test.tsx.snap | 12 +- .../RadioButton/RadioButton.test.tsx | 15 +- .../__snapshots__/RadioButton.test.tsx.snap | 2 +- .../__snapshots__/SelectButton.test.tsx.snap | 20 +- .../SelectButtonBase.test.tsx.snap | 18 +- .../__snapshots__/SelectOption.test.tsx.snap | 16 +- .../Select/SelectValue/SelectValue.test.tsx | 15 +- .../__snapshots__/SelectValue.test.tsx.snap | 16 +- .../__snapshots__/Skeleton.test.tsx.snap | 2 +- .../Tags/Tag/__snapshots__/Tag.test.tsx.snap | 10 +- .../TagUrl/__snapshots__/TagUrl.test.tsx.snap | 4 +- .../__snapshots__/SensitiveText.test.tsx.snap | 8 +- .../components/Texts/Text/Text.stories.tsx | 27 - .../components/Texts/Text/Text.styles.ts | 15 +- .../components/Texts/Text/Text.test.tsx | 7 +- .../components/Texts/Text/Text.tsx | 2 - .../components/Texts/Text/Text.types.ts | 20 +- .../components/Texts/Text/Text.utils.ts | 71 +- .../Text/__snapshots__/Text.test.tsx.snap | 8 +- .../components/Texts/Text/index.ts | 2 + .../TextWithPrefixIcon.test.tsx.snap | 2 +- .../__snapshots__/ApprovalModal.test.tsx.snap | 2 +- .../FlowLoaderModal/FlowLoaderModal.tsx | 2 +- .../SignatureApproval/SignatureApproval.tsx | 2 +- .../SnapAccountCustomNameApproval.styles.ts | 1 + .../TemplateConfirmationModal.tsx | 4 +- .../TransactionApproval.tsx | 4 +- .../WatchAssetApproval/WatchAssetApproval.tsx | 2 +- .../__snapshots__/index.test.tsx.snap | 8 +- app/components/Base/RemoteImage/index.js | 46 +- app/components/Nav/App/App.tsx | 52 +- app/components/Nav/Main/MainNavigator.js | 14 +- app/components/Nav/Main/index.js | 21 +- .../SnapDialogApproval.styles.ts | 9 +- .../SnapDialogApproval/SnapDialogApproval.tsx | 16 +- .../Snaps/SnapUIAddress/SnapUIAddress.tsx | 4 +- .../__snapshots__/SnapUIAddress.test.tsx.snap | 104 +- .../Snaps/SnapUIButton/SnapUIButton.tsx | 67 +- .../SnapUIFooterButton/SnapUIFooterButton.tsx | 5 +- .../SnapUIRenderer/SnapUIRenderer.test.tsx | 11 +- .../Snaps/SnapUIRenderer/SnapUIRenderer.tsx | 9 +- .../SnapUIRenderer.test.tsx.snap | 600 ++- .../SnapUIRenderer/components/address.ts | 2 + .../SnapUIRenderer/components/banner.test.ts | 85 +- .../Snaps/SnapUIRenderer/components/banner.ts | 3 +- .../Snaps/SnapUIRenderer/components/bold.ts | 2 +- .../SnapUIRenderer/components/box.test.ts | 19 +- .../Snaps/SnapUIRenderer/components/button.ts | 39 +- .../SnapUIRenderer/components/card.test.ts | 1 + .../components/container.test.ts | 1 + .../SnapUIRenderer/components/container.ts | 2 + .../Snaps/SnapUIRenderer/components/field.ts | 2 + .../SnapUIRenderer/components/footer.test.ts | 11 +- .../Snaps/SnapUIRenderer/components/footer.ts | 36 +- .../Snaps/SnapUIRenderer/components/icon.ts | 7 +- .../Snaps/SnapUIRenderer/components/input.ts | 28 +- .../SnapUIRenderer/components/link.test.ts | 8 +- .../Snaps/SnapUIRenderer/components/link.ts | 2 +- .../SnapUIRenderer/components/text.test.ts | 55 +- .../Snaps/SnapUIRenderer/components/text.ts | 87 +- .../SnapUIRenderer/components/tooltip.test.ts | 102 +- .../Snaps/SnapUIRenderer/components/types.ts | 8 + .../Snaps/SnapUIRenderer/utils.test.ts | 23 +- app/components/Snaps/SnapUIRenderer/utils.ts | 45 +- .../SnapUISelector/SnapUISelector.styles.ts | 1 + .../SnapUISpinner/SnapUISpinner.test.tsx | 3 +- .../SnapUITooltip/SnapUITooltip.test.tsx | 6 +- .../__snapshots__/index.test.tsx.snap | 74 +- app/components/UI/AccountApproval/index.js | 9 +- .../UI/AccountApproval/index.test.tsx | 8 + app/components/UI/AccountApproval/styles.ts | 10 +- .../AccountFromToInfoCard.test.tsx.snap | 68 +- .../__snapshots__/index.test.tsx.snap | 42 +- app/components/UI/AccountInfoCard/index.js | 2 +- .../__snapshots__/index.test.tsx.snap | 24 +- .../__snapshots__/index.test.tsx.snap | 2 +- .../AccountSelector.test.tsx | 195 +- .../AccountSelectorList.tsx | 5 +- .../AccountSelector.test.tsx.snap | 703 +-- .../__snapshots__/index.test.tsx.snap | 12 +- .../__snapshots__/index.test.tsx.snap | 44 +- app/components/UI/AddCustomToken/index.js | 22 +- .../__snapshots__/index.test.jsx.snap | 108 +- .../__snapshots__/index.test.tsx.snap | 4 +- .../UI/ApprovalTagUrl/ApprovalTagUrl.test.tsx | 15 + .../UI/ApprovalTagUrl/ApprovalTagUrl.tsx | 2 + .../ApprovalTagUrl.test.tsx.snap | 78 +- .../__snapshots__/index.test.tsx.snap | 6 +- .../AboutAsset/AboutAsset.styles.tsx | 6 + .../__snapshots__/index.test.tsx.snap | 24 +- .../UI/AssetOverview/AssetOverview.styles.ts | 6 + .../UI/AssetOverview/AssetOverview.test.tsx | 151 +- .../UI/AssetOverview/AssetOverview.tsx | 257 +- .../AssetOverview/Balance/Balance.styles.tsx | 6 + .../UI/AssetOverview/Balance/Balance.tsx | 49 +- .../Balance/__snapshots__/index.test.tsx.snap | 44 +- .../UI/AssetOverview/Balance/index.test.tsx | 72 +- .../PriceChart/PriceChart.styles.tsx | 5 + .../MarketDetailsList.test.tsx.snap | 116 +- .../TokenDetails/TokenDetails.test.tsx | 2 +- .../TokenDetailsList.test.tsx.snap | 56 +- .../__snapshots__/TokenDetails.test.tsx.snap | 172 +- .../__snapshots__/AssetOverview.test.tsx.snap | 774 +-- .../__snapshots__/index.test.tsx.snap | 22 +- .../__snapshots__/BackupAlert.test.tsx.snap | 30 +- .../BasicFunctionalityModal.test.js.snap | 50 +- .../BasicFunctionality.test.js.snap | 26 +- .../UI/BiometryButton/BiometryButton.tsx | 54 +- .../__snapshots__/index.test.tsx.snap | 26 - .../UI/BiometryButton/index.test.tsx | 144 +- .../__snapshots__/index.test.tsx.snap | 2 +- .../Bridge/_mocks_/bridgeControllerState.ts | 31 + .../UI/Bridge/_mocks_/bridgeReducerState.ts | 30 + .../UI/Bridge/_mocks_/initialState.ts | 300 ++ .../_mocks_/mock-quotes-native-erc20.json | 294 + .../BridgeDestNetworkSelector.test.tsx | 43 +- .../BridgeDestNetworkSelector.test.tsx.snap | 32 +- .../BridgeDestTokenSelector.test.tsx | 328 +- .../BridgeDestTokenSelector.test.tsx.snap | 780 ++- .../BridgeDestTokenSelector/index.tsx | 64 +- .../BridgeSourceNetworkSelector.test.tsx | 325 +- .../BridgeSourceNetworkSelector.test.tsx.snap | 92 +- .../BridgeSourceNetworkSelector/index.tsx | 35 +- .../BridgeSourceTokenSelector.test.tsx | 304 +- .../BridgeSourceTokenSelector.test.tsx.snap | 1832 ++++--- .../BridgeSourceTokenSelector/index.tsx | 68 +- .../components/BridgeTokenSelectorBase.tsx | 111 +- .../QuoteDetailsCard.styles.ts | 30 + .../QuoteDetailsCard.test.tsx | 224 + .../QuoteDetailsCard/QuoteDetailsCard.tsx | 334 ++ .../QuoteDetailsCard.types.ts | 43 + .../QuoteDetailsCard.test.tsx.snap | 2169 ++++++++ .../components/QuoteDetailsCard/index.ts | 1 + .../QuoteInfoModal.test.tsx.snap | 32 +- .../SlippageModal/SlippageModal.test.tsx | 35 +- .../__snapshots__/SlippageModal.test.tsx.snap | 70 +- .../Bridge/components/SlippageModal/index.tsx | 22 +- .../components/{Token.tsx => TokenButton.tsx} | 2 +- .../TokenInputArea/TokenInputArea.test.tsx | 18 +- .../components/TokenInputArea/index.tsx | 10 +- .../Bridge/components/TokenSelectorItem.tsx | 205 +- .../UI/Bridge/hooks/useDestinationTokens.tsx | 21 - .../UI/Bridge/hooks/useSourceTokens.ts | 20 - .../UI/Bridge/hooks/useTokenSearch/index.ts | 11 +- .../useTokenSearch/useTokenSearch.test.ts | 29 +- app/components/UI/Bridge/hooks/useTokens.ts | 58 + .../hooks/useTokensWithBalance/index.ts | 27 +- .../useTokensWithBalance.test.ts | 89 +- .../UI/Bridge/hooks/useTopTokens/index.ts | 104 + .../hooks/useTopTokens/useTopTokens.test.ts | 145 + app/components/UI/Bridge/index.test.tsx | 86 +- app/components/UI/Bridge/index.tsx | 75 +- app/components/UI/Bridge/types.ts | 11 +- app/components/UI/Bridge/utils/index.ts | 1 + .../UI/Bridge/utils/isBridgeAllowed.test.ts | 81 + .../UI/Bridge/utils/isBridgeAllowed.ts | 19 +- .../__snapshots__/index.test.tsx.snap | 20 +- .../__snapshots__/BrowserUrlBar.test.tsx.snap | 32 +- .../Button/__snapshots__/index.test.tsx.snap | 2 +- .../__snapshots__/index.test.tsx.snap | 557 +- app/components/UI/Carousel/constants.ts | 22 + app/components/UI/Carousel/index.test.tsx | 32 +- app/components/UI/Carousel/index.tsx | 8 +- app/components/UI/Carousel/types.ts | 2 +- .../__snapshots__/index.test.tsx.snap | 107 +- .../UI/CollectibleContractElement/index.js | 35 +- .../CollectibleContractElement/index.test.tsx | 100 +- .../UI/CollectibleContracts/index.js | 131 +- .../UI/CollectibleContracts/index.test.tsx | 38 +- .../CollectibleDetectionModal/index.test.tsx | 40 + .../UI/CollectibleDetectionModal/index.tsx | 7 +- .../UI/CollectibleMedia/CollectibleMedia.tsx | 2 + .../CollectibleModal.test.tsx.snap | 56 +- .../__snapshots__/index.test.tsx.snap | 8 +- .../UI/ConfirmAddAsset/ConfirmAddAsset.tsx | 2 +- .../ConfirmAddAsset.test.tsx.snap | 60 +- .../__snapshots__/index.test.tsx.snap | 6 +- .../__snapshots__/index.test.tsx.snap | 36 +- .../UI/DeleteWalletModal/index.test.tsx | 25 +- app/components/UI/DeleteWalletModal/index.tsx | 2 + .../DeprecatedNetworkModal.styles.ts | 7 +- .../__snapshots__/index.test.tsx.snap | 80 +- app/components/UI/DrawerView/index.js | 2 +- app/components/UI/DrawerView/index.test.tsx | 2 +- .../EarnInputView/EarnInputView.styles.ts} | 0 .../EarnInputView/EarnInputView.test.tsx} | 224 +- .../Views/EarnInputView/EarnInputView.tsx} | 286 +- .../EarnInputView/EarnInputView.types.ts | 22 + .../EarnInputView.test.tsx.snap} | 362 +- .../UI/Earn/Views/EarnInputView/utils.test.ts | 25 + .../UI/Earn/Views/EarnInputView/utils.ts | 10 + .../EarnWithdrawInputView.styles.ts} | 0 .../EarnWithdrawInputView.test.tsx} | 72 +- .../EarnWithdrawInputView.tsx} | 210 +- .../EarnWithdrawInputView.types.ts | 10 + .../EarnWithdrawInputView}/UnstakeBanner.tsx | 0 .../EarnWithdrawInputView.test.tsx.snap} | 173 +- .../Earn/components/CurrencySwitch.test.tsx | 68 + .../UI/Earn/components/CurrencySwitch.tsx | 96 + .../EarnTokenList/EarnTokenList.styles.ts | 0 .../EarnTokenList/EarnTokenList.test.tsx | 22 +- .../__snapshots__/EarnTokenList.test.tsx.snap | 134 +- .../components/EarnTokenList/index.tsx | 29 +- .../EarnTokenListItem.styles.tsx | 0 .../EarnTokenListItem.test.tsx | 0 .../EarnTokenListItem.types.ts | 0 .../EarnTokenListItem.test.tsx.snap | 26 +- .../components/EarnTokenListItem/index.tsx | 0 .../EarnTokenSelector.styles.ts | 0 .../EarnTokenSelector.test.tsx | 6 +- .../EarnTokenSelector.test.tsx.snap | 32 +- .../components/EarnTokenSelector/index.tsx | 10 +- .../EmptyStateCta/EmptyStateCta.test.tsx | 10 +- .../__snapshots__/EmptyStateCta.test.tsx.snap | 36 +- .../Earn/components/EmptyStateCta/index.tsx | 6 +- .../InputDisplay/InputDisplay.test.tsx | 96 + .../UI/Earn/components/InputDisplay/index.tsx | 162 + .../MaxInputModal/MaxInputModal.styles.ts | 0 .../MaxInputModal/MaxInputModal.test.tsx | 27 +- .../__snapshots__/MaxInputModal.test.tsx.snap | 40 +- .../components/MaxInputModal/index.tsx | 2 +- .../UI/Earn/hooks/useEarnInput.test.tsx | 370 ++ app/components/UI/Earn/hooks/useEarnInput.ts | 219 + .../hooks/useEarnTokenDetails.test.tsx | 93 +- .../UI/Earn/hooks/useEarnTokenDetails.ts | 150 + .../Earn/hooks/useEarnWithdrawInput.test.ts | 212 + .../UI/Earn/hooks/useEarnWithdrawInput.ts | 79 + .../UI/Earn/hooks/useInput.test.tsx | 274 + app/components/UI/Earn/hooks/useInput.ts | 231 + .../__snapshots__/index.test.tsx.snap | 8 +- .../__snapshots__/index.test.tsx.snap | 6 +- ...AutomaticSecurityChecksModal.test.tsx.snap | 30 +- .../__snapshots__/index.test.tsx.snap | 6 +- .../__snapshots__/index.test.tsx.snap | 12 +- .../OpenETHAppStep.test.tsx.snap | 26 +- .../SearchingForDeviceStep.test.tsx.snap | 140 +- .../LedgerConfirmationModal.test.tsx.snap | 62 +- .../LedgerMessageSignModal.test.tsx.snap | 64 +- .../LoginOptionsSwitch/LoginOptionsSwitch.tsx | 8 +- .../__snapshots__/ManageNetworks.test.js.snap | 34 +- .../__snapshots__/index.test.tsx.snap | 2 +- .../MultiAssetListItems.tsx | 2 +- .../MultiAssetListItems.test.tsx.snap | 8 +- ...ultichainTransactionDetailsModal.styles.ts | 7 +- .../MultichainTransactionListItem.styles.ts | 8 + .../MultichainTransactionListItem.test.tsx | 4 +- .../MultichainTransactionListItem.tsx | 4 +- .../UI/Name/__snapshots__/Name.test.tsx.snap | 40 +- app/components/UI/Navbar/index.js | 28 +- .../__snapshots__/index.test.tsx.snap | 10 +- .../__snapshots__/NetworkCell.test.tsx.snap | 20 +- .../__snapshots__/index.test.tsx.snap | 106 +- .../__snapshots__/index.test.tsx.snap | 94 +- app/components/UI/NetworkModal/index.test.tsx | 5 - app/components/UI/NetworkModal/index.tsx | 3 +- .../NetworkSelectorList.test.tsx.snap | 16 +- .../NetworkVerificationInfo.styles.ts | 8 +- .../NetworkVerificationInfo.test.tsx.snap | 214 +- .../__snapshots__/index.test.jsx.snap | 146 +- .../Empty/__snapshots__/index.test.tsx.snap | 14 +- .../List/__snapshots__/index.test.tsx.snap | 16 +- app/components/UI/Notification/List/index.tsx | 5 +- app/components/UI/Notification/List/styles.ts | 7 +- .../UI/Notification/Modal/styles.ts | 6 + .../NotificationMenuItem/Root.test.tsx | 129 +- .../NotificationMenuItem/Root.tsx | 17 +- .../__snapshots__/Content.test.tsx.snap | 32 +- .../__snapshots__/Icon.test.tsx.snap | 10 +- .../__snapshots__/Root.test.tsx.snap | 13 - .../ResetNotificationsModal.test.tsx.snap | 40 +- .../__snapshots__/index.test.tsx.snap | 11 +- .../UI/OnboardingWizard/Coachmark/index.js | 10 +- .../Step1/__snapshots__/index.test.tsx.snap | 26 +- .../Step2/__snapshots__/index.test.tsx.snap | 13 +- .../Step3/__snapshots__/index.test.tsx.snap | 13 +- .../Step4/__snapshots__/index.test.tsx.snap | 13 +- .../Step5/__snapshots__/index.test.tsx.snap | 13 +- .../Step6/__snapshots__/index.test.tsx.snap | 13 +- .../Step7/__snapshots__/index.test.tsx.snap | 13 +- app/components/UI/OnboardingWizard/index.tsx | 5 + .../__snapshots__/index.test.tsx.snap | 86 +- .../__snapshots__/index.test.tsx.snap | 46 +- .../UI/PaymentRequest/index.test.tsx | 27 +- .../PermissionsSummary.test.tsx | 40 + .../PermissionsSummary.test.tsx.snap | 200 +- .../__snapshots__/index.test.tsx.snap | 446 +- app/components/UI/PhishingModal/index.js | 224 +- .../UI/PhishingModal/index.test.tsx | 35 + .../ProfileSyncingModal.test.tsx.snap | 50 +- .../ProfileSyncing.test.tsx.snap | 26 +- .../UI/Ramp/Views/BuildQuote/BuildQuote.tsx | 91 +- .../__snapshots__/BuildQuote.test.tsx.snap | 1492 +++--- .../__snapshots__/GetStarted.test.tsx.snap | 130 +- .../NetworkSwitcher.test.tsx.snap | 614 +-- .../__snapshots__/OrderDetails.test.tsx.snap | 1768 +++--- .../__snapshots__/OrdersList.test.tsx.snap | 790 +-- .../PaymentMethods.test.tsx.snap | 1010 ++-- .../UI/Ramp/Views/Quotes/Quotes.test.tsx | 312 +- .../UI/Ramp/Views/Quotes/Quotes.tsx | 247 +- .../Quotes/__snapshots__/Quotes.test.tsx.snap | 1682 ++++-- .../__snapshots__/Regions.test.tsx.snap | 504 +- .../SendTransaction.test.tsx.snap | 184 +- .../ActivationKeyForm.test.tsx.snap | 64 +- .../__snapshots__/Settings.test.tsx.snap | 454 +- .../CustomAction/CustomAction.styles.ts | 31 + .../CustomAction/CustomAction.test.tsx | 182 + .../components/CustomAction/CustomAction.tsx | 169 + .../UI/Ramp/components/CustomAction/index.ts | 1 + .../UI/Ramp/components/CustomActionButton.tsx | 84 - .../__snapshots__/OrderListItem.test.tsx.snap | 320 +- .../UI/Ramp/components/Quote/Quote.test.tsx | 69 + .../UI/Ramp/components/Quote/Quote.tsx | 3 +- .../PaymentMethodSelector.test.tsx.snap | 76 +- .../UI/Ramp/containers/CustomActionButton.tsx | 159 - .../UI/Ramp/hooks/useCryptoCurrencies.test.ts | 4 +- .../UI/Ramp/hooks/useCryptoCurrencies.ts | 2 +- .../UI/Ramp/hooks/useFiatCurrencies.test.ts | 8 +- .../UI/Ramp/hooks/useFiatCurrencies.ts | 4 +- app/components/UI/Ramp/hooks/useLimits.ts | 2 +- .../UI/Ramp/hooks/usePaymentMethods.test.ts | 169 + .../UI/Ramp/hooks/usePaymentMethods.ts | 92 +- .../UI/Ramp/hooks/useQuotes.test.ts | 26 +- app/components/UI/Ramp/hooks/useQuotes.ts | 3 +- .../hooks/useQuotesAndCustomActions.test.ts | 112 + .../Ramp/hooks/useQuotesAndCustomActions.ts | 30 + .../UI/Ramp/hooks/useSortedQuotes.test.ts | 68 + .../UI/Ramp/hooks/useSortedQuotes.ts | 4 +- .../__snapshots__/index.test.tsx.snap | 120 +- .../__snapshots__/index.test.tsx.snap | 2 +- app/components/UI/ReviewModal/styles.ts | 6 +- app/components/UI/SDKFeedback/index.tsx | 6 + app/components/UI/SRPList/SRPList.styles.ts | 83 + app/components/UI/SRPList/SRPList.test.tsx | 103 + app/components/UI/SRPList/SRPList.tsx | 36 + app/components/UI/SRPList/SRPList.types.ts | 3 + app/components/UI/SRPList/index.tsx | 1 + .../UI/SRPListItem/SRPListItem.styles.ts | 62 + .../UI/SRPListItem/SRPListItem.test.tsx | 156 + app/components/UI/SRPListItem/SRPListItem.tsx | 90 + .../UI/SRPListItem/SRPListItem.type.ts | 10 + app/components/UI/SRPListItem/index.tsx | 1 + .../__snapshots__/index.test.tsx.snap | 30 +- .../UI/SearchTokenAutocomplete/index.tsx | 78 +- .../__snapshots__/index.test.tsx.snap | 22 +- .../__snapshots__/index.test.tsx.snap | 6 +- .../__snapshots__/OptionSheet.test.tsx.snap | 22 +- .../SelectOptionSheet.test.tsx.snap | 6 +- .../__snapshots__/index.test.tsx.snap | 2 +- .../SheetActionView.test.tsx.snap | 18 +- .../__snapshots__/index.test.tsx.snap | 16 +- .../__snapshots__/index.test.tsx.snap | 12 +- .../__snapshots__/index.test.tsx.snap | 20 +- .../FeatureItem.styles.ts | 32 + .../SolanaNewFeatureContent/FeatureItem.tsx | 37 + .../SolanaNewFeatureContent.styles.ts | 39 + .../SolanaNewFeatureContent.test.tsx | 145 + .../SolanaNewFeatureContent.tsx | 136 + .../UI/SolanaNewFeatureContent/index.ts | 1 + .../StakeConfirmationView.test.tsx.snap | 196 +- .../StakeEarningsHistoryView.test.tsx.snap | 130 +- .../StakeInputView/StakeInputView.types.ts | 22 - .../Stake/Views/StakeInputView/utils.test.ts | 40 - .../UI/Stake/Views/StakeInputView/utils.ts | 15 - .../UnstakeConfirmationView.test.tsx.snap | 134 +- .../UnstakeInputView.types.ts | 9 - .../UI/Stake/components/CurrencySwitch.tsx | 51 - .../GasImpactModal.test.tsx.snap | 40 +- .../UI/Stake/components/InputDisplay.tsx | 89 - .../ChartTimespanButtonGroup.test.tsx | 5 +- .../ChartTimespanButtonGroup.test.tsx.snap | 34 +- .../__snapshots__/DataGradient.test.tsx.snap | 2 +- .../__snapshots__/GraphTooltip.test.tsx.snap | 10 +- .../__snapshots__/PlotLine.test.tsx.snap | 2 +- .../InteractiveTimespanChart.test.tsx.snap | 252 +- .../PoolStakingLearnMoreModal.test.tsx.snap | 136 +- .../UI/Stake/components/QuickAmounts.tsx | 9 +- .../StakeButton/StakeButton.test.tsx | 6 +- .../UI/Stake/components/StakeButton/index.tsx | 4 +- .../StakingBalance/StakingBalance.test.tsx | 7 +- .../StakingBalance/StakingBalance.tsx | 5 +- .../__snapshots__/ClaimBanner.test.tsx.snap | 30 +- .../StakingButtons/StakingButtons.test.tsx | 7 +- .../StakingButtons/StakingButtons.tsx | 7 +- .../__snapshots__/StakingCta.test.tsx.snap | 44 +- .../StakingBalance.test.tsx.snap | 144 +- .../__snapshots__/AccountCard.test.tsx.snap | 64 +- .../__snapshots__/AccountTag.test.tsx.snap | 28 +- .../FooterButtonGroup.test.tsx.snap | 60 +- .../__snapshots__/LegalLinks.test.tsx.snap | 48 +- .../ConfirmationFooter.test.tsx.snap | 34 +- .../__snapshots__/ContractTag.test.tsx.snap | 14 +- .../__snapshots__/RewardsCard.test.tsx.snap | 186 +- .../TokenValueStack.test.tsx.snap | 14 +- .../UnstakeTimeCard.test.tsx.snap | 20 +- .../YouReceiveCard.test.tsx.snap | 54 +- .../StakingEarningsHistory.utils.ts | 17 +- .../StakingEarningsHistoryChart.test.tsx | 15 +- .../StakingEarningsHistoryChart.test.tsx.snap | 22 +- .../StakingEarnings.test.tsx.snap | 80 +- .../__snapshots__/UpsellBanner.test.tsx.snap | 58 +- .../UI/Stake/hooks/useEarnTokenDetails.ts | 109 - .../UI/Stake/hooks/useInputHandler.ts | 166 - .../UI/Stake/hooks/useStakingInput.ts | 142 - .../UI/Stake/hooks/useUnstakingInput.ts | 48 - app/components/UI/Stake/routes/index.tsx | 12 +- .../stakeSdkProvider.test.tsx.snap | 8 +- app/components/UI/Stake/testUtils/index.ts | 2 +- .../UI/Stake/testUtils/testUtils.test.ts | 4 +- .../__snapshots__/index.test.tsx.snap | 30 +- app/components/UI/Swaps/QuotesView.js | 2 +- app/components/UI/Swaps/QuotesView.test.ts | 31 +- .../__snapshots__/QuotesView.test.ts.snap | 168 +- .../ApprovalTransactionEditionModal.js | 2 +- .../__snapshots__/index.test.tsx.snap | 16 +- .../__snapshots__/TokenIcon.test.js.snap | 6 +- app/components/UI/Swaps/index.js | 12 +- .../useStablecoinsDefaultSlippage.test.tsx | 297 ++ .../UI/Swaps/useStablecoinsDefaultSlippage.ts | 168 + app/components/UI/Swaps/utils/index.js | 11 + app/components/UI/Swaps/utils/index.test.js | 95 +- .../__snapshots__/index.test.tsx.snap | 60 +- .../UI/SwitchCustomNetwork/index.test.tsx | 37 + .../__snapshots__/TabThumbnail.test.tsx.snap | 14 +- .../UI/Tabs/__snapshots__/index.test.tsx.snap | 44 +- app/components/UI/Tabs/index.test.tsx | 37 + .../UI/TemplateRenderer/SafeComponentList.ts | 2 +- .../UI/TemplateRenderer/TemplateRenderer.tsx | 2 +- .../TokenList/PortfolioBalance/index.test.tsx | 20 +- .../TokenList/PortfolioBalance/index.tsx | 19 +- .../__snapshots__/index.test.tsx.snap | 32 +- .../CustomNetworkNativeImgMapping.ts | 26 + .../Tokens/TokenList/TokenListItem/index.tsx | 113 +- app/components/UI/Tokens/TokenList/index.tsx | 3 - app/components/UI/Tokens/index.test.tsx | 2 +- app/components/UI/Tokens/index.tsx | 50 +- app/components/UI/Tokens/styles.ts | 9 +- .../__snapshots__/index.test.tsx.snap | 2185 +++++++- .../TransactionDetails/index.js | 180 +- .../TransactionDetails/index.test.tsx | 371 +- .../__snapshots__/index.test.tsx.snap | 43 +- app/components/UI/TransactionElement/index.js | 68 +- .../UI/TransactionElement/index.test.tsx | 48 +- app/components/UI/TransactionElement/utils.js | 58 +- .../UI/TransactionElement/utils.test.js | 33 + .../__snapshots__/index.test.tsx.snap | 14 +- app/components/UI/Transactions/index.js | 16 +- .../__snapshots__/UpdateNeeded.test.tsx.snap | 30 +- app/components/UI/UrlAutocomplete/styles.ts | 11 +- .../__snapshots__/WalletAccount.test.tsx.snap | 22 +- .../__snapshots__/WarningAlert.test.tsx.snap | 24 +- .../__snapshots__/index.test.tsx.snap | 4 +- .../__snapshots__/index.test.tsx.snap | 4 +- .../__snapshots__/index.test.tsx.snap | 42 +- .../AccountActions/AccountActions.test.tsx | 121 +- .../Views/AccountActions/AccountActions.tsx | 56 +- .../__snapshots__/index.test.tsx.snap | 54 +- .../__snapshots__/index.test.tsx.snap | 78 +- .../AccountConnect/AccountConnect.test.tsx | 4 +- .../Views/AccountConnect/AccountConnect.tsx | 13 +- .../AccountConnectMultiSelector.test.tsx.snap | 74 +- .../AccountConnect.test.tsx.snap | 98 +- ...tPermissionsConfirmRevokeAll.test.tsx.snap | 38 +- .../ConnectionDetails.test.tsx.snap | 20 +- .../PermittedNetworksInfoSheet.test.tsx.snap | 20 +- .../AccountPermissions.test.tsx.snap | 40 +- .../Views/AccountSelector/AccountSelector.tsx | 73 +- .../AccountSelector/AccountSelector.types.ts | 1 + .../AccountSelector.test.tsx.snap | 22 +- .../__snapshots__/index.test.tsx.snap | 639 +++ app/components/Views/ActivityView/index.js | 128 +- .../Views/ActivityView/index.test.tsx | 47 + .../AddAccountActions.test.tsx | 88 +- .../AddAccountActions/AddAccountActions.tsx | 48 +- .../AddAccountActions.types.ts | 3 + .../AddAccountActions.test.tsx.snap | 100 +- .../__snapshots__/AddAsset.test.tsx.snap | 58 +- .../__snapshots__/index.test.tsx.snap | 16 +- .../AddNewHdAccount/AddNewHdAccount.styles.ts | 79 + .../AddNewHdAccount/AddNewHdAccount.test.tsx | 233 + .../Views/AddNewHdAccount/AddNewHdAccount.tsx | 175 + .../AddNewHdAccount/AddNewHdAccount.types.ts | 3 + .../Views/AddNewHdAccount/index.tsx | 1 + .../AesCryptoTestForm.test.tsx.snap | 98 +- .../__snapshots__/Clipboard.test.tsx.snap | 8 +- .../__snapshots__/Form.test.tsx.snap | 12 +- app/components/Views/Asset/index.js | 11 +- .../AssetDetailsActions.test.tsx.snap | 120 +- .../__snapshots__/AssetsDetails.test.tsx.snap | 60 +- app/components/Views/AssetDetails/index.tsx | 2 +- .../Views/AssetOptions/AssetOptions.styles.ts | 5 + .../Views/AssetOptions/AssetOptions.test.tsx | 2 +- .../__snapshots__/AssetOptions.test.tsx.snap | 16 +- .../Browser/MaxBrowserTabsModal.styles.ts | 3 +- .../MaxBrowserTabsModal.test.tsx.snap | 31 +- .../Browser/__snapshots__/index.test.tsx.snap | 58 +- app/components/Views/Browser/index.test.tsx | 6 + .../Views/BrowserTab/BrowserTab.tsx | 29 +- .../__snapshots__/index.test.tsx.snap | 54 +- .../Options/__snapshots__/index.test.tsx.snap | 72 +- .../__snapshots__/index.test.tsx.snap | 461 +- .../components/PhishingModal/index.tsx | 33 +- .../components/PhishingModal/styles.ts | 3 + .../ChangeInSimulationModal.test.tsx.snap | 32 +- app/components/Views/Collectible/index.js | 4 +- .../Views/Collectible/index.test.tsx | 4 + .../__snapshots__/index.test.tsx.snap | 44 +- .../__snapshots__/index.test.tsx.snap | 64 +- .../Views/ConnectQRHardware/index.test.tsx | 10 +- .../Views/ConnectQRHardware/index.tsx | 2 +- .../__snapshots__/index.test.tsx.snap | 26 +- .../__snapshots__/index.test.tsx.snap | 32 +- .../Views/DetectedTokens/components/Token.tsx | 2 +- .../__snapshots__/Token.test.tsx.snap | 112 +- app/components/Views/DetectedTokens/index.tsx | 58 +- .../EditAccountName.test.tsx.snap | 46 +- .../__snapshots__/index.test.tsx.snap | 2 +- .../__snapshots__/index.test.tsx.snap | 34 +- .../__snapshots__/index.test.tsx.snap | 88 +- .../ImportFromSecretRecoveryPhrase/index.js | 2 - .../index.test.tsx | 39 +- .../ImportNewSecretRecoveryPhrase/index.tsx | 120 +- .../validation.ts | 107 + .../__snapshots__/index.test.tsx.snap | 40 +- .../__snapshots__/index.test.tsx.snap | 12 +- .../__snapshots__/index.test.tsx.snap | 60 +- .../__snapshots__/index.test.tsx.snap | 88 +- .../Login/__snapshots__/index.test.tsx.snap | 48 +- app/components/Views/Login/constants.ts | 8 + app/components/Views/Login/index.js | 688 --- app/components/Views/Login/index.test.tsx | 14 + app/components/Views/Login/index.tsx | 514 ++ app/components/Views/Login/styles.ts | 130 + .../__snapshots__/MultiRpcModal.test.tsx.snap | 28 +- .../MultichainTransactionsView.test.tsx | 5 +- .../NFTAutoDetectionModal.test.tsx.snap | 60 +- .../NetworkConnectMultiSelector.test.tsx.snap | 38 +- .../NetworkSelector/NetworkSelector.test.tsx | 2 +- .../Views/NetworkSelector/NetworkSelector.tsx | 133 +- .../RpcSelectionModal.test.tsx.snap | 38 +- .../NetworkSelector.test.tsx.snap | 304 +- .../NetworkSelector/useSwitchNetworks.ts | 210 + .../Views/NftDetails/NftDetails.tsx | 20 +- .../__snapshots__/NftDetails.test.ts.snap | 146 +- .../Badge/__snapshots__/index.test.tsx.snap | 2 +- .../Title/__snapshots__/index.test.tsx.snap | 1 - .../Notifications/Details/Title/index.tsx | 16 +- .../Details/__snapshots__/index.test.tsx.snap | 118 +- .../Views/Notifications/Details/index.tsx | 6 +- .../Views/Notifications/Details/styles.ts | 5 + .../OptIn/__snapshots__/index.test.tsx.snap | 257 - .../Views/Notifications/OptIn/index.test.tsx | 53 +- .../Views/Notifications/OptIn/index.tsx | 78 +- .../Views/Notifications/OptIn/styles.ts | 2 - .../__snapshots__/index.test.tsx.snap | 16 +- .../Views/Notifications/constants.ts | 7 - .../Views/Notifications/index.test.tsx | 51 +- app/components/Views/Notifications/index.tsx | 9 +- .../__snapshots__/index.test.tsx.snap | 22 +- .../__snapshots__/index.test.tsx.snap | 24 +- .../__snapshots__/index.test.tsx.snap | 88 +- .../__snapshots__/index.test.tsx.snap | 64 +- .../__snapshots__/index.test.tsx.snap | 160 +- .../__snapshots__/index.test.tsx.snap | 86 +- .../__snapshots__/index.test.tsx.snap | 28 +- .../__snapshots__/index.test.js.snap | 45 +- .../Views/OnboardingSuccess/index.test.js | 34 +- .../Views/OnboardingSuccess/index.tsx | 17 +- .../OriginSpamModal.test.tsx.snap | 64 +- .../__snapshots__/index.test.tsx.snap | 22 +- .../QRAccountDisplay.test.tsx.snap | 32 +- .../__snapshots__/index.test.tsx.snap | 6 +- .../Views/QRTabSwitcher/QRTabSwitcher.tsx | 1 + app/components/Views/QRTabSwitcher/styles.ts | 3 + .../Views/Quiz/SRPQuiz/SRPQuiz.test.tsx | 91 + app/components/Views/Quiz/SRPQuiz/SRPQuiz.tsx | 37 +- .../RevealPrivateCredential.tsx | 20 +- .../__snapshots__/index.test.tsx.snap | 208 +- .../SDK/SDKSessionsManager/getSharedStyles.ts | 6 + .../Views/SelectSRP/SelectSRP.test.tsx | 95 + app/components/Views/SelectSRP/SelectSRP.tsx | 19 + .../Views/SelectSRP/SelectSRPBottomSheet.tsx | 35 + app/components/Views/SelectSRP/index.tsx | 1 + app/components/Views/SelectSRP/styles.ts | 25 + .../FiatOnTestnetsFriction.styles.ts | 5 + .../FiatOnTestnetsFriction.test.tsx.snap | 50 +- .../__snapshots__/index.test.tsx.snap | 156 +- .../Views/Settings/AdvancedSettings/index.js | 6 +- .../__snapshots__/index.test.tsx.snap | 42 +- .../__snapshots__/index.test.tsx.snap | 20 +- .../__snapshots__/index.test.tsx.snap | 20 +- .../__snapshots__/index.test.tsx.snap | 20 +- .../AmbiguousAddressSheet.styles.ts | 7 + .../AmbiguousAddressSheet.test.tsx.snap | 40 +- .../Settings/Contacts/ContactForm/index.js | 2 +- .../Views/Settings/Contacts/index.js | 2 +- .../__snapshots__/index.test.tsx.snap | 30 +- .../__snapshots__/index.test.tsx.snap | 20 +- .../__snapshots__/index.test.tsx.snap | 64 +- .../__snapshots__/index.test.tsx.snap | 30 +- .../__snapshots__/index.test.tsx.snap | 50 +- .../__snapshots__/index.test.tsx.snap | 28 +- .../NetworksSettings/NetworkSettings/index.js | 36 +- .../__snapshots__/index.test.tsx.snap | 145 +- .../Views/Settings/NetworksSettings/index.js | 2 +- .../AccountsList.hooks.test.tsx | 8 + .../AccountsList.hooks.tsx | 19 +- .../AccountsList.test.tsx | 32 +- .../NotificationsSettings/AccountsList.tsx | 10 +- .../__snapshots__/index.test.tsx.snap | 23 +- .../CustomNotificationsRow/index.tsx | 17 +- .../FeatureAnnouncementToggle.test.tsx | 15 +- .../FeatureAnnouncementToggle.tsx | 6 +- .../MainNotificationToggle.hooks.test.tsx | 13 +- .../MainNotificationToggle.test.tsx | 6 +- .../MainNotificationToggle.tsx | 5 +- .../NotificationOptionToggle/index.tsx | 54 +- .../NotificationsSettings.constants.ts | 5 - .../PushNotificationToggle.test.tsx | 6 +- .../PushNotificationToggle.tsx | 7 +- .../__snapshots__/index.test.tsx.snap | 30 +- .../PermissionItem.test.tsx.snap | 34 +- ...ricsAndDataCollectionSection.test.tsx.snap | 56 +- .../ProtectYourWallet.test.tsx | 265 + .../ProtectYourWallet/ProtectYourWallet.tsx | 29 +- .../BlockaidSettings.test.tsx.snap | 28 +- .../SecuritySettings/SecuritySettings.tsx | 1 + .../SecuritySettings.test.tsx.snap | 748 +-- .../__snapshots__/index.test.tsx.snap | 186 +- app/components/Views/Settings/index.tsx | 11 +- .../ShowDisplayNFTMediaSheet.test.tsx.snap | 62 +- .../ShowIpfsGatewaySheet.test.tsx.snap | 62 +- .../ShowTokenIdSheet.test.tsx.snap | 20 +- .../__snapshots__/index.test.tsx.snap | 4 +- .../__snapshots__/index.test.tsx.snap | 125 +- .../Views/TransactionsView/index.js | 85 +- .../Views/TransactionsView/index.test.tsx | 47 +- .../Wallet/__snapshots__/index.test.tsx.snap | 1369 ++++- app/components/Views/Wallet/index.test.tsx | 20 +- app/components/Views/Wallet/index.tsx | 69 +- .../WalletActions/WalletActions.test.tsx | 43 +- .../Views/WalletActions/WalletActions.tsx | 21 +- .../__snapshots__/index.test.tsx.snap | 64 +- .../AlertModal/AlertModal.test.tsx | 23 + .../AlertSystem/AlertModal/AlertModal.tsx | 20 +- .../ConfirmAlertModal.test.tsx | 30 +- .../ConfirmAlertModal/ConfirmAlertModal.tsx | 40 +- .../MultipleAlertModal.test.tsx | 9 + .../context/Alerts.context.test.tsx | 6 + .../confirmations/Confirm/Confirm.test.tsx | 2 +- .../AccountNetworkInfo.test.tsx | 2 +- .../AccountNetworkInfoCollapsed.test.tsx | 2 +- .../AccountNetworkInfoExpanded.test.tsx | 37 +- .../AccountNetworkInfoExpanded.tsx | 7 +- .../AccountNetworkInfoExpanded.test.tsx.snap | 42 +- .../BlockaidAlertContent.test.tsx | 3 +- .../BlockaidAlertContent.tsx | 7 +- .../components/Confirm/Footer/Footer.test.tsx | 24 +- .../components/Confirm/Footer/Footer.tsx | 12 +- .../components/Confirm/Info/Info.test.tsx | 2 +- .../Info/PersonalSign/PersonalSign.test.tsx | 2 +- .../Shared/InfoRowOrigin/InfoRowOrigin.tsx | 2 +- .../Info/StakingClaim/StakingClaim.test.tsx | 13 +- .../StakingDeposit/StakingDeposit.test.tsx | 2 +- .../StakingWithdrawal.test.tsx | 2 +- .../Info/TypedSignV1/TypedSignV1.test.tsx | 2 +- .../TypedSignDecoded.test.tsx | 20 +- .../Info/TypedSignV3V4/TypedSignV3V4.test.tsx | 2 +- .../InfoRowDivider/InfoRowDivider.test.tsx | 2 +- .../LedgerSignModal/LedgerSignModal.tsx | 8 +- .../SignatureBlockaidBanner.tsx | 4 +- .../__snapshots__/BottomModal.test.tsx.snap | 4 +- .../__snapshots__/CopyButton.test.tsx.snap | 2 +- .../UI/InfoRow/AlertRow/AlertRow.test.tsx | 36 +- .../UI/InfoRow/AlertRow/AlertRow.tsx | 16 +- .../UI/InfoRow/Divider/Divider.test.tsx | 4 +- .../__snapshots__/Address.test.tsx.snap | 12 +- .../__snapshots__/Network.test.tsx.snap | 6 +- .../__snapshots__/Tooltip.test.tsx.snap | 2 +- .../Views/confirmations/constants/alerts.ts | 4 + .../QRHardwareContext.test.tsx | 14 +- .../useDomainMismatchAlerts.test.ts | 3 +- .../signatures/useDomainMismatchAlerts.ts | 3 +- .../hooks/alerts/useBlockaidAlerts.test.tsx | 89 +- .../hooks/alerts/useBlockaidAlerts.tsx | 45 +- .../hooks/useAccountInfo.test.ts | 2 +- .../confirmations/hooks/useAccountInfo.ts | 2 +- .../hooks/useConfirmationAlertMetrics.test.ts | 220 + .../hooks/useConfirmationAlertMetrics.ts | 105 + .../useConfirmationRedesignEnabled.test.ts | 19 +- .../hooks/useConfirmationRedesignEnabled.ts | 11 +- .../hooks/useSignatureMetrics.test.ts | 88 +- .../hooks/useSignatureMetrics.ts | 31 +- .../__snapshots__/index.test.tsx.snap | 68 +- .../__snapshots__/index.test.tsx.snap | 0 .../components/TransactionEditor/index.js | 38 +- .../TransactionEditor/index.test.tsx | 2 +- .../{ => legacy}/Approval/index.js | 77 +- .../{ => legacy}/Approval/index.test.tsx | 16 +- .../Approve/__snapshots__/index.test.tsx.snap | 42 +- .../{ApproveView => legacy}/Approve/index.js | 13 +- .../Approve/index.test.tsx | 0 .../{ApproveView => legacy}/Approve/styles.ts | 0 .../Approve/__snapshots__/index.test.tsx.snap | 973 ++++ .../legacy/ApproveView/Approve/index.js | 1004 ++++ .../legacy/ApproveView/Approve/index.test.tsx | 257 + .../legacy/ApproveView/Approve/styles.ts | 43 + .../Send/__snapshots__/index.test.tsx.snap | 24 +- .../confirmations/{ => legacy}/Send/index.js | 60 +- .../{ => legacy}/Send/index.test.tsx | 14 +- .../AddressElement/AddressElement.styles.ts | 2 +- .../AddressElement/AddressElement.test.tsx | 12 +- .../AddressElement/AddressElement.tsx | 14 +- .../AddressElement/AddressElement.types.ts | 0 .../AddressElement.test.tsx.snap | 12 +- .../SendFlow/AddressElement/index.tsx | 0 .../SendFlow/AddressFrom/AddressFrom.test.tsx | 8 +- .../SendFlow/AddressFrom/AddressFrom.tsx | 20 +- .../SendFlow/AddressFrom/AddressFrom.types.ts | 0 .../__snapshots__/AddressFrom.test.tsx.snap | 28 +- .../SendFlow/AddressFrom/index.ts | 0 .../SendFlow/AddressList/AddressList.jsx | 18 +- .../AddressList/AddressList.styles.ts | 2 +- .../SendFlow/AddressList/AddressList.test.tsx | 10 +- .../SendFlow/AddressList/AddressList.types.ts | 0 .../__snapshots__/AddressList.test.tsx.snap | 26 +- .../SendFlow/AddressList/index.js | 0 .../SendFlow/AddressTo/AddressTo.test.tsx | 2 +- .../SendFlow/AddressTo/AddressTo.tsx | 14 +- .../SendFlow/AddressTo/AddressTo.types.ts | 0 .../__snapshots__/AddressTo.test.tsx.snap | 16 +- .../{ => legacy}/SendFlow/AddressTo/index.ts | 0 .../Amount/__snapshots__/index.test.tsx.snap | 392 +- .../{ => legacy}/SendFlow/Amount/index.js | 84 +- .../SendFlow/Amount/index.test.tsx | 18 +- .../Confirm/__snapshots__/index.test.tsx.snap | 144 +- .../CustomGasModal/CustomGasModal.jsx | 8 +- .../CustomGasModal/CustomGasModal.styles.ts | 0 .../CustomGasModal/CustomGasModal.test.tsx | 4 +- .../CustomGasModal/CustomGasModal.types.ts | 0 .../CustomGasModal.test.tsx.snap | 94 +- .../components/CustomGasModal/index.js | 0 .../{ => legacy}/SendFlow/Confirm/index.js | 122 +- .../SendFlow/Confirm/index.test.tsx | 52 +- .../{ => legacy}/SendFlow/Confirm/styles.ts | 2 +- .../SendFlow/Confirm/utils.test.ts | 16 +- .../{ => legacy}/SendFlow/Confirm/utils.ts | 7 +- .../SendFlow/Confirm/validation.test.ts | 12 +- .../SendFlow/Confirm/validation.ts | 6 +- .../__snapshots__/index.test.tsx.snap | 10 +- .../SendFlow/ErrorMessage/index.js | 8 +- .../SendFlow/ErrorMessage/index.test.tsx | 0 .../SendTo/__snapshots__/index.test.tsx.snap | 52 +- .../{ => legacy}/SendFlow/SendTo/index.js | 52 +- .../SendFlow/SendTo/index.test.tsx | 10 +- .../{ => legacy}/SendFlow/SendTo/styles.ts | 2 +- .../SendFlow/WarningMessage/index.tsx | 4 +- .../__snapshots__/index.test.tsx.snap | 20 +- .../components/CustomNonceModal/index.js | 14 +- .../CustomNonceModal/index.test.tsx | 0 .../__snapshots__/index.test.tsx.snap | 10 +- .../Approval/ApprovalFlowLoader/index.js | 8 +- .../ApprovalFlowLoader/index.test.tsx | 2 +- .../TemplateConfirmation.styles.ts | 4 +- .../TemplateConfirmation.test.tsx | 2 +- .../TemplateConfirmation.tsx | 12 +- .../Templates/ApprovalResult.test.tsx | 2 +- .../Templates/ApprovalResult.ts | 6 +- .../Templates/SmartTransactionStatus.ts | 0 .../ApprovalResult.test.tsx.snap | 80 +- .../TemplateConfirmation/Templates/index.ts | 6 +- .../TemplateConfirmation.test.tsx.snap | 34 +- .../TemplateConfirmation/util.test.ts | 0 .../Approval/TemplateConfirmation/util.ts | 4 +- .../ApproveTransactionHeader.constants.ts | 2 +- .../ApproveTransactionHeader.styles.ts | 4 +- .../ApproveTransactionHeader.test.tsx | 18 +- .../ApproveTransactionHeader.tsx | 24 +- .../ApproveTransactionHeader.types.ts | 0 .../ApproveTransactionHeader.test.tsx.snap | 82 +- .../ApproveTransactionHeader/index.ts | 0 .../AddNickNameHeader/index.tsx | 4 +- .../AddNickname/index.tsx | 38 +- .../AddNickname/styles.ts | 2 +- .../AddNickname/types.ts | 0 .../EditPermission/index.tsx | 16 +- .../ShowBlockExplorer/index.tsx | 10 +- .../VerifyContractDetails.styles.ts | 0 .../VerifyContractDetails.test.tsx | 4 +- .../VerifyContractDetails.tsx | 22 +- .../VerifyContractDetails.types.ts | 0 .../VerifyContractDetails/index.ts | 0 .../__snapshots__/index.test.jsx.snap | 40 +- .../ApproveTransactionReview/index.js | 94 +- .../ApproveTransactionReview/index.test.jsx | 20 +- .../ApproveTransactionReview/styles.ts | 4 +- .../BlockaidBanner.constants.ts | 0 .../BlockaidBanner/BlockaidBanner.styles.ts | 2 +- .../BlockaidBanner/BlockaidBanner.test.tsx | 12 +- .../BlockaidBanner/BlockaidBanner.tsx | 28 +- .../BlockaidBanner/BlockaidBanner.types.ts | 4 +- .../BlockaidBanner/BlockaidBannerLink.tsx | 6 +- .../BlockaidBanner.test.tsx.snap | 142 +- .../__snapshots__/index.test.tsx.snap | 30 +- .../components/CustomNonce/index.js | 6 +- .../components/CustomNonce/index.test.tsx | 0 .../components/EditGasFee1559Update/index.jsx | 36 +- .../components/EditGasFee1559Update/styles.ts | 2 +- .../components/EditGasFee1559Update/types.ts | 2 +- .../EditGasFeeLegacyUpdate.test.tsx | 6 +- .../EditGasFeeLegacyUpdate.test.tsx.snap | 104 +- .../EditGasFeeLegacyUpdate/index.jsx | 34 +- .../EditGasFeeLegacyUpdate/styles.ts | 2 +- .../EditGasFeeLegacyUpdate/types.ts | 0 .../components/PersonalSign/PersonalSign.tsx | 38 +- .../__snapshots__/index.test.tsx.snap | 0 .../components/PersonalSign/index.test.tsx | 26 +- .../components/PersonalSign/index.ts | 0 .../components/PersonalSign/styles.ts | 2 +- .../components/PersonalSign/types.ts | 0 .../__snapshots__/index.test.tsx.snap | 10 +- .../SignatureRequest/ExpandedMessage/index.js | 12 +- .../ExpandedMessage/index.test.tsx | 0 .../SignatureRequest/Root/Root.test.tsx | 8 +- .../components/SignatureRequest/Root/Root.tsx | 10 +- .../Root/__snapshots__/Root.test.tsx.snap | 337 +- .../components/SignatureRequest/Root/index.ts | 0 .../__snapshots__/index.test.tsx.snap | 0 .../components/SignatureRequest/index.js | 32 +- .../SignatureRequest/index.test.tsx | 2 +- .../components/SignatureRequest/types.ts | 0 ...SmartTransactionsMigrationBanner.styles.ts | 2 +- .../SmartTransactionsMigrationBanner.test.tsx | 14 +- .../SmartTransactionsMigrationBanner.tsx | 20 +- .../SmartTransactionsMigrationBanner.types.ts | 0 .../TransactionBlockaidBanner.test.tsx | 10 +- .../TransactionBlockaidBanner.tsx | 2 +- .../TransactionBlockaidBanner.types.ts | 0 .../TransactionBlockaidBanner.test.tsx.snap | 30 +- .../__snapshots__/index.test.tsx.snap | 0 .../TransactionReviewData/index.js | 16 +- .../TransactionReviewData/index.test.tsx | 2 +- .../__snapshots__/index.test.js.snap | 0 .../TransactionReviewDetailsCard/index.js | 14 +- .../index.test.js | 2 +- .../__snapshots__/index.test.tsx.snap | 12 +- .../TransactionReviewEIP1559/index.js | 22 +- .../TransactionReviewEIP1559/index.test.tsx | 4 +- .../__snapshots__/index.test.jsx.snap | 22 +- .../TransactionReviewEIP1559Update/index.jsx | 26 +- .../index.test.jsx | 8 +- .../skeletonComponent.tsx | 2 +- .../TransactionReviewEIP1559Update/styles.js | 0 .../TransactionReviewEIP1559Update/types.ts | 0 .../__snapshots__/index.test.tsx.snap | 0 .../TransactionReviewInformation/index.js | 42 +- .../index.test.tsx | 2 +- .../__snapshots__/index.test.tsx.snap | 0 .../TransactionReviewSummary/index.js | 8 +- .../TransactionReviewSummary/index.test.tsx | 2 +- .../__snapshots__/index.test.jsx.snap | 126 +- .../components/TransactionReview/index.js | 62 +- .../TransactionReview/index.test.jsx | 34 +- .../__snapshots__/index.test.tsx.snap | 144 +- .../components/TypedSign/index.js | 28 +- .../components/TypedSign/index.test.tsx | 32 +- .../components/UpdateEIP1559Tx/index.jsx | 22 +- .../components/UpdateEIP1559Tx/types.ts | 0 .../__snapshots__/index.test.tsx.snap | 0 .../components/WatchAssetRequest/index.js | 53 +- .../WatchAssetRequest/index.test.tsx | 2 +- .../AssetPollingProvider.test.tsx | 6 +- .../AssetPolling/AssetPollingProvider.tsx | 8 +- .../hooks/useAccounts/useAccounts.test.ts | 51 +- .../hooks/useAccounts/useAccounts.ts | 238 +- app/components/hooks/useAccounts/utils.ts | 62 - .../hooks/useGetFormattedTokensPerChain.tsx | 191 +- .../useGetTotalFiatBalanceCrossChains.tsx | 199 +- .../hooks/useMultichainBalances/index.ts | 5 +- .../useMultichainBalances.ts | 190 - .../useMultichainBalances.types.ts | 19 +- ...seMultichainBalancesForAllAccounts.test.ts | 332 ++ .../useMultichainBalancesForAllAccounts.ts | 140 + ...SelectedAccountMultichainBalances.test.ts} | 139 +- .../useSelectedAccountMultichainBalances.ts | 134 + .../hooks/useMultichainBalances/utils.ts | 170 + .../hooks/useNftDetectionChainIds.test.ts | 71 + .../hooks/useNftDetectionChainIds.ts | 38 + app/constants/navigation/Routes.ts | 3 + app/constants/network.js | 6 + app/constants/storage.ts | 2 + app/core/Analytics/MetaMetrics.events.ts | 18 + .../SnapKeyring/trackSnapAccountEvent.test.ts | 60 + .../SnapKeyring/trackSnapAccountEvent.ts | 33 + app/core/AppConstants.ts | 1 + app/core/Authentication/Authentication.ts | 1 - app/core/Engine/Engine.test.ts | 185 +- app/core/Engine/Engine.ts | 233 +- .../gas-fee-controller-init.test.ts | 229 + .../gas-fee-controller-init.ts | 61 + .../controllers/gas-fee-controller/index.ts | 1 + ...e-notification-services-controller.test.ts | 32 +- ...create-notification-services-controller.ts | 4 +- ...ification-services-push-controller.test.ts | 7 +- .../snaps/snap-interface-controller-init.ts | 4 + .../transaction-controller-init.test.ts | 1 - .../transaction-controller-init.ts | 4 +- .../accounts-controller-messenger/index.ts | 1 + .../gas-fee-controller-messenger.ts | 46 + .../gas-fee-controller-messenger/index.ts | 1 + app/core/Engine/messengers/index.ts | 16 +- ...tion-services-controller-messenger.test.ts | 10 +- ...ification-services-controller-messenger.ts | 16 +- .../snap-interface-controller-messenger.ts | 8 +- .../transaction-controller-messenger.ts | 14 +- app/core/Engine/types.ts | 6 +- app/core/Engine/utils/utils.test.ts | 92 +- app/core/Engine/utils/utils.ts | 1 - app/core/Ledger/Ledger.test.ts | 19 +- app/core/Ledger/Ledger.ts | 94 +- app/core/Permissions/index.test.ts | 316 ++ app/core/Permissions/index.ts | 102 + .../RPCMethods/lib/ethereum-chain-utils.js | 3 + app/core/SnapKeyring/SnapKeyring.test.ts | 111 + app/core/SnapKeyring/SnapKeyring.ts | 52 +- app/core/SnapKeyring/utils/snaps.test.ts | 152 + app/core/SnapKeyring/utils/snaps.ts | 36 + app/core/Vault.js | 2 +- app/core/WalletConnect/WalletConnect.js | 2 +- .../WalletConnect2Session.test.ts | 558 +- .../WalletConnect/WalletConnect2Session.ts | 375 +- .../WalletConnect/WalletConnectV2.test.ts | 862 ++- app/core/WalletConnect/WalletConnectV2.ts | 192 +- app/core/WalletConnect/wc-utils.test.ts | 416 ++ app/core/WalletConnect/wc-utils.ts | 231 +- app/core/redux/slices/bridge/index.test.ts | 32 +- app/core/redux/slices/bridge/index.ts | 84 +- .../slices/confirmationMetrics/index.test.ts | 20 + .../redux/slices/confirmationMetrics/index.ts | 6 + app/fonts/EuclidCircularB-Bold.otf | Bin 115104 -> 0 bytes app/fonts/EuclidCircularB-BoldItalic.otf | Bin 117752 -> 0 bytes app/fonts/EuclidCircularB-Light.otf | Bin 106492 -> 0 bytes app/fonts/EuclidCircularB-LightItalic.otf | Bin 109964 -> 0 bytes app/fonts/EuclidCircularB-Medium.otf | Bin 116808 -> 0 bytes app/fonts/EuclidCircularB-MediumItalic.otf | Bin 119648 -> 0 bytes app/fonts/EuclidCircularB-Regular.otf | Bin 115168 -> 0 bytes app/fonts/EuclidCircularB-RegularItalic.otf | Bin 119480 -> 0 bytes app/fonts/EuclidCircularB-Semibold.otf | Bin 117828 -> 0 bytes app/fonts/EuclidCircularB-SemiboldItalic.otf | Bin 121384 -> 0 bytes app/fonts/MMPoly-Regular.otf | Bin 0 -> 136028 bytes app/fonts/MMSans-Bold.otf | Bin 0 -> 111676 bytes app/fonts/MMSans-Medium.otf | Bin 0 -> 111352 bytes app/fonts/Roboto-Black.ttf | Bin 171480 -> 0 bytes app/fonts/Roboto-BlackItalic.ttf | Bin 177552 -> 0 bytes app/fonts/Roboto-Bold.ttf | Bin 170760 -> 0 bytes app/fonts/Roboto-BoldItalic.ttf | Bin 174952 -> 0 bytes app/fonts/Roboto-Italic.ttf | Bin 173932 -> 0 bytes app/fonts/Roboto-Light.ttf | Bin 170420 -> 0 bytes app/fonts/Roboto-LightItalic.ttf | Bin 176616 -> 0 bytes app/fonts/Roboto-Medium.ttf | Bin 172064 -> 0 bytes app/fonts/Roboto-MediumItalic.ttf | Bin 176864 -> 0 bytes app/fonts/Roboto-Regular.ttf | Bin 171676 -> 0 bytes app/fonts/Roboto-Thin.ttf | Bin 171904 -> 0 bytes app/fonts/Roboto-ThinItalic.ttf | Bin 176300 -> 0 bytes app/images/banners/banner_image_multisrp.png | Bin 0 -> 2278 bytes app/images/image-icons.js | 5 + app/images/megaeth-testnet-logo.png | Bin 0 -> 131978 bytes app/images/solana-logo-transparent.svg | 13 + app/images/soneium.png | Bin 0 -> 5096 bytes app/images/xrp-logo.png | Bin 0 -> 178693 bytes app/images/xrplevm.png | Bin 0 -> 3846 bytes app/lib/ppom/ppom-util.test.ts | 3 +- app/lib/ppom/ppom-util.ts | 2 +- app/lib/ppom/security-alerts-api.test.ts | 2 +- app/lib/ppom/security-alerts-api.ts | 2 +- app/reducers/collectibles/index.js | 12 + app/reducers/index.ts | 6 +- app/reducers/onboarding/index.js | 26 - app/reducers/onboarding/index.test.ts | 45 + app/reducers/onboarding/index.ts | 51 + app/reducers/signatureRequest/index.ts | 2 +- app/reducers/swaps/index.js | 11 +- ...accountTrackerControllerReRenders.test.tsx | 2 +- app/selectors/currencyRateController.ts | 3 +- .../featureFlagController/env.test.ts | 25 + app/selectors/featureFlagController/env.ts | 18 + .../featureFlagController/index.test.ts | 2 +- app/selectors/featureFlagController/index.ts | 15 +- app/selectors/featureFlagController/mocks.ts | 3 +- .../productSafetyDappScanning/index.test.ts | 50 + .../productSafetyDappScanning/index.ts | 13 + .../productSafetyDappScanning/types.ts | 1 + app/selectors/identity/index.test.ts | 9 + app/selectors/identity/index.tsx | 16 +- app/selectors/multichain/evm.test.tsx | 2 +- app/selectors/multichain/evm.ts | 2 +- app/selectors/multichain/multichain.test.ts | 97 +- app/selectors/multichain/multichain.ts | 190 +- .../multichainNetworkController/index.ts | 3 +- app/selectors/networkController.ts | 4 +- app/selectors/notifications/index.test.ts | 18 + app/selectors/notifications/index.tsx | 5 + app/selectors/onboarding/index.test.ts | 16 + app/selectors/onboarding/index.ts | 9 + app/selectors/settings.ts | 3 +- .../smartTransactionsController.test.ts | 132 +- app/selectors/smartTransactionsController.ts | 126 +- app/selectors/transactionController.ts | 21 +- app/selectors/wizard/index.test.ts | 16 - app/selectors/wizard/index.ts | 9 - app/store/index.ts | 3 + app/store/migrations/029.ts | 5 +- app/store/migrations/031.ts | 1 - app/store/migrations/036.test.ts | 50 +- app/store/migrations/036.ts | 15 + app/store/migrations/042.test.ts | 19 + app/store/migrations/042.ts | 7 + app/store/migrations/052.test.ts | 22 + app/store/migrations/052.ts | 8 + app/store/migrations/059.test.ts | 23 + app/store/migrations/059.ts | 8 + app/store/migrations/071.test.ts | 102 + app/store/migrations/071.ts | 40 + app/store/migrations/072.test.ts | 230 + app/store/migrations/072.ts | 78 + app/store/migrations/index.ts | 4 + app/store/persistConfig.ts | 1 - .../accountsController.test.ts | 35 +- .../validateMigration/accountsController.ts | 11 +- app/styles/common.ts | 8 +- app/util/activity/index.test.ts | 99 +- app/util/activity/index.ts | 9 +- app/util/address/index.test.ts | 70 + app/util/address/index.ts | 43 +- app/util/blockaid/index.test.ts | 26 +- app/util/blockaid/index.ts | 2 +- .../identity/hooks/useAccountSyncing/index.ts | 4 + .../useAccountSyncing.test.tsx | 169 + .../useAccountSyncing/useAccountSyncing.ts | 65 + .../useAuthentication/useAutoSignIn.test.ts | 4 +- .../hooks/useAuthentication/useAutoSignIn.ts | 4 +- .../useIdentityEffects.test.ts | 34 + .../useIdentityEffects/useIdentityEffects.ts | 12 + app/util/importAdditionalAccounts.test.ts | 4 +- app/util/importAdditionalAccounts.ts | 51 +- app/util/linkCheck.test.ts | 35 +- app/util/linkCheck.ts | 18 +- .../logs/__snapshots__/index.test.ts.snap | 24 +- app/util/networks/customNetworks.tsx | 9 + app/util/networks/index.js | 51 +- app/util/networks/index.test.ts | 117 +- app/util/notifications/constants/config.ts | 16 +- .../hooks/useNotifications.test.tsx | 68 +- .../notifications/hooks/useNotifications.ts | 49 +- .../hooks/useSwitchNotifications.ts | 8 +- app/util/phishingDetection.test.ts | 85 + app/util/phishingDetection.ts | 26 + app/util/string/index.test.ts | 7 +- app/util/string/index.ts | 5 +- app/util/test/accountsControllerTestUtils.ts | 1 + app/util/test/initial-background-state.json | 30 +- app/util/test/initial-root-state.ts | 3 +- app/util/test/keyringControllerTestUtils.ts | 34 +- app/util/test/renderWithProvider.tsx | 5 +- app/util/test/utils.js | 1 + app/util/transaction-controller/index.test.ts | 51 + app/util/transaction-controller/index.ts | 40 +- app/util/transactions/index.js | 67 +- app/util/transactions/index.test.ts | 2 +- attribution.txt | 4749 +++++++++-------- bitrise.yml | 218 +- crowdin.yml | 4 - docs/readme/api-logging.md | 63 + e2e/api-mocking/api-monitor.js | 252 + e2e/api-mocking/mock-server.js | 2 +- e2e/fixtures/fixture-builder.js | 63 +- .../Browser/Confirmations/AlertSystem.js | 6 +- .../Notifications/EnableNotificationsModal.js | 26 + .../Notifications/NotificationDetailsView.js | 21 + .../Notifications/NotificationMenuView.js | 48 + .../Notifications/NotificationSettingsView.js | 56 + e2e/pages/Ramps/BuildQuoteView.js | 32 + e2e/pages/Settings/SettingsView.js | 8 + e2e/pages/wallet/AccountActionsBottomSheet.js | 10 + .../AddNewHdAccountComponent.js | 44 + .../MultiSrp/Common/SRPListComponent.js | 11 + .../MultiSrp/Common/SRPListItemComponent.js | 34 + e2e/pages/wallet/WalletView.js | 10 + .../ConfirmationView.selectors.js | 5 +- .../MultiSRP/AddHdAccount.selectors.js | 7 + e2e/selectors/MultiSRP/SRPImport.selectors.js | 1 + e2e/selectors/MultiSRP/SRPList.selectors.js | 3 + .../MultiSRP/SRPListItem.selectors.js | 5 + .../EnableNotificationModal.selectors.js | 6 + .../NotificationDetailsView.selectors.js | 5 + .../NotificationMenuView.selectors.js | 17 + .../NotificationSettingsView.selectors.js | 18 + .../AccountActionsBottomSheet.selectors.js | 1 + e2e/selectors/wallet/LoginView.selectors.js | 9 + e2e/selectors/wallet/WalletView.selectors.js | 3 + e2e/specs/browser/browser-tests.spec.js | 29 +- .../approve-custom-erc20.spec.js | 8 + .../approve-default-erc20.spec.js | 8 + .../confirmations/approve-erc721.spec.js | 8 + .../batch-transfer-erc1155.spec.js | 8 + .../increase-allowance-erc20.spec.js | 8 + .../send-erc20-with-dapp.spec.js | 8 + e2e/specs/confirmations/send-erc721.spec.js | 8 + .../send-failing-contract.spec.js | 1 - .../set-approval-for-all-erc1155.spec.js | 8 + .../set-approve-for-all-erc721.spec.js | 8 + .../identity/account-syncing/mock-data.js | 53 + .../identity/account-syncing/mockData.js | 12 - ...c-after-adding-custom-name-account.spec.js | 172 +- .../sync-after-onboarding.spec.js | 106 +- .../sync-with-account-balances.spec.js | 165 + e2e/specs/identity/utils/constants.js | 4 +- e2e/specs/identity/utils/mocks.js | 35 + .../user-storage/generateEncryptedData.js | 46 + .../userStorageMockttpController.js | 62 + .../userStorageMockttpController.test.js | 10 +- ...ble-notifications-after-onboarding.spec.js | 99 + .../notification-settings-flow.spec.js | 120 + e2e/specs/notifications/utils/constants.js | 14 +- .../utils/mock-user-storage-data.js | 19 + e2e/specs/notifications/utils/mocks.js | 128 +- e2e/specs/quarantine/offramp-limits.spec.js | 6 +- e2e/specs/ramps/offramp-cashout.spec.js | 60 + e2e/specs/ramps/offramp-token-amount.spec.js | 63 + e2e/specs/ramps/onramp.spec.js | 6 +- .../wallet/incoming-transactions.spec.js | 4 +- e2e/tags.js | 8 +- ios/MetaMask.xcodeproj/project.pbxproj | 200 +- ios/MetaMask/Info.plist | 29 +- ios/MetaMask/MetaMask-Flask-Info.plist | 32 +- ios/MetaMask/MetaMask-QA-Info.plist | 32 +- ios/Podfile.lock | 4 +- ios/link-assets-manifest.json | 88 +- locales/languages/de.json | 394 +- locales/languages/el.json | 394 +- locales/languages/en.json | 49 +- locales/languages/es.json | 420 +- locales/languages/fr.json | 396 +- locales/languages/hi.json | 394 +- locales/languages/id.json | 394 +- locales/languages/ja.json | 392 +- locales/languages/ko.json | 392 +- locales/languages/pt.json | 396 +- locales/languages/ru.json | 394 +- locales/languages/tl.json | 402 +- locales/languages/tr.json | 394 +- locales/languages/vi.json | 394 +- locales/languages/zh.json | 392 +- metro.transform.js | 4 +- package.json | 92 +- ...@metamask+assets-controllers+55.0.1.patch} | 94 +- .../@metamask+network-controller+22.1.0.patch | 59 - ...amask+preferences-controller+17.0.0.patch} | 30 +- ...etox+20.27.5.patch => detox+20.33.0.patch} | 0 scripts/setup.mjs | 21 + scripts/start-api-logging-server.js | 39 + shim.js | 3 +- yarn.lock | 1394 +++-- 1264 files changed, 59360 insertions(+), 28499 deletions(-) create mode 100644 .github/workflows/changelog-check.yml delete mode 100644 .github/workflows/crowdin-branch-cleanup.yml delete mode 100644 .github/workflows/crowdin-branch-pr-ready-for-translation.yml delete mode 100644 .github/workflows/crowdin-pull-branch-pr-completed-translations.yml delete mode 100644 .github/workflows/crowdin-reusable-translation-download.yml delete mode 100644 .github/workflows/crowdin-upload-both-sources-translations.yml delete mode 100644 android/app/src/main/assets/fonts/EuclidCircularB-Bold.otf delete mode 100644 android/app/src/main/assets/fonts/EuclidCircularB-BoldItalic.otf delete mode 100644 android/app/src/main/assets/fonts/EuclidCircularB-Light.otf delete mode 100644 android/app/src/main/assets/fonts/EuclidCircularB-LightItalic.otf delete mode 100644 android/app/src/main/assets/fonts/EuclidCircularB-Medium.otf delete mode 100644 android/app/src/main/assets/fonts/EuclidCircularB-MediumItalic.otf delete mode 100644 android/app/src/main/assets/fonts/EuclidCircularB-Regular.otf delete mode 100644 android/app/src/main/assets/fonts/EuclidCircularB-RegularItalic.otf delete mode 100644 android/app/src/main/assets/fonts/EuclidCircularB-Semibold.otf delete mode 100644 android/app/src/main/assets/fonts/EuclidCircularB-SemiboldItalic.otf create mode 100755 android/app/src/main/assets/fonts/MMPoly-Regular.otf create mode 100755 android/app/src/main/assets/fonts/MMSans-Bold.otf create mode 100755 android/app/src/main/assets/fonts/MMSans-Medium.otf delete mode 100755 android/app/src/main/assets/fonts/Roboto-Black.ttf delete mode 100755 android/app/src/main/assets/fonts/Roboto-BlackItalic.ttf delete mode 100755 android/app/src/main/assets/fonts/Roboto-Bold.ttf delete mode 100755 android/app/src/main/assets/fonts/Roboto-BoldItalic.ttf delete mode 100755 android/app/src/main/assets/fonts/Roboto-Italic.ttf delete mode 100755 android/app/src/main/assets/fonts/Roboto-Light.ttf delete mode 100755 android/app/src/main/assets/fonts/Roboto-LightItalic.ttf delete mode 100755 android/app/src/main/assets/fonts/Roboto-Medium.ttf delete mode 100755 android/app/src/main/assets/fonts/Roboto-MediumItalic.ttf delete mode 100755 android/app/src/main/assets/fonts/Roboto-Regular.ttf delete mode 100755 android/app/src/main/assets/fonts/Roboto-Thin.ttf delete mode 100755 android/app/src/main/assets/fonts/Roboto-ThinItalic.ttf create mode 100644 app/actions/onboarding/index.test.ts delete mode 100644 app/components/UI/BiometryButton/__snapshots__/index.test.tsx.snap create mode 100644 app/components/UI/Bridge/_mocks_/bridgeControllerState.ts create mode 100644 app/components/UI/Bridge/_mocks_/bridgeReducerState.ts create mode 100644 app/components/UI/Bridge/_mocks_/initialState.ts create mode 100644 app/components/UI/Bridge/_mocks_/mock-quotes-native-erc20.json create mode 100644 app/components/UI/Bridge/components/QuoteDetailsCard/QuoteDetailsCard.styles.ts create mode 100644 app/components/UI/Bridge/components/QuoteDetailsCard/QuoteDetailsCard.test.tsx create mode 100644 app/components/UI/Bridge/components/QuoteDetailsCard/QuoteDetailsCard.tsx create mode 100644 app/components/UI/Bridge/components/QuoteDetailsCard/QuoteDetailsCard.types.ts create mode 100644 app/components/UI/Bridge/components/QuoteDetailsCard/__snapshots__/QuoteDetailsCard.test.tsx.snap create mode 100644 app/components/UI/Bridge/components/QuoteDetailsCard/index.ts rename app/components/UI/Bridge/components/{Token.tsx => TokenButton.tsx} (97%) delete mode 100644 app/components/UI/Bridge/hooks/useDestinationTokens.tsx delete mode 100644 app/components/UI/Bridge/hooks/useSourceTokens.ts create mode 100644 app/components/UI/Bridge/hooks/useTokens.ts create mode 100644 app/components/UI/Bridge/hooks/useTopTokens/index.ts create mode 100644 app/components/UI/Bridge/hooks/useTopTokens/useTopTokens.test.ts create mode 100644 app/components/UI/Bridge/utils/index.ts create mode 100644 app/components/UI/Bridge/utils/isBridgeAllowed.test.ts create mode 100644 app/components/UI/CollectibleDetectionModal/index.test.tsx rename app/components/UI/{Stake/Views/StakeInputView/StakeInputView.styles.ts => Earn/Views/EarnInputView/EarnInputView.styles.ts} (100%) rename app/components/UI/{Stake/Views/StakeInputView/StakeInputView.test.tsx => Earn/Views/EarnInputView/EarnInputView.test.tsx} (66%) rename app/components/UI/{Stake/Views/StakeInputView/StakeInputView.tsx => Earn/Views/EarnInputView/EarnInputView.tsx} (56%) create mode 100644 app/components/UI/Earn/Views/EarnInputView/EarnInputView.types.ts rename app/components/UI/{Stake/Views/StakeInputView/__snapshots__/StakeInputView.test.tsx.snap => Earn/Views/EarnInputView/__snapshots__/EarnInputView.test.tsx.snap} (91%) create mode 100644 app/components/UI/Earn/Views/EarnInputView/utils.test.ts create mode 100644 app/components/UI/Earn/Views/EarnInputView/utils.ts rename app/components/UI/{Stake/Views/UnstakeInputView/UnstakeInputView.styles.ts => Earn/Views/EarnWithdrawInputView/EarnWithdrawInputView.styles.ts} (100%) rename app/components/UI/{Stake/Views/UnstakeInputView/UnstakeInputView.test.tsx => Earn/Views/EarnWithdrawInputView/EarnWithdrawInputView.test.tsx} (74%) rename app/components/UI/{Stake/Views/UnstakeInputView/UnstakeInputView.tsx => Earn/Views/EarnWithdrawInputView/EarnWithdrawInputView.tsx} (50%) create mode 100644 app/components/UI/Earn/Views/EarnWithdrawInputView/EarnWithdrawInputView.types.ts rename app/components/UI/{Stake/Views/UnstakeInputView => Earn/Views/EarnWithdrawInputView}/UnstakeBanner.tsx (100%) rename app/components/UI/{Stake/Views/UnstakeInputView/__snapshots__/UnstakeInputView.test.tsx.snap => Earn/Views/EarnWithdrawInputView/__snapshots__/EarnWithdrawInputView.test.tsx.snap} (92%) create mode 100644 app/components/UI/Earn/components/CurrencySwitch.test.tsx create mode 100644 app/components/UI/Earn/components/CurrencySwitch.tsx rename app/components/UI/{Stake => Earn}/components/EarnTokenList/EarnTokenList.styles.ts (100%) rename app/components/UI/{Stake => Earn}/components/EarnTokenList/EarnTokenList.test.tsx (93%) rename app/components/UI/{Stake => Earn}/components/EarnTokenList/__snapshots__/EarnTokenList.test.tsx.snap (92%) rename app/components/UI/{Stake => Earn}/components/EarnTokenList/index.tsx (88%) rename app/components/UI/{Stake => Earn}/components/EarnTokenListItem/EarnTokenListItem.styles.tsx (100%) rename app/components/UI/{Stake => Earn}/components/EarnTokenListItem/EarnTokenListItem.test.tsx (100%) rename app/components/UI/{Stake => Earn}/components/EarnTokenListItem/EarnTokenListItem.types.ts (100%) rename app/components/UI/{Stake => Earn}/components/EarnTokenListItem/__snapshots__/EarnTokenListItem.test.tsx.snap (91%) rename app/components/UI/{Stake => Earn}/components/EarnTokenListItem/index.tsx (100%) rename app/components/UI/{Stake => Earn}/components/EarnTokenSelector/EarnTokenSelector.styles.ts (100%) rename app/components/UI/{Stake => Earn}/components/EarnTokenSelector/EarnTokenSelector.test.tsx (88%) rename app/components/UI/{Stake => Earn}/components/EarnTokenSelector/__snapshots__/EarnTokenSelector.test.tsx.snap (91%) rename app/components/UI/{Stake => Earn}/components/EarnTokenSelector/index.tsx (91%) create mode 100644 app/components/UI/Earn/components/InputDisplay/InputDisplay.test.tsx create mode 100644 app/components/UI/Earn/components/InputDisplay/index.tsx rename app/components/UI/{Stake => Earn}/components/MaxInputModal/MaxInputModal.styles.ts (100%) rename app/components/UI/{Stake => Earn}/components/MaxInputModal/MaxInputModal.test.tsx (77%) rename app/components/UI/{Stake => Earn}/components/MaxInputModal/__snapshots__/MaxInputModal.test.tsx.snap (94%) rename app/components/UI/{Stake => Earn}/components/MaxInputModal/index.tsx (97%) create mode 100644 app/components/UI/Earn/hooks/useEarnInput.test.tsx create mode 100644 app/components/UI/Earn/hooks/useEarnInput.ts rename app/components/UI/{Stake => Earn}/hooks/useEarnTokenDetails.test.tsx (66%) create mode 100644 app/components/UI/Earn/hooks/useEarnTokenDetails.ts create mode 100644 app/components/UI/Earn/hooks/useEarnWithdrawInput.test.ts create mode 100644 app/components/UI/Earn/hooks/useEarnWithdrawInput.ts create mode 100644 app/components/UI/Earn/hooks/useInput.test.tsx create mode 100644 app/components/UI/Earn/hooks/useInput.ts delete mode 100644 app/components/UI/Notification/NotificationMenuItem/__snapshots__/Root.test.tsx.snap create mode 100644 app/components/UI/Ramp/components/CustomAction/CustomAction.styles.ts create mode 100644 app/components/UI/Ramp/components/CustomAction/CustomAction.test.tsx create mode 100644 app/components/UI/Ramp/components/CustomAction/CustomAction.tsx create mode 100644 app/components/UI/Ramp/components/CustomAction/index.ts delete mode 100644 app/components/UI/Ramp/components/CustomActionButton.tsx delete mode 100644 app/components/UI/Ramp/containers/CustomActionButton.tsx create mode 100644 app/components/UI/Ramp/hooks/usePaymentMethods.test.ts create mode 100644 app/components/UI/Ramp/hooks/useQuotesAndCustomActions.test.ts create mode 100644 app/components/UI/Ramp/hooks/useQuotesAndCustomActions.ts create mode 100644 app/components/UI/SRPList/SRPList.styles.ts create mode 100644 app/components/UI/SRPList/SRPList.test.tsx create mode 100644 app/components/UI/SRPList/SRPList.tsx create mode 100644 app/components/UI/SRPList/SRPList.types.ts create mode 100644 app/components/UI/SRPList/index.tsx create mode 100644 app/components/UI/SRPListItem/SRPListItem.styles.ts create mode 100644 app/components/UI/SRPListItem/SRPListItem.test.tsx create mode 100644 app/components/UI/SRPListItem/SRPListItem.tsx create mode 100644 app/components/UI/SRPListItem/SRPListItem.type.ts create mode 100644 app/components/UI/SRPListItem/index.tsx create mode 100644 app/components/UI/SolanaNewFeatureContent/FeatureItem.styles.ts create mode 100644 app/components/UI/SolanaNewFeatureContent/FeatureItem.tsx create mode 100644 app/components/UI/SolanaNewFeatureContent/SolanaNewFeatureContent.styles.ts create mode 100644 app/components/UI/SolanaNewFeatureContent/SolanaNewFeatureContent.test.tsx create mode 100644 app/components/UI/SolanaNewFeatureContent/SolanaNewFeatureContent.tsx create mode 100644 app/components/UI/SolanaNewFeatureContent/index.ts delete mode 100644 app/components/UI/Stake/Views/StakeInputView/StakeInputView.types.ts delete mode 100644 app/components/UI/Stake/Views/StakeInputView/utils.test.ts delete mode 100644 app/components/UI/Stake/Views/StakeInputView/utils.ts delete mode 100644 app/components/UI/Stake/Views/UnstakeInputView/UnstakeInputView.types.ts delete mode 100644 app/components/UI/Stake/components/CurrencySwitch.tsx delete mode 100644 app/components/UI/Stake/components/InputDisplay.tsx delete mode 100644 app/components/UI/Stake/hooks/useEarnTokenDetails.ts delete mode 100644 app/components/UI/Stake/hooks/useInputHandler.ts delete mode 100644 app/components/UI/Stake/hooks/useStakingInput.ts delete mode 100644 app/components/UI/Stake/hooks/useUnstakingInput.ts create mode 100644 app/components/UI/Swaps/useStablecoinsDefaultSlippage.test.tsx create mode 100644 app/components/UI/Swaps/useStablecoinsDefaultSlippage.ts create mode 100644 app/components/UI/Tokens/TokenList/TokenListItem/CustomNetworkNativeImgMapping.ts create mode 100644 app/components/Views/ActivityView/__snapshots__/index.test.tsx.snap create mode 100644 app/components/Views/ActivityView/index.test.tsx create mode 100644 app/components/Views/AddNewHdAccount/AddNewHdAccount.styles.ts create mode 100644 app/components/Views/AddNewHdAccount/AddNewHdAccount.test.tsx create mode 100644 app/components/Views/AddNewHdAccount/AddNewHdAccount.tsx create mode 100644 app/components/Views/AddNewHdAccount/AddNewHdAccount.types.ts create mode 100644 app/components/Views/AddNewHdAccount/index.tsx create mode 100644 app/components/Views/ImportNewSecretRecoveryPhrase/validation.ts create mode 100644 app/components/Views/Login/constants.ts delete mode 100644 app/components/Views/Login/index.js create mode 100644 app/components/Views/Login/index.tsx create mode 100644 app/components/Views/Login/styles.ts create mode 100644 app/components/Views/NetworkSelector/useSwitchNetworks.ts delete mode 100644 app/components/Views/Notifications/OptIn/__snapshots__/index.test.tsx.snap delete mode 100644 app/components/Views/Notifications/constants.ts create mode 100644 app/components/Views/Quiz/SRPQuiz/SRPQuiz.test.tsx create mode 100644 app/components/Views/SelectSRP/SelectSRP.test.tsx create mode 100644 app/components/Views/SelectSRP/SelectSRP.tsx create mode 100644 app/components/Views/SelectSRP/SelectSRPBottomSheet.tsx create mode 100644 app/components/Views/SelectSRP/index.tsx create mode 100644 app/components/Views/SelectSRP/styles.ts create mode 100644 app/components/Views/Settings/SecuritySettings/Sections/ProtectYourWallet/ProtectYourWallet.test.tsx create mode 100644 app/components/Views/confirmations/constants/alerts.ts create mode 100644 app/components/Views/confirmations/hooks/useConfirmationAlertMetrics.test.ts create mode 100644 app/components/Views/confirmations/hooks/useConfirmationAlertMetrics.ts rename app/components/Views/confirmations/{ => legacy}/Approval/__snapshots__/index.test.tsx.snap (98%) rename app/components/Views/confirmations/{ => legacy}/Approval/components/TransactionEditor/__snapshots__/index.test.tsx.snap (100%) rename app/components/Views/confirmations/{ => legacy}/Approval/components/TransactionEditor/index.js (95%) rename app/components/Views/confirmations/{ => legacy}/Approval/components/TransactionEditor/index.test.tsx (89%) rename app/components/Views/confirmations/{ => legacy}/Approval/index.js (90%) rename app/components/Views/confirmations/{ => legacy}/Approval/index.test.tsx (84%) rename app/components/Views/confirmations/{ApproveView => legacy}/Approve/__snapshots__/index.test.tsx.snap (98%) rename app/components/Views/confirmations/{ApproveView => legacy}/Approve/index.js (98%) rename app/components/Views/confirmations/{ApproveView => legacy}/Approve/index.test.tsx (100%) rename app/components/Views/confirmations/{ApproveView => legacy}/Approve/styles.ts (100%) create mode 100644 app/components/Views/confirmations/legacy/ApproveView/Approve/__snapshots__/index.test.tsx.snap create mode 100644 app/components/Views/confirmations/legacy/ApproveView/Approve/index.js create mode 100644 app/components/Views/confirmations/legacy/ApproveView/Approve/index.test.tsx create mode 100644 app/components/Views/confirmations/legacy/ApproveView/Approve/styles.ts rename app/components/Views/confirmations/{ => legacy}/Send/__snapshots__/index.test.tsx.snap (95%) rename app/components/Views/confirmations/{ => legacy}/Send/index.js (92%) rename app/components/Views/confirmations/{ => legacy}/Send/index.test.tsx (91%) rename app/components/Views/confirmations/{ => legacy}/SendFlow/AddressElement/AddressElement.styles.ts (94%) rename app/components/Views/confirmations/{ => legacy}/SendFlow/AddressElement/AddressElement.test.tsx (82%) rename app/components/Views/confirmations/{ => legacy}/SendFlow/AddressElement/AddressElement.tsx (85%) rename app/components/Views/confirmations/{ => legacy}/SendFlow/AddressElement/AddressElement.types.ts (100%) rename app/components/Views/confirmations/{ => legacy}/SendFlow/AddressElement/__snapshots__/AddressElement.test.tsx.snap (99%) rename app/components/Views/confirmations/{ => legacy}/SendFlow/AddressElement/index.tsx (100%) rename app/components/Views/confirmations/{ => legacy}/SendFlow/AddressFrom/AddressFrom.test.tsx (91%) rename app/components/Views/confirmations/{ => legacy}/SendFlow/AddressFrom/AddressFrom.tsx (85%) rename app/components/Views/confirmations/{ => legacy}/SendFlow/AddressFrom/AddressFrom.types.ts (100%) rename app/components/Views/confirmations/{ => legacy}/SendFlow/AddressFrom/__snapshots__/AddressFrom.test.tsx.snap (97%) rename app/components/Views/confirmations/{ => legacy}/SendFlow/AddressFrom/index.ts (100%) rename app/components/Views/confirmations/{ => legacy}/SendFlow/AddressList/AddressList.jsx (91%) rename app/components/Views/confirmations/{ => legacy}/SendFlow/AddressList/AddressList.styles.ts (92%) rename app/components/Views/confirmations/{ => legacy}/SendFlow/AddressList/AddressList.test.tsx (82%) rename app/components/Views/confirmations/{ => legacy}/SendFlow/AddressList/AddressList.types.ts (100%) rename app/components/Views/confirmations/{ => legacy}/SendFlow/AddressList/__snapshots__/AddressList.test.tsx.snap (97%) rename app/components/Views/confirmations/{ => legacy}/SendFlow/AddressList/index.js (100%) rename app/components/Views/confirmations/{ => legacy}/SendFlow/AddressTo/AddressTo.test.tsx (94%) rename app/components/Views/confirmations/{ => legacy}/SendFlow/AddressTo/AddressTo.tsx (84%) rename app/components/Views/confirmations/{ => legacy}/SendFlow/AddressTo/AddressTo.types.ts (100%) rename app/components/Views/confirmations/{ => legacy}/SendFlow/AddressTo/__snapshots__/AddressTo.test.tsx.snap (88%) rename app/components/Views/confirmations/{ => legacy}/SendFlow/AddressTo/index.ts (100%) rename app/components/Views/confirmations/{ => legacy}/SendFlow/Amount/__snapshots__/index.test.tsx.snap (95%) rename app/components/Views/confirmations/{ => legacy}/SendFlow/Amount/index.js (94%) rename app/components/Views/confirmations/{ => legacy}/SendFlow/Amount/index.test.tsx (97%) rename app/components/Views/confirmations/{ => legacy}/SendFlow/Confirm/__snapshots__/index.test.tsx.snap (95%) rename app/components/Views/confirmations/{ => legacy}/SendFlow/Confirm/components/CustomGasModal/CustomGasModal.jsx (95%) rename app/components/Views/confirmations/{ => legacy}/SendFlow/Confirm/components/CustomGasModal/CustomGasModal.styles.ts (100%) rename app/components/Views/confirmations/{ => legacy}/SendFlow/Confirm/components/CustomGasModal/CustomGasModal.test.tsx (95%) rename app/components/Views/confirmations/{ => legacy}/SendFlow/Confirm/components/CustomGasModal/CustomGasModal.types.ts (100%) rename app/components/Views/confirmations/{ => legacy}/SendFlow/Confirm/components/CustomGasModal/__snapshots__/CustomGasModal.test.tsx.snap (93%) rename app/components/Views/confirmations/{ => legacy}/SendFlow/Confirm/components/CustomGasModal/index.js (100%) rename app/components/Views/confirmations/{ => legacy}/SendFlow/Confirm/index.js (92%) rename app/components/Views/confirmations/{ => legacy}/SendFlow/Confirm/index.test.tsx (79%) rename app/components/Views/confirmations/{ => legacy}/SendFlow/Confirm/styles.ts (98%) rename app/components/Views/confirmations/{ => legacy}/SendFlow/Confirm/utils.test.ts (74%) rename app/components/Views/confirmations/{ => legacy}/SendFlow/Confirm/utils.ts (81%) rename app/components/Views/confirmations/{ => legacy}/SendFlow/Confirm/validation.test.ts (89%) rename app/components/Views/confirmations/{ => legacy}/SendFlow/Confirm/validation.ts (89%) rename app/components/Views/confirmations/{ => legacy}/SendFlow/ErrorMessage/__snapshots__/index.test.tsx.snap (87%) rename app/components/Views/confirmations/{ => legacy}/SendFlow/ErrorMessage/index.js (85%) rename app/components/Views/confirmations/{ => legacy}/SendFlow/ErrorMessage/index.test.tsx (100%) rename app/components/Views/confirmations/{ => legacy}/SendFlow/SendTo/__snapshots__/index.test.tsx.snap (89%) rename app/components/Views/confirmations/{ => legacy}/SendFlow/SendTo/index.js (92%) rename app/components/Views/confirmations/{ => legacy}/SendFlow/SendTo/index.test.tsx (86%) rename app/components/Views/confirmations/{ => legacy}/SendFlow/SendTo/styles.ts (97%) rename app/components/Views/confirmations/{ => legacy}/SendFlow/WarningMessage/index.tsx (88%) rename app/components/Views/confirmations/{ => legacy}/SendFlow/components/CustomNonceModal/__snapshots__/index.test.tsx.snap (94%) rename app/components/Views/confirmations/{ => legacy}/SendFlow/components/CustomNonceModal/index.js (94%) rename app/components/Views/confirmations/{ => legacy}/SendFlow/components/CustomNonceModal/index.test.tsx (100%) rename app/components/Views/confirmations/{ => legacy}/components/Approval/ApprovalFlowLoader/__snapshots__/index.test.tsx.snap (92%) rename app/components/Views/confirmations/{ => legacy}/components/Approval/ApprovalFlowLoader/index.js (83%) rename app/components/Views/confirmations/{ => legacy}/components/Approval/ApprovalFlowLoader/index.test.tsx (75%) rename app/components/Views/confirmations/{ => legacy}/components/Approval/TemplateConfirmation/TemplateConfirmation.styles.ts (86%) rename app/components/Views/confirmations/{ => legacy}/components/Approval/TemplateConfirmation/TemplateConfirmation.test.tsx (95%) rename app/components/Views/confirmations/{ => legacy}/components/Approval/TemplateConfirmation/TemplateConfirmation.tsx (86%) rename app/components/Views/confirmations/{ => legacy}/components/Approval/TemplateConfirmation/Templates/ApprovalResult.test.tsx (92%) rename app/components/Views/confirmations/{ => legacy}/components/Approval/TemplateConfirmation/Templates/ApprovalResult.ts (93%) rename app/components/Views/confirmations/{ => legacy}/components/Approval/TemplateConfirmation/Templates/SmartTransactionStatus.ts (100%) rename app/components/Views/confirmations/{ => legacy}/components/Approval/TemplateConfirmation/Templates/__snapshots__/ApprovalResult.test.tsx.snap (83%) rename app/components/Views/confirmations/{ => legacy}/components/Approval/TemplateConfirmation/Templates/index.ts (90%) rename app/components/Views/confirmations/{ => legacy}/components/Approval/TemplateConfirmation/__snapshots__/TemplateConfirmation.test.tsx.snap (84%) rename app/components/Views/confirmations/{ => legacy}/components/Approval/TemplateConfirmation/util.test.ts (100%) rename app/components/Views/confirmations/{ => legacy}/components/Approval/TemplateConfirmation/util.ts (97%) rename app/components/Views/confirmations/{ => legacy}/components/ApproveTransactionHeader/ApproveTransactionHeader.constants.ts (71%) rename app/components/Views/confirmations/{ => legacy}/components/ApproveTransactionHeader/ApproveTransactionHeader.styles.ts (86%) rename app/components/Views/confirmations/{ => legacy}/components/ApproveTransactionHeader/ApproveTransactionHeader.test.tsx (89%) rename app/components/Views/confirmations/{ => legacy}/components/ApproveTransactionHeader/ApproveTransactionHeader.tsx (75%) rename app/components/Views/confirmations/{ => legacy}/components/ApproveTransactionHeader/ApproveTransactionHeader.types.ts (100%) rename app/components/Views/confirmations/{ => legacy}/components/ApproveTransactionHeader/__snapshots__/ApproveTransactionHeader.test.tsx.snap (93%) rename app/components/Views/confirmations/{ => legacy}/components/ApproveTransactionHeader/index.ts (100%) rename app/components/Views/confirmations/{ => legacy}/components/ApproveTransactionReview/AddNickNameHeader/index.tsx (88%) rename app/components/Views/confirmations/{ => legacy}/components/ApproveTransactionReview/AddNickname/index.tsx (86%) rename app/components/Views/confirmations/{ => legacy}/components/ApproveTransactionReview/AddNickname/styles.ts (96%) rename app/components/Views/confirmations/{ => legacy}/components/ApproveTransactionReview/AddNickname/types.ts (100%) rename app/components/Views/confirmations/{ => legacy}/components/ApproveTransactionReview/EditPermission/index.tsx (94%) rename app/components/Views/confirmations/{ => legacy}/components/ApproveTransactionReview/ShowBlockExplorer/index.tsx (90%) rename app/components/Views/confirmations/{ => legacy}/components/ApproveTransactionReview/VerifyContractDetails/VerifyContractDetails.styles.ts (100%) rename app/components/Views/confirmations/{ => legacy}/components/ApproveTransactionReview/VerifyContractDetails/VerifyContractDetails.test.tsx (90%) rename app/components/Views/confirmations/{ => legacy}/components/ApproveTransactionReview/VerifyContractDetails/VerifyContractDetails.tsx (85%) rename app/components/Views/confirmations/{ => legacy}/components/ApproveTransactionReview/VerifyContractDetails/VerifyContractDetails.types.ts (100%) rename app/components/Views/confirmations/{ => legacy}/components/ApproveTransactionReview/VerifyContractDetails/index.ts (100%) rename app/components/Views/confirmations/{ => legacy}/components/ApproveTransactionReview/__snapshots__/index.test.jsx.snap (96%) rename app/components/Views/confirmations/{ => legacy}/components/ApproveTransactionReview/index.js (92%) rename app/components/Views/confirmations/{ => legacy}/components/ApproveTransactionReview/index.test.jsx (89%) rename app/components/Views/confirmations/{ => legacy}/components/ApproveTransactionReview/styles.ts (97%) rename app/components/Views/confirmations/{ => legacy}/components/BlockaidBanner/BlockaidBanner.constants.ts (100%) rename app/components/Views/confirmations/{ => legacy}/components/BlockaidBanner/BlockaidBanner.styles.ts (96%) rename app/components/Views/confirmations/{ => legacy}/components/BlockaidBanner/BlockaidBanner.test.tsx (92%) rename app/components/Views/confirmations/{ => legacy}/components/BlockaidBanner/BlockaidBanner.tsx (83%) rename app/components/Views/confirmations/{ => legacy}/components/BlockaidBanner/BlockaidBanner.types.ts (87%) rename app/components/Views/confirmations/{ => legacy}/components/BlockaidBanner/BlockaidBannerLink.tsx (78%) rename app/components/Views/confirmations/{ => legacy}/components/BlockaidBanner/__snapshots__/BlockaidBanner.test.tsx.snap (85%) rename app/components/Views/confirmations/{ => legacy}/components/CustomNonce/__snapshots__/index.test.tsx.snap (80%) rename app/components/Views/confirmations/{ => legacy}/components/CustomNonce/index.js (88%) rename app/components/Views/confirmations/{ => legacy}/components/CustomNonce/index.test.tsx (100%) rename app/components/Views/confirmations/{ => legacy}/components/EditGasFee1559Update/index.jsx (95%) rename app/components/Views/confirmations/{ => legacy}/components/EditGasFee1559Update/styles.ts (97%) rename app/components/Views/confirmations/{ => legacy}/components/EditGasFee1559Update/types.ts (97%) rename app/components/Views/confirmations/{ => legacy}/components/EditGasFeeLegacyUpdate/EditGasFeeLegacyUpdate.test.tsx (92%) rename app/components/Views/confirmations/{ => legacy}/components/EditGasFeeLegacyUpdate/__snapshots__/EditGasFeeLegacyUpdate.test.tsx.snap (91%) rename app/components/Views/confirmations/{ => legacy}/components/EditGasFeeLegacyUpdate/index.jsx (92%) rename app/components/Views/confirmations/{ => legacy}/components/EditGasFeeLegacyUpdate/styles.ts (97%) rename app/components/Views/confirmations/{ => legacy}/components/EditGasFeeLegacyUpdate/types.ts (100%) rename app/components/Views/confirmations/{ => legacy}/components/PersonalSign/PersonalSign.tsx (85%) rename app/components/Views/confirmations/{ => legacy}/components/PersonalSign/__snapshots__/index.test.tsx.snap (100%) rename app/components/Views/confirmations/{ => legacy}/components/PersonalSign/index.test.tsx (91%) rename app/components/Views/confirmations/{ => legacy}/components/PersonalSign/index.ts (100%) rename app/components/Views/confirmations/{ => legacy}/components/PersonalSign/styles.ts (88%) rename app/components/Views/confirmations/{ => legacy}/components/PersonalSign/types.ts (100%) rename app/components/Views/confirmations/{ => legacy}/components/SignatureRequest/ExpandedMessage/__snapshots__/index.test.tsx.snap (90%) rename app/components/Views/confirmations/{ => legacy}/components/SignatureRequest/ExpandedMessage/index.js (89%) rename app/components/Views/confirmations/{ => legacy}/components/SignatureRequest/ExpandedMessage/index.test.tsx (100%) rename app/components/Views/confirmations/{ => legacy}/components/SignatureRequest/Root/Root.test.tsx (91%) rename app/components/Views/confirmations/{ => legacy}/components/SignatureRequest/Root/Root.tsx (89%) rename app/components/Views/confirmations/{ => legacy}/components/SignatureRequest/Root/__snapshots__/Root.test.tsx.snap (55%) rename app/components/Views/confirmations/{ => legacy}/components/SignatureRequest/Root/index.ts (100%) rename app/components/Views/confirmations/{ => legacy}/components/SignatureRequest/__snapshots__/index.test.tsx.snap (100%) rename app/components/Views/confirmations/{ => legacy}/components/SignatureRequest/index.js (90%) rename app/components/Views/confirmations/{ => legacy}/components/SignatureRequest/index.test.tsx (88%) rename app/components/Views/confirmations/{ => legacy}/components/SignatureRequest/types.ts (100%) rename app/components/Views/confirmations/{ => legacy}/components/SmartTransactionsMigrationBanner/SmartTransactionsMigrationBanner.styles.ts (88%) rename app/components/Views/confirmations/{ => legacy}/components/SmartTransactionsMigrationBanner/SmartTransactionsMigrationBanner.test.tsx (90%) rename app/components/Views/confirmations/{ => legacy}/components/SmartTransactionsMigrationBanner/SmartTransactionsMigrationBanner.tsx (74%) rename app/components/Views/confirmations/{ => legacy}/components/SmartTransactionsMigrationBanner/SmartTransactionsMigrationBanner.types.ts (100%) rename app/components/Views/confirmations/{ => legacy}/components/TransactionBlockaidBanner/TransactionBlockaidBanner.test.tsx (82%) rename app/components/Views/confirmations/{ => legacy}/components/TransactionBlockaidBanner/TransactionBlockaidBanner.tsx (93%) rename app/components/Views/confirmations/{ => legacy}/components/TransactionBlockaidBanner/TransactionBlockaidBanner.types.ts (100%) rename app/components/Views/confirmations/{ => legacy}/components/TransactionBlockaidBanner/__snapshots__/TransactionBlockaidBanner.test.tsx.snap (84%) rename app/components/Views/confirmations/{ => legacy}/components/TransactionReview/TransactionReviewData/__snapshots__/index.test.tsx.snap (100%) rename app/components/Views/confirmations/{ => legacy}/components/TransactionReview/TransactionReviewData/index.js (90%) rename app/components/Views/confirmations/{ => legacy}/components/TransactionReview/TransactionReviewData/index.test.tsx (90%) rename app/components/Views/confirmations/{ => legacy}/components/TransactionReview/TransactionReviewDetailsCard/__snapshots__/index.test.js.snap (100%) rename app/components/Views/confirmations/{ => legacy}/components/TransactionReview/TransactionReviewDetailsCard/index.js (92%) rename app/components/Views/confirmations/{ => legacy}/components/TransactionReview/TransactionReviewDetailsCard/index.test.js (87%) rename app/components/Views/confirmations/{ => legacy}/components/TransactionReview/TransactionReviewEIP1559/__snapshots__/index.test.tsx.snap (96%) rename app/components/Views/confirmations/{ => legacy}/components/TransactionReview/TransactionReviewEIP1559/index.js (95%) rename app/components/Views/confirmations/{ => legacy}/components/TransactionReview/TransactionReviewEIP1559/index.test.tsx (69%) rename app/components/Views/confirmations/{ => legacy}/components/TransactionReview/TransactionReviewEIP1559Update/__snapshots__/index.test.jsx.snap (95%) rename app/components/Views/confirmations/{ => legacy}/components/TransactionReview/TransactionReviewEIP1559Update/index.jsx (94%) rename app/components/Views/confirmations/{ => legacy}/components/TransactionReview/TransactionReviewEIP1559Update/index.test.jsx (91%) rename app/components/Views/confirmations/{ => legacy}/components/TransactionReview/TransactionReviewEIP1559Update/skeletonComponent.tsx (91%) rename app/components/Views/confirmations/{ => legacy}/components/TransactionReview/TransactionReviewEIP1559Update/styles.js (100%) rename app/components/Views/confirmations/{ => legacy}/components/TransactionReview/TransactionReviewEIP1559Update/types.ts (100%) rename app/components/Views/confirmations/{ => legacy}/components/TransactionReview/TransactionReviewInformation/__snapshots__/index.test.tsx.snap (100%) rename app/components/Views/confirmations/{ => legacy}/components/TransactionReview/TransactionReviewInformation/index.js (94%) rename app/components/Views/confirmations/{ => legacy}/components/TransactionReview/TransactionReviewInformation/index.test.tsx (92%) rename app/components/Views/confirmations/{ => legacy}/components/TransactionReview/TransactionReviewSummary/__snapshots__/index.test.tsx.snap (100%) rename app/components/Views/confirmations/{ => legacy}/components/TransactionReview/TransactionReviewSummary/index.js (93%) rename app/components/Views/confirmations/{ => legacy}/components/TransactionReview/TransactionReviewSummary/index.test.tsx (90%) rename app/components/Views/confirmations/{ => legacy}/components/TransactionReview/__snapshots__/index.test.jsx.snap (95%) rename app/components/Views/confirmations/{ => legacy}/components/TransactionReview/index.js (91%) rename app/components/Views/confirmations/{ => legacy}/components/TransactionReview/index.test.jsx (88%) rename app/components/Views/confirmations/{ => legacy}/components/TypedSign/__snapshots__/index.test.tsx.snap (96%) rename app/components/Views/confirmations/{ => legacy}/components/TypedSign/index.js (88%) rename app/components/Views/confirmations/{ => legacy}/components/TypedSign/index.test.tsx (92%) rename app/components/Views/confirmations/{ => legacy}/components/UpdateEIP1559Tx/index.jsx (92%) rename app/components/Views/confirmations/{ => legacy}/components/UpdateEIP1559Tx/types.ts (100%) rename app/components/Views/confirmations/{ => legacy}/components/WatchAssetRequest/__snapshots__/index.test.tsx.snap (100%) rename app/components/Views/confirmations/{ => legacy}/components/WatchAssetRequest/index.js (80%) rename app/components/Views/confirmations/{ => legacy}/components/WatchAssetRequest/index.test.tsx (89%) delete mode 100644 app/components/hooks/useAccounts/utils.ts delete mode 100644 app/components/hooks/useMultichainBalances/useMultichainBalances.ts create mode 100644 app/components/hooks/useMultichainBalances/useMultichainBalancesForAllAccounts.test.ts create mode 100644 app/components/hooks/useMultichainBalances/useMultichainBalancesForAllAccounts.ts rename app/components/hooks/useMultichainBalances/{useMultichainBalances.test.ts => useSelectedAccountMultichainBalances.test.ts} (53%) create mode 100644 app/components/hooks/useMultichainBalances/useSelectedAccountMultichainBalances.ts create mode 100644 app/components/hooks/useMultichainBalances/utils.ts create mode 100644 app/components/hooks/useNftDetectionChainIds.test.ts create mode 100644 app/components/hooks/useNftDetectionChainIds.ts create mode 100644 app/core/Analytics/helpers/SnapKeyring/trackSnapAccountEvent.test.ts create mode 100644 app/core/Analytics/helpers/SnapKeyring/trackSnapAccountEvent.ts create mode 100644 app/core/Engine/controllers/gas-fee-controller/gas-fee-controller-init.test.ts create mode 100644 app/core/Engine/controllers/gas-fee-controller/gas-fee-controller-init.ts create mode 100644 app/core/Engine/controllers/gas-fee-controller/index.ts create mode 100644 app/core/Engine/messengers/gas-fee-controller-messenger/gas-fee-controller-messenger.ts create mode 100644 app/core/Engine/messengers/gas-fee-controller-messenger/index.ts create mode 100644 app/core/Permissions/index.test.ts create mode 100644 app/core/SnapKeyring/utils/snaps.test.ts create mode 100644 app/core/WalletConnect/wc-utils.test.ts delete mode 100644 app/fonts/EuclidCircularB-Bold.otf delete mode 100644 app/fonts/EuclidCircularB-BoldItalic.otf delete mode 100644 app/fonts/EuclidCircularB-Light.otf delete mode 100644 app/fonts/EuclidCircularB-LightItalic.otf delete mode 100644 app/fonts/EuclidCircularB-Medium.otf delete mode 100644 app/fonts/EuclidCircularB-MediumItalic.otf delete mode 100644 app/fonts/EuclidCircularB-Regular.otf delete mode 100644 app/fonts/EuclidCircularB-RegularItalic.otf delete mode 100644 app/fonts/EuclidCircularB-Semibold.otf delete mode 100644 app/fonts/EuclidCircularB-SemiboldItalic.otf create mode 100755 app/fonts/MMPoly-Regular.otf create mode 100755 app/fonts/MMSans-Bold.otf create mode 100755 app/fonts/MMSans-Medium.otf delete mode 100755 app/fonts/Roboto-Black.ttf delete mode 100755 app/fonts/Roboto-BlackItalic.ttf delete mode 100755 app/fonts/Roboto-Bold.ttf delete mode 100755 app/fonts/Roboto-BoldItalic.ttf delete mode 100755 app/fonts/Roboto-Italic.ttf delete mode 100755 app/fonts/Roboto-Light.ttf delete mode 100755 app/fonts/Roboto-LightItalic.ttf delete mode 100755 app/fonts/Roboto-Medium.ttf delete mode 100755 app/fonts/Roboto-MediumItalic.ttf delete mode 100755 app/fonts/Roboto-Regular.ttf delete mode 100755 app/fonts/Roboto-Thin.ttf delete mode 100755 app/fonts/Roboto-ThinItalic.ttf create mode 100644 app/images/banners/banner_image_multisrp.png create mode 100644 app/images/megaeth-testnet-logo.png create mode 100644 app/images/solana-logo-transparent.svg create mode 100644 app/images/soneium.png create mode 100644 app/images/xrp-logo.png create mode 100644 app/images/xrplevm.png delete mode 100644 app/reducers/onboarding/index.js create mode 100644 app/reducers/onboarding/index.test.ts create mode 100644 app/reducers/onboarding/index.ts create mode 100644 app/selectors/featureFlagController/env.test.ts create mode 100644 app/selectors/featureFlagController/env.ts create mode 100644 app/selectors/featureFlagController/productSafetyDappScanning/index.test.ts create mode 100644 app/selectors/featureFlagController/productSafetyDappScanning/index.ts create mode 100644 app/selectors/featureFlagController/productSafetyDappScanning/types.ts create mode 100644 app/selectors/onboarding/index.test.ts create mode 100644 app/selectors/onboarding/index.ts delete mode 100644 app/selectors/wizard/index.test.ts delete mode 100644 app/selectors/wizard/index.ts create mode 100644 app/store/migrations/071.test.ts create mode 100644 app/store/migrations/071.ts create mode 100644 app/store/migrations/072.test.ts create mode 100644 app/store/migrations/072.ts create mode 100644 app/util/identity/hooks/useAccountSyncing/index.ts create mode 100644 app/util/identity/hooks/useAccountSyncing/useAccountSyncing.test.tsx create mode 100644 app/util/identity/hooks/useAccountSyncing/useAccountSyncing.ts create mode 100644 app/util/phishingDetection.test.ts create mode 100644 app/util/phishingDetection.ts create mode 100644 docs/readme/api-logging.md create mode 100644 e2e/api-mocking/api-monitor.js create mode 100644 e2e/pages/Notifications/EnableNotificationsModal.js create mode 100644 e2e/pages/Notifications/NotificationDetailsView.js create mode 100644 e2e/pages/Notifications/NotificationMenuView.js create mode 100644 e2e/pages/Notifications/NotificationSettingsView.js create mode 100644 e2e/pages/wallet/MultiSrp/AddAccountToSrp/AddNewHdAccountComponent.js create mode 100644 e2e/pages/wallet/MultiSrp/Common/SRPListComponent.js create mode 100644 e2e/pages/wallet/MultiSrp/Common/SRPListItemComponent.js create mode 100644 e2e/selectors/MultiSRP/AddHdAccount.selectors.js create mode 100644 e2e/selectors/MultiSRP/SRPList.selectors.js create mode 100644 e2e/selectors/MultiSRP/SRPListItem.selectors.js create mode 100644 e2e/selectors/Notifications/EnableNotificationModal.selectors.js create mode 100644 e2e/selectors/Notifications/NotificationDetailsView.selectors.js create mode 100644 e2e/selectors/Notifications/NotificationMenuView.selectors.js create mode 100644 e2e/selectors/Notifications/NotificationSettingsView.selectors.js create mode 100644 e2e/specs/identity/account-syncing/mock-data.js delete mode 100644 e2e/specs/identity/account-syncing/mockData.js create mode 100644 e2e/specs/identity/account-syncing/sync-with-account-balances.spec.js create mode 100644 e2e/specs/identity/utils/user-storage/generateEncryptedData.js create mode 100644 e2e/specs/notifications/enable-notifications-after-onboarding.spec.js create mode 100644 e2e/specs/notifications/notification-settings-flow.spec.js create mode 100644 e2e/specs/notifications/utils/mock-user-storage-data.js create mode 100644 e2e/specs/ramps/offramp-cashout.spec.js create mode 100644 e2e/specs/ramps/offramp-token-amount.spec.js rename patches/{@metamask+assets-controllers+51.0.2.patch => @metamask+assets-controllers+55.0.1.patch} (74%) delete mode 100644 patches/@metamask+network-controller+22.1.0.patch rename patches/{@metamask+preferences-controller+15.0.1.patch => @metamask+preferences-controller+17.0.0.patch} (88%) rename patches/{detox+20.27.5.patch => detox+20.33.0.patch} (100%) create mode 100644 scripts/start-api-logging-server.js diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 40aafbec3403..a786c2315631 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -1,12 +1,8 @@ # Lines starting with '#' are comments. # Each line is a file pattern followed by one or more owners. -* @MetaMask/mobile-devs - # Design System Team app/component-library/ @MetaMask/design-system-engineers -# Allows the design system and mobile platform team to review and approve all snapshot changes. This allows for system wide design token changes to color, typography, etc. -**/*.snap @MetaMask/design-system-engineers @MetaMask/mobile-platform # Platform Team .github/CODEOWNERS @MetaMask/mobile-platform @@ -34,6 +30,7 @@ app/core/Engine/index.ts @MetaMask/mobile-pla app/core/Engine/README.md @MetaMask/mobile-platform app/core/Engine/types.ts @MetaMask/mobile-platform app/core/Engine/controllers/remote-feature-flag-controller/ @MetaMask/mobile-platform +app/core/DeeplinkManager @MetaMask/mobile-platform # Platform & Snaps Code Fencing File metro.transform.js @MetaMask/mobile-platform @MetaMask/snaps-devs @@ -44,6 +41,7 @@ app/reducers/fiatOrders/ @MetaMask/ramp # Confirmation Team app/components/Views/confirmations @MetaMask/confirmations +app/core/Engine/controllers/gas-fee-controller @MetaMask/confirmations app/core/Engine/controllers/transaction-controller @MetaMask/confirmations app/core/Analytics/events/confirmations @MetaMask/confirmations ppom @MetaMask/confirmations @@ -54,7 +52,6 @@ app/components/Approvals/WalletConnectApproval @MetaMask/sdk-devs app/components/Views/SDK @MetaMask/sdk-devs app/components/Views/WalletConnectSessions @MetaMask/sdk-devs app/core/BackgroundBridge/WalletConnectPort.ts @MetaMask/sdk-devs -app/core/DeeplinkManager @MetaMask/sdk-devs app/core/RPCMethods/RPCMethodMiddleware.ts @MetaMask/sdk-devs app/core/SDKConnect @MetaMask/sdk-devs app/core/WalletConnect @MetaMask/sdk-devs @@ -166,3 +163,9 @@ app/reducers/settings @MetaMask/wallet-ux # Transactions Team app/components/Views/transactions @MetaMask/transactions + +# Snapshots – no code owners assigned +# This allows anyone with write access to approve changes to any *.snap files. +# ⚠️ Note: Leaving this rule unassigned disables Code Owner review enforcement for snapshot files. +# ⚠️ Important: This rule must remain at the bottom of the CODEOWNERS file to take precedence over more specific path-based rules. +**/*.snap diff --git a/.github/scripts/bitrise/bitrise-results-check.ts b/.github/scripts/bitrise/bitrise-results-check.ts index b781f77cc091..0fbe2a98951c 100644 --- a/.github/scripts/bitrise/bitrise-results-check.ts +++ b/.github/scripts/bitrise/bitrise-results-check.ts @@ -9,9 +9,6 @@ async function main(): Promise<void> { console.log(`Workflow triggered actor : ${process.env.GITHUB_ACTOR}`); console.log(`Workflow triggered by: ${context.eventName}`); - // Get the commit hash from the GitHub context - const recentCommits = await getRecentCommits(); - console.log(`Recent commits: ${recentCommits}`); // Determine the E2E run flags const flags = await determineE2ERunFlags(); @@ -39,6 +36,10 @@ async function main(): Promise<void> { // Consume the label await removeLabel("bitrise-result-ready"); + // Get the commit hash from the GitHub context + const recentCommits = await getRecentCommits(); + console.log(`Recent commits: ${recentCommits}`); + // If the E2E tests should run, check the Bitrise test status if (shouldRun) { diff --git a/.github/workflows/changelog-check.yml b/.github/workflows/changelog-check.yml new file mode 100644 index 000000000000..d6d13c7af4d0 --- /dev/null +++ b/.github/workflows/changelog-check.yml @@ -0,0 +1,18 @@ +name: ChangeLog Check + +on: + pull_request: + types: [opened, synchronize, labeled, unlabeled] + +jobs: + check-changelog: + uses: MetaMask/github-tools/.github/workflows/changelog-check.yml@fd5f71cd6cb3c64e4fab7db56ce6b53c75732f95 + with: + base-branch: ${{ github.event.pull_request.base.ref }} + head-ref: ${{ github.head_ref }} + labels: ${{ toJSON(github.event.pull_request.labels) }} + repo: ${{ github.repository }} + secrets: + gh-token: ${{ secrets.PR_TOKEN }} + + diff --git a/.github/workflows/crowdin-branch-cleanup.yml b/.github/workflows/crowdin-branch-cleanup.yml deleted file mode 100644 index c58b23bcf821..000000000000 --- a/.github/workflows/crowdin-branch-cleanup.yml +++ /dev/null @@ -1,78 +0,0 @@ -name: Crowdin - Branch and Label Cleanup for merged localization PR -# This action should delete the branch from Crowdin after the localization PR is -# merged to the original branch. It should also remove the "ready-for-translation" label - -# TODO: Add trigger for merge of localization PR. -on: workflow_dispatch - -jobs: - prestep: - runs-on: ubuntu-latest - outputs: - branch: ${{ steps.extract_current_branch.outputs.branch }} - pr: ${{ steps.get-prs.outputs.pr }} - modified_branch_name: ${{ steps.extract_modified_branch_name.outputs.modified_branch_name }} - steps: - - name: Extract current branch name - shell: bash - run: | - echo "running on branch ${GITHUB_REF##*/}" - echo "other version: ${GITHUB_HEAD_REF:-${GITHUB_REF#refs/heads/}}" - echo "branch=${GITHUB_HEAD_REF:-${GITHUB_REF#refs/heads/}}" >> "$GITHUB_OUTPUT" - id: extract_current_branch - - - name: Get PR with Label for this branch - id: get-prs - run: | - LABEL="ready-for-translation" - API_URL="https://api.github.com/repos/Metamask/crowdin-sandbox/pulls?head:${{steps.extract_current_branch.outputs.branch}}&state=open&per_page=100" - # Fetch the list of open pull requests with the specified label using curl - PRS=$(curl -sS --header "Authorization: Bearer $GITHUB_TOKEN" "$API_URL") - PR=$(echo "$PRS" | jq -r '.[] | select(.labels[].name == "'"$LABEL"'") | .number | @json') - echo "Found PR: $PR" - echo "pr=$PR" >> "$GITHUB_OUTPUT" - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - CURRENT_BRANCH: ${{ steps.extract_current_branch.outputs.branch }} - - - name: Modified branch name - run: echo "modified_branch_name="${{ steps.extract_current_branch.outputs.branch }} | sed 's#/#-#g'"" >> "$GITHUB_OUTPUT" - id: extract_modified_branch_name - - github_cleanup: - runs-on: ubuntu-latest - needs: prestep - steps: - - name: Remove label from PR - uses: actions/github-script@v7 - if: needs.prestep.outputs.pr != null || needs.prestep.outputs.pr != '' - with: - github-token: ${{ secrets.GITHUB_TOKEN }} - script: | - const label = "ready-for-translation"; - await github.issues.removeLabel({ - owner: context.repo.owner, - repo: context.repo.repo, - issue_number: ${{ needs.prestep.outputs.pr }}, - name: label - }); - - crowdin_cleanup: - runs-on: ubuntu-latest - needs: prestep - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - CROWDIN_PERSONAL_TOKEN: ${{ secrets.CROWDIN_PERSONAL_TOKEN }} - CROWDIN_PROJECT_ID: ${{ secrets.CROWDIN_PROJECT_ID }} - steps: - - name: Checkout - uses: actions/checkout@v4 - with: - ref: ${{ needs.prestep.outputs.branch }} - - - name: Delete branch within Crowdin - if: needs.prestep.outputs.branch != 'main' - uses: crowdin/github-action@c953b17499daa6be3e5afbf7a63616fb02d8b18d - with: - command: ${{ needs.prestep.outputs.modified_branch_name }} - command_args: -v diff --git a/.github/workflows/crowdin-branch-pr-ready-for-translation.yml b/.github/workflows/crowdin-branch-pr-ready-for-translation.yml deleted file mode 100644 index b703f91edff3..000000000000 --- a/.github/workflows/crowdin-branch-pr-ready-for-translation.yml +++ /dev/null @@ -1,54 +0,0 @@ -name: Crowdin - Ready for translations label added, push to crowdin - -# When an individual is working on a feature which requires translations, they can -# add a label "ready-for-translation" which will trigger this action to push the -# source and translation files to Crowdin. We will always push main as the base of -# the crowdin branch creation and then push in the changes over the top. This ensures -# that the translations which have already been done and approved previously do not -# show as needing to be translated again in the crowdin branch. - -# TODO: switch to trigger on label add once testing complete -on: workflow_dispatch - -jobs: - crowdin-upload: - runs-on: ubuntu-latest - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - CROWDIN_PROJECT_ID: ${{ secrets.CROWDIN_PROJECT_ID }} - CROWDIN_PERSONAL_TOKEN: ${{ secrets.CROWDIN_PERSONAL_TOKEN }} - - steps: - - name: Extract current branch name - shell: bash - run: echo "branch=${GITHUB_HEAD_REF:-${GITHUB_REF#refs/heads/}}" >> "$GITHUB_OUTPUT" - id: extract_current_branch - - - name: Modified branch name - run: echo "modified_branch_name="${{ steps.extract_current_branch.outputs.branch }} | sed 's#/#-#g'"" >> "$GITHUB_OUTPUT" - id: extract_modified_branch_name - - - name: Checkout - uses: actions/checkout@v3 - with: - ref: main - - - name: Crowdin push main as baseline - uses: crowdin/github-action@c953b17499daa6be3e5afbf7a63616fb02d8b18d - with: - crowdin_branch_name: ${{ steps.extract_modified_branch_name.outputs.modified_branch_name }} - upload_sources: true - upload_translations_args: --import-eq-suggestions --auto-approve-imported --verbose - upload_translations: true - - - name: Checkout Branch and push to crowdin - uses: actions/checkout@v3 - with: - ref: ${{ steps.extract_current_branch.outputs.branch }} - - name: Crowdin sources push - uses: crowdin/github-action@c953b17499daa6be3e5afbf7a63616fb02d8b18d - with: - crowdin_branch_name: ${{ steps.extract_modified_branch_name.outputs.modified_branch_name }} - upload_sources: true - upload_sources_args: --auto-update --verbose - upload_translations: false diff --git a/.github/workflows/crowdin-pull-branch-pr-completed-translations.yml b/.github/workflows/crowdin-pull-branch-pr-completed-translations.yml deleted file mode 100644 index 6b47c65da04b..000000000000 --- a/.github/workflows/crowdin-pull-branch-pr-completed-translations.yml +++ /dev/null @@ -1,64 +0,0 @@ -name: Crowdin - Find all branches with translations and trigger completion checks -# This workflow will run on a schedule. It will pull all pull requests with a label of -# ready-for-translation and create a matrix of the associated branches to run the -# crowdin-reusable-translation-download.yml workflow on. -# That workflow will check the status of the translations and if complete create a pull -# request with the translations off of the branch. - -permissions: - contents: write - pull-requests: write - -# TODO: Add a schedule to run this workflow twice a day(?) once the testing is complete -on: workflow_dispatch - -jobs: - run-check-and-download-for-branch: - needs: get-branches - if: ${{ needs.get-branches.outputs.matrix != '[]' && needs.get-branches.outputs.matrix != '' }} - strategy: - fail-fast: false - matrix: - branch: ${{fromJson(needs.get-branches.outputs.matrix)}} - uses: ./.github/workflows/crowdin-reusable-translation-download.yml - with: - branch: ${{ matrix.branch }} - secrets: - gh_token: ${{ secrets.GITHUB_TOKEN }} - crowdin_personal_token: ${{ secrets.CROWDIN_PERSONAL_TOKEN }} - crowdin_project_id: ${{ secrets.CROWDIN_PROJECT_ID }} - - get-branches: - runs-on: ubuntu-latest - outputs: - matrix: ${{ steps.matrix-outputs.outputs.matrix }} - steps: - - name: Checkout code - uses: actions/checkout@v3 - - - name: Get Branches with Label - id: get-branches - run: | - GITHUB_TOKEN="${{ secrets.GITHUB_TOKEN }}" - REPO="${{ github.repository }}" - - LABEL="ready-for-translation" - API_URL="https://api.github.com/repos/$REPO/pulls?state=open&per_page=100" - - # Fetch the list of open pull requests with the specified label using curl - PRS=$(curl -sS --header "Authorization: Bearer $GITHUB_TOKEN" "$API_URL") - - BRANCHES=$(echo "$PRS" | jq -r '[.[] | select(.labels[].name == "'"$LABEL"'") | .head.ref] | @json') - echo "Found branches: $BRANCHES" - echo "branches=$BRANCHES" >> "$GITHUB_OUTPUT" - - - name: Set up matrix - id: matrix-outputs - run: | - # Parse the branches output and create a matrix - BRANCHES="${{ toJson(steps.get-branches.outputs.branches) }}" - echo "Creating matrix from branches..." - MATRIX="${BRANCHES}" - echo "matrix=$MATRIX" >> "$GITHUB_OUTPUT" - - diff --git a/.github/workflows/crowdin-reusable-translation-download.yml b/.github/workflows/crowdin-reusable-translation-download.yml deleted file mode 100644 index c7562f8ad89e..000000000000 --- a/.github/workflows/crowdin-reusable-translation-download.yml +++ /dev/null @@ -1,68 +0,0 @@ -name: Crowdin - Check translation progress and download if complete (unless main) -# This is a reusable workflow that is called by crowdin-pull-branch-pr-completed-translations -# across all branches which have a label of "ready-for-translation" aka being translated. -# This workflow will check the translation progress and download the translations if -# they are 100% translated. If the branch that is running this is main it will skip completion -# check and just pull whatever translations are available. - - -permissions: - contents: write - pull-requests: write - -on: - workflow_call: - inputs: - branch: - required: true - type: string - secrets: - gh_token: - required: true - crowdin_project_id: - required: true - crowdin_personal_token: - required: true - -jobs: - crowdin: - runs-on: ubuntu-latest - env: - GITHUB_TOKEN: ${{ secrets.gh_token }} - CROWDIN_PERSONAL_TOKEN: ${{ secrets.crowdin_personal_token }} - CROWDIN_PROJECT_ID: ${{ secrets.crowdin_project_id }} - - steps: - - name: Checkout - uses: actions/checkout@v3 - with: - ref: ${{ inputs.branch }} - - - name: Modified branch name - run: echo "modified_branch_name="${{ inputs.branch }} | sed 's#/#-#g'"" >> "$GITHUB_OUTPUT" - id: extract_modified_branch_name - - - name: Check translation progress - # when main just pull whatever you have (aka skip this) - need to test - if: ${{ inputs.branch != 'main' }} - uses: crowdin/github-action@c953b17499daa6be3e5afbf7a63616fb02d8b18d - with: - command: 'status translation' - command_args: '-b ${{ steps.extract_modified_branch_name.outputs.modified_branch_name }} --fail-if-incomplete' - - - name: Synchronize with Crowdin - uses: crowdin/github-action@c953b17499daa6be3e5afbf7a63616fb02d8b18d - with: - crowdin_branch_name: ${{ steps.extract_modified_branch_name.outputs.modified_branch_name }} - upload_sources: true - upload_translations: true - download_translations: true - skip_untranslated_strings: true - export_only_approved: true - localization_branch_name: l10n_crowdin_translations_${{ inputs.branch }} - - create_pull_request: true - skip_ref_checkout: true - pull_request_title: New Crowdin translations for ${{ inputs.branch }} - pull_request_body: New Crowdin pull request with translations for ${{ inputs.branch }} - pull_request_base_branch_name: ${{ inputs.branch }} diff --git a/.github/workflows/crowdin-upload-both-sources-translations.yml b/.github/workflows/crowdin-upload-both-sources-translations.yml deleted file mode 100644 index 958344c7a557..000000000000 --- a/.github/workflows/crowdin-upload-both-sources-translations.yml +++ /dev/null @@ -1,31 +0,0 @@ -name: Crowdin - Upload Both Sources and Translations Crowdin Action -# This action is intended to ensure our main branch on crowdin is in sync with our -# main branch on github and will run on every push to main that has changes to any -# locales files. - -# TODO: Change to trigger on merge to main when locales files are changed (after testing) -# This should replace the current crowdin_action.yml file (after testing) -on: workflow_dispatch - -jobs: - crowdin-upload: - runs-on: ubuntu-latest - steps: - - name: Extract current branch name - shell: bash - run: echo "branch=${GITHUB_HEAD_REF:-${GITHUB_REF#refs/heads/}}" >> "$GITHUB_OUTPUT" - id: extract_current_branch - - name: Checkout - uses: actions/checkout@v3 - - - name: Crowdin push - uses: crowdin/github-action@c953b17499daa6be3e5afbf7a63616fb02d8b18d - with: - crowdin_branch_name: ${{ steps.extract_current_branch.outputs.branch }} - upload_sources: true - upload_translations: true - upload_translations_args: --import-eq-suggestions --auto-approve-imported --verbose - download_translations: false - env: - CROWDIN_PROJECT_ID: ${{ secrets.CROWDIN_PROJECT_ID }} - CROWDIN_PERSONAL_TOKEN: ${{ secrets.CROWDIN_PERSONAL_TOKEN }} diff --git a/.gitignore b/.gitignore index 7d13536c2673..453c91ee2d6e 100644 --- a/.gitignore +++ b/.gitignore @@ -137,3 +137,6 @@ web-build/ # CICD github-tools/ + +# API Monitor logs +api-monitor-logs/ diff --git a/.iyarc b/.iyarc index e69de29bb2d1..696cadaf6480 100644 --- a/.iyarc +++ b/.iyarc @@ -0,0 +1,2 @@ +# Advisory exclusions +GHSA-h9w6-f932-gq62 \ No newline at end of file diff --git a/.js.env.example b/.js.env.example index 3a581682419b..1d46e7fa1114 100644 --- a/.js.env.example +++ b/.js.env.example @@ -112,7 +112,6 @@ export MM_PERMISSIONS_SETTINGS_V1_ENABLED="" # Feature flag for Stablecoin Lending UI export MM_STABLECOIN_LENDING_UI_ENABLED="true" - # Activates remote feature flag override mode. # Remote feature flag values won't be updated, # and selectors should return their fallback values diff --git a/CHANGELOG.md b/CHANGELOG.md index 612afa79fa4b..c82c8b72f9b6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,106 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +## [7.45.0] + +### Changed + +- fix(multi-srp): display errors only after all the words are have been entered ([#14607](https://github.com/MetaMask/metamask-mobile/pull/14607)) +- fix(multi-srp): display alternative text color when in dark mode([#14718](https://github.com/MetaMask/metamask-mobile/pull/14718)) + +### Added + +- feat(4213-2) update network icons ([#14069](https://github.com/MetaMask/metamask-mobile/pull/14069)) +- feat(ramp): add backpress handler to expanded quotes view ([#14210](https://github.com/MetaMask/metamask-mobile/pull/14210)) +- feat(ramp): paymentMethods refactor for sdk evolution ([#13464](https://github.com/MetaMask/metamask-mobile/pull/13464)) +- feat(ramp): erc20 gas and balance checks for off-ramp ([#12526](https://github.com/MetaMask/metamask-mobile/pull/12526)) +- feat(4213-3): network badge positioning ([#14071](https://github.com/MetaMask/metamask-mobile/pull/14071)) +- feat(4213-1): rounded square network icons ([#14065](https://github.com/MetaMask/metamask-mobile/pull/14065)) +- feat: new cicd integration changelog-check ([#14011](https://github.com/MetaMask/metamask-mobile/pull/14011)) +- feat: 14467 expo ios simulator ([#14569](https://github.com/MetaMask/metamask-mobile/pull/14569)) +- feat: Auto-failover to Quicknode when Infura is down ([#14139](https://github.com/MetaMask/metamask-mobile/pull/14139)) +- feat: bridge solana bridge button ([#14364](https://github.com/MetaMask/metamask-mobile/pull/14364)) +- feat: multi srp reveal seed ([#13825](https://github.com/MetaMask/metamask-mobile/pull/13825)) +- feat: add account syncing ([#14291](https://github.com/MetaMask/metamask-mobile/pull/14291)) +- feat: Add support for native asset token images on custom networks ([#14491](https://github.com/MetaMask/metamask-mobile/pull/14491)) +- feat: feature flag to disable epd ([#14407](https://github.com/MetaMask/metamask-mobile/pull/14407)) +- feat: api request logging ([#14083](https://github.com/MetaMask/metamask-mobile/pull/14083)) +- feat: bridge top tokens ([#14258](https://github.com/MetaMask/metamask-mobile/pull/14258)) +- feat: add `MegaETH Testnet` as default network ([#14241](https://github.com/MetaMask/metamask-mobile/pull/14241)) +- feat: add new `completedOnboarding` onboarding state property ([#14370](https://github.com/MetaMask/metamask-mobile/pull/14370)) +- feat: Init asset details balance, remove PV flag ([#14439](https://github.com/MetaMask/metamask-mobile/pull/14439)) +- feat: util file for phishing detection ([#14232](https://github.com/MetaMask/metamask-mobile/pull/14232)) +- feat: upgrade `@testing-library/react-native` to `13.2.0` ([#14450](https://github.com/MetaMask/metamask-mobile/pull/14450)) +- feat: add metrics for Alert System ([#14246](https://github.com/MetaMask/metamask-mobile/pull/14246)) +- feat: Updated design-tokens package to 7.0 ([#14395](https://github.com/MetaMask/metamask-mobile/pull/14395)) +- feat: bump `@metamask/notification-services-controller` to `^5.0.1` ([#14296](https://github.com/MetaMask/metamask-mobile/pull/14296)) +- feat: added mmpoly and mmsans font files ([#14394](https://github.com/MetaMask/metamask-mobile/pull/14394)) +- feat: Snaps UI text styling inheritance ([#14355](https://github.com/MetaMask/metamask-mobile/pull/14355)) +- feat: solana opt-in modal ([#14298](https://github.com/MetaMask/metamask-mobile/pull/14298)) +- feat: add quote details card component to Bridge UI ([#14264](https://github.com/MetaMask/metamask-mobile/pull/14264)) +- feat: add accounts to different srps ([#13852](https://github.com/MetaMask/metamask-mobile/pull/13852)) +- feat: Support input types on `SnapUIInput` ([#14312](https://github.com/MetaMask/metamask-mobile/pull/14312)) +- feat: multichain trx history ([#13922](https://github.com/MetaMask/metamask-mobile/pull/13922)) +- feat: escape / sanitize signTypedData update ([#14280](https://github.com/MetaMask/metamask-mobile/pull/14280)) +- feat: add phishing tracking events to PhishingModal component ([#14254](https://github.com/MetaMask/metamask-mobile/pull/14254)) +- feat: upgrade to brand evolution colors ([#14218](https://github.com/MetaMask/metamask-mobile/pull/14218)) + +### Fixed + +- fix(swaps): set default slippage when source or destination token is not stablecoin ([#14730](https://github.com/MetaMask/metamask-mobile/pull/14730)) +- fix: cp-7.45.0 fix block explorer link for default networks on trx detail modal. ([#14498](https://github.com/MetaMask/metamask-mobile/pull/14498)) +- fix(14255): invalid url on account list ([#14259](https://github.com/MetaMask/metamask-mobile/pull/14259)) +- fix(snaps): Update snap footer buttons ([#13953](https://github.com/MetaMask/metamask-mobile/pull/13953)) +- fix(14305): removed background color for header in QR code screen ([#14411](https://github.com/MetaMask/metamask-mobile/pull/14411)) +- fix: deeplinks when non evm network is selected ([#14521](https://github.com/MetaMask/metamask-mobile/pull/14521)) +- fix: account syncing flaky E2E tests ([#14557](https://github.com/MetaMask/metamask-mobile/pull/14557)) +- fix: show multisrp banner ([#14564](https://github.com/MetaMask/metamask-mobile/pull/14564)) +- fix: Crowdin Action ([#14562](https://github.com/MetaMask/metamask-mobile/pull/14562)) +- fix: 10371 hide biometrics button on manual lock ([#14396](https://github.com/MetaMask/metamask-mobile/pull/14396)) +- fix: temporarily disable identity E2E ([#14570](https://github.com/MetaMask/metamask-mobile/pull/14570)) +- fix: cp-7.44.0 STAKE-1005 refresh staking data when staking txs are confirmed ([#14520](https://github.com/MetaMask/metamask-mobile/pull/14520)) +- fix: SDK Connection when multichain account is selected ([#14494](https://github.com/MetaMask/metamask-mobile/pull/14494)) +- fix: activity reloads every minute ([#14465](https://github.com/MetaMask/metamask-mobile/pull/14465)) +- fix: prevent text overlap in notification opt-in modal ([#14481](https://github.com/MetaMask/metamask-mobile/pull/14481)) +- fix: cp-7.44.0 Update traits when tracked settings change 2/2 ([#14088](https://github.com/MetaMask/metamask-mobile/pull/14088)) +- fix: cp-7.44.0 Add notification when redesigned transaction confirmation submitted and finalized ([#14495](https://github.com/MetaMask/metamask-mobile/pull/14495)) +- fix: cp-7.44.0 Fix header styling for redesigned staking confirmations ([#14472](https://github.com/MetaMask/metamask-mobile/pull/14472)) +- fix: update `ConfirmAlertModal` copy blockaid ([#14206](https://github.com/MetaMask/metamask-mobile/pull/14206)) +- fix: code fence name - show only in Beta ([#14490](https://github.com/MetaMask/metamask-mobile/pull/14490)) +- fix: Prevent re-renders of Field component in Snaps UI [cp-7.44.0] ([#14475](https://github.com/MetaMask/metamask-mobile/pull/14475)) +- fix: hide show private key in non-evm accounts ([#14466](https://github.com/MetaMask/metamask-mobile/pull/14466)) +- fix: fix typo in network message ([#14434](https://github.com/MetaMask/metamask-mobile/pull/14434)) +- fix: create Solana account in beta builds ([#14460](https://github.com/MetaMask/metamask-mobile/pull/14460)) +- fix: activity showing same transactions ([#14449](https://github.com/MetaMask/metamask-mobile/pull/14449)) +- fix: Prevent Snap footer buttons from being pushed out of the modal ([#14430](https://github.com/MetaMask/metamask-mobile/pull/14430)) +- fix: Disable auto correct on Snaps UI inputs [cp-7.44.0] ([#14433](https://github.com/MetaMask/metamask-mobile/pull/14433)) +- fix: 3273 keyboard blocks send flow (Solana) ([#14403](https://github.com/MetaMask/metamask-mobile/pull/14403)) +- fix: fix dark mode for trx history network selector ([#14416](https://github.com/MetaMask/metamask-mobile/pull/14416)) +- fix: #3931 Stop loading when enabling biometrics from settings ([#14412](https://github.com/MetaMask/metamask-mobile/pull/14412)) +- fix: Remove bitcoin from beta release ([#14406](https://github.com/MetaMask/metamask-mobile/pull/14406)) +- fix: cp-7.44.0 Add new feature flag for staking confirmations ([#14401](https://github.com/MetaMask/metamask-mobile/pull/14401)) +- fix: E2E phishing test on android ([#14402](https://github.com/MetaMask/metamask-mobile/pull/14402)) +- fix: import button ([#14398](https://github.com/MetaMask/metamask-mobile/pull/14398)) +- fix: #13410: Don't switch networks when 'Close' button is tapped in Add Network flow ([#14297](https://github.com/MetaMask/metamask-mobile/pull/14297)) +- fix: clear error if the srp is cleared manually. ([#14327](https://github.com/MetaMask/metamask-mobile/pull/14327)) +- fix: small update for event consistency ([#14357](https://github.com/MetaMask/metamask-mobile/pull/14357)) +- fix: Hide account list selector balance for non evm accounts ([#14379](https://github.com/MetaMask/metamask-mobile/pull/14379)) +- fix: Dont send empty set "Token Added" event to Mixpanel ([#14303](https://github.com/MetaMask/metamask-mobile/pull/14303)) +- fix: Resolve a couple of Snaps UI dark mode issues ([#14353](https://github.com/MetaMask/metamask-mobile/pull/14353)) +- fix: anonymous props that's not moved to sensitive props ([#12931](https://github.com/MetaMask/metamask-mobile/pull/12931)) +- fix: notification switch loading flicker ([#14331](https://github.com/MetaMask/metamask-mobile/pull/14331)) +- fix: Relocate confirmations code to `legacy` folder ([#14313](https://github.com/MetaMask/metamask-mobile/pull/14313)) +- fix: ledger singing on re-designed signature pages ([#14266](https://github.com/MetaMask/metamask-mobile/pull/14266)) +- fix: adds translations for a Swap tx in the Multichain activity view ([#14314](https://github.com/MetaMask/metamask-mobile/pull/14314)) +- fix: Fix missing invalid password for login #13558 ([#14308](https://github.com/MetaMask/metamask-mobile/pull/14308)) +- fix: Remove `Transaction Finalized` event tied to STX ([#14293](https://github.com/MetaMask/metamask-mobile/pull/14293)) +- fix: yml formatting causing error ([#14277](https://github.com/MetaMask/metamask-mobile/pull/14277)) +- fix: reduce tests worker for only performance tests ([#14051](https://github.com/MetaMask/metamask-mobile/pull/14051)) +- fix: scroll for the confirmation screen ([#14269](https://github.com/MetaMask/metamask-mobile/pull/14269)) +- fix: STAKE-964: bumped @metamask/earn-controller dependency to resolve pooled-staking geo-block for fresh installs ([#14257](https://github.com/MetaMask/metamask-mobile/pull/14257)) +- fix: updates a padding style specifically for Android devices ([#14725](https://github.com/MetaMask/metamask-mobile/pull/14725)) +- fix(swaps): set default slippage when source or destination token is not stablecoin ([#14730](https://github.com/MetaMask/metamask-mobile/pull/14730)) + ## [7.44.0] ### Added @@ -79,6 +179,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - fix: inherit icon size from text component parent ([#14024](https://github.com/MetaMask/metamask-mobile/pull/14024)) - fix: animation added for loading state on SnapUILink button ([#13973](https://github.com/MetaMask/metamask-mobile/pull/13973)) - fix: Revert "chore: upgrade Xcode 16 on bitrise.yml" ([#14012](https://github.com/MetaMask/metamask-mobile/pull/14012)) +- fix(bridge): hide staked native assets from token selectors ([#14457](https://github.com/MetaMask/metamask-mobile/pull/14457)) + ## [7.43.0] @@ -5246,7 +5348,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#957](https://github.com/MetaMask/metamask-mobile/pull/957): fix timeouts (#957) - [#954](https://github.com/MetaMask/metamask-mobile/pull/954): Bugfix: onboarding navigation (#954) -[Unreleased]: https://github.com/MetaMask/metamask-mobile/compare/v7.44.0...HEAD +[Unreleased]: https://github.com/MetaMask/metamask-mobile/compare/v7.45.0...HEAD +[7.45.0]: https://github.com/MetaMask/metamask-mobile/compare/v7.44.0...v7.45.0 [7.44.0]: https://github.com/MetaMask/metamask-mobile/compare/v7.43.0...v7.44.0 [7.43.0]: https://github.com/MetaMask/metamask-mobile/compare/v7.42.1...v7.43.0 [7.42.1]: https://github.com/MetaMask/metamask-mobile/compare/v7.42.0...v7.42.1 diff --git a/README.md b/README.md index e60e59241ef5..d068c60ac5c5 100644 --- a/README.md +++ b/README.md @@ -20,6 +20,7 @@ To learn how to contribute to the MetaMask codebase, visit our [Contributor Docs - [Build Troubleshooting](./docs/readme/troubleshooting.md) - [Testing](./docs/readme/testing.md) - [Debugging](./docs/readme/debugging.md) +- [API Call Logging for Debugging](./docs/readme/api-logging.md) - [Storybook](./docs/readme/storybook.md) - [Miscellaneous](./docs/readme/miscellaneous.md) @@ -96,7 +97,7 @@ cd metamask-mobile ##### Firebase Messaging Setup -MetaMask uses Firebase Cloud Messaging (FCM) to enable app communications. To integrate FCM, you’ll need configuration files for both iOS and Android platforms. +MetaMask uses Firebase Cloud Messaging (FCM) to enable app communications. To integrate FCM, you'll need configuration files for both iOS and Android platforms. ###### Internal Contributor instructions diff --git a/android/app/build.gradle b/android/app/build.gradle index e21bdc34adc7..87c730a0ddb4 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -178,8 +178,8 @@ android { applicationId "io.metamask" minSdkVersion rootProject.ext.minSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion - versionName "7.44.0" - versionCode 1678 + versionName "7.45.0" + versionCode 1738 testBuildType System.getProperty('testBuildType', 'debug') missingDimensionStrategy 'react-native-camera', 'general' testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" diff --git a/android/app/src/main/assets/fonts/EuclidCircularB-Bold.otf b/android/app/src/main/assets/fonts/EuclidCircularB-Bold.otf deleted file mode 100644 index 6d6297a83d1fb65ce11b8ae27b211d3d27d79854..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 115104 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 diff --git a/android/app/src/main/assets/fonts/EuclidCircularB-BoldItalic.otf b/android/app/src/main/assets/fonts/EuclidCircularB-BoldItalic.otf deleted file mode 100644 index 2ff2c9c4246b1a058153c3423dfdbe1f9c42d0ee..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 117752 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�-VfQ;6+wsK#{7)hxS~{ll-eKd_eZJy(SCoF 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 diff --git a/android/app/src/main/assets/fonts/EuclidCircularB-Light.otf b/android/app/src/main/assets/fonts/EuclidCircularB-Light.otf deleted file mode 100644 index b430571f9b493c5082eb7302be845a24f5f2370d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 106492 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 diff --git a/android/app/src/main/assets/fonts/EuclidCircularB-LightItalic.otf b/android/app/src/main/assets/fonts/EuclidCircularB-LightItalic.otf deleted file mode 100644 index 3cf9be629d994a5445296ab3f5d54f1a3359b204..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 109964 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 diff --git a/android/app/src/main/assets/fonts/EuclidCircularB-Medium.otf b/android/app/src/main/assets/fonts/EuclidCircularB-Medium.otf deleted file mode 100644 index 9f7c453210a50ad02849e5436307a2bd896b8dfa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 116808 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[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 Xmwb{gc^@MPjvVP`KyxCq(WCw!bCq;t diff --git a/android/app/src/main/assets/fonts/EuclidCircularB-MediumItalic.otf b/android/app/src/main/assets/fonts/EuclidCircularB-MediumItalic.otf deleted file mode 100644 index c249a488feeedb6c31ab370c3f2d220904ee30f1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 119648 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 I_lQRPKbt>MssI20 diff --git a/android/app/src/main/assets/fonts/EuclidCircularB-Regular.otf b/android/app/src/main/assets/fonts/EuclidCircularB-Regular.otf deleted file mode 100644 index ca09e0424b7f0bf469e4a01421e93caffbd9e54d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 115168 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ⅇHNYBI7;>lC`tEBAND1r<8Vz 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 M#-pL~SM;d=4{rWZ%>V!Z diff --git a/android/app/src/main/assets/fonts/EuclidCircularB-RegularItalic.otf b/android/app/src/main/assets/fonts/EuclidCircularB-RegularItalic.otf deleted file mode 100644 index 5af11569355d4b0741d93d88db95b23b8732d9cf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 119480 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 a&+EA3)s1fFelYj7?#pP1%GY+$`2Po_r@k2g diff --git a/android/app/src/main/assets/fonts/EuclidCircularB-Semibold.otf b/android/app/src/main/assets/fonts/EuclidCircularB-Semibold.otf deleted file mode 100644 index 8f1145d2c991971b462e01b0d5aa277455d685e3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 117828 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 RIQ4*TZYkKOU6 zxX=IS^oPTOpp%85a~DA;3qj{Df==Kn3ypxY9JuIi$${hiQ?F~OhBMwxyWH3<Tk!UP zFI-x|x<=vXV3+&5fy3uyeBcrVe>YkO>(qDCe7n)n_)?APmS6{1;&9!YS%;6_cIh`P z*5tm=<N@3(&V8S=_#qt%buSOgGe^I<%Jtcc30#)r+=uRukRfmWd}{Q8)cZOmNQqw5 zzu9<>)#}<8%~`y9<=mmehNceb*LUQS#SrDQ$K=r{>W9-UW1N3q!z@jm+@Q;;!GDHY z^C;e4MhnITY4X6=Oe*}Px#Lt7LaiV%td}N_EWgR)wBO`$%75vDDC)O3aHE7Yk_5MQ zTHC7nmf9jroD$4u$*E}H+Ivl>F1>npmKDg-bY2X)bndkjL+mHM-*M!~_Z@22Y1O`A z!&cuNcUf1yWt=ke>(6F57R`G9t)cxt9P-AX$uqcz+dgB?)OquwxhcDCo9=hjrK4T- zv@*uiT!}3&=&p_uva%?M!M>R&!YOmxeU9nuG>OP-mxcOA^7qY_;@Pue>AVfQxc$8R zRn6kkhzTDjZSs|~&D&S>P43>mUq^Rw?pPMp<w2D=)2@}TckSA*A4)~M?*nIsa3s(k zc#O{<7P1WLxw(a-ZTnvJ(?AuSD!NP6#F5FtI8~s;<wEqac6legZrR)}M?N=Mp10cd zRJrPOS(4L|b5ZtGRdt$W(Yys2i)X*{#;{Ru_i<TP=#gl4Ge~cVcN!74{4HJd#36Qr zljtA#imsc3&5Aj|WVL9DXOMo0dL4Nzk=uDIcp{9}w4tgcO$O?W<gV#X!pSi`+HLmR z4>-d1!Q+^&s=XH%PZK-;Lz8$<%;nIGw+vRXcg@6WooBS#XZpv4Q0Q&D-Bp*3cGdNd z30tt+#`D?_Wkfr(_L`Py)M>qlYKbcDw5(FCSUO+V&Apa^^LO?;;t+-IAOjW^MdM(j zg&MZ&H}FljMc#DekNzo3S5=uhMFKMiH)-Mn6I98<ahZEYt(HlvqrH!^@qPJSOxEsc zb2KEq+9v2>g2j$PvzYfYbDQ47yLaoec$bSi$G8z)X@v4U{2>RsT-LS#8^t*)!a)<r z%O49`9_CEr;ANZ`b@{&rg0|!Rt=Y9hoU%S-)Z$H|uXoV!R>t;k41TA-V+5D<j)EII z?AjL7?9Ip4Y|IGFJhcA@VU30em7}QFi^LF?j`J?2y%RQV_|b77qgVS@9l5Q}9h;=( zdqt}p-Nhp#g&8Vc)D+E7xiU&a<zgjaz>Sx%y!kBzND#^RGgjpIawm;XE!nM&=9*X5 zxo}G@Zk+wh^L_B&-Cjk4i4$_4{Ci(ldG(IyC)OEv9$mWOH_p7rKO}ly>G&9YB4b2w z^?T!8wZ+@^AGU1!@u$t5nl<m*p-Iy&I}Tut%i%`zEP10jLnqg9-4bl^8@Lvv1uR^P z(lBu?O~b~uAgu+&;m=yZX{q2GYZ347Q9X_1Y3Jsmx*Z?p?~LA_GIRg|B(-<7Biw+8 zFj`QKkEf@}`mDz1YogGYJO)p1qqny_?<`LO`e1UNUYujK$_R8v{vLsD_0tG+M>?sV zy_Yef8T~hvx6b`;kwL1tcE{q4_(Ziha@QJ*=o>XvwY=KBevgvT1I13WMZ|rsT5>v# z<O{r$0H)*Ar{@CuJLP84Wf=!Yn9F6^EoAf#856})?5r~$)?qOHDJraonI%Sx#2%t@ zRlzl82Ge;haTQ&k5UnM=u9dE)C1O8G(Y`j;61{;~`kW{YNG;A{uO<@Z-SG+0B4L#% zeO@HW(p9wzJ#Y_BjMfs@YnA`hD!8nUBZt@Q-`+R9^IH~wfMt30?~y4^lSM|mBt+z1 zuJ`>`POc<*sq`TuhhgHR2kd0=laU)(#JAdA1_8-m4x1F&ESw@E`p!zH1qTm)VheF{ z_`_BHa-_whM;(<%Buy6S@$}rkY5#a)`DaK1c3#iLB9PjTi+<I|U2(<ofe5XV%Bix@ zW-#4qBJ_iikxMW#S0NSlJG9BACnI&y8`E6tuNhmI>T71>*ij$7`%ZMv75&$(&*0#K zMTE&Cw1IfGmRX-{Q!SDE7r~GduUyNlk&S4X>zyuMHfbM<Df4Kl9y7)=c*HmJ$GI)2 zlg{5jmvmoT=7MDXq=L4=q&W^(72$h-Ui#xwSF7}${eE{?u<wPQ5RKsrr45*GgO6EC z_vqU4wKq2%C1#B7(OSAEzu(}uRab&&3X1oOmL5(6p-3%;L))E}SLA@z*EoU)?Jzav zRvKfTMdRXB?u6nAmXwsh1w@6k^IEhxFT-?;!5mbv*tuEGg7cy7V9Dj;I9NWpTzvfO zITMyRvi5I#u!SX%+bcA;<wHHF^gvO%op6p7rSYt858>J6mE$^1Oo38J^73)(OQ)S2 zCEyNjWQvcm^@Z!UPJ$a*KKvSKoQt^i6EYUJ_jofC5?f_ftKRV6s+?W!&IRfpYpv|k zQE=1BzTLa`>)TB_2!gDvtbi`!gqQTk46?9$kMYZ14_y}Xe5Zw2CvlcODT9d(ZCUE4 z#p;|{72FjFvll;^#S(5Fuq;+3?Jl(tvyCg@iO11U-T^MJy0Yjlin;EIe#n8dGoloS z{x~(mqLL^qT&ZW#h8!54`p`lo+2WQ+4l`QjpHMCOxr7f)XEy9OIB)jH<G39jzm|hC z(m4Zmatvqm4Eo*hBY$yP@EE*fvgkey`i^9S%6;Uam>u(rXl_)OoA5Q3ahIB>iq^+1 zTTKTR&9}hXO&0wU4=qB5HwqScEF$<lC^u0$0SmXmV)rJ%8=2D_*0t7ex95Zfs~Qf9 zb(3_1p5?~6&HHvO=vLRo-D;4q1vOY=@P4Q$RIKF=A@(9%u5J-sCUOV)AEM<S44*?Z z#kaI3mo@Rj#^?qyR@O)+UKj0^REu;l%?_q2>XRqA+mPDIE6DTUetQgs(J_mz#T%7n z`F1f*8<uWuyQlZF$b+5{<t}RR`laO6M5Lz%7msh?%7O4~%W#zrLR;_#6ZlgeKM^PC zP_D=;=p78}&zUL;KE`AS?l}j*-AX50aX^yZNcbz^>tt1e`uFZLWcZN5DN4x84V$)A zqI<nPe2^0T`tUvjmFPh|-b_)V6%%=7sUS*)D+b>Xy#{|hs`8Z~^lxR0>t&nkWjjfK zDn;@6^b$CV)qACNj8d>o>v}QLhf04AHu@*7QTk`_Gi5@QC?&Xl-L^4`t67VtF-q~) zEt<tB<pMd4flu($OPT|pp-R}mKEqR#1pRMq{qM{A-&gg&E%m?c^uJy7zdiN8{q$B! zgk=x??|%(oEFHUo6!oPFis5!c*#bk`pfy38f-VR53!WY_Ib=GweQ!V`vd?(X)Xns! zX}amO>5;jZ`5p6I^I7v%^Fy;Yv}kC{(Al9Gp<ahrJV)7B)L<8`=!78m%U9p+yF_ zaW}QjwjRhcJWqOFSKhgK59iB>jE<ZXxj1rf<OQ2zi?;Q%t;|0u|CIdc`B&yYnEyil zto#q{`Rz6AbM0H~d!vG)@<&BSm5Hhy)iSDQ)LT(sMg3mDRG?r1SAi-8UM-MZAhp0Z z1+EtiEod#6zhKdVdkZxzw64&@Lf+`0=#tUpqN_yLh)#-b9o?I|wkJi;j@}#nYqZB< za+Gn@aP)QzcT93jaV&J)a(D}?g$ougUO1s}y}~UEcPiYwaEhyutCOp@E5$X=^_6S2 zYoF`1>#jT0UC!Os{f>LCdzpKkdx!geOi;}Dn8h&}MXW_86?s^+ANOf1v5~QbV;jZ} zihVzJeC%hjn__pw?k%Pkd#l)lVsneFEVeB!J}x1yUR=w#ZgGR+hR3B9SBv-KM(u(n zCX|?2Vr7YK+^BuN#N`tAOFSy6lr)vhU$SS(^Cd5rYFer__iC>!l~w9)d`x`t_%iX8 z;*;WA$B&BtD1K7>miV3V`^v<W-B<Qtxq9WUmiw!Ga{1Kq<I3+SzqkBf70Oijtil%+ zzN#>{!jBa^6-^cMSFBXAOT`~6o~UHvzU<nS-mEmcQhKGcm18OwuiUnBr^?Bd*Hq4~ z5?>{$%JeGVRGD8Ty~>&@+p6rVa-?d}s^hDks+Lr3N;OZlzp95+cU4cQ-mZGT>K|2K zSbcZ(^VR=Kh)JlI&?O-?VRFK<gw+YV6HarVcHzWoiGvb9N?e$@CUINh?!+UB#}dyc zUQWEv{n|<mQ;obeqH2_^QK?3)8ue<ltkJGUa*Y8s-mEdY#`qea)tFghc8&C!ku}q5 z-mO)#R;5}=wYJpS3AJbYt|%5|nbJ<lP?{<$l*R_9(!}6WUNyuhoei<d%Z7<cxM8#6 zHf$knRT?vU!+rOZ2;Uhc(YIcysT5W^`fe$mm3+!LrJ}OXm!quoJ*3`!2D9%kLo44y zLr33zLm$2m^ldSu_>LQfDy0p>e8TW1??&@{qA$ZRmCuE~JBAG3UBkCP+Ua{>IPS|a zoFv~F-evmk1bwcA1T9x={}1u4t%UiGD;D2faK5DE!Id)#d<*cspznrK$ah|G_^v92 zdEZPaNn0)`lay-8r%EDixkS&jrf0(FnNZqwN%@6#{-%^sjw<z(v%c%J@lSfJ6g?JY zD5{jC$4VOFeb;FBIof=V_Fkv0w`uD|+WM#AW7;;=cgFAq-@o$Rpv@O(^992yU#4M= z?}}kP<+m!KwEw)}xMHIHnTFGpKS!PCsUwqe4}G@`!gnjEnD25>9Q{(<cQdGj?{-j0 zUsg~l-`SwjzDq%6d^Z{0a9Z^;?Z3viOG*T|=T~ACJ6x)O?=tPrq5anxL9<encQt*t zl_cLqrK3`e@r+TD>5KP#8<cUrUG&9G`od0M^rkOfr7yh7&q_fhTQL}-m3;I;0)5aN zsu@HdbfFLaGSpCvhFVHq`XbBF4*Ul~NhylWFcf-t)3=Oq&!I1}4KwJYulQW3<TqrH zR{8E3z9s(}-(x7R6qHwrK6#ZsxeZO+rB7}{6L$=mik-GUr0w6)_M5c*d{DfShxYqu zzb|MUeKFB@G3Zm@xuDNUOMTx5E%*JR1S|QW`e@(dpm^C!;IRe{p6xrtx9x%7#gs^2 z33}-$J#-9Oh=kI^>4~lM#Ba1-W90A9vR`T0ZASVIt&*d>l@|TV=-#DOKhvsnwB`?5 zbBLA{q$LGuNo87bo>rWq6~8j7*BQkdwB#}^*-A^!(vpL;;vTKI3f4QpdXr)Vo5x_| zW8U3UM)<rz3S+>!%;-ik&WXM|jNWZV?KZ8xMXPVo>RXI!IAa~bTbV0APwdnY&F{j# zY)YMB-0xEI7A0>f1L>Ke%!jvpSE%J0wcMnZn@~tNbw~K{kkf0)p>&SKgj{zNmA8^7 zNEq3`xIz6g$31d9pw3&=d6PP?LqR6~N=meXRirP2R_%up@6oa!nTdZXF+fkGuWJIc zx9@~95J_MtX@u{v@|IFSnFdCR?@-VbsC+8lzwn)7euh&@!cGKEO<)Jw19mr`v>^|< zGJ&m<b31UaJ(&TCaIBilkR)(QCi#2!7Nsvy`T{+0L8p+DP{?8EC)=lg<NbAJS$_UX z3}oGA>bOcB*O;Z8Ve{=JPbPI_Qb#77E0Nx-3C81mC!n0G@Wz|)#fO18aS5uq%ZMLk z#81QNWSx=pYJTvGCdoc8%4eeQPii@@)S=&!7_oZf>FDz)o#}yOevk8c4Ud@_{t>(i z>?>fMp~Nvii!(nRdTXxnO`$iIA?Yn=oHCRm%x#CEF!R%?L^Gdb$zRe?l;5#RA*DE+ z<Q#1@fYXLR|H*N?sKi1S^?X10R|5KPApI}`m~TO!<CtBupq+)jpMX>fNN0gm5lCg2 zN2lSU5131L;UX%Kj{><gkShbZI*^Y7xfI;wilHi8GJ#&JL8=AkY{i^<%xs?mbs5MV z2FzuOY$e><=c672^_X}QK^;N=<*n=mGq~NQd^orTfy-U$2&Rru>c|H!cc~|YdAN*q zVg(eu-gha`PX+!<?f)4w$$PF-w}Ej8g9_!0j$ozoQ|SYG_yHrH&4{1S>AD{LSkBcE zK8@bpPS0k6bpd+w2ECaBwoYn`pw}dax@O2>ZF;1rP{S1{@iNqKS-BwB09u+~!l5mZ z{ELUq?l41Zfk#zVg;>Q29xf6Tz?x7%Db8m+sS>FQsk-l^lAvSvt5QSGJWAB^ZB}0L zJ%ToGa2&$HI@w-%ncoeV+YO=LSNPtD&sU+>COm6OYDQ{KYC&pAYDH>Io;G~8CI4%D zwxfUA^SvYRI??jZid*Tz_pUteu9Q%c!T5DP2f!r<@;rslx4`jj=xj8&k0GUz#**GA zeLxz=j^ab|OeXz{G=(&k^aW`;_0FK4nWQgCUy;71ZL`2-Hh9b-%_Yqv%_l7&E#%!I z@Lo(>LP{qsB`xFma#99q1!*PER`I!-&u>X<NNY*!Nb7;S1z1~ozl~2gm9m5M9cd?c z?IP_a?IHa{I!HQ1I!rptig1z7OQcNFWzrSW9meS{=^p7mbv__HBngs-ltX$%(ilT8 z=`raqlFzr<ppXotAX2dJks*X+B$=7Fp?rpsRFVbC3nxX8tfV|V%S+0~_eheBl%HfL zMfp620;GbZLZoP<1$aMm?k|Ir<RZCAG0fp2d=@3el8TYyNX1DdNF_<7No7c7N##i8 zslNiLBB>IoGN}sBtCFgbs#9kIDUnozRFhN-JfT@bZBiZ5E3EI0NR3IalA6%grle-1 z=HzcdYDv1GL>g`@WegAbWMwquz<0bzE%aZI&G#tiBcCVeV_$aAcs@VjbD~l-=u@RS zl59fIWTkk}zu>7x=B^4qk(|a%i}UE*DnE2~6WYmu+f;&f4w9=TxvD}ZOQDmM@XP%4 z*IGDG6-vHD$-4B@T1r=@tykfdr{R@<(6-Hn7Vuul;lijXo0{@alZn#Vln$kIIHmJb zI-Am=@PRO-q)6XNB!ve^%lF~+ds!>5!in~>M&D)~dI-<|Q>g>jNTLPxsJ|mzs56`^ z8Lhzx*7R|{FKNSN=ENExHvsYxAeRDiW$6D9w0Z*?y1>|b!DKg>)Bux2Few8jyTK#| z4t9pNT%j#zXv@#E<q8~a1$@6WeE$TTX%<{$nNpqFuTpzaYA;T07pbibwUwc^^3-;b z+6qzA18TVdj|!7(HN36>I2WQlMVWW8tZg;nign<M_24BPY3m4NzlE%^%XpdrXIug2 zUy1y;9@vu8ntcZY{V&(6f<Td6_fK&A16sHOo^krFWeT!Q47eVKbNmZ#@hKc)A)~v1 znrnmmCTcIJ*S^}fh!OsP5niBd@U2ib)7o&~G-lB>X3=zJ&gb-44sBcn<jS<MB9I-l zaS_n-K>0JE`f0TFJiYci?cGeTt%Cyg>ied`K$9zdEYPB<<pH%gsiioz6rz>~)DlgJ zbM$GL?-ads5o)nO1-I#~OsL=%J@zM5a0@BT$et;dp1R1MsUmx(D)iQE+SC&WP9T(^ zw{Eg$van~0W6zXCuid5BGJz^byRyN}N*klt4MmYP*!0tLmyxE=vv0~`-*gv=`U3l= zO!iF$k*qHvSzk3QBu@ru6%zM)%50|HTS!}#66_JKuy4w%?-9<k_GKb@6=OEWA*mKe zGWPF}GFg|923hY;(y}|W=ngHC(&I|jtrE1VG_5)W_Lsr-G+5mNt7AxNJM|siRBHYL zs#=JAl7TF^9+~Ah{dk(^=fL1Rm}Mfv7xSGCLXL-;5}6@#uiQ*2Pt9in`{mL=kh9=a z0K$(zxB!HE?2${+_J_3j7LepVF$+l9wD~^!V<!;H12G1OcY$~Vh!22xCTMA3k8ENT z;ur-f%b4lyaC%$HF;Tjt(uy~gcvB@X4mEgFp8hYbzb(Mq2;SOw8$r1Oyv@g3(|>vU z?_t`YrR&Hwe^Rg9Ssh}g7NAeEkZJZJ(_DmuoI$3!h~#Kv*0FLk9~L5wt)$KI^hYaX znH<LV5hIt6+SrRQql&VdPo(C0JnIa80~ys3KzWO~x)2IoNpG5=ns{ny#rGU~>=D%V znDKs=zQdt{Z0P%9fWD<p;0E+<V!Vn4=(`g1T{S@8z3Cx0JyZ$^S<rVl^j#eKt_ywN z0ixtTwdlF30s5A@fnxMvF|d&IE%gG=()UH^I~q+(2;+T`@xH=%XFfyY#h~%L(0E>G zyi|b3^F2r7&(gPnoGSA(kzGPF<hg7(Qc++qyIHs7JG1f`y(an2_k3nUSAGtb&rpkY z8=0#rygVGKF`G3jKYT0_DLNaDH<2-Wx?ld!^@Jf|A~~`i6!QHJY%{a)G5g$f_PJM? zjR)AV7hrFZA5LpWdWmL7P?*m|O4Q_8M`)olBRY;zY)8Lzgx&}Gw$Xoov1dBXe(5H= z?CbQGhyKc8emrJ(E$4j>v+ou=eC7l^U^y$32@1RpwLON?9@DO?NW)k3y^(CqUfQ(| z`iWqzm3*KkD`7MGprh|s<U~h+o{llXSINDJQT~k{Rq0VR!1GVBdi-NAg)GOe>jlrB z&-uSRk$aD)JDkAo20SMyE#Sa0y4LDNIjm4<bw;!jBU+i<G30Jb?&KHMhm=x-5iie( zSD;+DQiGCJ$y<$*36y+N3JTZvSCnW*iMo`ir?*wdG50NfAT<IK_vhq~|M97jl`8wW zy#A+Q`kE@&&}Y_7ea*~W1LfM6%YjbAeSQh-q5puwHp1^EO`L%PeGjEcEy!u8O|JVM z_(dN0g%N%sbpdCgm($S8Ddvt}-;f2RT%#7b1HTES2x`cpy^{CJzvUUNWjYNQ;1&j? z2M)H=j?U0kXL`0hTr8U2eI5BIUTH#Vs;?1IN^`!qASEmPm05hwhB6n!@0KYWl;wJj z^{BC<vYOeo0ccy5cqGDjgM(Cz6h|sfDnTkqDn+Wwnwx;U&_XF<$Y$j3ATi$M^B$k~ z`FsHXlBe|xgQ2ASW?*On!#==G1WOlKhJ$4|SXy~&2Fq};3<pcMGJsi}LYl>IU8>Qs z91fO!z%Cr@!oe;a?81TG5$G*|-Vx|6fZh@4Eeu}DJHVhI7&Hch#?%!G2F>*KA_;k- z0Z^Nenlhpizvg^zK}v=f&*IasuaywZKr{o<3`8>!V}aNhh_OIy48&L<HfH?@Lmmo; zOGdETL?W*iWo=3H?PgSe3DCw>M)x|Sdxz1z1btj#e|dww<qaw4)5>Lxf&5zp`VOaO z^6=Y5OOn8+89U5m;6H@-3#Aw{C6C@Ol0GD7c=qrA!U3MoBgZN)(Ep~xp%4H0B#eG^ z(vOkA4Wn;tx$~30G1D(*`o!$#F1c^?_DBg|j&Out?&*v#&Wv|3;|sr_Oj*hlr%Z`| zlu4jW8OoIXM;Y{ojC&HRb~3Ah)ZiRd8s=g_pH-w>amtnWM>#k;+KMDN6Wob>b;wtl zd{tQEkXz^lqc2@iNr}F-N-f`VT5n`*RZ@iS0AqbdUk^H>Md{+(Cf5Z+w(keS9i;BN zeBR^pKA#VKD}vH|Yl6m--Y0#)p62g7?tlOF{Ky2+VikP-y{~^m0>8l;oBRAl-%^!e zC{b$T^0Hz%kz`$@;!tWlsS>FQ>1A5hke0o|XCpovljl|64zw)0(6a18%d!nE%PzDm z+tIS@Qrh{xL(6hX=>X5{h(@myvRY@Jb)mPqQf>e{zd^n|%3xro@cnJ%+7E#<ne;Ex z6w*}E7o_Q=+0;9SG?z4wG@rD9w8*!ZJ<wvbB#Y6KEM_mXn4O7#m%Ezp-;&ml){@qd z){}Np-!9T_(jL-Jq=TeGq{F0(q)Vhs(q+;W<bqJ&b~F^*(NJthL$R23VKEwt#b_uN zqoLT2hGIK=tHtcC7Nen9jD}({8j8he5f-zTT8tK9G5e{-Xb~2(huUGtLjJi)y5-wr zxb6Fi-TuR%P~XX*Fp^5Lkitn3Br7QoDK9A>DUxLKor02nhLV1Ul75Dgenv}h8ZAK% zT7uJP338y?Ku@rPJFV~CgL0oh6S=+g?0Ra2%RawG{{Qv#e_N6Nzt1K6?g8_xxZaEZ z{1(AVki$xl1!wq+mEZ>4;SPL5+7s@u0$gK0++;3f!u|h(`%4M(4qPCdr%9AdM*mlY zv1`ZL)tj}eH@s;$^Rq5Iw+cM!1J<sFtX&ORyPEN@A!}Dd)~<%E;(3)$<dzaa7uJVl z<wI6eE32uMHLW3QSwr}BL)Nl}hGL`^N^N*{G1jxz@a<x(XRYDg#aPc;vw~XTBhtQ7 zl$8@X1gX9?InCrUlfw+Zkn2T3Fm-@wQ!s4`+<3}JIj`n3YkXdEhCQ>!*V5Pa=hyNu z>aPtZVZf*jCSky-jYJT_8fc`&sxC7`0ih*WxqwmyC}BJe19m~6<O50=eGw-4I8ef9 zvs|OXXmc2C4l~4&us;||kV=wDkrLRIX0va-qcjD2d7w81dU>EXWi<?;O;07Q;y`Z# z^!z}t5A^)}%1=Hw&<g@RKhX07y#dhk13f>`^8-CU{nsB1@&m~Yq~<_!1F1QX+(2s1 z`WM2wYUG<r3fFtTFOU*}<fc9eHv&j`fD}rO2p~lODTXnQW{jhO7y-lxAVvT&0%#FH z>jX3@A$0<pl#n_BO-e}7NEiQaQ5pMSuy{&oWzlIS(ANJ(adNfA7l;{jmH8m;dnWco zcbI2M%%fyxh|1egdZ`lMD$z?)La0qIBvHRgOAFA-0<^FIV{fE|Dk+@V6@g5U1brkU zuiVjPHz~KplE+Amves}#AxB<v<kMGu{!%Jbe<$~`W%yQxT=Ho?az>NWL0wTmjH0e6 z-h?9qN;~j+a)g7op99>31Kek~d7qu;1KvJhxA}<Orp9hldMez(uKN%xwU-^|pX@mA zu+z+8r}==Hm20_^*1B8^9g-t^SRea;FSTB$*89|Yoc+F+nmvJ<?@=>49&{dSfOZ^x zz-b_!C!x`Y=SZ8ZZqWnUZJ^ypYp_`<i*}$a`}!(|?~!(lP+KT<UqDY(7}+xv*)tRk z^Je;Z3u!AD%3tC93g?$o$5`5tr3b)mxSg~kN~^sOOwmTs_BX+RJu}#9VEZtDZH~U{ z{+7PLh5@$M!PXnV_7T|L23y?@jlT9V7~cb9xF)a-z(x~+EjkDc@)-`XgZumQ|MW|a z*02A_UljVgM9)99o=Ge4GuATNa~2JPw6<o`o-JrwvS`mE+H-{VNbSKRdj2$Rx&H*i zowWZXNshu9v<>Gdf1bQAu&U9%gS2lwR4iA82xu#k^+a-Fzdiak+Nr-7e;+!{99nQ2 zXjg&u0BC0V!%PpJr{=uuI!%Gz)9vr{o|oDm>f;R$l$u#+Iud^bskg328sXbW`z}zs z)Shaz@fsRb>1DG3Xy<9`0@`|*wl1KpOQ7Kl#%>jDUI7*vV6hA=%7H~W#-l1)rX|qQ z3NV^W`<K)Hd$fN6?Y~X?*F%jf&~ZO9Ji^W~#kUFUHh|qcof?Z#OEGGxNexgS_-4@~ z=fL+EJ#ij<e}ulyf$t5*BNH0?6P$AbIOl-#U3%wda6JdE9`L&fej0e>JfW`~#Y!)Q z&`W<pW75OpEI3>Q2Q2ioBoZ7V!J*`Tm<>;9@b9$t;`#F;n)5$<_V3?ok~aK1@DUN1 z^@27&4A5MTPIC)sdj_-IKjU)@>vewe3+;TQ(^)3|2mX=2$9m$YD;qs|6S_i6r_a`V z^kyz?<<Og6pm-Q@FOVc}k&rx$xCSIIBkl#-pN#AgMpW_^FQe%VXgi*zyIYLxC7|D- zSMLU9YavGSCh+C1_%<UbN9_?KCVhDx0Ph~~t^w}>@E!s0QD9c#+XN0<nC(01f#b}; zljJ!~Izu`~I#1b5s7ZPVJlmsoS}pB0*XYNS?8#5lY6<;5t-eBQ_kckTP&J@R-h36P z*J+^u$~kJp0<KGIS<p!qbdm)G4;<3(vvP%6&r$2izzFT84YHQ=`l!en{QOt;(Vu!v zQ;`1*Q1*Q68sTut2=-w`;Vc7vYxMs1>u#|_JmKB4Z06tEWI*HF>L2_o#E{0i`7Do? z`(l+fD~L5Kn74H(RT!Gqxjg&b2==={?01879_r`)60`LZGq`#Z9Ecq?CA(0vE_FYl z_`t4O+NX;D4YPLaCwH))JkEadID5Sf?DclA&pT-7PJ4QihLc8<#*;oFP0(p=ieZ{> zsbM;4hVLuGOy6X~m)M=Y^35`Q&9iSvvv@w6&pD*Iyr0MCe9{8GFGQ!ih@JN0|I^-i zz*|vV4SZ(q<I$x(P^w6gV!;{#H5y`Kii#2gYOo?U5D~<#u@E&8H7a(EB@hvfpF9Oo zi5kTgMY<rpODK<C1@`-&GrM>9-dA`Jg$OwFo1NL&sb|idbLPzKF5ws1{To93OTcp| z{>!*mI9c^i{8w@R2Nik^e;9jVBk)J!1SbC?|NFsHb~N{JLHjZOC%8{>pYiMq{4w}n z;*Z52NBhPTo`9Q3os*$*UlA6HH<j?$!LxQ6{>)&YorOOK3ON^l9%&YkcOh+F#+q<B zt{@n}dhiQ(TksicyU$qLea71EGuC$FSl5jM<9edWE61o*g!aj}Rz=HQ4Lt%YP*VfH zA#|$|?gC_*o@k=4B>o1p(w(TOGgycw+;)Y&pU;`Gi*VhckG<F(>K%+{L?$pA6BvyN z%)&un;V4EUpV7!?G@fEKUSKpvFd9!Y8u^SyKBMt0qmj>O<TDyCFdF%cMn0qQ0;BOJ zqwyi5@j^Hn`HaTvj7C1Ak<Vz1WHj;_jeJI9Fr$&rXgp?L5AI+@@)?nQMj@Y3c!g2O zXB6@og?#%To_|i6Uyy$c<$p=sINCKHe*$iDFpLq%X9NZ^0>c=Ap^U&VX5f5AVGyG* z3`#MZkr>8E3}Ynn8Ho{$#7Mi8@G@5O%W(z3Yz44ePuvFdHMemN>vr57xI1xo1*2GT zFJWXxvEp6=g&XCD25&G*f6<veTqJtNrxH#i`fAWx(I@$t=<Hd{sjj5F1nH?a(&YWz zKY_0J8R7=hzF~wv;+)cFgva8>aX$rVb0$=VGpI;pO_0c%Fb69#gRRV9cJ8X6!%PXM z#8zWgHiC1Whzu-qzY|h&XH%J)>r-=znrkxp3#q-aeUR{D)ciO#KEX=m8K}Wv=+{5E zf06iM#QE0DQK*mQ**M}R@@xv_%|zl^!2No5fj6LMyPGpYf5xG!q;)A;mqY9F+)&OC zy{uAvQPQR8Y%Q2=X?p|OF0!_z?UpvzNki&EAoc{DdoUw94F4nQ{*3Tg_IJi{A46#$ z+S7pcG*BqLguGKUS5Db(oHf1}X|4ylsC}4U8=%Vbm|q1@<rPr&@$ic!@QNi$p$EZf zUV#H~?gl(t4eqRC+&9tA;j~)vuP6U}@~<ZUTJldJzpP@Gl7BdJV?Fsdg!wm<U!<~4 z$_s=`ttQ9xkT0(b`SMnBz6O8ILt+7j>_F|OT-5J~=D|(blVGGzgiDB~;R5`AP}R<i z;Mu{a<bH#BzLvQy-1Qsk_NxOqB`sWZCilWYy-Zq>8Ya-6F)|w3D}Sv-og3*JCxL;B zNDfF1^he;aPWuzVLin2WWlf?l!fi#y*h<Q8si_8iDX%?GL49l44{#r%l~2LrYozbW zQ)hwJ*MxqZK!2j0x`nhwT2w$?=rJkVr}&zdtx2bv0<<M%@w);iu%jhA1Lsqk>;hcM zOnHO0yv2(7ZQMKN68kQa^?SGvOgGxt%}ysgA6MM2K#F#)A$56DmuJ>VdBefnw@eqx z>_VB{5@l+?qcY2w+JU`-x$h}{=h25eLPvoOa-N|vZD>dv8q(4Ob<MgOU)HT_@n!8Q zd%V$Vd4J&01{fSpuEykQOpYp~u0qNxLK9dAj$wUW6)Ur}7WiI)*;s{{ScTbFh1pjN zN+A0)7R`gD7RxNG#VoAF3cD(tsTw*RnI%nl@&t58DBdvoJdW@b+yY!??z-fz3*A8T zq_|j_a;j5K6)i*Plcz&cYdLByN3G?kl`pT7CW*g!jLK3l1<9BBd;<JW)^gp!U720I zn4b?brw8H&F;@hqhckljbN@9`=nVXs__Oin;LG{AYLvJd{FC$1TPbxTrB2h?){B|( zFt{Gcu<sL|iHtlO-^-|*fr8%!l=ZUc36|;{^*RE{DQ%FI{5sYyq9a%;buwetGiDW8 z6^Q(K0@AAVq6aIv+QiCUl(c3AG{Nshorr|l0j_WX5_4x(kMcG}52P1PX+sNS9WIjg zYU+|x^FkM-uI1F_*V-Wjq2MwCnP=VOUHr_QeZLo;ry8rFoWAxuj%T4|?qp==P|xa8 zT0_$v%}+OUWT#odh^A<$j%N0^Wd!d<KPK>xPw;mFcSQI25-Y%==De`ft0=XHc>{_& z7TwHB@V*}VlMS@=b1D5wO1~j2{ZdM=OX*c@d(z!YO~Y9$zr|ULw{h>79`KWS%plRU z{n+kZ1#gd4{wilI=0m~10bh|I^!&V>eP571eWC9e@MIOMu@yX70bZ7L5(N#PoSYO* zlBt0#Qj_#~yq8fMT2K$(+<>)RGqfWu@Hy?l)1j=aN;=<E^3xqX{Zs)gcGO*b{_UqI z{sh(c`$ROJ%S3ky^!@n<(f2X4iCGNwSx2mlqKws2-rd*=pHaOUPfq~GJ@9)o#@C~X zGz$L}z<#Ye7&(YFj_AI$jHQgs291qM7Hz1=H;Z|)i98$N1}bYHao1#DF_g4`Wpn6G zbL5RJ=6chDT4aR3<kZj_Im4$d6&Wocmrzl8gJmJ*E@b?xAb*LbNl&1YmJ=Q1T}<9h zNVC_YBf60{g>GVhz?ti4^*PXeO9;KB>%w`VvykY{24gLE>ygaQCrx)rLue&wE+S1g z(p;=*E}{?Cb(Xz+u60O%1?kbhaDN5qb6jWMJGzoQ?3cQ$$m58aMa%|5{YZP0rtPO? zUr)LlfZ2^&_VrRfr;WxzxBZ!`l0sEEC)JLbA#e3<(tOj%H>%LRyk!ub?5q}^d|Moz ze4Ee7x8-nn$2p&NoDe$2jAtb>k<&wyfca!}_OsxOa>A{<>g-m8r!*I<M&NE%;p>qG zHkiu1eI=(XeND6Bw2oQ3n%a`*Naty7{h8API45x*^2>O5z(md=PBzDfXXzGDlYft{ zH?;n0G|ks=hVE9@3wQHw3h<#er?rWmQTipd$va-iNm`q{=@*?^m3I_!IL}p!8rx9g zJHOd=((l<H1Cpy$wDo^x=!^AbtqsCT=8s&|;JZ3{}=0`nx+m2Jg$FjQbk7VLC z%?sev?^4nNxb;HX{cl#9V-yn0$T3@6IX%oj7pTh)WK~AG8a#|UB$DaqcUOVQ@9W8` zew5T5*!wprdFKpHc(rPimod`+LSosB{3Fuy$H)Vp!yTI=l~oF5pN&W_@+RfS^dS$Z z<)O`*iiU5D$_2yW&J|S>m-A7Rsh9KJ=;S*9tA6Ovx}!VpfzG!Vvc|)}X&`aD3r9WE z&;e{h?%0g1wFcQ^5%QMkY2_`w0_t3aytS5kCsE&A<KB3V5irBgdiyo=q#4MY+XcZl z!Mfm!U~{k`*cN;nTDjvRCBa7aRev-<fD;&@304OG6}aFg2V;X(!4zCUFfHKCNgz2k zSP_g5W(G@xt-%6Pjt!n=T=yEo`FsQBEb|=>HmO~Yv~QSQYJ#`LlN7;nWKjvP!YvIr zeJi-RcbMSo;7jo3oe%;ZPMdhM3g`(0fZ=kk>tblYq0~Sf{C6bcM|*H67#4L7IyKJ2 zC-@-X4dvjIU>O*MJ~@~V_Pid<4)TLh!BpnpCtQaGF9-90S=9(`Q8|0MAI#u<othwE z_KoL$0;g*Y6l)Uj0(&Hm>&jpvkeWbf85F7lR1A#U<4x`0jbJ+O_n2TU@?F{>uNdI9 zg6n$tAiR*!Ho+ZaS&ZJxjC>b230SU0W58Q*l=dO3pk;<P=Ez-x>))l6-Q6IUaJEC} zHWCuB@CI3{4xs}$17d=q5~mPag=9fIa-M<v_4jF`YcPiOiqX<mK;LTt9o{Z8<te)v zGk0-ZdX!^#^5Oo_XsCGtmonSWTB1k;x63e;^fe`|gO1HkKG0Zsr*t<r@VarFjxp$n z5(XNy0@+Dn#QMRoKFu&9J0aO)(8w9qlWNHE4%!F9{-}X32-h4N4B;IYNw;E8n19j_ z-&cQyaxZ4K2nCvlT}^m3Vdyy5FEv&qD%pAYZ;WwCSo^R*kkyjpnyd3tg1fm99#+@{ zi-I{KSw==?6;w?Pu;2`Z$X<$X@&<yKy+-=f-frh2)Euc`D=-S(b~5axkI~V|cRcnw zQv!X0HnH}VRozSh3;U}EdL{H}KHq{`7IVHhq|YSn9Gs_5^Y$3}BrCQ;2KqFw5Pcfw zlR=+qK*#3*izUQVPSWv01?_baLXUnlI|~B4H*}Gox8jhbe>5dQ01ExKtb?IK8{%|m zd|Ah!HCW}fb+P^_Uf=ljno6QuSwoj<F7D2&7jz_BM1S(5DG35-Og3WS@jGrxhf6zN z{+^U`PuFTf!{;LbP25rKkm?OY;@q+)jr#Y~m*hNCtqLocJ$;V~PPGF1B--vIzx!71 z*lXF4z0X-R-g&+7_D3OE$M#eI@Ka<%2bhWWX^miy__$RG+F$O6-=pu^Lchm?4yjoA zC)$OHYx4UmoHqT@lmY^wPOcOw_nair9{HZrqn+22SUZHA@J+y*dZN*W%FoAN!3hl6 zFPJK+R6jn0Jt}nGxJ5i)<M$clJ~E*$9gUUf&)FTFBU+d2{fH>_?&SL&%<L8eEA|oS zVYut764O}jWygh`bD%14(z7c+>YuWq2aJlP{Dsr*{xQs&k?c$k36?|>wd~db1>|cq zE?dJ>E3yNeC2<RmB@HFX8KIHv;C)4Ss^*t@IfPPX`&lj0SJ4t!vZNnk7>e^2FdFG4 zqoP{KcYcb*9Znu*7)m0B(mo9SlY|AQ0>d*29!AM$83pV%H``y!%3kl@YJ%5-kAtTe zYt9RBy2M+)CCyx!q-O)Bvr6VHDNk4O4qj*?n$LHC*(D~W?u|!Ji}PcBUvVjZxbbK+ z=llKL9a+ojzW5BFn~(^8xP9I6mhrB$BX<caG|tVjo=ckGbCJb)<34F}lQ%zx1p=P) z34O;@!R6s<$jzQ>(9_A;)hvuDTYs}9hO*_}dr~KNi}%!CtJWlk_qh{>)t#ISlbvum zGyab1n<hZ*(dI>lvt=*(b7JWj-XK=Il<z*ssW9DJN7kTh&g*}{2?a{r5nd71@W1p$ z6Un?|wfdvkJ_M5IOiGbDYX!6Y9D6{DI>?jr{Txa5hPZXiKiMHzuQH~b3QHJ0{gl2} zJwYAL^-iU<m7I%yoiD2_g}&E7h8>3#p(pHiXDKt?RRX;KSSBM{bUk^`8CT}+TG<t6 zefI@&`x2Gz<;0@C{XzU5goCBkp|SqYI2-JNtD3ki?9psgdc8&<!;XCPHW9wYgm5d< zfc(G`m;RJQQEPrUqu|wg-eM5GHb)$@Fx>4@+!I)d+s$EBRPQr~GU~O&X6xxP^-(ep zHI?EM?{x^J)4eVH#7<#m`Mbwm>G8?;N6uZUMnQZJk1c4jzT%D;uA&>?825d5$D^nx z+sCIUW$X)9Dc#u$eG)pp28nDfG)nMixoEVII1}2?kZSGLRDDO_lz>=)>R1+|xtasC z<ZQ-9VD~NjZzHe^>5||Sal18z3fM&{*~r;xxZMn|uT$PXikOdZACr@R#s(w!2aDlP zC?Y9L<@#apd{pjt8;6oxwkw~Oz8^)U1czjQZZ)#g0_e7CAi$$78p~-ko(V1qUTyZ& zY*+Se*Vg5=mR>)=d(`Y-#s=;17jnle1CQ{bQ0mLOL=*LFzQD+z`&6p$pYMLxGRT>k zbXawnoM2J7AwLP-PV>14Ub`PWifggbnBpE9{ySlUS2!KKF?dt=nnq+w<?{Z1yq@Mg z>laA(CVz-9T<7qAM8g+Q4J$w7r#*e%2@s>zZ1iqo1lVAfob&-AV+G!!1O=7iePKC+ zFrBNcWMoaqSDd3<d#ax;i|QPcH-xr8$0y-`7`%tpV4ALvmxuJMfYl6i$(!sFqWC?@ zFRW4U=j?%x$eSWn4i1JRHBC}Ea|OIlXgBe(i6Iup?RlZXkc#>U-IDdo5_sDZBym{_ zujidJfuHcWn6C5Q_MUDEuV4$UhF|6{Y(kG#GZWV_7ehG3kSSb7{A^DN6(wJ0_Kok0 zyaSv<*(vjxzuOz;U12z>t|UCIqcojA5wN>5SLfY2=AH03`9cDC6~bvZ*Q!MQD9Mjx zf;f%RYnfXL2WHwJ{$_6UJo+Yup{!S;lXxl(>=pb@zkwmRB1UoMbNq=oWCE^VAzi+R z|1=J+$CY<!qq8htlUEqll5@{8o(3mppW;l2PpVB2iG3whT-Gk~bsEg>twq_95e(%< z<?-w{p$}J6O|G0`d7tac!Mh@X6H<+Vga}XGUH5@~`^$PwVv^6R^hsznF5B!4=MJ*_ z?C*=1cLJj{9glM<?NUk}$L&3#BJfH19I(ogvUNSP4oVe1-+N#rJuL!GvR|;5&AZY| z${t?&Cdb#nN#0EGw0#R-+vGftr`o|BLYvT8g=aVS9==x?pZ1pd#L8kVW4=oDN84EQ zZ^FrSEz-{h*8S@;u^?Mtpfo(B<$E&B&=ieec8to>;U=hZ_$H(1;`pkVz(TMJ3Oxay zR*^4y8@>v?7Z}xpyq($63>k5WNY(mo*nIze5#4E0h=sZ8Wai#8@8rvSx+a?y?MF&K zk)T(y4=1a$b-X>cT-PV)C%NYxGWkX_A$c!vG;S<!>uq<BG!uH1IE=Zzl&?wtm+!yM zK&Q7#=lgQz{MW(zSl%VVZot0Jx5xS0N3>4NENR!=g?n+TFG{aN3Q0qmZDB_^Q~K6@ zsmwInzYDd&9v7=e>BExC^F_C9ge#=uH%SP{7BDW$xh^-k_$v}`b4N*ciVsfAWgJJ# zx|MdYQ>#vPZgJW&IgOLpABi-$N~_9AnjJG>>842Il6BrVK^=YBdIm<g#eBY<JC{>c zylcuGZ-|0>OS~Rp$68VLT;Tm8#!Ia5I!>7oqi^Nu+Fwo<6sX3Huh$Z<a4mZ+Q4ZZ- z_*Q2xTtST1vQ=ibH?%|Q49`MRCp+@dvt92~|0-z1qOfi94g2skiQtp=CUcH`Z%x$G zcRHJjFER}!#V~D60rYXTI2|{x_zBHK@nwBqPgGuFrxv=&ZX0*P<>K>|a<?{K#eE-I zNool-opEpDKFb?!$-ZSva>-{qKOE~mz$5uCw47C1gWck1J$>;Mlo6$+Y27w3`_3y| z%1FY=>-6-R-EW<N(gJq4GEMxJd}jR4yMsOsk4gt-??WR$^IvffK7xOLMJvbaNwC>y z=-yRb??Nc*8lFuDx``e~rIh6B99oa$F<VbA&ZLC#;PO&kGj0%m#y;S`xtA}RRWYrR zUS<TZg(cR+kKfOdH@2#lRM+?OjQ>H5Rekn2+T!WBaF&l4?J;s{g77RqlE6e(yzAhO z&nrb=z&ra-BPBeG|9sh611A_vS*s~&F?(5}Wfy$e1T;1wyFG&)$1^nV#6F9gPyDc0 zPSE&WNSDAGX~D;W*|dfe5^4ofO22^|tx2x&BC7G7<pQZU;+ldJX;Z}Pn(Etwv^j|u z&!Nq7CQammY2e&0ftS=H@4bTg)6z|qk(Twbr{!`kT+UlAQp{R|G(Jbaiy?8O(rd;U zg1DUGLeM?IQr1MwEI&r_rH%D^M!{1=sfBj~iCtk@u?Em{vRa<Zxp>}H<}L%y#nt&; z;-Le=-DG!UiEtF~=UZtVcbkx*<`f=VsV%~(?^Ls{0ZJ-C_)79Q6m)Y^hEnNEuzhwi z)y@g~zq3f$!KchVFBiNX3}yFZIPa<qN6YqiuzUmim!A<zpA%!Bj&ou{y?2c7Y0ekH zVEI$M%=fL-zXGZ_g{G9_zlAlz(`fQ`?S4@EIeHT2WofB5evP2J^dq9Uo#*@WTv9%m zv<=J>>1ib`-V(0-!oN%C3{3oKLipTwZ58z-%J5XCXt_+Okzh`=6Q)(uhBY#KcZEs5 zlNs%?fj={7lgj8&58*(vhF^)Bq>{`WXxbF;tBkThvOg;APtkh#t0}c@Lq=HbG1R96 zheSI;OL$LhKGYLTE37dn{6<`|mhUet8WnGlnDQB)ZMea~gGfj(;6??{!JR*bivAI4 z;I`m#WQRrk`R2{w7M{pgRLTnkqcTeG3%3mZjD)nF^X8Q)e<t&IYVZ%fITGRw-(?xe z(-#@9W=Jld2Y1q%2jdz%Ch4CY-j4FbPj_C3v79Wj05eYL`CR#~I1;4900(sis^ty9 ztob_vn`GO=eFvFK$W3CjhOM!DO*=$di`T*H<c#P4&LHK@1A|H>gA~W-;?+;d{YY|8 z(I<yA5O|biiksiN6pPlt$)+-^7H9NftK31AR)t(8&7b2`9%j1ESS1)(Qct625$?#n zo{-iRo}9tYG+^@_iScwEUgx!AtB9E#Yn_$43C?Al_s=Zp`@4hJe-k`Xba_eroTMnU zZ(d3D8%6A!7hPU5HvC_l=trjO7c~+One+T-FN&ajIya>?!i%|zWLhcW)kX8jDEIf} z!?#vuf6J-3vVGhAil*o^l$OP*iz_>p4*f1pc6r6sq9X%l0j)*xjFfNY?M#C_jtryH zUFD2=WF?TRyH3S?rRKX*hxFPmquOF`%JYOjpMzWS-<|o&FInFu(pT8|fBz^Q6$hT% z675O^GuIc12U)@Fbfv8~tC;`6E%MtC*4%%BVy9`fG(+xKO>CD7>iR<@i8M7SsT0XM zM4LoDp-+>t^MEy8%Jq6(`Rl#3Nu-E{Dt)S^T=x=0W?==rvkjVpN`>pl=+9g7T>BI4 z2Max2%~?$TPR$>-4Sx(a>Py1Xn_TGP8q<snHDyOxYT)Xnsph7+@(|y)W6;|n|As}& zE||lqZchJx89vy#-VZ>2+73R%)H)LqX~<<p@1#4<ovx5ocX38EK#a4<Q+!E8!y*TS zQnY@FtU;WY(n4t{N>N<d`c`a#{*O?zhrB;3H!d;^sbntHJZ+Nm&3}~{iBDGY>mn&W zo%A~gJY9l+K%t{`aCV`|SxBnlX!$BikzMX3nR~R#nOOZ~8>KdpJ~R7ap?fdiGNPgz z6itlkoZ=Sy(TuaP>e;Gm)fKU196v34h+h2@Ex_Z@3ehD+-#Zjd{x)6VspdmvJEhc# zmTBL0e_;Wm_zfk^q=bL6MxKE-VKQMow?Wx_`AOyWZH%;cGAg48%bzSuFqx7S<t?S` z8RVrVu2Xzg-HCWTSqv)-z6qc-br$Kq1isR<#k5ksRy>b04YIeiJQD+wC1i)?twQqV z7v?!pN`-{-7atQr%C9WKIGKrK^^MMtgMV?ZBC)%~mjd;)y`+@670$11dhTvkao8D_ zn?<?kv8)OwL?uew!jzwhpSYh!dn6rj;+kl`+{XrJmTJ`lgh#S|dI{M!V{WLPU>mrL z7MOZOFYNJ0u}bO*WplwH;n#ACWgPxU>_pYLkU}~4ON`yr2)c<Dexjum(qS?7;9^mR za^_JslDDUUUIwRZ(QS;<(v+6+{J*qdrs9+87{c}8GUAsY33;u1NIz($*n*O^5zLU0 zVDp<9l5IvK6-zQ;=pP6FN++wJZJeTGJ(Bl1KS^SVp06q-A<-B1P>MFiw-|f^y1MJZ zm=GF^LnenBX>0tNQJ>60V<kE+FNYP;{;2Nadmg1IyPxcTGIw-_B^g(maB_ZTq_4<H zz1Y-=ga5mb>Nj4=tUr@S$ehu!nd@hSQY<-F6U~`ia5+JdGRrFN4n62vkyMdbmzaGh zO(}XLO_*{CS|b|GiG?WscQ{j2T${ERUs{Q+SbWM@^AulOHh(Fp-sEm#@g@E+pCsXg zZhLXKx@bUaYwSpi(->KX%*q@5d0ORVU}8v-%TUM;B;|C#EOrIfW$NTqC#L7Pl0_D7 zk#fSV@S8LrOs3BcC-Fz=JEyPcXCeLuSJK@CFR@0PJJb>@ca@Sojn1xP=iEab2C<^O z89vI&Br>v>Ksz=eUHDZCciyDwM>vYIb|CfIOsOJDo$bfD$u$hOK_yt_UCFefW0HH1 zZz5mno#+N8D1Y<#G=uw)b|!Q0oG>!MXTft)V}|4?bb4keryz+5CLzBle?{8(m&YvR zkpbNO5y|4u+LQT|26hB@Yid?{NH@><Qzx0NX9Ql>9Q}dviyG3|gY;Ao*1DRVFr+hY zRGvp}q(oV{;JD6>r81=Z0@XPBc1Du=EK;dtAnCnf^)aomRL#y3-x3f>DoU5>^VO8< zXs7E-tfr|JhJ>3`(l5}ypfRGAUP-&5Lpp{9!Hp6h8%h!#OLbG*2)z>7w2E@~`tY>5 zS=!Hifb#*YS`xCb?tIS3Zf9Btz7@=?ij>sAG%>Bs0j3pIl+#ssIjzOF`vt{M-qK<O z-`7@fo-LF?Ir~W%Db*Xs2WsJ^IH3WNVa&fSJUb|(E?l{)Xn1vWkX4Ya7jjj|f<w<r z2zbldYBb?IRys>4t6x;I_bDltr*$c*3cH`%!ZZ2XL{9{qW`eI$j@Kg9L5`@!j&EYD zwTB<*^8?Z)SMpzwC*Nva*A1iW6i>xrRA;3SqF%XwR%BG#34P-|iyFW|PIIc%17(>_ zEbAUkxs};G6|LVm?fD?$_E!y{$owDBUfD@3Paefw${elPfKt*(k1#oC$W8D!32GT~ zs!sN}XW|wI10+5+l#~<Rsf<WH<i?bzzVLq=;d4BCSe2QgbjHUjoW?7yMw*IDH1in! zrIhm)xKkCqUS-c;le?`t3V#dRxs_2FC1nWZlsDiBd3^d@!eWT$uUh{70Qvq|WPtIw zWVt>b3>iY67n9$D<~~ig32Pb3*H-xP7b%E7enOi(e5*utl*MPv<g`5V7*kV9lt8-X zT$Qz)#1T6W{9L7>VKP^BHkMNf;R{W$3oh*6O_%+<Oc_wPANuhGytI`{Ym<%gm<MiW zrA(%Y!^t{=H>hEwV$rlj3eR8HBu6w&qo@NqFO(9;6^N-1AKcl7QI)q>pcCO-3oG=k z5$YSYa(gYIBuOp0on_2xutV=9ywu}LW(o27v-lNpR*of5l#pITPolh`906Swqtc3( z9TZD_tUeLS6-sAuY-vKgkF(xWx{^|>b|ri-S}B2!dz52G*1>vCXOmLVHF7>Rl+@Bv zT+DMq?8&H6YW6cRYQwJcxBt$QQb~PZO4}(i7JNXp8)G$Q9_N1GD7v;@rIM6<_kObP zLvk*KG3ocE{C)BY9`e3a7y}nB*?2z2h_A-3&{I>;I?>W8?-r?Svo8VN%mhv{^F5*P zK4aE;`K9Dly?lYLc%%BU!JJRp!k=;8rT)j0+=~05xOq{2-V?qSY4mORdkOy3;IH`4 z<DSE%zfT8FRaW`h^VcY|`r!F{QH1}JVsz(yfAS+3l#C4?3T^@-HwO<OOa6nJ=0FXE zJFiDRcs%$k-)KA|coqA9oa%a*v;%qeZAJ-W<Sv_+CsXhg=$C9{9RV**NbZVZ(2Q_p z0Y{8h5{%{?;-|qS@WlwNS7|c+Jyu43nZ|ml$|no2aP4_T(Y1_3>6=J02O{fZY=D}T z3;ASP?*r`SA*ZD0ce)4-c%1h%AoEFlmz4VA*knlir0+{5W8-kLUyLhSX@#1u&Ik)_ zr@dfgg!AzF!fR_^9;uY8#if@f1mtB8M0aB-o0`L(r~h0F6<><e*%r;kxa4p}S;V*{ z(!3pqiw-FcFG3E32GIieo5+?id?V>upN><Fz+j$_giedR&kV>k$i$1$GnFr-gCiN5 zxzQ?bOO|FC`9xl;oDq}0Vf8kP_Q~w2NEt#O{*7A-mjf~~KCC9b4BlWq$}E64MA+_& z2-lWhrwc41kd$tUcuZ93q$Ho$>kw29lh%oBD!3$aSxldp$Hf^W%WcIyD?XlD#TLRu z;)KR;f*Q!FTzQ|K*<X0}`E^y{_+*XodqBz9WLWu!z6T_+%1J~UBx@?|v3wCZGH{jG zh!@(OkJMcqKTYM+Y0~cjMKQ4tKJgw<c;7mXCxrAK%JCV|a>KsJ*St~mIoMQ_nLCo0 zcW_I=+%<k31wM_1k}pyT5gML}<$hg~8CR&1Qbk0goXPE|Z=UXh@HZTAe@nQ+5h#9) zTdXu)@CxpXoFDP%ND7phRDwy%2c)5%jQ3l7HZKi_t87VCz)TbB<i}6mv)BZzHbz=^ z<tLnyCk3u-Cit|Z^ePv=%G_Rxu7~*_JgHPAE!pThS7{0aHayO1e2#E*{PDqK_@i(m zl6C0QX<iSLjF&LAjE(qC#u<fucnDlQ&j_AL<_jJPo&rA4Ah}Ep9%GJ81HYz8T68#r zgD2RnzJ$21aql44J*HC2>WmUTkvqTk596V8nI_UXWX2}%RJXAb82Hklgepm=sZ6N< zg0@rF1pO{~KA~_nYVIJTyoI!XHt%kHlZ^FYw5<P$;FJYPEx&LMYTC>>R~Z$Rdbt-| zmN8w9g=Q%heG2^FMKYlEO2>s8rA<i3XQU&F2t+fgh)3zDbjyj+mAlX;YEnr~`2N4q z-pC41MsYE+(-!tU<$0l1hc8m+#>C=qKYfBAnx9%Lv}J*=Nax4!%{&Df^Uowj4(az& zW`xo`XnC3ETpAE12EyHXmC=|N(MUj}fy8i;jX9k+N=_6IO5ih?QHX|Xnq_D|#iVDi z-sweqh%_N4xkIcwi3^CVs5I|GO`t0!O)2lg300hkdmo21;0?2I9;2o+A&gm3?C2p8 ze-|U`aO#%%78;c$X^W3zoCnJew#qH*bj(E)ffM6f71LT`<m>kvqFLfoMOU2{iJGGL zqJ95{E+wu99tqi7HN#|ySL$H9=nO(ml3ki_U7R}m`HtS}N(Ss@HM3FY;Sgx(LS#Kz zBd-bJD&vd%<V_qRcAcy$3TyS#X+xZhdroSR@^M_Hju2l&n-v@1PnFry^^z9YC>+DD zSBK;F9dReFH4gcef5fHJs}!^%-at9>(@(d%TBOy>(30~$q)J3lAyHXV6A=v);V2l+ zNq-y3e!B9V6|PFwCv|5!qR2~;QFt>BN&Mzc;To-bqO@i8w@>Lg?fEvfMe<=06=YCW zugfih+ZB<qP*j>e@+3oY2va6&DwKJrMuhk@#aEKXr>aq<@VPgmvB;p@>?K5Ll0Nvf zpW@TL$ygs&UKizRQuw*ZP_c>NB%Ba>t(+!vyo9eL>9*|QO1dN+h*Crv<+%K^hT;{T z$1T;c3Vq_c5PD8*5cFw0QXaF8mU!K(e3>Lo1>%sjQKg!3#kImq)1*t_r|PSGxkx#Y zWRU*0ffj{SMt#cnl=JxVp@#CV>Ke}x<@rvN3kt1FRadf=I&osyL3@+y1P$w~;x44d znjnK7&}yOMll_yzSI<Q=<F)s22J(e`RKqVPQ+a$Unrp#t__ka!_4gkR@k617ye(Wu zXm~xTiB+9IXe7JvqxC*5xd<eZeUhi%fG5p0)G~^ReT978Fddi^8Re=XKQ&Oy3UM*~ zn=v|baC9|t`7~BoNaZp1f=vsFN3QY)Xz_-9beHKz^ENZK^mp-h*D~^?r9?1#WOQyx zVVawfuFws$uCYe?YsPbxsjG)kH8LLgo7%~^G@KToZPioWz=#<Zr&0Y=VpX8@O7SvI zLmp@d*Tig1KHagfPz~j7U*b=~$-3oL<naP@+cKZzyCSqKgQBYjDy~n@=Dk-Oorq>+ za(q=osvI)n7*bl+`g)G9fjO2n!@#JoSlj9IBvtq6zpv}|<$|)+lpOD}<@{f!_Up3Z zTA({n>G#bU!RM6bz_~-I?nOc$N4dePo58HN^=mVuI2mydPhY@^9+<b<eY*I4^C(~J z`}fVmbm96xeo85DRIWoZ;-2S>(O0||KLC#VJe2A~PW^ta>87D`xtsUsyCVs|j(s5* z7~G*xRJM;w3D0cY7v1le@8yb6BABS$S|ps1+GdvN_c@}th<``--lv3S8fuXlFLz4E zL%GV&6Q4%4s0#_#(-krEJ!v93o{aNhWCEe%>GVR!3#W?GW<P<3i2VF+W<Qdv#Bk40 z=*%Y1rv*-gXF`QNolev7?9xlRM<(TaPaz#gj`Wlyq#4yrZG}@UDFIFSH&Ua9`F}WJ zk)P@a^dhby&vvGPn~$Kj9sM3_rC2T~Yb(*5tp-kMxgeaqo<rrCy4iApm%`YCK_*bV z&X5brT6@{kb6#adruMX`GIXsS;ge|Jb#$YYJ3^16Z(~uGYEMFZVI|>ByiXfGPpo0X z6lf@Sm0?u3^2fR<Wv@@iyX@K0Int}cbWCXix<9a(IV&>BBJ@a$zW;aaO4E*AoknS$ zNY|w{s&$$t$(26s0-ORPoVkLtjwvdYGoe;?y@;!A8nGI0jIG0|(WabFZEg;Qs~u*J z;_fHr1k=)Vz#d^v#vW;YjXlboVoo(jn~vCH%-Pts<`39*<~(!0X>Yn=k29BIkEhOF z=BK7N_UEP__9Sz?xxxIx+=4yX^f&jJUzrE6oy;TH-<ikEGv-Y5EcOrPMQm3y)VylW zHN&tMnK!ZB%zNfTbFul@{Ks5w#+s?rFb#XXnSs5*%r^7Qjb^FYZ2o8hn`<7hm2GA7 zn5|~3o5yXQ%`;EhhPIJ;$~Lx*%`>*CZEF5z540`Jv$nNuZJxJ>+r!NZ_9%O_`MW*F zwl#xod)wZ;XpgtYn<4fzdzyL4cCy!)q4rvPgBfFQvNxOY_Evj`nP~gld(BjPpMA*8 zu><WRW|4i&K4uo%C+(BwzxMBTuvub<*db=Qec8Tj3T(a|ZdTa0>^o+Seb2sU*4q#4 zhh~HQ$bMut*-z}JX0sh*$Cxd4oSkg8+9}wS{TiENXV{sxoSls=Z|7nw*!kFscB$Q9 zE7?tUv)$Kjv0H6j$3WZqu7ay!8@OifV0)nJ?7G-C?re9CJ=}G5UG0(XB6pEJ%3bWb z+oRp3?oxY<yTbLbZQYgbO55ID<$Bv=T_4xS9`CMq*V~`E8{JLz1b2(O#s19Q=K9+X z?k@Kid$Jqg2G~>F{qBBys(Z){w5Pe3+{^Y1n$Rc<|0)w#6<f|!<5@2FcOqCQ*mg8{ zavs=s0rm{Wy&L#(1@=tSlhOXY;?r4*PiHgYH<)w4rh#D0ql`yi#^W8^#s14Kw2vz+ z{tXni*e~gSEj!jVbxrMb*TS{7Gu*-MP&-FkKcChQu#0K;19k=Ne#oxUcCTipq})qj zlrh)g#N-lcgfH^nHMHm&PFp{28k&R6LCl}p%$Nh2TlH!8MUouT6yAOsen)dU{jv1s zci1!ONoNgp0TNxzS<Iw!=tT}#Uk;o<kJHo@WjEX$f;%5rTnOHGH<vK8`T&Ps<|-i3 z2iq5WzRs+h@K0eTooXIsE>$9*=-O_~`npOt;x41*;>YXX1Gp1&h4+w8PfOS{X#E+X zmDY<r9oHpo4I!ZeV$Wr)>(Z9kcBl2-Lo00;TPtk4wBPr^r+<{bJ{s07R7ULS3cIKU zoq(a(s3no_VcHqEdK<-`k#6N#z*!(2*>ixo*r?^+@5&g6JvX%HF&gKY-%^Ti;f3@@ z?8Q1FQNM)diIp*l`WX2#R${Nl*3%S{s(aY;zKot&!Der7GTz1zl#ozKv5%^Kj4^(U z5^jbvAH^KF6`FS&^X7JQ2TtsrxMQHt?Vz>o&7VjivA3GLxZcH6d48B_!}V~DxeMxl z1mpiObY5~xy4xxB4yD-rHSSKr4-@K7U3XBHlzK0e{5W&BxySt3{DpaZuNi<7d!M?W zGov3M{8v&)>^<f|t`8C;&rdeLG!J1V=0Ui_uLv7v^!?^HJby5J_Gikx8!P49hd+?? z4^Z0xN|SQ$A^p#Y`zh`|c+Uy=$C6v(2axW;5U<6PdE1jYa0OK4+O)fd_{hlID9T*I z{ENoak7#clsiM-xagT?={h)BIjI8+@m?yA5d~>DoR#q36n;z=+M_#DLePwwg1JgvW zrM(;tzIF)d>i&#vM0ZZq(D{s^fxgzqT}a8lWrlSEBTiOM@Cz`a4%VB~wVbxlk+y2R zUo*V(@e-E@eQgF_q?q+N(AGPVM!HhOnYh}}=7wAwLf7{tEbrUOcYi8l8{%r?s?g7U znETbBn0&7i3@}g(WA+ELlBO}VcRyO*n8=6I4}|g?D01B}rZ0Vu?OEy8`#wb1TEu&6 z@SBA;hu&16O|d<JRz_CZF7}t&_9(U?ZTGf1d8>zYN2N#gMG*AynXzr*XUUl3(|1uR z(Fo)LYi~v95F54J`yzpg%?Yi@qU9*<_hFBsHcS7aa6`t$+X~_MMEw+B#wxPErr+Mi zdHsDA#?V`lIK)OU@qRVNR%~^(H5lU>aF7F`nPRWRwSe17_$a-$46m)={k`G)?cx6N zw7XvK;CeN*L{eRblRT~TeXJu0wTJE-^(8E}HLj(mmglXhOJWbA%*&yt?XcHDmk)tI zNcd>I9vWV6gnAze4Q~epm!~)B^;WLJ3l4=UA4gd79E&}Unvc}b07CwmFR7iDBjF=) zZKzF3JB(6~!SBiSTHLYF${zSvzyl=ySkm1b;<b1(Z|gG$>LT+rPrF7cFNsWNm>a)K zq>qES%)i1my+0Wz%m_7s`#cEs?+<;y7j7kd;V0N1zG(ml5PLg3tUMBdxO<R$3=+qs zNF!o8>b10&Uf}Bu%x>OFw4-wyo1Bw=dCHllUbh?i^fbS`v`_aQW<t*kujysBG50X6 z&PDc<bzpsF=^>2eNl>ZINEw%by*EN72Ow!wH?G6Uof@0Azw6YYu}HL<&obv~(Rx`e z9tX!h4eEFS*xCpDlU3cLnod@jm7xa>X;~Xa<#;GlN2IR{!5@)Y{sjGeEKHeVe#&aJ z1vqyMwEAS^y|byW2lMC_M)m<@?6}=I%-}lE-<II#32=uqpvT?7(tgMycY_a4@HF-F zpPkv*{Pfh0r!+Q~b?SI(W05Mf_2roT`+|wBkabQ((&+@eFJ_is%bXF(<jJs2xln}t z;7YBT6K&y3zX5l<GRJ!{A8%u3K4hK>Q<eu#b>UVAG1uF{m3|9vITt>06?67>aPwjF zbeOUNP_M_#IG8!v9zJvmwC_Adyf<Ta2RJ;C74Y9Kys+mrsS#zpcDt}|_td*(y<Xhw zsw-2Y%X+<}&xPGm|0(OW=jE4Pm|9%sYp;G+rV4tN^?Fseo~gAx<+@p}IYzI!daXiX zeR67+^?DT<a`r3pwa>-9avEJ##%ph>t65pEeJ}5INlxoBU;7^3F6XemWxgJ9SWf%C zeam?5cTwM*llqqV+PiPgZ~FEt+w~fO;pt_)-q^j*RXLr@dWDucoX}sZ{7!Ui@@+dW zJ&J5m16o@PdRQCkv@euJQXZgJIdx@`gybqaCN?ZfC>|OJy;jg`J-v!7X`#PztxOIJ zE##u1#)Nz;Wc_bdPhp|)5^e$|KFwb5zD(6j)vS0?#rIP!Q@=^|Ox=%ttz1EFh1_Pj z9da+q?Vmd&_siV%<r|mpRQ~4jL&`6zP_x2W75Z0rP4ZNnRH;*?+bX?UX@*pZt3YcX zGQV_xare51(WgA-9(9jHxvxhXbf5dXhVFNNbq}~dxd+|f+&%7gH`qOap5<xxXV>37 zf)4Ch^esctWz9ghHPbFY&o#}?M|1R*oo6T8spz*B+BtT*o#pOuccQJi+YNM2x~JST z?pgP|8{}Sa|8Ot5A?`ePxx2>wkyeQmTm?#B9oRGm&ds3qKZV}QTC@{1S2QZ!puCsE zH?D+I_tkaa4RD)B(9gBAoo!dq;n_#g;XQ!{?<xDVea1d-2cf|mivI2u`>K7-j<(C} za$A7b$hg|Bj@#Gm=jyrou7PXl8oB-5x$ZL8*WH>PLu=cD9UW-F1@MuZ;SG<Qf0#GS z2WFi43JvBwv)B}vwdnnf&9(d3nzoLuXB*ij=qOv;L+uf!JY`ZM<sRbNx~7czb?EB) zx%1KOwc+k+*TY@wE^y7=Vchj`J>7NgLU*7$+~m40=<}{e*Vn=w!QEM|m%G7rb1mJG z+?|b<??yC$t=v)Eo#T4Dn_PF-+8xc^AKcaMW_O7@$o+)7u4n>pK}&eBJH|NbWPL?l zwYeS+W;@E>m+O&WxTCDPT#tt5Ir7%$dJK4*a;(nWp^Q=<t~Ra?ZeQGfxVpG{xcayT z;8rcyj%!LK4nr>wF_l~!O30&sGV3ZawlYT?F;SVKb(2+A$M8u#tw~Cap7hh_Z8S!3 zSY{rIQXHe7j&(UxsqI`i{?)*;3ot`#3Ou?dQj8!)U(uHW>nnjN+EU=vCy`<xDQ;zq zu4OE)2j*x`f#)rW6n#i>8Dn?>V|5W@f+iMtU#dN<jZD-DIcOkwGQq60RcuS!0qnfS z4zMrSk@gE_#%h=2@|?h-a!$*_*3mzl7^Nn55$SRZTjC`}rPP9KYez#?Mkh)bM5@u* z)(+DA6;p#Ut?f_l{)ya|n2M>pGOd+$b;?voU6!==SLFOvBIm)RI3;QA!J4mp>af^a z*10$_+F!HYluy-(E%)*y*KLU`bI;=99HV)<AhJe!o-*a!7v7pzNc~D8^`kr+;jKu& zq|I^9i8Z&8^0q|Eo;*QI?gl`2Bwb20>PW>FC&st;m&9M<E`f?kjB{rqSz272q8YI# zf%)>>GS74_sV{HU3GUZa>=E47GF?qz(wTU9E;A?n#BMas-fxd9^4ScNvVE|Pi+uX7 z$+2gumAO;6<iDA6?4_uMwiT7)W|Iq*3$1y-$TVlc#R?Mk=^|4dK~F!;u-6uut`eO2 zxh#8HQ7O$FXv?*QtUxz}vFn_Gq(I!VUnP(=tc_p^?6h=-F!h52M4Vkl!?H^9w9iwd z=G+ON2Zqp*zT}qii71<8RVHOe<qC~z1{afZWXv+3909G6`aNH+2VFS?n%Nu<&;m-| z3W|P^J6LM+^fZz7P?HBoY2yxahr1)(k?tsWwEKxWrihrf<cBUpokMz@D1{oKwULZd z7fN2AbhV^LrP{t1>DCpSR_J^(ZD-RmQ^N4l1$#CnNERha3$(grmXzQngc7BLk~w|? z5(mS%M5@`YOhcYpDsOC8+DMl!*z{ZOtR1N9Vu7b+U7dr(a}w+Evv|G_T(uFH(%Ky6 zs)8-QHmA56>UVS%8INB(*@HX9RpZ(b>L9yN7V0Epr6GG8bm4C9a!nQXC7m5^Kj8X~ zq@uJg_HGSFxR!@(($pR5+9jm0^1wjklt>QB2{BV-WWjIY|2bwRVd2L)wpAE%Xbd_M z6P4Y-RAw#}#bpJPYYHYNQa3ZzT&hTpi&QG|C~2z!iKH|hVXDZ9A|V>rAI*Z81>V`l z<{+DI+PkkzW4E7anVMu8q#XK(#iqSI$h5GnO&z<;?2l_^!Fu~w)6VW|TDT^rrn}A@ zX?sHtjyJ8`DW)mBzot9R?2lyA)a`GY5Z9V;3(7g%9%>G>Gfh3$&>V+f-<7AHreOa! z%%B??sa2-A`vSi$t`Y8AbD&#mI$9uxJecQ3;I}XxQ`g}3!?h$mduXX&;s2Fq$5Lin zQ`?O*C%f?`mHIbrc`MlL@}U)1Q1>su3EGU`!2W^urbKrc-0Uu=otK*q$Zg^`aUDz( z`!sna+{JXTRZSaPJD3Y~k#L99Eu<yhoo)`$e57N4yo3Fma$h#p>GN@}y|Jmr@Xll4 zckRKg)uxp_ljoJqZ}IEfbI?lxe_NYAo(e2aF^9SdrmjB!810V<PDr&d&Dm>j0**Hn zn9Du!zqi*?UpLbBgc_OPCe|eN>;Y(AOz;=82CjAs?W$^;q}rQusW!O#O>G-69s=hg zT<V{}LWRA+J>hJdV7|Z}e+h1in{Mhva2MDoo!x9&rw(N-1@=iNu>U>f{swq?IC~f; z!l|3UJAplLPdZyQ7$)$>{~9;Lb@Jn(a2MDoU1xAW;GT5AUB^fKWWNQ^l1^}rz9svf z4hs$@T&kAY*W;wX#GC?Lmg85(pDy=FJaw%o7ks5}-XYZ}`~-JHmvc@g92KVpmm?=Q zo$aLGg6EM-!aFN0b0Fz-F36Zfj(H(-L)|^JtC`|-JVr7uNf(V<)>!GdMb9F?3pCfy zpY#|qj@xkmiRM&tUiq<xHVkCU#hpi6WS%8lYIN4P0}Gvd_nJfSkJULS^DyZ~n0;kl zMlJ(KlK4Vc=4{f*+>M;hVVTD`cOp0|ICTqSCA6y|uq$sGGA12Ud@sZO%v6^#R+{yV z$rG9-c%$RHj4*U7oO89^B%a@4nhC9f?sjzlXAVkDAZ<W+rm3B}6aP}&I#V}?^GWWW zV5#E7I_N`08>gC%Ie8{8r#AU=$Ws+p8`>k|{C}Q?rkVr06}0iZV63){wrcxmyR={0 z0Uj@n=Cx}H%^hlTH7(C__N8Cat^-KB0J=KE9HevlJaf3x##b1t`zRmWNVN^t*}2fd z%ZO`%yAXak9RFgR;O{y3A<bp1YATGkfNMf8@8a2!rfKSD(Ar*ve?{Jv;KOFZhnf9S zN8>l7{4c2MFlb>!pZ`Gm6HTquaXjx5ED@)4<9x>HcwC5!w67^^`5LZ%Fh`xVQSg~| zTKXVP+Y{0k&MD<-en|&Dq)rXixf2LKh&z?`UO;(wLVKkAZ-O=OhvV#LlqdKkZDnUl z;Uu_rx@l_Hnd4JKc_w^>It5nlWRZ3QxO32neEYi|!1O|RabsZhTWJ5)@Z1jY0orM6 znMQU$cy{D(;(i<V@MdR}KcDEz5oRBu+;#9+_(tj=(>Ui;#%*77gz#U-?kzmrpcV2a z{7y>>9+k?2X5cs<q%P+GQ&U{_J-nqRWwRO$UW(ct`fuPz?l{83ahwX!uW0@pe^?mz zdzBwLvzA(ioKTa#wqc%bGYyd4n%M>T&EYBgK%bfd4{@hy+r@8&OW|7L4#E8dcMwjV zH4>LP1Nfa`&Q6_-e=>M`IB7@1r`S<+ZxEhf&cz+<#*lxE>5^*8+;0uf4)8nTj=}A3 z%H^Dd|D>s#x)*mV^XgvQ)23SL7vS10xSzs*zd+0RM$iHpR1LaS%l;1k9O8Sxr+>%& zpBN(?{JC7jyLWQhn#HxjJ_>%~+!^5Db@=6>X|2p*wkt62YK{gco8gYOhnUv5I`%Z^ z$7$eQSNhNudRvowaV?RHRwKLYZ;l7w+NfN&lIJT8CqaS-aEj0Pe+k1U;752NzTkzV X6CC+H?h)MGxSzY#%sHX2$Wi|fuZ6wO diff --git a/android/app/src/main/assets/fonts/EuclidCircularB-SemiboldItalic.otf b/android/app/src/main/assets/fonts/EuclidCircularB-SemiboldItalic.otf deleted file mode 100644 index 85bd6210c685d4623e50778ecd75c09328e1886c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 121384 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 XEW#Fo>_rpaS?Y>{kt$z124DUkE7Iqb diff --git a/android/app/src/main/assets/fonts/MMPoly-Regular.otf b/android/app/src/main/assets/fonts/MMPoly-Regular.otf new file mode 100755 index 0000000000000000000000000000000000000000..2525509935cc7da3036ba8addf7b1f0317fe32fe GIT binary patch literal 136028 zcmaIf2V7I<|Mu|=k^o^Z2Lu@^LskY$MP)k?6$eg+h$usm;THGad)H2Dmo0W!+iLsk z9=5f6S=(xBTf1w6g7vwR>w<HF{Xab~4WBzC@9#O}B!pHwvY=q3La%62s1*sBIXNM| z3oS;4Lc3U@d~s85R(8&t=bryqp?uw0p-|4q%^x}D)8kLRu28-)N1^EU?8q_krfHR- z--+u&6beOAX;tx@6&FhHQYh4Z;#bbhvf}9xd%JcK*F7hGCCwBIE<L<z#m9e(Up;45 z)y=;$I{hn!^1B#?A|auwc>WwWw|sGxva9$_TU}gLX6TZ8Rdkd1wPQ}ryt><8C`{t2 z$>RDDh0^w^3dI9IPdzcsv;TF4S}i_Tq4?&VA3x*eH@Aas->-RH{h?^BLS<VO|A^Z- zrQBYpP-wms*DEz*k8nl%?{01iMZUuJyTVC5QMpZA@2uLOnjm@@E|pUiCglx<LglVk zt5qszrSdL?;xTdkQ1Q$DPeyK5p5mM$B+Lhvm|>!zciOI0pHrU`7a{hE+!TAn(N{XT z2qnaJrTt@-!b223R*QX(<Ht^lU_}u>)+o9wmhxk*B1o~1A3G}o6sP#Hi|k{)qNn0b zuDi)T_7c{wT=%xSBNQWqp0B7;R4NvTkH#sA6}5^A@q39_DN~FVzseQ$;$z#oQB0R$ z-})&s6uF8lMV_LcxQ7uP_Ym9Z7M<_k@&3k%d#_c@6JCv?TIkaK|NriDw3xKm{`nbV zvU0_AaWB=1M*9{g?hn_N$gYc1lnSBBKB=^~;!9xvx~RpapY5pFFP+rlaVPd`kU}Gl zP=xpzEELE79>x8NhZK*Cqy3EHjN+o=YsEjx1ZA>vuyU#LnDV45Q1zPXEA<ie3&E>{ zj|ATc@eAo55*!j1(mSMY$ipFLL&L&+Zr>L78={C5voBKIrMORVT=A&5zo!+?D$a`g zyQHuxP0Cc|P~~09$5dTauc|(^-(Qoszq>+wL%N0p+3znk<RR()Zhw9I?Cn=>-+TL> z+jrl->-Le`hi)Idz3=wb+w+Ab`{&m6TUT!Nx}{MlzKv2SE`59H>q{3eeR1j2ORruU zcPZ=ZZ!i8O_C8N`gU%mjh)G{ie5uS*<|qfZU#ZLykMsZQR!W7+O)rkBlQ@oAH&^l1 znWLC%|7zEXuS|oYSutO13&gfiY>ULUSZqtgwp47(#MUIX<zibQwv}RACAQUKTO+o$ zVp}J+^<vu~wvA%jB(}|B+ak8DV%w(JF18(F+bOnPV%sgYJ!0D{wtZsTFSY|>J1Dk8 zVmmChBVs!$w!6f3Ol)_H?H;k+E4KT@cE8vj5ZiIFJt(#lVtYtz4~y*)u{|ob$HaD0 zY>$iW39&VcqjyU2q}ZMk+tXruMr^0W_N>@m7TYUgdsS?&i|q}uy(zZ0#P+t>-Vxh* zvArv{_r&(T*e;0e1F?N5wvWX2vDiKl+oxjtOl+Tv?F+GeDYmb~cG3QrwLQu%DZUZg zw_^KFY?sA$MQq=T?FX@472A(u`$=p+i|v}&ei7TRV*5>Ozl-e;vHdBwzr^;p{TbeN z28n-ee`<TqzVjcYcyd)Jl}gVMBl2r17sQS(E3dCCuC*;C1-b7~1i9~21-b812f6Qd z8tSHQoo@`%ynb`0#-LFARpM#;z1(ZRL7_Z&!p9aB-fo^M@pyGsc#7vdgLr=HBivMR z#^#F0@L0uUakkGAkG1*YF|<ZJ9(IYZ?%m=mby6Jn7sPRXTO7B~#WA=l_U9kPEv1uE zuk=xNQ-&xblyS;LWq)O+I15K9Cn%>WXDF+bb;?D`70UI>ZOXmMBg*@f4=bCM&njP3 zzOH;%`LXgV<z?m1%0HDiR0@?&<)QLd1*yVS(JG@VMKw^BqZ*+qP)$;ms47%*RE?^o zs@1AZs-3C>s$;6-s>f7Msh(H8ta?jzLG_vHlIjQ5ud3^+Hnm#qs`gfQRrgT$R>!I> z>VE1B^$>Nwdc1n7x=dZEo~K@@UanrJ-m2cCKCHf1{gC<z^=a{1^P2j+`Xlw1>hIJ) zssB*7sBb%Io!p)LoC2M~oT8i(oRXaeIAuExcN*g~(W%&Jrc;emgVPeHRZbh7b~x>K zy36SSr$?Qhbb8L|e@<^Yz3=p?)7MVlJN@GHw^OS|rE$@CX}V~FHN7-38ndRaCS5aF zGg327Get99Gh0)uS)ggstkrDM?A9F8+@m?6d0g|1=B(yb%{!V8HD74H)%>XWU1Qb! ztJP@Tw7%Nz+E8tzHeQ>gP19y+hiOM^3$;bsa&5J?Ub|SkQoBLBUAs?vRC~Yn5$!4M z8SP8jH?;3*Kha*)UeR9D{-wRCQ|g>`p1J^?LDy4f)D6%L(@oHo>1uV$benYhb@%I< zb?0>N=swr|p!?fd>FnVg=p5;s=$zp^(s{CTg>!@RO6P6Phn-J2KkfXo^ZU*hoqu+2 zanZQ=xb$#|aY=Q_aT()M<Wl9b&}FU5E|+62kGh<3dEMnBmv3Eub7^yRaSd<{cTI3j za~<kB-gUa`T-T+p8(sIg-sk#+>si;gT|aaE-t{lNLhr8cu8+`L^y&IM{UrTNeZ78# zeyjeF{z3gy`v2+Q(|@J^NpE#?a`SczcI)Go;+E|;+HIO!rP~6xHEuiI?s9v??OC_i z+&*;s#_d<PR(EH2fA=u=c=!J9L)^!?m%7h!U*f*OeXsky?vJ~_;Qp5Tr|wtW|8&3Y z;pWlJqqm3IW01!PkBJ`T9(5keJ+^op^f>PEq{mAh?|OXc@uSB-o@!4oPlIQ)XR>FO z=P1vqp0hpYd#?7};d#{aVb9Z^uX=vqdCBt^&zoL4FF&tPuQ;!MUW2{HdX;$9crEr? z@3qJ49<P&L&wIV;^@-PIuRpy0_11fL_3q_u@*e0t+`G_whW9-0ChyJO2fQEfKIQ$Q z_j&Ixysvs+_fh$H`ULqz`6T&d`sDje@tNh*=(EaayU!7yhkTy#dBx{~&(}WJd~Wz^ zeSLjHd}Dq4`sVr;_!j$C`!4cb=eyhYZr{gzpYwgg_haAhe1G@7<>%_x#jmHI(Qkm? zFuw_YWq!4O%ltO^?f1Liui5XM-#dPv`~Bc|)8E}c#NX_n<6r1s>A%c>hyOAEr~KdY zzvO>Cz%`&pfF)o^z|?@*0rLY^2kZzq8t`zy>3~-QJ_xuJ@K+aYmu_8Rx(w_xx=UG? z`CT@4+1KU1E>Cnh+vV*ppLO}Z%U@j;UERBebTxO)=~~#evg@+0JG$Q2^_i}(biL5^ z>#o<j-sq<7=G!f#TWq(!-9~gP>Nc<2nr{2MJ>2bVw+r2_bo;a0?e1>fyLIo~-Q0ap z_YvJEb}#R~u>0ojcXe;>{%ZHnx?k&lJJ2UEG%zV}SYT0Lec*<`qk*Ra-w3=I_;X-O zkS53{s7FvtP-;+4(3qg2psJvSL2H9{1sw}|H0Vsw>p>p{T@7kAco;$r7DKLKqM^#r zWY}ytV0gfA%J8D$yx|MORm1gQRj_|>WN^RWyx`*Cy5P0J2ZA37em3~E;17ep3H~*> zwTE*L{~lpI;(KKD7~5lJk3~JU^f=bzRFBtseBR@S9)E`@Lp(wPLn1>GLoz}}hD;8r z30V=cJLGuCnUM1#--P@fstffC4GoP8?H4*YbZlrzXiezi(Dk8*LLUo#DfFYztD&u7 z9$}$jmaz1&ys$}OGsEh`R)lR0I~4X{*i&I|gnb$ITevFRKRhzLUwB@4ad>t3qVRR$ zyTk7ee=PjD@HfIg4*xFv_wZXiU3+%v*|Vpy=YXEWdQRv$yXVrL+k4*I^XZ;%_WY{n z@4eK$ym}dWMfXbXmDOuhuc^Ie_nO~pb+3KB9_sZ%ulIXh?q%)m+S|}Oq4&Vv1-&bJ zFYUdv_wnA(_rB2khu&=wE)f9{;SmWDX%Rys#z#z#m>aP)Vq?U<i2EX*h&UVZcEo29 z-$(ovsfcus>>e2rX^Bja%!`~9IWuxm<d(=|k*6YGi~KzDmncP)Z&XNBY*gQ<+^B-6 z;;8DVMN#Xbc1InLIumt1>YJ#)qjk~Uqhq57MURM{7+oG+7ri`sOZ36$<Izt>zZCsZ z^wsFrJ|2BS`&jzq_L<nHs?WkcYy0f#bF9y!ea`fGz0XH|zU}i{j4H-ICNid9OkPZJ zOkK>{m;*5n#GHzGG3I>C7cp03uE(lkJ!6Anqhga{Gh_2(r^L>RZH!$NyFK>a*r#LP zjQuM1_c(Q2KwMN@|F|J><Kjx==EN<D+Yq-m?%ue^<6ek+EAG>{D{+6u-HvyQ?-t)X z-W;D3Ul?B*zbt-7{C)Ay#J?4PG5+WHmIO_LPePA`n1s}XoP;q6MG5l~)+FptcsSu~ z!i9t@2`xswv8%C{(PSKG9BwQ$&M?k1HW@b?4;UXXo-)2@Ja7EMc-45_q%wJ$f=p4S zBvYm--!#QE%hYIEW!i2!VtUB*jOi8A1=H82Yo;4!t=ZQcVvaTUHRqZO%*Ezv^CI&) z^KSFq=Euy>ncpyfZ2r#tyZM&I)zZb%(_*v?une<Iu#{P9Ez2yMEc-3@TbeEBEbmx8 zxBOuFJ5ibFkr<d5nV6WEkvKAOa$-edL*mNBZHb2yPb5B__;TX=i5C-pPHaiiB>5!u zNQy~HP0C3clT?&cm9#KvZPKo!V@Z!Dok@B<>7%4?lYUETOLj>PNDfa<NKQ*0nmj&v zdh*=lrO6wU_a)z#{6zBE<hPSQOa4CjuM|a!drJ3|h!jgodP-i(q?DN{^(iY-wx%3P zc`)Uvl>eo?m-1E0Pbt<^r&RCM;M6{;DXH11qf@7)R;DgUU6Z;q^{&)MQlCwIE%n3H zZ&H6vZSCva*S~LA-}t`$`wr<lu5W4IIenM(-OzV$-+TK$-uH#RZ}t7O@0GrP_PyQD ztzWl(z5AK_4eB?d-^709{p$KH@3*Dj!G6d4J=yQ2e((1Cvfq#W{^_so@73SXKe~T% z|E&I_`cLgYyZ`+DtNZWhf3*L@{ZIFQwf_hGFZKVW|IIXAnqOLIT3lMcw83d((@N56 z(iW$!Pur7rPuj_}=hNOy`y}mh+8=5E4$u$iI-u78(|~~kh7TwlFk`^H0Zjuo4>&O3 zfdQumyg1<efG-AI9dLc1YM|%9pn*{XlLlrE%pW*q;H-g-16K{)KJduEhXy_~@RflV z27W#8+Q1uww1a#Hg$#-v)OS$spn^fggQ^ED8nkZE?m>4CdTh{hgWeeQ@u2Sp{XXbc zx@&ru^q%R)^a1I^(kG;srPrn}OW%~fKmGpn=Ja#v@1%d8{zLlT8OjWgjKGY@jKqwL zjFB0WGb%C~GFE16%Q&2IBID_dmowhaxR~*CMoXq9(<ie>W=v*kW=`gq%%aSy%!Qe2 zGk0Yk%X~EROy=vEA7y@<`CDdNmP=MZR(MuIR$A83tnpdXv*u<k&Dxl?FYCUnC$i3F zy`A-0*7sR|Wh=7Xv%6<UWLvV+v-7eiWzWp6&t8$eHTzKZgV|4I|1bN!?60za%C_b> z<#^`==k&=*$;r+coii<`GG{@~nw*_EcjY{i^K8y*IUnYHlk;m%Yp!#ye{NWAd~W~T zA-UsnOLOPsF3H`HyEpgV+{bfY$bBpK)7&e$f9BpE>^8XD;NFAHg9i;BF?izO^1*e3 zmk-`D_~78<gP$Dy(%^Roe>wQa!T$_V5Ahme7!o}sc}UifQA4H<nLT9wkkvzW3^_XF z;UTAoygKBAA(w{yGUVn^-B7=wp+n<__8U5Q=-8npLu-aE9=d+$o}u>)JvsFGp>GcT zWa#Cge+>P1n0{E-VZDZ#h7BAxd|2VI8N=ocYZ|tB*nwdW3_CUK#bM`%eKG9nu<OHB z!##%w4UZb0G(2;7{_rWoXAN&0zH0dP;YWr)H2j(2uMEF1{OjS@hTj;W9pO77WJK(U zz9Vu+6pSbyQ9WYOh;<`&kGOlpV<Vm$@y3XcM|?Np_Yt@9T=Tl*^~^Ko4aggoHzBVq zuQqR4-ln|$dH3fv=bg)YC-3vTAM*YlsT}DsGH_(%$i$HuBS(&$JhEbB!^o8*w~ahJ z^2EreN4`Ar{gD?({yefJUz6{X-y=UJKQ%ume@uQ+epUX${I&VJ@{i>|ntvw$_56?W zzs>(GzipJusDM%7qY_4?jT$;?{HW=p=8jrAYU8MVqwX8^#Hh2Q-X8VYsP9MpHCi#+ zeRTKH5u+`m(?{oxo-}&q==#wsMsFQ`X!L`lpBnwY(eI7^YV=Q|tz(?Vc#jDl(`QV| znCvm5$4nbjIcC9_HDh*;xogZLW1b!J+L#Z=d^6_PF|7s81^xwL1@Q&_3x*VoD=00P zQ?R69L&4sHdkY>fc%k5}f=>&s6#Q9md#u~oZex3oHIE%McEs3;W6Q_Zja@!=%h-cs zkB@zF>`P<c9sA|jAIJVPPCd?RoMBw_xa4tJ<3^2}I&Sv3`QuiP+cECwxQEA`9{1|F z55`>@_sh7O<8|Zx#)poN8{cpI;PGR}myE9&zj*xm@q5PKGydfG=f}S}{*&>S$Nw?@ z-wFB&T_^OKV45&+!te=&6J|`9H=$|5<_QNTJTT$Zgcm2ApYX+ms}rslstP>|g9@Vx zlL|8n^9!dG&MIsyTvfQe@JQi9h0heeQh1^8>%wb=HzsN)`c4d)7(21=#N3Gm6N@KS zPh2!{-NfA!@1FSB#OEfyG4bPx-%b2|;;l)ple$dmImtL_z@%Z5CQK@uR6A+eq)n6d zPr83n^Q3c=-kJ3Iq#q{zJy|)~V{+i+$jOP5GbWFmJb7}(<c7&BCvTg4c=CzKPfvb% z^81r7PX2jv%M{HNpD8`2#7s$@k~3w@l%gqBQx;BHJ7w3DV^bcTa%RfwQ$CvV?Udi9 zv`uxH8Zb3{YQogCsY9oZpE`Z&+^I{aZk)Pr>U~q6n0j{V+fzTA`u)_urYWYmPwPG{ zVwz=I`n0@hlcvp_RzGdUw5`()O?z<KQ`7!8?Y(JVP5Wt@waBT+yC}G*Pf<!ycG2jf zX+@Pq3yRhh?JT;h=#ipli(V`Gu;`njUyE9cos0d8!;0gJ`xg%>9#>piJg0a`@rL5P z#rGCJUi?DwTg9IiUn%~x_;!g~Nw<>TCFYVrB_m2EmXw#&l`JpWQgX25c*&C`FO|Go z@@2`7CI6JFOT9`BrO~CyrCFt;N~f02E}dVxx^zeB(b9)YPnW)0`a$WX(qBq%PS;KM zn;tqnZhF7zgQt(3UNXIA`r_&9r|+45&-9bipP&Bb^iQT=p8m)5f6Me`UCVlvnaT#1 z4KFJ!n^88etf_2s*@3bL%1)KNSa!bbi?XX_*Jr3^c+Lo#5j7)eM&^wC8B=D=n$b98 z)r{>kj?8#y#xpZsnQ>vp*E6ooxKXYx_bm@8k1g+8o?Bi}UR+*XzNma%`R?+&%O5L$ zuKbPikITO+|GoUyOxKxRX7-$EoH=0Tu$dEPmd&i4xoqa9nfqtnKeKt}xtZ_G{CwsQ zGykqoR(MndRzy}LR%BF+te9L;QPEJbvSM4s;ffO#PglHL@qWd{ik~Z5W@%>m%<3^K zW>&vh`LoJqEu6J=*1fY%&pJQryIC!>HM4zY_m~|sJ9T!>>@l;8W>?K#JbU}>`)8k- z{od>=vu{><R`#q+t<0$$Q(075Rk^ToZRM`YW0j9qo~eAj@}tUcD}SqOt8%Fds0y!2 zs7k9ES~b3Edez*jrBxfN_Ep_i^+eU#s<*2?tNOm`uWCiLdv(|9sOrAe!>T7&S5+^q z-dcTE_2bnqRKHdIY4w%rKdW!oxYcy4>0M*48B{Z(W@1fwO<m3Mnk_X4YmV1ES@TlO zyER|d{8;nP9Q7QpIfgmWbCTy|%^5Xk>YUkg=FeF@XUCkQa~_^^dd{nJKA3Z9&M$Lr z&ehHJn;SYeZf?K1gXfN&TQaw1?&7)Y=kA$%&)k!9pP&2Y+)w6Sp8Ln#e{1!%U2A*Q znra8u4zDe&ol!flwyAb=?Sa|{YERX^SbM(qi`uKT*XOC`dCm)(7d0<wUgo^~c~j=i zn%6jQ)x7QVj?8;#-ZS%FnRj8{*YmE;yHTgD^Q{Z1i>>Qhms?j*S6o+Jx2SGi-R`=( z>mI9nuI`PxkL$jx`@QZ~y=#4!`kwX1`T_OB>L=8f)z{W9tKU?=zyALE=K6E>@6>-@ z|3m%X4ax?OhQNl%hQx-9hLH`E8!8$a8df%JYdG9+qT%U=mmA)1xY+P>LrbHk(WkLT zV@zXeV@~6k#-hfm#)XY*8+SDxYkaivOylc~A2oj4_*-M!e3$tF^TX#S%uky?bpH7H z)925fzjXe_`TOSIH~)$GXXn2?|Fiku&;LvOh|_&R_XQCPEDO>X<Sm%AVCI7Q1uGV8 zU2tf@gA1No@V^D`E%<7|PYbLIofdj83|`o0Vameng`*cvTUfbp!NN5QcP_kZ;Uf#5 zUHIC<4;Oy3@YjW{i<}qvFA7@}zo`GBA&bT>DqS>Z(UL_Q7VTYh@1n;Sy|C!5MV~IZ zvgpr6w->uD?zXu1V)Nobi$^S;xVU_A-Qwkow=6!m`1s-{7r(Ul-Nj!n{&Dd?OVmre zmKc^qFG*gKwPe(isY_-rnZIQ9k{wHqE_ry#=_Ri&`C!SVCBH1Wxm35*Z)xb#xTXD; z4qiHTY01)>rHhxYU%F@MJxfn6eSYbiOFvn9dFdZZ|6QhE)^%C0Wu|2VmknQ5xNOF< zdCQuXZC-X@*#pZ?Eqig<`DI@$ySnUpld8$HDX1x`DXA&5DZgn-)2yb(rd3Vbn~pR+ z)bvc#D@_-gzHYkKbYr=8x$p9j<+02AF3(+Fu)KJA_3}l_*Dc?@{O;wCEq`wL8_Pdl z{@wE5m)~09x}wX9o-2$i2CNviV#12D6}2mtt=P0;|BCxpG_N?f;+++rulQlb-z$|X zJyr&;j9i(xGGpb)m6KOitZZ1ha^<#_hgY6h`Si+{SH8dU;>w>_wye^u@>$hmRm`f? zRXMB1tSVYnwQAw2wX1fmI=1T3RcBVczUre@->&*?RoiNp)d8!+S0}7aTRn93_|?-_ z&t1KA^~TlvR^PY!iPdLUzrFgi)!(oFOZ>RneNFc@5o;`K(%0mznY3o+n))>>)@)sK zXw8Fbo?7$2HSewYYRyk;tZSXtdan&$+h=Xc+U&KX*G^koxpu+YHEVaSy=(0wYoA^F z+S(7-ezW%1wXN%%*ZHptTNl5s|GFXT#;q$|H)q|FbsN_0U3c%g$Jf2E?yYs7uDi1C z&vm!gyRGlGzV~|b`a$bQte?2Pe0|;e<?FYsKe+z*`X|@FwEo@oU#|ag{XZMj8@x6c zHbieo-jKCn)P|`WW^b6kVfBU`8;)*xc*E%puWtBY!=(+sY`D2mx6yB7=*GB>{WcEX zICf*n#+r?bH?H5fXX8B^Pi}mE<C_~l*?4*59~=MOq~FwaQ?E^?O#?R#-&DA1#-@3j znl^3TbYRm1n@(+dant!tUu?R%>H22XX3xz*o1-=-ZO+`Bzj?~$S(_U-uiCtQ^O4OD zZGL9+E1NHD{(AGZ%{R7axA<-e*%G^@@0Q#x1zU=@RBu_dW!;wDTkhWS*p}zEys_ou zE#GbVeao$_u3Nio?YY&sb->nPTPJKS+giJI+15>4_iw#_YxCA~Ti@CG`PLt{{=H4P z&0|~Ow#aRX+cLI|+%|bz#kPiRE4OXhc5vH?ZKt=rzU`B3-*3CV-D$h;_R#H#+lOqQ zvVHFM)!X-Pe`NcM+dtZVar-aZ+ji)8bl(xRBV|YKj&VE6c2w_JvSZVZgF8;_IKAWb z9iQy@e#dq3FB`mfhV3-(%-T72=Zu|=JJ;>pzw?2eXLi23^ShnaUHV-;cA0nO?wYh~ z#;(R)>vrwmbz;|<U2pIDYS*v3ZtwQk9lkqd_lVskyBl|J+I?*IQ@h{V{mJehcen0w z-_v7{aZl!+v3tt*EZDPV&;C6R?>W2Y!k#O8TK4Mq2JbcQP1`$iZ}HxFdspw>yZ6Dp zXZF6c_v^h^_geR9_xbPZxzD^WW8bKKMf+;@E!nqy-+lW|?|Wz8H~X&dciC^)Z`?m% z|ET@b_c!j}u>bJ>ll%X-|Kt5X?r%Ndd!WyO%mb4S%sa60z&!`f9QfeC7YBYkU_Gcg z=zB2qVEn<fgToFM9;`UH?BMQ$4;_5*;3o%vIix<+?NI!o)I&oK6&|WMwBXSCL;DXs zc<A(@Hx7Mp=(|II9abOqJsf`6d^q#)n8T%qXCGd0c<tfchwnN3_~EmM-#Prn;U5qG zc|>`{>qw6yaYxdQ3_mjI$gCp^j;uX$@W^9F{&(b)BR?Oxebo18#L<372Ok}KwB%^b z(ZxsCAKi2Go}(v^K7I6sqc0wP@8~B-zpAgUNJuax;KGOtGcGK+NW?`FE>dujii>ny zWZ)tb7g@N-#zl_(!VJL-!EC}JATuB{ATuCyGCl>K8J-!Q8J-!Q8J-!Q8J-261)c?- z1)c?-1)c?-1)c?-1)c?-1)c?-1)c?-1zsY&M0knt65%DnON5sQFA-iMyhM13@DkxA z!b^mg2rm&{61-%5W->lA8K0Sq&rHXsq+_IXjFgU%(lJXqW=Y2o=@=p%L!{%b(|KoL zGjN|7xX%piSO#__1NV}Fn`hwW8Ms|0ZkLJMWnz|0%#w+F$;3#R7%3C?nTh+%#AKPc z>rC8rCU!a#JDrI+GvQ^y%Yv5$FAH84yexQG@Uq}#!OMb|1uqL;7Q8HYS@3e~w=*W# zJ!66$GA7ssV}kvzjS2SqG$z>Z%$Q)m7h{6`=0+oKXT<G{xSbKVGvane+|G#G8F4$D zutpPZXTt4FxSa{NGvRh7+|GpC;WRYj{4?UjGvbUh;v6&L<TB!{GU9YH;yg0q1Tx~x zG2)al;v_NR>@ecAFyeeL;zTgw3^3xMZ^UEXhzGk7k8&d(-bOsGjY-(CB<xrcb}R`y zmV_Nk!j2_j$C7a%lX1Ib+%6fnOUCVz?O#+QP8lQ46(dd(W4ireW5OXf;gFl~P&DD8 zXu?CogolO+4-FF@8YVn6On7LRQ*9#|vr}v%i3{6E;=(qPF`L)fS!1^Sq!bsp&VDwE zvW+V)Y`ZBgY`ZBgaG&<`&zPNo`?Q~bqHMb<E^s^h`6mju%fRjI=btg#e&UG>c=r7h zh1=OrE>XCh{d6*B+s`9$0ndKsh=ON7Afhm*{Sb(PmyLbT#_h7<W#e|)@Un5cY<StY zT@G%SgWKicb~(6Rj_r1)1f%UN78kbb#03{^Ut3YO`xF<p`xF<pGgVyJ?%I@KKUc(s z?aoXI_6NJTzzyurb*2RSu{I^xpR-IjxlH0x+(5iU8sp~GmCeBu3d7+VJh|{1+i)GX z!4nOyvGE<(;7Nzq*!HC38ax4+%yJY#6hRb06hRb06hRb06hYJ?M-fC3L=i+0L=i+0 zL=i+0L=)vGf+&J0f+&J0f+&J0f+&J$k{m@4MG!?0MG!?0MG!?0MG#GqqX?o1q6nf0 zq6nf0q6nf0qN#EeK@>q0K@>q0K@>q0K@>qWU5+A%B8Vc0B8Vc0B8Vc0B8X<lQ3O#0 zQ3O#0Q3O#0Q3O#0(M&mtAc`Q0Ac`Q0Ac`Q0Ac`QGB}WlN5kwJ05kwJ05kwJ05k#}) zD1s=0D1s=0D1s=0D1s=0XpS635JeD05JeD05JeD05JdnrC&*9+PzF#2PzF#2PzF#2 zPzF)?tBe^z6hRb06hRb06hRb06hYJ^-%|up1W^Q01W^Q01W^Q01W~-?;PupuAc`Q0 zAc`Q0Ac`Q0Ac`Q0mmH!9q6nf0q6nf0q6nf0q6ngR$svj$iXe(0iXe(0iXe(0iXe)Y z9HI!K2%-q02%-q02%-q02%^dI2NHrPf+&J0f+&J0f+&J0f+$|+xTgrB2%-q02%-q0 z2%-q02%>nMBZ?r3Ac`Q0Ac`Q0Ac`Q0Ad1&Hq6nf0q6nf0q6nf0q6nf0qIjJniXe(0 ziXe(0iXe(0iXe(0iq|=!2%-q02%-q02%-q02%-q0c%37PAc`Q0Ac`Q0Ac`Q0Ac`Q0 z*EymHq6nf0q6nf0q6nf0q6ngRog<1MiXe(0iXe(0iXe(0iU4Ynzn(IHGJrCGGJrCG zGJrCGGKh-TxtTS!b@sPb7KZFe%3+Dq$UloS$(J~pe2MePmpG+-iL=U=II(=maqhBO zhsn!o|6_J8I!@0;$N9PFxCdNx+y^c??gbYe_k)X$d%{I&Upn47+YY!0X;=}`kRqhv zL`Xx4kcJT<4Ix6pMGzI=Ye-*shWy~kmpF}li8INUIGKEj^U0SurF@CA%9l8?d`X&H z>;z6ti@08dG@b})FcH#7BBWtNNMneQ1`r|9B8ZCbk)(sgkRL4h5~q<baVGf^CzCI6 zKKT--lrM2s`4T6VFG+KYo#4R|*Nc$G6Cn*ILK;bgG>iyo3=z@*A|zS_QSrT<bg&rm zgC$?$H1Z|RBwylW@+HnEU*eSVCC(~e;>7YLX>PF-JXqp-5z=@fq`^c;BZ-iP5h0Bs zLK;AXM2jFQz9*Fq7DIlp<V&1JzQmd2OPox;#QEe)oKn8TS>;QdSia;qcUdi-fB6}F zUgI%zTy&hCpXoS17ajM2i;nxiMaRA1qT_yW(Q!|>DD8{*f=EM)kcJf@4JkqzPJ}d+ z2x%A*(hwpfTm(_PFCdB_iXe(0iXe(0iXe(0iXbZ97f6pbhWybcU*a_KCC(&Y;$-qA z&L>~ul=3CcDqrHn@+E0*apZWg#PuSi@kB_2iI7GTAq^u!8bgFMfCz~eK~%h-kq#C^ zez4?AoJPLHndD2HOuoeV<V&1VzQkGOOPpA~B+V^$f(J`nFG3nmgfy54X(SQSFe0Qe zL`VaOkZ2J^#rrVnU@_zeOTNTu<V&1MzQoDoOPo)>#3|)VoK?QWiRDYu++rtqu*CHu zr13;ZgNcwv5+MyELK;JaG=K<+7C}_Jf0PauLw>O2OPof&#F^wvoJ_vN`Q%HSQoh7l z<x8Acz9h{pc7g{>TrWZzPlPm>2x%k{(l8>VF+@lMh>&OzM8*4F>0mMB2TQ)hY2-_s zNxsC%<V&1SzQifzOPp1{#EIog(%fPvc(BCvBBb#|NP~%xMiL<nBSIQOgfxH%i55Xr zykD0N7DIlp<V&1JzQmd2OPox;#QEe)oKn8TS>;QdSiU69Ep~zjOI$BP8c&2Ym<VYk z5z;Usq%lND1Bj4l5k&EG2BHX}2%-q02%-q02%-q02%_TW4ANJKA^!@=mpF}li8INU zIGKEj^U0SurF@CA%9l8?d`X&H9625=alHs>JQ31hBBYT-NW+Mb#t<P5AVQ)=5EVZk zkq#C^ez4?AoJPLHndD2HOuoeV<V&1VzQkGOOPpA~<T!U(ExtSEXYjjD9z(}P$LaZ* zj`MTTaSyoYxDQ-(+zT!`?gtkg_k@emzKAb~G_(k5SP{~YBBbF&NJEK`h7lnRAwt4M z08NztEQ|q^0h9rh0h9rh0h9rhK@>lF!Ja0{e-6VSiff1>h$4t0h$4t0i1J4q_6JI$ z{O28<L%zgAAYbB4@+D3tU*df7B~B?{;;ix|PAp%N<`!QrX-E;$cp{|1L`WlvkcJT< zjUhrBK!ik#Aj%(c;9$vr-oZKKOPof&#F^wvoJ_vN`Q%HSQoh7l<x8Acz9h{pc0w9b zgfyNAX)qDeNFt<RL`Y+ZkOmMT(ISZQM;tg<@}GBb4*3$NkuPy3`4T6SFL6Hk5~q|e zaaQ>fCzdZsbBmpjh7=)<Cqf!bgfx-}X&4dG7$T$rL`bv<qWoC}4wn4q9h^hH#A)P9 zoJqdK$>d9%Prk${<x8AZzQl>;OVZq8C!`@oNaKl+1`{ETBtjZSgfxZ-X#f!tErKY1 zra%-y6hRb06hRb06hRb06hV|f7Qk0X{xbs3Az$J&@+HnBU*cr)CC(>b;*|0w&MIHx z#PTI+ZgJ$KAw@{ziI4^pA&n$L8b*XPh6rf@5fUweDBkuHmH!MN5kV9|6hRb06hRb0 z6hV}4ukjU<zt`p*@+BSu`4VT6FL5&Y66cdIaZ33TXO%B;V)>FZw>WarkRqh<L`Z{) zkVX<A4I@GtLxePd2#FR!ly9$bu;lNxIfs0S)5w=NlYEJj$(J~ve2G)ampH3@i4)70 zq`AdTNJEN{#uFh8CPErXgfxr@X$%q403sw>1W~+wCMtg~oroZcAc`Q0Ac`Q0Ac`Q0 zx1mJk?@1F8L=i+0L=i+0L=i+0MDbpcD1wI<K@>q0K@>q0K@>q0K@@N2h|1sFB_fC- zh$4t0h$4t0h$4uJ_dntbOccRAMG!?0MG!?0MG!?0MF35bzpr2bWdLOWWdLOWWdLOW zWdKdaqY8V<0LlQ$0LlQ$0LlQ$0LmbWM-@>7Q3O#0Q3O#0Q3O#0Q3O#us)!<pB8Vc0 zB8Vc0B8Vc0B8cKqMHE34K@>q0K@>q0K@>q00W=-&;eaxLGJrCGGJrCGGJrCGGKh+| zVI8MTI)W&ID1s=0D1s=0D1s=0sCYXgp$MV~q6nf0q6nf0q6nf0qT)MU2}KY^5JeD0 z5JeD05JeD05XHBf{F)+&B8Vc0B8Vc0B8Vc0B8cKUD540W2%-q02%-q02%-q02%_Sf zAnEWTh$4t0h$4t0h$4t0h$4uJZzd!ZK@>q0K@>q0K@>q0K@>q${@k06Ac`Q0Ac`Q0 zAc`Q0Ac`Q0X9|8z5kwJ05kwJ05kwJ05kwJ0@j6EoK@>q0K@>q0K@>q0K@<TrL;iZo z0LlQ$0LlQ$0LlQ$0LmaLf9}md5JeD05JeD05JeD05JeCbKd9(<^kyK4B8Vc0B8Vc0 zB8Vc0B8ZB&lM;#`iXe(0iXe(0iXe(0iXe(-3OtZ95JV9~5kwJ05kwJ05kwJ0ance+ z5JeD05JeD05JeD05JeEhNlO$#6hRb06hRb06hRb06hRc{4^aeB1W^Q01W^Q01W^Q0 z1kg<RdCCCF0LlQ$0LlQ$0LlQ$Ad2$`dzy(LiXe(0iXe(0iXe(0iXe*bU5FxxB8Vc0 zB8Vc0B8Vc0B8cL97orHF2%-q02%-q02%-q02%>nVAc`Q0Ac`Q0Ac`Q0Ac`Q0Ac}98 zh$4t0h$4t0h$4t0h$4t0h~gV2q6nf0q6nf0q6nf0q6nf0qIgauiXe(0iXe(0iXe(0 ziXe(0iswY42%-q02%-q02%-q02%-q0_%4kof+&J0f+&J0f+&J0f+&J0o`{Jeh$4t0 zh$4t0h$4t0h$4vMiI^yYD1s=0D1s=0D1s=0D1s>7ArnOqMG!?0MG!?0MG!?0MG(b1 zWTFV72%-q02%-q02%-q02%`9YlqiBIf+&J0f+&J0f+&J0f+$|+h$4t0h$4t0h$4t0 zh$4t0fM&^GPZ>ZNKp8+8Kp8+8Kp8+8MDaR@J<UQ8MG!?0MG!?0MG!?0MG(d798m;O z1W^Q01W^Q01W^Q01W~-s5k(M15JeD05JeD05JeD05XI{pQ3O#0Q3O#0Q3O#0Q3O#0 zQM}F(MG!?0MG!?0MG!?0MG!?0#p@hV1W^Q01W^Q01W^Q01W^Q0yv`9t5JeD05JeD0 z5JeD05JeEh>l{%8Q3O#0Q3O#0Q3O#0Q3O%E&JjfrMG!?0MG!?0MG!?0MG(d798m;O z1W^Q01W^Q01W^Q01W~-s5k(M15JeD05JeD05JeD05XI{pQ3O#0Q3O#0Q3O#0Q3O#0 zQM}F(MG!?0MG!?0MG!?0MG!?0#p@hV1W^Q01W^Q01W^Q01W^Rg9GpKu89*6889*68 z89*6889*6!RQ&Z&(hoY?!;ZFx9c>Rg+8%baJ?v<E*wOZ|qwPTyFFE!-6@N38eFCBg zq6nf0q6nf0q6nf0qImWviXe(0iXe(0iXe(0iXe(0iYH>C2%-q02%-q02%-q02%-q0 zcupjWAc`Q0Ac`Q0Ac`Q0Ac`Q0rzfHaq6nf0q6nf0q6nf0q6ngRrXY$SiXe(0iXe(0 ziXe(0iXe)UmMDTKf+&J0f+&J0f+&J00;o}bo-%+kfHHtGfHHtGfHHtGh~oUgo*EHE z5kwJ05kwJ05kwJ05kztR5JeD05JeD05JeD05JeD05XJdJ6hRb06hRb06hRb06hRb0 z6z3071W^Q01W^Q01W^Q01W^Q0oIgYnL=i+0L=i+0L=i+0L=i-B{t!hFMG!?0MG!?0 zMG!?0MG(dLLli+2K@>q0K@>q0K@>q00n{WvPZ>ZNKp8+8Kp8+8Kp8+8L~;ILPfZA- z2%-q02%-q02%-q02%<QDh$4t0h$4t0h$4t0h$4t0h~oSqiXe(0iXe(0iXe(0iXe(0 zit~pkf+&J0f+&J0f+&J0f+&J0&L5%(q6nf0q6nf0q6nf0q6nfme~2Q8B8Vc0B8Vc0 zB8Vc0B8cMrA&MZ1Ac`Q0Ac`Q0Ac`Q00Ls7H3Md0811JM111JM111JM1gDB1)q6nf0 zq6nf0q6nf0q6nf0qBwtuB8Vc0B8Vc0B8Vc0B8Vc0;`||sAc`Q0Ac`Q0Ac`Q0Ac`Q0 zx8+0;L=i+0L=i+0L=i+0L=i;s4w)!|D1s=0D1s=0D1s=0D1s>7tP({KMG!?0MG!?0 zMG!?0MG(c$VTmG$B8Vc0B8Vc0B8Vc0B7pL5WdSPxD_X=~{A+*T2$TVo0h9rh0h9rh zK@>loB#OYES`b7LL=i+0L=i+0L=i;sgF>PRq6nf0q6nf0q6nf0q6nh0pE-!XHCgsf zoIw=V5JeD05JeD05JeEhOAhxG!97I~MG!?0MG!?0MG!?0#Y+xR1W^Q01W^Q01W^Q0 z1W^Q0yyOr?5JeD05JeD05JeD05JdpxAFTt*0LlQ$0LlQ$0LlQ$0LmbWmmH!9q6nf0 zq6nf0q6nf0q6ngR$svj$iXe(0iXe(0iXe(0iXe)Y9HI!K2%-q02%-q02%-q02%`Ab zkSKyEf+&J0f+&J0f+&J0f+)@(q6nf0q6nf0q6nf0q6nf0qBwtuB8Vc0B8Vc0B8Vc0 zB8Vc0;`||sAc`Q0Ac`Q0Ac`Q0Ac_FW|5P0)11JM111JM111JM111N(i&L5%(q6nf0 zq6nf0q6nf0q6nfme~2Q8B8Vc0B8Vc0B8Vc0B8cMrA&MZ1Ac`Q0Ac`Q0Ac`Q0Ad2&c zD1s=0D1s=0D1s=0D1s=0D9#_E2%-q02%-q02%-q02%-q0IDd#Dh$4t0h$4t0h$4t0 zh$4vM{2_`UiXe(0iXe(0iXe(0iU67{|B(&@C<7=1C<7=1C<7=1D1#`@AM9x|f+&J0 zf+&J0f+&J0f+&J0&L5%(q6nf0q6nf0q6nf0q6nfme~2Q8B8Vc0B8Vc0B8Vc0B8cMr zA&MZ1Ac`Q0Ac`Q0Ac`Q0Ad2^mL=i+0L=i+0L=i+0L=i+0MDf0nD1s=0D1s=0D1s=0 zD1s=0DBd>`MG!?0MG!?0MG!?0MG!>*O&8~>?e8optF`^nPVxUwX;0a|;q0`CnK~_E zwoZ$fvC|@E?X-xQJ1t`NPK(%wPK(mMwEy?#_B|0H4J$$#QiL>|2x%x0(l8>VAw)>H z2%_SRxBLKhr2GInE^;QvMb759$Qd0MIjiF$XLelV?2e1v2ggNeU&M~#5tuGMLxeP} z2x&+W(r_ZAp+rc-h>(U5A>ktIsQ91sNJpwY>}Y$~(e|*T?O{jT!;ZFx9c>Rg+8#vl zs%+m=@&5;s_Ov~S;u@j|q6nf0q6nf0pqY3w1<JslGJrCGGJrCGGJrCGGKeO}6<5~T zPHypkKC*o%JKC}Z&LMpUXOR{-kF>y<qy^3;EpRqzf%8cV9W!?P!4cb(9gn;A=orR! zO~)X%=orEl9Rt{+1Ghy7Yzv@S^2Z$mM}Yy90h9rh0h9rh0hB=$uQGTDWFd$mh$4t0 zh$4t0h$4t0h~hy=6hRb06hRb06hRb06hRb06fbQ=5kwJ05kwJ05kwJ05kwJ0@qI5* z1W^Q01W^Q01W^Q01W^Q0yq*$85JeD05JeD05JeD05JlKg@joS#&g1s5qwQfw+ry5w zhaGJXJK7$0v_0%-d)QFh{{pQ8?Fbv%5jM0VY-mT=(2lU79brQ|!iIJPQGBy)JG|l= z1W^Q01W^Q01W^Q01W^Q0e6vjyK@>q0K@>q0K@>q0K@<U0_BFNrpXEB920H>MuK~&c z$^gm$$^gm$YWq$~JSSpL8Q4<>PzF#2PzF#2PzF#2Q5<Wc2%-q02%-q02%-q02%-q0 zIMzfFL=i+0L=i+0L=i+0L=i-#*L?AR{X-B%5JeD05JeD05JeD05S3oq1d1SvAc`Q0 zAc`Q0Ac`Q0Ac|*y9$o}d1W^Q01W^Q01W^Q01W`N@6Gae35JeD05JeD05JeD05S5;L zZT}}n*?Gz!iff1>h$4t0h$4t0fb!22V^0~_QwC55PzF#2PzF#2PzF()KSU8k5kwJ0 z5kwJ05kwJ05kztR5JeD05JeD05JeD05JeD05XJdJ6hRb06hRb06hRb06hRb06z307 z1W^Q01W^Q01W^Q01W^Q0oIgYnL=i+0L=i+0L=i+0L=i-B{t!hFMG!?0MG!?0MG!?0 zMG(dLLli+2K@>q0K@>q0K@>q00hE8H7$^fM11JM111JM111JM1gDB1)q6nf0q6nf0 zq6nf0q6nf0qBwtuB8Vc0B8Vc0B8Vc0B8Vc0;`||sAc`Q0Ac`Q0Ac`Q0Ac`Q0^M@#c zD1s=0D1s=0D1s=0D1s=?AEF4N2%-q02%-q02%-q02%<QDh$4t0h$4t0h$4t0h$4t0 zh~oSqiXe(0iXe(0iXe(0iXe&r%0H_JlmV0hlmV0hlmV0hlmV1M6z3071W^Q01W^Q0 z1W^Q01W^Q0oIgYnL=i+0L=i+0L=i+0L=i-B{t!hFMG!?0MG!?0MG!?0MG(dLLli+2 zK@>q0K@>q0K@>q0K@{f?Q3O#0Q3O#0Q3O#0Q3O#0QJg<S5kwJ05kwJ05kwJ05kwJ0 zasCiR5JeD05JeD05JeD05JdpZmcKt`0A&DW0A&DW0A&DW0A&!x`GY;pMi501MG!?0 zMG!?0MG!?0#rZ=NK@>q0K@>q0K@>q0K@>q0=MPZ?Q3O#0Q3O#0Q3O#0Q3O$(KSU8k z5kwJ05kwJ05kwJ05kztR5JeD05JeD05JeD05JeD05XJdJ6hRb06hRb06hRb06hRb0 z6z3071W^Q01W^Q01W^Q01W^Rg9Qk?50LlQ$0LlQ$0LlQ$0LmbW^9OsHgCL3^iXe(0 ziXe(0iXe(0it~pkf+&J0f+&J0f+&J0f+&J0&L5%(q6nf0q6nf0q6nf0q6nfme~2Q8 zB8Vc0B8Vc0B8Vc0B5bHB!HEC9*M@e44ebaU+7ULiBW!3#*wBu!p&emEJAx>VHBkgn z1W^Q01W^Q01W^Q01X1iZQ3O#0Q3O#0Q3O#0Q3O#0QT&@Bq6nf0q6nf0q6nf0q6nf0 zqIgauiXe(0iXe(0iXe(0iXe(0iswY42%-q02%-q02%-q02%-q0_?I+95kwJ05kwJ0 z5kwJ05kwJ0@kC4%K@>q0K@>q0K@>q0K@<U$e`F4*?9b1c5*R=kKp8+8Kp8+8Kp8~w z^h6YaJvAYSB8Vc0B8Vc0B8Vb@n(<Hu$^gm$$^gm$$^gm$$^gnBiia{$1W^Q01W^Q0 z1W^Q01W^P~{*|LZWq<#uDS-i$0h9rh0h9rh0hB=$=MPZ?_B0(q6hRb06hRb06hRaL zGz0&23s44722ci222ci222ci2h8;EXp=?Ln!;ZFx9c>Rg+8%baJ?v<E*wOZ|qwQfw zP5dM1cC<b0XnWYv_OPSvVMp7;j<$y#Z4W!z9;wBp^>t;XHB}`YAK+gwI;P1n&5mht z%tXgba?E7MOmR%vJS8;^WgS-*+p5!K(wa1$v?k3ctx1DQYtppRnl!SsCe1CaNyAHP zsU@{#4fZ42@d4&`Op{}p9n<2NiH@1%n8}Wr;+UzW#kDonwy$u<2bjk(O^#`HOp9YC zI%bk%COc+|W2TmtO|Ph|EVfT1eaM+QEtq7VZ2t^%=LJjWg~ZMaNu3vxJ1?YkUPvvi zs4cCpno(Ic-#(^8and{2OpdqWymx+{<v%_z@jup*{$nlqKh{$IV=Yz8T~%CMT3S|J zC;O1IOV`;KOr1Z&+<C#$c_Fd$LQ?02<jxBzofkUISR%V#d{}bFtR0K;c{>*6Gj}Y? z=k8dP&)%^ppTA>Kz7HLX^8M&oOr2g)R$Df&VxDb9{xSCAjuq1#E9N^^EO)FV-m#K& z$4c@YD=BxZq)xA?>v(LGI0WaFUysMgou6gCbIEe&QsSLUNp~(K-?@}>=aOyilCsL0 zM*C5gecUm1$F&_pJFeJfc3iQI?6_i^*m1=+u;YqtUdI*NxQ;8S<+a6lCFuA7b2_HU zG0l!?am+-=OmfU*$4qfdX&(ElRmYXmYnSmq)}-;I&y!}9)}%qDHECLDO&VERljfGz zq~WEt)R{Fkv+Zen05}AW?43)dJD1FNE?MqeO1yI^>CUC(JC{=KTymV-z5@=QB<-Q` z|5$h24e9e8_eENF+#zY*aj&Fx$6b@w9rsUKcic&7UF>PC{hN*U%l5AeR&iE3TqpKG zcAc18R$^LNi5X=jCX<zzM^>pb>#NI)YwN2ji|cJKe<hupQ+4_*PWNA{=Ks70%YUvW z{^x4af37C~=W5D-uBKKMm-1UV=_Bk(r#5wJbEmd+>cmc+)Txs@bxNmBttqdmE}LyT z($YtmtW%phwYgJUI(1^FPU_UjojRpcr`A?fm)quQzr<7yWpXI9Ls=Xu(V>zYD%qh@ z94fW0qH?<ZJwe9@n8Ptmj%jvGi(@7_W|CtjJ7$VwO7qyy+>R@y^Vs+wYtneq=See4 zYto?7nl!DnCXFnuNpnkU((uw+YFu?q-Sn~<IE?Zz$-^uUi#!tLktB~~d8Ek0_6|KE z!DM?kEiO#PxP%cSLh@@W7le#1E3dCCu4U%c)K(Q&s&1<kN`*$@s_<0!D}ode3bUfG zB117mk*^r1n5-yKR4N)2ixf?Yjf%aBLyCJ94=GM5UR8Xc_*ijKaanOq@rR;K>7?{f zhA1PICS{VcpE6rHOgTz9PB}|irL0#rDc37ED|aaOD(_Z4pnO=_tb9g!PWh_xZRN+x zOUfUWe<-i3)GEEoTh(0^qUx!NR3)l1RD)Ids+Fn}sy9^Ms;;W8tDV$c)#2)Rb%uI` zdc3+^U8`QM-l{&Reo+0C`X%*w^+)PU>YvoVs&6@Io!p$foVq)OIz>3eIxTm4+UbJR z9~zCuQxmBfs2Qvor771mYF27?YW8aG*PPTmrFl;ClI9J~`<hQRUu&*te$;BUJ+z71 zH0==Wc<mHzrFNBeul648aqSuHd)lwHKWhKfw&~n;{<<JtFI|kzqD#}|>PF~B>&EHk z=vL^q>F&`zp?gvHp6+Yi&$_>Lx16=k-p+x};m%RcCg;A+gPe1nhdYmPp5ff&yx#c% z=TpuvJAdf>rStF3H(V4h?k>SD7MDzy(Jm8Qrnt;@sdHK5ve9Ly%R!fWTpn_H#^tQb zn=bFUeCBf1<yV)#TyD7PT_arkx#qeKb1inQcirf^-SsZllddnhzUKO_>qXbguD`gp z>2-QHy+Lo(r|Adl3-y)yM*SlFI{jY#{rXe-Gx|66pXk5Q|D^xJP37j}*4-`CEy^v? zt*=|L+ZwmSZg07L<#xsGAGe$C{_Y0%1osU0T=((r748e&*Sha>zt{a)_xIetb^p~v z?-A$`;t}o9*JGf^IFC|~YLBHJYdrRN-0$(2$8#R9czo#bg-460-ZR)U$}`z>f@g#0 zGS97^2R!fde9ZF&&v!gO^8DQMis$d1tzK?k{$4R&X0N_pSzg1v3cQNFW_s0lHFz!Y zTIIFLYnRs{uY0{7_B!SDtk-K^UwQrRt?~Bq4)h-CJ;i&4_a5*2ykGTx-}__lFTMZt z@$%{J)5j;-XSB~Wp9Y_$K8Jno_j%0cEuZ&%zV-Rrr_ERCtM~Qt?dIFVcbIRH?<(KT zzPo)7_&(|TneQdvpZ)ZH0e-#x68whvjrN=3H`{N%-x9y&eh2-Y@H^}Grr&3NKl`iw zo&7!i!~GNd)BH#JPx7DPztDfB|5pFq{&)F5?*FX+oBkj8f9wCV|DXOh15^Rd0lopj z0aF4_2HftF)@6B@<}UwsjqN(W>x<odyM=Wd)@@3+@@@^?j(2;f+fUs+x?8$W>b|S{ zJ>8$|{&k>BU_@YCU~S-<z+-`D1AhsM2^tdA5VSSubkH?JjG@G^#qf;b3&T}ITX2`) zq~Hm`i-I2wJ{NpF_*RcTJyLp1=uy;TMUSU?d={b&i4HM`q=poP%nNxa<o%Fap}wKH zp?RSVp(jG$4gD(2Ei5B!PS~!n(_ue^{Tdz?J|w(4ydivT_`&d(!>@+l?%AWKrRSuc z^*#6Ye7fh4y}I>E>Xp}PX0L``t9otkb-LGu-pbyAy%Ty5>|Nb^eebQkAMgEo?{9nm z8{rh;5fKn!iI@~o7O^0rDdKR%iHO%Ceu=mh8624wSroY<@>t~4k)K8W5cyk_UsP07 zcGQrlF;UZ^s-hM}9gKQD>b0n=(Vo%%(Y>SNqVuCmqidq;qYp%%jD9crw?1xt0{f)& z8QEuApUOV<eRlV`r_U>We(2L0ql^iPNsAd0Gcu+yrZ}cHW_8T5m?vXCiuotz-&l{> zz}V2(=-7<d@v$>v8)6s7?u~sS_FU}6*zaSn#W}_K#0AFni8IEf#-+vO#7&B8jN2Ty zH}286*W*5qyB@EI4~&nG&xtRNFORQ`Ul_k8{;v4P<KK$^IR0|{jRg0EZV3qqISIoO zrX|!TtWVgL@L<BZgbx$0B>Zhu8@m}}jTy%A#!BN{;~L{8<6+}T<IBcRjn|C-n4C;5 zrY@#vQ$JIlX{@QpG{>~S)MVOWy4UoC>73~;)5oUErt4;{+1(sujxqN)4>eCPmzd|8 zo6MWc2hAtUr_C>!-!oq{Uo+pdI9mcNVU`Gs#gcBxvrMwgwA5QxShiRWSnjtxVR^yw zrsX5cCCks2e-f36u8CgO0|ELQ-3=r4TI**9eQQ{2m_~mzAkolLBv!nRfA;zPR(Flw zniOy&MQaVSifeVP_6vXOpUtg*>O8D-49oj!^esiL!|pbCv{_0ud3t~AzUF*`_K!m! z8T5;Oo%HFz=XxCyck*28KI@4az6Jq^yFVImvp}!g-S@=c=O>(>Ez~RiR;$sv<%-p+ zw;s6SFYeOX*xcHvx1KVr$`S6t$TI^znTSt(S8FzEtUqbLyP~oFPe0mVJv7l^Js^G^ z(u*nlt$EF@c{-1_e@a{a(f_W+RKM%`81%Y1R`;~eTfL5J^sP|^V_PFN`d$kMPMkDg zk@%=J*3_r9caOFJU2E^leXOy;djFOQ&$ms`>RY|4)B4Y86^Ej=r_Lk6pl#N-72V1& zy^-Hmq%XC;EPih(YWb&GU)r`#Ynx}Wn59YlTHHE5)X-Y1(`Ohwv~4cUnid!Rj+|rp zk4}2F{Iz=hV~?IW_UexJ#NF=Gd6c%LXg!Vw-1ta*9mJ8om7)zdh(j+9g}*hjQXH@w zC1D1Ag26gjul;(@`G=l=LEk#0xg|v}?pNIHmDUntsqHu0p>?u8*Ot<(zfq~hmrEQ7 zF|f0~wNWRCmLhGlwNcaBD83H<Z9kQ^{3H%mQJbPvuN!BLY>j?NqkpE=Yig;!ZMe?k z)<;?o+Yufij<EQ3NY77cdqF$Mpucgmtw<}5cyx1Xv`%j=v6}s@F1D@J#ad)762GJD zAGg|8U0RD;i)`21HjT&87OQ{jTe{{Qn%38DOcW22EkEk44W~8Mw{)!yQ#97SZAGnO zJhAsLTc5l2vbM#^i67l}%gO)7HtVTd+q53md#ykDw^(**F6i1UGd0%yw$uLBp3T{Y z8(G$$J~y<K-kj;*miL~aB~Kh;>mdIdPU3b>+U6U*4c6&53;f$GBemAdD$P6M_Xjl| zt<!JZ6n7`i4DrRb@8Z_xOoPW!+p76BZEMDZn!)1tDvgKrIq_9KC4N08zA`s%)~6Zj zb>ikXon+H^h{yKdwukoL6^5fXV*HzL#k3UNED#SB4}m-RKO<&-RFh?UVBNSGcBOTT zF-%+&kmUc<HBIYJ+L&m;{2L&}QR`*@mP+fXwo2R1T=u_lQtZr0tw(Fa%`n@PH^cl} z3ZHK)v_G06t^008YQ<ew82qodUbG&uUc7D{*;Xq)-8;ZGlsJbQZ0CEPLF~7a)!8b3 ziPP<D+2iAb^}1E>)xRpftj*1(dTVh@fWLK&cE+y{?0Y`i8fXoSetOUGzbZ7=F}lbZ zOCPxQe5+WS7G1sPk-s#pW3(qDYnB#XYYl7-yf&?=I{Xo_ru+5ezMAMlt5|#b+VLja zS3ki2^VS6#>rJh&Ke4K<UuaryX#2M=(zK{!{H^NNPc_yTttr|9tNA5slE#|a`l8OG zxy9Ar8rSA3&N)|WtaVFkY_s)!LuqTAIBYjt>iqec=XJLGX&tSz3+KhXcv#0>@qb%- z@;G;wLF;kD+t9ME_3{lLgY7wJv~;aC$M$e+x$r;3QSlJ@x1gox%>rHPpN0O`bGLqP zJtuD2(||9yb(}b-Z1<%-aYfUbqOCM)ilq<j&uz!0`_&({28pjwYtRi3@r*Rc&^BH7 zqIf21iMAF;8pJdnN1ySxzCYFK^-QzvH`^)ya&zm;;%gLd2uTy?T%~r5LEmyg?6W@H z(01`2gLsBWZEj7~>2=~+)74*Zof**bp;m9TKcBZv5)TBiXK&h{UGKZ&xyj=dF}(HJ z<{R#YRz>NJUgBt6@b6dph0Y_@(5AGX5U+{zLuWfb+InlnYU}7U!!(1qywCPvZGF@J z1kv%7H^VU6&|sKh5My6%ZoO=KsJ|}`O-r3Ph~inL_42Ko*2@liciDQ&daCtSv$%Nf z)*H5`6WcStuC!%TUxW2gv6o|;Cax@8Td<*EQ{mRao#XasjQZtYR-P|>VemuAdo*ox zw0s#7FH}KJ`|wJ2qtgD8)8b@%$?<QtrfS3i5~uL5;uQX4xz_ds9@Dl?*X-0%bi>K^ zBxYT1D70pl;_35{UOTm^s_Or7_TB+eT<Zg<3Ns_Ky4D3m2L$P$2%=F`ibxmfO{(<X zd+$|1uq!AisE8eV#cpD+i7kmqOe~2pCh^QVi}!tJc2_a?-rs%i{js|<XJ*cv^7Xc* zp@d*7H}b(eLKwx3-WL%C*n){O+D%E@(dcACAYLO@ghkH)QjI&>Bz6-?oG7s(Fbs5o z;&OMR++FxcNG)U}(<y0(2%!Rf#+E_h1MYHe`jHeM_W>m-8|CRYr#zqGlqui`(-@fT zCziFa$hpF{&bHBMh21(>6rhrIBr-hPkMs$#3BVZ;2Pvf!up?oN+(rNjZ@k^1aG(H} z5wvhSk)mV~r^xMu;d4Jlpr3%BT}LNGVk1&O^&{Y${N_o9kb<vI9RFs+YeEn~U`|K+ zWM}yhf)9$^3Bg^|jxGT6l~XgI!K<V+crwGLYB8)bbtV67LZ5oihW72d)t+-srUH@; z8yGJ_s*E4g#{~g8?<SG1*(+|UdXgrSM9CPkz!^XiZ59Ee?E|uf*Pl~Cx(p}6E27OH ztJlnBO7@_D<k$ElBYSHfwR8QZp1rd7@yLc083RV5Y{m$68TMPsxBoOu(NyqpnDU;) z!%0m3Vvh&yaqC>T0>jxXMnFa*iW_|jjXt#(QCM0Mhm*HgT<SdL#)yXt;F$w(4|@r| z&?6=SrS_2#DA|I+_f5rjkVwJ%8;)6}j+j+vzd;IW0yKrWD-dzV$oU-bdRD(rqE88@ z08Qrhhy;Yhl*|m_-*Zt0*cSzx#1};a7X=|CdZ8GBcEGBXk?a5v6QCo=z#HU=BXSuA zt#)PvjS<TuS_PQM2zR!%@6q7rDjzl5$8sQOG%B<8fcw+2h?KdRSVr#NvGyqO8{Q_o zGXBht>#H6U>;Y=^a&&{iZRtRcG?^omARd8$Abb8awS3v9C*`etuQI_4Whk?!<WR~! zqPDF<hVXtb%!JS}@&OXH-xrSn;sWx-TG;w9)CAPNkDCUJwe1-o7*OlCBCaw5RZ_w* zKq-MPBOZ5$p)jFr?c-X-_p+G}Uju+2V%S&AKsZ2|WWEJ65Q`6LMX0imgC|iT?9L7m z{0QxV2n((&zrS|!!&l-r@7E5jju0nHr7%wUGRTj8gsv3*jx!)uA$u(beIuY2Gq)=U zeto?e6vtE7IGL1;R7qe=#RQtmZK1evoIh;Iq%^`s3bF)>X2_(P^y1vy;`ACIAU+_} ztt5{m^@ON%-6Y78Vi7q=Qk^tQ#11*>@h!*BBL&aONHNHP;&2B>CV>uwQ}_`RQZBp! z7T=6OHvx;g&Jt)S-a-(lCU8yyjCI`ilC}u84Fo<QVr67Zj!)IBwZ?0$D&2AkK}B3u zLUnwtAcKqC0tAH@8xtvESw%@zQB^^0UM(R=gb{oOK<GpR^ASmS#GS=(Ct!Jq!H|Pa zP=jbTf13f^X2ye3>Qs=RsA&w}Yy-_-NSlFdq{=ZH&`&O*r+$R)WVBYqF6xV7q-Z~w zv;uu=7oi|2;Y3@|S(L`ym;53E46Na)!$$;A9z1@5lt`b%J#yoKSPy?-hel_Bl;gpW zHjECn!RWZ%*GvB>B9OfYgGMl*D*c0p%b-NwKfnsy!Px<JY9NCk0wsAcl#~L&pc?fV z+5IvUgWIJIUOEhVCWsKLFo^8qNJ`?sI*O!+!pV#{oZSH%y)^<|2kLl&t9(Yvo=cJ= z7y6d~g)!`H5R{QRDIi!=@+)*f)QfD1PR^EeLT^P0oGp=sY)PT?l{=*H%gz%>UZR5x z%7HhWcLdZr>Ct!Lla>|D0JU)espBQt-%lVgfAwQY)z=qGTOgi=p%Whz2Nc=a9t<$9 zPLN740)7H%Nj)sCU@GPb(-;A-*nHY&0lP;$LF5$iHyekx4fq0V&yL{isacG0U^oUU z^aL#zMF=qGl&k@Dk7`O^nY}Kry{MzS3&7I`NIO6e>LpL_+t;sw8tWOZm-LN_^3&iN zDc^lj{pv#b0<n=F6&^sKe~^2@z;H7Ly+n=hGN9hwu*MI>#z21rCFKPbdDS_!8THYP z39Sh$Vp~F+66=#{lB?4zv&#t=fq1VZECv|lhv|y%z0v3o-axZha}hT^0!^occs^bL zWx@!qi5rcYWIrU#?+XS=Pz}70HJu_t+xxifK=gDG2Y7g!5|CX@oh#edt!rP|(bNSp zdTm#ENAbqowb?7vo8UA;@{T~$8Ho?N$|UU|BooQRM8aLru8g*jXdD6>G%%Js!LKF| z#|O+4Ic5c5weE{j$Akd?L`Q+hwTb$z3k9bmatHBcEoG3-1;g7=9>W;{NzP{w{E%-M zsmLirfdEGPc%tRrH{dQHw>NjK-MDdWS91>`5Jj-R19xJxb3~|DunDv<u2;}a@XQ~n z_HnAvp%L22<-maEpeLL+NF$nDBGQCkBalm=eMfdjqB{3PfHYAe2kjtvfFS=-U|>NY z{&+$H1$jpHf#_f(6%1Z6mj~gtU>2Znt7E74?$Be2mvV1c@hB{RI{8ya#Q;B{<et{; z8{4<F?j=woRk<f`dvbdWXsMxObY)6jZgOP|0r1osy)k7Q(9Ijn&*(b>9hG=<N2&e+ z6Xec3E2EGplS3vprZ%UxrnV$5k8Vt>Pp?a_$*Rt-%&!D)u!Xl3fL2`!pO3Zz0CliI zU`RiRmg@s+ArG(a=~;aQlwqp$a8gg`YJ!V9!EkG+)ge7e1eSn8pEF1`0!DorL<vG1 zj=~u!PpR!H>nPZey$S#XILlpuGR*4}UW9&*7Xk_eGUzU<(Ps$pa7oxarY4Z7k-Q55 z0<cNhiIKeHu|$B1$TOWCX9(0wWuNisAh@Eh0mrCL5CuPJIcN(IT2Q7x=??BPMl79Q zEdwBdazJpPYPJ`5<!(%0o7_xry-17U8qpI>|KCTVvrHDedM1NHn3BPEC~+d!bs6+# z%$d6e5`jpZf;;h?*OC?c(zisdB)A@!uQrHW<Y2xdkWpTth;?TK1UI}7X)qlChCAeM z(guqDjAZYF)&Q8WbzSeu{f%E&T`ay<b-1~2RZknniPWNm^2j=?7WcJIEul3LWxS1S zkm?}`qtG`XHV*-DMtOBdOXsp40)>3sy@RlODb#wuy@^<`gW2gb_5y%eOu1lSxjapj zvkx|P5C{*13kC_v&&WJW|EjqYEj?P=7igG%l9+)-qop7u4ClJA-HYqu=W=l4xt706 zUKU?nabh!`#nN1_D$TXVYn&?x!NLl+te}|Kz$|wG&<Ldni4u2!{~<vX<&IIHODbb2 zWB5l2ef}T`o#29Q!rFsIz^g~>(K{gjVguk4An-hS;l*Dd^3y;d6A&o(9g~IP84?-r z$_g^)39-Rhf=dOH7LX$;_||n)wwJCiT$9(D)rbLDfNa>?1ZauJLBJ4FNRb;3dJEVq z<clQ*TVN?4^&s|C1T#>FDY#sI9t=7lZ$D<hY{yehY{ism(h=-@5g0uvA(;|E1h67% z`wrqFfQ5FhR<+i0?TsKCNlj~<@-vCKDW{B$b*Gs+){_{>#>XV;;0i_e`>ZM0(92>S z2|(*Wp9poJVSU^%0TI27K@oc?!RAftx|Z*dQp9}}`vGv+Mmj&VK(LRh?I>+4Sd|5c z@dT7ptjDSnKsAM!_mdIaRzk}CK`Nv`Dg=T8JfdUe#&v7kS9bC|Vs&Uw(&182*kFoa z4MkIbdWCc~1Z*_e7`lLJ*ADy%64Bn)Z5uakYuy7}q&aDA`o`R@VnR+<(Ow2^VRbPw zw0G@jJ@{--`u&MVj;z_ZMFU_cFFmnxscB4?^~8{nlH3dp<RQ5%Rr^q@GFz&}^ils* zc%Vh9<Vi~95?utvDV()LOqn{zlzCfn3Tn_IHNv87R2dJV`nT~6m~R-)(8Po@)F`I7 z@mKB9xN>!FY`K#a$Ed|poZ&Af$WR@TB%1W-^sj3*j91?AK}r)*F@wghzVZ<1sXe45 z8zrQO-vdf`o9XK8?9yPbQ(ak|>FNVUWO`Osx`yOBmEM`vrQUQBU1QMJYviri<Fi`T zpSJ8i{y=Rz^(5$|xjIT<kQy_PL~@ho&EwQHxYrb?@n}BMQa?u`m0K5)aJ>fS#8y%K z8^mqWH+<MACK<Mhg%L=VkUb0<1~~BJGsI{#Q;70;z^ScPM{29jJV2Bhv@kQCaR%z# zut<g+7_SJL@_Q>VqYOx(AF+g#cK%K_eDMb@k@$`H-M|}4^0-gL9sr5uA#z6#!5Dl% zzS4j<vV|2&VSv}n?`B;JKd9c16#oQTA-@%v(1K34154F?!8Yd%8mv@1Bi45{t=XrB z{6Vmak};4NDyk!~w@{rOsU`Z~cL_0nmc!Jh)txK4m-j5YSaYo6aQUg4osGRMTUT|i z#RMv+G^--5I;q~hIcR0*3jgN#x`e9KGSI3d_oOg}fpYDNbuH_cw>58EwrSacy4^KB zRog3f)a<V7T-Mpt(Y&!`!-{n)ac9L9MOB5>`8B!qIrZU<vCT=X$t{V^v5i^vS+&_U zxm5+A%-IT9lh2s1oUULUCu_&1wHr3B?rcH@jASQpF{zS+xwJ7j;cWL&#~5xkxqv~S zmFP2U60?uB#2U!YjPDx8_u~a~1`)irNPr%BLXHfBEgqjX33p}8v@v@~l)`Y^A{lI$ zx0dga4&F;E@Kj(`L_X9fgV+Toy#r&B1tZrjq)J%n>Xpr)#KR<{Di~Hnj2R3MEYNps zU;(>`<Ms1s#Gj00IFK{Rx72k<Pi_Q&!5K!fLjHbkvK*M$6##4(`p^Y(2H2U{70f>- z`A^diyjrHr{d2C57*k8&Eb>)EV=<&mU_BYhgMXNl<ffv3<AU;M*}aTp{O3Xl=Pn=n zXKOdu!jVcH03#cS{;()g-4a-7GO}ebu&rO&zG7o@XVaEtCu;Xs?Wx>Tb)a_ZvaaSW ztsN`cR%0+LEYGXRt;quAU`bPCOH6A_OL$XieR@qsWp)J^yulE=CBh>BBm+b+d)85` z6~k_0G#MahQuotm<Ko2^**r`3l46=Ek>7_d$v5@MV8vRx<D>ydx~t~xa6K7vJ@vbC zUe1+K4l*c+7<fk=3nGAk96Lsc-%%g*feFYc$AER8NUZvaatx^A?FV~_FGx~g@CBjP z4fqTi1~xhNqKG>ZfsTMN1!&=Ak{i#BBP5$Cqzu0ZM38ZR6PiE+@mty`u`&ZB>1*uS z`&=eVMEjUzfJD$IH=+9sqEH;eZ6ecav&!>|i*n1eYtspi!fIX?R`WW`2~dBrNfD6e z|2<rR+Y3u$qL$UmS2wR}T(fK)f#P@-s%T@LRD}XP@$;9)P|eA!Gum@DVONE+7!+&c zXPABdXP##IiZfORmH<Z0$d4RrGgw>Cp(Zq%YwDBz{6W4rbMYq))*68kz?w2U<NiYZ z4;0DE!!Z3uJpF%;q;c@{L34(w7rc(X)Va2E`-*+M^Z*zoHJo4p-gprHv2%d{CCSWK zpAZY6ZvKCPI^as7B+@_=2;@R>!@wa6A2=3M3@{<ysH626G=O3*=hmymua{!e|Brp# zk6;Jb{hHa&aJ&DFy$hvWqIFI4s^-;=tNG2q^N#xW9Y|S|(U#i*@(7qihFCG2FE1bt zXrTFE#Q|041Za&&W%cDJNLvlL%E{?}u@;^9gTZzo)W!%wj{eNN3z}mzn#RP{N7Y9! zi(MAq6u&&KC1wQyVl|k3*+O1Amug3w#0NxdZ3GZ|IT2HoF95H5p<@hCT}$Q%hSUC} zr3_jmuv&pj7BpjQqTe@_l&v0n6K3<S5B&h(^25iUcfh}I%HK5g6vJa;*CmPr?aGPd zz%Ap(b@2%K(MXP_DT^JYlpFy;QACBjTMxPDF$0c(&|Eq?gZ<KM>~A6vjoFv~r<{fs zG3;z?hy~XY+-wZet<2)h27v8&ut5=Pb(^qOM}4N%ZNgd|1zMdD6Vd-4EMJE4K!RHL zQa}c|*1<4`ms6}RUrx@K>}JH~|79r$%<=qvPcZ;a_pO*PO$JyDcVFg}!DfzW)MF$f z&?3qLjVGRib>bV6o5X>x_yzTZ8%BJ=C4NWF;S>mNHiaf(A2y~&fMr-=#dv`g=d91R zCyUpi<#HF8P+m}TI1#}uf)2+MQ^C;j4alq*$G(7<4kNxriL=SaNP$4JDQ*&iSD;CZ z#0Xq)gY{`6u1#vpkpZEQC#=&LWX1rrN|jI1inYtvHmz;kK%m6Wc7)fnW2lz64Jli4 zTI)c8bpyfDG{@5`$CTi9P@7E8dp*k`*jePWP3O;Tf<TKMRL(QcbEcaJE>EH+LY94; zC3ac!CU=01G;nMLNF5t$tNO8H;|<{A44x)NV$I)kF7rR^A;}ogKHBDJDin=sZvp3k z<PP?d(jUE~#xmy)R&PIBXD|i)CnV$TDYeXGnP|GQtz|=F`?4(r@*iZ^i5g_riJ?}8 zZ%OI^s-IPqR3269(c-h#q1C@Os648Oa9R5AZanPW;YniaK1%9G<bHKzxFd4J#$Ey; zPk6c*q1=_Cj0FvFLkW;N!&d5np;}XFtOj-~Kv~SYv&UYq)j%-}N4U6f3K|e3!YN)| zgh+K{hf?J`z`j>L0$%$Q+;Fr*`in(G?lJhrKx*q|(BpRuFXPLVuGEi$sC*zxz^5bA zLy<A_F(ya&nc)O&2dNC0^c$u;zp9`vuRep|{HfL$Z2#I*NuVh7m_adA`GJg{?9~8H zDL?|{MC&t|<});rQOAEEh&B@n7L5P4_A<zZZCu~DQNE42+f#V+T<_=GxO7Wm2Uur- zC=D{_QG>R9)1dn)xj9cb8=H+jEtm|!Kv^D&a;1ADUWlqc_jL|}+z7@V$jSsc%nF_{ zrk5#pkBo$3uOsZX;w6%Gle;-EVPm@n!S(-O8y};kK!?B-2V3cZ1wcTBhlpcP#jlj} z?#l_^PwWOh{`EI#k_KY93Pb8@?Bd>86Vpge!^)DIq#>iKY=F#33cD{SQg4_%YcT9l z{k{a+%Uk)uAD7faNJa&q&<O55*$HslJ7`e{+eim*!Y3Ok&@k=>A2D!4M!Dp&tPu4u zXvSb0&1_&)7MM^!#~>_`xdE}uAduQD6?$N>vY0R-d78m)VQwb`Sb^~fEHL2v19Yfh zWR7e07X}8~zi;1Zz$a>d_Kt-0>LAgfUcgFk>{18ACok8q=?usjY}8;c<|qDkoI1&D zV&lOZhb76uim=?n5JN@sim<SqK@G1N<jM%8V<TX2^0A4Szd;1q%?RcGR;g!{_lkUs z4-mM4=>+`9eOR3n3|6P`et*VLU?SNJ%9Bf{7d}~BgexyTf2D@nK6q2$?8aVFQ%(on zW3a{a4O5y`l~tceaKY$n2BnZku$B2Rfl{c#Q&Bs3m$OLD=>Mrya#7e3`9J9SCrPmt z0@HYJCB&x<X5GR%2GsyAT>e~3lSoa)pepSCj0WML0A5e%`DhX!^U<i<14h*`Qj<8Z ztb9TWo<G;~frtNd;{@#SPkySfXXIB{JP>p-X!NTa$Pg`7W4jy}Nf*T}zQGxy(MIY* zFxLVoVe2?L4B&K@!I5^n_Y=&zcF)jM#>D|Un1QC?z#SkWQQ+XY&Y;TsplUBdit1>? zhf&-K^cw{saYMa0ea>ACdITVQh*Z|~H0>u)g3QqVB^cUEsO^qjRfLe;%*dE9I{0xp zK6wbRjalv?0QPj_KMC|;vjQQ1;09J%#=~k?fdCFsBR*26ImD&#u2uFlsAu3%`D8-n z>DPsS?3ou>69=yyFIZs^fH(n&H-iXBq@WDe5E6~t`t`l7h$OaBd9OULYxlhEIe)$V z6`ZCb(&`>Jaw{Qo>6;D~pLviijIUiva4}Se&zWojRgh;pupgq7O1_fX0zUTlm}Fc9 zk|DnM?>;y@0g;U7{hQ9r&yKyoNG4%Zx0c+HT`3C>p}6U$gd`KX$GWgo{ropPM8OOn z6)6ko!eN^1TOJ&M$+O)u@-NkV*6(aONB}L8I#4QLUrVVTm+mSsW%C9YaU%E-Sg=3l zihmG2Jl@j&NaGomXXRHlPj2m}@*bV6dN2`4evgRDLKWwzzr4UpO`@@A41uz^3NK3Q z91g@2g3|t(mmfQx*o}Cv?=lvgTA@3^)$)Y?9Z%@DP;Mt67H|{k7Zv5J0h+hpzNpjc zz(J+-lcM^g_W7y{`KVx6F-%KPAA=?f5V%g}^Y{WQt;OzuN#BzPB}f^f038Ji^gXyL z+Xx(jFfbO(<LIQ!oungMjgzn%I@q1W$Ln4CWG*?}!9WO?lmI_QYU?i&sFwFVzvF$+ zTc}G*2ypJ|p6*BL#62n+3AmA`(a8S2h=x;Nq|WJ{meMuQ(4-Cu`6gnQu{<z^#jcy3 zczxKjAjE;R3rHap0VC=MZ9tI)oQ2<h00yC4+#662VdTOd4l4q2jt}6)qTG9ZY_c7J zLDN?}1iIdfyGCFB!-<A*Tk1puVL<(Jxz+;6!&+{KJ62jg>A(Q9KqUU#LSTrVhfXnq zXY65c)?fPM0Kv@lBG(_mNkC=#6x{;iB99{2)QEj;?EOQG<US00U^WFN+gXeu1Cg!P z5Jn+{b&>7=U6@Z8JA|rZ*dYM15!_D%A3s(`7L?|cr&lM}hcrj5T)NV?IkGOgI=&(m zd=W6P+<&laSdhmA@ViIA^aPv@ELcKzR-y*>l7#Q2c4T)Z0Kdj@b<VQ5x{DN-wF_lI zT-`-Jq&XeSK?9NUb)uI0t_$go+>>-7`^z%dvL)FuNokQqA=SP(Cgpvk6f*_?b%-tk zlmvR<Yi)uxAYZ>F&{azRPdsk94~btwOg7yi@NYB>cZv=nF`)j02M&;bzJ<rADSr?G z%&rW<a?aiWvWM-e;J54s{>!f!iPsFG8>{<^j->66=~>d@y6VeSCpz}@bnjnxWO+X! z09z}<V1tDq7D0?LACG^9%6sm9RcrfS+b>>ie@<M%5nBSW5}2dWT8W}N4#j$3tiy;! zSP>O$1`7j=WVV3kde9>T>qT(q2^_XAqju>1eMSfoPMwS_tRKMY74rEfb_qeh63G;0 zRs$8tY#6{B48i0heqVEm{3IbZK}02<F+^#B{bBgu5LJv`V>v{=5K<p0&;U$7Aj9Ay zy325tg3$7a%E;=7x{&(NW#LGH30o-*Y@8=o3{f&*vL0u6ju1%W9Pu=v8xvkX6mTXG z{|s@QD109Ysu;xN$``&h5X=SwF+|&~JF{)?fsX#xFF{X{(!6g5k&$lz0;6!8s5!)m znx=7%-8gnjh$HljxUkQJV(ekXvW-MNf>q~b8;HCU_*I7%#HOdm6@*p$5umj#_uBvo z0?(N~fFL%V7pac#*(DAAhloIkA!AwQV=lyZrF>ACkkf;3b3?R^`Vu%C1aFysT)K-G z(FWWJKK+1%s6nDIy|yGu4fHXdR10Fr#)9Ue*0NO<Yiicl5jc1Zht|D9VGvj+M?dVV z1hfOi9()H7pOg&ir-ux@zz4Y6YS-e6;Xmfg$Z-#kTU=_z2NX($?LYFRA#YNm+}5<N zW%X*ThY@=O;-NTz7I&Wl(3gUPNFhmq4;#c(7GM$FmxcsR6sQ3Pt;YyTzmB`?eqhF? zA2(e*u<P>buX)k{ax4!wNA9a2liDTAf_A%|vr1W-a83i`?HEL9_tK)MoMqU4|_ zpc<ETtlO}0RcA9eYG5szGgszsDC?-<*P&04pO;u3?vT_yXQIDPSwW(PKs=fsH}W8- zp)U!^T5=lqCGbBXcK|_%j*vU?emtOF{rc)P6|2iyi<cLIEBc9m)mH|e@E@{qai$QX zC*ouDbVwog+UBnYudRSAsVl86tE?=mF0CtpQ{KS{=6Bw~2+1^9{^CNxyC*2-7GPqt z23ZrQ(E$u8_hpcKaUc?+V1NR0uSqFY6yVjH#Kn?A0u}L)yB9M+0e1{&@%28`9|3Wa zKx5FPqv${|yK^9l6!1YpTncYr%@x$ORjw~xUDTS#&jq%OPrZ<aH;IrLc@+Iba5yM> zEli#4k%#nb#}49Tse^cX4Iv0RMts;P^C$>7RnYgjVnS@OPb8@7&TmU=A-JCckOKw@ z=%2*F^n?KNCq5c31!R0tQ9SlXtcw>=b!)0uSFS2+EnN<~7SoouQ=Nxg=~xR}^B~Ac z+{fM*%|m$v_g?TFklhl_n(*Te2oS74za6aLBgVQ2D!<I`k3QhDZNWO(5by{D2pE-V z1lQk33KV7G(ZY)qL`(^X4XqhL4;?aMgfuaB_>d`(6l(#=ufGhXAjwr5(p;wwH61#8 z=)9p;Lv4pH8Ja${V(5yY`-Wa0HXIUIrwyAo%zD^DNMH>f);(<Ruq(qJ5Bp`<%VEDM zC@2sLN(z${rYcNVa8rm<h*c<1XjeF|@T0=d3hxxhK)R}vqOW4KV!UFqV!C3MVxD4= z;zh-;h;f7i;Y>sk*~Btp7qO2xNc>Jtf)v$kGM_9a%gJi8fovl?AVu{kd7ivQK86%k zF*SuUgS1p<NKAF7yeK~^kcy(>s5Gj8s-l{yb&#ZbfI30}<$=`HS;O6jhY!yfzJGZC z@GHZA9{yHosM2Vq$x0?lUnp59IVmlIRMaq~6s20FHA<b3h`LSb0HmUxSNcZjvC^+f z|Du)X5%ef}EWLoXquuCWI)$!)MAQv*H+_OWN8hBsp`X!j1>*&pf~kV(f*ArAfsY_f z&?z`3xCx1;A4ZHGp)q3G2%8a(BLYW+kBAx(HzH|7!-(b)y(3PIxIf|{q@eyeQgNj6 z$T=eyjtm?bIWlQv!N|IiD@V4E+&c2W$nzs_jJ!Sa`N(%8#Umxc@j?xumT<Okp3p%U zDvS}P2n&UE!u7&#;a=fo;cej);S1r1QKC`CqZ~&CjfxvpG-^2{p`IAkKkD457o+|d z^=>pVS_mnqYNMx*HXl8EwBzW&(Q%_|MmLOJK6=&Y^`rNWJ~;a3=-<bT9iuYFVods& z>@oRciXrv1dQAP8rZL;boE`J+n73ozja3?}Gj{gad60bCIriK*YTSr%e&cqJ9|K9H z(;$^}*Z6niIgyj7TX~f7cx4@BLuC_Xdu12pP~|M;M&(xJF6BeYmzBR${z;ir8K+{P zGEK!p#YZJTC0J#tN|Z{RN|H*NN|s8VN)aTIR;kpfG^(_ytWsI8vPq>&rAK9#%6^r@ zDkoI>RnDtiR=KKjQ{}G8H!6=+zE}B4<%P;?l|NND)gh|GRY$8%R@G58fHYK7)tRbu zROhSOsM@JIsd}sWsV-3sRt-~)P>oiNQ%zJ&Rn3G{)k4)$)k@V`)n%&7RXbGos-9AP zs`^az!-NSFW=@zh!FfX1g!Bm;Cv2XuYr^+x%4%wA)6{I$7OMrRC8`yvHK}!~?Nd9h zc1!J%+D~e4Ck~k?oH%i!!9=Tx&J(>S=1we_xNhQ+iT5UcGx3*+uO|LJiJBysWH`xX zQpTj5N%fO9OxiK&{-g(!1|VvG2@}kuF!@X+vzFNguILBMTlJypq`E+Tv^t}%rEaQj zt?sJssUD>sub!e_s9vVtsJ>3UTYZQ62}p}QuYOtmn))sEd+HC=zg7Q1{b%);>aW$` zs=rfzul_+}n1(=Ol*Tv>6^%(6lQpz8^fjhx*lPG_L}}z}6l<*1*r9P+<DAA#jVBr} zAeq)=a{lBSn!1`snzJ<LYT9eMX$EP=X{KmqX%=YKYOc`SpxLW=MDv2?WzBn<KWP50 z`Bw8iB-u{TnyF>4<)sy-m84ayRj1XawNq=q)=8~?tt(phwVrDIr1f@+!j!R7Y^E%n z;yopEO3Rd$Q#z(>o6<Ms^pq=8ZcKSP<!^0)_9#flouaL$JzLvR+h03QJ5Re#yG^@8 zyGMJU_8IN3wC`wtul=j`-#Q99BXq{=Xy|C^Ox2mKW2<AY;{<8DUOK)y0XjiCp*rC@ zQ97|Y2|AfNRXVjg4LVJb%)3%&jm~<VPM!Ta2X&6<9M?Ieb4KU9&Ly4uIxls8(|M!w zr_MVah-T9HmoBY4R#!z=L)TDurmnTFi>|NkQr#roD%~}@yL9*JUeJA{`$qRq-M@7Q z^v3Cl^i=dF=uOmP^fdG|^$hfE^lbI)^c?h@^j!2@_1yHl^!y-6I8-k}FGepxFGVjy zFGsIHuSBmxuSTyyuUT(}-Wt6PdfWB(>K)QMq4%ZUHN7A7e%AvjP+vix(icEFv6jBM zzJq?We!PCRezE>K{jK`@^$+Tw*8fufj{bf9Z}ng5|7AcJ3^!0Q&^4H8Fxz0RfsMgJ z0|x_V16KogNILd42r!5>NH9n?NHfSZ$T7$_C^9HDs5j^~IACzg;IY9=1J;l<9Ah}a zP~C8<p_!qD;e5jdh7N{{4BZR^4O0#C3>yuX8+IEWGrVqi%kY8WQ^P-vh8PVu5*Up& znqV~9Xo``Ak)@FXBrHc6#TpeEwHj?R+F^9i=!nsAqf<s_jLsWfGWyEsn$Z)Z=SFXh z1;!JM^^9j4FEDmD4m6H7PBmU`yux_5@fG8j#=jYhrw*Mu1`?U4PBoi4d#dHsg;Sj% zp}BJEmZ_JgUYYv$v?<ekruk0`o0c>!Yg*B?s%dr8TBfa=);X<v+P-O*rahYW`?Nnz z#+XbsaW+|O;$h-%5@-?vNzIXv)*Nq=WRhx9W>RTVV^VL@XtLa7g~@7@btdg5+e~^* z_L%gU95Oj(a?0ea$pw=eCXY;>nfyInar(IFTGLIZTTgeJ9y2|A`m*WG(|1k3GX1yd zZ>E1RRWcoC%9t9NPB*nQU1S<!8ey7k+GN^gdd&2a>0Q&OrmsyoGr~+{reikG%*xE$ zEY7Uhtjw(0Y^~WQv#n+a&5oE|G`nl|quI}9uV)Z5#?LUBVK&2dhWCu<8F4c*XB5w< zo3V06`;6Whhi06aadpPS8NbZn%$3ab&5g}1%pJ{r&6k*mn1`E3o5!0co2Q#+o9CMs zLqc@5c|9aWx0<hp#ORIYn;|)Rhxu+ukUnI743ebJnqM@(X@1B2zWD?5$L8Oe|6u;i z{JHtB=5NgZGH1;tGl$GnoH=~vh?%2jj-RPIbJEPoGqq>x&orJneWugQ#WTHTuAI4U z=F?d-XRVsGe%8iWn`dpEwPV)qS^H-lnssc}saapodOYjt7g}HFeUb9Tx!F@@>(92F zZ9Cg>cINE7+1qA6nKN<D<T*NX4Ck24ahS7cPRyL@IXCCroAY+gyE*SI1Qse5Iu>78 zI9d2u#9Aa;q*|0%R9mdH=(0Fuanj<>T$Q===PsEWJU4glnz_g3o}7DT?uEHu&b>DG z*4%q@AIyC+_vzecb6?E;ZSEg)|DG$JJ1}qPJYt^KJiU3w^TOxF%v(S2)_leJO7ofd z2J_A5N6wF(ziR&F`M=J8W2s`PX31Diwwz+AYiVF<Y-wU?Zs}?nX4z)hVJWeSw7Oz- z!|IOJ*H(|LzO(w#>KCh5R=->QX@#sftAAN5Sd-SYwa|L3wa9vcHDj%5tz&IqJ=NOO zdZzUp>-p9;)^^rT)~?nb);`t&*1^_Gt)r~ttkbNstqZJ6t!u3ttv6YBS@&2Uu|8>i z)B2e;Ydv5y)P}H8vKeVJ+Gf0ss?8)D4I3+)1vYjzjy5hfi)}n?ylwn!;%o|R8f-dk zx@}I`{IWoAfzbl<1q&9qF9=+aupoay<$|UK8y9R{(6^v}!L<eV7kszi`GP+dytf@@ zJIZ#Ft)A^nTRU4%+fdsi+XCBK+f}xkZM$uE+a9*<w>@Wj)AncE_X|fYR9|Sm(0-xc z!svzh3)>f-Sop)jXLd?<s&;yIhVXxj0d{eA#dZyLYwf!2_S>DdyKZ;e?!MhCyWj0c z+0V2Oun)G6wa>E8wJ)$QwlA}<w6C$Rw_jo3VZX(Gt9_6CPWwIf`|S_fpR&JVf8G9; z{ayR7?H}4dvH#xwt%ITi<v=@(bQtY0&OzB>f&=5A>7e6a;4sy})M2K>9EbT1HV$?U zP7baP9u7VZ0S>_qOC1s%vK&er>Ks-$v^#8b*ynKE;k3g!hf5Au9Bw$=aroNdk;8Wm zKRG;i_|@SrNHZDYINWix<9J6cM^nc+j<$~Wj_!_293vfL95WmX9V;E199taMJ8p5@ z>A1)7nBzsq+m4SNzjJ)<_=n?r#{s9|P7|CAoMt%9a<Xw+<mBhH#3{+C*r~~Bol~1r zm(xzCgHA`BE;>DO`rYYY&cmF?I%_%4aGvFC;cV%=z}eo}*?F<Er?ao~66a#)GUrO? z9_O9T_gom4NS7Fw1eaWwGM5!Dt6jFa9C7*5<*Lg~mnSYiyS#G|FQOMsTx7h+WYLU8 z){C4LMJ|e2RI+HzqCJcDFFLj8n?=96lCDaw<6Sje4PB?Ynz=4;UE~_<8ta<on(tcS z+T_~d+Ut7I^`h&2*PmVAEhZL=7OO4RSggI+e{t~Q6N{0Xrkk#tsoO#~H@9H7c(+uy zY_~$UI=2?LZnwj3U%6d#d+heN+rQk0xsP|B<-XWG(LKez$i2aRoqL;mxBFiA<L;N- zZ@WKnfA0RL`v(uoL*y~V!^~s0ho#3t4;K#)k06gkk3x?IkM$ls9!ESbdEEDS>hXu? zP|q=*%AONFCwuC88hM&{&i1tST;%EF8RD7Xnd4dNS>;*h+32~-bDd|WXOHJT&x4+4 zJg<4)^t|JF-}8azW6$qAfAIX>^Iu++m$Db*HO*_GSEyICSDII$SBY1-SCv<-SA$oR zSBuwXuY+D!yq<VH_4><O$$PT5wzrA5h4*}KYj0a`dv7Q2Mc!`Sf!-<J1(1Qe)_be> z0q?WkH@(00{?&WHN7-kBkFn1}pQS#LKB+$CK21LDK0AGm`+Vi|z~{No-#-8HRr1yM zHS?Y4YwzpsyTmuzx6HS~x5~H1x6Zf0x6!xRx7+uk?^nLpeQ*2T_kHO5t?v)MfBJs# zQ}R>xo9L(OXX-c4&&JQr&&ki#&%@8hFTgL@Z>e9DUz%TmUzOi-zc#<^etmwY{jT^u z^!vr{FMlO}p}(5HuD_Z87yfhot^95M9sFJV-Tb}${rm&{ll{~Ev;9l`tNoYzulMir z-{HU4|B(L){~P{y{Ga)=0b~FjFgCz6U|xWIfKz~1KyW}zKzu-EKu$n@Kv6(xKt(`x zKwZGHfX;xffNcRg0(J%L4d@Fv6mT@)Ucfg2j{?38cpC6iz%KzW1AYtmBjE1<@e<7? zI!k<(G%mTe<kphAOTJ$6aLJP;-!J)b$<Iq(EctcGUx5mNf<RHAYM@r2ap0`LIf0ge z4uNig!GU3cF@ec}S%JBMMS&{<*9P_m9u2${_%QI-!1qB^(4-)vpm{;AK_NkDLDfNP zg1UoF27MLuP0*vD=Rto34+&NX9viG4Y#2N**ecjDI4n3WI59XsxH))B@Xp{p!AFA6 z1YZfh9{e=;L&(?=gOF(<3qt}!(n7LB%0o7UYzx^P(id_x<aEe|kgq~+hrA5=J5(W* z3>_b;6>1V{7HS!~C^R5+X=qevd}vB&W@v6`b?A!F&d}YV`$JEMUJZQ^`XuyKDAbq; z8yBV$rX6M)W*N31%rh(@EI+IxtSjuRu-}#nmX2Dgy>#wUuccv2BbTNvEneEZbj8w5 zOSdfDwzO~Q;icD>K3Mu}>5K3o;R@koxKj9t@KNDo!$sk$;q$_+!WV?wg*%43gf9;F z2=@*T3r`Kt3$F>U5AO^=5`H86cK8qBzlOhy7!sinF)~6qLL)*e!YslnVo^j)M0`Y5 z#HNU25ho+gMBI+}K5|6ls7U=to5&@R!I24(#gWaCJ&`*j&qqFv{3{Ygjfff>r4nTk zH9smksw%1@YD?6Ks9RA#M-Pc6qSd0!qZdbeMTbQvM`uUZMK6n96TLZlSM=WKqtOqe zUqye285%P_MmJ_&j8%+F%#xV6nBti7n3kB1m_0FlF{fj$$2^I78S^@3Aa+FT#8{13 z!`L~oi(*4#BVsdRD`Qv2u8r-8-5z@=_FU|h*z2+PVjsu;82fYVo7jOkrMOXXlj5et z8OE8$S;jfW1;@q2<;PXV)y1{OZHViN>xnxOcP8#y+|#(%aa_Doyh^-w{IvL4@s{y+ z@lNsX@qY0k@!|2w@oDjy@j3DN@kQ~a@fGpa@%0e#)*8P$etrDL_|5TK<9EdGj^7`D zDE?Udsra+;7vsN*zaD=({(k(!_;2HXi2phMW&G>-xAE^16cdyZgbDfyQxp6WDie++ zoK85Ga4F$R!i|JG3125XO873}$Aq_u!xG0O8YNCobV-a)Y)ouT+?=>AacAPm#7l{H z5}zjik;o;DNK#AEPqIj|N(xRYOX^DMN!pdPFX>>?(WH|}XOb=?eVKGE>1NWMr29z^ zk{&00m-Iu@v!v%qY_ekV_++Ex>B%<9p2-o(vB{8{mApK;GkI(B{^WDXcat9^|C0Py z@`sesDVixWQ|wdxQ{qzcQ)*J0Q+iW&r+k(2JaufUC{-=hBy~=zeX3vT($s|1tkmk% zRjJ!j52t>a`Y82v>Oh(xjY%^~vq@W==9d<j7M2#37N3@!R+!eBwkd6U+Rn6nX@}B| zr=3o_n)Wp9ZTgV(5$S5_`suUM7o@wTN2X_`SEN^`uSoAm-<7^M{Yd)F^e5@h)8A(h z8KW~MW=zfaB4bfTa7J`Sd`3z}W=38{QASNhTgI-8Lm9_1PG_9Y_%h>K#{G;}8Invo zQ#n&R(=5|Eb5W*GW_)HrW_@O3W?SZt%%hnnGS6rJn2EB6Wf55uv-GoOWX;N&pS38< zEz2{@C(A!8Fe@Z$X;yMpepYo>YgT(!Pu9V#Gg()&zRh}>^)6d6du+CPwqf?H?1kCB z*<slc+0of?*@@XH+3DF?*)`cM*(<ZxWUtR|&+f?HlD#$iNcM&7TiL&4zs*s~8K0w( zW0*59$2BJ?CnhH?ry!>)r#WX`&eojcIj3^Y<ebmBl=D^2wVazdPjY_9`6cJioDaEl zu5zwc?$lh<+?ly^a_8sT<l5yr<+|p2<Ob!Y<(B0x%WckGpWB_gH@7eMa_+6%2f07z zzQ}!-r;s-$Z+sq;H$885o^_r>o_k(EUTR)WUTNNnybXC<@_O?Q<ekjBllLg^$2^oz z=8wzQ$e)@&H{U7WCqFnpIzKtTAip;MO8$fVpY#9BM+HL)h8IjIm{c&YAgG|Aptzu} zptWFqL07@Hg1rSt3(gi?D7abhpx|l2tAf`BsBlQ3QsIcg358mPhJ{vz3knw(E-8#I zj4RA5EHA7t>@4gm+*Np}@O0tX!fS=!7QQYN7fOn#qOnCx(c~hdqA!Z9i`<L6ib9JL zigJqbi|UKk7IhaLFFI9prRbZYXGPD8xMI3kRBT*qTI^69Qk+$sU))&SR=lnFRPnju z2gPqnsFD#SOo>s+>=LgM|B|I82_;!2`6aC-T_t-;j+UG%xmEJ4L|pQrbZn_cscETY zscoryX>e(LX-a8kX=Q0sX=mx~(xav4OK+4uF8!_auTrjTblJEvow6^=T*?-g1((H_ zm6o-Xtt{&<J5qMN>{i*sve)Iq%Ey%}m+O_!E_W~YD)%c7EC(k|c}#gic}jUkc}{tL zc~N<3c}013d0qLk^5*i^@*U-S$`6!3DF3!Xp+cj=vBI^&yCR?>q$0W^p(3NAprWFp zwxY43wPH<0TSZ4jcg2p1Jr#Ww=PG`$oLFg8X;NufnOj*?*-+V1xu&waa(Cta%KplW zl~*foR^G3CT=}Z<ZRNYFp;c7X$f_|_qN)j1OqEWRVU<ahdDXlsn=1P%mn!$F=&FRO z@~U-Jd#ess-LAS{^|0#OsvoL;u6kMZy6SDUuzGB@a<y8udbL)yZna_cv}(KRMb*L8 zjn&JmJF53ppQ%1y{Y~}b>hEiY)F{?WuKA)SuqL!7xu&$Hwq{4oo|=<2S85*Ad|SiT zYS&uSde_F+*4FN*y;=Kn?aSKNwQp<R)xNL&P&cfOtfT9Mbz|$4>(uJh>$K{0>kR9r z)tS}Js<WuGtXoiLU*}x6xX!cAw{A&YT3u;fRb72uTU}?}iMoe%1NFn|$$Gk8SU<L2 zxn8Yay<V$cx8AURUcF<zYrSWEczsfRaeYhu=K5Xr`|1zYAFV%Gf2RII{g?IE>TlKG ztA9}cr2c9Bv-%hHzt#Uy|98E(exPA!1JR(=FtTAxgQ#Ib1Jj_{pwnQ`Ftx$7VP?ae zhWQOP4R#Gq4XzCy4L%J44Z#gd8=@NG8j>2)8nPPl8j2dq8mb!V8X6l~8df!|YiMui zZ0K(2Y1q}Uui;?B(T0-^XBsXveA#fV;a0=Fh6fE#8lE;hYk1M{+cI*Q>M~}T*0Pz) zES9-03tN`4EO%McvQ^90L)OmrW&4(0Ty|sGH_M(b6E}`*9NVbUXwW#j(WNo0F|)Cv zv8J)1vAJ<Y<C?||jhh;`G;V9`ZQRq?*Lb+`c;o5DbB&i8uQc9hywmus5j9GhhBl3F z(r7Ynn%lIf$*(E1sj_KR)3&DmrVCBqH~rN-u35Eta<g%>Y4faR%VyhVm*%wQg67iZ z`sUW=HO+0!TbuVZA89_*{8jUv=BLfinqM^k*8E5F-_7FYf#pM&k6I3<ua%7Cu#o%v z26OW54y3RODLtWAaY{QNBKU~Jg^g#BN<RI#jX41U5b}(j84#?F{K2Q3L~S%X>-jW? zKzqoio6er!2=4O5RPImS=VwA5?HHVl+9N%MINLqstQ;@TTr&cynQb&X=lMN^yo~wJ z^#G6_s-_1ZX-=3jZ(a%~B%-KII+vZ_r0OQQ*=0l2vKzIH6F!`Wgee5lAknZ5caQJ< zW}D@epqJp#vxC%YXYx(&<$IeTQsNh+OLN>N6eZ%zDc}+}C~i>TL)=_i$Z>4AxI*-? zNCg*n6B3nmz>8ec2&E3(Y3>E<$8b+d81BX2%4{kl8RkW!D>Qc|pLrO>AY9wP!ipKt zkS3&iL6^PY@&Z3KRGnkLWMmO>2p1tRTgPZ|gfpj`#o6G}84tmoq$PcxD@IU*0ZNZ7 zlbv_>&7%iW=F*aSGa6UeIY>Xd&UB;b@6ZfnfW{nwMk*$aQ{WcGa3v65Ql-qU*I~|3 zd9U4XYxVxsbMZ?13*v$mBUwL}cA?s*U3C5{Su5GyId2-_A}`$YFBG$$hB1JbldXqa zm(8U)3#y+%-K;ar`|lnI?K{GT;s8JH1s`O%i?tHL8gO>!;gbfR6?D*6n(dGdTGG)+ ze+$(T0CFDTM4CLPg_W_;E&~8cLQ-9v!fiW5W)P3azcyY!-}{o_tRSamb8A~$>t>u+ zQ@J_6EwdH;aO`p#f@;veI_QP8I0XqAE@>{VJCjeMQQIHFqRxBBjoMBO<m0%7$n~@Z zUbqs7@hFk57bGKO(|k;W4c)to*|Zn0tT;ui7|yWzpO#g)8}>Aswt(#_!G2z8&;<@W zSVr^pp3u==8Xdg_p*qtyFk-z;;uO(93V3{Rc>oAePqAV?6q9^OJ;<t&UxZeOf0VTX zp!hMU2bSk7z(^L1NmAQE^P_=4XJ_({-b-I^!T|*_6jG7z^`<|Vg)}N8^PhWO)!zQc z_VYM60*%4Z5th=4r{Rtu41F*F@!2FN1~lY*2vt5>lJKi=H5_q@12d3fMhm-`zYuX1 z>2@L;LKXnn$=O`xbP1tY4{qk;E#T$@Gz22x2Out9mH{JM3@8im88ivmKNzUE*Gx+^ zYG|PhC0GqyN(n_U-1{Z8WSB3_y-#H(C(xW`1w@L6(A+P$3d0oY?xDlC*S#dVsiGI5 zw-!Jg*%Uy}N|K{9t({Y+5Si5a*@xZl#uA(w)KX9*7sQ0R7k)uxP+PU{yC6D?5K0mv zac5A=L7TD(3td=bOr%lkrXIGt2hnxfkdIJFB6{=vt6TphHdBS)hF-MY4KWB%fMEi8 zXV2k_>%SwmP^oXNuW)oHc*-?5u|XoJJXG;Bb-@38(%mxRI3xpXxp`wV<T5}(!HVfr z_$kjG+f~F8l2gdAcYpz43VMwR&`#tO$~dK`bQw}ggoK9>)`cBQPhU%ORnjPXK&z^E z%u7CoN^+3oMnNUU6ez4U838>RM??DT*X_rSx7{OHN1RUONVVA<3;Y@?$_;~zDoKJj z&AsuV(HvRw8=%PMN}Tv6N1t~*`Vb#Rf0&3GX~_#nn>~XHX~`LYhx@RP0muW&Tbw7K zu0M06`vJkJ^R+l0Q-c#FE_gx=1q%L!&T3*pZ!?=)05i7`kX0<hOvo$Ftjy1^%p@SQ zxHY3KpXfgPc~1B%8g0ExmRyYPbKZDu<KBa7t`LW)!s}s&?AH^LASma-y(wpwuv39@ zxX}{jFic%T7>O#YtlZtQp>6p#;t7ZHXnaRj932E<Lme`BW;-6yv&D+Arf3^;nbf4i zPz2B}sPMTO!Vx)tD6qDTxkT!GYPXTMhtas2Bwtc8osFeY7~Mx!b?3EXul`?TT2)?N zRT>eI4%>t~+RS`RnP<170Q$pEbD=&Tra%@gbPLL*kqE*-OZZKNb?q&qdv`Fs#dL28 zOePRMIY3pk=`2mYfZ~e)8U<bga<m8r%NL%ofq*kB=?pGF#V_U!X~cx_NBrpFXat`$ zz(S<-2qyj0(9stR=a;}Ix1xRWfa|DzXAuRt&ijD!@derTMR{}7|5+eMP7*}8@PsDK z0>6_H323ooK0m)i>CiY>%8bTwQWhWSiHMIDIzUUqpy9G`Biv^RN!Q$k8X8wQtD}K* z43pD7u7`D@IlHS2S^~8L^5kK@U!yXb%R9kXNyD9w3_wCTe{l!IZx6Z{+LK5KA%_&o zHbR~b>O_zox{bj>%{&-96U}6fM*c=a)G4cgEBwHXz%>9Uq^w~h(~IWGj`><&gHJh6 zBijGz$E)0K6Play6!RO*7pGf6KoRo%xQo4|bZ<4i5H-`%QgxwBZ!gme*|6*v@&Ta5 zOfRGXV3uP{bCsHmHN5=e=`-@v!-Fq;ZA5csPni}P(OZD?KV^z&RI;6irOaojl6J|4 z3OX+`rND(}j_Y&2fEOQ@zZWKc2{I2~6f!`P2h{{T$H-Zn2!~_BhFUn%vl+A+xLf%q zdipA6`U+-xD^q}LEM3PnmUPKIE4Os5+yi;!RQcYFEiq7pM3;;yPtPciCOBJaWlUE( zA@om#MdD$4HG>mP@a8~JxDYZ+WMSmmuy(MT$siOVby_@;{AzvQfpwP&_C02ILLTne zPzD*iCoW=K;5U@V0H-yK697D5An>H0pbQ#dp<EQQp^-fu45iv&4$i&w_rO_Ger2GI zOGE3KhwM}u<5U`jx@dfY(Mo#4=PUyTZ>2t#1eOJ%=Fof^=0kQ3BwE9WgF(z~X{9g0 z&3veCOFZ4uJP1#^Q3x$X3h}L_3~Nl|DL~0menvQAk?VR!eFfOS-y{%UKn;UYr;qw~ z`UBYnGAxs&0DkK0cqUyxkEtiq;GN`23?c!a_WU$?w~Y;=G5ZdpKMS_an$C}r$4n_6 zf5J_`R#~_oDyMO?@FB8exI)0-Laq%MH-CBqU=mVXWT%j~mrP3|)v%b0C`NJ=HY)@P zaONbgQ4BJJ2r^3^u4VSHW0{r~;PqMX@dHxdMc;0`vf|D<;u&QJ$m6)e9_l<&cZ#k; zF1h4*6mYj&5CtVC#<-?PA640%-wx66LW$~iWp)^jNkenU<tZETp-K4&gVU;_Yu#IX z*V^+bZP7*0uI)juPXb{L76Vf^$jACLF1{6)k&&;=Cy_^VRk~J(XjH{ZnS6li6Fxw7 z%J!GN=WlHMfk4}E*yjuk=|W~ew2uK+asXJ#rvR}CZVToxkPOm=o}9u5kY4rVAp-}j z3Sv<wBYA8J)$Sp`0L9QaW%C^~gJFw-^GJ?c)2LSdV6FVY+W+_<pU%NQnk;*?x18>U zLZ;UL7|&J)w|emegaZoFTR`^~(!DNFkPVIdXO$r#Zcjtzki;bH-NsXznt$}S9T;35 zhQP5?;Da90m`DBN9!RSHf_X!ux#C||(r;+?k@%NO_<Z;KVXy!L?#B4U;{6mTg)rc1 z{IN4uhrx=DF{Iowrg)bySA;{njnYHg1AsT5EjGLeZkY~w0l+Rlj_Mo)Zb=8oE|gIj z9w%Gbm2`#_hon%eEv+deM?7F}JTOD5v*zbqk8d9P`RhOHN#`?yfI>bFU<rd6qqM_M z=(h&OhleCh?cwncV<e1^Pq(~4g0#2=GA*GIlN#xRgTh5Mm(taxut9g3`J8fTHe^2~ z5nKq)emXcf`{{Hv!~$|JoN1gN#w)TL*=g^+*+_=X`4hf{8(CjSLO`2nI8cTkUL0d> z|5irL3>#M}`t&1|7%yie#)%LQ$87<bOda$@(9Ob`Qzz-kFkJQta-k(p=F*c-F~}Se z?}cm`!wC^dvp=KJG)s~B-vpeR-%d!rBj@EU@z1j)B<sQ<Psc8t=Ke+v%;2vZ%nf9= z8QDCcH-o0!FDYl&<Lf8j&KpeMH`^Y!ec$rq6S`$a+pKLCM4!ZzwT0_9n4OoquC!lY zeWUsI6S{ffYKL~mE*D~_M3aSlRJgqDROjjTvun?_UTC`bgl=+g^;qlG?%nA}Y?G+4 ziqbbA6&#J}0@0Wf3AF)!#Lvkq5X#C*r~>$rKo$y85l?2wTM>jEcVH)(5BIP}WItLU z9?p<<eZ(zvAf9Z)_ZpGD+=8`e0g)*=gzoU>6l_xYPaiO|pox%5z{fJns-tkWvuL68 z!ciKh1m@6kGYk|xypK&Y@XS#fXXJf$35giEb{|qEKHg8F1<YggJ8s_tDI@ZBYsl@# zO(a@IKcUQNTy$g5HT;S_EC>wpdM!|Z1^0sd+m+v|;d}z|Zy(eseH~)J0cvOXv;7RW zxR3bvqM<J+{XZbBfP_1_Yt-v0XmJEofBF<<+XqQh^1_g^V`+C_F~X*#e?AYkCS)%) zL@lBAaYO!$B+wo5&;9$*5CUaVQE14NK7yNqA3edJ?I*Z9<dn!LZV16;@=ruyWs~n? z9Ss((DfF5JJH7j3Z<i3LoxHuKfA`L_YwkjY9;)PS{5jt}3)i4-1`f~q?q0Zt;M&QB zCBCuo-X#kNZY~9ndiBTLE<sMxu3FtX19wLs%enxSc-qMeD~@&U-rIS+^%Cx`@>14` z*u6oUJyt-6aB>_@Iz3k4E<GxOvSOpN0xR8cr_jj~=p^$(g}mG40qeuMVt1w;EI3h( zJ3g`e;D(*uUAxyGT7D9DU45$XQ2Orp?xh=+v_R+8CqJGp$K5Zf4ljsHOOGuKs}8^~ z0M9XWw=3;H!HFvAD_|w`-Uo?oL{P8t801|K%sxSjkBKJ$%<J*REF+u<X*ElHl?%aj z%SJ%mGG$oQ6Er$YqKQAC;pPNt0Xv)`3E4#&V3U)Us_Fw3ni~dC!W;PhzdR3CJn2J4 z6ldV$!x<3fR3A4Aja<Tw@D1l6?tCaj{2L$x$n$WAA@rVme!>JP#S<t9hA|V;^v?C6 zDFhVo=R5kIf!=%>-F&OSK&yORqL^AUYtN!f5#Qy_&UFiob|{%n#8Pd#$F05&d;=y$ zlKgqqt!+n-bzW&-bRg(b@<S-wRLp$Wap~BeJ8OPLS$J%|%<NLf#DIWA$I{u*-wM0U z-uuJ*Q*VOn!zU>+G}EoZ8v0y48~!6A;CkY>kQYIc_ggM+JleD4z=r;{ep|!)68m$n zLK(+m=H~h{JN6yhd}YNWdEa&w?%9DcF@f3c6?V}3a`(0+-4XkekLO${_b3a@j!sAo z%lEBb1aDYj*Wtb=@OaF{>{|eNB>7eInYD*Ic5dIicg>Mip&O%nlJ{jFEjn9+-*a*G z@y&a8Z9TH#-0~aJH+|1wW2rPf?0q5E57Y;&qg$Yr|JsCHM6$BXr~>KJT!lS<1BlD; zSh`4_R)NxK&~c@0@)Z2<N}<(2-umf}BW_nfI}}8PSKw~I6#GzAPjmer3Q@n7%s4A; z0WJ0aXlWP8N(OTkaASob|EPhq$83@OzdO(o2AA@a+I+J`pQ<Us1t5U(b||KTjOm3d zaBHc&rxN+U1|VPLf&VFh^FUA~){EqPIS>4g08)c7HX8r84>l(Mug?n>EUPb&0&rsf zi_M19clhiV{B;X+Xj0mQP167C^8$t9$3A|&Qf9Zq{9mwGc)(e#Vtg5XpU8fDSvwj^ zSH6I0<D0Ot`+t2P9eXzA#pl+siZnZ%MnBVN7K6T|kr=dee2k6d|LX&`%=e0rmR3&> zWaEEzc*q9OBowJ8*c_Tf`Sime5L#$lCu9czCY&K$9{5~8(j!nZR7RX5HNZn5I|DBt zPLBYE<~@E0*+Y?`$xyBlB{LuE&GXOO138!sOb;%|YsSJ~z(_9{z@_>4%BOOY@aHXj zpJ3h>FV>>PICF0CfH5iTWlh1_tOWI3q12@8K-&6w`APiX7+fgw3{<s83c!~rZqz9> z>eN1{zYga<U}1#9kppAESJ2BcU{!#6Hpq^Ksx|zfKhtx4HBK&+W`lTdvt4&*-C218 zSRYmTI7$9b0`f;t6Wwuf#Z7poy1(#9`u^yiKt4C`c*owJuKnwAZeAZ%aWk8Tcc>J@ zzZaRw|JQ+lKX%}}B@4m70KN<Uh_#y{+Jv?fxS+4R5rH0quWND60bG;(Y_yRBXUHv9 z14jqGI%kfXUNlD+bE>i%99(>@BF!@lDkjSsJpBR}N86`Z7R;_P{STcyWZy9#6!C&T zM3ZUm9zceyJTnRP2r58hoeZMTJ@BJEWFZ4}Ek1x17eRTg$<$={D>42|1`M(@83f4A zq?;}~`S=)4>9f$H(Q~Q}(zpgL&Z2P|DJ!7+&@=)UbB9A&S$CXx+iwV9BTww(PGdJt zojol%HI2sqi*b-fmuQ?yE*l587T*wVM@v#cm4Sj+2l=bAamlVi5j1%nH|b^RKxJ2L z;n^89F5bs?{*3=$1QM+gyB?t_;WO5i=0De&OXxV%I1W5Qv*RdE#3|0<o)U09iviEl zIyCDjn(!D6LG;hyTY5uH<rG~x;~dTjZn@5^M5@~naq`vO$G_cy%YRaC?v7B)krNeT zOoJO*km9D_c71>H-nDDrLNc?o4!|E&QkwJ3V1ranp`05neHUNQNrpX+vZb8F$kOSc zI41iiB;`(Gr2oSsE0&p{%w9L7A43|nHaGgZ><<fGMKF@<VDnL6SHKsnt{HM&PowX^ zJ_zMH0c|9uc60>$8xsKw`xs@&{@O>@CBBExpl6RV=5Q-4aReJrM?kf_uTb8<-zzO2 z!G<yNzfdT(h0aeh5wP+nQQ_wge20yP7iE*Qm_<X{tC01ANy^{_Y?#u&0f5`;3~5~0 zRnpIb3F|cY-Eh?cNjk9C$uns*8utW$x4_q%m81i0o=oM^ICW8aMVE#vF#dEHKU@OB zD{VJ`_W96kiyx4d_lFCg_Y8y|^teG^uX<QZ`V8xhM&jmOJV)q3UCdrKLL_4pJy36~ zhm97=_(cz^#B{MSf64C$g2m_Cva9L-=OQ)^w|^`Df{WAWPIj)e`(H5w`i<Vp&Vx5# zW}^W`Cg<aFX1uHMD;m!De&I&D!GA;|o(rs&_djAEB>u3+We1-%VDIGr`mk&00lqr` zA#i0%KP+a`@)P_E4cN(vcpC6KO+YI1$q(L87(0l)3fa&XK$ZD_So;#VDysH>RAvUx z=rxy%>wub;twvg@nOT-*mYS)#<pQn=E+{CjsK{ahf`Fg`qNs?93-0^AXS-{*Xtvni zTb;Sg#rOAp&dl6<QQzwG|NK8NbI*CsIx}a^obxQ-=eWGT+~1;r;Eki)9-0vFg!h!P zPaqs!stw{>M1_m3Il#TRl-)o|Cykm}Y`yz7wTVeJUwND8FDl_z$=5?!a~X()4t`ay zj3E{$37-%YvHe2`S?nS}e+?RFG?d(}mA&w96a@JG+5k4(d>9`e<537=H{|4OATjLB z4e#VY2<vL7N%|VDLtJ^4Unhy~0QUII&O?WFnbA@LO6=0dcXat+*sYn;QTck-*^N7n z7Qo{X0mbH~F3rqbnwm>>CFIUoIwLbCm4v!8Ak<x=R~GdRU>)XmA3tQs_#Shgr^+&( zU)y8%;8PPW&qZ|~r5`KUv8ibPviHmibCR>uv$E2&lXIxbq@1|y*sNLUGn1*(QK)pW z?r&B4>ij-ahK7d^o7yL?8&#X$Ew9h|p*zBlOnq-YDn7aBz|zvf;*x@0OMoXqeO;2A zwJ0+^J#$f3@)A_;YNX8;)xL>p)2wQ*YeMi~$`eAge9bWw04M~Dz#Fh;u;W5tGUaJ0 zk0uFHWIKuk$c-^Cw_pz=QX<Z`U|ilz`&OKNl8G5e!ir8IEJSnF0<ek$yV5~Y6vLtl z)h)dNexaaKL@*COH5+<6gy|A76HDaNl=EqkSOUK-K9L*}ULgfJQT++4`g94*rlDkf zTi!;GAu&6pAm_1XA$tbqv}KqM6cB4Ug|q~b7HVA>2tzG`Xx)y8*6oOB-Hw<y#4Lwt zZ59|r<+DDc8SZ_(fa$+_KwKPp3`VlRhlXbpa83{hVlXmh>A6~Y)@Kl>liot4UWb)O ziW(yMpWfhQ5j69BXidW(0=&NoKH0)-+y2fpVZPrP)R^H}QdYs&#>YJlmS@%uqdddX zI?xsBQ3Sp;7F4FtrHBx#G<;QjR$~>?@g+G?uoqvFftz}gGagSO>NBNPBwmC(>N;~@ zcm}!+gkJ&DU16*>azM|yp|#Uzqi8tuEN=z;I#GPqwZcyj(JHKH-GQx`!z@qjz?s_x z^P}8O--3E^(3&O(x)nL*BF52<RxgO-6Xl-p6bjpMa}DE-TdNi?!Ca_#<5mT@iI$+P zd_3tj`~}3}iOiu7#MAm+dW<0eFo(zJfhPf&raZ~Y)R(+&G-ekmAr#<OW&mHrKztF+ z2tI>>&mrua)&4G@z<@ZcmFllaBQyjAKu|tEs?pQ!`2y3Y<9oT+j^*?5wn9lh-(*vf zXMG%7-<^%r){latFpAv$zd>8yOLMIt_k#%V8LwMj5(EK>cmMa&%6g+VWZs9&+i>g? znKx?CX1U`(A5I*3IgH$0{^h3uAhM7l29WG>u;I#44qnKh|8n;~q)Q~8Btheg%vDx? z;u%;z>u=x$A|iO~t|SDLZUD>86^c-({F*no4$D-F`n8A3Yk8@!q1v+E_G%eTkZZCq zx1S_5a83y3lHwq`rIcf>t3|sWqP22%=z*eU58YZY1HZ@>>LuDEt|HYMcBo=LO@U=_ zVnQ?QG0A`@I`WAKte0cbBCM6?BZv1d1W&=r3kU(>{>=v$MuGN_@1OB~99A^{<`{_u z(cd2)ac%kVS1<uAV(^*bpkFhFGuBc$4>MOwkwM=l1iX>*@5?Xl+e2Q>2tdZn75M<O zBKmdBlN%T-<&UCD{S4l599DHnUJa;r`dgwEpGx&KlY$yUeKMl#ok$?Q$*2biazfP1 zn=r>+4}f0-;toIU^AwQ%8W3gpY08htdbk8xLScQ7hUmLn7=h7IXtO8ug8-;QhC3hH z4k&M#+FU0*p`rXdsyt76UAoL{U9XZYY^zU}lFb#PKLGw$<bPs3d%{&;JE~FOp8uGS zOpplIqY|<$yZ68A!9TS|(l(b0VdbCr^eUyUo)YPmc>-1vdA0n*1j!&Bv?OPFl2->U zDNMV)72oLIq`!5RHD<Smw;);YS@yVgdpI0KF*Bhx63Drr8A}wgZC1=GG>QocJ{}R4 zIMDWcf(bV%;aG+^MlsNkftEN9y&W6HN*Lm|i1@9b{E4^4Tu;c33YX(U`~#~E@+xRu z0{Sl27wEg*jODvRo#mmpvQY492*{AS?nA^b2SmC8FA-ZD(C9i)fsmJzM3S8RPJrCc z`~{PM0j`C<BtDcD8hzIeaL)7xF@Nb3_$RdSp1=>8KP5!BB=GzKX)BNxl_{SD0GdO8 z7b}$Pt{9Z>YQjsfs1AEMri=z!rn%XNDD$eQ4h#K#%4y*ZjQ02@>?_v!`v9Cup2JMo zdTJlb{C!FeGxnJ~dQro_V6fpMpr`O#l0E?|x^wuly@HRYxfMXr+6cU*arktwSZ05L zWtK``Qs^ThVL8|xMfjTXx^Q90m!rc)#4<Bu=xGu0$;=qKSOnIX8SxgwR8DJ1!5gX1 zO7#|!y9HjD`pohJC?<9&J%S(aIKGuPk@!-&RVH6#{%@LITjSH&mn%;0E%|uK4-x>d zPh%Kh@BRs253K9y?8Bvp*KgUo@=W>_O7uY6ZxM+niJM)rnz-5LDLDrtL)^k`X3d@P zrK78b_pT6Hvg7MNRO4yNCVcD!eJ9rDJWck*p-;BRT5F&TWCnp6@5JbgYsWdBD1t1O z)kYH_M3tWuUlwz5&5sh|cmPzOpx(Jju`{3#y)YcRlPa_WYMw{s|CNgt*XYq`EJGa! zc=ZFDh)dW}EJIs>OZYBz8#<u+<CJfrJm=!rQ*Uf*o&Qz-@ogJUWnPqi1+e;{OC8B) zb-9gOEOO32J>}4-ZGFK${3z$p+D+T?2|wyrp2h~i4QZRKJ8~xg)N2wzy#}u6o_R8J zFF?IknV??3!ly1V4qwI^)~+9&Aud}}Xn)Y}RGFV8udogg(fgQ0{$Ih0YtL`8EBq^y zEvMHrnRWcX*6*+2=OGO|zw+p(nL7`45Z7;`07l(c9?fSnYz=I#-$sHYHL38FDENQE z{m#Dfw!~L~pSmmjQUwMeB%S-pYk3(e$!4mx`8HE+riztjZo$nYFJlFXs5&i6OZypo z>O&fZ?)gv2FW{4ac7@X)Xy@MZAKF9&aT<QRHvq*P`gTk<gE7ynz%P_R9z-x4!TutO zd?%0($Z=wB)4##U767Ryx`>c9E4h*oO?sT!c#q_AF%)ZensMOEQ$*pgiK6s%r&Kr< zHRmHUid_OlflX(Z1(IlQ{Us<7-|h_*Q79H$Q6EUJ3UmQBO4;t`ukPb1w)XLUBL%bf zc&$*ocJ0(Jn>fqH#?R7B&Nk|8HrPpU7z?%c&mOwC_4=xx7Q_3G30%6k@v4Wmwm$Sc zr5-!D_tcgT)?8ZldD=}oJuPHeo3$M_ci!7wG~jwr$5<R{=|s66+^#h$dyVcelz@tn z04GjFq#QRHGDkoI8kt+-t|3;HNTDVP&h3bFz^p9*cgppk<>N~f3Bb*=ir}fhnO0Lw zjno((4H^?9JSh+InJ=BPTH4oU?n!}VTd~r^0~9LR^bpO~F!MgBT|&30Y0TFTYRjz% z#_)sMGAn{X`=ADGB9YB1V=j{1--+4kh6Mix*w6U^NZ+IFed3O|XUSxo2fNjw-{<QY zffi0i2{^5u;&7Kh%O?=u@zo$Np+yvk`!RO!gI)}2zl1F^)z5f+hJl22E~bqWdNOUT zPv~tJJu)-X7Yc{?XRP*<hq6nb&o+80*`<H2eeX@<8X6g^{h{IYz*6@QqyVhbPlBF$ zv;amGP=SAFp&C&jye@;f4H^YM)|DiPZEYAiz8^_?ZL!a!w?(AZLgUCDO7DwB_?kK$ z`jCepx=<U_!^@CcSXy*XvfKXdUL?Y(fe?tzk>1Tre+0o-5Y%0mtr`j1Xr^=^)jZYA z+!Q%pGBY<q@C7sY)}7f&l7_vDe+4lbFK){8=t~;42&tGIL!*d!L}_~4OB%`8;DOB+ zqv>^RF`8Zr#nA^8fb2}f&<%=VqfKe(338Lp|34jM6Yx(5*$n*C(Ri62>U8ze|4Y^d z_xvZ5gMT{6B;lV9<6Cn62)Xzr#RzgYl8kVL)2{;waN%s8$f}`^a{av`xIp+s8OK@c za}uuun}%H3xPS0lMosBerKtIh-jbohpaD(>dyi`-byW_+d*=N^s48Ac<_wYAsp1`b zSD($eEF~**FHJl%bWitUAmnKe&3tkA+uf!=B_$~tT~_zmIsD{AiO<%0OdJw6vCrJj zQlhf#>D{k=GW@4mqOwSB|H`c;Yj-U_vgizIia#^$@c5m>H}+pibv--x)rkW`BYMqw z8MURox%}-lBe#y*Kb7k1KV|s%2_vQrn*Szh%zSy>n|s5~MP7xw8qv4yc_pjYY|P)5 zwKw$;YE3v4yJt%2gbkzD49lf@yUgzu^Y*wgVbT4e$C9L^4q6hLH)hTFlIZQzsqSIZ zM@LN<KXvr%(1by#J-z3O{u_ty9(Qco`+$NLH-Kz9{^>BjB_Etn6S#z@pf@6?5C;9y z(|{<%Jds(5Q)$(89DH89s1zCO#;XzpUmKu0!|&g95a`0^lySecJ|b}jix4JXKT`C& z^q%q-oR-|bQ*;Ij?%(oBTKDjw11ENy`yAc&4y#|=G3Zn{u$r}>az5F*`|Pr>=pns7 z@$itXJyuJ6u6A<u&eGL~Gd_?~l<8l-edfij4`qwWCTaaA4<9{#@U-4g)<{woy|%p1 z+96xV?4L|^UClVRdhfP%$1*=eZS#*#+dX0P@S^^CRNwymt!vk8S-vOjC~BPZVZ_ma zrLPt~n_<;CZ0hKV6UIyljUAZKmu`38tU>u<Yu+iDupPD|vD*7-$8vWUZ7f}}AL>VV zSbJt~o4Rqr+R-b9!IQ>ZZTqs4f;DUNN|tO(-GkcWPDJk?v-RzwUdy{c?-tjN8vvsi z!e!RiD;6NLdp#sDP4rZ}R^pVePjVX1^Ld{sC%b<$MfyhO4R%AAC;>HRUOT17sVDNK zCuF0++o-UK{u)a0nXGu|wut>PC+175<!^J|-?r_1&NqB93*QmCu77UNG-;yTa%Pv% z&{wDka<3Y_Zo=j%+hg}8ApgaTlWTVDSaUMtQ<Rug60v4v{;;fpsVMXO+#VB#4xP}$ zDwQ9xYSP-N>t}76w=EIn&ZZsC+rDny_Pj%BXHas=x=E|X=Z(!CwKy~dWxLJqGj&)* z#IUJ-?QZ_bJCbIi=k%V|#dvZuS?*=9$uOVltIyTjQjWbiy{CnB7~gK%)AL(>#pd6b z_T~7`q%b{%|3@Uf(>=0V%qy{75?=a>C43b7e$4sEv(h_y6aJ}49^WtOt(e}k-i&)A zvFBGT@kHG5Sw~}zL>-jI>vf&Ne^m6`n3*$U=0*wsQG9>~&orZ<_)1Qn3TEcU<V4Y6 zppHCYI?-^I838`dGw^l$Y_RNjLT{&u14c>t<cMTAuY{`p(#T3_Dmf~HGfOk9KMNrv z-)F@jehyUjvM*vil&6V8azzitEPYE~qZuzMd0;*^<Xh$Z?ULh`?#IMoT0XrGk!^jL zJl*=9bzq;;4{@yrb(q#d5;5Xf4}kaH*mh?8rFlK02Ev^ul%G1A6e^Z~)X7ucgaUxf zQ;teyjqs6Qfu)0>T5hTU(urQcUzHhnM!tSs(q{@j(+3jy6o)zc_163uNblgh81+y9 zif*+TxAKx17Uh96n>!sGQ?6R_w;R`Ewb_sI^;6b|d^<+M8v@<h0FC!xXR>y$E83lT z3MQv4vwP9oyCcp(?`s@G(t-5tdFzVvwxvO9ZwyQ8pBK6=eEZY`aaQuqMVoSp3JQv{ zH>JWNZVXEumOZLqTv61fnLDBOHx4Q`!XAul!v5|cd$E5yJoaSwaHi(qZFN65M;0gB zTVq3Q!%Q+eGlhkJL0Bl=Zg9H}OwP)yz~t;InVemPqyQWcl;>Zgylt^IgXJbrQLlXP zFH1fs-Bxc0@qSPnBY){AXBQd8a+0V>j*kTJFOLLJx~<%9jAEGY!9(#W_9j~*idB^E z{RQcsbXyWd$mJnc>7s}Ic}-Zxxf<wyl{b`4^lL|dy(<_f9V7#ufhcVGC+N>RAnPsp z_jNnJm7v^A?yP@Nj7r0YlV0fu%2uP2#6RS(+AeMS>urI^8>M}ead6GXUAb5bjM6&J zesj#2-m_om%9eC2>2nlgCXEmG6hP+VX}gz~6s_EreTcHZK5szOsL@da=5_DN7I!Zg zuzA$}DEJHDV|<J3OWn3)Lw@1f<(o6%TzQnHf2pk=Q!;Vq42e(UW4~q8kEnb-(0Rqc zN1=>YleZbwB!1WxWE_@<88swc!*D6>jp^_cl%n19e~3PWIfm#pnQSU@!oWdQ^jWO* zf&|a7lmOd5&}7hrvsf4quFqMzfy@VIY#5s(!FW(W<id0?=N)O&CUQx-`no*n<L5VA z+OX=9^pP^|vo>(c@(!#7hw!h+0C9QB(yT0!B%_W5a-W+yEfw|Xs~9Rtjmey`G*()% z=WYwc_vE;}QCmi??vs6F$>uc$rRj&HB4zH8iQ9**?v()_6jV12sm#pu?3ATcdm@C& zb4;N!>R(3nC(lTql{F_jPFlYAUM<9LowZ@|>M^;4Gj?Tc%w4r6yJXQ0v@(C!w9OON zj9fk_&1z@K!mLFZix+1=!kkSl5j60;%(;LDhNQXt5tjrl7A1MsqS*Agne(#ZrKS5U zU#*E7<`hj|H90RLdqnz{wBnqVdCLkj*QabkBMDn(Z<xAzV%|GT!cs*uxLsse`A^3H zeH)A~>%qKoiZ+0M$p-w!2JquJw&GYrQ8LT?r-RHk|LHKkzYJ-Jef+?4O{I@EAnJJc zzSryEL~f*nibop_7N9l?wem(A3HaFVdalYKi<90kaD7(hM(GCGh9WDc{IvrMQkG?9 zEK6A>0aIJhYX{~g=isTrD^{KlacOck4`B<Jc}N_0;h*kAlq*;>s>z|enq(X<58{XA z?YxErtz(yRh0}X7hTZd@Y*sm#QxYHm`j_?Qfoza|3LX`X<70GO?hlw|lVbW9wc;qV z2j9hU_#W$fuCf<l=h~JH;{Va8w#8m1mA?2YgIiK8D@1~9igzREV`(&2vf8bCWq-f( zV}ZMFXZ+O6=;c;f3IBdsLA?NnGaP!=rs9Kw0A%=^h+%4yDF$}w24U3NnU7|c`U6}w zHer!M_W}A2@MuqQeK_MQMNa*w#``cq+e&qj#)PMcX!4ZR;wj$-%}6`!wPE}F8fiB` z;X?Qx-wD+UL468sia=94P{RtqvCYHg<+No&jYDZmHP{zpM#Qy{)u8XSG|_yogi<5) z4>eqh2nz2AxEeD;4kqjiGRqOq*{FNd*dX)9)<u2cdr@Y@x~NH%f{WtEz+u2eK4M>2 z6)V7taXCm8wfe&ufIl>1hvI3FGcJ$8Fq{>b`Y9D@lQllVYY^S9vvmip{>~n#%{G-* z#3P&SscrVl)aF2M$=TqJf|93svvfk1JL(b75gOh8@HY{T-a+o`>8VZn9io)BlF?Q% z4X-6QD<`!YZ<*h*iYWD@BN<n)OP;;{oovatEx$8s_E>3fKP+hJw)vQE^V?=`9@pS; zRv*V^E08HoZ-G^#(aks8K!)T2NPb9zFIrp?qFoSuT10Qd2sJ;jk@Qqq??y&{+-SWB z(qrQByFP`i#$6R0>8hrX9_dh~5mw_OD;k16jcG-GyP_fuh;_6Mbnl@ZBO=0F-Htp& z*J4MW_KnzO+V$4X@Ke~|LV|sv3u~u4&Ep76o#&f2>N#SKkA+w}ZXoe^;EL2`nHkGd zS4x|N4LiJMKFe-RmqN)O0j2voL9lXIOaDuAyt$SpFTr#QM~rqY)@I;roRtTyK_|lK zMXxr@qep3G(3k@ALs-k-{ZE;n)2ysyyDPH7s{ZbO%G$)vN^hIU3hVp3|B<z$XKcbB ztAl!S2W2*y?ceclTJe)5|KA;C<^NBI7X{$|cc?#l_xA@MsF&b<{S$`kbex1{%WL@k zj|lG-;ge8mA=*i3w3ulXrzu|<@E1b-8!qG5viY8b758_Tpt{0e7^WzjT*VGylA;Xc zBal8B?$061sA8-1R54Y0I1}@K=cSrnP2>I|@&TYQMBof8NX3WZ6ho@0=ai^M1lzFZ z@LHJFi|~03wb9@~ZTtj7Z4?o;Q9#s2fl~~rqKdYRI^_wj!ZbuuVh=$f(J=(YOib%k zEmWWV%{iWD0^Gm~cGA#MG4t~j%0m@kCbp-0Pa|KT_Z1o;g4M`}>}Auz8d_P;PBU_S z8mJwkUtXs1N+R$*rCGI$Y5$oDF?cfcUIBdy=*s}2(4P8`_4B+8{dh->A4V%a(>t%m zj#Y?PWoXqmgTzpV5GelXFx{_%+k9`=>jX~W;F!~YH?b_vLTWyo#F_~U_xubfi?i51 z4ks5lDGLU*fS-1LQ{z{J;SMyrAkw^ei2F<K5P9-o$tZ-<S)j74#h&N;;&X?*SF|s( zJkDD5KnOJ_tuhfZ3Q0RCP&lVqHR&HQGOlR0W8lDdwK02qn}j}5ph6~08wa7$zlYjD z*P%FpLuetuQ8K<=h$M0bTVql{ASE6Pha-~duL@NJ2y+131Fbajt8B{Th%m%UfKUg7 zekK8>_*;0_-on=est#r&h}_u-pgkfP*KLJ_tyl+mYlO@Qgo;goU^RhK{53Q|%Pmh6 zh}_wPg%$#tncj;JYsd5u>w-)Nx0tO9D>mvwuh6y+-M-2Y%@lE7AwO+GKq?RnLLk-o z3l4-#AQImcur7s<M$o*snm`Zi1QPA(qwHIr#FmR&gFBG~w;!hP6G6yaM`?T()WdMv z2|3XPdYCKu<4nY{o&H=qt6A75Ul2!a|L2xx>kb;P$$k=PygNiyl!?E}zBehaKrNB3 zQ{*xgI2J*HLvg3@8PFTjpJrhOSVHj9hoBJ`MxiGNQspQV%Avkt90jC`Ab6BFYLZy4 zvR8e>j^mny0*4*P_#qVzI|{L&(EX?hm3fY~d`{;y-qZcDzMLKI3s|>gxp#DQAL$Wz zEtHPvH$gtsw?L4iqWhX;=;rg)q%<GPHl?r4%PUIX1eSW-Cflv;c(|z@7ZWosZWQDm z>7#PT6-|{k>wh@mwo~L^o4(o1zjl1yD6FzX{;4tJ&HN*C$0I-5K=nn73YX{$S@yV8 z$`z3iIZJ<+&6d{be^F&c@brV!CF5ZFiq!bX*+?a+2w~6+!6gl2c`@0p8rrN`Q}ubQ zP}e~LD;1QPvtmFoFNBn#066n1usvvj4P7WR#zWmpXa{7b0*(gjUQ&)iYJwTF6~K>U zJ5<8xd`qMAx8m$k06$JTiQ)W=Reu}yJcIu-b4k1h*|81|v`AP4?_t<x-ISY6Z5rQn zQL{WLgtjRBBjhu8SU2TT&D>$#l!yGtDmouCH(WR6ET-et{)iE1&5jf%k1v(h3Xh%+ zq6`ItXNqJ@+1*nq3YW+g6yS8i$t;ib-H`)OJ3VDjlBND`(g({~?-b9L^Z-%Fs}Iki zjw=f4ZtXZ}!&|Yr>^Nz~Td}XS<D?yr%+P&q{G8Ss%UZni`h~o^f~1q22cx3^Ce)Af zv|Y+;njPdDy}?!9;4)8;@}h+%-f9IXkf%LwjM@<~(G;($p(M`h(6Or8*CMPxDSkwi z1SMnyd6l;RcigO)(mOzZ8<S0BODvNgVI!bqTOo?3d{fb;PZSEbzELWBoe2P=X+E7G zK%;xctxiz-bLhnphVn-kT0Fwg&JjkJMnruk<loipwOjQH>exmiz>zHd>W_s)9IDu6 zz*5CFBc>|$$KI^}PYYD+E1(I@N0j1y#B$yn1}f9t|Fl`S>24ijOfeV#y>80JaE=>I zJCS(k{?qm(o_XIU5iKyOee`tJKehkjzFAU;px^aA3F=7xxHe|Nhy^1Tj$R1d=|yAG zMlH4qh>FmM)fg0K%pTZ5Kt|pDkJmtd#(p2mpa8DN!2;IYUoL$eT6rc36l^$`nm@~h zVz?;jdHD!`N^itWP%5w2INsMoN}ifFBP%v%{_;d$qK~INB2yLJnY&U;=6*o*-V<C$ z_*QrPL;bIeu&#`!yD<GztpX4c(MYe{P8X_xX7mBP!lbTk#$Lyp=@Y|?>>FEEA-2pn zhH_>H#N&SY8S27K#eCSF#_gvMf~N<*b1C(Of5vzh&G*^Aj$VLt*VBKUuOj-rpa1K8 z8H^5b(YPrD?3F~?_2d>(M8E{0O@X*2R;t}0ioRy6+>6}JJ!<z>)K<N>qPF_I8TF{( zd&>6K_%NOWz4!7H&oC<jJ%0)TXAHC>z)qA~g-HCCeB-9XSLwx2xmgp&&y(fq4Xw5I z2lA2fza3h~?9kUX4b9rL*NDGXW)xy5KrPHi(cUODmxtK#7{{=DnpxqG&psXqWE#`w z-|gO}TRR6)#TRLh<f^VIu@JM2a{-lY^heHl&q`OZCIdv;|2hbUZ!+=R$m^vEp9TVd zKodx66@y~)CFnW?zEn`(=*_pq6VykVL6M8V*#7Cj&Y#9)lnlE@gr8>uwyi>lpEj}F zD63rH$w1$7J2Nlx1nK*2lReon0qitqj&)<uDKl!p!QB<{OcXX?oIV1VOxf^x76@`8 zJePUHUzv1~aRwUr`@>YW>I>kWq2>PTl!!11`d7Q5i?thUSyRJmH!YDvMI7d>c8HXz zOd4rX*?HRWiCBHpnd~3L*|vZ1;@P#+9d{WltTXK*P^<7mjO_=2@7lo-qGB;X*9oJL zHn!n`*BAkCcK>k>m$&l$5)kezyM%lK&l6S&`HY{Z2-ze|5oEGSutKm&KnNMgTp;Q> zdVmDAch7&^aNbMD6w%rCE(yZ{fb!k*ANNq$7u4XNNgr7bE}O_<f0D65`n~_B^Ou<S z7^>+f2<Go;d1vnOodjkvZP$?HlJT@WWLgY%)o&`fP)3^0e?*zCT2b1{rOQ?>S|<=@ z)<Gn-l-ATiSW{1)F=Ntv08c%uq(v;9ymAJW>8h<t&Cgu6G;;+6Gr*)tES!@+ec6=E zNhwrjQeyO+8Pn%XNr<FUsgp9Jm(Ex*$1InhoVz$DYsu2|+~j;JnY1D<clOemSuyET zlBw*Jq?ouFv9UAe#Uw>j>EtPkW3nIu%msoR^%Zc0|LfnDCirr+AY6b!L%57zi;0CD zu09bXRB*JQ9czVvLt=$$hzxDWK0=?Y$))-)&@7#->Azr~jzJ{WyNTs3fPbjJ1aQI< z#^1r{xTT4oZ|Mj05KV7|b&|)t0*spDSb!Y|XL%G8Nz^`Xp&5xFC&HnvgD=sb`aBHL zVKDAM>~YPEy=-@lPqxy*<gj|n2V0psi6TA~&|vEqBDp%s`XsRlz>;78ODYdCj`eqS zR6r!K#*XsUtCB04tUoCFfPA@V?Ip<-45fX?Wp;VjzE6YoZ(%V&My?<n%-CAEYU|?t z5{RcM$Bwj(%L-R7+qh^Ok+u<OQ)+S6s=Vc^veu=R5HW`e-cgg-<WFEc-IakgUWFJB zg_G(EmK>DpglWm4!(wQV>j%URioLtuPvde~%@bH9=o9p3v>(dqnqmGP`@F1y$R{{` zZJ1ay1e&}wg*ISbz9Pbcujso>AVwf3ZY537g1>l=y_R4%(o_w0BNxm|Jm<%j;PCM5 zMC?wUolUfOb}g4^Es0t8lXjZ*U840BTsjdD>^TtvU+yOoA&_42T1!YFtS~H+*N6~8 zi7#Q9AuJxP#Ap~6fhepWQ3te*Zv$-ewimDhmXJmKYn-5Fd=W_(y-*dDWK)T`HsMKO z$l^;jZSM%1!m3AbnCm~M83hV9)WQJ6Fr#Fgfv4M6qFt}B#DJbqFS5eugr6_Lh7|@F zID>P6b39Q5xs7Gefr;2M;NVv^nzScKVSL<9f(bS0KT>eWcd#Xf@k`Q=8s9;a_w!qT z6!|z*-bM2Bn-Ob`1&<l~K|A%Fh#;@%`zb7kds@aL`e-4!vO0{IxkF#18SnC?=-VL% zlM$Srqf<PhM7pBi5}3b+M6$3e`Yt<m0ZDxX(;7*DaJ!-xh@`g^z6VLwK}ZvXSqd)# zVVWIz9+44tBmvnd>n*{N_BJA9C6Zz`VnwV*C}uXo%S9tZ@HApY%tovT8lkK-k<2F{ z6#9D>*Fy1C{6U8JZVRxkJQ_fCz6tu<X1P_6QXNtNhC{B;d23<T0`MDS0-)^5+XAib z3U}K%)0tOtm7@@Z(=|LW7-B3huLS@*vwHm(El2TT{@QSMl*Q_S9?fzTi?4g_IRSQu z)OJ==WUgWY@CgXmZG<v}PwiA7?3v(uCRtpMNj8D^EV8(n8%+4vDWd;6Zf2fI=t<qw z=X)Ziu?dj%MB$#I4>}>vuEXuzsgN0o{yY;0q0r8^P-yjKCMvD(4KeX)kqbA#8;<rV zAq-F8u$u1!3P0DFTQT;@4uZ73=YOfroJZxK+)!Z{D*vc6=_nr~=U=kzR`OwR0W92m z{)_2apTLCSN`|H<xQ051yJ41g3rtMJ6J0}xnbWo4d#~1mm|jE7&{zWo0P3<QD~ELj zce}0)6J)V;Tg|(GjLGGe>xN0j>X33T)XHIN!LPZ#0S0dk%(9lzjP>z=>5Ls3Y=2N- zMnj(o`m~h8#E;Q80uh+h-~&N{{u;gxW-`?W9A9D}6pAZ)gykg<cYi7AU*d8eVfo3D z`^zwjVBWM@`M}FSZsLG<aINP+{RKRxX=MXe?@gr?yCQLk-?={2*N7x>jfHv`m7}Y? z;JRp~h|5HwERlpOJ?*+;R>@z-NBwo18?Tg>lF*z8;K<wX!Ja;)?@}tt$^kWOvFNS5 z`u*OAkiJ=gtlUTkquv$d5kTO6QvwwG(;+4BB#0hTLKjNtXC|OFaq9qEJPeq{Yayh< zjU*6bnP1WtC>2O1t}#%;Jl&;?7TR%3KnQC5WA7dGNehr|em(kDfo?PJ@1!SERoM4# zHg`&Cu(h#`ta@Xqrs=(5`Gei?B%ck^KAG3tO;ePsrN<nI|BB5nf6dETk;uFI0eMT> z#eI8C^J~)%2)c}vQIBVP<@^+nSjrV(CPQaYB!8#vk<%BREZEZnFM-E`2(1Wvq`V5O z6nCCwvb3fmi-qqe%;VvA06>!=6A!(E_=Lx(sRfmJyJE6FjmoU3SUce*n|4k-_Z}&x zy;BPfHawn9zC&-}D=R_FBPp@4sBKw^-VioDW;shrLK!SMi3q;JkOx!o3H=Ieu&EUi z<3REQyL~-KNO|0iyhc5C26s>xz^(OE7!mn`T?<1Z?iRdC`8Sx%(=+4qn4Ta=0u|~r z#J^$Dw7dqkL<%c7k^TWl0!ax}l)l2BWX23EWM+_MVhw~X=xo!V#}hS;dhDoaT7xD1 z75)dRP`$-W(;hn?H_dxIQ8MwN0%%iUa+?N3X4qpy<cV5sikxIjq?7q0+7bk0x7xC! zR$F$IjCiQPlMDd1<Cxi$h5apn_+YPOMLlSIuv_vWMF1G`ivF-@)FO{&*sGB7k|$0( z6*6J+5U@|7LZ%t_QPWskPcWr^+z;GmGPf3A7{t6b*ZLEhE}5%*CVu#D=FcsnzsHOx zLL~R(XV^`x{658&kXsS4%09u|A1~FeYVHlB0zZytx6qC<_XbG#57SR4?I8W6RLlXO zXmXmM4<P(=GBoGAHHDfgZ&O|i;%$?t=lCRt03>~Rn4U=>(=^%X4H448*BvajD43Yc zKzlpT7y*&aYim~3;Z*e}%=i-1l^FoOIfu}1Ft6?d!rl_Vte}C>@g=>v*vs<4CsE4% z*I-RqP8|pkxe;4NF(68sX_z8?O99B8JIIFDAwp!pOB6ET&DKr}``rT+TuJ7;_#x|E z`XS@p0}RWVbKq$l5>~Nk1P6cjzX=deAn|{5d_M>dP5#9pfaVEo{_l=L#=}-gH{Gp5 zpkx}Tk4JWKDrCPe`cEF<>6=5i)?`t02-lSVK-P%l6m+kU9bULEb>HG6S;*2icEG&; z32-92upcA@Z$Uz!9EsgGZ(jmsFJwCxmL_jmv@LyS2J#O5k%cA=SukYbFkVF)mVvCh z=9b27jW10yGjCqFapC%u^@~c<HZMl@QIIE$UNBO~6UGR6!f417lr8f%&R-wDA#vjZ zyGOvxC*1tMJB(is0LwZ&T<WR!*Vn=r-~eyQ#A1PmdE%v|VLa@F5>80rzn(+>v9o4D zpKc)#_;)F@){iCIrC;^8QTkIPMkP#(jh&Vd&ChEID`J;V%Zf^+bV`azoDmlr8#g0y z8WIzi$1RP`nvos@>s~W?deW@;IrHYtiJz4;0~wN*#%IsVj9oly(TrrP1$VuDfqI?& z@*AH^25&Ay1z2B7>b`V39jGh90YED`YYc8dy)W3P<uMzAL?~ra=5(lni!ekR(=+Gf z#F?>$(-+N5pOY~!o1TofOklq2XQ$rkH{uO9oQNcN6L@l>(RKCzh>e=kcmC7ak7Rd@ z>tT)v7%!s8jM(V8lj6rM7@QiGF)X7`>WHL~@$bx=Ks`a~?73i7#YZPjUNACwZ2H*6 zqtb??L@WqT7#|-Q7Y$oF%ELpnsd9Mo_|%E%6Vk#LjYy7MFfnOT!sPfVantA$0(G<m zmj?fIz~#aJ`ZpI51VHbzcA%)eWS}s)Nx(EBRtt7qxN{IQ35=OLno9*MP0S)<ncyXm z!7)|`UIG~%i*hik&Lg0GpY|zgw@=|HYo#K>o&^g3jp}@x5!GIo*f~7Q5f4GELPQZX zxNsm2YpGPMB@EOO6n+97+OC}wyA#xFSys0MfiyvE3u#vX2sCAy1n&wV%VS_|EfKOj zM%MNUA<M_o+EWjf5a$3L7^lqFFGwb!kU)BY>7xFz28R=uWb-!<dL2$1c1%9Hg?vu! zBaah$C}oRzOgpZ`UL13(=eAb)S63X}wefV;hZ0}HD9yr#J+8R!*WO#Yzj)J*f`jSD z>{JtTtOv@+1I=L~&>RK;2KH#yu9YS03rhh5yN7b3nO4Nxq!U1}!oiIpMF6PfzOhrJ z5OE7aCZ}^~c}o$o6&;WoK!g%(OUw|yz*gv6PspSAU?!O=%qL}_M3!O0Jrp|y(p)<! z^I%Xs3e0wVGAS?bhAuiY_TQ<wyhR4CeU`8C@)nubV@8&xxr~?-F|0eV$jH+Wt%Inq z&a$@#FpO)-ZONb|9y_hh79O8XfJ)463zg3#!P5tv(iHNe2iP@joW|QToZ8W;4NgR| zDug$X_;-CPGzq9M(^Dalu4t$bfumPYdOTH#Q#(4f!HGy#h43m;@ENl^*oHO1=NU_- zX41>rgACVTQFyb`m#Io*|C|qF<b>p!rq|V_UxY&v)K3wPi3TZXNW>PKX>H6HoVnal z%Dzdf_>n6WyU-SVv5H-23n3%A0I<SOWxW&YjDB8VJl8}oglPcc-%@Ic+?r7&&rC@a z5v);i8HOD_5^}#nzZgEXFhB=M#vlyPYB%h3qIX0@&&H5*e=33{WLZFp_@I;s%KhHp z7|JK8{I-{RM-i^vITnad%x_h^)q-N)YKU^ga44ohFrUUm9G#v*RFD*Uy1qj}@SR_- zc;CQ%##0lI4w7Us8j5KQ%%>p{N2jL{6(ofoZH1A5&fGB)1jVk-XCxGh2W*Xm`C?eu zBO%U=StH>o-;q$E6mHKQqX3QFF$x5w;wXURlZL_P=99-TAeOq%K!DiOXCx3iontI~ zPE$}VQkfEC!BUyJpQf0542cTK;^AYki;=;1(>N(1%M@xiLLn7=Yk-vKq+V=AoK_G8 z)_(+%KJ+j?VthH4?zUP6obTNIPYUQXv$+Ray60jRTO&O3AOSO+6&4ek6{b1J6U6l8 z4Lg0pb-ZDb9ZkLIk#q|`KcnFF2cm8fZhJ>q2)jKgH@TnI%@c#z+Y{znykQ8wJ#=pg z0yZ?>f~Y@I;gP>!s$9>LH7f*9LwEoC6mZr01ydmvutM-lboakc0diUN851oC=S3?~ zx|`+5$T!Rft&pefej5VKEx7S!4t_rrhOFR2EWUWg%1O(@A;w(o$)S(+RL2i`GgCR= zKEOTF6$Xll<0#Z~_%9{_d%;*}<xmtYksqZ}vmOL9&B_tdn`(Bl;R&s>i%>ocG5e-c z#ETed-D&d8boW207bJ)eDXf@bVfPWl^x_1v7+~bO31J#wo*)L8H|+EY*YSqU>;Sfa z<EOtnuz?+OKjUKnz2*%HePL5(SCQC41E=j#<bRYf*i<Nza0xL9IBcHaA#V_i3e^^) z`SUE+U*<z#uw4dCpI0occLZ!rcWZ?}lC$lk=58$nOdWS?9l%WmcWW8IAw}EHx?$FK zMPnG-0p7FxF??l+^I(!P*zZ7dcD<Lu=CO5U{uzuv1#yz=KM0`Pvde`)EA3a8+o`wC zfK98r^=LRHDSzxy&C1^m6S*rI1K$oHwW_BHN;|3j&Rh=HdnZvu?^WgxlOz~{?Q;DG zf!3P7#^pi)6ITuz*@Xs5q?Z(`gqkq(cf&mGO8X3#L%)5rl>nY5$*Fl6KD0;C6#vTg z9hL;-mTMm4&C7y+(I`yU^=_F19|94>#l@7>;fu|*RvHg4tIN|w%(oP7(kj<hVDN3Q z`869%Rt?&TD66VxYUOWIJ4Iz3!3TMxyuH~_-LjS(Lh-DE#j6*sTX-U2&%B*;4<u|z zUZ1umvmjeKov2KSjhZ(xK4L-7)Ik|T7WYeiCu!{b3Gl@7Y<X8yK_jN@DZZ1HcR{R` z_DfkC{+(9-@*Pd-ZNT6U!f>G*fq-Bl*~3uptPwyz%Kz*cjE@m+pIDvH$AOH~P53^0 zghH=+AB2TiTSUNk%!}k_r$f(r-*aZNX>m@HP|?DBEaWZejH34dYvwQ9D*;dVm#JBK zf(iF$Bxn8;tSAxrfE_jiXV^hA0KxK~U~i$Cm5ROz7uLmo54xD|0ji<R7*(^Gp&E*a zYA7J8p#ZAc%-&<2hDl2lT7(1n^#{8@KiK{0v>OtHv2c6zYkzodGWOGp^#i)riGQSp z8CiI*4kP@52v<c1JMjfjUeBVJ>Id}kiMOPK#s&qZkEHg-uiN!sx9cYdZlk93!5;h3 z?B{8Z-K`6Hy%N0^uH6E`iK754VGf!BSi-C%R=${Uz$CPT9zLNDq2f~puj~)c^VOLr z2(F?1)c7sR!-H&bl4m;8KY`eY$nK#+P#~r+ASxcwFX8?V^HiW?6J=MXFYpORifn>k zxB+Nzn8DnM5PcB;5bw#5Fd2JPPizt-Ctj&Yx}HzI>x4u^@9HD2(Vy^2k<xWdL`<=a z&KPony$AMTvo_NA*hQOyEU*=!o9ngY5K+^XL+}x8w|JJ22&O87ITRg;g=i-UDIHG` zN#G@V$RwrX$$|`~qK8aUI=;wLk=3Ka7=NA~&BY?iV_Py<N7T1RG*pq*r$>5yTpIPr zO1iU0Hu;Vo*<^2zL`Br2S}(#`F_vreNQlW=OE1&RM`FjsBN4Z#mhT&3KNsAl_s!c> z3r__x+?iT<BnaVV)WY+ya!_l{pOL=6OCfX<ja9^|z+(xkC^I!Frqon4+Z+;8)UgRC zTzc~g@=~+C<`smcX3NbhNJ_2p7|8nWk1H~*?YG9{Tbmht*w&t@k~r7=22P$)j*{L8 zaj-op#Koq($4GQ@Osi-?LvfE>$b2-0Ef+GaV~A*3(TJdFM<ar!C5;H$wlr35Qbd49 zH$KJ`@hOfa2m@43{Ip^Cd6WdumiNUk6djsKdN)dzNDyt(^`A8=Cy{*CqC_!4q1VeQ zyGww)braGl&npd#TL`PnH(GzsO5;PwwWGU{yc!mL0F)!46y9m!@9_(nu<f2AIaoTT zR6*M%>j`8tl#Y4TA_$2TtcTJuy;>w&B89?2KsEuIk~&ml$Vw?54kJex00h}3Xt>X> z;-&I>kwgzx>rhrPZ@8{&dL`-sN#TuM!p(?&LqiWp{tf~G0D*w^N%C&cmHXC)!Uo(@ z{?h@smH+FX+*v+i^pT82<xpRV|0N#+0?I02O?|JY(_)rRpJ?rkx-%mZhfBs-SRoyb zmiTG;$chz*0WGGCJ0D4?Rp0A<Mb768=iF)YXCzHsFiA4{>0tb?=bveOlrnewq~hpI z%1Qn+o%3eJ&*Eb#brRb+eeI<DIO0f~Y4c;_V-w~i&0a85GR6?{(t1K(8l@x@#jc9U zpOWQi?p3D0Pn}$DpFjXt5foTq!UL!NB6&8!@1y1~KjTUK*Dk+I=bfKx`ipv3{d4l( zNzOdGYp<-A^!dD=)7T^9a$-74#!PVsH;X&CT0y!e@9R4xc*m*!Kl38pk>~mh_09v1 zF|ULlM;>3nOj-xcUF|QugVpq}+Ps<Zv+352z^&Ubea)o&c>wmD`lnU<y;9ANaM<)t z{R3ySZrqkiEbmpu&xvyl?etJd_t&2zx1{8sbREm%1$N|j=ANpz(kS~<kv-c?g-$Rk zfo3HtA#bLl7I&;!OQ5LZ8;#O`hdnV>fFLTsnJV}OPszqBq2GVTEYUmh*39?x18RaH zPn6U9<3Rdy$^;i{3p9OLoYVV5X&{4@H6X$1{jtc{*z`$sa?g)hllxIU#1)9##(4qP zWAsu4q|bQ{U~SVwD|u=CUq?Q_;56Fu^8&(z_fp#P7|A$qh_c~~yu1FdBVWJmG|s^r z<O$bi0QtKUM@jl>=2#6Sp*RgcIAbzs?KGZ%96<qr__OGp<uK5dM8!tA6Xn}a0Gg8D z2R^uOe!Z@SBH+{lA%grH@pKUfuNDM>JZ2IAWa4k)j-`V$MZRZ^zL-#5t>J2*H7pnV z9?%Zx&CCO7_2olG3;u9#fU%HwS}q$8_wH-7kc|42uK|^ROosJvhl>M#pT>K$W&(-~ z5D||dozi^#7xo6uluZ`azwonoG71Q2y@f}OfuqI@jOqy=ag+yD3m>>cgkKYvf@NcC z-GTLaJ$OA;OrIu#0<R__;{)((Vmv^QZDDeG9e-Z0)XeAPGpH=TVP>nWgJoSAK6OQ* z%J6yO8@p`BkX`>q->CO+mQ~iDmqTt!<*&;m2G4mI>^(Du=fTeJiey~jxr!CY*PmDJ z%uB9&@2-KU_2e<%KUN}@SCStcJ?1gg{RY*2o_*Kr)FVOe_vMFsb$>kAo%4=KopUB) z-+<z7SrSrSjU5;sF(CFel(AChADps1eErZBebXtuZ`{!6v16wWi+jtPBVp&v%~8eS zD@W!GUPO5Y$B&p9F*z!H=E(RV-duOLE!+!}i{ZaH%C8M!|L&Nom0$ZehwHlkN6F_* zZ|7$;%gcHBHIVsml0CPE?794!J{8T16B7PI!e=OtDStr12=X&X1Nn$o=v=BPM=c?< zNFpio)<vc1yD}swkNHTIMJkDvH$besF>MQpm9v--A#aFZFGR>z1Ch9%e{=BQr=6?Q zmM%|QD_t`Hae@|_XckZts!E~jpc8NQw6l0g)&?LoiCnzV(@rjF-%%2R9xYCr-~%{f zlRW4mHo+=C30?i?!|gXq`!`4V;+fjNI<ECY-~Y`KhJ63#h{tvOo8xWN_iv8rsPEq# zMys->PTnPqhx&MHmod_eZj^wnC=Uf+jVStbv@K3XJ4)-0Lg1)nnu(XupwW`(oj~6r z>njD_m*l!n6E*wfa#a!}ok~Am7TgCCwQPCbmdI5jG9+Ui<p%XLYIlx(0zqHE%oJkZ ziY)vN=B*$S>()#K<JJs_{KkW>GUp?Fj&dMtQ*rig=_jMBc<}`NVZK&5jb&qfqpNrs zp%QdWr;}A`p>no>Ka5RF`L(av>782-2Y+W3|C()2-<VfWw0Mi;C2dSymtBy*v~W?e z53wj^b;gREWqFweseJmqs_KP{{Wk|ZWnKF>hk+MWuR@9vdfT7iKLb}20*cdAs?ecS zfmgQ*DibFIud5DQZRCbp#XFRpH`h$P3K2}5oH1<~%yUG<HX5~~9&^z<${8;~8D!%8 zn3(w!rLct>4=q*Zua3!`h^0BY^A-|?MoK@|gLJds@~EVQdI_YH5_&?3fKCdsbVU&p z<cVstlv$CW@1Y7_K&q*gk{B(Gq#T<Smp_dIk)-D_ix%Xe&44OOtWZT+FvBjQXVVxG zRpvriPmx^ceGA(`O1Or$#0ja7QB68Mw_K+0q)0BCBhQ{Y9r_+q5+_;u9;2b}5xyWI zVVtG!Vdm0<MLQ^b)fisZk*`B>5xN43UaDCqkp}UBnFgtV8G!J>DreXM7-x#|$m4FF zkDGD3x8AG_S_AIp8QR|+F!@7n_bh#=K1*@rS&;^alm>!I0SDg)K9O2BqmJvEGpBat z*_Hh&`Bn9+;TP!F(66!IqkbWNZT+6}d(p3(Ur)b5enb66`i=FQ;1}&T%Ws}vs$Yg* zwqL$qp<jvLcE8<z2mFrso$>p??=!#ae&6~1==ZzdUw&nkDpjgl$x*3xrJzbrR_aix zQ>Cy<v6Yf5<y6{I>13tPD*aYjs$9Qvlgf`(ex~wsm0zjcxAO4H6D!ZG99uc5az^Fl zmDg0>RC#;luPc{Tsb1xgDy^%utMYu6*Q@lZ@>Z20Rl=&gQ)PUW$yKITiLJ7y%8@E( zs$8vdqsmWJbpOi!_xU&Xf5`tS|Mvbb`FHp4<KN#u%zw0hxPO%YH2>NDasEmEOa0gQ zzvut8|Bq4?NtJ3#b)|+<GwCs@jnq-<F7=m&NF$^ODN>4-rb)A;IBBu8Qd%!<k#<S@ zr6bZg=~L;dbVK@H`b~04x8=&RD%X<h$<5?v<&N^3@-TUlJX?;JbL6%1dbw2IDW8!) zm9NX+%RkG%%Z4H;OsS;=DnZJF$|K5?N=K!u(nIN|3|A&7Q<a&@d}X1Mr7TxgD#gks zWtVbLIj)>lK2$C$pD8y3oB=@r4+K0M@M=K!fZ+k-111Gb378&`7?2i_6HpLP60kMk zK)|Vha{-?R{8+Ve)#_E9RUfX}vTEz9-KzGkI;iT1s^h9gSDjIHLDlT4E31}N-BER4 z)gx8UR6SqyQq>z(f3EsxRfGAnYOEHk#{jU$o@8wS<=cz(W23>LjA2PEl`Ul}*m|}J zb}#R-kJ)ARwOUzqsP)t)>f>r_^?CIzHC&ykCaNjw617MzRgbCX)r;yi_4jI(tFdY| zt2L+=T&-EP$E&rf*1p;c)jC(}S*>5SVb!Kon^W!GY8lm*Ra;YSbG5zI4puu??Q*qS z)&8jFu3oviQoVNdy44@3{#f;=t9Pv4t$N?;qpDA=9#eg8^##>at7leUS$$LW9o6?& z|ET(<>Nl$YQeAgcb})z2(a_P<@v!4bM?1%hj#nISIu<+f92*_`9iKYBcKqTfufb|) zHNtDms*zITaE%K!Zr1p%hH+o@`x@TY;=Yjky4=_AzH#>z-S=h9dNm)e*{Nn?%@sA* z*W6q4Ld`#G1=ng`t6i;5wR+W>S!-pj^|h|m`mr{v{dnz8wWDh%*UqoKzV`Oo`)VJp zeX{n&+P~D+>jc$#w9X542Gm(xXL+6Nbq>@yU*}?-GUvn25a&zILCy)zsm>H<x^ua+ z#Cgzp%K5$X7w3Nh<-n$aZ371c&In8nJP>#;@YBHSf!_r3x^?R|t=p#V%XPcf9Z+{< z-SKs2)LmFNx9*0zo9iB|`%&G`>i$-*Qax6$cD=^++Slt@Z&JOv_14$hUGIFo&+C0( zze@dv^;^|{sebqR1M5$#pIm=+{mu3F*MGnM)%xGo|D{3Y26Y<T-=J-S7aP3NV043N z4dNPPH`vnPV1vsIzG>iUSij)|4LdjN)o?(=@P^S1r#FmmnAR}2VNt`)4R<v>-0)Jv zpBfsC8Z>&iQM*PjHR{u7Xrr->;u|G5THL6x(Y8j%8eMGkWuu#oer)ttqyK8Pv=-X4 zT2F1DHd%|)7HBD2wzdlHBlc;Bw2RvJL4HAXf|>`l4(c4#J7{Ron4pP4F+mAISwV$C z+k*B5oejDa^j(lU_`cwV!S@HZ2!1yBmEbpm!-B^KM+eUdUKCsqyft`l@S)&S!Iy%+ z4*of~ym6JrYUBEiA8h<o;};sg-grRcQH{eJ$26YXIJI$B<CTp!Hs00vXybE@KjIHO z`GfITkm_z-Dm|deyeZuNs3AP%rV8!3GS%p`PU<Qfog$<jNL<L&x3p4Y5T;PM0|OzJ zP7e!{C-tV05~BLp+N;Lzii7sc67pzFZ4ZwXs#EAoC~J)Bm)lD!cD|D8^;!=CZ-yH0 z*XSV83fO{yDyjScLIzZ4n1GOyU(!@C)Ay-LB2$gWo_xf3AXvSLjxf|e2>l}knh+pI zy;eFxh#yX<^3y0XndW}^1=QYAQ!UH_V;|2pihF93k*%ot;LWHoqKpHIraMkijYDCE zyA<BI!<?n1+#ObWb%f?42UQ_QFGC@)HQE~;`8M8>x98i8_PnF9&FE;fm&=P>4`{r* zYnRh_#b{@2<L!)B_%8kmZ-;E{_$&Axy@nOtR;J5=TbU!;C(HpJ;4~_ihe}2~zpU`e zu26}`0}_0S6F#LU8=uSkbKp}W;GT?X@{l`(huu`%{X?8Q6xIY#tp16rxNOABoa*71 zc|06xb)j!$s~$3cF+w_z^Ez<+sA01ZUl16A5CAI~=@^3XJH@GY=kRRVT?Q?RAP`~q zov&|l)zbKIlp_u`*s)zi(A^572n<e2&|Cj1yIaFlKA$435NSmb{<YK9f^REtAv?~2 zb66AIxgQmX>w+_i&(Wk!0#X9}cMc`)voK*Es*-+wXVn!97m@zPMWc#wRpKt0@N3;w zZaIxA{1U)z!Tvd7wCZg<4G2ztSaJN!^pE%pWGqJGkc`Fni?W0KZ18h1s(gK`@w&v% z!Q;jSeX7$cb`Ory&&>5G{}8Kws^k&X)eJ842onygzBX{^^tqyLWyW4L0uD~p@*s>< z40mNK1}I(^S1pxiy^0~&hA&r_wb%>(jM|1!DqW4W55rzIwr!B7867445jmT`D3!{t z0PW?{5Baut<mJ4h1ha)%#*0#zNSy56A($x8$PfxD-7IaBTrWt4o@g9PVr?}OSrWe; z2Wo^D+186MLy0DwCG;_tgAKeC2k=-(bH6DGi7f>)W8YIuZ3|bRRJ|!8pn3p9Bdf|G zjjzH*#eEP3uUYW?iuaQrgM}4bN~<18KIRerwaPocq1hlys_utd!;jG^`KD9leQ|>4 zYU8-Vr;ahEj)wbb#ql~5x(cRUL@SnCSe(B7=BCIC4R`HYlD8@tBJ`NZ@VH?iqY67V z96WgT)JehWy`f7~OL(H1t_0w*Er1upj~RZ6KcyzZ;+v+2cQn(L`d(}^rs6P0kWO{$ z-&DvU;Lp{Cjy7R>Kd2ew5}lR{x|k0A=0Dr8!y9S2F9wIGn0(|RJ0;_otOB9rQKs^# zuIo-U-?h!DCx)pjG4|DRm^=tv{(+j~LCC5x8^wIr^IX%SKZ;JA%l%GLNyKBMpHw1% z9bTh9wN5^H0#qoPp4L=Yg(p0SGWu0I{i&(NHzf@C@DNGGxE7we)$*QUuAZ0*ZJ+FL zxTsq8M5^V=UOlM&f}z<~ao8L|%)Lzw%>DF&Zc*v(yLX$jHH`^EJ9<}(D$dVdmX}qK zg3X@_Fq)-eybvrBa0z3xGE({bnu_d%{X`&4filJ5kxM6_!;vQo^du%I7Lt+*bg>ek zi&;`(pe7FCHFDFiOSQ{wS5{J)2$-u-O@LxTxRd7bnAo$FJWRsHqUs*nUZ_Ps!Dt5m zT<Lr0Ab&(tRIv8=e`VE}$luT+2<4JYRp54442v_6sjXIxVSs#sO<(PgwGj0&_;TPo z;7<s?*nkoPojLgL#b-%?1~_Ha`8q$MaJg7IZ5*Nfgo%5t_R%D$Y)O2#ySK4hQO$=Z zB;x9af&9Nh)xSL!&G%!rSf$}HWMFg<78t%D&}1RyQfr?+9oHh1*NIJx7s-O^zd{@+ z)8#}F>ghXT#9P5CuUu+WR_BJr4UbplwDC));bp?CsT%l<<K-fQp5~g$f!pmgq;B1e zD#7^78CA}9<5G~`ROZszv%E?$&sKPqZf6ZC$QbW#@U1DNhx&+mlJ~(q04`!x&2bVE zKn%?`nC?#8>$|8&Xbwz=an_9wfpHSP;c>WDd;C1d)MG3{)z@o|)A+?ZN6wl_gQSHv zTr=6kLJb(2kg5&!3ywKCdM1aGEwm3=XLYaUZd1xTLzCqa))fPV0!s@`hgT`FMj)+G zp&;b`%!#}*GE2fYRC`r0ka-@zQc6r>^Cw>gf@5V8&96*iR*xKfCGO!-a<u`M8`h7i z|Eh(l`fZ$?#x1#TUkSnhlIq<OGO1n|3Zs~NfmoWXWc|TQqBocBShy<N=yzZ_k-muv zFIX@Z<5*jrbhqxIa4fHAIAY`aSE)d)u*MI#SX4_4wC%rB@V=T8utMcuK=}wj_o&7L zUq8aJfK&K1rnvLmvhxRgPQ%{luRG<UV(EkmXHEY4Yuul2z#!#=GVm@CW|;Vv7L&>T ziP3upZR$~=;ynt$_{J2jI51#{slh`*6<``_YUbkf%+wt8r_7(m?CU9t`bi)k$@GbR zo!%eJX}VKW&jC6Bn1tc%kbVMZ2OpwC7BYl?&s0o$w=wpI@F_5j;}byDD-%^8qp6>) z<Hxl_`ct|>>eBZ!wHe?HOaKEs?B^k|Xs%?oFMfUh;PVr{m@6f-_p~RBFTP@ZT`d7a zk0RL`)zscBXyPEKe5j_E5<JX6dB+Zk$0$R0NX9^U=upXsQ5=tHr3&WJQm92yYp<?n zUp}v?q?|KMGge`ESb||1AQC<souPB0N0DJN2zdSfD&^NPP_BD^{=&jk=)8!D+`@>0 zIs~RAn%GY$gd3ht1XT31HT2+r<u{pH)elmucW?ziQ32BMrZpG2{4@ioQhTt3+*1nC zmqXG&AYsr4GM>#-P)^VyR2c9AG|i_MWK<$FQ!pz)Cmt)uZRFWxn@p=>*QfYE@CF(@ zx0_W=X0uf|7mQNjAuvkxYBuYJZhaD{kAY1o8fm6Qs$gb*qUsUIp}YiL7o*=w%>hdl z%)?P;H7&G$DlZoA$0bY)l2I()n@fs1fmeU-ig8~NR{R~QC{WHFdPnj*(^0|FzPu73 zXA);6O@~u57e*6i5PVYL{S6;M6I|9PRDXkK8u4ue#3<ogsE}dLDx8`ZNdTJYfPO(d zfFNO=+YU4CAS`2zL8zk+3B2d4{4v&=snQkx05d(dFL+)nAFq<`1ie00WJ^M@RR!WE z&5Kxl;u>JpK_G5;^u6(!--o%RC%=Mcp0B^*G&DZ%N9-f4H{U2U@4E^~-gn~rs#<6b zsuH_1V%?A|Nww^K@yNc=)H$*~o2k@#fGp$=yHu>S>pQ!K{i%=PYgKYBG_Zrp_sEyI zlWqpt4U5mc2@M;ds9O}wRH`$7q2&G|O#ec0_&`XgPS>xlzsi4AR2a~}K6_KiUUlZH z^ExGUO7`5a^5LpNTQboLKN<H;Gv+;v!Ma=T&GBWk^ybu)viQcSe7UgbsR_jErcS*k zrltFt;dl0xKZ4+u?2ohOxnD4_kGNmA51IxU0i`@xTS2k&h~>&nyS-xg1q1sCB|4)7 zy<Yqah_jnG@#Baf$of_K1JHeRe+WB{Djb*#?d=myH6F7D%0?QP?o%O*bQeXjov?%r zVfuZ{J>`BUejGx-paIjT{Gm5s4oK-6Grc;x-IzJ9YC<Eghc?b*H47Ea?8P~0OBXFq z&0Cnia9dJI!n*lIam5KGNd*fFQdXqqr7c^WlR@g7v*yj5KO=rx!qf#*7KA2`PK`(( zmlmEnIyq`VRAO|()cMna>GYCj)W*&?;PT7-zDWS7dPBo3IRvjFz-cf=!^T*AsNw6T za7;<$&glo^C48d~F50=Qq_A+~vK@;KO88R8ADq4;a^vX2A<N!c1TP`h$900&K`@YM zUcfZD?2)}MUmW(^OiYscLd`wRsN}>ibh0#p;>P^{jTSES-o4jrD!cND+J*9gSnXCJ zfi`o$<Imv{@jdH94HMkvG&%ObG(}crJj?a-FqjexZOjPIty{zN#n?wQCOoCZrR)Z# zU;RlYuJ29<K$}MIi#k1zF7@={eFd9J3id6AkEv{B-l?d4qe=!8yuKKh2@itb7VWvp z{Tn316nN03mPJAE%x65%x}#AiI7xY6Pxo&lgW!y>W#pjO9%zuL7<I09;tvD?$U<v5 zZqT!ae}g2&@ZZzn+i^kgA;%xMeu38sPF8*$bgE@x5ZuOnTe#=UuMJWZUZ?fP2FiV- zLC2cRujCgk6Y4hj68#Koz{Z3fNZWu3r83ZX+Ce>+EzQVXoR?aVvTEVJ#I5r;#ci6u zEpg4l!qipiD;6)$qVX|fZp^%?2~pss4@eoFHY$BoT4>6I1(6Ap;-crl39?utHKk>; z*mrsFBNUT2TgDn40cH$#N-%$DkVFoE-_v@u2shw(u>sbSTn*<^kDr71*Z%rq?S1X! z&&5zZN0PZ7HPm85I@uz~K=PAf%)s%j!0#v!P#k!UbFouNPk%S9q5JbNET7ZT-%W4m zAlv7kt^A^M*eboKEh%eyLIVVqxhTV}8mP_o+$YR^kurbi#!apTrz%|ObJ=K+6~r54 z9lp$!2B2uIZW<2-l}CQ2HHWc`f=|KZmC{1F#1?3|cjI&7bxtlkhEyY89khz|aW?hB z#@<KATmU$4Q~AP@qZ>CKS@J0jo7ta^Ir8Slj!Q6TzR@C{gCev21nDbcjY%WB6kw2{ zU~5dkrNcyiJNs3Oo1HKxAvP)2qZ&2BQjJ<Wd)2hO=xoW}luYn?@=kyWnjcNZX<3W1 zQZtj6EX;w2GxB4%VkY32qcb7_6SrP}m>Hv#)Nxspa;M~DO>g;O*B6i<cJ~6j7@SXs z!CejQ{8)+q*Qn<-gAUqu(VLBRvWfxt?#}{(5AR?ty->qXGac;*Yj7_j%n)JrQy?7F z(5xVy@Ln(WNPv6^+gEG7O#X7l0bzRT)LD@UK)h4%ndSNPWmJ@eb>?SO0x|{WQT|_O zxx2pzu@R4R*>R7}Be|t<Ijx(DeH=Vc;~U%fDVEIS57JMp*uAl2*NUU*XQfmn{_xDb zky}R<4_whB3(n0~Y$`6?nzMJ&VI;+!jXpYh*V`L=uIQYO58@EOk@4v*e0dRs$wsUQ zdQ^`RN@)QjXjLe$*^9{aSVTIowTRP0uz2K&Y;n$_B`MkP>cPWlkvW1l)$k0`-dQ$b z)s)4Fcn0lhQ{?06%#T+ZF6o10UTN!A?gx*0%5d&yRN5*T3+dxe7m9b`rua;ROf+6u zE!4lUzp*t#@&5K#HZ09wx48j-6rPN2C^7FS!y`VR2{0&o$9ur*GJY6Rf3orK^lG>o zjGAO6B{Cx_Cnk4h!CdU{i3@7laEk4@dQ<Ck5<2%-y>->L7Z>lKPwkHI;$cC67aSTM zK9oMKLyN<A1c8MHg*|W#p4Wi2JHs|{BAcFxCTfdI(;yR<SDn4V?`vSgwmd~^owDIH zl*GEOg9gKD7)xKGJDjl`eyMU70u`~Jo`^fFkEBta5xOd31?^ig!bZi7pE`AX+(?Ws z(pJnTZAC?i+dLIm=onp%05)QRjF@hL<!hPmt=qe|_zaxAi&1fS)Q-MIFOgUGqD?zi z92Vnf&c*OE1NU}a*EUna<-?W$CI>>%S_NVr89dknhvqkWJ$h;me7`zdgOrbhml_9r z!$1wg_V>~OFPLI9`|45tP+|}kUy1|x&tK4{AJ8cFt7PKXJjF2ib;4q`L>8u;v_ipM zeH&&hcdW|w@1fS{?&`#^gT`Jmzowa-3E?~h;|BWy+D*5yA?&Q>42^XxiJyjtFIH-N zjcY6U8FB(_Fpp~vZyCYd_CA~^m<^1vfYj;(<V3OjZ%1247$Cc8zB}<H_Fa#$#?1ck zgHs78Y+`YMNfk)5qrOf<4qO^doVYYR=B$FWf`xF_`!=7$jPd(4W4yAo-<EKCQQ7{K zimv4F)Yr*FVk07Afx20fU)1<Ic~{oDby)!Atf|EA!jcj9)^;%c6y0C>mt~*s-t+OY z@9@ZDue@{mjU7+rf0ciH$A;5cS3sKn-Jp+O*!|!#N$stDM^J1|Yy>WJ!OP_eb@_*C zdJFGFZaru6+-wdgeI-=XItZtSuwUH==ONez2TOWwfItFK5V!VmC%U{x{}yK0@}VtT z4hCaquqC>9?9w3hVW!Vf)@FhkW#XJHhlkBip#e)9^=C%OLaV^sW__TEJHCuT`PkIx zckLWTPzX~1g)kv?f`CF8nLKepWKv{8RD3i+Az%%!&%{e}i{6<LE5g^$2%>Gnhj?C* z3YdJ67#Sa8$5%caE3wJu^LPlGc46H~<~a~!c(`Dpw9LY=0klahvw+}KDEv3W+eJuU z;==_a4xf#Q*cBD-!~h6&MLPkeIp_m02V{O(bI6g2QFCKv&73+n8va?$Z7V>#AYKub z>62Z((I>%NdI{x$0XYIJU2x&+=B!KE3jcjd^x-~mu5kLIX3SQKUMZYUT*XK*6PdjS z!z&22aB<g`)6Cl4_p-Yi*g)sY2e)iF6wH+cnvsv2q$qv2j5rkJ5Xk)=fKex3Z{<ry zzV*nLZ04hJ4m&3r#kf&mL08tX@AbP0X#%+8zhm!o-T%tIwA`z~H<b!JTqWk}{`r?7 zLIvZ-Qj$+)PGi5^CpsEluA5sr+WRdX?dD4K5s7eDZO{M*0DuCa@~Ofu94=sthmS~| z$tt)$7^c<fvkpyQhf^=oRKme~&_uN(SZ6X?1zs~fF}*u8<y;;RYt^a>OpyDE^g(!y zFA(zt920nk5I5>QT>to6tgChT(Ec!fmMiLoKz4_lP=1d12#I)t<Rz59Cjb7G^b|S% zEN`fo&O*7)t2)&%=(geoNwL|;o?B;m?f{@`=jX(Ao!9sheeN!%cUO#+?l+*~BK8G5 z+Zm>U>p<Tul8(6Q@f@fAs#5OHt4jvhAW>tCs4*0B07$(2L>C546hF-Y50d47Dao_p zL2^!JTvj|@d_p*TqjZz`OlS}jhM@^oh_Sazn>KCi+^{YYtJ^f}-+RvVh+z8K(PWm! z0GvrIv@(Be&|N_q?g{i~RDB|5Seo=MUs;3BxSaHHa}O<dKFL%<ei<7T6&_5gH({HV z;;4eL*hi2_li9w=iFfKFZO<NZfH`OnxdI(DNP^!>`a;`~OysnqFl9wXZca{aMnOs; zynu*hAzsF^;XvW|)cUBZHx>N?*xK;EhpA<!o=Y&*a4IrBW-2)qQQ^Il?#E1c?~Kik zQ^8@hcrE&8nnOu{eMR5Rp@+wRGV{fmea4RrjqV%wIwqHg7;uVLOkWnANej@`#Mav* z7%@!*BW90a#54hSoIpct5iS{!wAWN98{s~ARghE*VMsB;z&BLHt6{8$b+&EmV@)eU z6m|maMIW;!59BUh!SqriU4`8RS$%->&peuuo4_Ta?-W>^Qh7Aqep|1U<{ZTVo;j}g z7`Wu!C8N9I5a4ZqqO%qKEImJXQN?`{UR39(v?Q077N#uO(t!6{ps6o?^3i2*GL+{o zNnq0Q6~+vw8Z|Rw?uf)U()wg~N$;09Xzqxa67enJONAbtDzy5*(+ApJsVb(zu3|Bk z9g`;(W8ynN<MKFUdP2!t!sl$1Y^#+m|G)OGHOPwM3ZI^tyZ7!4d%5h3Wmz5qTD~<U zKTHrRi9#Sjv^Ehb3zdz6Q3R1fg$<gRAc96rtf*TUNqm$nDN-1dSb#=BNI`hz0fi=U zQLzkIL3|YNhn?@7nYnlFb7t8E)+(p#^z?L}In(FS-RJbo-km2uqv!DF-`s-#88fSO z>eKiiFiuPQTRYj3&HQz@BmVeQ{3n@5r?gC8H1m09(V{1x$4^ynj?ZoV5pQl`ro}G% zG`s@B7pt@I|9j-GV3K7s<}^3YnGu5o9-Hy2X6NwtkKfF%wvSm?_euY@lM{dOX#8Mm z+|ksyN%$nk`D6TW9hMX<Y{x6Hjd*aL*v0|24IZrvYYvTaN2~Kt@W+iD?;H4of5yu{ z`Gq5VaL2!IRCe$D`}h}=?wb!u)*O7KY}GT*td9LJewPF1@(+&xdrI@0W0RZ}ad$Hu z)}Q%z6`0=o;s2~V^YBYdKYSd&#B{U`Z^s^-egFNlADo4~!pCk|bjRYE%dmQ8zPiU& zmqe^(N%uFO@IjYBNs>cdit<<R!BsC(#z12r@=?Yp<l~L;$nP-jKt9Wuh5T{japbK= zEAm&2SCDTpwjh7ccn|qLV;}P4#&J?+%1j|2Xo8w~fq4P)Mzaz5L~|nYndVI751S7o zUu-T$zQ$aGe7m`wRAP8yIPx)xG04Xy#vyM?G$Egxm`kQ}u5&K(!Omdh!<=ErM>->s zH#&{T$2;SZPjjXrZ+4oI&vE7;U*If2-r}?%f7W>x`BG;o@|T^Lk*{)AA>ZI^K)%h{ zhJ1&!1Nm-eH}cP%&yXK;j*$tuDF`irya#$R7(Ez?XEx(0Eugy;^j3k+Hr)9c@JX<3 zx|D7w<BAcZzema2n`TU<zGSiJwFX6k^v%FEYX;YoCr+PA^^*6W(lmWCojqmpl*x3V z(BwYwM|pfOKIcrsj(<|~Qr&&1;T|T)uqH6&*f-0@P*188{79L8Lhp)%=ppHK;AU;~ zJ9HcH_p}4QMZX>$8?@g7;2BX5y$Se#jfxH2PXPzofxogny#ejRfFtdoe^Yc^#?+1N z#0S6aJ@j!rr%g1yRlkMQ2H2&KqIM@rJM~tS-p-~9yJJgg(=DPwXa!f^vqdH=ah=7h z-hvv~s@@4eIdc@2A3vWD)}CK>YfdEh`<A&^uh)&jGh6s3Jy$=4^W|>49*gpKxSWwc z@IMt^Aql-%zssXS?-raRVr9a8{&QT4g>#lXs7PKI!>`R9gZ`*5HrjHm*q}4XrV3E& zgJjVFq!{YXq%t}WDNYw5CFl~QavFkU<HO-$<j`oO3i>WmlCGh#__+8+q#pDHQYEz_ zRnc;!YFdd@gAa#4#^=ZT@$qmy9Y$)PWAr)ok?FX<im4c#p~k2?X@ELxC>miLHWgiE z4lysMarpRmKQ)=!O3`iBtJYeYZM|u|Ll4Az#{1C%>>oT$Puefq%V~+d(f)v5vOk80 zz1eAS2GMrRr01j0Hn{4Bq|oOI%(TpHLb&ZN-1ZP|D}~!?;WjDU#=-4S$YK~$x$s;g zJR9Ko8t^j~$r8>}!g-Z&o)pe2g!80uULl+-I*w$3@6QSBVfwd(^B6cEOEEP;{eYCZ z6;d!o3JH;dEmG(vQiwweaVoPCkVU!3!Vp<lA`3@kq3mt;+ho{nkcBC-utXLyJo%g8 zq8xHyi6o#!2c2NK7$TP#beV(>Ymrj;RJ=E|+JICc@=DS<NIgY5H6j;B<WePasiiBC z%0xO=Kss@eNR4L&tbc<JB9+r2BwK7j(GjF_I*Me&E{>sBEGbJQ6(fyQCi03aOIcJY zQcI}e>PqS+vP-CI)s2uHOVAJr#?*AxOg+>}^#-NXF7+{WSD&auR3Va08e5J3P_=ol z`2d+BQ%7W4WzDq~K)!5cmPj@pUlCtTCO*f$2hwC)Gwen73si0|wwIADcBkwW_G;9; zVQ)aqMtdu{I<Q0sG5jR)UMdq!#GNXqH&u#0u)0GBvdSmc^D1Ay9{$T9>W7gpvo6j# z^Db&IOCrbWC})|2y>iw}jCuMAw_fnJxbuX5f#>Y}L;nOcUkujsEY3&v8kslStPz~G z`hZ@m*RcQK&i^<UTmginm+@-g9y(`D@aL%P**)*soB3|6LVNT|{ifflU)L>CFKfGA zu79i71M5L8*zWT(xxNi;kNDRvukQMWdZFOAWuG%W%f^y*0QY%Xl9kHGfQ&qf`kzb< z650i+VO8~Mvk$|Ei<id6dJ;UeEA!3ZdyU@6K2OGP)60UGrOJ8>`m=;FAR}*u(#vEW z&Us!TDk9U_ayM3P_b9gF`0bf<fMeI1@qDHj<v_37#8Y4?r!5xxEupO-UGX-4=GF+U zm25dKV6<)JzCkuCGaAOV(1y0)!LqFuKZ1AVV~J&X-b;RKcugT5gLVGepG_%<k=^2R zmRsAo*RHh(X=X-#ur{}>KjIpFg!`{QDC`Sn?kO($4FCSf0lhZ?Yl_|DJ~=~M`r*yE zxbIKdE%{eIU09Rn`R3z<*JQM*=jj!Uuh;3R`foU|maDYIyU)}ALQ8t=%AD$Yp<CTr z%om$w<fL(O`w);++R8Js(0|XxFLo`n$Pu@dWv*`$d2>X!QUAi5b-Xd?)6gGy_)Wl? zl&+O{K<MQ~2R;s;3tNY;2eh*dbztNLpH;jZ)V9o!d2s}K;YAX;R5FnTx5(XjQ3dKn zqnUeszWK?)r)MzQQ;HIA6rz{5I)l!IPh$YbLQ;qx;<ze@PiZ0=s6vT7OB;S=UwEDz zO>~!NB1OZID&aql0oK(>u9xll*F9-JJmorgen}dn>QsNaNL`|a(53MIn&}(r*J?4{ zBYxhG)h@%P`NkMyEd9=S(0G(y77zM$@u1g>xAzb6qyH_@#QWATYXt4L?zNtz&#h;y zC8`&DerkZV#d=4b7dtz4u^P&rwHm=*pt>q?ePW^-$G)IyvWM6=sN3KX9#jk9)eTZd z!0R=_e-GimyYOENuFK&;m-4vlMLJa?onGR1*NESp62H3|(&`Jpo8^@hzq_0G-3@7} zvEMxgsZM0)cs@ACCUJ>7I_`1z_B`$~=%9z_pu6axR($Y^l0JC7XsAjw)Jr_^8u7$a z;)z!q26Wa_bk;|7)=zZSUvxIW^Uyg0Op2f0P5kr*(Oe}o_W%v_eD+77#X8m^IiCN% z#oCTC$BJ>*CH0jk>5P-$(f3Y!^o?Qxm0|%Y`1c8Djx8W57EqoSbCsbb37zx!s1^&T z7YnEr3+N#hP?H`jLlLWSEZT=IN2(ADsFKJlE*8*BEWi{Ch)Hysplgxp0(M|a<mCh+ zFIyrnClGnXB=Rbg$SW?9S3)AM2C;*3#dc6Bc92q+sVk_b*g;b4pgb=YE0b8Px7b0o z*g?J6L9N(953z$9iOBkjzAYJ}-2?jWgFpHmN)@8@D$%+rT8~?-^<JWNQ?wq#*xgR1 zXgy)QYwe~w(YGZLoE3=RY>D8UKm=z?1m^@IxR^w6WfH-~C4x&x1lJ(?E{B$R=a!?m zZgd&;81AOMDAy+DruUW`vAaA?_Lmpr>@e@}_Lvp*#@_uv?AedUUi~cW(YIo6ehc>G z_Zi2r4?ht5?~T}ZpNakU#n@-xj{Ws9*jI0YwGds09sB=gfkD&d+Mo&PdINvror`B; zPus7vynEd1J*4y=b22zN2Rvc&6)s;hK?9{2?32`T^&0XN;3Y2cp=wowSCUq#8=%fc z%hv!Gs=;3A>uN+E-VJIrS{WMExB{&=3pK=R{^9mOYVkBRO-h-*+@0>#Y=!7nTIZ<+ zUdiqKFY&a6>NmkU!Fxe1_3AS8G90Z{o+qR>cqL_g0(_;Gu!IyxRZ6XsGDp!$y<uYK z3HuNz8+S@x&8<c?m$CD~I1dT_U2ct(?~(d<%~g1>vQ=t6mHd6lIi6LjRm!bgHfBn` zmurl@(z;1nH%WP)^kJXW?30@PQnO!b_M@f@dp-)Y6llSkFGfC^79vljZ8`frN#-pH z@PXsMNom1bl=M3k&?M|Soj8m{4~Y8+DNI7Y&I+V@>Yu(+bPG$0CP+@mVWU*7&cb;& zc6v4e7E-lUL6zp)sNd;=aRa4{7L@l<H5?Z?E8ZExJw^l0XftmG?DEP?>p8$~>ISIf z`{Z8WF&zf89?$u?;J9=Sd1a<^eWqUS^V*=X>KOXP&&>m-c~z!93lDATeE|B5bB(bB z{Je_tI=}(IboVTEo-FuTW~)n2+CM^>>v{q%0rbH=TvzAvBea;$zqoaRQx7>7>MQDE z;L%{dnBM^SvhvT^!_4Q^qiM_~qZoaz7dZ!>&(8}2;|Tr0^V59^+~+^T8l2Ik-#<Rf zvzQltCS>G;`Bl`_7VkgfvmAW-a&EzO5Ll-^6zG%C2--yOUf^5s7=#{Zh>lq23<Chr zAL~o5R{(FEYhP?TS@u)pxmo@8aSF*YQ0L37;JrSL5@+To7jkK_9h+BxFK^t5j>e<T z1HQHnq5bzR$o;d?{vr5&%C#Gw55hp^3!XDd0p=5)Q%V8PH(|i@Q5g91RY%V<-|?JR z3SejcTvqHHlz*`@&!=Hf?B1+;p4&no*G>vu^L!o#S>rP}-h$<T&8O#-+&W$_!XQYq zSh>V_N%P3-Q5d-E6|Y&Pfamm*kfoQv7;JBSF}pe$^}HU30k79#kd}88opeE*;QH9n za;M57ckG;sYhIhfpbP4d<=)=0RtmqPb`ZS3Gi}26vpVDK`#h!2o!R#<X<=;f*eSNA zok+d!CwIpA6p!mtcGupvQ*K))qN^hJNSw;CYAFcu^ZYoMW8G39aWKcirQlWggCUR= zSNZW(?wRB4FyJ^m48mxjJ*>YH=kpp70#W8w*&}GhI4%WvPMA%G^38JLcr^rMkAn9p zN&)X-gaPkygh3zRgg{t-xt;e=!XS#z8_5o%_~X1M5CUQSmG&_CaXar3g+T=S3A3-R z*v@-DVG#74ij|ATm#4x<F7S*}zU1j><2}AG=!*8y8GYhC(lF?Z=X_CVM44AlC2z&X z`01*T!h6`*D!RvBVD9KrbJ-Vg-Qjl>VQ@O;;Ep~siXBE7Ba!F?-r+>?fjfdD?}+$4 zQ7NcJdl-BHZ8eH6qTq!2P<ijzPPVLy#I~Kf*U_G5bjE&2R2nB+wx@}Hls%Xzwi*ei zJ-Y2EZYRn!_q}XKt|N_=2sRldCMLwhQ6LJfNI3lNJq$wjIb>fUBt}oa+t1yL%Du+B ze-#4!Z9o`A86%yA6KNcEqHTZqJm~*q%d@M;1E;xv9rdC8`%k(aPqv+WN&ke#Vn^2F z({*oGv(+f?R`}bqF!0CXsW|)Jy`7446n?Bj?)P`4&i=P~9X&^~pV`n?7<>qv5a4eI z!yw9jBmPe7;w}#OhF?d4NPMU^_@5DgzOB!X1f=_-e^KD4!0Swi#BV!v+XUQE0k{t3 zi3Q*})J1_Qz>5Ok0$vn|B4ftE-*QBPsPrxZy>Kuvjv|2k4Zw2PU@1V1$n)p_0gaK> Ay#N3J literal 0 HcmV?d00001 diff --git a/android/app/src/main/assets/fonts/MMSans-Bold.otf b/android/app/src/main/assets/fonts/MMSans-Bold.otf new file mode 100755 index 0000000000000000000000000000000000000000..201f5ae59f635055c794b1bc7cf8aea7095e2042 GIT binary patch literal 111676 zcmd3P2YggT*Y|EVvwM>bD`Z((NRi&jrqOE(AiX0!^gtjGLP7~0L>)ws-g|GM7ef({ zE={E<9fXL;BZ$n66CS?*+}TYw0Tc`G^XZS=y=~5!GiT16Iqf!W)vBq^OE*Sm(A5r) ziV7fmmkiPA+;i)6&qmaXh>WtCZNKPrzfacbbVutoYufVZmSGchI^IgBOIcE{W$U^P z>sRlr)31Mu`zcLZRt)O4-8WRH(+A?bYxn-q0}GxwQc|aL`v%tv_vsnkqr{j3199&( z{)P3y1=CONdvVVl=f(Q;PZ)aR{otZH{e~4fooP=0=%EAk_nP6Bz7+l#2SoSpnfKeO z#c@6r|LP8m8=UasLtR6i&hQKF2k7+TQJt<(mt`Hgyi@%*oxzZXE4o`>{dmrCyz#>R zBFKHd`vyE`)VYbP_z&;6`@AsW@1+;^|NiE_Kx;|flMmd}>6+>E_^Wew+w7LAGwKz$ zkKNkgyrDemJL?+i-$zfq6k;&A=?(5nbh^#B{~rEn|JAJ*(L}dI7f{680V`E^2B4>l zn{J&9MQ{kvF!I!m!f5E-J%EJ;SLJUvoq{v@+n_6_%jfv*t}CFc>-bG{g>>y5zm0ez z!SP$c?~fh7JzRd9b;W>@Y|~5o-B{NcShUnd>jvlsqun@NtgeU7uB)I6)c&uAYxQ&y zx+c16c(QTkljSp?&E7&l=JhtZp1OFn8G|+l07h1uuWqM>ZkUFJXkm!1H?Zi5_mZ^# zE1)HLx0}no3cBuSyT72PMn?mVc}4HEqq|<gu_hq9>-<3B<+@e64Z1D5?YiB%&-L~7 zqx4JlDQ-S)mE4ZGT{A55o9MU5FFhb{K%oG?fFc1U0;&dV2srR=ks{tNUZ9--&~2q| zjcya(-=*8DJD`70zeK;;tpMIX>UJ6LkHPy(0;~ZA0t##IR|#0}eE-F*7YAP)c(MP* zz89ar*z;odiybevznK2wgBSiU-2a>S-(JsG-Tw0S#@iciO}{nu)~B~7-}>lQ(k;`? z-)>I7u|n$&5cu2w398_~7Zb(2dHFv*7+j~<>%AH`ZW%pbaQV7%u|33j(C?4}dbi)* z3~F9?9^z%V=;hA4^KOOR=NES0KnnXWey6biirjmBb-G78ybJrU%A-$1Ltxr>z;M1` zuClryT@_tzuul_RYh6bSR$tv9-B8_V-3Pi)bTf4Gb<1>Xbtxd{e%+T45MS%Q)7{dg z>Hed8rhBe;*PHd;`hxlZeMx-<eW<>=J{%-(u5YLBqVJ{euTRjA(2vu9q@SvvtzV>H zso$XArr)doLVsL;R)0}{O@CMalm3Z5-A(6aa<jPE+zPuDbt~g$cdP7H%Pq>Sv0E#* z4sPAtV%!G0CAp1qo9H&#ZMxe$x20}tFx_{$?Q=WgcFOI7+ZDH)Zui|Dx&7vrVK5jx z4S5U&4E}}^hVq6GLp4KPLjyxILt8^<Lr+7jVX$GiVXWap!>5K>hJ}U|hV_Q6hCPOZ zhGT{^hHnj54R;I=437<};f1@=J(qi4cOUm6?xo!W-7C4*bdPjz<lfS~y?eBKANM%- zME8;I6Wpo$XYO;|m$<KX-{ii-J=OiN`$_ln?w8$fxZiXC+5M?ICvL=p<R<xvA1O}C zkzi7l)FJgrQ__ZXB0Wey5>JMaF=P^%LS~W$WI0(!wvgTA069v&BHxhj$!+o@`Gqj@ zUn4Pk8Lh@b#&?aSj1`Sx#u~;5V?$#L<NL<0#@@yO#v#UJ<9Or8#%abm#>K`}#*N19 z#?Ot1j3<oejF*hpjXxM48h<tZZql0+(>tboCSOxAQ(04xsfww#sh+8cskN!2sk^DK zX^?5CX|(AB(<i1Grun92rnRON(=O9~)0d{xrms!knQocVO#d-GGd)+_6|>^46jTC~ zl1c?7RH?3nEAJ`Im3B%OrI*rQNl->8<CKq-smg3+k+M?Rplnn2Dqkqam9xr4<(hI= z`AK=Aq<iQ*Odb{wn@3@fq8?>D>>iapYI#I?H1=ra(ZQpeM~ufnk0g uqw#drbG3 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 Fe*pyx{mlRX literal 0 HcmV?d00001 diff --git a/android/app/src/main/assets/fonts/MMSans-Medium.otf b/android/app/src/main/assets/fonts/MMSans-Medium.otf new file mode 100755 index 0000000000000000000000000000000000000000..75d1bb210a9d7870ed17ae28ead7189611c9cbae GIT binary patch literal 111352 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 literal 0 HcmV?d00001 diff --git a/android/app/src/main/assets/fonts/Roboto-Black.ttf b/android/app/src/main/assets/fonts/Roboto-Black.ttf deleted file mode 100755 index 689fe5cb3c715f2944fec30e43ccb8a2b10625d3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 171480 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� 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 Xk2aT?%S{K<(OhA!BxPw6dg^}wc$YKS diff --git a/android/app/src/main/assets/fonts/Roboto-BlackItalic.ttf b/android/app/src/main/assets/fonts/Roboto-BlackItalic.ttf deleted file mode 100755 index 0b4e0ee108899ddfef739f48d2aa9475b8b41a03..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 177552 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�_SD^G{wdrrHYdIGDG`C$ZMlG79#yZF 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 diff --git a/android/app/src/main/assets/fonts/Roboto-Bold.ttf b/android/app/src/main/assets/fonts/Roboto-Bold.ttf deleted file mode 100755 index d3f01ad245b628f386ac95786f53167038720eb2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 170760 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�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 b>USLPKE_;PE;SuYM{}9EoRozpwA6nC1V09p diff --git a/android/app/src/main/assets/fonts/Roboto-BoldItalic.ttf b/android/app/src/main/assets/fonts/Roboto-BoldItalic.ttf deleted file mode 100755 index 41cc1e753153e343a0ab73a341f545fec9eb7816..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 174952 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%0AM`+%$+#a3(7&S)pjI)TJ}q>u9P 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�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 SOpF$ni!tH~?yPA7r~Wq)n65?u diff --git a/android/app/src/main/assets/fonts/Roboto-Italic.ttf b/android/app/src/main/assets/fonts/Roboto-Italic.ttf deleted file mode 100755 index 6a1cee5b2948dbddf8fe6bb050a5cdca1c206dbf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 173932 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 diff --git a/android/app/src/main/assets/fonts/Roboto-Light.ttf b/android/app/src/main/assets/fonts/Roboto-Light.ttf deleted file mode 100755 index 219063a578a486b7c00262057efcbc44ebab0eeb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 170420 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 Vvd7yK?1{FEJ;|O-&O#Gf>OZzoZ<GK4 diff --git a/android/app/src/main/assets/fonts/Roboto-LightItalic.ttf b/android/app/src/main/assets/fonts/Roboto-LightItalic.ttf deleted file mode 100755 index 0e81e876fcab86b7cc99356aa0e19c0916a907bf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 176616 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�ZkmF>P4*|v4s`ldD0 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 diff --git a/android/app/src/main/assets/fonts/Roboto-Medium.ttf b/android/app/src/main/assets/fonts/Roboto-Medium.ttf deleted file mode 100755 index 1a7f3b0bba45b7470a4240c3ec67595eeeb02192..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 172064 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 NSDLFxS=xl2`X5i?+06g| diff --git a/android/app/src/main/assets/fonts/Roboto-MediumItalic.ttf b/android/app/src/main/assets/fonts/Roboto-MediumItalic.ttf deleted file mode 100755 index 003029527cc651faa12b18f02ce81d74f5031756..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 176864 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 PLUob4m^)jVz^VTYc<xYG diff --git a/android/app/src/main/assets/fonts/Roboto-Regular.ttf b/android/app/src/main/assets/fonts/Roboto-Regular.ttf deleted file mode 100755 index 2c97eeadffe1a34bd67d3ff1c3887fd53e22c2ca..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 171676 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%0DKN%TT5wIPIa2^B70SEn4fC)4JS^`-> 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 ZcAgz$Pp~K2ZnnEU$(~HkLK9l*e*jr~ZsGs{ diff --git a/android/app/src/main/assets/fonts/Roboto-Thin.ttf b/android/app/src/main/assets/fonts/Roboto-Thin.ttf deleted file mode 100755 index b74a4fd1a2ed1960da1d0f8f0e9b8d05a5819000..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 171904 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�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 Hp{M==!T*Ul diff --git a/android/app/src/main/assets/fonts/Roboto-ThinItalic.ttf b/android/app/src/main/assets/fonts/Roboto-ThinItalic.ttf deleted file mode 100755 index dd0ddb852645db815ce4f3d45ec4a37b601ccb5f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 176300 zcmb@v1$b0R(>C04&P?2uK$tiZNJwA;Ebb1AySpsG-950lyDq*=23Xt{T{O58EVwV4 zWX^ndpOZ-@`|R_+-}V1r*n8?|cUN_FRdsdGETM!DFMLSEP`ygkYP;%~W)N2TDIu(5 z^#=7DS^NUi2rFBIkTzGUH)>Mp_2;LX2wRqy5Z~GL8^y#ee3KkS2;GEI+IQ;HA(0Mg z9!yA3a}-*w)8K)IqH**rA+Z&3zed-@ZhhK)%CnV_BCGMv!EPM}BoYVWjrwlkzDu{> z!@4%P9`&7&(whj)=-j<?pP^m_BVq{g!~1eT_bweeXO6rw0q;iRd1H56a2e&*1?Qb{ z9^Sprz@gLjME;DnI}qYivUlH39eQ{@U4{Cm65<rxr^C=heL1!h&*PjJe(BJs%L(?v znJ}XZ1h6%+?|^~U4x}^Mvsc_t?B6A^u<@^hgv7MQ`4b{!#lpOj`VFYq&b`bR5{PQ> zcjAL*Q9-ZMhL-elmg|oB90m|Z90BbQ@9BFhsKeoNdO4*T?h}eu<owBQqHKK5BYvbA zk=2?AaYJ>4o+dh+bEyhR#~mUsmE*xdevR_Wq^qdLRuv%+39~jJhE}*}5H(b<U%$F2 z&uY;Tg^;fLr3^PHqynBx%O;!{2<HpIch(<GL-_*JNnysx6R9Tg1ZvAy$sy?k`H40r z*I6@?$hulb@ET;e)Ri=#qpfFgtrFcu3Ug}Ris!pYHEB3#NuU%^1V{qf0B3+gz+Bpk zc+y_hBa)spliHF2phn)C?9`VhwWMv<z0zLNLiQvR<Y3Z58U&0WE#<aki9Cw5WFBOk zRF_0b-$+ZznY7R)<K9%D1Q{aj)F|F-Dy<>W(spu8Hj?SmHnLIgNsglI8#vx6ZMS|# zn+@y-IY)O{d-6);7hcXflX=q+DUA4{jb(W{sSMhN|4mA<ktm}!3Bh@Jx{lPL`<0XY z5A9fIB_+glsXnPF)wF&Q@36I`Jby-turZ`B&inHtWT5<ttm8+lH-YWITb4x1(fOnR zOR{#BJCjK`c96=G9#U895BUIb;6F$)I)iwi&F}ay8lh`RM)7{+A|FadOGYwP*O3h3 z`A7z5#3JP<f$TgP2n?m^<T2Xum9K`JuaSc^&AJxX)A=}Zi6@d`@)BZ|kCE#-7qXU* zv3}CMv7V81Rtw~3lr}-8lSzVZ1@Q+RC;b9B)+A+Ye93i5Jla`9iXi1Acj8Sy6N5Yr z??7JqFw$Dzn3REhD#}S@EE{2U#JvSlEs~)2K@-xSu2c3vo>AP5>e+i*Ky80b>P6Sl ze5?}rK(AW&@KEw6c*<bINCY94ON1!ZLF<ARASCkxjvc9m*5)&5HNhXsZ!CARUKaf? zOV&4Ni!Ag6ZBCKrlg{!0=zueEm%5PF(mLXXz8HyT;_+TFz7e`7`fehb$cmCqc;_0w z1AW^>rr`LSR0#T6l_c<YWR4U>`h$<2asnBy>qiDk14(=7C(=?EN$Sd{$a&eFOmGOY zUU29^n(B;XFY0Y3JtYn0MC)$dM(Y-73uHf)w2}u{_e;;o&uCk9xgV(`yHlpmOX}&P zNIhL4(p^`RG=z>eM0p+crN}60q4hJ`S{CiB&Ksev6|GBk)N1Bmq2D!01^yI$QOkN< zUW<Maya0R$=_hZ73~E3peaUp44=JbfBIRI6`pa8Mbtx1mL@MeU;T<E%ufA7^G}i62 z?$_<p%D}a9(Cw+Z8)Pz`FQ@xVM$2bOHH@8olCSlE?mC$*-$#4BNonXsX$Ma-N_Pw8 zNyL?>Sku(;*qtOue~{h$92tr8p(wMA?r)Siob=2t`wGSuhs?K-p6J^yKsfq37N|%_ zdO4uFT$Z%LxU8VIJB>8P82KXlop(T6Yk=M-<#pGsTjZx!vy=h8g??^>{5{d`QslYx z4t&SsdKfA1kcTvt50mox*QA<mA}KFlA!DWaq>FUWdV_Da-qg(`E2K=)S^A4I^!s%5 z!za{r4792IC+yP_5~r3;A<rV{%P`1(fI3df%W<e96m97SJ2aBi5aR&$t2&^QYAI>F zk#gTw55}yMe404vc97Q4p#!o+5~Tv<HGe^N=qIBcRjh~gy+~)>FQk~1LZ)&Bx;LI| zk$#XQw573J6m^GNkF%=eEVshfd?v(3+3)ZT5^Om<80<7*1#t}9Pldy{t{Hq*gH#fL z|1ry-$*+8xHJMf*CxIQbh;=Jy8huZW(vLX558GakjF;M2Ke7H~J#2LY=^X5TNzz?^ zgdAp#NqZnKABy|uNnc(UwnNyl>m;wPEolSYXsYugQF5B9$5p^<W4@e>g`QTI^AcC- z4#w<$a){3*#q>`|Blw$d(g!kB{zM+={vgM6v&bG@WvYW8sDx*uq(Rm-(qOU+x?jU# zFzHDx%4w+w?6vAktWV%i2>(W!(Icb*eAx_mQx|C%^bBJ`9S>D7CIFN%9b+|8NJRhH zy1}6YY0Z*o9C)C>6d;U0Af12!U^&nL=mz)z!9YIX2~bngTc1ff*k(uT35<z(k`u=6 zaM%<bnanfcQ#!#Pjv;kmH_L+7m5!6L@=5raF|e;yL3a@sdIo;-0Pe3O-T7@?!+ZRc zH4So!<7;r;$+|~<*U7q*&p>^+#t&OB$|W&AekW6<KS@5>j|`UDkS02-^?=?Db%bF2 zu0b8J0a6NV2e%%E3<9My<R>W@<8_kt0RK#?NH_3I0CapmDI>qf@lDcP_P{$5&=h*| z74?_1rb%AJRaXIJl*GF~0ng#9XOiwx5%6BqdP07U`U5bY128@+;oU@1T&)j0tGrAl zF8Z!0tFQF~<SVoD)=bdiKormdAV3NDhS6NKDcE`*a%?RJlP1FF3%{%S{%*JjKGB{s zl8bdGoe3W|mF9!}sKuv~^6VJd#a_X$zbALuCvsQFk2j(DcwP9K^JF2=7uX0a1<nHl zfK759GG6Wh3?LI#TAsAvf08Sze$}y#kbbvbml|19P*)MUkhth(qb~!<GU406|0duX zuno2@7BB;mKr<i$h(dhS0`bEh@x1V*biOrF^{HNvNjH*Dx=wnbzR6N`oO_^Os>9~g zg3YN<N=wyY_o|bc@S(*KkHqug<O{}11^Dp~@*C?`{yW|oLwuzDpwKT7&x!a<E<@@G zp!_x>CPG|NRE@Jlto1Jtv6mWmiP$R(BJQ$>E#{Ji-?azgE#dENP~$BTQ~ei+I1Bug zvWF%YAsZD{AU7?(5;2xN5L@A1HnL)??J7^AKEazE6?}>M{wo#nW-4R^o<)29H!5OM z5f}bfs>UJEMaT}kcx6%Bc@5@aT~60oyNK($He?)c1N(s3R@Eh&t|P`3F{g-i@$5N4 zSt;!t{a8ozgOJZZsd^3lBIG6dCl^J0EMioQDNyTSjY7tVnMK_Czfw(y`ex~pMmLha zqR&Nt{NGX$lZ&`m=!ob$RaX$3i}+Z?==M~HI90@@;KhhK%1GT{iv(a_#rXfPfQ=A# z#2&)V+Cz*L)vgM=Y!6|-?IG;DeO<!-*aJ4nz8>4Lu;;k|8;|;9bJ}1XDvpH@P<;V> zg76DAsO=MN{AW9bPsxJnD}=wuf+`mw8v%PB?2c7GC3q4L{>uh2ZU$Me%A>5Q(9v&l zO^jy`#Mt>s7~<sO>bSxjO|=c^ClPN89Ts-^pYt)HBWk~5?xj8>=3gQfNBk{xRE@h4 zTdOgfHi!Bu=1b`No48j}#NFzc2UX*4VUG~|2^|&Xsb$*cgJMpI*gCs?;yFAo;%>EF zXs2qc#JCi5MPcXE_F-NKJE4ww#MEkin9HfQNt>_TRP7VuZ;tVy&H?9>D(XBC@wd=j zn=b#8+H_l;KVx3a{YYWe_9M;`Z9*JeBHK=7wbj-R_@HBAzF~`@9o$GohtC+xm`iZP z|28|O)j>uIS%|rYm>+1e&Tao}W5{OLM0|?6q6BR3WtR<^p?@j}*{Rgth9It2ZHl0n zr--?Pkh_q>KdG4CNMa6xd5t>v5V?SV*yaD{=l_@X+a`y9QXxCxdq7K~ubIm0zu8fH znf%**+x+)`qyJ_%F<(~g=>I@%y7eEl8!-sI=3*Y0C4Y>WI+#Biv*$3vr(&L|Ld>Na zVVpZ-j(HaGw`z|C#heJ^P#voytnbA<0lJVox6_97llmdfYeVLOj>z_fS$-+IZ?pOY zGW`iL#g+I&%#45U@o2_pZ4ddk8t3EC!`X8BY5I8coTH6N+7ji+p1DEbHE9P!wf zEMNB{+qY%;FjdCL4+)zCzEx@)!!{ozkFd5<?Y@`Qg1Q|sx5_I`Lrho6x>-Wps@>CU zziLA@``$*_auMTa+iem1Yc^S(CkUG_Y_IAkM0^U{ZSx7)zCgt0!sj5)RbyBY6C-w4 z%N274;ji$nI<FAENR*E`2*zBXI+xI{jaFlEyeDFP8S@3qPuqx?QN)X)Uf~OD5N-Nr zzlk=8c4AzJStLbH(!<dSlT3y`S=P&pa|s`e%h`Y8hAcVAvQ8(!WS#7QL-kC?W%0Nq z;UP(u@ET(h6IW%9Gf6K=5=z5cvJTIPb6JlYoa2NsE=f9_9)+W5y?99$Pcqctz;qmy z$V@_uBvA$DS#w^LqZ18KKT)gr52cB>C0s)}dcDrkQICi8;u-uoIOuUGnkA|ikKstv ziHEeB9dHwHz}t9M=jfo`$1@IkaSKTo@rQ@Sn-GT{R2FYL>KsuvIMazYL~){J_@@>v zo|X0DX}p5M!7d)*vZL(CAy~#J^1~b=p!ie!0P?4f;2Bh}7e(tJBYZf@IuxJ^Npcch zBIGA1uIY&*UJ-(_{fX=15kN>D&*DV<sTT$7LdGf&;t5<9vQl5dds#vew<UCrC>np_ zWt~pE3wcXKbd0D`yU7J(s7SoRphx0B`xB}qPStxVMRU*zC<HG-PqfEG?YM+LwIuZ; z>yFm)tYWgRshr>#?a}^;3bOub@)w`t9rX|OF|-a6M}4Ydp}MT+I5Z8an*9$C*dEcI z5dD@_yw>lwcBu^$<!4{WIj~7v<B6eoP5RmsxlYth#dV!vT`dboVvONWJyk!{F{bt^ z>cfNLu6RncQIoD(rO*m=8gxZ88$*myRe`}h9+e!Opo3@()9ckzRh^V1D3Q>zoPSwD zRn=V7^e=xo5>t<a9PA3nDe6CtvLr2PRDrV9HVG-)WTCz!Zm5N#$MBa`x_Fie<;6v{ z<8T)(P&pAo6pxCcgr!pdU>qPk(FM4!j(zPqKE<Gg=7WE=Vmu=3qOddqdGQGwsZuA5 z{v;wHlSjyBG8QX4198NND;Z5zlWk->IYLg6OXL}OPZa7-J!u4uqOr6QZAZJ&(R2)* zMd#8r)I>i}D+^)?tOYyBPP4z*efBq}7)6fUorm!xK7-HYYq*K;<A3ps{0hGzMMyDH zRjIzzQR*uVlO{{6q|H*Yv|qX?-IN|lUt}tK$lk#;xP0)W;E%z72mi=l*WhSyHh3C* z4Z(&`LzE%b5N{}LC}XH%7-$${SZ~;3*k(vJ>^B?=kwd&g{6a!QB14LXv<+pUx={B} zuh2Z9!J&miYlOBB?GkbJ9s7DbLsG0(ixoM_EUpdUdJVY#og5{nNeX#RJ`gMQz&b!A zEkKLW#<V@{p2hWQx&vINvw$qFPl4-O;2Neci|dKtdM2O8*YRY&pP%KI!8MU0rC6z& z)IjPaB}&7ksnTj`i)5A#NSCBr(qri>de}3V1eXgQ8@xLBQ}AbSO$<&34}-VC-(WCA zfa^Fzscf#-8GbWt1=srw2Xk@VDvN7RJFYu}YYMI@xXuLE&;sjM>r;Bm`X@baJqFi# z1lSM!0qg?Iz!qSe)z7N8%F1`;HGL<9rF2oM&@js_%T3E)mR*)jmW`IRmKByHl&DxO z;t30M%laTw$;`mo2+GVvS(zJwHNX;J4(?;!#2SI)wuGcTPFtJSC~fr9=V>F;Mm_5P zXuzYsggol~sMn(&k2*Zr{HVo~HIEuR3VGy@HN{WB+lS8{rafHwaL&V74=1M1e>m)6 z-PA1)wxzC2U6HylbzbU})LyBLQ-8ku)_afBH{Aht9JyAZ_qqR`;uIXw03gl|VjS50 z(SdZd-D$2v+FP9BiP`wvq}`%NF^sSr%dlF&8Uh`GnZQ!uFmMrgtUa6ilU>PuuAQ+z z@jUSV<&TYFW7#-1o=spAF)JOxX0h394x7v7vH4^?nZOpXg=`U9%$AUeWD;A-ma*k* z1zX8hk;%w3Z(&>6HnyGp&UTQgWEwNEWM*bN*)EdAhLh=J2G$^dWlz{smd2j3=j;WU z$zHNo>@|DC-m-V>J^Mgrk=g7c`^5fcpV=4om3<>~$XxcF{b1=VgJm)cnMdYx7w*bE zxF`4G-fR>b%_gzcyfBaEMR-x}#GSbtcgM)w!6y?FpTei|X(XAL`D{K1S?HY@XY-MF zU%(e)Rc8_TgD)m~_!7R9?B&bIKC+)L=PUS1zKXAg9a_uRkrR9a|BamF>tW$elQZNm za+aJU=lMo*0c)90`F3&zS<9<@2dq{yH<N2vpSZzy@ie}h+(c}Di|^rk$!)%m+#z?# zJ&f?3<UT*Z5As9&Fh9bN@?+!yN#%d?<Kz{2P2P~V`~-CEJ^8>-l8@vQ`I~&^r^pw6 znx7$G`CsH4Y{WBu4y!xoVLC6sPF~_ERH8D~!FD|7SE!ykP)BJTf5Bf;e;PmoX&(NH zzvgfG8`!6Uv=A*Ujiu4Z{}!b&G*%ifO@P&kqw%yjf5+d`64Xc&Xh~_JG>L!UAEhDE zQ2vSk4eL8a8bj;Qy3#0VH2=)M@UOHUtxp@!pJ_u_`^K~hZ1iy2ls2QyB?>Es&{ep8 zNr#+qOKF5OQVNpt(pI!JZA06_s!gNqq<m5m?MoBsI67XMAx)=?q``Cr!M+1RoUw~R z{rizc1rei@*})aZ0>Wz<05Jj)*26}tU_(J+P2i^p=>%-ofc04dJt6R2gusTtmJ@Ok zMUMeJm4$Jjrva?uvdN$+8rTTX%fJm>p9OjoxCM*{ZUgsmeF5kLAQhMhJOt8k9b+4w zQiCY-Iq)9WMH@e4VG8I+;47}fvXXDWcVH?YWC7dBOrS~@U{Q$`qH)Ld-Jl*CF!BiX z)PONas22cB%D^9u)Ier{MrptpB^1_{#^RYfpv5$hUqOZ4OThIfpd~dB*eY5IsDSG) zK`R24&=$yqRt9R~I{2WqfZDh|2ec0GGp>Ul3Y$k8;rcw##y~q<2T!y;&;eZvEubBN zE;trEbp^WNnNgtK0rWNZ0Y#q)5XhX0x&g8fbgl-n2y`_dWV{%32O#8!zMvm8aP$@S z9;jfGK;e-Dn0PM}fP8sjoCg4bIELq9d4M1syMYSX0Ax963k_riD0EnWr-DN6>@=QP z3Hp}?g7Vod06HV|l>M!NY{Wab#3?>Df#O7+2SOjXqXx1S)LnznZyu&W=s1VYaquB@ z9JVkAQ*aCr@Xw)79J(XUIrKn<I7h$2S`w^75stor%_Oj*ghRftnuN~=AV&eR6Lbjx zS*p)20|m$~P{@Kq2I_m@nF9p+$ya4Tl(kv|K{SE<fCf?aIt^qG=z3rSAnN%|1KA5I zWF#Q!6f)Y3^7nxX843PG{i5BtMh<}P&w?mhoCD+psOX<VfT-iJ24M@3Q_&#mKMJ7# zgl*ubvmoj|1E4SA4+wHkgkJ<iTP_1vaQzY}?1X@@84`#9e+r7e6@V9kt<*s94)znM zfM+3Czf?i4g35pco`?QQ&;hKa5O^FSVVnpc=Rzb`4Ll9hO#^%pL4HMruvJ)>Qvv@( zu*X1!uwTg05Xl?mK;~F)RUzydaxp4|93?*>0QKGh4b&jyD&^4t|3;AWRw3-5lotp^ znUFPd)I<u$yAMDkG+?a|(Jl~!>kmO=HNYPdsTfck*I$8_&;aj9BqLA~*WZDb(g1IX zonb&(T>l7KPJ`$(sk{dA1+)TC5$!=AN|iJSJ1bSzAo^0OqCwbQsj3Fiw^B8rKFa?N z+CT$;2KuuG>=PkULk(iDg49R@KM&ei0~LMS1Za*nKxd>DKr7f6(a)_l2;D(GQU!kw z+E#<mC#fCK0nh6}J7!@VXeXdAt~-Gy0{u|_3()?+AYAtc9SjV?bs^888u(k#VH)@w z(BZ&jJTLliDgYZGe1bG13u8fl1?J#-H0WGl9xxu54=lp<VxWtGC8$gE(NbUqu8Tfg z31Iw76M@wL#;oum$lGH#BcA^Nx((P4psm;!K%^bG{t46sBm-!lWCr%*UD0nsw*<xj z7|YTjT(1Lq7&roq0*(TIqMXm5#{u*wtp_Ul>^vZ3Ao}AXt~Uj}1l+{)-#~9^py)H{ zb`~h;oh(2lq`N>Wz<`IqBb3tu^f4gxPV|@1Gg00M;5+aG2m;ap3!ZNUssL61vX@b= zfbfel>JyOifuauC1J~PwdTNl8K)nErUkW`4#(Tkdo}>QYazJ?;KLi~MOv3S1(AB_4 zl!=FfA>ZJ?aUJ{xLq@@(ZP26qbu|ci83+KoL;Hg|0nRvvYz=6O0qqbz*ns*CJ~$o+ z>Z?KMj=>*5J#+#n3NnP^7`kPM0HSa_6Es!>odX&N#G^fTK}!Lp@yuM%G8(XFiWo3X z1(4GvhJhOB0#MNofGz}Gr$OkkVZ8>r2=q5#3!Z_V8n$W><HG>m6F>|~49ObkO3;14 zeq3J#3LP^X!tok{#d8f<XCWcrU4WvV5I+rc11NYEpr|t>QUgI*Aw@ONjiBiJkhXYc z6Ct5Y14TPRbsC5n)LjF`*a(HZL%s0)@1S`!h?pi6G8Uj{duU+|Vul`CLj&Cj+Fpa0 zy@z%Ny5RZUghZf^1?V1_RtlgUbT7it;~K=QKLgh@BwU9K6srdMC&JH6z=G>|)<mLf zn;aW7Po{Kci@nr3$y6m@vLkQTwup&F8w^!@R58)^MNBN(L<@x!G4W_aH4~4h*06b4 z3qz72sb=RSLp4M94xLR>gi3LvOHzv%gNZb1-UFYFn}?Vxv<S*R?9!q|=^`dc6oWVL zbW#fx&@-z5Q1w!brHDz6u5B>!$Og@SZf+V|CCF5vN{gV75JOed(FV;;N2>&dv}jSp zq|0t2+B&L7fYw@lv`JT}h{-`Kp;2>Fg&-4Yk(4CLYt%d}#56W3DJTgX*v^mUKHp2p zKQC0UzW@nT-Al(dKv5uJAwl9oSV&k1TG*mW5tCzd?MBV3qKP4BqEoafv}zHPbF?W8 z#3ed8icU2oHEO=E0)mT9dmYHs#?AMUQ2rvZMUW{BjWtZ&>jAlCT@zfoMw=>3-D@B% zn<s~nDna|ORqRC-Tz4sKB87>W%B(QiLoaWg)UG6PD7=TgKDw}%dc@}pX<a%@T$2X3 zuWigHj^wV5E5_u-5i#rB^e90SoY~|=2bdc;(Shc%;v><C4l<Yb!nJndV~qHS@xqPz z;-jzlm?b`Th!3my$nT}SF-W{INW3w~?Cyux`ud4ear9n%<oCnF?Zn3{@o`CfSj9(q z@mx%Rctd=YH_!ou6e30vOX`vK>denaX-|CEGU8z^MO>9d#EXXzXT%ad@N*uriTLOO zu)cJZc(7K)OD_>w_kds&sDB-Z?cZW@nAW6s*jS#I8+kXr5Oeb%Qh*dMwU7o#cVt(& zqkLaiShra3p|7aF<WSe4okK5&H4c{?^^Sv_3OXe^y>YJRyx#enOL3RAF3(+M*Yd72 zTz9!~w~B7t+%nvIyI=6A?lIKkpvQa9s-AN^PkBjRF<!O2279gYI_&kpyPx+{pE5q% ze1m<5`AL3F{O0*R_mA?g=>KOxK)}F&SAlH;SLSia(=E?|Jg<T(2F(n*me(t9x4h%? zUd!j7uR*@u!G(k81zYn+<iBn3LYA;pNY#)Y$O@JS9Ugi-%s(tCY;!mZj}EUJJ~#Yi zgm*;#h*A-aBKkz!jI13wE6OvfXVilNDFquA+*l~Q(89t|g_jrJ6V0O=N6(9XU!-Y~ zzl&}w`Z%U}%$e9)vB!!97n@P+P+W<)?s2o@7ROzPdmkSY-zk1W{Nv)G#mg3NTD)EH zMa9n)e_29bqH&4VC8m@(Y^-SPZ#-)JoKP;|NXh&q=a&jBwYt=e((Ov$|Ec0n^UHXb zsa9rb*}$>`%HAngrQFtX-^<r1f4V|Kh3yrKRa{spf2A3fN#)^{|E^M}%B(7{s#dAG zyIQeoiPa8O=ha76-(Q2)s9IxwjSn@O*4$9bx7Kg9oooMETd7m9&e%F1>vpZXq3*|e zCF@PDcdnkber)|q4O|*DX|SZhi=Qk1yy@q!4LdY^+NgS?%Z*Dl-q9qY$)YBAo7QQ1 zs9Aw#hniPwzN&e8ivca(wd~sRVXOYFrPkZp)M|6SZN;_|+g@nbyxpz#J3CD87}PPj zlXIu`opyG*)Y+wTSm)ARyt<6+vZzaP*Wj+hx~6w4+^t2o-Q8Wf2Xqhb9^1W4_a)uG z_Nd!qeGgNQgFW4Pw(ohWSAkwndQa^=zxV3ipZZklQ?F0UKFPm0{!;&!D}7t^J(L)f z7?l{GI4AL4VtPMaKd*kl{TB6?`*-O-p#S*(Gy5;?|9(KL0iOmA8~AQe$3bTYmmh2z zVi+=e$mgN;hHe_hhfNtaZ`i6~SN?~8cZNM4_GZ|(;nBlu4(~dA((tvze;>Yo`1=vX zN30xiY{dN$Z%2BK{4&aGRIyRjN3|Md8eL&@#+dnIR*#)FHhtX0@p0qVOo*D0G*Ozk zZ&HCte@!kvdD-OMlP^tvIfYM|JjFca%T$-C6{n_6D>}_IEhEV%sYp`Sqyb55l1?XG zonCeN)*1C?y!f^M%$74-&iXLB>Fhmo+~!o6vtq8t+@*8R&8s+X^Stl#2h2Y+KVw0& z1q&8jSeR#F--T-yK3U|mXv(5zi|a35v4k!uzhw53y-PBe#w~5Ibip!dS(Rlcmm8O_ zTYhncv|{jzjVr#aEV#1o%5SThuG+skWcB<tZfmBldAv4!?fA8~*VS5gWSwPw&Gqxv z-`U{5q1}cx8{Yj^>$j%A{kG9(<D!k9H<jIVWOJU)gEwE;lDK8$mdjg1whq{Oa9f#e z$=idrFZkW~`>7r6cHB1AHZ3w`CihBSZuT{gF)ua0-no8P@UFSL9_)_X-Dmf~KZ5>P z@yGK$d{5IoNB6qyZL@d7K55^`eOvZr?r*n$!2T)wm+arZ|H%Fu`(GWXd0@xEkb^T0 zK0M@o=$Av+4i`8)_lR^P_{jbvX-EB!=06&BH0Ef+(eg*DAFY41+0k}KyB|$FI`rt+ zqtlPhJ4TL;IF|aS$Db4aymh?J@!Ka#oY-<Q=;W+Zfu}-F9XRcLderG_XIh=P_*Xdo zMgO((tjF2$XD^+rajxCDe&?p1TXk;hx#Q<9ox6MP(|PH9(D|tI<<2)a-|hT>^GWB| zoZox?()nlSKV5LVV7QQQq4I?$7kXcqaAE0%<O_!`T)*(>!rP0|#h{CE7t3C3e6h>L zkr$_4Ty^n}ix)0Fy_j)HcPZbc;+JY)YIf<DOT#WrzqIz!u1n`qN~OHNOfP$1j<}p~ zx#s0om-}2Eb9v6?6_<BhK6d%)<+RJ+t~g$qdNuTF@vGIYHow~Q>d31zudcpozIym- z%GKvre_V6EmhW23wTjmoUF&i!@!E)MbFZzuw&mKvYgezOUVDAba^3xU(DkV6Wv<t_ z-uQa^>;11!ygvK-^6NXVpS*ta`pfGXH(YPzzY%w%>WyYMdfXUvW895-H`d?y<HngA zcW%7C@$DwR>3%clW|5oaZq~Zl^k&DKzuX*qbH>e;H%&MHym{^Bvzy;<Io}GtRqR%k zTYGND-L7)G>FqwZN8e7mz2^4L+b3_|y#4OB^^WJA0(Z*aX?kbmowawi-#KyT#+|o! zrMvETqwdDvEq}M^-R^hC+)cW>`fl>wGk34ueSMGJ3%nP5ull`4_j=wNcW?2%_4od` zcjn&h`?c<OxIgs%toy&+KY0J*{nYzk9}IXf>A~^`J0F~VaO1(-R4LUjwMc5o)Ox91 zQv0QjPo0^%E_FxhvD6Exsi|Kdx;~6}nDDUj!^RJLJskgV=EDsSlOG;`cnK>imPbC1 zq90XxwCmBiM~@!8d89n{eH`^T?s2)twH`Np-0|@*kB2{A@OZ`J4Ue}!-u?K{<CBjs zJih+;{^PXAZy$eoY<VI-@qCi+Nz9XqPZ~Yx{AAdZaZjc_ne$}HQ~9aq)4WfMKCSSy z;nTKH6Q90%`st~Xrb}~6Go;0(l}@XaRx7PxTIaOhX#=tTGcj#O+WfTTY3tLrrR_>P zm3A@h#<QZ&jL*tFtNE<evrf-?Jsa|D%(FSq);`<!EalnbXP=*w=Pu8~o|k@J>3OZ^ zO`msvKIHkd=gXdNe7^Jf+2@a*e}Ccr!v9777YQ%wzi9QM+lv7&#=MyRV$q9LFE+l| z@#55r`!CX7e0%Bm()VS^%YrY9y{!DQ$;%Eed%PU@a_q|)FBiXD_j32k(=V^SeDLzs z%P%i2ujE&rukyYs@GAaQ)mKelb$r$5)!0|_Uafky<<<UIXJ1`;_2AX3SDCNfUPrzz z_qyrpUtUjsz4G-RuP?rS`9^x<|EAEJvTqu^>GWpsn`v*BzuEKV%9{soUcJeD>-N_0 zHtub$w;kUOe>?Z>mbZVtz4P|dJJ)vw-j#k==Uwx6o!=$C8~JYLyVdXZzDs%c;yrmE z@ILl^jrZ-}k9fcE{r2}K-rs%y>4W13!-s?q^**%x(Dg(A52HWK{;>ALz7HuMo_|n2 z`hJZ5Soveik6l0Z|2X<%(#Pc=fB$&&<CTxEK7RegKDm9$^C{v}?58rHYJ6(&>CoSW z{_gkp-p}Emr+&WqrQnyzU!Hz>^TqPj;j72jfUkzH1-{09E%~*=*BW12e(n8r!q=r= z&0o)cef%~3o7cBO-zt4;`K|xAq;G4#?f-V_+m&w*zP<YP^*j6S_C3${$nT}U*ZJQ3 zd*|<o-$#C*`hEWQ)!(;$Kl1(Z_b1=qf6w@#|Ka^3|Bu2y%Kd2Yqr;CrKZgC7^kdGC z6+brr*!|<!j|)F;|494s@rNbdG2JsgFg+x_V0y9iQt1`bYo`C4-Xgt2dXMye>BG_| zrO!@ZmcBiGclx39ztS(KKS}?QK{FgPJTn3_3TMP;{FG5SqjpB4j8++)GJ0kFomo9| zU*@sQ3z?~zUo#bplf};xYAI?dZK-ByXlZNdX&G!8Z<%RXYWdBAITt4Hm|gJ#h#@)A z;k%VC#GUjryLfnddX+M{c$i3v_|&PNj_Rjt3T97Lo10inP%`r?*FrrZI3c=nEzC$R z;7v2;|AOc>;-HdbC;Hj!qFr%SiHUh6yV1|F#X>?nL%1i!x;ziT;!X%JU@5~+7?pR* ze(Lg+aYdobVv$Yh>t(%V6dRJ^$%b0mvbIxMTf#_TYdY<va^Oy4{-trQXq+n=m#mjf zPKBF?+zR@PR;QRqOl&dlFz<M3G{(pIVM|b0WaJ;l-A3gEkMQ-+%XuU|=^QD4`UIcQ za6g|A8j9MUNF7-Sro1w7CceZZ$Czk}iN=^5QcSXk$tfka80BH!3Gx0s%qt<D)`*Xb z@lDu{Pd}sFTlq>of1R&>B8g5gLzec+J4g`8Pga^;4Ix76t{$fRSu%D(%Ux_T_P~jU z?L?J6cv7XG2Y2!a>F0A{C}E^2UrazU)(^6ol~PRk)Lz7=bBf71CfUL6uCs^94HrF3 zUMVIA50j7jupi{(VG2;M1Pi7@z*R^BHY5P?Tp(T_!b5;CoQ1I8m9?`<{;Fi?smER= zRZpYml$t}^%`G|mv))SfQZK#oWOm6zw9Q^+EnTW~rAv!57b9JzbPzCFJ{QNei_8V{ zmfF@>si<xYDMDtLeT&9`BZ4NYoH~J1Cz}k^ezl#1;!dbbmO#RB5-tS7!<~d4dOC#* z$vSx?``Gc#J(7d$PQyJ+At|Pi7;^#jB~!RZa^alYkbp5NGBPSM!DviKh}Zl1>BEeX zVWB#`&d*Qs7wV(ehb2TtCdBLf@C+YrSYPr@**ylo=cfD#`M0hKDB-t!@q$Nz?!`w_ z@2V^F`aj=_>qk!G`rhq}p3>&qdxp1;8gy>S8P@{`+@J2>oU(m-(^2ia#Sc8R{J8tU z15VElZ%ttgNfVhIvc8t<Vt=A5^ri?YPb!mNh^bPHse&dYbu`)p69rjBshZ+p(x;g8 zG0C1eT%nJX^Vpq6d6*0-CPR!V$|E`6?z+JvxlGO}WP$M_225yVg5cH9FFp=Z5dsnt z(d+(kU+4diC*&yV&wLVxdpY}WAJBKSmy_?#l@2YcwVdhark5R?R&71g-_3z{={MZV zCGhve{&>!B$5Oq{p?TFd)BWABDY1FAwln-Kp9}Fph2)dTBP&fdZ5>--@-C%l^(NC2 zYeYxaYCOGH-6G0>9i!?^+>|_`^2D9W<RXQuH=WkIUXkdUjiwF0X^{FFVEV{U_(p37 z$TFA|B*n=T&3@=1G`&rN0XPY;jWu7K_zKku4bThKiq;1RLPDbjag7cY#7(>C;j2F4 zr#<QI=Z1Tx0FUJSIifU&xcP~zdXMC|oU0J9P_-<(q}Nj;v`X(E7NtrY3g{h|K!wIZ z_q_f56O0L}D$)}P(R!E0o4WO%>gAiVl@6K|l~8cW;tC@k-u~lCfcxx4rLUe+CY72# z$=$vB%3@9px9<q_=+SKaRvy-7z)u}c^k1Afd(lYCi&ZzjY`eMR_{HD4oakpMu$P4t z=#ku__3Va{U;hasM~`ha<RX%2<hs<6Hc{=Mx0&h$qr@b|m{<xt1KN+V0P9yeE<Pqt zg52=K_us@jiArI1S=S7|P2gd6^6^#Qae>Z?7yNY$``(}_UjF(>78U80;Kfe34!^QA zOwPmEh{S+VQ*`=1Js0bm6{)YJDt&I}`F+z<#niN5TiW>jdnVtaMl6AjPzurex~8zK z9%dIWZ?y(tJ5U3UG7@j0qbw=`m3T2S)b$wkE+OY(^6<U^LzDE5i<G~WLPf@~09p;D zzoFHe7Hp~f_FhS|Y*3n@{lnQpJ{6wEjYOGU+&$FNg)fw#6q2egDS@afz~l((7!v@t zA`)bn$_RhiThD0}J)!&&NNZIsS)2BDRi+&*wo`dsm}iVAK8a3OhR!f1DaZ5Eiprr7 zA*}}3?;V0~CODH&GjVZMYjXrIDJDmcWL=K7n7C@6g(cRkGpkRpI4DJ$8Jj8<_4HV? z1a`QD;z+-hph)Rc>sc$s8uKcmCxK?k!BH*OA;ttJf&R<#i~1<l%ISPUd-?eree+pE zhmM{+dK+3*3Hxxo*=~%SKr`0+)VFzzy}JR|a1zW#F*?w{*chYW1wI-z_5d$=wGrkB zkvU=<CG#Ao99s;=B-<6o*m>djYzK_?Z?#V3RpB)`$z#UGL9G|ia=V};wwOMQ#s`++ zZOe?*6^5tnhEeW{QSM2?NDZ@Jcm&=u`FX%=+cn2F;BC>2kh8CyoM9}3b53K6$)Pa! z3Eo}=ZH7JM_*DsE0I^S749xgAFQ^+m+<$pZokMIq^|&x_c@4c&vEs@HTGMs*s9oQR z6?JejPVTnzOKhP$KK)Z?wWoQp`K9rI$1{2>PnFyFx?|UstCS1MGv!m0kyrX+D~#K_ zd5|UzhvD*;cOhb{Xr_7xO#)zFhEU~ya$&}ztl(CPN#;4NH)9()t|Imd^Oh4L;#r{a zgYvTjz2hqPSW;RnJCKs7#Uh^|`0Wg{qrWh7nylPWi~B!o$t5V3V#cb!sMOuVKGZPd zX9955?4#ZkabE&Vo90HtjNxk6>k(;8%G{}Azn;jOXZiBQFAPQlb=+n?k|)na%dcEA zvUz8>%s+H<?fx$}O*?N}CZVOJ(7QosX+hH8>`<t1c1zvRQa4*mv!f*HmIqIaM9>ys za`Q;m+X=-<y=9^v$p!4L`V^p|)%mrXc|4Lsb8bS}h40gNh|1zYC&B}r1ox<h16dD* z(c~7})AQt6yLkD_5MzGolKlIhc|0~u9XG)zNcp^f#Id$+M&A>^ZG0J&=j6FIoNb*w z|Im>Y)SP<%_kQN0;YTLyeA4^m(3RH@uUv^G6$a0b^>tVyC)lHAW;fLyfgu>5f6-~x zL<zq|B{AZ`d@{@7LPYpf#D-=E<}7%1b(BB^bNVotm52oFw+ev?3;0|ArD};Pmc|lq zSSj-qYqqv4J#JJ6&|hgjNurtFeElS$J4xt~)@WNWNi@6VH=r!7O%y#sZ9SrPk8rGz zx4mlWsp={9F=kn>9-)`)$03|$-ki3Zy?pbECI{yg4h12-w+Kp&31Up@m<Ul2k)aE` z)bLHOY-h<j%a|qOcMjiP+biVzq3tIej1Fs-PCe7v$9Kix-HWl4Z+8jH-gazo%IH)j z<KCWi`&ZJK!Gk7HHV9I0V|~LPK-c{7t@bWvkEjBu)Z`)JCXK^f!Iv7d3l3pAs9lpC zh;SYzhZq=Oag-d8a}$Ln8*)z32YLemKf*Hl>D>fJusUAEI}|&kVP{}71#A4U9)@CM zg9<IjE*Q3{s<-d2XZlV&)Y!+r4BaHpP=18^dRJRJX!wQxUY^Tk%&q1r2b-4qdGwu0 zNpD6^`7mt(9Z!#0j&B?=cGRt*ly0GsNuz%iJ$VLN))YOdBc=bltx>yG@G0l+Ns?t` zC=C-nL28)!M@e2GbFZFHk!Pm&mxmi+#S1}K3P7TPkZ2qkXf7OITnMMIhsifZd<JJp z)(^VlXVV><|1ih;34I=Eip8AA&N`cUa4fEyJz|4JVX)-kIWmRiPcD>m3K1ig${Df< zupnY}Ec<bzFzNUP2~;TD+ZORdog_b>EfYsi^3JO~JT>N6b05Ehi~IKS3Zf3X`X$$2 z?p1qBk4?(Ayg^5{Y@@tipn3MP*Fkx<FIfCuDmP?jbfJ@@ci!u=d(ikJMGNokxAkt9 zotbCbFK>Nx@uEYAc<1Ry56n*5jp;cfb0Hf^l?{Hm#Oz&IM42XU4^w!SOq?MTXPZoX zaN;Azxa1=SF)ThtyL#l~k?fbluSv=s^*ehchvnRbG!oR%9x<3YihOmL$ID>}@dgqR z7p?}IkzpeE^!M}QTWFn^ljiJqa!PtWec0y4EULURQn?%L5P->iA7#dD>QTU(N!4ff z7;~kZQQ|Au1&3i%FK(Jk6Lzrf=f?ECtE^WhN=Djd`hf|9Dh)c+hHaWNX88Pr*w^ie zd3}sj7+T@=OzbA{BD1j<#}T_`V@$sHVv7;0)q2EAu|KphiNf7ExT_-`Uxd~+!(P+# zQnczJNtTBc4v=L}ip}`#Cm|%3Vm~q=8k3x2A6>zqV81HD?X_%+qs2$he{o=omCZlV z5pi@Fmi-wSKzCv9>Nse!o)j|^HKIZ^MKISg@f5VyJ~$GQzLZPY7#CdNY36kYUZ`H? z4Lx=X*ETBgh-ZnBI`J)1EcmEmw()@iC3`+3F8JUc{}-%K!3a&@EiJ7b*c*N3JO{Rt zHv37L9H&e!EqK{!P3NPaZviBnv^Tp)M2e!_bH-q<B!oKWhQ1}|&57Ye${--d%soWB zAWWHK4ztKBsgot&0Acf>XJXE1n>2>mLO)nFZaYRshPKH+adeMnuC7B{kNYz$A@s?j zdCT&6O;)VY&eKJNm`}>e(`*^ruhXq=t-7wCx$4a26@AZ~URqRHmlHQKQcL+scUGQ2 z@S7TB5HUr^m`Z3-qZ&4;RyxJ(QbL49CKs?EyNDxLZhPNTB3BG(iuS<5cD7ELVE)S6 zow|4=SIs$91I7e(3Rm1qSaW}TxlDCUVob4cm>I(KIxi_cF2Ns<g|h^s7YWC(!*}#_ z5q^IDewg`1MuqB_^t^p%{fZ0iy0KLsW|r$&X08k4HLFiPV+@oXM=ReB?N>G{@7C&c z)2O_A`+BcMmrg2==gHCr8bbSCKpa_3Cr`SZc}lKTVZfdENk8?UdVi+R*sjl}PFhU| zUx+JXITBN>LCf@aeR~|HfwMO#r<Crek1KzzZV=mSGp%;%7TrVZZ&Q9#&YV!DoxN7G zG3DkdG_yXtsf;Jgiv1Xf#!MIuPNcEf$ypVnlZQGaa?h4*5xXjToakV{bi#l+N+OYk zDU|)tF*~VOp*NW6K#}26IG<&y_p%Iksz?J$S^U}bO?0PHSKdL>8_<`00s>gl0<9T{ z*0{lA8^}0wV2GHan*!CO7d}0+ENQOD#5Myk2T(PPg+{jvpl!^v#0S>u+w9sAa3p}W zNp{caUbBO{s`F47kDRL_wy~S<#}<pnS9%bb*!&GLo?7@Aq0y+278cs~*3G<rD@Tu= z?UPS=c3ycqfKJ-;BRJ2#ElPh{_Qd;qL8c?hZrQ|6Z6CWm*ze4^J$Kk8OSk>2W}1y_ zmdss`4L_7jfakc5ksL}In0>=U{!5Eba%Igp1kQ!PJzZ5J;`$#MGP|~$L%EoQ3U8@~ zwk6asL<H?xCQMA<ebtFic!JcujB@$bm_uEtYe+HL;LYV{P9+>p9GLigTmA@V*5tST zC#YK)dg#`Vp-+FUU-!7s%Wt=j-JYSmPQF~J%7n{(Zykp<5`A|ZedmhUpoZBcPmt(2 z<fH$`J`)mmv+Dr#hg~nJ9T3crutRVt={dx&Wd$OmAovMWZ;W=7-GcI;QtoW*@`{%K zK>Nhz_4dmDcmu>e_};X}jo0i^Zfv6R@brWDQi0p5zTG#T<U-z}t!A{<nfzj=S+jMa z?W#`OJal#x?yOUtk2CbjS?HDch{4CM9nMFbp;x)Gw;s7e^;}abbu=L0RfFCTe#P?B zKpyFkxz@s4J7nJO!;Z5nmd-}mWVFl_t!#-_9z!b~Nli0#60w1%6*(CUyD|Ci!w@bq zw|~@9!y*~XA6lYE8Z&t>edb@ku&eC6rMRd$Nz}Xq`uGF-7)CmpUDWya|D=y$nm&fb zm_5UU(jhDU&)luu6u=brkB~V+Xeg3M@GoBKv@)zXqBz2AiAa$rky_PMK5abp$&tGj z$iJ65EIIX7Dslez8_Lm^GUZox&wO9Ew$e~fpD%CJhC1A@U+2Y6YFP2`@V0}>L50=` zJNI|(8gx@amQ>}cYTq~g?|q*ucWpB;YStoKD;$YPSC15_Bl|8_C+Q-)qvqYE+QyNY zBS#rCjDz^Z!6neYMP-wvIm5O*O2*+sXdx%z+1VNU#E4p-t#XV7l(`2b;SEY6(L;rB z<Vj-9?pe7r@ougejm=lu4>9OqJl7Fzs)e9X%y;=`<F-iU+n&R_@)=#7Jr@jL_a;O( zWd_|-EH4i>sNAdH8?il6=%eh0I$cOhvy-cs?EQ;AI>1Uf*oIK9l@B%i74{3eTJf$K zzl0$OzRoU4w!e^7*+t;HMsONGlrL?;@*L{Ib~U#6uzZ!6<+kM>8h7w1YfmkSnU6%v zFrIlIv`mIHNLGIHzj`nG@ro>#7?1Hw*;Re!-<gPTROy0K-3XP__GW6wX)fui%-J}# zsfF5SYDU`TCskDvY*Xxv7yN3(Q6;g(99cXV2CL$8HEqgEG{`i*%{*U7+3?nwiDk4k za=Y{fa<lZ!a*Onhw${lFaO6npn3<hj$dysb)ekl$Qd^hpN0^#xGV4_$^j5SXo_fbi zO^aJvzfDLl!8W`x%1zU^pc&icMk3}M0=;_(%iv22z{)!nECiOYR$~gw^31vBIN8-= z(h`{4%IC_;h}>Mx_($lZ+IuxWN06TL_Yqp^1^d8a$DiyiG1t(L1Jrrhgp<8Fbq&qG zNBK<e@$<XxE5~BOoay;p)820njdJxF{P@?pb<Z59u`7o>Norj8uf58Z_5AszH;P&L zc)oJw3m>LZx8Lv91Xse+{tk&cA=_OaGcu8!5VH%HEUr|M*}B>`e>OXFk!lhvboL$q zD^*@OykbTIp{h}Y6o#+?Q?kgYko2C$OuGBrt^5Y%X{s`d_CHMJkl<Z=lp(B}WeL33 zvt!3njfb~vJc}rk3{iflG7lutkhy!2qM}yB`B7P|%N6I_#=HpU^X0U|glIQ1=QOrh z1QJ9dy!}tXdy7eQZn^XPHwr#&)9OEk9}<!B?ms1OP|`!FN4|f^|Ia(hU%cCYiXR*{ zh5SvBzdPnKoy?wrBIjrF^gx39Uo1>6qhd=-nLV{A)H7FSm|cjvI1Vr9Z_m8u1%na5 z>-1RtpjlyE2z#XX^)8V?4^KSV+$Zq*0_w^VEZ%h6hHt^ar;aFNSYOK=*+hFC9zOqW zh-I!D+i-Tp27JYXl4y*JH5eDsq^sFm?IEq@xg1FdY-5Np1uR5e>U4Kf7m=~lX{Rw_ zq1|q&(;T5bYYNGg=7bfGj0{KOqa0H+O=?hw#0LyI{?igqS}F|+$3OaPQI>D1>ft&6 z`S@|CTX`4*PwiNze2?&R^Vzxb^U*-hMeim(%?vUI-aEIBIz$K4ldXpJ>NCGpuQkmR zPYhpoectezrCSUtQuX}2z8l-TIlk?}oMDZ?^D+1XhF;SX81t;P31M|}MN!$krSr%& zOt69>+bvZ~85YYY<0p$%j~`?no<3P*n<$xXeIt9L2K*YJ+1=X*TA@ibmmOBKOSZvj zv%~*zd78(IOn_HblS2vKviIgF<>KAxXPWzOEwLs4iG6?4pfK3i%)*b9Ps1Po%I{`I z9R2(Id3;lcif_;17g~~u11V{yj-v0hcI2`Pxz-_V!_Z8#vT70j3HVAZ7CPuV*TU?# zG8XrW%H>iso3xPgrT>hgQOi;M?q)-9>xtRCtDR5J<!EvZ_FPrkvTUl6&mI?qiIf{Q zd8ouiB^do^jJMVz9;K&YJf0?Xr5R;b1oWVn%UITyS?6EV^0e&o(rrIT9Wxfb_#kyi z|5^HT-m;8pXdu>gZeYYdLbII_3)t4XMBnF{ndMS`ThHY3kY;>SNi<KV5$tObXO22C zk%NvyS`eA|FP`;c#j091(rFcxxt2dFvqWW5MefB`Sc+Tnv4fT>`0n>9$Z#im$~&v4 zh+R+RYF93?+1i!W6j7_c>Wt%AT{gaorCwWOdu4J})|xk>nL{jhSy3@prPj}oz#$03 zk<>NIc3wDF;Wq8JSA8>VI@lA*B{|0^nH^=ZE~^D3$loW(`Wk$#LngL}_sRTC&o{|N zW3*hq1dRZf2IUOvt{aPyS2%m*VLcH01?)W$te#z_9*jZz^dU5abxc+6-PhxH6-rQV zU9IoCjC!O2C^=^x&niN8Vy%v5t<^Ct>tY*laA#2Bb0ulHl5+Bo%R&x4l{3_=wxy_9 z&awh{3%hJ!$m|#tQ$4$dP?UtGVA(lr1@%?VDR1=;XxKg7*zYxr`Z}UDzu=cGo<qJm z@Mz1X2@SK2IV8B%X)ujJbMJrPWLhp~Lh%(8T4{HCAe&X&RKhNS>nIupOoejfX% zI0?%YZ`%SQd*LDfgJ}mlk$Khu2`<<o{1*Bb`cX&mb_4-;W_L>4z(Hwi$XJh2vxk4U z^ZY!9^EN`-7*roiE-sJvT;St;t*?<CtcP77g~&p)vz8skMxKZ)ALkF};O~{SDaK|# z)WKp4qs+`-<h#tyDnZ<_E5^AzCZN0eI*$P{`R7Vzn7y4v=B|RHi+5h{Xzw!KQX3Hj z*sWGz8<BmY9T8w8lF3n6gfWIEgk&$1iR_nNgkky!k<$v(i3B@)$Nd^VpE7l=Paq9> zKxsbT`O~M~%WKS=xpITazY{iwP{nKVrzS-|omGAWcui>jOSge^)95AJ<du__%o)t4 zn+`0q9IjHLxMK*LG?r3n-q=o4A*HfdvAKes3O>kbb~QU`IZecuL6DM8(?vDJv<b>4 z8&y!*Lzz1Z17dbiiD1)y-wbjLAvxntP4q>H6=*GyiFA*MJ}KBo7^Ksy`(?Zm=<USq zh4LGzqj6yEzXtZ0Usd9cuEjH{?BY;jRI5p^3$zH>IDE~+XrGR4w(5vwP>;m!e+{qj zQ>E9+M^>g+pZ#rD4^}(|j--w+gl<;`m&wqDVAu{1yA?N2=zyn<HPw(HTCi73GuMlN z#_a1Uj0Hj@`^6}jbxh{sv(^I=wAet)_b{&a@uR=byo{CGPiq$J^LBRA<(YSR^tuBs zM%Pu-4y6Z4D?`^#Sax*Z`gZLLt;!sCZNu!H7?qZqrjzIutfNWg)m{lhujJ8I<nxHE z9KpI+j_hqsS67|?V*;d?)CFZ1m59}5`#AxOm7QwBIvBOItFSlP5(m`MUu3M*#H#2U z);I63X9oA*9NFKfd^3jDI5W8C?5Ywg;Se{X&G<`|TKcXUHRe<zE3l5Tas7L+U(?C< zR$Y6X8(yl=FMB)C(S2yf_*t8kYv2!S()<AWBM=#n-ew1lKWwiPS|@Cd>RN5g*;LLP z?5O4&gE0>Ai$O>P{UeiQmx?y~YtLe7%T5(-yAsqO&Ygv1#cxO`b7&q$AeIX0+3^P( z`8WiuxHV$^emCxz`OewR)o;hR0}I3F*IoMePwWnNb@p21GuJXbZmu%<)1mz3e`?%x z)>g_E=G`tuKi}_KqsHKw&^df#kr&kYV&>Kz-+A(f`e?kV6UBfmyQ7*y8>6|j(Z;pV zIlI+StYcswVzO(_fP&dKd8c4!qR8H1AqsQqggAeFq=>ckm~8V|rd|5IfkE5Gl`rpJ zKDNhP|2)*!L3x!d@r0%GwlS|b560$=ot=<jLC=IJb@*F#q(qa+<}hvU6P7bGQ-{2* z!73}Z6E%10ki}OZ23DYmy!BF`7&ypK*@fI@4=-`m?5Euf%(ZDiq|gfHu$QBm35X?; zxxxk|kwdZ9QE{%$qI9gcP|-mf!^4d`BNgke3;haq+q(QwWN?ksgH&ZL?mA`KxRgrG zeO8Pfd*&BSR|j=DmGLGuV{hn&t49~L>a1$)AD71rps%OR-UfZ8*hPq67{GY+C$-Eh zK(w8h{IqeHs|Rz1gxM>O_{9ey158vs?D^8R)?)IF39HaN(P7Bl$5Zn2y+I>qI_unq z8i%?tc|fmemLfxiDdgoQ{5p16oko^g?2l?ydL~kKd5)zv+Qo=);fpXI;+WHw$Iq{- z(=cd;d)A1`)y!<&!n&Aiipe#`e)q4I__AMR8gJZh^s`$|l1kIYc56q<Nu@Sjfx1N| zy0+O>%S2<RZeUj3YIQa>Q56VkV!!r<btIF2ipd|_FLM^l;L*7-t)jn$3Gz0ojuDqI zNXuTzV;U1#+9{?$*M+_*5xE+d(O}UgpW<F@_6W&j*HEn&Z$erwq*8W14O^6j!O5k` zw)jN7laoc0MbLxnjUZ?oR^o&c(?aH<d{-UOL&<DUBg<cOA^ztEY?@M8M=~iZsT8v; z6kbU5Q4;F^Z}A?+ix57IA8(`%Mm&gjN+2^f3gfXL8EWQsyLY@Wz`SfSRX1VUPSlx* z?IgRW1(P;bRK9{yK(KHbUb%PqxCf}N+*c(Cmel-ej(TE3r}l%t_L-x+ZcNW(N{n=t z9ES9mVJS4kxIZEG=R1QZ&yi|89XD#W(B=|DUAR1`ciVlFd|67BvK_ipc6%;%%apc~ zNwX%67&LwS5LLGiR;|#pFXhb_H4_q0#~vi$Pa0>Bz3jNu#%Hcz?*G9kgctnxQMmuV z3_|ha6^vAbU;Bi%dc&_(HM?ql4I?2SYb4~dp0+8YeX2wlKf6^W7(XrH04t$wZi$M_ z${~v`5%H3)LEz%2Q-0afS<l@Ampqx=cXJn=RL<x3$tx@+i+cNQpSVIPS(L>s`u=Oj zV}q*nT$Db&(~%*Sd(YW?@4&L8Ih#}WF2Sng7o|PFf_D3$-HB!=t=)(M^JKL<R|u%a zNjAaThO??uHf=NiM?7dBc_1Fl6?q^V86}32UR5c(craHuIAB|WZbr(C5!Fu*&j|;0 zE>204C%!Jw(tq=?wGWH<bZ&0hE8jWRevo}Mc=+^+fr_r*aO(I5ebffLeo*@;l=LwN zs;hru#nblPja-&8mt9cx%I4v0y=T^Ok(ozwQV{#_P#FB&eW`AS^cQn5Z#8KAmk6sU zWqT4g7YHw*D8?Q&PY>!oH&=wUdgPG9V^{(F=4wRm9>>xnS&bH*az$8U<}OgKYomr; z2A6K6y4lHYH?I1v30vpo>dEXW5Eka`0uHmIi?$b%Vr^ZxDy^UV*@=pipGA#;YbaFZ z#L&n{$wxjl)AEy4`q98~E@Ipk!B|*;7KnKTQ|A?S@sF(qL9jwWB2HjIVyC7EZS2+~ z#f;WIsB>{w6U9Nf;stYl7OGifV}$w*gq%fJy)Hi!%gMHVZbl=shAU_LKFjO%aQ?cz zZbp}t6UQF*4!*G<?qxpjXR9}!aVsIOnv-;fIv%WVsC{_E!cD*S|8;PuRh0{SHaRhF z*}92|<M<fx*4O%mwZ(5u`;!i4zpQvb*d#UUVdG8R4R1TKsS9T1+BRY_J-5pih|QLE zyFtW`m8_tS;=3eam=5~+$EiCXz@rHByy?2QxB3s$Bwnt3-k({~@>}%GapEzD<8g9Z z<z7POi-an5sbjp$j`$LsBw$x8CH>JO?_sEfCH1mvwVF1vH8fYN)zK}SgkVm!v7)c2 zuev@9Q)TyU3HS*uBopmJq?To-aLAO<>Su?Ip68->8)O{fEXhNA&V3azAz}ZHjvXeC ztlyYzw$!guq4$tgW7&@kkyFBNf$-b-zq{y={j<+R<dUwcuC_+oJhqu+dFKeYWswh< z#(aOW94qm$WOM!~<21^oWF0bAqV#{w`q>K16^iE?Cb^u8tyj&|Q_K2k#6=~D5&Zv= z_4B83?)0ItTfQ!|MFqvzIMl7VGQ>Ev3@!eUKg+Z}d&M#{PV=~Ze`em4exevf)|-&U z9<=sf^M1D0=IX#)eP)}}nu(K^_tVIK<o(peKQ-@1Z_%Yyl`=G@g7QYGSC!sV9#&+n z=mTnbZ@En~6q&`~i%4kMcBM9dftGn;_Z79v73UJ2nvb(JQ*8|Fr<tg;>0}rCXjo)O z#ZE&lzAw+vc{7}tZ&^#@T8rC67ShFgPU=vg!>dw_eR)cT=Zt>LIo@%8rQH&KbcR~r zLQ1Ql+5egwv{nEAD>qnyy>Q69pyw?ti4N>8Tvar`nLuNpPvw*v+*?-`dr69z^V;^3 z#F#u|u%TOx!m(cEl*6exK+Ro3IkJ|5q9UWjlr6z4!e7kTm|iR?ASL4O=T9&78Re{Z zj&jub?{pkIJ0QFit>HN1_kgehw`w%haebt--sgl;BWiVGjXGb;#I1Iyq?<ARHSOQ4 zXt4*&o+#;M{rlD}9`mJIg$s3sMJ}LxqCJt}vyVTC7XR8(-UvA0iQ5{fi&6QcJ1k_| zS*gy-=*ob<NMZ_&F?qz8gF;27%M=uoYpb!GS8PGScS*v%6TA}axXWh9&tILCGI==- zj}H+{;0KH&p_0da`i^kcxkTbO$$K<+95&Y{tdz1(8Pc8BxIv`~e!tX>kNsA);<eg^ z3$975TmNI3Vs-HA_qs)6o+xvA3eG0c1JY%zIrx)!VseiWU(@r+wWD8TKkUEO2lI;W z`e9AaU#y9!Y8R!3Q&H;d+21c7RJxpJ&ENqYx;ARvetcj;(CWd7o%_~r)_!~ddq3kh z*0x)NDI@5d^{h?bT5QTtL>3Op5?TYlFec_;ahkJJC&jrG&<)lUvtj$MTdLoYgygX> zjiv}^g-FQH?-0IjNz2$xZP?z7NAjqgnHMEJtj_$790?!WP^&N3w7@p_|B=x05`Cu^ zU&lo3k8Q-}Krc19g^7UOwvp`QR@OK7ihE%rp8a?G5PHHX(Z6P1E?|s!u)1JE!DX9R z^$Igy7f2|uWR08AZAsGL0~3NgscuE+s>uufaDV*RHFeh@s%wAQ=k{%n3(IEh8kRb< zTk);pCyT5<klk;IIb<jqZ1%E^A~+py1PI=?#U@*bV!ufg-%>G$$l}XP_<CXmXZMi& zAu%E4L+XdfZS22_Am+ItB7tW1_f|JCdjEr4Og8lq$N|NJOVz)s(I~QcS#dVL%}IL} z4Qk0!^_ea8{o6;n#GZFJS2X11n$^DrlyGu%o6vp6+59oItDY_UKfJvMcvRIEHaz>B zGc)O#)Cno1CnS_4gv`(hz4s=)ccphi@4YKUkRpPD5DvXb5k*lUs9-PH8wz5(B(w9q zYo9sEIf(b(|GVGwKgwh#WoDPP*Iw&g?^=tWy)Y2oeTLeAwRW-kFaP@Pp{DivJ^uEK z{F0001pNv3DffUzRz+5wxLbAIL}{j>0?9X!j>$zcF|t!hNYd@;?lejTOLsfTGj_V2 zb~2uwc4i9&M3O?pchDv!CHC4EPh4vHX38~}BYM)Jrz&rF<Nc9mnth!5>G-rt&#$dg zQZc&EyDRswtRn$IKOSDqf4{Kx&|_VXWE|@^Vjt@?|5EDtot-;e%6$3kcRwCFlP1kr z!|&~QgFUwQ-0z$CJvx0k*t>p+V^pwAQk}y4*Cr(Z5Pk2&9YxlIC7j}UAkL^Z?HOQZ zkr-#%RYWh1=QW_H&?ZQUAPG2%2=WTWPWn-V66ZIU0p}7}mq_vgmY#_3Idk1gLIcnH zY=E85&tx-v_<~w_Zob%uO|Q%s`LH4Ui@MAb<dbAQRPwv~t{eH(&G1DI^yK8`k~imo zz8ov`rJb_O%DKy4rK!hVRZyZT<NV?PQ_8esu50c-*E}dt>8{5izb5?w59?<hqAY=Y zyDiOut5t2$lGdQAqc9&H7Uiu$)KehpDOfIGmnrm9gctG+_lE4u$9LgW3NQ)4rU6V+ zbG7g0Iu6$~{7J={x%4NMv>&E84p%Avp{Dk9UO(V8fvQ2;(;+r=A$eongl7xQNEV$^ zQDQ+7o;aQO4f<szGW5kKC--+m^ItAr|1`!GbN<A}A1cKLM8DPDbJXeBv-;fx$FdJ* zT)7(Sax~pOYWL5H2$O7L)t~H?==pZe^9@5om(1C`_DWo2aN1pVXxOrtye%WPpZ)$- z>BVbv$F#4%pm9u-lM9EgiXHjd@NM0Gc;$%~`>medG^g{Z$69nA$tw8|+0&@yz)IDu zqkA@UFKcCySgN&~+!DEL{<sS&($X4p=zxYH*?}@AA}Fg;JK;j(rW&53Gb~Z3y(#WT z<djI_QB&5tbyY-Ca%4neQl$4QVL3BPf3!tnXX8<mD&I0&6a5_QWsWZTweX@AiN0Jb zhc;G*X^>Nko*|@U@pmAWqz3yFtn_bad}_QbvK4BXVn~HKf8SKn4dMzB<WsNuqTO=> zCbd=sfdQ(a8d7B}cFIK#bw)}=PXi+`6!kBo3m1%B926Lr^vc3Tb3=0NHvb`A#y%e# zZMTo=F@8-{$$@~i-!8k#M!yjfwC?NWH~6Z-J!Q)#zS9x;0iXKuCJ&z6g4sQ6{d0>Z z_FwVb>jzf4vs-skSIq4&Xfj(|Q0vLx<`=VVuRnQzE`M<Al5}$gFWLDC&*#6dKo-G= z>>LZk$-5>Uk!xU0D}wbjURzOtanb2eG6a)YPsaq2O}zHYqU>RVL!v^vU`g{s0>Wd% ztDv}6oABP@kB1k8`}BDTWue@6gSv%eq`P5=ic<hM9V<w#Z?YyL@N6jR<4zV)xr352 zamA=9!H(l=UO-Z|y?x`6OCsHoho+4g6Y2`~<5yd)uavl*7bgUDlP=V)Gf$e>XT%Jp zX_ZP1o3lP$htJtOgTLClM@EnQBes1lyCSb+7BV&Jpt5foTUYTDi=C}wHA+8$j$Oi5 z$ZMs0VBDpZWfWTxiM5H#3<?RMMnldT<{(s|+|5<PQv=zTYz52CLv^`HkX9e8tizIs z9L9XhLTz;ga-++u06ieDM&BC{tto>j*+;};z(Gy52+utgqMYhTg(%lbP9@o{m1Vqt z)yhdi;*%YP)r$&KO{xupHH%?r3KL?A+%1w*^nfAUfpit!a89Q^naHcqRAi;O(v#%_ zPmutA%x4GzbWFO#ay^Fw)_=Qf1B>}&d>~2cRle~$yX|((`Fh?WN5qav5&q~~Q`@Qp z2Q}~c`lTL=gOk2IZoRym7w^2y8}h$M8lOeo^U#eYqc;9Ne>rCjpMuQ(!3THcJLLM( z%yCPaSKrbosevOUWn_=eQcY=4rz3(}UThsEXIP(xW~fk>fh(Da0+=suC^^aVflaDp z9R`ROU9{zIrLV9r{<uYRv^^0{E$s=kR&drs=zuY03GZi6Uv9xM^_nd<uqmJE(|cU7 zV^iP$<D2`ocGVs3^7U(3qu!{R%Des7tnJr-<(dlB8#JF<J1@W0bQ(#8(o*?T<vvCd zY-y)jwMYW0cMv}2y{Uv%3jrZz`lyU+GH?yCIn^3OG!vRO!cjsl!@%@MxW6UaXyYSV zxLWYeHg>2*-qDhql;D%<;?>zT7rRy*K&+&R=v(lH^(44z?X{ILadL#{`axQw%JY6; zP$0`jNGN657=D0c#DF3-QluD)eV`m$&Gh#kaQI->L}`KNuAOb|7vjjR+N#eyrz`Tg z(Zi<&I~F$QU$CpvrYdY~&yJm{RT|V|<oqcEhEK`=3*($Bt&~2&IMXbnv~db}KtEL? zB!+RSmI{Ov7KmJUO0g{;o$6;1mN?E@n&G=)X<{Y_lf@gp8=DrdEvh&K;)*Vtfk>i& z0@IQ^>8K>LzKsVg3U>7F+H;mOFJkw|G1DF4yV^GM58C(5a^F1P(LMVubOa5V&{An6 zcWKe8SI@Qsrq1X$sX>Jy4F}AeIjr-5zU|v~7hL`?lt0m_rWEp>U_m*9LgBp}4`%U5 zoss*HX(ofDA&Ufmr<~3%Hu<`~wUqIH2|VKufxgy8-gIAs=FvSQ6ObXyM;&ezxFv}k zSxRF6NkJL-EozWMaQsj{L0c9mYQbYAGzt-Ix)tGHu_~hj*p#umzf7OtI-Q%c;?Kcr z;)m4$HM+KER?`**E3c~3)5Wj8@matAo@3Sz$+}&KOMV@!KtHg??IK@C8@SMt`sV7$ zH&C!Jkn7zpOD=$~{ym0%_-#@WtNF#Q63K@tMQ=0dK?l6&S!p@TmLA}Yg;K`eVP9j| zE3E7=r=^`&M713S2~M%n<uccgmG0tg(QU$lGulQQjt;Jf1=5ED&W;crmUXl)T0elZ z0uq!@xe$qTkn)#^KG}giz#S$7(3PI<9#A1^URc1kRcy$Lpzv8WtF*PJ%<MeGmLs>y z?-$`amDcA0PN&;?2x#4Z%C{%s|M&U!xU}rZw`Yf41s*%A?2orDYFA?bw9<7+mHR<I z23q0}6Dyx2HbAvk6qEdW^%g_a0cZUYWm!TsH5nvHT^BBl42?OzVBV6*kO~)0`V8$d zc4swN_8Zo5{Eljp_4374BetD;Y0dC0mpt!w>brv}HR3w=eU{fjo+b440qGv9z^AeG z5ug;Z^(+h3bW5qHgYp+vCY@ce%#k+X>jqdiKFls9N>5?$9NIjDSBrUM=iqN{0-a13 zf3v~zCHRl@w<DxY%+6kwP}5rf8-YUVf3pjJGaGt`-v0&q8!1ty8p3ud!LkjX>;0TW zn4yW{Z{Uyo%I8aGl(x8SQo#lm>zRz7C+jCspm>B;AbTXPTsjfcEv$gV>=2596E(qz zYz2z%su2~)?!tm2BxobMlfv_0$s`Da3WB8tKQxd7%)Az><EIUD1kM;Z`)r~+`8{6r zOmx`Vr|aj3E;C{uCx#Zxh#U9w@ScO8Te0WTwH*^bo{{r-U)HDWOh~23#<mCGqz2<u zJ*nCRCP{8%C~huN8@j(%E<L(J(J@msL@*%%-WiQ4yob>lRsFSJLVgluC6y;B839eQ zmkd`R0vi|xv;%UH0JG9PDE^^tfUT`3rIzPeey*|7QMzyU^zJ0pvU{%dlJ*uSN_D2Q z=XrO^6WZkR^kn<wwZKZy%}U-X=R<omRs9UvRAup96eGh;Z3W{uOZD?53lZl|0Mtz2 zztGU+gxD3*nAth$l=({eA9luMc8Y(M$)eeoWYnChp2>@N^E9@cjZEbm*{BR;#!pRV zi#RL=+2SfaZf$S9Wr>CiW$Or(DTPkgL&joJWE>dyU}{EXLCVf>6vh>)6%#9yU{!P! zR>EpolhO&~Xdr2cN&?{^Y!tObY)(C0fu*H0h!`cRN!cf+Eo!oRgxy{#@e~VqddQIm zE1Ddt;p-ckP=oLGED!1_4{<%)hw>IG$$!|=N}d_H?|oLgMp{Jpm_6*xb?^1~<s!@4 z(YoV7_R)~B<3^vy>^Dk*mlrCn+BT;wh9B4~Bf1rz8_Mc3<(<i7E%n41ZvmML0MDm~ zm*+#cqU4o1u>v@BLgvaa5GHb&1glYd2K&wkcOW)oVEEuD$=-|xGM{9m<%zTgw%o-A zT_}o;<=+<Z-L+lCKGRv(gG`ExJ-p9a$ge1$sYh;eWIXY;p2ioR-h7z~e_Pz(MSh0+ zJIm5tRA{4<q3@FzWmy#`e=CLC)L`+&hz+Vq5kjca#Fs+29wuM`iBsAY7KE^sApO(j ztJ$S)S2f99UnY|z4JC_Qmy)hNIqm5Xd+HMv?Ewv+Ya9^q>zeM{vn%E<Z8ZCqGqCZF z7XCgN{Stf}6MN286O^HsZ|<6y)%94*%m$O6n%8XMsjSLbl{2<YYFw~vcGDVtceTrW zY=I;l+5_oymi}ZLh4^C)FbG;&xSH9jHHlWHqp(&HJvR34P%PA5tgiNw@FGcnVOka4 zDN^Mmx^2`TA1bU-7z8p}P=g@2Jw1b<3zp%bFxDKkj0&P<gdZ9e8&xH$Zd9A7-cgT7 z6-4>;QRB7uY9hWAHo<!}Y0w1kwX6x=t0x|erB+C#WS0XtYIW_e5Higx|1QN5Ya3oh z5X9u=TtWw9BdB(RMs=h3db+k#;*pM4qKG`;JR#Oder{MIehDxy9<@JG#?L;TEKAMr zFWj^@GMd?6V}TBTtIy;i>u$!?sQCMy`A<phzL>Ree^@|Ju*XLZbl3xSE<U-t!uFD& zai6>DbN=Gb(Gd%jR_lLkC|$A#`2?>CpFbsN%*+=S?L5`9Vcq_to|<XjaOmj;3%9PH z)3Ixp!2GUVmT#X|Wkroq-B{o4OGhu0|N7{agqF?5&B5uL3!Y?GTP4^8Rlu@~(Aa92 za)x(rh0U#V?Q}R?4XPll>>%V%Y9&-)SsQDNU<nQBQe-lj_-HH=P_ckau$ENb$Qdfs z6eJuPN_Gplj6gCJIdaR(*9TdntMdEDW*qAnk-`Gbk3XChx!x1`<G6RCKbiA^bG2X0 z(Sqf-#yFkNPv7}{Woyja{GCDTN-g}Ad0)-`g!%XG$SS`!uln?9-LiWw9b3KR8~5-j zd-$z_nQK|hkEDgWS^iMc(L02q4l$M{!k)AkBmkj~KuW@YKj!0ysyrgZT=s(s<#)Vr zixSIS%Ct0D6B39I;`|9EF1vh{R~3ku29nJ;UepI`u<rV$><Q4H(Mao-j+K8?F2RpW zf%fU7UCQE+=_gKiERFhv#NK#cWL6RP1x|3qA~ily6#a;&EhiICToDoB5Mn@D+OD8b zhYK~>5I<*dk}URAS6&V6#&ApH$MqYZzhI89J&V8d+VEcE8!lMRq>fv!^F_W)s#{ZP z*kRCN{zImm<vZMSu~py0ETXc~&b^;qonBPGUfLi0R`vn*+N6)?GM}sCJg40?dv15h z(`xYVKMl@v9Uoh=G?Rtj#x0@oYe48CehpaGCVtJMSk}TG(On;14gKG-YP7wBQI9nd zEbB+GYC5_m{zq1geTQe-KhtV(7KyWb0&|Q-|AEzNQkANt9+RlDrUfRWxLHi0Vf{FY zpXl)qHLC(NUobtyO2WpBH9;q^Jn8JJ;Tj(sNN%j44&sa&WP}V;Lyam32I@4qh4#ad zMcT8APAwr22xuYdjH4O}Ri_<XrEuFP<>cl7FXg#8e+u!RWLMIb;@f7vvz0w4_41s% zYRqT0%Jur|CF9McXRHu{3f2j*6~cf`uU4&sfq}~tc(isDMDR|x6-<T1^vg%Al^z9C z!+nU~jYy~J2&PB~{Nkg*j(7*$JfJcFJ`6c{g)sS0=*Cdb3-JXC0SZ6_E2P!3BKv~K zB_f%cP%7oqjrL7&$B<N=SGdr=B;S=UFKFm0E|M2iEt#Rz$}29RBx^;<V^jE2HpTN; z32clOFf?i+9xp>Pm+!BB%5{O(n5MHpA;PcXuj)fd{0mP5EPcxOnPi=a)1d#cSPK1x zE;iybbn{oW`@pLJz+yL7diA0!nlxaBh!9b#)1*DU+^5~$_DMO-Jtx?kjinF|NHRQt z-DjSkJs)CRVHnp?>|3B^u*!mH&9zCHD$ok&0{#SY+zIT0ZAY5`L(YK8(k8%{FqF6< zo)3!S!e9pl77=MtA~zKrQ+Nk(g@IkLP&U+uZ<;K<>r-;S;Iz-VNp88q<2A>6dbp&k z?wWPbVG#LAP%>~`;1RS?tzM4+fOy&BiE#;Q|DVT&@~2`H7>f_-Qn#JhUfLKMUH5r= ziEF_pKA%r_$z9vj?o{%l#5>mRE?uI1>&aVNJ7RspQS-|dK_xp4s$G|7arX5Wx}Fy! zG$k+Sn$HM#szDYibD)NaFBqDLlH<A+JaC3lB8l4Ck^fck@Z78hVL6pYtd9*wLbdBb z4QcOB$fcHFJQGnp<e7Etyt&o;tzBu{^}t{`2@A0za$sdcR)|U7O!t%6aa}J9!%<sV zQN;zkIYan?VhjeO0;9IW^(71ftY$CE1v<waD)cdO(JQ4ky}D@aYP-*@iihXbY#m;& z`p^w=^L)a8fAZIi$*wa>?a#+7U`Gyi_aqjcmLjT$ZdobaZN}<c-|2Y_XGXI0F8$Fy z3<!x6-q-;(HZ7f`5ZY1KE+%O;A(Q%f6uY5QsmPEtOb3fks3qd@YE~Gub3b}mjfbO$ z!p?^w7sFUQ7&o>_^_W%yHA;+$(&Q7{?Fg}eHWq4eJDp{|u{9DZ85cPg491l0iISUt zv^({gT@J|3Vy(XF@C$fxCGS5WUH0+Rog}9fFWs=<-kdc>{AQILe<oiFXVM>UwrIg( zaDckXEDSY1T%N%ZQn0miu%z(ooPXW0;Y*)rcF7O+8iJ|lMnq(X8r`rFO%?ezRf_1b zj#odML_wT)T@UHhII)6p@FC(zE--Eq+q&XQVO?1FbsN;hQW-E43i28gBf_;miPrw4 z5*<im?c2hd!pez6^p#kSy0z|%gtd-5vUE{<hDwvU7@40CIG2c^K;mq|geSa9n!e>) zNV}5N2T#WZm)w&BgZx6CEhyR;we|MO*F)NK&z4PBoS_Y#`IIk|4{n_D*4hdVCUscf zf6AL{V?wN*Hvd^q`XDkObc53F($3u%9$e@gnBSq(lD$k?SY@^J>gH$9oPK61OTIJL z)BL%&W_`J^f8Ak)eP(^JXsFcY>$5{!j-gymOGD_Z50M)aXvtOm4H{LPJl$R|6HA;V z12q!22HeZC6c@SSJ2Cs`<<}3cSAE2~$aj_3pFXIiv}~MRjQS&zWe#$h+u>XgN-@%K zF7#Y?lVZ|8Q$>vi>|Fs6lqj+$3{*8WC`7=G*cn6Gcp;o%6WJH6X30%ieOU42B=}j0 zFgdVgD6ErC#TB&VBWdQ|pNGdqD0L#kgPgaIJou!-O%{ET$A?8kC%wUccxKhVPG=N9 z2#N@=_)Yj07PEgw!K6|9FKns0`|UH6XKlU8Prl&V$dZq@7(00TQ6NLU&}dOu*LcfB zm5GY!nkE)5y}qsjJ=Y~yqygwJgk?eMt)e-19CI_uEUqflL`PIA;-Ty+r1_JP<<-o8 zPezg!@E;Du6wayI5K4OZ>ga>V>?h#&%&*-9yEk%GcoYj)<l@5zNn3AOq4aid*l<`1 z$whwB#_1bqFE_%cuWYlzs>rtVRV(LIr*n!bh<@G^Dog<Vk}2EEAT2F1D9aSkM3$n_ zWW;uwI5yZn(n;PLIXG}QVhBHaw@?S4jI}b_Y2_M{6R1|k;%m9nR>!-Nwl9d3Sa52} zX~aLiK;?#y`GxGnfQM>kTtADN8MDXOmu+VUp9}8Zt#^+P&hn2oi`p4S`1j|VH8a%C zaKp~Nt{i}#&%hc4i<}TboMIoPrSwRN3N{O^6#|ilqeM2MQHHSwspXy{uB_^Yc}v26 zE>|uVtc@0)g-lPnGHU3!Xm|9iClYPG&9;6p*Qi5|van3#r%D~y_us?+tP!uY+hBiu zHe0bQq+{0t{`IFb4H|<vKaHtbd-$O~_b-emO@WF8wmP<8oZfD#Gln1+O`=7?T79QY zhO-_if*~f#TA-M#5n99TW2pA%y_RWfA62p-ZNic`SK_{<vn%npKKNVdf+D|FPqD%m z{5&~d^54uQ3@~!At(9+-=U|(SRHH;)HErZ3yvgJd>F}VqMar!FxLCoLiZk&URlA>n zpTJx&+_abtCL-y+4qd56CN>!$$~P63PH5TL{b)*dbe|zn%AQrL0{CDa{|I{a;(##} z^Wi6u@l_92M<8TSj8>dAU5z}-hQrWIx`EYuO;~H;SyhIui+e+<T|7+~X`5Cl>*=JY z1Et)jbO54}Vi}{xX?e-$(4cE=(+BDcr#dt=)!+x2)<><N{T!=iU^>z%FsW{k55zGC zgh16~tt9BA44}lr0Es1%IU>~=@=QOw>}${D?_Zd>yG1w}*DJV6!*<WOu_5Z|%uRpR z^HkEVNjCW8`1*A-{@|~SyFR@$3(9ZbdD(MJT2y6C@eS{l2<Tn;MY?ajgXm2iQ7Ybw z7%JU83}2}hGk9-;Bu7tRr`xmgeS_`s_AGk?yV3_)%Eay_VYa8ExI8LW-)D{1-D=2~ zwUY9{k6peL^fUI2RZ>2Z1Fa&iM4zGtD}XD-`yLOL;=$~e`*^EGkyqkFBq?~v_T+T8 zoBj5si<Q(m#N1ZD_X7V_;?EGR@^T#{n`JCwQ;dZwx8%CkYmf`X=n!EDmht|78!jcr z81EBsQAHM_5MM$ly<uy)ZsfiRQ|AWc`48#aZ&9T6t?>(&KhbZ%z`ppTIBR{j&ibMj zK{d0y@HU!x1cjBBhC8Xe5T<oXIUXfh?kZ=c&bDy8M-=cwgiO?6UyL`h2)Ui6+zgQI z46z(A{mR}SgB4zgcFWs}1IIUN*3r*zO!G$F8wRz`Ywf4V_MD_fU93af3>?v{>EMB} z&6`$pMkc2}f!q27pM<{9VaP-Pvl@l?LHxv}WQb`KKR2X^sN{7+7)l&~K211Qq{ssy zB*XnqrvisPrE+#-zxw%28u|u3*+i<-yH5rJ+UYr!yEGg*ItQBQlGP@+v7SfF9m*5+ zVa3*x=Lz>8ULpWw!|Z5t!pbiJxB*xY@6HezN8>>eJqLBn+Jud2mRYY>-SiR3?%<KF zG8(w+rPpZbu%7QWC_O7}M!Uh4s-!ooL+7~|{Ol=$HDE^$zE)YEWLd_oC1K$uEIj;W z3lI!gFF-KLc?9Gdi&z$Y&jt?~m1F4;R3HZ*Bg<v!Z~)Wggzo%E>*}5OXU(mp{B6dn z;sKwW$`7+zrQ5K}5tbUNEHbg_4Jel$IlLkib`%ZjWqc@nUr0eVNde3o{1RnV;|?Ta zTU>vj(1|j~w#X_zy|Qzg`}p+C&TCqbP~9&jHX+w9?ZezAt+H|&H4R9~PD!nvh%@22 zuKdooh&mS0<#jB?r#@7?f^Tte(27?;!!}p`EFCS@E8-C>3y|zVt+>_Xd!1QPTIy+Q zwUxeyUA9~HlpyyU?@>v4qqMoLK61dSLrY_kEtr><@5{=A{<OT}h#H9jSXMV~3!(rB z+LfJGa*XQf6SAvO@UjB`@XP+n8-x7a**!v)EL-PhOCnv^<C43|*QGY=&p>_b;JIo@ zLj^%|Vfqe=?K>W9i??OjKo$|pKm$;)n~K;?%G$v{UZv&zuHcTm)=~MI`SL#*H7@q} z@?Si&O8aW3{$bt(3buInDJ{(tXgKxnmmPY>TBD;ym@NZi{Lkza;^V)Qzt(NbAfB_# znt@w7(l!l$OGrD;QlM9SG|7cVhUjJ?+=R*>4^jM)%Y`&h5j-b}g+?_Dww!zl=WJT1 zu66Di29Ns5<rEOxv|p_HWFqw^(8FFn3G^_oXPo#hh)Qk%B4dSrrS~5x1A}y{sSG@W ze`N?5V0?n4rK~8qdq1xj-6W_yR3T7ol%G+~;F*kDs-9{W)qW5iG2h7#zq=9bQthG= z4+$4xi!9wP$LF)&#gV;~R{ZV2s-iZnODS&I5uc$~z5|aA+IgrNq(yh2k8ok(QLn~k z0!oGHA$;#(x)BSY?#$hukOyL{(uS#<s<eq=nJj;(Tj8`l!s3@NcrMzd27JWd>$Lr2 zkv!>0o=178P}@Hi%EKK2jt>fSQB@vuE?gNokhWDM#$ncG!x0jz83h12Q4m;GJSlZ$ zOFj##WgYflvsi0FKR{YkT8dq@<6I3=6@ed;ZiYU_quw#W#COtV$0#_cMx^1cuv<*G z7%mvYb?+?!NdPDQ1<GUWC2PKwp0s;LX32T>k~ff~`L#=Cc_hb(u3MX6Y<5e2S=}X? z@PB4<6ar^8Ag@4~z&iv|n1~9Yzm^o-M<Ldqy@HKZF2Wjg!RG|yZn6o+qh{8cFf$z) zGrq5Cm1)j|X&D0csy&bpLC85VJ;1F%$Fn><W71a7a(R-yq^@1sz#l^q9C@fu$t!HF zZ1EtY3?;Rms3OaGo+Gp`=sjoci!p^EqLPBliVB(yj7(){Ydj|5{-U)oIX`-!069H^ zm0Ka}cyNXI3RxB8J|^tnuSgBiegjk&158P8oLHnLiJxKo6uq}tVNxP$@3N#Kbs5<J z>9Q-um5Qi|Gt6d@yX^XFY*Y$g#2=)&)1LWrTvRHX%9La`+f-rDr%%1GmHE9;{8EL1 zpKW;I4u4Vk)wb-X^<VLid~e*aExohhE0*kg-jloN-D$Rx*0yPHFI|jh@=<@zvHKUX z0;914QHTfliW-I5jKv|>^^6I=5jdRwlQOTsq9NZFv+o-KYr|{XxGcg^0@9cqhKZ8X z6zUAimChBh?9}dgT{HNJUs}0ZZG5|DRCjmxq-$4Sbg}pRn9sZHJ`cRhKk?)J*$y8} zhjA`l;eQ3lACUB--@CFO$Wx}}G1VgKPif;9n2SD2k>I4C-3&m78T10#NygIYFiDXZ zg!2es#^AprM+-<2;+X_7QH!Vu><I)eHBC+n#Sd^DLVaNiDYHphRQOZ1l&(9+%>H~& zV?~-fBarvBv%z26<xWNG20k(4^bm=)?K$HWHpGWN*6uNu|3zV+f*X%7;l=#S;5ysx zG;QZ%`&pe?ptn`duRQUKWsmbk8{Qa+&Qbz<mj4h)dR5B=HAVELD@-Y`03zb>x_fAX zob*i+qO7A8M94Q(GDE<gTwpa;d_n0`NU0gDVKQ{Iw=z7uUSLqdI(CI(1)T6*U^SDy zDq2*aPQ|_THs;eWBo`LP5(E==|M>JCEAtJ^D?T)NSAv{X@`Zokk|m4oRcc^+Vb-qO zRh8N$N3(-h`Bo3ynwjzQr&sFNX>^Z;u9zA6rRVyHV^@#PWBr!D$L~Q^OO_x$NQo9` zV>bNOY8paSO|v$`w1|vwUG?qPgCA-&(fy~eT9%P3rP?c3qnU?lKLkEw=;8s;=V7=; z@P6&I=|R*A1%%fy#E^gn3!_!5tp%$tEg3Ps>MrT^;X7M|gsmJocuq)A%~h{W7;~!n zAlDQ{nw7}efv8Q(mwlSBD(2L*19#&q9zQq7-hKDm*2@D94x9KwR`i0tJ+JQQ_E<;H zb?H<Rlioi2Cttl(efyb`_XdqUvvcRgn$OV*DBuI+&yXYRhuh27z@0UD?<OQ&C|N*| zs7dIpvyw{z9+|2q%FovEfF$1HlbUK&d!<(K74%1ZPN`Ay+=fk9`CQ;FR$CnGy6T8S zWodm<vdX(Nh<Da8P@Urh8{dcysX-C+sbKXSu2${?sTHe<*azTFv#~%HveQmykFpXX zLm`A-%mBv{JP;AM05uH&0^tY1W>_c3drv((%ei3T%v0fs?{+%<Qmj&m-*|K3=?;<h zl>2*>kpo^03J8C3ejy9Zu!l5#a?leucSc*|My-*h4q43~@4dBYR5rhTGU^w8bJ@L> zndezxbYRXBPiEK7%XTo^o0-FIEcEjm`^gMi{T$@`e~(jH1(FzLsF5njqxxyoRgPN0 zHv>~IK&(E>STjqNqeUDZKCm$y6eLKVg&8KQjG7vqg!d2*GNum?f;13ikZDU4nFz~Q ztC~v3(W#ZnZxFn8_Q1XY;eVZY;z(~lSMc$TPhP7S9+1kC*7)q@J8}d4!Vb;cbtm3k zk^g#X(z%W-X~5F>lzAPOJlkeTuW?Jp4``IV+U@&Zt;!v`t)0f!9qhCWbDzMcDqvLu zDekFC6^SV?%yqgjP3KQ9(uBLf2!*OFMzFl3aDnwBa&Ev7)o6=1@esvqwXKJDNK`7f zD@y`34;m-Yt@zqJHya*GjKBZt<}m+}ZIT-e2n-&ay_<iR5dU(0R_uwfTMwmpwzYoi z%nR-6y2rO!m6n)P(5QWqBd7PZYhN{&s^(!H4ZxQ_g*}Y4bWt6KK4ZcF)Avv`|IuFv z6F`qq>bHw(k%T>ff*OYU8o1zThhX92h<PCldYa3uPnFDH>thW%>pF+-8IwkDx|<2U zyi4x!`|??xI~QM6nm27cX8OC&dxii7lr0Nz_A-!l7mD?+WEr9QYIUlS9ufnO+EJM1 zwN-?+*Hxd`2eQ?}{b-R3KxBv_&2K2!MwA7k#(Nl`CXk*KoFH^iXcf#*J>-HOZbW8_ zgys(oV;_l5bJdf!ygPfsGfixM)oSoNys7j>NVG57%^mwI8};}rIz`Jl_4n#p!@2ZV zSkm%IUoCl@-vtr$sLcAWACI1Muk)`K&iD4512uqI29^HB=3^a#9*KsE(}rmp9U&~d z43$w`067HHvTCcW_PH^79gpR>a$aw|TK3lOsEki3eHYzlPFnB58fv35-5Szv6rK5C zzC_Jf61;zrKZqqXlvE)Ja5}@lf6*|dbQ#V<dRj7snJrmfIp|7scc02&<u~mdvCQ*I zU1?a=xRKSRWb4neTEF<jVrI|v>pxA7EO9C|@2$2~_rq%R;H#8)+<;Y3*)PDLbuwYw zWa@h_3^k&c(}C0jreI~7Y-`_4ik||JF}e?E)@xEkDSkw3#ym6~6PXJYBU(~HA#10S zPz+K=_>aDz<$+TPn?8Tv7g5f_>%;6rKIb=+Vs_q`yCT$YaI1=|!UKj){^n#%^z>ny zM~)40GV6s!bFBlbZkRn|QOz62R$ZxEsrrcg$*C!whBZw|Y4YW+-Q)UYrfe9vMMWAk zvn($COL-cy;6!XD$WUX&bVN=2CG2;y`OtUE;D$d81;SQE;xo`d)HaA9K<?q1Fy!4N zgRryV#sWKP!a$a)HrS7vF!Mck)V#tob|pxWJpt{#Rbgt>kbW!npadZN`ahv#ilAdc zkrRmQ<D_I-b+ChU&(CyQ3+8~XUUchC4HUq-F|tAm)o^q%V7dxyS{W-cOpw_{XA?@3 z3=&+S(wY(Ln<#QX?DEUgrtV7}<~ouJ<mdIMXA8#cpOhF7xOmyKKcpz_M!h+!cDH9r z<_+lPIj4lY&#WaUhR>Mx?x9g9-@E@hcAz`r)}LTDDTo+F8R`z1W+ArYVfj<7ae8Fe zpzTTE9OcG<cOv3Wvp~N%Bdxlik!6Jrs#FM6TKV|4=D~Rp>sB2qwPe^Gjx3hYVo{WT zzx>3!&OrgLf$v{Vu*PiqSZUY)@DpoK@cSQR_HXxXduR1o^`<8#$Mmb?Zd{=zbG}}2 z7pE$%6!Y5xsR}`Tgm$WrR<jBz1(9C8Y6|J<3WwqvMuEZ&ZaDem{D|JwRx%gMf_o@L zE4D>M_sFfVpjYEMez;R#tF6PPcV;54S78ndd{(Mn{59wSBD5zAmec&3M7tuh8v94g z;&<Pebo!YCY~+VlPp{|RqL^NnE=zXukH62NGqM)3oqL!~II0C&4SXSSS?SkU*%^T= zWSoUrtI;fQCMdN6s1<?ZLZ^z*E%E#0?|F|!iqx_xjzey(K7(b+cOG*8<;QRqSd$jr z7>s&0pogoD^phJSqY6puV6R34-wHEC8wC!akIW=Uy8U1TJTMmB@(XjPrRN&f7n;8E zRDW3>J@_)S1xs>5eiUQ*YhRx<Wx1~{a5A#cn%8eIY6=^{>hxZ@V%4(U{Q3{m7Ef>2 zj(S^5mXSPBQ8B(a+%&^ghZg$<gO7Tm$7*+hpjGNaHLa+A-wK_p7v7>{YOn|(66AZD z%v>w2W+<6!Hexk9iGAUUjEoR1f{5x5PctozbgdMA;AUi4%LB8*hCkgVIONQ>Cxgef z7__F9{0#r*Ku6c|r~b9sD%GFbDX(o%xZjEGGg-C2+E#1u8UJqD%4hxMuH8mSZ1~j) z$M{<({dk^a@!P>7cRqfmuPn7f3;`X6`2dA#I3-wysR@RNs%grm-7ytL6o*9DT)N*S z7DHFT#xNivZ?umtDx;xqA=yTnXlY?pXP7LVJi`JPR0ye&U)d4fcF%8Ho4J}5z7^~j z-o@25)b4lWnUe@@e&_!lTXeo)@{FnL`LSOX+xbMc!vE^Q(UaLXJal;fZKwPdC+0U1 zOqH)Nzf4On)z5$znC=eK{K|?r(lwfl3pSYy4MPM;^-C5i&4D5*k<{!FbCOV!pA@ga zIh=5jk!D>sMe-WSb;L!9BFu+>j_|2ErsJB6X<6=^P;2m8vo8;D1m@&d3J9n-@6gc6 zs{`lU>ASGD)jDmmQj2foR|ctlfBT4q@GnPq;icEu6ECe_xo+ha{_6J=R?O%3hQ2&u zGaGP%B)LB{+7Rmpf(brY4bRS@J15*xm<36W(<Hf!QCTTYFe)o$8Drf*fz?3m2Y~vF z5vxjsjgi)_YSP*^BHq#TU~aj+=M!rHeGPdQygZj1RA7iV?4Kl?GNkjcYU%e*Eqp#S zAgHFRW}w}F)ui1;snx&wHa>3u_?a_ozV&)`_dFAS^?LnaYw*F|%cbkFHtzZGtF?1G zb!AN@eyVM=akI~#XF-9?^7>9yI`m{;{-Q00%{ujdAnVkx$<@`^b3!<MtS^Cs*iDT# za1g~d>(-L+R`nP9ol7UzY6#=NJ9U)5gpWd)3AP)E5aw*R3pW~1$WejY>ZEoAZkMtr zuUbq>rBQt{QA)}E_^#mWVO6Sx<Yh0e<D4ARo&{%)v7V7))4--%mhai=*(yzxx@B*W zrSK|IlDwliZ#ZocJ7524>}XpsH9A3hBf-rXqo!-fM|!yxAts?KCKLHvXKWCk$e`*~ zKhYwd3?2kdqKgP*H86J6)Bwt>DXc1tA)#Y+;Y}yuwL|--r6<||f0c<ld21y4p|(~R zD%yRYcz@NDRe|$<SiDwZ*3pBG`&d8z$Ty)RYRDvC68m-M)2r6Z2AkM-{G=Hdhbqd# zIhXn3TdQaB`!63!Tfw?-VQ&8N{Q2AXg>?}8-@j%){L7@uSx>1ivp(3{H%ouF4i`S? zICNaqd{8>5f&rp$XW2bRKN0$hY(b<D8CODy6}CHSUf}vOaM6IzKSaEwb&An$Ll;~- zm|J$LE^lz|a4TAEo<pNwJNW)PDd8J#&#@n2)+ql#=aHp@&-9w(`jxj8JwZHMd+~Rs zUKp+9+CM+oI)B0(SDGi0+Js<cdjGss%DNFuQw`ZPCI9JoImN;Z>`=9WXkR9P1~nv{ zzy*`b2Smn@eWRu(5sL?Mtbqj&_0>b$9N_Bzv9;cHUgQpv#@jusL;R&~d&fSy!5%-) ze{bUI)3E7+x1T_ZJy^zXA)|DKK%f&XQ`Bh9G6o}5?~HE3n@uvU-!H1gsipL1!J;-| zw}jpq02MmThID0c4$F6vg3n4a!X>gD7%xG0Xr7K&dLE!MpLMwPWyOm8!w>k_-#kaw zS88@^OQyZz;)@L{ZIzBso6b6(XTBBVUOFOI`s~=LkF3)@PhRA&@t>_O6cWw6Ag%T^ z@-#WWbJKY%&T%))`2);36fw@lDvOPyLxuounAg@6$b&AuCiLAT%4G|{MAK~1QCwBT zb3}UahQ@#i$+1y|L&^;jgUv_FFwC}W9SEY(XU_uU1v6Y@u>@aW2|jwCkC|FhFg5Ri zOKvosb+|wiKX*j>NxJNr{^^O6pGe0&t<Vy#iKpR(U7ImsNHdyoSm$EK5te>let;&; zrutQSWX0@b1D`OR({O>ZpqZ{A8bmfK(EBjMsU-J@lrp|jj>WH@mnVFC@Y6RFkzJ9X zUR1xGfm2w^hdT3krZxEf7GKFGT)e`hhMvY+pPue~x3wWg?2rDHzFxk+w=aO{;xI)@ z^!rrIK)*$d4tJqULlmhWXjh1#u@0_Z<pqe9@$|Z`x*R>~s8P^^4tzKCn}iH5Ey_%} zuYC>73Y~E-<UyB|GOq-CYg{tPU(~Y#G10hW4>N9H+?Q{^zV*ozq8`cGe0V#qBLDnj zKDI<|Rx)ui>u`}N72{rh39Gl|y(7nNV!Nw(9y`8c^C>#h$GmG7gi&`_Lp44Kh&EK; z#M^zvq{j4+vdK(FC`KcrfOrYg2sE7GEF&xf>VOD0=DI@Ba-F5(g(NBMCN_1~E#6bt z)wJ2x@7fNKii(@bYku%-Y2WS}7k`5F!Md)Wg;JaS*-H-=GHVmQny=$=z<ypp74ZA0 zuogil($GslEULc3rcs*?rXH;oJ8u#L-F;CVzFO?o@ld>65g9`MMXHZzmaT><-trpA zs6weo>J)?;r+PAtlDN0PRj}LBxs`OD_iM~n9G~o(TqsR#;TZ}phg9Ur7XQ8m*w$5g z!P8B8o_Vr7$vA^Kr9UcEL%uR>hcuBprkz2P43%AvkRe0uTs6a=N<bA9W@JUFwhTh> zjUJ2|l19jOA<9D;&4;)&$|Hop6Z)Xo)9X`bFY;mlQ;6t^;Gw}<NC{07@sbp!RqWNX zhxzZxuE;Il%zE$JieZK8md%O?-~QLi`9%XAZb#?i6W?Ucx^MjOoX^vrqy1omtw%3z zVG~abdH?X_!m6pKmdrRg`0-0K9^c#lENgV2=Chc0FX*23ILXvo(Ad?;bd1H#qHnWl zGs{?_T8|^uw~Szc?E!9=D_bkL9_0N{yu|&$^^1u4TiZT3f`fbrny>UUKD`k>J;Z`8 ze1;BKrcXDq3(Af$?kmF<0OURFZ!)*V0WjWI)<z}hH`aN5TGLxkSGLD3J)fWPG{(_^ zZlja9jlQwDP<<fz6=^l;<c_63S{p#(sk*G?;p(!crO;pK*Y6{%%Yp!r3#{JDO>ZDk zf2(+DeB+Ya)z=+M&51}#T{A0vC?A#2Ual&iFRtJ8Tu_eht{P7&DL}WImtIDFjXOYI z6XBcnRDHExLcq0QY~isIG)DmL_bfHiDKdemHAE2<vlqT3&K1BtLq;MQv{*4C(w#1J zZzO_9@T-%Pam`Z#0lC^pQj}!`k>F&bJ}7M2+%U8Y>=XOUpJOY;T;@0TMrF7&k3JY5 z9WkTN%Pb<@UHPPk4b6-h_|;RMDlr4T+z@%<Fa8vGPaAm2wq3k<{nuZwXZGzgueaIx z4*#>bn8km+`p!a+XU&g`6)XRYR=*A3X{FAb{+4E{{NLU$kGxWBMW8E`-6}#YvSxYW zR{3>qGgrOhSG||YB0h@s!)G%Ix602#CY!6)f09X);?o6G4PxRhLG;cLJ;sMa7P0jj z8yb#+J52ex*fsl`eV<%U#=V9cch8-vB#P4Ydf(q-{rFD0Z0k!0uoCT{dGCsq=%7m8 zl^{#qbV7usYm!6#g??O&71awtX0*|o$ik{2%O;G?`Bj>G-;IY~UBwT26zhvZw=F&$ z<KR2RID&!DLIp!}3CigIhoR^>cYhxW-C!c|uxvnLpG<@LbyhQ1-3Ot@fr%Z%;9v<1 zhaTyVr(_8XFjT=XA;=G}333v=S3fKyqxQhn`frT^T&90F2GYk!eI~NDWwyX?o{!kK zlgaY6R*XG`A{d^*!WNkB8SHuN#4{UCD>&J(U~CSIoBEJCar0<Z(TR2oxy7Sy$(Y1V zz%lw{bgd(<*0S5w;_Ef~P18b>vcY$Q0F=!F2VAS^fg2U3ZHQqWC9Z;Ui$*$%=Dc#a z*{Ja(VFsEthAe(Dm-cF4xNwd^I<$N3cGDd6VXObcNdIw^4-b$u%0S>f$8f)=A~vrW zJVuiTl>`JUi4ZKq&4TW06jLq$K|0D5gtf@R)_!CYHbkH`Kc6zN5?yX;aIGK?P3^9s z007%dLLux5xO{%mk9#WydDhvbu~F>e{)_x>U3XoU{oc%%z=sJ;Njh1w@$Iku*h`n+ zU&|`I(80B=#f@J+Jb&w7lfPWusr9u>{MP0_Kf>zI1o}bqqs*k~D$~#pcujgG3W3Dx zLSv$p2~9#iKb>V=U#LO8bdwZ-i4bKXZULM%7%_Bk9+|a7<~#HXa1g_kl}B(G73=(0 zMxn!R7=L9JWNQMe?Vos(`FeZ(CMKTYzq8N(-f=d3%I%eH+Ku-l<6I4@SIE-0iI%^Y zUgkyHAJy^~b~p8JTm|_I2A^|~w@xrcnF74>X)<3;i=qPwYIvX)jn6XbFjU{wo1h!Q z8zB6_?xt8K{49Xii86&X@ICOP<lZBB9PiM8U66Z?4+@{g_prhePeJ77F>Lp2zVEqv zBcxHDjnY&lc|p%<Eb<xagAVfef#{F;B!58K4n6afbXy4ax+*fl12wi2PFh9pOoZ*N zGfi~&L5)^OYZpdmsX@{73^fc0*-)eK0~oA^SQ&Z4CIlXqi{O<|AtVZy5fl#^h27;! zh(u`?#T(|<cqZ~)TN;1w%KVF+!)$WOj&D{?ek;xux}R@Y^myBLA2R9UV|-X4|24rH z+I-Ih<g+I!p>6g`eyLyZ?-zfwI5W7Ibw)YfjKyrw^y=GYy*p&W%uiYBALrwzU7Ny` zH=`zA8AI&E=6LuRF&ye3oPa(m(E^XBY}sIuGpl#J5qGnW`sur>R$yAhpSUKDa<ftO zaR{ynq}t$45msQz&q3`-jp!swg4)2M^!5`*zh~G>sfo?cvccz%M+7Z=TplzdDB`<g z{FhFw|MoYX;XAhTXIaj^i;<Q1aehImt*o2>*!&89+XgP(D*5uNGbRk1<(e|)rY|%W z^&J|A89tIjt<R{;7{`_wyjs%j!T=uOc}aDhk)|N6(S!GrO1JP!^0#;vi0D^$HAF<e z2<(v|J9Z8C7UHgdfUXcsDH`xTL4bxC0rIs!<tZ2!5&T*gd`?++L7n7$+NHR!dUcgt zN4n&@TqVbAR;j;4+WtJx>lEA1^)E2`rWTj*6|6qL#3rH!*fsvtNDix`RK>mi4KUqD z`knd^#lh8I2-(+Pl&ub_wtw(DL;lI{gfM8K3z{R+&;Om@DR14}%hhY0=VD8#1K)?L z>pQx;x@}{BHuwC@HZ+zTp1a~-6)Bkev){DZ4nKK5#x7SWy(8~Ov^Wj7e`<OqoJ7s< z6vnJR4{_s@iUvEycr~T^QL%%9!c_7*Q-$AYgf1OPq7W`je*@(lC?X+hkPt2Eo$L}g zt>$-%0EM3Z<Vpq9mm>Fzd~)5w8!_&fdrv=qEHY@$i2ef{&OZ+9dd=Z->|gTCTai`x z(WmU|SRFZaH1eYsKL6~JZgZ0377ShSyt-=AhQ$-V@o|$p=R=<FK=K~xY3ef-c7guF zw0-5Crk!?7^%Y+*4L1Z`c$)IDnx|dQm)vllavfA^vEo<dcS?vmnMU_N)%N%vpZ@<_ zZ4c4Oc-<vY+v64XXBW?HwxwlRZI9nPKVbVI;edJNpE0f=@_-F}l7y<#7eaS1#1&l* z1e%0_(x^-<ck((YA6fvmVPW#mXIzK5|MVJrr>FbGpXs(9aluy+g}!*V2(?o>OE_wx zZi=;uSf&1|C6GvmnlzfUsDMQDq3L&{7@Fyb>6$~eh|=P!Rr}&2z5t@~ZX69WSDGd* zYk11N&$AQ-|6X*RYSBghnl|wD61V(gNd!iu=|hqqe?+QupRnv)>%%b}8(rOtv6bC} zzFxMMFLeK-82TFinCt54nbr%Gvu@JjZf@_s1+x3JN~D>8!bm79Kz_Inx;~Oee)vCT z1<1Ls!=7oRs(<yWYJAQ(e9qhAa~{!eUH_c2LxL!z;RZlP6BM+555WAm$_J|ufayMR z5Ag|L-pHt&(%<Sv-IfHfrD|Gcsg-Kg#-0}<f(gJFk2P>BAYre}%hNy9bWDZUp~tm_ z{?)BX9WOI>9VU~}P|mC{yQmOE?K~Q4bth~_iiHwS2PQJm5(tM@2_2jkGN346ir}b3 zmZS}QVrQf)RBAS{Rgb(LJthxbQO_p(%GK@{KGCtGtJ8q-n>HhMmcHaPf7xfo=&>U< zS6RN`mC?!=zZs*Kx82fY^1`b_ly;5T?>r!18uj+f2JVOl{NwuE&0eo7ef3Ix_q7Kz zOTJ&SN@^_k>3WqfX7Q^xN*zm{X(&l=v2oa+hWxzHXoOO*N1zn?Y6;QPU;I0iLb&3< zGU??03%wi{A9f$^(a_~CfwUEuC<-pgrK}-7nR>e-un(`XxvB_HOFO6H%;}#bSOxkE zT^!ZmP;slF;G>}o5Uf>NXa%up<lBN%l!}GUmAI?Vp;i2PqJKywSEXQ|2<Ef#0LuRO zwUgxU+7ABVhi;9o*_4*dgAqZ$TFD-xh``@)3VjeJ%fci>y0S1D){n#~P#84@axBH* ztQ5zgDvh=-SesYz>C_GBych@J6j~QjGfwfJhw^`cQy2zycm($A!4JlPiA}@cV7ZTn z4>AEyAI2%j`uf`;)7RvG#wl#c<coNX)bwd=TMJhE;JK)%UykvGDu0@F9>D5uemBaw zel6-w4L<ec#?y+z2Yaq<nLB-xRkO9N9Wd&@qZHELQ3`#5O{5Xs-4~NAM=2uz8<ZkU zpcFI*fl|Q0M!{9w8TVMN!>6O7?y7vj8CQpatlp-ZGzE#2wzU1shNo~qcs1`VJex3n zNq7w#y)!Xl6wJH+rt_l@`oF{|9yQK?8so#mqg#b~cT!L41j{Hj=%3g{dQ=mZw^7@x zv34p8R)Elclq$z+C)`wMf+G5c_^uijNuCarE{Kns38<6sH1iJyVl?1F>bT-YLd}Hx zyPi8QOC8s~GX2?O&YF>HS05;;?s?ZPW%#k3O4QD!PhY-$dM>|rW$ex8SD#|ar>>f{ z4qU{Fw*aT;Q_PC0g-kb83yJowxG))XnGs-&{zC6<_mIql6R0hU*P9}?s1{|cB!bH@ zwcM`*9FwSZM+f%et(++k3c6Cts}zB1_$lkglD2)Z=&9G70e%VmwOjK~wU6Y_c85$M z!<)(xt&Y*k5gp+_riVyXZBPHP^yH4tUHCnIVA=gu+!qu&P!4B*wnP*j;@@2xidBe* zzP<^$3xc;g2<b%Rc#{jI<9q*X?Uk9mVHV1!MExt12Vj@QUgJ(R$E)cE0s27T10Z}% z(+L$2B*{0=xY{CB?)ir7v5rIi9lfs1;m-z-?aB&z@)I)-wj`U7UE=lGYax%fA9`i7 z%zHKOBujqEC`cP}0a}YL)ESm#s^aYhoTga^Vwk3#(+z?IU}_042-GoYsMwW755e@1 zk&s67$uO5!l&lHb(wH_E^?!`@G7!%O!79U1n4%dt!h^xinhJan<AkDVSP8f>xYZJ+ zb^Kg=Z)@woMHP?Cakmby<r=;|c8O?my_{!Gb$xiremTvR#u_Sjct_Ffx^2lHFP=s{ zpsma0V6Er%yQ@5{l{>CaP`eA6&N#KNh*LYnbZW&x)fYt9B&H)99ZcG<0Dw%CQFK*V zWPT7m!%!zi4T~mMudFGW;E{!DuA86&OT<GVb`d+e;vF<Z`(xMc(@bi={^jvIPf;(l z<uCkJUCOh2uK6+B)98n`>E(|v&R}70jl8jM_0dwxr!IG`7heHBfQX!}86-6lGCNcC z5jC9PS`<3H=k=diRQh>UEgEeKJz>D7GGq%v;13&N6$q`Nb_{7WLn0_yt|A;tcNcA} z$QbjoPUsFumUpn4ht5Yv{d|lsI>MzzHTF$Ru*dgXnYC0J*}WI5z4dLU^O>#E<QG@1 z*$+Qw<vZu{)T?NUZS(xGa{9#8IF+#D#axMLvhbgnCi)(lfQ3ghO)QeAhlxrDia+_N z#52Jpjm0hg1J5L^jAtV5Y{;(QnTYv*AuVp}Zd*R*A)aZ2>8cxEKG&%@yLD;4QX|hx zxc&60(%FRuq7L%$=x?WZD|2}nyQZ^inwgF}s9CXeZ0R9BQq=v4fB4u6ei+WFp_m-z zj>gl4sEr%_&^ZPB<nO0*BR|vOk&Wj+x#aUQpmWy9YT=J;KyS6Uu3p6)>+@Y+d%T0{ z<F&`Vn3hSwn#@pL!HR1}H@Qq^s6?aJLQ|wx!x+pxSmvkso_cw8_%_|tdzJ5EeQ|Qo zD+yTqn?Rb=5Q|DMU^-$DItDM;!1@cphSp!`o~js;?k=Eofq-d^CniY@Okg(Y+T%k7 zm&#eDwl@!^-q|;ETX4fyrp?|S<Qs^Ti~y_8yvJAHOgiX&y5?r$i`K#t-&=pKnlN+0 zro~;_DRPP2yyeuTpS>*qq&>TRQT_=tT!b!8^)XkPVa&rb)K82lDL~9n|H(hhFy?=n zVg0cwUu+-0F|^*P3DY+Q*aIfICi*M(X~P!37C#P8t@dd{=_&5#vG4peXWY0s>*sW8 zDed(1%WpJ(!Of%6n(}AR4TKkMv`K=6Hd?i4EHt{V(cP0QbzM@_&|ncn41MT8Xy28x zj#5=4RCd8x08%PwJ``RwlFbl^H(%a~Fx80(0@VktM^0gx@h(l{7g`t$-^=zZO<hd^ zoDMHDfXRl}tX~&f$47hq(hYg++pN+%wk^n$%d)IegR*m=qcp!m90FbbvT$Q(=`WJJ zAu%!ODtJ+a?($Hp7846a#vH(4oO?rHQS}WKECh6oG)^<gWTB}QV?@u)Fh^mg&<^fU zDrN4?)s(2TBxscybv6YisUmJX@=rCxtsblHQ<t^=`o=eYc|Nb6n)l7~$^Ptto!ik@ zOX|L795F22b@`1CCLgKMn6bcc{>B`NT}D@8us;6$;PS1d{MWs1*VIN$=H3L`^8J4e z8!&rU$JXOLu{gQR(hPR%K-}vYSgA;_twZ~6^5rwI9vQk&o4D|4_(>YARIoy<_X3EG zSSjd#15HKs2^M-2cfBDBK}q(8W3EO!Md>_;X77Y0ikk0wQmgmYCo>kSB!Y@HylZru zrPN^|C$#&2*`8lr?2eryG27Z``2gKUI41?j{8n$eN80?(0?8Qo^+Q*FgOP>3$VT}5 zTz-Qf&ks21QYpx5N(|P<-{L^j2{#?xaG;;*zLUTub+IW!rD)Aeuwa=&3l!BlP{YP( z6#=$VgT)WX0PtF|C?106>2`SzfA29@cm56krLOGTkVVz<<V#&v24t}kuFyZhFOsTD zKX&U!OuI8U!%rZ35CDGBDAggj97sw6*WeLo$v=-+zY-A>6}Ng>%Y}yru5s8faKTMO z@t!=C5)vbqZhY9p)#THk>Pk~<Fk4N}HFjZGR7bX)PojTHEvfhwc9Ct`Ks@#}uu4b< z!{93{Q^Pf10htN@-cgHz>g#MOzF|_U<uEaJpp4;8+adHa$!3H^3KzX7=?ueGGvsYx zjeu36MwRLmzeKwsin!=|qMbt86`ZH@?9)cfS!-bV_OKw{wY%#9`h$oKlB&xy*@F)H zK8d|5ESV=ZN@H)tW1qqinO&<!hz_n8Pg!KvbYGiNiXM4+3st3~IO2s4N~)1s@7+k0 z!i{VYNorXzql{I_p`{Vk3NBKk#P5>pi1I14rQ}JFMB*PBzGCJ-vPEnHqYWMMf!N-9 z-|#g}$W`pa&JS~TVi%>Uw6orA7F%80v)H@O0EDbNvClE^_@|=r3~5vx{W42ioEm+f zh3SAj`}^GVN&+ZYAY4H--U0NBJH@DbowS=K9}2Xwc<5a!Wt)rHFbZX2VzA4S#Y7Wi z8Q*p0)^42e%f(H+Pzmsy+I;q4bYoZJz`(SBouBHOs`BUSHdfA-oM9D%{MhmX$EBA& z_2kq0`3$zOW9_}3meL7+jn4qTZetSU8uL}2gC>bX4}wW*lGcMDN#nheSeoimnl@JV zEX3r?<{J}BJz&rT90g-&A7jkMC-xDLhbeB$=z>8w1d~jMHc1XkPe*w?yoTyzR@4J> z=DMZtlg_I#X|D9Zz|_Aw`S)`5Q9APjwJW*P<G;O_#qZ0#CwRu*k;8qZ7H1CJzTL6* zZkhRe{*rvrUX6e7?YH|*DC{nC@s9ohnDb0<*|%el6Tmy!q$2l+MvOU!Kk6*U<IafJ zH(a+bO!6yU2#`b<1wD0HwMxPav5K>d``DOMhvHw*)3HPuHjy{1x(7}BkEJp0zarBs zw`hE6B|%^{<b#?RthjtM24WBtm{xLjTHcfk{CKUVu7;_5Jl{>l4QnkZIm;>r`bl?4 z9L~IGkOm+A5ueQFeA0_~Q1Hn`Vu3Y6t$te#$VCz|_t&YBTIPNv4NcS1rqiE@HA>WP zT>UB$%cAGdi5H^Yi@ru;T}j`iCyGj@>0*u2&1)1X)(F{$2xccggdBO7ha}}8!O_=; zB<Bn1dN$;vKX2fbpr}R9_Vw%K>Mal97wcxY(^7Zx3<4*Wg+hXS(0!8K<v}Dy8#Y;W zDYEg;fBNEPZ`A%*YP*FPVT}U$Vx+;0v{XY~yRB+Q%~~W!06_AvMm02p)MUbmv!tgN z>nElVVquIPSFw^SS5R050E8hTqXuPEp|{6{U<@V)*Ff>U8jeDDQK1_}o!s&6EH|ok zX4P=hFC&VREm|6<B?C7U94Cq>i#jj})F7?RPAPpjXbCCEhNsAK^%PmJ?J3`mefcuK z;=>yCd9K#j*zkjEuO~a|?D}I_<4aDzu1z935AzRLH?}(HxhPMS%AZ^4Gw>rOo&CZs z71u^VP^H28eJ+-pGx)&NgH>xD>iqIkovlmj42!B>aY4&o!=%rSrx*Fw+%5g6l?^4! z;A_5E9&4)#iOWH!Hb-@8Q%#mZHLPbfZ9Pqfo(N>=>#5%+M3XTD5Y=?i2)Ljy9qXA= zE<&n*ia7SD;%(&Epe9ddQDG*QGBZ9iD-%nZQ7w~(kyBKdBbG8%tR!Jr6c7U^*R+m; zX@X@mtYTUU-_L*WVL|85h6OI0FlJ~_B)@$<>Sd>2mu8V&2m4_SqhI<xstRAa%s!Qk ze)S6%6YD4ET=92Xm(T1zFD-s<-<7+tcta~xk6+ll#|UZ8<j-t1?Xse;U3p!+2oW_L zq55fc@%)H?1cE{t<4l-Mx;oSEFV!h(VHbd`97VZg24Vu`Cp|<hGccA#3#l}+{~w~1 zfn%13U?3RDD7RsY5G^-D-BR{H)WqYme9jR7LfJ?BVs&|cNu!{EH;ym;<;A4%M;67i zcWKh%`cL5Md^e_3vu0QCFJVCk5fMQ?JUWH6gC$%6dTWFlqh-X$IJAohDdGPno<o?B z0S8kf1P!$Sc39NIq->l)!wSI&6U9<AHkPP_?L>ZjB7rFk1Z}M_@T5(zIRk@5M<H(! z?D>cIz3Ot6VE?e^`Q<|_Ft_AgKS@5Mv^%|hz#!@(<gI`0;`iU}(rwM&5|kEuuU4%+ zufY#G1}mi|c!fcTG%^D}!K7})1+8y&nYnE77gdX(bqw|u5KK49<KpBa@BpjI$@W)~ zLhC;>G{C3V;`*NB`8R6U>8{kDGl69dpIzL^dYBQ)S^(Rjs?r|bI7VS$<BL(~*MTYC zsoM;yB}h0b7=?))Ax7aOwUkV`smX4X{p{MA^~o7tFSAluLUQ}MF&yUm$y#l;N#}aE zm88(h4ry>!$plHMMYq<}(y_|tsBIbrzU6Q=Q{!7^(*A2ZZ=zTVFj!w7{V0fwN?dMq zQNaZ?Lfr8%X&lB%Tv|UuTtU<)-3@1%0<~J5Xw;km&W|6V7@o*PbmB)Y(T}i&)8#z# zk<0=Ub6DG-oO#Zfrv`#mnvla!urYyWw?(<4-sSI9OZJyvI)LXlS>>#hkg%CE1DW!E zyS6W*r*418j2XTKA1`j-_8kA5Kdpp6`$oXLc@F*(|KrVu4PU++IA^YdHDo?-4x?46 zTRK|)Q@IHAxEgBaC1qukLW8}duZozvzF*}|3DM7xT}#wG<k%W~U%HJG%2g?qUISyZ z3IPU~qnApHDi~N6=myjQKvfTD2%HD89)J-L%Z|i)NWCImk!z2I2Ly-a@}JLQuG`Mq zl)k;zb~?Z;m25%2!P{m=yP^v{>3ANveYVr3w4FFH=;Y=;{dyuvA$a!ez>kkCVe!MB zE&k5I0^d&P+<Ec-z@<yW_`PfKT{_|UEI6A${(iKrut!*2mR8hXOl{D)3#~u{%F&?5 z)?Vol_lYhLWih=dS|~Ere2dh8V9`|`IYWl19Z8AtPELywfOAz*kI_|x45Pw^MTHHs z(59oXX4YZ1VdZK%3hNf32gu>3hHo}>6t*iWY?oEosi?3M-8o`KMHnS5U4RLYH7d72 zmryyFm`jB&1mYlY+;lhkp%W{^j%Jw@l7LuRK@)WXzp?h7vo+8suwUAp7pClV0DPRY z4eL7~^`}GjwQnc%7Z4<H$1bkkid1V{`?c>T4hXRN%^$PX7To*ej_s#}$ZjQc!@%sm zQ~P9lerO&V;R=ZuZ9S+wwV+c6&#jM3mQJ0yVDsWm?WMe%_mMI3=_${xW-X^I|KcM1 z*7JSiu4`M}J}Xsg(QM*E>jzb&Q$sq1vI>LdRvT80{g~Zi92+u<NNJXl$o2Ww`hD51 zb<%dNlh`#pHZks+F1`Q5u4!BQ|9IE1MFf%QyGFJa?V30M1P<Z6&{+^q#Q_QX=Ur2- z%vkSl52%!Kd)I{ZAv&O%nf%#apCy;$GX<==<kk2LS7kh%I&8^n^gW*$BM#YV*V;`E zGw#~0R-vJ;5a$z0OJ#jQyEb>;y*qa-fv@e_{Po87*t53}|4In#ts{4Mexq><-&5~3 zZv6OMD+|Sj4engFVSnXz9>j(`-T+!g;On;AK%c8w7N`lDmPv3R6JOK4!a&ncmkC-I zu$=yrGWP+Plig2{qrtB<Y9B-yaiwFUs%F77q}qrEi=+@1T;-y|%5-iXJ~CQ)4q9uV zxB9Y&rK0IdBI)V>5{xft=OgX4@s~neVgC&-|F4=ghY2k#(0O>Bv_5Op7;SyTL=5Yr z%drWV7we<{#JoN+q{tpx9~i&}b@cyqt(d-6|0S$nGSgq$XXEFbt_uGR!q4j0thsO@ zEQ{rQr*aF3cr5ZC!{P|5#TscIfXRT>;Xzc27mzJ%S7WFPp0$B~0EwVNEl8g;qS_Xj z4ERWAt`zC2Gw=9gRw=4B>v#99TVZ*=#}0nN&$z;5pBB3&*W^1{E87Yt@94DvSL;Il z&Z{?(iTmcLcI*CFC}Ye$_)hsfSf9}tbF^M1NE@?&4fG8x8*`8b4geG~*qww1815GD zm~o4Wj13K6M(ql^KXcgySKW=rgTodx`B|;7)W+q9c}9fI=jjD*8m|4!HkHl1iDFVu zs{GgYXLVisyn>OAgx&VEwLY-SPO8PrQwuWqSLBsTL4-o8vi8MC`{Jv83DCX-YF|RN zFJa;f#_P1F17uBiJH<bOaMD?EahB)L5iF@Vi?eJ`P6>+|%3orZ8vkND4&*<N1n0H; z^Iu?l_cwZh&Eu{1H+bH{P($#8((Tq?!RHKpxO*u+1qT)xkao|}h}sp|jWBnNwbQg0 zAK!t$OR+jjsf$zuY(Nwb1X@akI}NFSR8U6iaezF1Q*sEaFY92GxH*ZX>v81{-8nRO z;FuuAB?oqBn=_*2(t%+%D;lsqQF;D==+KTsE9dl)s-UudwzVlgWgCgyfB;eF9#niQ z=^>2MY3JF|{i8F|te-DiGb0+-GjC{ZRvN7THqkj@T+(l+)1|-%C3TDHU%}ceZq8z4 zzWO|<&o8s*t%rc~JAu??p&v+dOJ_?z%WO+wgRH{VS%uxR3UjqR6xJ)$>0w`)8o4IE zAM;xeGIL<ZHE<kmYWOA^WwsW@7+X6IcQkw-&|P;brH;qLeGK1+&dqfku2udW3>P<= z2oS+wH$IpD;rqtl!E-IR^l$#wvo)-s$72I*Pgpy2iD%nG3wrbz<TKi@YnQmN(3y|* z9N_bWU)Qd2e2U?PCmX+2_LD}TbGntiSZVl42A=mCpuLy!Terb%NcX|gQ2rC1jp$6z z{P1je7d-Pk(4X<I@oZ!#e9s!wZHRaxeoZ_Rzb2kxznb$wtgZD`ivnhSkcb+@!6!`z z;z<01<SZ&@M4dgdsM|!MwsCr_241xjIA0hVSjcFsVo$~YZYy)AI<3rZO-~I=mr*gy z8D<Ah+`n+Z+|B-n2F_(i0$FY-KUcgekY5X7jpa8K)}c1PTryhW=>1%$Uue&kYorsQ zy;`rT<KPEbe`S}0b>us_!+&PKW_9R+9SYvu{FRcGj?FDzk-m~xt492tlCLCwq6w>N zK|g_B{CjJAdnj%&kmNC!oop~`!t54@VlVv;a}>UlK8eD>kF#^=uk!i#@*V40{MB9j zRhnhzw4dp3q^}<O8`6*BZ(vJM9??cyHxcKZXpHj`ByCCwGg%d7@GMXr1M6Cq0?SiM zDd3AD-%ztgDE>c0dvPKS(cVISVRm`6_x>yPD{*<Ti1y}`MSFp+r%<#Pbvd4UuH<A{ ztXC2}81}*n2ttGbxdmDTTPeq$^}{RHQqM3@BSq1EYCvO{7P(=j5Oo-Y1}Gm4eCS|X zGT6dEMk#FVPIvz{DzBIwd*l81l%s<x51+P?#qLawKYpA~naw5_jP74q8s^z-EtI~w z`1!<5iO*D@HvHW4uPL77%qJ5Gnfo2JAm7H_7KKU-W7Slxi*G75=+HLZL@E#-q<-6p zEzwzLdi(%MJfc&4p!h-+2@QBkAwU5GPzPv2%m!98t`)e@q%&xab}5VqM{satK|#lj z<8n)1b;xQndi;a~m4>;P<Vr1TU~G5W1N@dPTJU3~p3c1mL;G~fYPTe(>yz<on+|@= zbJF_ZMQ<15H2x)PJnE$@+a_|`*cnpo?G-mIxPv>BdS|?APr+%<Rb@XiHnf?W;z4Dh zK7@4)7$meLZY$cHuv}$j9`htq2aVu{dDdx+nrN_zgr*P|=&1D|?mKknFyt?oAWz+R zAe7S}3it%?`^zIe=O|&JaYL7uvVb?o==l$#^9R)*_4C#r^>%_a<t^(Z;D@S?qKb>? zB#c`Mwx%IeP9kV9xWq6JvjS;VvBTFv1-Ud4xJsm&EJMCN{X<;E+5E4a_T}G9sZinl z=Wj36I*EABNr$%Y<tsn6<=S3l9XGDqS;BEfuqLHUWZO|C8Gmnu6NJ)83y7iWQdSmb zz>RKL7F7z@4?YgKUwIugI{t>(zBX=LV{pyVadAPcw3s3i^;)g{{ipb-?_TiT@J3wP z&5t+t*An-5ub*yg{XDgD;;XBUz2kXLsa;xH`U2k}>anC*K7^*TOC79xEzp3aD&HaU z<<cx@w?*GqzNPOY&tsM~m^=bl590gsrP5FF{rY@|$cjp{+|#}<eS@#4VG0?%f!_~D z-;*#yg-n6p=>C%l;wlptS~1;oK-L^Z%nQI;jWVVis7w*$4<9P_2(u|W$5%q;Ipmi9 zApwH^G3AEm3|rrX&lp_OT~nQjib|6X=ehGnO9|G4o*Yl2bc3H|O*~mh0q(|f`CAff zIl<d0Ml^{=t~@+)eG^T3;~z#I@IQ=PF6J#+ZfpM4pd45Bp5D~nc~3QWwP9=pd=n&o zNg@1u=Jd9C4&cAB-!O9Ql#TL}gHX5FVnA9==U%L=z5%9@>j7`XfwhrSev?5$3!y0t z86RqZK%Gfpkh*}<(ArVUgFl>+_bZP<!sgU3q@tFd5GkRtbj4E(7mTNkbcA^-c``BD z|3lh)05)-KZNr*bNh^1`$a2BG0X7&gUYTl2=)DBfP4B&h-g_~<gc52XRLe^zBtQrO zoMsXTN$w5lJvSje!PfeFW>zcj67KiD-~Z=c%a&}RnKNfjea<<olHqgE`H8F5=*(BE zJ^3%I_5c66T2^33*Iw(7qNbH1DJi%?{_5fRj6ACr*_kC&S*lfbod5S(S~31dos)Vm z@C~o$ga27gS-J_;;q1OpoC0=-9%Q!e`1>HlcJ&jt`5rX#8~C4}l9qAw@js!gb0qIQ z#sq<m{;a52*W{PU1vZX`odvrBBve>BLueyb{O1>S_Bq;#+2{+>qvdScIabD{xaB(5 z{=_wEL^p8ye_11+7yiFmBh-p+jUUhz1vF4pYRFox9Bo5>b(MS6YB@&7*2>@FG^{on z_?vK!>o8%eAD60z5U5Y8GU?$%osuXXy2m7Q)HdpY#Gsu{rn1IL2J3`@8UCpl7-`L~ zz5TdmczwBV9*@xaAIjk;-;5rnA*^Q5I|_RV_4Ysa?!{2I;7hl%y=WUl8$RAG0-*)A z7oC1Um|vf(M-ohDErKo3E&QL_f^o_2Re#Kwnh^QzG5^i4C#2u~XyYKQgzz^yaMp~s zc76(-abx}Id(au)>Tk><{?4+G<NunQo|R)-v;=pun)!UMb!AB8q$1azsxiAEYoS>m zGBu~Ne*taFfbG_A14e@`w!m^3*}Awhu0oFPX{x=Xan)1!BnV?7mYMENbRgZu!kBF2 zpNqeUe*4@qLr9t;$IPPE=(oviG#F_ZuVOWOUfQzr(1w4{F$*E7StR`pK~{dxNDHEL z{EdaP7mr;OXbY*8`TMa!Yg$oDPSTBCQ%`sf1uU7c`>mw<qPhO`p4&di$O?|6&6+R# zZD*f8_Xs78MM+fN|NQ+<oz{IhGpqHz1qFSG@Fz(hetk+;<xRAm=$A>!>x*tS>_XBn zlgtjIPxVuN{!FRt2_IuPdW$uKO`CzKl+VhjaAY*Ya6eXE$(Y1&Ne$C!G(z(~(~baC zXK^Y<b>rA4W~%9;42<gfAwHmbW)+zk%CKJ5Qy<lN8ij|B)!D*mAk7jhAb1FxKYFQ+ zxPL}^25V*U?`Ox)o&7?oRcO|B`e||I`LuX)e0#5v$AYZwIu)*&GSS}}n)6A&d5UBm z+@mzVhCsvDkKEBQ&|J6acP|Yh^(V+SN&M_Y(bL6c>9hVdloU){_2$V|qm<VVB~dbc z)c!gPiQmaZDR+e{$^qCn?<xDtpQ0;Qx~Z`$uZ1FR_uPjZKMw?1x~accj-$O8<j)>- zEn?C#921a4Z~Q4#l|KeiZgBLpJIf?CsiF|FGQjT|xI92bt|sN?IG9{y;C)`ZNpqD^ zBH1pHTcXn7TVd%h(l3izNsY^2wah}tOX<-|OsaVMO__!%SIm1LS3+11LvLp#bn{}2 z!PlsXa_;VGPqg$VTccjd1Nwzn5H90mSUzo~`c;yB%Bv!Ei^?lU=?d9Z(z|)CtKwU; z84VihX|<-6m4t%kKZ1torcb>z-_CXC8ql28pr)Jt_R{<`r};0i3_il&J5dR0)=eNV z*p3D}hVwrQ1)71>1Y;v?A+phLdP#`k0}zJj9Ie&}gVL;E6%T-wgp=is6Axc*;c9vA zJcA%Dc<o4SSN7dkk{esx%KjH$vyrLFI{$j~1naO>-%qK;xZ5x8@@`*j#uv8$VzJr? z?jx&rl5>PcZ9eQ-d*Zu>5ixwV5!w3uwi_pasGk$7<t4R<>+zP)@auUV01M|yfgEYT z+!bkgse2BG1lW0XZNU1Kt~_bWL{?y%7xDVdDN{QQ{r<Z?&4&*r*~)uSbx>xjS|(=J zc{3E5aD8_&?!Z4$SZkpQ^r_+NwPfonQWyjfOJdP65EEW}x+wH|#F~>mc#AhDE4g-< zH7E1bZSvhcM0yK(Ycda<RBCDujP!KNbwr!8;H#Td97s*QqyG4U<W#k%MryX4ok|86 zk}crdR1T7d*wO)I<V39vhaRNF;UJiFfYZ;hI`x<kfItwk=Cim+k{22x(%%n!GbA>B z`Rq_B=|Mosc|z7NxHb;mV8bgiQp3YyKRoi=+tIf?bA&^YLg}eDl+yYUn@Pa)Zw4P) z`bD+eViLV&{JoWJ+l_x?QsIun+iUF;T2E^C(ih4bk3fZb=*E)|>7I;i%XAs(AjZO( zRXJ}iPX56>scIQ^Dv+qD`Ki=M3M(fCqNtCPLVXjY(36@jF?|VQKpCnLd<LLrq=-bj z9^X_NtC&Muj5{*aB1CNtwOU<P!8*A$iF{$&zNf<dD}FMEQQ>sarJbp}6f=EW2=)uz zJYn0P&HW=rT$$cscFL;EdKt;%67D{lbAN7r$k2ud@6c^=C+M1>wryt=eex3cvp~7X zJ;!KZ#EH@3<9@Wp5l=M#WD>zFKGhcezuSChZ57ERg3D;?Aqd4CNaCcK4KMwWz=8k= z)F43FL1iCzBHyAfv=c0ZoZ6=g1Z><#RZkKvLD@ZPs(iyeV<+}u@=7rb{`J{(+JPF% zoPEe@Q>1G5n*iy7-=)L9up`wMgrP2kPg7xmCSOQE^t!>sNy_fL#caHQZMPHB@4Zc4 z=lw*E(XgJhb<httVB=*a-6%SDmvCn?nEZmN*p-(MJ!M@r(@iK*M3l!a{8{-8UcZj` zDC;$nZi0+vuk*+#yd9+j@8;`(x8twt?rM<OhHxPVVQbzFS4;@Jp-!E7^>d-NqL`Jd z@23kjrAs|ANe*R+Ve#IEm=KBV;K=gX!m`<t@@KqzQSIgqjAq{$x2j?enkhp7HKErZ z34BKTv+D#qLy)p_Vl}DEgJWyg;x_D%_}aBY;%nEQ{Fk*0|8HyO8Q%;S1dX=#Y~Cs4 zR@~`@+4<phGci?uEbkzKdK~l(DW7`eMO2aQD57K7QE{L2TfI+;Q>tL6gdHJ@%}<H@ zq&TI|`Rjd^Z>@9qsbbI%J3UJs{(4)SHtX4vZbEYs_PV(V;@uRs{tuSUKyJk#6EIP( zrecq)RaHM2PS@wLhVbqvC|5ZX5|R+Y3zrOas8PNN_PTs0!=)rvSxPuwFHQ}eL|GS6 zB+wY-ASD?wuW)p~M{bu%CSkxeB_Z4qll;2!-QFWVj*4@b8%0J0J3l@B=%eU+4U7K1 zRHOV+up=V=E6c0zyf|b2u2SW~v7IFL_?)@Z#~#1Bv(~{!1Gkctb8ROLd+rQ)p$+Wp z>7Y;o_Dj7rjy_({1dk7%M)*7`Sy0DP2^de!p@|HYs0%c*xMPgYU4z*UAT=(rE{=@- ziVQ&Qoq7l%%-MpYEHd~gw&|kh^|-B<oc8S1Z%n`NZd6`W@xdcM#E1IXcP$%bqppgd zZ5H=ap0`%a@Bfi|@P97vf9J|`ecDZ$DG-U~@s9Ual!@fxlw;5%Jj|Q(MM_6+CF%`9 zZ>MuPM$J~oWWy|!gVm~3Y*2R>;r=~dcZ=h}0RnQG$XgII7RO%FGF-yX6%TDfN6~Zp z-M5qCm7kOiY%3-E4}O>A2+3CNH?o-p*HfN1f4y<$v;Vxf|IWD`!@7QMCa%g#<x8al ziwo0q69&m34w<p1t;tGz)J7CW`3QFyb$R$5Mp&9MXh!9t%DL>f=`5!C9^R?9`FjYf zy*7UbgU#QA9>=>ewFUNPOK<_}vC&=E3pCJcm>4W2E*Y5VX(FtB7EAr(!1a>LD6etU zFqe|J8wxdxK4+{EUSy82XA-)Uj~;kXniv;P(%<`FwzBt}QW+P2{Y9ZVU5V0{hOUXH zFaFCDOfQ>X+O-#ECts;$F;*IbJZpbBR;`EtPD5L%!ASO*oi_D`ve1J8bbz<X;ojdF zz=W_wwe>O&1&t7L(=%WuVCYgxhPDCX_N|@tpCtXdW$g34NN`=?dq%x7t+Z-4-hE(8 zONg-GyDk0tk$!y-D9Q#&+Zdn5YPDITAdw{0ko&pv7-jt!no6~;xmT<8Co~9ZZWU;H zMJuSo71gkCx`con8pUw~vFa~D3!P1bOYE-4%mZ9XY?<LMz{OQ#W_(B~AT(e+0zZks zK?qgvt&0{+I#PYQ>y96xy?ZXYJwu>@lAqZ!|BJ1|CR^LyS;(ig1|!S$@9;hI_kUJf zVB=a>lr<C0oyU)+`^wwYZ&Wzx9O-*>`0(Mw&MBMTm@;<c3^um4&5y*coL{m*`Sln3 zn6tN6Ol=CO^&(<2+rb6(5U~#BQ$tlM89<|%h{a?wKDFj>$e-2F27<|79nT_(#|PGA z8V%{xkW3r|hyre4_<QwMSAoo(k=$HV>7??9Xk|vFOQKhT=Z}3!EWZ46e1LyV<)X4z zBz->rIM#V>>vOOz&0@a}3qD+6H3#MSnZ=b4w+xx#Z}kfaq_%#;1($nYqgoe5$$a5Z z(aog#a)S%?x)oj}?cKwNli|ZJD!a=l88f(1vx3%4pHHg%*1Q*Tt_J#K#OUfS6G4DP zO@(XTuRir9+kz9ZJvpi-`-Vv-hEPZ%NKqxl<%}o?Cq){D_Nr{bZUc6Uz50lQ)C?<S zV0Ib0hICITnN%{&&l-~-5jg4f1=EJv?IF`=J+PE6c{$v9Z2NyO$>P|B$dH+Xo{hbC zW&?>>*tPS%b;^f_2%S5**TBh^oLR#ruBs;-Sk`BLYJ+0z^n2yH@EULyHB5u#0Pjw{ z75RpX&v(v_p48;!D=0tLd;Ca~>Eg(8sM;n3Xt-zw$#_5Z-+fTR#;Pq?uBqy<u`TFe zIHhbFk1Itz=Jb^B#dW15uv+}frOK}&alH3oyz~5;<r5w8h-BwF5@sfkjkeMxi^bm= zb@~iFE)_q!=d?ucoL=-&TAX|N@#N%`rAH^HOkJMnYTUH(vaQc!pT)|jLQkA%BKGO$ z?Q6qI4q>DjLK@u3=KD<Iq0-0p34>A>(~yJJeIj-lYS<^XndIFiPED-ZAUoNVGuBT? zes(S8r1EAUX?&t2GU?6Y_?R3={H)|ru_VRn9~-t}8TnDNeEYMDKDX-TQ_{5!OOH%V znYzeUxB0Fy&wxWK?*rpoiTj$4PQv<*jfU7MuT#<lnb!V;#bxwIhmIGzqjM)2qIYt& zVDEf@s<A5)AG>08_@tSO3vnJ`Fn{Y=wK=8r`@6El_$4njtGkPSdd-g(^jv%k%|8QN zftGonZ67rSKeB%J$CMY9FRjuq#PJPXQ+~9bYtY2Ar1y#8!$|3AW#gOkCbmJBvC5Z$ zi<NP5sn}_%ZjvE4p|rcGRafx?^<@}fW9WDKm=Ba-FtOyQ1eWE7VA8cK#E-BLwcDvG ztK@V{-w`${DOF7jX`6+Cg3!6u%$G)+g`ix2i#YB6s=;H4zrM4fC!t-F-hFqG*h7Vb z3J0B3ZXI7Rr6tM{iD_8nx7JfQ%LL@yBL17jXh4wqf`g2IePw3w$aSzUIe`1=a(pxk zxXg9OBNL~Cm13g|KyBC?7d>j~2cD7ny;m)?4~}jI&Wo#_&$dmRDu_)gerNHm*@8bD zf%1*r22DIqx<if*A6BBQE2VVPiUQK#(*e#>BYK1F4^u5HXZYPiPSJb!*uuF6)=toH z3;AX>#??}GvdE|R&P9h<V@?q@m%6CG?1*JImmeha!kM+9KSeHMIkO54JS+O<Udk<? zGkZ%5_z6Dq@@R_?B!&1*e{ao@QIz;m(epQaCrT9c{C1MKgN1{xJg;0kP8LjUh5#_@ zwDG-pu;nH=w4Lmy<4}VD)hs85DA28znNPYLg`B`W8x~knD=c6dNKP>w;@?|FfCFPH zGskJAR@&gDZ~TP78uiYc_`*FuZr+wvKOU==8Aya%C)a*9i=rf0phb@ygx+o6?q`y8 z`WU58xmr=WR{3TBpRHP7|6%pt7yI@*`=;{qHntBS(1k^aAtj=dV65((4A2A3bJ5={ z*&4v{5<ny9hB@#yL42)Py_!iu2p_`2yB}0Zk$Yp0^+R2kMErj^Gxk6qY97>o-Oao? zt>gMHSayHz!K8w{Ya2CM{rU$ZUYW6iWQ{!}5Q~)UqU4nF`mUpIW6j54x7cxa7`jO9 zkD=NvhQPX(%X@O18l7o%MLDuPlI4OK`!MjY{*HLHGi(uh#q+&rF0^@mdeH*uw%{gm zJb|u2ap9-iMozT|en?YG<u`FNib=ug;lpniE30o)vS4EKW{l3OE59={T~rNg_Sew9 zxDSRvyRX3ZiLrGg=nQLi{<k%AnWY*~w3;$O6ef#GpE(wolryi4vY3Nh5LVOgui~pV zTXJ(fjk^_2+Dj7m4jMGL@CD_SlSExM?=fXA=UKana(JDpt{ptGtNFEAFpzj}ju<~y zzWJoSQoQRJ;3+!y7QMiEjy21Ggp#YLGPpMk2XH(>tloek8co4Y=JV6pAa&;Xs4^O? zrA|j1>AZPl#p19y(&)#<?~e$ULV91GaZCB8x-+CUS+dtw@}2T$jaa+$i(?DF+#V&R zDKCD!<EN2i@tO;1wd5&h?~OV;ebnyWdy9JJzmX?wUD2=2#9951Oe9yn8FQX_f|n4d z(#5rC58*HF30{Z)sEcdS9`p<D36`3d&=r<apkzbfVX+Y@h%xgD>1a55QLN$!c?NU{ zB4uvE0I}gYq96*e8Q4WhcabHx8Vhgc?r9k6pHMeGzm~sw6LC3|dxW$Y(xg9V@k}ek zYg*6+G@PC_q5PibMIL`H(>vysf@lKh@k3L`H=8lsK@q)UIgZ!bkmAY-Cew%!;7(du zqI@Dav2p=XoP6~%`4lPzkTAPhfQi~^BCSK4QOf{Bataz&r-9Tv#9H{#uPaJzf|OKI zDhiVFiFAfX6K<F{kRodsJ||qJ8UoBq9=z8H%o~cG$++Y(&hXsOIBQt)v?ZfQ9l;GM zHZLGE(ML-EPS)lMF%eKOoEej#-<{;Kktq6zH!nz@Ie+xX7jX9~k5{%g%`|<1cSg%* z?`Oh^MZTo!{oEME`*V^<MMp}G_;bnA7cE}+0zUUkeC{B8t{+1@!%Ihq+{%uOu^<l1 z<sz-a0s{P#tM`ZrwVFn^YTUR<{ER~*LF=pL4YUdNnogFMW8Gw_3AsVMj-AjN_!ra3 zGSFPaBa2K>woVey*BN5U1b&bghM)tQ1>UP&TQ6{(U?<?0m>aI{U0b`;O9O2WwT*k3 z;@uMVv>1^JC~F|Cdl)(zbA_zkYt8|hs^)r4d!lJ)rq}ew7S91P4nRZ|9KaN@xuw#4 zpR`xW70H_orH15+*;E0*a6>XfK`@0>{-O*r_r*%WSsyfSo|M@MJTs@Q#PH$V+BK|1 zgI@a7t<TVaIia`RnHj9Ndy!XFCyQI{tnF|(OPy(J_pYC%Erruct>&)gN;{EU*rBwy zk_(NnlXpa=)(-NHGKlPxgg0GmL#~P(ChHH;BvL8N13t#in;84+`~*p22`^PSy4)e7 zTDIwIvjmT9)fyEyAGIqO&@#St?}9drOS)D*qIss#u=c~!Oh6Ndk!Qgraq8{VQfu7y z)o>pw78&mop3~lk%)k0Ryq{L${lqki4mEv5-@(~O`zGiK*(H7!ACR6)U$#uB@bvU? zLYl)FXBN^O&T4dbL~?3mL=r*&1gi;Fx>yI=fyG<$OzkkytI)LF<nEvC9;kX*+)C9B zvC4jBT#L{O7ytY=dAm~uWusLNGhE%#c6VZ#I}z}4dr4MRc$XPYxw@xWytFWv)ycWx zXLr*5D%xJstLiCu67d*4?K7Bl0?$lh@kZ})uxDPqg5P8?m4iA$?h7!~0e>o50s4SF zR`my>H9Uhj&4YW4x4ViuPnjJS6n$z^kE!9K_fMW378rR-Nyqm9XYrItbHn@{CFG1~ zvGs1%f1NW}G~0T&DO}?qx7iD;Yr*vF)q21hXRxjOfvxXT1J^o&eSd4~QB#;+lWrW` zrB`2hcITxp4DRACnbT&8Tc}?$x5bL$lk=M`J6qm8E2~YfmE$|t&T7+h&BXm}dMz)j z8`-|w@`;^m3I1(*tsUPsE30j<HDfzvRSZuwPfTR|FvxTU$d%(bPe^2unb9Vus<_w( zCjc1fBF-ZpwfvNl0c~lPvXV><CzA=@S<Q5Uyds?B@3eT|$-<auWx*tJxJWXH@cGAr z@_buT_@Qu8SrV?SCuAO3!f(E5sj$fs4xM8Mu7qKw)hUE{s|y5;%M_+(E@g|vU6@FB z(7TqC80L^<no4(QIDDTO5`>$}_Oghs5gJ%70Rhm{JJCqJF5K(T7?Fz!?Fqj-{@(UB zT+ZN$OdPyF5r6=pRk0f;^EnH#hM#I9L5|Eu_9!p1!S-&$XQROM>H59>EVja)gHOd5 zy4G0SySo$&>fNNhVy9HfZrf$yK+h)vu5%@j3y^!SVyfB>*{Pd&ZOBe)I#{k5#lvbf zjR6=Vu9Bfdkkbn)bE6m>8C*O@01<#T4-p9w*%88k5?$<Fu4dIDoBGZNzz?LAxiOT3 z&tyZcL`)M=f+Xcrgza4HOT9xW+U?-Y(vs*YWq(9WU;43F(N~-@C_T_oYI{BIy7+2x z(zpBf9gfQN_X}P!YHevkDj8u@cEyuI^2O#$Lr@!2L(bpgx}Epy^<VB5w`x*2?wymr z=G{i&KX}Vzd5_!p39z8j5v%%_oWf&O?iAkK5sz_Y>}M<(kJ_{$1Js)bcC?e`x=r&h zeZUV(BoFz3;khYxCIpq|$cgKa?QUT8b@3loRt0r|iYtqqX%EU(2a>`dHXhM-60ajs zgV)iO0zX5L;pb%j+te~SoqwR5p?)s@rRpqN45JniBP3tB?(`CyHG5)T8A%psqcjZi z2~V;_UKOv`#8<!i${(J4{ayX9iPtmnH8_{VP{$Cd{4ll6QJ$kt(lJvBQO1${A81J@ z<$Yn6^oQj6mO9xNexxqXZKQwp{PD*h68WfHB$tpE7=X;(H=sJ3_IFUOu1@=_&e~|I z_sGDVhPFvOR;X!Z&0pl&$>)ecLhFqM1ZwnT1?zHMET=?r&P>VHLn|TP(KU+UEp`23 zK(`d;t2yhz3qU>>cpSI}Dy$vRQx(gt#ve0MET2AHWfq#|SL;S==N}WP-_qhN<+D4# zjg~4%=1U(0oy&36`%ih?w-<?jQvCTdmFPhEjq9mS#4jhXI44&y-T2gV5Lu+sV<c7i zx6<d<u|sc~A(?tr{vcij#aPCH*`@{NO#VFs3bF}aXWW~Cijq1&;58%`S!&dnDL9F9 zFCM`cc+B9BsOiPeC_uwwj+f#F7S_0y)76*qx5e<LhnhVoQ}sEU=xS$1E|jL8&<JPh z+(^dA{+xwjXo7{okda)DfRXWbFfsz2U}XFjjEvu6!T33q|D4W$MuP#oUX%YjwaVl= z>c`_Btyd=Js!#AQNo8^a{sgDSEJGj1vw^z;IG$w&fWK!PpMyc&>?<iFg}73j&NTKw zaxyYR;Vv0{qtPoz#B+nbwf*sBlSD=Ssd3D2;`f2Fc+A<zLB_t(*t7G?VaiFm`-?$J zv9gD_f?iX;9{Q%gjsDT=^}s;oKc{Sg1BJ8Xkz!>x;w0_CzVIU{S1hEw;se}>KmPE1 z^4qT;{P^Iz&xG20AAG}dW=$ZGR>6a}LpEW06!+oTjSu&p6jv+S4d53=d!i)`__1j{ zd<@);Bht6A6eIYFirI2_AP=&HGlzrWO}OI8t)Bv##Zs8pso@|cwa`6F)>wsL_{@Rd zE1OXp^I%c#40MQ#&7Yh*t)ud)xuLLPZjT<yYouA*mS2^lOriWW`jw}PNG8!DPd{a< zjcL!P5Yw6qos?->p<Z|1<4cpD8uQ7SfqXD_rcoII5NZUQfG`Y<1fIep7(64pnO{go zLPmB*eujB~p`IO0;xf4CjI-;@x*4Z<9euz;S>_BDn^!jS@@BYSXuqR&>`bDMl(zoi z!I8IikC<hfF#7mc)xskDZ;7{(UbEe><dAmX_F7~cJ>stNK|PVYXj9rGlMA$My;1!( z?oY}~IJal`)OxNfc`?YR*Gg!ZqWtw^a^4j<DuA0=TH_waKqjVxGFRoAYGoMID`ueL z5tjpxX<jbiqE924R@=ssf>0a&pn%EW?w{yi$KO1_ZN<IGK7%ogR)8I9l%XNHT&D)0 zX?h_E6|ZZY#r!Qjk#Wax9ii(*z6`i9xQGywsCgBbVqw|{Vm94i2*Y&IXowsW5-}-I z^Jt`DMfGI{qF+*4T6$6v>q?hMlEz4zz4|7ToZb6c>=xSsVy>}BT)$SiL0-3!ioY@i zA=VQ~ALc0^D{JUxPjC{9!*Et=ClugP{Ye*3l^PU`B+}P@<hlI(Kk|MfS3M7)ZHQ?h z0uDbQ4^_=HS+?n7VurA{PnRI#s|%XCF=o~r%M0Q$b6h9i<Ph~$j2Y1b_k%cXz>;P! z?8y>|3PK<aM3h;hdKocGSDGsgIk*f|q`adnJri?2c3-VZ(|IzLO3GYYo9)vkWP3_u zXj1s~3q`R)pk)r7`VD$8o_yQpITlQZOTvIYTkw4EWkTv>cWo*afz3CLGwqS>@d@0% zWsWJA+Zu=Xss+O=ywxhoWg&heS-d6E9+?<fC$d>2;w`!uK08wpa+kG_WCsntQsKcm z@IJeAY6)l<vQ$9jVoo=+Mf3!e<M=1yj$z)78R>X2pNcNlHNq7_T_R#O=;I@FaU@<; ze&6F-blG+#4qvUMmOtBmjeBVOb>Rcjs7{1nn}1cgyN}XeS~cu&7+++EGQUs5!o&FT zWQn8|aZCj*f?(~AgY1k&Zyvi2>uP|vYSu0nlLncomF&r;7;Xofj3d+STvbIgJ1Q~^ zGLl7*;I3tW(^+Gp6t!m&ef#PM=toptsu5}nxx8nCwDCRVy;?Z)I;7+G>5?!mNcsD2 z*N)#j969{R&A^IMK?*~zs{F%`NE{hre+wGGf?Z&wI`2@wL^koP4UR*Vm4<+Y79f!$ zc`?`HMXgZEI6T~cJmQ=JvYQ2k1SAAx2jmBI2`CJ(4lqP1z_gGbkdY9vI(RCRj#YPA zEs8a#-~wY7AWOMsB+*669Q0_0aaavst9WT_qVmPZ%JOPt33`T4xrzy~tUz`q*{Dn; z8zlrX!ciW3?c;s#y>b|}v5<c+A&=7uK7JfzUlUVvcq>6_?M4t6>UgZhhQPa<f(%Ww z-OW_T-;f1KLwq=m8Qu_A+&7ei1)fiaGz+Z~O$`2`%OuEg{u~#R#zk9vwmZ#UQdjra zC?aTB^%TV5`3C0Ev&aRXOn_LT=FS_vd@VOr<-}Xyanctfb_}1e06zP<@q^~rBwL@3 zy*5V$i=uz;mR+9-Cl8oE58oaxen4dLPSFaloq6lbjc+}0t<&=hbJ2z02R?IpW~X`X z=|ej{y>?8e%*-~u3R)|>i|4^<FPYPF>1kzoExfjBT<2O@?Ru=5ai2Tllx56>F;;?# zrBvLKD4tV-!OOc*dOKHW0WKg8c$may1c2k#!;sJmNmy!7Qiyu#nx(LM3k23(5c(2p zvBU#CXt%)(Y4AK~;;NsKEYSK(mih_KWjn>qtH&j;8r-d;&Ea_sa&PpM6I<R(_46k~ zw>5H@FYa^A$^$;EF&$BIv1rn-%G8PLYp*?IrP%|B>ugrj>U#v`OYl(-7{`|_SK;l4 za@6)AIYmWn!*_${g-1vzJZjcd4KPg&O-g3sNv8J1;LE4uH>}$=ml>&elFFVy#`9~X z1~ClLYN$iKFolP&Yt$;IWu`+;%QaKIcon!^f+0SnaZZ@#0He(^E@2Kq0Kbms4UyJg zx^!8jJ?7fdB`YJtVy~R{v)V@VoV33V5&TDXo3uAtsh8{d;d>0Gr;hI=azhesTq_#3 z_v*_VM(@6&G?wahAGnYB)s5{jaPPA6ot6%d&SD<+1xs5<pFf4|=3+>nKvbA6lm&Hu zCe(b8R{(MGsS(K+8DScS<4)OcfP{kDBn~b_QQQWz92XKcECdoBp;Pb(%E9W;fqIzw z!0RwGg1I&cV}cgh3byZX=m>B9tSiYp@~isYI=lL{?DwcuKbO+)aQD3K2W@1LrG?Uq zkn2hl8m;7!o5b@q`9w)1pESU(W&*>$6!}L7tbpM%Rjq1jhZa=Dsv-326RXj@b`x3f zk`S{mYza5JB)saW>`?y*QYNzMRU{~xB?(i~+ieB`Ugkgw$s)4G>B6B`PfvJpYC!NY zlCgW)^#X^@6WMskhLShmS-rh3^~)_BIAzR@SqDkGw>DR<$yUyfrL%<0*~<4MVG@hk zKB)ZNGT5@mltFHq3h8ou-@=fEM5Jl-C-{YSbyHmH<3Q@v#e1$*{%#GhoB{eU(R7(^ zVecV3)b|K1;_H2n2J+zVIgiiz64gi<G}*L-?&j~A?S0SGs`qGsL-rnG#d~&IPUAhP zrjztJ{vPCf*xH2ZRqv@<8&0PMJc9O?3R65P42H{*YJ~xmRsv4PJB~ohS)y{7%|}v0 zyZk3W!*s!RIl%jS!;M2zJ-sIY#zLGHs4v*{UQ9Zi9tyZ1jtr8?<m4lNdF~J92^t;E zU;KLgVE-o1&FZ(UO;js+;K}O&V&~I8u3mDfyThDL>b&JvzE8IX2RlwKx<S(GQ%9Mg z%%8Ys7csADk(b$`1)&drKdy9C-rl|V+tpEDqHv?KG@)nL#m}OXc3j}1eISr2LwRU^ z9yd=kWmR=8P!*ka=?noQTq`rXBM9d3F6=ucVyXCBd6Y|ngvrW7>*~K}Sg#@mxL^6j zd;|Y(h^eV;_10f`XCC?zF;I$zSQPWP4VP17p9DV%Z6#sGI&)zF5PH_rLio~F{-%gZ z_4crDh5KSf2U1L*s`x@8H3gSY2kmTgD?VkrJ45dXUm+uifIJJp>ZK+AWhMbXuDB-( zne>i?zitZ~C<QjVzo`Lc%`i9BgozYf{PNqW2_P<|nJk8IN8(q<2&~x!L0j`&=Jb<R zk#t=nPrIC1Gj036+ivOqs2ioL5K7^_@x;#{8REcu%}vwfFxBpWMVrCO;oJ?q5<*jo zd<{Op6V3p}u>%8f99&gGdWB@mVd@iOgJGsL^$5<~GS)b<Dd=ipg2Fohf>$Djc`IBP zD!@u=V@@O>dgun36AAyp!pasST@0&%vFj*OG>MkWV^2&EU9Nn&XVXiL@IE7VzI*WB z3G+$X-Z6Xon$6vI-6nHsyHx{+e)e*TU;5=uTmNd9{&%1s>9A(Nh<{zk^c#D4Sh4b` zx?{#?D;|CM(*Cui-RyJ9-|s*CY527nvy_K-#?uQJm$3AQ88!cWNI$wXx0aMQTJBGl zelw@$Gyhpgl`rq32h&ZZ1HFr0QBG67ubzZy1&;F6u&^ABj69nDpcuB(P~GfgCRT=v zr$1PJz8?H<q)x<n)lM$R&JU}bIcAgdji?tEH+(8MzwYSu5q%DyL*c>xjh5IQCuwL7 zLg3pLvPeoxve29@d<Z>O-85IWt9`fa%v3R<JFlv=nRSe+7ia=_H_%7A@CcLhIv@ee zV&?ClJ12rwfHC3+xa8=-t`BTO%;>yecaj=*MVoO6hllfm`IDSYu^ae30N*&-i|jS% z34Gf!Yf=5)r5%QisxQo+*Rez0#@##2T+x2kqHa$Q>Dq4Q3cT3mVzMiL)(W9@kwD_7 z3xzo?ii8@~l50_6lXAI85bEUB5;ip}5=Pr&h_DIwXsYR1;d}EgWHMUHHgDb&&{|z4 z9jY1|SK|f-R~BY8G%|EKJUjdWSH~C%0IxoYUDt4@02zR&+8%|zRr}I+BJn3CCD%s2 z!82kKl}{?kC*+LsWi*<{kiim(iB>8lWiRws<>w}X+2*TFBTR|*zRgU{S`raBfoxA5 zE#u+~q6@elOyl7^g-hm*ct^5*fbSh0J$3)_4ki-W=@;N~UxL)LAfuiqTX~-uwhwKZ z2fxpn81bRx;m9$|%*MY#F0mdAel(oWu{org=f@o7Gg@7#_80jQ5VT}ZZTddl>KWk~ zPj_LBT}_9{MDu-?3q?iB3CQs<Q<-@J*0PpfBcH)9Ww?j>vWa5@c)Fck5H8!b7#<gH zc!EFjx}aRfhcg=pU)NpDr2SH}T>N{pFt2qMPB^eK*L2P_4gYcmZ#}>nx>*p5_as{D zSese9TCD?AW|vLKts(7YRWtd=VumDliww@q*f1n{$ha=p0j926(s75=(cP6rncK6H zOst<xV=c2fVLe5gR?4C}zXHJ^ZDtxjF2fzy_QS)F+7m;x(jZTL!FzO@(pMzYf9N6H zR5+>;IAjonCyH>7RQbS?L;`A3bJn}hi02*EZfsgIH+b6InJ1zniNmIRS3+yE=JbMV z&Y??`Hm;XP>7KQ-(ar%UqfVUt4SSD9ZH?B+fgKMI3TS)da$nmHmu%V-U;K!@hi{Z= zC7{;yaW&v!9}5<-)-ZspGx5fkuLjMy&~qZ|aCyQwY0Q?$Xm$M(_H`jT_V}X0xf5}h zEN5dv3Eeh-J==od+PV1zO^AO~T|F;LCC-aw1kT9*Y9tZ&S<7DiFVBl3U$qU^gx6D3 zdtx}e6#OPdbB?OxNp<$*e>_Pzjfg?Pr;p{Ct0btyGQ>CC>H4$PWIxh_Ad2CnS&Inm zv_X{<i}LeB^6QM=<cuMItA`&lWgb8L2vPY?mSjaNF%M8VfYB<f9yG<~g&Y3C4Qek5 z&JorWa73nQzn6xpS^dAH9w*Ba38n$TxhatWf@S=_5e%VMTmw!j7SLtmrF@scNU(ay zXRr!#9e*VW?0P&-u&9_5OH{6^oG{KcW;0k$M>UnXG=dfFEa8l1<iB!Wy}bs0Rxi*j z!?Z;fs@LFl+dr%TgR^C*9_D_wMzbdauVF3dEmgQ(I-`$iXxL+bU+Y3VZU;{!rSYql zf}7?IXR(-slO>3R$C7(U5KSwXGIn$1JL-+Ac5>eQ<*k0S{j^*}W-qoIt(AYAW%dxV zww$a-pIubmgx$Yw$6G05Tpm*wT{_PN$&wBXcC6(M#Q5*Y)t>I<qe&i4K2Os?P4T3u zw(}l%(nEVv7f<SHPqdOD&N?0Nn+}Y1^6UnUUYC2(bq(f=Tr-~GDv?7diK@aHxZ~~Y z)*;B1Ru$xub9(Uh8%^yc&8l8yf7Dv{w3*%A4NbKfQN2M5YXXgQXdyB71YF0^FRWUS zUEZ|X=oiaq&PKK(9K=GXocazmwVIL6;O|VTTTK4cGNhp6%!UDejwtG~?^(Lwnj`7% z)~x>|I=<a^<kb+#Z_lRHr4iMY+pA|c3JU*p+sYvUwvHQnj-3}^4GMT@`)R3FoD|>L z+$g6<KVn;S&34s1(^bFMz@D2sH|#mAdE}IJ(}(SCnHkdS#-d#ZmrhzFEF5;ZYfAfZ zU1o1@(tpr_0TYL|Xw|^wv9*j_N&V`DP%@%lZZ7@7WimxpKCeu%wLo{dKxAvO&^@#{ zdMtKA<f*S|plJv!lrg3W=pHr0G}|;E2)NazBGV?))Wo`$vzyQ!ht?jaE_a$OWXjLX zz{Aw}c$m`^59a3W*&zWhs0Nl0tO^1mk6U8F+47PgK5$@3c1ho=#-XyK?-Kqddr4x| ztBB>6)X+UeOa&2Cw0VZWtyku*mtB&l`)zZ(dt#Y;Y?*sxnY%?<Nz1B0hI@3GdwiLD za+$kXnY*do-Kxyp-d@r{_Xk7E+=XTCerU7Ke&rrk<{nh$?qBBaQs(YtXN}i`>?J*Q zpEcF)URdUyVRtX$A;Z<WUp-@YuPt-Ww!7Drx#!s38_L}C?e2|?#W>?|1XXgnB^>RK zm_*|b8u#gfumI&Vn;MMAlm?5Lq30xQ1+)M~d#4omu!v~82yAbOWqx5cc)!ARKcmke zhoUg|F^%yg|MQF#_Ot3zhJ|e`95gO4Jgn&Ic=FXCc|>7=twDO<z<{Z}mFs4~;;P-G zSBS%6w&c}n+{-S!H?X;VN|#=Jto^LLGaCl{Jv?tx>dO)4%809}6Y~B(TaVOsyp&-1 z&_S~6O^7cqojyD)q~Bulu7lVep79P6;_ysxkYLB_kH4UFoK$O4#Kf#g#gl4H6ipLq zO(_4f_cVK8`_z6y<%FyW#S?0cCwC_eo;|k^53`>^9Hz@twQ|E#`?c*xN!z&C8uhw2 zpA;Wcvu@{Bq>Hk=b3giYmjRSCs9tfKG%B4uxm3AfO(1d8jvk$+e15bd$kMr^ztDaf z|L^a-$^1W|cE$Wh6^_5>SB$WBXk-&Qu_v&-`+M$*_ia;Q`Bnq=KNX%>YZL3yng)+K zPRK;Go%tU?bHP=Dv8RFwRIZ08kI0rqGs{fN(GeUe1+|x02EZQr=?RwlI6o=3K9Au* zz(ArnBES|7XNm(Een$%XGDitlDw<b3We$l?ZQuXM)(!jU>$G8JgS-L#vP(-#JDAPX zY_@i<s9RB2c>Cvu4Wlwvv|qS=&4Qfz&FU96Zr;CRzhj<`X8-5RCV|v5Z>3*a_hT<1 zz#@(_v8yREc(sgTL9dD3EF_<Hp@noJFw^VlUMlhlY^LmHp&`I%WCQiw1?a_z=rwG^ zJ6K#a8Ys3Xc1QHSCJaSg_?Y=2VulI|^UBl+U;{I-b6Qkz@2O3;LAkD$wt#;1U9B6n ztldlukUCiRzeH~2JzbF3plf$muddY_uow)1G2dHA#Oe#=NN<NPCX;xs&<;hyo@lmR ziBqR1Xc=1f@CXMwjOx03q01giD9R50jp14``~=sEABsA59geMNNkYrCha%Zk7;4X{ z)qcQYrxba3!l+px_GN99&q!$&nbfyi_uAEm_8GI}nZcu;Y4#V^x&ljn6?k#0skuxv z+#eRmLx+#ARyLdXv@~RCg{pPSRA8_2RyCq4Er&Ff=6Xbu89>WA*B=Z^Ii>P<S^$cK zBJbW-j!#Zuk`zi&n{UGd+>d`2i!?c^K7<8!;;Nq3sq0iB1U@BawZa5L3<qU49Ml=+ zswkW&n*AbTUzo#xaKs%grcZYqwx&L%v}dQGt8;0<)RFlOV46-H(WKG5<1%g5d&q9( z)98l1hdoPDVzBa|mA?o}%zJQ_)q#lRC&%ro2=6ial9@sT&w`=;-=yZl;FRc_Xd(2c z&*i|NGGuYQ39qJTPR2Dh@{^E&k}1sxP7S6`v^uEK^7^Em=c2<Fy*g&~;b2>EXkF!q z@^_YB@~5PMa(ntWseVCb+v*vUua9zst)#BrBfs81@yf(qE1vE(T=`HrZI#R<aK@TZ zb=$X}xstB_e%ufQm{Av9`A|5*cbNig(=<6wokJ7H!)|zF^Q;)tatBh|IzKenMRILF zHdA~q<{Cul+Zo70Ty4g*_Szg_g45K;a8R>Ty~@tP-D8@@Ys;iFg~HNWOxg&%TEuFN zOq9@9h;uwIdJ{I<H&32A)gIwFH|1Q%kkEt62M-R8{O;hc%WFc~Jlk)_7qyE??N9my zH(%9t&6^I#-lfam7KRR9o07hJ(7H1{Hw+l@Y+B0Z-fK^t^5l1(*=oy=o7Pjg-L#e) zCyragu7qhf2=k749qvWLf8Gm?20ly(((yVM6g;3_2*fpb(DhAEXhZt7CsY)&&11^9 znR~gwTU|l*$>yE#_gM{SB%goGlE~UrKQ1D)Pty8wvTLC8-7(KOh+QU#N3+O&(s$Wl z@=li!1Cd39F*#LL0f#6&f+z&hd0%doS(!p>@kixE>sBv~*?%&&+ONAN9cUjGnnPxy z>ioy)4-&%y1H-pWnD$y`QfT-Z^G-?m=C7`OKH7i$i*c_^8i`mA`gdo|?^oEi#i(cY zE*jRWa1^LH5_|m+)U1XMPofST!U_0~J)$wAo|+=j_Gk$b*>15fT`UuT8NDMSheogp zCAnG*(`gL4%pw+ymAq12>#M;=HobU=&art)R?XUX_{HeB|D0TZ$}E}J&DwQ4E_&Dc z14Ym=weytb?cdpTy6p7&*_(@>TYH@L$Js@IJ2qoK{^(rVM-JwFR#`^P&wEq&<<Rz} zh0kT;$Mh@jOJs1b5KSU1S0~$eYYjPw{~cFItc4G<0cigbF49XM*#4C(<$88n=(o*1 zwP^Ul-ekN>DJ2p~6mm($C-mRr81Ke|+PiU|tDC0C89XAZ-d_%D&{m~|PY_3Dk^i|+ zNvxJhk4cjKOq|}}Io)NI!>V%~1^i}W)fJZGswZ-KqlF1{Q+gt15lB)Zw;ro5wnlsO z0ZAbfIvn^Y(z!wTr7S^;`<XO$M}=&iI%B-u@#_oYPZb2_+U25+Z^i`qr7K^LpyQWL zp1QGU?t1z3+P>>jQ?`s)fBxy6Ll^H__e{f@2Sm2(IGo8M>^c&9*U!mtr|PbG1WDVq zPw(o5Gt;{vYG%RU=pxO<UX>$EtXqOl?{XoO;k`#9fE&>svq;;WijG{lbi-S5uDD<K z?>rV6eckhbp2?v>yO&R2zjqnge!Y0@j$$PiEBzc6!Xfj9C+pnDS1Ow=d}&PQ>d39r zxfZ5#|1Dis7TL)0U~|iv4G~JDrgq>0rn~I03ERqXydKmIX>NZKk7{&bT33I!aP+!? zVmyn&fP1`kCOTbE-t)rh?RgO<k!7n7_*+8~Yy5WR+5LhwCG$5DE-at5`~8eGt999u zT_1F^+K+GR-{-|2N$~BGe(yX|eiQmE-TBi;_uC&h{WCe&9htPRaE`y@Zuyxy$rfGb zavm1csH0_%^#D6qC#;H+$pc;JUG}puCPqY-xgZe77O{yCE>`Rj1-GZBC}dbAskXU> zL~7t<Fn$X?Hj8kt^JL=9h%wE_L)Y488!k5wEHgETu7dnyh!Z6i3`YP__<?^Er7b;| zJGeS2=bMs>#1y)Yc+!<F<T8qOu-8}dd1?5(08?Mt6v)J!%CiQ!Xs|dmVZs%%mLWsm z875g|tNKkav88xN`9h3fJy1mK|2dSBk6L>kkxosOQYEA%ja6Q51}i#<cwX_GrpaL0 zrzy8$Hv{vWhn3mUZvj;Gt&9_1qlDo|cv4&Yjb<J2W%|&jCO$#NJ7rc5;LngkgqIi& zs<H9N_`frpH0@2!G*}egmlQSd{N8Ar=V8MI4F~pqMVMN#^rcc^LiseatNgaPh*Yrb z%RJDq4OVJnXXeMuFqMXeGc&A|+qUYNsd_ri`{_AkyI&33qOoUc)5?acI(HW;@li$i zjG>he&27Pxp{6EsFrNUfeuhCu^N^)R0PURg`CS|Zy2`R>4Ul=<igAUT+b&O39$h|n zGj?U}s;FbTp8p|sg?U}Y@0Z?xzgUQ@`0m+@uj~>6n0#A~eb&VqL}Y9A{q{KrY9FiJ z3nXFmR|EMCq(bod3}psK++0IxcU8KIe6n!J+^hT;vq*@^0g3Sd5~BvZCw_1SPS>Jh zGL2_V>M_Th2e2S8^iCD>c~LqsmCXP4vDg>Zk<MzcR11#-yfV-RR<v4R;{wL1#j}_q z5!xo++<Ih1SVTq1gj3xDrO={fHMV>jnMTO2;-z7c$|Lvn55wz+T|Bk^^Y}0_etP4~ zoNc2Q@9VpJ*fV>A==`yVyVY{-9ldJ*i_b0HH)~iE$VITX@CWD^j4bL<Ig)qfV|Ev- z%w%_+pWHv_$$q05VY1!K1&!T+nwBxr9&|w<NpFN{G*^Qu;mF@7as8N*M29GYdrG&- z!c(tBJ4zOOPh6fwWZ0T_qN86psJuwNR-(=8=#`x_kH#xbe;T)A-lBt8eaFf=<|MA= zsza)q)qE>rSK6Fo!!6VpouS6`v09j`DOHEWlK5hV6;$V<-Q@K_ybcxbn#??^RET|g z>_UxO9lLG29c{NeYm!=T?YI>aVvmkLbvo?C%8SZx>9OcTdSc}T5>TUBNL*>kdyyx1 z6b@PS7fC<4W6+Q-?my|bD|RUr_qO-xv2wTa&Vk<8Q4^fUL!5^{vW%#w=lN3xFAVga zhv6P;7PlOrP8bO=907wJ>X;G6A7gjb`~Z@Y*(E7SHyP3Ap1K+p{l_cHZIbu=2Qe|v z@56W}mEsrn>^|+<yma|4rb9d7-ZN^4qVl7yoS^pBO875!o?eIQ%?s#I1Jn~p1S6qM zT#FhAP3~>KrP4UFY{#wW5KvpWOB#d9=apYFIF(naRJNaZ78L%IWSn?*5GbwuOX#^` zSEcC#ka)!&PGa0_(AYc!H1@-+FQU__oIx~RH^?vFW_;?82~5gu5n1Hln8U9D=7i#0 z&*@9jt@^YRvVXbdubbDEzh$n+<Q6{LG83O21WjTKW|q_wWT!!`XtI-EN4_e2Hh-ce z0A*t03QttO`SWjV{sW?hVd2npO#gNvb?LFrx23`Xo`Ou}%@?KHSkz5(gYv1gCJn() z`Q_KJF2cG%)35Q9#Z*T&S(&x)e~|=wv8oys;W=~ZSkcqJG*^Q2;H7pW{1gak`}1h> z6aGB|wS8inQQNmk6BjeGm4AaEVL25*x_Q2w?0V2%x}7`aW7@2TXB~O(DLT-tbT_Z_ zj6Fv__Wa?Qhjj!(p0iUA!M*?x_wCD|wKN%_M`hr%Sa??_hlPCC+G?L{KXk+)MXX-6 z;A$*%)LYNLc7Erw?MGMzsA&Km`r)$#Q>tw8R)Dh27!ForDx}h|lg(Jak6z>PQ-G<L zOmtR|L9-dGAnhNj64;D8ZD^jrJQ*7z5xVph4@@z|r}mP0UK;4J6ymc7(elASr+MI* zdfukI=5!S9dtKajHjO!vPh(b3jvtA3Pq;v0pBEyqngtA5MPL${0G;Gvf=JidQcmW7 z=}ty_$YfN77`*Z{s|9g%j);Tgb)ZU{b;s~|<V;-)=cg&<jaOXl;f$?LYTZ6smP=1< zIiviN78eo}erDzTn~fVOn?>^cq6K!k;^(5h-;#v0JC|=#$`17HvHZEF^+`LRu=q{H zTwNvwx*DXw6E&V}Q<a=8`^<XVUK{EtO;sv`DLGx8hNk2=RHcz;=Md>O{n_Su>S;Qh z=6WCtTuLN9-%%MZd~TTv4A@wetOolc5jmSgE@Tq<5FCJF(2LOSmk1g^?v}vH(Cf2A zJ7)UI8S48I4G1tSO|vyvPYLJ(z{&O227(`K?ys-ire<)2e{niP%GfW5K4x-6e18#* zwlBW&52Itwu7LaZgD!8-+Z_v^3wZD#@Z2`l_8^sCLf35uf2C>^-~mL9v3%xyh{!9& z&^|RGB%8HQO)1kyeVB)%9|EFceS^y681;RKJsLO+h(hWu{slY=fkoBuLTWHY3+;<Z z^krp4P}**K$6E2K&DM8LRNx))o#1Nk?0IIfXbzP8M-E>p$Jog(>KdwiJRjx0sUMyw zkjCHrY5ug<9r7CwoAAbqtU3fDUw8vHbF^ueZ1Hw(W^%x=QGS=%QJd7TDOw0v`A_oz z)QLilf_MKl>=E{?J_Q}f;ZlH3!Su27Onq3H?DSVdJ`j-b^}J9ITp#v7R3kcb(Dtj5 zf(~sq<!UI&7nQ5^Ty>ReB57_{uGvV<$_77Lg>ds)PhY8@q<l&e@QuFUnGzGL-JX|m zdn|0;)&Ha=*agwu7wv)w=RI?;;&NQzM)x}O2{{jX&Bnhfz<+5XTe$z?wy->ndPSZn zKjA?!NvDt1u;>I&V8FzmUD1SYY?Kg~?zu12GOsJ@-KC;7KE`Lw2#7gmAeYLeCpT&} z4%9R+iujo`svd(b-pE34`ZzXrX^dlo(&T?(-U!1y*KD+@GUk74<<L5kXZ8QW(y2U+ zjm`l*nKvlvyul~Z(WpK|PSiSeQ!us-of0xcM;_hU=&uG30;|Jtm?~8E?ty=t$0xS) z6BD7ahRPPMvDld*$%aRp_vD_au=IKf<APOv#rmP?@3RqZ!Q)OCnFBN+zUbQ?r;UE& z=Xp(}4Uc-FMEb2ngCz1mlknyqSes~SCJS0e9^5{ICVisvWDet#bY_yUR=VPe2h$3j z%mw8~@sA^J@fHZd?m~#El@IOAZn?pz(e$ML--VaOK+pQ#<r?T2!5JUunf$HP62e%J zhWw<Iim5~}i=HG>oi_ATNLc{j+kttOlu*Xi{b1Yv28j~}nUiE%D?8QvlGD!ehInN7 zcD6Q-lG7Mnvnpj%DDN2n3FK6Na%MMkgg6tN+0J}t7iXb!qH}?By>qYAe}MkFF({{r ziym0_kvheQ4+LTr?qmXUw<E(4bcQmAh5;-CL*;V_w2vUArlCN`8E!QT_OCrDQOA@& zw>u=qx4(n++WZnKk=e-~+~0MV)U9Zebm_(VyFO4pFxM9q<?Rg*=9$Nj_amY2-XSKx zzMi)(eI`~Mv_5>L<Uf&SVSwKkkiaWJj~zIhSnY=Mk`Zm=92TWLF(`hY*%=+c$ErmG zN>OHj(gkuHiit-rOw1T%r5F4e{B~z}4sCgj2<f?!tCsTF{RUEl{nx?+LnTSF`vo6c zx5h=L1`zTu%vihptMbrKxlWqcPHr7ElH@Db2KHFK+a|<d^>J8zeQ3xepd<OQ@tOo} z!CEC@iN4khnQYuVpn~<~w4wYQ5Ry;AqSL&i{gP2Z80kb9FfCo+MaPlQfz*P&7<A~4 za|I#cN0;7IzKo>8M?uOOk<`5{&<K+E>EYLHg1tR_#d@N$vUA7J$y2k6_9~Z^pSx7d z=`4{|M0^U}QO5r3bjzX2#Dj$2#2LV7oxv%@m?p@gHeDH9XplqNcKAkpZ6IOX=v0Rq zx{+;^qf*cq0KUAw{~&IY&e>#&h6Oscga?~y$h=+-$RZWWY@5)>rVQ=>+~pfr;$lBM zWLtG1ChoxTK9@QbO6CGdQcV4>AARluvLL&bZ`n`k)b=1)O-xV2E)Kz|q+n`Q68D1D z!!cwOwEHeQ0~x+|F7V$xqo6BhmF-T>TR1Ge8iBQ(SapZwl*DMfA6xOl^$~brK?xQ0 z1UH$fb}M7KNXaE!%2ghn*?i3r6cSUDq`r3cmQ}JIeeRS}p6N&H+C1+DhWLdXT=M*9 zIb^te-MwwVz-NCZ$)zW@zfftqmnAjn*?q-cLJl);zw$-IJU8LYqQHG~<QP?spk;zK zHI$?1G*;Ah%g;_TXxzpYo(N;;-6}aEj1dO5&>7an1tztg2!Ot$zAu*DF}Pk3_5vm) z!B|7sg3UEZsuvlVhDY@{7f1h8qD;8vxihuF#g$27!kFDTF{A0Or%A5~huV1B4kbOd zy&E09b35s=`@Ffp^S<&f=G90K{$5S~P@;P5IP1B&edXdEYV^f=9D5FfyeN{1I^Px9 zsBo{;H1MlIglh7F6M!dKxJAcX#q(^Ew|hJSYG)G6*=BVLfW8(D)`N~Wm<y##Js^0) zT1#Nt5TTqLaNvkWfPc|@gL8Y3uEiIlV}ClOj34C5WG)>oW;?$V8};lC+Mm`{qR#Ky zd&cYHea7~@=vi<xi=<w~o+HsOUDRcY413jr)_i+fS1zDQo_IICO*`~rsp=-WB=1xl zYy?u11}Jkxp$|r857>RB%$-z6suREIY@bUVaRYm~Tngz!$;~q53sUX$DdM|<jg|B0 zImvuv_-<YwnE`noSME==I{2Syww=L__5-^m@u0BRJ6@wqYarz*(@Jx%(9f<)%6ZZb z#?Mi60eGb;)a?mq+5qG~N68^-)nW+4*QnCK;3aDsmL02JoDn430=Ui<z!yTcfNSuW zJktqxMn%R0s2WQOPXibL-7;_oguR|k9ms&<;=G^FD6>oHp*|6NcPJ-^k^#?^nhTW9 z7nQdznb(nun+tb(Zth`sd#7^N+!FK)!rBYuP<8E45^U}0-N@+3Z?ty3wFHL2RDqg- zMu7<fSbjhmbMoy~Vhh0_3CU)4b{CYRGYwCyH13OjL+R3M&$N&lRCIDlO;^(IFL=K0 zS$~K0H917yC_kz!ARUxf$TULCNy@BWl`F8XUPjF9cTn14S|JnNEER*pY_Qx7SCca` zZetaDXit2A6}uk`Vb29B$=Hh*i2}Qti#GG%MtA@VwBZ<7CK}bD$RWWx2K0+3m4pN9 zhvp7h<GI|G4pNS_CQWt?kOpia740xWv*;<>$a8~#b*GIzpVMldFK8@JG~o_LBR2IB zG)g*fT6~!X#`WDd2vB|2GsVI3J99CQJW95vFkyP8nl%eOH}q}@Vk{~64G_ut+@&0y zTut2xm<Y*+6yA;$xG5GMHl!Sq81zOG);kaH-tbkN6o;1Vr*B3j{y1fDXq58zi^ccD za>Fidd*Sn#Y-P~~ajUyj7&NPB)663I_@-MO5{gD{JN?p*1^YHG{#z0jW2cQEZRUgX zSnSoLi@kC)Tw^ywe#&rsT71r%-9%2F9UKk>p-x0PaTMl`_1@08Qc;gRGDpSSr2IO* zzlzUh6@KCP>_AkZ|Nn_ZiaZwdkIv1qKL-eSxkF<Lvg+s%>6SF$1=^sU=LmVNCF23a z*!bz+@VLR>(6r_}tjmswKllq9QklR&6D`)y*~2GJU~lU<f;khq4oFxDsAABZ<~)cp zqn_kMGAc#TignCs!2O7)WJ@@UB&cgL+$@8P(AFdq?m9e{>f<>@5kb@p7qTZV7Ph?_ zvKga@J+EXfK3TiABQ<s2$PDG3=A=#DcXV^bh?cJg*Y%s9BV1+{S7XR4Ro=Jub$0w8 z<-JeD>jf^NLrlu2F@E716)dx5cFWwniV0pJFEJ71mGXRQtx$@y3Bzo-U>zO!ZZ&>2 z5Jht+<sch#Xptw=yR%R*Y{;I~oAqP{DONzG;Ri0<aVOQytrNfTT%U`uKWT1nruj%U z<qNL)YSDO33CKb<I^5OkYpdsC(AEYA*C0x?#p#y>ADz=ANuvk8n-7)m06hql-c|DX zRYdZc*5jIwp9Wt;2+%$O-bniYcp8RO+<!kBL^<88=b_<%*n&>Yg3c)Ksb7@tq`W%0 zH*V5&e#0YxBCF~oprJerg2iXEJ_eES7r9;P4~6WX?GI_Hx6+{Hbov=LOf|<4QiEPb zBRi<$uyk|pYQMUbnb(x%LFDMu(9CY7$g7X5?<GBUU4V0;L|s@6ZA{ENPz48D!VD>e z89sij3XXgsjN(;r%*NP{*ZshMy<|J*Kc<mPUK_)3>e|_Q<6!`;o=LD|TOQj0B!*!F z>ZvoE0*FG@o*=I(v){-mP%Vmo>1>I0N))pt$kVDJK~P2iP$=h~&~VwT^Mnj;YN9uk zt(R25B(X^LTvS*`={;3|1v$tHE|Jcdki-30G8slN!wDd80I!ZAes!vgRd!fSEJriX zdSrhwvDEbQl!>%f034p@7a#hpo~s@)U)Z90M#@Jw&fT(-5j&3%>wC2&sb}})dyj5C zd8=gWKsZFo$E7EjFHrf=vIBdIMm5%W^^zG(I>V*cgddmAzJmy~F{@!NTK*a~$qLnU zqplc=QCGt2gB5v`G^)F&?$4MS1tBD%<Mz_1kgx#d*TJy(2NIj5HpxUHIx55-RRc-V zCSfPFBq>WulOUu^?WeX67~0Tt2U_U;YJZcI;%$S5tp82<Na(q8r<yBWxtq`rwj&?S zWAs0R1A}0F4V4iuU?L3$pN3X8+$e41oC=!FD2It$4u)ly=tm8a0DjQ8dpfTN;YMr` zLNSM1;RNUHgzuLaOO{O^79REWIkMxn)E`X^)|`u4wu?;br^w1-njW=x>b4_DWJY<u z5xUJ@X2va2J2TbcD}P!x=`yVb$*ma|a-fZa7y^wMbPg0@W!L~E{zJF&C9*gqOZ3pT zif52CNKr&$9z-wLJo5?&q1m20G+Uz8T}lYEW0kYqj*T|$mTlf_fVV3Ghr?^?#E>1} z$VBZon)zcOFn{7hV>s;$#lyo5#)~ELqXXDMAHn9PyBy;5UOKhpnj2Hz-X{hdSGZ5c z<TjTYMJWsai=|6DdA?=(^NGeT(_d|&$(apiN6jnP0!!tMq?yNIxLpRE;uE)x(QE2X zgN?UKHi<kqWZWqvwQgIgadwI9&TXFCC|v1SWunopp0BhGc&#+HYRG4XHj2PJDI52e zRDobnw1&u{#{K+oxTs+90E?9+^X5V{N3kd!mZ-lHHohTu2-F{HuYCq&3gRBj-^lr@ zPnIjY5pCGca~O7{(kZXDl=<{f7?*T1Axb54Cty&5^d4qmGHUn1y8n$IgE5Q6kK=Nm zux^8apj`+fQ~6m{|A<Lzy)}g}xh_<X$_%zWuK^4h?e&XjchL8WvI-H&f!qu}Om1>_ z2x_p(4yLA2=*SgqK8~7|rlvXSLQ|nTQZ??^tOk%yHzhrlmmZ=io=#!75lqoXlOSQU zt9(-yx5&{wO?|B4mNqLLrGXgihHeQak<ABUb}NtZs(?>8OXx2LiOAYl^6pYx9a+tL z&TU%1al_l=Nw83D^MjS<Vx>Giln%PEaMaWh(=g8~u;$0lZ`^97w!ox|MdJ^6Ua`&@ zd#E(V>_2<X@@rX15i~dNnJ>3@e>!r<kIT)Nkp9>05p7m{FfqB=>kGT~X!#Wp%1$+u zTAx$C?wLYK@w}_`yOXDWto6M7&aJJiZ^3+=IYVuxle^58pc$r?$~{P*S8?+gx>7$A z+dF;L0I)O|Y6iWg#kc^l<RJ@4L_M_BpTEj38W5JuzJ3g4nVH*6Y83fTq@^k_bZE;N zkdrKL!&VB#&t-(yzBCAL!%8*gFz_c<s7uVVGz9_`$W$1OOf^Q#jLglmTS)K(u4$3s z^DOG4nwba(mw$}Fk9w=PPY{L9@cf<_0>1{^NAud`P{N~Pp~k*u&@YI(u+{?HD`1%s zEroy#f;!b2zQKl<Yr1M)-w+S?AXs$#p5v;2V>R;-x&(awx&K=)GasRQ{<UBdt9%*I zL-iAw<#-x2WPXcT=eKYbtz9U?>H36}*~Cv55Nn;`i(_T$F$V95m^*Ce)wkv3I#S*E zjpw=F0-;%onBA?nS<LPX2Ck@4bHvNgfjJfSR3bVsd+jNM*3*m!IZZ_lqF%2sjSM)G zkd~bW8&((AXWAH5d@R#p3~I!y??k<ruDZr&PpPm5Cy$=PTGXQE=&&rH5=1p9=?A;t z!I+k?tsBCnuxIADNXBccuXK$Jt=JhB6683$_U5VRBlU}wKXQd^|InaFcf`@Hg(HSq zpD&uX(E5<1&HZHU(4qZ$E`65JXR;QU=b)ucoqk>Bu43r9`pAJKVE<9T(~Os6IG%>J zAl7X8C!P#uvhl+}C2mMCfHl~#E-EZXs=o!B>!lrXA_kZ`L9kpzJ{Q(8B$~R>jC6G5 z2!}1Ll7TK*^J=%q@Jyxb%~e;sIYWivVfG;B>9w~{u>BIh+=@GXp+OF}dC#&RHchEC zDX-4{bluRQ{d+9m&bL~=j95RY)35WqRk$C~l|Ko0!FzGY_C)FWgBo_owGI!&8Nop$ zmRXA!qM*jMP^qYg(6StY4p}6JMDbY*0?QVFMfu2BF&N#8)WcS*FVOfDc_87gsEFw| z---@hacA13bA1DI!!B+=^nG;H{^EHesr0n5nb$p~G&{U))ZT)Eox|rJIIw*FIt$4n zZ%R6}Kq#tqGGGP7@J<8l{LsY*j~e3C5R>$=betdC)LeHQcB5N9J5K$<0X>{rrI&n+ z%Q@ET0I0{s@TX~-3j}}hiTKDG74HVx1MDYZ_50PT_*AHc2EFhGE-1fe{R1XRn>Azz z$;uB$*6ZDK`EI51U(gsDKBpF@xNteg+aqYgLrd4m)?n5G7Fl&U#0nNAsNX@C*94MH z@_{-mB$feC7{Gby66$Uk4*L8gI96u}F$@a~Q&i(xdC?uk;6+{(6k8^z5%ytnHAn_I zlZl6hY3(5%SpNlGrz@}mON%*>%S4s|kE{(Yus+WJ0{FpN_le4|XtKkmOo;2((u@09 z**fxlzjsMgne7e#<hOVFus=(SljuQdr<qF2k4XUkxIXQiONCuhv-_WG_@8SpGffeQ z&X@af=QB)uRSNR7rba=ZKFtVVDL(X(mP0bIuR=VWv1cS^K<w$QE#waL+6;Ouq>Qzf z2D$K<Tn0oP=$@RNoS)n!xiFd0o#E?r;ATeCWKL5|5i!7UNfOT?)`PXfoM;A%a)~VR z>tgLaScn*n*hDdno>bcV`Gstl)pw3Kd4OAXoD%`BI%6wotd#VaZ5ujd?}I#YNmSaQ zL)>L@v2(kbD+#(#m%l4*x1v+>uM{n)@4qb(^G<+P85&k>WoGrw3{zaov`M8B*X0_O zYQhApsXfWUlPv8?2A=RfCd_+C!xP?%6&NTedCYO9KtiDlHKsd(j(VpDbkvnPGg~pS z>ek8WSs9GOGSjl~jWH7JSft%p-VKC-Z>n|5#LwOkgbJ}`tun3GJQX%7tXZ-w!Ww&J z>5}E_+cDlMbIjh@06(k$h;9@1$0$2>0AbQt60%?3n6l@k%bQZrD|0dHmAPe3UT#kJ z!rdz>F6aQnwDKXWJBAaDL~ZxdCs-ev{VrQ6H#i>ayoJk&I|Vxk9lISN{w%<i@88A0 z(0`);0{`{?d;J0I(Dw`S-9bRmoq!c&!x?@YPRA@gunWF4bUE&x7hsN7y_w2Ob)`Dj zY_CLIvt6G;wmdIKSNpkGdEP-<DE}ticifGR-mqTTL1L7zNQ^YaMYou5>^|`7l%vnD zTz<sNZjl8Q(_>IEovz^ox#-bKq&1{~Y>H-npIW*Hfg)DbM|&glOx&jHUJXy@feBoN z1l_CE(wT%|E*O|!%Z^Aa<L)iW1s7<Qd+8Y|-?tpRJjCAr>Av%wxsHQlCeF4;9O%?K zAozu^*7)W6P3T*=%pN>^YCCdF=-IY?zrLLY&zw^@JwJMQ^TG4xjqEXaV3$q>0^%$c zFcAg|4qii9@ZV}EwJmG5uD6B~^0tIl?Z6H5=!q4SX{;l93Yvkd6_n)NBHQ|u`pL>j zGx@oR5=XjsukWe*#v3GoRwtfs$UDtJ`}&~$I;^W2<}Ps^z%5#BAzIV{pJ#9c#UKJ2 zvO-)7FT`a?xd`0~5%tjxfd8M0RC7UYr<&?d7spK?r$uFUpYB5^F9;3WKXcg3Tw2g| z$kK58uzn*3kR4=Rj`C&g4P&NnoH?{}e=>P^|M3(_Cu+*TPPz$ksH;dpY&b%#UcgwG zaBnP?E9-x33@k&c7Otx>RyStY6*g%o%18foXdjhzyuu?@fF#w>%uIaHx}yK?d$oqH znlL>q{Q0rd7KQq!5K7uC%m}cF0sY&wnw=jQ&_{@?XFj`q+>UY6b{?GF^!^{p#STpx z*UoI!rO(zDjaqws5?X|Fdb~oLM<}#iY2FA^zxtL1Caqczf(+u0u2%dTkcUbzdL7f> zJpuIddXUg2&~FNEVK^-KOw(YM8@SV;{qveTA=j`mr)@6!{$oh1j(XHt1Fy@0HFzir zR;zA)Gz*HRR{bpmZ`F147QplRcczM<s$ki%cs06IvLERX$Da0W{DMzCTx*ZG(6EJn z(1G_CO|nnvJ8+Xd{OR1*gNqsm4ewg8xZ3b;J(kh-a~s7CZ$4z!tRX9#L>D$Gd}fwX zz5S4Zod;&e4IsB$4;)a`8-5-&<yQVh`(VcrKq!0r9q=t``_<-t$ux``=@k7A_)u2{ zd<n1G3yU}Cn>S$NMn2)pfuN__?f{A=#g!;9hWF|hrkbh$uyv#7godA*Ja9??27#yj zb~eODT5ajFpn3?kJl(PFqNIetfC4gY`tAwS4vy~MpmDG3_v#Q^j~3nQb?QB!Q@a*T zJK#Rgr+4U8-V-(2SDAnrX*x4QReAKH=Z1|oWUW#0F4Tmerz68#jP>Cy{sFe|Nu>ZQ z%aTI{%Y^~VfkXRuI^fLufW7#p|0Je)A2SMdsAjef*6&e`uL?PyL;Yy6=!q(&U)nrf zd(gh9CH)nNDVLH09O@fNdvg$as%DuQB3idj<<1(g32JD4this!2I|$YyR*vNS%ysm z`NCL}Ni4e>C`CD&t_!;y*N`_INf!B^Aw8iFAVHipt+F8S0VS=fo?;(tYBn<;GC1ox znJ)4ADBx_C0%U#}&foce$b0X=D5@@Qc<#*XZW2fcDI_73gpx=NkYrQnQUvM9gVI5I z4<#T-Z_)&$DGH$mR9aX8L2OtM6&s2LBaamo6nL;A+1c-R&YhXe#`wO^TfTq3kLB)W zX3w6v<=k`6J?+LNQ|bpMX<mB-|B3I2(vgk*%%nK2>MxJCXg@yE<%;OLZ~yVwh=*^_ zALr{HUh`JlN}+c)=z4cWwfZkx>kJW1{p}{a5*@p5<HSo#BdctF%=k8H*W5)Hs_N0( z<}baFsOw_f_R4EcM7Qr<EvC8l#G-*42Hrid@9FVP2IkyTtI;F(RowBS8dY*<*xnK2 z=5?OiW87SI%#_C;n^xt)-Mi+{>==ks<?lp~#~|}$o=;67sR@)0?|j+$tQ4_2pZSD! zVH@6vgjj1zx>1Gw<b0L*gS<(cJ0nOP4l$OP1G))ahpvgDX#-_R<=VpPIi5JFwN!0z z$7>HivDYO+E2NkBmhaIPv^d(_-?KvavX%V~uBaaCQo~kH-Seeb``RT{{ql|0xj8pQ z)vGUxjs8nGODc5i(YNzH%6p(;`mVF8fh5-|JpTgvG1p=2Y*SzjsV=irAd1}bs^ykh z`PFQ0OU<-hO=`$cy&A#fS3%+MQMB5T6%EZKD|HQ|uxDOKd@s&ZJB8!rQfiy0A=FM5 zVg`<SdU56J_r}DWTD5FkY<#G$)zQ<FT&@an@rRx<Mu~}U^9l6t7z@??{ysSEY2e{m zb5GZ;eq`y2>`ZT3LRO15tru+Ei?inouvtT1F~wEMMH$)4@szOI$Gp(Gu;fmb5$ui4 z|C*=7cNZVTN!&BPR^RXJk5rS}sc-mmko2^x`i$`3;jfQ+wFV!0$E~1V_t+jBbkZq0 zm}_HESoyVavyEpCMO8T25TrvhSRGn+Xt|^_j~MmHP_GE}?wp}E?d*S5?7dU1=l{g5 zlnfCUg%RaHPJ9vl#Cfir^`XizE3~@izv!o+*fw97D6LPa8K7$TT=dS|Q0?A(OV+7d z?lOA^r;-bQJwN5(1eew;f=h?NR@cd=N?RRfWP~{*nINsrlck#=(apK{hQQ;<NK9!S zi2%vAs=>HTCP(PNTf8N@t@)sTmFPQ+BbV=aR)oDH(o<q%yC0vgKdi0zdG)kw@X_vj z`%4k>@r*ei&4Tby>NQ&vK6}+2=fVdmPc7Eqi<E2t^WI?|B(C7lZ24+xw8tTCKrTym z7^&?V%Ujwi|L7Kb*!VNGYD8G2-HQtU?htE~e6gWV@8t#T4y*AB_$>OC@^IBcM%q&S z9k!X!|5%5ml-tL?1R-}Cu*fH*CD3A+upJ-1Aqm*-zejJK@#eH(_(Bsnej3B!Z~&yi z3Q}##Etkn3u*A?9@ya3hU&t(yjInBS@<gOsdEuxrGb>g3)pxbOXuth~xY(_a7)7GO z!Lw0rcP--&<7W)rV@o3LU!EAZZREy7FeBYwH+%AG?~+;dk{?A*5tXA!7N8G2n16kI z6=Y_>3giMPIeyT#J!lHD6iQ4!REE)omf?O@OeajL*qcBI)lxmG;rE?xp{{8qM7Dpa zT4!ZwEz#F_T3;=0PZO)vHEr4wRsE$Gi;eC$)TuJNF7l?|hwO>SI*hbnaTL%dDn)l} z*tTMv*EMj^;L5`~EJ0G@>iU=3-R@CJIDR*ROpu6Qgz^eO5}q`iS>vhcN%OS!^zaPv zAeAx5F3cg$K{o~6GtP9aES(i9!wnt2ko3EVnh|Lcts{Cw42i(+pxci`wl#Pa5{<Hy zXYL&9rpMLR?yj<T`izG{Gs8ySKWtgFv9;yG4A<fNC*}?9-luPuXFpL?|J`~~V2FDJ z*4TKQDTP|f3LcmB)2L>oe?*#kh#(GaJ=HkMQR8sdrlH<(2quFgdYekYK^@2$$2sNE zg4mj|X|b(id&CZjMGFwX5swzcQwwAaEF=+Vjv=eoKzgn$4YBe&D-UXwI;uug|5{BV z``uY3xo1+9{<ZtHdnd=$v2FKm6^4Yi>>AN3VvL9p=P4f?@$ePy`102lE9>!p!_8UL zmfYN--LbhRf|g3T`Hkv>y&~MZzp~o5i+_W7r@b2Mzv_-JNf+0I|4;w>;GReIGgw>F zu!9OCFHDOfpfM3ptI_G1QlaVMURTj8D*P^WxtwDh;0Q~H%aX4^0tfDuj!n5lg^12D zK!!1KfE-diIH?Eajh=6HExg=UeYeX?ZC!=`K6yfj(c(>k8cxz**DAQ1at)D_0>_+a zaJ!}BvlFo5utnLb2P*6$=bzTD9xmtsRTsN7;am86A!@>dUm(s3J`Iw5Fz%r>L(@WA zhxP~^66&V8lbY(OT{qoTJ2hRa(6jJze-Yo!xYlBRNBwni^2DV(>C~vt^>6g5?hU9< z3|Vx7YLdVil<+|AKcZ6?_0K=nizgoT;*bZAgg7V{G|O`<*lEeE9n`tBNlML%tAcs1 zMfTkL9o6$vrK~{}Dy^#%p8R@JVW|EMRe1a$cX;b=9@VQxU5;%?vK(r!HFrOP+E-In z|DV)eYSW^F^=OB~UJ45xL<(A*CIaPIWmx*sijYazX~%*w!x^}Xq`}q5ioso<g&aX- z#z@7c!7<-t8<U$0J+gadT%CVajcQ*bJ+gPRq(=4XSL>L_jr~GA->O^Xdvu{q3~7H~ zQoZD%#3`X`)qcYnh#o|2{$n(pwTEL3LC_us!3QLaYA<<P`{z>B=0ewN#(E@6LENUv zO-C>{g=WB-JO4d5^+ifn8u?GG6i#oIL9~_s&Pr1;Y09wD{_Wn$E#;)gi0@DxztwWx zmr=)Rq`k0s>3_%UEi$Cc;fXk#$3da+foI-%q)O?{vh3bdN~j*9)ZCaolcy{V%?KMh zZ0P*xAH#FzMpW|E3-9u5M5UKQU5AH`pES5j?|V8&_H#$}=o6;abHz=b5tl~R{mtsb z>RYZ8nn#>1_q^y>5D>xrSLaFtZXdLJ3ZFk+i}6LurJThW2(Wx6&*OOJYp!EBqq?^9 znJht)kW2P!dgeLxF-<V8I!;{dy<_2;23+4!{nfe*lOUhRsuaQnC36&6(<H_x)phDQ zhE8!l*_NoQ6C7xJ5xkXe<19ClEn~{cmV}ms^8XXrQpKrCe5{hEHf4X+Ng^hPkUClV z=61$=@2`4qs;Z88OSsp+^_`me`ZN2CuTR15F#P1aQ=;Ns;)T!uSRve73&s5+e%-B4 zPhWh`SoT%xM}C`s;SF#i)ZP_=+E<32sgo~6o{t9BY@Kz$Hbtuyw%iV5p)=GHf?`mZ zJMyY<rAez4#U~939NprmI$Tz~YS-oG@>G4|o5q@l&P~<SiDwN_GW7VI-Nuh6qcwHt zvAL`Me5qc|*cC$EwNp$KQ4cROZtvP>JZ@ZDqwQG#+uXN}HD7h!@cX<?;*R66atmb% zx8*fhyoUH9%4TD?+F*}Fv_=_Fh%Gvs0^!AJkV&n?i&tt|uyM35LP^0O(MVDP)FGt` zj}1IX-EkzGco8Uu<W6}VjgoEJ#;+H-^$1Vh_eA23cmLEgFP!+=*wfq-uBy}CUjERP z4qc62A>#7ZJ_E%n5xVQXdsEJdp1!Z2fBHq^VdJwpJ$i5Yb77AT;z?xVrtu1QRm6Bv z+;}HnxU>XA#7Z>fU^Y)!ZMA*ZV3Ke$d-#6Uax&PuI8>e(e(<10TVux5Mnk6c`n{fE zj2|fn?(LE_551G8s^i}B4?aGp$S6K4tWm4p#4wUYNPRhWqec9~tBhZF?84anrnw*g zW#Lt0&}ZhzEudDBuNcl4fsQX8tqS8@y|i)#?QE=8*;I%PiDSD+78ZvXYVID1`gEMC zhSMAA5WZ9_YW@6T@`fvG!@`DLFh1Tl;EG6pQZ#-)IV?7|mjAe`NG!bZ*d}9_aecey zn*G=F`$R)u%Q;g|TvS0}NEN4U#;Q|pj^47nTW5~m(%yFF=taK3Eb(sU^9Gy%wkGTC zk7YpC5=uL)mVf9w;Qc$m7wX8|z>2K0PjPxE_|$mmz)+dDe9&q;>}l|jBh9!kjz8e_ zgD`K~%9P3pZ)q=w{m<hiPr1}(qeey~Y}l~ZU&mWz-KAOkj>kvL$oHR9Z`2aM-SbGd zWn0f|7t@}b_}u1x2Zk7T!(#uSv0M8IeNz<~Tij-xEmB4k_v8H-D(=%%P9Per^o5uP zQI;$2lHWs?g+0URtN@C2<ni}ajW^S}QW8PIN-FHaQ?tMo6(|WHm1(>E6+$#`i2t`W z@Aj)w^{{cR;DtBh4jubabWBbD;EOwT`2UIKMv6ZD+~O_QmyT&LK&T&{`cxCuFvNii z#&Kkul37JZ{gXw^8i{gun@%MU$)T`(vJi@0G)%<EFG^~bBBWIb=kPBII-rB<Da9yq zW<-0mp)ZEKoDGMtV=nDh_mW8U&l6oTIS5eHM&{Zl^`v{z=kFT@dM$l5PLdn$ORSj$ zlnVBO+~<}uAjtFGBiKEaZDafw7=u&Cft{Q)Sx)6>_#@@`Y9vyqFsza?fh!CGm{q#R zjsDK^)`?1m_Jfkf%|53Vd;C3)Zo9VPnb?GlM)9FH57b=s_7>q<8xz^7$Gj;=CX2J` zYhM4MO{yqZvD?`5uBzrY9IuLFB70+g$8O@T;gFRY>1VZp?p2VLYT;CY|8-eOO1mr; z9hW;w>{YQFmL_C`qB&ZK`$v*WMW>=fa%CthKxIi`IC$@w5nC`};)9`?75WXh@4?ui zl?OVvp|v~LsWPCpYwP_}r`_M}-ab9Pv-YBuaw{Xa0=^l>4xE!P1eUD?pD=SYL6^u1 z1i5QLZ^P^MPH$JQu|vE>JhEHhy1P&>09Qy=p7IIF`9V$9OwJ$V&=wStXfsS(JxIP! z@KkfmFkh_9caF2&hQyNL1Uqrk6~%7HN6-ohHtWbMNOlzG(t>##Bnl)a*K!lnrG*kx zvr0OwD)J;PS5{UuHW+5IHP<Eoz+Nx*ee6vH4<Mgi{SW$`9;9ya_<QzI2ZZ<w2dYK4 zuXVlj{Kt2nGJcb}?J5g#XcH2x{UPeAqB1NoUjHwVB0{efAygyqF=bubN`3tV;&sVu z!L2m%S$Wmzluqy^ULP@ygXTz?l+k*ll0$8@z9mH-?P2}CzlOMWkX6cf*65;a27QJj zUquDe!{3~FypN$%-yF=BqE%UMgV<DXS(8`6gs?fex^H1x>zJnX$2?NK&Wu+NJRjRE zYRj7UAkzk(G<NGqJ*c?Vu8rvWBh2;`%yzfhU8m~<#&PXW{=VBMBm+0Wy74X64Y%6m zXS(*G<z4yv-f?uD0!cLi9xrZn<SDwoH}I48sp~b>tyKMsuIqw>|6AXM??;5tbt=3D z>+<*2{J0iarM2q7=TYybZ1sTv^@3=L^Q7FArMvVR82Orf*G0CTi)*-qqsDn~Z>Q@N zy2h{eoD9Qrf}k*BEm5zh;JH-Gvh)U}JGU&KJc3EEvQerkr!CJHmPC2bq1^}yutuWu z2**^1bU|lZ*EOyC<fjKRP13-FNy8K;<f$7NDG}d))D}dt?>Lt05mQo@^)x<gKR<JR z%EwQgeZW|%zWYp-#G8j^j_I2&_N;#JVGaDdYsb5Uk?&7Zzx(3z)5fzAg=-2=vmZcp z^zbL>;Y3)m2l(9bq$(^8)iH<R-$FEL&s^B~9F|cS39a1QW`1#pGMZM)VB1YIoa5<s zCt==2!HbIAM-Tulmq@|+Bc)l7QrU~7^CCMZs^=Bs&*N1Rmir$${(`QCH>`Ei@Nb#D zGH!+lUoWESRSeTYcNEP1VqRqUX5%v)<5_dS0}mZsw@vhTLtK8ROIO2x)_7rGyQZzw z@D~@hYToL_^FHI_)e8!UbBzbx4F=uG+>IXT{eWGqWx3)lm9?7M%nFujr@jJgC&+1x zb2moOP|<QkE~Xg2+Hj^NOBKrj*kb6%KJmEkefrY;na_-HsnA~;FNw}EC)S=eK5tMl zOx2#>@rp=l7!eu!^O>ch;g?g#y*;mE$J)kE#>-mEM-LcZU2WH@<-rT0+E={?fi9OR zsvZL=wXC0mwaF}9cZt73WO0PYmd!-3S1LK2t=(1fi%09`TJzU**8^VkR7?2meF+;= zEbN+)JEUC`tb?TcFi9Ul$FSKd6QUgMMpATpDsf82iu^$v94CVYzYfyk3pbww3ym8& zSyOk$#gW#BIulewUFn77e?D=`do!jTsF&IZcB$!I-kiSiP(@XQHPV|e9<=o89sT0= z&UyTY^f)zooAJk@k%JDp6@UKNywk^;wQV_Z((xfXW*CuE7TkD$5OHM0_i7hly-h@3 z>2Sxn^}Khn%xE0kMKjwu2{aC`@kK>&%n*bZ2ZdlRqo(P+Sexe%+s2rfD&n=}7wTuF z{JH(n)6rEP5)}$}KO2!5v1QdO#`S9YzU0SOKXLlhPM?_j>G^$Yj~cJ~J0CcU@wgk5 z+XCYejotAmU!vR{Lr4h2c$l_7rdO-dmhq7(!8SZ-3J36q@JA6m0G;Cjx(*%>wkYE` z9&Sih2AvE5cNDn?%i@zYRF8Vk)TdIWdW}Cak~*E8QE)^J)tZV*#_yr3yTyXR^WW>x zKX&`veb*c6-KUOKAO1@@IAHYmueWJ|^Yg?V{?{{d#+@2Edy2TdXsvPcYnq|WjIP?x z7?JAmgPiZH(>RUzXC2bmN)<^^Bbn%|7PEeUJR67ttz-f4ppGRBP!l-vOF7Pob=cEs z+ZOCSiw?k<Lu6KC0TYX4*{<OIH4!L!qW9D%QyMismJ(2o?phhQc<qia>elRZrnFCf zL!Ugda_PHm?~U0u@5vht^zL~R&fdO!@vn}JT0`VNxplzEpsqRo-r_uQb;Ua4+9m3l zTu^{O&qToUsDm#?=5B}QmZ!X)v1VY9OpW$A0xlt3qJ4DGEn5wv>R|VR=3t7YHl~Ab zRdvDMcS78~9zQ>O)7kjMRicXVl-g_k(5Y{4sun5qUXKh}es!(h{p%AC8o$1ie+tp2 z4}RhAJf>*y>~B{LZ9e|spu@)dsCVEuW2p8e>KzM@vpipf<hkG^Rn2+_u@NR)Yecyb z)`(gR1_u+7wgeeA*}Vol#pxjt?8Qp*v*amc1o1d|N-0Z;k{o5y;rgS!LaU$H>Ge61 zqcn7HSheKp9sT3>JvjUArIMcv8|Xjby7<ble92Fay}NC?;m(`$glLKp>Wr2W?Z!Y} znCMH8u?-0%Zb{l@g^$%Z<|@`j5bZi#%1Pw|p^iR+L|y2Hf@Irh=^T$#VhF3J@l46g zfYpyVrg;QT-^QZy3wcl7QLm}t_m1uSM*g_Rx`j1zKeB4^yLa}F-7#mu+Y8kiw?*cJ zaj*Q9qIT*xV)U!CTDO>R<n4JA#qIg)_Zsh^g&E+NFQbJC7|RL1L^+n=LRRz!kC@dc zYyI@qkSPFaq#aGG(YgkNc!zR?CY^(I`r;%kmRtvG;urvy+i8uZpcP(P<C>w38rB9G z10Y^r_*}2pu==9jOVf6BjILDjA1%C6c$Gu*o_;d^@p_NmZl!+a2@i|f5WD8LWo^C@ zS$Xfwy(hfQJ@>5KC6+W?qc{5Yh2+j1@)prtOE>P;uA!aPAsx;4)soT?T*m+3;zAC- zOC91kSwqfJ;zHoO!CZ*leoWsebCAJ}nFrN1o-J5Y%7V5Q!ucm6^S1GG*z$*#zT4(L zFrYc7AJn@~84m{Z>0heaHp5~;m)>aA{H|*v(%<XEnMG5G|Lip0fyAu*hK~8xbrdp3 z><19Pl{S#cYd|)pND!|w&sQTWn>a1baH>cL8{*VEN%cXV4Hiu>leUiI^hHA<1VWFM zABp@y{ovqMzGV4jL-{2<A{?$~OdsS1h0PsLaxyPSyEiO~?$j!XU;@ct>58sWQ^o#I z%A9WT$kt=A2_H{L?_W7;*W@t^D@X5MAiB;&RLS}+9UeII^SiGarz$LO@?doI<NYJj z@6eXi9$mT8;9i|)d1H1g*}1A?hq<FBJhb5cS=0I&BbWHZYnxAQeA25vE;fe`s55lZ zghg80)*W-)_f_rLzw_|!^PnYx-#TZN4p)ZRdo^0Ff`U(NP8S}=EDotN9FhlZ%FB2R zV(SfOXPB9weMR5H6dppV0~h-Z!sr6;nYwB>V_|PjNqyg*kbR>whl{!D(gzHjadEpz zc81#5|NM0D>iyUXsn}OVLe5y}6Eg2Q&_|hL$?VyZkF9$0SXv8?FOri3m6Jp$$ji}J znZaPm3JT_cMB?BLz9=ivkm&+RVc5KDcSQ@=-Tu=9)b%0$tQN-I#-Hs)6SWIzeJ1u% zTlz=N^50O~_<#3`{>EOhPW5|@nwM3dzdPnOSpdhPjTNyX4fbi$KM0oDShI~xqE;I% zG0LY(kqOSNmE>PIZN3tcJO^#9;o<72K864XAkvlxuB_P1X)M2{qzbn;^}`oltBPFn zml}EB8~zEh%_nSyGWVP3kZ0Z~(Wd#&ZdkJD33&Z$N=)FmK2d*>{cRd4<9zj`L<H|m z1SR0ThFR;NXnA`u5@X0E*H?`{ijV`?v2pR$m0zZWaAIL_++eoDdl@)9)k^iGW~H=N zX^Dx;iWBZQ0eJ_z8-b=^g`qP5v`;cBgjJ$^^zUsSKR0(%f0rw<zG(3NGvnvvmQ?d} zQr{i8>jaY2*VOKH*YjugU(0#wBlM6yLxv7si3IiiH;SXPp6*(Rob^-Ii;_!EjL}Aq zHjLsUVs!7WB~SE1()vDf?DVY|yJ(!#@UTyl=QLpKEE`b}uL)8^m8%*B<KcV<(HP5U zjHP3m`C{Z(F+q82z?3kzilRyGrgs?Sai<E+HX32F4O0*ZpL*#b?P;>UX}~6#Tzu2L zo&oi|_0^Jk-qgM&t<~FUewQ}7WDBLD(?)x5;2-vc6-et~bm7eWG1!^A9C7ychMZVN zQ0tgxElJ6uS>m8Uk;(A#0WnnK57by{slhb`s!d@#SYy<ltN|LkzIrA9F)Mff$2E=^ zU7!rwy19F46wd9GgQu`6+=-K7qSa&2t03_zMyNaNCtqP_T3Jbk_B~l<-AX18Ah{X@ z?NF`Nz&y`r4*72c#VAEl|2ktmi?Ek<&@eb5&ZQ&+3&-8mfEEFK9vWc`1>E$arI`hP z&zw^jviAY8c=^ZkLR}GwHP09q_boPdOckwfh>1<AMMu^Ay3p7+Neoio^r}bH8O1C5 z^x65W@$r*FebYZt^b!%<Cy&|py5?W{|BE(q?tbla>^EyFGknpeExDRQS7`}(rNjoB zv`&-vrB#D7UnP30S%osJ71az{!{CWS`%oH8hvJu}QvCafVZ_z|<cWNxtOJmV5>r!B zz(<iP(VAfDd&c&jy^8batf}CRc)<HWMb$NJ{0e`g2fSbG4cUiGZep-Y7%dk+ykJ(> zd;E8+$2+zkmnYN@9`Sc^3GbV4VxFCbf3FH!t)$%N6OOYGcr~_cd=}&IRSIKXffNf4 zHUY0As5OeP{KAXH;kHlfFePx3Y#|GbfHSbBYb$TA_pUd74iPc;`U4(4*W>r!dqe9{ zazyLl6~7_Mp3n7Z9QaAia}7rCFZ0DYEcx8QR@bxmWL;R};Hz1cyEeGPX{%o*XcFO) z=xI!_s=*Ts<_b7+BGMGOe%TcVDnT9%NKY(qV?jW4KFv2Oa1@5MC|MnAJl8?TA>Gw_ zsf}AdjYGQIz-p9>SU02``q^`%xoEG>Hl}3RCv=OMUU5&BsACjo83&<{JpsOv=xGCe zY+Wd3JW6|bK(+>-XW@b+4H}S&#q1GbLbtM^^TjWK4rNtHco0lO8>Rp%hreU2<bWOo zL%8+)LQz?Cx1Mh^tq2EnJ-Br<G<=E1DPM}#b}R0&vFsKz@XRV@S`kys3SS$3zJ*7; zE;5x%;Hry__WA|ryHg-rBREu<CB6>)f%{~g_Hi%OGkd93X`5KfL%n47fC){#B%$-g zU$U2w@WO0~2}8XkVG2ZOIT#~lyG>|nH=w!Q-&4Dlg{Vz2*Q=4NSKw+X7M?*=FPDi0 z(CU5<)k{L>D|=<Vklw=WfO*P8^^!0Jf#c<13~@kz!Q%mFs#jnm*NZ&(d-AB#u`?c} zP%J1NRhE*R{WTLinlC;7!ZXv&-kl}-STw*BjG*hA&y>(K))G2j%`6AHK@fCX8@fQW zF9*6&5OggYx=`FBhX1W54TGQ)Bs8^N)DnF#DyxudBAQ1f$868a(mu4AT#SiDLer>7 z=zO(fDYWgG6dMFh<0GL9#J@_RZQOA|&_p+Y<{GB+_#iVsYM74ukjgPW`EW$dpm_|l zSOxR9vCug@?G}LPAX}k89cJ|fhcgimwEBXfT>%?9Up!t8wAIfN`ez%uKzXVh=(N(B z=(_728@f<A0d1VgqwJbAE``?KcfBs5d9JXf3MZaWdtz)XyG3<8)8r90mW<+}9PnL? zBEg?_6K6#Gk>%iZr8ux1_uComwIh0W+`o(NgGWqa9+3l^)hV}v`<>1HdK1uQEm_e- z{Z-ejB}2Om8#-SsEeAR!2>K@*x<J`j4)h&C(8R@16X*@bO$Ezi8{25t72JJT)-Nz4 z@S{~f<`q;wi&wxRr+QsKn9yz|zv+)e9}Z4I5E-tIZF~iRw&mcnI7NFvk8vH6&@?K6 znt>ltEBIsUF4x<*-<xYysGP(O(d;!_ahGVetS$QZCQ})Xf1uS$IU6u6XkM+HeJr8< zz%8Nk#gcNMtv;5}S8eD5WyAjzn(8fa7b?3->uuL0HK^XNN@yC9DF)g;6|K3>GpwK4 zny)ZkX4{$XQEL)R91P8Em(clQTPZZ_-3hvC5H!s&30<HZD229hR||rsIRj{(Gb`Cz zd(h~j{lL#0#5K$p_m^U^X~yJD0SQf508OpzK^9+<FdDlr<F1r2@`Ov=ZORNzUUR{P zTzV$2$wO`F3_6xV?73<38pfFJiLx>7RQ?d{O^nw1O0)N(>%5I|r&5574`nej&w&2r zgpsc&LLyCoR&BB`j!#9V=mYYss3@gxt_7__v<b8}P<&xY-;|udnN|d1HN?EAG+$Mz z>!_OM+)??e#gUB~URZIgA&aX5r7ASYq)sDeXUJg?#q~J7_nb&iod!+Xg|%wazHMlw zhg<aWcmJ`47S>k8mt0a;J*hSyIH+ERP*a;W=+k!mm<D3M(am*O{MA$Zs4d2>Db~o> zo`z1fDWZs;w3}1!Z^5Z#u?%Y4KQ$*t#!*+7F{{<nj!v#VzdAfc(yF({2gRQ{Tnl}5 ztJgv^+k{uFTdi)xx-IH<tvj$ThjtukR_YR0R6X)YR_SHAost40P%8CL9ZDhuRS4NA zX{X{LmrGCGDqcv(@XB;o(Nh1`X*pV4pYI=9zAGj{BwrGudhEtk%ZsadtCbWK7R3$s zxIz(Bx9sM>8sB`&xD_9@IH*s@jjh)+Z}fEW<h(5hTm?(FJTgOFRdnhJ|BLN2GeVQq zr3;WPe8Ym_%Q2%DLz21RA=w1-Bdx1y7NiaEO}N2XoWC7r{Sg;&C9EI3_D%tx0Ziqz zqGWSEN<1XBNIV6i<3HdbekJh~C=31p53S)6&o0==t@>Cix2(^88_zD0YvZw26j`4Z zHlFRGD||s@yDT0j@qB0F*-qASvt6~#c7eO-uX<7ea|gG5yYh>ixsW?*m@tDNJvG1% zIE7X$th>+Y`L5OITl%e!`3PiS^jn^&DESDa>Wb!XX;ppMRS5iY4bD>@MGa6-#3<Eq z)WOHxL*m(~7_tt)W9~{6!t=W80~^myWd(GC5|7nhSsz-HC7xa4RY+oh0Uk?QldJpz z8_zD$9W9Y~SQf%=xF2|r54@*_vd$N6dhmf1Xex4Y5sT*psePFnk)^*z0_&=4z-g-n zw*71AEe&r+57&5!Og_#%GyF-^(n(f?@Eth6IsIpmi^Sm?$GgvDPwle&$xGX6^5N3X z`<qYKQbJmmnQorJqy4q~+Q5*K&nBv`s^|S9yg?HxH~%hIk=MTlB7u@)9M(>OJ2iwY zW2wWI(HNXJMfQR%J2|<NuPG<BDrySjR@2r^(Nc$<nUq&S#w~{RCCZ<q1lilkMBS*g zS1gkkd&5>z9ckJ;W&0t^9bIYzdu!42_r!$6Z~OGYJ<mmGp(WQUM1)s4yztcKI!$xj z!7MytT<(33|I%E&sD)REdNgLee^s;f#<H6))NI|nPv5osg}S*~c8ccY>I3^n=ncPr zF1%Bx8EdSWz_UnF-gZ&RreJHwC@GItT{#oBE05b0Y|ZK|;8wRh#AO=rj4BX=ZSG)6 zMakqB;36*5MZzfCC3k@HgC(C!JT$8%o}Jh=mE{f+&-*r>oytbZ9e}5aIWr|5;#LyR zE;Zh+kF|4<c!*oc`s@<@?D}{uJjM|H7VqMLhd78h9H@_e<KMb7t>3EYVku@FW+Up5 zZvK{bt{r&)i!d#4nF55r+1d-X9n*ZYdYPgLU+^>l#;#`XJSbWbM!0fWvK4mST4mk~ z%N=!L;C1YU0RvguV?H$sQ(>#?S>Tbfd10Vu;LkEJw0r-W`Jcp-7dR>TAMofV9@Iyj z=vrsv$qTd({A%K{U<l9m%>N{woq_$5dK~p3*?y|)c^l8pfH!b0xITfcM!o>w0u1m# z+S~ITNqZx4_fhWqZu0ISvSHFQg`0S#eC94?a%r!!lux}HZnk1!;3s!3IHJVtQ5vg} zB#kOvA&s_iy@vaQ+oN<ByZL?!R*W#@v`E2emON%^oJgkHDrrULE}Q%m)uygj07EXJ z7}r3nzy(VlWO0t9XKP&h8}A?{hT4{9QqaHvWlC>te4rr;ANPC6`^xWut+<c1K%3~M z-ER}dp07M06siFz%h~~fLezzx2LaR5gqb7en0;z#U-}tiwTb*(;9<(`8puGezHN*Z zEBU$jE!_{iMEB)$EqLS~d`=zaYOX{|xtYxt=vUs&($m-Ts%l~o#n!6oe4?^T+~r?D zeGT}krSRC@EcfrjeW}?YZH3hA<g53~RSzEf)+)@if+ZZer^^>l$T^CrH*0^=-x%xa z$u$QaZs{RzQET+T3%t9=Z~1;rzAv9kJVriuyO;^8HRX9*181$@vIZoJ$Qn@oJC;RI z18ZI~4EHI+i070}uGKUij#{#=$$cAm(s|7C#9d+t!63m~J(F7HzHtv=<W4XTUcn*e z*jqA()LBvOC7zukM{-EuvE(p`hd89fvlFMsah*X!mdpV>F2VAp#Iskd1c$81^=VKH z(?5?jFzG$H|0Slq%4g_*Kmk)qanT(TsxRcJBGv|yJG0aQS-M<nzfFClFeX3~jB;C! zBsN8r&Gz>-#_B~plEA|wmdiBzqA^wdfJYL)Wt#N`T7rUbh38UV03JBE3r+GL)UJ9d zAJeM4X#4;z+{*Sy?g>0K+JtC`Htyt}Ku{FbOsyc-3OGqx>rx{~ahtgIlsK1K*hAJH zG00YrN<6d%N<0Ok>ObJ2HIVSQm4d-6uRF0oZ@iPa9<Z=Z=s4?y8X29nP230gCExEF zC_x`IH2&p;#|qUmkc9h<jQ&n|(B$PnU4rM<lKd@exm_el`ax@(nmr<0OMND5xqSrp z8ER=!>S<#L*<ApUZH`ncUKb}DL)5{p!MKkTENG;ZxqSaLHj)l_Xu9?=znyG!bHXdL zlyCU{X{?>9r>4ZuBdd!RG!q;W`eayGK1BSz{VcV*YY$o|wV-4N$l<Xn6eHv+2_9a> zY#}rty2te{V8CyIzfd^^8xruN7c7cpJiJOuJbB_ixk>_$MLSZHvd_koryNGynZy%s zK1<ezbPN*DPI0%S(%|}N*Igglcy=l~aUyLw^<g@dcy=S0zBSE7;Hg&3CsU&JQWHeF zN!ha9A_*e_D6}lOm;+MnJ|f;LaqSgP*tlYgVT|Y5PrWqOp(om_+_Z63Erv=1rW~QH zGB&%SvBuVgS8E0KGM0-5FNM~YqZ*V1)vOCPd`Fl{0(<|VBbW>pMa*49lQ=WEV6)-y zuEJh|JgNRJLX*!NIm(dFT%D|FSM<|~d*-=<1?Gw?a@(ysdtcoC%%^L<cJdXGSbLwV zsHE<rUpEihRt%jKKKtv3wa-iHzWmFd=d`!b%Bj$OTt{?5J!p06)Ng>A+6oYE8?E`Y ztKeLo)`hLlp>J4ELaLE6+7P&aNaap+Du)^%w!q=iT8;vvwdL^1tz`#wC@j)7tx1{P zQ>Be9lJ0tI*1QcBJrVidnH6-`1LM|Tsk=DqxuDign9yJs5_in$(MNsC-=lq-2{X4Z zP;cEn13Gyblejm_un0N8JSk9X$u$}ho@I4_<mCFyMf$-35{5N<pk2hkTQJW6CK~5) zT2_Jr#Sbfix#pI&;+Wb$!brM8aLFkw0bwg^?S>hj`<BGVTE@=>NjJY@MR<W%qE=j& zeDNRD*L;pGbDPpd;AgB!JD9!)o6wjuH0yA5oCU)eS>BWwcY(w5+6EYt3z&EgqBauG zE>X+IW5LLp(OM<(Y!~iQsl%?BDRr0_NoP(Nv1(0XZh&W+TFJm!j7&vtDI{WAk+hz& zUJji>9HigzY#CT4VblW{Q?oa0s_km>DR1DotA}R}p1IhB9wO#i(3S*f?`~QI^0Z%F zC4gQbp|N}NThO)?+)U!849t|#Nlj591q<Zz4~!0sgdXwedkO!h{6U8k#FXQe5-6#V zHpusHT=@c&O{fz6wU+*(3`5d#{C^P_pBahsFw_+B8Ai;lrVjrQR0QhM7PzaSwo*cD zuN+5wf!S}YJR#>YYa}FeRU0~AOa(Nk2%O9sPYDxZ!xUg2^LLD<9K_ErcKv8W7b@$J zYu<dm6=!DcFc|tt*OwBSbmc=5?KY&@ICjJPGtsh9*=?v&jBpU*^^9eUd!UJhY*a@B z<Q?=cqa&RWi~GEfz{<TWa0~ZappUL{A4&aNd*#{E7O@mfePr#!BsBGrgw7Y!WFLWA zEj_!0p+1r@1<ImwFk1U6hUQiSnp!;+t!93)lxiiu1)aH-_8aY9W*Y<5$+Am<x2S#G zsFMks--AaDoXy%p5kzk!Tays9(;HG+BO9N!D<kM-R3pMiJSospp*pn$?a!dm6#wR# zQm9-l9Zlwa&YtRqGkKG_1(z7Qz4Bw}Gg*H{(3S>RLQ@+gbiODo2inrWNN8%0gf38y zmIH0+bQqfJEujmQS4-<{*Tj;3B{a1j(9Dt7bL)qrJ)O8cpPKFYqnu}2@|1+8_DJY_ z@k}YS9kOn%DiWI7BcThFS4yGn8d@?RL-Y6mnrpa&Yd8<%(}w8)=Zp|172|;g^B21} zlYV)29Hc$J$r199vpU6`<4zc#>zWDUR(8%vG9j2|VH<h|G6dxvOMtFuvabefXvxo- zd>>8QP|zt!RtO9W794|Jj`+a7y<{6ojEyJx30YknQP{rf@f1B%juhdv4W)Xt*=1#i z)onW2dCUCWIBi*w)G%&LW6?DzjTvzZI#HVXlDGx;rGp-A*UnnziX)+E#!KiRdbFXf zoi9VX&f3ts#H7;EwxO*Zio~ti(A$;g6w3L_eQ85m^9bBTujnRdTA#4qPO)LF*mrwh zAUO}wg5*<q%2G)Sj=hP5AzC09(85fn1wdGO1qnf|kyv(Ne`E71n}4#r1L?B`D2MXa z)_~7!Y&n{J;t3>U{x_Qaqcv-!L7#tgZH?{!udDUVWVh*Mh>O(vYl8FN2GJJO`kW8f zUT0`zWIt_(F2m|eYb_W9s%y%8`Z7~pfpVs_FWEv({bO+|hNgKcB=k<~{p``Up)H;% zp)pP-^e(ZW9Nd=XWsETx=WAiLBxu%PbPCin*MNy!Lr5<qM=KweVqxizYG}0wvq621 zIWMhZ*qsI@m2zIzaT2u0oJF+mtRmjT>lmzAf%_#rI<&b2vyR&=G42fXDQ&a8l9?C- z4?y!efTbc@$)JxtO*&KH5Kq(mGuO*q@ix8Mb+Xp`iWrf>++OVGslCio&DqD&A+^Bb z<1LMmdUJjr0ti`a@LQmX9DDV9=FDFK3p_`fS#p)N=C&|KQ#1zZ1PK1+AAx4pFRlBe z%@p70@s>8zn*F@T#XNLkfOhiplAp{Go59bPt9HJ42P1}6!J(aOiH!3z_$h$l(Y~9X z&MQ7~6LZDiu6&K&mcO;69l2i8sL9ne5Asur#h>i8%i>QGnrK!+?}V3=O|v$%Md1WJ zh3hV%_bPv(?xuf|4GsNWeYwwv4nX^z;Xmim$`@m0TOq+(TGkw6wDvo<6)@b>-*a2# zZ>g>HTX4>K)~aV|M`Hswv`dWrqKSQ8Dec>}v1X8j4go$1T>v|VO=mWAW0Uq{jZWGn zo^OE0nm$Vm3*5%&Ni0+=iDkR8p`8A*uq=a>r*s!UTC1z9wZg6me1))JcK|Bh4yoPZ zJ?8#US!Q%|{uVXp#TqOrZIIL_Ws^eXgVH%{OET7eRzedsNa#G}^>U~oNJ`?_ETMOT zc5G@WAGaGj0TcIb;Vp+65{ualAALu4na|@TvF{ZjrSLX(c)-R>{m*b?h29BkQyt`u ziRGwfhyI7AIW0_y(ElV_7ym>3&)=0lNlu&UKP!JM-4ApjdZ*>_n<tf7biyA^PdWZZ z;_}QD@lQWd_*3FT`okqx79DFCwDOFe>iP7rR;A?1mXohMp;aKhw*f3Ln|ayCOa%qP zu`jWCr!|sNnk4!qX%f1N**5jsA!3#cz_2Wl0+#kL_hG*fz{;Wh#{K`HIbSBA|G_;R zS_y_>UMyjD!Ry$5j=i2(x(A7o=vYGAbnMV4oB*vSy6?b#zAo40P%)|!06aV;>f<i# z!<b)(jOB=d3k1OLTpjp+L-YPdzW)bm>~q%zJgjpJe}J{r(1Gf|y6*r@r^oR9z}<vC zfG|YYOupZ8goIy4w-KAF=r8g8=S=uPd_Myx8QkZ-ANXJ8zCkJ`cnVgN1ZRi*LmLW> zTD3^iJ|TV0p{;gP+km|vuutdf6#JU&k8Wxup7Sfde}S)C@%R0ywS0}%;`a-wm3)m> z;+noE8=sqOeDd1;AYV7NuGvE6CW{lkXB!T5{BE-0NO=7a!)NgIY2YJmxtp}>`2HDO zN4t*T8Y>Ix2RcNA4qapQ!uP0;TAuGT|L*TvGGx5Js{QWz1ig5Qd-0ICFK~z`3;_d8 zOwQUA7LOm<C-Wr}rgGpQ!NC6|&4g)<Xz7!T2Q>zNJR}-OJdivrU&G;nKgFADEu|52 zD~FD6AuP~YTUH;^Sg+?XeVZW;*ZvWw{n3W#4$@8(-4R*TK(1354eb_ZfPupY+Rb(@ z*hJi9=R&{yj{4l-?`QD$(*ggP-W=a!gg~DMjX`>tekWprNBi`$=eb!rTh^~w7rX<r zqOzE6;R3nXD5bSiN9~J|C-%WxBq-=Px=LJJG?KVP#~~Jvz4B61HN-$_DYfBp_VVnk z*lFVZwuX2pyiS*h95toxm?jCcjF6UUori1R-%+ij->L4t6E>1Z{0$8y=TTL7nuYBh zAkO)7v@kV(nI|KR`XL*$Vjz3OqK|238;E9)SngTAkDev|(uw?JrFD=-AHBw-79&Ru ztGy-l%3oqVQfN#tvRDy$+%PJZWo<evh~M(azAItWJ0(n&w4z2Ph0shxxIgen{xMFG z(FT2Re<N!zkMM8v#Z9TbL>*YR!=8sNRj$|I&ojyw-Ka5Z+-WJXUDN3z8S6?ic`vES zbj}_^e3J1|6nwfKk{LU_k$iO-wkWx5yktsB9heZ<Uk5oD$uST<fY7hwzdYwco|jYy z(USj(dD__ebce{w8^2$)@QneH-h?xUcN>4!tr8LQOu?@&Cscm)+R|@J61@q<Z|@c% z4Qq(k2h18japQpTJMYVTZT9X98)kRT?U&!E!?_KU_YL~#)dTN5GV2~WlY=<RKh13T zDd_c?L%>e~zatKWa}HFuDmfH$B(`0#z7;x+&z0|K-j(Vkm0rkj*_ypKF7X)b6!Fq7 z1wFf|Gx?u#P98_D2gVWg;PK{b=A>j1fKHigU&ZD#@@(6ewO2r0|Hdty+_oHU>1xl< zIBvB)h<mb!A#+!FDxywhxar@xCwucV7wN$8?C-?ao%y;AxX91!!E!^kL0Kw2Sir-q zHk9Q=lriHx<3JCAmf52bzG*d(r6$tczZ3bgIAt*#UbjKZPER`@(g_n?$5!SnHSn@? z<Vy?AQbT9_k`F5ruBv&Er{>U_4-iIobLXa$(G?=xRX2PvZ}+K+-tg@!Uid3fFQ~O^ z@e?nf+%sfo{p}?SKPp`JjPbVN?_BgcI4S#IGv~yv57(cd51!@gfu()KR%-MSaTbmX zXbq?-?CJj#_f)=6usTbsvvzE3TjrjDZ5gA}6_DiR<0elWT(`$sR*rYS@j9}DZDY9Z z3`c9hkFM`QS^qJgH6`#vFom0TB(kc~-W6JyQEWvirEleBu*=>YU(=kiv{&yfwHL8$ zM>b1K?%oY*{*1lsLD%4l?Zu;Ly}7GpXc|fjTH+=ftHhnJMN1y{H`^I``$&xWDtI!r z!eKj;c!-Ar4{>*R-nK?hacwv{1;3^Hq7C;9ulgSHO@p++wQN?7tu0J)XxT^HCh8-K zgV+mfW}7%>h}vZB)Gz4wi+{n>#SJSrjn+5%{c18_yZO37;4k%e_P26zom^rS-DjVv zUal8Vr>*>y?eHeMNbSTNiZa)V!}@&jfLqbr@TFsmHF%YR=;1Wpr!$w}6$3IA>Y1+z z*_*&%$<vu2#kuUI(M!Up-$*ZwDBCv%{`n`!KOZ%LEQns)Cz>f9v?SIzLB8#{4=zCW zA$8Gxxq`L9eQ-4H&Hqun9!3KEj-VyKYcGmQ>B+WpTCobuY1nTFvxxite-!7_hWQXh z-AF#vUU|JVN``UMNLjdv>rG-Vd6GwFwlPe9gJ<wNe0>bxXS->Cn!wLKpm$SlTRH+e z@o!`?C&flT%)yG?h_y^rCA{{0;3Es(K_|Q`1bkbgOGp+t9!nYM&p~<*e(p@8OK5eh z>g>Nn_gxq@z&AB|=`_Dnl+UUE)t=&^z!BVUX!O?h^SE3$?^h1^aDOr29r2ZbKgsaz zj9$)|D%|hD_jy*7%FxOjV;J%il5F?_KOZZtbL9;@4O;qzSFVfP-kst)RxWd1*w#=} z$_@C?o0oZwxMo84#~R^;rm?YP;<C@8z1RO<6bfb#{6kGW2CvrT#I$n!SvhfR(uT}5 zf*PSu*<Q@Nc^O|z+Naf9(*FOhfBOPRirw9a?-KX%+!`lRMP)oM75k7U^`01mZTvjC zKEpJCYg$$2V(BqQg7_as0u(b&d`kS!?DIpok3Q%7?O5t<iY!~(JQPdGl%$MPZgMPT z!@$qlewJ5>l7PL9A9dgv%aW3uv3X*i?d4<gNTm(Wymi1RXI>uSx!4yLyvKr(GoNY+ zJY1W8%%$aTsh0RHJ#`Yv;4IT{9n(!{8Sg1&^H%{)>j0oRy33Y;L>%{17IsXxXq-em zU-S3mGfLm{vs)wbBA_sw>k{q*j<C&6z}@>HJ0A1EMgxgZLN^mQ4~+K(r(E>xfP@}L zk!36;a{ovvF;Aq({=q70=@(?Q7I{I@8sb*+rn3)JDTFC&Qtto@*AUzrV_0sSmkCWP zr+nsKF&11DK1{%9dneIv^~R2fvc1rP@w(xJ5-R4_HQs@IWj?t+j|<i%?F8?QZpqeq zX<T}vn<70rxYK3aO;sA{gUw%YbU4MwU?+bF-y8h>!_X?r_6%X#L&S;Rn%BclG%{Fi zt_Q6)2ldT7VzI{cpw;FeoSzsTwN3O;^cq$ttO)z{=fxOWC!uw=IJ=BK9R(PyR17m5 zF))%7G%#276ToxRlV{;U>`-0N*5cM|BqF&c!shP4sc&&Nv2dzc$~j1_Wg}V}7Z+tn zZvn!e=$UHc&xSuwx%i{y&YkLf*xk&=pRMdEAAh=y-<9kk>5ltB&4CWTk5wOM{iAIB z`dK$oAoq!ygB@#(1#d_Fq5jQm{CbY(4I6(hB6qwNyc0hiLjk&=`hV$OZsX5|P38{^ z-ibfc#82bSep9GF=!i2HV61rjt#!eEjwQb^Rj?-&T0y^}SZ4ke&1-Wtv7csYVVLVT z@|>{S(n9%0dh$Yk!U#+M4sO9m?g#7^v`|)}hcKsj{V*eyO<d2}xH5uqQIcD;H$HOD zwsB?rBd(eu&^w!B*i!jUbfzbQmQgPUt~2iIHm;U9!zQ%cdfn+MwsG}PE<?{=9<CqV zTWwrDU^}S%cU%}7d$mO`bIj*Ij*Vrnp|P=}K>1gQ0{zFau`CPyj9V0ug&JW61>ZZU zFI6Z@agOl|#VX-GBtO32U(s=2uDCS+<%+vse^t(ZhizF(jU(l6Q3FUvs1N4<-y+k( zZ9Ik8+jFFd!valsuDj0JcnYzj2siOqmL#grE#@O!AMlZerSshOm9Jck)LTp$z^N}G zTZ4=h0v{os?6f?Q98}NtFPH5lJ|gjF3%wltm25sG+uqd1pRKGd2Y+fY4o2nr0Ke-F z<|7h+j)*AbBX<3P-{ezN|7YCP|D9>(fsbs#yenIO;5Rjrvi`(JB>r4PB-?z%iJuZo z(YT|}-*!J_<Ih#r1%59Ne`B-$L_f?&fFGmGxjmTbKt~owu%BbukD0n$6eELH(61=Q zpMM1^vwp?4G#U-d-v=_FdYsoDXte>oUz;px&tXT#s;0Je_W<UHC5-wPW*BJC0h4W9 zcSQ4m=Cw3l^Hk%OBc2EM)muClW*XP@FIno7vd}^OG*(X9L0r~u@*E*qh~`dz_Jn6? z$8!pG06f)GH^f}3L)l0Q_Xxn?w+zz_Yc^oO6D@xd;BjSmmRfi~+oMHaYb@9gfYwNR z%^>+mU(B@4I6>RcKUwh1%c(a(8)oc;tS5~%*Hg_Ft;@mRu(+tH9BY>S+(g?Fe>SrE zmy6$|ZL0rpPl=5`M|2irt@_yYuU}l$#KsR>PN9uIM|li-c9XW9^*3o-)}MH;tbeX( zBf41dHh$DU9YP0<7ijyYdzp<tS6LhQ&4PF0C*}xv9(Rrz1b&5R8~Ic)Ry_U|mD<m- zG|EgB97Tv;qF+&N1^yMN!}^u|G>f)3!4tLtlGvr7%|s9R>Ikew=89@RgBn8npe&5^ zd#p#;BB2FEDw@!?Z>wdombmY>akm#wmV?{$gf(%K#z*3AuaJ(SEN)YdQzUL$KV-f4 zyBfi}v~0awJL}C<FLCeJ$AId~;<mEiNZfHY?n1E$`?IpRGn}|NyN1MFh<&r2UBm7Z zYm_z_*WC@=E{U7xF6;=@v&LopJ^g@eJ>MV9b9$9=oni=ZKL?{qH1G<;PsOSWuY26@ zXWp;D_hn24@oB(gJomdQNnV8=nWcXt8^(3_X!%=$(MN$xg9jiI!V#O{Zq8bz$4$CO zE!Ed>b}r%pmc;`Y^~<c^e8QxQEu|V5wr~>%up-n^N8l!1ki^|yj4#D)XXCNFBqVOq z?nvD2l`l$h+iGIVb57!>_DkIR^&4ovId(Q~E0TqAGuM{5_v`nAYn#wE?qqYMC2o=( zB<@1dp)})?-6vLzy{tFIn@Ze;%Cm?!HF4X0V)0yzv%9&wlEls93@s+;0^_V-)~P+f z!uPxI{b!6@Z24qeCf}b=Ylhr6LVF|ggAl!(4GagKXRzK!d!E4kmXa>?XT=~Ib6C1V zW&2ExC(#A%R*5beNV;(BS0x_R##4w40qsmYrss#bcYW8!Q>ZMEF+{*)`J5&N8tX@) z8kHFcQq@%PtJ(z5Y^SUb&?$qyN~siOk2lGAP8&O%aZ=D;o#K9&V(frDf#$*Q)IYcn zo{2SGHFoINc;4{tR_&=ZX82WrKf&;~B)keeJNl<9;5RZn>^1Or@7ad#;#e4M3PVG0 zPj~Cn-Mfu6S3c<j1b$1;RObfP;(jw@fZm$cWdV&n*X0fN6esQf3%vIwc$N0jdIEI8 zQSeNd?u+Hz{FIL_6yC06`{1nMG`;A8r4h2@MO6wV171{6jy|6%??TEzDwGOHg+eL0 z$*kvab*1q8m>^dXBo?6Dt$OWbE9Ib|v%4tehx(GSu9fI^@vG`Jj4z9gyf-$5Y;Ndn zASN1j&JaCM3%y45S6|fU8=F3P=GX;&zW4TRqn`i1<2$yT{Qq#vgkswBK$*RLig^+Z z4Uet5rVF-o&{&1@IpoMl;<Q*%K1F0PMm|O4qYW!F9-RA8rhHI$86)Rq&Kn;xVY=2K zq~ykU@tFF#zpnbZSKaRQKZ>b|^&Ivj#9WnI8)CKp7i-hZC>Y=!usdYWz3R*m|BKzl zP&LATQ;qP7-?NOis156WYJ;9*ltn(pk<*nKs71$io<XXbWzge#vXsG=YBuG~K{v+Z zd}p%mVJZamAn4k0+>g(#@{|DOgXWQ{lJ+V{=wlx5PFZVZ8pmXHk@02j*Vd`?{vU7* z{fpm)e4p-3$DyIUjQ!^M^K{_4-pecM8J|$QAV+Cmfk(wC`98PVF0e3afGtP;b89L| z!(?y^e5#p38g2YvZwe*fRX;UWPO(p{H>TnY`-|&B9!c@0h-vx_|77#*dOFHpzu~=j z5$#}}?K%Q4&%Qn!r;dJ=d?v_Wz}DPTi`Z?Ih9pws^Kc@AhXH4-MRKxWyjP??uT9BI zlaZpIUO3c88+OYx*gMp?74n0zt%K+ts?KTepZAH{IMn~S+SsdgD|triB1*7LKrc&s z1J>O^zVIkI1I<x8i<WH<CaN6^Rj6I*NU$RcpZx|u6X$8_A@BPt>g4|bi?CHmEj>Dp z&VNf+*Z8$gnVpQkLVh`)?TharK56cM|FYX{3=@T3El{#|<6~N%5)Je1V{mNv6`_vf zeY&HLwt!64vTZ|jVX*?PBhx;0XXOf%XLSzLwedl84bA`}MwWA&poZ+rc$W!Q;ShuW zAYxRPYOKw>CKk3a*87jQQwLrTxoT``D~6~|JNV!DLjBO+NPXVlUj5LkKItE(Zu9pi zP60wD`!s4kF{pRB=H>S8Kh!*;+?xAzzHe4N6bJ3`HIYP6-9Z!T&0j?AHaPXCdk1m) ztB~)FpW8yG@puQL?@wx^|Ax42xYS7Gi8YeMC1FHhJ!MZT(&j7hw1R8{>x6!q*Xa6a z8pX;@F~%Sd0Mb5_n1ElbQ9p3)*F4Hy$VM_rQAUm8RXiJg;AabY6<+H}myyWVaeR$k zy<P!$-N-~v>-$Q4Kaj5z_<9QM-(Z=;30^VueJgz5g0HLb^?F?Ed|jR4AH;PsP7lSY z+5G($T;JmO<OWo4?6G>t_;+Niviyo<&K1g71^JF(#5!rA#lGC~D#L&x<0r|@%^0S= zpxmOSL}@QXmNuNF4z>b7-T=n-%D+qZQ#`?G_$@o#3G_jtrx9?oURgPyKL*^+Juory zip5BF%{|S!cJj0}b?paqJkNr+HL=(On|o~RQlPIP{HzZG{_UmsZ9PqRG0uQy{G<;$ z#Ts8|YEb(FI%StBt8c1XTvSiOH-})=i}6bx%>nQiyZ%hlRDV}7ge<}zI0LN3?4c+1 zH3!s>v8yogGd%T<4R6||?nM0|Uvhmemg>uFHUOQ1sh^VeD$+Dz6=C>#=zV8@68_Tq z_eK8{as9m}{D#u{^J+u&M{Icw*<SQEXr1ummxN#2QHr1a_z8chm0Io#ssH7^@PJNP zY|Z-E3xVmojGo5s1v*d~UyK~r|IX6!wV6jkF=tRle=Y`XPGG;(_f3D*Y}|$37J54J zC{2N+FZVB9S+~^^I;`_-;qPePAIke(f`66a5!J%`nz0N&2>T$iADJ1;u&=@VX8dEF z@Q7!q&$&zn!E@aKkNautx!xc9Ci0<5f%lxm|1INhZQNoRowE$_bMNE(H0L7N$_HH? z`a$}OMVS6#zScM<f$5cI+b6tV?qS0D(7)JUL8ot7G5QAvIWyj%4NoYO(1zB5Va|*< zxSxss=e`Td8*@-!#dUH+U+BnG1AU=i*44Ph{$eSJALh2X7V-T|+@H((LU?~r+gwjt z@Xq`&c<#@9pZkL0!8y1u2J?NX_o8g1JO|WF{XfvTz}5i$Vzc6+R+2K&WBMWPi43zR zPRpJ^)S%@($6jErUw{d6HTP<Pv>OAH#S#005*#^CP`g=F3&hx}&YUM`{S74=z10vJ z6lZ>rgZf&gs7A(BXTA^Msmq?%r=eMKX5Kic&t;05Y+Mh@ym3%_p6|;UbQ*Q$8Kh>q zRP3P9dT3VQS8Zl|*#~+F;Y?Jy+_FL?AngmKKI+PJ(8^~n!i2sOZl$n4XAuFVST^&0 zpwbZdWTYs-!XqF@emba>{C4@5e7`b}%*)0tPj9Ab@IfBolYD<S@JRRp=KVPC!(Y+2 z<j2i1_l##7-~So-ckq5!T6YiX*?fNhG^#1Cw=jp(F<o&!qwxs!2}ge}a6y|z(VxI` zD6q;P_jo^OAk`J3AU3T9-#2{5zcEIkxc?O07vGupU*!AM&<~HgG~EBzy#Il55%BjS z;-Z1eh5MJnB>p7E{}k}d;rkz%@Pp~T0>4JRl?zsC@v8|x!1x^XfdowPrSJkpJpqRw zK`Nqa%oOt)QG~b#*8%)xeE%C=Q(OSPZwb5;`T9G)9)$W*9GIITzRd3_PRlL6wys?d z@b#D0HOE7_DeejI9JPe#95+QR$=}02n|}WVUoXS+DDK8h@iq8<9<JNyYjFJ$T?byn zbzQ!`z~7@j<wjWZ@5;te$Ov`1ORXjE2aXU&8?_fXy5cHRE+XAzbOj_3%SVx;hq&Gs zt>*^y!#~vnQEwW>gSo{w{5w2LZ_dv`fARbuWk1W}mN>sq&!H7aRRIGZ#W{8)59{$L zX2#+t|FiMsw(;}PHuNWrzhk_~e^8&taYF&F&rVqRIi3k~+wx=uj=znmlP1a;Q~e%( zCj48<8RLI}wkdyrn__(NeVH*29%Jm25{#bO7dVrup0dK1YUWv?orWDeLl>M^#d6CJ zijwB|Y1%Zw1KfFHW=a@^LC--V$atSSg->IvQ>vTrRZ6LYuc4iC9?IscR+H{R%9lA} z;Y!PA0eRpKE)TMRw|KfdqRpF(?Tgo|t&Q8eb=~Fa-s(a;{mdKjN!O+htDJDlcbE6B zJ+DM%Mm@Lr$#1Hr84K5WHWj_44V|@S{R3-!``4fCQghAd4Mi?vh}aqW{Mz|D9$9qD zt1ZGH;Ut+IG$)~19Ocuj6E5WLoMmAvrpgLx<ega1=7z;i+Lnc}x@Hc#GX98O+IXnZ ziXw`_8r=73Vlgtj;ruyy3{JY1OlL!ATfHsP2m4(^yl-X>Rc{aTo=C?j(nIOY8~tJb zdur3$=c%6mGJ4ZE<J`P)z9c?3PwsD7%V$-RB|K}~tlc-)*sf%BB^n&4IfBlK4n8f< zS4*P<1W{LO803-Aw)eAnaBCbA`D)Ll|9+sOx8sT<F%>IStuN}FId<0Vbw5>b*!VNG zYD8G2-HQspP8TEhze*e8?IDLZ4C?>rO;PKu1CKswlzg$FPw(XgLhOBlXtxZ1Qd$|k zTy;R(DJphUtRd~szJ_w1A$mf{d6oyyHMTxF{Ke$F2Mo`9MD4<d!nW1eGvD&N#k!{d z%AD{f&!Rzr8?IKM3Xa9aO7)F6OZVmJUu3ybr}0XaulfSy#l>e(5hqgf<$cN%f%~yW zKWF?TA|G!D>frtcFwAVu+VC;Mw-?CnVc!QHA@AqoIre?#!1De$F_iCfk1-x_bgZ21 zksk~2R+en6%;X>AQTD*HNIh(3n8tnbfWdumD7xRzm>=Xvu}9?c%AaG*3i6}aBPx*} zg_UUm?UgI`9tFBY;AvsZWsWG<1j2t=3Bi4`O_!b}4cU=w)2Kl;SZoD8=^rFx^KSv~ z=QQ(g6)Q`w`L_mLcN_C>-SM{zyVu_4eL7`nr1`f8+;@igcPQ{|Hvg`GXKywCCL7yc z^Y3tEr95f=9f4@l?~zhZ=#Vy)!J@MHH@vpQWb<!TsR&<c38N`>#3Sb4y5nz>I*yt5 z-AXOQiAZ>l(nk2rzu}Lgwlx2)pv0)1&A%%`@)>0Q9j**i7n^@aD1Fp_n}0_t6}5Ep z@5)LQt#!M}d9$XD9X)1xQnMyan<m{gdGhE9Ba=E$8s0dm?Su(Qz3HoINxer-8##5x z$PtZuPriTh^vOwm#*CfRdHS#kV~0C#B*{B{M^2qKcJid8W{sPsXEi6ZSrVwx-+ncA zTGFtj=~IV|7&&p+)bUA^N14xWEUO{k8xNm6vE7)dW2a3YJ8V)CP>q~AecI$nUB?a| zIceI+5lQ)zMvR=AG=0p-q_%m(hU3HhreRWPO`43EK0PltEp6t^nT>}rRO880N2j6w zgkxG-*Us%abib!Vqh^hpz!)?c(|?vSRT-;{R>nYZPJ-&A3AQ&)@z-7Wb~5fy0NEtL zp<|LV9AuEBw8fnX`0Q=}Y8qdSRHgxPDhO+&G6Imj@$36hrlTZbBQgf?lYnQsG7P^T z3vA^>(6dTm`ZCUGfS-(CQ~esFcIikW*qpDZwpl@#8vPf~8jHFnp&m(i(o}qoz*8pT zbE+~P_a-Z&@a}AX<DjeHZ-xVYBKmR+_v18R91BcTSJ^)5lj(RK)xRsZdnEp%z8V3T zeEdyMpNhYy0|)hWTa3yu^pCs>{!K%CUtXUy0rYgd^1u|*@S4f5#=ujGt1;>@6(gEv z_P<q+X}HrBz1|MYuR9bf9S}rI{oEv|U#$@g9v{pwh2mBN<Is%q{t4KvLXd+d07-)W zj*vj=9r(K+xNs}n?SO1!0)#jV?+ft~$ON_+@5}HK$n&)V@2i+gJqC|$0q#j&oKGqT z@$@5j3FKHgh4+{65{SDxjrUja63QER3B(e<jrVtyck%u{;^76dV0?)8i}3Rm%2#*^ z<vY9tINOhSzlw+iq4@DaAdwJ?Kz>hfClMk-@m@t##d|eT4ev>!7T)WKx{4-nY9ank z7a4f>3NPN9Be#kWZAE*$-z7TXy$fuY0%yYY!h0WhJqR2^kG6~Zk-JVHU*rh9kAX#9 zh;d>9-X|f~j1YMu5AV-mmDI#3aT<w;KNR2N&Q)<0@4t#)@&3E`9q)du{6ZC2+l8vD zI^ILn5WI(}74aUW;uvl<PEEjjqMC^JJ1`DHZJ?s&Y9qA~-qX}(cpt2yKI&}sYrKD_ ztx|;cu!cU@_G&)7AJtyK`%4<EAKE1ieW-n@p+4G=8tS86({AGZSA7oFi23?_yf4x* zn)*^5qp2^4mPP2B^!M?8UjGl?f6@QKdx?(Tc6nUk=yReI@~BpzMG~NxC-Hg;ucz_a zkJka^0QEUM!c+0R3v{ywv~UppBUj2WkZ)H-Z{M+NAEoN>SyLw{RYy-9IbNwcVc7IZ zN>%ux;UBHO46hE)o0g|Uj2}655^PbWYc18njl9i*@1Ym5I=YZ;pcDT33p5=D=ve6Z z;-J?~0M<mrgI5Pd(@6z)U>{K*IlvoYDmBLRA~w|wY%4>_M9$bO#8>BFqBh4)sU>E> zNKDFwp!g;5L0zjn0x9T-;)7l3sB#RxUeDsJpp&5R^Pt&}lncto$|uUF%4eY7&*Ag` z1!(x+%9o(wuaU#_TTt<3Q1K7Sk0K4Un29quazKY|MLT#?bO!x(MK;lX;!&|p>=K0- z;Rn^ZIEQh8x=>xDE>@SQOVwrSL+WyMg}PE*rLI;VR@bO&)phD4>Uwp9x>4PvZdM;v zA5*ue$JG<+bL#Wzi|WhjE9z_N8TG9CmU>QoSAAbSuYRO{tbVFqREyP1>X+)*>No0l z>i6o8>Q(h;^}6~W^%wOw^-uLLwL~>EMN>6hb88`5m{w7X&?2=cEk>)N#cNfyYFZ5~ zNvoyR(dufcT0O0S)<|2XJ)|wyR%k1=RoZH8jkZ=>r#+&r*EVPywN2V)?NRM9ZHxA} z_Jp=o+om1V4rzzABJGIg)1CqC9@CC%&uS;MliG9IDeZaf1?@%9^2^$3?G^1q?Sl4+ z_8DmS27CZLdbl2~&jtN117(IXy{Jl9ZanDwCQ*_2)$?w~nT#`@l90h(BkNGcxtw!Z zvqMH?$7jc9oyb<{Gv{1(`-*DC_p?{#+?TU4<C1qtjxW4p*1+shnXAKBXXi$|lAW8K zo3%W9RQ8-oujR~$Ov!A4_cqz1a?V9A%RJ*Xa?W{;${|ti=#c0uF{^WC#H^3mnw=ZB zEa8Ew;}Y`{mnE)FTwh~#jrBFo)l_S)&fJl?Bl*Sb_*z4256-w$_hqU>=AHDO9iOr} za|f<=+|j0<yWV5<{;L0F=H>>IGFzl~Z17m4soA5j^5>@4Nw1SVs##vMzv!>@I%wB& z)O<#IN7VRC=H`q`nJuzT&?`Hh{+4Z&_cP9<=TU!ToXHKzh{_n6t7bf(b0z0Su9|ZL zpZv-=lyignNxrgIdJX3*1N|povc?j-1?^puHPHFWTrFSJf7UB!M$Qb>d7xD?&dC>z zOy=sc1^9DIpTuLPV%%ut=)Nqu`0aA5WY6K(%51!HHexhq(1_A2SH&v?Ep@#39^I!N zzzd&OGM<+&^Scn#bT-ui<GciaAIh4Y<D+ZpVM#yer6n1cvg5r=sHHhG(AL?RXCzG4 ziOf6cSD9xlEZOZd&SkI6xRf;z?FC)s%*bqke%g$l*+?&{vm7O0$fbUwUZFA0Kn-$c zSmR3HSl?1V(`ZvK5YEgyfz>P)+<*I7b_~j1%T|~6xYhI4XV!AF*Qw`cWUnNu%+3Yf zpUFCb9<tj+eTTZv$vQ-H3G)!&Fx}dtOLLRv9nZ}f)C1@rA7D+2#b`41=0bwO8l&^d z;l_@Mc48HAFB&f$Jik6x2IBR!Kl8$GBpa_-aCou-bx=BDW$3KjjVSD{cqJ)4@Jd#C zK~Sv)VXiM$jQj9Pg}!<aR*oTfHN>ubCGc&=t1)DrZNPg3t3ea21}CwGoWd&`o{%qM z9eEk@PIE{*uVXEF12Rq<tQ6<5N_~Wtp)*#7>v+z8@EQRhu0OHX+*V2;EE-tW#zC%e zDHBDQ2*X)4;UZj_0)PFg%2ZKH)PgOhv1p>qpj8Cfg|bAJG6!o(jxrbPNpoc$R+RS2 zd`K~Ul!c-%_N(yXghaDg41`3pL@dD$@FDS#fb=FlgPwJ@_*@h#55xF;Nm(ntf+lyJ z_(@z-)~m!;H>vPQQ8q*RNK>|`%^-t3u69s6Do?1LvFqDL>lAVT&sFCtJFr@9RCZ$h z*`YkE?otbtm(-`#!^*4bQT2J{O{_*QD(A5xy{vqQRp}MwBdkoXDHpIhy{GVsq<o1r zsaW|2>(V9VTdYlAD&Jv!`dYb+_33+s)~FwqAFxhcRer=;^|NvX>(zDTD%LE&@{<}+ z1IjIkgOC9<{8MgYy^2suux3Rneym$jih=biNeN)hsw)(%S*b$Dx>XN{s;6n$!mYK_ z?h=t&H?4<=)%s|CM7%aq8!HmDiST=`p*^5IAd<1dtrE4cvTYN0XgjnWB3s*|?GZVU zzxIk;?P=|4(VW&b(Sp`B(F*I@Nzn$Y*$d(>tYxo>yR|dg8=|N7rgl#B*3N4mioRIc zE{OZEx_u)0VTCIe{k4B<--^N7W$m&Up<U6giji3LZivy^P3^WAqZwL2Ox1<1i|Kj= zy`p$PkJKZ@Y&}Yk7Z2(+^p0W?@-KA~`}Mo^d&L2Lh&}`-9p&ly;*>s9pD9l359)Ko zD<lJo*Yt(@BJsMuL|-D_(3k1U#994O{R#1=zD?gI-qpA3JH&hXE`68yK;NrBDbDLp z>raad`T_lr_*gH}i^ONTPxpz7`ceHk@wxsy;?us?U(#PfezjNhGvZtQtbSJfsK2GZ zEv~@R_dW3wq|5W-XZ=(CQ*llILjOWs*MHD|5I6KI`W5jX9WQZH|4si*{DN7V9r#o^ zkMeQgQ;~zxA@Hddff9)lg>pLZsXi0sCBVdEUdLd@MPa^G5ed*sY=M3uNr}>G;j<3P zDwM}jwxN88`xj6?LHP{VSCkmY4psC#l&L7wQI?^+qQvO0p_~C;0gGD_q`1gH6(tI# zZlJHy*!UAOK1S&fxTM?_xT<tQ>5S3^<sOuOq4b4irC;ER(jOTK2BB=ky)7tD;GPdS zj-s5x^$Ym!EI!{vc^luI2i}iS{=nI*8cKMeuZYKI)xZy;20m+{<R~%XPJDL2=TLkO zLm7{<EKo(PL|KEf7UieF%i>z#WwjZ~{6JrI0m?#@MJS6=mY^&}c|34QeF9}G$~Ke& zl<g=xP<95cs=H8jqwGN`MA?sW0OcUcA(X=?MS&~o5fmTFGbl#`Kd8r0jsyR*z;gnh zC-M0lK2PEE1^nhEl+!4$qP&js1`7H?eH-N+l=o0RK=}~m0?H>S-x+_ZxA1uz#gB-* z2#jGQN)$?L;EEQ9l7NzkQXQoxO6|Z88u~y>N6A3RMDe0zp=6_UL+Osv17%sDueJuI z0JwMIw`jAr7r%cBe?N`C_v6!N{HdW`+G#xV)xag~HQYagf^pQ|1T5;WoyX@zl&=Bz z4PY+g-c?-xgwOw={DQy##CNyw-Cy{;jn4q=KmtWYsfZGR5{VKM_(89N5|2_H*EIrt z^_qc8dJ;a9@mUL>weeX8pLOw>g3nZZ-ht10_^gl52Ka1<&qnxcjL$TDHo<38d^W>p zIzBV-nTgLVJR=9CIZ8{E)+lXJ+M#qn>4MS?r3VUPgLTln4w~2RMd^n!0A&!$5R_pk z!vk0Jktm~4#-fZznTRqO1sOZ^X(;(9Gco73pbnr%eJg&q17#0jp28<+PJapCzY4h5 zQQi)`te;1@5_lPVxon)ilN<O}X&(4VX&Lwe`~!Qlzy*;I_!d0m0(i&;@skpPH7)|{ zS%kVJ@CA6v1@M#$;3*fhB=~^T!o4~u_#WEI2rUC86UB>?g_4cZ4W&Cu50q7aeH>*Q z%4y*E5I8QNe1h^B?p+CdtKAHIq35AYMVXE=GjKs)hR>Jq`AXnh{WX*`@R@pBiO|oZ zT)_^z`v243nZQX^T>t*wsu~!WfgUy)5D*vCxDs(e#RU~q5M^=49haz}C>oP!65P<3 z#U<t+#3YVJ4U6c+C4$P%fD8=I01kqUFwk?mVS4E9Sx`XdzVE3!P4^%e<IDSe-skh) z?a!}n-MV$_R-HO^s_Inrxs;}u($rFta!OK6Ns1{+EhQ<YB*o;uoZJ_a`(komOwP;6 zc{w>MCr9PvsGJ-XlZ$e4QA;k$$wfK2C?^-?<f52dl#`2Ma#2ezYSBm^hqZ!J{q5>c z;D5lM!DLYFZ`Yl{0iY0c2R%S9@V39*+yrh03wVAQ<FNu{cmd<C&M411A|GSO#~AW4 zhJ1`68)GQKIw22Z$io;iP~=|>`4>ax#gKU-=VHjY7&0z~e2XF9V#v3c`<PR}NT$Gj z0z3(R;}jsDV#uc$@+pRViXoq3$d(wgC5CK?AzNa|mKd@nhHQx;TVlwT7_udXY>6RT zV#t;lvL!~FkI|N6v}0+*G5xtypu=Dz@VJhH6!76c7bwsk^aQ7XQ^D!r3~&}02+jqA zz*S&0xE9<9{sN|f8I=2Ms1%1vai|oBN^z(ZheB~E6o*1_C=`c6aVQjrLUAY*heB~E z6o*1_C=`c6ai|f88gZx*hZ=FH5r-Oas1b)6ai|f88gZx*hZ=FH5r-Oas1b)6d`ktu z!%!m*HR4bs4mJ3{BJe;Qq<|04x<G;UpeHy5$bLiGAQa#~@L(Xo?hzD-LxDIHh(m!m z6o^BCI24FOfjIs6C`wSso4KNIiPN{l>09FTEpfFI>;~WPW=e$|jw5g5$jCVIF^)Wn zBah<9qd4*?jy#GZkK)LqI5H@X9El5G`j63rKSnS47`^0U^pcO!OFm{fKQ8~ug!AKY zejLt^!})PIKMv=|;ruw9ABXefaDE)lkHh(KI6n^O$Km`qGl^Dyos$Qy_Uq~K>zz4Z zhu=ugUGF~T*SU{_C%}{7H+~&GWIa7(J-t&sJxo14M?JkpJ-tS~{@kzAVXzU@a9!`$ z(+kwo3)IsK)FU<Pk(%{L&3YtaJrc2=`OOiyM}vOgB=9KsBbW@{0gGvstI16+=n4)5 zJ;6cXU@#EeL9PaY!Qgyw0hk1y0ndWx0BNe{!AD>&m=6|$azF{x8c+$o0=vN1l;BwK z6!<fMGMZ;}El864JkSn=zz}c|xEKrvBf+KMa&RSpy5<^i9k>C!1ZGjTvnjnt={-vC zQF@Qkdz9Xz^d6=6oLT-tC{O?eJSgBn0S^jzP{4x%9u)APfCmLUDBwW>4+?ltz=HxF z6!4&c2L(JR;6VWo3V2Y!g908D@SuPP1w1I=K>-g6cu>HD0v;6bpnwMjJSgBn0S^jz zP{4x%9u)APfCmLUDBwW>4+?ltz=HxF6!4&c2L(JR;6VWo3V2Y!g908S(mwQn1N>F= z8><;(Mi^s8oW=fTXT86Qab(2p$N5}vt-nhB+K(_Ej4&RIFdmFB9*i&^j4&RI(7&u^ z+!kTX7Gb;=p?_IT|FW8~QG`BbHRGcQ{mg3pqQ8p1X0;}+UWk7k{>}L7I5%?r75-iH zaN1wRm?gq^CBj%G!Z;<u7$w5^B*NGv!nh>Dm?Xk@B*IuE!Z;*Cf3=$aYBl}UYWk|x zj0+;n#|!*kwBcTqw2Ts#QNl83DebA9Uq-v`MZ4}ryY5B1?nMd9C}9~TETe>Fl(38v zmQlhoN>@hd$|zkKr7ELDWt5_f+?SE-GICu;j?2h#896Q^$7STWj2xGd<1%twMvlwK zaTz%-BgbXru#DNlVtR1pl+vT_U}W+El0A%M4<p&bNcJ#xP3j$Z8hKagz}HCnF!O{B zNR29_Mio*&jMNV^PuPIu4<kjYoVoO@^Qhqk#9zofVG;XxOZ=p>#E;T5gy|W=ym1Tj zhYijOf2C7~Ri>5x=T4mXv@a(G>Oli&1YZ)Lw&~C|S?jNNnrQb9(0<s>;auofBDJdM zWy16_VJv#qyC;JI;7o81VWT)-2Ce|KM|z<!y-=85C`>ODrWXp+3x(;0!t_F6H61xH z!>>fPS0dXhk?obp_DWUkZ(!cAfqBCQ<_#N=id9I(DtfIjy;hiBD@?Byrq>G7YlZ2x z!t`2URR%r*6<{^^6s!exyoYkC9pFo_lXvU}-}sfx4>mAA*ueZ?1M`Co%nvp&KiGf- zuA;XK>muaQD_p-y+}8=4hJQN#8Jrh$A1SMsaJ`f>bVp)W(KCki3a%@_Dz4XqD*PVd zQO-47$ML5?J$~O0({qN60?1+07UcVt^rB%?z`3(ug_N%{g`fxbdJ=vLI2D`@&H!hD zf#6&)2n^-9Vc-%l0>E4Jf0guqmGrt{dfhO+ZkWEXlAbrrczgrn@ePc}H!vRGVD1Ft zz}?^;-a7%@4<6$Elfhqjrif=><^DAMGr)U<zYi7>uLK@_i2iRq{oi^xJ_*Ms;rJvR zpM=AcaCia^55wVMI6Mi5C*kk}9G-;3!*F$+mJ@=bx53d#I64VOFNUKNaC8)oO~Rc? zxH1e^CgI8?T$qIGl5kxTu1nI#uBVS(PanIUK6X8Q?0Psc2`47u#3Y=UgcFl+Tmp_u zz;OvUE&<1d;kYmymxSYza9k3OOTuwUI4%jtCE>Uv9G8USl5kuSj!VLENjNSES0&)8 z1YDJXs}gWk0<KEHRbjX)2}dR1rZC);fRhq%QWEY-!aZTQCkfYt;hM1i++R<hzn(sS zJ=~LobHZ>=63$7&Ibk>_3Fjo?oFv?mgj2$BN*GQF!zD?$Bng)!;gTd=l7vf=a7hv_ zNx~&bI3WoqB;kZ4T#$qd5^zBRE=a%y3Ai8u7bM_<1Y8h?3&L<gnA%TL^9gD`NzEsz z@h~+WX1%PHUqp=;IYW>~SNSPwxP%%mp=MLmY6-Qv-S)VQ)u_$h)MknrETN`~sHq}q zs)(8@qNa+dl@zs-qE=GWN{U)3p;k(uZVKwApl%B4rl4*L>ZYJ>36xDi*%Bz5g0d+n zS^_mopk@iwEP|RvP_qb1mO#N0C{_Z+N}yN?rB6}%6s1p5`V^&4QTi06Pf_|3N?$_h zODK7Y5|>co66Q1K!;2Sy3&Buu8F(JN06ql5!yj{A2EO#8@N5)*jl!={_%#Z@M&Z{e z{2GNfqwr=F-i*SVQFt>74@Tj^C_EU22cz&{6dsJigHd=e3J*r%!6-Z!g$JYXU=$vV z!e>$VDhgjk;i)M66NPu8@J<xIiNZHg_$CV9MB$Yvyb^_1qVP%-UWvjhQFtW^uSDUM zD7+GdSEBGr6kdtK15xTfO8rOCu9wnEYpL5EeCzi##_i*%Uze*-aZ8!~&1JNm&p97@ zWoCavxE{*&D4v#C;MK&q7G%!^=g8Caol7{UXN9Fam!26G`rFWn=Rwo`%@Ad`Q$91q zd}fIG%n<Y0N8HX`3)V6JU(a|vOpd=`HqCs-jr;T5TKwBNH*$Xm{+;LtI)ILTt?J~o zQ(f>Mh`%p$;S>CM)Z4dboM?sU*|w>f;7#xrc-P5O?|~mU8>Q#krgnpGM1$qzp~0Gm z25TM~ta<t*a56Xr^arOh%Rd*K2L^$`;CyhA(+=&{JhWT$&~DAs!wDM!MuJh`YA_mH z1Fi+*z+K>OFu`xs_ksJtPr=X7c|1&dj{un|qnXjKldtKVW!8-BhW}!E8DTPeUd5Rn zfmw7uv*>(g(fROYjC~1t@MbWRM&Ap6W@gj*XnSNvUBJ1slV=V9h2Z<lu!r)@FmMSN z0pK%w!EN+{+u-NS?E8AIWd?o^=}rLm1DTB%5#Br_H;V`>0n7b)<`Xm|<xV@aP4mnb zoU6b#{3*g40DNP1a^A)4N?O5Zi~ymha~;@j$AQ!NE@7=p-MED5!@-f@D8M*T!*j-f zWyEC%9W%)5z;;HpCxY_;*F06nQ*}I5$5VAYRmW3xJXOca)z$3#kteU^%*+Vs+h9}Z z?l)wof>dolsx}}!8%VL96zfS*=AR8n&jy?FD$eUc4X6j{H+A+Kke&@l&juu90}`?U z3E6;jY(P3Tkdu1$OtkWm0H8nfkkc544j?Bo9~pt2|B>KQzzl}mCdjQvPGwwM;jAKl zCE(2tt<$MuOyTi-oO|1eo8+7V^`HSXf*t-c#<3NQV=EZPRya+51>@KX#;_G`8^0Qz z*&6yA&+YARVGLWr{70yfU@TjKE^QUEYq2{3|C!)i?w!ZIL4=>r*!My(itx+872p~G zb*YPldlTu7L6Y2zBp*xsasD#;v{L%CQu?$~`m|E|v{EJWsOf$MRQI5|$Jn%jv1tWk z(+b9>73lC*p~G8+4sVs6V;#zDQ07@O#|q|G4O-?`MZ|rbd+)(53y8arS}7rHDOg5$ zDWi%N_$vUjPc8GX^_)NVOX&kk=>to375AcGo4<yd#i|l<>Nz*s8cr}rYk;2;j7cjP zlUA5caAap@mR&d>z_}~uLeAY7@Acrm%+K!OTIOgIILkcke$Edt*Za90J670v+hpRt z2i^zsxVO+>1IKvi9M`}#9&@_>{#-ahxFG>IB;bU(aKc<_e;GBrk(#Wf78BGWD<A$` zYHcI6G}pbz-)d`NoWBVQC!lZwiq3_ibD`*5eJIzjg9Z4Pab5-1gBnmzNjrlBKq0sX zOaS+T2mHC@bS}9}ki!IemHy=OG<v=Pv@m*0csE5ZJ#y*6uXXV2cK9_$jy-raMXt-? zy(s)9Z8$})J#xJg9+UQ*BKICV7K6uP@RYRg6g(A$pK9SJ4}L0#ccPTWqck3+@!*dr zyb*;rqVPtPxpy7B5rrqVQ$i1(5V??|?xWOkl=_WQw<0G})UC*h6m`0t`rJ-kZl@k& z)M1qRi&A${O6^f^G3qQz={@QxN*zV9In)Q8$q|(9XwVOw1p51%pvWeuvC(;y>pz0Y z;BDf*!}(p#tGJJLm9_5zD7A@QQk~f$RnXkBH#xOvf$O;5>2GrRngTkR7^~g|=w)J1 zZxgzin2X$Z4*~~+QwbZ$c@Sr5p%-wLRyu_9FwVnyb_BQ*zPJe<x!M21y_M@bcxEiu zcR}g9xgL+!7>%qN45$V4J2CZZ!X|=;!6V>NfVNqoZB~=G{|tB*JO?N%x}O*|v{C(w z`?J6Y;3LB3g85(}C<m+psWqSyd<Axauj%{R`<tlQP1NirYIY+vyAl0ROix17{1oTk za{UMVf5txr|6c*`LT?m9Zxo}(H&N3Y^=87h;jbku3F-*@im+Wyfytvb+kp^}R@>d* zWO@<a8yo@-1BU~&D&{C~3^)$-1t)+L!4RIk2wV(?gOT7;a5=aVu)2vZDuym9hAv7t zY9k!A5sumjM{Tl_;1`@Has2}6y+oW@U>;!$!D9G=uh!6p`qOSsL-q&#MH22wIcu;T zR>@iVgbnz=poj5jE8UR8BFj(3FLHYj=i$g>k<T|#%Qu5txgIMu?l)3XNhqFz;wdPe zg5pUio`lLtsGFoMiJVQ+mg=Ew%F5SuTyG=1jx#dS%EwO3ce{YDU_3LSd%=C+0ov9i z&ht1Un<-U;a|i7v)GRqX=1T2pD<175MB4~aI*)eI-b#>lw1f5dH-Ik~_g3+xT#+PE zQmJJHrH=SJXo)-FW8;KqBOxf@xvWt&OO~j6F8)BORMRd*vQ*P9V#vq{?V>&Hf`9LF zzKQ2<2Djo5Bu$hy(VjLDq78&-10mW#h&B+S4TNX|A=*F)3VQH*2wo4t>!H0Qlk{31 zyc>d|9()^us-Aw4@#0@OGX{otLxGecY#m{nx!%UP4lsU#XG8F8$Y{n=ofvm@0bM~i zzZ$-c!M7p!HU!^>;M)*<8-i~`@NEdb4Z*h|_%;OJhTz)}wIe-~^h(kriDaubzaSm- zxbR`9S;9##<gpvHKf1F4Q2h*ajH~dk!C%RFoz<OI!+X{6-d3lM*@prBpzf)RDbD3Q zi1TpHj5y)HYWS`i%0}S3YIi)Ncl4G}YYV)$1>V~N??s@N=ut(78iDt!p;83i+X{uY zz<bqDNOY(X_^ukht43~bh3~e)cUvi0gpx%lS%i{pp+pf%vxU8|{mJbBTY}A$AVLW? zQ-Ug5PlOUgYzb;P*U^s}(9f=oZl)9wO0k(zL?}fKrHD`pDM5r1u)^+dCik1k{bq8T z&go`yDmfJGZlpyHAMiJmqs^@8^hZ~D25oi~=StgqvuA;I`xj_utZkEO4XM^ZlX_@U z4^8T!Nj>zCc31-)>Y;<QwR*~2Pnqi}a}8y#=M6RNw;DnJJQ7?Au0dzCfO8zk>~uTV zN&G25fA2JaMzDi>Uvb_Ac7rCy77oY(ZIB?nktRpuKM|eM$(&CE1HhT!Ji<nCz6@Le z7{$_iC+V>hjPw$W@Dhyh5{&Q?jPMeS+!Bn`5{%Rm^v+2}X$eMY2}WZHMq>$j=OjII zl2KQ}v;{rDLtrvsJj19d!FRASD@%=xk{TH$HByQOax1G#jpVSA95gZp-PbBpBO{|m zMnjE^h8h_OH8K)vWF*wc_%M5wsZrPajf{#K85K1$Dr#g@)X1o)kx@}2qoGDdLyhdT zuB9Jm&VoFub-spgSgA(l)FN+c$we*gwU)M4%b!p7)&vH7W0Fo<11Q?Rw6-s;;gh{C zJ;467d|~c=0X%y7TFyJ*CwPb%dX4G}UPddox5kgX1I*4_?pK*ZydR+LQ`vh@*dxKL zyM|eJ4YTeVX5BT+x@(wa*D%YjVU}IPEW1Wu4cHT*<(pgVi(r;r!z{aoS$2&U4WaBY zk-a6N84UK3B&}vpw18<1V7B%z*c*~$mR$3_G=JZ{Un8Rx4EAdznGGkI4cC~o#*ckC z%yw&-?ba~UtzmC_D`u*B0KFo$T#Qbv7@b%#`zqU^<0-bQ8<%m;=y-~q7r6cq1UjB# z)@^1``}5J26{F+*lr}pZ+4Pq4CA%CnF#cPvU5P;7(*r*1MObh2IfrmQ2aMqU4V-TT zV~BGLxD)?)!XHE5^Eh|{JPCdS{@Z#WMh@yl0JRjO2SrV?YbvRVz{~8?cm@0&yb4|e z`&#`->xkaxnc09Aq2>^mof+r=i`61f0+s^kq?Us+@Cm2@tHGyWEy!N!_`gqIR2;0T zFcy#%74++Hd$C<j`IvK{Gb+{@ol!e<M(xlUwbNUO>k%i=8x^C|EY_ko+DZ6s;IoUx z1quW!DaEu5R#F&0Wb{YH<{-HGU~nkt1C9Vc0!M>m!SUe7pdUC1oI-l+xG|@LGr(D3 zAUGGW3&(u-s!K8Y(_(Wi2v%K+Tj-nM9a>p2t*nw(R*YV?_y_Bp+FOY%Gbwr#q;isf zN#)xa)oJ)yi9s@prSt-%b5dqMNa!RII>~OG^U<wd0K_KyP;eP|9=rfP1RsNCpq71> zb@b>v7-@XT^-ljw{)HuPDRg^Dn*^uPM$h4V0r!S5DjLDP8@Rp^+zG}JHr^>zFY`~* zSHR!FtKc<&9a%LGEC7o@30Mkvw^|O$z$c&rtOlQgwdfQ71{MSIsfnjO5C<vXJNX7m z82$lk+Jo-?m!>D@Q^2X<bZ`dXs}g1)I2Q~8SAo$0izntr@C%;%3+HKI24zoc+mcq> zCYrWddTAMLFjhfo)zc@7o+)WZ3#|9r5dvcvm92ftXxwB4Xm5>MFe>;r8aMjlR;(iD zv0D2WcpN+do&>+4jeQQnU?XvIsksjrFMPu2=5uOlI5qTFcMN&Fg)zf8A4^4~)ks=0 zifAOQM$&2|twz$4kwPPBHIh~%8k=C>d~atsyIw~56R}<L4Bt@6Lt0OC7x>R0=_b<O zPDC3%QN0P?0z1KO@QpuF=lIX))}Rf@1MR@8gii-cK$-sxEqNlXcp|NAB3j*vXmux| z)t!h|ccQrrTmh~JMPR1W+q?z-3FeZQPVO3iyIV=#*D{t{M+wn{xI5W%(*d9bQC%4M zT!iN2XPhTeu7~kIf>xv)pv^H=fM?7u#)^_!HL0aYt%lULlG;{M+e&I%Nv)dHwvt*k zscj{-6sc8{S~aOvlUg;YRg>CQQmf`)gF(Kw%X|6v;9CEERwR;Wj-ep`UtkxAGZ3D- zk&)#vMp0eax3Y#cktC~WwX837a7vjo%bI8zsjVb`>zE^MV|KE`UrWudrDj(%@2lkL z5_BO^{>|8q|1wJZtF$_hFu7-ah|v=NucT*9@%%cz{^)V8A?;ee@tJ^UzCmZ=qTOtb zex(Q6tK<9)ZeQ9sx*zv!z^WhbSnpo%&v9=j?pX4s$c1oEF}_-~qU;mI5{~CDBK#9_ zx00D@l-zA(CR*XLcZ#`E5jm^iKNXkz<DAj{@0@Yp%;U>UzjPjM`pB8&AMO0c9|{d_ zga%JL^Zbyrs43<w@egvAHdRB5!On`NTBoe(8)s$HI?6GUa^ygdIh5r>r?#nyvUK9@ zKcPJB9pCRnnOak(_Oyl$<Zl2i;tk5yg|ZExZ0*S<Us3Zfq<s10^elH+QwloHcdu_s z&|-c}i@Bciwxzr|<h(C5{gi)`v}ML4dmh{SpV)nmLs;dyoV9=}Im>>>aZvanc8EO8 zdg&y80i~Kxsmh&?xF78ASi-+Y+EL3}okdW837WH|{s)wBE496x+Fnm>FLi%U?S}p3 z)ZlVzunhh<6zX1y1R9MlZVL3C1z*gDq5-db41aW@21=koDP?<!8W=&@9;9rg)ZYfm zR!42zPi>S^8<$X~-@%n-yrB{63-l>aDg~A5c{&9J>Y>0^Vy)&Mze9N6XlA~wgHzAJ zy5KCH*~T+TJCiz%HY2)n)(8W>a62F=&^^FyqoKnra#rfUOO37Nx!FATHnp;fXFukB zMdVbtI6@jLc<&0*Sq{Y$&>%_<J!lZ4zDN77l7~wPO%a+Rv>utaj{p7CI$bDngmkJY zafFg?p`@E-j&8YizRguG|M_W8-MmCyG&+mf*S{1huJfnD#ielgmKLj?#pEnl^@IXw zXRhS`q@&^fe%PJ(j9Pz>{490GHO->Nk0jM$)c7B$@s}y>o4jEeeEchF`8H>X{{(Nk z1q%F)TE2r?o<J>M$D3b+k3&!;0v{KVi~Hc?iBRZm`1qIb@kIFe=kW0_q1dmX*kmZS z9zK2;KAsF8|B^hu10M?oAEM+_sOzy%(xWtYLe1x(=1lnbLHIZXRiAB^4YQ%&Z0I+e zx)1j7cA!L?g@>W;I_|FH?mF(uSYN0mYqd+^Vp*rHrPf5E$g?5ZK|asc@NE0$`U<2@ zE9g@VErhEh+=-K_%-(8w?qRqXJ)Facn0nX-B{ssno2ai%NGoQ4j-jTP;;ZASI-cSm z&V=yqWm)BQR9?RPGpzj^UGL(*Tz&YzaOUWk_WE0(Yx?Mr_B5a6dQX@iA*bIu$VKzv zSNormZ+nni`PSv0!>{tE5Yi~&dmqq^|LTitW32QO{;&O4Y%KY&wL^Iv|4HznzZhPU z{E&MeYhbv`kc4vHAa2V;o=YE4u=((RmdP>C?Fmoc|Ndux^1qK8(8HHekv(YZVp({f z$Nuw@rfT+M*`>>bBkTX;BcOcnSSD5YBAb47-zQmkbsq;@`EQTl$>5FI@7?RcQ0ChI zlUTX^uA?QdW!L(5J(aoVdvNVmxZ3iuA4Q&h?}HxA@&BHV?xU6TKf_(;zv92|vx6Kt z)`8udGyEm~X6n6N5R*5--9if=d#3P=@HrNL<nY;%7x=!f>u;k+vIl!ozIFI$TKzxb zzKo5gr~TRTtt;kD1^!$9?`UUx+67khpt_$T*N6MRf)fk;kNiSH9s;Z)?49twYCH3O zXfS{8CxUCCZt&L3yZ0UQ`-J+e>ylm#`GvO7J1x1IDgAxYXwDboLz|M7b8tb`zj>A# zv@!~dBCO%F2LE00=}mvY5zsS3)gO>V^CQjj$?}KgZ#ZrrM?ogce>~&Q_BFR);oYBF ziPGFw#pbRYLN_b@f=eWK(?|53Ee^kbi_7o4$d+3BkLb^nd(0X-;nw*N`lU^^zI^MW z`CugJG!=929{(&KJ7vM)k4XFE>^}=iK%CJfJrTQ#vku1hdk+6kd%XMg{E)iax8w;p z5gAoWzq?VmltZ{~`Tky>sXMVV_}vF`Z`pUp;7ze~jI?a>*I4Pb3fc0WzY2M0dv#*I zn~u5nnb}M8!7lCn9{;)Y-fvR-94nB+pQrP>_mg{bY0LXfjm#07k7oHbKTWxGit=Sy z-eBcOI_~#5^S{`Cd+_DxIetIfq5hfvF}&qo9%;?b@sIE)Wuy-y>KsYTf3E2l%p4_- z({vNp`4ajcAOC?IO^<!D-;t4B{=5E%*>^I2=8_I&+v-n|QH}qav_pGzwEZHo_1g#S zdt5p_|2I5k`)=YXX9}A7R`~Mxxzf`SCMjt~#y?`5d<<4_+VIbjGYK1nHn1C-zzeaE zAhr>DTB``XtW^YbUi=PquE9FgVb&hP5!N2Ukyt`_mz3u4I~Lmq3$TzNcAk!Bb^B8+ zB&_9k0;}8WnHz;!-9FLT#JuJdC(iFozS+B--8EnGI~zL)Uo&55;=8lwxW>)lyXs;I zVX(D?aK5#KaDgi}5QbVC2p3x$2qUZwgpt+;!YFG40SgG&K)?b5HW03`HW03~HW04D z2EtR$HSQnWr=2m@2Er}Y`oXQ%`oV41`oZni`oUOh{a~E6elXrzKe)$QKe*RgKe*3Y zKe*poKX?G^2d_Clvlb6t!s5YV=QV5D;9p{E$C+;}8!WPx4HjF=1|`<A!4homR69$p zeS?p!eS>AzzCo$AZ?N3jH&|iq8<bi52J5YTgU_vfgRr%4u)*3l_`=#Z*obYO&dw(6 z^Bmw*VWX$e*^Hf@?#>o$_4IHe*z4)#R9hPe>>$!u3lzHtPEzb1U^4-`2iQgsy9dhJ zJ<wY09^_iP2YJ@+LB6$n(9zmGIK<jLIMmubILz8T=wt039FE<C+1N%9iw7rIiw7rR z@n8j35yaNPIo8&}dDhm!AZzPju(fqC#M(L-ZfzZmz}CTTca*hqaJ{v1aHF+yaErBa zaGSMq@Dpq0;BIT>V6wGx@Pf5+@DFnn-=m*uZZ<c&)2zjV>DJ;wv9);cPiyhu9c%I6 zU2E~+U)JKm`_|&YENk&#j<t9&*IGQ7Z!I1yuoe#%TZ;!J*5bj(*5bi3Yw@7eT0CGk z8x{{%nFUxpSdGPl<yb`!TL&Agt%EPDt%Hr$*1;xg>!8ZoI@oM&9c;0-4$wci_uKZ_ z&9={OwtXIK+vmZw&pxzOu_fOFYa~a|dmqWqrLFx4nRXn%wzRV2d9p9RLfTh9?w-i+ z0NOMERc3YkRN|b*uO}7~PRAzJ0DfXA0j)Q!?@UH)gZQ<=CdyzW<N5r$+V-Do+rOdx zk3>d{;-|4&aw&1dLP{4a3)&zHu3=VpEx$HMh3m+@*hy(^<${Y`_$Qk3xA`foXT3w- z-sPvPq-bL$g|U*NwUrdTt&Hf1g!qDTNBH$dPI$N?DY{!pflUN{t*xXu2uac89E7y+ zv3x4>;vg$84zlt>AukHiw06THL{GOnJI31}JB}mf@$T{1x9p1?>5d%f=X7*WbWg;J z!b#Xw$+I#g&&rfMq{+G5JrBDoovj>kkt5ge)V1uR>F8dEU6sz(u1Ys|k~_&c*jiWV z=01g#IoL{>gRPV~)JmClNSP|<Fn2SSR(c_8;%HoIT}J8dcK(qbvT~=Fl{>wx+-Ya! zP6)X($myg8tHD@)6Wc3d1@1vyvAxnB>GQawun;zhI8UgjoE$8JJ<r`gsmV@TY_hP1 zqo$}L?54fUnoCz}pCuP*HQh0423A@$GV4934YtGnMLO@R_lY@+9X?9UR<rScz)l~f zK2#s#{|I|7ozxuGX}VggE}hgo)@!<2+b*5d0@iK1S_?0o)FRezx>`FgF4AxbxmwCf zPA>MyKE}U{6`foxla=CM&dN?MHp*7uFJpx#7i(oJ@qfZfPp(?0){#$<m2Iu8%(Jqx z(8|g}D=Q1FtSnS@3j1HGK{ep+P+#JHrM`j=JJn9gxJ&KAzgz9b|F!xW|2GPordGCg zv9h&`m91T@Y!!QF1?)!>+cE8}Y;9|0Yg;Q@+gjP$*2>nlR<^davh_e@D=T1{&oDV{ zu#R>Z{yw^o(?K7u*<mMkXYe1X*=Z-%XYe0|EG|G6_ho(a$NI<4q51^ma>&YMcI+dU zLn4>CdyBrs>7{Sgw>yW4bS4C=G{m2zCpik+Yfm^i*j{@ID`>yP)``gLKM?-3e%k4Q zCAMd{`>cMJH$JbQXU+7_`p?9itS4jr<OTf#Wt^g?@YIX!*6N6Tw!h*p(nXFDS?_3( z^^^!3H~44jnWXlne$zPw>uqm4ZN-8cX}-q}uRhpugNv}`_CD{OrDqXmww_J=IXbXU zIFC2Z*YllD*mhgMdl%}3ym66U<h0U@S;Nbv&sf4+mg=QWYyB}RdR?)Yvy8Ww>Qd}% zEN6W$SFg}3obL21s|a6>J(mNecfrMy4(>Xvy5#Hi{Oh2N{+#vWZuB%8ajSF{CECoc zGo`m^b}#6Nj*vI3?U3d+z0K*VvChF$*xVt9Db^3WVtJ>I)cEf;;f?H4>!^3=9pvOI zcB?79Q|~05UF=#@dbi$<zezWdrq8-#E`1o5HVuaKoQ{SAyA^qc5tzw0`Hq%e4Y#A| z=(NVBT_>lH>C9?%8`Fh-Z+*-GtXj7*UD^NE#}t}E{Jq%!rp!U+Ag7h-ZF=KB*c^=i z5cb0<bEsj5kU5NfaSBWMeefU7{y1fhFh}4&l6`W@{K)(W|55ChQ|4%MH2!1QH>b?8 z=2-m4v42jP<IVB-`?8NtVUhpG_)jn=;O}Sp;Xl!wi2o#W68@9T$xe<rg_YD?)1U7q z<d{=gQOz}{nbYu}&dO@88DIwBKf|1X|4efx{<BzV&BeC=+4u*Vf%wlc=ion=mDgNz zo;eTyAXZ>=>D`AwtD$BnRJzDqgnyVBhW}!7G5$-;CHRM%;rK_G5%@=%k@!a$`YCg% zxfK6p<}&=3o6GTEVXnZBMI>Ct3Qk)YE8vdD?oYnChjsZj=3eao<eLfnAEb@B&)kRq ze*PEIMn)3sNPN&d=p14mG7mZ3trbmU9ySlN*7%5dgmCOAvC{xMN<1~$Om>WUfjx%G zOfihU&5Pzm%Jq_YiJTOfBJzM`C8rDHjMtqW<{#!C@W50vmAhD3!kx)#rZI1tH%Sv) zOSsrtath6R<~_pSH}B)lGP8&|+swvR(Ff)OQosfiX)+=qw+qYyO1BUzMm^0Ub``WS zi?L?Z)9@cQ{7cLd=RmR0<a990%rbTZl$ugfTaFEqkc?pDpDx%U3CRe?=_Ml==TI5J z;Ky1M;aF=T4%V8O54e=DF-y0b(eieuckce}xyn95WPYNW!-Mmodt%A8Kx~S%WgK$= zV-~T7oqaH;BOmfh+Y1fuV#<=y3$|jpL_^@@Fivq8y|fYC-hb&x=X-z2Vf(fDR^YR< z(fvjKR(LDQF4V~!lA4r44jr7D-Jtv})6e7iZrsmnj?=-OyD=`4qqlYUb|lp<K&W@1 zbtMGjX;{gVFge5xe6EcnVHrxa%(2{)yN23JTkQ;N%4TR2#1S`0HFMpeIWH0tlp^zP zd0y^IcyDso^5{m+GC9qptL-xZ$E2SS8p)B#QSfvSx<B_II9%2>I>YDU$~ic?@A2*L z+5bkk@btewx-x$_jA$L1BlO~&+l=fdB`kfkBSuR-N1=Vj;rZa`k&e3Ga}YzGleedz zljzxR+VA7`hQw@{kNw4$;j{eyPak`9cDzWmDw*HD-kr`BHfo!H`OICie}T*j+HH_` zkyq(o4)RKVZTPj~xio}Fvk}NVkqa%69Vf%r`=ZgI`wFyS>9!{AURrP(*$*&UMmo2I zw8%8tQigru0OI6RHj(C`J&=?$)NBU_WPbbNom@C7_=#3aeqEcNNQX;`>0@7E>3f-T z5G%OuMVpad!2RiW$oVkd#5Wb~k(PMuG|Rfq?xlh<<s*Bf)KXJITanhRRYL_ia`3m5 z-$BhBLfvN{L0Sq5cYrTMG6%g}8)TterR9PqU7>OsLT!;!a)_%fPsx=$C5K4pKsE=m zP@a%=9qA9!{3r3!ycWpcASB?GfI}n=DVIY}(`F9>87=*BI<4<}PQP#e=O7Ph{@nLD zyWI#c2R6ioH-nmJc@B6}_)}<*>0<&)1@B9{+1li6DUrS}=QOpY?t}i&da`Of-F}1c zjGLxxIz(EV<VVIsZ7igQr4?l)rbyn*72XzyNM&aa_hxRjl(#{9%SC<%@;pdWa@p3s zNj>M7{n&KBAgFt6y34wnP+d4Q7fQAx=OLs8tH9(pZLuA_%)qM$^>!lXj=U6i@W_F^ zovVjka#3&RUl$L&ytnh@$V-OdzjWkK?xNlHc{Y=7>+eWe;tHpy^U#X8QltCM$G&3c z{YSCeerN3LT<3g8t_#PUFky`I+?X-r#ygX59(((3PSMSG-965E{nmSL9OJw}z>Uto ztoxC5KOTG6{o|bSv3HLd>r`4dY~9TS-|NKgmb=@>i`y_^+?esst_c(PYLbI{g4+tW zpPP?+qT3PoB)1UvWVaXYDehtS@sxX%r63M98MJF@IYL$G*){T|s~u&!wxvi-x3Q4; z;+L2rL0qJjxYEu<28b&oFSnUb0{R54K=_-zyVe!1lrIm6D?Bdi7~+a7b*bO(&dH{4 z>+QKkxuv1ILXU;s3@r?K1qB5c72Hs8U%`_FQwrWK*wLYLhg&<m(XoBUu^lINEbh39 zC*^5uNxQq8U2aU><F0Zm+;aC5ccokAu5g#TrS3BHa6eXk(a9a@vfIq9b|ZXcX*1fq zP3}fCdmG#^mXz0{>HExG>sGp-x@-6v#8!8knxO7i_o<(%d({JK1mA{;qwm}9CfuZp zrCYb2??g26m549huiTyPE_b*4HD8Npa(($)glSTm??vSBwY1iJF`^CMi^x;?>U7l} z4Pk-mV7}tp5uH^RbpT(FC{*24chy7nR0pYEqEAAbbOPV&I#HjbPu8dC{`ypXnm%0* z&}Zl~^;!CCJy4&6mgzh_NDtQM>kIUSdWasXFGA;ZvA#qP*CX^uJqq2^W%_b`g}zc> zrLWeb^)>oheVx8u-=J^QH|a6P*Ej21^sV|f{S$q=zC+)s$D*COOW&=>>wEOQdV;=B z-=CxOPxS-(=V+{cp&!%_>0jz!>0j%K`eFTuepElEA7_9gGtU*K%&cVYS#Bzrd#*NX z%%`T(tYrqe&a5||n=rG`FU&@>$yAxmW{ZiKYU7zG%osCUnU&U<xT!VUO~NFZo!0Rc ziw5SWJ92c6$;ruSWxg~!%`Wq`I?#M$cB^)(Q%+uv^uquD%Mt%CemNr3^21mXzvqXv zaWzIw(0!$i>*L)>(8`5#rKJbli?!>uL5nwG+I&hlxVh!;7Jl8+;t@cWZ^i!gK3jga zq}ZnvC`1DM^ar>5NB)zR|G(YtzuoFTqkT&&4_bF11Gd@LoRW5oJlv7p=B35AY}cyW zo|fG;t8LfNM~Sun^Z9>^*!v&Kn$|ErsdNedT99?EQLJZO#%k6T?B2bK6|K>%W?joF z*5l43=Lx=Y^px{k=l9Mt&U5@9=0oQr)~)6`^Bl47ztCC4-s%$ey)NbdG0WKZx|}c6 zl{qV&ZG5dL&W_{l*!fR7DgH52?=(34SCe(CubiF88?pEQjjVDr?Q{7!ke0P8x0TzP zHK`N%Qc-{RG<Se|4(m>X-68HU_iFW!`W34<FRH(&zpB5fmsAm}Ij^X{t5?-)>UH%G zHC0VxO=pIBL(Nogs<%|J`lotZy(4Qotm({V{bmkpH49jmDPbjM8LKX3tguw5)#_8V zmQ|L|)dsauRjG*bR7`DCakX6~SyO3XEoCR`Cf_KZRT8apbZgy4=jnEuk2C5{x{L0r zyXgaUPkoR+n3a#iS>HHHAES@cf736qhVZifJ8KB9v4ZdqJylO*4Pl0U1AYHuT_X1I z(eN)rv%egTewkjWKhfnH+a-F9uGF8Q!B3!ruSbiXYuck5{}o!-N6iy_CzyY!&~LY5 z#Bh{z4z+eK^(5nC8AG_#mb7h|VYt+FCj4hv;TLCx-;fDcRaxQkRiWl|^vbO8zFFbr zS>c75aC4y@B~5kSAXA6AM=;viBX7uKD|G|kbGlL8q^`GLS863Zsj8qrIZw)*Nya2@ zs}uNg#l6m}&YOI1sMPt|ZO@A45WY$EEB6_`J+*^@*dc0wx|r_*{e|_rO{$Jnr{n1D zhtSJTV%=v7-_}{FH<`BR;Rl<aps9Wy&F^QXE~iJ%aXI~S&dIqb=klD1In#62<TUXu z^Hz+nWF*y__2y&LM9MHt)*PIfSOrkdRMQ)G237%-GhKAsl+HyD{W`vx;$wA?CjfT8 z&|)jTJuubYYnkqo5{tD1N%sldsjMB4E~^HT?u)o@07>IdoTsTuNy)xR!e{Q4%il>H zbAjAZzr~$u2IJ0P?}eoHSKK$Kqg*K&+H^@TYI7$4O_8sa**j{hy;EcF$XfMGKo0aK z2{*E0&8in8(LjH8m`X{ws<-i3@!}iXf5x4vp2nTd2)BSyaWAw3N3kk@GJ1MV=rr}L zJjJR8@zpaDpH&UX>mPBavo?^X=xlt`;DffLbAZ!BHOV!MEEN3^|4j3;joX}iE%VrE zx~;uGNA3g3JvK;rVxA4zJ5LLm^YlOREbAeXC!sfcC~#-6pG5NXciePsEXF^R^#mzl z`putmHI20d?ywHW(=DhZJi=}adv~4OWqn0z`aWFv!{$-;H%wz4LUP@bPlOYuvDzg$ zn}R!))h?ly)ai61Ap!sW17E;@QuZ|e&9G&ctG&~eGEHOEO45A=cPgt^lB?5kr<=dv z2I*SLSiTc_+BevCy@zYeTZB(jG5e-}+Bj)`+Gg*>?VWe*ouIT;63!Zqq?gT4bvAy3 zjsL#fHIs3tvPv(MYDpKVk7=xmN&YD%`5%TmLkV|JH$}KX{y)H%%|*UkYuCO*TIx(z zpd@a(E_3YtJbQnx+y}x%AsaH^hP2FylzEyNBX^Xvr>W)^+!?wH?sW4iZkl&W@Xurw zN=lP{AMKi_m&zTz2Dc^eyld~?WA92^p3176)YAR9Y2G;;|1?&wB(KOHeY9L#-?4jq z$L#U3y2;&aste~#QzE~nn)7jIsLyeyo4?_{ksZ@qNys#F1MW<7HSSb%4ektc9q#lN zF|Q(I8vhuTn4@v0@()spc|C5+n70x#&D@1M)BFT?s<{Jqh8c_7GUjcBOfz@m&NR2< zPBnMp&M@O}SuI2czlKkEy#xDZenkIqH2d&!*cWsn^6g}H{a|;7oj!c4gi+7|jDm)- zE^-NDAKBM88aX9no}-+H`5ogt%I{dlKa<#9Bwu<wo)OURkz<pc7qOC3&hI4N+1y9L zAy&uCm*PZg7=+61!d85rEjOo4PTS^Lmh2??kbNFy%rCFp6H_z*Rs-%nnCbVNvkA*3 zUAWDi3%?9;hPlGA!?NP=t;aoa=Gi#IU1|TU2lE?}74s<W=2Pn4gd6um;;^oaZvj5Z ziE)Lu#V2pN!ub=vJ*9Kydz3B|%MQEShJDx~tkH(?jmbSU=)u03W8@2tdqUb0a-5Pl z3aVa`b%%dXt3mAUIbRJ{7pU9RPt@(|4t1v*tHu#4pPgSvQm6f(d@z<B+B|a2q|J^3 zb(gwZN!~QIJXGD0mHu&j6Xz;*t-3;8sxDWTsjJnM>KZj#jZ{O_P<4?SrY@%6@1bs1 z(t_EkfJV_#x2jv&cQam%XZ`v2M*b0=c^@g7=hb+^|6rar&zNV`t>!uNN7A~O)P|Ds zElziJGieSXMb(_*rRrLGwHB$6mus?eb|tyG3hvDQj-!0Vu`^G}*o5@bIp!VYmt1D$ zLh?XPTfD(MYo5!*p-iHwDug2rv?=yPv)RQyB^(#5+VvpJ<xLk;V<Xi_zUVDE&$aZC zF=mE89_EU#1My@KCgV<tG1gwoiUFEW_j&huZZF~6+^*`)H?8>&=pL>ZfF|{0cd5IC sI|nnOJ5(K}`Vc1*qdT>5rt=FvQG1^{OP#F-s&mx2>O4{wnov{!3o;GhWdHyG diff --git a/android/link-assets-manifest.json b/android/link-assets-manifest.json index 24f6f419d9ca..a1d9071736e7 100644 --- a/android/link-assets-manifest.json +++ b/android/link-assets-manifest.json @@ -26,44 +26,16 @@ "sha1": "c129a146979b642a446574e109b7bcdd8516d5d7" }, { - "path": "app/fonts/EuclidCircularB-Bold.otf", - "sha1": "7c2a5137fdc62618d404ac0cb54f8e732cc43161" + "path": "app/fonts/MMPoly-Regular.otf", + "sha1": "b6cd0bc868fe5f53469bf52246917210c807954d" }, { - "path": "app/fonts/EuclidCircularB-BoldItalic.otf", - "sha1": "77ee92e4787cdf77c2226b9d68fe5374505bd1d0" + "path": "app/fonts/MMSans-Bold.otf", + "sha1": "048a70c36b9a3453853ecff2ded9b0e88b411dc0" }, { - "path": "app/fonts/EuclidCircularB-Light.otf", - "sha1": "21fd3c7c27918511ef81a5e695ce93e6ff631c0b" - }, - { - "path": "app/fonts/EuclidCircularB-LightItalic.otf", - "sha1": "6f4e697f65c6d82caf50a31fed1539f3aef733b7" - }, - { - "path": "app/fonts/EuclidCircularB-Medium.otf", - "sha1": "0a2cdb45ab1ce34570c534738f651ac7c57f6030" - }, - { - "path": "app/fonts/EuclidCircularB-MediumItalic.otf", - "sha1": "fe33bcd91e81d7af20132b4ce1ac5918a11a6626" - }, - { - "path": "app/fonts/EuclidCircularB-Regular.otf", - "sha1": "53316f985467975048f477e4afb784ef64b32e84" - }, - { - "path": "app/fonts/EuclidCircularB-RegularItalic.otf", - "sha1": "d9f41cb3b281386fc07d8210a8d32b6a8965b91c" - }, - { - "path": "app/fonts/EuclidCircularB-Semibold.otf", - "sha1": "bc129f9126a356707aa8a50e585cb075fd1740e9" - }, - { - "path": "app/fonts/EuclidCircularB-SemiboldItalic.otf", - "sha1": "77f2e0212711cc8e043acabdc4bd4a264dfeeeb7" + "path": "app/fonts/MMSans-Medium.otf", + "sha1": "4a304a2ce85a51be718c56ec71e7cad713ab7f84" }, { "path": "app/fonts/MMSans-Regular.otf", @@ -73,54 +45,6 @@ "path": "app/fonts/Metamask.ttf", "sha1": "d274323055489d231d009cb3aa7ccfba3620e340" }, - { - "path": "app/fonts/Roboto-Black.ttf", - "sha1": "c572416b9587c40d49ea60c7128f7f17b9317ad8" - }, - { - "path": "app/fonts/Roboto-BlackItalic.ttf", - "sha1": "6c8acc36bbdf17bcd6a33756aa42e2557bb3f805" - }, - { - "path": "app/fonts/Roboto-Bold.ttf", - "sha1": "0ce37ced9c5fcac9bdc452a432c1258870ba4677" - }, - { - "path": "app/fonts/Roboto-BoldItalic.ttf", - "sha1": "8cd79e47ed8a9f9ea79ffa186852ad7cbad5687f" - }, - { - "path": "app/fonts/Roboto-Italic.ttf", - "sha1": "0213e38dffde2a0a5672d84fb62c6aa994e38c3b" - }, - { - "path": "app/fonts/Roboto-Light.ttf", - "sha1": "73a2bb2d6e591a90ffb4ed118a3989fb17b54c7b" - }, - { - "path": "app/fonts/Roboto-LightItalic.ttf", - "sha1": "037ef2bf307642203858dd252fc46eb400684f02" - }, - { - "path": "app/fonts/Roboto-Medium.ttf", - "sha1": "5f16f4d6dbb4a4f12d8ae96488ac209bb49762a5" - }, - { - "path": "app/fonts/Roboto-MediumItalic.ttf", - "sha1": "cab617eccf6db0396675ec9c42e747a4738f059f" - }, - { - "path": "app/fonts/Roboto-Regular.ttf", - "sha1": "dd1b1db13ff1f72138c134c62f38fef83749f36a" - }, - { - "path": "app/fonts/Roboto-Thin.ttf", - "sha1": "9514ad7aee341594f43a33893f0b3d8a6d81f32e" - }, - { - "path": "app/fonts/Roboto-ThinItalic.ttf", - "sha1": "c9297d2166618da2b66a06bacfcbd50b68581e6f" - }, { "path": "app/fonts/config.json", "sha1": "47efd6cacd9d899349b5b491425b288619ba712d" diff --git a/app/actions/identity/index.test.ts b/app/actions/identity/index.test.ts index bbd9017e2773..4aaf3c190fcf 100644 --- a/app/actions/identity/index.test.ts +++ b/app/actions/identity/index.test.ts @@ -3,6 +3,7 @@ import { performSignOut, disableProfileSyncing, enableProfileSyncing, + syncInternalAccountsWithUserStorage, } from '.'; import Engine from '../../core/Engine'; @@ -16,6 +17,7 @@ jest.mock('../../core/Engine', () => ({ UserStorageController: { enableProfileSyncing: jest.fn(), disableProfileSyncing: jest.fn(), + syncInternalAccountsWithUserStorage: jest.fn(), }, }, })); @@ -75,4 +77,18 @@ describe('Identity actions', () => { ).toHaveBeenCalled(); expect(result).toBeUndefined(); }); + + it('syncs internal accounts with user storage', async () => { + ( + Engine.context.UserStorageController + .syncInternalAccountsWithUserStorage as jest.Mock + ).mockResolvedValue(undefined); + + const result = await syncInternalAccountsWithUserStorage(); + + expect( + Engine.context.UserStorageController.syncInternalAccountsWithUserStorage, + ).toHaveBeenCalled(); + expect(result).toBeUndefined(); + }); }); diff --git a/app/actions/identity/index.ts b/app/actions/identity/index.ts index e0b346d9d13d..657b478c110d 100644 --- a/app/actions/identity/index.ts +++ b/app/actions/identity/index.ts @@ -32,3 +32,23 @@ export const disableProfileSyncing = async () => { return getErrorMessage(error); } }; + +export const syncInternalAccountsWithUserStorage = async () => { + try { + await Engine.context.UserStorageController.syncInternalAccountsWithUserStorage(); + } catch (error) { + return getErrorMessage(error); + } +}; + +export const setIsAccountSyncingReadyToBeDispatched = async ( + isAccountSyncingReadyToBeDispatched: boolean, +) => { + try { + await Engine.context.UserStorageController.setIsAccountSyncingReadyToBeDispatched( + isAccountSyncingReadyToBeDispatched, + ); + } catch (error) { + return getErrorMessage(error); + } +}; diff --git a/app/actions/multiSrp/index.test.ts b/app/actions/multiSrp/index.test.ts index 361a275dfbf5..a700b07d6d47 100644 --- a/app/actions/multiSrp/index.test.ts +++ b/app/actions/multiSrp/index.test.ts @@ -4,6 +4,7 @@ import Engine from '../../core/Engine'; import { importNewSecretRecoveryPhrase, createNewSecretRecoveryPhrase, + addNewHdAccount, } from './'; import { wordlist } from '@metamask/scure-bip39/dist/wordlists/english'; @@ -12,20 +13,34 @@ jest.mock('../../util/Logger'); const mockSetSelectedAddress = jest.fn(); const mockAddNewKeyring = jest.fn(); const mockGetKeyringsByType = jest.fn(); -const mockWithKeyring = jest.fn(); const mockGetAccounts = jest.fn(); +const mockAddAccounts = jest.fn(); +const mockSetAccountLabel = jest.fn(); + +const hdKeyring = { + getAccounts: () => { + mockGetAccounts(); + return ['0x123']; + }, + addAccounts: (n: number) => { + mockAddAccounts(n); + return ['0x123']; + }, +}; + jest.mock('../../core/Engine', () => ({ context: { KeyringController: { addNewKeyring: (keyringType: ExtendedKeyringTypes, args: unknown) => mockAddNewKeyring(keyringType, args), getKeyringsByType: () => mockGetKeyringsByType(), - // eslint-disable-next-line @typescript-eslint/no-explicit-any - withKeyring: (args: any) => mockWithKeyring(args), - getAccounts: () => mockGetAccounts(), + withKeyring: (_selector: unknown, operation: (args: unknown) => void) => + operation({ keyring: hdKeyring, metadata: { id: '1234' } }), }, }, setSelectedAddress: (address: string) => mockSetSelectedAddress(address), + setAccountLabel: (address: string, label: string) => + mockSetAccountLabel(address, label), })); jest.mocked(Engine); @@ -96,4 +111,54 @@ describe('MultiSRP Actions', () => { expect(mockSetSelectedAddress).not.toHaveBeenCalled(); }); }); + + describe('addNewHdAccount', () => { + it('adds a new HD account and sets the selected address', async () => { + mockAddAccounts.mockReturnValue([testAddress]); + + await addNewHdAccount(); + + expect(mockAddAccounts).toHaveBeenCalledWith(1); + expect(mockSetSelectedAddress).toHaveBeenCalledWith(testAddress); + }); + + it('adds a new HD account with a specific keyring ID and sets the selected address', async () => { + const keyringId = 'test-keyring-id'; + mockAddAccounts.mockReturnValue([testAddress]); + + await addNewHdAccount(keyringId); + + expect(mockAddAccounts).toHaveBeenCalledWith(1); + expect(mockSetSelectedAddress).toHaveBeenCalledWith(testAddress); + }); + + it('adds a new HD account and sets the account label if a name is provided', async () => { + const accountName = 'Test Account'; + mockAddAccounts.mockReturnValue([testAddress]); + + await addNewHdAccount(undefined, accountName); + + expect(mockAddAccounts).toHaveBeenCalledWith(1); + expect(mockSetSelectedAddress).toHaveBeenCalledWith(testAddress); + expect(mockSetAccountLabel).toHaveBeenCalledWith( + testAddress, + accountName, + ); + }); + + it('adds a new HD account with a specific keyring ID and sets the account label if a name is provided', async () => { + const keyringId = 'test-keyring-id'; + const accountName = 'Test Account'; + mockAddAccounts.mockReturnValue([testAddress]); + + await addNewHdAccount(keyringId, accountName); + + expect(mockAddAccounts).toHaveBeenCalledWith(1); + expect(mockSetSelectedAddress).toHaveBeenCalledWith(testAddress); + expect(mockSetAccountLabel).toHaveBeenCalledWith( + testAddress, + accountName, + ); + }); + }); }); diff --git a/app/actions/multiSrp/index.ts b/app/actions/multiSrp/index.ts index 7dc5c64b34a6..5d6603902fe7 100644 --- a/app/actions/multiSrp/index.ts +++ b/app/actions/multiSrp/index.ts @@ -1,9 +1,8 @@ import { HdKeyring } from '@metamask/eth-hd-keyring'; -import { Json } from '@metamask/eth-query'; -import { EthKeyring } from '@metamask/keyring-internal-api'; import { wordlist } from '@metamask/scure-bip39/dist/wordlists/english'; import ExtendedKeyringTypes from '../../constants/keyringTypes'; import Engine from '../../core/Engine'; +import { KeyringSelector } from '@metamask/keyring-controller'; export async function importNewSecretRecoveryPhrase(mnemonic: string) { const { KeyringController } = Engine.context; @@ -38,23 +37,60 @@ export async function importNewSecretRecoveryPhrase(mnemonic: string) { throw new Error('This mnemonic has already been imported.'); } - const newKeyring = (await KeyringController.addNewKeyring( + const newKeyring = await KeyringController.addNewKeyring( ExtendedKeyringTypes.hd, { mnemonic, numberOfAccounts: 1, }, - )) as EthKeyring<Json>; - const [newAccountAddress] = await newKeyring.getAccounts(); + ); + + const [newAccountAddress] = await KeyringController.withKeyring( + { + id: newKeyring.id, + }, + async ({ keyring }) => keyring.getAccounts(), + ); + return Engine.setSelectedAddress(newAccountAddress); } export async function createNewSecretRecoveryPhrase() { const { KeyringController } = Engine.context; - const newHdkeyring = (await KeyringController.addNewKeyring( + const newHdkeyring = await KeyringController.addNewKeyring( ExtendedKeyringTypes.hd, - )) as HdKeyring; + ); + + const [newAccountAddress] = await KeyringController.withKeyring( + { + id: newHdkeyring.id, + }, + async ({ keyring }) => keyring.getAccounts(), + ); - const newAccountAddress = (await newHdkeyring.getAccounts())[0]; return Engine.setSelectedAddress(newAccountAddress); } + +export async function addNewHdAccount( + keyringId?: string, + name?: string, +): Promise<void> { + const { KeyringController } = Engine.context; + const keyringSelector: KeyringSelector = keyringId + ? { + id: keyringId, + } + : { + type: ExtendedKeyringTypes.hd, + }; + + const [addedAccountAddress] = await KeyringController.withKeyring( + keyringSelector, + async ({ keyring }) => await keyring.addAccounts(1), + ); + Engine.setSelectedAddress(addedAccountAddress); + + if (name) { + Engine.setAccountLabel(addedAccountAddress, name); + } +} diff --git a/app/actions/onboarding/index.test.ts b/app/actions/onboarding/index.test.ts new file mode 100644 index 000000000000..635a23d45f1c --- /dev/null +++ b/app/actions/onboarding/index.test.ts @@ -0,0 +1,41 @@ +import { + saveOnboardingEvent, + clearOnboardingEvents, + setCompletedOnboarding, + SAVE_EVENT, + CLEAR_EVENTS, + SET_COMPLETED_ONBOARDING, +} from '.'; +import { ITrackingEvent } from '../../core/Analytics/MetaMetrics.types'; + +describe('Onboarding actions', () => { + describe('saveOnboardingEvent', () => { + it('creates an action to save onboarding events', () => { + const mockEvent = { + name: 'test_event', + } as ITrackingEvent; + expect(saveOnboardingEvent([mockEvent])).toEqual({ + type: SAVE_EVENT, + event: [mockEvent], + }); + }); + }); + + describe('clearOnboardingEvents', () => { + it('creates an action to clear onboarding events', () => { + expect(clearOnboardingEvents()).toEqual({ + type: CLEAR_EVENTS, + }); + }); + }); + + describe('setCompletedOnboarding', () => { + it('creates an action to set completedOnboarding', () => { + const completedOnboarding = true; + expect(setCompletedOnboarding(completedOnboarding)).toEqual({ + type: SET_COMPLETED_ONBOARDING, + completedOnboarding, + }); + }); + }); +}); diff --git a/app/actions/onboarding/index.ts b/app/actions/onboarding/index.ts index 8b1e2c3e6e0b..ea149b87994b 100644 --- a/app/actions/onboarding/index.ts +++ b/app/actions/onboarding/index.ts @@ -2,6 +2,7 @@ import { ITrackingEvent } from '../../core/Analytics/MetaMetrics.types'; export const SAVE_EVENT = 'SAVE_EVENT'; export const CLEAR_EVENTS = 'CLEAR_EVENTS'; +export const SET_COMPLETED_ONBOARDING = 'SET_COMPLETED_ONBOARDING'; interface SaveEventAction { type: typeof SAVE_EVENT; @@ -12,7 +13,15 @@ interface ClearEventsAction { type: typeof CLEAR_EVENTS; } -export type OnboardingActionTypes = SaveEventAction | ClearEventsAction; +interface SetCompletedOnboardingAction { + type: typeof SET_COMPLETED_ONBOARDING; + completedOnboarding: boolean; +} + +export type OnboardingActionTypes = + | SaveEventAction + | ClearEventsAction + | SetCompletedOnboardingAction; export function saveOnboardingEvent( eventArgs: [ITrackingEvent], @@ -28,3 +37,12 @@ export function clearOnboardingEvents(): ClearEventsAction { type: CLEAR_EVENTS, }; } + +export function setCompletedOnboarding( + completedOnboarding: boolean, +): SetCompletedOnboardingAction { + return { + type: SET_COMPLETED_ONBOARDING, + completedOnboarding, + }; +} diff --git a/app/actions/signatureRequest/index.ts b/app/actions/signatureRequest/index.ts index db042fef16dc..3c98591d8dfd 100644 --- a/app/actions/signatureRequest/index.ts +++ b/app/actions/signatureRequest/index.ts @@ -1,4 +1,4 @@ -import { SecurityAlertResponse } from '../../components/Views/confirmations/components/BlockaidBanner/BlockaidBanner.types'; +import { SecurityAlertResponse } from '../../components/Views/confirmations/legacy/components/BlockaidBanner/BlockaidBanner.types'; /** * Clears transaction object completely diff --git a/app/component-library/base-components/TagBase/__snapshots__/TagBase.test.tsx.snap b/app/component-library/base-components/TagBase/__snapshots__/TagBase.test.tsx.snap index a3df343ffb50..28c295731e4a 100644 --- a/app/component-library/base-components/TagBase/__snapshots__/TagBase.test.tsx.snap +++ b/app/component-library/base-components/TagBase/__snapshots__/TagBase.test.tsx.snap @@ -9,10 +9,10 @@ exports[`TagBase should render TagBase 1`] = ` { "alignSelf": "flex-start", "backgroundColor": "#ffffff", - "borderColor": "#848c96", + "borderColor": "#b7bbc8", "borderRadius": 999, "borderWidth": 0, - "color": "#141618", + "color": "#121314", "padding": 16, "paddingHorizontal": 8, "paddingVertical": 2, @@ -29,7 +29,7 @@ exports[`TagBase should render TagBase 1`] = ` } > <SvgMock - color="#141618" + color="#121314" height={20} name="Add" style={ @@ -53,12 +53,12 @@ exports[`TagBase should render TagBase 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } testID="tagbase-text" @@ -75,7 +75,7 @@ exports[`TagBase should render TagBase 1`] = ` testID="listitem-gap" /> <SvgMock - color="#141618" + color="#121314" height={20} name="Add" style={ diff --git a/app/component-library/components-temp/Buttons/ButtonPill/__snapshots__/ButtonPill.test.tsx.snap b/app/component-library/components-temp/Buttons/ButtonPill/__snapshots__/ButtonPill.test.tsx.snap index 82d91e3dbe89..a73623d27abd 100644 --- a/app/component-library/components-temp/Buttons/ButtonPill/__snapshots__/ButtonPill.test.tsx.snap +++ b/app/component-library/components-temp/Buttons/ButtonPill/__snapshots__/ButtonPill.test.tsx.snap @@ -11,9 +11,9 @@ exports[`ButtonPill should render correctly 1`] = ` style={ { "alignItems": "center", - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", "borderRadius": 99, - "color": "#141618", + "color": "#121314", "justifyContent": "center", "paddingHorizontal": 8, "paddingVertical": 4, diff --git a/app/component-library/components-temp/Buttons/ButtonToggle/__snapshots__/ButtonToggle.test.tsx.snap b/app/component-library/components-temp/Buttons/ButtonToggle/__snapshots__/ButtonToggle.test.tsx.snap index f005391e3d64..856f92468f39 100644 --- a/app/component-library/components-temp/Buttons/ButtonToggle/__snapshots__/ButtonToggle.test.tsx.snap +++ b/app/component-library/components-temp/Buttons/ButtonToggle/__snapshots__/ButtonToggle.test.tsx.snap @@ -10,8 +10,8 @@ exports[`ButtonToggle renders correctly in active state 1`] = ` { "alignItems": "center", "alignSelf": "flex-start", - "backgroundColor": "#0376C91A", - "borderColor": "#0376c9", + "backgroundColor": "#4459ff1a", + "borderColor": "#4459ff", "borderRadius": 20, "borderWidth": 1, "flexDirection": "row", @@ -25,12 +25,12 @@ exports[`ButtonToggle renders correctly in active state 1`] = ` accessibilityRole="text" style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, + "color": "#4459ff", + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -50,7 +50,7 @@ exports[`ButtonToggle renders correctly in inactive state 1`] = ` "alignItems": "center", "alignSelf": "flex-start", "backgroundColor": "transparent", - "borderColor": "#848c96", + "borderColor": "#b7bbc8", "borderRadius": 20, "borderWidth": 1, "flexDirection": "row", @@ -64,12 +64,12 @@ exports[`ButtonToggle renders correctly in inactive state 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > diff --git a/app/component-library/components-temp/CellSelectWithMenu/__snapshots__/CellSelectWithMenu.test.tsx.snap b/app/component-library/components-temp/CellSelectWithMenu/__snapshots__/CellSelectWithMenu.test.tsx.snap index 036368b43bd2..d46d2efccd99 100644 --- a/app/component-library/components-temp/CellSelectWithMenu/__snapshots__/CellSelectWithMenu.test.tsx.snap +++ b/app/component-library/components-temp/CellSelectWithMenu/__snapshots__/CellSelectWithMenu.test.tsx.snap @@ -209,8 +209,8 @@ exports[`CellSelectWithMenu should render with default settings correctly 1`] = numberOfLines={1} style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, @@ -254,19 +254,19 @@ exports[`CellSelectWithMenu should render with default settings correctly 1`] = numberOfLines={1} style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > 0x2990079bcdEe240329a520d2444386FC119da21a </Text> <SvgMock - color="#141618" + color="#121314" height={10} name="ArrowDown" style={ @@ -284,7 +284,7 @@ exports[`CellSelectWithMenu should render with default settings correctly 1`] = style={ { "backgroundColor": "#ffffff", - "borderColor": "#848c96", + "borderColor": "#b7bbc8", "borderRadius": 10, "borderWidth": 1, "height": 24, @@ -299,12 +299,12 @@ exports[`CellSelectWithMenu should render with default settings correctly 1`] = accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -343,7 +343,7 @@ exports[`CellSelectWithMenu should render with default settings correctly 1`] = testID="button-menu-select-test-id" > <SvgMock - color="#141618" + color="#121314" height={16} name="MoreVertical" style={ diff --git a/app/component-library/components-temp/Contracts/ContractBoxBase/__snapshots__/ContractBoxBase.test.tsx.snap b/app/component-library/components-temp/Contracts/ContractBoxBase/__snapshots__/ContractBoxBase.test.tsx.snap index 56c4c78ddc2d..68c6d10b1bef 100644 --- a/app/component-library/components-temp/Contracts/ContractBoxBase/__snapshots__/ContractBoxBase.test.tsx.snap +++ b/app/component-library/components-temp/Contracts/ContractBoxBase/__snapshots__/ContractBoxBase.test.tsx.snap @@ -42,7 +42,7 @@ exports[`Component ContractBoxBase should render correctly 1`] = ` <Text style={ { - "color": "#0376c9", + "color": "#4459ff", } } variant="sHeadingMD" @@ -75,7 +75,7 @@ exports[`Component ContractBoxBase should render correctly 1`] = ` testID="copy-icon" > <Icon - color="#6a737d" + color="#686e7d" name="Copy" size="24" /> diff --git a/app/component-library/components-temp/CustomSpendCap/CustomInput/CustomInput.styles.ts b/app/component-library/components-temp/CustomSpendCap/CustomInput/CustomInput.styles.ts index 237d3db4b581..63bb0d923c06 100644 --- a/app/component-library/components-temp/CustomSpendCap/CustomInput/CustomInput.styles.ts +++ b/app/component-library/components-temp/CustomSpendCap/CustomInput/CustomInput.styles.ts @@ -2,6 +2,7 @@ import { StyleSheet, TextStyle } from 'react-native'; import { Theme } from '../../../../util/theme/models'; +import { getFontFamily, TextVariant } from '../../../components/Texts/Text'; /** * Style sheet for Custom Input component. * @@ -35,6 +36,7 @@ const styleSheet = (params: { theme: Theme }) => { marginRight: 16, color: colors.text.default, ...typography.sBodyMD, + fontFamily: getFontFamily(TextVariant.BodyMD), } as TextStyle, maxValueText: { color: theme.colors.text.alternative, diff --git a/app/component-library/components-temp/CustomSpendCap/CustomInput/__snapshots__/CustomInput.test.tsx.snap b/app/component-library/components-temp/CustomSpendCap/CustomInput/__snapshots__/CustomInput.test.tsx.snap index b530124dbf51..2c14bfdca8c2 100644 --- a/app/component-library/components-temp/CustomSpendCap/CustomInput/__snapshots__/CustomInput.test.tsx.snap +++ b/app/component-library/components-temp/CustomSpendCap/CustomInput/__snapshots__/CustomInput.test.tsx.snap @@ -33,13 +33,13 @@ exports[`CustomInput should render correctly 1`] = ` style={ [ { - "color": "#141618", + "color": "#121314", "flexGrow": 1, - "fontFamily": "Euclid Circular B", - "fontSize": 14, + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, "marginRight": 16, "paddingBottom": 0, "paddingTop": 0, @@ -55,7 +55,7 @@ exports[`CustomInput should render correctly 1`] = ` onPress={[Function]} style={ { - "color": "#6a737d", + "color": "#686e7d", } } testID="custom-spend-cap-max-test-id" diff --git a/app/component-library/components-temp/CustomSpendCap/__snapshots__/CustomSpendCap.test.tsx.snap b/app/component-library/components-temp/CustomSpendCap/__snapshots__/CustomSpendCap.test.tsx.snap index 2bdc88560357..bc22b012ed75 100644 --- a/app/component-library/components-temp/CustomSpendCap/__snapshots__/CustomSpendCap.test.tsx.snap +++ b/app/component-library/components-temp/CustomSpendCap/__snapshots__/CustomSpendCap.test.tsx.snap @@ -4,7 +4,7 @@ exports[`CustomSpendCap should match snapshot 1`] = ` <View style={ { - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", "borderRadius": 8, "padding": 16, } @@ -31,12 +31,12 @@ exports[`CustomSpendCap should match snapshot 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Bold", + "fontSize": 16, "fontWeight": "700", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, "marginRight": 4, } } @@ -75,7 +75,7 @@ exports[`CustomSpendCap should match snapshot 1`] = ` onStartShouldSetResponder={[Function]} > <SvgMock - color="#d73847" + color="#ca3542" height={16} name="Danger" style={ @@ -98,12 +98,12 @@ exports[`CustomSpendCap should match snapshot 1`] = ` style={ { "backgroundColor": "transparent", - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } suppressHighlighting={true} @@ -112,12 +112,12 @@ exports[`CustomSpendCap should match snapshot 1`] = ` accessibilityRole="text" style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, + "color": "#4459ff", + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -164,19 +164,19 @@ exports[`CustomSpendCap should match snapshot 1`] = ` style={ [ { - "color": "#141618", + "color": "#121314", "flexGrow": 1, - "fontFamily": "Euclid Circular B", - "fontSize": 14, + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, "marginRight": 16, "paddingBottom": 0, "paddingTop": 0, }, { - "color": "#d73847", + "color": "#ca3542", }, ] } @@ -189,12 +189,12 @@ exports[`CustomSpendCap should match snapshot 1`] = ` onPress={[Function]} style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } testID="custom-spend-cap-max-test-id" @@ -214,12 +214,12 @@ exports[`CustomSpendCap should match snapshot 1`] = ` accessibilityRole="text" style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -234,12 +234,12 @@ exports[`CustomSpendCap should match snapshot 1`] = ` style={ { "backgroundColor": "transparent", - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } suppressHighlighting={true} @@ -248,12 +248,12 @@ exports[`CustomSpendCap should match snapshot 1`] = ` accessibilityRole="text" style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, + "color": "#4459ff", + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > diff --git a/app/component-library/components-temp/KeyValueRow/__snapshots__/KeyValueRow.test.tsx.snap b/app/component-library/components-temp/KeyValueRow/__snapshots__/KeyValueRow.test.tsx.snap index a4c9e5f6bfef..e77bf2bda11d 100644 --- a/app/component-library/components-temp/KeyValueRow/__snapshots__/KeyValueRow.test.tsx.snap +++ b/app/component-library/components-temp/KeyValueRow/__snapshots__/KeyValueRow.test.tsx.snap @@ -34,7 +34,7 @@ exports[`KeyValueRow Prebuilt Component KeyValueRow should render text with icon } > <SvgMock - color="#141618" + color="#121314" height={20} name="Activity" style={ @@ -57,12 +57,12 @@ exports[`KeyValueRow Prebuilt Component KeyValueRow should render text with icon accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } testID="label" @@ -90,7 +90,7 @@ exports[`KeyValueRow Prebuilt Component KeyValueRow should render text with icon } > <SvgMock - color="#141618" + color="#121314" height={20} name="Add" style={ @@ -113,12 +113,12 @@ exports[`KeyValueRow Prebuilt Component KeyValueRow should render text with icon accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } testID="label" @@ -165,7 +165,7 @@ exports[`KeyValueRow Prebuilt Component KeyValueRow should render text with icon } > <SvgMock - color="#141618" + color="#121314" height={20} name="Activity" style={ @@ -188,12 +188,12 @@ exports[`KeyValueRow Prebuilt Component KeyValueRow should render text with icon accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } testID="label" @@ -221,7 +221,7 @@ exports[`KeyValueRow Prebuilt Component KeyValueRow should render text with icon } > <SvgMock - color="#9fa6ae" + color="#9ca1af" height={20} name="Question" style={ @@ -254,7 +254,7 @@ exports[`KeyValueRow Prebuilt Component KeyValueRow should render text with icon } > <SvgMock - color="#141618" + color="#121314" height={20} name="Add" style={ @@ -277,12 +277,12 @@ exports[`KeyValueRow Prebuilt Component KeyValueRow should render text with icon accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } testID="label" @@ -310,7 +310,7 @@ exports[`KeyValueRow Prebuilt Component KeyValueRow should render text with icon } > <SvgMock - color="#9fa6ae" + color="#9ca1af" height={20} name="Question" style={ @@ -373,12 +373,12 @@ exports[`KeyValueRow Prebuilt Component KeyValueRow should render text with tool accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } testID="label" @@ -406,7 +406,7 @@ exports[`KeyValueRow Prebuilt Component KeyValueRow should render text with tool } > <SvgMock - color="#9fa6ae" + color="#9ca1af" height={20} name="Question" style={ @@ -450,12 +450,12 @@ exports[`KeyValueRow Prebuilt Component KeyValueRow should render text with tool accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } testID="label" @@ -483,7 +483,7 @@ exports[`KeyValueRow Prebuilt Component KeyValueRow should render text with tool } > <SvgMock - color="#9fa6ae" + color="#9ca1af" height={20} name="Question" style={ @@ -546,12 +546,12 @@ exports[`KeyValueRow Prebuilt Component KeyValueRow should render when there is accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } testID="label" @@ -590,12 +590,12 @@ exports[`KeyValueRow Prebuilt Component KeyValueRow should render when there is accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } testID="label" diff --git a/app/component-library/components-temp/ListItemMultiSelectButton/__snapshots__/ListItemMultiSelectButton.test.tsx.snap b/app/component-library/components-temp/ListItemMultiSelectButton/__snapshots__/ListItemMultiSelectButton.test.tsx.snap index 6afd161f5dbc..dea386af14d2 100644 --- a/app/component-library/components-temp/ListItemMultiSelectButton/__snapshots__/ListItemMultiSelectButton.test.tsx.snap +++ b/app/component-library/components-temp/ListItemMultiSelectButton/__snapshots__/ListItemMultiSelectButton.test.tsx.snap @@ -77,7 +77,7 @@ exports[`ListItemMultiSelectButton should render correctly with default props 1` testID="button-menu-select-test-id" > <SvgMock - color="#141618" + color="#121314" height={16} name="MoreVertical" style={ diff --git a/app/component-library/components-temp/Price/AggregatedPercentage/__snapshots__/AggregatedPercentage.test.tsx.snap b/app/component-library/components-temp/Price/AggregatedPercentage/__snapshots__/AggregatedPercentage.test.tsx.snap index 1066d19a41b3..9fe2d5613be5 100644 --- a/app/component-library/components-temp/Price/AggregatedPercentage/__snapshots__/AggregatedPercentage.test.tsx.snap +++ b/app/component-library/components-temp/Price/AggregatedPercentage/__snapshots__/AggregatedPercentage.test.tsx.snap @@ -13,12 +13,12 @@ exports[`AggregatedPercentage should render correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#1c8234", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, + "color": "#1c7e33", + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } testID="formatted-value-price-test-id" @@ -29,12 +29,12 @@ exports[`AggregatedPercentage should render correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#1c8234", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, + "color": "#1c7e33", + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } testID="formatted-percentage-test-id" diff --git a/app/component-library/components-temp/Price/AggregatedPercentage/__snapshots__/AggregatedPercentageCrossChains.test.tsx.snap b/app/component-library/components-temp/Price/AggregatedPercentage/__snapshots__/AggregatedPercentageCrossChains.test.tsx.snap index bb203e9582e5..11e8e4907477 100644 --- a/app/component-library/components-temp/Price/AggregatedPercentage/__snapshots__/AggregatedPercentageCrossChains.test.tsx.snap +++ b/app/component-library/components-temp/Price/AggregatedPercentage/__snapshots__/AggregatedPercentageCrossChains.test.tsx.snap @@ -13,12 +13,12 @@ exports[`AggregatedPercentageCrossChains should match snapshot 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } testID="formatted-value-price-test-id" @@ -29,12 +29,12 @@ exports[`AggregatedPercentageCrossChains should match snapshot 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } testID="formatted-percentage-test-id" diff --git a/app/component-library/components-temp/Price/PercentageChange/__snapshots__/PercentageChange.test.tsx.snap b/app/component-library/components-temp/Price/PercentageChange/__snapshots__/PercentageChange.test.tsx.snap index e6c5afd9a066..ab8680afc8c1 100644 --- a/app/component-library/components-temp/Price/PercentageChange/__snapshots__/PercentageChange.test.tsx.snap +++ b/app/component-library/components-temp/Price/PercentageChange/__snapshots__/PercentageChange.test.tsx.snap @@ -6,12 +6,12 @@ exports[`PercentageChange should render correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#1c8234", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, + "color": "#1c7e33", + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > diff --git a/app/component-library/components-temp/SegmentedControl/__snapshots__/SegmentedControl.test.tsx.snap b/app/component-library/components-temp/SegmentedControl/__snapshots__/SegmentedControl.test.tsx.snap index 543c41e0a022..87b5eb4cf9ac 100644 --- a/app/component-library/components-temp/SegmentedControl/__snapshots__/SegmentedControl.test.tsx.snap +++ b/app/component-library/components-temp/SegmentedControl/__snapshots__/SegmentedControl.test.tsx.snap @@ -36,8 +36,8 @@ exports[`SegmentedControl Multi-select mode renders correctly with default selec { "alignItems": "center", "alignSelf": "flex-start", - "backgroundColor": "#0376C91A", - "borderColor": "#0376c9", + "backgroundColor": "#4459ff1a", + "borderColor": "#4459ff", "borderRadius": 20, "borderWidth": 1, "flexDirection": "row", @@ -51,12 +51,12 @@ exports[`SegmentedControl Multi-select mode renders correctly with default selec accessibilityRole="text" style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, + "color": "#4459ff", + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -83,7 +83,7 @@ exports[`SegmentedControl Multi-select mode renders correctly with default selec "alignItems": "center", "alignSelf": "flex-start", "backgroundColor": "transparent", - "borderColor": "#848c96", + "borderColor": "#b7bbc8", "borderRadius": 20, "borderWidth": 1, "flexDirection": "row", @@ -97,12 +97,12 @@ exports[`SegmentedControl Multi-select mode renders correctly with default selec accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -128,8 +128,8 @@ exports[`SegmentedControl Multi-select mode renders correctly with default selec { "alignItems": "center", "alignSelf": "flex-start", - "backgroundColor": "#0376C91A", - "borderColor": "#0376c9", + "backgroundColor": "#4459ff1a", + "borderColor": "#4459ff", "borderRadius": 20, "borderWidth": 1, "flexDirection": "row", @@ -143,12 +143,12 @@ exports[`SegmentedControl Multi-select mode renders correctly with default selec accessibilityRole="text" style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, + "color": "#4459ff", + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -175,7 +175,7 @@ exports[`SegmentedControl Multi-select mode renders correctly with default selec "alignItems": "center", "alignSelf": "flex-start", "backgroundColor": "transparent", - "borderColor": "#848c96", + "borderColor": "#b7bbc8", "borderRadius": 20, "borderWidth": 1, "flexDirection": "row", @@ -189,12 +189,12 @@ exports[`SegmentedControl Multi-select mode renders correctly with default selec accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -236,8 +236,8 @@ exports[`SegmentedControl Single-select mode renders correctly with default sele { "alignItems": "center", "alignSelf": "flex-start", - "backgroundColor": "#0376C91A", - "borderColor": "#0376c9", + "backgroundColor": "#4459ff1a", + "borderColor": "#4459ff", "borderRadius": 20, "borderWidth": 1, "flexDirection": "row", @@ -251,12 +251,12 @@ exports[`SegmentedControl Single-select mode renders correctly with default sele accessibilityRole="text" style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, + "color": "#4459ff", + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -283,7 +283,7 @@ exports[`SegmentedControl Single-select mode renders correctly with default sele "alignItems": "center", "alignSelf": "flex-start", "backgroundColor": "transparent", - "borderColor": "#848c96", + "borderColor": "#b7bbc8", "borderRadius": 20, "borderWidth": 1, "flexDirection": "row", @@ -297,12 +297,12 @@ exports[`SegmentedControl Single-select mode renders correctly with default sele accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -329,7 +329,7 @@ exports[`SegmentedControl Single-select mode renders correctly with default sele "alignItems": "center", "alignSelf": "flex-start", "backgroundColor": "transparent", - "borderColor": "#848c96", + "borderColor": "#b7bbc8", "borderRadius": 20, "borderWidth": 1, "flexDirection": "row", @@ -343,12 +343,12 @@ exports[`SegmentedControl Single-select mode renders correctly with default sele accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -375,7 +375,7 @@ exports[`SegmentedControl Single-select mode renders correctly with default sele "alignItems": "center", "alignSelf": "flex-start", "backgroundColor": "transparent", - "borderColor": "#848c96", + "borderColor": "#b7bbc8", "borderRadius": 20, "borderWidth": 1, "flexDirection": "row", @@ -389,12 +389,12 @@ exports[`SegmentedControl Single-select mode renders correctly with default sele accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > diff --git a/app/component-library/components-temp/TagColored/__snapshots__/TagColored.test.tsx.snap b/app/component-library/components-temp/TagColored/__snapshots__/TagColored.test.tsx.snap index dbc580fb4b1b..b7c90991ffca 100644 --- a/app/component-library/components-temp/TagColored/__snapshots__/TagColored.test.tsx.snap +++ b/app/component-library/components-temp/TagColored/__snapshots__/TagColored.test.tsx.snap @@ -6,7 +6,7 @@ exports[`TagColored should render TagColored 1`] = ` { "alignItems": "center", "alignSelf": "flex-start", - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", "borderRadius": 4, "height": 20, "justifyContent": "center", @@ -19,12 +19,12 @@ exports[`TagColored should render TagColored 1`] = ` accessibilityRole="text" style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Bold", - "fontSize": 10, + "color": "#686e7d", + "fontFamily": "CentraNo1-Bold", + "fontSize": 12, "fontWeight": "bold", "letterSpacing": 0.25, - "lineHeight": 16, + "lineHeight": 20, "textTransform": "uppercase", } } diff --git a/app/component-library/components/Accordions/Accordion/foundation/AccordionHeader/__snapshots__/AccordionHeader.test.tsx.snap b/app/component-library/components/Accordions/Accordion/foundation/AccordionHeader/__snapshots__/AccordionHeader.test.tsx.snap index b325932ea892..b810802c0753 100644 --- a/app/component-library/components/Accordions/Accordion/foundation/AccordionHeader/__snapshots__/AccordionHeader.test.tsx.snap +++ b/app/component-library/components/Accordions/Accordion/foundation/AccordionHeader/__snapshots__/AccordionHeader.test.tsx.snap @@ -17,7 +17,7 @@ exports[`AccordionHeader - Snapshot should render a rotated down Arrow if isExpa <Text style={ { - "color": "#0376c9", + "color": "#4459ff", } } testID="accordionheader-title" @@ -43,7 +43,7 @@ exports[`AccordionHeader - Snapshot should render a rotated down Arrow if isExpa testID="accordionheader-arrow-icon-animation" > <Icon - color="#0376c9" + color="#4459ff" name="ArrowDown" size="16" testID="accordionheader-arrow-icon" @@ -69,7 +69,7 @@ exports[`AccordionHeader - Snapshot should render default settings correctly 1`] <Text style={ { - "color": "#0376c9", + "color": "#4459ff", } } testID="accordionheader-title" @@ -95,7 +95,7 @@ exports[`AccordionHeader - Snapshot should render default settings correctly 1`] testID="accordionheader-arrow-icon-animation" > <Icon - color="#0376c9" + color="#4459ff" name="ArrowDown" size="16" testID="accordionheader-arrow-icon" diff --git a/app/component-library/components/Avatars/Avatar/variants/AvatarIcon/__snapshots__/AvatarIcon.test.tsx.snap b/app/component-library/components/Avatars/Avatar/variants/AvatarIcon/__snapshots__/AvatarIcon.test.tsx.snap index 1d343e9fea09..5af1c9611e4e 100644 --- a/app/component-library/components/Avatars/Avatar/variants/AvatarIcon/__snapshots__/AvatarIcon.test.tsx.snap +++ b/app/component-library/components/Avatars/Avatar/variants/AvatarIcon/__snapshots__/AvatarIcon.test.tsx.snap @@ -15,7 +15,7 @@ exports[`AvatarIcon should render correctly 1`] = ` } > <SvgMock - color="#141618" + color="#121314" height={20} name="AddSquare" style={ diff --git a/app/component-library/components/Avatars/AvatarGroup/__snapshots__/AvatarGroup.test.tsx.snap b/app/component-library/components/Avatars/AvatarGroup/__snapshots__/AvatarGroup.test.tsx.snap index a3c7a706a065..dbfd5721f9ba 100644 --- a/app/component-library/components/Avatars/AvatarGroup/__snapshots__/AvatarGroup.test.tsx.snap +++ b/app/component-library/components/Avatars/AvatarGroup/__snapshots__/AvatarGroup.test.tsx.snap @@ -32,7 +32,7 @@ exports[`AvatarGroup should render AvatarGroup component 1`] = ` testID="avatargroup-avatar" > <SvgMock - color="#141618" + color="#121314" height={12} name="AddSquare" style={ @@ -277,12 +277,12 @@ exports[`AvatarGroup should render AvatarGroup component 1`] = ` accessibilityRole="text" style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 12, + "color": "#686e7d", + "fontFamily": "CentraNo1-Medium", + "fontSize": 14, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, "marginLeft": 2, } } diff --git a/app/component-library/components/Badges/Badge/variants/BadgeNetwork/__snapshots__/BadgeNetwork.test.tsx.snap b/app/component-library/components/Badges/Badge/variants/BadgeNetwork/__snapshots__/BadgeNetwork.test.tsx.snap index 9fa9d75020fb..03aa3b36bc9d 100644 --- a/app/component-library/components/Badges/Badge/variants/BadgeNetwork/__snapshots__/BadgeNetwork.test.tsx.snap +++ b/app/component-library/components/Badges/Badge/variants/BadgeNetwork/__snapshots__/BadgeNetwork.test.tsx.snap @@ -27,7 +27,7 @@ exports[`BadgeNetwork should render BadgeNetwork 1`] = ` "height": 32, "justifyContent": "center", "overflow": "hidden", - "shadowColor": "#0000001A", + "shadowColor": "#0000001a", "shadowOffset": { "height": 2, "width": 0, diff --git a/app/component-library/components/Badges/Badge/variants/BadgeNotifications/__snapshots__/BadgeNotifications.test.tsx.snap b/app/component-library/components/Badges/Badge/variants/BadgeNotifications/__snapshots__/BadgeNotifications.test.tsx.snap index 7e8c03ce7abe..4b81bbf58161 100644 --- a/app/component-library/components/Badges/Badge/variants/BadgeNotifications/__snapshots__/BadgeNotifications.test.tsx.snap +++ b/app/component-library/components/Badges/Badge/variants/BadgeNotifications/__snapshots__/BadgeNotifications.test.tsx.snap @@ -7,7 +7,7 @@ exports[`BadgeNotifications should render badge notifications correctly 1`] = ` { "alignItems": "center", "aspectRatio": 1, - "backgroundColor": "#0376c9", + "backgroundColor": "#4459ff", "borderColor": "#ffffff", "borderRadius": 9, "borderWidth": 1, diff --git a/app/component-library/components/Badges/Badge/variants/BadgeStatus/__snapshots__/BadgeStatus.test.tsx.snap b/app/component-library/components/Badges/Badge/variants/BadgeStatus/__snapshots__/BadgeStatus.test.tsx.snap index 624fc8ce25a7..bb0b7800c133 100644 --- a/app/component-library/components/Badges/Badge/variants/BadgeStatus/__snapshots__/BadgeStatus.test.tsx.snap +++ b/app/component-library/components/Badges/Badge/variants/BadgeStatus/__snapshots__/BadgeStatus.test.tsx.snap @@ -4,7 +4,7 @@ exports[`BadgeStatus should render badge status correctly 1`] = ` <BadgeBase style={ { - "backgroundColor": "#6a737d", + "backgroundColor": "#686e7d", "borderColor": "#ffffff", "borderRadius": 5, "borderWidth": 2, diff --git a/app/component-library/components/Banners/Banner/__snapshots__/Banner.test.tsx.snap b/app/component-library/components/Banners/Banner/__snapshots__/Banner.test.tsx.snap index 7e99d8d276cc..dde8187e7442 100644 --- a/app/component-library/components/Banners/Banner/__snapshots__/Banner.test.tsx.snap +++ b/app/component-library/components/Banners/Banner/__snapshots__/Banner.test.tsx.snap @@ -4,8 +4,8 @@ exports[`Banner should render correctly 1`] = ` <View style={ { - "backgroundColor": "#D738471A", - "borderColor": "#d73847", + "backgroundColor": "#ca35421a", + "borderColor": "#ca3542", "borderLeftWidth": 4, "borderRadius": 4, "flexDirection": "row", @@ -24,7 +24,7 @@ exports[`Banner should render correctly 1`] = ` } > <SvgMock - color="#d73847" + color="#ca3542" height={24} name="Danger" style={ @@ -47,9 +47,9 @@ exports[`Banner should render correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 16, + "color": "#121314", + "fontFamily": "CentraNo1-Medium", + "fontSize": 18, "fontWeight": "500", "letterSpacing": 0, "lineHeight": 24, @@ -62,12 +62,12 @@ exports[`Banner should render correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -81,8 +81,8 @@ exports[`Banner should render correctly with a close button 1`] = ` <View style={ { - "backgroundColor": "#D738471A", - "borderColor": "#d73847", + "backgroundColor": "#ca35421a", + "borderColor": "#ca3542", "borderLeftWidth": 4, "borderRadius": 4, "flexDirection": "row", @@ -101,7 +101,7 @@ exports[`Banner should render correctly with a close button 1`] = ` } > <SvgMock - color="#d73847" + color="#ca3542" height={24} name="Danger" style={ @@ -124,9 +124,9 @@ exports[`Banner should render correctly with a close button 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 16, + "color": "#121314", + "fontFamily": "CentraNo1-Medium", + "fontSize": 18, "fontWeight": "500", "letterSpacing": 0, "lineHeight": 24, @@ -139,12 +139,12 @@ exports[`Banner should render correctly with a close button 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -162,7 +162,7 @@ exports[`Banner should render correctly with a close button 1`] = ` "alignItems": "center", "alignSelf": "flex-start", "backgroundColor": "transparent", - "borderColor": "#0376c9", + "borderColor": "#4459ff", "borderRadius": 0, "borderWidth": 1, "flexDirection": "row", @@ -176,12 +176,12 @@ exports[`Banner should render correctly with a close button 1`] = ` accessibilityRole="text" style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, + "color": "#4459ff", + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -216,7 +216,7 @@ exports[`Banner should render correctly with a close button 1`] = ` testID="banner-close-button-icon" > <SvgMock - color="#141618" + color="#121314" height={16} name="Close" style={ @@ -236,8 +236,8 @@ exports[`Banner should render correctly with a start accessory 1`] = ` <View style={ { - "backgroundColor": "#D738471A", - "borderColor": "#d73847", + "backgroundColor": "#ca35421a", + "borderColor": "#ca3542", "borderLeftWidth": 4, "borderRadius": 4, "flexDirection": "row", @@ -259,12 +259,12 @@ exports[`Banner should render correctly with a start accessory 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -282,9 +282,9 @@ exports[`Banner should render correctly with a start accessory 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 16, + "color": "#121314", + "fontFamily": "CentraNo1-Medium", + "fontSize": 18, "fontWeight": "500", "letterSpacing": 0, "lineHeight": 24, @@ -297,12 +297,12 @@ exports[`Banner should render correctly with a start accessory 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -316,8 +316,8 @@ exports[`Banner should render correctly with an action button 1`] = ` <View style={ { - "backgroundColor": "#D738471A", - "borderColor": "#d73847", + "backgroundColor": "#ca35421a", + "borderColor": "#ca3542", "borderLeftWidth": 4, "borderRadius": 4, "flexDirection": "row", @@ -336,7 +336,7 @@ exports[`Banner should render correctly with an action button 1`] = ` } > <SvgMock - color="#d73847" + color="#ca3542" height={24} name="Danger" style={ @@ -359,9 +359,9 @@ exports[`Banner should render correctly with an action button 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 16, + "color": "#121314", + "fontFamily": "CentraNo1-Medium", + "fontSize": 18, "fontWeight": "500", "letterSpacing": 0, "lineHeight": 24, @@ -374,12 +374,12 @@ exports[`Banner should render correctly with an action button 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -397,7 +397,7 @@ exports[`Banner should render correctly with an action button 1`] = ` "alignItems": "center", "alignSelf": "flex-start", "backgroundColor": "transparent", - "borderColor": "#0376c9", + "borderColor": "#4459ff", "borderRadius": 0, "borderWidth": 1, "flexDirection": "row", @@ -411,12 +411,12 @@ exports[`Banner should render correctly with an action button 1`] = ` accessibilityRole="text" style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, + "color": "#4459ff", + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > diff --git a/app/component-library/components/Banners/Banner/variants/BannerAlert/__snapshots__/BannerAlert.test.tsx.snap b/app/component-library/components/Banners/Banner/variants/BannerAlert/__snapshots__/BannerAlert.test.tsx.snap index 64afd8569c00..842ea72d5b64 100644 --- a/app/component-library/components/Banners/Banner/variants/BannerAlert/__snapshots__/BannerAlert.test.tsx.snap +++ b/app/component-library/components/Banners/Banner/variants/BannerAlert/__snapshots__/BannerAlert.test.tsx.snap @@ -4,8 +4,8 @@ exports[`BannerAlert should render BannerAlert 1`] = ` <View style={ { - "backgroundColor": "#0376C91A", - "borderColor": "#0376c9", + "backgroundColor": "#4459ff1a", + "borderColor": "#4459ff", "borderLeftWidth": 4, "borderRadius": 4, "flexDirection": "row", @@ -23,7 +23,7 @@ exports[`BannerAlert should render BannerAlert 1`] = ` } > <SvgMock - color="#0376c9" + color="#4459ff" height={24} name="Info" style={ @@ -46,9 +46,9 @@ exports[`BannerAlert should render BannerAlert 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 16, + "color": "#121314", + "fontFamily": "CentraNo1-Medium", + "fontSize": 18, "fontWeight": "500", "letterSpacing": 0, "lineHeight": 24, @@ -61,12 +61,12 @@ exports[`BannerAlert should render BannerAlert 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -81,12 +81,12 @@ exports[`BannerAlert should render BannerAlert 1`] = ` style={ { "backgroundColor": "transparent", - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } suppressHighlighting={true} @@ -95,12 +95,12 @@ exports[`BannerAlert should render BannerAlert 1`] = ` accessibilityRole="text" style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, + "color": "#4459ff", + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -135,7 +135,7 @@ exports[`BannerAlert should render BannerAlert 1`] = ` testID="banner-close-button-icon" > <SvgMock - color="#141618" + color="#121314" height={16} name="Close" style={ diff --git a/app/component-library/components/Banners/Banner/variants/BannerTip/__snapshots__/BannerTip.test.tsx.snap b/app/component-library/components/Banners/Banner/variants/BannerTip/__snapshots__/BannerTip.test.tsx.snap index 8a7295aaf5ee..2e51ec08c3d6 100644 --- a/app/component-library/components/Banners/Banner/variants/BannerTip/__snapshots__/BannerTip.test.tsx.snap +++ b/app/component-library/components/Banners/Banner/variants/BannerTip/__snapshots__/BannerTip.test.tsx.snap @@ -5,7 +5,7 @@ exports[`BannerTip should render default settings correctly 1`] = ` style={ { "backgroundColor": "#ffffff", - "borderColor": "#848c96", + "borderColor": "#b7bbc8", "borderRadius": 4, "borderWidth": 1, "flexDirection": "row", @@ -52,9 +52,9 @@ exports[`BannerTip should render default settings correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 16, + "color": "#121314", + "fontFamily": "CentraNo1-Medium", + "fontSize": 18, "fontWeight": "500", "letterSpacing": 0, "lineHeight": 24, @@ -67,12 +67,12 @@ exports[`BannerTip should render default settings correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -87,12 +87,12 @@ exports[`BannerTip should render default settings correctly 1`] = ` style={ { "backgroundColor": "transparent", - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } suppressHighlighting={true} @@ -101,12 +101,12 @@ exports[`BannerTip should render default settings correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, + "color": "#4459ff", + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -141,7 +141,7 @@ exports[`BannerTip should render default settings correctly 1`] = ` testID="banner-close-button-icon" > <SvgMock - color="#141618" + color="#121314" height={16} name="Close" style={ diff --git a/app/component-library/components/BottomSheets/BottomSheet/foundation/BottomSheetDialog/BottomSheetDialog.constants.ts b/app/component-library/components/BottomSheets/BottomSheet/foundation/BottomSheetDialog/BottomSheetDialog.constants.ts index 0fe149de8b35..362252461dc5 100644 --- a/app/component-library/components/BottomSheets/BottomSheet/foundation/BottomSheetDialog/BottomSheetDialog.constants.ts +++ b/app/component-library/components/BottomSheets/BottomSheet/foundation/BottomSheetDialog/BottomSheetDialog.constants.ts @@ -8,12 +8,12 @@ import { AnimationDuration } from '../../../../../constants/animation.constants' * The animation duration used for initial render. */ export const DEFAULT_BOTTOMSHEETDIALOG_DISPLAY_DURATION = - AnimationDuration.Regularly; + AnimationDuration.Immediately; /** * This number represents the swipe speed to meet the velocity threshold. */ export const DEFAULT_BOTTOMSHEETDIALOG_SWIPETHRESHOLD_DURATION = - AnimationDuration.Regularly; + AnimationDuration.Immediately; /** * This indicates that 60% of the sheet needs to be offscreen to meet the distance threshold. */ diff --git a/app/component-library/components/BottomSheets/BottomSheet/foundation/BottomSheetDialog/__snapshots__/BottomSheetDialog.test.tsx.snap b/app/component-library/components/BottomSheets/BottomSheet/foundation/BottomSheetDialog/__snapshots__/BottomSheetDialog.test.tsx.snap index a45cd1ff31a3..2953a4a9e9e7 100644 --- a/app/component-library/components/BottomSheets/BottomSheet/foundation/BottomSheetDialog/__snapshots__/BottomSheetDialog.test.tsx.snap +++ b/app/component-library/components/BottomSheets/BottomSheet/foundation/BottomSheetDialog/__snapshots__/BottomSheetDialog.test.tsx.snap @@ -26,14 +26,14 @@ exports[`BottomSheetDialog should render correctly 1`] = ` [ { "backgroundColor": "#ffffff", - "borderColor": "#BBC0C566", + "borderColor": "#b7bbc866", "borderTopLeftRadius": 8, "borderTopRightRadius": 8, "borderWidth": 1, "maxHeight": 1333, "overflow": "hidden", "paddingBottom": 3, - "shadowColor": "#0000001A", + "shadowColor": "#0000001a", "shadowOffset": { "height": 2, "width": 0, @@ -63,7 +63,7 @@ exports[`BottomSheetDialog should render correctly 1`] = ` <View style={ { - "backgroundColor": "#BBC0C566", + "backgroundColor": "#b7bbc866", "borderRadius": 2, "height": 4, "width": 40, diff --git a/app/component-library/components/BottomSheets/BottomSheetFooter/__snapshots__/BottomSheetFooter.test.tsx.snap b/app/component-library/components/BottomSheets/BottomSheetFooter/__snapshots__/BottomSheetFooter.test.tsx.snap index 57b01074ef47..fcdf8de816f1 100644 --- a/app/component-library/components/BottomSheets/BottomSheetFooter/__snapshots__/BottomSheetFooter.test.tsx.snap +++ b/app/component-library/components/BottomSheets/BottomSheetFooter/__snapshots__/BottomSheetFooter.test.tsx.snap @@ -24,7 +24,7 @@ exports[`BottomSheetFooter should render snapshot correctly 1`] = ` "alignItems": "center", "alignSelf": "flex-start", "backgroundColor": "transparent", - "borderColor": "#0376c9", + "borderColor": "#4459ff", "borderRadius": 20, "borderWidth": 1, "flex": 1, @@ -40,12 +40,12 @@ exports[`BottomSheetFooter should render snapshot correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, + "color": "#4459ff", + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -63,7 +63,7 @@ exports[`BottomSheetFooter should render snapshot correctly 1`] = ` { "alignItems": "center", "alignSelf": "flex-start", - "backgroundColor": "#0376c9", + "backgroundColor": "#4459ff", "borderRadius": 20, "flex": 1, "flexDirection": "row", @@ -81,11 +81,11 @@ exports[`BottomSheetFooter should render snapshot correctly 1`] = ` style={ { "color": "#ffffff", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > diff --git a/app/component-library/components/BottomSheets/BottomSheetHeader/__snapshots__/BottomSheetHeader.test.tsx.snap b/app/component-library/components/BottomSheets/BottomSheetHeader/__snapshots__/BottomSheetHeader.test.tsx.snap index 3842a1239523..a14af1fadbd1 100644 --- a/app/component-library/components/BottomSheets/BottomSheetHeader/__snapshots__/BottomSheetHeader.test.tsx.snap +++ b/app/component-library/components/BottomSheets/BottomSheetHeader/__snapshots__/BottomSheetHeader.test.tsx.snap @@ -38,8 +38,8 @@ exports[`BottomSheetHeader should render snapshot correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", + "color": "#121314", + "fontFamily": "CentraNo1-Bold", "fontSize": 16, "fontWeight": "700", "letterSpacing": 0, diff --git a/app/component-library/components/Buttons/Button/foundation/ButtonBase/__snapshots__/ButtonBase.test.tsx.snap b/app/component-library/components/Buttons/Button/foundation/ButtonBase/__snapshots__/ButtonBase.test.tsx.snap index acdab062c116..2540a3ee4b9e 100644 --- a/app/component-library/components/Buttons/Button/foundation/ButtonBase/__snapshots__/ButtonBase.test.tsx.snap +++ b/app/component-library/components/Buttons/Button/foundation/ButtonBase/__snapshots__/ButtonBase.test.tsx.snap @@ -10,7 +10,7 @@ exports[`ButtonBase should render correctly 1`] = ` { "alignItems": "center", "alignSelf": "flex-start", - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", "borderRadius": 20, "flexDirection": "row", "height": 40, @@ -33,7 +33,7 @@ exports[`ButtonBase should render correctly 1`] = ` accessibilityRole="none" style={ { - "color": "#141618", + "color": "#121314", } } variant="sBodyMDMedium" @@ -54,7 +54,7 @@ exports[`ButtonBase should render correctly when disabled 1`] = ` { "alignItems": "center", "alignSelf": "flex-start", - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", "borderRadius": 20, "flexDirection": "row", "height": 40, @@ -78,7 +78,7 @@ exports[`ButtonBase should render correctly when disabled 1`] = ` accessibilityRole="none" style={ { - "color": "#141618", + "color": "#121314", } } variant="sBodyMDMedium" diff --git a/app/component-library/components/Buttons/Button/variants/ButtonLink/__snapshots__/ButtonLink.test.tsx.snap b/app/component-library/components/Buttons/Button/variants/ButtonLink/__snapshots__/ButtonLink.test.tsx.snap index d636f704af65..1790f3079b1a 100644 --- a/app/component-library/components/Buttons/Button/variants/ButtonLink/__snapshots__/ButtonLink.test.tsx.snap +++ b/app/component-library/components/Buttons/Button/variants/ButtonLink/__snapshots__/ButtonLink.test.tsx.snap @@ -10,12 +10,12 @@ exports[`ButtonLink should render correctly 1`] = ` style={ { "backgroundColor": "transparent", - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } suppressHighlighting={true} @@ -24,12 +24,12 @@ exports[`ButtonLink should render correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, + "color": "#4459ff", + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > diff --git a/app/component-library/components/Buttons/Button/variants/ButtonPrimary/__snapshots__/ButtonPrimary.test.tsx.snap b/app/component-library/components/Buttons/Button/variants/ButtonPrimary/__snapshots__/ButtonPrimary.test.tsx.snap index 74f4e35aa52f..47fc19005530 100644 --- a/app/component-library/components/Buttons/Button/variants/ButtonPrimary/__snapshots__/ButtonPrimary.test.tsx.snap +++ b/app/component-library/components/Buttons/Button/variants/ButtonPrimary/__snapshots__/ButtonPrimary.test.tsx.snap @@ -13,7 +13,7 @@ exports[`ButtonPrimary render matches latest snapshot 1`] = ` { "alignItems": "center", "alignSelf": "flex-start", - "backgroundColor": "#0376c9", + "backgroundColor": "#4459ff", "borderRadius": 20, "flexDirection": "row", "height": 40, @@ -40,11 +40,11 @@ exports[`ButtonPrimary render matches latest snapshot 1`] = ` style={ { "color": "#ffffff", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > diff --git a/app/component-library/components/Buttons/Button/variants/ButtonSecondary/__snapshots__/ButtonSecondary.test.tsx.snap b/app/component-library/components/Buttons/Button/variants/ButtonSecondary/__snapshots__/ButtonSecondary.test.tsx.snap index d35a16c686ba..5c3962554e42 100644 --- a/app/component-library/components/Buttons/Button/variants/ButtonSecondary/__snapshots__/ButtonSecondary.test.tsx.snap +++ b/app/component-library/components/Buttons/Button/variants/ButtonSecondary/__snapshots__/ButtonSecondary.test.tsx.snap @@ -13,7 +13,7 @@ exports[`ButtonSecondary should render correctly 1`] = ` "alignItems": "center", "alignSelf": "flex-start", "backgroundColor": "transparent", - "borderColor": "#0376c9", + "borderColor": "#4459ff", "borderRadius": 20, "borderWidth": 1, "flexDirection": "row", @@ -24,7 +24,7 @@ exports[`ButtonSecondary should render correctly 1`] = ` } > <SvgMock - color="#0376c9" + color="#4459ff" height={16} name="Bank" style={ @@ -40,12 +40,12 @@ exports[`ButtonSecondary should render correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, + "color": "#4459ff", + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > diff --git a/app/component-library/components/Buttons/ButtonIcon/__snapshots__/ButtonIcon.test.tsx.snap b/app/component-library/components/Buttons/ButtonIcon/__snapshots__/ButtonIcon.test.tsx.snap index 14d64bfb6844..3ea0f3c18693 100644 --- a/app/component-library/components/Buttons/ButtonIcon/__snapshots__/ButtonIcon.test.tsx.snap +++ b/app/component-library/components/Buttons/ButtonIcon/__snapshots__/ButtonIcon.test.tsx.snap @@ -20,7 +20,7 @@ exports[`ButtonIcon should render correctly 1`] = ` } > <SvgMock - color="#141618" + color="#121314" height={16} name="Add" style={ diff --git a/app/component-library/components/Cards/Card/__snapshots__/Card.test.tsx.snap b/app/component-library/components/Cards/Card/__snapshots__/Card.test.tsx.snap index ee0ce8ba592d..58d16364be59 100644 --- a/app/component-library/components/Cards/Card/__snapshots__/Card.test.tsx.snap +++ b/app/component-library/components/Cards/Card/__snapshots__/Card.test.tsx.snap @@ -5,7 +5,7 @@ exports[`Card - Snapshot should render correctly 1`] = ` style={ { "backgroundColor": "#ffffff", - "borderColor": "#848c96", + "borderColor": "#b7bbc8", "borderRadius": 4, "borderWidth": 1, "padding": 16, diff --git a/app/component-library/components/Cells/Cell/__snapshots__/Cell.test.tsx.snap b/app/component-library/components/Cells/Cell/__snapshots__/Cell.test.tsx.snap index 94665d42ed53..c1c2d5b58b7e 100644 --- a/app/component-library/components/Cells/Cell/__snapshots__/Cell.test.tsx.snap +++ b/app/component-library/components/Cells/Cell/__snapshots__/Cell.test.tsx.snap @@ -13,7 +13,7 @@ exports[`Cell should render CellDisplay given the type Display 1`] = ` style={ { "backgroundColor": "#ffffff", - "borderColor": "#848c96", + "borderColor": "#b7bbc8", "borderRadius": 4, "borderWidth": 1, "padding": 16, @@ -186,8 +186,8 @@ exports[`Cell should render CellDisplay given the type Display 1`] = ` numberOfLines={1} style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, @@ -203,12 +203,12 @@ exports[`Cell should render CellDisplay given the type Display 1`] = ` numberOfLines={1} style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -219,12 +219,12 @@ exports[`Cell should render CellDisplay given the type Display 1`] = ` numberOfLines={1} style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -234,7 +234,7 @@ exports[`Cell should render CellDisplay given the type Display 1`] = ` style={ { "backgroundColor": "#ffffff", - "borderColor": "#848c96", + "borderColor": "#b7bbc8", "borderRadius": 10, "borderWidth": 1, "height": 24, @@ -248,12 +248,12 @@ exports[`Cell should render CellDisplay given the type Display 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -313,7 +313,7 @@ exports[`Cell should render CellMultiSelect given the type MultiSelect 1`] = ` { "alignItems": "center", "backgroundColor": "#ffffff", - "borderColor": "#141618", + "borderColor": "#121314", "borderRadius": 4, "borderWidth": 2, "height": 20, @@ -495,8 +495,8 @@ exports[`Cell should render CellMultiSelect given the type MultiSelect 1`] = ` numberOfLines={1} style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, @@ -512,12 +512,12 @@ exports[`Cell should render CellMultiSelect given the type MultiSelect 1`] = ` numberOfLines={1} style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -528,12 +528,12 @@ exports[`Cell should render CellMultiSelect given the type MultiSelect 1`] = ` numberOfLines={1} style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -543,7 +543,7 @@ exports[`Cell should render CellMultiSelect given the type MultiSelect 1`] = ` style={ { "backgroundColor": "#ffffff", - "borderColor": "#848c96", + "borderColor": "#b7bbc8", "borderRadius": 10, "borderWidth": 1, "height": 24, @@ -557,12 +557,12 @@ exports[`Cell should render CellMultiSelect given the type MultiSelect 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -768,8 +768,8 @@ exports[`Cell should render CellSelect given the type Select 1`] = ` numberOfLines={1} style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, @@ -785,12 +785,12 @@ exports[`Cell should render CellSelect given the type Select 1`] = ` numberOfLines={1} style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -801,12 +801,12 @@ exports[`Cell should render CellSelect given the type Select 1`] = ` numberOfLines={1} style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -816,7 +816,7 @@ exports[`Cell should render CellSelect given the type Select 1`] = ` style={ { "backgroundColor": "#ffffff", - "borderColor": "#848c96", + "borderColor": "#b7bbc8", "borderRadius": 10, "borderWidth": 1, "height": 24, @@ -830,12 +830,12 @@ exports[`Cell should render CellSelect given the type Select 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > diff --git a/app/component-library/components/Cells/Cell/foundation/CellBase/__snapshots__/CellBase.test.tsx.snap b/app/component-library/components/Cells/Cell/foundation/CellBase/__snapshots__/CellBase.test.tsx.snap index 76c35ea63037..570d6f5a49fc 100644 --- a/app/component-library/components/Cells/Cell/foundation/CellBase/__snapshots__/CellBase.test.tsx.snap +++ b/app/component-library/components/Cells/Cell/foundation/CellBase/__snapshots__/CellBase.test.tsx.snap @@ -163,8 +163,8 @@ exports[`CellBase should render default settings correctly 1`] = ` numberOfLines={1} style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, @@ -180,12 +180,12 @@ exports[`CellBase should render default settings correctly 1`] = ` numberOfLines={1} style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -196,12 +196,12 @@ exports[`CellBase should render default settings correctly 1`] = ` numberOfLines={1} style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -211,7 +211,7 @@ exports[`CellBase should render default settings correctly 1`] = ` style={ { "backgroundColor": "#ffffff", - "borderColor": "#848c96", + "borderColor": "#b7bbc8", "borderRadius": 10, "borderWidth": 1, "height": 24, @@ -225,12 +225,12 @@ exports[`CellBase should render default settings correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > diff --git a/app/component-library/components/Cells/Cell/variants/CellDisplay/__snapshots__/CellDisplay.test.tsx.snap b/app/component-library/components/Cells/Cell/variants/CellDisplay/__snapshots__/CellDisplay.test.tsx.snap index 77968e14c298..5df6dfb7a1b2 100644 --- a/app/component-library/components/Cells/Cell/variants/CellDisplay/__snapshots__/CellDisplay.test.tsx.snap +++ b/app/component-library/components/Cells/Cell/variants/CellDisplay/__snapshots__/CellDisplay.test.tsx.snap @@ -13,7 +13,7 @@ exports[`CellDisplay should render default settings correctly 1`] = ` style={ { "backgroundColor": "#ffffff", - "borderColor": "#848c96", + "borderColor": "#b7bbc8", "borderRadius": 4, "borderWidth": 1, "padding": 16, @@ -186,8 +186,8 @@ exports[`CellDisplay should render default settings correctly 1`] = ` numberOfLines={1} style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, @@ -203,12 +203,12 @@ exports[`CellDisplay should render default settings correctly 1`] = ` numberOfLines={1} style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -219,12 +219,12 @@ exports[`CellDisplay should render default settings correctly 1`] = ` numberOfLines={1} style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -234,7 +234,7 @@ exports[`CellDisplay should render default settings correctly 1`] = ` style={ { "backgroundColor": "#ffffff", - "borderColor": "#848c96", + "borderColor": "#b7bbc8", "borderRadius": 10, "borderWidth": 1, "height": 24, @@ -248,12 +248,12 @@ exports[`CellDisplay should render default settings correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > diff --git a/app/component-library/components/Cells/Cell/variants/CellMultiSelect/__snapshots__/CellMultiSelect.test.tsx.snap b/app/component-library/components/Cells/Cell/variants/CellMultiSelect/__snapshots__/CellMultiSelect.test.tsx.snap index 28b4981d3163..e425d5a31ad9 100644 --- a/app/component-library/components/Cells/Cell/variants/CellMultiSelect/__snapshots__/CellMultiSelect.test.tsx.snap +++ b/app/component-library/components/Cells/Cell/variants/CellMultiSelect/__snapshots__/CellMultiSelect.test.tsx.snap @@ -48,7 +48,7 @@ exports[`CellMultiSelect should render default settings correctly 1`] = ` { "alignItems": "center", "backgroundColor": "#ffffff", - "borderColor": "#141618", + "borderColor": "#121314", "borderRadius": 4, "borderWidth": 2, "height": 20, @@ -230,8 +230,8 @@ exports[`CellMultiSelect should render default settings correctly 1`] = ` numberOfLines={1} style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, @@ -247,12 +247,12 @@ exports[`CellMultiSelect should render default settings correctly 1`] = ` numberOfLines={1} style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -263,12 +263,12 @@ exports[`CellMultiSelect should render default settings correctly 1`] = ` numberOfLines={1} style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -278,7 +278,7 @@ exports[`CellMultiSelect should render default settings correctly 1`] = ` style={ { "backgroundColor": "#ffffff", - "borderColor": "#848c96", + "borderColor": "#b7bbc8", "borderRadius": 10, "borderWidth": 1, "height": 24, @@ -292,12 +292,12 @@ exports[`CellMultiSelect should render default settings correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > diff --git a/app/component-library/components/Cells/Cell/variants/CellSelect/__snapshots__/CellSelect.test.tsx.snap b/app/component-library/components/Cells/Cell/variants/CellSelect/__snapshots__/CellSelect.test.tsx.snap index 42eff249285d..a3e38d0a3772 100644 --- a/app/component-library/components/Cells/Cell/variants/CellSelect/__snapshots__/CellSelect.test.tsx.snap +++ b/app/component-library/components/Cells/Cell/variants/CellSelect/__snapshots__/CellSelect.test.tsx.snap @@ -192,8 +192,8 @@ exports[`CellSelect should render default settings correctly 1`] = ` numberOfLines={1} style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, @@ -209,12 +209,12 @@ exports[`CellSelect should render default settings correctly 1`] = ` numberOfLines={1} style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -225,12 +225,12 @@ exports[`CellSelect should render default settings correctly 1`] = ` numberOfLines={1} style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -240,7 +240,7 @@ exports[`CellSelect should render default settings correctly 1`] = ` style={ { "backgroundColor": "#ffffff", - "borderColor": "#848c96", + "borderColor": "#b7bbc8", "borderRadius": 10, "borderWidth": 1, "height": 24, @@ -254,12 +254,12 @@ exports[`CellSelect should render default settings correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > diff --git a/app/component-library/components/Checkbox/Checkbox.test.tsx b/app/component-library/components/Checkbox/Checkbox.test.tsx index c36c674d940f..391337ed84ed 100644 --- a/app/component-library/components/Checkbox/Checkbox.test.tsx +++ b/app/component-library/components/Checkbox/Checkbox.test.tsx @@ -3,9 +3,7 @@ import React from 'react'; import { render } from '@testing-library/react-native'; // External dependencies. -import Text, { TextVariant } from '../Texts/Text'; -import { mockTheme } from '../../../util/theme'; -import { getFontStyleVariant, FontWeight } from '../Texts/Text/Text.utils'; +import Text, { TextVariant, getFontFamily } from '../Texts/Text'; // Internal dependencies. import Checkbox from './Checkbox'; @@ -48,11 +46,7 @@ describe('Checkbox', () => { it('should render Checkbox with the right text variant if typeof label === string', () => { const { getByRole } = render(<Checkbox label={'Sample Checkbox Label'} />); - const fontFamily = getFontStyleVariant( - mockTheme.typography[DEFAULT_CHECKBOX_LABEL_TEXTVARIANT] - .fontWeight as FontWeight, - 'normal', - ); + const fontFamily = getFontFamily(DEFAULT_CHECKBOX_LABEL_TEXTVARIANT); expect(getByRole('text').props.style.fontFamily).toBe(fontFamily); }); @@ -63,10 +57,7 @@ describe('Checkbox', () => { label={<Text variant={testTextVariant}>Sample Checkbox Label</Text>} />, ); - const fontFamily = getFontStyleVariant( - mockTheme.typography[testTextVariant].fontWeight as FontWeight, - 'normal', - ); + const fontFamily = getFontFamily(testTextVariant); expect(getByRole('text').props.style.fontFamily).toBe(fontFamily); }); }); diff --git a/app/component-library/components/Checkbox/__snapshots__/Checkbox.test.tsx.snap b/app/component-library/components/Checkbox/__snapshots__/Checkbox.test.tsx.snap index 18c986748e86..f01b080f84c6 100644 --- a/app/component-library/components/Checkbox/__snapshots__/Checkbox.test.tsx.snap +++ b/app/component-library/components/Checkbox/__snapshots__/Checkbox.test.tsx.snap @@ -18,7 +18,7 @@ exports[`Checkbox should render correctly 1`] = ` { "alignItems": "center", "backgroundColor": "#ffffff", - "borderColor": "#141618", + "borderColor": "#121314", "borderRadius": 4, "borderWidth": 2, "height": 20, diff --git a/app/component-library/components/Form/TextField/__snapshots__/TextField.test.tsx.snap b/app/component-library/components/Form/TextField/__snapshots__/TextField.test.tsx.snap index dfe8245cb0bd..3e597e4e1675 100644 --- a/app/component-library/components/Form/TextField/__snapshots__/TextField.test.tsx.snap +++ b/app/component-library/components/Form/TextField/__snapshots__/TextField.test.tsx.snap @@ -6,7 +6,7 @@ exports[`TextField should render default settings correctly 1`] = ` { "alignItems": "center", "backgroundColor": "#ffffff", - "borderColor": "#848c96", + "borderColor": "#b7bbc8", "borderRadius": 8, "borderWidth": 1, "flexDirection": "row", diff --git a/app/component-library/components/Form/TextField/foundation/Input/Input.styles.ts b/app/component-library/components/Form/TextField/foundation/Input/Input.styles.ts index 5df3c92c699a..682436a6e8e0 100644 --- a/app/component-library/components/Form/TextField/foundation/Input/Input.styles.ts +++ b/app/component-library/components/Form/TextField/foundation/Input/Input.styles.ts @@ -4,6 +4,7 @@ import { StyleSheet, TextStyle } from 'react-native'; // External dependencies. import { Theme } from '../../../../../../util/theme/models'; import { colors } from '../../../../../../styles/common'; +import { getFontFamily } from '../../../../Texts/Text/'; // Internal dependencies import { InputStyleSheetVars } from './Input.types'; @@ -40,7 +41,7 @@ const styleSheet = (params: { theme: Theme; vars: InputStyleSheetVars }) => { height: 24, ...stateObj, paddingVertical: 0, - fontFamily: theme.typography[textVariant].fontFamily, + fontFamily: getFontFamily(textVariant), fontWeight: theme.typography[textVariant].fontWeight, fontSize: theme.typography[textVariant].fontSize, letterSpacing: theme.typography[textVariant].letterSpacing, diff --git a/app/component-library/components/Form/TextField/foundation/Input/__snapshots__/Input.test.tsx.snap b/app/component-library/components/Form/TextField/foundation/Input/__snapshots__/Input.test.tsx.snap index fd6fedfeaa49..3497fb265be0 100644 --- a/app/component-library/components/Form/TextField/foundation/Input/__snapshots__/Input.test.tsx.snap +++ b/app/component-library/components/Form/TextField/foundation/Input/__snapshots__/Input.test.tsx.snap @@ -9,11 +9,11 @@ exports[`Input should render correctly 1`] = ` style={ { "backgroundColor": "#ffffff", - "borderColor": "#0376c9", + "borderColor": "#4459ff", "borderWidth": 1, - "color": "#141618", - "fontFamily": "Euclid Circular B", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "height": 24, "letterSpacing": 0, diff --git a/app/component-library/components/HeaderBase/HeaderBase.test.tsx b/app/component-library/components/HeaderBase/HeaderBase.test.tsx index a6414e75bf2d..44466019bdda 100644 --- a/app/component-library/components/HeaderBase/HeaderBase.test.tsx +++ b/app/component-library/components/HeaderBase/HeaderBase.test.tsx @@ -4,9 +4,7 @@ import { render } from '@testing-library/react-native'; import { useSafeAreaInsets } from 'react-native-safe-area-context'; // External dependencies. -import Text, { TextVariant } from '../Texts/Text'; -import { mockTheme } from '../../../util/theme'; -import { getFontStyleVariant, FontWeight } from '../Texts/Text/Text.utils'; +import Text, { TextVariant, getFontFamily } from '../Texts/Text'; // Internal dependencies. import HeaderBase from './HeaderBase'; @@ -40,11 +38,7 @@ describe('HeaderBase', () => { const { getByRole } = render( <HeaderBase>Sample HeaderBase Title</HeaderBase>, ); - const fontFamily = getFontStyleVariant( - mockTheme.typography[DEFAULT_HEADERBASE_TITLE_TEXTVARIANT] - .fontWeight as FontWeight, - 'normal', - ); + const fontFamily = getFontFamily(DEFAULT_HEADERBASE_TITLE_TEXTVARIANT); expect(getByRole('text').props.style.fontFamily).toBe(fontFamily); }); @@ -58,10 +52,7 @@ describe('HeaderBase', () => { </HeaderBase>, ); - const fontFamily = getFontStyleVariant( - mockTheme.typography[testTextVariant].fontWeight as FontWeight, - 'normal', - ); + const fontFamily = getFontFamily(testTextVariant); expect(getByRole('text').props.style.fontFamily).toBe(fontFamily); }); diff --git a/app/component-library/components/HeaderBase/__snapshots__/HeaderBase.test.tsx.snap b/app/component-library/components/HeaderBase/__snapshots__/HeaderBase.test.tsx.snap index f08525a62d24..814c204f6e86 100644 --- a/app/component-library/components/HeaderBase/__snapshots__/HeaderBase.test.tsx.snap +++ b/app/component-library/components/HeaderBase/__snapshots__/HeaderBase.test.tsx.snap @@ -37,8 +37,8 @@ exports[`HeaderBase should render snapshot correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", + "color": "#121314", + "fontFamily": "CentraNo1-Bold", "fontSize": 16, "fontWeight": "700", "letterSpacing": 0, diff --git a/app/component-library/components/Icons/Icon/__snapshots__/Icon.test.tsx.snap b/app/component-library/components/Icons/Icon/__snapshots__/Icon.test.tsx.snap index d56be0cd7c4d..218b43ecde0c 100644 --- a/app/component-library/components/Icons/Icon/__snapshots__/Icon.test.tsx.snap +++ b/app/component-library/components/Icons/Icon/__snapshots__/Icon.test.tsx.snap @@ -2,7 +2,7 @@ exports[`Icon renders correctly 1`] = ` <SvgMock - color="#141618" + color="#121314" height={20} name="Add" style={ diff --git a/app/component-library/components/List/ListItemMultiSelect/__snapshots__/ListItemMultiSelect.test.tsx.snap b/app/component-library/components/List/ListItemMultiSelect/__snapshots__/ListItemMultiSelect.test.tsx.snap index 853d66695618..62635e679114 100644 --- a/app/component-library/components/List/ListItemMultiSelect/__snapshots__/ListItemMultiSelect.test.tsx.snap +++ b/app/component-library/components/List/ListItemMultiSelect/__snapshots__/ListItemMultiSelect.test.tsx.snap @@ -47,7 +47,7 @@ exports[`ListItemMultiSelect should render snapshot correctly 1`] = ` { "alignItems": "center", "backgroundColor": "#ffffff", - "borderColor": "#141618", + "borderColor": "#121314", "borderRadius": 4, "borderWidth": 2, "height": 20, diff --git a/app/component-library/components/Modals/ModalConfirmation/__snapshots__/ModalConfirmation.test.tsx.snap b/app/component-library/components/Modals/ModalConfirmation/__snapshots__/ModalConfirmation.test.tsx.snap index 18e87f517466..d1964617c706 100644 --- a/app/component-library/components/Modals/ModalConfirmation/__snapshots__/ModalConfirmation.test.tsx.snap +++ b/app/component-library/components/Modals/ModalConfirmation/__snapshots__/ModalConfirmation.test.tsx.snap @@ -44,7 +44,7 @@ exports[`ModalConfirmation should render correctly 1`] = ` <View style={ { - "backgroundColor": "#BBC0C566", + "backgroundColor": "#b7bbc866", "height": 1, } } diff --git a/app/component-library/components/Modals/ModalMandatory/ModalMandatory.styles.ts b/app/component-library/components/Modals/ModalMandatory/ModalMandatory.styles.ts index 8bd98637e405..eebea191314d 100644 --- a/app/component-library/components/Modals/ModalMandatory/ModalMandatory.styles.ts +++ b/app/component-library/components/Modals/ModalMandatory/ModalMandatory.styles.ts @@ -1,6 +1,7 @@ // Third party dependencies. import { StyleSheet, TextStyle, Dimensions } from 'react-native'; import { Theme } from '../../../../util/theme/models'; +import { getFontFamily, TextVariant } from '../../Texts/Text'; const screenHeight = Dimensions.get('window').height; /** @@ -28,6 +29,7 @@ const styleSheet = (params: { theme: Theme }) => { headerText: { color: colors.text.default, ...(typography.sHeadingMD as TextStyle), + fontFamily: getFontFamily(TextVariant.HeadingMD), textAlign: 'center', marginBottom: 16, }, @@ -41,6 +43,7 @@ const styleSheet = (params: { theme: Theme }) => { flex: 1, color: colors.text.default, ...(typography.sBodyMDBold as TextStyle), + fontFamily: getFontFamily(TextVariant.BodyMDBold), }, confirmButton: { marginTop: 16, @@ -66,6 +69,7 @@ const styleSheet = (params: { theme: Theme }) => { textAlign: 'center', color: colors.text.alternative, ...(typography.sBodySM as TextStyle), + fontFamily: getFontFamily(TextVariant.BodySM), }, }); }; diff --git a/app/component-library/components/Navigation/TabBar/__snapshots__/TabBar.test.tsx.snap b/app/component-library/components/Navigation/TabBar/__snapshots__/TabBar.test.tsx.snap index 1cd1fd3f748a..e272b3aaab58 100644 --- a/app/component-library/components/Navigation/TabBar/__snapshots__/TabBar.test.tsx.snap +++ b/app/component-library/components/Navigation/TabBar/__snapshots__/TabBar.test.tsx.snap @@ -7,7 +7,7 @@ exports[`TabBar renders correctly 1`] = ` { "backgroundColor": "#ffffff", "flexBasis": 1, - "shadowColor": "#00000099", + "shadowColor": "#00000066", "shadowOffset": { "height": 4, "width": 0, @@ -53,7 +53,7 @@ exports[`TabBar renders correctly 1`] = ` } > <SvgMock - color="#0376c9" + color="#4459ff" height={24} name="Wallet" style={ @@ -90,7 +90,7 @@ exports[`TabBar renders correctly 1`] = ` } > <SvgMock - color="#9fa6ae" + color="#9ca1af" height={24} name="Activity" style={ @@ -117,7 +117,7 @@ exports[`TabBar renders correctly 1`] = ` style={ { "alignItems": "center", - "backgroundColor": "#0376c9", + "backgroundColor": "#4459ff", "borderRadius": 16, "height": 32, "justifyContent": "center", @@ -164,7 +164,7 @@ exports[`TabBar renders correctly 1`] = ` } > <SvgMock - color="#9fa6ae" + color="#9ca1af" height={24} name="Explore" style={ @@ -201,7 +201,7 @@ exports[`TabBar renders correctly 1`] = ` } > <SvgMock - color="#9fa6ae" + color="#9ca1af" height={24} name="Setting" style={ diff --git a/app/component-library/components/Navigation/TabBarItem/__snapshots__/TabBarItem.test.tsx.snap b/app/component-library/components/Navigation/TabBarItem/__snapshots__/TabBarItem.test.tsx.snap index f23384a5b76a..39329d571e0d 100644 --- a/app/component-library/components/Navigation/TabBarItem/__snapshots__/TabBarItem.test.tsx.snap +++ b/app/component-library/components/Navigation/TabBarItem/__snapshots__/TabBarItem.test.tsx.snap @@ -13,7 +13,7 @@ exports[`TabBarItem should render correctly 1`] = ` > <Avatar backgroundColor="#ffffff" - iconColor="#0376c9" + iconColor="#4459ff" name="Bank" size="32" variant="Icon" diff --git a/app/component-library/components/Overlay/Overlay.constants.ts b/app/component-library/components/Overlay/Overlay.constants.ts index 70e9c557a7f1..9b825352c89e 100644 --- a/app/component-library/components/Overlay/Overlay.constants.ts +++ b/app/component-library/components/Overlay/Overlay.constants.ts @@ -4,4 +4,4 @@ import { AnimationDuration } from '../../constants/animation.constants'; // Defaults -export const DEFAULT_OVERLAY_ANIMATION_DURATION = AnimationDuration.Regularly; +export const DEFAULT_OVERLAY_ANIMATION_DURATION = AnimationDuration.Immediately; diff --git a/app/component-library/components/Pickers/PickerAccount/__snapshots__/PickerAccount.test.tsx.snap b/app/component-library/components/Pickers/PickerAccount/__snapshots__/PickerAccount.test.tsx.snap index 7aaeafb76a97..6dc454b840d8 100644 --- a/app/component-library/components/Pickers/PickerAccount/__snapshots__/PickerAccount.test.tsx.snap +++ b/app/component-library/components/Pickers/PickerAccount/__snapshots__/PickerAccount.test.tsx.snap @@ -15,7 +15,7 @@ exports[`PickerAccount should render correctly 1`] = ` { "alignItems": "center", "backgroundColor": "#ffffff", - "borderColor": "#848c96", + "borderColor": "#b7bbc8", "borderRadius": 4, "borderWidth": 0, "flexDirection": "row", @@ -193,12 +193,12 @@ exports[`PickerAccount should render correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } testID="account-label" @@ -209,7 +209,7 @@ exports[`PickerAccount should render correctly 1`] = ` </View> </View> <SvgMock - color="#141618" + color="#121314" height={12} name="ArrowDown" style={ @@ -226,12 +226,12 @@ exports[`PickerAccount should render correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 12, + "color": "#686e7d", + "fontFamily": "CentraNo1-Medium", + "fontSize": 14, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, "textAlign": "center", } } diff --git a/app/component-library/components/Pickers/PickerBase/__snapshots__/PickerBase.test.tsx.snap b/app/component-library/components/Pickers/PickerBase/__snapshots__/PickerBase.test.tsx.snap index 8fd98a54bf30..fbf594824206 100644 --- a/app/component-library/components/Pickers/PickerBase/__snapshots__/PickerBase.test.tsx.snap +++ b/app/component-library/components/Pickers/PickerBase/__snapshots__/PickerBase.test.tsx.snap @@ -7,7 +7,7 @@ exports[`PickerBase should render correctly 1`] = ` { "alignItems": "center", "backgroundColor": "#ffffff", - "borderColor": "#848c96", + "borderColor": "#b7bbc8", "borderRadius": 4, "borderWidth": 1, "flexDirection": "row", @@ -19,7 +19,7 @@ exports[`PickerBase should render correctly 1`] = ` Test Content </Text> <SvgMock - color="#141618" + color="#121314" height={20} name="ArrowDown" style={ diff --git a/app/component-library/components/Pickers/PickerNetwork/__snapshots__/PickerNetwork.test.tsx.snap b/app/component-library/components/Pickers/PickerNetwork/__snapshots__/PickerNetwork.test.tsx.snap index fea3bc74bfc8..bea9b88fd618 100644 --- a/app/component-library/components/Pickers/PickerNetwork/__snapshots__/PickerNetwork.test.tsx.snap +++ b/app/component-library/components/Pickers/PickerNetwork/__snapshots__/PickerNetwork.test.tsx.snap @@ -8,7 +8,7 @@ exports[`PickerNetwork renders correctly 1`] = ` { "alignItems": "center", "alignSelf": "center", - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", "borderRadius": 16, "flexDirection": "row", "height": 32, @@ -57,13 +57,13 @@ exports[`PickerNetwork renders correctly 1`] = ` numberOfLines={1} style={ { - "color": "#141618", + "color": "#121314", "flexShrink": 1, - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, "marginHorizontal": 8, } } @@ -72,7 +72,7 @@ exports[`PickerNetwork renders correctly 1`] = ` Ethereum Mainnet </Text> <SvgMock - color="#141618" + color="#121314" height={12} name="ArrowDown" style={ diff --git a/app/component-library/components/RadioButton/RadioButton.test.tsx b/app/component-library/components/RadioButton/RadioButton.test.tsx index 8abb2f5a11df..6803ec141c18 100644 --- a/app/component-library/components/RadioButton/RadioButton.test.tsx +++ b/app/component-library/components/RadioButton/RadioButton.test.tsx @@ -3,9 +3,7 @@ import React from 'react'; import { render } from '@testing-library/react-native'; // External dependencies. -import Text, { TextVariant } from '../Texts/Text'; -import { mockTheme } from '../../../util/theme'; -import { getFontStyleVariant, FontWeight } from '../Texts/Text/Text.utils'; +import Text, { TextVariant, getFontFamily } from '../Texts/Text'; // Internal dependencies. import RadioButton from './RadioButton'; @@ -39,11 +37,7 @@ describe('RadioButton', () => { const { getByRole } = render( <RadioButton label={'Sample RadioButton Label'} />, ); - const fontFamily = getFontStyleVariant( - mockTheme.typography[DEFAULT_RADIOBUTTON_LABEL_TEXTVARIANT] - .fontWeight as FontWeight, - 'normal', - ); + const fontFamily = getFontFamily(DEFAULT_RADIOBUTTON_LABEL_TEXTVARIANT); expect(getByRole('text').props.style.fontFamily).toBe(fontFamily); }); @@ -56,10 +50,7 @@ describe('RadioButton', () => { />, ); - const fontFamily = getFontStyleVariant( - mockTheme.typography[testTextVariant].fontWeight as FontWeight, - 'normal', - ); + const fontFamily = getFontFamily(testTextVariant); expect(getByRole('text').props.style.fontFamily).toBe(fontFamily); }); }); diff --git a/app/component-library/components/RadioButton/__snapshots__/RadioButton.test.tsx.snap b/app/component-library/components/RadioButton/__snapshots__/RadioButton.test.tsx.snap index e68938857332..e6644f8f5bbf 100644 --- a/app/component-library/components/RadioButton/__snapshots__/RadioButton.test.tsx.snap +++ b/app/component-library/components/RadioButton/__snapshots__/RadioButton.test.tsx.snap @@ -18,7 +18,7 @@ exports[`RadioButton should render correctly 1`] = ` { "alignItems": "center", "backgroundColor": "#ffffff", - "borderColor": "#848c96", + "borderColor": "#b7bbc8", "borderRadius": 99, "borderWidth": 2, "height": 20, diff --git a/app/component-library/components/Select/SelectButton/__snapshots__/SelectButton.test.tsx.snap b/app/component-library/components/Select/SelectButton/__snapshots__/SelectButton.test.tsx.snap index ac0e41bda726..4f47f7e8350f 100644 --- a/app/component-library/components/Select/SelectButton/__snapshots__/SelectButton.test.tsx.snap +++ b/app/component-library/components/Select/SelectButton/__snapshots__/SelectButton.test.tsx.snap @@ -8,7 +8,7 @@ exports[`SelectButton should render snapshot correctly 1`] = ` { "alignItems": "center", "backgroundColor": "#ffffff", - "borderColor": "#848c96", + "borderColor": "#b7bbc8", "borderRadius": 8, "borderWidth": 1, "flexDirection": "row", @@ -209,12 +209,12 @@ exports[`SelectButton should render snapshot correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -225,12 +225,12 @@ exports[`SelectButton should render snapshot correctly 1`] = ` numberOfLines={1} style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -241,7 +241,7 @@ exports[`SelectButton should render snapshot correctly 1`] = ` </View> <View> <SvgMock - color="#141618" + color="#121314" height={16} name="ArrowDown" style={ diff --git a/app/component-library/components/Select/SelectButton/foundation/__snapshots__/SelectButtonBase.test.tsx.snap b/app/component-library/components/Select/SelectButton/foundation/__snapshots__/SelectButtonBase.test.tsx.snap index b73b687f3310..a09a7bf2966b 100644 --- a/app/component-library/components/Select/SelectButton/foundation/__snapshots__/SelectButtonBase.test.tsx.snap +++ b/app/component-library/components/Select/SelectButton/foundation/__snapshots__/SelectButtonBase.test.tsx.snap @@ -200,12 +200,12 @@ exports[`SelectButtonBase should render snapshot correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -216,12 +216,12 @@ exports[`SelectButtonBase should render snapshot correctly 1`] = ` numberOfLines={1} style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -232,7 +232,7 @@ exports[`SelectButtonBase should render snapshot correctly 1`] = ` </View> <View> <SvgMock - color="#141618" + color="#121314" height={20} name="ArrowDown" style={ diff --git a/app/component-library/components/Select/SelectOption/__snapshots__/SelectOption.test.tsx.snap b/app/component-library/components/Select/SelectOption/__snapshots__/SelectOption.test.tsx.snap index 3e2315357d9f..36f6296a8539 100644 --- a/app/component-library/components/Select/SelectOption/__snapshots__/SelectOption.test.tsx.snap +++ b/app/component-library/components/Select/SelectOption/__snapshots__/SelectOption.test.tsx.snap @@ -218,12 +218,12 @@ exports[`SelectOption should render snapshot correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -234,12 +234,12 @@ exports[`SelectOption should render snapshot correctly 1`] = ` numberOfLines={1} style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > diff --git a/app/component-library/components/Select/SelectValue/SelectValue.test.tsx b/app/component-library/components/Select/SelectValue/SelectValue.test.tsx index 5a8b681ffc42..5eef64ad2a3b 100644 --- a/app/component-library/components/Select/SelectValue/SelectValue.test.tsx +++ b/app/component-library/components/Select/SelectValue/SelectValue.test.tsx @@ -3,8 +3,7 @@ import React from 'react'; import { render } from '@testing-library/react-native'; // External dependencies. -import { mockTheme } from '../../../../util/theme'; -import { getFontStyleVariant, FontWeight } from '../../Texts/Text/Text.utils'; +import { getFontFamily } from '../../Texts/Text/'; // Internal dependencies. import SelectValue from './SelectValue'; @@ -24,11 +23,7 @@ describe('SelectValue', () => { <SelectValue label={SAMPLE_SELECTVALUE_PROPS.label} />, ); - const fontFamily = getFontStyleVariant( - mockTheme.typography[DEFAULT_SELECTVALUE_LABEL_TEXTVARIANT] - .fontWeight as FontWeight, - 'normal', - ); + const fontFamily = getFontFamily(DEFAULT_SELECTVALUE_LABEL_TEXTVARIANT); expect(getByRole('text').props.style.fontFamily).toBe(fontFamily); }); @@ -37,10 +32,8 @@ describe('SelectValue', () => { <SelectValue description={SAMPLE_SELECTVALUE_PROPS.description} />, ); - const fontFamily = getFontStyleVariant( - mockTheme.typography[DEFAULT_SELECTVALUE_DESCRIPTION_TEXTVARIANT] - .fontWeight as FontWeight, - 'normal', + const fontFamily = getFontFamily( + DEFAULT_SELECTVALUE_DESCRIPTION_TEXTVARIANT, ); expect(getByRole('text').props.style.fontFamily).toBe(fontFamily); diff --git a/app/component-library/components/Select/SelectValue/__snapshots__/SelectValue.test.tsx.snap b/app/component-library/components/Select/SelectValue/__snapshots__/SelectValue.test.tsx.snap index 9db4ae456c23..8491c6414a2c 100644 --- a/app/component-library/components/Select/SelectValue/__snapshots__/SelectValue.test.tsx.snap +++ b/app/component-library/components/Select/SelectValue/__snapshots__/SelectValue.test.tsx.snap @@ -189,12 +189,12 @@ exports[`SelectValue should render snapshot correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -205,12 +205,12 @@ exports[`SelectValue should render snapshot correctly 1`] = ` numberOfLines={1} style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > diff --git a/app/component-library/components/Skeleton/__snapshots__/Skeleton.test.tsx.snap b/app/component-library/components/Skeleton/__snapshots__/Skeleton.test.tsx.snap index 547173481251..a7ba18b4d6ef 100644 --- a/app/component-library/components/Skeleton/__snapshots__/Skeleton.test.tsx.snap +++ b/app/component-library/components/Skeleton/__snapshots__/Skeleton.test.tsx.snap @@ -14,7 +14,7 @@ exports[`Skeleton should match snapshot 1`] = ` pointerEvents="none" style={ { - "backgroundColor": "#6a737d", + "backgroundColor": "#686e7d", "borderRadius": 4, "bottom": 0, "left": 0, diff --git a/app/component-library/components/Tags/Tag/__snapshots__/Tag.test.tsx.snap b/app/component-library/components/Tags/Tag/__snapshots__/Tag.test.tsx.snap index f34996cc1004..5767b6a30cb7 100644 --- a/app/component-library/components/Tags/Tag/__snapshots__/Tag.test.tsx.snap +++ b/app/component-library/components/Tags/Tag/__snapshots__/Tag.test.tsx.snap @@ -5,7 +5,7 @@ exports[`Tag should render correctly 1`] = ` style={ { "backgroundColor": "#ffffff", - "borderColor": "#848c96", + "borderColor": "#b7bbc8", "borderRadius": 10, "borderWidth": 1, "height": 24, @@ -18,12 +18,12 @@ exports[`Tag should render correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > diff --git a/app/component-library/components/Tags/TagUrl/__snapshots__/TagUrl.test.tsx.snap b/app/component-library/components/Tags/TagUrl/__snapshots__/TagUrl.test.tsx.snap index 3957d9e208cb..77043ee349af 100644 --- a/app/component-library/components/Tags/TagUrl/__snapshots__/TagUrl.test.tsx.snap +++ b/app/component-library/components/Tags/TagUrl/__snapshots__/TagUrl.test.tsx.snap @@ -7,7 +7,7 @@ exports[`TagUrl should render correctly 1`] = ` "alignItems": "center", "alignSelf": "center", "backgroundColor": "#ffffff", - "borderColor": "#848c96", + "borderColor": "#b7bbc8", "borderRadius": 99, "borderWidth": 1, "flexDirection": "row", @@ -36,7 +36,7 @@ exports[`TagUrl should render correctly 1`] = ` <Text style={ { - "color": "#6a737d", + "color": "#686e7d", "flexShrink": 1, } } diff --git a/app/component-library/components/Texts/SensitiveText/__snapshots__/SensitiveText.test.tsx.snap b/app/component-library/components/Texts/SensitiveText/__snapshots__/SensitiveText.test.tsx.snap index baa2e5148bf2..d9951009e275 100644 --- a/app/component-library/components/Texts/SensitiveText/__snapshots__/SensitiveText.test.tsx.snap +++ b/app/component-library/components/Texts/SensitiveText/__snapshots__/SensitiveText.test.tsx.snap @@ -5,12 +5,12 @@ exports[`SensitiveText should render correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > diff --git a/app/component-library/components/Texts/Text/Text.stories.tsx b/app/component-library/components/Texts/Text/Text.stories.tsx index c093a45843f2..80263f921331 100644 --- a/app/component-library/components/Texts/Text/Text.stories.tsx +++ b/app/component-library/components/Texts/Text/Text.stories.tsx @@ -26,9 +26,6 @@ const TextMeta = { }, defaultValue: SAMPLE_TEXT_PROPS.color, }, - isBrandEvolution: { - control: { type: 'boolean' }, - }, }, }; export default TextMeta; @@ -68,27 +65,3 @@ TextVariants.argTypes = { TextVariants.args = { color: SAMPLE_TEXT_PROPS.color, }; - -export const TextVariantsBrandEvolution = ( - args: React.JSX.IntrinsicAttributes & - TextProps & { children?: React.ReactNode | undefined }, -) => ( - <> - <TextComponent variant={TextVariant.DisplayMD} color={TextColor.Success}> - Brand Evolution - </TextComponent> - {Object.values(TextVariant).map((variant) => ( - <TextComponent key={variant} variant={variant} isBrandEvolution {...args}> - {variant} - </TextComponent> - ))} - </> -); -TextVariantsBrandEvolution.argTypes = { - variant: { control: false }, - children: { control: false }, - isBrandEvolution: { control: false }, -}; -TextVariantsBrandEvolution.args = { - color: SAMPLE_TEXT_PROPS.color, -}; diff --git a/app/component-library/components/Texts/Text/Text.styles.ts b/app/component-library/components/Texts/Text/Text.styles.ts index 35abb7e32ec5..df839589edd1 100644 --- a/app/component-library/components/Texts/Text/Text.styles.ts +++ b/app/component-library/components/Texts/Text/Text.styles.ts @@ -6,10 +6,7 @@ import { Theme } from '../../../../util/theme/models'; // Internal dependencies. import { TextColor, TextVariant } from './Text.types'; -import { - getFontStyleVariant, - getFontStyleVariantForBrandEvolution, -} from './Text.utils'; +import { getFontFamily } from './Text.utils'; /** * Style sheet function for Text component. @@ -23,7 +20,7 @@ import { // eslint-disable-next-line @typescript-eslint/no-explicit-any const styleSheet = (params: { theme: Theme; vars: any }) => { const { theme, vars } = params; - const { variant, style, color, isBrandEvolution } = vars; + const { variant, style, color } = vars; let textColor; switch (color) { @@ -69,12 +66,8 @@ const styleSheet = (params: { theme: Theme; vars: any }) => { const fontObject = { ...variantObject, color: textColor, - fontFamily: isBrandEvolution - ? getFontStyleVariantForBrandEvolution(variant) - : getFontStyleVariant(finalFontWeight, style?.fontStyle), - ...(!isBrandEvolution && { - fontWeight: finalFontWeight, - }), + fontFamily: getFontFamily(variant, style?.fontWeight, style?.fontStyle), + fontWeight: finalFontWeight, }; return StyleSheet.create({ diff --git a/app/component-library/components/Texts/Text/Text.test.tsx b/app/component-library/components/Texts/Text/Text.test.tsx index 3ce7e975c99a..93ca101d8641 100644 --- a/app/component-library/components/Texts/Text/Text.test.tsx +++ b/app/component-library/components/Texts/Text/Text.test.tsx @@ -8,7 +8,7 @@ import { mockTheme } from '../../../../util/theme'; // Internal dependencies import Text from './Text'; import { SAMPLE_TEXT_PROPS, DEFAULT_TEXT_VARIANT } from './Text.constants'; -import { getFontStyleVariant, FontWeight } from './Text.utils'; +import { getFontFamily } from './Text.utils'; describe('Text', () => { it('should render correctly', () => { @@ -18,10 +18,7 @@ describe('Text', () => { it('should render the correct fontFamily', () => { const { getByRole } = render(<Text {...SAMPLE_TEXT_PROPS} />); - const fontFamily = getFontStyleVariant( - mockTheme.typography[DEFAULT_TEXT_VARIANT].fontWeight as FontWeight, - 'normal', - ); + const fontFamily = getFontFamily(DEFAULT_TEXT_VARIANT); expect(getByRole('text').props.style.fontFamily).toBe(fontFamily); }); diff --git a/app/component-library/components/Texts/Text/Text.tsx b/app/component-library/components/Texts/Text/Text.tsx index d6f0d4cc5f39..88204141c59d 100644 --- a/app/component-library/components/Texts/Text/Text.tsx +++ b/app/component-library/components/Texts/Text/Text.tsx @@ -17,14 +17,12 @@ const Text: React.FC<TextProps> = ({ color = DEFAULT_TEXT_COLOR, style, children, - isBrandEvolution = false, ...props }) => { const { styles } = useStyles(styleSheet, { variant, style, color, - isBrandEvolution, }); return ( diff --git a/app/component-library/components/Texts/Text/Text.types.ts b/app/component-library/components/Texts/Text/Text.types.ts index 5f3e1ee38105..e32d7daf3062 100644 --- a/app/component-library/components/Texts/Text/Text.types.ts +++ b/app/component-library/components/Texts/Text/Text.types.ts @@ -31,7 +31,7 @@ export enum TextColor { Alternative = 'Alternative', Muted = 'Muted', Primary = 'Primary', - PrimaryAlternative = 'Primary', + PrimaryAlternative = 'PrimaryAlternative', Success = 'Success', Error = 'Error', ErrorAlternative = 'ErrorAlternative', @@ -39,6 +39,20 @@ export enum TextColor { Info = 'Info', } +export type FontWeight = + | '100' + | '200' + | '300' + | '400' + | '500' + | '600' + | '700' + | '800' + | '900' + | 'normal' + | 'bold'; +export type FontStyle = 'normal' | 'italic'; + /** * Text component props. */ @@ -56,8 +70,4 @@ export interface TextProps extends RNTextProps { * Optional prop to add color to text. */ color?: TextColor | string; - /** - * Temporary prop to enable brand evolution fonts - */ - isBrandEvolution?: boolean; } diff --git a/app/component-library/components/Texts/Text/Text.utils.ts b/app/component-library/components/Texts/Text/Text.utils.ts index 3e39ff39473f..4406fd65d9fe 100644 --- a/app/component-library/components/Texts/Text/Text.utils.ts +++ b/app/component-library/components/Texts/Text/Text.utils.ts @@ -1,65 +1,30 @@ -import { TextVariant } from './Text.types'; +import { typography } from '@metamask/design-tokens'; +import { FontWeight, FontStyle, TextVariant } from './Text.types'; -type FontFamilyByTextVariant = { - [key in TextVariant]: string; -}; - -export type FontWeight = - | '100' - | '200' - | '300' - | '400' - | '500' - | '600' - | '700' - | '800' - | '900' - | 'normal' - | 'bold'; -type FontStyle = 'normal' | 'italic'; - -export const getFontStyleVariant = ( - fontWeight: FontWeight = '400', - fontStyle: FontStyle = 'normal', +export const getFontFamily = ( + variant: TextVariant, + fontWeight?: FontWeight, + fontStyle?: FontStyle, ): string => { - const weightMap: { [key in FontWeight]: string } = { - '100': 'Regular', - '200': 'Regular', - '300': 'Regular', - '400': 'Regular', + const resolvedWeight = fontWeight ?? typography[variant].fontWeight; + const resolvedStyle = fontStyle ?? 'normal'; + + const weightToFontSuffix: Record<FontWeight, 'Book' | 'Medium' | 'Bold'> = { + '100': 'Book', + '200': 'Book', + '300': 'Book', + '400': 'Book', '500': 'Medium', '600': 'Medium', '700': 'Bold', '800': 'Bold', '900': 'Bold', - normal: 'Regular', + normal: 'Book', bold: 'Bold', }; - const styleSuffix = fontStyle === 'italic' ? 'Italic' : ''; - - const fontSuffix = weightMap[fontWeight]; + const fontSuffix = weightToFontSuffix[resolvedWeight as FontWeight]; + const italicSuffix = resolvedStyle === 'italic' ? 'Italic' : ''; - return `EuclidCircularB-${fontSuffix}${styleSuffix}`; + return `CentraNo1-${fontSuffix}${italicSuffix}`; }; - -export const FONTFAMILY_BY_TEXTVARIANT: FontFamilyByTextVariant = { - [TextVariant.DisplayMD]: 'MMSans-Regular', - [TextVariant.HeadingLG]: 'MMSans-Regular', - [TextVariant.HeadingMD]: 'MMSans-Regular', - [TextVariant.HeadingSMRegular]: 'MMSans-Regular', - [TextVariant.HeadingSM]: 'MMSans-Regular', - [TextVariant.BodyLGMedium]: 'CentraNo1-Medium', - [TextVariant.BodyMD]: 'CentraNo1-Book', - [TextVariant.BodyMDMedium]: 'CentraNo1-Medium', - [TextVariant.BodyMDBold]: 'CentraNo1-Bold', - [TextVariant.BodySM]: 'CentraNo1-Book', - [TextVariant.BodySMMedium]: 'CentraNo1-Medium', - [TextVariant.BodySMBold]: 'CentraNo1-Bold', - [TextVariant.BodyXS]: 'CentraNo1-Book', - [TextVariant.BodyXSMedium]: 'CentraNo1-Medium', -}; - -export const getFontStyleVariantForBrandEvolution = ( - variant: TextVariant, -): string => FONTFAMILY_BY_TEXTVARIANT[variant]; diff --git a/app/component-library/components/Texts/Text/__snapshots__/Text.test.tsx.snap b/app/component-library/components/Texts/Text/__snapshots__/Text.test.tsx.snap index c30731c92e68..b7b64dac8dfc 100644 --- a/app/component-library/components/Texts/Text/__snapshots__/Text.test.tsx.snap +++ b/app/component-library/components/Texts/Text/__snapshots__/Text.test.tsx.snap @@ -5,12 +5,12 @@ exports[`Text should render correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > diff --git a/app/component-library/components/Texts/Text/index.ts b/app/component-library/components/Texts/Text/index.ts index 4ec1031324ba..13539cbfad55 100644 --- a/app/component-library/components/Texts/Text/index.ts +++ b/app/component-library/components/Texts/Text/index.ts @@ -1,2 +1,4 @@ export { default } from './Text'; export { TextVariant, TextColor } from './Text.types'; +export type { FontStyle, FontWeight } from './Text.types'; +export { getFontFamily } from './Text.utils'; diff --git a/app/component-library/components/Texts/TextWithPrefixIcon/__snapshots__/TextWithPrefixIcon.test.tsx.snap b/app/component-library/components/Texts/TextWithPrefixIcon/__snapshots__/TextWithPrefixIcon.test.tsx.snap index 33dce5821224..98020af3bf73 100644 --- a/app/component-library/components/Texts/TextWithPrefixIcon/__snapshots__/TextWithPrefixIcon.test.tsx.snap +++ b/app/component-library/components/Texts/TextWithPrefixIcon/__snapshots__/TextWithPrefixIcon.test.tsx.snap @@ -11,7 +11,7 @@ exports[`TextWithPrefixIcon - Snapshot should render default settings correctly testID="text-with-prefix-icon" > <Icon - color="#141618" + color="#121314" name="Add" testID="text-with-prefix-icon-icon" /> diff --git a/app/components/Approvals/ApprovalModal/__snapshots__/ApprovalModal.test.tsx.snap b/app/components/Approvals/ApprovalModal/__snapshots__/ApprovalModal.test.tsx.snap index 323137ebfa60..fdbad0398c81 100644 --- a/app/components/Approvals/ApprovalModal/__snapshots__/ApprovalModal.test.tsx.snap +++ b/app/components/Approvals/ApprovalModal/__snapshots__/ApprovalModal.test.tsx.snap @@ -52,7 +52,7 @@ exports[`ApprovalModal renders 1`] = ` onStartShouldSetResponder={[Function]} style={ { - "backgroundColor": "#00000099", + "backgroundColor": "#00000066", "bottom": 0, "height": 1334, "left": 0, diff --git a/app/components/Approvals/FlowLoaderModal/FlowLoaderModal.tsx b/app/components/Approvals/FlowLoaderModal/FlowLoaderModal.tsx index 302f5ea27256..7146ef70e4bc 100644 --- a/app/components/Approvals/FlowLoaderModal/FlowLoaderModal.tsx +++ b/app/components/Approvals/FlowLoaderModal/FlowLoaderModal.tsx @@ -2,7 +2,7 @@ import React, { useCallback } from 'react'; import useApprovalRequest from '../../Views/confirmations/hooks/useApprovalRequest'; import ApprovalModal from '../ApprovalModal'; import useApprovalFlow from '../../Views/confirmations/hooks/useApprovalFlow'; -import ApprovalFlowLoader from '../../Views/confirmations/components/Approval/ApprovalFlowLoader'; +import ApprovalFlowLoader from '../../Views/confirmations/legacy/components/Approval/ApprovalFlowLoader'; const FlowLoaderModal = () => { const { approvalRequest } = useApprovalRequest(); diff --git a/app/components/Approvals/SignatureApproval/SignatureApproval.tsx b/app/components/Approvals/SignatureApproval/SignatureApproval.tsx index 11c3d3155412..737b8689a7f4 100644 --- a/app/components/Approvals/SignatureApproval/SignatureApproval.tsx +++ b/app/components/Approvals/SignatureApproval/SignatureApproval.tsx @@ -1,7 +1,7 @@ import React, { useCallback, useEffect } from 'react'; import useApprovalRequest from '../../Views/confirmations/hooks/useApprovalRequest'; import { ApprovalTypes } from '../../../core/RPCMethods/RPCMethodMiddleware'; -import SignatureRequestRoot from '../../Views/confirmations/components/SignatureRequest/Root'; +import SignatureRequestRoot from '../../Views/confirmations/legacy/components/SignatureRequest/Root'; import { endTrace, TraceName } from '../../../util/trace'; const SignatureApproval = () => { diff --git a/app/components/Approvals/SnapAccountCustomNameApproval/SnapAccountCustomNameApproval.styles.ts b/app/components/Approvals/SnapAccountCustomNameApproval/SnapAccountCustomNameApproval.styles.ts index ce8c32319f50..5e8f8cecdef3 100644 --- a/app/components/Approvals/SnapAccountCustomNameApproval/SnapAccountCustomNameApproval.styles.ts +++ b/app/components/Approvals/SnapAccountCustomNameApproval/SnapAccountCustomNameApproval.styles.ts @@ -37,6 +37,7 @@ const styleSheet = (params: { theme: Theme }) => { borderRadius: 4, padding: 10, marginVertical: 10, + color: colors.text.default, }, }); }; diff --git a/app/components/Approvals/TemplateConfirmationModal/TemplateConfirmationModal.tsx b/app/components/Approvals/TemplateConfirmationModal/TemplateConfirmationModal.tsx index f527fb52b413..a1ed95e5fcf1 100644 --- a/app/components/Approvals/TemplateConfirmationModal/TemplateConfirmationModal.tsx +++ b/app/components/Approvals/TemplateConfirmationModal/TemplateConfirmationModal.tsx @@ -2,8 +2,8 @@ import React from 'react'; import useApprovalRequest from '../../Views/confirmations/hooks/useApprovalRequest'; import { ApprovalTypes } from '../../../core/RPCMethods/RPCMethodMiddleware'; import ApprovalModal from '../ApprovalModal'; -import TemplateConfirmation from '../../Views/confirmations/components/Approval/TemplateConfirmation/TemplateConfirmation'; -import { TEMPLATED_CONFIRMATION_APPROVAL_TYPES } from '../../Views/confirmations/components/Approval/TemplateConfirmation/Templates'; +import TemplateConfirmation from '../../Views/confirmations/legacy/components/Approval/TemplateConfirmation/TemplateConfirmation'; +import { TEMPLATED_CONFIRMATION_APPROVAL_TYPES } from '../../Views/confirmations/legacy/components/Approval/TemplateConfirmation/Templates'; const TemplateConfirmationModal = () => { const { approvalRequest, onConfirm, onReject } = useApprovalRequest(); diff --git a/app/components/Approvals/TransactionApproval/TransactionApproval.tsx b/app/components/Approvals/TransactionApproval/TransactionApproval.tsx index 96055d0e77dc..5abcb45776b1 100644 --- a/app/components/Approvals/TransactionApproval/TransactionApproval.tsx +++ b/app/components/Approvals/TransactionApproval/TransactionApproval.tsx @@ -1,8 +1,8 @@ import React, { useCallback, useState } from 'react'; import useApprovalRequest from '../../Views/confirmations/hooks/useApprovalRequest'; import { ApprovalTypes } from '../../../core/RPCMethods/RPCMethodMiddleware'; -import Approval from '../../Views/confirmations/Approval'; -import Approve from '../../Views/confirmations/ApproveView/Approve'; +import Approval from '../../Views/confirmations/legacy/Approval'; +import Approve from '../../Views/confirmations/legacy/ApproveView/Approve'; import QRSigningModal from '../../UI/QRHardware/QRSigningModal'; import withQRHardwareAwareness from '../../UI/QRHardware/withQRHardwareAwareness'; import { IQRState } from '../../UI/QRHardware/types'; diff --git a/app/components/Approvals/WatchAssetApproval/WatchAssetApproval.tsx b/app/components/Approvals/WatchAssetApproval/WatchAssetApproval.tsx index a402c54987f7..075add99396e 100644 --- a/app/components/Approvals/WatchAssetApproval/WatchAssetApproval.tsx +++ b/app/components/Approvals/WatchAssetApproval/WatchAssetApproval.tsx @@ -1,6 +1,6 @@ import React from 'react'; import useApprovalRequest from '../../Views/confirmations/hooks/useApprovalRequest'; -import WatchAssetRequest from '../../Views/confirmations/components/WatchAssetRequest'; +import WatchAssetRequest from '../../Views/confirmations/legacy/components/WatchAssetRequest'; import { ApprovalTypes } from '../../../core/RPCMethods/RPCMethodMiddleware'; import ApprovalModal from '../ApprovalModal'; diff --git a/app/components/Base/RemoteImage/__snapshots__/index.test.tsx.snap b/app/components/Base/RemoteImage/__snapshots__/index.test.tsx.snap index 5f208674613b..276b4652b569 100644 --- a/app/components/Base/RemoteImage/__snapshots__/index.test.tsx.snap +++ b/app/components/Base/RemoteImage/__snapshots__/index.test.tsx.snap @@ -104,14 +104,14 @@ exports[`RemoteImage should render with Solana network badge when on Solana netw style={ { "alignItems": "center", - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", "borderColor": "#ffffff", "borderRadius": 8, "borderWidth": 1, "height": 16, "justifyContent": "center", "overflow": "hidden", - "shadowColor": "#0000001A", + "shadowColor": "#0000001a", "shadowOffset": { "height": 2, "width": 0, @@ -126,8 +126,8 @@ exports[`RemoteImage should render with Solana network badge when on Solana netw accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 10, "fontWeight": "400", "letterSpacing": 0, diff --git a/app/components/Base/RemoteImage/index.js b/app/components/Base/RemoteImage/index.js index f7a574b02eee..fd7bfa1950a4 100644 --- a/app/components/Base/RemoteImage/index.js +++ b/app/components/Base/RemoteImage/index.js @@ -1,4 +1,4 @@ -import React, { useEffect, useState } from 'react'; +import React, { useCallback, useEffect, useState } from 'react'; import PropTypes from 'prop-types'; import { Image, @@ -21,13 +21,10 @@ import Badge, { BadgeVariant, } from '../../../component-library/components/Badges/Badge'; import { useSelector } from 'react-redux'; -import { - selectChainId, - selectEvmTicker, -} from '../../../selectors/networkController'; +import { selectChainId } from '../../../selectors/networkController'; import { getTestNetImageByChainId, - isLineaMainnet, + isLineaMainnetChainId, isMainNet, isSolanaMainnet, isTestNet, @@ -39,6 +36,12 @@ import { BadgeAnchorElementShape } from '../../../component-library/components/B import useSvgUriViewBox from '../../hooks/useSvgUriViewBox'; import { AvatarSize } from '../../../component-library/components/Avatars/Avatar'; import Logger from '../../../util/Logger'; +import { toHex } from '@metamask/controller-utils'; +import { + CustomNetworkImgMapping, + PopularList, + UnpopularNetworkList, +} from '../../../util/networks/customNetworks'; const createStyles = () => StyleSheet.create({ @@ -65,8 +68,10 @@ const RemoteImage = (props) => { const isImageUrl = isUrl(props?.source?.uri); const ipfsGateway = useIpfsGateway(); const styles = createStyles(); - const chainId = useSelector(selectChainId); - const ticker = useSelector(selectEvmTicker); + const currentChainId = useSelector(selectChainId); + // The chainId would be passed in props from parent for collectible media + //TODO remove once migrated to TS and chainID is properly typed to hex + const chainId = props.chainId ? toHex(props.chainId) : currentChainId; const networkName = useSelector(selectNetworkName); const [resolvedIpfsUrl, setResolvedIpfsUrl] = useState(false); @@ -132,17 +137,33 @@ const RemoteImage = (props) => { ); }, [uri]); - const NetworkBadgeSource = () => { + const NetworkBadgeSource = useCallback(() => { if (isTestNet(chainId)) return getTestNetImageByChainId(chainId); if (isMainNet(chainId)) return images.ETHEREUM; - if (isLineaMainnet(chainId)) return images['LINEA-MAINNET']; + if (isLineaMainnetChainId(chainId)) return images['LINEA-MAINNET']; if (isSolanaMainnet(chainId)) return images.SOLANA; - return ticker ? images[ticker] : undefined; - }; + const unpopularNetwork = UnpopularNetworkList.find( + (networkConfig) => networkConfig.chainId === chainId, + ); + + const popularNetwork = PopularList.find( + (networkConfig) => networkConfig.chainId === chainId, + ); + const network = unpopularNetwork || popularNetwork; + const customNetworkImg = CustomNetworkImgMapping[chainId]; + + if (network) { + return network.rpcPrefs.imageSource; + } else if (customNetworkImg) { + return customNetworkImg; + } + return undefined; + }, [chainId]); + const isSVG = source && source.uri && @@ -290,6 +311,7 @@ RemoteImage.propTypes = { isTokenImage: PropTypes.bool, isFullRatio: PropTypes.bool, + chainId: PropTypes.string, }; export default RemoteImage; diff --git a/app/components/Nav/App/App.tsx b/app/components/Nav/App/App.tsx index 5d023da1f8d4..b7220be14ee5 100644 --- a/app/components/Nav/App/App.tsx +++ b/app/components/Nav/App/App.tsx @@ -5,11 +5,7 @@ import React, { useRef, useState, } from 'react'; -import { - CommonActions, - useNavigation, - useRoute, -} from '@react-navigation/native'; +import { useNavigation, useRoute } from '@react-navigation/native'; import { Linking } from 'react-native'; import { createStackNavigator } from '@react-navigation/stack'; import Login from '../../Views/Login'; @@ -136,6 +132,7 @@ import { selectUserLoggedIn } from '../../../reducers/user/selectors'; import { Confirm } from '../../Views/confirmations/Confirm'; ///: BEGIN:ONLY_INCLUDE_IF(multi-srp) import ImportNewSecretRecoveryPhrase from '../../Views/ImportNewSecretRecoveryPhrase'; +import { SelectSRPBottomSheet } from '../../Views/SelectSRP/SelectSRPBottomSheet'; ///: END:ONLY_INCLUDE_IF import NavigationService from '../../../core/NavigationService'; @@ -306,7 +303,18 @@ const DetectedTokensFlow = () => ( </Stack.Navigator> ); -const RootModalFlow = () => ( +///: BEGIN:ONLY_INCLUDE_IF(multi-srp) +interface RootModalFlowProps { + route: { + params: Record<string, unknown>; + }; +} +///: END:ONLY_INCLUDE_IF(multi-srp) +const RootModalFlow = ( + ///: BEGIN:ONLY_INCLUDE_IF(multi-srp) + props: RootModalFlowProps, + ///: END:ONLY_INCLUDE_IF +) => ( <Stack.Navigator mode={'modal'} screenOptions={clearStackNavigatorOptions}> <Stack.Screen name={Routes.MODAL.WALLET_ACTIONS} @@ -418,7 +426,21 @@ const RootModalFlow = () => ( name={Routes.MODAL.ENABLE_AUTOMATIC_SECURITY_CHECKS} component={EnableAutomaticSecurityChecksModal} /> - <Stack.Screen name={Routes.MODAL.SRP_REVEAL_QUIZ} component={SRPQuiz} /> + { + ///: BEGIN:ONLY_INCLUDE_IF(multi-srp) + <Stack.Screen + name={Routes.SHEET.SELECT_SRP} + component={SelectSRPBottomSheet} + /> + ///: END:ONLY_INCLUDE_IF + } + <Stack.Screen + name={Routes.MODAL.SRP_REVEAL_QUIZ} + component={SRPQuiz} + ///: BEGIN:ONLY_INCLUDE_IF(multi-srp) + initialParams={{ ...props.route.params }} + ///: END:ONLY_INCLUDE_IF + /> <Stack.Screen name={Routes.SHEET.ACCOUNT_ACTIONS} component={AccountActions} @@ -483,7 +505,10 @@ const ImportSRPView = () => ( headerShown: false, }} > - <Stack.Screen name="ImportSRP" component={ImportNewSecretRecoveryPhrase} /> + <Stack.Screen + name={Routes.MULTI_SRP.IMPORT} + component={ImportNewSecretRecoveryPhrase} + /> </Stack.Navigator> ); ///: END:ONLY_INCLUDE_IF @@ -727,15 +752,10 @@ const App: React.FC = () => { } catch (error) { const errorMessage = (error as Error).message; // if there are no credentials, then they were cleared in the last session and we should not show biometrics on the login screen - if (errorMessage === AUTHENTICATION_APP_TRIGGERED_AUTH_NO_CREDENTIALS) { - navigation.dispatch( - CommonActions.setParams({ - locked: true, - }), - ); - } + const locked = + errorMessage === AUTHENTICATION_APP_TRIGGERED_AUTH_NO_CREDENTIALS; - await Authentication.lockApp({ reset: false }); + await Authentication.lockApp({ reset: false, locked }); trackErrorAsAnalytics( 'App: Max Attempts Reached', errorMessage, diff --git a/app/components/Nav/Main/MainNavigator.js b/app/components/Nav/Main/MainNavigator.js index b25c61c8ccf3..018c5ef58fa5 100644 --- a/app/components/Nav/Main/MainNavigator.js +++ b/app/components/Nav/Main/MainNavigator.js @@ -25,8 +25,8 @@ import Asset from '../../Views/Asset'; import AssetDetails from '../../Views/AssetDetails'; import AddAsset from '../../Views/AddAsset'; import Collectible from '../../Views/Collectible'; -import Send from '../../Views/confirmations/Send'; -import SendTo from '../../Views/confirmations/SendFlow/SendTo'; +import Send from '../../Views/confirmations/legacy/Send'; +import SendTo from '../../Views/confirmations/legacy/SendFlow/SendTo'; import { RevealPrivateCredential } from '../../Views/RevealPrivateCredential'; import WalletConnectSessions from '../../Views/WalletConnectSessions'; import OfflineMode from '../../Views/OfflineMode'; @@ -41,8 +41,8 @@ import ManualBackupStep2 from '../../Views/ManualBackupStep2'; import ManualBackupStep3 from '../../Views/ManualBackupStep3'; import PaymentRequest from '../../UI/PaymentRequest'; import PaymentRequestSuccess from '../../UI/PaymentRequestSuccess'; -import Amount from '../../Views/confirmations/SendFlow/Amount'; -import Confirm from '../../Views/confirmations/SendFlow/Confirm'; +import Amount from '../../Views/confirmations/legacy/SendFlow/Amount'; +import Confirm from '../../Views/confirmations/legacy/SendFlow/Confirm'; import ContactForm from '../../Views/Settings/Contacts/ContactForm'; import ActivityView from '../../Views/ActivityView'; import SwapsAmountView from '../../UI/Swaps'; @@ -195,7 +195,11 @@ const WalletTabModalFlow = () => ( const TransactionsHome = () => ( <Stack.Navigator> - <Stack.Screen name={Routes.TRANSACTIONS_VIEW} component={ActivityView} /> + <Stack.Screen + name={Routes.TRANSACTIONS_VIEW} + component={ActivityView} + options={{ headerShown: false }} + /> <Stack.Screen name={Routes.RAMP.ORDER_DETAILS} component={OrderDetails} /> <Stack.Screen name={Routes.RAMP.SEND_TRANSACTION} diff --git a/app/components/Nav/Main/index.js b/app/components/Nav/Main/index.js index 3b3eb6e2d0ec..fb31bdca03f7 100644 --- a/app/components/Nav/Main/index.js +++ b/app/components/Nav/Main/index.js @@ -138,11 +138,13 @@ const Main = (props) => { useEffect(() => { stopIncomingTransactionPolling(); - - if (showIncomingTransactionsNetworks[chainId]) { - startIncomingTransactionPolling([chainId]); - } - }, [chainId, networkClientId, showIncomingTransactionsNetworks]); + startIncomingTransactionPolling(); + }, [ + chainId, + networkClientId, + showIncomingTransactionsNetworks, + props.networkConfigurations, + ]); const checkInfuraAvailability = useCallback(async () => { if (props.providerType !== 'rpc') { @@ -185,11 +187,11 @@ const Main = (props) => { removeNotVisibleNotifications(); BackgroundTimer.runBackgroundTimer(async () => { - await updateIncomingTransactions([props.chainId]); + await updateIncomingTransactions(); }, AppConstants.TX_CHECK_BACKGROUND_FREQUENCY); } }, - [backgroundMode, removeNotVisibleNotifications, props.chainId], + [backgroundMode, removeNotVisibleNotifications], ); const initForceReload = () => { @@ -511,6 +513,10 @@ Main.propTypes = { * ID of the global network client */ networkClientId: PropTypes.string, + /** + * Network configurations + */ + networkConfigurations: PropTypes.object, }; const mapStateToProps = (state) => ({ @@ -520,6 +526,7 @@ const mapStateToProps = (state) => ({ chainId: selectChainId(state), networkClientId: selectNetworkClientId(state), backUpSeedphraseVisible: state.user.backUpSeedphraseVisible, + networkConfigurations: selectNetworkConfigurations(state), }); const mapDispatchToProps = (dispatch) => ({ diff --git a/app/components/Snaps/SnapDialogApproval/SnapDialogApproval.styles.ts b/app/components/Snaps/SnapDialogApproval/SnapDialogApproval.styles.ts index 0ed681b40199..cfa7e88241ac 100644 --- a/app/components/Snaps/SnapDialogApproval/SnapDialogApproval.styles.ts +++ b/app/components/Snaps/SnapDialogApproval/SnapDialogApproval.styles.ts @@ -19,11 +19,14 @@ const styleSheet = (params: { theme: Theme }) => { borderTopRightRadius: 24, minHeight: 200, paddingBottom: Device.isIphoneX() ? 20 : 0, + maxHeight: '80%', }, - actionContainer: { - flex: 0, + footer: { + position: 'absolute', + bottom: 20, + width: '100%', paddingVertical: 16, - justifyContent: 'center', + height: 80, }, }); }; diff --git a/app/components/Snaps/SnapDialogApproval/SnapDialogApproval.tsx b/app/components/Snaps/SnapDialogApproval/SnapDialogApproval.tsx index 5ae7361656df..19a3b89746bd 100644 --- a/app/components/Snaps/SnapDialogApproval/SnapDialogApproval.tsx +++ b/app/components/Snaps/SnapDialogApproval/SnapDialogApproval.tsx @@ -125,14 +125,18 @@ const SnapDialogApproval = () => { isLoading={isLoading} onCancel={onCancel} useFooter={approvalRequest?.type === DIALOG_APPROVAL_TYPES.default} + // eslint-disable-next-line react-native/no-inline-styles + style={{ + marginBottom: + approvalRequest?.type !== DIALOG_APPROVAL_TYPES.default ? 80 : 0, + }} /> {approvalRequest?.type !== DIALOG_APPROVAL_TYPES.default && ( - <View style={styles.actionContainer}> - <BottomSheetFooter - buttonsAlignment={ButtonsAlignment.Horizontal} - buttonPropsArray={buttons} - /> - </View> + <BottomSheetFooter + style={styles.footer} + buttonsAlignment={ButtonsAlignment.Horizontal} + buttonPropsArray={buttons} + /> )} </View> </ApprovalModal> diff --git a/app/components/Snaps/SnapUIAddress/SnapUIAddress.tsx b/app/components/Snaps/SnapUIAddress/SnapUIAddress.tsx index 63d5601073ba..eaf5d460d2f0 100644 --- a/app/components/Snaps/SnapUIAddress/SnapUIAddress.tsx +++ b/app/components/Snaps/SnapUIAddress/SnapUIAddress.tsx @@ -22,6 +22,7 @@ export interface SnapUIAddressProps { truncate?: boolean; displayName?: boolean; avatar?: boolean; + color?: string; } export const SnapUIAddress: React.FunctionComponent<SnapUIAddressProps> = ({ @@ -30,6 +31,7 @@ export const SnapUIAddress: React.FunctionComponent<SnapUIAddressProps> = ({ truncate = true, displayName = false, avatar = true, + color, }) => { const caipIdentifier = useMemo(() => { if (isHexString(address)) { @@ -66,7 +68,7 @@ export const SnapUIAddress: React.FunctionComponent<SnapUIAddressProps> = ({ gap={8} > {avatar && <SnapUIAvatar address={caipIdentifier} size={avatarSize} />} - <Text variant={TextVariant.BodyMD}> + <Text variant={TextVariant.BodyMD} color={color}> {displayName && name ? name : formattedAddress} </Text> </Box> diff --git a/app/components/Snaps/SnapUIAddress/__snapshots__/SnapUIAddress.test.tsx.snap b/app/components/Snaps/SnapUIAddress/__snapshots__/SnapUIAddress.test.tsx.snap index 59a854807d29..1ac308186fb6 100644 --- a/app/components/Snaps/SnapUIAddress/__snapshots__/SnapUIAddress.test.tsx.snap +++ b/app/components/Snaps/SnapUIAddress/__snapshots__/SnapUIAddress.test.tsx.snap @@ -148,12 +148,12 @@ exports[`SnapUIAddress renders Bitcoin address 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -192,12 +192,12 @@ exports[`SnapUIAddress renders Bitcoin address with blockie 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -354,12 +354,12 @@ exports[`SnapUIAddress renders Cosmos address 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -398,12 +398,12 @@ exports[`SnapUIAddress renders Cosmos address with blockie 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -560,12 +560,12 @@ exports[`SnapUIAddress renders Ethereum address 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -604,12 +604,12 @@ exports[`SnapUIAddress renders Ethereum address with blockie 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -766,12 +766,12 @@ exports[`SnapUIAddress renders Hedera address 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -810,12 +810,12 @@ exports[`SnapUIAddress renders Hedera address with blockie 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -972,12 +972,12 @@ exports[`SnapUIAddress renders Polkadot address 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -1016,12 +1016,12 @@ exports[`SnapUIAddress renders Polkadot address with blockie 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -1178,12 +1178,12 @@ exports[`SnapUIAddress renders Starknet address 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -1222,12 +1222,12 @@ exports[`SnapUIAddress renders Starknet address with blockie 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -1384,12 +1384,12 @@ exports[`SnapUIAddress renders legacy Ethereum address 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > diff --git a/app/components/Snaps/SnapUIButton/SnapUIButton.tsx b/app/components/Snaps/SnapUIButton/SnapUIButton.tsx index e4729cbe6232..c7fecac5bb25 100644 --- a/app/components/Snaps/SnapUIButton/SnapUIButton.tsx +++ b/app/components/Snaps/SnapUIButton/SnapUIButton.tsx @@ -1,41 +1,24 @@ import React, { FunctionComponent } from 'react'; import { ButtonType, UserInputEventType } from '@metamask/snaps-sdk'; -import ButtonLink from '../../../component-library/components/Buttons/Button/variants/ButtonLink'; -import { ButtonLinkProps } from '../../../component-library/components/Buttons/Button/variants/ButtonLink/ButtonLink.types'; +import { TouchableOpacity } from 'react-native'; import { useSnapInterfaceContext } from '../SnapInterfaceContext'; -import Text, { - TextColor, - TextVariant, -} from '../../../component-library/components/Texts/Text'; import AnimatedLottieView from 'lottie-react-native'; export interface SnapUIButtonProps { name?: string; + disabled?: boolean; loading?: boolean; type?: ButtonType; form?: string; - variant: keyof typeof COLORS; - textVariant?: TextVariant; } -const COLORS = { - primary: TextColor.Info, - destructive: TextColor.Error, - disabled: TextColor.Muted, -}; - -export const SnapUIButton: FunctionComponent< - SnapUIButtonProps & ButtonLinkProps -> = ({ +export const SnapUIButton: FunctionComponent<SnapUIButtonProps> = ({ name, children, form, type = ButtonType.Button, - variant = 'primary', disabled = false, loading = false, - textVariant, - ...props }) => { const { handleEvent } = useSnapInterfaceContext(); @@ -54,34 +37,22 @@ export const SnapUIButton: FunctionComponent< } }; - const overriddenVariant = disabled ? 'disabled' : variant; - - const color = COLORS[overriddenVariant as keyof typeof COLORS]; - return ( - <ButtonLink - {...props} - id={name} - onPress={handlePress} - disabled={disabled} - label={ - loading ? ( - <AnimatedLottieView - source={{ uri: './loading.json' }} - autoPlay - loop - // eslint-disable-next-line react-native/no-inline-styles - style={{ - width: 24, - height: 24, - }} - /> - ) : ( - <Text color={color} variant={textVariant}> - {children} - </Text> - ) - } - /> + <TouchableOpacity id={name} onPress={handlePress} disabled={disabled}> + {loading ? ( + <AnimatedLottieView + source={{ uri: './loading.json' }} + autoPlay + loop + // eslint-disable-next-line react-native/no-inline-styles + style={{ + width: 24, + height: 24, + }} + /> + ) : ( + children + )} + </TouchableOpacity> ); }; diff --git a/app/components/Snaps/SnapUIFooterButton/SnapUIFooterButton.tsx b/app/components/Snaps/SnapUIFooterButton/SnapUIFooterButton.tsx index db07723ee9a7..e3aeffa6a417 100644 --- a/app/components/Snaps/SnapUIFooterButton/SnapUIFooterButton.tsx +++ b/app/components/Snaps/SnapUIFooterButton/SnapUIFooterButton.tsx @@ -95,10 +95,7 @@ export const SnapUIFooterButton: FunctionComponent<SnapUIFooterButtonProps> = ({ const buttonLabel = () => { if (loading) { return ( - <ActivityIndicator - size="small" - color={theme.colors.primary.inverse} - /> + <ActivityIndicator size="small" color={theme.colors.primary.inverse} /> ); } else if (isSnapAction && !hideSnapBranding) { return ( diff --git a/app/components/Snaps/SnapUIRenderer/SnapUIRenderer.test.tsx b/app/components/Snaps/SnapUIRenderer/SnapUIRenderer.test.tsx index 8449c8e22433..0dde3e179790 100644 --- a/app/components/Snaps/SnapUIRenderer/SnapUIRenderer.test.tsx +++ b/app/components/Snaps/SnapUIRenderer/SnapUIRenderer.test.tsx @@ -297,13 +297,20 @@ describe('SnapUIRenderer', () => { it('re-renders when the interface changes', () => { const { toJSON, getAllByTestId, updateInterface, getRenderCount } = - renderInterface(Box({ children: Input({ name: 'input' }) })); + renderInterface( + Box({ children: Input({ name: 'input', type: 'number' }) }), + ); const inputs = getAllByTestId('input'); expect(inputs).toHaveLength(1); updateInterface( - Box({ children: [Input({ name: 'input' }), Input({ name: 'input2' })] }), + Box({ + children: [ + Input({ name: 'input', type: 'number' }), + Input({ name: 'input2', type: 'password' }), + ], + }), ); const inputsAfterRerender = getAllByTestId('input'); diff --git a/app/components/Snaps/SnapUIRenderer/SnapUIRenderer.tsx b/app/components/Snaps/SnapUIRenderer/SnapUIRenderer.tsx index 7dcf925fbbc7..03a495b650fd 100644 --- a/app/components/Snaps/SnapUIRenderer/SnapUIRenderer.tsx +++ b/app/components/Snaps/SnapUIRenderer/SnapUIRenderer.tsx @@ -1,12 +1,11 @@ import React, { memo, useMemo, useRef } from 'react'; import { useSelector } from 'react-redux'; -import { Box } from '../../UI/Box/Box'; import { isEqual } from 'lodash'; import { getMemoizedInterface } from '../../../selectors/snaps/interfaceController'; import { SnapInterfaceContextProvider } from '../SnapInterfaceContext'; import { mapToTemplate } from './utils'; import TemplateRenderer from '../../UI/TemplateRenderer'; -import { ActivityIndicator, View } from 'react-native'; +import { ActivityIndicator, View, ViewStyle } from 'react-native'; import { Colors } from 'react-native/Libraries/NewAppScreen'; import { Container } from '@metamask/snaps-sdk/jsx'; import { strings } from '../../../../locales/i18n'; @@ -21,6 +20,7 @@ interface SnapUIRendererProps { interfaceId: string; onCancel?: () => void; useFooter: boolean; + style?: ViewStyle; PERF_DEBUG?: boolean; // DO NOT USE IN PRODUCTION } @@ -39,6 +39,7 @@ const SnapUIRendererComponent = ({ interfaceId, onCancel, useFooter, + style, PERF_DEBUG, }: SnapUIRendererProps) => { const theme = useTheme(); @@ -75,7 +76,7 @@ const SnapUIRendererComponent = ({ const { state: initialState, context } = interfaceState; return ( - <Box style={styles.root}> + <View style={[styles.root, style]}> <SnapInterfaceContextProvider snapId={snapId} interfaceId={interfaceId} @@ -85,7 +86,7 @@ const SnapUIRendererComponent = ({ <TemplateRenderer sections={sections} /> {PERF_DEBUG && <PerformanceTracker />} </SnapInterfaceContextProvider> - </Box> + </View> ); }; diff --git a/app/components/Snaps/SnapUIRenderer/__snapshots__/SnapUIRenderer.test.tsx.snap b/app/components/Snaps/SnapUIRenderer/__snapshots__/SnapUIRenderer.test.tsx.snap index e4588b9d799c..4ec4139043ef 100644 --- a/app/components/Snaps/SnapUIRenderer/__snapshots__/SnapUIRenderer.test.tsx.snap +++ b/app/components/Snaps/SnapUIRenderer/__snapshots__/SnapUIRenderer.test.tsx.snap @@ -4,11 +4,11 @@ exports[`SnapUIRenderer adds a footer if required 1`] = ` <View style={ [ - {}, { "flexGrow": 1, "minHeight": 667, }, + undefined, ] } > @@ -53,21 +53,31 @@ exports[`SnapUIRenderer adds a footer if required 1`] = ` > <Text accessibilityRole="text" - fontWeight="normal" style={ { - "color": "inherit", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, + "textAlign": "left", } } - textAlign="left" > <Text - color="inherit" + accessibilityRole="text" + style={ + { + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, + "fontWeight": "400", + "letterSpacing": 0, + "lineHeight": 24, + "textAlign": "left", + } + } > Hello world! </Text> @@ -110,7 +120,7 @@ exports[`SnapUIRenderer adds a footer if required 1`] = ` "alignItems": "center", "alignSelf": "flex-start", "backgroundColor": "transparent", - "borderColor": "#0376c9", + "borderColor": "#4459ff", "borderRadius": 24, "borderWidth": 1, "flex": 1, @@ -125,12 +135,12 @@ exports[`SnapUIRenderer adds a footer if required 1`] = ` accessibilityRole="text" style={ { - "color": "#ffffff", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, + "color": "#4459ff", + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -150,11 +160,11 @@ exports[`SnapUIRenderer prefills interactive inputs with existing state 1`] = ` <View style={ [ - {}, { "flexGrow": 1, "minHeight": 667, }, + undefined, ] } > @@ -210,7 +220,7 @@ exports[`SnapUIRenderer prefills interactive inputs with existing state 1`] = ` { "alignItems": "center", "backgroundColor": "#ffffff", - "borderColor": "#848c96", + "borderColor": "#b7bbc8", "borderRadius": 8, "borderWidth": 1, "flexDirection": "row", @@ -242,9 +252,9 @@ exports[`SnapUIRenderer prefills interactive inputs with existing state 1`] = ` "backgroundColor": "#ffffff", "borderColor": "transparent", "borderWidth": 1, - "color": "#141618", - "fontFamily": "Euclid Circular B", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "height": 24, "letterSpacing": 0, @@ -273,11 +283,11 @@ exports[`SnapUIRenderer re-renders when the interface changes 1`] = ` <View style={ [ - {}, { "flexGrow": 1, "minHeight": 667, }, + undefined, ] } > @@ -333,7 +343,7 @@ exports[`SnapUIRenderer re-renders when the interface changes 1`] = ` { "alignItems": "center", "backgroundColor": "#ffffff", - "borderColor": "#848c96", + "borderColor": "#b7bbc8", "borderRadius": 8, "borderWidth": 1, "flexDirection": "row", @@ -357,6 +367,7 @@ exports[`SnapUIRenderer re-renders when the interface changes 1`] = ` autoFocus={false} editable={true} id="input" + keyboardType="numeric" onBlur={[Function]} onChangeText={[Function]} onFocus={[Function]} @@ -365,9 +376,9 @@ exports[`SnapUIRenderer re-renders when the interface changes 1`] = ` "backgroundColor": "#ffffff", "borderColor": "transparent", "borderWidth": 1, - "color": "#141618", - "fontFamily": "Euclid Circular B", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "height": 24, "letterSpacing": 0, @@ -394,7 +405,7 @@ exports[`SnapUIRenderer re-renders when the interface changes 1`] = ` { "alignItems": "center", "backgroundColor": "#ffffff", - "borderColor": "#848c96", + "borderColor": "#b7bbc8", "borderRadius": 8, "borderWidth": 1, "flexDirection": "row", @@ -421,14 +432,15 @@ exports[`SnapUIRenderer re-renders when the interface changes 1`] = ` onBlur={[Function]} onChangeText={[Function]} onFocus={[Function]} + secureTextEntry={true} style={ { "backgroundColor": "#ffffff", "borderColor": "transparent", "borderWidth": 1, - "color": "#141618", - "fontFamily": "Euclid Circular B", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "height": 24, "letterSpacing": 0, @@ -457,11 +469,11 @@ exports[`SnapUIRenderer re-syncs state when the interface changes 1`] = ` <View style={ [ - {}, { "flexGrow": 1, "minHeight": 667, }, + undefined, ] } > @@ -517,7 +529,7 @@ exports[`SnapUIRenderer re-syncs state when the interface changes 1`] = ` { "alignItems": "center", "backgroundColor": "#ffffff", - "borderColor": "#848c96", + "borderColor": "#b7bbc8", "borderRadius": 8, "borderWidth": 1, "flexDirection": "row", @@ -549,9 +561,9 @@ exports[`SnapUIRenderer re-syncs state when the interface changes 1`] = ` "backgroundColor": "#ffffff", "borderColor": "transparent", "borderWidth": 1, - "color": "#141618", - "fontFamily": "Euclid Circular B", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "height": 24, "letterSpacing": 0, @@ -578,7 +590,7 @@ exports[`SnapUIRenderer re-syncs state when the interface changes 1`] = ` { "alignItems": "center", "backgroundColor": "#ffffff", - "borderColor": "#848c96", + "borderColor": "#b7bbc8", "borderRadius": 8, "borderWidth": 1, "flexDirection": "row", @@ -610,9 +622,9 @@ exports[`SnapUIRenderer re-syncs state when the interface changes 1`] = ` "backgroundColor": "#ffffff", "borderColor": "transparent", "borderWidth": 1, - "color": "#141618", - "fontFamily": "Euclid Circular B", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "height": 24, "letterSpacing": 0, @@ -641,11 +653,11 @@ exports[`SnapUIRenderer renders basic UI 1`] = ` <View style={ [ - {}, { "flexGrow": 1, "minHeight": 667, }, + undefined, ] } > @@ -690,21 +702,31 @@ exports[`SnapUIRenderer renders basic UI 1`] = ` > <Text accessibilityRole="text" - fontWeight="normal" style={ { - "color": "inherit", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, + "textAlign": "left", } } - textAlign="left" > <Text - color="inherit" + accessibilityRole="text" + style={ + { + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, + "fontWeight": "400", + "letterSpacing": 0, + "lineHeight": 24, + "textAlign": "left", + } + } > Hello world! </Text> @@ -724,11 +746,11 @@ exports[`SnapUIRenderer renders complex nested components 1`] = ` <View style={ [ - {}, { "flexGrow": 1, "minHeight": 667, }, + undefined, ] } > @@ -772,7 +794,7 @@ exports[`SnapUIRenderer renders complex nested components 1`] = ` } > <View - backgroundColor="#f2f4f6" + backgroundColor="#f3f5f9" borderRadius={8} color="Default" flexDirection="column" @@ -782,7 +804,7 @@ exports[`SnapUIRenderer renders complex nested components 1`] = ` style={ [ { - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", "color": "Default", "flexDirection": "column", "gap": 8, @@ -825,12 +847,12 @@ exports[`SnapUIRenderer renders complex nested components 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -856,12 +878,12 @@ exports[`SnapUIRenderer renders complex nested components 1`] = ` accessibilityRole="text" style={ { - "color": "#9fa6ae", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#9ca1af", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -871,12 +893,12 @@ exports[`SnapUIRenderer renders complex nested components 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -972,12 +994,12 @@ exports[`SnapUIRenderer renders complex nested components 1`] = ` ellipsizeMode="tail" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -988,12 +1010,12 @@ exports[`SnapUIRenderer renders complex nested components 1`] = ` ellipsizeMode="tail" style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -1019,12 +1041,12 @@ exports[`SnapUIRenderer renders complex nested components 1`] = ` ellipsizeMode="tail" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -1035,12 +1057,12 @@ exports[`SnapUIRenderer renders complex nested components 1`] = ` ellipsizeMode="tail" style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -1086,7 +1108,7 @@ exports[`SnapUIRenderer renders complex nested components 1`] = ` "alignItems": "center", "alignSelf": "flex-start", "backgroundColor": "transparent", - "borderColor": "#0376c9", + "borderColor": "#4459ff", "borderRadius": 24, "borderWidth": 1, "flex": 1, @@ -1101,12 +1123,12 @@ exports[`SnapUIRenderer renders complex nested components 1`] = ` accessibilityRole="text" style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, + "color": "#4459ff", + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -1125,7 +1147,7 @@ exports[`SnapUIRenderer renders complex nested components 1`] = ` { "alignItems": "center", "alignSelf": "flex-start", - "backgroundColor": "#141618", + "backgroundColor": "#121314", "borderRadius": 24, "flex": 1, "flexDirection": "row", @@ -1134,7 +1156,6 @@ exports[`SnapUIRenderer renders complex nested components 1`] = ` "paddingHorizontal": 16, } } - textVariant="sBodyMDMedium" > <View style={ @@ -1164,12 +1185,12 @@ exports[`SnapUIRenderer renders complex nested components 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -1181,16 +1202,27 @@ exports[`SnapUIRenderer renders complex nested components 1`] = ` style={ { "color": "#ffffff", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > <Text - color="inherit" + accessibilityRole="text" + style={ + { + "color": "inherit", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, + "fontWeight": undefined, + "letterSpacing": 0, + "lineHeight": 24, + "textAlign": undefined, + } + } > Foo </Text> @@ -1210,11 +1242,11 @@ exports[`SnapUIRenderer renders footers 1`] = ` <View style={ [ - {}, { "flexGrow": 1, "minHeight": 667, }, + undefined, ] } > @@ -1259,21 +1291,31 @@ exports[`SnapUIRenderer renders footers 1`] = ` > <Text accessibilityRole="text" - fontWeight="normal" style={ { - "color": "inherit", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, + "textAlign": "left", } } - textAlign="left" > <Text - color="inherit" + accessibilityRole="text" + style={ + { + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, + "fontWeight": "400", + "letterSpacing": 0, + "lineHeight": 24, + "textAlign": "left", + } + } > Hello world! </Text> @@ -1315,7 +1357,7 @@ exports[`SnapUIRenderer renders footers 1`] = ` "alignItems": "center", "alignSelf": "flex-start", "backgroundColor": "transparent", - "borderColor": "#0376c9", + "borderColor": "#4459ff", "borderRadius": 24, "borderWidth": 1, "flex": 1, @@ -1330,12 +1372,12 @@ exports[`SnapUIRenderer renders footers 1`] = ` accessibilityRole="text" style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, + "color": "#4459ff", + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -1354,7 +1396,7 @@ exports[`SnapUIRenderer renders footers 1`] = ` { "alignItems": "center", "alignSelf": "flex-start", - "backgroundColor": "#141618", + "backgroundColor": "#121314", "borderRadius": 24, "flex": 1, "flexDirection": "row", @@ -1363,7 +1405,6 @@ exports[`SnapUIRenderer renders footers 1`] = ` "paddingHorizontal": 16, } } - textVariant="sBodyMDMedium" > <View style={ @@ -1393,12 +1434,12 @@ exports[`SnapUIRenderer renders footers 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -1410,16 +1451,27 @@ exports[`SnapUIRenderer renders footers 1`] = ` style={ { "color": "#ffffff", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > <Text - color="inherit" + accessibilityRole="text" + style={ + { + "color": "inherit", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, + "fontWeight": undefined, + "letterSpacing": 0, + "lineHeight": 24, + "textAlign": undefined, + } + } > Foo </Text> @@ -1446,11 +1498,11 @@ exports[`SnapUIRenderer supports fields with multiple components 1`] = ` <View style={ [ - {}, { "flexGrow": 1, "minHeight": 667, }, + undefined, ] } > @@ -1522,12 +1574,12 @@ exports[`SnapUIRenderer supports fields with multiple components 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } testID="label" @@ -1539,7 +1591,7 @@ exports[`SnapUIRenderer supports fields with multiple components 1`] = ` { "alignItems": "center", "backgroundColor": "#ffffff", - "borderColor": "#848c96", + "borderColor": "#b7bbc8", "borderRadius": 8, "borderWidth": 1, "flexDirection": "row", @@ -1617,9 +1669,9 @@ exports[`SnapUIRenderer supports fields with multiple components 1`] = ` "backgroundColor": "#ffffff", "borderColor": "transparent", "borderWidth": 1, - "color": "#141618", - "fontFamily": "Euclid Circular B", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "height": 24, "letterSpacing": 0, @@ -1639,48 +1691,28 @@ exports[`SnapUIRenderer supports fields with multiple components 1`] = ` } testID="textfield-endacccessory" > - <Text - accessibilityRole="link" - accessible={true} + <TouchableOpacity disabled={false} id="submit" onPress={[Function]} - onPressIn={[Function]} - onPressOut={[Function]} - padding={0} - style={ - { - "backgroundColor": "transparent", - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, - "fontWeight": "400", - "letterSpacing": 0, - "lineHeight": 22, - } - } - suppressHighlighting={true} > <Text accessibilityRole="text" style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, - "fontWeight": "500", + "color": "#4459ff", + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, + "fontWeight": undefined, "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, + "textAlign": undefined, } } > - <Text - color="inherit" - > - Submit - </Text> + Submit </Text> - </Text> + </TouchableOpacity> </View> </View> </View> @@ -1700,11 +1732,11 @@ exports[`SnapUIRenderer supports forms with fields 1`] = ` <View style={ [ - {}, { "flexGrow": 1, "minHeight": 667, }, + undefined, ] } > @@ -1776,12 +1808,12 @@ exports[`SnapUIRenderer supports forms with fields 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } testID="label" @@ -1793,7 +1825,7 @@ exports[`SnapUIRenderer supports forms with fields 1`] = ` { "alignItems": "center", "backgroundColor": "#ffffff", - "borderColor": "#848c96", + "borderColor": "#b7bbc8", "borderRadius": 8, "borderWidth": 1, "flexDirection": "row", @@ -1825,9 +1857,9 @@ exports[`SnapUIRenderer supports forms with fields 1`] = ` "backgroundColor": "#ffffff", "borderColor": "transparent", "borderWidth": 1, - "color": "#141618", - "fontFamily": "Euclid Circular B", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "height": 24, "letterSpacing": 0, @@ -1860,12 +1892,12 @@ exports[`SnapUIRenderer supports forms with fields 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } testID="label" @@ -1889,7 +1921,7 @@ exports[`SnapUIRenderer supports forms with fields 1`] = ` style={ { "alignItems": "center", - "backgroundColor": "#0376c9", + "backgroundColor": "#4459ff", "borderColor": "border-muted", "borderRadius": 4, "borderWidth": 2, @@ -1925,12 +1957,12 @@ exports[`SnapUIRenderer supports forms with fields 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -1958,12 +1990,12 @@ exports[`SnapUIRenderer supports forms with fields 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } testID="label" @@ -1980,7 +2012,7 @@ exports[`SnapUIRenderer supports forms with fields 1`] = ` "alignItems": "center", "alignSelf": "stretch", "backgroundColor": "#ffffff", - "borderColor": "#BBC0C566", + "borderColor": "#b7bbc866", "borderRadius": 8, "borderWidth": 1, "flexDirection": "row", @@ -2045,12 +2077,12 @@ exports[`SnapUIRenderer supports forms with fields 1`] = ` ellipsizeMode="tail" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -2061,12 +2093,12 @@ exports[`SnapUIRenderer supports forms with fields 1`] = ` ellipsizeMode="tail" style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -2092,12 +2124,12 @@ exports[`SnapUIRenderer supports forms with fields 1`] = ` ellipsizeMode="tail" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -2108,12 +2140,12 @@ exports[`SnapUIRenderer supports forms with fields 1`] = ` ellipsizeMode="tail" style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -2122,7 +2154,7 @@ exports[`SnapUIRenderer supports forms with fields 1`] = ` </View> </View> <SvgMock - color="#141618" + color="#121314" height={16} name="ArrowDown" style={ @@ -2187,7 +2219,7 @@ exports[`SnapUIRenderer supports forms with fields 1`] = ` onStartShouldSetResponder={[Function]} style={ { - "backgroundColor": "#00000099", + "backgroundColor": "#00000066", "bottom": 0, "height": 1334, "left": 0, @@ -2289,6 +2321,7 @@ exports[`SnapUIRenderer supports forms with fields 1`] = ` "backgroundColor": "#ffffff", "borderTopLeftRadius": 24, "borderTopRightRadius": 24, + "maxHeight": "80%", "minHeight": 300, "overflow": "hidden", "paddingBottom": 20, @@ -2337,7 +2370,7 @@ exports[`SnapUIRenderer supports forms with fields 1`] = ` } > <SvgMock - color="#141618" + color="#121314" height={16} name="ArrowLeft" style={ @@ -2364,8 +2397,8 @@ exports[`SnapUIRenderer supports forms with fields 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", + "color": "#121314", + "fontFamily": "CentraNo1-Bold", "fontSize": 16, "fontWeight": "700", "letterSpacing": 0, @@ -2481,12 +2514,12 @@ exports[`SnapUIRenderer supports forms with fields 1`] = ` ellipsizeMode="tail" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -2497,12 +2530,12 @@ exports[`SnapUIRenderer supports forms with fields 1`] = ` ellipsizeMode="tail" style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -2528,12 +2561,12 @@ exports[`SnapUIRenderer supports forms with fields 1`] = ` ellipsizeMode="tail" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -2544,12 +2577,12 @@ exports[`SnapUIRenderer supports forms with fields 1`] = ` ellipsizeMode="tail" style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -2631,12 +2664,12 @@ exports[`SnapUIRenderer supports forms with fields 1`] = ` ellipsizeMode="tail" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -2647,12 +2680,12 @@ exports[`SnapUIRenderer supports forms with fields 1`] = ` ellipsizeMode="tail" style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -2678,12 +2711,12 @@ exports[`SnapUIRenderer supports forms with fields 1`] = ` ellipsizeMode="tail" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -2694,12 +2727,12 @@ exports[`SnapUIRenderer supports forms with fields 1`] = ` ellipsizeMode="tail" style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -2715,47 +2748,28 @@ exports[`SnapUIRenderer supports forms with fields 1`] = ` </View> </View> </Modal> - <Text - accessibilityRole="link" - accessible={true} + <TouchableOpacity disabled={false} id="submit" onPress={[Function]} - onPressIn={[Function]} - onPressOut={[Function]} - style={ - { - "backgroundColor": "transparent", - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, - "fontWeight": "400", - "letterSpacing": 0, - "lineHeight": 22, - } - } - suppressHighlighting={true} > <Text accessibilityRole="text" style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, - "fontWeight": "500", + "color": "#4459ff", + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, + "fontWeight": undefined, "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, + "textAlign": undefined, } } > - <Text - color="inherit" - > - Submit - </Text> + Submit </Text> - </Text> + </TouchableOpacity> </View> </View> </View> @@ -2772,11 +2786,11 @@ exports[`SnapUIRenderer supports interactive inputs 1`] = ` <View style={ [ - {}, { "flexGrow": 1, "minHeight": 667, }, + undefined, ] } > @@ -2832,7 +2846,7 @@ exports[`SnapUIRenderer supports interactive inputs 1`] = ` { "alignItems": "center", "backgroundColor": "#ffffff", - "borderColor": "#848c96", + "borderColor": "#b7bbc8", "borderRadius": 8, "borderWidth": 1, "flexDirection": "row", @@ -2864,9 +2878,9 @@ exports[`SnapUIRenderer supports interactive inputs 1`] = ` "backgroundColor": "#ffffff", "borderColor": "transparent", "borderWidth": 1, - "color": "#141618", - "fontFamily": "Euclid Circular B", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "height": 24, "letterSpacing": 0, @@ -2895,11 +2909,11 @@ exports[`SnapUIRenderer supports the onCancel prop 1`] = ` <View style={ [ - {}, { "flexGrow": 1, "minHeight": 667, }, + undefined, ] } > @@ -2944,21 +2958,31 @@ exports[`SnapUIRenderer supports the onCancel prop 1`] = ` > <Text accessibilityRole="text" - fontWeight="normal" style={ { - "color": "inherit", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, + "textAlign": "left", } } - textAlign="left" > <Text - color="inherit" + accessibilityRole="text" + style={ + { + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, + "fontWeight": "400", + "letterSpacing": 0, + "lineHeight": 24, + "textAlign": "left", + } + } > Hello world! </Text> @@ -3000,7 +3024,7 @@ exports[`SnapUIRenderer supports the onCancel prop 1`] = ` "alignItems": "center", "alignSelf": "flex-start", "backgroundColor": "transparent", - "borderColor": "#0376c9", + "borderColor": "#4459ff", "borderRadius": 24, "borderWidth": 1, "flex": 1, @@ -3015,12 +3039,12 @@ exports[`SnapUIRenderer supports the onCancel prop 1`] = ` accessibilityRole="text" style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, + "color": "#4459ff", + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -3039,7 +3063,7 @@ exports[`SnapUIRenderer supports the onCancel prop 1`] = ` { "alignItems": "center", "alignSelf": "flex-start", - "backgroundColor": "#141618", + "backgroundColor": "#121314", "borderRadius": 24, "flex": 1, "flexDirection": "row", @@ -3048,7 +3072,6 @@ exports[`SnapUIRenderer supports the onCancel prop 1`] = ` "paddingHorizontal": 16, } } - textVariant="sBodyMDMedium" > <View style={ @@ -3078,12 +3101,12 @@ exports[`SnapUIRenderer supports the onCancel prop 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -3095,16 +3118,27 @@ exports[`SnapUIRenderer supports the onCancel prop 1`] = ` style={ { "color": "#ffffff", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > <Text - color="inherit" + accessibilityRole="text" + style={ + { + "color": "inherit", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, + "fontWeight": undefined, + "letterSpacing": 0, + "lineHeight": 24, + "textAlign": undefined, + } + } > Foo </Text> diff --git a/app/components/Snaps/SnapUIRenderer/components/address.ts b/app/components/Snaps/SnapUIRenderer/components/address.ts index 8766939a878d..0505fcd57d36 100644 --- a/app/components/Snaps/SnapUIRenderer/components/address.ts +++ b/app/components/Snaps/SnapUIRenderer/components/address.ts @@ -3,6 +3,7 @@ import { UIComponentFactory } from './types'; export const address: UIComponentFactory<AddressElement> = ({ element: e, + textColor, }) => ({ element: 'SnapUIAddress', props: { @@ -11,5 +12,6 @@ export const address: UIComponentFactory<AddressElement> = ({ truncate: e.props.truncate, displayName: e.props.displayName, avatar: e.props.avatar, + color: textColor, }, }); diff --git a/app/components/Snaps/SnapUIRenderer/components/banner.test.ts b/app/components/Snaps/SnapUIRenderer/components/banner.test.ts index 1c0219fc6d3c..8ff0c84215e0 100644 --- a/app/components/Snaps/SnapUIRenderer/components/banner.test.ts +++ b/app/components/Snaps/SnapUIRenderer/components/banner.test.ts @@ -39,17 +39,24 @@ describe('banner component', () => { children: [ { key: '4322bc9dfc78dd5fac77c48bc64efc877ae6265f8cc50c12a63fe3a62674e402_1', - element: 'RNText', + element: 'Text', props: { - color: 'inherit', + color: undefined, + variant: 'sBodyMD', + style: { + fontWeight: '400', + textAlign: 'left', + }, }, children: 'Test content', }, ], props: { - color: 'inherit', - fontWeight: 'normal', - textAlign: 'left', + color: undefined, + style: { + fontWeight: '400', + textAlign: 'left', + }, variant: 'sBodyMD', }, }, @@ -83,17 +90,24 @@ describe('banner component', () => { children: [ { key: '4322bc9dfc78dd5fac77c48bc64efc877ae6265f8cc50c12a63fe3a62674e402_2', - element: 'RNText', + element: 'Text', props: { - color: 'inherit', + color: undefined, + variant: 'sBodyMD', + style: { + fontWeight: '400', + textAlign: 'left', + }, }, children: 'Test content', }, ], props: { - color: 'inherit', - fontWeight: 'normal', - textAlign: 'left', + color: undefined, + style: { + fontWeight: '400', + textAlign: 'left', + }, variant: 'sBodyMD', }, }, @@ -104,4 +118,55 @@ describe('banner component', () => { }, }); }); + + it('removes empty title', () => { + const el: BannerElement = { + type: 'Banner', + props: { + title: '', + severity: 'info', + children: createTextElement('Test content'), + }, + key: null, + }; + + const result = banner({ element: el, ...defaultParams }); + + expect(result).toEqual({ + element: 'SnapUIBanner', + children: [ + { + element: 'Text', + key: 'mock-key', + children: [ + { + key: '4322bc9dfc78dd5fac77c48bc64efc877ae6265f8cc50c12a63fe3a62674e402_3', + element: 'Text', + props: { + color: undefined, + variant: 'sBodyMD', + style: { + fontWeight: '400', + textAlign: 'left', + }, + }, + children: 'Test content', + }, + ], + props: { + color: undefined, + variant: 'sBodyMD', + style: { + fontWeight: '400', + textAlign: 'left', + }, + }, + }, + ], + props: { + severity: 'Info', + title: null, + }, + }); + }); }); diff --git a/app/components/Snaps/SnapUIRenderer/components/banner.ts b/app/components/Snaps/SnapUIRenderer/components/banner.ts index 19547e0d9f02..f802d0a1e357 100644 --- a/app/components/Snaps/SnapUIRenderer/components/banner.ts +++ b/app/components/Snaps/SnapUIRenderer/components/banner.ts @@ -22,7 +22,8 @@ export const banner: UIComponentFactory<BannerElement> = ({ mapToTemplate({ element: children as JSXElement, ...params }), ), props: { - title: e.props.title, + // The Banner component shows an empty title if we dont do this. + title: e.props.title.length > 0 ? e.props.title : null, severity: transformSeverity(e.props.severity), }, }); diff --git a/app/components/Snaps/SnapUIRenderer/components/bold.ts b/app/components/Snaps/SnapUIRenderer/components/bold.ts index 50413d9e0a20..0ebd5358610d 100644 --- a/app/components/Snaps/SnapUIRenderer/components/bold.ts +++ b/app/components/Snaps/SnapUIRenderer/components/bold.ts @@ -16,7 +16,7 @@ export const bold: UIComponentFactory<BoldElement> = ({ ), props: { variant: TextVariant.BodyMDBold, - color: 'inherit', + color: params.textColor, numberOfLines: 0, flexWrap: 'wrap', }, diff --git a/app/components/Snaps/SnapUIRenderer/components/box.test.ts b/app/components/Snaps/SnapUIRenderer/components/box.test.ts index c60690158aaa..68130470a4a5 100644 --- a/app/components/Snaps/SnapUIRenderer/components/box.test.ts +++ b/app/components/Snaps/SnapUIRenderer/components/box.test.ts @@ -40,15 +40,24 @@ describe('box UIComponentFactory', () => { children: [ { key: '4322bc9dfc78dd5fac77c48bc64efc877ae6265f8cc50c12a63fe3a62674e402_1', - element: 'RNText', + element: 'Text', children: 'Test content', - props: { color: 'inherit' }, + props: { + color: undefined, + variant: 'sBodyMD', + style: { + fontWeight: '400', + textAlign: 'left', + }, + }, }, ], props: { - color: 'inherit', - fontWeight: 'normal', - textAlign: 'left', + color: undefined, + style: { + fontWeight: '400', + textAlign: 'left', + }, variant: 'sBodyMD', }, }, diff --git a/app/components/Snaps/SnapUIRenderer/components/button.ts b/app/components/Snaps/SnapUIRenderer/components/button.ts index ce8093e4f226..a8e7acfc964e 100644 --- a/app/components/Snaps/SnapUIRenderer/components/button.ts +++ b/app/components/Snaps/SnapUIRenderer/components/button.ts @@ -1,22 +1,26 @@ -import { - ButtonElement, - ButtonProps, - JSXElement, -} from '@metamask/snaps-sdk/jsx'; +import { ButtonElement, JSXElement } from '@metamask/snaps-sdk/jsx'; import { getJsxChildren } from '@metamask/snaps-utils'; import { NonEmptyArray } from '@metamask/utils'; import { mapTextToTemplate } from '../utils'; import { UIComponentFactory } from './types'; import { TextVariant } from '../../../../component-library/components/Texts/Text'; +import { Theme } from '../../../../util/theme/models'; -interface ButtonElementProps extends ButtonElement { - props: ButtonProps & { - loading?: boolean; - size?: 'sm' | 'md'; - }; +function getTextColor(theme: Theme, props: ButtonElement['props']) { + if (props.disabled) { + return theme.colors.text.muted; + } + + switch (props.variant) { + case 'destructive': + return theme.colors.error.default; + default: + case 'primary': + return theme.colors.info.default; + } } -export const button: UIComponentFactory<ButtonElementProps> = ({ +export const button: UIComponentFactory<ButtonElement> = ({ element: e, ...params }) => ({ @@ -29,13 +33,16 @@ export const button: UIComponentFactory<ButtonElementProps> = ({ name: e.props.name, disabled: e.props.disabled, loading: e.props.loading ?? false, - textVariant: - e.props.size === 'sm' - ? TextVariant.BodySMMedium - : TextVariant.BodyMDMedium, }, children: mapTextToTemplate( getJsxChildren(e) as NonEmptyArray<string | JSXElement>, - params, + { + ...params, + textColor: getTextColor(params.theme, e.props), + textVariant: + e.props.size === 'sm' + ? TextVariant.BodySMMedium + : TextVariant.BodyMDMedium, + }, ), }); diff --git a/app/components/Snaps/SnapUIRenderer/components/card.test.ts b/app/components/Snaps/SnapUIRenderer/components/card.test.ts index 06dcf7867ad1..bdf641e587c7 100644 --- a/app/components/Snaps/SnapUIRenderer/components/card.test.ts +++ b/app/components/Snaps/SnapUIRenderer/components/card.test.ts @@ -58,6 +58,7 @@ describe('card component mapper', () => { "address": "0xab16a96D359eC26a11e2C2b3d8f8B8942d5Bfcdb", "avatar": undefined, "avatarSize": "xs", + "color": undefined, "displayName": undefined, "truncate": undefined, }, diff --git a/app/components/Snaps/SnapUIRenderer/components/container.test.ts b/app/components/Snaps/SnapUIRenderer/components/container.test.ts index 678ca60fa27b..e148f04d79b0 100644 --- a/app/components/Snaps/SnapUIRenderer/components/container.test.ts +++ b/app/components/Snaps/SnapUIRenderer/components/container.test.ts @@ -104,6 +104,7 @@ describe('container', () => { "props": { "isSnapAction": false, "onCancel": [MockFunction], + "variant": "Secondary", }, }, "element": "Box", diff --git a/app/components/Snaps/SnapUIRenderer/components/container.ts b/app/components/Snaps/SnapUIRenderer/components/container.ts index 12ae1fd82bd8..9e0307afcd8b 100644 --- a/app/components/Snaps/SnapUIRenderer/components/container.ts +++ b/app/components/Snaps/SnapUIRenderer/components/container.ts @@ -3,6 +3,7 @@ import { getJsxChildren } from '@metamask/snaps-utils'; import { mapToTemplate } from '../utils'; import { UIComponentFactory } from './types'; import { DEFAULT_FOOTER } from './footer'; +import { ButtonVariants } from '../../../../component-library/components/Buttons/Button'; export const container: UIComponentFactory<BoxElement> = ({ element: e, @@ -39,6 +40,7 @@ export const container: UIComponentFactory<BoxElement> = ({ key: 'default-button', props: { onCancel, + variant: ButtonVariants.Secondary, isSnapAction: false, }, children: t('navigation.close'), diff --git a/app/components/Snaps/SnapUIRenderer/components/field.ts b/app/components/Snaps/SnapUIRenderer/components/field.ts index 2726f671ff0e..18a669feb83a 100644 --- a/app/components/Snaps/SnapUIRenderer/components/field.ts +++ b/app/components/Snaps/SnapUIRenderer/components/field.ts @@ -10,6 +10,7 @@ import { getPrimaryChildElementIndex, mapToTemplate } from '../utils'; import { checkbox as checkboxFn } from './checkbox'; import { selector as selectorFn } from './selector'; import { UIComponentFactory, UIComponentParams } from './types'; +import { constructInputProps } from './input'; export const field: UIComponentFactory<FieldElement> = ({ element: e, @@ -62,6 +63,7 @@ export const field: UIComponentFactory<FieldElement> = ({ return { element: 'SnapUIInput', props: { + ...constructInputProps(input.props), id: input.props.name, placeholder: input.props.placeholder, label: e.props.label, diff --git a/app/components/Snaps/SnapUIRenderer/components/footer.test.ts b/app/components/Snaps/SnapUIRenderer/components/footer.test.ts index 74b3710bddff..8dbd4bb52215 100644 --- a/app/components/Snaps/SnapUIRenderer/components/footer.test.ts +++ b/app/components/Snaps/SnapUIRenderer/components/footer.test.ts @@ -59,16 +59,21 @@ describe('footer', () => { loading: false, name: undefined, onCancel: undefined, - textVariant: 'sBodyMDMedium', type: undefined, variant: 'Primary', }, children: [ { key: '57fd48ba929aa415dc4c3996c826a75f8686418c77765eb14fad2658efa73d87_1', - element: 'RNText', + element: 'Text', children: 'Button', - props: { color: 'inherit' }, + props: { + color: 'inherit', + style: { + fontWeight: undefined, + textAlign: undefined, + }, + }, }, ], }, diff --git a/app/components/Snaps/SnapUIRenderer/components/footer.ts b/app/components/Snaps/SnapUIRenderer/components/footer.ts index 215f580c0728..77fece801550 100644 --- a/app/components/Snaps/SnapUIRenderer/components/footer.ts +++ b/app/components/Snaps/SnapUIRenderer/components/footer.ts @@ -1,9 +1,14 @@ -import { FooterElement, ButtonElement } from '@metamask/snaps-sdk/jsx'; +import { + FooterElement, + ButtonElement, + JSXElement, +} from '@metamask/snaps-sdk/jsx'; import { getJsxChildren } from '@metamask/snaps-utils'; -import { UIComponent, UIComponentFactory, UIComponentParams } from './types'; -import { button as buttonFn } from './button'; +import { UIComponent, UIComponentFactory } from './types'; import { TemplateConfirmation } from '../../SnapDialogApproval/SnapDialogApproval'; import { ButtonVariants } from '../../../../component-library/components/Buttons/Button'; +import { mapTextToTemplate } from '../utils'; +import { NonEmptyArray } from '@metamask/utils'; export const DEFAULT_FOOTER = { element: 'Box', @@ -58,20 +63,23 @@ export const footer: UIComponentFactory<FooterElement> = ({ const footerChildren: UIComponent[] = ( providedChildren as ButtonElement[] - ).map((children, index) => { - const buttonMapped = buttonFn({ - ...params, - t, - element: children, - onCancel, - } as UIComponentParams<ButtonElement>); + ).map((child, index) => { + const textChildren = mapTextToTemplate( + getJsxChildren(child) as NonEmptyArray<string | JSXElement>, + // We specifically use inherit here because we know this will be nested in colored Text. + { ...params, textColor: 'inherit' }, + ); return { element: 'SnapUIFooterButton', - key: `snap-footer-button-${buttonMapped.props?.name ?? index}`, + key: `snap-footer-button-${child.props?.name ?? index}`, props: { - ...buttonMapped.props, - snapVariant: buttonMapped.props?.variant, + form: child.props.form, + type: child.props.type, + name: child.props.name, + disabled: child.props.disabled, + loading: child.props.loading ?? false, + snapVariant: child.props.variant, variant: providedChildren.length === 2 && index === 0 ? ButtonVariants.Secondary @@ -79,7 +87,7 @@ export const footer: UIComponentFactory<FooterElement> = ({ isSnapAction: true, onCancel, }, - children: buttonMapped.children, + children: textChildren, }; }); diff --git a/app/components/Snaps/SnapUIRenderer/components/icon.ts b/app/components/Snaps/SnapUIRenderer/components/icon.ts index ef3185eb9b8c..acbb01985793 100644 --- a/app/components/Snaps/SnapUIRenderer/components/icon.ts +++ b/app/components/Snaps/SnapUIRenderer/components/icon.ts @@ -9,7 +9,10 @@ import { const ICON_NAMES = new Set(Object.values(IconName)); -export const icon: UIComponentFactory<IconElement> = ({ element }) => { +export const icon: UIComponentFactory<IconElement> = ({ + element, + textSize, +}) => { const getIconName = () => { const rawName = element.props.name; // The icon names are formatted differently between extension and mobile, @@ -36,7 +39,7 @@ export const icon: UIComponentFactory<IconElement> = ({ element }) => { }; const getIconSize = () => { - switch (element.props.size) { + switch (element.props.size ?? textSize) { case 'md': return IconSize.Md; default: diff --git a/app/components/Snaps/SnapUIRenderer/components/input.ts b/app/components/Snaps/SnapUIRenderer/components/input.ts index 1ed6a6821939..f85f760d5862 100644 --- a/app/components/Snaps/SnapUIRenderer/components/input.ts +++ b/app/components/Snaps/SnapUIRenderer/components/input.ts @@ -1,14 +1,40 @@ import { InputElement } from '@metamask/snaps-sdk/jsx'; +import { hasProperty } from '@metamask/utils'; import { UIComponentFactory } from './types'; -// TODO: Support min, max, type etc. +// For now the types only change what the input looks like. +// There is no special behavior for min, max, step etc. +export const constructInputProps = (props: InputElement['props']) => { + if (!hasProperty(props, 'type')) { + return {}; + } + + switch (props.type) { + case 'password': { + return { + secureTextEntry: true, + }; + } + + case 'number': { + return { + keyboardType: 'numeric', + }; + } + + default: + return {}; + } +}; + export const input: UIComponentFactory<InputElement> = ({ element: e, form, }) => ({ element: 'SnapUIInput', props: { + ...constructInputProps(e.props), id: e.props.name, placeholder: e.props.placeholder, disabled: e.props.disabled, diff --git a/app/components/Snaps/SnapUIRenderer/components/link.test.ts b/app/components/Snaps/SnapUIRenderer/components/link.test.ts index e9c2e5f75b65..efb3dfe28b25 100644 --- a/app/components/Snaps/SnapUIRenderer/components/link.test.ts +++ b/app/components/Snaps/SnapUIRenderer/components/link.test.ts @@ -25,11 +25,15 @@ describe('link component', () => { element: 'SnapUILink', children: [ { - element: 'RNText', + element: 'Text', children: 'link', key: expect.any(String), props: { - color: 'inherit', + color: '#4459ff', + style: { + fontWeight: undefined, + textAlign: undefined, + }, }, }, ], diff --git a/app/components/Snaps/SnapUIRenderer/components/link.ts b/app/components/Snaps/SnapUIRenderer/components/link.ts index b043c40d7761..5473b2606f1e 100644 --- a/app/components/Snaps/SnapUIRenderer/components/link.ts +++ b/app/components/Snaps/SnapUIRenderer/components/link.ts @@ -11,7 +11,7 @@ export const link: UIComponentFactory<LinkElement> = ({ element: 'SnapUILink', children: mapTextToTemplate( getJsxChildren(e) as NonEmptyArray<string | JSXElement>, - params, + { ...params, textColor: params.theme.colors.info.default }, ), props: { href: e.props.href, diff --git a/app/components/Snaps/SnapUIRenderer/components/text.test.ts b/app/components/Snaps/SnapUIRenderer/components/text.test.ts index d3763a02c21a..4cc2ad266e66 100644 --- a/app/components/Snaps/SnapUIRenderer/components/text.test.ts +++ b/app/components/Snaps/SnapUIRenderer/components/text.test.ts @@ -31,16 +31,25 @@ describe('text component', () => { children: [ { key: 'ac37e9a8c31a35346c51f0f9058d2e2f0aecde724a0d7192561af5625000f3d1_1', - element: 'RNText', + element: 'Text', children: 'Hello World', - props: { color: 'inherit' }, + props: { + color: undefined, + variant: 'sBodyMD', + style: { + fontWeight: '400', + textAlign: 'left', + }, + }, }, ], props: { variant: TextVariant.BodyMD, - fontWeight: 'normal', - color: 'inherit', - textAlign: 'left', + color: undefined, + style: { + fontWeight: '400', + textAlign: 'left', + }, }, }); }); @@ -73,19 +82,15 @@ describe('text component', () => { }); it('should handle different font weights', () => { - const weights: TextElement['props']['fontWeight'][] = [ - 'bold', - 'medium', - 'regular', - ]; + const weights = ['bold', 'medium', 'regular'] as const; + const expectedWeights = { - bold: 'bold', - medium: 'medium', - regular: 'normal', + bold: '700', + medium: '500', + regular: '400', }; weights.forEach((weight) => { - if (!weight) return; const el: TextElement = { type: 'Text', props: { fontWeight: weight, children: ['Test'] }, @@ -93,18 +98,16 @@ describe('text component', () => { }; const result = text({ element: el, ...defaultParams }); - if (weight in expectedWeights) { - expect(result.props?.fontWeight).toBe(expectedWeights[weight]); - } + // eslint-disable-next-line @typescript-eslint/no-explicit-any + expect((result.props as any)?.style?.fontWeight).toBe( + expectedWeights[weight], + ); }); }); it('should handle different text alignments', () => { - const alignments: TextElement['props']['alignment'][] = [ - 'start', - 'center', - 'end', - ]; + const alignments = ['start', 'center', 'end'] as const; + const expectedAlignments = { start: 'left', center: 'center', @@ -112,7 +115,6 @@ describe('text component', () => { }; alignments.forEach((alignment) => { - if (!alignment) return; const el: TextElement = { type: 'Text', props: { alignment, children: ['Test'] }, @@ -120,9 +122,10 @@ describe('text component', () => { }; const result = text({ element: el, ...defaultParams }); - if (alignment in expectedAlignments) { - expect(result.props?.textAlign).toBe(expectedAlignments[alignment]); - } + // eslint-disable-next-line @typescript-eslint/no-explicit-any + expect((result.props as any)?.style?.textAlign).toBe( + expectedAlignments[alignment], + ); }); }); diff --git a/app/components/Snaps/SnapUIRenderer/components/text.ts b/app/components/Snaps/SnapUIRenderer/components/text.ts index e55dc2a7b94e..770477a662bb 100644 --- a/app/components/Snaps/SnapUIRenderer/components/text.ts +++ b/app/components/Snaps/SnapUIRenderer/components/text.ts @@ -7,6 +7,7 @@ import { TextColor, TextVariant, } from '../../../../component-library/components/Texts/Text/Text.types'; +import { typography } from '@metamask/design-tokens'; function getTextColor(color: TextElement['props']['color']) { switch (color) { @@ -23,23 +24,29 @@ function getTextColor(color: TextElement['props']['color']) { case 'warning': return TextColor.Warning; default: - return 'inherit'; + return null; } } -function getFontWeight(color: TextElement['props']['fontWeight']) { - switch (color) { +function getFontWeight( + color: TextElement['props']['fontWeight'], + inheritedWeight?: string, +) { + switch (color ?? inheritedWeight) { case 'bold': - return 'bold'; + return typography.sBodyMDBold.fontWeight; case 'medium': - return 'medium'; + return typography.sBodyMDMedium.fontWeight; case 'regular': default: - return 'normal'; + return typography.sBodyMD.fontWeight; } } -const alignText = (alignment: TextElement['props']['alignment']) => { +function getTextAlignment( + alignment: TextElement['props']['alignment'], + inheritedAlignment?: string, +) { switch (alignment) { case 'start': return 'left'; @@ -48,26 +55,58 @@ const alignText = (alignment: TextElement['props']['alignment']) => { case 'end': return 'right'; default: - return 'left'; + return inheritedAlignment ?? 'left'; } -}; +} + +function getTextVariant( + size: TextElement['props']['size'], + inheritedVariant?: string, +) { + switch (size) { + case 'md': + return TextVariant.BodyMD; + case 'sm': + return TextVariant.BodySM; + default: + return inheritedVariant ?? TextVariant.BodyMD; + } +} export const text: UIComponentFactory<TextElement> = ({ element: e, ...params -}) => ({ - element: 'Text', - children: mapTextToTemplate( - getJsxChildren(e) as NonEmptyArray<string | JSXElement>, - { - size: e.props.size, - ...params, +}) => { + const textColor = getTextColor(e.props.color) ?? params.textColor; + const textVariant = getTextVariant(e.props.size, params.textVariant); + const textFontWeight = getFontWeight( + e.props.fontWeight, + params.textFontWeight, + ); + const textAlignment = getTextAlignment( + e.props.alignment, + params.textAlignment, + ); + return { + element: 'Text', + children: mapTextToTemplate( + getJsxChildren(e) as NonEmptyArray<string | JSXElement>, + { + ...params, + textSize: e.props.size, + textColor, + textVariant, + textFontWeight, + textAlignment, + }, + ), + props: { + variant: textVariant, + color: textColor, + style: { + fontWeight: textFontWeight, + textAlign: textAlignment, + }, }, - ), - props: { - variant: e.props.size === 'sm' ? TextVariant.BodySM : TextVariant.BodyMD, - fontWeight: getFontWeight(e.props.fontWeight), - color: getTextColor(e.props.color), - textAlign: alignText(e.props.alignment), - }, -}); + }; +}; diff --git a/app/components/Snaps/SnapUIRenderer/components/tooltip.test.ts b/app/components/Snaps/SnapUIRenderer/components/tooltip.test.ts index 82f9a996b4ef..500136d7c9d7 100644 --- a/app/components/Snaps/SnapUIRenderer/components/tooltip.test.ts +++ b/app/components/Snaps/SnapUIRenderer/components/tooltip.test.ts @@ -33,18 +33,25 @@ describe('tooltip component', () => { element: 'Text', children: [ { - element: 'RNText', + element: 'Text', children: 'Hover me', props: { - color: 'inherit', + color: undefined, + variant: 'sBodyMD', + style: { + fontWeight: '400', + textAlign: 'left', + }, }, key: expect.any(String), }, ], props: { - color: 'inherit', - fontWeight: 'normal', - textAlign: 'left', + color: undefined, + style: { + fontWeight: '400', + textAlign: 'left', + }, variant: 'sBodyMD', }, key: expect.any(String), @@ -55,18 +62,25 @@ describe('tooltip component', () => { element: 'Text', children: [ { - element: 'RNText', + element: 'Text', children: 'Tooltip content', props: { - color: 'inherit', + color: undefined, + variant: 'sBodyMD', + style: { + fontWeight: '400', + textAlign: 'left', + }, }, key: expect.any(String), }, ], props: { - color: 'inherit', - fontWeight: 'normal', - textAlign: 'left', + color: undefined, + style: { + fontWeight: '400', + textAlign: 'left', + }, variant: 'sBodyMD', }, key: expect.any(String), @@ -97,18 +111,25 @@ describe('tooltip component', () => { element: 'Text', children: [ { - element: 'RNText', + element: 'Text', children: 'Hover me', props: { - color: 'inherit', + color: undefined, + variant: 'sBodyMD', + style: { + fontWeight: '400', + textAlign: 'left', + }, }, key: expect.any(String), }, ], props: { - color: 'inherit', - fontWeight: 'normal', - textAlign: 'left', + color: undefined, + style: { + fontWeight: '400', + textAlign: 'left', + }, variant: 'sBodyMD', }, key: expect.any(String), @@ -119,18 +140,25 @@ describe('tooltip component', () => { element: 'Text', children: [ { - element: 'RNText', + element: 'Text', children: 'Complex content', props: { - color: 'inherit', + color: undefined, + variant: 'sBodyMD', + style: { + fontWeight: '400', + textAlign: 'left', + }, }, key: expect.any(String), }, ], props: { - color: 'inherit', - fontWeight: 'normal', - textAlign: 'left', + color: undefined, + style: { + fontWeight: '400', + textAlign: 'left', + }, variant: 'sBodyMD', }, key: expect.any(String), @@ -161,18 +189,25 @@ describe('tooltip component', () => { element: 'Text', children: [ { - element: 'RNText', + element: 'Text', children: 'Nested text', props: { - color: 'inherit', + color: undefined, + variant: 'sBodyMD', + style: { + fontWeight: '400', + textAlign: 'left', + }, }, key: expect.any(String), }, ], props: { - color: 'inherit', - fontWeight: 'normal', - textAlign: 'left', + color: undefined, + style: { + fontWeight: '400', + textAlign: 'left', + }, variant: 'sBodyMD', }, key: expect.any(String), @@ -183,18 +218,25 @@ describe('tooltip component', () => { element: 'Text', children: [ { - element: 'RNText', + element: 'Text', children: 'Tooltip content', props: { - color: 'inherit', + color: undefined, + variant: 'sBodyMD', + style: { + fontWeight: '400', + textAlign: 'left', + }, }, key: expect.any(String), }, ], props: { - color: 'inherit', - fontWeight: 'normal', - textAlign: 'left', + color: undefined, + style: { + fontWeight: '400', + textAlign: 'left', + }, variant: 'sBodyMD', }, key: expect.any(String), diff --git a/app/components/Snaps/SnapUIRenderer/components/types.ts b/app/components/Snaps/SnapUIRenderer/components/types.ts index 76659b74cdf0..76775dd336ca 100644 --- a/app/components/Snaps/SnapUIRenderer/components/types.ts +++ b/app/components/Snaps/SnapUIRenderer/components/types.ts @@ -8,7 +8,15 @@ export interface UIComponentParams<T extends JSXElement> { useFooter?: boolean; onCancel?: () => void; t: (key: string) => string; + + // React Native specific props theme: Theme; + // If the component must inherit any of the following props from the parent, the parent must pass the props to its children. + textSize?: string; + textColor?: string; + textVariant?: string; + textFontWeight?: string; + textAlignment?: string; } export interface UIComponent { diff --git a/app/components/Snaps/SnapUIRenderer/utils.test.ts b/app/components/Snaps/SnapUIRenderer/utils.test.ts index 3100a79f7cfc..6262cd7a39fa 100644 --- a/app/components/Snaps/SnapUIRenderer/utils.test.ts +++ b/app/components/Snaps/SnapUIRenderer/utils.test.ts @@ -32,19 +32,26 @@ describe('SnapUIRenderer utils', () => { "children": [ { "children": "Test Content", - "element": "RNText", + "element": "Text", "key": "87ada83862ef4cde3ca2a1f8cbfbbc38af6f971cb4d669224ab903ffc2c7d1bd_2", "props": { - "color": "inherit", + "color": undefined, + "style": { + "fontWeight": "400", + "textAlign": "left", + }, + "variant": "sBodyMD", }, }, ], "element": "Text", "key": "87ada83862ef4cde3ca2a1f8cbfbbc38af6f971cb4d669224ab903ffc2c7d1bd_1", "props": { - "color": "inherit", - "fontWeight": "normal", - "textAlign": "left", + "color": undefined, + "style": { + "fontWeight": "400", + "textAlign": "left", + }, "variant": "sBodyMD", }, } @@ -75,7 +82,7 @@ describe('SnapUIRenderer utils', () => { const result = mapTextToTemplate([iconElement], { map: {}, theme: mockTheme, - size: 'sm', + textSize: 'sm', }); expect(result[0]).toMatchObject({ @@ -98,7 +105,7 @@ describe('SnapUIRenderer utils', () => { const result = mapTextToTemplate([textElement], { map: {}, theme: mockTheme, - size: 'sm', + textSize: 'sm', }); expect(result[0]).toMatchObject({ @@ -120,7 +127,7 @@ describe('SnapUIRenderer utils', () => { const result = mapTextToTemplate([iconElement], { map: {}, theme: mockTheme, - size: 'md', + textSize: 'md', }); expect(result[0]).toMatchObject({ diff --git a/app/components/Snaps/SnapUIRenderer/utils.ts b/app/components/Snaps/SnapUIRenderer/utils.ts index c4dda2c28a1c..edb539ec6240 100644 --- a/app/components/Snaps/SnapUIRenderer/utils.ts +++ b/app/components/Snaps/SnapUIRenderer/utils.ts @@ -27,8 +27,15 @@ export interface MapToTemplateParams { onCancel?: () => void; onConfirm?: () => void; t?: (key: string) => string; + + // React Native specific props theme: Theme; - size?: string; + // If the component must inherit any of the following props from the parent, the parent must pass the props to its children. + textSize?: string; + textColor?: string; + textVariant?: string; + textFontWeight?: string; + textAlignment?: string; } /** @@ -164,7 +171,15 @@ export const mapTextToTemplate = ( elements: NonEmptyArray<JSXElement | string>, params: Pick< MapToTemplateParams, - 'map' | 'useFooter' | 'onCancel' | 'theme' | 'size' + | 'map' + | 'useFooter' + | 'onCancel' + | 'theme' + | 'textSize' + | 'textColor' + | 'textVariant' + | 'textAlignment' + | 'textFontWeight' >, ): NonEmptyArray<UIComponent | string> => elements.map((e) => { @@ -172,25 +187,21 @@ export const mapTextToTemplate = ( const text = unescapeFn(e); const key = generateKey(params.map, Text({ children: text })); return { - element: 'RNText', + element: 'Text', key, children: text, - props: { color: 'inherit' }, + props: { + variant: params.textVariant, + color: params.textColor, + style: { + fontWeight: params.textFontWeight, + textAlign: params.textAlignment, + }, + }, }; } - return mapToTemplate({ - ...params, - element: - e.type === 'Icon' - ? ({ - ...e, - props: { - size: params.size, - ...e.props, - }, - } as JSXElement) - : e, - }); + + return mapToTemplate({ ...params, element: e }); }) as NonEmptyArray<UIComponent | string>; /** diff --git a/app/components/Snaps/SnapUISelector/SnapUISelector.styles.ts b/app/components/Snaps/SnapUISelector/SnapUISelector.styles.ts index bb4b120174e7..628f3b79670b 100644 --- a/app/components/Snaps/SnapUISelector/SnapUISelector.styles.ts +++ b/app/components/Snaps/SnapUISelector/SnapUISelector.styles.ts @@ -20,6 +20,7 @@ const styleSheet = (params: { theme: Theme }) => { minHeight: 300, paddingBottom: Device.isIphoneX() ? 20 : 0, overflow: 'hidden', + maxHeight: '80%', }, content: { paddingLeft: 16, diff --git a/app/components/Snaps/SnapUISpinner/SnapUISpinner.test.tsx b/app/components/Snaps/SnapUISpinner/SnapUISpinner.test.tsx index 1e1447bfe9f0..2dde7401c07f 100644 --- a/app/components/Snaps/SnapUISpinner/SnapUISpinner.test.tsx +++ b/app/components/Snaps/SnapUISpinner/SnapUISpinner.test.tsx @@ -2,13 +2,14 @@ import React from 'react'; import { ActivityIndicator } from 'react-native'; import { render } from '@testing-library/react-native'; import { SnapUISpinner } from './SnapUISpinner'; +import { lightTheme } from '@metamask/design-tokens'; const mockUseTheme = jest.fn(); jest.mock('../../../util/theme', () => ({ useTheme: () => mockUseTheme(), })); -const mockColor = '#0376c9'; +const mockColor = lightTheme.colors.primary.default; describe('SnapUISpinner', () => { beforeEach(() => { diff --git a/app/components/Snaps/SnapUITooltip/SnapUITooltip.test.tsx b/app/components/Snaps/SnapUITooltip/SnapUITooltip.test.tsx index 2c0357fb21f2..c34c16ff5c57 100644 --- a/app/components/Snaps/SnapUITooltip/SnapUITooltip.test.tsx +++ b/app/components/Snaps/SnapUITooltip/SnapUITooltip.test.tsx @@ -1,5 +1,5 @@ import React from 'react'; -import { fireEvent, render } from '@testing-library/react-native'; +import { fireEvent, render, waitFor } from '@testing-library/react-native'; import { SnapUITooltip } from './SnapUITooltip'; import { Text, TouchableOpacity } from 'react-native'; import ApprovalModal from '../../Approvals/ApprovalModal'; @@ -59,7 +59,9 @@ describe('SnapUITooltip', () => { await new Promise((resolve) => setTimeout(resolve, 0)); const modal = UNSAFE_getByType(ApprovalModal); - expect(modal.props.isVisible).toBe(false); + await waitFor(() => { + expect(modal.props.isVisible).toBe(false); + }); }); it('should render complex content in modal', () => { diff --git a/app/components/UI/AccountApproval/__snapshots__/index.test.tsx.snap b/app/components/UI/AccountApproval/__snapshots__/index.test.tsx.snap index bd879ef62cae..2991278affe6 100644 --- a/app/components/UI/AccountApproval/__snapshots__/index.test.tsx.snap +++ b/app/components/UI/AccountApproval/__snapshots__/index.test.tsx.snap @@ -34,7 +34,7 @@ exports[`AccountApproval should render correctly 1`] = ` <View placeholderStyle={ { - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", } } useNativeDriver={true} @@ -80,7 +80,7 @@ exports[`AccountApproval should render correctly 1`] = ` "backgroundColor": "#eee", }, { - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", }, ] } @@ -108,7 +108,7 @@ exports[`AccountApproval should render correctly 1`] = ` "fontSize": 15, }, { - "color": "#141618", + "color": "#121314", "marginRight": 5, }, { @@ -125,8 +125,8 @@ exports[`AccountApproval should render correctly 1`] = ` <Text style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", + "color": "#121314", + "fontFamily": "CentraNo1-Bold", "fontSize": 14, "fontWeight": "600", "textAlign": "center", @@ -160,8 +160,8 @@ exports[`AccountApproval should render correctly 1`] = ` <Text style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 12, "fontWeight": "400", "padding": 5, @@ -178,8 +178,8 @@ exports[`AccountApproval should render correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "Euclid Circular B", + "color": "#121314", + "fontFamily": "CentraNo1-Bold", "fontSize": 18, "fontWeight": "700", "letterSpacing": 0, @@ -196,8 +196,8 @@ exports[`AccountApproval should render correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "Euclid Circular B", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, @@ -222,7 +222,7 @@ exports[`AccountApproval should render correctly 1`] = ` style={ { "alignItems": "center", - "borderColor": "#848c96", + "borderColor": "#b7bbc8", "borderRadius": 10, "borderWidth": 1, "flexDirection": "row", @@ -234,7 +234,7 @@ exports[`AccountApproval should render correctly 1`] = ` <View placeholderStyle={ { - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", } } useNativeDriver={true} @@ -285,7 +285,7 @@ exports[`AccountApproval should render correctly 1`] = ` "backgroundColor": "#eee", }, { - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", }, ] } @@ -318,20 +318,20 @@ exports[`AccountApproval should render correctly 1`] = ` style={ { "0": { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", + "color": "#121314", + "fontFamily": "CentraNo1-Bold", "fontSize": 16, "fontWeight": "600", "marginRight": 2, "maxWidth": "45%", }, "1": undefined, - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -343,19 +343,19 @@ exports[`AccountApproval should render correctly 1`] = ` style={ { "0": { - "color": "#141618", + "color": "#121314", "flexGrow": 1, - "fontFamily": "EuclidCircularB-Bold", + "fontFamily": "CentraNo1-Bold", "fontSize": 16, "fontWeight": "600", }, "1": undefined, - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -371,18 +371,18 @@ exports[`AccountApproval should render correctly 1`] = ` { "0": { "alignSelf": "flex-start", - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 14, "fontWeight": "100", }, "1": undefined, - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -418,7 +418,7 @@ exports[`AccountApproval should render correctly 1`] = ` }, { "backgroundColor": "#ffffff", - "borderColor": "#6a737d", + "borderColor": "#686e7d", "borderWidth": 1, }, [ @@ -447,13 +447,13 @@ exports[`AccountApproval should render correctly 1`] = ` null, [ { - "fontFamily": "EuclidCircularB-Bold", + "fontFamily": "CentraNo1-Bold", "fontSize": 14, "fontWeight": "600", "textAlign": "center", }, { - "color": "#6a737d", + "color": "#686e7d", }, undefined, ], @@ -479,7 +479,7 @@ exports[`AccountApproval should render correctly 1`] = ` "padding": 15, }, { - "backgroundColor": "#0376c9", + "backgroundColor": "#4459ff", "minHeight": 50, }, [ @@ -509,7 +509,7 @@ exports[`AccountApproval should render correctly 1`] = ` null, [ { - "fontFamily": "EuclidCircularB-Bold", + "fontFamily": "CentraNo1-Bold", "fontSize": 14, "fontWeight": "600", "textAlign": "center", diff --git a/app/components/UI/AccountApproval/index.js b/app/components/UI/AccountApproval/index.js index 7e55be10c093..948d3fa123cc 100644 --- a/app/components/UI/AccountApproval/index.js +++ b/app/components/UI/AccountApproval/index.js @@ -19,7 +19,6 @@ import { CommonSelectorsIDs } from '../../../../e2e/selectors/Common.selectors'; import { ConnectAccountBottomSheetSelectorsIDs } from '../../../../e2e/selectors/Browser/ConnectAccountBottomSheet.selectors'; import { withMetricsAwareness } from '../../../components/hooks/useMetrics'; import Routes from '../../../constants/navigation/Routes'; -import Engine from '../../../core/Engine'; import SDKConnect from '../../../core/SDKConnect/SDKConnect'; import { selectAccountsLength } from '../../../selectors/accountTrackerController'; import { selectSelectedInternalAccountFormattedAddress } from '../../../selectors/accountsController'; @@ -36,6 +35,7 @@ import ShowWarningBanner from './showWarningBanner'; import createStyles from './styles'; import { SourceType } from '../../hooks/useMetrics/useMetrics.types'; import { MetricsEventBuilder } from '../../../core/Analytics/MetricsEventBuilder'; +import { getPhishingTestResult } from '../../../util/phishingDetection'; /** * Account access approval component @@ -286,12 +286,9 @@ class AccountApproval extends PureComponent { }; checkUrlFlaggedAsPhishing = (hostname) => { - const { PhishingController } = Engine.context; - PhishingController.maybeUpdateState(); - const phishingControllerTestResult = PhishingController.test(hostname); - + const phishingResult = getPhishingTestResult(hostname); this.setState({ - isUrlFlaggedAsPhishing: phishingControllerTestResult.result, + isUrlFlaggedAsPhishing: phishingResult?.result || false, }); }; diff --git a/app/components/UI/AccountApproval/index.test.tsx b/app/components/UI/AccountApproval/index.test.tsx index 29e438ead164..66cac620a6d5 100644 --- a/app/components/UI/AccountApproval/index.test.tsx +++ b/app/components/UI/AccountApproval/index.test.tsx @@ -34,6 +34,14 @@ jest.mock('../../../core/Engine', () => { }; }); +jest.mock('../../../util/phishingDetection', () => ({ + getPhishingTestResult: jest.fn((url) => { + if (url === 'phishing.com') return { result: true }; + return { result: false }; + }), + isProductSafetyDappScanningEnabled: jest.fn().mockReturnValue(false), +})); + const mockInitialState = { engine: { backgroundState: { diff --git a/app/components/UI/AccountApproval/styles.ts b/app/components/UI/AccountApproval/styles.ts index 1a175076f207..904377af371c 100644 --- a/app/components/UI/AccountApproval/styles.ts +++ b/app/components/UI/AccountApproval/styles.ts @@ -1,6 +1,10 @@ import { StyleSheet } from 'react-native'; import Device from '../../../util/device'; import type { ThemeColors, ThemeTypography } from '@metamask/design-tokens'; +import { + getFontFamily, + TextVariant, +} from '../../../component-library/components/Texts/Text'; const createStyles = (colors: ThemeColors, typography: ThemeTypography) => StyleSheet.create({ @@ -17,6 +21,7 @@ const createStyles = (colors: ThemeColors, typography: ThemeTypography) => }, intro: { ...typography.sHeadingMD, + fontFamily: getFontFamily(TextVariant.HeadingMD), textAlign: 'center', color: colors.text.default, marginBottom: 8, @@ -24,6 +29,7 @@ const createStyles = (colors: ThemeColors, typography: ThemeTypography) => }, intro_reconnect: { ...typography.sHeadingMD, + fontFamily: getFontFamily(TextVariant.HeadingMD), textAlign: 'center', color: colors.text.default, marginBottom: 8, @@ -40,6 +46,7 @@ const createStyles = (colors: ThemeColors, typography: ThemeTypography) => }, warning: { ...typography.sHeadingSMRegular, + fontFamily: getFontFamily(TextVariant.HeadingSMRegular), color: colors.text.default, paddingHorizontal: 24, marginBottom: 16, @@ -110,7 +117,8 @@ const createStyles = (colors: ThemeColors, typography: ThemeTypography) => borderColor: colors.primary.default, }, optionText: { - ...typography.lBodyMD, + ...typography.sBodyMD, + fontFamily: getFontFamily(TextVariant.BodyMD), color: colors.text.default, marginHorizontal: 1, }, diff --git a/app/components/UI/AccountFromToInfoCard/__snapshots__/AccountFromToInfoCard.test.tsx.snap b/app/components/UI/AccountFromToInfoCard/__snapshots__/AccountFromToInfoCard.test.tsx.snap index 865f7651a7f4..a3caa4b8dfba 100644 --- a/app/components/UI/AccountFromToInfoCard/__snapshots__/AccountFromToInfoCard.test.tsx.snap +++ b/app/components/UI/AccountFromToInfoCard/__snapshots__/AccountFromToInfoCard.test.tsx.snap @@ -23,12 +23,12 @@ exports[`AccountFromToInfoCard should match snapshot 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -39,7 +39,7 @@ exports[`AccountFromToInfoCard should match snapshot 1`] = ` style={ { "backgroundColor": "#ffffff", - "borderColor": "#848c96", + "borderColor": "#b7bbc8", "borderRadius": 4, "borderWidth": 1, "flexDirection": "row", @@ -269,7 +269,7 @@ exports[`AccountFromToInfoCard should match snapshot 1`] = ` "height": 32, "justifyContent": "center", "overflow": "hidden", - "shadowColor": "#0000001A", + "shadowColor": "#0000001a", "shadowOffset": { "height": 2, "width": 0, @@ -306,12 +306,12 @@ exports[`AccountFromToInfoCard should match snapshot 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -330,12 +330,12 @@ exports[`AccountFromToInfoCard should match snapshot 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Bold", + "fontSize": 16, "fontWeight": "700", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -349,12 +349,12 @@ exports[`AccountFromToInfoCard should match snapshot 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, "marginLeft": "auto", } } @@ -365,12 +365,12 @@ exports[`AccountFromToInfoCard should match snapshot 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Bold", + "fontSize": 16, "fontWeight": "700", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -407,12 +407,12 @@ exports[`AccountFromToInfoCard should match snapshot 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -433,7 +433,7 @@ exports[`AccountFromToInfoCard should match snapshot 1`] = ` "paddingHorizontal": 10, }, { - "borderColor": "#848c96", + "borderColor": "#b7bbc8", }, ] } @@ -451,7 +451,7 @@ exports[`AccountFromToInfoCard should match snapshot 1`] = ` <View placeholderStyle={ { - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", } } useNativeDriver={true} @@ -499,7 +499,7 @@ exports[`AccountFromToInfoCard should match snapshot 1`] = ` "backgroundColor": "#eee", }, { - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", }, ] } @@ -541,12 +541,12 @@ exports[`AccountFromToInfoCard should match snapshot 1`] = ` numberOfLines={1} style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -565,12 +565,12 @@ exports[`AccountFromToInfoCard should match snapshot 1`] = ` numberOfLines={1} style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", "fontSize": 12, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -588,7 +588,7 @@ exports[`AccountFromToInfoCard should match snapshot 1`] = ` style={ [ { - "color": "#1c8234", + "color": "#1c7e33", "fontSize": 15, }, undefined, diff --git a/app/components/UI/AccountInfoCard/__snapshots__/index.test.tsx.snap b/app/components/UI/AccountInfoCard/__snapshots__/index.test.tsx.snap index 707e9f509e6c..64cf9e670715 100644 --- a/app/components/UI/AccountInfoCard/__snapshots__/index.test.tsx.snap +++ b/app/components/UI/AccountInfoCard/__snapshots__/index.test.tsx.snap @@ -5,7 +5,7 @@ exports[`AccountInfoCard should match snapshot 1`] = ` style={ { "alignItems": "center", - "borderColor": "#848c96", + "borderColor": "#b7bbc8", "borderRadius": 10, "borderWidth": 1, "flexDirection": "row", @@ -17,7 +17,7 @@ exports[`AccountInfoCard should match snapshot 1`] = ` <View placeholderStyle={ { - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", } } useNativeDriver={true} @@ -182,7 +182,7 @@ exports[`AccountInfoCard should match snapshot 1`] = ` "backgroundColor": "#eee", }, { - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", }, ] } @@ -215,20 +215,20 @@ exports[`AccountInfoCard should match snapshot 1`] = ` style={ { "0": { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", + "color": "#121314", + "fontFamily": "CentraNo1-Bold", "fontSize": 16, "fontWeight": "600", "marginRight": 2, "maxWidth": "45%", }, "1": undefined, - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -240,19 +240,19 @@ exports[`AccountInfoCard should match snapshot 1`] = ` style={ { "0": { - "color": "#141618", + "color": "#121314", "flexGrow": 1, - "fontFamily": "EuclidCircularB-Bold", + "fontFamily": "CentraNo1-Bold", "fontSize": 16, "fontWeight": "600", }, "1": undefined, - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -268,18 +268,18 @@ exports[`AccountInfoCard should match snapshot 1`] = ` { "0": { "alignSelf": "flex-start", - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 14, "fontWeight": "100", }, "1": undefined, - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > diff --git a/app/components/UI/AccountInfoCard/index.js b/app/components/UI/AccountInfoCard/index.js index f6fb293df484..30b4d468412e 100644 --- a/app/components/UI/AccountInfoCard/index.js +++ b/app/components/UI/AccountInfoCard/index.js @@ -29,7 +29,7 @@ import { getNormalizedTxState, getTicker, } from '../../../util/transactions'; -import ApproveTransactionHeader from '../../Views/confirmations/components/ApproveTransactionHeader'; +import ApproveTransactionHeader from '../../Views/confirmations/legacy/components/ApproveTransactionHeader'; import Identicon from '../Identicon'; import { selectInternalAccounts } from '../../../selectors/accountsController'; diff --git a/app/components/UI/AccountOverview/__snapshots__/index.test.tsx.snap b/app/components/UI/AccountOverview/__snapshots__/index.test.tsx.snap index 603b0d0074fa..472dc69afd5d 100644 --- a/app/components/UI/AccountOverview/__snapshots__/index.test.tsx.snap +++ b/app/components/UI/AccountOverview/__snapshots__/index.test.tsx.snap @@ -35,7 +35,7 @@ exports[`AccountOverview should render correctly 1`] = ` onPress={[Function]} style={ { - "borderColor": "#0376c9", + "borderColor": "#4459ff", "borderRadius": 80, "borderWidth": 2, "padding": 2, @@ -46,7 +46,7 @@ exports[`AccountOverview should render correctly 1`] = ` <View placeholderStyle={ { - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", } } useNativeDriver={true} @@ -94,7 +94,7 @@ exports[`AccountOverview should render correctly 1`] = ` "backgroundColor": "#eee", }, { - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", }, ] } @@ -127,8 +127,8 @@ exports[`AccountOverview should render correctly 1`] = ` style={ { "0": { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 24, "fontWeight": "400", "textAlign": "center", @@ -143,12 +143,12 @@ exports[`AccountOverview should render correctly 1`] = ` "2": { "borderColor": "#ffffff", }, - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } testID="account-label" @@ -160,7 +160,7 @@ exports[`AccountOverview should render correctly 1`] = ` onPress={[Function]} style={ { - "backgroundColor": "#0376C91A", + "backgroundColor": "#4459ff1a", "borderRadius": 40, "marginBottom": 20, "marginTop": 20, @@ -173,8 +173,8 @@ exports[`AccountOverview should render correctly 1`] = ` numberOfLines={1} style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 12, "fontWeight": "400", "letterSpacing": 0.8, diff --git a/app/components/UI/AccountRightButton/__snapshots__/index.test.tsx.snap b/app/components/UI/AccountRightButton/__snapshots__/index.test.tsx.snap index 1462e4bf9e09..da381a0d75f0 100644 --- a/app/components/UI/AccountRightButton/__snapshots__/index.test.tsx.snap +++ b/app/components/UI/AccountRightButton/__snapshots__/index.test.tsx.snap @@ -524,7 +524,7 @@ exports[`AccountRightButton should render correctly 1`] = ` "height": 32, "justifyContent": "center", "overflow": "hidden", - "shadowColor": "#0000001A", + "shadowColor": "#0000001a", "shadowOffset": { "height": 2, "width": 0, diff --git a/app/components/UI/AccountSelectorList/AccountSelector.test.tsx b/app/components/UI/AccountSelectorList/AccountSelector.test.tsx index ad29f6ceb5d4..b96d6e790820 100644 --- a/app/components/UI/AccountSelectorList/AccountSelector.test.tsx +++ b/app/components/UI/AccountSelectorList/AccountSelector.test.tsx @@ -21,7 +21,6 @@ import Engine from '../../../core/Engine'; import { CellComponentSelectorsIDs } from '../../../../e2e/selectors/wallet/CellComponent.selectors'; // eslint-disable-next-line import/no-namespace -import * as Utils from '../../hooks/useAccounts/utils'; import { KeyringTypes } from '@metamask/keyring-controller'; const BUSINESS_ACCOUNT = '0xC4955C0d639D99699Bfd7Ec54d9FaFEe40e4D272'; @@ -49,6 +48,38 @@ jest.mock('@react-navigation/native', () => ({ }), })); +// Mock useAccounts +jest.mock('../../../components/hooks/useAccounts', () => ({ + useAccounts: jest.fn().mockImplementation(() => ({ + accounts: [ + { + name: 'Account 1', + address: '0xC4955C0d639D99699Bfd7Ec54d9FaFEe40e4D272', + assets: { + fiatBalance: '$3200.00\n1 ETH', + }, + type: 'HD Key Tree', + yOffset: 0, + isSelected: true, + balanceError: undefined, + }, + { + name: 'Account 2', + address: '0xd018538C87232FF95acbCe4870629b75640a78E7', + assets: { + fiatBalance: '$6400.00\n2 ETH', + }, + type: 'HD Key Tree', + yOffset: 78, + isSelected: false, + balanceError: undefined, + }, + ], + evmAccounts: [], + ensByAccountAddress: {}, + })), +})); + // Mock Engine jest.mock('../../../core/Engine', () => ({ context: { @@ -106,6 +137,36 @@ const onRemoveImportedAccount = jest.fn(); const AccountSelectorListUseAccounts: React.FC<AccountSelectorListProps> = ({ privacyMode = false, }) => { + if (privacyMode) { + (useAccounts as jest.Mock).mockImplementationOnce(() => ({ + accounts: [ + { + name: 'Account 1', + address: '0xC4955C0d639D99699Bfd7Ec54d9FaFEe40e4D272', + assets: { + fiatBalance: '$3200.00\n1 ETH', + }, + type: 'HD Key Tree', + yOffset: 0, + isSelected: true, + balanceError: undefined, + }, + { + name: 'Account 2', + address: '0xd018538C87232FF95acbCe4870629b75640a78E7', + assets: { + fiatBalance: '$6400.00\n2 ETH', + }, + type: 'HD Key Tree', + yOffset: 78, + isSelected: false, + balanceError: undefined, + }, + ], + evmAccounts: [], + ensByAccountAddress: {}, + })); + } const { accounts, ensByAccountAddress } = useAccounts(); return ( <AccountSelectorList @@ -145,16 +206,6 @@ const renderComponent = ( describe('AccountSelectorList', () => { beforeEach(() => { - jest.spyOn(Utils, 'getAccountBalances').mockReturnValueOnce({ - balanceETH: '1', - balanceFiat: '$3200.00', - balanceWeiHex: '', - }); - jest.spyOn(Utils, 'getAccountBalances').mockReturnValueOnce({ - balanceETH: '2', - balanceFiat: '$6400.00', - balanceWeiHex: '', - }); onSelectAccount.mockClear(); onRemoveImportedAccount.mockClear(); }); @@ -193,38 +244,6 @@ describe('AccountSelectorList', () => { }); }); - it('should render all accounts but only the balance for selected account', async () => { - const { queryByTestId, getAllByTestId, toJSON } = renderComponent({ - engine: { - ...initialState.engine, - backgroundState: { - ...initialState.engine.backgroundState, - PreferencesController: { - ...initialState.engine.backgroundState.PreferencesController, - isMultiAccountBalancesEnabled: false, - }, - AccountsController: MOCK_ACCOUNTS_CONTROLLER_STATE, - }, - }, - }); - - await waitFor(async () => { - const accounts = getAllByTestId(regex.accountBalance); - expect(accounts.length).toBe(1); - - const businessAccountItem = await queryByTestId( - `${AccountListBottomSheetSelectorsIDs.ACCOUNT_BALANCE_BY_ADDRESS_TEST_ID}-${BUSINESS_ACCOUNT}`, - ); - - expect(within(businessAccountItem).getByText(regex.eth(1))).toBeDefined(); - expect( - within(businessAccountItem).getByText(regex.usd(3200)), - ).toBeDefined(); - - expect(toJSON()).toMatchSnapshot(); - }); - }); - it('renders all accounts with right accessory', async () => { const { getAllByTestId, toJSON } = renderComponent( initialState, @@ -315,6 +334,7 @@ describe('AccountSelectorList', () => { }); it('allows account removal for simple keyring type', async () => { const mockAlert = jest.spyOn(Alert, 'alert'); + mockAlert.mockReset(); mockAlert.mockImplementation( (_title, _message, buttons?: AlertButton[]) => { // Simulate user clicking "Yes, remove it" @@ -322,6 +342,25 @@ describe('AccountSelectorList', () => { }, ); + // Mock account data for a simple keyring account + (useAccounts as jest.Mock).mockImplementationOnce(() => ({ + accounts: [ + { + name: 'Account 1', + address: BUSINESS_ACCOUNT, + assets: { + fiatBalance: '$3200.00\n1 ETH', + }, + type: KeyringTypes.simple, // Important: must be simple type for removal + yOffset: 0, + isSelected: true, + balanceError: undefined, + }, + ], + evmAccounts: [], + ensByAccountAddress: {}, + })); + // Create a state with a simple keyring account const mockAccountsWithSimple = createMockAccountsControllerState([ BUSINESS_ACCOUNT, @@ -362,22 +401,23 @@ describe('AccountSelectorList', () => { expect.any(Array), { cancelable: false }, ); + }); - // Verify onRemoveImportedAccount was called with correct parameters - expect(onRemoveImportedAccount).toHaveBeenCalledWith({ - removedAddress: BUSINESS_ACCOUNT, - }); - - // Verify KeyringController.removeAccount was called - expect( - Engine.context.KeyringController.removeAccount, - ).toHaveBeenCalledWith(BUSINESS_ACCOUNT); + // Verify onRemoveImportedAccount was called with correct parameters + expect(onRemoveImportedAccount).toHaveBeenCalledWith({ + removedAddress: BUSINESS_ACCOUNT, }); + // Verify KeyringController.removeAccount was called + expect(Engine.context.KeyringController.removeAccount).toHaveBeenCalledWith( + BUSINESS_ACCOUNT, + ); + mockAlert.mockRestore(); }); it('allows account removal for snap keyring type', async () => { const mockAlert = jest.spyOn(Alert, 'alert'); + mockAlert.mockReset(); mockAlert.mockImplementation( (_title, _message, buttons?: AlertButton[]) => { // Simulate user clicking "Yes, remove it" @@ -385,6 +425,36 @@ describe('AccountSelectorList', () => { }, ); + // Mock account data for a snap account + (useAccounts as jest.Mock).mockImplementationOnce(() => ({ + accounts: [ + { + name: 'Snap Account 1', + address: MOCK_ADDRESS_1, + assets: { + fiatBalance: '$3200.00\n1 ETH', + }, + type: KeyringTypes.snap, // Important: must be snap type for removal + yOffset: 0, + isSelected: true, + balanceError: undefined, + }, + { + name: 'Snap Account 2', + address: MOCK_ADDRESS_2, + assets: { + fiatBalance: '$6400.00\n2 ETH', + }, + type: KeyringTypes.snap, // Important: must be snap type for removal + yOffset: 78, + isSelected: false, + balanceError: undefined, + }, + ], + evmAccounts: [], + ensByAccountAddress: {}, + })); + const mockAccountsWithSnap = createMockAccountsControllerStateWithSnap( [MOCK_ADDRESS_1, MOCK_ADDRESS_2], 'MetaMask Simple Snap Keyring', @@ -408,6 +478,7 @@ describe('AccountSelectorList', () => { // Trigger long press on the first cell that should correspond to MOCK_ADDRESS_1 cells[0].props.onLongPress(); + // Need to wait for the Alert to be called await waitFor(() => { // Verify Alert was shown with correct text expect(mockAlert).toHaveBeenCalledWith( @@ -416,19 +487,19 @@ describe('AccountSelectorList', () => { expect.any(Array), { cancelable: false }, ); + }); - // Verify onRemoveImportedAccount was called with correct parameters - expect(onRemoveImportedAccount).toHaveBeenCalledWith({ - removedAddress: MOCK_ADDRESS_1, - nextActiveAddress: MOCK_ADDRESS_2, - }); - - // Verify KeyringController.removeAccount was called - expect( - Engine.context.KeyringController.removeAccount, - ).toHaveBeenCalledWith(MOCK_ADDRESS_1); + // Verify onRemoveImportedAccount was called with correct parameters + expect(onRemoveImportedAccount).toHaveBeenCalledWith({ + removedAddress: MOCK_ADDRESS_1, + nextActiveAddress: MOCK_ADDRESS_2, }); + // Verify KeyringController.removeAccount was called + expect(Engine.context.KeyringController.removeAccount).toHaveBeenCalledWith( + MOCK_ADDRESS_1, + ); + mockAlert.mockRestore(); }); }); diff --git a/app/components/UI/AccountSelectorList/AccountSelectorList.tsx b/app/components/UI/AccountSelectorList/AccountSelectorList.tsx index 4cb4b44fe3cd..65625deec107 100644 --- a/app/components/UI/AccountSelectorList/AccountSelectorList.tsx +++ b/app/components/UI/AccountSelectorList/AccountSelectorList.tsx @@ -28,7 +28,7 @@ import { isDefaultAccountName } from '../../../util/ENSUtils'; import { strings } from '../../../../locales/i18n'; import { AvatarVariant } from '../../../component-library/components/Avatars/Avatar/Avatar.types'; import { Account, Assets } from '../../hooks/useAccounts'; -import UntypedEngine from '../../../core/Engine'; +import Engine from '../../../core/Engine'; import { removeAccountsFromPermissions } from '../../../core/Permissions'; import Routes from '../../../constants/navigation/Routes'; @@ -56,9 +56,6 @@ const AccountSelectorList = ({ const { navigate } = useNavigation(); // TODO: Replace "any" with type // eslint-disable-next-line @typescript-eslint/no-explicit-any - const Engine = UntypedEngine as any; - // TODO: Replace "any" with type - // eslint-disable-next-line @typescript-eslint/no-explicit-any const accountListRef = useRef<any>(null); const accountsLengthRef = useRef<number>(0); const { styles } = useStyles(styleSheet, {}); diff --git a/app/components/UI/AccountSelectorList/__snapshots__/AccountSelector.test.tsx.snap b/app/components/UI/AccountSelectorList/__snapshots__/AccountSelector.test.tsx.snap index c4498419f078..2d2c57dd0afc 100644 --- a/app/components/UI/AccountSelectorList/__snapshots__/AccountSelector.test.tsx.snap +++ b/app/components/UI/AccountSelectorList/__snapshots__/AccountSelector.test.tsx.snap @@ -61,7 +61,7 @@ exports[`AccountSelectorList renders all accounts with balances 1`] = ` style={ { "alignItems": "center", - "backgroundColor": "#0376C91A", + "backgroundColor": "#4459ff1a", "flexDirection": "row", } } @@ -269,8 +269,8 @@ exports[`AccountSelectorList renders all accounts with balances 1`] = ` numberOfLines={1} style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, @@ -314,12 +314,12 @@ exports[`AccountSelectorList renders all accounts with balances 1`] = ` numberOfLines={1} style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -347,12 +347,12 @@ exports[`AccountSelectorList renders all accounts with balances 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, "textAlign": "right", } } @@ -363,12 +363,12 @@ exports[`AccountSelectorList renders all accounts with balances 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, "textAlign": "right", } } @@ -385,7 +385,7 @@ exports[`AccountSelectorList renders all accounts with balances 1`] = ` accessible={true} style={ { - "backgroundColor": "#0376C91A", + "backgroundColor": "#4459ff1a", "bottom": 0, "flexDirection": "row", "left": 0, @@ -399,7 +399,7 @@ exports[`AccountSelectorList renders all accounts with balances 1`] = ` <View style={ { - "backgroundColor": "#0376c9", + "backgroundColor": "#4459ff", "borderRadius": 2, "marginLeft": 4, "marginVertical": 4, @@ -437,7 +437,7 @@ exports[`AccountSelectorList renders all accounts with balances 1`] = ` testID="main-wallet-account-actions-0" > <SvgMock - color="#141618" + color="#121314" height={16} name="MoreVertical" style={ @@ -669,8 +669,8 @@ exports[`AccountSelectorList renders all accounts with balances 1`] = ` numberOfLines={1} style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, @@ -714,12 +714,12 @@ exports[`AccountSelectorList renders all accounts with balances 1`] = ` numberOfLines={1} style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -747,12 +747,12 @@ exports[`AccountSelectorList renders all accounts with balances 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, "textAlign": "right", } } @@ -763,12 +763,12 @@ exports[`AccountSelectorList renders all accounts with balances 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, "textAlign": "right", } } @@ -809,7 +809,7 @@ exports[`AccountSelectorList renders all accounts with balances 1`] = ` testID="main-wallet-account-actions-1" > <SvgMock - color="#141618" + color="#121314" height={16} name="MoreVertical" style={ @@ -1098,8 +1098,8 @@ exports[`AccountSelectorList renders all accounts with right accessory 1`] = ` numberOfLines={1} style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, @@ -1143,12 +1143,12 @@ exports[`AccountSelectorList renders all accounts with right accessory 1`] = ` numberOfLines={1} style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -1201,7 +1201,7 @@ exports[`AccountSelectorList renders all accounts with right accessory 1`] = ` testID="main-wallet-account-actions-0" > <SvgMock - color="#141618" + color="#121314" height={16} name="MoreVertical" style={ @@ -1434,8 +1434,8 @@ exports[`AccountSelectorList renders all accounts with right accessory 1`] = ` numberOfLines={1} style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, @@ -1479,12 +1479,12 @@ exports[`AccountSelectorList renders all accounts with right accessory 1`] = ` numberOfLines={1} style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -1537,7 +1537,7 @@ exports[`AccountSelectorList renders all accounts with right accessory 1`] = ` testID="main-wallet-account-actions-1" > <SvgMock - color="#141618" + color="#121314" height={16} name="MoreVertical" style={ @@ -1617,7 +1617,7 @@ exports[`AccountSelectorList renders correctly 1`] = ` style={ { "alignItems": "center", - "backgroundColor": "#0376C91A", + "backgroundColor": "#4459ff1a", "flexDirection": "row", } } @@ -1825,8 +1825,8 @@ exports[`AccountSelectorList renders correctly 1`] = ` numberOfLines={1} style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, @@ -1870,12 +1870,12 @@ exports[`AccountSelectorList renders correctly 1`] = ` numberOfLines={1} style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -1903,12 +1903,12 @@ exports[`AccountSelectorList renders correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, "textAlign": "right", } } @@ -1919,12 +1919,12 @@ exports[`AccountSelectorList renders correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, "textAlign": "right", } } @@ -1941,7 +1941,7 @@ exports[`AccountSelectorList renders correctly 1`] = ` accessible={true} style={ { - "backgroundColor": "#0376C91A", + "backgroundColor": "#4459ff1a", "bottom": 0, "flexDirection": "row", "left": 0, @@ -1955,7 +1955,7 @@ exports[`AccountSelectorList renders correctly 1`] = ` <View style={ { - "backgroundColor": "#0376c9", + "backgroundColor": "#4459ff", "borderRadius": 2, "marginLeft": 4, "marginVertical": 4, @@ -1993,7 +1993,7 @@ exports[`AccountSelectorList renders correctly 1`] = ` testID="main-wallet-account-actions-0" > <SvgMock - color="#141618" + color="#121314" height={16} name="MoreVertical" style={ @@ -2225,8 +2225,8 @@ exports[`AccountSelectorList renders correctly 1`] = ` numberOfLines={1} style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, @@ -2270,12 +2270,12 @@ exports[`AccountSelectorList renders correctly 1`] = ` numberOfLines={1} style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -2303,12 +2303,12 @@ exports[`AccountSelectorList renders correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, "textAlign": "right", } } @@ -2319,12 +2319,12 @@ exports[`AccountSelectorList renders correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, "textAlign": "right", } } @@ -2365,550 +2365,7 @@ exports[`AccountSelectorList renders correctly 1`] = ` testID="main-wallet-account-actions-1" > <SvgMock - color="#141618" - height={16} - name="MoreVertical" - style={ - { - "height": 16, - "width": 16, - } - } - width={16} - /> - </TouchableOpacity> - </View> - </View> - </View> - </View> -</RCTScrollView> -`; - -exports[`AccountSelectorList should render all accounts but only the balance for selected account 1`] = ` -<RCTScrollView - collapsable={false} - data={ - [ - { - "address": "0xC4955C0d639D99699Bfd7Ec54d9FaFEe40e4D272", - "assets": { - "fiatBalance": "$3200.00 -1 ETH", - }, - "balanceError": undefined, - "isSelected": true, - "name": "Account 1", - "type": "HD Key Tree", - "yOffset": 0, - }, - { - "address": "0xd018538C87232FF95acbCe4870629b75640a78E7", - "assets": undefined, - "balanceError": undefined, - "isSelected": false, - "name": "Account 2", - "type": "HD Key Tree", - "yOffset": 78, - }, - ] - } - getItem={[Function]} - getItemCount={[Function]} - initialNumToRender={999} - keyExtractor={[Function]} - onContentSizeChange={[Function]} - onGestureHandlerEvent={[Function]} - onGestureHandlerStateChange={[Function]} - onLayout={[Function]} - onMomentumScrollBegin={[Function]} - onMomentumScrollEnd={[Function]} - onScroll={[Function]} - onScrollBeginDrag={[Function]} - onScrollEndDrag={[Function]} - removeClippedSubviews={false} - renderItem={[Function]} - renderScrollComponent={[Function]} - scrollEventThrottle={50} - stickyHeaderIndices={[]} - viewabilityConfigCallbackPairs={[]} -> - <View> - <View - onFocusCapture={[Function]} - onLayout={[Function]} - style={null} - > - <View - style={ - { - "alignItems": "center", - "backgroundColor": "#0376C91A", - "flexDirection": "row", - } - } - > - <TouchableOpacity - onLongPress={[Function]} - onPress={[Function]} - style={ - { - "alignItems": "center", - "flex": 1, - "opacity": 1, - "padding": 16, - "position": "relative", - "zIndex": 1, - } - } - testID="select-with-menu" - > - <View - accessibilityRole="none" - accessible={true} - style={ - { - "alignItems": "flex-start", - "flexDirection": "column", - "padding": 16, - "paddingBottom": 0, - "paddingLeft": 0, - "paddingRight": 0, - "paddingTop": 0, - "zIndex": 2, - } - } - > - <View - style={ - { - "alignItems": "center", - "flexDirection": "row", - } - } - > - <View - style={ - { - "alignItems": "center", - "flexDirection": "row", - "opacity": 1, - } - } - > - <View - style={ - { - "backgroundColor": "#ffffff", - "borderRadius": 16, - "height": 32, - "marginRight": 16, - "overflow": "hidden", - "width": 32, - } - } - testID="cellbase-avatar" - > - <Image - source={ - { - "uri": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAMAAAD04JH5AAAACVBMVEXdS1D5VCcriEUyFsCiAAAAA3RSTlP////6yOLMAABAi0lEQVR42gGAQH+/AAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEB1YUoAZL8IcwAAAAASUVORK5CYII=", - } - } - style={ - { - "flex": 1, - } - } - /> - </View> - <View - style={ - { - "alignItems": "flex-start", - "flex": 1, - } - } - > - <Text - accessibilityRole="text" - numberOfLines={1} - style={ - { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 16, - "fontWeight": "400", - "letterSpacing": 0, - "lineHeight": 24, - } - } - testID="cellbase-avatar-title" - > - Account 1 - </Text> - <TouchableOpacity - accessibilityState={ - { - "busy": undefined, - "checked": undefined, - "disabled": undefined, - "expanded": undefined, - "selected": undefined, - } - } - accessible={true} - focusable={false} - onClick={[Function]} - onResponderGrant={[Function]} - onResponderMove={[Function]} - onResponderRelease={[Function]} - onResponderTerminate={[Function]} - onResponderTerminationRequest={[Function]} - onStartShouldSetResponder={[Function]} - style={ - { - "alignItems": "flex-start", - "flexDirection": "row", - "marginBottom": 0, - "zIndex": 1, - } - } - > - <Text - accessibilityRole="text" - numberOfLines={1} - style={ - { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, - "fontWeight": "400", - "letterSpacing": 0, - "lineHeight": 22, - } - } - > - 0xC495...D272 - </Text> - </TouchableOpacity> - </View> - <View - style={ - { - "marginLeft": 16, - } - } - > - <View - style={ - { - "alignItems": "flex-end", - "flexDirection": "column", - } - } - testID="account-balance-by-address-0xC4955C0d639D99699Bfd7Ec54d9FaFEe40e4D272" - > - <Text - accessibilityRole="text" - style={ - { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, - "fontWeight": "400", - "letterSpacing": 0, - "lineHeight": 22, - "textAlign": "right", - } - } - > - $3200.00 - </Text> - <Text - accessibilityRole="text" - style={ - { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, - "fontWeight": "400", - "letterSpacing": 0, - "lineHeight": 22, - "textAlign": "right", - } - } - > - 1 ETH - </Text> - </View> - </View> - </View> - </View> - </View> - <View - accessibilityRole="checkbox" - accessible={true} - style={ - { - "backgroundColor": "#0376C91A", - "bottom": 0, - "flexDirection": "row", - "left": 0, - "position": "absolute", - "right": 0, - "top": 0, - "width": 4, - } - } - > - <View - style={ - { - "backgroundColor": "#0376c9", - "borderRadius": 2, - "marginLeft": 4, - "marginVertical": 4, - "width": 4, - } - } - /> - </View> - </TouchableOpacity> - <View - style={ - { - "paddingRight": 20, - } - } - > - <TouchableOpacity - accessibilityRole="button" - accessible={true} - activeOpacity={1} - disabled={false} - onPress={[Function]} - onPressIn={[Function]} - onPressOut={[Function]} - style={ - { - "alignItems": "center", - "borderRadius": 8, - "height": 24, - "justifyContent": "center", - "opacity": 1, - "width": 24, - } - } - testID="main-wallet-account-actions-0" - > - <SvgMock - color="#141618" - height={16} - name="MoreVertical" - style={ - { - "height": 16, - "width": 16, - } - } - width={16} - /> - </TouchableOpacity> - </View> - </View> - </View> - <View - onFocusCapture={[Function]} - onLayout={[Function]} - style={null} - > - <View - style={ - { - "alignItems": "center", - "backgroundColor": "#ffffff", - "flexDirection": "row", - } - } - > - <TouchableOpacity - onLongPress={[Function]} - onPress={[Function]} - style={ - { - "alignItems": "center", - "flex": 1, - "opacity": 1, - "padding": 16, - "position": "relative", - "zIndex": 1, - } - } - testID="select-with-menu" - > - <View - accessibilityRole="none" - accessible={true} - style={ - { - "alignItems": "flex-start", - "flexDirection": "column", - "padding": 16, - "paddingBottom": 0, - "paddingLeft": 0, - "paddingRight": 0, - "paddingTop": 0, - "zIndex": 2, - } - } - > - <View - style={ - { - "alignItems": "center", - "flexDirection": "row", - } - } - > - <View - style={ - { - "alignItems": "center", - "flexDirection": "row", - "opacity": 1, - } - } - > - <View - style={ - { - "backgroundColor": "#ffffff", - "borderRadius": 16, - "height": 32, - "marginRight": 16, - "overflow": "hidden", - "width": 32, - } - } - testID="cellbase-avatar" - > - <Image - source={ - { - "uri": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAMAAAD04JH5AAAACVBMVEUUEPe9KtdD3HbfvBRsAAAAA3RSTlP////6yOLMAABAi0lEQVR42gGAQH+/AAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAACAgICAgICAgICAgICAgICAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICAAICAgICAgICAgICAgICAgIBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgICAgICTxE4AfldXr0AAAAASUVORK5CYII=", - } - } - style={ - { - "flex": 1, - } - } - /> - </View> - <View - style={ - { - "alignItems": "flex-start", - "flex": 1, - } - } - > - <Text - accessibilityRole="text" - numberOfLines={1} - style={ - { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 16, - "fontWeight": "400", - "letterSpacing": 0, - "lineHeight": 24, - } - } - testID="cellbase-avatar-title" - > - Account 2 - </Text> - <TouchableOpacity - accessibilityState={ - { - "busy": undefined, - "checked": undefined, - "disabled": undefined, - "expanded": undefined, - "selected": undefined, - } - } - accessible={true} - focusable={false} - onClick={[Function]} - onResponderGrant={[Function]} - onResponderMove={[Function]} - onResponderRelease={[Function]} - onResponderTerminate={[Function]} - onResponderTerminationRequest={[Function]} - onStartShouldSetResponder={[Function]} - style={ - { - "alignItems": "flex-start", - "flexDirection": "row", - "marginBottom": 0, - "zIndex": 1, - } - } - > - <Text - accessibilityRole="text" - numberOfLines={1} - style={ - { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, - "fontWeight": "400", - "letterSpacing": 0, - "lineHeight": 22, - } - } - > - 0xd018...78E7 - </Text> - </TouchableOpacity> - </View> - </View> - </View> - </View> - </TouchableOpacity> - <View - style={ - { - "paddingRight": 20, - } - } - > - <TouchableOpacity - accessibilityRole="button" - accessible={true} - activeOpacity={1} - disabled={false} - onPress={[Function]} - onPressIn={[Function]} - onPressOut={[Function]} - style={ - { - "alignItems": "center", - "borderRadius": 8, - "height": 24, - "justifyContent": "center", - "opacity": 1, - "width": 24, - } - } - testID="main-wallet-account-actions-1" - > - <SvgMock - color="#141618" + color="#121314" height={16} name="MoreVertical" style={ diff --git a/app/components/UI/ActionView/__snapshots__/index.test.tsx.snap b/app/components/UI/ActionView/__snapshots__/index.test.tsx.snap index abfe114db4de..7addc06cab02 100644 --- a/app/components/UI/ActionView/__snapshots__/index.test.tsx.snap +++ b/app/components/UI/ActionView/__snapshots__/index.test.tsx.snap @@ -102,7 +102,7 @@ exports[`ActionView should render correctly 1`] = ` }, { "backgroundColor": "#ffffff", - "borderColor": "#6a737d", + "borderColor": "#686e7d", "borderWidth": 1, }, [ @@ -131,13 +131,13 @@ exports[`ActionView should render correctly 1`] = ` null, [ { - "fontFamily": "EuclidCircularB-Bold", + "fontFamily": "CentraNo1-Bold", "fontSize": 14, "fontWeight": "600", "textAlign": "center", }, { - "color": "#6a737d", + "color": "#686e7d", }, undefined, ], @@ -163,7 +163,7 @@ exports[`ActionView should render correctly 1`] = ` }, { "backgroundColor": "#ffffff", - "borderColor": "#0376c9", + "borderColor": "#4459ff", "borderWidth": 1, }, [ @@ -194,13 +194,13 @@ exports[`ActionView should render correctly 1`] = ` null, [ { - "fontFamily": "EuclidCircularB-Bold", + "fontFamily": "CentraNo1-Bold", "fontSize": 14, "fontWeight": "600", "textAlign": "center", }, { - "color": "#0376c9", + "color": "#4459ff", }, undefined, ], diff --git a/app/components/UI/AddCustomToken/__snapshots__/index.test.tsx.snap b/app/components/UI/AddCustomToken/__snapshots__/index.test.tsx.snap index 81ef0037a49f..d103e65a2b3b 100644 --- a/app/components/UI/AddCustomToken/__snapshots__/index.test.tsx.snap +++ b/app/components/UI/AddCustomToken/__snapshots__/index.test.tsx.snap @@ -23,8 +23,8 @@ exports[`AddCustomToken render matches previous snapshot 1`] = ` }, undefined, { - "backgroundColor": "#0376C91A", - "borderColor": "#0376c9", + "backgroundColor": "#4459ff1a", + "borderColor": "#4459ff", }, { "marginHorizontal": 20, @@ -45,7 +45,7 @@ exports[`AddCustomToken render matches previous snapshot 1`] = ` style={ [ { - "color": "#0376c9", + "color": "#4459ff", "fontSize": 18, }, { @@ -68,8 +68,8 @@ exports[`AddCustomToken render matches previous snapshot 1`] = ` style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -99,7 +99,7 @@ exports[`AddCustomToken render matches previous snapshot 1`] = ` undefined, [ { - "color": "#141618", + "color": "#121314", "flex": 1, "fontSize": 14, "lineHeight": 17, @@ -114,7 +114,7 @@ exports[`AddCustomToken render matches previous snapshot 1`] = ` <Text style={ { - "color": "#141618", + "color": "#121314", } } > @@ -124,7 +124,7 @@ exports[`AddCustomToken render matches previous snapshot 1`] = ` onPress={[Function]} style={ { - "color": "#0376c9", + "color": "#4459ff", } } suppressHighlighting={true} @@ -144,8 +144,8 @@ exports[`AddCustomToken render matches previous snapshot 1`] = ` <Text style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontWeight": "400", } } @@ -159,15 +159,15 @@ exports[`AddCustomToken render matches previous snapshot 1`] = ` onFocus={[Function]} onSubmitEditing={[Function]} placeholder="0x..." - placeholderTextColor="#9fa6ae" + placeholderTextColor="#9ca1af" returnKeyType="next" style={ { - "borderColor": "#848c96", + "borderColor": "#b7bbc8", "borderRadius": 8, "borderWidth": 1, - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontWeight": "400", "paddingHorizontal": 16, "paddingVertical": 12, @@ -179,8 +179,8 @@ exports[`AddCustomToken render matches previous snapshot 1`] = ` <Text style={ { - "color": "#d73847", - "fontFamily": "EuclidCircularB-Regular", + "color": "#ca3542", + "fontFamily": "CentraNo1-Book", "fontWeight": "400", "marginTop": 0, "paddingBottom": 8, @@ -210,11 +210,11 @@ exports[`AddCustomToken render matches previous snapshot 1`] = ` { "alignItems": "center", "alignSelf": "center", - "backgroundColor": "#0376c9", + "backgroundColor": "#4459ff", "borderRadius": 24, - "color": "#0376c9", + "color": "#4459ff", "flexDirection": "row", - "fontFamily": "EuclidCircularB-Regular", + "fontFamily": "CentraNo1-Book", "fontSize": 18, "fontWeight": "400", "height": 48, @@ -232,11 +232,11 @@ exports[`AddCustomToken render matches previous snapshot 1`] = ` style={ { "color": "#ffffff", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > diff --git a/app/components/UI/AddCustomToken/index.js b/app/components/UI/AddCustomToken/index.js index 1a8e9b8913d5..9fe0e084419c 100644 --- a/app/components/UI/AddCustomToken/index.js +++ b/app/components/UI/AddCustomToken/index.js @@ -42,6 +42,7 @@ import Banner, { BannerVariant, } from '../../../component-library/components/Banners/Banner'; import CLText from '../../../component-library/components/Texts/Text/Text'; +import Logger from '../../../util/Logger'; const createStyles = (colors) => StyleSheet.create({ @@ -165,7 +166,7 @@ class AddCustomToken extends PureComponent { metrics: PropTypes.object, }; - getAnalyticsParams = () => { + getTokenAddedAnalyticsParams = () => { try { const { chainId } = this.props; const { address, symbol } = this.state; @@ -176,7 +177,8 @@ class AddCustomToken extends PureComponent { source: 'Custom token', }; } catch (error) { - return {}; + Logger.error(error, 'AddCustomToken.getTokenAddedAnalyticsParams error'); + return undefined; } }; @@ -186,12 +188,16 @@ class AddCustomToken extends PureComponent { const { address, symbol, decimals, name } = this.state; await TokensController.addToken({ address, symbol, decimals, name }); - this.props.metrics.trackEvent( - this.props.metrics - .createEventBuilder(MetaMetricsEvents.TOKEN_ADDED) - .addProperties(this.getAnalyticsParams()) - .build(), - ); + const analyticsParams = this.getTokenAddedAnalyticsParams(); + + if (analyticsParams) { + this.props.metrics.trackEvent( + this.props.metrics + .createEventBuilder(MetaMetricsEvents.TOKEN_ADDED) + .addProperties(analyticsParams) + .build(), + ); + } // Clear state before closing this.setState( diff --git a/app/components/UI/AddressInputs/__snapshots__/index.test.jsx.snap b/app/components/UI/AddressInputs/__snapshots__/index.test.jsx.snap index 9cdcbdd7409d..99c383834000 100644 --- a/app/components/UI/AddressInputs/__snapshots__/index.test.jsx.snap +++ b/app/components/UI/AddressInputs/__snapshots__/index.test.jsx.snap @@ -23,12 +23,12 @@ exports[`AddressInputs AddressFrom should match default snapshot 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -39,7 +39,7 @@ exports[`AddressInputs AddressFrom should match default snapshot 1`] = ` style={ [ { - "borderColor": "#848c96", + "borderColor": "#b7bbc8", "borderRadius": 8, "borderWidth": 1, "flex": 1, @@ -50,7 +50,7 @@ exports[`AddressInputs AddressFrom should match default snapshot 1`] = ` "padding": 10, }, { - "borderColor": "#848c96", + "borderColor": "#b7bbc8", }, ] } @@ -66,7 +66,7 @@ exports[`AddressInputs AddressFrom should match default snapshot 1`] = ` <View placeholderStyle={ { - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", } } useNativeDriver={true} @@ -114,7 +114,7 @@ exports[`AddressInputs AddressFrom should match default snapshot 1`] = ` "backgroundColor": "#eee", }, { - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", }, ] } @@ -149,12 +149,12 @@ exports[`AddressInputs AddressFrom should match default snapshot 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -165,12 +165,12 @@ exports[`AddressInputs AddressFrom should match default snapshot 1`] = ` accessibilityRole="text" style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", "fontSize": 12, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -204,12 +204,12 @@ exports[`AddressInputs AddressFrom should match snapshot when layout is vertical accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -220,7 +220,7 @@ exports[`AddressInputs AddressFrom should match snapshot when layout is vertical style={ [ { - "borderColor": "#848c96", + "borderColor": "#b7bbc8", "borderRadius": 8, "borderWidth": 1, "flex": 1, @@ -231,7 +231,7 @@ exports[`AddressInputs AddressFrom should match snapshot when layout is vertical "padding": 10, }, { - "borderColor": "#848c96", + "borderColor": "#b7bbc8", }, ] } @@ -247,7 +247,7 @@ exports[`AddressInputs AddressFrom should match snapshot when layout is vertical <View placeholderStyle={ { - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", } } useNativeDriver={true} @@ -295,7 +295,7 @@ exports[`AddressInputs AddressFrom should match snapshot when layout is vertical "backgroundColor": "#eee", }, { - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", }, ] } @@ -330,12 +330,12 @@ exports[`AddressInputs AddressFrom should match snapshot when layout is vertical accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -346,12 +346,12 @@ exports[`AddressInputs AddressFrom should match snapshot when layout is vertical accessibilityRole="text" style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", "fontSize": 12, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -387,12 +387,12 @@ exports[`AddressInputs AddressTo should match default snapshot 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -413,7 +413,7 @@ exports[`AddressInputs AddressTo should match default snapshot 1`] = ` "paddingHorizontal": 10, }, { - "borderColor": "#848c96", + "borderColor": "#b7bbc8", }, ] } @@ -436,7 +436,7 @@ exports[`AddressInputs AddressTo should match default snapshot 1`] = ` <View placeholderStyle={ { - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", } } useNativeDriver={true} @@ -484,7 +484,7 @@ exports[`AddressInputs AddressTo should match default snapshot 1`] = ` "backgroundColor": "#eee", }, { - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", }, ] } @@ -507,7 +507,7 @@ exports[`AddressInputs AddressTo should match default snapshot 1`] = ` style={ [ { - "color": "#d73847", + "color": "#ca3542", "fontSize": 14, }, undefined, @@ -558,12 +558,12 @@ exports[`AddressInputs AddressTo should match default snapshot 1`] = ` numberOfLines={1} style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -582,12 +582,12 @@ exports[`AddressInputs AddressTo should match default snapshot 1`] = ` numberOfLines={1} style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", "fontSize": 12, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -605,7 +605,7 @@ exports[`AddressInputs AddressTo should match default snapshot 1`] = ` style={ [ { - "color": "#1c8234", + "color": "#1c7e33", "fontSize": 15, }, undefined, @@ -658,12 +658,12 @@ exports[`AddressInputs AddressTo should match snapshot when layout is vertical 1 accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -684,7 +684,7 @@ exports[`AddressInputs AddressTo should match snapshot when layout is vertical 1 "paddingHorizontal": 10, }, { - "borderColor": "#848c96", + "borderColor": "#b7bbc8", }, ] } @@ -707,7 +707,7 @@ exports[`AddressInputs AddressTo should match snapshot when layout is vertical 1 <View placeholderStyle={ { - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", } } useNativeDriver={true} @@ -755,7 +755,7 @@ exports[`AddressInputs AddressTo should match snapshot when layout is vertical 1 "backgroundColor": "#eee", }, { - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", }, ] } @@ -778,7 +778,7 @@ exports[`AddressInputs AddressTo should match snapshot when layout is vertical 1 style={ [ { - "color": "#d73847", + "color": "#ca3542", "fontSize": 14, }, undefined, @@ -829,12 +829,12 @@ exports[`AddressInputs AddressTo should match snapshot when layout is vertical 1 numberOfLines={1} style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -853,12 +853,12 @@ exports[`AddressInputs AddressTo should match snapshot when layout is vertical 1 numberOfLines={1} style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", "fontSize": 12, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -876,7 +876,7 @@ exports[`AddressInputs AddressTo should match snapshot when layout is vertical 1 style={ [ { - "color": "#1c8234", + "color": "#1c7e33", "fontSize": 15, }, undefined, diff --git a/app/components/UI/AnimatedSpinner/__snapshots__/index.test.tsx.snap b/app/components/UI/AnimatedSpinner/__snapshots__/index.test.tsx.snap index 6c605c71682d..3a80bc567d1a 100644 --- a/app/components/UI/AnimatedSpinner/__snapshots__/index.test.tsx.snap +++ b/app/components/UI/AnimatedSpinner/__snapshots__/index.test.tsx.snap @@ -4,7 +4,7 @@ exports[`AnimatedSpinner should render correctly 1`] = ` <View style={ { - "borderColor": "#f2f4f6", + "borderColor": "#f3f5f9", "borderRadius": 64, "borderWidth": 3.5, "height": 36, @@ -34,7 +34,7 @@ exports[`AnimatedSpinner should render correctly 1`] = ` style={ [ { - "color": "#0376c9", + "color": "#4459ff", "fontSize": 36, }, undefined, diff --git a/app/components/UI/ApprovalTagUrl/ApprovalTagUrl.test.tsx b/app/components/UI/ApprovalTagUrl/ApprovalTagUrl.test.tsx index 0b260915412f..e9288374612d 100644 --- a/app/components/UI/ApprovalTagUrl/ApprovalTagUrl.test.tsx +++ b/app/components/UI/ApprovalTagUrl/ApprovalTagUrl.test.tsx @@ -48,4 +48,19 @@ describe('ApprovalTagUrl', () => { expect(queryByTestId(APPROVAL_TAG_URL_ORIGIN_PILL)).toBeNull(); }); + + it('renders origin when only origin is provided', () => { + const { toJSON, getByTestId } = renderWithProvider( + <ApprovalTagUrl + from={ADDRESS_MOCK} + origin={DOMAIN_MOCK} + url="" + sdkDappMetadata={{ url: '', icon: '' }} + />, + { state: mockInitialState }, + ); + + expect(toJSON()).toMatchSnapshot(); + expect(getByTestId(APPROVAL_TAG_URL_ORIGIN_PILL)).toBeDefined(); + }); }); diff --git a/app/components/UI/ApprovalTagUrl/ApprovalTagUrl.tsx b/app/components/UI/ApprovalTagUrl/ApprovalTagUrl.tsx index dc7ebc8aa2d6..673bb99c3c6b 100644 --- a/app/components/UI/ApprovalTagUrl/ApprovalTagUrl.tsx +++ b/app/components/UI/ApprovalTagUrl/ApprovalTagUrl.tsx @@ -58,6 +58,8 @@ const ApprovalTagUrl = ({ title = prefixUrlWithProtocol(origin); } else if (url) { title = prefixUrlWithProtocol(getHost(url)); + } else if (origin) { + title = prefixUrlWithProtocol(getHost(origin)); } else { title = ''; } diff --git a/app/components/UI/ApprovalTagUrl/__snapshots__/ApprovalTagUrl.test.tsx.snap b/app/components/UI/ApprovalTagUrl/__snapshots__/ApprovalTagUrl.test.tsx.snap index e5554cae4b38..8eb0bfa805d9 100644 --- a/app/components/UI/ApprovalTagUrl/__snapshots__/ApprovalTagUrl.test.tsx.snap +++ b/app/components/UI/ApprovalTagUrl/__snapshots__/ApprovalTagUrl.test.tsx.snap @@ -7,7 +7,7 @@ exports[`ApprovalTagUrl renders correctly 1`] = ` "alignItems": "center", "alignSelf": "center", "backgroundColor": "#ffffff", - "borderColor": "#848c96", + "borderColor": "#b7bbc8", "borderRadius": 99, "borderWidth": 1, "flexDirection": "row", @@ -53,13 +53,81 @@ exports[`ApprovalTagUrl renders correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#6a737d", + "color": "#686e7d", "flexShrink": 1, - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, + } + } + > + https://metamask.github.io + </Text> +</View> +`; + +exports[`ApprovalTagUrl renders origin when only origin is provided 1`] = ` +<View + style={ + { + "alignItems": "center", + "alignSelf": "center", + "backgroundColor": "#ffffff", + "borderColor": "#b7bbc8", + "borderRadius": 99, + "borderWidth": 1, + "flexDirection": "row", + "marginBottom": 16, + "paddingLeft": 8, + "paddingRight": 16, + "paddingVertical": 8, + } + } + testID="APPROVAL_TAG_URL_ORIGIN_PILL" +> + <View + style={ + { + "backgroundColor": "#ffffff", + "borderRadius": 16, + "height": 24, + "marginRight": 8, + "overflow": "hidden", + "width": 24, + } + } + > + <Image + onError={[Function]} + resizeMode="contain" + source={ + { + "uri": "", + } + } + style={ + { + "flex": 1, + "height": undefined, + "width": undefined, + } + } + testID="favicon-avatar-image" + /> + </View> + <Text + accessibilityRole="text" + style={ + { + "color": "#686e7d", + "flexShrink": 1, + "fontFamily": "CentraNo1-Book", + "fontSize": 16, + "fontWeight": "400", + "letterSpacing": 0, + "lineHeight": 24, } } > diff --git a/app/components/UI/AssetIcon/__snapshots__/index.test.tsx.snap b/app/components/UI/AssetIcon/__snapshots__/index.test.tsx.snap index ee5feadc3183..2cb976d59a2b 100644 --- a/app/components/UI/AssetIcon/__snapshots__/index.test.tsx.snap +++ b/app/components/UI/AssetIcon/__snapshots__/index.test.tsx.snap @@ -4,7 +4,7 @@ exports[`AssetIcon should render correctly 1`] = ` <View placeholderStyle={ { - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", } } useNativeDriver={true} @@ -15,7 +15,7 @@ exports[`AssetIcon should render correctly 1`] = ` onLoadEnd={[Function]} placeholderStyle={ { - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", } } source={ @@ -61,7 +61,7 @@ exports[`AssetIcon should render correctly 1`] = ` "backgroundColor": "#eee", }, { - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", }, ] } diff --git a/app/components/UI/AssetOverview/AboutAsset/AboutAsset.styles.tsx b/app/components/UI/AssetOverview/AboutAsset/AboutAsset.styles.tsx index 2f8436f3bfc0..7b76dc481c72 100644 --- a/app/components/UI/AssetOverview/AboutAsset/AboutAsset.styles.tsx +++ b/app/components/UI/AssetOverview/AboutAsset/AboutAsset.styles.tsx @@ -1,5 +1,9 @@ import type { Theme } from '@metamask/design-tokens'; import { StyleSheet, TextStyle } from 'react-native'; +import { + getFontFamily, + TextVariant, +} from '../../../../component-library/components/Texts/Text'; const styleSheet = (params: { theme: Theme }) => { const { theme } = params; @@ -10,10 +14,12 @@ const styleSheet = (params: { theme: Theme }) => { }, text: { ...typography.sBodyMD, + fontFamily: getFontFamily(TextVariant.BodyMD), marginVertical: 0, } as TextStyle, title: { ...typography.sHeadingSM, + fontFamily: getFontFamily(TextVariant.HeadingSM), marginVertical: 0, marginBottom: 4, } as TextStyle, diff --git a/app/components/UI/AssetOverview/AssetActionButton/__snapshots__/index.test.tsx.snap b/app/components/UI/AssetOverview/AssetActionButton/__snapshots__/index.test.tsx.snap index b9e1d9077695..e558f6f604b3 100644 --- a/app/components/UI/AssetOverview/AssetActionButton/__snapshots__/index.test.tsx.snap +++ b/app/components/UI/AssetOverview/AssetActionButton/__snapshots__/index.test.tsx.snap @@ -20,7 +20,7 @@ exports[`AssetActionButtons should render correctly 1`] = ` { "alignContent": "center", "alignItems": "center", - "backgroundColor": "#0376c9", + "backgroundColor": "#4459ff", "borderRadius": 18, "height": 36, "justifyContent": "center", @@ -35,7 +35,7 @@ exports[`AssetActionButtons should render correctly 1`] = ` numberOfLines={1} style={ { - "color": "#0376c9", + "color": "#4459ff", "fontSize": 14, "marginHorizontal": 3, "marginTop": 8, @@ -67,7 +67,7 @@ exports[`AssetActionButtons should render type add correctly 1`] = ` { "alignContent": "center", "alignItems": "center", - "backgroundColor": "#0376c9", + "backgroundColor": "#4459ff", "borderRadius": 18, "height": 36, "justifyContent": "center", @@ -96,7 +96,7 @@ exports[`AssetActionButtons should render type add correctly 1`] = ` numberOfLines={1} style={ { - "color": "#0376c9", + "color": "#4459ff", "fontSize": 14, "marginHorizontal": 3, "marginTop": 8, @@ -128,7 +128,7 @@ exports[`AssetActionButtons should render type information correctly 1`] = ` { "alignContent": "center", "alignItems": "center", - "backgroundColor": "#0376c9", + "backgroundColor": "#4459ff", "borderRadius": 18, "height": 36, "justifyContent": "center", @@ -157,7 +157,7 @@ exports[`AssetActionButtons should render type information correctly 1`] = ` numberOfLines={1} style={ { - "color": "#0376c9", + "color": "#4459ff", "fontSize": 14, "marginHorizontal": 3, "marginTop": 8, @@ -189,7 +189,7 @@ exports[`AssetActionButtons should render type receive correctly 1`] = ` { "alignContent": "center", "alignItems": "center", - "backgroundColor": "#0376c9", + "backgroundColor": "#4459ff", "borderRadius": 18, "height": 36, "justifyContent": "center", @@ -230,7 +230,7 @@ exports[`AssetActionButtons should render type receive correctly 1`] = ` numberOfLines={1} style={ { - "color": "#0376c9", + "color": "#4459ff", "fontSize": 14, "marginHorizontal": 3, "marginTop": 8, @@ -262,7 +262,7 @@ exports[`AssetActionButtons should render type send correctly 1`] = ` { "alignContent": "center", "alignItems": "center", - "backgroundColor": "#0376c9", + "backgroundColor": "#4459ff", "borderRadius": 18, "height": 36, "justifyContent": "center", @@ -291,7 +291,7 @@ exports[`AssetActionButtons should render type send correctly 1`] = ` numberOfLines={1} style={ { - "color": "#0376c9", + "color": "#4459ff", "fontSize": 14, "marginHorizontal": 3, "marginTop": 8, @@ -323,7 +323,7 @@ exports[`AssetActionButtons should render type swap correctly 1`] = ` { "alignContent": "center", "alignItems": "center", - "backgroundColor": "#0376c9", + "backgroundColor": "#4459ff", "borderRadius": 18, "height": 36, "justifyContent": "center", @@ -358,7 +358,7 @@ exports[`AssetActionButtons should render type swap correctly 1`] = ` numberOfLines={1} style={ { - "color": "#0376c9", + "color": "#4459ff", "fontSize": 14, "marginHorizontal": 3, "marginTop": 8, diff --git a/app/components/UI/AssetOverview/AssetOverview.styles.ts b/app/components/UI/AssetOverview/AssetOverview.styles.ts index 79986f9a55c0..34ba4940f1a1 100644 --- a/app/components/UI/AssetOverview/AssetOverview.styles.ts +++ b/app/components/UI/AssetOverview/AssetOverview.styles.ts @@ -1,5 +1,9 @@ import type { Theme } from '@metamask/design-tokens'; import { StyleSheet, TextStyle } from 'react-native'; +import { + getFontFamily, + TextVariant, +} from '../../../component-library/components/Texts/Text'; const styleSheet = (params: { theme: Theme }) => { const { theme } = params; @@ -14,6 +18,7 @@ const styleSheet = (params: { theme: Theme }) => { }, warning: { ...typography.sBodyMD, + fontFamily: getFontFamily(TextVariant.BodyMD), borderRadius: 8, borderWidth: 1, borderColor: colors.warning.default, @@ -22,6 +27,7 @@ const styleSheet = (params: { theme: Theme }) => { } as TextStyle, warningLinks: { ...typography.sBodyMD, + fontFamily: getFontFamily(TextVariant.BodyMD), color: colors.primary.default, } as TextStyle, chartNavigationWrapper: { diff --git a/app/components/UI/AssetOverview/AssetOverview.test.tsx b/app/components/UI/AssetOverview/AssetOverview.test.tsx index 958992548863..a571d96d65cc 100644 --- a/app/components/UI/AssetOverview/AssetOverview.test.tsx +++ b/app/components/UI/AssetOverview/AssetOverview.test.tsx @@ -10,14 +10,9 @@ import { MOCK_ADDRESS_2, } from '../../../util/test/accountsControllerTestUtils'; import { createBuyNavigationDetails } from '../Ramp/routes/utils'; -import { - getDecimalChainId, - isPortfolioViewEnabled, -} from '../../../util/networks'; +import { getDecimalChainId } from '../../../util/networks'; import { TokenOverviewSelectorsIDs } from '../../../../e2e/selectors/wallet/TokenOverview.selectors'; // eslint-disable-next-line import/no-namespace -import * as networks from '../../../util/networks'; -// eslint-disable-next-line import/no-namespace import * as transactions from '../../../util/transactions'; import { mockNetworkState } from '../../../util/test/network'; import Engine from '../../../core/Engine'; @@ -26,6 +21,7 @@ import { BALANCE_TEST_ID, SECONDARY_BALANCE_TEST_ID, } from '../AssetElement/index.constants'; +import { SolScope } from '@metamask/keyring-api'; const MOCK_CHAIN_ID = '0x1'; @@ -134,10 +130,9 @@ const asset = { }; describe('AssetOverview', () => { - beforeEach(() => { - jest.spyOn(networks, 'isPortfolioViewEnabled').mockReturnValue(false); + afterEach(() => { + jest.clearAllMocks(); }); - it('should render correctly', async () => { const container = renderWithProvider( <AssetOverview @@ -152,22 +147,6 @@ describe('AssetOverview', () => { expect(container).toMatchSnapshot(); }); - it('should render correctly when portfolio view is enabled', async () => { - jest.spyOn(networks, 'isPortfolioViewEnabled').mockReturnValue(true); - - const container = renderWithProvider( - <AssetOverview - asset={asset} - displayBuyButton - displaySwapsButton - swapsIsLive - networkName="Ethereum Mainnet" - />, - { state: mockInitialState }, - ); - expect(container).toMatchSnapshot(); - }); - it('should handle buy button press', async () => { const { getByTestId } = renderWithProvider( <AssetOverview @@ -293,34 +272,64 @@ describe('AssetOverview', () => { const swapButton = getByTestId('token-swap-button'); fireEvent.press(swapButton); - if (isPortfolioViewEnabled()) { - expect(navigate).toHaveBeenCalledTimes(3); - expect(navigate).toHaveBeenNthCalledWith(1, 'RampBuy', { - screen: 'GetStarted', - params: { - address: asset.address, - chainId: getDecimalChainId(MOCK_CHAIN_ID), - }, - }); - expect(navigate).toHaveBeenNthCalledWith(2, 'SendFlowView', {}); - expect(navigate).toHaveBeenNthCalledWith(3, 'Swaps', { - screen: 'SwapsAmountView', - params: { - sourcePage: 'MainView', - address: asset.address, - chainId: MOCK_CHAIN_ID, - }, - }); - } else { - expect(navigate).toHaveBeenCalledWith('Swaps', { - screen: 'SwapsAmountView', - params: { - sourcePage: 'MainView', - sourceToken: asset.address, - chainId: '0x1', - }, - }); - } + expect(navigate).toHaveBeenCalledTimes(2); + expect(navigate).toHaveBeenNthCalledWith(1, 'WalletTabHome', { + screen: 'WalletTabStackFlow', + params: { + screen: 'WalletView', + }, + }); + expect(navigate).toHaveBeenNthCalledWith(2, 'Swaps', { + screen: 'SwapsAmountView', + params: { sourceToken: '0x123', chainId: '0x1', sourcePage: 'MainView' }, + }); + }); + + it('should handle receive button press', async () => { + const { getByTestId } = renderWithProvider( + <AssetOverview + asset={asset} + displayBuyButton + displaySwapsButton + swapsIsLive + />, + { state: mockInitialState }, + ); + + const receiveButton = getByTestId('token-receive-button'); + fireEvent.press(receiveButton); + + expect(navigate).toHaveBeenCalledTimes(1); + expect(navigate).toHaveBeenNthCalledWith(1, 'QRTabSwitcher', { + disableTabber: true, + initialScreen: 1, + networkName: undefined, + }); + }); + + it('should handle bridge button press', async () => { + const { getByTestId } = renderWithProvider( + <AssetOverview + asset={asset} + displayBuyButton + displaySwapsButton + swapsIsLive + />, + { state: mockInitialState }, + ); + + const receiveButton = getByTestId('token-bridge-button'); + fireEvent.press(receiveButton); + + expect(navigate).toHaveBeenCalledTimes(1); + expect(navigate).toHaveBeenNthCalledWith(1, 'BrowserTabHome', { + params: { + newTabUrl: + 'https://portfolio.metamask.io/bridge/?metamaskEntry=mobile&srcChain=1', + timestamp: 123, + }, + screen: 'BrowserView', + }); }); it('should not render swap button if displaySwapsButton is false', async () => { @@ -353,8 +362,6 @@ describe('AssetOverview', () => { }); it('should render native balances even if there are no accounts for the asset chain in the state', async () => { - jest.spyOn(networks, 'isPortfolioViewEnabled').mockReturnValue(true); - const container = renderWithProvider( <AssetOverview asset={{ @@ -372,9 +379,39 @@ describe('AssetOverview', () => { expect(container).toMatchSnapshot(); }); + it('should render native balances when non evm network is selected', async () => { + const container = renderWithProvider( + <AssetOverview + asset={{ + ...asset, + chainId: SolScope.Mainnet, + isNative: true, + }} + displayBuyButton + displaySwapsButton + swapsIsLive + />, + { + state: { + ...mockInitialState, + engine: { + ...mockInitialState.engine, + backgroundState: { + ...mockInitialState.engine.backgroundState, + MultichainNetworkController: { + selectedMultichainNetworkChainId: SolScope.Mainnet, + }, + }, + }, + }, + }, + ); + + expect(container).toMatchSnapshot(); + }); + describe('Portfolio view network switching', () => { beforeEach(() => { - jest.spyOn(networks, 'isPortfolioViewEnabled').mockReturnValue(true); jest.useFakeTimers(); // Reset mocks before each test jest.clearAllMocks(); @@ -488,8 +525,6 @@ describe('AssetOverview', () => { }); it('render mainBalance as fiat and secondaryBalance as native with portfolio view enabled', async () => { - jest.spyOn(networks, 'isPortfolioViewEnabled').mockReturnValue(true); - const { getByTestId } = renderWithProvider( <AssetOverview asset={asset} />, { diff --git a/app/components/UI/AssetOverview/AssetOverview.tsx b/app/components/UI/AssetOverview/AssetOverview.tsx index 88006565ef7b..bd0dc8ee7bd2 100644 --- a/app/components/UI/AssetOverview/AssetOverview.tsx +++ b/app/components/UI/AssetOverview/AssetOverview.tsx @@ -3,8 +3,7 @@ import { TouchableOpacity, View } from 'react-native'; import { useNavigation } from '@react-navigation/native'; import { useDispatch, useSelector } from 'react-redux'; import { Hex } from '@metamask/utils'; -import { getNativeTokenAddress } from '@metamask/assets-controllers'; -import { strings } from '../../../../locales/i18n'; +import I18n, { strings } from '../../../../locales/i18n'; import { TokenOverviewSelectorsIDs } from '../../../../e2e/selectors/wallet/TokenOverview.selectors'; import { newAssetTransaction } from '../../../actions/transaction'; import AppConstants from '../../../core/AppConstants'; @@ -13,22 +12,14 @@ import { selectEvmChainId, selectNativeCurrencyByChainId, selectSelectedNetworkClientId, - selectEvmTicker, } from '../../../selectors/networkController'; import { - selectConversionRate, selectCurrentCurrency, selectCurrencyRates, } from '../../../selectors/currencyRateController'; -import { - selectContractExchangeRates, - selectTokenMarketData, -} from '../../../selectors/tokenRatesController'; +import { selectTokenMarketData } from '../../../selectors/tokenRatesController'; import { selectAccountsByChainId } from '../../../selectors/accountTrackerController'; -import { - selectContractBalances, - selectTokensBalances, -} from '../../../selectors/tokenBalancesController'; +import { selectTokensBalances } from '../../../selectors/tokenBalancesController'; import { selectSelectedInternalAccountAddress, selectSelectedInternalAccountFormattedAddress, @@ -36,12 +27,9 @@ import { import Logger from '../../../util/Logger'; import { safeToChecksumAddress } from '../../../util/address'; import { - balanceToFiat, - hexToBN, renderFromTokenMinimalUnit, renderFromWei, toHexadecimal, - weiToFiat, } from '../../../util/number'; import { getEther } from '../../../util/transactions'; import Text from '../../Base/Text'; @@ -61,14 +49,13 @@ import { RootState } from '../../../reducers'; import useGoToBridge from '../Bridge/hooks/useGoToBridge'; import { swapsUtils } from '@metamask/swaps-controller'; import { MetaMetricsEvents } from '../../../core/Analytics'; -import { - getDecimalChainId, - isPortfolioViewEnabled, -} from '../../../util/networks'; +import { getDecimalChainId } from '../../../util/networks'; import { useMetrics } from '../../../components/hooks/useMetrics'; import { createBuyNavigationDetails } from '../Ramp/routes/utils'; import { TokenI } from '../Tokens/types'; import AssetDetailsActions from '../../../components/Views/AssetDetails/AssetDetailsActions'; +import { selectIsEvmNetworkSelected } from '../../../selectors/multichainNetworkController'; +import { formatWithThreshold } from '../../../util/assets'; interface AssetOverviewProps { asset: TokenI; @@ -90,46 +77,27 @@ const AssetOverview: React.FC<AssetOverviewProps> = ({ const selectedInternalAccountAddress = useSelector( selectSelectedInternalAccountAddress, ); - const conversionRate = useSelector(selectConversionRate); const conversionRateByTicker = useSelector(selectCurrencyRates); const currentCurrency = useSelector(selectCurrentCurrency); const accountsByChainId = useSelector(selectAccountsByChainId); - const primaryCurrency = useSelector( - (state: RootState) => state.settings.primaryCurrency, - ); const selectedAddress = useSelector( selectSelectedInternalAccountFormattedAddress, ); const { trackEvent, createEventBuilder } = useMetrics(); - const tokenExchangeRates = useSelector(selectContractExchangeRates); const allTokenMarketData = useSelector(selectTokenMarketData); - const tokenBalances = useSelector(selectContractBalances); const selectedChainId = useSelector(selectEvmChainId); - const selectedTicker = useSelector((state: RootState) => - selectEvmTicker(state), - ); - const nativeCurrency = useSelector((state: RootState) => selectNativeCurrencyByChainId(state, asset.chainId as Hex), ); const multiChainTokenBalance = useSelector(selectTokensBalances); - const chainId = isPortfolioViewEnabled() - ? (asset.chainId as Hex) - : selectedChainId; - const ticker = isPortfolioViewEnabled() ? nativeCurrency : selectedTicker; + const chainId = asset.chainId as Hex; + const ticker = nativeCurrency; const selectedNetworkClientId = useSelector(selectSelectedNetworkClientId); + const isEvmSelected = useSelector(selectIsEvmNetworkSelected); - let currentAddress: Hex; - - if (isPortfolioViewEnabled()) { - currentAddress = asset.address as Hex; - } else { - currentAddress = asset.isETH - ? getNativeTokenAddress(chainId as Hex) - : (asset.address as Hex); - } + const currentAddress = asset.address as Hex; const { data: prices = [], isLoading } = useTokenHistoricalPrices({ address: currentAddress, @@ -198,32 +166,30 @@ const AssetOverview: React.FC<AssetOverviewProps> = ({ : goToPortfolioBridge; const onSend = async () => { - if (isPortfolioViewEnabled()) { - navigation.navigate(Routes.WALLET.HOME, { - screen: Routes.WALLET.TAB_STACK_FLOW, - params: { - screen: Routes.WALLET_VIEW, - }, - }); + navigation.navigate(Routes.WALLET.HOME, { + screen: Routes.WALLET.TAB_STACK_FLOW, + params: { + screen: Routes.WALLET_VIEW, + }, + }); - if (asset.chainId !== selectedChainId) { - const { NetworkController, MultichainNetworkController } = - Engine.context; - const networkConfiguration = - NetworkController.getNetworkConfigurationByChainId( - asset.chainId as Hex, - ); - - const networkClientId = - networkConfiguration?.rpcEndpoints?.[ - networkConfiguration.defaultRpcEndpointIndex - ]?.networkClientId; - - await MultichainNetworkController.setActiveNetwork( - networkClientId as string, + if (asset.chainId !== selectedChainId) { + const { NetworkController, MultichainNetworkController } = Engine.context; + const networkConfiguration = + NetworkController.getNetworkConfigurationByChainId( + asset.chainId as Hex, ); - } + + const networkClientId = + networkConfiguration?.rpcEndpoints?.[ + networkConfiguration.defaultRpcEndpointIndex + ]?.networkClientId; + + await MultichainNetworkController.setActiveNetwork( + networkClientId as string, + ); } + if ((asset.isETH || asset.isNative) && ticker) { dispatch(newAssetTransaction(getEther(ticker))); } else { @@ -233,57 +199,33 @@ const AssetOverview: React.FC<AssetOverviewProps> = ({ }; const goToSwaps = useCallback(() => { - if (isPortfolioViewEnabled()) { - navigation.navigate(Routes.WALLET.HOME, { - screen: Routes.WALLET.TAB_STACK_FLOW, - params: { - screen: Routes.WALLET_VIEW, - }, - }); - if (asset.chainId !== selectedChainId) { - const { NetworkController, MultichainNetworkController } = - Engine.context; - const networkConfiguration = - NetworkController.getNetworkConfigurationByChainId( - asset.chainId as Hex, - ); - - const networkClientId = - networkConfiguration?.rpcEndpoints?.[ - networkConfiguration.defaultRpcEndpointIndex - ]?.networkClientId; - - MultichainNetworkController.setActiveNetwork( - networkClientId as string, - ).then(() => { - setTimeout(() => { - handleSwapNavigation(); - }, 500); - }); - } else { + navigation.navigate(Routes.WALLET.HOME, { + screen: Routes.WALLET.TAB_STACK_FLOW, + params: { + screen: Routes.WALLET_VIEW, + }, + }); + if (asset.chainId !== selectedChainId) { + const { NetworkController, MultichainNetworkController } = Engine.context; + const networkConfiguration = + NetworkController.getNetworkConfigurationByChainId( + asset.chainId as Hex, + ); + + const networkClientId = + networkConfiguration?.rpcEndpoints?.[ + networkConfiguration.defaultRpcEndpointIndex + ]?.networkClientId; + + MultichainNetworkController.setActiveNetwork( + networkClientId as string, + ).then(() => { handleSwapNavigation(); - } + }); } else { handleSwapNavigation(); - trackEvent( - createEventBuilder(MetaMetricsEvents.SWAP_BUTTON_CLICKED) - .addProperties({ - text: 'Swap', - tokenSymbol: '', - location: 'TokenDetails', - chain_id: getDecimalChainId(asset.chainId), - }) - .build(), - ); } - }, [ - navigation, - asset.chainId, - selectedChainId, - trackEvent, - createEventBuilder, - handleSwapNavigation, - ]); + }, [navigation, asset.chainId, selectedChainId, handleSwapNavigation]); const onBuy = () => { navigation.navigate( @@ -349,31 +291,28 @@ const AssetOverview: React.FC<AssetOverviewProps> = ({ ); const itemAddress = safeToChecksumAddress(asset.address); - let exchangeRate: number | undefined; - if (!isPortfolioViewEnabled()) { - exchangeRate = itemAddress - ? tokenExchangeRates?.[itemAddress as Hex]?.price - : undefined; - } else { - const currentChainId = chainId as Hex; - exchangeRate = - allTokenMarketData?.[currentChainId]?.[itemAddress as Hex]?.price; - } + const currentChainId = chainId as Hex; + const exchangeRate = + allTokenMarketData?.[currentChainId]?.[itemAddress as Hex]?.price; + + let balance; + const minimumDisplayThreshold = 0.00001; - let balance, balanceFiat; - if (asset.isETH || asset.isNative) { + const isMultichainAsset = !isEvmSelected; + const isEthOrNative = asset.isETH || asset.isNative; + + if (isMultichainAsset) { + balance = formatWithThreshold( + parseFloat(asset.balance), + minimumDisplayThreshold, + I18n.locale, + { minimumFractionDigits: 0, maximumFractionDigits: 5 }, + ); + } else if (isEthOrNative) { balance = renderFromWei( - //@ts-expect-error - This should be fixed at the accountsController selector level, ongoing discussion + // @ts-expect-error - This should be fixed at the accountsController selector level, ongoing discussion accountsByChainId[toHexadecimal(chainId)]?.[selectedAddress]?.balance, ); - balanceFiat = weiToFiat( - hexToBN( - //@ts-expect-error - This should be fixed at the accountsController selector level, ongoing discussion - accountsByChainId[toHexadecimal(chainId)]?.[selectedAddress]?.balance, - ), - conversionRate, - currentCurrency, - ); } else { const multiChainTokenBalanceHex = itemAddress && @@ -381,58 +320,28 @@ const AssetOverview: React.FC<AssetOverviewProps> = ({ chainId as Hex ]?.[itemAddress as Hex]; - const selectedTokenBalanceHex = - itemAddress && tokenBalances?.[itemAddress as Hex]; - - const tokenBalanceHex = isPortfolioViewEnabled() - ? multiChainTokenBalanceHex - : selectedTokenBalanceHex; + const tokenBalanceHex = multiChainTokenBalanceHex; balance = itemAddress && tokenBalanceHex ? renderFromTokenMinimalUnit(tokenBalanceHex, asset.decimals) : 0; - balanceFiat = balanceToFiat( - balance, - conversionRate, - exchangeRate, - currentCurrency, - ); } - let mainBalance, secondaryBalance; - if (!isPortfolioViewEnabled()) { - if (primaryCurrency === 'ETH') { - mainBalance = `${balance} ${asset.symbol}`; - secondaryBalance = balanceFiat; - } else { - mainBalance = !balanceFiat ? `${balance} ${asset.symbol}` : balanceFiat; - secondaryBalance = !balanceFiat - ? balanceFiat - : `${balance} ${asset.symbol}`; - } - } else { - mainBalance = asset.balanceFiat || ''; - secondaryBalance = `${balance} ${asset.isETH ? asset.ticker : asset.symbol}`; - } + const mainBalance = asset.balanceFiat || ''; + const secondaryBalance = `${balance} ${ + asset.isETH ? asset.ticker : asset.symbol + }`; let currentPrice = 0; let priceDiff = 0; - if (!isPortfolioViewEnabled()) { - if (asset.isETH) { - currentPrice = conversionRate || 0; - } else if (exchangeRate && conversionRate) { - currentPrice = exchangeRate * conversionRate; - } - } else { - const tickerConversionRate = - conversionRateByTicker?.[nativeCurrency]?.conversionRate ?? 0; - currentPrice = - exchangeRate && tickerConversionRate - ? exchangeRate * tickerConversionRate - : 0; - } + const tickerConversionRate = + conversionRateByTicker?.[nativeCurrency]?.conversionRate ?? 0; + currentPrice = + exchangeRate && tickerConversionRate + ? exchangeRate * tickerConversionRate + : 0; const comparePrice = prices[0]?.[1] || 0; if (currentPrice !== undefined && currentPrice !== null) { diff --git a/app/components/UI/AssetOverview/Balance/Balance.styles.tsx b/app/components/UI/AssetOverview/Balance/Balance.styles.tsx index 335718d5c39c..04aef9fde37b 100644 --- a/app/components/UI/AssetOverview/Balance/Balance.styles.tsx +++ b/app/components/UI/AssetOverview/Balance/Balance.styles.tsx @@ -1,5 +1,9 @@ import type { Theme } from '@metamask/design-tokens'; import { StyleSheet, TextStyle } from 'react-native'; +import { + getFontFamily, + TextVariant, +} from '../../../../component-library/components/Texts/Text'; const styleSheet = (params: { theme: Theme }) => { const { theme } = params; @@ -29,10 +33,12 @@ const styleSheet = (params: { theme: Theme }) => { } as TextStyle, text: { ...typography.sBodySM, + fontFamily: getFontFamily(TextVariant.BodySM), marginVertical: 0, } as TextStyle, fiatBalance: { ...typography.sHeadingMD, + fontFamily: getFontFamily(TextVariant.HeadingMD), } as TextStyle, }); }; diff --git a/app/components/UI/AssetOverview/Balance/Balance.tsx b/app/components/UI/AssetOverview/Balance/Balance.tsx index 081e3b4180a6..0f09c7c594b3 100644 --- a/app/components/UI/AssetOverview/Balance/Balance.tsx +++ b/app/components/UI/AssetOverview/Balance/Balance.tsx @@ -1,30 +1,22 @@ import React, { useCallback } from 'react'; import { View } from 'react-native'; -import { Hex } from '@metamask/utils'; +import { Hex, isCaipChainId } from '@metamask/utils'; import { strings } from '../../../../../locales/i18n'; import { useStyles } from '../../../../component-library/hooks'; import styleSheet from './Balance.styles'; import AssetElement from '../../AssetElement'; import { useSelector } from 'react-redux'; -import { - selectChainId, - selectNetworkConfigurationByChainId, -} from '../../../../selectors/networkController'; +import { selectNetworkConfigurationByChainId } from '../../../../selectors/networkController'; import { getTestNetImageByChainId, getDefaultNetworkByChainId, - isLineaMainnetByChainId, - isMainnetByChainId, isTestNet, - isPortfolioViewEnabled, } from '../../../../util/networks'; -import images from '../../../../images/image-icons'; import BadgeWrapper, { BadgePosition, } from '../../../../component-library/components/Badges/BadgeWrapper'; import { BadgeVariant } from '../../../../component-library/components/Badges/Badge/Badge.types'; import Badge from '../../../../component-library/components/Badges/Badge/Badge'; -import NetworkMainAssetLogo from '../../NetworkMainAssetLogo'; import AvatarToken from '../../../../component-library/components/Avatars/Avatar/variants/AvatarToken'; import { AvatarSize } from '../../../../component-library/components/Avatars/Avatar'; import NetworkAssetLogo from '../../NetworkAssetLogo'; @@ -38,6 +30,7 @@ import { PopularList, UnpopularNetworkList, CustomNetworkImgMapping, + getNonEvmNetworkImageSourceByChainId, } from '../../../../util/networks/customNetworks'; import { RootState } from '../../../../reducers'; @@ -47,22 +40,7 @@ interface BalanceProps { secondaryBalance?: string; } -export const NetworkBadgeSource = (chainId: Hex, ticker: string) => { - const isMainnet = isMainnetByChainId(chainId); - const isLineaMainnet = isLineaMainnetByChainId(chainId); - if (!isPortfolioViewEnabled()) { - if (isTestNet(chainId)) return getTestNetImageByChainId(chainId); - if (isMainnet) return images.ETHEREUM; - - if (isLineaMainnet) return images['LINEA-MAINNET']; - - if (CustomNetworkImgMapping[chainId]) { - return CustomNetworkImgMapping[chainId]; - } - - return ticker ? images[ticker as keyof typeof images] : undefined; - } - +export const NetworkBadgeSource = (chainId: Hex) => { if (isTestNet(chainId)) return getTestNetImageByChainId(chainId); const defaultNetwork = getDefaultNetworkByChainId(chainId) as | { @@ -88,6 +66,11 @@ export const NetworkBadgeSource = (chainId: Hex, ticker: string) => { if (network) { return network.rpcPrefs.imageSource; } + + if (isCaipChainId(chainId)) { + return getNonEvmNetworkImageSourceByChainId(chainId); + } + if (customNetworkImg) { return customNetworkImg; } @@ -99,18 +82,11 @@ const Balance = ({ asset, mainBalance, secondaryBalance }: BalanceProps) => { const networkConfigurationByChainId = useSelector((state: RootState) => selectNetworkConfigurationByChainId(state, asset.chainId as Hex), ); - const chainId = useSelector(selectChainId); - const tokenChainId = isPortfolioViewEnabled() ? asset.chainId : chainId; - - const ticker = asset.symbol; + const tokenChainId = asset.chainId; const renderNetworkAvatar = useCallback(() => { - if (!isPortfolioViewEnabled() && asset.isETH) { - return <NetworkMainAssetLogo style={styles.ethLogo} />; - } - - if (isPortfolioViewEnabled() && asset.isNative) { + if (asset.isNative) { return ( <NetworkAssetLogo chainId={asset.chainId as Hex} @@ -131,7 +107,6 @@ const Balance = ({ asset, mainBalance, secondaryBalance }: BalanceProps) => { /> ); }, [ - asset.isETH, asset.image, asset.symbol, asset.isNative, @@ -163,7 +138,7 @@ const Balance = ({ asset, mainBalance, secondaryBalance }: BalanceProps) => { badgeElement={ <Badge variant={BadgeVariant.Network} - imageSource={NetworkBadgeSource(tokenChainId as Hex, ticker)} + imageSource={NetworkBadgeSource(tokenChainId as Hex)} name={networkConfigurationByChainId?.name} /> } diff --git a/app/components/UI/AssetOverview/Balance/__snapshots__/index.test.tsx.snap b/app/components/UI/AssetOverview/Balance/__snapshots__/index.test.tsx.snap index 243e4f69c796..1db4954479a8 100644 --- a/app/components/UI/AssetOverview/Balance/__snapshots__/index.test.tsx.snap +++ b/app/components/UI/AssetOverview/Balance/__snapshots__/index.test.tsx.snap @@ -12,8 +12,8 @@ exports[`Balance should render correctly with main and secondary balance 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", + "color": "#121314", + "fontFamily": "CentraNo1-Bold", "fontSize": 18, "fontWeight": "700", "letterSpacing": 0, @@ -127,7 +127,7 @@ exports[`Balance should render correctly with main and secondary balance 1`] = ` "height": 32, "justifyContent": "center", "overflow": "hidden", - "shadowColor": "#0000001A", + "shadowColor": "#0000001a", "shadowOffset": { "height": 2, "width": 0, @@ -164,10 +164,10 @@ exports[`Balance should render correctly with main and secondary balance 1`] = ` style={ { "alignSelf": "center", - "color": "#141618", + "color": "#121314", "flex": 1, - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 16, + "fontFamily": "CentraNo1-Medium", + "fontSize": 18, "fontWeight": "500", "justifyContent": "center", "letterSpacing": 0, @@ -191,9 +191,9 @@ exports[`Balance should render correctly with main and secondary balance 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 16, + "color": "#121314", + "fontFamily": "CentraNo1-Medium", + "fontSize": 18, "fontWeight": "500", "letterSpacing": 0, "lineHeight": 24, @@ -207,12 +207,12 @@ exports[`Balance should render correctly with main and secondary balance 1`] = ` accessibilityRole="text" style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, "paddingHorizontal": 0, "textTransform": "uppercase", } @@ -238,8 +238,8 @@ exports[`Balance should render correctly without a secondary balance 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", + "color": "#121314", + "fontFamily": "CentraNo1-Bold", "fontSize": 18, "fontWeight": "700", "letterSpacing": 0, @@ -353,7 +353,7 @@ exports[`Balance should render correctly without a secondary balance 1`] = ` "height": 32, "justifyContent": "center", "overflow": "hidden", - "shadowColor": "#0000001A", + "shadowColor": "#0000001a", "shadowOffset": { "height": 2, "width": 0, @@ -390,10 +390,10 @@ exports[`Balance should render correctly without a secondary balance 1`] = ` style={ { "alignSelf": "center", - "color": "#141618", + "color": "#121314", "flex": 1, - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 16, + "fontFamily": "CentraNo1-Medium", + "fontSize": 18, "fontWeight": "500", "justifyContent": "center", "letterSpacing": 0, @@ -417,9 +417,9 @@ exports[`Balance should render correctly without a secondary balance 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 16, + "color": "#121314", + "fontFamily": "CentraNo1-Medium", + "fontSize": 18, "fontWeight": "500", "letterSpacing": 0, "lineHeight": 24, diff --git a/app/components/UI/AssetOverview/Balance/index.test.tsx b/app/components/UI/AssetOverview/Balance/index.test.tsx index c112891f9985..4db83cc9a414 100644 --- a/app/components/UI/AssetOverview/Balance/index.test.tsx +++ b/app/components/UI/AssetOverview/Balance/index.test.tsx @@ -8,7 +8,6 @@ import { Provider, useSelector } from 'react-redux'; import configureMockStore from 'redux-mock-store'; import { backgroundState } from '../../../../util/test/initial-root-state'; import { NetworkBadgeSource } from './Balance'; -import { isPortfolioViewEnabled } from '../../../../util/networks'; import { MOCK_VAULT_APY_AVERAGES } from '../../Stake/components/PoolStakingLearnMoreModal/mockVaultRewards'; jest.mock('react-redux', () => ({ @@ -82,7 +81,6 @@ jest.mock('../../../../util/networks', () => ({ jest.mock('../../../../util/networks', () => ({ ...jest.requireActual('../../../../util/networks'), - isPortfolioViewEnabled: jest.fn(), })); jest.mock('../../Stake/hooks/usePooledStakes', () => ({ @@ -148,27 +146,23 @@ describe('Balance', () => { jest.clearAllMocks(); }); - if (!isPortfolioViewEnabled()) { - it('should render correctly with main and secondary balance', () => { - const wrapper = render( - <Balance asset={mockDAI} mainBalance="123" secondaryBalance="456" />, - ); - expect(wrapper).toMatchSnapshot(); - }); - } + it('should render correctly with main and secondary balance', () => { + const wrapper = render( + <Balance asset={mockDAI} mainBalance="123" secondaryBalance="456" />, + ); + expect(wrapper).toMatchSnapshot(); + }); - if (!isPortfolioViewEnabled()) { - it('should render correctly without a secondary balance', () => { - const wrapper = render( - <Balance - asset={mockDAI} - mainBalance="123" - secondaryBalance={undefined} - />, - ); - expect(wrapper).toMatchSnapshot(); - }); - } + it('should render correctly without a secondary balance', () => { + const wrapper = render( + <Balance + asset={mockDAI} + mainBalance="123" + secondaryBalance={undefined} + />, + ); + expect(wrapper).toMatchSnapshot(); + }); it('should fire navigation event for non native tokens', () => { const { queryByTestId } = render( @@ -198,59 +192,45 @@ describe('Balance', () => { describe('NetworkBadgeSource', () => { it('returns testnet image for a testnet chainId', () => { - const result = NetworkBadgeSource('0xaa36a7', 'ETH'); + const result = NetworkBadgeSource('0xaa36a7'); expect(result).toBeDefined(); }); it('returns mainnet Ethereum image for mainnet chainId', () => { - const result = NetworkBadgeSource('0x1', 'ETH'); + const result = NetworkBadgeSource('0x1'); expect(result).toBeDefined(); }); it('returns Linea Mainnet image for Linea mainnet chainId', () => { - const result = NetworkBadgeSource('0xe708', 'LINEA'); + const result = NetworkBadgeSource('0xe708'); expect(result).toBeDefined(); }); it('returns undefined if no image is found', () => { - const result = NetworkBadgeSource('0x999', 'UNKNOWN'); + const result = NetworkBadgeSource('0x999'); expect(result).toBeUndefined(); }); - - it('returns Linea Mainnet image for Linea mainnet chainId isPortfolioViewEnabled is true', () => { - if (isPortfolioViewEnabled()) { - const result = NetworkBadgeSource('0xe708', 'LINEA'); - expect(result).toBeDefined(); - } - }); }); }); describe('NetworkBadgeSource', () => { it('returns testnet image for a testnet chainId', () => { - const result = NetworkBadgeSource('0xaa36a7', 'ETH'); + const result = NetworkBadgeSource('0xaa36a7'); expect(result).toBeDefined(); }); it('returns mainnet Ethereum image for mainnet chainId', () => { - const result = NetworkBadgeSource('0x1', 'ETH'); - expect(result).toBeDefined(); - }); - - it('returns Linea Mainnet image for Linea mainnet chainId', () => { - const result = NetworkBadgeSource('0xe708', 'LINEA'); + const result = NetworkBadgeSource('0x1'); expect(result).toBeDefined(); }); it('returns undefined if no image is found', () => { - const result = NetworkBadgeSource('0x999', 'UNKNOWN'); + const result = NetworkBadgeSource('0x999'); expect(result).toBeUndefined(); }); - it('returns Linea Mainnet image for Linea mainnet chainId isPortfolioViewEnabled is true', () => { - if (isPortfolioViewEnabled()) { - const result = NetworkBadgeSource('0xe708', 'LINEA'); - expect(result).toBeDefined(); - } + it('returns Linea Mainnet image for Linea mainnet chainId', () => { + const result = NetworkBadgeSource('0xe708'); + expect(result).toBeDefined(); }); }); diff --git a/app/components/UI/AssetOverview/PriceChart/PriceChart.styles.tsx b/app/components/UI/AssetOverview/PriceChart/PriceChart.styles.tsx index d027fbcc8031..0a104de03d51 100644 --- a/app/components/UI/AssetOverview/PriceChart/PriceChart.styles.tsx +++ b/app/components/UI/AssetOverview/PriceChart/PriceChart.styles.tsx @@ -1,5 +1,9 @@ import type { Theme } from '@metamask/design-tokens'; import { Dimensions, StyleSheet, TextStyle } from 'react-native'; +import { + getFontFamily, + TextVariant, +} from '../../../../component-library/components/Texts/Text'; export const CHART_HEIGHT = Dimensions.get('screen').height * 0.44; @@ -32,6 +36,7 @@ const styleSheet = (params: { theme: Theme }) => { }, noDataOverlayTitle: { ...typography.sHeadingMD, + fontFamily: getFontFamily(TextVariant.HeadingMD), textAlign: 'center', } as TextStyle, noDataOverlayText: { diff --git a/app/components/UI/AssetOverview/TokenDetails/MarketDetailsList/__snapshots__/MarketDetailsList.test.tsx.snap b/app/components/UI/AssetOverview/TokenDetails/MarketDetailsList/__snapshots__/MarketDetailsList.test.tsx.snap index aeb4ec4ca5b2..6b50f52a9ba4 100644 --- a/app/components/UI/AssetOverview/TokenDetails/MarketDetailsList/__snapshots__/MarketDetailsList.test.tsx.snap +++ b/app/components/UI/AssetOverview/TokenDetails/MarketDetailsList/__snapshots__/MarketDetailsList.test.tsx.snap @@ -6,8 +6,8 @@ exports[`MarketDetailsList should render correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", + "color": "#121314", + "fontFamily": "CentraNo1-Bold", "fontSize": 18, "fontWeight": "700", "letterSpacing": 0, @@ -44,12 +44,12 @@ exports[`MarketDetailsList should render correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, + "color": "#686e7d", + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -59,12 +59,12 @@ exports[`MarketDetailsList should render correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -84,12 +84,12 @@ exports[`MarketDetailsList should render correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, + "color": "#686e7d", + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -99,12 +99,12 @@ exports[`MarketDetailsList should render correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -124,12 +124,12 @@ exports[`MarketDetailsList should render correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, + "color": "#686e7d", + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -139,12 +139,12 @@ exports[`MarketDetailsList should render correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -164,12 +164,12 @@ exports[`MarketDetailsList should render correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, + "color": "#686e7d", + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -179,12 +179,12 @@ exports[`MarketDetailsList should render correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -204,12 +204,12 @@ exports[`MarketDetailsList should render correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, + "color": "#686e7d", + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -219,12 +219,12 @@ exports[`MarketDetailsList should render correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -244,12 +244,12 @@ exports[`MarketDetailsList should render correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, + "color": "#686e7d", + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -259,12 +259,12 @@ exports[`MarketDetailsList should render correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -284,12 +284,12 @@ exports[`MarketDetailsList should render correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, + "color": "#686e7d", + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -299,12 +299,12 @@ exports[`MarketDetailsList should render correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > diff --git a/app/components/UI/AssetOverview/TokenDetails/TokenDetails.test.tsx b/app/components/UI/AssetOverview/TokenDetails/TokenDetails.test.tsx index 01338fa84807..cf97270a2334 100644 --- a/app/components/UI/AssetOverview/TokenDetails/TokenDetails.test.tsx +++ b/app/components/UI/AssetOverview/TokenDetails/TokenDetails.test.tsx @@ -20,7 +20,7 @@ import * as reactRedux from 'react-redux'; import * as StakeConstants from '../../Stake/constants'; import { strings } from '../../../../../locales/i18n'; jest.mock('../../../../core/Engine', () => ({ - getTotalFiatAccountBalance: jest.fn(), + getTotalEvmFiatAccountBalance: jest.fn(), context: { TokensController: {}, }, diff --git a/app/components/UI/AssetOverview/TokenDetails/TokenDetailsList/__snapshots__/TokenDetailsList.test.tsx.snap b/app/components/UI/AssetOverview/TokenDetails/TokenDetailsList/__snapshots__/TokenDetailsList.test.tsx.snap index fdc7d0280fa1..30a2977fb794 100644 --- a/app/components/UI/AssetOverview/TokenDetails/TokenDetailsList/__snapshots__/TokenDetailsList.test.tsx.snap +++ b/app/components/UI/AssetOverview/TokenDetails/TokenDetailsList/__snapshots__/TokenDetailsList.test.tsx.snap @@ -6,8 +6,8 @@ exports[`TokenDetails should render correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", + "color": "#121314", + "fontFamily": "CentraNo1-Bold", "fontSize": 18, "fontWeight": "700", "letterSpacing": 0, @@ -44,12 +44,12 @@ exports[`TokenDetails should render correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, + "color": "#686e7d", + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -60,7 +60,7 @@ exports[`TokenDetails should render correctly 1`] = ` style={ { "alignItems": "center", - "backgroundColor": "#0376C91A", + "backgroundColor": "#4459ff1a", "borderRadius": 20, "flexDirection": "row", "marginLeft": 8, @@ -72,19 +72,19 @@ exports[`TokenDetails should render correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#4459ff", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > 0x6B17...1d0F </Text> <SvgMock - color="#0376c9" + color="#4459ff" height={16} name="Copy" style={ @@ -111,12 +111,12 @@ exports[`TokenDetails should render correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, + "color": "#686e7d", + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -126,12 +126,12 @@ exports[`TokenDetails should render correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -156,12 +156,12 @@ exports[`TokenDetails should render correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, + "color": "#686e7d", + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -171,12 +171,12 @@ exports[`TokenDetails should render correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > diff --git a/app/components/UI/AssetOverview/TokenDetails/__snapshots__/TokenDetails.test.tsx.snap b/app/components/UI/AssetOverview/TokenDetails/__snapshots__/TokenDetails.test.tsx.snap index d95cf04e77f4..6be1e07d0823 100644 --- a/app/components/UI/AssetOverview/TokenDetails/__snapshots__/TokenDetails.test.tsx.snap +++ b/app/components/UI/AssetOverview/TokenDetails/__snapshots__/TokenDetails.test.tsx.snap @@ -14,8 +14,8 @@ exports[`TokenDetails should render correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", + "color": "#121314", + "fontFamily": "CentraNo1-Bold", "fontSize": 18, "fontWeight": "700", "letterSpacing": 0, @@ -52,12 +52,12 @@ exports[`TokenDetails should render correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, + "color": "#686e7d", + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -68,7 +68,7 @@ exports[`TokenDetails should render correctly 1`] = ` style={ { "alignItems": "center", - "backgroundColor": "#0376C91A", + "backgroundColor": "#4459ff1a", "borderRadius": 20, "flexDirection": "row", "marginLeft": 8, @@ -80,19 +80,19 @@ exports[`TokenDetails should render correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#4459ff", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > 0x6B17...1d0F </Text> <SvgMock - color="#0376c9" + color="#4459ff" height={16} name="Copy" style={ @@ -119,12 +119,12 @@ exports[`TokenDetails should render correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, + "color": "#686e7d", + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -134,12 +134,12 @@ exports[`TokenDetails should render correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -164,12 +164,12 @@ exports[`TokenDetails should render correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, + "color": "#686e7d", + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -179,12 +179,12 @@ exports[`TokenDetails should render correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -198,8 +198,8 @@ exports[`TokenDetails should render correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", + "color": "#121314", + "fontFamily": "CentraNo1-Bold", "fontSize": 18, "fontWeight": "700", "letterSpacing": 0, @@ -236,12 +236,12 @@ exports[`TokenDetails should render correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, + "color": "#686e7d", + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -251,12 +251,12 @@ exports[`TokenDetails should render correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -276,12 +276,12 @@ exports[`TokenDetails should render correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, + "color": "#686e7d", + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -291,12 +291,12 @@ exports[`TokenDetails should render correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -316,12 +316,12 @@ exports[`TokenDetails should render correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, + "color": "#686e7d", + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -331,12 +331,12 @@ exports[`TokenDetails should render correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -356,12 +356,12 @@ exports[`TokenDetails should render correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, + "color": "#686e7d", + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -371,12 +371,12 @@ exports[`TokenDetails should render correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -396,12 +396,12 @@ exports[`TokenDetails should render correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, + "color": "#686e7d", + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -411,12 +411,12 @@ exports[`TokenDetails should render correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -436,12 +436,12 @@ exports[`TokenDetails should render correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, + "color": "#686e7d", + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -451,12 +451,12 @@ exports[`TokenDetails should render correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -476,12 +476,12 @@ exports[`TokenDetails should render correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, + "color": "#686e7d", + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -491,12 +491,12 @@ exports[`TokenDetails should render correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > diff --git a/app/components/UI/AssetOverview/__snapshots__/AssetOverview.test.tsx.snap b/app/components/UI/AssetOverview/__snapshots__/AssetOverview.test.tsx.snap index 53a3ff73ee58..470dc8ecd134 100644 --- a/app/components/UI/AssetOverview/__snapshots__/AssetOverview.test.tsx.snap +++ b/app/components/UI/AssetOverview/__snapshots__/AssetOverview.test.tsx.snap @@ -21,12 +21,12 @@ exports[`AssetOverview should render correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, + "color": "#686e7d", + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -39,8 +39,8 @@ exports[`AssetOverview should render correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", + "color": "#121314", + "fontFamily": "CentraNo1-Bold", "fontSize": 24, "fontWeight": "700", "letterSpacing": 0, @@ -89,12 +89,12 @@ exports[`AssetOverview should render correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -189,7 +189,7 @@ exports[`AssetOverview should render correctly 1`] = ` style={ { "alignItems": "center", - "backgroundColor": "#00000014", + "backgroundColor": "#858b9a29", "borderRadius": 40, "justifyContent": "center", "paddingHorizontal": 8, @@ -202,12 +202,12 @@ exports[`AssetOverview should render correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 3, - "lineHeight": 20, + "lineHeight": 22, "textAlign": "center", } } @@ -233,12 +233,12 @@ exports[`AssetOverview should render correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 3, - "lineHeight": 20, + "lineHeight": 22, "textAlign": "center", } } @@ -264,12 +264,12 @@ exports[`AssetOverview should render correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 3, - "lineHeight": 20, + "lineHeight": 22, "textAlign": "center", } } @@ -295,12 +295,12 @@ exports[`AssetOverview should render correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 3, - "lineHeight": 20, + "lineHeight": 22, "textAlign": "center", } } @@ -326,12 +326,12 @@ exports[`AssetOverview should render correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 3, - "lineHeight": 20, + "lineHeight": 22, "textAlign": "center", } } @@ -357,12 +357,12 @@ exports[`AssetOverview should render correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 3, - "lineHeight": 20, + "lineHeight": 22, "textAlign": "center", } } @@ -419,7 +419,7 @@ exports[`AssetOverview should render correctly 1`] = ` style={ { "alignItems": "center", - "backgroundColor": "#0376c9", + "backgroundColor": "#4459ff", "borderRadius": 20, "height": 40, "justifyContent": "center", @@ -447,9 +447,9 @@ exports[`AssetOverview should render correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 16, + "color": "#121314", + "fontFamily": "CentraNo1-Medium", + "fontSize": 18, "fontWeight": "500", "letterSpacing": 0, "lineHeight": 24, @@ -460,12 +460,12 @@ exports[`AssetOverview should render correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } /> @@ -475,12 +475,12 @@ exports[`AssetOverview should render correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -525,7 +525,7 @@ exports[`AssetOverview should render correctly 1`] = ` style={ { "alignItems": "center", - "backgroundColor": "#0376c9", + "backgroundColor": "#4459ff", "borderRadius": 20, "height": 40, "justifyContent": "center", @@ -553,9 +553,9 @@ exports[`AssetOverview should render correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 16, + "color": "#121314", + "fontFamily": "CentraNo1-Medium", + "fontSize": 18, "fontWeight": "500", "letterSpacing": 0, "lineHeight": 24, @@ -566,12 +566,12 @@ exports[`AssetOverview should render correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } /> @@ -581,12 +581,12 @@ exports[`AssetOverview should render correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -631,7 +631,7 @@ exports[`AssetOverview should render correctly 1`] = ` style={ { "alignItems": "center", - "backgroundColor": "#0376c9", + "backgroundColor": "#4459ff", "borderRadius": 20, "height": 40, "justifyContent": "center", @@ -659,9 +659,9 @@ exports[`AssetOverview should render correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 16, + "color": "#121314", + "fontFamily": "CentraNo1-Medium", + "fontSize": 18, "fontWeight": "500", "letterSpacing": 0, "lineHeight": 24, @@ -672,12 +672,12 @@ exports[`AssetOverview should render correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } /> @@ -687,12 +687,12 @@ exports[`AssetOverview should render correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -737,7 +737,7 @@ exports[`AssetOverview should render correctly 1`] = ` style={ { "alignItems": "center", - "backgroundColor": "#0376c9", + "backgroundColor": "#4459ff", "borderRadius": 20, "height": 40, "justifyContent": "center", @@ -765,9 +765,9 @@ exports[`AssetOverview should render correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 16, + "color": "#121314", + "fontFamily": "CentraNo1-Medium", + "fontSize": 18, "fontWeight": "500", "letterSpacing": 0, "lineHeight": 24, @@ -778,12 +778,12 @@ exports[`AssetOverview should render correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } /> @@ -793,12 +793,12 @@ exports[`AssetOverview should render correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -843,7 +843,7 @@ exports[`AssetOverview should render correctly 1`] = ` style={ { "alignItems": "center", - "backgroundColor": "#0376c9", + "backgroundColor": "#4459ff", "borderRadius": 20, "height": 40, "justifyContent": "center", @@ -871,9 +871,9 @@ exports[`AssetOverview should render correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 16, + "color": "#121314", + "fontFamily": "CentraNo1-Medium", + "fontSize": 18, "fontWeight": "500", "letterSpacing": 0, "lineHeight": 24, @@ -884,12 +884,12 @@ exports[`AssetOverview should render correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } /> @@ -899,12 +899,12 @@ exports[`AssetOverview should render correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -923,8 +923,8 @@ exports[`AssetOverview should render correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", + "color": "#121314", + "fontFamily": "CentraNo1-Bold", "fontSize": 18, "fontWeight": "700", "letterSpacing": 0, @@ -1038,7 +1038,7 @@ exports[`AssetOverview should render correctly 1`] = ` "height": 32, "justifyContent": "center", "overflow": "hidden", - "shadowColor": "#0000001A", + "shadowColor": "#0000001a", "shadowOffset": { "height": 2, "width": 0, @@ -1075,10 +1075,10 @@ exports[`AssetOverview should render correctly 1`] = ` style={ { "alignSelf": "center", - "color": "#141618", + "color": "#121314", "flex": 1, - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 16, + "fontFamily": "CentraNo1-Medium", + "fontSize": 18, "fontWeight": "500", "justifyContent": "center", "letterSpacing": 0, @@ -1102,15 +1102,33 @@ exports[`AssetOverview should render correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 16, + "color": "#121314", + "fontFamily": "CentraNo1-Medium", + "fontSize": 18, "fontWeight": "500", "letterSpacing": 0, "lineHeight": 24, } } testID="balance-test-id" + > + 1500 + </Text> + <Text + accessibilityRole="text" + style={ + { + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, + "fontWeight": "400", + "letterSpacing": 0, + "lineHeight": 24, + "paddingHorizontal": 0, + "textTransform": "uppercase", + } + } + testID="secondary-balance-test-id" > 0 ETH </Text> @@ -1129,7 +1147,7 @@ exports[`AssetOverview should render correctly 1`] = ` </View> `; -exports[`AssetOverview should render correctly when portfolio view is enabled 1`] = ` +exports[`AssetOverview should render native balances even if there are no accounts for the asset chain in the state 1`] = ` <View style={ { @@ -1150,12 +1168,12 @@ exports[`AssetOverview should render correctly when portfolio view is enabled 1` accessibilityRole="text" style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, + "color": "#686e7d", + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -1168,8 +1186,8 @@ exports[`AssetOverview should render correctly when portfolio view is enabled 1` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", + "color": "#121314", + "fontFamily": "CentraNo1-Bold", "fontSize": 24, "fontWeight": "700", "letterSpacing": 0, @@ -1218,12 +1236,12 @@ exports[`AssetOverview should render correctly when portfolio view is enabled 1` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -1318,7 +1336,7 @@ exports[`AssetOverview should render correctly when portfolio view is enabled 1` style={ { "alignItems": "center", - "backgroundColor": "#00000014", + "backgroundColor": "#858b9a29", "borderRadius": 40, "justifyContent": "center", "paddingHorizontal": 8, @@ -1331,12 +1349,12 @@ exports[`AssetOverview should render correctly when portfolio view is enabled 1` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 3, - "lineHeight": 20, + "lineHeight": 22, "textAlign": "center", } } @@ -1362,12 +1380,12 @@ exports[`AssetOverview should render correctly when portfolio view is enabled 1` accessibilityRole="text" style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 3, - "lineHeight": 20, + "lineHeight": 22, "textAlign": "center", } } @@ -1393,12 +1411,12 @@ exports[`AssetOverview should render correctly when portfolio view is enabled 1` accessibilityRole="text" style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 3, - "lineHeight": 20, + "lineHeight": 22, "textAlign": "center", } } @@ -1424,12 +1442,12 @@ exports[`AssetOverview should render correctly when portfolio view is enabled 1` accessibilityRole="text" style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 3, - "lineHeight": 20, + "lineHeight": 22, "textAlign": "center", } } @@ -1455,12 +1473,12 @@ exports[`AssetOverview should render correctly when portfolio view is enabled 1` accessibilityRole="text" style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 3, - "lineHeight": 20, + "lineHeight": 22, "textAlign": "center", } } @@ -1486,12 +1504,12 @@ exports[`AssetOverview should render correctly when portfolio view is enabled 1` accessibilityRole="text" style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 3, - "lineHeight": 20, + "lineHeight": 22, "textAlign": "center", } } @@ -1548,7 +1566,7 @@ exports[`AssetOverview should render correctly when portfolio view is enabled 1` style={ { "alignItems": "center", - "backgroundColor": "#0376c9", + "backgroundColor": "#4459ff", "borderRadius": 20, "height": 40, "justifyContent": "center", @@ -1576,9 +1594,9 @@ exports[`AssetOverview should render correctly when portfolio view is enabled 1` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 16, + "color": "#121314", + "fontFamily": "CentraNo1-Medium", + "fontSize": 18, "fontWeight": "500", "letterSpacing": 0, "lineHeight": 24, @@ -1589,12 +1607,12 @@ exports[`AssetOverview should render correctly when portfolio view is enabled 1` accessibilityRole="text" style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } /> @@ -1604,12 +1622,12 @@ exports[`AssetOverview should render correctly when portfolio view is enabled 1` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -1654,7 +1672,7 @@ exports[`AssetOverview should render correctly when portfolio view is enabled 1` style={ { "alignItems": "center", - "backgroundColor": "#0376c9", + "backgroundColor": "#4459ff", "borderRadius": 20, "height": 40, "justifyContent": "center", @@ -1682,9 +1700,9 @@ exports[`AssetOverview should render correctly when portfolio view is enabled 1` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 16, + "color": "#121314", + "fontFamily": "CentraNo1-Medium", + "fontSize": 18, "fontWeight": "500", "letterSpacing": 0, "lineHeight": 24, @@ -1695,12 +1713,12 @@ exports[`AssetOverview should render correctly when portfolio view is enabled 1` accessibilityRole="text" style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } /> @@ -1710,12 +1728,12 @@ exports[`AssetOverview should render correctly when portfolio view is enabled 1` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -1760,7 +1778,7 @@ exports[`AssetOverview should render correctly when portfolio view is enabled 1` style={ { "alignItems": "center", - "backgroundColor": "#0376c9", + "backgroundColor": "#4459ff", "borderRadius": 20, "height": 40, "justifyContent": "center", @@ -1788,9 +1806,9 @@ exports[`AssetOverview should render correctly when portfolio view is enabled 1` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 16, + "color": "#121314", + "fontFamily": "CentraNo1-Medium", + "fontSize": 18, "fontWeight": "500", "letterSpacing": 0, "lineHeight": 24, @@ -1801,12 +1819,12 @@ exports[`AssetOverview should render correctly when portfolio view is enabled 1` accessibilityRole="text" style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } /> @@ -1816,12 +1834,12 @@ exports[`AssetOverview should render correctly when portfolio view is enabled 1` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -1866,7 +1884,7 @@ exports[`AssetOverview should render correctly when portfolio view is enabled 1` style={ { "alignItems": "center", - "backgroundColor": "#0376c9", + "backgroundColor": "#4459ff", "borderRadius": 20, "height": 40, "justifyContent": "center", @@ -1894,9 +1912,9 @@ exports[`AssetOverview should render correctly when portfolio view is enabled 1` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 16, + "color": "#121314", + "fontFamily": "CentraNo1-Medium", + "fontSize": 18, "fontWeight": "500", "letterSpacing": 0, "lineHeight": 24, @@ -1907,12 +1925,12 @@ exports[`AssetOverview should render correctly when portfolio view is enabled 1` accessibilityRole="text" style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } /> @@ -1922,12 +1940,12 @@ exports[`AssetOverview should render correctly when portfolio view is enabled 1` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -1972,7 +1990,7 @@ exports[`AssetOverview should render correctly when portfolio view is enabled 1` style={ { "alignItems": "center", - "backgroundColor": "#0376c9", + "backgroundColor": "#4459ff", "borderRadius": 20, "height": 40, "justifyContent": "center", @@ -2000,9 +2018,9 @@ exports[`AssetOverview should render correctly when portfolio view is enabled 1` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 16, + "color": "#121314", + "fontFamily": "CentraNo1-Medium", + "fontSize": 18, "fontWeight": "500", "letterSpacing": 0, "lineHeight": 24, @@ -2013,12 +2031,12 @@ exports[`AssetOverview should render correctly when portfolio view is enabled 1` accessibilityRole="text" style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } /> @@ -2028,12 +2046,12 @@ exports[`AssetOverview should render correctly when portfolio view is enabled 1` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -2052,8 +2070,8 @@ exports[`AssetOverview should render correctly when portfolio view is enabled 1` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", + "color": "#121314", + "fontFamily": "CentraNo1-Bold", "fontSize": 18, "fontWeight": "700", "letterSpacing": 0, @@ -2091,33 +2109,67 @@ exports[`AssetOverview should render correctly when portfolio view is enabled 1` > <View> <View - style={ - { - "backgroundColor": "#ffffff", - "borderRadius": 16, - "height": 32, - "overflow": "hidden", - "width": 32, - } - } + useNativeDriver={true} > <Image + fadeIn={true} onError={[Function]} - resizeMode="contain" + onLoadEnd={[Function]} source={ { "uri": "", } } + style={ + [ + { + "borderRadius": 12, + "height": 24, + "width": 24, + }, + undefined, + false, + false, + { + "borderRadius": 16, + "height": 32, + "overflow": "hidden", + "width": 32, + }, + ] + } + testID="PLACE HOLDER" + /> + <View + collapsable={false} style={ { - "flex": 1, - "height": undefined, - "width": undefined, + "bottom": 0, + "left": 0, + "opacity": 1, + "position": "absolute", + "right": 0, + "top": 0, } } - testID="token-avatar-image" - /> + > + <View + style={ + [ + { + "borderRadius": 16, + "height": 32, + "overflow": "hidden", + "width": 32, + }, + { + "backgroundColor": "#eee", + }, + undefined, + ] + } + /> + </View> </View> </View> <View @@ -2160,14 +2212,14 @@ exports[`AssetOverview should render correctly when portfolio view is enabled 1` style={ { "alignItems": "center", - "backgroundColor": "#ffffff", + "backgroundColor": "#f3f5f9", "borderColor": "#ffffff", - "borderRadius": 8, + "borderRadius": 16, "borderWidth": 2, "height": 32, "justifyContent": "center", "overflow": "hidden", - "shadowColor": "#0000001A", + "shadowColor": "#0000001a", "shadowOffset": { "height": 2, "width": 0, @@ -2183,18 +2235,21 @@ exports[`AssetOverview should render correctly when portfolio view is enabled 1` } } > - <Image - onError={[Function]} - resizeMode="contain" - source={1} + <Text + accessibilityRole="text" style={ { - "height": 32, - "width": 32, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, + "fontWeight": "400", + "letterSpacing": 0, + "lineHeight": 24, } } - testID="network-avatar-image" - /> + > + ? + </Text> </View> </View> </View> @@ -2204,10 +2259,10 @@ exports[`AssetOverview should render correctly when portfolio view is enabled 1` style={ { "alignSelf": "center", - "color": "#141618", + "color": "#121314", "flex": 1, - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 16, + "fontFamily": "CentraNo1-Medium", + "fontSize": 18, "fontWeight": "500", "justifyContent": "center", "letterSpacing": 0, @@ -2231,9 +2286,9 @@ exports[`AssetOverview should render correctly when portfolio view is enabled 1` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 16, + "color": "#121314", + "fontFamily": "CentraNo1-Medium", + "fontSize": 18, "fontWeight": "500", "letterSpacing": 0, "lineHeight": 24, @@ -2247,12 +2302,12 @@ exports[`AssetOverview should render correctly when portfolio view is enabled 1` accessibilityRole="text" style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, "paddingHorizontal": 0, "textTransform": "uppercase", } @@ -2276,7 +2331,7 @@ exports[`AssetOverview should render correctly when portfolio view is enabled 1` </View> `; -exports[`AssetOverview should render native balances even if there are no accounts for the asset chain in the state 1`] = ` +exports[`AssetOverview should render native balances when non evm network is selected 1`] = ` <View style={ { @@ -2297,12 +2352,12 @@ exports[`AssetOverview should render native balances even if there are no accoun accessibilityRole="text" style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, + "color": "#686e7d", + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -2315,8 +2370,8 @@ exports[`AssetOverview should render native balances even if there are no accoun accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", + "color": "#121314", + "fontFamily": "CentraNo1-Bold", "fontSize": 24, "fontWeight": "700", "letterSpacing": 0, @@ -2365,12 +2420,12 @@ exports[`AssetOverview should render native balances even if there are no accoun accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -2465,7 +2520,7 @@ exports[`AssetOverview should render native balances even if there are no accoun style={ { "alignItems": "center", - "backgroundColor": "#00000014", + "backgroundColor": "#858b9a29", "borderRadius": 40, "justifyContent": "center", "paddingHorizontal": 8, @@ -2478,12 +2533,12 @@ exports[`AssetOverview should render native balances even if there are no accoun accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 3, - "lineHeight": 20, + "lineHeight": 22, "textAlign": "center", } } @@ -2509,12 +2564,12 @@ exports[`AssetOverview should render native balances even if there are no accoun accessibilityRole="text" style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 3, - "lineHeight": 20, + "lineHeight": 22, "textAlign": "center", } } @@ -2540,12 +2595,12 @@ exports[`AssetOverview should render native balances even if there are no accoun accessibilityRole="text" style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 3, - "lineHeight": 20, + "lineHeight": 22, "textAlign": "center", } } @@ -2571,12 +2626,12 @@ exports[`AssetOverview should render native balances even if there are no accoun accessibilityRole="text" style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 3, - "lineHeight": 20, + "lineHeight": 22, "textAlign": "center", } } @@ -2602,12 +2657,12 @@ exports[`AssetOverview should render native balances even if there are no accoun accessibilityRole="text" style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 3, - "lineHeight": 20, + "lineHeight": 22, "textAlign": "center", } } @@ -2633,12 +2688,12 @@ exports[`AssetOverview should render native balances even if there are no accoun accessibilityRole="text" style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 3, - "lineHeight": 20, + "lineHeight": 22, "textAlign": "center", } } @@ -2695,7 +2750,7 @@ exports[`AssetOverview should render native balances even if there are no accoun style={ { "alignItems": "center", - "backgroundColor": "#0376c9", + "backgroundColor": "#4459ff", "borderRadius": 20, "height": 40, "justifyContent": "center", @@ -2723,9 +2778,9 @@ exports[`AssetOverview should render native balances even if there are no accoun accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 16, + "color": "#121314", + "fontFamily": "CentraNo1-Medium", + "fontSize": 18, "fontWeight": "500", "letterSpacing": 0, "lineHeight": 24, @@ -2736,12 +2791,12 @@ exports[`AssetOverview should render native balances even if there are no accoun accessibilityRole="text" style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } /> @@ -2751,12 +2806,12 @@ exports[`AssetOverview should render native balances even if there are no accoun accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -2801,7 +2856,7 @@ exports[`AssetOverview should render native balances even if there are no accoun style={ { "alignItems": "center", - "backgroundColor": "#0376c9", + "backgroundColor": "#4459ff", "borderRadius": 20, "height": 40, "justifyContent": "center", @@ -2829,9 +2884,9 @@ exports[`AssetOverview should render native balances even if there are no accoun accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 16, + "color": "#121314", + "fontFamily": "CentraNo1-Medium", + "fontSize": 18, "fontWeight": "500", "letterSpacing": 0, "lineHeight": 24, @@ -2842,12 +2897,12 @@ exports[`AssetOverview should render native balances even if there are no accoun accessibilityRole="text" style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } /> @@ -2857,12 +2912,12 @@ exports[`AssetOverview should render native balances even if there are no accoun accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -2907,7 +2962,7 @@ exports[`AssetOverview should render native balances even if there are no accoun style={ { "alignItems": "center", - "backgroundColor": "#0376c9", + "backgroundColor": "#4459ff", "borderRadius": 20, "height": 40, "justifyContent": "center", @@ -2935,9 +2990,9 @@ exports[`AssetOverview should render native balances even if there are no accoun accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 16, + "color": "#121314", + "fontFamily": "CentraNo1-Medium", + "fontSize": 18, "fontWeight": "500", "letterSpacing": 0, "lineHeight": 24, @@ -2948,12 +3003,12 @@ exports[`AssetOverview should render native balances even if there are no accoun accessibilityRole="text" style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } /> @@ -2963,12 +3018,12 @@ exports[`AssetOverview should render native balances even if there are no accoun accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -3013,7 +3068,7 @@ exports[`AssetOverview should render native balances even if there are no accoun style={ { "alignItems": "center", - "backgroundColor": "#0376c9", + "backgroundColor": "#4459ff", "borderRadius": 20, "height": 40, "justifyContent": "center", @@ -3041,9 +3096,9 @@ exports[`AssetOverview should render native balances even if there are no accoun accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 16, + "color": "#121314", + "fontFamily": "CentraNo1-Medium", + "fontSize": 18, "fontWeight": "500", "letterSpacing": 0, "lineHeight": 24, @@ -3054,12 +3109,12 @@ exports[`AssetOverview should render native balances even if there are no accoun accessibilityRole="text" style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } /> @@ -3069,12 +3124,12 @@ exports[`AssetOverview should render native balances even if there are no accoun accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -3119,7 +3174,7 @@ exports[`AssetOverview should render native balances even if there are no accoun style={ { "alignItems": "center", - "backgroundColor": "#0376c9", + "backgroundColor": "#4459ff", "borderRadius": 20, "height": 40, "justifyContent": "center", @@ -3147,9 +3202,9 @@ exports[`AssetOverview should render native balances even if there are no accoun accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 16, + "color": "#121314", + "fontFamily": "CentraNo1-Medium", + "fontSize": 18, "fontWeight": "500", "letterSpacing": 0, "lineHeight": 24, @@ -3160,12 +3215,12 @@ exports[`AssetOverview should render native balances even if there are no accoun accessibilityRole="text" style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } /> @@ -3175,12 +3230,12 @@ exports[`AssetOverview should render native balances even if there are no accoun accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -3199,8 +3254,8 @@ exports[`AssetOverview should render native balances even if there are no accoun accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", + "color": "#121314", + "fontFamily": "CentraNo1-Bold", "fontSize": 18, "fontWeight": "700", "letterSpacing": 0, @@ -3341,14 +3396,14 @@ exports[`AssetOverview should render native balances even if there are no accoun style={ { "alignItems": "center", - "backgroundColor": "#f2f4f6", + "backgroundColor": "#ffffff", "borderColor": "#ffffff", - "borderRadius": 16, + "borderRadius": 8, "borderWidth": 2, "height": 32, "justifyContent": "center", "overflow": "hidden", - "shadowColor": "#0000001A", + "shadowColor": "#0000001a", "shadowOffset": { "height": 2, "width": 0, @@ -3364,21 +3419,18 @@ exports[`AssetOverview should render native balances even if there are no accoun } } > - <Text - accessibilityRole="text" + <Image + onError={[Function]} + resizeMode="contain" + source={1} style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 16, - "fontWeight": "400", - "letterSpacing": 0, - "lineHeight": 24, + "height": 32, + "width": 32, } } - > - ? - </Text> + testID="network-avatar-image" + /> </View> </View> </View> @@ -3388,10 +3440,10 @@ exports[`AssetOverview should render native balances even if there are no accoun style={ { "alignSelf": "center", - "color": "#141618", + "color": "#121314", "flex": 1, - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 16, + "fontFamily": "CentraNo1-Medium", + "fontSize": 18, "fontWeight": "500", "justifyContent": "center", "letterSpacing": 0, @@ -3415,9 +3467,9 @@ exports[`AssetOverview should render native balances even if there are no accoun accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 16, + "color": "#121314", + "fontFamily": "CentraNo1-Medium", + "fontSize": 18, "fontWeight": "500", "letterSpacing": 0, "lineHeight": 24, @@ -3431,19 +3483,19 @@ exports[`AssetOverview should render native balances even if there are no accoun accessibilityRole="text" style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, "paddingHorizontal": 0, "textTransform": "uppercase", } } testID="secondary-balance-test-id" > - 0 ETH + 400 ETH </Text> </View> </TouchableOpacity> diff --git a/app/components/UI/AssetSearch/__snapshots__/index.test.tsx.snap b/app/components/UI/AssetSearch/__snapshots__/index.test.tsx.snap index 81d026d360c2..3476e4516f38 100644 --- a/app/components/UI/AssetSearch/__snapshots__/index.test.tsx.snap +++ b/app/components/UI/AssetSearch/__snapshots__/index.test.tsx.snap @@ -6,10 +6,10 @@ exports[`AssetSearch should render correctly 1`] = ` [ { "alignItems": "center", - "borderColor": "#848c96", + "borderColor": "#b7bbc8", "borderRadius": 8, "borderWidth": 1, - "color": "#141618", + "color": "#121314", "flex": 1, "flexDirection": "row", "justifyContent": "center", @@ -23,13 +23,13 @@ exports[`AssetSearch should render correctly 1`] = ` <View style={ { - "color": "#6a737d", + "color": "#686e7d", "paddingLeft": 20, } } > <SvgMock - color="#141618" + color="#121314" height={16} name="Search" style={ @@ -44,8 +44,8 @@ exports[`AssetSearch should render correctly 1`] = ` <View style={ { - "borderColor": "#0260a4", - "color": "#6a737d", + "borderColor": "#2c3dc5", + "color": "#686e7d", "paddingHorizontal": 12, "paddingVertical": 12, "width": "80%", @@ -58,12 +58,12 @@ exports[`AssetSearch should render correctly 1`] = ` onChangeText={[Function]} onFocus={[Function]} placeholder="Search Tokens" - placeholderTextColor="#9fa6ae" + placeholderTextColor="#9ca1af" style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontWeight": "400", }, { @@ -79,7 +79,7 @@ exports[`AssetSearch should render correctly 1`] = ` <View style={ { - "color": "#6a737d", + "color": "#686e7d", "paddingRight": 20, } } @@ -103,7 +103,7 @@ exports[`AssetSearch should render correctly 1`] = ` } > <SvgMock - color="#141618" + color="#121314" height={16} name="Close" style={ diff --git a/app/components/UI/BackupAlert/__snapshots__/BackupAlert.test.tsx.snap b/app/components/UI/BackupAlert/__snapshots__/BackupAlert.test.tsx.snap index c99db0240178..f2e01f899e13 100644 --- a/app/components/UI/BackupAlert/__snapshots__/BackupAlert.test.tsx.snap +++ b/app/components/UI/BackupAlert/__snapshots__/BackupAlert.test.tsx.snap @@ -14,7 +14,7 @@ exports[`BackupAlert should render correctly 1`] = ` [ { "backgroundColor": "#ffffff", - "borderColor": "#bf5208", + "borderColor": "#9a6300", "borderRadius": 8, "borderWidth": 1, "left": 16, @@ -31,7 +31,7 @@ exports[`BackupAlert should render correctly 1`] = ` <View style={ { - "backgroundColor": "#BF52081A", + "backgroundColor": "#9a63001a", "flex": 1, "padding": 14, } @@ -53,7 +53,7 @@ exports[`BackupAlert should render correctly 1`] = ` } > <SvgMock - color="#141618" + color="#121314" height={20} name="Notification" style={ @@ -76,12 +76,12 @@ exports[`BackupAlert should render correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Bold", + "fontSize": 16, "fontWeight": "700", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, "marginBottom": 14, } } @@ -105,13 +105,13 @@ exports[`BackupAlert should render correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#0376c9", + "color": "#4459ff", "flex": 1, - "fontFamily": "EuclidCircularB-Bold", - "fontSize": 14, + "fontFamily": "CentraNo1-Bold", + "fontSize": 16, "fontWeight": "700", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, "marginLeft": 14, "textAlign": "right", } @@ -132,13 +132,13 @@ exports[`BackupAlert should render correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#0376c9", + "color": "#4459ff", "flex": 1, - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, "marginLeft": 14, "textAlign": "right", } diff --git a/app/components/UI/BasicFunctionality/BasicFunctionalityModal/__snapshots__/BasicFunctionalityModal.test.js.snap b/app/components/UI/BasicFunctionality/BasicFunctionalityModal/__snapshots__/BasicFunctionalityModal.test.js.snap index 64311d2c06fb..ce8066086596 100644 --- a/app/components/UI/BasicFunctionality/BasicFunctionalityModal/__snapshots__/BasicFunctionalityModal.test.js.snap +++ b/app/components/UI/BasicFunctionality/BasicFunctionalityModal/__snapshots__/BasicFunctionalityModal.test.js.snap @@ -23,7 +23,7 @@ exports[`BasicFunctionalityModal should render correctly 1`] = ` style={ [ { - "backgroundColor": "#00000099", + "backgroundColor": "#00000066", "bottom": 0, "left": 0, "position": "absolute", @@ -70,14 +70,14 @@ exports[`BasicFunctionalityModal should render correctly 1`] = ` [ { "backgroundColor": "#ffffff", - "borderColor": "#BBC0C566", + "borderColor": "#b7bbc866", "borderTopLeftRadius": 8, "borderTopRightRadius": 8, "borderWidth": 1, "maxHeight": 1334, "overflow": "hidden", "paddingBottom": 0, - "shadowColor": "#0000001A", + "shadowColor": "#0000001a", "shadowOffset": { "height": 2, "width": 0, @@ -107,7 +107,7 @@ exports[`BasicFunctionalityModal should render correctly 1`] = ` <View style={ { - "backgroundColor": "#BBC0C566", + "backgroundColor": "#b7bbc866", "borderRadius": 2, "height": 4, "width": 40, @@ -125,7 +125,7 @@ exports[`BasicFunctionalityModal should render correctly 1`] = ` } > <SvgMock - color="#d73847" + color="#ca3542" height={32} name="Danger" style={ @@ -142,8 +142,8 @@ exports[`BasicFunctionalityModal should render correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", + "color": "#121314", + "fontFamily": "CentraNo1-Bold", "fontSize": 18, "fontWeight": "700", "letterSpacing": 0, @@ -159,12 +159,12 @@ exports[`BasicFunctionalityModal should render correctly 1`] = ` style={ { "alignSelf": "flex-start", - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, "paddingBottom": 10, "paddingTop": 16, } @@ -197,7 +197,7 @@ exports[`BasicFunctionalityModal should render correctly 1`] = ` { "alignItems": "center", "backgroundColor": "#ffffff", - "borderColor": "#141618", + "borderColor": "#121314", "borderRadius": 4, "borderWidth": 2, "height": 20, @@ -217,12 +217,12 @@ exports[`BasicFunctionalityModal should render correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -250,7 +250,7 @@ exports[`BasicFunctionalityModal should render correctly 1`] = ` "alignItems": "center", "alignSelf": "flex-start", "backgroundColor": "transparent", - "borderColor": "#0376c9", + "borderColor": "#4459ff", "borderRadius": 24, "borderWidth": 1, "flex": 1, @@ -265,12 +265,12 @@ exports[`BasicFunctionalityModal should render correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, + "color": "#4459ff", + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -296,7 +296,7 @@ exports[`BasicFunctionalityModal should render correctly 1`] = ` { "alignItems": "center", "alignSelf": "flex-start", - "backgroundColor": "#d73847", + "backgroundColor": "#ca3542", "borderRadius": 24, "flex": 1, "flexDirection": "row", @@ -312,11 +312,11 @@ exports[`BasicFunctionalityModal should render correctly 1`] = ` style={ { "color": "#ffffff", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > diff --git a/app/components/UI/BasicFunctionality/__snapshots__/BasicFunctionality.test.js.snap b/app/components/UI/BasicFunctionality/__snapshots__/BasicFunctionality.test.js.snap index b5e83cf60b33..727778ace744 100644 --- a/app/components/UI/BasicFunctionality/__snapshots__/BasicFunctionality.test.js.snap +++ b/app/components/UI/BasicFunctionality/__snapshots__/BasicFunctionality.test.js.snap @@ -22,8 +22,8 @@ exports[`BasicFunctionality should render correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", + "color": "#121314", + "fontFamily": "CentraNo1-Bold", "fontSize": 16, "fontWeight": "700", "letterSpacing": 0, @@ -38,7 +38,7 @@ exports[`BasicFunctionality should render correctly 1`] = ` onChange={[Function]} onResponderTerminationRequest={[Function]} onStartShouldSetResponder={[Function]} - onTintColor="#0376c9" + onTintColor="#4459ff" style={ [ { @@ -46,13 +46,13 @@ exports[`BasicFunctionality should render correctly 1`] = ` "width": 51, }, { - "backgroundColor": "#BBC0C566", + "backgroundColor": "#b7bbc866", "borderRadius": 16, }, ] } thumbTintColor="#ffffff" - tintColor="#BBC0C566" + tintColor="#b7bbc866" value={true} /> </View> @@ -60,12 +60,12 @@ exports[`BasicFunctionality should render correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -75,12 +75,12 @@ exports[`BasicFunctionality should render correctly 1`] = ` onPress={[Function]} style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#4459ff", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > diff --git a/app/components/UI/BiometryButton/BiometryButton.tsx b/app/components/UI/BiometryButton/BiometryButton.tsx index 6a279b28eb6a..b2fec5f1f237 100644 --- a/app/components/UI/BiometryButton/BiometryButton.tsx +++ b/app/components/UI/BiometryButton/BiometryButton.tsx @@ -6,6 +6,7 @@ import { useTheme } from '../../../util/theme'; import { BIOMETRY_TYPE } from 'react-native-keychain'; import AUTHENTICATION_TYPE from '../../../constants/userProperties'; import { createStyles } from './styles'; +import { LoginViewSelectors } from '../../../../e2e/selectors/wallet/LoginView.selectors'; /* eslint-disable @typescript-eslint/no-require-imports */ /* eslint-disable @typescript-eslint/no-var-requires */ @@ -14,12 +15,12 @@ const iosFaceId = require('../../../images/ios-face-id.png'); const androidFaceRecognition = require('../../../images/android-face-recognition.png'); const androidIris = require('../../../images/android-iris.png'); -type BiometryType = BIOMETRY_TYPE | AUTHENTICATION_TYPE; +type BiometryType = BIOMETRY_TYPE | AUTHENTICATION_TYPE | string | null; interface BiometryButtonProps { onPress: () => void; hidden: boolean; - biometryType: BiometryType; + biometryType: BiometryType | null; } const BiometryButton = ({ @@ -32,49 +33,71 @@ const BiometryButton = ({ const renderIcon = (type: BiometryType) => { if (Platform.OS === 'ios') { - if (type === 'TouchID') { + if (type === BIOMETRY_TYPE.TOUCH_ID) { return ( <Ionicons color={colors.text.default} size={28} style={styles.fixCenterIcon} name="ios-finger-print" + testID={LoginViewSelectors.IOS_TOUCH_ID_ICON} /> ); - } else if (type.includes(AUTHENTICATION_TYPE.PASSCODE)) { + } else if (type?.includes(AUTHENTICATION_TYPE.PASSCODE)) { return ( <Ionicons color={colors.text.default} size={28} style={styles.fixCenterIcon} name="ios-lock" + testID={LoginViewSelectors.IOS_PASSCODE_ICON} /> ); } - return <ImageRN style={styles.image} source={iosFaceId} />; + return ( + <ImageRN + style={styles.image} + source={iosFaceId} + testID={LoginViewSelectors.IOS_FACE_ID_ICON} + /> + ); } if (Platform.OS === 'android') { - if (type === 'Fingerprint') { + if (type === BIOMETRY_TYPE.FINGERPRINT) { return ( <MaterialIcon color={colors.text.default} style={styles.fixCenterIcon} size={28} name="fingerprint" + testID={LoginViewSelectors.ANDROID_FINGERPRINT_ICON} /> ); - } else if (type === 'Face') { - return <ImageRN style={styles.image} source={androidFaceRecognition} />; - } else if (type === 'Iris') { - return <ImageRN style={styles.image} source={androidIris} />; - } else if (type.includes(AUTHENTICATION_TYPE.PASSCODE)) { + } else if (type === BIOMETRY_TYPE.FACE) { + return ( + <ImageRN + style={styles.image} + source={androidFaceRecognition} + testID={LoginViewSelectors.ANDROID_FACE_ID_ICON} + /> + ); + } else if (type === BIOMETRY_TYPE.IRIS) { + return ( + <ImageRN + style={styles.image} + source={androidIris} + testID={LoginViewSelectors.ANDROID_IRIS_ICON} + /> + ); + } else if (type?.includes(AUTHENTICATION_TYPE.PASSCODE)) { return ( <MaterialIcon color={colors.text.default} style={styles.fixCenterIcon} size={28} name="lock" + testID={LoginViewSelectors.ANDROID_PASSCODE_ICON} /> ); } @@ -86,6 +109,7 @@ const BiometryButton = ({ style={styles.fixCenterIcon} size={28} name="ios-finger-print" + testID={LoginViewSelectors.FALLBACK_FINGERPRINT_ICON} /> ); }; @@ -93,8 +117,12 @@ const BiometryButton = ({ if (hidden) return null; return ( - <TouchableOpacity hitSlop={styles.hitSlop} onPress={onPress}> - {renderIcon(biometryType)} + <TouchableOpacity + testID={LoginViewSelectors.BIOMETRY_BUTTON} + hitSlop={styles.hitSlop} + onPress={onPress} + > + {biometryType ? renderIcon(biometryType) : null} </TouchableOpacity> ); }; diff --git a/app/components/UI/BiometryButton/__snapshots__/index.test.tsx.snap b/app/components/UI/BiometryButton/__snapshots__/index.test.tsx.snap deleted file mode 100644 index 155f8d93441b..000000000000 --- a/app/components/UI/BiometryButton/__snapshots__/index.test.tsx.snap +++ /dev/null @@ -1,26 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`BiometryButton should render correctly 1`] = ` -<TouchableOpacity - hitSlop={ - { - "bottom": 10, - "left": 10, - "right": 10, - "top": 10, - } - } - onPress={[Function]} -> - <Image - source={1} - style={ - { - "height": 24, - "tintColor": "#141618", - "width": 24, - } - } - /> -</TouchableOpacity> -`; diff --git a/app/components/UI/BiometryButton/index.test.tsx b/app/components/UI/BiometryButton/index.test.tsx index ee5828543589..d24c495213b7 100644 --- a/app/components/UI/BiometryButton/index.test.tsx +++ b/app/components/UI/BiometryButton/index.test.tsx @@ -1,18 +1,152 @@ import React from 'react'; import { render } from '@testing-library/react-native'; +import { Platform } from 'react-native'; +import { BIOMETRY_TYPE } from 'react-native-keychain'; import BiometryButton from './BiometryButton'; import AUTHENTICATION_TYPE from '../../../constants/userProperties'; +import { LoginViewSelectors } from '../../../../e2e/selectors/wallet/LoginView.selectors'; + +jest.mock('react-native', () => ({ + ...jest.requireActual('react-native'), + Platform: { OS: 'ios' }, +})); + +const mockOnPress = jest.fn(); describe('BiometryButton', () => { - it('should render correctly', () => { + it('should hide when hidden is true', () => { const { toJSON } = render( <BiometryButton - // eslint-disable-next-line no-empty-function - onPress={() => {}} + onPress={mockOnPress} + hidden + biometryType={BIOMETRY_TYPE.FACE} + />, + ); + + expect(toJSON()).toBeNull(); + }); + + describe('ios', () => { + beforeEach(() => { + Platform.OS = 'ios'; + }); + + it('should render touch id icon', () => { + const { getByTestId } = render( + <BiometryButton + onPress={mockOnPress} + hidden={false} + biometryType={BIOMETRY_TYPE.TOUCH_ID} + />, + ); + + const touchIdIcon = getByTestId(LoginViewSelectors.IOS_TOUCH_ID_ICON); + expect(touchIdIcon).toBeDefined(); + }); + + it('should render passcode icon', () => { + const { getByTestId } = render( + <BiometryButton + onPress={mockOnPress} + hidden={false} + biometryType={AUTHENTICATION_TYPE.PASSCODE} + />, + ); + + const passcodeIcon = getByTestId(LoginViewSelectors.IOS_PASSCODE_ICON); + expect(passcodeIcon).toBeDefined(); + }); + + it('should render fallback face id icon', () => { + const { getByTestId } = render( + <BiometryButton + onPress={mockOnPress} + hidden={false} + biometryType={AUTHENTICATION_TYPE.UNKNOWN} + />, + ); + + const fallbackFaceIdIcon = getByTestId( + LoginViewSelectors.IOS_FACE_ID_ICON, + ); + expect(fallbackFaceIdIcon).toBeDefined(); + }); + }); + + describe('android', () => { + beforeEach(() => { + Platform.OS = 'android'; + }); + + it('should render fingerprint icon', () => { + const { getByTestId } = render( + <BiometryButton + onPress={mockOnPress} + hidden={false} + biometryType={BIOMETRY_TYPE.FINGERPRINT} + />, + ); + + const fingerprintIcon = getByTestId( + LoginViewSelectors.ANDROID_FINGERPRINT_ICON, + ); + expect(fingerprintIcon).toBeDefined(); + }); + + it('should render face id icon', () => { + const { getByTestId } = render( + <BiometryButton + onPress={mockOnPress} + hidden={false} + biometryType={BIOMETRY_TYPE.FACE} + />, + ); + + const faceIdIcon = getByTestId(LoginViewSelectors.ANDROID_FACE_ID_ICON); + expect(faceIdIcon).toBeDefined(); + }); + + it('should render iris icon', () => { + const { getByTestId } = render( + <BiometryButton + onPress={mockOnPress} + hidden={false} + biometryType={BIOMETRY_TYPE.IRIS} + />, + ); + + const irisIcon = getByTestId(LoginViewSelectors.ANDROID_IRIS_ICON); + expect(irisIcon).toBeDefined(); + }); + + it('should render passcode icon', () => { + const { getByTestId } = render( + <BiometryButton + onPress={mockOnPress} + hidden={false} + biometryType={AUTHENTICATION_TYPE.PASSCODE} + />, + ); + + const passcodeIcon = getByTestId( + LoginViewSelectors.ANDROID_PASSCODE_ICON, + ); + expect(passcodeIcon).toBeDefined(); + }); + }); + + it('should render fallback fingerprint icon', () => { + const { getByTestId } = render( + <BiometryButton + onPress={mockOnPress} hidden={false} - biometryType={AUTHENTICATION_TYPE.BIOMETRIC} + biometryType={AUTHENTICATION_TYPE.UNKNOWN} />, ); - expect(toJSON()).toMatchSnapshot(); + + const fallbackFingerprintIcon = getByTestId( + LoginViewSelectors.FALLBACK_FINGERPRINT_ICON, + ); + expect(fallbackFingerprintIcon).toBeDefined(); }); }); diff --git a/app/components/UI/BlockingActionModal/__snapshots__/index.test.tsx.snap b/app/components/UI/BlockingActionModal/__snapshots__/index.test.tsx.snap index 80fd1c281a96..fdd42109d60b 100644 --- a/app/components/UI/BlockingActionModal/__snapshots__/index.test.tsx.snap +++ b/app/components/UI/BlockingActionModal/__snapshots__/index.test.tsx.snap @@ -50,7 +50,7 @@ exports[`BlockingActionModal should render correctly 1`] = ` onStartShouldSetResponder={[Function]} style={ { - "backgroundColor": "#00000099", + "backgroundColor": "#00000066", "bottom": 0, "height": 1334, "left": 0, diff --git a/app/components/UI/Bridge/_mocks_/bridgeControllerState.ts b/app/components/UI/Bridge/_mocks_/bridgeControllerState.ts new file mode 100644 index 000000000000..708ad69e4949 --- /dev/null +++ b/app/components/UI/Bridge/_mocks_/bridgeControllerState.ts @@ -0,0 +1,31 @@ +import { Hex } from '@metamask/utils'; + +export const mockChainId = '0x1' as Hex; + +export const defaultBridgeControllerState = { + bridgeFeatureFlags: { + extensionConfig: { + refreshRate: 30000, + maxRefreshCount: 2, + support: true, + chains: { + '0x1': { isActiveSrc: true, isActiveDst: true }, + }, + }, + mobileConfig: { + refreshRate: 30000, + maxRefreshCount: 2, + support: true, + chains: { + '0x1': { isActiveSrc: true, isActiveDst: true }, + }, + }, + }, + quoteRequest: {}, + quotes: [], + quotesInitialLoadTime: null, + quotesLastFetched: null, + quotesLoadingStatus: null, + quoteFetchError: null, + quotesRefreshCount: 0, +}; diff --git a/app/components/UI/Bridge/_mocks_/bridgeReducerState.ts b/app/components/UI/Bridge/_mocks_/bridgeReducerState.ts new file mode 100644 index 000000000000..13bfbe2ac17b --- /dev/null +++ b/app/components/UI/Bridge/_mocks_/bridgeReducerState.ts @@ -0,0 +1,30 @@ +import { ChainId } from '@metamask/controller-utils'; +import type { BridgeState } from '../../../../core/redux/slices/bridge'; + +export const mockBridgeReducerState: BridgeState = { + sourceAmount: undefined, + destAmount: undefined, + sourceToken: { + address: '0x0000000000000000000000000000000000000000', + decimals: 18, + image: 'https://example.com/image.png', + name: 'Ethereum', + symbol: 'ETH', + balance: '1.0', + balanceFiat: '$2000', + chainId: '0x1', + }, + destToken: { + address: '0x3c499c542cef5e3811e1192ce70d8cc03d5c3359', + decimals: 6, + image: 'https://example.com/image.png', + name: 'USD Coin', + symbol: 'USDC', + balance: '0', + balanceFiat: '$0', + chainId: ChainId['linea-mainnet'], + }, + selectedSourceChainIds: ['0x1'], + selectedDestChainId: '0x89', + slippage: '0.5', +}; diff --git a/app/components/UI/Bridge/_mocks_/initialState.ts b/app/components/UI/Bridge/_mocks_/initialState.ts new file mode 100644 index 000000000000..82c283d07697 --- /dev/null +++ b/app/components/UI/Bridge/_mocks_/initialState.ts @@ -0,0 +1,300 @@ +import { Hex } from '@metamask/utils'; +import { formatChainIdToCaip , BridgeFeatureFlagsKey } from '@metamask/bridge-controller'; + +const ethChainId = '0x1' as Hex; +const optimismChainId = '0xa' as Hex; +const mockAddress = '0x1234567890123456789012345678901234567890' as Hex; + +// Ethereum tokens +export const ethToken1Address = '0x0000000000000000000000000000000000000001' as Hex; +export const ethToken2Address = '0x0000000000000000000000000000000000000002' as Hex; + +// Optimism tokens +export const optimismToken1Address = '0x0000000000000000000000000000000000000003' as Hex; + +export const initialState = { + engine: { + backgroundState: { + BridgeController: { + bridgeFeatureFlags: { + [BridgeFeatureFlagsKey.MOBILE_CONFIG]: { + chains: { + [formatChainIdToCaip(ethChainId)]: { isActiveSrc: true, isActiveDest: true }, + [formatChainIdToCaip(optimismChainId)]: { isActiveSrc: true, isActiveDest: true }, + }, + }, + }, + }, + TokenBalancesController: { + tokenBalances: { + [mockAddress]: { + [ethChainId]: { + [ethToken1Address]: '0x0de0b6b3a7640000' as Hex, // 1 TOKEN1 + [ethToken2Address]: '0x1bc16d674ec80000' as Hex, // 2 HELLO + }, + [optimismChainId]: { + [optimismToken1Address]: '0x4563918244f40000' as Hex, // 5 FOO on Optimism + }, + }, + }, + }, + TokensController: { + allTokens: { + [ethChainId]: { + [mockAddress]: [ + { + address: ethToken1Address, + symbol: 'TOKEN1', + decimals: 18, + image: 'https://token1.com/logo.png', + name: 'Token One', + aggregators: ['1inch'], + }, + { + address: ethToken2Address, + symbol: 'HELLO', + decimals: 18, + image: 'https://token2.com/logo.png', + name: 'Hello Token', + aggregators: ['uniswap'], + }, + ], + }, + [optimismChainId]: { + [mockAddress]: [ + { + address: optimismToken1Address, + symbol: 'FOO', + decimals: 18, + image: 'https://token3.com/logo.png', + name: 'Foo Token', + aggregators: ['1inch'], + }, + ], + }, + }, + tokens: [ + { + address: ethToken1Address, + symbol: 'TOKEN1', + decimals: 18, + image: 'https://token1.com/logo.png', + name: 'Token One', + aggregators: ['1inch'], + }, + { + address: ethToken2Address, + symbol: 'HELLO', + decimals: 18, + image: 'https://token2.com/logo.png', + name: 'Hello Token', + aggregators: ['uniswap'], + }, + ], + }, + NetworkController: { + selectedNetworkClientId: 'ethNetworkClientId', + networksMetadata: { + mainnet: { + EIPS: { + 1559: true, + }, + }, + [optimismChainId]: { + EIPS: { + 1559: true, + }, + }, + }, + networkConfigurationsByChainId: { + [ethChainId]: { + chainId: ethChainId, + rpcEndpoints: [ + { + networkClientId: 'ethNetworkClientId', + }, + ], + defaultRpcEndpointIndex: 0, + nativeCurrency: 'ETH', + name: 'Ethereum Mainnet', + }, + [optimismChainId]: { + chainId: optimismChainId, + rpcEndpoints: [ + { + networkClientId: 'optimismNetworkClientId', + }, + ], + defaultRpcEndpointIndex: 0, + nativeCurrency: 'ETH', + name: 'Optimism', + }, + }, + providerConfig: { + chainId: ethChainId, + ticker: 'ETH', + rpcPrefs: { blockExplorerUrl: 'https://etherscan.io' }, + type: 'infura', + }, + }, + AccountTrackerController: { + accounts: { + [mockAddress]: { + balance: '0x29a2241af62c0000' as Hex, // 3 ETH + }, + }, + accountsByChainId: { + [ethChainId]: { + [mockAddress]: { + balance: '0x29a2241af62c0000' as Hex, // 3 ETH + }, + }, + [optimismChainId]: { + [mockAddress]: { + balance: '0x1158e460913d00000' as Hex, // 20 ETH on Optimism + }, + }, + }, + }, + MultichainNetworkController: { + isEvmSelected: true, + selectedMultichainNetworkChainId: undefined, + multichainNetworkConfigurationsByChainId: {}, + }, + AccountsController: { + internalAccounts: { + selectedAccount: 'account1', + accounts: { + account1: { + id: 'account1', + address: mockAddress, + name: 'Account 1', + }, + }, + }, + }, + CurrencyRateController: { + currentCurrency: 'USD', + currencyRates: { + ETH: { + conversionRate: 2000, // 1 ETH = $2000 + }, + }, + conversionRate: 2000, + }, + TokenRatesController: { + marketData: { + [ethChainId]: { + [ethToken1Address]: { + tokenAddress: ethToken1Address, + currency: 'ETH', + price: 10, // 1 TOKEN1 = 10 ETH + }, + [ethToken2Address]: { + tokenAddress: ethToken2Address, + currency: 'ETH', + price: 50, // 1 HELLO = 50 ETH + }, + }, + [optimismChainId]: { + [optimismToken1Address]: { + tokenAddress: optimismToken1Address, + currency: 'ETH', + price: 8, // 1 FOO = 8 ETH on Optimism + }, + }, + }, + }, + PreferencesController: { + tokenSortConfig: { + key: 'tokenFiatAmount', + order: 'dsc' as const, + }, + tokenNetworkFilter: { + [ethChainId]: 'true', + [optimismChainId]: 'true', + }, + }, + TokenListController: { + tokenList: { + [ethToken1Address]: { + name: 'Token One', + symbol: 'TOKEN1', + decimals: 18, + address: ethToken1Address, + iconUrl: 'https://token1.com/logo.png', + occurrences: 1, + aggregators: [], + }, + [ethToken2Address]: { + name: 'Hello Token', + symbol: 'HELLO', + decimals: 18, + address: ethToken2Address, + iconUrl: 'https://token2.com/logo.png', + }, + }, + tokensChainsCache: { + [ethChainId]: { + timestamp: Date.now(), + data: { + [ethToken1Address]: { + name: 'Token One', + symbol: 'TOKEN1', + decimals: 18, + address: ethToken1Address, + iconUrl: 'https://token1.com/logo.png', + occurrences: 1, + aggregators: [], + }, + [ethToken2Address]: { + name: 'Hello Token', + symbol: 'HELLO', + decimals: 18, + address: ethToken2Address, + iconUrl: 'https://token2.com/logo.png', + }, + }, + }, + }, + }, + SwapsController: { + chainCache: { + [ethChainId]: { + aggregatorMetadata: null, + tokens: null, + topAssets: [ + { + address: ethToken1Address, + symbol: 'TOKEN1', + }, + { + address: ethToken2Address, + symbol: 'HELLO', + }, + ], + aggregatorMetadataLastFetched: 0, + topAssetsLastFetched: 0, + tokensLastFetched: 0, + }, + [optimismChainId]: { + aggregatorMetadata: null, + tokens: null, + topAssets: null, + aggregatorMetadataLastFetched: 0, + topAssetsLastFetched: 0, + tokensLastFetched: 0, + }, + }, + }, + }, + }, + bridge: { + sourceAmount: undefined, + destAmount: undefined, + destChainId: undefined, + sourceToken: undefined, + destToken: undefined, + selectedSourceChainIds: undefined, + }, +}; diff --git a/app/components/UI/Bridge/_mocks_/mock-quotes-native-erc20.json b/app/components/UI/Bridge/_mocks_/mock-quotes-native-erc20.json new file mode 100644 index 000000000000..4c9c444d4fec --- /dev/null +++ b/app/components/UI/Bridge/_mocks_/mock-quotes-native-erc20.json @@ -0,0 +1,294 @@ +[ + { + "quote": { + "requestId": "381c23bc-e3e4-48fe-bc53-257471e388ad", + "srcChainId": 1, + "srcAsset": { + "chainId": 1, + "address": "0x0000000000000000000000000000000000000000", + "symbol": "ETH", + "name": "Ethereum", + "decimals": 18, + "icon": "https://media.socket.tech/tokens/all/ETH", + "logoURI": "https://media.socket.tech/tokens/all/ETH", + "chainAgnosticId": null + }, + "srcTokenAmount": "9912500000000000", + "destChainId": 137, + "destAsset": { + "chainId": 59144, + "address": "0x3c499c542cef5e3811e1192ce70d8cc03d5c3359", + "symbol": "USDC", + "name": "USD Coin", + "decimals": 6, + "icon": "https://media.socket.tech/tokens/all/USDC", + "logoURI": "https://media.socket.tech/tokens/all/USDC", + "chainAgnosticId": "USDC" + }, + "destTokenAmount": "24438902", + "feeData": { + "metabridge": { + "amount": "87500000000000", + "asset": { + "chainId": 10, + "address": "0x0000000000000000000000000000000000000000", + "symbol": "ETH", + "name": "Ethereum", + "decimals": 18, + "icon": "https://media.socket.tech/tokens/all/ETH", + "logoURI": "https://media.socket.tech/tokens/all/ETH", + "chainAgnosticId": null + } + } + }, + "bridgeId": "socket", + "bridges": ["across"], + "steps": [ + { + "action": "swap", + "srcChainId": 10, + "protocol": { + "name": "zerox", + "displayName": "0x", + "icon": "https://media.socket.tech/dexes/0x.svg" + }, + "srcAsset": { + "chainId": 10, + "address": "0x0000000000000000000000000000000000000000", + "symbol": "ETH", + "name": "Ethereum", + "decimals": 18, + "icon": "https://assets.polygon.technology/tokenAssets/eth.svg", + "logoURI": "https://assets.polygon.technology/tokenAssets/eth.svg", + "chainAgnosticId": null + }, + "destAsset": { + "chainId": 10, + "address": "0x0b2c639c533813f4aa9d7837caf62653d097ff85", + "symbol": "USDC", + "name": "USD Coin", + "decimals": 6, + "icon": "https://assets.polygon.technology/tokenAssets/usdc.svg", + "logoURI": "https://assets.polygon.technology/tokenAssets/usdc.svg", + "chainAgnosticId": null + }, + "srcAmount": "9912500000000000", + "destAmount": "24456223" + }, + { + "action": "bridge", + "srcChainId": 10, + "destChainId": 137, + "protocol": { + "name": "across", + "displayName": "Across", + "icon": "https://miro.medium.com/max/800/1*PN_F5yW4VMBgs_xX-fsyzQ.png" + }, + "srcAsset": { + "chainId": 10, + "address": "0x0b2c639c533813f4aa9d7837caf62653d097ff85", + "symbol": "USDC", + "name": "USD Coin", + "decimals": 6, + "icon": "https://assets.polygon.technology/tokenAssets/usdc.svg", + "logoURI": "https://assets.polygon.technology/tokenAssets/usdc.svg", + "chainAgnosticId": null + }, + "destAsset": { + "chainId": 137, + "address": "0x3c499c542cef5e3811e1192ce70d8cc03d5c3359", + "symbol": "USDC", + "name": "Native USD Coin (POS)", + "decimals": 6, + "icon": "https://assets.polygon.technology/tokenAssets/usdc.svg", + "logoURI": "https://assets.polygon.technology/tokenAssets/usdc.svg", + "chainAgnosticId": "USDC" + }, + "srcAmount": "24456223", + "destAmount": "24438902" + } + ], + "refuel": { + "action": "refuel", + "srcChainId": 10, + "destChainId": 137, + "protocol": { + "name": "refuel", + "displayName": "Refuel", + "icon": "" + }, + "srcAsset": { + "chainId": 10, + "address": "0x0000000000000000000000000000000000000000", + "symbol": "ETH", + "name": "Ether", + "decimals": 18 + }, + "destAsset": { + "chainId": 137, + "address": "0x0000000000000000000000000000000000000000", + "symbol": "MATIC", + "name": "Matic", + "decimals": 18 + }, + "srcAmount": "1000000000000000", + "destAmount": "4405865573929566208" + } + }, + "trade": { + "chainId": 10, + "to": "0xB90357f2b86dbfD59c3502215d4060f71DF8ca0e", + "from": "0x141d32a89a1e0a5ef360034a2f60a4b917c18838", + "value": "0x27147114878000", + "data": "0x3ce33bff00000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002714711487800000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000000f736f636b657441646170746572563200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f600000000000000000000000003a23f943181408eac424116af7b7790c94cb97a50000000000000000000000003a23f943181408eac424116af7b7790c94cb97a5000000000000000000000000000000000000000000000000000000000000008900000000000000000000000000000000000000000000000000000000000000000000000000000000000000003c499c542cef5e3811e1192ce70d8cc03d5c33590000000000000000000000000000000000000000000000000023375dc1560800000000000000000000000000000000000000000000000000000000000000014000000000000000000000000000000000000000000000000000004f94ae6af800000000000000000000000000716a8b9dd056055c84b7a2ba0a016099465a51870000000000000000000000000000000000000000000000000000000000000e2037c6145a0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000d64123506490000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000500000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000001960000000000000000000000000000000000000000000000000000000000000180000000000000000000000000000000000000000000000000000000000000019d0000000000000000000000000000000000000000000000000000000000000ac00000000000000000000000000000000000000000000000000000000000000084ad69fa4f00000000000000000000000000000000000000000000000000038d7ea4c68000000000000000000000000000141d32a89a1e0a5ef360034a2f60a4b917c1883800000000000000000000000000000000000000000000000000000000000000890000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000904ee8f0b86000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee0000000000000000000000000b2c639c533813f4aa9d7837caf62653d097ff850000000000000000000000000000000000000000000000000023375dc156080000000000000000000000000000000000000000000000000000000000000000c400000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000828415565b0000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee0000000000000000000000000b2c639c533813f4aa9d7837caf62653d097ff850000000000000000000000000000000000000000000000000023375dc15608000000000000000000000000000000000000000000000000000000000001734d0800000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000004e000000000000000000000000000000000000000000000000000000000000005e0000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000040000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee0000000000000000000000000000000000000000000000000023375dc15608000000000000000000000000000000000000000000000000000000000000000011000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000003600000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000042000000000000000000000000000000000000060000000000000000000000000b2c639c533813f4aa9d7837caf62653d097ff8500000000000000000000000000000000000000000000000000000000000001400000000000000000000000000000000000000000000000000000000000000320000000000000000000000000000000000000000000000000000000000000032000000000000000000000000000000000000000000000000000000000000002e00000000000000000000000000000000000000000000000000023375dc1560800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003200000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000012556e69737761705633000000000000000000000000000000000000000000000000000000000000000023375dc1560800000000000000000000000000000000000000000000000000000000000173dbd3000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000e592427a0aece92de3edee1f18e0157c0586156400000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000002b42000000000000000000000000000000000000060001f40b2c639c533813f4aa9d7837caf62653d097ff85000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000b2c639c533813f4aa9d7837caf62653d097ff850000000000000000000000000000000000000000000000000000000000008ecb000000000000000000000000ad01c20d5886137e056775af56915de824c8fce5000000000000000000000000000000000000000000000000000000000000000b000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000020000000000000000000000004200000000000000000000000000000000000006000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee0000000000000000000000000000000000000000000000000000000000000000869584cd0000000000000000000000001000000000000000000000000000000000000011000000000000000000000000000000000000000021582def464917822ff6092c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000260000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000018000000000000000000000000000000000000000000000000000000000000001e000000000000000000000000000000000000000000000000000000000000043a900000000000000000000000000000000000000000000000000000000000000c40000000000000000000000000000000000000000000000000000000000000002000000000000000000000000141d32a89a1e0a5ef360034a2f60a4b917c18838000000000000000000000000141d32a89a1e0a5ef360034a2f60a4b917c1883800000000000000000000000000000000000000000000000000000000000000020000000000000000000000000b2c639c533813f4aa9d7837caf62653d097ff850000000000000000000000003c499c542cef5e3811e1192ce70d8cc03d5c33590000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000174e7be000000000000000000000000000000000000000000000000000000000000008900000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000067041c47000000000000000000000000000000000000000000000000000000006704704d00000000000000000000000000000000000000000000000000000000d00dfeeddeadbeef765753be7f7a64d5509974b0d678e1e3149b02f41fec59a4aef7d9ac92ee5eeaf293cb28c2261e7fd322723a97cb83762f7302296636026e52849fdad0f9db6e1640f914660e6b13f5b1a29345344c8c5687abbf1b", + "gasLimit": 610414 + }, + "estimatedProcessingTimeInSeconds": 60 + }, + { + "quote": { + "requestId": "4277a368-40d7-4e82-aa67-74f29dc5f98a", + "srcChainId": 10, + "srcAsset": { + "chainId": 10, + "address": "0x0000000000000000000000000000000000000000", + "symbol": "ETH", + "name": "Ethereum", + "decimals": 18, + "icon": "https://media.socket.tech/tokens/all/ETH", + "logoURI": "https://media.socket.tech/tokens/all/ETH", + "chainAgnosticId": null + }, + "srcTokenAmount": "9912500000000000", + "destChainId": 137, + "destAsset": { + "chainId": 137, + "address": "0x3c499c542cef5e3811e1192ce70d8cc03d5c3359", + "symbol": "USDC", + "name": "Native USD Coin (POS)", + "decimals": 6, + "icon": "https://media.socket.tech/tokens/all/USDC", + "logoURI": "https://media.socket.tech/tokens/all/USDC", + "chainAgnosticId": "USDC" + }, + "destTokenAmount": "24256223", + "feeData": { + "metabridge": { + "amount": "87500000000000", + "asset": { + "chainId": 10, + "address": "0x0000000000000000000000000000000000000000", + "symbol": "ETH", + "name": "Ethereum", + "decimals": 18, + "icon": "https://media.socket.tech/tokens/all/ETH", + "logoURI": "https://media.socket.tech/tokens/all/ETH", + "chainAgnosticId": null + } + } + }, + "bridgeId": "socket", + "bridges": ["celercircle"], + "steps": [ + { + "action": "swap", + "srcChainId": 10, + "protocol": { + "name": "zerox", + "displayName": "0x", + "icon": "https://media.socket.tech/dexes/0x.svg" + }, + "srcAsset": { + "chainId": 10, + "address": "0x0000000000000000000000000000000000000000", + "symbol": "ETH", + "name": "Ethereum", + "decimals": 18, + "icon": "https://assets.polygon.technology/tokenAssets/eth.svg", + "logoURI": "https://assets.polygon.technology/tokenAssets/eth.svg", + "chainAgnosticId": null + }, + "destAsset": { + "chainId": 10, + "address": "0x0b2c639c533813f4aa9d7837caf62653d097ff85", + "symbol": "USDC", + "name": "USD Coin", + "decimals": 6, + "icon": "https://assets.polygon.technology/tokenAssets/usdc.svg", + "logoURI": "https://assets.polygon.technology/tokenAssets/usdc.svg", + "chainAgnosticId": null + }, + "srcAmount": "9912500000000000", + "destAmount": "24456223" + }, + { + "action": "bridge", + "srcChainId": 10, + "destChainId": 137, + "protocol": { + "name": "cctp", + "displayName": "Circle CCTP", + "icon": "https://movricons.s3.ap-south-1.amazonaws.com/CCTP.svg" + }, + "srcAsset": { + "chainId": 10, + "address": "0x0b2c639c533813f4aa9d7837caf62653d097ff85", + "symbol": "USDC", + "name": "USD Coin", + "decimals": 6, + "icon": "https://assets.polygon.technology/tokenAssets/usdc.svg", + "logoURI": "https://assets.polygon.technology/tokenAssets/usdc.svg", + "chainAgnosticId": null + }, + "destAsset": { + "chainId": 137, + "address": "0x3c499c542cef5e3811e1192ce70d8cc03d5c3359", + "symbol": "USDC", + "name": "Native USD Coin (POS)", + "decimals": 6, + "icon": "https://assets.polygon.technology/tokenAssets/usdc.svg", + "logoURI": "https://assets.polygon.technology/tokenAssets/usdc.svg", + "chainAgnosticId": "USDC" + }, + "srcAmount": "24456223", + "destAmount": "24256223" + } + ], + "refuel": { + "action": "refuel", + "srcChainId": 10, + "destChainId": 137, + "protocol": { + "name": "refuel", + "displayName": "Refuel", + "icon": "" + }, + "srcAsset": { + "chainId": 10, + "address": "0x0000000000000000000000000000000000000000", + "symbol": "ETH", + "name": "Ether", + "decimals": 18 + }, + "destAsset": { + "chainId": 137, + "address": "0x0000000000000000000000000000000000000000", + "symbol": "MATIC", + "name": "Matic", + "decimals": 18 + }, + "srcAmount": "1000000000000000", + "destAmount": "4405865573929566208" + } + }, + "trade": { + "chainId": 10, + "to": "0xB90357f2b86dbfD59c3502215d4060f71DF8ca0e", + "from": "0x141d32a89a1e0a5ef360034a2f60a4b917c18838", + "value": "0x27147114878000", + "data": "0x3ce33bff00000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002714711487800000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000000f736f636b657441646170746572563200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000dc00000000000000000000000003a23f943181408eac424116af7b7790c94cb97a50000000000000000000000003a23f943181408eac424116af7b7790c94cb97a5000000000000000000000000000000000000000000000000000000000000008900000000000000000000000000000000000000000000000000000000000000000000000000000000000000003c499c542cef5e3811e1192ce70d8cc03d5c33590000000000000000000000000000000000000000000000000023375dc1560800000000000000000000000000000000000000000000000000000000000000014000000000000000000000000000000000000000000000000000004f94ae6af800000000000000000000000000716a8b9dd056055c84b7a2ba0a016099465a51870000000000000000000000000000000000000000000000000000000000000c6437c6145a0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000bc4123506490000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000500000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000001960000000000000000000000000000000000000000000000000000000000000180000000000000000000000000000000000000000000000000000000000000018c0000000000000000000000000000000000000000000000000000000000000ac00000000000000000000000000000000000000000000000000000000000000084ad69fa4f00000000000000000000000000000000000000000000000000038d7ea4c68000000000000000000000000000141d32a89a1e0a5ef360034a2f60a4b917c1883800000000000000000000000000000000000000000000000000000000000000890000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000904ee8f0b86000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee0000000000000000000000000b2c639c533813f4aa9d7837caf62653d097ff850000000000000000000000000000000000000000000000000023375dc156080000000000000000000000000000000000000000000000000000000000000000c400000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000828415565b0000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee0000000000000000000000000b2c639c533813f4aa9d7837caf62653d097ff850000000000000000000000000000000000000000000000000023375dc15608000000000000000000000000000000000000000000000000000000000001734d0800000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000004e000000000000000000000000000000000000000000000000000000000000005e0000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000040000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee0000000000000000000000000000000000000000000000000023375dc15608000000000000000000000000000000000000000000000000000000000000000011000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000003600000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000042000000000000000000000000000000000000060000000000000000000000000b2c639c533813f4aa9d7837caf62653d097ff8500000000000000000000000000000000000000000000000000000000000001400000000000000000000000000000000000000000000000000000000000000320000000000000000000000000000000000000000000000000000000000000032000000000000000000000000000000000000000000000000000000000000002e00000000000000000000000000000000000000000000000000023375dc1560800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003200000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000012556e69737761705633000000000000000000000000000000000000000000000000000000000000000023375dc1560800000000000000000000000000000000000000000000000000000000000173dbd3000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000e592427a0aece92de3edee1f18e0157c0586156400000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000002b42000000000000000000000000000000000000060001f40b2c639c533813f4aa9d7837caf62653d097ff85000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000b2c639c533813f4aa9d7837caf62653d097ff850000000000000000000000000000000000000000000000000000000000008ecb000000000000000000000000ad01c20d5886137e056775af56915de824c8fce5000000000000000000000000000000000000000000000000000000000000000b000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000020000000000000000000000004200000000000000000000000000000000000006000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee0000000000000000000000000000000000000000000000000000000000000000869584cd00000000000000000000000010000000000000000000000000000000000000110000000000000000000000000000000000000000974132b87a5cb75e32f034280000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000b2c639c533813f4aa9d7837caf62653d097ff85000000000000000000000000141d32a89a1e0a5ef360034a2f60a4b917c18838000000000000000000000000000000000000000000000000000000000000000700000000000000000000000000000000000000000000000000000000000000890000000000000000000000000000000000000000000000000000000000030d4000000000000000000000000000000000000000000000000000000000000000c400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003f9e43204a24f476db20f2518722627a122d31a1bc7c63fc15412e6a327295a9460b76bea5bb53b1f73fa6a15811055f6bada592d2e9e6c8cf48a855ce6968951c", + "gasLimit": 664389 + }, + "estimatedProcessingTimeInSeconds": 15 + } +] diff --git a/app/components/UI/Bridge/components/BridgeDestNetworkSelector/BridgeDestNetworkSelector.test.tsx b/app/components/UI/Bridge/components/BridgeDestNetworkSelector/BridgeDestNetworkSelector.test.tsx index 0d859272ebe2..4c1abdd9b612 100644 --- a/app/components/UI/Bridge/components/BridgeDestNetworkSelector/BridgeDestNetworkSelector.test.tsx +++ b/app/components/UI/Bridge/components/BridgeDestNetworkSelector/BridgeDestNetworkSelector.test.tsx @@ -4,7 +4,10 @@ import { BridgeDestNetworkSelector } from '.'; import Routes from '../../../../../constants/navigation/Routes'; import { Hex } from '@metamask/utils'; import { setSelectedDestChainId } from '../../../../../core/redux/slices/bridge'; -import { BridgeFeatureFlagsKey } from '@metamask/bridge-controller'; +import { + BridgeFeatureFlagsKey, + formatChainIdToCaip, +} from '@metamask/bridge-controller'; const mockNavigate = jest.fn(); const mockGoBack = jest.fn(); @@ -39,9 +42,18 @@ describe('BridgeDestNetworkSelector', () => { bridgeFeatureFlags: { [BridgeFeatureFlagsKey.MOBILE_CONFIG]: { chains: { - '0x1': { isActiveSrc: true, isActiveDest: true }, - '0xa': { isActiveSrc: true, isActiveDest: true }, - '0x2105': { isActiveSrc: false, isActiveDest: true }, + [formatChainIdToCaip(mockChainId)]: { + isActiveSrc: true, + isActiveDest: true, + }, + [formatChainIdToCaip(optimismChainId)]: { + isActiveSrc: true, + isActiveDest: true, + }, + [formatChainIdToCaip(baseChainId)]: { + isActiveSrc: false, + isActiveDest: true, + }, }, }, }, @@ -82,7 +94,7 @@ describe('BridgeDestNetworkSelector', () => { { name: Routes.BRIDGE.MODALS.DEST_NETWORK_SELECTOR, }, - { state: initialState } + { state: initialState }, ); // Header should be visible @@ -102,7 +114,7 @@ describe('BridgeDestNetworkSelector', () => { { name: Routes.BRIDGE.MODALS.DEST_NETWORK_SELECTOR, }, - { state: initialState } + { state: initialState }, ); // Click on Optimism network @@ -122,7 +134,7 @@ describe('BridgeDestNetworkSelector', () => { { name: Routes.BRIDGE.MODALS.DEST_NETWORK_SELECTOR, }, - { state: initialState } + { state: initialState }, ); const closeButton = getByTestId('bridge-network-selector-close-button'); @@ -143,9 +155,18 @@ describe('BridgeDestNetworkSelector', () => { bridgeFeatureFlags: { [BridgeFeatureFlagsKey.MOBILE_CONFIG]: { chains: { - '0x1': { isActiveSrc: true, isActiveDest: false }, // Set Ethereum to inactive as dest - '0xa': { isActiveSrc: true, isActiveDest: true }, - '0x2105': { isActiveSrc: false, isActiveDest: true }, + [formatChainIdToCaip(mockChainId)]: { + isActiveSrc: true, + isActiveDest: false, + }, // Set Ethereum to inactive as dest + [formatChainIdToCaip(optimismChainId)]: { + isActiveSrc: true, + isActiveDest: true, + }, + [formatChainIdToCaip(baseChainId)]: { + isActiveSrc: false, + isActiveDest: true, + }, }, }, }, @@ -159,7 +180,7 @@ describe('BridgeDestNetworkSelector', () => { { name: Routes.BRIDGE.MODALS.DEST_NETWORK_SELECTOR, }, - { state: stateWithInactiveDest } + { state: stateWithInactiveDest }, ); // Ethereum should not be visible as it's not active as a destination diff --git a/app/components/UI/Bridge/components/BridgeDestNetworkSelector/__snapshots__/BridgeDestNetworkSelector.test.tsx.snap b/app/components/UI/Bridge/components/BridgeDestNetworkSelector/__snapshots__/BridgeDestNetworkSelector.test.tsx.snap index 5134452dbddf..f72813de9744 100644 --- a/app/components/UI/Bridge/components/BridgeDestNetworkSelector/__snapshots__/BridgeDestNetworkSelector.test.tsx.snap +++ b/app/components/UI/Bridge/components/BridgeDestNetworkSelector/__snapshots__/BridgeDestNetworkSelector.test.tsx.snap @@ -324,7 +324,7 @@ exports[`BridgeDestNetworkSelector renders with initial state and displays netwo style={ [ { - "backgroundColor": "#00000099", + "backgroundColor": "#00000066", "bottom": 0, "left": 0, "position": "absolute", @@ -371,7 +371,7 @@ exports[`BridgeDestNetworkSelector renders with initial state and displays netwo [ { "backgroundColor": "#ffffff", - "borderColor": "#BBC0C566", + "borderColor": "#b7bbc866", "borderTopLeftRadius": 8, "borderTopRightRadius": 8, "borderWidth": 1, @@ -379,7 +379,7 @@ exports[`BridgeDestNetworkSelector renders with initial state and displays netwo "maxHeight": 1334, "overflow": "hidden", "paddingBottom": 0, - "shadowColor": "#0000001A", + "shadowColor": "#0000001a", "shadowOffset": { "height": 2, "width": 0, @@ -409,7 +409,7 @@ exports[`BridgeDestNetworkSelector renders with initial state and displays netwo <View style={ { - "backgroundColor": "#BBC0C566", + "backgroundColor": "#b7bbc866", "borderRadius": 2, "height": 4, "width": 40, @@ -491,9 +491,9 @@ exports[`BridgeDestNetworkSelector renders with initial state and displays netwo accessibilityRole="text" style={ { - "color": "#141618", + "color": "#121314", "flex": 1, - "fontFamily": "EuclidCircularB-Bold", + "fontFamily": "CentraNo1-Bold", "fontSize": 18, "fontWeight": "700", "letterSpacing": 0, @@ -525,7 +525,7 @@ exports[`BridgeDestNetworkSelector renders with initial state and displays netwo testID="bridge-network-selector-close-button" > <SvgMock - color="#141618" + color="#121314" height={16} name="Close" style={ @@ -656,9 +656,9 @@ exports[`BridgeDestNetworkSelector renders with initial state and displays netwo accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 16, + "color": "#121314", + "fontFamily": "CentraNo1-Medium", + "fontSize": 18, "fontWeight": "500", "letterSpacing": 0, "lineHeight": 24, @@ -754,9 +754,9 @@ exports[`BridgeDestNetworkSelector renders with initial state and displays netwo accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 16, + "color": "#121314", + "fontFamily": "CentraNo1-Medium", + "fontSize": 18, "fontWeight": "500", "letterSpacing": 0, "lineHeight": 24, @@ -852,9 +852,9 @@ exports[`BridgeDestNetworkSelector renders with initial state and displays netwo accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 16, + "color": "#121314", + "fontFamily": "CentraNo1-Medium", + "fontSize": 18, "fontWeight": "500", "letterSpacing": 0, "lineHeight": 24, diff --git a/app/components/UI/Bridge/components/BridgeDestTokenSelector/BridgeDestTokenSelector.test.tsx b/app/components/UI/Bridge/components/BridgeDestTokenSelector/BridgeDestTokenSelector.test.tsx index 7d1dbbb5a730..d6fc8ecd2584 100644 --- a/app/components/UI/Bridge/components/BridgeDestTokenSelector/BridgeDestTokenSelector.test.tsx +++ b/app/components/UI/Bridge/components/BridgeDestTokenSelector/BridgeDestTokenSelector.test.tsx @@ -2,9 +2,8 @@ import { fireEvent, waitFor } from '@testing-library/react-native'; import { renderScreen } from '../../../../../util/test/renderWithProvider'; import { BridgeDestTokenSelector } from '.'; import Routes from '../../../../../constants/navigation/Routes'; -import { Hex } from '@metamask/utils'; import { setDestToken } from '../../../../../core/redux/slices/bridge'; -import { BridgeFeatureFlagsKey } from '@metamask/bridge-controller'; +import { initialState, ethToken2Address } from '../../_mocks_/initialState'; const mockNavigate = jest.fn(); const mockGoBack = jest.fn(); @@ -27,243 +26,57 @@ jest.mock('../../../../../core/redux/slices/bridge', () => { }; }); -describe('BridgeDestTokenSelector', () => { - const mockAddress = '0x1234567890123456789012345678901234567890' as Hex; - const mockSourceChainId = '0x1' as Hex; - const mockDestChainId = '0xa' as Hex; - const token1Address = '0x0000000000000000000000000000000000000001' as Hex; - const token2Address = '0x0000000000000000000000000000000000000002' as Hex; - - const initialState = { - engine: { - backgroundState: { - BridgeController: { - bridgeFeatureFlags: { - [BridgeFeatureFlagsKey.MOBILE_CONFIG]: { - chains: { - '0x1': { isActiveSrc: true, isActiveDest: true }, - '0xa': { isActiveSrc: true, isActiveDest: true }, - }, - }, - }, - }, - TokenBalancesController: { - tokenBalances: { - [mockAddress]: { - [mockSourceChainId]: { - [token1Address]: '0x0de0b6b3a7640000' as Hex, // 1 TOKEN1 - }, - [mockDestChainId]: { - [token2Address]: '0x1bc16d674ec80000' as Hex, // 2 HELLO on Optimism - }, - }, - }, - }, - TokensController: { - allTokens: { - [mockSourceChainId]: { - [mockAddress]: [ - { - address: token1Address, - symbol: 'TOKEN1', - decimals: 18, - image: 'https://token1.com/logo.png', - name: 'Token One', - aggregators: ['1inch'], - }, - ], - }, - [mockDestChainId]: { - [mockAddress]: [ - { - address: token2Address, - symbol: 'HELLO', - decimals: 18, - image: 'https://token2.com/logo.png', - name: 'Hello Token', - aggregators: ['uniswap'], - }, - ], - }, - }, - tokens: [ - { - address: token1Address, - symbol: 'TOKEN1', - decimals: 18, - image: 'https://token1.com/logo.png', - name: 'Token One', - aggregators: ['1inch'], - }, - { - address: token2Address, - symbol: 'HELLO', - decimals: 18, - image: 'https://token2.com/logo.png', - name: 'Hello Token', - aggregators: ['uniswap'], - }, - ], - }, - NetworkController: { - selectedNetworkClientId: 'selectedNetworkClientId', - networksMetadata: { - mainnet: { - EIPS: { - 1559: true, - }, - }, - '0xa': { - EIPS: { - 1559: true, - }, - }, - }, - networkConfigurationsByChainId: { - [mockSourceChainId]: { - chainId: mockSourceChainId, - rpcEndpoints: [ - { - networkClientId: 'selectedNetworkClientId', - }, - ], - defaultRpcEndpointIndex: 0, - nativeCurrency: 'ETH', - name: 'Ethereum', - }, - [mockDestChainId]: { - chainId: mockDestChainId, - rpcEndpoints: [ - { - networkClientId: 'optimismNetworkClientId', - }, - ], - defaultRpcEndpointIndex: 0, - nativeCurrency: 'ETH', - name: 'Optimism', - }, - }, - providerConfig: { - chainId: mockSourceChainId, - ticker: 'ETH', - rpcPrefs: { blockExplorerUrl: 'https://etherscan.io' }, - type: 'infura', - }, - }, - AccountTrackerController: { - accounts: { - [mockAddress]: { - balance: '0x29a2241af62c0000' as Hex, // 3 ETH - }, - }, - accountsByChainId: { - [mockSourceChainId]: { - [mockAddress]: { - balance: '0x29a2241af62c0000' as Hex, // 3 ETH - }, - }, - [mockDestChainId]: { - [mockAddress]: { - balance: '0x1158e460913d00000' as Hex, // 20 ETH on Optimism - }, - }, - }, - }, - MultichainNetworkController: { - isEvmSelected: true, - selectedMultichainNetworkChainId: undefined, - multichainNetworkConfigurationsByChainId: {}, - }, - AccountsController: { - internalAccounts: { - selectedAccount: 'account1', - accounts: { - account1: { - id: 'account1', - address: mockAddress, - name: 'Account 1', - }, - }, - }, - }, - CurrencyRateController: { - currentCurrency: 'USD', - currencyRates: { - ETH: { - conversionRate: 2000, // 1 ETH = $2000 - }, - }, - conversionRate: 2000, - }, - TokenRatesController: { - marketData: { - [mockSourceChainId]: { - [token1Address]: { - tokenAddress: token1Address, - currency: 'ETH', - price: 10, // 1 TOKEN1 = 10 ETH - }, - }, - [mockDestChainId]: { - [token2Address]: { - tokenAddress: token2Address, - currency: 'ETH', - price: 5, // 1 TOKEN2 = 5 ETH on Optimism - }, - }, - }, - }, - PreferencesController: { - tokenSortConfig: { - key: 'tokenFiatAmount', - order: 'dsc' as const, - }, + + +jest.mock('../../../../Views/NetworkSelector/useSwitchNetworks', () => ({ + useSwitchNetworks: () => ({ + onSetRpcTarget: jest.fn(), + onNetworkChange: jest.fn(), + }), +})); + +jest.mock('../../../../../core/Engine', () => ({ + context: { + SwapsController: { + fetchTopAssetsWithCache: jest.fn().mockReturnValue([ + { + address: '0x0000000000000000000000000000000000000001', + symbol: 'TOKEN1', }, - TokenListController: { - tokenList: { - [token1Address]: { - name: 'Token One', - symbol: 'TOKEN1', - decimals: 18, - address: token1Address, - iconUrl: 'https://token1.com/logo.png', - occurrences: 1, - aggregators: [], - }, - [token2Address]: { - name: 'Hello Token', - symbol: 'HELLO', - decimals: 18, - address: token2Address, - iconUrl: 'https://token2.com/logo.png', - }, - }, - tokensChainsCache: { - [mockDestChainId]: { - timestamp: Date.now(), - data: { - [token2Address]: { - name: 'Hello Token', - symbol: 'HELLO', - decimals: 18, - address: token2Address, - iconUrl: 'https://token2.com/logo.png', - }, - }, - }, - }, + { + address: '0x0000000000000000000000000000000000000002', + symbol: 'HELLO', }, - }, + ]), }, - bridge: { - sourceAmount: undefined, - destAmount: undefined, - sourceToken: undefined, - destToken: undefined, - selectedSourceChainIds: [mockSourceChainId, mockDestChainId], - selectedDestChainId: mockDestChainId, + }, +})); + +jest.mock('@metamask/bridge-controller', () => ({ + ...jest.requireActual('@metamask/bridge-controller'), + fetchBridgeTokens: jest.fn().mockReturnValue({ + '0x0000000000000000000000000000000000000001': { + address: '0x0000000000000000000000000000000000000001', + symbol: 'TOKEN1', + name: 'Token One', + decimals: 18, + chainId: '0x1', + iconUrl: 'https://token1.com/logo.png', }, - }; + '0x0000000000000000000000000000000000000002': { + address: '0x0000000000000000000000000000000000000002', + symbol: 'HELLO', + name: 'Hello Token', + decimals: 18, + chainId: '0x1', + iconUrl: 'https://token2.com/logo.png', + }, + }), +})); + +describe('BridgeDestTokenSelector', () => { + // Fix ReferenceError: You are trying to access a property or method of the Jest environment after it has been torn down. + jest.useFakeTimers(); beforeEach(() => { jest.clearAllMocks(); @@ -275,7 +88,7 @@ describe('BridgeDestTokenSelector', () => { { name: Routes.BRIDGE.MODALS.DEST_TOKEN_SELECTOR, }, - { state: initialState } + { state: initialState }, ); // Header should be visible @@ -295,7 +108,7 @@ describe('BridgeDestTokenSelector', () => { { name: Routes.BRIDGE.MODALS.DEST_TOKEN_SELECTOR, }, - { state: initialState } + { state: initialState }, ); await waitFor(() => { @@ -304,10 +117,9 @@ describe('BridgeDestTokenSelector', () => { }); expect(setDestToken).toHaveBeenCalledWith(expect.objectContaining({ - address: token2Address, - aggregators: ['uniswap'], + address: ethToken2Address, balance: '2', - chainId: mockDestChainId, + chainId: '0x1', decimals: 18, image: 'https://token2.com/logo.png', name: 'Hello Token', @@ -322,11 +134,12 @@ describe('BridgeDestTokenSelector', () => { { name: Routes.BRIDGE.MODALS.DEST_TOKEN_SELECTOR, }, - { state: initialState } + { state: initialState }, ); await waitFor(() => { - expect(getByText('ETH')).toBeTruthy(); + expect(getByText('HELLO')).toBeTruthy(); + expect(getByText('TOKEN1')).toBeTruthy(); }); // Get the info button using its test ID @@ -340,22 +153,15 @@ describe('BridgeDestTokenSelector', () => { // Verify navigation to Asset screen with the correct token params expect(mockNavigate).toHaveBeenCalledWith('Asset', expect.objectContaining({ - address: '0x0000000000000000000000000000000000000000', - aggregators: [], - balance: '20', - balanceFiat: '$40000', - chainId: '0xa', + address: ethToken2Address, + balance: '2', + balanceFiat: '$200000', + chainId: '0x1', decimals: 18, - image: '', - isETH: true, - isNative: true, - isStaked: false, - logo: '../images/eth-logo-new.png', - name: 'Ethereum', - stakedBalance: '0x0', - symbol: 'ETH', - ticker: 'ETH', - tokenFiatAmount: 40000 + image: 'https://token2.com/logo.png', + name: 'Hello Token', + symbol: 'HELLO', + tokenFiatAmount: 200000 })); }); @@ -365,7 +171,7 @@ describe('BridgeDestTokenSelector', () => { { name: Routes.BRIDGE.MODALS.DEST_TOKEN_SELECTOR, }, - { state: initialState } + { state: initialState }, ); const closeButton = getByTestId('bridge-token-selector-close-button'); @@ -380,7 +186,7 @@ describe('BridgeDestTokenSelector', () => { { name: Routes.BRIDGE.MODALS.DEST_TOKEN_SELECTOR, }, - { state: initialState } + { state: initialState }, ); // Initially all tokens should be visible @@ -412,7 +218,7 @@ describe('BridgeDestTokenSelector', () => { { name: Routes.BRIDGE.MODALS.DEST_TOKEN_SELECTOR, }, - { state: initialState } + { state: initialState }, ); const searchInput = getByTestId('bridge-token-search-input'); @@ -429,7 +235,7 @@ describe('BridgeDestTokenSelector', () => { { name: Routes.BRIDGE.MODALS.DEST_TOKEN_SELECTOR, }, - { state: initialState } + { state: initialState }, ); const seeAllButton = getByText('See all'); diff --git a/app/components/UI/Bridge/components/BridgeDestTokenSelector/__snapshots__/BridgeDestTokenSelector.test.tsx.snap b/app/components/UI/Bridge/components/BridgeDestTokenSelector/__snapshots__/BridgeDestTokenSelector.test.tsx.snap index db979ebdf93f..dd38703aa33f 100644 --- a/app/components/UI/Bridge/components/BridgeDestTokenSelector/__snapshots__/BridgeDestTokenSelector.test.tsx.snap +++ b/app/components/UI/Bridge/components/BridgeDestTokenSelector/__snapshots__/BridgeDestTokenSelector.test.tsx.snap @@ -324,7 +324,7 @@ exports[`BridgeDestTokenSelector renders with initial state and displays tokens style={ [ { - "backgroundColor": "#00000099", + "backgroundColor": "#00000066", "bottom": 0, "left": 0, "position": "absolute", @@ -371,7 +371,7 @@ exports[`BridgeDestTokenSelector renders with initial state and displays tokens [ { "backgroundColor": "#ffffff", - "borderColor": "#BBC0C566", + "borderColor": "#b7bbc866", "borderTopLeftRadius": 8, "borderTopRightRadius": 8, "borderWidth": 1, @@ -379,7 +379,7 @@ exports[`BridgeDestTokenSelector renders with initial state and displays tokens "maxHeight": 1334, "overflow": "hidden", "paddingBottom": 0, - "shadowColor": "#0000001A", + "shadowColor": "#0000001a", "shadowOffset": { "height": 2, "width": 0, @@ -409,7 +409,7 @@ exports[`BridgeDestTokenSelector renders with initial state and displays tokens <View style={ { - "backgroundColor": "#BBC0C566", + "backgroundColor": "#b7bbc866", "borderRadius": 2, "height": 4, "width": 40, @@ -491,9 +491,9 @@ exports[`BridgeDestTokenSelector renders with initial state and displays tokens accessibilityRole="text" style={ { - "color": "#141618", + "color": "#121314", "flex": 1, - "fontFamily": "EuclidCircularB-Bold", + "fontFamily": "CentraNo1-Bold", "fontSize": 18, "fontWeight": "700", "letterSpacing": 0, @@ -525,7 +525,7 @@ exports[`BridgeDestTokenSelector renders with initial state and displays tokens testID="bridge-token-selector-close-button" > <SvgMock - color="#141618" + color="#121314" height={16} name="Close" style={ @@ -597,7 +597,7 @@ exports[`BridgeDestTokenSelector renders with initial state and displays tokens "alignItems": "center", "alignSelf": "flex-start", "backgroundColor": "transparent", - "borderColor": "#BBC0C566", + "borderColor": "#b7bbc866", "borderRadius": 20, "borderWidth": 1, "flexDirection": "row", @@ -611,19 +611,19 @@ exports[`BridgeDestTokenSelector renders with initial state and displays tokens accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > See all </Text> <SvgMock - color="#0376c9" + color="#4459ff" height={16} name="ArrowDown" style={ @@ -647,8 +647,8 @@ exports[`BridgeDestTokenSelector renders with initial state and displays tokens { "alignItems": "center", "alignSelf": "flex-start", - "backgroundColor": "transparent", - "borderColor": "#BBC0C566", + "backgroundColor": "#4459ff1a", + "borderColor": "#4459ff1a", "borderRadius": 20, "borderWidth": 1, "flexDirection": "row", @@ -673,16 +673,42 @@ exports[`BridgeDestTokenSelector renders with initial state and displays tokens ] } > + <View + style={ + { + "alignItems": "center", + "backgroundColor": "#ffffff", + "borderRadius": 8, + "height": 16, + "justifyContent": "center", + "overflow": "hidden", + "width": 16, + } + } + > + <Image + onError={[Function]} + resizeMode="contain" + source={1} + style={ + { + "height": 16, + "width": 16, + } + } + testID="network-avatar-image" + /> + </View> <Text accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -701,8 +727,8 @@ exports[`BridgeDestTokenSelector renders with initial state and displays tokens { "alignItems": "center", "alignSelf": "flex-start", - "backgroundColor": "#0376C91A", - "borderColor": "#0376C91A", + "backgroundColor": "transparent", + "borderColor": "#b7bbc866", "borderRadius": 20, "borderWidth": 1, "flexDirection": "row", @@ -727,42 +753,16 @@ exports[`BridgeDestTokenSelector renders with initial state and displays tokens ] } > - <View - style={ - { - "alignItems": "center", - "backgroundColor": "#ffffff", - "borderRadius": 8, - "height": 16, - "justifyContent": "center", - "overflow": "hidden", - "width": 16, - } - } - > - <Image - onError={[Function]} - resizeMode="contain" - source={1} - style={ - { - "height": 16, - "width": 16, - } - } - testID="network-avatar-image" - /> - </View> <Text accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -777,7 +777,7 @@ exports[`BridgeDestTokenSelector renders with initial state and displays tokens { "alignItems": "center", "backgroundColor": "#ffffff", - "borderColor": "#848c96", + "borderColor": "#b7bbc8", "borderRadius": 8, "borderWidth": 1, "flexDirection": "row", @@ -797,7 +797,7 @@ exports[`BridgeDestTokenSelector renders with initial state and displays tokens testID="textfield-startacccessory" > <SvgMock - color="#141618" + color="#121314" height={16} name="Search" style={ @@ -828,9 +828,9 @@ exports[`BridgeDestTokenSelector renders with initial state and displays tokens "backgroundColor": "#ffffff", "borderColor": "transparent", "borderWidth": 1, - "color": "#141618", - "fontFamily": "Euclid Circular B", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "height": 24, "letterSpacing": 0, @@ -845,58 +845,29 @@ exports[`BridgeDestTokenSelector renders with initial state and displays tokens </View> </View> <RCTScrollView - ListEmptyComponent={ - <ForwardRef - style={ - { - "marginHorizontal": 24, - "marginVertical": 10, - } - } - > - <Text - color="Alternative" - > - No tokens match “” - </Text> - </ForwardRef> - } + ListEmptyComponent={[Function]} data={ [ - { - "address": "0x0000000000000000000000000000000000000000", - "aggregators": [], - "balance": "20", - "balanceFiat": "$40000", - "chainId": "0xa", - "decimals": 18, - "image": "", - "isETH": true, - "isNative": true, - "isStaked": false, - "logo": "../images/eth-logo-new.png", - "name": "Ethereum", - "stakedBalance": "0x0", - "symbol": "ETH", - "ticker": "ETH", - "tokenFiatAmount": 40000, - }, { "address": "0x0000000000000000000000000000000000000002", - "aggregators": [ - "uniswap", - ], "balance": "2", - "balanceFiat": "$20000", - "chainId": "0xa", + "balanceFiat": "$200000", + "chainId": "0x1", "decimals": 18, "image": "https://token2.com/logo.png", - "isETH": false, - "isNative": false, - "isStaked": false, "name": "Hello Token", "symbol": "HELLO", - "token": "Hello Token", + "tokenFiatAmount": 200000, + }, + { + "address": "0x0000000000000000000000000000000000000001", + "balance": "1", + "balanceFiat": "$20000", + "chainId": "0x1", + "decimals": 18, + "image": "https://token1.com/logo.png", + "name": "Token One", + "symbol": "TOKEN1", "tokenFiatAmount": 20000, }, ] @@ -924,15 +895,11 @@ exports[`BridgeDestTokenSelector renders with initial state and displays tokens style={null} > <View - alignItems="center" flexDirection="row" - justifyContent="space-between" style={ [ { - "alignItems": "center", "flexDirection": "row", - "justifyContent": "space-between", }, { "backgroundColor": "#ffffff", @@ -942,7 +909,6 @@ exports[`BridgeDestTokenSelector renders with initial state and displays tokens } > <TouchableOpacity - onLongPress={[Function]} onPress={[Function]} style={ { @@ -953,215 +919,202 @@ exports[`BridgeDestTokenSelector renders with initial state and displays tokens "paddingVertical": 10, } } - testID="asset-ETH" + testID="asset-HELLO" > <View - onLayout={[Function]} + alignItems="center" + flexDirection="row" + gap={4} style={ - { - "alignSelf": "flex-start", - "position": "relative", - } + [ + { + "alignItems": "center", + "flexDirection": "row", + "gap": 4, + }, + undefined, + ] } - testID="badge-wrapper-badge" > - <View> - <View - useNativeDriver={true} - > - <Image - fadeIn={true} - onError={[Function]} - onLoadEnd={[Function]} - source={ - { - "uri": "", - } - } - style={ - [ - { - "borderRadius": 12, - "height": 24, - "width": 24, - }, - undefined, - false, - false, - { - "height": 40, - "width": 40, - }, - ] - } - testID="network-logo-ETH" - /> + <View + onLayout={[Function]} + style={ + { + "alignSelf": undefined, + "position": "relative", + } + } + testID="badge-wrapper-badge" + > + <View> <View - collapsable={false} style={ { - "bottom": 0, - "left": 0, - "opacity": 1, - "position": "absolute", - "right": 0, - "top": 0, + "backgroundColor": "#ffffff", + "borderRadius": 16, + "height": 32, + "overflow": "hidden", + "width": 32, } } > - <View + <Image + onError={[Function]} + resizeMode="contain" + source={ + { + "uri": "https://token2.com/logo.png", + } + } style={ - [ - { - "borderRadius": 12, - "height": 40, - "width": 40, - }, - { - "backgroundColor": "#eee", - }, - undefined, - ] + { + "flex": 1, + "height": undefined, + "width": undefined, + } } + testID="token-avatar-image" /> </View> </View> - </View> - <View - style={ - { - "alignItems": "center", - "aspectRatio": 1, - "bottom": 0, - "height": 0, - "justifyContent": "center", - "position": "absolute", - "right": 0, - "transform": [ - { - "translateX": 0, - }, - { - "translateY": 0, - }, - ], - } - } - > <View - onLayout={[Function]} style={ { "alignItems": "center", "aspectRatio": 1, - "height": "50%", + "bottom": 0, + "height": 0, "justifyContent": "center", - "maxHeight": 24, - "minHeight": 8, - "opacity": 0, + "position": "absolute", + "right": 0, + "transform": [ + { + "translateX": 0, + }, + { + "translateY": 0, + }, + ], } } - testID="badgenetwork" > <View + onLayout={[Function]} style={ { "alignItems": "center", - "backgroundColor": "#ffffff", - "borderColor": "#ffffff", - "borderRadius": 8, - "borderWidth": 2, - "height": 32, + "aspectRatio": 1, + "height": "50%", "justifyContent": "center", - "overflow": "hidden", - "shadowColor": "#0000001A", - "shadowOffset": { - "height": 2, - "width": 0, - }, - "shadowOpacity": 1, - "shadowRadius": 4, - "transform": [ - { - "scale": 1, - }, - ], - "width": 32, + "maxHeight": 24, + "minHeight": 8, + "opacity": 0, } } + testID="badgenetwork" > - <Image - onError={[Function]} - resizeMode="contain" - source={1} + <View style={ { + "alignItems": "center", + "backgroundColor": "#ffffff", + "borderColor": "#ffffff", + "borderRadius": 8, + "borderWidth": 2, "height": 32, + "justifyContent": "center", + "overflow": "hidden", + "shadowColor": "#0000001a", + "shadowOffset": { + "height": 2, + "width": 0, + }, + "shadowOpacity": 1, + "shadowRadius": 4, + "transform": [ + { + "scale": 1, + }, + ], "width": 32, } } - testID="network-avatar-image" - /> + > + <Image + onError={[Function]} + resizeMode="contain" + source={1} + style={ + { + "height": 32, + "width": 32, + } + } + testID="network-avatar-image" + /> + </View> </View> </View> </View> - </View> - <View - flexDirection="column" - gap={4} - style={ - [ - { - "flexDirection": "column", - "gap": 4, - }, - { - "flex": 1, - "marginLeft": 8, - }, - ] - } - > - <Text - accessibilityRole="text" + <View + flexDirection="column" + gap={4} style={ - { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 16, - "fontWeight": "500", - "letterSpacing": 0, - "lineHeight": 24, - } + [ + { + "flexDirection": "column", + "gap": 4, + }, + { + "flex": 1, + "marginLeft": 8, + }, + ] } > - ETH - </Text> - <Text - accessibilityRole="text" - style={ - { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, - "fontWeight": "400", - "letterSpacing": 0, - "lineHeight": 22, + <Text + accessibilityRole="text" + style={ + { + "color": "#121314", + "fontFamily": "CentraNo1-Medium", + "fontSize": 18, + "fontWeight": "500", + "letterSpacing": 0, + "lineHeight": 24, + } + } + > + HELLO + </Text> + <Text + accessibilityRole="text" + style={ + { + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, + "fontWeight": "400", + "letterSpacing": 0, + "lineHeight": 24, + } } + > + Hello Token + </Text> + </View> + <View + style={ + [ + {}, + { + "alignItems": "flex-end", + "flex": 1, + }, + ] } - > - Ethereum - </Text> + /> </View> - <View - style={ - { - "alignItems": "flex-end", - "alignSelf": "flex-end", - "flex": 1, - } - } - /> </TouchableOpacity> <TouchableOpacity accessible={true} @@ -1184,7 +1137,7 @@ exports[`BridgeDestTokenSelector renders with initial state and displays tokens testID="token-info-button" > <SvgMock - color="#6a737d" + color="#686e7d" height={20} name="Info" style={ @@ -1204,15 +1157,11 @@ exports[`BridgeDestTokenSelector renders with initial state and displays tokens style={null} > <View - alignItems="center" flexDirection="row" - justifyContent="space-between" style={ [ { - "alignItems": "center", "flexDirection": "row", - "justifyContent": "space-between", }, { "backgroundColor": "#ffffff", @@ -1222,7 +1171,6 @@ exports[`BridgeDestTokenSelector renders with initial state and displays tokens } > <TouchableOpacity - onLongPress={[Function]} onPress={[Function]} style={ { @@ -1233,184 +1181,202 @@ exports[`BridgeDestTokenSelector renders with initial state and displays tokens "paddingVertical": 10, } } - testID="asset-HELLO" + testID="asset-TOKEN1" > <View - onLayout={[Function]} + alignItems="center" + flexDirection="row" + gap={4} style={ - { - "alignSelf": "flex-start", - "position": "relative", - } + [ + { + "alignItems": "center", + "flexDirection": "row", + "gap": 4, + }, + undefined, + ] } - testID="badge-wrapper-badge" > - <View> - <View - style={ - { - "backgroundColor": "#ffffff", - "borderRadius": 16, - "height": 32, - "overflow": "hidden", - "width": 32, - } - } - > - <Image - onError={[Function]} - resizeMode="contain" - source={ - { - "uri": "https://token2.com/logo.png", - } - } - style={ - { - "flex": 1, - "height": undefined, - "width": undefined, - } - } - testID="token-avatar-image" - /> - </View> - </View> <View + onLayout={[Function]} style={ { - "alignItems": "center", - "aspectRatio": 1, - "bottom": 0, - "height": 0, - "justifyContent": "center", - "position": "absolute", - "right": 0, - "transform": [ - { - "translateX": 0, - }, - { - "translateY": 0, - }, - ], + "alignSelf": undefined, + "position": "relative", } } + testID="badge-wrapper-badge" > + <View> + <View + style={ + { + "backgroundColor": "#ffffff", + "borderRadius": 16, + "height": 32, + "overflow": "hidden", + "width": 32, + } + } + > + <Image + onError={[Function]} + resizeMode="contain" + source={ + { + "uri": "https://token1.com/logo.png", + } + } + style={ + { + "flex": 1, + "height": undefined, + "width": undefined, + } + } + testID="token-avatar-image" + /> + </View> + </View> <View - onLayout={[Function]} style={ { "alignItems": "center", "aspectRatio": 1, - "height": "50%", + "bottom": 0, + "height": 0, "justifyContent": "center", - "maxHeight": 24, - "minHeight": 8, - "opacity": 0, + "position": "absolute", + "right": 0, + "transform": [ + { + "translateX": 0, + }, + { + "translateY": 0, + }, + ], } } - testID="badgenetwork" > <View + onLayout={[Function]} style={ { "alignItems": "center", - "backgroundColor": "#ffffff", - "borderColor": "#ffffff", - "borderRadius": 8, - "borderWidth": 2, - "height": 32, + "aspectRatio": 1, + "height": "50%", "justifyContent": "center", - "overflow": "hidden", - "shadowColor": "#0000001A", - "shadowOffset": { - "height": 2, - "width": 0, - }, - "shadowOpacity": 1, - "shadowRadius": 4, - "transform": [ - { - "scale": 1, - }, - ], - "width": 32, + "maxHeight": 24, + "minHeight": 8, + "opacity": 0, } } + testID="badgenetwork" > - <Image - onError={[Function]} - resizeMode="contain" - source={1} + <View style={ { + "alignItems": "center", + "backgroundColor": "#ffffff", + "borderColor": "#ffffff", + "borderRadius": 8, + "borderWidth": 2, "height": 32, + "justifyContent": "center", + "overflow": "hidden", + "shadowColor": "#0000001a", + "shadowOffset": { + "height": 2, + "width": 0, + }, + "shadowOpacity": 1, + "shadowRadius": 4, + "transform": [ + { + "scale": 1, + }, + ], "width": 32, } } - testID="network-avatar-image" - /> + > + <Image + onError={[Function]} + resizeMode="contain" + source={1} + style={ + { + "height": 32, + "width": 32, + } + } + testID="network-avatar-image" + /> + </View> </View> </View> </View> - </View> - <View - flexDirection="column" - gap={4} - style={ - [ - { - "flexDirection": "column", - "gap": 4, - }, - { - "flex": 1, - "marginLeft": 8, - }, - ] - } - > - <Text - accessibilityRole="text" + <View + flexDirection="column" + gap={4} style={ - { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 16, - "fontWeight": "500", - "letterSpacing": 0, - "lineHeight": 24, - } + [ + { + "flexDirection": "column", + "gap": 4, + }, + { + "flex": 1, + "marginLeft": 8, + }, + ] } > - HELLO - </Text> - <Text - accessibilityRole="text" - style={ - { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, - "fontWeight": "400", - "letterSpacing": 0, - "lineHeight": 22, + <Text + accessibilityRole="text" + style={ + { + "color": "#121314", + "fontFamily": "CentraNo1-Medium", + "fontSize": 18, + "fontWeight": "500", + "letterSpacing": 0, + "lineHeight": 24, + } } + > + TOKEN1 + </Text> + <Text + accessibilityRole="text" + style={ + { + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, + "fontWeight": "400", + "letterSpacing": 0, + "lineHeight": 24, + } + } + > + Token One + </Text> + </View> + <View + style={ + [ + {}, + { + "alignItems": "flex-end", + "flex": 1, + }, + ] } - > - Hello Token - </Text> + /> </View> - <View - style={ - { - "alignItems": "flex-end", - "alignSelf": "flex-end", - "flex": 1, - } - } - /> </TouchableOpacity> <TouchableOpacity accessible={true} @@ -1433,7 +1399,7 @@ exports[`BridgeDestTokenSelector renders with initial state and displays tokens testID="token-info-button" > <SvgMock - color="#6a737d" + color="#686e7d" height={20} name="Info" style={ diff --git a/app/components/UI/Bridge/components/BridgeDestTokenSelector/index.tsx b/app/components/UI/Bridge/components/BridgeDestTokenSelector/index.tsx index 1c15c0e6b09d..f1883c9432eb 100644 --- a/app/components/UI/Bridge/components/BridgeDestTokenSelector/index.tsx +++ b/app/components/UI/Bridge/components/BridgeDestTokenSelector/index.tsx @@ -1,37 +1,65 @@ import React, { useCallback } from 'react'; import { useSelector, useDispatch } from 'react-redux'; import { useNavigation } from '@react-navigation/native'; -import { TokenI } from '../../../Tokens/types'; import { Hex } from '@metamask/utils'; import { selectNetworkConfigurations } from '../../../../../selectors/networkController'; -import { selectDestToken, setDestToken } from '../../../../../core/redux/slices/bridge'; +import { selectDestToken, selectSelectedDestChainId, selectSourceToken, setDestToken } from '../../../../../core/redux/slices/bridge'; import { getNetworkImageSource } from '../../../../../util/networks'; import { TokenSelectorItem } from '../TokenSelectorItem'; -import { TokenIWithFiatAmount } from '../../hooks/useTokensWithBalance'; import { BridgeDestNetworksBar } from '../BridgeDestNetworksBar'; -import { useDestinationTokens } from '../../hooks/useDestinationTokens'; import { BridgeTokenSelectorBase } from '../BridgeTokenSelectorBase'; +import { IconColor, IconName } from '../../../../../component-library/components/Icons/Icon'; +import ButtonIcon, { ButtonIconSizes } from '../../../../../component-library/components/Buttons/ButtonIcon'; +import { useStyles } from '../../../../../component-library/hooks'; +import { StyleSheet } from 'react-native'; +import { useTokens } from '../../hooks/useTokens'; +import { BridgeToken } from '../../types'; +import { PopularList } from '../../../../../util/networks/customNetworks'; +const createStyles = () => StyleSheet.create({ + infoButton: { + marginRight: 12, + }, +}); export const BridgeDestTokenSelector: React.FC = () => { const dispatch = useDispatch(); + const { styles } = useStyles(createStyles, {}); const navigation = useNavigation(); const networkConfigurations = useSelector(selectNetworkConfigurations); - const tokensList = useDestinationTokens(); const selectedDestToken = useSelector(selectDestToken); + + const selectedDestChainId = useSelector(selectSelectedDestChainId); + const selectedSourceToken = useSelector(selectSourceToken); + const { tokens: tokensList, pending } = useTokens({ + topTokensChainId: selectedDestChainId as Hex, + balanceChainIds: [selectedDestChainId as Hex], + tokensToExclude: selectedSourceToken ? [selectedSourceToken] : [], + }); const handleTokenPress = useCallback( - (token: TokenI) => { + (token: BridgeToken) => { dispatch(setDestToken(token)); navigation.goBack(); }, [dispatch, navigation] ); - const renderItem = useCallback( - ({ item }: { item: TokenIWithFiatAmount }) => ( + const renderToken = useCallback( + ({ item }: { item: BridgeToken }) => { + + // Open the asset details screen as a bottom sheet + const handleInfoButtonPress = () => navigation.navigate('Asset', { ...item }); + + // If the user hasn't added the network, it won't be in the networkConfigurations object + // So we use the PopularList to get the network name + const networkName = networkConfigurations?.[item.chainId as Hex]?.name + ?? PopularList.find((network) => network.chainId === item.chainId)?.nickname + ?? 'Unknown Network'; + + return ( <TokenSelectorItem token={item} onPress={handleTokenPress} - networkName={networkConfigurations[item.chainId as Hex].name} + networkName={networkName} //@ts-expect-error - The utils/network file is still JS and this function expects a networkType, and should be optional networkImageSource={getNetworkImageSource({ chainId: item.chainId as Hex })} shouldShowBalance={false} @@ -39,16 +67,26 @@ export const BridgeDestTokenSelector: React.FC = () => { selectedDestToken?.address === item.address && selectedDestToken?.chainId === item.chainId } - /> - ), - [handleTokenPress, networkConfigurations, selectedDestToken] + > + <ButtonIcon + iconName={IconName.Info} + size={ButtonIconSizes.Md} + onPress={handleInfoButtonPress} + iconColor={IconColor.Alternative} + style={styles.infoButton} + testID="token-info-button" + /> + </TokenSelectorItem> + );}, + [handleTokenPress, networkConfigurations, selectedDestToken, navigation, styles.infoButton] ); return ( <BridgeTokenSelectorBase networksBar={<BridgeDestNetworksBar />} - renderTokenItem={renderItem} + renderTokenItem={renderToken} tokensList={tokensList} + pending={pending} /> ); }; diff --git a/app/components/UI/Bridge/components/BridgeSourceNetworkSelector/BridgeSourceNetworkSelector.test.tsx b/app/components/UI/Bridge/components/BridgeSourceNetworkSelector/BridgeSourceNetworkSelector.test.tsx index 8d29199c99a7..7d58c4c20698 100644 --- a/app/components/UI/Bridge/components/BridgeSourceNetworkSelector/BridgeSourceNetworkSelector.test.tsx +++ b/app/components/UI/Bridge/components/BridgeSourceNetworkSelector/BridgeSourceNetworkSelector.test.tsx @@ -4,8 +4,8 @@ import { BridgeSourceNetworkSelector } from '.'; import Routes from '../../../../../constants/navigation/Routes'; import { Hex } from '@metamask/utils'; import { setSelectedSourceChainIds } from '../../../../../core/redux/slices/bridge'; -import { BridgeFeatureFlagsKey } from '@metamask/bridge-controller'; import { BridgeSourceNetworkSelectorSelectorsIDs } from '../../../../../../e2e/selectors/Bridge/BridgeSourceNetworkSelector.selectors'; +import { initialState } from '../../_mocks_/initialState'; const mockNavigate = jest.fn(); const mockGoBack = jest.fn(); @@ -25,285 +25,20 @@ jest.mock('../../../../../core/redux/slices/bridge', () => { ...actual, default: actual.default, setSelectedSourceChainIds: jest.fn(actual.setSelectedSourceChainIds), + setSourceToken: jest.fn(actual.setSourceToken), }; }); +jest.mock('../../../../Views/NetworkSelector/useSwitchNetworks', () => ({ + useSwitchNetworks: jest.fn(() => ({ + onSetRpcTarget: jest.fn().mockResolvedValue(undefined), + onNetworkChange: jest.fn(), + })), +})); + describe('BridgeSourceNetworkSelector', () => { - const mockAddress = '0x1234567890123456789012345678901234567890' as Hex; const mockChainId = '0x1' as Hex; const optimismChainId = '0xa' as Hex; - const token1Address = '0x0000000000000000000000000000000000000001' as Hex; - const token2Address = '0x0000000000000000000000000000000000000002' as Hex; - const token3Address = '0x0000000000000000000000000000000000000003' as Hex; - - const initialState = { - engine: { - backgroundState: { - BridgeController: { - bridgeFeatureFlags: { - [BridgeFeatureFlagsKey.MOBILE_CONFIG]: { - chains: { - '0x1': { isActiveSrc: true, isActiveDest: true }, - '0xa': { isActiveSrc: true, isActiveDest: true }, - }, - }, - }, - }, - TokenBalancesController: { - tokenBalances: { - [mockAddress]: { - [mockChainId]: { - [token1Address]: '0x0de0b6b3a7640000' as Hex, // 1 TOKEN1 - [token2Address]: '0x1bc16d674ec80000' as Hex, // 2 TOKEN2 - }, - [optimismChainId]: { - [token3Address]: '0x29a2241af62c0000' as Hex, // 3 TOKEN3 - }, - }, - }, - }, - TokensController: { - allTokens: { - [mockChainId]: { - [mockAddress]: [ - { - address: token1Address, - symbol: 'TOKEN1', - decimals: 18, - image: 'https://token1.com/logo.png', - name: 'Token One', - aggregators: ['1inch'], - }, - { - address: token2Address, - symbol: 'TOKEN2', - decimals: 18, - image: 'https://token2.com/logo.png', - name: 'Token Two', - aggregators: ['uniswap'], - }, - ], - }, - [optimismChainId]: { - [mockAddress]: [ - { - address: token3Address, - symbol: 'TOKEN3', - decimals: 18, - image: 'https://token3.com/logo.png', - name: 'Token Three', - aggregators: ['optimism'], - chainId: optimismChainId, - }, - ], - }, - }, - tokens: [ - { - address: token1Address, - symbol: 'TOKEN1', - decimals: 18, - image: 'https://token1.com/logo.png', - name: 'Token One', - aggregators: ['1inch'], - chainId: mockChainId, - }, - { - address: token2Address, - symbol: 'TOKEN2', - decimals: 18, - image: 'https://token2.com/logo.png', - name: 'Token Two', - aggregators: ['uniswap'], - chainId: mockChainId, - }, - { - address: token3Address, - symbol: 'TOKEN3', - decimals: 18, - image: 'https://token3.com/logo.png', - name: 'Token Three', - aggregators: ['optimism'], - chainId: optimismChainId, - }, - ], - }, - NetworkController: { - selectedNetworkClientId: 'selectedNetworkClientId', - networksMetadata: { - mainnet: { - EIPS: { - 1559: true, - }, - }, - '0xa': { - EIPS: { - 1559: true, - }, - }, - }, - networkConfigurationsByChainId: { - [mockChainId]: { - chainId: mockChainId, - rpcEndpoints: [ - { - networkClientId: 'selectedNetworkClientId', - }, - ], - defaultRpcEndpointIndex: 0, - nativeCurrency: 'ETH', - ticker: 'ETH', - nickname: 'Ethereum Mainnet', - name: 'Ethereum Mainnet', - }, - [optimismChainId]: { - chainId: optimismChainId, - rpcEndpoints: [ - { - networkClientId: 'optimismNetworkClientId', - }, - ], - defaultRpcEndpointIndex: 0, - nativeCurrency: 'ETH', - ticker: 'ETH', - nickname: 'Optimism', - name: 'Optimism', - }, - }, - providerConfig: { - chainId: mockChainId, - ticker: 'ETH', - type: 'infura', - }, - }, - AccountTrackerController: { - accounts: { - [mockAddress]: { - balance: '0x29a2241af62c0000' as Hex, // 3 ETH - }, - }, - accountsByChainId: { - [mockChainId]: { - [mockAddress]: { - balance: '0x29a2241af62c0000' as Hex, // 3 ETH - }, - }, - [optimismChainId]: { - [mockAddress]: { - balance: '0x1158e460913d00000' as Hex, // 20 ETH on Optimism - }, - }, - }, - }, - MultichainNetworkController: { - isEvmSelected: true, - selectedMultichainNetworkChainId: undefined, - multichainNetworkConfigurationsByChainId: {}, - }, - AccountsController: { - internalAccounts: { - selectedAccount: 'account1', - accounts: { - account1: { - id: 'account1', - address: mockAddress, - name: 'Account 1', - }, - }, - }, - }, - CurrencyRateController: { - currentCurrency: 'USD', - currencyRates: { - ETH: { - conversionRate: 2000, // 1 ETH = $2000 - }, - }, - conversionRate: 2000, - }, - TokenRatesController: { - marketData: { - [mockChainId]: { - [token1Address]: { - tokenAddress: token1Address, - currency: 'ETH', - price: 10, // 1 TOKEN1 = 10 ETH - }, - [token2Address]: { - tokenAddress: token2Address, - currency: 'ETH', - price: 5, // 1 TOKEN2 = 5 ETH - }, - }, - [optimismChainId]: { - [token3Address]: { - tokenAddress: token3Address, - currency: 'ETH', - price: 8, // 1 TOKEN3 = 8 ETH on Optimism - }, - }, - }, - }, - PreferencesController: { - tokenSortConfig: { - key: 'tokenFiatAmount', - order: 'dsc' as const, - }, - }, - TokenListController: { - tokenList: { - [token3Address]: { - name: 'Token Three', - symbol: 'TOKEN3', - decimals: 18, - address: token3Address, - iconUrl: 'https://token3.com/logo.png', - occurrences: 1, - aggregators: [], - }, - }, - tokensChainsCache: { - [mockChainId]: { - timestamp: Date.now(), - data: { - [token3Address]: { - name: 'Token Three', - symbol: 'TOKEN3', - decimals: 18, - address: token3Address, - iconUrl: 'https://token3.com/logo.png', - occurrences: 1, - aggregators: [], - }, - }, - }, - [optimismChainId]: { - timestamp: Date.now(), - data: { - [token3Address]: { - name: 'Token Three', - symbol: 'TOKEN3', - decimals: 18, - address: token3Address, - iconUrl: 'https://token3.com/logo.png', - occurrences: 1, - aggregators: ['optimism'], - }, - }, - }, - }, - }, - }, - }, - bridge: { - sourceAmount: undefined, - destAmount: undefined, - destChainId: undefined, - sourceToken: undefined, - destToken: undefined, - selectedSourceChainIds: [mockChainId, optimismChainId], - }, - }; beforeEach(() => { jest.clearAllMocks(); @@ -315,7 +50,7 @@ describe('BridgeSourceNetworkSelector', () => { { name: Routes.BRIDGE.MODALS.SOURCE_NETWORK_SELECTOR, }, - { state: initialState } + { state: initialState }, ); // Header should be visible @@ -328,10 +63,10 @@ describe('BridgeSourceNetworkSelector', () => { // Check for fiat values // Optimism: 20 ETH * $2000 + 3 TOKEN3 * 8 ETH * $2000 = $40,000 + $48,000 = $88,000 - expect(getByText('$88000')).toBeTruthy(); + expect(getByText('$22600')).toBeTruthy(); // Ethereum: 3 ETH * $2000 + 1 TOKEN1 * 10 ETH * $2000 + 2 TOKEN2 * 5 ETH * $2000 = $6,000 + $20,000 + $20,000 = $46,000 - expect(getByText('$46000')).toBeTruthy(); + expect(getByText('$12000')).toBeTruthy(); }); // "Select all networks" button should be visible @@ -346,10 +81,9 @@ describe('BridgeSourceNetworkSelector', () => { { name: Routes.BRIDGE.MODALS.SOURCE_NETWORK_SELECTOR, }, - { state: initialState } + { state: initialState }, ); - // Initially both networks should be selected const ethereum = getAllByTestId(`checkbox-${mockChainId}`); const ethereumCheckbox = getAllByTestId(`checkbox-${mockChainId}`)[0]; @@ -377,7 +111,7 @@ describe('BridgeSourceNetworkSelector', () => { { name: Routes.BRIDGE.MODALS.SOURCE_NETWORK_SELECTOR, }, - { state: initialState } + { state: initialState }, ); // Initially should show "Deselect all networks" since all networks are selected @@ -422,7 +156,7 @@ describe('BridgeSourceNetworkSelector', () => { { name: Routes.BRIDGE.MODALS.SOURCE_NETWORK_SELECTOR, }, - { state: initialState } + { state: initialState }, ); // Uncheck Ethereum network @@ -433,11 +167,14 @@ describe('BridgeSourceNetworkSelector', () => { const applyButton = getByText('Apply'); fireEvent.press(applyButton); - // Should call setSelectedSourceChainIds with just Optimism chainId - expect(setSelectedSourceChainIds).toHaveBeenCalledWith([optimismChainId]); + // Wait for async operations to complete + await waitFor(() => { + // Should call setSelectedSourceChainIds with just Optimism chainId + expect(setSelectedSourceChainIds).toHaveBeenCalledWith([optimismChainId]); - // Should navigate back - expect(mockGoBack).toHaveBeenCalled(); + // Should navigate back + expect(mockGoBack).toHaveBeenCalled(); + }); }); it('handles close button correctly', () => { @@ -446,7 +183,7 @@ describe('BridgeSourceNetworkSelector', () => { { name: Routes.BRIDGE.MODALS.SOURCE_NETWORK_SELECTOR, }, - { state: initialState } + { state: initialState }, ); const closeButton = getByTestId('bridge-network-selector-close-button'); @@ -461,7 +198,7 @@ describe('BridgeSourceNetworkSelector', () => { { name: Routes.BRIDGE.MODALS.SOURCE_NETWORK_SELECTOR, }, - { state: initialState } + { state: initialState }, ); // Deselect all networks @@ -469,7 +206,9 @@ describe('BridgeSourceNetworkSelector', () => { fireEvent.press(selectAllButton); // Apply button should be disabled - const applyButton = getByTestId(BridgeSourceNetworkSelectorSelectorsIDs.APPLY_BUTTON); + const applyButton = getByTestId( + BridgeSourceNetworkSelectorSelectorsIDs.APPLY_BUTTON, + ); expect(applyButton.props.disabled).toBe(true); }); @@ -479,16 +218,14 @@ describe('BridgeSourceNetworkSelector', () => { { name: Routes.BRIDGE.MODALS.SOURCE_NETWORK_SELECTOR, }, - { state: initialState } + { state: initialState }, ); // Get all network items const networkItems = getAllByTestId(/chain-/); - // Optimism should be first (higher value - $88,000) - expect(networkItems[0].props.testID).toBe(`chain-${optimismChainId}`); - - // Ethereum should be second (lower value - $46,000) - expect(networkItems[1].props.testID).toBe(`chain-${mockChainId}`); + // Make sure networks are sorted by fiat value in descending order + expect(networkItems[0].props.testID).toBe(`chain-${mockChainId}`); + expect(networkItems[1].props.testID).toBe(`chain-${optimismChainId}`); }); }); diff --git a/app/components/UI/Bridge/components/BridgeSourceNetworkSelector/__snapshots__/BridgeSourceNetworkSelector.test.tsx.snap b/app/components/UI/Bridge/components/BridgeSourceNetworkSelector/__snapshots__/BridgeSourceNetworkSelector.test.tsx.snap index 4e88018ec655..afddcc1eb44c 100644 --- a/app/components/UI/Bridge/components/BridgeSourceNetworkSelector/__snapshots__/BridgeSourceNetworkSelector.test.tsx.snap +++ b/app/components/UI/Bridge/components/BridgeSourceNetworkSelector/__snapshots__/BridgeSourceNetworkSelector.test.tsx.snap @@ -324,7 +324,7 @@ exports[`BridgeSourceNetworkSelector renders with initial state and displays net style={ [ { - "backgroundColor": "#00000099", + "backgroundColor": "#00000066", "bottom": 0, "left": 0, "position": "absolute", @@ -371,7 +371,7 @@ exports[`BridgeSourceNetworkSelector renders with initial state and displays net [ { "backgroundColor": "#ffffff", - "borderColor": "#BBC0C566", + "borderColor": "#b7bbc866", "borderTopLeftRadius": 8, "borderTopRightRadius": 8, "borderWidth": 1, @@ -379,7 +379,7 @@ exports[`BridgeSourceNetworkSelector renders with initial state and displays net "maxHeight": 1334, "overflow": "hidden", "paddingBottom": 0, - "shadowColor": "#0000001A", + "shadowColor": "#0000001a", "shadowOffset": { "height": 2, "width": 0, @@ -409,7 +409,7 @@ exports[`BridgeSourceNetworkSelector renders with initial state and displays net <View style={ { - "backgroundColor": "#BBC0C566", + "backgroundColor": "#b7bbc866", "borderRadius": 2, "height": 4, "width": 40, @@ -491,9 +491,9 @@ exports[`BridgeSourceNetworkSelector renders with initial state and displays net accessibilityRole="text" style={ { - "color": "#141618", + "color": "#121314", "flex": 1, - "fontFamily": "EuclidCircularB-Bold", + "fontFamily": "CentraNo1-Bold", "fontSize": 18, "fontWeight": "700", "letterSpacing": 0, @@ -525,7 +525,7 @@ exports[`BridgeSourceNetworkSelector renders with initial state and displays net testID="bridge-network-selector-close-button" > <SvgMock - color="#141618" + color="#121314" height={16} name="Close" style={ @@ -584,12 +584,12 @@ exports[`BridgeSourceNetworkSelector renders with initial state and displays net style={ { "backgroundColor": "transparent", - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } suppressHighlighting={true} @@ -599,12 +599,12 @@ exports[`BridgeSourceNetworkSelector renders with initial state and displays net accessibilityRole="text" style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, + "color": "#4459ff", + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -624,7 +624,7 @@ exports[`BridgeSourceNetworkSelector renders with initial state and displays net > <TouchableOpacity onPress={[Function]} - testID="chain-0xa" + testID="chain-0x1" > <View accessibilityRole="none" @@ -654,15 +654,15 @@ exports[`BridgeSourceNetworkSelector renders with initial state and displays net "opacity": 1, } } - testID="checkbox-0xa" + testID="checkbox-0x1" > <View accessibilityRole="checkbox" style={ { "alignItems": "center", - "backgroundColor": "#0376c9", - "borderColor": "#0376c9", + "backgroundColor": "#4459ff", + "borderColor": "#4459ff", "borderRadius": 4, "borderWidth": 2, "height": 20, @@ -682,7 +682,7 @@ exports[`BridgeSourceNetworkSelector renders with initial state and displays net "width": 20, } } - testID="checkbox-0xa" + testID="checkbox-0x1" width={20} /> </View> @@ -758,16 +758,16 @@ exports[`BridgeSourceNetworkSelector renders with initial state and displays net accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 16, + "color": "#121314", + "fontFamily": "CentraNo1-Medium", + "fontSize": 18, "fontWeight": "500", "letterSpacing": 0, "lineHeight": 24, } } > - Optimism + Ethereum Mainnet </Text> </View> <View @@ -789,10 +789,10 @@ exports[`BridgeSourceNetworkSelector renders with initial state and displays net accessibilityRole="text" style={ { - "color": "#141618", + "color": "#121314", "flex": 1, - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 16, + "fontFamily": "CentraNo1-Medium", + "fontSize": 18, "fontWeight": "500", "letterSpacing": 0, "lineHeight": 24, @@ -800,7 +800,7 @@ exports[`BridgeSourceNetworkSelector renders with initial state and displays net } } > - $88000 + $22600 </Text> </View> </View> @@ -809,7 +809,7 @@ exports[`BridgeSourceNetworkSelector renders with initial state and displays net </TouchableOpacity> <TouchableOpacity onPress={[Function]} - testID="chain-0x1" + testID="chain-0xa" > <View accessibilityRole="none" @@ -839,15 +839,15 @@ exports[`BridgeSourceNetworkSelector renders with initial state and displays net "opacity": 1, } } - testID="checkbox-0x1" + testID="checkbox-0xa" > <View accessibilityRole="checkbox" style={ { "alignItems": "center", - "backgroundColor": "#0376c9", - "borderColor": "#0376c9", + "backgroundColor": "#4459ff", + "borderColor": "#4459ff", "borderRadius": 4, "borderWidth": 2, "height": 20, @@ -867,7 +867,7 @@ exports[`BridgeSourceNetworkSelector renders with initial state and displays net "width": 20, } } - testID="checkbox-0x1" + testID="checkbox-0xa" width={20} /> </View> @@ -943,16 +943,16 @@ exports[`BridgeSourceNetworkSelector renders with initial state and displays net accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 16, + "color": "#121314", + "fontFamily": "CentraNo1-Medium", + "fontSize": 18, "fontWeight": "500", "letterSpacing": 0, "lineHeight": 24, } } > - Ethereum Mainnet + Optimism </Text> </View> <View @@ -974,10 +974,10 @@ exports[`BridgeSourceNetworkSelector renders with initial state and displays net accessibilityRole="text" style={ { - "color": "#141618", + "color": "#121314", "flex": 1, - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 16, + "fontFamily": "CentraNo1-Medium", + "fontSize": 18, "fontWeight": "500", "letterSpacing": 0, "lineHeight": 24, @@ -985,7 +985,7 @@ exports[`BridgeSourceNetworkSelector renders with initial state and displays net } } > - $46000 + $12000 </Text> </View> </View> @@ -1017,7 +1017,7 @@ exports[`BridgeSourceNetworkSelector renders with initial state and displays net "alignItems": "center", "alignSelf": "stretch", "backgroundColor": "transparent", - "borderColor": "#0376c9", + "borderColor": "#4459ff", "borderRadius": 20, "borderWidth": 1, "flexDirection": "row", @@ -1032,12 +1032,12 @@ exports[`BridgeSourceNetworkSelector renders with initial state and displays net accessibilityRole="text" style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, + "color": "#4459ff", + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > diff --git a/app/components/UI/Bridge/components/BridgeSourceNetworkSelector/index.tsx b/app/components/UI/Bridge/components/BridgeSourceNetworkSelector/index.tsx index 21b91536e570..f17c6a18c78d 100644 --- a/app/components/UI/Bridge/components/BridgeSourceNetworkSelector/index.tsx +++ b/app/components/UI/Bridge/components/BridgeSourceNetworkSelector/index.tsx @@ -7,7 +7,8 @@ import { useStyles } from '../../../../../component-library/hooks'; import { selectEnabledSourceChains, selectSelectedSourceChainIds, - setSelectedSourceChainIds + setSelectedSourceChainIds, + setSourceToken } from '../../../../../core/redux/slices/bridge'; import { strings } from '../../../../../../locales/i18n'; import { useGetFormattedTokensPerChain } from '../../../../hooks/useGetFormattedTokensPerChain'; @@ -25,6 +26,10 @@ import { BridgeNetworkSelectorBase } from '../BridgeNetworkSelectorBase'; import { NetworkRow } from '../NetworkRow'; import Text, { TextVariant } from '../../../../../component-library/components/Texts/Text'; import { BridgeSourceNetworkSelectorSelectorsIDs } from '../../../../../../e2e/selectors/Bridge/BridgeSourceNetworkSelector.selectors'; +import { useNetworkInfo } from '../../../../../selectors/selectedNetworkController'; +import { useSwitchNetworks } from '../../../../Views/NetworkSelector/useSwitchNetworks'; +import { Hex } from '@metamask/utils'; +import { selectEvmNetworkConfigurationsByChainId } from '../../../../../selectors/networkController'; const createStyles = () => StyleSheet.create({ listContent: { @@ -56,6 +61,7 @@ export const BridgeSourceNetworkSelector: React.FC = () => { const currentCurrency = useSelector(selectCurrentCurrency); const selectedInternalAccount = useSelector(selectSelectedInternalAccount); const { sortedSourceNetworks } = useSortedSourceNetworks(); + const evmNetworkConfigurations = useSelector(selectEvmNetworkConfigurationsByChainId); // Local state for candidate network selections const [candidateSourceChainIds, setCandidateSourceChainIds] = useState<string[]>(selectedSourceChainIds); @@ -70,14 +76,37 @@ export const BridgeSourceNetworkSelector: React.FC = () => { formattedTokensWithBalancesPerChain, ); + const { + chainId: selectedChainId, + domainIsConnectedDapp, + networkName: selectedNetworkName, + } = useNetworkInfo(); + const { onSetRpcTarget } = useSwitchNetworks({ + domainIsConnectedDapp, + selectedChainId, + selectedNetworkName, + }); + const address = selectedInternalAccount?.address; - const handleApply = useCallback(() => { + const handleApply = useCallback(async () => { // Update the Redux state with the candidate selections dispatch(setSelectedSourceChainIds(candidateSourceChainIds)); + + // If there's only 1 network selected, set the source token to native token of that chain and switch chains + if (candidateSourceChainIds.length === 1) { + const networkConfiguration = evmNetworkConfigurations[candidateSourceChainIds[0] as Hex]; + if (networkConfiguration) { + await onSetRpcTarget(networkConfiguration); + } + + // Reset the source token, if undefined will be the native token of the selected chain + dispatch(setSourceToken(undefined)); + } + // Return to previous screen with selected networks navigation.goBack(); - }, [navigation, dispatch, candidateSourceChainIds]); + }, [navigation, dispatch, candidateSourceChainIds, evmNetworkConfigurations, onSetRpcTarget]); // Toggle chain selection const toggleChain = useCallback((chainId: string) => { diff --git a/app/components/UI/Bridge/components/BridgeSourceTokenSelector/BridgeSourceTokenSelector.test.tsx b/app/components/UI/Bridge/components/BridgeSourceTokenSelector/BridgeSourceTokenSelector.test.tsx index 9a6c0f9dc9a4..e14290611723 100644 --- a/app/components/UI/Bridge/components/BridgeSourceTokenSelector/BridgeSourceTokenSelector.test.tsx +++ b/app/components/UI/Bridge/components/BridgeSourceTokenSelector/BridgeSourceTokenSelector.test.tsx @@ -2,9 +2,8 @@ import { fireEvent, waitFor } from '@testing-library/react-native'; import { renderScreen } from '../../../../../util/test/renderWithProvider'; import { BridgeSourceTokenSelector } from '.'; import Routes from '../../../../../constants/navigation/Routes'; -import { Hex } from '@metamask/utils'; import { setSourceToken } from '../../../../../core/redux/slices/bridge'; -import { BridgeFeatureFlagsKey } from '@metamask/bridge-controller'; +import { initialState } from '../../_mocks_/initialState'; const mockNavigate = jest.fn(); const mockGoBack = jest.fn(); @@ -27,251 +26,55 @@ jest.mock('../../../../../core/redux/slices/bridge', () => { }; }); -describe('BridgeSourceTokenSelector', () => { - const mockAddress = '0x1234567890123456789012345678901234567890' as Hex; - const mockChainId = '0x1' as Hex; - const token1Address = '0x0000000000000000000000000000000000000001' as Hex; - const token2Address = '0x0000000000000000000000000000000000000002' as Hex; +jest.mock('../../../../Views/NetworkSelector/useSwitchNetworks', () => ({ + useSwitchNetworks: () => ({ + onSetRpcTarget: jest.fn(), + onNetworkChange: jest.fn(), + }), +})); - const initialState = { - engine: { - backgroundState: { - BridgeController: { - bridgeFeatureFlags: { - [BridgeFeatureFlagsKey.MOBILE_CONFIG]: { - chains: { - '0x1': { isActiveSrc: true, isActiveDest: true }, - '0xa': { isActiveSrc: true, isActiveDest: true }, - }, - }, - }, - }, - TokenBalancesController: { - tokenBalances: { - [mockAddress]: { - [mockChainId]: { - [token1Address]: '0x0de0b6b3a7640000' as Hex, // 1 TOKEN1 - [token2Address]: '0x1bc16d674ec80000' as Hex, // 2 HELLO - }, - '0xa': { - [token1Address]: '0x4563918244f40000' as Hex, // 5 TOKEN1 on Optimism - }, - }, - }, - }, - TokensController: { - allTokens: { - [mockChainId]: { - [mockAddress]: [ - { - address: token1Address, - symbol: 'TOKEN1', - decimals: 18, - image: 'https://token1.com/logo.png', - name: 'Token One', - aggregators: ['1inch'], - }, - { - address: token2Address, - symbol: 'HELLO', - decimals: 18, - image: 'https://token2.com/logo.png', - name: 'Hello Token', - aggregators: ['uniswap'], - }, - ], - }, - }, - tokens: [ - { - address: token1Address, - symbol: 'TOKEN1', - decimals: 18, - image: 'https://token1.com/logo.png', - name: 'Token One', - aggregators: ['1inch'], - }, - { - address: token2Address, - symbol: 'HELLO', - decimals: 18, - image: 'https://token2.com/logo.png', - name: 'Hello Token', - aggregators: ['uniswap'], - }, - ], - }, - NetworkController: { - selectedNetworkClientId: 'selectedNetworkClientId', - networksMetadata: { - mainnet: { - EIPS: { - 1559: true, - }, - }, - '0xa': { - EIPS: { - 1559: true, - }, - }, - }, - networkConfigurationsByChainId: { - '0x1': { - chainId: '0x1' as Hex, - rpcEndpoints: [ - { - networkClientId: 'selectedNetworkClientId', - }, - ], - defaultRpcEndpointIndex: 0, - nativeCurrency: 'ETH', - }, - '0xa': { - chainId: '0xa' as Hex, - rpcEndpoints: [ - { - networkClientId: 'optimismNetworkClientId', - }, - ], - defaultRpcEndpointIndex: 0, - nativeCurrency: 'ETH', - }, - }, - providerConfig: { - chainId: mockChainId, - ticker: 'ETH', - rpcPrefs: { blockExplorerUrl: 'https://etherscan.io' }, - type: 'infura', - }, - }, - AccountTrackerController: { - accounts: { - [mockAddress]: { - balance: '0x29a2241af62c0000' as Hex, // 3 ETH - }, - }, - accountsByChainId: { - [mockChainId]: { - [mockAddress]: { - balance: '0x29a2241af62c0000' as Hex, // 3 ETH - }, - }, - '0xa': { - [mockAddress]: { - balance: '0x1158e460913d00000' as Hex, // 20 ETH on Optimism - }, - }, - }, +jest.mock('../../../../../core/Engine', () => ({ + context: { + SwapsController: { + fetchTopAssetsWithCache: jest.fn().mockReturnValue([ + { + address: '0x0000000000000000000000000000000000000001', + symbol: 'TOKEN1', }, - MultichainNetworkController: { - isEvmSelected: true, - selectedMultichainNetworkChainId: undefined, - multichainNetworkConfigurationsByChainId: {}, + { + address: '0x0000000000000000000000000000000000000002', + symbol: 'HELLO', }, - AccountsController: { - internalAccounts: { - selectedAccount: 'account1', - accounts: { - account1: { - id: 'account1', - address: mockAddress, - name: 'Account 1', - }, - }, - }, - }, - CurrencyRateController: { - currentCurrency: 'USD', - currencyRates: { - ETH: { - conversionRate: 2000, // 1 ETH = $2000 - }, - }, - conversionRate: 2000, - }, - TokenRatesController: { - marketData: { - [mockChainId]: { - [token1Address]: { - tokenAddress: token1Address, - currency: 'ETH', - price: 10, // 1 TOKEN1 = 10 ETH - }, - [token2Address]: { - tokenAddress: token2Address, - currency: 'ETH', - price: 50, // 1 TOKEN2 = 5 ETH - }, - }, - '0xa': { - [token1Address]: { - tokenAddress: token1Address, - currency: 'ETH', - price: 8, // 1 TOKEN1 = 8 ETH on Optimism - }, - }, - }, - }, - PreferencesController: { - tokenSortConfig: { - key: 'tokenFiatAmount', - order: 'dsc' as const, - }, - }, - TokenListController: { - tokenList: { - [token1Address]: { - name: 'Token One', - symbol: 'TOKEN1', - decimals: 18, - address: token1Address, - iconUrl: 'https://token1.com/logo.png', - occurrences: 1, - aggregators: [], - }, - [token2Address]: { - name: 'Hello Token', - symbol: 'HELLO', - decimals: 18, - address: token2Address, - iconUrl: 'https://token2.com/logo.png', - }, - }, - tokensChainsCache: { - [mockChainId]: { - timestamp: Date.now(), - data: { - [token1Address]: { - name: 'Token One', - symbol: 'TOKEN1', - decimals: 18, - address: token1Address, - iconUrl: 'https://token1.com/logo.png', - occurrences: 1, - aggregators: [], - }, - [token2Address]: { - name: 'Hello Token', - symbol: 'HELLO', - decimals: 18, - address: token2Address, - iconUrl: 'https://token2.com/logo.png', - }, - }, - }, - }, - }, - }, + ]), }, - bridge: { - sourceAmount: undefined, - destAmount: undefined, - destChainId: undefined, - sourceToken: undefined, - destToken: undefined, - selectedSourceChainIds: undefined, + }, +})); + +jest.mock('@metamask/bridge-controller', () => ({ + ...jest.requireActual('@metamask/bridge-controller'), + fetchBridgeTokens: jest.fn().mockReturnValue({ + '0x0000000000000000000000000000000000000001': { + address: '0x0000000000000000000000000000000000000001', + symbol: 'TOKEN1', + name: 'Token One', + decimals: 18, + chainId: '0x1', + iconUrl: 'https://token1.com/logo.png', }, - }; + '0x0000000000000000000000000000000000000002': { + address: '0x0000000000000000000000000000000000000002', + symbol: 'HELLO', + name: 'Hello Token', + decimals: 18, + chainId: '0x1', + iconUrl: 'https://token2.com/logo.png', + }, + }), +})); + +describe('BridgeSourceTokenSelector', () => { + // Fix ReferenceError: You are trying to access a property or method of the Jest environment after it has been torn down. + jest.useFakeTimers(); beforeEach(() => { jest.clearAllMocks(); @@ -283,7 +86,7 @@ describe('BridgeSourceTokenSelector', () => { { name: Routes.BRIDGE.MODALS.SOURCE_TOKEN_SELECTOR, }, - { state: initialState } + { state: initialState }, ); // Header should be visible @@ -313,7 +116,7 @@ describe('BridgeSourceTokenSelector', () => { { name: Routes.BRIDGE.MODALS.SOURCE_TOKEN_SELECTOR, }, - { state: initialState } + { state: initialState }, ); await waitFor(() => { @@ -322,19 +125,14 @@ describe('BridgeSourceTokenSelector', () => { }); expect(setSourceToken).toHaveBeenCalledWith({ - address: token1Address, - aggregators: ['1inch'], + address: '0x0000000000000000000000000000000000000001', balance: '1', balanceFiat: '$20000', chainId: '0x1', decimals: 18, image: 'https://token1.com/logo.png', - isETH: false, - isNative: false, - isStaked: false, name: 'Token One', symbol: 'TOKEN1', - token: 'Token One', tokenFiatAmount: 20000, }); expect(mockGoBack).toHaveBeenCalled(); @@ -346,7 +144,7 @@ describe('BridgeSourceTokenSelector', () => { { name: Routes.BRIDGE.MODALS.SOURCE_TOKEN_SELECTOR, }, - { state: initialState } + { state: initialState }, ); const closeButton = getByTestId('bridge-token-selector-close-button'); @@ -361,7 +159,7 @@ describe('BridgeSourceTokenSelector', () => { { name: Routes.BRIDGE.MODALS.SOURCE_TOKEN_SELECTOR, }, - { state: initialState } + { state: initialState }, ); // Initially all tokens should be visible @@ -395,7 +193,7 @@ describe('BridgeSourceTokenSelector', () => { { name: Routes.BRIDGE.MODALS.SOURCE_TOKEN_SELECTOR, }, - { state: initialState } + { state: initialState }, ); const searchInput = getByTestId('bridge-token-search-input'); diff --git a/app/components/UI/Bridge/components/BridgeSourceTokenSelector/__snapshots__/BridgeSourceTokenSelector.test.tsx.snap b/app/components/UI/Bridge/components/BridgeSourceTokenSelector/__snapshots__/BridgeSourceTokenSelector.test.tsx.snap index 29765d849330..1b89ee747bf5 100644 --- a/app/components/UI/Bridge/components/BridgeSourceTokenSelector/__snapshots__/BridgeSourceTokenSelector.test.tsx.snap +++ b/app/components/UI/Bridge/components/BridgeSourceTokenSelector/__snapshots__/BridgeSourceTokenSelector.test.tsx.snap @@ -324,7 +324,7 @@ exports[`BridgeSourceTokenSelector renders with initial state and displays token style={ [ { - "backgroundColor": "#00000099", + "backgroundColor": "#00000066", "bottom": 0, "left": 0, "position": "absolute", @@ -371,7 +371,7 @@ exports[`BridgeSourceTokenSelector renders with initial state and displays token [ { "backgroundColor": "#ffffff", - "borderColor": "#BBC0C566", + "borderColor": "#b7bbc866", "borderTopLeftRadius": 8, "borderTopRightRadius": 8, "borderWidth": 1, @@ -379,7 +379,7 @@ exports[`BridgeSourceTokenSelector renders with initial state and displays token "maxHeight": 1334, "overflow": "hidden", "paddingBottom": 0, - "shadowColor": "#0000001A", + "shadowColor": "#0000001a", "shadowOffset": { "height": 2, "width": 0, @@ -409,7 +409,7 @@ exports[`BridgeSourceTokenSelector renders with initial state and displays token <View style={ { - "backgroundColor": "#BBC0C566", + "backgroundColor": "#b7bbc866", "borderRadius": 2, "height": 4, "width": 40, @@ -491,9 +491,9 @@ exports[`BridgeSourceTokenSelector renders with initial state and displays token accessibilityRole="text" style={ { - "color": "#141618", + "color": "#121314", "flex": 1, - "fontFamily": "EuclidCircularB-Bold", + "fontFamily": "CentraNo1-Bold", "fontSize": 18, "fontWeight": "700", "letterSpacing": 0, @@ -525,7 +525,7 @@ exports[`BridgeSourceTokenSelector renders with initial state and displays token testID="bridge-token-selector-close-button" > <SvgMock - color="#141618" + color="#121314" height={16} name="Close" style={ @@ -579,7 +579,7 @@ exports[`BridgeSourceTokenSelector renders with initial state and displays token "alignItems": "center", "alignSelf": "flex-start", "backgroundColor": "transparent", - "borderColor": "#BBC0C566", + "borderColor": "#b7bbc866", "borderRadius": 20, "borderWidth": 1, "flexDirection": "row", @@ -696,12 +696,12 @@ exports[`BridgeSourceTokenSelector renders with initial state and displays token accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -709,7 +709,7 @@ exports[`BridgeSourceTokenSelector renders with initial state and displays token </Text> </View> <SvgMock - color="#0376c9" + color="#4459ff" height={16} name="ArrowDown" style={ @@ -727,7 +727,7 @@ exports[`BridgeSourceTokenSelector renders with initial state and displays token { "alignItems": "center", "backgroundColor": "#ffffff", - "borderColor": "#848c96", + "borderColor": "#b7bbc8", "borderRadius": 8, "borderWidth": 1, "flexDirection": "row", @@ -747,7 +747,7 @@ exports[`BridgeSourceTokenSelector renders with initial state and displays token testID="textfield-startacccessory" > <SvgMock - color="#141618" + color="#121314" height={16} name="Search" style={ @@ -778,9 +778,9 @@ exports[`BridgeSourceTokenSelector renders with initial state and displays token "backgroundColor": "#ffffff", "borderColor": "transparent", "borderWidth": 1, - "color": "#141618", - "fontFamily": "Euclid Circular B", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "height": 24, "letterSpacing": 0, @@ -795,94 +795,62 @@ exports[`BridgeSourceTokenSelector renders with initial state and displays token </View> </View> <RCTScrollView - ListEmptyComponent={ - <ForwardRef - style={ - { - "marginHorizontal": 24, - "marginVertical": 10, - } - } - > - <Text - color="Alternative" - > - No tokens match “” - </Text> - </ForwardRef> - } + ListEmptyComponent={[Function]} data={ [ { "address": "0x0000000000000000000000000000000000000002", - "aggregators": [ - "uniswap", - ], "balance": "2", "balanceFiat": "$200000", "chainId": "0x1", "decimals": 18, "image": "https://token2.com/logo.png", - "isETH": false, - "isNative": false, - "isStaked": false, "name": "Hello Token", "symbol": "HELLO", - "token": "Hello Token", "tokenFiatAmount": 200000, }, + { + "address": "0x0000000000000000000000000000000000000003", + "balance": "5", + "balanceFiat": "$80000", + "chainId": "0xa", + "decimals": 18, + "image": "https://token3.com/logo.png", + "name": "Foo Token", + "symbol": "FOO", + "tokenFiatAmount": 80000, + }, { "address": "0x0000000000000000000000000000000000000000", - "aggregators": [], "balance": "20", "balanceFiat": "$40000", "chainId": "0xa", "decimals": 18, "image": "", - "isETH": true, - "isNative": true, - "isStaked": false, - "logo": "../images/eth-logo-new.png", "name": "Ethereum", - "stakedBalance": "0x0", "symbol": "ETH", - "ticker": "ETH", "tokenFiatAmount": 40000, }, { "address": "0x0000000000000000000000000000000000000001", - "aggregators": [ - "1inch", - ], "balance": "1", "balanceFiat": "$20000", "chainId": "0x1", "decimals": 18, "image": "https://token1.com/logo.png", - "isETH": false, - "isNative": false, - "isStaked": false, "name": "Token One", "symbol": "TOKEN1", - "token": "Token One", "tokenFiatAmount": 20000, }, { "address": "0x0000000000000000000000000000000000000000", - "aggregators": [], "balance": "3", "balanceFiat": "$6000", "chainId": "0x1", "decimals": 18, "image": "", - "isETH": true, - "isNative": true, - "isStaked": false, - "logo": "../images/eth-logo-new.png", "name": "Ethereum", - "stakedBalance": "0x0", "symbol": "ETH", - "ticker": "ETH", "tokenFiatAmount": 6000, }, ] @@ -910,15 +878,11 @@ exports[`BridgeSourceTokenSelector renders with initial state and displays token style={null} > <View - alignItems="center" flexDirection="row" - justifyContent="space-between" style={ [ { - "alignItems": "center", "flexDirection": "row", - "justifyContent": "space-between", }, { "backgroundColor": "#ffffff", @@ -928,7 +892,6 @@ exports[`BridgeSourceTokenSelector renders with initial state and displays token } > <TouchableOpacity - onLongPress={[Function]} onPress={[Function]} style={ { @@ -942,215 +905,229 @@ exports[`BridgeSourceTokenSelector renders with initial state and displays token testID="asset-HELLO" > <View - onLayout={[Function]} + alignItems="center" + flexDirection="row" + gap={4} style={ - { - "alignSelf": "flex-start", - "position": "relative", - } + [ + { + "alignItems": "center", + "flexDirection": "row", + "gap": 4, + }, + undefined, + ] } - testID="badge-wrapper-badge" > - <View> - <View - style={ - { - "backgroundColor": "#ffffff", - "borderRadius": 16, - "height": 32, - "overflow": "hidden", - "width": 32, - } - } - > - <Image - onError={[Function]} - resizeMode="contain" - source={ - { - "uri": "https://token2.com/logo.png", - } - } - style={ - { - "flex": 1, - "height": undefined, - "width": undefined, - } - } - testID="token-avatar-image" - /> - </View> - </View> <View + onLayout={[Function]} style={ { - "alignItems": "center", - "aspectRatio": 1, - "bottom": 0, - "height": 0, - "justifyContent": "center", - "position": "absolute", - "right": 0, - "transform": [ - { - "translateX": 0, - }, - { - "translateY": 0, - }, - ], + "alignSelf": undefined, + "position": "relative", } } + testID="badge-wrapper-badge" > + <View> + <View + style={ + { + "backgroundColor": "#ffffff", + "borderRadius": 16, + "height": 32, + "overflow": "hidden", + "width": 32, + } + } + > + <Image + onError={[Function]} + resizeMode="contain" + source={ + { + "uri": "https://token2.com/logo.png", + } + } + style={ + { + "flex": 1, + "height": undefined, + "width": undefined, + } + } + testID="token-avatar-image" + /> + </View> + </View> <View - onLayout={[Function]} style={ { "alignItems": "center", "aspectRatio": 1, - "height": "50%", + "bottom": 0, + "height": 0, "justifyContent": "center", - "maxHeight": 24, - "minHeight": 8, - "opacity": 0, + "position": "absolute", + "right": 0, + "transform": [ + { + "translateX": 0, + }, + { + "translateY": 0, + }, + ], } } - testID="badgenetwork" > <View + onLayout={[Function]} style={ { "alignItems": "center", - "backgroundColor": "#ffffff", - "borderColor": "#ffffff", - "borderRadius": 8, - "borderWidth": 2, - "height": 32, + "aspectRatio": 1, + "height": "50%", "justifyContent": "center", - "overflow": "hidden", - "shadowColor": "#0000001A", - "shadowOffset": { - "height": 2, - "width": 0, - }, - "shadowOpacity": 1, - "shadowRadius": 4, - "transform": [ - { - "scale": 1, - }, - ], - "width": 32, + "maxHeight": 24, + "minHeight": 8, + "opacity": 0, } } + testID="badgenetwork" > - <Image - onError={[Function]} - resizeMode="contain" - source={1} + <View style={ { + "alignItems": "center", + "backgroundColor": "#ffffff", + "borderColor": "#ffffff", + "borderRadius": 8, + "borderWidth": 2, "height": 32, + "justifyContent": "center", + "overflow": "hidden", + "shadowColor": "#0000001a", + "shadowOffset": { + "height": 2, + "width": 0, + }, + "shadowOpacity": 1, + "shadowRadius": 4, + "transform": [ + { + "scale": 1, + }, + ], "width": 32, } } - testID="network-avatar-image" - /> + > + <Image + onError={[Function]} + resizeMode="contain" + source={1} + style={ + { + "height": 32, + "width": 32, + } + } + testID="network-avatar-image" + /> + </View> </View> </View> </View> - </View> - <View - flexDirection="column" - gap={4} - style={ - [ - { - "flexDirection": "column", - "gap": 4, - }, - { - "flex": 1, - "marginLeft": 8, - }, - ] - } - > - <Text - accessibilityRole="text" + <View + flexDirection="column" + gap={4} style={ - { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 16, - "fontWeight": "500", - "letterSpacing": 0, - "lineHeight": 24, - } + [ + { + "flexDirection": "column", + "gap": 4, + }, + { + "flex": 1, + "marginLeft": 8, + }, + ] } > - HELLO - </Text> - <Text - accessibilityRole="text" - style={ - { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, - "fontWeight": "400", - "letterSpacing": 0, - "lineHeight": 22, + <Text + accessibilityRole="text" + style={ + { + "color": "#121314", + "fontFamily": "CentraNo1-Medium", + "fontSize": 18, + "fontWeight": "500", + "letterSpacing": 0, + "lineHeight": 24, + } } - } - > - Hello Token - </Text> - </View> - <View - style={ - { - "alignItems": "flex-end", - "alignSelf": "flex-end", - "flex": 1, - } - } - > - <Text - accessibilityRole="text" - style={ - { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 16, - "fontWeight": "500", - "letterSpacing": 0, - "lineHeight": 24, + > + HELLO + </Text> + <Text + accessibilityRole="text" + style={ + { + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, + "fontWeight": "400", + "letterSpacing": 0, + "lineHeight": 24, + } } - } - testID="balance-test-id" - > - $200000 - </Text> - <Text - accessibilityRole="text" + > + Hello Token + </Text> + </View> + <View style={ - { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, - "fontWeight": "400", - "letterSpacing": 0, - "lineHeight": 22, - "paddingHorizontal": 0, - "textTransform": "uppercase", - } + [ + {}, + { + "alignItems": "flex-end", + "flex": 1, + }, + ] } - testID="secondary-balance-test-id" > - 2 HELLO - </Text> + <Text + accessibilityRole="text" + style={ + { + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, + "fontWeight": "400", + "letterSpacing": 0, + "lineHeight": 24, + } + } + > + $200000 + </Text> + <Text + accessibilityRole="text" + style={ + { + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, + "fontWeight": "400", + "letterSpacing": 0, + "lineHeight": 24, + } + } + > + 2 HELLO + </Text> + </View> </View> </TouchableOpacity> </View> @@ -1161,15 +1138,11 @@ exports[`BridgeSourceTokenSelector renders with initial state and displays token style={null} > <View - alignItems="center" flexDirection="row" - justifyContent="space-between" style={ [ { - "alignItems": "center", "flexDirection": "row", - "justifyContent": "space-between", }, { "backgroundColor": "#ffffff", @@ -1179,7 +1152,6 @@ exports[`BridgeSourceTokenSelector renders with initial state and displays token } > <TouchableOpacity - onLongPress={[Function]} onPress={[Function]} style={ { @@ -1190,249 +1162,232 @@ exports[`BridgeSourceTokenSelector renders with initial state and displays token "paddingVertical": 10, } } - testID="asset-ETH" + testID="asset-FOO" > <View - onLayout={[Function]} + alignItems="center" + flexDirection="row" + gap={4} style={ - { - "alignSelf": "flex-start", - "position": "relative", - } + [ + { + "alignItems": "center", + "flexDirection": "row", + "gap": 4, + }, + undefined, + ] } - testID="badge-wrapper-badge" > - <View> - <View - useNativeDriver={true} - > - <Image - fadeIn={true} - onError={[Function]} - onLoadEnd={[Function]} - source={ - { - "uri": "", - } - } - style={ - [ - { - "borderRadius": 12, - "height": 24, - "width": 24, - }, - undefined, - false, - false, - { - "height": 40, - "width": 40, - }, - ] - } - testID="network-logo-ETH" - /> + <View + onLayout={[Function]} + style={ + { + "alignSelf": undefined, + "position": "relative", + } + } + testID="badge-wrapper-badge" + > + <View> <View - collapsable={false} style={ { - "bottom": 0, - "left": 0, - "opacity": 1, - "position": "absolute", - "right": 0, - "top": 0, + "backgroundColor": "#ffffff", + "borderRadius": 16, + "height": 32, + "overflow": "hidden", + "width": 32, } } > - <View + <Image + onError={[Function]} + resizeMode="contain" + source={ + { + "uri": "https://token3.com/logo.png", + } + } style={ - [ - { - "borderRadius": 12, - "height": 40, - "width": 40, - }, - { - "backgroundColor": "#eee", - }, - undefined, - ] + { + "flex": 1, + "height": undefined, + "width": undefined, + } } + testID="token-avatar-image" /> </View> </View> - </View> - <View - style={ - { - "alignItems": "center", - "aspectRatio": 1, - "bottom": 0, - "height": 0, - "justifyContent": "center", - "position": "absolute", - "right": 0, - "transform": [ - { - "translateX": 0, - }, - { - "translateY": 0, - }, - ], - } - } - > <View - onLayout={[Function]} style={ { "alignItems": "center", "aspectRatio": 1, - "height": "50%", + "bottom": 0, + "height": 0, "justifyContent": "center", - "maxHeight": 24, - "minHeight": 8, - "opacity": 0, + "position": "absolute", + "right": 0, + "transform": [ + { + "translateX": 0, + }, + { + "translateY": 0, + }, + ], } } - testID="badgenetwork" > <View + onLayout={[Function]} style={ { "alignItems": "center", - "backgroundColor": "#ffffff", - "borderColor": "#ffffff", - "borderRadius": 8, - "borderWidth": 2, - "height": 32, + "aspectRatio": 1, + "height": "50%", "justifyContent": "center", - "overflow": "hidden", - "shadowColor": "#0000001A", - "shadowOffset": { - "height": 2, - "width": 0, - }, - "shadowOpacity": 1, - "shadowRadius": 4, - "transform": [ - { - "scale": 1, - }, - ], - "width": 32, + "maxHeight": 24, + "minHeight": 8, + "opacity": 0, } } + testID="badgenetwork" > - <Image - onError={[Function]} - resizeMode="contain" - source={1} + <View style={ { + "alignItems": "center", + "backgroundColor": "#ffffff", + "borderColor": "#ffffff", + "borderRadius": 8, + "borderWidth": 2, "height": 32, + "justifyContent": "center", + "overflow": "hidden", + "shadowColor": "#0000001a", + "shadowOffset": { + "height": 2, + "width": 0, + }, + "shadowOpacity": 1, + "shadowRadius": 4, + "transform": [ + { + "scale": 1, + }, + ], "width": 32, } } - testID="network-avatar-image" - /> + > + <Image + onError={[Function]} + resizeMode="contain" + source={1} + style={ + { + "height": 32, + "width": 32, + } + } + testID="network-avatar-image" + /> + </View> </View> </View> </View> - </View> - <View - flexDirection="column" - gap={4} - style={ - [ - { - "flexDirection": "column", - "gap": 4, - }, - { - "flex": 1, - "marginLeft": 8, - }, - ] - } - > - <Text - accessibilityRole="text" + <View + flexDirection="column" + gap={4} style={ - { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 16, - "fontWeight": "500", - "letterSpacing": 0, - "lineHeight": 24, - } + [ + { + "flexDirection": "column", + "gap": 4, + }, + { + "flex": 1, + "marginLeft": 8, + }, + ] } > - ETH - </Text> - <Text - accessibilityRole="text" - style={ - { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, - "fontWeight": "400", - "letterSpacing": 0, - "lineHeight": 22, + <Text + accessibilityRole="text" + style={ + { + "color": "#121314", + "fontFamily": "CentraNo1-Medium", + "fontSize": 18, + "fontWeight": "500", + "letterSpacing": 0, + "lineHeight": 24, + } } - } - > - Ethereum - </Text> - </View> - <View - style={ - { - "alignItems": "flex-end", - "alignSelf": "flex-end", - "flex": 1, - } - } - > - <Text - accessibilityRole="text" - style={ - { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 16, - "fontWeight": "500", - "letterSpacing": 0, - "lineHeight": 24, + > + FOO + </Text> + <Text + accessibilityRole="text" + style={ + { + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, + "fontWeight": "400", + "letterSpacing": 0, + "lineHeight": 24, + } } - } - testID="balance-test-id" - > - $40000 - </Text> - <Text - accessibilityRole="text" + > + Foo Token + </Text> + </View> + <View style={ - { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, - "fontWeight": "400", - "letterSpacing": 0, - "lineHeight": 22, - "paddingHorizontal": 0, - "textTransform": "uppercase", - } + [ + {}, + { + "alignItems": "flex-end", + "flex": 1, + }, + ] } - testID="secondary-balance-test-id" > - 20 ETH - </Text> + <Text + accessibilityRole="text" + style={ + { + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, + "fontWeight": "400", + "letterSpacing": 0, + "lineHeight": 24, + } + } + > + $80000 + </Text> + <Text + accessibilityRole="text" + style={ + { + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, + "fontWeight": "400", + "letterSpacing": 0, + "lineHeight": 24, + } + } + > + 5 FOO + </Text> + </View> </View> </TouchableOpacity> </View> @@ -1443,15 +1398,11 @@ exports[`BridgeSourceTokenSelector renders with initial state and displays token style={null} > <View - alignItems="center" flexDirection="row" - justifyContent="space-between" style={ [ { - "alignItems": "center", "flexDirection": "row", - "justifyContent": "space-between", }, { "backgroundColor": "#ffffff", @@ -1461,7 +1412,6 @@ exports[`BridgeSourceTokenSelector renders with initial state and displays token } > <TouchableOpacity - onLongPress={[Function]} onPress={[Function]} style={ { @@ -1472,218 +1422,524 @@ exports[`BridgeSourceTokenSelector renders with initial state and displays token "paddingVertical": 10, } } - testID="asset-TOKEN1" + testID="asset-ETH" > <View - onLayout={[Function]} + alignItems="center" + flexDirection="row" + gap={4} style={ - { - "alignSelf": "flex-start", - "position": "relative", - } + [ + { + "alignItems": "center", + "flexDirection": "row", + "gap": 4, + }, + undefined, + ] } - testID="badge-wrapper-badge" > - <View> - <View - style={ - { - "backgroundColor": "#ffffff", - "borderRadius": 16, - "height": 32, - "overflow": "hidden", - "width": 32, - } - } - > - <Image - onError={[Function]} - resizeMode="contain" - source={ - { - "uri": "https://token1.com/logo.png", - } - } - style={ - { - "flex": 1, - "height": undefined, - "width": undefined, - } - } - testID="token-avatar-image" - /> - </View> - </View> <View + onLayout={[Function]} style={ { - "alignItems": "center", - "aspectRatio": 1, - "bottom": 0, - "height": 0, - "justifyContent": "center", - "position": "absolute", - "right": 0, - "transform": [ - { - "translateX": 0, - }, - { - "translateY": 0, - }, - ], + "alignSelf": undefined, + "position": "relative", } } + testID="badge-wrapper-badge" > + <View> + <View + useNativeDriver={true} + > + <Image + fadeIn={true} + onError={[Function]} + onLoadEnd={[Function]} + source={ + { + "uri": "", + } + } + style={ + [ + { + "borderRadius": 12, + "height": 24, + "width": 24, + }, + { + "borderRadius": 18, + "height": 36, + "width": 36, + }, + undefined, + undefined, + undefined, + ] + } + testID="network-logo-ETH" + /> + <View + collapsable={false} + style={ + { + "bottom": 0, + "left": 0, + "opacity": 1, + "position": "absolute", + "right": 0, + "top": 0, + } + } + > + <View + style={ + [ + { + "borderRadius": 18, + "height": 36, + "width": 36, + }, + { + "backgroundColor": "#eee", + }, + undefined, + ] + } + /> + </View> + </View> + </View> <View - onLayout={[Function]} style={ { "alignItems": "center", "aspectRatio": 1, - "height": "50%", + "bottom": 0, + "height": 0, "justifyContent": "center", - "maxHeight": 24, - "minHeight": 8, - "opacity": 0, + "position": "absolute", + "right": 0, + "transform": [ + { + "translateX": 0, + }, + { + "translateY": 0, + }, + ], } } - testID="badgenetwork" > <View + onLayout={[Function]} style={ { "alignItems": "center", - "backgroundColor": "#ffffff", - "borderColor": "#ffffff", - "borderRadius": 8, - "borderWidth": 2, - "height": 32, + "aspectRatio": 1, + "height": "50%", "justifyContent": "center", - "overflow": "hidden", - "shadowColor": "#0000001A", - "shadowOffset": { - "height": 2, - "width": 0, - }, - "shadowOpacity": 1, - "shadowRadius": 4, - "transform": [ - { - "scale": 1, - }, - ], - "width": 32, + "maxHeight": 24, + "minHeight": 8, + "opacity": 0, } } + testID="badgenetwork" > - <Image - onError={[Function]} - resizeMode="contain" - source={1} + <View style={ { + "alignItems": "center", + "backgroundColor": "#ffffff", + "borderColor": "#ffffff", + "borderRadius": 8, + "borderWidth": 2, "height": 32, + "justifyContent": "center", + "overflow": "hidden", + "shadowColor": "#0000001a", + "shadowOffset": { + "height": 2, + "width": 0, + }, + "shadowOpacity": 1, + "shadowRadius": 4, + "transform": [ + { + "scale": 1, + }, + ], "width": 32, } } - testID="network-avatar-image" - /> + > + <Image + onError={[Function]} + resizeMode="contain" + source={1} + style={ + { + "height": 32, + "width": 32, + } + } + testID="network-avatar-image" + /> + </View> </View> </View> </View> + <View + flexDirection="column" + gap={4} + style={ + [ + { + "flexDirection": "column", + "gap": 4, + }, + { + "flex": 1, + "marginLeft": 8, + }, + ] + } + > + <Text + accessibilityRole="text" + style={ + { + "color": "#121314", + "fontFamily": "CentraNo1-Medium", + "fontSize": 18, + "fontWeight": "500", + "letterSpacing": 0, + "lineHeight": 24, + } + } + > + ETH + </Text> + <Text + accessibilityRole="text" + style={ + { + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, + "fontWeight": "400", + "letterSpacing": 0, + "lineHeight": 24, + } + } + > + Ethereum + </Text> + </View> + <View + style={ + [ + {}, + { + "alignItems": "flex-end", + "flex": 1, + }, + ] + } + > + <Text + accessibilityRole="text" + style={ + { + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, + "fontWeight": "400", + "letterSpacing": 0, + "lineHeight": 24, + } + } + > + $40000 + </Text> + <Text + accessibilityRole="text" + style={ + { + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, + "fontWeight": "400", + "letterSpacing": 0, + "lineHeight": 24, + } + } + > + 20 ETH + </Text> + </View> </View> + </TouchableOpacity> + </View> + </View> + <View + onFocusCapture={[Function]} + onLayout={[Function]} + style={null} + > + <View + flexDirection="row" + style={ + [ + { + "flexDirection": "row", + }, + { + "backgroundColor": "#ffffff", + "padding": 4, + }, + ] + } + > + <TouchableOpacity + onPress={[Function]} + style={ + { + "alignItems": "flex-start", + "flex": 1, + "flexDirection": "row", + "paddingHorizontal": 15, + "paddingVertical": 10, + } + } + testID="asset-TOKEN1" + > <View - flexDirection="column" + alignItems="center" + flexDirection="row" gap={4} style={ [ { - "flexDirection": "column", + "alignItems": "center", + "flexDirection": "row", "gap": 4, }, - { - "flex": 1, - "marginLeft": 8, - }, + undefined, ] } > - <Text - accessibilityRole="text" + <View + onLayout={[Function]} style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 16, - "fontWeight": "500", - "letterSpacing": 0, - "lineHeight": 24, + "alignSelf": undefined, + "position": "relative", } } + testID="badge-wrapper-badge" > - TOKEN1 - </Text> - <Text - accessibilityRole="text" - style={ - { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, - "fontWeight": "400", - "letterSpacing": 0, - "lineHeight": 22, + <View> + <View + style={ + { + "backgroundColor": "#ffffff", + "borderRadius": 16, + "height": 32, + "overflow": "hidden", + "width": 32, + } + } + > + <Image + onError={[Function]} + resizeMode="contain" + source={ + { + "uri": "https://token1.com/logo.png", + } + } + style={ + { + "flex": 1, + "height": undefined, + "width": undefined, + } + } + testID="token-avatar-image" + /> + </View> + </View> + <View + style={ + { + "alignItems": "center", + "aspectRatio": 1, + "bottom": 0, + "height": 0, + "justifyContent": "center", + "position": "absolute", + "right": 0, + "transform": [ + { + "translateX": 0, + }, + { + "translateY": 0, + }, + ], + } } - } - > - Token One - </Text> - </View> - <View - style={ - { - "alignItems": "flex-end", - "alignSelf": "flex-end", - "flex": 1, - } - } - > - <Text - accessibilityRole="text" + > + <View + onLayout={[Function]} + style={ + { + "alignItems": "center", + "aspectRatio": 1, + "height": "50%", + "justifyContent": "center", + "maxHeight": 24, + "minHeight": 8, + "opacity": 0, + } + } + testID="badgenetwork" + > + <View + style={ + { + "alignItems": "center", + "backgroundColor": "#ffffff", + "borderColor": "#ffffff", + "borderRadius": 8, + "borderWidth": 2, + "height": 32, + "justifyContent": "center", + "overflow": "hidden", + "shadowColor": "#0000001a", + "shadowOffset": { + "height": 2, + "width": 0, + }, + "shadowOpacity": 1, + "shadowRadius": 4, + "transform": [ + { + "scale": 1, + }, + ], + "width": 32, + } + } + > + <Image + onError={[Function]} + resizeMode="contain" + source={1} + style={ + { + "height": 32, + "width": 32, + } + } + testID="network-avatar-image" + /> + </View> + </View> + </View> + </View> + <View + flexDirection="column" + gap={4} style={ - { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 16, - "fontWeight": "500", - "letterSpacing": 0, - "lineHeight": 24, - } + [ + { + "flexDirection": "column", + "gap": 4, + }, + { + "flex": 1, + "marginLeft": 8, + }, + ] } - testID="balance-test-id" > - $20000 - </Text> - <Text - accessibilityRole="text" - style={ - { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, - "fontWeight": "400", - "letterSpacing": 0, - "lineHeight": 22, - "paddingHorizontal": 0, - "textTransform": "uppercase", + <Text + accessibilityRole="text" + style={ + { + "color": "#121314", + "fontFamily": "CentraNo1-Medium", + "fontSize": 18, + "fontWeight": "500", + "letterSpacing": 0, + "lineHeight": 24, + } + } + > + TOKEN1 + </Text> + <Text + accessibilityRole="text" + style={ + { + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, + "fontWeight": "400", + "letterSpacing": 0, + "lineHeight": 24, + } } + > + Token One + </Text> + </View> + <View + style={ + [ + {}, + { + "alignItems": "flex-end", + "flex": 1, + }, + ] } - testID="secondary-balance-test-id" > - 1 TOKEN1 - </Text> + <Text + accessibilityRole="text" + style={ + { + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, + "fontWeight": "400", + "letterSpacing": 0, + "lineHeight": 24, + } + } + > + $20000 + </Text> + <Text + accessibilityRole="text" + style={ + { + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, + "fontWeight": "400", + "letterSpacing": 0, + "lineHeight": 24, + } + } + > + 1 TOKEN1 + </Text> + </View> </View> </TouchableOpacity> </View> @@ -1694,18 +1950,14 @@ exports[`BridgeSourceTokenSelector renders with initial state and displays token style={null} > <View - alignItems="center" flexDirection="row" - justifyContent="space-between" style={ [ { - "alignItems": "center", "flexDirection": "row", - "justifyContent": "space-between", }, { - "backgroundColor": "#0376C91A", + "backgroundColor": "#4459ff1a", "padding": 4, }, ] @@ -1714,7 +1966,7 @@ exports[`BridgeSourceTokenSelector renders with initial state and displays token <View style={ { - "backgroundColor": "#0376c9", + "backgroundColor": "#4459ff", "borderRadius": 8, "height": "100%", "width": 4, @@ -1722,7 +1974,6 @@ exports[`BridgeSourceTokenSelector renders with initial state and displays token } /> <TouchableOpacity - onLongPress={[Function]} onPress={[Function]} style={ { @@ -1736,246 +1987,261 @@ exports[`BridgeSourceTokenSelector renders with initial state and displays token testID="asset-ETH" > <View - onLayout={[Function]} + alignItems="center" + flexDirection="row" + gap={4} style={ - { - "alignSelf": "flex-start", - "position": "relative", - } + [ + { + "alignItems": "center", + "flexDirection": "row", + "gap": 4, + }, + undefined, + ] } - testID="badge-wrapper-badge" > - <View> - <View - useNativeDriver={true} - > - <Image - fadeIn={true} - onError={[Function]} - onLoadEnd={[Function]} - source={ - { - "uri": "", - } - } - style={ - [ - { - "borderRadius": 12, - "height": 24, - "width": 24, - }, - undefined, - false, - false, - { - "height": 40, - "width": 40, - }, - ] - } - testID="network-logo-ETH" - /> + <View + onLayout={[Function]} + style={ + { + "alignSelf": undefined, + "position": "relative", + } + } + testID="badge-wrapper-badge" + > + <View> <View - collapsable={false} - style={ - { - "bottom": 0, - "left": 0, - "opacity": 1, - "position": "absolute", - "right": 0, - "top": 0, - } - } + useNativeDriver={true} > - <View + <Image + fadeIn={true} + onError={[Function]} + onLoadEnd={[Function]} + source={ + { + "uri": "", + } + } style={ [ { "borderRadius": 12, - "height": 40, - "width": 40, + "height": 24, + "width": 24, }, { - "backgroundColor": "#eee", + "borderRadius": 18, + "height": 36, + "width": 36, }, undefined, + undefined, + undefined, ] } + testID="network-logo-ETH" /> + <View + collapsable={false} + style={ + { + "bottom": 0, + "left": 0, + "opacity": 1, + "position": "absolute", + "right": 0, + "top": 0, + } + } + > + <View + style={ + [ + { + "borderRadius": 18, + "height": 36, + "width": 36, + }, + { + "backgroundColor": "#eee", + }, + undefined, + ] + } + /> + </View> </View> </View> - </View> - <View - style={ - { - "alignItems": "center", - "aspectRatio": 1, - "bottom": 0, - "height": 0, - "justifyContent": "center", - "position": "absolute", - "right": 0, - "transform": [ - { - "translateX": 0, - }, - { - "translateY": 0, - }, - ], - } - } - > <View - onLayout={[Function]} style={ { "alignItems": "center", "aspectRatio": 1, - "height": "50%", + "bottom": 0, + "height": 0, "justifyContent": "center", - "maxHeight": 24, - "minHeight": 8, - "opacity": 0, + "position": "absolute", + "right": 0, + "transform": [ + { + "translateX": 0, + }, + { + "translateY": 0, + }, + ], } } - testID="badgenetwork" > <View + onLayout={[Function]} style={ { "alignItems": "center", - "backgroundColor": "#ffffff", - "borderColor": "#ffffff", - "borderRadius": 8, - "borderWidth": 2, - "height": 32, + "aspectRatio": 1, + "height": "50%", "justifyContent": "center", - "overflow": "hidden", - "shadowColor": "#0000001A", - "shadowOffset": { - "height": 2, - "width": 0, - }, - "shadowOpacity": 1, - "shadowRadius": 4, - "transform": [ - { - "scale": 1, - }, - ], - "width": 32, + "maxHeight": 24, + "minHeight": 8, + "opacity": 0, } } + testID="badgenetwork" > - <Image - onError={[Function]} - resizeMode="contain" - source={1} + <View style={ { + "alignItems": "center", + "backgroundColor": "#ffffff", + "borderColor": "#ffffff", + "borderRadius": 8, + "borderWidth": 2, "height": 32, + "justifyContent": "center", + "overflow": "hidden", + "shadowColor": "#0000001a", + "shadowOffset": { + "height": 2, + "width": 0, + }, + "shadowOpacity": 1, + "shadowRadius": 4, + "transform": [ + { + "scale": 1, + }, + ], "width": 32, } } - testID="network-avatar-image" - /> + > + <Image + onError={[Function]} + resizeMode="contain" + source={1} + style={ + { + "height": 32, + "width": 32, + } + } + testID="network-avatar-image" + /> + </View> </View> </View> </View> - </View> - <View - flexDirection="column" - gap={4} - style={ - [ - { - "flexDirection": "column", - "gap": 4, - }, - { - "flex": 1, - "marginLeft": 8, - }, - ] - } - > - <Text - accessibilityRole="text" + <View + flexDirection="column" + gap={4} style={ - { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 16, - "fontWeight": "500", - "letterSpacing": 0, - "lineHeight": 24, - } + [ + { + "flexDirection": "column", + "gap": 4, + }, + { + "flex": 1, + "marginLeft": 8, + }, + ] } > - ETH - </Text> - <Text - accessibilityRole="text" - style={ - { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, - "fontWeight": "400", - "letterSpacing": 0, - "lineHeight": 22, + <Text + accessibilityRole="text" + style={ + { + "color": "#121314", + "fontFamily": "CentraNo1-Medium", + "fontSize": 18, + "fontWeight": "500", + "letterSpacing": 0, + "lineHeight": 24, + } } - } - > - Ethereum - </Text> - </View> - <View - style={ - { - "alignItems": "flex-end", - "alignSelf": "flex-end", - "flex": 1, - } - } - > - <Text - accessibilityRole="text" - style={ - { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 16, - "fontWeight": "500", - "letterSpacing": 0, - "lineHeight": 24, + > + ETH + </Text> + <Text + accessibilityRole="text" + style={ + { + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, + "fontWeight": "400", + "letterSpacing": 0, + "lineHeight": 24, + } } - } - testID="balance-test-id" - > - $6000 - </Text> - <Text - accessibilityRole="text" + > + Ethereum + </Text> + </View> + <View style={ - { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, - "fontWeight": "400", - "letterSpacing": 0, - "lineHeight": 22, - "paddingHorizontal": 0, - "textTransform": "uppercase", - } + [ + {}, + { + "alignItems": "flex-end", + "flex": 1, + }, + ] } - testID="secondary-balance-test-id" > - 3 ETH - </Text> + <Text + accessibilityRole="text" + style={ + { + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, + "fontWeight": "400", + "letterSpacing": 0, + "lineHeight": 24, + } + } + > + $6000 + </Text> + <Text + accessibilityRole="text" + style={ + { + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, + "fontWeight": "400", + "letterSpacing": 0, + "lineHeight": 24, + } + } + > + 3 ETH + </Text> + </View> </View> </TouchableOpacity> </View> diff --git a/app/components/UI/Bridge/components/BridgeSourceTokenSelector/index.tsx b/app/components/UI/Bridge/components/BridgeSourceTokenSelector/index.tsx index d3f5e7f354c5..114b53742f66 100644 --- a/app/components/UI/Bridge/components/BridgeSourceTokenSelector/index.tsx +++ b/app/components/UI/Bridge/components/BridgeSourceTokenSelector/index.tsx @@ -1,49 +1,74 @@ import React, { useCallback, useMemo } from 'react'; import { useSelector, useDispatch } from 'react-redux'; import { useNavigation } from '@react-navigation/native'; -import { TokenI } from '../../../Tokens/types'; import { Hex } from '@metamask/utils'; -import { selectNetworkConfigurations } from '../../../../../selectors/networkController'; -import { selectSelectedSourceChainIds, selectEnabledSourceChains, setSourceToken, selectSourceToken } from '../../../../../core/redux/slices/bridge'; +import { selectEvmNetworkConfigurationsByChainId, selectNetworkConfigurations } from '../../../../../selectors/networkController'; +import { selectSelectedSourceChainIds, selectEnabledSourceChains, setSourceToken, selectSourceToken, selectDestToken } from '../../../../../core/redux/slices/bridge'; import { getNetworkImageSource } from '../../../../../util/networks'; import { TokenSelectorItem } from '../TokenSelectorItem'; -import { TokenIWithFiatAmount } from '../../hooks/useTokensWithBalance'; import { useSortedSourceNetworks } from '../../hooks/useSortedSourceNetworks'; import { BridgeSourceNetworksBar, MAX_NETWORK_ICONS } from '../BridgeSourceNetworksBar'; import { BridgeTokenSelectorBase } from '../BridgeTokenSelectorBase'; -import { useSourceTokens } from '../../hooks/useSourceTokens'; +import { useTokens } from '../../hooks/useTokens'; +import { BridgeToken } from '../../types'; +import { useSwitchNetworks } from '../../../../Views/NetworkSelector/useSwitchNetworks'; +import { useNetworkInfo } from '../../../../../selectors/selectedNetworkController'; export const BridgeSourceTokenSelector: React.FC = () => { const dispatch = useDispatch(); const navigation = useNavigation(); - const networkConfigurations = useSelector(selectNetworkConfigurations); + const evmNetworkConfigurations = useSelector(selectEvmNetworkConfigurationsByChainId); + const allNetworkConfigurations = useSelector(selectNetworkConfigurations); const enabledSourceChains = useSelector(selectEnabledSourceChains); const selectedSourceChainIds = useSelector(selectSelectedSourceChainIds); - const tokensList = useSourceTokens(); const { sortedSourceNetworks } = useSortedSourceNetworks(); const selectedSourceToken = useSelector(selectSourceToken); + const selectedDestToken = useSelector(selectDestToken); + const { + chainId: selectedChainId, + domainIsConnectedDapp, + networkName: selectedNetworkName, + } = useNetworkInfo(); + const { onSetRpcTarget } = useSwitchNetworks({ + domainIsConnectedDapp, + selectedChainId, + selectedNetworkName, + }); - const renderItem = useCallback(({ item }: { item: TokenIWithFiatAmount }) => { - const handleTokenPress = (token: TokenI) => { + const { tokens: tokensList, pending } = useTokens({ + topTokensChainId: selectedSourceToken?.chainId as Hex, + balanceChainIds: selectedSourceChainIds as Hex[], + tokensToExclude: selectedDestToken ? [selectedDestToken] : [], + }); + + const renderItem = useCallback(({ item }: { item: BridgeToken }) => { + const handleTokenPress = async (token: BridgeToken) => { dispatch(setSourceToken(token)); + + // Switch to the chain of the selected token + const networkConfiguration = evmNetworkConfigurations[token.chainId]; + if (networkConfiguration) { + await onSetRpcTarget(networkConfiguration); + } + navigation.goBack(); }; return ( - <TokenSelectorItem - token={item} - onPress={handleTokenPress} - networkName={networkConfigurations[item.chainId as Hex].name} - //@ts-expect-error - The utils/network file is still JS and this function expects a networkType, and should be optional - networkImageSource={getNetworkImageSource({ chainId: item.chainId as Hex })} - isSelected={ - selectedSourceToken?.address === item.address && - selectedSourceToken?.chainId === item.chainId - } + <TokenSelectorItem + token={item} + onPress={handleTokenPress} + networkName={allNetworkConfigurations[item.chainId as Hex].name} + //@ts-expect-error - The utils/network file is still JS and this function expects a networkType, and should be optional + networkImageSource={getNetworkImageSource({ chainId: item.chainId })} + isSelected={ + selectedSourceToken?.address === item.address && + selectedSourceToken?.chainId === item.chainId + } /> ); - }, [dispatch, navigation, networkConfigurations, selectedSourceToken]); + }, [dispatch, navigation, evmNetworkConfigurations, allNetworkConfigurations, selectedSourceToken, onSetRpcTarget]); const networksToShow = useMemo(() => sortedSourceNetworks @@ -57,13 +82,14 @@ export const BridgeSourceTokenSelector: React.FC = () => { networksBar={ <BridgeSourceNetworksBar networksToShow={networksToShow} - networkConfigurations={networkConfigurations} + networkConfigurations={allNetworkConfigurations} selectedSourceChainIds={selectedSourceChainIds as Hex[]} enabledSourceChains={enabledSourceChains} /> } renderTokenItem={renderItem} tokensList={tokensList} + pending={pending} /> ); }; diff --git a/app/components/UI/Bridge/components/BridgeTokenSelectorBase.tsx b/app/components/UI/Bridge/components/BridgeTokenSelectorBase.tsx index f2430273b62d..4e6079c732ef 100644 --- a/app/components/UI/Bridge/components/BridgeTokenSelectorBase.tsx +++ b/app/components/UI/Bridge/components/BridgeTokenSelectorBase.tsx @@ -1,19 +1,26 @@ import React, { useCallback, useMemo, useRef } from 'react'; import { StyleSheet, FlatList, TouchableOpacity } from 'react-native'; import { Box } from '../../Box/Box'; -import Text, { TextVariant, TextColor } from '../../../../component-library/components/Texts/Text'; +import Text, { + TextVariant, + TextColor, +} from '../../../../component-library/components/Texts/Text'; import { useStyles } from '../../../../component-library/hooks'; import { Theme } from '../../../../util/theme/models'; import BottomSheetHeader from '../../../../component-library/components/BottomSheets/BottomSheetHeader'; -import BottomSheet, { BottomSheetRef } from '../../../../component-library/components/BottomSheets/BottomSheet'; -import { TokenI } from '../../Tokens/types'; -import Icon, { IconName } from '../../../../component-library/components/Icons/Icon'; +import BottomSheet, { + BottomSheetRef, +} from '../../../../component-library/components/BottomSheets/BottomSheet'; +import Icon, { + IconName, +} from '../../../../component-library/components/Icons/Icon'; import { IconSize } from '../../../../component-library/components/Icons/Icon/Icon.types'; -import { TokenIWithFiatAmount } from '../hooks/useTokensWithBalance'; import { strings } from '../../../../../locales/i18n'; import { FlexDirection, AlignItems, JustifyContent } from '../../Box/box.types'; import { useTokenSearch } from '../hooks/useTokenSearch'; import TextFieldSearch from '../../../../component-library/components/Form/TextFieldSearch'; +import { BridgeToken } from '../types'; +import { Skeleton } from '../../../../component-library/components/Skeleton'; const createStyles = (params: { theme: Theme }) => { const { theme } = params; @@ -44,34 +51,89 @@ const createStyles = (params: { theme: Theme }) => { paddingHorizontal: 16, paddingVertical: 12, }, + loadingSkeleton: { + padding: 16, + }, + skeletonCircle: { + borderRadius: 15, + }, + // Need the flex 1 to make sure this doesn't disappear when FlexDirection.Row is used + skeletonItem: { + flex: 1, + } }); }; +const SkeletonItem = () => { + const { styles } = useStyles(createStyles, {}); + + return ( + <Box + gap={16} + flexDirection={FlexDirection.Row} + alignItems={AlignItems.center} + > + <Skeleton height={30} width={30} style={styles.skeletonCircle} /> + + <Box gap={4} style={styles.skeletonItem}> + <Skeleton height={24} width={'96%'} /> + <Skeleton height={24} width={'37%'} /> + </Box> + + <Icon name={IconName.Info} /> + </Box> + ); +}; + +const LoadingSkeleton = () => { + const { styles } = useStyles(createStyles, {}); + + return ( + <Box style={styles.loadingSkeleton} gap={20}> + <SkeletonItem /> + <SkeletonItem /> + <SkeletonItem /> + <SkeletonItem /> + <SkeletonItem /> + <SkeletonItem /> + <SkeletonItem /> + <SkeletonItem /> + <SkeletonItem /> + <SkeletonItem /> + </Box> + ); +}; + interface BridgeTokenSelectorBaseProps { networksBar: React.ReactNode; - renderTokenItem: ({ item }: { item: TokenIWithFiatAmount }) => React.JSX.Element; - tokensList: TokenIWithFiatAmount[]; + renderTokenItem: ({ item }: { item: BridgeToken }) => React.JSX.Element; + tokensList: BridgeToken[]; + pending?: boolean; } -export const BridgeTokenSelectorBase: React.FC<BridgeTokenSelectorBaseProps> = ({ - networksBar, - renderTokenItem, - tokensList, -}) => { +export const BridgeTokenSelectorBase: React.FC< + BridgeTokenSelectorBaseProps +> = ({ networksBar, renderTokenItem, tokensList, pending }) => { const { styles, theme } = useStyles(createStyles, {}); const { searchString, setSearchString, searchResults } = useTokenSearch({ tokens: tokensList || [], }); - const tokensToRender = useMemo(() => - searchString ? searchResults : tokensList, - [searchString, searchResults, tokensList] + const tokensToRender = useMemo( + () => (searchString ? searchResults : tokensList), + [searchString, searchResults, tokensList], ); - const keyExtractor = useCallback((token: TokenI) => `${token.chainId}-${token.address}`, []); + const keyExtractor = useCallback( + (token: BridgeToken) => `${token.chainId}-${token.address}`, + [], + ); - const handleSearchTextChange = useCallback((text: string) => { - setSearchString(text); - }, [setSearchString]); + const handleSearchTextChange = useCallback( + (text: string) => { + setSearchString(text); + }, + [setSearchString], + ); const renderEmptyList = useMemo( () => ( @@ -90,10 +152,7 @@ export const BridgeTokenSelectorBase: React.FC<BridgeTokenSelectorBaseProps> = ( }; return ( - <BottomSheet - isFullscreen - ref={modalRef} - > + <BottomSheet isFullscreen ref={modalRef}> <Box style={styles.content}> <Box gap={4}> <BottomSheetHeader> @@ -129,14 +188,14 @@ export const BridgeTokenSelectorBase: React.FC<BridgeTokenSelectorBaseProps> = ( onChangeText={handleSearchTextChange} placeholder={strings('swaps.search_token')} testID="bridge-token-search-input" - /> + /> </Box> <FlatList - data={tokensToRender} + data={pending ? [] : tokensToRender} renderItem={renderTokenItem} keyExtractor={keyExtractor} - ListEmptyComponent={renderEmptyList} + ListEmptyComponent={searchString ? renderEmptyList : LoadingSkeleton} /> </Box> </BottomSheet> diff --git a/app/components/UI/Bridge/components/QuoteDetailsCard/QuoteDetailsCard.styles.ts b/app/components/UI/Bridge/components/QuoteDetailsCard/QuoteDetailsCard.styles.ts new file mode 100644 index 000000000000..7eac89d92f02 --- /dev/null +++ b/app/components/UI/Bridge/components/QuoteDetailsCard/QuoteDetailsCard.styles.ts @@ -0,0 +1,30 @@ +import { StyleSheet } from 'react-native'; +import { Theme } from '../../../../../util/theme/models'; + +const createStyles = ({ colors }: Theme) => + StyleSheet.create({ + container: { + backgroundColor: colors.background.default, + borderWidth: 1, + borderRadius: 8, + borderColor: colors.border.muted, + overflow: 'hidden', + paddingVertical: 12, + paddingHorizontal: 16, + gap: 12, + }, + gradientContainer: { + position: 'absolute', + bottom: 0, + left: 0, + right: 0, + height: 30, + }, + networkContainer: { + flexDirection: 'row', + flexWrap: 'wrap', + maxWidth: '80%', + }, + }); + +export default createStyles; diff --git a/app/components/UI/Bridge/components/QuoteDetailsCard/QuoteDetailsCard.test.tsx b/app/components/UI/Bridge/components/QuoteDetailsCard/QuoteDetailsCard.test.tsx new file mode 100644 index 000000000000..1507d070d58c --- /dev/null +++ b/app/components/UI/Bridge/components/QuoteDetailsCard/QuoteDetailsCard.test.tsx @@ -0,0 +1,224 @@ +import { fireEvent } from '@testing-library/react-native'; +import { + renderScreen, + DeepPartial, +} from '../../../../../util/test/renderWithProvider'; +import QuoteDetailsCard from './QuoteDetailsCard'; +import { strings } from '../../../../../../locales/i18n'; +import Routes from '../../../../../constants/navigation/Routes'; +import { defaultBridgeControllerState } from '../../../../../core/Engine/controllers/bridge-controller/constants'; +import mockQuotes from '../../_mocks_/mock-quotes-native-erc20.json'; +import { QuoteResponse } from '@metamask/bridge-controller'; +import { mockNetworkState } from '../../../../../util/test/network'; +import { RpcEndpointType } from '@metamask/network-controller'; +import { mockBridgeReducerState } from '../../_mocks_/bridgeReducerState'; +import initialRootState from '../../../../../util/test/initial-root-state'; +import { RootState } from '../../../../../reducers'; +import { ChainId } from '@metamask/controller-utils'; +import { createMockInternalAccount } from '../../../../../util/test/accountsControllerTestUtils'; + +const mockNavigate = jest.fn(); +jest.mock('@react-navigation/native', () => ({ + ...jest.requireActual('@react-navigation/native'), + useNavigation: () => ({ + navigate: mockNavigate, + }), +})); + +describe('QuoteDetailsCard', () => { + const mockAccount = createMockInternalAccount( + '0x1234567890123456789012345678901234567890', + 'Test Account', + ); + + const initialState: DeepPartial<RootState> = { + engine: { + backgroundState: { + ...initialRootState, + BridgeController: { + ...defaultBridgeControllerState, + quotes: mockQuotes as unknown as QuoteResponse[], + }, + NetworkController: { + ...mockNetworkState( + { + chainId: ChainId.mainnet, + id: 'mainnet', + nickname: 'Ethereum', + ticker: 'ETH', + type: RpcEndpointType.Infura, + rpcUrl: 'https://eth-mainnet.alchemyapi.io/v2/demo', + }, + { + chainId: ChainId['linea-mainnet'], + id: 'linea', + nickname: 'Linea', + ticker: 'LINEA', + type: RpcEndpointType.Custom, + rpcUrl: 'https://linea-rpc.com', + }, + ), + }, + MultichainNetworkController: { + multichainNetworkConfigurationsByChainId: {}, + }, + AccountsController: { + internalAccounts: { + accounts: { + [mockAccount.id]: mockAccount, + }, + selectedAccount: mockAccount.id, + }, + }, + }, + }, + bridge: mockBridgeReducerState, + }; + + beforeEach(() => { + jest.clearAllMocks(); + }); + + it('renders initial state', () => { + const { toJSON } = renderScreen( + QuoteDetailsCard, + { + name: Routes.BRIDGE.ROOT, + }, + { state: initialState }, + ); + expect(toJSON()).toMatchSnapshot(); + }); + + it('renders expanded state', () => { + const { getByLabelText, toJSON } = renderScreen( + QuoteDetailsCard, + { + name: Routes.BRIDGE.ROOT, + }, + { state: initialState }, + ); + + // Expand the accordion + const expandButton = getByLabelText('Expand quote details'); + fireEvent.press(expandButton); + + expect(toJSON()).toMatchSnapshot(); + }); + + it('displays fee amount', () => { + const { getByText } = renderScreen( + QuoteDetailsCard, + { + name: Routes.BRIDGE.ROOT, + }, + { state: initialState }, + ); + + expect(getByText('$0.01')).toBeDefined(); + }); + + it('displays processing time', () => { + const { getByText } = renderScreen( + QuoteDetailsCard, + { + name: Routes.BRIDGE.ROOT, + }, + { state: initialState }, + ); + + expect(getByText('1 min')).toBeDefined(); + }); + + it('displays quote rate', () => { + const { getByText } = renderScreen( + QuoteDetailsCard, + { + name: Routes.BRIDGE.ROOT, + }, + { state: initialState }, + ); + + expect(getByText('1 ETH = 0.0 USDC')).toBeDefined(); + }); + + it('toggles content visibility on chevron press', () => { + const { getByLabelText, queryByText } = renderScreen( + QuoteDetailsCard, + { + name: Routes.BRIDGE.ROOT, + }, + { state: initialState }, + ); + + // Initially price impact should not be visible + expect(queryByText(strings('bridge.price_impact'))).toBeNull(); + + // Press chevron to expand + const expandButton = getByLabelText('Expand quote details'); + fireEvent.press(expandButton); + + // After expansion, price impact should be visible + expect(queryByText(strings('bridge.price_impact'))).toBeDefined(); + expect(queryByText('-0.06%')).toBeDefined(); + + // Press chevron again to collapse + fireEvent.press(expandButton); + + // After collapse, price impact should not be visible + expect(queryByText(strings('bridge.price_impact'))).toBeNull(); + }); + + it('navigates to slippage modal on edit press', () => { + const { getByLabelText, getByTestId } = renderScreen( + QuoteDetailsCard, + { + name: Routes.BRIDGE.ROOT, + }, + { state: initialState }, + ); + + // Expand the accordion first + const expandButton = getByLabelText('Expand quote details'); + fireEvent.press(expandButton); + + // Find and press the edit button + const editButton = getByTestId('edit-slippage-button'); + fireEvent.press(editButton); + + // Check if navigation was called with correct params + expect(mockNavigate).toHaveBeenCalledWith(Routes.BRIDGE.MODALS.ROOT, { + screen: Routes.BRIDGE.MODALS.SLIPPAGE_MODAL, + }); + }); + + it('displays network names', () => { + const { getByText } = renderScreen( + QuoteDetailsCard, + { + name: Routes.BRIDGE.ROOT, + }, + { state: initialState }, + ); + + expect(getByText('Ethereum')).toBeDefined(); + expect(getByText('Linea')).toBeDefined(); + }); + + it('displays slippage value', () => { + const { getByLabelText, getByText } = renderScreen( + QuoteDetailsCard, + { + name: Routes.BRIDGE.ROOT, + }, + { state: initialState }, + ); + + // Expand the accordion first + const expandButton = getByLabelText('Expand quote details'); + fireEvent.press(expandButton); + + // Verify slippage value + expect(getByText('0.5%')).toBeDefined(); + }); +}); diff --git a/app/components/UI/Bridge/components/QuoteDetailsCard/QuoteDetailsCard.tsx b/app/components/UI/Bridge/components/QuoteDetailsCard/QuoteDetailsCard.tsx new file mode 100644 index 000000000000..ed3ce62442ac --- /dev/null +++ b/app/components/UI/Bridge/components/QuoteDetailsCard/QuoteDetailsCard.tsx @@ -0,0 +1,334 @@ +import React, { useState, useCallback } from 'react'; +import { + TouchableOpacity, + LayoutAnimation, + Platform, + UIManager, +} from 'react-native'; +import { useNavigation } from '@react-navigation/native'; +import { strings } from '../../../../../../locales/i18n'; +import Text, { + TextVariant, +} from '../../../../../component-library/components/Texts/Text'; +import { useTheme } from '../../../../../util/theme'; +import createStyles from './QuoteDetailsCard.styles'; +import Icon, { + IconColor, + IconName, + IconSize, +} from '../../../../../component-library/components/Icons/Icon'; +import KeyValueRow from '../../../../../component-library/components-temp/KeyValueRow'; +import { TooltipSizes } from '../../../../../component-library/components-temp/KeyValueRow/KeyValueRow.types'; +import Animated, { + interpolate, + useAnimatedStyle, + useSharedValue, + withTiming, +} from 'react-native-reanimated'; +import Svg, { Defs, LinearGradient, Rect, Stop } from 'react-native-svg'; +import { Box } from '../../../Box/Box'; +import { + FlexDirection, + AlignItems, + JustifyContent, +} from '../../../Box/box.types'; +import Routes from '../../../../../constants/navigation/Routes'; +import { BadgeVariant } from '../../../../../component-library/components/Badges/Badge/Badge.types'; +import Badge from '../../../../../component-library/components/Badges/Badge'; +import { getNetworkImageSource } from '../../../../../util/networks'; +import { AvatarSize } from '../../../../../component-library/components/Avatars/Avatar/Avatar.types'; +import mockQuotes from '../../_mocks_/mock-quotes-native-erc20.json'; +import { QuoteResponse } from '@metamask/bridge-controller'; +import { useSelector } from 'react-redux'; +import { + selectDestToken, + selectSlippage, + selectSourceToken, +} from '../../../../../core/redux/slices/bridge'; +import { selectNetworkConfigurations } from '../../../../../selectors/networkController'; + +// Enable Layout Animation on Android +if (Platform.OS === 'android') { + if (UIManager.setLayoutAnimationEnabledExperimental) { + UIManager.setLayoutAnimationEnabledExperimental(true); + } +} + +const ANIMATION_DURATION_MS = 300; + +interface NetworkBadgeProps { + chainId: string; +} + +const NetworkBadge = ({ chainId }: NetworkBadgeProps) => { + const networkConfigurations = useSelector(selectNetworkConfigurations); + const networkConfig = networkConfigurations[chainId]; + const displayName = networkConfig?.name || ''; + + return ( + <Box + flexDirection={FlexDirection.Row} + alignItems={AlignItems.center} + gap={2} + > + <Badge + variant={BadgeVariant.Network} + //@ts-expect-error - The utils/network file is still JS and this function expects a networkType, and should be optional + imageSource={getNetworkImageSource({ chainId })} + isScaled={false} + size={AvatarSize.Sm} + /> + <Text variant={TextVariant.BodyMDMedium}>{displayName}</Text> + </Box> + ); +}; + +// Using first quote from mock data +const quoteDetails = mockQuotes[0] as unknown as QuoteResponse; //TODO: Remove this once we have a real quote from the controller MMS-1886 + +const QuoteDetailsCard = () => { + const theme = useTheme(); + const navigation = useNavigation(); + const styles = createStyles(theme); + const [isExpanded, setIsExpanded] = useState(false); + const rotationValue = useSharedValue(0); + + const slippage = useSelector(selectSlippage); + const sourceToken = useSelector(selectSourceToken); + const destToken = useSelector(selectDestToken); + + const toggleAccordion = useCallback(() => { + LayoutAnimation.configureNext( + LayoutAnimation.create( + ANIMATION_DURATION_MS, + LayoutAnimation.Types.easeInEaseOut, + LayoutAnimation.Properties.opacity, + ), + ); + + const newExpandedState = !isExpanded; + setIsExpanded(newExpandedState); + rotationValue.value = withTiming(newExpandedState ? 1 : 0, { + duration: ANIMATION_DURATION_MS, + }); + }, [isExpanded, rotationValue]); + + const arrowStyle = useAnimatedStyle(() => { + const rotation = interpolate(rotationValue.value, [0, 1], [0, 180]); + return { + transform: [{ rotate: `${rotation}deg` }], + }; + }); + + const handleQuoteInfoPress = () => { + navigation.navigate(Routes.BRIDGE.MODALS.ROOT, { + screen: Routes.BRIDGE.MODALS.QUOTE_INFO_MODAL, + }); + }; + + const handleSlippagePress = () => { + navigation.navigate(Routes.BRIDGE.MODALS.ROOT, { + screen: Routes.BRIDGE.MODALS.SLIPPAGE_MODAL, + }); + }; + + if (!quoteDetails || !sourceToken?.chainId || !destToken?.chainId) { + return null; + } + + const isSameChainId = sourceToken.chainId === destToken.chainId; + + const { quote, estimatedProcessingTimeInSeconds } = quoteDetails; + + // Format the data for display + const quoteData = { + networkFee: '$0.01', // TODO: Calculate from quote.feeData + estimatedTime: `${Math.ceil(estimatedProcessingTimeInSeconds / 60)} min`, + rate: `1 ${sourceToken.symbol} = ${( + Number(quote.destTokenAmount) / Number(quote.srcTokenAmount) + ).toFixed(1)} ${destToken.symbol}`, + priceImpact: '-0.06%', // TODO: Calculate from quote data + slippage: `${slippage}%`, // TODO: Get from bridge settings + srcChainId: sourceToken.chainId, + destChainId: destToken.chainId, + }; + + return ( + <Box style={styles.container}> + <Box + flexDirection={FlexDirection.Row} + alignItems={AlignItems.center} + justifyContent={JustifyContent.spaceBetween} + > + {!isSameChainId ? ( + <Box + flexDirection={FlexDirection.Row} + alignItems={AlignItems.center} + style={styles.networkContainer} + > + <NetworkBadge chainId={quoteData.srcChainId} /> + <Icon name={IconName.Arrow2Right} size={IconSize.Sm} /> + <NetworkBadge chainId={quoteData.destChainId} /> + </Box> + ) : ( + <Box> + <></> + </Box> + )} + <Box> + <Animated.View style={arrowStyle}> + <TouchableOpacity + onPress={toggleAccordion} + activeOpacity={0.7} + accessibilityRole="button" + accessibilityLabel={ + isExpanded ? 'Collapse quote details' : 'Expand quote details' + } + testID="expand-quote-details" + > + <Icon + name={IconName.ArrowDown} + size={IconSize.Sm} + color={theme.colors.icon.muted} + /> + </TouchableOpacity> + </Animated.View> + </Box> + </Box> + + {/* Always visible content */} + <KeyValueRow + field={{ + label: { + text: strings('bridge.network_fee') || 'Network fee', + variant: TextVariant.BodyMDMedium, + }, + }} + value={{ + label: { + text: quoteData.networkFee, + variant: TextVariant.BodyMD, + }, + }} + /> + + <KeyValueRow + field={{ + label: { + text: strings('bridge.time') || 'Time', + variant: TextVariant.BodyMDMedium, + }, + }} + value={{ + label: { + text: quoteData.estimatedTime, + variant: TextVariant.BodyMD, + }, + }} + /> + + {/* Quote info with gradient overlay */} + <Box> + <KeyValueRow + field={{ + label: { + text: strings('bridge.quote') || 'Quote', + variant: TextVariant.BodyMDMedium, + }, + tooltip: { + title: strings('bridge.quote_info_title'), + content: strings('bridge.quote_info_content'), + onPress: handleQuoteInfoPress, + size: TooltipSizes.Sm, + }, + }} + value={{ + label: { text: quoteData.rate, variant: TextVariant.BodyMD }, + }} + /> + {!isExpanded && ( + <Box style={styles.gradientContainer}> + <Svg height="30" width="100%"> + <Defs> + <LinearGradient id="fadeGradient" x1="0" y1="0" x2="0" y2="1"> + <Stop + offset="0" + stopColor={theme.colors.background.default} + stopOpacity="0" + /> + <Stop + offset="1" + stopColor={theme.colors.background.default} + stopOpacity="1" + /> + </LinearGradient> + </Defs> + <Rect + x="0" + y="0" + width="100%" + height="30" + fill="url(#fadeGradient)" + /> + </Svg> + </Box> + )} + </Box> + + {/* Expandable content */} + {isExpanded && ( + <Box gap={12}> + <KeyValueRow + field={{ + label: { + text: strings('bridge.price_impact') || 'Price Impact', + variant: TextVariant.BodyMDMedium, + }, + }} + value={{ + label: { + text: quoteData.priceImpact, + variant: TextVariant.BodyMD, + }, + }} + /> + + <KeyValueRow + field={{ + label: ( + <Box + flexDirection={FlexDirection.Row} + alignItems={AlignItems.center} + gap={4} + > + <Text variant={TextVariant.BodyMDMedium}> + {strings('bridge.slippage') || 'Slippage'} + </Text> + <TouchableOpacity + onPress={handleSlippagePress} + activeOpacity={0.6} + testID="edit-slippage-button" + > + <Icon + name={IconName.Edit} + size={IconSize.Xs} + color={IconColor.Muted} + /> + </TouchableOpacity> + </Box> + ), + }} + value={{ + label: { + text: quoteData.slippage, + variant: TextVariant.BodyMD, + }, + }} + /> + </Box> + )} + </Box> + ); +}; + +export default QuoteDetailsCard; diff --git a/app/components/UI/Bridge/components/QuoteDetailsCard/QuoteDetailsCard.types.ts b/app/components/UI/Bridge/components/QuoteDetailsCard/QuoteDetailsCard.types.ts new file mode 100644 index 000000000000..0cfc7c96e950 --- /dev/null +++ b/app/components/UI/Bridge/components/QuoteDetailsCard/QuoteDetailsCard.types.ts @@ -0,0 +1,43 @@ +export interface QuoteDetailsCardProps { + /** + * Source network name + */ + sourceNetwork: { + name: string; + iconUrl?: string; + }; + /** + * Destination network name + */ + destNetwork: { + name: string; + iconUrl?: string; + }; + /** + * Network fee in USD + */ + networkFee: string; + /** + * Estimated time for the transaction + */ + estimatedTime: string; + /** + * Quote details + */ + quote: { + rate: string; + priceImpact: string; + }; + /** + * Current slippage setting + */ + slippage: string; + /** + * Callback when slippage is pressed + */ + onSlippagePress: () => void; + /** + * ID for testing purposes + */ + testID?: string; +} diff --git a/app/components/UI/Bridge/components/QuoteDetailsCard/__snapshots__/QuoteDetailsCard.test.tsx.snap b/app/components/UI/Bridge/components/QuoteDetailsCard/__snapshots__/QuoteDetailsCard.test.tsx.snap new file mode 100644 index 000000000000..b6a69cd19a74 --- /dev/null +++ b/app/components/UI/Bridge/components/QuoteDetailsCard/__snapshots__/QuoteDetailsCard.test.tsx.snap @@ -0,0 +1,2169 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`QuoteDetailsCard renders expanded state 1`] = ` +<View + style={ + { + "flex": 1, + } + } +> + <RNCSafeAreaProvider + onInsetsChange={[Function]} + style={ + [ + { + "flex": 1, + }, + undefined, + ] + } + > + <View + collapsable={false} + pointerEvents="box-none" + style={ + { + "zIndex": 1, + } + } + > + <View + accessibilityElementsHidden={false} + importantForAccessibility="auto" + onLayout={[Function]} + pointerEvents="box-none" + style={null} + > + <View + collapsable={false} + pointerEvents="box-none" + style={ + { + "bottom": 0, + "left": 0, + "opacity": 1, + "position": "absolute", + "right": 0, + "top": 0, + "zIndex": 0, + } + } + > + <View + collapsable={false} + style={ + { + "backgroundColor": "rgb(255, 255, 255)", + "borderBottomColor": "rgb(216, 216, 216)", + "flex": 1, + "shadowColor": "rgb(216, 216, 216)", + "shadowOffset": { + "height": 0.5, + "width": 0, + }, + "shadowOpacity": 0.85, + "shadowRadius": 0, + } + } + /> + </View> + <View + collapsable={false} + pointerEvents="box-none" + style={ + { + "height": 64, + "maxHeight": undefined, + "minHeight": undefined, + "opacity": undefined, + "transform": undefined, + } + } + > + <View + pointerEvents="none" + style={ + { + "height": 20, + } + } + /> + <View + pointerEvents="box-none" + style={ + { + "alignItems": "center", + "flex": 1, + "flexDirection": "row", + "justifyContent": "center", + } + } + > + <View + collapsable={false} + pointerEvents="box-none" + style={ + { + "marginHorizontal": 16, + "opacity": 1, + } + } + > + <Text + accessibilityRole="header" + aria-level="1" + collapsable={false} + numberOfLines={1} + onLayout={[Function]} + style={ + { + "color": "rgb(28, 28, 30)", + "fontSize": 17, + "fontWeight": "600", + } + } + > + Bridge + </Text> + </View> + </View> + </View> + </View> + </View> + <RNSScreenContainer + onLayout={[Function]} + style={ + { + "flex": 1, + } + } + > + <RNSScreen + activityState={2} + collapsable={false} + gestureResponseDistance={ + { + "bottom": -1, + "end": -1, + "start": -1, + "top": -1, + } + } + pointerEvents="box-none" + style={ + { + "bottom": 0, + "left": 0, + "position": "absolute", + "right": 0, + "top": 0, + } + } + > + <View + collapsable={false} + style={ + { + "opacity": 1, + } + } + /> + <View + accessibilityElementsHidden={false} + closing={false} + gestureVelocityImpact={0.3} + importantForAccessibility="auto" + onClose={[Function]} + onGestureBegin={[Function]} + onGestureCanceled={[Function]} + onGestureEnd={[Function]} + onOpen={[Function]} + onTransition={[Function]} + pointerEvents="box-none" + style={ + [ + { + "overflow": undefined, + }, + { + "bottom": 0, + "left": 0, + "position": "absolute", + "right": 0, + "top": 0, + }, + ] + } + transitionSpec={ + { + "close": { + "animation": "spring", + "config": { + "damping": 500, + "mass": 3, + "overshootClamping": true, + "restDisplacementThreshold": 10, + "restSpeedThreshold": 10, + "stiffness": 1000, + }, + }, + "open": { + "animation": "spring", + "config": { + "damping": 500, + "mass": 3, + "overshootClamping": true, + "restDisplacementThreshold": 10, + "restSpeedThreshold": 10, + "stiffness": 1000, + }, + }, + } + } + > + <View + collapsable={false} + needsOffscreenAlphaCompositing={false} + pointerEvents="box-none" + style={ + { + "flex": 1, + } + } + > + <View + collapsable={false} + onGestureHandlerEvent={[Function]} + onGestureHandlerStateChange={[Function]} + style={ + { + "flex": 1, + "transform": [ + { + "translateX": 0, + }, + { + "translateX": 0, + }, + ], + } + } + > + <View + collapsable={false} + pointerEvents="none" + style={ + { + "backgroundColor": "rgb(242, 242, 242)", + "bottom": 0, + "left": 0, + "position": "absolute", + "shadowColor": "#000", + "shadowOffset": { + "height": 1, + "width": -1, + }, + "shadowOpacity": 0.3, + "shadowRadius": 5, + "top": 0, + "width": 3, + } + } + /> + <View + style={ + [ + { + "flex": 1, + "overflow": "hidden", + }, + [ + { + "backgroundColor": "rgb(242, 242, 242)", + }, + undefined, + ], + ] + } + > + <View + style={ + { + "flex": 1, + "flexDirection": "column-reverse", + } + } + > + <View + style={ + { + "flex": 1, + } + } + > + <View + style={ + [ + {}, + { + "backgroundColor": "#ffffff", + "borderColor": "#b7bbc866", + "borderRadius": 8, + "borderWidth": 1, + "gap": 12, + "overflow": "hidden", + "paddingHorizontal": 16, + "paddingVertical": 12, + }, + ] + } + > + <View + alignItems="center" + flexDirection="row" + justifyContent="space-between" + style={ + [ + { + "alignItems": "center", + "flexDirection": "row", + "justifyContent": "space-between", + }, + undefined, + ] + } + > + <View + alignItems="center" + flexDirection="row" + style={ + [ + { + "alignItems": "center", + "flexDirection": "row", + }, + { + "flexDirection": "row", + "flexWrap": "wrap", + "maxWidth": "80%", + }, + ] + } + > + <View + alignItems="center" + flexDirection="row" + gap={2} + style={ + [ + { + "alignItems": "center", + "flexDirection": "row", + "gap": 2, + }, + undefined, + ] + } + > + <View + onLayout={[Function]} + style={{}} + testID="badgenetwork" + > + <View + style={ + { + "alignItems": "center", + "backgroundColor": "#ffffff", + "borderColor": "#ffffff", + "borderRadius": 8, + "borderWidth": 1.5, + "height": 24, + "justifyContent": "center", + "overflow": "hidden", + "shadowColor": "#0000001a", + "shadowOffset": { + "height": 2, + "width": 0, + }, + "shadowOpacity": 1, + "shadowRadius": 4, + "width": 24, + } + } + > + <Image + onError={[Function]} + resizeMode="contain" + source={1} + style={ + { + "height": 24, + "width": 24, + } + } + testID="network-avatar-image" + /> + </View> + </View> + <Text + accessibilityRole="text" + style={ + { + "color": "#121314", + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, + "fontWeight": "500", + "letterSpacing": 0, + "lineHeight": 24, + } + } + > + Ethereum + </Text> + </View> + <SvgMock + color="#121314" + height={16} + name="Arrow2Right" + style={ + { + "height": 16, + "width": 16, + } + } + width={16} + /> + <View + alignItems="center" + flexDirection="row" + gap={2} + style={ + [ + { + "alignItems": "center", + "flexDirection": "row", + "gap": 2, + }, + undefined, + ] + } + > + <View + onLayout={[Function]} + style={{}} + testID="badgenetwork" + > + <View + style={ + { + "alignItems": "center", + "backgroundColor": "#ffffff", + "borderColor": "#ffffff", + "borderRadius": 8, + "borderWidth": 1.5, + "height": 24, + "justifyContent": "center", + "overflow": "hidden", + "shadowColor": "#0000001a", + "shadowOffset": { + "height": 2, + "width": 0, + }, + "shadowOpacity": 1, + "shadowRadius": 4, + "width": 24, + } + } + > + <Image + onError={[Function]} + resizeMode="contain" + source={1} + style={ + { + "height": 24, + "width": 24, + } + } + testID="network-avatar-image" + /> + </View> + </View> + <Text + accessibilityRole="text" + style={ + { + "color": "#121314", + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, + "fontWeight": "500", + "letterSpacing": 0, + "lineHeight": 24, + } + } + > + Linea + </Text> + </View> + </View> + <View + style={ + [ + {}, + undefined, + ] + } + > + <View + style={ + { + "transform": [ + { + "rotate": "undefineddeg", + }, + ], + } + } + > + <TouchableOpacity + accessibilityLabel="Collapse quote details" + accessibilityRole="button" + activeOpacity={0.7} + onPress={[Function]} + testID="expand-quote-details" + > + <SvgMock + color="#9ca1af" + height={16} + name="ArrowDown" + style={ + { + "height": 16, + "width": 16, + } + } + width={16} + /> + </TouchableOpacity> + </View> + </View> + </View> + <View + style={ + [ + { + "alignItems": "center", + "flexDirection": "row", + "justifyContent": "space-between", + "overflow": "hidden", + }, + [ + undefined, + ], + ] + } + > + <View + style={ + { + "alignItems": "flex-start", + "flex": 1, + } + } + > + <View + style={ + { + "alignItems": "center", + "flexDirection": "row", + "gap": 8, + } + } + > + <View + style={ + { + "alignItems": "center", + "flexDirection": "row", + } + } + > + <Text + accessibilityRole="text" + style={ + { + "color": "#121314", + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, + "fontWeight": "500", + "letterSpacing": 0, + "lineHeight": 24, + } + } + testID="label" + > + Network Fee + </Text> + </View> + </View> + </View> + <View + style={ + { + "alignItems": "flex-end", + "flex": 1, + } + } + > + <View + style={ + { + "alignItems": "center", + "flexDirection": "row", + "gap": 8, + } + } + > + <View + style={ + { + "alignItems": "center", + "flexDirection": "row", + } + } + > + <Text + accessibilityRole="text" + style={ + { + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, + "fontWeight": "400", + "letterSpacing": 0, + "lineHeight": 24, + } + } + testID="label" + > + $0.01 + </Text> + </View> + </View> + </View> + </View> + <View + style={ + [ + { + "alignItems": "center", + "flexDirection": "row", + "justifyContent": "space-between", + "overflow": "hidden", + }, + [ + undefined, + ], + ] + } + > + <View + style={ + { + "alignItems": "flex-start", + "flex": 1, + } + } + > + <View + style={ + { + "alignItems": "center", + "flexDirection": "row", + "gap": 8, + } + } + > + <View + style={ + { + "alignItems": "center", + "flexDirection": "row", + } + } + > + <Text + accessibilityRole="text" + style={ + { + "color": "#121314", + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, + "fontWeight": "500", + "letterSpacing": 0, + "lineHeight": 24, + } + } + testID="label" + > + Time + </Text> + </View> + </View> + </View> + <View + style={ + { + "alignItems": "flex-end", + "flex": 1, + } + } + > + <View + style={ + { + "alignItems": "center", + "flexDirection": "row", + "gap": 8, + } + } + > + <View + style={ + { + "alignItems": "center", + "flexDirection": "row", + } + } + > + <Text + accessibilityRole="text" + style={ + { + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, + "fontWeight": "400", + "letterSpacing": 0, + "lineHeight": 24, + } + } + testID="label" + > + 1 min + </Text> + </View> + </View> + </View> + </View> + <View + style={ + [ + {}, + undefined, + ] + } + > + <View + style={ + [ + { + "alignItems": "center", + "flexDirection": "row", + "justifyContent": "space-between", + "overflow": "hidden", + }, + [ + undefined, + ], + ] + } + > + <View + style={ + { + "alignItems": "flex-start", + "flex": 1, + } + } + > + <View + style={ + { + "alignItems": "center", + "flexDirection": "row", + "gap": 8, + } + } + > + <View + style={ + { + "alignItems": "center", + "flexDirection": "row", + } + } + > + <Text + accessibilityRole="text" + style={ + { + "color": "#121314", + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, + "fontWeight": "500", + "letterSpacing": 0, + "lineHeight": 24, + } + } + testID="label" + > + Quote + </Text> + <TouchableOpacity + accessibilityLabel="Why we recommend this quote tooltip" + accessibilityRole="button" + accessible={true} + activeOpacity={1} + disabled={false} + onPress={[Function]} + onPressIn={[Function]} + onPressOut={[Function]} + style={ + { + "alignItems": "center", + "borderRadius": 8, + "height": 24, + "justifyContent": "center", + "opacity": 1, + "width": 24, + } + } + > + <SvgMock + color="#9ca1af" + height={16} + name="Question" + style={ + { + "height": 16, + "width": 16, + } + } + width={16} + /> + </TouchableOpacity> + </View> + </View> + </View> + <View + style={ + { + "alignItems": "flex-end", + "flex": 1, + } + } + > + <View + style={ + { + "alignItems": "center", + "flexDirection": "row", + "gap": 8, + } + } + > + <View + style={ + { + "alignItems": "center", + "flexDirection": "row", + } + } + > + <Text + accessibilityRole="text" + style={ + { + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, + "fontWeight": "400", + "letterSpacing": 0, + "lineHeight": 24, + } + } + testID="label" + > + 1 ETH = 0.0 USDC + </Text> + </View> + </View> + </View> + </View> + </View> + <View + gap={12} + style={ + [ + { + "gap": 12, + }, + undefined, + ] + } + > + <View + style={ + [ + { + "alignItems": "center", + "flexDirection": "row", + "justifyContent": "space-between", + "overflow": "hidden", + }, + [ + undefined, + ], + ] + } + > + <View + style={ + { + "alignItems": "flex-start", + "flex": 1, + } + } + > + <View + style={ + { + "alignItems": "center", + "flexDirection": "row", + "gap": 8, + } + } + > + <View + style={ + { + "alignItems": "center", + "flexDirection": "row", + } + } + > + <Text + accessibilityRole="text" + style={ + { + "color": "#121314", + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, + "fontWeight": "500", + "letterSpacing": 0, + "lineHeight": 24, + } + } + testID="label" + > + Price Impact + </Text> + </View> + </View> + </View> + <View + style={ + { + "alignItems": "flex-end", + "flex": 1, + } + } + > + <View + style={ + { + "alignItems": "center", + "flexDirection": "row", + "gap": 8, + } + } + > + <View + style={ + { + "alignItems": "center", + "flexDirection": "row", + } + } + > + <Text + accessibilityRole="text" + style={ + { + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, + "fontWeight": "400", + "letterSpacing": 0, + "lineHeight": 24, + } + } + testID="label" + > + -0.06% + </Text> + </View> + </View> + </View> + </View> + <View + style={ + [ + { + "alignItems": "center", + "flexDirection": "row", + "justifyContent": "space-between", + "overflow": "hidden", + }, + [ + undefined, + ], + ] + } + > + <View + style={ + { + "alignItems": "flex-start", + "flex": 1, + } + } + > + <View + style={ + { + "alignItems": "center", + "flexDirection": "row", + "gap": 8, + } + } + > + <View + style={ + { + "alignItems": "center", + "flexDirection": "row", + } + } + > + <View + alignItems="center" + flexDirection="row" + gap={4} + style={ + [ + { + "alignItems": "center", + "flexDirection": "row", + "gap": 4, + }, + undefined, + ] + } + > + <Text + accessibilityRole="text" + style={ + { + "color": "#121314", + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, + "fontWeight": "500", + "letterSpacing": 0, + "lineHeight": 24, + } + } + > + Slippage + </Text> + <TouchableOpacity + activeOpacity={0.6} + onPress={[Function]} + testID="edit-slippage-button" + > + <SvgMock + color="#9ca1af" + height={12} + name="Edit" + style={ + { + "height": 12, + "width": 12, + } + } + width={12} + /> + </TouchableOpacity> + </View> + </View> + </View> + </View> + <View + style={ + { + "alignItems": "flex-end", + "flex": 1, + } + } + > + <View + style={ + { + "alignItems": "center", + "flexDirection": "row", + "gap": 8, + } + } + > + <View + style={ + { + "alignItems": "center", + "flexDirection": "row", + } + } + > + <Text + accessibilityRole="text" + style={ + { + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, + "fontWeight": "400", + "letterSpacing": 0, + "lineHeight": 24, + } + } + testID="label" + > + 0.5% + </Text> + </View> + </View> + </View> + </View> + </View> + </View> + </View> + </View> + </View> + </View> + </View> + </View> + </RNSScreen> + </RNSScreenContainer> + </RNCSafeAreaProvider> +</View> +`; + +exports[`QuoteDetailsCard renders initial state 1`] = ` +<View + style={ + { + "flex": 1, + } + } +> + <RNCSafeAreaProvider + onInsetsChange={[Function]} + style={ + [ + { + "flex": 1, + }, + undefined, + ] + } + > + <View + collapsable={false} + pointerEvents="box-none" + style={ + { + "zIndex": 1, + } + } + > + <View + accessibilityElementsHidden={false} + importantForAccessibility="auto" + onLayout={[Function]} + pointerEvents="box-none" + style={null} + > + <View + collapsable={false} + pointerEvents="box-none" + style={ + { + "bottom": 0, + "left": 0, + "opacity": 1, + "position": "absolute", + "right": 0, + "top": 0, + "zIndex": 0, + } + } + > + <View + collapsable={false} + style={ + { + "backgroundColor": "rgb(255, 255, 255)", + "borderBottomColor": "rgb(216, 216, 216)", + "flex": 1, + "shadowColor": "rgb(216, 216, 216)", + "shadowOffset": { + "height": 0.5, + "width": 0, + }, + "shadowOpacity": 0.85, + "shadowRadius": 0, + } + } + /> + </View> + <View + collapsable={false} + pointerEvents="box-none" + style={ + { + "height": 64, + "maxHeight": undefined, + "minHeight": undefined, + "opacity": undefined, + "transform": undefined, + } + } + > + <View + pointerEvents="none" + style={ + { + "height": 20, + } + } + /> + <View + pointerEvents="box-none" + style={ + { + "alignItems": "center", + "flex": 1, + "flexDirection": "row", + "justifyContent": "center", + } + } + > + <View + collapsable={false} + pointerEvents="box-none" + style={ + { + "marginHorizontal": 16, + "opacity": 1, + } + } + > + <Text + accessibilityRole="header" + aria-level="1" + collapsable={false} + numberOfLines={1} + onLayout={[Function]} + style={ + { + "color": "rgb(28, 28, 30)", + "fontSize": 17, + "fontWeight": "600", + } + } + > + Bridge + </Text> + </View> + </View> + </View> + </View> + </View> + <RNSScreenContainer + onLayout={[Function]} + style={ + { + "flex": 1, + } + } + > + <RNSScreen + activityState={2} + collapsable={false} + gestureResponseDistance={ + { + "bottom": -1, + "end": -1, + "start": -1, + "top": -1, + } + } + pointerEvents="box-none" + style={ + { + "bottom": 0, + "left": 0, + "position": "absolute", + "right": 0, + "top": 0, + } + } + > + <View + collapsable={false} + style={ + { + "opacity": 1, + } + } + /> + <View + accessibilityElementsHidden={false} + closing={false} + gestureVelocityImpact={0.3} + importantForAccessibility="auto" + onClose={[Function]} + onGestureBegin={[Function]} + onGestureCanceled={[Function]} + onGestureEnd={[Function]} + onOpen={[Function]} + onTransition={[Function]} + pointerEvents="box-none" + style={ + [ + { + "overflow": undefined, + }, + { + "bottom": 0, + "left": 0, + "position": "absolute", + "right": 0, + "top": 0, + }, + ] + } + transitionSpec={ + { + "close": { + "animation": "spring", + "config": { + "damping": 500, + "mass": 3, + "overshootClamping": true, + "restDisplacementThreshold": 10, + "restSpeedThreshold": 10, + "stiffness": 1000, + }, + }, + "open": { + "animation": "spring", + "config": { + "damping": 500, + "mass": 3, + "overshootClamping": true, + "restDisplacementThreshold": 10, + "restSpeedThreshold": 10, + "stiffness": 1000, + }, + }, + } + } + > + <View + collapsable={false} + needsOffscreenAlphaCompositing={false} + pointerEvents="box-none" + style={ + { + "flex": 1, + } + } + > + <View + collapsable={false} + onGestureHandlerEvent={[Function]} + onGestureHandlerStateChange={[Function]} + style={ + { + "flex": 1, + "transform": [ + { + "translateX": 0, + }, + { + "translateX": 0, + }, + ], + } + } + > + <View + collapsable={false} + pointerEvents="none" + style={ + { + "backgroundColor": "rgb(242, 242, 242)", + "bottom": 0, + "left": 0, + "position": "absolute", + "shadowColor": "#000", + "shadowOffset": { + "height": 1, + "width": -1, + }, + "shadowOpacity": 0.3, + "shadowRadius": 5, + "top": 0, + "width": 3, + } + } + /> + <View + style={ + [ + { + "flex": 1, + "overflow": "hidden", + }, + [ + { + "backgroundColor": "rgb(242, 242, 242)", + }, + undefined, + ], + ] + } + > + <View + style={ + { + "flex": 1, + "flexDirection": "column-reverse", + } + } + > + <View + style={ + { + "flex": 1, + } + } + > + <View + style={ + [ + {}, + { + "backgroundColor": "#ffffff", + "borderColor": "#b7bbc866", + "borderRadius": 8, + "borderWidth": 1, + "gap": 12, + "overflow": "hidden", + "paddingHorizontal": 16, + "paddingVertical": 12, + }, + ] + } + > + <View + alignItems="center" + flexDirection="row" + justifyContent="space-between" + style={ + [ + { + "alignItems": "center", + "flexDirection": "row", + "justifyContent": "space-between", + }, + undefined, + ] + } + > + <View + alignItems="center" + flexDirection="row" + style={ + [ + { + "alignItems": "center", + "flexDirection": "row", + }, + { + "flexDirection": "row", + "flexWrap": "wrap", + "maxWidth": "80%", + }, + ] + } + > + <View + alignItems="center" + flexDirection="row" + gap={2} + style={ + [ + { + "alignItems": "center", + "flexDirection": "row", + "gap": 2, + }, + undefined, + ] + } + > + <View + onLayout={[Function]} + style={{}} + testID="badgenetwork" + > + <View + style={ + { + "alignItems": "center", + "backgroundColor": "#ffffff", + "borderColor": "#ffffff", + "borderRadius": 8, + "borderWidth": 1.5, + "height": 24, + "justifyContent": "center", + "overflow": "hidden", + "shadowColor": "#0000001a", + "shadowOffset": { + "height": 2, + "width": 0, + }, + "shadowOpacity": 1, + "shadowRadius": 4, + "width": 24, + } + } + > + <Image + onError={[Function]} + resizeMode="contain" + source={1} + style={ + { + "height": 24, + "width": 24, + } + } + testID="network-avatar-image" + /> + </View> + </View> + <Text + accessibilityRole="text" + style={ + { + "color": "#121314", + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, + "fontWeight": "500", + "letterSpacing": 0, + "lineHeight": 24, + } + } + > + Ethereum + </Text> + </View> + <SvgMock + color="#121314" + height={16} + name="Arrow2Right" + style={ + { + "height": 16, + "width": 16, + } + } + width={16} + /> + <View + alignItems="center" + flexDirection="row" + gap={2} + style={ + [ + { + "alignItems": "center", + "flexDirection": "row", + "gap": 2, + }, + undefined, + ] + } + > + <View + onLayout={[Function]} + style={{}} + testID="badgenetwork" + > + <View + style={ + { + "alignItems": "center", + "backgroundColor": "#ffffff", + "borderColor": "#ffffff", + "borderRadius": 8, + "borderWidth": 1.5, + "height": 24, + "justifyContent": "center", + "overflow": "hidden", + "shadowColor": "#0000001a", + "shadowOffset": { + "height": 2, + "width": 0, + }, + "shadowOpacity": 1, + "shadowRadius": 4, + "width": 24, + } + } + > + <Image + onError={[Function]} + resizeMode="contain" + source={1} + style={ + { + "height": 24, + "width": 24, + } + } + testID="network-avatar-image" + /> + </View> + </View> + <Text + accessibilityRole="text" + style={ + { + "color": "#121314", + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, + "fontWeight": "500", + "letterSpacing": 0, + "lineHeight": 24, + } + } + > + Linea + </Text> + </View> + </View> + <View + style={ + [ + {}, + undefined, + ] + } + > + <View + style={ + { + "transform": [ + { + "rotate": "undefineddeg", + }, + ], + } + } + > + <TouchableOpacity + accessibilityLabel="Expand quote details" + accessibilityRole="button" + activeOpacity={0.7} + onPress={[Function]} + testID="expand-quote-details" + > + <SvgMock + color="#9ca1af" + height={16} + name="ArrowDown" + style={ + { + "height": 16, + "width": 16, + } + } + width={16} + /> + </TouchableOpacity> + </View> + </View> + </View> + <View + style={ + [ + { + "alignItems": "center", + "flexDirection": "row", + "justifyContent": "space-between", + "overflow": "hidden", + }, + [ + undefined, + ], + ] + } + > + <View + style={ + { + "alignItems": "flex-start", + "flex": 1, + } + } + > + <View + style={ + { + "alignItems": "center", + "flexDirection": "row", + "gap": 8, + } + } + > + <View + style={ + { + "alignItems": "center", + "flexDirection": "row", + } + } + > + <Text + accessibilityRole="text" + style={ + { + "color": "#121314", + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, + "fontWeight": "500", + "letterSpacing": 0, + "lineHeight": 24, + } + } + testID="label" + > + Network Fee + </Text> + </View> + </View> + </View> + <View + style={ + { + "alignItems": "flex-end", + "flex": 1, + } + } + > + <View + style={ + { + "alignItems": "center", + "flexDirection": "row", + "gap": 8, + } + } + > + <View + style={ + { + "alignItems": "center", + "flexDirection": "row", + } + } + > + <Text + accessibilityRole="text" + style={ + { + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, + "fontWeight": "400", + "letterSpacing": 0, + "lineHeight": 24, + } + } + testID="label" + > + $0.01 + </Text> + </View> + </View> + </View> + </View> + <View + style={ + [ + { + "alignItems": "center", + "flexDirection": "row", + "justifyContent": "space-between", + "overflow": "hidden", + }, + [ + undefined, + ], + ] + } + > + <View + style={ + { + "alignItems": "flex-start", + "flex": 1, + } + } + > + <View + style={ + { + "alignItems": "center", + "flexDirection": "row", + "gap": 8, + } + } + > + <View + style={ + { + "alignItems": "center", + "flexDirection": "row", + } + } + > + <Text + accessibilityRole="text" + style={ + { + "color": "#121314", + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, + "fontWeight": "500", + "letterSpacing": 0, + "lineHeight": 24, + } + } + testID="label" + > + Time + </Text> + </View> + </View> + </View> + <View + style={ + { + "alignItems": "flex-end", + "flex": 1, + } + } + > + <View + style={ + { + "alignItems": "center", + "flexDirection": "row", + "gap": 8, + } + } + > + <View + style={ + { + "alignItems": "center", + "flexDirection": "row", + } + } + > + <Text + accessibilityRole="text" + style={ + { + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, + "fontWeight": "400", + "letterSpacing": 0, + "lineHeight": 24, + } + } + testID="label" + > + 1 min + </Text> + </View> + </View> + </View> + </View> + <View + style={ + [ + {}, + undefined, + ] + } + > + <View + style={ + [ + { + "alignItems": "center", + "flexDirection": "row", + "justifyContent": "space-between", + "overflow": "hidden", + }, + [ + undefined, + ], + ] + } + > + <View + style={ + { + "alignItems": "flex-start", + "flex": 1, + } + } + > + <View + style={ + { + "alignItems": "center", + "flexDirection": "row", + "gap": 8, + } + } + > + <View + style={ + { + "alignItems": "center", + "flexDirection": "row", + } + } + > + <Text + accessibilityRole="text" + style={ + { + "color": "#121314", + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, + "fontWeight": "500", + "letterSpacing": 0, + "lineHeight": 24, + } + } + testID="label" + > + Quote + </Text> + <TouchableOpacity + accessibilityLabel="Why we recommend this quote tooltip" + accessibilityRole="button" + accessible={true} + activeOpacity={1} + disabled={false} + onPress={[Function]} + onPressIn={[Function]} + onPressOut={[Function]} + style={ + { + "alignItems": "center", + "borderRadius": 8, + "height": 24, + "justifyContent": "center", + "opacity": 1, + "width": 24, + } + } + > + <SvgMock + color="#9ca1af" + height={16} + name="Question" + style={ + { + "height": 16, + "width": 16, + } + } + width={16} + /> + </TouchableOpacity> + </View> + </View> + </View> + <View + style={ + { + "alignItems": "flex-end", + "flex": 1, + } + } + > + <View + style={ + { + "alignItems": "center", + "flexDirection": "row", + "gap": 8, + } + } + > + <View + style={ + { + "alignItems": "center", + "flexDirection": "row", + } + } + > + <Text + accessibilityRole="text" + style={ + { + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, + "fontWeight": "400", + "letterSpacing": 0, + "lineHeight": 24, + } + } + testID="label" + > + 1 ETH = 0.0 USDC + </Text> + </View> + </View> + </View> + </View> + <View + style={ + [ + {}, + { + "bottom": 0, + "height": 30, + "left": 0, + "position": "absolute", + "right": 0, + }, + ] + } + > + <RNSVGSvgView + bbHeight="30" + bbWidth="100%" + focusable={false} + height="30" + style={ + [ + { + "backgroundColor": "transparent", + "borderWidth": 0, + }, + { + "flex": 0, + "height": 30, + "width": "100%", + }, + ] + } + width="100%" + > + <RNSVGGroup + fill={ + { + "payload": 4278190080, + "type": 0, + } + } + > + <RNSVGDefs> + <RNSVGLinearGradient + gradient={ + [ + 0, + 16777215, + 1, + -1, + ] + } + gradientTransform={null} + gradientUnits={0} + name="fadeGradient" + x1="0" + x2="0" + y1="0" + y2="1" + /> + </RNSVGDefs> + <RNSVGRect + fill={ + { + "brushRef": "fadeGradient", + "type": 1, + } + } + height="30" + propList={ + [ + "fill", + ] + } + width="100%" + x="0" + y="0" + /> + </RNSVGGroup> + </RNSVGSvgView> + </View> + </View> + </View> + </View> + </View> + </View> + </View> + </View> + </View> + </RNSScreen> + </RNSScreenContainer> + </RNCSafeAreaProvider> +</View> +`; diff --git a/app/components/UI/Bridge/components/QuoteDetailsCard/index.ts b/app/components/UI/Bridge/components/QuoteDetailsCard/index.ts new file mode 100644 index 000000000000..56d259449fcd --- /dev/null +++ b/app/components/UI/Bridge/components/QuoteDetailsCard/index.ts @@ -0,0 +1 @@ +export { default } from './QuoteDetailsCard'; diff --git a/app/components/UI/Bridge/components/QuoteInfoModal/__snapshots__/QuoteInfoModal.test.tsx.snap b/app/components/UI/Bridge/components/QuoteInfoModal/__snapshots__/QuoteInfoModal.test.tsx.snap index f0dc872cc550..a0081c0ca14e 100644 --- a/app/components/UI/Bridge/components/QuoteInfoModal/__snapshots__/QuoteInfoModal.test.tsx.snap +++ b/app/components/UI/Bridge/components/QuoteInfoModal/__snapshots__/QuoteInfoModal.test.tsx.snap @@ -34,7 +34,7 @@ exports[`QuoteInfoModal renders correctly 1`] = ` style={ [ { - "backgroundColor": "#00000099", + "backgroundColor": "#00000066", "bottom": 0, "left": 0, "position": "absolute", @@ -81,14 +81,14 @@ exports[`QuoteInfoModal renders correctly 1`] = ` [ { "backgroundColor": "#ffffff", - "borderColor": "#BBC0C566", + "borderColor": "#b7bbc866", "borderTopLeftRadius": 8, "borderTopRightRadius": 8, "borderWidth": 1, "maxHeight": 1334, "overflow": "hidden", "paddingBottom": 0, - "shadowColor": "#0000001A", + "shadowColor": "#0000001a", "shadowOffset": { "height": 2, "width": 0, @@ -118,7 +118,7 @@ exports[`QuoteInfoModal renders correctly 1`] = ` <View style={ { - "backgroundColor": "#BBC0C566", + "backgroundColor": "#b7bbc866", "borderRadius": 2, "height": 4, "width": 40, @@ -163,8 +163,8 @@ exports[`QuoteInfoModal renders correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", + "color": "#121314", + "fontFamily": "CentraNo1-Bold", "fontSize": 18, "fontWeight": "700", "letterSpacing": 0, @@ -204,7 +204,7 @@ exports[`QuoteInfoModal renders correctly 1`] = ` } > <SvgMock - color="#141618" + color="#121314" height={16} name="Close" style={ @@ -231,12 +231,12 @@ exports[`QuoteInfoModal renders correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -266,7 +266,7 @@ exports[`QuoteInfoModal renders correctly 1`] = ` "alignItems": "center", "alignSelf": "flex-start", "backgroundColor": "transparent", - "borderColor": "#0376c9", + "borderColor": "#4459ff", "borderRadius": 24, "borderWidth": 1, "flex": 1, @@ -282,12 +282,12 @@ exports[`QuoteInfoModal renders correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, + "color": "#4459ff", + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > diff --git a/app/components/UI/Bridge/components/SlippageModal/SlippageModal.test.tsx b/app/components/UI/Bridge/components/SlippageModal/SlippageModal.test.tsx index e55ae5304057..d4a918b0aa95 100644 --- a/app/components/UI/Bridge/components/SlippageModal/SlippageModal.test.tsx +++ b/app/components/UI/Bridge/components/SlippageModal/SlippageModal.test.tsx @@ -5,9 +5,11 @@ import { SafeAreaProvider, Metrics } from 'react-native-safe-area-context'; import renderWithProvider from '../../../../../util/test/renderWithProvider'; import { strings } from '../../../../../../locales/i18n'; import SlippageModal from './index'; +import { setSlippage } from '../../../../../core/redux/slices/bridge'; const mockNavigate = jest.fn(); const mockGoBack = jest.fn(); +const mockDispatch = jest.fn(); jest.mock('@react-navigation/native', () => { const actualReactNavigation = jest.requireActual('@react-navigation/native'); @@ -20,25 +22,33 @@ jest.mock('@react-navigation/native', () => { }; }); -const props = { - route: { - params: { - selectedSlippage: '0.5', - onSelectSlippage: jest.fn(), - }, - }, -}; +jest.mock('react-redux', () => { + const actualReactRedux = jest.requireActual('react-redux'); + return { + ...actualReactRedux, + useDispatch: () => mockDispatch, + }; +}); const initialMetrics: Metrics = { frame: { x: 0, y: 0, width: 320, height: 640 }, insets: { top: 0, left: 0, right: 0, bottom: 0 }, }; +const initialState = { + bridge: { + slippage: '0.5', + }, +}; + const renderSlippageModal = () => renderWithProvider( <SafeAreaProvider initialMetrics={initialMetrics}> - <SlippageModal {...props} /> + <SlippageModal /> </SafeAreaProvider>, + { + state: initialState, + }, ); describe('SlippageModal', () => { @@ -59,7 +69,7 @@ describe('SlippageModal', () => { expect(toJSON()).toMatchSnapshot(); }); - it('updates slippage value when segment is selected and sends value back when applied', () => { + it('updates slippage value when segment is selected and dispatches action when applied', () => { const { getByText, getByTestId } = renderSlippageModal(); // Click on the 3% option @@ -70,8 +80,9 @@ describe('SlippageModal', () => { const applyButton = getByText(strings('bridge.apply')); fireEvent.press(applyButton); - // Check if the callback was called with the correct value - expect(props.route.params.onSelectSlippage).toHaveBeenCalledWith('3'); + // Check if the action was dispatched with the correct value + expect(mockDispatch).toHaveBeenCalledWith(setSlippage('3')); + // Check that navigation.goBack was called expect(mockGoBack).toHaveBeenCalled(); }); diff --git a/app/components/UI/Bridge/components/SlippageModal/__snapshots__/SlippageModal.test.tsx.snap b/app/components/UI/Bridge/components/SlippageModal/__snapshots__/SlippageModal.test.tsx.snap index d2c7f448b36e..7e8826671c85 100644 --- a/app/components/UI/Bridge/components/SlippageModal/__snapshots__/SlippageModal.test.tsx.snap +++ b/app/components/UI/Bridge/components/SlippageModal/__snapshots__/SlippageModal.test.tsx.snap @@ -34,7 +34,7 @@ exports[`SlippageModal renders all UI elements with the proper slippage options style={ [ { - "backgroundColor": "#00000099", + "backgroundColor": "#00000066", "bottom": 0, "left": 0, "position": "absolute", @@ -81,14 +81,14 @@ exports[`SlippageModal renders all UI elements with the proper slippage options [ { "backgroundColor": "#ffffff", - "borderColor": "#BBC0C566", + "borderColor": "#b7bbc866", "borderTopLeftRadius": 8, "borderTopRightRadius": 8, "borderWidth": 1, "maxHeight": 1334, "overflow": "hidden", "paddingBottom": 0, - "shadowColor": "#0000001A", + "shadowColor": "#0000001a", "shadowOffset": { "height": 2, "width": 0, @@ -118,7 +118,7 @@ exports[`SlippageModal renders all UI elements with the proper slippage options <View style={ { - "backgroundColor": "#BBC0C566", + "backgroundColor": "#b7bbc866", "borderRadius": 2, "height": 4, "width": 40, @@ -163,8 +163,8 @@ exports[`SlippageModal renders all UI elements with the proper slippage options accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", + "color": "#121314", + "fontFamily": "CentraNo1-Bold", "fontSize": 18, "fontWeight": "700", "letterSpacing": 0, @@ -204,7 +204,7 @@ exports[`SlippageModal renders all UI elements with the proper slippage options } > <SvgMock - color="#141618" + color="#121314" height={16} name="Close" style={ @@ -232,8 +232,8 @@ exports[`SlippageModal renders all UI elements with the proper slippage options accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, @@ -285,8 +285,8 @@ exports[`SlippageModal renders all UI elements with the proper slippage options { "alignItems": "center", "alignSelf": "stretch", - "backgroundColor": "#0376C91A", - "borderColor": "#0376c9", + "backgroundColor": "#4459ff1a", + "borderColor": "#4459ff", "borderRadius": 16, "borderWidth": 1, "flexDirection": "row", @@ -301,12 +301,12 @@ exports[`SlippageModal renders all UI elements with the proper slippage options accessibilityRole="text" style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, + "color": "#4459ff", + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -335,7 +335,7 @@ exports[`SlippageModal renders all UI elements with the proper slippage options "alignItems": "center", "alignSelf": "stretch", "backgroundColor": "transparent", - "borderColor": "#848c96", + "borderColor": "#b7bbc8", "borderRadius": 16, "borderWidth": 1, "flexDirection": "row", @@ -350,12 +350,12 @@ exports[`SlippageModal renders all UI elements with the proper slippage options accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -384,7 +384,7 @@ exports[`SlippageModal renders all UI elements with the proper slippage options "alignItems": "center", "alignSelf": "stretch", "backgroundColor": "transparent", - "borderColor": "#848c96", + "borderColor": "#b7bbc8", "borderRadius": 16, "borderWidth": 1, "flexDirection": "row", @@ -399,12 +399,12 @@ exports[`SlippageModal renders all UI elements with the proper slippage options accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -433,7 +433,7 @@ exports[`SlippageModal renders all UI elements with the proper slippage options "alignItems": "center", "alignSelf": "stretch", "backgroundColor": "transparent", - "borderColor": "#848c96", + "borderColor": "#b7bbc8", "borderRadius": 16, "borderWidth": 1, "flexDirection": "row", @@ -448,12 +448,12 @@ exports[`SlippageModal renders all UI elements with the proper slippage options accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -486,7 +486,7 @@ exports[`SlippageModal renders all UI elements with the proper slippage options "alignItems": "center", "alignSelf": "flex-start", "backgroundColor": "transparent", - "borderColor": "#0376c9", + "borderColor": "#4459ff", "borderRadius": 24, "borderWidth": 1, "flex": 1, @@ -502,12 +502,12 @@ exports[`SlippageModal renders all UI elements with the proper slippage options accessibilityRole="text" style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, + "color": "#4459ff", + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > diff --git a/app/components/UI/Bridge/components/SlippageModal/index.tsx b/app/components/UI/Bridge/components/SlippageModal/index.tsx index d145fdd8f2fb..3c42adcb2ff3 100644 --- a/app/components/UI/Bridge/components/SlippageModal/index.tsx +++ b/app/components/UI/Bridge/components/SlippageModal/index.tsx @@ -19,6 +19,11 @@ import { SlippageOption } from './SlippageModal.types'; import BottomSheetHeader from '../../../../../component-library/components/BottomSheets/BottomSheetHeader'; import BottomSheetFooter from '../../../../../component-library/components/BottomSheets/BottomSheetFooter'; import SegmentedControl from '../../../../../component-library/components-temp/SegmentedControl'; +import { useDispatch, useSelector } from 'react-redux'; +import { + selectSlippage, + setSlippage, +} from '../../../../../core/redux/slices/bridge'; const SLIPPAGE_OPTIONS: SlippageOption[] = [ { label: '0.5%', value: '0.5' }, @@ -27,18 +32,11 @@ const SLIPPAGE_OPTIONS: SlippageOption[] = [ { label: '10%', value: '10' }, ]; -interface SlippageModalProps { - route: { - params: { - selectedSlippage: string; - onSelectSlippage: (slippage: string) => void; - }; - }; -} +export const SlippageModal = () => { + const dispatch = useDispatch(); -export const SlippageModal = ({ route }: SlippageModalProps) => { - const { selectedSlippage, onSelectSlippage } = route.params; - const [selectedValue, setSelectedValue] = useState(selectedSlippage); + const slippage = useSelector(selectSlippage); + const [selectedValue, setSelectedValue] = useState(slippage); const theme = useTheme(); const styles = createStyles(theme); const navigation = useNavigation(); @@ -49,7 +47,7 @@ export const SlippageModal = ({ route }: SlippageModalProps) => { }; const handleApply = () => { - onSelectSlippage(selectedValue); + dispatch(setSlippage(selectedValue)); navigation.goBack(); }; diff --git a/app/components/UI/Bridge/components/Token.tsx b/app/components/UI/Bridge/components/TokenButton.tsx similarity index 97% rename from app/components/UI/Bridge/components/Token.tsx rename to app/components/UI/Bridge/components/TokenButton.tsx index a5fd6e93a60c..066bdcbc5443 100644 --- a/app/components/UI/Bridge/components/Token.tsx +++ b/app/components/UI/Bridge/components/TokenButton.tsx @@ -54,7 +54,7 @@ const createStyles = (params: StylesParams) => { }); }; -export const Token: React.FC<TokenProps> = ({ +export const TokenButton: React.FC<TokenProps> = ({ symbol, iconUrl, networkImageSource, diff --git a/app/components/UI/Bridge/components/TokenInputArea/TokenInputArea.test.tsx b/app/components/UI/Bridge/components/TokenInputArea/TokenInputArea.test.tsx index 24c5d1e1e143..4bd75e1e3304 100644 --- a/app/components/UI/Bridge/components/TokenInputArea/TokenInputArea.test.tsx +++ b/app/components/UI/Bridge/components/TokenInputArea/TokenInputArea.test.tsx @@ -1,6 +1,5 @@ import { getDisplayFiatValue } from '.'; import { Hex } from '@metamask/utils'; -import { TokenI } from '../../../Tokens/types'; describe('getDisplayFiatValue', () => { const mockChainId = '0x1' as Hex; @@ -13,13 +12,8 @@ describe('getDisplayFiatValue', () => { decimals: 18, image: 'https://token1.com/logo.png', name: 'Token One', - aggregators: ['1inch'], - isETH: false, - isNative: false, - isStaked: false, balance: '1', balanceFiat: '$20000', - logo: 'https://token1.com/logo.png', tokenFiatAmount: 20000, }; @@ -60,7 +54,7 @@ describe('getDisplayFiatValue', () => { it('should return zero when amount is undefined', () => { const result = getDisplayFiatValue({ - token: mockToken as TokenI, + token: mockToken, amount: undefined, multiChainMarketData: mockMultiChainMarketData, networkConfigurationsByChainId: mockNetworkConfigurations, @@ -73,7 +67,7 @@ describe('getDisplayFiatValue', () => { it('should calculate correct fiat value for token amount', () => { const result = getDisplayFiatValue({ - token: mockToken as TokenI, + token: mockToken, amount: '1', multiChainMarketData: mockMultiChainMarketData, networkConfigurationsByChainId: mockNetworkConfigurations, @@ -87,7 +81,7 @@ describe('getDisplayFiatValue', () => { it('should return "< $0.01" for very small fiat values', () => { const result = getDisplayFiatValue({ - token: mockToken as TokenI, + token: mockToken, amount: '0.0000001', multiChainMarketData: mockMultiChainMarketData, networkConfigurationsByChainId: mockNetworkConfigurations, @@ -100,7 +94,7 @@ describe('getDisplayFiatValue', () => { it('should handle different currencies correctly', () => { const result = getDisplayFiatValue({ - token: mockToken as TokenI, + token: mockToken, amount: '1', multiChainMarketData: mockMultiChainMarketData, networkConfigurationsByChainId: mockNetworkConfigurations, @@ -114,7 +108,7 @@ describe('getDisplayFiatValue', () => { it('should handle undefined market data correctly', () => { const result = getDisplayFiatValue({ - token: mockToken as TokenI, + token: mockToken, amount: '1', multiChainMarketData: undefined, networkConfigurationsByChainId: mockNetworkConfigurations, @@ -136,7 +130,7 @@ describe('getDisplayFiatValue', () => { }; const result = getDisplayFiatValue({ - token: mockToken as TokenI, + token: mockToken, amount: '1', multiChainMarketData: noValueMarketData, networkConfigurationsByChainId: mockNetworkConfigurations, diff --git a/app/components/UI/Bridge/components/TokenInputArea/index.tsx b/app/components/UI/Bridge/components/TokenInputArea/index.tsx index 15516b070df4..8ef511310bad 100644 --- a/app/components/UI/Bridge/components/TokenInputArea/index.tsx +++ b/app/components/UI/Bridge/components/TokenInputArea/index.tsx @@ -5,14 +5,14 @@ import { useStyles } from '../../../../../component-library/hooks'; import { Box } from '../../../Box/Box'; import Text, { TextColor } from '../../../../../component-library/components/Texts/Text'; import Input from '../../../../../component-library/components/Form/TextField/foundation/Input'; -import { Token } from '../Token'; +import { TokenButton } from '../TokenButton'; import { selectCurrentCurrency, selectCurrencyRates } from '../../../../../selectors/currencyRateController'; import { renderNumber, addCurrencySymbol, balanceToFiatNumber } from '../../../../../util/number'; import { selectTokenMarketData } from '../../../../../selectors/tokenRatesController'; -import { TokenI } from '../../../Tokens/types'; import { selectNetworkConfigurations } from '../../../../../selectors/networkController'; import { Hex } from '@metamask/utils'; import { ethers } from 'ethers'; +import { BridgeToken } from '../../types'; const createStyles = () => StyleSheet.create({ @@ -41,7 +41,7 @@ const createStyles = () => const formatAddress = (address?: string) => address ? `${address.slice(0, 6)}...${address.slice(-4)}` : undefined; interface GetDisplayFiatValueParams { - token: TokenI | undefined; + token: BridgeToken | undefined; amount: string | undefined; multiChainMarketData: Record<Hex, Record<Hex, { price: number | undefined }>> | undefined; networkConfigurationsByChainId: Record<Hex, { nativeCurrency: string }>; @@ -85,7 +85,7 @@ export enum TokenInputAreaType { } interface TokenInputAreaProps { amount?: string; - token?: TokenI; + token?: BridgeToken; tokenBalance?: string; networkImageSource?: ImageSourcePropType; networkName?: string; @@ -149,7 +149,7 @@ export const TokenInputArea: React.FC<TokenInputAreaProps> = ({ testID={`${testID}-input`} /> </Box> - <Token + <TokenButton symbol={token?.symbol} iconUrl={token?.image} networkImageSource={networkImageSource} diff --git a/app/components/UI/Bridge/components/TokenSelectorItem.tsx b/app/components/UI/Bridge/components/TokenSelectorItem.tsx index 9f12356cf2f2..34836945b08b 100644 --- a/app/components/UI/Bridge/components/TokenSelectorItem.tsx +++ b/app/components/UI/Bridge/components/TokenSelectorItem.tsx @@ -1,6 +1,11 @@ import React from 'react'; -import { StyleSheet, ImageSourcePropType, View } from 'react-native'; -import AssetElement from '../../AssetElement'; +import { + StyleSheet, + ImageSourcePropType, + View, + TouchableOpacity, + Platform, +} from 'react-native'; import BadgeWrapper, { BadgePosition, } from '../../../../component-library/components/Badges/BadgeWrapper'; @@ -15,29 +20,36 @@ import Text, { } from '../../../../component-library/components/Texts/Text'; import TokenIcon from '../../Swaps/components/TokenIcon'; import { Box } from '../../Box/Box'; -import { AlignItems, FlexDirection, JustifyContent } from '../../Box/box.types'; -import { TokenIWithFiatAmount } from '../hooks/useTokensWithBalance'; -import ButtonIcon, { ButtonIconSizes } from '../../../../component-library/components/Buttons/ButtonIcon'; -import { IconColor, IconName } from '../../../../component-library/components/Icons/Icon'; -import { useNavigation } from '@react-navigation/native'; +import { AlignItems, FlexDirection } from '../../Box/box.types'; import { useStyles } from '../../../../component-library/hooks'; import { Theme } from '../../../../util/theme/models'; +import { BridgeToken } from '../types'; +import { ethers } from 'ethers'; +import { fontStyles } from '../../../../styles/common'; +import { + TOKEN_BALANCE_LOADING, + TOKEN_BALANCE_LOADING_UPPERCASE, +} from '../../Tokens/constants'; +import generateTestId from '../../../../../wdio/utils/generateTestId'; +import { getAssetTestId } from '../../../../../wdio/screen-objects/testIDs/Screens/WalletView.testIds'; +import SkeletonText from '../../Ramp/components/SkeletonText'; -const createStyles = ({ theme, vars }: { theme: Theme, vars: { isSelected: boolean } }) => +const createStyles = ({ + theme, + vars, +}: { + theme: Theme; + vars: { isSelected: boolean }; +}) => StyleSheet.create({ - tokenIcon: { - width: 40, - height: 40, - }, tokenInfo: { flex: 1, marginLeft: 8, }, - infoButton: { - marginRight: 12, - }, container: { - backgroundColor: vars.isSelected ? theme.colors.primary.muted : theme.colors.background.default, + backgroundColor: vars.isSelected + ? theme.colors.primary.muted + : theme.colors.background.default, padding: 4, }, selectedIndicator: { @@ -46,15 +58,40 @@ const createStyles = ({ theme, vars }: { theme: Theme, vars: { isSelected: boole borderRadius: 8, backgroundColor: theme.colors.primary.default, }, + itemWrapper: { + flex: 1, + flexDirection: 'row', + paddingHorizontal: 15, + paddingVertical: 10, + alignItems: 'flex-start', + }, + balance: { + flex: 1, + alignItems: 'flex-end', + }, + skeleton: { + width: 50, + }, + secondaryBalance: { + color: theme.colors.text.alternative, + paddingHorizontal: 0, + ...fontStyles.normal, + textTransform: 'uppercase', + }, + badgeWrapper: { + // override the BadgeWrapper alignSelf: 'flex-start', let parent control the alignment + alignSelf: undefined, + }, }); interface TokenSelectorItemProps { - token: TokenIWithFiatAmount; - onPress: (token: TokenIWithFiatAmount) => void; + token: BridgeToken; + onPress: (token: BridgeToken) => void; networkName: string; networkImageSource?: ImageSourcePropType; - shouldShowBalance?: boolean; isSelected?: boolean; + shouldShowBalance?: boolean; + children?: React.ReactNode; } export const TokenSelectorItem: React.FC<TokenSelectorItemProps> = ({ @@ -62,79 +99,97 @@ export const TokenSelectorItem: React.FC<TokenSelectorItemProps> = ({ onPress, networkName, networkImageSource, - shouldShowBalance = true, isSelected = false, + shouldShowBalance = true, + children, }) => { const { styles } = useStyles(createStyles, { isSelected }); - const navigation = useNavigation(); const fiatValue = token.balanceFiat; - const balanceWithSymbol = `${token.balance} ${token.symbol}`; + const balanceWithSymbol = token.balance + ? `${token.balance} ${token.symbol}` + : undefined; - // Open the asset details screen as a bottom sheet - const handleInfoButtonPress = () => navigation.navigate('Asset', { ...token }); + const isNative = token.address === ethers.constants.AddressZero; + + const balance = shouldShowBalance ? fiatValue : undefined; + const secondaryBalance = shouldShowBalance ? balanceWithSymbol : undefined; return ( <Box flexDirection={FlexDirection.Row} - justifyContent={JustifyContent.spaceBetween} - alignItems={AlignItems.center} style={styles.container} > {isSelected && <View style={styles.selectedIndicator} />} - <AssetElement + <TouchableOpacity key={token.address} - asset={token} onPress={() => onPress(token)} - balance={shouldShowBalance ? fiatValue : undefined} - secondaryBalance={shouldShowBalance ? balanceWithSymbol : undefined} + style={styles.itemWrapper} + {...generateTestId(Platform, getAssetTestId(token.symbol))} > - <BadgeWrapper - badgePosition={BadgePosition.BottomRight} - badgeElement={ - <Badge - variant={BadgeVariant.Network} - name={networkName} - imageSource={networkImageSource} - /> - } - > - {token.isNative ? ( - <TokenIcon - symbol={token.symbol} - icon={token.image} - style={styles.tokenIcon} - big={false} - biggest={false} - testID={`network-logo-${token.symbol}`} - /> - ) : ( - <AvatarToken - name={token.symbol} - imageSource={token.image ? { uri: token.image } : undefined} - size={AvatarSize.Md} - /> - )} - </BadgeWrapper> - <Box style={styles.tokenInfo} flexDirection={FlexDirection.Column} gap={4}> - <Text variant={TextVariant.BodyLGMedium}> - {token.symbol} - </Text> - <Text variant={TextVariant.BodyMD} color={TextColor.Alternative}> - {token.name} - </Text> + <Box flexDirection={FlexDirection.Row} alignItems={AlignItems.center} gap={4}> + {/* Token Icon */} + <BadgeWrapper + style={styles.badgeWrapper} + badgePosition={BadgePosition.BottomRight} + badgeElement={ + <Badge + variant={BadgeVariant.Network} + name={networkName} + imageSource={networkImageSource} + /> + } + > + {isNative ? ( + <TokenIcon + symbol={token.symbol} + icon={token.image} + medium + testID={`network-logo-${token.symbol}`} + /> + ) : ( + <AvatarToken + name={token.symbol} + imageSource={token.image ? { uri: token.image } : undefined} + size={AvatarSize.Md} + /> + )} + </BadgeWrapper> + + {/* Token symbol and name */} + <Box + style={styles.tokenInfo} + flexDirection={FlexDirection.Column} + gap={4} + > + <Text variant={TextVariant.BodyLGMedium}>{token.symbol}</Text> + <Text variant={TextVariant.BodyMD} color={TextColor.Alternative}> + {token.name} + </Text> + </Box> + + {/* Token balance and fiat value */} + <Box style={styles.balance}> + {balance && + (balance === TOKEN_BALANCE_LOADING || + balance === TOKEN_BALANCE_LOADING_UPPERCASE ? ( + <SkeletonText thin style={styles.skeleton} /> + ) : ( + <Text>{balance}</Text> + ))} + {secondaryBalance ? ( + secondaryBalance === TOKEN_BALANCE_LOADING || + secondaryBalance === TOKEN_BALANCE_LOADING_UPPERCASE ? ( + <SkeletonText thin style={styles.skeleton} /> + ) : ( + <Text>{secondaryBalance}</Text> + ) + ) : null} + </Box> </Box> - </AssetElement> - {!shouldShowBalance && ( - <ButtonIcon - iconName={IconName.Info} - size={ButtonIconSizes.Md} - onPress={handleInfoButtonPress} - iconColor={IconColor.Alternative} - style={styles.infoButton} - testID="token-info-button" - /> - )} + </TouchableOpacity> + + {children} </Box> ); }; diff --git a/app/components/UI/Bridge/hooks/useDestinationTokens.tsx b/app/components/UI/Bridge/hooks/useDestinationTokens.tsx deleted file mode 100644 index dae1974ba006..000000000000 --- a/app/components/UI/Bridge/hooks/useDestinationTokens.tsx +++ /dev/null @@ -1,21 +0,0 @@ -import { useTokensWithBalance, TokenIWithFiatAmount } from './useTokensWithBalance'; -import { useSelector } from 'react-redux'; -import { selectSelectedDestChainId, selectSourceToken } from '../../../../core/redux/slices/bridge'; -import { Hex } from '@metamask/utils'; -import { useMemo } from 'react'; - -// TODO get top tokens from BridgeController -export const useDestinationTokens: () => TokenIWithFiatAmount[] = () => { - const selectedDestChainId = useSelector(selectSelectedDestChainId); - const selectedSourceToken = useSelector(selectSourceToken); - - const tokensWithBalance = useTokensWithBalance({ chainIds: [selectedDestChainId as Hex] }); - - const filteredTokens = useMemo(() => tokensWithBalance.filter((token) => { - const isSelectedSourceToken = token.address === selectedSourceToken?.address && token.chainId === selectedSourceToken?.chainId; - - return !isSelectedSourceToken; - }), [tokensWithBalance, selectedSourceToken]); - - return filteredTokens; -}; diff --git a/app/components/UI/Bridge/hooks/useSourceTokens.ts b/app/components/UI/Bridge/hooks/useSourceTokens.ts deleted file mode 100644 index 1b349604291e..000000000000 --- a/app/components/UI/Bridge/hooks/useSourceTokens.ts +++ /dev/null @@ -1,20 +0,0 @@ -import { TokenIWithFiatAmount, useTokensWithBalance } from './useTokensWithBalance'; -import { useSelector } from 'react-redux'; -import { selectSelectedSourceChainIds, selectDestToken } from '../../../../core/redux/slices/bridge'; -import { Hex } from '@metamask/utils'; -import { useMemo } from 'react'; -// TODO get top tokens from BridgeController -export const useSourceTokens: () => TokenIWithFiatAmount[] = () => { - const selectedSourceChainIds = useSelector(selectSelectedSourceChainIds); - const selectedDestToken = useSelector(selectDestToken); - - const tokensWithBalance = useTokensWithBalance({ chainIds: selectedSourceChainIds as Hex[] }); - - const filteredTokens = useMemo(() => tokensWithBalance.filter((token) => { - const isSelectedDestToken = token.address === selectedDestToken?.address && token.chainId === selectedDestToken?.chainId; - - return !isSelectedDestToken; - }), [tokensWithBalance, selectedDestToken]); - - return filteredTokens; -}; diff --git a/app/components/UI/Bridge/hooks/useTokenSearch/index.ts b/app/components/UI/Bridge/hooks/useTokenSearch/index.ts index c9265a279265..3622da2f56be 100644 --- a/app/components/UI/Bridge/hooks/useTokenSearch/index.ts +++ b/app/components/UI/Bridge/hooks/useTokenSearch/index.ts @@ -1,16 +1,17 @@ import { useMemo, useState } from 'react'; import Fuse from 'fuse.js'; -import { TokenIWithFiatAmount } from '../useTokensWithBalance'; +import { BridgeToken } from '../../types'; + const MAX_TOKENS_RESULTS = 20; interface UseTokenSearchProps { - tokens: TokenIWithFiatAmount[]; + tokens: BridgeToken[]; } interface UseTokenSearchResult { searchString: string; setSearchString: (text: string) => void; - searchResults: TokenIWithFiatAmount[]; + searchResults: BridgeToken[]; } export function useTokenSearch({ tokens }: UseTokenSearchProps): UseTokenSearchResult { @@ -33,8 +34,8 @@ export function useTokenSearch({ tokens }: UseTokenSearchProps): UseTokenSearchR const tokenSearchResults = useMemo( () => (tokenFuse.search(searchString)).slice(0, MAX_TOKENS_RESULTS).sort((a, b) => { // Sort results by balance fiat in descending order - const balanceA = a.tokenFiatAmount; - const balanceB = b.tokenFiatAmount; + const balanceA = a.tokenFiatAmount ?? 0; + const balanceB = b.tokenFiatAmount ?? 0; return balanceB - balanceA; }), [searchString, tokenFuse], diff --git a/app/components/UI/Bridge/hooks/useTokenSearch/useTokenSearch.test.ts b/app/components/UI/Bridge/hooks/useTokenSearch/useTokenSearch.test.ts index 38918f3dc2f3..ac0c1c3ea920 100644 --- a/app/components/UI/Bridge/hooks/useTokenSearch/useTokenSearch.test.ts +++ b/app/components/UI/Bridge/hooks/useTokenSearch/useTokenSearch.test.ts @@ -1,10 +1,11 @@ import { renderHook, act } from '@testing-library/react-hooks'; import { useTokenSearch } from '.'; -import { TokenIWithFiatAmount } from '../useTokensWithBalance'; +import { BridgeToken } from '../../types'; +import { Hex } from '@metamask/utils'; describe('useTokenSearch', () => { // Mock token data - const mockTokens: TokenIWithFiatAmount[] = [ + const mockTokens: BridgeToken[] = [ { address: '0x1', symbol: 'ETH', @@ -13,10 +14,8 @@ describe('useTokenSearch', () => { balance: '1.23', balanceFiat: '$2000.00', tokenFiatAmount: 2000.00, - aggregators: [], image: 'https://example.com/eth.png', - logo: 'https://example.com/eth.png', - isETH: true, + chainId: '0x1', }, { address: '0x2', @@ -26,10 +25,8 @@ describe('useTokenSearch', () => { balance: '100.123', balanceFiat: '$100.123', tokenFiatAmount: 100.123, - aggregators: [], image: 'https://example.com/usdc.png', - logo: 'https://example.com/usdc.png', - isETH: false, + chainId: '0x1', }, { address: '0x3', @@ -39,10 +36,8 @@ describe('useTokenSearch', () => { balance: '0', balanceFiat: '$0.00', tokenFiatAmount: 0.00, - aggregators: [], image: 'https://example.com/dai.png', - logo: 'https://example.com/dai.png', - isETH: false, + chainId: '0x1', }, { address: '0x4', @@ -52,10 +47,8 @@ describe('useTokenSearch', () => { balance: '20.1', balanceFiat: '$20.1', tokenFiatAmount: 20.1, - aggregators: [], image: 'https://example.com/usdt.png', - logo: 'https://example.com/usdt.png', - isETH: false, + chainId: '0x1', }, ]; @@ -139,7 +132,7 @@ describe('useTokenSearch', () => { }); it('should handle undefined token list', () => { - const { result } = renderHook(() => useTokenSearch({ tokens: undefined as unknown as TokenIWithFiatAmount[] })); + const { result } = renderHook(() => useTokenSearch({ tokens: undefined as unknown as BridgeToken[] })); act(() => { result.current.setSearchString('ETH'); @@ -158,11 +151,9 @@ describe('useTokenSearch', () => { balance: '0', balanceFiat: '$0.00', tokenFiatAmount: 0, - aggregators: [], image: `https://example.com/tkn${i}.png`, - logo: `https://example.com/tkn${i}.png`, - isETH: false, - })) as TokenIWithFiatAmount[]; + chainId: '0x1' as Hex, + })); const { result } = renderHook(() => useTokenSearch({ tokens: largeTokenList })); diff --git a/app/components/UI/Bridge/hooks/useTokens.ts b/app/components/UI/Bridge/hooks/useTokens.ts new file mode 100644 index 000000000000..5a2734416180 --- /dev/null +++ b/app/components/UI/Bridge/hooks/useTokens.ts @@ -0,0 +1,58 @@ +import { useTokensWithBalance } from './useTokensWithBalance'; +import { Hex } from '@metamask/utils'; +import { useMemo } from 'react'; +import { useTopTokens } from './useTopTokens'; +import { BridgeToken } from '../types'; + +interface UseTokensProps { + topTokensChainId?: Hex; + balanceChainIds?: Hex[]; + tokensToExclude?: { address: string; chainId: Hex }[]; +} + +/** + * Hook to get tokens for the bridge + * @param {Object} params - The parameters object + * @param {Hex} params.topTokensChainId - The chain ID of the top tokens + * @param {Hex[]} params.balanceChainIds - The chain IDs you want to get the balance for + * @param {TokenI[]} params.tokensToExclude - The tokens to exclude + * @returns {BridgeToken[]} Array of tokens with fiat balances + */ +export function useTokens({ + topTokensChainId, + balanceChainIds, + tokensToExclude +}: UseTokensProps): { tokens: BridgeToken[], pending: boolean } { + const tokensWithBalance = useTokensWithBalance({ + chainIds: balanceChainIds as Hex[] + }); + + const { topTokens, pending } = useTopTokens({ chainId: topTokensChainId }); + + const topTokensFiltered = useMemo(() => + topTokens + // filter out tokens that are already in the tokensWithBalance array + ?.filter((token) => !tokensWithBalance.some( + (t) => t.address === token.address && t.chainId === token.chainId + )) ?? [], + [topTokens, tokensWithBalance] + ); + + const uniqueTokens = useMemo( + () => [...tokensWithBalance, ...topTokensFiltered], + [tokensWithBalance, topTokensFiltered] + ); + + const filteredTokens = useMemo( + () => uniqueTokens.filter((token) => { + // filter out tokens that are in the tokensToExclude array + const isSelectedToken = tokensToExclude?.some( + (t) => t.address === token.address && t.chainId === token.chainId + ); + return !isSelectedToken; + }), + [uniqueTokens, tokensToExclude] + ); + + return { tokens: filteredTokens, pending }; +} diff --git a/app/components/UI/Bridge/hooks/useTokensWithBalance/index.ts b/app/components/UI/Bridge/hooks/useTokensWithBalance/index.ts index b1d4fa3fa54a..2c119ecdf10f 100644 --- a/app/components/UI/Bridge/hooks/useTokensWithBalance/index.ts +++ b/app/components/UI/Bridge/hooks/useTokensWithBalance/index.ts @@ -16,8 +16,7 @@ import { } from '../../../Tokens/util'; import { selectTokenSortConfig } from '../../../../../selectors/preferencesController'; import { selectAccountTokensAcrossChains } from '../../../../../selectors/multichain'; - -export type TokenIWithFiatAmount = TokenI & { tokenFiatAmount: number }; +import { BridgeToken } from '../../types'; interface CalculateFiatBalancesParams { assets: TokenI[]; @@ -101,13 +100,13 @@ export const calculateBalances = ({ * Hook to get tokens with fiat balances * @param {Object} params - The parameters object * @param {Hex[]} params.chainIds - Array of chain IDs to filter by - * @returns {TokenIWithFiatAmount[]} Array of tokens (native and non-native) with sortable fiat balances + * @returns {BridgeToken[]} Array of tokens (native and non-native) with sortable fiat balances */ export const useTokensWithBalance: ({ chainIds, }: { chainIds: Hex[]; -}) => TokenIWithFiatAmount[] = ({ chainIds }) => { +}) => BridgeToken[] = ({ chainIds }) => { const tokenSortConfig = useSelector(selectTokenSortConfig); const currentCurrency = useSelector(selectCurrentCurrency); const selectedInternalAccountAddress = useSelector( @@ -142,13 +141,19 @@ export const useTokensWithBalance: ({ currentCurrency, selectedAddress: selectedInternalAccountAddress, }); - const properTokens = allAccountTokens.map((token, i) => ({ - ...token, - tokenFiatAmount: balances[i].tokenFiatAmount ?? 0, - balance: balances[i].balance, - balanceFiat: balances[i].balanceFiat, - symbol: token.isETH ? 'ETH' : token.symbol, // TODO: not sure why symbol is ETHEREUM, will also break the token icon for ETH - })); + const properTokens: BridgeToken[] = allAccountTokens + .filter((token) => Boolean(token.chainId)) // Ensure token has a chainId + .map((token, i) => ({ + address: token.address, + name: token.name, + decimals: token.decimals, + symbol: token.isETH ? 'ETH' : token.symbol, // TODO: not sure why symbol is ETHEREUM, will also break the token icon for ETH + chainId: token.chainId as Hex, + image: token.image, + tokenFiatAmount: balances[i].tokenFiatAmount ?? 0, + balance: balances[i].balance, + balanceFiat: balances[i].balanceFiat, + })); return sortAssets(properTokens, tokenSortConfig); }, [ accountTokensAcrossChains, diff --git a/app/components/UI/Bridge/hooks/useTokensWithBalance/useTokensWithBalance.test.ts b/app/components/UI/Bridge/hooks/useTokensWithBalance/useTokensWithBalance.test.ts index 8ae9f2b3dad0..81e29c04326c 100644 --- a/app/components/UI/Bridge/hooks/useTokensWithBalance/useTokensWithBalance.test.ts +++ b/app/components/UI/Bridge/hooks/useTokensWithBalance/useTokensWithBalance.test.ts @@ -3,7 +3,10 @@ import { useTokensWithBalance } from '.'; import { constants } from 'ethers'; import { waitFor } from '@testing-library/react-native'; import { Hex } from '@metamask/utils'; -import { BridgeFeatureFlagsKey } from '@metamask/bridge-controller'; +import { + BridgeFeatureFlagsKey, + formatChainIdToCaip, +} from '@metamask/bridge-controller'; // Mock dependencies jest.mock('../../../../../util/networks', () => ({ @@ -31,8 +34,14 @@ describe('useTokensWithBalance', () => { bridgeFeatureFlags: { [BridgeFeatureFlagsKey.MOBILE_CONFIG]: { chains: { - '0x1': { isActiveSrc: true, isActiveDest: true }, - '0xa': { isActiveSrc: true, isActiveDest: true }, + [formatChainIdToCaip(mockChainId)]: { + isActiveSrc: true, + isActiveDest: true, + }, + [formatChainIdToCaip(optimismChainId)]: { + isActiveSrc: true, + isActiveDest: true, + }, }, }, }, @@ -296,20 +305,24 @@ describe('useTokensWithBalance', () => { }); it('should include native token with correct properties', async () => { - const { result } = renderHookWithProvider(() => useTokensWithBalance({ - chainIds: [mockChainId, optimismChainId], - }), { - state: initialState, - }); + const { result } = renderHookWithProvider( + () => + useTokensWithBalance({ + chainIds: [mockChainId, optimismChainId], + }), + { + state: initialState, + }, + ); await waitFor(() => { - const nativeToken = result.current.find(token => token.isNative && token.chainId === mockChainId); + const nativeToken = result.current.find(token => token.address === constants.AddressZero && token.chainId === mockChainId); expect(nativeToken).toMatchObject({ address: constants.AddressZero, symbol: 'ETH', name: 'Ethereum', decimals: 18, - isNative: true, + chainId: mockChainId, balance: '3', balanceFiat: '$6000', tokenFiatAmount: 6000, @@ -318,16 +331,24 @@ describe('useTokensWithBalance', () => { }); it('should show correct balances and fiat values for tokens', async () => { - const { result } = renderHookWithProvider(() => useTokensWithBalance({ - chainIds: [mockChainId, optimismChainId], - }), { - state: initialState, - }); + const { result } = renderHookWithProvider( + () => + useTokensWithBalance({ + chainIds: [mockChainId, optimismChainId], + }), + { + state: initialState, + }, + ); await waitFor(() => { // Ethereum chain tokens - const token1 = result.current.find((t) => t.address === token1Address && t.chainId === mockChainId); - const token2 = result.current.find((t) => t.address === token2Address && t.chainId === mockChainId); + const token1 = result.current.find( + (t) => t.address === token1Address && t.chainId === mockChainId, + ); + const token2 = result.current.find( + (t) => t.address === token2Address && t.chainId === mockChainId, + ); expect(token1).toMatchObject({ balance: '1', @@ -342,7 +363,7 @@ describe('useTokensWithBalance', () => { }); // Optimism chain tokens - const optimismNative = result.current.find(token => token.isNative && token.chainId === optimismChainId); + const optimismNative = result.current.find(token => token.address === constants.AddressZero && token.chainId === optimismChainId); expect(optimismNative).toMatchObject({ address: constants.AddressZero, symbol: 'ETH', @@ -366,15 +387,19 @@ describe('useTokensWithBalance', () => { }); it('should only show tokens for selected chains', async () => { - const { result } = renderHookWithProvider(() => useTokensWithBalance({ - chainIds: [mockChainId], - }), { - state: initialState, - }); + const { result } = renderHookWithProvider( + () => + useTokensWithBalance({ + chainIds: [mockChainId], + }), + { + state: initialState, + }, + ); await waitFor(() => { // Ethereum tokens should be present - const ethereumNative = result.current.find(token => token.isNative && token.chainId === mockChainId); + const ethereumNative = result.current.find(token => token.address === constants.AddressZero && token.chainId === mockChainId); const token1 = result.current.find(t => t.address === token1Address); const token2 = result.current.find(t => t.address === token2Address); @@ -383,7 +408,7 @@ describe('useTokensWithBalance', () => { expect(token2).toBeTruthy(); // Optimism tokens should not be present - const optimismNative = result.current.find(token => token.isNative && token.chainId === optimismChainId); + const optimismNative = result.current.find(token => token.address === constants.AddressZero && token.chainId === optimismChainId); const token3 = result.current.find(t => t.address === token3Address); expect(optimismNative).toBeUndefined(); @@ -417,11 +442,15 @@ describe('useTokensWithBalance', () => { }, }; - const { result } = renderHookWithProvider(() => useTokensWithBalance({ - chainIds: [mockChainId, optimismChainId], - }), { - state: stateWithSmallBalance, - }); + const { result } = renderHookWithProvider( + () => + useTokensWithBalance({ + chainIds: [mockChainId, optimismChainId], + }), + { + state: stateWithSmallBalance, + }, + ); await waitFor(() => { const token1 = result.current.find((t) => t.address === token1Address); diff --git a/app/components/UI/Bridge/hooks/useTopTokens/index.ts b/app/components/UI/Bridge/hooks/useTopTokens/index.ts new file mode 100644 index 000000000000..36c239891783 --- /dev/null +++ b/app/components/UI/Bridge/hooks/useTopTokens/index.ts @@ -0,0 +1,104 @@ +import { BRIDGE_PROD_API_BASE_URL, BridgeClientId, fetchBridgeTokens, formatChainIdToHex } from '@metamask/bridge-controller'; +import { useAsyncResult } from '../../../../hooks/useAsyncResult'; +import { Hex } from '@metamask/utils'; +import { handleFetch, toChecksumHexAddress } from '@metamask/controller-utils'; +import { BridgeToken } from '../../types'; +import { useEffect, useMemo, useRef } from 'react'; +import Engine from '../../../../../core/Engine'; +import { useSelector } from 'react-redux'; +import Logger from '../../../../../util/Logger'; +import { selectChainCache } from '../../../../../reducers/swaps'; +import { SwapsControllerState } from '@metamask/swaps-controller'; +interface UseTopTokensProps { + chainId?: Hex; +} + +export const useTopTokens = ({ chainId }: UseTopTokensProps): { topTokens: BridgeToken[] | undefined, pending: boolean } => { + const swapsChainCache: SwapsControllerState['chainCache'] = useSelector(selectChainCache); + const swapsTopAssets = useMemo( + () => (chainId ? swapsChainCache[chainId]?.topAssets : null), + [chainId, swapsChainCache], + ); + const swapsTopAssetsPending = !swapsTopAssets; + + const cachedBridgeTokens = useRef<Record<string, Record<string, BridgeToken>>>({}); + + // Get the top assets from the Swaps API + useEffect(() => { + (async () => { + const { SwapsController } = Engine.context; + try { + if (chainId) { + // Maintains an internal cache, will fetch if past internal threshold + await SwapsController.fetchTopAssetsWithCache({ + chainId, + }); + } + } catch (error: unknown) { + Logger.error( + error as Error, + 'Swaps: Error while fetching top assets', + ); + } + })(); + }, [chainId]); + + // Get the token data from the bridge API + const { value: bridgeTokens, pending: bridgeTokensPending } = useAsyncResult(async () => { + if (!chainId) { + return {}; + } + + if (cachedBridgeTokens.current[chainId]) { + return cachedBridgeTokens.current[chainId]; + } + + const rawBridgeAssets = await fetchBridgeTokens( + chainId, + BridgeClientId.MOBILE, + handleFetch, + BRIDGE_PROD_API_BASE_URL, + ); + + // Convert from BridgeAsset to BridgeToken + const bridgeTokenObj: Record<string, BridgeToken> = {}; + Object.keys(rawBridgeAssets).forEach((key) => { + const bridgeAsset = rawBridgeAssets[key]; + + bridgeTokenObj[key] = { + address: bridgeAsset.address, + symbol: bridgeAsset.symbol, + name: bridgeAsset.name, + image: bridgeAsset.iconUrl || bridgeAsset.icon, + decimals: bridgeAsset.decimals, + chainId: formatChainIdToHex(bridgeAsset.chainId), // TODO handle solana properly + }; + }); + + cachedBridgeTokens.current = { + ...cachedBridgeTokens.current, + [chainId]: bridgeTokenObj, + }; + + return bridgeTokenObj; + }, [chainId]); + + // Merge the top assets from the Swaps API with the token data from the bridge API + const topTokens = useMemo(() => { + if (!bridgeTokens || !swapsTopAssets) { + return []; + } + + const top = swapsTopAssets.map((asset) => { + const candidateBridgeToken = bridgeTokens[asset.address.toLowerCase()] + || bridgeTokens[toChecksumHexAddress(asset.address)]; + + return candidateBridgeToken; + }) + .filter(Boolean) as BridgeToken[]; + + return top; + }, [bridgeTokens, swapsTopAssets]); + + return { topTokens, pending: chainId ? (bridgeTokensPending || swapsTopAssetsPending) : false }; +}; diff --git a/app/components/UI/Bridge/hooks/useTopTokens/useTopTokens.test.ts b/app/components/UI/Bridge/hooks/useTopTokens/useTopTokens.test.ts new file mode 100644 index 000000000000..acda34476d64 --- /dev/null +++ b/app/components/UI/Bridge/hooks/useTopTokens/useTopTokens.test.ts @@ -0,0 +1,145 @@ +import { renderHookWithProvider } from '../../../../../util/test/renderWithProvider'; +import { useTopTokens } from '.'; +import { waitFor } from '@testing-library/react-native'; +import { Hex } from '@metamask/utils'; +import { BridgeClientId, BRIDGE_PROD_API_BASE_URL, fetchBridgeTokens } from '@metamask/bridge-controller'; +import { handleFetch } from '@metamask/controller-utils'; +import { initialState } from '../../_mocks_/initialState'; +import { BridgeToken } from '../../types'; + +// Mock dependencies +jest.mock('@metamask/bridge-controller', () => ({ + ...jest.requireActual('@metamask/bridge-controller'), + fetchBridgeTokens: jest.fn(), +})); + +describe('useTopTokens', () => { + const mockChainId = '0x1' as Hex; + const mockBridgeToken1: BridgeToken = { + address: '0x0000000000000000000000000000000000000001', + symbol: 'TOKEN1', + name: 'Token One', + image: 'https://token1.com/logo.png', + decimals: 18, + chainId: '0x1', + }; + + const mockBridgeToken2: BridgeToken = { + address: '0x0000000000000000000000000000000000000002', + symbol: 'HELLO', + name: 'Hello Token', + image: 'https://token2.com/logo.png', + decimals: 18, + chainId: '0x1', + }; + + beforeEach(() => { + jest.clearAllMocks(); + }); + + it('should return empty array when no chainId is provided', () => { + const { result } = renderHookWithProvider(() => useTopTokens({}), { + state: initialState, + }); + + expect(result.current.topTokens).toEqual([]); + expect(result.current.pending).toBe(false); + }); + + it('should fetch and merge top tokens from Swaps and Bridge APIs', async () => { + // Mock Bridge API response with both tokens + const mockBridgeResponse = { + [mockBridgeToken1.address.toLowerCase()]: { + address: mockBridgeToken1.address, + symbol: mockBridgeToken1.symbol, + name: mockBridgeToken1.name, + iconUrl: mockBridgeToken1.image, + decimals: mockBridgeToken1.decimals, + chainId: mockBridgeToken1.chainId, + assetId: 'token1-asset-id', + }, + [mockBridgeToken2.address.toLowerCase()]: { + address: mockBridgeToken2.address, + symbol: mockBridgeToken2.symbol, + name: mockBridgeToken2.name, + iconUrl: mockBridgeToken2.image, + decimals: mockBridgeToken2.decimals, + chainId: mockBridgeToken2.chainId, + assetId: 'token2-asset-id', + }, + }; + + // Mock the Bridge API call + (fetchBridgeTokens as jest.Mock).mockResolvedValue(mockBridgeResponse); + + const { result } = renderHookWithProvider( + () => useTopTokens({ chainId: mockChainId }), + { state: initialState } + ); + + // Initial state should be pending + expect(result.current.pending).toBe(true); + + await waitFor(() => { + expect(result.current.pending).toBe(false); + expect(result.current.topTokens).toHaveLength(2); // From initialState's SwapsController.topAssets + + // Verify both tokens are present and have correct data + const tokens = result.current.topTokens || []; + expect(tokens[0]).toMatchObject({ + address: mockBridgeToken1.address, + symbol: mockBridgeToken1.symbol, + name: mockBridgeToken1.name, + image: mockBridgeToken1.image, + decimals: mockBridgeToken1.decimals, + chainId: mockBridgeToken1.chainId, + }); + + expect(tokens[1]).toMatchObject({ + address: mockBridgeToken2.address, + symbol: mockBridgeToken2.symbol, + name: mockBridgeToken2.name, + image: mockBridgeToken2.image, + decimals: mockBridgeToken2.decimals, + chainId: mockBridgeToken2.chainId, + }); + }); + + // Verify Bridge API was called with correct parameters + expect(fetchBridgeTokens).toHaveBeenCalledWith( + mockChainId, + BridgeClientId.MOBILE, + handleFetch, + BRIDGE_PROD_API_BASE_URL + ); + }); + + it('should handle Bridge API errors gracefully', async () => { + // Mock Bridge API error + (fetchBridgeTokens as jest.Mock).mockRejectedValue(new Error('Bridge API Error')); + + const { result } = renderHookWithProvider( + () => useTopTokens({ chainId: mockChainId }), + { state: initialState } + ); + + await waitFor(() => { + expect(result.current.pending).toBe(false); + expect(result.current.topTokens).toEqual([]); + }); + }); + + it('should handle missing Bridge token data gracefully', async () => { + (fetchBridgeTokens as jest.Mock).mockResolvedValue({}); + + const { result } = renderHookWithProvider( + () => useTopTokens({ chainId: mockChainId }), + { state: initialState } + ); + + await waitFor(() => { + expect(result.current.pending).toBe(false); + expect(result.current.topTokens).toEqual([]); + }); + }); +}); diff --git a/app/components/UI/Bridge/index.test.tsx b/app/components/UI/Bridge/index.test.tsx index ec7c575e3c36..5fd393c6288b 100644 --- a/app/components/UI/Bridge/index.test.tsx +++ b/app/components/UI/Bridge/index.test.tsx @@ -1,12 +1,22 @@ -import { renderScreen, DeepPartial } from '../../../util/test/renderWithProvider'; +import { + renderScreen, + DeepPartial, +} from '../../../util/test/renderWithProvider'; import { backgroundState } from '../../../util/test/initial-root-state'; import { RootState } from '../../../reducers'; import BridgeView from '../Bridge'; import { fireEvent, waitFor } from '@testing-library/react-native'; import Routes from '../../../constants/navigation/Routes'; -import { BridgeState, setDestToken, setSourceToken } from '../../../core/redux/slices/bridge'; +import { + BridgeState, + setDestToken, + setSourceToken, +} from '../../../core/redux/slices/bridge'; import { Hex } from '@metamask/utils'; -import { BridgeFeatureFlagsKey } from '@metamask/bridge-controller'; +import { + BridgeFeatureFlagsKey, + formatChainIdToCaip, +} from '@metamask/bridge-controller'; import { ethers } from 'ethers'; // TODO remove this mock once we have a real implementation @@ -23,7 +33,9 @@ jest.mock('../../../core/Engine', () => ({ })); jest.mock('../../../core/redux/slices/bridge', () => { - const actualBridgeSlice = jest.requireActual('../../../core/redux/slices/bridge'); + const actualBridgeSlice = jest.requireActual( + '../../../core/redux/slices/bridge', + ); return { __esModule: true, ...actualBridgeSlice, @@ -70,10 +82,7 @@ jest.mock('@react-navigation/native', () => { // Mock useLatestBalance hook jest.mock('./hooks/useLatestBalance', () => ({ - useLatestBalance: jest.fn().mockImplementation(({ - address, - chainId, - }) => { + useLatestBalance: jest.fn().mockImplementation(({ address, chainId }) => { if (!address || !chainId) return undefined; // Need to do this due to this error: "The module factory of `jest.mock()` is not allowed to reference any out-of-scope variables."" @@ -101,8 +110,14 @@ describe('BridgeView', () => { bridgeFeatureFlags: { [BridgeFeatureFlagsKey.MOBILE_CONFIG]: { chains: { - '0x1': { isActiveSrc: true, isActiveDest: true }, - '0xa': { isActiveSrc: true, isActiveDest: true }, + [formatChainIdToCaip(mockChainId)]: { + isActiveSrc: true, + isActiveDest: true, + }, + [formatChainIdToCaip(optimismChainId)]: { + isActiveSrc: true, + isActiveDest: true, + }, }, }, }, @@ -506,28 +521,20 @@ describe('BridgeView', () => { aggregators: [], balance: '0.31281', balanceFiat: '930.56676 cad', - chainId: '0x1', + chainId: '0x1' as Hex, decimals: 18, image: '', - isETH: true, - isNative: true, - isStaked: false, - logo: '../images/eth-logo-new.png', name: 'Ethereum', symbol: 'ETH', - ticker: 'ETH', }, destToken: { address: token2Address, aggregators: [], balance: '7.75388', balanceFiat: '11.07915 cad', - chainId: '0x1', + chainId: '0x1' as Hex, decimals: 6, image: 'https://static.cx.metamask.io/api/v1/tokenIcons/1/0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48.png', - isETH: false, - isNative: false, - isStaked: false, symbol: 'USDC', }, }, @@ -544,8 +551,12 @@ describe('BridgeView', () => { const arrowButton = getByTestId('arrow-button'); fireEvent.press(arrowButton); - expect(setSourceToken).toHaveBeenCalledWith(initialStateWithTokens.bridge.destToken); - expect(setDestToken).toHaveBeenCalledWith(initialStateWithTokens.bridge.sourceToken); + expect(setSourceToken).toHaveBeenCalledWith( + initialStateWithTokens.bridge.destToken, + ); + expect(setDestToken).toHaveBeenCalledWith( + initialStateWithTokens.bridge.sourceToken, + ); }); describe('Bottom Content', () => { @@ -628,24 +639,25 @@ describe('BridgeView', () => { { name: Routes.BRIDGE.ROOT, }, - { state: { - ...initialState, - bridge: { - ...initialState.bridge, - sourceAmount: '1.0', - destToken: { - address: token2Address, - symbol: 'TOKEN2', - decimals: 18, - image: 'https://token2.com/logo.png', - name: 'Token Two', - chainId: optimismChainId, + { + state: { + ...initialState, + bridge: { + ...initialState.bridge, + sourceAmount: '1.0', + destToken: { + address: token2Address, + symbol: 'TOKEN2', + decimals: 18, + image: 'https://token2.com/logo.png', + name: 'Token Two', + chainId: optimismChainId, + }, + selectedDestChainId: optimismChainId, + selectedSourceChainIds: [mockChainId, optimismChainId], }, - selectedDestChainId: optimismChainId, - selectedSourceChainIds: [mockChainId, optimismChainId], }, }, - }, ); const continueButton = getByText('Continue'); diff --git a/app/components/UI/Bridge/index.tsx b/app/components/UI/Bridge/index.tsx index 0c7cf651c5df..26888494daaf 100644 --- a/app/components/UI/Bridge/index.tsx +++ b/app/components/UI/Bridge/index.tsx @@ -1,11 +1,10 @@ -import React, { useEffect, useMemo, useState } from 'react'; +import React, { useEffect, useMemo } from 'react'; import { StyleSheet } from 'react-native'; import { useSelector, useDispatch } from 'react-redux'; import ScreenView from '../../Base/ScreenView'; import Keypad from '../../Base/Keypad'; import { TokenInputArea, TokenInputAreaType } from './components/TokenInputArea'; import Button, { - ButtonSize, ButtonVariants, } from '../../../component-library/components/Buttons/Button'; import { useStyles } from '../../../component-library/hooks'; @@ -44,6 +43,7 @@ import { Hex } from '@metamask/utils'; import Routes from '../../../constants/navigation/Routes'; import { selectBasicFunctionalityEnabled } from '../../../selectors/settings'; import ButtonIcon from '../../../component-library/components/Buttons/ButtonIcon'; +import QuoteDetailsCard from './components/QuoteDetailsCard'; const createStyles = (params: { theme: Theme }) => { const { theme } = params; @@ -92,13 +92,19 @@ const createStyles = (params: { theme: Theme }) => { textAlignVertical: 'center', paddingTop: 1, }, + quoteContainer: { + paddingHorizontal: 24, + paddingVertical: 24, + }, }); }; // We get here through handleBridgeNavigation in AssetOverview and WalletActions const BridgeView = () => { // The same as getUseExternalServices in Extension - const isBasicFunctionalityEnabled = useSelector(selectBasicFunctionalityEnabled); + const isBasicFunctionalityEnabled = useSelector( + selectBasicFunctionalityEnabled, + ); useEffect(() => { const setBridgeFeatureFlags = async () => { @@ -128,29 +134,36 @@ const BridgeView = () => { const destAmount = useSelector(selectDestAmount); const destChainId = useSelector(selectSelectedDestChainId); - // Add state for slippage - const [slippage, setSlippage] = useState('0.5'); - const latestSourceBalance = useLatestBalance({ address: sourceToken?.address, decimals: sourceToken?.decimals, chainId: sourceToken?.chainId as Hex, - balance: sourceToken?.balance + balance: sourceToken?.balance, }); const hasInsufficientBalance = useMemo(() => { - if (!sourceAmount || !latestSourceBalance?.atomicBalance || !sourceToken?.decimals) { + if ( + !sourceAmount || + !latestSourceBalance?.atomicBalance || + !sourceToken?.decimals + ) { return false; } - const sourceAmountAtomic = ethers.utils.parseUnits(sourceAmount, sourceToken.decimals); + const sourceAmountAtomic = ethers.utils.parseUnits( + sourceAmount, + sourceToken.decimals, + ); return sourceAmountAtomic.gt(latestSourceBalance.atomicBalance); }, [sourceAmount, latestSourceBalance?.atomicBalance, sourceToken?.decimals]); // Reset bridge state when component unmounts - useEffect(() => () => { - dispatch(resetBridgeState()); - }, [dispatch]); + useEffect( + () => () => { + dispatch(resetBridgeState()); + }, + [dispatch], + ); useEffect(() => { navigation.setOptions(getBridgeNavbar(navigation, route, colors)); @@ -187,24 +200,13 @@ const BridgeView = () => { } }; - // Add function to navigate to slippage modal - const handleSlippagePress = () => { - navigation.navigate(Routes.BRIDGE.MODALS.ROOT, { - screen: Routes.BRIDGE.MODALS.SLIPPAGE_MODAL, - params: { - selectedSlippage: slippage, - onSelectSlippage: setSlippage, - }, - }); - }; - - const handleSourceTokenPress = () => + const handleSourceTokenPress = () => navigation.navigate(Routes.BRIDGE.MODALS.ROOT, { screen: Routes.BRIDGE.MODALS.SOURCE_TOKEN_SELECTOR, params: {}, }); - const handleDestTokenPress = () => + const handleDestTokenPress = () => navigation.navigate(Routes.BRIDGE.MODALS.ROOT, { screen: Routes.BRIDGE.MODALS.DEST_TOKEN_SELECTOR, params: {}, @@ -259,7 +261,9 @@ const BridgeView = () => { token={sourceToken} tokenBalance={latestSourceBalance?.displayBalance} //@ts-expect-error - The utils/network file is still JS and this function expects a networkType, and should be optional - networkImageSource={getNetworkImageSource({ chainId: sourceToken?.chainId as Hex })} + networkImageSource={getNetworkImageSource({ + chainId: sourceToken?.chainId as Hex, + })} autoFocus isReadonly testID="source-token-area" @@ -279,21 +283,22 @@ const BridgeView = () => { <TokenInputArea amount={destAmount} token={destToken} - //@ts-expect-error - The utils/network file is still JS and this function expects a networkType, and should be optional - networkImageSource={destToken ? getNetworkImageSource({ chainId: destToken?.chainId as Hex }) : undefined} + networkImageSource={ + destToken + ? //@ts-expect-error - The utils/network file is still JS and this function expects a networkType, and should be optional + getNetworkImageSource({ chainId: destToken?.chainId as Hex }) + : undefined + } isReadonly testID="dest-token-area" tokenType={TokenInputAreaType.Destination} onTokenPress={handleDestTokenPress} /> + <Box style={styles.quoteContainer}> + <QuoteDetailsCard /> + </Box> </Box> - <Button - variant={ButtonVariants.Secondary} - label={strings('bridge.slippage') + ' ' + slippage + '%'} - onPress={handleSlippagePress} - style={styles.button} - size={ButtonSize.Sm} - /> + <Box style={styles.bottomSection}> <Keypad value={sourceAmount} diff --git a/app/components/UI/Bridge/types.ts b/app/components/UI/Bridge/types.ts index 26b9c2576b27..fb69535d33f4 100644 --- a/app/components/UI/Bridge/types.ts +++ b/app/components/UI/Bridge/types.ts @@ -1,12 +1,17 @@ import { TxData, Quote } from '@metamask/bridge-controller'; -import type { CaipChainId } from '@metamask/utils'; +import { Hex } from '@metamask/utils'; +// This is slightly different from the BridgeToken type in @metamask/bridge-controller export interface BridgeToken { address: string; + name?: string; symbol: string; - image: string; + image?: string; decimals: number; - chainId: CaipChainId; + chainId: Hex; + balance?: string; // A truncated non-atomic balance, e.g. 1.23456 + balanceFiat?: string; // A formatted fiat value, e.g. "$100.12345", "100.12345 cad" + tokenFiatAmount?: number; // A sortable fiat value in the user's currency, e.g. 100.12345 } // TODO: use type from @metamask/bridge-controller once "approval" is made optional diff --git a/app/components/UI/Bridge/utils/index.ts b/app/components/UI/Bridge/utils/index.ts new file mode 100644 index 000000000000..5af837c146e1 --- /dev/null +++ b/app/components/UI/Bridge/utils/index.ts @@ -0,0 +1 @@ +export const isBridgeUiEnabled = () => process.env.MM_BRIDGE_UI_ENABLED === 'true'; diff --git a/app/components/UI/Bridge/utils/isBridgeAllowed.test.ts b/app/components/UI/Bridge/utils/isBridgeAllowed.test.ts new file mode 100644 index 000000000000..2c246e33dcf7 --- /dev/null +++ b/app/components/UI/Bridge/utils/isBridgeAllowed.test.ts @@ -0,0 +1,81 @@ +import isBridgeAllowed from './isBridgeAllowed'; +import AppConstants from '../../../../core/AppConstants'; +import { NETWORKS_CHAIN_ID } from '../../../../constants/network'; +import { BtcScope, SolScope } from '@metamask/keyring-api'; +import { isBridgeUiEnabled } from './'; +// Mock AppConstants +jest.mock('../../../../core/AppConstants', () => ({ + BRIDGE: { + ACTIVE: true, + }, +})); + +jest.mock('.', () => ({ + __esModule: true, + isBridgeUiEnabled: jest.fn(() => true), +})); + +describe('isBridgeAllowed', () => { + const { + MAINNET, + OPTIMISM, + BSC, + POLYGON, + ZKSYNC_ERA: ZKSYNC, + BASE, + ARBITRUM, + AVAXCCHAIN: AVALANCHE, + LINEA_MAINNET: LINEA, + } = NETWORKS_CHAIN_ID; + + describe('when BRIDGE.ACTIVE is false', () => { + beforeEach(() => { + (AppConstants.BRIDGE.ACTIVE as boolean) = false; + }); + + it('should return false for any chain ID', () => { + expect(isBridgeAllowed(MAINNET)).toBe(false); + expect(isBridgeAllowed(OPTIMISM)).toBe(false); + expect(isBridgeAllowed('0x999')).toBe(false); + }); + }); + + describe('when BRIDGE.ACTIVE is true', () => { + beforeEach(() => { + (AppConstants.BRIDGE.ACTIVE as boolean) = true; + }); + + it('should return true for allowed chain IDs', () => { + expect(isBridgeAllowed(MAINNET)).toBe(true); + expect(isBridgeAllowed(OPTIMISM)).toBe(true); + expect(isBridgeAllowed(BSC)).toBe(true); + expect(isBridgeAllowed(POLYGON)).toBe(true); + expect(isBridgeAllowed(ZKSYNC)).toBe(true); + expect(isBridgeAllowed(BASE)).toBe(true); + expect(isBridgeAllowed(ARBITRUM)).toBe(true); + expect(isBridgeAllowed(AVALANCHE)).toBe(true); + expect(isBridgeAllowed(LINEA)).toBe(true); + }); + + it('should return false for non-allowed chain IDs', () => { + expect(isBridgeAllowed('0x999')).toBe(false); + expect(isBridgeAllowed('0x123')).toBe(false); + }); + + it('should return false for Bitcoin mainnet', () => { + expect(isBridgeAllowed(BtcScope.Mainnet)).toBe(false); + }); + + describe('Solana mainnet handling', () => { + it('should return true for Solana mainnet when bridge UI is enabled', () => { + (isBridgeUiEnabled as jest.Mock).mockReturnValue(true); + expect(isBridgeAllowed(SolScope.Mainnet)).toBe(true); + }); + + it('should return false for Solana mainnet when bridge UI is disabled', () => { + (isBridgeUiEnabled as jest.Mock).mockReturnValue(false); + expect(isBridgeAllowed(SolScope.Mainnet)).toBe(false); + }); + }); + }); +}); diff --git a/app/components/UI/Bridge/utils/isBridgeAllowed.ts b/app/components/UI/Bridge/utils/isBridgeAllowed.ts index 9f54bfc7edec..13e55aff8c4d 100644 --- a/app/components/UI/Bridge/utils/isBridgeAllowed.ts +++ b/app/components/UI/Bridge/utils/isBridgeAllowed.ts @@ -1,7 +1,16 @@ import AppConstants from '../../../../core/AppConstants'; import { NETWORKS_CHAIN_ID } from '../../../../constants/network'; import { CaipChainId, Hex } from '@metamask/utils'; -import { isNonEvmChainId } from '../../../../core/Multichain/utils'; +import { + BtcScope, + ///: BEGIN:ONLY_INCLUDE_IF(keyring-snaps) + SolScope, + ///: END:ONLY_INCLUDE_IF(keyring-snaps) +} from '@metamask/keyring-api'; + +///: BEGIN:ONLY_INCLUDE_IF(keyring-snaps) +import { isBridgeUiEnabled } from './'; +///: END:ONLY_INCLUDE_IF(keyring-snaps) const { MAINNET, @@ -35,7 +44,13 @@ const allowedChainIds = [ export default function isBridgeAllowed(chainId: Hex | CaipChainId) { if (!AppConstants.BRIDGE.ACTIVE) return false; - if (isNonEvmChainId(chainId)) { + ///: BEGIN:ONLY_INCLUDE_IF(keyring-snaps) + if (chainId === SolScope.Mainnet && isBridgeUiEnabled()) { + return true; + } + ///: END:ONLY_INCLUDE_IF(keyring-snaps) + + if (chainId === BtcScope.Mainnet) { return false; } diff --git a/app/components/UI/BrowserBottomBar/__snapshots__/index.test.tsx.snap b/app/components/UI/BrowserBottomBar/__snapshots__/index.test.tsx.snap index be03def149bd..917ac769762a 100644 --- a/app/components/UI/BrowserBottomBar/__snapshots__/index.test.tsx.snap +++ b/app/components/UI/BrowserBottomBar/__snapshots__/index.test.tsx.snap @@ -13,7 +13,7 @@ exports[`BrowserBottomBar should render correctly 1`] = ` }, { "backgroundColor": "#ffffff", - "borderColor": "#BBC0C566", + "borderColor": "#b7bbc866", "borderTopWidth": 0.5, "flex": 0, "flexDirection": "row", @@ -49,7 +49,7 @@ exports[`BrowserBottomBar should render correctly 1`] = ` }, [ { - "color": "#141618", + "color": "#121314", "height": 24, "textAlign": "center", "width": 24, @@ -95,13 +95,13 @@ exports[`BrowserBottomBar should render correctly 1`] = ` }, [ { - "color": "#141618", + "color": "#121314", "height": 24, "textAlign": "center", "width": 24, }, { - "color": "#9fa6ae", + "color": "#9ca1af", }, ], { @@ -141,7 +141,7 @@ exports[`BrowserBottomBar should render correctly 1`] = ` "fontSize": 24, }, { - "color": "#141618", + "color": "#121314", "height": 24, "textAlign": "center", "width": 24, @@ -179,7 +179,7 @@ exports[`BrowserBottomBar should render correctly 1`] = ` [ { "alignItems": "center", - "borderColor": "#6a737d", + "borderColor": "#686e7d", "borderRadius": 6, "borderWidth": 2, "justifyContent": "center", @@ -196,9 +196,9 @@ exports[`BrowserBottomBar should render correctly 1`] = ` style={ { "alignSelf": "center", - "color": "#6a737d", + "color": "#686e7d", "flex": 0, - "fontFamily": "EuclidCircularB-Regular", + "fontFamily": "CentraNo1-Book", "fontSize": 15, "fontWeight": "400", "textAlign": "center", @@ -235,7 +235,7 @@ exports[`BrowserBottomBar should render correctly 1`] = ` "fontSize": 22, }, { - "color": "#141618", + "color": "#121314", "height": 24, "textAlign": "center", "width": 24, @@ -277,7 +277,7 @@ exports[`BrowserBottomBar should render correctly 1`] = ` "fontSize": 22, }, { - "color": "#141618", + "color": "#121314", "height": 24, "textAlign": "center", "width": 24, diff --git a/app/components/UI/BrowserUrlBar/__snapshots__/BrowserUrlBar.test.tsx.snap b/app/components/UI/BrowserUrlBar/__snapshots__/BrowserUrlBar.test.tsx.snap index 957386ff1878..e535c2634b54 100644 --- a/app/components/UI/BrowserUrlBar/__snapshots__/BrowserUrlBar.test.tsx.snap +++ b/app/components/UI/BrowserUrlBar/__snapshots__/BrowserUrlBar.test.tsx.snap @@ -13,7 +13,7 @@ exports[`BrowserUrlBar should render correctly 1`] = ` style={ { "alignItems": "center", - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", "borderRadius": 999, "flex": 1, "flexDirection": "row", @@ -40,14 +40,14 @@ exports[`BrowserUrlBar should render correctly 1`] = ` onFocus={[Function]} onSubmitEditing={[Function]} placeholder="Search by site or address" - placeholderTextColor="#9fa6ae" + placeholderTextColor="#9ca1af" returnKeyType="go" selectTextOnFocus={true} style={ { - "color": "#141618", + "color": "#121314", "flex": 1, - "fontFamily": "EuclidCircularB-Regular", + "fontFamily": "CentraNo1-Book", "fontSize": 14, "fontWeight": "400", "height": 44, @@ -89,7 +89,7 @@ exports[`BrowserUrlBar should render correctly 1`] = ` testID="url-clear-icon" > <SvgMock - color="#6a737d" + color="#686e7d" height={20} name="CircleX" style={ @@ -132,12 +132,12 @@ exports[`BrowserUrlBar should render correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Regular", + "color": "#4459ff", + "fontFamily": "CentraNo1-Book", "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -171,7 +171,7 @@ exports[`BrowserUrlBar should render correctly when url bar is not focused 1`] = testID="url-input" > <SvgMock - color="#6a737d" + color="#686e7d" height={16} name="Lock" style={ @@ -201,14 +201,14 @@ exports[`BrowserUrlBar should render correctly when url bar is not focused 1`] = onFocus={[Function]} onSubmitEditing={[Function]} placeholder="Search by site or address" - placeholderTextColor="#9fa6ae" + placeholderTextColor="#9ca1af" returnKeyType="go" selectTextOnFocus={true} style={ { - "color": "#141618", + "color": "#121314", "flex": 1, - "fontFamily": "EuclidCircularB-Regular", + "fontFamily": "CentraNo1-Book", "fontSize": 14, "fontWeight": "400", "height": 44, @@ -315,14 +315,14 @@ exports[`BrowserUrlBar should render correctly when url bar is not focused 1`] = style={ { "alignItems": "center", - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", "borderColor": "#ffffff", "borderRadius": 16, "borderWidth": 2, "height": 32, "justifyContent": "center", "overflow": "hidden", - "shadowColor": "#0000001A", + "shadowColor": "#0000001a", "shadowOffset": { "height": 2, "width": 0, @@ -342,8 +342,8 @@ exports[`BrowserUrlBar should render correctly when url bar is not focused 1`] = accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, diff --git a/app/components/UI/Button/__snapshots__/index.test.tsx.snap b/app/components/UI/Button/__snapshots__/index.test.tsx.snap index 181638ce3fae..b09082e4f90e 100644 --- a/app/components/UI/Button/__snapshots__/index.test.tsx.snap +++ b/app/components/UI/Button/__snapshots__/index.test.tsx.snap @@ -7,7 +7,7 @@ exports[`Button should render correctly 1`] = ` [ { "alignItems": "center", - "backgroundColor": "#0376c9", + "backgroundColor": "#4459ff", "borderRadius": 4, "flex": 1, "height": 40, diff --git a/app/components/UI/Carousel/__snapshots__/index.test.tsx.snap b/app/components/UI/Carousel/__snapshots__/index.test.tsx.snap index 4aba63de5739..87ea76f6bb50 100644 --- a/app/components/UI/Carousel/__snapshots__/index.test.tsx.snap +++ b/app/components/UI/Carousel/__snapshots__/index.test.tsx.snap @@ -36,6 +36,20 @@ exports[`Carousel should only render fund banner when all banners are dismissed "title": "banner.fund.title", "undismissable": true, }, + { + "description": "banner.multisrp.subtitle", + "id": "multisrp", + "navigation": { + "navigationStack": "AccountActions", + "route": "ImportSRPView", + "type": "route", + }, + "testID": "carousel-fifth-slide", + "testIDCloseButton": "carousel-fifth-slide-close-button", + "testIDTitle": "carousel-fifth-slide-title", + "title": "banner.multisrp.title", + "undismissable": false, + }, ] } getItem={[Function]} @@ -103,8 +117,8 @@ exports[`Carousel should only render fund banner when all banners are dismissed style={ [ { - "backgroundColor": "#f2f4f6", - "borderColor": "#BBC0C566", + "backgroundColor": "#f3f5f9", + "borderColor": "#b7bbc866", "borderRadius": 8, "borderWidth": 1, "height": 59, @@ -175,12 +189,12 @@ exports[`Carousel should only render fund banner when all banners are dismissed accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", + "color": "#121314", + "fontFamily": "CentraNo1-Medium", "fontSize": 12, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, "marginLeft": 14, } } @@ -192,12 +206,12 @@ exports[`Carousel should only render fund banner when all banners are dismissed accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 10.4, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, "marginLeft": 14, "marginTop": -4, } @@ -210,9 +224,240 @@ exports[`Carousel should only render fund banner when all banners are dismissed </View> </View> </View> + <View + onFocusCapture={[Function]} + onLayout={[Function]} + style={ + [ + { + "flexDirection": "row", + }, + null, + ] + } + > + <View + accessibilityState={ + { + "busy": undefined, + "checked": undefined, + "disabled": undefined, + "expanded": undefined, + "selected": undefined, + } + } + accessibilityValue={ + { + "max": undefined, + "min": undefined, + "now": undefined, + "text": undefined, + } + } + accessible={true} + collapsable={false} + focusable={true} + onBlur={[Function]} + onClick={[Function]} + onFocus={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} + style={ + [ + { + "backgroundColor": "#f3f5f9", + "borderColor": "#b7bbc866", + "borderRadius": 8, + "borderWidth": 1, + "height": 59, + "marginHorizontal": 5, + "position": "relative", + "width": 718, + }, + false, + ] + } + testID="carousel-fifth-slide" + > + <View + style={ + { + "alignItems": "center", + "flexDirection": "row", + "height": "100%", + "width": "100%", + } + } + > + <View + style={ + { + "alignItems": "center", + "height": 59, + "justifyContent": "center", + "overflow": "hidden", + "width": 60, + } + } + > + <Image + resizeMode="contain" + source={ + { + "uri": "aggregated-image", + } + } + style={ + { + "height": 59, + "width": 60, + } + } + /> + </View> + <View + style={ + { + "flex": 1, + "justifyContent": "center", + } + } + > + <View + style={ + { + "display": "flex", + "flexDirection": "column", + "gap": 0, + "width": 658, + } + } + > + <Text + accessibilityRole="text" + style={ + { + "color": "#121314", + "fontFamily": "CentraNo1-Medium", + "fontSize": 12, + "fontWeight": "500", + "letterSpacing": 0, + "lineHeight": 24, + "marginLeft": 14, + } + } + testID="carousel-fifth-slide-title" + > + banner.multisrp.title + </Text> + <Text + accessibilityRole="text" + style={ + { + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 10.4, + "fontWeight": "400", + "letterSpacing": 0, + "lineHeight": 22, + "marginLeft": 14, + "marginTop": -4, + } + } + > + banner.multisrp.subtitle + </Text> + </View> + </View> + <TouchableOpacity + onPress={[Function]} + style={ + { + "alignItems": "center", + "height": 26, + "justifyContent": "center", + "position": "absolute", + "right": 6, + "top": 4, + "width": 26, + } + } + testID="carousel-fifth-slide-close-button" + > + <Text + allowFontScaling={false} + style={ + [ + { + "color": "#121314", + "fontSize": 18, + }, + undefined, + { + "fontFamily": "Material Design Icons", + "fontStyle": "normal", + "fontWeight": "normal", + }, + {}, + ] + } + > +  + </Text> + </TouchableOpacity> + </View> + </View> + </View> </View> </RCTScrollView> </View> + <View + style={ + { + "alignItems": "flex-end", + "flexDirection": "row", + "gap": 8, + "height": 18, + "justifyContent": "center", + } + } + testID="progress-dots" + > + <View + style={ + [ + { + "backgroundColor": "#9ca1af", + "borderRadius": 3, + "height": 6, + "margin": 0, + "width": 6, + }, + { + "backgroundColor": "#121314", + }, + ] + } + /> + <View + style={ + [ + { + "backgroundColor": "#9ca1af", + "borderRadius": 3, + "height": 6, + "margin": 0, + "width": 6, + }, + false, + ] + } + /> + </View> </View> `; @@ -292,6 +537,20 @@ exports[`Carousel should render correctly 1`] = ` "title": "banner.aggregated.title", "undismissable": false, }, + { + "description": "banner.multisrp.subtitle", + "id": "multisrp", + "navigation": { + "navigationStack": "AccountActions", + "route": "ImportSRPView", + "type": "route", + }, + "testID": "carousel-fifth-slide", + "testIDCloseButton": "carousel-fifth-slide-close-button", + "testIDTitle": "carousel-fifth-slide-title", + "title": "banner.multisrp.title", + "undismissable": false, + }, ] } getItem={[Function]} @@ -359,8 +618,8 @@ exports[`Carousel should render correctly 1`] = ` style={ [ { - "backgroundColor": "#f2f4f6", - "borderColor": "#BBC0C566", + "backgroundColor": "#f3f5f9", + "borderColor": "#b7bbc866", "borderRadius": 8, "borderWidth": 1, "height": 59, @@ -431,12 +690,12 @@ exports[`Carousel should render correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", + "color": "#121314", + "fontFamily": "CentraNo1-Medium", "fontSize": 12, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, "marginLeft": 14, } } @@ -448,12 +707,12 @@ exports[`Carousel should render correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 10.4, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, "marginLeft": 14, "marginTop": -4, } @@ -483,7 +742,7 @@ exports[`Carousel should render correctly 1`] = ` style={ [ { - "color": "#141618", + "color": "#121314", "fontSize": 18, }, undefined, @@ -547,8 +806,8 @@ exports[`Carousel should render correctly 1`] = ` style={ [ { - "backgroundColor": "#f2f4f6", - "borderColor": "#BBC0C566", + "backgroundColor": "#f3f5f9", + "borderColor": "#b7bbc866", "borderRadius": 8, "borderWidth": 1, "height": 59, @@ -619,12 +878,12 @@ exports[`Carousel should render correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", + "color": "#121314", + "fontFamily": "CentraNo1-Medium", "fontSize": 12, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, "marginLeft": 14, } } @@ -636,12 +895,12 @@ exports[`Carousel should render correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 10.4, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, "marginLeft": 14, "marginTop": -4, } @@ -699,8 +958,8 @@ exports[`Carousel should render correctly 1`] = ` style={ [ { - "backgroundColor": "#f2f4f6", - "borderColor": "#BBC0C566", + "backgroundColor": "#f3f5f9", + "borderColor": "#b7bbc866", "borderRadius": 8, "borderWidth": 1, "height": 59, @@ -771,12 +1030,12 @@ exports[`Carousel should render correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", + "color": "#121314", + "fontFamily": "CentraNo1-Medium", "fontSize": 12, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, "marginLeft": 14, } } @@ -788,12 +1047,12 @@ exports[`Carousel should render correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 10.4, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, "marginLeft": 14, "marginTop": -4, } @@ -823,7 +1082,7 @@ exports[`Carousel should render correctly 1`] = ` style={ [ { - "color": "#141618", + "color": "#121314", "fontSize": 18, }, undefined, @@ -887,8 +1146,8 @@ exports[`Carousel should render correctly 1`] = ` style={ [ { - "backgroundColor": "#f2f4f6", - "borderColor": "#BBC0C566", + "backgroundColor": "#f3f5f9", + "borderColor": "#b7bbc866", "borderRadius": 8, "borderWidth": 1, "height": 59, @@ -959,12 +1218,12 @@ exports[`Carousel should render correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", + "color": "#121314", + "fontFamily": "CentraNo1-Medium", "fontSize": 12, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, "marginLeft": 14, } } @@ -976,12 +1235,12 @@ exports[`Carousel should render correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 10.4, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, "marginLeft": 14, "marginTop": -4, } @@ -1011,7 +1270,195 @@ exports[`Carousel should render correctly 1`] = ` style={ [ { - "color": "#141618", + "color": "#121314", + "fontSize": 18, + }, + undefined, + { + "fontFamily": "Material Design Icons", + "fontStyle": "normal", + "fontWeight": "normal", + }, + {}, + ] + } + > +  + </Text> + </TouchableOpacity> + </View> + </View> + </View> + <View + onFocusCapture={[Function]} + onLayout={[Function]} + style={ + [ + { + "flexDirection": "row", + }, + null, + ] + } + > + <View + accessibilityState={ + { + "busy": undefined, + "checked": undefined, + "disabled": undefined, + "expanded": undefined, + "selected": undefined, + } + } + accessibilityValue={ + { + "max": undefined, + "min": undefined, + "now": undefined, + "text": undefined, + } + } + accessible={true} + collapsable={false} + focusable={true} + onBlur={[Function]} + onClick={[Function]} + onFocus={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} + style={ + [ + { + "backgroundColor": "#f3f5f9", + "borderColor": "#b7bbc866", + "borderRadius": 8, + "borderWidth": 1, + "height": 59, + "marginHorizontal": 5, + "position": "relative", + "width": 718, + }, + false, + ] + } + testID="carousel-fifth-slide" + > + <View + style={ + { + "alignItems": "center", + "flexDirection": "row", + "height": "100%", + "width": "100%", + } + } + > + <View + style={ + { + "alignItems": "center", + "height": 59, + "justifyContent": "center", + "overflow": "hidden", + "width": 60, + } + } + > + <Image + resizeMode="contain" + source={ + { + "uri": "aggregated-image", + } + } + style={ + { + "height": 59, + "width": 60, + } + } + /> + </View> + <View + style={ + { + "flex": 1, + "justifyContent": "center", + } + } + > + <View + style={ + { + "display": "flex", + "flexDirection": "column", + "gap": 0, + "width": 658, + } + } + > + <Text + accessibilityRole="text" + style={ + { + "color": "#121314", + "fontFamily": "CentraNo1-Medium", + "fontSize": 12, + "fontWeight": "500", + "letterSpacing": 0, + "lineHeight": 24, + "marginLeft": 14, + } + } + testID="carousel-fifth-slide-title" + > + banner.multisrp.title + </Text> + <Text + accessibilityRole="text" + style={ + { + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 10.4, + "fontWeight": "400", + "letterSpacing": 0, + "lineHeight": 22, + "marginLeft": 14, + "marginTop": -4, + } + } + > + banner.multisrp.subtitle + </Text> + </View> + </View> + <TouchableOpacity + onPress={[Function]} + style={ + { + "alignItems": "center", + "height": 26, + "justifyContent": "center", + "position": "absolute", + "right": 6, + "top": 4, + "width": 26, + } + } + testID="carousel-fifth-slide-close-button" + > + <Text + allowFontScaling={false} + style={ + [ + { + "color": "#121314", "fontSize": 18, }, undefined, @@ -1049,14 +1496,14 @@ exports[`Carousel should render correctly 1`] = ` style={ [ { - "backgroundColor": "#9fa6ae", + "backgroundColor": "#9ca1af", "borderRadius": 3, "height": 6, "margin": 0, "width": 6, }, { - "backgroundColor": "#141618", + "backgroundColor": "#121314", }, ] } @@ -1065,7 +1512,21 @@ exports[`Carousel should render correctly 1`] = ` style={ [ { - "backgroundColor": "#9fa6ae", + "backgroundColor": "#9ca1af", + "borderRadius": 3, + "height": 6, + "margin": 0, + "width": 6, + }, + false, + ] + } + /> + <View + style={ + [ + { + "backgroundColor": "#9ca1af", "borderRadius": 3, "height": 6, "margin": 0, @@ -1079,7 +1540,7 @@ exports[`Carousel should render correctly 1`] = ` style={ [ { - "backgroundColor": "#9fa6ae", + "backgroundColor": "#9ca1af", "borderRadius": 3, "height": 6, "margin": 0, @@ -1093,7 +1554,7 @@ exports[`Carousel should render correctly 1`] = ` style={ [ { - "backgroundColor": "#9fa6ae", + "backgroundColor": "#9ca1af", "borderRadius": 3, "height": 6, "margin": 0, diff --git a/app/components/UI/Carousel/constants.ts b/app/components/UI/Carousel/constants.ts index cc3d4be3b8a5..8808cc6146c7 100644 --- a/app/components/UI/Carousel/constants.ts +++ b/app/components/UI/Carousel/constants.ts @@ -11,6 +11,9 @@ import cardImage from '../../../images/banners/banner_image_card.png'; import fundImage from '../../../images/banners/banner_image_fund.png'; import cashoutImage from '../../../images/banners/banner_image_cashout.png'; import aggregatedImage from '../../../images/banners/banner_image_aggregated.png'; +///: BEGIN:ONLY_INCLUDE_IF(multi-srp) +import multiSrpImage from '../../../images/banners/banner_image_multisrp.png'; +///: END:ONLY_INCLUDE_IF export const PREDEFINED_SLIDES: CarouselSlide[] = [ { @@ -65,6 +68,22 @@ export const PREDEFINED_SLIDES: CarouselSlide[] = [ testIDCloseButton: WalletViewSelectorsIDs.CAROUSEL_FOURTH_SLIDE_CLOSE_BUTTON, }, + ///: BEGIN:ONLY_INCLUDE_IF(multi-srp) + { + id: 'multisrp', + title: strings('banner.multisrp.title'), + description: strings('banner.multisrp.subtitle'), + undismissable: false, + navigation: { + type: 'route', + route: Routes.MULTI_SRP.IMPORT, + navigationStack: Routes.SHEET.ACCOUNT_ACTIONS, + }, + testID: WalletViewSelectorsIDs.CAROUSEL_FIFTH_SLIDE, + testIDTitle: WalletViewSelectorsIDs.CAROUSEL_FIFTH_SLIDE_TITLE, + testIDCloseButton: WalletViewSelectorsIDs.CAROUSEL_FIFTH_SLIDE_CLOSE_BUTTON, + }, + ///: END:ONLY_INCLUDE_IF ]; export const BANNER_IMAGES: Record<SlideId, ImageSourcePropType> = { @@ -72,4 +91,7 @@ export const BANNER_IMAGES: Record<SlideId, ImageSourcePropType> = { fund: fundImage, cashout: cashoutImage, aggregated: aggregatedImage, + ///: BEGIN:ONLY_INCLUDE_IF(multi-srp) + multisrp: multiSrpImage, + ///: END:ONLY_INCLUDE_IF }; diff --git a/app/components/UI/Carousel/index.test.tsx b/app/components/UI/Carousel/index.test.tsx index ea2563b7320b..0eb38ec134e4 100644 --- a/app/components/UI/Carousel/index.test.tsx +++ b/app/components/UI/Carousel/index.test.tsx @@ -7,7 +7,7 @@ import { WalletViewSelectorsIDs } from '../../../../e2e/selectors/wallet/WalletV import { backgroundState } from '../../../util/test/initial-root-state'; jest.mock('../../../core/Engine', () => ({ - getTotalFiatAccountBalance: jest.fn(), + getTotalEvmFiatAccountBalance: jest.fn(), context: { TokensController: { ignoreTokens: jest.fn(() => Promise.resolve()), @@ -46,7 +46,7 @@ jest.mock('@react-navigation/native', () => ({ })); jest.mock('../../../core/Engine', () => ({ - getTotalFiatAccountBalance: jest.fn(), + getTotalEvmFiatAccountBalance: jest.fn(), })); const selectShowFiatInTestnets = jest.fn(); @@ -104,6 +104,28 @@ jest.mock('../../../images/banners/banner_image_aggregated.png', () => ({ uri: 'aggregated-image', })); +// Mock useMultichainBalances hook +jest.mock('../../../components/hooks/useMultichainBalances', () => ({ + useSelectedAccountMultichainBalances: jest.fn().mockReturnValue({ + selectedAccountMultichainBalance: { + displayBalance: '$0.00', + displayCurrency: 'USD', + totalFiatBalance: 0, + totalNativeTokenBalance: '0', + nativeTokenUnit: 'ETH', + tokenFiatBalancesCrossChains: [], + shouldShowAggregatedPercentage: false, + isPortfolioVieEnabled: true, + aggregatedBalance: { + ethFiat: 0, + tokenFiat: 0, + tokenFiat1dAgo: 0, + ethFiat1dAgo: 0, + }, + }, + }), +})); + const mockDispatch = jest.fn(); const mockNavigate = jest.fn(); @@ -189,11 +211,13 @@ describe('Carousel', () => { CAROUSEL_SECOND_SLIDE, CAROUSEL_THIRD_SLIDE, CAROUSEL_FOURTH_SLIDE, + CAROUSEL_FIFTH_SLIDE, } = WalletViewSelectorsIDs; const firstSlide = getByTestId(CAROUSEL_FIRST_SLIDE); const secondSlide = getByTestId(CAROUSEL_SECOND_SLIDE); const thirdSlide = getByTestId(CAROUSEL_THIRD_SLIDE); const fourthSlide = getByTestId(CAROUSEL_FOURTH_SLIDE); + const fifthSlide = getByTestId(CAROUSEL_FIFTH_SLIDE); // Test card banner fireEvent.press(firstSlide); @@ -212,6 +236,10 @@ describe('Carousel', () => { // Test aggregated banner fireEvent.press(fourthSlide); expect(mockNavigate).toHaveBeenCalled(); + + // Test multisrp banner + fireEvent.press(fifthSlide); + expect(mockNavigate).toHaveBeenCalled(); }); it('should update selected index when scrolling', () => { diff --git a/app/components/UI/Carousel/index.tsx b/app/components/UI/Carousel/index.tsx index 7c8e230a79fa..8b0c5e426b9f 100644 --- a/app/components/UI/Carousel/index.tsx +++ b/app/components/UI/Carousel/index.tsx @@ -16,7 +16,7 @@ import { dismissBanner } from '../../../reducers/banners'; import Text, { TextVariant, } from '../../../component-library/components/Texts/Text'; -import { useMultichainBalances } from '../../hooks/useMultichainBalances'; +import { useSelectedAccountMultichainBalances } from '../../hooks/useMultichainBalances'; import { useMetrics } from '../../../components/hooks/useMetrics'; import { useTheme } from '../../../util/theme'; import { WalletViewSelectorsIDs } from '../../../../e2e/selectors/wallet/WalletView.selectors'; @@ -28,13 +28,15 @@ export const Carousel: FC<CarouselProps> = ({ style }) => { const [selectedIndex, setSelectedIndex] = useState(0); const [pressedSlideId, setPressedSlideId] = useState<string | null>(null); const { trackEvent, createEventBuilder } = useMetrics(); - const { multichainBalances } = useMultichainBalances(); + const { selectedAccountMultichainBalance } = + useSelectedAccountMultichainBalances(); const { colors } = useTheme(); const dispatch = useDispatch(); const { navigate } = useNavigation(); const { styles } = useStyles(styleSheet, { style }); const dismissedBanners = useSelector(selectDismissedBanners); - const isZeroBalance = multichainBalances.totalFiatBalance === 0; + const isZeroBalance = + selectedAccountMultichainBalance?.totalFiatBalance === 0; const slidesConfig = useMemo( () => diff --git a/app/components/UI/Carousel/types.ts b/app/components/UI/Carousel/types.ts index b5ed6cc93a5a..3ea1a399f6ad 100644 --- a/app/components/UI/Carousel/types.ts +++ b/app/components/UI/Carousel/types.ts @@ -1,6 +1,6 @@ import { ViewStyle } from 'react-native'; -export type SlideId = 'card' | 'fund' | 'cashout' | 'aggregated'; +export type SlideId = 'card' | 'fund' | 'cashout' | 'aggregated' | 'multisrp'; interface NavigationParams { address?: string; diff --git a/app/components/UI/CollectibleContractElement/__snapshots__/index.test.tsx.snap b/app/components/UI/CollectibleContractElement/__snapshots__/index.test.tsx.snap index f3c518948a40..4655daa3e0f9 100644 --- a/app/components/UI/CollectibleContractElement/__snapshots__/index.test.tsx.snap +++ b/app/components/UI/CollectibleContractElement/__snapshots__/index.test.tsx.snap @@ -1,6 +1,6 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`CollectibleContractElement Snapshot renders correctly 1`] = ` +exports[`CollectibleContractElement render matches snapshot 1`] = ` <View style={ { @@ -17,6 +17,7 @@ exports[`CollectibleContractElement Snapshot renders correctly 1`] = ` "flexDirection": "row", } } + testID="collectible-contract-element-0xdef-AssetName" > <View style={ @@ -27,7 +28,7 @@ exports[`CollectibleContractElement Snapshot renders correctly 1`] = ` } > <SvgMock - color="#141618" + color="#121314" height={12} name="ArrowDown" style={ @@ -68,7 +69,7 @@ exports[`CollectibleContractElement Snapshot renders correctly 1`] = ` [ { "alignItems": "center", - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", "borderRadius": 8, "justifyContent": "flex-start", }, @@ -99,8 +100,8 @@ exports[`CollectibleContractElement Snapshot renders correctly 1`] = ` style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -153,8 +154,8 @@ exports[`CollectibleContractElement Snapshot renders correctly 1`] = ` style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -183,8 +184,8 @@ exports[`CollectibleContractElement Snapshot renders correctly 1`] = ` undefined, undefined, { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 18, "fontWeight": "400", }, @@ -243,7 +244,7 @@ exports[`CollectibleContractElement Snapshot renders correctly 1`] = ` [ { "alignItems": "center", - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", "borderRadius": 8, "justifyContent": "flex-start", }, @@ -274,8 +275,8 @@ exports[`CollectibleContractElement Snapshot renders correctly 1`] = ` style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -331,12 +332,12 @@ exports[`CollectibleContractElement Snapshot renders correctly 1`] = ` { "alignSelf": "center", "backgroundColor": "transparent", - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } suppressHighlighting={true} @@ -345,12 +346,12 @@ exports[`CollectibleContractElement Snapshot renders correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, + "color": "#4459ff", + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -405,7 +406,7 @@ exports[`CollectibleContractElement Snapshot renders correctly 1`] = ` [ { "alignItems": "center", - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", "borderRadius": 8, "justifyContent": "flex-start", }, @@ -436,8 +437,8 @@ exports[`CollectibleContractElement Snapshot renders correctly 1`] = ` style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -493,12 +494,12 @@ exports[`CollectibleContractElement Snapshot renders correctly 1`] = ` { "alignSelf": "center", "backgroundColor": "transparent", - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } suppressHighlighting={true} @@ -507,12 +508,12 @@ exports[`CollectibleContractElement Snapshot renders correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, + "color": "#4459ff", + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -563,7 +564,7 @@ exports[`CollectibleContractElement Snapshot renders correctly 1`] = ` [ { "alignItems": "center", - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", "borderRadius": 8, "justifyContent": "flex-start", }, @@ -594,8 +595,8 @@ exports[`CollectibleContractElement Snapshot renders correctly 1`] = ` style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -651,12 +652,12 @@ exports[`CollectibleContractElement Snapshot renders correctly 1`] = ` { "alignSelf": "center", "backgroundColor": "transparent", - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } suppressHighlighting={true} @@ -665,12 +666,12 @@ exports[`CollectibleContractElement Snapshot renders correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, + "color": "#4459ff", + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -731,7 +732,7 @@ exports[`CollectibleContractElement Snapshot renders correctly 1`] = ` [ { "alignItems": "center", - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", "borderRadius": 8, "justifyContent": "flex-start", }, @@ -762,8 +763,8 @@ exports[`CollectibleContractElement Snapshot renders correctly 1`] = ` style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -819,12 +820,12 @@ exports[`CollectibleContractElement Snapshot renders correctly 1`] = ` { "alignSelf": "center", "backgroundColor": "transparent", - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } suppressHighlighting={true} @@ -833,12 +834,12 @@ exports[`CollectibleContractElement Snapshot renders correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, + "color": "#4459ff", + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > diff --git a/app/components/UI/CollectibleContractElement/index.js b/app/components/UI/CollectibleContractElement/index.js index 60266739def0..fb22894b0203 100644 --- a/app/components/UI/CollectibleContractElement/index.js +++ b/app/components/UI/CollectibleContractElement/index.js @@ -10,7 +10,6 @@ import ActionSheet from '@metamask/react-native-actionsheet'; import { strings } from '../../../../locales/i18n'; import Engine from '../../../core/Engine'; import { removeFavoriteCollectible } from '../../../actions/collectibles'; -import { collectibleContractsSelector } from '../../../reducers/collectibles'; import { useTheme } from '../../../util/theme'; import { selectChainId } from '../../../selectors/networkController'; import { selectSelectedInternalAccountFormattedAddress } from '../../../selectors/accountsController'; @@ -93,7 +92,6 @@ function CollectibleContractElement({ contractCollectibles, collectiblesVisible: propsCollectiblesVisible, onPress, - collectibleContracts, chainId, selectedAddress, removeFavoriteCollectible, @@ -114,12 +112,9 @@ function CollectibleContractElement({ const onPressCollectible = useCallback( (collectible) => { - const contractName = collectibleContracts.find( - ({ address }) => address === collectible.address, - )?.name; - onPress(collectible, contractName || collectible.name); + onPress(collectible); }, - [collectibleContracts, onPress], + [onPress], ); const onLongPressCollectible = useCallback((collectible) => { @@ -171,16 +166,9 @@ function CollectibleContractElement({ const renderCollectible = useCallback( (collectible, index) => { if (!collectible) return null; - const name = - collectible.name || - collectibleContracts.find( - ({ address }) => address === collectible.address, - )?.name; - const onPress = () => onPressCollectible({ ...collectible, name }); + const onPress = () => onPressCollectible({ ...collectible }); const onLongPress = () => - !asset.favorites - ? onLongPressCollectible({ ...collectible, name }) - : null; + !asset.favorites ? onLongPressCollectible({ ...collectible }) : null; return ( <View key={collectible.address + collectible.tokenId} @@ -195,7 +183,7 @@ function CollectibleContractElement({ <View style={index === 1 ? styles.collectibleInTheMiddle : {}}> <CollectibleMedia style={styles.collectibleIcon} - collectible={{ ...collectible, name }} + collectible={{ ...collectible }} onPressColectible={onPress} isTokenImage /> @@ -204,23 +192,18 @@ function CollectibleContractElement({ </View> ); }, - [ - asset.favorites, - collectibleContracts, - onPressCollectible, - onLongPressCollectible, - styles, - ], + [asset.favorites, onPressCollectible, onLongPressCollectible, styles], ); useEffect(() => { const temp = splitIntoSubArrays(contractCollectibles, 3); + setCollectiblesGrid(temp); }, [contractCollectibles, setCollectiblesGrid]); - return ( <View style={styles.itemWrapper}> <TouchableOpacity + testID={`collectible-contract-element-${asset.address}-${asset.name}`} onPress={toggleCollectibles} style={styles.titleContainer} > @@ -306,7 +289,6 @@ CollectibleContractElement.propTypes = { * Called when the collectible is pressed */ onPress: PropTypes.func, - collectibleContracts: PropTypes.array, /** * Selected address */ @@ -322,7 +304,6 @@ CollectibleContractElement.propTypes = { }; const mapStateToProps = (state) => ({ - collectibleContracts: collectibleContractsSelector(state), chainId: selectChainId(state), selectedAddress: selectSelectedInternalAccountFormattedAddress(state), }); diff --git a/app/components/UI/CollectibleContractElement/index.test.tsx b/app/components/UI/CollectibleContractElement/index.test.tsx index d3288c9fb79f..0baf811ac396 100644 --- a/app/components/UI/CollectibleContractElement/index.test.tsx +++ b/app/components/UI/CollectibleContractElement/index.test.tsx @@ -85,14 +85,19 @@ jest.mock('@react-navigation/native', () => { }; }); -describe('CollectibleContractElement Snapshot', () => { - it('renders correctly', () => { +describe('CollectibleContractElement', () => { + it('render matches snapshot', () => { // Provide the props that are required by the component. const onPressMock = jest.fn(); const removeFavoriteMock = jest.fn(); const props = { - asset: { favorites: false, name: 'AssetName', logo: 'asset-logo.png' }, + asset: { + favorites: false, + name: 'AssetName', + logo: 'asset-logo.png', + address: '0xdef', + }, contractCollectibles: [ { address: '0xdef', tokenId: '1', name: 'Collectible1' }, { address: '0xdef', tokenId: '2', name: 'Collectible2' }, @@ -115,36 +120,73 @@ describe('CollectibleContractElement Snapshot', () => { expect(toJSON()).toMatchSnapshot(); }); - it('should render collectible', () => { - // Provide the props that are required by the component. - const onPressMock = jest.fn(); - const removeFavoriteMock = jest.fn(); + describe('List element', () => { + it('shows collectibles list when collectiblesVisible is true', () => { + // Provide the props that are required by the component. + const onPressMock = jest.fn(); + const removeFavoriteMock = jest.fn(); - const props = { - asset: { favorites: false, name: 'AssetName', logo: 'asset-logo.png' }, - contractCollectibles: [ - { address: '0xdef', tokenId: '1', name: 'Collectible1' }, - { address: '0xdef', tokenId: '2', name: 'Collectible2' }, - { address: '0xdef', tokenId: '3', name: 'Collectible3' }, - { address: '0xdef', tokenId: '4', name: 'Collectible4' }, - ], - collectiblesVisible: true, - onPress: onPressMock, - removeFavoriteCollectible: removeFavoriteMock, - }; + const props = { + asset: { favorites: false, name: 'AssetName', logo: 'asset-logo.png' }, + contractCollectibles: [ + { address: '0xdef', tokenId: '1', name: 'Collectible1' }, + { address: '0xdef', tokenId: '2', name: 'Collectible2' }, + { address: '0xdef', tokenId: '3', name: 'Collectible3' }, + { address: '0xdef', tokenId: '4', name: 'Collectible4' }, + ], + collectiblesVisible: true, + onPress: onPressMock, + removeFavoriteCollectible: removeFavoriteMock, + }; - const { getAllByTestId } = render( - <Provider store={store}> - <ThemeContext.Provider value={mockTheme}> - <CollectibleContractElement {...props} /> - </ThemeContext.Provider> - </Provider>, - ); + const { getAllByTestId } = render( + <Provider store={store}> + <ThemeContext.Provider value={mockTheme}> + <CollectibleContractElement {...props} /> + </ThemeContext.Provider> + </Provider>, + ); + + expect(getAllByTestId('collectible-Collectible1-1')).toBeTruthy(); + expect(getAllByTestId('collectible-Collectible2-2')).toBeTruthy(); + expect(getAllByTestId('collectible-Collectible3-3')).toBeTruthy(); + expect(getAllByTestId('collectible-Collectible4-4')).toBeTruthy(); - expect(getAllByTestId('collectible-Collectible1-1')).toBeTruthy(); + fireEvent.press(getAllByTestId('collectible-Collectible1-1')[0]); - fireEvent.press(getAllByTestId('collectible-Collectible1-1')[0]); + expect(onPressMock).toHaveBeenCalled(); + }); + + it('hides collectibles list when pressed', async () => { + const onPressMock = jest.fn(); + const removeFavoriteMock = jest.fn(); + + const props = { + asset: { + favorites: false, + name: 'AssetName', + logo: 'asset-logo.png', + address: '0xdef', + }, + contractCollectibles: [ + { address: '0xdef', tokenId: '1', name: 'Collectible11' }, + ], + collectiblesVisible: true, + onPress: onPressMock, + removeFavoriteCollectible: removeFavoriteMock, + }; - expect(onPressMock).toHaveBeenCalled(); + const { getByTestId, queryByTestId } = render( + <Provider store={store}> + <ThemeContext.Provider value={mockTheme}> + <CollectibleContractElement {...props} /> + </ThemeContext.Provider> + </Provider>, + ); + fireEvent.press( + getByTestId('collectible-contract-element-0xdef-AssetName'), + ); + expect(queryByTestId('collectible-Collectible11-1')).toBeNull(); + }); }); }); diff --git a/app/components/UI/CollectibleContracts/index.js b/app/components/UI/CollectibleContracts/index.js index 3bc6e7776c2a..c9cd7e379d27 100644 --- a/app/components/UI/CollectibleContracts/index.js +++ b/app/components/UI/CollectibleContracts/index.js @@ -1,4 +1,4 @@ -import React, { useState, useEffect, useCallback } from 'react'; +import React, { useState, useEffect, useCallback, useMemo } from 'react'; import PropTypes from 'prop-types'; import { TouchableOpacity, @@ -8,21 +8,21 @@ import { FlatList, RefreshControl, ActivityIndicator, + Text, } from 'react-native'; -import { connect } from 'react-redux'; +import { connect, useSelector } from 'react-redux'; import { fontStyles } from '../../../styles/common'; import { strings } from '../../../../locales/i18n'; import Engine from '../../../core/Engine'; import CollectibleContractElement from '../CollectibleContractElement'; import { MetaMetricsEvents } from '../../../core/Analytics'; import { - collectibleContractsSelector, - collectiblesSelector, favoritesCollectiblesSelector, isNftFetchingProgressSelector, + multichainCollectibleContractsSelector, + multichainCollectiblesSelector, } from '../../../reducers/collectibles'; import { removeFavoriteCollectible } from '../../../actions/collectibles'; -import Text from '../../Base/Text'; import AppConstants from '../../../core/AppConstants'; import { toLowerCaseEquals } from '../../../util/general'; import { compareTokenIds } from '../../../util/tokens'; @@ -31,6 +31,8 @@ import { useTheme } from '../../../util/theme'; import { MAINNET } from '../../../constants/network'; import { selectChainId, + selectIsAllNetworks, + selectIsPopularNetwork, selectProviderType, } from '../../../selectors/networkController'; import { @@ -43,6 +45,13 @@ import { WalletViewSelectorsIDs } from '../../../../e2e/selectors/wallet/WalletV import { useMetrics } from '../../../components/hooks/useMetrics'; import { RefreshTestId, SpinnerTestId } from './constants'; import { debounce } from 'lodash'; +import ButtonBase from '../../../component-library/components/Buttons/Button/foundation/ButtonBase'; +import { IconName } from '../../../component-library/components/Icons/Icon'; +import { selectIsEvmNetworkSelected } from '../../../selectors/multichainNetworkController'; +import { selectNetworkName } from '../../../selectors/networkInfos'; +import { isTestNet } from '../../../util/networks'; +import { createTokenBottomSheetFilterNavDetails } from '../Tokens/TokensBottomSheet'; +import { useNftDetectionChainIds } from '../../hooks/useNftDetectionChainIds'; const createStyles = (colors) => StyleSheet.create({ @@ -51,6 +60,50 @@ const createStyles = (colors) => flex: 1, marginTop: 16, }, + BarWrapper: { + backgroundColor: colors.background.default, + flex: 1, + }, + actionBarWrapper: { + flexDirection: 'row', + justifyContent: 'space-between', + paddingLeft: 8, + paddingRight: 8, + paddingBottom: 16, + paddingTop: 8, + }, + controlButtonOuterWrapper: { + flexDirection: 'row', + width: '100%', + justifyContent: 'space-between', + }, + text: { + fontSize: 20, + color: colors.text.default, + ...fontStyles.normal, + }, + controlButtonText: { + color: colors.text.default, + }, + controlButtonDisabled: { + backgroundColor: colors.background.default, + borderColor: colors.border.default, + borderStyle: 'solid', + borderWidth: 1, + marginLeft: 5, + marginRight: 5, + maxWidth: '60%', + opacity: 0.5, + }, + controlButton: { + backgroundColor: colors.background.default, + borderColor: colors.border.default, + borderStyle: 'solid', + borderWidth: 1, + marginLeft: 5, + marginRight: 5, + maxWidth: '60%', + }, emptyView: { justifyContent: 'center', alignItems: 'center', @@ -112,15 +165,42 @@ const CollectibleContracts = ({ isIpfsGatewayEnabled, displayNftMedia, }) => { - const collectibles = allCollectibles.filter( + const isAllNetworks = useSelector(selectIsAllNetworks); + + const filteredCollectibleContracts = useMemo( + () => + isAllNetworks + ? Object.values(collectibleContracts).flat() + : collectibleContracts[chainId] || [], + [collectibleContracts, chainId, isAllNetworks], + ); + + const filteredCollectibles = useMemo( + () => + isAllNetworks + ? Object.values(allCollectibles).flat() + : allCollectibles[chainId] || [], + [allCollectibles, chainId, isAllNetworks], + ); + + const collectibles = filteredCollectibles.filter( (singleCollectible) => singleCollectible.isCurrentlyOwned === true, ); + const { colors } = useTheme(); const { trackEvent, createEventBuilder } = useMetrics(); const styles = createStyles(colors); const [isAddNFTEnabled, setIsAddNFTEnabled] = useState(true); const [refreshing, setRefreshing] = useState(false); + const isPopularNetwork = useSelector(selectIsPopularNetwork); + const isEvmSelected = useSelector(selectIsEvmNetworkSelected); + const networkName = useSelector(selectNetworkName); + const showFilterControls = () => { + navigation.navigate(...createTokenBottomSheetFilterNavDetails({})); + }; + const chainIdsToDetectNftsFor = useNftDetectionChainIds(); + const isCollectionDetectionBannerVisible = networkType === MAINNET && !useNftDetection; @@ -295,13 +375,13 @@ const CollectibleContracts = ({ setRefreshing(true); const { NftDetectionController, NftController } = Engine.context; const actions = [ - NftDetectionController.detectNfts(), + NftDetectionController.detectNfts(chainIdsToDetectNftsFor), NftController.checkAndUpdateAllNftsOwnershipStatus(), ]; await Promise.allSettled(actions); setRefreshing(false); }); - }, [setRefreshing]); + }, [setRefreshing, chainIdsToDetectNftsFor]); const goToLearnMore = useCallback( () => @@ -344,7 +424,7 @@ const CollectibleContracts = ({ {renderFavoriteCollectibles()} </> } - data={collectibleContracts} + data={filteredCollectibleContracts} renderItem={({ item, index }) => renderCollectibleContract(item, index)} keyExtractor={(_, index) => index.toString()} testID={RefreshTestId} @@ -362,7 +442,7 @@ const CollectibleContracts = ({ ), [ renderFavoriteCollectibles, - collectibleContracts, + filteredCollectibleContracts, colors.primary.default, colors.icon.default, refreshing, @@ -377,9 +457,34 @@ const CollectibleContracts = ({ return ( <View - style={styles.wrapper} + style={styles.BarWrapper} testID={WalletViewSelectorsIDs.NFT_TAB_CONTAINER} > + <View style={styles.actionBarWrapper}> + <View style={styles.controlButtonOuterWrapper}> + <ButtonBase + testID={WalletViewSelectorsIDs.TOKEN_NETWORK_FILTER} + label={ + <Text style={styles.controlButtonText} numberOfLines={1}> + {isAllNetworks && isPopularNetwork && isEvmSelected + ? `${strings('app_settings.popular')} ${strings( + 'app_settings.networks', + )}` + : networkName ?? strings('wallet.current_network')} + </Text> + } + isDisabled={isTestNet(chainId) || !isPopularNetwork} + onPress={isEvmSelected ? showFilterControls : () => null} + endIconName={isEvmSelected ? IconName.ArrowDown : undefined} + style={ + isTestNet(chainId) || !isPopularNetwork + ? styles.controlButtonDisabled + : styles.controlButton + } + disabled={isTestNet(chainId) || !isPopularNetwork} + /> + </View> + </View> {renderList()} </View> ); @@ -443,8 +548,8 @@ const mapStateToProps = (state) => ({ chainId: selectChainId(state), selectedAddress: selectSelectedInternalAccountFormattedAddress(state), useNftDetection: selectUseNftDetection(state), - collectibleContracts: collectibleContractsSelector(state), - collectibles: collectiblesSelector(state), + collectibleContracts: multichainCollectibleContractsSelector(state), + collectibles: multichainCollectiblesSelector(state), isNftFetchingProgress: isNftFetchingProgressSelector(state), favoriteCollectibles: favoritesCollectiblesSelector(state), isIpfsGatewayEnabled: selectIsIpfsGatewayEnabled(state), diff --git a/app/components/UI/CollectibleContracts/index.test.tsx b/app/components/UI/CollectibleContracts/index.test.tsx index 0fb5a9da5c41..256278d38098 100644 --- a/app/components/UI/CollectibleContracts/index.test.tsx +++ b/app/components/UI/CollectibleContracts/index.test.tsx @@ -11,6 +11,8 @@ import { act } from '@testing-library/react-hooks'; // eslint-disable-next-line import/no-namespace import * as allSelectors from '../../../../app/reducers/collectibles/index.js'; +// eslint-disable-next-line import/no-namespace +import * as networkSelectors from '../../../selectors/networkController'; import { cleanup, waitFor } from '@testing-library/react-native'; import Engine from '../../../core/Engine'; @@ -67,6 +69,9 @@ const MOCK_ACCOUNTS_CONTROLLER_STATE = createMockAccountsControllerState([ ]); describe('CollectibleContracts', () => { + beforeEach(() => { + jest.spyOn(networkSelectors, 'selectIsAllNetworks').mockReturnValue(false); + }); afterEach(cleanup); it('should render correctly', () => { const wrapper = shallow( @@ -98,6 +103,7 @@ describe('CollectibleContracts', () => { standard: 'ERC721', tokenId: '113', tokenURI: 'https://api.pudgypenguins.io/lil/113', + chainId: 1, }, ]; @@ -114,6 +120,7 @@ describe('CollectibleContracts', () => { standard: 'ERC721', tokenId: '113', tokenURI: 'https://api.pudgypenguins.io/lil/113', + chainId: 1, }, ]; const mockState: DeepPartial<RootState> = { @@ -155,12 +162,13 @@ describe('CollectibleContracts', () => { }; const spyOnCollectibles = jest - .spyOn(allSelectors, 'collectiblesSelector') - .mockReturnValueOnce(nftItemData) - .mockReturnValueOnce(nftItemDataUpdated); + .spyOn(allSelectors, 'multichainCollectiblesSelector') + .mockReturnValueOnce({ '0x1': nftItemData }) + .mockReturnValueOnce({ '0x1': nftItemDataUpdated }); const spyOnContracts = jest - .spyOn(allSelectors, 'collectibleContractsSelector') - .mockReturnValue(collectibleData); + .spyOn(allSelectors, 'multichainCollectibleContractsSelector') + .mockReturnValueOnce({ '0x1': collectibleData }) + .mockReturnValueOnce({ '0x1': collectibleData }); const spyOnUpdateNftMetadata = jest .spyOn(Engine.context.NftController, 'updateNftMetadata') .mockImplementation(async () => undefined); @@ -267,12 +275,12 @@ describe('CollectibleContracts', () => { }; const spyOnCollectibles = jest - .spyOn(allSelectors, 'collectiblesSelector') - .mockReturnValueOnce(nftItemData) - .mockReturnValueOnce(nftItemDataUpdated); + .spyOn(allSelectors, 'multichainCollectiblesSelector') + .mockReturnValueOnce({ '0x1': nftItemData }) + .mockReturnValueOnce({ '0x1': nftItemDataUpdated }); const spyOnContracts = jest - .spyOn(allSelectors, 'collectibleContractsSelector') - .mockReturnValue(collectibleData); + .spyOn(allSelectors, 'multichainCollectibleContractsSelector') + .mockReturnValue({ '0x1': collectibleData }); const spyOnUpdateNftMetadata = jest .spyOn(Engine.context.NftController, 'updateNftMetadata') .mockImplementation(async () => undefined); @@ -378,12 +386,12 @@ describe('CollectibleContracts', () => { }; jest - .spyOn(allSelectors, 'collectiblesSelector') - .mockReturnValueOnce(nftItemData) - .mockReturnValueOnce(nftItemDataUpdated); + .spyOn(allSelectors, 'multichainCollectiblesSelector') + .mockReturnValueOnce({ '0x1': nftItemData }) + .mockReturnValueOnce({ '0x1': nftItemDataUpdated }); jest - .spyOn(allSelectors, 'collectibleContractsSelector') - .mockReturnValue(collectibleData); + .spyOn(allSelectors, 'multichainCollectibleContractsSelector') + .mockReturnValue({ '0x1': collectibleData }); const spyOnUpdateNftMetadata = jest .spyOn(Engine.context.NftController, 'updateNftMetadata') .mockImplementation(async () => undefined); diff --git a/app/components/UI/CollectibleDetectionModal/index.test.tsx b/app/components/UI/CollectibleDetectionModal/index.test.tsx new file mode 100644 index 000000000000..db34426e0565 --- /dev/null +++ b/app/components/UI/CollectibleDetectionModal/index.test.tsx @@ -0,0 +1,40 @@ +import CollectibleDetectionModal from './'; +import { backgroundState } from '../../../util/test/initial-root-state'; +import React from 'react'; +import renderWithProvider from '../../../util/test/renderWithProvider'; +import { fireEvent } from '@testing-library/react-native'; +import Engine from '../../../core/Engine'; + +jest.mock('../../../core/Engine', () => ({ + context: { + NftController: { + addNft: jest.fn(), + updateNftMetadata: jest.fn(), + checkAndUpdateAllNftsOwnershipStatus: jest.fn(), + }, + NftDetectionController: { + detectNfts: jest.fn(), + }, + PreferencesController: { + setUseNftDetection: jest.fn(), + setDisplayNftMedia: jest.fn(), + }, + }, +})); + +const initialState = { + engine: { + backgroundState, + }, +}; + +describe('CollectibleDetectionModal', () => { + it('calls NFT detection controller', () => { + const { getByTestId } = renderWithProvider(<CollectibleDetectionModal />, { + state: initialState, + }); + + fireEvent.press(getByTestId(`collectible-detection-modal-button`)); + expect(Engine.context.NftDetectionController.detectNfts).toHaveBeenCalled(); + }); +}); diff --git a/app/components/UI/CollectibleDetectionModal/index.tsx b/app/components/UI/CollectibleDetectionModal/index.tsx index d25c0724405d..dda6d9f915f5 100644 --- a/app/components/UI/CollectibleDetectionModal/index.tsx +++ b/app/components/UI/CollectibleDetectionModal/index.tsx @@ -21,6 +21,7 @@ import { } from '../../../reducers/collectibles'; import { UserProfileProperty } from '../../../util/metrics/UserSettingsAnalyticsMetaData/UserProfileAnalyticsMetaData.types'; import { useMetrics } from '../../hooks/useMetrics'; +import { useNftDetectionChainIds } from '../../hooks/useNftDetectionChainIds'; const styles = StyleSheet.create({ alertBar: { @@ -33,6 +34,7 @@ const CollectibleDetectionModal = () => { const { colors } = useTheme(); const { toastRef } = useContext(ToastContext); const { addTraitsToUser } = useMetrics(); + const chainIdsToDetectNftsFor = useNftDetectionChainIds(); const showToastAndEnableNFtDetection = useCallback(async () => { // show toast @@ -56,11 +58,11 @@ const CollectibleDetectionModal = () => { // Call detect nfts showNftFetchingLoadingIndicator(); try { - await NftDetectionController.detectNfts(); + await NftDetectionController.detectNfts(chainIdsToDetectNftsFor); } finally { hideNftFetchingLoadingIndicator(); } - }, [colors.primary.inverse, toastRef, addTraitsToUser]); + }, [colors.primary.inverse, toastRef, addTraitsToUser, chainIdsToDetectNftsFor]); return ( <View style={styles.alertBar}> @@ -69,6 +71,7 @@ const CollectibleDetectionModal = () => { title={strings('wallet.nfts_autodetect_title')} description={strings('wallet.nfts_autodetection_desc')} actionButtonProps={{ + testID: 'collectible-detection-modal-button', variant: ButtonVariants.Link, label: strings('wallet.nfts_autodetect_cta'), onPress: showToastAndEnableNFtDetection, diff --git a/app/components/UI/CollectibleMedia/CollectibleMedia.tsx b/app/components/UI/CollectibleMedia/CollectibleMedia.tsx index 996713bd3bab..f5b524458b9f 100644 --- a/app/components/UI/CollectibleMedia/CollectibleMedia.tsx +++ b/app/components/UI/CollectibleMedia/CollectibleMedia.tsx @@ -192,6 +192,7 @@ const CollectibleMedia: React.FC<CollectibleMediaProps> = ({ cover && styles.cover, style, ]} + chainId={collectible.chainId} onError={fallback} testID="nft-image" isTokenImage={isTokenImage} @@ -232,6 +233,7 @@ const CollectibleMedia: React.FC<CollectibleMediaProps> = ({ fallback, isTokenImage, isFullRatio, + collectible.chainId, ]); return <View style={styles.container}>{renderMedia()}</View>; diff --git a/app/components/UI/CollectibleModal/__snapshots__/CollectibleModal.test.tsx.snap b/app/components/UI/CollectibleModal/__snapshots__/CollectibleModal.test.tsx.snap index 061f1c7d4192..cec57234c01b 100644 --- a/app/components/UI/CollectibleModal/__snapshots__/CollectibleModal.test.tsx.snap +++ b/app/components/UI/CollectibleModal/__snapshots__/CollectibleModal.test.tsx.snap @@ -16,7 +16,7 @@ exports[`CollectibleModal should render correctly 1`] = ` style={ [ { - "backgroundColor": "#00000099", + "backgroundColor": "#00000066", "bottom": 0, "left": 0, "position": "absolute", @@ -112,7 +112,7 @@ exports[`CollectibleModal should render correctly 1`] = ` [ { "alignItems": "center", - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", "borderRadius": 8, "justifyContent": "flex-start", }, @@ -144,8 +144,8 @@ exports[`CollectibleModal should render correctly 1`] = ` style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -215,12 +215,12 @@ exports[`CollectibleModal should render correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, + "color": "#4459ff", + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -276,7 +276,7 @@ exports[`CollectibleModal should render correctly 1`] = ` <View style={ { - "backgroundColor": "#848c96", + "backgroundColor": "#b7bbc8", "borderRadius": 4, "height": 5, "width": 48, @@ -300,8 +300,8 @@ exports[`CollectibleModal should render correctly 1`] = ` style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -309,7 +309,7 @@ exports[`CollectibleModal should render correctly 1`] = ` undefined, undefined, { - "fontFamily": "EuclidCircularB-Bold", + "fontFamily": "CentraNo1-Bold", "fontWeight": "600", }, undefined, @@ -320,7 +320,7 @@ exports[`CollectibleModal should render correctly 1`] = ` undefined, undefined, { - "color": "#141618", + "color": "#121314", }, undefined, undefined, @@ -349,8 +349,8 @@ exports[`CollectibleModal should render correctly 1`] = ` style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -366,7 +366,7 @@ exports[`CollectibleModal should render correctly 1`] = ` undefined, undefined, { - "color": "#141618", + "color": "#121314", }, undefined, undefined, @@ -420,7 +420,7 @@ exports[`CollectibleModal should render correctly 1`] = ` }, { "backgroundColor": "#ffffff", - "borderColor": "#0376c9", + "borderColor": "#4459ff", "borderWidth": 1, "padding": 8, }, @@ -444,8 +444,8 @@ exports[`CollectibleModal should render correctly 1`] = ` style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -470,7 +470,7 @@ exports[`CollectibleModal should render correctly 1`] = ` undefined, undefined, { - "color": "#0376c9", + "color": "#4459ff", }, undefined, undefined, @@ -526,8 +526,8 @@ exports[`CollectibleModal should render correctly 1`] = ` style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -535,19 +535,19 @@ exports[`CollectibleModal should render correctly 1`] = ` undefined, undefined, { - "fontFamily": "EuclidCircularB-Bold", + "fontFamily": "CentraNo1-Bold", "fontWeight": "600", }, undefined, { - "color": "#141618", + "color": "#121314", }, undefined, undefined, undefined, undefined, { - "color": "#141618", + "color": "#121314", }, undefined, undefined, @@ -581,8 +581,8 @@ exports[`CollectibleModal should render correctly 1`] = ` style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -611,7 +611,7 @@ exports[`CollectibleModal should render correctly 1`] = ` undefined, undefined, { - "color": "#0376c9", + "color": "#4459ff", }, undefined, undefined, diff --git a/app/components/UI/Collectibles/__snapshots__/index.test.tsx.snap b/app/components/UI/Collectibles/__snapshots__/index.test.tsx.snap index 374f704ba918..ffea071f15a0 100644 --- a/app/components/UI/Collectibles/__snapshots__/index.test.tsx.snap +++ b/app/components/UI/Collectibles/__snapshots__/index.test.tsx.snap @@ -15,11 +15,11 @@ exports[`Collectibles should render correctly 1`] = ` <RefreshControlMock colors={ [ - "#0376c9", + "#4459ff", ] } refreshing={false} - tintColor="#141618" + tintColor="#121314" /> } > @@ -38,8 +38,8 @@ exports[`Collectibles should render correctly 1`] = ` <Text style={ { - "color": "#9fa6ae", - "fontFamily": "EuclidCircularB-Regular", + "color": "#9ca1af", + "fontFamily": "CentraNo1-Book", "fontSize": 20, "fontWeight": "400", } diff --git a/app/components/UI/ConfirmAddAsset/ConfirmAddAsset.tsx b/app/components/UI/ConfirmAddAsset/ConfirmAddAsset.tsx index a3c74930a04e..0016e20f6bff 100644 --- a/app/components/UI/ConfirmAddAsset/ConfirmAddAsset.tsx +++ b/app/components/UI/ConfirmAddAsset/ConfirmAddAsset.tsx @@ -179,7 +179,7 @@ const ConfirmAddAsset = () => { {strings('wallet.import_token')} </Text> <ScrollView style={styles.root}> - {selectedAsset.map( + {selectedAsset?.map( ( asset: { symbol: string; diff --git a/app/components/UI/ConfirmAddAsset/__snapshots__/ConfirmAddAsset.test.tsx.snap b/app/components/UI/ConfirmAddAsset/__snapshots__/ConfirmAddAsset.test.tsx.snap index da72393e1726..be72562b11e8 100644 --- a/app/components/UI/ConfirmAddAsset/__snapshots__/ConfirmAddAsset.test.tsx.snap +++ b/app/components/UI/ConfirmAddAsset/__snapshots__/ConfirmAddAsset.test.tsx.snap @@ -13,12 +13,12 @@ exports[`ConfirmAddAsset render matches previous snapshot 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, "textAlign": "center", } } @@ -65,7 +65,7 @@ exports[`ConfirmAddAsset render matches previous snapshot 1`] = ` <View placeholderStyle={ { - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", } } useNativeDriver={true} @@ -77,7 +77,7 @@ exports[`ConfirmAddAsset render matches previous snapshot 1`] = ` onLoadEnd={[Function]} placeholderStyle={ { - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", } } source={ @@ -126,7 +126,7 @@ exports[`ConfirmAddAsset render matches previous snapshot 1`] = ` "backgroundColor": "#eee", }, { - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", }, ] } @@ -174,14 +174,14 @@ exports[`ConfirmAddAsset render matches previous snapshot 1`] = ` style={ { "alignItems": "center", - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", "borderColor": "#ffffff", "borderRadius": 16, "borderWidth": 2, "height": 32, "justifyContent": "center", "overflow": "hidden", - "shadowColor": "#0000001A", + "shadowColor": "#0000001a", "shadowOffset": { "height": 2, "width": 0, @@ -201,8 +201,8 @@ exports[`ConfirmAddAsset render matches previous snapshot 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, @@ -222,9 +222,9 @@ exports[`ConfirmAddAsset render matches previous snapshot 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 16, + "color": "#121314", + "fontFamily": "CentraNo1-Medium", + "fontSize": 18, "fontWeight": "500", "letterSpacing": 0, "lineHeight": 24, @@ -237,13 +237,13 @@ exports[`ConfirmAddAsset render matches previous snapshot 1`] = ` accessibilityRole="text" style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "justifyContent": "flex-end", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, "textTransform": "uppercase", } } @@ -263,9 +263,9 @@ exports[`ConfirmAddAsset render matches previous snapshot 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 16, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 18, "fontWeight": "400", "justifyContent": "flex-end", "letterSpacing": 0, @@ -311,7 +311,7 @@ exports[`ConfirmAddAsset render matches previous snapshot 1`] = ` "alignItems": "center", "alignSelf": "flex-start", "backgroundColor": "transparent", - "borderColor": "#0376c9", + "borderColor": "#4459ff", "borderRadius": 24, "borderWidth": 1, "flex": 1, @@ -327,12 +327,12 @@ exports[`ConfirmAddAsset render matches previous snapshot 1`] = ` accessibilityRole="text" style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, + "color": "#4459ff", + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -350,7 +350,7 @@ exports[`ConfirmAddAsset render matches previous snapshot 1`] = ` { "alignItems": "center", "alignSelf": "flex-start", - "backgroundColor": "#0376c9", + "backgroundColor": "#4459ff", "borderRadius": 24, "flex": 1, "flexDirection": "row", @@ -368,11 +368,11 @@ exports[`ConfirmAddAsset render matches previous snapshot 1`] = ` style={ { "color": "#ffffff", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > diff --git a/app/components/UI/CustomAlert/__snapshots__/index.test.tsx.snap b/app/components/UI/CustomAlert/__snapshots__/index.test.tsx.snap index 888e00e9b62b..08b771e0fa0d 100644 --- a/app/components/UI/CustomAlert/__snapshots__/index.test.tsx.snap +++ b/app/components/UI/CustomAlert/__snapshots__/index.test.tsx.snap @@ -50,7 +50,7 @@ exports[`CustomAlert should render correctly 1`] = ` onStartShouldSetResponder={[Function]} style={ { - "backgroundColor": "#00000099", + "backgroundColor": "#00000066", "bottom": 0, "height": 1334, "left": 0, @@ -132,7 +132,7 @@ exports[`CustomAlert should render correctly 1`] = ` <Text style={ { - "fontFamily": "EuclidCircularB-Bold", + "fontFamily": "CentraNo1-Bold", "fontSize": 16, "fontWeight": "600", "marginBottom": 15, @@ -162,7 +162,7 @@ exports[`CustomAlert should render correctly 1`] = ` "padding": 15, }, { - "backgroundColor": "#0376c9", + "backgroundColor": "#4459ff", "minHeight": 50, }, undefined, diff --git a/app/components/UI/DeleteWalletModal/__snapshots__/index.test.tsx.snap b/app/components/UI/DeleteWalletModal/__snapshots__/index.test.tsx.snap index 5a618b442576..dfe181c2dfa2 100644 --- a/app/components/UI/DeleteWalletModal/__snapshots__/index.test.tsx.snap +++ b/app/components/UI/DeleteWalletModal/__snapshots__/index.test.tsx.snap @@ -16,7 +16,7 @@ exports[`DeleteWalletModal should render correctly 1`] = ` style={ [ { - "backgroundColor": "#00000099", + "backgroundColor": "#00000066", "bottom": 0, "left": 0, "position": "absolute", @@ -119,7 +119,7 @@ exports[`DeleteWalletModal should render correctly 1`] = ` onStartShouldSetResponder={[Function]} style={ { - "backgroundColor": "#00000099", + "backgroundColor": "#00000066", "bottom": 0, "height": 1334, "left": 0, @@ -271,12 +271,12 @@ exports[`DeleteWalletModal should render correctly 1`] = ` style={ [ { - "color": "#d73847", + "color": "#ca3542", "fontSize": 46, }, { "alignSelf": "center", - "color": "#d73847", + "color": "#ca3542", "marginVertical": 10, }, { @@ -294,8 +294,8 @@ exports[`DeleteWalletModal should render correctly 1`] = ` style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", + "color": "#121314", + "fontFamily": "CentraNo1-Bold", "fontSize": 20, "fontWeight": "600", "lineHeight": 26, @@ -303,7 +303,7 @@ exports[`DeleteWalletModal should render correctly 1`] = ` "textAlign": "center", }, { - "color": "#d73847", + "color": "#ca3542", "marginHorizontal": 24, }, ] @@ -314,8 +314,8 @@ exports[`DeleteWalletModal should render correctly 1`] = ` <Text style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 14, "fontWeight": "400", "lineHeight": 22, @@ -330,7 +330,7 @@ exports[`DeleteWalletModal should render correctly 1`] = ` <Text style={ { - "fontFamily": "EuclidCircularB-Bold", + "fontFamily": "CentraNo1-Bold", "fontWeight": "600", } } @@ -345,8 +345,8 @@ exports[`DeleteWalletModal should render correctly 1`] = ` style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 14, "fontWeight": "400", "lineHeight": 22, @@ -362,7 +362,7 @@ exports[`DeleteWalletModal should render correctly 1`] = ` <Text style={ { - "fontFamily": "EuclidCircularB-Bold", + "fontFamily": "CentraNo1-Bold", "fontWeight": "600", } } @@ -402,7 +402,7 @@ exports[`DeleteWalletModal should render correctly 1`] = ` "padding": 15, }, { - "backgroundColor": "#d73847", + "backgroundColor": "#ca3542", }, [ { @@ -428,7 +428,7 @@ exports[`DeleteWalletModal should render correctly 1`] = ` null, [ { - "fontFamily": "EuclidCircularB-Bold", + "fontFamily": "CentraNo1-Bold", "fontSize": 14, "fontWeight": "600", "textAlign": "center", @@ -461,7 +461,7 @@ exports[`DeleteWalletModal should render correctly 1`] = ` }, { "backgroundColor": "#ffffff", - "borderColor": "#6a737d", + "borderColor": "#686e7d", "borderWidth": 1, }, [ @@ -488,13 +488,13 @@ exports[`DeleteWalletModal should render correctly 1`] = ` null, [ { - "fontFamily": "EuclidCircularB-Bold", + "fontFamily": "CentraNo1-Bold", "fontSize": 14, "fontWeight": "600", "textAlign": "center", }, { - "color": "#6a737d", + "color": "#686e7d", }, undefined, ], diff --git a/app/components/UI/DeleteWalletModal/index.test.tsx b/app/components/UI/DeleteWalletModal/index.test.tsx index 145e4da6fd59..58b69189ff10 100644 --- a/app/components/UI/DeleteWalletModal/index.test.tsx +++ b/app/components/UI/DeleteWalletModal/index.test.tsx @@ -4,6 +4,7 @@ import renderWithProvider from '../../../util/test/renderWithProvider'; import { backgroundState } from '../../../util/test/initial-root-state'; import { DeleteWalletModalSelectorsIDs } from '../../../../e2e/selectors/Settings/SecurityAndPrivacy/DeleteWalletModal.selectors'; import { fireEvent, waitFor } from '@testing-library/react-native'; +import { SET_COMPLETED_ONBOARDING } from '../../../actions/onboarding'; const mockInitialState = { engine: { backgroundState }, @@ -12,9 +13,11 @@ const mockInitialState = { }, }; +const mockUseDispatch = jest.fn(); + jest.mock('react-redux', () => ({ ...jest.requireActual('react-redux'), - useDispatch: () => jest.fn(), + useDispatch: () => mockUseDispatch, useSelector: jest.fn(), })); const mockNavigate = jest.fn(); @@ -74,4 +77,24 @@ describe('DeleteWalletModal', () => { expect(mockSignOut).toHaveBeenCalled(); }); }); + + it('sets completedOnboarding to false when deleting the wallet', async () => { + const { getByTestId } = renderWithProvider(<DeleteWalletModal />, { + state: mockInitialState, + }); + + fireEvent.press(getByTestId(DeleteWalletModalSelectorsIDs.CONTINUE_BUTTON)); + fireEvent.press( + getByTestId(DeleteWalletModalSelectorsIDs.DELETE_PERMANENTLY_BUTTON), + ); + + waitFor(() => { + expect(mockUseDispatch).toHaveBeenCalledWith( + expect.objectContaining({ + type: SET_COMPLETED_ONBOARDING, + completedOnboarding: false, + }), + ); + }); + }); }); diff --git a/app/components/UI/DeleteWalletModal/index.tsx b/app/components/UI/DeleteWalletModal/index.tsx index 77b6b144ecf8..fe4539b70403 100644 --- a/app/components/UI/DeleteWalletModal/index.tsx +++ b/app/components/UI/DeleteWalletModal/index.tsx @@ -30,6 +30,7 @@ import { clearHistory } from '../../../actions/browser'; import CookieManager from '@react-native-cookies/cookies'; import { RootState } from '../../../reducers'; import { useSignOut } from '../../../util/identity/hooks/useAuthentication'; +import { setCompletedOnboarding } from '../../../actions/onboarding'; const DELETE_KEYWORD = 'delete'; @@ -100,6 +101,7 @@ const DeleteWalletModal = () => { clearHistory(isEnabled(), isDataCollectionForMarketingEnabled), ); signOut(); + await dispatch(setCompletedOnboarding(false)); await CookieManager.clearAll(true); triggerClose(); await resetWalletState(); diff --git a/app/components/UI/DeprecatedNetworkModal/DeprecatedNetworkModal.styles.ts b/app/components/UI/DeprecatedNetworkModal/DeprecatedNetworkModal.styles.ts index 7a6f2cb13050..b60fb9d3c86e 100644 --- a/app/components/UI/DeprecatedNetworkModal/DeprecatedNetworkModal.styles.ts +++ b/app/components/UI/DeprecatedNetworkModal/DeprecatedNetworkModal.styles.ts @@ -1,6 +1,10 @@ import Device from '../../../util/device'; import { StyleSheet, TextStyle } from 'react-native'; import { Theme } from '../../../util/theme/models'; +import { + getFontFamily, + TextVariant, +} from '../../../component-library/components/Texts/Text'; const styleSheet = (params: { theme: Theme }) => { const { theme } = params; @@ -32,7 +36,8 @@ const styleSheet = (params: { theme: Theme }) => { marginBottom: Device.isAndroid() ? 21 : 0, }, buttonLabel: { - ...typography.lBodySMMedium, + ...typography.sBodySMMedium, + fontFamily: getFontFamily(TextVariant.BodySMMedium), } as TextStyle, }); }; diff --git a/app/components/UI/DrawerView/__snapshots__/index.test.tsx.snap b/app/components/UI/DrawerView/__snapshots__/index.test.tsx.snap index 68bdcd7423a4..a2979f71decd 100644 --- a/app/components/UI/DrawerView/__snapshots__/index.test.tsx.snap +++ b/app/components/UI/DrawerView/__snapshots__/index.test.tsx.snap @@ -20,7 +20,7 @@ exports[`DrawerView - Extended Coverage renders correctly (snapshot) 1`] = ` <View style={ { - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", "flexDirection": "column", "height": 110, "paddingBottom": 0, @@ -57,7 +57,7 @@ exports[`DrawerView - Extended Coverage renders correctly (snapshot) 1`] = ` { "height": 18, "marginTop": 4, - "tintColor": "#141618", + "tintColor": "#121314", "width": 90, } } @@ -67,7 +67,7 @@ exports[`DrawerView - Extended Coverage renders correctly (snapshot) 1`] = ` <View style={ { - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", "flex": 1, } } @@ -75,7 +75,7 @@ exports[`DrawerView - Extended Coverage renders correctly (snapshot) 1`] = ` <View style={ { - "borderBottomColor": "#BBC0C566", + "borderBottomColor": "#b7bbc866", "borderBottomWidth": 1, "padding": 17, } @@ -95,7 +95,7 @@ exports[`DrawerView - Extended Coverage renders correctly (snapshot) 1`] = ` <View style={ { - "borderColor": "#0376c9", + "borderColor": "#4459ff", "borderRadius": 96, "borderWidth": 2, "padding": 2, @@ -105,7 +105,7 @@ exports[`DrawerView - Extended Coverage renders correctly (snapshot) 1`] = ` <View placeholderStyle={ { - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", } } useNativeDriver={true} @@ -153,7 +153,7 @@ exports[`DrawerView - Extended Coverage renders correctly (snapshot) 1`] = ` "backgroundColor": "#eee", }, { - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", }, ] } @@ -178,8 +178,8 @@ exports[`DrawerView - Extended Coverage renders correctly (snapshot) 1`] = ` numberOfLines={1} style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 20, "fontWeight": "400", "lineHeight": 24, @@ -196,7 +196,7 @@ exports[`DrawerView - Extended Coverage renders correctly (snapshot) 1`] = ` "fontSize": 24, }, { - "color": "#6a737d", + "color": "#686e7d", "fontSize": 18, "marginLeft": 7, "marginTop": 3, @@ -217,8 +217,8 @@ exports[`DrawerView - Extended Coverage renders correctly (snapshot) 1`] = ` <Text style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 14, "fontWeight": "400", "lineHeight": 17, @@ -232,8 +232,8 @@ exports[`DrawerView - Extended Coverage renders correctly (snapshot) 1`] = ` numberOfLines={1} style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", "fontSize": 12, "fontWeight": "400", "lineHeight": 17, @@ -249,7 +249,7 @@ exports[`DrawerView - Extended Coverage renders correctly (snapshot) 1`] = ` style={ { "alignItems": "center", - "borderBottomColor": "#BBC0C566", + "borderBottomColor": "#b7bbc866", "borderBottomWidth": 1, "flexDirection": "row", "justifyContent": "center", @@ -272,7 +272,7 @@ exports[`DrawerView - Extended Coverage renders correctly (snapshot) 1`] = ` }, { "backgroundColor": "#ffffff", - "borderColor": "#0376c9", + "borderColor": "#4459ff", "borderWidth": 1, "padding": 8, }, @@ -310,7 +310,7 @@ exports[`DrawerView - Extended Coverage renders correctly (snapshot) 1`] = ` style={ [ { - "color": "#0376c9", + "color": "#4459ff", "fontSize": 22, }, { @@ -330,8 +330,8 @@ exports[`DrawerView - Extended Coverage renders correctly (snapshot) 1`] = ` <Text style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Regular", + "color": "#4459ff", + "fontFamily": "CentraNo1-Book", "fontSize": 27.857142857142858, "fontWeight": "400", "paddingLeft": 8.571428571428571, @@ -357,7 +357,7 @@ exports[`DrawerView - Extended Coverage renders correctly (snapshot) 1`] = ` }, { "backgroundColor": "#ffffff", - "borderColor": "#0376c9", + "borderColor": "#4459ff", "borderWidth": 1, "padding": 8, }, @@ -395,7 +395,7 @@ exports[`DrawerView - Extended Coverage renders correctly (snapshot) 1`] = ` style={ [ { - "color": "#0376c9", + "color": "#4459ff", "fontSize": 22, }, [ @@ -424,8 +424,8 @@ exports[`DrawerView - Extended Coverage renders correctly (snapshot) 1`] = ` <Text style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Regular", + "color": "#4459ff", + "fontFamily": "CentraNo1-Book", "fontSize": 27.857142857142858, "fontWeight": "400", "paddingLeft": 8.571428571428571, @@ -444,7 +444,7 @@ exports[`DrawerView - Extended Coverage renders correctly (snapshot) 1`] = ` style={ [ { - "borderColor": "#BBC0C566", + "borderColor": "#b7bbc866", "borderTopWidth": 1, "paddingVertical": 10, }, @@ -473,7 +473,7 @@ exports[`DrawerView - Extended Coverage renders correctly (snapshot) 1`] = ` style={ [ { - "color": "#6a737d", + "color": "#686e7d", "fontSize": 24, }, undefined, @@ -493,9 +493,9 @@ exports[`DrawerView - Extended Coverage renders correctly (snapshot) 1`] = ` style={ [ { - "color": "#6a737d", + "color": "#686e7d", "flex": 1, - "fontFamily": "EuclidCircularB-Regular", + "fontFamily": "CentraNo1-Book", "fontSize": 16, "fontWeight": "400", "paddingHorizontal": 15, @@ -528,7 +528,7 @@ exports[`DrawerView - Extended Coverage renders correctly (snapshot) 1`] = ` style={ [ { - "color": "#6a737d", + "color": "#686e7d", "fontSize": 24, }, undefined, @@ -548,9 +548,9 @@ exports[`DrawerView - Extended Coverage renders correctly (snapshot) 1`] = ` style={ [ { - "color": "#6a737d", + "color": "#686e7d", "flex": 1, - "fontFamily": "EuclidCircularB-Regular", + "fontFamily": "CentraNo1-Book", "fontSize": 16, "fontWeight": "400", "paddingHorizontal": 15, @@ -569,7 +569,7 @@ exports[`DrawerView - Extended Coverage renders correctly (snapshot) 1`] = ` style={ [ { - "borderColor": "#BBC0C566", + "borderColor": "#b7bbc866", "borderTopWidth": 1, "paddingVertical": 10, }, @@ -596,7 +596,7 @@ exports[`DrawerView - Extended Coverage renders correctly (snapshot) 1`] = ` style={ [ { - "color": "#6a737d", + "color": "#686e7d", "fontSize": 24, }, undefined, @@ -616,9 +616,9 @@ exports[`DrawerView - Extended Coverage renders correctly (snapshot) 1`] = ` style={ [ { - "color": "#6a737d", + "color": "#686e7d", "flex": 1, - "fontFamily": "EuclidCircularB-Regular", + "fontFamily": "CentraNo1-Book", "fontSize": 16, "fontWeight": "400", "paddingHorizontal": 15, @@ -651,7 +651,7 @@ exports[`DrawerView - Extended Coverage renders correctly (snapshot) 1`] = ` style={ [ { - "color": "#6a737d", + "color": "#686e7d", "fontSize": 24, }, undefined, @@ -671,9 +671,9 @@ exports[`DrawerView - Extended Coverage renders correctly (snapshot) 1`] = ` style={ [ { - "color": "#6a737d", + "color": "#686e7d", "flex": 1, - "fontFamily": "EuclidCircularB-Regular", + "fontFamily": "CentraNo1-Book", "fontSize": 16, "fontWeight": "400", "paddingHorizontal": 15, @@ -706,7 +706,7 @@ exports[`DrawerView - Extended Coverage renders correctly (snapshot) 1`] = ` style={ [ { - "color": "#6a737d", + "color": "#686e7d", "fontSize": 24, }, undefined, @@ -726,9 +726,9 @@ exports[`DrawerView - Extended Coverage renders correctly (snapshot) 1`] = ` style={ [ { - "color": "#6a737d", + "color": "#686e7d", "flex": 1, - "fontFamily": "EuclidCircularB-Regular", + "fontFamily": "CentraNo1-Book", "fontSize": 16, "fontWeight": "400", "paddingHorizontal": 15, diff --git a/app/components/UI/DrawerView/index.js b/app/components/UI/DrawerView/index.js index a3d2831e8072..b3b391996baa 100644 --- a/app/components/UI/DrawerView/index.js +++ b/app/components/UI/DrawerView/index.js @@ -1063,7 +1063,7 @@ class DrawerView extends PureComponent { (accounts[this.selectedChecksummedAddress] && renderFromWei(accounts[this.selectedChecksummedAddress].balance)) || 0; - const fiatBalance = Engine.getTotalFiatAccountBalance(); + const fiatBalance = Engine.getTotalEvmFiatAccountBalance(); const totalFiatBalance = fiatBalance.ethFiat + fiatBalance.tokenFiat; if (totalFiatBalance !== Number(this.previousBalance)) { this.previousBalance = this.currentBalance; diff --git a/app/components/UI/DrawerView/index.test.tsx b/app/components/UI/DrawerView/index.test.tsx index db98d215af73..270875da49a9 100644 --- a/app/components/UI/DrawerView/index.test.tsx +++ b/app/components/UI/DrawerView/index.test.tsx @@ -28,7 +28,7 @@ jest.mock('../../../core/Engine', () => { const { MOCK_ACCOUNTS_CONTROLLER_STATE: mockAccountsControllerState } = jest.requireActual('../../../util/test/accountsControllerTestUtils'); return { - getTotalFiatAccountBalance: () => ({ ethFiat: 0, tokenFiat: 0 }), + getTotalEvmFiatAccountBalance: () => ({ ethFiat: 0, tokenFiat: 0 }), context: { KeyringController: { state: { diff --git a/app/components/UI/Stake/Views/StakeInputView/StakeInputView.styles.ts b/app/components/UI/Earn/Views/EarnInputView/EarnInputView.styles.ts similarity index 100% rename from app/components/UI/Stake/Views/StakeInputView/StakeInputView.styles.ts rename to app/components/UI/Earn/Views/EarnInputView/EarnInputView.styles.ts diff --git a/app/components/UI/Stake/Views/StakeInputView/StakeInputView.test.tsx b/app/components/UI/Earn/Views/EarnInputView/EarnInputView.test.tsx similarity index 66% rename from app/components/UI/Stake/Views/StakeInputView/StakeInputView.test.tsx rename to app/components/UI/Earn/Views/EarnInputView/EarnInputView.test.tsx index 04daf2eced00..5f2d83921ba3 100644 --- a/app/components/UI/Stake/Views/StakeInputView/StakeInputView.test.tsx +++ b/app/components/UI/Earn/Views/EarnInputView/EarnInputView.test.tsx @@ -1,56 +1,80 @@ -import React from 'react'; -import { fireEvent } from '@testing-library/react-native'; import type { InternalAccount } from '@metamask/keyring-internal-api'; import { ChainId, PooledStakingContract } from '@metamask/stake-sdk'; +import { fireEvent } from '@testing-library/react-native'; +import BN4 from 'bnjs4'; import { Contract } from 'ethers'; -import StakeInputView from './StakeInputView'; +import React from 'react'; +import { strings } from '../../../../../../locales/i18n'; +import Routes from '../../../../../constants/navigation/Routes'; +import { MetricsEventBuilder } from '../../../../../core/Analytics/MetricsEventBuilder'; +import { RootState } from '../../../../../reducers'; +import { selectSelectedInternalAccount } from '../../../../../selectors/accountsController'; +import { + selectConfirmationRedesignFlags, + type ConfirmationRedesignRemoteFlags, +} from '../../../../../selectors/featureFlagController'; +import { toWei, weiToFiatNumber } from '../../../../../util/number'; +import { + MOCK_ACCOUNTS_CONTROLLER_STATE, + MOCK_ADDRESS_2, +} from '../../../../../util/test/accountsControllerTestUtils'; +import { backgroundState } from '../../../../../util/test/initial-root-state'; import { DeepPartial, renderScreen, } from '../../../../../util/test/renderWithProvider'; -import Routes from '../../../../../constants/navigation/Routes'; -import { Stake } from '../../sdk/stakeSdkProvider'; +import { flushPromises } from '../../../../../util/test/utils'; +import useMetrics from '../../../../hooks/useMetrics/useMetrics'; import { MOCK_ETH_MAINNET_ASSET, MOCK_GET_VAULT_RESPONSE, -} from '../../__mocks__/mockData'; -import { toWei } from '../../../../../util/number'; -import { strings } from '../../../../../../locales/i18n'; +} from '../../../Stake/__mocks__/mockData'; +import { MOCK_VAULT_APY_AVERAGES } from '../../../Stake/components/PoolStakingLearnMoreModal/mockVaultRewards'; +import { EVENT_PROVIDERS } from '../../../Stake/constants/events'; +import usePoolStakedDeposit from '../../../Stake/hooks/usePoolStakedDeposit'; +import { Stake } from '../../../Stake/sdk/stakeSdkProvider'; +import EarnInputView from './EarnInputView'; // eslint-disable-next-line import/no-namespace -import * as useStakingGasFee from '../../hooks/useStakingGasFee'; +import * as useStakingGasFee from '../../../Stake/hooks/useStakingGasFee'; import { - STAKE_INPUT_VIEW_ACTIONS, - StakeInputViewProps, -} from './StakeInputView.types'; -import { MOCK_ACCOUNTS_CONTROLLER_STATE } from '../../../../../util/test/accountsControllerTestUtils'; -import { RootState } from '../../../../../reducers'; -import { backgroundState } from '../../../../../util/test/initial-root-state'; -import { MOCK_VAULT_APY_AVERAGES } from '../../components/PoolStakingLearnMoreModal/mockVaultRewards'; -import { selectSelectedInternalAccount } from '../../../../../selectors/accountsController'; + EARN_INPUT_VIEW_ACTIONS, + EarnInputViewProps, +} from './EarnInputView.types'; +import { BNToHex } from '@metamask/controller-utils'; +import { CHAIN_IDS } from '@metamask/transaction-controller'; +import BigNumber from 'bignumber.js'; +import { getStakingNavbar } from '../../../Navbar'; +// eslint-disable-next-line import/no-namespace +import * as useBalance from '../../../Stake/hooks/useBalance'; +import { isStablecoinLendingFeatureEnabled } from '../../../Stake/constants'; import { - selectConfirmationRedesignFlags, - type ConfirmationRedesignRemoteFlags, -} from '../../../../../selectors/featureFlagController'; -import { flushPromises } from '../../../../../util/test/utils'; -import usePoolStakedDeposit from '../../hooks/usePoolStakedDeposit'; -import { MetricsEventBuilder } from '../../../../../core/Analytics/MetricsEventBuilder'; -import useMetrics from '../../../../hooks/useMetrics/useMetrics'; -import { EVENT_PROVIDERS } from '../../constants/events'; - -const MOCK_SELECTED_INTERNAL_ACCOUNT = { - address: '0x123', -} as InternalAccount; + createMockToken, + getCreateMockTokenOptions, +} from '../../../Stake/testUtils'; +import { TOKENS_WITH_DEFAULT_OPTIONS } from '../../../Stake/testUtils/testUtils.types'; + +const MOCK_USDC_MAINNET_ASSET = createMockToken({ + ...getCreateMockTokenOptions( + CHAIN_IDS.MAINNET, + TOKENS_WITH_DEFAULT_OPTIONS.USDC, + ), + address: '0x123232', +}); const mockSetOptions = jest.fn(); const mockNavigate = jest.fn(); const mockReset = jest.fn(); const mockPop = jest.fn(); +const mockConversionRate = 2000; jest.mock('../../../../hooks/useMetrics/useMetrics'); -jest.mock('react-redux', () => ({ - ...jest.requireActual('react-redux'), - useSelector: jest.fn().mockImplementation((selector) => selector()), +jest.mock('../../../Navbar', () => ({ + getStakingNavbar: jest.fn().mockReturnValue({}), +})); + +jest.mock('../../../Stake/constants', () => ({ + isStablecoinLendingFeatureEnabled: jest.fn(() => false), })); jest.mock('@react-navigation/native', () => { @@ -70,8 +94,13 @@ jest.mock('@react-navigation/native', () => { // Mock necessary modules and hooks jest.mock('../../../../../selectors/currencyRateController.ts', () => ({ - selectConversionRate: jest.fn(() => 2000), + selectConversionRate: jest.fn(() => mockConversionRate), selectCurrentCurrency: jest.fn(() => 'USD'), + selectCurrencyRates: jest.fn(() => ({ + ETH: { + conversionRate: mockConversionRate, + }, + })), })); // Add mock for multichain selectors @@ -101,7 +130,7 @@ jest.mock('../../../../../selectors/featureFlagController', () => ({ })); const mockBalanceBN = toWei('1.5'); // 1.5 ETH - +const mockGasFeeBN = new BN4('100000000000000'); const mockPooledStakingContractService: PooledStakingContract = { chainId: ChainId.ETHEREUM, connectSignerOrProvider: jest.fn(), @@ -118,7 +147,7 @@ const mockPooledStakingContractService: PooledStakingContract = { getShares: jest.fn(), }; -jest.mock('../../hooks/useStakeContext.ts', () => ({ +jest.mock('../../../Stake/hooks/useStakeContext.ts', () => ({ useStakeContext: jest.fn(() => { const stakeContext: Stake = { setSdkType: jest.fn(), @@ -128,7 +157,7 @@ jest.mock('../../hooks/useStakeContext.ts', () => ({ }), })); -jest.mock('../../hooks/useBalance', () => ({ +jest.mock('../../../Stake/hooks/useBalance', () => ({ __esModule: true, default: () => ({ balanceETH: '1.5', @@ -137,12 +166,10 @@ jest.mock('../../hooks/useBalance', () => ({ }), })); -const mockGasFee = toWei('0.0001'); - -jest.mock('../../hooks/useStakingGasFee', () => ({ +jest.mock('../../../Stake/hooks/useStakingGasFee', () => ({ __esModule: true, default: () => ({ - estimatedGasFeeWei: mockGasFee, + estimatedGasFeeWei: mockGasFeeBN, isLoadingStakingGasFee: false, isStakingGasFeeError: false, refreshGasValues: jest.fn(), @@ -150,7 +177,7 @@ jest.mock('../../hooks/useStakingGasFee', () => ({ })); // Mock hooks -jest.mock('../../hooks/useStakingEligibility', () => ({ +jest.mock('../../../Stake/hooks/useStakingEligibility', () => ({ __esModule: true, default: () => ({ isEligible: true, @@ -160,7 +187,7 @@ jest.mock('../../hooks/useStakingEligibility', () => ({ }), })); -jest.mock('../../hooks/useVaultApyAverages', () => ({ +jest.mock('../../../Stake/hooks/useVaultApyAverages', () => ({ __esModule: true, default: () => ({ vaultApyAverages: MOCK_VAULT_APY_AVERAGES, @@ -171,7 +198,7 @@ jest.mock('../../hooks/useVaultApyAverages', () => ({ const mockVaultMetadata = MOCK_GET_VAULT_RESPONSE; -jest.mock('../../hooks/useVaultMetadata', () => ({ +jest.mock('../../../Stake/hooks/useVaultMetadata', () => ({ __esModule: true, default: () => ({ vaultMetadata: mockVaultMetadata, @@ -182,7 +209,7 @@ jest.mock('../../hooks/useVaultMetadata', () => ({ }), })); -jest.mock('../../hooks/usePoolStakedDeposit', () => ({ +jest.mock('../../../Stake/hooks/usePoolStakedDeposit', () => ({ __esModule: true, default: jest.fn(), })); @@ -193,6 +220,30 @@ const mockInitialState: DeepPartial<RootState> = { backgroundState: { ...backgroundState, AccountsController: MOCK_ACCOUNTS_CONTROLLER_STATE, + TokenBalancesController: { + tokenBalances: { + [MOCK_ADDRESS_2.toLowerCase()]: { + [CHAIN_IDS.MAINNET]: { + [MOCK_USDC_MAINNET_ASSET.address]: BNToHex( + new BigNumber('1000000'), + ), + }, + }, + }, + }, + CurrencyRateController: { + currentCurrency: 'USD', + currencyRates: { + ETH: { conversionRate: 2000 }, + }, + }, + TokenRatesController: { + marketData: { + [CHAIN_IDS.MAINNET]: { + [MOCK_USDC_MAINNET_ASSET.address]: { price: 0.0005 }, + }, + }, + }, }, }, }; @@ -205,10 +256,10 @@ describe('StakeInputView', () => { const selectSelectedInternalAccountMock = jest.mocked( selectSelectedInternalAccount, ); - const baseProps: StakeInputViewProps = { + const baseProps: EarnInputViewProps = { route: { params: { - action: STAKE_INPUT_VIEW_ACTIONS.STAKE, + action: EARN_INPUT_VIEW_ACTIONS.STAKE, token: MOCK_ETH_MAINNET_ASSET, }, key: Routes.STAKING.STAKE, @@ -217,11 +268,20 @@ describe('StakeInputView', () => { }; const mockTrackEvent = jest.fn(); const useMetricsMock = jest.mocked(useMetrics); + const mockGetStakingNavbar = jest.mocked(getStakingNavbar); + const mockIsStablecoinLendingFeatureEnabled = jest.mocked( + isStablecoinLendingFeatureEnabled, + ); beforeEach(() => { jest.clearAllMocks(); + jest.useFakeTimers(); + mockIsStablecoinLendingFeatureEnabled.mockReturnValue(false); selectSelectedInternalAccountMock.mockImplementation( - () => MOCK_SELECTED_INTERNAL_ACCOUNT, + () => + ({ + address: MOCK_ADDRESS_2, + } as InternalAccount), ); selectConfirmationRedesignFlagsMock.mockImplementation( () => @@ -238,26 +298,62 @@ describe('StakeInputView', () => { } as unknown as ReturnType<typeof useMetrics>); }); - function render(Component: React.ComponentType<StakeInputViewProps>) { + function render( + Component: React.ComponentType, + route: EarnInputViewProps['route'] = baseProps.route, + state: DeepPartial<RootState> = mockInitialState, + ) { return renderScreen( - Component as React.ComponentType, + Component, { name: Routes.STAKING.STAKE, }, { - state: mockInitialState, + state: { ...mockInitialState, ...state }, }, - baseProps.route.params + { ...baseProps.route.params, ...route.params }, ); } - const renderComponent = () => render(StakeInputView); + const renderComponent = () => render(EarnInputView); it('render matches snapshot', () => { const { toJSON } = renderComponent(); expect(toJSON()).toMatchSnapshot(); }); + describe('when erc20 token is selected', () => { + it('renders the correct USDC token', () => { + mockIsStablecoinLendingFeatureEnabled.mockReturnValue(true); + const { getByText } = render(EarnInputView, { + params: { + ...baseProps.route.params, + action: EARN_INPUT_VIEW_ACTIONS.LEND, + token: MOCK_USDC_MAINNET_ASSET, + }, + key: Routes.STAKING.STAKE, + name: 'params', + }); + + expect(mockGetStakingNavbar).toHaveBeenCalledWith( + 'Deposit', + expect.anything(), + expect.anything(), + expect.anything(), + expect.anything(), + ); + expect(getByText('1 USDC')).toBeTruthy(); + expect(getByText('$0')).toBeTruthy(); + + fireEvent.press(getByText('1')); + expect(getByText('$1')).toBeTruthy(); + + fireEvent.press(getByText('Max')); + + expect(mockNavigate).not.toHaveBeenCalled(); + }); + }); + describe('when values are entered in the keypad', () => { it('updates ETH and fiat values', () => { const { toJSON, getByText } = renderComponent(); @@ -332,12 +428,24 @@ describe('StakeInputView', () => { describe('navigates to ', () => { it('gas impact modal when gas cost is 30% or more of deposit amount', async () => { - jest.spyOn(useStakingGasFee, 'default').mockReturnValue({ + const mockUseStakingGasFee = jest.spyOn(useStakingGasFee, 'default'); + const mockUseBalance = jest.spyOn(useBalance, 'default'); + const useBalanceMockData = { + balanceFiatNumber: weiToFiatNumber( + mockBalanceBN, + mockConversionRate, + 2, + ), + balanceETH: '1.5', + balanceWei: mockBalanceBN, + } as ReturnType<(typeof useBalance)['default']>; + mockUseBalance.mockImplementation(() => useBalanceMockData); + mockUseStakingGasFee.mockImplementation(() => ({ estimatedGasFeeWei: toWei('0.25'), isLoadingStakingGasFee: false, isStakingGasFeeError: false, refreshGasValues: jest.fn(), - }); + })); const { getByText } = renderComponent(); @@ -346,13 +454,14 @@ describe('StakeInputView', () => { fireEvent.press(getByText(strings('stake.review'))); expect(mockNavigate).toHaveBeenCalledTimes(1); + expect(mockNavigate).toHaveBeenLastCalledWith('StakeModals', { screen: Routes.STAKING.MODALS.GAS_IMPACT, params: { amountFiat: '750', amountWei: '375000000000000000', annualRewardRate: '2.5%', - annualRewardsETH: '0.00946 ETH', + annualRewardsToken: '0.00946 ETH', annualRewardsFiat: '18.92 USD', estimatedGasFee: '0.25', estimatedGasFeePercentage: '66%', @@ -376,6 +485,7 @@ describe('StakeInputView', () => { fireEvent.press(getByText(strings('stake.review'))); + jest.useRealTimers(); // Wait for approval to be processed await flushPromises(); @@ -387,7 +497,7 @@ describe('StakeInputView', () => { expect(attemptDepositTransactionMock).toHaveBeenCalledTimes(1); expect(attemptDepositTransactionMock).toHaveBeenCalledWith( '375000000000000000', - MOCK_SELECTED_INTERNAL_ACCOUNT.address, + MOCK_ADDRESS_2, undefined, true, ); @@ -419,7 +529,7 @@ describe('StakeInputView', () => { amountFiat: '750', amountWei: '375000000000000000', annualRewardRate: '2.5%', - annualRewardsETH: '0.00946 ETH', + annualRewardsToken: '0.00946 ETH', annualRewardsFiat: '18.92 USD', }, }); diff --git a/app/components/UI/Stake/Views/StakeInputView/StakeInputView.tsx b/app/components/UI/Earn/Views/EarnInputView/EarnInputView.tsx similarity index 56% rename from app/components/UI/Stake/Views/StakeInputView/StakeInputView.tsx rename to app/components/UI/Earn/Views/EarnInputView/EarnInputView.tsx index a2a1463e59c9..1c548aa0d486 100644 --- a/app/components/UI/Stake/Views/StakeInputView/StakeInputView.tsx +++ b/app/components/UI/Earn/Views/EarnInputView/EarnInputView.tsx @@ -1,5 +1,9 @@ -import { useFocusEffect, useNavigation } from '@react-navigation/native'; -import { StackNavigationProp } from '@react-navigation/stack'; +import { Hex } from '@metamask/utils'; +import { + useFocusEffect, + useNavigation, + useRoute, +} from '@react-navigation/native'; import { formatEther } from 'ethers/lib/utils'; import React, { useCallback, useEffect, useState } from 'react'; import { View } from 'react-native'; @@ -12,46 +16,76 @@ import Button, { } from '../../../../../component-library/components/Buttons/Button'; import { TextVariant } from '../../../../../component-library/components/Texts/Text'; import Routes from '../../../../../constants/navigation/Routes'; +import { RootState } from '../../../../../reducers'; import { selectSelectedInternalAccount } from '../../../../../selectors/accountsController'; +import { selectConversionRate } from '../../../../../selectors/currencyRateController'; import { selectConfirmationRedesignFlags } from '../../../../../selectors/featureFlagController'; +import { selectContractExchangeRatesByChainId } from '../../../../../selectors/tokenRatesController'; import Keypad from '../../../../Base/Keypad'; import { MetaMetricsEvents, useMetrics } from '../../../../hooks/useMetrics'; import { useStyles } from '../../../../hooks/useStyles'; import { getStakingNavbar } from '../../../Navbar'; import ScreenLayout from '../../../Ramp/components/ScreenLayout'; import EarnTokenSelector from '../../components/EarnTokenSelector'; -import EstimatedAnnualRewardsCard from '../../components/EstimatedAnnualRewardsCard'; +import EstimatedAnnualRewardsCard from '../../../Stake/components/EstimatedAnnualRewardsCard'; import InputDisplay from '../../components/InputDisplay'; -import QuickAmounts from '../../components/QuickAmounts'; -import { isStablecoinLendingFeatureEnabled } from '../../constants'; -import { EVENT_LOCATIONS, EVENT_PROVIDERS } from '../../constants/events'; -import usePoolStakedDeposit from '../../hooks/usePoolStakedDeposit'; -import useStakingInputHandlers from '../../hooks/useStakingInput'; -import { StakeNavigationParamsList } from '../../types'; -import { withMetaMetrics } from '../../utils/metaMetrics/withMetaMetrics'; -import styleSheet from './StakeInputView.styles'; -import { StakeInputViewProps } from './StakeInputView.types'; -import { getStakeInputViewTitle } from './utils'; +import QuickAmounts from '../../../Stake/components/QuickAmounts'; +import { isStablecoinLendingFeatureEnabled } from '../../../Stake/constants'; +import { + EVENT_LOCATIONS, + EVENT_PROVIDERS, +} from '../../../Stake/constants/events'; +import usePoolStakedDeposit from '../../../Stake/hooks/usePoolStakedDeposit'; +import { withMetaMetrics } from '../../../Stake/utils/metaMetrics/withMetaMetrics'; +import styleSheet from './EarnInputView.styles'; +import { EarnInputViewProps } from './EarnInputView.types'; +import { getEarnInputViewTitle } from './utils'; +import { useEarnTokenDetails } from '../../hooks/useEarnTokenDetails'; +import useEarnInputHandlers from '../../hooks/useEarnInput'; -const StakeInputView = ({ route }: StakeInputViewProps) => { - const navigation = useNavigation<StackNavigationProp<StakeNavigationParamsList>>(); - const { styles, theme } = useStyles(styleSheet, {}); - const { trackEvent, createEventBuilder } = useMetrics(); - const { attemptDepositTransaction } = usePoolStakedDeposit(); +const EarnInputView = () => { + // navigation hooks + const navigation = useNavigation(); + const route = useRoute<EarnInputViewProps['route']>(); + const { action, token } = route.params; + + // state + const [ + isSubmittingStakeDepositTransaction, + setIsSubmittingStakeDepositTransaction, + ] = useState(false); + + // selectors const confirmationRedesignFlags = useSelector( selectConfirmationRedesignFlags, ); const isStakingDepositRedesignedEnabled = confirmationRedesignFlags?.staking_confirmations; const activeAccount = useSelector(selectSelectedInternalAccount); + const conversionRate = useSelector(selectConversionRate) ?? 1; + const contractExchangeRates = useSelector((state: RootState) => + selectContractExchangeRatesByChainId(state, token.chainId as Hex), + ); + // if token is ETH, use 1 as the exchange rate + // otherwise, use the contract exchange rate or 0 if undefined + const exchangeRate = token.isETH + ? 1 + : contractExchangeRates?.[token.address as Hex]?.price ?? 0; + + // other hooks + const { styles, theme } = useStyles(styleSheet, {}); + const { trackEvent, createEventBuilder } = useMetrics(); + const { getTokenWithBalanceAndApr } = useEarnTokenDetails(); + const { attemptDepositTransaction } = usePoolStakedDeposit(); + const earnToken = getTokenWithBalanceAndApr(token); const { - isEth, + isFiat, currentCurrency, isNonZeroAmount, - amountEth, - amountWei, - fiatAmount, + amountToken, + amountTokenMinimalUnit, + amountFiatNumber, isOverMaximum, handleCurrencySwitch, currencyToggleValue, @@ -60,7 +94,7 @@ const StakeInputView = ({ route }: StakeInputViewProps) => { handleKeypadChange, calculateEstimatedAnnualRewards, estimatedAnnualRewards, - annualRewardsETH, + annualRewardsToken, annualRewardsFiat, annualRewardRate, isLoadingVaultMetadata, @@ -70,7 +104,11 @@ const StakeInputView = ({ route }: StakeInputViewProps) => { getDepositTxGasPercentage, estimatedGasFeeWei, isLoadingStakingGasFee, - } = useStakingInputHandlers(); + } = useEarnInputHandlers({ + earnToken, + conversionRate, + exchangeRate, + }); const navigateToLearnMoreModal = () => { navigation.navigate('StakeModals', { @@ -78,15 +116,7 @@ const StakeInputView = ({ route }: StakeInputViewProps) => { }); }; - const [isSubmittingStakeDepositTransaction, setIsSubmittingStakeDepositTransaction] = useState(false); - - useFocusEffect( - useCallback(() => { - setIsSubmittingStakeDepositTransaction(false); - }, []) - ); - - const handleStakePress = useCallback(async () => { + const handleEarnPress = useCallback(async () => { if (isHighGasCostImpact()) { trackEvent( createEventBuilder( @@ -95,8 +125,8 @@ const StakeInputView = ({ route }: StakeInputViewProps) => { .addProperties({ selected_provider: EVENT_PROVIDERS.CONSENSYS, location: EVENT_LOCATIONS.STAKE_INPUT_VIEW, - tokens_to_stake_native_value: amountEth, - tokens_to_stake_usd_value: fiatAmount, + tokens_to_stake_native_value: amountToken, + tokens_to_stake_usd_value: amountFiatNumber, estimated_gas_fee: formatEther(estimatedGasFeeWei.toString()), estimated_gas_percentage_of_deposit: `${getDepositTxGasPercentage()}%`, }) @@ -106,9 +136,9 @@ const StakeInputView = ({ route }: StakeInputViewProps) => { navigation.navigate('StakeModals', { screen: Routes.STAKING.MODALS.GAS_IMPACT, params: { - amountWei: amountWei.toString(), - amountFiat: fiatAmount, - annualRewardsETH, + amountWei: amountTokenMinimalUnit.toString(), + amountFiat: amountFiatNumber, + annualRewardsToken, annualRewardsFiat, annualRewardRate, estimatedGasFee: formatEther(estimatedGasFeeWei.toString()), @@ -118,12 +148,12 @@ const StakeInputView = ({ route }: StakeInputViewProps) => { return; } - const amountWeiString = amountWei.toString(); + const amountWeiString = amountTokenMinimalUnit.toString(); const stakeButtonClickEventProperties = { selected_provider: EVENT_PROVIDERS.CONSENSYS, - tokens_to_stake_native_value: amountEth, - tokens_to_stake_usd_value: fiatAmount, + tokens_to_stake_native_value: amountToken, + tokens_to_stake_usd_value: amountFiatNumber, }; if (isStakingDepositRedesignedEnabled) { @@ -157,12 +187,13 @@ const StakeInputView = ({ route }: StakeInputViewProps) => { ); return; } + navigation.navigate('StakeScreens', { screen: Routes.STAKING.STAKE_CONFIRMATION, params: { amountWei: amountWeiString, - amountFiat: fiatAmount, - annualRewardsETH, + amountFiat: amountFiatNumber, + annualRewardsToken, annualRewardsFiat, annualRewardRate, }, @@ -176,14 +207,14 @@ const StakeInputView = ({ route }: StakeInputViewProps) => { }, [ isHighGasCostImpact, navigation, - amountWei, - fiatAmount, - annualRewardsETH, + amountTokenMinimalUnit, + amountFiatNumber, + annualRewardsToken, annualRewardsFiat, annualRewardRate, trackEvent, createEventBuilder, - amountEth, + amountToken, estimatedGasFeeWei, getDepositTxGasPercentage, isStakingDepositRedesignedEnabled, @@ -191,56 +222,122 @@ const StakeInputView = ({ route }: StakeInputViewProps) => { attemptDepositTransaction, ]); + const isStablecoinLendingEnabled = isStablecoinLendingFeatureEnabled(); + const handleMaxButtonPress = () => { - navigation.navigate('StakeModals', { - screen: Routes.STAKING.MODALS.MAX_INPUT, - params: { - handleMaxPress: handleMax, - }, - }); + if (!isStablecoinLendingEnabled || token.isETH) { + navigation.navigate('StakeModals', { + screen: Routes.STAKING.MODALS.MAX_INPUT, + params: { + handleMaxPress: handleMax, + }, + }); + } else { + handleMax(); + } + }; + + const getButtonLabel = () => { + if (!isNonZeroAmount) { + return strings('stake.enter_amount'); + } + if (isOverMaximum.isOverMaximumToken) { + return strings('stake.not_enough_token', { + ticker: earnToken.ticker ?? earnToken.symbol, + }); + } + if (isOverMaximum.isOverMaximumEth) { + return strings('stake.not_enough_eth'); + } + return strings('stake.review'); }; const balanceText = strings('stake.balance'); + const buttonLabel = getButtonLabel(); - const buttonLabel = !isNonZeroAmount - ? strings('stake.enter_amount') - : isOverMaximum - ? strings('stake.not_enough_eth') - : strings('stake.review'); + useFocusEffect( + useCallback(() => { + setIsSubmittingStakeDepositTransaction(false); + }, []), + ); - useEffect(() => { - const title = isStablecoinLendingFeatureEnabled() - ? getStakeInputViewTitle( - route?.params?.action, - route?.params?.token.symbol, - route?.params?.token.isETH, - ) - : strings('stake.stake_eth'); + const stakingNavBarOptions = { + hasCancelButton: true, + hasBackButton: false, + }; + const stakingNavBarEventOptions = { + cancelButtonEvent: { + event: MetaMetricsEvents.STAKE_CANCEL_CLICKED, + properties: { + selected_provider: EVENT_PROVIDERS.CONSENSYS, + location: EVENT_LOCATIONS.STAKE_INPUT_VIEW, + }, + }, + }; + const earnNavBarOptions = { + hasCancelButton: false, + hasBackButton: true, + hasIconButton: true, + // TODO: STAKE-967 + // handleIconPress: navigateToLearnMoreModal, + }; + const earnNavBarEventOptions = { + backButtonEvent: { + event: MetaMetricsEvents.STAKE_CANCEL_CLICKED, + properties: { + selected_provider: EVENT_PROVIDERS.CONSENSYS, + location: EVENT_LOCATIONS.STAKE_INPUT_VIEW, + }, + }, + // TODO: STAKE-967 + // iconButtonEvent: { + // event: MetaMetricsEvents.TOOLTIP_OPENED, + // properties: { + // selected_provider: EVENT_PROVIDERS.CONSENSYS, + // text: 'Tooltip Opened', + // location: EVENT_LOCATIONS.STAKE_INPUT_VIEW, + // tooltip_name: 'MetaMask Earn Estimated Rewards', + // }, + // }, + }; + const navBarOptions = isStablecoinLendingEnabled + ? earnNavBarOptions + : stakingNavBarOptions; + const navBarEventOptions = isStablecoinLendingEnabled + ? earnNavBarEventOptions + : stakingNavBarEventOptions; + const title = isStablecoinLendingEnabled + ? getEarnInputViewTitle(action) + : strings('stake.stake_eth'); + useEffect(() => { navigation.setOptions( getStakingNavbar( title, navigation, theme.colors, - { - hasBackButton: false, - }, - { - cancelButtonEvent: { - event: MetaMetricsEvents.STAKE_CANCEL_CLICKED, - properties: { - selected_provider: EVENT_PROVIDERS.CONSENSYS, - location: EVENT_LOCATIONS.STAKE_INPUT_VIEW, - }, - }, - }, + navBarOptions, + navBarEventOptions, ), ); - }, [navigation, route.params, theme.colors]); + }, [ + navigation, + action, + token, + theme.colors, + navBarEventOptions, + navBarOptions, + title, + ]); useEffect(() => { calculateEstimatedAnnualRewards(); - }, [amountEth, amountWei, isEth, calculateEstimatedAnnualRewards]); + }, [ + amountToken, + amountTokenMinimalUnit, + isFiat, + calculateEstimatedAnnualRewards, + ]); return ( <ScreenLayout style={styles.container}> @@ -249,9 +346,10 @@ const StakeInputView = ({ route }: StakeInputViewProps) => { balanceText={balanceText} balanceValue={balanceValue} isNonZeroAmount={isNonZeroAmount} - amountEth={amountEth} - fiatAmount={fiatAmount} - isEth={isEth} + amountToken={amountToken} + amountFiatNumber={amountFiatNumber} + isFiat={isFiat} + ticker={token.ticker ?? token.symbol} currentCurrency={currentCurrency} handleCurrencySwitch={withMetaMetrics(handleCurrencySwitch, { event: MetaMetricsEvents.STAKE_INPUT_CURRENCY_SWITCH_CLICKED, @@ -259,7 +357,7 @@ const StakeInputView = ({ route }: StakeInputViewProps) => { selected_provider: EVENT_PROVIDERS.CONSENSYS, text: 'Currency Switch Trigger', location: EVENT_LOCATIONS.STAKE_INPUT_VIEW, - currency_type: isEth ? 'fiat' : 'native', + currency_type: !isFiat ? 'fiat' : 'native', }, })} currencyToggleValue={currencyToggleValue} @@ -292,7 +390,7 @@ const StakeInputView = ({ route }: StakeInputViewProps) => { location: EVENT_LOCATIONS.STAKE_INPUT_VIEW, amount: value, is_max: false, - mode: isEth ? 'native' : 'fiat', + mode: !isFiat ? 'native' : 'fiat', }, })({ value }) } @@ -301,16 +399,16 @@ const StakeInputView = ({ route }: StakeInputViewProps) => { properties: { location: EVENT_LOCATIONS.STAKE_INPUT_VIEW, is_max: true, - mode: isEth ? 'native' : 'fiat', + mode: !isFiat ? 'native' : 'fiat', }, })} /> <Keypad - value={isEth ? amountEth : fiatAmount} + value={!isFiat ? amountToken : amountFiatNumber} onChange={handleKeypadChange} style={styles.keypad} - currency={'ETH'} - decimals={isEth ? 5 : 2} + currency={token.symbol} + decimals={!isFiat ? 5 : 2} /> <View style={styles.reviewButtonContainer}> <Button @@ -320,14 +418,18 @@ const StakeInputView = ({ route }: StakeInputViewProps) => { variant={ButtonVariants.Primary} loading={isSubmittingStakeDepositTransaction} isDisabled={ - isOverMaximum || !isNonZeroAmount || isLoadingStakingGasFee || isSubmittingStakeDepositTransaction + isOverMaximum.isOverMaximumToken || + isOverMaximum.isOverMaximumEth || + !isNonZeroAmount || + isLoadingStakingGasFee || + isSubmittingStakeDepositTransaction } width={ButtonWidthTypes.Full} - onPress={handleStakePress} + onPress={handleEarnPress} /> </View> </ScreenLayout> ); }; -export default StakeInputView; +export default EarnInputView; diff --git a/app/components/UI/Earn/Views/EarnInputView/EarnInputView.types.ts b/app/components/UI/Earn/Views/EarnInputView/EarnInputView.types.ts new file mode 100644 index 000000000000..4bccc67d914b --- /dev/null +++ b/app/components/UI/Earn/Views/EarnInputView/EarnInputView.types.ts @@ -0,0 +1,22 @@ +import { RouteProp } from '@react-navigation/native'; +import { TokenI } from '../../../Tokens/types'; +import { strings } from '../../../../../../locales/i18n'; + +export enum EARN_INPUT_VIEW_ACTIONS { + STAKE = 'STAKE', + LEND = 'LEND', +} + +export const EARN_INPUT_ACTION_TO_LABEL_MAP = { + [EARN_INPUT_VIEW_ACTIONS.STAKE]: strings('stake.stake'), + [EARN_INPUT_VIEW_ACTIONS.LEND]: strings('stake.deposit'), +}; + +interface EarnInputViewRouteParams { + token: TokenI; + action: EARN_INPUT_VIEW_ACTIONS; +} + +export interface EarnInputViewProps { + route: RouteProp<{ params: EarnInputViewRouteParams }, 'params'>; +} diff --git a/app/components/UI/Stake/Views/StakeInputView/__snapshots__/StakeInputView.test.tsx.snap b/app/components/UI/Earn/Views/EarnInputView/__snapshots__/EarnInputView.test.tsx.snap similarity index 91% rename from app/components/UI/Stake/Views/StakeInputView/__snapshots__/StakeInputView.test.tsx.snap rename to app/components/UI/Earn/Views/EarnInputView/__snapshots__/EarnInputView.test.tsx.snap index eb0b60a32342..b2dab031441f 100644 --- a/app/components/UI/Stake/Views/StakeInputView/__snapshots__/StakeInputView.test.tsx.snap +++ b/app/components/UI/Earn/Views/EarnInputView/__snapshots__/EarnInputView.test.tsx.snap @@ -341,18 +341,16 @@ exports[`StakeInputView render matches snapshot 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > - Balance - : - 1.5 ETH + Balance: 1.5 ETH </Text> </View> <View @@ -369,8 +367,8 @@ exports[`StakeInputView render matches snapshot 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", + "color": "#121314", + "fontFamily": "CentraNo1-Bold", "fontSize": 32, "fontWeight": "700", "letterSpacing": 0, @@ -384,8 +382,8 @@ exports[`StakeInputView render matches snapshot 1`] = ` accessibilityRole="text" style={ { - "color": "#9fa6ae", - "fontFamily": "EuclidCircularB-Bold", + "color": "#9ca1af", + "fontFamily": "CentraNo1-Bold", "fontSize": 32, "fontWeight": "700", "letterSpacing": 0, @@ -407,7 +405,7 @@ exports[`StakeInputView render matches snapshot 1`] = ` "alignItems": "center", "alignSelf": "flex-start", "backgroundColor": "#ffffff", - "borderColor": "#BBC0C566", + "borderColor": "#b7bbc866", "borderRadius": 16, "borderWidth": 1, "flexDirection": "row", @@ -416,24 +414,25 @@ exports[`StakeInputView render matches snapshot 1`] = ` "paddingHorizontal": 16, } } + testID="currency-toggle" > <Text accessibilityRole="none" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > 0 USD </Text> <SvgMock - color="#141618" + color="#121314" height={16} name="SwapVertical" style={ @@ -451,7 +450,7 @@ exports[`StakeInputView render matches snapshot 1`] = ` <View style={ { - "borderColor": "#BBC0C566", + "borderColor": "#b7bbc866", "padding": 16, "paddingBottom": 8, } @@ -462,7 +461,7 @@ exports[`StakeInputView render matches snapshot 1`] = ` { "alignItems": "center", "backgroundColor": "#ffffff", - "borderColor": "#848c96", + "borderColor": "#b7bbc8", "borderRadius": 8, "borderWidth": 1, "justifyContent": "center", @@ -494,12 +493,12 @@ exports[`StakeInputView render matches snapshot 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -510,7 +509,7 @@ exports[`StakeInputView render matches snapshot 1`] = ` onPress={[Function]} > <SvgMock - color="#9fa6ae" + color="#9ca1af" height={16} name="Question" style={ @@ -534,12 +533,12 @@ exports[`StakeInputView render matches snapshot 1`] = ` accessibilityRole="text" style={ { - "color": "#1c8234", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, + "color": "#1c7e33", + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -549,12 +548,12 @@ exports[`StakeInputView render matches snapshot 1`] = ` accessibilityRole="text" style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 12, + "color": "#686e7d", + "fontFamily": "CentraNo1-Medium", + "fontSize": 14, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -586,7 +585,7 @@ exports[`StakeInputView render matches snapshot 1`] = ` "alignItems": "center", "alignSelf": "stretch", "backgroundColor": "#ffffff", - "borderColor": "#848c96", + "borderColor": "#b7bbc8", "borderRadius": 20, "borderWidth": 1, "flex": 1, @@ -601,12 +600,12 @@ exports[`StakeInputView render matches snapshot 1`] = ` accessibilityRole="none" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -623,7 +622,7 @@ exports[`StakeInputView render matches snapshot 1`] = ` "alignItems": "center", "alignSelf": "stretch", "backgroundColor": "#ffffff", - "borderColor": "#848c96", + "borderColor": "#b7bbc8", "borderRadius": 20, "borderWidth": 1, "flex": 1, @@ -638,12 +637,12 @@ exports[`StakeInputView render matches snapshot 1`] = ` accessibilityRole="none" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -660,7 +659,7 @@ exports[`StakeInputView render matches snapshot 1`] = ` "alignItems": "center", "alignSelf": "stretch", "backgroundColor": "#ffffff", - "borderColor": "#848c96", + "borderColor": "#b7bbc8", "borderRadius": 20, "borderWidth": 1, "flex": 1, @@ -675,12 +674,12 @@ exports[`StakeInputView render matches snapshot 1`] = ` accessibilityRole="none" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -697,7 +696,7 @@ exports[`StakeInputView render matches snapshot 1`] = ` "alignItems": "center", "alignSelf": "stretch", "backgroundColor": "#ffffff", - "borderColor": "#848c96", + "borderColor": "#b7bbc8", "borderRadius": 20, "borderWidth": 1, "flex": 1, @@ -709,7 +708,7 @@ exports[`StakeInputView render matches snapshot 1`] = ` } > <SvgMock - color="#141618" + color="#121314" height={16} name="Sparkle" style={ @@ -725,12 +724,12 @@ exports[`StakeInputView render matches snapshot 1`] = ` accessibilityRole="none" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -779,8 +778,8 @@ exports[`StakeInputView render matches snapshot 1`] = ` style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -810,7 +809,7 @@ exports[`StakeInputView render matches snapshot 1`] = ` undefined, [ { - "color": "#141618", + "color": "#121314", "fontSize": 30, "textAlign": "center", }, @@ -843,8 +842,8 @@ exports[`StakeInputView render matches snapshot 1`] = ` style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -874,7 +873,7 @@ exports[`StakeInputView render matches snapshot 1`] = ` undefined, [ { - "color": "#141618", + "color": "#121314", "fontSize": 30, "textAlign": "center", }, @@ -907,8 +906,8 @@ exports[`StakeInputView render matches snapshot 1`] = ` style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -938,7 +937,7 @@ exports[`StakeInputView render matches snapshot 1`] = ` undefined, [ { - "color": "#141618", + "color": "#121314", "fontSize": 30, "textAlign": "center", }, @@ -980,8 +979,8 @@ exports[`StakeInputView render matches snapshot 1`] = ` style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -1011,7 +1010,7 @@ exports[`StakeInputView render matches snapshot 1`] = ` undefined, [ { - "color": "#141618", + "color": "#121314", "fontSize": 30, "textAlign": "center", }, @@ -1044,8 +1043,8 @@ exports[`StakeInputView render matches snapshot 1`] = ` style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -1075,7 +1074,7 @@ exports[`StakeInputView render matches snapshot 1`] = ` undefined, [ { - "color": "#141618", + "color": "#121314", "fontSize": 30, "textAlign": "center", }, @@ -1108,8 +1107,8 @@ exports[`StakeInputView render matches snapshot 1`] = ` style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -1139,7 +1138,7 @@ exports[`StakeInputView render matches snapshot 1`] = ` undefined, [ { - "color": "#141618", + "color": "#121314", "fontSize": 30, "textAlign": "center", }, @@ -1181,8 +1180,8 @@ exports[`StakeInputView render matches snapshot 1`] = ` style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -1212,7 +1211,7 @@ exports[`StakeInputView render matches snapshot 1`] = ` undefined, [ { - "color": "#141618", + "color": "#121314", "fontSize": 30, "textAlign": "center", }, @@ -1245,8 +1244,8 @@ exports[`StakeInputView render matches snapshot 1`] = ` style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -1276,7 +1275,7 @@ exports[`StakeInputView render matches snapshot 1`] = ` undefined, [ { - "color": "#141618", + "color": "#121314", "fontSize": 30, "textAlign": "center", }, @@ -1309,8 +1308,8 @@ exports[`StakeInputView render matches snapshot 1`] = ` style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -1340,7 +1339,7 @@ exports[`StakeInputView render matches snapshot 1`] = ` undefined, [ { - "color": "#141618", + "color": "#121314", "fontSize": 30, "textAlign": "center", }, @@ -1380,8 +1379,8 @@ exports[`StakeInputView render matches snapshot 1`] = ` style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -1411,7 +1410,7 @@ exports[`StakeInputView render matches snapshot 1`] = ` undefined, [ { - "color": "#141618", + "color": "#121314", "fontSize": 30, "textAlign": "center", }, @@ -1444,8 +1443,8 @@ exports[`StakeInputView render matches snapshot 1`] = ` style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -1475,7 +1474,7 @@ exports[`StakeInputView render matches snapshot 1`] = ` undefined, [ { - "color": "#141618", + "color": "#121314", "fontSize": 30, "textAlign": "center", }, @@ -1515,7 +1514,7 @@ exports[`StakeInputView render matches snapshot 1`] = ` }, [ { - "color": "#141618", + "color": "#121314", "fontSize": 30, "textAlign": "center", }, @@ -1558,7 +1557,7 @@ exports[`StakeInputView render matches snapshot 1`] = ` { "alignItems": "center", "alignSelf": "stretch", - "backgroundColor": "#0376c9", + "backgroundColor": "#4459ff", "borderRadius": 24, "flexDirection": "row", "height": 48, @@ -1573,11 +1572,11 @@ exports[`StakeInputView render matches snapshot 1`] = ` style={ { "color": "#ffffff", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -1940,18 +1939,16 @@ exports[`StakeInputView when values are entered in the keypad updates ETH and fi accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > - Balance - : - 1.5 ETH + Balance: 1.5 ETH </Text> </View> <View @@ -1968,8 +1965,8 @@ exports[`StakeInputView when values are entered in the keypad updates ETH and fi accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", + "color": "#121314", + "fontFamily": "CentraNo1-Bold", "fontSize": 32, "fontWeight": "700", "letterSpacing": 0, @@ -1983,8 +1980,8 @@ exports[`StakeInputView when values are entered in the keypad updates ETH and fi accessibilityRole="text" style={ { - "color": "#9fa6ae", - "fontFamily": "EuclidCircularB-Bold", + "color": "#9ca1af", + "fontFamily": "CentraNo1-Bold", "fontSize": 32, "fontWeight": "700", "letterSpacing": 0, @@ -2006,7 +2003,7 @@ exports[`StakeInputView when values are entered in the keypad updates ETH and fi "alignItems": "center", "alignSelf": "flex-start", "backgroundColor": "#ffffff", - "borderColor": "#BBC0C566", + "borderColor": "#b7bbc866", "borderRadius": 16, "borderWidth": 1, "flexDirection": "row", @@ -2015,24 +2012,25 @@ exports[`StakeInputView when values are entered in the keypad updates ETH and fi "paddingHorizontal": 16, } } + testID="currency-toggle" > <Text accessibilityRole="none" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > 0 USD </Text> <SvgMock - color="#141618" + color="#121314" height={16} name="SwapVertical" style={ @@ -2050,7 +2048,7 @@ exports[`StakeInputView when values are entered in the keypad updates ETH and fi <View style={ { - "borderColor": "#BBC0C566", + "borderColor": "#b7bbc866", "padding": 16, "paddingBottom": 8, } @@ -2061,7 +2059,7 @@ exports[`StakeInputView when values are entered in the keypad updates ETH and fi { "alignItems": "center", "backgroundColor": "#ffffff", - "borderColor": "#848c96", + "borderColor": "#b7bbc8", "borderRadius": 8, "borderWidth": 1, "justifyContent": "center", @@ -2093,12 +2091,12 @@ exports[`StakeInputView when values are entered in the keypad updates ETH and fi accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -2109,7 +2107,7 @@ exports[`StakeInputView when values are entered in the keypad updates ETH and fi onPress={[Function]} > <SvgMock - color="#9fa6ae" + color="#9ca1af" height={16} name="Question" style={ @@ -2133,12 +2131,12 @@ exports[`StakeInputView when values are entered in the keypad updates ETH and fi accessibilityRole="text" style={ { - "color": "#1c8234", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, + "color": "#1c7e33", + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -2148,12 +2146,12 @@ exports[`StakeInputView when values are entered in the keypad updates ETH and fi accessibilityRole="text" style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 12, + "color": "#686e7d", + "fontFamily": "CentraNo1-Medium", + "fontSize": 14, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -2185,7 +2183,7 @@ exports[`StakeInputView when values are entered in the keypad updates ETH and fi "alignItems": "center", "alignSelf": "stretch", "backgroundColor": "#ffffff", - "borderColor": "#848c96", + "borderColor": "#b7bbc8", "borderRadius": 20, "borderWidth": 1, "flex": 1, @@ -2200,12 +2198,12 @@ exports[`StakeInputView when values are entered in the keypad updates ETH and fi accessibilityRole="none" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -2222,7 +2220,7 @@ exports[`StakeInputView when values are entered in the keypad updates ETH and fi "alignItems": "center", "alignSelf": "stretch", "backgroundColor": "#ffffff", - "borderColor": "#848c96", + "borderColor": "#b7bbc8", "borderRadius": 20, "borderWidth": 1, "flex": 1, @@ -2237,12 +2235,12 @@ exports[`StakeInputView when values are entered in the keypad updates ETH and fi accessibilityRole="none" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -2259,7 +2257,7 @@ exports[`StakeInputView when values are entered in the keypad updates ETH and fi "alignItems": "center", "alignSelf": "stretch", "backgroundColor": "#ffffff", - "borderColor": "#848c96", + "borderColor": "#b7bbc8", "borderRadius": 20, "borderWidth": 1, "flex": 1, @@ -2274,12 +2272,12 @@ exports[`StakeInputView when values are entered in the keypad updates ETH and fi accessibilityRole="none" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -2296,7 +2294,7 @@ exports[`StakeInputView when values are entered in the keypad updates ETH and fi "alignItems": "center", "alignSelf": "stretch", "backgroundColor": "#ffffff", - "borderColor": "#848c96", + "borderColor": "#b7bbc8", "borderRadius": 20, "borderWidth": 1, "flex": 1, @@ -2308,7 +2306,7 @@ exports[`StakeInputView when values are entered in the keypad updates ETH and fi } > <SvgMock - color="#141618" + color="#121314" height={16} name="Sparkle" style={ @@ -2324,12 +2322,12 @@ exports[`StakeInputView when values are entered in the keypad updates ETH and fi accessibilityRole="none" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -2378,8 +2376,8 @@ exports[`StakeInputView when values are entered in the keypad updates ETH and fi style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -2409,7 +2407,7 @@ exports[`StakeInputView when values are entered in the keypad updates ETH and fi undefined, [ { - "color": "#141618", + "color": "#121314", "fontSize": 30, "textAlign": "center", }, @@ -2442,8 +2440,8 @@ exports[`StakeInputView when values are entered in the keypad updates ETH and fi style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -2473,7 +2471,7 @@ exports[`StakeInputView when values are entered in the keypad updates ETH and fi undefined, [ { - "color": "#141618", + "color": "#121314", "fontSize": 30, "textAlign": "center", }, @@ -2506,8 +2504,8 @@ exports[`StakeInputView when values are entered in the keypad updates ETH and fi style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -2537,7 +2535,7 @@ exports[`StakeInputView when values are entered in the keypad updates ETH and fi undefined, [ { - "color": "#141618", + "color": "#121314", "fontSize": 30, "textAlign": "center", }, @@ -2579,8 +2577,8 @@ exports[`StakeInputView when values are entered in the keypad updates ETH and fi style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -2610,7 +2608,7 @@ exports[`StakeInputView when values are entered in the keypad updates ETH and fi undefined, [ { - "color": "#141618", + "color": "#121314", "fontSize": 30, "textAlign": "center", }, @@ -2643,8 +2641,8 @@ exports[`StakeInputView when values are entered in the keypad updates ETH and fi style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -2674,7 +2672,7 @@ exports[`StakeInputView when values are entered in the keypad updates ETH and fi undefined, [ { - "color": "#141618", + "color": "#121314", "fontSize": 30, "textAlign": "center", }, @@ -2707,8 +2705,8 @@ exports[`StakeInputView when values are entered in the keypad updates ETH and fi style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -2738,7 +2736,7 @@ exports[`StakeInputView when values are entered in the keypad updates ETH and fi undefined, [ { - "color": "#141618", + "color": "#121314", "fontSize": 30, "textAlign": "center", }, @@ -2780,8 +2778,8 @@ exports[`StakeInputView when values are entered in the keypad updates ETH and fi style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -2811,7 +2809,7 @@ exports[`StakeInputView when values are entered in the keypad updates ETH and fi undefined, [ { - "color": "#141618", + "color": "#121314", "fontSize": 30, "textAlign": "center", }, @@ -2844,8 +2842,8 @@ exports[`StakeInputView when values are entered in the keypad updates ETH and fi style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -2875,7 +2873,7 @@ exports[`StakeInputView when values are entered in the keypad updates ETH and fi undefined, [ { - "color": "#141618", + "color": "#121314", "fontSize": 30, "textAlign": "center", }, @@ -2908,8 +2906,8 @@ exports[`StakeInputView when values are entered in the keypad updates ETH and fi style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -2939,7 +2937,7 @@ exports[`StakeInputView when values are entered in the keypad updates ETH and fi undefined, [ { - "color": "#141618", + "color": "#121314", "fontSize": 30, "textAlign": "center", }, @@ -2979,8 +2977,8 @@ exports[`StakeInputView when values are entered in the keypad updates ETH and fi style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -3010,7 +3008,7 @@ exports[`StakeInputView when values are entered in the keypad updates ETH and fi undefined, [ { - "color": "#141618", + "color": "#121314", "fontSize": 30, "textAlign": "center", }, @@ -3043,8 +3041,8 @@ exports[`StakeInputView when values are entered in the keypad updates ETH and fi style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -3074,7 +3072,7 @@ exports[`StakeInputView when values are entered in the keypad updates ETH and fi undefined, [ { - "color": "#141618", + "color": "#121314", "fontSize": 30, "textAlign": "center", }, @@ -3114,7 +3112,7 @@ exports[`StakeInputView when values are entered in the keypad updates ETH and fi }, [ { - "color": "#141618", + "color": "#121314", "fontSize": 30, "textAlign": "center", }, @@ -3157,7 +3155,7 @@ exports[`StakeInputView when values are entered in the keypad updates ETH and fi { "alignItems": "center", "alignSelf": "stretch", - "backgroundColor": "#0376c9", + "backgroundColor": "#4459ff", "borderRadius": 24, "flexDirection": "row", "height": 48, @@ -3172,11 +3170,11 @@ exports[`StakeInputView when values are entered in the keypad updates ETH and fi style={ { "color": "#ffffff", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > diff --git a/app/components/UI/Earn/Views/EarnInputView/utils.test.ts b/app/components/UI/Earn/Views/EarnInputView/utils.test.ts new file mode 100644 index 000000000000..70abec41d82a --- /dev/null +++ b/app/components/UI/Earn/Views/EarnInputView/utils.test.ts @@ -0,0 +1,25 @@ +import { + EARN_INPUT_ACTION_TO_LABEL_MAP, + EARN_INPUT_VIEW_ACTIONS, +} from './EarnInputView.types'; +import { getEarnInputViewTitle } from './utils'; + +describe('EarnInputView Utils', () => { + describe('getEarnInputViewTitle', () => { + it('returns ETH staking title', () => { + const action = + EARN_INPUT_ACTION_TO_LABEL_MAP[EARN_INPUT_VIEW_ACTIONS.STAKE]; + + const result = getEarnInputViewTitle(EARN_INPUT_VIEW_ACTIONS.STAKE); + expect(result).toEqual(`${action}`); + }); + + it('returns stablecoin lending deposit title', () => { + const action = + EARN_INPUT_ACTION_TO_LABEL_MAP[EARN_INPUT_VIEW_ACTIONS.LEND]; + + const result = getEarnInputViewTitle(EARN_INPUT_VIEW_ACTIONS.LEND); + expect(result).toEqual(`${action}`); + }); + }); +}); diff --git a/app/components/UI/Earn/Views/EarnInputView/utils.ts b/app/components/UI/Earn/Views/EarnInputView/utils.ts new file mode 100644 index 000000000000..45fd4b25696b --- /dev/null +++ b/app/components/UI/Earn/Views/EarnInputView/utils.ts @@ -0,0 +1,10 @@ +import { + EARN_INPUT_ACTION_TO_LABEL_MAP, + EARN_INPUT_VIEW_ACTIONS, +} from './EarnInputView.types'; + +export const getEarnInputViewTitle = (action: EARN_INPUT_VIEW_ACTIONS) => { + const prefix = EARN_INPUT_ACTION_TO_LABEL_MAP[action]; + + return `${prefix}`; +}; diff --git a/app/components/UI/Stake/Views/UnstakeInputView/UnstakeInputView.styles.ts b/app/components/UI/Earn/Views/EarnWithdrawInputView/EarnWithdrawInputView.styles.ts similarity index 100% rename from app/components/UI/Stake/Views/UnstakeInputView/UnstakeInputView.styles.ts rename to app/components/UI/Earn/Views/EarnWithdrawInputView/EarnWithdrawInputView.styles.ts diff --git a/app/components/UI/Stake/Views/UnstakeInputView/UnstakeInputView.test.tsx b/app/components/UI/Earn/Views/EarnWithdrawInputView/EarnWithdrawInputView.test.tsx similarity index 74% rename from app/components/UI/Stake/Views/UnstakeInputView/UnstakeInputView.test.tsx rename to app/components/UI/Earn/Views/EarnWithdrawInputView/EarnWithdrawInputView.test.tsx index 6aef55bbd645..6ef4923b4970 100644 --- a/app/components/UI/Stake/Views/UnstakeInputView/UnstakeInputView.test.tsx +++ b/app/components/UI/Earn/Views/EarnWithdrawInputView/EarnWithdrawInputView.test.tsx @@ -1,14 +1,17 @@ import React from 'react'; import { fireEvent, screen } from '@testing-library/react-native'; -import UnstakeInputView from './UnstakeInputView'; +import EarnWithdrawInputView from './EarnWithdrawInputView'; import { renderScreen } from '../../../../../util/test/renderWithProvider'; import Routes from '../../../../../constants/navigation/Routes'; import { backgroundState } from '../../../../../util/test/initial-root-state'; import { + MOCK_ETH_MAINNET_ASSET, MOCK_GET_POOLED_STAKES_API_RESPONSE, MOCK_GET_VAULT_RESPONSE, MOCK_STAKED_ETH_MAINNET_ASSET, -} from '../../__mocks__/mockData'; +} from '../../../Stake/__mocks__/mockData'; +import { EarnWithdrawInputViewProps } from './EarnWithdrawInputView.types'; +import BN4 from 'bnjs4'; jest.mock('../../../../../selectors/multichain', () => ({ selectAccountTokensAcrossChains: jest.fn(() => ({ @@ -26,6 +29,18 @@ jest.mock('../../../../../selectors/multichain', () => ({ })), })); +const mockBalanceBN = new BN4('1000000000000000000'); + +const baseProps: EarnWithdrawInputViewProps = { + route: { + params: { + token: MOCK_ETH_MAINNET_ASSET, + }, + key: Routes.STAKING.UNSTAKE, + name: 'params', + }, +}; + function render(Component: React.ComponentType) { return renderScreen( Component, @@ -39,6 +54,7 @@ function render(Component: React.ComponentType) { }, }, }, + baseProps.route.params, ); } @@ -67,12 +83,15 @@ jest.mock('@react-navigation/native', () => { jest.mock('../../../../../selectors/currencyRateController.ts', () => ({ selectConversionRate: jest.fn(() => 2000), selectCurrentCurrency: jest.fn(() => 'USD'), + selectCurrencyRates: jest.fn(() => ({ + ETH: 2000, + })), })); const mockVaultMetadata = MOCK_GET_VAULT_RESPONSE; const mockPooledStakeData = MOCK_GET_POOLED_STAKES_API_RESPONSE.accounts[0]; -jest.mock('../../hooks/useStakingEligibility', () => ({ +jest.mock('../../../Stake/hooks/useStakingEligibility', () => ({ __esModule: true, default: () => ({ isEligible: true, @@ -82,7 +101,7 @@ jest.mock('../../hooks/useStakingEligibility', () => ({ }), })); -jest.mock('../../hooks/useVaultMetadata', () => ({ +jest.mock('../../../Stake/hooks/useVaultMetadata', () => ({ __esModule: true, default: () => ({ vaultMetadata: mockVaultMetadata, @@ -93,16 +112,17 @@ jest.mock('../../hooks/useVaultMetadata', () => ({ }), })); -jest.mock('../../hooks/useBalance', () => ({ +jest.mock('../../../Stake/hooks/useBalance', () => ({ __esModule: true, default: () => ({ + balanceWei: mockBalanceBN, stakedBalanceWei: mockPooledStakeData.assets, stakedBalanceFiat: MOCK_STAKED_ETH_MAINNET_ASSET.balanceFiat, formattedStakedBalanceETH: '5.79133 ETH', }), })); -jest.mock('../../hooks/usePoolStakedUnstake', () => ({ +jest.mock('../../../Stake/hooks/usePoolStakedUnstake', () => ({ __esModule: true, default: () => ({ attemptUnstakeTransaction: jest.fn().mockResolvedValue(undefined), @@ -116,14 +136,18 @@ jest.mock('../../../../../selectors/featureFlagController', () => ({ })); describe('UnstakeInputView', () => { + beforeEach(() => { + jest.useFakeTimers(); + }); + it('render matches snapshot', () => { - render(UnstakeInputView); + render(EarnWithdrawInputView); expect(screen.toJSON()).toMatchSnapshot(); }); describe('when values are entered in the keypad', () => { it('updates ETH and fiat values', () => { - render(UnstakeInputView); + render(EarnWithdrawInputView); fireEvent.press(screen.getByText('2')); @@ -133,7 +157,7 @@ describe('UnstakeInputView', () => { describe('currency toggle functionality', () => { it('switches between ETH and fiat correctly', () => { - render(UnstakeInputView); + render(EarnWithdrawInputView); expect(screen.getByText('ETH')).toBeTruthy(); fireEvent.press(screen.getByText('0 USD')); @@ -144,7 +168,7 @@ describe('UnstakeInputView', () => { describe('quick amount buttons', () => { it('handles 25% quick amount button press correctly', () => { - render(UnstakeInputView); + render(EarnWithdrawInputView); fireEvent.press(screen.getByText('25%')); @@ -154,13 +178,13 @@ describe('UnstakeInputView', () => { describe('stake button states', () => { it('displays `Enter amount` if input is 0', () => { - render(UnstakeInputView); + render(EarnWithdrawInputView); expect(screen.getByText('Enter amount')).toBeTruthy(); }); it('displays `Review` on stake button if input is valid', () => { - render(UnstakeInputView); + render(EarnWithdrawInputView); fireEvent.press(screen.getByText('1')); @@ -168,7 +192,7 @@ describe('UnstakeInputView', () => { }); it('displays `Not enough ETH` when input exceeds balance', () => { - render(UnstakeInputView); + render(EarnWithdrawInputView); fireEvent.press(screen.getByText('8')); expect(screen.queryAllByText('Not enough ETH')).toHaveLength(2); @@ -180,7 +204,9 @@ describe('UnstakeInputView', () => { let mockAttemptUnstakeTransaction: jest.Mock; beforeEach(() => { - originalMock = jest.requireMock('../../../../../selectors/featureFlagController').selectConfirmationRedesignFlags as jest.Mock; + originalMock = jest.requireMock( + '../../../../../selectors/featureFlagController', + ).selectConfirmationRedesignFlags as jest.Mock; jest.requireMock( '../../../../../selectors/featureFlagController', @@ -189,30 +215,34 @@ describe('UnstakeInputView', () => { })); mockAttemptUnstakeTransaction = jest.fn().mockResolvedValue(undefined); - jest.requireMock('../../hooks/usePoolStakedUnstake').default = () => ({ - attemptUnstakeTransaction: mockAttemptUnstakeTransaction, - }); + jest.requireMock('../../../Stake/hooks/usePoolStakedUnstake').default = + () => ({ + attemptUnstakeTransaction: mockAttemptUnstakeTransaction, + }); }); afterEach(() => { - jest.requireMock('../../../../../selectors/featureFlagController').selectConfirmationRedesignFlags = originalMock; + jest.requireMock( + '../../../../../selectors/featureFlagController', + ).selectConfirmationRedesignFlags = originalMock; }); it('calls attemptUnstakeTransaction when Review button is pressed', async () => { - render(UnstakeInputView); + render(EarnWithdrawInputView); fireEvent.press(screen.getByText('1')); fireEvent.press(screen.getByText('Review')); + jest.useRealTimers(); // Wait for the async operation to complete - await new Promise(resolve => setTimeout(resolve, 0)); + await new Promise((resolve) => setTimeout(resolve, 0)); expect(mockAttemptUnstakeTransaction).toHaveBeenCalled(); expect(mockNavigate).toHaveBeenCalledWith('StakeScreens', { screen: Routes.STANDALONE_CONFIRMATIONS.STAKE_WITHDRAWAL, params: expect.objectContaining({ - amountWei: expect.any(String), + amountWei: expect.any(String), amountFiat: expect.any(String), }), }); diff --git a/app/components/UI/Stake/Views/UnstakeInputView/UnstakeInputView.tsx b/app/components/UI/Earn/Views/EarnWithdrawInputView/EarnWithdrawInputView.tsx similarity index 50% rename from app/components/UI/Stake/Views/UnstakeInputView/UnstakeInputView.tsx rename to app/components/UI/Earn/Views/EarnWithdrawInputView/EarnWithdrawInputView.tsx index 5b828b0e9f11..38c1ea4931e6 100644 --- a/app/components/UI/Stake/Views/UnstakeInputView/UnstakeInputView.tsx +++ b/app/components/UI/Earn/Views/EarnWithdrawInputView/EarnWithdrawInputView.tsx @@ -1,5 +1,8 @@ -import { useFocusEffect, useNavigation } from '@react-navigation/native'; -import { StackNavigationProp } from '@react-navigation/stack'; +import { + useFocusEffect, + useNavigation, + useRoute, +} from '@react-navigation/native'; import React, { useCallback, useEffect, useState } from 'react'; import { View } from 'react-native'; import { useSelector } from 'react-redux'; @@ -12,85 +15,161 @@ import Button, { import { TextVariant } from '../../../../../component-library/components/Texts/Text'; import Routes from '../../../../../constants/navigation/Routes'; import { selectSelectedInternalAccount } from '../../../../../selectors/accountsController'; -import { selectConfirmationRedesignFlags } from '../../../../../selectors/featureFlagController'; import Keypad from '../../../../Base/Keypad'; import { MetaMetricsEvents, useMetrics } from '../../../../hooks/useMetrics'; import { useStyles } from '../../../../hooks/useStyles'; import { getStakingNavbar } from '../../../Navbar'; import ScreenLayout from '../../../Ramp/components/ScreenLayout'; import InputDisplay from '../../components/InputDisplay'; -import QuickAmounts from '../../components/QuickAmounts'; -import { EVENT_LOCATIONS, EVENT_PROVIDERS } from '../../constants/events'; -import usePoolStakedUnstake from '../../hooks/usePoolStakedUnstake'; -import useUnstakingInputHandlers from '../../hooks/useUnstakingInput'; -import { StakeNavigationParamsList } from '../../types'; -import { withMetaMetrics } from '../../utils/metaMetrics/withMetaMetrics'; +import QuickAmounts from '../../../Stake/components/QuickAmounts'; +import { + EVENT_LOCATIONS, + EVENT_PROVIDERS, +} from '../../../Stake/constants/events'; +import usePoolStakedUnstake from '../../../Stake/hooks/usePoolStakedUnstake'; +import useEarnWithdrawInput from '../../../Earn/hooks/useEarnWithdrawInput'; +import { StakeNavigationParamsList } from '../../../Stake/types'; +import { withMetaMetrics } from '../../../Stake/utils/metaMetrics/withMetaMetrics'; import UnstakeInputViewBanner from './UnstakeBanner'; -import styleSheet from './UnstakeInputView.styles'; +import styleSheet from './EarnWithdrawInputView.styles'; +import { selectConfirmationRedesignFlags } from '../../../../../selectors/featureFlagController'; +import { EarnWithdrawInputViewProps } from './EarnWithdrawInputView.types'; +import { useEarnTokenDetails } from '../../hooks/useEarnTokenDetails'; +import { RootState } from '../../../../../reducers'; +import { selectConversionRate } from '../../../../../selectors/currencyRateController'; +import { Hex } from '@metamask/utils'; +import { selectContractExchangeRatesByChainId } from '../../../../../selectors/tokenRatesController'; +import { StackNavigationProp } from '@react-navigation/stack'; +import { isStablecoinLendingFeatureEnabled } from '../../../Stake/constants'; -const UnstakeInputView = () => { +const EarnWithdrawInputView = () => { + const route = useRoute<EarnWithdrawInputViewProps['route']>(); + const { token } = route.params; + const { getTokenWithBalanceAndApr } = useEarnTokenDetails(); + const earnToken = getTokenWithBalanceAndApr(token); const title = strings('stake.unstake_eth'); - const navigation = useNavigation<StackNavigationProp<StakeNavigationParamsList>>(); + const navigation = + useNavigation<StackNavigationProp<StakeNavigationParamsList>>(); const { styles, theme } = useStyles(styleSheet, {}); const { attemptUnstakeTransaction } = usePoolStakedUnstake(); const activeAccount = useSelector(selectSelectedInternalAccount); const confirmationRedesignFlags = useSelector( - selectConfirmationRedesignFlags, - ); + selectConfirmationRedesignFlags, + ); + + const conversionRate = useSelector(selectConversionRate) ?? 1; + const contractExchangeRates = useSelector((state: RootState) => + selectContractExchangeRatesByChainId(state, token.chainId as Hex), + ); + const exchangeRate = contractExchangeRates?.[token.address as Hex]?.price; const { trackEvent, createEventBuilder } = useMetrics(); const { - isEth, + isFiat, currentCurrency, isNonZeroAmount, - amountEth, - amountWei, - fiatAmount, + amountToken, + amountTokenMinimalUnit, + amountFiatNumber, isOverMaximum, handleCurrencySwitch, currencyToggleValue, percentageOptions, handleQuickAmountPress, handleKeypadChange, - stakedBalanceValue, - } = useUnstakingInputHandlers(); + earnBalanceValue, + } = useEarnWithdrawInput({ + earnToken, + conversionRate, + exchangeRate, + }); const stakedBalanceText = strings('stake.staked_balance'); - const buttonLabel = !isNonZeroAmount - ? strings('stake.enter_amount') - : isOverMaximum - ? strings('stake.not_enough_eth') - : strings('stake.review'); + const getButtonLabel = () => { + if (!isNonZeroAmount) { + return strings('stake.enter_amount'); + } + if (isOverMaximum.isOverMaximumToken) { + return strings('stake.not_enough_token', { + ticker: earnToken.ticker ?? earnToken.symbol, + }); + } + if (isOverMaximum.isOverMaximumEth) { + return strings('stake.not_enough_eth'); + } + return strings('stake.review'); + }; + + const buttonLabel = getButtonLabel(); + const stakingNavBarOptions = { + hasCancelButton: true, + hasBackButton: false, + }; + const stakingNavBarEventOptions = { + cancelButtonEvent: { + event: MetaMetricsEvents.UNSTAKE_CANCEL_CLICKED, + properties: { + selected_provider: EVENT_PROVIDERS.CONSENSYS, + location: EVENT_LOCATIONS.UNSTAKE_INPUT_VIEW, + }, + }, + }; + const earnNavBarOptions = { + hasCancelButton: false, + hasBackButton: true, + hasIconButton: true, + // TODO: STAKE-903 + // handleIconPress: ???, + }; + const earnNavBarEventOptions = { + backButtonEvent: { + event: MetaMetricsEvents.UNSTAKE_CANCEL_CLICKED, + properties: { + selected_provider: EVENT_PROVIDERS.CONSENSYS, + location: EVENT_LOCATIONS.UNSTAKE_INPUT_VIEW, + }, + }, + // TODO: STAKE-903 + // iconButtonEvent: { + // event: MetaMetricsEvents.TOOLTIP_OPENED, + // properties: { + // selected_provider: EVENT_PROVIDERS.CONSENSYS, + // text: 'Tooltip Opened', + // location: EVENT_LOCATIONS.UNSTAKE_CANCEL_CLICKED, + // tooltip_name: '???', + // }, + // }, + }; + const isStablecoinLendingEnabled = isStablecoinLendingFeatureEnabled(); + const navBarOptions = isStablecoinLendingEnabled + ? earnNavBarOptions + : stakingNavBarOptions; + const navBarEventOptions = isStablecoinLendingEnabled + ? earnNavBarEventOptions + : stakingNavBarEventOptions; useEffect(() => { navigation.setOptions( getStakingNavbar( title, navigation, theme.colors, - { - hasBackButton: false, - }, - { - cancelButtonEvent: { - event: MetaMetricsEvents.UNSTAKE_CANCEL_CLICKED, - properties: { - selected_provider: EVENT_PROVIDERS.CONSENSYS, - location: EVENT_LOCATIONS.UNSTAKE_INPUT_VIEW, - }, - }, - }, + navBarOptions, + navBarEventOptions, ), ); - }, [navigation, theme.colors, title]); + }, [navigation, theme.colors, title, navBarOptions, navBarEventOptions]); - const [isSubmittingStakeWithdrawalTransaction, setIsSubmittingStakeWithdrawalTransaction] = useState(false); + const [ + isSubmittingStakeWithdrawalTransaction, + setIsSubmittingStakeWithdrawalTransaction, + ] = useState(false); useFocusEffect( useCallback(() => { setIsSubmittingStakeWithdrawalTransaction(false); - }, []) + }, []), ); const handleUnstakePress = useCallback(async () => { @@ -99,8 +178,8 @@ const UnstakeInputView = () => { const unstakeButtonClickEventProperties = { selected_provider: EVENT_PROVIDERS.CONSENSYS, - tokens_to_stake_native_value: amountEth, - tokens_to_stake_usd_value: fiatAmount, + tokens_to_stake_native_value: amountToken, + tokens_to_stake_usd_value: amountFiatNumber, }; if (isStakingDepositRedesignedEnabled) { @@ -113,15 +192,15 @@ const UnstakeInputView = () => { // metadata object being defined by the time the confirmation is displayed // to the user. await attemptUnstakeTransaction( - amountWei.toString(), + amountTokenMinimalUnit.toString(), activeAccount?.address as string, ); navigation.navigate('StakeScreens', { screen: Routes.STANDALONE_CONFIRMATIONS.STAKE_WITHDRAWAL, params: { - amountWei: amountWei.toString(), - amountFiat: fiatAmount, + amountWei: amountTokenMinimalUnit.toString(), + amountFiat: amountFiatNumber, }, }); @@ -138,11 +217,12 @@ const UnstakeInputView = () => { return; } + navigation.navigate('StakeScreens', { screen: Routes.STAKING.UNSTAKE_CONFIRMATION, params: { - amountWei: amountWei.toString(), - amountFiat: fiatAmount, + amountWei: amountTokenMinimalUnit.toString(), + amountFiat: amountFiatNumber, }, }); @@ -152,10 +232,10 @@ const UnstakeInputView = () => { .build(), ); }, [ - amountEth, - amountWei, + amountToken, + amountTokenMinimalUnit, createEventBuilder, - fiatAmount, + amountFiatNumber, navigation, trackEvent, attemptUnstakeTransaction, @@ -168,11 +248,12 @@ const UnstakeInputView = () => { <InputDisplay isOverMaximum={isOverMaximum} balanceText={stakedBalanceText} - balanceValue={stakedBalanceValue} + balanceValue={earnBalanceValue} isNonZeroAmount={isNonZeroAmount} - amountEth={amountEth} - fiatAmount={fiatAmount} - isEth={isEth} + amountToken={amountToken} + amountFiatNumber={amountFiatNumber} + isFiat={isFiat} + ticker={earnToken.ticker ?? earnToken.symbol} currentCurrency={currentCurrency} handleCurrencySwitch={withMetaMetrics(handleCurrencySwitch, { event: MetaMetricsEvents.UNSTAKE_INPUT_CURRENCY_SWITCH_CLICKED, @@ -181,7 +262,7 @@ const UnstakeInputView = () => { text: 'Currency Switch Trigger', location: EVENT_LOCATIONS.UNSTAKE_INPUT_VIEW, // We want to track the currency switching to. Not the current currency. - currency_type: isEth ? 'fiat' : 'native', + currency_type: isFiat ? 'native' : 'fiat', }, })} currencyToggleValue={currencyToggleValue} @@ -196,17 +277,19 @@ const UnstakeInputView = () => { location: EVENT_LOCATIONS.UNSTAKE_INPUT_VIEW, amount: value, is_max: value === 1, - mode: isEth ? 'native' : 'fiat', + mode: isFiat ? 'fiat' : 'native', }, })({ value }) } /> <Keypad - value={isEth ? amountEth : fiatAmount} + value={isFiat ? amountFiatNumber : amountToken} onChange={handleKeypadChange} style={styles.keypad} - currency={'ETH'} - decimals={isEth ? 5 : 2} + // TODO: this should be the underlying token symbol/ticker if not ETH + // once this data is available in the state we can use that + currency={token.isETH ? 'ETH' : token.ticker ?? token.symbol} + decimals={isFiat ? 2 : 5} /> <View style={styles.reviewButtonContainer}> <Button @@ -215,7 +298,12 @@ const UnstakeInputView = () => { labelTextVariant={TextVariant.BodyMDMedium} variant={ButtonVariants.Primary} loading={isSubmittingStakeWithdrawalTransaction} - isDisabled={isOverMaximum || !isNonZeroAmount || isSubmittingStakeWithdrawalTransaction} + isDisabled={ + isOverMaximum.isOverMaximumToken || + isOverMaximum.isOverMaximumEth || + !isNonZeroAmount || + isSubmittingStakeWithdrawalTransaction + } width={ButtonWidthTypes.Full} onPress={handleUnstakePress} /> @@ -224,4 +312,4 @@ const UnstakeInputView = () => { ); }; -export default UnstakeInputView; +export default EarnWithdrawInputView; diff --git a/app/components/UI/Earn/Views/EarnWithdrawInputView/EarnWithdrawInputView.types.ts b/app/components/UI/Earn/Views/EarnWithdrawInputView/EarnWithdrawInputView.types.ts new file mode 100644 index 000000000000..c59c426c0039 --- /dev/null +++ b/app/components/UI/Earn/Views/EarnWithdrawInputView/EarnWithdrawInputView.types.ts @@ -0,0 +1,10 @@ +import { RouteProp } from '@react-navigation/native'; +import { TokenI } from '../../../Tokens/types'; + +interface EarnWithdrawInputViewRouteParams { + token: TokenI; +} + +export interface EarnWithdrawInputViewProps { + route: RouteProp<{ params: EarnWithdrawInputViewRouteParams }, 'params'>; +} diff --git a/app/components/UI/Stake/Views/UnstakeInputView/UnstakeBanner.tsx b/app/components/UI/Earn/Views/EarnWithdrawInputView/UnstakeBanner.tsx similarity index 100% rename from app/components/UI/Stake/Views/UnstakeInputView/UnstakeBanner.tsx rename to app/components/UI/Earn/Views/EarnWithdrawInputView/UnstakeBanner.tsx diff --git a/app/components/UI/Stake/Views/UnstakeInputView/__snapshots__/UnstakeInputView.test.tsx.snap b/app/components/UI/Earn/Views/EarnWithdrawInputView/__snapshots__/EarnWithdrawInputView.test.tsx.snap similarity index 92% rename from app/components/UI/Stake/Views/UnstakeInputView/__snapshots__/UnstakeInputView.test.tsx.snap rename to app/components/UI/Earn/Views/EarnWithdrawInputView/__snapshots__/EarnWithdrawInputView.test.tsx.snap index 37fb9e2a51d4..345911582578 100644 --- a/app/components/UI/Stake/Views/UnstakeInputView/__snapshots__/UnstakeInputView.test.tsx.snap +++ b/app/components/UI/Earn/Views/EarnWithdrawInputView/__snapshots__/EarnWithdrawInputView.test.tsx.snap @@ -133,8 +133,8 @@ exports[`UnstakeInputView render matches snapshot 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", + "color": "#121314", + "fontFamily": "CentraNo1-Bold", "fontSize": 18, "fontWeight": "700", "letterSpacing": 0, @@ -173,8 +173,8 @@ exports[`UnstakeInputView render matches snapshot 1`] = ` <Text style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Regular", + "color": "#4459ff", + "fontFamily": "CentraNo1-Book", "fontSize": 14, "fontWeight": "400", } @@ -398,18 +398,16 @@ exports[`UnstakeInputView render matches snapshot 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > - Staked balance - : - 5.79133 ETH + Staked balance: 5.79133 ETH </Text> </View> <View @@ -426,8 +424,8 @@ exports[`UnstakeInputView render matches snapshot 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", + "color": "#121314", + "fontFamily": "CentraNo1-Bold", "fontSize": 32, "fontWeight": "700", "letterSpacing": 0, @@ -441,8 +439,8 @@ exports[`UnstakeInputView render matches snapshot 1`] = ` accessibilityRole="text" style={ { - "color": "#9fa6ae", - "fontFamily": "EuclidCircularB-Bold", + "color": "#9ca1af", + "fontFamily": "CentraNo1-Bold", "fontSize": 32, "fontWeight": "700", "letterSpacing": 0, @@ -464,7 +462,7 @@ exports[`UnstakeInputView render matches snapshot 1`] = ` "alignItems": "center", "alignSelf": "flex-start", "backgroundColor": "#ffffff", - "borderColor": "#BBC0C566", + "borderColor": "#b7bbc866", "borderRadius": 16, "borderWidth": 1, "flexDirection": "row", @@ -473,24 +471,25 @@ exports[`UnstakeInputView render matches snapshot 1`] = ` "paddingHorizontal": 16, } } + testID="currency-toggle" > <Text accessibilityRole="none" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > 0 USD </Text> <SvgMock - color="#141618" + color="#121314" height={16} name="SwapVertical" style={ @@ -508,8 +507,8 @@ exports[`UnstakeInputView render matches snapshot 1`] = ` <View style={ { - "backgroundColor": "#0376C91A", - "borderColor": "#0376c9", + "backgroundColor": "#4459ff1a", + "borderColor": "#4459ff", "borderLeftWidth": 4, "borderRadius": 4, "flexDirection": "row", @@ -529,7 +528,7 @@ exports[`UnstakeInputView render matches snapshot 1`] = ` } > <SvgMock - color="#0376c9" + color="#4459ff" height={24} name="Info" style={ @@ -552,12 +551,12 @@ exports[`UnstakeInputView render matches snapshot 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -587,7 +586,7 @@ exports[`UnstakeInputView render matches snapshot 1`] = ` "alignItems": "center", "alignSelf": "stretch", "backgroundColor": "#ffffff", - "borderColor": "#848c96", + "borderColor": "#b7bbc8", "borderRadius": 20, "borderWidth": 1, "flex": 1, @@ -602,12 +601,12 @@ exports[`UnstakeInputView render matches snapshot 1`] = ` accessibilityRole="none" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -624,7 +623,7 @@ exports[`UnstakeInputView render matches snapshot 1`] = ` "alignItems": "center", "alignSelf": "stretch", "backgroundColor": "#ffffff", - "borderColor": "#848c96", + "borderColor": "#b7bbc8", "borderRadius": 20, "borderWidth": 1, "flex": 1, @@ -639,12 +638,12 @@ exports[`UnstakeInputView render matches snapshot 1`] = ` accessibilityRole="none" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -661,7 +660,7 @@ exports[`UnstakeInputView render matches snapshot 1`] = ` "alignItems": "center", "alignSelf": "stretch", "backgroundColor": "#ffffff", - "borderColor": "#848c96", + "borderColor": "#b7bbc8", "borderRadius": 20, "borderWidth": 1, "flex": 1, @@ -676,12 +675,12 @@ exports[`UnstakeInputView render matches snapshot 1`] = ` accessibilityRole="none" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -698,7 +697,7 @@ exports[`UnstakeInputView render matches snapshot 1`] = ` "alignItems": "center", "alignSelf": "stretch", "backgroundColor": "#ffffff", - "borderColor": "#848c96", + "borderColor": "#b7bbc8", "borderRadius": 20, "borderWidth": 1, "flex": 1, @@ -710,7 +709,7 @@ exports[`UnstakeInputView render matches snapshot 1`] = ` } > <SvgMock - color="#141618" + color="#121314" height={16} name="Sparkle" style={ @@ -726,12 +725,12 @@ exports[`UnstakeInputView render matches snapshot 1`] = ` accessibilityRole="none" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -780,8 +779,8 @@ exports[`UnstakeInputView render matches snapshot 1`] = ` style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -811,7 +810,7 @@ exports[`UnstakeInputView render matches snapshot 1`] = ` undefined, [ { - "color": "#141618", + "color": "#121314", "fontSize": 30, "textAlign": "center", }, @@ -844,8 +843,8 @@ exports[`UnstakeInputView render matches snapshot 1`] = ` style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -875,7 +874,7 @@ exports[`UnstakeInputView render matches snapshot 1`] = ` undefined, [ { - "color": "#141618", + "color": "#121314", "fontSize": 30, "textAlign": "center", }, @@ -908,8 +907,8 @@ exports[`UnstakeInputView render matches snapshot 1`] = ` style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -939,7 +938,7 @@ exports[`UnstakeInputView render matches snapshot 1`] = ` undefined, [ { - "color": "#141618", + "color": "#121314", "fontSize": 30, "textAlign": "center", }, @@ -981,8 +980,8 @@ exports[`UnstakeInputView render matches snapshot 1`] = ` style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -1012,7 +1011,7 @@ exports[`UnstakeInputView render matches snapshot 1`] = ` undefined, [ { - "color": "#141618", + "color": "#121314", "fontSize": 30, "textAlign": "center", }, @@ -1045,8 +1044,8 @@ exports[`UnstakeInputView render matches snapshot 1`] = ` style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -1076,7 +1075,7 @@ exports[`UnstakeInputView render matches snapshot 1`] = ` undefined, [ { - "color": "#141618", + "color": "#121314", "fontSize": 30, "textAlign": "center", }, @@ -1109,8 +1108,8 @@ exports[`UnstakeInputView render matches snapshot 1`] = ` style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -1140,7 +1139,7 @@ exports[`UnstakeInputView render matches snapshot 1`] = ` undefined, [ { - "color": "#141618", + "color": "#121314", "fontSize": 30, "textAlign": "center", }, @@ -1182,8 +1181,8 @@ exports[`UnstakeInputView render matches snapshot 1`] = ` style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -1213,7 +1212,7 @@ exports[`UnstakeInputView render matches snapshot 1`] = ` undefined, [ { - "color": "#141618", + "color": "#121314", "fontSize": 30, "textAlign": "center", }, @@ -1246,8 +1245,8 @@ exports[`UnstakeInputView render matches snapshot 1`] = ` style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -1277,7 +1276,7 @@ exports[`UnstakeInputView render matches snapshot 1`] = ` undefined, [ { - "color": "#141618", + "color": "#121314", "fontSize": 30, "textAlign": "center", }, @@ -1310,8 +1309,8 @@ exports[`UnstakeInputView render matches snapshot 1`] = ` style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -1341,7 +1340,7 @@ exports[`UnstakeInputView render matches snapshot 1`] = ` undefined, [ { - "color": "#141618", + "color": "#121314", "fontSize": 30, "textAlign": "center", }, @@ -1381,8 +1380,8 @@ exports[`UnstakeInputView render matches snapshot 1`] = ` style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -1412,7 +1411,7 @@ exports[`UnstakeInputView render matches snapshot 1`] = ` undefined, [ { - "color": "#141618", + "color": "#121314", "fontSize": 30, "textAlign": "center", }, @@ -1445,8 +1444,8 @@ exports[`UnstakeInputView render matches snapshot 1`] = ` style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -1476,7 +1475,7 @@ exports[`UnstakeInputView render matches snapshot 1`] = ` undefined, [ { - "color": "#141618", + "color": "#121314", "fontSize": 30, "textAlign": "center", }, @@ -1516,7 +1515,7 @@ exports[`UnstakeInputView render matches snapshot 1`] = ` }, [ { - "color": "#141618", + "color": "#121314", "fontSize": 30, "textAlign": "center", }, @@ -1559,7 +1558,7 @@ exports[`UnstakeInputView render matches snapshot 1`] = ` { "alignItems": "center", "alignSelf": "stretch", - "backgroundColor": "#0376c9", + "backgroundColor": "#4459ff", "borderRadius": 24, "flexDirection": "row", "height": 48, @@ -1574,11 +1573,11 @@ exports[`UnstakeInputView render matches snapshot 1`] = ` style={ { "color": "#ffffff", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > diff --git a/app/components/UI/Earn/components/CurrencySwitch.test.tsx b/app/components/UI/Earn/components/CurrencySwitch.test.tsx new file mode 100644 index 000000000000..c5b51f7663f2 --- /dev/null +++ b/app/components/UI/Earn/components/CurrencySwitch.test.tsx @@ -0,0 +1,68 @@ +import { fireEvent } from '@testing-library/react-native'; +import React from 'react'; +import renderWithProvider from '../../../../util/test/renderWithProvider'; +import { isStablecoinLendingFeatureEnabled } from '../../Stake/constants'; +import CurrencyToggle from './CurrencySwitch'; + +jest.mock('../../Stake/constants', () => ({ + isStablecoinLendingFeatureEnabled: jest.fn(), +})); + +describe('CurrencyToggle', () => { + const mockProps = { + onPress: jest.fn(), + value: '200.00', + }; + + beforeEach(() => { + jest.clearAllMocks(); + }); + + it('renders correctly when stablecoin lending is disabled', () => { + (isStablecoinLendingFeatureEnabled as jest.Mock).mockReturnValue(false); + + const { getByTestId, getByText } = renderWithProvider( + <CurrencyToggle {...mockProps} />, + ); + + expect(getByTestId('currency-toggle')).toBeTruthy(); + expect(getByText('200.00')).toBeTruthy(); + }); + + it('renders correctly when stablecoin lending is enabled and usd is currency', () => { + (isStablecoinLendingFeatureEnabled as jest.Mock).mockReturnValue(true); + + const { getByTestId, getByText } = renderWithProvider( + <CurrencyToggle {...mockProps} />, + ); + + expect(getByTestId('currency-toggle')).toBeTruthy(); + expect(getByText('200.00')).toBeTruthy(); + }); + + it('calls onPress when button is pressed', () => { + (isStablecoinLendingFeatureEnabled as jest.Mock).mockReturnValue(false); + + const { getByTestId } = renderWithProvider( + <CurrencyToggle {...mockProps} />, + ); + + fireEvent.press(getByTestId('currency-toggle')); + expect(mockProps.onPress).toHaveBeenCalledTimes(1); + }); + + it('renders with correct styles', () => { + (isStablecoinLendingFeatureEnabled as jest.Mock).mockReturnValue(false); + + const { getByTestId } = renderWithProvider( + <CurrencyToggle {...mockProps} />, + ); + + const button = getByTestId('currency-toggle'); + expect(button.props.style).toMatchObject({ + backgroundColor: expect.any(String), + borderColor: expect.any(String), + borderWidth: 1, + }); + }); +}); diff --git a/app/components/UI/Earn/components/CurrencySwitch.tsx b/app/components/UI/Earn/components/CurrencySwitch.tsx new file mode 100644 index 000000000000..f89cc7390849 --- /dev/null +++ b/app/components/UI/Earn/components/CurrencySwitch.tsx @@ -0,0 +1,96 @@ +import React from 'react'; +import { StyleSheet, View } from 'react-native'; +import { TouchableOpacity } from 'react-native-gesture-handler'; +import Icon, { + IconName, + IconSize, +} from '../../../../component-library/components/Icons/Icon'; +import Text, { + TextColor, + TextVariant, +} from '../../../../component-library/components/Texts/Text'; +import { useTheme } from '../../../../util/theme'; +import type { Colors } from '../../../../util/theme/models'; +import ButtonBase from '../../../../component-library/components/Buttons/Button/foundation/ButtonBase'; +import { + ButtonSize, + ButtonWidthTypes, +} from '../../../../component-library/components/Buttons/Button'; +import { isStablecoinLendingFeatureEnabled } from '../../Stake/constants'; + +const createStyles = (colors: Colors) => + StyleSheet.create({ + currencyToggleButton: { + flexDirection: 'row', + justifyContent: 'center', + alignItems: 'center', + backgroundColor: colors.background.default, + borderColor: colors.border.muted, + borderWidth: 1, + }, + currencyToggleText: { + flexDirection: 'row', + alignItems: 'center', + }, + currencyToggleButtonContainer: { + backgroundColor: colors.background.default, + }, + currencyToggleIcon: { + marginLeft: 4, + alignItems: 'center', + }, + }); + +interface CurrencyToggleProps { + onPress: () => void; + value: string; +} + +const CurrencyToggle = ({ onPress, value }: CurrencyToggleProps) => { + const { colors } = useTheme(); + const styles = createStyles(colors); + const isStablecoinLendingEnabled = isStablecoinLendingFeatureEnabled(); + + if (isStablecoinLendingEnabled) { + return ( + <View + testID="currency-toggle" + style={styles.currencyToggleButtonContainer} + > + <TouchableOpacity + activeOpacity={0.5} + onPress={onPress} + style={styles.currencyToggleText} + > + <View style={styles.currencyToggleText}> + <Text color={TextColor.Default} variant={TextVariant.BodyMDMedium}> + {value} + </Text> + </View> + <View style={styles.currencyToggleIcon}> + <Icon + name={IconName.SwapVertical} + size={IconSize.Sm} + color={colors.text.default} + /> + </View> + </TouchableOpacity> + </View> + ); + } + return ( + <ButtonBase + testID="currency-toggle" + onPress={onPress} + size={ButtonSize.Sm} + width={ButtonWidthTypes.Auto} + label={`${value}`} + labelColor={TextColor.Default} + labelTextVariant={TextVariant.BodyMDMedium} + endIconName={IconName.SwapVertical} + style={styles.currencyToggleButton} + /> + ); +}; + +export default CurrencyToggle; diff --git a/app/components/UI/Stake/components/EarnTokenList/EarnTokenList.styles.ts b/app/components/UI/Earn/components/EarnTokenList/EarnTokenList.styles.ts similarity index 100% rename from app/components/UI/Stake/components/EarnTokenList/EarnTokenList.styles.ts rename to app/components/UI/Earn/components/EarnTokenList/EarnTokenList.styles.ts diff --git a/app/components/UI/Stake/components/EarnTokenList/EarnTokenList.test.tsx b/app/components/UI/Earn/components/EarnTokenList/EarnTokenList.test.tsx similarity index 93% rename from app/components/UI/Stake/components/EarnTokenList/EarnTokenList.test.tsx rename to app/components/UI/Earn/components/EarnTokenList/EarnTokenList.test.tsx index 641adb221a2a..f28d49fcc833 100644 --- a/app/components/UI/Stake/components/EarnTokenList/EarnTokenList.test.tsx +++ b/app/components/UI/Earn/components/EarnTokenList/EarnTokenList.test.tsx @@ -7,13 +7,15 @@ import initialRootState from '../../../../../util/test/initial-root-state'; import { Metrics, SafeAreaProvider } from 'react-native-safe-area-context'; import { strings } from '../../../../../../locales/i18n'; import { + MOCK_ETH_MAINNET_ASSET, MOCK_SUPPORTED_EARN_TOKENS_NO_FIAT_BALANCE, MOCK_USDC_BASE_MAINNET_ASSET, -} from '../../__mocks__/mockData'; + MOCK_USDC_MAINNET_ASSET, +} from '../../../Stake/__mocks__/mockData'; import Engine from '../../../../../core/Engine'; import * as tokenUtils from '../../../Earn/utils/token'; -import * as useStakingEligibilityHook from '../../hooks/useStakingEligibility'; -import * as stakeConstants from '../../constants'; +import * as useStakingEligibilityHook from '../../../Stake/hooks/useStakingEligibility'; +import * as stakeConstants from '../../../Stake/constants'; import * as portfolioNetworkUtils from '../../../../../util/networks'; import { act, fireEvent } from '@testing-library/react-native'; @@ -38,7 +40,7 @@ jest.mock('../../../../../util/networks', () => ({ isPortfolioViewEnabled: jest.fn().mockReturnValue(true), })); -jest.mock('../../constants', () => ({ +jest.mock('../../../Stake/constants', () => ({ isStablecoinLendingFeatureEnabled: jest.fn().mockReturnValue(true), })); @@ -266,7 +268,7 @@ describe('EarnTokenList', () => { params: { action: 'STAKE', token: { - address: '0xabc', + address: MOCK_ETH_MAINNET_ASSET.address, aggregators: [], balance: '', balanceFiat: '', @@ -280,7 +282,9 @@ describe('EarnTokenList', () => { name: 'Ethereum', symbol: 'Ethereum', ticker: 'ETH', - tokenBalanceFormatted: ' ETH', + balanceFormatted: ' ETH', + balanceFiatNumber: 0, + balanceMinimalUnit: '0', apr: '2.3', estimatedAnnualRewardsFormatted: '', }, @@ -309,7 +313,7 @@ describe('EarnTokenList', () => { params: { action: 'LEND', token: { - address: '0xabc', + address: MOCK_USDC_MAINNET_ASSET.address, aggregators: [], balance: '', balanceFiat: 'tokenBalanceLoading', @@ -323,7 +327,9 @@ describe('EarnTokenList', () => { name: 'USDC', symbol: 'USDC', ticker: 'USDC', - tokenBalanceFormatted: 'tokenBalanceLoading', + balanceFormatted: 'tokenBalanceLoading', + balanceFiatNumber: 0, + balanceMinimalUnit: '0', apr: '4.5', estimatedAnnualRewardsFormatted: '', }, diff --git a/app/components/UI/Stake/components/EarnTokenList/__snapshots__/EarnTokenList.test.tsx.snap b/app/components/UI/Earn/components/EarnTokenList/__snapshots__/EarnTokenList.test.tsx.snap similarity index 92% rename from app/components/UI/Stake/components/EarnTokenList/__snapshots__/EarnTokenList.test.tsx.snap rename to app/components/UI/Earn/components/EarnTokenList/__snapshots__/EarnTokenList.test.tsx.snap index 34145fc35df8..ddfaf8da6380 100644 --- a/app/components/UI/Stake/components/EarnTokenList/__snapshots__/EarnTokenList.test.tsx.snap +++ b/app/components/UI/Earn/components/EarnTokenList/__snapshots__/EarnTokenList.test.tsx.snap @@ -34,7 +34,7 @@ exports[`EarnTokenList render matches snapshot 1`] = ` style={ [ { - "backgroundColor": "#00000099", + "backgroundColor": "#00000066", "bottom": 0, "left": 0, "position": "absolute", @@ -81,14 +81,14 @@ exports[`EarnTokenList render matches snapshot 1`] = ` [ { "backgroundColor": "#ffffff", - "borderColor": "#BBC0C566", + "borderColor": "#b7bbc866", "borderTopLeftRadius": 8, "borderTopRightRadius": 8, "borderWidth": 1, "maxHeight": 1334, "overflow": "hidden", "paddingBottom": 0, - "shadowColor": "#0000001A", + "shadowColor": "#0000001a", "shadowOffset": { "height": 2, "width": 0, @@ -118,7 +118,7 @@ exports[`EarnTokenList render matches snapshot 1`] = ` <View style={ { - "backgroundColor": "#BBC0C566", + "backgroundColor": "#b7bbc866", "borderRadius": 2, "height": 4, "width": 40, @@ -163,8 +163,8 @@ exports[`EarnTokenList render matches snapshot 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", + "color": "#121314", + "fontFamily": "CentraNo1-Bold", "fontSize": 16, "fontWeight": "700", "letterSpacing": 0, @@ -204,7 +204,7 @@ exports[`EarnTokenList render matches snapshot 1`] = ` style={ { "alignItems": "center", - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", "borderRadius": 8, "gap": 8, "paddingHorizontal": 16, @@ -216,8 +216,8 @@ exports[`EarnTokenList render matches snapshot 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", + "color": "#121314", + "fontFamily": "CentraNo1-Bold", "fontSize": 18, "fontWeight": "700", "letterSpacing": 0, @@ -231,8 +231,8 @@ exports[`EarnTokenList render matches snapshot 1`] = ` accessibilityRole="text" style={ { - "color": "#1c8234", - "fontFamily": "EuclidCircularB-Bold", + "color": "#1c7e33", + "fontFamily": "CentraNo1-Bold", "fontSize": 32, "fontWeight": "700", "letterSpacing": 0, @@ -246,12 +246,12 @@ exports[`EarnTokenList render matches snapshot 1`] = ` accessibilityRole="text" style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -405,7 +405,7 @@ exports[`EarnTokenList render matches snapshot 1`] = ` "height": 32, "justifyContent": "center", "overflow": "hidden", - "shadowColor": "#0000001A", + "shadowColor": "#0000001a", "shadowOffset": { "height": 2, "width": 0, @@ -441,12 +441,12 @@ exports[`EarnTokenList render matches snapshot 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -465,12 +465,12 @@ exports[`EarnTokenList render matches snapshot 1`] = ` accessibilityRole="text" style={ { - "color": "#1c8234", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, + "color": "#1c7e33", + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -480,12 +480,12 @@ exports[`EarnTokenList render matches snapshot 1`] = ` accessibilityRole="text" style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 12, + "color": "#686e7d", + "fontFamily": "CentraNo1-Medium", + "fontSize": 14, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -609,7 +609,7 @@ exports[`EarnTokenList render matches snapshot 1`] = ` "height": 32, "justifyContent": "center", "overflow": "hidden", - "shadowColor": "#0000001A", + "shadowColor": "#0000001a", "shadowOffset": { "height": 2, "width": 0, @@ -645,12 +645,12 @@ exports[`EarnTokenList render matches snapshot 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -669,12 +669,12 @@ exports[`EarnTokenList render matches snapshot 1`] = ` accessibilityRole="text" style={ { - "color": "#1c8234", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, + "color": "#1c7e33", + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -684,12 +684,12 @@ exports[`EarnTokenList render matches snapshot 1`] = ` accessibilityRole="text" style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 12, + "color": "#686e7d", + "fontFamily": "CentraNo1-Medium", + "fontSize": 14, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -813,7 +813,7 @@ exports[`EarnTokenList render matches snapshot 1`] = ` "height": 32, "justifyContent": "center", "overflow": "hidden", - "shadowColor": "#0000001A", + "shadowColor": "#0000001a", "shadowOffset": { "height": 2, "width": 0, @@ -849,12 +849,12 @@ exports[`EarnTokenList render matches snapshot 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -873,12 +873,12 @@ exports[`EarnTokenList render matches snapshot 1`] = ` accessibilityRole="text" style={ { - "color": "#1c8234", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, + "color": "#1c7e33", + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -888,12 +888,12 @@ exports[`EarnTokenList render matches snapshot 1`] = ` accessibilityRole="text" style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 12, + "color": "#686e7d", + "fontFamily": "CentraNo1-Medium", + "fontSize": 14, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -1017,7 +1017,7 @@ exports[`EarnTokenList render matches snapshot 1`] = ` "height": 32, "justifyContent": "center", "overflow": "hidden", - "shadowColor": "#0000001A", + "shadowColor": "#0000001a", "shadowOffset": { "height": 2, "width": 0, @@ -1053,12 +1053,12 @@ exports[`EarnTokenList render matches snapshot 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -1077,12 +1077,12 @@ exports[`EarnTokenList render matches snapshot 1`] = ` accessibilityRole="text" style={ { - "color": "#1c8234", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, + "color": "#1c7e33", + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -1092,12 +1092,12 @@ exports[`EarnTokenList render matches snapshot 1`] = ` accessibilityRole="text" style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 12, + "color": "#686e7d", + "fontFamily": "CentraNo1-Medium", + "fontSize": 14, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > diff --git a/app/components/UI/Stake/components/EarnTokenList/index.tsx b/app/components/UI/Earn/components/EarnTokenList/index.tsx similarity index 88% rename from app/components/UI/Stake/components/EarnTokenList/index.tsx rename to app/components/UI/Earn/components/EarnTokenList/index.tsx index d051f47e5ec3..c3e20e795bf0 100644 --- a/app/components/UI/Stake/components/EarnTokenList/index.tsx +++ b/app/components/UI/Earn/components/EarnTokenList/index.tsx @@ -23,24 +23,27 @@ import { Hex } from '@metamask/utils'; import { useNavigation } from '@react-navigation/native'; import Routes from '../../../../../constants/navigation/Routes'; import { MetaMetricsEvents, useMetrics } from '../../../../hooks/useMetrics'; -import { EVENT_LOCATIONS, EVENT_PROVIDERS } from '../../constants/events'; +import { + EVENT_LOCATIONS, + EVENT_PROVIDERS, +} from '../../../Stake/constants/events'; import { strings } from '../../../../../../locales/i18n'; -import UpsellBanner from '../UpsellBanner'; -import { UPSELL_BANNER_VARIANTS } from '../UpsellBanner/UpsellBanner.types'; -import { isStablecoinLendingFeatureEnabled } from '../../constants'; +import UpsellBanner from '../../../Stake/components/UpsellBanner'; +import { UPSELL_BANNER_VARIANTS } from '../../../Stake/components/UpsellBanner/UpsellBanner.types'; +import { isStablecoinLendingFeatureEnabled } from '../../../Stake/constants'; import { filterEligibleTokens, getSupportedEarnTokens, } from '../../../Earn/utils/token'; import EarnTokenListItem from '../EarnTokenListItem'; import Engine from '../../../../../core/Engine'; -import { STAKE_INPUT_VIEW_ACTIONS } from '../../Views/StakeInputView/StakeInputView.types'; -import useStakingEligibility from '../../hooks/useStakingEligibility'; +import { EARN_INPUT_VIEW_ACTIONS } from '../../../Earn/Views/EarnInputView/EarnInputView.types'; +import useStakingEligibility from '../../../Stake/hooks/useStakingEligibility'; import SkeletonPlaceholder from 'react-native-skeleton-placeholder'; import { useEarnTokenDetails } from '../../hooks/useEarnTokenDetails'; -const isEmptyBalance = (token: { tokenBalanceFormatted: string }) => - parseFloat(token?.tokenBalanceFormatted) === 0; +const isEmptyBalance = (token: { balanceFormatted: string }) => + parseFloat(token?.balanceFormatted) === 0; // Temporary: Will be replaced by actual API call in near future. const MOCK_ESTIMATE_REWARDS = '$454'; @@ -104,8 +107,8 @@ const EarnTokenList = () => { // Tokens with a balance of 0 are placed at the end of the list. return eligibleTokensWithBalances.sort((a, b) => { - const fiatBalanceA = parseFloat(a.tokenBalanceFormatted); - const fiatBalanceB = parseFloat(b.tokenBalanceFormatted); + const fiatBalanceA = parseFloat(a.balanceFormatted); + const fiatBalanceB = parseFloat(b.balanceFormatted); return (fiatBalanceA === 0 ? 1 : 0) - (fiatBalanceB === 0 ? 1 : 0); }); @@ -140,8 +143,8 @@ const EarnTokenList = () => { await Engine.context.NetworkController.setActiveNetwork(networkClientId); const action = token.isETH - ? STAKE_INPUT_VIEW_ACTIONS.STAKE - : STAKE_INPUT_VIEW_ACTIONS.LEND; + ? EARN_INPUT_VIEW_ACTIONS.STAKE + : EARN_INPUT_VIEW_ACTIONS.LEND; closeBottomSheetAndNavigate(() => { navigate('StakeScreens', { @@ -196,7 +199,7 @@ const EarnTokenList = () => { }} {...(!isEmptyBalance(token) && { secondaryText: { - value: token.tokenBalanceFormatted, + value: token.balanceFormatted, }, })} /> diff --git a/app/components/UI/Stake/components/EarnTokenListItem/EarnTokenListItem.styles.tsx b/app/components/UI/Earn/components/EarnTokenListItem/EarnTokenListItem.styles.tsx similarity index 100% rename from app/components/UI/Stake/components/EarnTokenListItem/EarnTokenListItem.styles.tsx rename to app/components/UI/Earn/components/EarnTokenListItem/EarnTokenListItem.styles.tsx diff --git a/app/components/UI/Stake/components/EarnTokenListItem/EarnTokenListItem.test.tsx b/app/components/UI/Earn/components/EarnTokenListItem/EarnTokenListItem.test.tsx similarity index 100% rename from app/components/UI/Stake/components/EarnTokenListItem/EarnTokenListItem.test.tsx rename to app/components/UI/Earn/components/EarnTokenListItem/EarnTokenListItem.test.tsx diff --git a/app/components/UI/Stake/components/EarnTokenListItem/EarnTokenListItem.types.ts b/app/components/UI/Earn/components/EarnTokenListItem/EarnTokenListItem.types.ts similarity index 100% rename from app/components/UI/Stake/components/EarnTokenListItem/EarnTokenListItem.types.ts rename to app/components/UI/Earn/components/EarnTokenListItem/EarnTokenListItem.types.ts diff --git a/app/components/UI/Stake/components/EarnTokenListItem/__snapshots__/EarnTokenListItem.test.tsx.snap b/app/components/UI/Earn/components/EarnTokenListItem/__snapshots__/EarnTokenListItem.test.tsx.snap similarity index 91% rename from app/components/UI/Stake/components/EarnTokenListItem/__snapshots__/EarnTokenListItem.test.tsx.snap rename to app/components/UI/Earn/components/EarnTokenListItem/__snapshots__/EarnTokenListItem.test.tsx.snap index f996e1e0162f..bd2632133be0 100644 --- a/app/components/UI/Stake/components/EarnTokenListItem/__snapshots__/EarnTokenListItem.test.tsx.snap +++ b/app/components/UI/Earn/components/EarnTokenListItem/__snapshots__/EarnTokenListItem.test.tsx.snap @@ -109,7 +109,7 @@ exports[`EarnTokenListItem render matches snapshot 1`] = ` "height": 32, "justifyContent": "center", "overflow": "hidden", - "shadowColor": "#0000001A", + "shadowColor": "#0000001a", "shadowOffset": { "height": 2, "width": 0, @@ -145,12 +145,12 @@ exports[`EarnTokenListItem render matches snapshot 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -169,12 +169,12 @@ exports[`EarnTokenListItem render matches snapshot 1`] = ` accessibilityRole="text" style={ { - "color": "#1c8234", - "fontFamily": "EuclidCircularB-Bold", - "fontSize": 14, + "color": "#1c7e33", + "fontFamily": "CentraNo1-Bold", + "fontSize": 16, "fontWeight": "700", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -184,12 +184,12 @@ exports[`EarnTokenListItem render matches snapshot 1`] = ` accessibilityRole="text" style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Bold", - "fontSize": 12, + "color": "#686e7d", + "fontFamily": "CentraNo1-Bold", + "fontSize": 14, "fontWeight": "700", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > diff --git a/app/components/UI/Stake/components/EarnTokenListItem/index.tsx b/app/components/UI/Earn/components/EarnTokenListItem/index.tsx similarity index 100% rename from app/components/UI/Stake/components/EarnTokenListItem/index.tsx rename to app/components/UI/Earn/components/EarnTokenListItem/index.tsx diff --git a/app/components/UI/Stake/components/EarnTokenSelector/EarnTokenSelector.styles.ts b/app/components/UI/Earn/components/EarnTokenSelector/EarnTokenSelector.styles.ts similarity index 100% rename from app/components/UI/Stake/components/EarnTokenSelector/EarnTokenSelector.styles.ts rename to app/components/UI/Earn/components/EarnTokenSelector/EarnTokenSelector.styles.ts diff --git a/app/components/UI/Stake/components/EarnTokenSelector/EarnTokenSelector.test.tsx b/app/components/UI/Earn/components/EarnTokenSelector/EarnTokenSelector.test.tsx similarity index 88% rename from app/components/UI/Stake/components/EarnTokenSelector/EarnTokenSelector.test.tsx rename to app/components/UI/Earn/components/EarnTokenSelector/EarnTokenSelector.test.tsx index dad2f1cb9b7b..0b8c77b51cab 100644 --- a/app/components/UI/Stake/components/EarnTokenSelector/EarnTokenSelector.test.tsx +++ b/app/components/UI/Earn/components/EarnTokenSelector/EarnTokenSelector.test.tsx @@ -3,7 +3,7 @@ import React from 'react'; import { fireEvent } from '@testing-library/react-native'; import EarnTokenSelector from './'; import renderWithProvider from '../../../../../util/test/renderWithProvider'; -import { MOCK_USDC_MAINNET_ASSET } from '../../__mocks__/mockData'; +import { MOCK_USDC_MAINNET_ASSET } from '../../../Stake/__mocks__/mockData'; import { backgroundState } from '../../../../../util/test/initial-root-state'; import { TokenI } from '../../../../UI/Tokens/types'; @@ -32,8 +32,10 @@ jest.mock('../../hooks/useEarnTokenDetails', () => ({ getTokenWithBalanceAndApr: (token: TokenI) => ({ ...token, apr: MOCK_APR_VALUES[token.symbol] || '0.0', - tokenBalanceFormatted: token.symbol === 'USDC' ? '6.84314 USDC' : '0', + balanceFormatted: token.symbol === 'USDC' ? '6.84314 USDC' : '0', balanceFiat: token.symbol === 'USDC' ? '$6.84' : '$0.00', + balanceMinimalUnit: token.symbol === 'USDC' ? '6.84314' : '0', + balanceFiatNumber: token.symbol === 'USDC' ? 6.84314 : 0, }), }), })); diff --git a/app/components/UI/Stake/components/EarnTokenSelector/__snapshots__/EarnTokenSelector.test.tsx.snap b/app/components/UI/Earn/components/EarnTokenSelector/__snapshots__/EarnTokenSelector.test.tsx.snap similarity index 91% rename from app/components/UI/Stake/components/EarnTokenSelector/__snapshots__/EarnTokenSelector.test.tsx.snap rename to app/components/UI/Earn/components/EarnTokenSelector/__snapshots__/EarnTokenSelector.test.tsx.snap index 2837c80cfe61..b2b9565cf666 100644 --- a/app/components/UI/Stake/components/EarnTokenSelector/__snapshots__/EarnTokenSelector.test.tsx.snap +++ b/app/components/UI/Earn/components/EarnTokenSelector/__snapshots__/EarnTokenSelector.test.tsx.snap @@ -9,7 +9,7 @@ exports[`EarnTokenSelector renders correctly 1`] = ` { "alignItems": "center", "backgroundColor": "#ffffff", - "borderColor": "#848c96", + "borderColor": "#b7bbc8", "borderRadius": 8, "borderWidth": 1, "flexDirection": "row", @@ -145,7 +145,7 @@ exports[`EarnTokenSelector renders correctly 1`] = ` "height": 32, "justifyContent": "center", "overflow": "hidden", - "shadowColor": "#0000001A", + "shadowColor": "#0000001a", "shadowOffset": { "height": 2, "width": 0, @@ -181,12 +181,12 @@ exports[`EarnTokenSelector renders correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, - "fontWeight": "400", + "color": "#121314", + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, + "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, "marginLeft": 8, } } @@ -240,12 +240,12 @@ exports[`EarnTokenSelector renders correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#1c8234", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, - "fontWeight": "400", + "color": "#1c7e33", + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, + "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -255,10 +255,10 @@ exports[`EarnTokenSelector renders correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", + "color": "#686e7d", + "fontFamily": "CentraNo1-Medium", "fontSize": 14, - "fontWeight": "400", + "fontWeight": "500", "letterSpacing": 0, "lineHeight": 22, } @@ -272,7 +272,7 @@ exports[`EarnTokenSelector renders correctly 1`] = ` </View> <View> <SvgMock - color="#141618" + color="#121314" height={16} name="ArrowDown" style={ diff --git a/app/components/UI/Stake/components/EarnTokenSelector/index.tsx b/app/components/UI/Earn/components/EarnTokenSelector/index.tsx similarity index 91% rename from app/components/UI/Stake/components/EarnTokenSelector/index.tsx rename to app/components/UI/Earn/components/EarnTokenSelector/index.tsx index 64f6f617a831..a6847a7d1883 100644 --- a/app/components/UI/Stake/components/EarnTokenSelector/index.tsx +++ b/app/components/UI/Earn/components/EarnTokenSelector/index.tsx @@ -82,7 +82,7 @@ const EarnTokenSelector = ({ token }: EarnTokenSelectorProps) => { > {renderTokenAvatar()} </BadgeWrapper> - <Text variant={TextVariant.BodyMD} style={styles.tokenText}> + <Text variant={TextVariant.BodyMDMedium} style={styles.tokenText}> {token.name} </Text> </View> @@ -90,12 +90,12 @@ const EarnTokenSelector = ({ token }: EarnTokenSelectorProps) => { const renderEndAccessory = () => ( <View style={styles.endAccessoryContainer}> - <Text variant={TextVariant.BodyMD} color={TextColor.Success}> + <Text variant={TextVariant.BodyMDMedium} color={TextColor.Success}> {`${tokenDetails.apr}% APR`} </Text> - {tokenDetails.tokenBalanceFormatted && ( - <Text variant={TextVariant.BodyMD} color={TextColor.Alternative}> - {tokenDetails.tokenBalanceFormatted} + {tokenDetails.balanceFormatted !== undefined && ( + <Text variant={TextVariant.BodySMMedium} color={TextColor.Alternative}> + {tokenDetails.balanceFormatted} </Text> )} </View> diff --git a/app/components/UI/Earn/components/EmptyStateCta/EmptyStateCta.test.tsx b/app/components/UI/Earn/components/EmptyStateCta/EmptyStateCta.test.tsx index be17be02d910..86b9f0b49eac 100644 --- a/app/components/UI/Earn/components/EmptyStateCta/EmptyStateCta.test.tsx +++ b/app/components/UI/Earn/components/EmptyStateCta/EmptyStateCta.test.tsx @@ -13,7 +13,7 @@ import { EVENT_LOCATIONS, EVENT_PROVIDERS } from '../../constants/events'; // eslint-disable-next-line import/no-namespace import * as StakeConstants from '../../../Stake/constants'; // eslint-disable-next-line import/no-namespace -import * as useEarnTokenDetails from '../../../Stake/hooks/useEarnTokenDetails'; +import * as useEarnTokenDetails from '../../../Earn/hooks/useEarnTokenDetails'; jest.mock('../../../../hooks/useMetrics'); @@ -73,10 +73,12 @@ describe('EmptyStateCta', () => { jest.spyOn(useEarnTokenDetails, 'useEarnTokenDetails').mockReturnValue({ getTokenWithBalanceAndApr: () => ({ ...MOCK_USDC_MAINNET_ASSET, - tokenBalanceFormatted: '$100 USDC', - balanceFiat: '$100', apr: '4.5', estimatedAnnualRewardsFormatted: '$5', + balanceFiat: '$100', + balanceFormatted: '$100 USDC', + balanceMinimalUnit: '100', + balanceFiatNumber: 100, }), }); }); @@ -101,7 +103,7 @@ describe('EmptyStateCta', () => { params: { action: 'LEND', token: { - address: '0xabc', + address: MOCK_USDC_MAINNET_ASSET.address, aggregators: [], balance: '', balanceFiat: '', diff --git a/app/components/UI/Earn/components/EmptyStateCta/__snapshots__/EmptyStateCta.test.tsx.snap b/app/components/UI/Earn/components/EmptyStateCta/__snapshots__/EmptyStateCta.test.tsx.snap index b123c75b1c7e..1a76f5115e2a 100644 --- a/app/components/UI/Earn/components/EmptyStateCta/__snapshots__/EmptyStateCta.test.tsx.snap +++ b/app/components/UI/Earn/components/EmptyStateCta/__snapshots__/EmptyStateCta.test.tsx.snap @@ -6,7 +6,7 @@ exports[`EmptyStateCta renders correctly 1`] = ` style={ { "alignItems": "center", - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", "borderRadius": 12, "padding": 16, } @@ -24,7 +24,7 @@ exports[`EmptyStateCta renders correctly 1`] = ` style={ { "alignItems": "center", - "backgroundColor": "#1C82341A", + "backgroundColor": "#1c7e331a", "borderRadius": 100, "height": 36, "justifyContent": "center", @@ -34,7 +34,7 @@ exports[`EmptyStateCta renders correctly 1`] = ` } > <SvgMock - color="#1c8234" + color="#1c7e33" height={20} name="Plant" style={ @@ -51,8 +51,8 @@ exports[`EmptyStateCta renders correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", + "color": "#121314", + "fontFamily": "CentraNo1-Bold", "fontSize": 18, "fontWeight": "700", "letterSpacing": 0, @@ -67,12 +67,12 @@ exports[`EmptyStateCta renders correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, "paddingBottom": 16, "textAlign": "center", } @@ -84,12 +84,12 @@ exports[`EmptyStateCta renders correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#1c8234", - "fontFamily": "EuclidCircularB-Bold", - "fontSize": 14, + "color": "#1c7e33", + "fontFamily": "CentraNo1-Bold", + "fontSize": 16, "fontWeight": "700", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -115,7 +115,7 @@ exports[`EmptyStateCta renders correctly 1`] = ` "alignItems": "center", "alignSelf": "stretch", "backgroundColor": "transparent", - "borderColor": "#0376c9", + "borderColor": "#4459ff", "borderRadius": 24, "borderWidth": 1, "flexDirection": "row", @@ -129,12 +129,12 @@ exports[`EmptyStateCta renders correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, + "color": "#4459ff", + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > diff --git a/app/components/UI/Earn/components/EmptyStateCta/index.tsx b/app/components/UI/Earn/components/EmptyStateCta/index.tsx index 8fc505ca9304..52eb7abf7d37 100644 --- a/app/components/UI/Earn/components/EmptyStateCta/index.tsx +++ b/app/components/UI/Earn/components/EmptyStateCta/index.tsx @@ -18,9 +18,9 @@ import Button, { } from '../../../../../component-library/components/Buttons/Button'; import { useNavigation } from '@react-navigation/native'; import Routes from '../../../../../constants/navigation/Routes'; -import { STAKE_INPUT_VIEW_ACTIONS } from '../../../Stake/Views/StakeInputView/StakeInputView.types'; +import { EARN_INPUT_VIEW_ACTIONS } from '../../../Earn/Views/EarnInputView/EarnInputView.types'; import { TokenI } from '../../../Tokens/types'; -import { useEarnTokenDetails } from '../../../Stake/hooks/useEarnTokenDetails'; +import { useEarnTokenDetails } from '../../../Earn/hooks/useEarnTokenDetails'; import { MetaMetricsEvents, useMetrics } from '../../../../hooks/useMetrics'; import { EVENT_LOCATIONS, EVENT_PROVIDERS } from '../../constants/events'; import { getDecimalChainId } from '../../../../../util/networks'; @@ -61,7 +61,7 @@ const EarnEmptyStateCta = ({ token }: EarnEmptyStateCta) => { navigate('StakeScreens', { screen: Routes.STAKING.STAKE, - params: { token, action: STAKE_INPUT_VIEW_ACTIONS.LEND }, + params: { token, action: EARN_INPUT_VIEW_ACTIONS.LEND }, }); }; diff --git a/app/components/UI/Earn/components/InputDisplay/InputDisplay.test.tsx b/app/components/UI/Earn/components/InputDisplay/InputDisplay.test.tsx new file mode 100644 index 000000000000..00a57615954b --- /dev/null +++ b/app/components/UI/Earn/components/InputDisplay/InputDisplay.test.tsx @@ -0,0 +1,96 @@ +import { fireEvent } from '@testing-library/react-native'; +import React from 'react'; +import InputDisplay, { InputDisplayProps } from '.'; +import { MOCK_ACCOUNTS_CONTROLLER_STATE } from '../../../../../util/test/accountsControllerTestUtils'; +import initialRootState from '../../../../../util/test/initial-root-state'; +import renderWithProvider from '../../../../../util/test/renderWithProvider'; + +const defaultProps = { + isOverMaximum: { + isOverMaximumEth: false, + isOverMaximumToken: false, + }, + balanceText: 'Balance', + balanceValue: '100', + isNonZeroAmount: true, + isFiat: false, + ticker: 'ETH', + amountToken: '50', + amountFiatNumber: '1000', + currentCurrency: 'USD', + handleCurrencySwitch: jest.fn(), + currencyToggleValue: 'ETH', +}; + +const initialState = { + ...initialRootState, + engine: { + ...initialRootState.engine, + backgroundState: { + ...initialRootState.engine.backgroundState, + AccountsController: MOCK_ACCOUNTS_CONTROLLER_STATE, + }, + }, +}; + +const renderComponent = (props: InputDisplayProps = defaultProps) => + renderWithProvider(<InputDisplay {...props} />, { + state: initialState, + }); + +describe('InputDisplay', () => { + beforeEach(() => { + jest.useFakeTimers(); + }); + + it('renders balance text correctly', () => { + const { getByText } = renderComponent(); + + getByText('Balance: 100'); + }); + + it('renders error text when over maximum token', () => { + const { getByText } = renderComponent({ + ...defaultProps, + isOverMaximum: { isOverMaximumEth: false, isOverMaximumToken: true }, + ticker: 'USDC', + }); + + getByText('Not enough USDC'); + }); + + it('renders error text when over maximum ETH', () => { + const { getByText } = renderComponent({ + ...defaultProps, + isOverMaximum: { isOverMaximumEth: true, isOverMaximumToken: false }, + }); + + getByText('Not enough ETH'); + }); + + it('displays amount in fiat when isFiat is true', () => { + const props = { ...defaultProps, isFiat: true }; + const { getByText } = renderComponent(props); + expect(getByText('1000')).toBeTruthy(); + expect(getByText('USD')).toBeTruthy(); + }); + + it('displays amount in token when isFiat is false', () => { + const { getByText } = renderComponent({ + ...defaultProps, + isFiat: false, + ticker: 'USDC', + }); + expect(getByText('50')).toBeTruthy(); + expect(getByText('USDC')).toBeTruthy(); + }); + + it('calls handleCurrencySwitch when currency toggle is pressed', () => { + const { getByTestId } = renderComponent(); + const currencyToggle = getByTestId('currency-toggle'); + + fireEvent.press(currencyToggle); + + expect(defaultProps.handleCurrencySwitch).toHaveBeenCalled(); + }); +}); diff --git a/app/components/UI/Earn/components/InputDisplay/index.tsx b/app/components/UI/Earn/components/InputDisplay/index.tsx new file mode 100644 index 000000000000..f6b3837cc615 --- /dev/null +++ b/app/components/UI/Earn/components/InputDisplay/index.tsx @@ -0,0 +1,162 @@ +import React, { useEffect, useRef } from 'react'; +import { Animated, Easing, StyleSheet, View } from 'react-native'; +import { strings } from '../../../../../../locales/i18n'; +import Text, { + TextColor, + TextVariant, +} from '../../../../../component-library/components/Texts/Text'; +import { useTheme } from '../../../../../util/theme'; +import type { Colors } from '../../../../../util/theme/models'; +import CurrencyToggle from '../CurrencySwitch'; +import { isStablecoinLendingFeatureEnabled } from '../../../Stake/constants'; + +export interface InputDisplayProps { + isOverMaximum: { + isOverMaximumEth: boolean; + isOverMaximumToken: boolean; + }; + balanceText: string; + balanceValue: string; + isNonZeroAmount: boolean; + isFiat: boolean; + ticker: string; + amountToken: string; + amountFiatNumber: string; + currentCurrency: string; + handleCurrencySwitch: () => void; + currencyToggleValue: string; +} + +const { View: AnimatedView } = Animated; + +const createStyles = (colors: Colors) => + StyleSheet.create({ + inputContainer: { + flex: 1, + backgroundColor: colors.background.default, + justifyContent: 'center', + alignItems: 'center', + gap: 16, + }, + amountRow: { + justifyContent: 'center', + alignItems: 'center', + flexDirection: 'row', + gap: 4, + }, + amountText: isStablecoinLendingFeatureEnabled() + ? { + fontSize: 40, + lineHeight: 50, + letterSpacing: 0, + fontWeight: '500', + } + : {}, + amountCursor: { + width: 1, + height: 32, + marginTop: 2, + marginLeft: 5, + marginRight: 5, + opacity: 1, + backgroundColor: colors.border.default, + }, + }); + +const InputDisplay = ({ + isOverMaximum, + balanceText, + balanceValue, + isFiat, + ticker, + amountToken, + amountFiatNumber, + currentCurrency, + handleCurrencySwitch, + currencyToggleValue, +}: InputDisplayProps) => { + const { colors } = useTheme(); + const styles = createStyles(colors); + const cursorOpacity = useRef(new Animated.Value(0.6)).current; + const isStablecoinLendingEnabled = isStablecoinLendingFeatureEnabled(); + + useEffect(() => { + const blinkAnimation = Animated.loop( + Animated.sequence([ + Animated.timing(cursorOpacity, { + toValue: 0, + duration: 800, + easing: () => Easing.bounce(1), + useNativeDriver: true, + }), + Animated.timing(cursorOpacity, { + toValue: 1, + easing: () => Easing.bounce(1), + duration: 800, + useNativeDriver: true, + }), + ]), + ); + + blinkAnimation.start(); + }, [cursorOpacity]); + + const getBalanceText = () => { + if (isOverMaximum.isOverMaximumToken) { + return strings('stake.not_enough_token', { ticker }); + } + if (isOverMaximum.isOverMaximumEth) { + return strings('stake.not_enough_eth'); + } + if (isStablecoinLendingEnabled) return '\u00A0'; + return `${balanceText}: ${balanceValue}`; + }; + + const balanceInfo = getBalanceText(); + + return ( + <View style={styles.inputContainer}> + <View> + <Text + variant={TextVariant.BodySM} + color={ + isOverMaximum.isOverMaximumToken || isOverMaximum.isOverMaximumEth + ? TextColor.Error + : undefined + } + > + {balanceInfo} + </Text> + </View> + <View style={styles.amountRow}> + <Text + style={styles.amountText} + color={TextColor.Default} + variant={TextVariant.DisplayMD} + > + {isFiat ? amountFiatNumber : amountToken} + </Text> + {isStablecoinLendingEnabled ? ( + <AnimatedView + style={[styles.amountCursor, { opacity: cursorOpacity }]} + /> + ) : null} + <Text + style={styles.amountText} + color={TextColor.Muted} + variant={TextVariant.DisplayMD} + > + {isFiat ? currentCurrency.toUpperCase() : ticker} + </Text> + </View> + <View> + <CurrencyToggle + onPress={handleCurrencySwitch} + value={currencyToggleValue} + /> + </View> + </View> + ); +}; + +export default InputDisplay; diff --git a/app/components/UI/Stake/components/MaxInputModal/MaxInputModal.styles.ts b/app/components/UI/Earn/components/MaxInputModal/MaxInputModal.styles.ts similarity index 100% rename from app/components/UI/Stake/components/MaxInputModal/MaxInputModal.styles.ts rename to app/components/UI/Earn/components/MaxInputModal/MaxInputModal.styles.ts diff --git a/app/components/UI/Stake/components/MaxInputModal/MaxInputModal.test.tsx b/app/components/UI/Earn/components/MaxInputModal/MaxInputModal.test.tsx similarity index 77% rename from app/components/UI/Stake/components/MaxInputModal/MaxInputModal.test.tsx rename to app/components/UI/Earn/components/MaxInputModal/MaxInputModal.test.tsx index 8092f9d9fc5d..9c24ccb39294 100644 --- a/app/components/UI/Stake/components/MaxInputModal/MaxInputModal.test.tsx +++ b/app/components/UI/Earn/components/MaxInputModal/MaxInputModal.test.tsx @@ -2,20 +2,24 @@ import { renderScreen } from '../../../../../util/test/renderWithProvider'; import MaxInputModal from '.'; import { fireEvent } from '@testing-library/react-native'; import Routes from '../../../../../constants/navigation/Routes'; +import { strings } from '../../../../../../locales/i18n'; const mockNavigate = jest.fn(); const mockGoBack = jest.fn(); const mockHandleMaxPress = jest.fn(); +const mockUseRoute = jest.fn().mockReturnValue({ + params: { + isEth: true, + ticker: 'ETH', + handleMaxPress: mockHandleMaxPress, + }, +}); jest.mock('@react-navigation/native', () => { const actualReactNavigation = jest.requireActual('@react-navigation/native'); return { ...actualReactNavigation, - useRoute: () => ({ - params: { - handleMaxPress: mockHandleMaxPress, - }, - }), + useRoute: () => mockUseRoute(), useNavigation: () => ({ navigate: mockNavigate, goBack: mockGoBack, @@ -27,6 +31,10 @@ const renderMaxInputModal = () => renderScreen(MaxInputModal, { name: Routes.STAKING.MODALS.MAX_INPUT }); describe('MaxInputModal', () => { + beforeEach(() => { + jest.clearAllMocks(); + }); + it('render matches snapshot', () => { const { toJSON } = renderMaxInputModal(); expect(toJSON()).toMatchSnapshot(); @@ -64,4 +72,13 @@ describe('MaxInputModal', () => { // Check if the BottomSheet's close function was called expect(mockGoBack).toHaveBeenCalled(); }); + + it('displays the correct content when asset is ETH', () => { + const { queryByText } = renderMaxInputModal(); + + const ethDescriptionText = queryByText( + strings('stake.max_modal.eth.description'), + ); + expect(ethDescriptionText).toBeTruthy(); + }); }); diff --git a/app/components/UI/Stake/components/MaxInputModal/__snapshots__/MaxInputModal.test.tsx.snap b/app/components/UI/Earn/components/MaxInputModal/__snapshots__/MaxInputModal.test.tsx.snap similarity index 94% rename from app/components/UI/Stake/components/MaxInputModal/__snapshots__/MaxInputModal.test.tsx.snap rename to app/components/UI/Earn/components/MaxInputModal/__snapshots__/MaxInputModal.test.tsx.snap index cb11a4c38b81..a97dbf8f815f 100644 --- a/app/components/UI/Stake/components/MaxInputModal/__snapshots__/MaxInputModal.test.tsx.snap +++ b/app/components/UI/Earn/components/MaxInputModal/__snapshots__/MaxInputModal.test.tsx.snap @@ -324,7 +324,7 @@ exports[`MaxInputModal render matches snapshot 1`] = ` style={ [ { - "backgroundColor": "#00000099", + "backgroundColor": "#00000066", "bottom": 0, "left": 0, "position": "absolute", @@ -371,14 +371,14 @@ exports[`MaxInputModal render matches snapshot 1`] = ` [ { "backgroundColor": "#ffffff", - "borderColor": "#BBC0C566", + "borderColor": "#b7bbc866", "borderTopLeftRadius": 8, "borderTopRightRadius": 8, "borderWidth": 1, "maxHeight": 1334, "overflow": "hidden", "paddingBottom": 0, - "shadowColor": "#0000001A", + "shadowColor": "#0000001a", "shadowOffset": { "height": 2, "width": 0, @@ -408,7 +408,7 @@ exports[`MaxInputModal render matches snapshot 1`] = ` <View style={ { - "backgroundColor": "#BBC0C566", + "backgroundColor": "#b7bbc866", "borderRadius": 2, "height": 4, "width": 40, @@ -460,8 +460,8 @@ exports[`MaxInputModal render matches snapshot 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", + "color": "#121314", + "fontFamily": "CentraNo1-Bold", "fontSize": 18, "fontWeight": "700", "letterSpacing": 0, @@ -501,7 +501,7 @@ exports[`MaxInputModal render matches snapshot 1`] = ` } > <SvgMock - color="#141618" + color="#121314" height={16} name="Close" style={ @@ -528,12 +528,12 @@ exports[`MaxInputModal render matches snapshot 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -570,7 +570,7 @@ exports[`MaxInputModal render matches snapshot 1`] = ` "alignItems": "center", "alignSelf": "stretch", "backgroundColor": "transparent", - "borderColor": "#0376c9", + "borderColor": "#4459ff", "borderRadius": 24, "borderWidth": 1, "flexDirection": "row", @@ -584,12 +584,12 @@ exports[`MaxInputModal render matches snapshot 1`] = ` accessibilityRole="text" style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, + "color": "#4459ff", + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -615,7 +615,7 @@ exports[`MaxInputModal render matches snapshot 1`] = ` { "alignItems": "center", "alignSelf": "stretch", - "backgroundColor": "#0376c9", + "backgroundColor": "#4459ff", "borderRadius": 24, "flexDirection": "row", "height": 48, @@ -629,11 +629,11 @@ exports[`MaxInputModal render matches snapshot 1`] = ` style={ { "color": "#ffffff", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > diff --git a/app/components/UI/Stake/components/MaxInputModal/index.tsx b/app/components/UI/Earn/components/MaxInputModal/index.tsx similarity index 97% rename from app/components/UI/Stake/components/MaxInputModal/index.tsx rename to app/components/UI/Earn/components/MaxInputModal/index.tsx index a7534a2214c6..a6b61216ce2d 100644 --- a/app/components/UI/Stake/components/MaxInputModal/index.tsx +++ b/app/components/UI/Earn/components/MaxInputModal/index.tsx @@ -48,7 +48,7 @@ const MaxInputModal = () => { </BottomSheetHeader> <View style={styles.textContainer}> <Text variant={TextVariant.BodyMD}> - {strings('stake.max_modal.description')} + {strings('stake.max_modal.eth.description')} </Text> </View> </View> diff --git a/app/components/UI/Earn/hooks/useEarnInput.test.tsx b/app/components/UI/Earn/hooks/useEarnInput.test.tsx new file mode 100644 index 000000000000..c887378cccfa --- /dev/null +++ b/app/components/UI/Earn/hooks/useEarnInput.test.tsx @@ -0,0 +1,370 @@ +import { act } from '@testing-library/react-hooks'; +import useEarnInputHandlers, { EarnInputProps } from './useEarnInput'; +import useBalance from '../../Stake/hooks/useBalance'; +import useStakingGasFee from '../../Stake/hooks/useStakingGasFee'; +import useVaultMetadata from '../../Stake/hooks/useVaultMetadata'; +import { + DeepPartial, + renderHookWithProvider, +} from '../../../../util/test/renderWithProvider'; +import { backgroundState } from '../../../../util/test/initial-root-state'; +import { MOCK_ACCOUNTS_CONTROLLER_STATE } from '../../../../util/test/accountsControllerTestUtils'; +import { RootState } from '../../../../reducers'; +import BN4 from 'bnjs4'; +import { CHAIN_IDS } from '@metamask/transaction-controller'; +import { Hex } from '../../../../util/smart-transactions/smart-publish-hook'; + +jest.mock('../../Stake/hooks/useBalance'); +jest.mock('../../Stake/hooks/useStakingGasFee'); +jest.mock('../../Stake/hooks/useVaultMetadata'); + +jest.mock('../../../../selectors/currencyRateController', () => ({ + selectCurrentCurrency: jest.fn(() => 'USD'), +})); + +describe('useEarnInputHandlers', () => { + const mockEarnToken = { + balanceMinimalUnit: '1000000000000000000', // 1 ETH + decimals: 18, + ticker: 'ETH', + symbol: 'ETH', + isETH: true, + balanceFiat: '2000', + balanceFormatted: '1 ETH', + apr: '5%', + balanceFiatNumber: 2000, + estimatedAnnualRewardsFormatted: '0.05 ETH', + address: '0x1234567890123456789012345678901234567890', + name: 'Ethereum', + network: 'mainnet', + logo: 'https://example.com/eth-logo.png', + contractAddress: '0x1234567890123456789012345678901234567890', + aggregators: ['uniswap', 'sushiswap'], + image: 'https://example.com/eth-logo.png', + balance: '1', + }; + + const mockConversionRate = 2000; // 1 ETH = $2000 + const mockExchangeRate = 1; + const mockAddress = '0x00000'; + const mockUsdcAddress = '0x00001'; + const mockInitialState = { + engine: { + backgroundState: { + ...backgroundState, + AccountsController: MOCK_ACCOUNTS_CONTROLLER_STATE, + TokenBalancesController: { + tokenBalances: { + [mockAddress]: { + [CHAIN_IDS.MAINNET]: { + [mockUsdcAddress]: '0x0' as Hex, + }, + }, + }, + }, + MultichainNetworkController: { + isEvmSelected: true, + selectedMultichainNetworkChainId: undefined, + multichainNetworkConfigurationsByChainId: { + [CHAIN_IDS.MAINNET]: { + chainId: CHAIN_IDS.MAINNET as Hex, + nativeCurrency: 'ETH', + rpcEndpoints: [ + { + networkClientId: 'mainnet', + }, + ], + defaultBlockExplorerUrlIndex: 0, + blockExplorerUrls: ['https://etherscan.io'], + }, + }, + }, + }, + }, + }; + + const defaultProps: EarnInputProps = { + earnToken: mockEarnToken, + conversionRate: mockConversionRate, + exchangeRate: mockExchangeRate, + }; + + const renderHook = ( + state: DeepPartial<RootState> = mockInitialState, + props: EarnInputProps = defaultProps, + ) => renderHookWithProvider(() => useEarnInputHandlers(props), { state }); + + beforeEach(() => { + // Reset all mocks before each test + jest.clearAllMocks(); + + // Setup default mock implementations + (useBalance as jest.Mock).mockReturnValue({ + balanceWei: new BN4('1000000000000000000'), // 1 ETH + balanceETH: '1', + balanceFiatNumber: '2000', + }); + + (useStakingGasFee as jest.Mock).mockReturnValue({ + estimatedGasFeeWei: new BN4('100000000000000000'), // 0.1 ETH + isLoadingStakingGasFee: false, + isStakingGasFeeError: false, + }); + + (useVaultMetadata as jest.Mock).mockReturnValue({ + annualRewardRate: '5%', + annualRewardRateDecimal: 0.05, + isLoadingVaultMetadata: false, + }); + }); + + it('should initialize with default values', () => { + const { result } = renderHook(); + + expect(result.current.amountTokenMinimalUnit).toEqual(new BN4(0)); + expect(result.current.amountFiatNumber).toBe('0'); + expect(result.current.isFiat).toBe(false); + expect(result.current.currencyToggleValue).toBe('0 USD'); + expect(result.current.isNonZeroAmount).toBe(false); + expect(result.current.isOverMaximum.isOverMaximumEth).toBe(false); + expect(result.current.isOverMaximum.isOverMaximumToken).toBe(false); + expect(result.current.amountToken).toBe('0'); + expect(result.current.handleTokenInput).toBeDefined(); + expect(result.current.handleFiatInput).toBeDefined(); + expect(result.current.handleKeypadChange).toBeDefined(); + expect(result.current.handleCurrencySwitch).toBeDefined(); + expect(result.current.percentageOptions).toBeDefined(); + expect(result.current.handleQuickAmountPress).toBeDefined(); + expect(result.current.currentCurrency).toBe('USD'); + expect(result.current.conversionRate).toBe(2000); + expect(result.current.estimatedAnnualRewards).toBe('-'); + expect(result.current.calculateEstimatedAnnualRewards).toBeDefined(); + expect(result.current.annualRewardsToken).toBe('0 ETH'); + expect(result.current.annualRewardsFiat).toBe('0 USD'); + expect(result.current.annualRewardRate).toBe('5%'); + expect(result.current.handleMax).toBeDefined(); + expect(result.current.isLoadingStakingGasFee).toBe(false); + expect(result.current.isLoadingVaultMetadata).toBe(false); + expect(result.current.balanceValue).toBe('1 ETH'); + expect(result.current.getDepositTxGasPercentage).toBeDefined(); + expect(result.current.isHighGasCostImpact).toBeDefined(); + expect(result.current.estimatedGasFeeWei).toEqual( + new BN4('100000000000000000'), + ); + }); + + it('should handle token input correctly', () => { + const { result } = renderHook(); + + act(() => { + result.current.handleTokenInput('0.5'); + }); + + expect(result.current.amountToken).toBe('0.5'); + expect(result.current.amountFiatNumber).toBe('1000'); // 0.5 ETH = $1000 + expect(result.current.amountTokenMinimalUnit).toEqual( + new BN4('500000000000000000'), + ); + }); + + it('should handle fiat input correctly', () => { + const { result } = renderHook(); + + act(() => { + result.current.handleFiatInput('1000'); + }); + + expect(result.current.amountFiatNumber).toBe('1000'); + expect(result.current.amountToken).toBe('0.5'); // $1000 = 0.5 ETH + expect(result.current.amountTokenMinimalUnit).toEqual( + new BN4('500000000000000000'), + ); + }); + + it('should switch between fiat and token display', () => { + const { result } = renderHook(); + act(() => { + result.current.handleCurrencySwitch(); + }); + + expect(result.current.isFiat).toBe(true); + expect(result.current.currencyToggleValue).toBe('0 ETH'); + }); + + it('should calculate annual rewards correctly', () => { + const { result } = renderHook(); + + act(() => { + result.current.handleTokenInput('1'); + result.current.calculateEstimatedAnnualRewards(); + }); + + expect(result.current.annualRewardsToken).toBe('0.05 ETH'); + }); + + it('should handle max input correctly', () => { + const { result } = renderHook(); + + act(() => { + result.current.handleMax(); + }); + + // Max amount should be balance minus gas fee (1 ETH - 0.1 ETH = 0.9 ETH) + expect(result.current.amountToken).toBe('0.9'); + }); + + it('should detect high gas cost impact', () => { + const { result } = renderHook(); + + act(() => { + result.current.handleTokenInput('0.00001'); // Small amount, gas fee will be high percentage + }); + + expect(result.current.isHighGasCostImpact()).toBe(true); + }); + + it('should handle loading states correctly', () => { + (useStakingGasFee as jest.Mock).mockReturnValue({ + estimatedGasFeeWei: new BN4('100000000000000000'), + isLoadingStakingGasFee: true, + isStakingGasFeeError: false, + }); + + const { result } = renderHook(); + + expect(result.current.isLoadingStakingGasFee).toBe(true); + }); + + it('should handle erc20 token correctly', () => { + const { result } = renderHook( + { + ...mockInitialState, + engine: { + ...mockInitialState.engine, + backgroundState: { + ...mockInitialState.engine.backgroundState, + TokenBalancesController: { + ...mockInitialState.engine.backgroundState + .TokenBalancesController, + tokenBalances: { + [mockAddress]: { + [CHAIN_IDS.MAINNET]: { + [mockUsdcAddress]: '0x5f5e100' as Hex, // 100 USDC + }, + }, + }, + }, + }, + }, + }, + { + earnToken: { + ...mockEarnToken, + isETH: false, + balanceMinimalUnit: '1000000000', // 1000 USDC + decimals: 6, + ticker: 'USDC', + }, + conversionRate: 1, + exchangeRate: 1, + }, + ); + + act(() => { + result.current.handleTokenInput('1'); + }); + + expect(result.current.amountToken).toBe('1'); + expect(result.current.amountFiatNumber).toBe('1'); + expect(result.current.amountTokenMinimalUnit).toEqual(new BN4('1000000')); + }); + + it('should handle quick amount press below .00001 ETH correctly', () => { + const { result } = renderHook(undefined, { + earnToken: { + ...mockEarnToken, + balanceMinimalUnit: '10', + balance: '< .00001', + balanceFiat: '< .01', + balanceFormatted: '< .00001 ETH', + }, + conversionRate: 2000, + exchangeRate: 1, + }); + + act(() => { + result.current.handleQuickAmountPress({ value: 0.25 }); + }); + + expect(result.current.amountToken).toBe('< 0.00001'); + expect(result.current.amountFiatNumber).toBe('0'); + expect(result.current.amountTokenMinimalUnit).toEqual(new BN4('2')); + }); + + it('should handle max amount press below .00001 ETH correctly', () => { + (useBalance as jest.Mock).mockReturnValue({ + balanceWei: new BN4('10'), + balanceETH: '< .00001', + balanceFiatNumber: '0', + }); + (useStakingGasFee as jest.Mock).mockReturnValue({ + estimatedGasFeeWei: new BN4('0'), + isLoadingStakingGasFee: false, + isStakingGasFeeError: false, + }); + + const { result } = renderHook(undefined, { + earnToken: { + ...mockEarnToken, + balanceMinimalUnit: '10', + balance: '< .00001', + balanceFiat: '< .01', + balanceFormatted: '< .00001 ETH', + }, + conversionRate: 2000, + exchangeRate: 1, + }); + + act(() => { + result.current.handleMax(); + }); + + expect(result.current.amountToken).toBe('< 0.00001'); + expect(result.current.amountFiatNumber).toBe('0'); + expect(result.current.amountTokenMinimalUnit).toEqual(new BN4('10')); + }); + + it('should flag isOverMaximum when amount is greater than balance - gas fee', () => { + const { result } = renderHook(); + + act(() => { + result.current.handleTokenInput('1'); + }); + + expect(result.current.isOverMaximum.isOverMaximumEth).toBe(true); + expect(result.current.isOverMaximum.isOverMaximumToken).toBe(false); + }); + + it('should flag isOverMaximum when token amount is greater than balance', () => { + const { result } = renderHook(undefined, { + earnToken: { + ...mockEarnToken, + isETH: false, + ticker: 'USDC', + balanceMinimalUnit: '1000000000', // 1000 USDC + balance: '1000', + balanceFiat: '1000', + balanceFormatted: '1000 USDC', + }, + conversionRate: 1, + exchangeRate: 1, + }); + + act(() => { + result.current.handleTokenInput('10000'); + }); + + expect(result.current.isOverMaximum.isOverMaximumEth).toBe(false); + expect(result.current.isOverMaximum.isOverMaximumToken).toBe(true); + }); +}); diff --git a/app/components/UI/Earn/hooks/useEarnInput.ts b/app/components/UI/Earn/hooks/useEarnInput.ts new file mode 100644 index 000000000000..1c45952403c7 --- /dev/null +++ b/app/components/UI/Earn/hooks/useEarnInput.ts @@ -0,0 +1,219 @@ +import BigNumber from 'bignumber.js'; +import BN4 from 'bnjs4'; +import { useCallback, useMemo, useState } from 'react'; +import { + fromTokenMinimalUnit, + limitToMaximumDecimalPlaces, + renderFiat, + weiToFiatNumber, +} from '../../../../util/number'; +import useBalance from '../../Stake/hooks/useBalance'; +import { EarnTokenDetails } from './useEarnTokenDetails'; +import useInputHandler from './useInput'; +import useStakingGasFee from '../../Stake/hooks/useStakingGasFee'; +import useVaultMetadata from '../../Stake/hooks/useVaultMetadata'; + +export interface EarnInputProps { + earnToken: EarnTokenDetails; + conversionRate: number; + exchangeRate: number; +} + +const useEarnInputHandlers = ({ + earnToken, + conversionRate, + exchangeRate, +}: EarnInputProps) => { + const { balanceWei, balanceETH, balanceFiatNumber } = useBalance(); + const [estimatedAnnualRewards, setEstimatedAnnualRewards] = useState('-'); + + const balanceMinimalUnit: BN4 = useMemo( + () => new BN4(earnToken.balanceMinimalUnit), + [earnToken.balanceMinimalUnit], + ); + + const { + isFiat, + currencyToggleValue, + isNonZeroAmount, + handleKeypadChange, + handleCurrencySwitch, + percentageOptions, + handleQuickAmountPress, + currentCurrency, + handleTokenInput, + handleFiatInput, + amountToken, + amountTokenMinimalUnit, + amountFiatNumber, + handleMaxInput, + } = useInputHandler({ + balance: earnToken.balanceMinimalUnit, + decimals: earnToken.decimals, + ticker: earnToken.ticker ?? earnToken.symbol, + conversionRate, + exchangeRate, + }); + + const { estimatedGasFeeWei, isLoadingStakingGasFee, isStakingGasFeeError } = + useStakingGasFee(balanceWei.toString()); + + // max amount of native currency stakable after gas fee + const maxStakeableAmountWei = useMemo( + () => + !isStakingGasFeeError && balanceWei.gt(estimatedGasFeeWei) + ? balanceWei.sub(estimatedGasFeeWei) + : new BN4(0), + + [balanceWei, estimatedGasFeeWei, isStakingGasFeeError], + ); + + const isOverMaximum = useMemo(() => { + const isOverMaximumEth = + !!earnToken.isETH && + isNonZeroAmount && + amountTokenMinimalUnit.sub(maxStakeableAmountWei).gt(new BN4(0)); + const isOverMaximumToken = + !earnToken.isETH && + isNonZeroAmount && + amountTokenMinimalUnit.sub(balanceMinimalUnit).gt(new BN4(0)) && + balanceWei.sub(estimatedGasFeeWei).gte(new BN4(0)); + return { + isOverMaximumEth, + isOverMaximumToken, + }; + }, [ + amountTokenMinimalUnit, + isNonZeroAmount, + maxStakeableAmountWei, + earnToken.isETH, + balanceMinimalUnit, + balanceWei, + estimatedGasFeeWei, + ]); + + const { annualRewardRate, annualRewardRateDecimal, isLoadingVaultMetadata } = + useVaultMetadata(); + + const handleMax = useCallback(async () => { + if (!balanceMinimalUnit) return; + handleMaxInput( + earnToken.isETH ? maxStakeableAmountWei : balanceMinimalUnit, + ); + }, [ + balanceMinimalUnit, + handleMaxInput, + maxStakeableAmountWei, + earnToken.isETH, + ]); + + const annualRewardsToken = useMemo( + () => + `${limitToMaximumDecimalPlaces( + parseFloat( + fromTokenMinimalUnit(amountTokenMinimalUnit, earnToken.decimals), + ) * annualRewardRateDecimal, + 5, + )} ETH`, + [amountTokenMinimalUnit, annualRewardRateDecimal, earnToken.decimals], + ); + + const annualRewardsFiat = useMemo( + () => + renderFiat( + parseFloat(amountFiatNumber) * annualRewardRateDecimal, + currentCurrency, + 2, + ), + [amountFiatNumber, annualRewardRateDecimal, currentCurrency], + ); + + const calculateEstimatedAnnualRewards = useCallback(() => { + if (isNonZeroAmount) { + if (!isFiat) { + setEstimatedAnnualRewards(annualRewardsToken); + } else { + setEstimatedAnnualRewards(annualRewardsFiat); + } + } else { + setEstimatedAnnualRewards(annualRewardRate); + } + }, [ + isNonZeroAmount, + isFiat, + annualRewardsToken, + annualRewardsFiat, + annualRewardRate, + ]); + + const tokenBalanceFiat = earnToken.isETH + ? balanceFiatNumber?.toString() + : earnToken.balanceFiat; + + const tokenBalance = earnToken.isETH + ? `${balanceETH} ETH` + : earnToken.balanceFormatted; + + const balanceValue = isFiat + ? `${tokenBalanceFiat} ${currentCurrency.toUpperCase()}` + : `${tokenBalance}`; + + const getDepositTxGasPercentage = useCallback(() => { + if (!isNonZeroAmount || isLoadingStakingGasFee || !estimatedGasFeeWei) { + return '0'; + } + + const gasBN = new BigNumber(estimatedGasFeeWei.toString()); + const gasFiatNumber = weiToFiatNumber(gasBN.toString(), conversionRate, 2); + + return new BigNumber(gasFiatNumber) + .multipliedBy(new BigNumber(100)) + .div(new BigNumber(amountFiatNumber)) + .toFixed(0, 1) + .toString(); + }, [ + conversionRate, + estimatedGasFeeWei, + isNonZeroAmount, + isLoadingStakingGasFee, + amountFiatNumber, + ]); + + // Gas fee make up 30% or more of the deposit amount. + const isHighGasCostImpact = useCallback( + () => new BN4(getDepositTxGasPercentage()).gt(new BN4(30)), + [getDepositTxGasPercentage], + ); + + return { + amountToken, + amountTokenMinimalUnit, + amountFiatNumber, + isFiat, + currencyToggleValue, + isNonZeroAmount, + isOverMaximum, + handleTokenInput, + handleFiatInput, + handleKeypadChange, + handleCurrencySwitch, + percentageOptions, + handleQuickAmountPress, + currentCurrency, + conversionRate, + estimatedAnnualRewards, + calculateEstimatedAnnualRewards, + annualRewardsToken, + annualRewardsFiat, + annualRewardRate, + handleMax, + isLoadingStakingGasFee, + isLoadingVaultMetadata, + balanceValue, + getDepositTxGasPercentage, + isHighGasCostImpact, + estimatedGasFeeWei, + }; +}; + +export default useEarnInputHandlers; diff --git a/app/components/UI/Stake/hooks/useEarnTokenDetails.test.tsx b/app/components/UI/Earn/hooks/useEarnTokenDetails.test.tsx similarity index 66% rename from app/components/UI/Stake/hooks/useEarnTokenDetails.test.tsx rename to app/components/UI/Earn/hooks/useEarnTokenDetails.test.tsx index 2ddfa7a463ca..8c9595520cf7 100644 --- a/app/components/UI/Stake/hooks/useEarnTokenDetails.test.tsx +++ b/app/components/UI/Earn/hooks/useEarnTokenDetails.test.tsx @@ -1,17 +1,29 @@ import { renderHookWithProvider } from '../../../../util/test/renderWithProvider'; -import { createMockToken } from '../testUtils'; +import { createMockToken } from '../../Stake/testUtils'; import { CHAIN_IDS } from '@metamask/transaction-controller'; import { TokenI } from '../../Tokens/types'; import { backgroundState } from '../../../../util/test/initial-root-state'; import { Hex } from '@metamask/utils'; import { useEarnTokenDetails } from './useEarnTokenDetails'; -import { MOCK_ETH_MAINNET_ASSET } from '../__mocks__/mockData'; +import { MOCK_ETH_MAINNET_ASSET } from '../../Stake/__mocks__/mockData'; +import useBalance from '../../Stake/hooks/useBalance'; + +jest.mock('../../Stake/hooks/useBalance', () => ({ + __esModule: true, + default: jest.fn().mockReturnValue({ + balance: '100', + balanceFiat: '$100', + }), +})); + +jest.mock('../../Stake/constants', () => ({ + isStablecoinLendingFeatureEnabled: jest.fn().mockReturnValue(true), +})); const mockAddress = '0x0000000000000000000000000000000000000000' as Hex; const usdcAddress = '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48' as Hex; const mockInitialState = { - ...backgroundState, engine: { backgroundState: { ...backgroundState, @@ -19,8 +31,8 @@ const mockInitialState = { tokenBalances: { [mockAddress]: { [CHAIN_IDS.MAINNET]: { - [mockAddress]: '0x56bc75e2d63100000', // 100 ETH - [usdcAddress]: '0x5f5e100', // 100 USDC + [mockAddress]: '0x56bc75e2d63100000' as Hex, // 100 ETH + [usdcAddress]: '0x5f5e100' as Hex, // 100 USDC }, }, }, @@ -60,13 +72,27 @@ const mockInitialState = { [CHAIN_IDS.MAINNET]: { chainId: CHAIN_IDS.MAINNET, nativeCurrency: 'ETH', - ticker: 'ETH', + rpcEndpoints: [ + { + networkClientId: CHAIN_IDS.MAINNET, + }, + ], + }, + }, + }, + AccountsController: { + internalAccounts: { + selectedAccount: mockAddress, + accounts: { + [mockAddress]: { + address: mockAddress, + }, }, }, }, }, }, -} as const; +}; const mockEthToken: TokenI = { ...MOCK_ETH_MAINNET_ASSET, @@ -92,6 +118,11 @@ const mockUSDCToken: TokenI = { describe('useEarnTokenDetails', () => { it('returns token details with balance and APR for ETH', () => { + (useBalance as jest.Mock).mockReturnValue({ + balanceFiatNumber: 200000, + balanceWei: '1000000000000000000', + }); + const { result } = renderHookWithProvider(() => useEarnTokenDetails(), { state: mockInitialState, }); @@ -101,8 +132,10 @@ describe('useEarnTokenDetails', () => { expect(tokenDetails).toEqual({ ...mockEthToken, apr: '2.3', - tokenBalanceFormatted: '100 ETH', + balanceFormatted: '100 ETH', balanceFiat: '$200,000.00', + balanceFiatNumber: 200000, + balanceMinimalUnit: '1000000000000000000', estimatedAnnualRewardsFormatted: '$4600', }); }); @@ -118,8 +151,10 @@ describe('useEarnTokenDetails', () => { expect(tokenDetails).toEqual({ ...mockUSDCToken, apr: '4.5', - tokenBalanceFormatted: '100 USDC', + balanceFormatted: '100 USDC', balanceFiat: '$100', + balanceFiatNumber: 100, + balanceMinimalUnit: '100000000', estimatedAnnualRewardsFormatted: '$5', }); }); @@ -176,17 +211,43 @@ describe('useEarnTokenDetails', () => { }); it('returns estimatedAnnualRewardsFormatted as empty string when token balance is empty', () => { - const usdcTokenWithEmptyBalance = { - ...mockUSDCToken, - balanceFiat: '', - }; - const { result } = renderHookWithProvider(() => useEarnTokenDetails(), { - state: mockInitialState, + state: { + ...mockInitialState, + engine: { + ...mockInitialState.engine, + backgroundState: { + ...mockInitialState.engine.backgroundState, + TokenBalancesController: { + ...mockInitialState.engine.backgroundState + .TokenBalancesController, + tokenBalances: { + ...mockInitialState.engine.backgroundState + .TokenBalancesController.tokenBalances, + [mockAddress]: { + ...mockInitialState.engine.backgroundState + .TokenBalancesController.tokenBalances[mockAddress], + [CHAIN_IDS.MAINNET]: { + ...mockInitialState.engine.backgroundState + .TokenBalancesController.tokenBalances[mockAddress][ + CHAIN_IDS.MAINNET + ], + [usdcAddress]: '0x0', + }, + }, + }, + }, + }, + }, + }, }); const { estimatedAnnualRewardsFormatted } = - result.current.getTokenWithBalanceAndApr(usdcTokenWithEmptyBalance); + result.current.getTokenWithBalanceAndApr({ + ...mockUSDCToken, + balance: '', + balanceFiat: '', + }); expect(estimatedAnnualRewardsFormatted).toBe(''); }); diff --git a/app/components/UI/Earn/hooks/useEarnTokenDetails.ts b/app/components/UI/Earn/hooks/useEarnTokenDetails.ts new file mode 100644 index 000000000000..5d5ae06c8bee --- /dev/null +++ b/app/components/UI/Earn/hooks/useEarnTokenDetails.ts @@ -0,0 +1,150 @@ +import { hexToBN } from '@metamask/controller-utils'; +import { Hex } from '@metamask/utils'; +import BigNumber from 'bignumber.js'; +import BN4 from 'bnjs4'; +import { useCallback } from 'react'; +import { useSelector } from 'react-redux'; +import { selectSelectedInternalAccountAddress } from '../../../../selectors/accountsController'; +import { + selectCurrencyRates, + selectCurrentCurrency, +} from '../../../../selectors/currencyRateController'; +import { selectNetworkConfigurations } from '../../../../selectors/networkController'; +import { selectTokensBalances } from '../../../../selectors/tokenBalancesController'; +import { selectTokenMarketData } from '../../../../selectors/tokenRatesController'; +import { addCurrencySymbol } from '../../../../util/number'; +import { isStablecoinLendingFeatureEnabled } from '../../Stake/constants'; +import useBalance from '../../Stake/hooks/useBalance'; +import { TokenI } from '../../Tokens/types'; +import { deriveBalanceFromAssetMarketDetails } from '../../Tokens/util'; + +// Mock APR values - will be replaced with real API data later +const MOCK_APR_VALUES: { [symbol: string]: string } = { + Ethereum: '2.3', + USDC: '4.5', + USDT: '4.1', + DAI: '5.0', +}; + +export interface EarnTokenDetails extends TokenI { + apr: string; + balanceFormatted: string; + balanceMinimalUnit: string; + balanceFiat?: string; + balanceFiatNumber: number; + estimatedAnnualRewardsFormatted: string; +} + +export const useEarnTokenDetails = () => { + const multiChainTokenBalance = useSelector(selectTokensBalances); + const multiChainMarketData = useSelector(selectTokenMarketData); + const multiChainCurrencyRates = useSelector(selectCurrencyRates); + const selectedInternalAccountAddress = useSelector( + selectSelectedInternalAccountAddress, + ); + const networkConfigurations = useSelector(selectNetworkConfigurations); + const currentCurrency = useSelector(selectCurrentCurrency); + + const { balanceWei, balanceFiatNumber } = useBalance(); + + const getTokenWithBalanceAndApr = useCallback( + (token: TokenI): EarnTokenDetails => { + const tokenChainId = token.chainId as Hex; + const nativeCurrency = + networkConfigurations?.[tokenChainId]?.nativeCurrency; + const tokenBalanceMinimalUnit = token.isETH + ? balanceWei + : hexToBN( + multiChainTokenBalance?.[selectedInternalAccountAddress as Hex]?.[ + tokenChainId + ]?.[token.address as Hex], + ); + + const { balanceValueFormatted, balanceFiat, balanceFiatCalculation } = + deriveBalanceFromAssetMarketDetails( + token, + multiChainMarketData?.[tokenChainId] || {}, + multiChainTokenBalance?.[selectedInternalAccountAddress as Hex]?.[ + tokenChainId + ] || {}, + multiChainCurrencyRates?.[nativeCurrency]?.conversionRate ?? 0, + currentCurrency || '', + ); + + let assetBalanceFiatNumber = balanceFiatNumber; + if (!token.isETH) { + assetBalanceFiatNumber = + !balanceFiatCalculation || isNaN(balanceFiatCalculation) + ? 0 + : balanceFiatCalculation; + } + + let estimatedAnnualRewardsFormatted = ''; + let apr = '0.0'; + if (isStablecoinLendingFeatureEnabled()) { + apr = MOCK_APR_VALUES[token.symbol] || apr; + const rewardRateDecimal = new BigNumber(apr).dividedBy(100).toNumber(); + const estimatedAnnualRewardsDecimal = new BigNumber( + assetBalanceFiatNumber, + ) + .multipliedBy(rewardRateDecimal) + .toNumber(); + if ( + !Number.isNaN(estimatedAnnualRewardsDecimal) && + estimatedAnnualRewardsDecimal > 0 + ) { + // Show cents ($0.50) for small amounts. Otherwise round up to nearest dollar ($2). + const numDecimalPlacesToShow = + estimatedAnnualRewardsDecimal > 1 ? 0 : 2; + + estimatedAnnualRewardsFormatted = `${addCurrencySymbol( + new BigNumber(estimatedAnnualRewardsDecimal).toFixed( + numDecimalPlacesToShow, + BigNumber.ROUND_UP, + ), + currentCurrency, + )}`; + } + } + + return { + ...token, + // minimal unit balance of the asset, the most accurate + // i.e. 1000000 would = 1 USDC with 6 decimals + balanceMinimalUnit: new BN4( + tokenBalanceMinimalUnit.toString(), + ).toString(), + // formatted ui balance of the asset with ticker + // i.e. 1 ETH or 100.12345 USDC or < 0.00001 ETH + balanceFormatted: balanceValueFormatted, + // formatted ui fiat balance of the asset + // i.e. $100.12 USD or < $0.01 USD + balanceFiat, + // fiat balance of the asset in number format, the most accurate + // i.e. 100.12345 + balanceFiatNumber: assetBalanceFiatNumber, + // asset apr info + // i.e. 4.5% + apr, + // estimated annual rewards + // formatted with currency symbol for current currency + // i.e. $2.12 or £0.00 + estimatedAnnualRewardsFormatted, + }; + }, + [ + currentCurrency, + multiChainCurrencyRates, + multiChainMarketData, + multiChainTokenBalance, + networkConfigurations, + selectedInternalAccountAddress, + balanceWei, + balanceFiatNumber, + ], + ); + + return { + getTokenWithBalanceAndApr, + }; +}; diff --git a/app/components/UI/Earn/hooks/useEarnWithdrawInput.test.ts b/app/components/UI/Earn/hooks/useEarnWithdrawInput.test.ts new file mode 100644 index 000000000000..b9d3a1a09737 --- /dev/null +++ b/app/components/UI/Earn/hooks/useEarnWithdrawInput.test.ts @@ -0,0 +1,212 @@ +import BN4 from 'bnjs4'; +import { CHAIN_IDS } from '@metamask/transaction-controller'; +import { RootState } from '../../../../reducers'; +import { MOCK_ACCOUNTS_CONTROLLER_STATE } from '../../../../util/test/accountsControllerTestUtils'; +import { backgroundState } from '../../../../util/test/initial-root-state'; +import { + DeepPartial, + renderHookWithProvider, +} from '../../../../util/test/renderWithProvider'; +import useEarnWithdrawInputHandlers from './useEarnWithdrawInput'; +import useBalance from '../../Stake/hooks/useBalance'; +import useInputHandler from './useInput'; +import { EarnTokenDetails } from './useEarnTokenDetails'; + +jest.mock('../../Stake/hooks/useBalance'); +jest.mock('./useInput'); + +jest.mock('../../../../selectors/currencyRateController', () => ({ + selectCurrentCurrency: jest.fn(() => 'USD'), +})); + +describe('useEarnWithdrawInputHandlers', () => { + const mockEarnToken: EarnTokenDetails = { + balanceMinimalUnit: '1000000000000000000', // 1 ETH + decimals: 18, + ticker: 'ETH', + symbol: 'ETH', + isETH: true, + balanceFiat: '2000', + balanceFormatted: '1 ETH', + apr: '5%', + balanceFiatNumber: 2000, + estimatedAnnualRewardsFormatted: '0.05 ETH', + address: '0x1234567890123456789012345678901234567890', + name: 'Ethereum', + logo: 'https://example.com/eth-logo.png', + aggregators: ['uniswap', 'sushiswap'], + image: 'https://example.com/eth-logo.png', + balance: '1', + chainId: CHAIN_IDS.MAINNET, + isNative: true, + }; + + const mockConversionRate = 2000; // 1 ETH = $2000 + const mockExchangeRate = 1; + + const mockInitialState = { + engine: { + backgroundState: { + ...backgroundState, + AccountsController: MOCK_ACCOUNTS_CONTROLLER_STATE, + MultichainNetworkController: { + isEvmSelected: true, + selectedMultichainNetworkChainId: undefined, + multichainNetworkConfigurationsByChainId: { + [CHAIN_IDS.MAINNET]: { + chainId: CHAIN_IDS.MAINNET, + nativeCurrency: 'ETH', + rpcEndpoints: [ + { + networkClientId: 'mainnet', + }, + ], + defaultBlockExplorerUrlIndex: 0, + blockExplorerUrls: ['https://etherscan.io'], + }, + }, + }, + }, + }, + }; + + const defaultProps = { + earnToken: mockEarnToken, + conversionRate: mockConversionRate, + exchangeRate: mockExchangeRate, + }; + + const renderHook = ( + state: DeepPartial<RootState> = mockInitialState, + props = defaultProps, + ) => + renderHookWithProvider(() => useEarnWithdrawInputHandlers(props), { + state, + }); + + beforeEach(() => { + jest.clearAllMocks(); + + (useBalance as jest.Mock).mockReturnValue({ + stakedBalanceWei: '1000000000000000000', // 1 ETH + formattedStakedBalanceETH: '1 ETH', + stakedBalanceFiatNumber: 2000, + }); + + (useInputHandler as jest.Mock).mockReturnValue({ + amountToken: '0', + amountTokenMinimalUnit: new BN4(0), + amountFiatNumber: '0', + isFiat: false, + currencyToggleValue: '0 USD', + isNonZeroAmount: false, + isOverMaximum: false, + handleKeypadChange: jest.fn(), + handleCurrencySwitch: jest.fn(), + percentageOptions: [ + { value: 0.25, label: '25%' }, + { value: 0.5, label: '50%' }, + { value: 0.75, label: '75%' }, + { value: 1, label: '100%' }, + ], + handleQuickAmountPress: jest.fn(), + currentCurrency: 'USD', + }); + }); + + it('should initialize with default values', () => { + const { result } = renderHook(); + + expect(result.current.isFiat).toBe(false); + expect(result.current.currentCurrency).toBe('USD'); + expect(result.current.isNonZeroAmount).toBe(false); + expect(result.current.amountToken).toBe('0'); + expect(result.current.amountTokenMinimalUnit).toEqual(new BN4(0)); + expect(result.current.amountFiatNumber).toBe('0'); + expect(result.current.isOverMaximum.isOverMaximumEth).toBe(false); + expect(result.current.isOverMaximum.isOverMaximumToken).toBe(false); + expect(result.current.handleCurrencySwitch).toBeDefined(); + expect(result.current.currencyToggleValue).toBe('0 USD'); + expect(result.current.percentageOptions).toBeDefined(); + expect(result.current.handleQuickAmountPress).toBeDefined(); + expect(result.current.handleKeypadChange).toBeDefined(); + expect(result.current.earnBalanceValue).toBe('1 ETH'); + }); + + it('should set earn balance value in fiat when isFiat is true', () => { + (useInputHandler as jest.Mock).mockReturnValue({ + amountToken: '0', + amountTokenMinimalUnit: new BN4(0), + amountFiatNumber: '0', + isFiat: true, + currencyToggleValue: '0 ETH', + isNonZeroAmount: false, + isOverMaximum: false, + handleKeypadChange: jest.fn(), + handleCurrencySwitch: jest.fn(), + percentageOptions: [], + handleQuickAmountPress: jest.fn(), + currentCurrency: 'USD', + }); + + const { result } = renderHook(); + + expect(result.current.isFiat).toBe(true); + expect(result.current.earnBalanceValue).toBe('2000 USD'); + }); + + it('should use stakedBalanceWei when token is ETH', () => { + renderHook(); + + // Verify useInputHandler was called with the correct balance + expect(useInputHandler).toHaveBeenCalledWith( + expect.objectContaining({ + balance: '1000000000000000000', + decimals: 18, + ticker: 'ETH', + }), + ); + }); + + it('should use "0" balance when token is not ETH', () => { + const props = { + earnToken: { + ...mockEarnToken, + isETH: false, + }, + conversionRate: mockConversionRate, + exchangeRate: mockExchangeRate, + }; + + renderHook(mockInitialState, props); + + // Verify useInputHandler was called with "0" balance + expect(useInputHandler).toHaveBeenCalledWith( + expect.objectContaining({ + balance: '0', + }), + ); + }); + + it('should pass along isOverMaximum values correctly', () => { + (useInputHandler as jest.Mock).mockReturnValue({ + amountToken: '1.5', + amountTokenMinimalUnit: new BN4('1500000000000000000'), + amountFiatNumber: '3000', + isFiat: false, + currencyToggleValue: '3000 USD', + isNonZeroAmount: true, + isOverMaximum: true, + handleKeypadChange: jest.fn(), + handleCurrencySwitch: jest.fn(), + percentageOptions: [], + handleQuickAmountPress: jest.fn(), + currentCurrency: 'USD', + }); + + const { result } = renderHook(); + + expect(result.current.isOverMaximum.isOverMaximumEth).toBe(true); + expect(result.current.isOverMaximum.isOverMaximumToken).toBe(true); + }); +}); diff --git a/app/components/UI/Earn/hooks/useEarnWithdrawInput.ts b/app/components/UI/Earn/hooks/useEarnWithdrawInput.ts new file mode 100644 index 000000000000..c45a6ee94665 --- /dev/null +++ b/app/components/UI/Earn/hooks/useEarnWithdrawInput.ts @@ -0,0 +1,79 @@ +import { useMemo } from 'react'; +import useBalance from '../../Stake/hooks/useBalance'; +import { EarnTokenDetails } from './useEarnTokenDetails'; +import useInputHandler from './useInput'; + +const useEarnWithdrawInputHandlers = ({ + earnToken, + conversionRate, + exchangeRate, +}: { + earnToken: EarnTokenDetails; + conversionRate: number; + exchangeRate: number; +}) => { + const { + stakedBalanceWei, + formattedStakedBalanceETH, + stakedBalanceFiatNumber, + } = useBalance(); + + // TODO: implement balanceMinimalUnit value for the earn token's underlying token + // once we have this data to link the two tokens in the state + const balanceMinimalUnit = earnToken.isETH ? stakedBalanceWei : '0'; + + const { + amountToken, + amountTokenMinimalUnit, + amountFiatNumber, + isFiat, + currencyToggleValue, + isNonZeroAmount, + isOverMaximum: isOverMaximumFromInputHandler, + handleKeypadChange, + handleCurrencySwitch, + percentageOptions, + handleQuickAmountPress, + currentCurrency, + } = useInputHandler({ + balance: balanceMinimalUnit, + decimals: earnToken.decimals, + ticker: earnToken.ticker ?? earnToken.symbol, + conversionRate, + exchangeRate, + }); + + // TODO: this does not consider gas fee, as staking does not seem to have one for withdrawal + // once we use the lending contracts, we may need to consider gas here + const isOverMaximum = useMemo( + () => ({ + isOverMaximumEth: isOverMaximumFromInputHandler, + isOverMaximumToken: isOverMaximumFromInputHandler, + }), + [isOverMaximumFromInputHandler], + ); + + // TODO: implement balanceMinimalUnit value for the earn token's underlying token + // once we have this data to link the two tokens in the state + const earnBalanceValue = isFiat + ? `${stakedBalanceFiatNumber?.toString()} ${currentCurrency.toUpperCase()}` + : formattedStakedBalanceETH; + + return { + isFiat, + currentCurrency, + isNonZeroAmount, + amountToken, + amountTokenMinimalUnit, + amountFiatNumber, + isOverMaximum, + handleCurrencySwitch, + currencyToggleValue, + percentageOptions, + handleQuickAmountPress, + handleKeypadChange, + earnBalanceValue, + }; +}; + +export default useEarnWithdrawInputHandlers; diff --git a/app/components/UI/Earn/hooks/useInput.test.tsx b/app/components/UI/Earn/hooks/useInput.test.tsx new file mode 100644 index 000000000000..60dcd95f1da3 --- /dev/null +++ b/app/components/UI/Earn/hooks/useInput.test.tsx @@ -0,0 +1,274 @@ +import { CHAIN_IDS } from '@metamask/transaction-controller'; +import { act } from '@testing-library/react-hooks'; +import BN4 from 'bnjs4'; +import { RootState } from '../../../../reducers'; +import { MOCK_ACCOUNTS_CONTROLLER_STATE } from '../../../../util/test/accountsControllerTestUtils'; +import { backgroundState } from '../../../../util/test/initial-root-state'; +import { + DeepPartial, + renderHookWithProvider, +} from '../../../../util/test/renderWithProvider'; +import useInputHandler, { InputHandlerParams } from './useInput'; +import { isStablecoinLendingFeatureEnabled } from '../../Stake/constants'; + +// mock stablecoin lending feature flag +jest.mock('../../Stake/constants', () => ({ + isStablecoinLendingFeatureEnabled: jest.fn(() => false), +})); + +jest.mock('../../../../selectors/currencyRateController', () => ({ + selectCurrentCurrency: jest.fn(() => 'USD'), +})); + +jest.mock('../../../../selectors/networkController', () => ({ + selectChainId: jest.fn(() => '0x1'), + selectEvmChainId: jest.fn(() => '0x1'), + selectEvmNetworkConfigurationsByChainId: jest.fn(() => ({ + '0x1': { + chainId: '0x1', + nativeCurrency: 'ETH', + rpcEndpoints: [{ networkClientId: 'mainnet' }], + }, + })), + selectIsAllNetworks: jest.fn(() => true), + selectIsPopularNetwork: jest.fn(() => true), +})); + +describe('useInputHandler', () => { + beforeEach(() => { + jest.clearAllMocks(); + }); + + const mockInitialState = { + engine: { + backgroundState: { + ...backgroundState, + AccountsController: MOCK_ACCOUNTS_CONTROLLER_STATE, + MultichainNetworkController: { + isEvmSelected: true, + selectedMultichainNetworkChainId: undefined, + multichainNetworkConfigurationsByChainId: {}, + }, + NetworkController: { + selectedNetworkClientId: 'mainnet', + networkConfigurationsByChainId: { + [CHAIN_IDS.MAINNET]: { + chainId: CHAIN_IDS.MAINNET, + nativeCurrency: 'ETH', + rpcEndpoints: [ + { + networkClientId: 'mainnet', + }, + ], + defaultBlockExplorerUrlIndex: 0, + blockExplorerUrls: ['https://etherscan.io'], + }, + }, + }, + }, + }, + }; + + const defaultProps = { + balance: '1000000000000000000', // 1 ETH + decimals: 18, + ticker: 'ETH', + conversionRate: 2000, // 1 ETH = $2000 + exchangeRate: 1, + }; + + const renderHook = ( + state: DeepPartial<RootState> = mockInitialState, + props = defaultProps, + ) => + renderHookWithProvider( + (overrideProps: DeepPartial<InputHandlerParams>) => + useInputHandler({ ...props, ...overrideProps }), + { state }, + ); + + it('should initialize with default values', () => { + const { result } = renderHook(); + + expect(result.current.amountToken).toBe('0'); + expect(result.current.amountTokenMinimalUnit).toEqual(new BN4(0)); + expect(result.current.amountFiatNumber).toBe('0'); + expect(result.current.isFiat).toBe(false); + expect(result.current.isNonZeroAmount).toBe(false); + expect(result.current.currentCurrency).toBe('USD'); + expect(result.current.currencyToggleValue).toBe('0 USD'); + }); + + it('should initialize with default values with stablecoin lending enabled', () => { + jest.mocked(isStablecoinLendingFeatureEnabled).mockReturnValue(true); + + const { result } = renderHook(); + + expect(result.current.amountToken).toBe('0'); + expect(result.current.amountTokenMinimalUnit).toEqual(new BN4(0)); + expect(result.current.amountFiatNumber).toBe('0'); + expect(result.current.isFiat).toBe(false); + expect(result.current.isNonZeroAmount).toBe(false); + expect(result.current.currentCurrency).toBe('USD'); + expect(result.current.currencyToggleValue).toBe('$0'); + }); + + it('should handle token input correctly', () => { + const { result } = renderHook(); + + act(() => { + result.current.handleTokenInput('0.5'); + }); + + expect(result.current.amountToken).toBe('0.5'); + expect(result.current.amountFiatNumber).toBe('1000'); // 0.5 ETH = $1000 + expect(result.current.amountTokenMinimalUnit).toEqual( + new BN4('500000000000000000'), + ); + }); + + it('should handle fiat input correctly', () => { + const { result } = renderHook(); + + act(() => { + result.current.handleFiatInput('1000'); + }); + + expect(result.current.amountFiatNumber).toBe('1000'); + expect(result.current.amountToken).toBe('0.5'); // $1000 = 0.5 ETH + expect(result.current.amountTokenMinimalUnit).toEqual( + new BN4('500000000000000000'), + ); + }); + + it('should handle currency switch', () => { + const { result } = renderHook(); + + act(() => { + result.current.handleCurrencySwitch(); + }); + + expect(result.current.isFiat).toBe(true); + expect(result.current.currencyToggleValue).toBe('0 ETH'); + }); + + it('should handle keypad input with maximum digits', () => { + const { result } = renderHook(); + + // set the token input + act(() => { + result.current.handleTokenInput('123456789.123'); + }); + + // change the token input + act(() => { + result.current.handleKeypadChange({ + value: '123456789.1234', + pressedKey: '4', + }); + }); + + // The hook allows up to 12 digits total, including decimal places + expect(result.current.amountToken).toBe('123456789.123'); + }); + + it('should handle keypad input with maximum fraction digits', () => { + const { result } = renderHook(); + + act(() => { + result.current.handleTokenInput('32.12345'); + }); + + act(() => { + result.current.handleKeypadChange({ + value: '32.123456', + pressedKey: '6', + }); + }); + + // The hook allows up to 5 fraction digits total + expect(result.current.amountToken).toBe('32.12345'); + expect(result.current.amountTokenMinimalUnit).toEqual( + new BN4('32123450000000000000'), + ); + }); + + it('should handle keypad input when value is NaN', () => { + // set balance to 10 wei + const { result } = renderHook(undefined, { + balance: '10', + decimals: 18, + ticker: 'ETH', + conversionRate: 2000, + exchangeRate: 1, + }); + + // quick press 25% + act(() => { + result.current.handleQuickAmountPress({ value: 0.25 }); + }); + + // ui result should be < 0.00001 which is NaN + expect(result.current.amountToken).toBe('< 0.00001'); + expect(result.current.amountTokenMinimalUnit).toEqual(new BN4('2')); + + // attempt to press 2 and value should reset to 2 + act(() => { + result.current.handleKeypadChange({ + value: '< 0.000012', + pressedKey: '2', + }); + }); + + expect(result.current.amountToken).toBe('2'); + expect(result.current.amountTokenMinimalUnit).toEqual( + new BN4('2000000000000000000'), + ); + expect(result.current.amountFiatNumber).toBe('4000'); + }); + + it('should handle quick amount press', () => { + const { result } = renderHook(); + + act(() => { + result.current.handleQuickAmountPress({ value: 0.5 }); // 50% + }); + + expect(result.current.amountToken).toBe('0.5'); + expect(result.current.amountFiatNumber).toBe('1000'); + }); + + it('should handle max input', () => { + const { result } = renderHook(); + const maxAmount = new BN4('1000000000000000000'); // 1 ETH + + act(() => { + result.current.handleMaxInput(maxAmount); + }); + + expect(result.current.amountToken).toBe('1'); + expect(result.current.amountFiatNumber).toBe('2000'); + }); + + it('should reset values when ticker changes', () => { + const { result, rerender } = renderHook(mockInitialState, { + ...defaultProps, + ticker: 'ETH', + }); + + act(() => { + result.current.handleTokenInput('1'); + }); + + expect(result.current.amountToken).toBe('1'); + + rerender({ + ...defaultProps, + ticker: 'DAI', + }); + + expect(result.current.amountToken).toBe('0'); + expect(result.current.amountTokenMinimalUnit).toEqual(new BN4('0')); + expect(result.current.amountFiatNumber).toBe('0'); + }); +}); diff --git a/app/components/UI/Earn/hooks/useInput.ts b/app/components/UI/Earn/hooks/useInput.ts new file mode 100644 index 000000000000..29a2acc66f08 --- /dev/null +++ b/app/components/UI/Earn/hooks/useInput.ts @@ -0,0 +1,231 @@ +import BN4 from 'bnjs4'; +import { useCallback, useEffect, useMemo, useState } from 'react'; +import { useSelector } from 'react-redux'; +import { strings } from '../../../../../locales/i18n'; +import { selectCurrentCurrency } from '../../../../selectors/currencyRateController'; +import { + balanceToFiatNumber, + fiatNumberToTokenMinimalUnit, + fromTokenMinimalUnit, + renderFromTokenMinimalUnit, + toTokenMinimalUnit, +} from '../../../../util/number'; +import { selectChainId } from '../../../../selectors/networkController'; +import { isStablecoinLendingFeatureEnabled } from '../../Stake/constants'; + +export interface InputHandlerParams { + balance: string; + decimals: number; + ticker: string; + conversionRate: number; + exchangeRate: number; +} + +const MAX_DIGITS = 12; +const MAX_FRACTION_DIGITS = 5; + +const useInputHandler = ({ + balance, + decimals = 18, + ticker = 'ETH', + exchangeRate = 1, + conversionRate, +}: InputHandlerParams) => { + // the asset ui amount, lowest possible amount is < 0.00001 which is NaN + const [amountToken, setAmountToken] = useState('0'); + // the asset minimal unit amount, regardless of the ui amount, this will be most accurate + const [amountTokenMinimalUnit, setAmountTokenMinimalUnit] = useState<BN4>( + new BN4(0), + ); + // the converted fiat number string i.e. 2.12 + const [amountFiatNumber, setAmountFiatNumber] = useState('0'); + // currency toggle between fiat / token as primary + const [isFiat, setIsFiat] = useState<boolean>(false); + // the current selected currency in app settings + const currentCurrency = useSelector(selectCurrentCurrency); + // the current selected chain id + const chainId = useSelector(selectChainId); + + const isNonZeroAmount = useMemo( + () => amountTokenMinimalUnit.gt(new BN4(0)), + [amountTokenMinimalUnit], + ); + + const balanceMinimalUnit = useMemo(() => new BN4(balance), [balance]); + + const isOverMaximum = useMemo( + () => amountTokenMinimalUnit.gt(balanceMinimalUnit), + [amountTokenMinimalUnit, balanceMinimalUnit], + ); + + const handleTokenInput = useCallback( + (value: string) => { + setAmountToken(value); + setAmountTokenMinimalUnit(new BN4(toTokenMinimalUnit(value, decimals))); + const balanceFiatNumber = balanceToFiatNumber( + value, + conversionRate, + exchangeRate, + 2, + ).toString(); + setAmountFiatNumber(balanceFiatNumber); + }, + [conversionRate, exchangeRate, decimals], + ); + + const handleFiatInput = useCallback( + (value: string) => { + const tokenMinimalUnit = fiatNumberToTokenMinimalUnit( + value, + conversionRate, + exchangeRate, + decimals, + ) as BN4; + const tokenValue = renderFromTokenMinimalUnit( + tokenMinimalUnit.toString(), + decimals, + 5, + ); + setAmountFiatNumber(value); + setAmountToken(tokenValue); + setAmountTokenMinimalUnit(tokenMinimalUnit); + }, + [conversionRate, decimals, exchangeRate], + ); + + const handleKeypadChange = useCallback( + ({ value, pressedKey }) => { + const digitsOnly = value.replace(/[^0-9.]/g, ''); + const [whole = '', fraction = ''] = digitsOnly.split('.'); + const totalDigits = whole.length + fraction.length; + const isValueNaN = isNaN(parseFloat(value)); + + if ( + pressedKey === 'BACK' || + isValueNaN || + (totalDigits <= MAX_DIGITS && + fraction.length <= MAX_FRACTION_DIGITS && + value !== amountToken) + ) { + if (isValueNaN) { + if ( + pressedKey === digitsOnly[digitsOnly.length - 1] || + pressedKey === 'PERIOD' + ) { + value = pressedKey === 'PERIOD' ? '0.' : pressedKey; + } else { + value = '0'; + } + } + isFiat ? handleFiatInput(value) : handleTokenInput(value); + } + }, + [handleTokenInput, handleFiatInput, isFiat, amountToken], + ); + + const handleCurrencySwitch = useCallback(() => { + setIsFiat(!isFiat); + }, [isFiat]); + + const percentageOptions = [ + { value: 0.25, label: '25%' }, + { value: 0.5, label: '50%' }, + { value: 0.75, label: '75%' }, + { value: 1, label: strings('stake.max') }, + ]; + + const handleQuickAmountPress = useCallback( + ({ value }: { value: number }) => { + const percentage = value * 100; + const amountPercentage = balanceMinimalUnit + .mul(new BN4(percentage)) + .div(new BN4(100)); + const newTokenAmount = renderFromTokenMinimalUnit( + amountPercentage, + decimals, + 5, + ); + const newBalanceFiatNumber = balanceToFiatNumber( + fromTokenMinimalUnit(amountPercentage, decimals), + conversionRate, + exchangeRate, + 2, + ); + setAmountToken(newTokenAmount); + setAmountTokenMinimalUnit(amountPercentage); + setAmountFiatNumber(newBalanceFiatNumber.toString()); + }, + [balanceMinimalUnit, conversionRate, decimals, exchangeRate], + ); + + const handleMaxInput = useCallback( + (maxStakeableMinimalUnit: BN4) => { + const tokenValue = renderFromTokenMinimalUnit( + maxStakeableMinimalUnit, + decimals, + 5, + ); + const fiatValue = balanceToFiatNumber( + fromTokenMinimalUnit(maxStakeableMinimalUnit, decimals), + conversionRate, + exchangeRate, + 2, + ).toString(); + setAmountTokenMinimalUnit(maxStakeableMinimalUnit); + setAmountToken(tokenValue); + setAmountFiatNumber(fiatValue); + }, + [conversionRate, decimals, exchangeRate], + ); + + const isStablecoinLendingEnabled = isStablecoinLendingFeatureEnabled(); + + const currencyToggleValue = useMemo(() => { + const upperCaseCurrentCurrency = currentCurrency.toUpperCase(); + let currencySymbol = ''; + let currencyTicker = ` ${currentCurrency.toUpperCase()}`; + if (upperCaseCurrentCurrency === 'USD') { + currencySymbol = '$'; + currencyTicker = ''; + } + const amountTokenText = `${amountToken} ${ticker}`; + const amountFiatText = isStablecoinLendingEnabled + ? `${currencySymbol}${amountFiatNumber}${currencyTicker}` + : `${amountFiatNumber} ${currentCurrency.toUpperCase()}`; + return isFiat ? amountTokenText : amountFiatText; + }, [ + isFiat, + amountToken, + ticker, + amountFiatNumber, + currentCurrency, + isStablecoinLendingEnabled, + ]); + + useEffect(() => { + setAmountToken('0'); + setAmountTokenMinimalUnit(new BN4(0)); + setAmountFiatNumber('0'); + }, [ticker, chainId]); + + return { + amountToken, + amountTokenMinimalUnit, + amountFiatNumber, + isFiat, + currencyToggleValue, + isNonZeroAmount, + isOverMaximum, + handleTokenInput, + handleFiatInput, + handleKeypadChange, + handleCurrencySwitch, + percentageOptions, + handleQuickAmountPress, + currentCurrency, + conversionRate, + handleMaxInput, + }; +}; + +export default useInputHandler; diff --git a/app/components/UI/EditGasFee1559/__snapshots__/index.test.tsx.snap b/app/components/UI/EditGasFee1559/__snapshots__/index.test.tsx.snap index d1dd983557ab..30e44222eb06 100644 --- a/app/components/UI/EditGasFee1559/__snapshots__/index.test.tsx.snap +++ b/app/components/UI/EditGasFee1559/__snapshots__/index.test.tsx.snap @@ -38,7 +38,7 @@ exports[`EditGasFee1559 should render correctly 1`] = ` <TouchableOpacity> <Icon allowFontScaling={false} - color="#141618" + color="#121314" name="ios-arrow-back" size={24} /> @@ -264,7 +264,7 @@ exports[`EditGasFee1559 should render correctly 1`] = ` size={14} style={ { - "color": "#9fa6ae", + "color": "#9ca1af", } } /> @@ -320,7 +320,7 @@ exports[`EditGasFee1559 should render correctly 1`] = ` size={14} style={ { - "color": "#9fa6ae", + "color": "#9ca1af", } } /> @@ -397,7 +397,7 @@ exports[`EditGasFee1559 should render correctly 1`] = ` size={14} style={ { - "color": "#9fa6ae", + "color": "#9ca1af", } } /> diff --git a/app/components/UI/EditGasFeeLegacy/__snapshots__/index.test.tsx.snap b/app/components/UI/EditGasFeeLegacy/__snapshots__/index.test.tsx.snap index b64630444d75..2ad7dc767f90 100644 --- a/app/components/UI/EditGasFeeLegacy/__snapshots__/index.test.tsx.snap +++ b/app/components/UI/EditGasFeeLegacy/__snapshots__/index.test.tsx.snap @@ -38,7 +38,7 @@ exports[`EditGasFeeLegacy should render correctly 1`] = ` <TouchableOpacity> <Icon allowFontScaling={false} - color="#141618" + color="#121314" name="ios-arrow-back" size={24} /> @@ -178,7 +178,7 @@ exports[`EditGasFeeLegacy should render correctly 1`] = ` size={14} style={ { - "color": "#9fa6ae", + "color": "#9ca1af", } } /> @@ -234,7 +234,7 @@ exports[`EditGasFeeLegacy should render correctly 1`] = ` size={14} style={ { - "color": "#9fa6ae", + "color": "#9ca1af", } } /> diff --git a/app/components/UI/EnableAutomaticSecurityChecksModal/__snapshots__/EnableAutomaticSecurityChecksModal.test.tsx.snap b/app/components/UI/EnableAutomaticSecurityChecksModal/__snapshots__/EnableAutomaticSecurityChecksModal.test.tsx.snap index 1f3eb01ee6ab..2be7ed451f40 100644 --- a/app/components/UI/EnableAutomaticSecurityChecksModal/__snapshots__/EnableAutomaticSecurityChecksModal.test.tsx.snap +++ b/app/components/UI/EnableAutomaticSecurityChecksModal/__snapshots__/EnableAutomaticSecurityChecksModal.test.tsx.snap @@ -317,7 +317,7 @@ exports[`EnableAutomaticSecurityChecksModal should render correctly 1`] = ` style={ [ { - "backgroundColor": "#00000099", + "backgroundColor": "#00000066", "bottom": 0, "left": 0, "position": "absolute", @@ -405,8 +405,8 @@ exports[`EnableAutomaticSecurityChecksModal should render correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", + "color": "#121314", + "fontFamily": "CentraNo1-Bold", "fontSize": 32, "fontWeight": "700", "letterSpacing": 0, @@ -422,12 +422,12 @@ exports[`EnableAutomaticSecurityChecksModal should render correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, "textAlign": "center", } } @@ -455,7 +455,7 @@ exports[`EnableAutomaticSecurityChecksModal should render correctly 1`] = ` { "alignItems": "center", "alignSelf": "stretch", - "backgroundColor": "#0376c9", + "backgroundColor": "#4459ff", "borderRadius": 20, "flexDirection": "row", "height": undefined, @@ -471,11 +471,11 @@ exports[`EnableAutomaticSecurityChecksModal should render correctly 1`] = ` style={ { "color": "#ffffff", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -507,12 +507,12 @@ exports[`EnableAutomaticSecurityChecksModal should render correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, + "color": "#4459ff", + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > diff --git a/app/components/UI/HintModal/__snapshots__/index.test.tsx.snap b/app/components/UI/HintModal/__snapshots__/index.test.tsx.snap index e0471136fdbf..b20ecda89ebe 100644 --- a/app/components/UI/HintModal/__snapshots__/index.test.tsx.snap +++ b/app/components/UI/HintModal/__snapshots__/index.test.tsx.snap @@ -90,13 +90,13 @@ exports[`HintModal should render correctly 1`] = ` multiline={true} onChangeText={[Function]} placeholder="e.g. Mom's house" - placeholderTextColor="#9fa6ae" + placeholderTextColor="#9ca1af" style={ { - "borderColor": "#848c96", + "borderColor": "#b7bbc8", "borderRadius": 6, "borderWidth": 1, - "color": "#141618", + "color": "#121314", "minHeight": 76, "padding": 16, "paddingTop": 16, diff --git a/app/components/UI/Identicon/__snapshots__/index.test.tsx.snap b/app/components/UI/Identicon/__snapshots__/index.test.tsx.snap index 06955be160dd..3d3289a35f04 100644 --- a/app/components/UI/Identicon/__snapshots__/index.test.tsx.snap +++ b/app/components/UI/Identicon/__snapshots__/index.test.tsx.snap @@ -4,7 +4,7 @@ exports[`Identicon renders Blockie from address 1`] = ` <View placeholderStyle={ { - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", } } useNativeDriver={true} @@ -52,7 +52,7 @@ exports[`Identicon renders Blockie from address 1`] = ` "backgroundColor": "#eee", }, { - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", }, ] } @@ -65,7 +65,7 @@ exports[`Identicon renders Jazzicon 1`] = ` <View placeholderStyle={ { - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", } } useNativeDriver={true} @@ -223,7 +223,7 @@ exports[`Identicon renders Jazzicon 1`] = ` "backgroundColor": "#eee", }, { - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", }, ] } @@ -236,7 +236,7 @@ exports[`Identicon renders custom URI 1`] = ` <View placeholderStyle={ { - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", } } useNativeDriver={true} @@ -284,7 +284,7 @@ exports[`Identicon renders custom URI 1`] = ` "backgroundColor": "#eee", }, { - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", }, ] } diff --git a/app/components/UI/LedgerModals/Steps/__snapshots__/OpenETHAppStep.test.tsx.snap b/app/components/UI/LedgerModals/Steps/__snapshots__/OpenETHAppStep.test.tsx.snap index a35c84fcd772..4b79f18b0b62 100644 --- a/app/components/UI/LedgerModals/Steps/__snapshots__/OpenETHAppStep.test.tsx.snap +++ b/app/components/UI/LedgerModals/Steps/__snapshots__/OpenETHAppStep.test.tsx.snap @@ -26,8 +26,8 @@ exports[`OpenETHAppStep matches snapshot 1`] = ` style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -35,7 +35,7 @@ exports[`OpenETHAppStep matches snapshot 1`] = ` undefined, undefined, { - "fontFamily": "EuclidCircularB-Bold", + "fontFamily": "CentraNo1-Bold", "fontWeight": "600", }, undefined, @@ -81,8 +81,8 @@ exports[`OpenETHAppStep matches snapshot 1`] = ` style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -118,8 +118,8 @@ exports[`OpenETHAppStep matches snapshot 1`] = ` style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -157,8 +157,8 @@ exports[`OpenETHAppStep matches snapshot 1`] = ` style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -166,7 +166,7 @@ exports[`OpenETHAppStep matches snapshot 1`] = ` undefined, undefined, { - "fontFamily": "EuclidCircularB-Bold", + "fontFamily": "CentraNo1-Bold", "fontWeight": "600", }, undefined, @@ -212,7 +212,7 @@ exports[`OpenETHAppStep matches snapshot 1`] = ` }, { "backgroundColor": "#ffffff", - "borderColor": "#6a737d", + "borderColor": "#686e7d", "borderWidth": 1, }, undefined, @@ -233,13 +233,13 @@ exports[`OpenETHAppStep matches snapshot 1`] = ` null, [ { - "fontFamily": "EuclidCircularB-Bold", + "fontFamily": "CentraNo1-Bold", "fontSize": 14, "fontWeight": "600", "textAlign": "center", }, { - "color": "#6a737d", + "color": "#686e7d", }, { "width": 600, diff --git a/app/components/UI/LedgerModals/Steps/__snapshots__/SearchingForDeviceStep.test.tsx.snap b/app/components/UI/LedgerModals/Steps/__snapshots__/SearchingForDeviceStep.test.tsx.snap index 56a3d6d14ae2..54e3157a58f5 100644 --- a/app/components/UI/LedgerModals/Steps/__snapshots__/SearchingForDeviceStep.test.tsx.snap +++ b/app/components/UI/LedgerModals/Steps/__snapshots__/SearchingForDeviceStep.test.tsx.snap @@ -34,12 +34,12 @@ exports[`SearchingForDeviceStep matches snapshot for Android < 12 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", + "color": "#121314", + "fontFamily": "CentraNo1-Bold", "fontSize": 22, "fontWeight": "700", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -66,12 +66,12 @@ exports[`SearchingForDeviceStep matches snapshot for Android < 12 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -81,12 +81,12 @@ exports[`SearchingForDeviceStep matches snapshot for Android < 12 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, "paddingLeft": 7, } } @@ -97,12 +97,12 @@ exports[`SearchingForDeviceStep matches snapshot for Android < 12 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, "paddingLeft": 7, } } @@ -113,12 +113,12 @@ exports[`SearchingForDeviceStep matches snapshot for Android < 12 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, "paddingLeft": 7, } } @@ -129,12 +129,12 @@ exports[`SearchingForDeviceStep matches snapshot for Android < 12 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, "paddingLeft": 7, } } @@ -145,12 +145,12 @@ exports[`SearchingForDeviceStep matches snapshot for Android < 12 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, "paddingLeft": 7, } } @@ -161,12 +161,12 @@ exports[`SearchingForDeviceStep matches snapshot for Android < 12 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, "paddingLeft": 7, } } @@ -182,14 +182,14 @@ exports[`SearchingForDeviceStep matches snapshot for Android < 12 1`] = ` numberOfLines={2} style={ { - "color": "#0376c9", + "color": "#4459ff", "flex": 1, "flexWrap": "wrap", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, "marginLeft": 20, "marginRight": 20, "marginTop": 40, @@ -236,12 +236,12 @@ exports[`SearchingForDeviceStep matches snapshot for Android 12+ 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", + "color": "#121314", + "fontFamily": "CentraNo1-Bold", "fontSize": 22, "fontWeight": "700", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -268,12 +268,12 @@ exports[`SearchingForDeviceStep matches snapshot for Android 12+ 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -283,12 +283,12 @@ exports[`SearchingForDeviceStep matches snapshot for Android 12+ 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, "paddingLeft": 7, } } @@ -299,12 +299,12 @@ exports[`SearchingForDeviceStep matches snapshot for Android 12+ 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, "paddingLeft": 7, } } @@ -315,12 +315,12 @@ exports[`SearchingForDeviceStep matches snapshot for Android 12+ 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, "paddingLeft": 7, } } @@ -331,12 +331,12 @@ exports[`SearchingForDeviceStep matches snapshot for Android 12+ 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, "paddingLeft": 7, } } @@ -347,12 +347,12 @@ exports[`SearchingForDeviceStep matches snapshot for Android 12+ 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, "paddingLeft": 7, } } @@ -363,12 +363,12 @@ exports[`SearchingForDeviceStep matches snapshot for Android 12+ 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, "paddingLeft": 7, } } @@ -384,14 +384,14 @@ exports[`SearchingForDeviceStep matches snapshot for Android 12+ 1`] = ` numberOfLines={2} style={ { - "color": "#0376c9", + "color": "#4459ff", "flex": 1, "flexWrap": "wrap", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, "marginLeft": 20, "marginRight": 20, "marginTop": 40, diff --git a/app/components/UI/LedgerModals/__snapshots__/LedgerConfirmationModal.test.tsx.snap b/app/components/UI/LedgerModals/__snapshots__/LedgerConfirmationModal.test.tsx.snap index a32dd8fcdfe4..a012f81cb0ae 100644 --- a/app/components/UI/LedgerModals/__snapshots__/LedgerConfirmationModal.test.tsx.snap +++ b/app/components/UI/LedgerModals/__snapshots__/LedgerConfirmationModal.test.tsx.snap @@ -53,12 +53,12 @@ exports[`LedgerConfirmationModal render matches latest snapshot 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", + "color": "#121314", + "fontFamily": "CentraNo1-Bold", "fontSize": 22, "fontWeight": "700", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -85,12 +85,12 @@ exports[`LedgerConfirmationModal render matches latest snapshot 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -100,12 +100,12 @@ exports[`LedgerConfirmationModal render matches latest snapshot 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, "paddingLeft": 7, } } @@ -116,12 +116,12 @@ exports[`LedgerConfirmationModal render matches latest snapshot 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, "paddingLeft": 7, } } @@ -132,12 +132,12 @@ exports[`LedgerConfirmationModal render matches latest snapshot 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, "paddingLeft": 7, } } @@ -148,12 +148,12 @@ exports[`LedgerConfirmationModal render matches latest snapshot 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, "paddingLeft": 7, } } @@ -164,12 +164,12 @@ exports[`LedgerConfirmationModal render matches latest snapshot 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, "paddingLeft": 7, } } @@ -185,14 +185,14 @@ exports[`LedgerConfirmationModal render matches latest snapshot 1`] = ` numberOfLines={2} style={ { - "color": "#0376c9", + "color": "#4459ff", "flex": 1, "flexWrap": "wrap", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, "marginLeft": 20, "marginRight": 20, "marginTop": 40, diff --git a/app/components/UI/LedgerModals/__snapshots__/LedgerMessageSignModal.test.tsx.snap b/app/components/UI/LedgerModals/__snapshots__/LedgerMessageSignModal.test.tsx.snap index 420066eb41b0..9894a9b44718 100644 --- a/app/components/UI/LedgerModals/__snapshots__/LedgerMessageSignModal.test.tsx.snap +++ b/app/components/UI/LedgerModals/__snapshots__/LedgerMessageSignModal.test.tsx.snap @@ -317,7 +317,7 @@ exports[`LedgerMessageSignModal should render correctly 1`] = ` style={ [ { - "backgroundColor": "#00000099", + "backgroundColor": "#00000066", "bottom": 0, "left": 0, "position": "absolute", @@ -438,12 +438,12 @@ exports[`LedgerMessageSignModal should render correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", + "color": "#121314", + "fontFamily": "CentraNo1-Bold", "fontSize": 22, "fontWeight": "700", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -470,12 +470,12 @@ exports[`LedgerMessageSignModal should render correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -485,12 +485,12 @@ exports[`LedgerMessageSignModal should render correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, "paddingLeft": 7, } } @@ -501,12 +501,12 @@ exports[`LedgerMessageSignModal should render correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, "paddingLeft": 7, } } @@ -517,12 +517,12 @@ exports[`LedgerMessageSignModal should render correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, "paddingLeft": 7, } } @@ -533,12 +533,12 @@ exports[`LedgerMessageSignModal should render correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, "paddingLeft": 7, } } @@ -549,12 +549,12 @@ exports[`LedgerMessageSignModal should render correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, "paddingLeft": 7, } } @@ -570,14 +570,14 @@ exports[`LedgerMessageSignModal should render correctly 1`] = ` numberOfLines={2} style={ { - "color": "#0376c9", + "color": "#4459ff", "flex": 1, "flexWrap": "wrap", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, "marginLeft": 20, "marginRight": 20, "marginTop": 40, diff --git a/app/components/UI/LoginOptionsSwitch/LoginOptionsSwitch.tsx b/app/components/UI/LoginOptionsSwitch/LoginOptionsSwitch.tsx index 690123089529..0349eb3004e6 100644 --- a/app/components/UI/LoginOptionsSwitch/LoginOptionsSwitch.tsx +++ b/app/components/UI/LoginOptionsSwitch/LoginOptionsSwitch.tsx @@ -1,14 +1,18 @@ import React, { useCallback, useState } from 'react'; import { Switch, Text, View } from 'react-native'; import { strings } from '../../../../locales/i18n'; -import { BIOMETRY_TYPE } from 'react-native-keychain'; +import { AUTHENTICATION_TYPE, BIOMETRY_TYPE } from 'react-native-keychain'; import { createStyles } from './styles'; import { LoginViewSelectors } from '../../../../e2e/selectors/wallet/LoginView.selectors'; import { useSelector } from 'react-redux'; import { useTheme } from '../../../util/theme'; interface Props { - shouldRenderBiometricOption: BIOMETRY_TYPE | null; + shouldRenderBiometricOption: + | BIOMETRY_TYPE + | AUTHENTICATION_TYPE + | string + | null; biometryChoiceState: boolean; onUpdateBiometryChoice: (biometryEnabled: boolean) => void; onUpdateRememberMe: (rememberMeEnabled: boolean) => void; diff --git a/app/components/UI/ManageNetworks/__snapshots__/ManageNetworks.test.js.snap b/app/components/UI/ManageNetworks/__snapshots__/ManageNetworks.test.js.snap index c5e91ce27bf1..7dc1d914c7d4 100644 --- a/app/components/UI/ManageNetworks/__snapshots__/ManageNetworks.test.js.snap +++ b/app/components/UI/ManageNetworks/__snapshots__/ManageNetworks.test.js.snap @@ -21,8 +21,8 @@ exports[`ManageNetworks should render correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", + "color": "#121314", + "fontFamily": "CentraNo1-Bold", "fontSize": 16, "fontWeight": "700", "letterSpacing": 0, @@ -37,8 +37,8 @@ exports[`ManageNetworks should render correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, @@ -54,12 +54,12 @@ exports[`ManageNetworks should render correctly 1`] = ` onPress={[Function]} style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#4459ff", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -74,7 +74,7 @@ exports[`ManageNetworks should render correctly 1`] = ` { "alignItems": "center", "alignSelf": "flex-start", - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", "borderRadius": 16, "flexDirection": "row", "height": 32, @@ -92,7 +92,7 @@ exports[`ManageNetworks should render correctly 1`] = ` style={ { "alignItems": "center", - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", "borderRadius": 8, "borderWidth": 1, "height": 16, @@ -107,8 +107,8 @@ exports[`ManageNetworks should render correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 10, "fontWeight": "400", "letterSpacing": 0, @@ -125,13 +125,13 @@ exports[`ManageNetworks should render correctly 1`] = ` numberOfLines={1} style={ { - "color": "#141618", + "color": "#121314", "flexShrink": 1, - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, "marginHorizontal": 8, } } @@ -140,7 +140,7 @@ exports[`ManageNetworks should render correctly 1`] = ` Ethereum Main Network </Text> <SvgMock - color="#141618" + color="#121314" height={12} name="ArrowDown" style={ diff --git a/app/components/UI/ModalNavbarTitle/__snapshots__/index.test.tsx.snap b/app/components/UI/ModalNavbarTitle/__snapshots__/index.test.tsx.snap index b09a924cb13d..0548fd9b2011 100644 --- a/app/components/UI/ModalNavbarTitle/__snapshots__/index.test.tsx.snap +++ b/app/components/UI/ModalNavbarTitle/__snapshots__/index.test.tsx.snap @@ -12,7 +12,7 @@ exports[`ModalNavbarTitle should render correctly 1`] = ` <Text style={ { - "fontFamily": "EuclidCircularB-Regular", + "fontFamily": "CentraNo1-Book", "fontSize": 18, "fontWeight": "400", } diff --git a/app/components/UI/MultiAssetListItems/MultiAssetListItems.tsx b/app/components/UI/MultiAssetListItems/MultiAssetListItems.tsx index 591a468b1d21..fe111b7d948a 100644 --- a/app/components/UI/MultiAssetListItems/MultiAssetListItems.tsx +++ b/app/components/UI/MultiAssetListItems/MultiAssetListItems.tsx @@ -72,7 +72,7 @@ const MultiAssetListItems = ({ {strings('token.no_tokens_found')} </Text> ) : null} - {searchResults.slice(0, 6).map((_, i) => { + {searchResults.slice(0, 6)?.map((_, i) => { const { symbol, name, address, iconUrl } = searchResults[i] || {}; const isOnSelected = selectedAsset.some( (token) => token.address === address, diff --git a/app/components/UI/MultiAssetListItems/__snapshots__/MultiAssetListItems.test.tsx.snap b/app/components/UI/MultiAssetListItems/__snapshots__/MultiAssetListItems.test.tsx.snap index 6f0e3721e34d..bc5ea871699f 100644 --- a/app/components/UI/MultiAssetListItems/__snapshots__/MultiAssetListItems.test.tsx.snap +++ b/app/components/UI/MultiAssetListItems/__snapshots__/MultiAssetListItems.test.tsx.snap @@ -12,12 +12,12 @@ exports[`MultiAssetListItems render matches previous snapshot 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > diff --git a/app/components/UI/MultichainTransactionDetailsModal/MultichainTransactionDetailsModal.styles.ts b/app/components/UI/MultichainTransactionDetailsModal/MultichainTransactionDetailsModal.styles.ts index 7a2b23d2a605..9c7bf73317e9 100644 --- a/app/components/UI/MultichainTransactionDetailsModal/MultichainTransactionDetailsModal.styles.ts +++ b/app/components/UI/MultichainTransactionDetailsModal/MultichainTransactionDetailsModal.styles.ts @@ -1,6 +1,10 @@ import { StyleSheet, TextStyle } from 'react-native'; import { Colors } from '../../../util/theme/models'; import { ThemeTypography } from '@metamask/design-tokens'; +import { + getFontFamily, + TextVariant, +} from '../../../component-library/components/Texts/Text'; const createStyles = (colors: Colors, typography: ThemeTypography) => StyleSheet.create({ @@ -83,7 +87,8 @@ const createStyles = (colors: Colors, typography: ThemeTypography) => marginRight: 5, }, listItemStatus: { - ...(typography.lBodyMDBold as TextStyle), + ...(typography.sBodyMDBold as TextStyle), + fontFamily: getFontFamily(TextVariant.BodyMDBold), }, }); diff --git a/app/components/UI/MultichainTransactionListItem/MultichainTransactionListItem.styles.ts b/app/components/UI/MultichainTransactionListItem/MultichainTransactionListItem.styles.ts index 3e5edbc6984c..2cb0b19f41cc 100644 --- a/app/components/UI/MultichainTransactionListItem/MultichainTransactionListItem.styles.ts +++ b/app/components/UI/MultichainTransactionListItem/MultichainTransactionListItem.styles.ts @@ -1,6 +1,10 @@ import { ImageStyle, StyleSheet, TextStyle } from 'react-native'; import { ThemeColors, ThemeTypography } from '@metamask/design-tokens'; import { fontStyles } from '../../../styles/common'; +import { + getFontFamily, + TextVariant, +} from '../../../component-library/components/Texts/Text'; const createStyles = (colors: ThemeColors, typography: ThemeTypography) => StyleSheet.create({ @@ -56,17 +60,21 @@ const createStyles = (colors: ThemeColors, typography: ThemeTypography) => }, listItemTitle: { ...typography.sBodyLGMedium, + fontFamily: getFontFamily(TextVariant.BodyLGMedium), marginTop: 0, }, listItemStatus: { ...(typography.sBodyMDBold as TextStyle), + fontFamily: getFontFamily(TextVariant.BodyMDBold), }, listItemFiatAmount: { ...(typography.sBodyLGMedium as TextStyle), + fontFamily: getFontFamily(TextVariant.BodyLGMedium), marginTop: 0, }, listItemAmount: { ...(typography.sBodyMD as TextStyle), + fontFamily: getFontFamily(TextVariant.BodyMD), color: colors.text.alternative, }, itemContainer: { diff --git a/app/components/UI/MultichainTransactionListItem/MultichainTransactionListItem.test.tsx b/app/components/UI/MultichainTransactionListItem/MultichainTransactionListItem.test.tsx index 1792974801e1..9f0002c7c63a 100644 --- a/app/components/UI/MultichainTransactionListItem/MultichainTransactionListItem.test.tsx +++ b/app/components/UI/MultichainTransactionListItem/MultichainTransactionListItem.test.tsx @@ -135,7 +135,9 @@ describe('MultichainTransactionListItem', () => { />, ); - expect(getByText('swap SOL to USDC')).toBeTruthy(); + expect( + getByText('transactions.swap SOL transactions.to USDC'), + ).toBeTruthy(); }); it('opens transaction details modal when pressed', () => { diff --git a/app/components/UI/MultichainTransactionListItem/MultichainTransactionListItem.tsx b/app/components/UI/MultichainTransactionListItem/MultichainTransactionListItem.tsx index 7a4630437d07..91bb2871e65c 100644 --- a/app/components/UI/MultichainTransactionListItem/MultichainTransactionListItem.tsx +++ b/app/components/UI/MultichainTransactionListItem/MultichainTransactionListItem.tsx @@ -38,7 +38,9 @@ const MultichainTransactionListItem = ({ const fromUnit = fromAsset?.fungible ? fromAsset.unit : ''; const toUnit = toAsset?.fungible ? toAsset.unit : ''; - title = `${strings('swap')} ${fromUnit} ${strings('to')} ${toUnit}`; + title = `${strings('transactions.swap')} ${fromUnit} ${strings( + 'transactions.to', + )} ${toUnit}`; } const style = styles(colors, typography); diff --git a/app/components/UI/Name/__snapshots__/Name.test.tsx.snap b/app/components/UI/Name/__snapshots__/Name.test.tsx.snap index fe079e83141d..2a32996be901 100644 --- a/app/components/UI/Name/__snapshots__/Name.test.tsx.snap +++ b/app/components/UI/Name/__snapshots__/Name.test.tsx.snap @@ -7,7 +7,7 @@ exports[`Name recognized address should render image 1`] = ` { "alignItems": "center", "alignSelf": "center", - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", "borderRadius": 99, "flexDirection": "row", "gap": 5, @@ -22,7 +22,7 @@ exports[`Name recognized address should render image 1`] = ` <View placeholderStyle={ { - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", } } useNativeDriver={true} @@ -74,7 +74,7 @@ exports[`Name recognized address should render image 1`] = ` "backgroundColor": "#eee", }, { - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", }, ] } @@ -87,13 +87,13 @@ exports[`Name recognized address should render image 1`] = ` numberOfLines={1} style={ { - "color": "#141618", + "color": "#121314", "flexShrink": 1, - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -109,7 +109,7 @@ exports[`Name recognized address should return name 1`] = ` { "alignItems": "center", "alignSelf": "center", - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", "borderRadius": 99, "flexDirection": "row", "gap": 5, @@ -124,7 +124,7 @@ exports[`Name recognized address should return name 1`] = ` <View placeholderStyle={ { - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", } } useNativeDriver={true} @@ -176,7 +176,7 @@ exports[`Name recognized address should return name 1`] = ` "backgroundColor": "#eee", }, { - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", }, ] } @@ -189,13 +189,13 @@ exports[`Name recognized address should return name 1`] = ` numberOfLines={1} style={ { - "color": "#141618", + "color": "#121314", "flexShrink": 1, - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -211,7 +211,7 @@ exports[`Name unknown address displays checksummed address 1`] = ` { "alignItems": "center", "alignSelf": "center", - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", "borderRadius": 99, "flexDirection": "row", "gap": 5, @@ -224,7 +224,7 @@ exports[`Name unknown address displays checksummed address 1`] = ` } > <SvgMock - color="#141618" + color="#121314" height={20} name="Question" style={ @@ -241,13 +241,13 @@ exports[`Name unknown address displays checksummed address 1`] = ` numberOfLines={1} style={ { - "color": "#141618", + "color": "#121314", "flexShrink": 1, - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > diff --git a/app/components/UI/Navbar/index.js b/app/components/UI/Navbar/index.js index f1040c305207..ac96d2aeeba0 100644 --- a/app/components/UI/Navbar/index.js +++ b/app/components/UI/Navbar/index.js @@ -144,6 +144,9 @@ const styles = StyleSheet.create({ addressCopyWrapper: { marginHorizontal: 4, }, + iconButton: { + marginHorizontal: 24, + }, }); const metamask_name = require('../../../images/branding/metamask-name.png'); // eslint-disable-line @@ -1900,8 +1903,8 @@ export const getSettingsNavigationOptions = (title, themeColors) => { * @param {String} title - Navbar Title. * @param {NavigationProp<ParamListBase>} navigation Navigation object returned from useNavigation hook. * @param {ThemeColors} themeColors theme.colors returned from useStyles hook. - * @param {{ backgroundColor?: string, hasCancelButton?: boolean, hasBackButton?: boolean }} [navBarOptions] - Optional navbar options. - * @param {{ cancelButtonEvent?: { event: IMetaMetricsEvent, properties: Record<string, string> }, backButtonEvent?: { event: IMetaMetricsEvent, properties: Record<string, string>} }} [metricsOptions] - Optional metrics options. + * @param {{ backgroundColor?: string, hasCancelButton?: boolean, hasBackButton?: boolean, hasIconButton?: boolean, handleIconPress?: () => void }} [navBarOptions] - Optional navbar options. + * @param {{ cancelButtonEvent?: { event: IMetaMetricsEvent, properties: Record<string, string> }, backButtonEvent?: { event: IMetaMetricsEvent, properties: Record<string, string>}, iconButtonEvent?: { event: IMetaMetricsEvent, properties: Record<string, string> } }} [metricsOptions] - Optional metrics options. * @returns Staking Navbar Component. */ export function getStakingNavbar( @@ -1911,7 +1914,7 @@ export function getStakingNavbar( navBarOptions, metricsOptions, ) { - const { hasBackButton = true, hasCancelButton = true } = navBarOptions ?? {}; + const { hasBackButton = true, hasCancelButton = true, hasIconButton = false, handleIconPress } = navBarOptions ?? {}; const innerStyles = StyleSheet.create({ headerStyle: { @@ -1958,6 +1961,18 @@ export function getStakingNavbar( } } + function handleIconPressWrapper() { + if (!handleIconPress) return; + if (metricsOptions?.iconButtonEvent) { + withMetaMetrics(handleIconPress, { + event: metricsOptions.iconButtonEvent.event, + properties: metricsOptions.iconButtonEvent.properties, + })(); + } else { + handleIconPress(); + } + } + return { headerTitle: () => ( <View style={innerStyles.headerTitle}> @@ -1986,6 +2001,13 @@ export function getStakingNavbar( {strings('navigation.cancel')} </Text> </TouchableOpacity> + ) : hasIconButton ? ( + <TouchableOpacity + onPress={handleIconPressWrapper} + style={styles.iconButton} + > + <Icon name={IconName.Question} /> + </TouchableOpacity> ) : ( <></> ), diff --git a/app/components/UI/NavbarBrowserTitle/__snapshots__/index.test.tsx.snap b/app/components/UI/NavbarBrowserTitle/__snapshots__/index.test.tsx.snap index 0c8b8ee591d9..6c58bd3f2e76 100644 --- a/app/components/UI/NavbarBrowserTitle/__snapshots__/index.test.tsx.snap +++ b/app/components/UI/NavbarBrowserTitle/__snapshots__/index.test.tsx.snap @@ -27,8 +27,8 @@ exports[`NavbarBrowserTitle should render correctly 1`] = ` style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 14, "fontWeight": "400", "textAlign": "center", @@ -48,7 +48,7 @@ exports[`NavbarBrowserTitle should render correctly 1`] = ` "fontSize": 14, }, { - "color": "#141618", + "color": "#121314", "marginLeft": 10, "marginTop": 2, }, @@ -92,8 +92,8 @@ exports[`NavbarBrowserTitle should render correctly 1`] = ` numberOfLines={1} style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 11, "fontWeight": "400", "lineHeight": 11, diff --git a/app/components/UI/NetworkCell/__snapshots__/NetworkCell.test.tsx.snap b/app/components/UI/NetworkCell/__snapshots__/NetworkCell.test.tsx.snap index cc729b60b517..29942abfa8f9 100644 --- a/app/components/UI/NetworkCell/__snapshots__/NetworkCell.test.tsx.snap +++ b/app/components/UI/NetworkCell/__snapshots__/NetworkCell.test.tsx.snap @@ -13,7 +13,7 @@ exports[`NetworkCell should render correctly 1`] = ` style={ { "backgroundColor": "#ffffff", - "borderColor": "#848c96", + "borderColor": "#b7bbc8", "borderRadius": 4, "borderWidth": 0, "padding": 16, @@ -70,8 +70,8 @@ exports[`NetworkCell should render correctly 1`] = ` numberOfLines={1} style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, @@ -87,12 +87,12 @@ exports[`NetworkCell should render correctly 1`] = ` numberOfLines={1} style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -111,7 +111,7 @@ exports[`NetworkCell should render correctly 1`] = ` onChange={[Function]} onResponderTerminationRequest={[Function]} onStartShouldSetResponder={[Function]} - onTintColor="#0376c9" + onTintColor="#4459ff" style={ [ { @@ -123,7 +123,7 @@ exports[`NetworkCell should render correctly 1`] = ` "alignSelf": "flex-start", }, { - "backgroundColor": "#BBC0C566", + "backgroundColor": "#b7bbc866", "borderRadius": 16, }, ], @@ -131,7 +131,7 @@ exports[`NetworkCell should render correctly 1`] = ` } testID="incoming-mainnet-toggle" thumbTintColor="#ffffff" - tintColor="#BBC0C566" + tintColor="#b7bbc866" value={true} /> </View> diff --git a/app/components/UI/NetworkInfo/__snapshots__/index.test.tsx.snap b/app/components/UI/NetworkInfo/__snapshots__/index.test.tsx.snap index 551a388f8a96..9280cac09755 100644 --- a/app/components/UI/NetworkInfo/__snapshots__/index.test.tsx.snap +++ b/app/components/UI/NetworkInfo/__snapshots__/index.test.tsx.snap @@ -20,8 +20,8 @@ exports[`NetworkInfo render correctly 1`] = ` <Text style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", + "color": "#121314", + "fontFamily": "CentraNo1-Bold", "fontSize": 16, "fontWeight": "600", "marginVertical": 10, @@ -43,7 +43,7 @@ exports[`NetworkInfo render correctly 1`] = ` style={ { "alignItems": "center", - "backgroundColor": "#BBC0C566", + "backgroundColor": "#b7bbc866", "borderRadius": 40, "flexDirection": "row", "justifyContent": "center", @@ -80,7 +80,7 @@ exports[`NetworkInfo render correctly 1`] = ` <Text style={ { - "color": "#141618", + "color": "#121314", "fontSize": 15, "marginLeft": 8, "paddingRight": 10, @@ -96,8 +96,8 @@ exports[`NetworkInfo render correctly 1`] = ` <Text style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", + "color": "#121314", + "fontFamily": "CentraNo1-Bold", "fontSize": 14, "fontWeight": "600", "marginBottom": 15, @@ -134,7 +134,7 @@ exports[`NetworkInfo render correctly 1`] = ` <Text style={ { - "color": "#141618", + "color": "#121314", "marginRight": 10, } } @@ -145,7 +145,7 @@ exports[`NetworkInfo render correctly 1`] = ` <Text style={ { - "color": "#141618", + "color": "#121314", "width": "94%", } } @@ -175,7 +175,7 @@ exports[`NetworkInfo render correctly 1`] = ` <Text style={ { - "color": "#141618", + "color": "#121314", "marginRight": 10, } } @@ -186,7 +186,7 @@ exports[`NetworkInfo render correctly 1`] = ` <Text style={ { - "color": "#141618", + "color": "#121314", "width": "94%", } } @@ -198,7 +198,7 @@ exports[`NetworkInfo render correctly 1`] = ` onPress={[Function]} style={ { - "color": "#0376c9", + "color": "#4459ff", } } > @@ -226,7 +226,7 @@ exports[`NetworkInfo render correctly 1`] = ` <Text style={ { - "color": "#141618", + "color": "#121314", "marginRight": 10, } } @@ -237,7 +237,7 @@ exports[`NetworkInfo render correctly 1`] = ` <Text style={ { - "color": "#141618", + "color": "#121314", "width": "94%", } } @@ -249,7 +249,7 @@ exports[`NetworkInfo render correctly 1`] = ` onPress={[Function]} style={ { - "color": "#0376c9", + "color": "#4459ff", } } > @@ -273,11 +273,11 @@ exports[`NetworkInfo render correctly 1`] = ` "padding": 15, }, { - "backgroundColor": "#0376c9", + "backgroundColor": "#4459ff", "minHeight": 50, }, { - "borderColor": "#BBC0C566", + "borderColor": "#b7bbc866", "marginVertical": 20, }, ], @@ -298,7 +298,7 @@ exports[`NetworkInfo render correctly 1`] = ` null, [ { - "fontFamily": "EuclidCircularB-Bold", + "fontFamily": "CentraNo1-Bold", "fontSize": 14, "fontWeight": "600", "textAlign": "center", @@ -339,8 +339,8 @@ exports[`NetworkInfo render correctly with EVM network without ticker 1`] = ` <Text style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", + "color": "#121314", + "fontFamily": "CentraNo1-Bold", "fontSize": 16, "fontWeight": "600", "marginVertical": 10, @@ -362,7 +362,7 @@ exports[`NetworkInfo render correctly with EVM network without ticker 1`] = ` style={ { "alignItems": "center", - "backgroundColor": "#BBC0C566", + "backgroundColor": "#b7bbc866", "borderRadius": 40, "flexDirection": "row", "justifyContent": "center", @@ -374,7 +374,7 @@ exports[`NetworkInfo render correctly with EVM network without ticker 1`] = ` style={ { "alignItems": "center", - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", "borderRadius": 16, "borderWidth": 1, "height": 32, @@ -388,8 +388,8 @@ exports[`NetworkInfo render correctly with EVM network without ticker 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, @@ -403,7 +403,7 @@ exports[`NetworkInfo render correctly with EVM network without ticker 1`] = ` <Text style={ { - "color": "#141618", + "color": "#121314", "fontSize": 15, "marginLeft": 8, "paddingRight": 10, @@ -418,8 +418,8 @@ exports[`NetworkInfo render correctly with EVM network without ticker 1`] = ` <Text style={ { - "color": "#BBC0C566", - "fontFamily": "EuclidCircularB-Regular", + "color": "#b7bbc866", + "fontFamily": "CentraNo1-Book", "fontSize": 10, "fontWeight": "400", "paddingVertical": 5, @@ -433,8 +433,8 @@ exports[`NetworkInfo render correctly with EVM network without ticker 1`] = ` <Text style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", + "color": "#121314", + "fontFamily": "CentraNo1-Bold", "fontSize": 14, "fontWeight": "600", "marginBottom": 15, @@ -471,7 +471,7 @@ exports[`NetworkInfo render correctly with EVM network without ticker 1`] = ` <Text style={ { - "color": "#141618", + "color": "#121314", "marginRight": 10, } } @@ -482,7 +482,7 @@ exports[`NetworkInfo render correctly with EVM network without ticker 1`] = ` <Text style={ { - "color": "#141618", + "color": "#121314", "width": "94%", } } @@ -512,7 +512,7 @@ exports[`NetworkInfo render correctly with EVM network without ticker 1`] = ` <Text style={ { - "color": "#141618", + "color": "#121314", "marginRight": 10, } } @@ -523,7 +523,7 @@ exports[`NetworkInfo render correctly with EVM network without ticker 1`] = ` <Text style={ { - "color": "#141618", + "color": "#121314", "width": "94%", } } @@ -535,7 +535,7 @@ exports[`NetworkInfo render correctly with EVM network without ticker 1`] = ` onPress={[Function]} style={ { - "color": "#0376c9", + "color": "#4459ff", } } > @@ -563,7 +563,7 @@ exports[`NetworkInfo render correctly with EVM network without ticker 1`] = ` <Text style={ { - "color": "#141618", + "color": "#121314", "marginRight": 10, } } @@ -574,7 +574,7 @@ exports[`NetworkInfo render correctly with EVM network without ticker 1`] = ` <Text style={ { - "color": "#141618", + "color": "#121314", "width": "94%", } } @@ -586,7 +586,7 @@ exports[`NetworkInfo render correctly with EVM network without ticker 1`] = ` onPress={[Function]} style={ { - "color": "#0376c9", + "color": "#4459ff", } } > @@ -610,11 +610,11 @@ exports[`NetworkInfo render correctly with EVM network without ticker 1`] = ` "padding": 15, }, { - "backgroundColor": "#0376c9", + "backgroundColor": "#4459ff", "minHeight": 50, }, { - "borderColor": "#BBC0C566", + "borderColor": "#b7bbc866", "marginVertical": 20, }, ], @@ -635,7 +635,7 @@ exports[`NetworkInfo render correctly with EVM network without ticker 1`] = ` null, [ { - "fontFamily": "EuclidCircularB-Bold", + "fontFamily": "CentraNo1-Bold", "fontSize": 14, "fontWeight": "600", "textAlign": "center", @@ -676,8 +676,8 @@ exports[`NetworkInfo render correctly with non-EVM selected 1`] = ` <Text style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", + "color": "#121314", + "fontFamily": "CentraNo1-Bold", "fontSize": 16, "fontWeight": "600", "marginVertical": 10, @@ -699,7 +699,7 @@ exports[`NetworkInfo render correctly with non-EVM selected 1`] = ` style={ { "alignItems": "center", - "backgroundColor": "#BBC0C566", + "backgroundColor": "#b7bbc866", "borderRadius": 40, "flexDirection": "row", "justifyContent": "center", @@ -736,7 +736,7 @@ exports[`NetworkInfo render correctly with non-EVM selected 1`] = ` <Text style={ { - "color": "#141618", + "color": "#121314", "fontSize": 15, "marginLeft": 8, "paddingRight": 10, @@ -752,8 +752,8 @@ exports[`NetworkInfo render correctly with non-EVM selected 1`] = ` <Text style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", + "color": "#121314", + "fontFamily": "CentraNo1-Bold", "fontSize": 14, "fontWeight": "600", "marginBottom": 15, @@ -790,7 +790,7 @@ exports[`NetworkInfo render correctly with non-EVM selected 1`] = ` <Text style={ { - "color": "#141618", + "color": "#121314", "marginRight": 10, } } @@ -801,7 +801,7 @@ exports[`NetworkInfo render correctly with non-EVM selected 1`] = ` <Text style={ { - "color": "#141618", + "color": "#121314", "width": "94%", } } @@ -831,7 +831,7 @@ exports[`NetworkInfo render correctly with non-EVM selected 1`] = ` <Text style={ { - "color": "#141618", + "color": "#121314", "marginRight": 10, } } @@ -842,13 +842,13 @@ exports[`NetworkInfo render correctly with non-EVM selected 1`] = ` <Text style={ { - "color": "#141618", + "color": "#121314", "width": "94%", } } > <Text> - You will loose your assets if you try to send them from or to another network. + You will lose your assets if you try to send them from or to another network. </Text> </Text> </View> @@ -868,11 +868,11 @@ exports[`NetworkInfo render correctly with non-EVM selected 1`] = ` "padding": 15, }, { - "backgroundColor": "#0376c9", + "backgroundColor": "#4459ff", "minHeight": 50, }, { - "borderColor": "#BBC0C566", + "borderColor": "#b7bbc866", "marginVertical": 20, }, ], @@ -893,7 +893,7 @@ exports[`NetworkInfo render correctly with non-EVM selected 1`] = ` null, [ { - "fontFamily": "EuclidCircularB-Bold", + "fontFamily": "CentraNo1-Bold", "fontSize": 14, "fontWeight": "600", "textAlign": "center", diff --git a/app/components/UI/NetworkModal/__snapshots__/index.test.tsx.snap b/app/components/UI/NetworkModal/__snapshots__/index.test.tsx.snap index 7689b85fe2ff..38283b1508ab 100644 --- a/app/components/UI/NetworkModal/__snapshots__/index.test.tsx.snap +++ b/app/components/UI/NetworkModal/__snapshots__/index.test.tsx.snap @@ -122,7 +122,7 @@ exports[`NetworkDetails renders correctly 1`] = ` <View style={ { - "backgroundColor": "#BBC0C566", + "backgroundColor": "#b7bbc866", "borderRadius": 2, "height": 4, "width": 40, @@ -180,8 +180,8 @@ exports[`NetworkDetails renders correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", + "color": "#121314", + "fontFamily": "CentraNo1-Bold", "fontSize": 18, "fontWeight": "700", "letterSpacing": 0, @@ -222,7 +222,7 @@ exports[`NetworkDetails renders correctly 1`] = ` { "alignItems": "center", "alignSelf": "center", - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", "borderRadius": 16, "flexDirection": "row", "height": 32, @@ -268,13 +268,13 @@ exports[`NetworkDetails renders correctly 1`] = ` numberOfLines={1} style={ { - "color": "#141618", + "color": "#121314", "flexShrink": 1, - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, "marginHorizontal": 8, } } @@ -287,12 +287,12 @@ exports[`NetworkDetails renders correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, "textAlign": "center", } } @@ -304,12 +304,12 @@ exports[`NetworkDetails renders correctly 1`] = ` onPress={[Function]} style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -325,7 +325,7 @@ exports[`NetworkDetails renders correctly 1`] = ` style={ [ { - "borderColor": "#848c96", + "borderColor": "#b7bbc8", "borderRadius": 10, "borderWidth": 1, "marginVertical": 16, @@ -340,12 +340,12 @@ exports[`NetworkDetails renders correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -355,12 +355,12 @@ exports[`NetworkDetails renders correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, "marginBottom": 8, } } @@ -380,12 +380,12 @@ exports[`NetworkDetails renders correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -396,12 +396,12 @@ exports[`NetworkDetails renders correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, "marginBottom": 8, } } @@ -425,12 +425,12 @@ exports[`NetworkDetails renders correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#4459ff", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } testID="accordionheader-title" @@ -455,7 +455,7 @@ exports[`NetworkDetails renders correctly 1`] = ` testID="accordionheader-arrow-icon-animation" > <SvgMock - color="#0376c9" + color="#4459ff" height={16} name="ArrowDown" style={ @@ -496,7 +496,7 @@ exports[`NetworkDetails renders correctly 1`] = ` "alignItems": "center", "alignSelf": "flex-start", "backgroundColor": "transparent", - "borderColor": "#0376c9", + "borderColor": "#4459ff", "borderRadius": 24, "borderWidth": 1, "flex": 1, @@ -512,12 +512,12 @@ exports[`NetworkDetails renders correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, + "color": "#4459ff", + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -535,7 +535,7 @@ exports[`NetworkDetails renders correctly 1`] = ` { "alignItems": "center", "alignSelf": "flex-start", - "backgroundColor": "#0376c9", + "backgroundColor": "#4459ff", "borderRadius": 24, "flex": 1, "flexDirection": "row", @@ -553,11 +553,11 @@ exports[`NetworkDetails renders correctly 1`] = ` style={ { "color": "#ffffff", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > diff --git a/app/components/UI/NetworkModal/index.test.tsx b/app/components/UI/NetworkModal/index.test.tsx index 04a18c3d2b46..971153d44975 100644 --- a/app/components/UI/NetworkModal/index.test.tsx +++ b/app/components/UI/NetworkModal/index.test.tsx @@ -282,11 +282,6 @@ describe('NetworkDetails', () => { }, ], }); - - // Verify active network was set - expect( - Engine.context.MultichainNetworkController.setActiveNetwork, - ).toHaveBeenCalledWith('new-network-id'); }); }); }); diff --git a/app/components/UI/NetworkModal/index.tsx b/app/components/UI/NetworkModal/index.tsx index d68d3b1d8a96..9659cd8e6e28 100644 --- a/app/components/UI/NetworkModal/index.tsx +++ b/app/components/UI/NetworkModal/index.tsx @@ -220,7 +220,7 @@ const NetworkModals = (props: NetworkProps) => { }, [checkNetwork]); const closeModal = async () => { - const { NetworkController, MultichainNetworkController } = Engine.context; + const { NetworkController } = Engine.context; const url = new URLPARSE(rpcUrl); !isPrivateConnection(url.hostname) && url.set('protocol', 'https:'); @@ -266,7 +266,6 @@ const NetworkModals = (props: NetworkProps) => { if (networkClientId) { onUpdateNetworkFilter(); - await MultichainNetworkController.setActiveNetwork(networkClientId); } onClose(); diff --git a/app/components/UI/NetworkSelectorList/__snapshots__/NetworkSelectorList.test.tsx.snap b/app/components/UI/NetworkSelectorList/__snapshots__/NetworkSelectorList.test.tsx.snap index 0d3652951834..3b12f5623a89 100644 --- a/app/components/UI/NetworkSelectorList/__snapshots__/NetworkSelectorList.test.tsx.snap +++ b/app/components/UI/NetworkSelectorList/__snapshots__/NetworkSelectorList.test.tsx.snap @@ -109,7 +109,7 @@ exports[`NetworkSelectorList renders correctly with default props 1`] = ` { "alignItems": "center", "backgroundColor": "#ffffff", - "borderColor": "#141618", + "borderColor": "#121314", "borderRadius": 4, "borderWidth": 2, "height": 20, @@ -181,8 +181,8 @@ exports[`NetworkSelectorList renders correctly with default props 1`] = ` numberOfLines={1} style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, @@ -255,8 +255,8 @@ exports[`NetworkSelectorList renders correctly with default props 1`] = ` style={ { "alignItems": "center", - "backgroundColor": "#0376c9", - "borderColor": "#0376c9", + "backgroundColor": "#4459ff", + "borderColor": "#4459ff", "borderRadius": 4, "borderWidth": 2, "height": 20, @@ -343,8 +343,8 @@ exports[`NetworkSelectorList renders correctly with default props 1`] = ` numberOfLines={1} style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, @@ -364,7 +364,7 @@ exports[`NetworkSelectorList renders correctly with default props 1`] = ` accessible={true} style={ { - "backgroundColor": "#0376C91A", + "backgroundColor": "#4459ff1a", "bottom": 0, "flexDirection": "row", "left": 0, diff --git a/app/components/UI/NetworkVerificationInfo/NetworkVerificationInfo.styles.ts b/app/components/UI/NetworkVerificationInfo/NetworkVerificationInfo.styles.ts index b2265c55e959..ea09543b8ee4 100644 --- a/app/components/UI/NetworkVerificationInfo/NetworkVerificationInfo.styles.ts +++ b/app/components/UI/NetworkVerificationInfo/NetworkVerificationInfo.styles.ts @@ -1,6 +1,10 @@ import { StyleSheet, TextStyle } from 'react-native'; // External dependencies. import { Theme } from '../../../util/theme/models'; +import { + getFontFamily, + TextVariant, +} from '../../../component-library/components/Texts/Text'; const styleSheet = (params: { theme: Theme }) => { const { theme } = params; @@ -30,7 +34,8 @@ const styleSheet = (params: { theme: Theme }) => { textAlign: 'center', marginVertical: 10, paddingHorizontal: 16, - ...typography.lBodyMDBold, + ...typography.sBodyMDBold, + fontFamily: getFontFamily(TextVariant.BodyMDBold), } as TextStyle, bottomSpace: { marginBottom: 10, @@ -51,6 +56,7 @@ const styleSheet = (params: { theme: Theme }) => { }, boldText: { ...typography.sBodyMDBold, + fontFamily: getFontFamily(TextVariant.BodyMDBold), } as TextStyle, networkSection: { marginBottom: 16 }, diff --git a/app/components/UI/NetworkVerificationInfo/__snapshots__/NetworkVerificationInfo.test.tsx.snap b/app/components/UI/NetworkVerificationInfo/__snapshots__/NetworkVerificationInfo.test.tsx.snap index a5ae1659495f..f052adfde95a 100644 --- a/app/components/UI/NetworkVerificationInfo/__snapshots__/NetworkVerificationInfo.test.tsx.snap +++ b/app/components/UI/NetworkVerificationInfo/__snapshots__/NetworkVerificationInfo.test.tsx.snap @@ -41,8 +41,8 @@ exports[`NetworkVerificationInfo renders correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", + "color": "#121314", + "fontFamily": "CentraNo1-Bold", "fontSize": 18, "fontWeight": "700", "letterSpacing": 0, @@ -83,7 +83,7 @@ exports[`NetworkVerificationInfo renders correctly 1`] = ` { "alignItems": "center", "alignSelf": "center", - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", "borderRadius": 16, "flexDirection": "row", "height": 32, @@ -129,13 +129,13 @@ exports[`NetworkVerificationInfo renders correctly 1`] = ` numberOfLines={1} style={ { - "color": "#141618", + "color": "#121314", "flexShrink": 1, - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, "marginHorizontal": 8, } } @@ -147,8 +147,8 @@ exports[`NetworkVerificationInfo renders correctly 1`] = ` <View style={ { - "backgroundColor": "#BF52081A", - "borderColor": "#bf5208", + "backgroundColor": "#9a63001a", + "borderColor": "#9a6300", "borderLeftWidth": 4, "borderRadius": 4, "flexDirection": "row", @@ -168,7 +168,7 @@ exports[`NetworkVerificationInfo renders correctly 1`] = ` } > <SvgMock - color="#bf5208" + color="#9a6300" height={24} name="Danger" style={ @@ -191,12 +191,12 @@ exports[`NetworkVerificationInfo renders correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -230,7 +230,7 @@ exports[`NetworkVerificationInfo renders correctly 1`] = ` testID="banner-close-button-icon" > <SvgMock - color="#141618" + color="#121314" height={16} name="Close" style={ @@ -248,12 +248,12 @@ exports[`NetworkVerificationInfo renders correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, "textAlign": "center", } } @@ -265,12 +265,12 @@ exports[`NetworkVerificationInfo renders correctly 1`] = ` onPress={[Function]} style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -286,7 +286,7 @@ exports[`NetworkVerificationInfo renders correctly 1`] = ` style={ [ { - "borderColor": "#848c96", + "borderColor": "#b7bbc8", "borderRadius": 10, "borderWidth": 1, "marginVertical": 16, @@ -301,12 +301,12 @@ exports[`NetworkVerificationInfo renders correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -316,12 +316,12 @@ exports[`NetworkVerificationInfo renders correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, "marginBottom": 8, } } @@ -341,12 +341,12 @@ exports[`NetworkVerificationInfo renders correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -357,12 +357,12 @@ exports[`NetworkVerificationInfo renders correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, "marginBottom": 8, } } @@ -386,12 +386,12 @@ exports[`NetworkVerificationInfo renders correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#4459ff", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } testID="accordionheader-title" @@ -416,7 +416,7 @@ exports[`NetworkVerificationInfo renders correctly 1`] = ` testID="accordionheader-arrow-icon-animation" > <SvgMock - color="#0376c9" + color="#4459ff" height={16} name="ArrowDown" style={ @@ -457,7 +457,7 @@ exports[`NetworkVerificationInfo renders correctly 1`] = ` "alignItems": "center", "alignSelf": "flex-start", "backgroundColor": "transparent", - "borderColor": "#0376c9", + "borderColor": "#4459ff", "borderRadius": 24, "borderWidth": 1, "flex": 1, @@ -473,12 +473,12 @@ exports[`NetworkVerificationInfo renders correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, + "color": "#4459ff", + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -496,7 +496,7 @@ exports[`NetworkVerificationInfo renders correctly 1`] = ` { "alignItems": "center", "alignSelf": "flex-start", - "backgroundColor": "#0376c9", + "backgroundColor": "#4459ff", "borderRadius": 24, "flex": 1, "flexDirection": "row", @@ -514,11 +514,11 @@ exports[`NetworkVerificationInfo renders correctly 1`] = ` style={ { "color": "#ffffff", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -570,8 +570,8 @@ exports[`NetworkVerificationInfo renders updated details when isNetworkRpcUpdate accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", + "color": "#121314", + "fontFamily": "CentraNo1-Bold", "fontSize": 18, "fontWeight": "700", "letterSpacing": 0, @@ -612,7 +612,7 @@ exports[`NetworkVerificationInfo renders updated details when isNetworkRpcUpdate { "alignItems": "center", "alignSelf": "center", - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", "borderRadius": 16, "flexDirection": "row", "height": 32, @@ -658,13 +658,13 @@ exports[`NetworkVerificationInfo renders updated details when isNetworkRpcUpdate numberOfLines={1} style={ { - "color": "#141618", + "color": "#121314", "flexShrink": 1, - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, "marginHorizontal": 8, } } @@ -677,12 +677,12 @@ exports[`NetworkVerificationInfo renders updated details when isNetworkRpcUpdate accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, "textAlign": "center", } } @@ -691,12 +691,12 @@ exports[`NetworkVerificationInfo renders updated details when isNetworkRpcUpdate accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -712,7 +712,7 @@ exports[`NetworkVerificationInfo renders updated details when isNetworkRpcUpdate style={ [ { - "borderColor": "#848c96", + "borderColor": "#b7bbc8", "borderRadius": 10, "borderWidth": 1, "marginVertical": 16, @@ -727,12 +727,12 @@ exports[`NetworkVerificationInfo renders updated details when isNetworkRpcUpdate accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -742,12 +742,12 @@ exports[`NetworkVerificationInfo renders updated details when isNetworkRpcUpdate accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, "marginBottom": 8, } } @@ -767,12 +767,12 @@ exports[`NetworkVerificationInfo renders updated details when isNetworkRpcUpdate accessibilityRole="text" style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, + "color": "#4459ff", + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -786,7 +786,7 @@ exports[`NetworkVerificationInfo renders updated details when isNetworkRpcUpdate { "alignItems": "center", "alignSelf": "flex-start", - "backgroundColor": "#0376C91A", + "backgroundColor": "#4459ff1a", "borderRadius": 4, "height": 20, "justifyContent": "center", @@ -806,7 +806,7 @@ exports[`NetworkVerificationInfo renders updated details when isNetworkRpcUpdate testID="networks.rpc-url-missmatch-review-and-compare" > <SvgMock - color="#0376c9" + color="#4459ff" height={16} name="Info" style={ @@ -821,19 +821,19 @@ exports[`NetworkVerificationInfo renders updated details when isNetworkRpcUpdate accessibilityRole="text" style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#4459ff", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > Review </Text> <SvgMock - color="#0376c9" + color="#4459ff" height={12} name="ArrowRight" style={ @@ -852,12 +852,12 @@ exports[`NetworkVerificationInfo renders updated details when isNetworkRpcUpdate accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, "marginBottom": 8, } } @@ -881,12 +881,12 @@ exports[`NetworkVerificationInfo renders updated details when isNetworkRpcUpdate accessibilityRole="text" style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#4459ff", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } testID="accordionheader-title" @@ -911,7 +911,7 @@ exports[`NetworkVerificationInfo renders updated details when isNetworkRpcUpdate testID="accordionheader-arrow-icon-animation" > <SvgMock - color="#0376c9" + color="#4459ff" height={16} name="ArrowDown" style={ @@ -952,7 +952,7 @@ exports[`NetworkVerificationInfo renders updated details when isNetworkRpcUpdate "alignItems": "center", "alignSelf": "flex-start", "backgroundColor": "transparent", - "borderColor": "#0376c9", + "borderColor": "#4459ff", "borderRadius": 24, "borderWidth": 1, "flex": 1, @@ -968,12 +968,12 @@ exports[`NetworkVerificationInfo renders updated details when isNetworkRpcUpdate accessibilityRole="text" style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, + "color": "#4459ff", + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -991,7 +991,7 @@ exports[`NetworkVerificationInfo renders updated details when isNetworkRpcUpdate { "alignItems": "center", "alignSelf": "flex-start", - "backgroundColor": "#0376c9", + "backgroundColor": "#4459ff", "borderRadius": 24, "flex": 1, "flexDirection": "row", @@ -1009,11 +1009,11 @@ exports[`NetworkVerificationInfo renders updated details when isNetworkRpcUpdate style={ { "color": "#ffffff", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > diff --git a/app/components/UI/Notification/BaseNotification/__snapshots__/index.test.jsx.snap b/app/components/UI/Notification/BaseNotification/__snapshots__/index.test.jsx.snap index 8a4fef419bed..07e32913b86a 100644 --- a/app/components/UI/Notification/BaseNotification/__snapshots__/index.test.jsx.snap +++ b/app/components/UI/Notification/BaseNotification/__snapshots__/index.test.jsx.snap @@ -21,7 +21,7 @@ exports[`BaseNotification gets icon correctly for each status 1`] = ` activeOpacity={0.8} style={ { - "backgroundColor": "#000000CC", + "backgroundColor": "#000000cc", "borderRadius": 8, "flex": 1, "flexDirection": "row", @@ -39,7 +39,7 @@ exports[`BaseNotification gets icon correctly for each status 1`] = ` <View style={ { - "borderColor": "#f2f4f6", + "borderColor": "#f3f5f9", "borderRadius": 64, "borderWidth": 3.5, "height": 36, @@ -69,7 +69,7 @@ exports[`BaseNotification gets icon correctly for each status 1`] = ` style={ [ { - "color": "#0376c9", + "color": "#4459ff", "fontSize": 36, }, undefined, @@ -100,8 +100,8 @@ exports[`BaseNotification gets icon correctly for each status 1`] = ` style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -132,7 +132,7 @@ exports[`BaseNotification gets icon correctly for each status 1`] = ` { "color": "#ffffff", "flex": 1, - "fontFamily": "EuclidCircularB-Bold", + "fontFamily": "CentraNo1-Bold", "fontSize": 14, "fontWeight": "600", "lineHeight": 18, @@ -148,8 +148,8 @@ exports[`BaseNotification gets icon correctly for each status 1`] = ` style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -216,7 +216,7 @@ exports[`BaseNotification gets icon correctly for each status 2`] = ` activeOpacity={0.8} style={ { - "backgroundColor": "#000000CC", + "backgroundColor": "#000000cc", "borderRadius": 8, "flex": 1, "flexDirection": "row", @@ -234,7 +234,7 @@ exports[`BaseNotification gets icon correctly for each status 2`] = ` <View style={ { - "borderColor": "#f2f4f6", + "borderColor": "#f3f5f9", "borderRadius": 64, "borderWidth": 3.5, "height": 36, @@ -264,7 +264,7 @@ exports[`BaseNotification gets icon correctly for each status 2`] = ` style={ [ { - "color": "#0376c9", + "color": "#4459ff", "fontSize": 36, }, undefined, @@ -295,8 +295,8 @@ exports[`BaseNotification gets icon correctly for each status 2`] = ` style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -327,7 +327,7 @@ exports[`BaseNotification gets icon correctly for each status 2`] = ` { "color": "#ffffff", "flex": 1, - "fontFamily": "EuclidCircularB-Bold", + "fontFamily": "CentraNo1-Bold", "fontSize": 14, "fontWeight": "600", "lineHeight": 18, @@ -343,8 +343,8 @@ exports[`BaseNotification gets icon correctly for each status 2`] = ` style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -411,7 +411,7 @@ exports[`BaseNotification gets icon correctly for each status 3`] = ` activeOpacity={0.8} style={ { - "backgroundColor": "#000000CC", + "backgroundColor": "#000000cc", "borderRadius": 8, "flex": 1, "flexDirection": "row", @@ -429,7 +429,7 @@ exports[`BaseNotification gets icon correctly for each status 3`] = ` <View style={ { - "borderColor": "#f2f4f6", + "borderColor": "#f3f5f9", "borderRadius": 64, "borderWidth": 3.5, "height": 36, @@ -459,7 +459,7 @@ exports[`BaseNotification gets icon correctly for each status 3`] = ` style={ [ { - "color": "#0376c9", + "color": "#4459ff", "fontSize": 36, }, undefined, @@ -490,8 +490,8 @@ exports[`BaseNotification gets icon correctly for each status 3`] = ` style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -522,7 +522,7 @@ exports[`BaseNotification gets icon correctly for each status 3`] = ` { "color": "#ffffff", "flex": 1, - "fontFamily": "EuclidCircularB-Bold", + "fontFamily": "CentraNo1-Bold", "fontSize": 14, "fontWeight": "600", "lineHeight": 18, @@ -538,8 +538,8 @@ exports[`BaseNotification gets icon correctly for each status 3`] = ` style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -606,7 +606,7 @@ exports[`BaseNotification gets icon correctly for each status 4`] = ` activeOpacity={0.8} style={ { - "backgroundColor": "#000000CC", + "backgroundColor": "#000000cc", "borderRadius": 8, "flex": 1, "flexDirection": "row", @@ -626,7 +626,7 @@ exports[`BaseNotification gets icon correctly for each status 4`] = ` style={ [ { - "color": "#1c8234", + "color": "#1c7e33", "fontSize": 36, }, undefined, @@ -655,8 +655,8 @@ exports[`BaseNotification gets icon correctly for each status 4`] = ` style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -687,7 +687,7 @@ exports[`BaseNotification gets icon correctly for each status 4`] = ` { "color": "#ffffff", "flex": 1, - "fontFamily": "EuclidCircularB-Bold", + "fontFamily": "CentraNo1-Bold", "fontSize": 14, "fontWeight": "600", "lineHeight": 18, @@ -703,8 +703,8 @@ exports[`BaseNotification gets icon correctly for each status 4`] = ` style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -771,7 +771,7 @@ exports[`BaseNotification gets icon correctly for each status 5`] = ` activeOpacity={0.8} style={ { - "backgroundColor": "#000000CC", + "backgroundColor": "#000000cc", "borderRadius": 8, "flex": 1, "flexDirection": "row", @@ -791,7 +791,7 @@ exports[`BaseNotification gets icon correctly for each status 5`] = ` style={ [ { - "color": "#1c8234", + "color": "#1c7e33", "fontSize": 36, }, undefined, @@ -820,8 +820,8 @@ exports[`BaseNotification gets icon correctly for each status 5`] = ` style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -852,7 +852,7 @@ exports[`BaseNotification gets icon correctly for each status 5`] = ` { "color": "#ffffff", "flex": 1, - "fontFamily": "EuclidCircularB-Bold", + "fontFamily": "CentraNo1-Bold", "fontSize": 14, "fontWeight": "600", "lineHeight": 18, @@ -868,8 +868,8 @@ exports[`BaseNotification gets icon correctly for each status 5`] = ` style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -936,7 +936,7 @@ exports[`BaseNotification gets icon correctly for each status 6`] = ` activeOpacity={0.8} style={ { - "backgroundColor": "#000000CC", + "backgroundColor": "#000000cc", "borderRadius": 8, "flex": 1, "flexDirection": "row", @@ -956,7 +956,7 @@ exports[`BaseNotification gets icon correctly for each status 6`] = ` style={ [ { - "color": "#1c8234", + "color": "#1c7e33", "fontSize": 36, }, undefined, @@ -985,8 +985,8 @@ exports[`BaseNotification gets icon correctly for each status 6`] = ` style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -1017,7 +1017,7 @@ exports[`BaseNotification gets icon correctly for each status 6`] = ` { "color": "#ffffff", "flex": 1, - "fontFamily": "EuclidCircularB-Bold", + "fontFamily": "CentraNo1-Bold", "fontSize": 14, "fontWeight": "600", "lineHeight": 18, @@ -1033,8 +1033,8 @@ exports[`BaseNotification gets icon correctly for each status 6`] = ` style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -1101,7 +1101,7 @@ exports[`BaseNotification gets icon correctly for each status 7`] = ` activeOpacity={0.8} style={ { - "backgroundColor": "#000000CC", + "backgroundColor": "#000000cc", "borderRadius": 8, "flex": 1, "flexDirection": "row", @@ -1121,7 +1121,7 @@ exports[`BaseNotification gets icon correctly for each status 7`] = ` style={ [ { - "color": "#1c8234", + "color": "#1c7e33", "fontSize": 36, }, undefined, @@ -1150,8 +1150,8 @@ exports[`BaseNotification gets icon correctly for each status 7`] = ` style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -1182,7 +1182,7 @@ exports[`BaseNotification gets icon correctly for each status 7`] = ` { "color": "#ffffff", "flex": 1, - "fontFamily": "EuclidCircularB-Bold", + "fontFamily": "CentraNo1-Bold", "fontSize": 14, "fontWeight": "600", "lineHeight": 18, @@ -1198,8 +1198,8 @@ exports[`BaseNotification gets icon correctly for each status 7`] = ` style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -1266,7 +1266,7 @@ exports[`BaseNotification gets icon correctly for each status 8`] = ` activeOpacity={0.8} style={ { - "backgroundColor": "#000000CC", + "backgroundColor": "#000000cc", "borderRadius": 8, "flex": 1, "flexDirection": "row", @@ -1286,7 +1286,7 @@ exports[`BaseNotification gets icon correctly for each status 8`] = ` style={ [ { - "color": "#1c8234", + "color": "#1c7e33", "fontSize": 36, }, undefined, @@ -1315,8 +1315,8 @@ exports[`BaseNotification gets icon correctly for each status 8`] = ` style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -1347,7 +1347,7 @@ exports[`BaseNotification gets icon correctly for each status 8`] = ` { "color": "#ffffff", "flex": 1, - "fontFamily": "EuclidCircularB-Bold", + "fontFamily": "CentraNo1-Bold", "fontSize": 14, "fontWeight": "600", "lineHeight": 18, @@ -1363,8 +1363,8 @@ exports[`BaseNotification gets icon correctly for each status 8`] = ` style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -1431,7 +1431,7 @@ exports[`BaseNotification gets icon correctly for each status 9`] = ` activeOpacity={0.8} style={ { - "backgroundColor": "#000000CC", + "backgroundColor": "#000000cc", "borderRadius": 8, "flex": 1, "flexDirection": "row", @@ -1451,7 +1451,7 @@ exports[`BaseNotification gets icon correctly for each status 9`] = ` style={ [ { - "color": "#d73847", + "color": "#ca3542", "fontSize": 36, }, undefined, @@ -1480,8 +1480,8 @@ exports[`BaseNotification gets icon correctly for each status 9`] = ` style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -1512,7 +1512,7 @@ exports[`BaseNotification gets icon correctly for each status 9`] = ` { "color": "#ffffff", "flex": 1, - "fontFamily": "EuclidCircularB-Bold", + "fontFamily": "CentraNo1-Bold", "fontSize": 14, "fontWeight": "600", "lineHeight": 18, @@ -1528,8 +1528,8 @@ exports[`BaseNotification gets icon correctly for each status 9`] = ` style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -1596,7 +1596,7 @@ exports[`BaseNotification gets icon correctly for each status 10`] = ` activeOpacity={0.8} style={ { - "backgroundColor": "#000000CC", + "backgroundColor": "#000000cc", "borderRadius": 8, "flex": 1, "flexDirection": "row", @@ -1616,7 +1616,7 @@ exports[`BaseNotification gets icon correctly for each status 10`] = ` style={ [ { - "color": "#d73847", + "color": "#ca3542", "fontSize": 36, }, undefined, @@ -1645,8 +1645,8 @@ exports[`BaseNotification gets icon correctly for each status 10`] = ` style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -1677,7 +1677,7 @@ exports[`BaseNotification gets icon correctly for each status 10`] = ` { "color": "#ffffff", "flex": 1, - "fontFamily": "EuclidCircularB-Bold", + "fontFamily": "CentraNo1-Bold", "fontSize": 14, "fontWeight": "600", "lineHeight": 18, @@ -1693,8 +1693,8 @@ exports[`BaseNotification gets icon correctly for each status 10`] = ` style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, diff --git a/app/components/UI/Notification/Empty/__snapshots__/index.test.tsx.snap b/app/components/UI/Notification/Empty/__snapshots__/index.test.tsx.snap index f5f9d8cc3d62..9d7e2733cb4d 100644 --- a/app/components/UI/Notification/Empty/__snapshots__/index.test.tsx.snap +++ b/app/components/UI/Notification/Empty/__snapshots__/index.test.tsx.snap @@ -11,7 +11,7 @@ exports[`Empty should render correctly 1`] = ` } > <SvgMock - color="#141618" + color="#121314" height={32} name="Notification" style={ @@ -29,8 +29,8 @@ exports[`Empty should render correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", + "color": "#121314", + "fontFamily": "CentraNo1-Bold", "fontSize": 18, "fontWeight": "700", "letterSpacing": 0, @@ -47,12 +47,12 @@ exports[`Empty should render correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, "marginBottom": 8, "paddingHorizontal": 32, "textAlign": "center", diff --git a/app/components/UI/Notification/List/__snapshots__/index.test.tsx.snap b/app/components/UI/Notification/List/__snapshots__/index.test.tsx.snap index 6109381f4d0f..0b0c14b9fa93 100644 --- a/app/components/UI/Notification/List/__snapshots__/index.test.tsx.snap +++ b/app/components/UI/Notification/List/__snapshots__/index.test.tsx.snap @@ -22,7 +22,7 @@ exports[`NotificationsList renders correctly 1`] = ` } > <ActivityIndicator - color="#0376c9" + color="#4459ff" size="large" /> </View> @@ -91,7 +91,7 @@ exports[`NotificationsList renders empty state 1`] = ` testID="no-notifications-container" > <SvgMock - color="#141618" + color="#121314" height={32} name="Notification" style={ @@ -109,8 +109,8 @@ exports[`NotificationsList renders empty state 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", + "color": "#121314", + "fontFamily": "CentraNo1-Bold", "fontSize": 18, "fontWeight": "700", "letterSpacing": 0, @@ -127,12 +127,12 @@ exports[`NotificationsList renders empty state 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, "marginBottom": 8, "paddingHorizontal": 32, "textAlign": "center", diff --git a/app/components/UI/Notification/List/index.tsx b/app/components/UI/Notification/List/index.tsx index 68c73b07542d..e8d181a34bd6 100644 --- a/app/components/UI/Notification/List/index.tsx +++ b/app/components/UI/Notification/List/index.tsx @@ -25,6 +25,7 @@ import { useMetrics } from '../../../hooks/useMetrics'; import Empty from '../Empty'; import { NotificationMenuItem } from '../NotificationMenuItem'; import useStyles from './useStyles'; +import { NotificationMenuViewSelectorsIDs } from '../../../../../e2e/selectors/Notifications/NotificationMenuView.selectors'; interface NotificationsListProps { navigation: NavigationProp<ParamListBase>; @@ -102,7 +103,6 @@ export function useNotificationOnClick( } export function NotificationsListItem(props: NotificationsListItemProps) { - const { styles } = useStyles(); const onNotificationClick = useNotificationOnClick(props); const menuItemState = useMemo(() => { @@ -122,9 +122,8 @@ export function NotificationsListItem(props: NotificationsListItemProps) { return ( <NotificationMenuItem.Root handleOnPress={() => onNotificationClick(props.notification)} - styles={styles} - simultaneousHandlers={undefined} isRead={props.notification.isRead} + testID={NotificationMenuViewSelectorsIDs.ITEM(props.notification.id)} > <NotificationMenuItem.Icon isRead={props.notification.isRead} diff --git a/app/components/UI/Notification/List/styles.ts b/app/components/UI/Notification/List/styles.ts index 8c065f0f326d..712c3b4518a5 100644 --- a/app/components/UI/Notification/List/styles.ts +++ b/app/components/UI/Notification/List/styles.ts @@ -1,6 +1,10 @@ /* eslint-disable import/prefer-default-export */ import { StyleSheet } from 'react-native'; import type { Theme } from '@metamask/design-tokens'; +import { + getFontFamily, + TextVariant, +} from '../../../../component-library/components/Texts/Text'; export type NotificationListStyles = ReturnType<typeof createStyles>; @@ -76,7 +80,8 @@ export const createStyles = ({ colors, typography }: Theme) => borderColor: colors.background.default, }, textStyle: { - ...typography.sBodyMD, + ...typography.sBodyMDMedium, + fontFamily: getFontFamily(TextVariant.BodyMDMedium), fontWeight: '500', }, loader: { diff --git a/app/components/UI/Notification/Modal/styles.ts b/app/components/UI/Notification/Modal/styles.ts index e79ca6efa19a..c48fa4cb7248 100644 --- a/app/components/UI/Notification/Modal/styles.ts +++ b/app/components/UI/Notification/Modal/styles.ts @@ -1,6 +1,10 @@ // Third party dependencies. import { StyleSheet, TextStyle } from 'react-native'; import { typography, ThemeColors } from '@metamask/design-tokens'; +import { + getFontFamily, + TextVariant, +} from '../../../../component-library/components/Texts/Text'; /** * Style sheet function for AmbiguousAddressSheet component. @@ -17,6 +21,7 @@ export default (colors: ThemeColors) => }, heading: { ...(typography.sHeadingMD as TextStyle), + fontFamily: getFontFamily(TextVariant.HeadingMD), color: colors.text.default, }, description: { @@ -26,6 +31,7 @@ export default (colors: ThemeColors) => }, subtitle: { ...(typography.sBodyMD as TextStyle), + fontFamily: getFontFamily(TextVariant.BodyMD), color: colors.text.default, alignSelf: 'flex-start', paddingTop: 16, diff --git a/app/components/UI/Notification/NotificationMenuItem/Root.test.tsx b/app/components/UI/Notification/NotificationMenuItem/Root.test.tsx index d897c8b07a8f..67be66a405e1 100644 --- a/app/components/UI/Notification/NotificationMenuItem/Root.test.tsx +++ b/app/components/UI/Notification/NotificationMenuItem/Root.test.tsx @@ -1,102 +1,51 @@ -// eslint-disable-next-line @typescript-eslint/ban-ts-comment -// @ts-nocheck - Notifications team directory import React from 'react'; - -import renderWithProvider from '../../../../util/test/renderWithProvider'; -import { PanGestureHandlerGestureEvent } from 'react-native-gesture-handler'; -import { useSharedValue, runOnJS, withTiming } from 'react-native-reanimated'; - +import { userEvent } from '@testing-library/react-native'; +import { lightTheme } from '@metamask/design-tokens'; import NotificationRoot from './Root'; - -const children = <></>; -const styles = { - wrapper: {}, - trashIconContainer: {}, -}; -const handleOnPress = jest.fn(); -jest.mock('react-native-reanimated', () => ({ - ...jest.requireActual('react-native-reanimated/mock'), - useSharedValue: jest.fn().mockImplementation((init) => ({ - value: init, - withTiming: jest.fn((toValue, _, callback) => ({ toValue, callback })), - })), - runOnJS: jest.fn((callback) => callback()), -})); +import renderWithProvider from '../../../../util/test/renderWithProvider'; describe('NotificationRoot', () => { - const SWIPE_THRESHOLD = -100; - const SCREEN_WIDTH = 300; // Assume some screen width - - // Mock callbacks - const onDismiss = jest.fn(); - - // Shared values setup - const transX = useSharedValue(0); - const itemHeight = useSharedValue(100); // Assume initial height - const paddingVertical = useSharedValue(20); // Assume initial padding - const opacity = useSharedValue(1); // Assume full opacity - const onActive = (event: PanGestureHandlerGestureEvent) => { - const isSwipingLeft = event.translationX > 0; - - if (isSwipingLeft) { - transX.value = 0; - return; - } - - transX.value = event.translationX; + const arrange = () => { + const mockOnPress = jest.fn(); + const testID = 'notification-root'; + const renderComponent = (props = { isRead: false }) => + renderWithProvider( + <NotificationRoot + handleOnPress={mockOnPress} + isRead={props.isRead} + testID={testID} + > + Hello + </NotificationRoot>, + ); + + return { + mockOnPress, + renderComponent, + testID, + }; }; - const onEnd = () => { - const isDismissed = transX.value < SWIPE_THRESHOLD; - if (isDismissed) { - transX.value = withTiming(-SCREEN_WIDTH); - itemHeight.value = withTiming(0); - paddingVertical.value = withTiming(0); - opacity.value = withTiming(0, undefined, (isFinished: boolean) => { - if (isFinished && onDismiss) { - runOnJS(onDismiss); - } - }); - } else { - transX.value = withTiming(0); - } - }; - - it('matches snapshot', () => { - const { toJSON } = renderWithProvider( - <NotificationRoot - handleOnPress={handleOnPress} - onDismiss={onDismiss} - styles={styles} - > - {children} - </NotificationRoot>, - ); - expect(toJSON()).toMatchSnapshot(); - }); - it('should dismiss the item if transX.value is less than SWIPE_THRESHOLD', () => { - transX.value = -150; - onEnd(); - expect(transX.value).toBe(-SCREEN_WIDTH); - expect(itemHeight.value).toBe(0); - expect(paddingVertical.value).toBe(0); - expect(opacity.value).toBe(0); - expect(onDismiss).toHaveBeenCalled(); + it('renders component with read styles', () => { + const { renderComponent, testID } = arrange(); + const { getByTestId } = renderComponent({ isRead: true }); + expect(getByTestId(testID)).toHaveStyle({ + backgroundColor: lightTheme.colors.background.default, + }); }); - it('should set transX.value to 0 if swiping left', () => { - const event = { - translationX: 10, - } as unknown as PanGestureHandlerGestureEvent; - onActive(event); - expect(transX.value).toBe(0); + it('renders component with unread styles', () => { + const { renderComponent, testID } = arrange(); + const { getByTestId } = renderComponent({ isRead: false }); + expect(getByTestId(testID)).toHaveStyle({ + backgroundColor: lightTheme.colors.info.muted, + }); }); - it('should set transX.value to event.translationX if not swiping left', () => { - const event = { - translationX: -10, - } as unknown as PanGestureHandlerGestureEvent; - onActive(event); - expect(transX.value).toBe(-10); + it('invokes callback when pressed', async () => { + const { renderComponent, testID, mockOnPress } = arrange(); + const { getByTestId } = renderComponent(); + await userEvent.press(getByTestId(testID)); + expect(mockOnPress).toHaveBeenCalled(); }); }); diff --git a/app/components/UI/Notification/NotificationMenuItem/Root.tsx b/app/components/UI/Notification/NotificationMenuItem/Root.tsx index 50d06a053c49..aca35fc43107 100644 --- a/app/components/UI/Notification/NotificationMenuItem/Root.tsx +++ b/app/components/UI/Notification/NotificationMenuItem/Root.tsx @@ -1,25 +1,21 @@ -// eslint-disable-next-line @typescript-eslint/ban-ts-comment -// @ts-nocheck - Notifications team directory import React from 'react'; import { TouchableOpacity } from 'react-native'; - -import { NotificationListStyles } from '../List/styles'; - -interface NotificationRootProps - extends Pick<PanGestureHandlerProps, 'simultaneousHandlers'> { +import useStyles from '../List/useStyles'; +interface NotificationRootProps { children: React.ReactNode; - styles: NotificationListStyles; handleOnPress: () => void; - onDismiss?: () => void; isRead?: boolean; + testID?: string; } function NotificationRoot({ children, handleOnPress, - styles, isRead, + testID, }: NotificationRootProps) { + const { styles } = useStyles(); + return ( <TouchableOpacity onPress={handleOnPress} @@ -27,6 +23,7 @@ function NotificationRoot({ styles.menuItemContainer, !isRead ? styles.unreadItemContainer : styles.readItemContainer, ]} + testID={testID} > {children} </TouchableOpacity> diff --git a/app/components/UI/Notification/NotificationMenuItem/__snapshots__/Content.test.tsx.snap b/app/components/UI/Notification/NotificationMenuItem/__snapshots__/Content.test.tsx.snap index 567f817586d4..c85c4539d066 100644 --- a/app/components/UI/Notification/NotificationMenuItem/__snapshots__/Content.test.tsx.snap +++ b/app/components/UI/Notification/NotificationMenuItem/__snapshots__/Content.test.tsx.snap @@ -22,13 +22,13 @@ exports[`NotificationContent render matches snapshot 1`] = ` accessibilityRole="text" style={ { - "color": "#6a737d", + "color": "#686e7d", "flex": 1, - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -38,12 +38,12 @@ exports[`NotificationContent render matches snapshot 1`] = ` accessibilityRole="text" style={ { - "color": "#9fa6ae", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#9ca1af", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -64,13 +64,13 @@ exports[`NotificationContent render matches snapshot 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", + "color": "#121314", "flex": 1, - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -80,12 +80,12 @@ exports[`NotificationContent render matches snapshot 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > diff --git a/app/components/UI/Notification/NotificationMenuItem/__snapshots__/Icon.test.tsx.snap b/app/components/UI/Notification/NotificationMenuItem/__snapshots__/Icon.test.tsx.snap index 1a9311368bfd..420b23be3727 100644 --- a/app/components/UI/Notification/NotificationMenuItem/__snapshots__/Icon.test.tsx.snap +++ b/app/components/UI/Notification/NotificationMenuItem/__snapshots__/Icon.test.tsx.snap @@ -28,8 +28,8 @@ exports[`NotificationIcon matches snapshot when icon is provided 1`] = ` onError={[Function]} placeholderStyle={ { - "backgroundColor": "#f2f4f6", - "borderColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", + "borderColor": "#f3f5f9", "borderRadius": 16, "borderWidth": 0.5, "height": 32, @@ -43,7 +43,7 @@ exports[`NotificationIcon matches snapshot when icon is provided 1`] = ` } style={ { - "borderColor": "#f2f4f6", + "borderColor": "#f3f5f9", "borderRadius": 16, "borderWidth": 0.5, "height": 32, @@ -80,7 +80,7 @@ exports[`NotificationIcon matches snapshot when icon is provided 1`] = ` { "alignItems": "center", "aspectRatio": 1, - "backgroundColor": "#0376c9", + "backgroundColor": "#4459ff", "borderColor": "#ffffff", "borderRadius": 9, "borderWidth": 1, @@ -111,7 +111,7 @@ exports[`NotificationIcon matches snapshot when icon is provided 1`] = ` <View style={ { - "backgroundColor": "#0376c9", + "backgroundColor": "#4459ff", "borderRadius": 2, "height": 4, "marginLeft": 8, diff --git a/app/components/UI/Notification/NotificationMenuItem/__snapshots__/Root.test.tsx.snap b/app/components/UI/Notification/NotificationMenuItem/__snapshots__/Root.test.tsx.snap deleted file mode 100644 index 0a3c705f1ecb..000000000000 --- a/app/components/UI/Notification/NotificationMenuItem/__snapshots__/Root.test.tsx.snap +++ /dev/null @@ -1,13 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`NotificationRoot matches snapshot 1`] = ` -<TouchableOpacity - onPress={[MockFunction]} - style={ - [ - undefined, - undefined, - ] - } -/> -`; diff --git a/app/components/UI/Notification/ResetNotificationsModal/__snapshots__/ResetNotificationsModal.test.tsx.snap b/app/components/UI/Notification/ResetNotificationsModal/__snapshots__/ResetNotificationsModal.test.tsx.snap index 46e093abdfef..b3892f29b74e 100644 --- a/app/components/UI/Notification/ResetNotificationsModal/__snapshots__/ResetNotificationsModal.test.tsx.snap +++ b/app/components/UI/Notification/ResetNotificationsModal/__snapshots__/ResetNotificationsModal.test.tsx.snap @@ -23,7 +23,7 @@ exports[`ProfileSyncingModal should render correctly 1`] = ` style={ [ { - "backgroundColor": "#00000099", + "backgroundColor": "#00000066", "bottom": 0, "left": 0, "position": "absolute", @@ -70,14 +70,14 @@ exports[`ProfileSyncingModal should render correctly 1`] = ` [ { "backgroundColor": "#ffffff", - "borderColor": "#BBC0C566", + "borderColor": "#b7bbc866", "borderTopLeftRadius": 8, "borderTopRightRadius": 8, "borderWidth": 1, "maxHeight": 1334, "overflow": "hidden", "paddingBottom": 0, - "shadowColor": "#0000001A", + "shadowColor": "#0000001a", "shadowOffset": { "height": 2, "width": 0, @@ -107,7 +107,7 @@ exports[`ProfileSyncingModal should render correctly 1`] = ` <View style={ { - "backgroundColor": "#BBC0C566", + "backgroundColor": "#b7bbc866", "borderRadius": 2, "height": 4, "width": 40, @@ -125,7 +125,7 @@ exports[`ProfileSyncingModal should render correctly 1`] = ` } > <SvgMock - color="#d73847" + color="#ca3542" height={32} name="Danger" style={ @@ -142,8 +142,8 @@ exports[`ProfileSyncingModal should render correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", + "color": "#121314", + "fontFamily": "CentraNo1-Bold", "fontSize": 18, "fontWeight": "700", "letterSpacing": 0, @@ -159,12 +159,12 @@ exports[`ProfileSyncingModal should render correctly 1`] = ` style={ { "alignSelf": "flex-start", - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, "paddingBottom": 10, "paddingTop": 16, } @@ -199,7 +199,7 @@ exports[`ProfileSyncingModal should render correctly 1`] = ` "alignItems": "center", "alignSelf": "flex-start", "backgroundColor": "transparent", - "borderColor": "#0376c9", + "borderColor": "#4459ff", "borderRadius": 24, "borderWidth": 1, "flex": 1, @@ -214,12 +214,12 @@ exports[`ProfileSyncingModal should render correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, + "color": "#4459ff", + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -246,7 +246,7 @@ exports[`ProfileSyncingModal should render correctly 1`] = ` { "alignItems": "center", "alignSelf": "flex-start", - "backgroundColor": "#0376c9", + "backgroundColor": "#4459ff", "borderRadius": 24, "flex": 1, "flexDirection": "row", @@ -261,11 +261,11 @@ exports[`ProfileSyncingModal should render correctly 1`] = ` style={ { "color": "#ffffff", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > diff --git a/app/components/UI/OnboardingWizard/Coachmark/__snapshots__/index.test.tsx.snap b/app/components/UI/OnboardingWizard/Coachmark/__snapshots__/index.test.tsx.snap index ef9f7b93f0a0..8bbaf21bd215 100644 --- a/app/components/UI/OnboardingWizard/Coachmark/__snapshots__/index.test.tsx.snap +++ b/app/components/UI/OnboardingWizard/Coachmark/__snapshots__/index.test.tsx.snap @@ -23,7 +23,7 @@ exports[`Coachmark should render correctly 1`] = ` style={ { "backgroundColor": "transparent", - "borderBottomColor": "#0376c9", + "borderBottomColor": "#4459ff", "borderBottomWidth": 12, "borderLeftColor": "transparent", "borderLeftWidth": 15, @@ -41,7 +41,7 @@ exports[`Coachmark should render correctly 1`] = ` style={ [ { - "backgroundColor": "#0376c9", + "backgroundColor": "#4459ff", "borderRadius": 8, "padding": 20, }, @@ -95,7 +95,7 @@ exports[`Coachmark should render correctly 1`] = ` { "alignSelf": "center", "color": "#ffffff", - "fontFamily": "EuclidCircularB-Bold", + "fontFamily": "CentraNo1-Bold", "fontSize": 18, "fontWeight": "600", } @@ -155,6 +155,7 @@ exports[`Coachmark should render correctly 1`] = ` style={ { "color": "#ffffff", + "fontFamily": "CentraNo1-Book", } } > @@ -206,13 +207,13 @@ exports[`Coachmark should render correctly 1`] = ` null, [ { - "fontFamily": "EuclidCircularB-Bold", + "fontFamily": "CentraNo1-Bold", "fontSize": 14, "fontWeight": "600", "textAlign": "center", }, { - "color": "#0376c9", + "color": "#4459ff", }, undefined, ], diff --git a/app/components/UI/OnboardingWizard/Coachmark/index.js b/app/components/UI/OnboardingWizard/Coachmark/index.js index 8be92c62e093..16fb6dad3ce0 100644 --- a/app/components/UI/OnboardingWizard/Coachmark/index.js +++ b/app/components/UI/OnboardingWizard/Coachmark/index.js @@ -23,6 +23,10 @@ import { } from '../../../../component-library/components/Buttons/Button'; import Button from '../../../../component-library/components/Buttons/Button/Button'; import { OnboardingWizardModalSelectorsIDs } from '../../../../../e2e/selectors/Onboarding/OnboardingWizardModal.selectors'; +import { + getFontFamily, + TextVariant, +} from '../../../../component-library/components/Texts/Text'; const createStyles = (colors) => StyleSheet.create({ @@ -159,7 +163,11 @@ const createStyles = (colors) => flexDirection: 'row', alignSelf: 'center', }, - stepCounter: { ...typography.BodyMD, color: colors.info.inverse }, + stepCounter: { + ...typography.BodyMD, + fontFamily: getFontFamily(TextVariant.BodyMD), + color: colors.info.inverse, + }, titleContainer: { flexDirection: 'row', alignItems: 'center', diff --git a/app/components/UI/OnboardingWizard/Step1/__snapshots__/index.test.tsx.snap b/app/components/UI/OnboardingWizard/Step1/__snapshots__/index.test.tsx.snap index 020360cb6397..e4f4a0550be2 100644 --- a/app/components/UI/OnboardingWizard/Step1/__snapshots__/index.test.tsx.snap +++ b/app/components/UI/OnboardingWizard/Step1/__snapshots__/index.test.tsx.snap @@ -32,7 +32,7 @@ exports[`Step1 should render correctly 1`] = ` style={ [ { - "backgroundColor": "#0376c9", + "backgroundColor": "#4459ff", "borderRadius": 8, "padding": 20, }, @@ -57,7 +57,7 @@ exports[`Step1 should render correctly 1`] = ` { "alignSelf": "center", "color": "#ffffff", - "fontFamily": "EuclidCircularB-Bold", + "fontFamily": "CentraNo1-Bold", "fontSize": 18, "fontWeight": "600", } @@ -108,7 +108,7 @@ exports[`Step1 should render correctly 1`] = ` style={ { "color": "#ffffff", - "fontFamily": "EuclidCircularB-Regular", + "fontFamily": "CentraNo1-Book", "fontSize": 14, "fontWeight": "400", "marginBottom": 20, @@ -137,7 +137,7 @@ exports[`Step1 should render correctly 1`] = ` { "alignItems": "center", "alignSelf": "stretch", - "backgroundColor": "#0376c9", + "backgroundColor": "#4459ff", "borderColor": "#ffffff", "borderRadius": 16, "borderWidth": 1, @@ -156,11 +156,11 @@ exports[`Step1 should render correctly 1`] = ` style={ { "color": "#ffffff", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -179,7 +179,7 @@ exports[`Step1 should render correctly 1`] = ` "alignItems": "center", "alignSelf": "stretch", "backgroundColor": "#ffffff", - "borderColor": "#0376c9", + "borderColor": "#4459ff", "borderRadius": 16, "borderWidth": 1, "flex": 0.5, @@ -196,12 +196,12 @@ exports[`Step1 should render correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, + "color": "#4459ff", + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -229,7 +229,7 @@ exports[`Step1 should render correctly 1`] = ` "borderRightColor": "transparent", "borderRightWidth": 15, "borderStyle": "solid", - "borderTopColor": "#0376c9", + "borderTopColor": "#4459ff", "borderTopWidth": 12, "height": 0, "position": "absolute", diff --git a/app/components/UI/OnboardingWizard/Step2/__snapshots__/index.test.tsx.snap b/app/components/UI/OnboardingWizard/Step2/__snapshots__/index.test.tsx.snap index 4e7d10d32b90..d7d2319eb7ed 100644 --- a/app/components/UI/OnboardingWizard/Step2/__snapshots__/index.test.tsx.snap +++ b/app/components/UI/OnboardingWizard/Step2/__snapshots__/index.test.tsx.snap @@ -44,7 +44,7 @@ exports[`Step2 should render correctly 1`] = ` style={ { "backgroundColor": "transparent", - "borderBottomColor": "#0376c9", + "borderBottomColor": "#4459ff", "borderBottomWidth": 12, "borderLeftColor": "transparent", "borderLeftWidth": 15, @@ -62,7 +62,7 @@ exports[`Step2 should render correctly 1`] = ` style={ [ { - "backgroundColor": "#0376c9", + "backgroundColor": "#4459ff", "borderRadius": 8, "padding": 20, }, @@ -116,7 +116,7 @@ exports[`Step2 should render correctly 1`] = ` { "alignSelf": "center", "color": "#ffffff", - "fontFamily": "EuclidCircularB-Bold", + "fontFamily": "CentraNo1-Bold", "fontSize": 18, "fontWeight": "600", } @@ -167,7 +167,7 @@ exports[`Step2 should render correctly 1`] = ` style={ { "color": "#ffffff", - "fontFamily": "EuclidCircularB-Regular", + "fontFamily": "CentraNo1-Book", "fontSize": 14, "fontWeight": "400", "marginBottom": 20, @@ -199,6 +199,7 @@ exports[`Step2 should render correctly 1`] = ` style={ { "color": "#ffffff", + "fontFamily": "CentraNo1-Book", } } > @@ -250,13 +251,13 @@ exports[`Step2 should render correctly 1`] = ` null, [ { - "fontFamily": "EuclidCircularB-Bold", + "fontFamily": "CentraNo1-Bold", "fontSize": 14, "fontWeight": "600", "textAlign": "center", }, { - "color": "#0376c9", + "color": "#4459ff", }, undefined, ], diff --git a/app/components/UI/OnboardingWizard/Step3/__snapshots__/index.test.tsx.snap b/app/components/UI/OnboardingWizard/Step3/__snapshots__/index.test.tsx.snap index 80013e2cbc1e..f9f4698f5631 100644 --- a/app/components/UI/OnboardingWizard/Step3/__snapshots__/index.test.tsx.snap +++ b/app/components/UI/OnboardingWizard/Step3/__snapshots__/index.test.tsx.snap @@ -45,7 +45,7 @@ exports[`Step3 should render correctly 1`] = ` style={ { "backgroundColor": "transparent", - "borderBottomColor": "#0376c9", + "borderBottomColor": "#4459ff", "borderBottomWidth": 12, "borderLeftColor": "transparent", "borderLeftWidth": 15, @@ -63,7 +63,7 @@ exports[`Step3 should render correctly 1`] = ` style={ [ { - "backgroundColor": "#0376c9", + "backgroundColor": "#4459ff", "borderRadius": 8, "padding": 20, }, @@ -117,7 +117,7 @@ exports[`Step3 should render correctly 1`] = ` { "alignSelf": "center", "color": "#ffffff", - "fontFamily": "EuclidCircularB-Bold", + "fontFamily": "CentraNo1-Bold", "fontSize": 18, "fontWeight": "600", } @@ -168,7 +168,7 @@ exports[`Step3 should render correctly 1`] = ` style={ { "color": "#ffffff", - "fontFamily": "EuclidCircularB-Regular", + "fontFamily": "CentraNo1-Book", "fontSize": 14, "fontWeight": "400", "marginBottom": 20, @@ -200,6 +200,7 @@ exports[`Step3 should render correctly 1`] = ` style={ { "color": "#ffffff", + "fontFamily": "CentraNo1-Book", } } > @@ -251,13 +252,13 @@ exports[`Step3 should render correctly 1`] = ` null, [ { - "fontFamily": "EuclidCircularB-Bold", + "fontFamily": "CentraNo1-Bold", "fontSize": 14, "fontWeight": "600", "textAlign": "center", }, { - "color": "#0376c9", + "color": "#4459ff", }, undefined, ], diff --git a/app/components/UI/OnboardingWizard/Step4/__snapshots__/index.test.tsx.snap b/app/components/UI/OnboardingWizard/Step4/__snapshots__/index.test.tsx.snap index d326e11c7afc..b8c3cb9d540e 100644 --- a/app/components/UI/OnboardingWizard/Step4/__snapshots__/index.test.tsx.snap +++ b/app/components/UI/OnboardingWizard/Step4/__snapshots__/index.test.tsx.snap @@ -45,7 +45,7 @@ exports[`Step4 should render correctly 1`] = ` style={ { "backgroundColor": "transparent", - "borderBottomColor": "#0376c9", + "borderBottomColor": "#4459ff", "borderBottomWidth": 12, "borderLeftColor": "transparent", "borderLeftWidth": 15, @@ -63,7 +63,7 @@ exports[`Step4 should render correctly 1`] = ` style={ [ { - "backgroundColor": "#0376c9", + "backgroundColor": "#4459ff", "borderRadius": 8, "padding": 20, }, @@ -117,7 +117,7 @@ exports[`Step4 should render correctly 1`] = ` { "alignSelf": "center", "color": "#ffffff", - "fontFamily": "EuclidCircularB-Bold", + "fontFamily": "CentraNo1-Bold", "fontSize": 18, "fontWeight": "600", } @@ -168,7 +168,7 @@ exports[`Step4 should render correctly 1`] = ` style={ { "color": "#ffffff", - "fontFamily": "EuclidCircularB-Regular", + "fontFamily": "CentraNo1-Book", "fontSize": 14, "fontWeight": "400", "marginBottom": 20, @@ -200,6 +200,7 @@ exports[`Step4 should render correctly 1`] = ` style={ { "color": "#ffffff", + "fontFamily": "CentraNo1-Book", } } > @@ -251,13 +252,13 @@ exports[`Step4 should render correctly 1`] = ` null, [ { - "fontFamily": "EuclidCircularB-Bold", + "fontFamily": "CentraNo1-Bold", "fontSize": 14, "fontWeight": "600", "textAlign": "center", }, { - "color": "#0376c9", + "color": "#4459ff", }, undefined, ], diff --git a/app/components/UI/OnboardingWizard/Step5/__snapshots__/index.test.tsx.snap b/app/components/UI/OnboardingWizard/Step5/__snapshots__/index.test.tsx.snap index 0d7b327c54f6..d56ae0e89112 100644 --- a/app/components/UI/OnboardingWizard/Step5/__snapshots__/index.test.tsx.snap +++ b/app/components/UI/OnboardingWizard/Step5/__snapshots__/index.test.tsx.snap @@ -33,7 +33,7 @@ exports[`Step5 should render correctly 1`] = ` style={ [ { - "backgroundColor": "#0376c9", + "backgroundColor": "#4459ff", "borderRadius": 8, "padding": 20, }, @@ -87,7 +87,7 @@ exports[`Step5 should render correctly 1`] = ` { "alignSelf": "center", "color": "#ffffff", - "fontFamily": "EuclidCircularB-Bold", + "fontFamily": "CentraNo1-Bold", "fontSize": 18, "fontWeight": "600", } @@ -138,7 +138,7 @@ exports[`Step5 should render correctly 1`] = ` style={ { "color": "#ffffff", - "fontFamily": "EuclidCircularB-Regular", + "fontFamily": "CentraNo1-Book", "fontSize": 14, "fontWeight": "400", "marginBottom": 20, @@ -170,6 +170,7 @@ exports[`Step5 should render correctly 1`] = ` style={ { "color": "#ffffff", + "fontFamily": "CentraNo1-Book", } } > @@ -221,13 +222,13 @@ exports[`Step5 should render correctly 1`] = ` null, [ { - "fontFamily": "EuclidCircularB-Bold", + "fontFamily": "CentraNo1-Bold", "fontSize": 14, "fontWeight": "600", "textAlign": "center", }, { - "color": "#0376c9", + "color": "#4459ff", }, undefined, ], @@ -258,7 +259,7 @@ exports[`Step5 should render correctly 1`] = ` "borderRightColor": "transparent", "borderRightWidth": 15, "borderStyle": "solid", - "borderTopColor": "#0376c9", + "borderTopColor": "#4459ff", "borderTopWidth": 12, "height": 0, "position": "absolute", diff --git a/app/components/UI/OnboardingWizard/Step6/__snapshots__/index.test.tsx.snap b/app/components/UI/OnboardingWizard/Step6/__snapshots__/index.test.tsx.snap index 7429c78a58ed..677587077f8d 100644 --- a/app/components/UI/OnboardingWizard/Step6/__snapshots__/index.test.tsx.snap +++ b/app/components/UI/OnboardingWizard/Step6/__snapshots__/index.test.tsx.snap @@ -32,7 +32,7 @@ exports[`Step6 should render correctly 1`] = ` style={ [ { - "backgroundColor": "#0376c9", + "backgroundColor": "#4459ff", "borderRadius": 8, "padding": 20, }, @@ -86,7 +86,7 @@ exports[`Step6 should render correctly 1`] = ` { "alignSelf": "center", "color": "#ffffff", - "fontFamily": "EuclidCircularB-Bold", + "fontFamily": "CentraNo1-Bold", "fontSize": 18, "fontWeight": "600", } @@ -137,7 +137,7 @@ exports[`Step6 should render correctly 1`] = ` style={ { "color": "#ffffff", - "fontFamily": "EuclidCircularB-Regular", + "fontFamily": "CentraNo1-Book", "fontSize": 14, "fontWeight": "400", "marginBottom": 20, @@ -169,6 +169,7 @@ exports[`Step6 should render correctly 1`] = ` style={ { "color": "#ffffff", + "fontFamily": "CentraNo1-Book", } } > @@ -220,13 +221,13 @@ exports[`Step6 should render correctly 1`] = ` null, [ { - "fontFamily": "EuclidCircularB-Bold", + "fontFamily": "CentraNo1-Bold", "fontSize": 14, "fontWeight": "600", "textAlign": "center", }, { - "color": "#0376c9", + "color": "#4459ff", }, undefined, ], @@ -258,7 +259,7 @@ exports[`Step6 should render correctly 1`] = ` "borderRightColor": "transparent", "borderRightWidth": 15, "borderStyle": "solid", - "borderTopColor": "#0376c9", + "borderTopColor": "#4459ff", "borderTopWidth": 12, "height": 0, "position": "absolute", diff --git a/app/components/UI/OnboardingWizard/Step7/__snapshots__/index.test.tsx.snap b/app/components/UI/OnboardingWizard/Step7/__snapshots__/index.test.tsx.snap index c703d6ad1f85..1eb4596401d0 100644 --- a/app/components/UI/OnboardingWizard/Step7/__snapshots__/index.test.tsx.snap +++ b/app/components/UI/OnboardingWizard/Step7/__snapshots__/index.test.tsx.snap @@ -44,7 +44,7 @@ exports[`Step7 should render correctly 1`] = ` style={ { "backgroundColor": "transparent", - "borderBottomColor": "#0376c9", + "borderBottomColor": "#4459ff", "borderBottomWidth": 12, "borderLeftColor": "transparent", "borderLeftWidth": 15, @@ -62,7 +62,7 @@ exports[`Step7 should render correctly 1`] = ` style={ [ { - "backgroundColor": "#0376c9", + "backgroundColor": "#4459ff", "borderRadius": 8, "padding": 20, }, @@ -116,7 +116,7 @@ exports[`Step7 should render correctly 1`] = ` { "alignSelf": "center", "color": "#ffffff", - "fontFamily": "EuclidCircularB-Bold", + "fontFamily": "CentraNo1-Bold", "fontSize": 18, "fontWeight": "600", } @@ -167,7 +167,7 @@ exports[`Step7 should render correctly 1`] = ` style={ { "color": "#ffffff", - "fontFamily": "EuclidCircularB-Regular", + "fontFamily": "CentraNo1-Book", "fontSize": 14, "fontWeight": "400", "marginBottom": 20, @@ -199,6 +199,7 @@ exports[`Step7 should render correctly 1`] = ` style={ { "color": "#ffffff", + "fontFamily": "CentraNo1-Book", } } > @@ -250,13 +251,13 @@ exports[`Step7 should render correctly 1`] = ` null, [ { - "fontFamily": "EuclidCircularB-Bold", + "fontFamily": "CentraNo1-Bold", "fontSize": 14, "fontWeight": "600", "textAlign": "center", }, { - "color": "#0376c9", + "color": "#4459ff", }, undefined, ], diff --git a/app/components/UI/OnboardingWizard/index.tsx b/app/components/UI/OnboardingWizard/index.tsx index 1c2b70dd3e1f..952681569072 100644 --- a/app/components/UI/OnboardingWizard/index.tsx +++ b/app/components/UI/OnboardingWizard/index.tsx @@ -5,6 +5,10 @@ import Modal from 'react-native-modal'; import type { Theme } from '@metamask/design-tokens'; import { DrawerContext } from '../../../components/Nav/Main/MainNavigator'; import { colors as importedColors } from '../../../styles/common'; +import { + getFontFamily, + TextVariant, +} from '../../../component-library/components/Texts/Text'; import Step1 from './Step1'; import Step2 from './Step2'; @@ -66,6 +70,7 @@ const createStyles = ({ colors, typography }: Theme) => }, skipText: { ...typography.sBodyMD, + fontFamily: getFontFamily(TextVariant.BodyMD), color: colors.primary.default, } as TextStyle, }); diff --git a/app/components/UI/OptinMetrics/__snapshots__/index.test.tsx.snap b/app/components/UI/OptinMetrics/__snapshots__/index.test.tsx.snap index 50d8fabbdf4a..42e41ebecaa8 100644 --- a/app/components/UI/OptinMetrics/__snapshots__/index.test.tsx.snap +++ b/app/components/UI/OptinMetrics/__snapshots__/index.test.tsx.snap @@ -126,7 +126,7 @@ exports[`OptinMetrics render matches snapshot 1`] = ` style={ { "height": 35, - "tintColor": "#141618", + "tintColor": "#121314", "width": 70, } } @@ -358,8 +358,8 @@ exports[`OptinMetrics render matches snapshot 1`] = ` <Text style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", + "color": "#121314", + "fontFamily": "CentraNo1-Bold", "fontSize": 22, "fontWeight": "600", } @@ -371,8 +371,8 @@ exports[`OptinMetrics render matches snapshot 1`] = ` <Text style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 14, "fontWeight": "400", "paddingVertical": 10, @@ -386,8 +386,8 @@ exports[`OptinMetrics render matches snapshot 1`] = ` onPress={[Function]} style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Regular", + "color": "#4459ff", + "fontFamily": "CentraNo1-Book", "fontSize": 14, "fontWeight": "400", "paddingVertical": 10, @@ -399,8 +399,8 @@ exports[`OptinMetrics render matches snapshot 1`] = ` <Text style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 14, "fontWeight": "400", "paddingVertical": 10, @@ -432,7 +432,7 @@ exports[`OptinMetrics render matches snapshot 1`] = ` "marginRight": 5, }, { - "color": "#1c8234", + "color": "#1c7e33", }, ], { @@ -449,9 +449,9 @@ exports[`OptinMetrics render matches snapshot 1`] = ` <Text style={ { - "color": "#141618", + "color": "#121314", "flex": 1, - "fontFamily": "EuclidCircularB-Regular", + "fontFamily": "CentraNo1-Book", "fontWeight": "400", } } @@ -459,7 +459,7 @@ exports[`OptinMetrics render matches snapshot 1`] = ` <Text style={ { - "fontFamily": "EuclidCircularB-Bold", + "fontFamily": "CentraNo1-Bold", "fontWeight": "600", } } @@ -492,7 +492,7 @@ exports[`OptinMetrics render matches snapshot 1`] = ` "marginRight": 5, }, { - "color": "#1c8234", + "color": "#1c7e33", }, ], { @@ -509,9 +509,9 @@ exports[`OptinMetrics render matches snapshot 1`] = ` <Text style={ { - "color": "#141618", + "color": "#121314", "flex": 1, - "fontFamily": "EuclidCircularB-Regular", + "fontFamily": "CentraNo1-Book", "fontWeight": "400", } } @@ -519,7 +519,7 @@ exports[`OptinMetrics render matches snapshot 1`] = ` <Text style={ { - "fontFamily": "EuclidCircularB-Bold", + "fontFamily": "CentraNo1-Bold", "fontWeight": "600", } } @@ -552,7 +552,7 @@ exports[`OptinMetrics render matches snapshot 1`] = ` "marginRight": 5, }, { - "color": "#1c8234", + "color": "#1c7e33", }, ], { @@ -569,9 +569,9 @@ exports[`OptinMetrics render matches snapshot 1`] = ` <Text style={ { - "color": "#141618", + "color": "#121314", "flex": 1, - "fontFamily": "EuclidCircularB-Regular", + "fontFamily": "CentraNo1-Book", "fontWeight": "400", } } @@ -579,7 +579,7 @@ exports[`OptinMetrics render matches snapshot 1`] = ` <Text style={ { - "fontFamily": "EuclidCircularB-Bold", + "fontFamily": "CentraNo1-Bold", "fontWeight": "600", } } @@ -622,7 +622,7 @@ exports[`OptinMetrics render matches snapshot 1`] = ` { "alignItems": "center", "backgroundColor": "#ffffff", - "borderColor": "#141618", + "borderColor": "#121314", "borderRadius": 4, "borderWidth": 2, "height": 20, @@ -635,8 +635,8 @@ exports[`OptinMetrics render matches snapshot 1`] = ` <Text style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 14, "fontWeight": "400", "paddingVertical": 10, @@ -650,8 +650,8 @@ exports[`OptinMetrics render matches snapshot 1`] = ` <Text style={ { - "color": "#9fa6ae", - "fontFamily": "EuclidCircularB-Regular", + "color": "#9ca1af", + "fontFamily": "CentraNo1-Book", "fontSize": 14, "fontWeight": "400", "marginTop": 10, @@ -670,12 +670,12 @@ exports[`OptinMetrics render matches snapshot 1`] = ` style={ { "backgroundColor": "transparent", - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } suppressHighlighting={true} @@ -684,12 +684,12 @@ exports[`OptinMetrics render matches snapshot 1`] = ` accessibilityRole="text" style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, + "color": "#4459ff", + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -730,7 +730,7 @@ exports[`OptinMetrics render matches snapshot 1`] = ` "alignItems": "center", "alignSelf": "flex-start", "backgroundColor": "transparent", - "borderColor": "#0376c9", + "borderColor": "#4459ff", "borderRadius": 24, "borderWidth": 1, "flex": 1, @@ -746,12 +746,12 @@ exports[`OptinMetrics render matches snapshot 1`] = ` accessibilityRole="text" style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, + "color": "#4459ff", + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -777,7 +777,7 @@ exports[`OptinMetrics render matches snapshot 1`] = ` { "alignItems": "center", "alignSelf": "flex-start", - "backgroundColor": "#0376c9", + "backgroundColor": "#4459ff", "borderRadius": 24, "flex": 1, "flexDirection": "row", @@ -793,11 +793,11 @@ exports[`OptinMetrics render matches snapshot 1`] = ` style={ { "color": "#ffffff", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > diff --git a/app/components/UI/PaymentRequest/__snapshots__/index.test.tsx.snap b/app/components/UI/PaymentRequest/__snapshots__/index.test.tsx.snap index 04d04cbf14bc..430f373b1bfa 100644 --- a/app/components/UI/PaymentRequest/__snapshots__/index.test.tsx.snap +++ b/app/components/UI/PaymentRequest/__snapshots__/index.test.tsx.snap @@ -57,8 +57,8 @@ exports[`PaymentRequest renders correctly 1`] = ` <Text style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 16, "fontWeight": "400", } @@ -71,7 +71,7 @@ exports[`PaymentRequest renders correctly 1`] = ` style={ { "backgroundColor": "#ffffff", - "borderColor": "#848c96", + "borderColor": "#b7bbc8", "borderRadius": 8, "borderWidth": 1, "flexDirection": "row", @@ -84,7 +84,7 @@ exports[`PaymentRequest renders correctly 1`] = ` style={ [ { - "color": "#9fa6ae", + "color": "#9ca1af", "fontSize": 18, }, { @@ -111,14 +111,14 @@ exports[`PaymentRequest renders correctly 1`] = ` onChangeText={[Function]} onSubmitEditing={[Function]} placeholder="Search assets" - placeholderTextColor="#9fa6ae" + placeholderTextColor="#9ca1af" returnKeyType="go" style={ [ { - "color": "#141618", + "color": "#121314", "flex": 1, - "fontFamily": "EuclidCircularB-Regular", + "fontFamily": "CentraNo1-Book", "fontSize": 16, "fontWeight": "400", "height": 40, @@ -145,8 +145,8 @@ exports[`PaymentRequest renders correctly 1`] = ` <Text style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 16, "fontWeight": "400", "marginBottom": 8, @@ -173,11 +173,11 @@ exports[`PaymentRequest renders correctly 1`] = ` }, { "backgroundColor": "#ffffff", - "borderColor": "#0376c9", + "borderColor": "#4459ff", "borderWidth": 1, }, { - "borderColor": "#848c96", + "borderColor": "#b7bbc8", "borderRadius": 8, "borderWidth": 1, "marginBottom": 8, @@ -283,8 +283,8 @@ exports[`PaymentRequest renders correctly 1`] = ` <Text style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 16, "fontWeight": "400", "paddingBottom": 4, @@ -296,8 +296,8 @@ exports[`PaymentRequest renders correctly 1`] = ` <Text style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontWeight": "400", } } @@ -322,11 +322,11 @@ exports[`PaymentRequest renders correctly 1`] = ` }, { "backgroundColor": "#ffffff", - "borderColor": "#0376c9", + "borderColor": "#4459ff", "borderWidth": 1, }, { - "borderColor": "#848c96", + "borderColor": "#b7bbc8", "borderRadius": 8, "borderWidth": 1, "marginBottom": 8, @@ -358,7 +358,7 @@ exports[`PaymentRequest renders correctly 1`] = ` <View placeholderStyle={ { - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", } } useNativeDriver={true} @@ -406,7 +406,7 @@ exports[`PaymentRequest renders correctly 1`] = ` "backgroundColor": "#eee", }, { - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", }, ] } @@ -427,8 +427,8 @@ exports[`PaymentRequest renders correctly 1`] = ` <Text style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 16, "fontWeight": "400", "paddingBottom": 4, @@ -440,8 +440,8 @@ exports[`PaymentRequest renders correctly 1`] = ` <Text style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontWeight": "400", } } diff --git a/app/components/UI/PaymentRequest/index.test.tsx b/app/components/UI/PaymentRequest/index.test.tsx index 5bcf31909bad..1f87f24907e8 100644 --- a/app/components/UI/PaymentRequest/index.test.tsx +++ b/app/components/UI/PaymentRequest/index.test.tsx @@ -1,5 +1,10 @@ import React from 'react'; -import { render, fireEvent, act } from '@testing-library/react-native'; +import { + render, + fireEvent, + act, + userEvent, +} from '@testing-library/react-native'; import PaymentRequest from './index'; import { Provider } from 'react-redux'; import configureMockStore from 'redux-mock-store'; @@ -152,9 +157,7 @@ describe('PaymentRequest', () => { it('switches to amount input mode when an asset is selected', async () => { const { getByText } = renderComponent({ navigation: mockNavigation }); - await act(async () => { - fireEvent.press(getByText('ETH')); - }); + await userEvent.press(getByText('ETH')); expect(getByText('Enter amount')).toBeTruthy(); expect(mockNavigation.setParams).toHaveBeenCalledWith({ @@ -167,20 +170,16 @@ describe('PaymentRequest', () => { const { getByText, getByPlaceholderText } = renderComponent(); // First, select an asset - await act(async () => { - fireEvent.press(getByText('ETH')); - }); + await userEvent.press(getByText('ETH')); const amountInput = getByPlaceholderText('0.00'); - await act(async () => { - fireEvent.changeText(amountInput, '1.5'); - }); + await userEvent.type(amountInput, '1.5'); expect(amountInput.props.value).toBe('1.5'); }); it('displays an error when an invalid amount is entered', async () => { - const { getByText, getByPlaceholderText, debug, queryByText } = + const { getByText, getByPlaceholderText, queryByText } = renderComponent(); (React.useState as jest.Mock).mockImplementation(() => [ @@ -190,9 +189,7 @@ describe('PaymentRequest', () => { mockSetShowError(true); - await act(async () => { - fireEvent.press(getByText('ETH')); - }); + await userEvent.press(getByText('ETH')); const amountInput = getByPlaceholderText('0.00'); const nextButton = getByText('Next'); @@ -202,8 +199,6 @@ describe('PaymentRequest', () => { fireEvent.press(nextButton); }); - debug(); - expect(mockSetShowError).toHaveBeenCalledWith(true); expect(queryByText('Invalid request, please try again')).toBeTruthy(); }); diff --git a/app/components/UI/PermissionsSummary/PermissionsSummary.test.tsx b/app/components/UI/PermissionsSummary/PermissionsSummary.test.tsx index 5ce8f2a4f7b3..83e2bcf6f080 100644 --- a/app/components/UI/PermissionsSummary/PermissionsSummary.test.tsx +++ b/app/components/UI/PermissionsSummary/PermissionsSummary.test.tsx @@ -6,6 +6,46 @@ import { MOCK_ACCOUNTS_CONTROLLER_STATE } from '../../../util/test/accountsContr const mockedNavigate = jest.fn(); +// Mock useSelectedAccount hook +jest.mock('../Tabs/TabThumbnail/useSelectedAccount', () => ({ + __esModule: true, + default: jest.fn().mockReturnValue({ + name: 'Account 2', + address: '0x0', + isSelected: true, + assets: { + fiatBalance: '$3200', + }, + }), +})); + +// Mock useAccounts hook +jest.mock('../../../components/hooks/useAccounts', () => ({ + useAccounts: jest.fn().mockReturnValue({ + accounts: [ + { + name: 'Account 2', + address: '0x0', + isSelected: true, + assets: { + fiatBalance: '$3200', + }, + }, + ], + evmAccounts: [ + { + name: 'Account 2', + address: '0x0', + isSelected: true, + assets: { + fiatBalance: '$3200', + }, + }, + ], + ensByAccountAddress: {}, + }), +})); + jest.mock('@react-navigation/native', () => { const actualNav = jest.requireActual('@react-navigation/native'); return { diff --git a/app/components/UI/PermissionsSummary/__snapshots__/PermissionsSummary.test.tsx.snap b/app/components/UI/PermissionsSummary/__snapshots__/PermissionsSummary.test.tsx.snap index a256181e3cab..a82cf511d72a 100644 --- a/app/components/UI/PermissionsSummary/__snapshots__/PermissionsSummary.test.tsx.snap +++ b/app/components/UI/PermissionsSummary/__snapshots__/PermissionsSummary.test.tsx.snap @@ -83,8 +83,8 @@ exports[`PermissionsSummary should render correctly 1`] = ` style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 24, "fontWeight": "400", "textAlign": "center", @@ -125,8 +125,8 @@ exports[`PermissionsSummary should render correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", + "color": "#121314", + "fontFamily": "CentraNo1-Bold", "fontSize": 16, "fontWeight": "700", "letterSpacing": 0, @@ -157,7 +157,7 @@ exports[`PermissionsSummary should render correctly 1`] = ` { "alignItems": "center", "alignSelf": "flex-start", - "backgroundColor": "#0000001A", + "backgroundColor": "#0000001a", "borderRadius": 16, "height": 32, "justifyContent": "center", @@ -167,7 +167,7 @@ exports[`PermissionsSummary should render correctly 1`] = ` } > <SvgMock - color="#6a737d" + color="#686e7d" height={20} name="Wallet" style={ @@ -191,12 +191,12 @@ exports[`PermissionsSummary should render correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -224,12 +224,12 @@ exports[`PermissionsSummary should render correctly 1`] = ` numberOfLines={1} style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } testID="permission-summary-account-text" @@ -238,12 +238,12 @@ exports[`PermissionsSummary should render correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -278,7 +278,7 @@ exports[`PermissionsSummary should render correctly 1`] = ` "overflow": "hidden", }, { - "backgroundColor": "#FC4800", + "backgroundColor": "#1593F2", "borderRadius": 8, "height": 16, "width": 16, @@ -318,19 +318,19 @@ exports[`PermissionsSummary should render correctly 1`] = ` <RNSVGRect fill={ { - "payload": 4278291575, + "payload": 4280574177, "type": 0, } } height={16} matrix={ [ - -0.41310442982454204, - -0.910683660806177, - 0.910683660806177, - -0.41310442982454204, - 4.404802817153955, - 20.16808402411075, + -0.14608302856241107, + 0.9892723329629884, + -0.9892723329629884, + -0.14608302856241107, + 18.877507984599454, + -1.41266974682138, ] } propList={ @@ -345,19 +345,19 @@ exports[`PermissionsSummary should render correctly 1`] = ` <RNSVGRect fill={ { - "payload": 4278410587, + "payload": 4294395137, "type": 0, } } height={16} matrix={ [ - 0.903335292863301, - -0.42893513340314526, - 0.42893513340314526, - 0.903335292863301, - -9.297010789302583, - 3.362634662066926, + -0.02094241988335673, + -0.9997806834748455, + 0.9997806834748455, + -0.02094241988335673, + -7.512435753557014, + 20.161960644608932, ] } propList={ @@ -372,19 +372,19 @@ exports[`PermissionsSummary should render correctly 1`] = ` <RNSVGRect fill={ { - "payload": 4294382337, + "payload": 4294736640, "type": 0, } } height={16} matrix={ [ - -0.6921431738704069, - -0.7217602280983622, - 0.7217602280983622, - -0.6921431738704069, - -6.169639630140347, - 15.20799235933167, + -0.458649554484315, + 0.8886172326549487, + -0.8886172326549487, + -0.458649554484315, + 14.2400072574634, + 19.300266514976617, ] } propList={ @@ -407,7 +407,7 @@ exports[`PermissionsSummary should render correctly 1`] = ` testID="connection-details-button" > <SvgMock - color="#141618" + color="#121314" height={20} name="ArrowRight" style={ @@ -441,7 +441,7 @@ exports[`PermissionsSummary should render correctly 1`] = ` { "alignItems": "center", "alignSelf": "flex-start", - "backgroundColor": "#0000001A", + "backgroundColor": "#0000001a", "borderRadius": 16, "height": 32, "justifyContent": "center", @@ -451,7 +451,7 @@ exports[`PermissionsSummary should render correctly 1`] = ` } > <SvgMock - color="#6a737d" + color="#686e7d" height={20} name="Data" style={ @@ -475,12 +475,12 @@ exports[`PermissionsSummary should render correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -508,12 +508,12 @@ exports[`PermissionsSummary should render correctly 1`] = ` numberOfLines={1} style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -521,12 +521,12 @@ exports[`PermissionsSummary should render correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -558,7 +558,7 @@ exports[`PermissionsSummary should render correctly 1`] = ` testID="connection-details-button" > <SvgMock - color="#141618" + color="#121314" height={20} name="ArrowRight" style={ @@ -601,7 +601,7 @@ exports[`PermissionsSummary should render correctly 1`] = ` "alignItems": "center", "alignSelf": "flex-start", "backgroundColor": "transparent", - "borderColor": "#d73847", + "borderColor": "#ca3542", "borderRadius": 24, "borderWidth": 1, "flex": 1, @@ -614,7 +614,7 @@ exports[`PermissionsSummary should render correctly 1`] = ` testID="disconnect_all" > <SvgMock - color="#d73847" + color="#ca3542" height={16} name="Logout" style={ @@ -630,12 +630,12 @@ exports[`PermissionsSummary should render correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#d73847", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, + "color": "#ca3542", + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -668,7 +668,7 @@ exports[`PermissionsSummary should render correctly 1`] = ` }, { "backgroundColor": "#ffffff", - "borderColor": "#6a737d", + "borderColor": "#686e7d", "borderWidth": 1, }, [ @@ -697,13 +697,13 @@ exports[`PermissionsSummary should render correctly 1`] = ` null, [ { - "fontFamily": "EuclidCircularB-Bold", + "fontFamily": "CentraNo1-Bold", "fontSize": 14, "fontWeight": "600", "textAlign": "center", }, { - "color": "#6a737d", + "color": "#686e7d", }, undefined, ], @@ -729,7 +729,7 @@ exports[`PermissionsSummary should render correctly 1`] = ` "padding": 15, }, { - "backgroundColor": "#0376c9", + "backgroundColor": "#4459ff", "minHeight": 50, }, [ @@ -758,7 +758,7 @@ exports[`PermissionsSummary should render correctly 1`] = ` null, [ { - "fontFamily": "EuclidCircularB-Bold", + "fontFamily": "CentraNo1-Bold", "fontSize": 14, "fontWeight": "600", "textAlign": "center", @@ -864,8 +864,8 @@ exports[`PermissionsSummary should render correctly for network switch 1`] = ` style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 24, "fontWeight": "400", "textAlign": "center", @@ -906,8 +906,8 @@ exports[`PermissionsSummary should render correctly for network switch 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", + "color": "#121314", + "fontFamily": "CentraNo1-Bold", "fontSize": 16, "fontWeight": "700", "letterSpacing": 0, @@ -938,7 +938,7 @@ exports[`PermissionsSummary should render correctly for network switch 1`] = ` { "alignItems": "center", "alignSelf": "flex-start", - "backgroundColor": "#0000001A", + "backgroundColor": "#0000001a", "borderRadius": 16, "height": 32, "justifyContent": "center", @@ -948,7 +948,7 @@ exports[`PermissionsSummary should render correctly for network switch 1`] = ` } > <SvgMock - color="#6a737d" + color="#686e7d" height={20} name="Data" style={ @@ -972,12 +972,12 @@ exports[`PermissionsSummary should render correctly for network switch 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -1005,12 +1005,12 @@ exports[`PermissionsSummary should render correctly for network switch 1`] = ` numberOfLines={1} style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -1018,12 +1018,12 @@ exports[`PermissionsSummary should render correctly for network switch 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -1033,12 +1033,12 @@ exports[`PermissionsSummary should render correctly for network switch 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Medium", + "fontSize": 14, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -1105,7 +1105,7 @@ exports[`PermissionsSummary should render correctly for network switch 1`] = ` "alignItems": "center", "alignSelf": "flex-start", "backgroundColor": "transparent", - "borderColor": "#d73847", + "borderColor": "#ca3542", "borderRadius": 24, "borderWidth": 1, "flex": 1, @@ -1118,7 +1118,7 @@ exports[`PermissionsSummary should render correctly for network switch 1`] = ` testID="disconnect_all" > <SvgMock - color="#d73847" + color="#ca3542" height={16} name="Logout" style={ @@ -1134,12 +1134,12 @@ exports[`PermissionsSummary should render correctly for network switch 1`] = ` accessibilityRole="text" style={ { - "color": "#d73847", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, + "color": "#ca3542", + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -1172,7 +1172,7 @@ exports[`PermissionsSummary should render correctly for network switch 1`] = ` }, { "backgroundColor": "#ffffff", - "borderColor": "#6a737d", + "borderColor": "#686e7d", "borderWidth": 1, }, [ @@ -1201,13 +1201,13 @@ exports[`PermissionsSummary should render correctly for network switch 1`] = ` null, [ { - "fontFamily": "EuclidCircularB-Bold", + "fontFamily": "CentraNo1-Bold", "fontSize": 14, "fontWeight": "600", "textAlign": "center", }, { - "color": "#6a737d", + "color": "#686e7d", }, undefined, ], @@ -1233,7 +1233,7 @@ exports[`PermissionsSummary should render correctly for network switch 1`] = ` "padding": 15, }, { - "backgroundColor": "#0376c9", + "backgroundColor": "#4459ff", "minHeight": 50, }, [ @@ -1262,7 +1262,7 @@ exports[`PermissionsSummary should render correctly for network switch 1`] = ` null, [ { - "fontFamily": "EuclidCircularB-Bold", + "fontFamily": "CentraNo1-Bold", "fontSize": 14, "fontWeight": "600", "textAlign": "center", diff --git a/app/components/UI/PhishingModal/__snapshots__/index.test.tsx.snap b/app/components/UI/PhishingModal/__snapshots__/index.test.tsx.snap index 627a4b9c47de..183e9b0180d4 100644 --- a/app/components/UI/PhishingModal/__snapshots__/index.test.tsx.snap +++ b/app/components/UI/PhishingModal/__snapshots__/index.test.tsx.snap @@ -4,279 +4,251 @@ exports[`PhishingModal should render correctly 1`] = ` <View style={ { + "backgroundColor": "#f3f5f9", + "flex": 1, "justifyContent": "center", - "paddingHorizontal": 20, + "marginTop": -100, + "padding": 20, } } > - <Image - resizeMethod="auto" - source={1} + <View style={ { - "alignSelf": "center", - "height": 48, - "marginBottom": -15, - "width": 48, - "zIndex": 99999, + "alignItems": "left", } } - /> - <View + > + <Text + allowFontScaling={false} + style={ + [ + { + "color": undefined, + "fontSize": 12, + }, + { + "color": "#ca3542", + "fontSize": 40, + "marginBottom": 20, + }, + { + "fontFamily": "FontAwesome", + "fontStyle": "normal", + "fontWeight": "normal", + }, + {}, + ] + } + > +  + </Text> + </View> + <Text style={ { - "backgroundColor": "#ffffff", - "borderRadius": 4, - "height": 495, + "color": "#121314", + "fontFamily": "CentraNo1-Bold", + "fontSize": 24, + "fontWeight": "600", + "marginBottom": 16, + "textAlign": "left", + } + } + > + This website might be harmful + </Text> + <Text + style={ + { + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, + "fontWeight": "400", + "marginBottom": 20, + } + } + > + MetaMask flagged the site you're trying to visit as potentially deceptive. Attackers may trick you into doing something dangerous. + </Text> + <Text + style={ + { + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, + "fontWeight": "400", + "marginBottom": 20, } } > - <View + You may also + + <Text style={ { - "alignItems": "center", - "backgroundColor": "#ffffff", - "flexDirection": "row", - "justifyContent": "center", - "paddingVertical": 20, + "color": "#ca3542", + "textDecorationLine": "underline", } } > - <Text - allowFontScaling={false} - style={ - [ - { - "color": undefined, - "fontSize": 15, - }, - { - "color": "#d73847", - "marginRight": 10, - }, - { - "fontFamily": "FontAwesome", - "fontStyle": "normal", - "fontWeight": "normal", - }, - {}, - ] - } - > -  - </Text> - <Text - style={ + proceed anyway + </Text> + , + but please do so at your own risk. + </Text> + <TouchableOpacity + style={ + { + "alignItems": "center", + "backgroundColor": "#ffffff", + "borderRadius": 16, + "elevation": 2, + "flexDirection": "row", + "marginVertical": 8, + "padding": 16, + "shadowColor": "#0000001a", + "shadowOffset": { + "height": 2, + "width": 0, + }, + "shadowOpacity": 0.1, + "shadowRadius": 4, + } + } + > + <Text + allowFontScaling={false} + style={ + [ + { + "color": undefined, + "fontSize": 16, + }, { - "color": "#d73847", - "fontFamily": "EuclidCircularB-Bold", - "fontWeight": "600", + "color": "#121314", "textAlign": "center", - } - } - > - Ethereum Phishing Detection - </Text> - </View> - <RCTScrollView - contentContainerStyle={ - { - "paddingBottom": 20, - } + "width": 24, + }, + { + "fontFamily": "FontAwesome", + "fontStyle": "normal", + "fontWeight": "normal", + }, + {}, + ] } + > +  + </Text> + <Text style={ { - "backgroundColor": "#f2f4f6", - "paddingHorizontal": 20, - "paddingTop": 20, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, + "fontWeight": "400", + "marginLeft": 12, } } > - <View> - <Text - style={ - { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 11, - "fontWeight": "400", - "marginBottom": 15, - } - } - > - <Text - style={ - { - "fontFamily": "EuclidCircularB-Bold", - "fontWeight": "600", - } - } - /> - is currently on the MetaMask domain warning list. This means that based on information available to us, MetaMask believes this domain could currently compromise your security and, as an added safety feature, MetaMask has restricted access to the site. To override this, please read the rest of this warning for instructions on how to continue at your own risk. - </Text> - <Text - style={ - { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 11, - "fontWeight": "400", - "marginBottom": 15, - } - } - > - There are many reasons sites can appear on our warning list, and our warning list compiles from other widely used industry lists. Such reasons can include known fraud or security risks, such as domains that test positive on the - <Text - style={ - { - "textDecorationColor": "#141618", - "textDecorationLine": "underline", - } - } - > - Ethereum Phishing Detector - </Text> - . - Domains on these warning lists may include outright malicious websites and legitimate websites that have been compromised by a malicious actor. - </Text> - <Text - style={ - { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 11, - "fontWeight": "400", - "marginBottom": 15, - } - } - > - To read more about this site - <Text - style={ - { - "textDecorationColor": "#141618", - "textDecorationLine": "underline", - } - } - > - please review the domain on Etherscam. - </Text> - </Text> - <Text - style={ - { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 11, - "fontWeight": "400", - "marginBottom": 15, - } - } - > - Note that this warning list is compiled on a voluntary basis. This list may be inaccurate or incomplete. Just because a domain does not appear on this list is not an implicit guarantee of that domain's safety. As always, your transactions are your own responsibility. If you wish to interact with any domain on our warning list, you can do so by - <Text - style={ - { - "textDecorationColor": "#141618", - "textDecorationLine": "underline", - } - } - > - continuing at your own risk. - </Text> - </Text> - <Text - style={ - { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 11, - "fontWeight": "400", - "marginBottom": 15, - } - } - > - There are many reasons sites can appear on our warning list, and our warning list compiles from other widely used industry lists. Such reasons can include known fraud or security risks, such as domains that test positive on the - <Text - style={ - { - "textDecorationColor": "#141618", - "textDecorationLine": "underline", - } - } - > - please file an issue. - </Text> - </Text> - </View> - </RCTScrollView> - </View> - <View + Report a detection problem + </Text> + </TouchableOpacity> + <TouchableOpacity + onPress={[Function]} style={ { - "alignItems": "flex-end", - "marginTop": 10, + "alignItems": "center", + "backgroundColor": "#ffffff", + "borderRadius": 16, + "elevation": 2, + "flexDirection": "row", + "marginVertical": 8, + "padding": 16, + "shadowColor": "#0000001a", + "shadowOffset": { + "height": 2, + "width": 0, + }, + "shadowOpacity": 0.1, + "shadowRadius": 4, } } > - <TouchableOpacity - accessibilityRole="button" - accessible={true} - activeOpacity={0.2} + <Text + allowFontScaling={false} style={ [ - [ - { - "borderRadius": 100, - "justifyContent": "center", - "padding": 15, - }, - { - "backgroundColor": "#ffffff", - "borderColor": "#6a737d", - "borderWidth": 1, - }, - { - "borderWidth": 0, - "padding": 10, - }, - ], - null, + { + "color": undefined, + "fontSize": 16, + }, + { + "color": "#121314", + "textAlign": "center", + "width": 24, + }, + { + "fontFamily": "FontAwesome", + "fontStyle": "normal", + "fontWeight": "normal", + }, + {}, ] } > - <Text - style={ - [ - { - "color": "#007aff", - "fontSize": 17, - "fontWeight": "500", - "textAlign": "center", - }, - null, - [ - { - "fontFamily": "EuclidCircularB-Bold", - "fontSize": 14, - "fontWeight": "600", - "textAlign": "center", - }, - { - "color": "#6a737d", - }, - { - "color": "#d73847", - "fontSize": 12, - }, - ], - null, - ] +  + </Text> + <Text + style={ + { + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, + "fontWeight": "400", + "marginLeft": 12, } - > - Back to safety - </Text> - </TouchableOpacity> - </View> + } + > + If you found this helpful, share on X! + </Text> + </TouchableOpacity> + <TouchableOpacity + accessibilityRole="button" + accessible={true} + activeOpacity={1} + onPressIn={[Function]} + onPressOut={[Function]} + style={ + { + "alignItems": "center", + "alignSelf": "stretch", + "backgroundColor": "#4459ff", + "borderRadius": 20, + "flexDirection": "row", + "height": 48, + "justifyContent": "center", + "marginTop": 32, + "paddingHorizontal": 16, + } + } + > + <Text + accessibilityRole="text" + style={ + { + "color": "#ffffff", + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, + "fontWeight": "500", + "letterSpacing": 0, + "lineHeight": 24, + } + } + > + Back to safety + </Text> + </TouchableOpacity> </View> `; diff --git a/app/components/UI/PhishingModal/index.js b/app/components/UI/PhishingModal/index.js index 7d951cf323fa..4de63b427eef 100644 --- a/app/components/UI/PhishingModal/index.js +++ b/app/components/UI/PhishingModal/index.js @@ -1,111 +1,109 @@ import React, { PureComponent } from 'react'; import { - ScrollView, View, Text, - Image, StyleSheet, Platform, + Linking, + TouchableOpacity, } from 'react-native'; import PropTypes from 'prop-types'; import Icon from 'react-native-vector-icons/FontAwesome'; -import StyledButton from '../../UI/StyledButton'; import { fontStyles } from '../../../styles/common'; import { strings } from '../../../../locales/i18n'; import URL from 'url-parse'; import { ThemeContext, mockTheme } from '../../../util/theme'; import generateTestId from '../../../../wdio/utils/generateTestId'; import { ETHEREUM_DETECTION_TITLE } from '../../../../wdio/screen-objects/testIDs/BrowserScreen/ExternalWebsites.testIds'; +import Button from '../../../component-library/components/Buttons/Button/Button'; +import { ButtonVariants, ButtonWidthTypes } from '../../../component-library/components/Buttons/Button/Button.types'; const createStyles = (colors) => StyleSheet.create({ warningIcon: { color: colors.error.default, - marginRight: 10, + fontSize: 40, + marginBottom: 20, }, phishingModalWrapper: { - paddingHorizontal: 20, + flex: 1, + padding: 20, justifyContent: 'center', - }, - phishingModalContent: { - height: 495, - borderRadius: 4, - backgroundColor: colors.background.default, + marginTop: -100, + backgroundColor: colors.background.alternative, }, phishingModalTitle: { ...fontStyles.bold, - color: colors.error.default, - textAlign: 'center', - }, - phishingModalHeader: { - backgroundColor: colors.background.default, - paddingVertical: 20, - flexDirection: 'row', - alignItems: 'center', - justifyContent: 'center', - }, - phishingModalInfo: { - backgroundColor: colors.background.alternative, - paddingTop: 20, - paddingHorizontal: 20, - }, - phishingModalInfoContent: { - paddingBottom: 20, + color: colors.text.default, + fontSize: 24, + textAlign: 'left', + marginBottom: 16, }, phishingText: { ...fontStyles.normal, - fontSize: 11, + fontSize: 14, color: colors.text.default, - marginBottom: 15, + marginBottom: 20, }, link: { - textDecorationColor: colors.text.default, + color: colors.error.default, textDecorationLine: 'underline', }, - bold: { - ...fontStyles.bold, + buttonContainer: { + marginVertical: 8, + borderRadius: 16, + backgroundColor: colors.background.default, + padding: 16, + flexDirection: 'row', + alignItems: 'center', + shadowColor: colors.shadow.default, + shadowOffset: { width: 0, height: 2 }, + shadowOpacity: 0.1, + shadowRadius: 4, + elevation: 2, + }, + buttonText: { + ...fontStyles.normal, + fontSize: 14, + color: colors.text.default, + marginLeft: 12, }, - phishingFooter: { - marginTop: 10, - alignItems: 'flex-end', + buttonIcon: { + color: colors.text.default, + width: 24, + textAlign: 'center', }, - backToSafetyContainer: { - borderWidth: 0, - padding: 10, + backToSafetyButton: { + backgroundColor: colors.primary.default, + borderRadius: 30, + padding: 16, + alignItems: 'center', + marginTop: 32, }, backToSafetyText: { - color: colors.error.default, - fontSize: 12, + ...fontStyles.normal, + fontSize: 16, + color: colors.primary.default, + }, + warningContainer: { + alignItems: 'left', }, - foxImage: { - alignSelf: 'center', - width: 48, + buttonWrapper: { + marginTop: 32, height: 48, - marginBottom: -15, - zIndex: 99999, }, }); -const foxImage = require('../../../images/branding/fox.png'); // eslint-disable-line import/no-commonjs - export default class PhishingModal extends PureComponent { static propTypes = { /** * name of the blacklisted url */ fullUrl: PropTypes.string, - /** - * called when tapping on "Ethereum Phishing Detector" - */ - goToETHPhishingDetector: PropTypes.func, /** * Called to the user decides to proceed to the phishing site */ continueToPhishingSite: PropTypes.func, - /** - * Called when the user decides to go to etherscam db website - */ - goToEtherscam: PropTypes.func, /** * Called to the user decides to report an issue */ @@ -114,6 +112,19 @@ export default class PhishingModal extends PureComponent { * Called when the user takes the recommended action */ goBackToSafety: PropTypes.func, + /** + * Called to the user decides to share on Twitter + */ + }; + + shareToTwitter = () => { + const tweetText = 'MetaMask just protected me from a phishing attack! Remember to always stay vigilant when clicking on links. Learn more at https://metamask.io'; + const twitterUrl = `https://twitter.com/intent/tweet?text=${encodeURIComponent(tweetText)}`; + Linking.canOpenURL(twitterUrl).then(supported => { + if (supported) { + Linking.openURL(twitterUrl); + } + }); }; render() { @@ -124,75 +135,42 @@ export default class PhishingModal extends PureComponent { return ( <View style={styles.phishingModalWrapper}> - <Image - source={foxImage} - style={styles.foxImage} - resizeMethod={'auto'} - /> - <View style={styles.phishingModalContent}> - <View style={styles.phishingModalHeader}> - <Icon name="warning" size={15} style={styles.warningIcon} /> - <Text - style={styles.phishingModalTitle} - {...generateTestId(Platform, ETHEREUM_DETECTION_TITLE)} - > - {strings('phishing.ethereum_phishing_detection')} - </Text> - </View> - <ScrollView - style={styles.phishingModalInfo} - contentContainerStyle={styles.phishingModalInfoContent} - > - <Text style={styles.phishingText}> - <Text style={styles.bold}>{host}</Text> - {strings('phishing.intro')} - </Text> - <Text style={styles.phishingText}> - {strings('phishing.reasons')} - <Text - style={styles.link} - onPress={this.props.goToETHPhishingDetector} - > - {strings('phishing.ethereum_phishing_detector')} - </Text> - . {strings('phishing.list_content')} - </Text> - <Text style={styles.phishingText}> - {strings('phishing.to_read_more')} - <Text style={styles.link} onPress={this.props.goToEtherscam}> - {strings('phishing.review_on_etherscam')} - </Text> - </Text> - <Text style={styles.phishingText}> - {strings('phishing.warning')} - <Text - style={styles.link} - onPress={this.props.continueToPhishingSite} - > - {strings('phishing.continue_on_your_own')} - </Text> - </Text> - <Text style={styles.phishingText}> - {strings('phishing.reasons')} - <Text - style={styles.link} - onPress={this.props.goToFilePhishingIssue} - > - {strings('phishing.file_an_issue')} - </Text> - </Text> - </ScrollView> - </View> - <View style={styles.phishingFooter}> - <StyledButton - type={'neutral'} - onPress={this.props.goBackToSafety} - style={styles.backToSafetyText} - containerStyle={styles.backToSafetyContainer} - > - {strings('phishing.back_to_safety')} - </StyledButton> + <View style={styles.warningContainer}> + <Icon name="warning" style={styles.warningIcon} /> </View> + <Text + style={styles.phishingModalTitle} + {...generateTestId(Platform, ETHEREUM_DETECTION_TITLE)} + > + {strings('phishing.site_might_be_harmful')} + </Text> + <Text style={styles.phishingText}> + {strings('phishing.metamask_flagged_site')} + </Text> + <Text style={styles.phishingText}> + {strings('phishing.you_may_proceed_anyway')} <Text style={styles.link} onPress={this.props.continueToPhishingSite}>{strings('phishing.proceed_anyway')}</Text>, {strings('phishing.but_please_do_so_at_your_own_risk')} + </Text> + <TouchableOpacity + style={styles.buttonContainer} + onPress={this.props.goToFilePhishingIssue} + > + <Icon name="flag" size={16} style={styles.buttonIcon} /> + <Text style={styles.buttonText}>{strings('phishing.report_detection_problem')}</Text> + </TouchableOpacity> + <TouchableOpacity + style={styles.buttonContainer} + onPress={this.shareToTwitter} + > + <Icon name="twitter" size={16} style={styles.buttonIcon} /> + <Text style={styles.buttonText}>{strings('phishing.share_on_twitter')}</Text> + </TouchableOpacity> + <Button + variant={ButtonVariants.Primary} + label={strings('phishing.back_to_safety')} + onPress={this.props.goBackToSafety} + style={styles.buttonWrapper} + width={ButtonWidthTypes.Full} + /> </View> ); } diff --git a/app/components/UI/PhishingModal/index.test.tsx b/app/components/UI/PhishingModal/index.test.tsx index 1ddf1322cc30..a1bb1cf6bfd3 100644 --- a/app/components/UI/PhishingModal/index.test.tsx +++ b/app/components/UI/PhishingModal/index.test.tsx @@ -1,10 +1,45 @@ import React from 'react'; import PhishingModal from './'; import renderWithProvider from '../../../util/test/renderWithProvider'; +import { fireEvent } from '@testing-library/react-native'; + +// Mock Linking API +const mockCanOpenURL = jest.fn(() => Promise.resolve(true)); +const mockOpenURL = jest.fn(() => Promise.resolve()); +const mockAddEventListener = jest.fn(); +const mockRemoveEventListener = jest.fn(); + +jest.mock('react-native/Libraries/Linking/Linking', () => ({ + openURL: mockOpenURL, + canOpenURL: mockCanOpenURL, + addEventListener: mockAddEventListener, + removeEventListener: mockRemoveEventListener, +})); describe('PhishingModal', () => { it('should render correctly', () => { const { toJSON } = renderWithProvider(<PhishingModal />); expect(toJSON()).toMatchSnapshot(); }); + + it('should open Twitter with correct sharing text when share button is pressed', async () => { + const { getByText } = renderWithProvider(<PhishingModal fullUrl="https://malicious-site.com" />); + + // Find and press the share button + const shareButton = getByText('If you found this helpful, share on X!'); + fireEvent.press(shareButton); + + // Verify Linking.canOpenURL was called + expect(mockCanOpenURL).toHaveBeenCalled(); + + // Check the URL that was passed to canOpenURL + expect(mockCanOpenURL).toHaveBeenCalledWith(expect.stringContaining('twitter.com/intent/tweet')); + expect(mockCanOpenURL).toHaveBeenCalledWith(expect.stringContaining('MetaMask%20just%20protected%20me%20from%20a%20phishing%20attack!')); + + // Verify Linking.openURL was called with the expected URL pattern + await Promise.resolve(); // Wait for the canOpenURL promise to resolve + expect(mockOpenURL).toHaveBeenCalledWith(expect.stringContaining('twitter.com/intent/tweet')); + }); }); + + diff --git a/app/components/UI/ProfileSyncing/ProfileSyncingModal/__snapshots__/ProfileSyncingModal.test.tsx.snap b/app/components/UI/ProfileSyncing/ProfileSyncingModal/__snapshots__/ProfileSyncingModal.test.tsx.snap index e98efc084f3e..2a9dc1e3d7d0 100644 --- a/app/components/UI/ProfileSyncing/ProfileSyncingModal/__snapshots__/ProfileSyncingModal.test.tsx.snap +++ b/app/components/UI/ProfileSyncing/ProfileSyncingModal/__snapshots__/ProfileSyncingModal.test.tsx.snap @@ -23,7 +23,7 @@ exports[`ProfileSyncingModal should render correctly 1`] = ` style={ [ { - "backgroundColor": "#00000099", + "backgroundColor": "#00000066", "bottom": 0, "left": 0, "position": "absolute", @@ -70,14 +70,14 @@ exports[`ProfileSyncingModal should render correctly 1`] = ` [ { "backgroundColor": "#ffffff", - "borderColor": "#BBC0C566", + "borderColor": "#b7bbc866", "borderTopLeftRadius": 8, "borderTopRightRadius": 8, "borderWidth": 1, "maxHeight": 1334, "overflow": "hidden", "paddingBottom": 0, - "shadowColor": "#0000001A", + "shadowColor": "#0000001a", "shadowOffset": { "height": 2, "width": 0, @@ -107,7 +107,7 @@ exports[`ProfileSyncingModal should render correctly 1`] = ` <View style={ { - "backgroundColor": "#BBC0C566", + "backgroundColor": "#b7bbc866", "borderRadius": 2, "height": 4, "width": 40, @@ -125,7 +125,7 @@ exports[`ProfileSyncingModal should render correctly 1`] = ` } > <SvgMock - color="#d73847" + color="#ca3542" height={32} name="Danger" style={ @@ -142,8 +142,8 @@ exports[`ProfileSyncingModal should render correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", + "color": "#121314", + "fontFamily": "CentraNo1-Bold", "fontSize": 18, "fontWeight": "700", "letterSpacing": 0, @@ -159,12 +159,12 @@ exports[`ProfileSyncingModal should render correctly 1`] = ` style={ { "alignSelf": "flex-start", - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, "paddingBottom": 10, "paddingTop": 16, } @@ -197,7 +197,7 @@ exports[`ProfileSyncingModal should render correctly 1`] = ` { "alignItems": "center", "backgroundColor": "#ffffff", - "borderColor": "#141618", + "borderColor": "#121314", "borderRadius": 4, "borderWidth": 2, "height": 20, @@ -217,12 +217,12 @@ exports[`ProfileSyncingModal should render correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -250,7 +250,7 @@ exports[`ProfileSyncingModal should render correctly 1`] = ` "alignItems": "center", "alignSelf": "flex-start", "backgroundColor": "transparent", - "borderColor": "#0376c9", + "borderColor": "#4459ff", "borderRadius": 24, "borderWidth": 1, "flex": 1, @@ -265,12 +265,12 @@ exports[`ProfileSyncingModal should render correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, + "color": "#4459ff", + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -296,7 +296,7 @@ exports[`ProfileSyncingModal should render correctly 1`] = ` { "alignItems": "center", "alignSelf": "flex-start", - "backgroundColor": "#d73847", + "backgroundColor": "#ca3542", "borderRadius": 24, "flex": 1, "flexDirection": "row", @@ -312,11 +312,11 @@ exports[`ProfileSyncingModal should render correctly 1`] = ` style={ { "color": "#ffffff", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > diff --git a/app/components/UI/ProfileSyncing/__snapshots__/ProfileSyncing.test.tsx.snap b/app/components/UI/ProfileSyncing/__snapshots__/ProfileSyncing.test.tsx.snap index 44d5abb4c1f0..63eb93042217 100644 --- a/app/components/UI/ProfileSyncing/__snapshots__/ProfileSyncing.test.tsx.snap +++ b/app/components/UI/ProfileSyncing/__snapshots__/ProfileSyncing.test.tsx.snap @@ -22,8 +22,8 @@ exports[`ProfileSyncing renders correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", + "color": "#121314", + "fontFamily": "CentraNo1-Bold", "fontSize": 16, "fontWeight": "700", "letterSpacing": 0, @@ -39,7 +39,7 @@ exports[`ProfileSyncing renders correctly 1`] = ` onChange={[Function]} onResponderTerminationRequest={[Function]} onStartShouldSetResponder={[Function]} - onTintColor="#0376c9" + onTintColor="#4459ff" style={ [ { @@ -47,13 +47,13 @@ exports[`ProfileSyncing renders correctly 1`] = ` "width": 51, }, { - "backgroundColor": "#BBC0C566", + "backgroundColor": "#b7bbc866", "borderRadius": 16, }, ] } thumbTintColor="#ffffff" - tintColor="#BBC0C566" + tintColor="#b7bbc866" value={true} /> </View> @@ -61,12 +61,12 @@ exports[`ProfileSyncing renders correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -76,12 +76,12 @@ exports[`ProfileSyncing renders correctly 1`] = ` onPress={[Function]} style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#4459ff", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > diff --git a/app/components/UI/Ramp/Views/BuildQuote/BuildQuote.tsx b/app/components/UI/Ramp/Views/BuildQuote/BuildQuote.tsx index e96bd4d31579..e1e44e575b10 100644 --- a/app/components/UI/Ramp/Views/BuildQuote/BuildQuote.tsx +++ b/app/components/UI/Ramp/Views/BuildQuote/BuildQuote.tsx @@ -11,6 +11,7 @@ import Animated, { useSharedValue, withTiming, } from 'react-native-reanimated'; +import { useSelector } from 'react-redux'; import { useNavigation } from '@react-navigation/native'; import BN4 from 'bnjs4'; @@ -40,7 +41,6 @@ import Keypad from '../../components/Keypad'; import QuickAmounts from '../../components/QuickAmounts'; import AccountSelector from '../../components/AccountSelector'; import TokenIcon from '../../../Swaps/components/TokenIcon'; -import CustomActionButton from '../../containers/CustomActionButton'; import TokenSelectModal from '../../components/TokenSelectModal'; import PaymentMethodModal from '../../components/PaymentMethodModal'; import PaymentMethodIcon from '../../components/PaymentMethodIcon'; @@ -62,6 +62,7 @@ import { formatAmount } from '../../utils'; import { createQuotesNavDetails } from '../Quotes/Quotes'; import { QuickAmount, Region, ScreenLocation } from '../../types'; import { useStyles } from '../../../../../component-library/hooks'; +import { selectTicker } from '../../../../../selectors/networkController'; import styleSheet from './BuildQuote.styles'; import { @@ -70,6 +71,7 @@ import { } from '../../../../../util/number'; import useGasPriceEstimation from '../../hooks/useGasPriceEstimation'; import useIntentAmount from '../../hooks/useIntentAmount'; +import useERC20GasLimitEstimation from '../../hooks/useERC20GasLimitEstimation'; import ListItem from '../../../../../component-library/components/List/ListItem'; import ListItemColumn, { @@ -80,7 +82,6 @@ import Text, { TextVariant, } from '../../../../../component-library/components/Texts/Text'; import ListItemColumnEnd from '../../components/ListItemColumnEnd'; -import useERC20GasLimitEstimation from '../../hooks/useERC20GasLimitEstimation'; import { BuildQuoteSelectors } from '../../../../../../e2e/selectors/Ramps/BuildQuote.selectors'; // TODO: Replace "any" with type @@ -130,6 +131,8 @@ const BuildQuote = () => { const [isRegionModalVisible, toggleRegionModal, , hideRegionModal] = useModalHandler(false); + const nativeSymbol = useSelector(selectTicker); + /** * Grab the current state of the SDK via the context. */ @@ -244,6 +247,7 @@ const BuildQuote = () => { const { addressBalance } = useAddressBalance( assetForBalance as Asset, selectedAddress, + true, ); const { balanceFiat, balanceBN, balance } = useBalance( @@ -257,10 +261,28 @@ const BuildQuote = () => { : undefined, ); - const maxSellAmount = - balanceBN && gasPriceEstimation - ? balanceBN?.sub(gasPriceEstimation.estimatedGasFee) - : null; + const { balanceBN: nativeTokenBalanceBN } = useBalance( + isBuy || !selectedAsset || selectedAsset.address === NATIVE_ADDRESS + ? undefined + : { + address: NATIVE_ADDRESS, + decimals: 18, + }, + ); + + let maxSellAmount = null; + if (selectedAsset && selectedAsset.address === NATIVE_ADDRESS) { + maxSellAmount = + balanceBN && gasPriceEstimation + ? balanceBN?.sub(gasPriceEstimation.estimatedGasFee) + : null; + } else if ( + selectedAsset && + selectedAsset.address !== NATIVE_ADDRESS && + balanceBN + ) { + maxSellAmount = balanceBN; + } const amountIsBelowMinimum = useMemo( () => isAmountBelowMinimum(amountNumber), @@ -291,6 +313,18 @@ const BuildQuote = () => { return balanceBN.lt(amountBNMinimalUnit); }, [balanceBN, amountBNMinimalUnit]); + const hasInsufficientNativeBalanceForGas = useMemo(() => { + if (isBuy || (selectedAsset && selectedAsset.address === NATIVE_ADDRESS)) { + return false; + } + + if (!nativeTokenBalanceBN || !gasPriceEstimation) { + return false; + } + + return nativeTokenBalanceBN.lt(gasPriceEstimation.estimatedGasFee); + }, [gasPriceEstimation, isBuy, nativeTokenBalanceBN, selectedAsset]); + const isFetching = isFetchingCryptoCurrencies || isFetchingPaymentMethods || @@ -443,7 +477,7 @@ const BuildQuote = () => { */ const newRegionCurrency = await queryDefaultFiatCurrency( region.id, - selectedPaymentMethodId, + selectedPaymentMethodId ? [selectedPaymentMethodId] : null, ); setSelectedFiatCurrencyId(newRegionCurrency?.id); } @@ -752,7 +786,11 @@ const BuildQuote = () => { value: quickAmount, label: currentFiatCurrency?.denomSymbol + quickAmount.toString(), })) ?? []; - } else if (balanceBN && !balanceBN.isZero() && maxSellAmount?.gt(new BN4(0))) { + } else if ( + balanceBN && + !balanceBN.isZero() && + maxSellAmount?.gt(new BN4(0)) + ) { quickAmounts = [ { value: 0.25, label: '25%' }, { value: 0.5, label: '50%' }, @@ -865,6 +903,16 @@ const BuildQuote = () => { </Text> </Row> )} + {!hasInsufficientBalance && hasInsufficientNativeBalanceForGas && ( + <Row> + <Text variant={TextVariant.BodySM} color={TextColor.Error}> + {strings( + 'fiat_on_ramp_aggregator.insufficient_native_balance', + { currency: nativeSymbol }, + )} + </Text> + </Row> + )} {!hasInsufficientBalance && amountIsBelowMinimum && limits && ( <Row> <Text @@ -929,24 +977,15 @@ const BuildQuote = () => { <ScreenLayout.Footer> <ScreenLayout.Content> <Row style={styles.cta}> - {currentPaymentMethod?.customAction ? ( - <CustomActionButton - customAction={currentPaymentMethod.customAction} - amount={amountNumber} - disabled={!amountIsValid || amountNumber <= 0} - fiatSymbol={currentFiatCurrency?.symbol} - /> - ) : ( - <StyledButton - type="confirm" - onPress={handleGetQuotePress} - accessibilityRole="button" - accessible - disabled={amountNumber <= 0} - > - {strings('fiat_on_ramp_aggregator.get_quotes')} - </StyledButton> - )} + <StyledButton + type="confirm" + onPress={handleGetQuotePress} + accessibilityRole="button" + accessible + disabled={amountNumber <= 0} + > + {strings('fiat_on_ramp_aggregator.get_quotes')} + </StyledButton> </Row> </ScreenLayout.Content> </ScreenLayout.Footer> diff --git a/app/components/UI/Ramp/Views/BuildQuote/__snapshots__/BuildQuote.test.tsx.snap b/app/components/UI/Ramp/Views/BuildQuote/__snapshots__/BuildQuote.test.tsx.snap index 2c6285bf3c81..eb4038d50a99 100644 --- a/app/components/UI/Ramp/Views/BuildQuote/__snapshots__/BuildQuote.test.tsx.snap +++ b/app/components/UI/Ramp/Views/BuildQuote/__snapshots__/BuildQuote.test.tsx.snap @@ -130,8 +130,8 @@ exports[`BuildQuote View Crypto Currency Data renders a special error page if cr <Text style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Regular", + "color": "#4459ff", + "fontFamily": "CentraNo1-Book", "fontSize": 23.57142857142857, "fontWeight": "400", } @@ -166,12 +166,12 @@ exports[`BuildQuote View Crypto Currency Data renders a special error page if cr numberOfLines={1} style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Bold", + "fontSize": 16, "fontWeight": "700", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -190,12 +190,12 @@ exports[`BuildQuote View Crypto Currency Data renders a special error page if cr numberOfLines={1} style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -233,8 +233,8 @@ exports[`BuildQuote View Crypto Currency Data renders a special error page if cr <Text style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Regular", + "color": "#4459ff", + "fontFamily": "CentraNo1-Book", "fontSize": 23.57142857142857, "fontWeight": "400", } @@ -488,7 +488,7 @@ exports[`BuildQuote View Crypto Currency Data renders a special error page if cr "textAlign": "center", }, { - "color": "#0376c9", + "color": "#4459ff", }, ], { @@ -514,12 +514,12 @@ exports[`BuildQuote View Crypto Currency Data renders a special error page if cr accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", + "color": "#121314", + "fontFamily": "CentraNo1-Bold", "fontSize": 18, "fontWeight": "600", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, "marginVertical": 3, "textAlign": "center", } @@ -539,8 +539,8 @@ exports[`BuildQuote View Crypto Currency Data renders a special error page if cr style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -554,7 +554,7 @@ exports[`BuildQuote View Crypto Currency Data renders a special error page if cr undefined, undefined, { - "color": "#6a737d", + "color": "#686e7d", }, undefined, undefined, @@ -600,7 +600,7 @@ exports[`BuildQuote View Crypto Currency Data renders a special error page if cr "padding": 15, }, { - "backgroundColor": "#0376c9", + "backgroundColor": "#4459ff", "minHeight": 50, }, undefined, @@ -621,7 +621,7 @@ exports[`BuildQuote View Crypto Currency Data renders a special error page if cr null, [ { - "fontFamily": "EuclidCircularB-Bold", + "fontFamily": "CentraNo1-Bold", "fontSize": 14, "fontWeight": "600", "textAlign": "center", @@ -815,8 +815,8 @@ exports[`BuildQuote View Crypto Currency Data renders a special error page if cr <Text style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Regular", + "color": "#4459ff", + "fontFamily": "CentraNo1-Book", "fontSize": 23.57142857142857, "fontWeight": "400", } @@ -851,12 +851,12 @@ exports[`BuildQuote View Crypto Currency Data renders a special error page if cr numberOfLines={1} style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Bold", + "fontSize": 16, "fontWeight": "700", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -875,12 +875,12 @@ exports[`BuildQuote View Crypto Currency Data renders a special error page if cr numberOfLines={1} style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -918,8 +918,8 @@ exports[`BuildQuote View Crypto Currency Data renders a special error page if cr <Text style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Regular", + "color": "#4459ff", + "fontFamily": "CentraNo1-Book", "fontSize": 23.57142857142857, "fontWeight": "400", } @@ -1173,7 +1173,7 @@ exports[`BuildQuote View Crypto Currency Data renders a special error page if cr "textAlign": "center", }, { - "color": "#0376c9", + "color": "#4459ff", }, ], { @@ -1199,12 +1199,12 @@ exports[`BuildQuote View Crypto Currency Data renders a special error page if cr accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", + "color": "#121314", + "fontFamily": "CentraNo1-Bold", "fontSize": 18, "fontWeight": "600", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, "marginVertical": 3, "textAlign": "center", } @@ -1224,8 +1224,8 @@ exports[`BuildQuote View Crypto Currency Data renders a special error page if cr style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -1239,7 +1239,7 @@ exports[`BuildQuote View Crypto Currency Data renders a special error page if cr undefined, undefined, { - "color": "#6a737d", + "color": "#686e7d", }, undefined, undefined, @@ -1285,7 +1285,7 @@ exports[`BuildQuote View Crypto Currency Data renders a special error page if cr "padding": 15, }, { - "backgroundColor": "#0376c9", + "backgroundColor": "#4459ff", "minHeight": 50, }, undefined, @@ -1306,7 +1306,7 @@ exports[`BuildQuote View Crypto Currency Data renders a special error page if cr null, [ { - "fontFamily": "EuclidCircularB-Bold", + "fontFamily": "CentraNo1-Bold", "fontSize": 14, "fontWeight": "600", "textAlign": "center", @@ -1500,8 +1500,8 @@ exports[`BuildQuote View Crypto Currency Data renders an error page when there i <Text style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Regular", + "color": "#4459ff", + "fontFamily": "CentraNo1-Book", "fontSize": 23.57142857142857, "fontWeight": "400", } @@ -1536,12 +1536,12 @@ exports[`BuildQuote View Crypto Currency Data renders an error page when there i numberOfLines={1} style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Bold", + "fontSize": 16, "fontWeight": "700", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -1560,12 +1560,12 @@ exports[`BuildQuote View Crypto Currency Data renders an error page when there i numberOfLines={1} style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -1603,8 +1603,8 @@ exports[`BuildQuote View Crypto Currency Data renders an error page when there i <Text style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Regular", + "color": "#4459ff", + "fontFamily": "CentraNo1-Book", "fontSize": 23.57142857142857, "fontWeight": "400", } @@ -1858,7 +1858,7 @@ exports[`BuildQuote View Crypto Currency Data renders an error page when there i "textAlign": "center", }, { - "color": "#d73847", + "color": "#ca3542", }, ], { @@ -1884,12 +1884,12 @@ exports[`BuildQuote View Crypto Currency Data renders an error page when there i accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", + "color": "#121314", + "fontFamily": "CentraNo1-Bold", "fontSize": 18, "fontWeight": "600", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, "marginVertical": 3, "textAlign": "center", } @@ -1909,8 +1909,8 @@ exports[`BuildQuote View Crypto Currency Data renders an error page when there i style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -1924,7 +1924,7 @@ exports[`BuildQuote View Crypto Currency Data renders an error page when there i undefined, undefined, { - "color": "#6a737d", + "color": "#686e7d", }, undefined, undefined, @@ -1970,7 +1970,7 @@ exports[`BuildQuote View Crypto Currency Data renders an error page when there i "padding": 15, }, { - "backgroundColor": "#0376c9", + "backgroundColor": "#4459ff", "minHeight": 50, }, undefined, @@ -1991,7 +1991,7 @@ exports[`BuildQuote View Crypto Currency Data renders an error page when there i null, [ { - "fontFamily": "EuclidCircularB-Bold", + "fontFamily": "CentraNo1-Bold", "fontSize": 14, "fontWeight": "600", "textAlign": "center", @@ -2156,8 +2156,8 @@ exports[`BuildQuote View Crypto Currency Data renders the loading page when cryp <Text style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Regular", + "color": "#4459ff", + "fontFamily": "CentraNo1-Book", "fontSize": 23.57142857142857, "fontWeight": "400", } @@ -2192,12 +2192,12 @@ exports[`BuildQuote View Crypto Currency Data renders the loading page when cryp numberOfLines={1} style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Bold", + "fontSize": 16, "fontWeight": "700", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -2216,12 +2216,12 @@ exports[`BuildQuote View Crypto Currency Data renders the loading page when cryp numberOfLines={1} style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -2259,8 +2259,8 @@ exports[`BuildQuote View Crypto Currency Data renders the loading page when cryp <Text style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Regular", + "color": "#4459ff", + "fontFamily": "CentraNo1-Book", "fontSize": 23.57142857142857, "fontWeight": "400", } @@ -2495,7 +2495,7 @@ exports[`BuildQuote View Crypto Currency Data renders the loading page when cryp style={ [ { - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", "borderRadius": 30, "padding": 14, }, @@ -2524,7 +2524,7 @@ exports[`BuildQuote View Crypto Currency Data renders the loading page when cryp style={ [ { - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", "borderRadius": 30, "padding": 14, }, @@ -2556,7 +2556,7 @@ exports[`BuildQuote View Crypto Currency Data renders the loading page when cryp style={ [ { - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", "borderRadius": 30, "padding": 14, }, @@ -2593,7 +2593,7 @@ exports[`BuildQuote View Crypto Currency Data renders the loading page when cryp style={ [ { - "borderColor": "#848c96", + "borderColor": "#b7bbc8", "borderRadius": 8, "borderWidth": 1.5, "padding": 16, @@ -2636,7 +2636,7 @@ exports[`BuildQuote View Crypto Currency Data renders the loading page when cryp style={ [ { - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", "borderRadius": 30, "padding": 14, }, @@ -2680,7 +2680,7 @@ exports[`BuildQuote View Crypto Currency Data renders the loading page when cryp style={ [ { - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", "borderRadius": 30, "padding": 14, }, @@ -2714,7 +2714,7 @@ exports[`BuildQuote View Crypto Currency Data renders the loading page when cryp style={ [ { - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", "borderRadius": 30, "padding": 14, }, @@ -2747,7 +2747,7 @@ exports[`BuildQuote View Crypto Currency Data renders the loading page when cryp style={ [ { - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", "borderRadius": 30, "padding": 14, }, @@ -2782,7 +2782,7 @@ exports[`BuildQuote View Crypto Currency Data renders the loading page when cryp style={ [ { - "borderColor": "#848c96", + "borderColor": "#b7bbc8", "borderRadius": 8, "borderWidth": 1.5, "padding": 16, @@ -2832,7 +2832,7 @@ exports[`BuildQuote View Crypto Currency Data renders the loading page when cryp style={ [ { - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", "borderRadius": 30, "padding": 14, }, @@ -2879,7 +2879,7 @@ exports[`BuildQuote View Crypto Currency Data renders the loading page when cryp style={ [ { - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", "borderRadius": 30, "padding": 14, }, @@ -2913,7 +2913,7 @@ exports[`BuildQuote View Crypto Currency Data renders the loading page when cryp style={ [ { - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", "borderRadius": 30, "padding": 14, }, @@ -3088,8 +3088,8 @@ exports[`BuildQuote View Fiat Currency Data renders an error page when there is <Text style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Regular", + "color": "#4459ff", + "fontFamily": "CentraNo1-Book", "fontSize": 23.57142857142857, "fontWeight": "400", } @@ -3124,12 +3124,12 @@ exports[`BuildQuote View Fiat Currency Data renders an error page when there is numberOfLines={1} style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Bold", + "fontSize": 16, "fontWeight": "700", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -3148,12 +3148,12 @@ exports[`BuildQuote View Fiat Currency Data renders an error page when there is numberOfLines={1} style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -3191,8 +3191,8 @@ exports[`BuildQuote View Fiat Currency Data renders an error page when there is <Text style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Regular", + "color": "#4459ff", + "fontFamily": "CentraNo1-Book", "fontSize": 23.57142857142857, "fontWeight": "400", } @@ -3446,7 +3446,7 @@ exports[`BuildQuote View Fiat Currency Data renders an error page when there is "textAlign": "center", }, { - "color": "#d73847", + "color": "#ca3542", }, ], { @@ -3472,12 +3472,12 @@ exports[`BuildQuote View Fiat Currency Data renders an error page when there is accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", + "color": "#121314", + "fontFamily": "CentraNo1-Bold", "fontSize": 18, "fontWeight": "600", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, "marginVertical": 3, "textAlign": "center", } @@ -3497,8 +3497,8 @@ exports[`BuildQuote View Fiat Currency Data renders an error page when there is style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -3512,7 +3512,7 @@ exports[`BuildQuote View Fiat Currency Data renders an error page when there is undefined, undefined, { - "color": "#6a737d", + "color": "#686e7d", }, undefined, undefined, @@ -3558,7 +3558,7 @@ exports[`BuildQuote View Fiat Currency Data renders an error page when there is "padding": 15, }, { - "backgroundColor": "#0376c9", + "backgroundColor": "#4459ff", "minHeight": 50, }, undefined, @@ -3579,7 +3579,7 @@ exports[`BuildQuote View Fiat Currency Data renders an error page when there is null, [ { - "fontFamily": "EuclidCircularB-Bold", + "fontFamily": "CentraNo1-Bold", "fontSize": 14, "fontWeight": "600", "textAlign": "center", @@ -3744,8 +3744,8 @@ exports[`BuildQuote View Fiat Currency Data renders the loading page when fiats <Text style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Regular", + "color": "#4459ff", + "fontFamily": "CentraNo1-Book", "fontSize": 23.57142857142857, "fontWeight": "400", } @@ -3780,12 +3780,12 @@ exports[`BuildQuote View Fiat Currency Data renders the loading page when fiats numberOfLines={1} style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Bold", + "fontSize": 16, "fontWeight": "700", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -3804,12 +3804,12 @@ exports[`BuildQuote View Fiat Currency Data renders the loading page when fiats numberOfLines={1} style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -3847,8 +3847,8 @@ exports[`BuildQuote View Fiat Currency Data renders the loading page when fiats <Text style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Regular", + "color": "#4459ff", + "fontFamily": "CentraNo1-Book", "fontSize": 23.57142857142857, "fontWeight": "400", } @@ -4083,7 +4083,7 @@ exports[`BuildQuote View Fiat Currency Data renders the loading page when fiats style={ [ { - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", "borderRadius": 30, "padding": 14, }, @@ -4112,7 +4112,7 @@ exports[`BuildQuote View Fiat Currency Data renders the loading page when fiats style={ [ { - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", "borderRadius": 30, "padding": 14, }, @@ -4144,7 +4144,7 @@ exports[`BuildQuote View Fiat Currency Data renders the loading page when fiats style={ [ { - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", "borderRadius": 30, "padding": 14, }, @@ -4181,7 +4181,7 @@ exports[`BuildQuote View Fiat Currency Data renders the loading page when fiats style={ [ { - "borderColor": "#848c96", + "borderColor": "#b7bbc8", "borderRadius": 8, "borderWidth": 1.5, "padding": 16, @@ -4224,7 +4224,7 @@ exports[`BuildQuote View Fiat Currency Data renders the loading page when fiats style={ [ { - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", "borderRadius": 30, "padding": 14, }, @@ -4268,7 +4268,7 @@ exports[`BuildQuote View Fiat Currency Data renders the loading page when fiats style={ [ { - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", "borderRadius": 30, "padding": 14, }, @@ -4302,7 +4302,7 @@ exports[`BuildQuote View Fiat Currency Data renders the loading page when fiats style={ [ { - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", "borderRadius": 30, "padding": 14, }, @@ -4335,7 +4335,7 @@ exports[`BuildQuote View Fiat Currency Data renders the loading page when fiats style={ [ { - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", "borderRadius": 30, "padding": 14, }, @@ -4370,7 +4370,7 @@ exports[`BuildQuote View Fiat Currency Data renders the loading page when fiats style={ [ { - "borderColor": "#848c96", + "borderColor": "#b7bbc8", "borderRadius": 8, "borderWidth": 1.5, "padding": 16, @@ -4420,7 +4420,7 @@ exports[`BuildQuote View Fiat Currency Data renders the loading page when fiats style={ [ { - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", "borderRadius": 30, "padding": 14, }, @@ -4467,7 +4467,7 @@ exports[`BuildQuote View Fiat Currency Data renders the loading page when fiats style={ [ { - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", "borderRadius": 30, "padding": 14, }, @@ -4501,7 +4501,7 @@ exports[`BuildQuote View Fiat Currency Data renders the loading page when fiats style={ [ { - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", "borderRadius": 30, "padding": 14, }, @@ -4676,8 +4676,8 @@ exports[`BuildQuote View Payment Method Data renders an error page when there is <Text style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Regular", + "color": "#4459ff", + "fontFamily": "CentraNo1-Book", "fontSize": 23.57142857142857, "fontWeight": "400", } @@ -4712,12 +4712,12 @@ exports[`BuildQuote View Payment Method Data renders an error page when there is numberOfLines={1} style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Bold", + "fontSize": 16, "fontWeight": "700", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -4736,12 +4736,12 @@ exports[`BuildQuote View Payment Method Data renders an error page when there is numberOfLines={1} style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -4779,8 +4779,8 @@ exports[`BuildQuote View Payment Method Data renders an error page when there is <Text style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Regular", + "color": "#4459ff", + "fontFamily": "CentraNo1-Book", "fontSize": 23.57142857142857, "fontWeight": "400", } @@ -5034,7 +5034,7 @@ exports[`BuildQuote View Payment Method Data renders an error page when there is "textAlign": "center", }, { - "color": "#d73847", + "color": "#ca3542", }, ], { @@ -5060,12 +5060,12 @@ exports[`BuildQuote View Payment Method Data renders an error page when there is accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", + "color": "#121314", + "fontFamily": "CentraNo1-Bold", "fontSize": 18, "fontWeight": "600", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, "marginVertical": 3, "textAlign": "center", } @@ -5085,8 +5085,8 @@ exports[`BuildQuote View Payment Method Data renders an error page when there is style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -5100,7 +5100,7 @@ exports[`BuildQuote View Payment Method Data renders an error page when there is undefined, undefined, { - "color": "#6a737d", + "color": "#686e7d", }, undefined, undefined, @@ -5146,7 +5146,7 @@ exports[`BuildQuote View Payment Method Data renders an error page when there is "padding": 15, }, { - "backgroundColor": "#0376c9", + "backgroundColor": "#4459ff", "minHeight": 50, }, undefined, @@ -5167,7 +5167,7 @@ exports[`BuildQuote View Payment Method Data renders an error page when there is null, [ { - "fontFamily": "EuclidCircularB-Bold", + "fontFamily": "CentraNo1-Bold", "fontSize": 14, "fontWeight": "600", "textAlign": "center", @@ -5332,8 +5332,8 @@ exports[`BuildQuote View Payment Method Data renders no icons if there are no pa <Text style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Regular", + "color": "#4459ff", + "fontFamily": "CentraNo1-Book", "fontSize": 23.57142857142857, "fontWeight": "400", } @@ -5368,12 +5368,12 @@ exports[`BuildQuote View Payment Method Data renders no icons if there are no pa numberOfLines={1} style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Bold", + "fontSize": 16, "fontWeight": "700", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -5392,12 +5392,12 @@ exports[`BuildQuote View Payment Method Data renders no icons if there are no pa numberOfLines={1} style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -5435,8 +5435,8 @@ exports[`BuildQuote View Payment Method Data renders no icons if there are no pa <Text style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Regular", + "color": "#4459ff", + "fontFamily": "CentraNo1-Book", "fontSize": 23.57142857142857, "fontWeight": "400", } @@ -5724,7 +5724,7 @@ exports[`BuildQuote View Payment Method Data renders no icons if there are no pa style={ { "alignItems": "center", - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", "borderRadius": 100, "flexDirection": "row", "justifyContent": "center", @@ -5763,13 +5763,13 @@ exports[`BuildQuote View Payment Method Data renders no icons if there are no pa numberOfLines={1} style={ { - "color": "#141618", + "color": "#121314", "flexShrink": 1, - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, "marginHorizontal": 5, "marginVertical": 3, } @@ -5788,7 +5788,7 @@ exports[`BuildQuote View Payment Method Data renders no icons if there are no pa "fontSize": 18, }, { - "color": "#6a737d", + "color": "#686e7d", "marginLeft": 10, "marginRight": 5, "textAlign": "right", @@ -5823,7 +5823,7 @@ exports[`BuildQuote View Payment Method Data renders no icons if there are no pa style={ { "alignItems": "center", - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", "borderRadius": 100, "flexDirection": "row", "justifyContent": "center", @@ -5836,12 +5836,12 @@ exports[`BuildQuote View Payment Method Data renders no icons if there are no pa accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, "marginHorizontal": 0, "marginVertical": 3, } @@ -5858,7 +5858,7 @@ exports[`BuildQuote View Payment Method Data renders no icons if there are no pa "fontSize": 18, }, { - "color": "#6a737d", + "color": "#686e7d", "marginLeft": 10, "marginRight": 5, "textAlign": "right", @@ -5881,12 +5881,12 @@ exports[`BuildQuote View Payment Method Data renders no icons if there are no pa accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, "marginVertical": 8, } } @@ -5904,7 +5904,7 @@ exports[`BuildQuote View Payment Method Data renders no icons if there are no pa style={ [ { - "borderColor": "#848c96", + "borderColor": "#b7bbc8", "borderRadius": 8, "borderWidth": 1.5, "padding": 16, @@ -6028,9 +6028,9 @@ exports[`BuildQuote View Payment Method Data renders no icons if there are no pa numberOfLines={1} style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 16, + "color": "#121314", + "fontFamily": "CentraNo1-Medium", + "fontSize": 18, "fontWeight": "500", "letterSpacing": 0, "lineHeight": 24, @@ -6062,8 +6062,8 @@ exports[`BuildQuote View Payment Method Data renders no icons if there are no pa style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -6073,14 +6073,14 @@ exports[`BuildQuote View Payment Method Data renders no icons if there are no pa undefined, undefined, { - "color": "#141618", + "color": "#121314", }, undefined, undefined, undefined, undefined, { - "color": "#141618", + "color": "#121314", }, undefined, undefined, @@ -6103,8 +6103,8 @@ exports[`BuildQuote View Payment Method Data renders no icons if there are no pa style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -6112,19 +6112,19 @@ exports[`BuildQuote View Payment Method Data renders no icons if there are no pa undefined, undefined, { - "fontFamily": "EuclidCircularB-Bold", + "fontFamily": "CentraNo1-Bold", "fontWeight": "600", }, undefined, { - "color": "#141618", + "color": "#121314", }, undefined, undefined, undefined, undefined, { - "color": "#141618", + "color": "#121314", }, undefined, undefined, @@ -6155,7 +6155,7 @@ exports[`BuildQuote View Payment Method Data renders no icons if there are no pa "fontSize": 16, }, { - "color": "#141618", + "color": "#121314", "marginLeft": 10, }, { @@ -6193,12 +6193,12 @@ exports[`BuildQuote View Payment Method Data renders no icons if there are no pa accessibilityRole="text" style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -6213,12 +6213,12 @@ exports[`BuildQuote View Payment Method Data renders no icons if there are no pa accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, "marginVertical": 8, } } @@ -6234,7 +6234,7 @@ exports[`BuildQuote View Payment Method Data renders no icons if there are no pa style={ [ { - "borderColor": "#848c96", + "borderColor": "#b7bbc8", "borderRadius": 8, "borderWidth": 1.5, "padding": 16, @@ -6293,8 +6293,8 @@ exports[`BuildQuote View Payment Method Data renders no icons if there are no pa numberOfLines={1} style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", + "color": "#121314", + "fontFamily": "CentraNo1-Medium", "fontSize": 24, "fontWeight": "500", "letterSpacing": 0, @@ -6345,8 +6345,8 @@ exports[`BuildQuote View Payment Method Data renders no icons if there are no pa style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -6356,14 +6356,14 @@ exports[`BuildQuote View Payment Method Data renders no icons if there are no pa undefined, undefined, { - "color": "#141618", + "color": "#121314", }, undefined, undefined, undefined, undefined, { - "color": "#141618", + "color": "#121314", }, undefined, undefined, @@ -6386,8 +6386,8 @@ exports[`BuildQuote View Payment Method Data renders no icons if there are no pa style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -6395,19 +6395,19 @@ exports[`BuildQuote View Payment Method Data renders no icons if there are no pa undefined, undefined, { - "fontFamily": "EuclidCircularB-Bold", + "fontFamily": "CentraNo1-Bold", "fontWeight": "600", }, undefined, { - "color": "#141618", + "color": "#121314", }, undefined, undefined, undefined, undefined, { - "color": "#141618", + "color": "#121314", }, undefined, undefined, @@ -6438,7 +6438,7 @@ exports[`BuildQuote View Payment Method Data renders no icons if there are no pa "fontSize": 16, }, { - "color": "#141618", + "color": "#121314", "marginLeft": 10, }, { @@ -6476,12 +6476,12 @@ exports[`BuildQuote View Payment Method Data renders no icons if there are no pa accessibilityRole="text" style={ { - "color": "#d73847", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#ca3542", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } testID="min-limit-error" @@ -6508,12 +6508,12 @@ exports[`BuildQuote View Payment Method Data renders no icons if there are no pa accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, "marginVertical": 8, } } @@ -6531,7 +6531,7 @@ exports[`BuildQuote View Payment Method Data renders no icons if there are no pa style={ [ { - "borderColor": "#848c96", + "borderColor": "#b7bbc8", "borderRadius": 8, "borderWidth": 1.5, "padding": 16, @@ -6575,7 +6575,7 @@ exports[`BuildQuote View Payment Method Data renders no icons if there are no pa style={ [ { - "color": "#141618", + "color": "#121314", "fontSize": 20, }, undefined, @@ -6614,9 +6614,9 @@ exports[`BuildQuote View Payment Method Data renders no icons if there are no pa numberOfLines={1} style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 16, + "color": "#121314", + "fontFamily": "CentraNo1-Medium", + "fontSize": 18, "fontWeight": "500", "letterSpacing": 0, "lineHeight": 24, @@ -6640,8 +6640,8 @@ exports[`BuildQuote View Payment Method Data renders no icons if there are no pa style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -6651,14 +6651,14 @@ exports[`BuildQuote View Payment Method Data renders no icons if there are no pa undefined, undefined, { - "color": "#141618", + "color": "#121314", }, undefined, undefined, undefined, undefined, { - "color": "#141618", + "color": "#121314", }, undefined, undefined, @@ -6681,8 +6681,8 @@ exports[`BuildQuote View Payment Method Data renders no icons if there are no pa style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -6690,19 +6690,19 @@ exports[`BuildQuote View Payment Method Data renders no icons if there are no pa undefined, undefined, { - "fontFamily": "EuclidCircularB-Bold", + "fontFamily": "CentraNo1-Bold", "fontWeight": "600", }, undefined, { - "color": "#141618", + "color": "#121314", }, undefined, undefined, undefined, undefined, { - "color": "#141618", + "color": "#121314", }, undefined, undefined, @@ -6733,7 +6733,7 @@ exports[`BuildQuote View Payment Method Data renders no icons if there are no pa "fontSize": 16, }, { - "color": "#141618", + "color": "#121314", "marginLeft": 10, }, { @@ -6754,7 +6754,7 @@ exports[`BuildQuote View Payment Method Data renders no icons if there are no pa <View style={ { - "backgroundColor": "#BBC0C566", + "backgroundColor": "#b7bbc866", "height": 1, "marginLeft": 16, "marginRight": 16, @@ -6815,7 +6815,7 @@ exports[`BuildQuote View Payment Method Data renders no icons if there are no pa "padding": 15, }, { - "backgroundColor": "#0376c9", + "backgroundColor": "#4459ff", "minHeight": 50, }, undefined, @@ -6840,7 +6840,7 @@ exports[`BuildQuote View Payment Method Data renders no icons if there are no pa }, [ { - "fontFamily": "EuclidCircularB-Bold", + "fontFamily": "CentraNo1-Bold", "fontSize": 14, "fontWeight": "600", "textAlign": "center", @@ -6867,7 +6867,7 @@ exports[`BuildQuote View Payment Method Data renders no icons if there are no pa style={ [ { - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", "bottom": 0, "left": 0, "paddingBottom": 50, @@ -6887,7 +6887,7 @@ exports[`BuildQuote View Payment Method Data renders no icons if there are no pa <View style={ { - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", "paddingVertical": 12, } } @@ -6909,7 +6909,7 @@ exports[`BuildQuote View Payment Method Data renders no icons if there are no pa onPress={[Function]} style={ { - "borderColor": "#848c96", + "borderColor": "#b7bbc8", "borderRadius": 999, "borderWidth": 1, "flexDirection": "row", @@ -6924,8 +6924,8 @@ exports[`BuildQuote View Payment Method Data renders no icons if there are no pa style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -6939,7 +6939,7 @@ exports[`BuildQuote View Payment Method Data renders no icons if there are no pa undefined, undefined, { - "color": "#6a737d", + "color": "#686e7d", }, undefined, undefined, @@ -6974,7 +6974,7 @@ exports[`BuildQuote View Payment Method Data renders no icons if there are no pa onPress={[Function]} style={ { - "borderColor": "#848c96", + "borderColor": "#b7bbc8", "borderRadius": 999, "borderWidth": 1, "flexDirection": "row", @@ -6989,8 +6989,8 @@ exports[`BuildQuote View Payment Method Data renders no icons if there are no pa style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -7004,7 +7004,7 @@ exports[`BuildQuote View Payment Method Data renders no icons if there are no pa undefined, undefined, { - "color": "#6a737d", + "color": "#686e7d", }, undefined, undefined, @@ -7039,7 +7039,7 @@ exports[`BuildQuote View Payment Method Data renders no icons if there are no pa onPress={[Function]} style={ { - "borderColor": "#848c96", + "borderColor": "#b7bbc8", "borderRadius": 999, "borderWidth": 1, "flexDirection": "row", @@ -7054,8 +7054,8 @@ exports[`BuildQuote View Payment Method Data renders no icons if there are no pa style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -7069,7 +7069,7 @@ exports[`BuildQuote View Payment Method Data renders no icons if there are no pa undefined, undefined, { - "color": "#6a737d", + "color": "#686e7d", }, undefined, undefined, @@ -7109,7 +7109,7 @@ exports[`BuildQuote View Payment Method Data renders no icons if there are no pa }, [ { - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", "paddingHorizontal": 24, }, undefined, @@ -7144,7 +7144,7 @@ exports[`BuildQuote View Payment Method Data renders no icons if there are no pa "elevation": 1, "margin": 3.5, "paddingVertical": 5, - "shadowColor": "#0000001A", + "shadowColor": "#0000001a", "shadowOffset": { "height": 2, "width": 0, @@ -7159,8 +7159,8 @@ exports[`BuildQuote View Payment Method Data renders no icons if there are no pa style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -7190,12 +7190,12 @@ exports[`BuildQuote View Payment Method Data renders no icons if there are no pa undefined, [ { - "color": "#141618", + "color": "#121314", "fontSize": 30, "textAlign": "center", }, { - "color": "#141618", + "color": "#121314", "fontSize": 20, "padding": 0, }, @@ -7225,7 +7225,7 @@ exports[`BuildQuote View Payment Method Data renders no icons if there are no pa "elevation": 1, "margin": 3.5, "paddingVertical": 5, - "shadowColor": "#0000001A", + "shadowColor": "#0000001a", "shadowOffset": { "height": 2, "width": 0, @@ -7240,8 +7240,8 @@ exports[`BuildQuote View Payment Method Data renders no icons if there are no pa style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -7271,12 +7271,12 @@ exports[`BuildQuote View Payment Method Data renders no icons if there are no pa undefined, [ { - "color": "#141618", + "color": "#121314", "fontSize": 30, "textAlign": "center", }, { - "color": "#141618", + "color": "#121314", "fontSize": 20, "padding": 0, }, @@ -7306,7 +7306,7 @@ exports[`BuildQuote View Payment Method Data renders no icons if there are no pa "elevation": 1, "margin": 3.5, "paddingVertical": 5, - "shadowColor": "#0000001A", + "shadowColor": "#0000001a", "shadowOffset": { "height": 2, "width": 0, @@ -7321,8 +7321,8 @@ exports[`BuildQuote View Payment Method Data renders no icons if there are no pa style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -7352,12 +7352,12 @@ exports[`BuildQuote View Payment Method Data renders no icons if there are no pa undefined, [ { - "color": "#141618", + "color": "#121314", "fontSize": 30, "textAlign": "center", }, { - "color": "#141618", + "color": "#121314", "fontSize": 20, "padding": 0, }, @@ -7396,7 +7396,7 @@ exports[`BuildQuote View Payment Method Data renders no icons if there are no pa "elevation": 1, "margin": 3.5, "paddingVertical": 5, - "shadowColor": "#0000001A", + "shadowColor": "#0000001a", "shadowOffset": { "height": 2, "width": 0, @@ -7411,8 +7411,8 @@ exports[`BuildQuote View Payment Method Data renders no icons if there are no pa style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -7442,12 +7442,12 @@ exports[`BuildQuote View Payment Method Data renders no icons if there are no pa undefined, [ { - "color": "#141618", + "color": "#121314", "fontSize": 30, "textAlign": "center", }, { - "color": "#141618", + "color": "#121314", "fontSize": 20, "padding": 0, }, @@ -7477,7 +7477,7 @@ exports[`BuildQuote View Payment Method Data renders no icons if there are no pa "elevation": 1, "margin": 3.5, "paddingVertical": 5, - "shadowColor": "#0000001A", + "shadowColor": "#0000001a", "shadowOffset": { "height": 2, "width": 0, @@ -7492,8 +7492,8 @@ exports[`BuildQuote View Payment Method Data renders no icons if there are no pa style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -7523,12 +7523,12 @@ exports[`BuildQuote View Payment Method Data renders no icons if there are no pa undefined, [ { - "color": "#141618", + "color": "#121314", "fontSize": 30, "textAlign": "center", }, { - "color": "#141618", + "color": "#121314", "fontSize": 20, "padding": 0, }, @@ -7558,7 +7558,7 @@ exports[`BuildQuote View Payment Method Data renders no icons if there are no pa "elevation": 1, "margin": 3.5, "paddingVertical": 5, - "shadowColor": "#0000001A", + "shadowColor": "#0000001a", "shadowOffset": { "height": 2, "width": 0, @@ -7573,8 +7573,8 @@ exports[`BuildQuote View Payment Method Data renders no icons if there are no pa style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -7604,12 +7604,12 @@ exports[`BuildQuote View Payment Method Data renders no icons if there are no pa undefined, [ { - "color": "#141618", + "color": "#121314", "fontSize": 30, "textAlign": "center", }, { - "color": "#141618", + "color": "#121314", "fontSize": 20, "padding": 0, }, @@ -7648,7 +7648,7 @@ exports[`BuildQuote View Payment Method Data renders no icons if there are no pa "elevation": 1, "margin": 3.5, "paddingVertical": 5, - "shadowColor": "#0000001A", + "shadowColor": "#0000001a", "shadowOffset": { "height": 2, "width": 0, @@ -7663,8 +7663,8 @@ exports[`BuildQuote View Payment Method Data renders no icons if there are no pa style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -7694,12 +7694,12 @@ exports[`BuildQuote View Payment Method Data renders no icons if there are no pa undefined, [ { - "color": "#141618", + "color": "#121314", "fontSize": 30, "textAlign": "center", }, { - "color": "#141618", + "color": "#121314", "fontSize": 20, "padding": 0, }, @@ -7729,7 +7729,7 @@ exports[`BuildQuote View Payment Method Data renders no icons if there are no pa "elevation": 1, "margin": 3.5, "paddingVertical": 5, - "shadowColor": "#0000001A", + "shadowColor": "#0000001a", "shadowOffset": { "height": 2, "width": 0, @@ -7744,8 +7744,8 @@ exports[`BuildQuote View Payment Method Data renders no icons if there are no pa style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -7775,12 +7775,12 @@ exports[`BuildQuote View Payment Method Data renders no icons if there are no pa undefined, [ { - "color": "#141618", + "color": "#121314", "fontSize": 30, "textAlign": "center", }, { - "color": "#141618", + "color": "#121314", "fontSize": 20, "padding": 0, }, @@ -7810,7 +7810,7 @@ exports[`BuildQuote View Payment Method Data renders no icons if there are no pa "elevation": 1, "margin": 3.5, "paddingVertical": 5, - "shadowColor": "#0000001A", + "shadowColor": "#0000001a", "shadowOffset": { "height": 2, "width": 0, @@ -7825,8 +7825,8 @@ exports[`BuildQuote View Payment Method Data renders no icons if there are no pa style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -7856,12 +7856,12 @@ exports[`BuildQuote View Payment Method Data renders no icons if there are no pa undefined, [ { - "color": "#141618", + "color": "#121314", "fontSize": 30, "textAlign": "center", }, { - "color": "#141618", + "color": "#121314", "fontSize": 20, "padding": 0, }, @@ -7905,8 +7905,8 @@ exports[`BuildQuote View Payment Method Data renders no icons if there are no pa style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -7936,12 +7936,12 @@ exports[`BuildQuote View Payment Method Data renders no icons if there are no pa undefined, [ { - "color": "#141618", + "color": "#121314", "fontSize": 30, "textAlign": "center", }, { - "color": "#141618", + "color": "#121314", "fontSize": 20, "padding": 0, }, @@ -7971,7 +7971,7 @@ exports[`BuildQuote View Payment Method Data renders no icons if there are no pa "elevation": 1, "margin": 3.5, "paddingVertical": 5, - "shadowColor": "#0000001A", + "shadowColor": "#0000001a", "shadowOffset": { "height": 2, "width": 0, @@ -7986,8 +7986,8 @@ exports[`BuildQuote View Payment Method Data renders no icons if there are no pa style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -8017,12 +8017,12 @@ exports[`BuildQuote View Payment Method Data renders no icons if there are no pa undefined, [ { - "color": "#141618", + "color": "#121314", "fontSize": 30, "textAlign": "center", }, { - "color": "#141618", + "color": "#121314", "fontSize": 20, "padding": 0, }, @@ -8061,7 +8061,7 @@ exports[`BuildQuote View Payment Method Data renders no icons if there are no pa style={ [ { - "color": "#141618", + "color": "#121314", "fontSize": 24, }, undefined, @@ -8104,7 +8104,7 @@ exports[`BuildQuote View Payment Method Data renders no icons if there are no pa "padding": 15, }, { - "backgroundColor": "#0376c9", + "backgroundColor": "#4459ff", "minHeight": 50, }, undefined, @@ -8125,7 +8125,7 @@ exports[`BuildQuote View Payment Method Data renders no icons if there are no pa null, [ { - "fontFamily": "EuclidCircularB-Bold", + "fontFamily": "CentraNo1-Bold", "fontSize": 14, "fontWeight": "600", "textAlign": "center", @@ -8404,8 +8404,8 @@ exports[`BuildQuote View Payment Method Data renders the loading page when payme <Text style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Regular", + "color": "#4459ff", + "fontFamily": "CentraNo1-Book", "fontSize": 23.57142857142857, "fontWeight": "400", } @@ -8440,12 +8440,12 @@ exports[`BuildQuote View Payment Method Data renders the loading page when payme numberOfLines={1} style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Bold", + "fontSize": 16, "fontWeight": "700", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -8464,12 +8464,12 @@ exports[`BuildQuote View Payment Method Data renders the loading page when payme numberOfLines={1} style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -8507,8 +8507,8 @@ exports[`BuildQuote View Payment Method Data renders the loading page when payme <Text style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Regular", + "color": "#4459ff", + "fontFamily": "CentraNo1-Book", "fontSize": 23.57142857142857, "fontWeight": "400", } @@ -8743,7 +8743,7 @@ exports[`BuildQuote View Payment Method Data renders the loading page when payme style={ [ { - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", "borderRadius": 30, "padding": 14, }, @@ -8772,7 +8772,7 @@ exports[`BuildQuote View Payment Method Data renders the loading page when payme style={ [ { - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", "borderRadius": 30, "padding": 14, }, @@ -8804,7 +8804,7 @@ exports[`BuildQuote View Payment Method Data renders the loading page when payme style={ [ { - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", "borderRadius": 30, "padding": 14, }, @@ -8841,7 +8841,7 @@ exports[`BuildQuote View Payment Method Data renders the loading page when payme style={ [ { - "borderColor": "#848c96", + "borderColor": "#b7bbc8", "borderRadius": 8, "borderWidth": 1.5, "padding": 16, @@ -8884,7 +8884,7 @@ exports[`BuildQuote View Payment Method Data renders the loading page when payme style={ [ { - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", "borderRadius": 30, "padding": 14, }, @@ -8928,7 +8928,7 @@ exports[`BuildQuote View Payment Method Data renders the loading page when payme style={ [ { - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", "borderRadius": 30, "padding": 14, }, @@ -8962,7 +8962,7 @@ exports[`BuildQuote View Payment Method Data renders the loading page when payme style={ [ { - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", "borderRadius": 30, "padding": 14, }, @@ -8995,7 +8995,7 @@ exports[`BuildQuote View Payment Method Data renders the loading page when payme style={ [ { - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", "borderRadius": 30, "padding": 14, }, @@ -9030,7 +9030,7 @@ exports[`BuildQuote View Payment Method Data renders the loading page when payme style={ [ { - "borderColor": "#848c96", + "borderColor": "#b7bbc8", "borderRadius": 8, "borderWidth": 1.5, "padding": 16, @@ -9080,7 +9080,7 @@ exports[`BuildQuote View Payment Method Data renders the loading page when payme style={ [ { - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", "borderRadius": 30, "padding": 14, }, @@ -9127,7 +9127,7 @@ exports[`BuildQuote View Payment Method Data renders the loading page when payme style={ [ { - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", "borderRadius": 30, "padding": 14, }, @@ -9161,7 +9161,7 @@ exports[`BuildQuote View Payment Method Data renders the loading page when payme style={ [ { - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", "borderRadius": 30, "padding": 14, }, @@ -9336,8 +9336,8 @@ exports[`BuildQuote View Regions data renders an error page when there is a regi <Text style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Regular", + "color": "#4459ff", + "fontFamily": "CentraNo1-Book", "fontSize": 23.57142857142857, "fontWeight": "400", } @@ -9372,12 +9372,12 @@ exports[`BuildQuote View Regions data renders an error page when there is a regi numberOfLines={1} style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Bold", + "fontSize": 16, "fontWeight": "700", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -9396,12 +9396,12 @@ exports[`BuildQuote View Regions data renders an error page when there is a regi numberOfLines={1} style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -9439,8 +9439,8 @@ exports[`BuildQuote View Regions data renders an error page when there is a regi <Text style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Regular", + "color": "#4459ff", + "fontFamily": "CentraNo1-Book", "fontSize": 23.57142857142857, "fontWeight": "400", } @@ -9694,7 +9694,7 @@ exports[`BuildQuote View Regions data renders an error page when there is a regi "textAlign": "center", }, { - "color": "#d73847", + "color": "#ca3542", }, ], { @@ -9720,12 +9720,12 @@ exports[`BuildQuote View Regions data renders an error page when there is a regi accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", + "color": "#121314", + "fontFamily": "CentraNo1-Bold", "fontSize": 18, "fontWeight": "600", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, "marginVertical": 3, "textAlign": "center", } @@ -9745,8 +9745,8 @@ exports[`BuildQuote View Regions data renders an error page when there is a regi style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -9760,7 +9760,7 @@ exports[`BuildQuote View Regions data renders an error page when there is a regi undefined, undefined, { - "color": "#6a737d", + "color": "#686e7d", }, undefined, undefined, @@ -9806,7 +9806,7 @@ exports[`BuildQuote View Regions data renders an error page when there is a regi "padding": 15, }, { - "backgroundColor": "#0376c9", + "backgroundColor": "#4459ff", "minHeight": 50, }, undefined, @@ -9827,7 +9827,7 @@ exports[`BuildQuote View Regions data renders an error page when there is a regi null, [ { - "fontFamily": "EuclidCircularB-Bold", + "fontFamily": "CentraNo1-Bold", "fontSize": 14, "fontWeight": "600", "textAlign": "center", @@ -9992,8 +9992,8 @@ exports[`BuildQuote View Regions data renders the loading page when regions are <Text style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Regular", + "color": "#4459ff", + "fontFamily": "CentraNo1-Book", "fontSize": 23.57142857142857, "fontWeight": "400", } @@ -10028,12 +10028,12 @@ exports[`BuildQuote View Regions data renders the loading page when regions are numberOfLines={1} style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Bold", + "fontSize": 16, "fontWeight": "700", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -10052,12 +10052,12 @@ exports[`BuildQuote View Regions data renders the loading page when regions are numberOfLines={1} style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -10095,8 +10095,8 @@ exports[`BuildQuote View Regions data renders the loading page when regions are <Text style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Regular", + "color": "#4459ff", + "fontFamily": "CentraNo1-Book", "fontSize": 23.57142857142857, "fontWeight": "400", } @@ -10331,7 +10331,7 @@ exports[`BuildQuote View Regions data renders the loading page when regions are style={ [ { - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", "borderRadius": 30, "padding": 14, }, @@ -10360,7 +10360,7 @@ exports[`BuildQuote View Regions data renders the loading page when regions are style={ [ { - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", "borderRadius": 30, "padding": 14, }, @@ -10392,7 +10392,7 @@ exports[`BuildQuote View Regions data renders the loading page when regions are style={ [ { - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", "borderRadius": 30, "padding": 14, }, @@ -10429,7 +10429,7 @@ exports[`BuildQuote View Regions data renders the loading page when regions are style={ [ { - "borderColor": "#848c96", + "borderColor": "#b7bbc8", "borderRadius": 8, "borderWidth": 1.5, "padding": 16, @@ -10472,7 +10472,7 @@ exports[`BuildQuote View Regions data renders the loading page when regions are style={ [ { - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", "borderRadius": 30, "padding": 14, }, @@ -10516,7 +10516,7 @@ exports[`BuildQuote View Regions data renders the loading page when regions are style={ [ { - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", "borderRadius": 30, "padding": 14, }, @@ -10550,7 +10550,7 @@ exports[`BuildQuote View Regions data renders the loading page when regions are style={ [ { - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", "borderRadius": 30, "padding": 14, }, @@ -10583,7 +10583,7 @@ exports[`BuildQuote View Regions data renders the loading page when regions are style={ [ { - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", "borderRadius": 30, "padding": 14, }, @@ -10618,7 +10618,7 @@ exports[`BuildQuote View Regions data renders the loading page when regions are style={ [ { - "borderColor": "#848c96", + "borderColor": "#b7bbc8", "borderRadius": 8, "borderWidth": 1.5, "padding": 16, @@ -10668,7 +10668,7 @@ exports[`BuildQuote View Regions data renders the loading page when regions are style={ [ { - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", "borderRadius": 30, "padding": 14, }, @@ -10715,7 +10715,7 @@ exports[`BuildQuote View Regions data renders the loading page when regions are style={ [ { - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", "borderRadius": 30, "padding": 14, }, @@ -10749,7 +10749,7 @@ exports[`BuildQuote View Regions data renders the loading page when regions are style={ [ { - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", "borderRadius": 30, "padding": 14, }, @@ -10924,8 +10924,8 @@ exports[`BuildQuote View renders correctly 1`] = ` <Text style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Regular", + "color": "#4459ff", + "fontFamily": "CentraNo1-Book", "fontSize": 23.57142857142857, "fontWeight": "400", } @@ -10960,12 +10960,12 @@ exports[`BuildQuote View renders correctly 1`] = ` numberOfLines={1} style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Bold", + "fontSize": 16, "fontWeight": "700", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -10984,12 +10984,12 @@ exports[`BuildQuote View renders correctly 1`] = ` numberOfLines={1} style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -11027,8 +11027,8 @@ exports[`BuildQuote View renders correctly 1`] = ` <Text style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Regular", + "color": "#4459ff", + "fontFamily": "CentraNo1-Book", "fontSize": 23.57142857142857, "fontWeight": "400", } @@ -11316,7 +11316,7 @@ exports[`BuildQuote View renders correctly 1`] = ` style={ { "alignItems": "center", - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", "borderRadius": 100, "flexDirection": "row", "justifyContent": "center", @@ -11355,13 +11355,13 @@ exports[`BuildQuote View renders correctly 1`] = ` numberOfLines={1} style={ { - "color": "#141618", + "color": "#121314", "flexShrink": 1, - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, "marginHorizontal": 5, "marginVertical": 3, } @@ -11380,7 +11380,7 @@ exports[`BuildQuote View renders correctly 1`] = ` "fontSize": 18, }, { - "color": "#6a737d", + "color": "#686e7d", "marginLeft": 10, "marginRight": 5, "textAlign": "right", @@ -11415,7 +11415,7 @@ exports[`BuildQuote View renders correctly 1`] = ` style={ { "alignItems": "center", - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", "borderRadius": 100, "flexDirection": "row", "justifyContent": "center", @@ -11428,12 +11428,12 @@ exports[`BuildQuote View renders correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, "marginHorizontal": 0, "marginVertical": 3, } @@ -11450,7 +11450,7 @@ exports[`BuildQuote View renders correctly 1`] = ` "fontSize": 18, }, { - "color": "#6a737d", + "color": "#686e7d", "marginLeft": 10, "marginRight": 5, "textAlign": "right", @@ -11473,12 +11473,12 @@ exports[`BuildQuote View renders correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, "marginVertical": 8, } } @@ -11496,7 +11496,7 @@ exports[`BuildQuote View renders correctly 1`] = ` style={ [ { - "borderColor": "#848c96", + "borderColor": "#b7bbc8", "borderRadius": 8, "borderWidth": 1.5, "padding": 16, @@ -11620,9 +11620,9 @@ exports[`BuildQuote View renders correctly 1`] = ` numberOfLines={1} style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 16, + "color": "#121314", + "fontFamily": "CentraNo1-Medium", + "fontSize": 18, "fontWeight": "500", "letterSpacing": 0, "lineHeight": 24, @@ -11654,8 +11654,8 @@ exports[`BuildQuote View renders correctly 1`] = ` style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -11665,14 +11665,14 @@ exports[`BuildQuote View renders correctly 1`] = ` undefined, undefined, { - "color": "#141618", + "color": "#121314", }, undefined, undefined, undefined, undefined, { - "color": "#141618", + "color": "#121314", }, undefined, undefined, @@ -11695,8 +11695,8 @@ exports[`BuildQuote View renders correctly 1`] = ` style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -11704,19 +11704,19 @@ exports[`BuildQuote View renders correctly 1`] = ` undefined, undefined, { - "fontFamily": "EuclidCircularB-Bold", + "fontFamily": "CentraNo1-Bold", "fontWeight": "600", }, undefined, { - "color": "#141618", + "color": "#121314", }, undefined, undefined, undefined, undefined, { - "color": "#141618", + "color": "#121314", }, undefined, undefined, @@ -11747,7 +11747,7 @@ exports[`BuildQuote View renders correctly 1`] = ` "fontSize": 16, }, { - "color": "#141618", + "color": "#121314", "marginLeft": 10, }, { @@ -11785,12 +11785,12 @@ exports[`BuildQuote View renders correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -11805,12 +11805,12 @@ exports[`BuildQuote View renders correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, "marginVertical": 8, } } @@ -11826,7 +11826,7 @@ exports[`BuildQuote View renders correctly 1`] = ` style={ [ { - "borderColor": "#848c96", + "borderColor": "#b7bbc8", "borderRadius": 8, "borderWidth": 1.5, "padding": 16, @@ -11885,8 +11885,8 @@ exports[`BuildQuote View renders correctly 1`] = ` numberOfLines={1} style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", + "color": "#121314", + "fontFamily": "CentraNo1-Medium", "fontSize": 24, "fontWeight": "500", "letterSpacing": 0, @@ -11937,8 +11937,8 @@ exports[`BuildQuote View renders correctly 1`] = ` style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -11948,14 +11948,14 @@ exports[`BuildQuote View renders correctly 1`] = ` undefined, undefined, { - "color": "#141618", + "color": "#121314", }, undefined, undefined, undefined, undefined, { - "color": "#141618", + "color": "#121314", }, undefined, undefined, @@ -11978,8 +11978,8 @@ exports[`BuildQuote View renders correctly 1`] = ` style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -11987,19 +11987,19 @@ exports[`BuildQuote View renders correctly 1`] = ` undefined, undefined, { - "fontFamily": "EuclidCircularB-Bold", + "fontFamily": "CentraNo1-Bold", "fontWeight": "600", }, undefined, { - "color": "#141618", + "color": "#121314", }, undefined, undefined, undefined, undefined, { - "color": "#141618", + "color": "#121314", }, undefined, undefined, @@ -12030,7 +12030,7 @@ exports[`BuildQuote View renders correctly 1`] = ` "fontSize": 16, }, { - "color": "#141618", + "color": "#121314", "marginLeft": 10, }, { @@ -12068,12 +12068,12 @@ exports[`BuildQuote View renders correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#d73847", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#ca3542", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } testID="min-limit-error" @@ -12100,12 +12100,12 @@ exports[`BuildQuote View renders correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, "marginVertical": 8, } } @@ -12123,7 +12123,7 @@ exports[`BuildQuote View renders correctly 1`] = ` style={ [ { - "borderColor": "#848c96", + "borderColor": "#b7bbc8", "borderRadius": 8, "borderWidth": 1.5, "padding": 16, @@ -12167,7 +12167,7 @@ exports[`BuildQuote View renders correctly 1`] = ` style={ [ { - "color": "#141618", + "color": "#121314", "fontSize": 20, }, undefined, @@ -12206,9 +12206,9 @@ exports[`BuildQuote View renders correctly 1`] = ` numberOfLines={1} style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 16, + "color": "#121314", + "fontFamily": "CentraNo1-Medium", + "fontSize": 18, "fontWeight": "500", "letterSpacing": 0, "lineHeight": 24, @@ -12232,8 +12232,8 @@ exports[`BuildQuote View renders correctly 1`] = ` style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -12243,14 +12243,14 @@ exports[`BuildQuote View renders correctly 1`] = ` undefined, undefined, { - "color": "#141618", + "color": "#121314", }, undefined, undefined, undefined, undefined, { - "color": "#141618", + "color": "#121314", }, undefined, undefined, @@ -12273,8 +12273,8 @@ exports[`BuildQuote View renders correctly 1`] = ` style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -12282,19 +12282,19 @@ exports[`BuildQuote View renders correctly 1`] = ` undefined, undefined, { - "fontFamily": "EuclidCircularB-Bold", + "fontFamily": "CentraNo1-Bold", "fontWeight": "600", }, undefined, { - "color": "#141618", + "color": "#121314", }, undefined, undefined, undefined, undefined, { - "color": "#141618", + "color": "#121314", }, undefined, undefined, @@ -12325,7 +12325,7 @@ exports[`BuildQuote View renders correctly 1`] = ` "fontSize": 16, }, { - "color": "#141618", + "color": "#121314", "marginLeft": 10, }, { @@ -12346,7 +12346,7 @@ exports[`BuildQuote View renders correctly 1`] = ` <View style={ { - "backgroundColor": "#BBC0C566", + "backgroundColor": "#b7bbc866", "height": 1, "marginLeft": 16, "marginRight": 16, @@ -12453,7 +12453,7 @@ exports[`BuildQuote View renders correctly 1`] = ` "padding": 15, }, { - "backgroundColor": "#0376c9", + "backgroundColor": "#4459ff", "minHeight": 50, }, undefined, @@ -12478,7 +12478,7 @@ exports[`BuildQuote View renders correctly 1`] = ` }, [ { - "fontFamily": "EuclidCircularB-Bold", + "fontFamily": "CentraNo1-Bold", "fontSize": 14, "fontWeight": "600", "textAlign": "center", @@ -12505,7 +12505,7 @@ exports[`BuildQuote View renders correctly 1`] = ` style={ [ { - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", "bottom": 0, "left": 0, "paddingBottom": 50, @@ -12525,7 +12525,7 @@ exports[`BuildQuote View renders correctly 1`] = ` <View style={ { - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", "paddingVertical": 12, } } @@ -12547,7 +12547,7 @@ exports[`BuildQuote View renders correctly 1`] = ` onPress={[Function]} style={ { - "borderColor": "#848c96", + "borderColor": "#b7bbc8", "borderRadius": 999, "borderWidth": 1, "flexDirection": "row", @@ -12562,8 +12562,8 @@ exports[`BuildQuote View renders correctly 1`] = ` style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -12577,7 +12577,7 @@ exports[`BuildQuote View renders correctly 1`] = ` undefined, undefined, { - "color": "#6a737d", + "color": "#686e7d", }, undefined, undefined, @@ -12612,7 +12612,7 @@ exports[`BuildQuote View renders correctly 1`] = ` onPress={[Function]} style={ { - "borderColor": "#848c96", + "borderColor": "#b7bbc8", "borderRadius": 999, "borderWidth": 1, "flexDirection": "row", @@ -12627,8 +12627,8 @@ exports[`BuildQuote View renders correctly 1`] = ` style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -12642,7 +12642,7 @@ exports[`BuildQuote View renders correctly 1`] = ` undefined, undefined, { - "color": "#6a737d", + "color": "#686e7d", }, undefined, undefined, @@ -12677,7 +12677,7 @@ exports[`BuildQuote View renders correctly 1`] = ` onPress={[Function]} style={ { - "borderColor": "#848c96", + "borderColor": "#b7bbc8", "borderRadius": 999, "borderWidth": 1, "flexDirection": "row", @@ -12692,8 +12692,8 @@ exports[`BuildQuote View renders correctly 1`] = ` style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -12707,7 +12707,7 @@ exports[`BuildQuote View renders correctly 1`] = ` undefined, undefined, { - "color": "#6a737d", + "color": "#686e7d", }, undefined, undefined, @@ -12747,7 +12747,7 @@ exports[`BuildQuote View renders correctly 1`] = ` }, [ { - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", "paddingHorizontal": 24, }, undefined, @@ -12782,7 +12782,7 @@ exports[`BuildQuote View renders correctly 1`] = ` "elevation": 1, "margin": 3.5, "paddingVertical": 5, - "shadowColor": "#0000001A", + "shadowColor": "#0000001a", "shadowOffset": { "height": 2, "width": 0, @@ -12797,8 +12797,8 @@ exports[`BuildQuote View renders correctly 1`] = ` style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -12828,12 +12828,12 @@ exports[`BuildQuote View renders correctly 1`] = ` undefined, [ { - "color": "#141618", + "color": "#121314", "fontSize": 30, "textAlign": "center", }, { - "color": "#141618", + "color": "#121314", "fontSize": 20, "padding": 0, }, @@ -12863,7 +12863,7 @@ exports[`BuildQuote View renders correctly 1`] = ` "elevation": 1, "margin": 3.5, "paddingVertical": 5, - "shadowColor": "#0000001A", + "shadowColor": "#0000001a", "shadowOffset": { "height": 2, "width": 0, @@ -12878,8 +12878,8 @@ exports[`BuildQuote View renders correctly 1`] = ` style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -12909,12 +12909,12 @@ exports[`BuildQuote View renders correctly 1`] = ` undefined, [ { - "color": "#141618", + "color": "#121314", "fontSize": 30, "textAlign": "center", }, { - "color": "#141618", + "color": "#121314", "fontSize": 20, "padding": 0, }, @@ -12944,7 +12944,7 @@ exports[`BuildQuote View renders correctly 1`] = ` "elevation": 1, "margin": 3.5, "paddingVertical": 5, - "shadowColor": "#0000001A", + "shadowColor": "#0000001a", "shadowOffset": { "height": 2, "width": 0, @@ -12959,8 +12959,8 @@ exports[`BuildQuote View renders correctly 1`] = ` style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -12990,12 +12990,12 @@ exports[`BuildQuote View renders correctly 1`] = ` undefined, [ { - "color": "#141618", + "color": "#121314", "fontSize": 30, "textAlign": "center", }, { - "color": "#141618", + "color": "#121314", "fontSize": 20, "padding": 0, }, @@ -13034,7 +13034,7 @@ exports[`BuildQuote View renders correctly 1`] = ` "elevation": 1, "margin": 3.5, "paddingVertical": 5, - "shadowColor": "#0000001A", + "shadowColor": "#0000001a", "shadowOffset": { "height": 2, "width": 0, @@ -13049,8 +13049,8 @@ exports[`BuildQuote View renders correctly 1`] = ` style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -13080,12 +13080,12 @@ exports[`BuildQuote View renders correctly 1`] = ` undefined, [ { - "color": "#141618", + "color": "#121314", "fontSize": 30, "textAlign": "center", }, { - "color": "#141618", + "color": "#121314", "fontSize": 20, "padding": 0, }, @@ -13115,7 +13115,7 @@ exports[`BuildQuote View renders correctly 1`] = ` "elevation": 1, "margin": 3.5, "paddingVertical": 5, - "shadowColor": "#0000001A", + "shadowColor": "#0000001a", "shadowOffset": { "height": 2, "width": 0, @@ -13130,8 +13130,8 @@ exports[`BuildQuote View renders correctly 1`] = ` style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -13161,12 +13161,12 @@ exports[`BuildQuote View renders correctly 1`] = ` undefined, [ { - "color": "#141618", + "color": "#121314", "fontSize": 30, "textAlign": "center", }, { - "color": "#141618", + "color": "#121314", "fontSize": 20, "padding": 0, }, @@ -13196,7 +13196,7 @@ exports[`BuildQuote View renders correctly 1`] = ` "elevation": 1, "margin": 3.5, "paddingVertical": 5, - "shadowColor": "#0000001A", + "shadowColor": "#0000001a", "shadowOffset": { "height": 2, "width": 0, @@ -13211,8 +13211,8 @@ exports[`BuildQuote View renders correctly 1`] = ` style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -13242,12 +13242,12 @@ exports[`BuildQuote View renders correctly 1`] = ` undefined, [ { - "color": "#141618", + "color": "#121314", "fontSize": 30, "textAlign": "center", }, { - "color": "#141618", + "color": "#121314", "fontSize": 20, "padding": 0, }, @@ -13286,7 +13286,7 @@ exports[`BuildQuote View renders correctly 1`] = ` "elevation": 1, "margin": 3.5, "paddingVertical": 5, - "shadowColor": "#0000001A", + "shadowColor": "#0000001a", "shadowOffset": { "height": 2, "width": 0, @@ -13301,8 +13301,8 @@ exports[`BuildQuote View renders correctly 1`] = ` style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -13332,12 +13332,12 @@ exports[`BuildQuote View renders correctly 1`] = ` undefined, [ { - "color": "#141618", + "color": "#121314", "fontSize": 30, "textAlign": "center", }, { - "color": "#141618", + "color": "#121314", "fontSize": 20, "padding": 0, }, @@ -13367,7 +13367,7 @@ exports[`BuildQuote View renders correctly 1`] = ` "elevation": 1, "margin": 3.5, "paddingVertical": 5, - "shadowColor": "#0000001A", + "shadowColor": "#0000001a", "shadowOffset": { "height": 2, "width": 0, @@ -13382,8 +13382,8 @@ exports[`BuildQuote View renders correctly 1`] = ` style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -13413,12 +13413,12 @@ exports[`BuildQuote View renders correctly 1`] = ` undefined, [ { - "color": "#141618", + "color": "#121314", "fontSize": 30, "textAlign": "center", }, { - "color": "#141618", + "color": "#121314", "fontSize": 20, "padding": 0, }, @@ -13448,7 +13448,7 @@ exports[`BuildQuote View renders correctly 1`] = ` "elevation": 1, "margin": 3.5, "paddingVertical": 5, - "shadowColor": "#0000001A", + "shadowColor": "#0000001a", "shadowOffset": { "height": 2, "width": 0, @@ -13463,8 +13463,8 @@ exports[`BuildQuote View renders correctly 1`] = ` style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -13494,12 +13494,12 @@ exports[`BuildQuote View renders correctly 1`] = ` undefined, [ { - "color": "#141618", + "color": "#121314", "fontSize": 30, "textAlign": "center", }, { - "color": "#141618", + "color": "#121314", "fontSize": 20, "padding": 0, }, @@ -13543,8 +13543,8 @@ exports[`BuildQuote View renders correctly 1`] = ` style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -13574,12 +13574,12 @@ exports[`BuildQuote View renders correctly 1`] = ` undefined, [ { - "color": "#141618", + "color": "#121314", "fontSize": 30, "textAlign": "center", }, { - "color": "#141618", + "color": "#121314", "fontSize": 20, "padding": 0, }, @@ -13609,7 +13609,7 @@ exports[`BuildQuote View renders correctly 1`] = ` "elevation": 1, "margin": 3.5, "paddingVertical": 5, - "shadowColor": "#0000001A", + "shadowColor": "#0000001a", "shadowOffset": { "height": 2, "width": 0, @@ -13624,8 +13624,8 @@ exports[`BuildQuote View renders correctly 1`] = ` style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -13655,12 +13655,12 @@ exports[`BuildQuote View renders correctly 1`] = ` undefined, [ { - "color": "#141618", + "color": "#121314", "fontSize": 30, "textAlign": "center", }, { - "color": "#141618", + "color": "#121314", "fontSize": 20, "padding": 0, }, @@ -13699,7 +13699,7 @@ exports[`BuildQuote View renders correctly 1`] = ` style={ [ { - "color": "#141618", + "color": "#121314", "fontSize": 24, }, undefined, @@ -13742,7 +13742,7 @@ exports[`BuildQuote View renders correctly 1`] = ` "padding": 15, }, { - "backgroundColor": "#0376c9", + "backgroundColor": "#4459ff", "minHeight": 50, }, undefined, @@ -13763,7 +13763,7 @@ exports[`BuildQuote View renders correctly 1`] = ` null, [ { - "fontFamily": "EuclidCircularB-Bold", + "fontFamily": "CentraNo1-Bold", "fontSize": 14, "fontWeight": "600", "textAlign": "center", @@ -14042,8 +14042,8 @@ exports[`BuildQuote View renders correctly 2`] = ` <Text style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Regular", + "color": "#4459ff", + "fontFamily": "CentraNo1-Book", "fontSize": 23.57142857142857, "fontWeight": "400", } @@ -14078,12 +14078,12 @@ exports[`BuildQuote View renders correctly 2`] = ` numberOfLines={1} style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Bold", + "fontSize": 16, "fontWeight": "700", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -14102,12 +14102,12 @@ exports[`BuildQuote View renders correctly 2`] = ` numberOfLines={1} style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -14145,8 +14145,8 @@ exports[`BuildQuote View renders correctly 2`] = ` <Text style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Regular", + "color": "#4459ff", + "fontFamily": "CentraNo1-Book", "fontSize": 23.57142857142857, "fontWeight": "400", } @@ -14434,7 +14434,7 @@ exports[`BuildQuote View renders correctly 2`] = ` style={ { "alignItems": "center", - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", "borderRadius": 100, "flexDirection": "row", "justifyContent": "center", @@ -14473,13 +14473,13 @@ exports[`BuildQuote View renders correctly 2`] = ` numberOfLines={1} style={ { - "color": "#141618", + "color": "#121314", "flexShrink": 1, - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, "marginHorizontal": 5, "marginVertical": 3, } @@ -14498,7 +14498,7 @@ exports[`BuildQuote View renders correctly 2`] = ` "fontSize": 18, }, { - "color": "#6a737d", + "color": "#686e7d", "marginLeft": 10, "marginRight": 5, "textAlign": "right", @@ -14533,7 +14533,7 @@ exports[`BuildQuote View renders correctly 2`] = ` style={ { "alignItems": "center", - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", "borderRadius": 100, "flexDirection": "row", "justifyContent": "center", @@ -14546,12 +14546,12 @@ exports[`BuildQuote View renders correctly 2`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, "marginHorizontal": 0, "marginVertical": 3, } @@ -14568,7 +14568,7 @@ exports[`BuildQuote View renders correctly 2`] = ` "fontSize": 18, }, { - "color": "#6a737d", + "color": "#686e7d", "marginLeft": 10, "marginRight": 5, "textAlign": "right", @@ -14602,7 +14602,7 @@ exports[`BuildQuote View renders correctly 2`] = ` style={ { "alignItems": "center", - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", "borderRadius": 100, "flexDirection": "row", "justifyContent": "center", @@ -14615,9 +14615,9 @@ exports[`BuildQuote View renders correctly 2`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 16, + "color": "#121314", + "fontFamily": "CentraNo1-Medium", + "fontSize": 18, "fontWeight": "500", "letterSpacing": 0, "lineHeight": 24, @@ -14635,7 +14635,7 @@ exports[`BuildQuote View renders correctly 2`] = ` "fontSize": 18, }, { - "color": "#6a737d", + "color": "#686e7d", "marginLeft": 10, "marginRight": 5, "textAlign": "right", @@ -14658,12 +14658,12 @@ exports[`BuildQuote View renders correctly 2`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, "marginVertical": 8, } } @@ -14681,7 +14681,7 @@ exports[`BuildQuote View renders correctly 2`] = ` style={ [ { - "borderColor": "#848c96", + "borderColor": "#b7bbc8", "borderRadius": 8, "borderWidth": 1.5, "padding": 16, @@ -14805,9 +14805,9 @@ exports[`BuildQuote View renders correctly 2`] = ` numberOfLines={1} style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 16, + "color": "#121314", + "fontFamily": "CentraNo1-Medium", + "fontSize": 18, "fontWeight": "500", "letterSpacing": 0, "lineHeight": 24, @@ -14839,8 +14839,8 @@ exports[`BuildQuote View renders correctly 2`] = ` style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -14850,14 +14850,14 @@ exports[`BuildQuote View renders correctly 2`] = ` undefined, undefined, { - "color": "#141618", + "color": "#121314", }, undefined, undefined, undefined, undefined, { - "color": "#141618", + "color": "#121314", }, undefined, undefined, @@ -14880,8 +14880,8 @@ exports[`BuildQuote View renders correctly 2`] = ` style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -14889,19 +14889,19 @@ exports[`BuildQuote View renders correctly 2`] = ` undefined, undefined, { - "fontFamily": "EuclidCircularB-Bold", + "fontFamily": "CentraNo1-Bold", "fontWeight": "600", }, undefined, { - "color": "#141618", + "color": "#121314", }, undefined, undefined, undefined, undefined, { - "color": "#141618", + "color": "#121314", }, undefined, undefined, @@ -14932,7 +14932,7 @@ exports[`BuildQuote View renders correctly 2`] = ` "fontSize": 16, }, { - "color": "#141618", + "color": "#121314", "marginLeft": 10, }, { @@ -14970,12 +14970,12 @@ exports[`BuildQuote View renders correctly 2`] = ` accessibilityRole="text" style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -14990,12 +14990,12 @@ exports[`BuildQuote View renders correctly 2`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, "marginVertical": 8, } } @@ -15011,7 +15011,7 @@ exports[`BuildQuote View renders correctly 2`] = ` style={ [ { - "borderColor": "#848c96", + "borderColor": "#b7bbc8", "borderRadius": 8, "borderWidth": 1.5, "padding": 16, @@ -15070,8 +15070,8 @@ exports[`BuildQuote View renders correctly 2`] = ` numberOfLines={1} style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", + "color": "#121314", + "fontFamily": "CentraNo1-Medium", "fontSize": 24, "fontWeight": "500", "letterSpacing": 0, @@ -15103,12 +15103,12 @@ exports[`BuildQuote View renders correctly 2`] = ` accessibilityRole="text" style={ { - "color": "#d73847", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#ca3542", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } testID="min-limit-error" @@ -15132,12 +15132,12 @@ exports[`BuildQuote View renders correctly 2`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, "marginVertical": 8, } } @@ -15155,7 +15155,7 @@ exports[`BuildQuote View renders correctly 2`] = ` style={ [ { - "borderColor": "#848c96", + "borderColor": "#b7bbc8", "borderRadius": 8, "borderWidth": 1.5, "padding": 16, @@ -15199,7 +15199,7 @@ exports[`BuildQuote View renders correctly 2`] = ` style={ [ { - "color": "#141618", + "color": "#121314", "fontSize": 20, }, undefined, @@ -15238,9 +15238,9 @@ exports[`BuildQuote View renders correctly 2`] = ` numberOfLines={1} style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 16, + "color": "#121314", + "fontFamily": "CentraNo1-Medium", + "fontSize": 18, "fontWeight": "500", "letterSpacing": 0, "lineHeight": 24, @@ -15264,8 +15264,8 @@ exports[`BuildQuote View renders correctly 2`] = ` style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -15275,14 +15275,14 @@ exports[`BuildQuote View renders correctly 2`] = ` undefined, undefined, { - "color": "#141618", + "color": "#121314", }, undefined, undefined, undefined, undefined, { - "color": "#141618", + "color": "#121314", }, undefined, undefined, @@ -15305,8 +15305,8 @@ exports[`BuildQuote View renders correctly 2`] = ` style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -15314,19 +15314,19 @@ exports[`BuildQuote View renders correctly 2`] = ` undefined, undefined, { - "fontFamily": "EuclidCircularB-Bold", + "fontFamily": "CentraNo1-Bold", "fontWeight": "600", }, undefined, { - "color": "#141618", + "color": "#121314", }, undefined, undefined, undefined, undefined, { - "color": "#141618", + "color": "#121314", }, undefined, undefined, @@ -15357,7 +15357,7 @@ exports[`BuildQuote View renders correctly 2`] = ` "fontSize": 16, }, { - "color": "#141618", + "color": "#121314", "marginLeft": 10, }, { @@ -15378,7 +15378,7 @@ exports[`BuildQuote View renders correctly 2`] = ` <View style={ { - "backgroundColor": "#BBC0C566", + "backgroundColor": "#b7bbc866", "height": 1, "marginLeft": 16, "marginRight": 16, @@ -15485,7 +15485,7 @@ exports[`BuildQuote View renders correctly 2`] = ` "padding": 15, }, { - "backgroundColor": "#0376c9", + "backgroundColor": "#4459ff", "minHeight": 50, }, undefined, @@ -15510,7 +15510,7 @@ exports[`BuildQuote View renders correctly 2`] = ` }, [ { - "fontFamily": "EuclidCircularB-Bold", + "fontFamily": "CentraNo1-Bold", "fontSize": 14, "fontWeight": "600", "textAlign": "center", @@ -15537,7 +15537,7 @@ exports[`BuildQuote View renders correctly 2`] = ` style={ [ { - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", "bottom": 0, "left": 0, "paddingBottom": 50, @@ -15557,7 +15557,7 @@ exports[`BuildQuote View renders correctly 2`] = ` <View style={ { - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", "paddingVertical": 12, } } @@ -15579,7 +15579,7 @@ exports[`BuildQuote View renders correctly 2`] = ` onPress={[Function]} style={ { - "borderColor": "#848c96", + "borderColor": "#b7bbc8", "borderRadius": 999, "borderWidth": 1, "flexDirection": "row", @@ -15594,8 +15594,8 @@ exports[`BuildQuote View renders correctly 2`] = ` style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -15609,7 +15609,7 @@ exports[`BuildQuote View renders correctly 2`] = ` undefined, undefined, { - "color": "#6a737d", + "color": "#686e7d", }, undefined, undefined, @@ -15644,7 +15644,7 @@ exports[`BuildQuote View renders correctly 2`] = ` onPress={[Function]} style={ { - "borderColor": "#848c96", + "borderColor": "#b7bbc8", "borderRadius": 999, "borderWidth": 1, "flexDirection": "row", @@ -15659,8 +15659,8 @@ exports[`BuildQuote View renders correctly 2`] = ` style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -15674,7 +15674,7 @@ exports[`BuildQuote View renders correctly 2`] = ` undefined, undefined, { - "color": "#6a737d", + "color": "#686e7d", }, undefined, undefined, @@ -15709,7 +15709,7 @@ exports[`BuildQuote View renders correctly 2`] = ` onPress={[Function]} style={ { - "borderColor": "#848c96", + "borderColor": "#b7bbc8", "borderRadius": 999, "borderWidth": 1, "flexDirection": "row", @@ -15724,8 +15724,8 @@ exports[`BuildQuote View renders correctly 2`] = ` style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -15739,7 +15739,7 @@ exports[`BuildQuote View renders correctly 2`] = ` undefined, undefined, { - "color": "#6a737d", + "color": "#686e7d", }, undefined, undefined, @@ -15774,7 +15774,7 @@ exports[`BuildQuote View renders correctly 2`] = ` onPress={[Function]} style={ { - "borderColor": "#848c96", + "borderColor": "#b7bbc8", "borderRadius": 999, "borderWidth": 1, "flexDirection": "row", @@ -15789,8 +15789,8 @@ exports[`BuildQuote View renders correctly 2`] = ` style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -15804,7 +15804,7 @@ exports[`BuildQuote View renders correctly 2`] = ` undefined, undefined, { - "color": "#6a737d", + "color": "#686e7d", }, undefined, undefined, @@ -15844,7 +15844,7 @@ exports[`BuildQuote View renders correctly 2`] = ` }, [ { - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", "paddingHorizontal": 24, }, undefined, @@ -15879,7 +15879,7 @@ exports[`BuildQuote View renders correctly 2`] = ` "elevation": 1, "margin": 3.5, "paddingVertical": 5, - "shadowColor": "#0000001A", + "shadowColor": "#0000001a", "shadowOffset": { "height": 2, "width": 0, @@ -15894,8 +15894,8 @@ exports[`BuildQuote View renders correctly 2`] = ` style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -15925,12 +15925,12 @@ exports[`BuildQuote View renders correctly 2`] = ` undefined, [ { - "color": "#141618", + "color": "#121314", "fontSize": 30, "textAlign": "center", }, { - "color": "#141618", + "color": "#121314", "fontSize": 20, "padding": 0, }, @@ -15960,7 +15960,7 @@ exports[`BuildQuote View renders correctly 2`] = ` "elevation": 1, "margin": 3.5, "paddingVertical": 5, - "shadowColor": "#0000001A", + "shadowColor": "#0000001a", "shadowOffset": { "height": 2, "width": 0, @@ -15975,8 +15975,8 @@ exports[`BuildQuote View renders correctly 2`] = ` style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -16006,12 +16006,12 @@ exports[`BuildQuote View renders correctly 2`] = ` undefined, [ { - "color": "#141618", + "color": "#121314", "fontSize": 30, "textAlign": "center", }, { - "color": "#141618", + "color": "#121314", "fontSize": 20, "padding": 0, }, @@ -16041,7 +16041,7 @@ exports[`BuildQuote View renders correctly 2`] = ` "elevation": 1, "margin": 3.5, "paddingVertical": 5, - "shadowColor": "#0000001A", + "shadowColor": "#0000001a", "shadowOffset": { "height": 2, "width": 0, @@ -16056,8 +16056,8 @@ exports[`BuildQuote View renders correctly 2`] = ` style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -16087,12 +16087,12 @@ exports[`BuildQuote View renders correctly 2`] = ` undefined, [ { - "color": "#141618", + "color": "#121314", "fontSize": 30, "textAlign": "center", }, { - "color": "#141618", + "color": "#121314", "fontSize": 20, "padding": 0, }, @@ -16131,7 +16131,7 @@ exports[`BuildQuote View renders correctly 2`] = ` "elevation": 1, "margin": 3.5, "paddingVertical": 5, - "shadowColor": "#0000001A", + "shadowColor": "#0000001a", "shadowOffset": { "height": 2, "width": 0, @@ -16146,8 +16146,8 @@ exports[`BuildQuote View renders correctly 2`] = ` style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -16177,12 +16177,12 @@ exports[`BuildQuote View renders correctly 2`] = ` undefined, [ { - "color": "#141618", + "color": "#121314", "fontSize": 30, "textAlign": "center", }, { - "color": "#141618", + "color": "#121314", "fontSize": 20, "padding": 0, }, @@ -16212,7 +16212,7 @@ exports[`BuildQuote View renders correctly 2`] = ` "elevation": 1, "margin": 3.5, "paddingVertical": 5, - "shadowColor": "#0000001A", + "shadowColor": "#0000001a", "shadowOffset": { "height": 2, "width": 0, @@ -16227,8 +16227,8 @@ exports[`BuildQuote View renders correctly 2`] = ` style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -16258,12 +16258,12 @@ exports[`BuildQuote View renders correctly 2`] = ` undefined, [ { - "color": "#141618", + "color": "#121314", "fontSize": 30, "textAlign": "center", }, { - "color": "#141618", + "color": "#121314", "fontSize": 20, "padding": 0, }, @@ -16293,7 +16293,7 @@ exports[`BuildQuote View renders correctly 2`] = ` "elevation": 1, "margin": 3.5, "paddingVertical": 5, - "shadowColor": "#0000001A", + "shadowColor": "#0000001a", "shadowOffset": { "height": 2, "width": 0, @@ -16308,8 +16308,8 @@ exports[`BuildQuote View renders correctly 2`] = ` style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -16339,12 +16339,12 @@ exports[`BuildQuote View renders correctly 2`] = ` undefined, [ { - "color": "#141618", + "color": "#121314", "fontSize": 30, "textAlign": "center", }, { - "color": "#141618", + "color": "#121314", "fontSize": 20, "padding": 0, }, @@ -16383,7 +16383,7 @@ exports[`BuildQuote View renders correctly 2`] = ` "elevation": 1, "margin": 3.5, "paddingVertical": 5, - "shadowColor": "#0000001A", + "shadowColor": "#0000001a", "shadowOffset": { "height": 2, "width": 0, @@ -16398,8 +16398,8 @@ exports[`BuildQuote View renders correctly 2`] = ` style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -16429,12 +16429,12 @@ exports[`BuildQuote View renders correctly 2`] = ` undefined, [ { - "color": "#141618", + "color": "#121314", "fontSize": 30, "textAlign": "center", }, { - "color": "#141618", + "color": "#121314", "fontSize": 20, "padding": 0, }, @@ -16464,7 +16464,7 @@ exports[`BuildQuote View renders correctly 2`] = ` "elevation": 1, "margin": 3.5, "paddingVertical": 5, - "shadowColor": "#0000001A", + "shadowColor": "#0000001a", "shadowOffset": { "height": 2, "width": 0, @@ -16479,8 +16479,8 @@ exports[`BuildQuote View renders correctly 2`] = ` style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -16510,12 +16510,12 @@ exports[`BuildQuote View renders correctly 2`] = ` undefined, [ { - "color": "#141618", + "color": "#121314", "fontSize": 30, "textAlign": "center", }, { - "color": "#141618", + "color": "#121314", "fontSize": 20, "padding": 0, }, @@ -16545,7 +16545,7 @@ exports[`BuildQuote View renders correctly 2`] = ` "elevation": 1, "margin": 3.5, "paddingVertical": 5, - "shadowColor": "#0000001A", + "shadowColor": "#0000001a", "shadowOffset": { "height": 2, "width": 0, @@ -16560,8 +16560,8 @@ exports[`BuildQuote View renders correctly 2`] = ` style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -16591,12 +16591,12 @@ exports[`BuildQuote View renders correctly 2`] = ` undefined, [ { - "color": "#141618", + "color": "#121314", "fontSize": 30, "textAlign": "center", }, { - "color": "#141618", + "color": "#121314", "fontSize": 20, "padding": 0, }, @@ -16640,8 +16640,8 @@ exports[`BuildQuote View renders correctly 2`] = ` style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -16671,12 +16671,12 @@ exports[`BuildQuote View renders correctly 2`] = ` undefined, [ { - "color": "#141618", + "color": "#121314", "fontSize": 30, "textAlign": "center", }, { - "color": "#141618", + "color": "#121314", "fontSize": 20, "padding": 0, }, @@ -16706,7 +16706,7 @@ exports[`BuildQuote View renders correctly 2`] = ` "elevation": 1, "margin": 3.5, "paddingVertical": 5, - "shadowColor": "#0000001A", + "shadowColor": "#0000001a", "shadowOffset": { "height": 2, "width": 0, @@ -16721,8 +16721,8 @@ exports[`BuildQuote View renders correctly 2`] = ` style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -16752,12 +16752,12 @@ exports[`BuildQuote View renders correctly 2`] = ` undefined, [ { - "color": "#141618", + "color": "#121314", "fontSize": 30, "textAlign": "center", }, { - "color": "#141618", + "color": "#121314", "fontSize": 20, "padding": 0, }, @@ -16796,7 +16796,7 @@ exports[`BuildQuote View renders correctly 2`] = ` style={ [ { - "color": "#141618", + "color": "#121314", "fontSize": 24, }, undefined, @@ -16839,7 +16839,7 @@ exports[`BuildQuote View renders correctly 2`] = ` "padding": 15, }, { - "backgroundColor": "#0376c9", + "backgroundColor": "#4459ff", "minHeight": 50, }, undefined, @@ -16860,7 +16860,7 @@ exports[`BuildQuote View renders correctly 2`] = ` null, [ { - "fontFamily": "EuclidCircularB-Bold", + "fontFamily": "CentraNo1-Bold", "fontSize": 14, "fontWeight": "600", "textAlign": "center", @@ -17139,8 +17139,8 @@ exports[`BuildQuote View renders correctly when sdkError is present 1`] = ` <Text style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Regular", + "color": "#4459ff", + "fontFamily": "CentraNo1-Book", "fontSize": 23.57142857142857, "fontWeight": "400", } @@ -17175,12 +17175,12 @@ exports[`BuildQuote View renders correctly when sdkError is present 1`] = ` numberOfLines={1} style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Bold", + "fontSize": 16, "fontWeight": "700", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -17199,12 +17199,12 @@ exports[`BuildQuote View renders correctly when sdkError is present 1`] = ` numberOfLines={1} style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -17242,8 +17242,8 @@ exports[`BuildQuote View renders correctly when sdkError is present 1`] = ` <Text style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Regular", + "color": "#4459ff", + "fontFamily": "CentraNo1-Book", "fontSize": 23.57142857142857, "fontWeight": "400", } @@ -17497,7 +17497,7 @@ exports[`BuildQuote View renders correctly when sdkError is present 1`] = ` "textAlign": "center", }, { - "color": "#d73847", + "color": "#ca3542", }, ], { @@ -17523,12 +17523,12 @@ exports[`BuildQuote View renders correctly when sdkError is present 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", + "color": "#121314", + "fontFamily": "CentraNo1-Bold", "fontSize": 18, "fontWeight": "600", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, "marginVertical": 3, "textAlign": "center", } @@ -17548,8 +17548,8 @@ exports[`BuildQuote View renders correctly when sdkError is present 1`] = ` style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -17563,7 +17563,7 @@ exports[`BuildQuote View renders correctly when sdkError is present 1`] = ` undefined, undefined, { - "color": "#6a737d", + "color": "#686e7d", }, undefined, undefined, @@ -17609,7 +17609,7 @@ exports[`BuildQuote View renders correctly when sdkError is present 1`] = ` "padding": 15, }, { - "backgroundColor": "#0376c9", + "backgroundColor": "#4459ff", "minHeight": 50, }, undefined, @@ -17630,7 +17630,7 @@ exports[`BuildQuote View renders correctly when sdkError is present 1`] = ` null, [ { - "fontFamily": "EuclidCircularB-Bold", + "fontFamily": "CentraNo1-Bold", "fontSize": 14, "fontWeight": "600", "textAlign": "center", @@ -17795,8 +17795,8 @@ exports[`BuildQuote View renders correctly when sdkError is present 2`] = ` <Text style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Regular", + "color": "#4459ff", + "fontFamily": "CentraNo1-Book", "fontSize": 23.57142857142857, "fontWeight": "400", } @@ -17831,12 +17831,12 @@ exports[`BuildQuote View renders correctly when sdkError is present 2`] = ` numberOfLines={1} style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Bold", + "fontSize": 16, "fontWeight": "700", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -17855,12 +17855,12 @@ exports[`BuildQuote View renders correctly when sdkError is present 2`] = ` numberOfLines={1} style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -17898,8 +17898,8 @@ exports[`BuildQuote View renders correctly when sdkError is present 2`] = ` <Text style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Regular", + "color": "#4459ff", + "fontFamily": "CentraNo1-Book", "fontSize": 23.57142857142857, "fontWeight": "400", } @@ -18153,7 +18153,7 @@ exports[`BuildQuote View renders correctly when sdkError is present 2`] = ` "textAlign": "center", }, { - "color": "#d73847", + "color": "#ca3542", }, ], { @@ -18179,12 +18179,12 @@ exports[`BuildQuote View renders correctly when sdkError is present 2`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", + "color": "#121314", + "fontFamily": "CentraNo1-Bold", "fontSize": 18, "fontWeight": "600", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, "marginVertical": 3, "textAlign": "center", } @@ -18204,8 +18204,8 @@ exports[`BuildQuote View renders correctly when sdkError is present 2`] = ` style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -18219,7 +18219,7 @@ exports[`BuildQuote View renders correctly when sdkError is present 2`] = ` undefined, undefined, { - "color": "#6a737d", + "color": "#686e7d", }, undefined, undefined, @@ -18265,7 +18265,7 @@ exports[`BuildQuote View renders correctly when sdkError is present 2`] = ` "padding": 15, }, { - "backgroundColor": "#0376c9", + "backgroundColor": "#4459ff", "minHeight": 50, }, undefined, @@ -18286,7 +18286,7 @@ exports[`BuildQuote View renders correctly when sdkError is present 2`] = ` null, [ { - "fontFamily": "EuclidCircularB-Bold", + "fontFamily": "CentraNo1-Bold", "fontSize": 14, "fontWeight": "600", "textAlign": "center", diff --git a/app/components/UI/Ramp/Views/GetStarted/__snapshots__/GetStarted.test.tsx.snap b/app/components/UI/Ramp/Views/GetStarted/__snapshots__/GetStarted.test.tsx.snap index 35f2d047d0b5..0f97bfe71417 100644 --- a/app/components/UI/Ramp/Views/GetStarted/__snapshots__/GetStarted.test.tsx.snap +++ b/app/components/UI/Ramp/Views/GetStarted/__snapshots__/GetStarted.test.tsx.snap @@ -143,12 +143,12 @@ exports[`GetStarted renders correctly 1`] = ` numberOfLines={1} style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Bold", + "fontSize": 16, "fontWeight": "700", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -167,12 +167,12 @@ exports[`GetStarted renders correctly 1`] = ` numberOfLines={1} style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -210,8 +210,8 @@ exports[`GetStarted renders correctly 1`] = ` <Text style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Regular", + "color": "#4459ff", + "fontFamily": "CentraNo1-Book", "fontSize": 23.57142857142857, "fontWeight": "400", } @@ -471,8 +471,8 @@ exports[`GetStarted renders correctly 1`] = ` style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -482,7 +482,7 @@ exports[`GetStarted renders correctly 1`] = ` }, undefined, { - "fontFamily": "EuclidCircularB-Bold", + "fontFamily": "CentraNo1-Bold", "fontWeight": "600", }, undefined, @@ -527,8 +527,8 @@ exports[`GetStarted renders correctly 1`] = ` style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -538,7 +538,7 @@ exports[`GetStarted renders correctly 1`] = ` }, undefined, { - "fontFamily": "EuclidCircularB-Bold", + "fontFamily": "CentraNo1-Bold", "fontWeight": "600", }, undefined, @@ -597,7 +597,7 @@ exports[`GetStarted renders correctly 1`] = ` "padding": 15, }, { - "backgroundColor": "#0376c9", + "backgroundColor": "#4459ff", "minHeight": 50, }, undefined, @@ -618,7 +618,7 @@ exports[`GetStarted renders correctly 1`] = ` null, [ { - "fontFamily": "EuclidCircularB-Bold", + "fontFamily": "CentraNo1-Bold", "fontSize": 14, "fontWeight": "600", "textAlign": "center", @@ -794,12 +794,12 @@ exports[`GetStarted renders correctly 2`] = ` numberOfLines={1} style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Bold", + "fontSize": 16, "fontWeight": "700", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -818,12 +818,12 @@ exports[`GetStarted renders correctly 2`] = ` numberOfLines={1} style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -861,8 +861,8 @@ exports[`GetStarted renders correctly 2`] = ` <Text style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Regular", + "color": "#4459ff", + "fontFamily": "CentraNo1-Book", "fontSize": 23.57142857142857, "fontWeight": "400", } @@ -1122,8 +1122,8 @@ exports[`GetStarted renders correctly 2`] = ` style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -1133,7 +1133,7 @@ exports[`GetStarted renders correctly 2`] = ` }, undefined, { - "fontFamily": "EuclidCircularB-Bold", + "fontFamily": "CentraNo1-Bold", "fontWeight": "600", }, undefined, @@ -1178,8 +1178,8 @@ exports[`GetStarted renders correctly 2`] = ` style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -1189,7 +1189,7 @@ exports[`GetStarted renders correctly 2`] = ` }, undefined, { - "fontFamily": "EuclidCircularB-Bold", + "fontFamily": "CentraNo1-Bold", "fontWeight": "600", }, undefined, @@ -1248,7 +1248,7 @@ exports[`GetStarted renders correctly 2`] = ` "padding": 15, }, { - "backgroundColor": "#0376c9", + "backgroundColor": "#4459ff", "minHeight": 50, }, undefined, @@ -1269,7 +1269,7 @@ exports[`GetStarted renders correctly 2`] = ` null, [ { - "fontFamily": "EuclidCircularB-Bold", + "fontFamily": "CentraNo1-Bold", "fontSize": 14, "fontWeight": "600", "textAlign": "center", @@ -1445,12 +1445,12 @@ exports[`GetStarted renders correctly when getStarted is true 1`] = ` numberOfLines={1} style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Bold", + "fontSize": 16, "fontWeight": "700", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -1469,12 +1469,12 @@ exports[`GetStarted renders correctly when getStarted is true 1`] = ` numberOfLines={1} style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -1512,8 +1512,8 @@ exports[`GetStarted renders correctly when getStarted is true 1`] = ` <Text style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Regular", + "color": "#4459ff", + "fontFamily": "CentraNo1-Book", "fontSize": 23.57142857142857, "fontWeight": "400", } @@ -1872,12 +1872,12 @@ exports[`GetStarted renders correctly when sdkError is present 1`] = ` numberOfLines={1} style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Bold", + "fontSize": 16, "fontWeight": "700", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -1896,12 +1896,12 @@ exports[`GetStarted renders correctly when sdkError is present 1`] = ` numberOfLines={1} style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -1939,8 +1939,8 @@ exports[`GetStarted renders correctly when sdkError is present 1`] = ` <Text style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Regular", + "color": "#4459ff", + "fontFamily": "CentraNo1-Book", "fontSize": 23.57142857142857, "fontWeight": "400", } @@ -2194,7 +2194,7 @@ exports[`GetStarted renders correctly when sdkError is present 1`] = ` "textAlign": "center", }, { - "color": "#d73847", + "color": "#ca3542", }, ], { @@ -2220,12 +2220,12 @@ exports[`GetStarted renders correctly when sdkError is present 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", + "color": "#121314", + "fontFamily": "CentraNo1-Bold", "fontSize": 18, "fontWeight": "600", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, "marginVertical": 3, "textAlign": "center", } @@ -2245,8 +2245,8 @@ exports[`GetStarted renders correctly when sdkError is present 1`] = ` style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -2260,7 +2260,7 @@ exports[`GetStarted renders correctly when sdkError is present 1`] = ` undefined, undefined, { - "color": "#6a737d", + "color": "#686e7d", }, undefined, undefined, @@ -2306,7 +2306,7 @@ exports[`GetStarted renders correctly when sdkError is present 1`] = ` "padding": 15, }, { - "backgroundColor": "#0376c9", + "backgroundColor": "#4459ff", "minHeight": 50, }, undefined, @@ -2327,7 +2327,7 @@ exports[`GetStarted renders correctly when sdkError is present 1`] = ` null, [ { - "fontFamily": "EuclidCircularB-Bold", + "fontFamily": "CentraNo1-Bold", "fontSize": 14, "fontWeight": "600", "textAlign": "center", diff --git a/app/components/UI/Ramp/Views/NetworkSwitcher/__snapshots__/NetworkSwitcher.test.tsx.snap b/app/components/UI/Ramp/Views/NetworkSwitcher/__snapshots__/NetworkSwitcher.test.tsx.snap index 5154d45be504..69ac7e119992 100644 --- a/app/components/UI/Ramp/Views/NetworkSwitcher/__snapshots__/NetworkSwitcher.test.tsx.snap +++ b/app/components/UI/Ramp/Views/NetworkSwitcher/__snapshots__/NetworkSwitcher.test.tsx.snap @@ -143,12 +143,12 @@ exports[`NetworkSwitcher View renders and dismisses network modal when pressing numberOfLines={1} style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Bold", + "fontSize": 16, "fontWeight": "700", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -167,12 +167,12 @@ exports[`NetworkSwitcher View renders and dismisses network modal when pressing numberOfLines={1} style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -210,8 +210,8 @@ exports[`NetworkSwitcher View renders and dismisses network modal when pressing <Text style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Regular", + "color": "#4459ff", + "fontFamily": "CentraNo1-Book", "fontSize": 23.57142857142857, "fontWeight": "400", } @@ -422,12 +422,12 @@ exports[`NetworkSwitcher View renders and dismisses network modal when pressing <RefreshControlMock colors={ [ - "#0376c9", + "#4459ff", ] } onRefresh={[Function]} refreshing={false} - tintColor="#141618" + tintColor="#121314" /> } > @@ -458,8 +458,8 @@ exports[`NetworkSwitcher View renders and dismisses network modal when pressing style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -569,8 +569,8 @@ exports[`NetworkSwitcher View renders and dismisses network modal when pressing style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -578,7 +578,7 @@ exports[`NetworkSwitcher View renders and dismisses network modal when pressing undefined, undefined, { - "fontFamily": "EuclidCircularB-Bold", + "fontFamily": "CentraNo1-Bold", "fontWeight": "600", }, undefined, @@ -620,8 +620,8 @@ exports[`NetworkSwitcher View renders and dismisses network modal when pressing style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -646,7 +646,7 @@ exports[`NetworkSwitcher View renders and dismisses network modal when pressing undefined, undefined, { - "color": "#0376c9", + "color": "#4459ff", }, undefined, undefined, @@ -719,8 +719,8 @@ exports[`NetworkSwitcher View renders and dismisses network modal when pressing style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -728,7 +728,7 @@ exports[`NetworkSwitcher View renders and dismisses network modal when pressing undefined, undefined, { - "fontFamily": "EuclidCircularB-Bold", + "fontFamily": "CentraNo1-Bold", "fontWeight": "600", }, undefined, @@ -770,8 +770,8 @@ exports[`NetworkSwitcher View renders and dismisses network modal when pressing style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -796,7 +796,7 @@ exports[`NetworkSwitcher View renders and dismisses network modal when pressing undefined, undefined, { - "color": "#0376c9", + "color": "#4459ff", }, undefined, undefined, @@ -930,7 +930,7 @@ exports[`NetworkSwitcher View renders and dismisses network modal when pressing <View style={ { - "backgroundColor": "#BBC0C566", + "backgroundColor": "#b7bbc866", "borderRadius": 2, "height": 4, "width": 40, @@ -988,8 +988,8 @@ exports[`NetworkSwitcher View renders and dismisses network modal when pressing accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", + "color": "#121314", + "fontFamily": "CentraNo1-Bold", "fontSize": 18, "fontWeight": "700", "letterSpacing": 0, @@ -1030,7 +1030,7 @@ exports[`NetworkSwitcher View renders and dismisses network modal when pressing { "alignItems": "center", "alignSelf": "center", - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", "borderRadius": 16, "flexDirection": "row", "height": 32, @@ -1047,7 +1047,7 @@ exports[`NetworkSwitcher View renders and dismisses network modal when pressing style={ { "alignItems": "center", - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", "borderRadius": 8, "borderWidth": 1, "height": 16, @@ -1062,8 +1062,8 @@ exports[`NetworkSwitcher View renders and dismisses network modal when pressing accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 10, "fontWeight": "400", "letterSpacing": 0, @@ -1080,13 +1080,13 @@ exports[`NetworkSwitcher View renders and dismisses network modal when pressing numberOfLines={1} style={ { - "color": "#141618", + "color": "#121314", "flexShrink": 1, - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, "marginHorizontal": 8, } } @@ -1099,12 +1099,12 @@ exports[`NetworkSwitcher View renders and dismisses network modal when pressing accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, "textAlign": "center", } } @@ -1116,12 +1116,12 @@ exports[`NetworkSwitcher View renders and dismisses network modal when pressing onPress={[Function]} style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -1137,7 +1137,7 @@ exports[`NetworkSwitcher View renders and dismisses network modal when pressing style={ [ { - "borderColor": "#848c96", + "borderColor": "#b7bbc8", "borderRadius": 10, "borderWidth": 1, "marginVertical": 16, @@ -1152,12 +1152,12 @@ exports[`NetworkSwitcher View renders and dismisses network modal when pressing accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -1167,12 +1167,12 @@ exports[`NetworkSwitcher View renders and dismisses network modal when pressing accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, "marginBottom": 8, } } @@ -1192,12 +1192,12 @@ exports[`NetworkSwitcher View renders and dismisses network modal when pressing accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -1208,12 +1208,12 @@ exports[`NetworkSwitcher View renders and dismisses network modal when pressing accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, "marginBottom": 8, } } @@ -1237,12 +1237,12 @@ exports[`NetworkSwitcher View renders and dismisses network modal when pressing accessibilityRole="text" style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#4459ff", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } testID="accordionheader-title" @@ -1267,7 +1267,7 @@ exports[`NetworkSwitcher View renders and dismisses network modal when pressing testID="accordionheader-arrow-icon-animation" > <SvgMock - color="#0376c9" + color="#4459ff" height={16} name="ArrowDown" style={ @@ -1308,7 +1308,7 @@ exports[`NetworkSwitcher View renders and dismisses network modal when pressing "alignItems": "center", "alignSelf": "flex-start", "backgroundColor": "transparent", - "borderColor": "#0376c9", + "borderColor": "#4459ff", "borderRadius": 24, "borderWidth": 1, "flex": 1, @@ -1324,12 +1324,12 @@ exports[`NetworkSwitcher View renders and dismisses network modal when pressing accessibilityRole="text" style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, + "color": "#4459ff", + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -1347,7 +1347,7 @@ exports[`NetworkSwitcher View renders and dismisses network modal when pressing { "alignItems": "center", "alignSelf": "flex-start", - "backgroundColor": "#0376c9", + "backgroundColor": "#4459ff", "borderRadius": 24, "flex": 1, "flexDirection": "row", @@ -1365,11 +1365,11 @@ exports[`NetworkSwitcher View renders and dismisses network modal when pressing style={ { "color": "#ffffff", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -1447,8 +1447,8 @@ exports[`NetworkSwitcher View renders and dismisses network modal when pressing style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -1495,8 +1495,8 @@ exports[`NetworkSwitcher View renders and dismisses network modal when pressing style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -1521,7 +1521,7 @@ exports[`NetworkSwitcher View renders and dismisses network modal when pressing undefined, undefined, { - "color": "#0376c9", + "color": "#4459ff", }, undefined, undefined, @@ -1594,8 +1594,8 @@ exports[`NetworkSwitcher View renders and dismisses network modal when pressing style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -1642,8 +1642,8 @@ exports[`NetworkSwitcher View renders and dismisses network modal when pressing style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -1668,7 +1668,7 @@ exports[`NetworkSwitcher View renders and dismisses network modal when pressing undefined, undefined, { - "color": "#0376c9", + "color": "#4459ff", }, undefined, undefined, @@ -1842,12 +1842,12 @@ exports[`NetworkSwitcher View renders and dismisses network modal when pressing numberOfLines={1} style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Bold", + "fontSize": 16, "fontWeight": "700", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -1866,12 +1866,12 @@ exports[`NetworkSwitcher View renders and dismisses network modal when pressing numberOfLines={1} style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -1909,8 +1909,8 @@ exports[`NetworkSwitcher View renders and dismisses network modal when pressing <Text style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Regular", + "color": "#4459ff", + "fontFamily": "CentraNo1-Book", "fontSize": 23.57142857142857, "fontWeight": "400", } @@ -2121,12 +2121,12 @@ exports[`NetworkSwitcher View renders and dismisses network modal when pressing <RefreshControlMock colors={ [ - "#0376c9", + "#4459ff", ] } onRefresh={[Function]} refreshing={false} - tintColor="#141618" + tintColor="#121314" /> } > @@ -2157,8 +2157,8 @@ exports[`NetworkSwitcher View renders and dismisses network modal when pressing style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -2268,8 +2268,8 @@ exports[`NetworkSwitcher View renders and dismisses network modal when pressing style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -2277,7 +2277,7 @@ exports[`NetworkSwitcher View renders and dismisses network modal when pressing undefined, undefined, { - "fontFamily": "EuclidCircularB-Bold", + "fontFamily": "CentraNo1-Bold", "fontWeight": "600", }, undefined, @@ -2319,8 +2319,8 @@ exports[`NetworkSwitcher View renders and dismisses network modal when pressing style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -2345,7 +2345,7 @@ exports[`NetworkSwitcher View renders and dismisses network modal when pressing undefined, undefined, { - "color": "#0376c9", + "color": "#4459ff", }, undefined, undefined, @@ -2418,8 +2418,8 @@ exports[`NetworkSwitcher View renders and dismisses network modal when pressing style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -2427,7 +2427,7 @@ exports[`NetworkSwitcher View renders and dismisses network modal when pressing undefined, undefined, { - "fontFamily": "EuclidCircularB-Bold", + "fontFamily": "CentraNo1-Bold", "fontWeight": "600", }, undefined, @@ -2469,8 +2469,8 @@ exports[`NetworkSwitcher View renders and dismisses network modal when pressing style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -2495,7 +2495,7 @@ exports[`NetworkSwitcher View renders and dismisses network modal when pressing undefined, undefined, { - "color": "#0376c9", + "color": "#4459ff", }, undefined, undefined, @@ -2572,8 +2572,8 @@ exports[`NetworkSwitcher View renders and dismisses network modal when pressing style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -2620,8 +2620,8 @@ exports[`NetworkSwitcher View renders and dismisses network modal when pressing style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -2646,7 +2646,7 @@ exports[`NetworkSwitcher View renders and dismisses network modal when pressing undefined, undefined, { - "color": "#0376c9", + "color": "#4459ff", }, undefined, undefined, @@ -2719,8 +2719,8 @@ exports[`NetworkSwitcher View renders and dismisses network modal when pressing style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -2767,8 +2767,8 @@ exports[`NetworkSwitcher View renders and dismisses network modal when pressing style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -2793,7 +2793,7 @@ exports[`NetworkSwitcher View renders and dismisses network modal when pressing undefined, undefined, { - "color": "#0376c9", + "color": "#4459ff", }, undefined, undefined, @@ -2967,12 +2967,12 @@ exports[`NetworkSwitcher View renders correctly 1`] = ` numberOfLines={1} style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Bold", + "fontSize": 16, "fontWeight": "700", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -2991,12 +2991,12 @@ exports[`NetworkSwitcher View renders correctly 1`] = ` numberOfLines={1} style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -3034,8 +3034,8 @@ exports[`NetworkSwitcher View renders correctly 1`] = ` <Text style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Regular", + "color": "#4459ff", + "fontFamily": "CentraNo1-Book", "fontSize": 23.57142857142857, "fontWeight": "400", } @@ -3246,12 +3246,12 @@ exports[`NetworkSwitcher View renders correctly 1`] = ` <RefreshControlMock colors={ [ - "#0376c9", + "#4459ff", ] } onRefresh={[Function]} refreshing={false} - tintColor="#141618" + tintColor="#121314" /> } > @@ -3282,8 +3282,8 @@ exports[`NetworkSwitcher View renders correctly 1`] = ` style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -3393,8 +3393,8 @@ exports[`NetworkSwitcher View renders correctly 1`] = ` style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -3402,7 +3402,7 @@ exports[`NetworkSwitcher View renders correctly 1`] = ` undefined, undefined, { - "fontFamily": "EuclidCircularB-Bold", + "fontFamily": "CentraNo1-Bold", "fontWeight": "600", }, undefined, @@ -3444,8 +3444,8 @@ exports[`NetworkSwitcher View renders correctly 1`] = ` style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -3470,7 +3470,7 @@ exports[`NetworkSwitcher View renders correctly 1`] = ` undefined, undefined, { - "color": "#0376c9", + "color": "#4459ff", }, undefined, undefined, @@ -3543,8 +3543,8 @@ exports[`NetworkSwitcher View renders correctly 1`] = ` style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -3552,7 +3552,7 @@ exports[`NetworkSwitcher View renders correctly 1`] = ` undefined, undefined, { - "fontFamily": "EuclidCircularB-Bold", + "fontFamily": "CentraNo1-Bold", "fontWeight": "600", }, undefined, @@ -3594,8 +3594,8 @@ exports[`NetworkSwitcher View renders correctly 1`] = ` style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -3620,7 +3620,7 @@ exports[`NetworkSwitcher View renders correctly 1`] = ` undefined, undefined, { - "color": "#0376c9", + "color": "#4459ff", }, undefined, undefined, @@ -3697,8 +3697,8 @@ exports[`NetworkSwitcher View renders correctly 1`] = ` style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -3745,8 +3745,8 @@ exports[`NetworkSwitcher View renders correctly 1`] = ` style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -3771,7 +3771,7 @@ exports[`NetworkSwitcher View renders correctly 1`] = ` undefined, undefined, { - "color": "#0376c9", + "color": "#4459ff", }, undefined, undefined, @@ -3844,8 +3844,8 @@ exports[`NetworkSwitcher View renders correctly 1`] = ` style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -3892,8 +3892,8 @@ exports[`NetworkSwitcher View renders correctly 1`] = ` style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -3918,7 +3918,7 @@ exports[`NetworkSwitcher View renders correctly 1`] = ` undefined, undefined, { - "color": "#0376c9", + "color": "#4459ff", }, undefined, undefined, @@ -4092,12 +4092,12 @@ exports[`NetworkSwitcher View renders correctly 2`] = ` numberOfLines={1} style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Bold", + "fontSize": 16, "fontWeight": "700", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -4116,12 +4116,12 @@ exports[`NetworkSwitcher View renders correctly 2`] = ` numberOfLines={1} style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -4159,8 +4159,8 @@ exports[`NetworkSwitcher View renders correctly 2`] = ` <Text style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Regular", + "color": "#4459ff", + "fontFamily": "CentraNo1-Book", "fontSize": 23.57142857142857, "fontWeight": "400", } @@ -4371,12 +4371,12 @@ exports[`NetworkSwitcher View renders correctly 2`] = ` <RefreshControlMock colors={ [ - "#0376c9", + "#4459ff", ] } onRefresh={[Function]} refreshing={false} - tintColor="#141618" + tintColor="#121314" /> } > @@ -4407,8 +4407,8 @@ exports[`NetworkSwitcher View renders correctly 2`] = ` style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -4518,8 +4518,8 @@ exports[`NetworkSwitcher View renders correctly 2`] = ` style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -4527,7 +4527,7 @@ exports[`NetworkSwitcher View renders correctly 2`] = ` undefined, undefined, { - "fontFamily": "EuclidCircularB-Bold", + "fontFamily": "CentraNo1-Bold", "fontWeight": "600", }, undefined, @@ -4569,8 +4569,8 @@ exports[`NetworkSwitcher View renders correctly 2`] = ` style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -4595,7 +4595,7 @@ exports[`NetworkSwitcher View renders correctly 2`] = ` undefined, undefined, { - "color": "#0376c9", + "color": "#4459ff", }, undefined, undefined, @@ -4668,8 +4668,8 @@ exports[`NetworkSwitcher View renders correctly 2`] = ` style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -4677,7 +4677,7 @@ exports[`NetworkSwitcher View renders correctly 2`] = ` undefined, undefined, { - "fontFamily": "EuclidCircularB-Bold", + "fontFamily": "CentraNo1-Bold", "fontWeight": "600", }, undefined, @@ -4719,8 +4719,8 @@ exports[`NetworkSwitcher View renders correctly 2`] = ` style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -4745,7 +4745,7 @@ exports[`NetworkSwitcher View renders correctly 2`] = ` undefined, undefined, { - "color": "#0376c9", + "color": "#4459ff", }, undefined, undefined, @@ -4822,8 +4822,8 @@ exports[`NetworkSwitcher View renders correctly 2`] = ` style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -4870,8 +4870,8 @@ exports[`NetworkSwitcher View renders correctly 2`] = ` style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -4896,7 +4896,7 @@ exports[`NetworkSwitcher View renders correctly 2`] = ` undefined, undefined, { - "color": "#0376c9", + "color": "#4459ff", }, undefined, undefined, @@ -4969,8 +4969,8 @@ exports[`NetworkSwitcher View renders correctly 2`] = ` style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -5017,8 +5017,8 @@ exports[`NetworkSwitcher View renders correctly 2`] = ` style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -5043,7 +5043,7 @@ exports[`NetworkSwitcher View renders correctly 2`] = ` undefined, undefined, { - "color": "#0376c9", + "color": "#4459ff", }, undefined, undefined, @@ -5217,12 +5217,12 @@ exports[`NetworkSwitcher View renders correctly while loading 1`] = ` numberOfLines={1} style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Bold", + "fontSize": 16, "fontWeight": "700", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -5241,12 +5241,12 @@ exports[`NetworkSwitcher View renders correctly while loading 1`] = ` numberOfLines={1} style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -5284,8 +5284,8 @@ exports[`NetworkSwitcher View renders correctly while loading 1`] = ` <Text style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Regular", + "color": "#4459ff", + "fontFamily": "CentraNo1-Book", "fontSize": 23.57142857142857, "fontWeight": "400", } @@ -5496,12 +5496,12 @@ exports[`NetworkSwitcher View renders correctly while loading 1`] = ` <RefreshControlMock colors={ [ - "#0376c9", + "#4459ff", ] } onRefresh={[Function]} refreshing={true} - tintColor="#141618" + tintColor="#121314" /> } > @@ -5532,8 +5532,8 @@ exports[`NetworkSwitcher View renders correctly while loading 1`] = ` style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -5626,7 +5626,7 @@ exports[`NetworkSwitcher View renders correctly while loading 1`] = ` style={ [ { - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", "borderRadius": 30, "padding": 14, }, @@ -5672,7 +5672,7 @@ exports[`NetworkSwitcher View renders correctly while loading 1`] = ` style={ [ { - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", "borderRadius": 30, "padding": 14, }, @@ -5740,7 +5740,7 @@ exports[`NetworkSwitcher View renders correctly while loading 1`] = ` style={ [ { - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", "borderRadius": 30, "padding": 14, }, @@ -5786,7 +5786,7 @@ exports[`NetworkSwitcher View renders correctly while loading 1`] = ` style={ [ { - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", "borderRadius": 30, "padding": 14, }, @@ -5854,7 +5854,7 @@ exports[`NetworkSwitcher View renders correctly while loading 1`] = ` style={ [ { - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", "borderRadius": 30, "padding": 14, }, @@ -5900,7 +5900,7 @@ exports[`NetworkSwitcher View renders correctly while loading 1`] = ` style={ [ { - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", "borderRadius": 30, "padding": 14, }, @@ -5968,7 +5968,7 @@ exports[`NetworkSwitcher View renders correctly while loading 1`] = ` style={ [ { - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", "borderRadius": 30, "padding": 14, }, @@ -6014,7 +6014,7 @@ exports[`NetworkSwitcher View renders correctly while loading 1`] = ` style={ [ { - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", "borderRadius": 30, "padding": 14, }, @@ -6082,7 +6082,7 @@ exports[`NetworkSwitcher View renders correctly while loading 1`] = ` style={ [ { - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", "borderRadius": 30, "padding": 14, }, @@ -6128,7 +6128,7 @@ exports[`NetworkSwitcher View renders correctly while loading 1`] = ` style={ [ { - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", "borderRadius": 30, "padding": 14, }, @@ -6196,7 +6196,7 @@ exports[`NetworkSwitcher View renders correctly while loading 1`] = ` style={ [ { - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", "borderRadius": 30, "padding": 14, }, @@ -6242,7 +6242,7 @@ exports[`NetworkSwitcher View renders correctly while loading 1`] = ` style={ [ { - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", "borderRadius": 30, "padding": 14, }, @@ -6310,7 +6310,7 @@ exports[`NetworkSwitcher View renders correctly while loading 1`] = ` style={ [ { - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", "borderRadius": 30, "padding": 14, }, @@ -6356,7 +6356,7 @@ exports[`NetworkSwitcher View renders correctly while loading 1`] = ` style={ [ { - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", "borderRadius": 30, "padding": 14, }, @@ -6544,12 +6544,12 @@ exports[`NetworkSwitcher View renders correctly while loading 2`] = ` numberOfLines={1} style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Bold", + "fontSize": 16, "fontWeight": "700", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -6568,12 +6568,12 @@ exports[`NetworkSwitcher View renders correctly while loading 2`] = ` numberOfLines={1} style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -6611,8 +6611,8 @@ exports[`NetworkSwitcher View renders correctly while loading 2`] = ` <Text style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Regular", + "color": "#4459ff", + "fontFamily": "CentraNo1-Book", "fontSize": 23.57142857142857, "fontWeight": "400", } @@ -6823,12 +6823,12 @@ exports[`NetworkSwitcher View renders correctly while loading 2`] = ` <RefreshControlMock colors={ [ - "#0376c9", + "#4459ff", ] } onRefresh={[Function]} refreshing={true} - tintColor="#141618" + tintColor="#121314" /> } > @@ -6859,8 +6859,8 @@ exports[`NetworkSwitcher View renders correctly while loading 2`] = ` style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -6953,7 +6953,7 @@ exports[`NetworkSwitcher View renders correctly while loading 2`] = ` style={ [ { - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", "borderRadius": 30, "padding": 14, }, @@ -6999,7 +6999,7 @@ exports[`NetworkSwitcher View renders correctly while loading 2`] = ` style={ [ { - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", "borderRadius": 30, "padding": 14, }, @@ -7067,7 +7067,7 @@ exports[`NetworkSwitcher View renders correctly while loading 2`] = ` style={ [ { - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", "borderRadius": 30, "padding": 14, }, @@ -7113,7 +7113,7 @@ exports[`NetworkSwitcher View renders correctly while loading 2`] = ` style={ [ { - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", "borderRadius": 30, "padding": 14, }, @@ -7181,7 +7181,7 @@ exports[`NetworkSwitcher View renders correctly while loading 2`] = ` style={ [ { - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", "borderRadius": 30, "padding": 14, }, @@ -7227,7 +7227,7 @@ exports[`NetworkSwitcher View renders correctly while loading 2`] = ` style={ [ { - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", "borderRadius": 30, "padding": 14, }, @@ -7295,7 +7295,7 @@ exports[`NetworkSwitcher View renders correctly while loading 2`] = ` style={ [ { - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", "borderRadius": 30, "padding": 14, }, @@ -7341,7 +7341,7 @@ exports[`NetworkSwitcher View renders correctly while loading 2`] = ` style={ [ { - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", "borderRadius": 30, "padding": 14, }, @@ -7409,7 +7409,7 @@ exports[`NetworkSwitcher View renders correctly while loading 2`] = ` style={ [ { - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", "borderRadius": 30, "padding": 14, }, @@ -7455,7 +7455,7 @@ exports[`NetworkSwitcher View renders correctly while loading 2`] = ` style={ [ { - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", "borderRadius": 30, "padding": 14, }, @@ -7523,7 +7523,7 @@ exports[`NetworkSwitcher View renders correctly while loading 2`] = ` style={ [ { - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", "borderRadius": 30, "padding": 14, }, @@ -7569,7 +7569,7 @@ exports[`NetworkSwitcher View renders correctly while loading 2`] = ` style={ [ { - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", "borderRadius": 30, "padding": 14, }, @@ -7637,7 +7637,7 @@ exports[`NetworkSwitcher View renders correctly while loading 2`] = ` style={ [ { - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", "borderRadius": 30, "padding": 14, }, @@ -7683,7 +7683,7 @@ exports[`NetworkSwitcher View renders correctly while loading 2`] = ` style={ [ { - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", "borderRadius": 30, "padding": 14, }, @@ -7871,12 +7871,12 @@ exports[`NetworkSwitcher View renders correctly with errors 1`] = ` numberOfLines={1} style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Bold", + "fontSize": 16, "fontWeight": "700", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -7895,12 +7895,12 @@ exports[`NetworkSwitcher View renders correctly with errors 1`] = ` numberOfLines={1} style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -7938,8 +7938,8 @@ exports[`NetworkSwitcher View renders correctly with errors 1`] = ` <Text style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Regular", + "color": "#4459ff", + "fontFamily": "CentraNo1-Book", "fontSize": 23.57142857142857, "fontWeight": "400", } @@ -8193,7 +8193,7 @@ exports[`NetworkSwitcher View renders correctly with errors 1`] = ` "textAlign": "center", }, { - "color": "#d73847", + "color": "#ca3542", }, ], { @@ -8219,12 +8219,12 @@ exports[`NetworkSwitcher View renders correctly with errors 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", + "color": "#121314", + "fontFamily": "CentraNo1-Bold", "fontSize": 18, "fontWeight": "600", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, "marginVertical": 3, "textAlign": "center", } @@ -8244,8 +8244,8 @@ exports[`NetworkSwitcher View renders correctly with errors 1`] = ` style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -8259,7 +8259,7 @@ exports[`NetworkSwitcher View renders correctly with errors 1`] = ` undefined, undefined, { - "color": "#6a737d", + "color": "#686e7d", }, undefined, undefined, @@ -8305,7 +8305,7 @@ exports[`NetworkSwitcher View renders correctly with errors 1`] = ` "padding": 15, }, { - "backgroundColor": "#0376c9", + "backgroundColor": "#4459ff", "minHeight": 50, }, undefined, @@ -8326,7 +8326,7 @@ exports[`NetworkSwitcher View renders correctly with errors 1`] = ` null, [ { - "fontFamily": "EuclidCircularB-Bold", + "fontFamily": "CentraNo1-Bold", "fontSize": 14, "fontWeight": "600", "textAlign": "center", @@ -8504,12 +8504,12 @@ exports[`NetworkSwitcher View renders correctly with errors 2`] = ` numberOfLines={1} style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Bold", + "fontSize": 16, "fontWeight": "700", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -8528,12 +8528,12 @@ exports[`NetworkSwitcher View renders correctly with errors 2`] = ` numberOfLines={1} style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -8571,8 +8571,8 @@ exports[`NetworkSwitcher View renders correctly with errors 2`] = ` <Text style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Regular", + "color": "#4459ff", + "fontFamily": "CentraNo1-Book", "fontSize": 23.57142857142857, "fontWeight": "400", } @@ -8826,7 +8826,7 @@ exports[`NetworkSwitcher View renders correctly with errors 2`] = ` "textAlign": "center", }, { - "color": "#d73847", + "color": "#ca3542", }, ], { @@ -8852,12 +8852,12 @@ exports[`NetworkSwitcher View renders correctly with errors 2`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", + "color": "#121314", + "fontFamily": "CentraNo1-Bold", "fontSize": 18, "fontWeight": "600", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, "marginVertical": 3, "textAlign": "center", } @@ -8877,8 +8877,8 @@ exports[`NetworkSwitcher View renders correctly with errors 2`] = ` style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -8892,7 +8892,7 @@ exports[`NetworkSwitcher View renders correctly with errors 2`] = ` undefined, undefined, { - "color": "#6a737d", + "color": "#686e7d", }, undefined, undefined, @@ -8938,7 +8938,7 @@ exports[`NetworkSwitcher View renders correctly with errors 2`] = ` "padding": 15, }, { - "backgroundColor": "#0376c9", + "backgroundColor": "#4459ff", "minHeight": 50, }, undefined, @@ -8959,7 +8959,7 @@ exports[`NetworkSwitcher View renders correctly with errors 2`] = ` null, [ { - "fontFamily": "EuclidCircularB-Bold", + "fontFamily": "CentraNo1-Bold", "fontSize": 14, "fontWeight": "600", "textAlign": "center", @@ -9137,12 +9137,12 @@ exports[`NetworkSwitcher View renders correctly with no data 1`] = ` numberOfLines={1} style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Bold", + "fontSize": 16, "fontWeight": "700", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -9161,12 +9161,12 @@ exports[`NetworkSwitcher View renders correctly with no data 1`] = ` numberOfLines={1} style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -9204,8 +9204,8 @@ exports[`NetworkSwitcher View renders correctly with no data 1`] = ` <Text style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Regular", + "color": "#4459ff", + "fontFamily": "CentraNo1-Book", "fontSize": 23.57142857142857, "fontWeight": "400", } @@ -9459,7 +9459,7 @@ exports[`NetworkSwitcher View renders correctly with no data 1`] = ` "textAlign": "center", }, { - "color": "#d73847", + "color": "#ca3542", }, ], { @@ -9485,12 +9485,12 @@ exports[`NetworkSwitcher View renders correctly with no data 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", + "color": "#121314", + "fontFamily": "CentraNo1-Bold", "fontSize": 18, "fontWeight": "600", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, "marginVertical": 3, "textAlign": "center", } @@ -9510,8 +9510,8 @@ exports[`NetworkSwitcher View renders correctly with no data 1`] = ` style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -9525,7 +9525,7 @@ exports[`NetworkSwitcher View renders correctly with no data 1`] = ` undefined, undefined, { - "color": "#6a737d", + "color": "#686e7d", }, undefined, undefined, @@ -9571,7 +9571,7 @@ exports[`NetworkSwitcher View renders correctly with no data 1`] = ` "padding": 15, }, { - "backgroundColor": "#0376c9", + "backgroundColor": "#4459ff", "minHeight": 50, }, undefined, @@ -9592,7 +9592,7 @@ exports[`NetworkSwitcher View renders correctly with no data 1`] = ` null, [ { - "fontFamily": "EuclidCircularB-Bold", + "fontFamily": "CentraNo1-Bold", "fontSize": 14, "fontWeight": "600", "textAlign": "center", diff --git a/app/components/UI/Ramp/Views/OrderDetails/__snapshots__/OrderDetails.test.tsx.snap b/app/components/UI/Ramp/Views/OrderDetails/__snapshots__/OrderDetails.test.tsx.snap index 13fedac382af..1a591fff7c30 100644 --- a/app/components/UI/Ramp/Views/OrderDetails/__snapshots__/OrderDetails.test.tsx.snap +++ b/app/components/UI/Ramp/Views/OrderDetails/__snapshots__/OrderDetails.test.tsx.snap @@ -130,8 +130,8 @@ exports[`OrderDetails renders a cancelled order 1`] = ` <Text style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Regular", + "color": "#4459ff", + "fontFamily": "CentraNo1-Book", "fontSize": 23.57142857142857, "fontWeight": "400", } @@ -166,12 +166,12 @@ exports[`OrderDetails renders a cancelled order 1`] = ` numberOfLines={1} style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Bold", + "fontSize": 16, "fontWeight": "700", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -190,12 +190,12 @@ exports[`OrderDetails renders a cancelled order 1`] = ` numberOfLines={1} style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -422,12 +422,12 @@ exports[`OrderDetails renders a cancelled order 1`] = ` <RefreshControlMock colors={ [ - "#0376c9", + "#4459ff", ] } onRefresh={[Function]} refreshing={false} - tintColor="#141618" + tintColor="#121314" /> } > @@ -483,9 +483,9 @@ exports[`OrderDetails renders a cancelled order 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 16, + "color": "#121314", + "fontFamily": "CentraNo1-Medium", + "fontSize": 18, "fontWeight": "500", "letterSpacing": 0, "lineHeight": 24, @@ -499,12 +499,12 @@ exports[`OrderDetails renders a cancelled order 1`] = ` accessibilityRole="text" style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, "textAlign": "center", } } @@ -524,8 +524,8 @@ exports[`OrderDetails renders a cancelled order 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", + "color": "#121314", + "fontFamily": "CentraNo1-Medium", "fontSize": 24, "fontWeight": "500", "letterSpacing": 0, @@ -542,12 +542,12 @@ exports[`OrderDetails renders a cancelled order 1`] = ` accessibilityRole="text" style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, "textAlign": "center", } } @@ -572,7 +572,7 @@ exports[`OrderDetails renders a cancelled order 1`] = ` style={ [ { - "borderColor": "#848c96", + "borderColor": "#b7bbc8", "borderRadius": 8, "borderWidth": 1.5, "padding": 16, @@ -600,7 +600,7 @@ exports[`OrderDetails renders a cancelled order 1`] = ` [ { "alignItems": "center", - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", "borderRadius": 100, "flexDirection": "row", "flexShrink": 1, @@ -619,7 +619,7 @@ exports[`OrderDetails renders a cancelled order 1`] = ` <View placeholderStyle={ { - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", } } useNativeDriver={true} @@ -667,7 +667,7 @@ exports[`OrderDetails renders a cancelled order 1`] = ` "backgroundColor": "#eee", }, { - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", }, ] } @@ -679,8 +679,8 @@ exports[`OrderDetails renders a cancelled order 1`] = ` style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -698,7 +698,7 @@ exports[`OrderDetails renders a cancelled order 1`] = ` undefined, undefined, { - "color": "#141618", + "color": "#121314", }, undefined, undefined, @@ -769,12 +769,12 @@ exports[`OrderDetails renders a cancelled order 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -803,12 +803,12 @@ exports[`OrderDetails renders a cancelled order 1`] = ` selectable={true} style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Bold", + "fontSize": 14, "fontWeight": "700", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } /> @@ -853,12 +853,12 @@ exports[`OrderDetails renders a cancelled order 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -886,12 +886,12 @@ exports[`OrderDetails renders a cancelled order 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Bold", + "fontSize": 14, "fontWeight": "700", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -932,12 +932,12 @@ exports[`OrderDetails renders a cancelled order 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -983,12 +983,12 @@ exports[`OrderDetails renders a cancelled order 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -1016,12 +1016,12 @@ exports[`OrderDetails renders a cancelled order 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Bold", + "fontSize": 14, "fontWeight": "700", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -1077,12 +1077,12 @@ exports[`OrderDetails renders a cancelled order 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -1110,12 +1110,12 @@ exports[`OrderDetails renders a cancelled order 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Bold", + "fontSize": 14, "fontWeight": "700", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -1162,12 +1162,12 @@ exports[`OrderDetails renders a cancelled order 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -1197,12 +1197,12 @@ exports[`OrderDetails renders a cancelled order 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Bold", + "fontSize": 14, "fontWeight": "700", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -1250,12 +1250,12 @@ exports[`OrderDetails renders a cancelled order 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -1283,12 +1283,12 @@ exports[`OrderDetails renders a cancelled order 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Bold", + "fontSize": 14, "fontWeight": "700", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -1301,7 +1301,7 @@ exports[`OrderDetails renders a cancelled order 1`] = ` <View style={ { - "backgroundColor": "#BBC0C566", + "backgroundColor": "#b7bbc866", "height": 1, "marginVertical": 12, } @@ -1344,12 +1344,12 @@ exports[`OrderDetails renders a cancelled order 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -1377,12 +1377,12 @@ exports[`OrderDetails renders a cancelled order 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Bold", + "fontSize": 14, "fontWeight": "700", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -1424,7 +1424,7 @@ exports[`OrderDetails renders a cancelled order 1`] = ` "padding": 15, }, { - "backgroundColor": "#0376c9", + "backgroundColor": "#4459ff", "minHeight": 50, }, undefined, @@ -1445,7 +1445,7 @@ exports[`OrderDetails renders a cancelled order 1`] = ` null, [ { - "fontFamily": "EuclidCircularB-Bold", + "fontFamily": "CentraNo1-Bold", "fontSize": 14, "fontWeight": "600", "textAlign": "center", @@ -1610,8 +1610,8 @@ exports[`OrderDetails renders a completed order 1`] = ` <Text style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Regular", + "color": "#4459ff", + "fontFamily": "CentraNo1-Book", "fontSize": 23.57142857142857, "fontWeight": "400", } @@ -1646,12 +1646,12 @@ exports[`OrderDetails renders a completed order 1`] = ` numberOfLines={1} style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Bold", + "fontSize": 16, "fontWeight": "700", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -1670,12 +1670,12 @@ exports[`OrderDetails renders a completed order 1`] = ` numberOfLines={1} style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -1902,12 +1902,12 @@ exports[`OrderDetails renders a completed order 1`] = ` <RefreshControlMock colors={ [ - "#0376c9", + "#4459ff", ] } onRefresh={[Function]} refreshing={false} - tintColor="#141618" + tintColor="#121314" /> } > @@ -1954,7 +1954,7 @@ exports[`OrderDetails renders a completed order 1`] = ` style={ [ { - "color": "#1c8234", + "color": "#1c7e33", "fontSize": 32, }, undefined, @@ -1980,9 +1980,9 @@ exports[`OrderDetails renders a completed order 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 16, + "color": "#121314", + "fontFamily": "CentraNo1-Medium", + "fontSize": 18, "fontWeight": "500", "letterSpacing": 0, "lineHeight": 24, @@ -1996,12 +1996,12 @@ exports[`OrderDetails renders a completed order 1`] = ` accessibilityRole="text" style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, "textAlign": "center", } } @@ -2021,8 +2021,8 @@ exports[`OrderDetails renders a completed order 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", + "color": "#121314", + "fontFamily": "CentraNo1-Medium", "fontSize": 24, "fontWeight": "500", "letterSpacing": 0, @@ -2039,12 +2039,12 @@ exports[`OrderDetails renders a completed order 1`] = ` accessibilityRole="text" style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, "textAlign": "center", } } @@ -2069,7 +2069,7 @@ exports[`OrderDetails renders a completed order 1`] = ` style={ [ { - "borderColor": "#848c96", + "borderColor": "#b7bbc8", "borderRadius": 8, "borderWidth": 1.5, "padding": 16, @@ -2097,7 +2097,7 @@ exports[`OrderDetails renders a completed order 1`] = ` [ { "alignItems": "center", - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", "borderRadius": 100, "flexDirection": "row", "flexShrink": 1, @@ -2116,7 +2116,7 @@ exports[`OrderDetails renders a completed order 1`] = ` <View placeholderStyle={ { - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", } } useNativeDriver={true} @@ -2164,7 +2164,7 @@ exports[`OrderDetails renders a completed order 1`] = ` "backgroundColor": "#eee", }, { - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", }, ] } @@ -2176,8 +2176,8 @@ exports[`OrderDetails renders a completed order 1`] = ` style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -2195,7 +2195,7 @@ exports[`OrderDetails renders a completed order 1`] = ` undefined, undefined, { - "color": "#141618", + "color": "#121314", }, undefined, undefined, @@ -2266,12 +2266,12 @@ exports[`OrderDetails renders a completed order 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -2300,12 +2300,12 @@ exports[`OrderDetails renders a completed order 1`] = ` selectable={true} style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Bold", + "fontSize": 14, "fontWeight": "700", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } /> @@ -2350,12 +2350,12 @@ exports[`OrderDetails renders a completed order 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -2383,12 +2383,12 @@ exports[`OrderDetails renders a completed order 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Bold", + "fontSize": 14, "fontWeight": "700", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -2429,12 +2429,12 @@ exports[`OrderDetails renders a completed order 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -2480,12 +2480,12 @@ exports[`OrderDetails renders a completed order 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -2513,12 +2513,12 @@ exports[`OrderDetails renders a completed order 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Bold", + "fontSize": 14, "fontWeight": "700", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -2574,12 +2574,12 @@ exports[`OrderDetails renders a completed order 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -2607,12 +2607,12 @@ exports[`OrderDetails renders a completed order 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Bold", + "fontSize": 14, "fontWeight": "700", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -2659,12 +2659,12 @@ exports[`OrderDetails renders a completed order 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -2694,12 +2694,12 @@ exports[`OrderDetails renders a completed order 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Bold", + "fontSize": 14, "fontWeight": "700", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -2747,12 +2747,12 @@ exports[`OrderDetails renders a completed order 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -2780,12 +2780,12 @@ exports[`OrderDetails renders a completed order 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Bold", + "fontSize": 14, "fontWeight": "700", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -2798,7 +2798,7 @@ exports[`OrderDetails renders a completed order 1`] = ` <View style={ { - "backgroundColor": "#BBC0C566", + "backgroundColor": "#b7bbc866", "height": 1, "marginVertical": 12, } @@ -2841,12 +2841,12 @@ exports[`OrderDetails renders a completed order 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -2874,12 +2874,12 @@ exports[`OrderDetails renders a completed order 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Bold", + "fontSize": 14, "fontWeight": "700", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -2921,7 +2921,7 @@ exports[`OrderDetails renders a completed order 1`] = ` "padding": 15, }, { - "backgroundColor": "#0376c9", + "backgroundColor": "#4459ff", "minHeight": 50, }, undefined, @@ -2942,7 +2942,7 @@ exports[`OrderDetails renders a completed order 1`] = ` null, [ { - "fontFamily": "EuclidCircularB-Bold", + "fontFamily": "CentraNo1-Bold", "fontSize": 14, "fontWeight": "600", "textAlign": "center", @@ -3107,8 +3107,8 @@ exports[`OrderDetails renders a created order 1`] = ` <Text style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Regular", + "color": "#4459ff", + "fontFamily": "CentraNo1-Book", "fontSize": 23.57142857142857, "fontWeight": "400", } @@ -3143,12 +3143,12 @@ exports[`OrderDetails renders a created order 1`] = ` numberOfLines={1} style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Bold", + "fontSize": 16, "fontWeight": "700", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -3167,12 +3167,12 @@ exports[`OrderDetails renders a created order 1`] = ` numberOfLines={1} style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -3399,12 +3399,12 @@ exports[`OrderDetails renders a created order 1`] = ` <RefreshControlMock colors={ [ - "#0376c9", + "#4459ff", ] } onRefresh={[Function]} refreshing={false} - tintColor="#141618" + tintColor="#121314" /> } > @@ -3449,7 +3449,7 @@ exports[`OrderDetails renders a created order 1`] = ` <View style={ { - "borderColor": "#f2f4f6", + "borderColor": "#f3f5f9", "borderRadius": 64, "borderWidth": 3.5, "height": 36, @@ -3479,7 +3479,7 @@ exports[`OrderDetails renders a created order 1`] = ` style={ [ { - "color": "#0376c9", + "color": "#4459ff", "fontSize": 36, }, undefined, @@ -3507,9 +3507,9 @@ exports[`OrderDetails renders a created order 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 16, + "color": "#121314", + "fontFamily": "CentraNo1-Medium", + "fontSize": 18, "fontWeight": "500", "letterSpacing": 0, "lineHeight": 24, @@ -3532,8 +3532,8 @@ exports[`OrderDetails renders a created order 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", + "color": "#121314", + "fontFamily": "CentraNo1-Medium", "fontSize": 24, "fontWeight": "500", "letterSpacing": 0, @@ -3550,12 +3550,12 @@ exports[`OrderDetails renders a created order 1`] = ` accessibilityRole="text" style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, "textAlign": "center", } } @@ -3580,7 +3580,7 @@ exports[`OrderDetails renders a created order 1`] = ` style={ [ { - "borderColor": "#848c96", + "borderColor": "#b7bbc8", "borderRadius": 8, "borderWidth": 1.5, "padding": 16, @@ -3608,7 +3608,7 @@ exports[`OrderDetails renders a created order 1`] = ` [ { "alignItems": "center", - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", "borderRadius": 100, "flexDirection": "row", "flexShrink": 1, @@ -3627,7 +3627,7 @@ exports[`OrderDetails renders a created order 1`] = ` <View placeholderStyle={ { - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", } } useNativeDriver={true} @@ -3675,7 +3675,7 @@ exports[`OrderDetails renders a created order 1`] = ` "backgroundColor": "#eee", }, { - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", }, ] } @@ -3687,8 +3687,8 @@ exports[`OrderDetails renders a created order 1`] = ` style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -3706,7 +3706,7 @@ exports[`OrderDetails renders a created order 1`] = ` undefined, undefined, { - "color": "#141618", + "color": "#121314", }, undefined, undefined, @@ -3777,12 +3777,12 @@ exports[`OrderDetails renders a created order 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -3811,12 +3811,12 @@ exports[`OrderDetails renders a created order 1`] = ` selectable={true} style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Bold", + "fontSize": 14, "fontWeight": "700", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } /> @@ -3861,12 +3861,12 @@ exports[`OrderDetails renders a created order 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -3894,12 +3894,12 @@ exports[`OrderDetails renders a created order 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Bold", + "fontSize": 14, "fontWeight": "700", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -3940,12 +3940,12 @@ exports[`OrderDetails renders a created order 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -3991,12 +3991,12 @@ exports[`OrderDetails renders a created order 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -4024,12 +4024,12 @@ exports[`OrderDetails renders a created order 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Bold", + "fontSize": 14, "fontWeight": "700", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -4085,12 +4085,12 @@ exports[`OrderDetails renders a created order 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -4118,12 +4118,12 @@ exports[`OrderDetails renders a created order 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Bold", + "fontSize": 14, "fontWeight": "700", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -4170,12 +4170,12 @@ exports[`OrderDetails renders a created order 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -4205,12 +4205,12 @@ exports[`OrderDetails renders a created order 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Bold", + "fontSize": 14, "fontWeight": "700", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -4258,12 +4258,12 @@ exports[`OrderDetails renders a created order 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -4291,12 +4291,12 @@ exports[`OrderDetails renders a created order 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Bold", + "fontSize": 14, "fontWeight": "700", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -4309,7 +4309,7 @@ exports[`OrderDetails renders a created order 1`] = ` <View style={ { - "backgroundColor": "#BBC0C566", + "backgroundColor": "#b7bbc866", "height": 1, "marginVertical": 12, } @@ -4352,12 +4352,12 @@ exports[`OrderDetails renders a created order 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -4385,12 +4385,12 @@ exports[`OrderDetails renders a created order 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Bold", + "fontSize": 14, "fontWeight": "700", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -4565,8 +4565,8 @@ exports[`OrderDetails renders a failed order 1`] = ` <Text style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Regular", + "color": "#4459ff", + "fontFamily": "CentraNo1-Book", "fontSize": 23.57142857142857, "fontWeight": "400", } @@ -4601,12 +4601,12 @@ exports[`OrderDetails renders a failed order 1`] = ` numberOfLines={1} style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Bold", + "fontSize": 16, "fontWeight": "700", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -4625,12 +4625,12 @@ exports[`OrderDetails renders a failed order 1`] = ` numberOfLines={1} style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -4857,12 +4857,12 @@ exports[`OrderDetails renders a failed order 1`] = ` <RefreshControlMock colors={ [ - "#0376c9", + "#4459ff", ] } onRefresh={[Function]} refreshing={false} - tintColor="#141618" + tintColor="#121314" /> } > @@ -4918,9 +4918,9 @@ exports[`OrderDetails renders a failed order 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 16, + "color": "#121314", + "fontFamily": "CentraNo1-Medium", + "fontSize": 18, "fontWeight": "500", "letterSpacing": 0, "lineHeight": 24, @@ -4934,12 +4934,12 @@ exports[`OrderDetails renders a failed order 1`] = ` accessibilityRole="text" style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, "textAlign": "center", } } @@ -4959,8 +4959,8 @@ exports[`OrderDetails renders a failed order 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", + "color": "#121314", + "fontFamily": "CentraNo1-Medium", "fontSize": 24, "fontWeight": "500", "letterSpacing": 0, @@ -4977,12 +4977,12 @@ exports[`OrderDetails renders a failed order 1`] = ` accessibilityRole="text" style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, "textAlign": "center", } } @@ -5007,7 +5007,7 @@ exports[`OrderDetails renders a failed order 1`] = ` style={ [ { - "borderColor": "#848c96", + "borderColor": "#b7bbc8", "borderRadius": 8, "borderWidth": 1.5, "padding": 16, @@ -5035,7 +5035,7 @@ exports[`OrderDetails renders a failed order 1`] = ` [ { "alignItems": "center", - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", "borderRadius": 100, "flexDirection": "row", "flexShrink": 1, @@ -5054,7 +5054,7 @@ exports[`OrderDetails renders a failed order 1`] = ` <View placeholderStyle={ { - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", } } useNativeDriver={true} @@ -5102,7 +5102,7 @@ exports[`OrderDetails renders a failed order 1`] = ` "backgroundColor": "#eee", }, { - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", }, ] } @@ -5114,8 +5114,8 @@ exports[`OrderDetails renders a failed order 1`] = ` style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -5133,7 +5133,7 @@ exports[`OrderDetails renders a failed order 1`] = ` undefined, undefined, { - "color": "#141618", + "color": "#121314", }, undefined, undefined, @@ -5204,12 +5204,12 @@ exports[`OrderDetails renders a failed order 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -5238,12 +5238,12 @@ exports[`OrderDetails renders a failed order 1`] = ` selectable={true} style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Bold", + "fontSize": 14, "fontWeight": "700", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } /> @@ -5288,12 +5288,12 @@ exports[`OrderDetails renders a failed order 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -5321,12 +5321,12 @@ exports[`OrderDetails renders a failed order 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Bold", + "fontSize": 14, "fontWeight": "700", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -5367,12 +5367,12 @@ exports[`OrderDetails renders a failed order 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -5418,12 +5418,12 @@ exports[`OrderDetails renders a failed order 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -5451,12 +5451,12 @@ exports[`OrderDetails renders a failed order 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Bold", + "fontSize": 14, "fontWeight": "700", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -5512,12 +5512,12 @@ exports[`OrderDetails renders a failed order 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -5545,12 +5545,12 @@ exports[`OrderDetails renders a failed order 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Bold", + "fontSize": 14, "fontWeight": "700", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -5597,12 +5597,12 @@ exports[`OrderDetails renders a failed order 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -5632,12 +5632,12 @@ exports[`OrderDetails renders a failed order 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Bold", + "fontSize": 14, "fontWeight": "700", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -5685,12 +5685,12 @@ exports[`OrderDetails renders a failed order 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -5718,12 +5718,12 @@ exports[`OrderDetails renders a failed order 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Bold", + "fontSize": 14, "fontWeight": "700", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -5736,7 +5736,7 @@ exports[`OrderDetails renders a failed order 1`] = ` <View style={ { - "backgroundColor": "#BBC0C566", + "backgroundColor": "#b7bbc866", "height": 1, "marginVertical": 12, } @@ -5779,12 +5779,12 @@ exports[`OrderDetails renders a failed order 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -5812,12 +5812,12 @@ exports[`OrderDetails renders a failed order 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Bold", + "fontSize": 14, "fontWeight": "700", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -5859,7 +5859,7 @@ exports[`OrderDetails renders a failed order 1`] = ` "padding": 15, }, { - "backgroundColor": "#0376c9", + "backgroundColor": "#4459ff", "minHeight": 50, }, undefined, @@ -5880,7 +5880,7 @@ exports[`OrderDetails renders a failed order 1`] = ` null, [ { - "fontFamily": "EuclidCircularB-Bold", + "fontFamily": "CentraNo1-Bold", "fontSize": 14, "fontWeight": "600", "textAlign": "center", @@ -6045,8 +6045,8 @@ exports[`OrderDetails renders a pending order 1`] = ` <Text style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Regular", + "color": "#4459ff", + "fontFamily": "CentraNo1-Book", "fontSize": 23.57142857142857, "fontWeight": "400", } @@ -6081,12 +6081,12 @@ exports[`OrderDetails renders a pending order 1`] = ` numberOfLines={1} style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Bold", + "fontSize": 16, "fontWeight": "700", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -6105,12 +6105,12 @@ exports[`OrderDetails renders a pending order 1`] = ` numberOfLines={1} style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -6337,12 +6337,12 @@ exports[`OrderDetails renders a pending order 1`] = ` <RefreshControlMock colors={ [ - "#0376c9", + "#4459ff", ] } onRefresh={[Function]} refreshing={false} - tintColor="#141618" + tintColor="#121314" /> } > @@ -6387,7 +6387,7 @@ exports[`OrderDetails renders a pending order 1`] = ` <View style={ { - "borderColor": "#f2f4f6", + "borderColor": "#f3f5f9", "borderRadius": 64, "borderWidth": 3.5, "height": 36, @@ -6417,7 +6417,7 @@ exports[`OrderDetails renders a pending order 1`] = ` style={ [ { - "color": "#0376c9", + "color": "#4459ff", "fontSize": 36, }, undefined, @@ -6445,9 +6445,9 @@ exports[`OrderDetails renders a pending order 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 16, + "color": "#121314", + "fontFamily": "CentraNo1-Medium", + "fontSize": 18, "fontWeight": "500", "letterSpacing": 0, "lineHeight": 24, @@ -6470,8 +6470,8 @@ exports[`OrderDetails renders a pending order 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", + "color": "#121314", + "fontFamily": "CentraNo1-Medium", "fontSize": 24, "fontWeight": "500", "letterSpacing": 0, @@ -6488,12 +6488,12 @@ exports[`OrderDetails renders a pending order 1`] = ` accessibilityRole="text" style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, "textAlign": "center", } } @@ -6518,7 +6518,7 @@ exports[`OrderDetails renders a pending order 1`] = ` style={ [ { - "borderColor": "#848c96", + "borderColor": "#b7bbc8", "borderRadius": 8, "borderWidth": 1.5, "padding": 16, @@ -6546,7 +6546,7 @@ exports[`OrderDetails renders a pending order 1`] = ` [ { "alignItems": "center", - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", "borderRadius": 100, "flexDirection": "row", "flexShrink": 1, @@ -6565,7 +6565,7 @@ exports[`OrderDetails renders a pending order 1`] = ` <View placeholderStyle={ { - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", } } useNativeDriver={true} @@ -6613,7 +6613,7 @@ exports[`OrderDetails renders a pending order 1`] = ` "backgroundColor": "#eee", }, { - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", }, ] } @@ -6625,8 +6625,8 @@ exports[`OrderDetails renders a pending order 1`] = ` style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -6644,7 +6644,7 @@ exports[`OrderDetails renders a pending order 1`] = ` undefined, undefined, { - "color": "#141618", + "color": "#121314", }, undefined, undefined, @@ -6715,12 +6715,12 @@ exports[`OrderDetails renders a pending order 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -6749,12 +6749,12 @@ exports[`OrderDetails renders a pending order 1`] = ` selectable={true} style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Bold", + "fontSize": 14, "fontWeight": "700", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } /> @@ -6799,12 +6799,12 @@ exports[`OrderDetails renders a pending order 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -6832,12 +6832,12 @@ exports[`OrderDetails renders a pending order 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Bold", + "fontSize": 14, "fontWeight": "700", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -6878,12 +6878,12 @@ exports[`OrderDetails renders a pending order 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -6929,12 +6929,12 @@ exports[`OrderDetails renders a pending order 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -6962,12 +6962,12 @@ exports[`OrderDetails renders a pending order 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Bold", + "fontSize": 14, "fontWeight": "700", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -7023,12 +7023,12 @@ exports[`OrderDetails renders a pending order 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -7056,12 +7056,12 @@ exports[`OrderDetails renders a pending order 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Bold", + "fontSize": 14, "fontWeight": "700", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -7108,12 +7108,12 @@ exports[`OrderDetails renders a pending order 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -7143,12 +7143,12 @@ exports[`OrderDetails renders a pending order 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Bold", + "fontSize": 14, "fontWeight": "700", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -7196,12 +7196,12 @@ exports[`OrderDetails renders a pending order 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -7229,12 +7229,12 @@ exports[`OrderDetails renders a pending order 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Bold", + "fontSize": 14, "fontWeight": "700", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -7247,7 +7247,7 @@ exports[`OrderDetails renders a pending order 1`] = ` <View style={ { - "backgroundColor": "#BBC0C566", + "backgroundColor": "#b7bbc866", "height": 1, "marginVertical": 12, } @@ -7290,12 +7290,12 @@ exports[`OrderDetails renders a pending order 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -7323,12 +7323,12 @@ exports[`OrderDetails renders a pending order 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Bold", + "fontSize": 14, "fontWeight": "700", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -7503,8 +7503,8 @@ exports[`OrderDetails renders an empty screen layout if there is no order 1`] = <Text style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Regular", + "color": "#4459ff", + "fontFamily": "CentraNo1-Book", "fontSize": 23.57142857142857, "fontWeight": "400", } @@ -7539,12 +7539,12 @@ exports[`OrderDetails renders an empty screen layout if there is no order 1`] = numberOfLines={1} style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Bold", + "fontSize": 16, "fontWeight": "700", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -7563,12 +7563,12 @@ exports[`OrderDetails renders an empty screen layout if there is no order 1`] = numberOfLines={1} style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -7930,8 +7930,8 @@ exports[`OrderDetails renders an error screen if a CREATED order cannot be polle <Text style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Regular", + "color": "#4459ff", + "fontFamily": "CentraNo1-Book", "fontSize": 23.57142857142857, "fontWeight": "400", } @@ -7966,12 +7966,12 @@ exports[`OrderDetails renders an error screen if a CREATED order cannot be polle numberOfLines={1} style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Bold", + "fontSize": 16, "fontWeight": "700", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -7990,12 +7990,12 @@ exports[`OrderDetails renders an error screen if a CREATED order cannot be polle numberOfLines={1} style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -8265,7 +8265,7 @@ exports[`OrderDetails renders an error screen if a CREATED order cannot be polle "textAlign": "center", }, { - "color": "#d73847", + "color": "#ca3542", }, ], { @@ -8291,12 +8291,12 @@ exports[`OrderDetails renders an error screen if a CREATED order cannot be polle accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", + "color": "#121314", + "fontFamily": "CentraNo1-Bold", "fontSize": 18, "fontWeight": "600", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, "marginVertical": 3, "textAlign": "center", } @@ -8316,8 +8316,8 @@ exports[`OrderDetails renders an error screen if a CREATED order cannot be polle style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -8331,7 +8331,7 @@ exports[`OrderDetails renders an error screen if a CREATED order cannot be polle undefined, undefined, { - "color": "#6a737d", + "color": "#686e7d", }, undefined, undefined, @@ -8377,7 +8377,7 @@ exports[`OrderDetails renders an error screen if a CREATED order cannot be polle "padding": 15, }, { - "backgroundColor": "#0376c9", + "backgroundColor": "#4459ff", "minHeight": 50, }, undefined, @@ -8398,7 +8398,7 @@ exports[`OrderDetails renders an error screen if a CREATED order cannot be polle null, [ { - "fontFamily": "EuclidCircularB-Bold", + "fontFamily": "CentraNo1-Bold", "fontSize": 14, "fontWeight": "600", "textAlign": "center", @@ -8563,8 +8563,8 @@ exports[`OrderDetails renders non-transacted orders 1`] = ` <Text style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Regular", + "color": "#4459ff", + "fontFamily": "CentraNo1-Book", "fontSize": 23.57142857142857, "fontWeight": "400", } @@ -8599,12 +8599,12 @@ exports[`OrderDetails renders non-transacted orders 1`] = ` numberOfLines={1} style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Bold", + "fontSize": 16, "fontWeight": "700", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -8623,12 +8623,12 @@ exports[`OrderDetails renders non-transacted orders 1`] = ` numberOfLines={1} style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -8855,12 +8855,12 @@ exports[`OrderDetails renders non-transacted orders 1`] = ` <RefreshControlMock colors={ [ - "#0376c9", + "#4459ff", ] } onRefresh={[Function]} refreshing={false} - tintColor="#141618" + tintColor="#121314" /> } > @@ -8905,7 +8905,7 @@ exports[`OrderDetails renders non-transacted orders 1`] = ` <View style={ { - "borderColor": "#f2f4f6", + "borderColor": "#f3f5f9", "borderRadius": 64, "borderWidth": 3.5, "height": 36, @@ -8935,7 +8935,7 @@ exports[`OrderDetails renders non-transacted orders 1`] = ` style={ [ { - "color": "#0376c9", + "color": "#4459ff", "fontSize": 36, }, undefined, @@ -8963,9 +8963,9 @@ exports[`OrderDetails renders non-transacted orders 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 16, + "color": "#121314", + "fontFamily": "CentraNo1-Medium", + "fontSize": 18, "fontWeight": "500", "letterSpacing": 0, "lineHeight": 24, @@ -8979,12 +8979,12 @@ exports[`OrderDetails renders non-transacted orders 1`] = ` accessibilityRole="text" style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, "textAlign": "center", } } @@ -9004,8 +9004,8 @@ exports[`OrderDetails renders non-transacted orders 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", + "color": "#121314", + "fontFamily": "CentraNo1-Medium", "fontSize": 24, "fontWeight": "500", "letterSpacing": 0, @@ -9022,12 +9022,12 @@ exports[`OrderDetails renders non-transacted orders 1`] = ` accessibilityRole="text" style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, "textAlign": "center", } } @@ -9052,7 +9052,7 @@ exports[`OrderDetails renders non-transacted orders 1`] = ` style={ [ { - "borderColor": "#848c96", + "borderColor": "#b7bbc8", "borderRadius": 8, "borderWidth": 1.5, "padding": 16, @@ -9080,7 +9080,7 @@ exports[`OrderDetails renders non-transacted orders 1`] = ` [ { "alignItems": "center", - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", "borderRadius": 100, "flexDirection": "row", "flexShrink": 1, @@ -9099,7 +9099,7 @@ exports[`OrderDetails renders non-transacted orders 1`] = ` <View placeholderStyle={ { - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", } } useNativeDriver={true} @@ -9147,7 +9147,7 @@ exports[`OrderDetails renders non-transacted orders 1`] = ` "backgroundColor": "#eee", }, { - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", }, ] } @@ -9159,8 +9159,8 @@ exports[`OrderDetails renders non-transacted orders 1`] = ` style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -9178,7 +9178,7 @@ exports[`OrderDetails renders non-transacted orders 1`] = ` undefined, undefined, { - "color": "#141618", + "color": "#121314", }, undefined, undefined, @@ -9249,12 +9249,12 @@ exports[`OrderDetails renders non-transacted orders 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -9283,12 +9283,12 @@ exports[`OrderDetails renders non-transacted orders 1`] = ` selectable={true} style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Bold", + "fontSize": 14, "fontWeight": "700", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } /> @@ -9333,12 +9333,12 @@ exports[`OrderDetails renders non-transacted orders 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -9366,12 +9366,12 @@ exports[`OrderDetails renders non-transacted orders 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Bold", + "fontSize": 14, "fontWeight": "700", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -9412,12 +9412,12 @@ exports[`OrderDetails renders non-transacted orders 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -9463,12 +9463,12 @@ exports[`OrderDetails renders non-transacted orders 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -9496,12 +9496,12 @@ exports[`OrderDetails renders non-transacted orders 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Bold", + "fontSize": 14, "fontWeight": "700", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -9557,12 +9557,12 @@ exports[`OrderDetails renders non-transacted orders 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -9590,12 +9590,12 @@ exports[`OrderDetails renders non-transacted orders 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Bold", + "fontSize": 14, "fontWeight": "700", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -9642,12 +9642,12 @@ exports[`OrderDetails renders non-transacted orders 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -9677,12 +9677,12 @@ exports[`OrderDetails renders non-transacted orders 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Bold", + "fontSize": 14, "fontWeight": "700", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -9730,12 +9730,12 @@ exports[`OrderDetails renders non-transacted orders 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -9763,12 +9763,12 @@ exports[`OrderDetails renders non-transacted orders 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Bold", + "fontSize": 14, "fontWeight": "700", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -9781,7 +9781,7 @@ exports[`OrderDetails renders non-transacted orders 1`] = ` <View style={ { - "backgroundColor": "#BBC0C566", + "backgroundColor": "#b7bbc866", "height": 1, "marginVertical": 12, } @@ -9824,12 +9824,12 @@ exports[`OrderDetails renders non-transacted orders 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -9857,12 +9857,12 @@ exports[`OrderDetails renders non-transacted orders 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Bold", + "fontSize": 14, "fontWeight": "700", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -9916,7 +9916,7 @@ exports[`OrderDetails renders non-transacted orders 1`] = ` "padding": 15, }, { - "backgroundColor": "#0376c9", + "backgroundColor": "#4459ff", "minHeight": 50, }, undefined, @@ -9937,7 +9937,7 @@ exports[`OrderDetails renders non-transacted orders 1`] = ` null, [ { - "fontFamily": "EuclidCircularB-Bold", + "fontFamily": "CentraNo1-Bold", "fontSize": 14, "fontWeight": "600", "textAlign": "center", @@ -10103,8 +10103,8 @@ exports[`OrderDetails renders the support links if the provider has them 1`] = ` <Text style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Regular", + "color": "#4459ff", + "fontFamily": "CentraNo1-Book", "fontSize": 23.57142857142857, "fontWeight": "400", } @@ -10139,12 +10139,12 @@ exports[`OrderDetails renders the support links if the provider has them 1`] = ` numberOfLines={1} style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Bold", + "fontSize": 16, "fontWeight": "700", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -10163,12 +10163,12 @@ exports[`OrderDetails renders the support links if the provider has them 1`] = ` numberOfLines={1} style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -10395,12 +10395,12 @@ exports[`OrderDetails renders the support links if the provider has them 1`] = ` <RefreshControlMock colors={ [ - "#0376c9", + "#4459ff", ] } onRefresh={[Function]} refreshing={false} - tintColor="#141618" + tintColor="#121314" /> } > @@ -10447,7 +10447,7 @@ exports[`OrderDetails renders the support links if the provider has them 1`] = ` style={ [ { - "color": "#1c8234", + "color": "#1c7e33", "fontSize": 32, }, undefined, @@ -10473,9 +10473,9 @@ exports[`OrderDetails renders the support links if the provider has them 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 16, + "color": "#121314", + "fontFamily": "CentraNo1-Medium", + "fontSize": 18, "fontWeight": "500", "letterSpacing": 0, "lineHeight": 24, @@ -10489,12 +10489,12 @@ exports[`OrderDetails renders the support links if the provider has them 1`] = ` accessibilityRole="text" style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, "textAlign": "center", } } @@ -10514,8 +10514,8 @@ exports[`OrderDetails renders the support links if the provider has them 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", + "color": "#121314", + "fontFamily": "CentraNo1-Medium", "fontSize": 24, "fontWeight": "500", "letterSpacing": 0, @@ -10532,12 +10532,12 @@ exports[`OrderDetails renders the support links if the provider has them 1`] = ` accessibilityRole="text" style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, "textAlign": "center", } } @@ -10560,12 +10560,12 @@ exports[`OrderDetails renders the support links if the provider has them 1`] = ` accessibilityRole="text" style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#4459ff", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, "textAlign": "center", } } @@ -10590,7 +10590,7 @@ exports[`OrderDetails renders the support links if the provider has them 1`] = ` style={ [ { - "borderColor": "#848c96", + "borderColor": "#b7bbc8", "borderRadius": 8, "borderWidth": 1.5, "padding": 16, @@ -10618,7 +10618,7 @@ exports[`OrderDetails renders the support links if the provider has them 1`] = ` [ { "alignItems": "center", - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", "borderRadius": 100, "flexDirection": "row", "flexShrink": 1, @@ -10637,7 +10637,7 @@ exports[`OrderDetails renders the support links if the provider has them 1`] = ` <View placeholderStyle={ { - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", } } useNativeDriver={true} @@ -10685,7 +10685,7 @@ exports[`OrderDetails renders the support links if the provider has them 1`] = ` "backgroundColor": "#eee", }, { - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", }, ] } @@ -10697,8 +10697,8 @@ exports[`OrderDetails renders the support links if the provider has them 1`] = ` style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -10716,7 +10716,7 @@ exports[`OrderDetails renders the support links if the provider has them 1`] = ` undefined, undefined, { - "color": "#141618", + "color": "#121314", }, undefined, undefined, @@ -10787,12 +10787,12 @@ exports[`OrderDetails renders the support links if the provider has them 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -10821,12 +10821,12 @@ exports[`OrderDetails renders the support links if the provider has them 1`] = ` selectable={true} style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Bold", + "fontSize": 14, "fontWeight": "700", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } /> @@ -10871,12 +10871,12 @@ exports[`OrderDetails renders the support links if the provider has them 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -10904,12 +10904,12 @@ exports[`OrderDetails renders the support links if the provider has them 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Bold", + "fontSize": 14, "fontWeight": "700", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -10950,12 +10950,12 @@ exports[`OrderDetails renders the support links if the provider has them 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -10968,12 +10968,12 @@ exports[`OrderDetails renders the support links if the provider has them 1`] = ` onPress={[Function]} style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, "textDecorationLine": "underline", } } @@ -11021,12 +11021,12 @@ exports[`OrderDetails renders the support links if the provider has them 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -11054,12 +11054,12 @@ exports[`OrderDetails renders the support links if the provider has them 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Bold", + "fontSize": 14, "fontWeight": "700", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -11115,12 +11115,12 @@ exports[`OrderDetails renders the support links if the provider has them 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -11148,12 +11148,12 @@ exports[`OrderDetails renders the support links if the provider has them 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Bold", + "fontSize": 14, "fontWeight": "700", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -11200,12 +11200,12 @@ exports[`OrderDetails renders the support links if the provider has them 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -11235,12 +11235,12 @@ exports[`OrderDetails renders the support links if the provider has them 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Bold", + "fontSize": 14, "fontWeight": "700", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -11288,12 +11288,12 @@ exports[`OrderDetails renders the support links if the provider has them 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -11321,12 +11321,12 @@ exports[`OrderDetails renders the support links if the provider has them 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Bold", + "fontSize": 14, "fontWeight": "700", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -11339,7 +11339,7 @@ exports[`OrderDetails renders the support links if the provider has them 1`] = ` <View style={ { - "backgroundColor": "#BBC0C566", + "backgroundColor": "#b7bbc866", "height": 1, "marginVertical": 12, } @@ -11382,12 +11382,12 @@ exports[`OrderDetails renders the support links if the provider has them 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -11415,12 +11415,12 @@ exports[`OrderDetails renders the support links if the provider has them 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Bold", + "fontSize": 14, "fontWeight": "700", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -11462,7 +11462,7 @@ exports[`OrderDetails renders the support links if the provider has them 1`] = ` "padding": 15, }, { - "backgroundColor": "#0376c9", + "backgroundColor": "#4459ff", "minHeight": 50, }, undefined, @@ -11483,7 +11483,7 @@ exports[`OrderDetails renders the support links if the provider has them 1`] = ` null, [ { - "fontFamily": "EuclidCircularB-Bold", + "fontFamily": "CentraNo1-Bold", "fontSize": 14, "fontWeight": "600", "textAlign": "center", @@ -11648,8 +11648,8 @@ exports[`OrderDetails renders transacted orders that do not have timeDescription <Text style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Regular", + "color": "#4459ff", + "fontFamily": "CentraNo1-Book", "fontSize": 23.57142857142857, "fontWeight": "400", } @@ -11684,12 +11684,12 @@ exports[`OrderDetails renders transacted orders that do not have timeDescription numberOfLines={1} style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Bold", + "fontSize": 16, "fontWeight": "700", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -11708,12 +11708,12 @@ exports[`OrderDetails renders transacted orders that do not have timeDescription numberOfLines={1} style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -11940,12 +11940,12 @@ exports[`OrderDetails renders transacted orders that do not have timeDescription <RefreshControlMock colors={ [ - "#0376c9", + "#4459ff", ] } onRefresh={[Function]} refreshing={false} - tintColor="#141618" + tintColor="#121314" /> } > @@ -11990,7 +11990,7 @@ exports[`OrderDetails renders transacted orders that do not have timeDescription <View style={ { - "borderColor": "#f2f4f6", + "borderColor": "#f3f5f9", "borderRadius": 64, "borderWidth": 3.5, "height": 36, @@ -12020,7 +12020,7 @@ exports[`OrderDetails renders transacted orders that do not have timeDescription style={ [ { - "color": "#0376c9", + "color": "#4459ff", "fontSize": 36, }, undefined, @@ -12048,9 +12048,9 @@ exports[`OrderDetails renders transacted orders that do not have timeDescription accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 16, + "color": "#121314", + "fontFamily": "CentraNo1-Medium", + "fontSize": 18, "fontWeight": "500", "letterSpacing": 0, "lineHeight": 24, @@ -12073,8 +12073,8 @@ exports[`OrderDetails renders transacted orders that do not have timeDescription accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", + "color": "#121314", + "fontFamily": "CentraNo1-Medium", "fontSize": 24, "fontWeight": "500", "letterSpacing": 0, @@ -12091,12 +12091,12 @@ exports[`OrderDetails renders transacted orders that do not have timeDescription accessibilityRole="text" style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, "textAlign": "center", } } @@ -12121,7 +12121,7 @@ exports[`OrderDetails renders transacted orders that do not have timeDescription style={ [ { - "borderColor": "#848c96", + "borderColor": "#b7bbc8", "borderRadius": 8, "borderWidth": 1.5, "padding": 16, @@ -12149,7 +12149,7 @@ exports[`OrderDetails renders transacted orders that do not have timeDescription [ { "alignItems": "center", - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", "borderRadius": 100, "flexDirection": "row", "flexShrink": 1, @@ -12168,7 +12168,7 @@ exports[`OrderDetails renders transacted orders that do not have timeDescription <View placeholderStyle={ { - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", } } useNativeDriver={true} @@ -12216,7 +12216,7 @@ exports[`OrderDetails renders transacted orders that do not have timeDescription "backgroundColor": "#eee", }, { - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", }, ] } @@ -12228,8 +12228,8 @@ exports[`OrderDetails renders transacted orders that do not have timeDescription style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -12247,7 +12247,7 @@ exports[`OrderDetails renders transacted orders that do not have timeDescription undefined, undefined, { - "color": "#141618", + "color": "#121314", }, undefined, undefined, @@ -12318,12 +12318,12 @@ exports[`OrderDetails renders transacted orders that do not have timeDescription accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -12352,12 +12352,12 @@ exports[`OrderDetails renders transacted orders that do not have timeDescription selectable={true} style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Bold", + "fontSize": 14, "fontWeight": "700", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } /> @@ -12402,12 +12402,12 @@ exports[`OrderDetails renders transacted orders that do not have timeDescription accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -12435,12 +12435,12 @@ exports[`OrderDetails renders transacted orders that do not have timeDescription accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Bold", + "fontSize": 14, "fontWeight": "700", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -12481,12 +12481,12 @@ exports[`OrderDetails renders transacted orders that do not have timeDescription accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -12532,12 +12532,12 @@ exports[`OrderDetails renders transacted orders that do not have timeDescription accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -12565,12 +12565,12 @@ exports[`OrderDetails renders transacted orders that do not have timeDescription accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Bold", + "fontSize": 14, "fontWeight": "700", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -12626,12 +12626,12 @@ exports[`OrderDetails renders transacted orders that do not have timeDescription accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -12659,12 +12659,12 @@ exports[`OrderDetails renders transacted orders that do not have timeDescription accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Bold", + "fontSize": 14, "fontWeight": "700", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -12711,12 +12711,12 @@ exports[`OrderDetails renders transacted orders that do not have timeDescription accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -12746,12 +12746,12 @@ exports[`OrderDetails renders transacted orders that do not have timeDescription accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Bold", + "fontSize": 14, "fontWeight": "700", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -12799,12 +12799,12 @@ exports[`OrderDetails renders transacted orders that do not have timeDescription accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -12832,12 +12832,12 @@ exports[`OrderDetails renders transacted orders that do not have timeDescription accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Bold", + "fontSize": 14, "fontWeight": "700", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -12850,7 +12850,7 @@ exports[`OrderDetails renders transacted orders that do not have timeDescription <View style={ { - "backgroundColor": "#BBC0C566", + "backgroundColor": "#b7bbc866", "height": 1, "marginVertical": 12, } @@ -12893,12 +12893,12 @@ exports[`OrderDetails renders transacted orders that do not have timeDescription accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -12926,12 +12926,12 @@ exports[`OrderDetails renders transacted orders that do not have timeDescription accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Bold", + "fontSize": 14, "fontWeight": "700", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -13106,8 +13106,8 @@ exports[`OrderDetails renders transacted orders that have timeDescriptionPending <Text style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Regular", + "color": "#4459ff", + "fontFamily": "CentraNo1-Book", "fontSize": 23.57142857142857, "fontWeight": "400", } @@ -13142,12 +13142,12 @@ exports[`OrderDetails renders transacted orders that have timeDescriptionPending numberOfLines={1} style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Bold", + "fontSize": 16, "fontWeight": "700", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -13166,12 +13166,12 @@ exports[`OrderDetails renders transacted orders that have timeDescriptionPending numberOfLines={1} style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -13398,12 +13398,12 @@ exports[`OrderDetails renders transacted orders that have timeDescriptionPending <RefreshControlMock colors={ [ - "#0376c9", + "#4459ff", ] } onRefresh={[Function]} refreshing={false} - tintColor="#141618" + tintColor="#121314" /> } > @@ -13448,7 +13448,7 @@ exports[`OrderDetails renders transacted orders that have timeDescriptionPending <View style={ { - "borderColor": "#f2f4f6", + "borderColor": "#f3f5f9", "borderRadius": 64, "borderWidth": 3.5, "height": 36, @@ -13478,7 +13478,7 @@ exports[`OrderDetails renders transacted orders that have timeDescriptionPending style={ [ { - "color": "#0376c9", + "color": "#4459ff", "fontSize": 36, }, undefined, @@ -13506,9 +13506,9 @@ exports[`OrderDetails renders transacted orders that have timeDescriptionPending accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 16, + "color": "#121314", + "fontFamily": "CentraNo1-Medium", + "fontSize": 18, "fontWeight": "500", "letterSpacing": 0, "lineHeight": 24, @@ -13522,12 +13522,12 @@ exports[`OrderDetails renders transacted orders that have timeDescriptionPending accessibilityRole="text" style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, "textAlign": "center", } } @@ -13547,8 +13547,8 @@ exports[`OrderDetails renders transacted orders that have timeDescriptionPending accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", + "color": "#121314", + "fontFamily": "CentraNo1-Medium", "fontSize": 24, "fontWeight": "500", "letterSpacing": 0, @@ -13565,12 +13565,12 @@ exports[`OrderDetails renders transacted orders that have timeDescriptionPending accessibilityRole="text" style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, "textAlign": "center", } } @@ -13595,7 +13595,7 @@ exports[`OrderDetails renders transacted orders that have timeDescriptionPending style={ [ { - "borderColor": "#848c96", + "borderColor": "#b7bbc8", "borderRadius": 8, "borderWidth": 1.5, "padding": 16, @@ -13623,7 +13623,7 @@ exports[`OrderDetails renders transacted orders that have timeDescriptionPending [ { "alignItems": "center", - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", "borderRadius": 100, "flexDirection": "row", "flexShrink": 1, @@ -13642,7 +13642,7 @@ exports[`OrderDetails renders transacted orders that have timeDescriptionPending <View placeholderStyle={ { - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", } } useNativeDriver={true} @@ -13690,7 +13690,7 @@ exports[`OrderDetails renders transacted orders that have timeDescriptionPending "backgroundColor": "#eee", }, { - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", }, ] } @@ -13702,8 +13702,8 @@ exports[`OrderDetails renders transacted orders that have timeDescriptionPending style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -13721,7 +13721,7 @@ exports[`OrderDetails renders transacted orders that have timeDescriptionPending undefined, undefined, { - "color": "#141618", + "color": "#121314", }, undefined, undefined, @@ -13792,12 +13792,12 @@ exports[`OrderDetails renders transacted orders that have timeDescriptionPending accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -13826,12 +13826,12 @@ exports[`OrderDetails renders transacted orders that have timeDescriptionPending selectable={true} style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Bold", + "fontSize": 14, "fontWeight": "700", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } /> @@ -13876,12 +13876,12 @@ exports[`OrderDetails renders transacted orders that have timeDescriptionPending accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -13909,12 +13909,12 @@ exports[`OrderDetails renders transacted orders that have timeDescriptionPending accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Bold", + "fontSize": 14, "fontWeight": "700", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -13955,12 +13955,12 @@ exports[`OrderDetails renders transacted orders that have timeDescriptionPending accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -14006,12 +14006,12 @@ exports[`OrderDetails renders transacted orders that have timeDescriptionPending accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -14039,12 +14039,12 @@ exports[`OrderDetails renders transacted orders that have timeDescriptionPending accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Bold", + "fontSize": 14, "fontWeight": "700", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -14100,12 +14100,12 @@ exports[`OrderDetails renders transacted orders that have timeDescriptionPending accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -14133,12 +14133,12 @@ exports[`OrderDetails renders transacted orders that have timeDescriptionPending accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Bold", + "fontSize": 14, "fontWeight": "700", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -14185,12 +14185,12 @@ exports[`OrderDetails renders transacted orders that have timeDescriptionPending accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -14220,12 +14220,12 @@ exports[`OrderDetails renders transacted orders that have timeDescriptionPending accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Bold", + "fontSize": 14, "fontWeight": "700", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -14273,12 +14273,12 @@ exports[`OrderDetails renders transacted orders that have timeDescriptionPending accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -14306,12 +14306,12 @@ exports[`OrderDetails renders transacted orders that have timeDescriptionPending accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Bold", + "fontSize": 14, "fontWeight": "700", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -14324,7 +14324,7 @@ exports[`OrderDetails renders transacted orders that have timeDescriptionPending <View style={ { - "backgroundColor": "#BBC0C566", + "backgroundColor": "#b7bbc866", "height": 1, "marginVertical": 12, } @@ -14367,12 +14367,12 @@ exports[`OrderDetails renders transacted orders that have timeDescriptionPending accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -14400,12 +14400,12 @@ exports[`OrderDetails renders transacted orders that have timeDescriptionPending accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Bold", + "fontSize": 14, "fontWeight": "700", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > diff --git a/app/components/UI/Ramp/Views/OrdersList/__snapshots__/OrdersList.test.tsx.snap b/app/components/UI/Ramp/Views/OrdersList/__snapshots__/OrdersList.test.tsx.snap index c8f35acefdfa..b36ec1310b1e 100644 --- a/app/components/UI/Ramp/Views/OrdersList/__snapshots__/OrdersList.test.tsx.snap +++ b/app/components/UI/Ramp/Views/OrdersList/__snapshots__/OrdersList.test.tsx.snap @@ -178,7 +178,7 @@ exports[`OrdersList renders buy only correctly when pressing buy filter 1`] = ` "alignItems": "center", "alignSelf": "flex-start", "backgroundColor": "transparent", - "borderColor": "#0376c9", + "borderColor": "#4459ff", "borderRadius": 16, "borderWidth": 1, "flexDirection": "row", @@ -192,12 +192,12 @@ exports[`OrdersList renders buy only correctly when pressing buy filter 1`] = ` accessibilityRole="text" style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, + "color": "#4459ff", + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -215,8 +215,8 @@ exports[`OrdersList renders buy only correctly when pressing buy filter 1`] = ` { "alignItems": "center", "alignSelf": "flex-start", - "backgroundColor": "#0376c9", - "borderColor": "#0376c9", + "backgroundColor": "#4459ff", + "borderColor": "#4459ff", "borderRadius": 16, "borderWidth": 1, "flexDirection": "row", @@ -231,11 +231,11 @@ exports[`OrdersList renders buy only correctly when pressing buy filter 1`] = ` style={ { "color": "#ffffff", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -254,7 +254,7 @@ exports[`OrdersList renders buy only correctly when pressing buy filter 1`] = ` "alignItems": "center", "alignSelf": "flex-start", "backgroundColor": "transparent", - "borderColor": "#0376c9", + "borderColor": "#4459ff", "borderRadius": 16, "borderWidth": 1, "flexDirection": "row", @@ -268,12 +268,12 @@ exports[`OrdersList renders buy only correctly when pressing buy filter 1`] = ` accessibilityRole="text" style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, + "color": "#4459ff", + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -297,10 +297,10 @@ exports[`OrdersList renders buy only correctly when pressing buy filter 1`] = ` style={ { "borderBottomWidth": 0.5, - "borderColor": "#BBC0C566", + "borderColor": "#b7bbc866", } } - underlayColor="#f2f4f6" + underlayColor="#f3f5f9" > <View accessibilityRole="none" @@ -322,12 +322,12 @@ exports[`OrdersList renders buy only correctly when pressing buy filter 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -382,12 +382,12 @@ exports[`OrdersList renders buy only correctly when pressing buy filter 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -400,12 +400,12 @@ exports[`OrdersList renders buy only correctly when pressing buy filter 1`] = ` accessibilityRole="text" style={ { - "color": "#1c8234", - "fontFamily": "EuclidCircularB-Bold", - "fontSize": 12, + "color": "#1c7e33", + "fontFamily": "CentraNo1-Bold", + "fontSize": 14, "fontWeight": "700", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -434,12 +434,12 @@ exports[`OrdersList renders buy only correctly when pressing buy filter 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -451,12 +451,12 @@ exports[`OrdersList renders buy only correctly when pressing buy filter 1`] = ` accessibilityRole="text" style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -480,10 +480,10 @@ exports[`OrdersList renders buy only correctly when pressing buy filter 1`] = ` style={ { "borderBottomWidth": 0.5, - "borderColor": "#BBC0C566", + "borderColor": "#b7bbc866", } } - underlayColor="#f2f4f6" + underlayColor="#f3f5f9" > <View accessibilityRole="none" @@ -505,12 +505,12 @@ exports[`OrdersList renders buy only correctly when pressing buy filter 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -565,12 +565,12 @@ exports[`OrdersList renders buy only correctly when pressing buy filter 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -583,12 +583,12 @@ exports[`OrdersList renders buy only correctly when pressing buy filter 1`] = ` accessibilityRole="text" style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Bold", - "fontSize": 12, + "color": "#4459ff", + "fontFamily": "CentraNo1-Bold", + "fontSize": 14, "fontWeight": "700", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -617,12 +617,12 @@ exports[`OrdersList renders buy only correctly when pressing buy filter 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -634,12 +634,12 @@ exports[`OrdersList renders buy only correctly when pressing buy filter 1`] = ` accessibilityRole="text" style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -663,10 +663,10 @@ exports[`OrdersList renders buy only correctly when pressing buy filter 1`] = ` style={ { "borderBottomWidth": 0.5, - "borderColor": "#BBC0C566", + "borderColor": "#b7bbc866", } } - underlayColor="#f2f4f6" + underlayColor="#f3f5f9" > <View accessibilityRole="none" @@ -688,12 +688,12 @@ exports[`OrdersList renders buy only correctly when pressing buy filter 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -748,12 +748,12 @@ exports[`OrdersList renders buy only correctly when pressing buy filter 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -766,12 +766,12 @@ exports[`OrdersList renders buy only correctly when pressing buy filter 1`] = ` accessibilityRole="text" style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Bold", - "fontSize": 12, + "color": "#4459ff", + "fontFamily": "CentraNo1-Bold", + "fontSize": 14, "fontWeight": "700", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -800,12 +800,12 @@ exports[`OrdersList renders buy only correctly when pressing buy filter 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -817,12 +817,12 @@ exports[`OrdersList renders buy only correctly when pressing buy filter 1`] = ` accessibilityRole="text" style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -1035,8 +1035,8 @@ exports[`OrdersList renders correctly 1`] = ` { "alignItems": "center", "alignSelf": "flex-start", - "backgroundColor": "#0376c9", - "borderColor": "#0376c9", + "backgroundColor": "#4459ff", + "borderColor": "#4459ff", "borderRadius": 16, "borderWidth": 1, "flexDirection": "row", @@ -1051,11 +1051,11 @@ exports[`OrdersList renders correctly 1`] = ` style={ { "color": "#ffffff", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -1074,7 +1074,7 @@ exports[`OrdersList renders correctly 1`] = ` "alignItems": "center", "alignSelf": "flex-start", "backgroundColor": "transparent", - "borderColor": "#0376c9", + "borderColor": "#4459ff", "borderRadius": 16, "borderWidth": 1, "flexDirection": "row", @@ -1088,12 +1088,12 @@ exports[`OrdersList renders correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, + "color": "#4459ff", + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -1112,7 +1112,7 @@ exports[`OrdersList renders correctly 1`] = ` "alignItems": "center", "alignSelf": "flex-start", "backgroundColor": "transparent", - "borderColor": "#0376c9", + "borderColor": "#4459ff", "borderRadius": 16, "borderWidth": 1, "flexDirection": "row", @@ -1126,12 +1126,12 @@ exports[`OrdersList renders correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, + "color": "#4459ff", + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -1155,10 +1155,10 @@ exports[`OrdersList renders correctly 1`] = ` style={ { "borderBottomWidth": 0.5, - "borderColor": "#BBC0C566", + "borderColor": "#b7bbc866", } } - underlayColor="#f2f4f6" + underlayColor="#f3f5f9" > <View accessibilityRole="none" @@ -1180,12 +1180,12 @@ exports[`OrdersList renders correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -1240,12 +1240,12 @@ exports[`OrdersList renders correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -1258,12 +1258,12 @@ exports[`OrdersList renders correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#1c8234", - "fontFamily": "EuclidCircularB-Bold", - "fontSize": 12, + "color": "#1c7e33", + "fontFamily": "CentraNo1-Bold", + "fontSize": 14, "fontWeight": "700", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -1292,12 +1292,12 @@ exports[`OrdersList renders correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -1309,12 +1309,12 @@ exports[`OrdersList renders correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -1338,10 +1338,10 @@ exports[`OrdersList renders correctly 1`] = ` style={ { "borderBottomWidth": 0.5, - "borderColor": "#BBC0C566", + "borderColor": "#b7bbc866", } } - underlayColor="#f2f4f6" + underlayColor="#f3f5f9" > <View accessibilityRole="none" @@ -1363,12 +1363,12 @@ exports[`OrdersList renders correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -1423,12 +1423,12 @@ exports[`OrdersList renders correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -1441,12 +1441,12 @@ exports[`OrdersList renders correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Bold", - "fontSize": 12, + "color": "#4459ff", + "fontFamily": "CentraNo1-Bold", + "fontSize": 14, "fontWeight": "700", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -1475,12 +1475,12 @@ exports[`OrdersList renders correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -1492,12 +1492,12 @@ exports[`OrdersList renders correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -1521,10 +1521,10 @@ exports[`OrdersList renders correctly 1`] = ` style={ { "borderBottomWidth": 0.5, - "borderColor": "#BBC0C566", + "borderColor": "#b7bbc866", } } - underlayColor="#f2f4f6" + underlayColor="#f3f5f9" > <View accessibilityRole="none" @@ -1546,12 +1546,12 @@ exports[`OrdersList renders correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -1606,12 +1606,12 @@ exports[`OrdersList renders correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -1624,12 +1624,12 @@ exports[`OrdersList renders correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Bold", - "fontSize": 12, + "color": "#4459ff", + "fontFamily": "CentraNo1-Bold", + "fontSize": 14, "fontWeight": "700", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -1658,12 +1658,12 @@ exports[`OrdersList renders correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -1675,12 +1675,12 @@ exports[`OrdersList renders correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -1704,10 +1704,10 @@ exports[`OrdersList renders correctly 1`] = ` style={ { "borderBottomWidth": 0.5, - "borderColor": "#BBC0C566", + "borderColor": "#b7bbc866", } } - underlayColor="#f2f4f6" + underlayColor="#f3f5f9" > <View accessibilityRole="none" @@ -1729,12 +1729,12 @@ exports[`OrdersList renders correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -1789,12 +1789,12 @@ exports[`OrdersList renders correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -1807,12 +1807,12 @@ exports[`OrdersList renders correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Bold", - "fontSize": 12, + "color": "#4459ff", + "fontFamily": "CentraNo1-Bold", + "fontSize": 14, "fontWeight": "700", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -1841,12 +1841,12 @@ exports[`OrdersList renders correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -1858,12 +1858,12 @@ exports[`OrdersList renders correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -1987,7 +1987,7 @@ exports[`OrdersList renders empty buy message 1`] = ` "alignItems": "center", "alignSelf": "flex-start", "backgroundColor": "transparent", - "borderColor": "#0376c9", + "borderColor": "#4459ff", "borderRadius": 16, "borderWidth": 1, "flexDirection": "row", @@ -2001,12 +2001,12 @@ exports[`OrdersList renders empty buy message 1`] = ` accessibilityRole="text" style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, + "color": "#4459ff", + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -2024,8 +2024,8 @@ exports[`OrdersList renders empty buy message 1`] = ` { "alignItems": "center", "alignSelf": "flex-start", - "backgroundColor": "#0376c9", - "borderColor": "#0376c9", + "backgroundColor": "#4459ff", + "borderColor": "#4459ff", "borderRadius": 16, "borderWidth": 1, "flexDirection": "row", @@ -2040,11 +2040,11 @@ exports[`OrdersList renders empty buy message 1`] = ` style={ { "color": "#ffffff", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -2063,7 +2063,7 @@ exports[`OrdersList renders empty buy message 1`] = ` "alignItems": "center", "alignSelf": "flex-start", "backgroundColor": "transparent", - "borderColor": "#0376c9", + "borderColor": "#4459ff", "borderRadius": 16, "borderWidth": 1, "flexDirection": "row", @@ -2077,12 +2077,12 @@ exports[`OrdersList renders empty buy message 1`] = ` accessibilityRole="text" style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, + "color": "#4459ff", + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -2110,8 +2110,8 @@ exports[`OrdersList renders empty buy message 1`] = ` accessibilityRole="text" style={ { - "color": "#9fa6ae", - "fontFamily": "EuclidCircularB-Bold", + "color": "#9ca1af", + "fontFamily": "CentraNo1-Bold", "fontSize": 18, "fontWeight": "700", "letterSpacing": 0, @@ -2236,7 +2236,7 @@ exports[`OrdersList renders empty sell message 1`] = ` "alignItems": "center", "alignSelf": "flex-start", "backgroundColor": "transparent", - "borderColor": "#0376c9", + "borderColor": "#4459ff", "borderRadius": 16, "borderWidth": 1, "flexDirection": "row", @@ -2250,12 +2250,12 @@ exports[`OrdersList renders empty sell message 1`] = ` accessibilityRole="text" style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, + "color": "#4459ff", + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -2274,7 +2274,7 @@ exports[`OrdersList renders empty sell message 1`] = ` "alignItems": "center", "alignSelf": "flex-start", "backgroundColor": "transparent", - "borderColor": "#0376c9", + "borderColor": "#4459ff", "borderRadius": 16, "borderWidth": 1, "flexDirection": "row", @@ -2288,12 +2288,12 @@ exports[`OrdersList renders empty sell message 1`] = ` accessibilityRole="text" style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, + "color": "#4459ff", + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -2311,8 +2311,8 @@ exports[`OrdersList renders empty sell message 1`] = ` { "alignItems": "center", "alignSelf": "flex-start", - "backgroundColor": "#0376c9", - "borderColor": "#0376c9", + "backgroundColor": "#4459ff", + "borderColor": "#4459ff", "borderRadius": 16, "borderWidth": 1, "flexDirection": "row", @@ -2327,11 +2327,11 @@ exports[`OrdersList renders empty sell message 1`] = ` style={ { "color": "#ffffff", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -2359,8 +2359,8 @@ exports[`OrdersList renders empty sell message 1`] = ` accessibilityRole="text" style={ { - "color": "#9fa6ae", - "fontFamily": "EuclidCircularB-Bold", + "color": "#9ca1af", + "fontFamily": "CentraNo1-Bold", "fontSize": 18, "fontWeight": "700", "letterSpacing": 0, @@ -2511,7 +2511,7 @@ exports[`OrdersList renders sell only correctly when pressing sell filter 1`] = "alignItems": "center", "alignSelf": "flex-start", "backgroundColor": "transparent", - "borderColor": "#0376c9", + "borderColor": "#4459ff", "borderRadius": 16, "borderWidth": 1, "flexDirection": "row", @@ -2525,12 +2525,12 @@ exports[`OrdersList renders sell only correctly when pressing sell filter 1`] = accessibilityRole="text" style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, + "color": "#4459ff", + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -2549,7 +2549,7 @@ exports[`OrdersList renders sell only correctly when pressing sell filter 1`] = "alignItems": "center", "alignSelf": "flex-start", "backgroundColor": "transparent", - "borderColor": "#0376c9", + "borderColor": "#4459ff", "borderRadius": 16, "borderWidth": 1, "flexDirection": "row", @@ -2563,12 +2563,12 @@ exports[`OrdersList renders sell only correctly when pressing sell filter 1`] = accessibilityRole="text" style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, + "color": "#4459ff", + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -2586,8 +2586,8 @@ exports[`OrdersList renders sell only correctly when pressing sell filter 1`] = { "alignItems": "center", "alignSelf": "flex-start", - "backgroundColor": "#0376c9", - "borderColor": "#0376c9", + "backgroundColor": "#4459ff", + "borderColor": "#4459ff", "borderRadius": 16, "borderWidth": 1, "flexDirection": "row", @@ -2602,11 +2602,11 @@ exports[`OrdersList renders sell only correctly when pressing sell filter 1`] = style={ { "color": "#ffffff", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -2630,10 +2630,10 @@ exports[`OrdersList renders sell only correctly when pressing sell filter 1`] = style={ { "borderBottomWidth": 0.5, - "borderColor": "#BBC0C566", + "borderColor": "#b7bbc866", } } - underlayColor="#f2f4f6" + underlayColor="#f3f5f9" > <View accessibilityRole="none" @@ -2655,12 +2655,12 @@ exports[`OrdersList renders sell only correctly when pressing sell filter 1`] = accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -2715,12 +2715,12 @@ exports[`OrdersList renders sell only correctly when pressing sell filter 1`] = accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -2733,12 +2733,12 @@ exports[`OrdersList renders sell only correctly when pressing sell filter 1`] = accessibilityRole="text" style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Bold", - "fontSize": 12, + "color": "#4459ff", + "fontFamily": "CentraNo1-Bold", + "fontSize": 14, "fontWeight": "700", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -2767,12 +2767,12 @@ exports[`OrdersList renders sell only correctly when pressing sell filter 1`] = accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -2784,12 +2784,12 @@ exports[`OrdersList renders sell only correctly when pressing sell filter 1`] = accessibilityRole="text" style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -2939,7 +2939,7 @@ exports[`OrdersList resets filter to all after other filter was set 1`] = ` "alignItems": "center", "alignSelf": "flex-start", "backgroundColor": "transparent", - "borderColor": "#0376c9", + "borderColor": "#4459ff", "borderRadius": 16, "borderWidth": 1, "flexDirection": "row", @@ -2953,12 +2953,12 @@ exports[`OrdersList resets filter to all after other filter was set 1`] = ` accessibilityRole="text" style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, + "color": "#4459ff", + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -2977,7 +2977,7 @@ exports[`OrdersList resets filter to all after other filter was set 1`] = ` "alignItems": "center", "alignSelf": "flex-start", "backgroundColor": "transparent", - "borderColor": "#0376c9", + "borderColor": "#4459ff", "borderRadius": 16, "borderWidth": 1, "flexDirection": "row", @@ -2991,12 +2991,12 @@ exports[`OrdersList resets filter to all after other filter was set 1`] = ` accessibilityRole="text" style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, + "color": "#4459ff", + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -3014,8 +3014,8 @@ exports[`OrdersList resets filter to all after other filter was set 1`] = ` { "alignItems": "center", "alignSelf": "flex-start", - "backgroundColor": "#0376c9", - "borderColor": "#0376c9", + "backgroundColor": "#4459ff", + "borderColor": "#4459ff", "borderRadius": 16, "borderWidth": 1, "flexDirection": "row", @@ -3030,11 +3030,11 @@ exports[`OrdersList resets filter to all after other filter was set 1`] = ` style={ { "color": "#ffffff", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -3058,10 +3058,10 @@ exports[`OrdersList resets filter to all after other filter was set 1`] = ` style={ { "borderBottomWidth": 0.5, - "borderColor": "#BBC0C566", + "borderColor": "#b7bbc866", } } - underlayColor="#f2f4f6" + underlayColor="#f3f5f9" > <View accessibilityRole="none" @@ -3083,12 +3083,12 @@ exports[`OrdersList resets filter to all after other filter was set 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -3143,12 +3143,12 @@ exports[`OrdersList resets filter to all after other filter was set 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -3161,12 +3161,12 @@ exports[`OrdersList resets filter to all after other filter was set 1`] = ` accessibilityRole="text" style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Bold", - "fontSize": 12, + "color": "#4459ff", + "fontFamily": "CentraNo1-Bold", + "fontSize": 14, "fontWeight": "700", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -3195,12 +3195,12 @@ exports[`OrdersList resets filter to all after other filter was set 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -3212,12 +3212,12 @@ exports[`OrdersList resets filter to all after other filter was set 1`] = ` accessibilityRole="text" style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -3430,8 +3430,8 @@ exports[`OrdersList resets filter to all after other filter was set 2`] = ` { "alignItems": "center", "alignSelf": "flex-start", - "backgroundColor": "#0376c9", - "borderColor": "#0376c9", + "backgroundColor": "#4459ff", + "borderColor": "#4459ff", "borderRadius": 16, "borderWidth": 1, "flexDirection": "row", @@ -3446,11 +3446,11 @@ exports[`OrdersList resets filter to all after other filter was set 2`] = ` style={ { "color": "#ffffff", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -3469,7 +3469,7 @@ exports[`OrdersList resets filter to all after other filter was set 2`] = ` "alignItems": "center", "alignSelf": "flex-start", "backgroundColor": "transparent", - "borderColor": "#0376c9", + "borderColor": "#4459ff", "borderRadius": 16, "borderWidth": 1, "flexDirection": "row", @@ -3483,12 +3483,12 @@ exports[`OrdersList resets filter to all after other filter was set 2`] = ` accessibilityRole="text" style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, + "color": "#4459ff", + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -3507,7 +3507,7 @@ exports[`OrdersList resets filter to all after other filter was set 2`] = ` "alignItems": "center", "alignSelf": "flex-start", "backgroundColor": "transparent", - "borderColor": "#0376c9", + "borderColor": "#4459ff", "borderRadius": 16, "borderWidth": 1, "flexDirection": "row", @@ -3521,12 +3521,12 @@ exports[`OrdersList resets filter to all after other filter was set 2`] = ` accessibilityRole="text" style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, + "color": "#4459ff", + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -3550,10 +3550,10 @@ exports[`OrdersList resets filter to all after other filter was set 2`] = ` style={ { "borderBottomWidth": 0.5, - "borderColor": "#BBC0C566", + "borderColor": "#b7bbc866", } } - underlayColor="#f2f4f6" + underlayColor="#f3f5f9" > <View accessibilityRole="none" @@ -3575,12 +3575,12 @@ exports[`OrdersList resets filter to all after other filter was set 2`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -3635,12 +3635,12 @@ exports[`OrdersList resets filter to all after other filter was set 2`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -3653,12 +3653,12 @@ exports[`OrdersList resets filter to all after other filter was set 2`] = ` accessibilityRole="text" style={ { - "color": "#1c8234", - "fontFamily": "EuclidCircularB-Bold", - "fontSize": 12, + "color": "#1c7e33", + "fontFamily": "CentraNo1-Bold", + "fontSize": 14, "fontWeight": "700", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -3687,12 +3687,12 @@ exports[`OrdersList resets filter to all after other filter was set 2`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -3704,12 +3704,12 @@ exports[`OrdersList resets filter to all after other filter was set 2`] = ` accessibilityRole="text" style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -3733,10 +3733,10 @@ exports[`OrdersList resets filter to all after other filter was set 2`] = ` style={ { "borderBottomWidth": 0.5, - "borderColor": "#BBC0C566", + "borderColor": "#b7bbc866", } } - underlayColor="#f2f4f6" + underlayColor="#f3f5f9" > <View accessibilityRole="none" @@ -3758,12 +3758,12 @@ exports[`OrdersList resets filter to all after other filter was set 2`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -3818,12 +3818,12 @@ exports[`OrdersList resets filter to all after other filter was set 2`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -3836,12 +3836,12 @@ exports[`OrdersList resets filter to all after other filter was set 2`] = ` accessibilityRole="text" style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Bold", - "fontSize": 12, + "color": "#4459ff", + "fontFamily": "CentraNo1-Bold", + "fontSize": 14, "fontWeight": "700", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -3870,12 +3870,12 @@ exports[`OrdersList resets filter to all after other filter was set 2`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -3887,12 +3887,12 @@ exports[`OrdersList resets filter to all after other filter was set 2`] = ` accessibilityRole="text" style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -3916,10 +3916,10 @@ exports[`OrdersList resets filter to all after other filter was set 2`] = ` style={ { "borderBottomWidth": 0.5, - "borderColor": "#BBC0C566", + "borderColor": "#b7bbc866", } } - underlayColor="#f2f4f6" + underlayColor="#f3f5f9" > <View accessibilityRole="none" @@ -3941,12 +3941,12 @@ exports[`OrdersList resets filter to all after other filter was set 2`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -4001,12 +4001,12 @@ exports[`OrdersList resets filter to all after other filter was set 2`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -4019,12 +4019,12 @@ exports[`OrdersList resets filter to all after other filter was set 2`] = ` accessibilityRole="text" style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Bold", - "fontSize": 12, + "color": "#4459ff", + "fontFamily": "CentraNo1-Bold", + "fontSize": 14, "fontWeight": "700", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -4053,12 +4053,12 @@ exports[`OrdersList resets filter to all after other filter was set 2`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -4070,12 +4070,12 @@ exports[`OrdersList resets filter to all after other filter was set 2`] = ` accessibilityRole="text" style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -4099,10 +4099,10 @@ exports[`OrdersList resets filter to all after other filter was set 2`] = ` style={ { "borderBottomWidth": 0.5, - "borderColor": "#BBC0C566", + "borderColor": "#b7bbc866", } } - underlayColor="#f2f4f6" + underlayColor="#f3f5f9" > <View accessibilityRole="none" @@ -4124,12 +4124,12 @@ exports[`OrdersList resets filter to all after other filter was set 2`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -4184,12 +4184,12 @@ exports[`OrdersList resets filter to all after other filter was set 2`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -4202,12 +4202,12 @@ exports[`OrdersList resets filter to all after other filter was set 2`] = ` accessibilityRole="text" style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Bold", - "fontSize": 12, + "color": "#4459ff", + "fontFamily": "CentraNo1-Bold", + "fontSize": 14, "fontWeight": "700", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -4236,12 +4236,12 @@ exports[`OrdersList resets filter to all after other filter was set 2`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -4253,12 +4253,12 @@ exports[`OrdersList resets filter to all after other filter was set 2`] = ` accessibilityRole="text" style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > diff --git a/app/components/UI/Ramp/Views/PaymentMethods/__snapshots__/PaymentMethods.test.tsx.snap b/app/components/UI/Ramp/Views/PaymentMethods/__snapshots__/PaymentMethods.test.tsx.snap index 12859951e071..bc7914e70022 100644 --- a/app/components/UI/Ramp/Views/PaymentMethods/__snapshots__/PaymentMethods.test.tsx.snap +++ b/app/components/UI/Ramp/Views/PaymentMethods/__snapshots__/PaymentMethods.test.tsx.snap @@ -130,8 +130,8 @@ exports[`PaymentMethods View renders correctly 1`] = ` <Text style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Regular", + "color": "#4459ff", + "fontFamily": "CentraNo1-Book", "fontSize": 23.57142857142857, "fontWeight": "400", } @@ -166,12 +166,12 @@ exports[`PaymentMethods View renders correctly 1`] = ` numberOfLines={1} style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Bold", + "fontSize": 16, "fontWeight": "700", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -190,12 +190,12 @@ exports[`PaymentMethods View renders correctly 1`] = ` numberOfLines={1} style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -233,8 +233,8 @@ exports[`PaymentMethods View renders correctly 1`] = ` <Text style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Regular", + "color": "#4459ff", + "fontFamily": "CentraNo1-Book", "fontSize": 23.57142857142857, "fontWeight": "400", } @@ -482,14 +482,14 @@ exports[`PaymentMethods View renders correctly 1`] = ` style={ [ { - "borderColor": "#848c96", + "borderColor": "#b7bbc8", "borderRadius": 8, "borderWidth": 1.5, "padding": 16, }, undefined, { - "borderColor": "#0376c9", + "borderColor": "#4459ff", }, { "padding": 0, @@ -528,7 +528,7 @@ exports[`PaymentMethods View renders correctly 1`] = ` [ { "alignItems": "center", - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", "borderRadius": 6, "height": 38, "justifyContent": "center", @@ -547,7 +547,7 @@ exports[`PaymentMethods View renders correctly 1`] = ` "fontSize": 16, }, { - "color": "#141618", + "color": "#121314", }, { "fontFamily": "Material Design Icons", @@ -583,9 +583,9 @@ exports[`PaymentMethods View renders correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 16, + "color": "#121314", + "fontFamily": "CentraNo1-Medium", + "fontSize": 18, "fontWeight": "500", "letterSpacing": 0, "lineHeight": 24, @@ -649,7 +649,7 @@ exports[`PaymentMethods View renders correctly 1`] = ` style={ [ { - "backgroundColor": "#BBC0C566", + "backgroundColor": "#b7bbc866", "height": 1, "marginVertical": 12, }, @@ -661,12 +661,12 @@ exports[`PaymentMethods View renders correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -698,12 +698,12 @@ exports[`PaymentMethods View renders correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -713,12 +713,12 @@ exports[`PaymentMethods View renders correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -728,12 +728,12 @@ exports[`PaymentMethods View renders correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -769,7 +769,7 @@ exports[`PaymentMethods View renders correctly 1`] = ` style={ [ { - "borderColor": "#848c96", + "borderColor": "#b7bbc8", "borderRadius": 8, "borderWidth": 1.5, "padding": 16, @@ -813,7 +813,7 @@ exports[`PaymentMethods View renders correctly 1`] = ` [ { "alignItems": "center", - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", "borderRadius": 6, "height": 38, "justifyContent": "center", @@ -832,7 +832,7 @@ exports[`PaymentMethods View renders correctly 1`] = ` "fontSize": 16, }, { - "color": "#141618", + "color": "#121314", }, { "fontFamily": "FontAwesome", @@ -868,9 +868,9 @@ exports[`PaymentMethods View renders correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 16, + "color": "#121314", + "fontFamily": "CentraNo1-Medium", + "fontSize": 18, "fontWeight": "500", "letterSpacing": 0, "lineHeight": 24, @@ -949,7 +949,7 @@ exports[`PaymentMethods View renders correctly 1`] = ` style={ [ { - "backgroundColor": "#BBC0C566", + "backgroundColor": "#b7bbc866", "height": 1, "marginVertical": 12, }, @@ -961,12 +961,12 @@ exports[`PaymentMethods View renders correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -998,12 +998,12 @@ exports[`PaymentMethods View renders correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -1013,12 +1013,12 @@ exports[`PaymentMethods View renders correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#9fa6ae", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#9ca1af", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -1028,12 +1028,12 @@ exports[`PaymentMethods View renders correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#9fa6ae", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#9ca1af", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -1071,7 +1071,7 @@ exports[`PaymentMethods View renders correctly 1`] = ` style={ [ { - "borderColor": "#848c96", + "borderColor": "#b7bbc8", "borderRadius": 8, "borderWidth": 1.5, "padding": 16, @@ -1115,7 +1115,7 @@ exports[`PaymentMethods View renders correctly 1`] = ` [ { "alignItems": "center", - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", "borderRadius": 6, "height": 38, "justifyContent": "center", @@ -1134,7 +1134,7 @@ exports[`PaymentMethods View renders correctly 1`] = ` "fontSize": 16, }, { - "color": "#141618", + "color": "#121314", }, { "fontFamily": "Material Icons", @@ -1170,9 +1170,9 @@ exports[`PaymentMethods View renders correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 16, + "color": "#121314", + "fontFamily": "CentraNo1-Medium", + "fontSize": 18, "fontWeight": "500", "letterSpacing": 0, "lineHeight": 24, @@ -1251,7 +1251,7 @@ exports[`PaymentMethods View renders correctly 1`] = ` style={ [ { - "backgroundColor": "#BBC0C566", + "backgroundColor": "#b7bbc866", "height": 1, "marginVertical": 12, }, @@ -1263,12 +1263,12 @@ exports[`PaymentMethods View renders correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -1300,12 +1300,12 @@ exports[`PaymentMethods View renders correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -1315,12 +1315,12 @@ exports[`PaymentMethods View renders correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#9fa6ae", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#9ca1af", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -1330,12 +1330,12 @@ exports[`PaymentMethods View renders correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#9fa6ae", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#9ca1af", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -1392,7 +1392,7 @@ exports[`PaymentMethods View renders correctly 1`] = ` "padding": 15, }, { - "backgroundColor": "#0376c9", + "backgroundColor": "#4459ff", "minHeight": 50, }, undefined, @@ -1413,7 +1413,7 @@ exports[`PaymentMethods View renders correctly 1`] = ` null, [ { - "fontFamily": "EuclidCircularB-Bold", + "fontFamily": "CentraNo1-Bold", "fontSize": 14, "fontWeight": "600", "textAlign": "center", @@ -1577,8 +1577,8 @@ exports[`PaymentMethods View renders correctly for sell 1`] = ` <Text style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Regular", + "color": "#4459ff", + "fontFamily": "CentraNo1-Book", "fontSize": 23.57142857142857, "fontWeight": "400", } @@ -1613,12 +1613,12 @@ exports[`PaymentMethods View renders correctly for sell 1`] = ` numberOfLines={1} style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Bold", + "fontSize": 16, "fontWeight": "700", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -1637,12 +1637,12 @@ exports[`PaymentMethods View renders correctly for sell 1`] = ` numberOfLines={1} style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -1680,8 +1680,8 @@ exports[`PaymentMethods View renders correctly for sell 1`] = ` <Text style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Regular", + "color": "#4459ff", + "fontFamily": "CentraNo1-Book", "fontSize": 23.57142857142857, "fontWeight": "400", } @@ -1929,14 +1929,14 @@ exports[`PaymentMethods View renders correctly for sell 1`] = ` style={ [ { - "borderColor": "#848c96", + "borderColor": "#b7bbc8", "borderRadius": 8, "borderWidth": 1.5, "padding": 16, }, undefined, { - "borderColor": "#0376c9", + "borderColor": "#4459ff", }, { "padding": 0, @@ -1975,7 +1975,7 @@ exports[`PaymentMethods View renders correctly for sell 1`] = ` [ { "alignItems": "center", - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", "borderRadius": 6, "height": 38, "justifyContent": "center", @@ -1994,7 +1994,7 @@ exports[`PaymentMethods View renders correctly for sell 1`] = ` "fontSize": 16, }, { - "color": "#141618", + "color": "#121314", }, { "fontFamily": "Material Design Icons", @@ -2030,9 +2030,9 @@ exports[`PaymentMethods View renders correctly for sell 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 16, + "color": "#121314", + "fontFamily": "CentraNo1-Medium", + "fontSize": 18, "fontWeight": "500", "letterSpacing": 0, "lineHeight": 24, @@ -2096,7 +2096,7 @@ exports[`PaymentMethods View renders correctly for sell 1`] = ` style={ [ { - "backgroundColor": "#BBC0C566", + "backgroundColor": "#b7bbc866", "height": 1, "marginVertical": 12, }, @@ -2108,12 +2108,12 @@ exports[`PaymentMethods View renders correctly for sell 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -2145,12 +2145,12 @@ exports[`PaymentMethods View renders correctly for sell 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -2160,12 +2160,12 @@ exports[`PaymentMethods View renders correctly for sell 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -2175,12 +2175,12 @@ exports[`PaymentMethods View renders correctly for sell 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -2216,7 +2216,7 @@ exports[`PaymentMethods View renders correctly for sell 1`] = ` style={ [ { - "borderColor": "#848c96", + "borderColor": "#b7bbc8", "borderRadius": 8, "borderWidth": 1.5, "padding": 16, @@ -2260,7 +2260,7 @@ exports[`PaymentMethods View renders correctly for sell 1`] = ` [ { "alignItems": "center", - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", "borderRadius": 6, "height": 38, "justifyContent": "center", @@ -2279,7 +2279,7 @@ exports[`PaymentMethods View renders correctly for sell 1`] = ` "fontSize": 16, }, { - "color": "#141618", + "color": "#121314", }, { "fontFamily": "FontAwesome", @@ -2315,9 +2315,9 @@ exports[`PaymentMethods View renders correctly for sell 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 16, + "color": "#121314", + "fontFamily": "CentraNo1-Medium", + "fontSize": 18, "fontWeight": "500", "letterSpacing": 0, "lineHeight": 24, @@ -2396,7 +2396,7 @@ exports[`PaymentMethods View renders correctly for sell 1`] = ` style={ [ { - "backgroundColor": "#BBC0C566", + "backgroundColor": "#b7bbc866", "height": 1, "marginVertical": 12, }, @@ -2408,12 +2408,12 @@ exports[`PaymentMethods View renders correctly for sell 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -2445,12 +2445,12 @@ exports[`PaymentMethods View renders correctly for sell 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -2460,12 +2460,12 @@ exports[`PaymentMethods View renders correctly for sell 1`] = ` accessibilityRole="text" style={ { - "color": "#9fa6ae", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#9ca1af", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -2475,12 +2475,12 @@ exports[`PaymentMethods View renders correctly for sell 1`] = ` accessibilityRole="text" style={ { - "color": "#9fa6ae", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#9ca1af", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -2518,7 +2518,7 @@ exports[`PaymentMethods View renders correctly for sell 1`] = ` style={ [ { - "borderColor": "#848c96", + "borderColor": "#b7bbc8", "borderRadius": 8, "borderWidth": 1.5, "padding": 16, @@ -2562,7 +2562,7 @@ exports[`PaymentMethods View renders correctly for sell 1`] = ` [ { "alignItems": "center", - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", "borderRadius": 6, "height": 38, "justifyContent": "center", @@ -2581,7 +2581,7 @@ exports[`PaymentMethods View renders correctly for sell 1`] = ` "fontSize": 16, }, { - "color": "#141618", + "color": "#121314", }, { "fontFamily": "Material Icons", @@ -2617,9 +2617,9 @@ exports[`PaymentMethods View renders correctly for sell 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 16, + "color": "#121314", + "fontFamily": "CentraNo1-Medium", + "fontSize": 18, "fontWeight": "500", "letterSpacing": 0, "lineHeight": 24, @@ -2698,7 +2698,7 @@ exports[`PaymentMethods View renders correctly for sell 1`] = ` style={ [ { - "backgroundColor": "#BBC0C566", + "backgroundColor": "#b7bbc866", "height": 1, "marginVertical": 12, }, @@ -2710,12 +2710,12 @@ exports[`PaymentMethods View renders correctly for sell 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -2747,12 +2747,12 @@ exports[`PaymentMethods View renders correctly for sell 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -2762,12 +2762,12 @@ exports[`PaymentMethods View renders correctly for sell 1`] = ` accessibilityRole="text" style={ { - "color": "#9fa6ae", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#9ca1af", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -2777,12 +2777,12 @@ exports[`PaymentMethods View renders correctly for sell 1`] = ` accessibilityRole="text" style={ { - "color": "#9fa6ae", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#9ca1af", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -2839,7 +2839,7 @@ exports[`PaymentMethods View renders correctly for sell 1`] = ` "padding": 15, }, { - "backgroundColor": "#0376c9", + "backgroundColor": "#4459ff", "minHeight": 50, }, undefined, @@ -2860,7 +2860,7 @@ exports[`PaymentMethods View renders correctly for sell 1`] = ` null, [ { - "fontFamily": "EuclidCircularB-Bold", + "fontFamily": "CentraNo1-Bold", "fontSize": 14, "fontWeight": "600", "textAlign": "center", @@ -3024,8 +3024,8 @@ exports[`PaymentMethods View renders correctly while loading 1`] = ` <Text style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Regular", + "color": "#4459ff", + "fontFamily": "CentraNo1-Book", "fontSize": 23.57142857142857, "fontWeight": "400", } @@ -3060,12 +3060,12 @@ exports[`PaymentMethods View renders correctly while loading 1`] = ` numberOfLines={1} style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Bold", + "fontSize": 16, "fontWeight": "700", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -3084,12 +3084,12 @@ exports[`PaymentMethods View renders correctly while loading 1`] = ` numberOfLines={1} style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -3127,8 +3127,8 @@ exports[`PaymentMethods View renders correctly while loading 1`] = ` <Text style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Regular", + "color": "#4459ff", + "fontFamily": "CentraNo1-Book", "fontSize": 23.57142857142857, "fontWeight": "400", } @@ -3374,7 +3374,7 @@ exports[`PaymentMethods View renders correctly while loading 1`] = ` style={ [ { - "borderColor": "#848c96", + "borderColor": "#b7bbc8", "borderRadius": 8, "borderWidth": 1.5, "padding": 16, @@ -3417,7 +3417,7 @@ exports[`PaymentMethods View renders correctly while loading 1`] = ` style={ [ { - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", "borderRadius": 6, "padding": 18, }, @@ -3447,7 +3447,7 @@ exports[`PaymentMethods View renders correctly while loading 1`] = ` style={ [ { - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", "borderRadius": 30, "padding": 14, }, @@ -3495,12 +3495,12 @@ exports[`PaymentMethods View renders correctly while loading 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -3508,7 +3508,7 @@ exports[`PaymentMethods View renders correctly while loading 1`] = ` style={ [ { - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", "borderRadius": 30, "padding": 14, }, @@ -3536,7 +3536,7 @@ exports[`PaymentMethods View renders correctly while loading 1`] = ` style={ [ { - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", "borderRadius": 30, "padding": 14, }, @@ -3573,7 +3573,7 @@ exports[`PaymentMethods View renders correctly while loading 1`] = ` style={ [ { - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", "borderRadius": 30, "padding": 14, }, @@ -3623,7 +3623,7 @@ exports[`PaymentMethods View renders correctly while loading 1`] = ` style={ [ { - "borderColor": "#848c96", + "borderColor": "#b7bbc8", "borderRadius": 8, "borderWidth": 1.5, "padding": 16, @@ -3666,7 +3666,7 @@ exports[`PaymentMethods View renders correctly while loading 1`] = ` style={ [ { - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", "borderRadius": 6, "padding": 18, }, @@ -3696,7 +3696,7 @@ exports[`PaymentMethods View renders correctly while loading 1`] = ` style={ [ { - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", "borderRadius": 30, "padding": 14, }, @@ -3744,12 +3744,12 @@ exports[`PaymentMethods View renders correctly while loading 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -3757,7 +3757,7 @@ exports[`PaymentMethods View renders correctly while loading 1`] = ` style={ [ { - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", "borderRadius": 30, "padding": 14, }, @@ -3785,7 +3785,7 @@ exports[`PaymentMethods View renders correctly while loading 1`] = ` style={ [ { - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", "borderRadius": 30, "padding": 14, }, @@ -3822,7 +3822,7 @@ exports[`PaymentMethods View renders correctly while loading 1`] = ` style={ [ { - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", "borderRadius": 30, "padding": 14, }, @@ -3874,7 +3874,7 @@ exports[`PaymentMethods View renders correctly while loading 1`] = ` style={ [ { - "borderColor": "#848c96", + "borderColor": "#b7bbc8", "borderRadius": 8, "borderWidth": 1.5, "padding": 16, @@ -3917,7 +3917,7 @@ exports[`PaymentMethods View renders correctly while loading 1`] = ` style={ [ { - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", "borderRadius": 6, "padding": 18, }, @@ -3947,7 +3947,7 @@ exports[`PaymentMethods View renders correctly while loading 1`] = ` style={ [ { - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", "borderRadius": 30, "padding": 14, }, @@ -3995,12 +3995,12 @@ exports[`PaymentMethods View renders correctly while loading 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -4008,7 +4008,7 @@ exports[`PaymentMethods View renders correctly while loading 1`] = ` style={ [ { - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", "borderRadius": 30, "padding": 14, }, @@ -4036,7 +4036,7 @@ exports[`PaymentMethods View renders correctly while loading 1`] = ` style={ [ { - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", "borderRadius": 30, "padding": 14, }, @@ -4073,7 +4073,7 @@ exports[`PaymentMethods View renders correctly while loading 1`] = ` style={ [ { - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", "borderRadius": 30, "padding": 14, }, @@ -4249,8 +4249,8 @@ exports[`PaymentMethods View renders correctly with empty data 1`] = ` <Text style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Regular", + "color": "#4459ff", + "fontFamily": "CentraNo1-Book", "fontSize": 23.57142857142857, "fontWeight": "400", } @@ -4285,12 +4285,12 @@ exports[`PaymentMethods View renders correctly with empty data 1`] = ` numberOfLines={1} style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Bold", + "fontSize": 16, "fontWeight": "700", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -4309,12 +4309,12 @@ exports[`PaymentMethods View renders correctly with empty data 1`] = ` numberOfLines={1} style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -4352,8 +4352,8 @@ exports[`PaymentMethods View renders correctly with empty data 1`] = ` <Text style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Regular", + "color": "#4459ff", + "fontFamily": "CentraNo1-Book", "fontSize": 23.57142857142857, "fontWeight": "400", } @@ -4607,7 +4607,7 @@ exports[`PaymentMethods View renders correctly with empty data 1`] = ` "textAlign": "center", }, { - "color": "#0376c9", + "color": "#4459ff", }, ], { @@ -4633,12 +4633,12 @@ exports[`PaymentMethods View renders correctly with empty data 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", + "color": "#121314", + "fontFamily": "CentraNo1-Bold", "fontSize": 18, "fontWeight": "600", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, "marginVertical": 3, "textAlign": "center", } @@ -4658,8 +4658,8 @@ exports[`PaymentMethods View renders correctly with empty data 1`] = ` style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -4673,7 +4673,7 @@ exports[`PaymentMethods View renders correctly with empty data 1`] = ` undefined, undefined, { - "color": "#6a737d", + "color": "#686e7d", }, undefined, undefined, @@ -4721,7 +4721,7 @@ If you selected Chile by mistake, click the button below to reset your region. "padding": 15, }, { - "backgroundColor": "#0376c9", + "backgroundColor": "#4459ff", "minHeight": 50, }, undefined, @@ -4742,7 +4742,7 @@ If you selected Chile by mistake, click the button below to reset your region. null, [ { - "fontFamily": "EuclidCircularB-Bold", + "fontFamily": "CentraNo1-Bold", "fontSize": 14, "fontWeight": "600", "textAlign": "center", @@ -4907,8 +4907,8 @@ exports[`PaymentMethods View renders correctly with empty data for sell 1`] = ` <Text style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Regular", + "color": "#4459ff", + "fontFamily": "CentraNo1-Book", "fontSize": 23.57142857142857, "fontWeight": "400", } @@ -4943,12 +4943,12 @@ exports[`PaymentMethods View renders correctly with empty data for sell 1`] = ` numberOfLines={1} style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Bold", + "fontSize": 16, "fontWeight": "700", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -4967,12 +4967,12 @@ exports[`PaymentMethods View renders correctly with empty data for sell 1`] = ` numberOfLines={1} style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -5010,8 +5010,8 @@ exports[`PaymentMethods View renders correctly with empty data for sell 1`] = ` <Text style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Regular", + "color": "#4459ff", + "fontFamily": "CentraNo1-Book", "fontSize": 23.57142857142857, "fontWeight": "400", } @@ -5265,7 +5265,7 @@ exports[`PaymentMethods View renders correctly with empty data for sell 1`] = ` "textAlign": "center", }, { - "color": "#0376c9", + "color": "#4459ff", }, ], { @@ -5291,12 +5291,12 @@ exports[`PaymentMethods View renders correctly with empty data for sell 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", + "color": "#121314", + "fontFamily": "CentraNo1-Bold", "fontSize": 18, "fontWeight": "600", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, "marginVertical": 3, "textAlign": "center", } @@ -5316,8 +5316,8 @@ exports[`PaymentMethods View renders correctly with empty data for sell 1`] = ` style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -5331,7 +5331,7 @@ exports[`PaymentMethods View renders correctly with empty data for sell 1`] = ` undefined, undefined, { - "color": "#6a737d", + "color": "#686e7d", }, undefined, undefined, @@ -5379,7 +5379,7 @@ If you selected Chile by mistake, click the button below to reset your region. "padding": 15, }, { - "backgroundColor": "#0376c9", + "backgroundColor": "#4459ff", "minHeight": 50, }, undefined, @@ -5400,7 +5400,7 @@ If you selected Chile by mistake, click the button below to reset your region. null, [ { - "fontFamily": "EuclidCircularB-Bold", + "fontFamily": "CentraNo1-Bold", "fontSize": 14, "fontWeight": "600", "textAlign": "center", @@ -5565,8 +5565,8 @@ exports[`PaymentMethods View renders correctly with error 1`] = ` <Text style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Regular", + "color": "#4459ff", + "fontFamily": "CentraNo1-Book", "fontSize": 23.57142857142857, "fontWeight": "400", } @@ -5601,12 +5601,12 @@ exports[`PaymentMethods View renders correctly with error 1`] = ` numberOfLines={1} style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Bold", + "fontSize": 16, "fontWeight": "700", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -5625,12 +5625,12 @@ exports[`PaymentMethods View renders correctly with error 1`] = ` numberOfLines={1} style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -5668,8 +5668,8 @@ exports[`PaymentMethods View renders correctly with error 1`] = ` <Text style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Regular", + "color": "#4459ff", + "fontFamily": "CentraNo1-Book", "fontSize": 23.57142857142857, "fontWeight": "400", } @@ -5923,7 +5923,7 @@ exports[`PaymentMethods View renders correctly with error 1`] = ` "textAlign": "center", }, { - "color": "#d73847", + "color": "#ca3542", }, ], { @@ -5949,12 +5949,12 @@ exports[`PaymentMethods View renders correctly with error 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", + "color": "#121314", + "fontFamily": "CentraNo1-Bold", "fontSize": 18, "fontWeight": "600", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, "marginVertical": 3, "textAlign": "center", } @@ -5974,8 +5974,8 @@ exports[`PaymentMethods View renders correctly with error 1`] = ` style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -5989,7 +5989,7 @@ exports[`PaymentMethods View renders correctly with error 1`] = ` undefined, undefined, { - "color": "#6a737d", + "color": "#686e7d", }, undefined, undefined, @@ -6035,7 +6035,7 @@ exports[`PaymentMethods View renders correctly with error 1`] = ` "padding": 15, }, { - "backgroundColor": "#0376c9", + "backgroundColor": "#4459ff", "minHeight": 50, }, undefined, @@ -6056,7 +6056,7 @@ exports[`PaymentMethods View renders correctly with error 1`] = ` null, [ { - "fontFamily": "EuclidCircularB-Bold", + "fontFamily": "CentraNo1-Bold", "fontSize": 14, "fontWeight": "600", "textAlign": "center", @@ -6221,8 +6221,8 @@ exports[`PaymentMethods View renders correctly with null data 1`] = ` <Text style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Regular", + "color": "#4459ff", + "fontFamily": "CentraNo1-Book", "fontSize": 23.57142857142857, "fontWeight": "400", } @@ -6257,12 +6257,12 @@ exports[`PaymentMethods View renders correctly with null data 1`] = ` numberOfLines={1} style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Bold", + "fontSize": 16, "fontWeight": "700", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -6281,12 +6281,12 @@ exports[`PaymentMethods View renders correctly with null data 1`] = ` numberOfLines={1} style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -6324,8 +6324,8 @@ exports[`PaymentMethods View renders correctly with null data 1`] = ` <Text style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Regular", + "color": "#4459ff", + "fontFamily": "CentraNo1-Book", "fontSize": 23.57142857142857, "fontWeight": "400", } @@ -6571,7 +6571,7 @@ exports[`PaymentMethods View renders correctly with null data 1`] = ` style={ [ { - "borderColor": "#848c96", + "borderColor": "#b7bbc8", "borderRadius": 8, "borderWidth": 1.5, "padding": 16, @@ -6614,7 +6614,7 @@ exports[`PaymentMethods View renders correctly with null data 1`] = ` style={ [ { - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", "borderRadius": 6, "padding": 18, }, @@ -6644,7 +6644,7 @@ exports[`PaymentMethods View renders correctly with null data 1`] = ` style={ [ { - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", "borderRadius": 30, "padding": 14, }, @@ -6692,12 +6692,12 @@ exports[`PaymentMethods View renders correctly with null data 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -6705,7 +6705,7 @@ exports[`PaymentMethods View renders correctly with null data 1`] = ` style={ [ { - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", "borderRadius": 30, "padding": 14, }, @@ -6733,7 +6733,7 @@ exports[`PaymentMethods View renders correctly with null data 1`] = ` style={ [ { - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", "borderRadius": 30, "padding": 14, }, @@ -6770,7 +6770,7 @@ exports[`PaymentMethods View renders correctly with null data 1`] = ` style={ [ { - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", "borderRadius": 30, "padding": 14, }, @@ -6820,7 +6820,7 @@ exports[`PaymentMethods View renders correctly with null data 1`] = ` style={ [ { - "borderColor": "#848c96", + "borderColor": "#b7bbc8", "borderRadius": 8, "borderWidth": 1.5, "padding": 16, @@ -6863,7 +6863,7 @@ exports[`PaymentMethods View renders correctly with null data 1`] = ` style={ [ { - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", "borderRadius": 6, "padding": 18, }, @@ -6893,7 +6893,7 @@ exports[`PaymentMethods View renders correctly with null data 1`] = ` style={ [ { - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", "borderRadius": 30, "padding": 14, }, @@ -6941,12 +6941,12 @@ exports[`PaymentMethods View renders correctly with null data 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -6954,7 +6954,7 @@ exports[`PaymentMethods View renders correctly with null data 1`] = ` style={ [ { - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", "borderRadius": 30, "padding": 14, }, @@ -6982,7 +6982,7 @@ exports[`PaymentMethods View renders correctly with null data 1`] = ` style={ [ { - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", "borderRadius": 30, "padding": 14, }, @@ -7019,7 +7019,7 @@ exports[`PaymentMethods View renders correctly with null data 1`] = ` style={ [ { - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", "borderRadius": 30, "padding": 14, }, @@ -7071,7 +7071,7 @@ exports[`PaymentMethods View renders correctly with null data 1`] = ` style={ [ { - "borderColor": "#848c96", + "borderColor": "#b7bbc8", "borderRadius": 8, "borderWidth": 1.5, "padding": 16, @@ -7114,7 +7114,7 @@ exports[`PaymentMethods View renders correctly with null data 1`] = ` style={ [ { - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", "borderRadius": 6, "padding": 18, }, @@ -7144,7 +7144,7 @@ exports[`PaymentMethods View renders correctly with null data 1`] = ` style={ [ { - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", "borderRadius": 30, "padding": 14, }, @@ -7192,12 +7192,12 @@ exports[`PaymentMethods View renders correctly with null data 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -7205,7 +7205,7 @@ exports[`PaymentMethods View renders correctly with null data 1`] = ` style={ [ { - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", "borderRadius": 30, "padding": 14, }, @@ -7233,7 +7233,7 @@ exports[`PaymentMethods View renders correctly with null data 1`] = ` style={ [ { - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", "borderRadius": 30, "padding": 14, }, @@ -7270,7 +7270,7 @@ exports[`PaymentMethods View renders correctly with null data 1`] = ` style={ [ { - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", "borderRadius": 30, "padding": 14, }, @@ -7446,8 +7446,8 @@ exports[`PaymentMethods View renders correctly with payment method with disclaim <Text style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Regular", + "color": "#4459ff", + "fontFamily": "CentraNo1-Book", "fontSize": 23.57142857142857, "fontWeight": "400", } @@ -7482,12 +7482,12 @@ exports[`PaymentMethods View renders correctly with payment method with disclaim numberOfLines={1} style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Bold", + "fontSize": 16, "fontWeight": "700", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -7506,12 +7506,12 @@ exports[`PaymentMethods View renders correctly with payment method with disclaim numberOfLines={1} style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -7549,8 +7549,8 @@ exports[`PaymentMethods View renders correctly with payment method with disclaim <Text style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Regular", + "color": "#4459ff", + "fontFamily": "CentraNo1-Book", "fontSize": 23.57142857142857, "fontWeight": "400", } @@ -7800,7 +7800,7 @@ exports[`PaymentMethods View renders correctly with payment method with disclaim style={ [ { - "borderColor": "#848c96", + "borderColor": "#b7bbc8", "borderRadius": 8, "borderWidth": 1.5, "padding": 16, @@ -7844,7 +7844,7 @@ exports[`PaymentMethods View renders correctly with payment method with disclaim [ { "alignItems": "center", - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", "borderRadius": 6, "height": 38, "justifyContent": "center", @@ -7863,7 +7863,7 @@ exports[`PaymentMethods View renders correctly with payment method with disclaim "fontSize": 16, }, { - "color": "#141618", + "color": "#121314", }, { "fontFamily": "Material Design Icons", @@ -7899,9 +7899,9 @@ exports[`PaymentMethods View renders correctly with payment method with disclaim accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 16, + "color": "#121314", + "fontFamily": "CentraNo1-Medium", + "fontSize": 18, "fontWeight": "500", "letterSpacing": 0, "lineHeight": 24, @@ -7965,7 +7965,7 @@ exports[`PaymentMethods View renders correctly with payment method with disclaim style={ [ { - "backgroundColor": "#BBC0C566", + "backgroundColor": "#b7bbc866", "height": 1, "marginVertical": 12, }, @@ -7977,12 +7977,12 @@ exports[`PaymentMethods View renders correctly with payment method with disclaim accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -8014,12 +8014,12 @@ exports[`PaymentMethods View renders correctly with payment method with disclaim accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -8029,12 +8029,12 @@ exports[`PaymentMethods View renders correctly with payment method with disclaim accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -8044,12 +8044,12 @@ exports[`PaymentMethods View renders correctly with payment method with disclaim accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -8083,14 +8083,14 @@ exports[`PaymentMethods View renders correctly with payment method with disclaim style={ [ { - "borderColor": "#848c96", + "borderColor": "#b7bbc8", "borderRadius": 8, "borderWidth": 1.5, "padding": 16, }, undefined, { - "borderColor": "#0376c9", + "borderColor": "#4459ff", }, { "padding": 0, @@ -8129,7 +8129,7 @@ exports[`PaymentMethods View renders correctly with payment method with disclaim [ { "alignItems": "center", - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", "borderRadius": 6, "height": 38, "justifyContent": "center", @@ -8148,7 +8148,7 @@ exports[`PaymentMethods View renders correctly with payment method with disclaim "fontSize": 16, }, { - "color": "#141618", + "color": "#121314", }, { "fontFamily": "FontAwesome", @@ -8184,9 +8184,9 @@ exports[`PaymentMethods View renders correctly with payment method with disclaim accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 16, + "color": "#121314", + "fontFamily": "CentraNo1-Medium", + "fontSize": 18, "fontWeight": "500", "letterSpacing": 0, "lineHeight": 24, @@ -8265,7 +8265,7 @@ exports[`PaymentMethods View renders correctly with payment method with disclaim style={ [ { - "backgroundColor": "#BBC0C566", + "backgroundColor": "#b7bbc866", "height": 1, "marginVertical": 12, }, @@ -8277,12 +8277,12 @@ exports[`PaymentMethods View renders correctly with payment method with disclaim accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -8314,12 +8314,12 @@ exports[`PaymentMethods View renders correctly with payment method with disclaim accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -8329,12 +8329,12 @@ exports[`PaymentMethods View renders correctly with payment method with disclaim accessibilityRole="text" style={ { - "color": "#9fa6ae", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#9ca1af", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -8344,12 +8344,12 @@ exports[`PaymentMethods View renders correctly with payment method with disclaim accessibilityRole="text" style={ { - "color": "#9fa6ae", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#9ca1af", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -8387,7 +8387,7 @@ exports[`PaymentMethods View renders correctly with payment method with disclaim style={ [ { - "borderColor": "#848c96", + "borderColor": "#b7bbc8", "borderRadius": 8, "borderWidth": 1.5, "padding": 16, @@ -8431,7 +8431,7 @@ exports[`PaymentMethods View renders correctly with payment method with disclaim [ { "alignItems": "center", - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", "borderRadius": 6, "height": 38, "justifyContent": "center", @@ -8450,7 +8450,7 @@ exports[`PaymentMethods View renders correctly with payment method with disclaim "fontSize": 16, }, { - "color": "#141618", + "color": "#121314", }, { "fontFamily": "Material Icons", @@ -8486,9 +8486,9 @@ exports[`PaymentMethods View renders correctly with payment method with disclaim accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 16, + "color": "#121314", + "fontFamily": "CentraNo1-Medium", + "fontSize": 18, "fontWeight": "500", "letterSpacing": 0, "lineHeight": 24, @@ -8567,7 +8567,7 @@ exports[`PaymentMethods View renders correctly with payment method with disclaim style={ [ { - "backgroundColor": "#BBC0C566", + "backgroundColor": "#b7bbc866", "height": 1, "marginVertical": 12, }, @@ -8579,12 +8579,12 @@ exports[`PaymentMethods View renders correctly with payment method with disclaim accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -8616,12 +8616,12 @@ exports[`PaymentMethods View renders correctly with payment method with disclaim accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -8631,12 +8631,12 @@ exports[`PaymentMethods View renders correctly with payment method with disclaim accessibilityRole="text" style={ { - "color": "#9fa6ae", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#9ca1af", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -8646,12 +8646,12 @@ exports[`PaymentMethods View renders correctly with payment method with disclaim accessibilityRole="text" style={ { - "color": "#9fa6ae", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#9ca1af", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -8697,8 +8697,8 @@ exports[`PaymentMethods View renders correctly with payment method with disclaim style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -8712,7 +8712,7 @@ exports[`PaymentMethods View renders correctly with payment method with disclaim undefined, undefined, { - "color": "#6a737d", + "color": "#686e7d", }, undefined, undefined, @@ -8766,7 +8766,7 @@ exports[`PaymentMethods View renders correctly with payment method with disclaim "padding": 15, }, { - "backgroundColor": "#0376c9", + "backgroundColor": "#4459ff", "minHeight": 50, }, undefined, @@ -8787,7 +8787,7 @@ exports[`PaymentMethods View renders correctly with payment method with disclaim null, [ { - "fontFamily": "EuclidCircularB-Bold", + "fontFamily": "CentraNo1-Bold", "fontSize": 14, "fontWeight": "600", "textAlign": "center", @@ -8951,8 +8951,8 @@ exports[`PaymentMethods View renders correctly with sdkError 1`] = ` <Text style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Regular", + "color": "#4459ff", + "fontFamily": "CentraNo1-Book", "fontSize": 23.57142857142857, "fontWeight": "400", } @@ -8987,12 +8987,12 @@ exports[`PaymentMethods View renders correctly with sdkError 1`] = ` numberOfLines={1} style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Bold", + "fontSize": 16, "fontWeight": "700", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -9011,12 +9011,12 @@ exports[`PaymentMethods View renders correctly with sdkError 1`] = ` numberOfLines={1} style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -9054,8 +9054,8 @@ exports[`PaymentMethods View renders correctly with sdkError 1`] = ` <Text style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Regular", + "color": "#4459ff", + "fontFamily": "CentraNo1-Book", "fontSize": 23.57142857142857, "fontWeight": "400", } @@ -9309,7 +9309,7 @@ exports[`PaymentMethods View renders correctly with sdkError 1`] = ` "textAlign": "center", }, { - "color": "#d73847", + "color": "#ca3542", }, ], { @@ -9335,12 +9335,12 @@ exports[`PaymentMethods View renders correctly with sdkError 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", + "color": "#121314", + "fontFamily": "CentraNo1-Bold", "fontSize": 18, "fontWeight": "600", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, "marginVertical": 3, "textAlign": "center", } @@ -9360,8 +9360,8 @@ exports[`PaymentMethods View renders correctly with sdkError 1`] = ` style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -9375,7 +9375,7 @@ exports[`PaymentMethods View renders correctly with sdkError 1`] = ` undefined, undefined, { - "color": "#6a737d", + "color": "#686e7d", }, undefined, undefined, @@ -9421,7 +9421,7 @@ exports[`PaymentMethods View renders correctly with sdkError 1`] = ` "padding": 15, }, { - "backgroundColor": "#0376c9", + "backgroundColor": "#4459ff", "minHeight": 50, }, undefined, @@ -9442,7 +9442,7 @@ exports[`PaymentMethods View renders correctly with sdkError 1`] = ` null, [ { - "fontFamily": "EuclidCircularB-Bold", + "fontFamily": "CentraNo1-Bold", "fontSize": 14, "fontWeight": "600", "textAlign": "center", @@ -9620,12 +9620,12 @@ exports[`PaymentMethods View renders correctly with show back button false 1`] = numberOfLines={1} style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Bold", + "fontSize": 16, "fontWeight": "700", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -9644,12 +9644,12 @@ exports[`PaymentMethods View renders correctly with show back button false 1`] = numberOfLines={1} style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -9687,8 +9687,8 @@ exports[`PaymentMethods View renders correctly with show back button false 1`] = <Text style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Regular", + "color": "#4459ff", + "fontFamily": "CentraNo1-Book", "fontSize": 23.57142857142857, "fontWeight": "400", } @@ -9936,14 +9936,14 @@ exports[`PaymentMethods View renders correctly with show back button false 1`] = style={ [ { - "borderColor": "#848c96", + "borderColor": "#b7bbc8", "borderRadius": 8, "borderWidth": 1.5, "padding": 16, }, undefined, { - "borderColor": "#0376c9", + "borderColor": "#4459ff", }, { "padding": 0, @@ -9982,7 +9982,7 @@ exports[`PaymentMethods View renders correctly with show back button false 1`] = [ { "alignItems": "center", - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", "borderRadius": 6, "height": 38, "justifyContent": "center", @@ -10001,7 +10001,7 @@ exports[`PaymentMethods View renders correctly with show back button false 1`] = "fontSize": 16, }, { - "color": "#141618", + "color": "#121314", }, { "fontFamily": "Material Design Icons", @@ -10037,9 +10037,9 @@ exports[`PaymentMethods View renders correctly with show back button false 1`] = accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 16, + "color": "#121314", + "fontFamily": "CentraNo1-Medium", + "fontSize": 18, "fontWeight": "500", "letterSpacing": 0, "lineHeight": 24, @@ -10103,7 +10103,7 @@ exports[`PaymentMethods View renders correctly with show back button false 1`] = style={ [ { - "backgroundColor": "#BBC0C566", + "backgroundColor": "#b7bbc866", "height": 1, "marginVertical": 12, }, @@ -10115,12 +10115,12 @@ exports[`PaymentMethods View renders correctly with show back button false 1`] = accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -10152,12 +10152,12 @@ exports[`PaymentMethods View renders correctly with show back button false 1`] = accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -10167,12 +10167,12 @@ exports[`PaymentMethods View renders correctly with show back button false 1`] = accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -10182,12 +10182,12 @@ exports[`PaymentMethods View renders correctly with show back button false 1`] = accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -10223,7 +10223,7 @@ exports[`PaymentMethods View renders correctly with show back button false 1`] = style={ [ { - "borderColor": "#848c96", + "borderColor": "#b7bbc8", "borderRadius": 8, "borderWidth": 1.5, "padding": 16, @@ -10267,7 +10267,7 @@ exports[`PaymentMethods View renders correctly with show back button false 1`] = [ { "alignItems": "center", - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", "borderRadius": 6, "height": 38, "justifyContent": "center", @@ -10286,7 +10286,7 @@ exports[`PaymentMethods View renders correctly with show back button false 1`] = "fontSize": 16, }, { - "color": "#141618", + "color": "#121314", }, { "fontFamily": "FontAwesome", @@ -10322,9 +10322,9 @@ exports[`PaymentMethods View renders correctly with show back button false 1`] = accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 16, + "color": "#121314", + "fontFamily": "CentraNo1-Medium", + "fontSize": 18, "fontWeight": "500", "letterSpacing": 0, "lineHeight": 24, @@ -10403,7 +10403,7 @@ exports[`PaymentMethods View renders correctly with show back button false 1`] = style={ [ { - "backgroundColor": "#BBC0C566", + "backgroundColor": "#b7bbc866", "height": 1, "marginVertical": 12, }, @@ -10415,12 +10415,12 @@ exports[`PaymentMethods View renders correctly with show back button false 1`] = accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -10452,12 +10452,12 @@ exports[`PaymentMethods View renders correctly with show back button false 1`] = accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -10467,12 +10467,12 @@ exports[`PaymentMethods View renders correctly with show back button false 1`] = accessibilityRole="text" style={ { - "color": "#9fa6ae", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#9ca1af", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -10482,12 +10482,12 @@ exports[`PaymentMethods View renders correctly with show back button false 1`] = accessibilityRole="text" style={ { - "color": "#9fa6ae", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#9ca1af", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -10525,7 +10525,7 @@ exports[`PaymentMethods View renders correctly with show back button false 1`] = style={ [ { - "borderColor": "#848c96", + "borderColor": "#b7bbc8", "borderRadius": 8, "borderWidth": 1.5, "padding": 16, @@ -10569,7 +10569,7 @@ exports[`PaymentMethods View renders correctly with show back button false 1`] = [ { "alignItems": "center", - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", "borderRadius": 6, "height": 38, "justifyContent": "center", @@ -10588,7 +10588,7 @@ exports[`PaymentMethods View renders correctly with show back button false 1`] = "fontSize": 16, }, { - "color": "#141618", + "color": "#121314", }, { "fontFamily": "Material Icons", @@ -10624,9 +10624,9 @@ exports[`PaymentMethods View renders correctly with show back button false 1`] = accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 16, + "color": "#121314", + "fontFamily": "CentraNo1-Medium", + "fontSize": 18, "fontWeight": "500", "letterSpacing": 0, "lineHeight": 24, @@ -10705,7 +10705,7 @@ exports[`PaymentMethods View renders correctly with show back button false 1`] = style={ [ { - "backgroundColor": "#BBC0C566", + "backgroundColor": "#b7bbc866", "height": 1, "marginVertical": 12, }, @@ -10717,12 +10717,12 @@ exports[`PaymentMethods View renders correctly with show back button false 1`] = accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -10754,12 +10754,12 @@ exports[`PaymentMethods View renders correctly with show back button false 1`] = accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -10769,12 +10769,12 @@ exports[`PaymentMethods View renders correctly with show back button false 1`] = accessibilityRole="text" style={ { - "color": "#9fa6ae", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#9ca1af", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -10784,12 +10784,12 @@ exports[`PaymentMethods View renders correctly with show back button false 1`] = accessibilityRole="text" style={ { - "color": "#9fa6ae", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#9ca1af", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -10846,7 +10846,7 @@ exports[`PaymentMethods View renders correctly with show back button false 1`] = "padding": 15, }, { - "backgroundColor": "#0376c9", + "backgroundColor": "#4459ff", "minHeight": 50, }, undefined, @@ -10867,7 +10867,7 @@ exports[`PaymentMethods View renders correctly with show back button false 1`] = null, [ { - "fontFamily": "EuclidCircularB-Bold", + "fontFamily": "CentraNo1-Bold", "fontSize": 14, "fontWeight": "600", "textAlign": "center", diff --git a/app/components/UI/Ramp/Views/Quotes/Quotes.test.tsx b/app/components/UI/Ramp/Views/Quotes/Quotes.test.tsx index 13c5cdc1f15a..b9db2b68c1ae 100644 --- a/app/components/UI/Ramp/Views/Quotes/Quotes.test.tsx +++ b/app/components/UI/Ramp/Views/Quotes/Quotes.test.tsx @@ -1,6 +1,7 @@ import React from 'react'; import { BackHandler, NativeEventSubscription } from 'react-native'; import { + CryptoCurrency, ProviderBuyFeatureBrowserEnum, QuoteError, QuoteResponse, @@ -22,11 +23,12 @@ import Timer from './Timer'; import LoadingQuotes from './LoadingQuotes'; import { RampSDK } from '../../sdk'; -import useSortedQuotes from '../../hooks/useSortedQuotes'; +import useQuotesAndCustomActions from '../../hooks/useQuotesAndCustomActions'; import Routes from '../../../../../constants/navigation/Routes'; import { backgroundState } from '../../../../../util/test/initial-root-state'; -import { RampType } from '../../types'; +import { RampType, Region } from '../../types'; +import { PaymentCustomAction } from '@consensys/on-ramp-sdk/dist/API'; function render(Component: React.ComponentType) { return renderScreen( @@ -81,11 +83,15 @@ const mockUseRampSDKInitialValues: Partial<RampSDK> = { POLLING_INTERVAL: 10000, POLLING_INTERVAL_HIGHLIGHT: 1000, }, - callbackBaseUrl: '', + callbackBaseUrl: 'fake-callback-url', sdkError: undefined, rampType: RampType.BUY, isBuy: true, isSell: false, + selectedAddress: '0x1234567890', + selectedRegion: { id: 'mock-region-id' } as Region, + selectedAsset: { id: 'mock-asset-id' } as CryptoCurrency, + selectedFiatCurrencyId: 'mock-fiat-currency-id', }; let mockUseRampSDKValues: DeepPartial<RampSDK> = { @@ -99,6 +105,11 @@ jest.mock('../../sdk', () => ({ jest.mock('../../hooks/useAnalytics', () => () => mockTrackEvent); jest.mock('../../hooks/useInAppBrowser', () => () => mockRenderInAppBrowser); +jest.mock('../../hooks/useFiatCurrencies', () => () => ({ + currentFiatCurrency: { + symbol: 'USD', + } as CryptoCurrency, +})); const mockUseParamsInitialValues: DeepPartial<QuotesParams> = { amount: 50, @@ -121,14 +132,39 @@ jest.mock('../../../../../util/navigation/navUtils', () => ({ const mockQueryGetQuotes = jest.fn(); -const mockUseSortedQuotesInitialValues: Partial< - ReturnType<typeof useSortedQuotes> +const mockCustomAction: PaymentCustomAction = { + buy: { + providerId: '/providers/paypal-staging', + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore + provider: { + description: 'Per Paypal: [Paypal Description]', + environmentType: 'STAGING', + hqAddress: '123 PayPal Staging Address', + id: '/providers/paypal-staging', + logos: { + dark: 'https://on-ramp.dev-api.cx.metamask.io/assets/providers/paypal_dark.png', + height: 24, + light: + 'https://on-ramp.dev-api.cx.metamask.io/assets/providers/paypal_light.png', + width: 65, + }, + name: 'Paypal (Staging)', + }, + }, + supportedPaymentMethodIds: ['/payments/paypal', '/payments/paypal-staging'], + paymentMethodId: '/payments/paypal', +}; + +const mockUseQuotesAndCustomActionsInitialValues: Partial< + ReturnType<typeof useQuotesAndCustomActions> > = { quotes: mockQuotesData as (QuoteResponse | QuoteError)[], quotesWithoutError: mockQuotesData as QuoteResponse[], quotesWithError: [], quotesByPriceWithoutError: mockQuotesData as QuoteResponse[], quotesByReliabilityWithoutError: mockQuotesData as QuoteResponse[], + recommendedCustomAction: undefined, recommendedQuote: mockQuotesData[1] as QuoteResponse, sorted: [], isFetching: false, @@ -136,12 +172,14 @@ const mockUseSortedQuotesInitialValues: Partial< query: mockQueryGetQuotes, }; -let mockUseSortedQuotesValues: Partial<ReturnType<typeof useSortedQuotes>> = { - ...mockUseSortedQuotesInitialValues, +let mockUseQuotesAndCustomActionsValues: Partial< + ReturnType<typeof useQuotesAndCustomActions> +> = { + ...mockUseQuotesAndCustomActionsInitialValues, }; -jest.mock('../../hooks/useSortedQuotes', () => - jest.fn(() => mockUseSortedQuotesValues), +jest.mock('../../hooks/useQuotesAndCustomActions', () => + jest.fn(() => mockUseQuotesAndCustomActionsValues), ); describe('Quotes', () => { @@ -161,14 +199,14 @@ describe('Quotes', () => { mockUseParamsValues = { ...mockUseParamsInitialValues, }; - mockUseSortedQuotesValues = { - ...mockUseSortedQuotesInitialValues, + mockUseQuotesAndCustomActionsValues = { + ...mockUseQuotesAndCustomActionsInitialValues, }; }); it('calls setOptions when rendering', async () => { - mockUseSortedQuotesValues = { - ...mockUseSortedQuotesInitialValues, + mockUseQuotesAndCustomActionsValues = { + ...mockUseQuotesAndCustomActionsInitialValues, isFetching: true, quotes: undefined, quotesWithoutError: [], @@ -189,7 +227,8 @@ describe('Quotes', () => { chain_id_destination: '1', location: 'Quotes Screen', results_count: - mockUseSortedQuotesInitialValues.quotesByPriceWithoutError?.length, + mockUseQuotesAndCustomActionsInitialValues.quotesByPriceWithoutError + ?.length, }); act(() => { jest.useRealTimers(); @@ -206,7 +245,8 @@ describe('Quotes', () => { chain_id_source: '1', location: 'Quotes Screen', results_count: - mockUseSortedQuotesInitialValues.quotesByPriceWithoutError?.length, + mockUseQuotesAndCustomActionsInitialValues.quotesByPriceWithoutError + ?.length, }); act(() => { jest.useRealTimers(); @@ -215,8 +255,8 @@ describe('Quotes', () => { it('renders animation on first fetching', async () => { jest.useRealTimers(); - mockUseSortedQuotesValues = { - ...mockUseSortedQuotesInitialValues, + mockUseQuotesAndCustomActionsValues = { + ...mockUseQuotesAndCustomActionsInitialValues, isFetching: true, quotes: undefined, }; @@ -227,8 +267,9 @@ describe('Quotes', () => { }); it('renders correctly after animation without quotes', async () => { - mockUseSortedQuotesValues = { - ...mockUseSortedQuotesInitialValues, + mockUseQuotesAndCustomActionsValues = { + ...mockUseQuotesAndCustomActionsInitialValues, + customActions: [], quotesWithoutError: [], quotesByPriceWithoutError: [], quotesByReliabilityWithoutError: [], @@ -320,7 +361,7 @@ describe('Quotes', () => { browser: ProviderBuyFeatureBrowserEnum, ) => { const mockedRecommendedQuote = - mockUseSortedQuotesInitialValues.recommendedQuote; + mockUseQuotesAndCustomActionsInitialValues.recommendedQuote; if (!mockedRecommendedQuote) { throw new Error('No recommended quote found'); @@ -342,8 +383,8 @@ describe('Quotes', () => { (mockedRecommendedQuote as QuoteResponse).buy = () => Promise.resolve(mockedBuyAction); - mockUseSortedQuotesValues = { - ...mockUseSortedQuotesInitialValues, + mockUseQuotesAndCustomActionsValues = { + ...mockUseQuotesAndCustomActionsInitialValues, recommendedQuote: mockedRecommendedQuote, }; render(Quotes); @@ -367,6 +408,222 @@ describe('Quotes', () => { return { mockedRecommendedQuote, mockedBuyAction }; }; + describe('custom action', () => { + const createWidgetMock = jest.fn().mockResolvedValue({ + url: 'https://test-url.on-ramp.metamask', + orderId: 'test-order-id', + }); + + let mockedBuyAction = { + url: 'https://test-url.on-ramp.metamask', + orderId: 'test-order-id', + browser: + ProviderBuyFeatureBrowserEnum.AppBrowser as ProviderBuyFeatureBrowserEnum, + createWidget: createWidgetMock, + }; + + const getSellUrl = jest.fn().mockResolvedValue(mockedBuyAction); + const getBuyUrl = jest.fn().mockResolvedValue(mockedBuyAction); + + const mockSdk = { + getSellUrl, + getBuyUrl, + }; + + const simulateCustomActionCtaPress = async () => { + mockUseQuotesAndCustomActionsValues = { + ...mockUseQuotesAndCustomActionsInitialValues, + recommendedCustomAction: mockCustomAction, + }; + + // pull out the custom action provider name + const mockCustomActionProviderName = mockCustomAction.buy.provider + ?.name as string; + + const getUrlMethod = mockUseRampSDKValues.isBuy + ? 'getBuyUrl' + : 'getSellUrl'; + + mockSdk[getUrlMethod].mockResolvedValue(mockedBuyAction); + + render(Quotes); + + act(() => { + jest.advanceTimersByTime(3000); + jest.clearAllTimers(); + jest.useRealTimers(); + }); + + const customActionToSelect = screen.getByLabelText( + mockCustomActionProviderName, + ); + + fireEvent.press(customActionToSelect); + + const customActionContinueButton = screen.getByRole('button', { + name: `Continue with ${mockCustomActionProviderName}`, + }); + + await act(async () => { + fireEvent.press(customActionContinueButton); + }); + }; + + it('renders correctly after animation with the recommended custom action', async () => { + mockUseQuotesAndCustomActionsValues = { + ...mockUseQuotesAndCustomActionsInitialValues, + recommendedCustomAction: mockCustomAction, + }; + + render(Quotes); + act(() => { + jest.advanceTimersByTime(3000); + jest.clearAllTimers(); + }); + expect(screen.toJSON()).toMatchSnapshot(); + act(() => { + jest.useRealTimers(); + }); + }); + + it('does nothing is there is no SDK or custom action', async () => { + mockUseRampSDKValues = { + ...mockUseRampSDKInitialValues, + sdk: undefined, + }; + await simulateCustomActionCtaPress(); + expect(mockSdk.getBuyUrl).not.toHaveBeenCalled(); + expect(mockSdk.getSellUrl).not.toHaveBeenCalled(); + }); + + it('calls the correct analytics event for buy custom action', async () => { + mockUseRampSDKValues = { + ...mockUseRampSDKInitialValues, + sdk: mockSdk, + isBuy: true, + isSell: false, + }; + await simulateCustomActionCtaPress(); + expect(mockTrackEvent.mock.lastCall).toMatchInlineSnapshot(` + [ + "ONRAMP_DIRECT_PROVIDER_CLICKED", + { + "chain_id_destination": "1", + "currency_destination": undefined, + "currency_source": "USD", + "payment_method_id": "/payment-methods/test-payment-method", + "provider_onramp": "Paypal (Staging)", + "region": "mock-region-id", + }, + ] + `); + }); + + it('calls the correct analytics event for sell custom action', async () => { + mockUseRampSDKValues = { + ...mockUseRampSDKInitialValues, + sdk: mockSdk, + isBuy: false, + isSell: true, + }; + await simulateCustomActionCtaPress(); + expect(mockTrackEvent.mock.lastCall).toMatchInlineSnapshot(` + [ + "OFFRAMP_DIRECT_PROVIDER_CLICKED", + { + "chain_id_source": "1", + "currency_destination": "USD", + "currency_source": undefined, + "payment_method_id": "/payment-methods/test-payment-method", + "provider_offramp": "Paypal (Staging)", + "region": "mock-region-id", + }, + ] + `); + }); + + it('calls the correct sdk method for buy custom action', async () => { + mockUseRampSDKValues = { + ...mockUseRampSDKInitialValues, + sdk: mockSdk, + isBuy: true, + isSell: false, + }; + await simulateCustomActionCtaPress(); + expect(mockSdk.getBuyUrl).toHaveBeenCalledWith( + mockCustomAction.buy.provider, + 'mock-region-id', + '/payment-methods/test-payment-method', + 'mock-asset-id', + 'mock-fiat-currency-id', + 50, + '0x1234567890', + ); + }); + + it('calls the correct sdk method for sell custom action', async () => { + mockUseRampSDKValues = { + ...mockUseRampSDKInitialValues, + sdk: mockSdk, + isBuy: false, + isSell: true, + }; + await simulateCustomActionCtaPress(); + expect(mockSdk.getSellUrl).toHaveBeenCalledWith( + mockCustomAction.buy.provider, + 'mock-region-id', + '/payment-methods/test-payment-method', + 'mock-asset-id', + 'mock-fiat-currency-id', + 50, + '0x1234567890', + ); + }); + + it('calls createWidget and navigates to the url when pressing custom action CTA in the App Browser', async () => { + mockUseRampSDKValues = { + ...mockUseRampSDKInitialValues, + sdk: mockSdk, + }; + await simulateCustomActionCtaPress(); + + expect(createWidgetMock).toBeCalledWith( + mockUseRampSDKValues.callbackBaseUrl, + ); + + expect(mockNavigate).toBeCalledTimes(1); + expect(mockNavigate).toBeCalledWith(Routes.RAMP.CHECKOUT, { + provider: mockCustomAction.buy.provider, + customOrderId: 'test-order-id', + url: 'https://test-url.on-ramp.metamask', + }); + expect(mockRenderInAppBrowser).not.toBeCalled(); + }); + + it('calls renderInAppBrowser hook when pressing CTA in the iOSBrowser', async () => { + mockedBuyAction = { + ...mockedBuyAction, + browser: ProviderBuyFeatureBrowserEnum.InAppOsBrowser, + }; + + mockUseRampSDKValues = { + ...mockUseRampSDKInitialValues, + sdk: mockSdk, + }; + + await simulateCustomActionCtaPress(); + + expect(mockRenderInAppBrowser).toBeCalledWith( + mockedBuyAction, + mockCustomAction.buy.provider, + 50, + 'USD', + ); + + expect(mockNavigate).not.toBeCalled(); + }); + }); + it('navigates and tracks events when pressing buy button with app browser quote', async () => { const { mockedRecommendedQuote } = await simulateQuoteSelection( ProviderBuyFeatureBrowserEnum.AppBrowser, @@ -515,7 +772,8 @@ describe('Quotes', () => { jest.clearAllTimers(); }); - const mockRecommendedQuote = mockUseSortedQuotesValues.recommendedQuote; + const mockRecommendedQuote = + mockUseQuotesAndCustomActionsValues.recommendedQuote; if (!mockRecommendedQuote) { throw new Error('No recommended quote found'); @@ -713,8 +971,8 @@ describe('Quotes', () => { }); it('renders correctly when fetching quotes errors', async () => { - mockUseSortedQuotesValues = { - ...mockUseSortedQuotesInitialValues, + mockUseQuotesAndCustomActionsValues = { + ...mockUseQuotesAndCustomActionsInitialValues, error: 'Test Error', }; render(Quotes); @@ -725,8 +983,8 @@ describe('Quotes', () => { }); it('fetches quotes again when pressing button after fetching quotes errors', async () => { - mockUseSortedQuotesValues = { - ...mockUseSortedQuotesInitialValues, + mockUseQuotesAndCustomActionsValues = { + ...mockUseQuotesAndCustomActionsInitialValues, error: 'Test Error', }; render(Quotes); diff --git a/app/components/UI/Ramp/Views/Quotes/Quotes.tsx b/app/components/UI/Ramp/Views/Quotes/Quotes.tsx index b21102877628..3c121c56cbca 100644 --- a/app/components/UI/Ramp/Views/Quotes/Quotes.tsx +++ b/app/components/UI/Ramp/Views/Quotes/Quotes.tsx @@ -17,7 +17,7 @@ import { QuoteResponse, SellQuoteResponse, } from '@consensys/on-ramp-sdk'; -import { Provider } from '@consensys/on-ramp-sdk/dist/API'; +import { PaymentCustomAction, Provider } from '@consensys/on-ramp-sdk/dist/API'; import styleSheet from './Quotes.styles'; import LoadingQuotes from './LoadingQuotes'; import Timer from './Timer'; @@ -27,6 +27,7 @@ import ErrorViewWithReporting from '../../components/ErrorViewWithReporting'; import ErrorView from '../../components/ErrorView'; import Row from '../../components/Row'; import Quote from '../../components/Quote'; +import CustomAction from '../../components/CustomAction'; import InfoAlert from '../../components/InfoAlert'; import { getFiatOnRampAggNavbar } from '../../../Navbar'; import { @@ -42,7 +43,7 @@ import BottomSheetFooter, { } from '../../../../../component-library/components/BottomSheets/BottomSheetFooter'; import useAnalytics from '../../hooks/useAnalytics'; -import useSortedQuotes from '../../hooks/useSortedQuotes'; +import useQuotesAndCustomActions from '../../hooks/useQuotesAndCustomActions'; import { useRampSDK } from '../../sdk'; import { useStyles } from '../../../../../component-library/hooks'; import { @@ -60,6 +61,7 @@ import Logger from '../../../../../util/Logger'; import { isBuyQuote } from '../../utils'; import { getOrdersProviders } from './../../../../../reducers/fiatOrders'; import { QuoteSelectors } from '../../../../../../e2e/selectors/Ramps/Quotes.selectors'; +import useFiatCurrencies from '../../hooks/useFiatCurrencies'; export interface QuotesParams { amount: number | string; @@ -75,6 +77,7 @@ function Quotes() { const navigation = useNavigation(); const trackEvent = useAnalytics(); const params = useParams<QuotesParams>(); + const { selectedPaymentMethodId, selectedChainId, @@ -83,7 +86,15 @@ function Quotes() { sdkError, rampType, isBuy, + selectedAddress, + selectedRegion, + selectedAsset, + selectedFiatCurrencyId, + sdk, } = useRampSDK(); + + const { currentFiatCurrency } = useFiatCurrencies(); + const renderInAppBrowser = useInAppBrowser(); const ordersProviders = useSelector(getOrdersProviders); @@ -124,13 +135,15 @@ function Quotes() { const { recommendedQuote, + recommendedCustomAction, quotesWithoutError, quotesWithError, quotesByPriceWithoutError, + customActions, isFetching: isFetchingQuotes, error: ErrorFetchingQuotes, query: fetchQuotes, - } = useSortedQuotes(params.amount); + } = useQuotesAndCustomActions(params.amount); const handleCancelPress = useCallback(() => { if (isBuy) { @@ -243,6 +256,13 @@ function Quotes() { trackEvent, ]); + const handleOnCustomActionPress = useCallback( + (customAction: PaymentCustomAction) => { + setProviderId(customAction?.buy?.provider.id); + }, + [], + ); + const handleOnQuotePress = useCallback( (quote: QuoteResponse | SellQuoteResponse) => { setProviderId(quote.provider.id); @@ -270,6 +290,102 @@ function Quotes() { [isBuy, trackEvent], ); + const handleOnPressCustomActionCTA = useCallback( + async (customAction: PaymentCustomAction) => { + if (!sdk || !customAction) { + return; + } + + try { + setIsQuoteLoading(true); + const provider = customAction.buy.provider; + const payload = { + region: selectedRegion?.id as string, + payment_method_id: selectedPaymentMethodId as string, + }; + + if (isBuy) { + trackEvent('ONRAMP_DIRECT_PROVIDER_CLICKED', { + ...payload, + currency_source: currentFiatCurrency?.symbol as string, + currency_destination: selectedAsset?.symbol as string, + provider_onramp: provider.name, + chain_id_destination: selectedChainId as string, + }); + } else { + trackEvent('OFFRAMP_DIRECT_PROVIDER_CLICKED', { + ...payload, + currency_destination: currentFiatCurrency?.symbol as string, + currency_source: selectedAsset?.symbol as string, + provider_offramp: provider.name, + chain_id_source: selectedChainId as string, + }); + } + + const getUrlMethod = isBuy ? 'getBuyUrl' : 'getSellUrl'; + + const buyAction = await sdk[getUrlMethod]( + provider, + selectedRegion?.id as string, + selectedPaymentMethodId as string, + selectedAsset?.id as string, + selectedFiatCurrencyId as string, + params.amount as number, + selectedAddress as string, + ); + + if (buyAction.browser === ProviderBuyFeatureBrowserEnum.AppBrowser) { + const { url, orderId: customOrderId } = await buyAction.createWidget( + callbackBaseUrl, + ); + + navigation.navigate( + ...createCheckoutNavDetails({ + url, + provider, + customOrderId, + }), + ); + } else if ( + buyAction.browser === ProviderBuyFeatureBrowserEnum.InAppOsBrowser + ) { + await renderInAppBrowser( + buyAction, + provider, + params.amount as number, + currentFiatCurrency?.symbol, + ); + } else { + throw new Error('Unsupported browser type: ' + buyAction.browser); + } + } catch (error) { + Logger.error(error as Error, { + message: + 'FiatOrders::CustomActionButton error while getting buy action', + }); + } finally { + setIsQuoteLoading(false); + } + }, + [ + sdk, + selectedRegion?.id, + selectedPaymentMethodId, + isBuy, + selectedAsset?.id, + selectedAsset?.symbol, + selectedFiatCurrencyId, + params.amount, + selectedAddress, + trackEvent, + currentFiatCurrency?.symbol, + selectedChainId, + callbackBaseUrl, + navigation, + renderInAppBrowser, + ], + ); + const handleOnPressCTA = useCallback( async (quote: QuoteResponse | SellQuoteResponse, index) => { try { @@ -586,14 +702,42 @@ function Quotes() { ]); useEffect(() => { - if (quotesByPriceWithoutError && quotesByPriceWithoutError.length > 0) { + const doCustomActionsExist = customActions && customActions.length > 0; + const firstCustomActionId = customActions?.[0]?.buy?.provider?.id || null; + const recommendedCustomActionId = + recommendedCustomAction?.buy?.provider?.id || null; + + const doQuotesExist = quotesWithoutError && quotesWithoutError.length > 0; + const firstQuoteId = quotesByPriceWithoutError?.[0]?.provider?.id || null; + const recommendedQuoteId = recommendedQuote?.provider?.id || null; + + if (doCustomActionsExist) { if (isExpanded) { - setProviderId(quotesByPriceWithoutError[0].provider?.id); + setProviderId(firstCustomActionId); + return; + } else if (recommendedCustomAction) { + setProviderId(recommendedCustomActionId); + return; + } + } + + if (doQuotesExist) { + if (isExpanded) { + setProviderId(firstQuoteId); + return; } else if (recommendedQuote) { - setProviderId(recommendedQuote.provider?.id); + setProviderId(recommendedQuoteId); + return; } } - }, [isExpanded, quotesByPriceWithoutError, recommendedQuote]); + }, [ + customActions, + isExpanded, + quotesByPriceWithoutError, + quotesWithoutError, + recommendedCustomAction, + recommendedQuote, + ]); useFocusEffect( useCallback(() => { @@ -719,7 +863,11 @@ function Quotes() { } // No providers available - if (!isFetchingQuotes && quotesByPriceWithoutError.length === 0) { + if ( + !isFetchingQuotes && + quotesByPriceWithoutError.length === 0 && + customActions?.length === 0 + ) { if (!isExpanded) { return ( <BottomSheet> @@ -775,6 +923,28 @@ function Quotes() { <ScrollView testID={QuoteSelectors.QUOTES}> {isFetchingQuotes && isInPolling ? ( <LoadingQuotes count={1} /> + ) : recommendedCustomAction ? ( + <CustomAction + isLoading={isQuoteLoading} + previouslyUsedProvider={ordersProviders.includes( + recommendedCustomAction.buy?.provider?.id, + )} + customAction={recommendedCustomAction} + onPress={() => + handleOnCustomActionPress(recommendedCustomAction) + } + onPressCTA={() => { + handleOnPressCustomActionCTA(recommendedCustomAction); + }} + highlighted={ + recommendedCustomAction.buy?.provider?.id === providerId + } + showInfo={() => + handleInfoPress({ + provider: recommendedCustomAction?.buy?.provider, + }) + } + /> ) : recommendedQuote ? ( <Row key={recommendedQuote.provider.id}> <Quote @@ -899,22 +1069,51 @@ function Quotes() { {isFetchingQuotes && isInPolling ? ( <LoadingQuotes /> ) : ( - quotesByPriceWithoutError.map((quote, index) => ( - <Row key={quote.provider.id}> - <Quote - isLoading={isQuoteLoading} - previouslyUsedProvider={ordersProviders.includes( - quote.provider.id, - )} - quote={quote} - onPress={() => handleOnQuotePress(quote)} - onPressCTA={() => handleOnPressCTA(quote, index)} - highlighted={quote.provider.id === providerId} - showInfo={() => handleInfoPress(quote)} - rampType={rampType} - /> - </Row> - )) + <> + {customActions && customActions.length > 0 + ? customActions.map((customAction) => ( + <CustomAction + key={customAction.buy?.provider.id} + isLoading={isQuoteLoading} + previouslyUsedProvider={ordersProviders.includes( + customAction.buy?.provider?.id, + )} + customAction={customAction} + onPress={() => + handleOnCustomActionPress(customAction) + } + onPressCTA={() => + handleOnPressCustomActionCTA(customAction) + } + highlighted={ + customAction.buy?.provider?.id === providerId + } + showInfo={() => + handleInfoPress({ + provider: customAction?.buy?.provider, + }) + } + /> + )) + : null} + + {quotesByPriceWithoutError.map((quote, index) => ( + <Row key={quote.provider.id}> + <Quote + isLoading={isQuoteLoading} + previouslyUsedProvider={ordersProviders.includes( + quote.provider.id, + )} + quote={quote} + onPress={() => handleOnQuotePress(quote)} + onPressCTA={() => handleOnPressCTA(quote, index)} + highlighted={quote.provider.id === providerId} + showInfo={() => handleInfoPress(quote)} + rampType={rampType} + /> + </Row> + ))} + </> )} </ScreenLayout.Content> </Animated.ScrollView> diff --git a/app/components/UI/Ramp/Views/Quotes/__snapshots__/Quotes.test.tsx.snap b/app/components/UI/Ramp/Views/Quotes/__snapshots__/Quotes.test.tsx.snap index f20bbed60d24..10e916dfc2ff 100644 --- a/app/components/UI/Ramp/Views/Quotes/__snapshots__/Quotes.test.tsx.snap +++ b/app/components/UI/Ramp/Views/Quotes/__snapshots__/Quotes.test.tsx.snap @@ -24,7 +24,7 @@ exports[`LoadingQuotes component renders correctly 1`] = ` style={ [ { - "borderColor": "#848c96", + "borderColor": "#b7bbc8", "borderRadius": 8, "borderWidth": 1.5, "padding": 16, @@ -67,7 +67,7 @@ exports[`LoadingQuotes component renders correctly 1`] = ` style={ [ { - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", "borderRadius": 30, "padding": 14, }, @@ -113,7 +113,7 @@ exports[`LoadingQuotes component renders correctly 1`] = ` style={ [ { - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", "borderRadius": 30, "padding": 14, }, @@ -168,7 +168,7 @@ exports[`LoadingQuotes component renders correctly 1`] = ` style={ [ { - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", "borderRadius": 30, "padding": 14, }, @@ -214,7 +214,7 @@ exports[`LoadingQuotes component renders correctly 1`] = ` style={ [ { - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", "borderRadius": 30, "padding": 14, }, @@ -265,7 +265,7 @@ exports[`LoadingQuotes component renders correctly 1`] = ` style={ [ { - "borderColor": "#848c96", + "borderColor": "#b7bbc8", "borderRadius": 8, "borderWidth": 1.5, "padding": 16, @@ -308,7 +308,7 @@ exports[`LoadingQuotes component renders correctly 1`] = ` style={ [ { - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", "borderRadius": 30, "padding": 14, }, @@ -354,7 +354,7 @@ exports[`LoadingQuotes component renders correctly 1`] = ` style={ [ { - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", "borderRadius": 30, "padding": 14, }, @@ -403,7 +403,7 @@ exports[`LoadingQuotes component renders correctly 1`] = ` style={ [ { - "borderColor": "#848c96", + "borderColor": "#b7bbc8", "borderRadius": 8, "borderWidth": 1.5, "padding": 16, @@ -446,7 +446,7 @@ exports[`LoadingQuotes component renders correctly 1`] = ` style={ [ { - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", "borderRadius": 30, "padding": 14, }, @@ -492,7 +492,7 @@ exports[`LoadingQuotes component renders correctly 1`] = ` style={ [ { - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", "borderRadius": 30, "padding": 14, }, @@ -524,6 +524,1056 @@ exports[`LoadingQuotes component renders correctly 1`] = ` ] `; +exports[`Quotes custom action renders correctly after animation with the recommended custom action 1`] = ` +<View + style={ + { + "flex": 1, + } + } +> + <RNCSafeAreaProvider + onInsetsChange={[Function]} + style={ + [ + { + "flex": 1, + }, + undefined, + ] + } + > + <View + collapsable={false} + pointerEvents="box-none" + style={ + { + "zIndex": 1, + } + } + > + <View + accessibilityElementsHidden={false} + importantForAccessibility="auto" + onLayout={[Function]} + pointerEvents="box-none" + style={null} + > + <View + collapsable={false} + pointerEvents="box-none" + style={ + { + "bottom": 0, + "left": 0, + "opacity": 1, + "position": "absolute", + "right": 0, + "top": 0, + "zIndex": 0, + } + } + > + <View + collapsable={false} + style={ + { + "backgroundColor": "#ffffff", + "borderBottomColor": "rgb(216, 216, 216)", + "elevation": 0, + "flex": 1, + "shadowColor": "transparent", + "shadowOffset": { + "height": 0.5, + "width": 0, + }, + "shadowOpacity": 0.85, + "shadowRadius": 0, + } + } + /> + </View> + <View + collapsable={false} + pointerEvents="box-none" + style={ + { + "height": 64, + "maxHeight": undefined, + "minHeight": undefined, + "opacity": undefined, + "transform": undefined, + } + } + > + <View + pointerEvents="none" + style={ + { + "height": 20, + } + } + /> + <View + pointerEvents="box-none" + style={ + { + "alignItems": "center", + "flex": 1, + "flexDirection": "row", + "justifyContent": "center", + } + } + > + <View + collapsable={false} + pointerEvents="box-none" + style={ + { + "alignItems": "flex-start", + "bottom": 0, + "justifyContent": "center", + "left": 0, + "opacity": 1, + "position": "absolute", + "top": 0, + } + } + > + <TouchableOpacity + accessibilityRole="button" + accessible={true} + onPress={[Function]} + style={ + { + "paddingHorizontal": 18, + "paddingVertical": 8, + } + } + > + <Text + style={ + { + "color": "#4459ff", + "fontFamily": "CentraNo1-Book", + "fontSize": 23.57142857142857, + "fontWeight": "400", + } + } + > + Back + </Text> + </TouchableOpacity> + </View> + <View + collapsable={false} + pointerEvents="box-none" + style={ + { + "marginHorizontal": 72, + "opacity": 1, + } + } + > + <TouchableOpacity + activeOpacity={1} + onPress={[Function]} + style={ + { + "alignItems": "center", + "justifyContent": "center", + } + } + > + <Text + accessibilityRole="text" + numberOfLines={1} + style={ + { + "color": "#121314", + "fontFamily": "CentraNo1-Bold", + "fontSize": 16, + "fontWeight": "700", + "letterSpacing": 0, + "lineHeight": 24, + } + } + > + Select a Quote + </Text> + <View + style={ + { + "alignItems": "center", + "flexDirection": "row", + } + } + > + <Text + accessibilityRole="text" + numberOfLines={1} + style={ + { + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, + "fontWeight": "400", + "letterSpacing": 0, + "lineHeight": 22, + } + } + > + Ethereum Main Network + </Text> + </View> + </TouchableOpacity> + </View> + <View + collapsable={false} + pointerEvents="box-none" + style={ + { + "alignItems": "flex-end", + "bottom": 0, + "justifyContent": "center", + "opacity": 1, + "position": "absolute", + "right": 0, + "top": 0, + } + } + > + <TouchableOpacity + accessibilityRole="button" + accessible={true} + onPress={[Function]} + style={ + { + "paddingHorizontal": 18, + "paddingVertical": 8, + } + } + > + <Text + style={ + { + "color": "#4459ff", + "fontFamily": "CentraNo1-Book", + "fontSize": 23.57142857142857, + "fontWeight": "400", + } + } + > + Cancel + </Text> + </TouchableOpacity> + </View> + </View> + </View> + </View> + </View> + <RNSScreenContainer + onLayout={[Function]} + style={ + { + "flex": 1, + } + } + > + <RNSScreen + activityState={2} + collapsable={false} + gestureResponseDistance={ + { + "bottom": -1, + "end": -1, + "start": -1, + "top": -1, + } + } + pointerEvents="box-none" + style={ + { + "bottom": 0, + "left": 0, + "position": "absolute", + "right": 0, + "top": 0, + } + } + > + <View + collapsable={false} + style={ + { + "opacity": 1, + } + } + /> + <View + accessibilityElementsHidden={false} + closing={false} + gestureVelocityImpact={0.3} + importantForAccessibility="auto" + onClose={[Function]} + onGestureBegin={[Function]} + onGestureCanceled={[Function]} + onGestureEnd={[Function]} + onOpen={[Function]} + onTransition={[Function]} + pointerEvents="box-none" + style={ + [ + { + "overflow": undefined, + }, + { + "bottom": 0, + "left": 0, + "position": "absolute", + "right": 0, + "top": 0, + }, + ] + } + transitionSpec={ + { + "close": { + "animation": "spring", + "config": { + "damping": 500, + "mass": 3, + "overshootClamping": true, + "restDisplacementThreshold": 10, + "restSpeedThreshold": 10, + "stiffness": 1000, + }, + }, + "open": { + "animation": "spring", + "config": { + "damping": 500, + "mass": 3, + "overshootClamping": true, + "restDisplacementThreshold": 10, + "restSpeedThreshold": 10, + "stiffness": 1000, + }, + }, + } + } + > + <View + collapsable={false} + needsOffscreenAlphaCompositing={false} + pointerEvents="box-none" + style={ + { + "flex": 1, + } + } + > + <View + collapsable={false} + onGestureHandlerEvent={[Function]} + onGestureHandlerStateChange={[Function]} + style={ + { + "flex": 1, + "transform": [ + { + "translateX": 0, + }, + { + "translateX": 0, + }, + ], + } + } + > + <View + collapsable={false} + pointerEvents="none" + style={ + { + "backgroundColor": "rgb(242, 242, 242)", + "bottom": 0, + "left": 0, + "position": "absolute", + "shadowColor": "#000", + "shadowOffset": { + "height": 1, + "width": -1, + }, + "shadowOpacity": 0.3, + "shadowRadius": 5, + "top": 0, + "width": 3, + } + } + /> + <View + style={ + [ + { + "flex": 1, + "overflow": "hidden", + }, + [ + { + "backgroundColor": "rgb(242, 242, 242)", + }, + undefined, + ], + ] + } + > + <View + style={ + { + "flex": 1, + "flexDirection": "column-reverse", + } + } + > + <View + style={ + { + "flex": 1, + } + } + > + <View + onLayout={[Function]} + style={ + [ + { + "bottom": 0, + "justifyContent": "flex-end", + "left": 0, + "position": "absolute", + "right": 0, + "top": 0, + }, + { + "paddingBottom": 0, + }, + ] + } + > + <View + style={ + [ + { + "backgroundColor": "#00000066", + "bottom": 0, + "left": 0, + "position": "absolute", + "right": 0, + "top": 0, + }, + { + "opacity": 0, + }, + ] + } + > + <TouchableOpacity + onPress={[Function]} + style={ + { + "flex": 1, + } + } + /> + </View> + <View + onLayout={[Function]} + style={ + [ + { + "bottom": 0, + "left": 0, + "position": "absolute", + "right": 0, + }, + { + "paddingBottom": 0, + }, + ] + } + > + <View + collapsable={false} + onGestureHandlerEvent={[Function]} + onGestureHandlerStateChange={[Function]} + onLayout={[Function]} + style={ + [ + { + "backgroundColor": "#ffffff", + "borderColor": "#b7bbc866", + "borderTopLeftRadius": 8, + "borderTopRightRadius": 8, + "borderWidth": 1, + "maxHeight": 1334, + "overflow": "hidden", + "paddingBottom": 0, + "shadowColor": "#0000001a", + "shadowOffset": { + "height": 2, + "width": 0, + }, + "shadowOpacity": 1, + "shadowRadius": 40, + }, + { + "transform": [ + { + "translateY": 1334, + }, + ], + }, + ] + } + > + <View + style={ + { + "alignItems": "center", + "alignSelf": "stretch", + "padding": 4, + } + } + > + <View + style={ + { + "backgroundColor": "#b7bbc866", + "borderRadius": 2, + "height": 4, + "width": 40, + } + } + /> + </View> + <View + style={ + [ + { + "backgroundColor": "#ffffff", + "flexDirection": "row", + "padding": 16, + }, + false, + ] + } + testID="header" + > + <View + style={ + { + "width": undefined, + } + } + > + <View + onLayout={[Function]} + /> + </View> + <View + style={ + { + "alignItems": "center", + "flex": 1, + "marginHorizontal": 16, + } + } + > + <Text + accessibilityRole="text" + style={ + { + "color": "#121314", + "fontFamily": "CentraNo1-Bold", + "fontSize": 16, + "fontWeight": "700", + "letterSpacing": 0, + "lineHeight": 24, + "textAlign": "center", + } + } + testID="header-title" + > + Recommended quote + </Text> + </View> + <View + style={ + { + "width": undefined, + } + } + > + <View + onLayout={[Function]} + > + <TouchableOpacity + accessible={true} + activeOpacity={1} + disabled={false} + onPress={[Function]} + onPressIn={[Function]} + onPressOut={[Function]} + style={ + { + "alignItems": "center", + "borderRadius": 8, + "height": 24, + "justifyContent": "center", + "opacity": 1, + "width": 24, + } + } + > + <SvgMock + color="#121314" + height={16} + name="Close" + style={ + { + "height": 16, + "width": 16, + } + } + width={16} + /> + </TouchableOpacity> + </View> + </View> + </View> + <View + style={ + { + "alignItems": "center", + "alignSelf": "center", + "backgroundColor": "#f3f5f9", + "borderRadius": 20, + "flexDirection": "row", + "marginBottom": 8, + "paddingHorizontal": 15, + "paddingVertical": 4, + } + } + > + <Text + style={ + [ + { + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 30, + "fontWeight": "400", + "marginVertical": 2, + }, + { + "textAlign": "center", + }, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + { + "color": "#121314", + }, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + ] + } + > + New quotes in + + <Text + style={ + [ + { + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 30, + "fontWeight": "400", + "marginVertical": 2, + }, + undefined, + undefined, + { + "fontFamily": "CentraNo1-Bold", + "fontWeight": "600", + }, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + { + "color": "#121314", + }, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + undefined, + [ + { + "fontVariant": [ + "tabular-nums", + ], + }, + false, + ], + ] + } + > + 0:07 + </Text> + </Text> + </View> + <View + style={ + [ + { + "padding": 15, + }, + undefined, + { + "paddingTop": 0, + }, + ] + } + > + <RCTScrollView + collapsable={false} + onGestureHandlerEvent={[Function]} + onGestureHandlerStateChange={[Function]} + testID="quotes" + > + <View> + <View + style={ + { + "opacity": 0, + } + } + testID="animated-view-opacity" + > + <TouchableOpacity + accessibilityLabel="Paypal (Staging)" + accessibilityRole="button" + accessible={true} + activeOpacity={0.8} + disabled={false} + onPress={[Function]} + > + <View + style={ + [ + { + "borderColor": "#b7bbc8", + "borderRadius": 8, + "borderWidth": 1.5, + "padding": 16, + }, + undefined, + false, + { + "padding": 0, + }, + undefined, + ] + } + > + <View + accessibilityRole="none" + accessible={true} + style={ + { + "padding": 16, + } + } + > + <View + style={ + { + "marginBottom": 8, + } + } + > + <TouchableOpacity + accessibilityHint="Shows provider details" + accessibilityLabel="Paypal (Staging) logo" + disabled={true} + > + <View + style={ + { + "alignItems": "center", + "flexDirection": "row", + } + } + > + <Image + onError={[Function]} + source={ + { + "uri": "https://on-ramp.dev-api.cx.metamask.io/assets/providers/paypal_light.png", + } + } + style={ + { + "height": 24, + "width": 65, + } + } + /> + <Text + allowFontScaling={false} + style={ + [ + { + "color": undefined, + "fontSize": 12, + }, + { + "color": "#686e7d", + "marginLeft": 8, + }, + { + "fontFamily": "Feather", + "fontStyle": "normal", + "fontWeight": "normal", + }, + {}, + ] + } + > +  + </Text> + </View> + </TouchableOpacity> + </View> + <View + style={ + { + "alignItems": "center", + "flexDirection": "row", + } + } + /> + <View + style={ + { + "marginTop": 0, + } + } + > + <View + onLayout={[Function]} + style={ + [ + { + "marginTop": 4, + "overflow": "hidden", + }, + {}, + ] + } + testID="animated-view-height" + > + <View + style={ + { + "marginTop": 10, + } + } + > + <TouchableOpacity + accessibilityRole="button" + accessible={true} + activeOpacity={0.2} + disabled={false} + onPress={[Function]} + style={ + [ + [ + { + "borderRadius": 100, + "justifyContent": "center", + "padding": 15, + }, + { + "backgroundColor": "#4459ff", + }, + undefined, + ], + null, + ] + } + > + <Text + style={ + [ + { + "color": "#007aff", + "fontSize": 17, + "fontWeight": "500", + "textAlign": "center", + }, + null, + [ + { + "fontFamily": "CentraNo1-Bold", + "fontSize": 14, + "fontWeight": "600", + "textAlign": "center", + }, + { + "color": "#ffffff", + }, + undefined, + ], + null, + ] + } + > + Continue with Paypal (Staging) + </Text> + </TouchableOpacity> + </View> + </View> + </View> + </View> + </View> + </TouchableOpacity> + </View> + </View> + </RCTScrollView> + </View> + <View + style={ + { + "backgroundColor": "#ffffff", + "flexDirection": "column", + "paddingHorizontal": 8, + "paddingVertical": 4, + } + } + testID="bottomsheetfooter" + > + <TouchableOpacity + accessibilityRole="button" + accessible={true} + activeOpacity={1} + onPress={[Function]} + onPressIn={[Function]} + onPressOut={[Function]} + style={ + { + "alignItems": "center", + "alignSelf": "stretch", + "backgroundColor": "transparent", + "borderRadius": 20, + "flexDirection": "row", + "height": 40, + "justifyContent": "center", + "paddingHorizontal": 16, + } + } + testID="bottomsheetfooter-button" + > + <Text + accessibilityRole="text" + style={ + { + "color": "#4459ff", + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, + "fontWeight": "500", + "letterSpacing": 0, + "lineHeight": 24, + } + } + > + Explore more options + </Text> + </TouchableOpacity> + </View> + <Modal + animationType="none" + deviceHeight={null} + deviceWidth={null} + hardwareAccelerated={false} + hideModalContentWhileAnimating={false} + onBackdropPress={[Function]} + onModalHide={[Function]} + onModalWillHide={[Function]} + onModalWillShow={[Function]} + onRequestClose={[Function]} + panResponderThreshold={4} + scrollHorizontal={false} + scrollOffset={0} + scrollOffsetMax={0} + scrollTo={null} + statusBarTranslucent={false} + supportedOrientations={ + [ + "portrait", + "landscape", + ] + } + swipeDirection="down" + swipeThreshold={100} + transparent={true} + visible={false} + /> + </View> + </View> + </View> + </View> + </View> + </View> + </View> + </View> + </View> + </RNSScreen> + </RNSScreenContainer> + </RNCSafeAreaProvider> +</View> +`; + exports[`Quotes renders animation on first fetching 1`] = ` <View style={ @@ -654,8 +1704,8 @@ exports[`Quotes renders animation on first fetching 1`] = ` <Text style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Regular", + "color": "#4459ff", + "fontFamily": "CentraNo1-Book", "fontSize": 23.57142857142857, "fontWeight": "400", } @@ -690,12 +1740,12 @@ exports[`Quotes renders animation on first fetching 1`] = ` numberOfLines={1} style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Bold", + "fontSize": 16, "fontWeight": "700", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -714,12 +1764,12 @@ exports[`Quotes renders animation on first fetching 1`] = ` numberOfLines={1} style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -757,8 +1807,8 @@ exports[`Quotes renders animation on first fetching 1`] = ` <Text style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Regular", + "color": "#4459ff", + "fontFamily": "CentraNo1-Book", "fontSize": 23.57142857142857, "fontWeight": "400", } @@ -965,7 +2015,7 @@ exports[`Quotes renders animation on first fetching 1`] = ` style={ [ { - "backgroundColor": "#00000099", + "backgroundColor": "#00000066", "bottom": 0, "left": 0, "position": "absolute", @@ -1012,14 +2062,14 @@ exports[`Quotes renders animation on first fetching 1`] = ` [ { "backgroundColor": "#ffffff", - "borderColor": "#BBC0C566", + "borderColor": "#b7bbc866", "borderTopLeftRadius": 8, "borderTopRightRadius": 8, "borderWidth": 1, "maxHeight": 1334, "overflow": "hidden", "paddingBottom": 0, - "shadowColor": "#0000001A", + "shadowColor": "#0000001a", "shadowOffset": { "height": 2, "width": 0, @@ -1049,7 +2099,7 @@ exports[`Quotes renders animation on first fetching 1`] = ` <View style={ { - "backgroundColor": "#BBC0C566", + "backgroundColor": "#b7bbc866", "borderRadius": 2, "height": 4, "width": 40, @@ -1079,12 +2129,12 @@ exports[`Quotes renders animation on first fetching 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", + "color": "#121314", + "fontFamily": "CentraNo1-Bold", "fontSize": 18, "fontWeight": "600", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, "marginVertical": 3, "textAlign": "center", } @@ -1095,7 +2145,7 @@ exports[`Quotes renders animation on first fetching 1`] = ` <View style={ { - "backgroundColor": "#0376C91A", + "backgroundColor": "#4459ff1a", "borderRadius": 3, "height": 3, "marginVertical": 15, @@ -1106,7 +2156,7 @@ exports[`Quotes renders animation on first fetching 1`] = ` style={ [ { - "backgroundColor": "#0376c9", + "backgroundColor": "#4459ff", "borderRadius": 3, "flex": 1, "height": 3, @@ -1746,8 +2796,8 @@ exports[`Quotes renders correctly after animation with expanded quotes 2`] = ` <Text style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Regular", + "color": "#4459ff", + "fontFamily": "CentraNo1-Book", "fontSize": 23.57142857142857, "fontWeight": "400", } @@ -1782,12 +2832,12 @@ exports[`Quotes renders correctly after animation with expanded quotes 2`] = ` numberOfLines={1} style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Bold", + "fontSize": 16, "fontWeight": "700", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -1806,12 +2856,12 @@ exports[`Quotes renders correctly after animation with expanded quotes 2`] = ` numberOfLines={1} style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -1849,8 +2899,8 @@ exports[`Quotes renders correctly after animation with expanded quotes 2`] = ` <Text style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Regular", + "color": "#4459ff", + "fontFamily": "CentraNo1-Book", "fontSize": 23.57142857142857, "fontWeight": "400", } @@ -2057,7 +3107,7 @@ exports[`Quotes renders correctly after animation with expanded quotes 2`] = ` style={ [ { - "backgroundColor": "#00000099", + "backgroundColor": "#00000066", "bottom": 0, "left": 0, "position": "absolute", @@ -2104,7 +3154,7 @@ exports[`Quotes renders correctly after animation with expanded quotes 2`] = ` [ { "backgroundColor": "#ffffff", - "borderColor": "#BBC0C566", + "borderColor": "#b7bbc866", "borderTopLeftRadius": 8, "borderTopRightRadius": 8, "borderWidth": 1, @@ -2112,7 +3162,7 @@ exports[`Quotes renders correctly after animation with expanded quotes 2`] = ` "maxHeight": 1334, "overflow": "hidden", "paddingBottom": 0, - "shadowColor": "#0000001A", + "shadowColor": "#0000001a", "shadowOffset": { "height": 2, "width": 0, @@ -2167,8 +3217,8 @@ exports[`Quotes renders correctly after animation with expanded quotes 2`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", + "color": "#121314", + "fontFamily": "CentraNo1-Bold", "fontSize": 16, "fontWeight": "700", "letterSpacing": 0, @@ -2210,7 +3260,7 @@ exports[`Quotes renders correctly after animation with expanded quotes 2`] = ` } > <SvgMock - color="#141618" + color="#121314" height={16} name="Close" style={ @@ -2259,7 +3309,7 @@ exports[`Quotes renders correctly after animation with expanded quotes 2`] = ` { "alignItems": "center", "alignSelf": "center", - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", "borderRadius": 20, "flexDirection": "row", "marginBottom": 8, @@ -2272,8 +3322,8 @@ exports[`Quotes renders correctly after animation with expanded quotes 2`] = ` style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -2291,7 +3341,7 @@ exports[`Quotes renders correctly after animation with expanded quotes 2`] = ` undefined, undefined, { - "color": "#141618", + "color": "#121314", }, undefined, undefined, @@ -2315,8 +3365,8 @@ exports[`Quotes renders correctly after animation with expanded quotes 2`] = ` style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -2324,7 +3374,7 @@ exports[`Quotes renders correctly after animation with expanded quotes 2`] = ` undefined, undefined, { - "fontFamily": "EuclidCircularB-Bold", + "fontFamily": "CentraNo1-Bold", "fontWeight": "600", }, undefined, @@ -2335,7 +3385,7 @@ exports[`Quotes renders correctly after animation with expanded quotes 2`] = ` undefined, undefined, { - "color": "#141618", + "color": "#121314", }, undefined, undefined, @@ -2381,8 +3431,8 @@ exports[`Quotes renders correctly after animation with expanded quotes 2`] = ` style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -2396,7 +3446,7 @@ exports[`Quotes renders correctly after animation with expanded quotes 2`] = ` undefined, undefined, { - "color": "#6a737d", + "color": "#686e7d", }, undefined, undefined, @@ -2464,7 +3514,7 @@ exports[`Quotes renders correctly after animation with expanded quotes 2`] = ` style={ [ { - "backgroundColor": "#848c96", + "backgroundColor": "#b7bbc8", "height": 1, "width": "100%", }, @@ -2512,6 +3562,7 @@ exports[`Quotes renders correctly after animation with expanded quotes 2`] = ` "opacity": 0, } } + testID="animated-view-opacity" > <TouchableOpacity accessibilityLabel="Banxa (Staging)" @@ -2523,14 +3574,14 @@ exports[`Quotes renders correctly after animation with expanded quotes 2`] = ` style={ [ { - "borderColor": "#848c96", + "borderColor": "#b7bbc8", "borderRadius": 8, "borderWidth": 1.5, "padding": 16, }, undefined, { - "borderColor": "#0376c9", + "borderColor": "#4459ff", }, { "padding": 0, @@ -2570,7 +3621,7 @@ exports[`Quotes renders correctly after animation with expanded quotes 2`] = ` { "alignItems": "center", "alignSelf": "flex-start", - "backgroundColor": "#1C82341A", + "backgroundColor": "#1c7e331a", "borderRadius": 4, "height": 20, "justifyContent": "center", @@ -2583,12 +3634,12 @@ exports[`Quotes renders correctly after animation with expanded quotes 2`] = ` accessibilityRole="text" style={ { - "color": "#1c8234", - "fontFamily": "EuclidCircularB-Bold", - "fontSize": 10, + "color": "#1c7e33", + "fontFamily": "CentraNo1-Bold", + "fontSize": 12, "fontWeight": "bold", "letterSpacing": 0.25, - "lineHeight": 16, + "lineHeight": 20, "textTransform": "uppercase", } } @@ -2635,7 +3686,7 @@ exports[`Quotes renders correctly after animation with expanded quotes 2`] = ` "fontSize": 12, }, { - "color": "#6a737d", + "color": "#686e7d", "marginLeft": 8, }, { @@ -2672,9 +3723,9 @@ exports[`Quotes renders correctly after animation with expanded quotes 2`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 16, + "color": "#121314", + "fontFamily": "CentraNo1-Medium", + "fontSize": 18, "fontWeight": "500", "letterSpacing": 0, "lineHeight": 24, @@ -2707,9 +3758,9 @@ exports[`Quotes renders correctly after animation with expanded quotes 2`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 16, + "color": "#121314", + "fontFamily": "CentraNo1-Medium", + "fontSize": 18, "fontWeight": "500", "letterSpacing": 0, "lineHeight": 24, @@ -2741,6 +3792,7 @@ exports[`Quotes renders correctly after animation with expanded quotes 2`] = ` {}, ] } + testID="animated-view-height" > <View style={ @@ -2764,7 +3816,7 @@ exports[`Quotes renders correctly after animation with expanded quotes 2`] = ` "padding": 15, }, { - "backgroundColor": "#0376c9", + "backgroundColor": "#4459ff", }, undefined, ], @@ -2784,7 +3836,7 @@ exports[`Quotes renders correctly after animation with expanded quotes 2`] = ` null, [ { - "fontFamily": "EuclidCircularB-Bold", + "fontFamily": "CentraNo1-Bold", "fontSize": 14, "fontWeight": "600", "textAlign": "center", @@ -2827,6 +3879,7 @@ exports[`Quotes renders correctly after animation with expanded quotes 2`] = ` "opacity": 0, } } + testID="animated-view-opacity" > <TouchableOpacity accessibilityLabel="MoonPay (Staging)" @@ -2840,7 +3893,7 @@ exports[`Quotes renders correctly after animation with expanded quotes 2`] = ` style={ [ { - "borderColor": "#848c96", + "borderColor": "#b7bbc8", "borderRadius": 8, "borderWidth": 1.5, "padding": 16, @@ -2885,7 +3938,7 @@ exports[`Quotes renders correctly after animation with expanded quotes 2`] = ` { "alignItems": "center", "alignSelf": "flex-start", - "backgroundColor": "#0376C91A", + "backgroundColor": "#4459ff1a", "borderRadius": 4, "height": 20, "justifyContent": "center", @@ -2898,12 +3951,12 @@ exports[`Quotes renders correctly after animation with expanded quotes 2`] = ` accessibilityRole="text" style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Bold", - "fontSize": 10, + "color": "#4459ff", + "fontFamily": "CentraNo1-Bold", + "fontSize": 12, "fontWeight": "bold", "letterSpacing": 0.25, - "lineHeight": 16, + "lineHeight": 20, "textTransform": "uppercase", } } @@ -2917,7 +3970,7 @@ exports[`Quotes renders correctly after animation with expanded quotes 2`] = ` { "alignItems": "center", "alignSelf": "flex-start", - "backgroundColor": "#1C82341A", + "backgroundColor": "#1c7e331a", "borderRadius": 4, "height": 20, "justifyContent": "center", @@ -2930,12 +3983,12 @@ exports[`Quotes renders correctly after animation with expanded quotes 2`] = ` accessibilityRole="text" style={ { - "color": "#1c8234", - "fontFamily": "EuclidCircularB-Bold", - "fontSize": 10, + "color": "#1c7e33", + "fontFamily": "CentraNo1-Bold", + "fontSize": 12, "fontWeight": "bold", "letterSpacing": 0.25, - "lineHeight": 16, + "lineHeight": 20, "textTransform": "uppercase", } } @@ -2981,7 +4034,7 @@ exports[`Quotes renders correctly after animation with expanded quotes 2`] = ` "fontSize": 12, }, { - "color": "#6a737d", + "color": "#686e7d", "marginLeft": 8, }, { @@ -3018,9 +4071,9 @@ exports[`Quotes renders correctly after animation with expanded quotes 2`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 16, + "color": "#121314", + "fontFamily": "CentraNo1-Medium", + "fontSize": 18, "fontWeight": "500", "letterSpacing": 0, "lineHeight": 24, @@ -3053,9 +4106,9 @@ exports[`Quotes renders correctly after animation with expanded quotes 2`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 16, + "color": "#121314", + "fontFamily": "CentraNo1-Medium", + "fontSize": 18, "fontWeight": "500", "letterSpacing": 0, "lineHeight": 24, @@ -3087,6 +4140,7 @@ exports[`Quotes renders correctly after animation with expanded quotes 2`] = ` {}, ] } + testID="animated-view-height" > <View style={ @@ -3110,7 +4164,7 @@ exports[`Quotes renders correctly after animation with expanded quotes 2`] = ` "padding": 15, }, { - "backgroundColor": "#0376c9", + "backgroundColor": "#4459ff", }, undefined, ], @@ -3130,7 +4184,7 @@ exports[`Quotes renders correctly after animation with expanded quotes 2`] = ` null, [ { - "fontFamily": "EuclidCircularB-Bold", + "fontFamily": "CentraNo1-Bold", "fontSize": 14, "fontWeight": "600", "textAlign": "center", @@ -3173,6 +4227,7 @@ exports[`Quotes renders correctly after animation with expanded quotes 2`] = ` "opacity": 0, } } + testID="animated-view-opacity" > <TouchableOpacity accessibilityLabel="Transak (Staging)" @@ -3186,7 +4241,7 @@ exports[`Quotes renders correctly after animation with expanded quotes 2`] = ` style={ [ { - "borderColor": "#848c96", + "borderColor": "#b7bbc8", "borderRadius": 8, "borderWidth": 1.5, "padding": 16, @@ -3252,7 +4307,7 @@ exports[`Quotes renders correctly after animation with expanded quotes 2`] = ` "fontSize": 12, }, { - "color": "#6a737d", + "color": "#686e7d", "marginLeft": 8, }, { @@ -3289,9 +4344,9 @@ exports[`Quotes renders correctly after animation with expanded quotes 2`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 16, + "color": "#121314", + "fontFamily": "CentraNo1-Medium", + "fontSize": 18, "fontWeight": "500", "letterSpacing": 0, "lineHeight": 24, @@ -3324,9 +4379,9 @@ exports[`Quotes renders correctly after animation with expanded quotes 2`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 16, + "color": "#121314", + "fontFamily": "CentraNo1-Medium", + "fontSize": 18, "fontWeight": "500", "letterSpacing": 0, "lineHeight": 24, @@ -3358,6 +4413,7 @@ exports[`Quotes renders correctly after animation with expanded quotes 2`] = ` {}, ] } + testID="animated-view-height" > <View style={ @@ -3381,7 +4437,7 @@ exports[`Quotes renders correctly after animation with expanded quotes 2`] = ` "padding": 15, }, { - "backgroundColor": "#0376c9", + "backgroundColor": "#4459ff", }, undefined, ], @@ -3401,7 +4457,7 @@ exports[`Quotes renders correctly after animation with expanded quotes 2`] = ` null, [ { - "fontFamily": "EuclidCircularB-Bold", + "fontFamily": "CentraNo1-Bold", "fontSize": 14, "fontWeight": "600", "textAlign": "center", @@ -3577,8 +4633,8 @@ exports[`Quotes renders correctly after animation with the recommended quote 1`] <Text style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Regular", + "color": "#4459ff", + "fontFamily": "CentraNo1-Book", "fontSize": 23.57142857142857, "fontWeight": "400", } @@ -3613,12 +4669,12 @@ exports[`Quotes renders correctly after animation with the recommended quote 1`] numberOfLines={1} style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Bold", + "fontSize": 16, "fontWeight": "700", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -3637,12 +4693,12 @@ exports[`Quotes renders correctly after animation with the recommended quote 1`] numberOfLines={1} style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -3680,8 +4736,8 @@ exports[`Quotes renders correctly after animation with the recommended quote 1`] <Text style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Regular", + "color": "#4459ff", + "fontFamily": "CentraNo1-Book", "fontSize": 23.57142857142857, "fontWeight": "400", } @@ -3888,7 +4944,7 @@ exports[`Quotes renders correctly after animation with the recommended quote 1`] style={ [ { - "backgroundColor": "#00000099", + "backgroundColor": "#00000066", "bottom": 0, "left": 0, "position": "absolute", @@ -3935,14 +4991,14 @@ exports[`Quotes renders correctly after animation with the recommended quote 1`] [ { "backgroundColor": "#ffffff", - "borderColor": "#BBC0C566", + "borderColor": "#b7bbc866", "borderTopLeftRadius": 8, "borderTopRightRadius": 8, "borderWidth": 1, "maxHeight": 1334, "overflow": "hidden", "paddingBottom": 0, - "shadowColor": "#0000001A", + "shadowColor": "#0000001a", "shadowOffset": { "height": 2, "width": 0, @@ -3972,7 +5028,7 @@ exports[`Quotes renders correctly after animation with the recommended quote 1`] <View style={ { - "backgroundColor": "#BBC0C566", + "backgroundColor": "#b7bbc866", "borderRadius": 2, "height": 4, "width": 40, @@ -4017,8 +5073,8 @@ exports[`Quotes renders correctly after animation with the recommended quote 1`] accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", + "color": "#121314", + "fontFamily": "CentraNo1-Bold", "fontSize": 16, "fontWeight": "700", "letterSpacing": 0, @@ -4060,7 +5116,7 @@ exports[`Quotes renders correctly after animation with the recommended quote 1`] } > <SvgMock - color="#141618" + color="#121314" height={16} name="Close" style={ @@ -4080,7 +5136,7 @@ exports[`Quotes renders correctly after animation with the recommended quote 1`] { "alignItems": "center", "alignSelf": "center", - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", "borderRadius": 20, "flexDirection": "row", "marginBottom": 8, @@ -4093,8 +5149,8 @@ exports[`Quotes renders correctly after animation with the recommended quote 1`] style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -4112,7 +5168,7 @@ exports[`Quotes renders correctly after animation with the recommended quote 1`] undefined, undefined, { - "color": "#141618", + "color": "#121314", }, undefined, undefined, @@ -4136,8 +5192,8 @@ exports[`Quotes renders correctly after animation with the recommended quote 1`] style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -4145,7 +5201,7 @@ exports[`Quotes renders correctly after animation with the recommended quote 1`] undefined, undefined, { - "fontFamily": "EuclidCircularB-Bold", + "fontFamily": "CentraNo1-Bold", "fontWeight": "600", }, undefined, @@ -4156,7 +5212,7 @@ exports[`Quotes renders correctly after animation with the recommended quote 1`] undefined, undefined, { - "color": "#141618", + "color": "#121314", }, undefined, undefined, @@ -4223,6 +5279,7 @@ exports[`Quotes renders correctly after animation with the recommended quote 1`] "opacity": 0, } } + testID="animated-view-opacity" > <TouchableOpacity accessibilityLabel="MoonPay (Staging)" @@ -4234,14 +5291,14 @@ exports[`Quotes renders correctly after animation with the recommended quote 1`] style={ [ { - "borderColor": "#848c96", + "borderColor": "#b7bbc8", "borderRadius": 8, "borderWidth": 1.5, "padding": 16, }, undefined, { - "borderColor": "#0376c9", + "borderColor": "#4459ff", }, { "padding": 0, @@ -4281,7 +5338,7 @@ exports[`Quotes renders correctly after animation with the recommended quote 1`] { "alignItems": "center", "alignSelf": "flex-start", - "backgroundColor": "#0376C91A", + "backgroundColor": "#4459ff1a", "borderRadius": 4, "height": 20, "justifyContent": "center", @@ -4294,12 +5351,12 @@ exports[`Quotes renders correctly after animation with the recommended quote 1`] accessibilityRole="text" style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Bold", - "fontSize": 10, + "color": "#4459ff", + "fontFamily": "CentraNo1-Bold", + "fontSize": 12, "fontWeight": "bold", "letterSpacing": 0.25, - "lineHeight": 16, + "lineHeight": 20, "textTransform": "uppercase", } } @@ -4313,7 +5370,7 @@ exports[`Quotes renders correctly after animation with the recommended quote 1`] { "alignItems": "center", "alignSelf": "flex-start", - "backgroundColor": "#1C82341A", + "backgroundColor": "#1c7e331a", "borderRadius": 4, "height": 20, "justifyContent": "center", @@ -4326,12 +5383,12 @@ exports[`Quotes renders correctly after animation with the recommended quote 1`] accessibilityRole="text" style={ { - "color": "#1c8234", - "fontFamily": "EuclidCircularB-Bold", - "fontSize": 10, + "color": "#1c7e33", + "fontFamily": "CentraNo1-Bold", + "fontSize": 12, "fontWeight": "bold", "letterSpacing": 0.25, - "lineHeight": 16, + "lineHeight": 20, "textTransform": "uppercase", } } @@ -4378,7 +5435,7 @@ exports[`Quotes renders correctly after animation with the recommended quote 1`] "fontSize": 12, }, { - "color": "#6a737d", + "color": "#686e7d", "marginLeft": 8, }, { @@ -4415,9 +5472,9 @@ exports[`Quotes renders correctly after animation with the recommended quote 1`] accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 16, + "color": "#121314", + "fontFamily": "CentraNo1-Medium", + "fontSize": 18, "fontWeight": "500", "letterSpacing": 0, "lineHeight": 24, @@ -4450,9 +5507,9 @@ exports[`Quotes renders correctly after animation with the recommended quote 1`] accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 16, + "color": "#121314", + "fontFamily": "CentraNo1-Medium", + "fontSize": 18, "fontWeight": "500", "letterSpacing": 0, "lineHeight": 24, @@ -4484,6 +5541,7 @@ exports[`Quotes renders correctly after animation with the recommended quote 1`] {}, ] } + testID="animated-view-height" > <View style={ @@ -4507,7 +5565,7 @@ exports[`Quotes renders correctly after animation with the recommended quote 1`] "padding": 15, }, { - "backgroundColor": "#0376c9", + "backgroundColor": "#4459ff", }, undefined, ], @@ -4527,7 +5585,7 @@ exports[`Quotes renders correctly after animation with the recommended quote 1`] null, [ { - "fontFamily": "EuclidCircularB-Bold", + "fontFamily": "CentraNo1-Bold", "fontSize": 14, "fontWeight": "600", "textAlign": "center", @@ -4591,12 +5649,12 @@ exports[`Quotes renders correctly after animation with the recommended quote 1`] accessibilityRole="text" style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, + "color": "#4459ff", + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -4777,8 +5835,8 @@ exports[`Quotes renders correctly after animation without quotes 1`] = ` <Text style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Regular", + "color": "#4459ff", + "fontFamily": "CentraNo1-Book", "fontSize": 23.57142857142857, "fontWeight": "400", } @@ -4813,12 +5871,12 @@ exports[`Quotes renders correctly after animation without quotes 1`] = ` numberOfLines={1} style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Bold", + "fontSize": 16, "fontWeight": "700", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -4837,12 +5895,12 @@ exports[`Quotes renders correctly after animation without quotes 1`] = ` numberOfLines={1} style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -4880,8 +5938,8 @@ exports[`Quotes renders correctly after animation without quotes 1`] = ` <Text style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Regular", + "color": "#4459ff", + "fontFamily": "CentraNo1-Book", "fontSize": 23.57142857142857, "fontWeight": "400", } @@ -5088,7 +6146,7 @@ exports[`Quotes renders correctly after animation without quotes 1`] = ` style={ [ { - "backgroundColor": "#00000099", + "backgroundColor": "#00000066", "bottom": 0, "left": 0, "position": "absolute", @@ -5135,14 +6193,14 @@ exports[`Quotes renders correctly after animation without quotes 1`] = ` [ { "backgroundColor": "#ffffff", - "borderColor": "#BBC0C566", + "borderColor": "#b7bbc866", "borderTopLeftRadius": 8, "borderTopRightRadius": 8, "borderWidth": 1, "maxHeight": 1334, "overflow": "hidden", "paddingBottom": 0, - "shadowColor": "#0000001A", + "shadowColor": "#0000001a", "shadowOffset": { "height": 2, "width": 0, @@ -5172,7 +6230,7 @@ exports[`Quotes renders correctly after animation without quotes 1`] = ` <View style={ { - "backgroundColor": "#BBC0C566", + "backgroundColor": "#b7bbc866", "borderRadius": 2, "height": 4, "width": 40, @@ -5221,7 +6279,7 @@ exports[`Quotes renders correctly after animation without quotes 1`] = ` "textAlign": "center", }, { - "color": "#d73847", + "color": "#ca3542", }, ], { @@ -5247,12 +6305,12 @@ exports[`Quotes renders correctly after animation without quotes 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", + "color": "#121314", + "fontFamily": "CentraNo1-Bold", "fontSize": 18, "fontWeight": "600", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, "marginVertical": 3, "textAlign": "center", } @@ -5272,8 +6330,8 @@ exports[`Quotes renders correctly after animation without quotes 1`] = ` style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -5287,7 +6345,7 @@ exports[`Quotes renders correctly after animation without quotes 1`] = ` undefined, undefined, { - "color": "#6a737d", + "color": "#686e7d", }, undefined, undefined, @@ -5333,7 +6391,7 @@ exports[`Quotes renders correctly after animation without quotes 1`] = ` "padding": 15, }, { - "backgroundColor": "#0376c9", + "backgroundColor": "#4459ff", "minHeight": 50, }, undefined, @@ -5354,7 +6412,7 @@ exports[`Quotes renders correctly after animation without quotes 1`] = ` null, [ { - "fontFamily": "EuclidCircularB-Bold", + "fontFamily": "CentraNo1-Bold", "fontSize": 14, "fontWeight": "600", "textAlign": "center", @@ -5519,8 +6577,8 @@ exports[`Quotes renders correctly when fetching quotes errors 1`] = ` <Text style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Regular", + "color": "#4459ff", + "fontFamily": "CentraNo1-Book", "fontSize": 23.57142857142857, "fontWeight": "400", } @@ -5555,12 +6613,12 @@ exports[`Quotes renders correctly when fetching quotes errors 1`] = ` numberOfLines={1} style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Bold", + "fontSize": 16, "fontWeight": "700", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -5579,12 +6637,12 @@ exports[`Quotes renders correctly when fetching quotes errors 1`] = ` numberOfLines={1} style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -5622,8 +6680,8 @@ exports[`Quotes renders correctly when fetching quotes errors 1`] = ` <Text style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Regular", + "color": "#4459ff", + "fontFamily": "CentraNo1-Book", "fontSize": 23.57142857142857, "fontWeight": "400", } @@ -5830,7 +6888,7 @@ exports[`Quotes renders correctly when fetching quotes errors 1`] = ` style={ [ { - "backgroundColor": "#00000099", + "backgroundColor": "#00000066", "bottom": 0, "left": 0, "position": "absolute", @@ -5877,14 +6935,14 @@ exports[`Quotes renders correctly when fetching quotes errors 1`] = ` [ { "backgroundColor": "#ffffff", - "borderColor": "#BBC0C566", + "borderColor": "#b7bbc866", "borderTopLeftRadius": 8, "borderTopRightRadius": 8, "borderWidth": 1, "maxHeight": 1334, "overflow": "hidden", "paddingBottom": 0, - "shadowColor": "#0000001A", + "shadowColor": "#0000001a", "shadowOffset": { "height": 2, "width": 0, @@ -5914,7 +6972,7 @@ exports[`Quotes renders correctly when fetching quotes errors 1`] = ` <View style={ { - "backgroundColor": "#BBC0C566", + "backgroundColor": "#b7bbc866", "borderRadius": 2, "height": 4, "width": 40, @@ -5963,7 +7021,7 @@ exports[`Quotes renders correctly when fetching quotes errors 1`] = ` "textAlign": "center", }, { - "color": "#d73847", + "color": "#ca3542", }, ], { @@ -5989,12 +7047,12 @@ exports[`Quotes renders correctly when fetching quotes errors 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", + "color": "#121314", + "fontFamily": "CentraNo1-Bold", "fontSize": 18, "fontWeight": "600", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, "marginVertical": 3, "textAlign": "center", } @@ -6014,8 +7072,8 @@ exports[`Quotes renders correctly when fetching quotes errors 1`] = ` style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -6029,7 +7087,7 @@ exports[`Quotes renders correctly when fetching quotes errors 1`] = ` undefined, undefined, { - "color": "#6a737d", + "color": "#686e7d", }, undefined, undefined, @@ -6075,7 +7133,7 @@ exports[`Quotes renders correctly when fetching quotes errors 1`] = ` "padding": 15, }, { - "backgroundColor": "#0376c9", + "backgroundColor": "#4459ff", "minHeight": 50, }, undefined, @@ -6096,7 +7154,7 @@ exports[`Quotes renders correctly when fetching quotes errors 1`] = ` null, [ { - "fontFamily": "EuclidCircularB-Bold", + "fontFamily": "CentraNo1-Bold", "fontSize": 14, "fontWeight": "600", "textAlign": "center", @@ -6261,8 +7319,8 @@ exports[`Quotes renders correctly with sdkError 1`] = ` <Text style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Regular", + "color": "#4459ff", + "fontFamily": "CentraNo1-Book", "fontSize": 23.57142857142857, "fontWeight": "400", } @@ -6297,12 +7355,12 @@ exports[`Quotes renders correctly with sdkError 1`] = ` numberOfLines={1} style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Bold", + "fontSize": 16, "fontWeight": "700", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -6321,12 +7379,12 @@ exports[`Quotes renders correctly with sdkError 1`] = ` numberOfLines={1} style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -6364,8 +7422,8 @@ exports[`Quotes renders correctly with sdkError 1`] = ` <Text style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Regular", + "color": "#4459ff", + "fontFamily": "CentraNo1-Book", "fontSize": 23.57142857142857, "fontWeight": "400", } @@ -6572,7 +7630,7 @@ exports[`Quotes renders correctly with sdkError 1`] = ` style={ [ { - "backgroundColor": "#00000099", + "backgroundColor": "#00000066", "bottom": 0, "left": 0, "position": "absolute", @@ -6619,14 +7677,14 @@ exports[`Quotes renders correctly with sdkError 1`] = ` [ { "backgroundColor": "#ffffff", - "borderColor": "#BBC0C566", + "borderColor": "#b7bbc866", "borderTopLeftRadius": 8, "borderTopRightRadius": 8, "borderWidth": 1, "maxHeight": 1334, "overflow": "hidden", "paddingBottom": 0, - "shadowColor": "#0000001A", + "shadowColor": "#0000001a", "shadowOffset": { "height": 2, "width": 0, @@ -6656,7 +7714,7 @@ exports[`Quotes renders correctly with sdkError 1`] = ` <View style={ { - "backgroundColor": "#BBC0C566", + "backgroundColor": "#b7bbc866", "borderRadius": 2, "height": 4, "width": 40, @@ -6705,7 +7763,7 @@ exports[`Quotes renders correctly with sdkError 1`] = ` "textAlign": "center", }, { - "color": "#d73847", + "color": "#ca3542", }, ], { @@ -6731,12 +7789,12 @@ exports[`Quotes renders correctly with sdkError 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", + "color": "#121314", + "fontFamily": "CentraNo1-Bold", "fontSize": 18, "fontWeight": "600", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, "marginVertical": 3, "textAlign": "center", } @@ -6756,8 +7814,8 @@ exports[`Quotes renders correctly with sdkError 1`] = ` style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -6771,7 +7829,7 @@ exports[`Quotes renders correctly with sdkError 1`] = ` undefined, undefined, { - "color": "#6a737d", + "color": "#686e7d", }, undefined, undefined, @@ -6817,7 +7875,7 @@ exports[`Quotes renders correctly with sdkError 1`] = ` "padding": 15, }, { - "backgroundColor": "#0376c9", + "backgroundColor": "#4459ff", "minHeight": 50, }, undefined, @@ -6838,7 +7896,7 @@ exports[`Quotes renders correctly with sdkError 1`] = ` null, [ { - "fontFamily": "EuclidCircularB-Bold", + "fontFamily": "CentraNo1-Bold", "fontSize": 14, "fontWeight": "600", "textAlign": "center", @@ -7003,8 +8061,8 @@ exports[`Quotes renders quotes expired screen 1`] = ` <Text style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Regular", + "color": "#4459ff", + "fontFamily": "CentraNo1-Book", "fontSize": 23.57142857142857, "fontWeight": "400", } @@ -7039,12 +8097,12 @@ exports[`Quotes renders quotes expired screen 1`] = ` numberOfLines={1} style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Bold", + "fontSize": 16, "fontWeight": "700", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -7063,12 +8121,12 @@ exports[`Quotes renders quotes expired screen 1`] = ` numberOfLines={1} style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -7106,8 +8164,8 @@ exports[`Quotes renders quotes expired screen 1`] = ` <Text style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Regular", + "color": "#4459ff", + "fontFamily": "CentraNo1-Book", "fontSize": 23.57142857142857, "fontWeight": "400", } @@ -7314,7 +8372,7 @@ exports[`Quotes renders quotes expired screen 1`] = ` style={ [ { - "backgroundColor": "#00000099", + "backgroundColor": "#00000066", "bottom": 0, "left": 0, "position": "absolute", @@ -7361,14 +8419,14 @@ exports[`Quotes renders quotes expired screen 1`] = ` [ { "backgroundColor": "#ffffff", - "borderColor": "#BBC0C566", + "borderColor": "#b7bbc866", "borderTopLeftRadius": 8, "borderTopRightRadius": 8, "borderWidth": 1, "maxHeight": 1334, "overflow": "hidden", "paddingBottom": 0, - "shadowColor": "#0000001A", + "shadowColor": "#0000001a", "shadowOffset": { "height": 2, "width": 0, @@ -7398,7 +8456,7 @@ exports[`Quotes renders quotes expired screen 1`] = ` <View style={ { - "backgroundColor": "#BBC0C566", + "backgroundColor": "#b7bbc866", "borderRadius": 2, "height": 4, "width": 40, @@ -7447,7 +8505,7 @@ exports[`Quotes renders quotes expired screen 1`] = ` "textAlign": "center", }, { - "color": "#0376c9", + "color": "#4459ff", }, ], { @@ -7473,12 +8531,12 @@ exports[`Quotes renders quotes expired screen 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", + "color": "#121314", + "fontFamily": "CentraNo1-Bold", "fontSize": 18, "fontWeight": "600", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, "marginVertical": 3, "textAlign": "center", } @@ -7498,8 +8556,8 @@ exports[`Quotes renders quotes expired screen 1`] = ` style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -7513,7 +8571,7 @@ exports[`Quotes renders quotes expired screen 1`] = ` undefined, undefined, { - "color": "#6a737d", + "color": "#686e7d", }, undefined, undefined, @@ -7559,7 +8617,7 @@ exports[`Quotes renders quotes expired screen 1`] = ` "padding": 15, }, { - "backgroundColor": "#0376c9", + "backgroundColor": "#4459ff", "minHeight": 50, }, undefined, @@ -7580,7 +8638,7 @@ exports[`Quotes renders quotes expired screen 1`] = ` null, [ { - "fontFamily": "EuclidCircularB-Bold", + "fontFamily": "CentraNo1-Bold", "fontSize": 14, "fontWeight": "600", "textAlign": "center", @@ -7621,7 +8679,7 @@ exports[`Timer component renders correctly with isFetchingQuotes=false, pollingC { "alignItems": "center", "alignSelf": "center", - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", "borderRadius": 20, "flexDirection": "row", "marginBottom": 8, @@ -7634,8 +8692,8 @@ exports[`Timer component renders correctly with isFetchingQuotes=false, pollingC style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -7653,7 +8711,7 @@ exports[`Timer component renders correctly with isFetchingQuotes=false, pollingC undefined, undefined, { - "color": "#141618", + "color": "#121314", }, undefined, undefined, @@ -7677,8 +8735,8 @@ exports[`Timer component renders correctly with isFetchingQuotes=false, pollingC style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -7686,7 +8744,7 @@ exports[`Timer component renders correctly with isFetchingQuotes=false, pollingC undefined, undefined, { - "fontFamily": "EuclidCircularB-Bold", + "fontFamily": "CentraNo1-Bold", "fontWeight": "600", }, undefined, @@ -7697,7 +8755,7 @@ exports[`Timer component renders correctly with isFetchingQuotes=false, pollingC undefined, undefined, { - "color": "#141618", + "color": "#121314", }, undefined, undefined, @@ -7734,7 +8792,7 @@ exports[`Timer component renders correctly with isFetchingQuotes=false, pollingC { "alignItems": "center", "alignSelf": "center", - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", "borderRadius": 20, "flexDirection": "row", "marginBottom": 8, @@ -7747,8 +8805,8 @@ exports[`Timer component renders correctly with isFetchingQuotes=false, pollingC style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -7766,7 +8824,7 @@ exports[`Timer component renders correctly with isFetchingQuotes=false, pollingC undefined, undefined, { - "color": "#141618", + "color": "#121314", }, undefined, undefined, @@ -7790,8 +8848,8 @@ exports[`Timer component renders correctly with isFetchingQuotes=false, pollingC style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -7799,7 +8857,7 @@ exports[`Timer component renders correctly with isFetchingQuotes=false, pollingC undefined, undefined, { - "fontFamily": "EuclidCircularB-Bold", + "fontFamily": "CentraNo1-Bold", "fontWeight": "600", }, undefined, @@ -7810,7 +8868,7 @@ exports[`Timer component renders correctly with isFetchingQuotes=false, pollingC undefined, undefined, { - "color": "#141618", + "color": "#121314", }, undefined, undefined, @@ -7847,7 +8905,7 @@ exports[`Timer component renders correctly with isFetchingQuotes=false, pollingC { "alignItems": "center", "alignSelf": "center", - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", "borderRadius": 20, "flexDirection": "row", "marginBottom": 8, @@ -7860,8 +8918,8 @@ exports[`Timer component renders correctly with isFetchingQuotes=false, pollingC style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -7879,7 +8937,7 @@ exports[`Timer component renders correctly with isFetchingQuotes=false, pollingC undefined, undefined, { - "color": "#141618", + "color": "#121314", }, undefined, undefined, @@ -7903,8 +8961,8 @@ exports[`Timer component renders correctly with isFetchingQuotes=false, pollingC style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -7912,7 +8970,7 @@ exports[`Timer component renders correctly with isFetchingQuotes=false, pollingC undefined, undefined, { - "fontFamily": "EuclidCircularB-Bold", + "fontFamily": "CentraNo1-Bold", "fontWeight": "600", }, undefined, @@ -7923,7 +8981,7 @@ exports[`Timer component renders correctly with isFetchingQuotes=false, pollingC undefined, undefined, { - "color": "#141618", + "color": "#121314", }, undefined, undefined, @@ -7960,7 +9018,7 @@ exports[`Timer component renders correctly with isFetchingQuotes=false, pollingC { "alignItems": "center", "alignSelf": "center", - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", "borderRadius": 20, "flexDirection": "row", "marginBottom": 8, @@ -7973,8 +9031,8 @@ exports[`Timer component renders correctly with isFetchingQuotes=false, pollingC style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -7992,7 +9050,7 @@ exports[`Timer component renders correctly with isFetchingQuotes=false, pollingC undefined, undefined, { - "color": "#141618", + "color": "#121314", }, undefined, undefined, @@ -8016,8 +9074,8 @@ exports[`Timer component renders correctly with isFetchingQuotes=false, pollingC style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -8025,7 +9083,7 @@ exports[`Timer component renders correctly with isFetchingQuotes=false, pollingC undefined, undefined, { - "fontFamily": "EuclidCircularB-Bold", + "fontFamily": "CentraNo1-Bold", "fontWeight": "600", }, undefined, @@ -8036,7 +9094,7 @@ exports[`Timer component renders correctly with isFetchingQuotes=false, pollingC undefined, undefined, { - "color": "#141618", + "color": "#121314", }, undefined, undefined, @@ -8073,7 +9131,7 @@ exports[`Timer component renders correctly with isFetchingQuotes=false, pollingC { "alignItems": "center", "alignSelf": "center", - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", "borderRadius": 20, "flexDirection": "row", "marginBottom": 8, @@ -8086,8 +9144,8 @@ exports[`Timer component renders correctly with isFetchingQuotes=false, pollingC style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -8105,7 +9163,7 @@ exports[`Timer component renders correctly with isFetchingQuotes=false, pollingC undefined, undefined, { - "color": "#141618", + "color": "#121314", }, undefined, undefined, @@ -8129,8 +9187,8 @@ exports[`Timer component renders correctly with isFetchingQuotes=false, pollingC style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -8138,7 +9196,7 @@ exports[`Timer component renders correctly with isFetchingQuotes=false, pollingC undefined, undefined, { - "fontFamily": "EuclidCircularB-Bold", + "fontFamily": "CentraNo1-Bold", "fontWeight": "600", }, undefined, @@ -8149,7 +9207,7 @@ exports[`Timer component renders correctly with isFetchingQuotes=false, pollingC undefined, undefined, { - "color": "#141618", + "color": "#121314", }, undefined, undefined, @@ -8186,7 +9244,7 @@ exports[`Timer component renders correctly with isFetchingQuotes=true, pollingCy { "alignItems": "center", "alignSelf": "center", - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", "borderRadius": 20, "flexDirection": "row", "marginBottom": 8, @@ -8202,8 +9260,8 @@ exports[`Timer component renders correctly with isFetchingQuotes=true, pollingCy style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -8247,7 +9305,7 @@ exports[`Timer component renders correctly with isFetchingQuotes=true, pollingCy { "alignItems": "center", "alignSelf": "center", - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", "borderRadius": 20, "flexDirection": "row", "marginBottom": 8, @@ -8263,8 +9321,8 @@ exports[`Timer component renders correctly with isFetchingQuotes=true, pollingCy style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -8308,7 +9366,7 @@ exports[`Timer component renders correctly with isFetchingQuotes=true, pollingCy { "alignItems": "center", "alignSelf": "center", - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", "borderRadius": 20, "flexDirection": "row", "marginBottom": 8, @@ -8324,8 +9382,8 @@ exports[`Timer component renders correctly with isFetchingQuotes=true, pollingCy style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -8369,7 +9427,7 @@ exports[`Timer component renders correctly with isFetchingQuotes=true, pollingCy { "alignItems": "center", "alignSelf": "center", - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", "borderRadius": 20, "flexDirection": "row", "marginBottom": 8, @@ -8385,8 +9443,8 @@ exports[`Timer component renders correctly with isFetchingQuotes=true, pollingCy style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, diff --git a/app/components/UI/Ramp/Views/Regions/__snapshots__/Regions.test.tsx.snap b/app/components/UI/Ramp/Views/Regions/__snapshots__/Regions.test.tsx.snap index 1bed1211290a..ddf413a6293d 100644 --- a/app/components/UI/Ramp/Views/Regions/__snapshots__/Regions.test.tsx.snap +++ b/app/components/UI/Ramp/Views/Regions/__snapshots__/Regions.test.tsx.snap @@ -143,12 +143,12 @@ exports[`Regions View renders correctly 1`] = ` numberOfLines={1} style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Bold", + "fontSize": 16, "fontWeight": "700", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -167,12 +167,12 @@ exports[`Regions View renders correctly 1`] = ` numberOfLines={1} style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -210,8 +210,8 @@ exports[`Regions View renders correctly 1`] = ` <Text style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Regular", + "color": "#4459ff", + "fontFamily": "CentraNo1-Book", "fontSize": 23.57142857142857, "fontWeight": "400", } @@ -429,8 +429,8 @@ exports[`Regions View renders correctly 1`] = ` style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -442,14 +442,14 @@ exports[`Regions View renders correctly 1`] = ` undefined, undefined, { - "color": "#141618", + "color": "#121314", }, undefined, undefined, undefined, undefined, { - "color": "#141618", + "color": "#121314", }, undefined, undefined, @@ -476,8 +476,8 @@ exports[`Regions View renders correctly 1`] = ` style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -491,7 +491,7 @@ exports[`Regions View renders correctly 1`] = ` undefined, undefined, { - "color": "#6a737d", + "color": "#686e7d", }, undefined, undefined, @@ -555,7 +555,7 @@ exports[`Regions View renders correctly 1`] = ` style={ [ { - "borderColor": "#848c96", + "borderColor": "#b7bbc8", "borderRadius": 8, "borderWidth": 1.5, "padding": 16, @@ -598,9 +598,9 @@ exports[`Regions View renders correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 16, + "color": "#121314", + "fontFamily": "CentraNo1-Medium", + "fontSize": 18, "fontWeight": "500", "letterSpacing": 0, "lineHeight": 24, @@ -632,7 +632,7 @@ exports[`Regions View renders correctly 1`] = ` style={ [ { - "color": "#141618", + "color": "#121314", "fontSize": 15, }, undefined, @@ -682,7 +682,7 @@ exports[`Regions View renders correctly 1`] = ` "padding": 15, }, { - "backgroundColor": "#0376c9", + "backgroundColor": "#4459ff", "minHeight": 50, }, undefined, @@ -707,7 +707,7 @@ exports[`Regions View renders correctly 1`] = ` }, [ { - "fontFamily": "EuclidCircularB-Bold", + "fontFamily": "CentraNo1-Bold", "fontSize": 14, "fontWeight": "600", "textAlign": "center", @@ -943,12 +943,12 @@ exports[`Regions View renders correctly while loading 1`] = ` numberOfLines={1} style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Bold", + "fontSize": 16, "fontWeight": "700", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -967,12 +967,12 @@ exports[`Regions View renders correctly while loading 1`] = ` numberOfLines={1} style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -1010,8 +1010,8 @@ exports[`Regions View renders correctly while loading 1`] = ` <Text style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Regular", + "color": "#4459ff", + "fontFamily": "CentraNo1-Book", "fontSize": 23.57142857142857, "fontWeight": "400", } @@ -1239,7 +1239,7 @@ exports[`Regions View renders correctly while loading 1`] = ` style={ [ { - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", "borderRadius": 30, "padding": 14, }, @@ -1270,7 +1270,7 @@ exports[`Regions View renders correctly while loading 1`] = ` style={ [ { - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", "borderRadius": 30, "padding": 14, }, @@ -1299,7 +1299,7 @@ exports[`Regions View renders correctly while loading 1`] = ` style={ [ { - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", "borderRadius": 30, "padding": 14, }, @@ -1336,7 +1336,7 @@ exports[`Regions View renders correctly while loading 1`] = ` style={ [ { - "borderColor": "#848c96", + "borderColor": "#b7bbc8", "borderRadius": 8, "borderWidth": 1.5, "padding": 16, @@ -1352,7 +1352,7 @@ exports[`Regions View renders correctly while loading 1`] = ` style={ [ { - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", "borderRadius": 30, "padding": 14, }, @@ -1538,12 +1538,12 @@ exports[`Regions View renders correctly with error 1`] = ` numberOfLines={1} style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Bold", + "fontSize": 16, "fontWeight": "700", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -1562,12 +1562,12 @@ exports[`Regions View renders correctly with error 1`] = ` numberOfLines={1} style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -1605,8 +1605,8 @@ exports[`Regions View renders correctly with error 1`] = ` <Text style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Regular", + "color": "#4459ff", + "fontFamily": "CentraNo1-Book", "fontSize": 23.57142857142857, "fontWeight": "400", } @@ -1860,7 +1860,7 @@ exports[`Regions View renders correctly with error 1`] = ` "textAlign": "center", }, { - "color": "#d73847", + "color": "#ca3542", }, ], { @@ -1886,12 +1886,12 @@ exports[`Regions View renders correctly with error 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", + "color": "#121314", + "fontFamily": "CentraNo1-Bold", "fontSize": 18, "fontWeight": "600", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, "marginVertical": 3, "textAlign": "center", } @@ -1911,8 +1911,8 @@ exports[`Regions View renders correctly with error 1`] = ` style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -1926,7 +1926,7 @@ exports[`Regions View renders correctly with error 1`] = ` undefined, undefined, { - "color": "#6a737d", + "color": "#686e7d", }, undefined, undefined, @@ -1972,7 +1972,7 @@ exports[`Regions View renders correctly with error 1`] = ` "padding": 15, }, { - "backgroundColor": "#0376c9", + "backgroundColor": "#4459ff", "minHeight": 50, }, undefined, @@ -1993,7 +1993,7 @@ exports[`Regions View renders correctly with error 1`] = ` null, [ { - "fontFamily": "EuclidCircularB-Bold", + "fontFamily": "CentraNo1-Bold", "fontSize": 14, "fontWeight": "600", "textAlign": "center", @@ -2171,12 +2171,12 @@ exports[`Regions View renders correctly with no data 1`] = ` numberOfLines={1} style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Bold", + "fontSize": 16, "fontWeight": "700", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -2195,12 +2195,12 @@ exports[`Regions View renders correctly with no data 1`] = ` numberOfLines={1} style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -2238,8 +2238,8 @@ exports[`Regions View renders correctly with no data 1`] = ` <Text style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Regular", + "color": "#4459ff", + "fontFamily": "CentraNo1-Book", "fontSize": 23.57142857142857, "fontWeight": "400", } @@ -2467,7 +2467,7 @@ exports[`Regions View renders correctly with no data 1`] = ` style={ [ { - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", "borderRadius": 30, "padding": 14, }, @@ -2498,7 +2498,7 @@ exports[`Regions View renders correctly with no data 1`] = ` style={ [ { - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", "borderRadius": 30, "padding": 14, }, @@ -2527,7 +2527,7 @@ exports[`Regions View renders correctly with no data 1`] = ` style={ [ { - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", "borderRadius": 30, "padding": 14, }, @@ -2564,7 +2564,7 @@ exports[`Regions View renders correctly with no data 1`] = ` style={ [ { - "borderColor": "#848c96", + "borderColor": "#b7bbc8", "borderRadius": 8, "borderWidth": 1.5, "padding": 16, @@ -2580,7 +2580,7 @@ exports[`Regions View renders correctly with no data 1`] = ` style={ [ { - "backgroundColor": "#f2f4f6", + "backgroundColor": "#f3f5f9", "borderRadius": 30, "padding": 14, }, @@ -2766,12 +2766,12 @@ exports[`Regions View renders correctly with sdkError 1`] = ` numberOfLines={1} style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Bold", + "fontSize": 16, "fontWeight": "700", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -2790,12 +2790,12 @@ exports[`Regions View renders correctly with sdkError 1`] = ` numberOfLines={1} style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -2833,8 +2833,8 @@ exports[`Regions View renders correctly with sdkError 1`] = ` <Text style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Regular", + "color": "#4459ff", + "fontFamily": "CentraNo1-Book", "fontSize": 23.57142857142857, "fontWeight": "400", } @@ -3088,7 +3088,7 @@ exports[`Regions View renders correctly with sdkError 1`] = ` "textAlign": "center", }, { - "color": "#d73847", + "color": "#ca3542", }, ], { @@ -3114,12 +3114,12 @@ exports[`Regions View renders correctly with sdkError 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", + "color": "#121314", + "fontFamily": "CentraNo1-Bold", "fontSize": 18, "fontWeight": "600", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, "marginVertical": 3, "textAlign": "center", } @@ -3139,8 +3139,8 @@ exports[`Regions View renders correctly with sdkError 1`] = ` style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -3154,7 +3154,7 @@ exports[`Regions View renders correctly with sdkError 1`] = ` undefined, undefined, { - "color": "#6a737d", + "color": "#686e7d", }, undefined, undefined, @@ -3200,7 +3200,7 @@ exports[`Regions View renders correctly with sdkError 1`] = ` "padding": 15, }, { - "backgroundColor": "#0376c9", + "backgroundColor": "#4459ff", "minHeight": 50, }, undefined, @@ -3221,7 +3221,7 @@ exports[`Regions View renders correctly with sdkError 1`] = ` null, [ { - "fontFamily": "EuclidCircularB-Bold", + "fontFamily": "CentraNo1-Bold", "fontSize": 14, "fontWeight": "600", "textAlign": "center", @@ -3399,12 +3399,12 @@ exports[`Regions View renders correctly with selectedRegion 1`] = ` numberOfLines={1} style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Bold", + "fontSize": 16, "fontWeight": "700", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -3423,12 +3423,12 @@ exports[`Regions View renders correctly with selectedRegion 1`] = ` numberOfLines={1} style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -3466,8 +3466,8 @@ exports[`Regions View renders correctly with selectedRegion 1`] = ` <Text style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Regular", + "color": "#4459ff", + "fontFamily": "CentraNo1-Book", "fontSize": 23.57142857142857, "fontWeight": "400", } @@ -3685,8 +3685,8 @@ exports[`Regions View renders correctly with selectedRegion 1`] = ` style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -3698,14 +3698,14 @@ exports[`Regions View renders correctly with selectedRegion 1`] = ` undefined, undefined, { - "color": "#141618", + "color": "#121314", }, undefined, undefined, undefined, undefined, { - "color": "#141618", + "color": "#121314", }, undefined, undefined, @@ -3732,8 +3732,8 @@ exports[`Regions View renders correctly with selectedRegion 1`] = ` style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -3747,7 +3747,7 @@ exports[`Regions View renders correctly with selectedRegion 1`] = ` undefined, undefined, { - "color": "#6a737d", + "color": "#686e7d", }, undefined, undefined, @@ -3811,7 +3811,7 @@ exports[`Regions View renders correctly with selectedRegion 1`] = ` style={ [ { - "borderColor": "#848c96", + "borderColor": "#b7bbc8", "borderRadius": 8, "borderWidth": 1.5, "padding": 16, @@ -3854,9 +3854,9 @@ exports[`Regions View renders correctly with selectedRegion 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 16, + "color": "#121314", + "fontFamily": "CentraNo1-Medium", + "fontSize": 18, "fontWeight": "500", "letterSpacing": 0, "lineHeight": 24, @@ -3891,7 +3891,7 @@ exports[`Regions View renders correctly with selectedRegion 1`] = ` style={ [ { - "color": "#141618", + "color": "#121314", "fontSize": 15, }, undefined, @@ -3942,7 +3942,7 @@ exports[`Regions View renders correctly with selectedRegion 1`] = ` "padding": 15, }, { - "backgroundColor": "#0376c9", + "backgroundColor": "#4459ff", "minHeight": 50, }, undefined, @@ -3963,7 +3963,7 @@ exports[`Regions View renders correctly with selectedRegion 1`] = ` null, [ { - "fontFamily": "EuclidCircularB-Bold", + "fontFamily": "CentraNo1-Bold", "fontSize": 14, "fontWeight": "600", "textAlign": "center", @@ -4197,12 +4197,12 @@ exports[`Regions View renders correctly with unsupportedRegion 1`] = ` numberOfLines={1} style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Bold", + "fontSize": 16, "fontWeight": "700", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -4221,12 +4221,12 @@ exports[`Regions View renders correctly with unsupportedRegion 1`] = ` numberOfLines={1} style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -4264,8 +4264,8 @@ exports[`Regions View renders correctly with unsupportedRegion 1`] = ` <Text style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Regular", + "color": "#4459ff", + "fontFamily": "CentraNo1-Book", "fontSize": 23.57142857142857, "fontWeight": "400", } @@ -4483,8 +4483,8 @@ exports[`Regions View renders correctly with unsupportedRegion 1`] = ` style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -4496,14 +4496,14 @@ exports[`Regions View renders correctly with unsupportedRegion 1`] = ` undefined, undefined, { - "color": "#141618", + "color": "#121314", }, undefined, undefined, undefined, undefined, { - "color": "#141618", + "color": "#121314", }, undefined, undefined, @@ -4530,8 +4530,8 @@ exports[`Regions View renders correctly with unsupportedRegion 1`] = ` style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -4545,7 +4545,7 @@ exports[`Regions View renders correctly with unsupportedRegion 1`] = ` undefined, undefined, { - "color": "#6a737d", + "color": "#686e7d", }, undefined, undefined, @@ -4609,7 +4609,7 @@ exports[`Regions View renders correctly with unsupportedRegion 1`] = ` style={ [ { - "borderColor": "#848c96", + "borderColor": "#b7bbc8", "borderRadius": 8, "borderWidth": 1.5, "padding": 16, @@ -4652,9 +4652,9 @@ exports[`Regions View renders correctly with unsupportedRegion 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 16, + "color": "#121314", + "fontFamily": "CentraNo1-Medium", + "fontSize": 18, "fontWeight": "500", "letterSpacing": 0, "lineHeight": 24, @@ -4686,7 +4686,7 @@ exports[`Regions View renders correctly with unsupportedRegion 1`] = ` style={ [ { - "color": "#141618", + "color": "#121314", "fontSize": 15, }, undefined, @@ -4736,7 +4736,7 @@ exports[`Regions View renders correctly with unsupportedRegion 1`] = ` "padding": 15, }, { - "backgroundColor": "#0376c9", + "backgroundColor": "#4459ff", "minHeight": 50, }, undefined, @@ -4761,7 +4761,7 @@ exports[`Regions View renders correctly with unsupportedRegion 1`] = ` }, [ { - "fontFamily": "EuclidCircularB-Bold", + "fontFamily": "CentraNo1-Bold", "fontSize": 14, "fontWeight": "600", "textAlign": "center", @@ -4833,7 +4833,7 @@ exports[`Regions View renders correctly with unsupportedRegion 1`] = ` onStartShouldSetResponder={[Function]} style={ { - "backgroundColor": "#00000099", + "backgroundColor": "#00000066", "bottom": 0, "height": 1334, "left": 0, @@ -4936,7 +4936,7 @@ exports[`Regions View renders correctly with unsupportedRegion 1`] = ` style={ [ { - "borderColor": "#848c96", + "borderColor": "#b7bbc8", "borderRadius": 8, "borderWidth": 1.5, "padding": 16, @@ -4966,7 +4966,7 @@ exports[`Regions View renders correctly with unsupportedRegion 1`] = ` style={ [ { - "color": "#141618", + "color": "#121314", "fontSize": 17, }, undefined, @@ -4993,8 +4993,8 @@ exports[`Regions View renders correctly with unsupportedRegion 1`] = ` style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -5002,7 +5002,7 @@ exports[`Regions View renders correctly with unsupportedRegion 1`] = ` undefined, undefined, { - "fontFamily": "EuclidCircularB-Bold", + "fontFamily": "CentraNo1-Bold", "fontWeight": "600", }, undefined, @@ -5013,7 +5013,7 @@ exports[`Regions View renders correctly with unsupportedRegion 1`] = ` undefined, undefined, { - "color": "#141618", + "color": "#121314", }, undefined, undefined, @@ -5039,8 +5039,8 @@ exports[`Regions View renders correctly with unsupportedRegion 1`] = ` style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -5050,14 +5050,14 @@ exports[`Regions View renders correctly with unsupportedRegion 1`] = ` undefined, undefined, { - "color": "#141618", + "color": "#121314", }, undefined, undefined, undefined, undefined, { - "color": "#141618", + "color": "#121314", }, undefined, undefined, @@ -5089,8 +5089,8 @@ exports[`Regions View renders correctly with unsupportedRegion 1`] = ` style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -5134,8 +5134,8 @@ exports[`Regions View renders correctly with unsupportedRegion 1`] = ` style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -5146,7 +5146,7 @@ exports[`Regions View renders correctly with unsupportedRegion 1`] = ` undefined, undefined, { - "color": "#0376c9", + "color": "#4459ff", }, undefined, undefined, @@ -5370,12 +5370,12 @@ exports[`Regions View renders correctly with unsupportedRegion 2`] = ` numberOfLines={1} style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Bold", + "fontSize": 16, "fontWeight": "700", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -5394,12 +5394,12 @@ exports[`Regions View renders correctly with unsupportedRegion 2`] = ` numberOfLines={1} style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -5437,8 +5437,8 @@ exports[`Regions View renders correctly with unsupportedRegion 2`] = ` <Text style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Regular", + "color": "#4459ff", + "fontFamily": "CentraNo1-Book", "fontSize": 23.57142857142857, "fontWeight": "400", } @@ -5656,8 +5656,8 @@ exports[`Regions View renders correctly with unsupportedRegion 2`] = ` style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -5669,14 +5669,14 @@ exports[`Regions View renders correctly with unsupportedRegion 2`] = ` undefined, undefined, { - "color": "#141618", + "color": "#121314", }, undefined, undefined, undefined, undefined, { - "color": "#141618", + "color": "#121314", }, undefined, undefined, @@ -5703,8 +5703,8 @@ exports[`Regions View renders correctly with unsupportedRegion 2`] = ` style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -5718,7 +5718,7 @@ exports[`Regions View renders correctly with unsupportedRegion 2`] = ` undefined, undefined, { - "color": "#6a737d", + "color": "#686e7d", }, undefined, undefined, @@ -5782,7 +5782,7 @@ exports[`Regions View renders correctly with unsupportedRegion 2`] = ` style={ [ { - "borderColor": "#848c96", + "borderColor": "#b7bbc8", "borderRadius": 8, "borderWidth": 1.5, "padding": 16, @@ -5825,9 +5825,9 @@ exports[`Regions View renders correctly with unsupportedRegion 2`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 16, + "color": "#121314", + "fontFamily": "CentraNo1-Medium", + "fontSize": 18, "fontWeight": "500", "letterSpacing": 0, "lineHeight": 24, @@ -5859,7 +5859,7 @@ exports[`Regions View renders correctly with unsupportedRegion 2`] = ` style={ [ { - "color": "#141618", + "color": "#121314", "fontSize": 15, }, undefined, @@ -5909,7 +5909,7 @@ exports[`Regions View renders correctly with unsupportedRegion 2`] = ` "padding": 15, }, { - "backgroundColor": "#0376c9", + "backgroundColor": "#4459ff", "minHeight": 50, }, undefined, @@ -5934,7 +5934,7 @@ exports[`Regions View renders correctly with unsupportedRegion 2`] = ` }, [ { - "fontFamily": "EuclidCircularB-Bold", + "fontFamily": "CentraNo1-Bold", "fontSize": 14, "fontWeight": "600", "textAlign": "center", @@ -6006,7 +6006,7 @@ exports[`Regions View renders correctly with unsupportedRegion 2`] = ` onStartShouldSetResponder={[Function]} style={ { - "backgroundColor": "#00000099", + "backgroundColor": "#00000066", "bottom": 0, "height": 1334, "left": 0, @@ -6109,7 +6109,7 @@ exports[`Regions View renders correctly with unsupportedRegion 2`] = ` style={ [ { - "borderColor": "#848c96", + "borderColor": "#b7bbc8", "borderRadius": 8, "borderWidth": 1.5, "padding": 16, @@ -6139,7 +6139,7 @@ exports[`Regions View renders correctly with unsupportedRegion 2`] = ` style={ [ { - "color": "#141618", + "color": "#121314", "fontSize": 17, }, undefined, @@ -6166,8 +6166,8 @@ exports[`Regions View renders correctly with unsupportedRegion 2`] = ` style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -6175,7 +6175,7 @@ exports[`Regions View renders correctly with unsupportedRegion 2`] = ` undefined, undefined, { - "fontFamily": "EuclidCircularB-Bold", + "fontFamily": "CentraNo1-Bold", "fontWeight": "600", }, undefined, @@ -6186,7 +6186,7 @@ exports[`Regions View renders correctly with unsupportedRegion 2`] = ` undefined, undefined, { - "color": "#141618", + "color": "#121314", }, undefined, undefined, @@ -6212,8 +6212,8 @@ exports[`Regions View renders correctly with unsupportedRegion 2`] = ` style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -6223,14 +6223,14 @@ exports[`Regions View renders correctly with unsupportedRegion 2`] = ` undefined, undefined, { - "color": "#141618", + "color": "#121314", }, undefined, undefined, undefined, undefined, { - "color": "#141618", + "color": "#121314", }, undefined, undefined, @@ -6262,8 +6262,8 @@ exports[`Regions View renders correctly with unsupportedRegion 2`] = ` style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -6307,8 +6307,8 @@ exports[`Regions View renders correctly with unsupportedRegion 2`] = ` style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -6319,7 +6319,7 @@ exports[`Regions View renders correctly with unsupportedRegion 2`] = ` undefined, undefined, { - "color": "#0376c9", + "color": "#4459ff", }, undefined, undefined, @@ -6543,12 +6543,12 @@ exports[`Regions View renders regions modal when pressing select button 1`] = ` numberOfLines={1} style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Bold", + "fontSize": 16, "fontWeight": "700", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -6567,12 +6567,12 @@ exports[`Regions View renders regions modal when pressing select button 1`] = ` numberOfLines={1} style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -6610,8 +6610,8 @@ exports[`Regions View renders regions modal when pressing select button 1`] = ` <Text style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Regular", + "color": "#4459ff", + "fontFamily": "CentraNo1-Book", "fontSize": 23.57142857142857, "fontWeight": "400", } @@ -6829,8 +6829,8 @@ exports[`Regions View renders regions modal when pressing select button 1`] = ` style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -6842,14 +6842,14 @@ exports[`Regions View renders regions modal when pressing select button 1`] = ` undefined, undefined, { - "color": "#141618", + "color": "#121314", }, undefined, undefined, undefined, undefined, { - "color": "#141618", + "color": "#121314", }, undefined, undefined, @@ -6876,8 +6876,8 @@ exports[`Regions View renders regions modal when pressing select button 1`] = ` style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -6891,7 +6891,7 @@ exports[`Regions View renders regions modal when pressing select button 1`] = ` undefined, undefined, { - "color": "#6a737d", + "color": "#686e7d", }, undefined, undefined, @@ -6955,7 +6955,7 @@ exports[`Regions View renders regions modal when pressing select button 1`] = ` style={ [ { - "borderColor": "#848c96", + "borderColor": "#b7bbc8", "borderRadius": 8, "borderWidth": 1.5, "padding": 16, @@ -6998,9 +6998,9 @@ exports[`Regions View renders regions modal when pressing select button 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 16, + "color": "#121314", + "fontFamily": "CentraNo1-Medium", + "fontSize": 18, "fontWeight": "500", "letterSpacing": 0, "lineHeight": 24, @@ -7032,7 +7032,7 @@ exports[`Regions View renders regions modal when pressing select button 1`] = ` style={ [ { - "color": "#141618", + "color": "#121314", "fontSize": 15, }, undefined, @@ -7082,7 +7082,7 @@ exports[`Regions View renders regions modal when pressing select button 1`] = ` "padding": 15, }, { - "backgroundColor": "#0376c9", + "backgroundColor": "#4459ff", "minHeight": 50, }, undefined, @@ -7107,7 +7107,7 @@ exports[`Regions View renders regions modal when pressing select button 1`] = ` }, [ { - "fontFamily": "EuclidCircularB-Bold", + "fontFamily": "CentraNo1-Bold", "fontSize": 14, "fontWeight": "600", "textAlign": "center", @@ -7208,7 +7208,7 @@ exports[`Regions View renders regions modal when pressing select button 1`] = ` onStartShouldSetResponder={[Function]} style={ { - "backgroundColor": "#00000099", + "backgroundColor": "#00000066", "bottom": 0, "height": 1334, "left": 0, @@ -7320,7 +7320,7 @@ exports[`Regions View renders regions modal when pressing select button 1`] = ` { "alignItems": "center", "borderBottomWidth": 0.5, - "borderColor": "#BBC0C566", + "borderColor": "#b7bbc866", "height": 33, "justifyContent": "center", "width": "100%", @@ -7332,7 +7332,7 @@ exports[`Regions View renders regions modal when pressing select button 1`] = ` <View style={ { - "backgroundColor": "#848c96", + "backgroundColor": "#b7bbc8", "borderRadius": 4, "height": 5, "width": 48, @@ -7373,8 +7373,8 @@ exports[`Regions View renders regions modal when pressing select button 1`] = ` style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -7384,19 +7384,19 @@ exports[`Regions View renders regions modal when pressing select button 1`] = ` }, undefined, { - "fontFamily": "EuclidCircularB-Bold", + "fontFamily": "CentraNo1-Bold", "fontWeight": "600", }, undefined, { - "color": "#141618", + "color": "#121314", }, undefined, undefined, undefined, undefined, { - "color": "#141618", + "color": "#121314", }, undefined, undefined, @@ -7423,8 +7423,8 @@ exports[`Regions View renders regions modal when pressing select button 1`] = ` style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -7438,7 +7438,7 @@ exports[`Regions View renders regions modal when pressing select button 1`] = ` undefined, undefined, { - "color": "#6a737d", + "color": "#686e7d", }, undefined, undefined, @@ -7491,7 +7491,7 @@ exports[`Regions View renders regions modal when pressing select button 1`] = ` style={ { "alignItems": "center", - "borderColor": "#848c96", + "borderColor": "#b7bbc8", "borderRadius": 5, "borderWidth": 1, "flexDirection": "row", @@ -7511,7 +7511,7 @@ exports[`Regions View renders regions modal when pressing select button 1`] = ` "fontSize": 20, }, { - "color": "#6a737d", + "color": "#686e7d", "marginHorizontal": 8, }, { @@ -7528,12 +7528,12 @@ exports[`Regions View renders regions modal when pressing select button 1`] = ` <TextInput onChangeText={[Function]} placeholder="Search by country" - placeholderTextColor="#9fa6ae" + placeholderTextColor="#9ca1af" style={ { - "color": "#141618", + "color": "#121314", "flex": 1, - "fontFamily": "EuclidCircularB-Regular", + "fontFamily": "CentraNo1-Book", "fontWeight": "400", } } @@ -7704,12 +7704,12 @@ exports[`Regions View renders regions modal when pressing select button 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -7721,9 +7721,9 @@ exports[`Regions View renders regions modal when pressing select button 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 16, + "color": "#121314", + "fontFamily": "CentraNo1-Medium", + "fontSize": 18, "fontWeight": "500", "letterSpacing": 0, "lineHeight": 24, @@ -7741,7 +7741,7 @@ exports[`Regions View renders regions modal when pressing select button 1`] = ` <View style={ { - "backgroundColor": "#BBC0C566", + "backgroundColor": "#b7bbc866", "height": 1, "width": "100%", } @@ -7813,12 +7813,12 @@ exports[`Regions View renders regions modal when pressing select button 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -7830,9 +7830,9 @@ exports[`Regions View renders regions modal when pressing select button 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 16, + "color": "#121314", + "fontFamily": "CentraNo1-Medium", + "fontSize": 18, "fontWeight": "500", "letterSpacing": 0, "lineHeight": 24, @@ -7859,7 +7859,7 @@ exports[`Regions View renders regions modal when pressing select button 1`] = ` <View style={ { - "backgroundColor": "#BBC0C566", + "backgroundColor": "#b7bbc866", "height": 1, "width": "100%", } diff --git a/app/components/UI/Ramp/Views/SendTransaction/__snapshots__/SendTransaction.test.tsx.snap b/app/components/UI/Ramp/Views/SendTransaction/__snapshots__/SendTransaction.test.tsx.snap index 5b4c20cf9d1b..07636c0c4924 100644 --- a/app/components/UI/Ramp/Views/SendTransaction/__snapshots__/SendTransaction.test.tsx.snap +++ b/app/components/UI/Ramp/Views/SendTransaction/__snapshots__/SendTransaction.test.tsx.snap @@ -130,8 +130,8 @@ exports[`SendTransaction View renders correctly 1`] = ` <Text style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Regular", + "color": "#4459ff", + "fontFamily": "CentraNo1-Book", "fontSize": 23.57142857142857, "fontWeight": "400", } @@ -166,12 +166,12 @@ exports[`SendTransaction View renders correctly 1`] = ` numberOfLines={1} style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Bold", + "fontSize": 16, "fontWeight": "700", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -190,12 +190,12 @@ exports[`SendTransaction View renders correctly 1`] = ` numberOfLines={1} style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -462,12 +462,12 @@ exports[`SendTransaction View renders correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, "textAlign": "center", } } @@ -476,8 +476,8 @@ exports[`SendTransaction View renders correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 18, "fontWeight": "normal", "letterSpacing": 0, @@ -492,8 +492,8 @@ exports[`SendTransaction View renders correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", + "color": "#121314", + "fontFamily": "CentraNo1-Bold", "fontSize": 18, "fontWeight": "700", "letterSpacing": 0, @@ -534,8 +534,8 @@ exports[`SendTransaction View renders correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", + "color": "#121314", + "fontFamily": "CentraNo1-Bold", "fontSize": 18, "fontWeight": "700", "letterSpacing": 0, @@ -560,7 +560,7 @@ exports[`SendTransaction View renders correctly 1`] = ` } > <SvgMock - color="#6a737d" + color="#686e7d" height={24} name="Arrow2Down" style={ @@ -612,7 +612,7 @@ exports[`SendTransaction View renders correctly 1`] = ` } > <SvgMock - color="#6a737d" + color="#686e7d" height={24} name="Arrow2Down" style={ @@ -651,7 +651,7 @@ exports[`SendTransaction View renders correctly 1`] = ` style={ [ { - "color": "#6a737d", + "color": "#686e7d", "fontSize": 20, }, undefined, @@ -670,8 +670,8 @@ exports[`SendTransaction View renders correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 18, "fontWeight": "normal", "letterSpacing": 0, @@ -716,12 +716,12 @@ exports[`SendTransaction View renders correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, "textAlign": "center", } } @@ -753,7 +753,7 @@ exports[`SendTransaction View renders correctly 1`] = ` { "alignItems": "center", "alignSelf": "stretch", - "backgroundColor": "#0376c9", + "backgroundColor": "#4459ff", "borderRadius": 24, "flexDirection": "row", "height": 48, @@ -767,8 +767,8 @@ exports[`SendTransaction View renders correctly 1`] = ` style={ { "color": "#ffffff", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 16, + "fontFamily": "CentraNo1-Medium", + "fontSize": 18, "fontWeight": "500", "letterSpacing": 0, "lineHeight": 24, @@ -925,8 +925,8 @@ exports[`SendTransaction View renders correctly for custom action payment method <Text style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Regular", + "color": "#4459ff", + "fontFamily": "CentraNo1-Book", "fontSize": 23.57142857142857, "fontWeight": "400", } @@ -961,12 +961,12 @@ exports[`SendTransaction View renders correctly for custom action payment method numberOfLines={1} style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Bold", + "fontSize": 16, "fontWeight": "700", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -985,12 +985,12 @@ exports[`SendTransaction View renders correctly for custom action payment method numberOfLines={1} style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -1257,12 +1257,12 @@ exports[`SendTransaction View renders correctly for custom action payment method accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, "textAlign": "center", } } @@ -1271,8 +1271,8 @@ exports[`SendTransaction View renders correctly for custom action payment method accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 18, "fontWeight": "normal", "letterSpacing": 0, @@ -1287,8 +1287,8 @@ exports[`SendTransaction View renders correctly for custom action payment method accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", + "color": "#121314", + "fontFamily": "CentraNo1-Bold", "fontSize": 18, "fontWeight": "700", "letterSpacing": 0, @@ -1333,8 +1333,8 @@ exports[`SendTransaction View renders correctly for custom action payment method accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", + "color": "#121314", + "fontFamily": "CentraNo1-Bold", "fontSize": 18, "fontWeight": "700", "letterSpacing": 0, @@ -1359,7 +1359,7 @@ exports[`SendTransaction View renders correctly for custom action payment method } > <SvgMock - color="#6a737d" + color="#686e7d" height={24} name="Arrow2Down" style={ @@ -1431,12 +1431,12 @@ exports[`SendTransaction View renders correctly for custom action payment method accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, "textAlign": "center", } } @@ -1468,7 +1468,7 @@ exports[`SendTransaction View renders correctly for custom action payment method { "alignItems": "center", "alignSelf": "stretch", - "backgroundColor": "#0376c9", + "backgroundColor": "#4459ff", "borderRadius": 24, "flexDirection": "row", "height": 48, @@ -1482,8 +1482,8 @@ exports[`SendTransaction View renders correctly for custom action payment method style={ { "color": "#ffffff", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 16, + "fontFamily": "CentraNo1-Medium", + "fontSize": 18, "fontWeight": "500", "letterSpacing": 0, "lineHeight": 24, @@ -1640,8 +1640,8 @@ exports[`SendTransaction View renders correctly for token 1`] = ` <Text style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Regular", + "color": "#4459ff", + "fontFamily": "CentraNo1-Book", "fontSize": 23.57142857142857, "fontWeight": "400", } @@ -1676,12 +1676,12 @@ exports[`SendTransaction View renders correctly for token 1`] = ` numberOfLines={1} style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Bold", + "fontSize": 16, "fontWeight": "700", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -1700,12 +1700,12 @@ exports[`SendTransaction View renders correctly for token 1`] = ` numberOfLines={1} style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -1972,12 +1972,12 @@ exports[`SendTransaction View renders correctly for token 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, "textAlign": "center", } } @@ -1986,8 +1986,8 @@ exports[`SendTransaction View renders correctly for token 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 18, "fontWeight": "normal", "letterSpacing": 0, @@ -2002,8 +2002,8 @@ exports[`SendTransaction View renders correctly for token 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", + "color": "#121314", + "fontFamily": "CentraNo1-Bold", "fontSize": 18, "fontWeight": "700", "letterSpacing": 0, @@ -2048,8 +2048,8 @@ exports[`SendTransaction View renders correctly for token 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", + "color": "#121314", + "fontFamily": "CentraNo1-Bold", "fontSize": 18, "fontWeight": "700", "letterSpacing": 0, @@ -2074,7 +2074,7 @@ exports[`SendTransaction View renders correctly for token 1`] = ` } > <SvgMock - color="#6a737d" + color="#686e7d" height={24} name="Arrow2Down" style={ @@ -2126,7 +2126,7 @@ exports[`SendTransaction View renders correctly for token 1`] = ` } > <SvgMock - color="#6a737d" + color="#686e7d" height={24} name="Arrow2Down" style={ @@ -2165,7 +2165,7 @@ exports[`SendTransaction View renders correctly for token 1`] = ` style={ [ { - "color": "#6a737d", + "color": "#686e7d", "fontSize": 20, }, undefined, @@ -2184,8 +2184,8 @@ exports[`SendTransaction View renders correctly for token 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 18, "fontWeight": "normal", "letterSpacing": 0, @@ -2230,12 +2230,12 @@ exports[`SendTransaction View renders correctly for token 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, "textAlign": "center", } } @@ -2267,7 +2267,7 @@ exports[`SendTransaction View renders correctly for token 1`] = ` { "alignItems": "center", "alignSelf": "stretch", - "backgroundColor": "#0376c9", + "backgroundColor": "#4459ff", "borderRadius": 24, "flexDirection": "row", "height": 48, @@ -2281,8 +2281,8 @@ exports[`SendTransaction View renders correctly for token 1`] = ` style={ { "color": "#ffffff", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 16, + "fontFamily": "CentraNo1-Medium", + "fontSize": 18, "fontWeight": "500", "letterSpacing": 0, "lineHeight": 24, diff --git a/app/components/UI/Ramp/Views/Settings/__snapshots__/ActivationKeyForm.test.tsx.snap b/app/components/UI/Ramp/Views/Settings/__snapshots__/ActivationKeyForm.test.tsx.snap index 8edd595884fb..e1f036ba7558 100644 --- a/app/components/UI/Ramp/Views/Settings/__snapshots__/ActivationKeyForm.test.tsx.snap +++ b/app/components/UI/Ramp/Views/Settings/__snapshots__/ActivationKeyForm.test.tsx.snap @@ -137,7 +137,7 @@ exports[`AddActivationKey renders correctly 1`] = ` testID="back-arrow-button" > <SvgMock - color="#141618" + color="#121314" height={24} name="ArrowLeft" style={ @@ -168,7 +168,7 @@ exports[`AddActivationKey renders correctly 1`] = ` onLayout={[Function]} style={ { - "color": "#0376c9", + "color": "#4459ff", "fontSize": 17, "fontWeight": "600", } @@ -178,8 +178,8 @@ exports[`AddActivationKey renders correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", + "color": "#121314", + "fontFamily": "CentraNo1-Bold", "fontSize": 18, "fontWeight": "700", "letterSpacing": 0, @@ -409,9 +409,9 @@ exports[`AddActivationKey renders correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 16, + "color": "#121314", + "fontFamily": "CentraNo1-Medium", + "fontSize": 18, "fontWeight": "500", "letterSpacing": 0, "lineHeight": 24, @@ -436,12 +436,12 @@ exports[`AddActivationKey renders correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } testID="label" @@ -453,7 +453,7 @@ exports[`AddActivationKey renders correctly 1`] = ` { "alignItems": "center", "backgroundColor": "#ffffff", - "borderColor": "#0376c9", + "borderColor": "#4459ff", "borderRadius": 8, "borderWidth": 1, "flexDirection": "row", @@ -487,9 +487,9 @@ exports[`AddActivationKey renders correctly 1`] = ` "backgroundColor": "#ffffff", "borderColor": "transparent", "borderWidth": 1, - "color": "#141618", - "fontFamily": "Euclid Circular B", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "height": 24, "letterSpacing": 0, @@ -519,12 +519,12 @@ exports[`AddActivationKey renders correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } testID="label" @@ -536,7 +536,7 @@ exports[`AddActivationKey renders correctly 1`] = ` { "alignItems": "center", "backgroundColor": "#ffffff", - "borderColor": "#0376c9", + "borderColor": "#4459ff", "borderRadius": 8, "borderWidth": 1, "flexDirection": "row", @@ -572,9 +572,9 @@ exports[`AddActivationKey renders correctly 1`] = ` "backgroundColor": "#ffffff", "borderColor": "transparent", "borderWidth": 1, - "color": "#141618", - "fontFamily": "Euclid Circular B", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "height": 24, "letterSpacing": 0, @@ -615,7 +615,7 @@ exports[`AddActivationKey renders correctly 1`] = ` "alignItems": "center", "alignSelf": "flex-start", "backgroundColor": "transparent", - "borderColor": "#0376c9", + "borderColor": "#4459ff", "borderRadius": 24, "borderWidth": 1, "flex": 1, @@ -630,12 +630,12 @@ exports[`AddActivationKey renders correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, + "color": "#4459ff", + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -654,7 +654,7 @@ exports[`AddActivationKey renders correctly 1`] = ` { "alignItems": "center", "alignSelf": "flex-start", - "backgroundColor": "#0376c9", + "backgroundColor": "#4459ff", "borderRadius": 24, "flex": 1, "flexDirection": "row", @@ -670,11 +670,11 @@ exports[`AddActivationKey renders correctly 1`] = ` style={ { "color": "#ffffff", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > diff --git a/app/components/UI/Ramp/Views/Settings/__snapshots__/Settings.test.tsx.snap b/app/components/UI/Ramp/Views/Settings/__snapshots__/Settings.test.tsx.snap index dce4f2432e1c..69654cffbff7 100644 --- a/app/components/UI/Ramp/Views/Settings/__snapshots__/Settings.test.tsx.snap +++ b/app/components/UI/Ramp/Views/Settings/__snapshots__/Settings.test.tsx.snap @@ -137,7 +137,7 @@ exports[`Settings Activation Keys renders correctly when is loading 1`] = ` testID="back-arrow-button" > <SvgMock - color="#141618" + color="#121314" height={24} name="ArrowLeft" style={ @@ -168,7 +168,7 @@ exports[`Settings Activation Keys renders correctly when is loading 1`] = ` onLayout={[Function]} style={ { - "color": "#0376c9", + "color": "#4459ff", "fontSize": 17, "fontWeight": "600", } @@ -178,8 +178,8 @@ exports[`Settings Activation Keys renders correctly when is loading 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", + "color": "#121314", + "fontFamily": "CentraNo1-Bold", "fontSize": 18, "fontWeight": "700", "letterSpacing": 0, @@ -437,9 +437,9 @@ exports[`Settings Activation Keys renders correctly when is loading 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 16, + "color": "#121314", + "fontFamily": "CentraNo1-Medium", + "fontSize": 18, "fontWeight": "500", "letterSpacing": 0, "lineHeight": 24, @@ -477,12 +477,12 @@ exports[`Settings Activation Keys renders correctly when is loading 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -510,12 +510,12 @@ exports[`Settings Activation Keys renders correctly when is loading 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -536,7 +536,7 @@ exports[`Settings Activation Keys renders correctly when is loading 1`] = ` "alignItems": "center", "alignSelf": "stretch", "backgroundColor": "transparent", - "borderColor": "#0376c9", + "borderColor": "#4459ff", "borderRadius": 24, "borderWidth": 1, "flexDirection": "row", @@ -550,12 +550,12 @@ exports[`Settings Activation Keys renders correctly when is loading 1`] = ` accessibilityRole="text" style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, + "color": "#4459ff", + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -579,12 +579,12 @@ exports[`Settings Activation Keys renders correctly when is loading 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -592,9 +592,9 @@ exports[`Settings Activation Keys renders correctly when is loading 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 16, + "color": "#121314", + "fontFamily": "CentraNo1-Medium", + "fontSize": 18, "fontWeight": "500", "letterSpacing": 0, "lineHeight": 24, @@ -607,12 +607,12 @@ exports[`Settings Activation Keys renders correctly when is loading 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -638,12 +638,12 @@ exports[`Settings Activation Keys renders correctly when is loading 1`] = ` accessibilityRole="text" style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -681,7 +681,7 @@ exports[`Settings Activation Keys renders correctly when is loading 1`] = ` onChange={[Function]} onResponderTerminationRequest={[Function]} onStartShouldSetResponder={[Function]} - onTintColor="#0376c9" + onTintColor="#4459ff" style={ [ { @@ -689,13 +689,13 @@ exports[`Settings Activation Keys renders correctly when is loading 1`] = ` "width": 51, }, { - "backgroundColor": "#BBC0C566", + "backgroundColor": "#b7bbc866", "borderRadius": 16, }, ] } thumbTintColor="#ffffff" - tintColor="#BBC0C566" + tintColor="#b7bbc866" value={true} /> </View> @@ -721,12 +721,12 @@ exports[`Settings Activation Keys renders correctly when is loading 1`] = ` selectable={true} style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -737,12 +737,12 @@ exports[`Settings Activation Keys renders correctly when is loading 1`] = ` selectable={true} style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -795,7 +795,7 @@ exports[`Settings Activation Keys renders correctly when is loading 1`] = ` } > <SvgMock - color="#0376c9" + color="#4459ff" height={24} name="Edit" style={ @@ -854,7 +854,7 @@ exports[`Settings Activation Keys renders correctly when is loading 1`] = ` } > <SvgMock - color="#d73847" + color="#ca3542" height={24} name="Trash" style={ @@ -900,7 +900,7 @@ exports[`Settings Activation Keys renders correctly when is loading 1`] = ` onChange={[Function]} onResponderTerminationRequest={[Function]} onStartShouldSetResponder={[Function]} - onTintColor="#0376c9" + onTintColor="#4459ff" style={ [ { @@ -908,13 +908,13 @@ exports[`Settings Activation Keys renders correctly when is loading 1`] = ` "width": 51, }, { - "backgroundColor": "#BBC0C566", + "backgroundColor": "#b7bbc866", "borderRadius": 16, }, ] } thumbTintColor="#ffffff" - tintColor="#BBC0C566" + tintColor="#b7bbc866" value={false} /> </View> @@ -940,12 +940,12 @@ exports[`Settings Activation Keys renders correctly when is loading 1`] = ` selectable={true} style={ { - "color": "#9fa6ae", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#9ca1af", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -956,12 +956,12 @@ exports[`Settings Activation Keys renders correctly when is loading 1`] = ` selectable={true} style={ { - "color": "#9fa6ae", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#9ca1af", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -1014,7 +1014,7 @@ exports[`Settings Activation Keys renders correctly when is loading 1`] = ` } > <SvgMock - color="#0376c9" + color="#4459ff" height={24} name="Edit" style={ @@ -1073,7 +1073,7 @@ exports[`Settings Activation Keys renders correctly when is loading 1`] = ` } > <SvgMock - color="#d73847" + color="#ca3542" height={24} name="Trash" style={ @@ -1113,7 +1113,7 @@ exports[`Settings Activation Keys renders correctly when is loading 1`] = ` "alignItems": "center", "alignSelf": "stretch", "backgroundColor": "transparent", - "borderColor": "#0376c9", + "borderColor": "#4459ff", "borderRadius": 24, "borderWidth": 1, "flexDirection": "row", @@ -1128,12 +1128,12 @@ exports[`Settings Activation Keys renders correctly when is loading 1`] = ` accessibilityRole="text" style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, + "color": "#4459ff", + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -1297,7 +1297,7 @@ exports[`Settings Activation Keys renders correctly when there are no keys 1`] = testID="back-arrow-button" > <SvgMock - color="#141618" + color="#121314" height={24} name="ArrowLeft" style={ @@ -1328,7 +1328,7 @@ exports[`Settings Activation Keys renders correctly when there are no keys 1`] = onLayout={[Function]} style={ { - "color": "#0376c9", + "color": "#4459ff", "fontSize": 17, "fontWeight": "600", } @@ -1338,8 +1338,8 @@ exports[`Settings Activation Keys renders correctly when there are no keys 1`] = accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", + "color": "#121314", + "fontFamily": "CentraNo1-Bold", "fontSize": 18, "fontWeight": "700", "letterSpacing": 0, @@ -1597,9 +1597,9 @@ exports[`Settings Activation Keys renders correctly when there are no keys 1`] = accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 16, + "color": "#121314", + "fontFamily": "CentraNo1-Medium", + "fontSize": 18, "fontWeight": "500", "letterSpacing": 0, "lineHeight": 24, @@ -1637,12 +1637,12 @@ exports[`Settings Activation Keys renders correctly when there are no keys 1`] = accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -1670,12 +1670,12 @@ exports[`Settings Activation Keys renders correctly when there are no keys 1`] = accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -1696,7 +1696,7 @@ exports[`Settings Activation Keys renders correctly when there are no keys 1`] = "alignItems": "center", "alignSelf": "stretch", "backgroundColor": "transparent", - "borderColor": "#0376c9", + "borderColor": "#4459ff", "borderRadius": 24, "borderWidth": 1, "flexDirection": "row", @@ -1710,12 +1710,12 @@ exports[`Settings Activation Keys renders correctly when there are no keys 1`] = accessibilityRole="text" style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, + "color": "#4459ff", + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -1739,12 +1739,12 @@ exports[`Settings Activation Keys renders correctly when there are no keys 1`] = accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -1752,9 +1752,9 @@ exports[`Settings Activation Keys renders correctly when there are no keys 1`] = accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 16, + "color": "#121314", + "fontFamily": "CentraNo1-Medium", + "fontSize": 18, "fontWeight": "500", "letterSpacing": 0, "lineHeight": 24, @@ -1767,12 +1767,12 @@ exports[`Settings Activation Keys renders correctly when there are no keys 1`] = accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -1795,12 +1795,12 @@ exports[`Settings Activation Keys renders correctly when there are no keys 1`] = accessibilityRole="text" style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -1832,7 +1832,7 @@ exports[`Settings Activation Keys renders correctly when there are no keys 1`] = "alignItems": "center", "alignSelf": "stretch", "backgroundColor": "transparent", - "borderColor": "#0376c9", + "borderColor": "#4459ff", "borderRadius": 24, "borderWidth": 1, "flexDirection": "row", @@ -1846,12 +1846,12 @@ exports[`Settings Activation Keys renders correctly when there are no keys 1`] = accessibilityRole="text" style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, + "color": "#4459ff", + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -2015,7 +2015,7 @@ exports[`Settings Region renders correctly when region is not set 1`] = ` testID="back-arrow-button" > <SvgMock - color="#141618" + color="#121314" height={24} name="ArrowLeft" style={ @@ -2046,7 +2046,7 @@ exports[`Settings Region renders correctly when region is not set 1`] = ` onLayout={[Function]} style={ { - "color": "#0376c9", + "color": "#4459ff", "fontSize": 17, "fontWeight": "600", } @@ -2056,8 +2056,8 @@ exports[`Settings Region renders correctly when region is not set 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", + "color": "#121314", + "fontFamily": "CentraNo1-Bold", "fontSize": 18, "fontWeight": "700", "letterSpacing": 0, @@ -2315,9 +2315,9 @@ exports[`Settings Region renders correctly when region is not set 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 16, + "color": "#121314", + "fontFamily": "CentraNo1-Medium", + "fontSize": 18, "fontWeight": "500", "letterSpacing": 0, "lineHeight": 24, @@ -2355,12 +2355,12 @@ exports[`Settings Region renders correctly when region is not set 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -2388,12 +2388,12 @@ exports[`Settings Region renders correctly when region is not set 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -2558,7 +2558,7 @@ exports[`Settings Region renders correctly when region is set 1`] = ` testID="back-arrow-button" > <SvgMock - color="#141618" + color="#121314" height={24} name="ArrowLeft" style={ @@ -2589,7 +2589,7 @@ exports[`Settings Region renders correctly when region is set 1`] = ` onLayout={[Function]} style={ { - "color": "#0376c9", + "color": "#4459ff", "fontSize": 17, "fontWeight": "600", } @@ -2599,8 +2599,8 @@ exports[`Settings Region renders correctly when region is set 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", + "color": "#121314", + "fontFamily": "CentraNo1-Bold", "fontSize": 18, "fontWeight": "700", "letterSpacing": 0, @@ -2858,9 +2858,9 @@ exports[`Settings Region renders correctly when region is set 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 16, + "color": "#121314", + "fontFamily": "CentraNo1-Medium", + "fontSize": 18, "fontWeight": "500", "letterSpacing": 0, "lineHeight": 24, @@ -2898,12 +2898,12 @@ exports[`Settings Region renders correctly when region is set 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -2931,12 +2931,12 @@ exports[`Settings Region renders correctly when region is set 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -2957,7 +2957,7 @@ exports[`Settings Region renders correctly when region is set 1`] = ` "alignItems": "center", "alignSelf": "stretch", "backgroundColor": "transparent", - "borderColor": "#0376c9", + "borderColor": "#4459ff", "borderRadius": 24, "borderWidth": 1, "flexDirection": "row", @@ -2971,12 +2971,12 @@ exports[`Settings Region renders correctly when region is set 1`] = ` accessibilityRole="text" style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, + "color": "#4459ff", + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -3139,7 +3139,7 @@ exports[`Settings renders correctly 1`] = ` testID="back-arrow-button" > <SvgMock - color="#141618" + color="#121314" height={24} name="ArrowLeft" style={ @@ -3170,7 +3170,7 @@ exports[`Settings renders correctly 1`] = ` onLayout={[Function]} style={ { - "color": "#0376c9", + "color": "#4459ff", "fontSize": 17, "fontWeight": "600", } @@ -3180,8 +3180,8 @@ exports[`Settings renders correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", + "color": "#121314", + "fontFamily": "CentraNo1-Bold", "fontSize": 18, "fontWeight": "700", "letterSpacing": 0, @@ -3439,9 +3439,9 @@ exports[`Settings renders correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 16, + "color": "#121314", + "fontFamily": "CentraNo1-Medium", + "fontSize": 18, "fontWeight": "500", "letterSpacing": 0, "lineHeight": 24, @@ -3479,12 +3479,12 @@ exports[`Settings renders correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -3512,12 +3512,12 @@ exports[`Settings renders correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -3538,7 +3538,7 @@ exports[`Settings renders correctly 1`] = ` "alignItems": "center", "alignSelf": "stretch", "backgroundColor": "transparent", - "borderColor": "#0376c9", + "borderColor": "#4459ff", "borderRadius": 24, "borderWidth": 1, "flexDirection": "row", @@ -3552,12 +3552,12 @@ exports[`Settings renders correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, + "color": "#4459ff", + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -3720,7 +3720,7 @@ exports[`Settings renders correctly for internal builds 1`] = ` testID="back-arrow-button" > <SvgMock - color="#141618" + color="#121314" height={24} name="ArrowLeft" style={ @@ -3751,7 +3751,7 @@ exports[`Settings renders correctly for internal builds 1`] = ` onLayout={[Function]} style={ { - "color": "#0376c9", + "color": "#4459ff", "fontSize": 17, "fontWeight": "600", } @@ -3761,8 +3761,8 @@ exports[`Settings renders correctly for internal builds 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", + "color": "#121314", + "fontFamily": "CentraNo1-Bold", "fontSize": 18, "fontWeight": "700", "letterSpacing": 0, @@ -4020,9 +4020,9 @@ exports[`Settings renders correctly for internal builds 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 16, + "color": "#121314", + "fontFamily": "CentraNo1-Medium", + "fontSize": 18, "fontWeight": "500", "letterSpacing": 0, "lineHeight": 24, @@ -4060,12 +4060,12 @@ exports[`Settings renders correctly for internal builds 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -4093,12 +4093,12 @@ exports[`Settings renders correctly for internal builds 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -4119,7 +4119,7 @@ exports[`Settings renders correctly for internal builds 1`] = ` "alignItems": "center", "alignSelf": "stretch", "backgroundColor": "transparent", - "borderColor": "#0376c9", + "borderColor": "#4459ff", "borderRadius": 24, "borderWidth": 1, "flexDirection": "row", @@ -4133,12 +4133,12 @@ exports[`Settings renders correctly for internal builds 1`] = ` accessibilityRole="text" style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, + "color": "#4459ff", + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -4162,12 +4162,12 @@ exports[`Settings renders correctly for internal builds 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -4175,9 +4175,9 @@ exports[`Settings renders correctly for internal builds 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 16, + "color": "#121314", + "fontFamily": "CentraNo1-Medium", + "fontSize": 18, "fontWeight": "500", "letterSpacing": 0, "lineHeight": 24, @@ -4190,12 +4190,12 @@ exports[`Settings renders correctly for internal builds 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -4218,12 +4218,12 @@ exports[`Settings renders correctly for internal builds 1`] = ` accessibilityRole="text" style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -4261,7 +4261,7 @@ exports[`Settings renders correctly for internal builds 1`] = ` onChange={[Function]} onResponderTerminationRequest={[Function]} onStartShouldSetResponder={[Function]} - onTintColor="#0376c9" + onTintColor="#4459ff" style={ [ { @@ -4269,13 +4269,13 @@ exports[`Settings renders correctly for internal builds 1`] = ` "width": 51, }, { - "backgroundColor": "#BBC0C566", + "backgroundColor": "#b7bbc866", "borderRadius": 16, }, ] } thumbTintColor="#ffffff" - tintColor="#BBC0C566" + tintColor="#b7bbc866" value={true} /> </View> @@ -4301,12 +4301,12 @@ exports[`Settings renders correctly for internal builds 1`] = ` selectable={true} style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -4317,12 +4317,12 @@ exports[`Settings renders correctly for internal builds 1`] = ` selectable={true} style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -4375,7 +4375,7 @@ exports[`Settings renders correctly for internal builds 1`] = ` } > <SvgMock - color="#0376c9" + color="#4459ff" height={24} name="Edit" style={ @@ -4434,7 +4434,7 @@ exports[`Settings renders correctly for internal builds 1`] = ` } > <SvgMock - color="#d73847" + color="#ca3542" height={24} name="Trash" style={ @@ -4480,7 +4480,7 @@ exports[`Settings renders correctly for internal builds 1`] = ` onChange={[Function]} onResponderTerminationRequest={[Function]} onStartShouldSetResponder={[Function]} - onTintColor="#0376c9" + onTintColor="#4459ff" style={ [ { @@ -4488,13 +4488,13 @@ exports[`Settings renders correctly for internal builds 1`] = ` "width": 51, }, { - "backgroundColor": "#BBC0C566", + "backgroundColor": "#b7bbc866", "borderRadius": 16, }, ] } thumbTintColor="#ffffff" - tintColor="#BBC0C566" + tintColor="#b7bbc866" value={false} /> </View> @@ -4520,12 +4520,12 @@ exports[`Settings renders correctly for internal builds 1`] = ` selectable={true} style={ { - "color": "#9fa6ae", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#9ca1af", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -4536,12 +4536,12 @@ exports[`Settings renders correctly for internal builds 1`] = ` selectable={true} style={ { - "color": "#9fa6ae", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#9ca1af", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -4594,7 +4594,7 @@ exports[`Settings renders correctly for internal builds 1`] = ` } > <SvgMock - color="#0376c9" + color="#4459ff" height={24} name="Edit" style={ @@ -4653,7 +4653,7 @@ exports[`Settings renders correctly for internal builds 1`] = ` } > <SvgMock - color="#d73847" + color="#ca3542" height={24} name="Trash" style={ @@ -4693,7 +4693,7 @@ exports[`Settings renders correctly for internal builds 1`] = ` "alignItems": "center", "alignSelf": "stretch", "backgroundColor": "transparent", - "borderColor": "#0376c9", + "borderColor": "#4459ff", "borderRadius": 24, "borderWidth": 1, "flexDirection": "row", @@ -4707,12 +4707,12 @@ exports[`Settings renders correctly for internal builds 1`] = ` accessibilityRole="text" style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 14, + "color": "#4459ff", + "fontFamily": "CentraNo1-Medium", + "fontSize": 16, "fontWeight": "500", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > diff --git a/app/components/UI/Ramp/components/CustomAction/CustomAction.styles.ts b/app/components/UI/Ramp/components/CustomAction/CustomAction.styles.ts new file mode 100644 index 000000000000..19269447a600 --- /dev/null +++ b/app/components/UI/Ramp/components/CustomAction/CustomAction.styles.ts @@ -0,0 +1,31 @@ +import { StyleSheet } from 'react-native'; +import { Theme } from '../../../../../util/theme/models'; + +const styleSheet = (params: { theme: Theme }) => { + const { theme } = params; + const { colors } = theme; + return StyleSheet.create({ + tags: { + display: 'flex', + flexDirection: 'row', + gap: 8, + marginBottom: 8, + }, + buyButton: { + marginTop: 10, + }, + title: { + flexDirection: 'row', + alignItems: 'center', + }, + infoIcon: { + marginLeft: 8, + color: colors.icon.alternative, + }, + data: { + marginTop: 4, + overflow: 'hidden', + }, + }); +}; +export default styleSheet; diff --git a/app/components/UI/Ramp/components/CustomAction/CustomAction.test.tsx b/app/components/UI/Ramp/components/CustomAction/CustomAction.test.tsx new file mode 100644 index 000000000000..7b2c6b96686c --- /dev/null +++ b/app/components/UI/Ramp/components/CustomAction/CustomAction.test.tsx @@ -0,0 +1,182 @@ +import React from 'react'; +import CustomAction from './CustomAction'; +import { PaymentCustomAction } from '@consensys/on-ramp-sdk/dist/API'; +import renderWithProvider from '../../../../../util/test/renderWithProvider'; +import { selectIpfsGateway } from '../../../../../selectors/preferencesController'; +import { backgroundState } from '../../../../../util/test/initial-root-state'; +import { fireEvent } from '@testing-library/react-native'; + +// Mock the selectIpfsGateway selector +jest.mock('../../../../../selectors/preferencesController', () => ({ + ...jest.requireActual('../../../../../selectors/preferencesController'), + selectIpfsGateway: jest.fn(), +})); + +jest.mock('react-native-reanimated', () => { + const Reanimated = jest.requireActual('react-native-reanimated/mock'); + // eslint-disable-next-line no-empty-function + Reanimated.default.call = () => {}; + // simulate expanded value > 0 + Reanimated.useSharedValue = jest.fn(() => ({ + value: 1, + })); + Reanimated.useAnimatedStyle = jest.fn((callback) => callback()); + return Reanimated; +}); + +// eslint-disable-next-line @typescript-eslint/ban-ts-comment +// @ts-ignore +(selectIpfsGateway as unknown as jest.Mock).mockReturnValue( + 'https://mock-ipfs-gateway.com', +); + +const mockCustomAction: PaymentCustomAction = { + buy: { + providerId: '/providers/paypal-staging', + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore + provider: { + description: 'Per Paypal: [Paypal Description]', + environmentType: 'STAGING', + hqAddress: '123 PayPal Staging Address', + id: '/providers/paypal-staging', + logos: { + dark: 'https://on-ramp.dev-api.cx.metamask.io/assets/providers/paypal_dark.png', + height: 24, + light: + 'https://on-ramp.dev-api.cx.metamask.io/assets/providers/paypal_light.png', + width: 65, + }, + name: 'Paypal (Staging)', + }, + }, + supportedPaymentMethodIds: ['/payments/paypal', '/payments/paypal-staging'], + paymentMethodId: '/payments/paypal', +}; + +const defaultState = { + engine: { + backgroundState, + }, +}; + +describe('CustomAction Component', () => { + it('renders correctly with a custom action', () => { + const { getByText } = renderWithProvider( + <CustomAction customAction={mockCustomAction} showInfo={jest.fn()} />, + { state: defaultState }, + ); + + expect(getByText('Continue with Paypal (Staging)')).toBeTruthy(); + }); + + it('calls onPress when not highlighted and pressed', () => { + const onPressMock = jest.fn(); + const { getByLabelText } = renderWithProvider( + <CustomAction + customAction={mockCustomAction} + showInfo={jest.fn()} + onPress={onPressMock} + />, + { state: defaultState }, + ); + + fireEvent.press(getByLabelText('Paypal (Staging)')); + expect(onPressMock).toHaveBeenCalled(); + }); + + it('shows loading indicator when isLoading is true', () => { + const { getByTestId } = renderWithProvider( + <CustomAction + customAction={mockCustomAction} + showInfo={jest.fn()} + isLoading + />, + { state: defaultState }, + ); + + expect(getByTestId('buy-button-loading')).toBeTruthy(); + }); + + it('displays previously used provider tag', () => { + const { getByText } = renderWithProvider( + <CustomAction + customAction={mockCustomAction} + previouslyUsedProvider + showInfo={jest.fn()} + />, + { state: defaultState }, + ); + + expect(getByText('Previously used')).toBeTruthy(); + }); + + it('calls onPressCTA when CTA button is pressed', () => { + const onPressCTAMock = jest.fn(); + const { getByText } = renderWithProvider( + <CustomAction + customAction={mockCustomAction} + onPressCTA={onPressCTAMock} + showInfo={jest.fn()} + />, + { state: defaultState }, + ); + + fireEvent.press(getByText('Continue with Paypal (Staging)')); + expect(onPressCTAMock).toHaveBeenCalled(); + }); + + it('sets expandedHeight on layout', () => { + const { getByTestId } = renderWithProvider( + <CustomAction customAction={mockCustomAction} showInfo={jest.fn()} />, + { state: defaultState }, + ); + + const animatedView = getByTestId('animated-view-height'); + const layoutEvent = { + nativeEvent: { + layout: { height: 100, width: 0, x: 0, y: 0 }, + }, + }; + + fireEvent(animatedView, 'layout', layoutEvent); + expect(animatedView.props.style[1].height).toBeDefined(); + }); + + it('applies animated styles when highlighted', () => { + const { getByTestId } = renderWithProvider( + <CustomAction + customAction={mockCustomAction} + showInfo={jest.fn()} + highlighted + />, + { state: defaultState }, + ); + const animatedView = getByTestId('animated-view-height'); + expect(animatedView.props.style[1].height).toBeGreaterThan(0); + expect(animatedView.props.style[1].opacity).toBe(1); + }); + + it('resets animated styles when not highlighted', () => { + const { getByTestId } = renderWithProvider( + <CustomAction + customAction={mockCustomAction} + showInfo={jest.fn()} + highlighted={false} + />, + { state: defaultState }, + ); + const animatedView = getByTestId('animated-view-height'); + expect(animatedView.props.style[1].height).toBe(0); + expect(animatedView.props.style[1].opacity).toBe(0); + }); + + it('applies animated opacity based on expandedHeight', () => { + const { getByTestId } = renderWithProvider( + <CustomAction customAction={mockCustomAction} showInfo={jest.fn()} />, + { state: defaultState }, + ); + const animatedView = getByTestId('animated-view-opacity'); + expect(animatedView.props.style.opacity).toBe(1); + }); +}); diff --git a/app/components/UI/Ramp/components/CustomAction/CustomAction.tsx b/app/components/UI/Ramp/components/CustomAction/CustomAction.tsx new file mode 100644 index 000000000000..b6651cee91df --- /dev/null +++ b/app/components/UI/Ramp/components/CustomAction/CustomAction.tsx @@ -0,0 +1,169 @@ +import React from 'react'; +import { + View, + TouchableOpacity, + LayoutChangeEvent, + ActivityIndicator, +} from 'react-native'; +import Feather from 'react-native-vector-icons/Feather'; +import Animated, { + Easing, + useAnimatedStyle, + useSharedValue, + withDelay, + withTiming, + WithTimingConfig, +} from 'react-native-reanimated'; +import { PaymentCustomAction } from '@consensys/on-ramp-sdk/dist/API'; +import Box from '../Box'; +import Title from '../../../../Base/Title'; +import StyledButton from '../../../StyledButton'; +import { strings } from '../../../../../../locales/i18n'; +import RemoteImage from '../../../../Base/RemoteImage'; +import TagColored from '../../../../../component-library/components-temp/TagColored'; +import styleSheet from './CustomAction.styles'; +import { useStyles } from '../../../../../component-library/hooks'; +import ListItem from '../../../../../component-library/components/List/ListItem'; + +interface Props { + customAction: PaymentCustomAction; + previouslyUsedProvider?: boolean; + onPress?: () => void; + onPressCTA?: () => void; + highlighted?: boolean; + isLoading?: boolean; + showInfo: () => void; +} + +const animationConfig: WithTimingConfig = { + duration: 150, + easing: Easing.elastic(0.3), +}; + +const CustomAction: React.FC<Props> = ({ + customAction, + previouslyUsedProvider, + onPress, + onPressCTA, + showInfo, + isLoading, + highlighted, +}: Props) => { + const { + styles, + theme: { colors, themeAppearance }, + } = useStyles(styleSheet, {}); + const { + buy: { provider }, + } = customAction; + const shouldShowTags = previouslyUsedProvider; + + const expandedHeight = useSharedValue(0); + const handleOnLayout = (event: LayoutChangeEvent) => { + const { nativeEvent } = event; + if (expandedHeight.value === 0) { + expandedHeight.value = nativeEvent.layout.height; + } + }; + + const animatedStyle = useAnimatedStyle(() => { + if (expandedHeight.value > 0) { + return { + height: highlighted + ? withTiming(expandedHeight.value, animationConfig) + : withTiming(0, animationConfig), + opacity: highlighted ? withTiming(1, animationConfig) : withTiming(0), + }; + } + return {}; + }); + + const animatedOpacity = useAnimatedStyle(() => ({ + opacity: expandedHeight.value ? withDelay(10, withTiming(1)) : 0, + })); + + return ( + <Animated.View style={animatedOpacity} testID="animated-view-opacity"> + <Box + onPress={highlighted ? undefined : onPress} + highlighted={highlighted} + activeOpacity={0.8} + accessible={!highlighted} + accessibilityLabel={provider?.name} + compact + > + <ListItem + topAccessoryGap={8} + topAccessory={ + <> + {shouldShowTags && ( + <View style={styles.tags}> + {previouslyUsedProvider ? ( + <TagColored> + {strings('fiat_on_ramp_aggregator.previously_used')} + </TagColored> + ) : null} + </View> + )} + <TouchableOpacity + onPress={highlighted ? showInfo : undefined} + disabled={!highlighted} + accessibilityLabel={`${provider?.name} logo`} + accessibilityHint="Shows provider details" + > + <View style={styles.title}> + {provider?.logos?.[themeAppearance] ? ( + <RemoteImage + style={{ + width: provider.logos.width, + height: provider.logos.height, + }} + source={{ + uri: provider?.logos?.[themeAppearance], + }} + /> + ) : ( + <Title>{provider?.name} + )} + + {provider && ( + + )} + + + + } + bottomAccessory={ + + + + {isLoading ? ( + + ) : ( + strings('fiat_on_ramp_aggregator.continue_with', { + provider: provider.name, + }) + )} + + + + } + /> + + + ); +}; + +export default CustomAction; diff --git a/app/components/UI/Ramp/components/CustomAction/index.ts b/app/components/UI/Ramp/components/CustomAction/index.ts new file mode 100644 index 000000000000..a799e696ee60 --- /dev/null +++ b/app/components/UI/Ramp/components/CustomAction/index.ts @@ -0,0 +1 @@ +export { default } from './CustomAction'; diff --git a/app/components/UI/Ramp/components/CustomActionButton.tsx b/app/components/UI/Ramp/components/CustomActionButton.tsx deleted file mode 100644 index 01a10d739bdc..000000000000 --- a/app/components/UI/Ramp/components/CustomActionButton.tsx +++ /dev/null @@ -1,84 +0,0 @@ -import React from 'react'; -import { ActivityIndicator, StyleSheet } from 'react-native'; -import { - PaymentCustomActionButton, - TextOrImage, -} from '@consensys/on-ramp-sdk/dist/API'; -import { useTheme } from '../../../../util/theme'; -import StyledButton from '../../StyledButton'; -import RemoteImage from '../../../Base/RemoteImage'; -import Text from '../../../Base/Text'; - -// TODO: Replace "any" with type -// eslint-disable-next-line @typescript-eslint/no-explicit-any -const RemoteImageComponent = RemoteImage as any; -interface Props { - customActionButton: PaymentCustomActionButton; - isLoading?: boolean; -} - -const styles = StyleSheet.create({ - container: { - flexDirection: 'row', - justifyContent: 'center', - alignItems: 'center', - }, - buttonImage: { - marginHorizontal: 2, - }, -}); - -const renderButtonValue = (value: TextOrImage, textColor: string) => { - if (value.text) { - return ( - - {value.text} - - ); - } - - if (value.image) { - const { url, width, height, label } = value.image; - return ( - - ); - } -}; - -const CustomActionButton: React.FC< - Props & React.ComponentProps -> = ({ customActionButton, isLoading, ...props }: Props) => { - const { themeAppearance } = useTheme(); - const { backgroundColor, textColor, value } = - customActionButton[themeAppearance]; - return ( - - {isLoading ? ( - - ) : ( - <> - {value.map((textOrImage) => - renderButtonValue(textOrImage, textColor), - )} - - )} - - ); -}; - -export default CustomActionButton; diff --git a/app/components/UI/Ramp/components/OrderListItem/__snapshots__/OrderListItem.test.tsx.snap b/app/components/UI/Ramp/components/OrderListItem/__snapshots__/OrderListItem.test.tsx.snap index 77b403395ec4..e8bcf7f40ba1 100644 --- a/app/components/UI/Ramp/components/OrderListItem/__snapshots__/OrderListItem.test.tsx.snap +++ b/app/components/UI/Ramp/components/OrderListItem/__snapshots__/OrderListItem.test.tsx.snap @@ -21,12 +21,12 @@ exports[`OrderListItem should render correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -81,12 +81,12 @@ exports[`OrderListItem should render correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -99,12 +99,12 @@ exports[`OrderListItem should render correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#1c8234", - "fontFamily": "EuclidCircularB-Bold", - "fontSize": 12, + "color": "#1c7e33", + "fontFamily": "CentraNo1-Bold", + "fontSize": 14, "fontWeight": "700", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -133,12 +133,12 @@ exports[`OrderListItem should render correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -150,12 +150,12 @@ exports[`OrderListItem should render correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -187,12 +187,12 @@ exports[`OrderListItem should render correctly 2`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -247,12 +247,12 @@ exports[`OrderListItem should render correctly 2`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -265,12 +265,12 @@ exports[`OrderListItem should render correctly 2`] = ` accessibilityRole="text" style={ { - "color": "#d73847", - "fontFamily": "EuclidCircularB-Bold", - "fontSize": 12, + "color": "#ca3542", + "fontFamily": "CentraNo1-Bold", + "fontSize": 14, "fontWeight": "700", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -299,12 +299,12 @@ exports[`OrderListItem should render correctly 2`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -316,12 +316,12 @@ exports[`OrderListItem should render correctly 2`] = ` accessibilityRole="text" style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -353,12 +353,12 @@ exports[`OrderListItem should render correctly 3`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -413,12 +413,12 @@ exports[`OrderListItem should render correctly 3`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -431,12 +431,12 @@ exports[`OrderListItem should render correctly 3`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Bold", + "fontSize": 14, "fontWeight": "700", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -465,12 +465,12 @@ exports[`OrderListItem should render correctly 3`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -482,12 +482,12 @@ exports[`OrderListItem should render correctly 3`] = ` accessibilityRole="text" style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -519,12 +519,12 @@ exports[`OrderListItem should render correctly 4`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -579,12 +579,12 @@ exports[`OrderListItem should render correctly 4`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -597,12 +597,12 @@ exports[`OrderListItem should render correctly 4`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Bold", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Bold", + "fontSize": 14, "fontWeight": "700", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -631,12 +631,12 @@ exports[`OrderListItem should render correctly 4`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -648,12 +648,12 @@ exports[`OrderListItem should render correctly 4`] = ` accessibilityRole="text" style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -685,12 +685,12 @@ exports[`OrderListItem should render correctly 5`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -745,12 +745,12 @@ exports[`OrderListItem should render correctly 5`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -763,12 +763,12 @@ exports[`OrderListItem should render correctly 5`] = ` accessibilityRole="text" style={ { - "color": "#d73847", - "fontFamily": "EuclidCircularB-Bold", - "fontSize": 12, + "color": "#ca3542", + "fontFamily": "CentraNo1-Bold", + "fontSize": 14, "fontWeight": "700", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -797,12 +797,12 @@ exports[`OrderListItem should render correctly 5`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -814,12 +814,12 @@ exports[`OrderListItem should render correctly 5`] = ` accessibilityRole="text" style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -851,12 +851,12 @@ exports[`OrderListItem should render correctly 6`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -911,12 +911,12 @@ exports[`OrderListItem should render correctly 6`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -929,12 +929,12 @@ exports[`OrderListItem should render correctly 6`] = ` accessibilityRole="text" style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Bold", - "fontSize": 12, + "color": "#4459ff", + "fontFamily": "CentraNo1-Bold", + "fontSize": 14, "fontWeight": "700", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -963,12 +963,12 @@ exports[`OrderListItem should render correctly 6`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -980,12 +980,12 @@ exports[`OrderListItem should render correctly 6`] = ` accessibilityRole="text" style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -1017,12 +1017,12 @@ exports[`OrderListItem should render correctly 7`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -1077,12 +1077,12 @@ exports[`OrderListItem should render correctly 7`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -1095,12 +1095,12 @@ exports[`OrderListItem should render correctly 7`] = ` accessibilityRole="text" style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Bold", - "fontSize": 12, + "color": "#4459ff", + "fontFamily": "CentraNo1-Bold", + "fontSize": 14, "fontWeight": "700", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -1129,12 +1129,12 @@ exports[`OrderListItem should render correctly 7`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -1146,12 +1146,12 @@ exports[`OrderListItem should render correctly 7`] = ` accessibilityRole="text" style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -1183,12 +1183,12 @@ exports[`OrderListItem should render correctly 8`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -1243,12 +1243,12 @@ exports[`OrderListItem should render correctly 8`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -1261,12 +1261,12 @@ exports[`OrderListItem should render correctly 8`] = ` accessibilityRole="text" style={ { - "color": "#0376c9", - "fontFamily": "EuclidCircularB-Bold", - "fontSize": 12, + "color": "#4459ff", + "fontFamily": "CentraNo1-Bold", + "fontSize": 14, "fontWeight": "700", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > @@ -1295,12 +1295,12 @@ exports[`OrderListItem should render correctly 8`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, } } > @@ -1312,12 +1312,12 @@ exports[`OrderListItem should render correctly 8`] = ` accessibilityRole="text" style={ { - "color": "#6a737d", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 12, + "color": "#686e7d", + "fontFamily": "CentraNo1-Book", + "fontSize": 14, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 20, + "lineHeight": 22, } } > diff --git a/app/components/UI/Ramp/components/Quote/Quote.test.tsx b/app/components/UI/Ramp/components/Quote/Quote.test.tsx index 018e177f1c1b..f7093724ef33 100644 --- a/app/components/UI/Ramp/components/Quote/Quote.test.tsx +++ b/app/components/UI/Ramp/components/Quote/Quote.test.tsx @@ -13,6 +13,7 @@ import { QuoteTags } from '@consensys/on-ramp-sdk/dist/API'; import renderWithProvider from '../../../../../util/test/renderWithProvider'; import { selectIpfsGateway } from '../../../../../selectors/preferencesController'; import { backgroundState } from '../../../../../util/test/initial-root-state'; + // Mock the selectIpfsGateway selector jest.mock('../../../../../selectors/preferencesController', () => ({ ...jest.requireActual('../../../../../selectors/preferencesController'), @@ -25,6 +26,18 @@ jest.mock('../../../../../selectors/preferencesController', () => ({ 'https://mock-ipfs-gateway.com', ); +jest.mock('react-native-reanimated', () => { + const Reanimated = jest.requireActual('react-native-reanimated/mock'); + // eslint-disable-next-line no-empty-function + Reanimated.default.call = () => {}; + // simulate expanded value > 0 + Reanimated.useSharedValue = jest.fn(() => ({ + value: 1, + })); + Reanimated.useAnimatedStyle = jest.fn((callback) => callback()); + return Reanimated; +}); + const mockQuote: QuoteResponse = { networkFee: 1, providerFee: 1, @@ -204,4 +217,60 @@ describe('Quote Component', () => { fireEvent.press(getByLabelText('Mock Provider logo')); expect(showInfoMock).toHaveBeenCalled(); }); + + it('sets expandedHeight on layout', () => { + const { getByTestId } = renderWithProvider( + , + { state: defaultState }, + ); + + const animatedView = getByTestId('animated-view-height'); + const layoutEvent = { + nativeEvent: { + layout: { height: 100, width: 0, x: 0, y: 0 }, + }, + }; + + fireEvent(animatedView, 'layout', layoutEvent); + expect(animatedView.props.style[1].height).toBeDefined(); + }); + + it('applies animated styles when highlighted', () => { + const { getByTestId } = renderWithProvider( + , + { state: defaultState }, + ); + const animatedView = getByTestId('animated-view-height'); + expect(animatedView.props.style[1].height).toBeGreaterThan(0); + expect(animatedView.props.style[1].opacity).toBe(1); + }); + + it('resets animated styles when not highlighted', () => { + const { getByTestId } = renderWithProvider( + , + { state: defaultState }, + ); + const animatedView = getByTestId('animated-view-height'); + expect(animatedView.props.style[1].height).toBe(0); + expect(animatedView.props.style[1].opacity).toBe(0); + }); + + it('applies animated opacity based on expandedHeight', () => { + const { getByTestId } = renderWithProvider( + , + { state: defaultState }, + ); + const animatedView = getByTestId('animated-view-opacity'); + expect(animatedView.props.style.opacity).toBe(1); + }); }); diff --git a/app/components/UI/Ramp/components/Quote/Quote.tsx b/app/components/UI/Ramp/components/Quote/Quote.tsx index ba9e6859d919..a5bd34750201 100644 --- a/app/components/UI/Ramp/components/Quote/Quote.tsx +++ b/app/components/UI/Ramp/components/Quote/Quote.tsx @@ -119,7 +119,7 @@ const Quote: React.FC = ({ })); return ( - + = ({ {isBuyQuote(quote, rampType) && quote.isNativeApplePay ? ( diff --git a/app/components/UI/Ramp/components/__snapshots__/PaymentMethodSelector.test.tsx.snap b/app/components/UI/Ramp/components/__snapshots__/PaymentMethodSelector.test.tsx.snap index b1726fa05526..96d5dc758fa2 100644 --- a/app/components/UI/Ramp/components/__snapshots__/PaymentMethodSelector.test.tsx.snap +++ b/app/components/UI/Ramp/components/__snapshots__/PaymentMethodSelector.test.tsx.snap @@ -6,12 +6,12 @@ exports[`PaymentMethodSelector renders correctly 1`] = ` accessibilityRole="text" style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", - "fontSize": 14, + "color": "#121314", + "fontFamily": "CentraNo1-Book", + "fontSize": 16, "fontWeight": "400", "letterSpacing": 0, - "lineHeight": 22, + "lineHeight": 24, "marginVertical": 8, } } @@ -27,7 +27,7 @@ exports[`PaymentMethodSelector renders correctly 1`] = ` style={ [ { - "borderColor": "#848c96", + "borderColor": "#b7bbc8", "borderRadius": 8, "borderWidth": 1.5, "padding": 16, @@ -97,9 +97,9 @@ exports[`PaymentMethodSelector renders correctly 1`] = ` numberOfLines={1} style={ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Medium", - "fontSize": 16, + "color": "#121314", + "fontFamily": "CentraNo1-Medium", + "fontSize": 18, "fontWeight": "500", "letterSpacing": 0, "lineHeight": 24, @@ -123,8 +123,8 @@ exports[`PaymentMethodSelector renders correctly 1`] = ` style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -134,14 +134,14 @@ exports[`PaymentMethodSelector renders correctly 1`] = ` undefined, undefined, { - "color": "#141618", + "color": "#121314", }, undefined, undefined, undefined, undefined, { - "color": "#141618", + "color": "#121314", }, undefined, undefined, @@ -164,8 +164,8 @@ exports[`PaymentMethodSelector renders correctly 1`] = ` style={ [ { - "color": "#141618", - "fontFamily": "EuclidCircularB-Regular", + "color": "#121314", + "fontFamily": "CentraNo1-Book", "fontSize": 30, "fontWeight": "400", "marginVertical": 2, @@ -173,19 +173,19 @@ exports[`PaymentMethodSelector renders correctly 1`] = ` undefined, undefined, { - "fontFamily": "EuclidCircularB-Bold", + "fontFamily": "CentraNo1-Bold", "fontWeight": "600", }, undefined, { - "color": "#141618", + "color": "#121314", }, undefined, undefined, undefined, undefined, { - "color": "#141618", + "color": "#121314", }, undefined, undefined, @@ -216,7 +216,7 @@ exports[`PaymentMethodSelector renders correctly 1`] = ` "fontSize": 16, }, { - "color": "#141618", + "color": "#121314", "marginLeft": 10, }, { @@ -237,7 +237,7 @@ exports[`PaymentMethodSelector renders correctly 1`] = ` -> = ({ customAction, amount, disabled, fiatSymbol, ...props }: Props) => { - const navigation = useNavigation(); - const trackEvent = useAnalytics(); - const [isLoading, setIsLoading] = useState(false); - - const renderInAppBrowser = useInAppBrowser(); - - /** - * Grab the current state of the SDK via the context. - */ - const { - selectedAddress, - selectedPaymentMethodId, - selectedRegion, - selectedAsset, - selectedFiatCurrencyId, - selectedChainId, - callbackBaseUrl, - isBuy, - sdk, - } = useRampSDK(); - - /** - * * Handle custom action - */ - - const handleCustomAction = useCallback(async () => { - if (!sdk || !customAction) { - return; - } - try { - setIsLoading(true); - const providerId = customAction.buy.providerId; - const provider = await sdk.getProvider( - selectedRegion?.id as string, - providerId, - ); - - const payload = { - region: selectedRegion?.id as string, - payment_method_id: selectedPaymentMethodId as string, - }; - - if (isBuy) { - trackEvent('ONRAMP_DIRECT_PROVIDER_CLICKED', { - ...payload, - currency_source: fiatSymbol, - currency_destination: selectedAsset?.symbol as string, - provider_onramp: provider.provider.name, - chain_id_destination: selectedChainId as string, - }); - } else { - trackEvent('OFFRAMP_DIRECT_PROVIDER_CLICKED', { - ...payload, - currency_destination: fiatSymbol, - currency_source: selectedAsset?.symbol as string, - provider_offramp: provider.provider.name, - chain_id_source: selectedChainId as string, - }); - } - - const getUrlMethod = isBuy ? 'getBuyUrl' : 'getSellUrl'; - - const buyAction = await sdk[getUrlMethod]( - provider.provider, - selectedRegion?.id as string, - selectedPaymentMethodId as string, - selectedAsset?.id as string, - selectedFiatCurrencyId as string, - amount, - selectedAddress as string, - ); - - if (buyAction.browser === ProviderBuyFeatureBrowserEnum.AppBrowser) { - const { url, orderId: customOrderId } = await buyAction.createWidget( - callbackBaseUrl, - ); - navigation.navigate( - ...createCheckoutNavDetails({ - url, - provider: provider.provider, - customOrderId, - }), - ); - } else if ( - buyAction.browser === ProviderBuyFeatureBrowserEnum.InAppOsBrowser - ) { - await renderInAppBrowser( - buyAction, - provider.provider, - amount, - fiatSymbol, - ); - } else { - throw new Error('Unsupported browser type: ' + buyAction.browser); - } - } catch (error) { - Logger.error(error as Error, { - message: - 'FiatOrders::CustomActionButton error while getting buy action', - }); - } finally { - setIsLoading(false); - } - }, [ - amount, - callbackBaseUrl, - customAction, - fiatSymbol, - isBuy, - navigation, - renderInAppBrowser, - sdk, - selectedAddress, - selectedAsset?.id, - selectedAsset?.symbol, - selectedChainId, - selectedFiatCurrencyId, - selectedPaymentMethodId, - selectedRegion?.id, - trackEvent, - ]); - - return ( - - ); -}; - -export default CustomActionButton; diff --git a/app/components/UI/Ramp/hooks/useCryptoCurrencies.test.ts b/app/components/UI/Ramp/hooks/useCryptoCurrencies.test.ts index f872124a3ab0..30663bdd9cea 100644 --- a/app/components/UI/Ramp/hooks/useCryptoCurrencies.test.ts +++ b/app/components/UI/Ramp/hooks/useCryptoCurrencies.test.ts @@ -52,7 +52,7 @@ describe('useCryptoCurrencies', () => { expect(useSDKMethod).toHaveBeenCalledWith( 'getCryptoCurrencies', 'test-region-id', - 'test-payment-method-id', + ['test-payment-method-id'], 'test-fiat-currency-id', ); }); @@ -73,7 +73,7 @@ describe('useCryptoCurrencies', () => { expect(useSDKMethod).toHaveBeenCalledWith( 'getSellCryptoCurrencies', 'test-region-id', - 'test-payment-method-id', + ['test-payment-method-id'], 'test-fiat-currency-id', ); }); diff --git a/app/components/UI/Ramp/hooks/useCryptoCurrencies.ts b/app/components/UI/Ramp/hooks/useCryptoCurrencies.ts index e908a2f41620..d015a12a4d4a 100644 --- a/app/components/UI/Ramp/hooks/useCryptoCurrencies.ts +++ b/app/components/UI/Ramp/hooks/useCryptoCurrencies.ts @@ -26,7 +26,7 @@ export default function useCryptoCurrencies() { ] = useSDKMethod( isBuy ? 'getCryptoCurrencies' : 'getSellCryptoCurrencies', selectedRegion?.id, - selectedPaymentMethodId, + selectedPaymentMethodId ? [selectedPaymentMethodId] : null, selectedFiatCurrencyId, ); diff --git a/app/components/UI/Ramp/hooks/useFiatCurrencies.test.ts b/app/components/UI/Ramp/hooks/useFiatCurrencies.test.ts index ff6f3a33d4e0..058a217db608 100644 --- a/app/components/UI/Ramp/hooks/useFiatCurrencies.test.ts +++ b/app/components/UI/Ramp/hooks/useFiatCurrencies.test.ts @@ -47,13 +47,13 @@ describe('useFiatCurrencies', () => { expect(useSDKMethod).toHaveBeenCalledWith( 'getDefaultFiatCurrency', 'test-region-id', - 'test-payment-method-id', + ['test-payment-method-id'], ); expect(useSDKMethod).toHaveBeenCalledWith( 'getFiatCurrencies', 'test-region-id', - 'test-payment-method-id', + ['test-payment-method-id'], ); }); @@ -72,13 +72,13 @@ describe('useFiatCurrencies', () => { expect(useSDKMethod).toHaveBeenCalledWith( 'getDefaultSellFiatCurrency', 'test-region-id', - 'test-payment-method-id', + ['test-payment-method-id'], ); expect(useSDKMethod).toHaveBeenCalledWith( 'getSellFiatCurrencies', 'test-region-id', - 'test-payment-method-id', + ['test-payment-method-id'], ); }); diff --git a/app/components/UI/Ramp/hooks/useFiatCurrencies.ts b/app/components/UI/Ramp/hooks/useFiatCurrencies.ts index aadd8f7a7cb7..0a08e0cd3aa0 100644 --- a/app/components/UI/Ramp/hooks/useFiatCurrencies.ts +++ b/app/components/UI/Ramp/hooks/useFiatCurrencies.ts @@ -21,7 +21,7 @@ export default function useFiatCurrencies() { ] = useSDKMethod( isBuy ? 'getDefaultFiatCurrency' : 'getDefaultSellFiatCurrency', selectedRegion?.id, - selectedPaymentMethodId, + selectedPaymentMethodId ? [selectedPaymentMethodId] : null, ); const [ @@ -34,7 +34,7 @@ export default function useFiatCurrencies() { ] = useSDKMethod( isBuy ? 'getFiatCurrencies' : 'getSellFiatCurrencies', selectedRegion?.id, - selectedPaymentMethodId, + selectedPaymentMethodId ? [selectedPaymentMethodId] : null, ); /** diff --git a/app/components/UI/Ramp/hooks/useLimits.ts b/app/components/UI/Ramp/hooks/useLimits.ts index ff36f5d94102..7e3579433e01 100644 --- a/app/components/UI/Ramp/hooks/useLimits.ts +++ b/app/components/UI/Ramp/hooks/useLimits.ts @@ -13,7 +13,7 @@ const useLimits = () => { const [{ data: limits }] = useSDKMethod( isBuy ? 'getLimits' : 'getSellLimits', selectedRegion?.id, - selectedPaymentMethodId, + selectedPaymentMethodId ? [selectedPaymentMethodId] : null, selectedAsset?.id, selectedFiatCurrencyId, ); diff --git a/app/components/UI/Ramp/hooks/usePaymentMethods.test.ts b/app/components/UI/Ramp/hooks/usePaymentMethods.test.ts new file mode 100644 index 000000000000..851b85605708 --- /dev/null +++ b/app/components/UI/Ramp/hooks/usePaymentMethods.test.ts @@ -0,0 +1,169 @@ +import { RampSDK } from '../sdk'; +import useSDKMethod from './useSDKMethod'; +import { renderHookWithProvider } from '../../../../util/test/renderWithProvider'; +import usePaymentMethods from './usePaymentMethods'; + +type DeepPartial = { + [key in keyof BaseType]?: DeepPartial; +}; + +const mockuseRampSDKInitialValues: DeepPartial = { + selectedRegion: { id: '/regions/us-ca' }, + selectedPaymentMethodId: '/payments/debit-credit', + setSelectedPaymentMethodId: jest.fn(), + isBuy: true, +}; + +let mockUseRampSDKValues: DeepPartial = { + ...mockuseRampSDKInitialValues, +}; + +jest.mock('../sdk', () => ({ + useRampSDK: () => mockUseRampSDKValues, +})); + +jest.mock('./useSDKMethod'); + +describe('usePaymentMethods', () => { + beforeEach(() => { + jest.clearAllMocks(); + mockUseRampSDKValues = { + ...mockuseRampSDKInitialValues, + }; + }); + + it('calls useSDKMethod with the correct parameters for buy', () => { + (useSDKMethod as jest.Mock).mockReturnValue([ + { + data: [ + { id: '/payments/debit-credit' }, + { id: '/payments/bank-transfer' }, + ], + error: null, + isFetching: false, + }, + jest.fn(), + ]); + renderHookWithProvider(() => usePaymentMethods()); + + expect(useSDKMethod).toHaveBeenCalledWith( + 'getPaymentMethods', + '/regions/us-ca', + ); + }); + + it('calls useSDKMethod with the correct parameters for sell', () => { + mockUseRampSDKValues.isBuy = false; + (useSDKMethod as jest.Mock).mockReturnValue([ + { + data: [ + { id: '/payments/debit-credit' }, + { id: '/payments/bank-transfer' }, + ], + error: null, + isFetching: false, + }, + jest.fn(), + ]); + renderHookWithProvider(() => usePaymentMethods()); + + expect(useSDKMethod).toHaveBeenCalledWith( + 'getSellPaymentMethods', + '/regions/us-ca', + ); + }); + + it('returns loading state if fetching payment methods', () => { + const mockQuery = jest.fn(); + (useSDKMethod as jest.Mock).mockReturnValue([ + { + data: null, + error: null, + isFetching: true, + }, + mockQuery, + ]); + const { result } = renderHookWithProvider(() => usePaymentMethods()); + expect(result.current).toEqual({ + data: null, + isFetching: true, + error: null, + query: mockQuery, + currentPaymentMethod: undefined, + }); + }); + + it('returns error state if there is an error fetching payment methods', () => { + const mockQuery = jest.fn(); + (useSDKMethod as jest.Mock).mockReturnValue([ + { + data: null, + error: 'error-fetching-payment-methods', + isFetching: false, + }, + mockQuery, + ]); + const { result } = renderHookWithProvider(() => usePaymentMethods()); + expect(result.current).toEqual({ + data: null, + isFetching: false, + error: 'error-fetching-payment-methods', + query: mockQuery, + currentPaymentMethod: undefined, + }); + }); + + it('returns payment methods if fetching is successful', () => { + const mockQuery = jest.fn(); + (useSDKMethod as jest.Mock).mockReturnValue([ + { + data: [ + { id: '/payments/debit-credit' }, + { id: '/payments/bank-transfer' }, + ], + error: null, + isFetching: false, + }, + mockQuery, + ]); + const { result } = renderHookWithProvider(() => usePaymentMethods()); + expect(result.current).toEqual({ + data: [ + { id: '/payments/debit-credit' }, + { id: '/payments/bank-transfer' }, + ], + isFetching: false, + error: null, + query: mockQuery, + currentPaymentMethod: { id: '/payments/debit-credit' }, + }); + }); + + it('updates correctly when parameters change', () => { + const mockQuery = jest.fn(); + (useSDKMethod as jest.Mock).mockReturnValue([ + { + data: [{ id: '/payments/debit-credit' }], + error: null, + isFetching: false, + }, + mockQuery, + ]); + + const { result, rerender } = renderHookWithProvider(() => + usePaymentMethods(), + ); + expect(result.current.data).toEqual([{ id: '/payments/debit-credit' }]); + + (useSDKMethod as jest.Mock).mockReturnValue([ + { + data: [{ id: '/payments/bank-transfer' }], + error: null, + isFetching: false, + }, + mockQuery, + ]); + rerender(() => usePaymentMethods()); + expect(result.current.data).toEqual([{ id: '/payments/bank-transfer' }]); + }); +}); diff --git a/app/components/UI/Ramp/hooks/usePaymentMethods.ts b/app/components/UI/Ramp/hooks/usePaymentMethods.ts index 56f9805f02c9..9b6852361172 100644 --- a/app/components/UI/Ramp/hooks/usePaymentMethods.ts +++ b/app/components/UI/Ramp/hooks/usePaymentMethods.ts @@ -1,4 +1,4 @@ -import { useEffect, useMemo, useState } from 'react'; +import { useEffect, useMemo } from 'react'; import { useRampSDK } from '../sdk'; import useSDKMethod from './useSDKMethod'; @@ -7,12 +7,8 @@ function usePaymentMethods() { selectedRegion, selectedPaymentMethodId, setSelectedPaymentMethodId, - selectedChainId, - sdk, isBuy, } = useRampSDK(); - const [isFilterLoading, setIsFilterLoading] = useState(true); - const [allowedMethodIds, setAllowedMethodIds] = useState(); const paymentMethodsMethod = isBuy ? 'getPaymentMethods' @@ -20,99 +16,29 @@ function usePaymentMethods() { const [{ data: paymentMethods, isFetching, error }, queryGetPaymentMethods] = useSDKMethod(paymentMethodsMethod, selectedRegion?.id); - useEffect(() => setAllowedMethodIds(undefined), [selectedRegion?.id]); - - useEffect(() => { - if (!isFetching && !error && paymentMethods && selectedRegion) { - const getAllowedPaymentMethods = async () => { - setIsFilterLoading(true); - const allowed = []; - for (const method of paymentMethods) { - if (!method.customAction) { - allowed.push(method.id); - } else { - const cryptoCurrenciesMethod = isBuy - ? 'getCryptoCurrencies' - : 'getSellCryptoCurrencies'; - - const cryptoCurrencies = await sdk?.[cryptoCurrenciesMethod]( - selectedRegion.id, - method.id, - ); - if ( - cryptoCurrencies?.some( - (cryptoCurrency) => - cryptoCurrency.network.chainId === selectedChainId, - ) - ) { - allowed.push(method.id); - } - } - } - setAllowedMethodIds(allowed); - setIsFilterLoading(false); - }; - getAllowedPaymentMethods(); - } - /** Dependency `selectedRegion?.id` is disabled because is causing an extra - * filter cycle, leading to a wrong default payment method selection. - */ - // eslint-disable-next-line react-hooks/exhaustive-deps - }, [ - error, - isFetching, - paymentMethods, - sdk, - selectedChainId, - // selectedRegion?.id, - ]); - - const availablePaymentMethods = useMemo(() => { - if ( - !isFetching && - !isFilterLoading && - !error && - paymentMethods && - allowedMethodIds - ) { - if (allowedMethodIds.length === 0) return []; - return paymentMethods.filter((method) => - allowedMethodIds.includes(method.id), - ); - } - - return null; - }, [error, isFetching, isFilterLoading, paymentMethods, allowedMethodIds]); const currentPaymentMethod = useMemo( () => - availablePaymentMethods?.find( - (method) => method.id === selectedPaymentMethodId, - ), - [availablePaymentMethods, selectedPaymentMethodId], + paymentMethods?.find((method) => method.id === selectedPaymentMethodId), + [paymentMethods, selectedPaymentMethodId], ); useEffect(() => { - if (!isFetching && !isFilterLoading && !error && availablePaymentMethods) { - const paymentMethod = availablePaymentMethods.find( - (pm) => pm.id === selectedPaymentMethodId, - ); - if (!paymentMethod) { - setSelectedPaymentMethodId(availablePaymentMethods?.[0]?.id); - } + if (!isFetching && !error && !currentPaymentMethod && paymentMethods) { + setSelectedPaymentMethodId(paymentMethods?.[0]?.id); } }, [ error, - availablePaymentMethods, + paymentMethods, isFetching, selectedPaymentMethodId, setSelectedPaymentMethodId, - isFilterLoading, + currentPaymentMethod, ]); return { - data: availablePaymentMethods, - isFetching: isFetching || isFilterLoading, + data: paymentMethods, + isFetching, error, query: queryGetPaymentMethods, currentPaymentMethod, diff --git a/app/components/UI/Ramp/hooks/useQuotes.test.ts b/app/components/UI/Ramp/hooks/useQuotes.test.ts index 033b8d9c0589..0548cfd94629 100644 --- a/app/components/UI/Ramp/hooks/useQuotes.test.ts +++ b/app/components/UI/Ramp/hooks/useQuotes.test.ts @@ -15,6 +15,14 @@ const mockuseRampSDKInitialValues: DeepPartial = { selectedAddress: 'test-address', isBuy: true, }; +const mockCustomAction = { + button: { light: {}, dark: {} }, + buy: { providerId: '/providers/paypal' }, + buyButton: { light: {}, dark: {} }, + paymentMethodId: '/payments/paypal', + sellButton: { light: {}, dark: {} }, + supportedPaymentMethodIds: ['/payments/paypal', '/payments/paypal-staging'], +}; let mockUseRampSDKValues: DeepPartial = { ...mockuseRampSDKInitialValues, @@ -37,7 +45,7 @@ describe('useQuotes', () => { it('calls useSDKMethod with the correct parameters for buy', () => { (useSDKMethod as jest.Mock).mockReturnValue([ { - data: { quotes: [], sorted: [] }, + data: { quotes: [], sorted: [], customActions: [] }, error: null, isFetching: false, }, @@ -48,7 +56,7 @@ describe('useQuotes', () => { expect(useSDKMethod).toHaveBeenCalledWith( 'getQuotes', 'test-region-id', - 'test-payment-method-id', + ['test-payment-method-id'], 'test-crypto-id', 'test-fiat-currency-id-1', 100, @@ -60,7 +68,7 @@ describe('useQuotes', () => { mockUseRampSDKValues.isBuy = false; (useSDKMethod as jest.Mock).mockReturnValue([ { - data: { quotes: [], sorted: [] }, + data: { quotes: [], sorted: [], customActions: [] }, error: null, isFetching: false, }, @@ -71,7 +79,7 @@ describe('useQuotes', () => { expect(useSDKMethod).toHaveBeenCalledWith( 'getSellQuotes', 'test-region-id', - 'test-payment-method-id', + ['test-payment-method-id'], 'test-crypto-id', 'test-fiat-currency-id-1', 100, @@ -119,11 +127,15 @@ describe('useQuotes', () => { }); }); - it('returns quotes if fetching is successful', () => { + it('returns quotes and custom actions if fetching is successful', () => { const mockQuery = jest.fn(); (useSDKMethod as jest.Mock).mockReturnValue([ { - data: { quotes: [{ id: 'quote-1' }, { id: 'quote-2' }] }, + data: { + quotes: [{ id: 'quote-1' }, { id: 'quote-2' }], + sorted: [], + customActions: [mockCustomAction], + }, error: null, isFetching: false, }, @@ -132,6 +144,8 @@ describe('useQuotes', () => { const { result } = renderHookWithProvider(() => useQuotes(100)); expect(result.current).toEqual({ quotes: [{ id: 'quote-1' }, { id: 'quote-2' }], + sorted: [], + customActions: [mockCustomAction], isFetching: false, error: null, query: mockQuery, diff --git a/app/components/UI/Ramp/hooks/useQuotes.ts b/app/components/UI/Ramp/hooks/useQuotes.ts index 6a006499b59c..73ab74f29a48 100644 --- a/app/components/UI/Ramp/hooks/useQuotes.ts +++ b/app/components/UI/Ramp/hooks/useQuotes.ts @@ -13,7 +13,7 @@ function useQuotes(amount: number | string) { const [{ data, isFetching, error }, query] = useSDKMethod( isBuy ? 'getQuotes' : 'getSellQuotes', selectedRegion?.id, - selectedPaymentMethodId, + selectedPaymentMethodId ? [selectedPaymentMethodId] : null, selectedAsset?.id, selectedFiatCurrencyId, amount, @@ -22,6 +22,7 @@ function useQuotes(amount: number | string) { return { quotes: data?.quotes, + customActions: data?.customActions, sorted: data?.sorted, isFetching, error, diff --git a/app/components/UI/Ramp/hooks/useQuotesAndCustomActions.test.ts b/app/components/UI/Ramp/hooks/useQuotesAndCustomActions.test.ts new file mode 100644 index 000000000000..8992788977d8 --- /dev/null +++ b/app/components/UI/Ramp/hooks/useQuotesAndCustomActions.test.ts @@ -0,0 +1,112 @@ +import { renderHookWithProvider } from '../../../../util/test/renderWithProvider'; +import useQuotesAndCustomActions from './useQuotesAndCustomActions'; +import useSortedQuotes from './useSortedQuotes'; + +jest.mock('./useSortedQuotes'); +jest.mock('react-redux', () => ({ + ...jest.requireActual('react-redux'), + useSelector: jest.fn().mockReturnValue(['provider-id-1']), +})); + +describe('useQuotesAndCustomActions', () => { + beforeEach(() => { + jest.clearAllMocks(); + }); + + it('composes useSortedQuotes', () => { + const sortedQuotesMock = { + recommendedQuote: { id: 'quote-1', provider: { id: 'provider-id-1' } }, + customActions: [], + quotes: [], + sorted: [], + error: null, + isFetching: false, + }; + (useSortedQuotes as jest.Mock).mockReturnValue(sortedQuotesMock); + const { result } = renderHookWithProvider(() => + useQuotesAndCustomActions(100), + ); + expect(result.current).toMatchObject(sortedQuotesMock); + }); + + describe('recommendedCustomAction', () => { + it('returns the undefined if there are no custom actions', () => { + (useSortedQuotes as jest.Mock).mockReturnValue({ + recommendedQuote: { id: 'quote-1', provider: { id: 'provider-id-1' } }, + customActions: [], + quotes: [], + sorted: [], + error: null, + isFetching: false, + }); + const { result } = renderHookWithProvider(() => + useQuotesAndCustomActions(100), + ); + expect(result.current.recommendedCustomAction).toBeUndefined(); + }); + + it('returns the undefined if the recommended quote is a previously used provider', () => { + (useSortedQuotes as jest.Mock).mockReturnValue({ + recommendedQuote: { id: 'quote-1', provider: { id: 'provider-id-1' } }, + customActions: [ + { + button: { light: {}, dark: {} }, + buy: { providerId: '/providers/paypal' }, + buyButton: { light: {}, dark: {} }, + paymentMethodId: '/payments/paypal', + sellButton: { light: {}, dark: {} }, + supportedPaymentMethodIds: [ + '/payments/paypal', + '/payments/paypal-staging', + ], + }, + ], + quotes: [], + sorted: [], + error: null, + isFetching: false, + }); + const { result } = renderHookWithProvider(() => + useQuotesAndCustomActions(100), + ); + expect(result.current.recommendedCustomAction).toBeUndefined(); + }); + + it('returns the first custom action', () => { + (useSortedQuotes as jest.Mock).mockReturnValue({ + recommendedQuote: { id: 'quote-2', provider: { id: 'provider-id-2' } }, + customActions: [ + { + button: { light: {}, dark: {} }, + buy: { providerId: '/providers/paypal' }, + buyButton: { light: {}, dark: {} }, + paymentMethodId: '/payments/paypal', + sellButton: { light: {}, dark: {} }, + supportedPaymentMethodIds: [ + '/payments/paypal', + '/payments/paypal-staging', + ], + }, + ], + quotes: [], + sorted: [], + error: null, + isFetching: false, + }); + const { result } = renderHookWithProvider(() => + useQuotesAndCustomActions(100), + ); + expect(result.current.recommendedCustomAction).toEqual({ + button: { light: {}, dark: {} }, + buy: { providerId: '/providers/paypal' }, + buyButton: { light: {}, dark: {} }, + paymentMethodId: '/payments/paypal', + sellButton: { light: {}, dark: {} }, + supportedPaymentMethodIds: [ + '/payments/paypal', + '/payments/paypal-staging', + ], + }); + }); + }); +}); diff --git a/app/components/UI/Ramp/hooks/useQuotesAndCustomActions.ts b/app/components/UI/Ramp/hooks/useQuotesAndCustomActions.ts new file mode 100644 index 000000000000..d3293418fb8c --- /dev/null +++ b/app/components/UI/Ramp/hooks/useQuotesAndCustomActions.ts @@ -0,0 +1,30 @@ +import { useMemo } from 'react'; +import useSortedQuotes from './useSortedQuotes'; +import { useSelector } from 'react-redux'; +import { getOrdersProviders } from '../../../../reducers/fiatOrders'; + +function useQuotesAndCustomActions(amount: number | string) { + const ordersProviders = useSelector(getOrdersProviders); + + const sortedQuotes = useSortedQuotes(amount); + + const { recommendedQuote, customActions } = sortedQuotes; + + const recommendedCustomAction = useMemo(() => { + if ( + customActions && + customActions?.length > 0 && + (!recommendedQuote || + !ordersProviders.includes(recommendedQuote.provider.id)) + ) { + return customActions[0]; + } + }, [customActions, ordersProviders, recommendedQuote]); + + return { + recommendedCustomAction, + ...sortedQuotes, + }; +} + +export default useQuotesAndCustomActions; diff --git a/app/components/UI/Ramp/hooks/useSortedQuotes.test.ts b/app/components/UI/Ramp/hooks/useSortedQuotes.test.ts index b9485bff25b7..6b4a2981253a 100644 --- a/app/components/UI/Ramp/hooks/useSortedQuotes.test.ts +++ b/app/components/UI/Ramp/hooks/useSortedQuotes.test.ts @@ -34,6 +34,19 @@ describe('useSortedQuotes', () => { ], }, ], + customActions: [ + { + button: { light: {}, dark: {} }, + buy: { providerId: '/providers/paypal' }, + buyButton: { light: {}, dark: {} }, + paymentMethodId: '/payments/paypal', + sellButton: { light: {}, dark: {} }, + supportedPaymentMethodIds: [ + '/payments/paypal', + '/payments/paypal-staging', + ], + }, + ], error: null, isFetching: false, }); @@ -46,6 +59,42 @@ describe('useSortedQuotes', () => { ]); }); + it('returns the custom actions', () => { + (useQuotes as jest.Mock).mockReturnValue({ + quotes: [], + sorted: [], + customActions: [ + { + button: { light: {}, dark: {} }, + buy: { providerId: '/providers/paypal' }, + buyButton: { light: {}, dark: {} }, + paymentMethodId: '/payments/paypal', + sellButton: { light: {}, dark: {} }, + supportedPaymentMethodIds: [ + '/payments/paypal', + '/payments/paypal-staging', + ], + }, + ], + error: null, + isFetching: false, + }); + const { result } = renderHookWithProvider(() => useSortedQuotes(100)); + expect(result.current.customActions).toEqual([ + { + button: { light: {}, dark: {} }, + buy: { providerId: '/providers/paypal' }, + buyButton: { light: {}, dark: {} }, + paymentMethodId: '/payments/paypal', + sellButton: { light: {}, dark: {} }, + supportedPaymentMethodIds: [ + '/payments/paypal', + '/payments/paypal-staging', + ], + }, + ]); + }); + it('sorts quotes by reliability and filters out errors', () => { (useQuotes as jest.Mock).mockReturnValue({ quotes: [ @@ -161,6 +210,25 @@ describe('useSortedQuotes', () => { }); }); + it('defaults the recommended quote to the first quote', () => { + (useSelector as jest.Mock).mockReturnValue([]); + (useQuotes as jest.Mock).mockReturnValue({ + quotes: [ + { id: 'quote-1', provider: { id: 'provider-id-1' }, error: null }, + { id: 'quote-2', provider: { id: 'provider-id-2' }, error: null }, + ], + sorted: [], + error: null, + isFetching: false, + }); + const { result } = renderHookWithProvider(() => useSortedQuotes(100)); + expect(result.current.recommendedQuote).toEqual({ + id: 'quote-1', + provider: { id: 'provider-id-1' }, + error: null, + }); + }); + it('handles fetching state', () => { (useQuotes as jest.Mock).mockReturnValue({ quotes: [], diff --git a/app/components/UI/Ramp/hooks/useSortedQuotes.ts b/app/components/UI/Ramp/hooks/useSortedQuotes.ts index e144b741f20c..49670d1429e6 100644 --- a/app/components/UI/Ramp/hooks/useSortedQuotes.ts +++ b/app/components/UI/Ramp/hooks/useSortedQuotes.ts @@ -12,7 +12,8 @@ import { function useSortedQuotes(amount: number | string) { const ordersProviders = useSelector(getOrdersProviders); - const { quotes, sorted, isFetching, error, query } = useQuotes(amount); + const { quotes, customActions, sorted, isFetching, error, query } = + useQuotes(amount); const quotesWithoutError: (QuoteResponse | SellQuoteResponse)[] = useMemo( () => @@ -69,6 +70,7 @@ function useSortedQuotes(amount: number | string) { return { quotes, + customActions, quotesWithoutError, quotesWithError, quotesByPriceWithoutError, diff --git a/app/components/UI/ReceiveRequest/__snapshots__/index.test.tsx.snap b/app/components/UI/ReceiveRequest/__snapshots__/index.test.tsx.snap index 6c9f6fd6d6cd..d8e4d464d510 100644 --- a/app/components/UI/ReceiveRequest/__snapshots__/index.test.tsx.snap +++ b/app/components/UI/ReceiveRequest/__snapshots__/index.test.tsx.snap @@ -329,7 +329,7 @@ exports[`ReceiveRequest render matches snapshot 1`] = ` @@ -610,7 +610,7 @@ exports[`ReceiveRequest render matches snapshot 1`] = ` testID="qr-account-display-copy-button" > @@ -662,7 +662,7 @@ exports[`ReceiveRequest render matches snapshot 1`] = ` }, { "backgroundColor": "#ffffff", - "borderColor": "#0376c9", + "borderColor": "#4459ff", "borderWidth": 1, }, { @@ -688,13 +688,13 @@ exports[`ReceiveRequest render matches snapshot 1`] = ` null, [ { - "fontFamily": "EuclidCircularB-Bold", + "fontFamily": "CentraNo1-Bold", "fontSize": 14, "fontWeight": "600", "textAlign": "center", }, { - "color": "#0376c9", + "color": "#4459ff", }, undefined, ], @@ -1076,7 +1076,7 @@ exports[`ReceiveRequest render with different ticker matches snapshot 1`] = ` @@ -1357,7 +1357,7 @@ exports[`ReceiveRequest render with different ticker matches snapshot 1`] = ` testID="qr-account-display-copy-button" > @@ -1409,7 +1409,7 @@ exports[`ReceiveRequest render with different ticker matches snapshot 1`] = ` }, { "backgroundColor": "#ffffff", - "borderColor": "#0376c9", + "borderColor": "#4459ff", "borderWidth": 1, }, { @@ -1435,13 +1435,13 @@ exports[`ReceiveRequest render with different ticker matches snapshot 1`] = ` null, [ { - "fontFamily": "EuclidCircularB-Bold", + "fontFamily": "CentraNo1-Bold", "fontSize": 14, "fontWeight": "600", "textAlign": "center", }, { - "color": "#0376c9", + "color": "#4459ff", }, undefined, ], @@ -1823,7 +1823,7 @@ exports[`ReceiveRequest render without buy matches snapshot 1`] = ` @@ -2104,7 +2104,7 @@ exports[`ReceiveRequest render without buy matches snapshot 1`] = ` testID="qr-account-display-copy-button" > @@ -2156,7 +2156,7 @@ exports[`ReceiveRequest render without buy matches snapshot 1`] = ` }, { "backgroundColor": "#ffffff", - "borderColor": "#0376c9", + "borderColor": "#4459ff", "borderWidth": 1, }, { @@ -2182,13 +2182,13 @@ exports[`ReceiveRequest render without buy matches snapshot 1`] = ` null, [ { - "fontFamily": "EuclidCircularB-Bold", + "fontFamily": "CentraNo1-Bold", "fontSize": 14, "fontWeight": "600", "textAlign": "center", }, { - "color": "#0376c9", + "color": "#4459ff", }, undefined, ], diff --git a/app/components/UI/ReusableModal/__snapshots__/index.test.tsx.snap b/app/components/UI/ReusableModal/__snapshots__/index.test.tsx.snap index b46a1d36dd29..0bf9df17ddeb 100644 --- a/app/components/UI/ReusableModal/__snapshots__/index.test.tsx.snap +++ b/app/components/UI/ReusableModal/__snapshots__/index.test.tsx.snap @@ -17,7 +17,7 @@ exports[`ReusableModal should render correctly 1`] = ` style={ [ { - "backgroundColor": "#00000099", + "backgroundColor": "#00000066", "bottom": 0, "left": 0, "position": "absolute", diff --git a/app/components/UI/ReviewModal/styles.ts b/app/components/UI/ReviewModal/styles.ts index 77bca68ad7b3..8894878d3874 100644 --- a/app/components/UI/ReviewModal/styles.ts +++ b/app/components/UI/ReviewModal/styles.ts @@ -20,7 +20,7 @@ export const createStyles = (colors: any) => optionIcon: { fontSize: 24 }, optionLabel: { fontSize: 14, - fontFamily: 'EuclidCircularB-Regular', + fontFamily: 'CentraNo1-Book', color: colors.primary.default, }, helpOption: { marginVertical: 12 }, @@ -29,14 +29,14 @@ export const createStyles = (colors: any) => questionLabel: { fontSize: 18, paddingHorizontal: 30, - fontFamily: 'EuclidCircularB-Bold', + fontFamily: 'CentraNo1-Bold', textAlign: 'center', color: colors.text.default, lineHeight: 26, }, description: { fontSize: 14, - fontFamily: 'EuclidCircularB-Regular', + fontFamily: 'CentraNo1-Book', color: colors.text.alternative, textAlign: 'center', lineHeight: 20, diff --git a/app/components/UI/SDKFeedback/index.tsx b/app/components/UI/SDKFeedback/index.tsx index 63c7c0cd05c9..df6c8b0b50ca 100644 --- a/app/components/UI/SDKFeedback/index.tsx +++ b/app/components/UI/SDKFeedback/index.tsx @@ -10,6 +10,10 @@ import Device from '../../../../app/util/device'; import { strings } from '../../../../locales/i18n'; import { useTheme } from '../../../util/theme'; import StyledButton from '../StyledButton'; +import { + getFontFamily, + TextVariant, +} from '../../../component-library/components/Texts/Text'; interface SDKFeedbackProps { onConfirm: () => void; @@ -36,11 +40,13 @@ const createStyles = ( }, title: { ...typography.lHeadingMD, + fontFamily: getFontFamily(TextVariant.HeadingMD), textAlign: 'center', } as TextStyle, info: { padding: 20, ...typography.sBodyMD, + fontFamily: getFontFamily(TextVariant.BodyMD), } as TextStyle, action: { marginLeft: 20, diff --git a/app/components/UI/SRPList/SRPList.styles.ts b/app/components/UI/SRPList/SRPList.styles.ts new file mode 100644 index 000000000000..09bc1e163aeb --- /dev/null +++ b/app/components/UI/SRPList/SRPList.styles.ts @@ -0,0 +1,83 @@ +// Third party dependencies. +import { StyleSheet } from 'react-native'; +import { Theme } from '../../../util/theme/models'; + +/** + * Style sheet function for SRP List component. + * + * @returns StyleSheet object. + */ +const styleSheet = (params: { theme: Theme }) => { + const { theme } = params; + const { colors } = theme; + + return StyleSheet.create({ + base: { + display: 'flex', + alignItems: 'flex-start', + justifyContent: 'center', + flexShrink: 1, + paddingVertical: 16, + paddingHorizontal: 16, + backgroundColor: colors.background.default, + margin: 8, + }, + accountInputContainer: { + width: '100%', + marginBottom: 16, + }, + accountInput: { + display: 'flex', + width: '100%', + gap: 10, + paddingHorizontal: 16, + paddingVertical: 12, + borderRadius: 8, + borderColor: colors.border.default, + }, + srpSelectorContainer: { + display: 'flex', + width: '100%', + }, + srpSelector: { + display: 'flex', + flexDirection: 'row', + alignContent: 'center', + paddingHorizontal: 16, + paddingVertical: 4, + borderWidth: 1, + borderColor: colors.border.default, + borderRadius: 8, + }, + srp: { + flex: 1, + display: 'flex', + flexDirection: 'column', + }, + srpArrow: { + display: 'flex', + flexDirection: 'column', + justifyContent: 'center', + alignItems: 'center', + }, + footerContainer: { + width: '100%', + display: 'flex', + flexDirection: 'row', + justifyContent: 'space-between', + paddingVertical: 16, + gap: 16, + + button: { + flex: 1, + }, + }, + srpListContentContainer: { + display: 'flex', + maxWidth: '100%', + paddingVertical: 4, + }, + }); +}; + +export default styleSheet; diff --git a/app/components/UI/SRPList/SRPList.test.tsx b/app/components/UI/SRPList/SRPList.test.tsx new file mode 100644 index 000000000000..2715d2692b4a --- /dev/null +++ b/app/components/UI/SRPList/SRPList.test.tsx @@ -0,0 +1,103 @@ +import React from 'react'; + +import renderWithProvider from '../../../util/test/renderWithProvider'; + +import { SRPListSelectorsIDs } from '../../../../e2e/selectors/MultiSRP/SRPList.selectors'; +import { SRPListItemSelectorsIDs } from '../../../../e2e/selectors/MultiSRP/SRPListItem.selectors'; +import { backgroundState } from '../../../util/test/initial-root-state'; +import { + MOCK_ACCOUNTS_CONTROLLER_STATE, + internalAccount1, + internalAccount2, +} from '../../../util/test/accountsControllerTestUtils'; + +import SRPList from './SRPList'; +import { fireEvent } from '@testing-library/react-native'; +import ExtendedKeyringTypes from '../../../constants/keyringTypes'; + +jest.mock('../../../core/Engine', () => { + const { MOCK_ACCOUNTS_CONTROLLER_STATE: mockAccountsControllerState } = + jest.requireActual('../../../util/test/accountsControllerTestUtils'); + return { + context: { + AccountsController: { + ...mockAccountsControllerState, + state: mockAccountsControllerState, + }, + }, + }; +}); + +const mockKeyringMetadata1 = { + id: '01JKZ55Y6KPCYH08M6B9VSZWKW', + name: '', +}; +const mockKeyringMetadata2 = { + id: '01JKZ56KRVYEEHC601HSNW28T2', + name: '', +}; + +const initialState = { + swaps: { '0x1': { isLive: true }, hasOnboarded: false, isLive: true }, + engine: { + backgroundState: { + ...backgroundState, + AccountsController: MOCK_ACCOUNTS_CONTROLLER_STATE, + KeyringController: { + keyrings: [ + { + type: ExtendedKeyringTypes.hd, + accounts: [internalAccount1.address], + }, + { + type: ExtendedKeyringTypes.simple, + accounts: [internalAccount2.address], + }, + ], + keyringsMetadata: [mockKeyringMetadata1, mockKeyringMetadata2], + }, + }, + }, +}; + +const mockOnKeyringSelect = jest.fn(); + +const getTestId = (selector: string, keyringId: string) => + `${selector}-${keyringId}`; + +describe('SRPList', () => { + beforeEach(() => { + jest.clearAllMocks(); + }); + + it('renders lists', () => { + const { getByTestId } = renderWithProvider( + , + { + state: initialState, + }, + ); + + expect(getByTestId(SRPListSelectorsIDs.SRP_LIST)).toBeDefined(); + }); + + it('executes onKeyringSelect when a srp is clicked', () => { + const { getByTestId } = renderWithProvider( + , + { + state: initialState, + }, + ); + + fireEvent.press( + getByTestId( + getTestId( + SRPListItemSelectorsIDs.SRP_LIST_ITEM, + mockKeyringMetadata1.id, + ), + ), + ); + + expect(mockOnKeyringSelect).toHaveBeenCalledWith(mockKeyringMetadata1.id); + }); +}); diff --git a/app/components/UI/SRPList/SRPList.tsx b/app/components/UI/SRPList/SRPList.tsx new file mode 100644 index 000000000000..94fcd1cef112 --- /dev/null +++ b/app/components/UI/SRPList/SRPList.tsx @@ -0,0 +1,36 @@ +import React from 'react'; +import { FlatList, View } from 'react-native'; +import { strings } from '../../../../locales/i18n'; +import { useSelector } from 'react-redux'; +import { selectHDKeyrings } from '../../../selectors/keyringController'; +import { SRPListProps } from './SRPList.types'; +import { useStyles } from '../../hooks/useStyles'; +import styleSheet from './SRPList.styles'; +import SRPListItem from '../SRPListItem'; +import { SRPListSelectorsIDs } from '../../../../e2e/selectors/MultiSRP/SRPList.selectors'; + +const SRPList = ({ onKeyringSelect }: SRPListProps) => { + const { styles } = useStyles(styleSheet, {}); + const hdKeyrings = useSelector(selectHDKeyrings); + + return ( + + ( + onKeyringSelect(item.metadata.id)} + /> + )} + scrollEnabled + nestedScrollEnabled + /> + + ); +}; + +export default SRPList; diff --git a/app/components/UI/SRPList/SRPList.types.ts b/app/components/UI/SRPList/SRPList.types.ts new file mode 100644 index 000000000000..a3d2db07927f --- /dev/null +++ b/app/components/UI/SRPList/SRPList.types.ts @@ -0,0 +1,3 @@ +export interface SRPListProps { + onKeyringSelect: (id: string) => void; +} diff --git a/app/components/UI/SRPList/index.tsx b/app/components/UI/SRPList/index.tsx new file mode 100644 index 000000000000..8fe9e1f0183e --- /dev/null +++ b/app/components/UI/SRPList/index.tsx @@ -0,0 +1 @@ +export { default } from './SRPList'; diff --git a/app/components/UI/SRPListItem/SRPListItem.styles.ts b/app/components/UI/SRPListItem/SRPListItem.styles.ts new file mode 100644 index 000000000000..3c0bfc1590a8 --- /dev/null +++ b/app/components/UI/SRPListItem/SRPListItem.styles.ts @@ -0,0 +1,62 @@ +// Third party dependencies. +import { StyleSheet } from 'react-native'; +import { Theme } from '../../../util/theme/models'; + +/** + * Style sheet function for SRP List component. + * + * @returns StyleSheet object. + */ +const styleSheet = (params: { theme: Theme }) => { + const { theme } = params; + const { colors } = theme; + + return StyleSheet.create({ + srpItem: { + width: '100%', + display: 'flex', + flexDirection: 'row', + justifyContent: 'space-between', + alignItems: 'center', + padding: 16, + marginBottom: 16, + borderRadius: 8, + backgroundColor: colors.background.alternative, + }, + srpItemContent: { + display: 'flex', + flexShrink: 1, + width: '100%', + flexDirection: 'column', + justifyContent: 'center', + alignItems: 'flex-start', + }, + srpItemIcon: { + flexDirection: 'column', + justifyContent: 'center', + }, + horizontalLine: { + height: 1, + width: '100%', + borderBottomWidth: 1, + borderColor: colors.border.muted, + marginTop: 8, + marginBottom: 8, + }, + accountItem: { + flexDirection: 'row', + alignItems: 'center', + gap: 8, + marginBottom: 4, + }, + accountsList: { + display: 'flex', + }, + accountsListContentContainer: { + display: 'flex', + paddingVertical: 4, + }, + }); +}; + +export default styleSheet; diff --git a/app/components/UI/SRPListItem/SRPListItem.test.tsx b/app/components/UI/SRPListItem/SRPListItem.test.tsx new file mode 100644 index 000000000000..990cbe9c3ad8 --- /dev/null +++ b/app/components/UI/SRPListItem/SRPListItem.test.tsx @@ -0,0 +1,156 @@ +import React from 'react'; + +import renderWithProvider from '../../../util/test/renderWithProvider'; + +import { SRPListItemSelectorsIDs } from '../../../../e2e/selectors/MultiSRP/SRPListItem.selectors'; +import { backgroundState } from '../../../util/test/initial-root-state'; +import { + MOCK_ACCOUNTS_CONTROLLER_STATE, + internalAccount1, + internalAccount2, +} from '../../../util/test/accountsControllerTestUtils'; + +import SRPListItem from './SRPListItem'; +import { fireEvent } from '@testing-library/react-native'; +import ExtendedKeyringTypes from '../../../constants/keyringTypes'; + +jest.mock('../../../core/Engine', () => { + const { MOCK_ACCOUNTS_CONTROLLER_STATE: mockAccountsControllerState } = + jest.requireActual('../../../util/test/accountsControllerTestUtils'); + return { + context: { + AccountsController: { + ...mockAccountsControllerState, + state: mockAccountsControllerState, + }, + }, + }; +}); + +const mockKeyringName1 = 'Secret Recovery Phrase 1'; +const mockKeyringMetadata1 = { + id: '01JKZ55Y6KPCYH08M6B9VSZWKW', + name: '', +}; +const mockKeyringMetadata2 = { + id: '01JKZ56KRVYEEHC601HSNW28T2', + name: '', +}; +const mockKeyring1 = { + type: ExtendedKeyringTypes.hd, + accounts: [internalAccount1.address], + metadata: mockKeyringMetadata1, +}; +const mockKeyring2 = { + type: ExtendedKeyringTypes.simple, + accounts: [internalAccount2.address], + metadata: mockKeyringMetadata2, +}; + +const initialState = { + swaps: { '0x1': { isLive: true }, hasOnboarded: false, isLive: true }, + engine: { + backgroundState: { + ...backgroundState, + AccountsController: MOCK_ACCOUNTS_CONTROLLER_STATE, + KeyringController: { + keyrings: [mockKeyring1, mockKeyring2], + keyringsMetadata: [mockKeyringMetadata1, mockKeyringMetadata2], + }, + }, + }, +}; + +const mockOnKeyringSelect = jest.fn(); + +const getTestId = (selector: string, keyringId: string) => + `${selector}-${keyringId}`; + +describe('SRPList', () => { + beforeEach(() => { + jest.clearAllMocks(); + }); + + it('renders', () => { + const { getByTestId } = renderWithProvider( + , + { + state: initialState, + }, + ); + + expect( + getByTestId( + getTestId( + SRPListItemSelectorsIDs.SRP_LIST_ITEM, + mockKeyring1.metadata.id, + ), + ), + ).toBeDefined(); + expect( + getByTestId( + getTestId( + SRPListItemSelectorsIDs.SRP_LIST_ITEM_TOGGLE_SHOW, + mockKeyring1.metadata.id, + ), + ), + ).toBeDefined(); + }); + + it('calls onActionComplete when the item is clicked', () => { + const { getByTestId } = renderWithProvider( + , + { + state: initialState, + }, + ); + + const srpItem = getByTestId( + getTestId( + SRPListItemSelectorsIDs.SRP_LIST_ITEM, + mockKeyring1.metadata.id, + ), + ); + + fireEvent.press(srpItem); + + expect(mockOnKeyringSelect).toHaveBeenCalledWith(mockKeyringMetadata1.id); + }); + + it('displays accounts when toggle is clicked', () => { + const { getByTestId } = renderWithProvider( + , + { + state: initialState, + }, + ); + + const toggle = getByTestId( + getTestId( + SRPListItemSelectorsIDs.SRP_LIST_ITEM_TOGGLE_SHOW, + mockKeyring1.metadata.id, + ), + ); + + fireEvent.press(toggle); + + expect( + getTestId( + SRPListItemSelectorsIDs.SRP_LIST_ITEM_ACCOUNTS_LIST, + mockKeyring1.metadata.id, + ), + ).toBeDefined(); + }); +}); diff --git a/app/components/UI/SRPListItem/SRPListItem.tsx b/app/components/UI/SRPListItem/SRPListItem.tsx new file mode 100644 index 000000000000..942ca0ef8c16 --- /dev/null +++ b/app/components/UI/SRPListItem/SRPListItem.tsx @@ -0,0 +1,90 @@ +import React, { useMemo, useState } from 'react'; +import { FlatList, TouchableWithoutFeedback, View } from 'react-native'; +import { useStyles } from '../../hooks/useStyles'; +import styleSheet from './SRPListItem.styles'; +import { SRPListItemProps } from './SRPListItem.type'; +import Text, { + TextColor, + TextVariant, +} from '../../../component-library/components/Texts/Text'; +import Icon, { + IconName, +} from '../../../component-library/components/Icons/Icon'; +import { strings } from '../../../../locales/i18n'; +import { getInternalAccountByAddress } from '../../../util/address'; +import Jazzicon from 'react-native-jazzicon'; +import Button, { + ButtonVariants, +} from '../../../component-library/components/Buttons/Button'; +import { SRPListItemSelectorsIDs } from '../../../../e2e/selectors/MultiSRP/SRPListItem.selectors'; + +const SRPListItem = ({ name, keyring, onActionComplete }: SRPListItemProps) => { + const { styles } = useStyles(styleSheet, {}); + const [showAccounts, setShowAccounts] = useState(false); + const accountsToBeShown = useMemo( + () => + keyring.accounts.map((accountAddress) => + getInternalAccountByAddress(accountAddress), + ), + [keyring], + ); + + return ( + onActionComplete(keyring.metadata.id)} + testID={`${SRPListItemSelectorsIDs.SRP_LIST_ITEM}-${keyring.metadata.id}`} + > + + + {name} + - ); - /** * Handles reload button press */ @@ -265,7 +233,7 @@ const Options = ({ * Render non-homepage options menu */ const renderNonHomeOptions = () => { - if (isHomepage()) return renderGoToFavorites(); + if (isHomepage()) return null; return ( {renderReloadOption()} @@ -283,7 +251,6 @@ const Options = ({ )} - {renderGoToFavorites()} {renderShareOption()}

        p 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

        b?NL`J@GQunG7>`RUUSBBGrI9e_XbNht3Csn4p= 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 V?q4#~b1*VQa5e#C;%e;({%Q)y2dLx#cC`6l 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

    3. otNHvxKG+vM`#O0BPx)1{71xS$;m&p@DEYx}Z= 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
      T- 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

      3_N&0OO{Ut?%;sTSc*Bi3;wXczvckicviO0mtL& zsT7b#ujj(@l3lN+d$!BV8|R`;eJ?MkWR#8Ppb%cmMkaXXG%qrU1!jUG#OPxqNtbz2 zu%Ot~FNnPzY!*?*4qi}FTiwEL)1elq)i?LH$3^L|7muF*bcra&?}OJ$ z$?AaSXG-ohVTOgjSk}ue=$3v8|4i}o3)6jnf0E={(#iKDg@SZVj-^vhzI$>!z2&!e z3-0T{rO5NgJN==}ZEec(4WvfOo|~yfxEik~v-Vp@X4NW!lagTSAsSTunhdN(iGaql zD8R+11&v0Afl;)Q&47z$H!`SytH%DUnr%plKwR4ri7r;&7)re8rM{o1lp9_;x~RIw zyY!HE?Nua&C$4S|{GD5s2({XK#TsSb5t>D;HwVO%uUrJeK7)>>Em38jKUQrqcEkoN z*bR?ilgb*NMlj9qWV-X=l?RzM>JOUk^=fWs&Of$GUsm31pMrISC`xN7;7g(V>AJwD zmCm@I3XGp4VDtHLkR$M z=Bdi44h8Vy8kBS^bjkzze2T4F2GR~_tVIKx#TP=vuBM?DFVnI*C{>)JtPXsFGof1Y zg&AJqBoT>SpbO3!Dhl1o!$ze-f<(BI%ML3AymcJWbcE50-1qmswKQ5(GJ0YB0+h!~ObCXN zI8feD32QBPb3h&=%nuYT{3$u{M_22T(pAqUA&E3$$w)XmkUARd{q1bnu{Ohl$hJX& zQ&U!2mc#_~59XSDal)Z$FLE20z$P{66=D;GPaez|$22gS&@I%0$F*W^`WFo6MgP}c z%=0`w)^XfTBO;)&r+XghPkLt8?$i-Q(ZU3m9I%Hl>N3Y^B$*>rv51NnxyukIozktx zAsSTut%{^Zkwjoxjpb6H3(*!01-?dtQ~Kpc)=A{%3q&$`2ARq-MTkYm4_0ENOg!s> z>O@1QZ!E4gZNQ+0Bvbk1R8IZ!8ma$oSjMJ!7{iW4dIfxLPLU69PSa_Y*O}N zjXZv9lKt}b01@*r+DF^-@b-EriU}nz)l9%m0IaZdNyrViPJ4wxS*b1(5G6REdW3+nC&lsqjQ=0Zdxbgx??4OQ{XwDCNm@4dM>vXtm_+VdD+ z@qVVoaV*(^qh2cK*2li-Qtdi_L2B&fO5ERr+ikDWiwNF&>2=?7byShHYW6Y9rL)+5 zw`OflO2ayO7nfbAj^hM6el~pwm>jXDnvfL$=^+{w4VDs^App8j-~yJGMsWnOB-yZg zqS$lYfc40p{7SiFzb(FBh!2g;>>I6CD7M5@6tLbmM}Flt^y<@(Un?}1T(pmS0E$*b z&F+QM!Cf65EKb{m6*YJ!%Nkf)i_{o6UJPgLz;m895?;|6i=05y05=|-G>f-TV;D?Q zDw9O^x}H_gag#NGMJe9MjZ`a1I>f6mTN0|+7ZBQg&TbVuzXKcL6d?2kc+&PLoB>&2 zYC$i9P5fIusDBS>K&;=2q0i(Uu^ z4*$NN4mbD!0qafIya)u;(J}Psmb<~a`sy>>@4TeWz;kxHPBg{D{Qmj8;eMX|OOV}_ zN-|S|WW0UuvNi6tuRZn3Mt0n_&^chFG8>hay91?`Js}zuC5n`$G@=NlL4f=Z>K12Ctz@v8@6EIIlK|$rAq9~%<8-E40Re??zQyoqjPXHqfT*}~b zQ=_r7H9?XaZ~NsV4R}cyyIxD4lHJ;u%`m0w4Q()0(|D!NDJpl3_{v*l&0V%n0Ialh zSdAE?g3k&$1THSkBJ3eES4?+3D>y281GU;y14fa0QmA2Ebn!44AM4Uc&t)J?Gql!M0`5Q($x}eRLp0Fes-dLjIB8hUx0wpm{DnBl3AdYtQglyB zxlEK?o)42B000022`~Tv7ui9Y1~F^}TL53NAdJEO)J$iKDwIXj$;sPinmar@KH@82 zra68~3IDr2NGG36UML(LApEWKqU^CHN=Pm9v5BJ4{pPM8Vq_DM!rmw3hbBAfQ5n)$ z{$KCKwG#*yPw2C&{D7%ccAG$XPiFV|lb0hWLD!v4`J0rssbb>j%RTq^F!!Wxzj1~v z+Wh&q`H+p9yi)>9T4E;b!JL-3b+DuZgOZTX{saSMY(}c+=AaLVahrG^wyLM!E6$OcggB=uHYC;cWg+$5^}u!w%}t8Exjp5jYpp<`Coe#a2(oL;IRpvL}y|6Q@)=DsNd0(@&npb zQa@$f9|;*;6@q#R2!Zi{9Qs_=+!bW{-IxF*>XbUxegkHgga^qOnb~6#c3t<-Ux>NU zger~pZ__{!EVmXwX6Ir&92ZS(W1t&F=#JXN95coPL@SK4NOWSTYXUS&jM&<@n%t9Q zP7{ehhwX*<-eyTkBL?PKG)FhTM7?c<7K0sT=^C_Q2bQ{&OSy*{LJ9jRLCdpIIqP@J z>h?o|{;2sQMUx<$O3SNb_X2H!V3|6EU#fqr!qOdrsI^Lj%vSUb(|*YS)(P&(;$Bzz zN*g!ZBRF2vflyo|iRg`6rw2e6;YAJqMWjGo&t3ztrODVlo5JtKy;KCb=&y0&B35=4 z%$!wqf@gujn^aho0vHX1J*p<59MQaH-*Re!%UO^G+JT1aZFS+{$ZDxglTzL#ugumm$9o!LW? zfXWYft%bJMKlZq_@q%hd=)$BSZtcfm+Qk~G$-uF@=-oe^c(6@@-4f|71q@fn;hk4E zGXo1?f$L2nY$eEF)%@1`aNLNIJ2Qa#rgadHD`83=^OjYtG~S=LW>>v7s3owEO(TK} zopURo;8)cjTtBxa*I_#0fQGDFZ4I(a;T)IJq7By)^GCV>Y7ZT){Sc02IJ}`qM~$HX z1w=w%OA51zd7A|Xi*X&|!eq;DvOv;Oa|Bj0OC2oF z#$0D|wJH+6bN|}zCdi6a18B7v4&RQ#wkpEVun!C!Fdrn<^Hk0R-qp0naAb#1DAD-% z*t+Jt>0{O6N3tfyLi#rP!D&r7uc{X~CZ&L689kk5B$(WQs3tP9PL^1`Y5N-EuzXuP zb;QBMFNAHhXA-tm$ey(bJIA3QG8%5PnHljAzvS0Kw~+cpq{OKX9zN|g>!!^=nE1|3 z3KZ!`E2mu6cMP!O;dacJ)Z%j&S)KC??_uZd3W3kr=uYu06Bnru0Z4~jmDPzZu0Mp+Hh2W3TAX$WM&WFUs|J+i;%0;|Z}+_){gSxrklX*L7H zWhWKTv-_rSIsL4UQbFDN8PC)3qpAS&ad}qrV zlDP@Sw$RB1zAgf@_F2B`|CcYcK3N)ke0wZYJVya1cQfypgfg%Vor!*OH^qqMEHIt` z5+w&3^;$S+k}VGS)0UvmE_sW6*qZ_rW@q9~P-ru&;^@hR2E*rWlt*>_&H(|KEgf1Z z1i>Ic1!KxQHc}*H2dI>p;O&NpgxT$?$VGzOWLImPu_G8*Z0nL0E_#k9rl`eFl-FWL z4k-zR&v=DJ1kvpx8c9?T8uO-n{(cwztSuj_orbz*N8?&|##KPd!b7L}_kput?urBa z{ZDLx4&}H8O5{_UwF&RLg3ee%sXMZ)eBfp-EJuNE=-@vo^6iFtZURD>Qb~fbzEYN3 z;e6bPtig2S?EIo zP#@Sme{dvPx0$c|`Hl^5#1$a&K3qZ}2RVYmKZmnqQ|S4b{a)Pd^{=ic0LVm(-M8vw zrdw&^x10!TbsqEpf4krF@;5(%D~bz4XD-*)1&R5(Y)WtJ`z#HnwS?RZDbYDNmwpzT zhq5da3POb>O5(BI3k{XxIK$~nQj)uier0z@itqyyZZQj^fuC(0@<*K44=ts@fB-l| z!R?UWi?bE>Wdls97BiZlQNUtmFdQ@Fzc~l@no8_fnhFD1j$S#PQBse)u9ar7p{V4( zbo8j2cTBCYt`AkGSgrInV?^!~%_EIw;8{O^^X308VRGW1!-+@+RLk)EplG=gyr9Up z%ylKH3bXMJ8#!Z&edQhmmHu*BfnZh($cFq@(V~D}tKzAFmDwu+4GGfjlwA6rMP4Tq zMvps8MEuvT!?0pf$<_XAaS~sNW7?JqekV)@Oz&6YESFNvdKr8zWt6Noxi`aT?)?O- zYU8+NE&-Q0Ykm)KMsl<3AXq(-KQq_;$l3*BAuG_KN2wgN_1%ZR{^F%9MyJ)l91DMx zdeG2qzigt{|ELu{!r zxk(uGubo7omjvrM6h+F_7{<1ehQ}Dxn=Sicu($_|Ku`>0K*@R_o=k z?T&)n(p4!hR4X3j98%q#-)u!fjEP`V2d z1EqN%mDs|gGP_Z^>ZhVB-7NV5JAjD#biB2B<=otlq*-=!EUK~KJ6fNgu>fM8o!-_~ zG^7v-wGL5TD?84Xb6L-okiQ*j&#l9BU?C_*rQ97~81>Wdt2$$A z7dp0sW4It37N?~Z2x=`6kCCO15a{%*i?r@8iN}%V$&071-#%21dq8LDF}dXk19|_L z9~pWQ2;|(Uw-Ck?6@)NGvu62zce01#A09%S_LqkRy@^XMq}_4+SD32xf#Ya-al>%R zae6gPp(wZtLHU5rdaH|1%qAW)nR$Ve4Zi3#Bag;dSc!3ja!fhAFtlqVo5=o`Iq7AW zK_qv@EC?NAG89|Gmw+{X3|CV5@WKF;s`6pzx-pyHt^Nf6Om=g^1S8Ri`1$dDAm$l8 z0qdgIgk5ET{Ib^gmh5LA?EI|z2a4-{x(6Jt4}UWSknrKzbzEUS>B!&Np=y0-T((*( zeH%iyxf$LFC%Ou?Z8Y10v-a61f@GEeO>CxC%H{h|rg##9vLQ8#I+k)v4f=zDg%|I3 zhe6&UI6a0>#Ks&z6X>Q-psRpBv96*tsWNGi2%|;u568My9+NPOv4$4}#0e;X3t!oh z#9M7MTfGVnm4Q}aW~Av^0?#3ATRVAUAEJ33{z0s-r5O3%v{kGMAaie;$kSiCa+V!8 z_i?FZe|(LacxFtrQA@D9R@998DK$L4OrcWgS%mR>b?RXU$~!5h@xjLL@cs@hc&H^t0WMEdq)nvJKF(3TdjU^g%(}w z*V#%ErXO1DM+;s{Cm`g3j4~2+VKnD;3R_tH7d6t=#!md>`N9n?}z+v$i_PmE2IuMI?XsNUrmXv;?us;& zO2^)yzy1_UGx{D6ZBj)sM)qD@?REG)#(r+4Q#1){ZK1li`$&q3m7aTxY)GiC`|{;J zdS0nZNr|;uK8t!?P$hUpZ;)X}y#MZK6-n#m?Yycv9(C9a=gC|rjESUEi|Q?d0~=mp z$kWb%TV>No3qEyG1UCoO)I!6}?q5mAJ&%ggA0lC}*Xx)|n>gYWe^bWQ$15br&cm6B zgBv(xD#nePzLk0f9wr3Z8v!|SbE!Gtw4Q*!v>_SNMYgEmCorHBg}h6d$)#T|%2%5^ zNz#10k5~%pthJur&lc9_!Uj*`EOuskUdO)!MoaP4_>xN3N;-jJqg?sim5uLXs)eN96Q9n;x? zD9eN!?J1w*^UZ<>@Xy?4#Pj&gVzH@4Ps$qOaNb~caOgvVbxc=bl_nZH5(w9?|CM|i9wC93Mg4G4ng))40F9tEZuBO3oBj3WP-+e@S5sL76;!&XS`CaMR|qZDe4Bt>@Z_EsT@`BTmlX|RPAZ9tsMNLFWeNgS`BZsNrWq*4TuqNg!h#z|XcO;}E zs$eqS4imq_S%TJAa9;bHmIxQ~tuMhVC;>HzFuEkTFA_fMs6W3;jVYn#IJ;W6-x@7x zj!v|UIF_vaW_)ipLS!u3DJ;S30L?OVAB=5dzZh_Z+bcPF3$F|zrnKt!k3A|^^Yx5h zuJxS(e80)UwHE6?H3lK=h%2)?=+B}#d#Mhdcr{~t*CB6fx~Xn|gn zdJf0)*_n@;=dajJEqq07lMZekxy=1qZO;Vv1_S<$%Z^$*MSP$jKK4IsdmW_bo5Y;U zjK3Bv4BPaIoaVlc8BtUTvLR+o7BY)88Z9d+%k%I2i*OphN^_8zik`9QEW1L{NaC%tJIdvH{I0E$l!$U4$mAIF~>x{usOOgH*N?I4;E0AxW zd`l{J>qcc3eOD*Lk74+t7at7krM))!b`cB=vr($%$ilC`W`kNnC`n_e3ob4V-++8&UHJCbnGOQ4NG%iua@|FVfb`#hSoVbPlh;rQkHXa7&5OLxE zeaUK0AK*n2&(rHuen`-Tn-}G~017z1Nl?(dMa(+a{W5U5uUs+D#~z-we42*696s#$ z@Hplou1Wd}SAhouBrrw2j<8V$i1}33*r5}?_79^9W*6Be6GAs0*M!ntX&Fo3BFCsc zOrh90<5}VOwh_yv-secO+JR-Ev*&rwa3kJu>|y_2g1@ZtoUv5u(1>;l72vnTtRNl`t zojq$tdta;}M0oe7FQ1N_&`MV>5m; z2Zw+L|t_Qw^5@;iXO|roFF5uH%M0juVdbGr98N@6ed=3C|A~ z@mkwV-x$5;zvX8xHo(^2>&#F}tiv;4J+ym_V}gGZq$1F7R+8&7sl>gYWW-Q~xUa4s zTk#(il(ZQ_m*P)q-CZFwm6Gyfk-V0APwwyViZ@1p|MyMkVwzE!MmaAnz7+vvq>cD+ z-dq4lc=v1tz2f(vjf7z$aqK?IB+We@?TMDcXP_R63DfB1kt_ zV=Q+9-&`b%aVYM%a0vemD!JzPfT{1ekUwbk4>Csy`6$OxZ8+*|Ix=S?8ia1G%oe@!SRGoRjuKoRi9V+6%bjA$JXjJ9J_rcD~Do% zz$d!Y6MjYkKl_egGXt1#fgXn&qbzba^+~v65aQS3tMXT%Vx`(c(zrrWxYSC#&M3+p zpNquoQP`&AcRL{3KDfVoop#LyFulSX%U?nuWI-VeKvCsJBtPaV*osa(->jqQ~6o5yybb;SrYY$7TMg?Cd6YH zqLS@@cbg|s+oMB?Cw5IW>bsY58y7?=j6L8s91gGr$8wbO@Q5w_EBNfr*U_*bO^GDytG7sUuF<1@v7y+c2EYL;-~r!x}Z* zlxf9wn1KYcWHf}U9$`ARReP04^+?HznZrWGUT5NrJYhE_{)9lY+RM%8000022~Yq41#bbK2r04?TOEWK zmvwuQjDE{kVe-=%eyql|F=a9PaH=d#0RCA0SefqdB_ant(|MiraMC7*J^^JHbZ@57 zsZoeVJKwzU)PeElvqc&yEOv3h(+YZ5GwN$m{h~-R-JrIH-8A8#7U+n28!D!8@=-KrI*;nuMptgjR>UBC2;^C_CxP$8C<4$%g7?bT zikXG0vU~z!WB6K>{(q60@!(kc($q1i zV)PeLrBqD7eYzTSv>sb-S%pcbuG`@FWxmKIY{;8h1S#`2CRUJPF~rWR2-xrtH^KPh z0_TGvpHeOl=c#EHfVJYRmv0~5^(tJ(qosZh@HRgj>cB87CTuNT7pfDVHPdk~`6;aq z%Y61&S8P^?di6(>Ec3;1wu6DhkWgl|D`AK3?7wqc!;8|p;^yvkF9`g&C~jy21V(o^ zu_b3wWzrb0-d;kFtj52VJR>?IaN6+L*h)9KS#6;3GINnGh=9X9>aY<#U_-wJG8TW& z$nM|uANRi`0}tJe;br`#5>zy6p^iX;g(234KmMX=X-It~H<4A>T$}V6w^zH~xmk1h zN7UMcb!KX0>uo`G3;qywzgkh##Jsh>Sz=qp<*Vy*TKSwjd!m}i5Ky_s-1(FD4$h3Y{8B4Yi@)YZ;aui{6Gea$XJvz+ z9y=2RYz%6=n6al@JEQug`DnObgQ9q;@UsSmV2U+f#2#7LcY3(+XvJiYx9JuTDr9~n z#3&$2*zpzGXo7@9bw81eu~}q~zzj%+v@^Yya|+iu)CFj)LIvsMcjgR@qL-HH+Q`2B zgM~+|zw|(){%ni)U4ZjEXI21ZfOg}6_t|5Cy{7>1ClMQhX&Wb6d#?xz|Lv=o_qT6s zTmfBll&ydULdp8WfBcFK^noAC7qdZuiuGbCkVAG=3_PuV9X|E zo#7C6JV@;Ee?CvB&l^S$uY)xyEE5&95%6}s{s5zi`mG|{n)b$a@Fyeh|D>M|3@!z) z@nNM&ZA%_rgkdbZ>jXzi)%c~mc=5U8UrNVbA^6P`P=5{ePMONS`~Bt_RT=nrE0U~U zgN-8#RIiMe@m*yMsz)&YpvQrgW3vQc9}pzdB&FVZHy;<;a3f>UvT`4^O&dF3{P{1~ zeNncI@O5H@P@oz{U5LiXwNHUNy^-Lt)kHaXfB*mh0trw600!0po(L_n6I&gYxaHYw zgj(npl`W`sIW2FZXC~Ap&BYq3B)T*MkFY^ul;hZO1y>cXV4xH$2b^>;$tUtwu`{q-xL8-b6R1i>kGgjA=p#SfSa}JVeki z1YUtF%TQ?Mso~sU)qXMBZ$ttu^!MT_>D7!KPs1Sf5iA6_stZ69-{jD_SVwJH&>B`+ zb-cmH*y>XHSumaXFrdqn(;Lt}MfE>lnN0>%Ft=5Wp5k2~%mk%aLt#B-lwc@VQ&6VK zr`{0@3^9ThDEFr4f$on$eT9fTh%5=?Cei&&GW7=n$GxMsq-Fp5ne^rUd~HgxBVWR5 zOkD``Iu z2Fl2&qa|u+>JFTG-(!PZjDt0)Y>*p+gm=vGkc8^~*?HCNe)*7xJ{SS?;;F?;gW?y` zb8G1|h_g$fjaeMu?TnK0yW>56z-pu=RSMWsxm>qw)1MX#h1N#lkln}OA*;=hL%$BX zdhh*rP$;vsawb*?vHEHpON%>vRuPPJN&JSXB1Vgn6r3*@S+L;_09I9pEGJVDg>!m2 z+_yJzKUI$?>yJC#oHlU9bKQ6D52o)AyxM{pND}u$SXnF<;tNV8`?yCdM$fZf4DJCj zZ1E{>Q|HEyZI*R6$ImBOod9O~1^bc7rWSjyI~6+@UALG0v8e@+%L&C)*jmQ$ooq|O zqB32C@Xl;IcPS_0zdyu!pr%eWW66^hUT`araP+7|>7K{*h~-A_rjT1c3!9HgVxdQ- zGG`v6BL9PV9$+)C+49U{5^M`Q%a#C=kpyS|#))MMs-ZoLxRMIxR7k&gSDyn(s6`g^ z+aj}fm}0S#rkAmHHATW!ttXvsa&g-a>3nYV@$Nw;@snk95hJDibS1X-HJBC}w6%*0 z*Uhkwf>z|DMbzB+;4s~LBwJ)<51~Z=c-X+Ff2-g@53nV z-ui;OVJc2S66zayWaDS92gq;R!{R4{P(cCHZO|=-+YwKkkXX(6U3A7gKd;h`xPV`c zH(!sbjD(%j7ipW|XwnNuT+lL#c++oB5AsUM`KU#q=aNqgAhu5!CnfZCasoUmsruTY z9QmeC>M15mr6SB8=LAC}3FSMo+~Y7Ljazw}Jk96lLJ5ZwY<14dkN8pSS zpt5!eVTGibc6*eZv{_+%Jc<-I_6-98RHr7U+iRr9{=rsfpBq-Sh~FSgb|Jg4l~rL5 zNS;pBE`Vv~3fgB3Qj6OkdJ-!+ecrNYBS_;`47I-+`Pgp4%LG+m*}vNWGc_rCFxhwO zopWHL%NSvPvg2Cj4b^xVdT-KabQWPW5C@N$*g?6F9^7 z;sC|KnM;7Ho+9tuAW_oEaTjq9SsJ!DO65DhAvKELI}915^3J*Va4_ z4H!rVl30-Qq<-gWlC3vmA&&Ii^vt^%@70W+C2eqw@-*`=WLYAc4G;jXKXc5cChHUD zE#ykkgKf!`4pk4muh3;~zEaUm*PhI^QJ7uPOB&n=O3W;-A#ELB#flDT1P7(?i;%hgZ#U?C~-%BBNF;Z27^6?kHBLz_g?3;|D0-5rn?AiwdpC#=_0Eb*^ zLSU`1rf(N%7>}H=T7M{THCY;e8(A=8f(^x%w0ZxtU*<%HU@G4 z03lEj?MPakXaF%rmzZ=GkN`2h6*A*YfG2eIhNxeNR4++MqiQQ7>i9s?x&YRQ8-vxf zu_Yg~*i1Vj7at2zevy2xbzM+TAOHXW0tqkx02Nw6ng}=>2g53`d@`#C!z!?RGODY8 z0AE#n`~Uz003j?td9q0r(6P-e>8Gnr4(J1z8r@*gvFU#OIwwC)*1IT_VETjp+JS`l zau~-1%qH^b4pMY46eK_NpOOeu=QI^KUrnnh75z8Qrb>483+pQm^SzA+w6wb8FvO-L z+(bVExfYYazw4D4V5mV1Pf;YndPC~iZJArRzq52n z-?=t4j+l<RDThM&rY>r#X|vEWUK3u)qXo}C(M%{Dr<*syXJU_bVOVZA8!u?pY5c;RKHL_WJmLg2Y(j&~nj-9ysN-ARIxrPwbf)dJN zHFdI;qdz5yrx$RiTG=mGa<;em%ykyWGw%4 zc1hz`H)fJgz0Spip=S(RfHBDt@!s2-fAJvKVm8el9!Dxn;es*(x z#YLNiiglkBj9~)47Ma{f#-ZFtnd4w7q~t`QWi5B>t>}1No2Cp8 zUWA51sU@?oJ4&Fo=a%Y*gb-y3UY|zk!96IseB-wqjmJx^r2~j+!g+XlL%mmaalhr( zI*0^~yX>6#rRhNJ;OJoT+fg^Xe7V9Hy4eo5b^=L1i4MfB4b1MneptU${iIoO9E zjuno!Zi8Lye}WC^H;Gl^{q?H$e@V`&Wx-dw3WRon*ycNQd!>PlDLyq9!=Ma2yt&!uW|!V`9?i7QhXrT zjw&-66s79*7Rj2+Q?8UUK*ZFC4zi~emw-O>;|p29&y*D+>(m34N8#CnE3DMG@%v*1!JRRlb9Kis!#v4zW6k_)odh>Pcx|WMt^DyL1N4 z2D|H6x)2L>B7k3;R-ltqA_|ZheCg7KQabM$3_QUhf**{7%|)2SE8}JZ5&qhpdHQ=? z+2`wxCUrqa+AJmA;I%$B37zrzxa%(vTZo(+>S{izKG+3peDTkNblZgkJ)i8G}KwB?9cO7ddrM5|TZ_XlXwIe1 zr!(?U)W9M%r;uX$+Bei!=X#*5PLHOlJ0A@N{&0ZF%@Kvu7uI4MN}lg~2bXv7IOmM? z+8~6=msU?`PFKelTBUX1%7bFcWXKBis521U_7D3fD{xLrLCcud|*Gwu2MP1X@HN4wRuI~@k=SaM@oixXwWB%F<5 zA9I#1U((J~l#N3^oV)L|Gx?@M@`TZc#WqX~8Jn=CCP>VGYzeiMIce13wd1Lpeyt5i z*;gv~OH?Br!5y+^>7Y+>$+T~+Rs_^U0g*fXy-U6EUT83wd(tg`ML?`;kE^o|GX@gQ zamDUAZbRLgb^rF{Q>iQkn?I@CfLU*)>&-j1FyQsyB9}Mi$fp;!&&b_rx%Y-ppH)!$ z$ZfN=!G3*ywY=VM=U%kk+rHiVy9RPoc7v}tPpnE3-l;+QEM4=SO}M2ub##&6#0QJA ziacV|AdsMs&3_V(0F!gVki`_L2s@24)#ppfhnyy#{OF=(g(Ybz2%LJnXcan-313uH zEYwgljhT&G7y(sQMnvsDE8h~F>JE`xoj|uy`J;6e8+iC8r9kPNT@JA(d0J7K8aptNG8NC^h~i8R{tfB zQ|~2V)8PTUws5jcx{-0Vvl1ePzY;LifDQdtfdenF$Xry`N~+g9H=DiKnj`B_&O5qz z6I@7BuiSyoeFRgqonKG{94dY@JPSce(rk1h&W|&J7*J4(xMG1Y7%G-R`Qv|EPqZ;* zqzcNIWkh1IMnIn=Rh{nxO6xS0AOn=M*N%7lrtmP6#FCOP4KTPPJ4{dUVuyDbR(=tP z)jxbCg(P7lP-ysH(|0@}0^{aZG&zN~ZWM zm1p(b8Kh7LQu5D#K9VmiMj5PfHgTsX{K&R<2k&ln?p&YOIQG!q%>$NqqC5Uyk?Wxq zv6bxau@GGnXG)SV^Tp1sUy&T*(0U!#x_~LT;q}5f3bI9Cxxh3et^+zI{s)>Ot&dY- z6zH<0+fx#pY!~zC{eQ)O==|r?{0TGv>RxYx6M?p>?7q@((cC{Et^9oRVO}3u&TLJ&>fYt zd%bL}FfSsh|DX^Ep)5q9VtdV%5H$nuf!|0X?H1Se&-2kQLxHkjM5sR_l*qV!eH8e5 z!?iDvR}o@);x)mr0Mxc0s}Xp67ZpFUK(JZLW{N@>IBpg^F#y`O2!2W7w79IeBtV~l zeZW{fcvi!?gJidpHBr*z6teR!@a*?QRwn~1ZUSetXPyd|JuXI9+WF{d*m0Yf zos=llOku4s0D)97{pL9H2X2+4w~}en_w!ji&|Nkl-LHc^%ZXN$k9Wm>O~)nrL|CDTDX+Xnx6m)r33^^uF-d}k8ZK5t&u$EB$q*aYA~%_vJz_n zBjeYJvuJ9s1(W0nF>gudn(<1)#Tm?nK$5)LaGpWOP%}V>ww*034d|@Y5z(aVXDjn3 z3bv5vQF;Cd8$#(?8mm0B+MA3jmy$cziA8zcAUjIFP`nC^A*Ex-b~m{M8jhNOsLu+V zcII$0H6S!rHe998_PAWcqm0s`qT(?s5b8oME*misPN@>k+2W%VIbba|x4w9+ z??5_{quYy>crJF95RWn2RhS9-&IJlLQ zoRm*-UPU_^-Mk&8c9P$v;H_QwM+_R#-88;hW|D8%m45xiBWcr-dV!HH}7ka2R3{!yUso> zo?x$+|NmA^wf7Lbp|d|b$+BKoDDefL5jhgGf+Auvr&tjtOP#_5Ot17EF6E?8H`rWb zOR_s{X&D0fFVPS=lh$iQUYZ8(84aX&@SYllBvMwWmFmP~NHC zMJII!5^WvLHu_u4>*g%cZ?!pY!DT2P5k;^=Xw$l&_G=yUG$@sI~_Hk2Ahul#ZyImZ*{TABGFrOGBflj&&3a+G7rsv>FKZ(;v zM@8_La}WkD_$2A=VEwsH6t^x0K!Tr)8LHZpUVCj7sVy1#n}AEJs@J|~V6}7({b0nLtAaZo zle{J>4Uiw<_di*`>r{Thx`yXi1>f%iVd0Dmv9C8&_p~ezaZ#H10soWM)Ecf|pClB| zU$=|)nJw;~6zTmZpsEBM9^62IX@PyA>A|23acI2ka2CGQX{!CAZu7^^3_M{7mG-KX zY7IFf0zi(-QGnfj+QsVbe>LN+1!B&k_wGZyAlBub7XL1|l`CtoXNMgnEM<%#(Ap6b zk^W7Tle#AJ>>_udRuDcU&_GA7$-*)CSPHR^fH=`U5@$a zW`VH=c>9vheq;wzmm4iTUXtHe&T%I1=j#3!?da=v(IbG- z5qQ~WilJH8a1yCa01J>I5TTU+mv7ci+9`R}D5II^{1pL*UO!Wm{Tt7MnDr5f*oi3j zSF1O=215wRzy%I8s>)?xVE1ns#JlpY^y+)i z(Hw@ogc_NE|EPMfu-jeDE`cb-JnrJwG*T(ywAta$KK-{29%u8adA!ZP zDh~QYV49YDf0DKJ&5&GzGy!Oxt_8q~XL%XC zFjj#9+GCPv48w05#_P(!UkL&5&jf z@TF9&6=23U@$pp81eg;eddmDI=$^OH(A$>$2}1l;vZ%nU@+4Opt%mX9t^&A;tdJKM z^AKiP{{v;^v@GHEjCbA;t54IyUASe5btvCNHZG~o*dv2}eS3{>h`2@hG(P$5#UxIz zz{ltn!DE~cWH^EUS*$$cE70#m{Q~@?pbIg;jESu-y}LNYw>d2+ia(5mCrTfOZOZ0( z0Q-E;WV6y-z7XZYbP#0OJm($sgeXUsR2i&~tGvg=X7j>;K091Yn$%gua}CW8-clXS zg73H19!_v5b+MPg00094TgiZVn;3dF^K|m5nx5Ht>5LZm?9ZtPcgWOM_y^)Bt>nRQyfy=LL#>U&!pKMlYoqhw=*fbKj8Sp)HE>nsowK#Q z=JAMMF&U=hb5Tjv~!jnRrmk^00Ie6000L2 z0iFsqvJ+b!X$FZ`_u_P&H_;0^;6N7lhg@4$4Ti}gvo$#}0jfqYK&p1XzT^}s`noS? zVkLV*+qnVpC2t8@knzK@gSz$P!`HpP;?axsR!~{~ljqSzYL!~XxoRf~KErW%ekZUyZrKSCqRmqzUc1nWN5zhI2JuLS zkhmap+EkM7jZ)JR+tGuAq>xb~M+^47u!=>vb zUHI-;hM4h*-Z!Rf-Pn1l_36$k)!%C`32OuzSaX0f_ooc;jhtlC z(#x!atmrfu7HK=_rW5ytyTol5p#7YO_|fpG2f4$f;gc~3Y*{&T>>`c*I;QK8^*6{5 ziu^e+Ch$9>@4;c!sc*l*Vm|H3<)y)v{))AENH!EX=-#3f9K%O zU;m?C-<|d#N2q{ebd?gavSW_|1PqpKIAmssH9bB z7}dk_#V>3^FqR^kGvuM9(ZmK+WjG)CtA(Hr({W?;R2!>=$I0^3=V6GgpXFxU6tNAD(*f@?{S8ISwNt3) zm)>u0g8MxR$xnz+DXmOG0zEy)v#wtwn|MC4xOfOPsMLXMiJ!@6{(T&P-qk$HAJmdw zb`Fe`f}Xp5SOFKO=)^)e4qGZS+G&of01gJ;X z&=2`)skY|cEc~!&4Sc`r)O)iLw{(&yE~7S@ys@FK&3QI56(}c8f2X$!aH&RCPaT}t zV_``J#W-X6(l2gYnfd?c@C~~4*W%D-0Ri{l=qN%^7a!!73RUPV@>Ycl73AGa($+( zmm=Q(ir-$KK$cIOFwepkW3P1s&$ISGYF=)I@WpofE3LT&_2NmF!pnkx(2JdWKsi|- zm7|(G5L?=!l;uXVcCcX}d=`5a#%9Yy{Jl?%Vk@7Rrs5iGxbfH5&fczmJ%?A2t z{!L?@7$;0}PR0b32BgY))TdJwdD9Xo(s+7cCl zJ?27+X0bFBBq}G9m7Y>QE89Pa(tBOJUpz4SSd5FmJ8)!v>SxnuiLHBlDGMdQb5q_g zj8@vO4Fwc=vkP)j`Np;AqT>nyECyzsc(}b_4EDstH0^Ay%W)acs^~5#lts5vp9DZl zXPCj>kOC;qD%n-ua-2aZod;M;^x zp*1Tm@eOo+`gj$yiH(*}FDXx4VM&Qk;}nsKqUC6zB#<6b5jY*g%?|+?^*Rv^s2Y3b+Fo)1@3o=%#NR3Xl)n=#xfLLEwFx@#LBjNZY z>3YnBUMAX=$N4|EU2nA|s`LM*N@U{iPt1qVrs}h9j=4{vB>Ro_{=oWaw)OoUkse7s)!Q3F!>~Ch`-1$BAm() zYSjx!_wxu)T2I`L*ri)QRN6RLI^QFA{L->_6KWq~F ztt}^|@to~EX@-9WNbp#yJ5rJW0006BFaQ7@X+fF_KpO_YK&m7f0XnFVXawq_L7)?= zh^v3Q{0d2UR0@6OA?~;~+63(seyVXE5&nB)Gy5w9pIS?$D$f_5Y!W4|We>s6e=RWb z4P{bQI_Q*UW%rVxZc60*qK5oMfiQS4&|yq|chtcytu?nOhojFpc%+HD8&@<|HMUGc!?F$`9x|VCC!}qtou*f8BNrc64)J?u zD*PYis)E0)%v`7?LB>HMU?9tRL`F|*1uAa0?H?m3Vnjk?lp^_Sujl(eHsdW>q_nEo zmIn&aJd|pIeMmulk;5+=r2qjicErbJU)EM{e4;7A7~FF3_XB*QEhL$jCO9uW|N9B? zFEt^7;b)q(>8U_otkpBSs3}}|ULtEOX4e(tHgfBuhPvNW zKooGhiE)*4O*iPsVfy;U_kiQb_$_4bfVQTRPCmK0;9f=DM zGbky%Unz^o%w7iC3#^wUIO=bUVorKKVpC-zuMr6lC|nSUs?MGjrZBoqEp8<%e8swR znK*cKp@+-Y7isqN*X~GL^1x5MM!9A6V*=o?wK?EtVV-~70z5)WI*k+^Pxlgo#USo> zL()F8g+@C*WmK39$0|qX-Urt@sU&kkj{zO~N-f9J(%H!+$*yB(FaGT-L0gM`bvUSS zeJqJsMhZivNoYeyd9W}H$M=^>&c>0*+7hd1F&&K?&YPC72c0?Yw{BAJ>bp{fHDu_4 zb}&*+G<75d$)W~p)J81{b>%v*pUY^4Kq6ME?xcIRyxQ~LwFR$^z$8ib;WoUOc>%45A_zSB=^G0 zZPOl!Xp;)Cnyv~idXwD7rFe8L5ub7em$5FUAaHIV}~G|Lf$Adl-tgq8V-E(pi8X@F%&;jTm8QOMI)~oLbsvehS2r+m|}i)KH5`I?RyY|1FOcu`LX-( z6*pKjnwz?6JDy>YwmIA-#YWLi?7vPEOz{VAotVJbWV_s*!o%E)*7!GO$)LgF>Cd%w zBJxb}t}Rz|PwwNE$w5zRrI+@ygkZcDvM7WhrgXUFvTP9Qk$d+jQ*HI4SBoBknpmIG zKXw-=6!R*t;Sv3`0nOIEft^xA6`V4_(CpZ|ci||J9pQ;7Ym%usT|CXQ_p88o$TcfU z_ePkojWtD6+K!?!O69x?CVg+@DkF5+@uVqSXTC3sAzx-aK-Ogd3QEC?Jn#?|B^Bm2 z@hB@?9Tdg@4^+Ylx$6xSsP1hHCRSSu^la9ZI}hmD^_)0()6MpYRyLSPZkytK=jJ+P z>H&rHUW|&;_g7j{jQp&82@RyqtLk<f0=9yZSoTQcc&y_WF6;}K2Nr%_xDLWa^iRC08Sx}2_U%uO zPOC`jl-^`8huV*~Ey`Z?&0wcz?5&RQJ8R#qh96+pj8RFcWpl8v&p0#Q-mW?_^7FJ9jmOgZ-w z3hYwJ)}l9N*85kfJ-555)Ha)Y4rNxV{?}F`;iWSwWu_Qt}WdpN3Z@x373Dj%f7s>!>|L!C|s;Sku^xcX34Z^ z#xsM$w87^9OnV~q281$Px=AS*dawU47A$IdUh;Ty<2}%3E-97H|4hYHa(HJ^Ux8Ks z(%YsTR+E4AkyG%MR<9q|S!9OK)gB==PK)$I!fG>5AfRu$|3}U@_X@7sP`~ zF*r}fUM4|($azFm4h&~;IZ0->lwRmviO5*$&wSvWgmLWS%WJ6djA>XxfBwvreQ5`O zrcGG|)7j`9uIAw&=aPZHP8y3SrhaE_W_Xbm?dm@9$}hkkE;1aGl}*7Bc6;W#bfb{F zIHjS?M!5&C+M%rb<7N=-KKIvgHS?m8N=B#S17dscz?8C5WDrj9laL)#%dxu6nsE1m zifsXnBKYUlxhdc~p9td$QH_hS-FZm$u?m<6?*Gb;tNRX>{m$iM0m#vr%){-_Eg(wn zb7DI5q5JdjGUOLel-ambz3TKI7k=>jZ2IA8eOIlx_JPQ!EIm@TGBW z)e!r8)NMZKv5}2zXF269AWQ?+ALGa_~%^(tf%0CsF>VKBmf-%U(I%hX?`HI6m|8y z-B^q>Af=ckTG!bK?{4KHljT8Wr5A=zr^p46ELfg$?u{K>wYJv`<^aB$fDpK^ji@WV z4(Kvse11UvoN34woi+z`H{ybh>6Ym&4jt0r+GP|omaAok^0md&qrq970XNGVGpUPS zG&_>6F!J@-5Ux1GIupT+uA_3O8UHM(BFh-RbJ5Pxf4wd9Ya&ON(miP0)UuwV7Ijrj z&Lnu6a|xP&QKNZUj7C$Ps)E$_DzTHoV}_ID+83T?^1%1bM)#T0q>!6E#b%CIIBLfz z0Ic^Bk7!R0=oif2%Z-aqQ=eAe?47?bim?XKe^2M6Ge7~qC;ji;C{Aq{ZpgJKIaB7@fl~-hV)ca85B6vZV_`0Y$8ns3ZW6T zhG(nmcp>LP5rzPfCJ6~&nzs@gqKNAai1iX)0K>f239ZhKXxAOBa#n zrx3k?9{0pS!%bbges}V3b1MU!neEDG0-ba(D$jJ0yDo1_O%x_7Z&l ziGqQW`Q^bSyg|`E9{ei5?(XQUd|PQgz;$NCadaVv$A1^*#jxrv^_PyAc^&A!?S=Vk z$3MfEsgvfFDT}YCw||?3Oc{hOqY9Bi-vMozGaB-`as98;XfS9pp;P)rYq?7abFLAy zftx86o=X_t`V2aj{!dTue>JLK*!|RlpRv$pDc$ui{;BkebrqWbBon5`j8m(NWaTJy z&yZfIl4i5})lY=ro++YnJ#WPsC{-W)6?mdoWRCo&TDb{b@bclT0c%pGTr{-v-QHPl zZ4l%V~LDe7aLFrK|Lx3RmGHA(6yiVpMIMkbGfpei=CHc5#?*Z z=c-p6uw9#kx_`HHeUcQIPiuq#u&0qtl&BU*uB1-n=yyj}8p;9k?aE>6Ystc7^xMu6m}y-7`5L8)&D@ROEMcp!0TK+-V7a>$?hAdG8}b7fO8nMK3F;+f)+^Yf(O>pRn0W@n?0C|3Gj z^9U}v{w@wEQ-z><2)kbkK2v9@9#3;nh(wrRsiDX-dZ{u6&S6xrq%OJOJ3vskG7&0~ zKnw9hX)kbI_W=s5 z5Cq>2IyDCgD0t{v#m_DyZZ0%3FcK6| zksH+>8zPu3Em%1WA{Hd4zxH4*@D2QkYO2>i$H#bPr?ZPnn2v{8nBcUG@9Z1363?~y z4=!qUy`wV)FM)zPOqN(O4MC`>kJ^?)dVz3mQ2hJCgjmD?Ml#757K)IL?6?peS6IUU zub1~~hdBDpCGSc6QvKm7KfKNU@mER9GD|G> z3oU9B2SNHwamUxN$O$Yt1N*_XqO_$K-7YPR;@&-P!;j0cl>o7XkAsDY-lE+TG2(9? zOU8MR+;nb9NxnGeqrYn_seFCxcMg2sdhzQ&o2D=_Le2cE9(#I7xxa#QJ zpO0^ATxIw2GQln5`2lWx7SREfsRSP)^HTdRgvo7~n%v)eSq>pHoRR3`xLKyY?)xwt zNvESd&jQS~7?oAgC`N1Fvp9`}2794%d}!WotHMNQ(J5Vu)`sB*HBdORSt7||aut~D zYDF_g0e=Z+cx^oaovZrEPFb3pNa~eWAX?idUwbn3YQEYUpdpaiLMh0sdw$Xi%cyH7 zg}cWQcJ@@bcNQu{($8ZIS0`ZOm!(^%?#rd$V+egsysqAjDzrIA8!MUd!mZo#`;igl zMwd?@3wkhF2Aj*+2(8o)$}y6a^TxV3DA{& zq>F#U)(w_<2HBr(&xl%dyX9s&ol@?eZzA|gGqE}k+QM^{S;beduY*)poCIrU-^k~0 zcHO#l54QSBLVkD`5`YL5PkVjnrO_t)IUhb44y_denSIj>9zgu$WHL!dg-Rt|1L;F| zik&B5#j-C81M?uG@Uf&XScQ$0|1=7?j8}NzJEo5PuNyF+U^D_$EHP`UR@bPk`xg~@ z$!o(4su11DVihyGF8%3ddbOn45B`Wmr9PaZJcoNQ?3)u8qK#Egz`3yU3C=OwaZ|XC zwFD)xq5^o=wc$%XdGGDX(A9X}$tyCzX!&HXn*vTw1xqEU@#c?h0DqC+t)73Q!{#>2 z%^lPB;u{Ulk?`tm1azr9&?_a~nALL~xx6schw45hcM3W7Sq(;vJSikFQ4i&=XF8_m zhUzxQ?b+pco8@eRme>&3gmHn+Me*5u3I({JkL9r{ocTY}vIo*>*3`DMnM60p#h=n>`mo ze7EK3z%zb2dy|EQh8M`VMn=M0Y`FJ){6mxa;0d-|5;G(6s~@=5tHBlLMi(kU8hMlR zI(Q;*+2c4yc%S;%*H|480#LwwoY1&)zTrDubv&`!j{-x?y}>0&gw;H--Wcmo$|WD# zvs)e)%bzmH?qqn;D}*nA{-cxuX3mrwjY)<-pr=Fn65Q2W-KO36gk1-xgqE$qP${r? z__5)fYfT4VIMv^7T}Dcx59_8I3pc0eX=e+ie~upgK}>>in0$-E?R-}EmNdgGR(d#Q zhxO@>yf#;IXJq|`0@DjQ$+4ei*Q3vlW+=MvWvGAy``&H^g{sDtumHZW+%{ze@f4kdQl7`oJ8zZzcSDxEMOjMY}2Zl zZZy2MP=RNQ**fwJ^mDV^YK>HA)QXxtT+|^oQmI-~CsW=~@o7lWIwwjgJlCS_O!ns& z2*Egju4CBFss_Vo-t*e`1PYJ$c-LR0NTk59x2=PspoFOcrB^z&Hxt)+3gbJW(=Xp7G$L*D=&rIAy30nV5uzq zFWZI?dLkFrb5ysL2Xr5<4x@O=(min!)7!t%Uf#D{H-on`%{lD=dY)7ML~EcAcnq0M zk#XdnG}pm{UweYg4>x$30UlR7!QimLd8{uK*%o08jPOn%YCD>2p9t{SGLgGxxYJ1I zwY=15jChR9)s2}$3egv0z>GM$6W|{Nq#|_?HGv~qJ>QWM%<4QkNa@B3^g9hz^-=6v zqI4bc{y@`{rn$Si9!s-&?9FYG<^++PMg?UyPO~9eMu;d4<3kvQNb~=ee>)V~k(cMk zd`*Edy;9=ROB5^C5nMv7T?HdPyj5@5ObSKdpp;Zqg2;pQ;YPfl#Z$7A# z8#|FKU`RoD696_H$R;&4q9Rjp00A)PMgdY&_h)wTfB}Jb0KLN7lh7Mo!>%mPDnG2eyuJ|Dcsin3jJhHkjE)}IP#m} zn3%a$aw#SAl_yU%ahQUFNz_;#st@w~yEa2+9L$oK06PZOeBLq7DC;x9lZg;7Ly+qo zZZygV>%A!8W#Z$h<99^vq0Xj`LP>FJp9VpQotKDX=Cl_{wXx?bprI5q~8!s5qGtHKU^#grcq-06?^7k@yK!_uAeXYW5}qoXC5 zPE;*RNu$L;-6oP~Ma@rh8GX|z|BDIpz)c{L>{#c*75F_wi-r|8>Q($h!|PEmTO`eo z<^4ngd#FPzk!gaHawPAP)tvR43nAD5@%##6F#EF%*`M@zS;LvMeXWM;t~*9~u~g8w zb8>UzCij+qPcC3>j;mvICA2p^8=02EG6X_T&R6IBx;R*38?^taWZ&&d+Bp>-QD}hz z)e{cC;<^O&^-MA#zfrx_M9x7b=P<`$o;2e2PJt4)Dvw+f zq7m6DO{uCZ`}ux@`hk3Z>hyBN2dDZ1hm>-qzoMdje=?bWG0V#0T)7Yns68m5aF@l$ z;s5yGKzk`5!)Gi>l~&MfWAFSnm;L}hOpYrcE*tOt>}0t~Bwjq4Zc0FxRXF$1kJz5X zCuYm{0|raE8~?yn^TK)}Lya$v?hYnGf>u=gZ7wW&AdFU+_nwwDYWr06Aj|zHvhe?ISw07F*sB;|8m=Zn}Z1kBo zZ(n`LarGUZyl<+{7q7%2Z-!y%DzEt~Uxo?Cv6`(E+o zVudWC@~H4$EphpYLa1pzuXSuXqgy|<)7|`}1R-K)F7Acv^FDZq!Jh;_nx>RADbXEa zmr>*Iws&(NVwOfvaJ4ygIiHT2*r2F!_IZfHVnAGKeOCIhsziR8!VR(hIZB0DFc`LB zq{~o5pD^6jB*On+Elz_FtY$;UV{gbV9g98q!+}}^RYWX)bT|{tpZ7TN_SU))S+MfX zj+ZNqO2}QwRq2my4w!-{h$hFvfI9QOL6VWq>Ig=~EG=SN^VcARTKe>Fna%*eYm;}U z)d>`&emDLYtyYP!_nN>%Ax=w2CR|z|r!U(hH2q*+Qva07U2k3=IKPey`emEvojF;` zXO49}@+xaqOg~c3tyTS_E#4Ix1lil$+04B(Z`?qH2jHwq6BV9Jdj#MDiUG`0+suk1nTv_rDvk2NQ(>MRx6V4X#t5!B+Jg$kF!G_wlg|o) z|Dn-LAM>Rnx69k-wmQUHlK-{FNDX7|(KZMevN}K?p1}iDq@R`HtJ|md?dr&F-7Sdr zjYx+cw3ZH!Uo9!{dot4=Pb@V$U&1@*)SQS?9uNzE#a^&0OOoJ7L&6=#bCmE!G(ew2 znt9hbiGQa;sq&u=P`$vTHsG^DR-El)vGJwZOM5bI5M^k9$SRH57|sqE`3BEn=6k1sAOtknvGmb24VYE2AScupw*N zgrNjC;je+y35nNE=f@6`+Np{rIHyW6u2F}V>}c|gnLC?cE{>IEDub@EE!{R)16yan zBbwE?e5mz5Ey?ZO%1H&AvS0uJ00Ie6000L50iFy!vJ+eMkI4L@{8SA7gjTf*!F6r_KjDHkUx)T+ z!o$$o?qa0z?$+@cz{({{bFD?n5CMIPjc|t+@nu!OjOHJ>`oxx~IaliW9=Q|$n*AFl zuy%YTCH{=5{Qvq6c4-r?e$Y+e-K@4{yNxgq?L5A1XjS(Lvta>?PI|C^?twhIYsSFy zvRg-7`$zGedL-~q5j-#QbI`IJ)(~VXT$`-HFq}( z$bNfE6){K zsPJNuH#pn4;A6z?I@aRx4yn;TEr%P3%<}SERSis2iCtLx#c#WQK%<^&21iNK1>`D*Iuh5x@3I?V9o8)24r4cEQ~hX}nlLb7 zMG+S7iE%X&6M#u?r2nmjULET5>rCWt-B8b_8GB$pGO$f|M zk>`aUGtu>yT2T2AYd{gQf~AGX@;^F*^=3;AJ=!S-&0d!5x z%cDNnQd@GQICWl}0NEfFGBsgX6ii*4wc4Hd96N?SR&`Lc%J*Dqp7NaZGeoTYYQm5f zD)h=j2}J?tjuPWwJd1$yJ*=86a}g5S-2ke zNG`_JyT*|b)QGR|wH$zOYXX&F4jLNu(-k}$_O&5v}z;=DtziE9`Hza$;w|f zuIpRbr;RGe?LM!_t&B5(R5;FlN^&7{Zbc8xvtP}UwY)YISi_vzQ93Zon;3$`+}oBN zUqpxeQJ8c%t5pdX#VGHGJ0?)5XEEA>$A?sv=IA>*tU<*7x`f;H^oQZ~of6-O9lk;v zEgkxEIRSL_xOHj|w0WFi=|H|_{vrceBs2#si1cCYtDZz@1ymg&?~Uo3VIs8-?5{I( zq^;AA#arw|PM^9}p@YDIsmbLq1yvs?)x?$ndH&0Wv|5}qV?FgJbTxwF*=@<`YMzH~ zj@KOwY4ktG`>rH-ht3k~j>rTx6VW`&M7NmVTc!PqPrbD$GY>QqwXK%qOHW>P_Npc$ zuS)fWTJ*}pi*}iw7O=#5)uhxd0N~~By7K}NhlOQ2oHl1!lu!bBHYK+vLu7E zM%ue>2Ok2=B?qrWT%j0|$SGWFtQag*0_6J&pnSbxV|{;wqZ6Yq$x?Oj<|zOLEtVK! zkyO0YkU?$)tv>V#V_}gh^c)5A?||q4yJ_$Pd+tHF!XwMMMd2cX%FOf4*&|$mc3RbY z0~Ue*_OGRV(zXNJHjAC6&rPs3d?3KMN zGF)^m(SBeHY1}BWvaLwg7C*EC#q8|>Fy?$BC?mMG@!GkUUXfn>+PyvQ2r#hvqut%G zI41b)!L_#j>#(ZnB%xdd^FbqcEjq9@%M z99vdPWUJYPA3GQ`vx<5qw=9rQ4Wi^cUwQq9w>2Xjf%*#&Ih9uC|B5OYd}EkY{lnxo zHHIS)zr1bQaI4k|{W%1lh(jk<{`=KWVWDHGt0O}=ARJYqT|A)0#7VN{X-wm}A$5;Dz-)g+gcm4TnI3?LzsM_MkEgWq! z+;fPbEU$xKSiasQ%hQIIoHf8H1x?A)SbgV|tPrb$ZcIu@c(xV|$4e|s8fnnZ@`V5Z z00Idx000MmL7EImU<$Xp`~lc^N4LxB4U~U5 zUw9|j=#ezDWGWmx-X~0M)Wj}3uw^p#nuKI%?Os1OtbnM9p(%y%5mk>vgK5q2A#I23 zQ01W2K8HX|0LWv_lDGvj*yVej$TR7^2ZNXe^ItB3=s0~Qslq0@}GU?aFl-$1*O(3JwBJiPw&|S@0K@JGD47`8|0C%EWYWWQUa)Wjr!k9`6-(IU5 ztAYEes7Rtd*>}QZJZfZ4F~8(;uatAYyj@xs6#;)W4aY*;={(*!MvvUb@J&kbknBN< zmyYC!9uyKYETw0(N3|Fvk>XuFHGVMuM*Ts{?;XMvEBFAFF6p5>I|Hc|s zr#!n7XcLzvP^10OK}q3&IhhRL>Ub*a>O#TN)j<5Vrz)q7ZCcIlsCz zWP_;n_QG~_gnZE&_vSbHYP>K1n!cASTFJetW8f7%vyoQ%t>6$Jap^@OCMTHKg{JAo zutv6>ytTb{*yz3NNtu`2v~sO7V4)kl*`H*|g1iC(q}`U$+F8`kP9wJYgKqsub>Vh> zHV)UNhf*7Ki5Cvn2~b3|fFA_Km2%bMV2p{hwYvu_@kEDoae`ZAJWCf0U#VHMIku;c zxLju@#OD#}O2(K6K9lvBo z03U#-dl#4OV#=ewVRXBbM`LAT{e%wSf$klI5z=Msy3jvCu1E{2^-FbZhv_$6M(N6-1-aH3r)MP_JVFTju0&r&ZdQZ9tQ%a5wc@TQp_7 zXa^&Mfrz5P2Yanj7`tzY`NKebvYt6ng14A#C1)#;r8*xP7=<&+RRxvsjO1R_#sVxe z^SArN5fh@U3q#(gW7K9d#q;p@{kGmq(XPEs&>X`~_oIb2tngO;lCM7#6)3S>1S0np zi=Qsa`3BEqGcItSlN-j3~opJAu%?4^mlePXi z`R={;)!Y${6Dt)j#Kwt64nCT8Oh=r^G28?nxDfjoTrIa3A$g4N;d^HAYG0!HLREq| zExNS@BA@s6p2^8C{|hp8`Qy-RIE-GJ0p%%1Aj=&L_mhb5zc(P392o)%EVWfV?P}*o z)|MxGO?WkP`9pjnWTy(1>aIjL8IT_;!xtZ_PCZUdp&`Q`1t{*r)p(NB7P6ah=pS#b z161>2=s`_xKP_=??gFf!8;~;!G20TRqJ7|`5mmf%|pWaLGCXgAu#Qv17HJkbD=541tOT4{+f;$Mo0X70({q(|t_KPN^kaBwRjOYTQ zS`@9MYEtkQ=7QnZmAyE&iKb=*-I|tUDqhji!J;A#gv`WZTvGpv`DW>qUJa-ekV5vW z5g=^P_1az~3+;*#lSwsBfzyBK608NIAHb|`VV`p2IwRqhnN5O!+7|j?k?1jERewo1)Pu9GJe~iC?yd_MzOWG?0;gt5ylF5pi&X9NN~AcTIi~f(%{f5RuGbNdd~(KYfMtHXFYTGd8~#`*y0Ww|i(u_^41@@A@xq}! z9pZ=svdW}jy;9~caT=78Q&rK0^Hck*V)lHZgAFgeyTwXOuRNSKuVpqmQMKtdec0dE zb!Fnf3(w#p2NTTJIy3I%(HKFMlvT*LmD6Z(A-TJ+j)zXTEXGYB(XM(y@l&L?t)!_< zO@1?Wv%Uh~#}^Xb?5;=w3X~dvQNV*{PFw!dA&t587JWp-R?a2^P0onDzN$5jd`afqm$!q>ZrQ-;e8FCw6}e)Wfy~2Wy}BKK>W0!M@p~ z@Omfs*Veo)_!Ze++^4!O1s?7yI$EFN#lJ2*vU;dl&fTXKNnp2H*h#N>qc1 zDX^MGhrM*iDzm7$_C3{tJ(8(7McGfzSR${|=iO|B5vMokL^6n~RgMU$X(q_h#ceQx zHh#Wh!LS*w_8hsXdeTRuncfr3*9j;zMK^h3$~TEd6IK?{bO6)@!m=v!WN|54rm(9{ z>gITp_yqYk?bO}Arj4B0v_)pvFRXC_|Db?mDQeK7=MWq1+D;&KwH@_&H+Kk3+tMw^ z_9<`WW40?~1=OeeA4Sj9;TSwa`3OhVaf75;3C>fuDt*7gfU_u-hrbzC<|e>5@zeHs zLaoEzYinNbrCZkQg}OOSK~zUQ2sr;M*Mh8hI~&#`u((x(WYfIt0-+5A*COfKFwz!k z-yUq6(0~OW)5yU?nTf7Vi5LR>*saT>cPV>?m9-f@*9&9u3PTA8!lwf@5lb_HxtU{U znhD!AQEZB9VTdF?N>osTt=QCyinNin=6Bl-F0ZESL^!;m(17sevp@^=m%I4@z?Vblg*8KrtkUDn#-8G{m{FSs-T4`= zWZO;$Lj#v)uR`ngy}RkSlr?Q_GqAT)KFayYh5?fiH*gs>1)UoZxiT||A63`>j2HMx zB&RjvK3LNsE5nYN90 z*<3a{`_9^teH4VKM0r8j)k1Sa#yM2$)-ZM5Z=4%Af9AaMpkl$Gn|?bG;Rv;v*k}D6 z=B5c3o7d{mu<%MZ+2eYN)ssbcE}%2HQ(@(sz#i0}!8|1F+5)oa3H zqIlpnZ;(ayr%?);t4{Qj3qV8Mv>%Sn-7hxGI|(;MY2uduJIXsn!hy`O=-Z9Es0RkE z_2i{YwYn|J;8cGGKa3&{6tmE2-}jEaYowL9k328yAR#WKOZup@a(pEPbqO%qc})6+ zZmZ<>amzW#=5+Bh^WLPkz5{II$_Bv4<(j89%iy!Xf_`Ww+tSvZvKjl>I~a+zKp`4c z1)dU+B!PC`9oV3{FEq8`b5Ku>mjU(M-G5k}cU7CO$l4vKlD}Fr{xbtBf82Z>4{}pFl=Z81CwDHOX z_03@S;tRJtUGiQcmSp7JiKK_phfw=We-_=&q;3{7g1~Aw z^O}ZkYyHmj%!cD3VT-FLK|=D5#@he^L?WWGs3?&l7>)rKCUKID&?qe{g2Baxag@CY z``VgcuLGS-7Zq|X$n}Qcp@4|iMJXwleU@WYPP@I+e#0kWapOaoz*j(oZ8ww2CF7MY z=Ia{z(#pMcn$X!1;hANX(Z<}~wdE<>doFbxV znJH$rV`gS%W{x>##+VsmJI46=J4d>DS5JD)TwCED%0?lxuUwxq}PyYXmkIWH4U+bJt09<7$rk< zUQ?r`$WSt+p#o1N`X_I=?~fBvNg*pccL&_JyYfHJpoBupXf5f2dHsL@_=o_9>rz9` zLrsguwv4?_34H?w*`DcN;MWrR*#e|jQJc|8i>8O$eiy5aIR_`ww4#%Iyz#-vPV&Qj z=Uvx_WW0}Mov ze+gU60i#rG?5$DZJZj5%Id|jWNM6`h8gw5ubLl8aHc)Z5ugtSE>jDjM@qg;4TS$sR zi`YrUA~!;Wg=m4Fin_oBkzt(c{gwx1@H|dAchP;|m!yaHkK~Z5gi@|H=V8`-mP|th z+)!(J(LoEi;ybhXJI$CnbJVq6SO4M}-i`ZhkzKW_+3q!3GgF0?)S=7ep7h6%qe?J8 z%yq}zmG@%SUjy?%7R5D@m+hxj)%Hs`NRnF^zEIredln?q7#jaU3)>1b^7Z2f^34mQ zajxXvX-i^7>ylJs8bm@v3M31K8p=a+aKUj6aW+tUpGK7$oJYU$d|D&Q#Hy7*Ij%ig zp3@DNkH*KLa+{2yL5M3L!&TGvrZi|V+EY?Ey_tP9r!&IS?~q>>zbeX;=TM8c+-r0q z#a4qagz+R_A?&hNHd2v=`gF=jG<- zXC(@!xtbm&T^6%?=q=06;AJKCBxG`MHG2kQmp5j|{R@0%H$T1M z6sYb36n-W6I~^iPi3YMSgrCC0!IZVI!xhRTTdBuOSn9Rlh`X1efvLGNB-AEZ9q>kZ zC9WW~cR(nj{i#9dmln!cSW4?{_dgYWKAU6n?ikd8XlhdCFg=f;7)hmpK(;w58EYq( zx1%~A`4t~!uUvamX!e42jgGpp@;a-dlr+j-)yCK2^K`{VZ_I_kOxZKRMf*4Q0wuA(&;j)_MptT1#pBUhY=n? z>80|;z~i~G_q#a%)KI~E_7_;~E=moLwq+4<%}~8&41u6z5Mb;`P@u!k+*m55jxoy= z)m6e!9Xo8(fFCyBDYDk(F<^XcTx4({-qBp~73iC24ZO3A<%HN=d})hS)RZZ;K2rrA zij|#rz=M1oAarrGH`rUUp7P`d4Q&1R$dA6DNs)(Yi9s?#=Xr$zOAu{*%-n0GdP#og z)^IPOEvIFEaA2n!qT#28`V2`q{J%J+pyb{U6%AzAS`G zbJ(Qc=N+)u&NF+PwRZ;>tjkMya2wr{hJ*;?b4i7_G%atoX95AIJTD zNi@iBlkwBu?4KNE7=$sqRDQRt#^n~39Ymo=8pmef_Ao{T-I%;yYq zS7>8Q=rJI~Puk?SkrNZZRnZLoybr1qYxAcrwd`aG+c2YMEbieL>q`uqkreRV%bYoC5gE_pX)qTGnUUhndoB&SFJ z{&`hGQ$&wxA22Cl@4BAyj~j`{Qq_tl)`iIc6ss>zrebMH8aWokd}QYAohuCc>@q?r zTt2mkitfGFdS$VytHy=e`ZD)n{w!t_2wNc!eEqT-LLO`sTY>bDkp_oKIG6(hWTl%E zqjKdmxi~-m;)5zR`7_S;RMY<~imRPKJu^SG>BfPgTH%ER0IFGFA)vNLQB(i#A;+zjwlB zH!iSJWAae2qMsYz1H-4|V$kl*E7t{L{m*a;^}=|psL_*MI*Nv1q4`KOBhiAt`A}24 zaF|#tsEHoI#)yRD?`2iv(c$TDTS>~IwvCKK7#{{)Jh17R0bReMb@S|^5*bftXAXs* zRaU^IvP2PF9n?-O{wu`lRI%s0_CZbZbB@%N@EXt-gZXB!CtZbNVDcpF6%ivjvj#3q z;nzNlKm8nZ4q*l&9wLt<>WXx78D6C21O>Lt!_uzN^CPb46rzO&!NdG zSQ5=U?Xm0_`z!Dta=ka|D0Gz$Qcn6~9jqlKQ4^$-6cU7Z9q3a!p1x-DFT8m_n{y*( zlaP!%u~(>jOnG;A_Le=ioa=f>i$|e_3GRt&YqE7QJ(hD{ifP`oRAyeC3ZE`h#(WN* zWf&5@!{xr#LKVZ=AX3I0>)bPWvqk(+i2MF~POpkEYb*QmdRyknf@c;w>ltCcb z^`>y7i}8Td{Y(aY|JKP8K@Qfi4*ojNv4ZQ}NorZH9HeJAIA{y1i>q{@_9)g7=TWf-L$F;`#R)^HUgd>Ypss=kpT^3NJT#79%fdW4brtMVK zpd#Gh#tXK&H165;{j>k;0P)%WZxXhE3fjNhxtFDZxgnrsM#EPg_P^4RKSHX8rS%!o zjVA?PJ`x{fC=j~nSI;UJ?DDjXCmjk*&{xaQzS%Hwxud5s*rU@K|Gw0IzEo1koZPm3 zL6FhQIWL5CUwjO03I+l$1q*b5*LYNMai2}+1y z{fqCzFrIYN2w;aSqnxrP9d82N)scxsxtgeRRhhC6P5w(e!c-6r$zB2v1q&J&W;uc0o0(|B2$gz}8X76B@*%QI z+P`|n9|3_BhRMG{Y3;LH+?idj`_Rx^w{TgkTqH-F&QrYYpk{UrdI_C0I2`UBN8Igf zrM>RI%a%&Ezq`%kK7OF95!r zE&5ezNhAvLNFW3N8JtP=6l4@D#hj^rcaeAu9aK8@faFRLe;DJ8_FFQRN{0fA3kpgM zTa2&gPlh-&v}lCPatbLq>5w$?eA6}M3;@?`!T_ob`_CmbU*+!^A zw}ygihL5Jsr#tM&A*fQ5+(e0q+=F#zI2R&RJflzd1YMQocgwSE4F>g9cP|>i59_A_ zRT-81*ioFMh`^%AU}n|8%L2jNjp047 zSTZqsAIz4z#lm%mtATziAP+M$29|#D&L`^-ilIX=s+%NljtF*q-#am0+eLO>J=|fb zOx?90Db-isA!{o0pNyZgLPHH(Oik-m$cigJp8nMYkm|Aj@W3hah_-p&E$ExG7~Ay8 z!}UfEzAa8=4#4jVl{2~Y(jt+{8+F<3CI#$r+}!LCtL*V%tiMe?jV~D1zniMq!{#$R zeOBDuF)V0U5ri?jXSLqr9i-RYZJN_DZH)Q^y4xcSmlZtZ==z9GvbX3+ts`;SPSH%; z`=vcp9Zg(1B2M#XtFL4c-F5VK!1C%pIHnr!QJ!7rf_AEiq!3NL9%~fqB>yCZhW{LXXW!U>s2%pZp zdf1b0i1)9|lSnyZ6o>WpgetUI9!or_GfBlGWMqLczF6pg2TcJauJr6Qi12h9XO418ba0b>NkYv37Mj zjDHb3#d2`?^a68S)^>YJks3C|DvP)?Y50G;9~mlF#9`~jJl1);4yI|rjLNA7pW4Rl z&}N3YOI~AnmI-95#A=}U?mWhuk9XcQ(b5<`R+s38)_F(smdzDymXJEP?VTU#5Z`+J z<~>et&Y0?c7>mY!AkkO$)ww&hWhQlK9`@PBs5Xe|hA8CR66XKUlv#+;6vX3!j19k9 z7XhuOPRl#GqaH~pVw4f|XY?<-YPZk{$f&(XO5OF>Y*dshaCP1sn2+>f%Cmpg$d?Et zEQiCBp}JGWET~O2cNf2TzrH1+BGdB9Yv9WUH-ac?vuf-hqELF13SAxrcAT>U$4TG- z7XWiDRgNl^97fxSmoRwO$G8*lpPRV^N%9|uk+r4Zf(GHD81Q9d{kE?fCciFX7aw_N z#j6zPK~016C2GRe28Z=6oM446RH}CaW?MFQeF=+Y!+M#F7_9?s1MfM|X7R8trV39ZmH9)ST%Qt** z#P72g8ZRFa@6_+1Lq6+gPYU0Ws92qYB@N_K$$ORLs#IHc7cIfF)ep)M)1@pILTO4c zf><;zhx|!!mAL;Sse)G}OpC>90eCpdB)Yiio)hMiWvIe?slVj4Irphed`{Hv7PQaI zAE)t!<>&17hFt*P*A;!QAsU3c8TeJ~#IcYy=gFARQ zoAs+a-Q|3V^x|lr+qMO(N}Vm2l~?74S@w|{9s{Ax^ZTBR1J^8zA(XVFlf*M$y&`6* zvROZ>hKvTBDrE!sE8?h}sjv!pAWTB2QB8w-n0{7_j!S81;sEhEznI~tQ0FELO25U? zL58Nz#xt}M-Gx`DkkouKrEUJ?yzXDB@u#Ra&=Ur`slwhr-1Z|QLG4jY{=eGVf*uk# z>lKF|tZG!mx`vje|5Eb;?*y*4{;DbIiu3;c?kEJ}c|}kk!+}r`7cY(0>Pk#=%CWJv zn{L9;LwKIcW66+6s9q!sx4QU+Qf!QnU>&~8kjHzF^7jl98$cx*V0jmR&4e*&OAO=h z=GO22H_b<34*2ySVK59ufSZtlS8dOnn(Hf2o{uKr)7T>Rn4QX!zc8)l*CXhJ|A^1W zzU9ubWTE07W|v)>abCpgNL{li&(O1PLqR;1rz?MTCZvkjnVmq)5)h zYJ_WtDBbcC2M1znS>X~JHcZ*Q2jk4rb(4~lesOJ+np_nnm9MkjhP1IOvbUhGNbmed zhUvZ_>x``p8y!HDoC}dvkEpz_!)YwRUv1TaRt5wA}#EGhv9m%W5V>uF= zR#E8(i9#vbv**)zYJcyeEVG-5rljaeAjX`EI6AOeTpAaufb*9CslI>oH#->sX@pr{ zIF89`PF1w}5e(Wa=}MVq4o{q4g8%a00)sn>oKj`9#6tka3_v!0wPUHp&RJBifaThp zWBTLiPtXHm2Px~H;sTr{YL=8A9c($a^v zVDUNZSA2v)F$+B`0Ry2%E6#whRS_NCzz%I%;eTEldes`7 zU8y{%PtTaFSV3qvfJmBHEbo5cwsUq0{q3&+d5(qx;_)l^_M5=TX2w{>Cb)45w465$ zCGN6^7=uU~?Z441j%cb(fuRx;;zeMyp}cOTzYAb`N9t8su*9%qborGR-Vyk$Z!)lR zC^5uglCD8{!EZW0KH zeSFbe-#z%%yEV){(-D_p{5JLmX5jOIWqAA)P@k4vN>N#;W~U8Pq!0=Keak(}EkMfy zFHN9gyW+$n{BO~pg&#!@gRqjRrKQ8U92m)9rrjx;Ku*buJYFohS-Jg}q4DAU+6? zJsT01Fyf7QvuJL$O?KsjV29hqa!2C|<}!JwM(qg7F&{N2S#gWAw9!`dm%|1T=@Q00 zV%v4a!gg5@05(RnHlXkECxS!u_csgKuJZ*N$n){!iFg&+-JgVYn5D0)8k`8)=-Vy; zr2o+ceAOTVF^Oa$%75we0J^ZEQ{uEi;dP^Fe#2*feZ`z(;gP977Mn`N{Fp_4YzwB@ zYNsq|7>BwHVkz`4Q@BHGnVur+^{E}XeWHqnqRP{o-76b-^%$R}Sk-H`^1S@`nzzOtQ9c{=qX_Jcq^0JId z{;#4_^q9SdV7d#|TIOI7_W?9>W|$whtzGO4Gz{w&{R-A0wW&-v`JEiAVq0&!l>@_^ z{Y76CGMLpIdwO;?Q+p{!MTj!Y4RK%R^+?8BtC};H_t1~Mj|W8n!}rNs9faD5@^b0p z*vZ=G3bi}i>cDTt$s9^;+)Tf~v^qq8yN8>3%*kXf(1q2I&G3S1C&T(Q1(Yo;lpXt& zhlZBdFFYbVC%f1b@}*Ed9=&Y=Wv)1W=X&>ANGG5prm5zH%N4`M$sgM9Yb2Ax#Uy=A z>`bsm?(+%r+*hlCv_buFP}VZsAy-l@oCFxw=sh<`Qz_8QuuH$2R z`sNM;u(t*I2wlEj)3(51ks;p6x^A4tXg0#5Z973^{-u10UG@S2wxS!|2{rcr6_k7d z2hb;yg{=J_aEv*q(yZezjy#~}6n`=1d`k7aev11CbZ$1aN$duX6o!sh)A#YSj!r982}mV_sr?Yx=FUt8Oa+cEW$H zeU0|1v!8olh2$)75UYHJ?>|y6@LDivBMi!Myos!ZcELVZ#CLVQ@8`RvNZ|CgF^2$gc-=(@hE3vo#jL~pKEaf>M zPp5)DT{4Zpp1k;AI2Qdqf}P(&2--R4aE795H?icu<>s zN5~EXt48F*kC#`@=s8Zc#u4FgR(h0*qRhJ+SE|Tp+b>XF$&Z#JlbhhTX1>)9mA0S8 z@PphaHDdF=sa`^TK(~ZL<=$alF`MQRap?Gf>q{?ra`I9NaCgr`-beeqVEMOL_GUF1 zdtU$+520hupOY1XXYFL9-QvhftndD6Jf$#gr_8y#aoB*-$<5m&n1^c&0TDPg;bO^! zOWfIivT>;4%@~Z@mNT9>*JDN|Pu0>rP_d@HOw6`NBf(4tE zepyEFt(=zd0hu@;1fhc@;fw<hn)k4Uocnc@5c-JtAkJo#hBP0; z-{QjC8QZLK1^h|Zx8fhsV0o|4$brF9HV@QvHB|JU&ypj^(ek?MHfJa<8MgGo4gOVW1KD+g$Dr0R70zb$VW2(dlPSakWqbJwEw+Jj z#d`wD4~cz$qtfXX4+85T!!?YemC!*}-x|8L%i-tKk1}*wYZY%_X4jv$8WZx`QuDtT zF{}y+st_@maVnrxRF;hG|Cqd-l*`uv!^BeHptP5chbcbUNzowG8QPHW5Vq!E9hgB1 zs?6jfqvw(b;@AH>#vv(Jx{u>1%r+1Z3&xkzNFXfG=&9yEe$=*Ht~<6GPN-3#SDa!^ zs`6c1%XGMaSBMtc_w_oFJY#4kWwcX1z$Rl0|4r|>%4}K~mtbe|tRroAl&=USrHp>1 z@P^ZjX*ZKHy058)=`>;mLu;1>cLrR^;MDk$N?xFkm3+`Unk)_<#VWCmMW)2C(t__m zNuUBaTDYwf>ZuuzAr@+x;#D%;aC`Dl7#L^1_Ih7=jiTMni%`iRrO+fF4Sg^5_?r#C z;3{qeRrB?t2f;9ZwO{2OK`4!yp8z9`QMYj$A=)t`Uz{y3Uz1(!sCuqdKKle)c1eKg z-AnY$L%SrhJtA)K`9efbLdAjvp?}|>a%(-j=h8IX+uY$(fqoqF3gi8#pItJeLUK0Nu~-5c~+ocj7U*fT6f$b(<-l+It5YA|?6P|@k(H1*W-@ED zQ15c}5+3?&++;Zxf9Se{?Fy@j(zGeuV8KZEeTPM5%bh`uFieLqGtdAXES!vZC!*!* zb4_0TNLUk1DvNpbN7>c&eWQjIpBp2e5e_)!vE0jcK%X1I_O|j>M85lrhdKVucJSPB zBs&?&-n8J$pF=XEP`jy$4Y|*6_hMPE?D0FP1xb;eh50~1@^Osn7-cF(1FDzhmNUlJ z962cJk((#-pSEKiar%;7QsCp|MiXfTeL{k%H|eO_#{sLf44YWe_!~uDsbZ6_dirH) z7m)?VS+9s*GM^huy!$mlZTeMm#KjwoW|?=UkbMk%Hiz0H^g_)fY@3&86eg8t4#6TZ z#uI%?C#!|VjiN6Dwndju8c)QW1) zw>-IICN3N6>sU&AtYPcuB55nBu<*{qAERb5>q9MRxp0bD^=%vn_Qsf*sZGoi09R1K zSxIf{w&SM!cKj*YUq?O(#7o94Hm*elv`ZnJ80#%6Ipp5lv7~QWti*YT4dvg-5285~ z&qM;#xpkC#%@I;!{}e^fcTN2}T@mG^@h*7OF`|;$wxYomMkisH7X2LvpzrR4(+`9@ zOrz=nt8|myryoXmt$>Lh%TBpg?I8n+ESNM{N$*jV!ryL>>hswT_WxiGz9$-jiq&R8 zVrKk-?2PaTPNwZPBu1$PYARlH`;!Frl1J&I{i7^Y4Cqd{AZgg~@Ry1{CzUU1jhvL_ zUZ`D@14T8pe&0G>cbvvieCx|@5Q7=P7yyVy=}@dR6gZsd=h_mKnc`#fq&bY|jY2~B zE2?y7a|EnRQiiGhBN3Ik<4}rdAB*Ju=Ei>%6Un2(j21{NcV*w^-!(??S+Q5N9%r-+ z)8C4PcDmT=`y3{qFG59~vRWpGuxM;Gl)e=h(F6CBM;@k1_cYeO%U? zl`IrQ(a9pvPo~W3Iif(<$o>ky?$}aDuiwaW{FWZaJe!bmn))MWh^U86mIFd%o0rXD z)gR;7Q(wQg2Pb`zx-MHbEDaKcByNu;3lmJs=*uglmE||Kw$XvRHi2V?-cW-)E3upD zUxM+St%W%6lFq0cYN@m6PHRRP*07nz2!y15w0zaYhRjR5;KIj!uMLuQq#d5WFGZxU zzH36wCAU4Esf+|b4+R2XLYV%GxclHkjY%YkS)a`&m#7g)>Lh}H^9{VC;zwD_kdga` zP?F9Q4V`8|JQ~m7GUhEn%Dcc;zX}_gn?|c8y`G#2-G!I@{lHy!J&(v>;&#^%O?eTP zU6(%ENW`wZp|+bXZQ@r4u*H0Ov|Yrz2|dw??NwBN4>4b67T)hldsC~08lZp117w3I z185z6W_VeQEV7S)uFZPQyv&%Wj3n}!NDTQ7eXT027_T8C&NPpqm=#$X%RX_Nsw`8aw6tdM2bx^ zPoAIBq%!{4`8CbRQ7x}13@mG!Z1g2N-M3R2XfN}}!H@kmP>*3LyFL3Vz9%dYaqpr+ z7vD&=yI7Foq3bvb3CrGqCPnK(qUDLG!eV?50mlg*VN?h%POJ>Ap&tej{QF200LTN- z?U>#!Dx~&Q(HZZsf9^HNg2u%8u@6XDMuZTw!;4i8{L^*ONZ}@YBc&_iyuG;awmL3b zgQs`JqoQ&?TT&0EMl-8d?vT(Dr0Yb_mEv{)>rZWZU;D=6dtaW`XKzXb4gf|2jV#8C zJl83j#+Q^^f>U(OSTUOz>BOlWdQxPsmilJcv!l^HsJ7WgvWO?tDU*c+aiI^^Y2$cxf}+9hTD&T_uXf1{`&ZV}UFyxBEq-ky*BhAHGrIc{%Dh%ty#_@jo!2Ij7X<{9^Ugkh6wC>B`rs$uJzS<#u^ zVDQ?`C6DlbJ8u-7NfE}-2_~XC(6GedIucn;zv;Zme{*bm=9$ylP>0@YI-z3RcHF5H zT@5{3Xc89n#owaf=eUuRvHWKHVA3jFKx@HccK*3-*I&=Ai6_oQp&WlB(*RGc5l8Z? zI?T9=+&x6hN6zcUyv%4IZ>lhH2xWh3`p@bD>_|_qpi=FZeFc9t*nF0dD8%FY^)>;l z!0-!%vs8=Defiz0jvJF`Lvd@w0a%2eD4Z!^?`AtXlR{*`bS63{(k|{j!T?cjvAenS zF|&M9+XZXn{vYy#k|1;5aU)dh$WU;UV900Iarrskbn_9-d+8eZN|s0R-&m;3*Zc6p zpkAsUETG2R=|J_=w4Uak-(~kEmD|<$_I;myTQ)MMdAML~%yZXUTNu5;AEvcH zbSglpA3*&DncT6j%4fEVk@dB^A&w1TG4~w!MJ;J?3}Q}-M5@X+h_Z_40s#P1#Y3z= zzI-L24C5=avO((bQ0F5QW8qTr@C7MJUP4bVWitN=ddSB+(YStQ9EjehSQG3VlNhdH z7q^>%f#d{5{zeBP{IMt~OToO{VIK*u_AEeEnxPYMN40*gVo1loj^r6^Fy7vzQ^2e8 zMj#x^OkBe7Ijf;GqFQ3JFS1eHtV&Qgk)SE6q$t^tA(Uye)wXF<)m&!jAd@ecGF^yb zXmhL{z@G@AJs`$g*H1cP=BXQ4NkdO-4U}7~3;A|qu7*@g_-mO8NkX+0-jlr5q*Y28 z&hD&#moreU2Zdac7FiNs8UP3*UDXx_KORo@7r-~butbf0d}8#lM{wMzC5F780dLzR zy-}LK?4(JY9|3>Cn$7OYx^+a61yPa%jjv2aLyi^IJB45b#i`_{1S=C%SxLW}1 z()77iYh#F5*`@{Vj$PJ0IbdSOtLgS=-oOIA;+pGdyvgK!j0c(+ zb;nFaCAJq67Vw%zE`I;B`1Gj=u_Ei)KVL!|4UEBPRTKcS5u7ZbA#4)81m(i{@T@hX zzuvNKJ2T&GFd6MMK^m@?XJqFCeDo(u4{~3_wZM%;+29HXZCzkT=RW#@siQ%UqPLK^c0t^>w~YH>{ZoH2B4Z z$vO&YO9b5&-?h2Ho9(;*xT7NUNleDzBF*cSK-owJA8jUc=yo=J>781!W7uD~*N+yI zK3M{k%tJZCj2doneBn2tvKn_$NgFmgMvql1apA_nMNuYEMW#OMksWgrRdKhIAgf5Hh_*hoSjNyhI3ZmDoD$jRAd)7`=3o;ULlA1YT;cB>UF}Vg1*Nf(3 zUUi=TQ{CrFjgmHh|9%tm9RdL}mNjnf79VdEp+&W`xOe%@LqPDB`wuOfvBVbkBH&10 z=@#Mr3oUqGh}671T``eo`e0A^Tn%zi-tL(eKO9?u>POMLIZ`9@PSeA->ILUxmmR4$ z1e%Ywg|~J+kD6KO6J}M;m*p_JU`M`|W7K3SS(=C18i^1K(9M&9BZIAVK-#9aN1$5n}vOSOQhfVk9rV+s-hn{ny}%u!lv>r=(JV3Dc3pGbzQ%7Fz{ zDbhKSK_mc~6u=xNW_qz^1A6f4E;QYWI)oC@uBR-b_o=exxP^;}Ml|_4Fro^AXiovH zglTxbNhClwr;Qh5+hZI6iLlvsYlh;i{sTIQ7PZIUzSX{GqgG$DqvxQIZghWKwIs_~ zDtHP`-Jz7kLm6gMw;Gcnm4jofA!H){0cu9)33$6?T*i~n1g!LH?WZDRaPQ$4{J|h^+c=ivp489V z2OFvL;8M0F4d$zzFjg@-$C$5L6jnABM~6G>jZ;4YFD)Yl^FrQ2aty{(k1)fNCQf0w zCf8%~IS*xpUAyiv{N!o74iSUCEg#d$0vV8>qE>&HslMk7X8~buHVnt zR=yDO4o#B|y?&8^ZbVHxq6@BPZ`Xhc4b^bwQaAv7p+S?`=b{ve>U0*MGPrrJhBj0H>Z92pLcdo?$K)Eh-S)Nb+Fm&h==8GR44Mzjnt}B}O11Q?iuI zqVP*&N3h*>%03Le^uB)AKox&)#zAn^CEID+{;hE1){9f()G9rwC>a+3D1mfGM{dhn zZ0h&^G4r*;RR8FL9aoJOf#5Q#r64ztfeSw31pr7l1nH>sU8ZvnbOQ4T$VCzO;`xY% zM_&%JP2_5-m;|RhX1S@1a(z~GQ?FSmv2iKKj}4tv_1!{2&+@4d^sM8`*0lgP%nT|e z&O^cGe2e3F>wTrE83EtN$NF%biE;Hzd~s^a&Ofx&7bVuTou-sHB1tgo<_P3ZldYU%OsXNLp4tIV+0*`;HTo&2X!sQ3s?xjV_@C)g5`$KKrik@93ZQ74$#M(CX z??TZqN>~$H9bbH?_@c=Hr9jq{QxlvF#1^3Hka`RyVmi$n00`PI@ApjK+kn>#8@LkV zR6cohXq}W>0e$7*g%djrKn9nQE%1tne>2G5ec<+l%AS@EU6_j8QfL8Hc;NilGyetI z?^-u2*(fd2D-Hlq{mS_A4odHXU$Ii!HiSjuh^#F+*FqSr6=o5%h*NGs0=KvWh+IOm zl{zC(t|~h%&?g!r7!WJWz*W68Jm%|Dt(-F?FZk{wrm}@+vJ%q<@#|&T8(20LGFfoSy-OB zR5a&&tPVgP}D%&ZH1sLX&$WR+|)g3NTn7l&LGi+YLw`^tXvg z_wc&Y6JL&)eY>H4bHspH*`*bE2Id$3lcBB4%A2DN?P9z*n7O(4CuF`%-p>Q4EOxP# z!;RiR^5ll*wt;P{_s4|_vK-JvyuJ}D{hAb?pPzG}swpXx#4u=8Y#6t*BzW*30M?fT zLp1xbi}!%cqnxVag~=ggaO|3|g>8I1{3vF<7z5(ZWA@3;G;_E|_7lXR>O6s2FCGyo zIC7INAIhvw&$zgA`q+kb+F5Tv%IA_Tk>h4XCXv zT)cDL*@(?G2ah(*LzU@MUkD{gLk%}7T%%4zy$Yf4a|_e01p$O98YDvm8baYPIVl6I zQHsxIQu>`$o9OHaO;89cl%A__D0gUutA!uJ=iN)yHeUkP@N-juxTj^E-MDCJg;6G$ZCht+iu5PZ-`jVMOjXz<6b zYBQ&N#etlC!D^4w0H>wdfCM?0R~DDiD6w$jji!4xLU8$Mw{hWng;P~q45sTS}K>+^_3Cr(GrMHLL{MtP13Y)h`oIbC~-=7FEICirVebZp8sgmItj4 z-ETAVmA4jB3pdJ|o-nmS`oGXQ_a9*sJ_Th$9=b=q6E6cQ7Kgu1 zn4pK2sib(~sutWN1^J()Ci+ef*2n&kk*)f@pP<-<`Psq~25V68fPXZ>pC?UxMSxU( z;XdWAYflPro@fhV#~j1?9aNkKPK)2rdKN$E1V5v*AZBiz>Lw@>-S-zH7e+2-`&AR8 zx{=EEEs?j0(s{-Zq5QcvqIA8~`|i4*@29A0FN4>D4W(Sv)-loakMF7uJwZ@;6>9`RW3ZHY$&Q3uf{I| zD*h`J#XuOuG{Fd@?NXk!l5C(yfFGp9yZ`9-6zG4P-hBrr2jQ9G8@QddzW$j?f*#9X zey(fh%Jf!zI`(5F8O@(z1^!e=>=;Fz2|g+t)?d#;6R7`(4vJPekk>yC^zg`4iiF2y zzOrmteqlPY2e7YYCs{iOoJ`8Jd*#Oc9v^YhhRBoW^0pb5dS?IWn%EU~7Jb_@MjaVl zL7eJ1YIchVIW84BE@{MCKr5`fKo1A&uyAsAOFm5Of=ApWY0AaQl>F4)i$bgA?JpaU zlat|oultvX>H_9Ak2c4_TV20Xe_F>`hqs=wJKc0V>tfxxE;HLKzwff0pwzn8?w1;h z{Y`wDRmxLNpmRx@d2U|1OS|X{9V&IFx6K)L5ikYK^FQpt{6{bn0`nj-$`l;`qY08A6BZ~&6Wt3FwWmS{QU`&i>8Z(dk1 z|1gJ1AwLrHe)pki9JfBJfmI-biHT-1#I7*Xw``$;3VHM~d-XBB?aE78e@fIjTAPOT zeoPtw*W|BL7P>elI9C=APt_f$JsVNN*-hfJeivvv&ERfkpv8c?DcLrdI)h+YmoL{w_KkmAF1aSKR>|)F%m`FHETq$kV&@0_Skuy%pL7pxcyq0&N7Vj zFmw>kZZcH{uz%o(tN=}sU|3Tz1MV-sosfT~@BfB4*8~>ZOWMxyING|uFIpU^vLTg> zCaN$R2oz+3ld)iHK3pj|K`T|fQn?nOlo$~JMie&HT?IVW-q$uw25i%r$-uWJcqwW+Gv545fZOGa5=(FDI2cP` z5_7GDF%RZOD7qufwO08R$yr-3(|yPz zzl3gIGv^;@qRO+LwHx=>s_CFP^NgxW!Xs2CqFOs{LY5}-EeD_=kc7&ncGTeHZ5vl$ z)BGfL`K*obP>_moyUkWgXGT6}j~v5L(|AK$r!jJ2Mbi6jdU7^i13 zyeB#udbLT09O0KS>`Tt&x&C5^-Ge@H!Un8{un`zxM_%5;CCm_r>hgXZXKMw$CGT|c5HyH3OMy&UQZtFqd8d?1e| z&gsy4kev>6Vh7!p8Ue2lmX#BLiD1Q87`y;&uoHE&lenA741EL|5m6i;D1`4{MPN!9nhZXp4hGKdrYR_?8v1gC*7-E{1EhH<(5hPP4RTPi3aB zNEu-=%assR8jn^oGTYq*wZ?v7UWvRAj0aZ~NOQcby07Pdv<9X47k0vB2>X*A(MzuE zwjFy608R;arcjVW-PFZLfVfUm4g{xaDqbFZ3;}mxiGsPG6XCLEzV^0K6yqA?i;33wvkySHhic_bVUs1u)K;anair}ha z92-8O@m}dWWC~gZE_nl=`796K*k0UO@=!6U^l_d~OkiVrJIP&z#Pjzv=#B%xw_#i4 z0L*L`cPZT9!PFT+BBEQnzr;O?OggpAHbq6s7+euW8B-66H1jr~3er&ujUU_f?%kL% zioP^00_U5f%Vs;r=kFh|+A95C(hWe4wf|KCKnuVe2*UqeNs{x*0LV4k=YOvnrf6bG z;AmY&Sf<^_M+%J*FFCJtjUI7Jt1>9>j%k@V*!FV+UK}u33kSYVE8WV)^)Z>Kz`eNp^(#kqsS)y8G<7geDASOfFhhg?h@^Vl{mlDn-(|3C@QwWVzYNTmVL4(h{ z1OevY!ZdQ%AWfU%(Gfi+D&Z(U?$`4FS6(3QU(8AWhdH$x)kK*t)Ws4;eOhhji8VZW zajjd3>pCIfMmo@zfJQ#*LjkoegA~hLR-3dNpB_{urG*7j(sT?M-=06iQW*k1SWADn zLxozZ%r~4|NFvW&qGS&r)iSA^52A7OVSLmBclWx1SD2pZx<%q9hKQ<5*)c|P?y+qK z1#f#2=-kcb{`T9!u-eynqTn+QMFbx1)8hzreF@c+Ex;u*)tX-uAsm&!#9UihPXBgJ zF8FZ{pGwG~{xf8@Ez(n0x0e1+I3`^s!zGO}LqJnY@+b@a)x_J|!nlmXKu9mWdJ9lK zvWCs9IYt}0AD>Cogw9i&p9o2Zc8CO#B_aww)QeS0wJq~*^IG;6dQnitvHcrP92C-8 zMW9DD**T|rwc?*Ic&S{>ZmE6MZuNl0d(dl= zm`E|teHGs55#673h+g3`g?L7fF+JWjAl0%lZ|18Oi8%6hB`ik>Z13=%Dpx{q-uBtp zVnL@>JHo9}Ez0h-f7efAHt9PM-TvW_?{kLyVC@LnxD>m_}*$Qo| zI2kf4evQQho5$D!YYo`ihx%M(4Uc9#3k8Ftpd-CP-8TqdelaBbGEGvqt<;=)HVUJU z>S7mZ4Ah(;1b>kV|7U7&>j-tDa^JDT7u#}U8`(hTEe5H*xOm~KYD$WtF7m$cH*Tg2HcOuM60A%9JQ177(7+7 z#;C+s2M+EwvQo$NW^t77cAkUyzpYtTf)Ol#@H7Oi^Q$>60yZT9Gi}qyklT@D_l65` zegpRk^c<4Mrm3n13TBbdVgv1WG>G%PQ*$VA-{3*-K>$w$Oy`V2an(Ep@M6+=b{a9o3*-7+QZ?@w zDL34<%Ja1ie=7_(;ofd!W>-(=P5(v?9(CH_1^ogTiz&#h5_PN+dO zf_Ou0CYJ76GO(G}yxiAG0>Dj~2^XL?1RAvGuq=7jv^M&`G^=E2WWiN%qB8o#4ycIv zkngjpWGD)|yXBtP9e;|Rf8yNcShKs6@}6qCExs_#%oE*6aRhg@*ZBG*Kmvb>26N=R z6OAllA?^sqKwYvHVlja)l?~okk~*`GJ_mqUk?I7<7(~p*7ING*CrqBzNZpR)@9H5I z|BQUg4ec`fkcUNeckh5=j0QYKy}0bMy$-i7<3r*$aZ7GLFqxO>V%W&#^535)W}@(_ zTHl+5qm&i1LH)p15=$ENjK0D1Q*4%r2Ty&KI+y1IqxrlJU#S~}dxbGnD22#;y#~LM zHoX#tcNQI(y(~nSc|X$UdF3Ciks2mb;(jfLE>pR0A|7NH0mI!Kjkd;VNYDhpj5YZa zCBpqH86&<7+1R_3kP_+}`OI^ck!SB@JL&T?FeDSeoN$t!6Nu@GF?um_ggXwzH%t?4 za&<{VwY4YJDGT2SBrXIs8CvJY`vb`M;|)M5hjTBWF#>j78Uo_ujgBWJNCY!SAUYmaLV&@Nqr%!b)&KUo|!buFaSkrA&cQD#` zc`iINiz9S8BCaX~y|Cz=9jr3ev9yza)ZtPNYw)+ z4uzyjly31^`MTG{I~h>RVtg0N%!}gjpyLHq-htpkF{xq+1~WsP!_5UaS*2S{z%mPV z=b$mGHvH$q43qluOo@xDI-7I0ac$$SOi=7IHPdT;OWnRYU5Ip}VSuJ81X{ zHMznpa)P`a9xGSd@A5uBK=vARK!T8x^cAI1fwTTBEL|4A^?;JlP=P)E(C1rY02J4R zG7ZUid`JAVMVzTpx3jSIFVmKUb@Xm%Z@XTOgst=@9fO?=My{o%(TQ93lt*Oyu38U=K1i$Kgtf546FPD z;yXV{@BT5|q+@^i6ZVLGcf)^Z=5VD|lUYnKdFOS(y#r;;8yU8hc}^dNNd7KdcW9nf zg(CGgd%tEXGtwshK$O|&lGwWfqTkq;SNPDr5^ndYG5uZQVf;!iwbl&n`hHDMR?1)( zd8_zwWYRUKQGw;hS}UvR*TyCUNPuN;1;tw&$dU8f**d{~Z}qUd1%;APLrniH&{R)k zeRA=gpWq(`+1J+f2|NhAlGJd4m5R-deMzPAzIpIVIBjeoP>P_KAoT2HYc%?C%kbdm zm9UEhm`Ix+zvz2>;T^PTEoKZ&X<@46Ru17uW*Wf%rrW;zO3b%afdK))Y#9o6jr9q?MN;(#RTD0AHX{(Yrb{v$Kl=o5ryQe~6Cab0M z!onw6`Rs5g*5Aj=X`^@?P50RxLJVIZo4Cd`fCD9(y9E)eTb zO2%u{1SaG8>h?IgLbaJ68#~4-Nl^01N)M~(ank$Q;I@!#_?NUL(a>P)TXcktyHDTw zVv48`UEF*mluV^1*djyk_-u$oE8Eu&z@Ep)h+85oxyix135T|R2P?@VDxKSnxDUH` z3p>p5lG?g}JKk3|MZ2cUnj=NifcvhcMUTOrWa<16JS{sQ*{r*BK!`AXS?e{~GBsU% z*LZaq_q-_etYpGVJ}b$?UO470^ER?mIhiVPh|V=PI_HB{$3)zI{t_0DOVC%b0F83N zIWiUNy%&6k8}8E(W(jF%h#vh==oe&y%Q_F+mPo^dlMTRLa#(q1`6<7_Pn{E!>k*($e&qw6gOl3m8dQoa8G;wrmZlDMl007Hx zvCKRcvf&sRax++Z-Ju@{?Ef2+$^TNtw%-q$@qY~m;F+ZO{!ZUhXO@C8@)yxVV=`G& zSsvVquS}&;3d>)B2u@q}^9U`U#AxT;_z#G0D(;iq4$TKFO(G_z7-7KvyXY`qy9B%E zDyroBtE;TFv5&0qwAX`){+LJW+&6jyuh0R>#TV3u-m`Qf*u{i@;C&t&e3+T)y0B0= zY>413_|?6`?PwUXMI=|_Z^4}H%wkO8I$_4q5txS^vgNu|%-IZ6h3{O5{Y>-I!`vR~ zh9*-T)(7B`JQNE#{3ax+g8gUe)Mns$WLc9{D`?98X+xW}@1?8@z6Z_B5{))j7=JAo zgAu~7FVx+q7IQNa#z!Xk1yY0EzbbAxD1 zO({*_-l`f|BASx@0h*XG=g@S1F|bWcWZdikKuHgvRpcCMZ#x z7(Ae4n84Z5@i@0dD07@^l`CJ*Ca#VvVl{A)sFjn_Gu(lXIc>%lp$n5opX7~H9EKAQ zqU5Zd1nW~(grvSit3ksDBB#`g$5@=X<=-sy)00CiOh4S;HNrof0%4+0&QXf_?zYweL+g*Xd_Ekoa$Y3~F=ke#OQ(~= z0528%*P(RZnlUn{JnXB5i3hyO&53UH{o5gWtZIdRDT z{)y**lD_uLg5v%lWx(n=vGVw9nKQRko|*EMU1K;cF#(I1)6WS08;drU zO%nJ4lziRW^v+4SXXrxC|B5VEwo z@N=J!>1W8}2yS@{G)sw4QM~`JBp}t9_~|8b`_mvyS@XC#%};QKrOSW4Xkale5+`vg zzT>WS28%CSUZ%iSgS@QtUi@ZH^Zbw5txy5OMs4;@wVzT&eGL3;QypL(D$Q9yW`K2} z2q)Vz{D{J_=534bg#rA##Cpp6w6qz_@{>Gj=>&(1!Bx8hYXna({~s$%j44fuSZ=r> z3I@Tc#OwXV&+hW)z5rAm3U7-C6U6Tn;(NA?V5L7dpKiuBNF;%qMQqCZ3l+SQL! z9lfmWO*O(~Cnx?vIy zbz*BICnrOtLpsWJx7&qh4` z{c}HqM}BvKG1@}1R{T-8130Z&fsa=AYcmD=c2WCKOpg~2>LQ2O9OXiY5SS51E?RL}mGu`S_15Z~8}jF!K>KF(vM^ z+4&t|Cm8F>Cfc+8EXnf?s2;QR-1<%9K|7}0o&*@Ite?PAe%a7Qfo-HuJIThgP|5;; zw~^`3`nmOOg`KVX2XodjRxU0xdCh0wS*L`aRV@I2+AWM90Yah9Y>VK)l;+vHi{M{x zUzm|zRu+=3Gc&^__$KT)GiUIY)4x+)sQ9S><+xXm1Nu>WeZo;`A?GG>OBShnvJX|2 z4vpUmx(DMeKIJK%C7pr|&0PBbeO45dHyoukDGXq}rs5{f(!`#7I z`!LJqx>*aleA-7)mz=b>LCXrai4Geq$C*O-@M>=_846Zjx^V{7&Q}&ajAuU2=mYXh z!Q)L0@V$atvX6)8OYM&s)xB=xk95^Cv9O3#E#5Nt2F%3?4f#I6&9v5>U zU}r{minXavz*z?#$wBoSngv(>{nI*4NKBzfC}^_b1V+2Eaxx(Xiv?M4L=%L~+9w?F zOZ|LVCcQ?Wi7xEDbvC%n_jOT-H->#xqaw|()0YsGT4zMw#>N*N-?NObvKqVrMIIAf z(2~G1B4V9~<&~9)QY&^lC8DL}^3zoU$tkaibxpMoNr}`jzVRJXJ9h1OVSZHu=uvLB?VAp)0B}FU zGzljV_^{kE60aT{pGaTK;AS9J_ZpYpJ|*z3?%$3MIH8f{(u2v*k6^eF4Y?N>gsQ+) z#anL&n-UvjFt%yfniLY3waMgwwcLuuihpqXS7@r1+_CYPwcD7MwYH5n^7LZzuaCac z$C)fy<14z|Su@*G+10DBx>|TStqz^{%Z+f40<>UWfDZh^9%8UUG2t|*7o*>_{{0G_ zs9#lM#J34>-CmLYhHie=wR>#NIY-S5c}hK zb6E{wi2l`1kL4ZJSSRBXjd-a$ZY=ZdQ*uG8aY%l{B-fVA>_S9M>d3(sn9Yklk25(; z0*w;pwSu@UHhxoSg$*a1-8NrX5>Q`oIHf!-N3{gczr_q)K`7M~t_=sR!3B;6v|@Iz z>EOMg{EWkUo*tn!9z)5?yJhq%IHMnPK*Lz+Cxr^r;^70?(Iu1vHYFZV&6*Cmnc%F4 zJ3&WKBQYRNMCWp7?~rDKNr!FS#Pm9|^pXG|oyVzT!T^q=r`T!3F zw6JtWWuKR_*~#7ED&43Pxf3a~eAy%`4kwH0h}8ozMoU% zeYA671d+bpr@a##XD2La9~!`P_&s01-E+Ud4T%Ffm*(*bAhSfDZL_fi2*4HqQe4M| z=~n9&+#`x|fwE4lDgu@N`vrfgG|ZVm2GoDKXutE;16k?_ z`6%~8>hB&p6r)sl^!$h6QQ1CrJ46InndWFhOfk=b@85Gij~R4#s4xSV*7RqawMv%QZ*2YyAIYfTmMvrqgn1xAxge&K<%KlYcKSTU8-j2!Yi1oja;xq{^$ zZJRI7iM(w}I(|XP2n-0$sE4ET5Hv0F%LE{&M8cY;`7fA;VltGU7oOLa7MWV@uCquy z*AWgDm?n00MDrIDIjj0VUd)iwU~Bu&biIMTKH9w?;AjLPE13#xg<(1kFO~Qg5k`(! zH*`fC8u-O=e_4Z=P8xW!SPYNgHXQO%)&Z6+>x@fj2OQv31QdIzr}J7HHC6R^vAX%< zan;4U#9q7+(gdT3_?7S7`yNFJ9H02QyB|5g5cqIzP~&sB4&JNt-v65Ev?=p$5SJxY zCnMon%q_nHFia|3mRRQ&okbzXkWa(W=+Ub1?B~m2h3R8m%#K_$dynbY-&Ig)7@auT ze$t?SUzB!DtaSX~(VtzhpjLt?9Ih4sxBrnbL}cdJA08hTY)aT=F%*LgwM7D$!Km_= z!#n#M)hb-~>`~GVK4SM*&pIQkhaK`k{nZw8LHNA{P6t1i4;!pA91>wd?#)zAk2{5b zOH|wD+v~*U*TQ>!PQXc7#QaUYrdn-hLTnfP>$52PA$w9jSOrvmush}j5tX=U<^1?! z%O38_CSpVb_RIF-^$5-8sZ5=M8T%%9%=dY^iTJ=!HsPrSZp4P#B@7A7xcMSE_buz7 zNdaOGy-U^|f2H~~Mke*)kuc+Gh9^D@5;qeSP*>`T*Dn91$0{UJ3UR^qz_VRR)mL`s zoJC{{5#!h^g~&oK%QVSoVICViC185zRrc_G7ZP20%rb3e02(Ry9cGU4;l7A-PW5*@ z(BGL)FzZ3{MWS$7)7|yTHUxlaneF#N9QZ-@mVMFwJ^d-1iibc{@3)$34e5Sk>$c#_ zza3KUn{+ek>i=uZdyhc{pa_^I1nCuHV)(l@jGXT^EPo|{O~ye5@rDyhT!2~|HdVUs zMVR{ch)u!@g0)vst^81sXXx)96pS9*4uP&}mWWqGf*ml-Wb zE0G^?s#mbx>Zz02~`ZODs7^o;V^?=q!F{>`5#ugprp6tZQ00h!NM9#E69J;;iVz%oEo z`Py{IaZ&BzClFAfj&egJB?9DGo@%abOc~8@y5EQBPte7>)<>8?n8O~+GSqnhfQH~27$iwk4z0tHhN=Y*8k-wZ zqndX|i^1?>JNd-w`xK|s0G*Q*Xk^%C;h4DEYJuhRUFB%DLjDCt;;=CP|GO ziJ>rfuBodU|LW{zqg&3-MzRW(^87UxVPb?GCnR^tZeC=ch2G8ad~=-ltGD+_eeuqL zC2h__WCUnjn;KqQ6`(5I=sT8roISE9C3r)~iZ?WWyf(&lp_f2jOXKIbb$b*IQ=gJD zGU7(;Eu*J^yf1F`+_o`k=g)02d73mZG?T!jwO%Bc>D%L1!+d^J?YJ?bQmtP$?FEmn zW;GUlY~9O#oVkg7eRz?CYg-l5wa|@Wppok4EaPBaN9$ON(xb74hMOE1;kBbJfV`13 z58g)T-EV+BWD`&amNvm-(S6P607k&dpwk99Bi8N;Ct(EX3RbOal8t<^xoKQgD18}U zdRzR$;O!jj<>=+osuJ&lcUq`GdU%w-0^5-2Vs= z=6+n(J$eDq`?vH3HwJc!LwU2i31_=Zg_@s_#q_M5nsiOGsb>76XWa=V1!}ozUGJJ5 zdLWjB?#a}%hfc`xI@jesp&d5)HA=7cXlMSL-1{sVo->m6x$Bss3^pSCIXBIa_jZI= zpwBduWyI48bATJj@PesJi?Lg1yfAwV$l;{E%?(>Rc_#;U%Q#1KsQ+HFT}i^FqslL3 z1`qAx95Qw?2;=#yN>4VTPNxErSVd~8yKsuYMNbRpI-Eu?} znbXs(_NMzsP*fRSguPES{jA7q!51S=%{nu+7R4yFnHLP{*=mCJjV%Fsvb9-ou#Ncd z35_}8(vFK2Cgw5g7PK)KcMd8t<>2Ltsf?<5Sb>I@4YFMR@=O;RKU=E^Ra7=ASULlu z-_wt^!pFI0wm(~!eKS*LE+Kje=gS&BCnlWNY)SCrnIV!+B|-ggIYojBr~1NCntOJjw{pK!AEs8Cz+ej}oAeH8~5ap|SkR!8R1 zs0q9RjrUDIYCr^fwzo|0os{K@GBdNesy)b2o##?YoIAaC#d_L~y|#6)d|?OQXtA?`67Y zov-2N#-ENsj)(WP=3JC|o4wvdPK2-qBf+xm1f&>J3u*q=)YU}AL`#iYcv2`tlCq-H zqxqwyU%(p)uUqI0K3WV9Qp7tTr2KLD_V*Vqc>+!E4%jsekfvQM(^50!L(vLSSF zxsh{ktZ3B1I?w){pQ_l*7WQMMDz*nBvfw!hHDjJ1Q#r|`+-87c6YE-Q{gtm9q)3PV zSVb_6bZBL`-`wkK;*r0QUK^qu2KFCt9m~ez8Q8Af%K1UTY^6s4K*w6gomRO8yUh5K zr}ipqu$AlZJ%CSahSV$lLf1*t579TrwqgSzZ+&V`L$(WW(S#iYAx+-E|5gxSYR-n1 z8lmjR#6Qo$U3<$*meQ?djHdj=lXsk9X};OXviP^r`ZnTjy{3S3_HRZYf@qPcoa=Ly##w6+9L*Y z#3WmvC4khRe{B%Txb^~x*ab!9;874^D@aB;{b-0Iefxl67+d%vHJX!rGHh=DDGQYkrHOc8DV zFxC`)_FMj3YyRU4%^X2{5%g z^8^%#3+;XN=pXd5U7s?GZyOT#6mq64QSX8cGnN@8#E$9>QU(0_ll-r+}&OJ!G&T+!aZt41{j)U(BHV) zhJ)KWU{`e2uOh>N4_o>le1OGHugVdqo|vk>&Ji^2>ANYD@13zo3nJsTRpRTYAIwp0 zWp&nUfiNjqkM6q87P~>oElgzLr6nC{a|tRiOV~;_HRf!_!5y@UDbs+rwL1<__UdWCJS)Eb|+baYlPaAEy zBLx;VSHd6$P6H7W-Y#pOx5UWXg%0!V&KWomoF@T=^Vn*bC=f_R4Q0j197$o2h8N5e zC?KMd7;|Pmp|BHF$%6F-pLN5fVDUhuhN<0#ofhSI8&FqwOG}|Pn;$Z~ukd%cZdqyZ z4bYJLX`EGqs?|>fydh8HQ)X9XP8sJIqf zAr?H$hs(*>mk=Ol18p>n(giMjZn{;BW}iCKh1S50!LfSJyx=uv2#pTAAAKP@$KBBC zM%8+-W;;OHj2W4~aGqG!YoX9of_Km+JzpM^XlpDjOrvZ0bI?|Ysmf|OPF$-F!vj{T zq+o1UL}n=^pZGMjW8l#@q)g_bK zZAlI@SS1|uzlZYfmyun^?uHiNMFPV+oJPf`x2?e*uc^+dMWAP5$IbST1-9%`UU8W z^27S{Xcz)T2=m$ffI58siPl8vcbb6nJzr5(uYp^yCkdn}iHwn%Xw+p%LkzSeYPw

eFm(ip%0CBMz%(|w;9Va8fNQkbXM@skXi}LQ3+iOZ6dV-;FA77begCc| zTr*D5px8;c?fpif|+@LlyU(K7J5O@?}^T z8V2R^&=e{>&V2rwtMKvh1OO&XiktApm5|{jn}~CTXrVF%0Q++L?6#EWNi2XW-t(JT z$pd#L+#=1)*^1-4O%hOW4LOwU0LqO5fI>-_y|x5+VuP-pten zQsbkDwM|a0eWU_F`|+t1q6LLMYt{vU1Se@Ds~s-s6dwi7QWc)8H|?oukXkH)YBd(^ zLXqnyeEqo4dc)aSWwHNCYot<{ShFm(NjUspLHh=P2^kl6Lrn_kLz)3pY}HF5g0-cT zi6lt^P1Stq+nw9JeOLGR%~r+g`Pf_^L1TnDyiBLc(DJ#^YTBFT`R>s!PR=;1`Pusm zci=02M;$@=8q{vtCeN?ER+Z$B*w~m@SFMaz^|{e4y}Kw~=9c=|x|E*gJx{}zHjfi3 zYeg-;M1Hoo5;NzVEOU>ad%C^~AvpUgS-(0=`3b5%@ixlyab=KG_;cB;*(3ESfR7|B z5TVgQ0C1cl6dtJ>bU^Ck@rK;|)^qBrPmV44qy-F{1qR6G5S#nf<{41Onn|KBf~Fvt zLsaJA4KXW_ zy=#IWA%-J!&ejW9R|4n~VZ)13I*PEmOAm1nxTmR&PLV`wb9JF=;l&x}&GxUKeZpIV zx~NgUWB}@T0A@u*Bn8wb**_ezkd{Xk3GZ@lq^3j>GD(E4;DLgk7rJO4QX38Kiup_y zC3`AeN#qrQV|KAE3mcFsH%@;mwP!?!E>)Z0It zJUCv?y71+emI{@JlPnQp5H39l6rk<`2MHX{LHM-z4D)w>kwjCn14wB=e?XqQrI9-} z97}L$=-dy@0uFTM;NK**!ivw~ZRIn%IaSFSCRmu#;|c@_Pc3-rR_x$HOc(gSUy67*?iyq`Oj z0!q%e?ZW`m&{bIh0iZO%{UCN-+ejQwSi2VCPMa+TrG~W#V`#w&%O%$jP=w zj&@ToGPPAe+Z+JkA|HvJoFcCYC&B^`A_1TT?Y0{c7N?wwD0xH#aYDEe+_NC$)%P!ZlwN^S`!_uTTU56 zbLd{$9|BXr8x4ati|WCPvw1>F!upGqp`A2t$1#EK*^Lo-f>t4q>i3QKST^(s3O4^`TjjbGGrft4318P2sJVC>p|lFxzomu5KvHI z9Gmt-y^1=VS?N&n6G+Uv9#oKV0RRY*sywHfBn;(lAC=58$|K<9fNX{c@x>aQ-7Z0) zy7Tg5gA`cRCQHx+U}eKp@x8o-M=LCW*1?lJwwNl^H!VlCVo14N{-37 zcb)>9V|Ut_T0hX5{vQC9Kx)5v3}7Pc0R=i_I}VBOzWc3uQk;BI(JRulfr5*SnX0|( zZABFNulB%C_9m?SK=QNdL||9U3>puj+fDmwN>zqpFmC zd50gID|6?AW}16yoRtI9`P=Bbzspa`F{nYVN$j}@aki{+jlZv+TN3~bQ`=yjyJ#LX z&;5!%&3qxUmU`kRN1c)U7AjRAep=$t&Ur5KNTn=t3!0bD{zl|o{3w%$QHz9Ff zNx=b_3lMtLE%DQ2rx`SlYi*33bPIAKXY`G~9T&<^PGv*@-s1xf@;|t|_3$ev_Fs zO5(#}6=9EU7c$fM_T&KnAsST;u8ht?36QhC6%gD5R$C|*g~r4ofII+DNimr<#L%L5 zAk@YCp)int)8V1MJCObWDWs=FS46I78gIPsW|BTnMB$ z+io?gmDqzNk>pKulhFr^1C@qzOb8+G)hC7|-tSj+LyW$MdCtn`us~qdOb7sICt;Bh zZ*j?pG>x5`dJ4aM&27tVmHO4BMVzDMzvb!J(#uu-2Rj87v(7{d-f)0rxb4QSs%|iA z!>BN#l3t?aKWy4~Xt^NF--K65qgzs~{--tWV&4HEJCzi0N>zf7%g9;U5&>;)mn z5GMi%Kw)8FMA2f`8xV#7@BtZLg%8PxWzno}s?EyVF0wVi{#|YOHBC$o*UXN|_40di zYw&NxP4@s7ivdM{G4CN7RQ0kGVql=4N)#a+0;0IdC5TaZbOay^X=vjBI2=G=AiS|0 zBn+(riktqPs?M(MECggq;xI{Oj?_29Qv3sW`b!B110cYaK{sUvX1A$subvzB>5ghV zoTNaA@8|Pmy#Nnb&ciRXt)SD?p0ZL%WEJ2}bTXJ2tc@l8%VpOOV@9(Ao{mqpd^H)2 z6J069(G6fVh`40L5>`QVlmjbeRd%lV(Q`^bZzPI#)XZ1h?Va+f7wDqVU3bi)+e~yq zF(yi?swadZrxu+TCVUliXB1tRhK$JOE@41(+Ed`$r)?-T1mG5l$$%*5P0y6Xnaltb z3}IjxLIV?lgMb3aTxhnIjxYm(z#r}nGDNmXAPD=2rK$yRO;90`Ko5eBf2zBw85M;J zlBII^v0?rY!c)({egFUf0tqkx01L%InhH>04&ML(0|2g<(;-GCc4OeayAwcCsB1f;t53NqCS$id!_aF~ z2HMq0`0(3lG(9X_Yu zgAv^ezLOYG8u(MIB+_VyO>WY{5)!2zIKD+f|MJwm3;LAb(4qUf^mi|`3a9LuhP8n0 zd?Q&5W;^$u^Hp7%97EzprMI^i72jYqJjE#SEXdn9s8 zI~u(RQBJzk9?kw1Co#=H*H3In8o)RKBt)$*>?ij*am%I0FKs^cv*a}|!CM~h7Fy}X zGj%nvSP6)G+Rg?_GcPL!ayfqf0RktR>LbIHq!&7Z-t3~lWBd!ImP``WXHpq?WMT82K?fU%Qb<<2Csw@I`EuJj#K}(`FBxMEw-JSR(e7+KZeJJg~ z)mwadD;+7Q>;WnB5GN$}AvsQJD95$``sPZW1vY+~*!_yA-hH{^qmm@|(>!2!>)7G+ zFF*OkXwpYChs3 z9SSzHVsBqJKJaG6UwJv`(85=Ae!^*f5t;G2LE-Qd&toB=u_qrkd&O2Fd4^ix7SaS; zuSLDq;{n}v=TH6+c;KpqYhCi%js)cW{l)=eXaPITuIQWGbJ~f?zE~w|X%F`Q&(}p` z%I2tXiDi1dSZf-exizR)^Vi6duO>}W5L0GXaa6Ti=JK*PGW`S0dB!EQO|5;Lv#VSh zKJKElIiz?r=xx=uth$;8HBr{Lv_u#*C!Q}P=O2JG!gKG75{G2M?ttPTT?VHRn1gfR zjfTKyxrqoZU+{iHB7ANB+>F&+(t1LM;;GU@@s6-f8DY)s59|}f>9J`)3td`SuZurC zWM}mp!7O0V>+=3h(tSgwGVd`X$@*_v7RU-fI#bgWQh3HUeU(L%Or}MKI|j>4Wq9YX zoTVM+wBH~vXa!58U4tsMSYuxvO-#>r8Ai?12u@!-r96>HBg%@9A|Qy>FVY(?)&9KQ z7z_>r76W}pck2@ZrF}BT$VQob5y)s{e_vHGEb4D(xZchH1A~ZHe5-iu87L?3X5LtJ zqL;B$yojwu;Oeo8-Mr=ZKN@bm$Ij!!B`JoqfFoVV%FY3+P@g*LXtDiJ#a&E_Of_D5 zIy~3tYQO-r1(4~NSlSdqpfM5JbMWGqN%UswX_%WE?{ZGgS_qT?7Gv&g8S=#Ub4FQ3 zyy#y-QAzlyZGJ1Gi|J8)Z|S#SKCcW61Yop(fc71<3pD_aP8iolWgzjiGGOY2}4x~RId4*8R+yE6%{ z%~M^-t>IE}*5F(NcXZJX+eTfy1RO#fR%Eyz7Um~Vial!g23nI$N6RQduBKwf?*>O< zdGy}5HqEyZQ3a9=Bp`D2zXtAyDrYrw=`to^bHign@+`VMSYN>ZVEM9oZ$Va<0)cHk z-En-Nay?1etEGQ!KM-y18{8+dqd$JiOjhi)-e2)D;1mUAHZ2ZTG#!bG+Mak5|x zDE}@G&V)hqQGgPpJ85r7AdRWb_OY(Nr1he-gYhJF&LKB@7736oUarar0+%i0SC%J2 zTYsK3nCAPRwFO&inDW`YLPm6gaz~<-&f``bmP@`KH#IbZ(xdQb5XWc9#o|KQVv7_2 zn1^Bci?o@gpc>g-@M|VWkUJG$2I^Z)?DO#8Y58?2&eR9PS)(k^Z{GY3lmwfR7?=HG z9U*`leY>ohi#ZF(1N(y?kNr+TT-#?KRRp}=Q>M003H=&k@z;PDb`;9fL^$8xI)Om7 z4K>0r$h*3c%k}KZi)6jbPGD8@HDXnQFwDAjG$zjHfRRl{?cSc<-eDIac(Z~8>t13?AFYFzU zODy9J=viFv?plrdqBd;`K1%J=jZ1=p+I}$Ts0>*V${4Mr+3Fg9-D$>t?nn>u{(<5(L(oxTT0>+PXA5Z>q0wv=MJ`{b`V8XQv0HC zmqH*_`tG%zlHdRbU0B}^e$*`#u<&u#OC|cT1;+Ny<=Y>wy_1>5;Qv=(JN@ZLxGP@rU_owuBU;WyNAD6>0Xi^G~y=~kPY>?X_&bz$| zHLCP7Auv;wK1BuUx}J;9aK^M=7vV_bWeO6d5@i@)C8TyuUiEKLNR!rye^>qEU7=QL zE%oX%+;k2fU-)!cQ~%xAOH`T000022~Yq40-ph%3`MdNTL1vt@|^lxY0SE3_6~gN z$AP||$=aOCF~oka?cgpH$;8{{c}B&0w&fz5dz|3+ogj-Ncp78JXA5h?^9|21|6twd zF2qiZ`Wu}B<~lr$a=*zFMOYxG5k|vg-#(h6s+fJy+Ti#dr;i*JZa@&&(Wu4jcnhd8 z6yANc(>){XTR3UgJtxn{7&E04`J{X~|KRqaq@n&yDyNPg zLO&}~(#eL_b0eL<-;~9$pUuLi3N)g}PEz9|6UNBE1bG7M>)MX+{Yhb`6L*sVoZ^l@ zMwbUXsaz+=30nq7PIh$k<(Id^Qw$wU78*nxV|V5Ar4gZy&6IP7uV``^ORuONfuL4R zlQ#F*sebwWppxVDy)TlzjQO+|S%vX4KcF{2_^#HKY*s38MlmQ=USYM-3W0GvkoUn5 zFTxWei@s%I^um`UZWmJn70>K!CAOk5#{KLBB@d zr)l(5(?~DN`NRN!LVEQXJ^`QciDoNntNRgJZv|Aqq|fFQiJo%xT*Ml(3#s1r)6a<0 zrDnc8FRxB7;*e`P5Y$fY--w+}RVvf9YU(9Vn}mc#e6iw3wTo&4gzFUn6D`1F!C##e z1A+?#7P|!w|92UklUu?^75BE2`LGOBM^3frzOB;9dEw?gg;tEzpk*3-{>Z<+-Cs@X zI6jpvY8ZnVQ$w+gd1Tk@qR_k`aOIR}CCqKpOj_ZVe+nL=zZoO(hE~8t%vV%vY{6Zn zx{ZFi(kI48Dn8>N0s9&$zp<6#Idh|zUB-hlgepEc1~yc8yBkNimayV2SbjES=#d2> zHuIdddV9c+>r!AW+pJ15fzb(ms(^^i6kM-ALJ7~O{uv@GEEm3CbSWHwfIC4BKx+7L zo|BmNP@N+m6qZ@Hy9&8n*S>w8F9vIWXgg!5i+&Bs=a>JYO&D4mEjZ%C*(3a%vUm7j z-Sb%@Lz^#MDD@S0&iHw2$Q>GG3^r}Ty$U{X!!b}}OCjScfy=+B4aA&f3b&!+J;VP@ zWz(L8_d{t7mfRax0IE7Sr}^5&RY^uO`@-M7OBj=F;7yGs&^tSU6jj_vB=ZGHenaKP zr-VZ_Of6Fqh40LFKquW9B=5rPOnA_G9ftJhJHBlUZhm=7<8%6|L;9&N7ss^Q9_Dr9I>o(SU?9g&j&VkSAe!U7HfG&l}K>?;HFn# z`?Zn=_gNIYGYDLA%q=llqq<)&xq*@F_8?I^S|Xr8udLv3`Y58wY!DQc+ASKs&m4?Z zymA;nB~aT$7u@gjUXa0^sIZn*cGrbO>^Or91ODp`5Mim8BIves?7m^jGpdY#Tt7jn zWpM!VxgSl_=a8lUI;j?_q_=No*Xyi$-ICsJg2Esn$c{c6&_fEEc?6M|Vqt#|W{f=u zf3kl#NtJPdB>(TEvYSS|l5!W!AOHjA000022~Yq40`vi%3{A2VTL1vsqSIYM4K!hF zLIS~bgVL=sT*kjc;$SpV+t5 zOP}e0-i9q7{Gu-H{2Bqsi?MpH%UEiy?2}CR-~-vw(6W#FRN^kGDepF`e%CbTRFSBf z(6N{4f_M`24%*gjkO0fd)f?2wGN^4;y8Bi?U25)((gz~KA188`JRtX0nxkh z!x&2ZtT5V{W!hL%uQ2b~S8Y$~I-QGuBwJ-N^~H!jmOWy)(F7*bu~V#GrS@^JwmEm{ z2U&TPVk;m1-J8{`3lmC!1e_kZ7Gd>{|Fbti3?aLzbC?zrXsZMU^jtpUKYRbct)&ht z!`{s8TmkUn(&kk|9cKUReGdV%pEXJ%rCw+!(c;frAl#@FZ>)v*Aw9z#KT3@{W~WRR(V9=mjc)D(YL0{{~qSUNevd zc^D4n2DJ-7s3EGU2wJ<_im8~avu2xj9HJDE{x4K&fBBMH-A0Jum1Le(&41Bayb}5B zgFj~!wCvEYKe(=ey;b=ux@Odg#>_x$&X6JVe|R*^X)NDhPBk6dKdql9jlzEmn00Idx000V_L7EI$U=H5^00RKExA|uq({YvWbI@y1sqzi@ECJ{r z*d?oDsG;UuCcNiu;UR`7;t~+Dmgo%cQwW7L!K`Htq?h089o-=%)Kx=FXUZEt~W7*fKXZm-`^+P zoPJiM4=NI&0;+yC;jUHB`8c6a9tCk4P-1qxUqar3g^k2(KyB!kt&987p?>J8eK!X^ z=m={xyNPKN0N(Hgy@$BsVqoZ>Oj4)H*bQE;Z!~{DGJ`&bH=r3Wrg`8FItM@8RY!XO==_SXXbIcnO*l5O%9X=3q47`=b~llZaYB)F{i9$#@{Yw!{)(%$GD5 zxZpy4d;?yZj|%I6bd+jhcw$z(2DHMxR~AVPf1@6(GNa9*r>X~hU}Y0Z631lTFT?Vh z_+LOJ+D<>;LE!z2(Rj{7tw^Kxn|&1N$xsAOt|@91LGuwB168jJ0)7ioepl=+uz0BytX8!lnS2mF$g}u3G!VZL^*(UQ$2# z$ZAJc#{_(Sf!wo~`|Hz`>PUUalFW8X=k^TxxM@{i4*-?aoLMxz7x?php}f;o6K>6v zElA!AgBa)Iiv?$@Qloj3^VO^)PX;x8kT92VIIk^B$F0*Y4rZSml{VRts?R><{}f-?tTdU!t2TO#~Mr znap%WM6~baZ246%#RzC)iSmjULkB6Fu~^9E7W_HQ!x0ogIajd6lVFxZ@sG^0$*yRUE>H`#jMP zh(xW3BvdU(d@t%?~H)$e+tK%jXJ&B=%(%qS=lv2;Hlm-ViYYbN>Q4h zL=RH!+K4nc#T7?3e4=!9=iz)TN?w&<(G6-=XJSlD^CWEed1{0&_brT!eeqOWs4f5} zHsAf}6at|q0vLZckhHxd7~C$O3cQo)mAMZ%*5H~Z$2FA8N7Hprni7UZ{+~1n0emBx zC3pa+Y~KCs*ysoJRmdZOj9B7%$a_Eqjlq1EY+aZCiYK@^N?{@#glJPZ0)Yls+{WGN%?<}^dPRN%5N&oV7J%Xh4uJ^hFubQF?tPH?$}W;VeW zag*Q>53B_$@ZBU(j*T^PsJ8G2$xZw3nkK*k)Y;*@)o^|lgRP=#4-XPHpW=}Nlf4+z zhvr;z7g^AI9n^(eVqQ6Gf4j70%x;?WW-j#s#x2>@6(O=q_)hZpn3g9?_g$4k$eq1} zvI#J>bsb-SktxNt!I|@h382_$Ra+Di4FfGogX3-c4(x>Kqw|XVw-O`==H>KX?urqu zYKOi+ot(Opub|J(b^ZqWC<=WXtDCS?Lnj+YDkcEfRlx|?sNWsC(dSJ7mg&lx&SzmT zG=1O4C54j0R~=FK%N z9NSfp$1R?T(~R>7(j1)D-csbJz8IMuL{%cM*&8xJ?yIB>X&`6io34;xBw=$~94KC1 zS!CR_X;XU*2(C2U6k|z*q=)8~@HtOiH%qaB4{n{10(FhOR7jn?ZXIAhH(mrE z3WSLsLdbA-uwT%6@3kOX4Riy%Q7D}Og3_=->6%R3UufEiF^!R4ZP{9%8A=uA-qp{1 z_A%KAkH(%Mef=HcFmi;4ITJ3@ORc$XP}o>?>zo*4-`_lcDMYEFA8yq|4KA~_?PtNN zI;jwR2SUO=|6=$C4oK&#F7aeKiEzf*sNC*YbCC70Sc*_}jB`K6H`y2XS<&J(j&;aO zAU)HN;lZPAN0PV(V)Bt`4tjlDb^pPzkv7gBmYc0ay|pvym`vI&R1+FFpld-+q6f5* zxIaZwHUg!Od|>>7c^z|g7{&k#|GnaQM7N-)MgV#cb14pe&&xZ_$#tPRBLRin^p#Ws zL!(P*4g%Y=w-%ZJd;Qk|L< z_~6kcdggF7Obk%Mv}OURRS{%^dKndArx&X^8T=8tzf%iZX&M3)LZn5U0xrh?-aOjB zm5I-Ppm)#DlYF##^fzr~iFk!=qY9_TCKq;Z(|SAJYw#?Xdr z$Wt5h{2YG=o9_FJZfV~D1n@>e>LkN|XJ_~T9B=>t00Ie60004T0iF(3vJ+bX0N=;5 zSp}LVb$yvle~i66L|zAvj+csh+y~c*b$fo523o5jS~P5?AUQ0N+GztlQ~r{Rbm24@ ze>NXWf=%gf_R_>dVEi{a;MzO;m+ z8il(GY&_^H_{SxIZh=I(`cZce^5^_ny9KHe_bEZKx;FAvh*!YVPc2jMa(bN8sS$V6pO!H%gv zN7v*!OUWn<^;kw*A1KtRRd5uT@sb(K3&4b8v4XxH#2K}AoymcR*IVsQfnBhv*q{=C z@)G4BHU7`TOy%?fdFj14;`VmZK)5a;?m!#jo!c(^ot1cJHm?5j)Gz=lU;qFB0tpZR z000?hO+X)(Qh{J+%PgcA7#RQn0|V&*0K0&M00005Xz2+xAOHYOab<{rAON=i{s3N10JT;NYOiP{UekaTt6?Eupcz`(&^)ezR zo=w>BCN^ie%i^&1+vQ$>yJcdtP-vjW(%Aix+UX+<9}FOc1l&bN%B;IsHG|`&MWUr}m8_V9)a3wCr=)Iuhn4=0@-&r6ASlanVcPNd-CFSpr3w%K^%? z)@D~WRD-r9M1V6rrh3o-f~J0eaDM5NOPtph5kdk_p!YzsZYNg+y3|Ky6opN1Ew{o# zAJIfOdcTm!rS!f2KU=9Z@hJ}qFRswK)_>%7E|bE5_;yJiD)q&m9y|v&Kbf=LpHfa*|UV%5g4T|;nLajuVZ-7m`tQv3T^ z`465jZ5>AWGuB3AorRB!Rc!Y3LQ==ms6eXzLOlUt;=pr)I*hX(C{Iy4w;WE~n7`n& zf1%r=vaI!9A<#vea#u$S4WRWOzC}Y7ArDq6m`n47RN?$#_>t&U$9BGbI{1}Ut3)6A z`nYLDGB3Ja_?64*Z*G@W;Bd}Tg0G6x9C5W}{h}yVk062L%Did-EHguVeri+@2f{Hi z-c#7|Y^u6Z)mw8z+f3G(qvgYlS-|5v7Z}g~x<4$_|E!3P*8nvW==Qh8v%@W3ERMil#e^UTB)k z=I&*zs;)#)Xs-taRKI-yn8R`-kDbC)5@I>gY{kL@zIBq9*vk$dse8#G&lHhj8(+mO z)s-DL+i(hTh`wmmHR4jLiR>ER7v>*1DVe##)e8CE_H;IHC6!2IVR4<%RX?$QK;>?6 zjw)xZ2Pbe335+~f$JSrz*Ag2wYzy*{zrE85V!}}#Dr6XE!AcT!T_@L&6a~Nuw*NWu z$j}Rwf7XBSIXVpqz4eh86kZ%Cj%snpHGciwWUjl(3yhHF*|&RU`G}f)c@1)g=@NnN z?{Y}w-x&v9tkL*%Zy4hr<1vAzOBf}(;S-erW3xXm;4lA#({bS+vSBw2%!RhC`HLDC z=-WkscXm-pV&vVMK1)rbEsOtq#upNS4EVKYAkqz$cnaTdrYe2*xcq!Su}X>MWvkhM zFV~AKOH`{aqz>kI1D2)q_?PQTJ8YamvsgS%v>8XJ(D0l7j)83Jdc9Xx zux6eJdnWdwHYoNCwiFy|Z81ReF_1}TFGjZU`2>iI`*l$3jxg9(p0#1Kz|>7}rKkyj zdz}T#C~`bZ@5OJ`L?RrxmkiXQnbedUTbyF&d4s1iBwjn*pzvWoU{=3NEUTaV7JGWt z&Y5=*9M>-Vqw$!ska@GItxxwptaY?1)zf@};=5u3KFRXEEgN=$kh7*7{*JN#I!)my zcwAgMr*Dk^wBUh9lp?UY|)hY zh>*U81du%@sn8_mol@EN^wv;3$yRMU#VzMO`SO1WSeTd3v}jqKzK`58? z?7@d6W1k7(R9;%&bq4MmarTO=hC#-n%m>xxTt`%etJ>v^ST3<`;tl7T#5Z`p{GB<>5L^>^i zFVd4M1ml*Q?%=n8$%d#$mqLx*QWE-AD-3f>IIXC?n`XjNw<$ERqWZLXbMRX{N5%lB zvw0xi%21a7b~NB>qk*9CXbjPf*uyk2F?8;qM?*Ef-+k~c!v3;|VRiNr9eL2j1hE+A zcea@RrSFOTRx}j;tch|3HF+RP3E_?>tm7Bce=6g*n-v-8_+npZHvxkYM4y_Ah;SwI zSZnhlP{-=#vS#N74dLzOeAMWT$&h5dypQ|iZDP39aoS*YKFj`iP7D0kbOZ7zu z+wu#%uDgK3(&u~;Cf+5iQcW%A`+PHukhX{t;tT{V6)wXIOWX2x()Jkw?LS7(|CYP9 z3KrjEjS)_{PpgTS)w=M0H^8e&8!$pP%}1$^(qj=iE1bizMi@R~OLu~5yQCb+0Uv=q z@XW9PP8Q@~417cg%&0#j+A9kBGw|n?J*+wN@e`uPo~+SRNNn8%^D<@e0XcjzQilf` z$1Rf)2MF)Z26m0R#3sm4PlH;VY3T2shK@J=q0iF5eOIT@n9QUX^%6bapVPCOw*q{)%q5 zq3jvwt0EV5O(>uOe}6^StxG?|ms2DmOidp8st1&io3@26Lw0}uWwW$0^8g!ql0qW) z8mXEj8v3~Ce7x1df{_np>}9LsR&l)-PsR*S4>gnGBchpLjwwk*PPGSgRrAFXipz|z zeF~BKvl+%6kYFlVd%v;{4AdOp{rrqgtrh}SztY5`d}|PR?KxJ68?+oRrVckkT>c^B$cB~J1PE<4#Ej=DhC42g%9ZF0ITLrSIAx)Ltjk<&I9JSZgSJ7Msy z<+PfQR7UVNsc@3sAqS$xibt4ds&WAw zzOdUhuRQP!PFQm|IA1`l;8Q8mH z=~wgzn@39&pr3gTs0kx%h#xk zthljkp1tPv$1Q-F3A=`~QWnjf|7SNHB4-!dTrp$i$!_V%&46~cnh1~m1K8G^y`z1*@K>EoKMCt*{rOf*mN}U{twZoHXw(V{T zm?>(%4Qe(Hy=FN*>89o=_`v-S!gkG}!_L1wk>!CiUt4~-vt8u2-8bRV_U*vQG=qu zX5Lw(H<&Y1xQo$G9Mk)v2m=>Y4Nq@S0nLmAAdKd7k4&`Yqwdi`9P&3(Re?j;_s6T9 zg{B@XvHeqzfxKy-|Fz!-uxRW;5N}JkchQd`Hwm=4FRBL?^$MtH7M@JJ`2o)Fh;emp zi8KPjysNJwBYc>bYREcAf=$6DV!tkZQz7PTa)dh zCC_n>>#y!z{Ko-#dye`8AIG_906~oGJYs?g#-epH>U|+%5|e#e@W0<{Dsx(|N%hVX zPFMH~n=O-vBZ*29jRU9qgvpnbYBkx7dJm& z4FpVneb}lBFR@zPz|HzT9h-Pa2I5mJ1NJdglJe9GpCl1|QHCzT;%_3PLkI0!^vquK z;)2wG{l&Ltewa-3bKhv7TMU7A<-@H|OxdM_VCFIs_Hd(sqG|v}>V=Xx_KUUxi=CGS z+9@Sl*#VEOL~ag%?qjn8@-@=PGnkq&1M#p@{RM;?WyTLCZX-LXyC$VLQK9GVQW=x* zSWGH@yGZ_K3t@!MLzvRVf&J&<%2CE)<*H zE0A9zpXA_>+n)O5?y5=Ul3UHo*yBa)+{@Dck@=}nF>IB{Twgn?+uETfB)Bm1s6wlu9dQ6e`ZA*k=d3&r#<^F+HwT1u_Si2YH`V3JRuQ<#X!Q`J|9?pN zdmXb^8PM=D{{-Qj%(=Sb6*x#)zbu5WDy*CGv>)Zkk3C;^F39hMw6z73F}<5st8=tY zmg8BUx)g#Szf$+glmAL(vO~z=K_i?+Z{aA^L@j0vp9v!h_b_PiU4jnk<`#V;Tz4NS zHJjg*!C)X0JCwqXciuusJ@LF`CjHuU7VzkCy)#PPS5Cyo} z`n$df#=QkU2!?T~$Ozf_)J=m||NFs<-|zuFm@|IWWq;@8|DDJXkFUfeE(Dzu0gm~c z8t0ouz0pu_8`)`ufYQQYoTuOfXYjs2i<@uCO-Y3#bS5u~w7HZL$w|*&^l%|FMxi4qd+tmX z@f?p>QRP5WOLWXgM{{LH+4I3jv*}T`4Yi*yWk-SF;lCHd+Jah5 zT(04GJ5ep%&Sw8Xsr{2m8vxeyJ5K5_4GI$_-_4MnxWDVqF*tM~pjb60W5`X*^&JgK zEt2Fhj&sR%q9C%5?GLe10&p>F|0s$L!Cs;KE`RgF69WH+UV@rWClF1TncL3viOs_* zXHgiox0q+C5JKLphW_g$q!+e=OOp|jgixCAz=ZSAZSRPRLEw?N z8M3oZWCTK&E^5H1vBMY7!M&fV7gpn8uOKLMV+d#ZkQF3nLkG#h`a2H@BO<>UtsnzDVqYjAs#EQzh^Fr7kNwM= zl-mkproBiKt}5Hn{-0KdzwHu_b$qh>m;hrWKc6mn zwFbBO9r5KFWd=hR^7>PN^V)X&GKb=h7gOK;gJZ)8WePa{SOknPso)JjjeUc-W^0&y z6rFkWoLropoZoF%3UB185(5$-wi1K~_<#7K}SFHk%)pr8eN)@HVfqOR?P)p@b?nI}pz3 z4fiADK4S=Ko6V}xs|E={z{NA$si@BSaUcdF{;7txJn`l)t>Oa&z<*)(dnq*(?@0<4 zPu>vW`8ZL?kSV*m{jd8|xdZS1a}hOruN8bj-wg{vk$;#wUXte@1#c8`Pb!`l|qK1yS92YJCU@5UuHJ`i&I}aFHZT zPx!LwFzRFPTK`s+jsvlAiEg~Czk#Rsmn<)xQNX=N{0+em>#cLhKj);PAhvEVM|*>e z0rG0A(2K2Y4#%MHWPCbsNJiuq;9?NuWT%P`mD%r+VGP2-o6+5#pX^fJIq4EBLtLfR ziDH~+y?uUpNF8N6d76?Ic7Z>fj#?t&!kZ`s)1IAUmN#kYL*Gb<5IgZS}e3a-MXT-Dk!>jAWV8V zOIB3fUe2cA`=blgxu)`AsNX)nlN_gnX+Cg3qZiEt%ZA}gj$@Un^IU<33)pPE&jEV(nXR!Xm77!GA zV_HzG>N~;j6RN&ot^SxonLr-zb?s3!+!IgSIy2~75|E-z>7uwcA5>0%VYvgzQpJNw z6mFkx1ynaSNwPuRte}yzmNeHf|5H?L%o#*|5G*^Bz9!E z%9S;fxoaM+MeN{RU%{uRwMhKF9A#>y2=!*D5}n6JTPEqJ7VU;c0uB!TK^)0ypYyex zQ_k(KBpJY-HCmoQn`D_jP~z?Ex-5$<@e_G99hw}25xUBp2>bGQ9#Ym5-#MdjEr$?t zHx1za1OT0TW54-Kw7L$s;T#Q7vp2Y^dm(54|CU12aoDmsmD@@m@?7MT9q8kzCGqR9 zcN4OSt3oZRsR+cQFi{>iSC+rH^f44qZp0s~_vB!TlAx_Kkl5df4RHvGMIVu|r`8M9 z6jd_qeoJ=17~^&_F|Wq~0D=3GNYD3$Lc?5n*J*IZ@6S#g(n<0(lr@+1HrcioM*T@; zuLT`eVatyFuJBGRYUu6=-j7!U27(QE1bfhvGn0&GRmPk_gYyPsUlbGZUk>#SYd#@@-g6RBP;2dX?!7f~r7vlmWW!5TCJoWmxOJ8 zgaD35j37G5vrPW$LMSA0Pb;%5xvvYzGg6n5N0If4%$wYdXrA(LAJICbXC z=+4WWo3)Y>02lb!$P^abD8Fi0%hhH=lR^8Y1(O(ON%b&rwDi+=wNscgXvv?l+dXO%x} zS>-m3uBnQQj%~(RY<5|(Gz5<$3DFSRy4oDjF~w|m%fM{q2kIQ)t3x}956Ud)c_i8L z75$pgB!TI+RVKsT-4r2alz=^nH{SeIXtIyNC2Wd9QCAlq|I67_hxy3wu9`L9T+!t3 z?!_#8hRUL1bY^o{s&JZGg6DuO1(CiJvwdW3sc`6vw4TsvIW3c#I~}{NUDONJOh;|O z+Q@zk^rN)e3_?hzLo)*O*WSpD7yn)BJ3pKvaT5{X`Zbj3RLi&+@rJb4L@TC%qRmxw zm&O>Cm((GSynvUT<*iW!FU{Ovq57{KdVNAKem`#M@)8}S1wj2uv$TK0AV{)hCD4cZ zxwJxSE0|9CE&}>ci^;*6t0aZEq76$lxHFd3-oK{@+RUrNjxubL@aw;&wkX@n5vw(Q zo8fj5aJ0^JQLAnIeCyAvic*%V^LdYo8c}tTKd%GCoB1au$*ykqGkPzDXT0WyUh;&p zl;As}W?U)jTTAtRtq&9@Nc`0GCzzb^&)E}s-0p>iW#+nt%PUf8Ww}r|M51}Rj#X3E=?f|+ zibVyviNje_?Sj|5Ap1)SmS*!(ke*ZeF9`Hh8KnE%E$>in16E61gXLkj4ka2C;3!^4 zLJ)^`P`bl^&a&XWoWuH-CGV>p$_(s}An{!MUNpY;^5E#}fD^kKZ#z+b_$MD;sZ(HQ zzI*G4ug)Bu%|M12f$aAROiSgHl?;gP*-vi!c>(qsDu8DeM`^21FGshFi3A@eidg)7 z>i*p_5n!J#H&`m20FXNs>jo)8XV43rZ=u0`35kXe<17``Glfp}h8NXHFfCw*4z$UO zxDls|wW|~Z-v%atV-Dfs44>-r9S1F~iJ0bCz^T?Yx|QhI`rXfFGbHD-d}J(Nns)Ko zXwkY$o~-*ew+Imt+~NL3DrS-pBapn-6Y}1l9gyU8U`PeJp*@~u6SsFbIJAs16Zc0% zntcId6odBC8}M(`4Q;l0>Vt|fy&QsaiYU9%Cf~qjMa|C#)2821)gq@;&*=ASw8g_b zX_EB)j$Vpt(M9iyy!59dbF{L2qd1iFKE?D+`wvW!$d zA!>0i2{pfs<<*p1h&S()Zk`CtGXmE_GZ(kljVxCCInuWxEa8emC8f2*0nO2IRFyXkb5;&lHaXN_ zT@4>*kI_pR4AL`lTN#=zuQN-825-fJkHW%1FWZ9$Ai*Uu7k;JMh=+#!HJ>F(AHmsO ziAzt%HZ=w5KHvjUDoivuJ0Iiiku@*f>{0$=vd8}_PkTAt-6gPpFlLf+X1`K`63sM% z&+jP9F*z^Q4U7Md&r`!4$-e-WvlrmMk5SS<)WRwK-b0B;N?Oa4acnwNL_^1QR1XmY z52j;#z$86}37=LFV&DDS_PRcme`^`(-A(z#Ao}HOs8H)i$v-W>G)wG*XlDKok7?m< z!>cQ#VKj56}-*Ip7Eu-%KsNBc#Fltc!}B zo(4}x{`v==6jI=%r0hx&kJecme&R{Qn%n+D1^ncKz@&!IWpKIZm4T*W(m$}$i}S{K zS{p=XlJcmZ)~DwI&)nb-dcPX1GA}rnuAk9wYh(Av`u|r4C{EF|YF2CNsg^lGa9l!> z`yhPr75SI8C2A*34H!hDk5Srck%C}!2KA#G1CD;-wqh;UafF94_r54|myL~L9V1Pe zKpsmdMo$yokGG2v`~J}MTa*rAa39T&%_r#$7wRAYxMLD@UdOEhk#S^Eq8td2{fs*v z{m#74Fbmq7XbLdVULYYAB1p?Wum_o3Qt@g>sPMy2_(!jQ{rjC~v99#7?UEn#yW1rVU5IcJ+|3#9(m<8QS@(-#FQ`)V{50W(9d(*jziQ+x zeu(=u`NAJEbc!s2UhW)QPMDO8O$RFe)!X&wU*4lo3|9arEb9bLgoP{fInCsDTRdfmWoI84WDc-#b#nHeV=e*2YL1RU5-#qP9a&jk0&_SLKrV3H{Oo9|)(X|xHi zxw?HW{wh&1xBHo{g}!`3)BcMjnPuE&CIJX<(;ey-KRIyMN8V>u?_$)73Ey)G0&x_j z9zU+DD>%dR57Q()$pe>Qo%8_3&YK-u0{!RkxEfhE$!e199&p=N(RQAoCFIR7WR2rF z0nA8zUhn(_Y}~53*Y;?~!6hCBUfZhJC9&>dyl|^XC)~LO4shiv6HBkfYM0T&^eGZt zFj=)rq%2<^b;pjjMCkQvNP0-L_x|`cwX42HVYLUMrEQU5X>8M^X4+SIRLhpNNH*mE zTUdJubK|dN(n_>XUI;G_v53H8?++95DT5LhpCUQv1WFyD!>fL~th!(yE>{v+}9# zIgzkFtnh2nz6vQLo9?}4S10d@;0T59i;Odz&Il!Z%coafCnntqn-0c&<|;P{UXN%Z zih-xk0!=t8^=5aLUmN5&Zqwx+m;Bwm(&wd9o!PP7)rxjz350f(5|!Q!0B=Y)s~N+p zg=vOnj7gZCo2OxgeM*5dnO7!w1?%FeJbx2!9)wLYj)g)r_TSWH+2!kp5wRo8HT`Gl z=w!awJZPTZ@F7@{(u0{%Sm}x~K@e4JzSTn9J1gs0gj5>r(ybrLHn3kMV@b5o2oRUu z8?`ZgT0d_y+SGFgqq;poht{*PvLN%ERn)x^`IYpT6gD9YZMB^2BH~umMXdt~bz}IL zqZhKPCi@*&6PenRT^=x@J_7MymEt6zmV0w@{f6qzKHg9%1Rw7JyR)cs(J7Nb_JZ$$ zn}K%t>dQw{R1ny-|@5P$^>A>Vd2XM~WXVkz%6iA$1A}*2_PKB{>HAvM9)0RgF0v zp?+V_e;gAON!qG@(uzN~JPB60WdRk!X(E;hbxkD}uIf!1Y`Fl4?FsAqj%qOobfyDL zT0h6jD?sqyNo|8khlUGzpu#ajI^^CvAep zAMqkRBsA7NbRxszPr8FO4frXpx>aKWR}%2-tJN;uP*lU_QzKDMMj^wMfFT`{IrovIrVgIPc}K=0u#Eqa8L4zF{k90*&{QM;__s*= za4^|7x*z;B3O2KEO@BWH<`?Y8*?QF2UM%ZqwHLV_rlJ^ZXEe?rKhax)_4&Kt&a1Uc zVLQ7b+P&d>;c5gPJzvD@fo+wku4gp0Dd^NDq?}YtW>rR5D0F$6LvUT8i3b}c$k!dN z&<{U@KpXY=3Cmi(CUaV<@jLg{s_j7?p2>39Q?+-vs7f0u+Dv~wou_C@U*Xk{41{ia zNszJg@LmGmK!UIPkZh@L@C7jA3M=0K!WYoabSDjw!lhy2%vnHcIk}1 z7-cSq-5gOty&8b_zNt#IMV*&%c>&dIZjcT_un>T0+c6&PJO0N|o!i+T&Up=?5`b}e zsZ@eKD;%dHiP;V=yt8{Jj1E}pS%m&58TR{uaC{(}(|F= zNR58hi1WfvjH(QJ!UxyQ52gPrE|^4zO;azie8lkCF4jM$DSIu>GU;!-XuHK*TnLo? z>NtI0JF;VZN`s&7R~aKQLh-|4NaX`y08Wj()R;h@>|=P4Z&E<n5TAuZKseSk4#@0;a{4S9L z%PH>@_T+V@S_noB$|pUVesQ69sbhtq0+{$AEu;3rA% z8hijk$SCbD*`cBpze74)T6?i&x`Xs~@sy4)z~1}K9Sd&lvnVuRZ>BC!t)biJa_mIX>GfgtB@W;{o^26vw?WOQ#5xw+suX1Cv(c9FZEd2|4C zuOc2}9ydFUHO-rkgGl#;p!!kuo4DS19yL$5D|Lz?%vAgp5pGz*&IL%XuGb*nImTVV zTvEgjSv1V^ah{@RwQH>|w6>htj6>?Vh${h{B5 zSiW5cL)mwOtWe=PV*TSWNVj~z9Bc23%O_WPOIMyiN$|UUIsrxLz7LtRGj@S_yj7Yk zmXqgn4&i=5W8kp2f>gBGqn^VfHU{xO5*uui%z8Lq?G-lDy_!XDSC-8-W0zMhRLJz( z&U;TP2(Q}7kvmW@33{W?TrZSDD(xwQ9pK*-BPP4Hpo=od{*+QYJZa8V zJ(hx-yAC&6Dv~YK^0JC_$IGr6Be1L&GUY&*k^gZJT(Y$l5F5{zk0tCPTwYTpJg#&T zQy#UTgI?KG{kdHNo&n!)90YjcK; z6nHHf$^WQ?4z9dM#X7-gd?H{+_N|A+zG1NlHDZ!5a|mQ-Tb*p8W8&QKK+1=O6K*w| z2qX9r=_?9Eo3I-^Yl{Y^Qr85_b=TZO%%=4FX#}nq2$)r8o$8+nJO3GyeWEFr`^w8IJmEH?fs!IOZZ%lb zj8=CCdxjUIjhV50`UkIB!BqOi26R(E_F;mbjuyh23*itzl3-I+4nO|KZlC@!wf~&g zi&ioz;FJ2Iifp>~o*sgQeH!+3h}s?kDxu%-R--7t_eHZN_O-LsrWZ578_`?!qgxK$5-;N}m>{8eL z*o(j|V%<7n+D>0iupoUo6QZo1p{LDllLkV*)n58PtTNs&9G`X@UK4ES5{}#-E%;gh z*01ZUkH)U-^QDL|E7YwI0m$@(u!+h9J&k4mmz<=y5GyKR<&6qc+`^e+;ev=*RjLkx znG_{(JW{OLf3c3<__hCQQ*B+%NNJ2Gn3+v_BI%)coHm6d@w5kEMPPc}2uIwn3xn4T z*Ah3`{Ts6 zdI}SPH0V<{=X~$ggEb)x7wjQ`d4$k;Jau!j&`kCTX*h#W%QwL@A@fpn>WX4ERP&IR))Y#g zVC!-Knz{@Mz$kbiTEik~PNzyCuAzpF;|6~<)XOWvJ$;hStzE(c#>GOX(142kgI!9C z5oya}4!KH5W?g;`EYE1H0?{GdJjJum*}s?r-2d5%p?W!%)KkL0I;DO`0>4ftg7zo3 z(nXLypiq5+tK3Pr4-V}d6Fi_#XI=WZI76Cf@^U47!@O3unAKd?rg;dX(8Z^TI5XT? zU*~CKuZySAj*7Qig={f(i%vB_7MFau1dDN{8ZFV=_67u@96HN2#zUqBXg(;8HGvwz zoM-OJZbz!=-V}L;=JD|){D5rLQHS;Ig<$QeRe+4nCgL%Lv_+FgTuX+dWuT(PArIp9+KKxa9Ri3P3Yd&B%LH@Db3L<|MaH3kt7dnH#d zl>UR(#B<}uO7+5#2G1krTF3adSokl?aq{#uHnzC=?`(gOPa0rr+4&*(JysApN__tmYXd?%2-a7vec@<$z9d zM?H&*I`F>wdu(}={C>vnk8N#E!5!G<1SFyja7OXx6 zSdt6A@C5(s*e^U;BKqdi7>2XZJJ3L7oEhq;cJ7ayJHDNwkL-8<1s2u`!{tnY1Jo@P zHL5**UUeX!yc@>`NsI4GM|ZAvr}!cDQ<)V6Of{$5Vj2ugISpDo`Unj9D%0jVK-~?V z{;;v|V2>2IOIUOg(6H{LIJ*J=Ga}e=D$N|({%UIy$1h)phQFc7x8oUZvjKIgqsSPB8EaQ7!yp@3 z`zijq987ZGWI}HFal1m^+lJQe$>i=1P?}%kdDZ1(2{R4@637{o!HgXWdC({GQKupL zy4RLtGI#OP$RBZ^L;pWIds>gD@@UMVrp-RIfecFaZn(jjvXk@`MMZ;iy%!psiD~Pt zAk4*jS(C82Z(4GkL#Fq+FRp?^K>Y3PSCWvO7#%m(P$bHLz5})kH&rFk56&QEw(O-N zE-858zl_1f1@6=cx)KhtQC){f-oFkZRnm9uj|2=@jSq@O;j1y4fU6u?HNXyC6r(}Y zpX%|7;Z`Kd`T2tZ9X$+xj}(|=A7k|D>Opc~0tn`)E?2#$=z$W(wvX-HgGvwFL~Ohj zfu^rGle<}Vqu}4n7wZT^?a2MYWT=F@0o7@6X*KYl_S06n!v_Db24kiuo=Kw^v{F*l z@NJ*93KB^SLRE0um=C#RxvRYEo@zirG zGoOfp;|QwIyqPEBMZWb7v9H(ijD8K$-Temv;S!IYLx&}mMZr^-y)4za49TA;vmN53 z52Y}Ai!9|?+@LJ&g`ST~tY|BRKy~0i;J{{Jv;!(rPRRwy zDo4gWOlBo4Rx*TeGUN;{?-tj^g+iNMGwmWbdZn33Qo;Je2dzrh(HVYX+(MEG`M2Z* z#G91_i!nHMxC^nd=>4@D&tAiA4=Uif$yV1B{v9Bl(C2%er0z+L3DXy$W{0qfFm8ER%KyEuJ)hH(EV}H!bLLA(7I5eceAw+pD$^k z-hL8*BRw&0Pg98f4zrXu$t~CwexMUpL|Gq1MT#J1DWW`EIpZ8HyGbOmYmKVaG4}c> ztkrjGX^h6kROj@o899qsE$rlW!Ybi(@GbNkVIejg@p@<(mo@D`8%KqRyd{L-sK5u1 z`Xw(r8UB$lL~P71Z0=C>W`8L&%)j0-H&2I~KUSj>b~o3cf@3Typ1n%Q#1}vzammpp=MaPTSt`~*qh=G&Q%`po{d#oz)=JdI znQofXbH|$f8FgmuwBz7hkY2-KPb)4C?oKm zT-LvD)sljPf=s@Vtr2emhf2g>-HL3fjM6Rv1d?K^@W9PZ)DTqF7@FV)16Rm-B0TQQ znTJIZAd|`*87}dw8Xz_gW(xn)Y4m`2nr<(aE|J}~^f^d7bj2c%$#hkGJtI(W733Lg z;NT?FM42)Ae6+N=bOlvp3)iPMm6J(Ttr31xRKAwT;$IG@8q$=QW4cTUIj1in`ikFy zKJ#QS#(U$J?r~GGTpnCMp9s*K$@7-TG=J!k)>#mzNYmeG92k5WM^S8OtK8aCpZi*H&2Te;6(%Y+5HecDPu`iA3(&iNy<{jx!&&92<+^2t|Ymd1vQ@w zYnnP~5Y;EsUr}7$mQ1y%2cm*5C%5xpkQ46tSi+}=_&*9sNu@h?r^#HSYP{_MK7gz} zo%k_evXPrYmtmch1M`wepcCJ9@R#oIgqSWFQounQmmAViUYl=w3`k14fQkm1OLAol zKU!TcKZx#1i;RhF{E_9na=iZ20W=sax>Q4-Po_yW^*=-qK)w^6SD~SVY}qxx-+s*y z=+lc0n6>Nl``<&=Bt&*!|Dqt2fb}%^jJt8A68EG`nFTfdS`q5_QGO0!ad`0BPJm_7 zmCG(^lz;?gj8}hky!c7M;+I=_-F0beR^xeDmV zzS>*1rwL3c92E+FO;J1S>Aqm!FTRRpyznNFU@==W(zF^0Si(Rs>w%Q7uJpc@NU1$P zkuIK}n^J8wp3Di}LcR^_s}O!Qr)I>-kUY}iUz_(nX~#fucUt#Ydq^hw5~ut4ds{1* zD6XffP~h{*UD-Hk%e>vry#LBWDsJzP@WKAnMqs>JRw> znS05JCOV0TL{j8rZ2cnsf>GJ`NnUIUfyoC1sN^e=JMm%1tvp^I8kvn~l=n%kfPm@4 z-M%<9by(*5@>rl) zP+hZ{wk_vfFI1_0p$bQOf@vcs`taI_5JuleOsr%L5e4v=Cu6Vl`FA|7h(Zz^u!@2#)wwY^MiD%8nJ%Oyg0Xj;@T$d|I3x48{2QTpMd3mTZv9AhK2vr-CyI zIAd@Bxf-{b@?AL^oG@@_Y5k@36y|QJZ-cOoo;{d}pU4mIew0c~nC3(4+r{NU?H!oKm)ACdowgt9CI>y**EU6 zd_ltElZa}10BMnPxh@uonaj|^fZ${Mnk;!J|1BWg1(Uydi#rg*4%twnuusml9{s)X z`jz#c|3VWRlrjYMEH2r2DEBtRx0eg__0djjTpNW)u95O{_E893hpb(b zTV2yZzzp%#)41V*rcS&z=sJ|z4v+4xR`v=|ahyRSkowfnIZ%->AprK{!}){-OXu%l z;h=Cfmv#DrLDdb8PDmm*8M6@@Zls?xzsQ|>t>e=Qer>VLYiB2D_=1~}VxBNnYx5D` zXQgef%YUrNFw zVNlY;UbUjs>T$(;@}%@U5FoPAdW#`nA+rx_Ij57DP{oiRyV4IuD*m_-TKu#(w@p~61)oX{3v4jh!21Z|Hd+j^?d@=9{dcWNbo=@m z98MBB=ZAJS4V#j+?4v3S^Dhe|1>y*zzk@FD8u+F_!x3(fl=$E2xDJQxdIYeh{HV(Q zoXi}asgla}3C4f3+zF@?X7+bwQ?2e8Ug_4>5(NYB$7Xdd6{8oztE_L+E%i@{K|dB- z{a_y;Hle9J>9|w}`;H+CtKe<^5DYXwhrZCT4MN{>^bKFRC4Y1;_CQIyz zs7!l3x23Xi17BaT&>lGG*Ko=qf?ukcBKRd@zHjv;9rHK!f=Yq%+!k^aRvy39zpsqV zu_o~O3KOY#n@Kci&l9tHE~@PPQ5gC0ANvWGIAflQ&Fuv)DLwh2iv%2_uCvcRzoti& z2U$Hr2&7~ujP{E$KY+9YpLuBqtFOm^Dt%@-b}b;Be0nbAWM#=W-*(4k$8Ub)zZ8jU zKf0L`;3cnBqD)}Tv-;jsdEq-7pNNeG9p;KgRicS;u*M2?a`^0pFWzPZ(F=z;j}4H> zP>rdKozVSD=Sm3bhpBg$qmQ;Hv5B6#sggP9G~MN=O^gQ_h?{!i&f5dNmp%u}os6vK zaS^lRDDR(t`exib_NNO>2G#|SUpNcZ^BeJ-jkEo+#9-Cr&iu=_X-z`+OaS}@us&9!EfK956MWJ+d46peyUEXK2<3C3X$jFbm>rhY) z&nWH1tVcoSnhl?VKMCIcZD=DhB5w5(QgN9yyFaK-=G;1Tu%qfw)>>bGqJvy2lIw*) zCQM+$8}Sc}5SEOfdf%IR`a@YBK3Wg4=u-KLk^tPU{gB%!FOd4c-`U*pw;UzRol zKR+b@&PF#u>T6m!e7Ut93P!HT$e2ZMC%Rf*|9?7Uoz%#Um=l?vX7v&uyT9*xspn~q zEc{-g4|Uq8wNEZi!S<_v6jLm71v&i#+212CW7RT(Nddxr+KHwYCB^Y~$2d8-MYGk2 zrOgSNz~G z%l7=b3jEmL)d0}JYHIf*O6E*m2^%euo1T!LO1P#Er9r6w{|YE^#BMJ7 zd-qbT5@g#jEySWwM>>=JSUAoi08>l+A&wSIYwVj3gspm0c{mY{Eob(8c1t5J1qhQJ zwnS?}d9z+WiE4o)YWEXApK2;>hU0+@5Clt|hjj+|XRrxbziWc zSDxqVQ#ER^cvsvH#%h~F58uXj9rpsADJ3-Zu&e_u63(4aEz_Gy2pT_~vyzdZB?2@@ z-1@h9#hwmr%A(O~=-V*EMxEmteQ~Ox#}$O9A*!0Yl}VP8pzd2|AWAPKG7-)4Iu+Kmja~TjUv*8x9n5dzUM%~iB_S!JGA6G|OIiv#zT1KY7 zoG1IgT1j^_wDcMtps7dPJ95ceAESBt7%Z77VhH~4`QQZ27vZ+{nJ!@_y=`Me6m+Y| zybyup!{@P%(h&`fN_vVm2uLGDo6#RFpwXYpGvvG7-i}_Cyc?i|-yb z`GiYKUIu}O%Ar2^U(7Xky8pU_N$`w{2J-2!V-%(r*?ucuf5)M-MY8ev()q!mBrybH z$W8Cx-^t}f2O!(G*noxZ{pd|K7~W@;5vxN1>6espVsRF;)}Ux?WYC$|9njw*B2U*lam2l*tWOLx!a zkiIL$#snh>KYMN+vrgAx$`f(9z~RvGO1qS}9o)Z>4G*Qze}8IrhT&kx8Oj;1xawSN zZy6>lL95vG38desUMaEmmx9EoOAsVkzWoA4u;yXc)TH0vHl4HGSV6F_|`Ghdh|S*m>i5d4j>| zG-M(PSrcBHRiC41L@Ju5~;-e5q1z62{x; z#EMK*)=W@7t~EQC00-zEGeo*WwlBBN7?*$!f855PKrN>lKLPD(?!aBe7=k1+GCDkd zsp%1RPPq*Sj{jX-#!=jg&}Lp_dkvDu^irntkTc3b4n|O&=;X7d`squWLvVS#>DDsl zfan#Pe_=oX0006BFaQ7m*g={C5wY6<0AXKi7m$F-3jAP%Ra*)iJu5xJLy3QAgCzAf z?rsfZ=`gEdILhgqstR7ZU0uorR3(Bw-|XQ8?rO=r7)#-RexL_UXhNqzWP zp22@)qT-!<@0mCq{RPUKoP7WwHXB z%K9l-IWn*)#tb2Wsyv@IR-$6&^xsA0Po4rb=LhMkzhy==``9Cii45K7DJkT5RYnh~ z`Fc5mqvw$&}vF zXpe}G1t_wN3KAj`S<*r=Mp%iL6bD*l#6ZPo@5jfC_!yMjRK+%ex9rolwe)LfXbuF_ z^2l#KZ7qYSvcUuz0g(_WcR-8hQLsf2dp<7b*OxOSO?c6xp*BR;VEtbezuMv$MuQO1 z<=d7d1PSlDWqa$~4z;u0Iz2hSr&Tngi8Qw$uRL*P1v8B_X1hZ@;jl0SL>5gQVi$Gh z^Bwe(k{a3T@PhUp7lW$T)JkZ?07NHBn(g|HWIFo!Q%GX2oqF%gT6XZ z(|s&LJW>u0cP9+QuAmkfbIIkO5($?)4l)YnB$JmpSU;x{90!EJ0VSDc84{sR%QB?Q zjRQO-fkR1UO_2e68iIz4faMK9JBx9`r_jj5T|y;ak&D9FFnGATUgJXk+w|4aRaR;<0$>|5B%=}br;cTX+5F=ZIQhQOPy<}`G7%PnW1gFbomh%8@H}|wc-d2sstSn-r zK!F!tX6a!dj$%Xx6DYvJ+Mb@jPE%UJY9f)Tofq5a9>-|iV%k4^27czs+90K~F=nht z5EA8j9zL5?7#keNl$5g{z=e0)ge{(Q=jCxkPqP`qOn-R#gh) zZ0bu2$1?P0Ya_8ZOX@QqXvLa9#VkZ@5(Gr#HtmXChMr!6dJq`TohSpZuXE-6{Iq21 zr>dcGU=Wo$yqxloAPmtA;HbefoQ$oNeCk%hN~!Dj<0*Qv#1O#PYpp`xUx?wiX?*FDl#umr3xsZjLUfqqG+?mW+>i*l)V9Z z=u0fRVi>>!s1K9d`(KgWL~HJ~S_fYz;3tSnhG~*p8qDLUOgrN2zAtsBH_Ub~oshm_ z_eF4&(8I#Q9T1`<#IP&F;ToxY{Jp*1-~w${1R#b;03U}VK6&W&`+ysSC^sP*RLz=` z24Xl^P!tO&0tMrw=9Y|->gw?oX;i}HDnJC;ps{3&2h%7t%1yAnZ^^3=&#T-0qZxWz zXruMp#-CQ(ZFpjCb-*%hbRM_Zzfq*q)-T7*LEsqzosPpCj_3qwG%GYP@@>{L3r_iE zCiu$;P5#8GL17|9K_VBLh0R3RNdPM1W_8yZo%ED#-`rT+*Om2*8LjY)LyETcntZEX zG8+&=<2rok#<(u+&eFzM)_cbMEZsib_E9dbq6$)W3`x#(!mlnNYWROCf{<6JiAcy7dnT%@*04x9tl&Jt0W56Dt9!Gz?zC(xu+Gp6dRb2pe-5P&L z33VU`L7~$j8dSZSpJ8Pp1R#la3{bM@l9_UVxQz0L;vjUaO)8#V2{8(F7SZ$#)2q8Z zf=5t(-H2n5W5N0`FZwC+{VF?FYhd=9%X#L`V|MUz0t#+ENuevzm?-A^HNJsEx{7SA zGK=zZ8~*qFPiWuz9w6vaB{j_tjnLD1s{j<3c|C4knqjB@cr5 zUtA#wc>vsvZ-$TNdsuDfYY)PC!MinG^Zg`W=O1#r8bfB2=AxRu?u5IGcH2+0D`TR@IAz9&@| zcOl7f+Uk4)oXuFJ2LeoWQV?*9$kCS4VeE!}!iBQx4dE{vt&9B5sN9FsxgpaYW|_;Y z#JfT!R^|43MNRUcDoPQCW(ce*GD3jqaiJf62OUpb_e|v*T)O?a%w!@lE`=6B&`Fxl z`R$e8IX*NA#=|ugkbciHy%G_$Tpf>&r^WWOuyG+w#>fN!Ob7GG*=-4snn}zKs{kciUJ$Avq3T&ci_sa&sFj7L-mASExrOIs+2VT_si(qL3Nt*W zdL>Yjdl7!LQLno2JrU=UL(eRgng)VdbrsQg$3kp61JxkiC~4A3le?z18Qfk#S4@#6 zJLX7bpf6290)wNJTbRMeDyY6R{@w5Tw|rw}A#??r47&+)z9qJCowZCuz}iU0oanVU z&v&JURR*As2`j!}N0|0CK7TSz1EUlfK-5Y-x*NHGo@99q36w7D zBV}f~0F;_;6HBC}d;~yAv7`mE5H%BkG{rUo$SWa0Umh?a#`XclH%)I_$#Q^lS|dl$ zPSu#(>#PwNag*aekY*H=E@wrkUMxfCiG5}PH5o}Pf>IEjFB9jYt|ev#r7^O4Nwktq z?&(U5?k^w!{+@oDkxn6bO@H-w^b)%_-Snx&@v1z%87PcQgChz-R*SLGYYnV$)2)rw z{X|(+6aZC?=Ce8}yhPT{^Z{CS7l+#ox*{JQ8Z5`p=87&K3Q+2V%D`bl@Mi|I?;(0r z-I|ce5h9475J{#{*s~g~0RR^$li5930eF-b*Cm2YoLBrvo%2jWSM9J@@T0M~6wQc> z6P!swDjIozVN!)<1#z<#3j7Z6I`kDP-SaHT5KmBu%m|gTEbMCf0l#{-U7m?b#_CN@ zz59zuC|Fru)fwDU;m4AolPOP#?|G$vZy~uy`Nu|Z$qUUT@Cxd&Hzvx^fflL2zv)pDcpF*eQ&O zC*k;fe3!6dc4~(q8dTkyB1A!`Q6dl`)mbT80`U;2Ld%rzJQ3FXD{+_nanodk2}m8G z)b1o)0@5o5UBnKeiw#1gHjo@fa#ChAa$Eq8Y9@?$pt0b@s%a2F_|`!64HQab2+)j} zX^3kf^2v%|0F-#75*Ro~%(L2-Q?q4mabw$etoJZpzK0LR?nHz6ps-T?JlcmyefW({ zs%vbv@<|Wnocnx8fBdvHb!ykFi~X_&8q=RX= zyyta$1;&KymSpBhC_J|-E`JrwH{lqpH<1SrJK665T2}ygIzguuS|7FFaM6O=srK|t zzh?kS+Fw@=PWrxOgaB}{i$7foVm#C<&CIz@O`Hbwbp3O5WnI)Y4&KI+zAD&K05@ZLGBOEi9@2wW%Dt|fc0Rq89=Ign^x!2JnYQXShD_Oj2xm$vYWvq#P zGf+L8r?PS;5-xwLzn(BvABodJ<7CqPJrD3Ye)AqN!WDkk0?)@->i+aXa6-nJ>QZu3 z-`lf1f^#GYQ%JR`cok@ z;Ab`;3KhbUbmHSogDy4jh7K%kH!+J2VI`|L@Z^QR57!EiMAzQTVudO%Cp{rU+*?jo zv};D~6S-Pz4N`73;8X0t?r&4xs&0PC_`Pe5;8vnNMX26#09UqyRg#)@++thyj3z1^>IsQXFO30 zB1~~&xY@b5A69%YSm)MucXC_Nr*pc5Z3GB8nUjq%#Puo^!?>ublmf))nGX54_WK9% zhfP@am6A@GVAS=Yv5j}H&A&KQ3=D<>&x6^$T|Nk@h=K`jjyM+AZDn+ZVfeqGN;47+ zWM#@=IFpL|AP@)JF|E2lvG=^Rn7yEy6dA9dc;VB~{m~7zYdO~hfvi;KuH$A=#Sj!$ z<6~;*?WIkec!j>WKw9fIQq>)m7t|LE84STf+u%!$jY*{$rH8OYpR|~oU~o4dFOIk| z?EELo@v^zBTHp&Y->iPMF9;!f>n&eq(1Et!WnTH#lRw=LfZjy~sF}2EfP7N1z(DPy z#^cHR_z%Gx6vIN6nJN`Rs30(Km9PqXb&0USSy&u8;?EtI4k>(EIMAj2+h_u1jav3` z{o5;6$FR7X6)SjWMgXNmTo&X`WkYRksXaMH-GWE%$PfM%Vn2r8Ohh@0S9N@L?1p|& zqPQ~1rt)r4CIZenI`YfwIL`Q`1*DWEcyZwN-)(JER8GpHSdln>-n8yC>h5pm%BHL{ zADo|#1$8{;1JCNLIQ3qjyKuo|0I(VnEXM3sg8+Ckk_j`zh@^26+z!uQ6WWg&YV*ZM zs(zeosfb`<El5ri=az(9;SJL>EUKc?@T3y+D0XgDBr<2pTjPC7Vfu9|w0%1FO&a;ct<;E5-@ z89hm&(O$w*26&R`R#JhnNBtWIWhNa>1H3*o#3M>rG40Jtwz98GZ1-)Bdu{zC)RfTS zs&W@&%BYd1Q(66LDh?aOpQiJ!?nxJj z@-6p*@*j5+=V!1o>>2q|Ee+1&_qlZR;a5pe<))~2h!)_%J}Iw+o=O|o-(L`TIQ^sk zrXfN`C*3h@*>;$OL$RbK0Lk&kKCt#3;4l_xDYjp&m1m;-20suk+lO0{ic#+^(Il?&--gvWuj)aqDe?&&Tq6`+vgGvM= zxiY6RnXCA&D3edQmYGH@P6f#?E9dBE&m7pKj4z^YGO8FGa)BO$Fl5PWDy6Dd{8>*|e=ILURMx3BA4B%lXXukx4zzP_87@~A4Tmh(HP;NT_%5SSM zL$~R($RkSRJFu9>J1MTowe2+1TTfJTVilA`+t*fzxwiv$7T5X#GJ4^Ay>;z|P7Pn+ zJ!DV}`Ll)rQ2`2Y%;b#4Y=cay0&%c_22*qiLq#EMlznUsjwLU!D2QYsZ9JvH?A_U%CypPHY|j$H zv60_xAO7=>TmOA-!R=Tga9~@Dzds_^y4_=O_9f9x^{08;AZ#R0#Uz51e>ybwepdlaT(O|@wXbNuENqH-dM`O0Ge}7uo<2UaM!Zp2yY_p| zlyvFuMr@8fG!t#8i(U@&l(#=yKmP*AQ)p<2)%*GL_-vX?A@WUR~@ z46BFo0PAa~rR3KhUgItKZs7cRIhZg9z5L97}i)R&h)UAi#8)x3i#N09C_knKrkFLIq?ssml?4 z#l{r#ldcC>G(uHUL~FRSuBQmvkSZC|@PL*>3b(gTq#%>ZQQYtPU(OgOPP5~Xfoedm z9HYjix!lNnjm|$Ycz{aY)Ms+~Y*~#UuX9c3-Q0rz{H7izc%=FavpZ;HqCsVFCk090 zt7|;@Hmq-lt#$dz%y_b%@bUYh`PZv9G=NGwd8-5hE|}^V%ZH+b1QlDzC%(oiQhAby zGU>y030J!v-Q7szjTdQCENf;=;~)X+TXR^_NECtT5W#WBec@Z;UX0XRpB|S5hY@Z zv1VKcx|pVJDh_wwy{Z%8PZ{sBgN`kh3!x;0B*cBY$IBhh8qOv?6_?sQ0qW7WWB=YU zmI5B(%wOvh@gy>}ugFM)vpK}+rMxWyETG_oBNZt8VYw_j0HPQ2X0+CfJ!Qo9qv|0fh>J)-OjDH3fpZ(!;sB$`kK|KBWm1o^7whg z7g(lEyHf{aA0J#DdlusNTc0vJj^(HOlEq#44} zsi~p>Un)soDZ2kBfra#cCaM0%_LaT^6Bo*WB$Xlh1Hi})N|N^=7;$%kGQsmomf8LG zfn!edgYj8#W5A1O*&*)S{HMh?^BnVJxWX=bLUwMYQKMGg#ih4(8HOK!jVc8382t`- zVsSYp({oxXlPX()Y2+6i8pZ>0?$xY`C2mqhz)T?dHo0l2^MXeT8>C`TtPa$nnodq) zex08C$`3PX-6wZf87Eut;PuX@vgW5EG}#xYJehxkMr$T5g|K1FQ@qR`Boz^VI8Sn*^d=Z!J-M4>8!<&63Q-?GO zB>NKudA%TDDG-%>Pcb%*3A}TGKs}Kk0DzMAzYVH?HHi0Lg9r(kJ6z}=;wmgMBm&zL7OfYt@W}3S|FSY`t9W^* z2p7K<3WNuxROUfKX4RTdpk3&J%9KE|J|x*sz~V#X}!kqdk-5kOR+?@K2ywT0*T!Rf7VSB`N2L4 z@ig#DfD7_}TKO7C;G04j(5yC4+5oB_T#5u=sXtI{=3?OF?l{5keGGGnMrNu+ZF9Uc zh(QavVeImOrMRmPJK6`LhE{#cXnXxijsa$g-ThI>gM3)l@Cnc4C*BL)wV={=qy3)UivN zu2@s_B|R-R4XwNW0fV;JcM%2H8T+Q1v&*_L;)o43wmKX@W174&aE#Ya5L7t^(-NEJ zyHp)x#aKWnR$dwUh_3$4KZ71!+Z?wTZl7&Zvs;jI{xJKnVJw17rHT4s6^@S*=%-B; z-e@U}q@t(@8DIe@E;fX^Yxc{US&wG8cGihP)I)(Kha?UTW*uG+XnB?SkQV~2f zw@`EK9p0zDf2PU|!R8VnYjRihge0 zSJPk)a8)RSwSS$Sh^dU7w@Z%&nfYgaBm7z4CBPQRn}~&3Vme;2`A#UR1ojg_2>A>- z)$SF5Hh!~GM#yuZHgAYXdsKI#ZPxQmHH3J;V@&F8;G)IW8!io1;{z)EA2mVjeM_&q zXvN|XuNXPZHHoI9E7@;Q`vfqj$Rp4xIlQASk-l!DHrrn`Nl&-{S$wf0O2QmGhf758 z;K>0%i!getJs0}K$C6hai$dV{zmtU(EC-hIO9~KX&88mTRc_hz@}Ji^K-WA}!FZeh zXTHZGg?>JPy%fo27T+;QVFv)Q_P?$eU#_(Oxh{ZVf(t=90059t|A&$B|7QGeZbb=Y zzyb~6Tj7b;gh~1iD_rw)9gLk=yBI{y^KW0?7BME^GEYZxEOVV&d(5nE?J2}%tw3RI zh*4?x|J;M%uN4G|;Sfb`s)VSJp=N1#X&c`awMVPH7L6i$jxGf8ldLYGuS4^SSiBsZA5ryygXHqN#3SBo z?_q-nHJN(|#Y(@qSWVQhQ>sFb3DGG|+ew(SyP!9pdd}uQb(LJ&;9_U#&c+s3VelWA zw$=8r&-yQ!4kSHjG4W%|1S@sAOStFN1eH%?kIb}PjMAt3y7TwFZ*2IDcfh0#v{Tx7 zg2`c`VkJVoP(pi6+i0Ry*eI8g`gbHI;M#%g^jkwWY1KoPY#0jR(gL$F;F{o8Xsvhp zt&E9Pqgjs+Wwha8n*;~PRhn*EA0}6dQsp)XJ<*^W*g( zov`}FGg|Mx7QcVIOCRb8Z{nV`CfQQWymCrJIJkQV{vqrh#->o@#7p-gNDGRRzcsRA zK#gnO>LscZ2}E7@#WAB3Bk$5j^5ZDccxBV|$j;MvL;9(<`Pv(ILUuzNc!E)Hr)hrlbu`1OP9qnG72(^o6QzT!v=Bm&UfVHN z*ogsLB#BZk3u5y;FdBQ`8bO7_^Oa}<%`**d%|WOxz)YFt;NwVtQlpX4*g4N@m^|9l zP2r7OI(|qo1n?vShdd>Mik(hkTkr`yql@Zi*D5S7T6@-#CI#t;FNI)pdPlb16lXX{ zx2YdI`g9@Tg9GYmL*mBHc?8|sa@372mDbc~2LUfaZwrd$Yki(n%KPhyEL{M1lgAyF z-$kqnPkqg2P0f=!C+1-o1~igo(5$4|5C(UOGa9oFtYr@300;gUtO=SuXc0JZ37|&O zc*A7*b?h+c=A#bjm^N(G8viT>q6LjkF%@8t2WGWH?fWo%aWC9tQLERj;gj=iB2T1? z(aYuB|JuDe+$K3}zY&sptP;{pdKTA@_X{=76ao=bk~9kzgpr0qdRq1%y9cST@g$D6 zsT&|s_zY=R?mwziW{`PoQ(HrR;Pt-N`6sOD(opMOgbtD%08W4=jE-_B$DdhXR+f-* zjk8xr)tl^j=og{Ah?MlbeHB(gyai&~AAia`#3?|4PjdEeXoJ;lnDXy|4#BO}c}^nD zlXhZMhR%AR^J!7;xSKX7Fk6H&jEXLG9y^|{d>*7E}4nb4dw zepKh%Bd*3@%(-9=M&-^}^%^O|Bk_>hk_LAb{Bk*=W*VT&TG3Bs)P`1T_F6k;K%N2( zygv%oZ-a{6M;bSgR9rv?n9wXBp9WC|acq&$-&~rBy$cnFV7hRZs-MFX)zcfqzyL6!PH1C&rv^eGV%9;leZ>|ob6^Mad(+EEVKFc_ zR3)(H5*dIH^rMXwOX4$kb><_2p{CNuVd`1-dV32oOBUj8{J1IxX5bV}mE@iAC$*>? z2SudTq_ru1iSfp2*B;2`zkL}azg?!{uI~XhKuR+4LzUDx@i{}9kcR(w9+KJ0S!hl5 zv-lD&y)o?#Cm#}bWm?1;o7k2ousxZH5#VGV5|8%?nYFa0xy*H9>9=vc%JN5X8HW=n z?@0x*k?&Oq2JKEI) zMqI*+ku+v~R9(yq1n(*Bpj1m4o1~QC%@`$ncFzG77K;emkBvW1nMgId;-LU=aixe1 z3$`FXj#!&P!SK6BhnF!=XR^-fbd@u3&tmS$i!UD4dwwjWMLrk-$%w5(v!0{^0`al09LU)kBAH#X)DN;HkB-%0G)D-KsYi0frc0|jbs1G&v zy(~>wYw`b?Ts>J7!#0xczRV&E{m!9d@UuXA1Yc6D>ng!(ZF$n1-t(s@#|oHKM zgx!?LZlqS9OQg^e5SE_uB=wXeM6scW+_2?zYqZzKsWX10NVu=8zr@v&_I7~AxdX8m zE|nI*fr@A)si{jpGgH|cMuHmzO#$baR0mTB(OFomllzVP-%-~yHIr`n0ugQ?;V!~B zk?q{1orBuVH%0q`4B4Nh_rZ(5AJGB&B1+TiIsXL!`y%>CftnIPSb*bvgH=YqrWzy; zZ5+&jj5>?dfOET&GqT(_)NB~l5olLy zIRT;gn7JkV4ljR}59==1Hcv2=M$kwi2!Xd)X2(etJbsYQs|kCHzZNOc$7xjk7lpEX zu%E8CenXF}jfxDp^Cn}M_#kIHg-3-7{?y!so;5Po+Y#c~EO9Hx{Y$Jz-;B8*Kfe&!F;Ehya@%s($ zesrpH5PtB7j}06}>KzvSD*1loeX#O75EEbmjKX990{|=-T2*eu0pJTLzq>yt{rcE) z#2~oWf=;LI1CLvR_xmICN#K?3r=M_|f0X_`UW1Okz5Owu#nsc^+iHIefHrZ~ZMFaV zk)BZ5_doH}j3hKbArN3~q#A&bMDJ+_Fe0F%I2b4On_YrEBm?I**Bz^4Wki4ovF)_( z?+dRsr4`{8HuQo;lk-+UKNSOChldB5SfZmFN!e{0osk;?LQns?biX1T57%b?EBL+t zxN4AKZ=%6#v?B`eUfVQ5^4TWoH1i1-@p)Tu{b5SCNk{UHMbW9hsb&)o_s1c`N!G~9 zxd&pw$}9srUjkesr4(F6Cp;>wJ=NI)`XSxxECKEU7tuuU#ipE+$5}Ut0Q!e4q6<~> z7M_V8jfPboZyK~Tz)!Op0?^6m7;MrxE}If;)hsoFeLdj5`?nPU=|Yy1RI=WH2Dwm^ z8`Yn!2I*k@ovTkrke+-pz78j%rg+>bk^KX&`v#!EN($o<{VfWjh$OYy`6`m`u3 zgS2>zrcKHTF4OQ0Gt~GYB{tDYin@G-r8>hR=={8X^?2$?RU(o;+YUB4l0xe^xS1K3 zRl&Ndnz0qOoAd>1d*I^k*?;SU@QBEahPZi_Z$cvc9!<#F3!J4Smx(w^h+CK&Fl0ai z$WP1z)WJ1li!I^%tb6gNl}AWRV3z;VGXS@mIeJ=$KEtSdoD6Zhr_HO;_hnms)$69d z@xIDs3>T8#>Nt%OIpk?emK*CyD6*99po~Q~E#F1?!gR4CZd9l)E&vtGabqq)1yn2* zSpnKrR_Fmp{TfBx{|l$uYXTc&X#_iDiOcd=69CBLv$J*UC%jz z)XWo1@8teR)d7Enho;KKMff1PbwKUn8w$%LKhl)EiM+y!^)zF+ThBBj277Z_huZAr z0=^~mAt5W>64o2n-B9=Ucvke{(Gn`s&To^?-P5V9gk_H}_K$g+fj}g@C!L{E7i@8v zlyEWyfpY5u(WY-&t>br_Lv}wZ?yj5rj$O4E{2R*`!^0|=I$F)><%(m|CFQpz^LCEF zwRhKeK;UXm79iPK8YsNgq;? zxwFOI#_)5^^6Z<9=d@qYS_UKTvT+Co6XI${W^DT3P!upe%h(g4bz#_$TYCNaN^{L7 z3J%n3m7cMXSOa5g8#?7F$v(6irQyV$F6Q?Xz$az!<9e{KXB%qYTlgJ z-g*AuH*ITgTd{K1BAS|}e%e6LXAX^%peH|qwwqQ47zX60g1(7vp2&@3V{=*v@yqko z;M!qCmd0DE3sNCUB)Ho9W!;#lh(}jWrR_C)x>t>R^OqnL*LT^cA{jGCyS&OaSCc`! zes0_ZgiR2W%=`$^M_&H#<02imK$s=3iG~2S@18)Ptw|vgzTCNt4vB33`!l;@Heg7H-ZX7qYVA><80TrDjP4_Oj-c;aCG3i22aYaWte=O7b-@F7VMs&4=n{Ckew>b4;SLLavBfZDD&U|eZ;bIPpXhbk%h&~!fWsfx_2QEK)QBGgiU(Vv?!F1Y$ zvZk{x{H8O@3bHKX&A$m~m=X)9bULre&AZdlY|Y2(Dxs9LLZA z$b!bfKJycAYhbcwI6Tfm?k(y%8JmJEn&mB2vrQtAjwT6~x|H!|AWp4?&w-FU-cW~6 zDRw(dI0uO~0#SVcdV6_&X3Kz`zRMS8vh~7~p}Hjd8q@h9EwjhFL7lNH>>NTUk=~kV zE^h=v+B%<0jYC znq#V1fOvPGF45wYHbc$HFkD%)|H`%I+TT1TZ~2V@I6q7x6$sKG94b8$0{}qX_TnQE z(VydpjPHKSN3L@2`wqP-Bz*%8LS%VdR@NwOB3<3qpvQkWW}rs|)hke;lB}Dm#;GJJ z6~$GcC#%1Q2|DMAn?WQB7Ouu-e7{v+7cYBfu-dPC61iEAmqiO2PlADhK>Iqu4QUm6+)yV~O;=As~v-L+nI=QRz)<)R&7w1egOk&?)9 zu+zHk8zZegW+oigqPXz(&%Q@uxHYTk+HMN#G;zB8scA-GUBJR8%Bi0uplZSZ9g#tc z=#mD~f!p3dYiDr_cpj+jWZkOO%*K}vQ70UsC8TduVhk6kzVqKU(H9SCSO6rYsZ_$E zgWD{plM=E{W+u6TaT3ptHNf!?JSy|UAUmnA*+?Owf9SMhZ#imuC(80Uj#=92i0&g# zu(uWDO%xf@{N?|i0F%TUm?R({GUl)xUwQ5EX~9;^ zfQ0`JO)2Kp%vi#MyBMbh3mu<`reU{@7(&x3(3t%(8#O28Zo7L-%26}b~=2r-p~8&3gU#%d?O;L z(V1ONN%OqHL84_u8WQ`e9xb#gCY7$h9>U%1-1?>FAp^6ImKg}RD-)B`o$axy)mUGg zGiAauVSzJ>$+=#eQFgCV5NHe#%ZUl07$N2q28E>%)LC{v-B6VupLS2P0_w6R>soQT zr4E##DLuyeG4#9c7*52pSrN=b(USvRj206BfTIOKTrpfL0KR>(kDv;WCq?3V;g2(w zNZAfm%JTvhte$+=?jU{aM|(Si*B9kO_VDgT9F^NzXQyX2kYiChsD+^xo7nXX4g?~8 z(T)8+YPWCXkq)s*kh!a;HS;lC-sPv?HYH;h)+O6^_ORak+u7M7o?9OxKJhD4Mb3#- zUZagL^Lo+3_A~janZ}#Vub(F14)qRUb~o>`q~W?GnBkQ5$^BkFbYWf|R@J!N%A_1& z+3f6=BqbuV(l&{$zSn?J^{y4c_S&VfKi?7Zw;101^M|XFptGI9Oneew2SJj8GO9@) zYBDq>T(PO~pdZQZ0L@;nLG^QNMTG^P@Rne8-YN(D5ZI!(bfPFcZj^+wOSIUt+jEJ} zcI4Ga3We0jkz(^Tux=ez48Wl`MnxJ*autKsem3?k$jqxQVrj3eUU-!% ztAJapOp{>qu<7fp+hh$^xDP;%soPwKhmBPqTN0QeQ}4j7j(&kH*e_D1YhS*uQw zYGGPR_~I-TbNp2=sj4tTB1EE(xEFc#dc^<1-??9LQA{U* zH{E_7IUCoP531IN+YDoDcyLRLC?&Z}AdBm!O@#zW;902VPlf!-I*RVcN-wIrqthEK z#P2JTbIHS!k*~Y8Lxnn-U08yYX=et0GL>VRhlX2QaL?Vvr53@kSGk{6;g)fIm0_D) z86Hjy8=4p)S&qh6Itn+slZy4=}+^U+8YrUpWGHm2@t4ZFA^t z^n5z)Njq{5yWj92vRtyey@ty5d^3@Qf4Mx5~-zF(nqS zO7ezV3x&ghe-Isw!=b(F2`9Q0(>&hx+1Bw|6-8N?A^60rM^Z*>mPEgwU1+8*L(0p$ zWtdldb0vaWFn?6wwcs~(dKIjlCI?J9-$F22e*dCH_yN9Nkk7cJIY~GW^)$vBbE_yK zt`eUyzegyo2U9VFPlmd@i(yjO1AeC8Rd3|2| zI`%r!%{D7V(&}oR;@zTo7tlj0ElSE>yq2-tkD#N^(}>QI6j86%khwCn1MUDqBRG}` zi0g)@p_hkcA!kKW8|F3yW^d7;W$~DxDDD4|gIx{8bAPfCw1|f87ZsA){`(!L`y(d3 zT6q#N>bKg9hU~hJg9UaVs1g|);2jC@EsV@i!;dH!mH?=_?v(OCK{tp{Sjq)`H%da*9#SKXA=p#qPD<)M?*ua<0y0|+S-HDbyej-koH~#wr4d+=fd^rD> zG9Y%M5Otka8kVeSJo_Wv(`tcDwR7HxrE*@J9RqSY)T(MrC3=DIXXdI=n(X-Bm3{%5 zLJ*l54Wk-mm2esk$H#vpia>qT;|TSxXtnWC0=Rdd~v| zYL{#+mAK3JZuV(5*Fd&r5mBEdq`3dwa+wrUtM4;a8!-P>tjhA`Tai;flSi#k(~;yQ zx)ZlJz6HfPj>~$aGKP^AU^qfDLMhh8NQ81%hEsEt1PM!7j}KqxOP#goSKbl3HN4WC zbD2Pksb6)hfYF#UYg?63iKw`Fe1WP$KzjFu2IG^I9z+fT37II2 zvN}&b12y%rj)jGiTU!(YOpU3Vw7cP3uZcWsV#1Hk=$!oq| zEJ-2GvW|KeNBJQ!&SKq1^D6p|GC=rW^-^JQb`#a+n^<{37mI-{$E9Ekox5{6~$G#=o%XM;}cW{D?}EO;Ao%Dlek#ABie-@MT`PGZd(*oea72H^Sj0izl(?hmpRl04`DyMLcbX<(}PUzuSk%MQ@~nXJ#gryNww` z&XQ4ctZz`Tsvcn5OCCmu-ynJZ#L-v`5a@zD`F3V!@V`)DgXJKr{(l~uDun0LxO7WQ zuH^sC#zFo17oNE+kT^xj-@tsFp$Hcj?`s4?d=aBM{er%XP!^|foFo8%%z6vfQtKeqfM^ssIdiz!l>2^o`ME@qnxS8{Af;Fo_sgX z<&@L-9bI67jSv0wCyja_1D0b1UThcnFde_ih>+85xqu(3vPN8zc<s&WD)EY1ROBr8Zz2v2PD% z+_b_T=EU6Z45($!F49}o{HRR)5km*_a_ppT9P`*E7K&IKM@}fHmkWQb=l$u{cv~*! zTiUBh!zYKUHK@6rBY+!&{Fvu_&i5cul$DgZ1j=H^|E;93A-XST`AxTVC^wa=X@}5B zMlHMx+zvi}8I+%b2)%G}2zHGz3KoZ00?IZ)==BF5gM73fYr3s1jh8>25aaXSF69KC zUuGBUn_;P9@NrrxC%l-B1fLqS=Kx|*bV=z3&_m66DWceSveQo5cQip#{1HPrs!u^e zfWUi?b9rW)&3gr_sdTZ?3dmp53$+!P$))r$_%rOfrOS`S*e>@uP`7XA+zXuc-#Lol zN)6U0#39#gg|*=N@lvs0Op1-@c%X*C^nd)N`Wux@#mY-Iw**78GLCSDySgx+>PP>#iTHf))(kZ=1+D)f;a@K%n5a zbet`YbcjQShX$fMr8iC&bQHrSQGd!e`ah__N)jN1O;;yAHwmjZf+~u*Jcq;(`f&(P zHRo}D{=%GH?&IOL3Y+$lAo&3#ai(#Yv@luw>kfueyq06K8i&zao12<(8Qkl`^e|mw zX)Xpi!?n3jxwR~t@lI7Hv?@ff64>oZuJ!#Y9DDC~X5*h*7mTH{KM}HNKG<#t*UG9XO^Hkdt?vskZ5U z(2_r3+>9Awj}tP53AwD6R7>KOMaA z!;kI{Dpu#d_3BcXPmrR9V5k|bj>xaf@vYRR@2&yw@dtH*bB-lDT0942mU)ls@BR%2 z??V-Y8E-dm2WgU&0X-v>c!iB5y}5_6jY8Qf1H-}<^WxxDjXNfDOC1O2`wYQTqUXCO z$^xfM zyBFe#PaY{x3f?_ic8v}%jXMK1x8l?Mj8vU?^xZA(mw zd}{}<{YPFfe}xwU85qyU+rCOps+D#!phh6YaBQkR$7mAQ*az5mnq%~i&cZ@HDzjG_YZ5} z{fxW|A9jIM4LL`a`F*9vYvnkp&9LsR6O~%1hu?O~VjTd&MbkFnASJKfVKaQkk0yd0 zCF>szP70~W@}5bQ@zSZ2z5BhJ3c3(2XgX{ZFog8;oa*2iUzv#?wX2_`vT=#TKFpbj zxeM`EVSb$v1>uSAs*+-I8JQ05gT{lru6-*0O+9{Wr(@MfQ5h!Igd_%~v~g=pCl2V^ z>fv=VEZ0Oj&Ep+tmWMAWj(*q5SKUkLLb#naB2Rm&euxuYn_5T4E^V9r?cx<+YjHJc z@Zz&)q~}~T_JCAvO9rhune`3!*Z9?>y$~h12m+5~Lh|`a2n9)#HlBy`@TDCLg^9~g zb(_x^2xDAIRFFB_4Fc3!)WSC>e;7vw^GS#E04?ipxIL0eWpD;D1Sf+LT*cjuXT-3Y zfE8iU$Viha+|pIqHJ**}gOmvn{iESnM~l}vom%`PyT+`%^O1%sm8N!0FF7PsbLdywwIZpTZINu;HuhCopPe925c&j5*smv7_z2ZPeN z#H_S8PtA;*bu3{k_eZY4$ExBH>IiF zDOFrYp1^BZUhY|8#1IF4qj7Qapz>C8qfjWIB@y+5M5_%Gx~c)|!)adV#-1niM0?xZ zGsrNw<8U;LzFF~i50lJ&JDSxQ2W<02y4E4D7OOUY=MzjDHO3)a4I9Vsik>(@Qs*w7 zlj`rBFj} zl1H`xt|s<>XAYGc1tiZw#lvpg-qV;;^bA!^5=VB!7h4xMXYaC_<}(8z+Yp9(!? z6T*SY>I*w|8c-^pHrb;;PYvsbQaL?1^bgVJg-bbPCYu&GV@~@sO-Sm2?wFTa{#KY* zOqfu&%}@ZQfqb;;V5WpEh6CwZpuXX*(><^c0pLwgOcqUVied1RQeSJM2!l&|= zuzVgZBXQy1@pwWh1=Q0CIME``TNPOJk7fAxsX6V}xq@%pfy`#rnYduNcNgbi(N-rU zf+GuB*CffjilfFomH~;n%k-Xc_%$`z{NOo8*E*IS2cN}oyN(B|v))UG{~RJ?U`P53 z%^cQDv9d)Kgf-YM;4%1y;JVI>@9>7|egy3~dw54cr=}=G`HmeHjZs={Liz~JGs)ni z>3d9fOxyYJSuDJVF$Grg+^aB+gN2er&&Dm(uzn9S0WW@K`l@1rVC3YE0fT_XSePuDTg&~n9uvo6?Bs1v7RE5xLjjNX_cTNN%$mMVH z3pX{D>;}OiM~kBr3qAA2V5s!jJ#)NpR(1R$F`6I2DI79s85pR=7hj#ua)=u%BQ7^P zNSj>#@thp5XdTDdmH!?L;UN%o3 z>mQu8B_bSC!0}gnL5g26yS%|!t z0GKbCB5lWm%rV;Pb&A|5T(kadrzc|P29G9#yIH(u1L>$;+MfgpGjGm4m1j^gZ58Nc z+2KYc{gvy)I)TP6{c~BY6*bjojVvTa0G${;y?4rt!#7+jYtk%$g`=HR*Y6|g-Q4eyX9o69u9@|;2M(}k=<2{tvI#nuU zK7t8N*S`wwvw<#qZG#^H%i-;zU)gvydwY6Klz{%LjOH+bb5=K}hcqbTu;vV*vIt4G z83>LxdT=1%aGDr`bksqdhIXo3tcE?i5bWSh+Mo$$b3{Voq+Sb_(&L1htgIl)Vp~p zIYP^jN~R4DHb{0vXhfMzKl}Jkq=5Bnsve`>2=S7jgLs)V(c@U+Qk% z+gAtf$MowCfAFUABh$2mSvfh=D+O3^PQ4kwrZfV3N&q*4xGARgO2SXq+djXJOBEQ? zvEcQ|S7QJJY^GxLeq1W5<5$|M!++H&lgjo%pSp-Z6AP^Orwf4^^SLCAsd_wavqZ2)ZwXwi4mGvBjY_zkz2+Mk4L4OjdNTs61v z&!;dkmL|(;FaJ*er5_kmh26@9NUowL{fGc&uiKb*5V`y-qiqe3o^`>_5>|0PP+A5Z zf?pgsjqPyQRg7~f^Vm%FKj%@M-F9$g^iS`%yh!!0*4vqEs;QhwU>x9a8GZwSPgB_W zQAdzaQswyF0ow1u0g|D3^RR!MN;;pkjf{}-FM@swE}_0{BYFRx5^(st7gX=Aj+#+H zMqm9$hZ+e|iMqGAU(abIc`Ui<05=02Tb)=x-1s?Bxnf`WH!l*|w zs}OPZN-2RxqHuIY6MXHmbw%hPpWUkdG&y}u{x_H=p?i2Q0ozG9D00PFCjF zsr>FQkr{X8eKT`?O69_pOQe19H{@(ba7Jt4HG_g6TN#JOaJI71n08-j@ff{qw(&kJ z4^j3m#Va~w0p1vLD?7p*miocQ;%v&#?$z}c6DAEg-%5cM2UWCIl9SV0*bwIy0`jRU zk;>R_rPoKU6b9IPqfu5ff`$Ke6`ud(Z;1NN3uzxnmwZ^7?&m+TCpC)>TELYjV0%b=YEpjAGxFU zFO{uTi&KEyv4aXtC4VWp3ikge*|;sBwpj_?Iqb`L%|EIF$o%dF0O&a|@l~Z`GXH~O za2D_REn9cV9C+2?VwZE5*u~uSpg_Kvx>OZK5p>`F%k;qe0oBmP?;`4Gv5oJy2!4-J zKiNQD3plnh;4&lA#2L-?fDH>?&u1ab{wP9Jt2WO1E1M<|kO|+Rz2NM|vn(t-BR0eS<;0UQzZ>z8imh zL_MQINVW0!W!q2S*!;x9-~>nusVZU?=#ImD1iAW6Pl%vE-{NjI>ngOoiDW~h=24tStz>rD|8+{QbbFFA6_wwQ&ynn zfRTG3NO2FJ9>vIpYpD29n9N~?BZ%KOy)^Ff6+Z2BtmVsO$x=X`y#+L$PL(v6((c>-7Z=NUi2A(3vDK9@lP?>;xykr4boA;#5iol6}gx=RsYj_o1U%x}h{mwdn=WImmd)9#M2!L{& zO+Gz!Pi2^Gh(p2z%ngN!ZTuZgNHfA?UOpn(5aaJc)#YDoZzUzsshgRdNEg;{ASx@S zwTacB&wL-lj4>sf08uJoSZ@VmH48qZHmlcXAB^QU<+mXy0X-8jEIv%aPMpmqoMtbD zwtkaP+X@W+*FM^efx`U@Do|}JdwSxR+Z{xuHmp7QSC=*;1c5G5yJM~>)7W=3u%~!J zx?1#phj0xZp$OGYw3MYuFW*(!`N-i4)k-EaHy!*~42Ob7kskgLlVv?+9F6Rw{Z|Sq zfoNL*wU6o1Ze^4aM#v#YS2~fqmT7d^V-MJW^Fsw0bumGTd^*3(f*NqR>ZfA-&r}0t zRy;xewf-3<4QYX1rR6BTD(^3;4ldv_t>;?j=;H#~HKKHn7~m9fyuaOT`=_-dEsG*f zQj@4lbA%yvJ`hDi<~3~TaM}To`{>)|VVqy)FdNK-&wNeda;9RIh4vQ1ECV2T;~uNg z+FplinFf%N{_q~Z0%GSj)(9A00ViPIXN!Z^ALgTNH{inqSHpUn@f=_v-pn||H(894 z0ivV)Go^$nyu|GzfLRWJ!@_~cd_@-%ssN7rV!@Z7Fnp$B{>p2xDg#RBM3Z61XT`01 zaC}{g#bm`6vB|?V9~{XhKigf2dgbff0PekRKDX3n!IG4M-0d<`i6(GTIWqFWm0C!u z{JG4oY##!mI((Fi`3XTcDp6HgK*Nwskm4!$N5JOEH&-YugedB7g zzBUU>+u@vfQ}XA?n>cfHXLN-GbJ_eqh5Vk;Ra}B_aqT`doVZ_&)`9!)1B!~ELGwQx zi#~k%B4#w0nNE(`ka*l)k~MXty=W8bXY_Zvy9 zJC;3?^Ck@?N(h*u)|i(&`$3Lkvs5|}%vhDrvX%8idC=t{08nYU_9^DCYj2KzZsm&H z5Tk4(2G$$ivM3G;x`8>(PL?bFw`?UEwYWH)90vo`bnY3!pMRzwV#xH>|?OveY!gZQPjd`5dhquRc z7<9Fq?PdDSB3P#dqDC!z==E)-g4{q zU94dWyUjYsxP|>!%Q!U;XUsS`tO(=w-RGahtAn6oOKXh#W}g!H6QIjFnMFJJaG@vv zrQzaA29CG^y*5hh-2i4HVUL{~>4VOdn*eiFBhiQdHNz6sfz}xp=Y+5N>{dO#vq;RU z<*4j%reDNR()r@l9c)LV!399Yea;#oe>jy>5_UT>e9v_ZPfrF?U%Sn1g|z2SM>mUY1f|21M*=rV#Q zIz#fQ(PWzcV=!@jmvhFZvbL!=w8nA#0z>O0&U!L<2TqJ>)V_ej{L+Ggkj#n>0+qvW z19q&MBmE`y?SMMm)Qo%=-m**DEb?CN1lWIgh?eucObr?oUDO2UPkw$~T|31?#b6h5 zMfJDWB77iDz09APy*Vqgfo)n`+ZRv8yiD!CMTF}D4^WTyH#*bqBRw>u_r(G&U`SFwr4H?nX2UDMW zTf}mzs@R>6Xu0z&)7-r-j}5i^_Wmc)WZrsBTd)Drz(o>?t1871cMU={ z({SZ~PtkU#_+HhuQVgqgma<1(g>jDR=2d3{Zo53+*=Iy!QBz^_N;ZW{Sk*@=PFU`E zeB~jE2Ay!JLx0crc$2Om-(UFEcK_imYdDF*H%bCq?2v*Rdfb2bbzwLa4`!D}Z!2?O zZ`L^qjekK6GssjV8r!)__B_&hs>#jV8RDUP8=#?f%mK|soPY9Z{;%Ygn7rZOtve7NX4Ya7REWghwS$m0esmKpgd}bfEQT3_ z3eTV|Y;4962W7>cTuYPpy~`%7irnoiAkOT$D3;-(%Er)yFpZFIz6OG6mS8dFP zHq)o4sd6M`)X$nYSb+PHAp2PYjh21&0hDGB!)~M+jl<8u?k4Zm8O+@RX4QcRysAd; zMkX-bnA*b&;6@~TZVKWIqQj7)*ZoAG0M}^J`=8;>@&#ZYsRn&c8Y<-0$Hs1fJ(+9+ zrAy*pdk6g&h{n2r6LC?9d1yQ+RAw>DbR%yPLcjDH!zy?2Tcd&86vrcwM6L>?vT+D7 znHUbhTZk|kJp*SF5jlbTQg$4nLPDr)>7* z`reVO5<_n78>zM75VN3^>XdzVUVkCxAM@77fW57FJh)sSUqi3H|p35-9cP+_j zV{UM0{bfEkU1b}mS)x+ao83hBP}o2u+%=O#!g;q8G-mi?+gkD>GeIftog;hB@<;q! zE6P9N@uZia7LT^5ewyMbhh#q@kt{q9g_OIFF_74b!Y_3_&XoklJD0-Z%y-9y8>L%J zY|{S*6^&1}gKjF_)dooq1bK9SEw8|E(j|#M8l$2K%xS^7W&U)7J&95ikz861k7WO; zKzXH*WHJ2^i-Wrqa+WMyX^NNXyn_kJ@=3M-_UW2Y-IB_LIn7D?mW?Z2 zq|-u9m0OiIsf%+1TEdjrio$Mw_6Gbs0U*_=eZ1J(%a8L*waucb8nkB;JP5tleaXCH zYLei%Kz3_59zm~7zIQ9yNX~!UsokdJN?q$;8|**Ws4eyb!SwcHu1Wy zQ|lo7cG7tiiE)RYSblq)7=8Be@?#l2|5&v56lmtRZ~Js(twyHeTF*{{@2cEly69?N z?^RsUr@`88s{!@`0$T_(aU`?htc(^|KG^3EP6%MMhGJTF8sSUk9-JWoVU z&BmE>%(pTR0-UX@HupwNqceXK599>%;yn+@y1PH6&`mXn$E40d8)|H$dF3=K<*t3L zJpJV3J-lk3ciRCSpw_Hp3m|^-r-~3Ijn(+kSm8I2`?arT6MGlgID(!du(=mT=Ta?* zPo2%I%0L^aRV|qqt5a!We zvKV5yo{gCb%1VU6A|rLrW=;ym^6u`D3M1)HXJyCbN`VyD$C5gZs~NMG-5LtqQQscv zR`mo6L38%RXjQqCAV*P_FddL0W=0-@91Z&;fiS@cBs|1f8eq9RSg_|o5SxNSAxQss zqvpa;KH3b5ms~rlPwAJ;+1$PE9?=re%CjS>R}nySFW5oT6QgGkaPX+bHevsRTa(oj z%E`hhy-FERBiS|94(aT{gCu`I zSqEHEDYDJ=*zUvz4;G0U&BA>>U5s@wTW_v^aonCyLt?Ftc~b>Zs-7|LBhD24f#16) zSN$>=_Xt<|%Rfs1b1c>pwNopXZJBz?2(Pd@1M7{u&la*DaCoBFM#hog&n1Wu|0QELDwaB!|$1Q;}yJ#D>Mde z;6@P2(YI^)ltO9%#KW9b?NeciY3mtj6km>o{}WX7p3`*3n2g4=7JfN)k$}8r@bd|5 z;wdAbj-Je#s2;{o-iVk)+ZD|JK@Qz;tvNyE&d7*GhJ0aJina_HAqH@j_S=PXr9Ztp z5pU;y%v)-2r~jsr!D3kJ4hA4>N+uod!3PJ7`A74jY`ri}7b^AX$1mci3l zoEYfruJ_|@e&}Ab-nYeVM#L`mWrYg`I?JCnzWc}1mI^@C)l@$FLXWInQxcq{Y2vs} zoX=JkhLY(I3svi`vyP+i*NZAnZ~h;c9FPPJITu4F@!zEWWd zH0mPZ`WeJ~#w^B}(utnzOKjo6$%>Xp!G>ow2$Ep5oUyj;6QchGd*6k{+T9phO0#;W z?uHiBmd=bv$e3dPCG_o*mF7|Ys9#9ZrOvGeG~AA1Iw~rml(Xx^R12cZ*v1jAyk|Xqm z86IqR!`AcHPr zNBh4Uk$!{IZ>O6%x0Ap{h5>yTFcbv?bw{=x*I|#1(skM($?^;{$!_iC4DC7l9h|tG zskL~4{yaHN+`Cd^5~>+&oR zu852}GSU0Cl4LP^UPa0>-i7y$zp?h4oF@-LZ z|Kf^VqxnyAUx~3#Cg%$O-CdwTCfDdgZfEN4aU8CAUizu@Hk(Yie@R2OzVL-%>udtfZxPDT_WD~@`nk9NLSB_(IUTFxv zhnzjW#9Zv#(89W7_A{L#KM@><5{(dlGgO;vj~9LtcoyaT&FG2w?%vjWs$Tw$teZ4H zv#}^XvAwZ85!V$sruk%XGGc{*Ib%|U@djz1uK@LPY&1)bs1YMwi%ube^LnQ*;Kr1y zz~@0ox{5UD>YgJ?`O*7hVC8OvE@*Q5SHv!bA1XGp*or68eRD-G!6xEQmp&ZuLd&eJ zxfKR~AN3(%WXDqC$_5Xy3oKXu=n7kYP=ELOT+n(y5fNHG2<>{TnmeK|Iiw7CFkvDj zM1d=+@PYo>%}v~Z*p#y~>$;^qUgsws(pVd|VkVLZ?L3@8*jL=6-0s4&ZF}PpDpBA? zM!PiDw1qHoQEX20gvfpiezj?O*@qhU04;WIa@IpYXIG6!yfj^0YI$Y9NQf89)rllKj%j6vVk*iyid0D^q`F z3RSoA6lP0GbB-_M5WMgy6L~gzZxVK@pH-SEGRGjjbtv$CMzu>Bx@MeX7i%k|k z%Tj}0jXP=xqYId*o$o-$lscDr(fY>om7Kked}ZQu`5e+&XAG@fv(ha(I(uFn&`~Sp z?oX_|rZ;c{8K7&od4CL5B}>ol`9yW3or_FS3HE!Gnv$Vs-hi7-k-6au)_0fcQA=)bvH^za2Kgs%- z057}nG9cXgy^KRz_0`qFmd-M3kSC=pTZ%d}#zcKbC)m+>1*Reem@ zt0L_~x{8PTjBil}v%jGGI|)6NqBVd2F^pZlarM>&RkA4ZV{$-T$8I8e%t*pZu#e3c zN7>30RVDTJXK!F~v*j)98J`S`;c}-wx4d75A*oxcb4QtPY1&q){#GP4k_FaC49ua7 zQIm)lult8dQ787e5TcItJ8AZ!UcAtkLFi&GKR7Ufe;~tFazwCx+~VS21I}^tjaWDP z!vE5tLh2-&V;R+^zYL?TH)msFf|AyIH%U8d9N?cDC^GOWK?q0p_C~*l2InIeb{b+x zYj7WYNA<@6v@&6u&ZAUx<2c9Y=ZtXLkNhl%OgDd6JlYcCHU8;n&$P>R#n}2CBXwQu zKL+5lxU4&;n{K4$Hvam>2!OhZE#zs6MPvI{=3(}W`4mS2z%D}vC2*hst%usnD!DIF zn^k3Eg~64^(V-d$e>8Mz<1v<&b)G1~n9Q=JTY~k)7m=KYy%6|DxZW)kZ;6%XDiF~= zu7D;k51j0c853<)6MQT-w-7^@&zeBGxH$uc^)_Dt<3)C!t=UHCtb7wLP|+&Y|6HVE z@kyDt89&@WX;Cg!nlLx7HSlH3>{?QN-P#ue4=d?1FRRi*R$aCE+O%yJ%9CrbdzQld zz@+Q-MN|U$!khjgDkzY3#d(@iMywX?Q3%}O8mZWHCNvg`V0{B!?&A9S5HZ{0WEV%xq;HiFnWY0rbQpm5-|r(A!Mq zn2#bfJjol;3vP5}T|TMo3SSg}FT(ioGF^?)NP~3sPv*m>-2lswN#-_bzUyF|uKYf1#ihx2H^D~Gu(X>K@j^)V~{liWYYJaM?XaVEtLt zz(IF0!vUo?llh689!k*M8Q&4BUUnJ-A-p=Ct(sH)EYUc52#@-BiLjhmQ48aB+wen( z{WMo5OIK$@p_Ns1t>nUL8<%yuvAhvp=Do5 zuk?*FWFsgbT?^m&WJxD1iOuJKa4QFMx`~mp+Bg4xrkJ>GLH@gYC56tSJ9osWB7<^} zY#JG#$<1=F^^uPJh^zNU2}YeG^719O5KMSYq@VaLfGq|K84{Y6v)^Zh<56w3;v%ZJ zo}1m#l(*@+78AQ7k0K)7QzLP&`U$VshGl{HF-aM%R#86{<)ZT%Yrn$TZ4Qt;(InS_ zr2+;)NJlwL&H$1}T&{48PJ5P4=-?akG>$OF*$e=5AE#E;-GPsm>wsZgBo~&_Ua||D z?J&Mg(p_$z5uM_*BR+fme4>r%1xNE^{U$SJH^=}MP zdz}c*B-Q=n3*<-atr?(!$Fh4xya4;a1_8)cTrd0^>I6*U!0T-HQYow-Y}xIP!FWP) z91GBqlddoSxWi`fqM3OR`(q6~9XsPfbFqntK=hGH$L8I~v`Q0{*kKW`j#hw;V`_{I z02%;wL(MYrepLk^ucT>DTB7;LmBtF8t|KM9NY_OKQuf|j7HFGN=;Qv;t-jmGFNIS5 z;)LRTO&_mrkYhCtz9wn#BZBgP?hbnPihaQ^ovk}z7id8%8fnjsh6{Qh(;j|p12hE? z{D1%07J{{~`|9G_eeszB3K~k2j zk#PX_tj%CPuSACgC@FfT!b)ZA15gSj54Bff1y%fN5&f&ga$x3O4`O!a3bP(2?Sw=_ z%ni~9xH<^h5Zpwt1lD;8$W625^H?E@!_U2kQ-G=Mu!eLP2v=Z=x-k7b{mK^)$JWKR zW1>94rti8i1%r-lyvslePkq5_<`JjX2@IAB_%(deug4Xd|G?3xOB4&1v7{QKMHzNW zf^BS%1aD$-kB>cJDu=$LIks<#{++>@=Mz?2uZ*zN?3h6dp^xU>_6}k{b6GM-J? zMOx#{&5EF6x?bUdfkHqx0%nTtaQFqA=I_bEvYPp-S{-=voP~OT21#NRqh7D6wAda_#MG3UOd&olO*&DhGc!1nQO;8a=2>~&aObfw!Vw<}1 z?p1<_7m=d7@kL~`0KnQezA_v(@{%M#xc#bWnfXm~3$sj3wuQB|Y>K7&?B#);7F1P>6F_61X_k9k_=g z57XP0S6(hJ#q{7yPI$h`z!(RFABws-2_D4#_K8&yNIgLNl7NfPxSz`=*=M zm*4^S4-#VJwW76edw~2iCIG$7PVc0?wFp%!T-693Jp)FkE$&szp{7Y4zUvAecpDMqj)yv#uI{1CUf zpJ-rm1XLHx=mAqn4BV5=yMHLgkp-R$sPUd`X!iTw4Cbf%U6b96ND8MgFE&>{lyTDA z_q8*OMy>T*i1-!(_16tG?v;UtX>KQIr zdG^IZ3o!LW<_Ne2cpUPBJ$ox5%BJ5)bEmY|OQ(;@u4l)NxjO8gB0sLX=GlF);7A>! zlcNB&;+TOgULhYe1m&;xY)rZFO>b3!3u1tVI`M^SbtHd`F(g#$39ig0awuh#?St`x z>nqY%!M=@WsqOgs>SpEklR=4B)^oI^DKn~z7;}48;(h*MthuPGSJVr~kB7ILB4y`yw*YQltd~uA21B znS1Wd20%WENye9OZic>~QOU~47c^YFl`k$7jc%wRN{vJ6@dhfv@(6?_+i?MvSaGTm&{x6#=iTLcWQc(p3WPJt8v?q9ibNQAH*K&mt{> zY7kq0d3;7iuqM_nXCa(u0<%IyDPs^i{!MGU<3AKqWoPK%F^`FXcl3>4*n9O}DJ5#; zZ6qV(%4TD7vLunY>k`#v-{~r5B^!)&D`w)kCXet$*)(Zg340DJUN|r@Hqo6*F~a&8x}BqShhj0BfdPqxq*wOv$v5e=9jfj4N; z6#x6`M?ViF_&IN7^TY@EofWX0%{oiLbF?=0-RB%nK-Ihpl!6ww zd03lYzWs73IZP%HIrIRlxiZ?2c?6>D@h8rD_PH*!0AvU8UBFY_&1O z63(x-EO^69C5kz4;u@SDFK(i?*@9Ta9CO_je+X-!ah*$)s48`+g&i%>@yyV$+0b?p zJ`3wU&i&65d6OWk>L0iJ@OjW%w6a^KZV6AeodZt6ey0-;%@&fUewc>(sND{gDWygo z!Aa}F1p^B68&pk5iWy+vur;yb-`7NK9v|_7xq-}DWd2=P>f%oF(2TXQ!HZ2cTf)oW zCOIiA&2DZw<;5pqr$dWa{gaYS!F!5NJxayQ%CNBAKZ9}~H|xIiUm{IMqB2D`l3mp6 z_5I*MMcYrDb#3AHZD|H0(gr zUB!Ov+5XxpPV$w7A)B9$Ch2b{_U@BfK-hu2YaF&1s7RAFRYGT+CBvD0&tF4(Bo;nT zEGP0EnNka2x|817WQ{*#l)eAs*K?X6=QSz@|B)>C8V&N)Q9bJ%M*sHKr2z*%5be(N zn^f*1W?$@W{^A!cR(@|9rQeW?R9t6#m-hzNjqhR)2M2lL8Lm))>RuR6U6a`LIPbt4 zX|0hFGcM=;Oplt93)%e3u;L?7*gBxZvPsM=og;#_HKb8of{RIW3vid=N}c20p8F|K zUX0u^3RyDNw+&mn)TaRN7K7C!Hwb>7Ctf2KM26sv**L{&3Up*x48^ly?CmZOD%@YF zIef!s&U@Iv{Q#b9%l_8YU~YwKzL7}0+_?mTT0Q%1A)Vea*T|nmbvwTBD&}FO=kXoM znM!)wZ$p0KrD(eg?r4-$nTT2FYD>*CnUzvh8s}<_{DN;t=-!*fK@~C@ zR0iP+hy<8ezFL)5OD`6qHtwfrvn+?98J=O;eq$))6EnrI_s;2RfA2xF9BW}~*bnh7 zZz2qDQ;<@;^U#^(LH#Zgs2O;ADRb3M^NKy=jlUL_efCQV$D=BXiJ!v=%22@8Bg zsh4JBLb97QMNJLcj(nKs|9I^Y)7^4|f~WY2Ye3*X=iB%{-t9N<$dI4#nJ!s6ww22~ ze!knXH^o84zZUSgxS^*P&`u=PDw9>RDiw|e9q^m%fcnlZNqwSr^_D$p zx`LZrQ4c2}uuu(xCe(hl^}s>z2#sd_9W8gaZ2Od@k}pZ*&p{C zQqd5nrj%_Ep_e+BMuqpm7ZZ&~(T}`FBs8A;iUd{uGtn?ksBRE9DJV2A!ZIe|ryVUQ zv|eaJ#$pR$XMG&hI{JZa9=E(2(dHsAW67Ol4kqOb81qC|R#+sTev0MpWgug=88tUa zXr8g_r$-dtKd5LRE-1Ybht&x6{$jQNKuTk0$pEmT$eD&O^`!4-JC}eXMD~OFrhVOF zJ4!VjSnB4~`0QXmmmC7%)aowbrG)PwYJ`g(wO8;%ivt%<9d~epRls`Hf#M_l)uCIa ztabHGpi2gl8(sA1anU-z{*r@{Ua-uUFM&|CwvX-7fsW7;r5+@CXCkVOR zmkZ597NIdn>?t--`aG0>mxO%+$>u2au}pS9Y^YKBmFHTuMr~UU>B%ntjHaRD(B;=S+;!X! z>V3=ZJ2UN)(TjF#`(e;?2mu^*0a*b4G$k_yjjhLr^9c`U&)&nsK;Uhu)Aa;{sv9K4 zb|lU;uN!JzN)vo-YDTA30=UHg+i-QD0s-brhJ@4!fnZ%juaYW)<`xRLMTQP#MPc}> z(#{ZBqY(jgz`>=ui9N^-hSEcO9$_`?jRD1=-t>OuGZ=QvUomkCyQJd~vV&f3TS*sP z2+qYOp60r;TA|66CmuihMqq;o(5LyX1aCA;{hg3LNv-htxn$5)*E8#b?38c%I^!ZR z)4Q$?Ag;(4vP8pGiM!Rd^T!GZ5;Lc(v{&VLji>!K6pfCt`0u17zJQE-3(&F5s8EZ@ zpi7}@SPs9ERL%-rPppAZ#+1kw46{<+odEK*4W-o)bF59jQ1o0Qhq0O~0aIUY; z1_%&oQx!ZlG+NX=r`4@xJNO6|iPd-31mQP7@pcige`bAh7y_mBgFS2iZoYxC!(R7d zr+p2rGYf_EZ~h^ciPxG9J9KXQA4XY>1y}j|22`FKvzpb|@d>6W$cL}jjO9NAPpF4GR+GHDVTn&8k z7Ktp+b~qydo^;L)!X)R?jbRK-DnCJ0KVdVXlmAAK}gTgP7 zL0DlDU0psmJ2UpnEW%LsXB}|rZdNXsmam?=$qhP}QqQ948A|tV@{QzFFLFl1@5~k_ z5A9T{E}hO4+R7}avF`@yfClWhhWyeu2eBt3F z>T{4DuvGN=(M+4_7T5WOz0-mBcY3Aj0MmpG!+CW|ZMGx!y6^A^s>A`U;Y4cBj(sq6 zKS_?4(mB(vX6WP-v#((ZJuF^0v{I7#APm*jk<8 zpWDwFdeny@x*DmTkyL~CCS-fM+ zKHXya3)^wHZv57s2kJYZv&N_4)}1l)5bnR(9GlorV79y8P#K>(4X-E5AY?V6jR&$| z7}$DL%<^EOyWA&Y8PZ8$eiFKbO?e5pWoH}2eu~tJFz+U4lN~U(+PmZhPOjEw zn-ucTJ0)xm|20d{U+hY$CJtsSj<&{8rAImHq!P?E>CR)hw#grAv2@#6>vc{P-TY@l z|A^|6uR~2%lvn>Qfl-qQsdlgtFao_7{Ev0oxZ4H`B@FRRVYPKXL{aN@Ig+Qg9x0i0 z&M!*)l#!7B^cvAUgTi6{hZXng1_4KwUr)zEQewtYR7raOGgjk>HrmKnM}VWcYUYvXdwSZ`F1=AymK@M~wkfp{ZYg!X*g4K_MA$gn;G8AClE)QO1Vnb*)=~rfd z=8Zd_7#9fH+8(VGoQWJC;2mio4Hb&|^$^kR+AFwcM*N27R2_~uf*{GP4%%E z;UBP5<35lWt2w!a8jBie2GljYHtejN*l2(~rSv{FBU8f$q5NAWl)6$O(%S_eYJE1V zOQ1-jJ(am^Y^F8DfMuwu0(Jw6RtfZv=ku^He4&$-+EW2oLE}Hyb{E3wAl$0n_#vzZ}TzJe)>8SNe5fg$Dqo7}I zfXB?iLaeqwS>#5R1XX*NiB~UU(JWWzpJoF5MYoLQ5B%m^28STz0sMv85UH{GBkWZRz^a$qn?e6yXw-LypZ) znx6q6P_sHj!drXR2g!2>)#=2{K{5)~Tp`+7p~f%Q=ibNGj2;?k3( zt)}ia#F|x-SCI8{!fY3jjIY~5u36b+AjscEIL>REv+yzb2Yh~!4)V~d4Scp@@KwBx z+x_kpK^1_J)_$nKStB4N#67yRQt4(hvFtcApeeJkbqK_-6zs4vQD7^u?t3Wd2;(;z zO?>SL^Db<88?DCs0XjUCnsTWp-7oYI6;|iP<~#rYS7r6)(_uUbP9XE)=%rGJhI$S`5TV)37o0`>W12x}-_gl@1XOjED`H6=GvHt@Jl;$9;*`v@49d9$rY^WNV zP@0t7xC!%N%s)GL=aM#Z^4kFYQY6}N91I2JhgE~z>O%_~R|VpkpAjaX0OO#c z+8yf9AN>L9jcR{b*B__CtP$KjR~F@gz3E;r4*s7nRe}dUYo%ybAD);>^+HnCEdZ5{ zw;tG%4YTQ@i9eUTU|l?Hl2@9m`zBd0`XWv@C<0TyPsw)|5l(tc(@U7_AL${>FHfoqRXcE$t2W}lj~;X6IjX{I3X1`;z>9Yi(NXQEKnz?pp+ z)oyl`APF@;`7uNmeTFSUdAQ&KT(Sdhs!w{UyJ#9K7zb+dfO9wcv)oCZy6 z)Un+AG?@Wj-ybV`>d{cjazl$??b8AMWgE)}%iNzbgaZ;tM`F@*kMp1!!CF2^#3{uZ zVa%1V&i@TaW43Bn$?p&-f5;8h75@6_u)T$OE@m|k2G6{eyhXChR+OA0e`*9>tWN5m z?64oQ5;n!8;WNiTeYdwpk@73jT$W8Iab?EEqp_z0QhDJ-;kxkEb56&DA&fGq2n%cA zngSpIz-J6~gsQc}s+om3a5g+U1zV;|Z1CqS|Sj!wQ!fcAo-t`W@(oU1rtjYZYZXW<{I1~?%aRPDKrh7+LRW)J|RLac~_ zh+QyYej-L?>%PRS0$N-0#Cq&Rh`1+HQDT2T-v@C+OK&z0L{a2w$Z5Kkv^_`ih)ykb!HI~gMB%+tNptzd$N8~!00RSmulgkYeUNHP(Hf`SmC5;IvE z#5cu5LV>s!DNs1!uYwDwFG}iiFmu&97)Xqce5XMPZMmQ%dQ&w!VPg7!#t;?v?-}Hn z-=geP=I=AQ6OT+z7*BfNJXk2ddXzJbQHGS$$&Bz8ZB&Bad@3Qy1kt#QphUCd$-c)! zL*KTb^tFUljvGKMgK4ic8X{)Yg+8u9Nh#;0gpw)jAZ%q3b=P@vi!IBfwD8czE=Yn5 zDvLRt@v|x|EIP7~$4qzfp?IP&?SfK9+QE z?VUc{CjZAQ*92_zo5KRv2pqtQ)tkHHT6y_?Ifiu2s1FsAq*A_}{bcDO8dTlFj)H)& z;6M~O2mph1ps-r1A%(;jq-oKa3x@sT=qW_K1D9o6(=@uvR(IL9tuA-jwr$(CZQHhO z+g-MeTjw3)`R+g1bI(}0B4cGnz`C%JxWNfUUlJ^|7{Ch=k{9Mpn2{e5t|~fV0OqBM z8h)#Q5%MV$Ob`oeK{+Ur)&&fD6XD_6jbBUa?0ZlLJNC6fZP-ij?XNV660}1^!Pq|F ziOi_5cy-xPj{^V#JkNej3A1b;W&qVOOxYwc_75874U{#db0Aq&)uqB{S$u$?FER+z z4)cnvSqn6))C}*_;7E8He*(|~pCHsuXy_Q@=DF0I65SlimRfj#G7kgIBE3b2>gwLh z?sZ(*>)>F!9D(2ZPVdoZFN}VP=e8plln7uDzZbO#p#5{y(0>xg%X6yIRWsvf>O=$;rucW#t50Ymmq}pZ`N(TAYEuYMLl1 zdK7w~(6%pH6vrZ(DjM*558#HQ;oCCETPx-tXrZprSX`lrvca!6k^XWiini#D{D1e7 zt3Yz^Rl);*6j~U^rtDxLwyj&Jt+qs#PhZ*h!-6n!50F*s5!q?@5Aorqzy#sMy0-%6zOVZ>DhQhhwYeg$Br ze&l@Q08Fc1xjtK(iW>xwFoHkA?t1GY%AQaUZ0EnP(MTQ;x+X-gUg5qhboxJE4FTz1 z3&a2kOJ)-l1}#(e5Pe*)ks6>U01?mC)iqAu8}AL4%>6spst~WvhnL;FUN5nW9W?GH zf_~O6Aug^epx^!*hld-0H+MISHw%FHaoHtFN&-=$mo-P`1RVna17pzP10Pg~6OX?! z=95%VmVH;?0(Rib+FJQ&vng&-<%x%mB|&-npnwJKqo0!7=z~X+b@WztAiMZDEa4{S55Q3U&@M zi5c9n)677j64dt89%J|Lto@>nnpx@-sQp-Gu>Vf=-hWA)2*G#hu^A478KL~TdRiI2 zO6bFJy;v>#U0VEka7$9dHo%saM03(Bndgrb{Fl9P%K{w$P!kxG?e;1f>)PHSmDN=u z6Aj{E;Z$b#g|gnDr*VPcj`As}{Ot?g`fD=>u_&<{`Icp{X=V7jUu-%wg4{pcAV2Af@pu-Zeav^5Nia*wIBQ(7-N$BLO}$_`H*{sjJZpR%E? zv5Y;`kHlZTbaCd`KX@mJ51#lN4;tP+U7la54?Rl=IU;ZX9e$=FOR~6KIIo^`dtn{r zjBHmS#)wr8;5T!)ATB%~Ivuq$YH6a~0)3)ueIGbqwluoboa^mkOj7*koF&6p>(V?+ zwQWQ@vX|&GMnAnM?G(1~MnShATB5M0cNUtPKTCK1#aTn8o}F=YeqPHL4a*c}5fWpJ zZP74$<}ehK7m9`~91Y)$$8-l$m^Xi2FRL00dIAq!0*v7+q{s&f>}w{x4#%$PC+{6FFIs%OwFID7ca3T~oKw=)`QXjIUVuh27)PW<=Pj+MVDDox|W z)p3kK#N`yj`OlBiQ!AHm$)-$Y*4N%IGAbFmLfNqr`1uiG> zII`cN#BbyM{eQOHKmcIp2}r{@bn-lW0Nhd)Bp?tbk%C&lltDa|%F$3Kr3?)$A&4d* zOQI-$QNun}DI5Q;ZKLD0)uLFBaSr%X`| z`6fja12TbBPc9P4!7za!M>l9GM*}H=AHb_9|JnnS+MYRE%S;nfJ_sU&)RJ3(20ESC zz)RPJ`G=Wc!tG%3NF|xE$Qh6R_C7`l>nR8Dxw08;##JMA*9q^7koi=}Z;z&ULO=b5 zJMi<_0&sv3z%W@sdoD}5GvQNC55!}CF!oA6dyEjv%x_9&=W6L>_x0CCK;>*P76-vw z2pPcgcbRRY4%V{iT0K8QGZ(ZmzZgS@rYX;<=k1pa84PQ{Y_EUII~(SIH*E&1wl6HNBv8#8#j+G>7skf8jPdC?!P=dsxp*2rS1 zfInNZF1Yi)5S80WN9IWsv9xorogA}zZL_Td0#tBn%n<_1XMb^wHK(~(Pesa^i|gOR z$FIJ4Z%+i12vxRdW~o$z&~0j}{<(Aic^#SUJm$QY-rfYJGfaqIreM}qR-5!Ky$HmQ z1rHYfV(7Z-RYp4!;zc9Ps|A7b<8UzApPA1d1MFVk`4viVOQ7Vy`+xo zO;Mui!y;9+7Q0)_96h;cY3zbH0_s9~1r6CbvFu4V@8SI0{Lbk?U_T}s{m_$mE0HLv zk>b&C_Jbl&CKV^ygoFkH;Kv!uonL#wi5m0sZ{egzPx;n{`Xl3qt=qM$ZyJ^+&&+104`DHS}$Xs! zQL^Ii+kokRXtuk_p@Lm`vQ*tqf_I+1N^#OPDbun1TFliJ0A3 zrKdY$@xcexc8r95C=2>Q8rJ8TU!??bv>SdL$|yipjcrEtjh9Cnq^y@)vHRxd>oxjD z_O2^;JY|u2YpBDGHv4Wg2He^>`23Z<5End0YB5q=rXDg|V!prBV&^lNu`|uf=9CP0 zJF=QLr0)=>h;ya`pf*e7$UIRjV>(iOPZ--Mfk|M-%|dD!Q)-N>D>8wzqFHz+zq$6f zlXVGacR9sfdhHQ-{~CZquc$IjrrY#PAdLGGXM%&hgKtcW8a?XzSWJksHTjsb`U*4& z1CXT~bw#z)RAfu1fNV%cZbb3BG~2I#60Dz{KboD8{|%T0fZINa{_9|BowBlU6Cv?3 z{~3v(tg7rLGxYTQujv^N4KTo86_y2**QT&;68p=}Sup?rApnO(1hN^DpgIXR4D9G} zA2!OpHoME{65i7sY1pz^_0rttj{bow$UIzFqXO;MCvbQ-kX zCiXil^t|0-8>I(KVX@n##_+GKYW*sob`{n^Ys8k03XU^VUXB+O+NYPqM0LWKUoa{e zrV^~OsT30~cpV@tZj{V8@;OZ4_DJBMPx%uTZwoC#1-znq*8lDRphBNYvsu+#BmBlYDwHwzyN zCh{M+ijnm4`%*<&(PIG$lr8<`SBhonrJZUpaWR13zWAA6GFty2jdCVfFM%};2*r^& zsQ`Xe97MQa{Nk2=hINuwTz^pyo^NZ)9!JYG09mwp^8dy%T;9B47P+4<>rq`#RDpj8 zPzCWSGc*R{QW~Yah>f%XB{SDny9)E&h6baNX&5^29<6eZfP`e2XsK)!3hl3CU0jkp zck6BbCay77U;z}cxGIr9vap7P+ATK2zQ03lf%xo3WlK%H3gUP z6ErEy22LAYEVF<6GfcK3q4xXDJ8d3XE7H zO?-eFjE+OWRX!9`WxPRofc@jUIu&ON~(w1>MKfQBzW-?aO!5=8bY~5J-z@8U^^sfr(PG;R&HX zwTBSS;qk6K1xV|?P&7zGMn$g`#-i1;$G|YEyQn=o4Y#C{zUy%Jbhxy{V*ixmg@w1- z(8M(07SF_{;8cb=9j>t|Th0*8jwMN)%6P7Y#3#4F2no0nMh{@x`g#Kxxp z@}~Ib0B4l?OR|J7wnaSztB! zabdTbPjsAkdX*52|F74{N7DCaj5U;n3@?5mFB8Z_=7WbxJON3V>V}t;uT;6cg5lz< zIf4`*pyvK%tT+X6noW>LIRQ`ndXqj(GE`nrD{rf$ys(!fY!lJ-otciO^U=hcs>;k{ zG!V#hw(hj-@r*~CqaZGby70=^e!jVyAXdEX1;rvL*_G|-AVppX;G;LbmW9ls(I!=R zcA~Bj`as1O%EeJdFXX5G)eV8nIZge~5(rG!LKT)WQr7|Ku+jIj>!vxm+LLg??*tgV z(_gY{sH1CLsF^G_R;nd5d}I9-NICG6AqesYQwKi6XYi6DE8wIk7?hUF!W#aY0{4ShNO zHkDx@`OE~QCLI2Psx|HS#|7=vD4a-0;rDl+c0K{xM+W-{0^YNtvda1}-~=K1B(7l) zH{;R+;l)X1_p7SY*=y}L71n+OeAciV8bVL;1z#k4pg0hGdQ(@4Cyi*rPrB?BT|=f< zkGG1K@0rAG(*9&|gW5sm3I4e)Qj!W(gdh%*XO8;!6vyS#u6bd(Q&aNb~J-9fzU&nH&>EuKKZ48vkR zS@7_+5YVem5C7|qct0|5An1@hXkacsBqUHlSkZqc=5b+rz1owzfWWZRKSZP&HO-Dh z4Qe8K@nSwAigw6@vDBd%X!*e%*pEP=2PrH0ix5;Cu>`~%w8N!;7NA)n3hE0)&gwt{ zRPoDFJdkOtSZm}>CV7Gw6QOPQ_9S3t)_Uw$8&$5COUGAMiDx+FEU#HsuP8w(ZOeqv z=~=uE7Lq-8a3N@`MoI%weF<6GoO2Y|qYlPAF#UskiTQ$fks^5z@2Fm$o$L+LG_-TS zoL%J(WHN2lzDeaMF1NbcFR)H&p~KWI>gU8bqWD0VBVQmP zV0|RMBYY0TVPHf*kPg9_IN(EdK4Jiru*BAB6cOjDy*yb#J71)$G)mWXk$1Tr#7Pq^ zRP;YRiR0n4pUqE}DA9F|6UTG`7!s-HGx#6GJ&r^B>mkYd%MvyU4n;(KnZCI!g7Ii+z&1_|gU3(y1`nv}OEYg4Nl%F521ZLO6PIg}JySvdK; z%5x^NehnueEm2f;Q7Dbsp~5@QHm2@*fqiv1SEuekgLHScTC``r0Dwuv*>d6EY(H|x-fy814y8B z5E)zA!CPU9M+5|YpUjz%(zMELhuut3V*|balM}|n{eA0XEs-f7JA@xq^syFcoa|)* zv?L~ZK)`|{XC-&6Sc617b9V@qg!|sKE>X!wsJciynf2M(NnqMuU+cuAi0Jmn7jTIT zVPmYS2@sSBg0j2Lo=?UD&6#9rg%QRjpfL-w)7%;X%iDJT7bF3Nokyf6FM|kLL%R?3 z(MWEiSS&HWvrSJ$r4;M7!!o?PzK4o2%2Q{g$9&Hs`qhs|95hJz28m4pGDQEmjbf;D z_ljg2>4WmOod%r6r}^|`Un7v!x0&|qyJ#UJ?*~{_s85txMEBK%mp!!XQHhhuH+i_8 zu~nnsY+~DZm9HIeridSj<*Ye1ecx>ecp^4n&twVxRx71q*7sCQ*8YbvEL+3}T!7`< zkEnhG0IUd*2pc$YFLDULQ{`A+=^}tnzd&$$(V?4!%gZ?|{zqA+L-qV}Qw@pfK>@l` ze`z#rihPwLlE?u!{CZAhqvB2E=<%0`rD}f}#}Dsyg+~}O#SHD;$UA@fJyyNNc?&+- zRtZH6hLkVyT(KSR%fzuvNAiY;9$HW2Is}_%x{_bpIM_Z4OBg*4#rs1m>GHV#p#KSx0PEW59Vy9UvFwPU26VQqU-y%hJslwBr#ewh#rRmA_J=+b3 zQD=xbY zX;ABTqVGGQcbDC7SqVWiMdd7pV9Oe)TwJ_7ve{=PMa#IWrAj}@Mw9x>{hE}uYSGSR zG^{)v{%feY{7AY?_Jrjf0qAsq@W(`*fq2(V_5GD?;zP;~J$*^Cxnfdv*LGz4z3%~{ z$RMKnb{(#b>;UV6Y=!Ptb3cKnQKA<`F-aLkdWV5e{LLf zEc{nLN_%C8)JfLCkjUs7P=5YGFz}9JZYluUDka*yj-kap(1-&|TBG0mjl~ZaaektIoE5|de_75wu2DSUS;f4WtBd^6d01eZ69yg=#kU*sW!l$&-PDJi zQbhp#%x>X>2pi)F=Au#wN);~txNgiI`?8cvLIKh6U$)zEHRa2lnP`f){B<0K{i2P* z;{qhs@{MU*A^kLw2$gPvW6u{#m_j`)qbT8^xU*8v> zNCs%jS47c})&RiN`AK=#pwpo_|Ky4a`GHQWGBW--I0Jz(3(ATh)xrKAN+zi#Z&wvQ|S%tbcuPIZsjK@SjTVK?QLoLknOi-CZoaW_FQh5mY zI#~EMjyF#rdUc&%!s1StdJgjf)@Cuy4r1N)*@@zLq>yr29aHa*M@9{H5?{Y+frcHx z#EOlYv#bZ~(vPq6l8?MakalJt8aPM_`rIFWLtY6fKizuIIY_jHt%&YI{rV`mEbAg~ z>zfBr;TfRV1H)Cwvo9&$O-okC(m!M)=nl4E*KPp$_qcg|L@B}}P54)XgfwL!(+kr* z4;~#~re|I0$n*lNKOLZ;{`^);ZDU8s8_Q`s?5+g%( z3Y&x2031HsvVlM_NS?1woxtphP>ht6tk>M4U>stWw?<50iQ>J1DA7JC#TrF(&cKOM z?A&Vf$R_Oq>Q4awC@R-ZJnjr*@o%MNokD~eg3yve#u^q$baEqf*Tut{K!Apv;H)_JRbN}arW*%4V^UZo zSr^ZrJx2+;p^Ek^XcXjQFU0@GN3i2jWzSLMvg%qY`su3gdqLN32G!X3n!s)4 zgn5Y<G`CipSC~n8THZU22IkUQ9J*Lcwp6=6|LvZ2FihNG))fu@?KNThuf1ma5%* zVKpT z$n(%{gj$pP%{|jm2EbFS@Jyz*I+oelyM<~}8tyXone}-edB9Ods35_Xytcbh@raIa zclY^-Pg654i>P8WN1TsTHsLp;q38U}O5}?6$*Y0`qy5M#B{qY$;t) z)QD59g3LrMiC*3U>pvKP-;g0}8fOT>c`l58U#E|>PD$+37_#o^rR$JIR&X)D~ zdqvxcTk04KHodkxCy8^6wXp%3N*}{;779#sq|d+E#7>x4-q)?#`rQ^EB>CrQEAdI$ zTyBbu4;AxE<}1x!;?>ysv>YA5YkI7>Xhx--rB=}u{rG;OutjJ7eWrWaw*6q4c(n{QcWLZC5_1nJ1G+CY z&g6YaAH=d!c(<`0QETl+f3B(RP}mlzPmuhh+ZP3>P

*Ob&z3)s;$*!S|p2BHK#sQR`@f^>KjpZ?u2oa;u5?#g)cYc!7%T*i4AOR;sx7 zs(K=g(*AiINLB??8L7gKeqAF~|Mlili~JzYG*28PrG?A}uQo4VDz-cs?a_z8Gpd-5 z3u)%Hljsd0H9?+RBo2v1Cg^@!OeUgaJ^R?b%wU!0mHL-Je1j!3N`mpAQx0DrcQ0Ah zzZ|Cw4A8@fL@Au-TGX3z)|P|=*sDge7A8}|r8gtmednt|+1WE-xG+?M$swLuL!t&F zDeIe244&-)`#c7##UYwHv~21f*c}W7OTHRO`gL)*4to_BdNRx&rBaRYPaOlzRhwWj zQ;2h=XrrSs=XcfJ(3OpoG#NuMOsL0FxkZ=*{!EjpF+S=v4h$IvBXM{uQvA_a@zZc9 zo{O!5u_Cozd1$@Kz8x+YXSTFsXmjf#bY6Y>iXxKNUr{7=C)m6IA_kHa08wo}>n4c# zg8PYW96SSJ&>XU9vv6016H&$8^GWW)%YPLSOIN{fuq>>qmyGzANw}77q6cx>SGZpa z{t)_{E1{^~%#47!0$1&xKe^Et5j|*^D0Q_Nk*-`S4>L1Ct(;Rf$M}l@KeAit|DYGmC|F>DH zmSB2+6a)Z5waB01=Ob=Wilifw@;)+|r&c~pH7V}h+-*(bY7NhbC_o-`0wErWEw0zG z2~bM| zH5^viO_kS>#j76mc!aFxcd@WZ`pzCeaRo#~e9_RwlYizNP`crr$RI->$=Ddm%+h?< zaCjIQx=0yFTp@>O>7g_TQn|P%yY5ikN_`=OOgh8Vw76tx@b!zYGe1sM;JS&5($w zq`?|AB_?&u%A*zi(N-G=j8 z&*{WYO~VT}io*TO?F$jC!vtQGf@uR7(WOMe_GB4D0ADvA_-Jbg%DjF)2;wNt~zcgm=;XWXzFYuyq8Em4fCDlhXbD{ zjY6dG=rt~zdDlOCpD)*be!lfUMJ^0b7eGh@8)(!ELlZPbEsqI8?9tfYBAviX(MQ5V52p)e$Q~4_>wDaP5oZB_v;T4A+vk@fr=g|e2ke%C%sue9h^bn< zAu!MZ(trD}I$`mv&t{j-vwXD$3I2e)&hHE@qDVUykdmi~dwvx^C>D=YNK|+>wHqbW zPBW-eZ&|(70Pl<*3JDZ_lJ(hhWh!dgis{2(YBt6i1D)fA1$MexITRLd$Vy9f!SW7H z$W8Q>K+{@x+{389#_c?|DDu_Rth{)3aMKC84?Kr8kWrpfww-9yk#3F*NE3p;87UFs zgCl5#!Blm+0cusatSumKBPk}``aT#WQ}~qi8mxGOu5CNV+lqTb@v8&2XsbCYj*z4S zD~$v*XfwW72G{6sX*EI$W@k$n!m%gi4&@ge_=vG3EeiLw0iZbh?pd;A0DNF$?XRhC^T- zw7NZ#sjP*fesr5t>~Dluyq~Q1Q$PFLxelJi%nXYuW=5N>3+4b>ltf)Q!vTQ)z>@+@ zNARbSEd`|Q6c%;Q$7WXNhMp6+PWGox+2 zt5=Mb~tWmb? zVLTtZdP|jr(Dj`PMhDCwoswuiuXwpSIy3Cl&52rk%QZxZQU{yky?a@gb}%>hx)VFY zcOpuHk^V1gWpDs33_JtJb({4g7#qv%^{?JD5kEw!%~K-`mR5?G?eh+Izi0}F=?G_E zCe0y|is%aep0S<&`;kBA?Yx_o!PaDgcWsMXA>xGJ)&o7{-K4Q_wX$^h*18pI+|uIT zGQ<%EJU5Yoek6d5V>nZs?jEhI;3Z+JW=_=L<(IdRnW6s+<9tD;02E*@6h^6(!++o) zppVg=Puu?`!ukIf5&XZR|KLI{LYYuZwvg+O9(*%%Ct%(6zPG+Qxo1D?mAnzgf zNWTxyyAC9d#aXn12Q$Z-K7+nyso$m{6eW};aoce;;vgO*B~fa4?wbdjeC{0o>R1k!PWVS zsMafGB^J>8ZGoqz-r_=A;G@^w0f=f#ra#ruk&dI#RIvD26*!uVV1w#5l#!Hi5<$1a z!=pM`0xOo9t$o8gppsdPSgmkv^^UIW;B2u&C(_lAk{Vf(f5Yn%Eac~gz~k)O?2rd- zaozGWsp?&s_$EpJfPmFU#_Nu7M^l189x*Ao+iQDvZa9O@AurH^}#Fuklo?hwP-OnbStp=xycBDRXVz-pu z{MKW!<FMh$@E&{aP?&(3|7gR^Gv z(HUF%Y^uSIC5WMe=4fxm4esUAobqFz^#DxuRL~&{?73X$)IveYMsbcxFf>yLpa+Ge zYD2ZjQV-N-3Y{SRdFbu%i7K%0N+MwIdpvdrX+XYPu)*$Gi4%+#itd<5S)vJHM)@+J zT%=}ql`RdK%Sa+pg&NoIINymX|6?CE_g`!#!V3YnM6pxtNjqOlqxI+x6I`T6&MzJDbi_XjWKAhuoL{XNU#^@wLCjlVJ#vP}r zg~|faE^|s>Ek#UgYd**}_Pb?)QRS1CM2pQ=AI#aC0bz+Bdis21(Tzxp^C}oyOFBzX z&`G|SArmqGaO+~zyrp`d*?A@Nk=48~t@;wL1J86tP&$GDC)?L8h`yc)nQv zkYOdVl6ZIw+?5R-^jj_YOjWqGIGKgEKkR&{(XdCCZ55z#JbnT_8yNQny#%_sT!N`#JS=JH&|LuER$79UcHU5An}a5E2kf(q|s{@ucBtzQzXl zXW{6s7xO!@gS)}Ee#7GO2Q2|xOnY}*vpU|zPFTSLf}lmLqdim`bk~be8Rxq9no$g* z^>$?U)<6BR?Q;}7@%4Rj)pVI5OhnU*iU+~T81c(3I5ss|o|fQLBs z-`;LJT{XJ)p>a716FFps%$mhAkk@2#ISc^iH(sINCYyWv>Dq?ED?kyR;Jf%idMUFH zpn0flMTIzjHP=DJLUUj|@>HfuG*;#Je)niW4V+KXOl*5!`&AB8Xfm&qIDf+XI!g1V z9hbR}x05jgz*+lYb7UOR<0yHG-}3Wh#?uMozw!H=jZ{Qy8r@MKeHJ zSr?uJhqXNzj!xz6NQA0M5y6TC(h=n7-JXejSPnq>ADR#)Q!F`4-BfS5r1%Mrib9M{ zcq8neN8xlr%pZKS7ou=`Kt8VABv;iLB+^L(-X7)qsN~4rG(g#5kDU)f;|lk{mN*E~ z?iVQ02jyIL?mlUa!}afjbqfA4I6`|G9n5BPPM;JGZ|@J#&*oX#W_rZAs*4ycr}r$- zSz`t(L5AVcN!sE|*U>H&l9#&wiE8`%*CU6D02s!m3-`48`uMPU^*0tuI2RXst>Cwi zS4itjZVFVD*_Xe&zUyoKtc!_obfu^T`jl;HV*byU8tREMPt#|s(=k*tDN%w5jXuKT z`|F{!Hb-9VJ;N)G$_rvZGXx745+5s&JD3PecKR0CVBk{u>>jo0Z80!aVA*{Ll5>m~C8ec60ksA6jda8S)2O zH5r$6nh<)O?= zX87a$HjFLRdN{*o1#rw(DE(>RxG^SPEid@dd25|tcSUJy(gC(UM&bU3sTx-M)%Or> z(nTm^R!n`_lwd6gpXCkCPph+zb<)L8>f5ukqWX9S5wW2p@&;0_Du{aRUfJR|^Yx2S zB(XVHB97rVWJoVg9r@IotR|?RtK@bo4fUyQ@wn@h6!ZJ$AU}8O5&gzqSK|v25%v3$ zBiWHW!V6n+lT>Pd!|>&VNB?rn0YRHFgt+T0DhOq62DY4+y&bFIwCNT8kc4@`TxvP z<}VB*u0g>6ldb?$zLtaQf0jdEbcmoJn(PQnw=%#;P|EKWv-o+j2X$}5!JVU%clq$Q zO50%i5KL;_(-coZH?^KMjy=FHf8-G2sE-0ch)EO43L{S|j58bJQ>BW;9+72FL2%MXSdwDFSM#^Uhlv&J{y#g z`J-Kg8P7+{H|*tW*vRibesu)s$p#)MlS=a9{R8DxO)R8dBwh4q`U7Li*+xWAs;?i~ zq`j~Me#y%1EQN!x^+x5@jJhk?vkzsOJ7{FV*scotYqaPqF?@8t&ucGHV^`Vs5t;vr zIOTv24{a$^v5$@U_+ZnCw&SDuDYH&FSTrR!3Jc?M+X;ou_R=JC&f(RBvHm=Xxi&=h zF#r0s`-!`6FusWPSwR6q9~(~qo}%X}N0D07u|M}+xokbGUYb*Q>o65!&GAFB6!WIX zP7$-ad-ALsPP>9lH$v<-KD{cI8O%G@wyKdncPR3b81ezUgXw`^nm-b{3m;MufFA!< z1%|BnCKOmOC^QZH!pkK!AyeVB8KZZs5*fd*8R(O;tchH_n6k*^Cm^%joS0%y^j5|5es;-OQAeGy zq*>Y}q>^1!DO|Ur`K(uF0VY(Apc$SI16pCwTNgD461)qYOc(|P0%BmIKsFoq$Y&hm z`x^d;;I+Lh%&4W zaJpEiUo*o8#HAR}-@Ds8Y%E9&Z|UU|2&MQUeNr%sWy*B5a@~SigEA<$skA zRsB=ZbsLOaM?j(v2!jJv4I?t6^yKSTH?wKQBy3(p1psp&`<8O1)nITwvr4>94PkS& zc2jBB!EFt#SD1c&I~4D@{T%oPX;!N1t_;@Ce;Nw1Og*hwFI@hHP|^>~vCH}yyQ zxhj`5slUqivaUg3nR$>eqTUN(Rl26GjgZV@^Ci1SlO4WcHmH)}MA-B!8dy`kQ3)%< zYzv(Er<%lfUe}S9b?^LH#uQL~i$O69WVzgN~YOBfgzE9j?A-gM%HSf^U+z_NH-8O&4T~$73^% zqwjw(uNv&pujU%C9;JjHEiqBd8~iYd#TjeY(c>otsMk1c`GTB&C5q=@jKHQqNyR2G z5=bbWsxh}!KGftXQd{YvBuXbTx!I`^yZ zH_ntKu_zv)Cl<=ve^ubW*YXeN6LlF7nry(@5n2kctl>^i^WFi)>oJH2cEHH8 zy4v7{(b>#8C5U^H)&_V5^XM-$qvk8WN+{UNUnz1)aFYU&*PnOr{@zsAmuFW{x%XbJ z{sb5%4oQ=G>41b(Bme-He9>$l&1Y{&BuadL0>Jk0005FY1r0@TU>Nz%?n2htHRp<1 zYhEM-DyWj@op;dT?7BgmUw>M<>eN_N%GqY^zM2vZLAbiQD!(Ow45`5AtRL*m3!+YR zwxM=(yaB8E)%&L6!(wSmV+kD!#;_il3o{8(8CZM{@a@@ZbP=Q(EGp`#|JwZKwG5-u zKcmKH){q)8W!0ZFO5}2H4ZKQ;qPcKS)uBWk^xIlpv@r*qix_HIcOre(U zBGiw>?U-XILg>D1F+kQf^B}5(NZ>GDTLbi#sA;sJLbtd3_^ zjz~%hBM%sYVFF0PIavW%_^&j_;2e9u&qCR1J?wGH=b7Rc_jQYrCVB%kPDi6-npnG& zxV-vl0F+ndYj>mRA5w_=rhTbNFv1*Eu!AN_HbtdBsc6jb$ID}eJsXN4W-SY5%4A3G zXNu!W4p&0tEzsCwCRh?%Bo}nYYYD%RQ>A2#{%7ac4+MkiQACBX!`bI^Q41v_D+O_Z zAFXdSsnvs%{_(CR*9wJ17tK7fjBr@cgyWPOsO(1A9==JL1ZdYjCq5IF8Sk}Zx z8t^@!1Z7s%F>h6te?9E5jbRO)q5}@j0Aw^Vdv@rvCyc ztoho4-l9iIooR2GQbs~maRx$S7Y!2-(@3hIgz0;lMIwFio%jQ=Xe~16@u`!~B3pXr zcPiAt7SW#_(sqB@jp|bN*otbxA^^!jdS&&7bT)F}p~kcJTy)3Z=QD~gJX`X|-r9yU zU+nZLm8+9Wd`gkyN`F!~opE;NzH1suJtKc)VEY~%nLrO#0!aUyoWv=7B4PXjbX@wZ<&?N)BhKcVg_Ps=*Vn!p zUytTZoCBX2=s~XcBxQA(@Vf7Wy8*xDPH19?kiDj|R5WUNuh*^;WGC7N+$tqQwAuwd ziaDWEA?^IRpRH+GQ0*4lSEBXX&2GHl{Sl`qDFKcx+?3%YK#(L!FBm2*B1~YYp$ouL z{Q&UYv1ChgVK?A=%iU$7NOs-nFZ2lwoOp0WBO-dUI`!}Ncqw23x!>T>?bJmE=by5D z`>uy+U7D-Z>|J(vIGV5PyF=Z@uMAK56yT;9X(kh&=`w(;^utVQ?B!djG2+Kwv0SsN z(%g!Mz$6Icg4-`3^5A!Lh>@UbpCgzwHG0LI*<24NJz2gZClTg;*^x|q39dRDsv;2@ zqc0e!_9MgEBM42>7B5HcfsDevcdW<;WkSk}B?$Y+3lh6Aat8X-xrK&1K72`TxokF;xMv#BWu{-KSJ_*H9_Xu0k z_x<*5^`|8Ba8(sA!)n0`q*VDdP7uO*2jizKn7+Gk5B4s44RmuNYgsjoea~k@F5DM{I87f|A za82b0Co8@fzJ^SG}+T=8COAC0te_- zc~N?3LX~`h97I!j-z;JS1LAr_6X=^!!HxlUAO{?O{>W3^UOV-_>lH(GSc}(ZFDv`; zoYqv;NyUlis%9^?rnf$<$TMyb6Lg#_`K=_Qj0W&AQwt&aU|N1T3pCMKBbK|c+f1$$o)BmfR>D8C3GiH1!IQl*2G zQ>y&0Q9l&5%y2>_vcaZMD2lYVAwaSxE+YqBsP+_vUQy`~tHpl?O3#WmQRXc7YdOs? zy3eXRi(0GVM4cX9?QRP#Pxwd0g6lp&5pDm(?`)(7E z-Wg~j89`tD41r`&!o*}4e*=cJnW-wI9&71>$FKZk{?Yh6d2L7O{oryk35@7;1r4 z)Bz4RIo0ak8g_}R9UYkKcXIX5O7A;0o#fW^{f>3BIqu6}$Uia?Y%YpJ?M^U%z96k* zVE{ngdlt@^Xh%{>rfGLSRG+9~W(R;dBWkGp43`7^tDP$Fuz|hg5+N3*(A|u>oSYGS z$f_cW3ZGcT)@pUux$SLVjx51OmT@cCk^aJaFn|adU)X{LFEr2*=H7riqZnRuaJ514 zA*DP^&%*UI_0Msi56YS87pu}ne#W}me8AAr`<|{r%jvX6Te19H`Sj!U@bFei&Wi>6Z~lcY(zdg3JEgOcF!-i1yP2uAx4 zJw1ZyH>6-CoABhYFii=H+P$sC)&{FYtEqXF#o_JwAy?izX3ngLw4dgf_c{y_6NOy- zb#G&OV6g*UbPI2OQF=0?MQfyV@C6Gt7dzcD^CnMpobs=z%lXi9og65EJ!pwtK`HHk zS7K^~=dXf2l=sq+Nc_xSCTxgF5InGN4p~=9#2{hp=Qx*n^yN9s+;4YGIWic$--KfS zX!@czBv%Rdan4$hp~bw#IGBfEz!mc+E&K78%=!W8&bbTlzPYg$v7p9vLMCzrlx4V_34 zMZ0B88ciG~Sk7ORn75S^V8$bSl8(b*g1b)ior5N-T5Q890g3|wlwj6_ty{B-Z6NJS zZ7i_4<-Z_Uj~-ss2VW}!CViKhUnQc|CYstHX`ZPfJfwkk0HRh3!y^3|5aohc&?V=* zc9$R?iFLS+BQt*_|43?iX(Z` zs&Om?n-IjA6-_P_#S!}7PUL{MLKBbA$6MHr^{4@c(FDEq(jL0?_qkbbs(%xl2!H!9 z)GYffyP=iQaGdt}COf5=P)jyWhb#hGwC*Q@P!$c*u^!8%x>Yru(mF6-g9WioS@Cex ze2p6r(-m)j9951Oqn3biJBbKlfL{#&7ln<+CfG$2-j|;UDds7Of19$(H$j zn$de!(Vr2vNYPcbY1ZH%qoloa5l)2n5woTo9{GPOrW?i%5L#SU;Q7|{LLT_%?Hkiy z*$FxyVsABqOr&7NVwfIeJ29Fzco3whKBM7bN^7z1a^77|QX}xe?KOwHWZn5XP*Rs!k$Kd3YG9F7o zl)Ur2J-^loqwt^3%xY~hFr?y!>Kf!n=ctLIvAb>0jC?%UHWuyLF5_lTZFtew^N3Q0 z7Cjhen8voM;P}SCZ!Jj~^f}wk0QFrEXMs7&AjAv|ZYVGw-Nr^OMpd^^i4;H{THs){ zjx|LY@YC(3lnRnSC#@k-6Sn3wN^l>?YMYwt*ASaeR#TIPWm_N$0@vu<+bO#EZj+mHolmxum_z!~vI#H@)X#S@4An-Jq^59z|0?SCy zKq-(AUu~`!1Q~^qXibyMyFg@BF=0yUAz2`Da`NjyY#zz#EZ+T~nZfR0P$f!79);E- z(J8HTGHMN}I!H$sc4|&Xvd>mq0gj1We+f6twbCeFHSL%xuHI$*HJ-k2{_`Ah+AZ>Q zxD$a2vp5(2o?RgF#WyHUP&rDxo{;)N40rm6vVl!(U?#V|1clp@neH+5d4ks1Dl46g z^eDrXQJm16jOKi2#aJfHcwt(rjG-_(`i}@ASqV`~7Lp#ISreV1`-771G}-Gvhg08# zCmJ0mmTy{_;#YHZT8etILRo4RNU;^ObOQzWi_NV1nE~Mxjg(G2wnlSa1?DH(SjzS4 z@|*^JUc|b@$(Ql`QR)o#yD3Dw*j*^8lbM80w!{|8osFYB)2%kl>IaknW;agWudol9 z5FKswV?bKEsj?2v5`ttH9fyD_cU^b8`KG9*T2`7?L6QnZOp^7&xlRiQRU@&C!I*AwU?Vm*?BlBZJE0T z7Yk3y%+#ArD#nqU3@xcJo6t(g&v=Zz1as8tXCY>g0msrk^r>ytLIuy>(N9ceh*7gE zB@9herD40#Qptg-6|j^*d2gXx4(@>0LL&S%6}6=?+L3+rY8hz|LW161bM&rwXg~Op zNzQ1e`)8aBN>B-}XQs1USbZ6~Unu3(!&tR?Q2TcM)?)Iv6q@Wc&K?eo0x_Pc%Gq5k zf^kzpc>WC8QV&zOuZ$l3ASOM^urS=PSXYs#tN}6~%y=?!M!P;NNvzKJQ7x{q*Tq4! z?y!+{krke1qSjKj-ZI22jJ5xmSk*b%lVOyf+pN1$9pS3#%rPUa(LM@ncNcS}cg&$QAC|3=yAes3_#9I@oPCw|-NA3>u* zsW5DC#mIQRK)U>c`LsXjiz*Qp2S>RO-)*H)Q%ONXnn?`cH8iC=ln*3=qF_){aOFhs z#O`c@3KM=$p|1oUN}7v1#?D+XY$&iq<(4%3O$*ePYad21yoVfW)L$gx?#VuNPf^}8 zd5Q!0mKR7CnON{5f&~)_ZR&JDM>%(!uzQZ#z_N1IAXmRcvyO) z_qz)@`P^>L?iwRp?h6b}W3OXwWn9tdg9(YLRsV&?4+oG1Q@KHclw_z!===JiyM=;c zz3c4j_yY=~t93*eY`;Uwto|x&H400)DsaQY zJ(#lGOC!p2H)uB3EG;m)Kw@C|56#A}q;FnMn=nt1X6l-~m}=M^$|o~xtx}x(f)m1b z3zmAk2g6}R6a=!0sH9V3C{bJC=s;8L98y|}g|zCpfJpK?77&_mEqdP%vPE>Jwcy5W zy=|zaDA*|Nc2miw2ODi>S*ar2$sL^(?*rM?HMi|~7HO5kpIz!+^VQQf=JWHR9b7t7 zWeG$P87CE}!++DC6#k*vD+V?6}KvK%tA*3o(^ zftMl{)RW?hnuVzJBdq8QR58Wo%~|H<74#iysGtv1+p)MZQkwA4XhBOI9eq}XDNroi zT8psoBI%~l+va(ul1J=VxgCj8_B>)8#qj<60Yl6oj0vghF5cZse6q5lS!YIF8dGol z$`4(Dfvre0gnbDU=$T zt`-|$YjbSD$q|KtS7hM1% zp2Da4qN;U0rj(aS8wDbzBQ8E63>*x+ZmA&n_1n70JQy`WR4Qv-YoeJ6pFi!i^F;(2 zl6^u+fAE>dRA7ba)8mW4S4s~CtN8Uj{Q~d!{s+7hADyFCqm{46;vJ(!j%KBh_u!`O ztBcBgtIU&suaTIg(8&Z&%Y^}^Bv1-gY0D> zYTOY+zf%=HvYSJfhF4k>$>M{G(@>p?5YG2VjYEpRtPXF1=hwM&tf==DOZeKLy_DV~ zz)kQ9Qa8bPAFD>UHPrgkP0_{2-#)B&-`m0|o@|-ufdc;w{xSUTp-IO~#n+ph|Juy> z)l`KllnJN!pB|zkrwu)`sWMUHR)LR10|$pD#m6hyN;*;Z?_$-k=_A&^GGTEkr@6iz ztdimiGt$2LIyeV`{w0zT09`m0A=jo$F4v(dQB1hI?u|~8LlA9-GOqW{V!^7cJA7^dilwRVkeFfEuy2wTuc@*T$*!E`@;dels=T}WO$_46F+Oh zO6(4WC+E^asW3v#HS6CWY|!}q47{Y_g5+#GtHxOZcApKeD-*i1#%AO3NP338>t2n& zwi1k&f5?$|POOd_`)1`yFum54YuT}b!Py5{!o|pB+@iw|ZIqEP3I+6hbEEqLU31x) zUMYi9=Vda~L;aU=a~U6`g(NVirMN{8;79|;9Qj1M{oM1iN~UdXSZ#C+H4v1%xyB4e zC`OpG*xD87oP$&|!WIAZQ@xW*3_5D zd$iihw5M}$0`Jo7R4e@;6;_@@;@pYPmfl(ydpcX60dDV8W2KG#^egr?EyF1-W zJ)iw|QgSPvs4NnPL-S6juvA*8H3sJgPPM>FAU{sA7)6eM%(&1$^ACyOXcw}Upt{=2 zv&app0L;H(d&CY51cvAoDqZnIpV2*^b81Wxyft)C)SM$VB~tZH-li+&34XY3lCUu= zEp~9vmqq?cEBQCyo0(WdBaS^J2_6`^!j3yA*EKZ42#lwiCMrsjel^U6O$!j zeS_csV(PZ1!TUc~{Qo%*vVge=V*jhRB9DC!iF&n=?oT#AGTo#i1##Na>m7M{6$M)45Q?9a)>=^cpVyi;lJ;PI6p5!?V%$IUq9FvDWTx; zoZn8C$qARV8{L-LnDWIW1v-rVN!Y4oq~Z_7P+kFA{o<__l|0y$W;`I@eV*a;j%VNL zVKDXwgzEjvPP601qgrcuat@rq;S7uLpmY~q8p}$2+t>_Y|6uRwhL=cpzo_eO^oxh% z!1P(_gzizMq`&%o`Ii1N@Jp}Ir!DI2!m|6YD&%KeWQ4XTOeBR#uVvp5jj&H@jwCm@+SL$v~Z zcRDTMlqVJ&`ts-q^Kn<)3U8HRAXB)Nm*$j(-a)v%)~?Tk5TEda=|yu4#Lg&BqnqYD zq7!Xria&au;!}OSm1j0 zVoiPzwNl^KHuK%Ps0;G>_&}ta9W>*-%B1w6j?s2A^TZmx65|?{bjP^ck$aQ$y!8i~ zoS)(+CRmM`{x4VfEfm_LYIA|8gSvJ2iS;Gs8xrJ(;h@hg^qeZ>+4&Hu!bcY-`B7tVolDd=u134LbY z9^MeaUz_&&Wb37tlfX0_7fpgP2gp3>f5M>vGHp`DuJw)7K2!ikR5#HmzFUo{fZ3rD z(8eoF9$3Zyk+8F)TR5TN?L|KgJ#hB5q;_2;O8I8nYX&s?ZWpp4P+OY??Y zMUKXVe@Ns(l?ZFwV{Q7eO|2=_MIAV2FO_KWt1ee5*P3fG`SA3#?r%c2Qa?51=)=vq znz`r#XHODXGrk{?GW}*u~Ji~J9^-@CTD3AZ5!zl?rEs0H^I`X z2_7RZa3N*DuU+bUKW^*bX|4}mvB#Jk3Y?O` zdQc%dP3)DXTPj!v5aop#l`j?|$tcz{wUTeg~<|Dakinm)bscd!}Zk24;~Y27?L)ws2~nKTp@ zLZI@q+GMM1mMB5Z7`(+N^BntlT4F(_s<|3*6cY{GR zqu5q1!QlWnEWW))KyeZVa)>!-J~)*DzFq(K=g41Q9E-16tEtKXh8E+r#n{+5UzrN{ z2>{Rm3jPv8TAskN5di>7=Vsv`BEaM42dP9)3C}Amsm&ZOi^*T8V(Pza>3@M4r7T%s zWK192c->s_eC)cm)^>^2B$GnO18v?RibX3B61*d%F=s{8 zhB5gHBIdTh=%mwokUyA=ur$aC?ht#{71&Xam{urC5pah9GlxtCCrB3(o`GpED2N}c zJ__uJ(Kp9)P!D7uH|wIZaKIlZcP4iJfiT}-GKpjiemLj-;ct9u#%VG%IT8h4t!*37 z&nK{RlPcGZxP42l!z`3TZ-9~ApK(-U_R2(dnIPGdIkLSw{v8h+cOd(UKw_)qm`ACs z!=<8?j=T-KL+$=i;zbm(pgh!V2$%E(Q{zdh@KT z=H4a2@Jdf6|ABMLTZ>~}rdFiQ<7>F9*}B`ZL=Y|~vYPp@i7@MuNm?D=c_E+ade|Y* zsQN3K@Wb%z*2;c>qAP8_bRw=nmI(evn^gQG@CLO|mY0>X*Pj?O9 zZ{Io{Lwk2*s9UcpQS)HZTl}QGyaQQ^Dm}fWJp?YQZj@XZvQp$qogGG`P1Dc+;0$zG z5^yv&%|xfBG1Aw4L$bfugk@d3sv@oEh_~#dr4%b3y;snl^>kE=ih#LR4v{SKec z{Bd@}0+E~VHAAD;)8++Xk^aL_T0(n!<(SbV+NP8~`CCDr{4(-9*$I29PLjtm z(Sjg(P~Ow33ftqX1o|efgvS7M-fx<7lcwH7H}4VDLeoDMnyRL^;C{Q_va`Kuy*zBM zq><<4!>v=0Ar~-u|y?XQnNWoO#y$B{-v0x$RVLE#7{Kf`zDm@?jF8G877BbU~elKK`k+wiL2cqa$O%l zc%4F!ujdmK%zH!I30yl@|8}~=R=CNBj#!{xdE$Gq^lcA9pbhRtsrFxn>=3V4;G4%2 zy>FfB9Kl!;D~VeVslP%p&pGlq_AAfzG7C90270@|TB9lNw^9Ikd?Kryki>K;^1M_o zTv{49AnX?m#e>Q~V1i7*T3Z?i^v>d8HxgI!%DPWdD{A4~Q{{Qp2C2H0QMYRi{2G$} zZ`zDk>tlo{;&D4L)<$UYU=Ac?+q}U1Y8aT9=Ju;pA9&?*o*tEaXS8KM(5m@YMioc2 z2SXIqX7xz4b&WIvkTU(mC)WfzB5?+tsv`M{McJ)al?es5XZFt|+=GU0m$X_Mmnt4% z?L$S3M|l}1pG#gQFfR>B5G~l0r1(a3M4)Jb0VwXHxDZpE?0R-UE)nkia#5o|TQ*wu$j zN+^ph8@Yix9){RZc(H_?4D7^NGKXeRdUPcni70nf8=@^ODyjx&R)&=x$zKXKjvSa_ z{!@H-|H>&+b1?KxQ*1C4HT#>$Y1N9qZ&u;Y%ZnA|jx!Gq2*oE~3-I8iocIiquV$DN z)Cu(CirgD$&Tu#8*DGs7CVdLeKOs@62(m#rtv8$)D`tng)SeJeo0vb=zgUwE@vYKC z;To#%B4aYuc&Yr48Z2g!NNZ_zF|lwdcQ*6X@1yzYta)~r%~nNpU13gbVvDjyS`jP2 zVf6HlDFb?nNzfQnwjAL;IeDSS2V7;yPLDyoBr?Q(iH8t5>ae+np2Da4r;jP`P)SW( z=Ml4Wg`6cCrPGo~!F48K_uqo)=cn7e#QL*q`vRr}c@DX6elbpLNVusK~h&A*h)Roh4cS~SG^mK0e4@f+Lz-@3XpQJXHjd+0He zmf?ut8iy*eBI^Lo;dzLA?;#oL7x}^wX6Q|r*KKtj@2X)PwO{MJ941T_U|qyaRZuRUb&P<{inkgH1r@d8hqD@#IO<*Evi32zGR8{4iq^9`#pg33JeYA z6?Z}-%}O-K25B<~kr1aoM<|qSH|F%AnqX}(q6(}dRWJ=KeVG`k6{^()AH{LJ%?$tf zOQpwK29UDT1vU(8vAH$!Dsl{V>cP+Vc1~R24k#~5lYFf6t6gI#%h#)R=Ryr{fpb{r zZV?{MCv94VYqmX{Cn`^qx!lke9SBi_ukTzl)@}jlVYrR*qI{!VQo&{(7`XI zDgG9)=|aw;&Ms}bY`6sij9P5D)2gy4-g%pW8#DGtu)eO?OC``UH4mrviDKw(5()vY zoAC5k_NLI>z{uPOf%+kYG0VM-IWv7qcdl2E;Wu#j6RC%*eH_$MX&i+-fL{v0cq+|w zq-!(>1#?08J#^nl`O)q~_+@P(J4X!u>dQ_lA}l?(Y%CZ@yaIbfu|exT>C^lh9+YTU`9g=fm|{PLOVv2LDbCJ|nj$*?EbJ`N^KB;uIhf*!#bXi>lN&L2Eg5!g?6+NcC-@)ds_kRg zSA^VvYMsex+Km#`W@Qjm2ASFZJuHCL1ImF(Ly{#lu$CBFCCLuce2~*1x zL&&XQ38+k6v}g+(V>Mi~D(?!@>nxQSs1cZUL;;bm!@UO?>T&YwR zZr&})q&JDzvizW6$T_2XI&H3Xvd*kIfbKIvI)?mG_I-@#@=u;j)u`E^~I+}CFM7F3Im;+@mHN^rzw+x+qX_o+kKW*GuT zkZYXpwYSN1V<1$|r{-*)fk%o*H77`)m{E+5(YrgrJg+0Y9(nb_vRqZKVA&ZK8+O9F zc&UdSNsRW>($X;O#;q2#D)5Cc=ErUU;KXJmyvu0z?#0kHhv&8kCNH;e>rv-f@dDmQ)i(Ef)t zHsbaZS7bVV=VEhVJ#Iv1X7g_FHB>BJFvj9tLQXVeBhB2#|8x&5j}z+!=IKdEIo{Pv zoAB{bI+GF&3p~>7yk7p`wc2p=$f|v8wb9;p=7Lv>BooAXt9mXSSe0R~^Ai(IZHnsq zu8SpEHc=qYEFzFzth2izac>NvT_%-KO(G$g&LpU`5HG}CZDu>dvq@#4Aa^nXr$)P` z$bM4?Z##0#k68NBSo#M|EkbX@VI8#Oq3cg@23qaZU6R;Y3e^S6BL`PYsz~)L^`b3& zca71hd9u4t=A3Lzuf+eH{ZJp!Si?liNS=Izv`E@=HT$j5N=yOEWhg(RyN3<>pLV$u zj|*zT0@I4CMe7kepq!chItjH=3+-_17BpUvXv;)y-Q?Gjk8>@=6Z%zg3oDj3uwn;e zlEs0aEJQn~)RaL{xq!%cEMjz02g+E;r|5Fkps9HIn`YQJwtoNr|AeNN3!sI&^XQJ7 zoYxa_IhcvLCBIGSpo|peU)9A(W|``1q%U^*e$9#ny$>fTK%sl!g?hl6^s}Ixk%?x+ zFw^u;>5~-i&ccEhN0P+H3pK>`kZ|RM`tekzhr|s@k)o+oC2Y&%% z7GjRdO|gyw*3PT|-SX{s8OL@}G7M^%VK_p&xlf=2z?-v4&vVg-yP$S4hoXrD(hw={ zT4S*xfoz{-@}x#caJt$3Uc`KLbmgJwZypu!}CVI{Aqx!ttOj+p|FvT_4q zw-!<#u*tXv-;yDA8ygN*j$YA-gw%mlS5uV1O2VqezYNny^g<7u$R+Q0(<^Ehi{nL-2i4D zEZJ^dT{W}_i}aa8@{{LfA>$O|xOTQ4rBcz-tGYzwcN7#RI4Yd?@ohIgm#{yavG7Ee zi+8J(nVoo{@|BeqP*-jwe*dE^k#0zo6{W%`lLh#Ap|jbg3oHl$OGiz14*&}tbc_fb ziZGZUbfP1kW_*=rh!cjO;$+Su5!}hzG5^4ZJY@-lMssTBr@R-a8GoTnm~S-VzIduM zU&7~ki!{x^O``=Zc2H6aNzaYX(gzC(9t!Q;8r+^LlZQ32jq68`5b_~ZSv!mt8iHy* zR`@WWi9RhPOPGzoMC-)^(9{v<4!^*8WxKzJ?~SS+&K-0cwn*N5Q)ohCZ&|QoO$&f4 z8J{o8>PT4Q>RH5DB(N|P29p72wT`=q`w=NOiK21B6!o`q|+%$FU$a zDgZ0~u$aVO`rTNZRy+82!3>nkAyZzc9j^h9Z_JXBJmWo=buv6I8=>o?+l)6b*0if= z*oc@bkMjR^yg$0?-v1Mhyen)gvH5T|p$3h@ILWBnsM3m##pw^`jdZF3|EkjcE{^G0 zaTL;cadxNNPEO@u?%Nfn5=KFKA9TS&1t)TA_Wzew^IP|<*f^Xkh4tD-2o63 zvF`9LSOM*3{~DJVVpd_UV^mb5IKc~07@G3oOAez(+A`fgz=uw;IPQJn+5t3>nO0V@ z7szSS+V!%SUA~nO3SN7a2?tiZC6ME9k{rJ8CwgVCCWP}K5x+px7 z&=;Rn^W3`aYz|Gzh*eDc4bU)Qm&J~ZrF5J7tVp>`vLmeo&%jVt~?U&{H zbeTV*SmX+?t*HZ@?La1$uPSC&->R}1-cjdD%Wjo9UNO&8tk6XB@8jh4rOMR4ac(uq z@Rw61Ea&Jw&;o1kh$)&Xh{RWFQPE>J;jPTO>tY_y;%ftRz+ z{o9UCriZmF%)N_YC?auH;reCgyezdsmpeO2+liaZ#PWmbfEZ_`6;SJahJ@aAX_^p# znMEJc9_w3&3ar_g+*K;Y755+~__$U71aOI`KOE)3=ZrRFH(HF}AWSbq1~F;PYWt-A z!_Fw9%H_`9ED?!FJ4a#}>3ZwdJDK5pYcocd{OsEhc{ig>X-!y#yfKDLsm}q%qGvYl- zpI;e{tLiDuj9VvRrvfu${C)ubg4FzdJNNzjGTJoKiNF<}a%P@%uvo)NcVkRa)@UQa z5CV$7PJjz1f~H+dvP*tv68tObFSpViml&$PvqE*k$n?~e7(o2Yk5SH#S+S}6#-j^4 zbC3oR(bn(Pj~AL(#xNeh=$W<;`j1s8?8$;9)QIjmdnb4cD2s}8dTn0>-5|=fo3cRb zbSS^=Kom%7mQztG`+_}4fS0RLqc-6OGoWFd^-#_4cD&zO zTlJoZ@x~eiE{*9pDsXybgX$Y7fnpXIWvE41XZFq;j5iAm_*tPq5DE-`h941&z z#S*rz5dx(j|M3i@j4$`Pw68@U3pjCw76e@^`kBwEocpC;RW*mhWxo!=VV&m0bD_`{ z3Pc064T9o@_PGZv(qt>WaZNv=0{|dL9Sra|pWk_8= z#oyG2i_HX0?)+D>${H^x39H}DznWq7MiJ~NLT{w*>Fl$ITkM5;pMYkd{rSEQQIX4Oa@9N~?kS?bkycnKbFFzT zm9=ypYz{{q#WAffs5X12Zyjx4-S|)e$_NR$TfC_$LXvt~GuTn2QFQfZ%PpSNMzlI& z*+7B+bxldsD#Sjp@?+hxPdGC0_!SOml0~RMa2vYOV#GFB}BXmFsjX`F$Yo zjIyPlpa&;CRfbYE!d~i~-+k|4^_uO9R6n}UFNuil(wCVHtvi1(FIEZo%_4=-xonkg ztn>G5SU{9)0sPh*Pb56tP(&;;<0CzR-BAmLrg#-C;SYYO zT%CRJntvE^lKWcNaqkF zqNHNAQn{Nz_Cm~-2^T1WI`&0)R;+S+kg;Gx1ix;2gO-xpE-BSeCju*js0_9EHxY zU-Z*!vlyh?qm1F3Jz50e1orvWFiOv7{*`@fyoE0r_K=y?pb>x=Ax zMvYAg@akGxsI+6hPhbKsojS7N%#Gbue@lsJz0swW(}j$nyQ4U)P^?j}>ARv5S(R~i zPy`*52a!zpo)=_iY^B*sO6182s*=N2cuSF53TE5aJXdiS+HPR`{|cBVS9!W2yI9C^ zn6+=~v0G7GiC)G&->#8@wYIVm-^);Qd5vxG9LJspt1kK&>VI>dcsWU%TMAC4otIEh zv$H_gl$3R%G1}oYW7i>C>|&lb7|DA(4f^5T!XYhSA6!b|>n29Xo!5K1NqHiFQtIPv zAR1tw3rl+BqJzPv{IvFTnDgFj3!7AW-`e{3+IRsGxgCbne{45f|FM%Qub#$h_n8~* zA1E(QV+#(Oe>mY$^iLdB|Ng_pky9~i)?|nbu_g)pHIP#u>@&y zxk!^2k3A-yog-edL!Q#Lum7_g`RTyPQFEl41_)f2&?#EjDZGp@+^R5cFgFi*{g|b) zj#ozIP-E|V8yvD1r~ye(c7=Q5dz|twja^lHGUL`;%9D&}nUz9b`yZK_IR03vJuS|) z;xKx~eRZG(BO!+fEI!aFNV7U`Cy^SJOuuX^aw;QgD!jF3MWr2AZNJ79?9B0OV>sHf zi3P+Mj?#%eX%0Hj1T@-E)0n$)^Jdh{qK#7hx{O=DthQc>rGRTm%2B4WE&g(Hfo1m&AkPyQX1Lu7AowYl>c|gV*S< z1DPk&2A7pevMnfpWGbxDzOT7Awr}n-ebNR2;P|X<`SOMI6?V$pw(^dOck41sp1sD=Y)s2d17dG5I;;Q5n#; z7=$3K!b~sD=?(|WrN8^dOexki#?MA^e8o%Pn?!iDk93 zT6Iks@ZAzOX^dkPZ4*%dBk@*GI3}a)IoDF=*HI#Hrg)StldO5AV!Y2SR+0~_-e?}h zdom~e(-xQ4Rm3RdHewNSvUzf!aPcOBI#ijdYqoPURod8BKO~m=E0LH`u{>{klmh|b|xdlfTB^3vg*y(Kz!k_ z6}mrPLAcruO5v@2ixGAIyYhPZ6+b+RIr*?OImUWyG?G1FuG#vYVVvCe3$BZ#itEr^a%J4-QqOy`<^sjny6wkZ#;w~QRSB^A~^I8epe zCN?$l$7CnZN?n0R$CfH;4rQ1SUV>8XI@ z7UTXJkS{FIm*gbxA^vl7NkM?nNb&7^254IM1}K z4nRFc3xSHw<@zCKTSSg`USLTN0djX&PhL4^ZZ9?dG>;y~b@Y@-dh;W*XMReZkq#53 zwzatJvCj;N4@%fhRQ70Y0`Nw`H!nlF(ri~p38jCpS_bTYHDFjU9RmWqHxU>*oj8pG zbNelg5IecTd&=66jG8H84Q~pj8b|JXGfkIf25X%^oUa`d3MvvWbXZp1iQocpjNJy3X*GL;pzcDyl%VM=JJ=43i#O! zZfWt0NR&jcx&gB?%Q1B1xD}h;yImpn6>R87wSXmNA)+px z$>z(nR3^C>-`1dp5?kZPS^ zXX?Ucx36)}kGZpVp1~UL*Xr@qW*&B(H|U(SunqHL1?d8fI-A+w?y~#-^jF{qUbR%K zWBf4VqR~^ir=HGW!zPo){6X}y?b!N*_r%=3rggk1+_8TIZx+?0KHSnN7|+RIEE(*R z%!x6H@{Y5IZ=@ZsnNqqOMut`2U3f$AbIyg;6?qLQodI|q7JSL9?5vCD_Uy&gEY(>1?kN=e)WQTpKeO2Xk%gK`OCdN!N z#cr?zxY2DoK=k+!RwKTj2T)7kPu{(9$({d=LKKBBq4aCvF-H*@ zh_u5-_;{}I7CH{Cq7q-LrjgMO#i)m{Ki}E*q|hDgAH_z(@N5H7&cx_(K^IV;g}Qg+ z2ssCI$8)2TXxFI#`yR&k%9d`C>q#174-ORsKmXhDAQ!1a7`+Nju|;s^AtXVN7+jW@ zSERC z1y{I2R)ctOG`Qp-oOf!eIP+|dfymIsYN7AjrdmpCPm>`B{gx+Z+ z#Lag0s-&5^y8M~2bbbeodKzy#+Qi%RfU0gq2WL$yzfTOGn|B`6g%hv`vND*8F`J`9 zP(qo+K{E;cPO<)er*z;-DsD&*pi$C--^r_fvYNyUHs&f-eepa7Sgy9e zGE$15b7S<4ow3M9qJ3uB(jmfA1hb#_$v24yae9mMc*6VN2HRSmryYLO+>gzy9mSI9&3@lljbMX3r%>d8bq&gO|f_NiJjNBhqbx-`E}WLoyMu z#2~o^10qj+^iO!?M904J0l{R6<6|2)v&6MOQ25W+HAFcbl_Ucwo)G4iU`~^Ry}X%WcbeC;uSh?2 zMZkpynY|}zm{w$sx>s1lvZRt|`^cMhvSlL-VJuW16QxCb%5;|X&C7DH>6SAaHFR`v zzaA4oYF+4f1T0s_!di`_@g||8AnV_pPws_}bhi!5qn|tEd-OynSIBu~_gFfBBX&&A zxL09@yq0g0cV23~=CKB)PRjE<3_RNd%r#IivgKx>H(c6>bOrN2%n@#mm^^=MsC1!k z0oT8$m>UzI#(oS@)@<&B$R|htSmtl8!gw#PY2P!j(N4t$=78NH=C{ExDZ7xnJ-$yF z>!2bHAPiHso|uNEx>ySW2MUV5!-`Xi;gTVc($2O9IjA}gUXA`g;?XH#H*5xKV7kCu zytPYWihAJ0`{sO;(?l!RXK%CpSr#FNIN;IHp7CX|d0hh~e7AmllPiNl9#v|`mo6Q_9G`nIKv25L z=tc3i;|O^NIy8Xa=(@O5()TOb08m1h7}0H9zhxFsTH9-6{Qdv??|^TsmPiyhVQ&R! zYy|WBYv7w66G=D7nfouv@ykbigV6rpVM3crlc0GTclMjfJO+kF0!Wu@)p=}a$XE|Z z76x_9i)8uy673Kgmcr_<0hLeirArP@yr6pC>ct01Wj5%1L$5h$pe1PaOK*;V<{nBmW!KiBDLJR1nNxKy6*rZBA4dVif^(3xz#`2C!R%Ha zeDC@E%uACILf6;n`QzvDp`HyA&pTvgE2jKb@Ajt*pkTdOtWwcPCUg0y346I@tmBpH595D|w+(siTZxyUgFR z7=3?96E*5UDG-(lsr#gTQa0%t^1)G?X>LYB zI<}gu!}g*GqnDo9sk@cPucF64o$rsbTl4BtjyUB5QA9aFm2bYEZWtm%prZV^$GHq4 zxV1gGQkR21eHP{r4sRMA%JbwLoIdoQpttac}VN_ObLMt6nM()+d;xlbvmeCZqawNlzz^hUCuS$*j+cu~A z$M5iZekEEf{iFwe){nB;wwbd{#o8ZUVqE$>4Wu+I79_e-fc$R0$cZasA6FTL1~m4u z{rS16U(r?Q>$OoxIp4A41|niR8RCYLl-JzM%L&juD|_R;#=N^#GX+>I9d%pba*^`z zehN~o5}JIX3Ya`6|0wUC04KWq8*4LQvdP6BY)B5wOeH-swie2cW7=pYEG)Q?z1+@- z*18bVny&y!LI^GzcWei^Q>#Xq+deWbIJ>EwC7f%APtKTmwZ>;Hh=DReRI8V+RwXv-YJKOmx zsInBoL>E9kg8pj?|EknQjMEa*LeIRU0(!5k06=YLw&Dhmxbt`|BV-+;o;@t06$hlt z+ClV$sbz0iqjS+TH>TU|rYh12R$b|Zv1U|YeDOhQmNgV->2ENiS(L1rb00ODf&+!2 z9UTBQLd|o~vTx5u5r}Y_g4NcAEL|hEyC^mBh^UEk&wPi)^&(ap)IQQOerWeSDKEsV zO9I$G=6|TJuN8}^`xPgyl-(+}TYk@vlT5AdSgePAZU2s;e1CBE40WW0xj=mQrW?$= zeU?52BUt-KgBz2hfWOV}pEJ`}xNEZL8p_&(L|q9J4P|geB91sup|sv$tc@(!4@oSU?wb;t!Oy zX0BPF9#piQ@1*J%2HNaXyoxP@*J)09Zhq&>sf)j3QPrFhX%SFs)G;byCyz1&vTQ5< z)@9#%vU$7UAbF#Hv5#C!@yRK44t#@kfooL6aa9y7|~pXCOht| zz9z3w5<7m_QD$n{Dp2+dw!JyE$QQ7$h3~YDeYjrcNp#aqJ?WuFs?@G=ffZ3cpOJ<$@O2i`)KD=O903fI(>8}pxq_USwo4W0~&@hD<Sv%0fOgS0cs4oiJd|{u@#ji-68cbigtP~7TK|c*+_Nd%ulo|w5?|t-CF-K~w7t~a z>mz-D-5)OLOkTME)4Jx|a_IpC`w%eWj-4-ca=LZv!@MI^><7asA; z#zTCSBMUx9xv8y>&A)akcE~Tr+xOkcVzi9ec7g=WdpzE>h&ZgULYZ`Bf~QlzPM;zh z<8Gcj_~KOERPPA8-M@W#+r^3FKG(3N9U6prUj>rxiM!#;Q=!`tOqnxm7a0dH5auIc zqdtAozsJK#ul=||2y}TZTlIe zPm?Y3BxP0{w)<)Ymbq_y7~WmI4fsg<-gAiW{^q@@Q$*RV)t{r3unMG^I8ZWz*RwgX zhSA7Rob<|(wBA#0rA-J%Otzf@WZGTiK2An6Ds|^=ub6sw-0*s7zYntYdB_Bwi4zVM%V6U5PleFbuNCu zN)fOOcevKwPX+5&XZ*am9^YYzeNc5JB*K-YC*p+_Qh%U0GjZ|jFf|b#WRYXs)<$WH z=O+70c_D+9i{#iJK-D$>;9wa=Eahf|a~h0#u5=aK>?UxNuC9?nSxC3W#T({!7`CV2+5wHZc&u6W%~qf9Jad^NhtTU;Xc^%;4O z{50MLYn+?|$e7)Q7Ii#Lnn~C&RtqMADr%bg?cE-bKw7iDzsni!mn%r56cp1A0khIX z)5u7L;rLv}17qf27LIQgWyB0|VbS{9ndsFc8*OB(n7>qOJNaSMrjd`Ijc9BpN#TyG z(V?OP;_0it>xjrDlE5-V1ZnV3pHg5=b%g4lKDa6gGGf@9yhCuZ=#WP*cn-n2z~3z<~)ktcR1V zu%>NSE$Wlu$5{pBN<&Cbt;0AqU9DLUk#5H8&=V(9`qw#}R6v8-UI&iQjiI`cR0XV+ zo5G*)`=xuqc{^tAja#t>fS;9qq_MwDejMu(5vZJ_4cAxvZw1GBnTHfJ0YmQi2b-c^ z*7xQGbc(vieok8^4e9bhu}(_Cp#x;HdhxeD_19-+6OaLR`!xRLddOqIXM6cPf4^2h zzhk)+J$SLS6r>%sD{Mod$x-G(fiOzQP=PmfH~yY|q#`}07>5OTRc}u6f5aPhqyW8y z+%NMfb}x&Ck%@!0?;I72%b&j zZb*QJA5p`F6}@%+%LGC|L6CyrINZf>pWF!S9wQ9~U$U8`xcelI;phWbLbx~IAmBuf zl>QE(=dA69HDZE3L(`Ra&XS;8d!wL+&A$PE9)Sn6k8#+fgMl?TyCs-+K)$QcGZIlb@knwQ>QtTz-C=R!hJIU0R`>ktx9$`tlgW)|r z1yzz=SwAU%$zLXI3UyA>a{(B7SshvaOb)JUzysxh6I{&itP#b7CnTLc;XbWI6kpS^ zFBLF5{^Z$~w4xaU;Vg+?zs2BIMb}8}M$9}C9g<2Tnfr6%{6+i$@ze$9g%K1yZmJYx zSu^_T<;r*ys_y7-xW(#L!3UBli|<-Xa6$uTv6~;2C$picy75OF=4O!!G3@hZa>Eqkk7 zOt9PdRFF-^Kk|SUuG7c+M`6n>46OFRY+ zXmust&6q$*x2jHE$QeW|cn%D(!oHA?uH^$3#tXjMB1jD4_Ibk#a>lv``_ zK13z84Z`UZ+%$ejx{RO&c+3#wCeYqNN2k2tz{2GZn{DLP+R3v4%2F4Oc(V@h7nX!C*+v?t4$px<%WBM}YtCr?0QKpeM9k?uO ztA49Jl8UE9&x5zzI^*+RnjollKDvxSNTu&+w0p=Y&6(2mr0Z=XY`~H_sN)=)cgoau zO|0h^jG)v3@jD`Er;fWK)XPc{7>l61|NZ?|Rzd@%Dq%ZUzm^Ktib3+_@~(M>tnh6* z*g$vHxu>f6S68ryX1vjGL_^|+`}#x|l7hiiR?L|M5W-#MLKjzkzp=no0Pr{co@ooA zhW`^oYlW$;JZzPhPrfY2uqPz7wQ06mK;T9Kb@9S>OO8d8aa&gA_KidQ!4``l?PnmY zOWt6po8v3}0vFL4cP}{^veNha z`EXKu^}%r{4fG$nX-%)6#aEn2T~G4Ah{a@l@o+ z{`(AFyEEDlq>O%5_gR>13UD%sKsGyzA@4w|b@g+zBrR5+n>i~^@m8v`l`K9XXVP8z zY9S0n7m}v@`<~!O+Udf0Anjh7O>~@&vCYS3BugIerjq1+fn~baZ5vx@x2pp+*M94- zy~*Cx(-frYF%mdlBEqg6I~yWtCp?~aagw$|R z@|!)rjvk7w$ya+$6{@FfUJske1`K4^zsG_5TyLKf0T%84_hZoa75_Pygz-AVVs|_C zdGzF&|MIVI%P!E&RFZ|bth2ZOrc!J+sAfG{*_1~@PV+e?cb^*|-Ta(m3qv_2yVBq3 z_4Gq8^qo)>UFCDt`g<`G(+hwIZun{-1$+kYb1_ga0QRP#&yceCyXptY7vV{co;AT# z9}Ub-A9$R04(vU^;@}JU`koWi07p3RQjL+R)B*ZF+9yl*S-NC0w<2<0Elp?1(5{r^ zo8`7MqKsCalCTZh0!x0&0}qq+cgf8{i9^W422U< z!(gfNG3P<(!=lZN#{1Lbx}j(Cpjr|FF9Wp3JLx7Ou19@qvzwHH3psxu!exVal;W%^ z6^7wzVP6#kLTje&TGPCmMiKl9g1(2mN@2H!@|d?Tw*xZwb(NRCBh@QE;W%oK1AqOK z1}h1Eb+9Bem^!zjJEBwe-9ZTcC|>vPW!c_S*#EyQ&rlC&s-Q69h#<=U3Lp)PNz6oV zBS|ub1CGT*k?d!p5g8(H~&{7jZqeRCJJM0NquDM=#$()1|_cNa#_*!KAfkZ#rDXm*Y-;-3BqzCobQ zYnk4Kf=h#C?)aGS-)ACG&$G&WU;pz5xX$wWv;+O61v;Y#|M=Sqx&)$n4DeF9Nk-so z#`2^+dCIPV$&rgGV^zNM9HLd=X36l;=XO?Vpo{74mxRR0o2U>9TXxD|xDOndXtaJ) zr{5S5P^}V&SJu@L;u?+B7a=ybYwUf#7D#Z^KR>|Hx){AE5ltn4cJRuX%?Zpl5};$yf4=Gwx>SfLBiwV*gFG>HipwTFl&j2g9uI z6RUQb{Y=m!Jz5BjioI)tVne}QkYp04{O@9?wqR^^IQ{u*!*$d}z1HN15A z`kx-J@kp4v=7%`4hBormhGb1eWc2r;=)nW3qax?_8lX)DJ!o)SE2Spaqm)#(q)1g~ z;k~OAS|6AA>08@NKc3sd;D~DN4%|srdwK=tE zm=O*PBRel1P!FMp6nl*=ngyZq74;hl)eLUG(wI5$4CZsiR<`$|X&CqZT!>Qk|K~@% zJF0+L{PO}!<7`E7OQXTPc))0N0JBM$5^4%pd$2lF&_V)AX(C68j-CAV>Z_rMZf>6(S zI()2s!vv3D$3aT)mqoV3mZg6oNq9bB?l;3A5)J*#wx3@1N7Z~S$cx31p4)&XjZ|;7 zzDS#K4sV7sl?p?1zWh(@kiY$ZwIoyC@I$%zQJ+)=ofX%!Ie#pQhQe*$T2AD>`U#-K z6x>(91^%l2ZiNiFL%owYPhz|dv=r@x4+3Q7d#JC8lEsj4cOQcCNdaSp%LbIN7!|9C zFm6BP{_vU(ou5-O1+I_RYDw2YBn6}%#(2bY%NtqRVBpO{CY@vBU-5O9HfW;HGQs6%x8;UXoBo% zXB4&MjQk?^Y&!NOFMNNYigBZB!#dn{HmCLT^ z2@DC-;0UqOnB^AR`|ZAmWg#A1?+c*pDo^`ipS!-|?o)3nr1IEl&=PYjuP|~=AEpL{ zLT*uLwge%$^(S1jWtXRkY!`0N->W$wGiZ~1HCn%vJt_TI`o}yWd}4UdCZi_XX}Lo} zrC^B^m3A!hykr$KFilb2BwPjo$6PjEHmEnaS4*qkLBOQz#{S=K3J=ffZbykZ6|NV-X zYW&Ub6Xe|mvpTM`b$n?&=`0J03O8^;{y<8ywsgH?aHdc6E&9H(ZB1<36Wg|JJDJ$F zZQHhOXOc{;nV2`f|GjnZId$q*bv#Q%9L$vgu0dgi9`VisQvQtyA(#iKr6 z+0G+<&OxE;C2jthTWmSNMCsrHE3Ui94k3ueaU8+^4aj#%q8&v>NKu3E)pK;Uty z+D6ROcSlW2?-E#p_D&;ct_ar z6^ljf=M)|$OqH+&EKSV*PbiiJf0#8$V|}5o zIyw!Tk$x5u4U-MFwdv~xLfQ_=mEpw>A?I# zXuqBg^eiZcdp6CkXKW&l{uuCg<3Y%X8?Z^?3~9e?H~$fANsJkOGO4A9?!%>v;G1I? z9Tv7jy@8!~Hc|SUc6wBUc06%?8xt^(iCOlzGOa?wt3E~krQ=6?EO&yi|7jIS%>f)- zW?%)P+Bny{FsA(#A~&%W_PeN|P-M4B09|3O$`tzg=PP#tY_Lt%^P;2N7nLo_&}Ac# zjiK+)`uhBv=k(Vk?aO{Cm+$eNm5EZ@nfP;T_-$!AY40EO0j%u#QV$iXKXUNRfSwX2j)aPf z_ix;IAFUINO)N;BWA%zQ9{mRaL+Ky>H#e93Kop@PbQ z^{WhQfazzVrm?E7C~Hw6i|JYs`F*Y-8;!=p8apHW{f5{YLk=1rM*f`WIz&E(wDasJ z)mHQA=Xj#RD`f@umg7RN%f0$ly!swqy@h-aG5hL7{3?-Twn$t>sN5EuYBOZNzodYn zIpqQl!}FS=Hmq6|ju6V+TtG~IH6TB;a&XFkBC%rp+e=>*$d}&t*YR)S3|X{jh;QRh z2gElWD&rL(*Ct(pjzF{`qz)13*Dox(@g;}T&-9UI%WEP$8C!e&`a^qGAPZ-n&&vi9 zD2Pg?o1N~(m6aA<`+XG5~Yre0F@H#a}rtkp0eGf$3cD#tkYAljQPuI zu8VeM=PDUOz>qGyxZ@ua1AYDzPuyB(84v#0%|~X(Ktf<}7MU*3u(}do>dy&2VAwkf z*=emPQ!*!cNL&%oNU__HhV6*~01sIA$?$)r8Aet>~>=6!0R48?4KYSs!Yf5}|9EQ@eMm^8(k-O1P+s z$T3m|T~zWctaUE{GkE?>yl>2P602GM^dfI9O}gmjmVIib)_t7tcP7r<-`s<162z3@ zhBJ$3EZbsUL>4RsqfT%y%GF~X>BvzKc4k>AsO{```0b*~-CokyrmLe?4^8Fc27$45 z&?S??+TmQ0=dm+5w&QlFy;zd#Rnr3E)7pwkoDJr{*{pEypNaSPZOuvH~ zjGVHyp;_WD97lQI8-iRB?7wh@unybPU~MgIo_}EuYYwwEaB_(27hUsILPAs?SYm17 zy!t$|eS9KbGL2kWLf3vlePYo><8u$z+hKr%`D9DJC$R{@9zHLbxx;LVM$I|hpefW< z-XpEc3;B#8QpK$Exd)qw1})@O_6$I(>{eNtS~8k9|L(`Ed!Fd)(B@knM(Vf0xUXd- zd4U!?CPbJ>Dl^cE?-sXXC?9rW5wJ?F@(LM(8vPE~v4&#>U%5|^Rm!O;cWN8r&x@<63>=!pj4_dcfIMnJfB;?h&L+ z^Cf;(j+Z-4Pc@>A&`>6%0ox`pc8@F$=C0+}fscX?!OkJ1$ zE^ABk&T0L-(Lr77KsOyZs2h~BD(Iw?96nUcy_dXPa-D0=J)(2eFUYL_~)F_bgA+W1VW;nG&hDVTeVg* zbuE)J*7LSzayK~^SKjpXrB_s%j)^yC`I(g3+{wH4P;73TeCrw|no+wzxMK*J&$N)3 zrb>Ss=G3TiCHq2a>l=I@I*Cj7;MlTv=MwtBIN(<&Y!s*?wS~iwoxuZA`{?o9%VN=; zVbbmJV(+57v+Kz`^rJdPuO?~>T)#+0QyZa@y)utMFT5~s`)jRyn^LY79-jYcsI+0p zBK|Jq*tCZLUV1a0o9C@~ zbaD&gswCD#B7S`4uX30tD#}uRx5=xA_n}@DhZm^sohq6rQFrG>j8OwO!r#EMEOv}W zlv+jW_S#Bx4kZYB<30J7+`@pOTo34)F;o3OE+;8mpY zGd zco=|q8os^M+WU2jSc`E@d?ZE@LGfK-(4e}49TrO^R$9HqJYp|=-5rwbiut2e?0#$( zZ>B?Mf{bk#ykQC1e<*FISVcwbIY( zkFQYQRI;y{5YWua2wQCX?*vV8VfgvUFRdBsJ0evDt{Oz$huVBl=R@y}@o2J3Wi5km z;ztnZZ<bdLY7C@aZs?BcQx-)^lA@`VTJLZaXhw-H9+RJnG`#IdaX$TNNVsN24)j(k` zuFWV+Db<;D2%aE^SceM5|BF4-`j|F4|8f3Au2xI~m6= z-Ckbn_Sz#H|pok;WX4vCRV*TgOD5{1rNc1WzdYCZHK=<3=qT*v_F1n06D!N z{l9(XId#fir2Y2n^xO|{Vs{&S@LH3XTQlfqkaN@fb{qIi9GGE&gaB$=>O}-h`=7## zNJVDRa(d-rgkJ(&VvYF7{#DdWuAs|5B1F!S&&_?OS98J2qKhjaAUGEanM9ORxa3TQ z61s4qm3alc>9gwLi%t$~CzX|H&emvsN#>*}67IGnvxAL5{Ue9Am*fdEQj`l7$nK^tW`9?JS>HA%@H0W=QF2|h*i>5nt$WZr@>L}?mGuAtu10y%2xU~ zO_2dpJlYZ5PRj*>{eDv5lOKo|rMVZCnwE(=8HEHl;fo!Lw&-XjR#>x4k-Ay7@$uPD zj^otIQ0e-p^Zv^M52>?#>BFEqPVqyzhO4U0S)l-zOAuLV)9;Eo%5;KnI@3v)fVq7H z1eQz?$Fm)4shVvEOjsX*yRk=oTZQ{beayJ-U;j-ZS@)H|Y?cQ_;I~^vZ=gEz+)|w7tBWbi=dID(<)+zb|sI>E< zi5iJ(j_l8p%9!j*_e66Nevt(|{)G(66B z9!#Ex!$GS**fRaywd^PO(=A=odc3j$B}{t|Yo{nnQ?+8j4|`l8bbwe`R8a*>n%G zyXksT>HokLqpQ9&tumW=8*$y_-0)su$1+@Jm6vx3;A~w#Jpb)@i5WlsE2*h6>XXE! z@{oRBVl!*gML@crElx`j#ZOf9bzOFmVrNl4KNJ0;U!Nc>cVNV#80i{&wo$nik88%hsZ&AQWX4LUsDk;U7WTB}=YaYf)nzpjC}^CJ?UaAfFx=i826y z{$~vZLki^&(CAR`2fzm1%BQ1Wz#No$LrouaXvw6R$=nswP5$S&Nw~rMhHx{5$nnl8 ztlHvX@I~5?$zXo~*@iO_;RAt0$f64*eL|d2P)<$D6%sB#h3Xjrbv`7)-p`bsk;9C( z-`h^=lERpV8{2Gus)@0{Kze*XYjmwHQgeH}C?n5qcF7?p zxl;sm*6_@MLsxhbI~A}7@$KT9suS)#*nNI0KM#-)^PmdcKvcwdIdnv-o)sBuUGhm7@#q7Kb47Hjk*ZD zu}pXqt)){1AprRCh6crKaqB(I(jb9`vM*UGn?r8~_w)jyYT)emCH|XXxoysjGc(S5 zYC_?F7}8=6Bhn(7YLJLCxEW%YfOE7<yhz!w^SBnjTfR z$sJn(WfAU$?Q}QaUGJVNLsP>bb7)0*doR=R>Y$jXm=zd^63Haxniwj}&7>t#ko>HX zdR1i23iG1{6iKYgW-L2ulJN8+Hyi^qy>_(pA;uxpMqWJ2r zzk@z}N(Bp5D>lsNo}-EfQCqhDfF#P0F#I5x5KGj3b^%HQFd#e_ET>MT1OV`hLX9+A z$yxv)<91`Qr$Gn5TP2xCfjj2MsRBTC3ME4rArpY%jJ!G-ngmM;Yy_iJ9hC62C2 zlZS#D6bg|5gcTJLs-wCBP2d73j`HyVM&vVp7B8i3qBezm&gPrvz8MI@&UePfVj9ZY z&SP=Bcd8G%XWiU)4{J|Z3AZb11^Lz-MANnRl1amoMkVDTOCSuGGZ37p9J$CvS4V6n z1Z4<)Wfb^`nGHflqdmah#!yG$PjN>g=aGTVmDO^hXiVAAifQm&BrfyZRjC>rAmt*L8z4qT zp`^$=V+C``8td1_a)F^p@ItCE4!vd?u15JPvja{72AeLoYVcyJ8$kYRl!D=X2Y|n& zi&8(Jw`rN8ZO$}AtSrD^uJ~|i<*JCG-sct;E$D`|A-^|7sguUzG=%rA)V1Nd;wn4& z{j{IzF1y2*Q(S$Q*U?FTh`Y<5rvf5-dC=eGKkcYelre`!1rtJmiIj`cd9$9BKNe4f ztV?BfMmur#j*v|@h%CEnoNu{-5H*4A-ffY zcZfP8iq#JVwKv=VtBXZd`1BnO8*nd-1g-o(mCaOg)-3!=lVj$*5Xt8plg7u)8xZS z7CCDE%)7U4pV#5e99(BQY1j3;#BaZ< zM^v?$D$N9>8sN`lFSn`5P}GiS(FSoa}+^eJB9~ zH%(`oXA~dWQa8`HRFj$GtgtVGokzsG>T<(u2;8cw;>*9~F4LV&qW8i#s!-2Pb_^e8NW zU9Uq@GPWjOl3140;Bq())+05}I{D#Pg^DjxmvI<5n32uRvB-6amc#5d@!?1U++81k zuDG_mWk$CLMuK~dy!%jX4SiNCSf z)85zUc5XByk=}{w?fmAaK$VXUI{*L{i~rk?$EBImg7L$I;9R;mmH{ZHjX7DIk+w>k4zEn;38{1>HJIyq7Wz$VL-iAwyE-vUTf5RIru0v#1 z0D?P>3n#Ok_oux~i;$Y|7@Txv(lur=Dkt&$4Sy%-&eJTRGulpkf?`-sFyw>R6p19W zm+d)VO~(54?Sr2;znbQZgiA!oWdv4CL|t>WjNxB|En{7JxYcvhIr1T*7bF8H?41(VZGorGSEKew@n>QQnuNE$I{Wi?TR(NWcgWT* zJB6K+Po&DEnH*OKh%SN=i(d^Ki6mloGO{|hRR(F!6i49O_E28k}ajJ zpWPrHo?FlPK12{u|^EX&+WC0q8AmzIh* zNjE*Tjmj0eCun6+oV?!d_fe0hqNN!losq-w?;5{i*ynkRgrAeVAzzg_tj!gqhz$Zs@0f2x>P0Q5c5P9!}!rw2Y zs^j6}>9cpXh*61U38yqSG!@AqGYS*Y(NEHSR`UP=LLuMYqU3M2rSnAbm=aedPY?ja zfFkhxTN#qBA~z_o0m&A#M0v!WPE81^69xy*TL`)13lY-a{#?$xqb+;r;UZVi2~;;t z^8SPs%y<*7N&6>=uStE}-a6?Tk$1bxtg(NdhXstJLPsakNMrL^RIYE0<5 zQQ~v4&U6yzHyt;;>*9pYFbK~SI1P#!n_`(#dv$!xQz+& zftH6`j^s<#aYRRe>R9mp;|!zv2L>7g(m4M!B#rLS)MS#GvZwG zeZAhg*Sj9(_)2lnQz|Yi|9ZT#StW& z1Ls!E%fd*B4UHdftUbNYmL45A4aWrx!kJYKFhXS4eaBVX!$%CxH19(?6j~F$tR?^5pLFO=*QiebfDUaCt1dnp zXTp6FDN(%QpQ@&1P`HwIhrl+Rl%Zft2Vrx8=ez_dNtFpxp1Ap?v!CoF+I31O=WiLF zK**;`TBS~F3#eazeTdTZKl(>S^GB0<@s*Tm>U>ts@?J_anQ5p8=Su$oX9`U_TcecK zw9Kt6)6Bw9N}+`a%b=8VO7so&>c1eG7(XV$L`bWG6->qgIh#OTqo$QYO(wv#JCiZ{ z4Xy}^X4=y-f3A|$CJ-zK3;qLBY!x}8qz?Ax`q-m1frDdQ_cHdLZ(Ug!j4hW6vpXOZ zc)n@(2W3Wm<(s~r4F<;&$RWCwS&|B_pAV9>pvX4j159xY0H20~7v&%ez>Z1Dy+iG_ z+bU_*rGn1otBi`-EN%7ewblb4*6Hf5o&<7Nh4;$-v%i^4&V|W2d#bf$_o7{jCFmGE z=6-K+y-i`r`(@J_VUxS<@#971S=^63_5`Z%-01v8x-59@d(=QDIJ}i z1o8Ig+l#Jn6>du&{SOL1IG+r2iQp;bAJe(44;j87CZ$9a1u#zk9pW?5Bn27wFIm{& z7IOjE1}K4$5{JFwe;CGpDNnQ7r#sQA;Sb&4QqQ&34>wJXwctm+nuL4AFD4W9N@i;B z$64B5R@XS(;a^3Ox&WjVq%w=4%F0vget6Igc`Dw;gIbH6Rt%?_sq??lr$9*-PRzem zTcfsR9AD)Ml<2cTnIyK0y(R_)KHp{B^_11Oj&AUw_0Xtx)o$&yBwT)$sI=$R$p+?5 zom33}d)q8LCi1d1^ZE^?pjAm?K7~}eV<5&eYQ-dg3I)xyJyV||Le4nUWcjp=kqp9p zI&_c1sgxu#I!?lDP#q_0bpZ)xCr=H9hRueuk0Xqhj095KCMN>0DfFBX>pFAer3I0p zvj$Ubo%}fHm7<3dES<#5nSha`ZH2Lszm7kMm02wYZ<^Y(}S}NIT3Y zGk#l)M3V<_D3ST2k`#3gGtZzEH4au=s+-weZbX$OANCJ6(?w1=!*T@FKDYzRIqgj44^>)IN+|T4<%+EYVepj0uaA= zGG=ZWKET%b%Q0#x^^Yopi3BOi=pM3ym*G{O8*CmP1H&lgnqKlJm<14B= zDuMY-E71N$u!H-RaHP7yan%qFhSx_fH$RG~_x;d&1)ed-akIMsCYsx z+jX?L$;Fk{;k6fiM146YR?nzZq*62X##ARIo&l139OT2qun4d@M$BJT3A6|do>6!o zYBok`b#*>B7?RL_=5!qUO zTcldNVRzvnYddYmavdiSvF)=97C+cu22C)iu_Eoz+=GAp{01)e;9mM7loqR(k*flM z%+cHyl+1#H8Mp|L$z>j)9pH)%h!yb4L%yFHCWe-RylU4K(i=*f%*sZofv7!^43n!` zv@p;2NRBVxa-_$-spEps0y0VFpzu>B9d6(ulf?i4n5j)S-jgP!Fp^nOEaV5aMq}Xk zih7-2dVI1J0cXs!2lOY!O)lMv~96!yKc#Z`sgl#@KE82iKhWNZ5#)b+D7-JaxxIwfNC78(u zB_AZab@PDgn5SUf)mX|F;6+e@O@E|266Gzggh_56ge)5e>miFd`XDd*F4Q zg5gHS;eLI4twopFb@8&E>C3#?Y<$@$mayA1OyVdPQqBvsu5jk{lt?@Nu<_=asFtz= zL6-{}t*R-Pg727l$L@%fcpNtF8JrHx{&&~^zg|J0mrC0Izp0S_&4T^^Yr+3NEdTY_ zMKBYB$p(B2cpb?TJ;^8lrE6VB&Qdw#Wnnzl{q~Z*Gl56LlCtoA%^%)r1P5(f%!lFQ zYjhWvEU(h|yE7&xt9BE12@)h@O4 zEWo%pvsLeSEZ?}W<^S4aD6;?2CHsHUI{%x6>i^e5_rF@c4+syvcoTw9f~q*`G|h$d z4J9SS3Ob^WpvlLl`t28$xiQGvO*YxPa)ha4eD;*tW}T}A=xChWrj`pLCA$qw8;uxi zdlVal{>sFuj^rgwN45`j;Lk_J9yAe1v{9PH<4>6uecUT@C3)zC2C=A8lUI@T3P2@7W=skL))W+}MFK|VpZlv;5y9{wGQfTJ%Lp$!T% z#ZRf$nMl{v$W6$tQk%A`7ysRY+qik2B7H}Ipzic4A&Wl zpp`rRn2z#cP7nfORY*&zT*`y*+$6~ORJQf>^ts@6J_tt}B+t$(&~=%Z{M~?lx4iJ2 z+|*odV3wX9Ztx6>IO6<|SIe}?qnITzhcjG3HUH(CTBBf%3Pc3bY1=`-q-f#L*Dnfu z`qrRE`v^CDLuF>qW>mq}f-xa~a2rh$bSz9U@h|m9irkH-uX9Iqu=|(iTfBCi=bDBe z<3KW8bc$T^JEw1K@lQDs(W2nmn>a_$G*IV$(Ni3{ z5`ZUk1c=c0Gsiw$ASrx9p@h30BxXkN8dc)Y6t#m=(kU9wy*xIW-3Y;-3wtrDJ34)# zs1tUmp(WU5Y3@|UfP#vu9ikUfG|eywJC?ofV$0JV{21`1eYno%^Z1Pq$Z@t0%thwk z%VVcCeB8f&{)h<)V57RCQ$r<*6dE#_3;?{R(@q1S*}{$4p4^0M8cjfmMz4RQkh7yi zfJIa%M1OKuV>`9KBc_$jzy5HQDNgejBkjaMM&-ZG7BOfM*DlyOlX?oi%Xo+&#UHRi z`9MypEPZ@`*c}#ER`QGC=IV^p=Sc!av3BvUOxeY}xonZ{0{{@`!)Ygk-Ri#xNJN`JA?gMn~Bi%0O+sSp4ljzb?l@7(tJ<1y?6m1mZJD9669WRoOmJR>3pjh%f2YP#Dh z@`hHJ{T`LXe&)t&Mf`asu7=;2+lw@CTYVofQhH={f^hnQQNSg0uBj?t7?S&9^RM z&a966gHcw;8+{fw!>DfyH*y9IXcx=c&ij|Ky!Mz@c{FE_ zs;1}wWKYrW2#FW*TD1M1ymEdS3U9a+HuIuwX9ZkG5Q{X18nmIfvQ-bN@}kj*Ig#<> zBRM;=fP@ny2ss#Z!_)zT7LzLB8ILS;+jKw#fDyr*4xwQTOM1Od%eWsI&Hyqxhh~ad zuO7shGWnz8VuNB6@q7NQw8D)D)+b9iU_o-vFdv!9f-vt-jZBK%?a)fY2a!)Ru}M=5 zJBv8fldgkVN)Ohk`n>@mkzb9AqJD>tZ(z0H4?o8+pOCqPhMlAQo9kgWrqY%s>_%s` zjqCYF{QPmS@P2_RR4B!%Bb&&UfFd>}L!HdZQ`z}!Xhoax&!bh=)}4Z02%fPigrBKO zMrO@kS`BymF7drrTEIEZw9>+;eiB_owPn}Q#@*|^xCSq~&-d)i&i#mTW3t_i;D$ig zc#tJZ@e+Y@_6Q6C=Xj>8S38CHd8Hpo>QN%tH<_6L%OC&}*c3lVhz*96phgQ7U;n66 zERUx!WBBBtEJ{m81=w@#RSB7g_xzEyqTRqL$al}@FCe6h6<&!{32mF}fP#k{xTrrg zl5UPaTVa>aU8y`s*@rhSbn%DxPn!~!{2&fx`leLpr9*00-!k{toAs{T{Nm*}4W)%s8P(Q9RKXRa?%xXI zczAwFNeBT2Ng>V>6lupl2?0z(8}r1s%?O8;u=w&) zm;WRRdx@#XGQHX`b1_z4lH&_cfSL3?!vb&uRhq@6`@^*A66Dx|4=;-`u#wX>W;|kO zlBEy``{eyD&4ySgAVbz#{n`PHdB%l~ocubPR3M_5Zo4Y}kW%Q2#CTJs)1b#@i)w1) zHMp+J3So-1y~u?dKL;P0%U@ii=6!g&j>|FS{BA()jsurRNYot&VCw&9eg4v%hWZzZ z{2Kso4x}K-)1vz%!jbR)K6x0~%}JQ%r&GpbfsKJPF+cCP3=6=#!~0h&OP9YgqK>E!aIl>WQ%d2IP2$Tql_WF5Piy8vQ&<+`FdrB^F3SOO9 z%%isNB}s7sAO@4*P!ZOQ#5V5=VF6B+hnBvp4+bIAO?!eW$9M7|jVGhB>6Cycj7s6Ltv zc9WMEYTEDv*rHtMXW%9bq(S2l5fObzaUoFpU#e%X zq;9f6(tPwF+T%G&CN>Qqq1e4#!m_|*G6UpZgo&f7WR!%rBNJC2G0%635JzwlZxUG& z1Bwh3gt1kg(ReE?xF1(H;*wN&5gvu|ov>lgP(|L0OKJMNf`+PohQ!K6sR4DGZ(J%) zA+IP^C2U!sL5%ZOAKQe5hNmPe6p71Tia{Cul}-KNEFZW)cxes`4M7RYjnd$9D&QXr zxU2M)L*=J_%=%;DG~K%*ryK_=#*Xk&4}ceUqrkNGmfMI{phlOr5%==3yK|3#5jB^N zKt3g|8cCV~DfsbnE2LqrJ5iBjZFrqB(eU}0C!e?4$}K#iYL6^skPay^Yi+8`>Pn&a z^E+}33jhExu~X2N-w;=Wk^le^C6o@N^9jAp{n4ydENkbB2oCnjM$0juAsc2En8+Bi z+aa@kR@k0M?GwK+E85EzUx$!6BuR9jOEbQuZ+K{1)>?b8sX((+p%$4o*-f`tM+N&l z9EIahX0S@+O(IOsG0T2P5L}p5K59^Nw^~Tfy@utMOpbec{9H~(2J;kdCXfs{gxsUC zC;T=j9J?m62%s`^(6^?e62j0 zw&N@`kv+q)N&)N^Arctalt3(8!l4rneq3H(8mR+mJ(epn^dUaXRlLtnToyO@$V7kB zVC=RP+%UbLFAGSuKld)PG|U;5!5a^4W`Q6^1vCeMpo9jbkdh!&f$IVn4Ouu@0g6^- ztdjjI)e*%tG3%tgVEz7+Prq5Q{U&vxr*jZS!Bx29(h{AK~AFN1wn>Mn{4xC zpY>m#IVn2gc>^Rc-Q6;W!P(Dwr~6@JOydCBZ?VDsfBy)!#L!V&&;E>abnxAhSgwR% zf1Do9WVpT)3-4v|ksqZ5_VY~0&B`0C!Tr{Vo#;nT1{X3WkrY6$%e+?xD$seb>eOpB zy7i{Tw#I5lm-6smOV}JV9#0u7GyRZ6kW^A`)MimP;8}(w`DsfzB>XSAl3R8b4k{0< zhE5ttYtTjr^(LC}qre;GNH2IzL{7%5q!{jHdA62j$l7#(T%wN!5IUlqnafhgos2=x zCf`GCEBdQbFh$^A0U;}+Q|W9B?j@TVjJfK=4<%zMzm4}MSMfWfpna4gOcXRI930*5 zQkqsHyHG}T;o07n3x5tT}9C?<7sQK(6LU7CQwKPsT;t z(-aNktyM}fYoyqLy=KEKBm$+Zva9N(D(F!1odFvrs)~$7EqL~OKUbKaG;6Mk$v0#I zs9aJnC=EzhOVyl@$Z7g1r5z3el<#NLJw%VS(qUQl4!ExmTdhh#A@2q?VBuVuBSlKeOb;i zy!7pyRby4#6Q8^;)Hyhz7TzB-J>jdo5~-N&j!Jqg36bZC(tFkvX8naYqMU8C=Yzj1 zGy0n0nl+^R2ByQAmvdzPigg52vjkULPUp|#2Ri+Y^rXVvO%Y8{5>ic|#q5IR-39Jo zrm{5{YmQH8JgXrj$#S)Iy<$tgpS0|&9^mUeNP4Z%H|GcqCQiV6{|er}9lO?w;C;Z= zP(uifDWjg?1}$a+1QKTGZB>rv15N9!BK9h3&UB*fsA?7FphAUkM%=HAkXfTC&Z3IG zuLD=P$f8CHnoxqoMh6|S{_ci~l@hRYziClU$sHT%1tgK_`_I_)5?)2^V68cat4`JN zYk+W6(NEj4=;-E2=tuqJgqJ zVbx{#c=tz)Dm(Gzn2HhJn(Na7A?4xuG~I`m6J2n6?jCCjo!5e35OhDY{JysYLMUVa zj@b-^YoRD{PIZ_eU{x%Y6{7>}bJKP^%~yVcm^b;;PU{S>iGsj5hg|8^1RSeXleOZ3ugs8&paSdFpKSudSRA^cJ%c$eQtadG2rnb9-kJ65zq{#7dZ1GH%H*o)kw3LHlpv+hF>yG( z*<$_KC<`}-zOf-o<~mzO-hCqRc`|uX6+toCHFXOmlm^;}RBIfF%by;r82|cqk>6Melh!kf?+JDNQguGe%XFf~dCV zZYGydtBG>~W(aefvqW_T2nAtruiJ|PYyd&Lk5bn@5-RrA4_67N1-PHiY%(^Tk)J=i zpv8S7CyP#q_O32#Q~)F9oEn{1SaW zTdfRj`IQPG>>`Z^fR1?dDM9Jk5Evl?P|s(jqH7{*wBt#U!GHoushx7G<$9U`C>%=s z!?Mnk_EvdO5OG$G3Ir|Tm;|et0%^r64V{?YuVr|MOe^Mnmw0Aty#QP3oWs#gB>OV; z6>Fs7>U6`W%H_Qtmxn4OLH5aLSf* zSVPBQUU1eBel)1@BfruuP4qd(I$#K8&Kf@JG-zRFI<;S1=+Tu4-Y~bkgi~lDHOg_6 zFWHze$yk3=ybjmF-`2z3Rkmo$i`z;Lk~?5gQGJUG(@M-9IR4J^D>bE-&;mOpQjcym ze0Pfx-t}KDR{j|e^|Ry2Iwj9txHRk6OYjXN}a3ND$@b53&FggmIq&`G)RZcQGMNgNEW3JtWObN~haun`77{gs(vmZ4 z=H>F^vT#IyJ_;Dbt<(r4rrjWfymk?i_$YpVzXL!W=EcpZM@mA8!4Yl2s6mWc5cJSf z@p|~-+9#zYg?8|VeOAq|(by66%;uN96-jY|=?&dQ4xL=*B9Lj{c}52qZzGZhGQrJ6 zO{wsmFi$Qa-biI$b{H&}b^9f_<_T%%d>`Szj|6^O`J%UGfTVrjgc}^NQ>E%oehHkh3@60`SxN}zktWdR$_|PeE z7~~l->`;<0WHxh}<*(NDs8@XH;TP60oz=@yFaEkR%UU zag!=Kc_Q%6yWF(0X1qeLBW%0FK9fGnNJFq2vb9f2gw?=vcfpjsPGp8R0Sra(m$D5# z+f`Z%a1xqrksxq*bY@)UD4MWpk&ED-pF^}o)ff^2e5*#4JP{Lic0}+OrU=bUn|RZ8juvu z3LN#1VnQL~V89cEiTSOoHC>TTttdKvqPtlUMB`*uwOsA;^7*IK-21 zg{S(35JFcPa}is(6!O=ET6V06_PDjaA`h@EOUF+Hf>y!@bF~5@Q???pMea(V!EpE%>s5GulO&@=6HZ2c>VtSrI&e-wz#4m#A7b`rms(RR7=4C&5MP-~9%H&(?;A zxsrua(Qc!nZ)@Q@H=UokwZbj^y~iFGOA5n^rOBgBs<>{%s;@U-!ff=W;ft}`^@i6< z=qrvz@_I4pe>i2AU|X~uc|F(1V0U86VMUR>$2n|4aI!OYGgO(t$^KsbvZXe|BHDfV(*&LjRRMU zh&6=~)VWt2QrD%bQ9Q9GKFCE@f-4j(X2QmcUhqQ^0+0ivu6pn_-M8NKj7cgZgp39U zq7QW$2oux2Z&G%=$I%x35{6c|giXCpQyQ@03=?UjXeQLxx)9w4?ic-$37fa$Jh29A z?g^7v#$za7u;z-V3+lagM`P{mQ=)cQ-i#}bNxkfBPDK3_?d0Odug&4sc0o!`g{ z+c2=Ug(4x52FF`@Q7u%tr_LD60GTa+lYk22SEpHxO2%P}=oJvMtMRG@Ji+D#0r=^c z0t^*;3*keU&Tu-J;qtABaZZvpMYizkvu>y17H>;D$V3a~!6O!fRw)`GE)|Av8!APq z1?$Lh%rsO9UE((9S|YrGt+h3>=lK2LCD1Fi2oOgF)Vf)?SGEndu+Mt0OIkYa@OVPV zP*ljpn{ZO6fOx1tP6{!4hl_02$L=M&|FvuuqC>Gi1LDsw60Jc8@3vUV&K0>xI082a z5hBxPx3fUt$S3*Y$=#=AKEiO9BawTA-~S8c_xAv#%RGd86uO8A7lcUDT`_Gz)qYml(+1Q;sbKvMnq4J!^j{Kz}PgCyW zOCMp5iI80WvG~&lgsl9e#~*sG{0iW-e7GodPAJJ1P>Q7+&o zQ#qTW_k}TLpovlywJilDgcgRDGOCP~ovaU;W@S$j{QTvA_qNd}VWUFv3V3MHx*G8y zm%-%QlIq?SVEOOi2m|k*`ZMz*&A6b;IpVVFVWbS%gR28Z;d3TMtN>ihY?~6J4?6>VwTX+!C(knz(&~@PiQrlSnYtuxbGYu znW+M8k3C!zQ+$yp(e6F7M{w(sO1+vrn5GJfr8i<)7NQUh5^g0AcI9oT(@2c{CAcw2 znCB`=|JuUhM}vMUkt;K&c-GXU!BVz4W< zgUtXdL>S`oomq#xFy#_5Dls*?@{%R7CN?g3s?_}v3HV1!QhOSe77<}eB4tM}<$}N% zzyuaBf_5Y=rh>Ix-;PXnw9s%|ouF>DqjGKB1_SA?*Q{n;)7zXH5oo~W?u;N!AWHOl z-V(ezRu!&{)$5*(J#QZ6$fMR5r5R8>tW3b7ZA*2MAw}EZBeEt7LN1}<0U&iC!-Evf z@=IEh#cyw$YOWe;eHG7v9*lBY5i2Jj`R{N3_>dq4u5B4~U*k70G7e|xxgc^{M-A^| z`EIFQ5=@oF-j;iG-<7$BpA&cqa>kSGy_Rz1rHzt)p@Hz3 z26rxkilLB068CO{WjV3I0Xks!C3*M#4UVvH{7%dPAv7$m~37RYz|L)L!g;FtrrplqQwLZ~bRs9(yh6fU^87dZ+SFd*J zs4~J13G@r&{%O7&^c;NCB)<_I#>nCcM6_QE1(H@;19|^zoL_=03TBd`Cnrua6-kOs zULj9|2Axj50ievV7>EKzoG3}1z-5H46V*a1jin7cuO=~nM+j;i_Se+V#yc-PWc;Sq zPCpgI$g?_Kfun$ z)Ev`k{Hojxpi=&AU-MX*#2RRUh;VQ4P~g;5(?J!W9V7x;#DYLV1wPIr0bo?^0Z59O zx#Rc2a*gphK#1xfUE0im$>O~tU;MoEg3)Ed7CJS(`xiEX>=cv2L1=n2uGq?=I=lw- zMwX`-b)k-pV6QzO%((I4-_686rbqLd>EYOguGA|M`5ne>?#Dnp| zgSS%Mp@h;#HY*FdnO5H(kpjg154f-hs9BP*iI7r98Q6rLoiLx15CnE^&++Gbx($Ik zO=0A$?13!cgS+`4t^6L)YfN(?D>97%f|e%QmwuG0f6ONadR=1jQz?py@fX_+{UK!`;K|ygTKno z7Q;<(DRvxX+G5@@k|j6obM4~b-_5pI%y9JRue}gj_oRnHTrO`DZ_EovlMtosyBqpN z&$%ehYye^|+>{F^&$4Pi89S4^tP$c<>LIUJfTqK)m|N$LAmRr&f^<9UAx%mpXVm%0EM^Z?!fk`?n9;3gH%!Y{$7t zrpWrl2()&M&=47DB)7Cg`7w5QvdKU zQ^qe6IN8?t($#i>RTMdZ7TvVqck+MbBoph_dlTJKhB@VVtnx}9#(6xWPd-cYNcVW5(&26`Qj89dXXo4KL4 zCOuPR+O~~fX=^i1Pi~e{S3}-Q|5~I*$m3<#_>j}Q&Uj7g0$YgyB!igpB<8v#bX7}` zO5y~;Pm+n6VFX`{HT-ufG14(COPG-d(5t1i#WU3?{(6%G8C8iveQD(mYPfq86hWj;@4^ zehNU?OstFX__z1CFq}}j(h$ZSprf@bpzVL6C9q}HAWPB%7iNDptovXb$d^@F zu7d6idbg?OLDwKf7qVNMc&wn8I>IM{!OBtQB!GnZ45UU4hSFdbCe!4@O;ug3+LUtS z7JDWx#J~r;QM2E_;8Hk-%A6OC^`>s6gD?bo?TQq>?*7B0R2nI&x-R_6iD?%$K;ZSt zguoyB5{W#VML>8u$ipJY|45Wmb*Cp2`^9Lo1>AaNN&pP|BB~j52_&R} zTk_xd>9Qm?@^vc0600iwHQF^~H7YKUWD`4L9*y{NEY4|v6q!a_Q{^(~nR=+Na-mZB z&49xRV2e-0?~uztf-lKyQ$K#rRzYcNo*#(ireU5Ij|~d zDEr3#<<34xudLGMB9*%BtWBh{fhVhMnV+`L>c*{AToaF-W?d<_&(+jA{(fAEnkSv9 zFaFydl^t1)7DpXKDbmXMsnMoGT!QTfeOg5Z>AsDw4=NEU4=6>pVx}$eE#=eJ_GOq( zyEdtAaj-0LJ z;+y+)pXS~?kJA6kO)`9fcX!P7K+a=PA=?95I||BTPvS5>xw0#_f%}5-m(ZnOnyf@J zTEb0HPDBi;8X_VP@<m3OQ8URFwX`z$a4JHlZM^Pk=JL_Gc180N~W4}%; zNgS%bT^oF!HqH_<^x#DqxPKjAE~YZv+4?cA5DAOb(b>pcoYq;*rkhMR>Xs4_|JwQ` z^Hv}y^8#eF85qQnirN_b?WA`R$5uv9lQ}hWfo6#vRZ=K4vdSLf$z)Ec10TX6p>5)S zoI$NH3FF3Ib~qa-pb==A@4#c;q=!F%tfE?y6W6ZfvbH?MsU0@7NKI!+iIS2IOvntfU5n!k zRxwMk{Cc{~8~{+1q`EO-OCSNTLDwFTLBN0@5Z?kC5SS~PlB+rJWKG5)0em^#TviNa z6OJr`U(Cai5I@TE_5Vq8s2xo~Pl-Vb4>G8!V<`_fMoUe=rB;HwJ9v9x(poxw?uR7Z zf?uo>tLntn4Gy8+k7KxIbB0Jcrg5!j{ps>kuA;wK+-esLd5Bau94BUW*Lc+6V#3SD ziS~rjSfA5u+d}mg6VuJ`@E!@@FHGFO>{0+rzKANTP;m1T2hET+TKIXz_gU0 z^fZ;xq#Hfsfg)!o0fZpsPgCiOj*~DG20<>G^>ta95SH0S*Qbc^v*JQ+y0K8f4i2bW z;rvNIBnF!@$9tzryC=dvt*v%xX8#*OY6WVTwdChj?ke8+hiQq_m(|Q)9Wt3*n{9Wk z&0+#|nH%&on8oP&`@1bPVrnIbNIJ++;U>^aEE*N)Q$fml*;YP!ua8Gy9cKXZK z)bGkFa_p&8i&mz|4G2}~Q|@2GJ29-8W5G(8lnfkPGO~XHqD4mSoI{l>r!=aF>65i& z%c@AC|1Rp=*GI_n*}Qv69N#Xh`ALr3vX%5wDeZKKp0%Gn<@)Y=hJCPnS`NL$K0nTn z6_Kt_ayp+ner3y$qeonB;Wh2l_O6;P!&KkCD+@|{XpYU-@`RY>8gMKG(CWYQ+0{1D zaxQpC$p(sSq+v_@%)S)!7HQY&NK{yoFsaGLiJZt#ESq31?_escP&}24{E>GwJESMS z!$@6PTF&c}w|LZog&-h_r4@w%gzE@o+5uvywZ$h!7$xxmA}1oWe7BecYNGrqc2;Ej zkQ8R^S_>tr)=19<-$zrWNai_O_xpc zg6bj=9|A1#5H8_Lo(a5Z0#&we+)s|KPdF#ty@tPM>)=?^Ivw2CA<(|mLcoAmTbm1% zpMO*80+$v%vatSc9mj|%DQrqam`8y4+v{RLbQF{vp5RX6sDN0tO<7qAbCT0A$scI! zSK5Z(Uplw!8Kix|>}0rI%N)`b|3wRwdpl%MuUXU;s*$gh(xp3B(ynWDO=*z19|l?sxh z0=et0e?`U3UuA^xC}6oW2i(N|{kFOi2_h6$DK0t}myITQeN0OiEJAKV8rpY=3 zMo5KTL+}>-K&wL=%*D(06#26erqn^-en7;%wIZyvYsnd!d8CW7STzuO7o5;g&5aL=DO&SpaXK`Q|ECVut zxZn&V{dUU&QS>qxAO-QCFACuP1hkpyIm3dL4`4>;q~~`SSt2Ol#7!^QL^!PH*bnE* zH!?0hRchg`!97bSi;dw|5Th+iARGqX|f*edqfZX=*Hg&S=JV^ELN z?L%7J_n*iGp9yy}DZH$DYoB`PQ#`zTI}{(=qK2F1>EGoJd*~SG1kJacp|xOh48Cr_ zf?!aDmx7=JB}#A+7YKzg8#>|lq>j)Ll2#6(eSGU*-SLi`|Co0jkQ51;D^f-!%0hwb z6`AB+U2w`}&IRq^T4}z7?Q$ZI{u;0lOnYSkOrq_y+OD+oaGE9^9@)hk+om3Vgx|YY zm=~)?|G@ePuou9b@2V}VcyWi)vF|ggLEyv=MMnHfxrHyK0}4MfH!clC`VT_Yc2I`t zQd6&*W@IUb$V#pk21$j|_Lam5Ny<@`DWRo+55@k9fbww{2-8{fmzZjwtYMZFKl)I0 zIc=1VF2*YjW~(5z634`wiPZ2OWpH9BlvO*X0KK-r$1Du~3AG0my!CWycVoeH5#*H` zrTjxpl}tf*{iJZN)pQ&^!#M><-3QKqQrH19{P&k-NH1XZu|fO(F&Z!0%a+O=Pn%!H z)SD6@(fvJZg1VH!Fw{J58+yfy~Sy<=XUg)5f}x$6K>{rug+m0FgUVwN|28)UOJkE_+OWx;>GWGvRpP# zYyfefRSkt}V3 z&`xpW&ZL(yr|miGdK<;!vj0_9&%je7qso=(%=8L};3GX&^uMjJ zUa1Ujz@RRJIS%87&|E0}NQ#EI9!oA>{f9&2}l9wwN3(dn{PQOjL7EbD=0rRqZv+j>!NgF zn7q`qs#U&4;m+g6fD|YjQF#C2V^Dj(E_hNq?btu6iOCz4H8arm0}^>&Wm25cEllt( zo0)yH{V*4~*bv`8Wb@iAue2OI%%c@SX8JN z>+t#;k!ZF5X*-OMvKP;4dkzww7SRrP&@=EQQ{!>fFW%g(A43Xcig*b*&2c82K3g`E zE2r-FWzvuRZtZ=PxJ`jkNyzF)ExlbN*<~C<5)mn!&GE0*CJA0DHvd~HOJ)};K-zg` zg_KzVlY&mn6Z>gHTP}wtDmZ2x9FbYuw5kc{v29;@@;iu_18EOn`KF&=c^;AesnvRe z(Qk1)iTABzRN$wl7MCPJSdz=QUt0}LXQ$rkJAPQHd%?peLh=$!h;8a~(Oh<9U8DZBu;Q7*UQ z`L0E#hqrlHwy8^dQ=82t0bzXjzUQ^HK{5w$x>+c_ZRT?={w`ly;|;|nWduZxHRa5WsFTK8}w~R!cJ?M|5V=X zh-@_oq_cEHT-H$#hS#lb->qkF#?8TRW#uf2Y@P#iGHMoP(jKYSCwp?Vc=Q`^i=aDOH~iIK-STg=M05 z?_{>*Q%RUb9!(dj)|n&L)2-=>qbOx_dT2IC2>Wi6mOoW_YuzWDLOR zUxJHNiXw=OjB|GC6uggkTd=)MZ}paoeuZha#Vl0u7w}-0Rcls>7uQ$|G<1JZxCnO; zRSu%q!jb?@!ZziIRG*=?Cj{Fp4TBN!C|?V3+38k3hL2FzvE%Pq6a~_IMVZQ?b3L?1pNqJBX1$_RH677Fc0!w#jzquPLjyWGC32QWsBe>Mq2 z#y4@@VN=golM!NUGY!n25adPOc(6GM7%A#EO5vmSw_!K`!CX|oU-<(2uvq`Yt zl(9y64r)M-G?3vy@Jz5NASv}ExM3tnMQRKO#=EAwP9U)Ixv3WEd&oL#%`LXwYJi@* zig%})&c`p_Smpc0;Jr$~P=p|+BZ7e?Tm!=Q=@^M+bjmGQ&x$>{48k@N!KvSN$4A*k zEsx^)@uYo4AJ<R5gOdO zul(=t;8-v^86Vq^tvGJm#s#!xxoswAVy-Rvh57Faa)hu2+lK5Ly0D@~^I9=Ad}lC* z^ld(R8>c1@fTARasUL-67}v`99uHOs+Lnc)|5bb6FUiO;{Z;PBykNn;#j^Cm)1j7f& z1)2fw!6RIE!?#PSnn>nHt*eKiFB)L|Wn3>PH4Df(>oj-~iGg)=swF|Uu)kz|Y0*=x z2VuR=XkfM*8noF?T0I`}khK3QANG4DKckhZXW2|Q zhYh&!j4>5zm*E|8w^{o0bj2w;-oFFOdL7?GJG_UnGTs=ouv_^Xn{JX7FBRNK;1`z0 zkMOY-Aab!bt`k>=*~I3eo`|r9&jGB!V9hXr6*^WhF^3ZMtKnS+|+!-xi zdx(QJ{zFhc8qF zoaI))SCLSbOcTK{*;TIg%GJ=Lk6=qWa^4VK&9&jPqGc@%=c#BemO*R~Xo z6y$5f{l+9Y={#=N-1;fTYu&n@ln+$aRgcC?x*;1YCf&%t;6k;EV6tJIBwFIdsIv*E zOlRV|iTiteiHDtRc&}1~k*xwL0A|pCQx=GWKm%p>5b`xP%IOT?dG;*P^S;h90%vOFQ0X-vU=t`HsM^_Re6ROu z*;A!xP1ATzOM7jXKg&0yI|DwvkIa$L>mT?tIxgK`=fBdToOe2c%fE5lykgSC*dZA1eIw3QFVcg8+r#IiV)uuQkiUMYORSEn#>C@!JOAs| zVJ0PN>Oc*Ny%aX$Ljv<1hq}77aj6(}lTscE+V%M27l*liEi?74Y|G)9_?J$Eymn%D zddl1N?E@di)$%K9DwHbyN)w-2v*87`SlT+<+>PMT8lSYg0kG0us<~WpmxLU5$}ULM z&6#qNEnGhB1B5;ZWEhkMjUf6(cPBnB7_=PQsq?`lAqZHwp&4L;fUX{fy*f=8hp1=r zmf}D7`D%$O5c3GRj{xenp15)52fF35D!ZU6HB$bl4O@J-P=++X5omri4ke;rB(=|!^(8~#9evb2mAeu@1 z;}h!xCh>E4kfN4Ot-(OM)_htLIj0}5EyJ?6;_g8<-bw|#ai^$_@@!T(^5MVq!|+!^ z@UY#icq+Ian!i1}TubDgDHXkkR@NR*TCS&I^i5e@wNANLCnG)f{wm^bATT6;yf~Ki z$EcZ+&7yTe2hh3hHvBy~|8e2jDRJTwiCXt^7a>)v5&FKMR60|Oc{E~_PB{%pWKDE^ zI*z7ftNz4Cc%Zs4^|dWxKaWd%J9xe(i@- zDX0OT=_fh0q$lJAe_jSt8vV(9YL`V_ue9>UcJP?Cc1?=gDh{UJ5AMw^ySI=2b;nWg zBuAdw-Q=&`t)}L&40?B`rIoeL2T{Ce>OaNWrXV@ed{PyEEA7*RIVu;Sc6^QSE zJ`o_30$fvXHm$z2#-*Y?OD4R~AXZH<{Sr1Ucc!pTeJVt`j{3j94>@@&p~N^8bG!wI z>yNy$mX-Obhe=l`usjFmgN6z#Hj@5n`df@s=Rqh%R|eroS1PE46c?$HGN6foGS;jq z8BD?o5P9eQblgHH+>@nlRKr&@8fVWvi>JA&6Vg`H45=S5I>7eM>POG7Z;j)Y)LQl_ zToK3-r^c{q3J%oyY;&~cH-z_$!0aL#O2lyVkSL9^vnn?!H-i`d*zx}^lR)`;sf^iU zd#7IV&(Kjv%J-Wg9uY*Q%}hiNgbu>x;O{mKTp@#Dh!C2)D${ctYc|eTdJ%4zkKO*1 zp;IpU(ZkDidOmIA@JL(zJG8X^lCK>tR+@*b5ajl$bgn%LV!rPJ0UP-#Jo+#*Rw-5n*o0$GpKgSwsSrya|(@#He#@+$QiiGKyyQ#D?P@u+Fh85 zHd9(agb`4;CH46&p-sA#L}4i#s!R!YJ1A<|EQ6_qbSe^`eMuaC-+TR?kVq=_1i_=G z>RQSmj)Mz0vOpTLM1j6GyF&in6E$E79U|lIVAaZ_TS4eQuNXYZZZuR8OSa*`G6GF7 z$${B_sk}zUPI0x1Q(_=g@bXs3JU+~_)ig4UDCgN#mq(Kh)C6PywdAZB&+cyaht-vn zy=qIxB3k`&289g-9?HmGzdwEypR{8Y$r7;(;WxRX067~8b9>DObD8gtM;(nZH^@#n z7atF2Oli7U2#}Hi?JHCExf4==JXVtzSO<1kSiihFJT;?fVM=`sRfmNSzt}jtD=}G= z?1Auy0X^XzL(pojhD;C+#gLb~;~U|io3~=9Do2>kd((*gun3J0qsR4dONYFZBhwpn zUrLEzc!~<*g!-m60;Vf6GvamcUP&IW=^I=TZ8CvfiO?U6{=POZdFM+h1Q{UgcMT;o zmO#4(6-NA-|DAR^c8&3MO`7iS>jw}7K41ie6QWNulBpZNo9_k3G45KLJsxthEXkMQ z^?Jl#ecj!C=k+lAFb_dS$Q9zn4oMt#Ja=4W<&9pFkHxw)A;BjSoz@v3rKMmm2KA-6 z6&+sp$BSmDkQ#lRs!KjzDx-#2r$Ks|ZZNU3wyir85}~Ya2MrwCEWQ~E2+1-Sb?4;q z8l+%p{u1_f?h88SfVs8icWy%8HF|R+e-uU-!VB`*W;wxp53dkqG8(O1(fKO^57m`N zrR4X!rMH4R8#Y@LMGYA#jRACF_7boagyw z=+_2Kb}GYG<{NiG!n3?IE~eI{1iD9I(WHyH7i5E|sp-_TIBs{+Ky#AnmL!hV6RK*I z_p^SC{$w^rmyhP`r6P^kp7*Bla1FWX6X!!ZYZ|9C?fxefsTA91|0jMkz_468<&7d< zsOs%kBKOV;sI|>~nYsU4HA(Ifp<7McnQGbr{u9qExT3(9fTE6Gt?UWrfnGk0JB!L( zK*%IQn^J^CuG>({u zr>3OXeFr(?vs*AEvO-8)_4&C+tC~^DMwL8BRnb`AR6yvujXv7sK=w zgm<~AvaAT#1)I-`tDNWRuD$$-ymgZQ_%d`izi4wzVNbfq;$9SP!2^>LtQf7? zmF)Ydg~DFpq=kIz+%#s_^S`*AGzC>(=2H1R5|b$ zkUDXdzN|?7FSt(<$PbNTqhk`g=%2)f*cV>(%Mjhkwwd+DxnM{Ivb5uI5uy?~dRxp0 z!nP7iMuMSxRl?Dm9?z8y@6P-+NE5rcu+v-)w9vlUWo%6W0$|zxI)O*R%1+M&q?s^Z zW}j}o6>LIQbtKF%4=V2WLOdtKjf&?@OS8>ZlX}@=l3JyIMqu+gZS_S8CRj{dadtZa(h z5!0r4LQ5(_M{DDPfH9js^bds`ekCUFRgy0X!O2Fq!BIh!SD zFW}u;A&E5n6cV#kbg&fKD#tf^M3N71ne?iIMhZOXo%|w$82bjix%iZy&Fi`hocG!CQ zCk|vk{}U&$x-B8CT@YD5@{dw|LxR{Lvyl8$Bfd>}kt%*GL^UZRuJF&R=pfhnJm-p( z1m2~#csL@IDz`9#>{FH3AC$DaG(?>-%feWW=4D1(D-IUxONIX)fPf!E5Tak|S`GHM3Kg=w#D&Ht zlGvdLS3}jZ7o+_&64r~>mZWZ3E4b;qcoIIeIHZ_@!QsF_Ybvso1j-nzaN+;S;jchD zLTn!OSI_)B4=bp6YFc^QPHwxaE!ip1yMB_EZ7XcxZxKgOWhR`PA2DdAEk z1PhWlNgPrJ@SK2ET%XB_!KqzbihW5O=$kCQR+*57diG&V#{eJ9DOb!A5`2{gRdl!Y zUT(2Ud|UGi&QBY+uDSR#>SrZVlMyj-THZ}5<}jmpT|;W^7(H6V6xyCMt{sIY`+x_Y z@z|Mwd=D!dfo}Q@+2kSZm3T#_M2yoyZtymtrw;EztxDZh!10uKkljBkGFF6)V{FM z_7@n+t?Ht*U)fei0mQw1DE~peq+AIyv}aFr|JqL%By(PzCXhS%JD!;RHwg)IUug?s zz1TcIIpXhwM0PB!2dNtE83qF`@Jl_c07q1R@O)5Aj%$otj&wy455jvbuI6SzD`Yk` zh|zUvvzS*OWg{VFV~4R)-wtI;A$EY?6T-km1-574H57R`rNv*&Ssl*e(bYNTmjqsp zD+R?lFFihsU(FCMOu`PY~f^JVYh_MXn7%K0t$O4aO zdPk_R$s-#kv*e1lxa&t>21&)|C4TL7s&46YHw8bqTp*>60nzCb)EPOBxR3+T?;Kl8 z$r^b)Zs2Tt*XG~!8Qnx&MdObSrf_r2PJeM2agaAjl*02t3DaYT;})a8J#E6n4sWf0FC#wzOaWq;IT4xA41 z`6w(X>DZ{kRg7t^oN<4D^zH1Z4c>|Inzm?U+lJxj^X3j?JNRCe)>Llwq#ib{q(&iB z<1tDL<*7hUmW^p4ery`i^lf~K z+C#Z#MC-x@?%GU2T~=ilJ&GXTjFmso9k!dNGq}d{iuzwB)X7aR!h6cXuvf=P+bZct zVEDLyVg$$CYwFrIw)+8|MA!OInX5yqT<-oY--PjDASMfw;gdby3%%n>2JWG|hQyz( z!PD#lUd?xiIkeVUtsOLr*Ftvkf!I=b`oS#@zhd`9>dcuNCF^5Wc;#Gbmff@pI1)tQ zWGQr5yks%%qusCO#-jEC zPVz_WrAJ35We|n6Yo1~C3B+&(hHQaP#?ALko7jHFm#2w-v==t6(h(Dz!V1d3?2z@- zdN4$yk?@Q(+-gN+pc#3_VqbkHXPe^=vj2J%vUpD=qnUjmAuhCUN_%$!?Yqkjd&(8G zEu-N=CZoJ;*tz7>EmiRfujf#z=wI6BV=`);+x40R4$)?|#XT*y$}x50YEN}-cC^R^ zapaQ&gbIt;*y`tKevgG9H9Pv;@rwRWdroQE79|v-i0_THw51mZd52eF+enJM!F5x& z@Jy^wM=*Zei*p#-dAfV&bw{whs@m}~PhZAQ0SwC&p2mC;>5%fAt5iKb-4W>bCr)3_FZ2%Xoy!60I)Q{lR}dtsLn z#h<)CuE&#Bw>(p1p=uyVNAv^dYPY!}9A`c=Ao9|MV{O05K2n4ldkwFrG#!PbQO`*8 zRP+6`zi{-`S_E;GZ%g!~EmlxjsOp3M30V?%8zA95iF#t`nG5ePmu7Ni_oKmNH`W*y z$DAvIoUph2QIpuvrq%51E4b-l zzr{}AMOA(jD^1%Kd~+SxxGrio^; z&|bl+p+tVkL6b#Uz9Z@}?^NU8M5%q4z zvUeM@6__ST5e1KS%nZD%v$>JAhb)01zcp8Q>Amls-$MW91%BB`X@-*5wekQubj=Z( zIOO3b0tBg?HO(gm0=CY8jn%x*QT?LQL|40a#{qA|_IW^<&Mfsvn{*6{DlgF5M z%&73FFnc(1&mYwhWBjOH9d|jJjudl)?QrzW6OLI(Oz;Je3|uE9apUtTJ!LOx7>tCT z=d`wUCIV}Hj~*X+A0SQE+LFUhwrv*zNm9dlFzt{!wYAWLI~$kGJj83*rVw~(Gl9>^ z=xslEj9vN^U>?hpyoSbitwre2#%Hlmf1TcSJ_3Ot>p4U9HV_D5oLwk*b?0pDP8K_5 zGbO|5i0kMCRCyEWa3Ol&^Q>*(;EUwoohN_PmnJuWCK0wUS-2*{*XCu07!aau&W~?y zw?fmlpew&_@_M1&|4nVG>ZtP72~Y~NE`)ev0A~{CFkn(_?5P}Xu*vQCtN+I^3W9b1 z<40V?+#>}kd-nCLND zvrv|vp#OVM(mmS^^1zEX()3OqIey=8SFIwr$(C zZQGuEY}-0xYv+A-_f2*;oAkFUopk=G?o?G*UBA>+SvjA(3!k$sm}x&)k;}=shJz%; zS=0%4TXoBxC)OMY{q;RAypG&;-|yGCY4b4vi=v1q`3o> z7!&g_R*8n~%Qn**kaR_YV<4{ztzCvzaXVjg6cK1x1And~!y!HRpE|O4#>ok*Z*H)iN}Kanbp1@548a3A_9J=DmzgHpZnWkOyvJ*)T5oJ(*On6+3s;}|$tkOpsO@xw1OCa@V4vpw^~E=R?ONsK zIyM5R(z9)Ve*&bJS#Avn<6bLI^k;PoA!#x>cIRfWi zjPHdbr^R9Qc8%15oQ@4}#G3SaRJP0CGEG{1)hK(iAEc10l2vR#yLK-%iz~xP(eby# zL69lhQSSE(Poglz`YY_SvItP6(aY$(7#Zn(L49HD3v(kz63PiR%H6Z4ByT+!u2}@7 z=GX5z6lcc*8L@QXjV}$;u&`{B;d*mb_f&IsdDP$5I#)@N!wA1|^BaY^`3R($volTi zS?wI^Fzoa<`IF}1?pc`M$#L$c_4T(;+lojAgy(rgeMT;Vd1^FjmkQ2VfjSiS9wD)W zpO-8-r5NFm1+#e+DRjzSbU4i!f$RE;y+24`%2F+EN-_eOyvxgij(hAdqOG;fYtulpGd*KH;iq z?>d{l*t3Zj0J4tkY%mz%t7hL310|eLMoQ~s8c>4lH6D4a&&21j%>4X|{PVe5oIkWwHWw(?3cihGv9Vt5i>8GSWYzFdj48DY|xW{2jWYiqZwBY?j3-b_%g@ zKDoRgQ)f=`a%vRig`jEO;tYL&Vvip+g#lL!(@myN4+1B)G0Kn?R0K$vf;+njN!~EJ zMpMxz3U|+CSq5B#L&_}cz-BtUkF)$$GOeyCG$uN*p|IUgf3);yF3{f}fZ^^gN&`qa z?B>d$l|t}>(Bv+=B~ds55CN&a$e(q5wJdMJ*NX5-H&w^bU4n2mMlyFfJ;Q%euU0(l z7>kurIya!uM9fog;6so}v?X|MqeO=i4y(5H2BfckaYXew-}B-)Y|$(y5P(*8JGf1P zS#}98Lyt7dUKvhWLGIw%;#E`wrL2ahOK~LC>Q--nO2&I)RtMhWTMZ)6e)P&`n#kh+ z20$h^|BDm;jP*h!l+7CZE{3gXPI zvCLn~5S@hqSFy<>awF=vTc}hHgj!D#tc%?fD2F+Hv8#(Js>)u}WKT2=0p(8Etqp#s zAeN8)fd)V+ppXsK2flEkYQ#gJ(Qc<>`TNNTm(eXS6e648*{WQo@JkPs&Rxor; zd|U0?>u5?4^ml97tIC!lea6bg!iY&hO*^RaQdB_CpPm@=D~E*e>>&gxuzB1a<1?r$ z7wV`lzJ%wXb-thBkNmXO!+0cjwc3zys4u#3Enr>h6pm`@u_KV&rr~$eWJ&|L0Ty`v z<(9$j7P$Rhd4hO{m0T zGacKtF3!GD#HjssK{Z7W-ug*1;XS$wj$%b>!1Z3|p?=c?mg@PmICRW4e7D&n5r7w!Pb4SDV{^dV@q^$*i?sQAXzK#j z#f9lfRC9c~3%AVWl0 z3jIKqoAhrQ99L)FQ7Mbqufz446QWzDKWCLdS3?unLDCK;&343-K=Wv9+NPXLM-bXS*JP zZ~}UFlhVX{$V$PKF!20hqBV=R1SG?xsO+4=cYAl8eF2;rY|Sju9ILG#^Mb#rc1;cbg|A8+iTu#^ud7h>y$g0kUpkHt7k z@{y`8g(N#Q7uvKBSY&us`Q$=^X#jFumuEBg%be}B)Tr(W+P!g>x^CF4`o5lcJB=UBRlhi#F7!M+YZxw0Nhmk_cNVF6s==>$ zqREElXY5QBKUA@w?l0hg;E*X~fAQ%^A_2a1;wp{rPnY$Ibm~{8A53A$-s~`Dezk1| zQld?!9;rmq5mh=3z;ynn-)}P(*=CELGvi?^AhvW{bh3Zv)gS<@)njWp`%e_5bni>eU%~%O zvtv5#*F>`-lX5@|;ZYAJ4J7u-ZZXXm=X1t3Wrs($K+Nkd+yiRWbaeQ9v?q3OpGXEWMpxDX_L?9zd4!QnxUOet5`p$H;2e(^<70pr?#PD>4fA)Rh!r3e0}4#}{KegK&%dZ^fd< zG8FiXS}P`rl(6bq1q&;OVy=Aet+d2O6#P!0tG^D5YTv4*)TWpjjp*J7+e$0m`oK_@ z#V-3i3`PW|&r&d}s}L zD`E4*;#fB59$aN!PQe8QzTXbEWx0A%dr7Jrydr?Jk%Ye=~!Z0AvJp95!s(&&D zMbLT}-?=T}9ttf_j?l*hLpm)S?2HhPV4R6QT~pm7B=(+|7m?&ek zuG7Nt3;RweM(60hSVuv?6{2zx{^VOEKl{C?hn`J=s*X{%4D{gNd^?A!a20UC*Vaaz2vWOzuJ{HZ`jBSGJzl;z_m z0Z5ab?42ftG2KVr5%O@2Ci*yeJmoJ9p)LnL&0Btl33iO#kY&+ohz)d1>y35YnyII ztgH8YaElqH8j>qJ&ur7HyIs?AWbhK(obFoFxn z5piW~Z9(DdxAx<($S!v8F$>YhWs1vPtLnvqMFTx27`Hn?V?CMzFb3U%LSVUq}dyO#_o!dr6!W zt(L54Q4D=DNm(W+(Hr9*HzDCAI~qdcVoGqDE4!7yC(y)N^KB(g*_zH~quvgoh2Xj` z@rr$U?=?-d-!SztFpZp_LXair6=qG|{`>wQ9MxI3i{#qn^XkMF9XIM-XCU#xJmkm= zL$ZV7I+PxNFhO-r!DN+z1ww~-Qe=?9AJHvCJ8ua>B6C#Ee-!0w64WdxYlBobkOdGq znX=!#l`bM;%tH1EDJ(bEs`l0DOK6V`Em^Z^+&6$mp<+W|H+W(p=1mfM{@rnGf18Dq zUVd(k{S8NeO=+F0^sj!IstE+Y3eV`*d65oRxrK)4qw&7Y#inZUB4UNI@Os{7J1F@$CB= zj?ee1^hRzahN}$x0+vQ3?8o)CeBGryyWn(b2B;>sW*!+4 zRvPCM>zY*$mu$2?%gAfJg$mj8(dAJCEmQb>3Ni?7_UEVGZkavPAlp1(zQWP>!tIaz zurO&UeSsjR3H`s}G<^%S7OHfvChhqB+A{Q~jC6GXwnvmsoicj3TAvhN)o#lw)$ZLpU zqMqS1MXJ`kfY)-7$`gkNC>`D=lUGJkbpZ9hbEyYH%cti_L`QTKiU|KYbv^m{D5els$NwyqiwN|Vqjp*uMe z`U|7Ihu0J1jTAD6 zfkQzPl_AYO6oOAET4tfW#3+TVzm2+SQaB1%Yu_*=A$r(m0itY=syD&d0~7})@)CG? zD*-U=2Tm!`O!dw;%NI1@c99#4#>c#M3vTE&Hg45kkM#Z)Th%yyEC&f_>uPa}p?W1cn$92acI=30YpM9NijfhzuhUVwV>uM9Q%? zXvwvP-U=mmCJ>6zqP#vV1@&1h;hc4%;gJY2rD%)ddDV>sVUt!QXmdJ7NQ7c8xCOm- z$0%KCRI?4}B6JtQYPCbV{~T(wfezC}yzYD&UF8B>m~{k+|E>q4m3;+Ylo8t}s4*ax z`TEy{^RRGoE5}P!FXTGj0|q5NY{Zsr?9FP?ZmX1wz&XZEYsV;jW&5%{q?(FS_oA%KaU$?l#LcucPvs!)+0{{5rsbw&f;+QA8BwQ+-a zdy3>K_RO$9bScTBE(S-eShj=R#z|epgnv=qA@hREEbS471=&f7O{-3>8lm`92m1!9 zvrj$dY0hnY$EB<4ocW-x765x)l;sc3_b;l$+l7ePY$WtX=mMPHqq{3Ly20ODfq*`m z-eolaPg1RpWjEMsKN4>}9s$S<=tWkRU)d;CMHZlYr#hY~kgeF1)h9xbBC6t>2wIs@ z2lT2Zw8F}D0cNi^K29m?CR-^Fj`?sYIV^>U-LhnJ+=K9ogb9^@FB~WbwkFnygqa%! zKS6>t{oQf@L-+&ub`ks}7#WS*rUK1So%QYfXfnUZd_nXLZG`fXermd<`N8Nz?7iCHsj9mf;e5$@8cy;WNf*EwN zJ1_8rKjzf|{={;}nx&BKu%FX@F9jsQp+DC;Zy6y+Eeg{6Qw&$nw-?Lo5D$Huc36?1 z9rqAB>flXgK-eRn5fdar!AETydx%*6vLR>&Bs$!#OVQi!tye}3*X0_Z?!?l2uKm&n zU%#5~lTt@%g@?7U9AELd?1`l*%(+;i@>j}fDDrvxBDoV6H03(xJoG-kyLy4hpv<6w z;=5K$ar~2O_@Gzf0Oi~cPVxA^zRUAx0^|M+B^!VFWC zwtel$yPvtrD{7DXK=wQF{({%g0eQIacS7Xu5q=tMS;#*m4c_l|H?%BvL)#<2#p|I} zw!kwFwZSk5quPh*wEJcLNQNnj)eb%DgU%lLq0?%_3_?V6x5DwOYy*P@Zg0;^!g$H; zIkV?9W1v}DL|LEJPt*zpAq8>kiC=<2;c>cLrp>gQud*AkM(^e;S@-nyV|8i17apB9 zK{p=HcqfdnT76`m#4yy56Ule-9d+4(=F0=1|NI7&rpKD-;q@)2Fu{a)sB8zz)ws|_ z^$FC6POXH!d?n$-377E)QBmIdJAcSi+HmFfZTKh;I#0A`v7FwwCW=q7^?f=q9xB^0 zaWXx>Wo9SuZIfauM7t9wmk9}s=sOzYRLGB`pAHhxIk`Z;qL%x}G~MdFCvfVFiyz(e z3j%?ZfI~~X`GdL zr!RgSw{Xo#ukR&=URfaVt=_XH{i7HctWFoxCSvhX?#h3SOsi-&G7#i&c`j)@H56%C zKOEzS@@@_XjbB=gmayUCiQ-|5rDtV9%t$&C$Z9XC_9xE7^GRFNiL= z8$B74@oyE1!P-sM)+IYcmqfe@;z)GtAX~r^LYzieFdmLIdkggq6bX*wC$5L)Mhw!7 zjQ382{Qv{;Oz&N&?I|c(Ca?Yyj*if6ej^jsjqFBkJ$1{Df*&`rx!fs)JX0<|)(RE; zgOQ3#*h>G2qk1psY~4q{3UC@Z)M2R4vHWe(uBy>AVUC1#8DDc!vwK&V26^o7cy)_x zG~YqK^{EDP3WYC*#Ce1bfB2akui3u`F0TS_OE)}RTRAlv>cwrW;Nw&yWyX`~aLbRM zsf%YM*Uyc_J1MbGV0qxw+Oq;7D_kqr2j6Gzw#1;f=}E@0?nNm(U+)rpM8zXB_lxl; zv2K|EtlVE4;CI@KLqeRNsJ!VAa&?7RzQvb-b+REk2}>K1|1z~6Ew<>Z<8k$X|1+U} zWS(GpgUoAqEdxPKU>r!q=e7(e~Li`+GUs%+YCde2y1Tw@7HXfGk2QE3O7{1x(&+>>oP*)_HgiA$s z;j|MSsG#MeXyrUPjnM%g@p5! zx<+|9+~g9-?<%~;5dpiY-JrMHwo}}Pt_wXeQzmD3Ay=W&tBwHVkKf(b+Y^mlrS;!F z>N$A?bIN@B!$|zeUub-|Scz$2{o)#eyw3<((P5izf6~Yfc$Cm>^qhNPmBI2V8~B4Q z-P0`PVn}s0;5=XMNFnYouXBzkmI#~hKOk_`UwuBLQk1+MF`I>4faj>iNrC1YFVh;c z5q-oKuopA|Q?fH&_1I9%_Qxg^H>iY@u^|04;3e=R;7{iy*iL@yxDM2=>Ns)<>0aV;K?SXV-#r0g%cf z!ZVlbd>Jqvv%4*-64JGzROQxUaTPOzo+>3J2MI6Ie-q2>r$um3XZBd%uDpo)=iSd- z4RgSN*aFRMuPi_TJFR%Ys(!xtN$X9MP@xdW*{QKqkh6mke@9ZLKxSWI-lBufLw@O= zN#VUfI5X^$Cho0#^{eIRiC{r=eKD zsCw3MD$WXkNSN#Xy6CD)XT4KzP=k#lxAXRS3K(oUhqCaxTsgJWQP(vRR5$DeeVe!A zEAOsY^x#dM7?ZfS_c}qc*>R~#E4{URvUV$l{Dbmm)>M|HppX~tBm6qG;?+DCh@@#p zh)vk4Y%(+W9YK}2{^XRFci{8_e;v}I^6^ZLmf?5C+%wwvUl(LYD$~%NXVuIvHoVco zAY|tlASe4n-D}zg@QkK?(t%<~=y#NeUrF_EWv1AUp%|)krdrq0PH4H@FGO75%m$>g zd6ILNHf7HHeT{;@FFwmja-IY5 zX8=)ed32{W-RTprMoJv0Hh1%`L5dW}GhGQezk$yxQfIMq5_gz=3lH z;|EcHAz@d+H&TH6;q^=6yxJRuG29FLAo*Pv&ex)CQqXZln9Wtj?D!{J{)BAKaXo&& zwXre84rUuGN9OOELDWZD(U}^ zM}zEi8wH6p_9yv6NXKEu@sH8%?-S5YWv(uARw zr!^5Bbh`NB)lB29V0B+m5?9O@E*ER~!dbXET(~4_LVcDj6vpMf9IU!(tpd3mS_L5C z2Fxc_*@Ut;oo;i7ovNim0I*}IH*1-U#_=1kF%Z# zOF8&7UC(%#sdS%e;rgVARLeQoaAvS3-)M@H(ma^><`GIzOEjC+h71mO`?)-m@9)WE z6X0-aCstP+ZW6x&-Lp;wH#ppzStF5PRts3ZSWv;I z|I(Jl5ZV^B;^HRfbynaJ73gg$w^B9r-qO$!J5j{#9rg_gdt{5sroONVsrxc`DQPzq z5w9AURre|7#-x*_?s`JIlTAr z&M5??|E~AKr?UT7B$~8Y^$hhKdWMYntjtrTeVs+4gTsYhAw;HNB?8x3wiSiPjC8M% zFlI&eI4aACaUGYAM9AT6j-Nq-pBu>P7yN!qV%3%V)fp6Wzua(ErX;jw5c1}rr0}3; zU7!)xchT7E0z|pe-+&xzsqqjIO@a@lgF;rK(e<*rmKw%CE89k`vys89{^DtgAiUh( z?G&_uMFUN1Oy`=z$5rS3Y~X~;TfY~rRqa_2DShGkm!P;s;+>_SU#PgVQiWl!G2qrH zvr}`FFLm6!faTsx;`q?Oe+!J9AmO-&)I`LEd^eMCzp?L7`BmnZ$JceB zan5ys)gohZ!Vaq!GRrcQGVoL=sHxp}kYJV@?${qgZUzWPYq@teQU6HfF)j!uraf7_ zF;L<{0q&q1<;sbS}&hPIr@{H$_KJB^f?5cL`9-#+_;sLZNUTX}+J(TG!U=S)ns z2RG4V0=Iatl9B_pp|s(Hjny*>+%w#P6SY0wbH#J}4b;6s3aNaf^(su}&s*b{(+7g; zzTldl_AiaejB@X8+2vxn<-QkkU8}$3>ZkiB@^r_c(&L+var>IGh1ME`@jyoV`GCIf zJxaCL`)TH33p*&*@nikzT*g8RMzuy7g6XOZGpS?0}&l@+hL;2Q|k?(}4*Se74 zZN=E#w+?aTGG!ZOlr#9JPtH-Z78tF{lIf~-%*%Gw? zHVrHQ(CgJpQ!}m3DYCn}m6V9%xa@1kAqL?GrMVfT`25236;4n=QsT2QEJgA-UAeMs zT<Z}TCfz4xp!&>M}JA`ryhSaJtu)!>L* z9n~t1WU+btJgFJDXxDksZaWP&660Wfg%Y%xQE=MKN9nQZZuB>tAx&^-jt_JjlU;hL zE{A4QuH(l!i~ea%{F3?%=u9sBn1@0f-ssMOJ3>k zH)${Xv6qYjN$&g`IX31gOBPKKC&+!$Qy)>R-H5%;uV^}C~BpD_lLa_BQQ=}eC%9p^^ z08)tas$m_T{LKc4s#lj56o68OY1Op-vWK1fyTfT`+P6h6d+|g^7=$HVeyLP-#MBa+ zrEe2|v)BVgSm|PdB;kFtYqWOIHr%hUXzOtQ^dFSQ?%YU4TP=74?1*VLbIc3px@(hs}l=L37#F9%OtI=dWZ*{TzFy*D^s;U zs_%Ihv>gJ>#T0?Wo!zqM@4X4I{d}}6AzJe;OIq#1KC+Xd8YhxFEGUP>IAvnCvg`l># zhC^G?pjMaN+aT@y>feSTVHWScjGfQ1y6XYHJBcvXTksIrggym^iZ2lMujV?H)RzTGB#^q+yrb*eEr$>~$2SAhbEx)WXL@o|XD)7& zSl>xOEjwqUxrP?|(SBw6*+6(0`*U4Wnd(hiM$+@b1mhPrYNMz`g#b?HS~^g*t&sCu z0_4x^H5Ck{S1UQ@E1;qb%3Xg#1f;dA7c*rGkY5J@awM;evaVle=qc)HluXaMFI)fc zQwPA&Umew@M7!L4$FsUf=0ikH7>HeMl!A2oRWmnw&L{AC6ZVABPgDJAgWyYZO(?;? zixA8zYx#DU7-k${Np)p&A$oiJKSO@2_IZi-4)BJ+96-v{RpAD?He6Gp_>xV|2E2T+ ztz{3i#2egimK(mz$n+#s^9&Ic?s0ZM(%jkTDKhzlKB~46ofu(X(KVPrt2zGSe*2Ee z(oAmbCFxu8wc)3?61mIfd9(Z_9w2i zADP8^R*oTGX<>h~)W1-)yzNt1sXx8@sipJ?30|4;`uG?X;}CuazoB&c3PH4TT2+&Js!~9UqloA5l758naIJgx^c=DrYJ4(RV@&;7Z+po10FRTF= z8z#qO6de;Rajv8>Vt9gO{azS(h6lYsb3T61{IXZ;*I2o631t{?^sz67Zq;|&^!<%^ z%X>V#8UAek=2ciu!yGckQSB>r^itYrcy3+@HiPkNmVC+^+lCER2dbx~8NC8bEq#!& zbu?yXNr&*iC#RPlww61W%9!CJC!1k6?zP7do`A3z7~MMc4z>ww{k2Am^7F^jl;_Wx zPmg)oa%@rY;0gEg^yZOw(TL{}`rdFc_9)7YOg|9RH(A43+xa%b6;gLvU!43dQeP9| z!?(p|;#e05%${9VGdNb$9}aqqKfgM+dD7fHm6cwNly9;CS9M3hrZ`|a@8-`Gf+}-z zOzJAIA$k0GB>$+{Aeh^@q}-=be3Uxz8g%JfUP{Q+=wd*P4FNJLXh$h!x9pd*u?;g8 zMl9{>BwY4B3){WhyssRBIle3U67kc;P52|$%#J{rh=ADc1EposD& z%0plU=p{u>r_zDg*d=b{X_$T|cUj5m;g{*it~Y zLD_~2>b}&*JJ}?*&&zTMNH3Xz)-T6tJbcAT+lQ^gS|pj~Ar7E`b6KVW-AF(?xJFe` zD-nVDTVC1v>2Yy69?Lckn$5yc&@Xsq=+RO!spxKe`!NbqPg^=a(YP$B*J_M%UqwvD ziUpQ8qV1&LPYs$wsB)dAuWo05c)ps36hwnXB-fbxiHT-A5(3nH~~ivXya(G($X>gLQ=R6>A-U z;KoOGun3y{RGYhP5W*TgsC=6m+0ZCfI@gXFBMdvbBxTEf0XKxUVKh5fCSW$YVv@RL zm+ZfrM5ScmV`egr9%EZd#WnRbsq5ea$c<5D{~EVF;1?VTv#Hv}d$5z%Z^A>b(>l}% zrG4i-hRm2c5h>c(D;3p#Qpf*Ih0Ev9070&I`38bIsPeuOYkNH)l8U=u1CB;_bZ@E( zRnDBLi9m0y`_$J-vOq*2`=@L*kIO$%?7N=A@1d3q!^Dc1-z67$)Nn#vqt1!osTJBW zsBlWap4HA$p?#y{;2yc|C%1iqf0&GyiX~ZBs{Jvc6BhVrc2u99I`42qA_>3FKV*iW zM_|AVIG<*oM*#0F0)0F-r$98&d%kL+l1ugb&!he?#2Og*9C`1L$K`)rzlr`21^WN1 z!2dtW4}1+okUs;ASPIh?IE`@o3@oL>XG(JnnUWy-@_WAXAEntGl&6Od6GRRJ9U&k* zC2~=8GTcb6RD5wv6>~JSie{$lZZalffxZx(;f)#r?cn6DNCRKohWq1Cw)rxG=pQS# zhYEP8rRn_CaBr}p1p zC0@}P=>==&OL^{O*bz{==bGG|i0tIJ%0L>*-V@)FGvd(M{mQklWt&>|Sg@-Ji_RpL zxDH3oH|yW9-xC`t?zr!i^&qg971j7;VGy30;8~~8aI^4~eB+Y|~IO2Uxh05Wjm%eK~iAYLfys=To{>K?I6b_b=FWMf)Hof&;&_eGm1g?5r2!^k08h^O;n zO5!8$e03`Gh&QEAKjWPe&?lt7{5MvGn(fajLNo9TFq7^rpPJ**Db7#;D=x_vvr*ue05?g*lDO1|$!|CF-6s+4)^+ZL%h{m0oRJsdE}qMX zG;lZR6>h4{9wnp zc-Lhg zJ4MFKrJa2nJ8dcz@G{cc%jd5g1hm1geO%5cok{f z4q+A45KO5dRqG41*Q4zmwIG?M6{E^8O7{fO0}+JpCZXI-`Q>_4B@||q%GX_W1@xM? z42KsWi096K;@%+A<$Z|L&-4JCw!dTC2?dcLi@?V~?{LRx+V&G7NY_)-JDfT!;y?((sUn2N)sa;`G`G~J_ka<`1#VzOpu{Kkc}lh>aa%| z8H5U|=8srkKIsRxy)zXdl@rsZM7a?Eaf=L@*2IPC5)bt0#X0gKpJ;~$yTHjJ`pIGy z?|EEkBlsFK>IaHseNsdCvRX93x(_1z6&u@9aal^(xT`k2jWp4dprYlYj2pUhmii;F zfe}ys?W3FZqYN%FD8J}{d&2G~5&vaelaX;OQa-at4_n6}xWBf!9MMH4yJMU%v*!K& zxW`Bmi$6XGV^1wEBt_IV>>QVGAwcX=Skur zfsfP=%8z_ej116gMxuyRsu^N*^DW@fm)lBCZS;t4*7gU6v1I0NzNp+Ka_p1fb4Ov1 zD39c$;q))w-fcSHbkCTDUK*DS_k}P(C{g{m4PDHNQ926(0&k1r8>7$La%tx=;Syb@d zIP3Tn&6jUW;W~4b(#0~XNKt9G@bHL&pkWlYq%Ec`PKh4J^2OKLMnmYPNLh(Mkca}~ zBDOSs{8X$sq@K*xrKu^aQJhMQAMKRV+m>^qAD%BD3f2V<;95pmA7(|VxKHQ^v_c^;zpa}j zmOiZ#v6IC92%Q`O)l+E%!%gEFwT}sEA~+ODg!ZZOr;_Yn*F;z(4h|q5bxJYx>T8{P zrFTCs@MlI|q(NQ~F*ejJSS4Q|BM}xWEh-AD7?^V1?dNIh1-GZjt+d+xRCQ~*UaKc*-PnJE^4padQWCPnm(^GJgO<_TaKwbA@BvI9%i zQ@*w>y+Q3{u@kl;{R@0>WyR z>Ms#3V~6PDlh#HFN-W1m#O3+2}2L8 z4hdC6dZ17a(PZ|~CNa(UUf58#tBXT!suvtY=_MRs_bLmj87MDfrVB!tX@gRXFb-d6A{Bt+I+TuJipu|f7(sLPf*I7c^aOwF*)xWqw`rMl5l7k18gCH za2J`$EDxLkp$sOFKz=%)7_H@`d?tAZ5+#Ao7D=%%DJa|NO0>#VEEDbZFqMFZ2_dt7 z`ek#&dMYLQf=d(&7w(6DHrM9V1@s4+3Gyss!eUuSOMSnm*Hl-N@gmwS%FkG)pb?r3 z?qf{_@&xccJU$70&etncgOydie1AR;=$(}e|r!AYC`;AHTR8`>IX_3{-H z|HLO(YI0~9gs9tK9XivHw*zbc2@iuVwp6MxRxZF2qcfYWl)i@!R+@Bf&$^f1p5xa_ z+ZluL2Y+W8=w@ED4WqD>W>c~~DqlfhpYWbZ9K9$p3CbIln!U1STgZma0~Uw|;-|tB z0f7i5@x#$LWD$p~SaD=$A#Q2h^#;rL$u;mNa7%Kp%RL!w-9DaSkYeYI&zF=mUI&5} z0!NC;OEv`p<|vx^;r90T{gg`qo8uzLd_+Kb<$9GBb+A~RmRJNMf?#;ziTX$xz1tH4 zlycO0zMZ2~9r)9}^){}E_ct`0r?NHC98!TfI^;JrT!aUB3I$VpQm;47rtUJomWv%X z(4&=B$6~iO3ih#U$lWPC$-kSD8pAjpG33r+;2PICV}f8JNzdZHd;3*?uPc%g-rrDs zvEJobz#2RW-7J}6Z~2ya=2ZUf?l|C&rF}TU0$%zGX||cTIM}Zn>2#-V?3t0tW2j#$ zt7wUg^My@Z_VOsed{d7|w(lcu!3ISX0V%>-6Kh}s!x)F6RzQiI01eouy#Zq)Vfcl# z>^t}J^zG^i`pb6sz_wGdIQLW+>!GSXQ&)AlNBt8_`j1$>Q(aIcvmd!;(NMlzw1h59 zifqa&Msw0z@t!?I6LVhS&};cvJX>3B@Cyr);t21_vF3N;V{M?scjgjDDDk;YJv~*`QpxB(2>|$8@JBY5B7H3aR8%jWVD! zfXSHqKT$pM1BzP}3qT6n%2zK`Qs^V%gN>>HLboXZg@F5ju#J;|A{iO}_*vOQQT}3B z@4M)l?dQrzQy(~}Tq$(6-P-$T8(SRV01Qa>)+iGyOkPi| zY2JCGvnNe7WF0}V@^N}BkV&#~>d}Pv&yB*w1M~HPI1LIGTjf(0SG+=OU#i8dmcoX! z-ak@QD#IgH+74VnwQ<`@p@EMmnzs+~6Apca`(Vq{vc zD+>Zqr3W}64M70G)t#23^lE z9Vk)6VY3F@?#bYLur{;6#(9cZ`}a9$=lle?z$7I0>SYzP?k~tyP|x%GH>F=}t>40RYeZ5CGIF zoY(gj(0lW}1te^ZqL7GMC7ji33kiuf0=~!7=WZ<}^3qZt62Ut@UJ>yl8s~hA7~qVEV+3r9EPerwzb2B9}?m|eE=}-((r}X z1BloK^Yp5p!h3~vDwuf*jtDaqvERcLmtr7%&c6q_oENu8O%}5i6?>Ms5a$a;HILS^ z^?^cw-WoKSN{zP@RxQ`*1_CYRnMB5)J8!UW9H|3|x#>{dY)v6;U-h=ZP zoFDjoY+ekD?PAv~6e&&A)AHGq;w(hcsG#0QJ^1B$RyEy+S6^j{z@!V%EO7lNmL7u} z>S(zVY>=_{vaz9!<5iKSy(wDT8aJWH-yD+TG8qkxli}5RQapy8+CA-~FBUOR2~tsv z_Rpkh@j8goTSKJn6&*bD4qZ}!ix}!e(I`3uh0qesNG+eA$Z&6E^zJtxDguHl2sTTE zgMpBdwHFYdW;t{`ExzX=tm?ZTiCwdL^w+;p4bfel| zq}5NJf9~y_F3U_SloZpfh&q^(t4Qv(r;XtI8-f@$>Ei%-^Luy@fZVQWbS%8w!`-Ay zoak$G$O5pxBjiGqR^M=A7<6M#5=Y!ut-V(3l!k5Yw?bb=Of@4ETY&}NrWMU2)tus$zo7>NR}vF4V#1h(x}1h3xb4Z2^l8kv4Z^p?9|NoRSV}Ab-npG z0}COI%=6&M-2b_!<={;UGm07l z%0sD_X<;k6qM}E6?{X*QnVl;4G$a@R0Ryz7U7SYjVH-V9RRO6pf4BcJmzdl!SM#8k zUuA!bo-!L_<;9Q1(_?%FpbYOffydg+OU6_*m1Uq=k+IHIo@<3$-+Oo{%E+^xXzk1* z))NV%!Hw-60t+pmc6LIcC6uHoJrPyaJyovvUN)6=AbgVEU$g0*+#q1&pU`piot#?( z=1ZO3aEl6xIrFseA%UVIeOeGgy9SZ#q`%A|J9_t+B)ow1Dm7R*eFZx4^?ZN*8rI@@ zfMQ}6c6}NFk?h+)yv|urce7?;0q8`C5QKs7Ar3h3?MfMVk|2)hP&pbEKhGG&WTSt4 zR?eeq<8>PmT1})fK6+Saya{-UCj71fFXOAZVH7^xE#Xg`CnW2%3Y&A($4VkYv5AN- zKT9Q{?&pZn;HZW>L+m0O#X@}zhgWl}MsGJziG$vC-o7?;UWDYEKn_c*z$HR>zMlL zveYe1hnBUmsa>Wzzuku!37(riY5aM(+p7^|W~hdw*}R74FkMm}toGC?XwxY-So+6} zgm&tf1N5~d>=h&Vc3fG@A{qFNR4>5ndssk6%_FI8C=p|mBdtdFMb+v@g%{J1B1t#1H&!r4~<~}zk5j~IPm(Y>aDyWp(<=zT(-jq1#S@a?dJ#B`$my3 z?iG#|o^XCGkD;bX^!J0jgTxp~uIKzu(6EAx^71NGk)v_Xl4(W9w~>FUkJkq}G8KZn z0Nih20>B4Yu29;*I6^aL?oaR)TNJn?9ty5GNF}T$yu;*^!ws6l?rt`%se<=QRX0M%6_7@R?y^7x##R^B~sP*J#VZlE+XsVlB^+>E+8T`$ITuzzuhHi zH5gv$))b=y!_>MdO8{knYzSu>G!ET1~gtRJzjvryTLGkk#6aoE=*=8>J?n)~2 zL0`)whOilc^AKS%-M09WdfGCz)5fC=h+&>hEJPn{j|s0KmoEIt(oSq} z;zA5(Eo9xI=7KHHCGAiyw;6{;@| z0~T7elLWo6Kto1ha1aW<0!leY5IN|3zBB&Q}Je%I>b#P~|(+{@3o0~nNZzh*uKAml`%Dg!W>#Wim9EyOO z?=A8$CDr&lY?8u^;2`Eqra)+j+3yk{fY`wXZ6zR`lL`8Un#>dtQ>CbdB9UQ7;9n~1 zz`Yn~x$s{a-thzuUn`0R0ioCXsAfE$%;1bn*bLp&QUjA%(8|Bc0YtlmK!z1frzzi6 zC_=4{uvhq)3f;HUmeQPT>I>Aoyd6QDUe5Y#O@(E3~BH&6P)@0iJ|jVzHsEzcQ%Y==0W~Bp?Ac=KkMNa9WOf6^M+ZfomxX~UmZ(p2EInd zI&`35$QS?^l_YXSMtx8Kjxve{vTm_I0C__!(#i?&-41K1*`zx(gw2+nKsMFgPeW(A z5EH*$Q1V;IlI8REjxn~#@GnemK?nD9e$<$HCwhaL5X^Op>BlDj>_ua~*RzsH@psgg z#-RuE>f%F~pdlmi#!^H=)wC5M29q4501;8T!jFC}yMuYcgb)YxI&Q;np&4FSHD}>- zV!7@v?MDM}@d<6D&JvpLY}b~19?z>teG{fjOwGDE7`iGOKpOBx0{pfM2QL0&sQ&9L z5|)&OGdof`@!$~(1?iBG#Xx)==8O_a@m3Zlun-6`LgAT^0v@=1x<2VmM%2FYvQ_(sh+ki-G z(WP`wv8oV3$e2+?iv;16?2EnZ=(}5(h{#&+c-)(OceE`zbveoq=H6t?S;@=m3DqLp{w8B-yIW1ws$Dmj(~B%b(xu>I-`*mxcEv6n z{B2}Lwv>q0mkg{H>U00GU*B4`&#T?`YTTU6^YTDTZbS?u*--&Wm#b` zFIEh56j*tzhG^(s}r|p<9h12Rg@|_*vw9r9C`G8*l;?3S~eG8p5>zKo|C%ba*davgOn%TUbS@hl}%%p_Zjg^5`wSVYS}0 z9#5Iz?fziOC-fA&%s0PnnJrnEKzp`&ZfWT(OsBwu@r>0|h^wv4DkRuyOFjhFgf%X3 zyHTs_FUy^GVzx|y&iELcsdedXE3oF&;Z;Fv7q<+JoAab==#HVffTr^=StP@QS>ueO zHi50_C;eeApHugZ3n6``^C9vi&bV6u<4?cpEI&|JB0xzbyapT~#OpR`J{S z{{h>OB4g0Zb)~Nct5R4xg{dxIi2CRyWVvT}prc7(g(ot@7z}v14lrAW%Z{o@55GtE zb0YSCUSuF4=#p)(=<%ml7Oy2wbiB0u_q)Q2{jYWZ-*<(V`ftnkk%f^L1wq7ET5FDq zJcveiEjUOfiQZUnLpQ(+5-AS^qn@|XZlfsT0b zp}Ft8r%ci~xP?VS4*p~yhX=(SP%*f@q$ z4Zl3Q4*Ken?Hw8U8abc16Yjm9^)*SG9!NZwW5~~dwD+d$_fP+xI)6%?|?yM$B3C|=3TH7g`lcif)+C~ zI2uLT1AmAvTef4c#jJsKhLjbhJkd^OT{068OaCnc~GuKk$RdkeKXacT^)ElLc-1PiE=L+Gi=T|=jf z?snn8`J(8iJwOSYFq^}v7)~cSKdaj(GoDqWxB__Y+@2arP^k~_(J?K%js%NdHHvq* zC^=tzi5^4fpwwW9*b^V|PD|R)2lBb2qIHPFGSl|0pkb(>hOpIw{1g4wuRLBqGO6zi z4&@W9gpXQTv#R0Wry!6hzi8E^ii{j$Agjs{BrG zazFrxaEN$1~!2rRMaNchQa(PJzzRaAybPT4OALICzz*)bC*ke zWc8cVHu2!^!B2O5hJ{a{JnxIyv}l?Vahfm61! z{lvX*zrwGbU2~V#xf*n}{J$GKUb*yD-qhKxJV)_yNnnN~wd-Pe0nkja8Er{CT2#tH z^;1sLIQ*_buxZj90!^#iQ4s0P!q9!YNr`#jZ21ne=I3+MR_aSc9AV@iy$@Jzpxw^o zg9-CGS~#-8uhn-o$y=en=!?U3io$b`oh+}(Azgy~p{sOBCB}oEJqM&W5zzYy&`t&V z!;!0G0s!OX(}kzcJ*ZbV9YPZ%T`7Pcy8`!T2K5o3*s-ccc@)k};{I};Vo@uGu;TF$ z=%k?Gy;HDFLA|vnI(tsw0E~X6W;NyU7efG|q7w927~(2zKJD$v3*%-2I=j}eCAjL`Z4PkfP9^hLqfJE!$5q%YEhGTqY$YSQ|Gd;qR z_2hT%?JRbtFd^ReH(~1r4hj7Zp~p@1f>xBmfC$h;|5;!kD3Z%9evO|gC$ic&(2=)K zEMi|RA43AdtrG18JAQ{%@}st+4pBUDh-~^`3N^jn&^1gVXOn(4dwTefT2Su_pt-`j zg;>toeW6eLHBtv9G%SjhvWQsRrLI+ZWA6Fi?LX{9jUUCb=a2==x^4E3f^x2U$;ll~ z)In-27`ZhA*-7G3q$#VRO!GGY4kx@qLu4?mafE74Xpg8MdK*QIJLY~z3~gXIg`UH0 z+{7f?`V7X7AX>l78JVSZkN1+&V;@Et7^Xfg?J}n1ZDMRSLwfcJWV(_u{KBll z610ge!>{jp9$h!`urSP|cHtBN6&%CR0Yh67zCssGbl?F2fxzY&pJv7L4N5@G^zhtA zf%(K&g7G*NNrK?_J%Q}n(eZZwy`TP;XO%nykNHN?$im5k77uIFC!bPzRvio%%)A)8 zMo?Dj*>(`OSQ}`0UB*wF`;@d4)yqgI?m+ns)ED8YSAM-M;XfDy6hpPDjnPNJkjgLx z<+F%yuBwYlB;i>9`n?h=^Xz%w{~bn@Myv`CE{G^5-vVK-ssWqe@zGg9kTs(L03lm#sCbJCC#h)~>~~dRkGz^o(@|$s z3pvinMa=pl8T<~DCT{rJm5SWH-RHxYvKZBSfdt0nQN7-vr(ehB84Bv?8c8=7g)jY1 zLk2wOum02idpc|K(+UIbiAdolNhn*x;?no9?kJOEk{{m{>~5>?3U=5wxJiD<4k3JG zpjbMJS)g@NDFDs9qTxWhuq@De{O`h!?^weZl&^T3Wen#XhACf)RB3d^zXq>pJ(MAg z1_2s^bm61=lRrO~5!9gLiI?uNrz#SskQknX2eGV+*;U4WIk$v~tF?nA$YW|DWuu{2 zTkze`+EhqKhTLrn85EXWWgP=RG+67(-!$a3m*uxyvR;dZygq?8f7BIb(CA{*vyD7L;%IyDwfS_Lw_+p3f&vU}l9cxT!wRSns=&Z6??Y|l3>E^N zI@Eo93{D$axG`a_`6!^Bp-4f37$VIZ_ejtRp;sN$xga{|Hvkm&)@p6r~ax1Zh- zU)q%km3R)KqE~dg@lpS1@ludNC&nXHH2)M+UwYZTuyT-XlBB}CDwJHL<>JCxxVNbt z*G!rk{-Mz( zVMBy5zo>w$MlQnWK_)CvsP!sTRSj^_(tr*Cs6!1l zE6;j|J8P-$TIZ)Pn=XDFL?`2*{E_^~m!oeh|nYh)IN9JD`ToEU81GG8pNiwYBpfSjqK@QT%OM(O?$! zxf789$kCrJLck?PlSoGy+pXno+LhmaAiqHcdlu1FNJ{a9NO%3x*Tss-%%7cI2g|l0 z+mE|4b~m`NduyF0S&}~gQ^&|j85U<$6eh%fV2*GGMHUm)Y)MOi#siti7)|nAJP?${ zd-OpnwSFCCbF2wxX9&svsKzbPtiNk+fWIb3Fo+k^rT|W$Wjy^zYYS%MYS!OhJspa>e#-ASO~^Nw;xO7&Nh$82q^{)Cu^Pu|s`VP@0X69& zeSgS~)`#^d8!IoxwQIs5)`AJ6>`TS(9^R^n=i-Rk#+Vhtm}13ZWW$G_H8^HfP4!*1 z1#9a^;y;2nq?uETE*Nm4IKz0w{{4HihFmuTEQL#3{cYh0kO%1hEhvo4MYnkUvl6iL zf7}~=>$75DpL?(AS^Q`Zjzy+^t_aymtArWDaZgWaVPazu3>zfd5uQj}`UD7Uc=q@F zC;doC8Y3nO?*;CX!Q$$cnF47M=!Nr8)-v!TL_O6feTtFbHX=?5s8^{B#Lc=I%7TI9 zGP|vS!d&KDm-`3O^~LHLXR=83y^>gjjuZGptnck%w7%u+guL3L z;E4K>_F3CG6^s2ZcaN;SzIa?SMG`HF$szOzp&PWtC9&8wkJOnQ$(tp5l#`1NLnssd zeSFtAQqYtWK6ghTcJa*_0CQvG%PY>UM2g^$oHJsdn2=B{<0_j*?hOu;@PQiP3)q`MGxg();h59#1P$7U21U1%aOxl73 zp8Q-nGFeSqkaaXbM6A;-T7o>XD`*zH8`}qG0UJMQY`-hj=TG!T^&btPQNa=>S}lm3 zNvGz{Y>iJpG6lCH)w{c~lMa{@tsyPU$e0>(VkQ1dHC6=Uhbj){^n?ac*u>GR81q^2 z4np47pBm6&$PI<%;tVM|lxppJPK*k>cfiJ>D@K;(!|*$(?7to{!S*Wz7gwKY-*UfW z$-iu2FYgEYynM`f1$Y`lmrJaS-W5++d8dAju#}NT%lZA)$hUgLL`N08WK>}Y)70z? z8&1SH+E&Pog(w3pV~u7_n+H5J{!S*4GP?N>Xd;y4W#PH6vy7!?%M z77>i~k6>67kha3(|N3rpMfXSg;v;6ij%e=b^|J2-zJcs)C@>NoA8fCHwHBKxg0BJ# zvO8QS^%QngKPerii^XZQpZhC17Ru;V7MiO)%!p4Ph;Yz{$|8RSuI@yeB4gnn0j9AF z%QRHU6c471!jB8!g|LHD^Ucz;)WqMHE3N1})MjD{Mod4YgL2S^R)1ey-#sV)(Aw** z=P22}8NP=5XJQ(Az#mCFV+#r{Bw0czi!5pkR0$y;iXJvoEbK!MclP7aurl(Rf7JDF zB657ydxFcAZ)X6&r)T8(IRNTA z{!OR4dBvBa8bAj?TJWVWh9_O@Hz;_%@`_8lKNMS;|?r|jmf~Mbs~A|SAIZS`5>el+ zyL+A{%}yn9T-+~^E2yYpNK;=kAXW{V#TRD=nRQB(kyBep2sdU*N*)@-QT1U^!IDD2 zibfLYP{lgv$3VH#ncUMZmHl|DH>1_Xax2^20#iUWN$a*hVg)8gE`WxlqxNsSQyClC zd-IVUu?HaV0#wT%&FZ8rcJ-S(N|yhXDfuq(eMe|B12&Ag_9WVrhI&34FD416T(u|! z+LgP3@VO2djR=hK0)q#X;`Klit~3jXXGr-k}g3jvO+{Y3B{lJT6JJheHe?P@Sz?$vzN~_LEz{*VS5Gjr;$5$J1ZS2Kc*4+9>1V)Oa z25cogbMk7HkxUvOLX$_RAqX|cPopJIgDmy|GOTT^sKPWhg6(;ENINrR1tAVpfot&{ z92o)y77||FygIyH&}#kP^5{G+$q*75EwngZdVTtqMy_i-HucaCq2mK1rxZ2}+93uS zA)y9{5wa=e)dIydoi@vAaS&9B2FNwlX`jid>*7Am8OEP?9}_{9qL)Yvkn1HeqLdPb z`Ap(c4!;Iw6TXvS^rigpNF&WWSr=^R{!j@MqYSo?!GO9#<|r#g^m_OzsIiB{AoBBy zICdjB0Tj75w%d4D>MaBSO!nn9tQGAKc&Ukw;zY1`V_Y7BAKSOshu}qtzHiE~#u7G$ zO*y$J#k)Bi47Yz6I=tVOV3^>TBi3jEuiHh!NTU5+_9%Fj)QafGp=xt5u$bh{s zCl0&r2=-Ze2V44;j4M{mjnijBP3zt}$M))2sH!g9n5%n+9_$7A#cwrj<+oO4U|c@2-Y%cj*t@krQlEX+N+XL>Z#DPl@cX z0|31(7!ptJ!${Qaq_3kIQ#I^ z3CQ-aZzi09%1)LEZ__DT8UAkiFWC)YA{Oz6%UB}GnYALHOO0d9e*utSrJW27wwO}Y z{DI8Lr-{cpYQEW19NEm?4Be0Tp|~E)-EWXgDWr}6`VEo3uQ-=eF<{^P)?VYaUaTT5 zZNmDUHu+c>@GD}n+l6>!IuQBEl$fHA1T7GfkSyc%S`LX)y9rqqJmzTWFAvRV*KWET zf`%6X0fsnRLgXROa!IYH)F}fd1@y@B7&b$0>vj9gu7BaOFE$bgzd~3h=T}50$cp67 zZRmcxd+Ymv$mYdb1*qcL%qS{2KJ7D#C&|#J|Ry3%_IYlx(F3w z_#u4Kq=Berf0-jz_7b2B$g2Qo#zQtgG=+oQ{B+93Lxn~zt-OVJCgSipHK64%1lPbC z|J$_<;J~M<*e0`^2e66P`@@)RYHG5tQYj8#n`PZmZ2spGU7Ro_3=<#$HQA=+)@Yg% zps8CZg?HT&#}c$81`hh25`t_pm;a%TR-rCgp2b2XRg*;er_@GqWtI5U2^_MTv!IkY z<;gv@W(Ha}H!ap2j)MS}`^o)02lrIt%r8oFK2H%C0_HK$CX-Ud2kbXObGiZ?+@M^d zqy+$StESm+UJX~Lw|55}vRIP?vO3$&Cw5%pKJ1%IZ4=TN}t7N?(A(_y3s zEpqQ?1eb<$g+pik*lCGn(3Yv}{O(Zs5nGkqC=HV~Id3(9(*smgqqMK8p}ftk+{*?w zQrUJ<%mW_3390~vZ`={Knp6OzPxsCM7;0y?Y^b=Q)(*MLC>C(WOF zqNT2PK{ua2uANS4scsj?rPOV&=WZA2*y&nqHuz#l{~xSL?!OVG|FQfBBTIWpybB3oP)AQiZEgHhA)d@E^1{Zzp}s(SY#(>V|(peI7Yq)r>PFV z*9Bzq*S_23>VzvUi};a+`%g6}`pEP25BcTKbeQ=zz`Z%O6EA0!ehEx+$}~Upu#7}U zbQr38#u`iHa-73Dlq)-SCW7HmBXTU0wD!OpE?C*3=JlbN6tm_&{AgfotM}7SVPZuy z*dZe(Q#6f6msV^8Mc?U25Pp|WkdR=bHvXce2}{m-%omdnq>e}CkXaj^gvERZDU>+h zqwn|$_g+kiW$#WlplMk1wQ_yxBfJ!qZRhbcv<>((7R`D&#ir)Z`1GEcX~u%X8k)sq zr6Pn3O$fSlr) ztCS9kXJw4y>6BZIg1I02BOXWrL`)sAELUZUC=qxlw^ANjK8WV=h1`!x&knAoD*pJopZOTRd;df9|7rOwJzI2W`sjR@1 zyHg%=7`{=IU|AU1{c|mMj#R@;p08U>x7?-_+M*{B?b=vF8i!U5$8w`JjP*u zMlZ_gpTZ@A=He*3!V33f;UzL%BH55REHeoCO(9_vqaoqd33lEO1$@4*{}AiNU4&D) z=pkDrGFYn?MR-BSyl$YW z9UE^La`8%(B7N6-@*PfhBJ0{(c00LsknS!8kyqgf9Y60dCZS#xJgR)K17t>#Dl<@? zseNNyd}8zy?*kY_234`heVP##G(w4>FLMlmWkAHR@?-RbRFprRN}+HD%P*n$3{f+e>D;rdCSQ!IA-53j zmbs<(1uKh*O!AZcuJgDiA-zAf9vp_)t%8T>*h- zTv)R7-r*jf$~&XC)S|I5*eYvx;vH88PKqmX8E1eD}(ZE{Y8u$leGo!Ad^ zZw>X9euucRjk8HAPgVr=Qp`f96PcH6UoiX=J?xoYmzSR63PbrS|}fz(bO@Pq&{ zs{Q&;S7-|EIUIWA9J7Xy*#gK99>)Uuf5zJC&cc~X=Hy-e$f~_@L@RXH!)+C?U^`B& zCuYV2CsEcX1X%VGkK|hbQ7yu(o)x&q+M}Pq$4?bc4TqyL%f-YqO*>S2*;a~=UJjR| zKkRxQPqQWzWO`oI%BUvPc`&BO4xNL1yRBeZQait)8(bL|@zFIxoJXjGe_eB9p*#qi$259hM&IkHWKqH&a8RgK?N>^J-X z`N(BE4TXe!n(p1B7YFk<2_}jh;>Rx$dJQpd<5|~9TWc_6(^g41KRPg*(2MoU$uK_+ zW*r07HxKjwfFeH9E5|A{x{Si`ZlNw$I&kTrtnAU8YFpt#p=g*o zpY#Rc|8&Sb{lD6$b4(HB-%T7Mw0_t}AXcBgRNCJ>5-@d^5&PZsdiSqEtv?N&nQpSVj6`ifxlrtrn;ZFP zrsdpUsccmbwD_(XLy22y8?-~zLLk1B42}eKsJqLeH$=8?x`4I8U;n1|f_zXyX@y^u-PZCgq#17UdX+o_g94&Q?;Xia&7 zbu^X-&ia0LMbC=?HRVw7{o{wxIA59*-ICYu(XjAbp`~)TT)5$|TOW0*I}_iD^5lGP zFKGI$cj$D&pTGsH6u{&k$cV%$C6nHP3|KA&*Q1UOIFe4f83^x%NTOW1v*@#_7&x1v zSC738s{P3GNlgqS#=r+ws8%yUsJc142JD;D+rJOHbiDf(O%jrfV1a=AOx? zx>$f?)n_9Cx|-_V(tL-I2I+DGKyZKD|>;!U*XX3NePBHO( zYf=NVXkiNRTR&lN{t)XV2$FWM@}(37W#e3??rKVLp~0l9^xQI#@T}hJ5@*gPagu@8 zmW`cpo@VQI|Lj<6u3s{fm~HDcQ3R%&C5F}+@dz0podunhxX;JPxx4r5@R*;gU6X5nuv0(JQ_$YKImL`^kkiY$T3V2N; zHb4KT($m&9)STr9fY$#?oN=78V}#a4{|7kvKw#9Q4J?X-C$8TraD*i(HE%ACJMRc+ zkj3of{;{!L+cx%fq4M{aK0;^4G)0z?-&%4_4$Gz3(<|n`O1tVmVb|L4GK~biIfS@$ z=D+KfVxhIZ;8>fxIWj^OsL_eZr0-=IxXf*G0&a2##-kqc9Ya5GA8~NzN+wR}U zY6M0kdJN`ZpEIJzUEi3iK&-VJ7f=lkRk;8SWaGODB}3b6ZQkzs+%VCzBQ-G|mNVf! z$#Hm?6qDRUA$59w5&PY7(gU9}S7 z=m7|dhyw8Y(TS0HOb;2We!LmbTtBn)9!6S1!4l$NTo;czX`>%X%$m}XgP)-^ClJ3I zfr2wcmLji>;KQKu{gJRnwfLxPt?EJ>_`GH)aU-9{Rqhp*oa}IWb?YI&cFlWdOVRfi zFzPa#iyhnt4G$|hhIr?;cNkCo8xU?;aA@KDg`T>OY-hV!fx8~ZE6V6OQYlBd?~K1I znuGvNC~AoVpL4Ik_%Lf;H)W6n&vy=VrjhuVzae%{$Y<#nnv*CzhV{w0 zozW6!d7N_W)Xf?v%R=l6YQe9HM5>lwuexvC%(25;U!1Jt0@BLK{Z%xFGiG43t_>ud zkVtDDby(wb(+ep-t+rV_)~zOgB7Wq-F6O5sfJusMx$dj2R>04crZ6c8yFH^6*|x3x zliE6F+yA+!s}|ILd-{;hrD$Wtbq*4cVW5I$)tyAoXA6u|UL7G1tkM*y8Csh|U=AdY zGYG8=OimJLOHDMC=}8xr4W3^;C&Ui-cU6YVQh8h1=$hB|N(%Xng9A0sqqKen*i3tu zmF%J#G&34EyGF{EZ_=^!n!xej>LKTQ7+zVB@6EzGs#`3b6J z)P!MZfHV}rA+`VSn|vT%w-Z37WHS!o0#;6nI}6iXVuG&Er{Tu%$KDPsnZ#eTS`7CW zk8UZ~4Abh8-x_;D66ZN{8G08sw#!lST3NkH^UL%aKNyQG3e3K_5j#z<9R2Nn28XWH zvj$eI|C_|P!s*1e>+(jN!0@y|iU4(IbQ(eR>7*!d3}u3joG3(IehkXBI~{~qI6?X$ z_LUUnZWr5Q_v`PYfy^&&Z;XoFJ7!0Qp!KYm%hd(=jdcpNkryyO`|#Zr{-u zx!`sUAe+@YDGGIv(NoZkj5{zt6rRQWW^$(SU2vNvw|t76rO%dSSDA|4l3N6-;w=%J zfCmrasF%Oc5$(XF0vgtbwjfYN0V$29KR7=ajHp>@D#6VmTtAB1pGv~8bK;bk#&QqB z_mrP!{jmcyI%N!9En;~Hb4OgFb#T8}IqBopXC1U>D-7H;BMzH>Sw&@c)LwdGr5ZB9 z;rK|iZ<)w^*-~S;X^S{@X{3|94?HtBKmg%`P9h7NX{eAn#q1l5IRmTt!e4rpgf5s~ zY@6i6e;Iwo7T1%}DjxpUBRFfS7|L_*mg0^faSxx&*yUI$|5Y95X;(da;)XL$Fq zBYUP7C@%L5=oduEC|?n7ml}os$hJGImXYW3T*~PuIJcW=`~5ZIEKGi1>n>$`CzuRy zrK%hqdHx>g>{WWl9`V!u)?dP_#dCx|)(JR3L^*;8=rBxS>l@B={`)rJzgKL<+t?@( z&|sk-7R~;n&`AZvuQ8{o-L&XAKmMfgHdNE78;Pv<{YnW~2HTh(#ssOB^+wJrNS4Ju zo5e}(^eD9(!xDSO+WE&admWzX$NR1VlL$EK*0LajgJa2zhM|j9Q8rz5_OC1@dmJ;*UKt=>1DicuU`Q*7# zapl57+mxsINE@C_<~+sLW7}S3m^kF)=Vn@a}v^i$0x{Xf4km+I4YLI$5Z~7Tw z5>MUTUx?`51jx|tEXz0WD<8G+l*nePYF9n<7~zv|5JH>Tj!RrlrBQxaxLKj-*ON_Z z$jy5aMCa%xEVe8sLD4Id5R2XpYhk`bKi~iLQ0;p&GV52Zwp~i_-S%ioGU2|Y+i{8G?L~7%G>EM zjv~pM4Nk}=_F>%hQS2@ZX&%!0Z~!si3betC1?~Fn=q1C|h&AW}Hxe`>kb@&!0-9?j+u&4Fa?+3Dhq;sTNb&Q9>8!u!mJxP81%2JXT z9TWjo-$XvS;*ERXEA*lSJ{qHv>J&wQ*;@3e(22brec(Q%H94C`$S-%F)>N3CSvXR! z8sTGBCJm?Cuqk|uX!y(}dCfCA2?~XQJXQ!Uo9`(*qasL()H3&g8@f6aRM|)?%!O<# zis*4urCSlM2r(ZOl)1`RoxNX^W8rZt`|2iOelfJy|J&dg%NYGPnRSx4ju4pFvuM0* z|7Y7zJviD5H|dbOb7~pXB)KB~7ya2ykh$0T)6J}mKbeF?-(n#*D`mf-tjoYHihR$bZK@EduW@RW7h^$Wi{bKI-V`2ilu?l`UbY6{n}p*{ne~F_E|fi& zg6NV~%_>UNZ$W&L0jU*AHE*zge@MhL$h$VVe9MnTUh0^=G> zm*d1xO?Fo!-<{#8S}}I-tD}}g9ZrYzqT*|j-m9q;VRY$%6I&!NCPOa8L1`>HAo3mvX@ z2UK|XbZbXzMthI|=v*U>ej(j_SGGJNdw{I4LQ1cr@H(6e0^xed{6;aC-W@V|D6PW} zPwH}+opma;k=}Yp$&iWihF?`(?b7d*)2lhgppDYB=mdyy98%WQy4<*SSS=rmDJQ-7 zSg8K+dheo!Dg1=9esH*Af^`uDGkK8ky#LyAUiH~}W`{&rjlL@l@MlWhBz-^7oSRv( z0P0CZba={Vn{mclTrX_2aamF7B~2)V2I)xNq1>5}r@6$*Fd5A^HUl&mHIR zKDU60Nhzvw1?XhLvAE}Fml-k54!m-(whTk@Pa*#?VY&}6OgKM~+h<6I!$8SCQk$6} zc(5qQAniU;kElyXO19QH&&q#72w-pLgp6%;rQja6aX;Jq)BU8pFu1&T)6DdU#S>V@ z_prTULA^w&)QVtga2z7nz*g}Mdfk;?+P)rFIOtgE{hopuo>HzK-;7`BS_mp=)Nn+$ zp(CRH`sVhL6nNuA$Og5_t^7X#Z9tO0*DtASvC0ExE%c2f94c9jf{`Ey4|;6nKMUO7 zACFis2@l2{(p`n==WfLO?0yZbyB}g4#82X}Hjrz5m;OYJ;K|Ef)}-pT@;->#cZno4 z6mu$1+X8e;POEBrZnv5Z2^)by)n1~xhU4@8Jr|=hu^l~l@lFLU$%{=>Ey8TWMea|*g~9+a z6r&(No+7`c5PjEw$gu^kqc?@}WwIi93o<2&vK}Gt>8Y@jKB>9)CZ}_&lyMikV{Rd# z&WYIuqN!aO;*XwmhrpUQNA1}n4>7awRbbU3{A&`-r|f(Pfd?E}34KfJ_xDse94DoF z8>{V7_L&F>0CH|ePF%Fraa!&VXHAdyjfT-O5=i0P3rN5mqfk=qbW6U%;H)eiO6)8M z4ZYD@9+kV=(SAA*kRS_)P9-*_8J!H5a8T>Y8-*2pjf?Iyvrg14@f0x@dx{O=s<$(O zFPgVSh9vvV()gz z-|x z&Z;Q4k7T1a)DR+328=gY6Gx9m4+Qg#r!{}_YK<%9ha82-MJ39w0V{Hhu(W)6`H)}{ zJInOHNy&Qy`JeYF-61(IC)|H(q2NS6n{=+{a+Uc6M?43F&uWu9>qc0p{g;@$CmqD& zJ1{*-lc%ROxUUHQqq6)b82JAYmey-%K=_>{My*OP9Z5B<~#mvczn zOCq%YS-;Fqb6Mtb-GS(yEu17VU7c ze<^da!EJBM3>u{N$q#t`J!a%qRxa!{j|%Me|!0x$eBMP_#LKDPqp4&dCRzaD)0 zm+3{FpGvlis%>r(KKA-^$y)x*FT@X*#EvQ;Hf}6}wF zU)QSHk~r<%Qwh;P&^!1{Hx-!1z$aO=iTf}FsW&(mAgavvHf;I1r5El&Xj& zW%F|6kMo7f0uUtMs|+fy>`5-R{S*s`w`pFlGyG;oVpDdBzzR?j z_uYti;wDYd@&yW&wr_MxZZXt<=r`2oPg`kjDDD*(4Ms1V~Rw`%>^V;W}x{)ZCYiz+G+pPDx#|~U3zaMDI!h0=I6`1u7wnk>;}A`BGZT&NnClpvr!(3ak1||b#==3^(wMLCP|6M>k%(hI*#E30A7bVHgtL*-8EpQJ`gB%b9NR(lxq$yWjA+|W@ z*`bX4#gP^L0d%S2K}-?cT6(XWQGZdYOAa0o-tgsq0I|s`ljng*$ojg>114=^w)4i| zkb>w?qAqG#C7YitG8jAIl*Dt+;cD!C_c*~m#^~2bC60U+%4<{zCklq^0=R)&;LQ?OotN7_}T5=p0@!t?-N z(v#IJmt1%nQ3SDA^JIflEOoz5m@+TtY8rU7ap~X99wS5j7urF z?+}RnRzZ?h2E!vS1B|L~Wz1G3-XY6uYagl=La?NTx;>FzdQ2S5T zbp>Qt|t zMZ1qDzw2?`iqZL`Jc+LeTy#jEetq*&B5+is`huwtaPcyoO`Or$QRuZW{2o3GQ<24& zO8<(vc3FjPcp#tpX1fE3${~t(M8)~qolMIz6*g4NyZB$751Ng$#A^o<@`yn?2p;pB zX|4|W3gvFhg@UB;Za0fngImtq>X`_66A#V+Yve;z?;Lb_wT3sq#a%}2{$Ejiz(2#K zL&UAXwg3i=G^cB%^%KCATC-08#{3Y);Fp+zf(t(xuMBU+Ca!W_9ENtGQ@FqI(T0HU zxlh=VhanBP14GsBg%Ilgr3n5MZJ6*#)kfas8^hasgdgnlP68|bB=b(Wn5NhS7kJ1X?f)_MKbWf?u=Z zL7I@K=aj#CI6z&P^))c<{F$FgrtWbHeYyRhjHfC2WhNblwT(Vj!iZ>TM>>onM&v^0 zqbK}++nS+5vp?~d&{M)8zNe@FpmM5;?9}-*^@3DDRU0%DYVP|MESKakCA?@NX-sGm ztOjWz^QeV{+^S<6?wyCGhGS?3YM7uqvGojT0ZhHJ6o2%zVC^qWj?2;Knh#QK)34d|;<$lGTn zuRi!O^ktOv2k1>sU=aHzdotJ-8cLjPtUz>cgxe>+g@FFkV0WUMH{QKP;+IXiCQRwh zY=yI_!g~-f+nAwOlgR+n{R`x<9nv9=aqTI`(@7-Kcn85C(ZAV<{DRL7<4R%TkfUzL zYAXLn%snA6{u8u-{MG1YvesKc0m-6fPXv3C5uD>gjS1ycwuUlv3M2^?W?6*B(8 zggR&7Fs_!p$kUNdvh4zc0sE;!qER%gfTajrfK#Iu{^vF8sptjj+=b^Az%p*X%Q#cmWm{s}2XZPhDn zE4NN~9j8b0c`Qn@3X-OX_s{;Bt%e+ZvRUc(c+{}rcfQ9fj0IjizkYxro?UeCL_wXo zBfg_ZVaP!@_vo2cNUV|x$#?M|+XM=g!t?XX556q0+x$ZIx;VXU-yw8 zBmt>qk9|70oYN{`U&z7jMV5N5j#iFnJHwSGCW^iQ@{WBr;-7*SFpg}{@c!eQRCqG-zj?Zd}abVe=oc>F+; zMfPJmG-{ZuJ6+hK1o#l=_43tc?Eif7NdNWh#_-F7vxhvmXeSHo`xOWW+gJ5tyEztT zKE+4Q`T}OnT$LGO@!48+c>DE)-Y*(=*v|5`sQB#QP7nfSvnyWSbn2QIhxZ$R$Yj}q zyeEbo(wyu?z;AFVV=??W76TFjz5p~hBy3F{0-bAsI|@<%zL(Fhz-vs~XSMb=DrFQM zTS2>81@M@Dou{vAeb8l_F4@5{jROJ$B+d1&%_EySxw8MgI`dQZNXDTTxP-}O0kT3S zqtlluSKU#;UcOIpNRxzWO|u}eE&G!tCAd!g0s?Y*1Gd`|@bz4@=@%#WEtsQ=lAnZ) zD}+2rZlN^LIgT1u7qn~wvl#NZ$tXnQ$-djb{$y5~SRJ}QNWz)WG#1GNZgT;2X64>; z*lo8`o4s9jacbjyVnt^(ZyA6!?%mi5aH4Gi!c9uF7xkc^OaKS^ca`FmDS!U^&Cole zWr;)R5NliqI4rC138}RlXclqAvf;BU{z}m|_ibT%sRT!&^l-VVEm~^MSg?t^B~Nccns169eDA}!Hk2rB=hg4_w|kJ)jHbm%c{zhjcPGf} z{PLLp|79Qlt*`$cfAlaIq}iaOcEc-mbyT~`fD&+<9Vfo@OJc84`3Q=trvqI5i8~RV zEcASI?amm@h_{U?a9(55Tm%p7MnKv%{==E$>T(CUU?zt^$8^95b|A1rM)`57Qn2a1 zx{?Tmg;)Y=nu^d_S{CkG`KGn>_19!pG*)EmzOB$Y&y$Hyk4x9ge9^%19d9CLULoWx zRGpOn(*|TaV#;-z;GG>e<-45)eKCJbSW3wAhd1J{>gZSlvd=)!XFK<2Gr_Bl5-hd> zGDD~Skpt;>m2N)>=+w!6ls~QEdMe1X(q?2ku^+M9Un;+e_Hq3XEbd$nJ8X$M{TlKS zL#eHKod4PHLssf4^Yx_|VFTo*kkU{8E4wg-GBEZQ?j|A~d*oJkBXr|#^7giQHx8l! zAX6Pg|KZe*ES{A4Cm$H)Z5X;*oCyZ)kqMs59GzZH*a0cM6mIRa%h1No?!=Z& zv(vDa9NP(rfn*ERSz{s15!d&`14M8i&)+D-8 zCj933ev2C^`|HiG3o+G2derDbO9FvrrO);CSMpZVAN z*rZ&cM6)SbF_q6Xnt}s`qZxPP1nny4p=95lj0X_mH3h2)3Rt>FY!=XK;}KC3=a##1 zX!b-M6lD8I$?>Dy_SXjzu`9i0Evt9Mc&^cQMy1I|7ikJ91QtAB%PJuzbhb$urZjsP zHRfgg!`Ly_dK%>c^X7nWGVS(Q_!P23?H&wnM$Q8b6f=dj!L2NJB#c_vBIS$ipaX41 zvouQ5?P9Awp#IDJyEd2r9WKQD?aw7lLgrSTFgntFbu)nzbS@Gr?fA(b>4VR9Lm-({ zcKZ3dip71p8ye~ zX~Ca1UkjulpW6A`|L9p-eLwO%M3G7$LsPDMol)HN#P7XJaPM`nNPm%!!`Y}*j$vC<&3AV4 zZ6>gwm%c%GoJ^JF44#LEi=EyfSTC@d2-Hg*`wrBVFSCfsG+w_2LQoTDnlfOgk6cs4oijFfbp@#ji-68cbigb~5`+W(2R+_S0Qum%*7 z5?|t-CF-K~w897`>mz-D-5)Of(d1+_5ypE49eugCGY=BVJt%butz><{(OV{=g;i$_>skKst1LhF@|_hk0enTtLc|$U7#Gn&asp|-g|6GS| z&qdZ+6dZWIMh$`45nJ7^hI5ve{Yi~a3rbz_Sl~@y%Zhd^RQbpYcS<(1ifd&^NN_YF zwmsUr9IU$ekLDULvKq#cvxGjFrxP+K@lkAS)@f}9H5Gt9Q5s+C8&Q~oeMt4~v~GT^ zS=~4{OkqGln)APTMr!6FRQWRBB1TX69&xTme6`Da;KZqKWrZ;#>v_%@gr{=0rA-rN zw^nYlQ1B{}WZ_A}Ytz&JMjOW=K6RKNiqRS1G=e0ws8yv^I7epC0kc~bM+(};I;TG7 z_uT1fekKzzWK}2h!|UYFNd9?Up{l{t!KLG~Umipx#`)F&P$>oeu+iz;L_{X0u@_QA z(u~e}9eKz%l`D3YD%;6qT$N`f%Br)#TL-db-?OhW?V8R@;|LOaBWbi5k5(DYwtNmw898OUQ z#YbEmn_OkMU0|KQvn6%%bi=2(04K_`shAD!9dSP|DJqWtrhBrK@FV2zUb*41^_7C3 z^eIg@q+Th^M2T=^$5Q9(yq_uJxtoV=(y(5&i~q~Zk?r;vht!jiR>{k&?!6M{O)^#j z4W)c~mG^Qk)FfE?N$6T)xyk<1HM1l>IRT!N(?tYQ>1?z6wQ_yNe)%3=A` zz!xDbkV^H~d!Yd$>7X7dWKGWh>n4o&3sXhZB1yN1AzFWUE~0Wr5cP8pig)*P;Mqo= z?}~x>MSml{P4FN>PAeaz>nxqk4zG%&_;J=8c<}13*Av-k4g})M5n$o&WGtlB4A!a0 z*ikB4;};e*V)PiW3#{gm2;HoW(Xu;5tc!bI?u}cq27o`6d8DzgOnw~e5)o*eqYc+r z`)?zzM;?$S7(qks_xqcoUe@>I#dM0g$9_&$UW5t+sWnS8-+1l<*WCacqc+tUA-@H^ z*dbFQ_bB88@EP9zPaW^okT2NoMGsu8Z3QU*ZA#k^=yFtfkYG=@QWPLf-A(_epJ@e; zX@()eUKLx@yrY6WqnH~n8u!7b@u#mia_~39$W2GaPjqRsO9i1k_o9B-{-AE*iPes| zQ=z&GK(+nxO-w(FVNvoYOJZTV+?u~2R-#F<-4cUHKtpx-j!V-k;pZ{qvc)|vdqBM2 z@D2iN7m5=c@G+(lC%MD6@wX&EL+_|>4HN)XARDN#uLZlP#Nn`4E9s1^dGEgJTo2ht z(cFEKWkrZmQ)jLrR&&f3yZYY}4-j}m!_3ymC1?cI8-WFO%WmMC$(w!x|1Z1$nM^wF zD@`4Imni{+Ds>$kGT6Cx6RqF1iNx=LwG`Kq;edMHfF)}Ib1r%vTD*UIC zXFn6Y7(ok)Rs4SawB3py5}BgWWW4Xq8+ae@?a;u^4f?}r zbW?W}a~gm^?Y*eWh|zpJO9TaMs$_9?@J2pB2#MVBY9}dOxS;6PZ@OO(rT?$(Bv|i# zi?*n85}RHb!{AAu+JHyahqR0JZ|SB|o*0C+iz8|cB|YO4s_M~2B`ItD%TtwDp`F5r ze}bL!etiY+{CS@C29GYFIrVMgDk4(6abv4>+u!2H;UITq4oJFqhJU9pmT~+8TU{w# ztZd8mOw^n7D?L%C zHF-@Z0Q-}S91}NoKZxYSLEFXu$a{^*K}&4@!v^I-so4eg79>612YB z6;8xdZ9k#NaI>&OKB#Yu{rvQ+hpGrXz3`XO0}dADpYKUJ#4P8JX#e4q67Rmo97W(f z_HZv!6u`p|z#C6ORC3njRIbn$#W0#(;vfoLZQXj_>KzMzPgHHYh26Vqwm;Cz)?y-6 zA7x5%PP0w-{bcxDf~cdAwt-WYv2;o0y*}!P|K46UT2GZ$d^GIImiSgcw6?AkCI7P5 zR`dMaNr8XJSM2tnNWQP4Q}vPgQT_jvqG!R|?uNUiwyvEEsCGWO3Gt5yiRH;<8!HN$ zJ<;#qwkYnn%_K!6mfXQy32J^b1i_cAl~-OhKql|T0xb0N^cIjr?48zIbv}@8;e4^u zAvWlS12t^SkDKSSHspX9sKi%E7E}bcCH!?=UcSxz^F_fC4~iS`sQ;+lVjJDIJ=*xj zP#+RkWH)R390wYOeSGC72-}Nm;%IGfwKbWGWbCy2;>GJh`XLUFSY)43b(!FBx@NWd zxeCLFnkmJk6%fl%ks!I?(Z%q7|%nU}Q1Ww|l#st`wI zgr`AsP5+#96jw-aQaXsLF+!#5SISL^uqp>8AD4rr)^5WQC2w_5!X z-0>2(nEC%NP7nVqle>S@Xv4|X3)h-~Z)if3X!%#&W?`@?&dMh^`VfxHJ`&tX`istL z&1P-4c3u#zRb?tzd_vEo@AT9{7>F+=Q#@b(S|(cE!gwI;+G0$7UR4lC#Hf zE&L0@FsrtWt+dosB>KK*RGGE;J1_nx_Q@0A?L2Ze zBt6X5Ecf-I;FfuGS+I8Nn`8q8)HX1|8a?>oAaM9+IaEzR{?65HTKTUlyGKIzH2%H21^~CM& zfiAGh&tDp|@qg5{j6ld)SpC#Gj`@!|4@MmpWNsH;F8%x}YC>@As>` z581|42n8*>WiVU^jVcNpVW90l&H-3%5=T4B+MN2>ShlkzXsSstCGaB%ABrVaI40;cl{3{G!bJnYthq z)5O@n(`|Zx#v@j&|5TE`Q}hQ!v0_x7g409igzP zg#oj~0+j!ToCIv%$E*BOCNBA*&McvgytQGO6H!?`J?MHcKiz&J zzEm?V=qQ!8u1kWi0RKZNwP~0U4h$nZFCI`2p@$TEjV+o5q4E{=8wu46Zokr)Iq(e7 ztylO%`z$b}>8hAIJETBt|HQGZH6I}D1I_KN*2MunLOdQb=!SpJxZ`9rLg?E$!u`MB zTyPP*{u}0vZeoRlS~G@JWoh+zeSY?Wke0v>Uu!h}LD(D3W+hxbDnTG3t_~Ga68Ogg z=5I(n!+f)6i7Fd?_$ z?#6#FD@6cCletOM#suZqK(FSpzKt#!uh3NF&MA_b>>}n+&kw)vk3IV!t7Allf?eF7 z#IL)KN6nXOHEG1ut{1IaS)~+1MYA{!_Aq?2;igK4*CM`jDaoG$tM&l=L}~O1dR2|p z5kMJkthjG7-B%K>?BkpA%xM_e343?<rD{OunuB#Xu+axuU(Ry*OegSJK_s(q1g@WMDDBhC;SGYu%!&C+Jmm{?;44NFL} zc&#(c{M$`&fVGXp)+PHbb8h^(z8}@ae$SwIg2gU8%{N=0uoM|5t)Cze0dE>pP-vqF zc7hkOWq@`?=98-Y!bhuDzUQ4?OFRn^XbsTIHj9Hot_8aJUo<;1Jw%Yw|SmK5PdYmF`}M2ZLgCogcMbWLuki*WT?up!-B6uZ6b z`?~fntQ`53=jHnb&RbviB$W#U{>?IjLk)kry$%G|)h$%tEio^@CFob7! z!3+6AEMrf&B|4!A<)@JJM4E-Z=zs|ehlb#9F*@nC3XK(1KJ9m~Opf+=7Qu2X$=^%? zGhKE0aEfjqeo%vbrR}{b`MhRcJ;N<0B%YPK zFZL-Z1y+xAF)h3`!F8=&@v!wquDT40oFY6j-{beyqNb~VYN-N9q12(=MAGLkE&fK% z#QX#I46!|D-agp`t^Ya6_WG%6K+MPaZ#9VzYV5Wk+g{VxR?B4WKY+)Q-6oR49WwM* zKb!^P8ecRq3=c`<28V13v(>7{@$&t#6sN9p+*30o4|6{;$CViQq~`oU@NecCTmK5x z7Gkl=8E5&`ZfLE|09HOX&TZGkS3gAn9!c-jAM389&m--1|E)feFetOg1osCh4Ty*fuM+F39goMBi%8 z$)O)i?{sW)ctrPNuo12Gh0D{=r<;w1`_EO(agsVhEYU?vlQ!R$lHzt^E~yWqFhy87@`8QA zO7`5*hRhJVA*6_8iSleiEhojpMpDOl;^_%huA}&qt{*Ne6ju zmfelA>U_G4ddV29Gl8Z@N3t%jhrPKpbSa#y=W)+f?RahoL%Ruo|peXFmZAC3F^nZZ)8YnT&7 z@u54HbPZ6#@K)Cj=?zLgQe|lpb80f_@)(};`wHPLS2_GH)2*TK%Q@^@W?O`AaCeJjk?BUbl#D*glb9 zMkWJ|JBBr##)eb=VnvPsu26fwbjeB1FuI zvt)*BDlN@+|NqoqQk(|Gwoz)ohNvkBdyYoLtxJB8y8>_j`tt(G$ev&QzfO4h8{p8y zp=QUI{hx{Vucj!6T=fk?XtT|R4PMnlkmMFO3YRl|b3Fx*mbW(Q+rcusD1U1#>vy1; z0sFcS?IFGaGP%rc4U;NALlkie(DCpRlLlX&>l-u%=de|hi?P8<{xI{aruwbiss`37fSg;%EKW0 zd=8?mZ!;`H)5VaLh=-+l2%%hKe%lQ49D0 zw(u4-fLj}wca=n6YZyKg9~@Er@_xz74?Rg+E@d{E3eKDeZ2hK`hO_RO?Y!{3{g*qz z(}86xi&m7$UwZ6`XQ-a9#HF`(PF@)K%l|h(P^t&x@an5q5FHGC>7-hHDTcO$3_{!p zFKX=0{+H1}mfloFwD3u0lGe~icPRb9Kkaa(z-U2XA_-aKnhwk?&Ig9*k^SxmLl6p7 zg8n4QYCQjL%6Q?RtqXGbaj6ivi@h?5>`l|$#d?Ne5hVw&yW-SxDODrZ)K28d%^*jE> zC{~5Qg)Q7xdWNIQi3N@~1J^TFXyY5znPpBCh#0-G%75RJ8v$JmiFE4fpb;5=@$va- zUaJNLOJ(uOXJz#p=d0*gxe+RVoH{lFtQ!x%G%=BZL%k8>>XepvEi}MOeiA&3#zH--y6Frx<+upnjw9}rKTuWQ`=nM`WZ#^_ z+RS+JOpbe9&*xQ*RMcAer5rPJ(uQ9p4j>h4kv}qR#LtK~d+w~Uu*c9XwV|`&3Gjin z5Yoinfd~VSS5swlQ+EqU!pPUt=fA`6@PA>BFKb9mclbxG9phUA*p=Lh{Fc52i*K)^D2XHn+0XL0WJBr$l7aPX9Gpuj}Q5OxPgN|%5PPz z0z+2gji55g@U|gm-h(p23nQuu0;T`r_eYiV$gBL^0M_RZIZ{eObmNF$p)1pBKx=cR z%F)sM4Dn_D*0W2k7xaZ$b5bKaFDo#hEKs>3*0@(@1YqwMyK3P1>4}43k(kD{+eCl; zu#p(N7=n1P%^kweXy~d8nTIqSlJjTjrmJDut^BwnoG>K{S%SjYVxNIm$Wb757gi+t zOF1hy<(N!WS(jp`%YZ(1dO?0P`&=`VgABWk{cYRA+khhGeo}D#cZgR=0js{ifZga5 z$Jq^vo@hrE7X*{hrn8G@Z!+5RMG?n#xxYTEyjnAcg1c$xYLVUp%wnZ+4z$<4Omi>f!awu03l zvU1o)R@l*nx@)9f?`MyT<4fX7IpB?xO=5Q%F-Sy4tY$^6fa!17)4y-TiDz0FXiazoTTgzKp? zX5$|A2u?bVN$`PA)n_mi;D6x`+zL=nsrf9avzN!?hX*xf4TU7u2o8pGus~hSNF|Z`Bp(V_AgfbD{*uN^ zcVs_Dgp5Ds~JQi*8u_$RP zsvhKKt(Df;y$r;vM@26N&QVnLP@ci>n~->`jcaTNG%!#Wm@>TA z`^t%qM=!e{k0gE2rR@rZA*j>`R1gcIiYYB=o(M|hB*h(zEo%i zXn5En9>$P(VKYiVmfVWK24UPbLs_02zZFeRgC`qr>vu8m`Rb;|9g*f5(QqGPJ^Py6|d2_}xur6=|hM zA>WA_&{Z`FSuyJ{CQC2K^+sD+T5ThJqqBHAhaK+jUE2`^(bf&CO2qE02QUeR9{hzn zZdf#@zpV;|!2TZ&S@3G8+AWU7LUr%P{+fETIhvgPh!yx9a6%7#bif#ehz-texGjk9 z_HW)pGqR4?^U0Jk-tpa3AZrm=9-F0BAAW_%8Y*IbD2pi~Hg>iD9Uj4geW-cN5&6M! zOqJvZ*~t0`RnFrQmOT`P+FI`JfXe&T>$7<_Pqp#ptUO`J3UAqK3P|`1;))FhbqsKj z`yhoH0dUPbzK+41XXiU5s)24_^RdE}M;egVUegwmsg%uubGojWbm+Niuhyl--F^*@ zQc`#%4{rfoTSx{8BnqD?%(`>?Qh85^nb^X8a^A_&G1z73$Ks72Jciu3bpa2M+wl>` z54;nIEOaduVrjT!n$5lnD!l~m zq5=J5Vm+g^9q!2DccOXReIO>1pa)W)20ii6tIroo0+`au9H(zkwyBZ^fpWVU1vPB z$q*48;yfju>5+Lad_DYgr^*h8?HQSwxi_tDCO|p-))hl77CdJ38F%Bwc2SRByn;Q&ece)Qs(wKS_0>nFD0Q0^pi;SwD1(Ux zX4>Z!_CYEcC?jp9>}>)r4M+{O@Hg!{Wt_!l!||ICNnIH*628HMUUJgh6?Mk9;xkNB z>M{^%Q42RjkbnRH00Ie60000d0iFZ}(IvkQIyGs6C&mCdlqjVSg$lq1t#3B;kA#Xd z%9>E&0Ed780006BPyhe`W&xfA3DG6L4hO@2%%}r^e3i;PS+h|GXk9unt_Bx%5iPU0 zyj^s#b-Ppn6O$S*0x40kMxL4>V_yQhlmTy(?s~Vux!7e{>zzX# zd;(V;AlQ=}LRK?0PyvAe0006BPyhe`N&%h(4bdgP4qsZ3*Zv)UK4*IZ55>M9=+!OW z`}Tf4quA4Y=lEGtaiCjc!DkX>$5>vNURvvi;K!V8IOLhtYdtC$16)?Y0CB(o0006B zFaQ7-szI6rAxsx<0fx&gnch7FbfB_zIzQ9%Aaf&xb`7U`kmNa58D$8bSq$IB^O2nvuVVRD{-G|R6 zVZ0tKvG3dau+|M_R3LYnyv<#ZhQ%Z_50#v`%g-XfieqH~@_U+GJ0fEwhti#G^Mbt# zJ`;37zSEs+B61h7Twr){(0k3J?(avIjLxU7B)NS5-JAmyKTBI;syLOV`i(GPnOXh$ zjNe#)C4LMM`dUw2ujoC3 zO0hL#G3&2}EP_f-!T3*DrSs2PFKSaDD+cnQ0*>bTr1~_(ym1CcA9qw|HEkfaku0@W zE*z6HuLAK5;padrYcoc7{L;~p>-j)Ig{=EWjFlhNh_%urg@}O5!o-ec!`P7KnKJ2X zw{LL7_?{U>!ramTlBm#Z4KD`|e;&MEnXZgn!p}%PVBYANMUb5xJqJWSKjheVX|10s zh|-VT43RFE90T1N+U#eNab8hppCwQ690&7#Ojg_L9tP{u|6r3<5>XUG>!_~~=7%J4 z&wiUfg!fC8X)+=+9`sk)gg9i-Wz47#ECOc*WEGcxrCtyRnp0!Az(*dgN4`QO7}=5H zDlY6%&Qs%~AaJ-!DYslss_b^}Dr>u`mt)FLXu~hT?lu8_-*t`$qa=!O>KwvX=}fhl zpRqpp{USZTQ$7uAMuPl51TG8YL;O5nKJ*xE`SSXhZ1UxA)l~kmR)YQD;;6PYy&9uj zx=X|;qktk0(giIWS>ZmwGe4~g?c=}~W1Z-{?BVwkhQo2JzC7ofz zRhBn%ZX252ZsXsq+01Z=V7~>AJwX;`rr2kn|6g#X3ov-9s8pC&g$Agvxe%Z!d~Bs1 zYDqmpOp_$*8r}Mfvbx4d%^2Jk_UI<;KX$E=2%VKeNdS*PaKCSh&&@E+ zZ^HdBS+Tjk=ENe}d(u>Hs{O-EN;ho8yh70yVXk(pdFCx;@Cu;bv#UzYT-cN)K*BqE zww%;>GPpUQE#YFG`-0B1p59N4A;|Lyyl{%>y4=Gpcmkdm z%NhTdQ3%%oRUTUAfv+Q5@$!`*4U{k%4USjslGp(}mQ1ROqf^sZASg@RFp0Pi?4rZ> z@xw%hJmX(vygHdnD%WOYZbAj(boQ>dtH*|O)k(ze@A3>TG1WJ0pKZoEL*(*TZRHhy ztPU-Ana$P29NA>TRsxnUL{L{SBMO(WL^M1FaOZwnWo4Zvf;rgC@a8nXY*v$c~yDUmpp%>U$^DAXdCWC?pTXL8>Dq z_n!kSen(P7RhI2`wjCENL6J3hYkFsv+Y=R=O=z9HELBo8vWW_37|U(0JGHeIJb#2h zXT8b=2G?BS*pnbO^^mV5MH$Tt!T~oXz{lM?1L^FloNqLiB0Vr8pvLs5=za_Ef{Q4} z1>_-%#1ddE?V>oJx*{qSPUe;R*=;+0_(GoG_$0j1HQT9v&fniH(qdO)OWPcIB{U0l zKpU4b>voXquz`NFp$E8)>d$5|)*Yu7Qzo_+@wWm(T7v0tsv=PVQ(cwz!`ojV8zF}$ z$JFk`UZ*-~(4B>zF_dKTobdw>68MI=>HzEpz9{9rF>F-^^FOZAk5{1?jA$Pgmi8C`B^+f7W7 zhlP_~9L-+U@3ljbG4^F+RGqw!m-G$cvOOOwwJ)|wh8y>JbAvt9kZ)fh;zr6J;IK}F zrN(0>8DqzW)WKxRq((X$ffJNP35g_GC;ZDxC=`O*>=!~8Ow6sf>#GJOZT!KTbld^i zzx!(TNZo)FZ(8g{|CVKVXc3n;xE?1r-c&3#%Giu`ABv@rSRI~f9*2|5P5R%RvVY7X z5@vPrJ60rxo>gC>qoNU%BnP@b2i*}nZ1hoz1zDsMj%_{dAr(2>V^J9L4e@xB3$J>sG!Z~rPFsk>g6^u;Do++x)6y9S- zSKQRVR*Gj735v>|Cim@z^&+E;-u8E=Gf~_ANOkL@$Lk~1Ir!l$yPC|<9H`Kv})7j{3QJJ9I879Ek> z3vB`ZWzfcK!!elEG4m8rH#hT8u=%HbGaB^M+8~9YR5pKlE%2iTfs*&?DLW^Ge-m*g_@eUYb3l)y?oa9LYZRp9_bw zB*+JJ5*qOf^& zMBalH!~5?1W*04s8Eyy+gq`XbyY_+%DZD^-+s47b*6xVATudhe5MSx#T@UbtvHznPBP$!l4DiQ>K4$nj~Tgj)lM^{v(6_wgJe z<=!2`^A*r=aJo+NI9xSPZE5l-aU~z!z0-PvZ#*7)TuYPt2bB}&z}5aE9I_KjjGcUUfHjMg1m;ryT?%E{WPnY^wC`-6vE^fUZ% zE$ed&)N14udE_LhP>75`{{g}ND~lNnIF8r5ItQEcGP!ROh$gH<%OzPy-5CZkn3?xtlzb&=L^L8ZzLIW&~ zqI6#^MOq!6W&jlbd+vfO`-jKpHWx0)E_8ih`3JAZL?<#b+Ba{wxato8Fj!)&UbO$qv34^jBxe@Qep{vV?hS3rpV!uweqgfNbH=K}ZR zGo}cIPI_Qq1I_D^AD3?_w?O@0!2CI(Daxp~)##@S-0W zJwoU&`e(l-1V3UjzgixI)Ob0n#*S<;$IUPxo%l%_UV{Cqx*P|R?8v5PHgn=t!w*rT zoL@((GesN7rx|-~|BBc*$Ex}lrf2Pi%VSfDBZh);N9)=e z;WfM~5A3seR71%`nl#)pwd`F# zhB&@%ff1oeB|0tJVcglm7n1WWOJT%rI27%4Jx&8O#Oz^GD1<~NZ$TkeiC0gs%i zCi^}OK02Vwh>8gF7s^Y+01C{UJR( zLjZwymETDud9LD{yJi!FRPNhw<`0p7SRkC(l3KY2_)JD(JG1m@=j0Y?@`cOnkWJrO z*7LMQ9aK!)hHL;moUMr9aH{(S=W83s)%o!Z6(rhhBtirFg5DYFY@|8E(;;4Mab>Tg zHBePtgJ57dhq$^6M&}tDll~=1$G;)qQ%q4iMFX8w#q-blb`Z~9A0u>d;;lNe&q}l1 z>o_QF*Ux$#v(;ph57Ldr)_q1!Q-zKZrs(bMorVxqyrB)y(JQBhd(00+TfS{xCh#4d z3*;4hZCh%p9>&e8EBfY%yS|s_|NPCA;7%4nzQq_~V)q-c)@F4-YU`F5a3K>#;9-8B0$273P>HaS>#n({jkOcV8`^LOMoTh zZlG0W&ZIIm(p4uHj;`M14VY|s@%sP~s1YF4@&m6 zzTttQuYljcz_Vgaff!QNVr#hmUcDR%?_kd?jf++{w0PE~I)FZ6|Jb8|j@w@fo?pel z!?&*MlR}w35u-4ym0pT&srihw!bwCSrH|&=5*$H)T=wh9lp^$sWhOkk)-tF2ZdH6V z!y3ALI#oH$d3JphVI03e%N!Ib;ZfC_-jMkX6h5n@g%_AGKZ=V%zwOhU*?b**$(E2(%>VB$hBw=ij$fL z`EwWbb-dj4I=fZ4+v;A~?lCYBmQEsW8PqcDHcMs71Cq8+MI%U#ci-8k2 zplu8}n09_e9VI}$ZNultl%v2SB#B1zKUF6%%WIg;;M5;~UizTL)`A_Y7oymDX=q)s zrMsER;KgK?st%(9(S}Y_kL*yZcyrpFU^3u~lk=uuF#D$W24qP64)mJf&k^#Dg-Cy< zIqt?tU$RoC`cpBid9clD@kauD@YG}ek1+CCBqy|!0H&6y0FSuADgF#|q2cM|UKA45 zCW<(|gRSYst&OE>Z_GdrGnm#QO>MYkFA;zuqJQg4O#w;0QdjnD9{g?zW6@kb#3r4? zJNpekG@rJVT8Va^?=T*t5g46b=;0Or{@Q8)2g@HspJd2in2jU_q>4wj6>?ZPAz55j zR{xYOJWZrm1Y}Ulu=EtfLH9k*tSx~ZZR0R`cJ`L3LcMEC>EF=!G9E5t$Ix^&s~ko5aU_A zI{JyF!iN;I0)*{V_rN##dSgQ!vhS&5XPV<#AAIkG<96TbX$_PhPyAXy?|ZKah#-3! zJtCT-?LaU$&ibfW_%FplqO{wghJJx9-GiwXx^7(b1`qBo88rR)tXY;`h@*hfmeT?v zs+=UX^^(>8M&ufron!_Ha?nY5o^FNO9uRLwlH(Ey10me=Sq{?}yg!`a_HHtS$Gx@6 zABkOq`Bp!Mt=)*G^m_OJ``;xxh0r2xwak0?ifQRD_0Ca}eHXJ8myu#{Tg`HS?nYx+ zgnC-JZFhvO)TP*SZg zG8$corO`LVJszC*v=|ffpnJV#C~LDcl!h)jo7ngq-O7@t82*Y6(d=&7W=SLAV(fq3 z_aBi~Nuee)4tSr%1{47Y#*LvRshGB!s z1*JfK-WjBa$N%CW9zY(IfEhX~oA{v?(9aW!Prt%5pv8t#E5FbJx6;(6oXGHiy~qJ4 zLSZ9)s+Ep(73Q*&({-#o!a}%0)p}JVe)>!KQ?z-r^DN}si&dEN=KlU`ib)iZS=B>1 z!s5f?{t9}qlzS4>Ys7_UDJWO~Eg_l>Szk#0zX)r=xu|fSw*UGOv{++0%>~KKEo1`q z=Bn`Om#pC&hQ@PWRibv0hFvKXA}YC3C|ewRiN66sxL+0}dvcC~+>!H+Nr zHj9m2IGN)JHMo|nb<0)bU;c?T4sG#`!H-U@ukLp_6N)$z000022~Yq40k{F41{J1B zZw@~+lXV>|UO;rUZE(B&fO~&AW<~3*2{-tS&c=0og_H4MrzzKjj)_4%&kO(#X{=x{ zN!Bnhhihq~Yb4HEBbTg|u>!!TyaE`3>A>1v?H)9b(exG+YKr?6M8$9-I;f(ood^Rv zFivfR2tA=V@-mkXscXo>9dusSO{4Bi7-#w^B$uRoGS-e6`&ESu7^kPTW(LD|^q~;_ z@Un#?(jQ<;C3CmNtFRTtZ3TZ^l)i{_|6jMTGpThnvo_RFKdlkxW-<6SuJ@;-41<_B zN9E?@tY;;#)dt@fRrXR4X_qibD+=9i-VdmUu1@u9jg~Li|9$MjC~%EzDhO$$8cS_h zlezaTzi1G&h4pjdWTH~v$8T!>EE86_b(RlUuEc$S5L(JR7gY-l zIDP=+cK4_Zw*7XlS+RSoL?FD?mM7!{{I}!WjtC0CiN5!fu&+@kPT{@|dt)$1CD|HU zo2+y`Tnq@x-nRWtZYI4qM_tU))+VrEP`0|ryKWG-j~MXNIyYmgg59iw^)!)rqU+7R z{n}i2ltz&f2_(LvMZ0Pyj3^-*6!oTy2V#R`8mhj^OC zme@GvrUv^#nqh{jH_o52OW0FL;A6SYbF({6QU$ybGyDm1K$&YlZQ zbh(cN){^VRjn)m2%U2|zocvSbDkLEk1QG%X6f}Y|8ZN-wEn618TJlBVoJdXqQo!+A z))e`G_~{Lrm(=_Z`}mK=KmW#iqsQ?fqPkl?f1NtQ40=CU#fHVQ?&`z+=vJFMGg<vSm!_RO70ATUgY2Z(YiopEwl?unpDMQzM9>MlLg9QY_G3wc4C6a#>I5hDZW z4L$RqZZjmr#MYK?&uv3^L%UHq1&LMy4^vH?QWx#oi7ow?uZl?xYH@*zyh7K)pVV9>EB3SR@M6sizVt`Hz9Hc~_ zd)y*7X+Z!fCJ-}OiiD56K$S{^^@}2K#VYpiKNmjDxbhvfDSoy6B{^Gktx$!8 z6Y3!vPlx~j00Lso1!SS1EJQesw&Al}iIhTEUgF9IVfxsAm z$=a^XTyf|>b`cOJ+I!IzyA$hT-8w8yoR*0pLY()@bQ*yLin)wkk`Vz!LMQ-5J~jT^ zEY6|~<$H6-gXHv#4<9>-P<_-W;9_;gQd&S~N8v=Vh2TB7931^EK-=IxpzsLn#w(W# z*2-0Uz?if_nCMn297a9Mtun)#1-GcWqGH6tjkBqB6i`1x8iU7@CPJ60yKD3qFf+)1-we|A{>rx=Y zl`B=oM)kmd%|fnF9_pLpS61GXT{<3A|9BpEHBn>H*IQY0R--#6>LVPDkBpL;_TMIb$?9U9Vop<%`Y z>Ndl?aWo(^(zb8Y7GQWG8WiP{j>Ae3m6a;)rEOFIK!CZRq#_N9`z~5T-C1MpuX)S1 zt0VTF-#TW>@q)Wj5a^{oZ}eu5!!?Inq3~xvx2_8Lk1X~+K>}JW;epRkFmt<0TjP+N z(b$JGm>sd=Tlu_etr-Z zI6_G_c{*MMpG(pP%S~A(3$GDF_t8v>@Rel{CwXJng)}|gD(MDXEtt7?wF4(I%HOH1 z8e{<4>$6GHZ=pEG{jM&y4sXia74&wq3o|8l!S9`hN$m+SohDO%WcjPllQ|k1aZo@3 z1|r25=Lb4e<2`t(%Fq>yf7zT$io15%kldv7AsSS*o(_qEAcIlPs+3e`wVMHWa@<0^|LJFj*-G9*@5 z4yaMpxLdtRUg<_p*tZ>N86-taMX@eA*sHkEKII;;2;EIWgNQq3e6lcFR9V}lS#y?I zCd0YkDbuiG}Ba?-*?4> zE(bhl`l@cQ#i}cxm8d^jGwt@s#35_af=_%5&f*F({uDHd2J64WM3mK*QY)p99%zko^OL3a9CgMu5HZCWPG{){QyX{N0WZ&vqPa_Y~iAsQ6TorsEI*r-r8A`FD*Af>TN zkSLU^AOWzm@=h6lyH!fdh@BlgR~#v>{rYt?R;0o83h8yQ zMHUNKHe5F09&~}zJ@@u+DdgTj=7;POgIE;~Mi^Fhs7{8AZx1!h3ctQrbW_xm0;l&JG=O;Z})Up;GcTQ5+XkenNORd}(6cHQ%vt*XF`K`(~SSFR( zF)VsBdrzZA=ZrYyS8c)q%e7M7-IvnNqid+Q@gW)%&838lqQKaQRTU2PS#?0AKqW+| zSm-IO`u6x@5e>3`7c(VqwX66}DFkujMaSo)poG{zL-)N9zZ2EriL_oIL*|DPd4blCVl0DD93J>5>dsUZH=jm%!qFZ}7SO);U`pHIF$6Y;8FmYP~t{ zY!H5hXR&0+YzvXhtiODM#${7e$U*#C)MKjr6|rAL1pPb=PK`@a5^QS<_YD_>|MiuZr(*J>`5wV=bIKeAheVxI-4dIfDfhh zlCD*wyz7xqZvtD=0}Qm~c`#;%MQI>isq0MHX)0i#3!ruY03efBI}~U3MH$bLNK9+6 znLVxW$c$8h!pgn~>&wPIW9?gSKcrdUOEXHq zP0U8mH#J)nGBlk++$PlC6PP65;pr!%2rYk!DVZl7GmNy4R!#Zgx`&I`!jIJR;k+(l7L?~D!LM?O4Ukp zT5P@op-o6QD>FfOVPwFdiL*Ij*s(=M$80)!;A=f2rcS7r4?#X5Gfz%-yRNao13!y;RXhI+bjGRKl zDhXH`iAVzE5=!xmM22@c6N~-rKZ?nYwA)*fxckqKiK);gcs-mu2lgvv3g4p&BLN6Y zZMa*+qKL;%dRF2i8Aepd0HXfK(F6;`c_C6)Z0)sZt66(=^P-oW5X^qXoHAi1YwRQ>nKSe% z<4(D`bxZ!H?-YzIvXa*#7v|OlplpP*KYcI+v=A5;5w?loR05oa$e}RXsX-!#rgH{K zobvuEDU^a7#$$Oo&$-69mr+*GV9*~5z{%!b>Ia~M z3Y_gXWOlm722*ieiwn<&+?QMv7HBgpBp|;NjKbnq=T=+He%FbBnFZ(*jabrx8QTnCJbn#Dlb!K7&~uX5K~DCHSOc$7re<$oe`K| z5s$os&zVXvWy>_n`Y+IPhlZML_5?shjlN>@D-Z}4{8|)wHFx;fCzTbL?8quS>|nHw zWgs>rEu=Ok78Ri2kI-By1!a|+Nm9u0ROAJHzGg@137DiDs*sj4ap0M#>qonGe{YeM_h$^lx5bL`6nPKoD4eN_G=GeuGU*n86(JzEV3CDIqH+ z15RqWb(8+H2l+eYd@9;>3K+^zq~x8q9nhp%@^08qzmgUM`9P49rid7@Hj#omN;(q^ zqChS=&09z5(i)oyrTV`QJ-HIdR9>deH$SaA^`+|;wYe5OItE*pE=DU#QbW_puojBZ zMh3F+0C=unY2}GfJz$>~RM>aF7bjSZNwC%rI>Zojg5%e9$w`TPO~E;^QcVyu*lVuI z*+ho^F|HqwoO#JT(xrhXQTZ0{I?f)Y5Q~4lKG|@i)r9i+ z&a3PO!vc z1*`O;X6!qb*5xiuM@4baok_xRb6AdYWa6LOBk+`$mTI0@abDC(@98{b zjyH0G_3T)8a!onEM+0!L9nx1QC>onWZ81w@bf?J^Cy_oTw*mA;pajL15|<(YRZ&zn zQvhJAM9>(Bb*5NTo9xzjTpA84d;br;O218YTSn_OloO((%?=wNFAz`93TJSkm_3K0 zpi=?T-$wXg5bGf7F@vaB>Wd^_2A1ybqRXsp!I^wwbiAf+%lM#NckEyKunX}~yRHN# ze>$~QUpiZQ(4CuO-p0!m(W_}a~>khiF{0l18 zKJ$0;(He1VK8~fg-!T9HKM+J@d*67Fpp;C(_j*jq;$uNI;Ck}V{6WPt} zH+@-*cEV<{+L(ai9sCiD6;*#m6%OfPe6uLRWf(2S%~+;)`m}8~^+J@%OgGXLY4cCL zOnU;G^J1iR?NnRpdHHEFckkB2VgV*TvYx3*c(0|T=DVPjfjjSAM#bWm?8B>6cel>_ z>Ijo!?(sh5s>3>xn4LPb6tc&fQa6TraoWjs94W9+K*idHRRV3tET(M`WH~JkApuYa zCIioGDj-+@846g7&UyZ_ljai(rW$k}Q8{9*drHfuu_ShHBa@Oq_uhC|!frUsiLkv^ zfta`mWyLWEf#0~Qf&mFnyVJO617W=_3;*q<+{eC*_qErK zVJV0X=IGxY4*QeiG4c9~t4Cgr)1AHrR-~?TWhQbaVw+Y`WinQPl%jOG60z~CwEfxUM-;y8u`S{zLs7n%z)#G`i`WS!HHla=VIYRg7r3ekWwp~-*~PD(X`>;M#i{FI|c z%7TcIW_Zh5L)Wd3uh&bmwH|zTxYl6(fWR+3NI>NJxT{@VKRes!cgxRJ#2&33Aq}0Q z;>(WVRH0iA{~9-)j~NAWIY8iSSuR5Y!IODmdjQxh2a>VnhRcYNhEYabe|H zp@%gyW10$wVhXZPd?#X_)HJoyY-q^Q+3#U$nR>}ZD}$jES<#!{AsQ6rrIMo~povO( z1F#BcSy>7V1ThLd)6f>O3$Lg)H&9P1?Gg{{7ojA0xQpZO?1(Mza0a|Efi zhD=)6s!=f!5&()B%q?gz0d@^2rX;j^erY?GzHWUz&9eRTh_{Sm14^t-kV-r5-Nmle zk*&q&kVIS9rZ-NKW_b;EQG8)1^@pM!q+pAG8k6KZ`6M&+*i1`g%*o^GrbqqyZ205o%mmt`~{m23f6tQ7si6aTZT=ZP4*&`%af$Qb2I0Norj zqJ-fPNQog#L{JI!O<-)(BjIbu(J4JN8WaFv(rL+<%9|!*sW`JJ7I`J*i*-tx_BC`+ zD@eAm-5Kd@-urTHk<2xd7PuNbmZes#<|4URc?t=ItPCioF{wwGA6G*7o2n+4 zdT`_Y>G_Vc-cL%cp4^Fg=9x`t2JcTrKpi{uJ6v z>AY!Mm4}Cwg8Dd)0ca6i{UJM?kUa3ccSO){ctATJKrW2V8c60+f+sWzzYfqMOTy{W2awPuX>?9 zC7W#Za>SHWV=Xj-q-7*yL0O163rwk~aQW9}uM58X`e|h$|ky%OIEDf9F{mBLOY8O-6_#Tb80n^zqcp zn^SCU6G8Csa{}=JU;*BjU<-P|e&s)Eu|Pd~bg2CX47T(#b$E!zZiu_(sZl4ys_9I6 zhK}HKTAwPwvHn$B8~*^LPXGV_0trw600OfCo(37FNpB7rx)4n`0<=k%zlxFo)+;^q z<_KXhIHlX(zVdyP&6?%6?m^LEvjz}zZM>EcTCy>k6j|m~Z?Fw)S_55YMz(}n zcS!S-pa2IT+1dO5;6e`iNrztnrD+_}i!WYAOW{MXgnAGHPoiO%F5E8u^4aUJz~VzO zIgbL9*e)Ktth1KSDT(bW{+jdTR6l3S`;&>fRiKg&6jC{K_<5z4uX3gx8wl7qlZ zf{Oat8$kcU_p=ry1E6L$Qr?5pcs#j~rR83i|KFp>x8R8rMT1W`1HwoK$VHPqXVAF( zRs(aMu7BsM2y``IIlGj1I;Hn*$ro2JI_g2nShF2}ej=UhwFgtIYd^jF->ME^lZ@Q2 z?ml_;FD0Z75{2(bR3^1?j6Ku!uJj;;E$)1RQcnD8{q6LFcEILlY4qL!K`w7srZI!H z55&;9h-4J|pTyAi`N^XU9w{kr?pO365?Gg0j7-o0@2&%;QxY!|*`7j^OC#f^#Yy$2 zuc}(>2Uu3WD}8j7u(aHouEDc9FcLlJ8?r_{lF^HLCRIVV6yR> ze`VyN&$piBHW@w4YAVmc6 zUG2k}mRvGd<4!d+Uu|v>KEQU+%BkFSA`9^t(b6lJRA&>h%O0leXK(-j00Ie60009k z0iFgOrb%xO7(r-XY9wwLLN7FkpOYP-=|g;-_v@KxlAT5oOTKdsP}6;Gxx2b$40*7& zOuzx<>H*-Af}-bw@7q!By@UorI-gpKPb|g$*i^*A-7f^5*(Ioe;yXlhS963uC>y z7eVCUD~U2fm1q7W+|HRMy6`~QNq#d;gaQwe5j!FA`S#W1IlIr8XOd7r;0wwU;YYE{ zfbQT$oiA|4HYoSGUD9CQW$eUE2H_p73%tGnYAf?_hpudnCdatoVJa73 zNk#+_vioEW4B)+QYKcXT81c|K){`o@U&>n%W%oY@;toiBSV^4dygQu|WY)C7n$B6s z(GT*@i@AHc6E)|qkJJV`PtKgu%~@w$*hN!#N z2Qvo-{s5|NO5aU+Tr=)@ib^l@9+ou?0G-LbcpnkNL0OQYrU00#FY6;n?<)gp-0#F! z*j3$>hbz{=T-6()0-S*c(r<9RK2i@@SGT29z%Sd8HEsjQV;GmCRQYNs6x<%PV6?wIIxsKytM%h|>B-uF^F zcydFYdJi(h!_msVgZ3T?TK;C#-?cl_Z=4+lj!2&H7)!D9na`CzohN?1B0Y<&`N*hb z>A%MST4rK48Oz3v)Z$TJ;+HJBHFqR3+kCarfcnc3(Y?6jDit2A^%a#+09+>pQkwN% zFNbe@3_Cy?9*-cLC95P5|9I3F>YctdKRI51=1CEXH{cbQZn=F0%)ps!fD#OcB2FNV zng;g8&(EC3Z}s=ea?D^F^T!4rDoIs0006BFaQ7-89|x`F>D3f0h_OP zTj&nco6cAoi^ePWoC(<~xRNJXD1oy#ZRi;(YGx(;kKQ?$(i{VznZ5mqzMu zBIh$>tus*|%zHeMS#ZP;Pj<0eNTwEs;fukS!TXu>gt}Sade?HNpGVH zUk$2j-=lEUk)_um#7(6N{!&K+(^~{1yYBOj@k`_@#ZBDhRQrX~>+#PON5;bxTRHy~ zCUT2^1GQvzldjNDHN{Asw-G$eGpD7W1~$!~%bJ=C#JgeloT#TPW^q=&93mqOv9RL=sP-73+)0t(aNSZ{`gmJ@J0Lop+f7kYSpP6oyfYUE_G5Vv6^sSHc7!obpnn!*|kL?#_smIlc-9DJX zQD71c3g-}<4(ReGR$+U>js3&C^PV6AkZmMj9(B_t+2)DvSW#ehW}bSgb}gMiC`hF*BT+fj8$4apq|XB-PNv-cFQB+;!gxVPs)_-~%>i z<0cFNi8}Nb_*#g%D}})`Qa}#1bg9%75f??l^&T}Tehi}WM^z6UAiveQ(jAX)Y0zo7 zXxdyN=jY6o((x01mf*I_%qC0M)HjY3Ks_<|LAjVdIDr`ZvgMf=3paKPnJ;VRu02R+ z-slnFW^FG6g$eiX-aESJTbn;?eecHeVzj4Aped+`^IQ$?#0H6vd&_AuBV@D(94ZR9 z1dF|Va|*tpj-^b@I7z*N`o9%QLb-bZz`Ugnx6gwGxw0Rm(tBo*6K^2cQ$cIn1yZ_H zEw0EVHeJ$9BTJ~~*%3~=oahxe3TadVqm-UT-Krh3#+2q|3!ph$GL(0$M0vT83rlB! z@4Kr{VT|_+IG7L7SFHVEMX^yd|ICRZ%(YlGU@aPuS)^Po9`Olpe0o2%Y5k;m+MCg} zAg7X!Wm{>T_5^``JeSys*+Lt|M0jmo?==oI3pe=f&&(_mzi5?rV-6pPYnPYz*B}R& zvfLMCY2~be8|Cp;nNzvFl4P%@I)%2Z9|?PF4iW#)y$TJ2Q29(lHt^daA|L+gWi(3L z4E0ei1z+&K*1`MeeNE(Z6pMaW_igf_kY9@bKMM@#G8RwJwG3}SAa7E84+$;lJgNoi zC_Z*diy^|5$c^Ff7j#zUct8fXX$=R!^8N%j3>fRGH8^U{xmPppiY5%e;0(|;L&R2b z7H1}297{J%H0!v42XWKUDxGt+B!8OltHk6G5=R5jkYh%S2k~kL{fJ%{DepIT7@~MA9-ITt9{U~fn1ti+ z3pK0paZp~AZxL`WSv|g2bxX9wD=auN*Wnne zZ#>~*0@X@!lJg2hvOo>oo)7OjTH!>72Ry&|=k|KLBx9Pguh(U;UA^Hxa#C2QgL0## zu##CCb8DmQMYcBU9Aw%`gox5qt77T=RTf__R+F9kjQDUSMm%WF-c-PJ3<2_YpO_j6 zi;V-I`uc1+JPek%{})9ncZx?mitfhjDfx7x3p<#&R`zGp%5sS<7jQ$;_P92!mt*x# z-CV8nt<%-500(q=gl5J*EM35Fd<)N8usPkbdH)V5LH?_5J;E&3utu*M4_k5$g961V zQ9Y-hL^y!7?37ZGkGWGmYwuPzV9o;Dpa^Aj>BT5Cdzui32Aq4B1msm$aH`;7+|ZvS z{0s{Wy)o_$$AU8o^tg|Djff?+66zhx<$%7dks^0qJAk;7Abm9# zPTpYB=H}=ChQ|^T`evTnd+q$eZIbkE;+zN?w~Zhi*D}A26W&@-;qO84keMDgNBSKa z=owIlOW&!xQhCb+yS=ricG>H9*cAnwKjwE_W^;zzGBE4+_jGed;9o1N2gIQZ!-c{v z-s>;PA3#>5G+;0~!e9f-i0r}BYP?GGW$x%BL}IiKJ@b@+F|4N36w6F&CAb=F;%|Dr zO$sm3a3v;n{Ej89V5Ygl1zqUmzpc4GS(hl^Pv^-8D2%A++Y{4obFK*&6V5A*Go%Hw z^HOCUT@gXVIu3cgtf!5A4m%p`okfVwQt;5Sm@w~M&B zWmI`TeiRa`9)X9MH24OSw1=QyIW?~4{y$fGef-7=m5@e>Ia+KS$I?kb5tQ{pooj>& zveC<;GZcu{?NmGOn&y&Cz(J<-1@|Q>OHC?N?8mT+khTRq{wFU>jPf=vNEh!N5^_;; znul97wehq+WoyKp6Nm#B=-aBYp74lWT1U7WhNvGqw!k(_WIz|&DnaSJ4oo%v95M>} z219+*%%?9UWB~s>sEW_)Xc%871v2kQ!Kza+d;TPTIgtq8p+xw!Lz17*WJPEKQr`7| zU5jjb^#UlaPw)}&$_xfeBuYO zb+e%Ya2E&t;A1)kwAA*o$vaMQ|gpr?VRq=fD*q60Y^Z zJ|f~B#vmyl%I&N@O5ORmR)(W*on-7_mX{aW?~~#*-a+RBtD~>RR%Vr|Mxt9q z0aT^meN&v=sQnw*gz|Er{eS0E=5{IY0Vdz`t&{2`3ulAcPM^OE4&~_x=_M?EjSagI z+6!LwQbb{4#A%gjgZusm<^(GGW-rIgz+qW~&N2~{(IyV63_MVz4 zV^{n?eBsZAfivk!K19+nL)33lwt3j{;T<3RntLM1hZ{$k8?SHTJ$i2z7Kt|R`v(|U zm^(_Ruzb6!br?;=nC8PRcT~R4E$+M8{PtZ09$38nsp!;AMUfC z(iA0Bm;YSOAu6g0OW)j61Qn3Y@4ZgU|E&d?*9uhkMwZo# zuf>_%MoIOp%Qx{Qdj))qIqSa7c4bpZBsJgPQ&<+LJyQl`g+mySSc?Cmi_b#&A~JMU zhytrv_JlHJ!cetmK>@!r$#0(3qJv$4ph=R8i4znZjn3Ljl1Q|Te3*Jg2Mri@`p-B| zR<>r0Wx0?)%Oh0(B!}}KhuOvvqqRrqp$^J+A zp#V!OqRN|PG82J1$TNULaEMj{fa`z&vCDJu&Fd69@t_D4ZALbueA~tQA7@qb8Dc{Z zjAt(t`8SLsuOdf}(S7LgPf^wGrXjJkLB$}WJz@CduHsd!JDR1NJg6DxRv9y96HEtM z)fsN(sp<~#rhA5fkhJut?`&5`MDi@6nu$J^GffOct)|*QU4q%2`}*b3p(FW^C|?#} z$ORWrrZ;O`zgWqe2??ZNSH_NQ5vCqZ+%D?tTe|^C7RKAJ+YD7de3mVrVX}z?mNGpk z$tqRrpv7kRPRsN}#|ZjbIv$!#$Keud#Wt}s^FKKsHvaQ?uoZ1U|5}!9*(VC^2z~K!e{L7 zypJ_|?v-@gA=>Zn6;o&??d&+xI7WDBK3^=3xh(COWiVL^T~UqL>by*cNBU8$5TB3` z!UYELSy8gm9tr~{CX6dWr&yR>T)jVFsc$M9PnyIuLkCR<@#B_p(K>RU7x%x`*#nev zxI21U_p(W>>D1ov+#x_ory>VkEuNbK?O;b$M28Yj1Xe*L(5P=-As$p3mAwjHMQ4k~ zLBQpl;-J!A=c5pl`C`jzqTJ>2>GYtu%ttaRj@-_{ZJ}d6ix(ky?z#94dbYSw3J_x( zLh*BSJ`lCgIa#}jgAtR*qBdrs`R&x0Mza;pD)n7!?y$6n#-CKZhsaV9MbDSW`)^uz zR!sanNOLiym`l~7iGM;Vuhj=C~F{4eJA)c{!JG}vfA#SEVbHux3zE_U^ik^CwYa`PAfI z2><+;tgoO<&84yY&tJ=<|AD8F>5`j;5Ii_bytP{2-&kha>0S-yIPWYCd>IK=!jXqD7SXNrl?y>)sk=EQppC6R`9YMj1R^I-*v1I6-XP zn9*dKAW(Esx^-ye1dH2;qSgLhn0>gL`xuRwO2woi_aI;l#eArWHn3}6xw5Npq*gI_lEL8%xB5ShG)e#MI<)cX@|>IyvHnlxc? zRY4_iXd$h=PvOJ=K+&U1m7*f4rJo2D(58?0i>FR*)*W|9Q$ql+g~VQ=pv7BKs$YO# z<+YQ1-<<=s_OLUnFP992DYmtqD(P;*#~CBlhVH<=m+>gTBHwR6jbGZj7AsDZxJxM*{4kU*tPhr6_BiWw`&e6+u& z6#|*kfqk(e15@oQ9wr8Ug;O7S-sZ{s1Y`lYom$fhK<*6zseA2lOaSo`WPRV6>VpG+ zm6(R4)>JUh@OFs8OM)ZJB!WLsjJ_15R1M0*@6$%{Y^hLLG2|V%$Bi^dAkO7co@F3^AbWkX?lb8F;Quz|AV*y8fr;sa&g@vI1Gb(Pq zn0$;1(@;e6?DQQiJP4gipFhR3y8FTZ5Cy)?U_~5PFH{m(m+~nMRQ1FLu6Se2c_pNB zw)iX13?TUuW_0OTQsPI?P*Aqp=_v<=ED4%xN_vxhL4)qLrx!zw=BusOwtG)q0fw`3 zgW2lI8p$x-lH#~Nqbf0*r{tdYm4#0emBin<8c+56=V&UGBTG9F-{#HRM#|&zHyL+ut6J>CbKb*WR&yjpb-XsP2U9=MxAV7L?&^ zpUepvu%WxJC&IE#A0I^@Tu@;?j`BZELkUK6PAA23T%@gqw@EhX{_~o$T=%DWB&K9} zEg5}da>vx(JgZfh_9G9y-SY_NI?>v)9NwcIQ!ElPd!+zgSI3u~<5r|0E{86#B?zqq zL&i9&Z)$>11z&ozHo2GQ-n0!b>@!wn?O6)1Cf_?Zm|<5-nQJ0K$g-5+B!P7TwhqZ93u2s- zJ^C@EBt}%vDyzppbP_0O3cUG8Mwhkc!7Ca0cfWuD0006BPyhf9qXC`>C9)D*4dM8( zPm7dQ-AIqSxU}_GgSWXv&%*j8w$jr=rww>fF0*NjA(BocpR3SoH2-^^Rk*a$2fCUO z6H$luYP7M^4>HlpUjHX1_UHcGmu#f_B&5vGY{o~Gfv0%v@h!ZJ_=aNgYbQ+{aw+C# zBj!WQse-MO%$VN)hE^oOgvZ~S~Kpck5Hw3TMzxPnjz1DcNLJf7C_ z_3LubZEllLtw+3_Q#Gn~YLh3gcTAU?nGO(XeEvZp;iQ!5I`p7pdwN!~@f>cYRgSf7 zRp)zUuvvyv=BLEWoC(pRWLZLYH^L=%OC9zU0I;BIv`d?}3ZmpBjB)dG({gGNyo(cI zACnLSZ$zvpsF%jMC8izGp(tdfx>122N5!5(3P~S%@&g`0CoDLI9R1}6 zOE$Z)Pz0BV@$l0;Bhlwu%(3DTZ(L0ELC8zG0WJt#AV)8+k)NRkxYSs|p;iy`{}KA( z)GLdFJU(2d$;CiUDR2bTz0Yxs=^kGP(c7zD=M-LV`f{t87}}{I%>#tKIl^5lXKr&x z5C=P4WB1q8tLiW|&uvd)c=DyMqp@G1qcC_9Ic*4Ny`s=8PKwCE>i-_MFrk}jU{w$F zutY;O=rQ5tMsePfiR@qL9ze2s$VyLGOshFVeGWlhyG6`W$ev_RjtPpT3mzhJ@V^+J zopXmO74j|*HesBPX(V8blS3Oq?@n@X=A*Fez%ApLKWpL3w;_OK>jq3H{&lXXO?G4UlD2J1^7yLo^xC>_TJ-F znvRwUTrtdpa#K|!K?2GE!7n#9_LzOK^u05ml&p-1f<7Q6iqTph>QJ&Uuca6!up{lC z+UeBlYv9UR27MP$SV|m~`18Y;DxUb?5=cbbyh6KY08U-f{u|^-f0iW1jz4+jfx5wG z=@6yjg;Qnw&5`Z9Ei(u4WK&3IV3c$Vm_f8z2v0uR!;iOcFWgtL@vMl35nAppB|I@0+?t;O*t``uS8VH^u zc4RL4`u*#92p!SsPKcEx{nt+E>aAdS2#qXU!qI6fH!ry4D<6teez0#6Vv;Qzg``12 zlzRS0Dw*oj2@;2r|2$^&yO>}@Ey7@XipXAV5hF8g6aRB%LlP~XAB=UQ>5k=z8ynH5FaqA78H*ED zLA*>^h0PU;@o2kOSdFL0G3c<$Sv$`_i_yOrxP;!?0<4%&xgcOob4l+@RAW)=xNC6! zmJ~k&*9Q+|ypCB0!O=fM6THO+^~Bii$Sa`#WZgbIbddQx z`}++#>q>;_hVoJiz)Y|S4Ob6p6lBEPso)Bt_?|tM?QyoC{@c!a+^~nN@657T>koJd znGyE;y|h;hyLIqUS4P+N`VC3HDKc{-0``{S#d5#(>E^A|ef1w=Z4)e1c1TFuC0O0? zH~5mP?0u3w9{XNX#T?X4hU3E+_dzDkh76I0BQ_XeQMndUFvY(uugNt zJnd1U?egsYwY|E+Di}g0UqZK3+XP1Hu;agDGT?71gPsDVrlM$j(~FH4Hn!+g)0Hd0 z+ZK3{ki^Pq=7P3!=p|B9HCrWZI@USqtaawF8W6lASWWbBD8hald|wg9Sbvy zi6645go{>R-ZD@^B1ZeR#7R_%cm*Zo><>W}u{W9S>{~ggNTm`AKkk(F;+GlzLejPH z1aVEC%|E9s`^c~FONd%}GfQaacn*F9d?GJV`k!<{WXtA=k+Ra9H4;w=TKjZV=~{_< zGRR8uO@dc(%6%qN*b9{SBW{W%3fZ2-z{-jskyh>wUV9?A+pS&`;kOh{klZ+xa@mdO zW0k~vc9_={XsHdyMfkuQD)M^67ApIzQOY?LYPkp^`K08#KL)28DlBYyQblT3YcZJ3 zs+N%Y?zF`_lx@&HvwZ6pW3~}@P3E(V7Mrny#=iOpfr{TZ*V^a>(K}+}gB)olxGHMC zdDuT55+=ueicYx&J^9av0oYwZ3fjtiMw{3-KkxQ|eA$NU`bK;Bd)3}X!VdP4s44ym zeGh2AIXR~NylbCFpv@6!BSUI3F8$g4VnrnGUwqe!MV48ElyoVo^KJ*fnkhS!b%~}0 zOiy~qRnFS;q8_Ny8rgbL(IdNg^Kce!8>%Q&?6VThyCR&w+1f%}hU7c^h*do^yD*1^ zLZympR0(=jSdX~qyAkx6&V$s^t!@H-_SHEJ59K-(hM;t#&EaZLhAa&8*^K6>J4xnn zrEa7<`0J&KSQx%Y-hzk!an}n-&dHH)f9Hc6VUs2RoW!qit>X5+P})b+vaelzy7-O| z)$t=;Ygn?~|M(#D2OPA%Lg=)?9&@DF^O?OiC{L~mE5{LK@}pNBLS$|wq_>eu(&RvS zaU?b4a2K!(0k7Ua^~#apeX^4_|3GfHe`-8I6!{h(30Oed8&B+JN3~CcP~-6`W`XE3 zBpMde2DqSQxpcnC*zEi``&7{Ns1O`m#C7 z7J=eTv*%Tj={SdsrxE8+Sq{P~!`TqbIW2`92hHKJla>uzP}zh65?AY0^p4fnN;EpK zq8$YPA#l*6&>l@Tm`vwbe-ii#OifhlWH~6+70mRqLI&v@C=xd4W8c{@gYcRhiR((N zgl2GsbP1sepKTgl;uE-)Seujp7KMB#EcIUzWv6@!aU+u*v-a1Dt< ze_`;-Rs5*)BZnXwRU~k0oNN+jgrhNS?Qy48V8A%lRZ|qx{$J+eVHR8^X2@G(kN9CV zs}m{gxUwG-WPiaaj;?^7!#wZP08vCa^dNUB$0Z!EzV6&$GNB3+K806B%V5ck;(7lW z8$NJbt-ukJyS@D>9NQUwT9x3)=`2XHPQq$VG52ALIUph28eT&L;MQW|O>r!J{wZqf zTZ4V1j)`@^0HN~}sPpu=GAa@wt&x4DOmrWd4agE;44poV0DFo{8;n7B%j6U@UQ&je zH7SWknaKD*8oDl}hVb$j@t00dUw08XjIwczqz ztKS8RF;E|C7yaPL@sYFVaL+IV6q0uG05J01_c}`r#zRYBdZ5v!&|N9at?9_kac>8x${T zUriA3y~-njv?XIbx0T6l>P{Pwb`S)Ph%RfaX{vWFbds`H?T>jOdtW=0z*XoYj!7Mr zR^+MOTjjsHH;%;XuqLbBsb8D#^-oC7^eO!VC^K)-IU}8wYEUHDGBIgO*5}gj0{fP! zXq_d>Xys(Vg|z|HB=6aVf~+;4s63T{2;8HQ1jui_P_K^}6 zY$Wc-;w>pSvOkRbm?qg8iG%&TUyUmzeO+fcTOOVN8g*o7O1!RKQPE~t*|Xl3Op;57 z=%{MgFbPWbUcM2IIdu(7Vjs|-J1sWHp$J!ucM)Mr`g>hvxo3a9PUFPlfYdB$3 z?N~$D@jq}2i8xndqGV%_x3sXHhm=}zvBKlKY9N8^_s}7NWfkE+^^C5jn7?U7rV*}= z+QL^-wH@?VH>wrsLfztEc@EtBOr}UcSA)}+-+mI%cM$AT%dpr5U81T zCAYCmrw8bZ+fIH#z9|^rwL=8a-~H|FP z?StWIOg|%_J+#7|J*6fgf7rJk8HOzeN!Wl`dAx%&Hn7p}uY4XWGrmvA000022~Yq4 z49o$Z2r04>TMgm(uuqG!V61HFXS*S$Y$mGb26Z9(Imy{A(YDE z2?iq0w##WpjB5o3L%Q|BM@zsQ0HGp zg8yG}&`hDcRL`wg7|i9y{Fa7cl-MBABEEfYm4?_Sp?7i-a#soX+nFc_B?P>I<-2w8*LNxTu7C3S&X&*h@WeZ^))Xon z#AD?RY9y)22KwZ8A#12G-rV4e?#wCR0JkwuL-UaX*vm@or`QIP$w*$)+j5|&*=BwKT96pSg{NQ=4m^r@0 z3P>f`G}aE_$Pt`X5m=|^>4P&s$gJP^3?0``=>_nmads^A{BE8Ybh2Fd-$>8#qJRP} z5wF@nzEU89<0+vNG=g6ZvqO&wmh89E6jn=^Hx zl?wp1NT`_yYy-!L?`-44duy6og62-?U?Vg?CwzIx-S-m~g5>(AFNDR;Ta1si;VoSI z@=9GnyBxt^+sWANS8|x5%>{)lJqPJu=eE7Bdb*ir2$^bDnzP-vCBCw3Y^OJ2vgIj! zr$3p%(rWnM{4(tNYrN{$nS^6f#iCkA5bTs;`8@jfhQBKdv|Z^nFI8Ms?R}O*6M=gE zHK@$Sqtw@rE-ytI=|Z&!9n5iUc^`%E?FXAy7+Awf`4S^Z!wCFcZ{w)`xJ)3tPLCty zs2#8y>v}iVH;j`Bw>A%InR!yZ->y=}0q9CRT%TbE4NBLfb5x|6?NaFaaP<21M}Z>Q zqvl&rEty^7z*u3Q?~Gj`4Sn?>1!pWcPBuxjl&>Mk`t26XVgg?{S~DU|Jiwf92e$Il@^-bjp#6LP<`L z3+k?*mW8@#HE8zQkfLxQY)C!75wdFM%n+00ts$$K^bnOn^$^}y6tK z9)qw+OFnA0le&-~A-2$VO} z>18pG33Qt7Qu`#T#}LMSYC`IV`p*PtSnM!+lV0@wq`yTCNt%}lTK5;wZkbpnI5P(= z;ps=Um4mm}E)f4?p*_eXk8QA0y5A=nMnV#Wb>sOl7bl}f?htPV9^bOh2NU-CzUg3& zc^yEG!d~76e1+6y$>?C2f?Ry~+cA_orrgqH_rApEDFQ?qkB`@2CbzCcI4@yNT1r+@ zg+cG#{sNFL4(N2^S?kb+fGo`$Sbh6v@l^SbJ#3S1+|oQfkIa)h*yy^tsRYB~TaSqE zo8il{H2Qi)=$B5L48=PNPh*<+&VEVY+^-|M zeIBx~PEM~RoLSc^M^nqsc#+>vi8QmvgR0Cp3L9?GP2jI<4w@OWU2HTLQ!)YZ(=|_fVSDybI=`ciyiF z2R)!EYvOU32&y7sUET@@g|ETOQADeK4Y#6PAgQgyxOx*0LlX;6tr|z;^EP|u4dBj$ z=F&7b9)qCLmQCNR=mg_Qai`^nwbMWz-+K|SD!qFi2_FOS|YRXhD9~f zD`S#EYC9NT7czOr@Vw|{MfX~yl{qo&Bec9|#V7+(R;!v)kN624PQLBipWCRA~fUkCOwy5KldC zbp-wUrn~c)tL1R>m)Jut1TDlZNK@QTk!MhJD}qj#s{RiBlBI;~A%jvT;0a8@OX@cU zQ6xIEzXrF9yq3-u6km3JSVk8qMB(XQ2{J-NK9i>jtobr+e=ECz(XdbiUlR6~q7IbF`%?DQI!V^VlNO-mZzjS@`LuEn%UqI*Q!BMJ6_qAq07F^LPT9nl)Pjd?TL zA>#%#b_}Tvf?d4$pYAej+G9;^cEZ@*80(MP;MI;N&%pDJ*YTX?w_%GLMRe~QUvTI! zXeo-3z$VfqqqQ0+KugVr8O>aF3%Qu0!pTJ~N4&Bc=vp~LSB3YAk(u)MjL^ynu3k+u zf!==N5oi=Uli&iURTy~!l;K&$24-e`V0Z~K`1}8p z!zf}zhrA%;ex$o^Yxl@ep}KywC#^0_&&Vbm=g|ZHWI>T#fk_LzQ-mm+T?-BJF`TYu zkJCA1&G=+>n3AW!TmR&n6Bvazi=JG7R!tb*O2b+0w|xrR?B!?|ALM9d&-oQo=_rE} zp^R6E*H^kkcEsrbJbbfVe4Z2MiYWe6VCGQJ&TA}p(eL+mfSBm5N~;C$bZ<$3dy^R} z|IIvQ+zig79R8S9xc67NF&E3+4kZJ#gCM8>I;#RL@wf2Ul}&bnAQIA2{S5u5P_=|B zAlvF=O1gUN@fr&sF&r>&X+by+f27pJ7upbkvH@1N`3_-Tg|`4DBmi@r!b(1ZRpg`r z5_HOW7aE&$`eZWL3#F{|jM`EVI#4^QQ8!<6J6vcGBFPzv^3cA;3h6*)wbtLq{ZCqZ zMKPjFU1XheXno{35M3*u=Pg(bBRwhd+jj0&0=BO&r23{0y3sv0@_EtL46NSmR?l;iQ|Y zM!wBhA;{n-fEHDLN)KB_-6z`h|HmQI%#YTbrf;e^wmLHU;EcoS7Q+7GVXGM&1%-P^ zDOO}_8EqzZ3uz{(wXYc)PPl`NOdV8=<>c3T9PwIN^qP*3Mt~fmf<-YAS0?KS*!vP( zg~R{=00Ie6000R}0iFmgvJzVj;rOsmi?U#>Z0cvbA*O65s^{a3Qedszw}?8bg4=g98doWvTJwSt0S$vOP$QjG9id zf}hn8vt)$1d9lOu1CUny_b3Jb1il0lbr=2Jz$jdnsmIkATZVI3UWNH?zVe?u*FA7V zW}b_5!376pUkyeFq*EUExoh4RYK$mGAEI!dtRhy_g{nzDvFo3!GniK*M!>}`pMgNi zQOGV#@Q(mC)mNeg1m~>SI=Y9M_4f?if!2ES%kmk%&!peZ5#4kir0bD}kkE?^L`;U+0X_S~KX{v( zB~+xsg(}V=Uv_lH!8JUM zWDp-{+SH6`bj2T}Eh(mlzGF4X>8Zh#>Ux~#QL?sM!j_#s$|0}Hru(xf@lY&$+%1qm zyFxr|wninPNkmLEL91P_YD6db;v#f;ZrwzdAwvYba#Bo1lKO_hgoGH(-b8#NN0bj{ zdRnyA)kn0a-|EQ8=rHnTQsS11=DA>j6uTp1=hzC_z}bR2rLK5}BY>7v!mcBYBYu}= zQ4h9^`%h=^kK4H0)&!LEpb!b2VZ3>%9fe26!RvlA8ae3sVHSvn12%g;v=9Nk#A6?X zf-9=*n@HO=RF=&hPxr11s4a^z4SPJ&4B#?Ia833*^pRytm*8nCA9CTN{^VF5eqjd0 z&h$VyX{}>A5$&V2X%kpoo#`o+=hW{*tjH{}c$;QvQ7v$Oj#qEZsdL{@QnMij=Mo+u zr&$T=hneLl_SM%RF zQT9SXz%*%{TX$qMG-o+h)Q_Kk|FXyNEkpyxUrS`lE!aA&AyCK}i+LSlYa(EB3L<%>YJ<>1$EM zE=%tWJq&P(bAg?35Cjzdc`xI_O=KR2UATK7hJe%I{dHQGKJ*>w*91uZ-_TW}>Z03= zTePgH`0aR$z3zy_{5IPFuV=$mhSdNvfZjj=+#aoC1FN^tWJ%F5T1tYH&a+cqh}dKn z!a0Bch>;~O-^rhi@HgJKQ?eC4OPj490l*KK3=#-y_R_QD*zhFPI*eFGr<*T_Bs;ip zRaV2yVy>n-L4sef30C!Y;}Woa_&O5rD7wT&dD_J`W3B5v5zMKm@J1!GFVw*{qbc{Z z%wERX<^8Cdx5-NUt7En7`+IvbOI3j=t`=T;uS1M z1&;gs*08{m&DRLo0j@an)*OhKop}0p4OZkeezDCUCaIRWGNysY_St~Oj5-$f2m?=1 zJL=Y8PPGp{iCrejd+|5;8tT9B(-3S)*BncT{71)18LI#g!=Y%)dEBVTv^wG4l}I$< zB1<}9s_SGr)0i?tbq9*>^OMZ6MEZIUyRwThhff~IP2$B2?c!oP8ZGAJr>i`-dAUO& zLuxh+ILRH*O~4#9e5ox;aRP?!SB5F}$ zXvd$34u*rLv(hbM3b0Ij&qwbPpI`Ccoy}YQ6Jh9RS75pGJ~dEk+V`iJYL-Q=a|VgXWVcF!sP_?a zpAA%3(F#-^+$J*P;YlwAT6~#??v_Rfjg)9MG#aOW>}a@M(n@9Is4^L)D1UuG_*>$Y z5D64B3BhKU=h{WcWM5YZ5ccAlyAkf00tSDBU;qFE002C|VcFF#(=h)_vE(n|Y6hboOM+1#-$WoM@FM zhJsDx{a1(*(s)H{R=`_dNIzm#q@E(^&G|`{S2cTiE^wX_J!^HS(UpN&uw4kQFn{L!@+x~M^AC8$9Zvg+cTFLy z12}?5z_885DbF9Y9a%UkKOPPD z!uV6AF4NM{fYfSije|vw-MjcIwx8K4-TjWXQh^M2= z_feOT5hPBLQX;UkiyI>EFMR@6>oH<$76){3!)kBpO(Kf7*lRfR#P3tDN>1F-UTH91 zw*PU01G)Z9I94Z2e_k{+UYmy}?QLfLUM#2b&XNA$Ym{tim)?`&OLW|qaqs{G zs|>@W2kK|CNC>QF5~ub;M4&(!*$FFPJC8jDkN%8=T-Tv~i!pUr#P^7GVO@ z5e$$Mz&%|!8%64;T=vy>%kMm{5OI!zcBItuyDkm-@)?&nYYNEsqK->sKym(nbu26> z>WGhr={2Ie_ZwS{7(!6JP6nx~D3RCwJOy=gx15FpyB!Awx-KFz`HhG<9nTs%k!1h? z00Idx000N#L7E6aU<7Iy$$UZ1rngLtM^RZZ*df9k-R!LS%YA3?Dh|n9r!{W$dSzGuFEmjsNU9}f( zgiyB`|5X`Z{#ix=Qec0LQ*+@9i2#KUj)zJ-8r|dtw2FeXLKAMp(Ip*BAX*kYs}e)t zAwy1gmXgc9i5ydas8*4#K_@ZLr+FKFD~CiMAYBnreq*|~g!v-Ly##%2RF=<=U# zzOqPva5sYo7Y5FrwG;4pKw>F?GU4cLwP6VZ;G@6k)#HOFQ+LBKT961>mKq>)uQn8g zU-{>A`9=1_dWGj!vB4r>-NrD^0g4K>nd^(BoUN*Y4XGJU2G^BqD{XWbYwiLC{%e^H z{9JYMA2o3LZPOdvdkv9Hx?vLfz~HBJ!xObyW?&~k3!B^KQ{Epa<1mq=qWHokpSJ`L zJsfO1eA?C@XKmG~HL2uq=)mxNfYaK+iMK{Ad#1AJcT3imB0JIibfV#Ke~BtQoo#kk z`UyinVvLtRq}b27{1u`l&WIasHmBvz)$x9X4@YN2H*@>)`h<&JhWL>nzY*nuHOno+*BT1aCrN&~Y(T^xX z!NU8ay*F<-^Inm(;KQGU>ezU{+}eXdmu2#*U`FUtvE^k7EI{FA{e)LA`Wb4+sGA`C zO7V~&OfacMe^!GdxLE@IY5D}?aP)DrQKsQH6kR!fxP%o-+ zczPE;N8$jPg>5d3A@Drt*Ak~YomPCD*tUa`#cx&6mrRVh8zNh9E?C*v%1|{Ys!ylrV%~z71z-E>?!B1z; z$3e~dj4N$BmminGPh%)5p% z^Oow_NxU+{h{adm1PYQ@5=wj+XR;-OE?6Yj*#fm3_~`VS)_?Dse*DpwCWj{}=R%H7 zn;i?KCG9_G^*%u(^9W0FY)*Ye5-S%5c=IK(FZlNRS{qg;TT$jA;Y23#sG8ypZ2LOH zaZ4d*@2ps!=ZJi{6M_BAWgB^ms8Ie3lQ~+KRZ_lLc9@X30h7^b(z3 zv@$C=Be;6Cr|tJO+BiQ1r32_dso<~CV)hi%F#n|!sDnnqB5IiILrgz6s-sW0i3%SX z4ZVf24M1rJSi1EEAO*KYKSKnC++;BB6!6-D%2ImUIQbk$jlT zgMAgn0K>|5tt3`Dod`bw78p+9ffDMe1Drut#;UHw0!^;$fea-M^)~5;chrl&_jOoY87Yr=3#kZA))jQ~GApRM&xB4(wnAeUVe%Tv# zVbR(Mdb#1zem?JI_644DiMWQyI?I zZ64NTfeQI|2)7NkR177~9FL8OJUh2u%VWw=JQlny>4KmtDJ*Y(g zx#wrRN||5ppq%-~jf!gHkZd|iqeKtIf>xP~n*MHd=h7b0O};@9z#m<2geHYDUQ&BL z1r3-Wy%PEMElB{^x`K^Z0O9!!qLuS1{7A=95DK86i)7)7#INb7L z>gc-=-PMU}A6Psh)QML#S9PmXHl4mp|1WING5Up3)iC~ zlzwV0>kz0xkiD40hdb=sXO1FrUQPvaflW|`M^+pQx*bFi;H%7gs^TkMpV{ISrktyz z)Df(>5|fr) zB7TK^*R(+a-Ytjq#lP%Dju%L%;w4 z00Ie6000eK0iFsqvJzV_ytE^@j_p*EbJxS`Y8N5%`C^c5*S|H9RzWQWF<`hB=?p3K zhvK#IwqVWX`^(7dW~K=vttsu){NokzMuo8KU9xekh`|3v%YUG@2#8u59emB2w;aOB za3iJ}r>BhQVPj5+Mu{oi?ERjn#Yh=41X8`D0?Ri~soqChUzO?woWN?E-_g5c8KPLt zYZ)P+46hN;8kqh6#JfSxeTcelO=~>h6lHHhY?(#?orsFI%1dBiirEkc)ybQ|Ok|@? zf><78oToBAcT^A}H0;wHMxXi(URAMRv<{dX$V+fS-2ET8MB1Ny+0kFR%WTfmvUf{H zQNkp1nTA_`%91~N=qhFKhMdEN?-_OmxgW_xaJW`RG4PJ6XTBsrGU{Y|wm~eaFDjlN z^>QR_Za+zR&+JKHwBZWyS61%lYM}EwQFO8T->$U&2K983`k;)UF68L?{ehFI!xugv z(Qxo;fs?SH*!0f$57Wp?F%~-)a>(>6A$w0ca)y#-WK%j!5it|ZlX}<*wJut)YeeO2 z@V2C2A~Bh`NF5Qa-6*Mp?L`4}PXs1nESxp(c080o!XPOmi^ZH;prqWpZ`|SlU<1da zc0QcUjb8Z!V7^Q>j;t44Awd3mk7qK0J0|>t8GHLx?B&gK?}OdPi{(0CDnt-fI;eO@ z_INyXh&S%6DT#3AiV6MWuY|morWYLqd`Z%WjJU$EL?pUG@kCwf??@O|jibSBEH zi+2PfH5dhrSb9(;wqT`NXfhs|*uF2qA)y(hsa5EadftokIa)Yn1q~J;j;4e-r=8m= zJpBHGR`7O>Hx4uXaSOWa?ZdAO=?V#@iXe)Q>f-QquPzt%XQdCq8yldo|5YK3BhEQ7)qID|bD56Et83dQ-e21y$=sD!eKfly^|jY33!zQ;D6 zFcY2E!5R4y6^Gd!SJ4qH#g4jhCq`*$;iZ!Rd4*Eqe z?!3rLis?aGT!UY-4D>_xQGDwajqfPsdr1!8KaLn`N-q}bQ1uAhTQ~{8LOXLyLI6y( zUQoo5h;6T3?V`uQKWvkQ$0^w|W|aZdv*Ka7HbugCPI2!>2S_%_GtIrsiYEt$0-bOx zk%mVrDYc6VSK$vxzvt(Dwwq2m{xjKRFRO!Z2BY!|HXy527IZA#HXWEJ2@#D1^ooAO z2`1ept)B~OIm+vJK9Z_n(G~0O)@xyC*SluIxsTkI2Ql`#7_c(o8iOUw<(L2c{3Wa! zs^pm=;C#mQK&0QKX1*HUSrJbaX2WL(c*So97@N;v_Tiw| zo$b4X0OlXgz^u_AW0%1u^QC3Ii5O-b3&w(hm4ApHbY!J9BMB|yHh1TcCrJA8GTGlN zG;BO{GWFh8fy1p*fYpqe*<~KR{p%{=Iogx~SgI*#IyEo#NLsG=x1#I9id=~ueAbS6 z^jvCDtD)g(L2_qQRDTfK>r~3{zj#gyCt*%5$d$G$Dad`Mhh8HA;#Q(L=MTD3RNCWk z?3r$xSp+ziZLI+0e|9YLZt2K^=aO^jKy#zVQh>Q&I}GBR8u)vGA$Z%7aOJ0IQvdDZ7v;wijCX+o+x4wqPC(y<^EXRjdn5mw9fs&B()sGbrW?xnB(G!Gw(Q9^ zcN8@Qb}mMBSJ#6Kc(f#|WTM&|9)1REC=H9h$|~UKB@s~U>rpLn)$$(?x7}|p9&N~& zJw^?@w@HLh{|(W@Xe`hO^9DtaZB?>mJKHoE?0;UtPXSJa?=n~sr12`A>QB-!f)g3S zdjI?oWe8(tpAi=2l_MoD92MLfcLepvgS^jdo`1SdHtwNgDt2-yOh?r^TLz;h&@_0y zhEa8N1c5#+YJ?0|L1IarK{mVaT&zv+nV^n*2W-I2l$18SA$(S~eS*gA_+6626+B5S zECDHxRWtUAgKB*0r+O4!83auUnYWu)>-&Wergp}Ov0t*l%@C~{V{)RCc*b#CJqpwG zM4!cEPL^aDC3P>qe1<)Z`X?kOC(|44H%_ZpSSA_fCxp%tN^Y<*{|KUa9xHoosx$>~ z(!rAPuB6G*f1R}qh8PPwacgk~?68>$_8>+KX-y{qWSKb?tgIz@q*rwZ(k^r))>Xqr zn?Z^DW@Y;uGPsGb{W`E+w@hce>u?M-{S>O+iEWDKMR_;D4~zByB|2f{|)OsjmK1J^LX z-BH*Q$Nsmv8^!a7HEZ08{Mz@RJQwPULQ~@Ve}ZKmyycCon-SI9SOXAqlrPC8m`ZQT z%5A^RE6CfuZrZHs1k#p}SE%{f@%yb%jpO@V^M8RM9Wf`|SI9|;ApSTbVk|VsY`s%- zCSBAu`oy+v+fK)}ZQD*dwr$(#*h$B>*|BY&yx%$Bx%kI_Q#Vy(>|Hh1-ZkgiYt8v< z$S(D%=cOQOa*$k=XqJ;W0PeQ@3R{0+o(`41YwVnvp>J@~^oHXy6s5WQl4v1Uz)0-! zupx^2(u2`+)J#Y_+8b>o)Nb#2L@N_qvjIIMto6l33B7#&vhOr0t=d^$Q)yMJDd8$r zVXNnOM9bEW?vXT7+E}tZQYn5zRa*htWl@Hw#nrZcIBv_jjElk;Ov{~|uU+;J}F+??{7Wohkk{(ktMbZhMP$3b*4M*O)sen_!VW1hV zI2?YZSL56&RfHaj=(#2SnnD%slTM-xyoNB<;!>3JF-WloXNQZv{eTP5EU=fIVV_(N zP(d>PY{w}$C`&)+?4lIfZTf3lQ=cA$8`x}FGPW&Nh3l1~>B1mCoV2tZ!Pc%%La?be zAJS&!+36GhuP-`y#(x-femV6QqnN%2h#!48w9@7uDVnG;KLe||mc>u-YSND_ii4LL z)PKN1LZA0qOMT^K!Zk1$^B?i$jDr8?I<3RUr1RP>=O+ z{ma)ryi(E6vZ5wI?&QDY2j84>H3XO0aAf!L0Ys zOtnd50futPn?AWi7umP!P8=}DIy+QB6iZR7+6Ealcw;LbC?J26P1dtTFlBcmLGOT{ zJa0NjI!5>!O*s8u-HULWWolrAZw|*Ibh(@;_4*Z}=W$@|V%Xn1AS$pXT4$18k20!C z1DP^lH7Hw%lJ6cyAllZ_l{7`95U&vEADp?XsgfL7a6J77|y`vYm-t>12f{jT{Vq(QAD?tEt1r1MUyQ9W^C%oYcg-YuMw6Dv> zGso_~nmjKCZ!rrxfQ_GGp@ZYIM$$bGpVql66;(xh1*#Rhu7_#6+rc)o4y^mIbpY*j z!$0k|B(z3Lc~xJ%AfFe823JtFT8rf3Cps)aMM{rqqyFZxRiyo~h&VeZTO$THbed0{ zFi2x9hLerDOCjTlA2&UJaph^HypH%RoWqkMY3jLhxx?wS%W=SK+boJH=}z~Pv5Nu6 z#1^~waipSk=YctZl=|++8@X3E!Z#OEwBD7Fwl*PByDuj9+|le$AHfe2{U%CnlX8P{ zn6lQ!N1-T-^!wW-M{?m;5x1qca(MO3;zg2$G56OnRi1+ylIAPf;!hSGqYocn2ksg`e#h*5l;^Z)UJEQK=s)OgXXo_Lasq3ob|xnM#E~g+2E|QVN%Eg(rnF$3u6d$@E{I=KjjSTvV4321m6rLk(kfa z|3AyJ`C(aH|D96zQIw1ZB~0}9dJxphVv{<+!IW{&EU4|*a51hniER(S*N)m7=6n+9 zBTIL6o7t{*ho6KT-`KP9gD>{^$kS*#EA-PX$jGyn+PXxYzas#jWK(9?)MwNF7VE?6 z!but71=g_7r@RF~4(c1d6wb2g9(*VT{x-OxN5 z3R{%X_+l_ao!q-uuqU58W>+OjYS7TCfkCtfEd~j6D29{ z;p8kG6!t{@<+}j)8;`#jyZ>6GJ(?2(ar`N;cm}Po69;y$ef=N~vFz0}t$Ge@;3}$< zb6MCTPO=j`$l3^4gMeA1xOK@ogm~y3#YdFPq7c|Hu8z5x2yDQY)i%JebF#XonK80d z9*&uP5(IMJl)?xq1}g}q$LG%(rPE!Ev>uX+)Y?_G(d9#mO+`sp1zxs$y`_$2HQb*K zhC6Z@vNMVZ2LLq>{YtYS?rDVrJ8kPe_+{nL%(|0>?0L1p^(}}}s_X<69&#c8iJ8W0 zas(eg&)ms%TRCUfTS(lPfF$5hd?qD7HWAOS!qvRH@SGoO7)@ z4H#SaY%Q)F6z>@uRY4t94M}UR+*A*`n&Kl-t#iw&^e8?~#>hJDX@j`0$0FWU!p!SF z6!H$CUw8JNXO{prw3tH%#o@a~YmEJjChubR>7qfgtKcS&x3_1{u|-No_Ua&Dab1?lQ~xYOgHx+WT}xP!)B7Lb ziFXT2$s!p|rB%d@6Yu-x3DEi6rp{#T?E1PDJ~`8x?*DzMv0T}S^lP>&TY2Ld499y^ z+nf*`6yrIg#zSj1D~f(x;kgGRvrX7qY~lPNb*n&%9JXUz=ls_}8+{M>QTNWb+IE@k z#Yt?+@bbtsG4mt=2KVf_sUHQ`%^ev3&Gw&C-Tqka+R{vTeze$Rv+B{Yv9xi2ncu6R z3mC`(p)l&OdAuAoEPLZZzx9025$l@qWj@S|s6|OgI^Ru@L>c7&o>ZWMj$|)`Z$X6V$2bhuoKbwClrOG32~qsowzt6 zjeTi+Bon#t;-BN$2F%cnCTb*MIe(&g6;X6AHsK2R<8SvRmqX7)TMaA0Du=2g2V5R5 zjQsNLi+v*8;4AzC8$!C(CI3;30aC}q=VlC z7|!}m3MLjF?B-1`^e6ShEMEKP{)ikEXNPL&REV^*%G-8aG83}Zii(CEJw@dE;v7}RTPDw3 z#l0SYtGLsEo(@a|!C$<~bvoM|Dlxql&IS(IYQH%Z*hH#-ifg*Y(Rpy;Rj@3{KFL1p z_i*gqy%_STy=A1h`=#y7Nd$IMHd#JOxpsm0_<;=2o$a&ZVmQrDz~Qbky%q}V0Je@Y zA>Y@fB3L}LC?a_Kq+pd@QV2?#1D|>Bc_7BF@NdB{tI8Caf^J@!w%3L^R>J{Z1)BRm2^@S{8xY&jn=#PiMKz$)OTbt z2}Q57O)*)%{Yt&iZ^(_SP?g*j1LY5mP`EC*9$uDCpF`9qeYIQZ;GK#%_XZUMycD9B z&&77+mG{9>d7oIsr51=LDEB(^bPz8b5mpwchrY()zo|IDk>WgSQZ|$6LPT}E_ZRpm zV33i>rq3du>t@k409PE!GH?IN66NJgokjb4@?TXT7BQg;bEwp_9V`;=bf4R}=@ zf#yPA>#j}C=_9kAQ519etsDDAi<|Oa_u$A7CfBik2{KU=M&pi#FO7vO?=Un)n1IBp z49IRVmc_Zk?;@c3c^QC{E;t3uM-b^^uvOIf2rMtTO;Dn1W z!wIGe%`R$4tDF&cy^RP%9shnJ#!?ohY(Q0$O?aQS;{7-7=9_BQt{chH_@o4Uo_%oP z3zkU#{1>*>@~GJ82&$h8wf;BQSPw-|FUup#C7TC{Iu;Dq-@dB5yII_+zK+GeVNyp? zR8{$R*rCMoG)&Ql$7(LAa~G`zqPaGv!9TgG`{l&?sZf9*Vv~}1nnWO+TEYqXqak+U z%&(q|P0Vcf+&ftPB5wODY{d-$I1-1D#~(S@O}n09TfybbT2HjruaCeop0)6Ee-W>QN{dpkKYf4k5Zjf z9Pj6#q&dk!&b$Fr^Yq$oPWSj^)#pZj5>)x`T_xN(Sp(IW* z`SlQ^p{1Exwwwam;xv&J(-I2XT)}uzJtY)zn9$+FZC+luWPRhEcO8pCbLLRO=vA(I zww&XTtZZVqm`PpDENz3)hW-;Y+4qI+hzMvVyI}9f(dU+LI0pGHwT_dmqfFnRF`5#1 z7qKi^z>fr#7pAjq*gHj!rSCri1tn*gMTeb6@@!4HWuXn~8nf`80F~N|t=lc4tEh*H zU-L#hg@vxE?;QLnyUb(3lKO2mSq|7zESICI^q4OxTOhP2Qzu{@O2R;RlKlQM7S3)s zftAa?;JvG>OHz~z)ANAutQ3ILNDEAJWDx_MGJL@@qM&Ow{VRL!hILdwPp{xj3wHbY1IPV}tkyPZk(ECCRNo3^?|vajjuvzLIz~6wnzdq1H+``}X8HLS+R0fh9)Dc5+64IVVVWO}IvgsiWEZ0HNtfhy$ z`857;lRV)N;NbAi((i#8;ce@|2P6bPQ#*B0QS{YpB(0s=tD>_`#o`V{YX#+(=M0@5 z%c7)6WN%7jJ6x3C#?#5ZP|Szk#R--Neg5IxYJh-ApA|kh0AupvmyyN7BH$u((6F@Tl;%GSgrM@^utQ`)~$L#CeUcKJ}|g zHZEKD;+0%KdZ8s{Bp6gb2*G$wy(Drd}}YU#Xu;0-u>?fYFM{i%qYBAezX@zW%?lh<$vFkAt`rhdAJ zW9rHdrF&!Y#H<`mW=^&9PSN`6W=r|^Tc<`|$4Dz^Iz`6$Smj41&Moll?-aG_#Zg^v z;5@NSU~MadiLraqV%bp--n8QgBYakG5TitpihO|JV6?d0fvd2o;%CXQoQlz6fTrqs zWPkZI>P(Q2T=)$g63i*j(6Bl0{11g>z2~#IL{14RL@TC`o?&l#+*Nt`4EKuhxGOJM zA(+vLl;GF#BHMTJ4nJa6B@XlA0BrVMBYsgG8uF~>{B?9!EFT3PwV8k|KrUHeEo`3I zpfBPstvY~pWH0=5RBj7k`}k=ojZ4!YT?c81ChHqhmSJUBnq+XhjBW_fOn?`RZygTu zT7aLi+rXG5hH36nv7sRf1sV_~S0d3pPBvzD zM#kAY>N+N++y7>NYtgF~Jf#T%%n}2qB(r-7-OnRz(uuOLStfyIl$eEMn z@qq|7Dlr;g@KMQ3YL|2d)p7=S^v1EJU$Kh?z%N9halk-+KdofOWCWK%z4?$XLgx-h zw4jmYwudY1bU zi-c^m7iYg3lrY~|=qzss$2qL=8^EwZudftCDbnd&)T-L%41U^4s0xI>HpiLR45LiF z>p7dTmV#~7HQuZbtrpit)1zHN#2R{9^(ZxA@g(~bio)q08F+=Wa?&otzEh*P&k+U~ z-w=)aTaTR(HY5f$3xOAME4@s_Knfo@E#qYCI5?A$y71|lgH{LT&Mo#C&akmj+GH}P z#&hrM@=F{y167Eo%god$!A;dwQL6DN&+r4#=g2V*^dcJK2$zGuB)j%gE9O_XKGKlS zw?hjRRQP#E(_u7BPqZ|A$k5QwB-2DzJC1C?g|X3sTthdF!Wp@ZZxcPHXEAY;Ca(pXI)($v+~iG%33#aQMPC# ztxpF{16Ef0b~*&qo?+-n11OB6m53s^_whav>0g;vYiGJk7Bzf6*;FOw(#x?p_g60Y zMr2$?-7339t?24EhuXxq&{_U0lbtOAT)VN#i+<3xl+1w_5cp58;`&PJCI{^$$h|#W zq+Oj=>F(N%N(P9FJ~yARp&EKm#UVSeV^*NsrF29ZR z;}{IevH|Kzhpx}0Dd%mA~HWX-Gt>i))VW>-nYd)~jDA$kYln}S&i^3X2)BawF@)qv7z zntQ6#o>~(V*O79TDa$l3`NXw*&Z_wM(K0B0xcfT5gdA!QYE6~kfxI?);miZi!cWI8 zR9E9d6eH3t9&bt=DM9t-;I>-;Ti35D>1bNrWOzvNXnR7TzMnEVN;ljOO|w1AdNNaf zFb@g4R@HKVU8p9PE81jlNO=5CiZfC~Tk?ae`SlbUt+`+W-l%sbeQIY}JeQh20*b9y zIOH-jsYH5sG|QzS$I>tY-{ork7=9LeR-(T5^lvoRs3=LC&a6ASTexOwCrdvB2~Sw>p~Lfk z82K!acet0Dza0HjVbR>|UeA}{p&bJ8URm9VC}l6}4s&&h?a?p2go)+?2;Q5*>M zz6Vi>ary>>0gqO!K_C}=|2N=$zQ>l!$3IDCzI0q`Kfp0-#?gwdsf4Q z64x^*+yV)ti1d9&!rWi`&Bm1zp4IzGr;^S&Ea>cmh_><=T(>c_`+WCh9TYAbq!~}` z)G@2Kcil*wdztdb8UY^ojMfUlsOm%7jZWM^rMpCb*I%f9?GJJJ=Rq{B4nQ$A=2qax z;nX#$N@UtJh`%=0CkqiJ7=*6If{Z!pd;P2TcM3AS2>MP==)!TYR$f~lp%ulbj4m}cUFeeeFprH21?4d+|~5=w=1>WeSJ zma!H747qv7;a^_jyz=DA&K8iDJ+!cM0hE6Bk8;wTRl~wxyPi=pGv(LIA+%~biO2&( zUM-d)Bhn*CNfmfW%#J|1B&t73dKdTzr7y0&087Y|)NQ={+4 zdM;}Ec=`RVYl?|tK}8aDC+WAS*NK!uvSx{ept<~E2%i;*KsYJ|uIos(N9=*m=h$mY zgp8GWI{k(GrT>r*| zL@`PJnDLN>qlR&c=a0{C;OFV3*XD|zIq&XJoMMqljVRPqV{5EukU8ZW(GbO44}=6& zgEL=uE0|oD--+veOm61fthw7$RcKhap+fve~qa;fKJkX?aqo)`@Hlq6YAGS)|0px zSWq?4dt3u4N`Av4)P6)LnlW)H6P1BCiPI(6!e?W)>m*jApmY~y3{bp-mY4gxA|=+~ zh@BF>ja;1v-41T{C>FBbBxyj_Y>!Rqo>uKxpdJRI#8`?hM_`LW_Lb_afyWGKTG1~YW47aV8cJX?*Cox-}P~U|8xTA}* zT^Y`PvBzS#@D$vEeK9W+bTb5;xdlr{#{KeAx-0!k)P!d$F#W<{{zgz>;8A{|v9=$; zBcScz`2MP)Xsn{9S7r#p74O3-dlIyntdkH@qI2a;XQy76_+vjUsaZUk-YE;AWyY&z zqM=A_39SGg+NZf53kRx{RFJ=*AY&?lmqLd@zgzyXsU19UZJgnQS%80Lt{&`5CZblv z!HHZj8Lh*l$HBr&!$tOOU!mgg#5lc44iz7-;z|I+01_*(_ld^#yV-Cf%`Wj!VECUG z+FE=av|q@z)n6DpdA9o6C9gsOlnDIy(!8#R;c?PAkMW+u`7k?b1+z)1Lin&!6;~=_ z*5xG^@h`?$e0hSpCyT%8E+l`F)``P6$psA+@hsD4)iPqhTu!KE!GajAP;U!r7(w)C zs2v2Z6>xJ}qQqZ`dfdX0D9w__Wb$%lM4ycG+droKw-l!mFG zkSRsl{ys^gqSR@cy!f}hvy8dC%yM4F2i@xeLHW#!cJK8`2qIcw$Q_3IUPQCdKRkB3-X z-aEv=d~^8%e3}+TFU@G2$VqPArZ}y$BYRv14-MBSREUCR>3zD}%ou()2vlbP3$65w5?B7D*U5l!#yYVLYKt`cr zj37Ef=OG4ubNldXjmp<{);vtcY@sQW%k?ShuF;dIZ0ovWydBrS{xn4tHJ*KDi48Am z9(3lR79gjP>VaLop{YX>t6eS%v*pt-p|*wF)!?xjk{&J#AjVxP%k!gsH!oJ;9M1f> zeK+UA2T~A*7Ycr;x4h(xd3FH7(xQWnv%wD*SiQDf2tq1vI&|kD_;Q0VOq9Hm)%lfh zqC=2}JTF+jUkcO^9MoxfSv9pzEvK0ZMo&v$CAb%Jz5yeTRG@sA5PYDi!kczBec5Vs zAnIf^F3dp;;qxBd#{a2(Jh=wYo0obLI};)@dPQ14p4hOI!4$*t6!_$0pZGs0Tf_Dm z@*>Mla0DXB(O4(|l8cy;N#kK~ugt-%GnJtM8kYafkxH02&BYQH%ycW|GpjVF2lGQM zZp0pby)#|JcD9n`l>P$kU@t30^6iYL}D4;7;pZw$(e9N?bCy9Ao$hH7I@p{0q z#@(r<3qzAuRcEBEb!A|?45O;mLmkA_BiYxcef(O6e zN^&+!7LF>~xZQSJ$2PcwFlW`mDZIzw(1?v7Y{$S4ZM`V!8pJt@pY%o{yN}k&KD+w{ zWh>`id*gcmZAm3$5^?yNY%~r4h;o+|gHkE+#nS@$bvjH$VDhRaq)ok&sluKrAL6~t zAis+($9)E@2;6{!bk!FY6Z>yP4ccFJ+QHbTRl)Oh0yDKSKB$lSD;4y|f}W^&k3yR! z7biXF$O5mgLwHj&mx?X7258fa-JXXa*&Y_2%As@ZHdWe`ah%!x#4drgD`uwUq@ANW z8HK!`7X45c7rKF}5emOZttAG{3J-d~>5oJkIK zuB`xM{JZs-46c%k2k&fo(1jxgbUA_MP!`awO=QZ42oGb86SB7OLz-)!D#->8RWLrZ z{K!T}C9FZ%T+Ur3g6Z;FKBj}(grJ+2GrH7rZ#T~(Tl{?czL2}rGj_}IbDHZL6Zf_@ z_h=OhIsRmHKiQ3xEcsao9yJe70ySOA$k}z31^;m~ub#ya-m~o3x;F-!D=21kn;WbjOgE8EEO z)Dby+`l2$IbdUrQ*nC76hv{+Y;=sg|JyM!(_(T<|o!O97l2UnpCCWA1wFL~sJ%gO? znJ}J}NH!p)q#;700Xt=~0`X9arV56zIU7`NI+NgBB;jn77}tT3xtU7s8RMazN5o75$u(Zl(aAp+*FLlU2O^l=7WYpCiRJr z)QRN_U22?iL*cf>Ndp@5S;1AC0nOJ=kzEtz&?!_K;>%P3bSQ@&aMSCI8pAfp9CMIA z#%^1%olXk_$y9+|ZIS?lpKsV*gIFX8E7sp_jBc6=!zO|a^WCa zL}N?MKa4zoid2J2h0MWNk4ruRg|DM8Y#F0I=?IjpF4ePBSJ3pRr3wjOfCR9|0t!<# z*HWv&^l%Rv;>T^ZNUpTLIV&4%-SpEaW#A7kI=^IH+y}!fTg0=u9uV?iOsM~W6rU|KR-UwM-Qh=p5#;ma7{4{|Ey15wydU+ zg}|8+yYWR-uLarCjd54KsinL9Mn)*+-6)xn&wAd=0q{07aF28hP5-RhlA6pAh5W%| zYJjN&WR2Y{s73;hzR53d#?xX^3viCnm-|tC*qm1>2314q6&sfY7eO@9YIwpF+@OtjGD*)ti=o+KAs2 zO1-cCC3}XXXulKNy_#uVQQh@=zoCn(S8+I%ZLXg4b}inYS(iyse}K6GnN2vF;kyj7 zuE^0;OiF!C0|{4jAZGEhLJN1|k3}Nv6$b~AftUds=tvK1eq&thzF`5M&R>3McTQyo zjl?~z8N1cFCix=mGg&@vq}jHuxah~sOEaj06QP`S<M$Ep;;6kEFj!%~0!DT7N$ZuzPO=Q7ELN(w3l!=$ ziv%3;>!a;06W1b-Njuow5@9@DW#qjXj#0(<>*KV6wGbxQ-%{{ML{Rkb`$ugAW@1Pj zHZ=3DVFFf{_z{b-c9vsDgcpBlQAN08HeT;<-`|_-|7PeCIaUVf$1_M~zbuP^w8kh0 z+u@K(s`CYj__=}~=*hygBuc1kl8G=?lp>OWA?fF0H0oh_vL1OZv0(ZA+c$d4@GQv| z;q5Yx3xHIP$x>ZKzQ3MHBqNS6X6QTU>UD+CgW@lzR9>J{D8_ekfS6yRTYMcDthG%E5HkyARbQWhVOuJ8}9t7+^ znQ~QyR70F9*?Hc-c#Y`;WI7(tP--hhl#S*8+QgZ!BnY;yL2oWlco`E@p8Ejs2wfV; zox(y@N5RILwv!pc7|jDS>_TX{!)OruFzg&f$nX>#zH)uD()KO%_R}r(Pup&%9iGd) z(I#JX-0O1^aOZ0xN>iQ&TPYW++XJqbehkCOB{Snkr;+ryc8O!8)ao}IS*XfvvJ|WW zk%Qs9MH)$=;TF^~VZg8|at^#?z~;xCC1qbKpG zOu+fsP!Ex8#u5<6%Y@0r>zRNwO|eY{SzrN~P0%$u5IVIV>2_`sQS)&mI28&3~+BTffcM}J>)}~icJ1hWw5S7S4<9xn+#T3TH zrNivflKQCl8m-};lF)T0yF}hQI871{6btF8Bt>Kv?%ETm;fi`Rum(e&tHa_UC}}K$ ze9WM-?0v`b!Ov1)!ENST{<4fXQ}?WX<=-WQcKYp|vc_NPB&NR#Isw_9{`6%y`n^=K zTE)C>np#c42qiJ6WlMfU49=Vh30zrHMGS_SUpmNEY3Ue4;_og%<$TM0=uUQKW%Gat z?z(A-=On~6gP(HPn7l^K9Y<(no>c~A#jm?QFiDyCo*1emboexZW+SL?0j?pTUEuFo z6>1j9G957>v*+!6%-AesM%6Qa%kL{lF02wFP(RPL84_~-uXWTQsQw)Cl7P>)10xQi zSt4tG1_j9aTC4+B&YxYZ5~Gr2(bR`lt#^6 zbzYo2S*7Te$4_pOkBQyjK9NGoW)8z!o2I|WUXD(!D<>cd!mi@t$mX_}B28zs&Pm56 zd+7tcJ=M(bF>l>csjA5cixbzTg2u9xby*#eI*78dAH}id9#tN+Z|g}c@Gu8weqRtV z1cNi#R%<9OdRNhlfrd|`Rb5&r@$E_HltOz^XsBC{>#{$h$g6xzchr`o$qJ^WHYR37 zGv`N>tc?rIRJ+x4o%G07$ zM$Fgk($TBhhwkbv(mK1e+Ln&sXQ-tO+yH?A#9GfmgVAyOf*B&vqBoM8i+YvHm*rv|-=skNIhBA21eW%KDs9_;ZD!q;u z?NlnzK}uMa`+pnZ(B{f=IjTFq3eK(LrTQ6T250^jvcgQaPfMeLpjSSD0-21nxZ)A2 z5hqy5luVhWqZ0VA3+ihWT64_@)mt=ruLwQ81>bK;D80Fec`ONKPw|tiJ8+V!PPVG zZug0LV>wCl42NGezP7ZRb0_c{bnfA3!$3ucznTLBr#Fj_Wg5e-OeeQj(*2UO!!J+aOKRRDpL;Gu{>b%8>mBEFw5D-=otUl*bCINKVb-a zw{(K+x0o>(n8~J9KpoeCQsjY#JP}cdT}c$%jYk09$I@rMlt9g*JBo++!A?WDu;I*6 zeRlcV0YLfjRwv*^F1`zdAmk$N%@)YcrsKQXq2ew`R4~S>0r0OE%9;UGwum%q;$RKJ zr{uabBto^%@?jLYnqKc!OG|fX>gD0i8`E=q4OC1nj^&w{qSg&&So9t^9C7VMB@f1whtwX3J|~pQo7Zs zrmW{4?XuiqVSm1CPUho!mx=HnoKOr>*XX!1HESvAEXK4iqLPp=*=kuD6Q(~aAx>U+ zH$8$usiFj+xo~fy;F}uh2i6Wb1`o>qfup0L&uL3y;bcQTXtldYm8wSn`CSg+cLp)j z%{RBC1-#(GB8$rx<#-{b_v;0OLwX&*4i==QOJDy0@}Eplgb`u#Uo~5y#11T*23NzH zRUo|KUsDcFMjU=)2Q>&yaUIrM=|P)8p%7Ch9Go}ECW=;PP4Mp+$6nuO-Yr4R+G%Nj z=6-LYYC)%0@i;*6=ZpRW9u?Ir$D|9a?+dpR!Qe^#8Wte6Ia86Xo@mNL4R!h>r*SQM zTC=0)3-2i!AYG+)&HJ*w;A79{6|&qaGF4uPD8;0Kk;Q}?GNo)Uq6?48+`n6D#ouR&ni*u4#Q4%WJ-bSD&05yY;8xe!Gk!pvxcVrxm#)DT0k!D4U_~T#RGS4tq^Tl zO-UT$NCM~?kCCC?dVN!Ji~J*m1Vjo=#%R!#20JUccmaRYaX@;ykuC4c;th2NSKrD# zY-bpv;(1-V2Z+9i`ei_U(P;XbF0#|fPl|sdl3sz+pM(G^!$#(VWmF`hkYY^9NMUOw zf=PU5^Jy3c{;(UFI4pz|>@P?;Km3rdXlOVO)a-MYJ7s(Pu16eZ(}FFAmBiVv1ha2< zMghdzgJb0mQ;2>B?5V(l1@79?rT6BUhJr3i7R@g2Z;iy~zCw!jAC9tr|8snFGynjdw4K0x~;{Nu4*&AG~hHv4|a6p(ImMVoT=k>Fi><5{x)?Ocr# zJ~^K9kIQ8*kvJGFD4^+e^$)xK`1~VzUT;T81S37OS))0PH0(fA&h1mTFXbFbq&iHA zXK^a~@0jWP9lQ$a{#V*^(?tO84`P>Cr)8ddHtYC7>mow(*cb!yGrGZ^d*3lQZ(H8( zyI%CQ3W24nL(3hIO^_ue#y6Yv$EXS|(qL1c$E8WlR2l$SDU)Rdda1iIXhe+A61uli z4hk?ODE~Zp8EwvD){DgT*eS-YwFPqs+!jb!M_4ez%KoK@*d?sYj~rXF1ldRXkQO_8 zIo(Y$B3_-9n!CzcIYwh+yBU+X0 zt(K0Z%!CgNlFPGQ1nS)OXjC9O|Mc)5Tw`?p>wj1i>PNo^5FnTdE%Tp#k3c7Fd2ME_ z-68?5b8?(!cAHVo$DwnpJm;j$%vzuqUl^LwUx|W|yM1S&+c={+4Dd>8l1;4Og%%;P zcklYI91d#2ih?pY|Is;3`rgxCc8_=$05GFw|Zz6S& z^%`y|S7KvMX#fA2%1>?pxDhB9R`jO?3jk2`2grgHp=ylNbx0w-gx+CQ(V1b_{(cr{z1LIG1P`wXkMLlM zX&GUO0;Q%fc-yG5o6cilfm~5fX~q<$j&&ku{i#Z&n&DWO@irv-m=e=z_u~w*f}TBs ztdPOeIFHmnmbolgr>*v0|qC#CRnBckst&P1D^9aMeo6o=6THLn<{32$kM!(g1H&CT_?;a@}pFcsU z5ZarO=tW3T8mFZG%Yp6+7i0_Gsm;;7{jy{TdF{=)v)_>g(D}y=6gGZe5w%Be>)E$A z`tL~8{X&n>{sbdl*eK)pwD-shsA*^@!EJ;lv~cYYGZWL}4Tz{NLGscP#)Yc}nC z2qHjXX%fIE5sZ_-{^3*ew1Z2ujl5%j8l_qmI&C-{rY~N8lYe_b!hL5|)$K##hYh_i zfaX0uc_rRX%AWaTii2;QkkXq2@D&LQ)oOj?T_(9J!$;kIKO@7`366HgSMqX03coDG z!wTgCskcI5eT(6&6%Ri2U3XUU=Ne~~)+x3}j1UUQLVvvX90m>6GCRd>#6bDDQYkN` zDY9}*GWRIFI#J6@v*g|{2nYI|jI zIW+{sg@h^1&%(peHd*caFL+9-5n8Fd(Bv&h;j;%^=l^f;0x|pqujKz3ysQ)vS}o%4 zW{i0AK{t9xms|75UlVy6gOC=Uzf!QqQ|O)4F+a@2D@zHi<_q8d>hrZ?hrd&ftM&cy zb|3`d$#go4=mK~C2SVZg*8N*^rq+phD6Ql`d=Ys4dek<*|M!@UO=S8$iPL3tBWXH+ zTF7NhL%s)?wj$A0|9Jh z2+C>P%khqcUFg3_hq@XV{@Z$hp%8zrSmv?<1gS~^2IdpA#h92_KazMLrvN~wfAG&u zFpEt0J!F7pj~dbUV-c`2RSX2@2c0vE`<4N-zTOLkgl^HN55z7Q&fb0&r=;y1>7)B|BM8* z9#Rlq?Z$(B1eVJi7R;ck>R$x9%f*y-dypl-%u6!Op7ZA~2Z%l02R}8o{27EMZI zEtCDv%;8i9X_S#;-FZXZ4Q>TY4L3>p0xA)vF~k>aSP&DN48m;SKJsS>((0n5sZ{q5 z$$6wzc_57L^g*2>-@q19A86h9THst4=%;#~EBTeE2XF^aBZ-zY)XFW?INi3Ajx-av z%pKYtoHs)LvZ4fuGSgm#yBKvCoU6Ehr=ps}M$mv@mo=M0S*9{W4ZdFKcm`vhuTc*b zs}-w*P*!@<=#|c#D?gNz!*ky+tg?NuuG;1~6ZAj?D7`WTWWvql1!8 zbiLQcn6I1Jec{YtC$qFU2>?X(ygMIM0w&`O0mh<3 zmc@!9$4oB(hjt4*s|x^pm=SXArG?`)H<$9De)=6Zx3t@Su(Wgu2CCQ)6B$Q?tmoId zzZcP{TZN1LUvQw5`LP17DM6=y6V2E-53kAkxu+535{!Xy%qR$wbSCHAgJFO*jIqYlr#@Q6>gTO#?&z4d*yP$r^Rac(T=K;YWb1#K4Awia;C$@& zZYZG^M=xgRT#lG>Noh4$^;Ok58qP~A&A8UxrKsZ|W(%6MMKPNWjnW`)u$nzq>*QwL zYhn*SO?t)elgQCYHZ~G)^il+(wZaAu)`5pK4|lo1XN8U@Jq~d8ZnM@1IPe=w&f+lkk94Y*@_K8TpEbd6 zWjGRx2;@=j6wdGV3RYzZTG*@M=c+9;ZP>y0*9IvcD}KBM9VY%XWA_7kY1C^~l1!?E-EdODmE{&QWqM#q$C#ZwM+>7q!v zJd^JtKO*7Q;ZJ%;mb``n);^DS3-u&{OI$`P~`Rl|NOTaP(9pwj}FjCX>K> z^>?w`w%(U@qgfG+vX*|D1NQNoQHv%9_SpZo753hSW9Q%Bne=Zc(SntGo}VC?*JCvb zq3~hw*<|43vg!6OSL>60{Yl{^Z5L*cFyTErCidBFBq)UAa5bq}17OkWdNLcyJuqh~ z_&t!ATj`DWI&F$OzrH{I9{_AXlfTt(yT^@aTML{BVAhv^+0b0p0WZYw42IpLl~|Q( zAv)oq^qUTLaaO`K(%N4DGC2*`6=!s=000MB;Q&@BA%H3R9GSw)?Oq1Cp;vTUQ8Cij zm)CmHHO#*jURh)6Y9FO0jlzG?o3wCP0C3tXI9bb@GH*^Rsj-{&s1~?i1s)#T!OQ9H zNF|)_7+V#`bmfTnO(I9!@^Lo!@H$sp_uC*sBK!e zKcLe_Ps)l!m|n-^+YjoSRB)&vMBx5^u>^%4Uw`|d3z?q%G)R2dpY&dJ6W>xBoLVyn zJZ$pZiW2X|HYd1B)%v|}bXCpXs5-Vio^XEsfWn{g!Li}%m+}dR&Vqk#RJsKnrJwl! zpoejqi4N(MT}S}nPj)5XoBpSv-{h7uE%C?$_boQ?c;2{fss97aNH)S2#tWWJNfv{p zk6^N;It5k>`B%5uB!jg6 zWxF~W5sx_^fW$j*rBY;TWRsN$z5d&j5Iu+O?FeX+LtoYp-RhfX#480-IC_4zKOdj& zV8%@vW`^BJEE06ZouF%|oG|wH?9sLEoj0Nkry7bjI|pr5fZ7Cd8S+dB+$Edp*BzKEy*@PGj#8~$ReFCcW-hoJ~J_K zdXe-MAZ|zv)Q_T;krZV*eIO2nIi2pc);ON6HW+GBUOsg}>ono@EUoO42o?_lez~0p z)QAlaqP&UlaB<%s3`O~nA@^5jAutPk+6zD&5=JAbaZAc<7WOuG$Zh*dwaSy8%l=aZ z7#0rk=c?2QG5Cwv_N=n$AgEu$nc+EhXiRJ3ysV7)Vk#XqSWDL_q9rtrK(R>5m<^-P zwPN~+1N;9=W;$JxU5AnYsr{%68EjAvJD9ms|1gO!f}K5xx|jt)ByY_&G&~MhH;CK$t*Q47?xchf}}sWKv5Rg|Axx$P~$EZ>X})FSt`2~w2Df)yT=`STwKaXH?Vun z97_Sq^%C;jX@!(rFKH+Lo86irBwn2SNc)U%UhPhwu%ca_is?!1^uOXrW=gB@$WHVi zqQVDsnPu3Ta;;bA0p<(^w628}+XDSpUp7VmNRE|wSEF+XFp?f72kBIrN^uyZZPm0dEoJ%jYS2FJ}X$^`{J#? zsvQwSe(S^TY_nlmk4Ql$(^12vF8LDlp;5nwyO#Tz|6;%+SVX6cvll(=LrVw~NaT7H8A*e))0# z*au6TE7(!5^{&cS!;c3LQ^&iQJY4tG>HHRFj>rc@$wlUMM9jLc#bnI4SO!W4xL?pA zHUT06)J12&P8f4K4$ebx49WgZ1VO2)^P+>$8^3ONOpc*FUeiFklLBF@6!V;$g(H0gRzsRcpEFI{ce|7ORXxiXle>kgXSkHb*eDJI47o?7$7BCmi zcq)s+wzyom*8z-=#`G1yg_Ic=>d3Oe%x4$yRZriL<+^Q&^ zhzOZX!ph_#UQCuF*{a-%mI@GwiH9}d*+cQO=sa|S^hTfhbip+Aeo@<68?>2|elZBL z(S|^}ADbu52RL7UL3lMZo~6}$s|FbLP_OQl6u(m9KsD9Rth$Eta*Y6kofoCTG7Ff= zi>sMuKsx%N=Xl0oSD<`h9vY6#d#T2Op}Hrl&NGop>NzUKuc!V9gCqBmy?s6(i69v3 z@NNU%29`~7JZ*E4S$lGCmt zP+G%OJtV9&8?DozkPL!Lpe)-76w?66nkzx_#3RkEf{DZH-D0>R6uyj+@p600_}`!x zCuXDCI|qC^BueTLE&fJeP;GjiZMU=vK$07a$(F?4`k6PZrR-itq(oRN{cCmY103kw z+p=IOU&2~Pl3V_S;lyz}9vJwj@cS1!5>>dfjMO5oo&hM}`qkfy`jA&p)|?fBDLqbh@#@a(5`Bv{j2IetHHk!7YgzGsX$Qfx8}6>s!I85!cE zX}#dqB$dXoFD+o7%$%}n$%L5!K*p>e@xPHg^`f*1<18|LLRb>@%zC~~a?R1iBjr=< zsi2akxjR^aa(cg=U|Kcji9JqNz+14x-GZjBI=jYhM`XWFvSqg$;M zGELiT)e57mHnJ3r!9V~27-5;~4+E*y)*LhO8fN0GK7}HeC}>jy-zo<3Q_HX1sGC@e zTFoQG2ouF2#pu)qJ-5;MzuPMF!r(RCVDg7yF3QuMaLx}gJHb%b#@Vj;;2rs2DfkP|X?ud0H zS|#&oBl?ca3#`SS;f>GukLd2q0&>0@U6FFc4oK;daQHRN%+q&xWf;R?nkTO|O+Z;_NRP9e$3{4HUfw19b>|S+%_=n3T_rcI`vgJD7rV8P{d|z_2b-C}pCzWM9s0$)KV6W9= zzyU15h6nmHXG*Z##59XhsQ|KG+vx!dj~6d?V&j!E2Hu$={%ek$PQK~NowH4Q4t+Bt z3Fk(6w*4ZUAAdxpnC!8_5{Aq8fRp8bYst zj*7p*>3M~}#r{=XquejGZ61$cPSEh#Yud&77x#REuBAoUN6Fwxq_hD2Wi~ud zYM5<_I2`{lt8Sz=qpt7bA-i9^J%Z z`_l&u<-ea0qM}Ixc|K*laBP7i<|!SaugspGe+gBuo$RbqnPW6~ag{YAvJ1gYVP!an zHiCV0dDnOTF&(ooOu$zEv#QZ65I#p-!}s^|boX@Zx9oH_%U#d6MP;h{tMyHYaGa3`Lg=)^q|7-=_84UlZCx313=YU7x!Xig@< zg&Mg(F{-T*NNtcKLo()f6Az=|r0pd$M`Ct2H?}Cu17EC164}Loc~jIoNT~4)ifWZj zDWKQOyMlBeoF=H6aArR8QSJ%+2Ph_kzM5XvF3ib<<3q=}J`v}@p{%f?r>7Xm+Z55X ziyAFTqknf~+Ba_~>YZ-n>Hh6XUs&VX5pz^SIL}M{TLU3Z}yc&C@Zhbu+uvJ5>6g4_nAr_U@_15+drigL*09 zRULt}Y!0ZkY8c9lNr1%Py{d!ND}3G^gy=hYA8-HfE_NuO&GY4yXsNiwg6h0khrd^p zoy+MIidme>Lg4^lTI>6UK7;sgmrfG&GW?ji7ILsJG2-=`0FMKN&*gMVDWI7;e~b0c^)DEWKZGQ~529f{ob#5rfv%*lN<_61R&;8+TM9kk z;6tUiNhk9JCYoCN^o8+xbHNuk-ue?R+xkO(m$N=u=z-t8H)(!-F3nUks53b*PVeMz z)VngTv9B1bP14DU=Ul!x>ueoZGTk%}T_P&0JxBC{D?VPixA=h)___H<3}3g6v$VwD z6J}m{ifjAk6{MU_So4@bC%$d*5oZSul1vzK!g~tcIZmBbMP?vcyUizeDAx`@vOg( z3riNmMLV$dljLsDxiJ#Y;{G6Bx}CZGD;||X3Rv#?v6vY5aeomr6Ph4*e@Kn`X8;@v z+5I&zXMS*)diOZ6JD*XCv}(bDpFsuWcTUGpd83mxo5K(NK||XpU-5W@d2b zZ}PoOndo~XsJyqVhCk&}wYRn+tDjOpB#*lCE7wCpCY%*+z#FK#t`$}+??n+Ig;Dx8 zNC}Xi(oG&^?sE~U*KOYI_+$`=4iaHSzDE0Y!t7~Q zQ{l^;$$4kZ2brg!@2Mp60paE9LcIGHakziKA*6#=h*MP!WX>-CbTfZCMF8$@R$p<) z*WshkL~443NH1IsvatA!9S=+SK)wu&r=L@eE9@t?Yu}4|eC$aCJ$h_NVQkffWe4+9 z0OFhmlwwf%Zl3a}Mi@Y&ia7gndu0#p)IG_Iji_9BdU`Q`weC=`l?L)!%JoXQFDO;S8VV}_HRBxTf8Cc-qCE@iXC8Wx|}ESa{jUAfgtTTgZ0HNJNUG3d#Wg;Oo0V!C_CBl zE48|Bm->7#ndSHwk<(_+0s2XHA4@V+I6hp5270A@6?9D0Y>p?qI>sTzB0Tm|-~jkn zgBQ}rjO0XN#@EEt^$f<+W+c^3of}K=3-*{R@X?tw80zliRxW*#>g|Y~fb<3fBJFNX zc)tgzV9noz{%V3M`-p0(r)InwhOYf^M0v$nT`!XQidYh~P0yxqeV4eVBHYRd*)TG@ zQfb%K(fI$GDiM@#eZ49hZx0?K0Juv^|8&(2qc@lLMF@AwZ@Fm;&QP8I4=ZY;5*-&B zj>nerXw2%ZFD!}(0Nu>X+vYJ5+BEzH!Nyq)kHG?0#8*@-7n4I^PdC{w{L;~sIZ(q^ z2e8NH-=4B5~Zg~j4d1)nJqF9PoNG-*{7il*fUh?AGsHeTD&vigwBK&yZn1j?aBl=*^ z4LVpD1?28bKD)4^5HFVpX+HBn2Ay%Q@w|_Ah~EaXHMCjeaC%UKewOjQvw z&C4!SCdH`#J4&w7Tg1U*3F*9{JP-_J3DVzAxJ{SRP0Sp0yTV#+&hc1kT*p|LbT#(} zUrxiw0vvV7JVqG6h(25^w+nsKNMHDJ!gl?*g-yitR3bBq7*M zld;G|w01#cg~000022`~Tv5|=@m2oPWkx1VZ-@fihfo9Ki} z6M>>IvkZwz3gh4SKisdBIab;r07hP9_v63-@PFp3*JY~jN@cg+w4{L8`I4w4>vW>q z9_&v~wu2emNBeZ2S0{^%N9_^20Fshhzh;eT+VV_5yAzt1j9+2TTelT2D}egF@1W#!g{!6NcMBfc;P#2wd7n}hfQ<|KW{ z%#iAgB~JqAtE_y$L@%K%oq-s`00fVZ+cBxJwGbCFMEX26q|Hq6g7&srnxK*b9v3eoF#ig4S2$?Z;obvI<-=u-&PD+Sm%lAF$UF&5IPipdm;1ir5!|D6C2`VS z><3xM_sxVv72+yKF8cFZk~7wANz@-QDR%W&{=uPuPR_Owy=^NFq*ADu!_tSNnF1>F zeBoJ{sS=ZHwVD8`dW@P7dQKe0cPjeHa0Bl5Cr`urmoh|B!gAO;dW@R-Mfl2IJf7Y4 zZzkH4)c0S*$&&yD>i{#q!iw@yPl8O6C&p@M=I{feBRu|>Rf1$xHWNnF>2-Xl5y_EA zL)bsgM+$Mzfji}fV`cGgF%sR{B?edM$#>qkpk;a|b-)R|jk->Gi#%i1R$AMz7s(}S zmOQMm!hueMnvH9&^}9%X838dxUdalU+f*ql+l5qZUagsiMoc+M|CnqYYO)UimfdDx zb<%4%@8K0TgS#H^(bYqLohg8w$&Dp<-^)b9wws%|f@Buak2a}C0$oHHM#U0HI4qGG zUKhaBPlCNi2Y7*bH^U@noGf{M{qMO?+S@XiS0RPE-w4C_2;BluXRMCYCgUSp=QYrt z99(4(2qKG*j~n_%imCchFH2;*a82%gmlsEQF{8=DWy0If*SDiZG2TuD=M*&JppjL_Sz zUCaIsnwYe+1|?$HwN_%jq#`HnC~@cK`16O5vPnm#{ATv3+dfY0QQ-8hI5?W{i znt;`}J6cah55-K6BhxCt;WL-wA#vb{-PTtYVyhWeXf(NkapcPq& zqB3gzm>feVCp$h0<1p&I#XmpYfD-D37IkFuk@ZN*{^yhD0!TfAXJh+{V*b^{RG z#SDl0k&i{A@5fu3qzUa2?JDnW$xNZV35`vB>hLfe!D!i2N{KOIbBHHzmfx^;f&bFx z7Y2ay5uL-VV4`zLw7uX|opB0&`>>d0JNk0ZdlOFAXmI8Q7Y; z7AVBUppBZco=SrE4Y!xLeu*RDSCS`MfP&NvRb^|$q?+w5CELSz9LrxL(#+(E5#$$J zX1m;*ei-B?>7K@XylM=;65VXzHDcTUrJ#&gMf|2N2Hu{>o_z+=dXil z&*KYxb9O)ADZhdgxW@=fn2;^vb47 zEO}LD>s&aN1+q;(IGlMzH_EnG!=YgVyq87E$Rcz%q@N%ix9{FKQ~F7`V{gUV6B5)ZsiNL7E8Kk=4O6PUSTQRBvFy_QEj#gvw zCR&uOKv6=Jx^%U)v$7W_9X!%1*tDZL&xsFcN{2D|_z``@5fTex<&h((I% zr6Io~LcL6avmuROn^dDbp1(db;Pt@SF!?;(Ewn+r=J&!Wg4Ufio!w{6Qi*t~idtAh}bT*96XU$q9?HO&k!2j;8<3AHxz>961vVrev;u)T zU&UZBSOt;^m1jK;R#ouv?7zxWm*D8Id@Q#tp`YKQv&>%#;$AG|U&Kk^pBcpi8>%=b zZCWq^Skb`zs3Rz_|8kXYX(^Idgc7Gvq957g@hRs?L~q`!D?^kD-&$8N*dxNI>r=U< zJH!Kvr@^J>XSHzuRg)JNAQs~lR!sqxWvbko*cpB{vUtkkElbPsVrH(4+bhrFkGi52 zV?fDyp=we38R4CAY6Qz@Im!YpU(=s;0s_V1c&%fWDF6}~{-e^Ld&qztBYNS>w9I4W zYq*Y>J%o>|lQZ)W10UQ{tvZ^Cu%zo-!T|!>&>+af`b_p&I)eukmAP&tN-8K_ojk9m zX#($LsCyncE^p^qg8x(25l2tus+TnJ>=Bl^OzxApj@-O5F&bJcf9h{cuqP$x#M&O8 z;VDg1^M_icSd66~LNWG;FtR-iQj3igFZt%ev;2_GWazFCjSxM3w^4c=Lz)Y)Nx||# zjY2SNXb|8Jr>N%`$VV83$W$$@BFuU97oD-;x^M`Oo_`?|j$-`_;nc8LsWY_*Ec=wXgs+%RNwo zf58X&C_tS$@H!d)l6f+G*3O(wEh$)tOa0vF$ab`5rj?Da$=4Avh~N%aDqMMNNrd=S z$G=nDXQXm!;zF@2VIERD&jfEpYc#*jOq2lrqpAn7f`IxU))6A_bKQFs$BRCpR)jk1 z8Zv^~Zl0J0`}KcV_x|iC(RL2%0^vhP1k70@lSD(b}ZG7PXUw47Y5x2JO8~4 z*z3x@Lgz0l>dp1VqQ+z(Om;ou@+&8+v}Y`*dKVY!6mcyGX9m)SrQ%F)fvc34g4koF z03#P#j^q}qqv`746$%n0^1k`qv-+XL(}=c*;f!8S`zZdZr#9(3GlBn>t)U4T^R`z0 zr6b?x=u&G5W-fHroc`U1oR3VpkTm?!jZ!8f9Y76zqaW-UtzD)YFi6FaVW9K-nHTYn z0qAojXkjlfBP2H7dZjZKQwfc>b3<6@jDeXLOMc^aNjvoE4UntS1!5%^@4LfZ=rWE<(JE!acQ%oK3X#JcgAn4bl$ir>vvCyG?YMb%tT|t)!bHO8)RI5 zN#~KCzgpxCYmoyQL!VrFU1K>UTaSe(UhU5dL{?8zM)%BE*U=M*!}6^rZDKkSr1gw7 z0D-Thqp?zjqeaii2-lHPhVmq;la87ih6s|Wux~2hsua&4iY1(0k4F34x9Ja`y{ol5 z_6x7$s!lfok?^TCsC2zUB`QqrR@K7d&Nxg8@=ZAOJYE|>^Yjd`SK2%(cNEiXWY{}) z@Y6+~fkib-x#wgOKSj;eVW&FAe5kP*cVOd|)*t8CqE{Hy;^*LNPK|!Xo~Mk*?I*uL zTKA8J(eW6W!9D)}DLyKY8~l$YX_a@MDHw+%fVwE%O`3(r@Ng`xTu0-AD7%8I|Jow?0ju(5(pr z6zp~b)__kDZ03z91VCmExp}Fyzdv6S$#hM0QF*2&p6|PCC6lb0uUe7>3zf~w{6tec zL2QfY%}f$0wR+5*^n>(uwzl3HN@;b534tGZfrk4BPF)$0w2p$N?*t@Buy6gADh)%;}k14q_`K<06r1XTDwqy*pE<6(NSei)&g9R-VxXIsKBdpxP@e zuW%B^x=`@W5EMezx>RIfzE~Zvt~7luT6seOgB5#mW*s$G?w0EAq+#Nui7mW*1eFA! zhSzotC?t;?Dzz|`>10GjZkmA&nq{Zzf+>M>sR5U~W|2V-zacpqhZ8cVr zzsuf3+NxH$Mm}+p26yR8*PKc(G#-i8 zx));dN)NeT498PT5J=8+e^oaejh0F~??ojB#)i|03!J&q5YA!rWtF+w?ZUtF#yD{K zC~Q=(%J9fmxw_xblV}5}18W$PWZ-i__9nmLN>rnAw}rMEB~`6S7f=sR3V!mBteSN7Zmq1PVzmHMc;cymytJbo4Q zFy(OfyKmF$R#97}Yl15B=1coeP^reccH8InGYZH2uIlcJ`}6hloi<>6y|Pk&!>-rt zCQWuP1yr(^yW)rtj)kl(Yte~uB4Xns(YNleG5RI59y$*JMvj;Gi|xiq1tZ|ZfuBe^ z-#)m9&>?}BtILAS5V@rFLbh11_2{>|cg)>B`_1z9H#pgrm&GjWbRHpBZ~stjECPvA zW3gone0(~+Pm)6wCX{SRnj2$0g{+sPtQ;|(l|i5#t`xog-6167WV)^1%7`RfQjLo< zf;y&fvdhr*9(w4-1IE*P2BI6A1#HuVX!5SHg_kt~rJ>t4{=oz{H_ih5Z5^@ro5Hvg zC&36cCg}b>3&Y-`ObgJ{OOj}QE|BI`9I9Vtf?|zRtH+?BhIo+WIsMs3J zo;B1vgE?lAJ;YAU0M}JXJRQ~2`D)RzscwCD-Q9`j;Zrk{kMHq);iE}QpxdI*f*o$s zF5R{ZkCRcJZj3nt!8)-+kV`yj*nQ_R5e~U;YHeT6rb}D<)$xI10{}+kic6RYVAZRS zz_UV-VbMpF?Xvs4Pc#`g^7Ughre+oi42zhU@$ z#c8Vwo-R9hY0$UNri0Ur^#%(z>q~k#*egy|CpZ>pY&vZa;=6>+OlhQJ1J`V|=W4(5 zMFo!0o}|JEchw&fSw_HAE_~~G20=o z-&Oga0((acb6&v{FliNXnht|-uY=PoC4^1>WBhR+LtQLigo1)3s?ec85J<;d%RXG3|sK3vK3JxHB#*|uF0 z*Fafp%1#Ccs(@9Y)(9C&(Yn|O=zCO_E-YF;eR%rAtQOFQA2WMZw^0gyR7^bO{v-mx zcs3hMPfT8^6+?)WYzHN&>eYAAiUP7t0q56BWXHq9y!lQZCPNA>k>6{|{q0E|*c6YhKx~z1SoZuy*LZN2)(8rEAfNah)d&)gy}q?Kh)4fD3w#W*wJpG3t4*W++Ew4r>$O zOk^dV&&QLX0f(?aWYVejU}_yR@5k!j(cS`sAJaLD zz_h3Z#wg1CrQ4f}t8E)O z=Yq~z*~rVk$|p~F6=j5T_R{5f_l@gYc|V+wyv}X7fVnxv_kfmZqMcQr z_?{u%DnfeMG3|MF{Zfz$ybA1ag^FPP50FM%spQXMo}NMlp2_JROUV`VeS5^U@06$q z*u>QUBHxdXGgR@B`Ei->*|dT>9fmQ^-wP`ei}XTs=nVTa;Enn`BEm7rKY{B4;)k0b^bk5a-Ssd3l2qyq}hqsS5!CKgI@58 z_-h@}_nel4n6bQW5wyo}spUQa3LX0Lb4ZTOg5a3N<{?nK(2xh?Xt}oS$JYMiu7EUo zUYr?Gs?_#M7BM9#};WFKX?ry;$MS&a8$0xAp z=z+XzWkNFtKYbm43_n}UOU?Q9GvK}RE2A;C_}@BwWCDH1iA1ADryHZamf%%z5L=3| zVjC%&s{(UHy8Ftco(5)#CNs=kyJq(1MO(8&mLkCio)F8sq1ag}6VVuv&SKzp206JG zCMr{p9({!ecYMW)weAFuN~WY(?8jd=%sw3L>77@q$V1Rw-<;<+TDGTk{N6fB^%q=TK(Rnce348$x>alhFZ#CX zn+)QR-QujgA~6yU+b-g_xt%_u4N5k^S3^>HpO?=V_!4M~i1v2k-Her6vk>J1dZzAG zR|rgqc}j&f6s7?v-jWByEnSgG4t+Td6v@Q+QE7~f6w983goHKEB&IDrPmNbd;}fo9 zkCArHXJHuKMgv1cpdp}q^)yP3C2eunMq88Z>#Q-{|LG6g_1xN_zg}LhQ%(^&Ts0)A zntd-Sos#8_e_T)SlEDza&9yVZm&B{GDV1v>T9DfC^6@}e!j*b{AC zLdM8%H|kJiN8j}JZpRoD!D^!v@y)GTuw{j(+N;4myusBcXABuF8LQ+Pz}$#6i75v? zi;QE12%!?27y9)tnuJoKZbaGHc2*Hv(eYs5zyPFylwo$WahsT+n5acerI7%>)V9l9 zI|!h_dEq?Qy$f5Ze1YjQ(nvql)moBOGRTTsj6ist%#|Vvw)|7E*9AapD%m>J^Qbsh zI?r3J@MRGxaGNS>O~p4q--<7rM}TvvN@`(u|192wkot)Pb~@=4m6X|yBmRwALpvUz z7I7 zH+l?JPPquJg*n(^lm^!HCGTrJq^qc zb`jooohn4VS_^em6!?r%1!!FoGs-?+mu?fD$|5UW2{C2t7G{Y70gZXr@ydK|3Mxz2 zEa-V&L#lhcTSD4GmI|(-&ORQZ=WJN~R4Tk`@z>8@Lt52QP)8|o6~pH5sGJ#*~|$$#%fk{ixsp|`8xm7_Tu&!z+x8HYx?F) zb{cSv3(au9l$iRJ!R!m81>JBky`~J2nJ7t&x~HRh7&Z+AfBa?K0c@`pk~{e%b0#M= zwP@%%WuLzRO>1gAOzwsr(u;@kG5#!@tI_SxzkD^EqK@6cp`lHa7Q}vme1nWTr1GOK z@C^QlB1g~$6`OTb!`ZP5^lB$6kzgDk@t2>s7-l7N-#(NM@mk@Y{&jt7XY0XM=83~zaWr&8&;qY}#NNLw7afjT)*>KhMJ1gzLS5w)$Wwn%? zlcEtEWD4Re`EW=d^IiWIr>TkrSD9e>uL5581gpoXoMv~^O2uE|f#uK|#M#{A2fL9R z1V90^>8-8sfoHqD?3;r33EJ%s8>~Rt%b2ce@h4COkd&`&=8MCdGoiNZW8X=Axhp_z z$Y^+z%$pp?FpWe9ezX53MPX1D2O62EV0LiI!Kx>9k#j+dEV${Ne?~1gXpnB)kd=(T zVNI7bPx+?iLVHJXgVY_9CD{70Ln=25`2a{Nb@`W9jUi5|Gt;{Mzk}u?0?S~tr82JG zcT0!cipKXdd?JZTwQN7X*&|$EjS)lZqW;mGdPa1T1y`Re(e3I1ZnrPdHh?3O#SuMm0xtKw(3n2sr18jW7Ft`CM!mUj{;JDg1Dg-}6 zb3%gG35s2TCLb03D$_>o2mVwTeQ_#E?Oy#R3W|^PU)Tb5pp^a z#E~=5>ME%X>$+uS!m2u4{RE6T$%e#tuc~4ts9pfmf8~#8GpoGg-W1hVhnusMK=#!6#7sxXf$luS*oHS~^iCiFUW@{2UfHy3&wDb0v< zouDFk(JP@5lusaIsj($8sX=;OHX+U=zgcp6!irIp9I zM(sD-LEBw=8*DEY_CfIvJ?a}rW2bbM*0cu9_|1Q-a^VFXlA=08`)yr0fgUpEq|fVi ziTR*m$AG45=huEQkRsQ1k;fOSmAsgR4L_eVzT)o(piZV$KmAj}gFE;*E0@yX<^0<)4hbX83XsEv8b$(c z%KL|UwD~+iz#xAla~A)27=^`}fVE&qf^QiZpxr`yO=>Eagr#l7B<+zcBqapQLB!R` z%8zdE{xLnC>DwY39ebI6d}({ME_M%peeU)C7M&J=aN;DpPHCp|Oc%+oY2X+cj~P02 zIxI2j4+=kPi3^#kDpH@66-~c}xd>|yw=Vw4ZVst0H~7%*zB~Z^nI1~tat*6Q+n`IZ z&)CiUJ-%L8g%N~Y*k440>qNfElOs~~4ALsF*Wy4odBWO~uB>NRv869)A=C>3YUXrUm}4RklV^h0g1e$|5fF z)$L1}IevgldVIYU67{&K4zh0NDcjU}%yJ$Cr-F^QQOpGJ#2V-hjw~XGx*6{Z^C8-c zO7{a@neQVLT_r4gGvqft(d?+Xf^D)D!cZ9~B%HKjjG2b1F+(gy95t+3Qtubmnm$2F zLztN!VZw2lv~K6~Uc68-^{<{&IVFrsO0-w=mnwx5E*I8`)7tb-+z;A8Q)3UyCB_6C z8f=HCA+vua%I><4c>LbbM$#}iZneDG&LaN?Jij;*C)7a~_%rn}B1t)*Rj^tSO{5MXt{-*3eUB2yQ6v6Z5?WeXU|B6kYJHE6fh=W$nCWAl7o z>%ZV=X)Ffh1#r#!9=)bizBf8WaKtf3GHA_T=f-I${mL;>OSJdWO(k5JkK~qy1a!z8 z{p6yOaKyIgljY$Mf|kRA(AFxLd6ahI^Ls}g-;jK|lJm~%*Ax_Ceb&sT@|l0(a1Ro4*bH22$f9b(@C_E3Rii|AstF1o^ix%$onSvq;wD z>J4uVEoMMwwzST&%5_y~>yNM%RLVq?4ma-tMdOvjy2wC_smrgpS*;Ja!%I;?-+%-R z^{-i^s#ML<1InjY#>jS4N$P^SQ5*P>7TFTQgI_00002 z2`~Tv5bZ&l3>aVwx3XRWNzy`+|M^yh?qll&OfdlZe@U(>H!CG9iuXFAK%9E*;*hEg z@Tsr!HV>_g?*~wBBD=Se+@)H0wcp8!yAP#$97`#Y zCva5L?ZlB!M(>oe!IzjF(Bq+EG9#bRIYBwQQb#U(`cR_F2IUtPBD;QMu7576U5ZC~ z&aa^L&u%T^rsgA!xiHO-Uz-?Z0uof zq_FaDWzs@Li(nWw2kN{(5mVMMzg^wx@3*!|_zoAZzlro~n&;cPyDp~4y4H0-iZAc^ zDdVnvF-U#1^)10KN#Um#>8Yd~NSESAs5eC2M(OljXKZzjhp^w?o5RLKc%>77tiW0R zKnGA8j(rv6LhkTP_I+~nJ)u9{hKq=PJ37LNnvO^HyCd`FgZ$spzOS|zv{@Mc;)JMhwnXjq8B1p;wMLCGeuA&fFT z)P!koE5F#Vv>>fl%u>7XpvYtu=`?7HHLubL&?Ly$$3kb56>lYk<#*nRpV8yGCqzQt zc}*aqUcA(=H}r*`n?mBS6{A|Rabe(oBy+Ab(m)Sze(h)VQIYd)Jc(R;>tRG#lZLTp z)2k(8{SPnoNWhD4AO<<3_}?$Xm_WJF-?9=jFRN<$o6s zG5y7Tt60#|F3teLxxuQV8|fetzqvDC%y6AfBy7oCm)vIhOsRC2veR$~TYDB_qM2M| zU3>)_)4g-{qto}=lU@$SSaqY9-F>3VXTtLrs#Yzxh0eh7s1-c;z>DG0yp45B{uK^< zfn9_C|J)~Fkz`&5A+Zxvm+FEN%Tu*#-;@vJ$Tk38K%u`<6dcHY9GAKY9GC}-#R0n^ zuiu3777DWJazgQRz(Qc~Fz-eR|NWK{XamuXM@V%Ky#1TRbFz@S?EOu1k7+mnR6G@^ zE{-ijv6BeQ-E2|J;Pps~x~vdJ`ldXh1bDu)hclC_>3s;7N-9TWUp=XgyU-~b3V)gP zWjF?1LfAqJ1JBnz!j>HGN@r<83cw84JqgEZGEJfk$|N@gYU)GEJ)!flixt?ZPpLXrvlqU4L$ z6Yf^esl)uoEV#^MJjv^c_Mi-4mqXak$Vs$No@kSOg_g2oK zh07mV&mM6+Ko*&uIzg>_u-CY7L1xAmP4U(#c~!`M&0XbZRoC$jk+-jwuGSiD|9#7vM>>2!vbO3h#5_KL!cbgrFZLQ?ejjIl zGSQ#Yw*2u3V@)A~4by@*5H?gGS02xIiP;z`lHbs+Y%S5rR1fSoB9!ia$WB{3LL|u5 zvTq4rYEy*97wpBWm*jD92umD`4Jv;=Hlo9Lahwu#2j42Xh904SIR*H3G%45ioYQz| z_XUAV`@aPlE*@0@nrhv4@Hs^j^xB#I5%i4hYxp&p^b0P&`ib&&8tJqPhk@Fm1ex5{Xb|zT z0CXRLmT>A8gHAF!2a&^X#aOiA*(NR_AEb^0={}b6l@lJjT^I(G@%fYvG6FnC~-Lt*U z^?RQ8xqT6mg@Vjugg;Y~@D;Oi=n3TRCT|d7IgK^NzTF1AQo$oV5gEW*tk&v{$rZXQ z2{#Gq=J)a_AWwSwoC}FZiO=muDf&CYPf{b0yrHqoK5Or_p}dM1vH5>w+9VYR4e!H+ zUmKt=U#`;)WP0QR;fSB4*L+F*Md4SYTF27DNeY5x-a$$& zhqr;4kN9NEpJeQg%{tS4ADABiH6iY*yDp`5ntLS+QYJhVH`4g~ zAY7|J(xQ{yS*h(FA@sl!p)H{8piYhr`kJ#VHJRYGUBFVYN6Ip^FkufUtET|fXT82! z88r|l-|6M2m!gA~uNIP7mscWg65AiMIbqXxnbXw0{TjFrLe+y3?)2;p|3e4WBUEUS z;W}>3KX*oxrIkfQL^ zA|#H3Bpvq5g*6i|M*;L5seW<{VSoDIWDPoh*2$j4BH96%ZbWcfW*B?SZf+pbdc1!E z=fiNSan)DH2P3(ijLCjwunhRj==7Xc>P&pLI>Cmnv|@4C%MDT5NnG)GM^;xn{e3fA zAQm45nPKF75>;w!1_68uP-nkJ^SPV=&T(SlUAvMhRn|uJ=bJrb1dPLO`Cjc-OVYG) zRv@6J=JTXbK)gDz7<+wknDpxQ4L#9wkmW15CCCv5aN%=Xrbe`o$|7TM&LD zhKRg%q-Hrkj{fx0TM)=L{Fjk)j31P)FxB?*=~6=%LMBNP2FVn;;Ux_Hu#t%$SN$mR z=#YLvZYAaHt_!GBX%1}+1f3o);u8m7={(nU2PZVd7)2j&3|H$7;R^O`4p zBxz&hmkTj*cCNFKEvlG@WB5GnNEE?>qe}i+;78>qeFQB-nryvrE#&8SR%80eBSlT3 z(6iJ3m3n3{w`F4I+S}Q8>aQUv0X`R}StH>IpiLUnlfZ0&&g&cL5f=ay)JpX5f&f5{ z6#C?sfSLk5f$y=O-&(f84xiC%!CV~fr36?&e-3V>GB3YB+#Y~InM|9F!%_$qXbi@g z4~!9vtjDu#jSzW4O86*vCaZkpLBt*xLu6*qb1-JIAp7L}N)tS7#iX2SE3o9j!w8ijIPovA1v zgj1D%0Tm~qp_OOLLJY^ZoT?(8prSaOYS{CGypspgS3gsC%CNWvNk+z=4hqOp=nZ!z zrvsQxyc5D+dFeMavMzz|bMVABED+X2X3Q)^;BBi6r@TIy4Y+zbP$L_}e zkbA~ER_30Eqll-g=&2n#L6%2BM=`8TMTRrU9sY1&CyQR1P`#hE%`8ur5>By2EA6%ES{$b}d54dIy_cAV_Rq1wn} zEP@j=^8-9FBCbtXO!0@K zC-uvpbLsMovFZ8Zy=1jJu!&Dn$F6&IHqiUWEVQ*rJEf8sls$ZU4?jhB2Jr<%5Rz}h z5)1}@mr^^pBhg!B`@6d%mFB1=ClF-5P1B8-V*H#5TidPuPq-ea-eBc*W#)Vt<0I`LA%@uz;S^zU zq2#<1KvA6s3F^xH5w70PX$K~PPC8PH5~!$9^2QoAx}3Y?+c29mVbOmVCclMlLtb5i zefDHjBE&u(1L2%j4+l;c_CZhv(KgQdEt9Rb+%Zazc=!3b2dD*%qoE)TkPNN&`rAl9 z-vq`<=irN;y5iO3%pMwMAzUd>@+KF5{Q(zyW7m7jcbD&io5Zmo3pft|ztcNs{BIu` zJLJx-tQvP{$SeKdt^EFDL6fKF2t*HSt&8S;DPf{s=T=@eb#ik`17x!_v2|)lA5q3d zy4yVCY(T+DgDfpU~xxhP?B;W@#x8(}7!{jI&n)(KDyn zt-}}i+Z_hBPnG~?qa-S&G?3o4ZgbpT#zNS62G{wK{0!{J8Q-nr>cDw@hPC%Gy)EV* z#@m_{AXo)O5*oa!t>5B-czsm%TvJUNj6{s^$tH}EUiTD(Npd>weFZwbK|2^G@qN?m zpRcf8Q#fJV$ArEwrkWj94j=)hr~^X&y;*Nl%l(5Q=%uIxTjXYER)a;H&X{#3 z{loMc#Hcz}3x@O9rwy7a2tI`l$|`CT{`h0`G!=$xz$d_=4Svw}vCASut{GG0HOi0f!aZn)VyP5-VEoEsJvzt%n25RgP zF5c@3j{QZZ*1;cyu@|rEL4L)A$nCEt%#H&h*s2NP420?P25zn09!%w z58uVOqt80tT2g-x#MwNO;m0ilxn?yq$OYRS&ra+c_iHF*6`k&-Ka*XYE9N;73bqQa zWv`^t>I-|{Sp2mrg{7;D-M1ZGqx3d}=e#p!1^9KKBF=-T3$g3!Z0^x`UuOK#LCJI> zv^&Z!P@QeQAMTv>8fEJ!3aPX%yeF>C6(XfZ?#FL4P!<K_Sq&-uWy|Wmr5CBy}_@B=F_0g^R>S zPS6P9vV{u2eRgv|WWj9LnMPxYgiR1!bwE;&x^$gv@NT^5aptxtYu+kIODy-6U{8ps ztaUj-1|b@E@!ZZ8KmaX8+SUpSghI;LOXT~WX?;o+-=+LB9CCJ=fxAhKo17*)acpK3 z01?rJH6i{~=Yp9jIQNG`=gg{1ca)XG16k6sj46b77Z_H8`1m(E<8c+UEEJr1GNprQ z<{b#4Af=O^9}MNYwm8WjDlAfaKRKyO)~R1g9IYZ7Gq5w>7p4~pPw4cTzfqf@=Fca|z~2S5mCgDUfl zHBhmf>TPDNpDqWny+^k-LLig;R3x9xeA?O(dKaPvA00y=uHEjVjYjc?8wq~0I{j_U zOMjlFTuO$$}#0w$3Vw++d?t ztrcbkgUF92ad_|0OM3-fMQJlkvW1#7GYPLLUQ1g%aZKS*=E}iBo=RFp;Q&nlsVIdK z6iS2>1ONtD4Kxd(a)l`0%q!3ssnhdp7YB!`7z%odmE<5l+iv|wl z2<%;FSGlicq_?e&WnOEl#l>1m7^C4~uc;+$!Np`ZKA5q`?N~~MlJ~jL0P`UlP5=M^ z00M@~Mq#5#B2V)Hpr~N~cy=KMCopQ**{n*9Y7{iB7}jqFkd4Dl_iZGbrTe1cbQo8aqfCr3!SJ2SGZm6Jf;?z;w4Zp>AI zvyQ(4qq$vF%g5$a%PR@5nl78w#pzqpROFQ)q6F%U*o)CFO4A#~$seoAt^BUNljDbX z(z_*!(WLtq@d%-4CeES-fH)x<6$O?I#zQbsf<*+0ayO_E0amL8j<+KXykb)ydA<+I zqJ7!Ok-L^FqF-99dtec3s5=^*{I5tM4lrTFieh5L{!AlW1T{bYxx+=-D`#dZ@H#-| znqa>CD;7$xN0sF)RNjhxm5yasPUTy^%KsndvaW`7BZG%!ZjT!-z}8Mq*RjZ=rZF=Q z4|zfJOz%QLjOAqvf$bBPSh$N8Xt+fPkZ6`V!j_e84HE36s|2a9ZKpsqm?A8UV*-dt zaHl)~m8b&F02fL#!OTiF-$=skm*xs45{$s_9Fa#^W;yAyGaR5F4ghhxZ_TS;#y(AB z!(U)ORfkQ(l%OiRetSXo}`dlvV@d9QJ!)yF( zZfbIf^st0eO}q*aq+%}+1w8u#hSlj2Tist_aNqODU%UOeSK@t5i=FRRQ;XK%${jk0 z2VyRtC)g4IbMj)Gs=qsvP3QgwPq*sktDA>rdTDQT1&XYu7Hsdw`fI>`G2221k1w-o!aj1^>%M;RIrUlgO z@qk0zAu1IOt%iwXA`EToEyZXGu&^LBpb3H2BKaxS>Ecb9zoH#aN^V^UfDkLRC?0M? z(Z>uEEduNKLqV-pU*Z&eAoY1R0QpOVk&B)wcnBf8xKpSEDzbn$@yVV(Vzq|6D>g89xZRq}wFP<{dsVgVh`$MLSf4Jn^JMLSRs7qB-A9X{j>t0=h3xHd78=Vi(fJFy3G2_?05OTRz08$>-bC5}2*-!l zsHSO{i;ej5@JwP&K)3)OFjmQg402nG6&f5TkF2X!eD#Y(_lAu7V=h+y$Kj87uK zNGYV^ksNC^hoohUryq<4K9|A=A0J5CDxRjzs`;eP;v+}`Ur$0RR6Yf?%WRC`7Gl(1 zvj3zBO2r+z{!zr;$-2G%_VmucY?^FrG`LuWIFTh%qfXpTZmDBAUud7uO2S4cEu>>X zQcgibT!;&)Eb%ON_@-YJ*f%;Lo2Q06+vT{ULf)4XKVMK@vpZFBE713@;5X z3zVzibjk{>n8|5DBEsE9sfX(QVyVNmvS{wfP+Eq~&9Nmb=98}}1l~!RA>75<@O1Na zF-vnQk;c*1B&>Zl6oN$#;`)y)Ul}MMo%#p;aEX2H)4Qal$*mQ<()~7OgsJ$x-x`lE zXV%Re5qNOtBSaReBktw$O#1;_Jr+%DzrzH8zKMRNIP=X&<(zkx)BvAkk$_~x2_ymr zm<3W47%;ADfgC(|=k=FT)zhN65k8WjDRhE74TP^3VD6wm=ysDMCLqbEY) z8gj0Z^RExEbc=>zf~>ojZS4=I1aMiTp&=kYLJV+-NM(pGtMwvixu=E+x*8BF-1g>t zi?Kl8dv)tY^DB~}I*KA7)b(kQE(CE)3V;b%CupR_PI;o%q(iRuHLnVw-t;H0Q|^>| z(A)h0#v`?ZfLQC@PXg{7S3sE8U zF=3%J)fE&kB>)7_7+@*`OVBs7CB6}{hXzLx^ct>R0XK0E-?k1qZJswgG}q4;UvAhZ zu~0Pr)t{XuvRIh@LFVS%AS95*21gVO7@@OsAs8^f`xww8kjAYhZu>hv&EknPIAoC<7Ll4t)-ll zL=9E7SNbnI;le8t5|+2L(U2b-u)Z3GpJ2GstGfX*e9$AMbNKT=uyTh4?-4^>!0y5~ z5=Lq-lU1g+rdKNZ7UaBEX4Ce%fj=Is6={l51kAh&Wf%YfC;*shEF8bAmC)#Oczepy z2$btq6<|?Ok$gZ4O|QdES@(Q1*OyKAa`#OpqbDDPW1BL3{NXk2mR857-+wePN}C$4 zM3iU?;s9i#TZ{Q5wPpM*N&y&@ywXs>0PrD9n@QS74G^p4kgG76!ek^3mgrDe2a)gb zzCtQwtxeNK0F_5n0#Re)xCVbTx{}3~b>H+(I?Re=QFd>Y#DL68|bH?rpM7{wc3GCIO}sB8p&NP$qFULuC&7k zm7L`+GT{Ov>G7{lPoCwojHO&vjRz)7;Hr{KJVzR+1YweIYDBa^hLS3HjwAkIL~HE^ zrb+BueAakm@A$guJE0R)a-L}~_b8E%dsko{LbC(0iikoT)7e!-#C;HH1p-=>6A_?< zgMvJRIUs6Mv9PrQEvY7|I-q((32&tyqvh-$4j*Fa8}QJMd#` zxg)<-9|on;xB~j5rp*4h0z5&?6Tk%dGyl8dgF%@YV_gQMvbo7ImK>NAQ%O3eiM`)%uE{)e zn&@lg)unKBy1NF7^l5nk08zn!7y{&})bMg?y6ucSQewMvEyfkC9^JK2B#>}+KlTGk zQfz?1`)WkC9OV`PJmK=<$2`tHriB}-jfv;UGsMWn87ejI~Hq02y9B1C80P*k-f8 zx~BXT<)HXNcNquc1Yl$-ELmNE13;@Gx8%n9f@;!EX?+F}JPM(R0i%#svddTN4B6Vs zfTo}0!peQvPR9`!#&>J*nW|>%m@(mmO7=AoQGRu8--nXrw(3`wUQJPxZS#gT1^iAV zgc+wjXWER-9nOn#)p5$>dB_1pb=ODS7HAWoaInEG3M$hxh=5cSTn1K(L04m1@}xCO zm3M=iO?IKg-~^85=CW$$7{!!RRC0WeHP&gDnc=TE0)&Btq=6_E!XO5~02=Z34Zu@k zo{A$t>TCN;TnPz&w*EbAJ3VvD`?ph8lmt`>zw zAEShzs-TE&Sm+@dRL!A^iew^0D`nmTU;r7$SkMft8Ya&+x8mBk#+!-99M!`mhN3*6 zS+uj!cvlcLV$a4J&bNeEMK6Bxv(4iW6qHx?V15IWVh=?YYNBhbYCseT>ycGriq#&I zY7ZO13dMo4!n$(`1V|Wb<0*}_(pc#HQ?WCN4x)K zutvQlznkP4QP9ACD7T8KW)gI>%4V(zL_FoiHU*1tO8^3!ihPv@#QiC}QeUq_}ij z7JmMl(OI1<8*P=rYR=}%Zj@ztfOH`$RK1=Gi()`ns6rTpV@gr)U{XLzfLI6`Aqc=A zKyYqY*!uHLa-+9n=BbM3vFT5(YW#E|teFI-J z7ba8IVO6xuH$cNVmWSK#sAa%1=F}_`A#=Qnz7$?2AOI#hDV-7|bIm;Rjdsj2HRv1V z&X`q1u1Ybd4mrUG1KqrpRb^vAnuL;OfR&)(O_DmSV9J#B)9#6;5$^@Va$3{aO0Aer_HB~d&ZML<)zvu*nT-=xJZH|Uyd3jhHHTaw=yefSv97pb8Y&_}YtH?=ckO>ave{%*Dgf_jIM)3CM z9y@vM*Jb`=S0pe0uCoaT>J9+HuCkc=RjoL?e|sj}9|79`+n)eIBI1nabU`616u1XU z=agK*}|30nXr(=}d-tiIRZwaJ!w0wR-EOARH~T=~(*I zcCjH+F;ToWNo&58XaC_$JfADOa^a;&{t_>p(E~fG% z#O?hAOa>sNj39ZbL+P8MCz64t_{5a=A$k=hq85x2AcSDmDHgl0W4nSjnV?@0N_XX{Pijl=^_`5ik<^3;{qi^PRNYjyO|4 z9i%~VsK)NR3#A9e(6ejMF(8)gR8Jsw7%2=b+bZa!0Pr&~ggx!Fn2PmdReXXb9`aWo z+eo!DM^6vh`^hESR;&FS0$Ladn-LVQAH0t5a?^lg55b<9sIpxnDtw6s%4l#I1|&g= zP=Xa#(Nz@W2MVyg9AH`1tE9}opGuuR^zy@%2K6=?1y%|RDCngX5Ri$k+C3vYz)hRm z)k^V||FwStNGB`aei{jMWiB+)+ZR^~g+im#dfIdHj=t}9^ykdRvBeCZ4@7ChH`BrX z8~;{hwv9Pj;1-BX&lq8<&8p|0NC6ypAjZ_So8pX^SsupLh5i5l00Idx000#!L7EOA zU<+Of~q9kd8ddzZ~2}iyD zHV|W`67t4BrJKi&Us1z7#hybzOZ~UFZ72MXH6Ib?2_S2PKJu^W6eD7*=-DinSnDw@ z1OQF<#FR#!hU<1W^Lz8+IVV1>Dd);kA1WzaL;6@1Dw?qun*ZtcMb*^$H=#m7DB^t@ zc4H=3TcL4~N8MRod%fV-5+1L*x0USVk zMeCxe<>hC%ek*q1xDr0BmhfYTOf5qKUD;;lW6|2&2Gq^1oVV5^y$rhDqrx5}4EZX= zjag=TqWsl;l2126V^m`n2S7Qd;^TQ7HNZqPD-9RMH{VTS(0skla2w(v9KCo5O(fpo zpcCHa(vD72M95;ZT38&BZ2w9wCM>-p8{V)Jmh^^Xi3Kd%fCEVX7kcF?7t5_oG}Bhu z>Ow`>PM?lpRrDvpeHdR%Y$=u%Gsq>nLI!jL7E^Uk1X!Dr1>W=8ey%qTHp)a9Jx6I` z0VFBJ29dyOGy*rL08RcS5tIsapLv;fWmiMJYzoi)UWN~!~ zvhDgty0+RAAhZmsUsVaN6lgi+xn|Mwmh~G;(Kbn78Zl~#xz#eI%$XFjy~1yOMi+S3 zKuu^1@jp8^m#+u(*tU+g5-tO&cX^jQJVt;*!wH!t*UrX>NcdtxzQPZvXA555AEsS4Hrf)#e2~7 z^9$TdM#k)X3i4CY-5_qNlZ1jMJjThCGhe5G0giT~1;mJjZY`0jsE=esS7r-;vYxlp zxeqUD$r2;f)TFJexiZUO)BS6Sn-u#rQRYJnEMrN>y*gxwdd!)bzdu904DLUi#m*%4 zfn7hIGY`C2(Z`+9DAO2_iXM?(2?y)wob6IokkFgVypNok!}d6>WPmh`W|kNqdRVTo#|4`n5&|L-YEBQiGxr;pQbq4?qa;JW3R zQfQmj_2bZrBw)v(tZ+7GO!sKSo#0?5=%mKmMD-3&Y1%l5>0kaFz9s_~wBa5D<36Se zXFO$R^@^MK?oI!MT^=Yt;u5oG;oUCp`uTvr*Y)v;&n3ww5nbQLlAU3)^%?3CMc1G4fw5xWkN$9hH@vFce)(nz>=rk;*f z?r|2vBWlQzigin>i5RXp5#Z3MeKV%EBmLT3SP0DTZaEyw7MzLl0068lLbAF}I}=eJ z)6eXhJCrs#DsCX4$&2RpA?i%OD}e&C)!>qz`PFjS0Dd1v#zM750z$u*FQabst@w;~ zI&wjS%$0A0g8P)N${tMLi-*lhDM%VJXsawV(txp@0Qm(Xsv&(G2;k3y2&(1P6rh~UG}EFIL&TPVNP z>o2NX`_t>;6!Ufar8BbFxnf=GYWfDRQ^u95y#Gh#&{kv`p&$J14)}eVt$Rfe89bwk zpC|&1J!qiyzzAbIcR{yGdEfKhKKM?EC(%c#Mu~>Gw))J~^^D|v=4grP86h8u{?vl?(K|Y@wJ8rkcb2-J=*av}lB)e(S_UT$6M?R+@^%vR_ zXCRMy{7s+vLx{E3h30lct?3Uq_y-Q~v~>#S$GH*Q7NJl?cf<5NS%WNsnc4zINob>qVXru9nP zv??3sg?~~{q*vB1CKRzp%Li9c-gX@E3WXebH!=Q*1<|P+jTfwZ%yfkhc3G7+l;H49 zn;FH+!p+}WU2M!G&AhhN@uw9{B9EGOhjJw;DQh=3rvv()C6Z2Et8P7;a2LfE^ofB~ zdT3gAQJBz#EU1MJB;y7{NlQgU)7G7dK=R#&zg##zhcyOb8RpbH;wn;bm=b1Wodze@ zCK)1(qjum%Z}^}7$Sxp=JogOGP}|eIviOevexh~dc|9Zgk1dyi3q6Ba`)DeN%LO4D z_m~$XjTBZUC_3X5kmm`|_1L?c=dhxy;wtqHu@uct0yl>qIQTjfu%JJ;d&Xi2c+Ctl zuL9I7FQVE*sH5R*^cVRytRIfMmd_#x9fGVEVvml}>8smh1T1QU1p)19xRy;_k zU?q!Nnu?WPsj6lXp6wRwz0;bw^wNT|b92BMhoK#8Mh)RDoz{bpC|o~=BtfmK z1z%@INX3#{4NRuK^rdKerN{gvu-%rcN;pGAIy5dg-*#A7%*gKfs2RgujEhcr68_U^ zX92(B4j2+AU?pXVmuUsaxVn(kyOf5KMwn%C`#GSsLanXNJ?Mls#OZtRd1-bem$mq^m3(;* zEAmgT!`Z`S`J;&?UE2m$GNKQ^G^c*Ufbf4G@b#Pao|Utw*vi(tn`A%Ro8&oq9a|Hb zNsJj1uwK4S5&=H-YBY#bL#DggD5jg?1^OcLXGI@~yR_V)`$&5b^Ue7fN{kgbVKG=w zgB>jFyvh|RAt2|QRpelSH)v{)wJsG(Jz=_OVM@(8BO#1QzZ3oQpL&h1CH2LliH|4- zVZ(?$sG)VXTu`8Qi02%STrxWmf4qUzL-g%}D7v%IX*UVf5T~SvgBUAw z;iB@<-}=jQa}Q9R&U&Q@x5pcqqtG2N1vpuc-|^yH8!aem94p5aD59M29To0UI!pZ8 zn_W1@LVe7NA6=GE85EDM)Vbk@C@TTtggPGrH)M)n7g?l`Rnc0I0FD}I=NgDPwlW*Op|?+xjavUT{~740Q>HK3?{YSTVq zrJ3R4alDZY-wEFKu=O#Z$=#h&JybttTnl^FCO%p&48*#;b~KqOMk?w zNBhO))fgNb!-K*HF*|5J*8D{OQW1js8^4s4Zl(yUi_^Ee8^w^X!dOsx#n9t%bmdcy zAzk=9+k_eLe*X9X?BZeQD*n}^ydjH16NfNh!FTLf)8lr^K#Vo#owcvEMgdK;NQ3aI6c zA_$CHKeic$-$>Y75TL9&3SH>;ytBtS*RuxG1#I?+kc-ng^=~l}n>VJy2MRNYbWL_9 z46F%QNspn9?|vMVZS`w-gFCHkuAfbBuMc3&TdgBdWF{D zxpCGsegNkWCwSNdwCHF@%|WMIlfU;rQGF%pL&p7sWssL{HtHIV>{qZ`OH0QsrvoLe z8_lMXLpl{fHz{`7f|ELZUhD|V66{Sy=J1U`!J}_n7G&uQ#`{hr^Gz+JSF7wf!RVWm z3b{}nSo%agV1wR7XL~3!tJ37>4v8TcV{OPDZ_C>gi-De2@L=1kYYes_<*ibc9{WQma1TccRpq>gC50Kcxf9OU8{q0%l8 za>)^RDp_7qECU!nu`ZcQ_&Sz)<5PG(1MPf7re=#B8i!xWN);Fwa4(S4M;i~@QRkp( z^WIg!LKr;$rQWDKQH}X|3#zfY<4<)x(n&q}=w1@vM03Ol$L4V*yXuK^H2;Dte1nCP zv^z7OWN&yUAX`Fi-PXG))2#ZTbtTTZ|B($N$BzA&R$hpL;s5V_fV9CK47}M(rq!wX zqEfM979b91(Q?!3I8}bxacHvbq~W07kTtS+%5c?pz(^F?(6n1^F)k?ZSk?Err)kMPS#kBs_nX_{F?yIN3pR7r9+iQRXh$H+-8kpjls++N|aUWWQp z1!(Z`YQ17MlXlU44;!4m0Touh+lC< zP`n!vAfhVsr3kAOT6UZEd+}Bi!`6aJ2WC4-cYve#)}KL|60}lrBXf!yYY8fqnnt61 z@+b_Yle^%VT%TokP#1=0(exCE-|u#~>?XhYuhjR7tf7q5+_b7))S=rD4`1a>h_G~V zf_1B?P>R|P(vXpCo+_(}ERk1=NoM(J%F5tu`khGOOH7ItrC_?H{P7a`I@FW4-Fkbi z5TJAj0v`C=hL4q-?B)JT`?^HC4gA`{vW6g38T_OOiPE?wakDhA0Ry$}FSGE?L@KXW zXSA}}uNdO+gHx}-u6EZSR?w+OrUsSb^BzZ1A&Ux3xWvH65=_C||9l}h*XaQ#zrV>d z7Z@48Zu>R`N4sXdU|wDfgZ_IVP?KKb*diy#2ZzNHHK{JWJJ$_1x@MYlKMsG&AA*?5 zS>U(7?nW!|d$~pUNd%AI5?GU?n|rWkXwAkG%KwaJEJ8=hrNjZ)c>k_gu5+TFENVYA zT7o-PX3Vd9$sWul;OfZ^J$Up=N*_WJ*D)pC5%{8CvZq{+M{2-UyxAvuBfcmSDjd-C zZq(4P)9XQ6;m511|{3UUyY=rBeQG-mG;UYCJJ&5;4GseROip&+`}x* zABsg(^}17gXTO`!1C6cWMz$INmhW4G&)EoC9b0A$k?0c z<0Pt}-!lb4Mev=k6NZpOg~nK>N^y(2JRv>hC!Qe4f~9(UyoqtrQ-Cvl{t;l^*t@je zhPb<8i%8AB=8e}8C&{dBmUWC4gpsb68GgHI`cIH#c05+ug1fHg=^vk+j{qY1TPN0 zq!vGq{lx6)vHIaaFJRCH>tk^!%JEipX5Fc)X-soAKE5|sX%DH(%lc}_PaQ!tEbX5s zS81%7KmY&$0trw600xl(o)8_f5?kowM$cgf@gF@>1+8RTDY=FP;en1B*A&!FJ2!fk zSbLsa9=mOqQU2m_)b)wwSh(};Xw28T)Z*89RkFdjebZ^+e13kJxp(~1!2b&6C=ur% zGp;njs*>Fv9eFLR1&U&A*NId)v2xujzPt_i@n8!ln7*^yqwxKql&{{Kas`A!Q^ID;fX=O#>C5L`-7(^4O{=htaJQQY+ou zcFaCb;ubr`&Tr_)Sk^~>7=D%WtiOZWRXs${tHg7pxWlX-+k@-4HLwwC<1hW*SSxin zE9|zYeey@@0b&4i3!7;~A~#d^(Wf@A%d$kO*~{NO0cg@;^SKUJax%AGqXHhQ*yFg7 z+Ta~xJAbo2iyzzTAlT{!mH=H7MTXe%az;s}44f^8Z89}i|18=bl-+Pz8*3DVmtU$m zoNHo+22u$_gL6a<;8;X%Il{GtO^Tf$HFKdwsguv7Oinw%hE`4wX;)@*KQG|J$&0e}p#Y2Fbwb z6>b~|)}^DKqQGv&Rj1QGjl zsw<2pU(>6Oh^Vvx7se{SRKA19K&Z*ikulbty{x&-KZAa#@Y=YT&MK=>6?FwxY@goku`lsIJol>U5LM zBl*h}(rBYhA=Zd{NN5YSQLz|Y>k(y_Gp|*FaGoqFE2{d`#4GMj&>RB~-++fLKqnld_{j30Ne~U1$m$Cmf1NoC~?YzAhJsH_8nGA zMNIK(WiqhZC3DRcBx9StZKz02U1DsE47#w#lU zN8tW$4FWslqpgD@Md9E*q4-iImqS^?mp^G?>x@Tddj#GFbU)top`3v|eH79dl%We< z5$-F*Xclt_a0*SiBzRUa#^Ac`daQ!HrDby0EoJ3-;bJ^Z?Dd1aG>M6&png3Bw2~zV zvi0n_i*v(J$X_i?YcRxJ^kqgP4^lzulu@&9V3Hx@Lt3F5U;qFB0tqkx01~G`nh+>p z3%3K##3eexm!arTX%|Dl`tN7~$U*1({md)~TzR3WODDZc4awOeofIxKP-lSja{9gn zg?xV|5~4PjoEN^~GR%q{jeiyhzg{AOqfv9iun@X$`?XF5V_a8z>QNW9f)hcbbt-5Q z@rVfM_Hd5+hB&S1l7rRn-5hBtR*MdI=@8yK28% zws?oX%XAv%c>|e>*U9GA@H|ZD@qTJYdn!OE?sXCSWfhXg@t;(29{i7zV%T<(yLXG9 zL5aU9N_W5!&-&%w;Um5S*j%?Bb=i1fkgQ!7KopIkYg@IYJfA;I|J@wvHefV_FTg|_ zQi7puhw9Mh8fjc{=9bJ9cuuX9-s_vtIrtwsRhv7Q%hactDxI#5_9|_}6bLJvp6Od@ zN~sd;*!Z+D&opy9Z3I0U_OG%|s7v)Db_(++z0{dTccZ!dT54V4yIc|9t6_KO6GdYm zv>3&{&pH4pTax6GYyFmEpMqD`pW4`-z!0@9o3$5C?q5OjJ)y%0{2iN4`gD@^x^J1z zh?IBb+Kvl8(|6sChpPpvmd{)4Jx(|7k<-av1~s2F!kxiE4;zfHx#y&z!L1PPLGX)z zXLk=>RaG@Uqu+%iVE58@597k*wD zDh)FxUN@|3HQ8$wyv(DJoclq)G%QjE4qiEVY0&&Yq-A-siJwe|s7^THHbI+_s= zh8z%)f>+b7&%Qd}25g#wmLD2+R~koiv(viW>rOkEjol zVG;j037^!mLh9T5Dnos~tGssLKD;zL%YS>`C}uYlHF;s9L8RgcW)w~~i>Poegyc0$ zcXYSsRaHA;3k5V+hW=<_Rd8)varn+BhTEJGmpGalNVj+Sl;zv?yM~25f2Kh{-QHm{ z_>>f3b9kC*RNLXuDj7Y%24ruH2kYmq!IHNROT_| z!EIUll>S7t?DQZ+-L>{tYf%839Ug`N*T1ulGSDSoUhSaB(6~W=X;%`pZ6A&!|HVm| zj6t4iZfF<))Y6CtT}*K7UcQ3!>lffUK~MghRTr->2LC8luuR_K7wdoC)qf?o3lwHo zFA1gZUynu^NYcD;kWwtC$1n!SQ~mgjsRCM^>M{+{2_~u+La4$;XIV4C<>8V3uanO$ za)|obdj8*bfPrA|^Q>eo_^p=bDmG6EIu&Wd1_i`D=6IMd|C|c1S0?st;FzHzbuWt( zzk|BjRfZVb=oz$FM|GMt*!SK$=^d-O*pJk8Faa!qQ(UqI;K{D#f3VUOOn;* zNIWh^uPG~g-MoV8{U#@JZuk|<_Xccw)QHQe8#ia7(+0a+BdpH(pjkz92vG1%Fsj?j z*eS#BHEwib`0j1CRw+ocb;Z|+kqRQ`T(3DGiyrsDJf`@7(Uf|%8~7qjl!vs+0zrCK zn{-;YA<^e;TKX+>=D6cLQuX}$@!`JnXQT2;=O${Ki*-0kUD?)?;F#_8UdVGrr&C*6Q? z{0u<3@i5Udtm;n&E`oI};lhMOkR{p8o{VcO{NAJ9@on{bBM~7ve$2v49|Msvg@zAf zkh@#H=54IrOc|jA4x1T2Y|{z-em!?*oVbKZbZ^#+Gt`)vWPo7qP$zgEGwk7YYxbs) z08><^$TZkaT(q7Cm$knRAr|tkX7;ahV6a)xTz6 z9|DHo8f-O}B+um;Q2FTU_XY{8Ju-{eY8x0DA2Cad$G3++!PbZQLi%6zGGz}ihRGR;QuXI=;7jteuo{~^R$o0sprB|(0(>psa!K3fU zHg$VCTW#-I%qk5eJnc!e99#FRr3GyXwwPH^5Mr2u?hClgNQb@T?aB6;?QEGvVM*5o zlf|g(zwazea8#S16a@{)vmx1}>XoIj3)k689QG`fta~~e;Y<1)z9Fjh1oXqsO__8l z9-^w8YbUcDg@NKwrcVpsvIt#xqX@Ccq~HESKZBPyVlBH4y?3!)^pTx;++_~f+f?5aj9V#)O{`^20`(!`goP+j!lAjW+rjP@HWKaV zPCcjPQv7~pnxV>p;L2lezQL!n6SDB$^{vGUxVqm~_shKb_g*YF+wlzb{El~t=1#nt zrduU3ZKkl_R?(+a%j?T>D0)%j^f zQ!rEA`IVEEI{q5?EZAYI<2(tA(6)q&NQ!#XcjFpR%+WqUWY7Z|a+1UHh8C@W4? zL?yEfryK&v5AtbAJ%k{1!*S{&Y+!9=>?VkV5(sSI(co^0b+(Q3xrd%lcWlD2qDTJU zx}e5eQ|R%ymHOD{2fiGsu2HlfX~iR9to3;I*pSp!nAHWJ4aoR zy;Qz0dmJg@MdafPd<(M=VtS3kq_4|gv;=5AFdZ@}vLV|y{wOmsnmc{1#$RZ$nD(!e z%qD}`#i8)+3F`UF%`W?Cn9^efjdT~(U^L!fP;^t#Z%SiTj1@^s90S_#Id#pkwQ#ZO zJ3k&dUb@(FE}203njq@eGRx!v!7IS4Lq+10O+bl8+cYwPTO3Z4hm`CCu*}hwsaoTH zOOHv%naNbz>42}`$7Vi%CYJ-!xjuz-6>Hp;MVj1vc<^k8>@&vwej!$7@7^uh1-hX9 z^mB(+-_b9vD7*gJ#Bdq*0(oLY>gSe5{SJUaFYp*m_+-Jq_oN{p@U_@qXp}_(Gg{TG zc6O=UVg0`|J7Sf#^@f=1ENiJOG|Y;K0-*F57%>{OzERnC>K8MQkk)1r z`hzzBb1^T|yBlBPA{q8*1Q(v3NS3-D@$ebs=4z&8xf=>rV&R^2%tx-yaDm@@kz)Tu zDcYUm-g|dbR6P|5OQWe<3>_1K%(e0S8 zOU-#mX00duF)jXSau2Y6Uz*fzM8vr8tq_)O>^W?MxfwO=0q@C|2+TBm`1 zTI_>cTiJ6QP=*lQ$mduJy#zKwA3IRvo5t8{Qt1u@_Fr{V&MT+zNcfcTtTx&dI|M!% zeEn`h%->A2kmxi0VG}B53bpA4fj6l&IpekWVprDCp8f)A4QI}yQ^V5AU>W@(h zMu!CQ2le<3*}HkfVl&qH5`7SuP1zuQ*@i6@+fT#y4dEyqw&=j`P7qF>8Ko_#bDh6n zynM9glgmpJqOv%hsbGtkdMhiY7p%U9Gmo(CU+xuU%l|oymcp4ylHtQZrzH>vB`=dO zK~W$ZfjQVUu$nufPj2q&KQRf}wsN-U!l{*GY*gtW#x3^$er*r|I^~J?P0RXWXKaEW2a0Uu`=4#3Gr9yV;kufotJ9w6^wm zhL_eKJgr2NuA}MCKh}Ml0dOjNM0f5gAL=+ey3MvCx66FRD)&E5lWYvUH_jWkTRAfv(MeCmG7%PGH1W*%D65jU&7CiG5vG-9oe-ebk zSw|McSCISMpbi+ip-ovR7${fmT49|=4P0xRS$4{PwY`NorAQBG#5nag-JM4~{MnfL zF(YFWbGSgmTpKRlw=uZh$~W9^w`F?;NMYx?wL7i=M*v1Dd=3C|Z~_@K9|wYE@i~}) zxs3<;xD)X2#^#ssDDhU^nVzNVGG?6M*$PBSpc~r(Pugk@Bitt5PbzGq}J z2n`#j#b--z^J&T8>5ky>A8BATkj5gOCXh>wTYU}J)fIA(!i@fbetvwFv|O`W}d_+oF>O)fP*HeO#FZbFBJ-f(j*zdB{jK3&%G^!<_a zo{taNrG)*(;Le#I{9WHC?)6si7%D_sT$`%k3QACTn@d+fUg&Ws7>u13l81O%3)T^P z*+FAL5}YNnciVbNlFvEc-Q4oq<+D$T?o|xhqOzP-(0wJ6g;W3l00Ie6000DB0iF^i zvJzWeWSV0)_1Ul%)nBbfb4~o^%N&g_+N*vlKcEnhH=7Wc%wa_HT4rU$mks0px0{n6 zD>?fNwP_0|va%$iQFbRH0GAhy1VYHo04N4Xqh*Ew+SN5TQdjU_ro0QwHkVs}B^^vb zbSOcX045eHng%c=9(w<=(y7Lt>p&aAZjl7XI#(Ktv5{LHi3gradaqDmEW=N9s^ zzXk~%_X5`8+EpCyLGtPJQl~}_!^Ua;?XolV!iN-zyq7x!WcTNrj?qNnm;L4gMhiIr z-!7yM{yW~+=D+`+(9NrxXOiUV4~hde1WcuSCT>Kv6N_!XfS(={I{k2#_vOwK6UJH_ zMeCqYx*oO)m8rTL4!VJs5eJc&pnul;BJ)QqA{R95-vq*4x62TBL3dwUxvxRt8w2q0 z6Mf&jafPF^bSS*>22AJh_pWmffxlN{pl)y?WwIrANJLFqjM?7n`G4?k_) z88a}$o!O?QLrtJBlz*WM<7k#;xYV_7=(WK^J5EX#m!kb4)HO;G=bg)SOeTA88Sq`+cU@x1T}25><`n6^NEo*fT*^rGBPTCRgvxP_l7FR=<)QdpDsZrW~KHRrK_a z?r*nAegCRwZ3TOM?U6s8OvIyb*X>J#WpEWmx&cmV75mnW8wWH-Mqm0)6_kr9Hn)Bl z6o%q|q5=CyPL~8Jm%{|s&I_p*-GQDl3-s#Dmq739V;tJZ48QMz)4439x!l)E;PrG~ zfhD4aQUvV|Z`#*G1l!;&b)TQ2ibER|F&I(o7W5> zZ;kPpvKc8Lb<$sTx!bMr!tc7){rgG;FEQ+pV5n6W?M2iXwluR~^4cQsZrpiMn<};B zWM0Eu44z~-KZ+=aWT7Qlg~o1uax$I)CWQ7K+3QALH%N(JHz-QzhR@Z(11hCqy8}A; zUUgTjJA<=+V6_oA)BApfJ_o&77d?^yQ=G^UFsEV#^ki)1RU^#puZiGL-IRlPU-v5~ znUQ!fZ0bfYsa$Lj(p+A8whBC`3zyu(YDO9Fuk%N5lOK5JVJG3Xd}CCefz8an`*~u} z1|!qlsK!^-QY$gsA#N$y-eXy;VHgYGFU$423Yta>q0AVKo&c(y|M!VjCvZ@7k0n!b zdFWOHmeJu#gIZut9*dG&G@MI7Rm>uEY%(ZL9#?`UHemw8!KCC%<32(#eFL;6MM4w7 z#YVen`9_J*P4BtUY^dQO-R(}4^Uy8VfmA!+2p-_Q?w|=Ts4(g+c$$e-M zu64DniDM(YLe#E8Zes-QrVZCkGid3H_ltSl_VMl?mQc-6-1W8I{ve%0p{TaYpzo`DQ zZsy03=!jHaeEYoImKbUK2M^v-&6P24Ogvb)*K_mt+-RU__I#wRL^NB+dt^@f9pD#l z$Jjo3=lXzK5W~G>_T_>PO_EiJ(Y7SaBA7PEHhJ9BOvtU(O1<}}06~+!=hq*_%O%{2 zOD#Gs%sQ)xCd5!JnP29FOjbgYy@Ozh@99U5Ur!m@euK^PI3{+&eO7Wpg^p#?UM&8Z zrQl5N?>r}U0j`3JLn0{5R{|eGTslH1H%KdRS@rJ0^jVkitj0)XCiw_mBak(#QPkxk z39^K^r|a;(BSi#d`TeW_#my;Hk|S{g`GTz#Iem=3=4?JaUjio~j11DcE;6XeYyDVy z4R8%0m&)~weLA(9fbT3W15M39e%QRias@6v!}Q7&=IGZcsBQ946ZXU=!=-q3gE7p! z)4;a1T}(>7|2=80u$i@Y7A)v>w>GHuJj?L`MIlx$q*l%Xh z6pz>9DeCLWiba8nS2lzT7i+eB0ZuHt9_X*0qPJ3?+%Xghe&(22+7QiAx1D`6#ve}f z7Zk6x9E{EtanSu9cs3969%1}?64ZON!o$a_c{v3m;ecErhEt(ZuCFd;_uSe27_Fio z)~FoV)DJZDrw0i2v~l*DF8kL znJ@C!E;HF4y&fZ-D!(?vkb+b(kgcU=)LbR}2gq8X5=*2`ep&PX?NELco|<{(X1`(Qh_bZTRZP0u67-$_sT_{ zkwuz^)36bV66jxgp$R5SqycT@iVF0fXMZn9Bx%egAdES4-m)mB5;h2x)M*|g?u z(@Q-Eg~6u={wcT0x*uAfk>f)-j%i}kLOX3Iw2&({1dK_49>R6kzgdTr&$mz+`f4m> zgjJnFJ|1z0rWn)os|{JIU{zCI@BS! zPQRhTBv8e>YWs42>n|8~Z}7?fXrAWP)q14>@+37EB;dNm!L@$#hBf7;hrdppT2129 zFp8x`TMPgwqd$&Rjevbp{a@^Js-o)UbwJtF$lawA9}b|af%4uvAZ^UX5{sE$JP2i( zOOYRw$0~GZ>!OmimpYb#l(EMKtl|`u+DR+=J|x-atX+ETb{Qc-G4&jz%oT5Ei@34x zT?UdW*_h<{?4#^C^5AY7(a9&$CCZ}gWZ1WrTcvd;P)~Oef)bZuT(y0G5;NiHno!aW z*83X8-F7j{O*hN@sH6FmxPxG~VLQzQ5SgwzGd3eLBA|0WMTJnf+p>=O zdIP0;N+WS^Y85&ex1~7)Oix8933^-kDTc>75T#4gK2Kw3;CKYcUBExUf?1#tmjxUB z$vIm5c%#)|O|y{61jin$p_?0~4>E>dCIuwa{Z2!>twO7bB}H+rD9L0;i3zX;$@DK} zX6?v1RDY3O&FI7WOv6N2RkktKscuPV3M!3;yir=w{9f{}Le~;!=oT^@r!}VORznbi$U`GHGWihj4P8R_k{pbI%Bh$16mkYsz+dXZt|OB; zEqY}Uy{oFW-e#f%d%ove&9g(G0t2&)9xN^{Im$+-l;-?;yym?c3c12*B$Z%oUyDv*VTqG zX6^2yWYW9Z_A$8{u^M+!oS_jrg??k2QTD0NrWvkgg&k^gFW%rQp+- zD4$>!zcMi+Yjldb@DB*BNxCIA^F)i z`IFq5D;S*5B&gI$5~&MZu3=0IKv!MARGx*TgK}yZanKw1TSP;-1<(iAxdOIqZwX#$ z`~l5jYPIBp}@WGgjNW01q5eSJH zLf5wh&5MInw!Rc0YJXE@+@6-&L=kb8`K)gUnzkzQeNO8BE>=u+*uQi3b=@!a%GK;g zh#zS&qa?gI=&iWagY4k_SHj3Dw5*1fAc<{R>k#;e(tcnwq6_dRz$e5B zQ=yGHj=0j0WG~rHQ%L77OHw`yQwUko^Vw#cUx$tyDsay}83_MBKoorjY`5S@s+{t0 zX6M_Wvu?P59c1Z-bIyM&WmQtDY{Pb*1F6qnLFC&3igmda`n@ zAQM~3Kvuo<$>`t%uZ`y^TIe?as;(Y0i|e@5ehS5i`Dox`(!;YAI@-!=WeMe4geH?UC^@jApgw3^qpnJ`$??X`yr))$1U?`QFesYn%CJ!lU&A z`c~-Bkozjd8MD#RBvW0mD!IR74gVo|Qpa)S;nP` z#P$A9puEHlF0mB79r=qHQMSES;&YezL^6c8Yk*5#JJi7>5gkmu{eu*X^>GGLxm6k; zMMYD?g=!H+(>DyaQx^zQ;~eRdXR7W5BM@BRyS?Yhx6w6@#35~n450P02*fj}CF}s7 zilKil0`LS)mnyp*mUX=k0mQ(Tf~5XwQj_8_p%hlx?jCJ(_aPM^8qidpG33S{{q2f- zX+B0cI*n7e=?1tfjV!;{*AUoHH~&r>XFN8Ej`_Ksc6dA=trTFj1!WHw0Y`Yc> zWL3dQIVqJM1c{q-Q}X%RG2!A&`FOi=Id=9G!)SgfS+8gP^=GPIdnGOpG*U^_n`O{c zrtX=OHQ~R#DSq5X`J|pqW&QV8TC_DP1kMkG<+1quV>08HxLUU4^5H57(ZS`yTR}(z zNFh%s!>-TLsciCgeuwgoNz=x#sHy#|#}C2!*N7)@95>g+D=i_}=+0@>&?^iBVga@! zIMfI*yH#_!ciEW%mSJ|lIYgRKFy?V%7)!^m(bM}jfap2)n^-n(ui8WS!ii_%T4s|d z2RKG&#>NC#GF>Y@>&c_AQq%}Pqz2v&0(!eE)Aj%!R)~$%XPmt#xRGLpu&Sh$)e0_n z%V3t(bKz-uDki_kK;X!1Pd$<$U3-I6>oReIfY@5Vp{_1vs^IYF>oGBX-haJcm(5Q? z5AtBbO}92<(7oT6CuB7cl1bO{#eq@1^(3Ytl4tc*Zy&iJJjY5r#)huC*P2D)?fsB( z7Hh5C?=%yt_2onF%J%PT!ZyKKYqp+_zZsw^J0QOttc>Y}ah0(JfsTPXb6ta3gkqZ8 zja*HGw&K7P$;5B9t;KHJ<5PdSsFo2z$@9`63CjWD8Y^$M_}WqJlQMdjs!KQTFfG*B zz-}0Eevy&IcLqo8h|c>RStA?JB`nS=6VEk(l!PDuCuy*&C{yCiV_%q|Dm4yWqkYWV z?s%OPgPkqg>-ReYIQi1vJ#m09NPPVN*XB2e2E&}4;H;AWV>Mt8$FeZ1EWuh&qS(ra zKa>c_*kXKl+aZ@)PD3!ct_O&GgImr%49j)%MQ4Xx&>0RRvKR8FT{e=kn#qFKYo`^< z9r?WBqdxn6Tcd<>OIw{bd|PP?NEhoN^|eJ22E$ful~%nPl2DJSIIkUNZ(VBb&1bd!>Wef_Yc* zz11FxU=)Zt_tZ?AK!?EXID9j}TdzoeV;X<7{WNqHkY$1rVlZ}{u9id-+egr*LR;+3 z=X-M(JI7zov-XuP@(mw-rdCo&?DBC?2frkE>TRFxgFr9j(3|!J~zxvyuo`H0GCNKgjyGuN>hCW^Q(Eh?s2c0=U%5S{ovQkLrf zj8E`n$5nnkLqZ>X6Y)76kXL6y`{-R=o|xtbpZIPdY2Q^$j-AJy+mJ!e?go#XRp>R}s5f}IAYQYZ z$oYADWb%!;w8PR?NpTkwM8{d_H`-Uyd!CdZM=@{%wFLqP)Z7ZHaZzOaRT4nm!5@c0 zP@S}}t!oo-`^>dnAHl7F#j|+x82K4gxM~Ut6=MT?sxNb_SS{?)rASR@wkpTDcIqH9 zqXXoI+2{<@GIrP1*mfw%y9qY?!2M2tm)`x2eymi(6&rq;yNIl2dk`){N)MXNpo0mc zk%eE^v(RhZ)=f4<(};o-3h3JLLvvRYrbZ%9oV2wzjnS6^!C9lVJ<~6pQzd- zMP&}e*72DnycrtYm$gNwh#jj{T$x-SVtEdtpe2otfg^>x`_$GAv=7RC#5mO3{~fLF?yFJ^!V;4(xw4X?`x8gCT`xElpV125= zWOL>uo6)6uKK$hh7ps4UvTVd45DzpBxAw=)9;pFU;nZ{cHRp%KB!Eyu% zRSW?1;dJrSOFU$f>0nLAM*Y8^Eb!eKv_q)!F zu3^T2v0}d28Bx^TYpXP=T@Lmnz(_7gF*&f|U2+1af=S7(Tw-lAD_#;Y5d>#eC`nQ6 zF?!qEExWwQO-m&GRMq(ara-%R{X+-<|CocNcYS6%w-HJgcg`glopo_Bd)na0GG(x8 zRUY=();|uiGt>NAw9v$u8KlfJ8y(WS{TM8{Ld%|klSeS5t+ERwwj^`vg*=@-6ra+Z zAER@V1??JZewmH2h8+6t##z&;z?lVmt_?xSVIs7NNLR^gHTelb z-2)j$5S9gCA7;;O{}Bt~G>3GZuARJedWL;@Je6lDGm9`t06nux^GRd%@70o{LJNT| zy7gWUWbQ}<(^-}hROSBjgk>B_V`xm#-Ii2rX+kK&`aYLdiT9QW-j$`?C>tlJ(%zku zd{X}BtrYo)&32P@h9+$q?QPZN`$xSUf8WkS4aH1G3l{{tdU0Jqne1B&{oj6Tpfm95 zROYN=;)4B6)Uy*7eD2s^W0l&Cf{R30A3{(iF^`n6=;`WjLtIs^u^JiKLAxiq`Ms7s zF+3VPEQ-KJln7_C2H^^>T$0I4bX5w1F{A1LW|Lo6(gQxC4n91egn1Tb7#tJVaR+w0GW}wf8}F*6o9=|XE(D3)!&pnjCxgw*#vd>K z#i?otSa#voR&w^*taI*Xrq48Xn`d~N;jgD!%xF0q-Zjzwt4uj$Qa-326pS0Q1ps@Q zA-V>b=2&KP@RXEOixr0fyhIXKt^535TXCyKSDRQkb@ z3%0_@;(9p?8>ht0g4kRj^I}r`(gZ4|&6EWFhHUsVm)}$X0006BPyhe~&H5OF_@39YzY{9fSba`Eqk##30OKlrfowDfp(w)+D*e2GKL(j zQiu8T=`ZaRHn~aaaKUyxPt`!xXqx{KToxk-D-VE)bxvg$q$viv!q;m$N-$DA8L`zs zPXKhYK``%CXre9@+MXW`VdHa>I_x@fH({Lhv8`0$BAz9idTY6$eM5`J2W*P9I_|xd z_``Doa%z#Y>NC9g)ul?CsO+PlxZcP*Gpx0_#|sP$-lE5n&aJ~FOoqFBjs4kx$T#%( zx}UmZx@19s8Rt*77fLWgq>N++<;fiqeRWr`|Gd2EH9fzhIyy+H;*c;*(ttj$fuYT& zp$+cbc}Oc=WVnP_Pz>o^b(3tj;L{XUM}tK$MwGAm!1_6oXBh*FV(r-!Z|9# zuvTR?(Z?}+hdp(7n&-(j&mPrL1r6235`Qu?Ik{fSM+r$x$_& ztkk`DPUXbhu7G16jC{TAnNR|%$FCSFMNa3NPBk)FSqrM$u5k-QC3_qTG9Tp6#dd=B z(802-BB>lo5>3C%)VE1AyR8AbI;%CR4(x;;vN)$F{r~ znh^>`InZe75wKbHvNaw_MvH#b1A|DabI7wdO&Mkg)IPwmsnVWDly)-ZJ{E@kEm7g z=@kBGBTwJx6B?Jj_R$%BPO&VwlIc|eNS0a~7v?#hg}$8JKu1nJq?z#Z>&u4*cs;`< z*i&QR$j@E_*A95j=)&Lme|ua&ZiY9`)~`rmYY8g2!I?F!LMpNC7`AZqnwzkUA3Zv& zk%LXnbze42-)Fmd29plsr4x%W@aU(J471Bw>vR0l2< zBD0~7i$Sl#HebWKqZqLNLUUCL2LU3WH(zi70006BFaQ7;Zb6z9L|_ZI0Wa4rCL^Q- zJdIppz{i4>2=bE7*YX&WwsuGygZ!@R6pXBkG5^gYzEIm9Zcz38F9Ry1jnT=dYIC(i z@93%i{gF@bYF0^lmiR3KUhN$twkUAGY8k}qxYhHFYCMr64Q*Fs-|TPjhlnhr$sB{} zelBRX+YWRNpW&v@DwTdh*FfeNnU6MYT1E-JyHE&?CPKjMH7nnD@(HMAerTAVTgo6= zjMC`O1>3;hF&QGnKcI3$0UTjIANI5HyHOph<8y+S8_o6LMRqPtH!^EJlPjOv zjOH1MV;V9Ka{B%_}W;NP;o5^ES7>vB4DZFPeEnoa+6 z!*xDV1qy5#Fx9J&*~NDI9EgNUaqUzDxbrrr7wlLhL?O{|zF|FX=(@UOYt+$$?;4eM zNiGC$%PkT0zShLa3p6{J->Nazr-8-qwi#pv@~q0~45b()Os&P#x)|otkfwxC3he0! z{(=fEKEs5&ivi2IyAAL5C^J9>j`rLWN6)o=C+k6{HEJ)-5wJO+@2zuZiTNFeA3bdlwE85)9rMpD8h|}qc`X?h(a*;Ib zB4=`@?q^M{5-zaF!yt~?_Drj2?+Z3aRH{SfE2)3IS?iL|9`H6$t+OUk%>@EJeA&U4 znEx&2Q&xoEfZ-T{t~?Ax{*^K>d^qvb^1Zf%P1c+o)HFP%cyx`j1GeXRp(8eo~pPwBTPS5P537Qfhfcz|KDIe>DK>&fZ zlE6e`8`Ec9uD~q$D)aH|8J^vKtxvhxq7If6-;c8*nYGzD+1%ijc}dtt$uviX1-J?D zu?0@2!vT+vDkiRlZ&nYKj#K?d&~fu`tikrLEQqO=68j{Lvj60=-1FizV430JLNN!j zJRRf8q7+jGf@yy1m&xJD2w>|G0;$6YnMm7LVOw0v1vMUlJQX~15Qdm8ZT~kI1~7&7 z47DH`AkegjaGPGI`%fUf_r^{p00tB4|)4x&XqL8G63uTRkA|M*7?xl@DyjZJqWGN=i z=_u$RdTEKJ$40%!VFJuK?6yIQ%GDi?N1^_Vtliw2je;V8@=DBrgyV@?IC(C1ChZFr ziCEKJoA;^K;q>Ar_ClQ;h0yArO^OjS!4A_l8R9)M|6_(0A(|CsrIjouQtl=fjdL~wn+8E>;sM&f0UzArIlS^pK?sKcPe(XrKO|Dka*qCEwCjuaNN zc+b#ci*5Q8n#p+X(<8uBQ-JpTuh_NTW?hyNa!1)PawxLnYE#tjbh8=y0hDz9r<;A1 zwc-lqtxiQo7viw!Sga=yc{4V`AAKsQloHbt<}BdYcs*^{3$dJoKY80zu8Enk@Q>+;7XYUq&yPS4%$r+_2c8t4FcN8iHjpBV^&#@ocY8LSm#D1`2f9J5JSx1KP zxv|-f6D`mD_l6*l&)2kdc$1n${TY`&VA-AGf@VeNBQ*P#dU*WsQzX%goNE7XV`1Lu zrN<#oRDKl=kU08{8ePV%V z_+1WaG_$bWV~EgNMG4zTU@uU+r%)Gpyeu9fA{_xThm7*KkpBM^wUpC#7!U!+SP?Hc zA)q|2aKLoXXnkxE6+H(agvAiCqZ=!fiH_GvmQEhh01u4LXf~A$G2U^efgF+D^4vgk z90zt*>jv9nsBojDbrYA!+U!I}xY6*?MCJ!3rSG!XDPaAGbv+;@*cO;ZGiNXuJICvkRhyMMO?j_9>?(&0a|yBOtg_7h9(7 z&0Uijn7%$_3(kE{q7b$?{d8#R`#|ZB`N;X`BlEh@rSut2-Pm^D(W&N+FZOd)q4JH48aOnu$Nqgq3zHa+DP_2Mf$?Xi` z!;qRWtFtp^vJW5hB8nXpM9;h+<$#B-5@D2R3CoF;)}DezAixhij?{b^dni(?Issoc}VwLzKnJ- zhOb7d6KIjCe0ooWuYF+J%zr`BM)*ea4435|>}T-jJ`|~cww63%iG@TmJ#O)wMZk?& zA5E+~tSz16`K?`7|0tu2It!XV2~wp7m&scq!094S@z_KuJ`9%<9`&c=1&>CsH(SZe z5CLJOR0s+#Ti~Zgg608ch}0`TGP>6*mUfmI2ix$ zw>E~MXyVUPC(bdq$}7rAnhk%#!yh=WaV^W17#>_9mnr$=VOyY0)2VpFwf|2XFjfnF z)0mr#4a{-iL#kfv{aI>_bC95u7JW#M*RbZyJmduCjzVZr2iiV

rpgUGcUG*EF_ws?wDGLyq$r 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Û!+XQ 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%0Dn!w0a&MIPw+A>%hi!TSNPk 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 z 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